连云港陪玩陪聊
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

3213 lines
851 KiB

"use weex:vue";
/******/ (function(modules) { // webpackBootstrap
/******/ // The module cache
/******/ var installedModules = {};
/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/
/******/ // Check if module is in cache
/******/ if(installedModules[moduleId]) {
/******/ return installedModules[moduleId].exports;
/******/ }
/******/ // Create a new module (and put it into the cache)
/******/ var module = installedModules[moduleId] = {
/******/ i: moduleId,
/******/ l: false,
/******/ exports: {}
/******/ };
/******/
/******/ // Execute the module function
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/
/******/ // Flag the module as loaded
/******/ module.l = true;
/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/
/******/
/******/ // expose the modules object (__webpack_modules__)
/******/ __webpack_require__.m = modules;
/******/
/******/ // expose the module cache
/******/ __webpack_require__.c = installedModules;
/******/
/******/ // define getter function for harmony exports
/******/ __webpack_require__.d = function(exports, name, getter) {
/******/ if(!__webpack_require__.o(exports, name)) {
/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
/******/ }
/******/ };
/******/
/******/ // define __esModule on exports
/******/ __webpack_require__.r = function(exports) {
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
/******/ }
/******/ Object.defineProperty(exports, '__esModule', { value: true });
/******/ };
/******/
/******/ // create a fake namespace object
/******/ // mode & 1: value is a module id, require it
/******/ // mode & 2: merge all properties of value into the ns
/******/ // mode & 4: return value when already ns object
/******/ // mode & 8|1: behave like require
/******/ __webpack_require__.t = function(value, mode) {
/******/ if(mode & 1) value = __webpack_require__(value);
/******/ if(mode & 8) return value;
/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
/******/ var ns = Object.create(null);
/******/ __webpack_require__.r(ns);
/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
/******/ return ns;
/******/ };
/******/
/******/ // getDefaultExport function for compatibility with non-harmony modules
/******/ __webpack_require__.n = function(module) {
/******/ var getter = module && module.__esModule ?
/******/ function getDefault() { return module['default']; } :
/******/ function getModuleExports() { return module; };
/******/ __webpack_require__.d(getter, 'a', getter);
/******/ return getter;
/******/ };
/******/
/******/ // Object.prototype.hasOwnProperty.call
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
/******/
/******/ // __webpack_public_path__
/******/ __webpack_require__.p = "/";
/******/
/******/
/******/ // Load entry module and return exports
/******/ return __webpack_require__(__webpack_require__.s = 26);
/******/ })
/************************************************************************/
/******/ ([
/* 0 */,
/* 1 */
/*!*****************************************************************************!*\
!*** E:/project/sxq/2024-10-16 chunwan/chunwan/main.js?{"type":"appStyle"} ***!
\*****************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
eval("Vue.prototype.__$appStyle__ = {}\nVue.prototype.__merge_style && Vue.prototype.__merge_style(__webpack_require__(/*! ./App.vue?vue&type=style&index=0&lang=css */ 2).default,Vue.prototype.__$appStyle__)\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0EsMkRBQTJELG1CQUFPLENBQUMsa0RBQTJDIiwiZmlsZSI6IjEuanMiLCJzb3VyY2VzQ29udGVudCI6WyJWdWUucHJvdG90eXBlLl9fJGFwcFN0eWxlX18gPSB7fVxuVnVlLnByb3RvdHlwZS5fX21lcmdlX3N0eWxlICYmIFZ1ZS5wcm90b3R5cGUuX19tZXJnZV9zdHlsZShyZXF1aXJlKFwiLi9BcHAudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmbGFuZz1jc3NcIikuZGVmYXVsdCxWdWUucHJvdG90eXBlLl9fJGFwcFN0eWxlX18pXG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///1\n");
/***/ }),
/* 2 */
/*!*****************************************************************************************!*\
!*** E:/project/sxq/2024-10-16 chunwan/chunwan/App.vue?vue&type=style&index=0&lang=css ***!
\*****************************************************************************************/
/*! no static exports found */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_hbuilderx_packages_webpack_uni_nvue_loader_lib_style_js_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_10_oneOf_0_1_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_10_oneOf_0_2_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_10_oneOf_0_3_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_App_vue_vue_type_style_index_0_lang_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!./node_modules/@dcloudio/vue-cli-plugin-hbuilderx/packages/webpack-uni-nvue-loader/lib/style.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--10-oneOf-0-1!./node_modules/postcss-loader/src??ref--10-oneOf-0-2!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--10-oneOf-0-3!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./App.vue?vue&type=style&index=0&lang=css */ 3);
/* harmony import */ var _C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_hbuilderx_packages_webpack_uni_nvue_loader_lib_style_js_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_10_oneOf_0_1_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_10_oneOf_0_2_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_10_oneOf_0_3_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_App_vue_vue_type_style_index_0_lang_css__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_hbuilderx_packages_webpack_uni_nvue_loader_lib_style_js_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_10_oneOf_0_1_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_10_oneOf_0_2_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_10_oneOf_0_3_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_App_vue_vue_type_style_index_0_lang_css__WEBPACK_IMPORTED_MODULE_0__);
/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_hbuilderx_packages_webpack_uni_nvue_loader_lib_style_js_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_10_oneOf_0_1_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_10_oneOf_0_2_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_10_oneOf_0_3_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_App_vue_vue_type_style_index_0_lang_css__WEBPACK_IMPORTED_MODULE_0__) if(["default"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_hbuilderx_packages_webpack_uni_nvue_loader_lib_style_js_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_10_oneOf_0_1_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_10_oneOf_0_2_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_10_oneOf_0_3_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_App_vue_vue_type_style_index_0_lang_css__WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
/* harmony default export */ __webpack_exports__["default"] = (_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_hbuilderx_packages_webpack_uni_nvue_loader_lib_style_js_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_10_oneOf_0_1_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_10_oneOf_0_2_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_10_oneOf_0_3_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_App_vue_vue_type_style_index_0_lang_css__WEBPACK_IMPORTED_MODULE_0___default.a);
/***/ }),
/* 3 */
/*!******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/@dcloudio/vue-cli-plugin-hbuilderx/packages/webpack-uni-nvue-loader/lib/style.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--10-oneOf-0-1!./node_modules/postcss-loader/src??ref--10-oneOf-0-2!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--10-oneOf-0-3!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!E:/project/sxq/2024-10-16 chunwan/chunwan/App.vue?vue&type=style&index=0&lang=css ***!
\******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
module.exports = {
".permissions_box": {
"": {
"paddingTop": [
"50rpx",
0,
0,
0
],
"paddingRight": [
"30rpx",
0,
0,
0
],
"paddingBottom": [
"50rpx",
0,
0,
0
],
"paddingLeft": [
"30rpx",
0,
0,
0
],
"fontSize": [
"30rpx",
0,
0,
0
],
"lineHeight": [
"50rpx",
0,
0,
0
],
"backgroundColor": [
"#ffffff",
0,
0,
0
]
}
},
"@VERSION": 2
}
/***/ }),
/* 4 */
/*!*******************************************************************!*\
!*** ./node_modules/@dcloudio/uni-cli-shared/lib/uni-polyfill.js ***!
\*******************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
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;
}
/***/ }),
/* 5 */,
/* 6 */,
/* 7 */,
/* 8 */,
/* 9 */,
/* 10 */
/*!*********************************************************************!*\
!*** ./node_modules/@dcloudio/vue-cli-plugin-uni/lib/format-log.js ***!
\*********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = formatLog;
exports.log = log;
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);
}
/***/ }),
/* 11 */
/*!**********************************************************************!*\
!*** ./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;
/***/ }),
/* 12 */
/*!**********************************************************!*\
!*** ./node_modules/@babel/runtime/regenerator/index.js ***!
\**********************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ 13);
// TODO(Babel 8): Remove this file.
var runtime = __webpack_require__(/*! ../helpers/regeneratorRuntime */ 14)();
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);
}
}
/***/ }),
/* 13 */
/*!*******************************************************!*\
!*** ./node_modules/@babel/runtime/helpers/typeof.js ***!
\*******************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
function _typeof(o) {
"@babel/helpers - typeof";
return (module.exports = _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) {
return typeof o;
} : function (o) {
return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
}, module.exports.__esModule = true, module.exports["default"] = module.exports), _typeof(o);
}
module.exports = _typeof, module.exports.__esModule = true, module.exports["default"] = module.exports;
/***/ }),
/* 14 */
/*!*******************************************************************!*\
!*** ./node_modules/@babel/runtime/helpers/regeneratorRuntime.js ***!
\*******************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var _typeof = __webpack_require__(/*! ./typeof.js */ 13)["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 e;
}, module.exports.__esModule = true, module.exports["default"] = module.exports;
var t,
e = {},
r = Object.prototype,
n = r.hasOwnProperty,
o = Object.defineProperty || function (t, e, r) {
t[e] = r.value;
},
i = "function" == typeof Symbol ? Symbol : {},
a = i.iterator || "@@iterator",
c = i.asyncIterator || "@@asyncIterator",
u = i.toStringTag || "@@toStringTag";
function define(t, e, r) {
return Object.defineProperty(t, e, {
value: r,
enumerable: !0,
configurable: !0,
writable: !0
}), t[e];
}
try {
define({}, "");
} catch (t) {
define = function define(t, e, r) {
return t[e] = r;
};
}
function wrap(t, e, r, n) {
var i = e && e.prototype instanceof Generator ? e : Generator,
a = Object.create(i.prototype),
c = new Context(n || []);
return o(a, "_invoke", {
value: makeInvokeMethod(t, r, c)
}), a;
}
function tryCatch(t, e, r) {
try {
return {
type: "normal",
arg: t.call(e, r)
};
} catch (t) {
return {
type: "throw",
arg: t
};
}
}
e.wrap = wrap;
var h = "suspendedStart",
l = "suspendedYield",
f = "executing",
s = "completed",
y = {};
function Generator() {}
function GeneratorFunction() {}
function GeneratorFunctionPrototype() {}
var p = {};
define(p, a, function () {
return this;
});
var d = Object.getPrototypeOf,
v = d && d(d(values([])));
v && v !== r && n.call(v, a) && (p = v);
var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p);
function defineIteratorMethods(t) {
["next", "throw", "return"].forEach(function (e) {
define(t, e, function (t) {
return this._invoke(e, t);
});
});
}
function AsyncIterator(t, e) {
function invoke(r, o, i, a) {
var c = tryCatch(t[r], t, o);
if ("throw" !== c.type) {
var u = c.arg,
h = u.value;
return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) {
invoke("next", t, i, a);
}, function (t) {
invoke("throw", t, i, a);
}) : e.resolve(h).then(function (t) {
u.value = t, i(u);
}, function (t) {
return invoke("throw", t, i, a);
});
}
a(c.arg);
}
var r;
o(this, "_invoke", {
value: function value(t, n) {
function callInvokeWithMethodAndArg() {
return new e(function (e, r) {
invoke(t, n, e, r);
});
}
return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();
}
});
}
function makeInvokeMethod(e, r, n) {
var o = h;
return function (i, a) {
if (o === f) throw Error("Generator is already running");
if (o === s) {
if ("throw" === i) throw a;
return {
value: t,
done: !0
};
}
for (n.method = i, n.arg = a;;) {
var c = n.delegate;
if (c) {
var u = maybeInvokeDelegate(c, n);
if (u) {
if (u === y) continue;
return u;
}
}
if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) {
if (o === h) throw o = s, n.arg;
n.dispatchException(n.arg);
} else "return" === n.method && n.abrupt("return", n.arg);
o = f;
var p = tryCatch(e, r, n);
if ("normal" === p.type) {
if (o = n.done ? s : l, p.arg === y) continue;
return {
value: p.arg,
done: n.done
};
}
"throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg);
}
};
}
function maybeInvokeDelegate(e, r) {
var n = r.method,
o = e.iterator[n];
if (o === t) return r.delegate = null, "throw" === n && e.iterator["return"] && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y;
var i = tryCatch(o, e.iterator, r.arg);
if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y;
var a = i.arg;
return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y);
}
function pushTryEntry(t) {
var e = {
tryLoc: t[0]
};
1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e);
}
function resetTryEntry(t) {
var e = t.completion || {};
e.type = "normal", delete e.arg, t.completion = e;
}
function Context(t) {
this.tryEntries = [{
tryLoc: "root"
}], t.forEach(pushTryEntry, this), this.reset(!0);
}
function values(e) {
if (e || "" === e) {
var r = e[a];
if (r) return r.call(e);
if ("function" == typeof e.next) return e;
if (!isNaN(e.length)) {
var o = -1,
i = function next() {
for (; ++o < e.length;) {
if (n.call(e, o)) return next.value = e[o], next.done = !1, next;
}
return next.value = t, next.done = !0, next;
};
return i.next = i;
}
}
throw new TypeError(_typeof(e) + " is not iterable");
}
return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", {
value: GeneratorFunctionPrototype,
configurable: !0
}), o(GeneratorFunctionPrototype, "constructor", {
value: GeneratorFunction,
configurable: !0
}), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) {
var e = "function" == typeof t && t.constructor;
return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name));
}, e.mark = function (t) {
return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t;
}, e.awrap = function (t) {
return {
__await: t
};
}, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () {
return this;
}), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) {
void 0 === i && (i = Promise);
var a = new AsyncIterator(wrap(t, r, n, o), i);
return e.isGeneratorFunction(r) ? a : a.next().then(function (t) {
return t.done ? t.value : a.next();
});
}, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () {
return this;
}), define(g, "toString", function () {
return "[object Generator]";
}), e.keys = function (t) {
var e = Object(t),
r = [];
for (var n in e) {
r.push(n);
}
return r.reverse(), function next() {
for (; r.length;) {
var t = r.pop();
if (t in e) return next.value = t, next.done = !1, next;
}
return next.done = !0, next;
};
}, e.values = values, Context.prototype = {
constructor: Context,
reset: function reset(e) {
if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) {
"t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t);
}
},
stop: function stop() {
this.done = !0;
var t = this.tryEntries[0].completion;
if ("throw" === t.type) throw t.arg;
return this.rval;
},
dispatchException: function dispatchException(e) {
if (this.done) throw e;
var r = this;
function handle(n, o) {
return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o;
}
for (var o = this.tryEntries.length - 1; o >= 0; --o) {
var i = this.tryEntries[o],
a = i.completion;
if ("root" === i.tryLoc) return handle("end");
if (i.tryLoc <= this.prev) {
var c = n.call(i, "catchLoc"),
u = n.call(i, "finallyLoc");
if (c && u) {
if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);
if (this.prev < i.finallyLoc) return handle(i.finallyLoc);
} else if (c) {
if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);
} else {
if (!u) throw Error("try statement without catch or finally");
if (this.prev < i.finallyLoc) return handle(i.finallyLoc);
}
}
}
},
abrupt: function abrupt(t, e) {
for (var r = this.tryEntries.length - 1; r >= 0; --r) {
var o = this.tryEntries[r];
if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) {
var i = o;
break;
}
}
i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null);
var a = i ? i.completion : {};
return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a);
},
complete: function complete(t, e) {
if ("throw" === t.type) throw t.arg;
return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y;
},
finish: function finish(t) {
for (var e = this.tryEntries.length - 1; e >= 0; --e) {
var r = this.tryEntries[e];
if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y;
}
},
"catch": function _catch(t) {
for (var e = this.tryEntries.length - 1; e >= 0; --e) {
var r = this.tryEntries[e];
if (r.tryLoc === t) {
var n = r.completion;
if ("throw" === n.type) {
var o = n.arg;
resetTryEntry(r);
}
return o;
}
}
throw Error("illegal catch attempt");
},
delegateYield: function delegateYield(e, r, n) {
return this.delegate = {
iterator: values(e),
resultName: r,
nextLoc: n
}, "next" === this.method && (this.arg = t), y;
}
}, e;
}
module.exports = _regeneratorRuntime, module.exports.__esModule = true, module.exports["default"] = module.exports;
/***/ }),
/* 15 */
/*!*****************************************************************!*\
!*** ./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;
/***/ }),
/* 16 */,
/* 17 */
/*!**************************************************************!*\
!*** E:/project/sxq/2024-10-16 chunwan/chunwan/api/index.js ***!
\**************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 11);\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _regenerator = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/regenerator */ 12));\nvar _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ 18));\nvar _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ 15));\nvar _request = __webpack_require__(/*! ./request */ 21);\nvar _api;\nvar api = (_api = {\n //视频语音匹配\n costDescription: function costDescription(data) {\n return (0, _request.request)({\n url: 'api/costDescription',\n method: 'get',\n data: data\n });\n },\n //视频语音匹配\n userSpeedDating: function userSpeedDating(data) {\n return (0, _request.request)({\n url: 'api/user/userSpeedDating',\n method: 'post',\n data: data\n });\n },\n //同城速配\n sameCitySpeedDating: function sameCitySpeedDating(data) {\n return (0, _request.request)({\n url: 'api/user/sameCitySpeedDating',\n method: 'post',\n data: data\n });\n },\n //送礼物\n giftGiving: function giftGiving(data) {\n return (0, _request.request)({\n url: 'api/user/giftGiving',\n method: 'post',\n data: data\n });\n }\n}, (0, _defineProperty2.default)(_api, \"giftGiving\", function giftGiving(data) {\n return (0, _request.request)({\n url: 'api/user/giftGiving',\n method: 'post',\n data: data\n });\n}), (0, _defineProperty2.default)(_api, \"giftList\", function giftList(data) {\n return (0, _request.request)({\n url: 'api/giftList',\n method: 'post',\n data: data\n });\n}), (0, _defineProperty2.default)(_api, \"createPoster\", function createPoster(data) {\n return (0, _request.request)({\n url: 'api/user/createPoster',\n method: 'post',\n data: data\n });\n}), (0, _defineProperty2.default)(_api, \"wxAppOneKeyLogin\", function wxAppOneKeyLogin(data) {\n return (0, _request.request)({\n url: 'api/wxpublic/wxAppOneKeyLogin',\n method: 'post',\n data: data\n });\n}), (0, _defineProperty2.default)(_api, \"findChatList\", function findChatList(data) {\n return (0, _request.request)({\n url: 'api/user/findChatList',\n method: 'post',\n data: data\n });\n}), (0, _defineProperty2.default)(_api, \"cityList\", function cityList(data) {\n return (0, _request.request)({\n url: 'api/cityList',\n method: 'get',\n data: data\n });\n}), (0, _defineProperty2.default)(_api, \"cleanAllMsg\", function cleanAllMsg(data) {\n return (0, _request.request)({\n url: 'api/user/cleanAllMsg',\n method: 'post',\n data: data\n });\n}), (0, _defineProperty2.default)(_api, \"cleanOneMsg\", function cleanOneMsg(data) {\n return (0, _request.request)({\n url: 'api/user/cleanOneMsg',\n method: 'post',\n data: data\n });\n}), (0, _defineProperty2.default)(_api, \"dashaCount\", function dashaCount(data) {\n return (0, _request.request)({\n url: 'api/user/dashaCount',\n method: 'post',\n data: data\n });\n}), (0, _defineProperty2.default)(_api, \"refundOrder\", function refundOrder(data) {\n return (0, _request.request)({\n url: 'api/user/refundOrder',\n method: 'post',\n data: data\n });\n}), (0, _defineProperty2.default)(_api, \"acceptOrder\", function acceptOrder(data) {\n return (0, _request.request)({\n url: 'api/user/acceptOrder',\n method: 'post',\n data: data\n });\n}), (0, _defineProperty2.default)(_api, \"serviceOrder\", function serviceOrder(data) {\n return (0, _request.request)({\n url: 'api/user/serviceOrder',\n method: 'post',\n data: data\n });\n}), (0, _defineProperty2.default)(_api, \"serviceCompleteOrder\", function serviceCompleteOrder(data) {\n return (0, _request.request)({\n url: 'api/user/serviceCompleteOrder',\n method: 'post',\n data: data\n });\n}), (0, _defineProperty2.default)(_api, \"deleteOrder\", function deleteOrder(data) {\n return (0, _request.request)({\n url: 'api/user/deleteOrder',\n method: 'post',\n data: data\n });\n}), (0, _defineProperty2.default)(_api, \"cancelOrder\", function cancelOrder(data) {\n return (0, _request.request)({\n url: 'api/user/cancelOrder',\n method: 'post',\n data: data\n });\n}), (0, _defineProperty2.default)(_api, \"orderDetail\", function orderDetail(data) {\n return (0, _request.request)({\n url: 'api/user/orderDetail',\n method: 'post',\n data: data\n });\n}), (0, _defineProperty2.default)(_api, \"orderList\", function orderList(data) {\n return (0, _request.request)({\n url: 'api/user/orderList',\n method: 'post',\n data: data\n });\n}), (0, _defineProperty2.default)(_api, \"trackUpload\", function trackUpload(data) {\n return (0, _request.request)({\n url: 'api/user/trackUpload',\n method: 'post',\n data: data\n });\n}), (0, _defineProperty2.default)(_api, \"findFrindList\", function findFrindList(data) {\n return (0, _request.request)({\n url: 'api/user/findFrindList',\n method: 'post',\n data: data\n });\n}), (0, _defineProperty2.default)(_api, \"systemNoticeList\", function systemNoticeList(data) {\n return (0, _request.request)({\n url: 'api/systemNoticeList',\n method: 'post',\n data: data\n });\n}), (0, _defineProperty2.default)(_api, \"urbanCooperation\", function urbanCooperation(data) {\n return (0, _request.request)({\n url: 'api/user/urbanCooperation',\n method: 'post',\n data: data\n });\n}), (0, _defineProperty2.default)(_api, \"feedback\", function feedback(data) {\n return (0, _request.request)({\n url: 'api/user/feedback',\n method: 'post',\n data: data\n });\n}), (0, _defineProperty2.default)(_api, \"feedbackList\", function feedbackList(data) {\n return (0, _request.request)({\n url: 'api/user/feedbackList',\n method: 'post',\n data: data\n });\n}), (0, _defineProperty2.default)(_api, \"helpCenter\", function helpCenter(data) {\n return (0, _request.request)({\n url: 'api/helpCenter',\n method: 'get',\n data: data\n });\n}), (0, _defineProperty2.default)(_api, \"closeTeenageMode\", function closeTeenageMode(data) {\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {\n return _regenerator.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n return _context.abrupt(\"return\", (0, _request.request)({\n url: 'api/user/closeTeenageMode',\n method: 'post',\n data: data\n }));\n case 1:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n }))();\n}), (0, _defineProperty2.default)(_api, \"openTeenageMode\", function openTeenageMode(data) {\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 return _context2.abrupt(\"return\", (0, _request.request)({\n url: 'api/user/openTeenageMode',\n method: 'post',\n data: data\n }));\n case 1:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2);\n }))();\n}), (0, _defineProperty2.default)(_api, \"cancelAccount\", function cancelAccount(data) {\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3() {\n return _regenerator.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n return _context3.abrupt(\"return\", (0, _request.request)({\n url: 'api/user/cancelAccount',\n method: 'post',\n data: data\n }));\n case 1:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3);\n }))();\n}), (0, _defineProperty2.default)(_api, \"privacyConfig\", function privacyConfig(data) {\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4() {\n return _regenerator.default.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n return _context4.abrupt(\"return\", (0, _request.request)({\n url: 'api/user/privacyConfig',\n method: 'post',\n data: data\n }));\n case 1:\n case \"end\":\n return _context4.stop();\n }\n }\n }, _callee4);\n }))();\n}), (0, _defineProperty2.default)(_api, \"addOrRemoveBlacklist\", function addOrRemoveBlacklist(data) {\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5() {\n return _regenerator.default.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n return _context5.abrupt(\"return\", (0, _request.request)({\n url: 'api/user/addOrRemoveBlacklist',\n method: 'post',\n data: data\n }));\n case 1:\n case \"end\":\n return _context5.stop();\n }\n }\n }, _callee5);\n }))();\n}), (0, _defineProperty2.default)(_api, \"myTeam\", function myTeam(data) {\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee6() {\n return _regenerator.default.wrap(function _callee6$(_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n return _context6.abrupt(\"return\", (0, _request.request)({\n url: 'api/user/myTeam',\n method: 'post',\n data: data\n }));\n case 1:\n case \"end\":\n return _context6.stop();\n }\n }\n }, _callee6);\n }))();\n}), (0, _defineProperty2.default)(_api, \"taskList\", function taskList(data) {\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee7() {\n return _regenerator.default.wrap(function _callee7$(_context7) {\n while (1) {\n switch (_context7.prev = _context7.next) {\n case 0:\n return _context7.abrupt(\"return\", (0, _request.request)({\n url: 'api/user/taskList',\n method: 'post',\n data: data\n }));\n case 1:\n case \"end\":\n return _context7.stop();\n }\n }\n }, _callee7);\n }))();\n}), (0, _defineProperty2.default)(_api, \"editSitter\", function editSitter(data) {\n return (0, _request.request)({\n url: 'api/user/editSitter',\n method: 'post',\n data: data\n });\n}), (0, _defineProperty2.default)(_api, \"sitterRegister\", function sitterRegister(data) {\n return (0, _request.request)({\n url: 'api/user/sitterRegister',\n method: 'post',\n data: data\n });\n}), (0, _defineProperty2.default)(_api, \"sellerUserList\", function sellerUserList(data) {\n return (0, _request.request)({\n url: 'api/user/sellerUserList',\n method: 'post',\n data: data\n });\n}), (0, _defineProperty2.default)(_api, \"userRecordList\", function userRecordList(data) {\n return (0, _request.request)({\n url: 'api/user/userRecordList',\n method: 'post',\n data: data\n });\n}), (0, _defineProperty2.default)(_api, \"mealsetRechargeCreateOrder\", function mealsetRechargeCreateOrder(data) {\n return (0, _request.request)({\n url: 'api/user/mealsetRechargeCreateOrder',\n method: 'post',\n data: data\n });\n}), (0, _defineProperty2.default)(_api, \"mealsetList\", function mealsetList(data) {\n return (0, _request.request)({\n url: 'api/mealsetList',\n method: 'post',\n data: data\n });\n}), (0, _defineProperty2.default)(_api, \"withdrawal\", function withdrawal(data) {\n return (0, _request.request)({\n url: 'api/user/withdrawal',\n method: 'post',\n data: data\n });\n}), (0, _defineProperty2.default)(_api, \"userWallet\", function userWallet(data) {\n return (0, _request.request)({\n url: 'api/user/userWallet',\n method: 'post',\n data: data\n });\n}), (0, _defineProperty2.default)(_api, \"sitterList\", function sitterList(data) {\n return (0, _request.request)({\n url: 'api/sitterList',\n method: 'post',\n data: data\n });\n}), (0, _defineProperty2.default)(_api, \"friendList\", function friendList(data) {\n return (0, _request.request)({\n url: 'api/user/friendList',\n method: 'post',\n data: data\n });\n}), (0, _defineProperty2.default)(_api, \"findZegoToken\", function findZegoToken(data) {\n return (0, _request.request)({\n url: 'api/user/findZegoToken',\n method: 'post',\n data: data\n });\n}), (0, _defineProperty2.default)(_api, \"preCreateOrder\", function preCreateOrder(data) {\n return (0, _request.request)({\n url: 'api/user/preCreateOrder',\n method: 'post',\n data: data\n });\n}), (0, _defineProperty2.default)(_api, \"membershipBenefits\", function membershipBenefits(data) {\n return (0, _request.request)({\n url: 'api/user/membershipBenefits',\n method: 'post',\n data: data\n });\n}), (0, _defineProperty2.default)(_api, \"careOrCancel\", function careOrCancel(data) {\n return (0, _request.request)({\n url: 'api/user/careOrCancel',\n method: 'post',\n data: data\n });\n}), (0, _defineProperty2.default)(_api, \"findOtherUserInfo\", function findOtherUserInfo(data) {\n return (0, _request.request)({\n url: 'api/user/findOtherUserInfo',\n method: 'post',\n data: data\n });\n}), (0, _defineProperty2.default)(_api, \"nearbyCustomerList\", function nearbyCustomerList(data) {\n return (0, _request.request)({\n url: 'api/user/nearbyCustomerList',\n method: 'post',\n data: data\n });\n}), (0, _defineProperty2.default)(_api, \"customerRecommendList\", function customerRecommendList(data) {\n return (0, _request.request)({\n url: 'api/user/customerRecommendList',\n method: 'post',\n data: data\n });\n}), (0, _defineProperty2.default)(_api, \"socialConsumption\", function socialConsumption(data) {\n return (0, _request.request)({\n url: 'api/user/socialConsumption',\n method: 'post',\n data: data\n });\n}), (0, _defineProperty2.default)(_api, \"chat\", function chat(data) {\n return (0, _request.request)({\n url: 'api/user/chat',\n method: 'post',\n data: data\n });\n}), (0, _defineProperty2.default)(_api, \"userBalance\", function userBalance(data) {\n return (0, _request.request)({\n url: 'api/user/userBalance',\n method: 'post',\n data: data\n });\n}), (0, _defineProperty2.default)(_api, \"setAccostDefault\", function setAccostDefault(data) {\n return (0, _request.request)({\n url: 'api/user/setAccostDefault',\n method: 'post',\n data: data\n });\n}), (0, _defineProperty2.default)(_api, \"findAccost\", function findAccost(data) {\n return (0, _request.request)({\n url: 'api/user/findAccost',\n method: 'post',\n data: data\n });\n}), (0, _defineProperty2.default)(_api, \"report\", function report(data) {\n return (0, _request.request)({\n url: 'api/user/report',\n method: 'post',\n data: data\n });\n}), (0, _defineProperty2.default)(_api, \"zan\", function zan(data) {\n return (0, _request.request)({\n url: 'api/user/zan',\n method: 'post',\n data: data\n });\n}), (0, _defineProperty2.default)(_api, \"commentReply\", function commentReply(data) {\n return (0, _request.request)({\n url: 'api/user/commentReply',\n method: 'post',\n data: data\n });\n}), (0, _defineProperty2.default)(_api, \"articleDetail\", function articleDetail(data) {\n return (0, _request.request)({\n url: 'api/user/articleDetail',\n method: 'post',\n data: data\n });\n}), (0, _defineProperty2.default)(_api, \"userArticleList\", function userArticleList(data) {\n return (0, _request.request)({\n url: 'api/user/userArticleList',\n method: 'post',\n data: data\n });\n}), (0, _defineProperty2.default)(_api, \"userArticleList\", function userArticleList(data) {\n return (0, _request.request)({\n url: 'api/user/userArticleList',\n method: 'post',\n data: data\n });\n}), (0, _defineProperty2.default)(_api, \"userSellerServiceList\", function userSellerServiceList(data) {\n return (0, _request.request)({\n url: 'api/user/userSellerServiceList',\n method: 'post',\n data: data\n });\n}), (0, _defineProperty2.default)(_api, \"paymentOrder\", function paymentOrder(data) {\n return (0, _request.request)({\n url: 'api/user/paymentOrder',\n method: 'get',\n data: data\n });\n}), (0, _defineProperty2.default)(_api, \"memberCreateOrder\", function memberCreateOrder(data) {\n return (0, _request.request)({\n url: 'api/user/memberCreateOrder',\n method: 'post',\n data: data\n });\n}), (0, _defineProperty2.default)(_api, \"getConfigData\", function getConfigData(data) {\n return (0, _request.request)({\n url: 'api/getConfigData',\n method: 'get',\n data: data\n });\n}), (0, _defineProperty2.default)(_api, \"memberList\", function memberList(data) {\n return (0, _request.request)({\n url: 'api/memberList',\n method: 'get',\n data: data\n });\n}), (0, _defineProperty2.default)(_api, \"sign\", function sign(data) {\n return (0, _request.request)({\n url: 'api/user/sign',\n method: 'post',\n data: data\n });\n}), (0, _defineProperty2.default)(_api, \"articleDetailt\", function articleDetailt(data) {\n return (0, _request.request)({\n url: 'api/user/articleDetailt',\n method: 'post',\n data: data\n });\n}), (0, _defineProperty2.default)(_api, \"publishArticle\", function publishArticle(data) {\n return (0, _request.request)({\n url: 'api/user/publishArticle',\n method: 'post',\n data: data\n });\n}), (0, _defineProperty2.default)(_api, \"articleList\", function articleList(data) {\n return (0, _request.request)({\n url: 'api/user/articleList',\n method: 'post',\n data: data\n });\n}), (0, _defineProperty2.default)(_api, \"myAlbums\", function myAlbums(data) {\n return (0, _request.request)({\n url: 'api/user/myAlbums',\n method: 'post',\n data: data\n });\n}), (0, _defineProperty2.default)(_api, \"editUser\", function editUser(data) {\n return (0, _request.request)({\n url: 'api/user/editUser',\n method: 'post',\n data: data\n });\n}), (0, _defineProperty2.default)(_api, \"voiceSign\", function voiceSign(data) {\n return (0, _request.request)({\n url: 'api/user/voiceSign',\n method: 'post',\n data: data\n });\n}), (0, _defineProperty2.default)(_api, \"getDictDataByType\", function getDictDataByType(data) {\n return (0, _request.request)({\n url: 'api/getDictDataByType',\n method: 'get',\n data: data\n });\n}), (0, _defineProperty2.default)(_api, \"detectLivingFace\", function detectLivingFace(data) {\n return (0, _request.request)({\n url: 'api/user/detectLivingFace',\n method: 'post',\n data: data\n });\n}), (0, _defineProperty2.default)(_api, \"realNameAuth\", function realNameAuth(data) {\n return (0, _request.request)({\n url: 'api/user/realNameAuth',\n method: 'post',\n data: data\n });\n}), (0, _defineProperty2.default)(_api, \"phoneAuth\", function phoneAuth(data) {\n return (0, _request.request)({\n url: 'api/user/phoneAuth',\n method: 'post',\n data: data\n });\n}), (0, _defineProperty2.default)(_api, \"findUserInfo\", function findUserInfo(data) {\n return (0, _request.request)({\n url: 'api/user/findUserInfo',\n method: 'post',\n data: data\n });\n}), (0, _defineProperty2.default)(_api, \"forgetPsw\", function forgetPsw(data) {\n return (0, _request.request)({\n url: 'api/forgetPsw',\n method: 'post',\n data: data\n });\n}), (0, _defineProperty2.default)(_api, \"sendSmsCode\", function sendSmsCode(data) {\n return (0, _request.request)({\n url: 'api/sendSmsCode',\n method: 'post',\n data: data\n });\n}), (0, _defineProperty2.default)(_api, \"toLogin\", function toLogin(data) {\n return (0, _request.request)({\n url: 'api/loginByCode',\n method: 'post',\n data: data\n });\n}), (0, _defineProperty2.default)(_api, \"regByCode\", function regByCode(data) {\n return (0, _request.request)({\n url: 'api/regByCode',\n method: 'post',\n data: data\n });\n}), (0, _defineProperty2.default)(_api, \"loginForPsw\", function loginForPsw(data) {\n return (0, _request.request)({\n url: '/api/loginForPsw',\n method: 'post',\n data: data\n });\n}), (0, _defineProperty2.default)(_api, \"registerEditUser\", function registerEditUser(data) {\n return (0, _request.request)({\n url: 'api/user/registerEditUser',\n method: 'post',\n data: data\n });\n}), (0, _defineProperty2.default)(_api, \"getMemberInfo\", function getMemberInfo(data) {\n return (0, _request.request)({\n url: 'api/user/getinfo',\n method: 'post',\n data: data\n });\n}), _api);\nvar _default = api;\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vYXBpL2luZGV4LmpzIl0sIm5hbWVzIjpbImFwaSIsImNvc3REZXNjcmlwdGlvbiIsImRhdGEiLCJyZXF1ZXN0IiwidXJsIiwibWV0aG9kIiwidXNlclNwZWVkRGF0aW5nIiwic2FtZUNpdHlTcGVlZERhdGluZyIsImdpZnRHaXZpbmciXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQTtBQUFtQztBQUNuQyxJQUFNQSxHQUFHO0VBQ1I7RUFDQUMsZUFBZSwyQkFBQ0MsSUFBSSxFQUFFO0lBQ3JCLE9BQU8sSUFBQUMsZ0JBQU8sRUFBQztNQUNkQyxHQUFHLEVBQUUscUJBQXFCO01BQzFCQyxNQUFNLEVBQUUsS0FBSztNQUNiSCxJQUFJLEVBQUpBO0lBQ0QsQ0FBQyxDQUFDO0VBQ0gsQ0FBQztFQUNEO0VBQ0FJLGVBQWUsMkJBQUNKLElBQUksRUFBRTtJQUNyQixPQUFPLElBQUFDLGdCQUFPLEVBQUM7TUFDZEMsR0FBRyxFQUFFLDBCQUEwQjtNQUMvQkMsTUFBTSxFQUFFLE1BQU07TUFDZEgsSUFBSSxFQUFKQTtJQUNELENBQUMsQ0FBQztFQUNILENBQUM7RUFDRDtFQUNBSyxtQkFBbUIsK0JBQUNMLElBQUksRUFBRTtJQUN6QixPQUFPLElBQUFDLGdCQUFPLEVBQUM7TUFDZEMsR0FBRyxFQUFFLDhCQUE4QjtNQUNuQ0MsTUFBTSxFQUFFLE1BQU07TUFDZEgsSUFBSSxFQUFKQTtJQUNELENBQUMsQ0FBQztFQUNILENBQUM7RUFDRDtFQUNBTSxVQUFVLHNCQUFDTixJQUFJLEVBQUU7SUFDaEIsT0FBTyxJQUFBQyxnQkFBTyxFQUFDO01BQ2RDLEdBQUcsRUFBRSxxQkFBcUI7TUFDMUJDLE1BQU0sRUFBRSxNQUFNO01BQ2RILElBQUksRUFBSkE7SUFDRCxDQUFDLENBQUM7RUFDSDtBQUFDLHlFQUVVQSxJQUFJLEVBQUU7RUFDaEIsT0FBTyxJQUFBQyxnQkFBTyxFQUFDO0lBQ2RDLEdBQUcsRUFBRSxxQkFBcUI7SUFDMUJDLE1BQU0sRUFBRSxN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SUFDZEMsR0FBRyxFQUFFLGVBQWU7SUFDcEJDLE1BQU0sRUFBRSxNQUFNO0lBQ2RILElBQUksRUFBSkE7RUFDRCxDQUFDLENBQUM7QUFDSCxDQUFDLDJFQUVXQSxJQUFJLEVBQUU7RUFDakIsT0FBTyxJQUFBQyxnQkFBTyxFQUFDO0lBQ2RDLEdBQUcsRUFBRSxrQkFBa0I7SUFDdkJDLE1BQU0sRUFBRSxNQUFNO0lBQ2RILElBQUksRUFBSkE7RUFDRCxDQUFDLENBQUM7QUFDSCxDQUFDLHFGQUVnQkEsSUFBSSxFQUFFO0VBQ3RCLE9BQU8sSUFBQUMsZ0JBQU8sRUFBQztJQUNkQyxHQUFHLEVBQUUsMkJBQTJCO0lBQ2hDQyxNQUFNLEVBQUUsTUFBTTtJQUNkSCxJQUFJLEVBQUpBO0VBQ0QsQ0FBQyxDQUFDO0FBQ0gsQ0FBQywrRUFFYUEsSUFBSSxFQUFFO0VBQ25CLE9BQU8sSUFBQUMsZ0JBQU8sRUFBQztJQUNkQyxHQUFHLEVBQUUsa0JBQWtCO0lBQ3ZCQyxNQUFNLEVBQUUsTUFBTTtJQUNkSCxJQUFJLEVBQUpBO0VBQ0QsQ0FBQyxDQUFDO0FBQ0gsQ0FBQyxRQUNEO0FBQUEsZUFDY0YsR0FBRztBQUFBIiwiZmlsZSI6IjE3LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcmVxdWVzdCB9IGZyb20gJy4vcmVxdWVzdCdcclxuY29uc3QgYXBpID0ge1xyXG5cdC8v6KeG6aKR6K+t6Z+z5Yy56YWNXHJcblx0Y29zdERlc2NyaXB0aW9uKGRhdGEpIHtcclxuXHRcdHJldHVybiByZXF1ZXN0KHtcclxuXHRcdFx0dXJsOiAnYXBpL2Nvc3REZXNjcmlwdGlvbicsXHJcblx0XHRcdG1ldGhvZDogJ2dldCcsXHJcblx0XHRcdGRhdGFcclxuXHRcdH0pXHJcblx0fSxcclxuXHQvL+inhumikeivremfs+WMuemFjVxyXG5cdHVzZXJTcGVlZERhdGluZyhkYXRhKSB7XHJcblx0XHRyZXR1cm4gcmVxdWVzdCh7XHJcblx0XHRcdHVybDogJ2FwaS91c2VyL3VzZXJTcGVlZERhdGluZycsXHJcblx0XHRcdG1ldGhvZDogJ3Bvc3QnLFxyXG5cdFx0XHRkYXRhXHJcblx0XHR9KVxyXG5cdH0sXHJcblx0Ly/lkIzln47pgJ/phY1cclxuXHRzYW1lQ2l0eVNwZWVkRGF0aW5nKGRhdGEpIHtcclxuXHRcdHJldHVybiByZXF1ZXN0KHtcclxuXHRcdFx0dXJsOiAnYXBpL3VzZXIvc2FtZUNpdHlTcGVlZERhdGluZycsXHJcblx0XHRcdG1ldGhvZDogJ3Bvc3QnLFxyXG5cdFx0XHRkYXRhXHJcblx0XHR9KVxyXG5cdH0sXHJcblx0Ly/pgIHnpLznialcclxuXHRnaWZ0R2l2aW5nKGRhdGEpIHtcclxuXHRcdHJldHVybiByZXF1ZXN0KHtcclxuXHRcdFx0dXJsOiAnYXBpL3VzZXIvZ2lmdEdpdmluZycsXHJcblx0XHRcdG1ldGhvZDogJ3Bvc3QnLFxyXG5cdFx0XHRkYXRhXHJcblx0XHR9KVxyXG5cdH0sXHJcblx0Ly/pgIHnpLznialcclxuXHRnaWZ0R2l2aW5nKGRhdGEpIHtcclxuXHRcdHJldHVybiByZXF1ZXN0KHtcclxuXHRcdFx0dXJsOiAnYXBpL3VzZXIvZ2lmdEdpdmluZycsXHJcblx0XHRcdG1ldGhvZDogJ3Bvc3QnLFxyXG5cdFx0XHRkYXRhXHJcblx0XHR9KVxyXG5cdH0sXHJcblx0Ly/npLznianliJfooahcclxuXHRnaWZ0TGlzdChkYXRhKSB7XHJcblx0XHRyZXR1cm4gcmVxdWVzdCh7XHJcblx0XHRcdHVybDogJ2FwaS9naWZ0TGlzdCcsXHJcblx0XHRcdG1ldGhvZDogJ3Bvc3QnLFxyXG5cdFx0XHRkYXRhXHJcblx0XHR9KVxyXG5cdH0sXHJcblx0Ly/mtbfmiqVcclxuXHRjcmVhdGVQb3N0ZXIoZGF0YSkge1xyXG5cdFx0cmV0dXJuIHJlcXVlc3Qoe1xyXG5cdFx0XHR1cmw6ICdhcGkvdXNlci9jcmVhdGVQb3N0ZXInLFxyXG5cdFx0XHRtZXRob2Q6ICdwb3N0JyxcclxuXHRcdFx0ZGF0YVxyXG5cdFx0fSlcclxuXHR9LFxyXG5cdC8v5b6u5L+h55m75b2VXHJcblx0d3hBcHBPbmVLZXlMb2dpbihkYXRhKSB7XHJcblx0XHRyZXR1cm4gcmVxdWVzdCh7XHJcblx0XHRcdHVybDogJ2FwaS93eHB1YmxpYy93eEFwcE9uZUtleUxvZ2luJyxcclxuXHRcdFx0bWV0aG9kOiAncG9zdCcsXHJcblx0XHRcdGRhdGFcclxuXHRcdH0pXHJcblx0fSxcclxuXHQvL+iOt+WPluW9k+WJjeeUqOaIt+W+l+iBiuWkqeiusOW9lVxyXG5cdGZpbmRDaGF0TGlzdChkYXRhKSB7XHJcblx0XHRyZXR1cm4gcmVxdWVzdCh7XHJcblx0XHRcdHVybDogJ2FwaS91c2VyL2ZpbmRDaGF0TGlzdCcsXHJcblx0XHRcdG1ldGhvZDogJ3Bvc3QnLFxyXG5cdFx0XHRkYXRhXHJcblx0XHR9KVxyXG5cdH0sXHJcblx0Ly/ln47luILliJfooahcclxuXHRjaXR5TGlzdChkYXRhKSB7XHJcblx0XHRyZXR1cm4gcmVxdWVzdCh7XHJcblx0XHRcdHVybDogJ2FwaS9jaXR5TGlzdCcsXHJcblx0XHRcdG1ldGhvZDogJ2dldCcsXHJcblx0XHRcdGRhdGFcclxuXHRcdH0pXHJcblx0fSxcclxuXHQvL+a4heepuuaJgOacieS/oeaBr1xyXG5cdGNsZWFuQWxsTXNnKGRhdGEpIHtcclxuXHRcdHJldHVybiByZXF1ZXN0KHtcclxuXHRcdFx0dXJsOiAnYXBpL3VzZXIvY2xlYW5BbGxNc2cnLFxyXG5cdFx0XHRtZXRob2Q6ICdwb3N0JyxcclxuXHRcdFx0ZGF0YVxyXG5cdFx0fSlcclxuXHR9LFxyXG5cdC8v5Yig6Zmk5p+Q5Liq5Lq65b6X5Lya6K+dLeS9v+WFtuWcqOWIl+ihqOS4jeaYvuekulxyXG5cdGNsZWFuT25lTXNnKGRhdGEpIHtcclxuXHRcdHJldHVybiByZXF1ZXN0KHtcclxuXHRcdFx0dXJsOiAnYXBpL3VzZXIvY2xlYW5PbmVNc2cnLFxyXG5cdFx0XHRtZXRob2Q6ICdwb3N0JyxcclxuXHRcdFx0ZGF0YVxyXG5cdFx0fSlcclxuXHR9LFxyXG5cdC8v5pCt6K6q5oC75pWw6YePXHJcblx0ZGFzaGFDb3VudChkYXRhKSB7XHJcblx0XHRyZXR1cm4gcmVxdWVzdCh7XHJcblx0XHRcdHVybDogJ2FwaS91c2VyL2Rhc2hhQ291bnQnLFxyXG5cdFx0XHRtZXRob2Q6ICdwb3N0JyxcclxuXHRcdFx0ZGF0YVxyXG5cdFx0fSlcclxuXHR9LFxyXG5cdC8v55Sz6K+36K6i5Y2VXHJcblx0cmVmdW5kT3JkZXIoZGF0YSkge1xyXG5cdFx0cmV0dXJuIHJlcXVlc3Qoe1xyXG5cdFx0XHR1cmw6ICdhcGkvdXNlci9yZWZ1bmRPcmRlcicsXHJcblx0XHRcdG1ldGhvZDogJ3Bvc3QnLFxyXG5cdFx0XHRkYXRhXHJcblx0XHR9KVxyXG5cdH0sXHJcblx0Ly/mjqXljZVcclxuXHRhY2NlcHRPcmRlcihkYXRhKSB7XHJcblx0XHRyZXR1cm4gcmVxdWVzdCh7XHJcblx0XHRcdHVybDogJ2FwaS91c2VyL2FjY2VwdE9yZGVyJyxcclxuXHRcdFx0bWV0aG9kOiAncG9zdCcsXHJcblx0XHRcdGRhdGFcclxuXHRcdH0pXHJcblx0fSxcclxuXHQvL+W8gOWni+acjeWKoVxyXG5cdHNlcnZpY2VPcmRlcihkYXRhKSB7XHJcblx0XHRyZXR1cm4gcmVxdWVzdCh7XHJcblx0XHRcdHVybDogJ2FwaS91c2VyL3NlcnZpY2VPcmRlcicsXHJcblx0XHRcdG1ldGhvZDogJ3Bvc3QnLFxyXG5cdFx0XHRkYXRhXHJcblx0XHR9KVxyXG5cdH0sXHJcblx0Ly/mnI3liqHlrozmiJBcclxuXHRzZXJ2aWNlQ29tcGxldGVPcmRlcihkYXRhKSB7XHJcblx0XHRyZXR1cm4gcmVxdWVzdCh7XHJcblx0XHRcdHVybDogJ2FwaS91c2VyL3NlcnZpY2VDb21wbGV0ZU9yZGVyJyxcclxuXHRcdFx0bWV0aG9kOiAncG9zdCcsXHJcblx0XHRcdGRhdGFcclxuXHRcdH0pXHJcblx0fSxcclxuXHQvL+WIoOmZpOiuouWNlVxyXG5cdGRlbGV0ZU9yZGVyKGRhdGEpIHtcclxuXHRcdHJldHVybiByZXF1ZXN0KHtcclxuXHRcdFx0dXJsOiAnYXBpL3VzZXIvZGVsZXRlT3JkZXInLFxyXG5cdFx0XHRtZXRob2Q6ICdwb3N0JyxcclxuXHRcdFx0ZGF0YVxyXG5cdFx0fSlcclxuXHR9LFxyXG5cdC8v5Y+W5raI6K6i5Y2VXHJcblx0Y2FuY2VsT3JkZXIoZGF0YSkge1xyXG5cdFx0cmV0dXJuIHJlcXVlc3Qoe1xyXG5cdFx0XHR1cmw6ICdhcGkvdXNlci9jYW5jZWxPcmRlcicsXHJcblx0XHRcdG1ldGhvZDogJ3Bvc3QnLFxyXG5cdFx0XHRkYXRhXHJcblx0XHR9KVxyXG5cdH0sXHJcblx0Ly/orqLljZXor6bmg4VcclxuXHRvcmRlckRldGFpbChkYXRhKSB7XHJcblx0XHRyZXR1cm4gcmVxdWVzdCh7XHJcblx0XHRcdHVybDogJ2FwaS91c2VyL29yZGVyRGV0YWlsJyxcclxuXHRcdFx0bWV0aG9kOiAncG9zdCcsXHJcblx0XHRcdGRhdGFcclxuXHRcdH0pXHJcblx0fSxcclxuXHQvL+iuouWNleWIl+ihqFxyXG5cdG9yZGVyTGlzdChkYXRhKSB7XHJcblx0XHRyZXR1cm4gcmVxdWVzdCh7XHJcblx0XHRcdHVybDogJ2FwaS91c2VyL29yZGVyTGlzdCcsXHJcblx0XHRcdG1ldGhvZDogJ3Bvc3QnLFxyXG5cdFx0XHRkYXRhXHJcblx0XHR9KVxyXG5cdH0sXHJcblx0Ly/ovajov7nlrp7ml7bkuIrkvKBcclxuXHR0cmFja1VwbG9hZChkYXRhKSB7XHJcblx0XHRyZXR1cm4gcmVxdWVzdCh7XHJcblx0XHRcdHVybDogJ2FwaS91c2VyL3RyYWNrVXBsb2FkJyxcclxuXHRcdFx0bWV0aG9kOiAncG9zdCcsXHJcblx0XHRcdGRhdGFcclxuXHRcdH0pXHJcblx0fSxcclxuXHQvL+iOt+WPluW9k+WJjeeUqOaIt+W+l+iBiuWkqeWlveWPi+WIl+ihqFxyXG5cdGZpbmRGcmluZExpc3QoZGF0YSkge1xyXG5cdFx0cmV0dXJuIHJlcXVlc3Qoe1xyXG5cdFx0XHR1cmw6ICdhcGkvdXNlci9maW5kRnJpbmRMaXN0JyxcclxuXHRcdFx0bWV0aG9kOiAncG9zdCcsXHJcblx0XHRcdGRhdGFcclxuXHRcdH0pXHJcblx0fSxcclxuXHQvL+ezu+e7n+a2iOaBr+WIl+ihqFxyXG5cdHN5c3RlbU5vdGljZUxpc3QoZGF0YSkge1xyXG5cdFx0cmV0dXJuIHJlcXVlc3Qoe1xyXG5cdFx0XHR1cmw6ICdhcGkvc3lzdGVtTm90aWNlTGlzdCcsXHJcblx0XHRcdG1ldGhvZDogJ3Bvc3QnLFxyXG5cdFx0XHRkYXRhXHJcblx0XHR9KVxyXG5cdH0sXHJcblx0Ly/mlrDlop7ln47luILlkIjkvZxcclxuXHR1cmJhbkNvb3BlcmF0aW9uKGRhdGEpIHtcclxuXHRcdHJldHVybiByZXF1ZXN0KHtcclxuXHRcdFx0dXJsOiAnYXBpL3VzZXIvdXJiYW5Db29wZXJhdGlvbicsXHJcblx0XHRcdG1ldGhvZDogJ3Bvc3QnLFxyXG5cdFx0XHRkYXRhXHJcblx0XHR9KVxyXG5cdH0sXHJcblx0XHJcblx0Ly/mlrDlop7mhI/op4Hlj43ppohcclxuXHRmZWVkYmFjayhkYXRhKSB7XHJcblx0XHRyZXR1cm4gcmVxdWVzdCh7XHJcblx0XHRcdHVybDogJ2FwaS91c2VyL2ZlZWRiYWNrJyxcclxuXHRcdFx0bWV0aG9kOiAncG9zdCcsXHJcblx0XHRcdGRhdGFcclxuXHRcdH0pXHJcblx0fSxcclxuXHQvL+aEj+ingeWPjemmiOWIl+ihqFxyXG5cdGZlZWRiYWNrTGlzdChkYXRhKSB7XHJcblx0XHRyZXR1cm4gcmVxdWVzdCh7XHJcblx0XHRcdHVybDogJ2FwaS91c2VyL2ZlZWRiYWNrTGlzdCcsXHJcblx0XHRcdG1ldGhvZDogJ3Bvc3QnLFxyXG5cdFx0XHRkYXRhXHJcblx0XHR9KVxyXG5cdH0sXHJcblx0Ly/luK7liqnkuK3lv4NcclxuXHRoZWxwQ2VudGVyKGRhdGEpIHtcclxuXHRcdHJldHVybiByZXF1ZXN0KHtcclxuXHRcdFx0dXJsOiAnYXBpL2hlbHBDZW50ZXInLFxyXG5cdFx0XHRtZXRob2Q6ICdnZXQnLFxyXG5cdFx0XHRkYXRhXHJcblx0XHR9KVxyXG5cdH0sXHJcblx0Ly/lhbPpl63pnZLlsJHlubRcclxuXHRhc3luYyBjbG9zZVRlZW5hZ2VNb2RlKGRhdGEpIHtcclxuXHRcdHJldHVybiByZXF1ZXN0KHtcclxuXHRcdFx0dXJsOiAnYXBpL3VzZXIvY2xvc2VUZWVuYWdlTW9kZScsXHJcblx0XHRcdG1ldGhvZDogJ3Bvc3QnLFxyXG5cdFx0XHRkYXRhXHJcblx0XHR9KVxyXG5cdH0sXHJcblx0Ly/lvIDlkK/pnZLlsJHlubRcclxuXHRhc3luYyBvcGVuVGVlbmFnZU1vZGUoZGF0YSkge1xyXG5cdFx0cmV0dXJuIHJlcXVlc3Qoe1xyXG5cdFx0XHR1cmw6ICdhcGkvdXNlci9vcGVuVGVlbmFnZU1vZGUnLFxyXG5cdFx0XHRtZXRob2Q6ICdwb3N0JyxcclxuXHRcdFx0ZGF0YVxyXG5cdFx0fSlcclxuXHR9LFxyXG5cdC8v5rOo6ZSAXHJcblx0YXN5bmMgY2FuY2VsQWNjb3VudChkYXRhKSB7XHJcblx0XHRyZXR1cm4gcmVxdWVzdCh7XHJcblx0XHRcdHVybDogJ2FwaS91c2VyL2NhbmNlbEFjY291bnQnLFxyXG5cdFx0XHRtZXRob2Q6ICdwb3N0JyxcclxuXHRcdFx0ZGF0YVxyXG5cdFx0fSlcclxuXHR9LFxyXG5cdC8v6ZqQ56eBJua2iOaBr+mAmuefpVxyXG5cdGFzeW5jIHByaXZhY3lDb25maWcoZGF0YSkge1xyXG5cdFx0cmV0dXJuIHJlcXVlc3Qoe1xyXG5cdFx0XHR1cmw6ICdhcGkvdXNlci9wcml2YWN5Q29uZmlnJyxcclxuXHRcdFx0bWV0aG9kOiAncG9zdCcsXHJcblx0XHRcdGRhdGFcclxuXHRcdH0pXHJcblx0fSxcclxuXHQvL+aWsOWinuS4juenu+mZpOm7keWQjeWNlVxyXG5cdGFzeW5jIGFkZE9yUmVtb3ZlQmxhY2tsaXN0KGRhdGEpIHtcclxuXHRcdHJldHVybiByZXF1ZXN0KHtcclxuXHRcdFx0dXJsOiAnYXBpL3VzZXIvYWRkT3JSZW1vdmVCbGFja2xpc3QnLFxyXG5cdFx0XHRtZXRob2Q6ICdwb3N0JyxcclxuXHRcdFx0ZGF0YVxyXG5cdFx0fSlcclxuXHR9LFxyXG5cdC8v5oiR55qE5Zui6ZifXHJcblx0YXN5bmMgbXlUZWFtKGRhdGEpIHtcclxuXHRcdHJldHVybiByZXF1ZXN0KHtcclxuXHRcdFx0dXJsOiAnYXBpL3VzZXIvbXlUZWFtJyxcclxuXHRcdFx0bWV0aG9kOiAncG9zdCcsXHJcblx0XHRcdGRhdGFcclxuXHRcdH0pXHJcblx0fSxcclxuXHQvL+S7u+WKoeWIl+ihqFxyXG5cdGFzeW5jIHRhc2tMaXN0KGRhdGEpIHtcclxuXHRcdHJldHVybiByZXF1ZXN0KHtcclxuXHRcdFx0dXJsOiAnYXBpL3VzZXIvdGFza0xpc3QnLFxyXG5cdFx0XHRtZXRob2Q6ICdwb3N0JyxcclxuXHRcdFx0ZGF0YVxyXG5cdFx0fSlcclxuXHR9LFxyXG5cdC8v6Zmq546p5biI6K6+572uXHJcblx0ZWRpdFNpdHRlcihkYXRhKSB7XHJcblx0XHRyZXR1cm4gcmVxdWVzdCh7XHJcblx0XHRcdHVybDogJ2FwaS91c2VyL2VkaXRTaXR0ZXInLFxyXG5cdFx0XHRtZXRob2Q6ICdwb3N0JyxcclxuXHRcdFx0ZGF0YVxyXG5cdFx0fSlcclxuXHR9LFxyXG5cdC8v6Zmq546p5biI55Sz6K+3XHJcblx0c2l0dGVyUmVnaXN0ZXIoZGF0YSkge1xyXG5cdFx0cmV0dXJuIHJlcXVlc3Qoe1xyXG5cdFx0XHR1cmw6ICdhcGkvdXNlci9zaXR0ZXJSZWdpc3RlcicsXHJcblx0XHRcdG1ldGhvZDogJ3Bvc3QnLFxyXG5cdFx0XHRkYXRhXHJcblx0XHR9KVxyXG5cdH0sXHJcblx0Ly/mn6Xor6LpmarnjqnluIjliJfooahcclxuXHRzZWxsZXJVc2VyTGlzdChkYXRhKSB7XHJcblx0XHRyZXR1cm4gcmVxdWVzdCh7XHJcblx0XHRcdHVybDogJ2FwaS91c2VyL3NlbGxlclVzZXJMaXN0JyxcclxuXHRcdFx0bWV0aG9kOiAncG9zdCcsXHJcblx0XHRcdGRhdGFcclxuXHRcdH0pXHJcblx0fSxcclxuXHQvL+aIkeeahOmSseWMhea2iOi0ueiusOW9lVxyXG5cdHVzZXJSZWNvcmRMaXN0KGRhdGEpIHtcclxuXHRcdHJldHVybiByZXF1ZXN0KHtcclxuXHRcdFx0dXJsOiAnYXBpL3VzZXIvdXNlclJlY29yZExpc3QnLFxyXG5cdFx0XHRtZXRob2Q6ICdwb3N0JyxcclxuXHRcdFx0ZGF0YVxyXG5cdFx0fSlcclxuXHR9LFxyXG5cdC8v5aWX6aSQ5LiL5Y2VXHJcblx0bWVhbHNldFJlY2hhcmdlQ3JlYXRlT3JkZXIoZGF0YSkge1xyXG5cdFx0cmV0dXJuIHJlcXVlc3Qoe1xyXG5cdFx0XHR1cmw6ICdhcGkvdXNlci9tZWFsc2V0UmVjaGFyZ2VDcmVhdGVPcmRlcicsXHJcblx0XHRcdG1ldGhvZDogJ3Bvc3QnLFxyXG5cdFx0XHRkYXRhXHJcblx0XHR9KVxyXG5cdH0sXHJcblx0Ly/lpZfppJDliJfooahcclxuXHRtZWFsc2V0TGlzdChkYXRhKXtcclxuXHRcdHJldHVybiByZXF1ZXN0KHtcclxuXHRcdFx0dXJsOiAnYXBpL21lYWxzZXRMaXN0JyxcclxuXHRcdFx0bWV0aG9kOiAncG9zdCcsXHJcblx0XHRcdGRhdGFcclxuXHRcdH0pXHJcblx0fSxcclxuXHQvL+aPkOeOsFxyXG5cdHdpdGhkcmF3YWwoZGF0YSl7XHJcblx0XHRyZXR1cm4gcmVxdWVzdCh7XHJcblx0XHRcdHVybDogJ2FwaS91c2VyL3dpdGhkcmF3YWwnLFxyXG5cdFx0XHRtZXRob2Q6ICdwb3N0JyxcclxuXHRcdFx0ZGF0YVxyXG5cdFx0fSlcclxuXHR9LFxyXG5cdC8v5oiR55qE6ZKx5YyFXHJcblx0dXNlcldhbGxldChkYXRhKXtcclxuXHRcdHJldHVybiByZXF1ZXN0KHtcclxuXHRcdFx0dXJsOiAnYXBpL3VzZXIvdXNlcldhbGxldCcsXHJcblx0XHRcdG1ldGhvZDogJ3Bvc3QnLFxyXG5cdFx0XHRkYXRhXHJcblx0XHR9KVxyXG5cdH0sXHJcblx0Ly/pppbpobUt6I635Y+W6Zmq546p5pyN5Yqh5YiX6KGoXHJcblx0c2l0dGVyTGlzdChkYXRhKXtcclxuXHRcdHJldHVybiByZXF1ZXN0KHtcclxuXHRcdFx0dXJsOiAnYXBpL3NpdHRlckxpc3QnLFxyXG5cdFx0XHRtZXRob2Q6ICdwb3N0JyxcclxuXHRcdFx0ZGF0YVxyXG5cdFx0fSlcclxuXHR9LFxyXG5cdC8v5oiR55qE5aW95Y+LXHJcblx0ZnJpZW5kTGlzdChkYXRhKXtcclxuXHRcdHJldHVybiByZXF1ZXN0KHtcclxuXHRcdFx0dXJsOiAnYXBpL3VzZXIvZnJpZW5kTGlzdCcsXHJcblx0XHRcdG1ldGhvZDogJ3Bvc3QnLFxyXG5cdFx0XHRkYXRhXHJcblx0XHR9KVxyXG5cdH0sXHJcblx0Ly/ljbPotK0gLSDojrflj5Z0b2tlblxyXG5cdGZpbmRaZWdvVG9rZW4oZGF0YSl7XHJcblx0XHRyZXR1cm4gcmVxdWVzdCh7XHJcblx0XHRcdHVybDogJ2FwaS91c2VyL2ZpbmRaZWdvVG9rZW4nLFxyXG5cdFx0XHRtZXRob2Q6ICdwb3N0JyxcclxuXHRcdFx0ZGF0YVxyXG5cdFx0fSlcclxuXHR9LFxyXG5cdC8v6aKE5LiL6K6i5Y2VXHJcblx0cHJlQ3JlYXRlT3JkZXIoZGF0YSl7XHJcblx0XHRyZXR1cm4gcmVxdWVzdCh7XHJcblx0XHRcdHVybDogJ2FwaS91c2VyL3ByZUNyZWF0ZU9yZGVyJyxcclxuXHRcdFx0bWV0aG9kOiAncG9zdCcsXHJcblx0XHRcdGRhdGFcclxuXHRcdH0pXHJcblx0fSxcclxuXHQvL+S8muWRmOadg+ebilxyXG5cdG1lbWJlcnNoaXBCZW5lZml0cyhkYXRhKXtcclxuXHRcdHJldHVybiByZXF1ZXN0KHtcclxuXHRcdFx0dXJsOiAnYXBpL3VzZXIvbWVtYmVyc2hpcEJlbmVmaXRzJyxcclxuXHRcdFx0bWV0aG9kOiAncG9zdCcsXHJcblx0XHRcdGRhdGFcclxuXHRcdH0pXHJcblx0fSxcclxuXHQvL+WFs+azqFxyXG5cdGNhcmVPckNhbmNlbChkYXRhKXtcclxuXHRcdHJldHVybiByZXF1ZXN0KHtcclxuXHRcdFx0dXJsOiAnYXBpL3VzZXIvY2FyZU9yQ2FuY2VsJyxcclxuXHRcdFx0bWV0aG9kOiAncG9zdCcsXHJcblx0XHRcdGRhdGFcclxuXHRcdH0pXHJcblx0fSxcclxuXHQvL+WFtuS7luS6uuS4u+mhteS/oeaBr1xyXG5cdGZpbmRPdGhlclVzZXJJbmZvKGRhdGEpe1xyXG5cdFx0cmV0dXJuIHJlcXVlc3Qoe1xyXG5cdFx0XHR1cmw6ICdhcGkvdXNlci9maW5kT3RoZXJVc2VySW5mbycsXHJcblx0XHRcdG1ldGhvZDogJ3Bvc3QnLFxyXG5cdFx0XHRkYXRhXHJcblx0XHR9KVxyXG5cdH0sXHJcblx0Ly/pppbpobXpmYTov5FcclxuXHRuZWFyYnlDdXN0b21lckxpc3QoZGF0YSl7XHJcblx0XHRyZXR1cm4gcmVxdWVzdCh7XHJcblx0XHRcdHVybDogJ2FwaS91c2VyL25lYXJieUN1c3RvbWVyTGlzdCcsXHJcblx0XHRcdG1ldGhvZDogJ3Bvc3QnLFxyXG5cdFx0XHRkYXRhXHJcblx0XHR9KVxyXG5cdH0sXHJcblx0Ly/pppbpobXmjqjojZBcclxuXHRjdXN0b21lclJlY29tbWVuZExpc3QoZGF0YSl7XHJcblx0XHRyZXR1cm4gcmVxdWVzdCh7XHJcblx0XHRcdHVybDogJ2FwaS91c2VyL2N1c3RvbWVyUmVjb21tZW5kTGlzdCcsXHJcblx0XHRcdG1ldGhvZDogJ3Bvc3QnLFxyXG5cdFx0XHRkYXRhXHJcblx0XHR9KVxyXG5cdH0sXHJcblx0Ly/npL7kuqTmtojotLkt5paH5a2XL+ivremfsy/op4bpopHnu5PnrpdcclxuXHRzb2NpYWxDb25zdW1wdGlvbihkYXRhKXtcclxuXHRcdHJldHVybiByZXF1ZXN0KHtcclxuXHRcdFx0dXJsOiAnYXBpL3VzZXIvc29jaWFsQ29uc3VtcHRpb24nLFxyXG5cdFx0XHRtZXRob2Q6ICdwb3N0JyxcclxuXHRcdFx0ZGF0YVxyXG5cdFx0fSlcclxuXHR9LFxyXG5cdC8v5Y+R6YCBLeaWh+Wtly/or63pn7Mv6KeG6aKRXHJcblx0Y2hhdChkYXRhKXtcclxuXHRcdHJldHVybiByZXF1ZXN0KHtcclxuXHRcdFx0dXJsOiAnYXBpL3VzZXIvY2hhdCcsXHJcblx0XHRcdG1ldGhvZDogJ3Bvc3QnLFxyXG5cdFx0XHRkYXRhXHJcblx0XHR9KVxyXG5cdH0sXHJcblx0Ly/mn6Xor6LnlKjmiLfkvZnpop0t77yI55So5LqO5Yik5pat5L2Z6aKd5piv5ZCm6Laz5aSf77yJXHJcblx0dXNlckJhbGFuY2UoZGF0YSl7XHJcblx0XHRyZXR1cm4gcmVxdWVzdCh7XHJcblx0XHRcdHVybDogJ2FwaS91c2VyL3VzZXJCYWxhbmNlJyxcclxuXHRcdFx0bWV0aG9kOiAncG9zdCcsXHJcblx0XHRcdGRhdGFcclxuXHRcdH0pXHJcblx0fSxcclxuXHQvL+iuvue9ruaQreiuquWIl+ihqFxyXG5cdHNldEFjY29zdERlZmF1bHQoZGF0YSl7XHJcblx0XHRyZXR1cm4gcmVxdWVzdCh7XHJcblx0XHRcdHVybDogJ2FwaS91c2VyL3NldEFjY29zdERlZmF1bHQnLFxyXG5cdFx0XHRtZXRob2Q6ICdwb3N0JyxcclxuXHRcdFx0ZGF0YVxyXG5cdFx0fSlcclxuXHR9LFxyXG5cdC8v5pCt6K6q5YiX6KGoXHJcblx0ZmluZEFjY29zdChkYXRhKXtcclxuXHRcdHJldHVybiByZXF1ZXN0KHtcclxuXHRcdFx0dXJsOiAnYXBpL3VzZXIvZmluZEFjY29zdCcsXHJcblx0XHRcdG1ldGhvZDogJ3Bvc3QnLFxyXG5cdFx0XHRkYXRhXHJcblx0XHR9KVxyXG5cdH0sXHJcblx0Ly/kuL7miqVcclxuXHRyZXBvcnQoZGF0YSl7XHJcblx0XHRyZXR1cm4gcmVxdWVzdCh7XHJcblx0XHRcdHVybDogJ2FwaS91c2VyL3JlcG9ydCcsXHJcblx0XHRcdG1ldGhvZDogJ3Bvc3QnLFxyXG5cdFx0XHRkYXRhXHJcblx0XHR9KVxyXG5cdH0sXHJcblx0Ly/mlofnq6At54K56LWeXHJcblx0emFuKGRhdGEpe1xyXG5cdFx0cmV0dXJuIHJlcXVlc3Qoe1xyXG5cdFx0XHR1cmw6ICdhcGkvdXNlci96YW4nLFxyXG5cdFx0XHRtZXRob2Q6ICdwb3N0JyxcclxuXHRcdFx0ZGF0YVxyXG5cdFx0fSlcclxuXHR9LFxyXG5cdC8v6K+E6K665oiW6ICF5Zue5aSNXHJcblx0Y29tbWVudFJlcGx5KGRhdGEpe1xyXG5cdFx0cmV0dXJuIHJlcXVlc3Qoe1xyXG5cdFx0XHR1cmw6ICdhcGkvdXNlci9jb21tZW50UmVwbHknLFxyXG5cdFx0XHRtZXRob2Q6ICdwb3N0JyxcclxuXHRcdFx0ZGF0YVxyXG5cdFx0fSlcclxuXHR9LFxyXG5cdC8v5Yqo5oCB6K+m5oOFXHJcblx0YXJ0aWNsZURldGFpbChkYXRhKXtcclxuXHRcdHJldHVybiByZXF1ZXN0KHtcclxuXHRcdFx0dXJsOiAnYXBpL3VzZXIvYXJ0aWNsZURldGFpbCcsXHJcblx0XHRcdG1ldGhvZDogJ3Bvc3QnLFxyXG5cdFx0XHRkYXRhXHJcblx0XHR9KVxyXG5cdH0sXHJcblx0Ly/liKDpmaTliqjmgIFcclxuXHR1c2VyQXJ0aWNsZUxpc3QoZGF0YSl7XHJcblx0XHRyZXR1cm4gcmVxdWVzdCh7XHJcblx0XHRcdHVybDogJ2FwaS91c2VyL3VzZXJBcnRpY2xlTGlzdCcsXHJcblx0XHRcdG1ldGhvZDogJ3Bvc3QnLFxyXG5cdFx0XHRkYXRhXHJcblx0XHR9KVxyXG5cdH0sXHJcblx0Ly/nlKjmiLfliqjmgIHliJfooagt5YiG6aG1XHJcblx0dXNlckFydGljbGVMaXN0KGRhdGEpe1xyXG5cdFx0cmV0dXJuIHJlcXVlc3Qoe1xyXG5cdFx0XHR1cmw6ICdhcGkvdXNlci91c2VyQXJ0aWNsZUxpc3QnLFxyXG5cdFx0XHRtZXRob2Q6ICdwb3N0JyxcclxuXHRcdFx0ZGF0YVxyXG5cdFx0fSlcclxuXHR9LFxyXG5cdC8v55So5oi36Zmq546p5pyN5Yqh5YiX6KGoXHJcblx0dXNlclNlbGxlclNlcnZpY2VMaXN0KGRhdGEpe1xyXG5cdFx0cmV0dXJuIHJlcXVlc3Qoe1xyXG5cdFx0XHR1cmw6ICdhcGkvdXNlci91c2VyU2VsbGVyU2VydmljZUxpc3QnLFxyXG5cdFx0XHRtZXRob2Q6ICdwb3N0JyxcclxuXHRcdFx0ZGF0YVxyXG5cdFx0fSlcclxuXHR9LFxyXG5cdC8v5pSv5LuY6K6i5Y2VXHJcblx0cGF5bWVudE9yZGVyKGRhdGEpe1xyXG5cdFx0cmV0dXJuIHJlcXVlc3Qoe1xyXG5cdFx0XHR1cmw6ICdhcGkvdXNlci9wYXltZW50T3JkZXInLFxyXG5cdFx0XHRtZXRob2Q6ICdnZXQnLFxyXG5cdFx0XHRkYXRhXHJcblx0XHR9KVxyXG5cdH0sXHJcblx0Ly/kvJrlkZjlhYXlgLwt6aKE5LiL5Y2V77yI5ou/552A5Y2V5Y+36LCD55SoLeaUr+S7mOiuouWNle+8iVxyXG5cdG1lbWJlckNyZWF0ZU9yZGVyKGRhdGEpe1xyXG5cdFx0cmV0dXJuIHJlcXVlc3Qoe1xyXG5cdFx0XHR1cmw6ICdhcGkvdXNlci9tZW1iZXJDcmVhdGVPcmRlcicsXHJcblx0XHRcdG1ldGhvZDogJ3Bvc3QnLFxyXG5cdFx0XHRkYXRhXHJcblx0XHR9KVxyXG5cdH0sXHJcblx0Ly/kvJrlkZjljY/orq5cclxuXHRnZXRDb25maWdEYXRhKGRhdGEpe1xyXG5cdFx0cmV0dXJuIHJlcXVlc3Qoe1xyXG5cdFx0XHR1cmw6ICdhcGkvZ2V0Q29uZmlnRGF0YScsXHJcblx0XHRcdG1ldGhvZDogJ2dldCcsXHJcblx0XHRcdGRhdGFcclxuXHRcdH0pXHJcblx0fSxcclxuXHQvL+S8muWRmOWIl+ihqFxyXG5cdG1lbWJlckxpc3QoZGF0YSkge1xyXG5cdFx0cmV0dXJuIHJlcXVlc3Qoe1xyXG5cdFx0XHR1cmw6ICdhcGkvbWVtYmVyTGlzdCcsXHJcblx0XHRcdG1ldGhvZDogJ2dldCcsXHJcblx0XHRcdGRhdGFcclxuXHRcdH0pXHJcblx0fSxcclxuXHQvL+etvuWIsFxyXG5cdHNpZ24oZGF0YSkge1xyXG5cdFx0cmV0dXJuIHJlcXVlc3Qoe1xyXG5cdFx0XHR1cmw6ICdhcGkvdXNlci9zaWduJyxcclxuXHRcdFx0bWV0aG9kOiAncG9zdCcsXHJcblx0XHRcdGRhdGFcclxuXHRcdH0pXHJcblx0fSxcclxuXHQvL+WKqOaAgeivpuaDhVxyXG5cdGFydGljbGVEZXRhaWx0KGRhdGEpIHtcclxuXHRcdHJldHVybiByZXF1ZXN0KHtcclxuXHRcdFx0dXJsOiAnYXBpL3VzZXIvYXJ0aWNsZURldGFpbHQnLFxyXG5cdFx0XHRtZXRob2Q6ICdwb3N0JyxcclxuXHRcdFx0ZGF0YVxyXG5cdFx0fSlcclxuXHR9LFxyXG5cdC8v5Y+R5biD5Yqo5oCBXHJcblx0cHVibGlzaEFydGljbGUoZGF0YSkge1xyXG5cdFx0cmV0dXJuIHJlcXVlc3Qoe1xyXG5cdFx0XHR1cmw6ICdhcGkvdXNlci9wdWJsaXNoQXJ0aWNsZScsXHJcblx0XHRcdG1ldGhvZDogJ3Bvc3QnLFxyXG5cdFx0XHRkYXRhXHJcblx0XHR9KVxyXG5cdH0sXHJcblx0Ly/liqjmgIHliJfooahcclxuXHRhcnRpY2xlTGlzdChkYXRhKSB7XHJcblx0XHRyZXR1cm4gcmVxdWVzdCh7XHJcblx0XHRcdHVybDogJ2FwaS91c2VyL2FydGljbGVMaXN0JyxcclxuXHRcdFx0bWV0aG9kOiAncG9zdCcsXHJcblx0XHRcdGRhdGFcclxuXHRcdH0pXHJcblx0fSxcclxuXHQvL+aIkeeahOebuOWGjFxyXG5cdG15QWxidW1zKGRhdGEpIHtcclxuXHRcdHJldHVybiByZXF1ZXN0KHtcclxuXHRcdFx0dXJsOiAnYXBpL3VzZXIvbXlBbGJ1bXMnLFxyXG5cdFx0XHRtZXRob2Q6ICdwb3N0JyxcclxuXHRcdFx0ZGF0YVxyXG5cdFx0fSlcclxuXHR9LFxyXG5cdC8v5L+d5a2Y5Liq5Lq66LWE5paZXHJcblx0ZWRpdFVzZXIoZGF0YSkge1xyXG5cdFx0cmV0dXJuIHJlcXVlc3Qoe1xyXG5cdFx0XHR1cmw6ICdhcGkvdXNlci9lZGl0VXNlcicsXHJcblx0XHRcdG1ldGhvZDogJ3Bvc3QnLFxyXG5cdFx0XHRkYXRhXHJcblx0XHR9KVxyXG5cdH0sXHJcblx0Ly/kv53lrZjor63pn7Pnrb7lkI1cclxuXHR2b2ljZVNpZ24oZGF0YSkge1xyXG5cdFx0cmV0dXJuIHJlcXVlc3Qoe1xyXG5cdFx0XHR1cmw6ICdhcGkvdXNlci92b2ljZVNpZ24nLFxyXG5cdFx0XHRtZXRob2Q6ICdwb3N0JyxcclxuXHRcdFx0ZGF0YVxyXG5cdFx0fSlcclxuXHR9LFxyXG5cdC8v5qC55o2u5a2X5YW457G75Z6L6I635Y+W5a2X5YW4IOaUr+S7mOaWueW8j++8mkNPTkZJR19QQVlfU1RBVFVTICAgMSDlvIDlkK8gMOWFs+mXrSAgIOWtpuWOhiBlZHVjYXRpb25fdHlwZSDolqrotYQgc2FsYXJ5X3R5cGUg5ama5ae7IG1hcnJpYWdlX3R5cGUg5bGF5L2PIGxpdmVfdHlwZSDlvILmgKct5aWz5qCH562+IHNleF90eXBlXzIg5pif5bqnIGNvbnN0ZWxsYXRpb25fdHlwZSDlvILmgKct55S35qCH562+IHNleF90eXBlXzFcclxuXHRnZXREaWN0RGF0YUJ5VHlwZShkYXRhKSB7XHJcblx0XHRyZXR1cm4gcmVxdWVzdCh7XHJcblx0XHRcdHVybDogJ2FwaS9nZXREaWN0RGF0YUJ5VHlwZScsXHJcblx0XHRcdG1ldGhvZDogJ2dldCcsXHJcblx0XHRcdGRhdGFcclxuXHRcdH0pXHJcblx0fSxcclxuXHQvL+ecn+S6uuiupOivgVxyXG5cdGRldGVjdExpdmluZ0ZhY2UoZGF0YSkge1xyXG5cdFx0cmV0dXJuIHJlcXVlc3Qoe1xyXG5cdFx0XHR1cmw6ICdhcGkvdXNlci9kZXRlY3RMaXZpbmdGYWNlJyxcclxuXHRcdFx0bWV0aG9kOiAncG9zdCcsXHJcblx0XHRcdGRhdGFcclxuXHRcdH0pXHJcblx0fSxcclxuXHQvL+WunuWQjeiupOivgVxyXG5cdHJlYWxOYW1lQXV0aChkYXRhKSB7XHJcblx0XHRyZXR1cm4gcmVxdWVzdCh7XHJcblx0XHRcdHVybDogJ2FwaS91c2VyL3JlYWxOYW1lQXV0aCcsXHJcblx0XHRcdG1ldGhvZDogJ3Bvc3QnLFxyXG5cdFx0XHRkYXRhXHJcblx0XHR9KVxyXG5cdH0sXHJcblx0Ly/miYvmnLrorqTor4FcclxuXHRwaG9uZUF1dGgoZGF0YSkge1xyXG5cdFx0cmV0dXJuIHJlcXVlc3Qoe1xyXG5cdFx0XHR1cmw6ICdhcGkvdXNlci9waG9uZUF1dGgnLFxyXG5cdFx0XHRtZXRob2Q6ICdwb3N0JyxcclxuXHRcdFx0ZGF0YVxyXG5cdFx0fSlcclxuXHR9LFxyXG5cdC8v5p+l6K+i5Liq5Lq65L+h5oGvXHJcblx0ZmluZFVzZXJJbmZvKGRhdGEpIHtcclxuXHRcdHJldHVybiByZXF1ZXN0KHtcclxuXHRcdFx0dXJsOiAnYXBpL3VzZXIvZmluZFVzZXJJbmZvJyxcclxuXHRcdFx0bWV0aG9kOiAncG9zdCcsXHJcblx0XHRcdGRhdGFcclxuXHRcdH0pXHJcblx0fSxcclxuXHQvL+W/mOiusOWvhueggS/kv67mlLnlr4bnoIFcclxuXHRmb3JnZXRQc3coZGF0YSkge1xyXG5cdFx0cmV0dXJuIHJlcXVlc3Qoe1xyXG5cdFx0XHR1cmw6ICdhcGkvZm9yZ2V0UHN3JyxcclxuXHRcdFx0bWV0aG9kOiAncG9zdCcsXHJcblx0XHRcdGRhdGFcclxuXHRcdH0pXHJcblx0fSxcclxuXHQvL+WPkemAgemqjOivgeeggVxyXG5cdHNlbmRTbXNDb2RlKGRhdGEpIHtcclxuXHRcdHJldHVybiByZXF1ZXN0KHtcclxuXHRcdFx0dXJsOiAnYXBpL3NlbmRTbXNDb2RlJyxcclxuXHRcdFx0bWV0aG9kOiAncG9zdCcsXHJcblx0XHRcdGRhdGFcclxuXHRcdH0pXHJcblx0fSxcclxuXHQvL+efreS/oeeZu+W9lVxyXG5cdHRvTG9naW4oZGF0YSkge1xyXG5cdFx0cmV0dXJuIHJlcXVlc3Qoe1xyXG5cdFx0XHR1cmw6ICdhcGkvbG9naW5CeUNvZGUnLFxyXG5cdFx0XHRtZXRob2Q6ICdwb3N0JyxcclxuXHRcdFx0ZGF0YVxyXG5cdFx0fSlcclxuXHR9LFxyXG5cdC8v5rOo5YaM6LSm5Y+3XHJcblx0cmVnQnlDb2RlKGRhdGEpIHtcclxuXHRcdHJldHVybiByZXF1ZXN0KHtcclxuXHRcdFx0dXJsOiAnYXBpL3JlZ0J5Q29kZScsXHJcblx0XHRcdG1ldGhvZDogJ3Bvc3QnLFxyXG5cdFx0XHRkYXRhXHJcblx0XHR9KVxyXG5cdH0sXHJcblx0Ly/otKblj7fnmbvlvZVcclxuXHRsb2dpbkZvclBzdyhkYXRhKSB7XHJcblx0XHRyZXR1cm4gcmVxdWVzdCh7XHJcblx0XHRcdHVybDogJy9hcGkvbG9naW5Gb3JQc3cnLFxyXG5cdFx0XHRtZXRob2Q6ICdwb3N0JyxcclxuXHRcdFx0ZGF0YVxyXG5cdFx0fSlcclxuXHR9LFxyXG5cdC8v5L+u5pS555So5oi35L+h5oGvXHJcblx0cmVnaXN0ZXJFZGl0VXNlcihkYXRhKSB7XHJcblx0XHRyZXR1cm4gcmVxdWVzdCh7XHJcblx0XHRcdHVybDogJ2FwaS91c2VyL3JlZ2lzdGVyRWRpdFVzZXInLFxyXG5cdFx0XHRtZXRob2Q6ICdwb3N0JyxcclxuXHRcdFx0ZGF0YVxyXG5cdFx0fSlcclxuXHR9LFxyXG5cdC8v55So5oi35L+h5oGvXHJcblx0Z2V0TWVtYmVySW5mbyhkYXRhKSB7XHJcblx0XHRyZXR1cm4gcmVxdWVzdCh7XHJcblx0XHRcdHVybDogJ2FwaS91c2VyL2dldGluZm8nLFxyXG5cdFx0XHRtZXRob2Q6ICdwb3N0JyxcclxuXHRcdFx0ZGF0YVxyXG5cdFx0fSlcclxuXHR9XHJcbn1cclxuZXhwb3J0IGRlZmF1bHQgYXBpIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///17\n");
/***/ }),
/* 18 */
/*!***************************************************************!*\
!*** ./node_modules/@babel/runtime/helpers/defineProperty.js ***!
\***************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var toPropertyKey = __webpack_require__(/*! ./toPropertyKey.js */ 19);
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;
/***/ }),
/* 19 */
/*!**************************************************************!*\
!*** ./node_modules/@babel/runtime/helpers/toPropertyKey.js ***!
\**************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var _typeof = __webpack_require__(/*! ./typeof.js */ 13)["default"];
var toPrimitive = __webpack_require__(/*! ./toPrimitive.js */ 20);
function toPropertyKey(t) {
var i = toPrimitive(t, "string");
return "symbol" == _typeof(i) ? i : i + "";
}
module.exports = toPropertyKey, module.exports.__esModule = true, module.exports["default"] = module.exports;
/***/ }),
/* 20 */
/*!************************************************************!*\
!*** ./node_modules/@babel/runtime/helpers/toPrimitive.js ***!
\************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var _typeof = __webpack_require__(/*! ./typeof.js */ 13)["default"];
function toPrimitive(t, r) {
if ("object" != _typeof(t) || !t) return t;
var e = t[Symbol.toPrimitive];
if (void 0 !== e) {
var i = e.call(t, r || "default");
if ("object" != _typeof(i)) return i;
throw new TypeError("@@toPrimitive must return a primitive value.");
}
return ("string" === r ? String : Number)(t);
}
module.exports = toPrimitive, module.exports.__esModule = true, module.exports["default"] = module.exports;
/***/ }),
/* 21 */
/*!****************************************************************!*\
!*** E:/project/sxq/2024-10-16 chunwan/chunwan/api/request.js ***!
\****************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 11);\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.request = request;\nvar _vue = _interopRequireDefault(__webpack_require__(/*! vue */ 22));\nvar baseUrl = 'https://api.lyiyuan.cn';\n_vue.default.prototype.$baseUrl = baseUrl;\nfunction request(prams) {\n return new Promise(function (resolve, reject) {\n var url = baseUrl + \"/prod-api/\" + prams.url;\n uni.request({\n url: url,\n data: prams.data,\n method: prams.method,\n header: {\n \"token\": uni.getStorageSync(\"userInfo\").token,\n \"Content-type\": \"application/json\",\n \"deviceSn\": uni.getStorageSync(\"deviceSn\")\n },\n success: function success(res) {\n if (res.data.code == 200 || res.data.code == -1) {\n // console.log(prams)\n // console.log(\"返回结果:\"+JSON.stringify(res.data))\n resolve(res.data);\n } else if (res.data.code == 401) {\n uni.showModal({\n title: \"温馨提示\",\n content: \"当前账号已过期,是否重新登录\",\n confirmColor: \"#000\",\n success: function success(res) {\n uni.removeStorageSync(\"userInfo\");\n uni.navigateTo({\n url: \"/pages/login/login\"\n });\n }\n });\n } else if (res.data.code == -2) {\n uni.showModal({\n title: \"温馨提示\",\n content: \"当前账号未三方认证,请前往认证\",\n confirmColor: \"#000\",\n confirmText: \"前往\",\n success: function success(res) {\n uni.navigateTo({\n url: \"/pages/users/renzheng/index\"\n });\n }\n });\n } else {\n reject(res.data);\n uni.showToast({\n icon: \"none\",\n title: res.data.msg,\n duration: 3000\n });\n }\n },\n fail: function fail(err) {\n reject(err);\n },\n complete: function complete() {\n //console.log('请求完成')\n }\n });\n });\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vYXBpL3JlcXVlc3QuanMiXSwibmFtZXMiOlsiYmFzZVVybCIsIlZ1ZSIsInByb3RvdHlwZSIsIiRiYXNlVXJsIiwicmVxdWVzdCIsInByYW1zIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJ1cmwiLCJ1bmkiLCJkYXRhIiwibWV0aG9kIiwiaGVhZGVyIiwiZ2V0U3RvcmFnZVN5bmMiLCJ0b2tlbiIsInN1Y2Nlc3MiLCJyZXMiLCJjb2RlIiwic2hvd01vZGFsIiwidGl0bGUiLCJjb250ZW50IiwiY29uZmlybUNvbG9yIiwicmVtb3ZlU3RvcmFnZVN5bmMiLCJuYXZpZ2F0ZVRvIiwiY29uZmlybVRleHQiLCJzaG93VG9hc3QiLCJpY29uIiwibXNnIiwiZHVyYXRpb24iLCJmYWlsIiwiZXJyIiwiY29tcGxldGUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTtBQUNBLElBQUlBLE9BQU8sR0FBRyx3QkFBd0I7QUFDdENDLFlBQUcsQ0FBQ0MsU0FBUyxDQUFDQyxRQUFRLEdBQUdILE9BQU87QUFFekIsU0FBU0ksT0FBTyxDQUFDQyxLQUFLLEVBQUU7RUFDOUIsT0FBTyxJQUFJQyxPQUFPLENBQUMsVUFBQ0MsT0FBTyxFQUFFQyxNQUFNLEVBQUs7SUFDdkMsSUFBSUMsR0FBRyxHQUFHVCxPQUFPLEdBQUMsWUFBWSxHQUFDSyxLQUFLLENBQUNJLEdBQUc7SUFDeENDLEdBQUcsQ0FBQ04sT0FBTyxDQUFDO01BQ1hLLEdBQUcsRUFBSEEsR0FBRztNQUNIRSxJQUFJLEVBQUVOLEtBQUssQ0FBQ00sSUFBSTtNQUNoQkMsTUFBTSxFQUFFUCxLQUFLLENBQUNPLE1BQU07TUFDcEJDLE1BQU0sRUFBRTtRQUNQLE9BQU8sRUFBRUgsR0FBRyxDQUFDSSxjQUFjLENBQUMsVUFBVSxDQUFDLENBQUNDLEtBQUs7UUFDN0MsY0FBYyxFQUFFLGtCQUFrQjtRQUNsQyxVQUFVLEVBQUVMLEdBQUcsQ0FBQ0ksY0FBYyxDQUFDLFVBQVU7TUFDMUMsQ0FBQztNQUNERSxPQUFPLEVBQUUsaUJBQUNDLEdBQUcsRUFBSztRQUNqQixJQUFJQSxHQUFHLENBQUNOLElBQUksQ0FBQ08sSUFBSSxJQUFJLEdBQUcsSUFBSUQsR0FBRyxDQUFDTixJQUFJLENBQUNPLElBQUksSUFBSSxDQUFDLENBQUMsRUFBQztVQUMvQztVQUNBO1VBQ0FYLE9BQU8sQ0FBQ1UsR0FBRyxDQUFDTixJQUFJLENBQUM7UUFDbEIsQ0FBQyxNQUFLLElBQUdNLEdBQUcsQ0FBQ04sSUFBSSxDQUFDTyxJQUFJLElBQUksR0FBRyxFQUFDO1VBQzdCUixHQUFHLENBQUNTLFNBQVMsQ0FBQztZQUNiQyxLQUFLLEVBQUUsTUFBTTtZQUNiQyxPQUFPLEVBQUUsZ0JBQWdCO1lBQ3pCQyxZQUFZLEVBQUUsTUFBTTtZQUNwQk4sT0FBTyxtQkFBQ0MsR0FBRyxFQUFFO2NBQ1pQLEdBQUcsQ0FBQ2EsaUJBQWlCLENBQUMsVUFBVSxDQUFDO2NBQ2pDYixHQUFHLENBQUNjLFVBQVUsQ0FBQztnQkFDZGYsR0FBRyxFQUFFO2NBQ04sQ0FBQyxDQUFDO1lBQ0g7VUFDRCxDQUFDLENBQUM7UUFDSCxDQUFDLE1BQU0sSUFBR1EsR0FBRyxDQUFDTixJQUFJLENBQUNPLElBQUksSUFBSSxDQUFDLENBQUMsRUFBQztVQUM3QlIsR0FBRyxDQUFDUyxTQUFTLENBQUM7WUFDYkMsS0FBSyxFQUFFLE1BQU07WUFDYkMsT0FBTyxFQUFFLGlCQUFpQjtZQUMxQkMsWUFBWSxFQUFFLE1BQU07WUFDcEJHLFdBQVcsRUFBRSxJQUFJO1lBQ2pCVCxPQUFPLG1CQUFDQyxHQUFHLEVBQUU7Y0FDWlAsR0FBRyxDQUFDYyxVQUFVLENBQUM7Z0JBQ2RmLEdBQUcsRUFBRTtjQUNOLENBQUMsQ0FBQztZQUNIO1VBQ0QsQ0FBQyxDQUFDO1FBQ0gsQ0FBQyxNQUFLO1VBQ0xELE1BQU0sQ0FBQ1MsR0FBRyxDQUFDTixJQUFJLENBQUM7VUFDaEJELEdBQUcsQ0FBQ2dCLFNBQVMsQ0FBQztZQUNiQyxJQUFJLEVBQUUsTUFBTTtZQUNaUCxLQUFLLEVBQUVILEdBQUcsQ0FBQ04sSUFBSSxDQUFDaUIsR0FBRztZQUNuQkMsUUFBUSxFQUFFO1VBQ1gsQ0FBQyxDQUFDO1FBQ0g7TUFFRCxDQUFDO01BQ0RDLElBQUksRUFBRSxjQUFDQyxHQUFHLEVBQUs7UUFDZHZCLE1BQU0sQ0FBQ3VCLEdBQUcsQ0FBQztNQUNaLENBQUM7TUFDREMsUUFBUSxFQUFFLG9CQUFNO1FBQ2Y7TUFBQTtJQUVGLENBQUMsQ0FBQztFQUNILENBQUMsQ0FBQztBQUNIIiwiZmlsZSI6IjIxLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFZ1ZSBmcm9tICd2dWUnXHJcbmxldCBiYXNlVXJsID0gJ2h0dHBzOi8vYXBpLmx5aXl1YW4uY24nO1xyXG5WdWUucHJvdG90eXBlLiRiYXNlVXJsID0gYmFzZVVybDtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiByZXF1ZXN0KHByYW1zKSB7XHJcblx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuXHRcdGxldCB1cmwgPSBiYXNlVXJsK1wiL3Byb2QtYXBpL1wiK3ByYW1zLnVybDtcclxuXHRcdHVuaS5yZXF1ZXN0KHtcclxuXHRcdFx0dXJsLFxyXG5cdFx0XHRkYXRhOiBwcmFtcy5kYXRhLFxyXG5cdFx0XHRtZXRob2Q6IHByYW1zLm1ldGhvZCxcclxuXHRcdFx0aGVhZGVyOiB7XHJcblx0XHRcdFx0XCJ0b2tlblwiOiB1bmkuZ2V0U3RvcmFnZVN5bmMoXCJ1c2VySW5mb1wiKS50b2tlbixcclxuXHRcdFx0XHRcIkNvbnRlbnQtdHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIixcclxuXHRcdFx0XHRcImRldmljZVNuXCI6IHVuaS5nZXRTdG9yYWdlU3luYyhcImRldmljZVNuXCIpLFxyXG5cdFx0XHR9LFxyXG5cdFx0XHRzdWNjZXNzOiAocmVzKSA9PiB7XHJcblx0XHRcdFx0aWYgKHJlcy5kYXRhLmNvZGUgPT0gMjAwIHx8IHJlcy5kYXRhLmNvZGUgPT0gLTEpe1xyXG5cdFx0XHRcdFx0Ly8gY29uc29sZS5sb2cocHJhbXMpXHJcblx0XHRcdFx0XHQvLyBjb25zb2xlLmxvZyhcIui/lOWbnue7k+aenO+8mlwiK0pTT04uc3RyaW5naWZ5KHJlcy5kYXRhKSlcclxuXHRcdFx0XHRcdHJlc29sdmUocmVzLmRhdGEpO1xyXG5cdFx0XHRcdH1lbHNlIGlmKHJlcy5kYXRhLmNvZGUgPT0gNDAxKXtcclxuXHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe1xyXG5cdFx0XHRcdFx0XHR0aXRsZTogXCLmuKnppqjmj5DnpLpcIixcclxuXHRcdFx0XHRcdFx0Y29udGVudDogXCLlvZPliY3otKblj7flt7Lov4fmnJ/vvIzmmK/lkKbph43mlrDnmbvlvZVcIixcclxuXHRcdFx0XHRcdFx0Y29uZmlybUNvbG9yOiBcIiMwMDBcIixcclxuXHRcdFx0XHRcdFx0c3VjY2VzcyhyZXMpIHtcclxuXHRcdFx0XHRcdFx0XHR1bmkucmVtb3ZlU3RvcmFnZVN5bmMoXCJ1c2VySW5mb1wiKVxyXG5cdFx0XHRcdFx0XHRcdHVuaS5uYXZpZ2F0ZVRvKHtcclxuXHRcdFx0XHRcdFx0XHRcdHVybDogXCIvcGFnZXMvbG9naW4vbG9naW5cIlxyXG5cdFx0XHRcdFx0XHRcdH0pXHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH0pXHJcblx0XHRcdFx0fSBlbHNlIGlmKHJlcy5kYXRhLmNvZGUgPT0gLTIpe1xyXG5cdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7XHJcblx0XHRcdFx0XHRcdHRpdGxlOiBcIua4qemmqOaPkOekulwiLFxyXG5cdFx0XHRcdFx0XHRjb250ZW50OiBcIuW9k+WJjei0puWPt+acquS4ieaWueiupOivge+8jOivt+WJjeW+gOiupOivgVwiLFxyXG5cdFx0XHRcdFx0XHRjb25maXJtQ29sb3I6IFwiIzAwMFwiLFxyXG5cdFx0XHRcdFx0XHRjb25maXJtVGV4dDogXCLliY3lvoBcIixcclxuXHRcdFx0XHRcdFx0c3VjY2VzcyhyZXMpIHtcclxuXHRcdFx0XHRcdFx0XHR1bmkubmF2aWdhdGVUbyh7XHJcblx0XHRcdFx0XHRcdFx0XHR1cmw6IFwiL3BhZ2VzL3VzZXJzL3JlbnpoZW5nL2luZGV4XCJcclxuXHRcdFx0XHRcdFx0XHR9KVxyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9KVxyXG5cdFx0XHRcdH1lbHNlIHtcclxuXHRcdFx0XHRcdHJlamVjdChyZXMuZGF0YSk7XHJcblx0XHRcdFx0XHR1bmkuc2hvd1RvYXN0KHtcclxuXHRcdFx0XHRcdFx0aWNvbjogXCJub25lXCIsXHJcblx0XHRcdFx0XHRcdHRpdGxlOiByZXMuZGF0YS5tc2csXHJcblx0XHRcdFx0XHRcdGR1cmF0aW9uOiAzMDAwXHJcblx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHR9XHJcblxyXG5cdFx0XHR9LFxyXG5cdFx0XHRmYWlsOiAoZXJyKSA9PiB7XHJcblx0XHRcdFx0cmVqZWN0KGVycik7XHJcblx0XHRcdH0sXHJcblx0XHRcdGNvbXBsZXRlOiAoKSA9PiB7XHJcblx0XHRcdFx0Ly9jb25zb2xlLmxvZygn6K+35rGC5a6M5oiQJylcclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblx0fSlcclxufVxyXG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///21\n");
/***/ }),
/* 22 */
/*!**********************!*\
!*** external "Vue" ***!
\**********************/
/*! no static exports found */
/***/ (function(module, exports) {
module.exports = Vue;
/***/ }),
/* 23 */,
/* 24 */,
/* 25 */
/*!**********************************************************************************************************!*\
!*** ./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
}
}
/***/ }),
/* 26 */
/*!****************************************************************************************************!*\
!*** E:/project/sxq/2024-10-16 chunwan/chunwan/main.js?{"page":"pages%2Fpipei%2Fshipin%2Fdetail"} ***!
\****************************************************************************************************/
/*! no exports provided */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var uni_app_style__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uni-app-style */ 1);\n/* harmony import */ var uni_app_style__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(uni_app_style__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var uni_polyfill__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! uni-polyfill */ 4);\n/* harmony import */ var uni_polyfill__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(uni_polyfill__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _pages_pipei_shipin_detail_nvue_mpType_page__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./pages/pipei/shipin/detail.nvue?mpType=page */ 27);\n\n \n \n \n \n _pages_pipei_shipin_detail_nvue_mpType_page__WEBPACK_IMPORTED_MODULE_2__[\"default\"].mpType = 'page'\n _pages_pipei_shipin_detail_nvue_mpType_page__WEBPACK_IMPORTED_MODULE_2__[\"default\"].route = 'pages/pipei/shipin/detail'\n _pages_pipei_shipin_detail_nvue_mpType_page__WEBPACK_IMPORTED_MODULE_2__[\"default\"].el = '#root'\n new Vue(_pages_pipei_shipin_detail_nvue_mpType_page__WEBPACK_IMPORTED_MODULE_2__[\"default\"])\n //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBRUEsUUFBOEI7QUFDOUIsUUFBNkI7QUFDN0IsUUFBc0U7QUFDdEUsUUFBUSxtRkFBRztBQUNYLFFBQVEsbUZBQUc7QUFDWCxRQUFRLG1GQUFHO0FBQ1gsZ0JBQWdCLG1GQUFHIiwiZmlsZSI6IjI2LmpzIiwic291cmNlc0NvbnRlbnQiOlsiXG4gICAgICAgIFxuICAgICAgICBpbXBvcnQgJ3VuaS1hcHAtc3R5bGUnXG4gICAgICAgIGltcG9ydCAndW5pLXBvbHlmaWxsJ1xuICAgICAgICBpbXBvcnQgQXBwIGZyb20gJy4vcGFnZXMvcGlwZWkvc2hpcGluL2RldGFpbC5udnVlP21wVHlwZT1wYWdlJ1xuICAgICAgICBBcHAubXBUeXBlID0gJ3BhZ2UnXG4gICAgICAgIEFwcC5yb3V0ZSA9ICdwYWdlcy9waXBlaS9zaGlwaW4vZGV0YWlsJ1xuICAgICAgICBBcHAuZWwgPSAnI3Jvb3QnXG4gICAgICAgIG5ldyBWdWUoQXBwKVxuICAgICAgICAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///26\n");
/***/ }),
/* 27 */
/*!********************************************************************************************!*\
!*** E:/project/sxq/2024-10-16 chunwan/chunwan/pages/pipei/shipin/detail.nvue?mpType=page ***!
\********************************************************************************************/
/*! no static exports found */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _detail_nvue_vue_type_template_id_705003ec_mpType_page__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./detail.nvue?vue&type=template&id=705003ec&mpType=page */ 28);\n/* harmony import */ var _detail_nvue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./detail.nvue?vue&type=script&lang=js&mpType=page */ 30);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _detail_nvue_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 _detail_nvue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js */ 25);\n\nvar renderjs\n\n\nfunction injectStyles (context) {\n \n if(!this.options.style){\n this.options.style = {}\n }\n if(Vue.prototype.__merge_style && Vue.prototype.__$appStyle__){\n Vue.prototype.__merge_style(Vue.prototype.__$appStyle__, this.options.style)\n }\n if(Vue.prototype.__merge_style){\n Vue.prototype.__merge_style(__webpack_require__(/*! ./detail.nvue?vue&type=style&index=0&lang=scss&mpType=page */ 57).default, this.options.style)\n }else{\n Object.assign(this.options.style,__webpack_require__(/*! ./detail.nvue?vue&type=style&index=0&lang=scss&mpType=page */ 57).default)\n }\n\n}\n\n/* normalize component */\n\nvar component = Object(_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n _detail_nvue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _detail_nvue_vue_type_template_id_705003ec_mpType_page__WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n _detail_nvue_vue_type_template_id_705003ec_mpType_page__WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n false,\n null,\n null,\n \"cb7d6c30\",\n false,\n _detail_nvue_vue_type_template_id_705003ec_mpType_page__WEBPACK_IMPORTED_MODULE_0__[\"components\"],\n renderjs\n)\n\ninjectStyles.call(component)\ncomponent.options.__file = \"pages/pipei/shipin/detail.nvue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBK0g7QUFDL0g7QUFDc0U7QUFDTDtBQUNqRTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRDQUE0QyxtQkFBTyxDQUFDLG9FQUE0RDtBQUNoSCxhQUFhO0FBQ2IsaURBQWlELG1CQUFPLENBQUMsb0VBQTREO0FBQ3JIOztBQUVBOztBQUVBO0FBQ29NO0FBQ3BNLGdCQUFnQiwyTUFBVTtBQUMxQixFQUFFLHdGQUFNO0FBQ1IsRUFBRSw2RkFBTTtBQUNSLEVBQUUsc0dBQWU7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsaUdBQVU7QUFDWjtBQUNBOztBQUVBO0FBQ0E7QUFDZSxnRiIsImZpbGUiOiIyNy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zLCByZWN5Y2xhYmxlUmVuZGVyLCBjb21wb25lbnRzIH0gZnJvbSBcIi4vZGV0YWlsLm52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NzA1MDAzZWMmbXBUeXBlPXBhZ2VcIlxudmFyIHJlbmRlcmpzXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL2RldGFpbC5udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJm1wVHlwZT1wYWdlXCJcbmV4cG9ydCAqIGZyb20gXCIuL2RldGFpbC5udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJm1wVHlwZT1wYWdlXCJcbmZ1bmN0aW9uIGluamVjdFN0eWxlcyAoY29udGV4dCkge1xuICBcbiAgaWYoIXRoaXMub3B0aW9ucy5zdHlsZSl7XG4gICAgICAgICAgdGhpcy5vcHRpb25zLnN0eWxlID0ge31cbiAgICAgIH1cbiAgICAgIGlmKFZ1ZS5wcm90b3R5cGUuX19tZXJnZV9zdHlsZSAmJiBWdWUucHJvdG90eXBlLl9fJGFwcFN0eWxlX18pe1xuICAgICAgICBWdWUucHJvdG90eXBlLl9fbWVyZ2Vfc3R5bGUoVnVlLnByb3RvdHlwZS5fXyRhcHBTdHlsZV9fLCB0aGlzLm9wdGlvbnMuc3R5bGUpXG4gICAgICB9XG4gICAgICBpZihWdWUucHJvdG90eXBlLl9fbWVyZ2Vfc3R5bGUpe1xuICAgICAgICAgICAgICAgIFZ1ZS5wcm90b3R5cGUuX19tZXJnZV9zdHlsZShyZXF1aXJlKFwiLi9kZXRhaWwubnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmxhbmc9c2NzcyZtcFR5cGU9cGFnZVwiKS5kZWZhdWx0LCB0aGlzLm9wdGlvbnMuc3R5bGUpXG4gICAgICAgICAgICB9ZWxzZXtcbiAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMub3B0aW9ucy5zdHlsZSxyZXF1aXJlKFwiLi9kZXRhaWwubnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmxhbmc9c2NzcyZtcFR5cGU9cGFnZVwiKS5kZWZhdWx0KVxuICAgICAgICAgICAgfVxuXG59XG5cbi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi9cbmltcG9ydCBub3JtYWxpemVyIGZyb20gXCIhQzpcXFxcVXNlcnNcXFxcQWRtaW5pc3RyYXRvclxcXFxEZXNrdG9wXFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcdnVlLWxvYWRlclxcXFxsaWJcXFxccnVudGltZVxcXFxjb21wb25lbnROb3JtYWxpemVyLmpzXCJcbnZhciBjb21wb25lbnQgPSBub3JtYWxpemVyKFxuICBzY3JpcHQsXG4gIHJlbmRlcixcbiAgc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgXCJjYjdkNmMzMFwiLFxuICBmYWxzZSxcbiAgY29tcG9uZW50cyxcbiAgcmVuZGVyanNcbilcblxuaW5qZWN0U3R5bGVzLmNhbGwoY29tcG9uZW50KVxuY29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCJwYWdlcy9waXBlaS9zaGlwaW4vZGV0YWlsLm52dWVcIlxuZXhwb3J0IGRlZmF1bHQgY29tcG9uZW50LmV4cG9ydHMiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///27\n");
/***/ }),
/* 28 */
/*!**************************************************************************************************************************!*\
!*** E:/project/sxq/2024-10-16 chunwan/chunwan/pages/pipei/shipin/detail.nvue?vue&type=template&id=705003ec&mpType=page ***!
\**************************************************************************************************************************/
/*! exports provided: render, staticRenderFns, recyclableRender, components */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_hbuilderx_packages_webpack_uni_nvue_loader_lib_template_js_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_0_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_detail_nvue_vue_type_template_id_705003ec_mpType_page__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-hbuilderx/packages/webpack-uni-nvue-loader/lib/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/webpack-preprocess-loader??ref--8-0!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./detail.nvue?vue&type=template&id=705003ec&mpType=page */ 29);
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_hbuilderx_packages_webpack_uni_nvue_loader_lib_template_js_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_0_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_detail_nvue_vue_type_template_id_705003ec_mpType_page__WEBPACK_IMPORTED_MODULE_0__["render"]; });
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_hbuilderx_packages_webpack_uni_nvue_loader_lib_template_js_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_0_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_detail_nvue_vue_type_template_id_705003ec_mpType_page__WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; });
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return _C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_hbuilderx_packages_webpack_uni_nvue_loader_lib_template_js_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_0_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_detail_nvue_vue_type_template_id_705003ec_mpType_page__WEBPACK_IMPORTED_MODULE_0__["recyclableRender"]; });
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "components", function() { return _C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_hbuilderx_packages_webpack_uni_nvue_loader_lib_template_js_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_0_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_detail_nvue_vue_type_template_id_705003ec_mpType_page__WEBPACK_IMPORTED_MODULE_0__["components"]; });
/***/ }),
/* 29 */
/*!*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-hbuilderx/packages/webpack-uni-nvue-loader/lib/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/webpack-preprocess-loader??ref--8-0!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!E:/project/sxq/2024-10-16 chunwan/chunwan/pages/pipei/shipin/detail.nvue?vue&type=template&id=705003ec&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(
"scroll-view",
{
staticStyle: { flexDirection: "column" },
attrs: {
scrollY: true,
showScrollbar: true,
enableBackToTop: true,
bubble: "true",
},
},
[
_c(
"view",
{
staticClass: ["room"],
style: { width: _vm.winWidth + "px", height: _vm.winHeight + "px" },
},
[
_c(
"view",
{
staticClass: ["room-navbar"],
style: {
width: _vm.winWidth + "px",
height: _vm.statusBarHeight + 44 + "px",
},
},
[
_c(
"view",
{
staticClass: ["navbar"],
style: {
width: _vm.winWidth + "px",
"margin-top": _vm.statusBarHeight + "px",
},
},
[
_c(
"view",
{
staticClass: ["back"],
style: { top: _vm.statusBarHeight + "px" },
on: {
click: function ($event) {
_vm.onBack()
},
},
},
[
_c("u-image", {
staticClass: ["img"],
attrs: { src: "/static/arrow-left.png" },
}),
],
1
),
_c(
"view",
{
staticClass: ["title"],
style: { width: _vm.winWidth + "px" },
},
[
_c(
"u-text",
{
staticClass: ["txt"],
appendAsTree: true,
attrs: { append: "tree" },
},
[_vm._v(_vm._s(_vm.title))]
),
]
),
]
),
]
),
_vm.type == 2 || _vm.type == 4
? _c("view", [
_vm.isOpenSocket == false
? _c("view", { staticClass: ["room-hd"] }, [
_vm.isToggle
? _c(
"view",
{ staticClass: ["a"] },
[
_c("zego-local-view", {
staticClass: ["video-view"],
style: {
width: _vm.winWidth + "px",
height: _vm.winHeight + "px",
},
}),
_c("zego-remote-view", {
staticClass: ["shitu"],
style: { top: _vm.statusBarHeight + 60 + "px" },
attrs: { streamID: _vm.sellerStreamId },
}),
],
1
)
: _c(
"view",
{ staticClass: ["a"] },
[
_c("zego-remote-view", {
staticClass: ["video-view"],
style: {
width: _vm.winWidth + "px",
height: _vm.winHeight + "px",
},
attrs: { streamID: _vm.sellerStreamId },
}),
_c("zego-local-view", {
staticClass: ["shitu"],
style: { top: _vm.statusBarHeight + 60 + "px" },
}),
],
1
),
])
: _vm._e(),
])
: _vm._e(),
_vm.isOpenSocket
? _c(
"view",
{
staticClass: ["room-bd"],
style: {
width: _vm.winWidth + "px",
height: _vm.winHeight + "px",
},
},
[
_c("u-image", {
staticClass: ["pic"],
style: {
width: _vm.winWidth + "px",
height: _vm.winHeight + "px",
},
attrs: { src: "/static/yuyin-bg.png" },
}),
_c("view", { staticClass: ["dian-on"] }, [
_c(
"view",
{ staticClass: ["info"] },
[
_c("u-image", {
staticClass: ["avatar"],
attrs: {
src: _vm.userOtherInfo.faceImage
? _vm.userOtherInfo.faceImage
: _vm.userOtherInfo.img,
},
}),
_c("view", { staticClass: ["name"] }, [
_c(
"u-text",
{
staticClass: ["t"],
appendAsTree: true,
attrs: { append: "tree" },
},
[_vm._v(_vm._s(_vm.userOtherInfo.nickname))]
),
]),
_c("view", { staticClass: ["txt"] }, [
_c(
"u-text",
{
staticClass: ["t"],
appendAsTree: true,
attrs: { append: "tree" },
},
[
_vm._v(
_vm._s(_vm.userOtherInfo.age) +
"岁/" +
_vm._s(_vm.userOtherInfo.height)
),
]
),
]),
],
1
),
_c("view", { staticClass: ["tag"] }, [
_c("view", { staticClass: ["titles"] }, [
_c(
"u-text",
{
staticClass: ["t"],
appendAsTree: true,
attrs: { append: "tree" },
},
[_vm._v("个性签名:")]
),
]),
_c("view", { staticClass: ["descs"] }, [
_c(
"u-text",
{
staticClass: ["t"],
appendAsTree: true,
attrs: { append: "tree" },
},
[_vm._v(_vm._s(_vm.userOtherInfo.declaration))]
),
]),
]),
]),
],
1
)
: _vm._e(),
_vm.type == 1 || _vm.type == 3
? _c(
"view",
{
staticClass: ["room-fd"],
style: { width: _vm.winWidth + "px" },
},
[
_c("view", { staticClass: ["item"] }, [
_vm.isJieshou == true
? _c(
"view",
{
staticClass: ["pic"],
on: {
click: function ($event) {
_vm.toggleYuyin()
},
},
},
[
_vm.isYuyin
? _c("u-image", {
staticClass: ["pimg"],
attrs: { src: "/static/yuyin-01.png" },
})
: _c("u-image", {
staticClass: ["pimg"],
attrs: { src: "/static/yuyin-01-on.png" },
}),
],
1
)
: _vm._e(),
_vm.isJieshou == true
? _c("view", { staticClass: ["txt"] }, [
_c(
"u-text",
{
staticClass: ["t"],
appendAsTree: true,
attrs: { append: "tree" },
},
[_vm._v(_vm._s(_vm.isYuyin ? "开启" : "关闭"))]
),
])
: _vm._e(),
]),
_vm.isJieshou
? _c("view", { staticClass: ["item"] }, [
_c(
"view",
{ staticClass: ["pic"] },
[
_c("u-image", {
staticClass: ["pimg"],
attrs: { src: "/static/yuyin-02.png" },
on: {
click: function ($event) {
_vm.toGuaduan()
},
},
}),
],
1
),
_c("view", { staticClass: ["txt"] }, [
_c(
"u-text",
{
staticClass: ["t"],
appendAsTree: true,
attrs: { append: "tree" },
},
[_vm._v("挂断")]
),
]),
])
: _vm._e(),
_vm.isJieshou == false
? [
_c("view", { staticClass: ["item"] }, [
_c(
"view",
{ staticClass: ["pic"] },
[
_c("u-image", {
staticClass: ["pimg"],
attrs: { src: "/static/yuyin-02.png" },
on: {
click: function ($event) {
_vm.toGuaduan()
},
},
}),
],
1
),
_c("view", { staticClass: ["txt"] }, [
_c(
"u-text",
{
staticClass: ["t"],
appendAsTree: true,
attrs: { append: "tree" },
},
[_vm._v("挂断")]
),
]),
]),
_vm.isStart == false
? _c("view", { staticClass: ["item"] })
: _vm._e(),
_vm.isStart == false
? _c(
"view",
{
staticClass: ["item"],
on: {
click: function ($event) {
_vm.toJieshou1()
},
},
},
[
_c(
"view",
{ staticClass: ["pic"] },
[
_c("u-image", {
staticClass: ["pimg"],
attrs: { src: "/static/yuyin-05.png" },
}),
],
1
),
_c("view", { staticClass: ["txt"] }, [
_c(
"u-text",
{
staticClass: ["t"],
appendAsTree: true,
attrs: { append: "tree" },
},
[
_vm._v(
_vm._s(_vm.isStart ? "等待" : "接受")
),
]
),
]),
]
)
: _vm._e(),
]
: _vm._e(),
_c("view", { staticClass: ["item"] }, [
_vm.isJieshou == true
? _c(
"view",
{
staticClass: ["pic"],
on: {
click: function ($event) {
_vm.toggleYangsheng()
},
},
},
[
_vm.isYangshengqi
? _c("u-image", {
staticClass: ["pimg"],
attrs: { src: "/static/yuyin-03.png" },
})
: _c("u-image", {
staticClass: ["pimg"],
attrs: { src: "/static/yuyin-03-on.png" },
}),
],
1
)
: _vm._e(),
_vm.isJieshou == true
? _c("view", { staticClass: ["txt"] }, [
_c(
"u-text",
{
staticClass: ["t"],
appendAsTree: true,
attrs: { append: "tree" },
},
[
_vm._v(
_vm._s(_vm.isYangshengqi ? "开启" : "关闭")
),
]
),
])
: _vm._e(),
]),
],
2
)
: _vm._e(),
_vm.type == 2 || _vm.type == 4
? _c(
"view",
{
staticClass: ["room-fd"],
style: { width: _vm.winWidth + "px" },
},
[
_vm.isJieshou
? _c("view", { staticClass: ["item"] }, [
_vm.isJieshou == true
? _c(
"view",
{
staticClass: ["pic"],
on: {
click: function ($event) {
_vm.toggleYuyin()
},
},
},
[
_vm.isYuyin
? _c("u-image", {
staticClass: ["pimg"],
attrs: { src: "/static/yuyin-01.png" },
})
: _c("u-image", {
staticClass: ["pimg"],
attrs: { src: "/static/yuyin-01-on.png" },
}),
],
1
)
: _vm._e(),
_c("view", { staticClass: ["txt"] }, [
_c(
"u-text",
{
staticClass: ["t"],
appendAsTree: true,
attrs: { append: "tree" },
},
[_vm._v(_vm._s(_vm.isYuyin ? "开启" : "关闭"))]
),
]),
])
: _vm._e(),
_vm.isJieshou
? _c("view", { staticClass: ["item"] }, [
_c(
"view",
{
staticClass: ["pic"],
on: {
click: function ($event) {
_vm.toggleYangsheng()
},
},
},
[
_vm.isYangshengqi
? _c("u-image", {
staticClass: ["pimg"],
attrs: { src: "/static/yuyin-03.png" },
})
: _c("u-image", {
staticClass: ["pimg"],
attrs: { src: "/static/yuyin-03-on.png" },
}),
],
1
),
_c("view", { staticClass: ["txt"] }, [
_c(
"u-text",
{
staticClass: ["t"],
appendAsTree: true,
attrs: { append: "tree" },
},
[
_vm._v(
_vm._s(_vm.isYangshengqi ? "开启" : "关闭")
),
]
),
]),
])
: _vm._e(),
_vm.isJieshou
? _c("view", { staticClass: ["item"] }, [
_vm.isJieshou == true
? _c(
"view",
{
staticClass: ["pic"],
on: {
click: function ($event) {
_vm.toggleShexiang()
},
},
},
[
_vm.isShexiang
? _c("u-image", {
staticClass: ["pimg"],
attrs: { src: "/static/yuyin-04.png" },
})
: _c("u-image", {
staticClass: ["pimg"],
attrs: { src: "/static/yuyin-04-on.png" },
}),
],
1
)
: _vm._e(),
_c("view", { staticClass: ["txt"] }, [
_c(
"u-text",
{
staticClass: ["t"],
appendAsTree: true,
attrs: { append: "tree" },
},
[_vm._v(_vm._s(_vm.isShexiang ? "开启" : "关闭"))]
),
]),
])
: _vm._e(),
_vm.isJieshou == false
? [
_c("view", { staticClass: ["item"] }, [
_c(
"view",
{ staticClass: ["pic"] },
[
_c("u-image", {
staticClass: ["pimg"],
attrs: { src: "/static/yuyin-02.png" },
on: {
click: function ($event) {
_vm.toGuaduan()
},
},
}),
],
1
),
_c("view", { staticClass: ["txt"] }, [
_c(
"u-text",
{
staticClass: ["t"],
appendAsTree: true,
attrs: { append: "tree" },
},
[_vm._v("挂断")]
),
]),
]),
_vm.isStart == false
? _c(
"view",
{
staticClass: ["item"],
on: {
click: function ($event) {
_vm.toJieshou1()
},
},
},
[
_c(
"view",
{ staticClass: ["pic"] },
[
_c("u-image", {
staticClass: ["pimg"],
attrs: { src: "/static/yuyin-05.png" },
}),
],
1
),
_c("view", { staticClass: ["txt"] }, [
_c(
"u-text",
{
staticClass: ["t"],
appendAsTree: true,
attrs: { append: "tree" },
},
[
_vm._v(
_vm._s(_vm.isStart ? "等待" : "接受")
),
]
),
]),
]
)
: _vm._e(),
]
: _vm._e(),
],
2
)
: _vm._e(),
_vm.isJieshou
? [
_vm.type == 2 || _vm.type == 4
? _c(
"view",
{
staticClass: ["room-fd1"],
style: { width: _vm.winWidth + "px" },
},
[
_c(
"view",
{ staticClass: ["items"] },
[
_c(
"view",
{ staticClass: ["pic"] },
[
_c("u-image", {
staticClass: ["pimg"],
attrs: { src: "/static/yuyin-02.png" },
on: {
click: function ($event) {
_vm.toGuaduan()
},
},
}),
],
1
),
_c("u-image", {
staticClass: ["off"],
attrs: { src: "/static/yuyin-off.png" },
on: {
click: function ($event) {
_vm.toggleHuamian()
},
},
}),
],
1
),
]
)
: _vm._e(),
]
: _vm._e(),
],
2
),
]
)
}
var recyclableRender = false
var staticRenderFns = []
render._withStripped = true
/***/ }),
/* 30 */
/*!********************************************************************************************************************!*\
!*** E:/project/sxq/2024-10-16 chunwan/chunwan/pages/pipei/shipin/detail.nvue?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 _C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_ref_5_0_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_5_1_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_detail_nvue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!./node_modules/babel-loader/lib??ref--5-0!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--5-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./detail.nvue?vue&type=script&lang=js&mpType=page */ 31);\n/* harmony import */ var _C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_ref_5_0_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_5_1_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_detail_nvue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_ref_5_0_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_5_1_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_detail_nvue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_ref_5_0_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_5_1_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_detail_nvue_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 _C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_ref_5_0_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_5_1_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_detail_nvue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_ref_5_0_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_5_1_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_detail_nvue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0___default.a); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTZnQixDQUFnQixnakJBQUcsRUFBQyIsImZpbGUiOiIzMC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb2QgZnJvbSBcIi0hQzpcXFxcVXNlcnNcXFxcQWRtaW5pc3RyYXRvclxcXFxEZXNrdG9wXFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXGJhYmVsLWxvYWRlclxcXFxsaWJcXFxcaW5kZXguanM/P3JlZi0tNS0wIUM6XFxcXFVzZXJzXFxcXEFkbWluaXN0cmF0b3JcXFxcRGVza3RvcFxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHdlYnBhY2stcHJlcHJvY2Vzcy1sb2FkZXJcXFxcaW5kZXguanM/P3JlZi0tNS0xIUM6XFxcXFVzZXJzXFxcXEFkbWluaXN0cmF0b3JcXFxcRGVza3RvcFxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHZ1ZS1sb2FkZXJcXFxcbGliXFxcXGluZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9kZXRhaWwubnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZtcFR5cGU9cGFnZVwiOyBleHBvcnQgZGVmYXVsdCBtb2Q7IGV4cG9ydCAqIGZyb20gXCItIUM6XFxcXFVzZXJzXFxcXEFkbWluaXN0cmF0b3JcXFxcRGVza3RvcFxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxiYWJlbC1sb2FkZXJcXFxcbGliXFxcXGluZGV4LmpzPz9yZWYtLTUtMCFDOlxcXFxVc2Vyc1xcXFxBZG1pbmlzdHJhdG9yXFxcXERlc2t0b3BcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx3ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyXFxcXGluZGV4LmpzPz9yZWYtLTUtMSFDOlxcXFxVc2Vyc1xcXFxBZG1pbmlzdHJhdG9yXFxcXERlc2t0b3BcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx2dWUtbG9hZGVyXFxcXGxpYlxcXFxpbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vZGV0YWlsLm52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmbXBUeXBlPXBhZ2VcIiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///30\n");
/***/ }),
/* 31 */
/*!***********************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib??ref--5-0!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--5-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!E:/project/sxq/2024-10-16 chunwan/chunwan/pages/pipei/shipin/detail.nvue?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 */ 11);\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _regenerator = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/regenerator */ 12));\nvar _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ 15));\nvar _index = _interopRequireDefault(__webpack_require__(/*! @/api/index.js */ 17));\nvar _permission = _interopRequireDefault(__webpack_require__(/*! @/js_sdk/wa-permission/permission.js */ 32));\nvar _ZegoExpressEngine = _interopRequireDefault(__webpack_require__(/*! @/uni_modules/zego-ZegoExpressUniApp-JS/components/zego-ZegoExpressUniApp-JS/lib/ZegoExpressEngine */ 33));\nvar _ZegoRemoteView = _interopRequireDefault(__webpack_require__(/*! @/uni_modules/zego-ZegoExpressUniApp-JS/components/zego-ZegoExpressUniApp-JS/zego-view/ZegoRemoteView */ 47));\nvar _ZegoLocalView = _interopRequireDefault(__webpack_require__(/*! @/uni_modules/zego-ZegoExpressUniApp-JS/components/zego-ZegoExpressUniApp-JS/zego-view/ZegoLocalView */ 52));\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//\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//\n//\n//\n//\n//\n//\n//\n//\n//\n\nvar timer = null;\nvar roomConfig = {};\nroomConfig.isUserStatusNotify = true;\nvar profile = {\n appID: 267111980,\n appSign: 'afcaa90a7750ee556e450ca62287c5f9a362e9ed711789717cda0e18f088858e',\n scenario: 0\n};\nvar _default = {\n components: {\n ZegoLocalView: _ZegoLocalView.default,\n ZegoRemoteView: _ZegoRemoteView.default\n },\n data: function data() {\n return {\n isOpenSocket: true,\n isYuyin: true,\n isGuaduan: true,\n isYangshengqi: true,\n isShexiang: true,\n isJieshou: true,\n isToggle: true,\n winWidth: 0,\n winHeight: 0,\n userInfo: {},\n playStreamId: \"\",\n title: \"\",\n count: 0,\n balanceInfo: {},\n userOtherInfo: {},\n background: {\n // 导航栏背景图\n background: 'url(https://api.lyiyuan.cn/profile/upload/static/yuyin-bg.png) center top no-repeat',\n // 还可以设置背景图size属性\n backgroundSize: '100 auto'\n },\n engine: null,\n roomId: \"\",\n type: 2,\n statusBarHeight: 0,\n sellerStreamId: \"\",\n viewModeIndex: 0,\n isCamera: true,\n isStart: true,\n toIsBack: true\n };\n },\n onLoad: function onLoad(o) {\n __f__(\"log\", o, \" at pages/pipei/shipin/detail.nvue:202\");\n this.id = o.id;\n this.type = o.type;\n this.title = this.type == 1 || this.type == 3 ? \"语音通话\" : \"视频通话\";\n this.isStart = this.type == 3 || this.type == 4 ? o.fid ? false : true : true;\n this.isShexiang = this.type == 2 || this.type == 4 ? true : false;\n this.isJieshou = o.type <= 2 ? true : false;\n this.statusBarHeight = uni.getSystemInfoSync().statusBarHeight;\n this.winWidth = uni.getSystemInfoSync().windowWidth;\n this.winHeight = uni.getSystemInfoSync().windowHeight;\n },\n onReady: function onReady() {\n var _this = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {\n var that, res, res1;\n return _regenerator.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n that = _this;\n uni.$on(\"watchEvent\", function (obj) {\n __f__(\"log\", obj, \" at pages/pipei/shipin/detail.nvue:216\");\n if (obj.topic == 'message') {\n if (obj.type == 12) {\n if (uni.getStorageSync(\"userInfo\").id == obj.sellerId) {\n that.isGuaduan = false;\n that.toGuaduan(1);\n }\n }\n }\n });\n uni.$on(\"toJieshouYinship\", function (obj) {\n __f__(\"log\", \"toJieshouYinship\", obj, \" at pages/pipei/shipin/detail.nvue:228\");\n if (obj.topic == 'message') {\n if (obj.type == 20) {\n if (uni.getStorageSync(\"userInfo\").id == obj.sellerId) {\n that.toJieshou();\n }\n if (that.type == 1 || that.type == 3) {\n that.isOpenSocket = true;\n } else {\n that.isOpenSocket = false;\n }\n __f__(\"log\", \"that.type\", that.type, \" at pages/pipei/shipin/detail.nvue:239\");\n }\n }\n });\n if (!(uni.getSystemInfoSync().platform === \"android\")) {\n _context.next = 13;\n break;\n }\n _context.next = 6;\n return _permission.default.requestAndroidPermission(\"android.permission.RECORD_AUDIO\");\n case 6:\n res = _context.sent;\n _context.next = 9;\n return _permission.default.requestAndroidPermission(\"android.permission.CAMERA\");\n case 9:\n res1 = _context.sent;\n if (res == 1 && res1 == 1) {\n if (_this.type <= 2) {\n _this.toPermission();\n } else {\n _this.getUserInfo(1);\n }\n }\n _this.getOtherUserInfo();\n return _context.abrupt(\"return\");\n case 13:\n if (_this.type <= 2) {\n _this.toPermission();\n } else {\n _this.getUserInfo(1);\n }\n _this.getOtherUserInfo();\n case 15:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n }))();\n },\n methods: {\n qiehuan: function qiehuan() {\n this.isToggle = !this.isToggle;\n __f__(\"log\", this.isToggle, \" at pages/pipei/shipin/detail.nvue:273\");\n },\n toJieshou1: function toJieshou1() {\n uni.$emit(\"jieshouYinship\", {\n \"userId\": uni.getStorageSync(\"userInfo\").id,\n sellerId: this.id,\n type: 20,\n \"topic\": \"message\"\n });\n if (this.isStart == false) {\n this.toJieshou();\n }\n },\n onBack: function onBack() {\n var that = this;\n uni.showModal({\n title: \"温馨提示\",\n content: \"是否要退出房间?\",\n confirmColor: \"#000000\",\n success: function success(res) {\n if (res.confirm) {\n that.isGuaduan = false;\n that.toGuaduan();\n }\n }\n });\n },\n toGuaduan: function toGuaduan(type) {\n var _this$engine, _this$engine2, _this$engine3, _this$engine4;\n if (type != 1) {\n uni.$emit(\"duanYinship\", {\n \"userId\": uni.getStorageSync(\"userInfo\").id,\n sellerId: this.id,\n type: 12,\n \"topic\": \"message\"\n });\n }\n if (type == 1) {\n uni.$emit(\"showToast\", this.isJieshou);\n }\n this.socialConsumption();\n clearInterval(timer);\n if (this.toIsBack == false) {\n return;\n }\n this.toIsBack = false;\n this.isGuaduan = false;\n /** 停止推流 */\n (_this$engine = this.engine) === null || _this$engine === void 0 ? void 0 : _this$engine.stopPublishingStream();\n /** 停止本地预览 */\n (_this$engine2 = this.engine) === null || _this$engine2 === void 0 ? void 0 : _this$engine2.stopPreview();\n /** 停止拉流 */\n (_this$engine3 = this.engine) === null || _this$engine3 === void 0 ? void 0 : _this$engine3.stopPlayingStream(this.sellerStreamId);\n /** 退出房间 */\n (_this$engine4 = this.engine) === null || _this$engine4 === void 0 ? void 0 : _this$engine4.logoutRoom(this.roomId);\n /** 销毁引擎 */\n _ZegoExpressEngine.default.destroyEngine();\n uni.$off(\"watchEvent\");\n uni.$off(\"toJieshouYinship\");\n uni.navigateBack({\n delta: 1\n });\n },\n toJieshou: function toJieshou() {\n this.toPermission();\n this.$forceUpdate();\n },\n toggleYuyin: function toggleYuyin() {\n this.isYuyin = !this.isYuyin;\n this.engine.muteMicrophone(!this.isYuyin);\n },\n toggleShexiang: function toggleShexiang() {\n this.isShexiang = !this.isShexiang;\n this.engine.enableCamera(this.isShexiang);\n },\n toggleHuamian: function toggleHuamian() {\n this.isCamera = !this.isCamera;\n this.engine.useFrontCamera(this.isCamera);\n },\n toggleYangsheng: function toggleYangsheng() {\n this.isYangshengqi = !this.isYangshengqi;\n this.engine.setAudioRouteToSpeaker(this.isCamera);\n },\n toPermission: function toPermission() {\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 _this2.getUserInfo();\n case 1:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2);\n }))();\n },\n //查询个人信息\n getUserInfo: function getUserInfo(type) {\n var _this3 = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3() {\n var _yield$api$findUserIn, code, data, msg;\n return _regenerator.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n _context3.next = 2;\n return _index.default.findUserInfo({\n userId: uni.getStorageSync(\"userInfo\").id\n });\n case 2:\n _yield$api$findUserIn = _context3.sent;\n code = _yield$api$findUserIn.code;\n data = _yield$api$findUserIn.data;\n msg = _yield$api$findUserIn.msg;\n if (code == 200) {\n _this3.userInfo = data;\n if (type != 1) {\n _this3.userBalance();\n _this3.loginRoom();\n }\n } else {\n uni.showToast({\n title: msg,\n position: \"bottom\",\n icon: \"none\"\n });\n }\n case 7:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3);\n }))();\n },\n //查询taren个人信息\n getOtherUserInfo: function getOtherUserInfo(type) {\n var _this4 = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4() {\n var _yield$api$findOtherU, code, data, msg;\n return _regenerator.default.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n _context4.next = 2;\n return _index.default.findOtherUserInfo({\n userId: uni.getStorageSync(\"userInfo\").id,\n sellerId: _this4.id\n });\n case 2:\n _yield$api$findOtherU = _context4.sent;\n code = _yield$api$findOtherU.code;\n data = _yield$api$findOtherU.data;\n msg = _yield$api$findOtherU.msg;\n if (code == 200) {\n __f__(\"log\", \"getOtherUserInfo\", data, \" at pages/pipei/shipin/detail.nvue:380\");\n _this4.userOtherInfo = data;\n } else {\n uni.showToast({\n title: msg,\n position: \"bottom\",\n icon: \"none\"\n });\n }\n case 7:\n case \"end\":\n return _context4.stop();\n }\n }\n }, _callee4);\n }))();\n },\n loginRoom: function loginRoom() {\n var _this5 = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5() {\n var that, res, beautyParam;\n return _regenerator.default.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n that = _this5;\n _context5.next = 3;\n return _index.default.findZegoToken({\n userId: uni.getStorageSync(\"userInfo\").id,\n sellerId: _this5.id\n });\n case 3:\n res = _context5.sent;\n if (!(res.code == 200)) {\n _context5.next = 38;\n break;\n }\n // 获取token传入\n roomConfig.token = res.data.token;\n _this5.playStreamId = res.data.userStreamId;\n _this5.sellerStreamId = res.data.sellerStreamId;\n _this5.roomId = res.data.roomId;\n __f__(\"log\", \"loginRoom11\", res.data, \" at pages/pipei/shipin/detail.nvue:402\");\n _context5.next = 12;\n return _ZegoExpressEngine.default.createEngineWithProfile(profile);\n case 12:\n _this5.engine = _context5.sent;\n _this5.engine.enableCamera(_this5.isShexiang);\n // 创建美颜环境\n _context5.next = 16;\n return _this5.engine.startEffectsEnv();\n case 16:\n _this5.engine.enableEffectsBeauty(true);\n // 创建美颜参数对象\n beautyParam = {}; // 美白、红润、磨皮、锐化\n beautyParam.whitenIntensity = _this5.userInfo.reserved5;\n beautyParam.rosyIntensity = _this5.userInfo.reserved6;\n beautyParam.smoothIntensity = _this5.userInfo.reserved7;\n beautyParam.sharpenIntensity = _this5.userInfo.reserved8;\n // 设置美颜参数 \n _this5.engine.setEffectsBeautyParam(beautyParam);\n _this5.engine.useFrontCamera(_this5.isCamera);\n // 以下为常用的房间相关回调\n _this5.engine.on('roomStateUpdate', function (roomID, state, errorCode, extendedData) {\n __f__(\"log\", \"roomStateUpdate\", roomID, \" at pages/pipei/shipin/detail.nvue:421\");\n // 房间状态更新回调,登录房间后,当房间连接状态发生变更(如出现房间断开,登录认证失败等情况),SDK会通过该回调通知\n });\n ;\n _this5.engine.on('roomUserUpdate', function (roomID, updateType, userList) {\n // 用户状态更新,登录房间后,当房间内有用户新增或删除时,SDK会通过该回调通知\n __f__(\"log\", \"roomUserUpdate\", roomID, updateType, userList, \" at pages/pipei/shipin/detail.nvue:427\");\n });\n _this5.engine.on('playerStateUpdate', function (roomID, updateType, streamList) {\n __f__(\"log\", \"playerStateUpdate\", roomID, \" at pages/pipei/shipin/detail.nvue:431\");\n // 调用拉流接口成功后,当拉流器状态发生变更,如出现网络中断导致推流异常等情况,SDK在重试拉流的同时,会通过该回调通知\n });\n\n _this5.engine.on('roomStreamUpdate', function (roomID, updateType, streamList) {\n __f__(\"log\", \"roomStreamUpdate\", updateType, streamList, \" at pages/pipei/shipin/detail.nvue:435\");\n // 流状态更新,登录房间后,当房间内有用户新推送或删除音视频流时,SDK会通过该回调通知\n // this.sellerStreamId = streamList[0].streamID;\n });\n // 调用推流接口成功后,当推流器状态发生变更,如出现网络中断导致推流异常等情况,SDK在重试推流的同时,会通过该回调通知\n that.engine.on('publisherStateUpdate', function (streamID, state, errorCode, extendedData) {\n __f__(\"log\", \"publisherStateUpdate\", streamID, \" at pages/pipei/shipin/detail.nvue:441\");\n });\n // 登录房间\n // 开始登录房间\n _this5.engine.loginRoom(res.data.roomId, {\n 'userID': uni.getStorageSync(\"userInfo\").id,\n 'userName': uni.getStorageSync(\"userInfo\").nickname\n }, roomConfig);\n // this.viewModeIndex = ZegoViewMode.AspectFit;\n _this5.engine.startPreview();\n _this5.engine.startPublishingStream(_this5.playStreamId);\n _this5.isJieshou = true;\n clearInterval(timer);\n that.title = that.formatFun(that.count);\n timer = setInterval(function () {\n if (uni.getStorageSync(\"userInfo\").sex == 1) {\n if (that.type == 1) {\n if (that.balanceInfo.voiceCoins * 60 < that.count) {\n clearInterval(timer);\n that.toGuaduan();\n that.title = that.formatFun(that.count);\n return;\n }\n } else if (that.type == 2) {\n if (that.balanceInfo.videoCoins * 60 < that.count) {\n clearInterval(timer);\n that.toGuaduan();\n that.title = that.formatFun(that.count);\n return;\n }\n }\n }\n that.count++;\n that.title = that.formatFun(that.count);\n }, 1000);\n setTimeout(function () {\n _this5.toTuiliu();\n }, 100);\n case 38:\n case \"end\":\n return _context5.stop();\n }\n }\n }, _callee5);\n }))();\n },\n //检查次数\n userBalance: function userBalance() {\n var _this6 = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee6() {\n var _yield$_this6$$api$us, code, data;\n return _regenerator.default.wrap(function _callee6$(_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n _context6.next = 2;\n return _this6.$api.userBalance({\n userId: uni.getStorageSync(\"userInfo\").id\n });\n case 2:\n _yield$_this6$$api$us = _context6.sent;\n code = _yield$_this6$$api$us.code;\n data = _yield$_this6$$api$us.data;\n if (code == 200) {\n _this6.balanceInfo = data;\n }\n case 6:\n case \"end\":\n return _context6.stop();\n }\n }\n }, _callee6);\n }))();\n },\n //结算 type:1.语音 2.视频 3.文字 4图片 5礼物6搭讪\n socialConsumption: function socialConsumption(type) {\n var _this7 = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee7() {\n return _regenerator.default.wrap(function _callee7$(_context7) {\n while (1) {\n switch (_context7.prev = _context7.next) {\n case 0:\n _context7.next = 2;\n return _this7.$api.socialConsumption({\n userId: uni.getStorageSync(\"userInfo\").id,\n sellerId: _this7.id,\n type: _this7.type == 1 || _this7.type == 3 ? 1 : 2,\n duration: _this7.count + 1\n });\n case 2:\n _this7.userBalance();\n case 3:\n case \"end\":\n return _context7.stop();\n }\n }\n }, _callee7);\n }))();\n },\n formatFun: function formatFun(num) {\n var str = \"\",\n h,\n m,\n s;\n h = Math.floor(num / 3600);\n m = Math.floor((num - h * 3600) / 60);\n s = num - h * 3600 - m * 60;\n str = (h <= 9 ? '0' + h : h) + \":\" + (m <= 9 ? '0' + m : m) + \":\" + (s <= 9 ? '0' + s : s);\n return str;\n },\n toTuiliu: function toTuiliu() {\n var that = this;\n __f__(\"log\", \"toTuiliu\", this.sellerStreamId, \" at pages/pipei/shipin/detail.nvue:515\");\n that.engine.startPlayingStream(this.sellerStreamId);\n if (that.type == 1 || that.type == 3) {\n __f__(\"log\", 111, \" at pages/pipei/shipin/detail.nvue:518\");\n that.isOpenSocket = true;\n } else {\n __f__(\"log\", 2222, \" at pages/pipei/shipin/detail.nvue:521\");\n that.isOpenSocket = false;\n }\n __f__(\"log\", \"that.type\", that.type, \" at pages/pipei/shipin/detail.nvue:524\");\n _ZegoExpressEngine.default.instance().on(\"playerStateUpdate\", function (streamID, state, errorCode, extendedData) {\n /** 调用拉流接口成功后,当拉流器状态发生变更,如出现网络中断导致推流异常等情况,SDK在重试拉流的同时,会通过该回调通知 */\n __f__(\"log\", \"playerStateUpdate\", streamID, \" at pages/pipei/shipin/detail.nvue:527\");\n });\n }\n },\n onBackPress: function onBackPress() {\n if (this.isGuaduan) {\n this.toGuaduan();\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 */ 10)[\"default\"]))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vcGFnZXMvcGlwZWkvc2hpcGluL2RldGFpbC5udnVlIl0sIm5hbWVzIjpbInJvb21Db25maWciLCJhcHBJRCIsImFwcFNpZ24iLCJzY2VuYXJpbyIsImNvbXBvbmVudHMiLCJaZWdvTG9jYWxWaWV3IiwiWmVnb1JlbW90ZVZpZXciLCJkYXRhIiwiaXNPcGVuU29ja2V0IiwiaXNZdXlpbiIsImlzR3VhZHVhbiIsImlzWWFuZ3NoZW5ncWkiLCJpc1NoZXhpYW5nIiwiaXNKaWVzaG91IiwiaXNUb2dnbGUiLCJ3aW5XaWR0aCIsIndpbkhlaWdodCIsInVzZXJJbmZvIiwicGxheVN0cmVhbUlkIiwidGl0bGUiLCJjb3VudCIsImJhbGFuY2VJbmZvIiwidXNlck90aGVySW5mbyIsImJhY2tncm91bmQiLCJiYWNrZ3JvdW5kU2l6ZSIsImVuZ2luZSIsInJvb21JZCIsInR5cGUiLCJzdGF0dXNCYXJIZWlnaHQiLCJzZWxsZXJTdHJlYW1JZCIsInZpZXdNb2RlSW5kZXgiLCJpc0NhbWVyYSIsImlzU3RhcnQiLCJ0b0lzQmFjayIsIm9uTG9hZCIsIm9uUmVhZHkiLCJ0aGF0IiwidW5pIiwicGVybWlzaW9uIiwicmVzIiwicmVzMSIsIm1ldGhvZHMiLCJxaWVodWFuIiwidG9KaWVzaG91MSIsInNlbGxlcklkIiwib25CYWNrIiwiY29udGVudCIsImNvbmZpcm1Db2xvciIsInN1Y2Nlc3MiLCJ0b0d1YWR1YW4iLCJjbGVhckludGVydmFsIiwiWmVnb0V4cHJlc3NFbmdpbmUiLCJkZWx0YSIsInRvSmllc2hvdSIsInRvZ2dsZVl1eWluIiwidG9nZ2xlU2hleGlhbmciLCJ0b2dnbGVIdWFtaWFuIiwidG9nZ2xlWWFuZ3NoZW5nIiwidG9QZXJtaXNzaW9uIiwiZ2V0VXNlckluZm8iLCJhcGkiLCJ1c2VySWQiLCJjb2RlIiwibXNnIiwicG9zaXRpb24iLCJpY29uIiwiZ2V0T3RoZXJVc2VySW5mbyIsImxvZ2luUm9vbSIsImJlYXV0eVBhcmFtIiwidGltZXIiLCJzZXRUaW1lb3V0IiwidXNlckJhbGFuY2UiLCJzb2NpYWxDb25zdW1wdGlvbiIsImR1cmF0aW9uIiwiZm9ybWF0RnVuIiwiaCIsIm0iLCJzIiwic3RyIiwidG9UdWlsaXUiLCJvbkJhY2tQcmVzcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBb0pBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFOQTtBQU9BO0FBQ0FBO0FBQ0E7RUFDQUM7RUFDQUM7RUFDQUM7QUFDQTtBQUFBLGVBQ0E7RUFDQUM7SUFDQUM7SUFDQUM7RUFDQTtFQUNBQztJQUNBO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO1FBQ0E7UUFDQUE7UUFDQTtRQUNBQztNQUNBO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO0lBQ0E7RUFDQTtFQUNBQztJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0VBQ0E7RUFDQUM7SUFBQTtJQUFBO01BQUE7TUFBQTtRQUFBO1VBQUE7WUFBQTtjQUNBQztjQUNBQztnQkFDQTtnQkFDQTtrQkFDQTtvQkFDQTtzQkFDQUQ7c0JBQ0FBO29CQUNBO2tCQUNBO2dCQUNBO2NBQ0E7Y0FFQUM7Z0JBQ0E7Z0JBQ0E7a0JBQ0E7b0JBQ0E7c0JBQ0FEO29CQUNBO29CQUNBO3NCQUNBQTtvQkFDQTtzQkFDQUE7b0JBQ0E7b0JBQ0E7a0JBQ0E7Z0JBQ0E7Y0FDQTtjQUFBLE1BRUFDO2dCQUFBO2dCQUFBO2NBQUE7Y0FBQTtjQUFBLE9BQ0FDLDZDQUNBLGtDQUNBO1lBQUE7Y0FGQUM7Y0FBQTtjQUFBLE9BR0FELDZDQUNBLDRCQUNBO1lBQUE7Y0FGQUU7Y0FHQTtnQkFDQTtrQkFDQTtnQkFDQTtrQkFDQTtnQkFDQTtjQUNBO2NBQ0E7Y0FBQTtZQUFBO2NBS0E7Z0JBQ0E7Y0FDQTtnQkFDQTtjQUNBO2NBQ0E7WUFBQTtZQUFBO2NBQUE7VUFBQTtRQUFBO01BQUE7SUFBQTtFQUNBO0VBQ0FDO0lBQ0FDO01BQ0E7TUFDQTtJQUNBO0lBQ0FDO01BQ0FOO1FBQ0E7UUFDQU87UUFDQWpCO1FBQ0E7TUFDQTtNQUNBO1FBQ0E7TUFDQTtJQUNBO0lBQ0FrQjtNQUNBO01BQ0FSO1FBQ0FsQjtRQUNBMkI7UUFDQUM7UUFDQUM7VUFDQTtZQUNBWjtZQUNBQTtVQUNBO1FBQ0E7TUFDQTtJQUNBO0lBQ0FhO01BQUE7TUFDQTtRQUNBWjtVQUNBO1VBQ0FPO1VBQ0FqQjtVQUNBO1FBQ0E7TUFDQTtNQUNBO1FBQ0FVO01BQ0E7TUFDQTtNQUNBYTtNQUNBO1FBQ0E7TUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNBO01BQ0E7TUFDQUM7TUFDQWQ7TUFDQUE7TUFDQUE7UUFDQWU7TUFDQTtJQUNBO0lBQ0FDO01BQ0E7TUFDQTtJQUNBO0lBQ0FDO01BQ0E7TUFDQTtJQUNBO0lBQ0FDO01BQ0E7TUFDQTtJQUNBO0lBQ0FDO01BQ0E7TUFDQTtJQUNBO0lBQ0FDO01BQ0E7TUFDQTtJQUNBO0lBQ0FDO01BQUE7TUFBQTtRQUFBO1VBQUE7WUFBQTtjQUFBO2dCQUNBO2NBQUE7Y0FBQTtnQkFBQTtZQUFBO1VBQUE7UUFBQTtNQUFBO0lBQ0E7SUFDQTtJQUNBQztNQUFBO01BQUE7UUFBQTtRQUFBO1VBQUE7WUFBQTtjQUFBO2dCQUFBO2dCQUFBLE9BQ0FDO2tCQUFBQztnQkFBQTtjQUFBO2dCQUFBO2dCQUFBQztnQkFBQXZEO2dCQUFBd0Q7Z0JBQ0E7a0JBQ0E7a0JBQ0E7b0JBQ0E7b0JBQ0E7a0JBQ0E7Z0JBRUE7a0JBQ0ExQjtvQkFDQWxCO29CQUNBNkM7b0JBQ0FDO2tCQUNBO2dCQUNBO2NBQUE7Y0FBQTtnQkFBQTtZQUFBO1VBQUE7UUFBQTtNQUFBO0lBQ0E7SUFDQTtJQUNBQztNQUFBO01BQUE7UUFBQTtRQUFBO1VBQUE7WUFBQTtjQUFBO2dCQUFBO2dCQUFBLE9BQ0FOO2tCQUFBQztrQkFBQWpCO2dCQUFBO2NBQUE7Z0JBQUE7Z0JBQUFrQjtnQkFBQXZEO2dCQUFBd0Q7Z0JBQ0E7a0JBQ0E7a0JBQ0E7Z0JBQ0E7a0JBQ0ExQjtvQkFDQWxCO29CQUNBNkM7b0JBQ0FDO2tCQUNBO2dCQUNBO2NBQUE7Y0FBQTtnQkFBQTtZQUFBO1VBQUE7UUFBQTtNQUFBO0lBQ0E7SUFDQUU7TUFBQTtNQUFBO1FBQUE7UUFBQTtVQUFBO1lBQUE7Y0FBQTtnQkFDQS9CO2dCQUFBO2dCQUFBLE9BQ0F3QjtrQkFDQUM7a0JBQ0FqQjtnQkFDQTtjQUFBO2dCQUhBTDtnQkFBQSxNQUlBQTtrQkFBQTtrQkFBQTtnQkFBQTtnQkFDQTtnQkFDQXZDO2dCQUNBO2dCQUNBO2dCQUNBO2dCQUNBO2dCQUFBO2dCQUFBLE9BRUFtRDtjQUFBO2dCQUFBO2dCQUNBO2dCQUNBO2dCQUFBO2dCQUFBLE9BQ0E7Y0FBQTtnQkFDQTtnQkFDQTtnQkFDQWlCLGtCQUNBO2dCQUNBQTtnQkFDQUE7Z0JBQ0FBO2dCQUNBQTtnQkFDQTtnQkFDQTtnQkFDQTtnQkFDQTtnQkFDQTtrQkFDQTtrQkFDQTtnQkFDQTtnQkFBQTtnQkFFQTtrQkFDQTtrQkFDQTtnQkFDQTtnQkFFQTtrQkFDQTtrQkFDQTtnQkFDQTs7Z0JBQ0E7a0JBQ0E7a0JBQ0E7a0JBQ0E7Z0JBQ0E7Z0JBQ0E7Z0JBQ0FoQztrQkFDQTtnQkFHQTtnQkFDQTtnQkFDQTtnQkFDQSx5Q0FDQTtrQkFDQTtrQkFDQTtnQkFDQSxHQUNBcEMsV0FDQTtnQkFDQTtnQkFDQTtnQkFDQTtnQkFDQTtnQkFDQWtEO2dCQUNBZDtnQkFDQWlDO2tCQUNBO29CQUNBO3NCQUNBO3dCQUNBbkI7d0JBQ0FkO3dCQUNBQTt3QkFDQTtzQkFDQTtvQkFDQTtzQkFDQTt3QkFDQWM7d0JBQ0FkO3dCQUNBQTt3QkFDQTtzQkFDQTtvQkFDQTtrQkFDQTtrQkFDQUE7a0JBQ0FBO2dCQUNBO2dCQUNBa0M7a0JBQ0E7Z0JBQ0E7Y0FBQTtjQUFBO2dCQUFBO1lBQUE7VUFBQTtRQUFBO01BQUE7SUFFQTtJQUNBO0lBQ0FDO01BQUE7TUFBQTtRQUFBO1FBQUE7VUFBQTtZQUFBO2NBQUE7Z0JBQUE7Z0JBQUEsT0FDQTtrQkFDQVY7Z0JBQ0E7Y0FBQTtnQkFBQTtnQkFGQUM7Z0JBQUF2RDtnQkFHQTtrQkFDQTtnQkFDQTtjQUFBO2NBQUE7Z0JBQUE7WUFBQTtVQUFBO1FBQUE7TUFBQTtJQUNBO0lBQ0E7SUFDQWlFO01BQUE7TUFBQTtRQUFBO1VBQUE7WUFBQTtjQUFBO2dCQUFBO2dCQUFBLE9BQ0E7a0JBQ0FYO2tCQUNBakI7a0JBQ0FqQjtrQkFDQThDO2dCQUNBO2NBQUE7Z0JBQ0E7Y0FBQTtjQUFBO2dCQUFBO1lBQUE7VUFBQTtRQUFBO01BQUE7SUFDQTtJQUNBQztNQUNBO1FBQUFDO1FBQUFDO1FBQUFDO01BQ0FGO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0E7SUFDQTtJQUNBQztNQUNBO01BQ0E7TUFDQTNDO01BQ0E7UUFDQTtRQUNBQTtNQUNBO1FBQ0E7UUFDQUE7TUFDQTtNQUNBO01BQ0FlO1FBQ0E7UUFDQTtNQUNBO0lBQ0E7RUFDQTtFQUNBNkI7SUFDQTtNQUNBO0lBQ0E7RUFDQTtBQUNBO0FBQUEsMkIiLCJmaWxlIjoiMzEuanMiLCJzb3VyY2VzQ29udGVudCI6WyI8dGVtcGxhdGU+XG5cdDx2aWV3IGNsYXNzPVwicm9vbVwiIDpzdHlsZT1cInsnd2lkdGgnOiB3aW5XaWR0aCsncHgnLCAnaGVpZ2h0Jzogd2luSGVpZ2h0KydweCd9XCI+XG5cdFx0PHZpZXcgY2xhc3M9XCJyb29tLW5hdmJhclwiIDpzdHlsZT1cInsnd2lkdGgnOiB3aW5XaWR0aCsncHgnLCAnaGVpZ2h0JzogKHN0YXR1c0JhckhlaWdodCs0NCkrJ3B4J31cIj5cblx0XHRcdDx2aWV3IGNsYXNzPVwibmF2YmFyXCIgOnN0eWxlPVwieyd3aWR0aCc6IHdpbldpZHRoKydweCcsICdtYXJnaW4tdG9wJzogKHN0YXR1c0JhckhlaWdodCkrJ3B4J31cIj5cblx0XHRcdFx0PHZpZXcgY2xhc3M9XCJiYWNrXCIgQGNsaWNrPVwib25CYWNrKClcIiA6c3R5bGU9XCJ7J3RvcCc6IChzdGF0dXNCYXJIZWlnaHQpKydweCd9XCI+XG5cdFx0XHRcdFx0PGltYWdlIGNsYXNzPVwiaW1nXCIgc3JjPVwiQC9zdGF0aWMvYXJyb3ctbGVmdC5wbmdcIj48L2ltYWdlPlxuXHRcdFx0XHQ8L3ZpZXc+XG5cdFx0XHRcdDx2aWV3IGNsYXNzPVwidGl0bGVcIiA6c3R5bGU9XCJ7J3dpZHRoJzogd2luV2lkdGgrJ3B4J31cIj48dGV4dCBjbGFzcz1cInR4dFwiPnt7dGl0bGV9fTwvdGV4dD48L3ZpZXc+XG5cdFx0XHQ8L3ZpZXc+XG5cdFx0PC92aWV3PlxuXHRcdDx2aWV3IHYtaWY9XCJ0eXBlID09IDIgfHwgdHlwZSA9PSA0XCI+XHJcblx0XHRcdDwhLS0gICBAY2xpY2s9XCJxaWVodWFuKClcIiAtLT5cblx0XHRcdDx2aWV3IGNsYXNzPVwicm9vbS1oZFwiIHYtaWY9XCJpc09wZW5Tb2NrZXQgPT0gZmFsc2VcIj5cblx0XHRcdFx0PHZpZXcgY2xhc3M9XCJhXCIgdi1pZj1cImlzVG9nZ2xlXCI+XHJcblx0XHRcdFx0XHQ8emVnby1sb2NhbC12aWV3IGNsYXNzPVwidmlkZW8tdmlld1wiIDpzdHlsZT1cInsnd2lkdGgnOiB3aW5XaWR0aCsncHgnLCAnaGVpZ2h0Jzogd2luSGVpZ2h0KydweCd9XCI+PC96ZWdvLWxvY2FsLXZpZXc+XHJcblx0XHRcdFx0XHQ8emVnby1yZW1vdGUtdmlldyAgY2xhc3M9XCJzaGl0dVwiIDpzdHJlYW1JRD1cInNlbGxlclN0cmVhbUlkXCIgOnN0eWxlPVwieyd0b3AnOiAoc3RhdHVzQmFySGVpZ2h0KzYwKSsncHgnfVwiPjwvemVnby1yZW1vdGUtdmlldz5cclxuXHRcdFx0XHQ8L3ZpZXc+XG5cdFx0XHRcdDx2aWV3IGNsYXNzPVwiYVwiIHYtZWxzZT5cblx0XHRcdFx0XHQ8emVnby1yZW1vdGUtdmlldyBjbGFzcz1cInZpZGVvLXZpZXdcIiA6c3RyZWFtSUQ9XCJzZWxsZXJTdHJlYW1JZFwiIDpzdHlsZT1cInsnd2lkdGgnOiB3aW5XaWR0aCsncHgnLCAnaGVpZ2h0Jzogd2luSGVpZ2h0KydweCd9XCI+PC96ZWdvLXJlbW90ZS12aWV3PlxuXHRcdFx0XHRcdDx6ZWdvLWxvY2FsLXZpZXcgIGNsYXNzPVwic2hpdHVcIiA6c3R5bGU9XCJ7J3RvcCc6IChzdGF0dXNCYXJIZWlnaHQrNjApKydweCd9XCI+PC96ZWdvLWxvY2FsLXZpZXc+XG5cdFx0XHRcdDwvdmlldz5cblx0XHRcdDwvdmlldz5cblx0XHQ8L3ZpZXc+XG5cdFx0PHZpZXcgY2xhc3M9XCJyb29tLWJkXCIgOnN0eWxlPVwieyd3aWR0aCc6IHdpbldpZHRoKydweCcsICdoZWlnaHQnOiB3aW5IZWlnaHQrJ3B4J31cIiB2LWlmPVwiaXNPcGVuU29ja2V0XCI+XG5cdFx0XHQ8aW1hZ2UgY2xhc3M9XCJwaWNcIiA6c3R5bGU9XCJ7J3dpZHRoJzogd2luV2lkdGgrJ3B4JywgJ2hlaWdodCc6IHdpbkhlaWdodCsncHgnfVwiICBzcmM9XCJAL3N0YXRpYy95dXlpbi1iZy5wbmdcIj48L2ltYWdlPlxyXG5cdFx0XHQ8dmlldyBjbGFzcz1cImRpYW4tb25cIiA+XHJcblx0XHRcdFx0PHZpZXcgY2xhc3M9XCJpbmZvXCI+XHJcblx0XHRcdFx0XHQ8aW1hZ2UgY2xhc3M9XCJhdmF0YXJcIiA6c3JjPVwidXNlck90aGVySW5mby5mYWNlSW1hZ2U/dXNlck90aGVySW5mby5mYWNlSW1hZ2U6dXNlck90aGVySW5mby5pbWdcIj48L2ltYWdlPlxyXG5cdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJuYW1lXCI+PHRleHQgY2xhc3M9XCJ0XCI+e3t1c2VyT3RoZXJJbmZvLm5pY2tuYW1lfX08L3RleHQ+PC92aWV3PlxyXG5cdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJ0eHRcIj48dGV4dCBjbGFzcz1cInRcIj57e3VzZXJPdGhlckluZm8uYWdlfX3lsoEve3t1c2VyT3RoZXJJbmZvLmhlaWdodH19PC90ZXh0Pjwvdmlldz5cclxuXHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0PHZpZXcgY2xhc3M9XCJ0YWdcIj5cclxuXHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwidGl0bGVzXCI+PHRleHQgY2xhc3M9XCJ0XCI+5Liq5oCn562+5ZCN77yaPC90ZXh0Pjwvdmlldz5cclxuXHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiZGVzY3NcIj5cclxuXHRcdFx0XHRcdFx0PHRleHQgY2xhc3M9XCJ0XCI+e3t1c2VyT3RoZXJJbmZvLmRlY2xhcmF0aW9ufX08L3RleHQ+XHJcblx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHQ8L3ZpZXc+XG5cdFx0PC92aWV3PlxuXHRcdDx2aWV3IGNsYXNzPVwicm9vbS1mZFwiIHYtaWY9XCJ0eXBlPT0xIHx8IHR5cGU9PTNcIiA6c3R5bGU9XCJ7J3dpZHRoJzogd2luV2lkdGgrJ3B4J31cIiA+XG5cdFx0XHQ8dmlldyBjbGFzcz1cIml0ZW1cIj5cblx0XHRcdFx0PHZpZXcgY2xhc3M9XCJwaWNcIiBAY2xpY2s9XCJ0b2dnbGVZdXlpbigpXCIgdi1pZj1cImlzSmllc2hvdT09dHJ1ZVwiPlxuXHRcdFx0XHRcdDxpbWFnZSB2LWlmPVwiaXNZdXlpblwiIGNsYXNzPVwicGltZ1wiIHNyYz1cIkAvc3RhdGljL3l1eWluLTAxLnBuZ1wiPjwvaW1hZ2U+XG5cdFx0XHRcdFx0PGltYWdlIHYtZWxzZSBjbGFzcz1cInBpbWdcIiBzcmM9XCJAL3N0YXRpYy95dXlpbi0wMS1vbi5wbmdcIj48L2ltYWdlPlxuXHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0PHZpZXcgY2xhc3M9XCJ0eHRcIiB2LWlmPVwiaXNKaWVzaG91PT10cnVlXCI+XHJcblx0XHRcdFx0XHQ8dGV4dCBjbGFzcz1cInRcIj57e2lzWXV5aW4/J+W8gOWQryc6J+WFs+mXrSd9fTwvdGV4dD5cclxuXHRcdFx0XHQ8L3ZpZXc+XG5cdFx0XHQ8L3ZpZXc+XG5cdFx0XHQ8dmlldyBjbGFzcz1cIml0ZW1cIiB2LWlmPVwiaXNKaWVzaG91XCI+XG5cdFx0XHRcdDx2aWV3IGNsYXNzPVwicGljXCI+XG5cdFx0XHRcdFx0PGltYWdlIEBjbGljaz1cInRvR3VhZHVhbigpXCIgY2xhc3M9XCJwaW1nXCIgc3JjPVwiQC9zdGF0aWMveXV5aW4tMDIucG5nXCI+PC9pbWFnZT5cblx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdDx2aWV3IGNsYXNzPVwidHh0XCI+XHJcblx0XHRcdFx0XHQ8dGV4dCBjbGFzcz1cInRcIj7mjILmlq08L3RleHQ+XHJcblx0XHRcdFx0PC92aWV3PlxuXHRcdFx0PC92aWV3PlxyXG5cdFx0XHQ8dGVtcGxhdGUgdi1pZj1cImlzSmllc2hvdSA9PSBmYWxzZVwiPlxyXG5cdFx0XHRcdDx2aWV3IGNsYXNzPVwiaXRlbVwiPlxyXG5cdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJwaWNcIj5cclxuXHRcdFx0XHRcdFx0PGltYWdlIEBjbGljaz1cInRvR3VhZHVhbigpXCIgY2xhc3M9XCJwaW1nXCIgc3JjPVwiQC9zdGF0aWMveXV5aW4tMDIucG5nXCI+PC9pbWFnZT5cclxuXHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwidHh0XCI+XHJcblx0XHRcdFx0XHRcdDx0ZXh0IGNsYXNzPVwidFwiPuaMguaWrTwvdGV4dD5cclxuXHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0PHZpZXcgY2xhc3M9XCJpdGVtXCIgdi1pZj1cImlzU3RhcnQgPT0gZmFsc2VcIj48L3ZpZXc+XHJcblx0XHRcdFx0PHZpZXcgY2xhc3M9XCJpdGVtXCIgdi1pZj1cImlzU3RhcnQgPT0gZmFsc2VcIiBAY2xpY2s9XCJ0b0ppZXNob3UxKClcIj5cclxuXHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwicGljXCI+XHJcblx0XHRcdFx0XHRcdDxpbWFnZSBjbGFzcz1cInBpbWdcIiBzcmM9XCJAL3N0YXRpYy95dXlpbi0wNS5wbmdcIj48L2ltYWdlPlxyXG5cdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJ0eHRcIj5cclxuXHRcdFx0XHRcdFx0PHRleHQgY2xhc3M9XCJ0XCI+e3tpc1N0YXJ0PyfnrYnlvoUnOifmjqXlj5cnfX08L3RleHQ+XHJcblx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHQ8L3RlbXBsYXRlPlxuXHRcdFx0PHZpZXcgY2xhc3M9XCJpdGVtXCI+XG5cdFx0XHRcdDx2aWV3IGNsYXNzPVwicGljXCIgQGNsaWNrPVwidG9nZ2xlWWFuZ3NoZW5nKClcIiB2LWlmPVwiaXNKaWVzaG91PT10cnVlXCI+XG5cdFx0XHRcdFx0PGltYWdlIGNsYXNzPVwicGltZ1wiIHYtaWY9XCJpc1lhbmdzaGVuZ3FpXCIgc3JjPVwiQC9zdGF0aWMveXV5aW4tMDMucG5nXCI+PC9pbWFnZT5cblx0XHRcdFx0XHQ8aW1hZ2UgY2xhc3M9XCJwaW1nXCIgdi1lbHNlIHNyYz1cIkAvc3RhdGljL3l1eWluLTAzLW9uLnBuZ1wiPjwvaW1hZ2U+XG5cdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHQ8dmlldyBjbGFzcz1cInR4dFwiIHYtaWY9XCJpc0ppZXNob3U9PXRydWVcIj5cclxuXHRcdFx0XHRcdDx0ZXh0IGNsYXNzPVwidFwiPnt7aXNZYW5nc2hlbmdxaT8n5byA5ZCvJzon5YWz6ZetJ319PC90ZXh0PlxyXG5cdFx0XHRcdDwvdmlldz5cblx0XHRcdDwvdmlldz5cblx0XHQ8L3ZpZXc+XG5cdFx0PHZpZXcgY2xhc3M9XCJyb29tLWZkXCIgdi1pZj1cInR5cGU9PTIgfHwgdHlwZT09NFwiIDpzdHlsZT1cInsnd2lkdGgnOiB3aW5XaWR0aCsncHgnfVwiID5cblx0XHRcdDx2aWV3IGNsYXNzPVwiaXRlbVwiIHYtaWY9XCJpc0ppZXNob3VcIj5cblx0XHRcdFx0PHZpZXcgY2xhc3M9XCJwaWNcIiBAY2xpY2s9XCJ0b2dnbGVZdXlpbigpXCIgdi1pZj1cImlzSmllc2hvdT09dHJ1ZVwiPlxuXHRcdFx0XHRcdDxpbWFnZSB2LWlmPVwiaXNZdXlpblwiIGNsYXNzPVwicGltZ1wiIHNyYz1cIkAvc3RhdGljL3l1eWluLTAxLnBuZ1wiPjwvaW1hZ2U+XG5cdFx0XHRcdFx0PGltYWdlIHYtZWxzZSBjbGFzcz1cInBpbWdcIiBzcmM9XCJAL3N0YXRpYy95dXlpbi0wMS1vbi5wbmdcIj48L2ltYWdlPlxuXHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0PHZpZXcgY2xhc3M9XCJ0eHRcIj5cclxuXHRcdFx0XHRcdDx0ZXh0IGNsYXNzPVwidFwiPnt7aXNZdXlpbj8n5byA5ZCvJzon5YWz6ZetJ319PC90ZXh0PlxyXG5cdFx0XHRcdDwvdmlldz5cblx0XHRcdDwvdmlldz5cblx0XHRcdDx2aWV3IGNsYXNzPVwiaXRlbVwiIHYtaWY9XCJpc0ppZXNob3VcIj5cblx0XHRcdFx0PHZpZXcgY2xhc3M9XCJwaWNcIiBAY2xpY2s9XCJ0b2dnbGVZYW5nc2hlbmcoKVwiPlxuXHRcdFx0XHRcdDxpbWFnZSBjbGFzcz1cInBpbWdcIiB2LWlmPVwiaXNZYW5nc2hlbmdxaVwiIHNyYz1cIkAvc3RhdGljL3l1eWluLTAzLnBuZ1wiPjwvaW1hZ2U+XG5cdFx0XHRcdFx0PGltYWdlIGNsYXNzPVwicGltZ1wiIHYtZWxzZSBzcmM9XCJAL3N0YXRpYy95dXlpbi0wMy1vbi5wbmdcIj48L2ltYWdlPlxuXHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0PHZpZXcgY2xhc3M9XCJ0eHRcIj5cclxuXHRcdFx0XHRcdDx0ZXh0IGNsYXNzPVwidFwiPnt7aXNZYW5nc2hlbmdxaT8n5byA5ZCvJzon5YWz6ZetJ319PC90ZXh0PlxyXG5cdFx0XHRcdDwvdmlldz5cblx0XHRcdDwvdmlldz5cblx0XHRcdDx2aWV3IGNsYXNzPVwiaXRlbVwiIHYtaWY9XCJpc0ppZXNob3VcIj5cblx0XHRcdFx0PHZpZXcgY2xhc3M9XCJwaWNcIiBAY2xpY2s9XCJ0b2dnbGVTaGV4aWFuZygpXCIgdi1pZj1cImlzSmllc2hvdT09dHJ1ZVwiPlxuXHRcdFx0XHRcdDxpbWFnZSBjbGFzcz1cInBpbWdcIiB2LWlmPVwiaXNTaGV4aWFuZ1wiIHNyYz1cIkAvc3RhdGljL3l1eWluLTA0LnBuZ1wiPjwvaW1hZ2U+XG5cdFx0XHRcdFx0PGltYWdlIGNsYXNzPVwicGltZ1wiIHYtZWxzZSBzcmM9XCJAL3N0YXRpYy95dXlpbi0wNC1vbi5wbmdcIj48L2ltYWdlPlxuXHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0PHZpZXcgY2xhc3M9XCJ0eHRcIj5cclxuXHRcdFx0XHRcdDx0ZXh0IGNsYXNzPVwidFwiPnt7aXNTaGV4aWFuZz8n5byA5ZCvJzon5YWz6ZetJ319PC90ZXh0PlxyXG5cdFx0XHRcdDwvdmlldz5cblx0XHRcdDwvdmlldz5cclxuXHRcdFx0PHRlbXBsYXRlIHYtaWY9XCJpc0ppZXNob3UgPT0gZmFsc2VcIj5cclxuXHRcdFx0XHQ8dmlldyBjbGFzcz1cIml0ZW1cIj5cclxuXHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwicGljXCI+XHJcblx0XHRcdFx0XHRcdDxpbWFnZSBAY2xpY2s9XCJ0b0d1YWR1YW4oKVwiIGNsYXNzPVwicGltZ1wiIHNyYz1cIkAvc3RhdGljL3l1eWluLTAyLnBuZ1wiPjwvaW1hZ2U+XHJcblx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cInR4dFwiPlxyXG5cdFx0XHRcdFx0XHQ8dGV4dCBjbGFzcz1cInRcIj7mjILmlq08L3RleHQ+XHJcblx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdDx2aWV3IGNsYXNzPVwiaXRlbVwiIHYtaWY9XCJpc1N0YXJ0ID09IGZhbHNlXCIgQGNsaWNrPVwidG9KaWVzaG91MSgpXCI+XHJcblx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cInBpY1wiPlxyXG5cdFx0XHRcdFx0XHQ8aW1hZ2UgY2xhc3M9XCJwaW1nXCIgc3JjPVwiQC9zdGF0aWMveXV5aW4tMDUucG5nXCI+PC9pbWFnZT5cclxuXHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwidHh0XCI+XHJcblx0XHRcdFx0XHRcdDx0ZXh0IGNsYXNzPVwidFwiPnt7aXNTdGFydD8n562J5b6FJzon5o6l5Y+XJ319PC90ZXh0PlxyXG5cdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0PC90ZW1wbGF0ZT5cblx0XHQ8L3ZpZXc+XHJcblx0XHQ8dGVtcGxhdGUgdi1pZj1cImlzSmllc2hvdVwiPlxyXG5cdFx0XHQ8dmlldyBjbGFzcz1cInJvb20tZmQxXCIgdi1pZj1cInR5cGU9PTIgfHwgdHlwZT09NFwiIDpzdHlsZT1cInsnd2lkdGgnOiB3aW5XaWR0aCsncHgnfVwiID5cclxuXHRcdFx0XHQ8dmlldyBjbGFzcz1cIml0ZW1zXCI+XHJcblx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cInBpY1wiPlxyXG5cdFx0XHRcdFx0XHQ8aW1hZ2UgQGNsaWNrPVwidG9HdWFkdWFuKClcIiBjbGFzcz1cInBpbWdcIiBzcmM9XCJAL3N0YXRpYy95dXlpbi0wMi5wbmdcIj48L2ltYWdlPlxyXG5cdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0PGltYWdlIGNsYXNzPVwib2ZmXCIgQGNsaWNrPVwidG9nZ2xlSHVhbWlhbigpXCIgc3JjPVwiQC9zdGF0aWMveXV5aW4tb2ZmLnBuZ1wiPjwvaW1hZ2U+XHJcblx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHQ8L3ZpZXc+XHJcblx0XHQ8L3RlbXBsYXRlPlxuXHQ8L3ZpZXc+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0PlxuXHRsZXQgdGltZXIgPSBudWxsO1xuXHRpbXBvcnQgYXBpIGZyb20gJ0AvYXBpL2luZGV4LmpzJ1xuXHRpbXBvcnQgcGVybWlzaW9uIGZyb20gXCJAL2pzX3Nkay93YS1wZXJtaXNzaW9uL3Blcm1pc3Npb24uanNcIlxuXHQvL+WvvOWFpSBaRUdPIEV4cHJlc3MgU0RLXG5cdGltcG9ydCBaZWdvRXhwcmVzc0VuZ2luZSBmcm9tICdAL3VuaV9tb2R1bGVzL3plZ28tWmVnb0V4cHJlc3NVbmlBcHAtSlMvY29tcG9uZW50cy96ZWdvLVplZ29FeHByZXNzVW5pQXBwLUpTL2xpYi9aZWdvRXhwcmVzc0VuZ2luZSc7XG5cdGltcG9ydCBaZWdvUmVtb3RlVmlldyBmcm9tIFwiQC91bmlfbW9kdWxlcy96ZWdvLVplZ29FeHByZXNzVW5pQXBwLUpTL2NvbXBvbmVudHMvemVnby1aZWdvRXhwcmVzc1VuaUFwcC1KUy96ZWdvLXZpZXcvWmVnb1JlbW90ZVZpZXdcIjtcblx0aW1wb3J0IFplZ29Mb2NhbFZpZXcgZnJvbSBcIkAvdW5pX21vZHVsZXMvemVnby1aZWdvRXhwcmVzc1VuaUFwcC1KUy9jb21wb25lbnRzL3plZ28tWmVnb0V4cHJlc3NVbmlBcHAtSlMvemVnby12aWV3L1plZ29Mb2NhbFZpZXdcIjtcblx0bGV0IHJvb21Db25maWcgPSB7fTtcblx0cm9vbUNvbmZpZy5pc1VzZXJTdGF0dXNOb3RpZnkgPSB0cnVlO1xuXHRjb25zdCBwcm9maWxlID0ge1xuXHRcdGFwcElEIDogMjY3MTExOTgwLFxuXHRcdGFwcFNpZ246ICdhZmNhYTkwYTc3NTBlZTU1NmU0NTBjYTYyMjg3YzVmOWEzNjJlOWVkNzExNzg5NzE3Y2RhMGUxOGYwODg4NThlJyxcblx0XHRzY2VuYXJpbyA6IDBcblx0fTtcblx0ZXhwb3J0IGRlZmF1bHQge1xuXHRcdGNvbXBvbmVudHM6IHtcblx0XHQgICAgWmVnb0xvY2FsVmlldyxcblx0XHQgICAgWmVnb1JlbW90ZVZpZXcsXG5cdFx0fSxcblx0XHRkYXRhKCkge1xuXHRcdFx0cmV0dXJuIHtcclxuXHRcdFx0XHRpc09wZW5Tb2NrZXQ6IHRydWUsXG5cdFx0XHRcdGlzWXV5aW46IHRydWUsXG5cdFx0XHRcdGlzR3VhZHVhbjogdHJ1ZSxcblx0XHRcdFx0aXNZYW5nc2hlbmdxaTogdHJ1ZSxcblx0XHRcdFx0aXNTaGV4aWFuZzogdHJ1ZSxcblx0XHRcdFx0aXNKaWVzaG91OiB0cnVlLFxuXHRcdFx0XHRpc1RvZ2dsZTogdHJ1ZSxcblx0XHRcdFx0d2luV2lkdGg6IDAsXG5cdFx0XHRcdHdpbkhlaWdodDogMCxcblx0XHRcdFx0dXNlckluZm86IHt9LFxuXHRcdFx0XHRwbGF5U3RyZWFtSWQ6IFwiXCIsXG5cdFx0XHRcdHRpdGxlOiBcIlwiLFxuXHRcdFx0XHRjb3VudDogMCxcclxuXHRcdFx0XHRiYWxhbmNlSW5mbzoge30sXHJcblx0XHRcdFx0dXNlck90aGVySW5mbzoge30sXG5cdFx0XHRcdGJhY2tncm91bmQ6IHtcblx0XHRcdFx0XHQvLyDlr7zoiKrmoI/og4zmma/lm75cblx0XHRcdFx0XHRiYWNrZ3JvdW5kOiAndXJsKGh0dHBzOi8vYXBpLmx5aXl1YW4uY24vcHJvZmlsZS91cGxvYWQvc3RhdGljL3l1eWluLWJnLnBuZykgY2VudGVyIHRvcCBuby1yZXBlYXQnLFxuXHRcdFx0XHRcdC8vIOi/mOWPr+S7peiuvue9ruiDjOaZr+WbvnNpemXlsZ7mgKdcblx0XHRcdFx0XHRiYWNrZ3JvdW5kU2l6ZTogJzEwMCBhdXRvJyxcblx0XHRcdFx0fSxcblx0XHRcdFx0ZW5naW5lOiBudWxsLFxuXHRcdFx0XHRyb29tSWQ6IFwiXCIsXG5cdFx0XHRcdHR5cGU6IDIsXG5cdFx0XHRcdHN0YXR1c0JhckhlaWdodDogMCxcblx0XHRcdFx0c2VsbGVyU3RyZWFtSWQ6IFwiXCIsXG5cdFx0XHRcdHZpZXdNb2RlSW5kZXg6IDAsXG5cdFx0XHRcdGlzQ2FtZXJhOiB0cnVlLFxyXG5cdFx0XHRcdGlzU3RhcnQ6IHRydWUsXHJcblx0XHRcdFx0dG9Jc0JhY2s6IHRydWUsXG5cdFx0XHR9XG5cdFx0fSxcblx0XHRvbkxvYWQobykge1xyXG5cdFx0XHRjb25zb2xlLmxvZyhvKVxuXHRcdFx0dGhpcy5pZCA9IG8uaWQ7XG5cdFx0XHR0aGlzLnR5cGU9by50eXBlO1xuXHRcdFx0dGhpcy50aXRsZSA9ICh0aGlzLnR5cGUgPT0gMXx8dGhpcy50eXBlID09IDMpP1wi6K+t6Z+z6YCa6K+dXCI6XCLop4bpopHpgJror51cIjtcclxuXHRcdFx0dGhpcy5pc1N0YXJ0ID0gKHRoaXMudHlwZSA9PSAzfHx0aGlzLnR5cGUgPT0gNCk/KG8uZmlkP2ZhbHNlOnRydWUpOnRydWVcblx0XHRcdHRoaXMuaXNTaGV4aWFuZyA9ICh0aGlzLnR5cGUgPT0gMiB8fCB0aGlzLnR5cGUgPT0gNCk/dHJ1ZTpmYWxzZVxyXG5cdFx0XHR0aGlzLmlzSmllc2hvdSA9IG8udHlwZTw9Mj90cnVlOmZhbHNlO1xuXHRcdFx0dGhpcy5zdGF0dXNCYXJIZWlnaHQgPSB1bmkuZ2V0U3lzdGVtSW5mb1N5bmMoKS5zdGF0dXNCYXJIZWlnaHQ7XG5cdFx0XHR0aGlzLndpbldpZHRoID0gdW5pLmdldFN5c3RlbUluZm9TeW5jKCkud2luZG93V2lkdGg7XG5cdFx0XHR0aGlzLndpbkhlaWdodCA9IHVuaS5nZXRTeXN0ZW1JbmZvU3luYygpLndpbmRvd0hlaWdodDtcblx0XHR9LFxuXHRcdGFzeW5jIG9uUmVhZHkoKSB7XG5cdFx0XHRjb25zdCB0aGF0ID0gdGhpcztcblx0XHRcdHVuaS4kb24oXCJ3YXRjaEV2ZW50XCIsZnVuY3Rpb24gKG9iaikge1xyXG5cdFx0XHRcdGNvbnNvbGUubG9nKG9iailcblx0XHRcdFx0aWYob2JqLnRvcGljID09ICdtZXNzYWdlJyl7XG5cdFx0XHRcdFx0aWYob2JqLnR5cGUgPT0gMTIpe1xuXHRcdFx0XHRcdFx0aWYodW5pLmdldFN0b3JhZ2VTeW5jKFwidXNlckluZm9cIikuaWQgPT0gb2JqLnNlbGxlcklkKXtcclxuXHRcdFx0XHRcdFx0XHR0aGF0LmlzR3VhZHVhbiA9IGZhbHNlO1xuXHRcdFx0XHRcdFx0XHR0aGF0LnRvR3VhZHVhbigxKVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fSlcclxuXHRcdFx0XHJcblx0XHRcdHVuaS4kb24oXCJ0b0ppZXNob3VZaW5zaGlwXCIsKG9iaik9PntcclxuXHRcdFx0XHRjb25zb2xlLmxvZyhcInRvSmllc2hvdVlpbnNoaXBcIixvYmopXHJcblx0XHRcdFx0aWYob2JqLnRvcGljID09ICdtZXNzYWdlJyl7XHJcblx0XHRcdFx0XHRpZihvYmoudHlwZSA9PSAyMCl7XHJcblx0XHRcdFx0XHRcdGlmKHVuaS5nZXRTdG9yYWdlU3luYyhcInVzZXJJbmZvXCIpLmlkID09IG9iai5zZWxsZXJJZCl7XHJcblx0XHRcdFx0XHRcdFx0dGhhdC50b0ppZXNob3UoKTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRpZih0aGF0LnR5cGUgPT0gMSB8fCB0aGF0LnR5cGUgPT0gMyl7XHJcblx0XHRcdFx0XHRcdFx0dGhhdC5pc09wZW5Tb2NrZXQgPSB0cnVlO1xyXG5cdFx0XHRcdFx0XHR9ZWxzZXtcclxuXHRcdFx0XHRcdFx0XHR0aGF0LmlzT3BlblNvY2tldCA9IGZhbHNlO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKFwidGhhdC50eXBlXCIsdGhhdC50eXBlKVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSlcblx0XHRcdC8vICNpZmRlZiBBUFAtUExVU1xuXHRcdFx0aWYgKHVuaS5nZXRTeXN0ZW1JbmZvU3luYygpLnBsYXRmb3JtID09PSBcImFuZHJvaWRcIikge1xuXHRcdFx0ICAgY29uc3QgcmVzID0gYXdhaXQgcGVybWlzaW9uLnJlcXVlc3RBbmRyb2lkUGVybWlzc2lvbihcblx0XHRcdFx0XHRcImFuZHJvaWQucGVybWlzc2lvbi5SRUNPUkRfQVVESU9cIlxuXHRcdFx0XHQpO1xuXHRcdFx0ICAgY29uc3QgcmVzMSA9ICBhd2FpdCBwZXJtaXNpb24ucmVxdWVzdEFuZHJvaWRQZXJtaXNzaW9uKFxuXHRcdFx0XHRcdFwiYW5kcm9pZC5wZXJtaXNzaW9uLkNBTUVSQVwiXG5cdFx0XHRcdCk7XHJcblx0XHRcdFx0aWYocmVzID09IDEgJiYgcmVzMSA9PSAxKXtcclxuXHRcdFx0XHRcdGlmKHRoaXMudHlwZSA8PSAyKXtcclxuXHRcdFx0XHRcdFx0dGhpcy50b1Blcm1pc3Npb24oKTtcclxuXHRcdFx0XHRcdH1lbHNle1xyXG5cdFx0XHRcdFx0XHR0aGlzLmdldFVzZXJJbmZvKDEpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHR0aGlzLmdldE90aGVyVXNlckluZm8oKVxyXG5cdFx0XHRcdHJldHVybiA7XG5cdFx0XHR9XG5cdFx0XHQvLyAjZW5kaWZcclxuXHRcdFx0XG5cdFx0ICBpZih0aGlzLnR5cGUgPD0gMil7XG5cdFx0XHQgIHRoaXMudG9QZXJtaXNzaW9uKCk7XG5cdFx0ICB9ZWxzZXtcclxuXHRcdFx0ICB0aGlzLmdldFVzZXJJbmZvKDEpO1xyXG5cdFx0ICB9XHJcblx0XHRcdCAgdGhpcy5nZXRPdGhlclVzZXJJbmZvKCk7XG5cdFx0fSxcblx0XHRtZXRob2RzOiB7XHJcblx0XHRcdHFpZWh1YW4oKSB7XHJcblx0XHRcdFx0dGhpcy5pc1RvZ2dsZSA9ICF0aGlzLmlzVG9nZ2xlO1xyXG5cdFx0XHRcdGNvbnNvbGUubG9nKHRoaXMuaXNUb2dnbGUpXHJcblx0XHRcdH0sXHJcblx0XHRcdHRvSmllc2hvdTEoKSB7XHJcblx0XHRcdFx0dW5pLiRlbWl0KFwiamllc2hvdVlpbnNoaXBcIix7XHJcblx0XHRcdFx0XHRcInVzZXJJZFwiOiB1bmkuZ2V0U3RvcmFnZVN5bmMoXCJ1c2VySW5mb1wiKS5pZCxcclxuXHRcdFx0XHRcdHNlbGxlcklkOiB0aGlzLmlkLCBcclxuXHRcdFx0XHRcdHR5cGU6IDIwLFxyXG5cdFx0XHRcdFx0XCJ0b3BpY1wiOlwibWVzc2FnZVwiLFxyXG5cdFx0XHRcdH0pXHJcblx0XHRcdFx0aWYodGhpcy5pc1N0YXJ0ID09IGZhbHNlKXtcclxuXHRcdFx0XHRcdHRoaXMudG9KaWVzaG91KCk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9LFxuXHRcdFx0b25CYWNrKCkge1xuXHRcdFx0XHRjb25zdCB0aGF0ID0gdGhpcztcblx0XHRcdFx0dW5pLnNob3dNb2RhbCh7XG5cdFx0XHRcdFx0dGl0bGU6IFwi5rip6aao5o+Q56S6XCIsXG5cdFx0XHRcdFx0Y29udGVudDogXCLmmK/lkKbopoHpgIDlh7rmiL/pl7TvvJ9cIixcblx0XHRcdFx0XHRjb25maXJtQ29sb3I6IFwiIzAwMDAwMFwiLFxuXHRcdFx0XHRcdHN1Y2Nlc3MocmVzKSB7XG5cdFx0XHRcdFx0XHRpZihyZXMuY29uZmlybSl7XG5cdFx0XHRcdFx0XHRcdHRoYXQuaXNHdWFkdWFuID0gZmFsc2Vcblx0XHRcdFx0XHRcdFx0dGhhdC50b0d1YWR1YW4oKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pXG5cdFx0XHR9LFxuXHRcdFx0dG9HdWFkdWFuKHR5cGUpIHtcblx0XHRcdFx0aWYodHlwZSAhPTEpe1xuXHRcdFx0XHRcdHVuaS4kZW1pdChcImR1YW5ZaW5zaGlwXCIse1xuXHRcdFx0XHRcdFx0XCJ1c2VySWRcIjogdW5pLmdldFN0b3JhZ2VTeW5jKFwidXNlckluZm9cIikuaWQsXG5cdFx0XHRcdFx0XHRzZWxsZXJJZDogdGhpcy5pZCwgXG5cdFx0XHRcdFx0XHR0eXBlOiAxMixcblx0XHRcdFx0XHRcdFwidG9waWNcIjpcIm1lc3NhZ2VcIixcblx0XHRcdFx0XHR9KVxuXHRcdFx0XHR9IFxyXG5cdFx0XHRcdGlmKHR5cGUgPT0gMSl7XHJcblx0XHRcdFx0XHR1bmkuJGVtaXQoXCJzaG93VG9hc3RcIix0aGlzLmlzSmllc2hvdSlcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0dGhpcy5zb2NpYWxDb25zdW1wdGlvbigpO1xuXHRcdFx0XHRjbGVhckludGVydmFsKHRpbWVyKVxyXG5cdFx0XHRcdGlmKHRoaXMudG9Jc0JhY2sgID09IGZhbHNlKXtcclxuXHRcdFx0XHRcdHJldHVybiA7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdHRoaXMudG9Jc0JhY2sgPSBmYWxzZVxuXHRcdFx0XHR0aGlzLmlzR3VhZHVhbiA9IGZhbHNlXHJcblx0XHRcdFx0LyoqIOWBnOatouaOqOa1gSAqL1xyXG5cdFx0XHRcdHRoaXMuZW5naW5lPy5zdG9wUHVibGlzaGluZ1N0cmVhbSgpO1xyXG5cdFx0XHRcdC8qKiDlgZzmraLmnKzlnLDpooTop4ggKi9cclxuXHRcdFx0XHR0aGlzLmVuZ2luZT8uc3RvcFByZXZpZXcoKTtcclxuXHRcdFx0XHQvKiog5YGc5q2i5ouJ5rWBICovXHJcblx0XHRcdFx0dGhpcy5lbmdpbmU/LnN0b3BQbGF5aW5nU3RyZWFtKHRoaXMuc2VsbGVyU3RyZWFtSWQpO1xyXG5cdFx0XHRcdC8qKiDpgIDlh7rmiL/pl7QgKi9cclxuXHRcdFx0XHR0aGlzLmVuZ2luZT8ubG9nb3V0Um9vbSh0aGlzLnJvb21JZCk7XHJcblx0XHRcdFx0LyoqIOmUgOavgeW8leaTjiAqL1xyXG5cdFx0XHRcdFplZ29FeHByZXNzRW5naW5lLmRlc3Ryb3lFbmdpbmUoKTtcclxuXHRcdFx0XHR1bmkuJG9mZihcIndhdGNoRXZlbnRcIilcclxuXHRcdFx0XHR1bmkuJG9mZihcInRvSmllc2hvdVlpbnNoaXBcIilcclxuXHRcdFx0XHR1bmkubmF2aWdhdGVCYWNrKHtcclxuXHRcdFx0XHRcdGRlbHRhOiAxXHJcblx0XHRcdFx0fSlcblx0XHRcdH0sXG5cdFx0XHR0b0ppZXNob3UoKSB7XG5cdFx0XHRcdHRoaXMudG9QZXJtaXNzaW9uKCk7XHJcblx0XHRcdFx0dGhpcy4kZm9yY2VVcGRhdGUoKTtcblx0XHRcdH0sXG5cdFx0XHR0b2dnbGVZdXlpbigpIHtcblx0XHRcdFx0dGhpcy5pc1l1eWluID0gIXRoaXMuaXNZdXlpbjtcblx0XHRcdFx0dGhpcy5lbmdpbmUubXV0ZU1pY3JvcGhvbmUoIXRoaXMuaXNZdXlpbilcblx0XHRcdH0sXG5cdFx0XHR0b2dnbGVTaGV4aWFuZygpIHtcblx0XHRcdFx0dGhpcy5pc1NoZXhpYW5nID0gIXRoaXMuaXNTaGV4aWFuZztcblx0XHRcdFx0dGhpcy5lbmdpbmUuZW5hYmxlQ2FtZXJhKHRoaXMuaXNTaGV4aWFuZylcblx0XHRcdH0sXG5cdFx0XHR0b2dnbGVIdWFtaWFuKCkge1xuXHRcdFx0XHR0aGlzLmlzQ2FtZXJhID0gIXRoaXMuaXNDYW1lcmFcblx0XHRcdFx0dGhpcy5lbmdpbmUudXNlRnJvbnRDYW1lcmEodGhpcy5pc0NhbWVyYSlcblx0XHRcdH0sXG5cdFx0XHR0b2dnbGVZYW5nc2hlbmcoKSB7XG5cdFx0XHRcdHRoaXMuaXNZYW5nc2hlbmdxaSA9ICEgdGhpcy5pc1lhbmdzaGVuZ3FpXG5cdFx0XHRcdHRoaXMuZW5naW5lLnNldEF1ZGlvUm91dGVUb1NwZWFrZXIodGhpcy5pc0NhbWVyYSlcblx0XHRcdH0sXG5cdFx0XHRhc3luYyB0b1Blcm1pc3Npb24oKSB7XG5cdFx0XHRcdHRoaXMuZ2V0VXNlckluZm8oKTtcblx0XHRcdH0sXG5cdFx0XHQvL+afpeivouS4quS6uuS/oeaBr1xuXHRcdFx0YXN5bmMgZ2V0VXNlckluZm8odHlwZSkge1xuXHRcdFx0XHRjb25zdCB7IGNvZGUsIGRhdGEgLCBtc2d9ID0gYXdhaXQgYXBpLmZpbmRVc2VySW5mbyh7dXNlcklkOiB1bmkuZ2V0U3RvcmFnZVN5bmMoXCJ1c2VySW5mb1wiKS5pZH0pO1xuXHRcdFx0XHRpZihjb2RlID09IDIwMCl7XG5cdFx0XHRcdFx0dGhpcy51c2VySW5mbyA9IGRhdGE7XHJcblx0XHRcdFx0XHRpZih0eXBlICE9IDEpe1xyXG5cdFx0XHRcdFx0XHR0aGlzLnVzZXJCYWxhbmNlKCk7XHJcblx0XHRcdFx0XHRcdHRoaXMubG9naW5Sb29tKCk7XHJcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XG5cdFx0XHRcdH1lbHNle1xuXHRcdFx0XHRcdHVuaS5zaG93VG9hc3Qoe1xuXHRcdFx0XHRcdFx0dGl0bGU6IG1zZyxcblx0XHRcdFx0XHRcdHBvc2l0aW9uOiBcImJvdHRvbVwiLFxuXHRcdFx0XHRcdFx0aWNvbjogXCJub25lXCIsXG5cdFx0XHRcdFx0fSlcblx0XHRcdFx0fVxuXHRcdFx0fSxcclxuXHRcdFx0Ly/mn6Xor6J0YXJlbuS4quS6uuS/oeaBr1xyXG5cdFx0XHRhc3luYyBnZXRPdGhlclVzZXJJbmZvKHR5cGUpIHtcclxuXHRcdFx0XHRjb25zdCB7IGNvZGUsIGRhdGEgLCBtc2cgfSA9IGF3YWl0IGFwaS5maW5kT3RoZXJVc2VySW5mbyh7dXNlcklkOiB1bmkuZ2V0U3RvcmFnZVN5bmMoXCJ1c2VySW5mb1wiKS5pZCxzZWxsZXJJZDogdGhpcy5pZCx9KTtcclxuXHRcdFx0XHRpZihjb2RlID09IDIwMCl7XHJcblx0XHRcdFx0XHRjb25zb2xlLmxvZyhcImdldE90aGVyVXNlckluZm9cIixkYXRhKVxyXG5cdFx0XHRcdFx0dGhpcy51c2VyT3RoZXJJbmZvID0gZGF0YTtcclxuXHRcdFx0XHR9ZWxzZXtcclxuXHRcdFx0XHRcdHVuaS5zaG93VG9hc3Qoe1xyXG5cdFx0XHRcdFx0XHR0aXRsZTogbXNnLFxyXG5cdFx0XHRcdFx0XHRwb3NpdGlvbjogXCJib3R0b21cIixcclxuXHRcdFx0XHRcdFx0aWNvbjogXCJub25lXCIsXHJcblx0XHRcdFx0XHR9KVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSxcblx0XHRcdGFzeW5jIGxvZ2luUm9vbSgpe1xuXHRcdFx0XHRjb25zdCB0aGF0ID0gdGhpcztcblx0XHRcdFx0Y29uc3QgcmVzID0gYXdhaXQgYXBpLmZpbmRaZWdvVG9rZW4oe1xuXHRcdFx0XHRcdHVzZXJJZDogdW5pLmdldFN0b3JhZ2VTeW5jKFwidXNlckluZm9cIikuaWQsXG5cdFx0XHRcdFx0c2VsbGVySWQ6IHRoaXMuaWRcblx0XHRcdFx0fSlcblx0XHRcdFx0aWYocmVzLmNvZGUgPT0gMjAwKXtcblx0XHRcdFx0XHQvLyDojrflj5Z0b2tlbuS8oOWFpVxuXHRcdFx0XHRcdHJvb21Db25maWcudG9rZW4gPSByZXMuZGF0YS50b2tlbjtcblx0XHRcdFx0XHR0aGlzLnBsYXlTdHJlYW1JZCA9IHJlcy5kYXRhLnVzZXJTdHJlYW1JZDtcblx0XHRcdFx0XHR0aGlzLnNlbGxlclN0cmVhbUlkID0gcmVzLmRhdGEuc2VsbGVyU3RyZWFtSWQ7XG5cdFx0XHRcdFx0dGhpcy5yb29tSWQgPSByZXMuZGF0YS5yb29tSWQ7XG5cdFx0XHRcdFx0Y29uc29sZS5sb2coXCJsb2dpblJvb20xMVwiLHJlcy5kYXRhKVxyXG5cdFx0XHRcdFx0XG5cdFx0XHRcdFx0dGhpcy5lbmdpbmUgPSBhd2FpdCBaZWdvRXhwcmVzc0VuZ2luZS5jcmVhdGVFbmdpbmVXaXRoUHJvZmlsZShwcm9maWxlKTtcblx0XHRcdFx0XHR0aGlzLmVuZ2luZS5lbmFibGVDYW1lcmEodGhpcy5pc1NoZXhpYW5nKVxuXHRcdFx0XHRcdC8vIOWIm+W7uue+juminOeOr+Wig1xyXG5cdFx0XHRcdFx0YXdhaXQgdGhpcy5lbmdpbmUuc3RhcnRFZmZlY3RzRW52KCk7XG5cdFx0XHRcdFx0dGhpcy5lbmdpbmUuZW5hYmxlRWZmZWN0c0JlYXV0eSh0cnVlKTtcblx0XHRcdFx0XHQvLyDliJvlu7rnvo7popzlj4LmlbDlr7nosaFcblx0XHRcdFx0XHRsZXQgYmVhdXR5UGFyYW0gPSB7fTtcblx0XHRcdFx0XHQvLyDnvo7nmb3jgIHnuqLmtqbjgIHno6jnmq7jgIHplJDljJZcblx0XHRcdFx0XHRiZWF1dHlQYXJhbS53aGl0ZW5JbnRlbnNpdHkgPSB0aGlzLnVzZXJJbmZvLnJlc2VydmVkNTtcblx0XHRcdFx0XHRiZWF1dHlQYXJhbS5yb3N5SW50ZW5zaXR5ID0gdGhpcy51c2VySW5mby5yZXNlcnZlZDY7XG5cdFx0XHRcdFx0YmVhdXR5UGFyYW0uc21vb3RoSW50ZW5zaXR5ID0gdGhpcy51c2VySW5mby5yZXNlcnZlZDc7XG5cdFx0XHRcdFx0YmVhdXR5UGFyYW0uc2hhcnBlbkludGVuc2l0eSA9IHRoaXMudXNlckluZm8ucmVzZXJ2ZWQ4O1xuXHRcdFx0XHRcdC8vIOiuvue9rue+juminOWPguaVsCBcblx0XHRcdFx0XHR0aGlzLmVuZ2luZS5zZXRFZmZlY3RzQmVhdXR5UGFyYW0oYmVhdXR5UGFyYW0pO1xuXHRcdFx0XHRcdHRoaXMuZW5naW5lLnVzZUZyb250Q2FtZXJhKHRoaXMuaXNDYW1lcmEpXG5cdFx0XHRcdFx0Ly8g5Lul5LiL5Li65bi455So55qE5oi/6Ze055u45YWz5Zue6LCDXG5cdFx0XHRcdFx0dGhpcy5lbmdpbmUub24oJ3Jvb21TdGF0ZVVwZGF0ZScsIChyb29tSUQsIHN0YXRlLCBlcnJvckNvZGUsIGV4dGVuZGVkRGF0YSkgPT4ge1xuXHRcdFx0XHRcdFx0Y29uc29sZS5sb2coXCJyb29tU3RhdGVVcGRhdGVcIixyb29tSUQpXG5cdFx0XHRcdFx0ICAvLyDmiL/pl7TnirbmgIHmm7TmlrDlm57osIPvvIznmbvlvZXmiL/pl7TlkI7vvIzlvZPmiL/pl7Tov57mjqXnirbmgIHlj5HnlJ/lj5jmm7TvvIjlpoLlh7rnjrDmiL/pl7Tmlq3lvIDvvIznmbvlvZXorqTor4HlpLHotKXnrYnmg4XlhrXvvInvvIxTREvkvJrpgJrov4for6Xlm57osIPpgJrnn6Vcblx0XHRcdFx0XHR9KTsgO1xuXHRcdFx0XHRcdFxuXHRcdFx0XHRcdHRoaXMuZW5naW5lLm9uKCdyb29tVXNlclVwZGF0ZScsIChyb29tSUQsIHVwZGF0ZVR5cGUsIHVzZXJMaXN0KSA9PiB7XG5cdFx0XHRcdFx0ICAvLyDnlKjmiLfnirbmgIHmm7TmlrDvvIznmbvlvZXmiL/pl7TlkI7vvIzlvZPmiL/pl7TlhoXmnInnlKjmiLfmlrDlop7miJbliKDpmaTml7bvvIxTREvkvJrpgJrov4for6Xlm57osIPpgJrnn6Vcblx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKFwicm9vbVVzZXJVcGRhdGVcIixyb29tSUQsdXBkYXRlVHlwZSx1c2VyTGlzdClcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcblx0XHRcdFx0XHR0aGlzLmVuZ2luZS5vbigncGxheWVyU3RhdGVVcGRhdGUnLCAocm9vbUlELCB1cGRhdGVUeXBlLCBzdHJlYW1MaXN0KSA9PiB7XG5cdFx0XHRcdFx0XHRjb25zb2xlLmxvZyhcInBsYXllclN0YXRlVXBkYXRlXCIscm9vbUlEKVxuXHRcdFx0XHRcdCAgLy8g6LCD55So5ouJ5rWB5o6l5Y+j5oiQ5Yqf5ZCO77yM5b2T5ouJ5rWB5Zmo54q25oCB5Y+R55Sf5Y+Y5pu077yM5aaC5Ye6546w572R57uc5Lit5pat5a+86Ie05o6o5rWB5byC5bi4562J5oOF5Ya177yMU0RL5Zyo6YeN6K+V5ouJ5rWB55qE5ZCM5pe277yM5Lya6YCa6L+H6K+l5Zue6LCD6YCa55+lXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0dGhpcy5lbmdpbmUub24oJ3Jvb21TdHJlYW1VcGRhdGUnLCAocm9vbUlELCB1cGRhdGVUeXBlLCBzdHJlYW1MaXN0KSA9PiB7XG5cdFx0XHRcdFx0XHRjb25zb2xlLmxvZyhcInJvb21TdHJlYW1VcGRhdGVcIix1cGRhdGVUeXBlLHN0cmVhbUxpc3QpXG5cdFx0XHRcdFx0ICAvLyDmtYHnirbmgIHmm7TmlrDvvIznmbvlvZXmiL/pl7TlkI7vvIzlvZPmiL/pl7TlhoXmnInnlKjmiLfmlrDmjqjpgIHmiJbliKDpmaTpn7Pop4bpopHmtYHml7bvvIxTREvkvJrpgJrov4for6Xlm57osIPpgJrnn6Vcblx0XHRcdFx0XHRcdC8vIHRoaXMuc2VsbGVyU3RyZWFtSWQgPSBzdHJlYW1MaXN0WzBdLnN0cmVhbUlEO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdC8vIOiwg+eUqOaOqOa1geaOpeWPo+aIkOWKn+WQju+8jOW9k+aOqOa1geWZqOeKtuaAgeWPkeeUn+WPmOabtO+8jOWmguWHuueOsOe9kee7nOS4reaWreWvvOiHtOaOqOa1geW8guW4uOetieaDheWGte+8jFNES+WcqOmHjeivleaOqOa1geeahOWQjOaXtu+8jOS8mumAmui/h+ivpeWbnuiwg+mAmuefpVxuXHRcdFx0XHRcdHRoYXQuZW5naW5lLm9uKCdwdWJsaXNoZXJTdGF0ZVVwZGF0ZScsIChzdHJlYW1JRCwgc3RhdGUsIGVycm9yQ29kZSwgZXh0ZW5kZWREYXRhKSA9PiB7XG5cdFx0XHRcdFx0XHRjb25zb2xlLmxvZyhcInB1Ymxpc2hlclN0YXRlVXBkYXRlXCIsc3RyZWFtSUQpXHJcblx0XHRcdFx0XHRcdFxuXHRcdFx0XHRcdFx0XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0Ly8g55m75b2V5oi/6Ze0XG5cdFx0XHRcdFx0Ly8g5byA5aeL55m75b2V5oi/6Ze0XG5cdFx0XHRcdFx0dGhpcy5lbmdpbmUubG9naW5Sb29tKHJlcy5kYXRhLnJvb21JZCwgXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdCd1c2VySUQnOiB1bmkuZ2V0U3RvcmFnZVN5bmMoXCJ1c2VySW5mb1wiKS5pZCwgXG5cdFx0XHRcdFx0XHRcdCd1c2VyTmFtZSc6IHVuaS5nZXRTdG9yYWdlU3luYyhcInVzZXJJbmZvXCIpLm5pY2tuYW1lXG5cdFx0XHRcdFx0XHR9LCBcblx0XHRcdFx0XHRcdHJvb21Db25maWdcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdC8vIHRoaXMudmlld01vZGVJbmRleCA9IFplZ29WaWV3TW9kZS5Bc3BlY3RGaXQ7XG5cdFx0XHRcdFx0dGhpcy5lbmdpbmUuc3RhcnRQcmV2aWV3KCk7XG5cdFx0XHRcdFx0dGhpcy5lbmdpbmUuc3RhcnRQdWJsaXNoaW5nU3RyZWFtKHRoaXMucGxheVN0cmVhbUlkKTtcblx0XHRcdFx0XHR0aGlzLmlzSmllc2hvdSA9IHRydWU7XG5cdFx0XHRcdFx0Y2xlYXJJbnRlcnZhbCh0aW1lcik7XG5cdFx0XHRcdFx0dGhhdC50aXRsZSA9IHRoYXQuZm9ybWF0RnVuKHRoYXQuY291bnQpXG5cdFx0XHRcdFx0dGltZXIgPSBzZXRJbnRlcnZhbCgoKT0+e1xyXG5cdFx0XHRcdFx0XHRpZih1bmkuZ2V0U3RvcmFnZVN5bmMoXCJ1c2VySW5mb1wiKS5zZXggPT0gMSl7XHJcblx0XHRcdFx0XHRcdFx0aWYodGhhdC50eXBlID09IDEpe1xyXG5cdFx0XHRcdFx0XHRcdFx0aWYodGhhdC5iYWxhbmNlSW5mby52b2ljZUNvaW5zKjYwIDwgdGhhdC5jb3VudCl7XHJcblx0XHRcdFx0XHRcdFx0XHRcdGNsZWFySW50ZXJ2YWwodGltZXIpO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHR0aGF0LnRvR3VhZHVhbigpO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHR0aGF0LnRpdGxlID0gdGhhdC5mb3JtYXRGdW4odGhhdC5jb3VudCk7XHJcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiA7XHJcblx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0fWVsc2UgaWYodGhhdC50eXBlID09IDIpe1xyXG5cdFx0XHRcdFx0XHRcdFx0aWYodGhhdC5iYWxhbmNlSW5mby52aWRlb0NvaW5zKjYwIDwgdGhhdC5jb3VudCl7XHJcblx0XHRcdFx0XHRcdFx0XHRcdGNsZWFySW50ZXJ2YWwodGltZXIpO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHR0aGF0LnRvR3VhZHVhbigpO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHR0aGF0LnRpdGxlID0gdGhhdC5mb3JtYXRGdW4odGhhdC5jb3VudCk7XHJcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiA7XHJcblx0XHRcdFx0XHRcdFx0XHR9XHRcclxuXHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdHRoYXQuY291bnQgKys7XG5cdFx0XHRcdFx0XHR0aGF0LnRpdGxlID0gdGhhdC5mb3JtYXRGdW4odGhhdC5jb3VudCk7XG5cdFx0XHRcdFx0fSwxMDAwKVxuXHRcdFx0XHRcdHNldFRpbWVvdXQoKCk9Pntcblx0XHRcdFx0XHRcdHRoaXMudG9UdWlsaXUoKVxuXHRcdFx0XHRcdH0sMTAwKVxuXHRcdFx0XHR9XG5cdFx0XHR9LFxyXG5cdFx0XHQvL+ajgOafpeasoeaVsFxyXG5cdFx0XHRhc3luYyB1c2VyQmFsYW5jZSgpIHtcclxuXHRcdFx0XHRjb25zdCB7IGNvZGUsIGRhdGEgfSA9IGF3YWl0IHRoaXMuJGFwaS51c2VyQmFsYW5jZSh7XHJcblx0XHRcdFx0XHR1c2VySWQ6IHVuaS5nZXRTdG9yYWdlU3luYyhcInVzZXJJbmZvXCIpLmlkXHJcblx0XHRcdFx0fSkgXHJcblx0XHRcdFx0aWYoY29kZSA9PSAyMDApe1xyXG5cdFx0XHRcdFx0dGhpcy5iYWxhbmNlSW5mbyA9IGRhdGFcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0sXHJcblx0XHRcdC8v57uT566XIHR5cGU6MS7or63pn7MgMi7op4bpopEgMy7mloflrZcgNOWbvueJhyA156S854mpNuaQreiuqlxyXG5cdFx0XHRhc3luYyBzb2NpYWxDb25zdW1wdGlvbih0eXBlKSB7XHJcblx0XHRcdFx0YXdhaXQgdGhpcy4kYXBpLnNvY2lhbENvbnN1bXB0aW9uKHtcclxuXHRcdFx0XHRcdHVzZXJJZDogdW5pLmdldFN0b3JhZ2VTeW5jKFwidXNlckluZm9cIikuaWQsXHJcblx0XHRcdFx0XHRzZWxsZXJJZDogdGhpcy5pZCxcclxuXHRcdFx0XHRcdHR5cGU6ICh0aGlzLnR5cGUgPT0gMXx8IHRoaXMudHlwZSA9PSAzKT8xOjIsXHJcblx0XHRcdFx0XHRkdXJhdGlvbjogdGhpcy5jb3VudCsxXHJcblx0XHRcdFx0fSlcclxuXHRcdFx0XHR0aGlzLnVzZXJCYWxhbmNlKCk7XHJcblx0XHRcdH0sXG5cdFx0XHRmb3JtYXRGdW4obnVtKXtcblx0XHRcdFx0bGV0IHN0ciA9IFwiXCIsaCxtLHM7XG5cdFx0XHRcdGg9TWF0aC5mbG9vcihudW0vMzYwMCk7XG5cdFx0XHRcdG09TWF0aC5mbG9vcigobnVtLWgqMzYwMCkvNjApO1xuXHRcdFx0XHRzPShudW0taCozNjAwLW0qNjApO1xuXHRcdFx0XHRzdHIgPSAoaDw9OT8nMCcraDpoKStcIjpcIisobTw9OT8nMCcrbTptKStcIjpcIisoczw9OT8nMCcrczpzKVxuXHRcdFx0XHRyZXR1cm4gc3RyO1xuXHRcdFx0fSxcblx0XHRcdHRvVHVpbGl1KCkge1xuXHRcdFx0XHRjb25zdCB0aGF0ID0gdGhpcztcblx0XHRcdFx0Y29uc29sZS5sb2coXCJ0b1R1aWxpdVwiLHRoaXMuc2VsbGVyU3RyZWFtSWQpXG5cdFx0XHRcdHRoYXQuZW5naW5lLnN0YXJ0UGxheWluZ1N0cmVhbSh0aGlzLnNlbGxlclN0cmVhbUlkKTtcclxuXHRcdFx0XHRpZih0aGF0LnR5cGUgPT0gMSB8fCB0aGF0LnR5cGUgPT0gMyl7XHJcblx0XHRcdFx0XHRjb25zb2xlLmxvZygxMTEpXHJcblx0XHRcdFx0XHR0aGF0LmlzT3BlblNvY2tldCA9IHRydWU7XHJcblx0XHRcdFx0fWVsc2V7XHJcblx0XHRcdFx0XHRjb25zb2xlLmxvZygyMjIyKVxyXG5cdFx0XHRcdFx0dGhhdC5pc09wZW5Tb2NrZXQgPSBmYWxzZTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0Y29uc29sZS5sb2coXCJ0aGF0LnR5cGVcIix0aGF0LnR5cGUpXG5cdFx0XHRcdFplZ29FeHByZXNzRW5naW5lLmluc3RhbmNlKCkub24oXCJwbGF5ZXJTdGF0ZVVwZGF0ZVwiLCAoc3RyZWFtSUQsIHN0YXRlLCBlcnJvckNvZGUsIGV4dGVuZGVkRGF0YSkgPT4ge1xuXHRcdFx0XHQgICAgLyoqIOiwg+eUqOaLiea1geaOpeWPo+aIkOWKn+WQju+8jOW9k+aLiea1geWZqOeKtuaAgeWPkeeUn+WPmOabtO+8jOWmguWHuueOsOe9kee7nOS4reaWreWvvOiHtOaOqOa1geW8guW4uOetieaDheWGte+8jFNES+WcqOmHjeivleaLiea1geeahOWQjOaXtu+8jOS8mumAmui/h+ivpeWbnuiwg+mAmuefpSAqL1xuXHRcdFx0XHRcdFx0Y29uc29sZS5sb2coXCJwbGF5ZXJTdGF0ZVVwZGF0ZVwiLHN0cmVhbUlEKVxuXHRcdFx0XHQgfSk7XG5cdFx0XHR9XG5cdFx0fSxcblx0XHRvbkJhY2tQcmVzcygpIHtcblx0XHRcdGlmKHRoaXMuaXNHdWFkdWFuKXtcblx0XHRcdFx0dGhpcy50b0d1YWR1YW4oKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cbjwvc2NyaXB0PlxuXG48c3R5bGUgbGFuZz1cInNjc3NcIj5cbi5yb29te1xyXG5cdGJhY2tncm91bmQtY29sb3I6ICMwMDA7XG5cdCYtbmF2YmFye1xuXHRcdGhlaWdodDogNDRweDtcblx0XHRwb3NpdGlvbjogZml4ZWQ7XG5cdFx0bGVmdDogMDtcblx0XHR0b3A6IDA7XG5cdFx0ei1pbmRleDogMTIyO1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0ZmxleC1kaXJlY3Rpb246IHJvdztcblx0XHQubmF2YmFye1xuXHRcdFx0ZmxleC1kaXJlY3Rpb246IHJvdztcblx0XHRcdGhlaWdodDogNDRweDtcblx0XHRcdGxpbmUtaGVpZ2h0OiA0NHB4O1xuXHRcdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRcdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRcdFx0Zm9udC1zaXplOiAzMHB4O1xuXHRcdFx0LnR4dHtcblx0XHRcdFx0Zm9udC1zaXplOiAyMHB4O1xuXHRcdFx0XHRjb2xvcjogI2ZmZmZmZjtcblx0XHRcdH1cblx0XHRcdC50aXRsZXtcblx0XHRcdFx0ZGlzcGxheTogZmxleDtcblx0XHRcdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRcdFx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cdFx0XHR9XG5cdFx0XHQuYmFja3tcblx0XHRcdFx0d2lkdGg6IDUwcHg7XG5cdFx0XHRcdGhlaWdodDogNDRweDtcblx0XHRcdFx0cG9zaXRpb246IGZpeGVkO1xuXHRcdFx0XHRsZWZ0OiAwO1xuXHRcdFx0XHR6LWluZGV4OiA0NDtcclxuXHRcdFx0XHRkaXNwbGF5OiBmbGV4O1xyXG5cdFx0XHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcblx0XHRcdFx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cdFx0XHRcdC5pbWd7XG5cdFx0XHRcdFx0d2lkdGg6IDIwcHg7XG5cdFx0XHRcdFx0aGVpZ2h0OiAyMHB4O1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cdCYtaGR7XG5cdCBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHQgcG9zaXRpb246IHJlbGF0aXZlO1xyXG5cdCB6LWluZGV4OiAyO1xuXHQuc2hpdHV7XG5cdFx0d2lkdGg6IDMwMHJweDtcblx0XHRoZWlnaHQ6IDM4MHJweDtcblx0XHRib3JkZXItcmFkaXVzOiAxMHJweDtcblx0XHRvdmVyZmxvdzogaGlkZGVuO1xuXHRcdHBvc2l0aW9uOiBmaXhlZDtcblx0XHRyaWdodDogMjBycHg7XG5cdFx0dG9wOiAxMjBycHg7XG5cdFx0ei1pbmRleDogMjI7XG5cdH1cbiB9XG4gJi1iZHtcclxuXHQgcG9zaXRpb246IHJlbGF0aXZlO1xuXHQgLnBpY3tcblx0XHQgd2lkdGg6IDEwMCU7XG5cdFx0IGhlaWdodDogMTAwJTtcblx0XHQgZGlzcGxheTogYmxvY2s7XG5cdCB9XHJcblx0IC5kaWFuLW9ue1xyXG5cdCBcdHdpZHRoOiA2NTBycHg7XHJcblx0IFx0bWluLWhlaWdodDogNjQ4cnB4O1xyXG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xyXG5cdFx0bWFyZ2luLWxlZnQ6IDUwcnB4O1xyXG5cdFx0dG9wOiAyNTBycHg7XHJcblx0XHR6LWluZGV4OiAxO1xyXG5cdCBcdC50YWd7XHJcblx0IFx0XHR3aWR0aDogNjYwcnB4O1xyXG5cdCBcdFx0aGVpZ2h0OiAzMzBycHg7XHJcblx0IFx0XHRiYWNrZ3JvdW5kOiByZ2JhKDM1LCAzMiwgNDgsIDAuMzYpO1xyXG5cdCBcdFx0Ym9yZGVyLXJhZGl1czogMjBycHg7XHJcblx0IFx0XHRtYXJnaW46IDAgYXV0bztcclxuXHQgXHRcdHBhZGRpbmc6IDMwcnB4O1xyXG5cdCBcdFx0Ym94LXNpemluZzogYm9yZGVyLWJveDtcclxuXHQgXHRcdHRleHQtYWxpZ246IGxlZnQ7XHJcblx0IFx0XHRtYXJnaW4tdG9wOiAzMHJweDtcclxuXHQgXHRcdC50aXRsZXN7XHJcblx0IFx0XHRcdC50e1xyXG5cdFx0XHRcdFx0Zm9udC13ZWlnaHQ6IGJvbGQ7XHJcblx0XHRcdFx0XHRmb250LXNpemU6IDMwcnB4O1xyXG5cdFx0XHRcdFx0Y29sb3I6ICNGRkZGRkY7XHJcblx0XHRcdFx0fVxyXG5cdCBcdFx0fVxyXG5cdCBcdFx0LmRlc2Nze1xyXG5cdCBcdFx0XHRtYXJnaW4tdG9wOiAyMHJweDtcclxuXHQgXHRcdFx0LnR7XHJcblx0XHRcdFx0XHRmb250LXNpemU6IDI0cnB4O1xyXG5cdFx0XHRcdFx0Y29sb3I6ICNCOEI3QkM7XHJcblx0XHRcdFx0XHRsaW5lLWhlaWdodDogNDVycHg7XHJcblx0XHRcdFx0XHRmb250LXdlaWdodDogNDAwO1xyXG5cdFx0XHRcdH1cclxuXHQgXHRcdH1cclxuXHQgXHR9XHJcblx0IFx0LmluZm97XHJcblx0IFx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XHJcblx0IFx0XHRvdmVyZmxvdzogaGlkZGVuO1xyXG5cdFx0XHRkaXNwbGF5OiBmbGV4O1xyXG5cdFx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuXHRcdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcclxuXHRcdFx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuXHQgXHRcdC5hdmF0YXJ7XHJcblx0IFx0XHRcdHdpZHRoOiAxODBycHg7XHJcblx0IFx0XHRcdGhlaWdodDogMTgwcnB4O1xyXG5cdCBcdFx0XHRib3JkZXItcmFkaXVzOiA1MCU7XHJcblx0XHRcdFx0ZGlzcGxheTogYmxvY2s7XHJcblx0XHRcdFx0bWFyZ2luOiAwIGF1dG87XHJcblx0IFx0XHR9XHJcblx0IFx0XHQubmFtZXtcclxuXHQgXHRcdFx0Zm9udC13ZWlnaHQ6IDUwMDtcclxuXHQgXHRcdFx0bWFyZ2luLXRvcDogMTBycHg7XHJcblx0IFx0XHRcdHdoaXRlLXNwYWNlOiBub3dyYXA7XHJcblx0IFx0XHRcdG92ZXJmbG93OiBoaWRkZW47XHJcblx0IFx0XHRcdHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xyXG5cdCBcdFx0XHRvdmVyZmxvdzogaGlkZGVuO1xyXG5cdCBcdFx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XHJcblx0XHRcdFx0dGV4dC1hbGlnbjogY2VudGVyO1xyXG5cdCBcdFx0XHRtYXJnaW4tdG9wOiAxMHJweDtcclxuXHRcdFx0XHQudHtcclxuXHRcdFx0XHRcdGZvbnQtc2l6ZTogMjhycHg7XHJcblx0XHRcdFx0XHRjb2xvcjogI0ZGRkZGRjtcclxuXHRcdFx0XHR9XHJcblx0IFx0XHR9XHJcblx0IFx0XHQuYnRue1xyXG5cdCBcdFx0XHR3aWR0aDogMTcwcnB4O1xyXG5cdCBcdFx0XHRsaW5lLWhlaWdodDogNTZycHg7XHJcblx0IFx0XHRcdGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgwZGVnLCAjRkY5MTI0LCAjQkQ0NzAwKTtcclxuXHQgXHRcdFx0Ym9yZGVyLXJhZGl1czogNTZycHg7XHJcblx0IFx0XHRcdFxyXG5cdCBcdFx0XHRtYXJnaW46IDAgYXV0bztcclxuXHQgXHRcdFx0bWFyZ2luLXRvcDogMjBycHg7XHJcblx0IFx0XHRcdC50e1xyXG5cdFx0XHRcdFx0Zm9udC13ZWlnaHQ6IGJvbGQ7XHJcblx0IFx0XHRcdFx0Zm9udC1zaXplOiAzMHJweDtcclxuXHQgXHRcdFx0XHRjb2xvcjogI0ZGRkZGRjtcclxuXHQgXHRcdFx0fVxyXG5cdCBcdFx0fVxyXG5cdCBcdFx0LnR4dHtcclxuXHQgXHRcdFx0XHJcblx0IFx0XHRcdG1hcmdpbi10b3A6IDIwcnB4O1xyXG5cdCBcdFx0XHRvcGFjaXR5OiAwLjM7XHJcblx0XHRcdFx0LnR7XHJcblx0XHRcdFx0XHRmb250LXdlaWdodDogNTAwO1xyXG5cdFx0XHRcdFx0Zm9udC1zaXplOiAyNnJweDtcclxuXHRcdFx0XHRcdGNvbG9yOiAjRkZGRkZGO1xyXG5cdFx0XHRcdH1cclxuXHQgXHRcdH1cclxuXHQgXHR9XHJcblx0IH1cbiB9XG4gJi1mZHtcblx0aGVpZ2h0OiAyMjBycHg7XG5cdHBvc2l0aW9uOiBmaXhlZDtcblx0bGVmdDogMDtcblx0Ym90dG9tOiAyMDBycHg7XG5cdHotaW5kZXg6IDEyMjtcblx0ZmxleC1kaXJlY3Rpb246IHJvdztcblx0Lml0ZW17XG5cdFx0ZmxleDogMTtcblx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdFx0Zm9udC1zaXplOiAzMHJweDtcblx0XHRmb250LXdlaWdodDogNDAwO1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHQudHh0e1xuXHRcdFx0bWFyZ2luLXRvcDogMjBycHg7XG5cdFx0XHQudHtcblx0XHRcdFx0Zm9udC1zaXplOiAzMHJweDtcblx0XHRcdFx0Y29sb3I6ICNmZmZmZmY7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdC5waWN7XG5cdFx0XHR3aWR0aDogMTMwcnB4O1xuXHRcdFx0aGVpZ2h0OiAxMzBycHg7XG5cdFx0XHRib3JkZXItcmFkaXVzOiA1MCU7XG5cdFx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRcdGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXHRcdFx0bWFyZ2luOiAwIGF1dG87XG5cdFx0XHRtYXJnaW4tYm90dG9tOiAxMHJweDtcblx0XHRcdC5waW1ne1xuXHRcdFx0XHR3aWR0aDogMTMwcnB4O1xuXHRcdFx0XHRoZWlnaHQ6IDEzMHJweDtcblx0XHRcdH1cblx0XHRcdFxuXHRcdH1cblx0fVxufVxuXHQmLWZkMXtcbiBcdFx0aGVpZ2h0OiAyMjBycHg7XG4gXHRcdHBvc2l0aW9uOiBmaXhlZDtcbiBcdFx0bGVmdDogMDtcbiBcdFx0Ym90dG9tOiA0MHJweDtcbiBcdFx0ei1pbmRleDogNDQ7XG4gXHRcdGZsZXgtZGlyZWN0aW9uOiByb3c7XG5cdFx0ZmxleC13cmFwOiB3cmFwO1xuXHRcdC5pdGVtc3tcblx0XHRcdGZsZXg6IDE7XG5cdFx0XHRtYXJnaW4tdG9wOiA3MHJweDtcblx0XHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0XHRcdGZsZXgtZGlyZWN0aW9uOiByb3c7XG5cdFx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdFx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cdFx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdFx0LnBpY3tcblx0XHRcdFx0d2lkdGg6IDEzMHJweDtcblx0XHRcdFx0aGVpZ2h0OiAxMzBycHg7XG5cdFx0XHRcdGJvcmRlci1yYWRpdXM6IDUwJTtcblx0XHRcdFx0ZGlzcGxheTogZmxleDtcblx0XHRcdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRcdFx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cdFx0XHRcdG1hcmdpbjogMCBhdXRvO1xuXHRcdFx0XHRtYXJnaW4tYm90dG9tOiAxMHJweDtcblx0XHRcdFx0LnBpbWd7XG5cdFx0XHRcdFx0d2lkdGg6IDEzMHJweDtcblx0XHRcdFx0XHRoZWlnaHQ6IDEzMHJweDtcblx0XHRcdFx0fVxuXHRcdFx0XHRcblx0XHRcdH1cblx0XHRcdC5vZmZ7XG5cdFx0XHRcdHdpZHRoOiA0OXJweDtcblx0XHRcdFx0aGVpZ2h0OiA0NHJweDtcblx0XHRcdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdFx0XHRyaWdodDogMjAwcnB4O1xuXHRcdFx0XHR6LWluZGV4OiAyO1xuXHRcdFx0XHR0b3A6IDUwcnB4O1xuXHRcdFx0fVxuXHRcdH1cbiBcdH1cbn1cbjwvc3R5bGU+XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///31\n");
/***/ }),
/* 32 */
/*!************************************************************************************!*\
!*** E:/project/sxq/2024-10-16 chunwan/chunwan/js_sdk/wa-permission/permission.js ***!
\************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
eval("/* WEBPACK VAR INJECTION */(function(__f__) {/**\n * 本模块封装了Android、iOS的应用权限判断、打开应用权限设置界面、以及位置系统服务是否开启\n */\n\nvar isIos;\nisIos = plus.os.name == \"iOS\";\n\n// 判断推送权限是否开启\nfunction judgeIosPermissionPush() {\n var result = false;\n var UIApplication = plus.ios.import(\"UIApplication\");\n var app = UIApplication.sharedApplication();\n var enabledTypes = 0;\n if (app.currentUserNotificationSettings) {\n var settings = app.currentUserNotificationSettings();\n enabledTypes = settings.plusGetAttribute(\"types\");\n __f__(\"log\", \"enabledTypes1:\" + enabledTypes, \" at js_sdk/wa-permission/permission.js:19\");\n if (enabledTypes == 0) {\n __f__(\"log\", \"推送权限没有开启\", \" at js_sdk/wa-permission/permission.js:21\");\n } else {\n result = true;\n __f__(\"log\", \"已经开启推送功能!\", \" at js_sdk/wa-permission/permission.js:24\");\n }\n plus.ios.deleteObject(settings);\n } else {\n enabledTypes = app.enabledRemoteNotificationTypes();\n if (enabledTypes == 0) {\n __f__(\"log\", \"推送权限没有开启!\", \" at js_sdk/wa-permission/permission.js:30\");\n } else {\n result = true;\n __f__(\"log\", \"已经开启推送功能!\", \" at js_sdk/wa-permission/permission.js:33\");\n }\n __f__(\"log\", \"enabledTypes2:\" + enabledTypes, \" at js_sdk/wa-permission/permission.js:35\");\n }\n plus.ios.deleteObject(app);\n plus.ios.deleteObject(UIApplication);\n return result;\n}\n\n// 判断定位权限是否开启\nfunction judgeIosPermissionLocation() {\n var result = false;\n var cllocationManger = plus.ios.import(\"CLLocationManager\");\n var status = cllocationManger.authorizationStatus();\n result = status != 2;\n __f__(\"log\", \"定位权限开启:\" + result, \" at js_sdk/wa-permission/permission.js:48\");\n // 以下代码判断了手机设备的定位是否关闭,推荐另行使用方法 checkSystemEnableLocation\n /* var enable = cllocationManger.locationServicesEnabled();\n var status = cllocationManger.authorizationStatus();\n console.log(\"enable:\" + enable);\n console.log(\"status:\" + status);\n if (enable && status != 2) {\n \tresult = true;\n \tconsole.log(\"手机定位服务已开启且已授予定位权限\");\n } else {\n \tconsole.log(\"手机系统的定位没有打开或未给予定位权限\");\n } */\n plus.ios.deleteObject(cllocationManger);\n return result;\n}\n\n// 判断麦克风权限是否开启\nfunction judgeIosPermissionRecord() {\n var result = false;\n var avaudiosession = plus.ios.import(\"AVAudioSession\");\n var avaudio = avaudiosession.sharedInstance();\n var permissionStatus = avaudio.recordPermission();\n __f__(\"log\", \"permissionStatus:\" + permissionStatus, \" at js_sdk/wa-permission/permission.js:70\");\n if (permissionStatus == 1684369017 || permissionStatus == 1970168948) {\n __f__(\"log\", \"麦克风权限没有开启\", \" at js_sdk/wa-permission/permission.js:72\");\n } else {\n result = true;\n __f__(\"log\", \"麦克风权限已经开启\", \" at js_sdk/wa-permission/permission.js:75\");\n }\n plus.ios.deleteObject(avaudiosession);\n return result;\n}\n\n// 判断相机权限是否开启\nfunction judgeIosPermissionCamera() {\n var result = false;\n var AVCaptureDevice = plus.ios.import(\"AVCaptureDevice\");\n var authStatus = AVCaptureDevice.authorizationStatusForMediaType('vide');\n __f__(\"log\", \"authStatus:\" + authStatus, \" at js_sdk/wa-permission/permission.js:86\");\n if (authStatus == 3) {\n result = true;\n __f__(\"log\", \"相机权限已经开启\", \" at js_sdk/wa-permission/permission.js:89\");\n } else {\n __f__(\"log\", \"相机权限没有开启\", \" at js_sdk/wa-permission/permission.js:91\");\n }\n plus.ios.deleteObject(AVCaptureDevice);\n return result;\n}\n\n// 判断相册权限是否开启\nfunction judgeIosPermissionPhotoLibrary() {\n var result = false;\n var PHPhotoLibrary = plus.ios.import(\"PHPhotoLibrary\");\n var authStatus = PHPhotoLibrary.authorizationStatus();\n __f__(\"log\", \"authStatus:\" + authStatus, \" at js_sdk/wa-permission/permission.js:102\");\n if (authStatus == 3) {\n result = true;\n __f__(\"log\", \"相册权限已经开启\", \" at js_sdk/wa-permission/permission.js:105\");\n } else {\n __f__(\"log\", \"相册权限没有开启\", \" at js_sdk/wa-permission/permission.js:107\");\n }\n plus.ios.deleteObject(PHPhotoLibrary);\n return result;\n}\n\n// 判断通讯录权限是否开启\nfunction judgeIosPermissionContact() {\n var result = false;\n var CNContactStore = plus.ios.import(\"CNContactStore\");\n var cnAuthStatus = CNContactStore.authorizationStatusForEntityType(0);\n if (cnAuthStatus == 3) {\n result = true;\n __f__(\"log\", \"通讯录权限已经开启\", \" at js_sdk/wa-permission/permission.js:120\");\n } else {\n __f__(\"log\", \"通讯录权限没有开启\", \" at js_sdk/wa-permission/permission.js:122\");\n }\n plus.ios.deleteObject(CNContactStore);\n return result;\n}\n\n// 判断日历权限是否开启\nfunction judgeIosPermissionCalendar() {\n var result = false;\n var EKEventStore = plus.ios.import(\"EKEventStore\");\n var ekAuthStatus = EKEventStore.authorizationStatusForEntityType(0);\n if (ekAuthStatus == 3) {\n result = true;\n __f__(\"log\", \"日历权限已经开启\", \" at js_sdk/wa-permission/permission.js:135\");\n } else {\n __f__(\"log\", \"日历权限没有开启\", \" at js_sdk/wa-permission/permission.js:137\");\n }\n plus.ios.deleteObject(EKEventStore);\n return result;\n}\n\n// 判断备忘录权限是否开启\nfunction judgeIosPermissionMemo() {\n var result = false;\n var EKEventStore = plus.ios.import(\"EKEventStore\");\n var ekAuthStatus = EKEventStore.authorizationStatusForEntityType(1);\n if (ekAuthStatus == 3) {\n result = true;\n __f__(\"log\", \"备忘录权限已经开启\", \" at js_sdk/wa-permission/permission.js:150\");\n } else {\n __f__(\"log\", \"备忘录权限没有开启\", \" at js_sdk/wa-permission/permission.js:152\");\n }\n plus.ios.deleteObject(EKEventStore);\n return result;\n}\n\n// Android权限查询\nfunction requestAndroidPermission(permissionID) {\n return new Promise(function (resolve, reject) {\n plus.android.requestPermissions([permissionID],\n // 理论上支持多个权限同时查询,但实际上本函数封装只处理了一个权限的情况。有需要的可自行扩展封装\n function (resultObj) {\n __f__(\"log\", 1111, resultObj, \" at js_sdk/wa-permission/permission.js:164\");\n var result = 0;\n for (var i = 0; i < resultObj.granted.length; i++) {\n var grantedPermission = resultObj.granted[i];\n __f__(\"log\", '已获取的权限:' + grantedPermission, \" at js_sdk/wa-permission/permission.js:168\");\n result = 1;\n }\n for (var i = 0; i < resultObj.deniedPresent.length; i++) {\n var deniedPresentPermission = resultObj.deniedPresent[i];\n __f__(\"log\", '拒绝本次申请的权限:' + deniedPresentPermission, \" at js_sdk/wa-permission/permission.js:173\");\n result = 0;\n }\n for (var i = 0; i < resultObj.deniedAlways.length; i++) {\n var deniedAlwaysPermission = resultObj.deniedAlways[i];\n __f__(\"log\", '永久拒绝申请的权限:' + deniedAlwaysPermission, \" at js_sdk/wa-permission/permission.js:178\");\n result = -1;\n }\n uni.$emit(\"onPopup\", result);\n resolve(result);\n // 若所需权限被拒绝,则打开APP设置界面,可以在APP设置界面打开相应权限\n // if (result != 1) {\n // gotoAppPermissionSetting()\n // }\n }, function (error) {\n __f__(\"log\", 2222, 1, \" at js_sdk/wa-permission/permission.js:189\");\n __f__(\"log\", '申请权限错误:' + error.code + \" = \" + error.message, \" at js_sdk/wa-permission/permission.js:190\");\n resolve({\n code: error.code,\n message: error.message\n });\n });\n });\n}\n\n// 使用一个方法,根据参数判断权限\nfunction judgeIosPermission(permissionID) {\n if (permissionID == \"location\") {\n return judgeIosPermissionLocation();\n } else if (permissionID == \"camera\") {\n return judgeIosPermissionCamera();\n } else if (permissionID == \"photoLibrary\") {\n return judgeIosPermissionPhotoLibrary();\n } else if (permissionID == \"record\") {\n return judgeIosPermissionRecord();\n } else if (permissionID == \"push\") {\n return judgeIosPermissionPush();\n } else if (permissionID == \"contact\") {\n return judgeIosPermissionContact();\n } else if (permissionID == \"calendar\") {\n return judgeIosPermissionCalendar();\n } else if (permissionID == \"memo\") {\n return judgeIosPermissionMemo();\n }\n return false;\n}\n\n// 跳转到**应用**的权限页面\nfunction gotoAppPermissionSetting() {\n if (isIos) {\n var UIApplication = plus.ios.import(\"UIApplication\");\n var application2 = UIApplication.sharedApplication();\n var NSURL2 = plus.ios.import(\"NSURL\");\n // var setting2 = NSURL2.URLWithString(\"prefs:root=LOCATION_SERVICES\");\t\t\n var setting2 = NSURL2.URLWithString(\"app-settings:\");\n application2.openURL(setting2);\n plus.ios.deleteObject(setting2);\n plus.ios.deleteObject(NSURL2);\n plus.ios.deleteObject(application2);\n } else {\n // console.log(plus.device.vendor);\n var Intent = plus.android.importClass(\"android.content.Intent\");\n var Settings = plus.android.importClass(\"android.provider.Settings\");\n var Uri = plus.android.importClass(\"android.net.Uri\");\n var mainActivity = plus.android.runtimeMainActivity();\n var intent = new Intent();\n intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);\n var uri = Uri.fromParts(\"package\", mainActivity.getPackageName(), null);\n intent.setData(uri);\n mainActivity.startActivity(intent);\n }\n}\n\n// 检查系统的设备服务是否开启\n// var checkSystemEnableLocation = async function () {\nfunction checkSystemEnableLocation() {\n if (isIos) {\n var result = false;\n var cllocationManger = plus.ios.import(\"CLLocationManager\");\n var result = cllocationManger.locationServicesEnabled();\n __f__(\"log\", \"系统定位开启:\" + result, \" at js_sdk/wa-permission/permission.js:256\");\n plus.ios.deleteObject(cllocationManger);\n return result;\n } else {\n var context = plus.android.importClass(\"android.content.Context\");\n var locationManager = plus.android.importClass(\"android.location.LocationManager\");\n var main = plus.android.runtimeMainActivity();\n var mainSvr = main.getSystemService(context.LOCATION_SERVICE);\n var result = mainSvr.isProviderEnabled(locationManager.GPS_PROVIDER);\n __f__(\"log\", \"系统定位开启:\" + result, \" at js_sdk/wa-permission/permission.js:265\");\n return result;\n }\n}\nmodule.exports = {\n judgeIosPermission: judgeIosPermission,\n requestAndroidPermission: requestAndroidPermission,\n checkSystemEnableLocation: checkSystemEnableLocation,\n gotoAppPermissionSetting: gotoAppPermissionSetting\n};\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/lib/format-log.js */ 10)[\"default\"]))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vanNfc2RrL3dhLXBlcm1pc3Npb24vcGVybWlzc2lvbi5qcyJdLCJuYW1lcyI6WyJpc0lvcyIsInBsdXMiLCJvcyIsIm5hbWUiLCJqdWRnZUlvc1Blcm1pc3Npb25QdXNoIiwicmVzdWx0IiwiVUlBcHBsaWNhdGlvbiIsImlvcyIsImltcG9ydCIsImFwcCIsInNoYXJlZEFwcGxpY2F0aW9uIiwiZW5hYmxlZFR5cGVzIiwiY3VycmVudFVzZXJOb3RpZmljYXRpb25TZXR0aW5ncyIsInNldHRpbmdzIiwicGx1c0dldEF0dHJpYnV0ZSIsImRlbGV0ZU9iamVjdCIsImVuYWJsZWRSZW1vdGVOb3RpZmljYXRpb25UeXBlcyIsImp1ZGdlSW9zUGVybWlzc2lvbkxvY2F0aW9uIiwiY2xsb2NhdGlvbk1hbmdlciIsInN0YXR1cyIsImF1dGhvcml6YXRpb25TdGF0dXMiLCJqdWRnZUlvc1Blcm1pc3Npb25SZWNvcmQiLCJhdmF1ZGlvc2Vzc2lvbiIsImF2YXVkaW8iLCJzaGFyZWRJbnN0YW5jZSIsInBlcm1pc3Npb25TdGF0dXMiLCJyZWNvcmRQZXJtaXNzaW9uIiwianVkZ2VJb3NQZXJtaXNzaW9uQ2FtZXJhIiwiQVZDYXB0dXJlRGV2aWNlIiwiYXV0aFN0YXR1cyIsImF1dGhvcml6YXRpb25TdGF0dXNGb3JNZWRpYVR5cGUiLCJqdWRnZUlvc1Blcm1pc3Npb25QaG90b0xpYnJhcnkiLCJQSFBob3RvTGlicmFyeSIsImp1ZGdlSW9zUGVybWlzc2lvbkNvbnRhY3QiLCJDTkNvbnRhY3RTdG9yZSIsImNuQXV0aFN0YXR1cyIsImF1dGhvcml6YXRpb25TdGF0dXNGb3JFbnRpdHlUeXBlIiwianVkZ2VJb3NQZXJtaXNzaW9uQ2FsZW5kYXIiLCJFS0V2ZW50U3RvcmUiLCJla0F1dGhTdGF0dXMiLCJqdWRnZUlvc1Blcm1pc3Npb25NZW1vIiwicmVxdWVzdEFuZHJvaWRQZXJtaXNzaW9uIiwicGVybWlzc2lvbklEIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJhbmRyb2lkIiwicmVxdWVzdFBlcm1pc3Npb25zIiwicmVzdWx0T2JqIiwiaSIsImdyYW50ZWQiLCJsZW5ndGgiLCJncmFudGVkUGVybWlzc2lvbiIsImRlbmllZFByZXNlbnQiLCJkZW5pZWRQcmVzZW50UGVybWlzc2lvbiIsImRlbmllZEFsd2F5cyIsImRlbmllZEFsd2F5c1Blcm1pc3Npb24iLCJ1bmkiLCIkZW1pdCIsImVycm9yIiwiY29kZSIsIm1lc3NhZ2UiLCJqdWRnZUlvc1Blcm1pc3Npb24iLCJnb3RvQXBwUGVybWlzc2lvblNldHRpbmciLCJhcHBsaWNhdGlvbjIiLCJOU1VSTDIiLCJzZXR0aW5nMiIsIlVSTFdpdGhTdHJpbmciLCJvcGVuVVJMIiwiSW50ZW50IiwiaW1wb3J0Q2xhc3MiLCJTZXR0aW5ncyIsIlVyaSIsIm1haW5BY3Rpdml0eSIsInJ1bnRpbWVNYWluQWN0aXZpdHkiLCJpbnRlbnQiLCJzZXRBY3Rpb24iLCJBQ1RJT05fQVBQTElDQVRJT05fREVUQUlMU19TRVRUSU5HUyIsInVyaSIsImZyb21QYXJ0cyIsImdldFBhY2thZ2VOYW1lIiwic2V0RGF0YSIsInN0YXJ0QWN0aXZpdHkiLCJjaGVja1N5c3RlbUVuYWJsZUxvY2F0aW9uIiwibG9jYXRpb25TZXJ2aWNlc0VuYWJsZWQiLCJjb250ZXh0IiwibG9jYXRpb25NYW5hZ2VyIiwibWFpbiIsIm1haW5TdnIiLCJnZXRTeXN0ZW1TZXJ2aWNlIiwiTE9DQVRJT05fU0VSVklDRSIsImlzUHJvdmlkZXJFbmFibGVkIiwiR1BTX1BST1ZJREVSIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBOztBQUVBLElBQUlBLEtBQUs7QUFFVEEsS0FBSyxHQUFJQyxJQUFJLENBQUNDLEVBQUUsQ0FBQ0MsSUFBSSxJQUFJLEtBQU07O0FBRy9CO0FBQ0EsU0FBU0Msc0JBQXNCLEdBQUc7RUFDakMsSUFBSUMsTUFBTSxHQUFHLEtBQUs7RUFDbEIsSUFBSUMsYUFBYSxHQUFHTCxJQUFJLENBQUNNLEdBQUcsQ0FBQ0MsTUFBTSxDQUFDLGVBQWUsQ0FBQztFQUNwRCxJQUFJQyxHQUFHLEdBQUdILGFBQWEsQ0FBQ0ksaUJBQWlCLEVBQUU7RUFDM0MsSUFBSUMsWUFBWSxHQUFHLENBQUM7RUFDcEIsSUFBSUYsR0FBRyxDQUFDRywrQkFBK0IsRUFBRTtJQUN4QyxJQUFJQyxRQUFRLEdBQUdKLEdBQUcsQ0FBQ0csK0JBQStCLEVBQUU7SUFDcERELFlBQVksR0FBR0UsUUFBUSxDQUFDQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUM7SUFDakQsYUFBWSxnQkFBZ0IsR0FBR0gsWUFBWTtJQUMzQyxJQUFJQSxZQUFZLElBQUksQ0FBQyxFQUFFO01BQ3RCLGFBQVksVUFBVTtJQUN2QixDQUFDLE1BQU07TUFDTk4sTUFBTSxHQUFHLElBQUk7TUFDYixhQUFZLFdBQVc7SUFDeEI7SUFDQUosSUFBSSxDQUFDTSxHQUFHLENBQUNRLFlBQVksQ0FBQ0YsUUFBUSxDQUFDO0VBQ2hDLENBQUMsTUFBTTtJQUNORixZQUFZLEdBQUdGLEdBQUcsQ0FBQ08sOEJBQThCLEVBQUU7SUFDbkQsSUFBSUwsWUFBWSxJQUFJLENBQUMsRUFBRTtNQUN0QixhQUFZLFdBQVc7SUFDeEIsQ0FBQyxNQUFNO01BQ05OLE1BQU0sR0FBRyxJQUFJO01BQ2IsYUFBWSxXQUFXO0lBQ3hCO0lBQ0EsYUFBWSxnQkFBZ0IsR0FBR00sWUFBWTtFQUM1QztFQUNBVixJQUFJLENBQUNNLEdBQUcsQ0FBQ1EsWUFBWSxDQUFDTixHQUFHLENBQUM7RUFDMUJSLElBQUksQ0FBQ00sR0FBRyxDQUFDUSxZQUFZLENBQUNULGFBQWEsQ0FBQztFQUNwQyxPQUFPRCxNQUFNO0FBQ2Q7O0FBRUE7QUFDQSxTQUFTWSwwQkFBMEIsR0FBRztFQUNyQyxJQUFJWixNQUFNLEdBQUcsS0FBSztFQUNsQixJQUFJYSxnQkFBZ0IsR0FBR2pCLElBQUksQ0FBQ00sR0FBRyxDQUFDQyxNQUFNLENBQUMsbUJBQW1CLENBQUM7RUFDM0QsSUFBSVcsTUFBTSxHQUFHRCxnQkFBZ0IsQ0FBQ0UsbUJBQW1CLEVBQUU7RUFDbkRmLE1BQU0sR0FBSWMsTUFBTSxJQUFJLENBQUU7RUFDdEIsYUFBWSxTQUFTLEdBQUdkLE1BQU07RUFDOUI7RUFDQTtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUNDSixJQUFJLENBQUNNLEdBQUcsQ0FBQ1EsWUFBWSxDQUFDRyxnQkFBZ0IsQ0FBQztFQUN2QyxPQUFPYixNQUFNO0FBQ2Q7O0FBRUE7QUFDQSxTQUFTZ0Isd0JBQXdCLEdBQUc7RUFDbkMsSUFBSWhCLE1BQU0sR0FBRyxLQUFLO0VBQ2xCLElBQUlpQixjQUFjLEdBQUdyQixJQUFJLENBQUNNLEdBQUcsQ0FBQ0MsTUFBTSxDQUFDLGdCQUFnQixDQUFDO0VBQ3RELElBQUllLE9BQU8sR0FBR0QsY0FBYyxDQUFDRSxjQUFjLEVBQUU7RUFDN0MsSUFBSUMsZ0JBQWdCLEdBQUdGLE9BQU8sQ0FBQ0csZ0JBQWdCLEVBQUU7RUFDakQsYUFBWSxtQkFBbUIsR0FBR0QsZ0JBQWdCO0VBQ2xELElBQUlBLGdCQUFnQixJQUFJLFVBQVUsSUFBSUEsZ0JBQWdCLElBQUksVUFBVSxFQUFFO0lBQ3JFLGFBQVksV0FBVztFQUN4QixDQUFDLE1BQU07SUFDTnBCLE1BQU0sR0FBRyxJQUFJO0lBQ2IsYUFBWSxXQUFXO0VBQ3hCO0VBQ0FKLElBQUksQ0FBQ00sR0FBRyxDQUFDUSxZQUFZLENBQUNPLGNBQWMsQ0FBQztFQUNyQyxPQUFPakIsTUFBTTtBQUNkOztBQUVBO0FBQ0EsU0FBU3NCLHdCQUF3QixHQUFHO0VBQ25DLElBQUl0QixNQUFNLEdBQUcsS0FBSztFQUNsQixJQUFJdUIsZUFBZSxHQUFHM0IsSUFBSSxDQUFDTSxHQUFHLENBQUNDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQztFQUN4RCxJQUFJcUIsVUFBVSxHQUFHRCxlQUFlLENBQUNFLCtCQUErQixDQUFDLE1BQU0sQ0FBQztFQUN4RSxhQUFZLGFBQWEsR0FBR0QsVUFBVTtFQUN0QyxJQUFJQSxVQUFVLElBQUksQ0FBQyxFQUFFO0lBQ3BCeEIsTUFBTSxHQUFHLElBQUk7SUFDYixhQUFZLFVBQVU7RUFDdkIsQ0FBQyxNQUFNO0lBQ04sYUFBWSxVQUFVO0VBQ3ZCO0VBQ0FKLElBQUksQ0FBQ00sR0FBRyxDQUFDUSxZQUFZLENBQUNhLGVBQWUsQ0FBQztFQUN0QyxPQUFPdkIsTUFBTTtBQUNkOztBQUVBO0FBQ0EsU0FBUzBCLDhCQUE4QixHQUFHO0VBQ3pDLElBQUkxQixNQUFNLEdBQUcsS0FBSztFQUNsQixJQUFJMkIsY0FBYyxHQUFHL0IsSUFBSSxDQUFDTSxHQUFHLENBQUNDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQztFQUN0RCxJQUFJcUIsVUFBVSxHQUFHRyxjQUFjLENBQUNaLG1CQUFtQixFQUFFO0VBQ3JELGFBQVksYUFBYSxHQUFHUyxVQUFVO0VBQ3RDLElBQUlBLFVBQVUsSUFBSSxDQUFDLEVBQUU7SUFDcEJ4QixNQUFNLEdBQUcsSUFBSTtJQUNiLGFBQVksVUFBVTtFQUN2QixDQUFDLE1BQU07SUFDTixhQUFZLFVBQVU7RUFDdkI7RUFDQUosSUFBSSxDQUFDTSxHQUFHLENBQUNRLFlBQVksQ0FBQ2lCLGNBQWMsQ0FBQztFQUNyQyxPQUFPM0IsTUFBTTtBQUNkOztBQUVBO0FBQ0EsU0FBUzRCLHlCQUF5QixHQUFHO0VBQ3BDLElBQUk1QixNQUFNLEdBQUcsS0FBSztFQUNsQixJQUFJNkIsY0FBYyxHQUFHakMsSUFBSSxDQUFDTSxHQUFHLENBQUNDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQztFQUN0RCxJQUFJMkIsWUFBWSxHQUFHRCxjQUFjLENBQUNFLGdDQUFnQyxDQUFDLENBQUMsQ0FBQztFQUNyRSxJQUFJRCxZQUFZLElBQUksQ0FBQyxFQUFFO0lBQ3RCOUIsTUFBTSxHQUFHLElBQUk7SUFDYixhQUFZLFdBQVc7RUFDeEIsQ0FBQyxNQUFNO0lBQ04sYUFBWSxXQUFXO0VBQ3hCO0VBQ0FKLElBQUksQ0FBQ00sR0FBRyxDQUFDUSxZQUFZLENBQUNtQixjQUFjLENBQUM7RUFDckMsT0FBTzdCLE1BQU07QUFDZDs7QUFFQTtBQUNBLFNBQVNnQywwQkFBMEIsR0FBRztFQUNyQyxJQUFJaEMsTUFBTSxHQUFHLEtBQUs7RUFDbEIsSUFBSWlDLFlBQVksR0FBR3JDLElBQUksQ0FBQ00sR0FBRyxDQUFDQyxNQUFNLENBQUMsY0FBYyxDQUFDO0VBQ2xELElBQUkrQixZQUFZLEdBQUdELFlBQVksQ0FBQ0YsZ0NBQWdDLENBQUMsQ0FBQyxDQUFDO0VBQ25FLElBQUlHLFlBQVksSUFBSSxDQUFDLEVBQUU7SUFDdEJsQyxNQUFNLEdBQUcsSUFBSTtJQUNiLGFBQVksVUFBVTtFQUN2QixDQUFDLE1BQU07SUFDTixhQUFZLFVBQVU7RUFDdkI7RUFDQUosSUFBSSxDQUFDTSxHQUFHLENBQUNRLFlBQVksQ0FBQ3VCLFlBQVksQ0FBQztFQUNuQyxPQUFPakMsTUFBTTtBQUNkOztBQUVBO0FBQ0EsU0FBU21DLHNCQUFzQixHQUFHO0VBQ2pDLElBQUluQyxNQUFNLEdBQUcsS0FBSztFQUNsQixJQUFJaUMsWUFBWSxHQUFHckMsSUFBSSxDQUFDTSxHQUFHLENBQUNDLE1BQU0sQ0FBQyxjQUFjLENBQUM7RUFDbEQsSUFBSStCLFlBQVksR0FBR0QsWUFBWSxDQUFDRixnQ0FBZ0MsQ0FBQyxDQUFDLENBQUM7RUFDbkUsSUFBSUcsWUFBWSxJQUFJLENBQUMsRUFBRTtJQUN0QmxDLE1BQU0sR0FBRyxJQUFJO0lBQ2IsYUFBWSxXQUFXO0VBQ3hCLENBQUMsTUFBTTtJQUNOLGFBQVksV0FBVztFQUN4QjtFQUNBSixJQUFJLENBQUNNLEdBQUcsQ0FBQ1EsWUFBWSxDQUFDdUIsWUFBWSxDQUFDO0VBQ25DLE9BQU9qQyxNQUFNO0FBQ2Q7O0FBRUE7QUFDQSxTQUFTb0Msd0JBQXdCLENBQUNDLFlBQVksRUFBRTtFQUMvQyxPQUFPLElBQUlDLE9BQU8sQ0FBQyxVQUFDQyxPQUFPLEVBQUVDLE1BQU0sRUFBSztJQUN2QzVDLElBQUksQ0FBQzZDLE9BQU8sQ0FBQ0Msa0JBQWtCLENBQzlCLENBQUNMLFlBQVksQ0FBQztJQUFFO0lBQ2hCLFVBQVNNLFNBQVMsRUFBRTtNQUNuQixhQUFZLElBQUksRUFBQ0EsU0FBUztNQUMxQixJQUFJM0MsTUFBTSxHQUFHLENBQUM7TUFDZCxLQUFLLElBQUk0QyxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLEdBQUdELFNBQVMsQ0FBQ0UsT0FBTyxDQUFDQyxNQUFNLEVBQUVGLENBQUMsRUFBRSxFQUFFO1FBQ2xELElBQUlHLGlCQUFpQixHQUFHSixTQUFTLENBQUNFLE9BQU8sQ0FBQ0QsQ0FBQyxDQUFDO1FBQzVDLGFBQVksU0FBUyxHQUFHRyxpQkFBaUI7UUFDekMvQyxNQUFNLEdBQUcsQ0FBQztNQUNYO01BQ0EsS0FBSyxJQUFJNEMsQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxHQUFHRCxTQUFTLENBQUNLLGFBQWEsQ0FBQ0YsTUFBTSxFQUFFRixDQUFDLEVBQUUsRUFBRTtRQUN4RCxJQUFJSyx1QkFBdUIsR0FBR04sU0FBUyxDQUFDSyxhQUFhLENBQUNKLENBQUMsQ0FBQztRQUN4RCxhQUFZLFlBQVksR0FBR0ssdUJBQXVCO1FBQ2xEakQsTUFBTSxHQUFHLENBQUM7TUFDWDtNQUNBLEtBQUssSUFBSTRDLENBQUMsR0FBRyxDQUFDLEVBQUVBLENBQUMsR0FBR0QsU0FBUyxDQUFDTyxZQUFZLENBQUNKLE1BQU0sRUFBRUYsQ0FBQyxFQUFFLEVBQUU7UUFDdkQsSUFBSU8sc0JBQXNCLEdBQUdSLFNBQVMsQ0FBQ08sWUFBWSxDQUFDTixDQUFDLENBQUM7UUFDdEQsYUFBWSxZQUFZLEdBQUdPLHNCQUFzQjtRQUNqRG5ELE1BQU0sR0FBRyxDQUFDLENBQUM7TUFDWjtNQUNBb0QsR0FBRyxDQUFDQyxLQUFLLENBQUMsU0FBUyxFQUFDckQsTUFBTSxDQUFDO01BQzNCdUMsT0FBTyxDQUFDdkMsTUFBTSxDQUFDO01BQ2Y7TUFDQTtNQUNBO01BQ0E7SUFDRCxDQUFDLEVBQ0QsVUFBU3NELEtBQUssRUFBRTtNQUNmLGFBQVksSUFBSSxFQUFDLENBQUM7TUFDbEIsYUFBWSxTQUFTLEdBQUdBLEtBQUssQ0FBQ0MsSUFBSSxHQUFHLEtBQUssR0FBR0QsS0FBSyxDQUFDRSxPQUFPO01BQzFEakIsT0FBTyxDQUFDO1FBQ1BnQixJQUFJLEVBQUVELEtBQUssQ0FBQ0MsSUFBSTtRQUNoQkMsT0FBTyxFQUFFRixLQUFLLENBQUNFO01BQ2hCLENBQUMsQ0FBQztJQUNILENBQUMsQ0FDRDtFQUNGLENBQUMsQ0FBQztBQUNIOztBQUVBO0FBQ0EsU0FBU0Msa0JBQWtCLENBQUNwQixZQUFZLEVBQUU7RUFDekMsSUFBSUEsWUFBWSxJQUFJLFVBQVUsRUFBRTtJQUMvQixPQUFPekIsMEJBQTBCLEVBQUU7RUFDcEMsQ0FBQyxNQUFNLElBQUl5QixZQUFZLElBQUksUUFBUSxFQUFFO0lBQ3BDLE9BQU9mLHdCQUF3QixFQUFFO0VBQ2xDLENBQUMsTUFBTSxJQUFJZSxZQUFZLElBQUksY0FBYyxFQUFFO0lBQzFDLE9BQU9YLDhCQUE4QixFQUFFO0VBQ3hDLENBQUMsTUFBTSxJQUFJVyxZQUFZLElBQUksUUFBUSxFQUFFO0lBQ3BDLE9BQU9yQix3QkFBd0IsRUFBRTtFQUNsQyxDQUFDLE1BQU0sSUFBSXFCLFlBQVksSUFBSSxNQUFNLEVBQUU7SUFDbEMsT0FBT3RDLHNCQUFzQixFQUFFO0VBQ2hDLENBQUMsTUFBTSxJQUFJc0MsWUFBWSxJQUFJLFNBQVMsRUFBRTtJQUNyQyxPQUFPVCx5QkFBeUIsRUFBRTtFQUNuQyxDQUFDLE1BQU0sSUFBSVMsWUFBWSxJQUFJLFVBQVUsRUFBRTtJQUN0QyxPQUFPTCwwQkFBMEIsRUFBRTtFQUNwQyxDQUFDLE1BQU0sSUFBSUssWUFBWSxJQUFJLE1BQU0sRUFBRTtJQUNsQyxPQUFPRixzQkFBc0IsRUFBRTtFQUNoQztFQUNBLE9BQU8sS0FBSztBQUNiOztBQUVBO0FBQ0EsU0FBU3VCLHdCQUF3QixHQUFHO0VBQ25DLElBQUkvRCxLQUFLLEVBQUU7SUFDVixJQUFJTSxhQUFhLEdBQUdMLElBQUksQ0FBQ00sR0FBRyxDQUFDQyxNQUFNLENBQUMsZUFBZSxDQUFDO0lBQ3BELElBQUl3RCxZQUFZLEdBQUcxRCxhQUFhLENBQUNJLGlCQUFpQixFQUFFO0lBQ3BELElBQUl1RCxNQUFNLEdBQUdoRSxJQUFJLENBQUNNLEdBQUcsQ0FBQ0MsTUFBTSxDQUFDLE9BQU8sQ0FBQztJQUNyQztJQUNBLElBQUkwRCxRQUFRLEdBQUdELE1BQU0sQ0FBQ0UsYUFBYSxDQUFDLGVBQWUsQ0FBQztJQUNwREgsWUFBWSxDQUFDSSxPQUFPLENBQUNGLFFBQVEsQ0FBQztJQUU5QmpFLElBQUksQ0FBQ00sR0FBRyxDQUFDUSxZQUFZLENBQUNtRCxRQUFRLENBQUM7SUFDL0JqRSxJQUFJLENBQUNNLEdBQUcsQ0FBQ1EsWUFBWSxDQUFDa0QsTUFBTSxDQUFDO0lBQzdCaEUsSUFBSSxDQUFDTSxHQUFHLENBQUNRLFlBQVksQ0FBQ2lELFlBQVksQ0FBQztFQUNwQyxDQUFDLE1BQU07SUFDTjtJQUNBLElBQUlLLE1BQU0sR0FBR3BFLElBQUksQ0FBQzZDLE9BQU8sQ0FBQ3dCLFdBQVcsQ0FBQyx3QkFBd0IsQ0FBQztJQUMvRCxJQUFJQyxRQUFRLEdBQUd0RSxJQUFJLENBQUM2QyxPQUFPLENBQUN3QixXQUFXLENBQUMsMkJBQTJCLENBQUM7SUFDcEUsSUFBSUUsR0FBRyxHQUFHdkUsSUFBSSxDQUFDNkMsT0FBTyxDQUFDd0IsV0FBVyxDQUFDLGlCQUFpQixDQUFDO0lBQ3JELElBQUlHLFlBQVksR0FBR3hFLElBQUksQ0FBQzZDLE9BQU8sQ0FBQzRCLG1CQUFtQixFQUFFO0lBQ3JELElBQUlDLE1BQU0sR0FBRyxJQUFJTixNQUFNLEVBQUU7SUFDekJNLE1BQU0sQ0FBQ0MsU0FBUyxDQUFDTCxRQUFRLENBQUNNLG1DQUFtQyxDQUFDO0lBQzlELElBQUlDLEdBQUcsR0FBR04sR0FBRyxDQUFDTyxTQUFTLENBQUMsU0FBUyxFQUFFTixZQUFZLENBQUNPLGNBQWMsRUFBRSxFQUFFLElBQUksQ0FBQztJQUN2RUwsTUFBTSxDQUFDTSxPQUFPLENBQUNILEdBQUcsQ0FBQztJQUNuQkwsWUFBWSxDQUFDUyxhQUFhLENBQUNQLE1BQU0sQ0FBQztFQUNuQztBQUNEOztBQUVBO0FBQ0E7QUFDQSxTQUFTUSx5QkFBeUIsR0FBRztFQUNwQyxJQUFJbkYsS0FBSyxFQUFFO0lBQ1YsSUFBSUssTUFBTSxHQUFHLEtBQUs7SUFDbEIsSUFBSWEsZ0JBQWdCLEdBQUdqQixJQUFJLENBQUNNLEdBQUcsQ0FBQ0MsTUFBTSxDQUFDLG1CQUFtQixDQUFDO0lBQzNELElBQUlILE1BQU0sR0FBR2EsZ0JBQWdCLENBQUNrRSx1QkFBdUIsRUFBRTtJQUN2RCxhQUFZLFNBQVMsR0FBRy9FLE1BQU07SUFDOUJKLElBQUksQ0FBQ00sR0FBRyxDQUFDUSxZQUFZLENBQUNHLGdCQUFnQixDQUFDO0lBQ3ZDLE9BQU9iLE1BQU07RUFDZCxDQUFDLE1BQU07SUFDTixJQUFJZ0YsT0FBTyxHQUFHcEYsSUFBSSxDQUFDNkMsT0FBTyxDQUFDd0IsV0FBVyxDQUFDLHlCQUF5QixDQUFDO0lBQ2pFLElBQUlnQixlQUFlLEdBQUdyRixJQUFJLENBQUM2QyxPQUFPLENBQUN3QixXQUFXLENBQUMsa0NBQWtDLENBQUM7SUFDbEYsSUFBSWlCLElBQUksR0FBR3RGLElBQUksQ0FBQzZDLE9BQU8sQ0FBQzRCLG1CQUFtQixFQUFFO0lBQzdDLElBQUljLE9BQU8sR0FBR0QsSUFBSSxDQUFDRSxnQkFBZ0IsQ0FBQ0osT0FBTyxDQUFDSyxnQkFBZ0IsQ0FBQztJQUM3RCxJQUFJckYsTUFBTSxHQUFHbUYsT0FBTyxDQUFDRyxpQkFBaUIsQ0FBQ0wsZUFBZSxDQUFDTSxZQUFZLENBQUM7SUFDcEUsYUFBWSxTQUFTLEdBQUd2RixNQUFNO0lBQzlCLE9BQU9BLE1BQU07RUFDZDtBQUNEO0FBRUF3RixNQUFNLENBQUNDLE9BQU8sR0FBRztFQUNoQmhDLGtCQUFrQixFQUFFQSxrQkFBa0I7RUFDdENyQix3QkFBd0IsRUFBRUEsd0JBQXdCO0VBQ2xEMEMseUJBQXlCLEVBQUVBLHlCQUF5QjtFQUNwRHBCLHdCQUF3QixFQUFFQTtBQUMzQixDQUFDLEMiLCJmaWxlIjoiMzIuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIOacrOaooeWdl+WwgeijheS6hkFuZHJvaWTjgIFpT1PnmoTlupTnlKjmnYPpmZDliKTmlq3jgIHmiZPlvIDlupTnlKjmnYPpmZDorr7nva7nlYzpnaLjgIHku6Xlj4rkvY3nva7ns7vnu5/mnI3liqHmmK/lkKblvIDlkK9cbiAqL1xuXG52YXIgaXNJb3NcblxuaXNJb3MgPSAocGx1cy5vcy5uYW1lID09IFwiaU9TXCIpXG5cblxuLy8g5Yik5pat5o6o6YCB5p2D6ZmQ5piv5ZCm5byA5ZCvXG5mdW5jdGlvbiBqdWRnZUlvc1Blcm1pc3Npb25QdXNoKCkge1xuXHR2YXIgcmVzdWx0ID0gZmFsc2U7XG5cdHZhciBVSUFwcGxpY2F0aW9uID0gcGx1cy5pb3MuaW1wb3J0KFwiVUlBcHBsaWNhdGlvblwiKTtcblx0dmFyIGFwcCA9IFVJQXBwbGljYXRpb24uc2hhcmVkQXBwbGljYXRpb24oKTtcblx0dmFyIGVuYWJsZWRUeXBlcyA9IDA7XG5cdGlmIChhcHAuY3VycmVudFVzZXJOb3RpZmljYXRpb25TZXR0aW5ncykge1xuXHRcdHZhciBzZXR0aW5ncyA9IGFwcC5jdXJyZW50VXNlck5vdGlmaWNhdGlvblNldHRpbmdzKCk7XG5cdFx0ZW5hYmxlZFR5cGVzID0gc2V0dGluZ3MucGx1c0dldEF0dHJpYnV0ZShcInR5cGVzXCIpO1xuXHRcdGNvbnNvbGUubG9nKFwiZW5hYmxlZFR5cGVzMTpcIiArIGVuYWJsZWRUeXBlcyk7XG5cdFx0aWYgKGVuYWJsZWRUeXBlcyA9PSAwKSB7XG5cdFx0XHRjb25zb2xlLmxvZyhcIuaOqOmAgeadg+mZkOayoeacieW8gOWQr1wiKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmVzdWx0ID0gdHJ1ZTtcblx0XHRcdGNvbnNvbGUubG9nKFwi5bey57uP5byA5ZCv5o6o6YCB5Yqf6IO9IVwiKVxuXHRcdH1cblx0XHRwbHVzLmlvcy5kZWxldGVPYmplY3Qoc2V0dGluZ3MpO1xuXHR9IGVsc2Uge1xuXHRcdGVuYWJsZWRUeXBlcyA9IGFwcC5lbmFibGVkUmVtb3RlTm90aWZpY2F0aW9uVHlwZXMoKTtcblx0XHRpZiAoZW5hYmxlZFR5cGVzID09IDApIHtcblx0XHRcdGNvbnNvbGUubG9nKFwi5o6o6YCB5p2D6ZmQ5rKh5pyJ5byA5ZCvIVwiKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmVzdWx0ID0gdHJ1ZTtcblx0XHRcdGNvbnNvbGUubG9nKFwi5bey57uP5byA5ZCv5o6o6YCB5Yqf6IO9IVwiKVxuXHRcdH1cblx0XHRjb25zb2xlLmxvZyhcImVuYWJsZWRUeXBlczI6XCIgKyBlbmFibGVkVHlwZXMpO1xuXHR9XG5cdHBsdXMuaW9zLmRlbGV0ZU9iamVjdChhcHApO1xuXHRwbHVzLmlvcy5kZWxldGVPYmplY3QoVUlBcHBsaWNhdGlvbik7XG5cdHJldHVybiByZXN1bHQ7XG59XG5cbi8vIOWIpOaWreWumuS9jeadg+mZkOaYr+WQpuW8gOWQr1xuZnVuY3Rpb24ganVkZ2VJb3NQZXJtaXNzaW9uTG9jYXRpb24oKSB7XG5cdHZhciByZXN1bHQgPSBmYWxzZTtcblx0dmFyIGNsbG9jYXRpb25NYW5nZXIgPSBwbHVzLmlvcy5pbXBvcnQoXCJDTExvY2F0aW9uTWFuYWdlclwiKTtcblx0dmFyIHN0YXR1cyA9IGNsbG9jYXRpb25NYW5nZXIuYXV0aG9yaXphdGlvblN0YXR1cygpO1xuXHRyZXN1bHQgPSAoc3RhdHVzICE9IDIpXG5cdGNvbnNvbGUubG9nKFwi5a6a5L2N5p2D6ZmQ5byA5ZCv77yaXCIgKyByZXN1bHQpO1xuXHQvLyDku6XkuIvku6PnoIHliKTmlq3kuobmiYvmnLrorr7lpIfnmoTlrprkvY3mmK/lkKblhbPpl63vvIzmjqjojZDlj6booYzkvb/nlKjmlrnms5UgY2hlY2tTeXN0ZW1FbmFibGVMb2NhdGlvblxuXHQvKiB2YXIgZW5hYmxlID0gY2xsb2NhdGlvbk1hbmdlci5sb2NhdGlvblNlcnZpY2VzRW5hYmxlZCgpO1xuXHR2YXIgc3RhdHVzID0gY2xsb2NhdGlvbk1hbmdlci5hdXRob3JpemF0aW9uU3RhdHVzKCk7XG5cdGNvbnNvbGUubG9nKFwiZW5hYmxlOlwiICsgZW5hYmxlKTtcblx0Y29uc29sZS5sb2coXCJzdGF0dXM6XCIgKyBzdGF0dXMpO1xuXHRpZiAoZW5hYmxlICYmIHN0YXR1cyAhPSAyKSB7XG5cdFx0cmVzdWx0ID0gdHJ1ZTtcblx0XHRjb25zb2xlLmxvZyhcIuaJi+acuuWumuS9jeacjeWKoeW3suW8gOWQr+S4lOW3suaOiOS6iOWumuS9jeadg+mZkFwiKTtcblx0fSBlbHNlIHtcblx0XHRjb25zb2xlLmxvZyhcIuaJi+acuuezu+e7n+eahOWumuS9jeayoeacieaJk+W8gOaIluacque7meS6iOWumuS9jeadg+mZkFwiKTtcblx0fSAqL1xuXHRwbHVzLmlvcy5kZWxldGVPYmplY3QoY2xsb2NhdGlvbk1hbmdlcik7XG5cdHJldHVybiByZXN1bHQ7XG59XG5cbi8vIOWIpOaWrem6puWFi+mjjuadg+mZkOaYr+WQpuW8gOWQr1xuZnVuY3Rpb24ganVkZ2VJb3NQZXJtaXNzaW9uUmVjb3JkKCkge1xuXHR2YXIgcmVzdWx0ID0gZmFsc2U7XG5cdHZhciBhdmF1ZGlvc2Vzc2lvbiA9IHBsdXMuaW9zLmltcG9ydChcIkFWQXVkaW9TZXNzaW9uXCIpO1xuXHR2YXIgYXZhdWRpbyA9IGF2YXVkaW9zZXNzaW9uLnNoYXJlZEluc3RhbmNlKCk7XG5cdHZhciBwZXJtaXNzaW9uU3RhdHVzID0gYXZhdWRpby5yZWNvcmRQZXJtaXNzaW9uKCk7XG5cdGNvbnNvbGUubG9nKFwicGVybWlzc2lvblN0YXR1czpcIiArIHBlcm1pc3Npb25TdGF0dXMpO1xuXHRpZiAocGVybWlzc2lvblN0YXR1cyA9PSAxNjg0MzY5MDE3IHx8IHBlcm1pc3Npb25TdGF0dXMgPT0gMTk3MDE2ODk0OCkge1xuXHRcdGNvbnNvbGUubG9nKFwi6bqm5YWL6aOO5p2D6ZmQ5rKh5pyJ5byA5ZCvXCIpO1xuXHR9IGVsc2Uge1xuXHRcdHJlc3VsdCA9IHRydWU7XG5cdFx0Y29uc29sZS5sb2coXCLpuqblhYvpo47mnYPpmZDlt7Lnu4/lvIDlkK9cIik7XG5cdH1cblx0cGx1cy5pb3MuZGVsZXRlT2JqZWN0KGF2YXVkaW9zZXNzaW9uKTtcblx0cmV0dXJuIHJlc3VsdDtcbn1cblxuLy8g5Yik5pat55u45py65p2D6ZmQ5piv5ZCm5byA5ZCvXG5mdW5jdGlvbiBqdWRnZUlvc1Blcm1pc3Npb25DYW1lcmEoKSB7XG5cdHZhciByZXN1bHQgPSBmYWxzZTtcblx0dmFyIEFWQ2FwdHVyZURldmljZSA9IHBsdXMuaW9zLmltcG9ydChcIkFWQ2FwdHVyZURldmljZVwiKTtcblx0dmFyIGF1dGhTdGF0dXMgPSBBVkNhcHR1cmVEZXZpY2UuYXV0aG9yaXphdGlvblN0YXR1c0Zvck1lZGlhVHlwZSgndmlkZScpO1xuXHRjb25zb2xlLmxvZyhcImF1dGhTdGF0dXM6XCIgKyBhdXRoU3RhdHVzKTtcblx0aWYgKGF1dGhTdGF0dXMgPT0gMykge1xuXHRcdHJlc3VsdCA9IHRydWU7XG5cdFx0Y29uc29sZS5sb2coXCLnm7jmnLrmnYPpmZDlt7Lnu4/lvIDlkK9cIik7XG5cdH0gZWxzZSB7XG5cdFx0Y29uc29sZS5sb2coXCLnm7jmnLrmnYPpmZDmsqHmnInlvIDlkK9cIik7XG5cdH1cblx0cGx1cy5pb3MuZGVsZXRlT2JqZWN0KEFWQ2FwdHVyZURldmljZSk7XG5cdHJldHVybiByZXN1bHQ7XG59XG5cbi8vIOWIpOaWreebuOWGjOadg+mZkOaYr+WQpuW8gOWQr1xuZnVuY3Rpb24ganVkZ2VJb3NQZXJtaXNzaW9uUGhvdG9MaWJyYXJ5KCkge1xuXHR2YXIgcmVzdWx0ID0gZmFsc2U7XG5cdHZhciBQSFBob3RvTGlicmFyeSA9IHBsdXMuaW9zLmltcG9ydChcIlBIUGhvdG9MaWJyYXJ5XCIpO1xuXHR2YXIgYXV0aFN0YXR1cyA9IFBIUGhvdG9MaWJyYXJ5LmF1dGhvcml6YXRpb25TdGF0dXMoKTtcblx0Y29uc29sZS5sb2coXCJhdXRoU3RhdHVzOlwiICsgYXV0aFN0YXR1cyk7XG5cdGlmIChhdXRoU3RhdHVzID09IDMpIHtcblx0XHRyZXN1bHQgPSB0cnVlO1xuXHRcdGNvbnNvbGUubG9nKFwi55u45YaM5p2D6ZmQ5bey57uP5byA5ZCvXCIpO1xuXHR9IGVsc2Uge1xuXHRcdGNvbnNvbGUubG9nKFwi55u45YaM5p2D6ZmQ5rKh5pyJ5byA5ZCvXCIpO1xuXHR9XG5cdHBsdXMuaW9zLmRlbGV0ZU9iamVjdChQSFBob3RvTGlicmFyeSk7XG5cdHJldHVybiByZXN1bHQ7XG59XG5cbi8vIOWIpOaWremAmuiur+W9leadg+mZkOaYr+WQpuW8gOWQr1xuZnVuY3Rpb24ganVkZ2VJb3NQZXJtaXNzaW9uQ29udGFjdCgpIHtcblx0dmFyIHJlc3VsdCA9IGZhbHNlO1xuXHR2YXIgQ05Db250YWN0U3RvcmUgPSBwbHVzLmlvcy5pbXBvcnQoXCJDTkNvbnRhY3RTdG9yZVwiKTtcblx0dmFyIGNuQXV0aFN0YXR1cyA9IENOQ29udGFjdFN0b3JlLmF1dGhvcml6YXRpb25TdGF0dXNGb3JFbnRpdHlUeXBlKDApO1xuXHRpZiAoY25BdXRoU3RhdHVzID09IDMpIHtcblx0XHRyZXN1bHQgPSB0cnVlO1xuXHRcdGNvbnNvbGUubG9nKFwi6YCa6K6v5b2V5p2D6ZmQ5bey57uP5byA5ZCvXCIpO1xuXHR9IGVsc2Uge1xuXHRcdGNvbnNvbGUubG9nKFwi6YCa6K6v5b2V5p2D6ZmQ5rKh5pyJ5byA5ZCvXCIpO1xuXHR9XG5cdHBsdXMuaW9zLmRlbGV0ZU9iamVjdChDTkNvbnRhY3RTdG9yZSk7XG5cdHJldHVybiByZXN1bHQ7XG59XG5cbi8vIOWIpOaWreaXpeWOhuadg+mZkOaYr+WQpuW8gOWQr1xuZnVuY3Rpb24ganVkZ2VJb3NQZXJtaXNzaW9uQ2FsZW5kYXIoKSB7XG5cdHZhciByZXN1bHQgPSBmYWxzZTtcblx0dmFyIEVLRXZlbnRTdG9yZSA9IHBsdXMuaW9zLmltcG9ydChcIkVLRXZlbnRTdG9yZVwiKTtcblx0dmFyIGVrQXV0aFN0YXR1cyA9IEVLRXZlbnRTdG9yZS5hdXRob3JpemF0aW9uU3RhdHVzRm9yRW50aXR5VHlwZSgwKTtcblx0aWYgKGVrQXV0aFN0YXR1cyA9PSAzKSB7XG5cdFx0cmVzdWx0ID0gdHJ1ZTtcblx0XHRjb25zb2xlLmxvZyhcIuaXpeWOhuadg+mZkOW3sue7j+W8gOWQr1wiKTtcblx0fSBlbHNlIHtcblx0XHRjb25zb2xlLmxvZyhcIuaXpeWOhuadg+mZkOayoeacieW8gOWQr1wiKTtcblx0fVxuXHRwbHVzLmlvcy5kZWxldGVPYmplY3QoRUtFdmVudFN0b3JlKTtcblx0cmV0dXJuIHJlc3VsdDtcbn1cblxuLy8g5Yik5pat5aSH5b+Y5b2V5p2D6ZmQ5piv5ZCm5byA5ZCvXG5mdW5jdGlvbiBqdWRnZUlvc1Blcm1pc3Npb25NZW1vKCkge1xuXHR2YXIgcmVzdWx0ID0gZmFsc2U7XG5cdHZhciBFS0V2ZW50U3RvcmUgPSBwbHVzLmlvcy5pbXBvcnQoXCJFS0V2ZW50U3RvcmVcIik7XG5cdHZhciBla0F1dGhTdGF0dXMgPSBFS0V2ZW50U3RvcmUuYXV0aG9yaXphdGlvblN0YXR1c0ZvckVudGl0eVR5cGUoMSk7XG5cdGlmIChla0F1dGhTdGF0dXMgPT0gMykge1xuXHRcdHJlc3VsdCA9IHRydWU7XG5cdFx0Y29uc29sZS5sb2coXCLlpIflv5jlvZXmnYPpmZDlt7Lnu4/lvIDlkK9cIik7XG5cdH0gZWxzZSB7XG5cdFx0Y29uc29sZS5sb2coXCLlpIflv5jlvZXmnYPpmZDmsqHmnInlvIDlkK9cIik7XG5cdH1cblx0cGx1cy5pb3MuZGVsZXRlT2JqZWN0KEVLRXZlbnRTdG9yZSk7XG5cdHJldHVybiByZXN1bHQ7XG59XG5cbi8vIEFuZHJvaWTmnYPpmZDmn6Xor6JcbmZ1bmN0aW9uIHJlcXVlc3RBbmRyb2lkUGVybWlzc2lvbihwZXJtaXNzaW9uSUQpIHtcblx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcblx0XHRwbHVzLmFuZHJvaWQucmVxdWVzdFBlcm1pc3Npb25zKFxuXHRcdFx0W3Blcm1pc3Npb25JRF0sIC8vIOeQhuiuuuS4iuaUr+aMgeWkmuS4quadg+mZkOWQjOaXtuafpeivou+8jOS9huWunumZheS4iuacrOWHveaVsOWwgeijheWPquWkhOeQhuS6huS4gOS4quadg+mZkOeahOaDheWGteOAguaciemcgOimgeeahOWPr+iHquihjOaJqeWxleWwgeijhVxuXHRcdFx0ZnVuY3Rpb24ocmVzdWx0T2JqKSB7XG5cdFx0XHRcdGNvbnNvbGUubG9nKDExMTEscmVzdWx0T2JqKVxuXHRcdFx0XHR2YXIgcmVzdWx0ID0gMDtcblx0XHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCByZXN1bHRPYmouZ3JhbnRlZC5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRcdHZhciBncmFudGVkUGVybWlzc2lvbiA9IHJlc3VsdE9iai5ncmFudGVkW2ldO1xuXHRcdFx0XHRcdGNvbnNvbGUubG9nKCflt7Lojrflj5bnmoTmnYPpmZDvvJonICsgZ3JhbnRlZFBlcm1pc3Npb24pO1xuXHRcdFx0XHRcdHJlc3VsdCA9IDFcblx0XHRcdFx0fVxuXHRcdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IHJlc3VsdE9iai5kZW5pZWRQcmVzZW50Lmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdFx0dmFyIGRlbmllZFByZXNlbnRQZXJtaXNzaW9uID0gcmVzdWx0T2JqLmRlbmllZFByZXNlbnRbaV07XG5cdFx0XHRcdFx0Y29uc29sZS5sb2coJ+aLkue7neacrOasoeeUs+ivt+eahOadg+mZkO+8micgKyBkZW5pZWRQcmVzZW50UGVybWlzc2lvbik7XG5cdFx0XHRcdFx0cmVzdWx0ID0gMFxuXHRcdFx0XHR9XG5cdFx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgcmVzdWx0T2JqLmRlbmllZEFsd2F5cy5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRcdHZhciBkZW5pZWRBbHdheXNQZXJtaXNzaW9uID0gcmVzdWx0T2JqLmRlbmllZEFsd2F5c1tpXTtcblx0XHRcdFx0XHRjb25zb2xlLmxvZygn5rC45LmF5ouS57ud55Sz6K+355qE5p2D6ZmQ77yaJyArIGRlbmllZEFsd2F5c1Blcm1pc3Npb24pO1xuXHRcdFx0XHRcdHJlc3VsdCA9IC0xXG5cdFx0XHRcdH1cblx0XHRcdFx0dW5pLiRlbWl0KFwib25Qb3B1cFwiLHJlc3VsdClcblx0XHRcdFx0cmVzb2x2ZShyZXN1bHQpO1xuXHRcdFx0XHQvLyDoi6XmiYDpnIDmnYPpmZDooqvmi5Lnu50s5YiZ5omT5byAQVBQ6K6+572u55WM6Z2iLOWPr+S7peWcqEFQUOiuvue9rueVjOmdouaJk+W8gOebuOW6lOadg+mZkFxuXHRcdFx0XHQvLyBpZiAocmVzdWx0ICE9IDEpIHtcblx0XHRcdFx0Ly8gZ290b0FwcFBlcm1pc3Npb25TZXR0aW5nKClcblx0XHRcdFx0Ly8gfVxuXHRcdFx0fSxcblx0XHRcdGZ1bmN0aW9uKGVycm9yKSB7XG5cdFx0XHRcdGNvbnNvbGUubG9nKDIyMjIsMSlcblx0XHRcdFx0Y29uc29sZS5sb2coJ+eUs+ivt+adg+mZkOmUmeivr++8micgKyBlcnJvci5jb2RlICsgXCIgPSBcIiArIGVycm9yLm1lc3NhZ2UpO1xuXHRcdFx0XHRyZXNvbHZlKHtcblx0XHRcdFx0XHRjb2RlOiBlcnJvci5jb2RlLFxuXHRcdFx0XHRcdG1lc3NhZ2U6IGVycm9yLm1lc3NhZ2Vcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0KTtcblx0fSk7XG59XG5cbi8vIOS9v+eUqOS4gOS4quaWueazle+8jOagueaNruWPguaVsOWIpOaWreadg+mZkFxuZnVuY3Rpb24ganVkZ2VJb3NQZXJtaXNzaW9uKHBlcm1pc3Npb25JRCkge1xuXHRpZiAocGVybWlzc2lvbklEID09IFwibG9jYXRpb25cIikge1xuXHRcdHJldHVybiBqdWRnZUlvc1Blcm1pc3Npb25Mb2NhdGlvbigpXG5cdH0gZWxzZSBpZiAocGVybWlzc2lvbklEID09IFwiY2FtZXJhXCIpIHtcblx0XHRyZXR1cm4ganVkZ2VJb3NQZXJtaXNzaW9uQ2FtZXJhKClcblx0fSBlbHNlIGlmIChwZXJtaXNzaW9uSUQgPT0gXCJwaG90b0xpYnJhcnlcIikge1xuXHRcdHJldHVybiBqdWRnZUlvc1Blcm1pc3Npb25QaG90b0xpYnJhcnkoKVxuXHR9IGVsc2UgaWYgKHBlcm1pc3Npb25JRCA9PSBcInJlY29yZFwiKSB7XG5cdFx0cmV0dXJuIGp1ZGdlSW9zUGVybWlzc2lvblJlY29yZCgpXG5cdH0gZWxzZSBpZiAocGVybWlzc2lvbklEID09IFwicHVzaFwiKSB7XG5cdFx0cmV0dXJuIGp1ZGdlSW9zUGVybWlzc2lvblB1c2goKVxuXHR9IGVsc2UgaWYgKHBlcm1pc3Npb25JRCA9PSBcImNvbnRhY3RcIikge1xuXHRcdHJldHVybiBqdWRnZUlvc1Blcm1pc3Npb25Db250YWN0KClcblx0fSBlbHNlIGlmIChwZXJtaXNzaW9uSUQgPT0gXCJjYWxlbmRhclwiKSB7XG5cdFx0cmV0dXJuIGp1ZGdlSW9zUGVybWlzc2lvbkNhbGVuZGFyKClcblx0fSBlbHNlIGlmIChwZXJtaXNzaW9uSUQgPT0gXCJtZW1vXCIpIHtcblx0XHRyZXR1cm4ganVkZ2VJb3NQZXJtaXNzaW9uTWVtbygpXG5cdH1cblx0cmV0dXJuIGZhbHNlO1xufVxuXG4vLyDot7PovazliLAqKuW6lOeUqCoq55qE5p2D6ZmQ6aG16Z2iXG5mdW5jdGlvbiBnb3RvQXBwUGVybWlzc2lvblNldHRpbmcoKSB7XG5cdGlmIChpc0lvcykge1xuXHRcdHZhciBVSUFwcGxpY2F0aW9uID0gcGx1cy5pb3MuaW1wb3J0KFwiVUlBcHBsaWNhdGlvblwiKTtcblx0XHR2YXIgYXBwbGljYXRpb24yID0gVUlBcHBsaWNhdGlvbi5zaGFyZWRBcHBsaWNhdGlvbigpO1xuXHRcdHZhciBOU1VSTDIgPSBwbHVzLmlvcy5pbXBvcnQoXCJOU1VSTFwiKTtcblx0XHQvLyB2YXIgc2V0dGluZzIgPSBOU1VSTDIuVVJMV2l0aFN0cmluZyhcInByZWZzOnJvb3Q9TE9DQVRJT05fU0VSVklDRVNcIik7XHRcdFxuXHRcdHZhciBzZXR0aW5nMiA9IE5TVVJMMi5VUkxXaXRoU3RyaW5nKFwiYXBwLXNldHRpbmdzOlwiKTtcblx0XHRhcHBsaWNhdGlvbjIub3BlblVSTChzZXR0aW5nMik7XG5cblx0XHRwbHVzLmlvcy5kZWxldGVPYmplY3Qoc2V0dGluZzIpO1xuXHRcdHBsdXMuaW9zLmRlbGV0ZU9iamVjdChOU1VSTDIpO1xuXHRcdHBsdXMuaW9zLmRlbGV0ZU9iamVjdChhcHBsaWNhdGlvbjIpO1xuXHR9IGVsc2Uge1xuXHRcdC8vIGNvbnNvbGUubG9nKHBsdXMuZGV2aWNlLnZlbmRvcik7XG5cdFx0dmFyIEludGVudCA9IHBsdXMuYW5kcm9pZC5pbXBvcnRDbGFzcyhcImFuZHJvaWQuY29udGVudC5JbnRlbnRcIik7XG5cdFx0dmFyIFNldHRpbmdzID0gcGx1cy5hbmRyb2lkLmltcG9ydENsYXNzKFwiYW5kcm9pZC5wcm92aWRlci5TZXR0aW5nc1wiKTtcblx0XHR2YXIgVXJpID0gcGx1cy5hbmRyb2lkLmltcG9ydENsYXNzKFwiYW5kcm9pZC5uZXQuVXJpXCIpO1xuXHRcdHZhciBtYWluQWN0aXZpdHkgPSBwbHVzLmFuZHJvaWQucnVudGltZU1haW5BY3Rpdml0eSgpO1xuXHRcdHZhciBpbnRlbnQgPSBuZXcgSW50ZW50KCk7XG5cdFx0aW50ZW50LnNldEFjdGlvbihTZXR0aW5ncy5BQ1RJT05fQVBQTElDQVRJT05fREVUQUlMU19TRVRUSU5HUyk7XG5cdFx0dmFyIHVyaSA9IFVyaS5mcm9tUGFydHMoXCJwYWNrYWdlXCIsIG1haW5BY3Rpdml0eS5nZXRQYWNrYWdlTmFtZSgpLCBudWxsKTtcblx0XHRpbnRlbnQuc2V0RGF0YSh1cmkpO1xuXHRcdG1haW5BY3Rpdml0eS5zdGFydEFjdGl2aXR5KGludGVudCk7XG5cdH1cbn1cblxuLy8g5qOA5p+l57O757uf55qE6K6+5aSH5pyN5Yqh5piv5ZCm5byA5ZCvXG4vLyB2YXIgY2hlY2tTeXN0ZW1FbmFibGVMb2NhdGlvbiA9IGFzeW5jIGZ1bmN0aW9uICgpIHtcbmZ1bmN0aW9uIGNoZWNrU3lzdGVtRW5hYmxlTG9jYXRpb24oKSB7XG5cdGlmIChpc0lvcykge1xuXHRcdHZhciByZXN1bHQgPSBmYWxzZTtcblx0XHR2YXIgY2xsb2NhdGlvbk1hbmdlciA9IHBsdXMuaW9zLmltcG9ydChcIkNMTG9jYXRpb25NYW5hZ2VyXCIpO1xuXHRcdHZhciByZXN1bHQgPSBjbGxvY2F0aW9uTWFuZ2VyLmxvY2F0aW9uU2VydmljZXNFbmFibGVkKCk7XG5cdFx0Y29uc29sZS5sb2coXCLns7vnu5/lrprkvY3lvIDlkK86XCIgKyByZXN1bHQpO1xuXHRcdHBsdXMuaW9zLmRlbGV0ZU9iamVjdChjbGxvY2F0aW9uTWFuZ2VyKTtcblx0XHRyZXR1cm4gcmVzdWx0O1xuXHR9IGVsc2Uge1xuXHRcdHZhciBjb250ZXh0ID0gcGx1cy5hbmRyb2lkLmltcG9ydENsYXNzKFwiYW5kcm9pZC5jb250ZW50LkNvbnRleHRcIik7XG5cdFx0dmFyIGxvY2F0aW9uTWFuYWdlciA9IHBsdXMuYW5kcm9pZC5pbXBvcnRDbGFzcyhcImFuZHJvaWQubG9jYXRpb24uTG9jYXRpb25NYW5hZ2VyXCIpO1xuXHRcdHZhciBtYWluID0gcGx1cy5hbmRyb2lkLnJ1bnRpbWVNYWluQWN0aXZpdHkoKTtcblx0XHR2YXIgbWFpblN2ciA9IG1haW4uZ2V0U3lzdGVtU2VydmljZShjb250ZXh0LkxPQ0FUSU9OX1NFUlZJQ0UpO1xuXHRcdHZhciByZXN1bHQgPSBtYWluU3ZyLmlzUHJvdmlkZXJFbmFibGVkKGxvY2F0aW9uTWFuYWdlci5HUFNfUFJPVklERVIpO1xuXHRcdGNvbnNvbGUubG9nKFwi57O757uf5a6a5L2N5byA5ZCvOlwiICsgcmVzdWx0KTtcblx0XHRyZXR1cm4gcmVzdWx0XG5cdH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG5cdGp1ZGdlSW9zUGVybWlzc2lvbjoganVkZ2VJb3NQZXJtaXNzaW9uLFxuXHRyZXF1ZXN0QW5kcm9pZFBlcm1pc3Npb246IHJlcXVlc3RBbmRyb2lkUGVybWlzc2lvbixcblx0Y2hlY2tTeXN0ZW1FbmFibGVMb2NhdGlvbjogY2hlY2tTeXN0ZW1FbmFibGVMb2NhdGlvbixcblx0Z290b0FwcFBlcm1pc3Npb25TZXR0aW5nOiBnb3RvQXBwUGVybWlzc2lvblNldHRpbmdcbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///32\n");
/***/ }),
/* 33 */
/*!*****************************************************************************************************************************************************!*\
!*** E:/project/sxq/2024-10-16 chunwan/chunwan/uni_modules/zego-ZegoExpressUniApp-JS/components/zego-ZegoExpressUniApp-JS/lib/ZegoExpressEngine.js ***!
\*****************************************************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 11);\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar _exportNames = {\n pluginVersion: true\n};\nexports.pluginVersion = exports.default = void 0;\nvar _ZegoExpressEngineApp = _interopRequireDefault(__webpack_require__(/*! ./ZegoExpressEngineApp */ 34));\nvar _ZegoExpressDefines = __webpack_require__(/*! ./ZegoExpressDefines */ 46);\nObject.keys(_ZegoExpressDefines).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;\n if (key in exports && exports[key] === _ZegoExpressDefines[key]) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _ZegoExpressDefines[key];\n }\n });\n});\nvar ZegoExpressEngine;\nZegoExpressEngine = _ZegoExpressEngineApp.default;\nvar _default = ZegoExpressEngine;\nexports.default = _default;\nvar pluginVersion = '3.16.0';\nexports.pluginVersion = pluginVersion;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vdW5pX21vZHVsZXMvemVnby1aZWdvRXhwcmVzc1VuaUFwcC1KUy9jb21wb25lbnRzL3plZ28tWmVnb0V4cHJlc3NVbmlBcHAtSlMvbGliL1plZ29FeHByZXNzRW5naW5lLmpzIl0sIm5hbWVzIjpbIlplZ29FeHByZXNzRW5naW5lIiwiWmVnb0V4cHJlc3NFbmdpbmVBcHAiLCJwbHVnaW5WZXJzaW9uIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBSUE7QUFDQTtBQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7SUFBQTtJQUFBO01BQUE7SUFBQTtFQUFBO0FBQUE7QUFFQSxJQUFJQSxpQkFBaUI7QUFLckJBLGlCQUFpQixHQUFHQyw2QkFBb0I7QUFBQyxlQUUxQkQsaUJBQWlCO0FBQUE7QUFDekIsSUFBTUUsYUFBYSxHQUFHLFFBQVE7QUFBQyIsImZpbGUiOiIzMy5qcyIsInNvdXJjZXNDb250ZW50IjpbIlxuXG5cblxuaW1wb3J0IFplZ29FeHByZXNzRW5naW5lQXBwIGZyb20gJy4vWmVnb0V4cHJlc3NFbmdpbmVBcHAnO1xuZXhwb3J0ICogZnJvbSAnLi9aZWdvRXhwcmVzc0RlZmluZXMnO1xuXG5sZXQgWmVnb0V4cHJlc3NFbmdpbmU7XG5cblxuXG5cblplZ29FeHByZXNzRW5naW5lID0gWmVnb0V4cHJlc3NFbmdpbmVBcHA7XG5cbmV4cG9ydCBkZWZhdWx0IFplZ29FeHByZXNzRW5naW5lO1xuZXhwb3J0IGNvbnN0IHBsdWdpblZlcnNpb24gPSAnMy4xNi4wJztcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///33\n");
/***/ }),
/* 34 */
/*!********************************************************************************************************************************************************!*\
!*** E:/project/sxq/2024-10-16 chunwan/chunwan/uni_modules/zego-ZegoExpressUniApp-JS/components/zego-ZegoExpressUniApp-JS/lib/ZegoExpressEngineApp.js ***!
\********************************************************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 11);\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ 35));\nvar _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/createClass */ 36));\nvar _ZegoExpressEngineImpl = __webpack_require__(/*! ./impl/ZegoExpressEngineImpl */ 37);\nvar ZegoExpressEngine = /*#__PURE__*/function () {\n function ZegoExpressEngine() {\n (0, _classCallCheck2.default)(this, ZegoExpressEngine);\n }\n (0, _createClass2.default)(ZegoExpressEngine, [{\n key: \"uploadLog\",\n value:\n /**\n * 上传日志到 ZEGO 服务器。\n *\n * 支持版本:1.1.0 及以上。\n * 详情描述:默认情况下,SDK 会在 App 默认目录创建日志文件并打印,每个日志文件默认最大 5MB,三个日志文件循环覆盖写入。当调用此函数时 SDK 会自动将日志文件打包并上传到 ZEGO 服务器。\n * 业务场景:开发者可在 App 提供业务上的“反馈”渠道,当用户反馈的问题属于 ZEGO SDK 时,可调用此函数将 SDK 的本地日志信息上传,并联系 ZEGO 技术支持协助定位用户问题。\n * 调用时机:在 [createEngine] 后。\n * 使用限制:限频每分钟1次。\n * 注意事项:1.在调用本接口上传日志后,如果过快的调用 [destroyEngine] 或 退出 App,则可能存在失败的情况。建议等待几秒,等收到上传成功回调后,再调用 [destroyEngine] 或 退出 App。2.如果希望在 [createEngine] 之前调用,请调用 [submitLog] 接口。\n */\n function uploadLog() {\n return _ZegoExpressEngineImpl.ZegoExpressEngineImpl.getInstance().uploadLog();\n }\n /**\n * 调用实验性 API。\n *\n * 支持版本:2.7.0 及以上。\n * 详情描述:ZEGO 通过此 API 提供 RTC 业务中的部分技术预览或特别定制功能,需要获取功能的使用或详情其详情可咨询 ZEGO 技术支持。\n * 调用时机:在 [createEngine] 后。\n *\n * @param params 传入的参数,格式为 JSON 字符串,具体可咨询 ZEGO 技术支持。\n * @return 返回的参数,格式为 JSON 字符串,具体可咨询 ZEGO 技术支持。\n */\n }, {\n key: \"callExperimentalAPI\",\n value: function callExperimentalAPI(params) {\n return _ZegoExpressEngineImpl.ZegoExpressEngineImpl.getInstance().callExperimentalAPI(params);\n }\n /**\n * 注册事件监听\n *\n * @param event 事件类型。\n * @param callback 事件回调。\n */\n }, {\n key: \"on\",\n value: function on(event, callback) {\n return _ZegoExpressEngineImpl.ZegoExpressEngineImpl.getInstance().on(event, callback);\n }\n /**\n * 注销事件监听\n *\n * @param event 时间类型。\n * @param callback 事件回调。\n */\n }, {\n key: \"off\",\n value: function off(event, callback) {\n return _ZegoExpressEngineImpl.ZegoExpressEngineImpl.getInstance().off(event, callback);\n }\n /**\n * 使用带配置进阶属性的方式登录房间,通过回调参数返回登录结果,推拉流前必须登录房间。\n *\n * 支持版本:2.18.0 及以上。\n * 详情描述:如果房间不存在,[loginRoom] 会创建并登录房间。SDK 用\"房间\"概念来组织用户,用户必须首先登录某个房间,才能进行一系列关键操作,比如推流 [startPublishingStream]、拉流[startPlayingStream]、收发广播消息 [sendBroadcastMessage] 等。为了防止 App 被恶意用户模拟登录,可以在登录房间之前加上鉴权验证,即 [config] 参数传入的 ZegoRoomConfig 对象中的 [token] 参数。\n * 业务场景:在同一个房间内用户可以进行直播、音视频通话等。\n * 调用时机:在 [createEngine] 初始化 SDK 之后调用该函数。\n * 使用限制:同一房间登录接口的调用频率 (QPS) 有一定限制,详情查阅 https://doc-zh.zego.im/article/7581 或联系 ZEGO 技术支持。\n * 注意事项:\n * 1. 使用不同 appID 的 App 不能互通。\n * 2. SDK 支持拉相同 appID 下非同一个房间的流,即跨房间拉流。由于 SDK 的房间信令的相关回调通知是以相同房间为单位,当开发者想要跨房间拉流时,开发者需自行维护相关的消息及信令通知。\n * 3. 强烈建议 userID 与业务 APP 的用户 ID 一一对应,即一个 userID 与一个真实用户是固定且唯一的,而不应该是以随机的 userID 的方式传给 SDK 的方式。因为唯一且固定的 userID 可以让 ZEGO 技术人员快速定位线上问题。\n * 4. 首次因网络原因登录失败或者房间断开连接之后,SDK 重连默认时间为 20min。\n * 隐私保护申明:请勿在此接口填写用户敏感信息,包括但不限于手机号、身份证号、护照编号、真实姓名等。\n * 相关回调:\n * 1. 当用户开始登录房间、登录房间成功或登录房间失败后,将会触发 [onRoomStateChanged] (2.18.0 之前版本不支持,请使用 [onRoomStateUpdate]) 回调通知开发者当前用户连接房间的状态。\n * 2. 登录同一个房间的不同用户可以得到以相同房间为单位的房间信令通知(例如:[onRoomUserUpdate], [onRoomStreamUpdate] 等),一个房间内的用户收不到另一个房间房间信令的通知。\n * 3. 如果由于网络质量原因导致网络临时中断,SDK 内部会自动进行重连。可通过监听 [onRoomStateChanged] (2.18.0 之前版本不支持,请使用 [onRoomStateUpdate]) 回调获取本端当前房间连接状态的变化情况,同时同房间其他用户会接收到 [onRoomUserUpdate] 回调通知。详情请参考 https://doc-zh.zego.im/faq/reconnect\n * 4. 一个房间发的消息(例如 [setStreamExtraInfo], [sendBroadcastMessage], [sendBarrageMessage], [sendCustomCommand] 等)在别的房间无法收到(例如 [onRoomStreamExtraInfoUpdate], [onIMRecvBroadcastMessage], [onIMRecvBarrageMessage], [onIMRecvCustomCommand] 等),目前 ZegoExpressEngine 未提供跨房间消息的能力。开发者可以集成 IM 的 SDK 来实现。\n * 相关接口:\n * 1. 可调用 [logoutRoom] 退出登录,如果没有退出登录而重复调用登录接口(roomID 和 user 保持相同的情况下),控制台会报错,打印错误码 1002001。\n * 2. 如果需要登录多个房间,请在创建引擎前通过 [ZegoRoomMode] 选择多房间模式,然后调用 [loginRoom] 接口登录多房间。\n * 3. 调用 [destroyEngine] 也会使用户自动退出登录。\n *\n * @param roomID 房间 ID,不得为空,最大长度为 128 字节的字符串。\n * 注意事项:\n * 1.房间 ID 由您自己定义。\n * 2. 仅支持数字,英文字符 和 '~', '!', '@', '#', '$', '%', '^', '&', '*', '(', ')', '_', '+', '=', '-', '`', ';', '’', ',', '.', '<', '>', '\\'。\n * 3. 如果需要与 Web SDK 互通,请不要使用 '%'。\n * @param user 用户对象实例,配置用户 ID、用户名。 注意事项:注意用户 ID 需要在相同的 appID 下全局唯一,否则会出现后登录的用户踢掉先登录的用户的情况。\n * @param config 房间进阶配置。\n * @return 本次登录房间结果\n */\n }, {\n key: \"loginRoom\",\n value: function loginRoom(roomID, user, config) {\n return _ZegoExpressEngineImpl.ZegoExpressEngineImpl.getInstance().loginRoom(roomID, user, config);\n }\n /**\n * 退出指定房间 ID 的房间,并带有回调。\n *\n * 支持版本:1.1.0 及以上。\n * 详情描述:该接口会退出房间名为 roomID 的房间。\n * 业务场景:在同一个房间内用户可以进行直播、音视频通话等。\n * 调用时机:登录房间成功后,若不再使用房间功能,用户可以调用函数 [logoutRoom]。\n * 使用限制:无。\n * 注意事项:1. 退出房间会停止该用户的所有推拉流,引擎会停止,SDK 内部会主动停止本地预览。如果切换房间想保留预览能力,请使用 [switchRoom] 函数。2. 若用户登出房间,但传入 roomID 与已登录房间名不同,SDK 会返回失败。\n * 相关回调:调用此函数后会收到 [onRoomStateChanged] (2.18.0 之前版本不支持,请使用 [onRoomStateUpdate]) 回调通知成功退出房间,同时同房间其他用户会接收到 [onRoomUserUpdate] 回调通知(开启 isUserStatusNotify 配置的前提下)。\n * 相关接口:用户可以调用 [loginRoom]、[switchRoom] 函数登录或更换房间。\n *\n * @param roomID 房间 ID,最大长度为 128 字节的字符串。\n * 注意事项:\n * 1. 仅支持数字,英文字符 和 '~', '!', '@', '#', '$', '%', '^', '&', '*', '(', ')', '_', '+', '=', '-', '`', ';', '’', ',', '.', '<', '>', '\\'。\n * 2. 如果需要与 Web SDK 互通,请不要使用 '%'。\n * @return 本次登出房间结果\n */\n }, {\n key: \"logoutRoom\",\n value: function logoutRoom(roomID) {\n return _ZegoExpressEngineImpl.ZegoExpressEngineImpl.getInstance().logoutRoom(roomID);\n }\n /**\n * 使用配置进阶属性的方式切换房间。\n *\n * 支持版本:1.15.0 及以上。\n * 详情描述:使用此函数可以让用户快速从一个房间切换到另外一个房间。\n * 业务场景:若需要快速切换到下一个房间,可调用此函数。\n * 调用时机:登录房间成功后。\n * 使用限制:无。\n * 注意事项:\n * 1. 当调用此函数后,当前正在推或拉的所有流都将会停止(但本地预览不会停止)。\n * 2. 为了防止 App 被恶意用户模拟登录,可以在切换房间之前加上鉴权验证,即 [config] 参数传入的 ZegoRoomConfig 对象中的 [token] 参数。此参数配置作用于即将切换过去的房间。\n * 3. 3.5.0 版本开始支持多房间模式(使用函数 [setRoomMode] 设置 ZegoRoomMode 为 ZEGO_ROOM_MODE_MULTI_ROOM)。\n * 4. 若登录房间 [loginRoom] 时传入了 Token 进行登录,则调用 [switchroom] 切换房间时,必须使用带有 config 参数的 [switchroom] 接口切换房间,并传入对应 Token 值。\n * 隐私保护申明:请勿在此接口填写用户敏感信息,包括但不限于手机号、身份证号、护照编号、真实姓名等。\n * 相关回调:当用户调用 [switchRoom] 函数时,将会触发 [onRoomStateChanged] (2.18.0 之前版本不支持,请使用 [onRoomStateUpdate]) 回调通知开发者当前用户连接房间的状态。\n * 相关接口:用户可以调用 [logoutRoom] 函数退出房间。\n *\n * @param fromRoomID 当前处于的房间 ID。\n * @param toRoomID 需要登录的下一个房间 ID。\n * @param config 房间进阶配置。\n */\n }, {\n key: \"switchRoom\",\n value: function switchRoom(fromRoomID, toRoomID, config) {\n return _ZegoExpressEngineImpl.ZegoExpressEngineImpl.getInstance().switchRoom(fromRoomID, toRoomID, config);\n }\n /**\n * 更新 token 鉴权信息。\n *\n * 支持版本:2.8.0 及以上。\n * 详情描述:当开发者收到 [onRoomTokenWillExpire] 之后,可使用此 API 更新 token 鉴权信息,保障后续 RTC 功能正常。\n * 业务场景:Token 将要过期时使用。\n * 调用时机:收到 [onRoomTokenWillExpire] 之后。\n * 使用限制:无。\n * 注意事项:token 中包含用户的房间权限、推流权限、有效时间等重要信息,详情请参考 https://doc-zh.zego.im/article/10360\n *\n * @param roomID 房间 ID。\n * @param token 需要更新的 token。\n */\n }, {\n key: \"renewToken\",\n value: function renewToken(roomID, token) {\n return _ZegoExpressEngineImpl.ZegoExpressEngineImpl.getInstance().renewToken(roomID, token);\n }\n /**\n * 设置房间附加消息。\n *\n * 支持版本:1.13.0 及以上。\n * 详情描述:用户调用此函数设置房间的附加消息。\n * 业务场景:可以设置一些房间相关的业务属性,比如是否有人在上麦。\n * 调用时机:登录房间成功后。\n * 使用限制:关于此函数的使用限制,请参考 https://doc-zh.zego.im/article/7581 或联系 ZEGO 技术支持。\n * 注意事项:key 非空,key、value 长度有限制,请参考“使用限制”。新设置的 key 和 value 会覆盖旧的设置。\n * 相关回调:相同房间内的其他用户会通过 [onRoomExtraInfoUpdate] 回调函数获得通知。\n * 相关接口:无。\n *\n * @param roomID 房间 ID。\n * @param key 附加消息键。\n * @param value 附加消息值。\n * @return 设置房间附加信息执行结果通知\n */\n }, {\n key: \"setRoomExtraInfo\",\n value: function setRoomExtraInfo(roomID, key, value) {\n return _ZegoExpressEngineImpl.ZegoExpressEngineImpl.getInstance().setRoomExtraInfo(roomID, key, value);\n }\n /**\n * 开始推流,支持多房间模式\n *\n * 支持版本:1.1.0 及以上。\n * 详情描述:用户将自己本地的音视频流推送到 ZEGO RTC 服务器 或 CDN,同一房间的其他用户通过 \"streamID\" 或 CDN 拉流地址就可以拉取该音视频流进行观看。\n * 业务场景:可以用于实时连麦、直播等场景下进行推流。\n * 调用时机:调用 [loginRoom] 加入房间后调用该函数。\n * 使用限制:无。\n * 注意事项:\n * 1. 开始推流前,用户可选择调用 [setVideoConfig] 设置相关视频参数,调用 [startPreview] 进行视频预览。\n * 2. 当推流成功之后,同房间内其他用户可通过监听 [onRoomStreamUpdate] 回调来获取流的新增情况。\n * 3. 在网络质量不佳的情况下,用户推流可能出现中断,SDK 会尝试重连并推流(连接成功后 SDK 会自动进行推流),开发者可通过监听 [onPublisherStateUpdate] 事件来获知当前推流状态以及错误信息。详情请参考 https://doc-zh.zego.im/faq/reconnect\n * 4. 调用 [SetRoomMode] 函数选择多房间,必须明确指定房间 ID。\n *\n * @param streamID 流 ID,长度不超过 256 的字符串。\n * 注意事项:\n * 1. 流 ID 由您自己定义。\n * 2. 需要在整个 AppID 内全局唯一,若出现在同一个 AppID 内,不同的用户各推了一条流且流名相同,将会导致后推流的用户推流失败。\n * 3. 仅支持数字,英文字符 和 '-', '_'。\n * @param channel 推流通道。\n * @param config 推流进阶配置。\n */\n }, {\n key: \"startPublishingStream\",\n value: function startPublishingStream(streamID, channel, config) {\n return _ZegoExpressEngineImpl.ZegoExpressEngineImpl.getInstance().startPublishingStream(streamID, channel, config);\n }\n /**\n * 停止推流,可停止指定通道的音视频流。\n *\n * 支持版本:1.1.0 及以上。\n * 详情描述:用户停止发送本地的音视频流,房间内其他用户会收到流删除通知。\n * 业务场景:可以用于实时连麦、直播等场景下停止推流。\n * 调用时机:调用 [startPublishingStream] 开始推流后。\n * 使用限制:无。\n * 注意事项:\n * 1. 在停止推流之后,同房间内其他用户可通过监听 [onRoomStreamUpdate] 回调来收到流的删除通知。\n * 2. 如果用户已经启动推流,在推送新流(与之前的 streamID 不同)之前,必须要调用此函数停止当前流的推送,否则新流推送会返回失败。\n * 3. 在停止推流之后,开发者应该根据业务情况来决定是否需要停止本地预览。\n *\n * @param channel 推流通道。\n */\n }, {\n key: \"stopPublishingStream\",\n value: function stopPublishingStream(channel) {\n return _ZegoExpressEngineImpl.ZegoExpressEngineImpl.getInstance().stopPublishingStream(channel);\n }\n /**\n * 设置指定推流通道的流附加信息。\n *\n * 支持版本:1.1.0 及以上。\n * 详情描述:可通过此函数设置当前推流的流附加信息。流附加信息是流 ID 的附加信息标识,不同于流 ID 在推流过程中不可修改,流附加信息可以在对应流 ID 的推流中途修改。开发者可根据流附加信息来实现流 ID 相关的可变内容的同步。\n * 调用时机:在创建引擎 [createEngine] 之后,在推流 [startPublishingStream] 前后调用都可生效。\n * 使用限制:无。\n * 相关回调:结果会通过 [ZegoPublisherSetStreamExtraInfoCallback] 回调通知。\n *\n * @param extraInfo 流附加信息,长度不超过1024的字符串。\n * @param channel 推流通道。\n * @return 设置流附加信息执行结果通知。\n */\n }, {\n key: \"setStreamExtraInfo\",\n value: function setStreamExtraInfo(extraInfo, channel) {\n return _ZegoExpressEngineImpl.ZegoExpressEngineImpl.getInstance().setStreamExtraInfo(extraInfo, channel);\n }\n /**\n * 启动/更新本地预览,支持设置其他通道的推流。\n *\n * 支持版本:1.1.0 及以上。\n * 详情描述:用户通过调用此函数可以看到自己本地的画面。\n * 业务场景:可以用于实时连麦、直播等场景下的本地预览。\n * 调用时机:调用 [createEngine] 后。\n * 使用限制:无。\n * 注意事项:1. 预览功能不需要先登录房间或推流,但是在退出房间之后 SDK 内部默认会主动停止预览。2. 可以通过再次调用此函数来切换视图或修改预览模式(ZegoViewMode)。用户只能在一个视图上预览,如果再次调用 [startPreview] 传入新的视图,则预览画面只会在新视图展现。3. 可以通过调用 [setVideoMirrorMode] 函数来设置预览画面的镜像模式,移动端默认开启预览画面的镜像效果。4. 调用此函数后,SDK 会启动音视频引擎,并尝试采集音频与视频。\n * 注意:此函数仅在 ZegoExpressVideo SDK 中有效!\n *\n * @param channel 推流通道\n */\n }, {\n key: \"startPreview\",\n value: function startPreview(channel) {\n return _ZegoExpressEngineImpl.ZegoExpressEngineImpl.getInstance().startPreview(channel);\n }\n /**\n * 停止本地预览,支持设置其他通道的推流\n *\n * 支持版本:1.1.0 及以上。\n * 详情描述:当本地不需要预览时可调用此函数停止预览。\n * 注意事项:停止预览不会影响推流、拉流功能。\n * 注意:此函数仅在 ZegoExpressVideo SDK 中有效!\n *\n * @param channel 推流通道\n */\n }, {\n key: \"stopPreview\",\n value: function stopPreview(channel) {\n return _ZegoExpressEngineImpl.ZegoExpressEngineImpl.getInstance().stopPreview(channel);\n }\n /**\n * 设置视频配置,支持设置其他通道的推流。\n *\n * 支持版本:1.1.0 及以上。\n * 详情描述:设置视频帧率、码率、视频采集分辨率、视频编码输出分辨率等视频配置。\n * 业务场景:不同业务场景下的建议配置 https://doc-zh.zego.im/article/10365\n * 默认值:默认视频采集分辨率为 360p,视频编码输出分辨率为 360p,码率为 600 kbps,帧率为 15 fps。\n * 调用时机:调用 [createEngine] 之后。\n * 使用限制:需要在 [startPreview] 前调用。在 [startPreview] 之后调用无法修改采集分辨率,仅支持修改编码分辨率和码率。\n * 注意事项:移动端分辨率的宽高与 PC 端分辨率的宽高是相反的,例:移动端的 360p 的分辨率为 360x640,而 PC 端 360p 的分辨率为 640x360。\n * 注意:此函数仅在 ZegoExpressVideo SDK 中有效!\n *\n * @param config 视频配置,SDK 提供常用的分辨率、帧率和码率的组合值,也可自定义分辨率、帧率和码率。\n * @param channel 推流通道。\n */\n }, {\n key: \"setVideoConfig\",\n value: function setVideoConfig(config, channel) {\n return _ZegoExpressEngineImpl.ZegoExpressEngineImpl.getInstance().setVideoConfig(config, channel);\n }\n /**\n * 获取当前视频配置,支持设置其他通道的推流\n *\n * 可通过此函数获取指定推流通道当前的视频帧率、码率,视频采集分辨率,视频编码输出分辨率。\n * 注意:此函数仅在 ZegoExpressVideo SDK 中有效!\n *\n * @param channel 推流通道\n * @return 视频配置对象\n */\n }, {\n key: \"getVideoConfig\",\n value: function getVideoConfig(channel) {\n return _ZegoExpressEngineImpl.ZegoExpressEngineImpl.getInstance().getVideoConfig(channel);\n }\n /**\n * 设置镜像模式,支持设置其他通道的推流。\n *\n * 支持版本:1.1.0 及以上。\n * 详情描述:设置本地预览视频以及推送的视频是否开启镜像模式,具体镜像模式可以参考 https://doc-zh.zego.im/article/10365\n * 调用时机:调用 [createEngine] 之后。\n * 使用限制:只有 SDK 负责渲染时该设置才有效。\n * 注意:此函数仅在 ZegoExpressVideo SDK 中有效!\n *\n * @param mirrorMode 预览或推流的镜像模式。\n * @param channel 推流通道。\n */\n }, {\n key: \"setVideoMirrorMode\",\n value: function setVideoMirrorMode(mirrorMode, channel) {\n return _ZegoExpressEngineImpl.ZegoExpressEngineImpl.getInstance().setVideoMirrorMode(mirrorMode, channel);\n }\n /**\n * 设置采集视频的朝向,支持设置其他通道的推流。\n *\n * 支持版本:1.1.0 及以上。\n * 详情描述:设置视频的朝向,详细的介绍可参考文档 https://doc-zh.zego.im/faq/express_video_capture_rotation\n * 业务场景:用户使用移动设备进行直播或视频通话时,可以根据现场设置不同的视频方向。\n * 调用时机:调用 [createEngine] 之后。\n * 使用限制:目前只支持 iOS 和 Android 平台。\n * 注意:此函数仅在 ZegoExpressVideo SDK 中有效!\n *\n * @param orientation 视频的朝向。\n * @param channel 推流通道。\n */\n }, {\n key: \"setAppOrientation\",\n value: function setAppOrientation(orientation, channel) {\n return _ZegoExpressEngineImpl.ZegoExpressEngineImpl.getInstance().setAppOrientation(orientation, channel);\n }\n /**\n * 设置指定推流通道的音频质量配置。\n *\n * 支持版本:1.3.4 及以上。\n * 详情描述:可通过此函数设置音频编码类型、码率、音频声道的组合值。若预设的值无法满足开发者的场景,开发者可自行根据业务要求设置符合的参数。\n * 默认值:默认的音频配置参考 [ZegoAudioConfig] 的默认值。\n * 调用时机:在创建引擎 [createEngine] 后,且在推流 [startPublishingStream] 前设置。\n * 使用限制:无。\n * 相关接口:[getAudioConfig]。\n *\n * @param config 音频质量配置。\n * @param channel 推流通道。\n */\n }, {\n key: \"setAudioConfig\",\n value: function setAudioConfig(config, channel) {\n return _ZegoExpressEngineImpl.ZegoExpressEngineImpl.getInstance().setAudioConfig(config, channel);\n }\n /**\n * 获取指定推流通道的当前音频质量配置。\n *\n * 支持版本:1.8.0 及以上。\n * 详情描述:可通过此函数获取当前的音频编码类型、码率、音频声道的组合值。\n * 调用时机:在创建引擎 [createEngine] 后。\n * 使用限制:无。\n * 相关接口:[setAudioConfig]。\n *\n * @param channel 推流通道。\n * @return 音频质量配置。\n */\n }, {\n key: \"getAudioConfig\",\n value: function getAudioConfig(channel) {\n return _ZegoExpressEngineImpl.ZegoExpressEngineImpl.getInstance().getAudioConfig(channel);\n }\n /**\n * 对指定推流通道的推流画面截图。\n *\n * 支持版本:1.17.0 及以上。\n * 详情描述:对推流画面进行截图。\n * 调用时机:在调用 [startPublishingStream] 或 [startPreview] 后调用此函数。\n * 使用限制:无。\n * 注意事项:截图的分辨率为 [setVideoConfig] 里设置的编码分辨率,若需改为采集分辨率,请调用 [setCapturePipelineScaleMode] 将采集缩放时机模式改为 [Post]。\n * 相关回调:截图结果会通过 [ZegoPublisherTakeSnapshotCallback] 回调。\n * 相关接口:[takePlayStreamSnapshot]。\n * 注意:此函数仅在 ZegoExpressVideo SDK 中有效!\n *\n * @param channel 推流通道。\n * @return 推流画面截图结果回调。\n */\n }, {\n key: \"takePublishStreamSnapshot\",\n value: function takePublishStreamSnapshot(channel) {\n return _ZegoExpressEngineImpl.ZegoExpressEngineImpl.getInstance().takePublishStreamSnapshot(channel);\n }\n /**\n * 停止或恢复发送指定推流通道的音频流。\n *\n * 支持版本:1.1.0 及以上。\n * 详情描述:推流时可调用此函数实现不推音频数据流,本地仍会采集和处理音频,但向网络发送静音帧数据包。\n * 业务场景:用户不希望推出任何音频数据时,可以调用该接口。该接口不影响 [onBeforeAudioPrepAudioData]。\n * 调用时机:在创建引擎 [createEngine] 后调用生效。\n * 使用限制:无。\n * 相关回调:如果在本地设置了停止发送音频流,拉本地流的远端用户可以通过监听 [onRemoteMicStateUpdate] 回调收到 `Mute` 的状态变更通知。\n * 相关接口:[mutePublishStreamVideo]。\n *\n * @param mute 是否停止发送音频流;true 表示不发送音频流;false 表示发送音频流;默认为 false。\n * @param channel 推流通道。\n */\n }, {\n key: \"mutePublishStreamAudio\",\n value: function mutePublishStreamAudio(mute, channel) {\n return _ZegoExpressEngineImpl.ZegoExpressEngineImpl.getInstance().mutePublishStreamAudio(mute, channel);\n }\n /**\n * 停止或恢复发送指定推流通道的视频流。\n *\n * 支持版本:1.1.0 及以上。\n * 详情描述:推流时可调用此函数实现不推视频流,本地摄像头仍能正常工作,能正常采集,预览和处理视频画面,但不向网络发送视频数据。\n * 调用时机:在创建引擎 [createEngine] 后调用生效。\n * 使用限制:无。\n * 相关回调:如果在本地设置了停止发送视频流,拉本地流的远端用户可以通过监听 [onRemoteCameraStateUpdate] 回调收到 `Mute` 的状态变更通知。\n * 相关接口:[mutePublishStreamAudio]。\n * 注意:此函数仅在 ZegoExpressVideo SDK 中有效!\n *\n * @param mute 是否停止发送视频流;true 表示只发送音频流不发送视频流;false 表示同时发送音频和视频流;默认为 false。\n * @param channel 推流通道。\n */\n }, {\n key: \"mutePublishStreamVideo\",\n value: function mutePublishStreamVideo(mute, channel) {\n return _ZegoExpressEngineImpl.ZegoExpressEngineImpl.getInstance().mutePublishStreamVideo(mute, channel);\n }\n /**\n * 开始或停止指定推流通道的流量控制。\n *\n * 支持版本:1.5.0 及以上。\n * 详情描述:开启流量控制可以使 SDK 根据当前上行网络环境状况,或者在1 对1 互动场景下根据对方下行网络环境状况,调节音视频推流码率大小,以保障效果流畅。同时,可进一步指定流量控制的属性来调整相应的控制策略。\n * 默认值:默认开启。\n * 调用时机:在创建引擎 [createEngine] 后,在推流 [startPublishingStream] 之前调用生效。\n * 使用限制:仅支持 RTC 推流。\n *\n * @param enable 是否使用流量控制;true 表示开启流控;false 表示关闭流控;默认为 true。\n * @param property 流量控制的属性,位掩码格式。具体可设置为 [ZegoTrafficControlProperty] 的属性的一个或多个枚举组合。默认为 AdaptiveFPS。\n * @param channel 推流通道。\n */\n }, {\n key: \"enableTrafficControl\",\n value: function enableTrafficControl(enable, property, channel) {\n return _ZegoExpressEngineImpl.ZegoExpressEngineImpl.getInstance().enableTrafficControl(enable, property, channel);\n }\n /**\n * 设置指定推流通道的流量控制视频码率最低值\n *\n * 支持版本:1.1.0 及以上。\n * 详情描述:设置流量控制时视频码率达到最低阈值时的控制策略。当码率低于最低阈值时,可以选择不发送视频数据或者以极低帧率发送。\n * 默认值:无视频码率最低阈值的控制效果。\n * 调用时机:在创建引擎 [createEngine] 后,在推流 [startPublishingStream] 前调用生效。\n * 使用限制:必须开启流量控制 [enableTrafficControl]。\n * 相关接口:[enableTrafficControl]。\n * 注意:此函数仅在 ZegoExpressVideo SDK 中有效!\n *\n * @param bitrate 最低视频码率,单位为 kbps。\n * @param mode 低于最低码率时的视频发送模式。\n * @param channel 推流通道。\n */\n }, {\n key: \"setMinVideoBitrateForTrafficControl\",\n value: function setMinVideoBitrateForTrafficControl(bitrate, mode, channel) {\n return _ZegoExpressEngineImpl.ZegoExpressEngineImpl.getInstance().setMinVideoBitrateForTrafficControl(bitrate, mode, channel);\n }\n /**\n * 设置推流端采集音量。\n *\n * 支持版本:1.13.0 及以上。\n * 详情描述:此函数用于在设备采集音量的基础上做增益处理,本端用户可控制往远端发送音频流的声音大小。\n * 默认值:默认为 100。\n * 调用时机:在创建引擎 [createEngine] 后。\n * 使用限制:在推流途中可以动态设置采集音量。\n * 相关接口:设置拉流音量 [setPlayVolume]。\n *\n * @param volume 音量增益百分比,范围为 0 ~ 200,默认值为 100,表示为设备原始采集音量的 100%.\n */\n }, {\n key: \"setCaptureVolume\",\n value: function setCaptureVolume(volume) {\n return _ZegoExpressEngineImpl.ZegoExpressEngineImpl.getInstance().setCaptureVolume(volume);\n }\n /**\n * 增加转推至 CDN 的 URL。\n *\n * 支持版本:1.1.0 及以上。\n * 详情描述:将 ZEGO RTC 服务器的音视频流转推至自定义的 CDN 内容分发网络,延迟高但是支持高并发拉流。\n * 业务场景:1. 常用于对延迟没有特别高要求的大规模直播场景。2. 由于 ZEGO RTC 服务器本身可配置支持 CDN 内容分发网络,此函数主要为自身拥有 CDN 内容分发服务的开发者使用。3. 此函数支持动态转推至多个 CDN 内容分发网络,因此开发者可以使用此函数来作为 CDN 内容分发服务的一个容灾方案。\n * 调用时机:在调用 [createEngine] 函数创建引擎后。\n * 使用限制:当调用 [enablePublishDirectToCDN] 函数设置为 true 将流直推到 CDN 时,再调用本函数将无效。\n * 注意事项:删除转推至 CDN 的 URL 需要调用 [removePublishCdnUrl],调用 [stopPublishingStream] 不会删除转推至 CDN 的 URL。\n * 相关接口:删除转推至 CDN 的 URL [removePublishCdnUrl],结果回调函数 [onPublisherRelayCDNStateUpdate]。\n *\n * @param streamID 流 ID。\n * @param targetURL CDN 转推地址,支持的转推地址格式有 rtmp, rtmps.\n * @return 更新 CDN 转推结果通知。\n */\n }, {\n key: \"addPublishCdnUrl\",\n value: function addPublishCdnUrl(streamID, targetURL) {\n return _ZegoExpressEngineImpl.ZegoExpressEngineImpl.getInstance().addPublishCdnUrl(streamID, targetURL);\n }\n /**\n * 删除转推至 CDN 的 URL。\n *\n * 支持版本:1.1.0 及以上。\n * 详情描述:当已经通过 [addPublishCdnUrl] 添加了某个 CDN 转推地址,需要将流停止转推时调用此函数。\n * 调用时机:在调用 [createEngine] 函数创建引擎后,不需要继续转推至 CDN 时。\n * 使用限制:当调用 [enablePublishDirectToCDN] 函数设置为 true 将流直推到 CDN 时,再调用本函数将无效。\n * 注意事项:此函数并不会停止推往 ZEGO RTC 服务器的音视频流。\n * 相关接口:增加转推至 CDN 的 URL [addPublishCdnUrl],结果回调函数 [onPublisherRelayCDNStateUpdate]。\n *\n * @param streamID 流 ID。\n * @param targetURL CDN 转推地址,支持的转推地址格式有 rtmp.\n * @return 更新 CDN 转推结果通知。\n */\n }, {\n key: \"removePublishCdnUrl\",\n value: function removePublishCdnUrl(streamID, targetURL) {\n return _ZegoExpressEngineImpl.ZegoExpressEngineImpl.getInstance().removePublishCdnUrl(streamID, targetURL);\n }\n /**\n * 是否直接推流到 CDN(不经过 ZEGO RTC 服务器), 支持设置其他通道的推流。\n *\n * 支持版本:1.5.0 及以上。\n * 详情描述:是否不经过 ZEGO RTC 服务器直接推流到 CDN。\n * 业务场景:常用于对延迟没有特别高要求的大规模直播场景。\n * 默认值:默认为 false,不开启直推。\n * 调用时机:在创建引擎 [createEngine]后,开始推流[startPublishingStream] 前。\n * 注意事项:直推 CDN 功能在网络传输过程中不经过 ZEGO 实时音视频云,无法使用 ZEGO 的超低延迟音视频服务。\n * 相关接口:动态转推至 CDN 函数 [addPublishCdnUrl]、[removePublishCdnUrl]。\n *\n * @param enable 是否开启直推 CDN;true 表示开启直推 CDN;false 表示不开启直推 CDN;默认为 false。\n * @param config CDN 配置,若为 null 则使用 Zego 的后台配置。\n * @param channel 推流通道。\n */\n }, {\n key: \"enablePublishDirectToCDN\",\n value: function enablePublishDirectToCDN(enable, config, channel) {\n return _ZegoExpressEngineImpl.ZegoExpressEngineImpl.getInstance().enablePublishDirectToCDN(enable, config, channel);\n }\n /**\n * 设置推流水印,支持设置其他通道的推流。\n *\n * 支持版本:1.1.0 及以上。\n * 详情描述:给推流画面设置水印。\n * 业务场景:常用于标识推流来源的场景。\n * 调用时机:在调用 [createEngine] 函数创建引擎后。\n * 注意事项:水印的布局不能超出推流的视频编码分辨率。可在推流前或推流中途任意时刻设置。\n * 注意:此函数仅在 ZegoExpressVideo SDK 中有效!\n *\n * @param watermark 水印布局左上角为坐标系原点,区域不能超过编码分辨率设置的大小。若为空表示取消水印。\n * @param isPreviewVisible 是否本地预览能看见水印。\n * @param channel 推流通道。\n */\n }, {\n key: \"setPublishWatermark\",\n value: function setPublishWatermark(watermark, isPreviewVisible, channel) {\n return _ZegoExpressEngineImpl.ZegoExpressEngineImpl.getInstance().setPublishWatermark(watermark, isPreviewVisible, channel);\n }\n /**\n * 开/关硬件编码。\n *\n * 支持版本:1.1.0 及以上。\n * 详情描述:推流时是否采用硬件编码的开关,开启硬解编码后会使用 GPU 进行编码,降低 CPU 使用率。\n * 调用时机:在推流前设置才能生效,如果在推流后设置,停推后重新推流可以生效。\n * 注意事项:由于少部分机型设备硬编支持不是特别好,SDK 默认使用软件编码的方式。若开发者在某些机型测试时发现推大分辨率音视频流时设备发热严重,可考虑调用此函数开启硬编的方式。\n *\n * @param enable 是否开启硬件编码;true 表示开启硬编;false 表示关闭硬编;默认为 false。\n */\n }, {\n key: \"enableHardwareEncoder\",\n value: function enableHardwareEncoder(enable) {\n return _ZegoExpressEngineImpl.ZegoExpressEngineImpl.getInstance().enableHardwareEncoder(enable);\n }\n /**\n * 设置关闭摄像头时所推静态图片的路径\n *\n * 支持版本:2.9.0 及以上。\n * 详情描述:设置关闭摄像头时所推静态图片的路径。开始正常推流后,调用 enableCamera(false) 时会开始推静态图片,调用 enableCamera(true) 时会结束推静态图片。\n * 业务场景:开发者希望关闭摄像头时,显示静态图片。例如,主播退后台的时候,会主动关闭摄像头,此时观众侧需要展示主播暂时离开的图片。\n * 调用时机:初始化引擎之后,关闭摄像头前调用本 API 进行参数配置,在关闭摄像头后,即可推静态图片。\n * 使用限制:\n * 1. 图片支持类型为 JPEG/JPG、PNG、BMP、HEIF。\n * 2. 该接口只对 SDK 视频采集有效,对自定义视频采集不生效。\n * 3. 不支持图片路径是网络链接。\n * 注意事项:\n * 1. 本地预览无法看到该静态图片。\n * 2. 外部滤镜、水印、镜像、截图都不会生效。\n * 3. 如果图片宽高比与设定的编码宽高比不一致,会按照编码宽高比进行裁剪。\n * 平台差异:\n * 1. Windows:直接填写图片位置,如\"D://dir//image.jpg\"。\n * 2. iOS/macOS:如果是完整路径则添加 \"file:\" 前缀,如:@\"file:/var/image.png\"。资产则添加 \"asset:\" 前缀,如:@\"asset:watermark\"。\n * 3. Android:如果是完整路径则添加 \"file:\" 前缀,如:\"file:/sdcard/image.png\"。“assets” 目录下的图片则添加 \"asset:\" 前缀,如:\"asset:watermark.png\"。\n * 4. Flutter:如果是绝对路径则添加 \"file:\" 前缀,如:\"file:/sdcard/image.png\"。“assets” 资源中的图片则添加 \"flutter-asset://\" 前缀,如:\"flutter-asset://assets/watermark.png\"。\n *\n * @param filePath 图片路径\n * @param channel 推流通道。\n */\n }, {\n key: \"setDummyCaptureImagePath\",\n value: function setDummyCaptureImagePath(filePath, channel) {\n return _ZegoExpressEngineImpl.ZegoExpressEngineImpl.getInstance().setDummyCaptureImagePath(filePath, channel);\n }\n /**\n * 开始拉流(从 ZEGO RTC 服务器或第三方 CDN),支持多房间模式。\n *\n * 支持版本:1.1.0 及以上。\n * 详情描述:从 ZEGO RTC 服务器或第三方 CDN 拉取远端用户的音视频流进行互通。\n * 业务场景:在实时连麦或直播场景下,开发者可通过监听 [onRoomStreamUpdate] 事件回调来获取所在房间内新增的流信息,并调用此接口传入 \"streamID\" 进行拉流操作。\n * 调用时机:调用 [loginRoom] 加入房间后调用该函数。\n * 使用限制:无。\n * 注意事项:1. 开发者可通过再次调用此函数实现切换拉流 canvas 的操作(streamID 必须一样)。同一条流只能在唯一的视图中拉取展示,如果调用 [startPlayingStream] 传入相同的 \"streamID\" 和不同的视图,画面只会在新视图展现。2. 首次拉流时如果因网络原因拉流失败或拉流中断,SDK 会在 20min 内多次尝试重连并拉流。3. 在网络质量不佳的情况下,用户拉流可能出现中断,SDK 会尝试重连并拉流,可通过监听 [onPlayerStateUpdate] 事件来获知当前拉流状态以及错误信息。详情请参考 https://doc-zh.zego.im/faq/reconnect 4. 如果拉取不存在的 \"streamID\",SDK 会持续尝试拉取,在该 streamID 对应的音视频流被成功推送后,该流可以真正被拉取到。\n * 注意:此函数仅在 ZegoExpressVideo SDK 中有效!\n *\n * @param streamID 流 ID,长度不超过 256 字节的字符串。\n * 注意事项:\n * 仅支持数字,英文字符 和 '-', '_'。\n * @param config 拉流进阶配置, [ZegoPlayerConfig] 中房间 [roomID] 为登录的房间ID。\n */\n }, {\n key: \"startPlayingStream\",\n value: function startPlayingStream(streamID, config) {\n return _ZegoExpressEngineImpl.ZegoExpressEngineImpl.getInstance().startPlayingStream(streamID, config);\n }\n /**\n * 停止拉流。\n *\n * 支持版本:1.1.0 及以上。\n * 详情描述:停止从 ZEGO RTC 服务器拉取远端用户的音视频流。\n * 业务场景:在实时连麦场景下,开发者可通过监听 [onRoomStreamUpdate] 事件回调来获取所在房间内删除的流信息,并调用此接口传入 \"streamID\" 进行停止拉流操作。\n * 调用时机:调用 [loginRoom] 加入房间后调用该函数。\n * 使用限制:无。\n * 注意事项:停止拉流后对此条流此前设置的属性如 [setPlayVolume]、[mutePlayStreamAudio]、[mutePlayStreamVideo] 等拉流相关的配置都会失效,需要在下次拉流之前重新设置。\n *\n * @param streamID 流 ID。\n */\n }, {\n key: \"stopPlayingStream\",\n value: function stopPlayingStream(streamID) {\n return _ZegoExpressEngineImpl.ZegoExpressEngineImpl.getInstance().stopPlayingStream(streamID);\n }\n /**\n * 拉流画面截图。\n *\n * 支持版本:1.17.0 及以上。\n * 详情描述:对指定拉流ID画面截图。\n * 调用时机:[startPlayingStream]后调用。\n * 使用限制:无。\n * 相关回调:[onPlayerTakeSnapshotResult] 截图数据回调。\n * 注意:此函数仅在 ZegoExpressVideo SDK 中有效!\n *\n * @param streamID 要截图的流 ID。\n * @return 拉流画面截图结果回调。\n */\n }, {\n key: \"takePlayStreamSnapshot\",\n value: function takePlayStreamSnapshot(streamID) {\n return _ZegoExpressEngineImpl.ZegoExpressEngineImpl.getInstance().takePlayStreamSnapshot(streamID);\n }\n /**\n * 设置拉流音量。\n *\n * 支持版本:1.16.0 及以上。\n * 详情描述:设置拉流的声音大小,本端用户可控制音频流的播放音量。\n * 调用时机:[startPlayingStream] 后调用。\n * 使用限制:无。\n * 相关接口:[setAllPlayStreamVolume] 设置所有拉流音量。\n * 注意事项:停止拉流后,再次拉流需要重新设置。此函数与 [setAllPlayStreamVolume] 函数相互覆盖,最后一个调用生效。\n *\n * @param streamID 流 ID。\n * @param volume 音量百分比,取值范围为 0 ~ 200,默认值为 100。\n */\n }, {\n key: \"setPlayVolume\",\n value: function setPlayVolume(streamID, volume) {\n return _ZegoExpressEngineImpl.ZegoExpressEngineImpl.getInstance().setPlayVolume(streamID, volume);\n }\n /**\n * 设置所有拉流音量。\n *\n * 支持版本:2.3.0 及以上。\n * 详情描述:此函数用于设置所有拉流的声音大小,本端用户可控制所有音频流的播放音量。\n * 调用时机:[startPlayingStream]后调用。\n * 相关接口:可使用 [setPlayVolume] 设置指定音视频流的音量。\n * 使用限制:无。\n * 注意事项:与setPlayVolume函数相互覆盖,最后一个调用生效。\n *\n * @param volume 音量百分比,取值范围为 0 ~ 200,默认值为 100。\n */\n }, {\n key: \"setAllPlayStreamVolume\",\n value: function setAllPlayStreamVolume(volume) {\n return _ZegoExpressEngineImpl.ZegoExpressEngineImpl.getInstance().setAllPlayStreamVolume(volume);\n }\n /**\n * 设置播放视频流类型。\n *\n * 支持版本:2.3.0 及以上。\n * 详情描述:当推流方通过 [setVideoConfig] 设置了 codecID 为 SVC 时,拉流方可以动态设置选用不同的流类型(小分辨率为标准图层的二分之一)。\n * 业务场景:一般情况下,在网络较弱或者渲染的 UI 窗体较小的情况下,可以选择使用拉取小分辨率的视频来达到节省带宽的目的。\n * 调用时机:[createEngine] 后可调用。\n * 使用限制:无。\n * 注意:此函数仅在 ZegoExpressVideo SDK 中有效!\n *\n * @param streamID 流 ID。\n * @param streamType 视频流类型。\n */\n }, {\n key: \"setPlayStreamVideoType\",\n value: function setPlayStreamVideoType(streamID, streamType) {\n return _ZegoExpressEngineImpl.ZegoExpressEngineImpl.getInstance().setPlayStreamVideoType(streamID, streamType);\n }\n /**\n * 设置拉流播放缓存自适应调整的区间范围。\n *\n * 支持版本:2.1.0 及以上。\n * 详情描述:设置拉流时 SDK 内部缓存自适应调整的区间范围 0-4000ms。\n * 业务场景:一般在网络环境较差的情况下,调整增大拉流的播放缓存,会显著减少音视频卡顿,但会增大延迟。\n * 调用时机:[createEngine] 后。\n * 使用限制:无。\n * 注意事项:当开发者设置的缓存区间上限超过 4000ms 时,会取值 4000 ms。当开发者设置的缓存区间上限小于缓存区间下限时,会自动将上限取值为下限。\n *\n * @param streamID 流 ID。\n * @param minBufferInterval 缓存自适应区间下限,单位毫秒。默认值为 0ms。\n * @param maxBufferInterval 缓存自适应区间上限,单位毫秒。默认值为 4000ms。\n */\n }, {\n key: \"setPlayStreamBufferIntervalRange\",\n value: function setPlayStreamBufferIntervalRange(streamID, minBufferInterval, maxBufferInterval) {\n return _ZegoExpressEngineImpl.ZegoExpressEngineImpl.getInstance().setPlayStreamBufferIntervalRange(streamID, minBufferInterval, maxBufferInterval);\n }\n /**\n * 设置拉音视频流优先级的权重。\n *\n * 支持版本:1.1.0 及以上。\n * 详情描述:设置拉音视频流优先级的权重。\n * 业务场景:当开发者业务上,需要对某音视流优先保证质量时(纯音频流下请勿使用),可使用此接口。例如:上课场景,学生拉多路流,则可设置老师流高优先级。\n * 调用时机:[startPlayingStream]之后 。\n * 使用限制:无。\n * 注意事项:默认所有音视频流的权重相同。只能设置一路流是高优先级的,以最后设置的为准。流停止之后自动恢复初始状态,所有流的权重相同。在本地网络不好的时候,保证focus流的同时,可能造成其他的卡顿更多。\n *\n * @param streamID 流 ID。\n */\n }, {\n key: \"setPlayStreamFocusOn\",\n value: function setPlayStreamFocusOn(streamID) {\n return _ZegoExpressEngineImpl.ZegoExpressEngineImpl.getInstance().setPlayStreamFocusOn(streamID);\n }\n /**\n * 拉流是否可接收指定音频数据。\n *\n * 支持版本:1.1.0 及以上。\n * 详情描述:在实时音视频互动过程中,本地用户可根据需要,通过此函数控制拉流时是否接收指定远端用户的音频数据,当开发者不接收音频收据时,可降低硬件和网络的开销。\n * 业务场景:当开发者需要快速关闭、恢复远端音频时,可调用此函数。相比重新拉流,能极大降低耗时,提升互动体验。\n * 调用时机:在调用 [createEngine] 后可调用此函数。\n * 注意事项:\n * 1. 与 [muteAllPlayAudioStreams] 一起使用时,可以互相覆盖配置。\n * 2. 与 [muteAllPlayStreamAudio] 一起使用时,只有当 [muteAllPlayStreamAudio] 函数设置为 “false”时,此函数才有效。\n * 3. 停止拉流后对此条流此前设置的属性如 [setPlayVolume]、[mutePlayStreamAudio]、[mutePlayStreamVideo] 等拉流相关的配置都会失效,需要在下次拉流之前重新设置。\n * 相关接口:可调用 [muteAllPlayStreamAudio] 函数控制是否接收所有音频数据。必须当 [muteAllPlayStreamAudio] 和 [mutePlayStreamAudio] 两个函数同时设置为 \"false\" 时,本地用户拉流时才能接收远端用户的音频数据:1. 当调用 [muteAllPlayStreamAudio(true)] 函数时,全局生效,即本地用户会禁止接收所有远端用户的音频数据,此时无论在 [muteAllPlayStreamAudio] 之前还是之后调用 [mutePlayStreamAudio] 函数都不生效。2. 当调用 [muteAllPlayStreamAudio(false)] 函数时,本地用户可以接收所有远端用户的音频数据,此时可再通过 [mutePlayStreamAudio] 函数控制是否接收单条音频数据。调用 [mutePlayStreamAudio(true, streamID)] 函数则本地用户可以接收该 \"streamID\" 之外的其他音频数据;调用 [mutePlayStreamAudio(false, streamID)] 函数则本地用户可以接收 \"streamID\" 的音频数据。\n *\n * @param streamID 流 ID。\n * @param mute 拉流时是否可以接收指定远端用户的音频数据,“true” 表示禁止,“false” 表示接收,默认值为 “false”。\n */\n }, {\n key: \"mutePlayStreamAudio\",\n value: function mutePlayStreamAudio(streamID, mute) {\n return _ZegoExpressEngineImpl.ZegoExpressEngineImpl.getInstance().mutePlayStreamAudio(streamID, mute);\n }\n /**\n * 拉流是否可接收指定视频数据。\n *\n * 支持版本:1.1.0 及以上。\n * 详情描述:在实时音视频互动过程中,本地用户可根据需要,通过此函数控制拉流时是否接收指定远端用户的视频数据,当开发者不接收视频数据时,可降低硬件和网络的开销。\n * 业务场景:当开发者需要快速关闭、恢复观看远端视频画面时,可调用此函数。相比重新拉流,能极大降低耗时,提升互动体验。\n * 调用时机:在调用 [createEngine] 后可调用此函数。\n * 注意事项:\n * 1. 与 [muteAllPlayAudioStreams] 一起使用时,可以互相覆盖配置。\n * 2. 与 [muteAllPlayStreamVideo] 一起使用时,只有当 [muteAllPlayStreamVideo] 函数设置为 “false”时,此函数才有效。\n * 3. 当指定不接收视频流数据时,视图默认保持在最后一帧,如果需要清除最后一帧,请联系 ZEGO 技术支持。\n * 4. 停止拉流后对此条流此前设置的属性如 [setPlayVolume]、[mutePlayStreamAudio]、[mutePlayStreamVideo] 等拉流相关的配置都会失效,需要在下次拉流之前重新设置。\n * 相关接口:可调用 [muteAllPlayStreamVideo] 函数控制是否接收所有视频数据。必须当 [muteAllPlayStreamVideo] 和 [mutePlayStreamVideo] 两个函数同时设置为 \"false\" 时,本地用户拉流时才能接收远端用户的视频数据:1. 当调用 [muteAllPlayStreamVideo(true)] 函数时,全局生效,即本地用户会禁止接收所有远端用户的视频数据,此时无论在 [muteAllPlayStreamVideo] 之前还是之后调用 [mutePlayStreamVideo] 函数都不生效。2. 当调用 [muteAllPlayStreamVideo(false)] 函数时,本地用户可以接收所有远端用户的视频数据,此时可再通过 [mutePlayStreamVideo] 函数控制是否接收单条视频数据。调用 [mutePlayStreamVideo(true, streamID)] 函数则本地用户可以接收该 \"streamID\" 之外的其他视频数据;调用 [mutePlayStreamVideo(false, streamID)] 函数则本地用户可以接收 \"streamID\" 的视频数据。\n * 注意:此函数仅在 ZegoExpressVideo SDK 中有效!\n *\n * @param streamID 流 ID。\n * @param mute 拉流时是否可以接收指定远端用户的视频数据,“true” 表示禁止,“false” 表示接收,默认值为 “false”。SDK 内部自动拉取的流默认值为 false。\n */\n }, {\n key: \"mutePlayStreamVideo\",\n value: function mutePlayStreamVideo(streamID, mute) {\n return _ZegoExpressEngineImpl.ZegoExpressEngineImpl.getInstance().mutePlayStreamVideo(streamID, mute);\n }\n /**\n * 拉流是否接收所有音频数据。\n *\n * 支持版本:2.4.0 及以上。\n * 详情描述:在实时音视频互动过程中,本地用户可根据需要,通过此函数控制拉流时是否接收所有远端用户的音频数据(包括在调用该函数后新加入房间的用户所推的音频流)。默认情况下,用户加入房间后可以接收所有远端用户推送的音频数据。当开发者不接收音频收据时,可降低硬件和网络的开销\n * 业务场景:当开发者需要快速关闭、恢复远端音频时,可调用此函数。相比重新拉流,能极大降低耗时,提升互动体验。\n * 调用时机:在调用 [createEngine] 后可调用此函数。\n * 注意事项:此接口在 SDK 生命周期内不能和 [muteAllPlayAudioStreams] 混用。\n * 相关接口:可调用 [mutePlayStreamAudio] 函数控制是否接收单条音频数据。必须当 [muteAllPlayStreamAudio] 和 [mutePlayStreamAudio] 两个函数同时设置为 \"false\" 时,本地用户拉流时才能接收远端用户的音频数据:1. 当调用 [muteAllPlayStreamAudio(true)] 函数时,全局生效,即本地用户会禁止接收所有远端用户的音频数据,此时无论在 [muteAllPlayStreamAudio] 之前还是之后调用 [mutePlayStreamAudio] 函数都不生效。 2. 当调用 [muteAllPlayStreamAudio(false)] 函数时,本地用户可以接收所有远端用户的音频数据,此时可再通过 [mutePlayStreamAudio] 函数控制是否接收单条音频数据。调用 [mutePlayStreamAudio(true, streamID)] 函数则本地用户可以接收该 \"streamID\" 之外的其他音频数据;调用 [mutePlayStreamAudio(false, streamID)] 函数则本地用户可以接收 \"streamID\" 的音频数据。\n *\n * @param mute 拉流时是否可以接收所有远端用户的音频数据,“true” 表示禁止,“false” 表示接收,默认值为 “false”。\n */\n }, {\n key: \"muteAllPlayStreamAudio\",\n value: function muteAllPlayStreamAudio(mute) {\n return _ZegoExpressEngineImpl.ZegoExpressEngineImpl.getInstance().muteAllPlayStreamAudio(mute);\n }\n /**\n * 拉流是否可接收所有视频数据\n *\n * 支持版本:2.4.0 及以上。\n * 详情描述:在实时音视频互动过程中,本地用户可根据需要,通过此函数控制拉流时是否接收所有远端用户的视频数据(包括在调用该函数后新加入房间的用户所推的视频流)。默认情况下,用户加入房间后可以接收所有远端用户推送的视频数据。当开发者不接收视频数据时,可降低硬件和网络的开销。\n * 业务场景:当开发者需要快速关闭、恢复观看远端视频画面时,可调用此函数。相比重新拉流,能极大降低耗时,提升互动体验。\n * 调用时机:在调用 [createEngine] 后可调用此函数。\n * 注意事项:\n * 1. 此接口在 SDK 生命周期内不能和 [muteAllPlayVideoStreams] 混用。\n * 2. 当指定不接收视频流数据时,视图默认保持在最后一帧,如果需要清除最后一帧,请联系 ZEGO 技术支持。\n * 相关接口:可调用 [mutePlayStreamVideo] 函数控制是否接收单条视频数据。必须当 [muteAllPlayStreamVideo] 和 [mutePlayStreamVideo] 两个函数同时设置为 \"false\" 时,本地用户拉流时才能接收远端用户的视频数据: 1. 当调用 [muteAllPlayStreamVideo(true)] 函数时,全局生效,即本地用户会禁止接收所有远端用户的视频数据,此时无论在 [muteAllPlayStreamVideo] 之前还是之后调用 [mutePlayStreamVideo] 函数都不生效。 2. 当调用 [muteAllPlayStreamVideo(false)] 函数时,本地用户可以接收所有远端用户的视频数据,此时可再通过 [mutePlayStreamVideo] 函数控制是否接收单条视频数据。调用 [mutePlayStreamVideo(true, streamID)] 函数则本地用户可以接收该 \"streamID\" 之外的其他视频数据;调用 [mutePlayStreamVideo(false, streamID)] 函数则本地用户可以接收 \"streamID\" 的视频数据。\n * 注意:此函数仅在 ZegoExpressVideo SDK 中有效!\n *\n * @param mute 拉流时是否可以接收所有远端用户的视频数据,“true” 表示禁止,“false” 表示接收,默认值为 “false”。\n */\n }, {\n key: \"muteAllPlayStreamVideo\",\n value: function muteAllPlayStreamVideo(mute) {\n return _ZegoExpressEngineImpl.ZegoExpressEngineImpl.getInstance().muteAllPlayStreamVideo(mute);\n }\n /**\n * 开/关硬件解码。\n *\n * 支持版本:1.1.0 及以上。\n * 详情描述:拉流时是否使用硬件解码,开启硬件解码后 SDK 会使用 GPU 进行解码,降低 CPU 使用率。\n * 业务场景:若开发者在某些机型测试时发现拉大分辨率音视频流时设备发热严重,可考虑调用此函数开启硬件解码的方式。\n * 默认值:未调用此接口时,默认关闭硬解。\n * 调用时机:此函数需要在 [createEngine] 创建实例后调用。\n * 使用限制:无。\n * 注意事项:在拉流前设置才能生效,如果在拉流后设置,停止拉流后重新拉流才生效,此配置生效后,在下次调用生效前一直有效。\n *\n * @param enable 是否开启硬解开关,true 表示开启硬解,false 表示关闭硬解。\n */\n }, {\n key: \"enableHardwareDecoder\",\n value: function enableHardwareDecoder(enable) {\n return _ZegoExpressEngineImpl.ZegoExpressEngineImpl.getInstance().enableHardwareDecoder(enable);\n }\n /**\n * 开始混流任务。\n *\n * 支持版本:1.2.1 及以上。\n * 详情描述:向 ZEGO RTC 服务器发起混流请求,服务器会寻找当前正在推的流,并根据 SDK 请求的混流任务的参数进行图层混合。当需要更新混流任务时,即输入流增加或减少时需要更新输入流列表,此时可以更新 [ZegoMixerTask] 对象 inputList 的字段并再次调用本函数传入相同的 [ZegoMixerTask] 对象更新混流任务。\n * 业务场景:常用于需要多个视频画面合成一个视频时使用混流,比如教育类,直播老师和学生的画面。\n * 调用时机:调用 [loginRoom] 登录房间后。\n * 使用限制:无。\n * 注意事项:由于客户端设备的性能考虑,SDK 的混流是在 ZEGO RTC 服务器开启混流任务进行混流。若请求开启混流任务发生异常,例如最常见的混流的输入流不存在,将会从 callback 回调的错误码给出。具体错误码请参考 常见错误码文档 https://doc-zh.zego.im/zh/4378.html 若中途某条输入流不存在了,混流任务会自动重试拉这条输入流 90 秒,90 秒之后不再重试。若所有输入流均不存在了,90秒之后服务器会自动停止混流任务。\n * 相关回调:可通过 [onMixerRelayCDNStateUpdate] 获取混流转推 CDN 状态更新通知,可通过 [onMixerSoundLevelUpdate] 获取混流中的每条单流的声浪更新通知。\n * 相关接口:可通过 [stopMixerTask] 函数停止混流。\n *\n * @param task 混流任务对象。是否必填:是。\n * @return 开始混流任务结果\n */\n }, {\n key: \"startMixerTask\",\n value: function startMixerTask(task) {\n return _ZegoExpressEngineImpl.ZegoExpressEngineImpl.getInstance().startMixerTask(task);\n }\n /**\n * 停止混流任务。\n *\n * 支持版本:1.2.1 及以上。\n * 详情描述:向 ZEGO RTC 服务器发起结束混流请求。\n * 业务场景:常用于需要多个视频画面合成一个视频时使用混流,比如教育类,直播老师和学生的画面。\n * 调用时机:调用 [startMixerTask] 开始混流后。\n * 使用限制:无。\n * 注意事项:若开发者在未停止上一个混流任务的情况下启动下一个混流任务,上一个混流任务不会自动停止,直到上一个混流任务的输入流持续 90 秒都不存在之后。在启动下一个混流任务前,应当先停止上一个混流任务,以免当一个主播已经开启下一个混流任务与其他主播混流时,观众依然在拉上一个混流任务的输出流。\n * 相关接口:可通过 [startMixerTask] 函数开始混流。\n *\n * @param task 混流任务对象。是否必填:是。\n * @return 停止混流任务结果\n */\n }, {\n key: \"stopMixerTask\",\n value: function stopMixerTask(task) {\n return _ZegoExpressEngineImpl.ZegoExpressEngineImpl.getInstance().stopMixerTask(task);\n }\n /**\n * 开始自动混流任务\n *\n * 支持版本:2.10.0 及以上。\n * 详情描述:本地用户可调用该函数开始自动混流任务,对房间内的所有流进行混流,目前仅支持音频流自动混流。启动自动混流后,会自动混流该房间内所有流的音频,此房间内再发起的推流也会自动混入最后的输出流中。\n * 业务场景:常用于语聊房场景下,需要由客户端发起自动混流任务时。\n * 调用时机:在创建引擎后,如果目标房间已经创建,可调用该函数在目标房间开启自动混流。\n * 注意事项:在同一个房间内开启下一个自动混流任务前,请先调用 [stopAutoMixerTask] 函数结束上一次自动混流任务,以免造成当一个主播已经开启下一个自动混流任务与其他主播混流时,观众依然在一直拉上一个自动混流任务的输出流的情况。若用户未主动结束当前自动混流任务,该任务将在房间不存在之后或者输入流持续 90 秒不存在之后自动结束。\n * 相关回调:通过 [ZegoMixerStartCallback] 回调,用户可以获取函数执行结果。通过 [onAutoMixerSoundLevelUpdate] 回调,用户可以获取自动混流后声浪信息。\n * 相关接口:可调用 [stopAutoMixerTask] 函数,停止自动混流任务。\n *\n * @param task 自动混流任务对象\n * @return 开始自动混流任务结果通知\n */\n }, {\n key: \"startAutoMixerTask\",\n value: function startAutoMixerTask(task) {\n return _ZegoExpressEngineImpl.ZegoExpressEngineImpl.getInstance().startAutoMixerTask(task);\n }\n /**\n * 停止自动混流任务\n *\n * 支持版本:2.10.0 及以上。\n * 详情描述:本地用户可调用该函数结束自动混流任务。\n * 业务场景:常用于语聊房场景下,需要由客户端发起自动混流任务时。\n * 调用时机:在调用 [startAutoMixerTask] 函数开启自动混流任务后可调用该函数。\n * 注意事项:在同一个房间内调用 [startAutoMixerTask] 函数开启下一个自动混流任务前,请先调用此函数结束上一次自动混流任务,以免造成当一个主播已经开启下一个自动混流任务与其他主播混流时,观众依然在一直拉上一个自动混流任务的输出流的情况。若用户未主动结束当前自动混流任务,该任务将在房间不存在之后或者输入流持续 90 秒不存在之后自动结束。\n * 相关回调:通过 [ZegoMixerStopCallback] 回调,用户可以获取函数执行结果。\n * 相关接口:可调用 [startAutoMixerTask] 函数,开始自动混流任务。\n *\n * @param task 自动混流任务对象\n * @return 停止自动混流任务结果通知\n */\n }, {\n key: \"stopAutoMixerTask\",\n value: function stopAutoMixerTask(task) {\n return _ZegoExpressEngineImpl.ZegoExpressEngineImpl.getInstance().stopAutoMixerTask(task);\n }\n /**\n * 设置是否静音(关闭麦克风)。\n *\n * 支持版本:1.1.0 及以上。\n * 详情描述:此函数用于控制是否使用采集到的音频数据,静音(关闭麦克风)将会使用静音数据替换设备采集到的音频数据进行推流,此时仍然会占用麦克风设备。\n * 业务场景:用户仅关闭麦克风采集的人声,不关闭媒体播放器的音乐声音,可以调用该接口。该接口影响 [onBeforeAudioPrepAudioData]。\n * 默认值:默认为 \"false\",即不静音。\n * 调用时机:在创建引擎 [createEngine] 后。\n * 使用限制:无。\n * 相关接口:若想要真正让 SDK 放弃占用麦克风,例如实现 App 退到后台后释放麦克风占用等功能,可调用 [enableAudioCaptureDevice] 函数开关音频采集设备。可使用 [isMicrophoneMuted] 来检查麦克风是否静音。\n *\n * @param mute 是否静音(关闭麦克风);\"true\" 表示静音(关闭麦克风);\"false\" 表示开启麦克风。\n */\n }, {\n key: \"muteMicrophone\",\n value: function muteMicrophone(mute) {\n return _ZegoExpressEngineImpl.ZegoExpressEngineImpl.getInstance().muteMicrophone(mute);\n }\n /**\n * 检查麦克风是否设置为静音。\n *\n * 支持版本:1.1.0 及以上。\n * 详情描述:用于判断麦克风是否被设置为静音。\n * 调用时机:在创建引擎 [createEngine] 后。\n * 使用限制:无。\n * 相关接口:[muteMicrophone]。\n *\n * @return 麦克风是否静音;\"true\" 表示麦克风静音;\"false\" 表示麦克风开启中(没有被静音)。\n */\n }, {\n key: \"isMicrophoneMuted\",\n value: function isMicrophoneMuted() {\n return _ZegoExpressEngineImpl.ZegoExpressEngineImpl.getInstance().isMicrophoneMuted();\n }\n /**\n * 设置是否静音(关闭音频输出)。\n *\n * 支持版本:1.1.0 及以上。\n * 详情描述:设置静音后,SDK 所有声音都不会播放,包括拉流、媒体播放器等。\n * 默认值:默认为 \"false\",即不静音。\n * 调用时机:在创建引擎 [createEngine] 后。\n * 使用限制:无。\n *\n * @param mute 是否静音(关闭音频输出);\"true\" 表示静音(关闭音频输出);\"false\" 表示开启音频输出。\n */\n }, {\n key: \"muteSpeaker\",\n value: function muteSpeaker(mute) {\n return _ZegoExpressEngineImpl.ZegoExpressEngineImpl.getInstance().muteSpeaker(mute);\n }\n /**\n * 检查音频输出是否静音。\n *\n * 支持版本:1.1.0 及以上。\n * 详情描述:用于判断音频输出是否静音。\n * 调用时机:在创建引擎 [createEngine] 后。\n * 使用限制:无。\n * 相关接口:[muteSpeaker]。\n *\n * @return 音频输出是否静音;\"true\" 表示音频输出静音;\"false\" 表示音频输出开启中(没有被静音)。\n */\n }, {\n key: \"isSpeakerMuted\",\n value: function isSpeakerMuted() {\n return _ZegoExpressEngineImpl.ZegoExpressEngineImpl.getInstance().isSpeakerMuted();\n }\n /**\n * 开/关音频采集设备。\n *\n * 支持版本:1.1.0 及以上。\n * 详情描述:此函数用于控制是否使用音频采集设备。如果关闭音频采集设备,则 SDK 不会再占用音频设备,当然如果此时正在推流,默认情况下会使用静音数据做为音频数据进行推流。\n * 使用场景:当用户从不需要用到音频的时候,可以调用此函数关闭音频采集。\n * 默认值:默认为 \"true\"。\n * 调用时机:在创建引擎 [createEngine] 后。\n * 使用限制:无。\n * 相关接口:硬件上关闭或打开麦克风是耗时操作,用户频繁操作时有一定的性能开销,一般推荐使用 [muteMicrophone]。\n *\n * @param enable 是否开启音频采集设备;\"true\" 表示打开音频采集设备;\"false\" 表示关闭音频采集设备。\n */\n }, {\n key: \"enableAudioCaptureDevice\",\n value: function enableAudioCaptureDevice(enable) {\n return _ZegoExpressEngineImpl.ZegoExpressEngineImpl.getInstance().enableAudioCaptureDevice(enable);\n }\n /**\n * 获取当前音频路由。\n *\n * 支持版本:1.1.0 及以上。\n * 详情描述:音频路由是指 App 在播放音频时使用的音频输出设备,常见的音频路由有:扬声器、听筒、耳机、蓝牙设备等。\n * 调用时机:在创建引擎 [createEngine] 后。\n * 使用限制:win 或 mac 平台下不支持。\n * 相关接口:设置音频路由到扬声器 [setAudioRouteToSpeaker]。\n */\n }, {\n key: \"getAudioRouteType\",\n value: function getAudioRouteType() {\n return _ZegoExpressEngineImpl.ZegoExpressEngineImpl.getInstance().getAudioRouteType();\n }\n /**\n * 设置音频路由到扬声器。\n *\n * 支持版本:1.1.0 及以上。\n * 详情描述:是否使用扬声器播放音频,当选择不使用内置扬声器播放声音时,SDK 会根据系统调度选择当前优先级最高的音频输出设备播放声音,常见的音频路由有:听筒、耳机、蓝牙设备等。\n * 调用时机:在创建引擎 [createEngine] 后。\n * 使用限制:只支持听筒和扬声器的切换,如果是蓝牙耳机或者有线耳机不支持通过该接口路由到扬声器。\n * 相关接口:获取当前音频路由 [getAudioRouteType]。\n *\n * @param defaultToSpeaker 是否使用内置扬声器播放声音,\"true\" 表示使用内置扬声器播放声音,\"false\" 表示使用当前系统调度的优先级最高的音频输出设备播放声音。\n */\n }, {\n key: \"setAudioRouteToSpeaker\",\n value: function setAudioRouteToSpeaker(defaultToSpeaker) {\n return _ZegoExpressEngineImpl.ZegoExpressEngineImpl.getInstance().setAudioRouteToSpeaker(defaultToSpeaker);\n }\n /**\n * 开/关摄像头,支持设置其他通道的推流。\n *\n * 支持版本:1.1.0 及以上。\n * 详情描述:此函数用于控制是否启动摄像头的采集,关闭摄像头后,将不会进行视频采集,此时本地预览和推流都将没有视频数据。\n * 默认值:默认为 \"true\",即打开摄像头。\n * 调用时机:在创建引擎 [createEngine] 后。\n * 使用限制:无。\n * 注意事项:在使用自定义视频采集功能 [enableCustomVideoCapture] 的情况下,由于开发者接管了视频数据的采集,SDK 不再负责视频数据的采集,但此函数依然会影响是否进行编码的行为。因此开发者使用自定义视频采集时,请确保此函数的值为 \"true\"。\n * 注意:此函数仅在 ZegoExpressVideo SDK 中有效!\n *\n * @param enable 是否打开摄像头;\"true\" 表示打开摄像头;\"false\" 表示关闭摄像头。\n * @param channel 推流通道\n */\n }, {\n key: \"enableCamera\",\n value: function enableCamera(enable, channel) {\n return _ZegoExpressEngineImpl.ZegoExpressEngineImpl.getInstance().enableCamera(enable, channel);\n }\n /**\n * 切换前后摄像头,支持设置其他通道的推流。\n *\n * 支持版本:1.1.0 及以上。\n * 详情描述:此函数用于控制使用前置摄像头或者后置摄像头(仅 Android 和 iOS 支持)。\n * 默认值:默认为 \"true\",即使用前置摄像头。\n * 调用时机:在创建引擎 [createEngine] 后。\n * 使用限制:无。\n * 注意事项:在开启自定义视频采集功能 [enableCustomVideoCapture] 的情况下,由于开发者接管了视频数据的采集,SDK不再负责视频数据的采集,本函数不再有效。\n * 注意:此函数仅在 ZegoExpressVideo SDK 中有效!\n *\n * @param enable 是否采用前置摄像头;\"true\" 表示使用前置摄像头;\"false\" 表示使用后置摄像头。\n * @param channel 推流通道\n */\n }, {\n key: \"useFrontCamera\",\n value: function useFrontCamera(enable, channel) {\n return _ZegoExpressEngineImpl.ZegoExpressEngineImpl.getInstance().useFrontCamera(enable, channel);\n }\n /**\n * 设置摄像头变焦倍数,支持指定推流通道号。每次摄像头重新启动时,摄像头变焦倍数都将会恢复初始值 (1.0)。\n *\n * 支持版本:1.20.0 及以上。\n * 详情描述:设置摄像头变焦倍数。\n * 调用时机:在开启预览 [startPreview] 后调用。\n * 使用限制:摄像头启动后设置才生效。\n * 注意:此函数仅在 ZegoExpressVideo SDK 中有效!\n *\n * @param factor 摄像头变焦倍数,最小值为 1.0,最大值为 [getCameraMaxZoomFactor] 的返回值。\n * @param channel 推流通道\n */\n }, {\n key: \"setCameraZoomFactor\",\n value: function setCameraZoomFactor(factor, channel) {\n return _ZegoExpressEngineImpl.ZegoExpressEngineImpl.getInstance().setCameraZoomFactor(factor, channel);\n }\n /**\n * 获取摄像头最大变焦倍数,支持指定推流通道号。\n *\n * 支持版本:1.20.0 及以上。\n * 详情描述:获取摄像头最大变焦倍数。\n * 调用时机:摄像头启动成功后调用才有效,一般可以在收到采集首帧回调 [onPublisherCapturedVideoFirstFrame] 的时候调用。\n * 使用限制:无。\n * 注意:此函数仅在 ZegoExpressVideo SDK 中有效!\n *\n * @param channel 推流通道\n * @return 摄像头最大变焦倍数\n */\n }, {\n key: \"getCameraMaxZoomFactor\",\n value: function getCameraMaxZoomFactor(channel) {\n return _ZegoExpressEngineImpl.ZegoExpressEngineImpl.getInstance().getCameraMaxZoomFactor(channel);\n }\n /**\n * 启动声浪监控,支持开启进阶功能。\n *\n * 支持版本:2.10.0 及以上。\n * 详情描述:启动监控后可通过 [onCapturedSoundLevelUpdate] 回调接收本地采集音频声浪,以及 [onRemoteSoundLevelUpdate] 回调接收远端拉流音频声浪。开发者可在进入房间之前,调用 [startPreview] 与此函数,并与 [onCapturedSoundLevelUpdate] 结合来判断音频设备是否正常工作。\n * 业务场景:在推拉流过程中,判断麦上的用户谁在说话,并做 UI 展示。\n * 调用时机:在创建引擎 [createEngine] 后。\n * 注意事项:\n * 1. [onCapturedSoundLevelUpdate] 与 [onRemoteSoundLevelUpdate] 回调通知周期为参数设置的值。\n * 2. 启动声浪监控后,即使未启动本地音频采集,onCapturedSoundLevelUpdate也会有回调,声浪值为0。\n *\n * @param config 启动声浪监控的配置。\n */\n }, {\n key: \"startSoundLevelMonitor\",\n value: function startSoundLevelMonitor(config) {\n return _ZegoExpressEngineImpl.ZegoExpressEngineImpl.getInstance().startSoundLevelMonitor(config);\n }\n /**\n * 停止声浪监控。\n *\n * 支持版本:1.1.0 及以上。\n * 详情描述:停止监控后将停止回调本地采集以及远端拉流的音频声浪回调。\n * 调用时机:在创建引擎 [createEngine] 后。\n * 相关接口:可通过 [startSoundLevelMonitor] 启动声浪监控。\n */\n }, {\n key: \"stopSoundLevelMonitor\",\n value: function stopSoundLevelMonitor() {\n return _ZegoExpressEngineImpl.ZegoExpressEngineImpl.getInstance().stopSoundLevelMonitor();\n }\n /**\n * 开启/关闭 耳返。\n *\n * 支持版本:1.9.0 及以上。\n * 详情描述:开启耳返,用户使用麦克风采集声音时会听到自己的声音。\n * 调用时机:在创建引擎 [createEngine] 后。\n * 默认值:关闭。\n * 注意事项:\n * 1. 同时连接耳机和麦克风时该设置才实际生效。\n * 2. 耳返默认是在采集之后、前处理之前返回,如果需要在前处理之后返回请咨询 ZEGO 技术支持。\n *\n * @param enable true: 开启耳返, false: 关闭耳返。\n */\n }, {\n key: \"enableHeadphoneMonitor\",\n value: function enableHeadphoneMonitor(enable) {\n return _ZegoExpressEngineImpl.ZegoExpressEngineImpl.getInstance().enableHeadphoneMonitor(enable);\n }\n /**\n * 设置耳返音量。\n *\n * 支持版本:1.9.0 及以上。\n * 详情描述:设置耳返音量。\n * 调用时机:在创建引擎 [createEngine] 后。\n * 注意事项:同时连接耳机和麦克风时该设置才实际生效。\n * 相关接口:可通过 [enableHeadphoneMonitor] 开关耳返。\n *\n * @param volume 采集耳返音量大小,取值 [0, 200],默认 60。\n */\n }, {\n key: \"setHeadphoneMonitorVolume\",\n value: function setHeadphoneMonitorVolume(volume) {\n return _ZegoExpressEngineImpl.ZegoExpressEngineImpl.getInstance().setHeadphoneMonitorVolume(volume);\n }\n /**\n * 开启/关闭 手电筒。\n *\n * 支持版本:3.6.0 及以上。\n * 详情描述:是否开启设备的手电筒。\n * 调用时机:需要在 [createEngine] 之后调用。\n *\n * @param enable 开启或关闭。\n * @param channel 推流通道\n */\n }, {\n key: \"enableTorch\",\n value: function enableTorch(enable, channel) {\n return _ZegoExpressEngineImpl.ZegoExpressEngineImpl.getInstance().enableTorch(enable, channel);\n }\n /**\n * 是否开启回声消除。\n *\n * 支持版本:1.1.0 及以上。\n * 详情描述:打开回声消除, SDK 会对采集到的音频数据进行过滤以降低音频中的回音成分。\n * 业务场景:当需要降低回声以提高通话质量和用户体验时,可以开启此功能。\n * 调用时机:需要在 [createEngine] 之后调用。\n * 注意事项:回声消除功能仅支持处理经过 SDK 播放的声音,例如拉流、媒体播放器、音效播放器等功能播放的声音。未调用此函数前,SDK 内部会自动判断是否需要使用 AEC,一旦调用了此函数则不再自动判断。\n * 使用限制:无。\n * 相关接口:开发者可通过 [enableHeadphoneAEC] 以设置当使用耳机时是否也开启回声消除;可通过 [setAECMode] 设置回声消除的模式。\n *\n * @param enable 是否开启回声消除;true 表示开启;false 表示关闭\n */\n }, {\n key: \"enableAEC\",\n value: function enableAEC(enable) {\n return _ZegoExpressEngineImpl.ZegoExpressEngineImpl.getInstance().enableAEC(enable);\n }\n /**\n * 是否在使用耳机时开启回声消除。\n *\n * 支持版本:1.1.0 及以上。\n * 详情描述:当使用 [enableAEC] 开启了回声消除后,对于移动端设备来说只在使用扬声器时开启。如果需要在使用耳机时开启或者关闭回声消除,请调用此函数。\n * 业务场景:当移动端设备连接了一个外置声卡作为音频输出源时,为了消除这种情况下的回声,需要调用此函数开启回声消除。\n * 默认值:Android 默认关闭,iOS 默认开启。\n * 调用时机:需要在 [createEngine] 之后,[startPublishingStream]、 [startPlayingStream]、 [startPreview]、 [createMediaPlayer]、 [createAudioEffectPlayer] 和 [createRealTimeSequentialDataManager] 之前调用。\n * 注意事项:开启回声消除会增加耳返延迟。在 iOS 平台,SDK 内部无法区分耳机跟外置声卡,如果使用此函数关闭使用耳机时的系统回声消除,则在用户接入外部声卡时会采集外部声卡播放的声音,导致回声问题。\n * 使用限制:无。\n * 相关接口:不使用耳机时可通过 [enableAEC] 设置 SDK 是否开启回声消除。\n * 平台差异:仅支持 iOS 和 Android。\n *\n * @param enable 是否开启;true 表示开启;false 表示关闭。\n */\n }, {\n key: \"enableHeadphoneAEC\",\n value: function enableHeadphoneAEC(enable) {\n return _ZegoExpressEngineImpl.ZegoExpressEngineImpl.getInstance().enableHeadphoneAEC(enable);\n }\n /**\n * 设置回声消除模式\n *\n * 支持版本:1.1.0 及以上。\n * 详情描述:当使用 [enableAEC] 开启了回声消除后,可通过此函数切换不同的回声消除模式以控制消除回声数据的程度。\n * 业务场景:当默认的回声消除效果不符合预期时,可通过此函数调整回声消除模式。\n * 默认值:未调用此函数时,默认的回声消除模式为 [Aggressive] 激进模式。\n * 调用时机:需要在 [createEngine] 之后调用。\n * 使用限制:仅在开启了回声消除功能后此函数设置的值才有效。\n *\n * @param mode 回声消除模式\n */\n }, {\n key: \"setAECMode\",\n value: function setAECMode(mode) {\n return _ZegoExpressEngineImpl.ZegoExpressEngineImpl.getInstance().setAECMode(mode);\n }\n /**\n * 开/关自动增益控制\n *\n * 支持版本:1.1.0 及以上。\n * 详情描述:开启该功能后,SDK 能够自动调节麦克风音量,适应远近拾音,保持音量稳定。\n * 业务场景:当需要保障音量稳定性以提高通话质量和用户体验时,可以开启此功能。\n * 调用时机:需要在 [createEngine] 之后调用。\n * 注意事项:未调用此函数前,SDK 内部会自动判断是否需要使用 AGC,一旦调用了此函数则不再自动判断。\n * 使用限制:无。\n *\n * @param enable 是否开启自动增益控制;true 表示开启;false 表示关闭\n */\n }, {\n key: \"enableAGC\",\n value: function enableAGC(enable) {\n return _ZegoExpressEngineImpl.ZegoExpressEngineImpl.getInstance().enableAGC(enable);\n }\n /**\n * 开/关噪声抑制\n *\n * 支持版本:1.1.0 及以上。\n * 详情描述:开启该功能后,可以使人声更加清晰。\n * 业务场景:当需要抑制噪声以提高通话质量和用户体验时,可以开启此功能。\n * 调用时机:需要在 [createEngine] 之后调用。\n * 相关接口:此功能对持续性的噪声(例如下雨声等白噪音)抑制效果较好,如果需要抑制瞬态噪声,请使用 [enableTransientANS];可通过 [setANSMode] 设置噪声抑制的模式。\n * 注意事项:未调用此函数前,SDK 内部会自动判断是否需要使用 ANS,一旦调用了此函数则不再自动判断。\n * 使用限制:无。\n *\n * @param enable 是否开启噪声抑制;true 表示开启噪声抑制;false 表示关闭噪声抑制\n */\n }, {\n key: \"enableANS\",\n value: function enableANS(enable) {\n return _ZegoExpressEngineImpl.ZegoExpressEngineImpl.getInstance().enableANS(enable);\n }\n /**\n * 开/关瞬态噪声抑制\n *\n * 支持版本:1.17.0 及以上。\n * 详情描述:用于抑制敲击键盘、桌子等瞬态噪声。\n * 业务场景:当需要抑制瞬态噪声以提高通话质量和用户体验时,可以开启此功能。\n * 默认值:未调用此函数时,默认不开启瞬态噪声抑制。\n * 调用时机:需要在 [createEngine] 之后调用。\n * 相关接口:此函数开启后不会抑制常规噪声,如果需要开启常规噪声抑制,请使用 [enableANS]\n * 使用限制:无。\n *\n * @param enable 是否开启瞬态噪声抑制;true 表示开启;false 表示关闭\n */\n }, {\n key: \"enableTransientANS\",\n value: function enableTransientANS(enable) {\n return _ZegoExpressEngineImpl.ZegoExpressEngineImpl.getInstance().enableTransientANS(enable);\n }\n /**\n * 设置音频噪声抑制模式\n *\n * 支持版本:1.1.0 及以上。\n * 详情描述:当使用 [enableANS] 开启了噪声抑制后,可通过此函数切换不同的噪声抑制模式以控制抑制噪声数据的程度。\n * 业务场景:当默认的噪声抑制效果不符合预期时,可通过此函数调整噪声抑制模式。\n * 默认值:未调用此函数时,默认的噪声抑制模式为 [Medium] 中等模式。\n * 调用时机:需要在 [createEngine] 之后调用。\n * 使用限制:仅在开启了噪声抑制功能后此函数设置的值才有效。\n *\n * @param mode 噪声抑制模式\n */\n }, {\n key: \"setANSMode\",\n value: function setANSMode(mode) {\n return _ZegoExpressEngineImpl.ZegoExpressEngineImpl.getInstance().setANSMode(mode);\n }\n /**\n * 开启 Effects 美颜环境。\n *\n * 支持版本:2.16.0 及以上。\n * 详情描述:开启 Effects 美颜环境。SDK 内部会使用固定的视频帧数据类型进行传输,Windows 平台只支持视频帧裸数据, Apple 平台只支持 CVPixelBuffer,Android 平台只支持 texture2d。\n * 业务场景:常用于视频通话、直播等场景。\n * 默认值:未调用此函数时,默认不启动美颜环境。\n * 调用时机:必须在调用 [startPreview]、[startPublishingStream] 之前设置。如果需要修改配置,请先调用 [logoutRoom] 登出房间,否则不会生效。\n * 相关接口:[enableEffectsBeauty] 开关美颜,[setEffectsBeautyParam] 设置美颜参数。\n * 注意事项:此美颜功能为基础功能,如不符合开发者的预期,可使用自定义视频前处理功能 [enableCustomVideoProcessing] 或者自定义视频采集功能 [enableCustomVideoCapture] 对接即构 AI 美颜 SDK [ZegoEffects] https://doc-zh.zego.im/article/9556 以获得最佳效果。\n * 使用限制:此函数只支持 Android 系统 5.0 及以上,Android SDK 版本 21 及以上。\n * 注意:此函数仅在 ZegoExpressVideo SDK 中有效!\n */\n }, {\n key: \"startEffectsEnv\",\n value: function startEffectsEnv() {\n return _ZegoExpressEngineImpl.ZegoExpressEngineImpl.getInstance().startEffectsEnv();\n }\n /**\n * 关闭 Effects 美颜环境。\n *\n * 支持版本:2.16.0 及以上。\n * 详情描述:关闭 Effects 美颜环境。\n * 业务场景:常用于视频通话、直播等场景。\n * 调用时机:必须在调用 [startPreview]、[startPublishingStream] 之前设置。如果需要修改配置,请先调用 [logoutRoom] 登出房间,否则不会生效。\n * 相关接口:[enableEffectsBeauty] 开关美颜,[setEffectsBeautyParam] 设置美颜参数。\n * 注意事项:此美颜功能为基础功能,如不符合开发者的预期,可使用自定义视频前处理功能 [enableCustomVideoProcessing] 或者自定义视频采集功能 [enableCustomVideoCapture] 对接即构 AI 美颜 SDK [ZegoEffects] https://doc-zh.zego.im/article/9556 以获得最佳效果。\n * 使用限制:此函数只支持 Android 系统 5.0 及以上,Android SDK 版本 21 及以上。\n * 注意:此函数仅在 ZegoExpressVideo SDK 中有效!\n */\n }, {\n key: \"stopEffectsEnv\",\n value: function stopEffectsEnv() {\n return _ZegoExpressEngineImpl.ZegoExpressEngineImpl.getInstance().stopEffectsEnv();\n }\n /**\n * 开启或关闭美颜效果。\n *\n * 支持版本:2.16.0 及以上。\n * 详情描述:支持基础美颜功能,包括美白、红润、磨皮、锐化。\n * 业务场景:通常用于视频通话、直播等场景。\n * 调用时机:必须在调用 [startEffectsEnv] 开启美颜环境后才能调用此函数。\n * 默认值:未调用此函数时,默认不开启美颜效果。\n * 相关接口:可调用 [setEffectsBeautyParam] 函数调整美颜参数。\n * 注意事项:此美颜功能为基础功能,如不符合开发者的预期,可使用自定义视频前处理功能 [enableCustomVideoProcessing] 或者自定义视频采集功能 [enableCustomVideoCapture] 对接即构 AI 美颜 SDK [ZegoEffects] https://doc-zh.zego.im/article/9556 以获得最佳效果。\n * 使用限制:此函数如果使用在 Android 平台上只支持 5.0 及以上,SDK 版本 21 及以上。\n * 注意:此函数仅在 ZegoExpressVideo SDK 中有效!\n *\n * @param enable 是否开启美颜效果,true 开启;false 关闭,默认为 false。\n */\n }, {\n key: \"enableEffectsBeauty\",\n value: function enableEffectsBeauty(enable) {\n return _ZegoExpressEngineImpl.ZegoExpressEngineImpl.getInstance().enableEffectsBeauty(enable);\n }\n /**\n * 设置美颜效果参数。\n *\n * 支持版本:2.16.0 及以上。\n * 详情描述:设置美颜参数,包括美白、红润、磨皮、锐化。\n * 业务场景:通常用于视频通话、直播等场景。\n * 调用时机:必须在调用 [startEffectsEnv] 开启美颜环境后才能调用此函数。\n * 相关接口:可调用 [enableEffectsBeauty] 开启或关闭美颜效果。\n * 使用限制:此函数只支持 Android 系统 5.0 及以上,Android SDK 版本 21 及以上。\n * 注意:此函数仅在 ZegoExpressVideo SDK 中有效!\n *\n * @param param 美颜选项参数。\n */\n }, {\n key: \"setEffectsBeautyParam\",\n value: function setEffectsBeautyParam(param) {\n return _ZegoExpressEngineImpl.ZegoExpressEngineImpl.getInstance().setEffectsBeautyParam(param);\n }\n /**\n * 发送房间广播消息。\n *\n * 支持版本:1.2.1 及以上。\n * 详情描述:向房间发送广播消息,已经登录相同房间的用户能收到消息,消息可靠。\n * 业务场景:一般在直播房间人数不超过 500 时使用。\n * 调用时机:调用 [loginRoom] 登录房间之后。\n * 使用限制:房间在线人数超过 500 时不支持,如果需要提高限制,请联系 ZEGO 技术支持申请评估。同一房间内的广播消息发送频率不能高于 10条/s。单个用户在客户端调用此接口的最大QPS为2,关于此函数的使用限制,请参考 https://doc-zh.zego.im/article/7581 或联系 ZEGO 技术支持。\n * 相关回调:可通过 [onIMRecvBroadcastMessage] 接收到房间广播消息。\n * 相关接口:可通过 [sendBarrageMessage] 函数发送弹幕消息,可通过 [sendCustomCommand] 函数发送自定义信令。\n *\n * @param roomID 房间 ID,不得为空,最大长度为 128 字节的字符串。\n * 注意事项:\n * 1.房间 ID 由您自己定义。\n * 2. 仅支持数字,英文字符 和 '~', '!', '@', '#', '$', '%', '^', '&', '*', '(', ')', '_', '+', '=', '-', '`', ';', '’', ',', '.', '<', '>', '\\'。\n * 3. 如果需要与 Web SDK 互通,请不要使用 '%'。\n * @param message 消息内容。是否必填:是。取值范围:长度不超过 1024 字节。\n * @return 发送广播消息结果通知。是否必填:否。注意事项:传 [null] 则意味着不接收回调通知。\n */\n }, {\n key: \"sendBroadcastMessage\",\n value: function sendBroadcastMessage(roomID, message) {\n return _ZegoExpressEngineImpl.ZegoExpressEngineImpl.getInstance().sendBroadcastMessage(roomID, message);\n }\n /**\n * 发送房间弹幕消息。\n *\n * 支持版本:1.5.0 及以上。\n * 详情描述:向房间发送弹幕消息,已经登录相同房间的用户能收到消息,消息不可靠。\n * 业务场景:一般用于房间内有大量消息收发,且不需要保证消息可靠性的场景,例如直播弹幕。\n * 调用时机:调用 [loginRoom] 登录房间之后。\n * 使用限制:同一房间内的弹幕消息发送频率不能高于 20条/s。关于此函数的使用限制,请参考 https://doc-zh.zego.im/article/7581 或联系 ZEGO 技术支持。\n * 相关回调:可通过 [onIMRecvBarrageMessage] 接收到房间弹幕消息。\n * 相关接口:可通过 [sendBroadcastMessage] 函数发送广播消息,可通过 [sendCustomCommand] 函数发送自定义信令。\n *\n * @param roomID 房间 ID,不得为空,最大长度为 128 字节的字符串。\n * 注意事项:\n * 1.房间 ID 由您自己定义。\n * 2. 仅支持数字,英文字符 和 '~', '!', '@', '#', '$', '%', '^', '&', '*', '(', ')', '_', '+', '=', '-', '`', ';', '’', ',', '.', '<', '>', '\\'。\n * 3. 如果需要与 Web SDK 互通,请不要使用 '%'。\n * @param message 消息内容。是否必填:是。取值范围:长度不超过 1024 字节。\n * @return 发送弹幕消息结果通知。\n */\n }, {\n key: \"sendBarrageMessage\",\n value: function sendBarrageMessage(roomID, message) {\n return _ZegoExpressEngineImpl.ZegoExpressEngineImpl.getInstance().sendBarrageMessage(roomID, message);\n }\n /**\n * 发送自定义信令。\n *\n * 支持版本:1.2.1 及以上。\n * 详情描述:向已经登录相同房间的其他用户发送点对点的信令,消息可靠。\n * 业务场景:一般用于远程控制信令或用户与用户之间的消息发送。\n * 调用时机:调用 [loginRoom] 登录房间之后。\n * 使用限制:一般在直播房间人数不超过 500 时使用。同一房间内向单个用户发送的自定义消息频率不能高于 200条/s,向多个用户发送的自定义消息不能高于 10条/s。关于此函数的使用限制,请参考 https://doc-zh.zego.im/article/7581 或联系 ZEGO 技术支持。\n * 相关回调:可通过 [onIMRecvCustomCommand] 接收到房间自定义信令。\n * 相关接口:可通过 [sendBroadcastMessage] 函数发送广播消息,可通过 [sendBarrageMessage] 函数发送弹幕消息。\n * 隐私保护声明:请勿在此接口填写用户敏感信息,包括但不限于手机号、身份证号、护照编号、真实姓名等。\n *\n * @param roomID 房间 ID,不得为空,最大长度为 128 字节的字符串。\n * 注意事项:\n * 1.房间 ID 由您自己定义。\n * 2. 仅支持数字,英文字符 和 '~', '!', '@', '#', '$', '%', '^', '&', '*', '(', ')', '_', '+', '=', '-', '`', ';', '’', ',', '.', '<', '>', '\\'。\n * 3. 如果需要与 Web SDK 互通,请不要使用 '%'。\n * @param command 自定义信令内容。是否必填:是。取值范围:最大长度为 1024 字节。注意事项:为保护隐私,请勿在此接口填写用户敏感信息,包括但不限于手机号、身份证号、护照编号、真实姓名等。\n * @param toUserList 信令的接收者列表。是否必填:是。取值范围:用户列表或者 [null]。注意事项:为 [null] 时 SDK 回向房间内所有用户发送自定义信令。\n * @return 发送弹幕消息结果通知。\n */\n }, {\n key: \"sendCustomCommand\",\n value: function sendCustomCommand(roomID, command, toUserList) {\n return _ZegoExpressEngineImpl.ZegoExpressEngineImpl.getInstance().sendCustomCommand(roomID, command, toUserList);\n }\n /**\n * 创建媒体播放器实例对象。\n *\n * 支持版本:2.1.0 及以上。\n * 详情描述:创建媒体播放器实例对象。\n * 业务场景:常用于播放媒体资源场景,例如播放视频文件,结合自定义视频采集将媒体资源的视频数据推送出去,远端可拉流观看。\n * 调用时机:在初始化 SDK [createEngine] 之后。\n * 使用限制:目前最多支持创建 4 个实例,超过后将返回 null。\n * 注意事项:媒体播放器的实例越多,对设备的性能开销越大。\n * 相关接口:用户可以调用 [destroyMediaPlayer] 销毁媒体播放器实例对象。\n *\n * @return 媒体播放器实例,超过最大数量限制后将返回 null。\n */\n }, {\n key: \"createMediaPlayer\",\n value: function createMediaPlayer() {\n return _ZegoExpressEngineImpl.ZegoExpressEngineImpl.getInstance().createMediaPlayer();\n }\n /**\n * 销毁媒体播放器实例对象。\n *\n * 支持版本:2.1.0 及以上。\n * 详情描述:销毁媒体播放器实例对象。\n * 相关接口:用户可以调用 [createMediaPlayer] 创建媒体播放器实例对象。\n *\n * @param mediaPlayer 媒体播放器实例对象。\n */\n }, {\n key: \"destroyMediaPlayer\",\n value: function destroyMediaPlayer(mediaPlayer) {\n return _ZegoExpressEngineImpl.ZegoExpressEngineImpl.getInstance().destroyMediaPlayer(mediaPlayer);\n }\n /**\n * 开始本地录制,直接将音视频数据录制到本地文件。\n *\n * 支持版本:1.10.0 及以上。\n * 详情描述:开始录制本端音频或音视频,直接将音视频数据录制到本地文件,录制的数据将与该通道推流的数据一致。\n * 使用限制:无。\n * 注意事项:录制过程中不可以停止预览 [stopPreview] 或停止推流 [stopPublishingStream],否则 SDK 将主动结束当前录制任务。媒体播放器的数据需要混入到推流中才能录制。\n * 相关回调:开始录制后将会收到 [onCapturedDataRecordStateUpdate] 录制状态回调和 [onCapturedDataRecordProgressUpdate] 录制进度回调。\n *\n * @param config 录制配置对象。\n * @param channel 推流通道。\n */\n }, {\n key: \"startRecordingCapturedData\",\n value: function startRecordingCapturedData(config, channel) {\n return _ZegoExpressEngineImpl.ZegoExpressEngineImpl.getInstance().startRecordingCapturedData(config, channel);\n }\n /**\n * 结束录制本端音频或音视频。\n *\n * 支持版本:1.10.0 及以上。\n * 详情描述:结束录制本端音频或音视频。\n * 调用时机:在 [startRecordingCapturedData] 之后。\n * 使用限制:无。\n *\n * @param channel 推流通道。\n */\n }, {\n key: \"stopRecordingCapturedData\",\n value: function stopRecordingCapturedData(channel) {\n return _ZegoExpressEngineImpl.ZegoExpressEngineImpl.getInstance().stopRecordingCapturedData(channel);\n }\n /**\n * 【已废弃】创建 ZegoExpressEngine 单例对象并初始化 SDK。此函数在 2.14.0 版本及以上已废弃,请使用不带 [isTestEnv] 参数的同名函数代替。请参考 [测试环境废弃说明](https://doc-zh.zego.im/article/13100)\n *\n * 支持版本:1.1.0 ~ 2.13.1,此函数在 2.14.0 版本及以上已废弃,请使用不带 [isTestEnv] 参数的同名函数代替。\n * 详情描述:创建 ZegoExpressEngine 单例对象并初始化 SDK。\n * 调用时机:SDK 其他实例方法调用之前。\n * 使用限制:无。\n * 注意事项:SDK 只支持创建一个实例,如需重复调用 [createEngine] ,则需在第二次调用 [createEngine] 前先调用 [destroyEngine] 函数销毁引擎,否则再次调用此函数返回的都是上次创建的对象。\n *\n * @deprecated 此函数在 2.14.0 版本及以上已废弃,请使用不带 [isTestEnv] 参数的同名函数代替。\n * @param appID ZEGO 为开发者签发的应用 ID,请从 ZEGO 管理控制台 https://console-express.zego.im 申请。appID 取值范围 0~4294967295。\n * @param appSign 每个 AppID 对应的应用签名,请从 ZEGO 管理控制台申请。该参数为包含 64 个字符的字符串,字符取值范围:'0' ~ '9', 'a' ~ 'z'。例:\"9dc9a25bh2f2137446897071c8c033fa33b91c3dd2a85e0c000ae82c0dad3\"。2.17.0 及以上版本 appSign 允许传空或者不传。如果传空或者不传,则必须在调用 [loginRoom] 接口登录房间时将 token 填入 [ZegoRoomConfig] 参数中,用于鉴权。token 的生成方式请参考 [使用 Token 鉴权](https://doc-zh.zego.im/article/10360) 。\n * @param isTestEnv 【已废弃】为提供更便捷、更标准的服务,ZEGO 已统一环境概念,2021-11-16 之后,不再有正式环境/测试环境之分,2021-11-16 及之前在 ZEGO 控制台 创建项目的用户,可参考 [测试环境废弃说明](https://doc-zh.zego.im/article/13100) 进行 SDK 升级和调整相关代码。\n * @param scenario 房间场景,SDK 会针对指定的场景的做一些音视频配置优化以达成在此场景下最优的效果。指定场景后,开发者可以使用 [setRoomScenario] 来实现在不销毁引擎 [destroyEngine] 的前提下切换其他场景。指定场景后,开发者可以调用其他 API 来继续调整音视频配置。各个场景之间的差异以及如何选择合适的场景请参考 https://doc-zh.zego.im/article/16316\n * @return 引擎单例对象\n */\n }], [{\n key: \"instance\",\n value:\n /**\n * Engine singleton instance\n */\n function instance() {\n return _ZegoExpressEngineImpl.ZegoExpressEngineImpl.getInstance();\n }\n /**\n * 创建 ZegoExpressEngine 单例对象并初始化 SDK。\n *\n * 支持版本:2.14.0 及以上。\n * 详情描述:创建 ZegoExpressEngine 单例对象并初始化 SDK。\n * 调用时机:SDK 其他实例方法调用之前。\n * 使用限制:无。\n * 注意事项:SDK 只支持创建一个实例,如需重复调用 [createEngine] ,则需在第二次调用 [createEngine] 前先调用 [destroyEngine] 函数销毁引擎,否则再次调用此函数返回的都是上次创建的对象。\n *\n * @param profile 用来创建引擎的基础配置信息。\n * @return 引擎单例对象。\n */\n }, {\n key: \"createEngineWithProfile\",\n value: function createEngineWithProfile(profile) {\n return _ZegoExpressEngineImpl.ZegoExpressEngineImpl.createEngineWithProfile(profile);\n }\n /**\n * 销毁 ZegoExpressEngine 单例对象并反初始化 SDK。\n *\n * 支持版本:1.1.0 及以上。\n * 详情描述:销毁 ZegoExpressEngine 单例对象并反初始化 SDK。\n * 调用时机:当不再使用 SDK 时,可以通过本接口释放 SDK 使用的资源。\n * 使用限制:无。\n * 注意事项:使用 [createEngine] 创建单例后,如果单例对象未被创建或已被销毁,调用此函数时,不会收到相关回调。\n */\n }, {\n key: \"destroyEngine\",\n value: function destroyEngine() {\n return _ZegoExpressEngineImpl.ZegoExpressEngineImpl.destroyEngine();\n }\n /**\n * 设置引擎进阶配置。\n *\n * 支持版本:1.1.0 及以上。\n * 详情描述:用于开启进阶功能。\n * 调用时机:不同的配置有不同的调用时机要求,详情可咨询 ZEGO 技术支持。\n * 使用限制:无。\n *\n * @param config 引擎进阶配置\n */\n }, {\n key: \"setEngineConfig\",\n value: function setEngineConfig(config) {\n return _ZegoExpressEngineImpl.ZegoExpressEngineImpl.setEngineConfig(config);\n }\n /**\n * 设置房间模式。\n *\n * 支持版本:2.9.0 及以上。\n * 详情描述:开发者需要使用多房间功能时,需要调用此函数来完成配置。\n * 调用时机:必须在调用 [createEngine] 之前设置才生效,否则会失败。\n * 使用限制:如果需要使用多房间功能,请与即构技术支持联系配置服务端支持。\n * 注意事项:无。\n *\n * @param mode 房间模式。详情描述:用于设置房间模式。业务场景:当需要同时进入多个房间进行推拉流时,可以通过本接口开启多房间模式。是否必填:是。默认值:ZEGO_ROOM_MODE_SINGLE_ROOM。\n */\n }, {\n key: \"setRoomMode\",\n value: function setRoomMode(mode) {\n return _ZegoExpressEngineImpl.ZegoExpressEngineImpl.setRoomMode(mode);\n }\n /**\n * 获取 SDK 版本号。\n *\n * 支持版本:1.1.0 及以上。\n * 详情描述:在 SDK 在运行过程中若遇到异常,可将问题、日志等信息提交 ZEGO 技术人员定位与排障。开发者也可通过该 API 收集当前 SDK 版本信息,便于 App 运营统计以及关联问题。\n * 调用时机:任意时刻。\n * 使用限制:无。\n * 注意事项:无。\n *\n * @return SDK 版本号。\n */\n }, {\n key: \"getVersion\",\n value: function getVersion() {\n return _ZegoExpressEngineImpl.ZegoExpressEngineImpl.getVersion();\n }\n }, {\n key: \"createEngine\",\n value: function createEngine(appID, appSign, isTestEnv, scenario) {\n return _ZegoExpressEngineImpl.ZegoExpressEngineImpl.createEngine(appID, appSign, isTestEnv, scenario);\n }\n }]);\n return ZegoExpressEngine;\n}();\nexports.default = ZegoExpressEngine;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vdW5pX21vZHVsZXMvemVnby1aZWdvRXhwcmVzc1VuaUFwcC1KUy9jb21wb25lbnRzL3plZ28tWmVnb0V4cHJlc3NVbmlBcHAtSlMvbGliL1plZ29FeHByZXNzRW5naW5lQXBwLmpzIl0sIm5hbWVzIjpbIlplZ29FeHByZXNzRW5naW5lIiwiWmVnb0V4cHJlc3NFbmdpbmVJbXBsIiwiZ2V0SW5zdGFuY2UiLCJ1cGxvYWRMb2ciLCJwYXJhbXMiLCJjYWxsRXhwZXJpbWVudGFsQVBJIiwiZXZlbnQiLCJjYWxsYmFjayIsIm9uIiwib2ZmIiwicm9vbUlEIiwidXNlciIsImNvbmZpZyIsImxvZ2luUm9vbSIsImxvZ291dFJvb20iLCJmcm9tUm9vbUlEIiwidG9Sb29tSUQiLCJzd2l0Y2hSb29tIiwidG9rZW4iLCJyZW5ld1Rva2VuIiwia2V5IiwidmFsdWUiLCJzZXRSb29tRXh0cmFJbmZvIiwic3RyZWFtSUQiLCJjaGFubmVsIiwic3RhcnRQdWJsaXNoaW5nU3RyZWFtIiwic3RvcFB1Ymxpc2hpbmdTdHJlYW0iLCJleHRyYUluZm8iLCJzZXRTdHJlYW1FeHRyYUluZm8iLCJzdGFydFByZXZpZXciLCJzdG9wUHJldmlldyIsInNldFZpZGVvQ29uZmlnIiwiZ2V0VmlkZW9Db25maWciLCJtaXJyb3JNb2RlIiwic2V0VmlkZW9NaXJyb3JNb2RlIiwib3JpZW50YXRpb24iLCJzZXRBcHBPcmllbnRhdGlvbiIsInNldEF1ZGlvQ29uZmlnIiwiZ2V0QXVkaW9Db25maWciLCJ0YWtlUHVibGlzaFN0cmVhbVNuYXBzaG90IiwibXV0ZSIsIm11dGVQdWJsaXNoU3RyZWFtQXVkaW8iLCJtdXRlUHVibGlzaFN0cmVhbVZpZGVvIiwiZW5hYmxlIiwicHJvcGVydHkiLCJlbmFibGVUcmFmZmljQ29udHJvbCIsImJpdHJhdGUiLCJtb2RlIiwic2V0TWluVmlkZW9CaXRyYXRlRm9yVHJhZmZpY0NvbnRyb2wiLCJ2b2x1bWUiLCJzZXRDYXB0dXJlVm9sdW1lIiwidGFyZ2V0VVJMIiwiYWRkUHVibGlzaENkblVybCIsInJlbW92ZVB1Ymxpc2hDZG5VcmwiLCJlbmFibGVQdWJsaXNoRGlyZWN0VG9DRE4iLCJ3YXRlcm1hcmsiLCJpc1ByZXZpZXdWaXNpYmxlIiwic2V0UHVibGlzaFdhdGVybWFyayIsImVuYWJsZUhhcmR3YXJlRW5jb2RlciIsImZpbGVQYXRoIiwic2V0RHVtbXlDYXB0dXJlSW1hZ2VQYXRoIiwic3RhcnRQbGF5aW5nU3RyZWFtIiwic3RvcFBsYXlpbmdTdHJlYW0iLCJ0YWtlUGxheVN0cmVhbVNuYXBzaG90Iiwic2V0UGxheVZvbHVtZSIsInNldEFsbFBsYXlTdHJlYW1Wb2x1bWUiLCJzdHJlYW1UeXBlIiwic2V0UGxheVN0cmVhbVZpZGVvVHlwZSIsIm1pbkJ1ZmZlckludGVydmFsIiwibWF4QnVmZmVySW50ZXJ2YWwiLCJzZXRQbGF5U3RyZWFtQnVmZmVySW50ZXJ2YWxSYW5nZSIsInNldFBsYXlTdHJlYW1Gb2N1c09uIiwibXV0ZVBsYXlTdHJlYW1BdWRpbyIsIm11dGVQbGF5U3RyZWFtVmlkZW8iLCJtdXRlQWxsUGxheVN0cmVhbUF1ZGlvIiwibXV0ZUFsbFBsYXlTdHJlYW1WaWRlbyIsImVuYWJsZUhhcmR3YXJlRGVjb2RlciIsInRhc2siLCJzdGFydE1peGVyVGFzayIsInN0b3BNaXhlclRhc2siLCJzdGFydEF1dG9NaXhlclRhc2siLCJzdG9wQXV0b01peGVyVGFzayIsIm11dGVNaWNyb3Bob25lIiwiaXNNaWNyb3Bob25lTXV0ZWQiLCJtdXRlU3BlYWtlciIsImlzU3BlYWtlck11dGVkIiwiZW5hYmxlQXVkaW9DYXB0dXJlRGV2aWNlIiwiZ2V0QXVkaW9Sb3V0ZVR5cGUiLCJkZWZhdWx0VG9TcGVha2VyIiwic2V0QXVkaW9Sb3V0ZVRvU3BlYWtlciIsImVuYWJsZUNhbWVyYSIsInVzZUZyb250Q2FtZXJhIiwiZmFjdG9yIiwic2V0Q2FtZXJhWm9vbUZhY3RvciIsImdldENhbWVyYU1heFpvb21GYWN0b3IiLCJzdGFydFNvdW5kTGV2ZWxNb25pdG9yIiwic3RvcFNvdW5kTGV2ZWxNb25pdG9yIiwiZW5hYmxlSGVhZHBob25lTW9uaXRvciIsInNldEhlYWRwaG9uZU1vbml0b3JWb2x1bWUiLCJlbmFibGVUb3JjaCIsImVuYWJsZUFFQyIsImVuYWJsZUhlYWRwaG9uZUFFQyIsInNldEFFQ01vZGUiLCJlbmFibGVBR0MiLCJlbmFibGVBTlMiLCJlbmFibGVUcmFuc2llbnRBTlMiLCJzZXRBTlNNb2RlIiwic3RhcnRFZmZlY3RzRW52Iiwic3RvcEVmZmVjdHNFbnYiLCJlbmFibGVFZmZlY3RzQmVhdXR5IiwicGFyYW0iLCJzZXRFZmZlY3RzQmVhdXR5UGFyYW0iLCJtZXNzYWdlIiwic2VuZEJyb2FkY2FzdE1lc3NhZ2UiLCJzZW5kQmFycmFnZU1lc3NhZ2UiLCJjb21tYW5kIiwidG9Vc2VyTGlzdCIsInNlbmRDdXN0b21Db21tYW5kIiwiY3JlYXRlTWVkaWFQbGF5ZXIiLCJtZWRpYVBsYXllciIsImRlc3Ryb3lNZWRpYVBsYXllciIsInN0YXJ0UmVjb3JkaW5nQ2FwdHVyZWREYXRhIiwic3RvcFJlY29yZGluZ0NhcHR1cmVkRGF0YSIsInByb2ZpbGUiLCJjcmVhdGVFbmdpbmVXaXRoUHJvZmlsZSIsImRlc3Ryb3lFbmdpbmUiLCJzZXRFbmdpbmVDb25maWciLCJzZXRSb29tTW9kZSIsImdldFZlcnNpb24iLCJhcHBJRCIsImFwcFNpZ24iLCJpc1Rlc3RFbnYiLCJzY2VuYXJpbyIsImNyZWF0ZUVuZ2luZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7QUFBcUUsSUFDaERBLGlCQUFpQjtFQUFBO0lBQUE7RUFBQTtFQUFBO0lBQUE7SUFBQTtJQTJFbEM7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7SUFDSSxxQkFBWTtNQUNSLE9BQU9DLDRDQUFxQixDQUFDQyxXQUFXLEVBQUUsQ0FBQ0MsU0FBUyxFQUFFO0lBQzFEO0lBQ0E7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7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Vkk7SUFBQTtJQUFBLE9BV0Esc0JBQW9CO01BQ2hCLE9BQU85Qyw0Q0FBcUIsQ0FBQytILFVBQVUsRUFBRTtJQUM3QztFQUFDO0lBQUE7SUFBQSxPQTgyQ0Qsc0JBQW9CQyxLQUFLLEVBQUVDLE9BQU8sRUFBRUMsU0FBUyxFQUFFQyxRQUFRLEVBQUU7TUFDckQsT0FBT25JLDRDQUFxQixDQUFDb0ksWUFBWSxDQUFDSixLQUFLLEVBQUVDLE9BQU8sRUFBRUMsU0FBUyxFQUFFQyxRQUFRLENBQUM7SUFDbEY7RUFBQztFQUFBO0FBQUE7QUFBQSIsImZpbGUiOiIzNC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFplZ29FeHByZXNzRW5naW5lSW1wbCB9IGZyb20gJy4vaW1wbC9aZWdvRXhwcmVzc0VuZ2luZUltcGwnO1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgWmVnb0V4cHJlc3NFbmdpbmUge1xuICAgIC8qKlxuICAgICAqIEVuZ2luZSBzaW5nbGV0b24gaW5zdGFuY2VcbiAgICAgKi9cbiAgICBzdGF0aWMgaW5zdGFuY2UoKSB7XG4gICAgICAgIHJldHVybiBaZWdvRXhwcmVzc0VuZ2luZUltcGwuZ2V0SW5zdGFuY2UoKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICog5Yib5bu6IFplZ29FeHByZXNzRW5naW5lIOWNleS+i+WvueixoeW5tuWIneWni+WMliBTREvjgIJcbiAgICAgKlxuICAgICAqIOaUr+aMgeeJiOacrO+8mjIuMTQuMCDlj4rku6XkuIrjgIJcbiAgICAgKiDor6bmg4Xmj4/ov7DvvJrliJvlu7ogWmVnb0V4cHJlc3NFbmdpbmUg5Y2V5L6L5a+56LGh5bm25Yid5aeL5YyWIFNES+OAglxuICAgICAqIOiwg+eUqOaXtuacuu+8mlNESyDlhbbku5blrp7kvovmlrnms5XosIPnlKjkuYvliY3jgIJcbiAgICAgKiDkvb/nlKjpmZDliLbvvJrml6DjgIJcbiAgICAgKiDms6jmhI/kuovpobnvvJpTREsg5Y+q5pSv5oyB5Yib5bu65LiA5Liq5a6e5L6L77yM5aaC6ZyA6YeN5aSN6LCD55SoIFtjcmVhdGVFbmdpbmVdIO+8jOWImemcgOWcqOesrOS6jOasoeiwg+eUqCBbY3JlYXRlRW5naW5lXSDliY3lhYjosIPnlKggW2Rlc3Ryb3lFbmdpbmVdIOWHveaVsOmUgOavgeW8leaTju+8jOWQpuWImeWGjeasoeiwg+eUqOatpOWHveaVsOi/lOWbnueahOmDveaYr+S4iuasoeWIm+W7uueahOWvueixoeOAglxuICAgICAqXG4gICAgICogQHBhcmFtIHByb2ZpbGUg55So5p2l5Yib5bu65byV5pOO55qE5Z+656GA6YWN572u5L+h5oGv44CCXG4gICAgICogQHJldHVybiDlvJXmk47ljZXkvovlr7nosaHjgIJcbiAgICAgKi9cbiAgICBzdGF0aWMgY3JlYXRlRW5naW5lV2l0aFByb2ZpbGUocHJvZmlsZSkge1xuICAgICAgICByZXR1cm4gWmVnb0V4cHJlc3NFbmdpbmVJbXBsLmNyZWF0ZUVuZ2luZVdpdGhQcm9maWxlKHByb2ZpbGUpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiDplIDmr4EgWmVnb0V4cHJlc3NFbmdpbmUg5Y2V5L6L5a+56LGh5bm25Y+N5Yid5aeL5YyWIFNES+OAglxuICAgICAqXG4gICAgICog5pSv5oyB54mI5pys77yaMS4xLjAg5Y+K5Lul5LiK44CCXG4gICAgICog6K+m5oOF5o+P6L+w77ya6ZSA5q+BIFplZ29FeHByZXNzRW5naW5lIOWNleS+i+WvueixoeW5tuWPjeWIneWni+WMliBTREvjgIJcbiAgICAgKiDosIPnlKjml7bmnLrvvJrlvZPkuI3lho3kvb/nlKggU0RLIOaXtu+8jOWPr+S7pemAmui/h+acrOaOpeWPo+mHiuaUviBTREsg5L2/55So55qE6LWE5rqQ44CCXG4gICAgICog5L2/55So6ZmQ5Yi277ya5peg44CCXG4gICAgICog5rOo5oSP5LqL6aG577ya5L2/55SoIFtjcmVhdGVFbmdpbmVdIOWIm+W7uuWNleS+i+WQju+8jOWmguaenOWNleS+i+Wvueixoeacquiiq+WIm+W7uuaIluW3suiiq+mUgOavge+8jOiwg+eUqOatpOWHveaVsOaXtu+8jOS4jeS8muaUtuWIsOebuOWFs+Wbnuiwg+OAglxuICAgICAqL1xuICAgIHN0YXRpYyBkZXN0cm95RW5naW5lKCkge1xuICAgICAgICByZXR1cm4gWmVnb0V4cHJlc3NFbmdpbmVJbXBsLmRlc3Ryb3lFbmdpbmUoKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICog6K6+572u5byV5pOO6L+b6Zi26YWN572u44CCXG4gICAgICpcbiAgICAgKiDmlK/mjIHniYjmnKzvvJoxLjEuMCDlj4rku6XkuIrjgIJcbiAgICAgKiDor6bmg4Xmj4/ov7DvvJrnlKjkuo7lvIDlkK/ov5vpmLblip/og73jgIJcbiAgICAgKiDosIPnlKjml7bmnLrvvJrkuI3lkIznmoTphY3nva7mnInkuI3lkIznmoTosIPnlKjml7bmnLropoHmsYLvvIzor6bmg4Xlj6/lkqjor6IgWkVHTyDmioDmnK/mlK/mjIHjgIJcbiAgICAgKiDkvb/nlKjpmZDliLbvvJrml6DjgIJcbiAgICAgKlxuICAgICAqIEBwYXJhbSBjb25maWcg5byV5pOO6L+b6Zi26YWN572uXG4gICAgICovXG4gICAgc3RhdGljIHNldEVuZ2luZUNvbmZpZyhjb25maWcpIHtcbiAgICAgICAgcmV0dXJuIFplZ29FeHByZXNzRW5naW5lSW1wbC5zZXRFbmdpbmVDb25maWcoY29uZmlnKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICog6K6+572u5oi/6Ze05qih5byP44CCXG4gICAgICpcbiAgICAgKiDmlK/mjIHniYjmnKzvvJoyLjkuMCDlj4rku6XkuIrjgIJcbiAgICAgKiDor6bmg4Xmj4/ov7DvvJrlvIDlj5HogIXpnIDopoHkvb/nlKjlpJrmiL/pl7Tlip/og73ml7bvvIzpnIDopoHosIPnlKjmraTlh73mlbDmnaXlrozmiJDphY3nva7jgIJcbiAgICAgKiDosIPnlKjml7bmnLrvvJrlv4XpobvlnKjosIPnlKggW2NyZWF0ZUVuZ2luZV0g5LmL5YmN6K6+572u5omN55Sf5pWI77yM5ZCm5YiZ5Lya5aSx6LSl44CCXG4gICAgICog5L2/55So6ZmQ5Yi277ya5aaC5p6c6ZyA6KaB5L2/55So5aSa5oi/6Ze05Yqf6IO977yM6K+35LiO5Y2z5p6E5oqA5pyv5pSv5oyB6IGU57O76YWN572u5pyN5Yqh56uv5pSv5oyB44CCXG4gICAgICog5rOo5oSP5LqL6aG577ya5peg44CCXG4gICAgICpcbiAgICAgKiBAcGFyYW0gbW9kZSDmiL/pl7TmqKHlvI/jgILor6bmg4Xmj4/ov7DvvJrnlKjkuo7orr7nva7miL/pl7TmqKHlvI/jgILkuJrliqHlnLrmma/vvJrlvZPpnIDopoHlkIzml7bov5vlhaXlpJrkuKrmiL/pl7Tov5vooYzmjqjmi4nmtYHml7bvvIzlj6/ku6XpgJrov4fmnKzmjqXlj6PlvIDlkK/lpJrmiL/pl7TmqKHlvI/jgILmmK/lkKblv4XloavvvJrmmK/jgILpu5jorqTlgLzvvJpaRUdPX1JPT01fTU9ERV9TSU5HTEVfUk9PTeOAglxuICAgICAqL1xuICAgIHN0YXRpYyBzZXRSb29tTW9kZShtb2RlKSB7XG4gICAgICAgIHJldHVybiBaZWdvRXhwcmVzc0VuZ2luZUltcGwuc2V0Um9vbU1vZGUobW9kZSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIOiOt+WPliBTREsg54mI5pys5Y+344CCXG4gICAgICpcbiAgICAgKiDmlK/mjIHniYjmnKzvvJoxLjEuMCDlj4rku6XkuIrjgIJcbiAgICAgKiDor6bmg4Xmj4/ov7DvvJrlnKggU0RLIOWcqOi/kOihjOi/h+eoi+S4reiLpemBh+WIsOW8guW4uO+8jOWPr+WwhumXrumimOOAgeaXpeW/l+etieS/oeaBr+aPkOS6pCBaRUdPIOaKgOacr+S6uuWRmOWumuS9jeS4juaOkumanOOAguW8gOWPkeiAheS5n+WPr+mAmui/h+ivpSBBUEkg5pS26ZuG5b2T5YmNIFNESyDniYjmnKzkv6Hmga/vvIzkvr/kuo4gQXBwIOi/kOiQpee7n+iuoeS7peWPiuWFs+iBlOmXrumimOOAglxuICAgICAqIOiwg+eUqOaXtuacuu+8muS7u+aEj+aXtuWIu+OAglxuICAgICAqIOS9v+eUqOmZkOWItu+8muaXoOOAglxuICAgICAqIOazqOaEj+S6i+mhue+8muaXoOOAglxuICAgICAqXG4gICAgICogQHJldHVybiBTREsg54mI5pys5Y+344CCXG4gICAgICovXG4gICAgc3RhdGljIGdldFZlcnNpb24oKSB7XG4gICAgICAgIHJldHVybiBaZWdvRXhwcmVzc0VuZ2luZUltcGwuZ2V0VmVyc2lvbigpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiDkuIrkvKDml6Xlv5fliLAgWkVHTyDmnI3liqHlmajjgIJcbiAgICAgKlxuICAgICAqIOaUr+aMgeeJiOacrO+8mjEuMS4wIOWPiuS7peS4iuOAglxuICAgICAqIOivpuaDheaPj+i/sO+8mum7mOiupOaDheWGteS4i++8jFNESyDkvJrlnKggQXBwIOm7mOiupOebruW9leWIm+W7uuaXpeW/l+aWh+S7tuW5tuaJk+WNsO+8jOavj+S4quaXpeW/l+aWh+S7tum7mOiupOacgOWkpyA1TULvvIzkuInkuKrml6Xlv5fmlofku7blvqrnjq/opobnm5blhpnlhaXjgILlvZPosIPnlKjmraTlh73mlbDml7YgU0RLIOS8muiHquWKqOWwhuaXpeW/l+aWh+S7tuaJk+WMheW5tuS4iuS8oOWIsCBaRUdPIOacjeWKoeWZqOOAglxuICAgICAqIOS4muWKoeWcuuaZr++8muW8gOWPkeiAheWPr+WcqCBBcHAg5o+Q5L6b5Lia5Yqh5LiK55qE4oCc5Y+N6aaI4oCd5rig6YGT77yM5b2T55So5oi35Y+N6aaI55qE6Zeu6aKY5bGe5LqOIFpFR08gU0RLIOaXtu+8jOWPr+iwg+eUqOatpOWHveaVsOWwhiBTREsg55qE5pys5Zyw5pel5b+X5L+h5oGv5LiK5Lyg77yM5bm26IGU57O7IFpFR08g5oqA5pyv5pSv5oyB5Y2P5Yqp5a6a5L2N55So5oi36Zeu6aKY44CCXG4gICAgICog6LCD55So5pe25py677ya5ZyoIFtjcmVhdGVFbmdpbmVdIOWQjuOAglxuICAgICAqIOS9v+eUqOmZkOWItu+8mumZkOmikeavj+WIhumSnzHmrKHjgIJcbiAgICAgKiDms6jmhI/kuovpobnvvJoxLuWcqOiwg+eUqOacrOaOpeWPo+S4iuS8oOaXpeW/l+WQju+8jOWmguaenOi/h+W/q+eahOiwg+eUqCBbZGVzdHJveUVuZ2luZV0g5oiWIOmAgOWHuiBBcHDvvIzliJnlj6/og73lrZjlnKjlpLHotKXnmoTmg4XlhrXjgILlu7rorq7nrYnlvoXlh6Dnp5LvvIznrYnmlLbliLDkuIrkvKDmiJDlip/lm57osIPlkI7vvIzlho3osIPnlKggW2Rlc3Ryb3lFbmdpbmVdIOaIliDpgIDlh7ogQXBw44CCMi7lpoLmnpzluIzmnJvlnKggW2NyZWF0ZUVuZ2luZV0g5LmL5YmN6LCD55So77yM6K+36LCD55SoIFtzdWJtaXRMb2ddIOaOpeWPo+OAglxuICAgICAqL1xuICAgIHVwbG9hZExvZygpIHtcbiAgICAgICAgcmV0dXJuIFplZ29FeHByZXNzRW5naW5lSW1wbC5nZXRJbnN0YW5jZSgpLnVwbG9hZExvZygpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiDosIPnlKjlrp7pqozmgKcgQVBJ44CCXG4gICAgICpcbiAgICAgKiDmlK/mjIHniYjmnKzvvJoyLjcuMCDlj4rku6XkuIrjgIJcbiAgICAgKiDor6bmg4Xmj4/ov7DvvJpaRUdPIOmAmui/h+atpCBBUEkg5o+Q5L6bIFJUQyDkuJrliqHkuK3nmoTpg6jliIbmioDmnK/pooTop4jmiJbnibnliKvlrprliLblip/og73vvIzpnIDopoHojrflj5blip/og73nmoTkvb/nlKjmiJbor6bmg4Xlhbbor6bmg4Xlj6/lkqjor6IgWkVHTyDmioDmnK/mlK/mjIHjgIJcbiAgICAgKiDosIPnlKjml7bmnLrvvJrlnKggW2NyZWF0ZUVuZ2luZV0g5ZCO44CCXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcGFyYW1zIOS8oOWFpeeahOWPguaVsO+8jOagvOW8j+S4uiBKU09OIOWtl+espuS4su+8jOWFt+S9k+WPr+WSqOivoiBaRUdPIOaKgOacr+aUr+aMgeOAglxuICAgICAqIEByZXR1cm4g6L+U5Zue55qE5Y+C5pWw77yM5qC85byP5Li6IEpTT04g5a2X56ym5Liy77yM5YW35L2T5Y+v5ZKo6K+iIFpFR08g5oqA5pyv5pSv5oyB44CCXG4gICAgICovXG4gICAgY2FsbEV4cGVyaW1lbnRhbEFQSShwYXJhbXMpIHtcbiAgICAgICAgcmV0dXJuIFplZ29FeHByZXNzRW5naW5lSW1wbC5nZXRJbnN0YW5jZSgpLmNhbGxFeHBlcmltZW50YWxBUEkocGFyYW1zKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICog5rOo5YaM5LqL5Lu255uR5ZCsXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZXZlbnQg5LqL5Lu257G75Z6L44CCXG4gICAgICogQHBhcmFtIGNhbGxiYWNrIOS6i+S7tuWbnuiwg+OAglxuICAgICAqL1xuICAgIG9uKGV2ZW50LCBjYWxsYmFjaykge1xuICAgICAgICByZXR1cm4gWmVnb0V4cHJlc3NFbmdpbmVJbXBsLmdldEluc3RhbmNlKCkub24oZXZlbnQsIGNhbGxiYWNrKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICog5rOo6ZSA5LqL5Lu255uR5ZCsXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZXZlbnQg5pe26Ze057G75Z6L44CCXG4gICAgICogQHBhcmFtIGNhbGxiYWNrIOS6i+S7tuWbnuiwg+OAglxuICAgICAqL1xuICAgIG9mZihldmVudCwgY2FsbGJhY2spIHtcbiAgICAgICAgcmV0dXJuIFplZ29FeHByZXNzRW5naW5lSW1wbC5nZXRJbnN0YW5jZSgpLm9mZihldmVudCwgY2FsbGJhY2spO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiDkvb/nlKjluKbphY3nva7ov5vpmLblsZ7mgKfnmoTmlrnlvI/nmbvlvZXmiL/pl7TvvIzpgJrov4flm57osIPlj4LmlbDov5Tlm57nmbvlvZXnu5PmnpzvvIzmjqjmi4nmtYHliY3lv4XpobvnmbvlvZXmiL/pl7TjgIJcbiAgICAgKlxuICAgICAqIOaUr+aMgeeJiOacrO+8mjIuMTguMCDlj4rku6XkuIrjgIJcbiAgICAgKiDor6bmg4Xmj4/ov7DvvJrlpoLmnpzmiL/pl7TkuI3lrZjlnKjvvIxbbG9naW5Sb29tXSDkvJrliJvlu7rlubbnmbvlvZXmiL/pl7TjgIJTREsg55SoXCLmiL/pl7RcIuamguW/teadpee7hOe7h+eUqOaIt++8jOeUqOaIt+W/hemhu+mmluWFiOeZu+W9leafkOS4quaIv+mXtO+8jOaJjeiDvei/m+ihjOS4gOezu+WIl+WFs+mUruaTjeS9nO+8jOavlOWmguaOqOa1gSBbc3RhcnRQdWJsaXNoaW5nU3RyZWFtXeOAgeaLiea1gVtzdGFydFBsYXlpbmdTdHJlYW1d44CB5pS25Y+R5bm/5pKt5raI5oGvIFtzZW5kQnJvYWRjYXN0TWVzc2FnZV0g562J44CC5Li65LqG6Ziy5q2iIEFwcCDooqvmgbbmhI/nlKjmiLfmqKHmi5/nmbvlvZXvvIzlj6/ku6XlnKjnmbvlvZXmiL/pl7TkuYvliY3liqDkuIrpibTmnYPpqozor4HvvIzljbMgW2NvbmZpZ10g5Y+C5pWw5Lyg5YWl55qEIFplZ29Sb29tQ29uZmlnIOWvueixoeS4reeahCBbdG9rZW5dIOWPguaVsOOAglxuICAgICAqIOS4muWKoeWcuuaZr++8muWcqOWQjOS4gOS4quaIv+mXtOWGheeUqOaIt+WPr+S7pei/m+ihjOebtOaSreOAgemfs+inhumikemAmuivneetieOAglxuICAgICAqIOiwg+eUqOaXtuacuu+8muWcqCBbY3JlYXRlRW5naW5lXSDliJ3lp4vljJYgU0RLIOS5i+WQjuiwg+eUqOivpeWHveaVsOOAglxuICAgICAqIOS9v+eUqOmZkOWItu+8muWQjOS4gOaIv+mXtOeZu+W9leaOpeWPo+eahOiwg+eUqOmikeeOhyAoUVBTKSDmnInkuIDlrprpmZDliLbvvIzor6bmg4Xmn6XpmIUgaHR0cHM6Ly9kb2MtemguemVnby5pbS9hcnRpY2xlLzc1ODEg5oiW6IGU57O7IFpFR08g5oqA5pyv5pSv5oyB44CCXG4gICAgICog5rOo5oSP5LqL6aG577yaXG4gICAgICogICAxLiDkvb/nlKjkuI3lkIwgYXBwSUQg55qEIEFwcCDkuI3og73kupLpgJrjgIJcbiAgICAgKiAgIDIuIFNESyDmlK/mjIHmi4nnm7jlkIwgYXBwSUQg5LiL6Z2e5ZCM5LiA5Liq5oi/6Ze055qE5rWB77yM5Y2z6Leo5oi/6Ze05ouJ5rWB44CC55Sx5LqOIFNESyDnmoTmiL/pl7Tkv6Hku6TnmoTnm7jlhbPlm57osIPpgJrnn6XmmK/ku6Xnm7jlkIzmiL/pl7TkuLrljZXkvY3vvIzlvZPlvIDlj5HogIXmg7PopoHot6jmiL/pl7Tmi4nmtYHml7bvvIzlvIDlj5HogIXpnIDoh6rooYznu7TmiqTnm7jlhbPnmoTmtojmga/lj4rkv6Hku6TpgJrnn6XjgIJcbiAgICAgKiAgIDMuIOW8uueDiOW7uuiuriB1c2VySUQg5LiO5Lia5YqhIEFQUCDnmoTnlKjmiLcgSUQg5LiA5LiA5a+55bqU77yM5Y2z5LiA5LiqIHVzZXJJRCDkuI7kuIDkuKrnnJ/lrp7nlKjmiLfmmK/lm7rlrprkuJTllK/kuIDnmoTvvIzogIzkuI3lupTor6XmmK/ku6Xpmo/mnLrnmoQgdXNlcklEIOeahOaWueW8j+S8oOe7mSBTREsg55qE5pa55byP44CC5Zug5Li65ZSv5LiA5LiU5Zu65a6a55qEIHVzZXJJRCDlj6/ku6XorqkgWkVHTyDmioDmnK/kurrlkZjlv6vpgJ/lrprkvY3nur/kuIrpl67popjjgIJcbiAgICAgKiAgIDQuIOmmluasoeWboOe9kee7nOWOn+WboOeZu+W9leWksei0peaIluiAheaIv+mXtOaWreW8gOi/nuaOpeS5i+WQju+8jFNESyDph43ov57pu5jorqTml7bpl7TkuLogMjBtaW7jgIJcbiAgICAgKiDpmpDnp4Hkv53miqTnlLPmmI7vvJror7fli7/lnKjmraTmjqXlj6PloavlhpnnlKjmiLfmlY/mhJ/kv6Hmga/vvIzljIXmi6zkvYbkuI3pmZDkuo7miYvmnLrlj7fjgIHouqvku73or4Hlj7fjgIHmiqTnhafnvJblj7fjgIHnnJ/lrp7lp5PlkI3nrYnjgIJcbiAgICAgKiDnm7jlhbPlm57osIPvvJpcbiAgICAgKiAgIDEuIOW9k+eUqOaIt+W8gOWni+eZu+W9leaIv+mXtOOAgeeZu+W9leaIv+mXtOaIkOWKn+aIlueZu+W9leaIv+mXtOWksei0peWQju+8jOWwhuS8muinpuWPkSBbb25Sb29tU3RhdGVDaGFuZ2VkXSAoMi4xOC4wIOS5i+WJjeeJiOacrOS4jeaUr+aMge+8jOivt+S9v+eUqCBbb25Sb29tU3RhdGVVcGRhdGVdKSDlm57osIPpgJrnn6XlvIDlj5HogIXlvZPliY3nlKjmiLfov57mjqXmiL/pl7TnmoTnirbmgIHjgIJcbiAgICAgKiAgIDIuIOeZu+W9leWQjOS4gOS4quaIv+mXtOeahOS4jeWQjOeUqOaIt+WPr+S7peW+l+WIsOS7peebuOWQjOaIv+mXtOS4uuWNleS9jeeahOaIv+mXtOS/oeS7pOmAmuefpe+8iOS+i+Wmgu+8mltvblJvb21Vc2VyVXBkYXRlXSwgW29uUm9vbVN0cmVhbVVwZGF0ZV0g562J77yJ77yM5LiA5Liq5oi/6Ze05YaF55qE55So5oi35pS25LiN5Yiw5Y+m5LiA5Liq5oi/6Ze05oi/6Ze05L+h5Luk55qE6YCa55+l44CCXG4gICAgICogICAzLiDlpoLmnpznlLHkuo7nvZHnu5zotKjph4/ljp/lm6Dlr7zoh7TnvZHnu5zkuLTml7bkuK3mlq3vvIxTREsg5YaF6YOo5Lya6Ieq5Yqo6L+b6KGM6YeN6L+e44CC5Y+v6YCa6L+H55uR5ZCsIFtvblJvb21TdGF0ZUNoYW5nZWRdICgyLjE4LjAg5LmL5YmN54mI5pys5LiN5pSv5oyB77yM6K+35L2/55SoIFtvblJvb21TdGF0ZVVwZGF0ZV0pIOWbnuiwg+iOt+WPluacrOerr+W9k+WJjeaIv+mXtOi/nuaOpeeKtuaAgeeahOWPmOWMluaDheWGte+8jOWQjOaXtuWQjOaIv+mXtOWFtuS7lueUqOaIt+S8muaOpeaUtuWIsCBbb25Sb29tVXNlclVwZGF0ZV0g5Zue6LCD6YCa55+l44CC6K+m5oOF6K+35Y+C6ICDIGh0dHBzOi8vZG9jLXpoLnplZ28uaW0vZmFxL3JlY29ubmVjdFxuICAgICAqICAgNC4g5LiA5Liq5oi/6Ze05Y+R55qE5raI5oGv77yI5L6L5aaCIFtzZXRTdHJlYW1FeHRyYUluZm9dLCBbc2VuZEJyb2FkY2FzdE1lc3NhZ2VdLCBbc2VuZEJhcnJhZ2VNZXNzYWdlXSwgW3NlbmRDdXN0b21Db21tYW5kXSDnrYnvvInlnKjliKvnmoTmiL/pl7Tml6Dms5XmlLbliLDvvIjkvovlpoIgW29uUm9vbVN0cmVhbUV4dHJhSW5mb1VwZGF0ZV0sIFtvbklNUmVjdkJyb2FkY2FzdE1lc3NhZ2VdLCBbb25JTVJlY3ZCYXJyYWdlTWVzc2FnZV0sIFtvbklNUmVjdkN1c3RvbUNvbW1hbmRdIOetie+8ie+8jOebruWJjSBaZWdvRXhwcmVzc0VuZ2luZSDmnKrmj5Dkvpvot6jmiL/pl7Tmtojmga/nmoTog73lipvjgILlvIDlj5HogIXlj6/ku6Xpm4bmiJAgSU0g55qEIFNESyDmnaXlrp7njrDjgIJcbiAgICAgKiDnm7jlhbPmjqXlj6PvvJpcbiAgICAgKiAgIDEuIOWPr+iwg+eUqCBbbG9nb3V0Um9vbV0g6YCA5Ye655m75b2V77yM5aaC5p6c5rKh5pyJ6YCA5Ye655m75b2V6ICM6YeN5aSN6LCD55So55m75b2V5o6l5Y+jKHJvb21JRCDlkowgdXNlciDkv53mjIHnm7jlkIznmoTmg4XlhrXkuIsp77yM5o6n5Yi25Y+w5Lya5oql6ZSZ77yM5omT5Y2w6ZSZ6K+v56CBIDEwMDIwMDHjgIJcbiAgICAgKiAgIDIuIOWmguaenOmcgOimgeeZu+W9leWkmuS4quaIv+mXtO+8jOivt+WcqOWIm+W7uuW8leaTjuWJjemAmui/hyBbWmVnb1Jvb21Nb2RlXSDpgInmi6nlpJrmiL/pl7TmqKHlvI/vvIznhLblkI7osIPnlKggW2xvZ2luUm9vbV0g5o6l5Y+j55m75b2V5aSa5oi/6Ze044CCXG4gICAgICogICAzLiDosIPnlKggW2Rlc3Ryb3lFbmdpbmVdIOS5n+S8muS9v+eUqOaIt+iHquWKqOmAgOWHuueZu+W9leOAglxuICAgICAqXG4gICAgICogQHBhcmFtIHJvb21JRCDmiL/pl7QgSUTvvIzkuI3lvpfkuLrnqbrvvIzmnIDlpKfplb/luqbkuLogMTI4IOWtl+iKgueahOWtl+espuS4suOAglxuICAgICAqICAg5rOo5oSP5LqL6aG577yaXG4gICAgICogICAxLuaIv+mXtCBJRCDnlLHmgqjoh6rlt7HlrprkuYnjgIJcbiAgICAgKiAgIDIuIOS7heaUr+aMgeaVsOWtl++8jOiLseaWh+Wtl+espiDlkowgJ34nLCAnIScsICdAJywgJyMnLCAnJCcsICclJywgJ14nLCAnJicsICcqJywgJygnLCAnKScsICdfJywgJysnLCAnPScsICctJywgJ2AnLCAnOycsICfigJknLCAnLCcsICcuJywgJzwnLCAnPicsICdcXCfjgIJcbiAgICAgKiAgIDMuIOWmguaenOmcgOimgeS4jiBXZWIgU0RLIOS6kumAmu+8jOivt+S4jeimgeS9v+eUqCAnJSfjgIJcbiAgICAgKiBAcGFyYW0gdXNlciDnlKjmiLflr7nosaHlrp7kvovvvIzphY3nva7nlKjmiLcgSUTjgIHnlKjmiLflkI3jgIIg5rOo5oSP5LqL6aG577ya5rOo5oSP55So5oi3IElEIOmcgOimgeWcqOebuOWQjOeahCBhcHBJRCDkuIvlhajlsYDllK/kuIDvvIzlkKbliJnkvJrlh7rnjrDlkI7nmbvlvZXnmoTnlKjmiLfouKLmjonlhYjnmbvlvZXnmoTnlKjmiLfnmoTmg4XlhrXjgIJcbiAgICAgKiBAcGFyYW0gY29uZmlnIOaIv+mXtOi/m+mYtumFjee9ruOAglxuICAgICAqIEByZXR1cm4g5pys5qyh55m75b2V5oi/6Ze057uT5p6cXG4gICAgICovXG4gICAgbG9naW5Sb29tKHJvb21JRCwgdXNlciwgY29uZmlnKSB7XG4gICAgICAgIHJldHVybiBaZWdvRXhwcmVzc0VuZ2luZUltcGwuZ2V0SW5zdGFuY2UoKS5sb2dpblJvb20ocm9vbUlELCB1c2VyLCBjb25maWcpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiDpgIDlh7rmjIflrprmiL/pl7QgSUQg55qE5oi/6Ze077yM5bm25bim5pyJ5Zue6LCD44CCXG4gICAgICpcbiAgICAgKiDmlK/mjIHniYjmnKzvvJoxLjEuMCDlj4rku6XkuIrjgIJcbiAgICAgKiDor6bmg4Xmj4/ov7DvvJror6XmjqXlj6PkvJrpgIDlh7rmiL/pl7TlkI3kuLogcm9vbUlEIOeahOaIv+mXtOOAglxuICAgICAqIOS4muWKoeWcuuaZr++8muWcqOWQjOS4gOS4quaIv+mXtOWGheeUqOaIt+WPr+S7pei/m+ihjOebtOaSreOAgemfs+inhumikemAmuivneetieOAglxuICAgICAqIOiwg+eUqOaXtuacuu+8mueZu+W9leaIv+mXtOaIkOWKn+WQju+8jOiLpeS4jeWGjeS9v+eUqOaIv+mXtOWKn+iDve+8jOeUqOaIt+WPr+S7peiwg+eUqOWHveaVsCBbbG9nb3V0Um9vbV3jgIJcbiAgICAgKiDkvb/nlKjpmZDliLbvvJrml6DjgIJcbiAgICAgKiDms6jmhI/kuovpobnvvJoxLiDpgIDlh7rmiL/pl7TkvJrlgZzmraLor6XnlKjmiLfnmoTmiYDmnInmjqjmi4nmtYHvvIzlvJXmk47kvJrlgZzmraLvvIxTREsg5YaF6YOo5Lya5Li75Yqo5YGc5q2i5pys5Zyw6aKE6KeI44CC5aaC5p6c5YiH5o2i5oi/6Ze05oOz5L+d55WZ6aKE6KeI6IO95Yqb77yM6K+35L2/55SoIFtzd2l0Y2hSb29tXSDlh73mlbDjgIIyLiDoi6XnlKjmiLfnmbvlh7rmiL/pl7TvvIzkvYbkvKDlhaUgcm9vbUlEIOS4juW3sueZu+W9leaIv+mXtOWQjeS4jeWQjO+8jFNESyDkvJrov5Tlm57lpLHotKXjgIJcbiAgICAgKiDnm7jlhbPlm57osIPvvJrosIPnlKjmraTlh73mlbDlkI7kvJrmlLbliLAgW29uUm9vbVN0YXRlQ2hhbmdlZF0gKDIuMTguMCDkuYvliY3niYjmnKzkuI3mlK/mjIHvvIzor7fkvb/nlKggW29uUm9vbVN0YXRlVXBkYXRlXSkg5Zue6LCD6YCa55+l5oiQ5Yqf6YCA5Ye65oi/6Ze077yM5ZCM5pe25ZCM5oi/6Ze05YW25LuW55So5oi35Lya5o6l5pS25YiwIFtvblJvb21Vc2VyVXBkYXRlXSDlm57osIPpgJrnn6XvvIjlvIDlkK8gaXNVc2VyU3RhdHVzTm90aWZ5IOmFjee9rueahOWJjeaPkOS4i++8ieOAglxuICAgICAqIOebuOWFs+aOpeWPo++8mueUqOaIt+WPr+S7peiwg+eUqCBbbG9naW5Sb29tXeOAgVtzd2l0Y2hSb29tXSDlh73mlbDnmbvlvZXmiJbmm7TmjaLmiL/pl7TjgIJcbiAgICAgKlxuICAgICAqIEBwYXJhbSByb29tSUQg5oi/6Ze0IElE77yM5pyA5aSn6ZW/5bqm5Li6IDEyOCDlrZfoioLnmoTlrZfnrKbkuLLjgIJcbiAgICAgKiAgIOazqOaEj+S6i+mhue+8mlxuICAgICAqICAgMS4g5LuF5pSv5oyB5pWw5a2X77yM6Iux5paH5a2X56ymIOWSjCAnficsICchJywgJ0AnLCAnIycsICckJywgJyUnLCAnXicsICcmJywgJyonLCAnKCcsICcpJywgJ18nLCAnKycsICc9JywgJy0nLCAnYCcsICc7JywgJ+KAmScsICcsJywgJy4nLCAnPCcsICc+JywgJ1xcJ+OAglxuICAgICAqICAgMi4g5aaC5p6c6ZyA6KaB5LiOIFdlYiBTREsg5LqS6YCa77yM6K+35LiN6KaB5L2/55SoICclJ+OAglxuICAgICAqIEByZXR1cm4g5pys5qyh55m75Ye65oi/6Ze057uT5p6cXG4gICAgICovXG4gICAgbG9nb3V0Um9vbShyb29tSUQpIHtcbiAgICAgICAgcmV0dXJuIFplZ29FeHByZXNzRW5naW5lSW1wbC5nZXRJbnN0YW5jZSgpLmxvZ291dFJvb20ocm9vbUlEKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICog5L2/55So6YWN572u6L+b6Zi25bGe5oCn55qE5pa55byP5YiH5o2i5oi/6Ze044CCXG4gICAgICpcbiAgICAgKiDmlK/mjIHniYjmnKzvvJoxLjE1LjAg5Y+K5Lul5LiK44CCXG4gICAgICog6K+m5oOF5o+P6L+w77ya5L2/55So5q2k5Ye95pWw5Y+v5Lul6K6p55So5oi35b+r6YCf5LuO5LiA5Liq5oi/6Ze05YiH5o2i5Yiw5Y+m5aSW5LiA5Liq5oi/6Ze044CCXG4gICAgICog5Lia5Yqh5Zy65pmv77ya6Iul6ZyA6KaB5b+r6YCf5YiH5o2i5Yiw5LiL5LiA5Liq5oi/6Ze077yM5Y+v6LCD55So5q2k5Ye95pWw44CCXG4gICAgICog6LCD55So5pe25py677ya55m75b2V5oi/6Ze05oiQ5Yqf5ZCO44CCXG4gICAgICog5L2/55So6ZmQ5Yi277ya5peg44CCXG4gICAgICog5rOo5oSP5LqL6aG577yaXG4gICAgICogICAxLiDlvZPosIPnlKjmraTlh73mlbDlkI7vvIzlvZPliY3mraPlnKjmjqjmiJbmi4nnmoTmiYDmnInmtYHpg73lsIbkvJrlgZzmraLvvIjkvYbmnKzlnLDpooTop4jkuI3kvJrlgZzmraLvvInjgIJcbiAgICAgKiAgIDIuIOS4uuS6humYsuatoiBBcHAg6KKr5oG25oSP55So5oi35qih5ouf55m75b2V77yM5Y+v5Lul5Zyo5YiH5o2i5oi/6Ze05LmL5YmN5Yqg5LiK6Ym05p2D6aqM6K+B77yM5Y2zIFtjb25maWddIOWPguaVsOS8oOWFpeeahCBaZWdvUm9vbUNvbmZpZyDlr7nosaHkuK3nmoQgW3Rva2VuXSDlj4LmlbDjgILmraTlj4LmlbDphY3nva7kvZznlKjkuo7ljbPlsIbliIfmjaLov4fljrvnmoTmiL/pl7TjgIJcbiAgICAgKiAgIDMuIDMuNS4wIOeJiOacrOW8gOWni+aUr+aMgeWkmuaIv+mXtOaooeW8j++8iOS9v+eUqOWHveaVsCBbc2V0Um9vbU1vZGVdIOiuvue9riBaZWdvUm9vbU1vZGUg5Li6IFpFR09fUk9PTV9NT0RFX01VTFRJX1JPT03vvInjgIJcbiAgICAgKiAgIDQuIOiLpeeZu+W9leaIv+mXtCBbbG9naW5Sb29tXSDml7bkvKDlhaXkuoYgVG9rZW4g6L+b6KGM55m75b2V77yM5YiZ6LCD55SoIFtzd2l0Y2hyb29tXSDliIfmjaLmiL/pl7Tml7bvvIzlv4Xpobvkvb/nlKjluKbmnIkgY29uZmlnIOWPguaVsOeahCBbc3dpdGNocm9vbV0g5o6l5Y+j5YiH5o2i5oi/6Ze077yM5bm25Lyg5YWl5a+55bqUIFRva2VuIOWAvOOAglxuICAgICAqIOmakOengeS/neaKpOeUs+aYju+8muivt+WLv+WcqOatpOaOpeWPo+Whq+WGmeeUqOaIt+aVj+aEn+S/oeaBr++8jOWMheaLrOS9huS4jemZkOS6juaJi+acuuWPt+OAgei6q+S7veivgeWPt+OAgeaKpOeFp+e8luWPt+OAgeecn+WunuWnk+WQjeetieOAglxuICAgICAqIOebuOWFs+Wbnuiwg++8muW9k+eUqOaIt+iwg+eUqCBbc3dpdGNoUm9vbV0g5Ye95pWw5pe277yM5bCG5Lya6Kem5Y+RIFtvblJvb21TdGF0ZUNoYW5nZWRdICgyLjE4LjAg5LmL5YmN54mI5pys5LiN5pSv5oyB77yM6K+35L2/55SoIFtvblJvb21TdGF0ZVVwZGF0ZV0pIOWbnuiwg+mAmuefpeW8gOWPkeiAheW9k+WJjeeUqOaIt+i/nuaOpeaIv+mXtOeahOeKtuaAgeOAglxuICAgICAqIOebuOWFs+aOpeWPo++8mueUqOaIt+WPr+S7peiwg+eUqCBbbG9nb3V0Um9vbV0g5Ye95pWw6YCA5Ye65oi/6Ze044CCXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZnJvbVJvb21JRCDlvZPliY3lpITkuo7nmoTmiL/pl7QgSUTjgIJcbiAgICAgKiBAcGFyYW0gdG9Sb29tSUQg6ZyA6KaB55m75b2V55qE5LiL5LiA5Liq5oi/6Ze0IElE44CCXG4gICAgICogQHBhcmFtIGNvbmZpZyDmiL/pl7Tov5vpmLbphY3nva7jgIJcbiAgICAgKi9cbiAgICBzd2l0Y2hSb29tKGZyb21Sb29tSUQsIHRvUm9vbUlELCBjb25maWcpIHtcbiAgICAgICAgcmV0dXJuIFplZ29FeHByZXNzRW5naW5lSW1wbC5nZXRJbnN0YW5jZSgpLnN3aXRjaFJvb20oZnJvbVJvb21JRCwgdG9Sb29tSUQsIGNvbmZpZyk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIOabtOaWsCB0b2tlbiDpibTmnYPkv6Hmga/jgIJcbiAgICAgKlxuICAgICAqIOaUr+aMgeeJiOacrO+8mjIuOC4wIOWPiuS7peS4iuOAglxuICAgICAqIOivpuaDheaPj+i/sO+8muW9k+W8gOWPkeiAheaUtuWIsCBbb25Sb29tVG9rZW5XaWxsRXhwaXJlXSDkuYvlkI7vvIzlj6/kvb/nlKjmraQgQVBJIOabtOaWsCB0b2tlbiDpibTmnYPkv6Hmga/vvIzkv53pmpzlkI7nu60gUlRDIOWKn+iDveato+W4uOOAglxuICAgICAqIOS4muWKoeWcuuaZr++8mlRva2VuIOWwhuimgei/h+acn+aXtuS9v+eUqOOAglxuICAgICAqIOiwg+eUqOaXtuacuu+8muaUtuWIsCBbb25Sb29tVG9rZW5XaWxsRXhwaXJlXSDkuYvlkI7jgIJcbiAgICAgKiDkvb/nlKjpmZDliLbvvJrml6DjgIJcbiAgICAgKiDms6jmhI/kuovpobnvvJp0b2tlbiDkuK3ljIXlkKvnlKjmiLfnmoTmiL/pl7TmnYPpmZDjgIHmjqjmtYHmnYPpmZDjgIHmnInmlYjml7bpl7TnrYnph43opoHkv6Hmga/vvIzor6bmg4Xor7flj4LogIMgaHR0cHM6Ly9kb2MtemguemVnby5pbS9hcnRpY2xlLzEwMzYwXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcm9vbUlEIOaIv+mXtCBJROOAglxuICAgICAqIEBwYXJhbSB0b2tlbiDpnIDopoHmm7TmlrDnmoQgdG9rZW7jgIJcbiAgICAgKi9cbiAgICByZW5ld1Rva2VuKHJvb21JRCwgdG9rZW4pIHtcbiAgICAgICAgcmV0dXJuIFplZ29FeHByZXNzRW5naW5lSW1wbC5nZXRJbnN0YW5jZSgpLnJlbmV3VG9rZW4ocm9vbUlELCB0b2tlbik7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIOiuvue9ruaIv+mXtOmZhOWKoOa2iOaBr+OAglxuICAgICAqXG4gICAgICog5pSv5oyB54mI5pys77yaMS4xMy4wIOWPiuS7peS4iuOAglxuICAgICAqIOivpuaDheaPj+i/sO+8mueUqOaIt+iwg+eUqOatpOWHveaVsOiuvue9ruaIv+mXtOeahOmZhOWKoOa2iOaBr+OAglxuICAgICAqIOS4muWKoeWcuuaZr++8muWPr+S7peiuvue9ruS4gOS6m+aIv+mXtOebuOWFs+eahOS4muWKoeWxnuaAp++8jOavlOWmguaYr+WQpuacieS6uuWcqOS4ium6puOAglxuICAgICAqIOiwg+eUqOaXtuacuu+8mueZu+W9leaIv+mXtOaIkOWKn+WQjuOAglxuICAgICAqIOS9v+eUqOmZkOWItu+8muWFs+S6juatpOWHveaVsOeahOS9v+eUqOmZkOWItu+8jOivt+WPguiAgyBodHRwczovL2RvYy16aC56ZWdvLmltL2FydGljbGUvNzU4MSDmiJbogZTns7sgWkVHTyDmioDmnK/mlK/mjIHjgIJcbiAgICAgKiDms6jmhI/kuovpobnvvJprZXkg6Z2e56m677yMa2V544CBdmFsdWUg6ZW/5bqm5pyJ6ZmQ5Yi277yM6K+35Y+C6ICD4oCc5L2/55So6ZmQ5Yi24oCd44CC5paw6K6+572u55qEIGtleSDlkowgdmFsdWUg5Lya6KaG55uW5pen55qE6K6+572u44CCXG4gICAgICog55u45YWz5Zue6LCD77ya55u45ZCM5oi/6Ze05YaF55qE5YW25LuW55So5oi35Lya6YCa6L+HIFtvblJvb21FeHRyYUluZm9VcGRhdGVdIOWbnuiwg+WHveaVsOiOt+W+l+mAmuefpeOAglxuICAgICAqIOebuOWFs+aOpeWPo++8muaXoOOAglxuICAgICAqXG4gICAgICogQHBhcmFtIHJvb21JRCDmiL/pl7QgSUTjgIJcbiAgICAgKiBAcGFyYW0ga2V5IOmZhOWKoOa2iOaBr+mUruOAglxuICAgICAqIEBwYXJhbSB2YWx1ZSDpmYTliqDmtojmga/lgLzjgIJcbiAgICAgKiBAcmV0dXJuIOiuvue9ruaIv+mXtOmZhOWKoOS/oeaBr+aJp+ihjOe7k+aenOmAmuefpVxuICAgICAqL1xuICAgIHNldFJvb21FeHRyYUluZm8ocm9vbUlELCBrZXksIHZhbHVlKSB7XG4gICAgICAgIHJldHVybiBaZWdvRXhwcmVzc0VuZ2luZUltcGwuZ2V0SW5zdGFuY2UoKS5zZXRSb29tRXh0cmFJbmZvKHJvb21JRCwga2V5LCB2YWx1ZSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIOW8gOWni+aOqOa1ge+8jOaUr+aMgeWkmuaIv+mXtOaooeW8j1xuICAgICAqXG4gICAgICog5pSv5oyB54mI5pys77yaMS4xLjAg5Y+K5Lul5LiK44CCXG4gICAgICog6K+m5oOF5o+P6L+w77ya55So5oi35bCG6Ieq5bex5pys5Zyw55qE6Z+z6KeG6aKR5rWB5o6o6YCB5YiwIFpFR08gUlRDIOacjeWKoeWZqCDmiJYgQ0RO77yM5ZCM5LiA5oi/6Ze055qE5YW25LuW55So5oi36YCa6L+HIFwic3RyZWFtSURcIiDmiJYgQ0ROIOaLiea1geWcsOWdgOWwseWPr+S7peaLieWPluivpemfs+inhumikea1gei/m+ihjOingueci+OAglxuICAgICAqIOS4muWKoeWcuuaZr++8muWPr+S7peeUqOS6juWunuaXtui/num6puOAgeebtOaSreetieWcuuaZr+S4i+i/m+ihjOaOqOa1geOAglxuICAgICAqIOiwg+eUqOaXtuacuu+8muiwg+eUqCBbbG9naW5Sb29tXSDliqDlhaXmiL/pl7TlkI7osIPnlKjor6Xlh73mlbDjgIJcbiAgICAgKiDkvb/nlKjpmZDliLbvvJrml6DjgIJcbiAgICAgKiDms6jmhI/kuovpobnvvJpcbiAgICAgKiAgIDEuIOW8gOWni+aOqOa1geWJje+8jOeUqOaIt+WPr+mAieaLqeiwg+eUqCBbc2V0VmlkZW9Db25maWddIOiuvue9ruebuOWFs+inhumikeWPguaVsO+8jOiwg+eUqCBbc3RhcnRQcmV2aWV3XSDov5vooYzop4bpopHpooTop4jjgIJcbiAgICAgKiAgIDIuIOW9k+aOqOa1geaIkOWKn+S5i+WQju+8jOWQjOaIv+mXtOWGheWFtuS7lueUqOaIt+WPr+mAmui/h+ebkeWQrCBbb25Sb29tU3RyZWFtVXBkYXRlXSDlm57osIPmnaXojrflj5bmtYHnmoTmlrDlop7mg4XlhrXjgIJcbiAgICAgKiAgIDMuIOWcqOe9kee7nOi0qOmHj+S4jeS9s+eahOaDheWGteS4i++8jOeUqOaIt+aOqOa1geWPr+iDveWHuueOsOS4reaWre+8jFNESyDkvJrlsJ3or5Xph43ov57lubbmjqjmtYHvvIjov57mjqXmiJDlip/lkI4gU0RLIOS8muiHquWKqOi/m+ihjOaOqOa1ge+8ie+8jOW8gOWPkeiAheWPr+mAmui/h+ebkeWQrCBbb25QdWJsaXNoZXJTdGF0ZVVwZGF0ZV0g5LqL5Lu25p2l6I6355+l5b2T5YmN5o6o5rWB54q25oCB5Lul5Y+K6ZSZ6K+v5L+h5oGv44CC6K+m5oOF6K+35Y+C6ICDIGh0dHBzOi8vZG9jLXpoLnplZ28uaW0vZmFxL3JlY29ubmVjdFxuICAgICAqICAgNC4g6LCD55SoIFtTZXRSb29tTW9kZV0g5Ye95pWw6YCJ5oup5aSa5oi/6Ze077yM5b+F6aG75piO56Gu5oyH5a6a5oi/6Ze0IElE44CCXG4gICAgICpcbiAgICAgKiBAcGFyYW0gc3RyZWFtSUQg5rWBIElE77yM6ZW/5bqm5LiN6LaF6L+HIDI1NiDnmoTlrZfnrKbkuLLjgIJcbiAgICAgKiAgIOazqOaEj+S6i+mhue+8mlxuICAgICAqICAgMS4g5rWBIElEIOeUseaCqOiHquW3seWumuS5ieOAglxuICAgICAqICAgMi4g6ZyA6KaB5Zyo5pW05LiqIEFwcElEIOWGheWFqOWxgOWUr+S4gO+8jOiLpeWHuueOsOWcqOWQjOS4gOS4qiBBcHBJRCDlhoXvvIzkuI3lkIznmoTnlKjmiLflkITmjqjkuobkuIDmnaHmtYHkuJTmtYHlkI3nm7jlkIzvvIzlsIbkvJrlr7zoh7TlkI7mjqjmtYHnmoTnlKjmiLfmjqjmtYHlpLHotKXjgIJcbiAgICAgKiAgIDMuIOS7heaUr+aMgeaVsOWtl++8jOiLseaWh+Wtl+espiDlkowgJy0nLCAnXyfjgIJcbiAgICAgKiBAcGFyYW0gY2hhbm5lbCDmjqjmtYHpgJrpgZPjgIJcbiAgICAgKiBAcGFyYW0gY29uZmlnIOaOqOa1gei/m+mYtumFjee9ruOAglxuICAgICAqL1xuICAgIHN0YXJ0UHVibGlzaGluZ1N0cmVhbShzdHJlYW1JRCwgY2hhbm5lbCwgY29uZmlnKSB7XG4gICAgICAgIHJldHVybiBaZWdvRXhwcmVzc0VuZ2luZUltcGwuZ2V0SW5zdGFuY2UoKS5zdGFydFB1Ymxpc2hpbmdTdHJlYW0oc3RyZWFtSUQsIGNoYW5uZWwsIGNvbmZpZyk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIOWBnOatouaOqOa1ge+8jOWPr+WBnOatouaMh+WumumAmumBk+eahOmfs+inhumikea1geOAglxuICAgICAqXG4gICAgICog5pSv5oyB54mI5pys77yaMS4xLjAg5Y+K5Lul5LiK44CCXG4gICAgICog6K+m5oOF5o+P6L+w77ya55So5oi35YGc5q2i5Y+R6YCB5pys5Zyw55qE6Z+z6KeG6aKR5rWB77yM5oi/6Ze05YaF5YW25LuW55So5oi35Lya5pS25Yiw5rWB5Yig6Zmk6YCa55+l44CCXG4gICAgICog5Lia5Yqh5Zy65pmv77ya5Y+v5Lul55So5LqO5a6e5pe26L+e6bqm44CB55u05pKt562J5Zy65pmv5LiL5YGc5q2i5o6o5rWB44CCXG4gICAgICog6LCD55So5pe25py677ya6LCD55SoIFtzdGFydFB1Ymxpc2hpbmdTdHJlYW1dIOW8gOWni+aOqOa1geWQjuOAglxuICAgICAqIOS9v+eUqOmZkOWItu+8muaXoOOAglxuICAgICAqIOazqOaEj+S6i+mhue+8mlxuICAgICAqICAgMS4g5Zyo5YGc5q2i5o6o5rWB5LmL5ZCO77yM5ZCM5oi/6Ze05YaF5YW25LuW55So5oi35Y+v6YCa6L+H55uR5ZCsIFtvblJvb21TdHJlYW1VcGRhdGVdIOWbnuiwg+adpeaUtuWIsOa1geeahOWIoOmZpOmAmuefpeOAglxuICAgICAqICAgMi4g5aaC5p6c55So5oi35bey57uP5ZCv5Yqo5o6o5rWB77yM5Zyo5o6o6YCB5paw5rWB77yI5LiO5LmL5YmN55qEIHN0cmVhbUlEIOS4jeWQjO+8ieS5i+WJje+8jOW/hemhu+imgeiwg+eUqOatpOWHveaVsOWBnOatouW9k+WJjea1geeahOaOqOmAge+8jOWQpuWImeaWsOa1geaOqOmAgeS8mui/lOWbnuWksei0peOAglxuICAgICAqICAgMy4g5Zyo5YGc5q2i5o6o5rWB5LmL5ZCO77yM5byA5Y+R6ICF5bqU6K+l5qC55o2u5Lia5Yqh5oOF5Ya15p2l5Yaz5a6a5piv5ZCm6ZyA6KaB5YGc5q2i5pys5Zyw6aKE6KeI44CCXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY2hhbm5lbCDmjqjmtYHpgJrpgZPjgIJcbiAgICAgKi9cbiAgICBzdG9wUHVibGlzaGluZ1N0cmVhbShjaGFubmVsKSB7XG4gICAgICAgIHJldHVybiBaZWdvRXhwcmVzc0VuZ2luZUltcGwuZ2V0SW5zdGFuY2UoKS5zdG9wUHVibGlzaGluZ1N0cmVhbShjaGFubmVsKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICog6K6+572u5oyH5a6a5o6o5rWB6YCa6YGT55qE5rWB6ZmE5Yqg5L+h5oGv44CCXG4gICAgICpcbiAgICAgKiDmlK/mjIHniYjmnKzvvJoxLjEuMCDlj4rku6XkuIrjgIJcbiAgICAgKiDor6bmg4Xmj4/ov7DvvJrlj6/pgJrov4fmraTlh73mlbDorr7nva7lvZPliY3mjqjmtYHnmoTmtYHpmYTliqDkv6Hmga/jgILmtYHpmYTliqDkv6Hmga/mmK/mtYEgSUQg55qE6ZmE5Yqg5L+h5oGv5qCH6K+G77yM5LiN5ZCM5LqO5rWBIElEIOWcqOaOqOa1gei/h+eoi+S4reS4jeWPr+S/ruaUue+8jOa1gemZhOWKoOS/oeaBr+WPr+S7peWcqOWvueW6lOa1gSBJRCDnmoTmjqjmtYHkuK3pgJTkv67mlLnjgILlvIDlj5HogIXlj6/moLnmja7mtYHpmYTliqDkv6Hmga/mnaXlrp7njrDmtYEgSUQg55u45YWz55qE5Y+v5Y+Y5YaF5a6555qE5ZCM5q2l44CCXG4gICAgICog6LCD55So5pe25py677ya5Zyo5Yib5bu65byV5pOOIFtjcmVhdGVFbmdpbmVdIOS5i+WQju+8jOWcqOaOqOa1gSBbc3RhcnRQdWJsaXNoaW5nU3RyZWFtXSDliY3lkI7osIPnlKjpg73lj6/nlJ/mlYjjgIJcbiAgICAgKiDkvb/nlKjpmZDliLbvvJrml6DjgIJcbiAgICAgKiDnm7jlhbPlm57osIPvvJrnu5PmnpzkvJrpgJrov4cgW1plZ29QdWJsaXNoZXJTZXRTdHJlYW1FeHRyYUluZm9DYWxsYmFja10g5Zue6LCD6YCa55+l44CCXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZXh0cmFJbmZvIOa1gemZhOWKoOS/oeaBr++8jOmVv+W6puS4jei2hei/hzEwMjTnmoTlrZfnrKbkuLLjgIJcbiAgICAgKiBAcGFyYW0gY2hhbm5lbCDmjqjmtYHpgJrpgZPjgIJcbiAgICAgKiBAcmV0dXJuIOiuvue9rua1gemZhOWKoOS/oeaBr+aJp+ihjOe7k+aenOmAmuefpeOAglxuICAgICAqL1xuICAgIHNldFN0cmVhbUV4dHJhSW5mbyhleHRyYUluZm8sIGNoYW5uZWwpIHtcbiAgICAgICAgcmV0dXJuIFplZ29FeHByZXNzRW5naW5lSW1wbC5nZXRJbnN0YW5jZSgpLnNldFN0cmVhbUV4dHJhSW5mbyhleHRyYUluZm8sIGNoYW5uZWwpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiDlkK/liqgv5pu05paw5pys5Zyw6aKE6KeI77yM5pSv5oyB6K6+572u5YW25LuW6YCa6YGT55qE5o6o5rWB44CCXG4gICAgICpcbiAgICAgKiDmlK/mjIHniYjmnKzvvJoxLjEuMCDlj4rku6XkuIrjgIJcbiAgICAgKiDor6bmg4Xmj4/ov7DvvJrnlKjmiLfpgJrov4fosIPnlKjmraTlh73mlbDlj6/ku6XnnIvliLDoh6rlt7HmnKzlnLDnmoTnlLvpnaLjgIJcbiAgICAgKiDkuJrliqHlnLrmma/vvJrlj6/ku6XnlKjkuo7lrp7ml7bov57puqbjgIHnm7Tmkq3nrYnlnLrmma/kuIvnmoTmnKzlnLDpooTop4jjgIJcbiAgICAgKiDosIPnlKjml7bmnLrvvJrosIPnlKggW2NyZWF0ZUVuZ2luZV0g5ZCO44CCXG4gICAgICog5L2/55So6ZmQ5Yi277ya5peg44CCXG4gICAgICog5rOo5oSP5LqL6aG577yaMS4g6aKE6KeI5Yqf6IO95LiN6ZyA6KaB5YWI55m75b2V5oi/6Ze05oiW5o6o5rWB77yM5L2G5piv5Zyo6YCA5Ye65oi/6Ze05LmL5ZCOIFNESyDlhoXpg6jpu5jorqTkvJrkuLvliqjlgZzmraLpooTop4jjgIIyLiDlj6/ku6XpgJrov4flho3mrKHosIPnlKjmraTlh73mlbDmnaXliIfmjaLop4blm77miJbkv67mlLnpooTop4jmqKHlvI8oWmVnb1ZpZXdNb2RlKeOAgueUqOaIt+WPquiDveWcqOS4gOS4quinhuWbvuS4iumihOiniO+8jOWmguaenOWGjeasoeiwg+eUqCBbc3RhcnRQcmV2aWV3XSDkvKDlhaXmlrDnmoTop4blm77vvIzliJnpooTop4jnlLvpnaLlj6rkvJrlnKjmlrDop4blm77lsZXnjrDjgIIzLiDlj6/ku6XpgJrov4fosIPnlKggW3NldFZpZGVvTWlycm9yTW9kZV0g5Ye95pWw5p2l6K6+572u6aKE6KeI55S76Z2i55qE6ZWc5YOP5qih5byP77yM56e75Yqo56uv6buY6K6k5byA5ZCv6aKE6KeI55S76Z2i55qE6ZWc5YOP5pWI5p6c44CCNC4g6LCD55So5q2k5Ye95pWw5ZCO77yMU0RLIOS8muWQr+WKqOmfs+inhumikeW8leaTju+8jOW5tuWwneivlemHh+mbhumfs+mikeS4juinhumikeOAglxuICAgICAqIOazqOaEj++8muatpOWHveaVsOS7heWcqCBaZWdvRXhwcmVzc1ZpZGVvIFNESyDkuK3mnInmlYjvvIFcbiAgICAgKlxuICAgICAqIEBwYXJhbSBjaGFubmVsIOaOqOa1gemAmumBk1xuICAgICAqL1xuICAgIHN0YXJ0UHJldmlldyhjaGFubmVsKSB7XG4gICAgICAgIHJldHVybiBaZWdvRXhwcmVzc0VuZ2luZUltcGwuZ2V0SW5zdGFuY2UoKS5zdGFydFByZXZpZXcoY2hhbm5lbCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIOWBnOatouacrOWcsOmihOiniO+8jOaUr+aMgeiuvue9ruWFtuS7lumAmumBk+eahOaOqOa1gVxuICAgICAqXG4gICAgICog5pSv5oyB54mI5pys77yaMS4xLjAg5Y+K5Lul5LiK44CCXG4gICAgICog6K+m5oOF5o+P6L+w77ya5b2T5pys5Zyw5LiN6ZyA6KaB6aKE6KeI5pe25Y+v6LCD55So5q2k5Ye95pWw5YGc5q2i6aKE6KeI44CCXG4gICAgICog5rOo5oSP5LqL6aG577ya5YGc5q2i6aKE6KeI5LiN5Lya5b2x5ZON5o6o5rWB44CB5ouJ5rWB5Yqf6IO944CCXG4gICAgICog5rOo5oSP77ya5q2k5Ye95pWw5LuF5ZyoIFplZ29FeHByZXNzVmlkZW8gU0RLIOS4reacieaViO+8gVxuICAgICAqXG4gICAgICogQHBhcmFtIGNoYW5uZWwg5o6o5rWB6YCa6YGTXG4gICAgICovXG4gICAgc3RvcFByZXZpZXcoY2hhbm5lbCkge1xuICAgICAgICByZXR1cm4gWmVnb0V4cHJlc3NFbmdpbmVJbXBsLmdldEluc3RhbmNlKCkuc3RvcFByZXZpZXcoY2hhbm5lbCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIOiuvue9ruinhumikemFjee9ru+8jOaUr+aMgeiuvue9ruWFtuS7lumAmumBk+eahOaOqOa1geOAglxuICAgICAqXG4gICAgICog5pSv5oyB54mI5pys77yaMS4xLjAg5Y+K5Lul5LiK44CCXG4gICAgICog6K+m5oOF5o+P6L+w77ya6K6+572u6KeG6aKR5bin546H44CB56CB546H44CB6KeG6aKR6YeH6ZuG5YiG6L6o546H44CB6KeG6aKR57yW56CB6L6T5Ye65YiG6L6o546H562J6KeG6aKR6YWN572u44CCXG4gICAgICog5Lia5Yqh5Zy65pmv77ya5LiN5ZCM5Lia5Yqh5Zy65pmv5LiL55qE5bu66K6u6YWN572uIGh0dHBzOi8vZG9jLXpoLnplZ28uaW0vYXJ0aWNsZS8xMDM2NVxuICAgICAqIOm7mOiupOWAvO+8mum7mOiupOinhumikemHh+mbhuWIhui+qOeOh+S4uiAzNjBw77yM6KeG6aKR57yW56CB6L6T5Ye65YiG6L6o546H5Li6IDM2MHDvvIznoIHnjofkuLogNjAwIGticHPvvIzluKfnjofkuLogMTUgZnBz44CCXG4gICAgICog6LCD55So5pe25py677ya6LCD55SoIFtjcmVhdGVFbmdpbmVdIOS5i+WQjuOAglxuICAgICAqIOS9v+eUqOmZkOWItu+8mumcgOimgeWcqCBbc3RhcnRQcmV2aWV3XSDliY3osIPnlKjjgILlnKggW3N0YXJ0UHJldmlld10g5LmL5ZCO6LCD55So5peg5rOV5L+u5pS56YeH6ZuG5YiG6L6o546H77yM5LuF5pSv5oyB5L+u5pS557yW56CB5YiG6L6o546H5ZKM56CB546H44CCXG4gICAgICog5rOo5oSP5LqL6aG577ya56e75Yqo56uv5YiG6L6o546H55qE5a696auY5LiOIFBDIOerr+WIhui+qOeOh+eahOWuvemrmOaYr+ebuOWPjeeahO+8jOS+i++8muenu+WKqOerr+eahCAzNjBwIOeahOWIhui+qOeOh+S4uiAzNjB4NjQw77yM6ICMIFBDIOerryAzNjBwIOeahOWIhui+qOeOh+S4uiA2NDB4MzYw44CCXG4gICAgICog5rOo5oSP77ya5q2k5Ye95pWw5LuF5ZyoIFplZ29FeHByZXNzVmlkZW8gU0RLIOS4reacieaViO+8gVxuICAgICAqXG4gICAgICogQHBhcmFtIGNvbmZpZyDop4bpopHphY3nva7vvIxTREsg5o+Q5L6b5bi455So55qE5YiG6L6o546H44CB5bin546H5ZKM56CB546H55qE57uE5ZCI5YC877yM5Lmf5Y+v6Ieq5a6a5LmJ5YiG6L6o546H44CB5bin546H5ZKM56CB546H44CCXG4gICAgICogQHBhcmFtIGNoYW5uZWwg5o6o5rWB6YCa6YGT44CCXG4gICAgICovXG4gICAgc2V0VmlkZW9Db25maWcoY29uZmlnLCBjaGFubmVsKSB7XG4gICAgICAgIHJldHVybiBaZWdvRXhwcmVzc0VuZ2luZUltcGwuZ2V0SW5zdGFuY2UoKS5zZXRWaWRlb0NvbmZpZyhjb25maWcsIGNoYW5uZWwpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiDojrflj5blvZPliY3op4bpopHphY3nva7vvIzmlK/mjIHorr7nva7lhbbku5bpgJrpgZPnmoTmjqjmtYFcbiAgICAgKlxuICAgICAqIOWPr+mAmui/h+atpOWHveaVsOiOt+WPluaMh+WumuaOqOa1gemAmumBk+W9k+WJjeeahOinhumikeW4p+eOh+OAgeeggeeOh++8jOinhumikemHh+mbhuWIhui+qOeOh++8jOinhumikee8lueggei+k+WHuuWIhui+qOeOh+OAglxuICAgICAqIOazqOaEj++8muatpOWHveaVsOS7heWcqCBaZWdvRXhwcmVzc1ZpZGVvIFNESyDkuK3mnInmlYjvvIFcbiAgICAgKlxuICAgICAqIEBwYXJhbSBjaGFubmVsIOaOqOa1gemAmumBk1xuICAgICAqIEByZXR1cm4g6KeG6aKR6YWN572u5a+56LGhXG4gICAgICovXG4gICAgZ2V0VmlkZW9Db25maWcoY2hhbm5lbCkge1xuICAgICAgICByZXR1cm4gWmVnb0V4cHJlc3NFbmdpbmVJbXBsLmdldEluc3RhbmNlKCkuZ2V0VmlkZW9Db25maWcoY2hhbm5lbCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIOiuvue9rumVnOWDj+aooeW8j++8jOaUr+aMgeiuvue9ruWFtuS7lumAmumBk+eahOaOqOa1geOAglxuICAgICAqXG4gICAgICog5pSv5oyB54mI5pys77yaMS4xLjAg5Y+K5Lul5LiK44CCXG4gICAgICog6K+m5oOF5o+P6L+w77ya6K6+572u5pys5Zyw6aKE6KeI6KeG6aKR5Lul5Y+K5o6o6YCB55qE6KeG6aKR5piv5ZCm5byA5ZCv6ZWc5YOP5qih5byP77yM5YW35L2T6ZWc5YOP5qih5byP5Y+v5Lul5Y+C6ICDIGh0dHBzOi8vZG9jLXpoLnplZ28uaW0vYXJ0aWNsZS8xMDM2NVxuICAgICAqIOiwg+eUqOaXtuacuu+8muiwg+eUqCBbY3JlYXRlRW5naW5lXSDkuYvlkI7jgIJcbiAgICAgKiDkvb/nlKjpmZDliLbvvJrlj6rmnIkgU0RLIOi0n+i0o+a4suafk+aXtuivpeiuvue9ruaJjeacieaViOOAglxuICAgICAqIOazqOaEj++8muatpOWHveaVsOS7heWcqCBaZWdvRXhwcmVzc1ZpZGVvIFNESyDkuK3mnInmlYjvvIFcbiAgICAgKlxuICAgICAqIEBwYXJhbSBtaXJyb3JNb2RlIOmihOiniOaIluaOqOa1geeahOmVnOWDj+aooeW8j+OAglxuICAgICAqIEBwYXJhbSBjaGFubmVsIOaOqOa1gemAmumBk+OAglxuICAgICAqL1xuICAgIHNldFZpZGVvTWlycm9yTW9kZShtaXJyb3JNb2RlLCBjaGFubmVsKSB7XG4gICAgICAgIHJldHVybiBaZWdvRXhwcmVzc0VuZ2luZUltcGwuZ2V0SW5zdGFuY2UoKS5zZXRWaWRlb01pcnJvck1vZGUobWlycm9yTW9kZSwgY2hhbm5lbCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIOiuvue9rumHh+mbhuinhumikeeahOacneWQke+8jOaUr+aMgeiuvue9ruWFtuS7lumAmumBk+eahOaOqOa1geOAglxuICAgICAqXG4gICAgICog5pSv5oyB54mI5pys77yaMS4xLjAg5Y+K5Lul5LiK44CCXG4gICAgICog6K+m5oOF5o+P6L+w77ya6K6+572u6KeG6aKR55qE5pyd5ZCR77yM6K+m57uG55qE5LuL57uN5Y+v5Y+C6ICD5paH5qGjIGh0dHBzOi8vZG9jLXpoLnplZ28uaW0vZmFxL2V4cHJlc3NfdmlkZW9fY2FwdHVyZV9yb3RhdGlvblxuICAgICAqIOS4muWKoeWcuuaZr++8mueUqOaIt+S9v+eUqOenu+WKqOiuvuWkh+i/m+ihjOebtOaSreaIluinhumikemAmuivneaXtu+8jOWPr+S7peagueaNrueOsOWcuuiuvue9ruS4jeWQjOeahOinhumikeaWueWQkeOAglxuICAgICAqIOiwg+eUqOaXtuacuu+8muiwg+eUqCBbY3JlYXRlRW5naW5lXSDkuYvlkI7jgIJcbiAgICAgKiDkvb/nlKjpmZDliLbvvJrnm67liY3lj6rmlK/mjIEgaU9TIOWSjCBBbmRyb2lkIOW5s+WPsOOAglxuICAgICAqIOazqOaEj++8muatpOWHveaVsOS7heWcqCBaZWdvRXhwcmVzc1ZpZGVvIFNESyDkuK3mnInmlYjvvIFcbiAgICAgKlxuICAgICAqIEBwYXJhbSBvcmllbnRhdGlvbiDop4bpopHnmoTmnJ3lkJHjgIJcbiAgICAgKiBAcGFyYW0gY2hhbm5lbCDmjqjmtYHpgJrpgZPjgIJcbiAgICAgKi9cbiAgICBzZXRBcHBPcmllbnRhdGlvbihvcmllbnRhdGlvbiwgY2hhbm5lbCkge1xuICAgICAgICByZXR1cm4gWmVnb0V4cHJlc3NFbmdpbmVJbXBsLmdldEluc3RhbmNlKCkuc2V0QXBwT3JpZW50YXRpb24ob3JpZW50YXRpb24sIGNoYW5uZWwpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiDorr7nva7mjIflrprmjqjmtYHpgJrpgZPnmoTpn7PpopHotKjph4/phY3nva7jgIJcbiAgICAgKlxuICAgICAqIOaUr+aMgeeJiOacrO+8mjEuMy40IOWPiuS7peS4iuOAglxuICAgICAqIOivpuaDheaPj+i/sO+8muWPr+mAmui/h+atpOWHveaVsOiuvue9rumfs+mikee8lueggeexu+Wei+OAgeeggeeOh+OAgemfs+mikeWjsOmBk+eahOe7hOWQiOWAvOOAguiLpemihOiuvueahOWAvOaXoOazlea7oei2s+W8gOWPkeiAheeahOWcuuaZr++8jOW8gOWPkeiAheWPr+iHquihjOagueaNruS4muWKoeimgeaxguiuvue9ruespuWQiOeahOWPguaVsOOAglxuICAgICAqIOm7mOiupOWAvO+8mum7mOiupOeahOmfs+mikemFjee9ruWPguiAgyBbWmVnb0F1ZGlvQ29uZmlnXSDnmoTpu5jorqTlgLzjgIJcbiAgICAgKiDosIPnlKjml7bmnLrvvJrlnKjliJvlu7rlvJXmk44gW2NyZWF0ZUVuZ2luZV0g5ZCO77yM5LiU5Zyo5o6o5rWBIFtzdGFydFB1Ymxpc2hpbmdTdHJlYW1dIOWJjeiuvue9ruOAglxuICAgICAqIOS9v+eUqOmZkOWItu+8muaXoOOAglxuICAgICAqIOebuOWFs+aOpeWPo++8mltnZXRBdWRpb0NvbmZpZ13jgIJcbiAgICAgKlxuICAgICAqIEBwYXJhbSBjb25maWcg6Z+z6aKR6LSo6YeP6YWN572u44CCXG4gICAgICogQHBhcmFtIGNoYW5uZWwg5o6o5rWB6YCa6YGT44CCXG4gICAgICovXG4gICAgc2V0QXVkaW9Db25maWcoY29uZmlnLCBjaGFubmVsKSB7XG4gICAgICAgIHJldHVybiBaZWdvRXhwcmVzc0VuZ2luZUltcGwuZ2V0SW5zdGFuY2UoKS5zZXRBdWRpb0NvbmZpZyhjb25maWcsIGNoYW5uZWwpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiDojrflj5bmjIflrprmjqjmtYHpgJrpgZPnmoTlvZPliY3pn7PpopHotKjph4/phY3nva7jgIJcbiAgICAgKlxuICAgICAqIOaUr+aMgeeJiOacrO+8mjEuOC4wIOWPiuS7peS4iuOAglxuICAgICAqIOivpuaDheaPj+i/sO+8muWPr+mAmui/h+atpOWHveaVsOiOt+WPluW9k+WJjeeahOmfs+mikee8lueggeexu+Wei+OAgeeggeeOh+OAgemfs+mikeWjsOmBk+eahOe7hOWQiOWAvOOAglxuICAgICAqIOiwg+eUqOaXtuacuu+8muWcqOWIm+W7uuW8leaTjiBbY3JlYXRlRW5naW5lXSDlkI7jgIJcbiAgICAgKiDkvb/nlKjpmZDliLbvvJrml6DjgIJcbiAgICAgKiDnm7jlhbPmjqXlj6PvvJpbc2V0QXVkaW9Db25maWdd44CCXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY2hhbm5lbCDmjqjmtYHpgJrpgZPjgIJcbiAgICAgKiBAcmV0dXJuIOmfs+mikei0qOmHj+mFjee9ruOAglxuICAgICAqL1xuICAgIGdldEF1ZGlvQ29uZmlnKGNoYW5uZWwpIHtcbiAgICAgICAgcmV0dXJuIFplZ29FeHByZXNzRW5naW5lSW1wbC5nZXRJbnN0YW5jZSgpLmdldEF1ZGlvQ29uZmlnKGNoYW5uZWwpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiDlr7nmjIflrprmjqjmtYHpgJrpgZPnmoTmjqjmtYHnlLvpnaLmiKrlm77jgIJcbiAgICAgKlxuICAgICAqIOaUr+aMgeeJiOacrO+8mjEuMTcuMCDlj4rku6XkuIrjgIJcbiAgICAgKiDor6bmg4Xmj4/ov7DvvJrlr7nmjqjmtYHnlLvpnaLov5vooYzmiKrlm77jgIJcbiAgICAgKiDosIPnlKjml7bmnLrvvJrlnKjosIPnlKggW3N0YXJ0UHVibGlzaGluZ1N0cmVhbV0g5oiWIFtzdGFydFByZXZpZXddIOWQjuiwg+eUqOatpOWHveaVsOOAglxuICAgICAqIOS9v+eUqOmZkOWItu+8muaXoOOAglxuICAgICAqIOazqOaEj+S6i+mhue+8muaIquWbvueahOWIhui+qOeOh+S4uiBbc2V0VmlkZW9Db25maWddIOmHjOiuvue9rueahOe8lueggeWIhui+qOeOh++8jOiLpemcgOaUueS4uumHh+mbhuWIhui+qOeOh++8jOivt+iwg+eUqCBbc2V0Q2FwdHVyZVBpcGVsaW5lU2NhbGVNb2RlXSDlsIbph4fpm4bnvKnmlL7ml7bmnLrmqKHlvI/mlLnkuLogW1Bvc3Rd44CCXG4gICAgICog55u45YWz5Zue6LCD77ya5oiq5Zu+57uT5p6c5Lya6YCa6L+HIFtaZWdvUHVibGlzaGVyVGFrZVNuYXBzaG90Q2FsbGJhY2tdIOWbnuiwg+OAglxuICAgICAqIOebuOWFs+aOpeWPo++8mlt0YWtlUGxheVN0cmVhbVNuYXBzaG90XeOAglxuICAgICAqIOazqOaEj++8muatpOWHveaVsOS7heWcqCBaZWdvRXhwcmVzc1ZpZGVvIFNESyDkuK3mnInmlYjvvIFcbiAgICAgKlxuICAgICAqIEBwYXJhbSBjaGFubmVsIOaOqOa1gemAmumBk+OAglxuICAgICAqIEByZXR1cm4g5o6o5rWB55S76Z2i5oiq5Zu+57uT5p6c5Zue6LCD44CCXG4gICAgICovXG4gICAgdGFrZVB1Ymxpc2hTdHJlYW1TbmFwc2hvdChjaGFubmVsKSB7XG4gICAgICAgIHJldHVybiBaZWdvRXhwcmVzc0VuZ2luZUltcGwuZ2V0SW5zdGFuY2UoKS50YWtlUHVibGlzaFN0cmVhbVNuYXBzaG90KGNoYW5uZWwpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiDlgZzmraLmiJbmgaLlpI3lj5HpgIHmjIflrprmjqjmtYHpgJrpgZPnmoTpn7PpopHmtYHjgIJcbiAgICAgKlxuICAgICAqIOaUr+aMgeeJiOacrO+8mjEuMS4wIOWPiuS7peS4iuOAglxuICAgICAqIOivpuaDheaPj+i/sO+8muaOqOa1geaXtuWPr+iwg+eUqOatpOWHveaVsOWunueOsOS4jeaOqOmfs+mikeaVsOaNrua1ge+8jOacrOWcsOS7jeS8mumHh+mbhuWSjOWkhOeQhumfs+mike+8jOS9huWQkee9kee7nOWPkemAgemdmemfs+W4p+aVsOaNruWMheOAglxuICAgICAqIOS4muWKoeWcuuaZr++8mueUqOaIt+S4jeW4jOacm+aOqOWHuuS7u+S9lemfs+mikeaVsOaNruaXtu+8jOWPr+S7peiwg+eUqOivpeaOpeWPo+OAguivpeaOpeWPo+S4jeW9seWTjSBbb25CZWZvcmVBdWRpb1ByZXBBdWRpb0RhdGFd44CCXG4gICAgICog6LCD55So5pe25py677ya5Zyo5Yib5bu65byV5pOOIFtjcmVhdGVFbmdpbmVdIOWQjuiwg+eUqOeUn+aViOOAglxuICAgICAqIOS9v+eUqOmZkOWItu+8muaXoOOAglxuICAgICAqIOebuOWFs+Wbnuiwg++8muWmguaenOWcqOacrOWcsOiuvue9ruS6huWBnOatouWPkemAgemfs+mikea1ge+8jOaLieacrOWcsOa1geeahOi/nOerr+eUqOaIt+WPr+S7pemAmui/h+ebkeWQrCBbb25SZW1vdGVNaWNTdGF0ZVVwZGF0ZV0g5Zue6LCD5pS25YiwIGBNdXRlYCDnmoTnirbmgIHlj5jmm7TpgJrnn6XjgIJcbiAgICAgKiDnm7jlhbPmjqXlj6PvvJpbbXV0ZVB1Ymxpc2hTdHJlYW1WaWRlb13jgIJcbiAgICAgKlxuICAgICAqIEBwYXJhbSBtdXRlIOaYr+WQpuWBnOatouWPkemAgemfs+mikea1ge+8m3RydWUg6KGo56S65LiN5Y+R6YCB6Z+z6aKR5rWB77ybZmFsc2Ug6KGo56S65Y+R6YCB6Z+z6aKR5rWB77yb6buY6K6k5Li6IGZhbHNl44CCXG4gICAgICogQHBhcmFtIGNoYW5uZWwg5o6o5rWB6YCa6YGT44CCXG4gICAgICovXG4gICAgbXV0ZVB1Ymxpc2hTdHJlYW1BdWRpbyhtdXRlLCBjaGFubmVsKSB7XG4gICAgICAgIHJldHVybiBaZWdvRXhwcmVzc0VuZ2luZUltcGwuZ2V0SW5zdGFuY2UoKS5tdXRlUHVibGlzaFN0cmVhbUF1ZGlvKG11dGUsIGNoYW5uZWwpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiDlgZzmraLmiJbmgaLlpI3lj5HpgIHmjIflrprmjqjmtYHpgJrpgZPnmoTop4bpopHmtYHjgIJcbiAgICAgKlxuICAgICAqIOaUr+aMgeeJiOacrO+8mjEuMS4wIOWPiuS7peS4iuOAglxuICAgICAqIOivpuaDheaPj+i/sO+8muaOqOa1geaXtuWPr+iwg+eUqOatpOWHveaVsOWunueOsOS4jeaOqOinhumikea1ge+8jOacrOWcsOaRhOWDj+WktOS7jeiDveato+W4uOW3peS9nO+8jOiDveato+W4uOmHh+mbhu+8jOmihOiniOWSjOWkhOeQhuinhumikeeUu+mdou+8jOS9huS4jeWQkee9kee7nOWPkemAgeinhumikeaVsOaNruOAglxuICAgICAqIOiwg+eUqOaXtuacuu+8muWcqOWIm+W7uuW8leaTjiBbY3JlYXRlRW5naW5lXSDlkI7osIPnlKjnlJ/mlYjjgIJcbiAgICAgKiDkvb/nlKjpmZDliLbvvJrml6DjgIJcbiAgICAgKiDnm7jlhbPlm57osIPvvJrlpoLmnpzlnKjmnKzlnLDorr7nva7kuoblgZzmraLlj5HpgIHop4bpopHmtYHvvIzmi4nmnKzlnLDmtYHnmoTov5znq6/nlKjmiLflj6/ku6XpgJrov4fnm5HlkKwgW29uUmVtb3RlQ2FtZXJhU3RhdGVVcGRhdGVdIOWbnuiwg+aUtuWIsCBgTXV0ZWAg55qE54q25oCB5Y+Y5pu06YCa55+l44CCXG4gICAgICog55u45YWz5o6l5Y+j77yaW211dGVQdWJsaXNoU3RyZWFtQXVkaW9d44CCXG4gICAgICog5rOo5oSP77ya5q2k5Ye95pWw5LuF5ZyoIFplZ29FeHByZXNzVmlkZW8gU0RLIOS4reacieaViO+8gVxuICAgICAqXG4gICAgICogQHBhcmFtIG11dGUg5piv5ZCm5YGc5q2i5Y+R6YCB6KeG6aKR5rWB77ybdHJ1ZSDooajnpLrlj6rlj5HpgIHpn7PpopHmtYHkuI3lj5HpgIHop4bpopHmtYHvvJtmYWxzZSDooajnpLrlkIzml7blj5HpgIHpn7PpopHlkozop4bpopHmtYHvvJvpu5jorqTkuLogZmFsc2XjgIJcbiAgICAgKiBAcGFyYW0gY2hhbm5lbCDmjqjmtYHpgJrpgZPjgIJcbiAgICAgKi9cbiAgICBtdXRlUHVibGlzaFN0cmVhbVZpZGVvKG11dGUsIGNoYW5uZWwpIHtcbiAgICAgICAgcmV0dXJuIFplZ29FeHByZXNzRW5naW5lSW1wbC5nZXRJbnN0YW5jZSgpLm11dGVQdWJsaXNoU3RyZWFtVmlkZW8obXV0ZSwgY2hhbm5lbCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIOW8gOWni+aIluWBnOatouaMh+WumuaOqOa1gemAmumBk+eahOa1gemHj+aOp+WItuOAglxuICAgICAqXG4gICAgICog5pSv5oyB54mI5pys77yaMS41LjAg5Y+K5Lul5LiK44CCXG4gICAgICog6K+m5oOF5o+P6L+w77ya5byA5ZCv5rWB6YeP5o6n5Yi25Y+v5Lul5L2/IFNESyDmoLnmja7lvZPliY3kuIrooYznvZHnu5znjq/looPnirblhrXvvIzmiJbogIXlnKgxIOWvuTEg5LqS5Yqo5Zy65pmv5LiL5qC55o2u5a+55pa55LiL6KGM572R57uc546v5aKD54q25Ya177yM6LCD6IqC6Z+z6KeG6aKR5o6o5rWB56CB546H5aSn5bCP77yM5Lul5L+d6Zqc5pWI5p6c5rWB55WF44CC5ZCM5pe277yM5Y+v6L+b5LiA5q2l5oyH5a6a5rWB6YeP5o6n5Yi255qE5bGe5oCn5p2l6LCD5pW055u45bqU55qE5o6n5Yi2562W55Wl44CCXG4gICAgICog6buY6K6k5YC877ya6buY6K6k5byA5ZCv44CCXG4gICAgICog6LCD55So5pe25py677ya5Zyo5Yib5bu65byV5pOOIFtjcmVhdGVFbmdpbmVdIOWQju+8jOWcqOaOqOa1gSBbc3RhcnRQdWJsaXNoaW5nU3RyZWFtXSDkuYvliY3osIPnlKjnlJ/mlYjjgIJcbiAgICAgKiDkvb/nlKjpmZDliLbvvJrku4XmlK/mjIEgUlRDIOaOqOa1geOAglxuICAgICAqXG4gICAgICogQHBhcmFtIGVuYWJsZSDmmK/lkKbkvb/nlKjmtYHph4/mjqfliLbvvJt0cnVlIOihqOekuuW8gOWQr+a1geaOp++8m2ZhbHNlIOihqOekuuWFs+mXrea1geaOp++8m+m7mOiupOS4uiB0cnVl44CCXG4gICAgICogQHBhcmFtIHByb3BlcnR5IOa1gemHj+aOp+WItueahOWxnuaAp++8jOS9jeaOqeeggeagvOW8j+OAguWFt+S9k+WPr+iuvue9ruS4uiBbWmVnb1RyYWZmaWNDb250cm9sUHJvcGVydHldIOeahOWxnuaAp+eahOS4gOS4quaIluWkmuS4quaemuS4vue7hOWQiOOAgum7mOiupOS4uiBBZGFwdGl2ZUZQU+OAglxuICAgICAqIEBwYXJhbSBjaGFubmVsIOaOqOa1gemAmumBk+OAglxuICAgICAqL1xuICAgIGVuYWJsZVRyYWZmaWNDb250cm9sKGVuYWJsZSwgcHJvcGVydHksIGNoYW5uZWwpIHtcbiAgICAgICAgcmV0dXJuIFplZ29FeHByZXNzRW5naW5lSW1wbC5nZXRJbnN0YW5jZSgpLmVuYWJsZVRyYWZmaWNDb250cm9sKGVuYWJsZSwgcHJvcGVydHksIGNoYW5uZWwpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiDorr7nva7mjIflrprmjqjmtYHpgJrpgZPnmoTmtYHph4/mjqfliLbop4bpopHnoIHnjofmnIDkvY7lgLxcbiAgICAgKlxuICAgICAqIOaUr+aMgeeJiOacrO+8mjEuMS4wIOWPiuS7peS4iuOAglxuICAgICAqIOivpuaDheaPj+i/sO+8muiuvue9rua1gemHj+aOp+WItuaXtuinhumikeeggeeOh+i+vuWIsOacgOS9jumYiOWAvOaXtueahOaOp+WItuetlueVpeOAguW9k+eggeeOh+S9juS6juacgOS9jumYiOWAvOaXtu+8jOWPr+S7pemAieaLqeS4jeWPkemAgeinhumikeaVsOaNruaIluiAheS7peaegeS9juW4p+eOh+WPkemAgeOAglxuICAgICAqIOm7mOiupOWAvO+8muaXoOinhumikeeggeeOh+acgOS9jumYiOWAvOeahOaOp+WItuaViOaenOOAglxuICAgICAqIOiwg+eUqOaXtuacuu+8muWcqOWIm+W7uuW8leaTjiBbY3JlYXRlRW5naW5lXSDlkI7vvIzlnKjmjqjmtYEgW3N0YXJ0UHVibGlzaGluZ1N0cmVhbV0g5YmN6LCD55So55Sf5pWI44CCXG4gICAgICog5L2/55So6ZmQ5Yi277ya5b+F6aG75byA5ZCv5rWB6YeP5o6n5Yi2IFtlbmFibGVUcmFmZmljQ29udHJvbF3jgIJcbiAgICAgKiDnm7jlhbPmjqXlj6PvvJpbZW5hYmxlVHJhZmZpY0NvbnRyb2xd44CCXG4gICAgICog5rOo5oSP77ya5q2k5Ye95pWw5LuF5ZyoIFplZ29FeHByZXNzVmlkZW8gU0RLIOS4reacieaViO+8gVxuICAgICAqXG4gICAgICogQHBhcmFtIGJpdHJhdGUg5pyA5L2O6KeG6aKR56CB546H77yM5Y2V5L2N5Li6IGticHPjgIJcbiAgICAgKiBAcGFyYW0gbW9kZSDkvY7kuo7mnIDkvY7noIHnjofml7bnmoTop4bpopHlj5HpgIHmqKHlvI/jgIJcbiAgICAgKiBAcGFyYW0gY2hhbm5lbCDmjqjmtYHpgJrpgZPjgIJcbiAgICAgKi9cbiAgICBzZXRNaW5WaWRlb0JpdHJhdGVGb3JUcmFmZmljQ29udHJvbChiaXRyYXRlLCBtb2RlLCBjaGFubmVsKSB7XG4gICAgICAgIHJldHVybiBaZWdvRXhwcmVzc0VuZ2luZUltcGwuZ2V0SW5zdGFuY2UoKS5zZXRNaW5WaWRlb0JpdHJhdGVGb3JUcmFmZmljQ29udHJvbChiaXRyYXRlLCBtb2RlLCBjaGFubmVsKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICog6K6+572u5o6o5rWB56uv6YeH6ZuG6Z+z6YeP44CCXG4gICAgICpcbiAgICAgKiDmlK/mjIHniYjmnKzvvJoxLjEzLjAg5Y+K5Lul5LiK44CCXG4gICAgICog6K+m5oOF5o+P6L+w77ya5q2k5Ye95pWw55So5LqO5Zyo6K6+5aSH6YeH6ZuG6Z+z6YeP55qE5Z+656GA5LiK5YGa5aKe55uK5aSE55CG77yM5pys56uv55So5oi35Y+v5o6n5Yi25b6A6L+c56uv5Y+R6YCB6Z+z6aKR5rWB55qE5aOw6Z+z5aSn5bCP44CCXG4gICAgICog6buY6K6k5YC877ya6buY6K6k5Li6IDEwMOOAglxuICAgICAqIOiwg+eUqOaXtuacuu+8muWcqOWIm+W7uuW8leaTjiBbY3JlYXRlRW5naW5lXSDlkI7jgIJcbiAgICAgKiDkvb/nlKjpmZDliLbvvJrlnKjmjqjmtYHpgJTkuK3lj6/ku6XliqjmgIHorr7nva7ph4fpm4bpn7Pph4/jgIJcbiAgICAgKiDnm7jlhbPmjqXlj6PvvJrorr7nva7mi4nmtYHpn7Pph48gW3NldFBsYXlWb2x1bWVd44CCXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdm9sdW1lIOmfs+mHj+WinuebiueZvuWIhuavlO+8jOiMg+WbtOS4uiAwIH4gMjAw77yM6buY6K6k5YC85Li6IDEwMO+8jOihqOekuuS4uuiuvuWkh+WOn+Wni+mHh+mbhumfs+mHj+eahCAxMDAlLlxuICAgICAqL1xuICAgIHNldENhcHR1cmVWb2x1bWUodm9sdW1lKSB7XG4gICAgICAgIHJldHVybiBaZWdvRXhwcmVzc0VuZ2luZUltcGwuZ2V0SW5zdGFuY2UoKS5zZXRDYXB0dXJlVm9sdW1lKHZvbHVtZSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIOWinuWKoOi9rOaOqOiHsyBDRE4g55qEIFVSTOOAglxuICAgICAqXG4gICAgICog5pSv5oyB54mI5pys77yaMS4xLjAg5Y+K5Lul5LiK44CCXG4gICAgICog6K+m5oOF5o+P6L+w77ya5bCGIFpFR08gUlRDIOacjeWKoeWZqOeahOmfs+inhumikea1gei9rOaOqOiHs+iHquWumuS5ieeahCBDRE4g5YaF5a655YiG5Y+R572R57uc77yM5bu26L+f6auY5L2G5piv5pSv5oyB6auY5bm25Y+R5ouJ5rWB44CCXG4gICAgICog5Lia5Yqh5Zy65pmv77yaMS4g5bi455So5LqO5a+55bu26L+f5rKh5pyJ54m55Yir6auY6KaB5rGC55qE5aSn6KeE5qih55u05pKt5Zy65pmv44CCMi4g55Sx5LqOIFpFR08gUlRDIOacjeWKoeWZqOacrOi6q+WPr+mFjee9ruaUr+aMgSBDRE4g5YaF5a655YiG5Y+R572R57uc77yM5q2k5Ye95pWw5Li76KaB5Li66Ieq6Lqr5oul5pyJIENETiDlhoXlrrnliIblj5HmnI3liqHnmoTlvIDlj5HogIXkvb/nlKjjgIIzLiDmraTlh73mlbDmlK/mjIHliqjmgIHovazmjqjoh7PlpJrkuKogQ0ROIOWGheWuueWIhuWPkee9kee7nO+8jOWboOatpOW8gOWPkeiAheWPr+S7peS9v+eUqOatpOWHveaVsOadpeS9nOS4uiBDRE4g5YaF5a655YiG5Y+R5pyN5Yqh55qE5LiA5Liq5a6554G+5pa55qGI44CCXG4gICAgICog6LCD55So5pe25py677ya5Zyo6LCD55SoIFtjcmVhdGVFbmdpbmVdIOWHveaVsOWIm+W7uuW8leaTjuWQjuOAglxuICAgICAqIOS9v+eUqOmZkOWItu+8muW9k+iwg+eUqCBbZW5hYmxlUHVibGlzaERpcmVjdFRvQ0ROXSDlh73mlbDorr7nva7kuLogdHJ1ZSDlsIbmtYHnm7TmjqjliLAgQ0ROIOaXtu+8jOWGjeiwg+eUqOacrOWHveaVsOWwhuaXoOaViOOAglxuICAgICAqIOazqOaEj+S6i+mhue+8muWIoOmZpOi9rOaOqOiHsyBDRE4g55qEIFVSTCDpnIDopoHosIPnlKggW3JlbW92ZVB1Ymxpc2hDZG5Vcmxd77yM6LCD55SoIFtzdG9wUHVibGlzaGluZ1N0cmVhbV0g5LiN5Lya5Yig6Zmk6L2s5o6o6IezIENETiDnmoQgVVJM44CCXG4gICAgICog55u45YWz5o6l5Y+j77ya5Yig6Zmk6L2s5o6o6IezIENETiDnmoQgVVJMIFtyZW1vdmVQdWJsaXNoQ2RuVXJsXe+8jOe7k+aenOWbnuiwg+WHveaVsCBbb25QdWJsaXNoZXJSZWxheUNETlN0YXRlVXBkYXRlXeOAglxuICAgICAqXG4gICAgICogQHBhcmFtIHN0cmVhbUlEIOa1gSBJROOAglxuICAgICAqIEBwYXJhbSB0YXJnZXRVUkwgQ0ROIOi9rOaOqOWcsOWdgO+8jOaUr+aMgeeahOi9rOaOqOWcsOWdgOagvOW8j+aciSBydG1wLCBydG1wcy5cbiAgICAgKiBAcmV0dXJuIOabtOaWsCBDRE4g6L2s5o6o57uT5p6c6YCa55+l44CCXG4gICAgICovXG4gICAgYWRkUHVibGlzaENkblVybChzdHJlYW1JRCwgdGFyZ2V0VVJMKSB7XG4gICAgICAgIHJldHVybiBaZWdvRXhwcmVzc0VuZ2luZUltcGwuZ2V0SW5zdGFuY2UoKS5hZGRQdWJsaXNoQ2RuVXJsKHN0cmVhbUlELCB0YXJnZXRVUkwpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiDliKDpmaTovazmjqjoh7MgQ0ROIOeahCBVUkzjgIJcbiAgICAgKlxuICAgICAqIOaUr+aMgeeJiOacrO+8mjEuMS4wIOWPiuS7peS4iuOAglxuICAgICAqIOivpuaDheaPj+i/sO+8muW9k+W3sue7j+mAmui/hyBbYWRkUHVibGlzaENkblVybF0g5re75Yqg5LqG5p+Q5LiqIENETiDovazmjqjlnLDlnYDvvIzpnIDopoHlsIbmtYHlgZzmraLovazmjqjml7bosIPnlKjmraTlh73mlbDjgIJcbiAgICAgKiDosIPnlKjml7bmnLrvvJrlnKjosIPnlKggW2NyZWF0ZUVuZ2luZV0g5Ye95pWw5Yib5bu65byV5pOO5ZCO77yM5LiN6ZyA6KaB57un57ut6L2s5o6o6IezIENETiDml7bjgIJcbiAgICAgKiDkvb/nlKjpmZDliLbvvJrlvZPosIPnlKggW2VuYWJsZVB1Ymxpc2hEaXJlY3RUb0NETl0g5Ye95pWw6K6+572u5Li6IHRydWUg5bCG5rWB55u05o6o5YiwIENETiDml7bvvIzlho3osIPnlKjmnKzlh73mlbDlsIbml6DmlYjjgIJcbiAgICAgKiDms6jmhI/kuovpobnvvJrmraTlh73mlbDlubbkuI3kvJrlgZzmraLmjqjlvoAgWkVHTyBSVEMg5pyN5Yqh5Zmo55qE6Z+z6KeG6aKR5rWB44CCXG4gICAgICog55u45YWz5o6l5Y+j77ya5aKe5Yqg6L2s5o6o6IezIENETiDnmoQgVVJMIFthZGRQdWJsaXNoQ2RuVXJsXe+8jOe7k+aenOWbnuiwg+WHveaVsCBbb25QdWJsaXNoZXJSZWxheUNETlN0YXRlVXBkYXRlXeOAglxuICAgICAqXG4gICAgICogQHBhcmFtIHN0cmVhbUlEIOa1gSBJROOAglxuICAgICAqIEBwYXJhbSB0YXJnZXRVUkwgQ0ROIOi9rOaOqOWcsOWdgO+8jOaUr+aMgeeahOi9rOaOqOWcsOWdgOagvOW8j+aciSBydG1wLlxuICAgICAqIEByZXR1cm4g5pu05pawIENETiDovazmjqjnu5PmnpzpgJrnn6XjgIJcbiAgICAgKi9cbiAgICByZW1vdmVQdWJsaXNoQ2RuVXJsKHN0cmVhbUlELCB0YXJnZXRVUkwpIHtcbiAgICAgICAgcmV0dXJuIFplZ29FeHByZXNzRW5naW5lSW1wbC5nZXRJbnN0YW5jZSgpLnJlbW92ZVB1Ymxpc2hDZG5Vcmwoc3RyZWFtSUQsIHRhcmdldFVSTCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIOaYr+WQpuebtOaOpeaOqOa1geWIsCBDRE7vvIjkuI3nu4/ov4cgWkVHTyBSVEMg5pyN5Yqh5Zmo77yJLCDmlK/mjIHorr7nva7lhbbku5bpgJrpgZPnmoTmjqjmtYHjgIJcbiAgICAgKlxuICAgICAqIOaUr+aMgeeJiOacrO+8mjEuNS4wIOWPiuS7peS4iuOAglxuICAgICAqIOivpuaDheaPj+i/sO+8muaYr+WQpuS4jee7j+i/hyBaRUdPIFJUQyDmnI3liqHlmajnm7TmjqXmjqjmtYHliLAgQ0RO44CCXG4gICAgICog5Lia5Yqh5Zy65pmv77ya5bi455So5LqO5a+55bu26L+f5rKh5pyJ54m55Yir6auY6KaB5rGC55qE5aSn6KeE5qih55u05pKt5Zy65pmv44CCXG4gICAgICog6buY6K6k5YC877ya6buY6K6k5Li6IGZhbHNl77yM5LiN5byA5ZCv55u05o6o44CCXG4gICAgICog6LCD55So5pe25py677ya5Zyo5Yib5bu65byV5pOOIFtjcmVhdGVFbmdpbmVd5ZCO77yM5byA5aeL5o6o5rWBW3N0YXJ0UHVibGlzaGluZ1N0cmVhbV0g5YmN44CCXG4gICAgICog5rOo5oSP5LqL6aG577ya55u05o6oIENETiDlip/og73lnKjnvZHnu5zkvKDovpPov4fnqIvkuK3kuI3nu4/ov4cgWkVHTyDlrp7ml7bpn7Pop4bpopHkupHvvIzml6Dms5Xkvb/nlKggWkVHTyDnmoTotoXkvY7lu7bov5/pn7Pop4bpopHmnI3liqHjgIJcbiAgICAgKiDnm7jlhbPmjqXlj6PvvJrliqjmgIHovazmjqjoh7MgQ0ROIOWHveaVsCBbYWRkUHVibGlzaENkblVybF3jgIFbcmVtb3ZlUHVibGlzaENkblVybF3jgIJcbiAgICAgKlxuICAgICAqIEBwYXJhbSBlbmFibGUg5piv5ZCm5byA5ZCv55u05o6oIENETu+8m3RydWUg6KGo56S65byA5ZCv55u05o6oIENETu+8m2ZhbHNlIOihqOekuuS4jeW8gOWQr+ebtOaOqCBDRE7vvJvpu5jorqTkuLogZmFsc2XjgIJcbiAgICAgKiBAcGFyYW0gY29uZmlnIENETiDphY3nva7vvIzoi6XkuLogbnVsbCDliJnkvb/nlKggWmVnbyDnmoTlkI7lj7DphY3nva7jgIJcbiAgICAgKiBAcGFyYW0gY2hhbm5lbCDmjqjmtYHpgJrpgZPjgIJcbiAgICAgKi9cbiAgICBlbmFibGVQdWJsaXNoRGlyZWN0VG9DRE4oZW5hYmxlLCBjb25maWcsIGNoYW5uZWwpIHtcbiAgICAgICAgcmV0dXJuIFplZ29FeHByZXNzRW5naW5lSW1wbC5nZXRJbnN0YW5jZSgpLmVuYWJsZVB1Ymxpc2hEaXJlY3RUb0NETihlbmFibGUsIGNvbmZpZywgY2hhbm5lbCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIOiuvue9ruaOqOa1geawtOWNsO+8jOaUr+aMgeiuvue9ruWFtuS7lumAmumBk+eahOaOqOa1geOAglxuICAgICAqXG4gICAgICog5pSv5oyB54mI5pys77yaMS4xLjAg5Y+K5Lul5LiK44CCXG4gICAgICog6K+m5oOF5o+P6L+w77ya57uZ5o6o5rWB55S76Z2i6K6+572u5rC05Y2w44CCXG4gICAgICog5Lia5Yqh5Zy65pmv77ya5bi455So5LqO5qCH6K+G5o6o5rWB5p2l5rqQ55qE5Zy65pmv44CCXG4gICAgICog6LCD55So5pe25py677ya5Zyo6LCD55SoIFtjcmVhdGVFbmdpbmVdIOWHveaVsOWIm+W7uuW8leaTjuWQjuOAglxuICAgICAqIOazqOaEj+S6i+mhue+8muawtOWNsOeahOW4g+WxgOS4jeiDvei2heWHuuaOqOa1geeahOinhumikee8lueggeWIhui+qOeOh+OAguWPr+WcqOaOqOa1geWJjeaIluaOqOa1geS4remAlOS7u+aEj+aXtuWIu+iuvue9ruOAglxuICAgICAqIOazqOaEj++8muatpOWHveaVsOS7heWcqCBaZWdvRXhwcmVzc1ZpZGVvIFNESyDkuK3mnInmlYjvvIFcbiAgICAgKlxuICAgICAqIEBwYXJhbSB3YXRlcm1hcmsg5rC05Y2w5biD5bGA5bem5LiK6KeS5Li65Z2Q5qCH57O75Y6f54K577yM5Yy65Z+f5LiN6IO96LaF6L+H57yW56CB5YiG6L6o546H6K6+572u55qE5aSn5bCP44CC6Iul5Li656m66KGo56S65Y+W5raI5rC05Y2w44CCXG4gICAgICogQHBhcmFtIGlzUHJldmlld1Zpc2libGUg5piv5ZCm5pys5Zyw6aKE6KeI6IO955yL6KeB5rC05Y2w44CCXG4gICAgICogQHBhcmFtIGNoYW5uZWwg5o6o5rWB6YCa6YGT44CCXG4gICAgICovXG4gICAgc2V0UHVibGlzaFdhdGVybWFyayh3YXRlcm1hcmssIGlzUHJldmlld1Zpc2libGUsIGNoYW5uZWwpIHtcbiAgICAgICAgcmV0dXJuIFplZ29FeHByZXNzRW5naW5lSW1wbC5nZXRJbnN0YW5jZSgpLnNldFB1Ymxpc2hXYXRlcm1hcmsod2F0ZXJtYXJrLCBpc1ByZXZpZXdWaXNpYmxlLCBjaGFubmVsKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICog5byAL+WFs+ehrOS7tue8lueggeOAglxuICAgICAqXG4gICAgICog5pSv5oyB54mI5pys77yaMS4xLjAg5Y+K5Lul5LiK44CCXG4gICAgICog6K+m5oOF5o+P6L+w77ya5o6o5rWB5pe25piv5ZCm6YeH55So56Gs5Lu257yW56CB55qE5byA5YWz77yM5byA5ZCv56Gs6Kej57yW56CB5ZCO5Lya5L2/55SoIEdQVSDov5vooYznvJbnoIHvvIzpmY3kvY4gQ1BVIOS9v+eUqOeOh+OAglxuICAgICAqIOiwg+eUqOaXtuacuu+8muWcqOaOqOa1geWJjeiuvue9ruaJjeiDveeUn+aViO+8jOWmguaenOWcqOaOqOa1geWQjuiuvue9ru+8jOWBnOaOqOWQjumHjeaWsOaOqOa1geWPr+S7peeUn+aViOOAglxuICAgICAqIOazqOaEj+S6i+mhue+8mueUseS6juWwkemDqOWIhuacuuWei+iuvuWkh+ehrOe8luaUr+aMgeS4jeaYr+eJueWIq+Wlve+8jFNESyDpu5jorqTkvb/nlKjova/ku7bnvJbnoIHnmoTmlrnlvI/jgILoi6XlvIDlj5HogIXlnKjmn5DkupvmnLrlnovmtYvor5Xml7blj5HnjrDmjqjlpKfliIbovqjnjofpn7Pop4bpopHmtYHml7borr7lpIflj5Hng63kuKXph43vvIzlj6/ogIPomZHosIPnlKjmraTlh73mlbDlvIDlkK/noaznvJbnmoTmlrnlvI/jgIJcbiAgICAgKlxuICAgICAqIEBwYXJhbSBlbmFibGUg5piv5ZCm5byA5ZCv56Gs5Lu257yW56CB77ybdHJ1ZSDooajnpLrlvIDlkK/noaznvJbvvJtmYWxzZSDooajnpLrlhbPpl63noaznvJbvvJvpu5jorqTkuLogZmFsc2XjgIJcbiAgICAgKi9cbiAgICBlbmFibGVIYXJkd2FyZUVuY29kZXIoZW5hYmxlKSB7XG4gICAgICAgIHJldHVybiBaZWdvRXhwcmVzc0VuZ2luZUltcGwuZ2V0SW5zdGFuY2UoKS5lbmFibGVIYXJkd2FyZUVuY29kZXIoZW5hYmxlKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICog6K6+572u5YWz6Zet5pGE5YOP5aS05pe25omA5o6o6Z2Z5oCB5Zu+54mH55qE6Lev5b6EXG4gICAgICpcbiAgICAgKiDmlK/mjIHniYjmnKzvvJoyLjkuMCDlj4rku6XkuIrjgIJcbiAgICAgKiDor6bmg4Xmj4/ov7DvvJrorr7nva7lhbPpl63mkYTlg4/lpLTml7bmiYDmjqjpnZnmgIHlm77niYfnmoTot6/lvoTjgILlvIDlp4vmraPluLjmjqjmtYHlkI7vvIzosIPnlKggZW5hYmxlQ2FtZXJhKGZhbHNlKSDml7bkvJrlvIDlp4vmjqjpnZnmgIHlm77niYfvvIzosIPnlKggZW5hYmxlQ2FtZXJhKHRydWUpIOaXtuS8mue7k+adn+aOqOmdmeaAgeWbvueJh+OAglxuICAgICAqIOS4muWKoeWcuuaZr++8muW8gOWPkeiAheW4jOacm+WFs+mXreaRhOWDj+WktOaXtu+8jOaYvuekuumdmeaAgeWbvueJh+OAguS+i+Wmgu+8jOS4u+aSremAgOWQjuWPsOeahOaXtuWAme+8jOS8muS4u+WKqOWFs+mXreaRhOWDj+WktO+8jOatpOaXtuinguS8l+S+p+mcgOimgeWxleekuuS4u+aSreaaguaXtuemu+W8gOeahOWbvueJh+OAglxuICAgICAqIOiwg+eUqOaXtuacuu+8muWIneWni+WMluW8leaTjuS5i+WQju+8jOWFs+mXreaRhOWDj+WktOWJjeiwg+eUqOacrCBBUEkg6L+b6KGM5Y+C5pWw6YWN572u77yM5Zyo5YWz6Zet5pGE5YOP5aS05ZCO77yM5Y2z5Y+v5o6o6Z2Z5oCB5Zu+54mH44CCXG4gICAgICog5L2/55So6ZmQ5Yi277yaXG4gICAgICogICAxLiDlm77niYfmlK/mjIHnsbvlnovkuLogSlBFRy9KUEfjgIFQTkfjgIFCTVDjgIFIRUlG44CCXG4gICAgICogICAyLiDor6XmjqXlj6Plj6rlr7kgU0RLIOinhumikemHh+mbhuacieaViO+8jOWvueiHquWumuS5ieinhumikemHh+mbhuS4jeeUn+aViOOAglxuICAgICAqICAgMy4g5LiN5pSv5oyB5Zu+54mH6Lev5b6E5piv572R57uc6ZO+5o6l44CCXG4gICAgICog5rOo5oSP5LqL6aG577yaXG4gICAgICogICAxLiDmnKzlnLDpooTop4jml6Dms5XnnIvliLDor6XpnZnmgIHlm77niYfjgIJcbiAgICAgKiAgIDIuIOWklumDqOa7pOmVnOOAgeawtOWNsOOAgemVnOWDj+OAgeaIquWbvumDveS4jeS8mueUn+aViOOAglxuICAgICAqICAgMy4g5aaC5p6c5Zu+54mH5a696auY5q+U5LiO6K6+5a6a55qE57yW56CB5a696auY5q+U5LiN5LiA6Ie077yM5Lya5oyJ54Wn57yW56CB5a696auY5q+U6L+b6KGM6KOB5Ymq44CCXG4gICAgICog5bmz5Y+w5beu5byC77yaXG4gICAgICogICAxLiBXaW5kb3dz77ya55u05o6l5aGr5YaZ5Zu+54mH5L2N572u77yM5aaCXCJEOi8vZGlyLy9pbWFnZS5qcGdcIuOAglxuICAgICAqICAgMi4gaU9TL21hY09T77ya5aaC5p6c5piv5a6M5pW06Lev5b6E5YiZ5re75YqgIFwiZmlsZTpcIiDliY3nvIDvvIzlpoLvvJpAXCJmaWxlOi92YXIvaW1hZ2UucG5nXCLjgILotYTkuqfliJnmt7vliqAgXCJhc3NldDpcIiDliY3nvIDvvIzlpoLvvJpAXCJhc3NldDp3YXRlcm1hcmtcIuOAglxuICAgICAqICAgMy4gQW5kcm9pZO+8muWmguaenOaYr+WujOaVtOi3r+W+hOWImea3u+WKoCBcImZpbGU6XCIg5YmN57yA77yM5aaC77yaXCJmaWxlOi9zZGNhcmQvaW1hZ2UucG5nXCLjgILigJxhc3NldHPigJ0g55uu5b2V5LiL55qE5Zu+54mH5YiZ5re75YqgIFwiYXNzZXQ6XCIg5YmN57yA77yM5aaC77yaXCJhc3NldDp3YXRlcm1hcmsucG5nXCLjgIJcbiAgICAgKiAgIDQuIEZsdXR0ZXLvvJrlpoLmnpzmmK/nu53lr7not6/lvoTliJnmt7vliqAgXCJmaWxlOlwiIOWJjee8gO+8jOWmgu+8mlwiZmlsZTovc2RjYXJkL2ltYWdlLnBuZ1wi44CC4oCcYXNzZXRz4oCdIOi1hOa6kOS4reeahOWbvueJh+WImea3u+WKoCBcImZsdXR0ZXItYXNzZXQ6Ly9cIiDliY3nvIDvvIzlpoLvvJpcImZsdXR0ZXItYXNzZXQ6Ly9hc3NldHMvd2F0ZXJtYXJrLnBuZ1wi44CCXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZmlsZVBhdGgg5Zu+54mH6Lev5b6EXG4gICAgICogQHBhcmFtIGNoYW5uZWwg5o6o5rWB6YCa6YGT44CCXG4gICAgICovXG4gICAgc2V0RHVtbXlDYXB0dXJlSW1hZ2VQYXRoKGZpbGVQYXRoLCBjaGFubmVsKSB7XG4gICAgICAgIHJldHVybiBaZWdvRXhwcmVzc0VuZ2luZUltcGwuZ2V0SW5zdGFuY2UoKS5zZXREdW1teUNhcHR1cmVJbWFnZVBhdGgoZmlsZVBhdGgsIGNoYW5uZWwpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiDlvIDlp4vmi4nmtYHvvIjku44gWkVHTyBSVEMg5pyN5Yqh5Zmo5oiW56ys5LiJ5pa5IENETu+8ie+8jOaUr+aMgeWkmuaIv+mXtOaooeW8j+OAglxuICAgICAqXG4gICAgICog5pSv5oyB54mI5pys77yaMS4xLjAg5Y+K5Lul5LiK44CCXG4gICAgICog6K+m5oOF5o+P6L+w77ya5LuOIFpFR08gUlRDIOacjeWKoeWZqOaIluesrOS4ieaWuSBDRE4g5ouJ5Y+W6L+c56uv55So5oi355qE6Z+z6KeG6aKR5rWB6L+b6KGM5LqS6YCa44CCXG4gICAgICog5Lia5Yqh5Zy65pmv77ya5Zyo5a6e5pe26L+e6bqm5oiW55u05pKt5Zy65pmv5LiL77yM5byA5Y+R6ICF5Y+v6YCa6L+H55uR5ZCsIFtvblJvb21TdHJlYW1VcGRhdGVdIOS6i+S7tuWbnuiwg+adpeiOt+WPluaJgOWcqOaIv+mXtOWGheaWsOWinueahOa1geS/oeaBr++8jOW5tuiwg+eUqOatpOaOpeWPo+S8oOWFpSBcInN0cmVhbUlEXCIg6L+b6KGM5ouJ5rWB5pON5L2c44CCXG4gICAgICog6LCD55So5pe25py677ya6LCD55SoIFtsb2dpblJvb21dIOWKoOWFpeaIv+mXtOWQjuiwg+eUqOivpeWHveaVsOOAglxuICAgICAqIOS9v+eUqOmZkOWItu+8muaXoOOAglxuICAgICAqIOazqOaEj+S6i+mhue+8mjEuIOW8gOWPkeiAheWPr+mAmui/h+WGjeasoeiwg+eUqOatpOWHveaVsOWunueOsOWIh+aNouaLiea1gSBjYW52YXMg55qE5pON5L2c77yIc3RyZWFtSUQg5b+F6aG75LiA5qC377yJ44CC5ZCM5LiA5p2h5rWB5Y+q6IO95Zyo5ZSv5LiA55qE6KeG5Zu+5Lit5ouJ5Y+W5bGV56S677yM5aaC5p6c6LCD55SoIFtzdGFydFBsYXlpbmdTdHJlYW1dIOS8oOWFpeebuOWQjOeahCBcInN0cmVhbUlEXCIg5ZKM5LiN5ZCM55qE6KeG5Zu+77yM55S76Z2i5Y+q5Lya5Zyo5paw6KeG5Zu+5bGV546w44CCMi4g6aaW5qyh5ouJ5rWB5pe25aaC5p6c5Zug572R57uc5Y6f5Zug5ouJ5rWB5aSx6LSl5oiW5ouJ5rWB5Lit5pat77yMU0RLIOS8muWcqCAyMG1pbiDlhoXlpJrmrKHlsJ3or5Xph43ov57lubbmi4nmtYHjgIIzLiDlnKjnvZHnu5zotKjph4/kuI3kvbPnmoTmg4XlhrXkuIvvvIznlKjmiLfmi4nmtYHlj6/og73lh7rnjrDkuK3mlq3vvIxTREsg5Lya5bCd6K+V6YeN6L+e5bm25ouJ5rWB77yM5Y+v6YCa6L+H55uR5ZCsIFtvblBsYXllclN0YXRlVXBkYXRlXSDkuovku7bmnaXojrfnn6XlvZPliY3mi4nmtYHnirbmgIHku6Xlj4rplJnor6/kv6Hmga/jgILor6bmg4Xor7flj4LogIMgaHR0cHM6Ly9kb2MtemguemVnby5pbS9mYXEvcmVjb25uZWN0IDQuIOWmguaenOaLieWPluS4jeWtmOWcqOeahCBcInN0cmVhbUlEXCLvvIxTREsg5Lya5oyB57ut5bCd6K+V5ouJ5Y+W77yM5Zyo6K+lIHN0cmVhbUlEIOWvueW6lOeahOmfs+inhumikea1geiiq+aIkOWKn+aOqOmAgeWQju+8jOivpea1geWPr+S7peecn+ato+iiq+aLieWPluWIsOOAglxuICAgICAqIOazqOaEj++8muatpOWHveaVsOS7heWcqCBaZWdvRXhwcmVzc1ZpZGVvIFNESyDkuK3mnInmlYjvvIFcbiAgICAgKlxuICAgICAqIEBwYXJhbSBzdHJlYW1JRCDmtYEgSUTvvIzplb/luqbkuI3otoXov4cgMjU2IOWtl+iKgueahOWtl+espuS4suOAglxuICAgICAqICAg5rOo5oSP5LqL6aG577yaXG4gICAgICogICDku4XmlK/mjIHmlbDlrZfvvIzoi7HmloflrZfnrKYg5ZKMICctJywgJ18n44CCXG4gICAgICogQHBhcmFtIGNvbmZpZyDmi4nmtYHov5vpmLbphY3nva4sIFtaZWdvUGxheWVyQ29uZmlnXSDkuK3miL/pl7QgW3Jvb21JRF0g5Li655m75b2V55qE5oi/6Ze0SUTjgIJcbiAgICAgKi9cbiAgICBzdGFydFBsYXlpbmdTdHJlYW0oc3RyZWFtSUQsIGNvbmZpZykge1xuICAgICAgICByZXR1cm4gWmVnb0V4cHJlc3NFbmdpbmVJbXBsLmdldEluc3RhbmNlKCkuc3RhcnRQbGF5aW5nU3RyZWFtKHN0cmVhbUlELCBjb25maWcpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiDlgZzmraLmi4nmtYHjgIJcbiAgICAgKlxuICAgICAqIOaUr+aMgeeJiOacrO+8mjEuMS4wIOWPiuS7peS4iuOAglxuICAgICAqIOivpuaDheaPj+i/sO+8muWBnOatouS7jiBaRUdPIFJUQyDmnI3liqHlmajmi4nlj5bov5znq6/nlKjmiLfnmoTpn7Pop4bpopHmtYHjgIJcbiAgICAgKiDkuJrliqHlnLrmma/vvJrlnKjlrp7ml7bov57puqblnLrmma/kuIvvvIzlvIDlj5HogIXlj6/pgJrov4fnm5HlkKwgW29uUm9vbVN0cmVhbVVwZGF0ZV0g5LqL5Lu25Zue6LCD5p2l6I635Y+W5omA5Zyo5oi/6Ze05YaF5Yig6Zmk55qE5rWB5L+h5oGv77yM5bm26LCD55So5q2k5o6l5Y+j5Lyg5YWlIFwic3RyZWFtSURcIiDov5vooYzlgZzmraLmi4nmtYHmk43kvZzjgIJcbiAgICAgKiDosIPnlKjml7bmnLrvvJrosIPnlKggW2xvZ2luUm9vbV0g5Yqg5YWl5oi/6Ze05ZCO6LCD55So6K+l5Ye95pWw44CCXG4gICAgICog5L2/55So6ZmQ5Yi277ya5peg44CCXG4gICAgICog5rOo5oSP5LqL6aG577ya5YGc5q2i5ouJ5rWB5ZCO5a+55q2k5p2h5rWB5q2k5YmN6K6+572u55qE5bGe5oCn5aaCIFtzZXRQbGF5Vm9sdW1lXeOAgVttdXRlUGxheVN0cmVhbUF1ZGlvXeOAgVttdXRlUGxheVN0cmVhbVZpZGVvXSDnrYnmi4nmtYHnm7jlhbPnmoTphY3nva7pg73kvJrlpLHmlYjvvIzpnIDopoHlnKjkuIvmrKHmi4nmtYHkuYvliY3ph43mlrDorr7nva7jgIJcbiAgICAgKlxuICAgICAqIEBwYXJhbSBzdHJlYW1JRCDmtYEgSUTjgIJcbiAgICAgKi9cbiAgICBzdG9wUGxheWluZ1N0cmVhbShzdHJlYW1JRCkge1xuICAgICAgICByZXR1cm4gWmVnb0V4cHJlc3NFbmdpbmVJbXBsLmdldEluc3RhbmNlKCkuc3RvcFBsYXlpbmdTdHJlYW0oc3RyZWFtSUQpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiDmi4nmtYHnlLvpnaLmiKrlm77jgIJcbiAgICAgKlxuICAgICAqIOaUr+aMgeeJiOacrO+8mjEuMTcuMCDlj4rku6XkuIrjgIJcbiAgICAgKiDor6bmg4Xmj4/ov7DvvJrlr7nmjIflrprmi4nmtYFJROeUu+mdouaIquWbvuOAglxuICAgICAqIOiwg+eUqOaXtuacuu+8mltzdGFydFBsYXlpbmdTdHJlYW1d5ZCO6LCD55So44CCXG4gICAgICog5L2/55So6ZmQ5Yi277ya5peg44CCXG4gICAgICog55u45YWz5Zue6LCD77yaW29uUGxheWVyVGFrZVNuYXBzaG90UmVzdWx0XSDmiKrlm77mlbDmja7lm57osIPjgIJcbiAgICAgKiDms6jmhI/vvJrmraTlh73mlbDku4XlnKggWmVnb0V4cHJlc3NWaWRlbyBTREsg5Lit5pyJ5pWI77yBXG4gICAgICpcbiAgICAgKiBAcGFyYW0gc3RyZWFtSUQg6KaB5oiq5Zu+55qE5rWBIElE44CCXG4gICAgICogQHJldHVybiDmi4nmtYHnlLvpnaLmiKrlm77nu5Pmnpzlm57osIPjgIJcbiAgICAgKi9cbiAgICB0YWtlUGxheVN0cmVhbVNuYXBzaG90KHN0cmVhbUlEKSB7XG4gICAgICAgIHJldHVybiBaZWdvRXhwcmVzc0VuZ2luZUltcGwuZ2V0SW5zdGFuY2UoKS50YWtlUGxheVN0cmVhbVNuYXBzaG90KHN0cmVhbUlEKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICog6K6+572u5ouJ5rWB6Z+z6YeP44CCXG4gICAgICpcbiAgICAgKiDmlK/mjIHniYjmnKzvvJoxLjE2LjAg5Y+K5Lul5LiK44CCXG4gICAgICog6K+m5oOF5o+P6L+w77ya6K6+572u5ouJ5rWB55qE5aOw6Z+z5aSn5bCP77yM5pys56uv55So5oi35Y+v5o6n5Yi26Z+z6aKR5rWB55qE5pKt5pS+6Z+z6YeP44CCXG4gICAgICog6LCD55So5pe25py677yaW3N0YXJ0UGxheWluZ1N0cmVhbV0g5ZCO6LCD55So44CCXG4gICAgICog5L2/55So6ZmQ5Yi277ya5peg44CCXG4gICAgICog55u45YWz5o6l5Y+j77yaW3NldEFsbFBsYXlTdHJlYW1Wb2x1bWVdIOiuvue9ruaJgOacieaLiea1gemfs+mHj+OAglxuICAgICAqIOazqOaEj+S6i+mhue+8muWBnOatouaLiea1geWQju+8jOWGjeasoeaLiea1gemcgOimgemHjeaWsOiuvue9ruOAguatpOWHveaVsOS4jiBbc2V0QWxsUGxheVN0cmVhbVZvbHVtZV0g5Ye95pWw55u45LqS6KaG55uW77yM5pyA5ZCO5LiA5Liq6LCD55So55Sf5pWI44CCXG4gICAgICpcbiAgICAgKiBAcGFyYW0gc3RyZWFtSUQg5rWBIElE44CCXG4gICAgICogQHBhcmFtIHZvbHVtZSDpn7Pph4/nmb7liIbmr5TvvIzlj5blgLzojIPlm7TkuLogMCB+IDIwMO+8jOm7mOiupOWAvOS4uiAxMDDjgIJcbiAgICAgKi9cbiAgICBzZXRQbGF5Vm9sdW1lKHN0cmVhbUlELCB2b2x1bWUpIHtcbiAgICAgICAgcmV0dXJuIFplZ29FeHByZXNzRW5naW5lSW1wbC5nZXRJbnN0YW5jZSgpLnNldFBsYXlWb2x1bWUoc3RyZWFtSUQsIHZvbHVtZSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIOiuvue9ruaJgOacieaLiea1gemfs+mHj+OAglxuICAgICAqXG4gICAgICog5pSv5oyB54mI5pys77yaMi4zLjAg5Y+K5Lul5LiK44CCXG4gICAgICog6K+m5oOF5o+P6L+w77ya5q2k5Ye95pWw55So5LqO6K6+572u5omA5pyJ5ouJ5rWB55qE5aOw6Z+z5aSn5bCP77yM5pys56uv55So5oi35Y+v5o6n5Yi25omA5pyJ6Z+z6aKR5rWB55qE5pKt5pS+6Z+z6YeP44CCXG4gICAgICog6LCD55So5pe25py677yaW3N0YXJ0UGxheWluZ1N0cmVhbV3lkI7osIPnlKjjgIJcbiAgICAgKiDnm7jlhbPmjqXlj6PvvJrlj6/kvb/nlKggW3NldFBsYXlWb2x1bWVdIOiuvue9ruaMh+Wumumfs+inhumikea1geeahOmfs+mHj+OAglxuICAgICAqIOS9v+eUqOmZkOWItu+8muaXoOOAglxuICAgICAqIOazqOaEj+S6i+mhue+8muS4jnNldFBsYXlWb2x1bWXlh73mlbDnm7jkupLopobnm5Ys5pyA5ZCO5LiA5Liq6LCD55So55Sf5pWI44CCXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdm9sdW1lIOmfs+mHj+eZvuWIhuavlO+8jOWPluWAvOiMg+WbtOS4uiAwIH4gMjAw77yM6buY6K6k5YC85Li6IDEwMOOAglxuICAgICAqL1xuICAgIHNldEFsbFBsYXlTdHJlYW1Wb2x1bWUodm9sdW1lKSB7XG4gICAgICAgIHJldHVybiBaZWdvRXhwcmVzc0VuZ2luZUltcGwuZ2V0SW5zdGFuY2UoKS5zZXRBbGxQbGF5U3RyZWFtVm9sdW1lKHZvbHVtZSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIOiuvue9ruaSreaUvuinhumikea1geexu+Wei+OAglxuICAgICAqXG4gICAgICog5pSv5oyB54mI5pys77yaMi4zLjAg5Y+K5Lul5LiK44CCXG4gICAgICog6K+m5oOF5o+P6L+w77ya5b2T5o6o5rWB5pa56YCa6L+HIFtzZXRWaWRlb0NvbmZpZ10g6K6+572u5LqGIGNvZGVjSUQg5Li6IFNWQyDml7bvvIzmi4nmtYHmlrnlj6/ku6XliqjmgIHorr7nva7pgInnlKjkuI3lkIznmoTmtYHnsbvlnovvvIjlsI/liIbovqjnjofkuLrmoIflh4blm77lsYLnmoTkuozliIbkuYvkuIDvvInjgIJcbiAgICAgKiDkuJrliqHlnLrmma/vvJrkuIDoiKzmg4XlhrXkuIvvvIzlnKjnvZHnu5zovoPlvLHmiJbogIXmuLLmn5PnmoQgVUkg56qX5L2T6L6D5bCP55qE5oOF5Ya15LiL77yM5Y+v5Lul6YCJ5oup5L2/55So5ouJ5Y+W5bCP5YiG6L6o546H55qE6KeG6aKR5p2l6L6+5Yiw6IqC55yB5bim5a6955qE55uu55qE44CCXG4gICAgICog6LCD55So5pe25py677yaW2NyZWF0ZUVuZ2luZV0g5ZCO5Y+v6LCD55So44CCXG4gICAgICog5L2/55So6ZmQ5Yi277ya5peg44CCXG4gICAgICog5rOo5oSP77ya5q2k5Ye95pWw5LuF5ZyoIFplZ29FeHByZXNzVmlkZW8gU0RLIOS4reacieaViO+8gVxuICAgICAqXG4gICAgICogQHBhcmFtIHN0cmVhbUlEIOa1gSBJROOAglxuICAgICAqIEBwYXJhbSBzdHJlYW1UeXBlIOinhumikea1geexu+Wei+OAglxuICAgICAqL1xuICAgIHNldFBsYXlTdHJlYW1WaWRlb1R5cGUoc3RyZWFtSUQsIHN0cmVhbVR5cGUpIHtcbiAgICAgICAgcmV0dXJuIFplZ29FeHByZXNzRW5naW5lSW1wbC5nZXRJbnN0YW5jZSgpLnNldFBsYXlTdHJlYW1WaWRlb1R5cGUoc3RyZWFtSUQsIHN0cmVhbVR5cGUpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiDorr7nva7mi4nmtYHmkq3mlL7nvJPlrZjoh6rpgILlupTosIPmlbTnmoTljLrpl7TojIPlm7TjgIJcbiAgICAgKlxuICAgICAqIOaUr+aMgeeJiOacrO+8mjIuMS4wIOWPiuS7peS4iuOAglxuICAgICAqIOivpuaDheaPj+i/sO+8muiuvue9ruaLiea1geaXtiBTREsg5YaF6YOo57yT5a2Y6Ieq6YCC5bqU6LCD5pW055qE5Yy66Ze06IyD5Zu0IDAtNDAwMG1z44CCXG4gICAgICog5Lia5Yqh5Zy65pmv77ya5LiA6Iis5Zyo572R57uc546v5aKD6L6D5beu55qE5oOF5Ya15LiL77yM6LCD5pW05aKe5aSn5ouJ5rWB55qE5pKt5pS+57yT5a2Y77yM5Lya5pi+6JGX5YeP5bCR6Z+z6KeG6aKR5Y2h6aG/77yM5L2G5Lya5aKe5aSn5bu26L+f44CCXG4gICAgICog6LCD55So5pe25py677yaW2NyZWF0ZUVuZ2luZV0g5ZCO44CCXG4gICAgICog5L2/55So6ZmQ5Yi277ya5peg44CCXG4gICAgICog5rOo5oSP5LqL6aG577ya5b2T5byA5Y+R6ICF6K6+572u55qE57yT5a2Y5Yy66Ze05LiK6ZmQ6LaF6L+HIDQwMDBtcyDml7bvvIzkvJrlj5blgLwgNDAwMCBtc+OAguW9k+W8gOWPkeiAheiuvue9rueahOe8k+WtmOWMuumXtOS4iumZkOWwj+S6jue8k+WtmOWMuumXtOS4i+mZkOaXtu+8jOS8muiHquWKqOWwhuS4iumZkOWPluWAvOS4uuS4i+mZkOOAglxuICAgICAqXG4gICAgICogQHBhcmFtIHN0cmVhbUlEIOa1gSBJROOAglxuICAgICAqIEBwYXJhbSBtaW5CdWZmZXJJbnRlcnZhbCDnvJPlrZjoh6rpgILlupTljLrpl7TkuIvpmZDvvIzljZXkvY3mr6vnp5LjgILpu5jorqTlgLzkuLogMG1z44CCXG4gICAgICogQHBhcmFtIG1heEJ1ZmZlckludGVydmFsIOe8k+WtmOiHqumAguW6lOWMuumXtOS4iumZkO+8jOWNleS9jeavq+enkuOAgum7mOiupOWAvOS4uiA0MDAwbXPjgIJcbiAgICAgKi9cbiAgICBzZXRQbGF5U3RyZWFtQnVmZmVySW50ZXJ2YWxSYW5nZShzdHJlYW1JRCwgbWluQnVmZmVySW50ZXJ2YWwsIG1heEJ1ZmZlckludGVydmFsKSB7XG4gICAgICAgIHJldHVybiBaZWdvRXhwcmVzc0VuZ2luZUltcGwuZ2V0SW5zdGFuY2UoKS5zZXRQbGF5U3RyZWFtQnVmZmVySW50ZXJ2YWxSYW5nZShzdHJlYW1JRCwgbWluQnVmZmVySW50ZXJ2YWwsIG1heEJ1ZmZlckludGVydmFsKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICog6K6+572u5ouJ6Z+z6KeG6aKR5rWB5LyY5YWI57qn55qE5p2D6YeN44CCXG4gICAgICpcbiAgICAgKiDmlK/mjIHniYjmnKzvvJoxLjEuMCDlj4rku6XkuIrjgIJcbiAgICAgKiDor6bmg4Xmj4/ov7DvvJrorr7nva7mi4npn7Pop4bpopHmtYHkvJjlhYjnuqfnmoTmnYPph43jgIJcbiAgICAgKiDkuJrliqHlnLrmma/vvJrlvZPlvIDlj5HogIXkuJrliqHkuIrvvIzpnIDopoHlr7nmn5Dpn7Pop4bmtYHkvJjlhYjkv53or4HotKjph4/ml7bvvIjnuq/pn7PpopHmtYHkuIvor7fli7/kvb/nlKjvvInvvIzlj6/kvb/nlKjmraTmjqXlj6PjgILkvovlpoLvvJrkuIror77lnLrmma/vvIzlrabnlJ/mi4nlpJrot6/mtYEs5YiZ5Y+v6K6+572u6ICB5biI5rWB6auY5LyY5YWI57qn44CCXG4gICAgICog6LCD55So5pe25py677yaW3N0YXJ0UGxheWluZ1N0cmVhbV3kuYvlkI4g44CCXG4gICAgICog5L2/55So6ZmQ5Yi277ya5peg44CCXG4gICAgICog5rOo5oSP5LqL6aG577ya6buY6K6k5omA5pyJ6Z+z6KeG6aKR5rWB55qE5p2D6YeN55u45ZCM44CC5Y+q6IO96K6+572u5LiA6Lev5rWB5piv6auY5LyY5YWI57qn55qE77yM5Lul5pyA5ZCO6K6+572u55qE5Li65YeG44CC5rWB5YGc5q2i5LmL5ZCO6Ieq5Yqo5oGi5aSN5Yid5aeL54q25oCB77yM5omA5pyJ5rWB55qE5p2D6YeN55u45ZCM44CC5Zyo5pys5Zyw572R57uc5LiN5aW955qE5pe25YCZ77yM5L+d6K+BZm9jdXPmtYHnmoTlkIzml7bvvIzlj6/og73pgKDmiJDlhbbku5bnmoTljaHpob/mm7TlpJrjgIJcbiAgICAgKlxuICAgICAqIEBwYXJhbSBzdHJlYW1JRCDmtYEgSUTjgIJcbiAgICAgKi9cbiAgICBzZXRQbGF5U3RyZWFtRm9jdXNPbihzdHJlYW1JRCkge1xuICAgICAgICByZXR1cm4gWmVnb0V4cHJlc3NFbmdpbmVJbXBsLmdldEluc3RhbmNlKCkuc2V0UGxheVN0cmVhbUZvY3VzT24oc3RyZWFtSUQpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiDmi4nmtYHmmK/lkKblj6/mjqXmlLbmjIflrprpn7PpopHmlbDmja7jgIJcbiAgICAgKlxuICAgICAqIOaUr+aMgeeJiOacrO+8mjEuMS4wIOWPiuS7peS4iuOAglxuICAgICAqIOivpuaDheaPj+i/sO+8muWcqOWunuaXtumfs+inhumikeS6kuWKqOi/h+eoi+S4re+8jOacrOWcsOeUqOaIt+WPr+agueaNrumcgOimge+8jOmAmui/h+atpOWHveaVsOaOp+WItuaLiea1geaXtuaYr+WQpuaOpeaUtuaMh+Wumui/nOerr+eUqOaIt+eahOmfs+mikeaVsOaNrizlvZPlvIDlj5HogIXkuI3mjqXmlLbpn7PpopHmlLbmja7ml7bvvIzlj6/pmY3kvY7noazku7blkoznvZHnu5znmoTlvIDplIDjgIJcbiAgICAgKiDkuJrliqHlnLrmma/vvJrlvZPlvIDlj5HogIXpnIDopoHlv6vpgJ/lhbPpl63jgIHmgaLlpI3ov5znq6/pn7PpopHml7bvvIzlj6/osIPnlKjmraTlh73mlbDjgILnm7jmr5Tph43mlrDmi4nmtYHvvIzog73mnoHlpKfpmY3kvY7ogJfml7bvvIzmj5DljYfkupLliqjkvZPpqozjgIJcbiAgICAgKiDosIPnlKjml7bmnLrvvJrlnKjosIPnlKggW2NyZWF0ZUVuZ2luZV0g5ZCO5Y+v6LCD55So5q2k5Ye95pWw44CCXG4gICAgICog5rOo5oSP5LqL6aG577yaXG4gICAgICogIDEuIOS4jiBbbXV0ZUFsbFBsYXlBdWRpb1N0cmVhbXNdIOS4gOi1t+S9v+eUqOaXtu+8jOWPr+S7peS6kuebuOimhueblumFjee9ruOAglxuICAgICAqICAyLiDkuI4gW211dGVBbGxQbGF5U3RyZWFtQXVkaW9dIOS4gOi1t+S9v+eUqOaXtu+8jOWPquacieW9kyBbbXV0ZUFsbFBsYXlTdHJlYW1BdWRpb10g5Ye95pWw6K6+572u5Li6IOKAnGZhbHNl4oCd5pe277yM5q2k5Ye95pWw5omN5pyJ5pWI44CCXG4gICAgICogIDMuIOWBnOatouaLiea1geWQjuWvueatpOadoea1geatpOWJjeiuvue9rueahOWxnuaAp+WmgiBbc2V0UGxheVZvbHVtZV3jgIFbbXV0ZVBsYXlTdHJlYW1BdWRpb13jgIFbbXV0ZVBsYXlTdHJlYW1WaWRlb10g562J5ouJ5rWB55u45YWz55qE6YWN572u6YO95Lya5aSx5pWI77yM6ZyA6KaB5Zyo5LiL5qyh5ouJ5rWB5LmL5YmN6YeN5paw6K6+572u44CCXG4gICAgICog55u45YWz5o6l5Y+j77ya5Y+v6LCD55SoIFttdXRlQWxsUGxheVN0cmVhbUF1ZGlvXSDlh73mlbDmjqfliLbmmK/lkKbmjqXmlLbmiYDmnInpn7PpopHmlbDmja7jgILlv4XpobvlvZMgW211dGVBbGxQbGF5U3RyZWFtQXVkaW9dIOWSjCBbbXV0ZVBsYXlTdHJlYW1BdWRpb10g5Lik5Liq5Ye95pWw5ZCM5pe26K6+572u5Li6IFwiZmFsc2VcIiDml7bvvIzmnKzlnLDnlKjmiLfmi4nmtYHml7bmiY3og73mjqXmlLbov5znq6/nlKjmiLfnmoTpn7PpopHmlbDmja7vvJoxLiDlvZPosIPnlKggW211dGVBbGxQbGF5U3RyZWFtQXVkaW8odHJ1ZSldIOWHveaVsOaXtu+8jOWFqOWxgOeUn+aViO+8jOWNs+acrOWcsOeUqOaIt+S8muemgeatouaOpeaUtuaJgOaciei/nOerr+eUqOaIt+eahOmfs+mikeaVsOaNru+8jOatpOaXtuaXoOiuuuWcqCBbbXV0ZUFsbFBsYXlTdHJlYW1BdWRpb10g5LmL5YmN6L+Y5piv5LmL5ZCO6LCD55SoIFttdXRlUGxheVN0cmVhbUF1ZGlvXSDlh73mlbDpg73kuI3nlJ/mlYjjgIIyLiDlvZPosIPnlKggW211dGVBbGxQbGF5U3RyZWFtQXVkaW8oZmFsc2UpXSDlh73mlbDml7bvvIzmnKzlnLDnlKjmiLflj6/ku6XmjqXmlLbmiYDmnInov5znq6/nlKjmiLfnmoTpn7PpopHmlbDmja7vvIzmraTml7blj6/lho3pgJrov4cgW211dGVQbGF5U3RyZWFtQXVkaW9dIOWHveaVsOaOp+WItuaYr+WQpuaOpeaUtuWNleadoemfs+mikeaVsOaNruOAguiwg+eUqCBbbXV0ZVBsYXlTdHJlYW1BdWRpbyh0cnVlLCBzdHJlYW1JRCldIOWHveaVsOWImeacrOWcsOeUqOaIt+WPr+S7peaOpeaUtuivpSBcInN0cmVhbUlEXCIg5LmL5aSW55qE5YW25LuW6Z+z6aKR5pWw5o2u77yb6LCD55SoIFttdXRlUGxheVN0cmVhbUF1ZGlvKGZhbHNlLCBzdHJlYW1JRCldIOWHveaVsOWImeacrOWcsOeUqOaIt+WPr+S7peaOpeaUtiBcInN0cmVhbUlEXCIg55qE6Z+z6aKR5pWw5o2u44CCXG4gICAgICpcbiAgICAgKiBAcGFyYW0gc3RyZWFtSUQg5rWBIElE44CCXG4gICAgICogQHBhcmFtIG11dGUg5ouJ5rWB5pe25piv5ZCm5Y+v5Lul5o6l5pS25oyH5a6a6L+c56uv55So5oi355qE6Z+z6aKR5pWw5o2u77yM4oCcdHJ1ZeKAnSDooajnpLrnpoHmraLvvIzigJxmYWxzZeKAnSDooajnpLrmjqXmlLbvvIzpu5jorqTlgLzkuLog4oCcZmFsc2XigJ3jgIJcbiAgICAgKi9cbiAgICBtdXRlUGxheVN0cmVhbUF1ZGlvKHN0cmVhbUlELCBtdXRlKSB7XG4gICAgICAgIHJldHVybiBaZWdvRXhwcmVzc0VuZ2luZUltcGwuZ2V0SW5zdGFuY2UoKS5tdXRlUGxheVN0cmVhbUF1ZGlvKHN0cmVhbUlELCBtdXRlKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICog5ouJ5rWB5piv5ZCm5Y+v5o6l5pS25oyH5a6a6KeG6aKR5pWw5o2u44CCXG4gICAgICpcbiAgICAgKiDmlK/mjIHniYjmnKzvvJoxLjEuMCDlj4rku6XkuIrjgIJcbiAgICAgKiDor6bmg4Xmj4/ov7DvvJrlnKjlrp7ml7bpn7Pop4bpopHkupLliqjov4fnqIvkuK3vvIzmnKzlnLDnlKjmiLflj6/moLnmja7pnIDopoHvvIzpgJrov4fmraTlh73mlbDmjqfliLbmi4nmtYHml7bmmK/lkKbmjqXmlLbmjIflrprov5znq6/nlKjmiLfnmoTop4bpopHmlbDmja4s5b2T5byA5Y+R6ICF5LiN5o6l5pS26KeG6aKR5pWw5o2u5pe277yM5Y+v6ZmN5L2O56Gs5Lu25ZKM572R57uc55qE5byA6ZSA44CCXG4gICAgICog5Lia5Yqh5Zy65pmv77ya5b2T5byA5Y+R6ICF6ZyA6KaB5b+r6YCf5YWz6Zet44CB5oGi5aSN6KeC55yL6L+c56uv6KeG6aKR55S76Z2i5pe277yM5Y+v6LCD55So5q2k5Ye95pWw44CC55u45q+U6YeN5paw5ouJ5rWB77yM6IO95p6B5aSn6ZmN5L2O6ICX5pe277yM5o+Q5Y2H5LqS5Yqo5L2T6aqM44CCXG4gICAgICog6LCD55So5pe25py677ya5Zyo6LCD55SoIFtjcmVhdGVFbmdpbmVdIOWQjuWPr+iwg+eUqOatpOWHveaVsOOAglxuICAgICAqIOazqOaEj+S6i+mhue+8mlxuICAgICAqICAxLiDkuI4gW211dGVBbGxQbGF5QXVkaW9TdHJlYW1zXSDkuIDotbfkvb/nlKjml7bvvIzlj6/ku6XkupLnm7jopobnm5bphY3nva7jgIJcbiAgICAgKiAgMi4g5LiOIFttdXRlQWxsUGxheVN0cmVhbVZpZGVvXSDkuIDotbfkvb/nlKjml7bvvIzlj6rmnInlvZMgW211dGVBbGxQbGF5U3RyZWFtVmlkZW9dIOWHveaVsOiuvue9ruS4uiDigJxmYWxzZeKAneaXtu+8jOatpOWHveaVsOaJjeacieaViOOAglxuICAgICAqICAzLiDlvZPmjIflrprkuI3mjqXmlLbop4bpopHmtYHmlbDmja7ml7bvvIzop4blm77pu5jorqTkv53mjIHlnKjmnIDlkI7kuIDluKfvvIzlpoLmnpzpnIDopoHmuIXpmaTmnIDlkI7kuIDluKfvvIzor7fogZTns7sgWkVHTyDmioDmnK/mlK/mjIHjgIJcbiAgICAgKiAgNC4g5YGc5q2i5ouJ5rWB5ZCO5a+55q2k5p2h5rWB5q2k5YmN6K6+572u55qE5bGe5oCn5aaCIFtzZXRQbGF5Vm9sdW1lXeOAgVttdXRlUGxheVN0cmVhbUF1ZGlvXeOAgVttdXRlUGxheVN0cmVhbVZpZGVvXSDnrYnmi4nmtYHnm7jlhbPnmoTphY3nva7pg73kvJrlpLHmlYjvvIzpnIDopoHlnKjkuIvmrKHmi4nmtYHkuYvliY3ph43mlrDorr7nva7jgIJcbiAgICAgKiDnm7jlhbPmjqXlj6PvvJrlj6/osIPnlKggW211dGVBbGxQbGF5U3RyZWFtVmlkZW9dIOWHveaVsOaOp+WItuaYr+WQpuaOpeaUtuaJgOacieinhumikeaVsOaNruOAguW/hemhu+W9kyBbbXV0ZUFsbFBsYXlTdHJlYW1WaWRlb10g5ZKMIFttdXRlUGxheVN0cmVhbVZpZGVvXSDkuKTkuKrlh73mlbDlkIzml7borr7nva7kuLogXCJmYWxzZVwiIOaXtu+8jOacrOWcsOeUqOaIt+aLiea1geaXtuaJjeiDveaOpeaUtui/nOerr+eUqOaIt+eahOinhumikeaVsOaNru+8mjEuIOW9k+iwg+eUqCBbbXV0ZUFsbFBsYXlTdHJlYW1WaWRlbyh0cnVlKV0g5Ye95pWw5pe277yM5YWo5bGA55Sf5pWI77yM5Y2z5pys5Zyw55So5oi35Lya56aB5q2i5o6l5pS25omA5pyJ6L+c56uv55So5oi355qE6KeG6aKR5pWw5o2u77yM5q2k5pe25peg6K665ZyoIFttdXRlQWxsUGxheVN0cmVhbVZpZGVvXSDkuYvliY3ov5jmmK/kuYvlkI7osIPnlKggW211dGVQbGF5U3RyZWFtVmlkZW9dIOWHveaVsOmDveS4jeeUn+aViOOAgjIuIOW9k+iwg+eUqCBbbXV0ZUFsbFBsYXlTdHJlYW1WaWRlbyhmYWxzZSldIOWHveaVsOaXtu+8jOacrOWcsOeUqOaIt+WPr+S7peaOpeaUtuaJgOaciei/nOerr+eUqOaIt+eahOinhumikeaVsOaNru+8jOatpOaXtuWPr+WGjemAmui/hyBbbXV0ZVBsYXlTdHJlYW1WaWRlb10g5Ye95pWw5o6n5Yi25piv5ZCm5o6l5pS25Y2V5p2h6KeG6aKR5pWw5o2u44CC6LCD55SoIFttdXRlUGxheVN0cmVhbVZpZGVvKHRydWUsIHN0cmVhbUlEKV0g5Ye95pWw5YiZ5pys5Zyw55So5oi35Y+v5Lul5o6l5pS26K+lIFwic3RyZWFtSURcIiDkuYvlpJbnmoTlhbbku5bop4bpopHmlbDmja7vvJvosIPnlKggW211dGVQbGF5U3RyZWFtVmlkZW8oZmFsc2UsIHN0cmVhbUlEKV0g5Ye95pWw5YiZ5pys5Zyw55So5oi35Y+v5Lul5o6l5pS2IFwic3RyZWFtSURcIiDnmoTop4bpopHmlbDmja7jgIJcbiAgICAgKiDms6jmhI/vvJrmraTlh73mlbDku4XlnKggWmVnb0V4cHJlc3NWaWRlbyBTREsg5Lit5pyJ5pWI77yBXG4gICAgICpcbiAgICAgKiBAcGFyYW0gc3RyZWFtSUQg5rWBIElE44CCXG4gICAgICogQHBhcmFtIG11dGUg5ouJ5rWB5pe25piv5ZCm5Y+v5Lul5o6l5pS25oyH5a6a6L+c56uv55So5oi355qE6KeG6aKR5pWw5o2u77yM4oCcdHJ1ZeKAnSDooajnpLrnpoHmraLvvIzigJxmYWxzZeKAnSDooajnpLrmjqXmlLbvvIzpu5jorqTlgLzkuLog4oCcZmFsc2XigJ3jgIJTREsg5YaF6YOo6Ieq5Yqo5ouJ5Y+W55qE5rWB6buY6K6k5YC85Li6IGZhbHNl44CCXG4gICAgICovXG4gICAgbXV0ZVBsYXlTdHJlYW1WaWRlbyhzdHJlYW1JRCwgbXV0ZSkge1xuICAgICAgICByZXR1cm4gWmVnb0V4cHJlc3NFbmdpbmVJbXBsLmdldEluc3RhbmNlKCkubXV0ZVBsYXlTdHJlYW1WaWRlbyhzdHJlYW1JRCwgbXV0ZSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIOaLiea1geaYr+WQpuaOpeaUtuaJgOaciemfs+mikeaVsOaNruOAglxuICAgICAqXG4gICAgICog5pSv5oyB54mI5pys77yaMi40LjAg5Y+K5Lul5LiK44CCXG4gICAgICog6K+m5oOF5o+P6L+w77ya5Zyo5a6e5pe26Z+z6KeG6aKR5LqS5Yqo6L+H56iL5Lit77yM5pys5Zyw55So5oi35Y+v5qC55o2u6ZyA6KaB77yM6YCa6L+H5q2k5Ye95pWw5o6n5Yi25ouJ5rWB5pe25piv5ZCm5o6l5pS25omA5pyJ6L+c56uv55So5oi355qE6Z+z6aKR5pWw5o2u77yI5YyF5ous5Zyo6LCD55So6K+l5Ye95pWw5ZCO5paw5Yqg5YWl5oi/6Ze055qE55So5oi35omA5o6o55qE6Z+z6aKR5rWB77yJ44CC6buY6K6k5oOF5Ya15LiL77yM55So5oi35Yqg5YWl5oi/6Ze05ZCO5Y+v5Lul5o6l5pS25omA5pyJ6L+c56uv55So5oi35o6o6YCB55qE6Z+z6aKR5pWw5o2u44CC5b2T5byA5Y+R6ICF5LiN5o6l5pS26Z+z6aKR5pS25o2u5pe277yM5Y+v6ZmN5L2O56Gs5Lu25ZKM572R57uc55qE5byA6ZSAXG4gICAgICog5Lia5Yqh5Zy65pmv77ya5b2T5byA5Y+R6ICF6ZyA6KaB5b+r6YCf5YWz6Zet44CB5oGi5aSN6L+c56uv6Z+z6aKR5pe277yM5Y+v6LCD55So5q2k5Ye95pWw44CC55u45q+U6YeN5paw5ouJ5rWB77yM6IO95p6B5aSn6ZmN5L2O6ICX5pe277yM5o+Q5Y2H5LqS5Yqo5L2T6aqM44CCXG4gICAgICog6LCD55So5pe25py677ya5Zyo6LCD55SoIFtjcmVhdGVFbmdpbmVdIOWQjuWPr+iwg+eUqOatpOWHveaVsOOAglxuICAgICAqIOazqOaEj+S6i+mhue+8muatpOaOpeWPo+WcqCBTREsg55Sf5ZG95ZGo5pyf5YaF5LiN6IO95ZKMIFttdXRlQWxsUGxheUF1ZGlvU3RyZWFtc10g5re355So44CCXG4gICAgICog55u45YWz5o6l5Y+j77ya5Y+v6LCD55SoIFttdXRlUGxheVN0cmVhbUF1ZGlvXSDlh73mlbDmjqfliLbmmK/lkKbmjqXmlLbljZXmnaHpn7PpopHmlbDmja7jgILlv4XpobvlvZMgW211dGVBbGxQbGF5U3RyZWFtQXVkaW9dIOWSjCBbbXV0ZVBsYXlTdHJlYW1BdWRpb10g5Lik5Liq5Ye95pWw5ZCM5pe26K6+572u5Li6IFwiZmFsc2VcIiDml7bvvIzmnKzlnLDnlKjmiLfmi4nmtYHml7bmiY3og73mjqXmlLbov5znq6/nlKjmiLfnmoTpn7PpopHmlbDmja7vvJoxLiDlvZPosIPnlKggW211dGVBbGxQbGF5U3RyZWFtQXVkaW8odHJ1ZSldIOWHveaVsOaXtu+8jOWFqOWxgOeUn+aViO+8jOWNs+acrOWcsOeUqOaIt+S8muemgeatouaOpeaUtuaJgOaciei/nOerr+eUqOaIt+eahOmfs+mikeaVsOaNru+8jOatpOaXtuaXoOiuuuWcqCBbbXV0ZUFsbFBsYXlTdHJlYW1BdWRpb10g5LmL5YmN6L+Y5piv5LmL5ZCO6LCD55SoIFttdXRlUGxheVN0cmVhbUF1ZGlvXSDlh73mlbDpg73kuI3nlJ/mlYjjgIIgMi4g5b2T6LCD55SoIFttdXRlQWxsUGxheVN0cmVhbUF1ZGlvKGZhbHNlKV0g5Ye95pWw5pe277yM5pys5Zyw55So5oi35Y+v5Lul5o6l5pS25omA5pyJ6L+c56uv55So5oi355qE6Z+z6aKR5pWw5o2u77yM5q2k5pe25Y+v5YaN6YCa6L+HIFttdXRlUGxheVN0cmVhbUF1ZGlvXSDlh73mlbDmjqfliLbmmK/lkKbmjqXmlLbljZXmnaHpn7PpopHmlbDmja7jgILosIPnlKggW211dGVQbGF5U3RyZWFtQXVkaW8odHJ1ZSwgc3RyZWFtSUQpXSDlh73mlbDliJnmnKzlnLDnlKjmiLflj6/ku6XmjqXmlLbor6UgXCJzdHJlYW1JRFwiIOS5i+WklueahOWFtuS7lumfs+mikeaVsOaNru+8m+iwg+eUqCBbbXV0ZVBsYXlTdHJlYW1BdWRpbyhmYWxzZSwgc3RyZWFtSUQpXSDlh73mlbDliJnmnKzlnLDnlKjmiLflj6/ku6XmjqXmlLYgXCJzdHJlYW1JRFwiIOeahOmfs+mikeaVsOaNruOAglxuICAgICAqXG4gICAgICogQHBhcmFtIG11dGUg5ouJ5rWB5pe25piv5ZCm5Y+v5Lul5o6l5pS25omA5pyJ6L+c56uv55So5oi355qE6Z+z6aKR5pWw5o2u77yM4oCcdHJ1ZeKAnSDooajnpLrnpoHmraLvvIzigJxmYWxzZeKAnSDooajnpLrmjqXmlLbvvIzpu5jorqTlgLzkuLog4oCcZmFsc2XigJ3jgIJcbiAgICAgKi9cbiAgICBtdXRlQWxsUGxheVN0cmVhbUF1ZGlvKG11dGUpIHtcbiAgICAgICAgcmV0dXJuIFplZ29FeHByZXNzRW5naW5lSW1wbC5nZXRJbnN0YW5jZSgpLm11dGVBbGxQbGF5U3RyZWFtQXVkaW8obXV0ZSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIOaLiea1geaYr+WQpuWPr+aOpeaUtuaJgOacieinhumikeaVsOaNrlxuICAgICAqXG4gICAgICog5pSv5oyB54mI5pys77yaMi40LjAg5Y+K5Lul5LiK44CCXG4gICAgICog6K+m5oOF5o+P6L+w77ya5Zyo5a6e5pe26Z+z6KeG6aKR5LqS5Yqo6L+H56iL5Lit77yM5pys5Zyw55So5oi35Y+v5qC55o2u6ZyA6KaB77yM6YCa6L+H5q2k5Ye95pWw5o6n5Yi25ouJ5rWB5pe25piv5ZCm5o6l5pS25omA5pyJ6L+c56uv55So5oi355qE6KeG6aKR5pWw5o2u77yI5YyF5ous5Zyo6LCD55So6K+l5Ye95pWw5ZCO5paw5Yqg5YWl5oi/6Ze055qE55So5oi35omA5o6o55qE6KeG6aKR5rWB77yJ44CC6buY6K6k5oOF5Ya15LiL77yM55So5oi35Yqg5YWl5oi/6Ze05ZCO5Y+v5Lul5o6l5pS25omA5pyJ6L+c56uv55So5oi35o6o6YCB55qE6KeG6aKR5pWw5o2u44CC5b2T5byA5Y+R6ICF5LiN5o6l5pS26KeG6aKR5pWw5o2u5pe277yM5Y+v6ZmN5L2O56Gs5Lu25ZKM572R57uc55qE5byA6ZSA44CCXG4gICAgICog5Lia5Yqh5Zy65pmv77ya5b2T5byA5Y+R6ICF6ZyA6KaB5b+r6YCf5YWz6Zet44CB5oGi5aSN6KeC55yL6L+c56uv6KeG6aKR55S76Z2i5pe277yM5Y+v6LCD55So5q2k5Ye95pWw44CC55u45q+U6YeN5paw5ouJ5rWB77yM6IO95p6B5aSn6ZmN5L2O6ICX5pe277yM5o+Q5Y2H5LqS5Yqo5L2T6aqM44CCXG4gICAgICog6LCD55So5pe25py677ya5Zyo6LCD55SoIFtjcmVhdGVFbmdpbmVdIOWQjuWPr+iwg+eUqOatpOWHveaVsOOAglxuICAgICAqIOazqOaEj+S6i+mhue+8mlxuICAgICAqICAxLiDmraTmjqXlj6PlnKggU0RLIOeUn+WRveWRqOacn+WGheS4jeiDveWSjCBbbXV0ZUFsbFBsYXlWaWRlb1N0cmVhbXNdIOa3t+eUqOOAglxuICAgICAqICAyLiDlvZPmjIflrprkuI3mjqXmlLbop4bpopHmtYHmlbDmja7ml7bvvIzop4blm77pu5jorqTkv53mjIHlnKjmnIDlkI7kuIDluKfvvIzlpoLmnpzpnIDopoHmuIXpmaTmnIDlkI7kuIDluKfvvIzor7fogZTns7sgWkVHTyDmioDmnK/mlK/mjIHjgIJcbiAgICAgKiDnm7jlhbPmjqXlj6PvvJrlj6/osIPnlKggW211dGVQbGF5U3RyZWFtVmlkZW9dIOWHveaVsOaOp+WItuaYr+WQpuaOpeaUtuWNleadoeinhumikeaVsOaNruOAguW/hemhu+W9kyBbbXV0ZUFsbFBsYXlTdHJlYW1WaWRlb10g5ZKMIFttdXRlUGxheVN0cmVhbVZpZGVvXSDkuKTkuKrlh73mlbDlkIzml7borr7nva7kuLogXCJmYWxzZVwiIOaXtu+8jOacrOWcsOeUqOaIt+aLiea1geaXtuaJjeiDveaOpeaUtui/nOerr+eUqOaIt+eahOinhumikeaVsOaNru+8miAxLiDlvZPosIPnlKggW211dGVBbGxQbGF5U3RyZWFtVmlkZW8odHJ1ZSldIOWHveaVsOaXtu+8jOWFqOWxgOeUn+aViO+8jOWNs+acrOWcsOeUqOaIt+S8muemgeatouaOpeaUtuaJgOaciei/nOerr+eUqOaIt+eahOinhumikeaVsOaNru+8jOatpOaXtuaXoOiuuuWcqCBbbXV0ZUFsbFBsYXlTdHJlYW1WaWRlb10g5LmL5YmN6L+Y5piv5LmL5ZCO6LCD55SoIFttdXRlUGxheVN0cmVhbVZpZGVvXSDlh73mlbDpg73kuI3nlJ/mlYjjgIIgMi4g5b2T6LCD55SoIFttdXRlQWxsUGxheVN0cmVhbVZpZGVvKGZhbHNlKV0g5Ye95pWw5pe277yM5pys5Zyw55So5oi35Y+v5Lul5o6l5pS25omA5pyJ6L+c56uv55So5oi355qE6KeG6aKR5pWw5o2u77yM5q2k5pe25Y+v5YaN6YCa6L+HIFttdXRlUGxheVN0cmVhbVZpZGVvXSDlh73mlbDmjqfliLbmmK/lkKbmjqXmlLbljZXmnaHop4bpopHmlbDmja7jgILosIPnlKggW211dGVQbGF5U3RyZWFtVmlkZW8odHJ1ZSwgc3RyZWFtSUQpXSDlh73mlbDliJnmnKzlnLDnlKjmiLflj6/ku6XmjqXmlLbor6UgXCJzdHJlYW1JRFwiIOS5i+WklueahOWFtuS7luinhumikeaVsOaNru+8m+iwg+eUqCBbbXV0ZVBsYXlTdHJlYW1WaWRlbyhmYWxzZSwgc3RyZWFtSUQpXSDlh73mlbDliJnmnKzlnLDnlKjmiLflj6/ku6XmjqXmlLYgXCJzdHJlYW1JRFwiIOeahOinhumikeaVsOaNruOAglxuICAgICAqIOazqOaEj++8muatpOWHveaVsOS7heWcqCBaZWdvRXhwcmVzc1ZpZGVvIFNESyDkuK3mnInmlYjvvIFcbiAgICAgKlxuICAgICAqIEBwYXJhbSBtdXRlIOaLiea1geaXtuaYr+WQpuWPr+S7peaOpeaUtuaJgOaciei/nOerr+eUqOaIt+eahOinhumikeaVsOaNru+8jOKAnHRydWXigJ0g6KGo56S656aB5q2i77yM4oCcZmFsc2XigJ0g6KGo56S65o6l5pS277yM6buY6K6k5YC85Li6IOKAnGZhbHNl4oCd44CCXG4gICAgICovXG4gICAgbXV0ZUFsbFBsYXlTdHJlYW1WaWRlbyhtdXRlKSB7XG4gICAgICAgIHJldHVybiBaZWdvRXhwcmVzc0VuZ2luZUltcGwuZ2V0SW5zdGFuY2UoKS5tdXRlQWxsUGxheVN0cmVhbVZpZGVvKG11dGUpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiDlvIAv5YWz56Gs5Lu26Kej56CB44CCXG4gICAgICpcbiAgICAgKiDmlK/mjIHniYjmnKzvvJoxLjEuMCDlj4rku6XkuIrjgIJcbiAgICAgKiDor6bmg4Xmj4/ov7DvvJrmi4nmtYHml7bmmK/lkKbkvb/nlKjnoazku7bop6PnoIHvvIzlvIDlkK/noazku7bop6PnoIHlkI4gU0RLIOS8muS9v+eUqCBHUFUg6L+b6KGM6Kej56CB77yM6ZmN5L2OIENQVSDkvb/nlKjnjofjgIJcbiAgICAgKiDkuJrliqHlnLrmma/vvJroi6XlvIDlj5HogIXlnKjmn5DkupvmnLrlnovmtYvor5Xml7blj5HnjrDmi4nlpKfliIbovqjnjofpn7Pop4bpopHmtYHml7borr7lpIflj5Hng63kuKXph43vvIzlj6/ogIPomZHosIPnlKjmraTlh73mlbDlvIDlkK/noazku7bop6PnoIHnmoTmlrnlvI/jgIJcbiAgICAgKiDpu5jorqTlgLzvvJrmnKrosIPnlKjmraTmjqXlj6Pml7bvvIzpu5jorqTlhbPpl63noazop6PjgIJcbiAgICAgKiDosIPnlKjml7bmnLrvvJrmraTlh73mlbDpnIDopoHlnKggW2NyZWF0ZUVuZ2luZV0g5Yib5bu65a6e5L6L5ZCO6LCD55So44CCXG4gICAgICog5L2/55So6ZmQ5Yi277ya5peg44CCXG4gICAgICog5rOo5oSP5LqL6aG577ya5Zyo5ouJ5rWB5YmN6K6+572u5omN6IO955Sf5pWI77yM5aaC5p6c5Zyo5ouJ5rWB5ZCO6K6+572u77yM5YGc5q2i5ouJ5rWB5ZCO6YeN5paw5ouJ5rWB5omN55Sf5pWI77yM5q2k6YWN572u55Sf5pWI5ZCO77yM5Zyo5LiL5qyh6LCD55So55Sf5pWI5YmN5LiA55u05pyJ5pWI44CCXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZW5hYmxlIOaYr+WQpuW8gOWQr+ehrOino+W8gOWFs++8jHRydWUg6KGo56S65byA5ZCv56Gs6Kej77yMZmFsc2Ug6KGo56S65YWz6Zet56Gs6Kej44CCXG4gICAgICovXG4gICAgZW5hYmxlSGFyZHdhcmVEZWNvZGVyKGVuYWJsZSkge1xuICAgICAgICByZXR1cm4gWmVnb0V4cHJlc3NFbmdpbmVJbXBsLmdldEluc3RhbmNlKCkuZW5hYmxlSGFyZHdhcmVEZWNvZGVyKGVuYWJsZSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIOW8gOWni+a3t+a1geS7u+WKoeOAglxuICAgICAqXG4gICAgICog5pSv5oyB54mI5pys77yaMS4yLjEg5Y+K5Lul5LiK44CCXG4gICAgICog6K+m5oOF5o+P6L+w77ya5ZCRIFpFR08gUlRDIOacjeWKoeWZqOWPkei1t+a3t+a1geivt+axgu+8jOacjeWKoeWZqOS8muWvu+aJvuW9k+WJjeato+WcqOaOqOeahOa1ge+8jOW5tuagueaNriBTREsg6K+35rGC55qE5re35rWB5Lu75Yqh55qE5Y+C5pWw6L+b6KGM5Zu+5bGC5re35ZCI44CC5b2T6ZyA6KaB5pu05paw5re35rWB5Lu75Yqh5pe277yM5Y2z6L6T5YWl5rWB5aKe5Yqg5oiW5YeP5bCR5pe26ZyA6KaB5pu05paw6L6T5YWl5rWB5YiX6KGo77yM5q2k5pe25Y+v5Lul5pu05pawIFtaZWdvTWl4ZXJUYXNrXSDlr7nosaEgaW5wdXRMaXN0IOeahOWtl+auteW5tuWGjeasoeiwg+eUqOacrOWHveaVsOS8oOWFpeebuOWQjOeahCBbWmVnb01peGVyVGFza10g5a+56LGh5pu05paw5re35rWB5Lu75Yqh44CCXG4gICAgICog5Lia5Yqh5Zy65pmv77ya5bi455So5LqO6ZyA6KaB5aSa5Liq6KeG6aKR55S76Z2i5ZCI5oiQ5LiA5Liq6KeG6aKR5pe25L2/55So5re35rWB77yM5q+U5aaC5pWZ6IKy57G777yM55u05pKt6ICB5biI5ZKM5a2m55Sf55qE55S76Z2i44CCXG4gICAgICog6LCD55So5pe25py677ya6LCD55SoIFtsb2dpblJvb21dIOeZu+W9leaIv+mXtOWQjuOAglxuICAgICAqIOS9v+eUqOmZkOWItu+8muaXoOOAglxuICAgICAqIOazqOaEj+S6i+mhue+8mueUseS6juWuouaIt+err+iuvuWkh+eahOaAp+iDveiAg+iZke+8jFNESyDnmoTmt7fmtYHmmK/lnKggWkVHTyBSVEMg5pyN5Yqh5Zmo5byA5ZCv5re35rWB5Lu75Yqh6L+b6KGM5re35rWB44CC6Iul6K+35rGC5byA5ZCv5re35rWB5Lu75Yqh5Y+R55Sf5byC5bi477yM5L6L5aaC5pyA5bi46KeB55qE5re35rWB55qE6L6T5YWl5rWB5LiN5a2Y5Zyo77yM5bCG5Lya5LuOIGNhbGxiYWNrIOWbnuiwg+eahOmUmeivr+eggee7meWHuuOAguWFt+S9k+mUmeivr+eggeivt+WPguiAgyDluLjop4HplJnor6/noIHmlofmoaMgaHR0cHM6Ly9kb2MtemguemVnby5pbS96aC80Mzc4Lmh0bWwg6Iul5Lit6YCU5p+Q5p2h6L6T5YWl5rWB5LiN5a2Y5Zyo5LqG77yM5re35rWB5Lu75Yqh5Lya6Ieq5Yqo6YeN6K+V5ouJ6L+Z5p2h6L6T5YWl5rWBIDkwIOenku+8jDkwIOenkuS5i+WQjuS4jeWGjemHjeivleOAguiLpeaJgOaciei+k+WFpea1geWdh+S4jeWtmOWcqOS6hu+8jDkw56eS5LmL5ZCO5pyN5Yqh5Zmo5Lya6Ieq5Yqo5YGc5q2i5re35rWB5Lu75Yqh44CCXG4gICAgICog55u45YWz5Zue6LCD77ya5Y+v6YCa6L+HIFtvbk1peGVyUmVsYXlDRE5TdGF0ZVVwZGF0ZV0g6I635Y+W5re35rWB6L2s5o6oIENETiDnirbmgIHmm7TmlrDpgJrnn6XvvIzlj6/pgJrov4cgW29uTWl4ZXJTb3VuZExldmVsVXBkYXRlXSDojrflj5bmt7fmtYHkuK3nmoTmr4/mnaHljZXmtYHnmoTlo7Dmtarmm7TmlrDpgJrnn6XjgIJcbiAgICAgKiDnm7jlhbPmjqXlj6PvvJrlj6/pgJrov4cgW3N0b3BNaXhlclRhc2tdIOWHveaVsOWBnOatoua3t+a1geOAglxuICAgICAqXG4gICAgICogQHBhcmFtIHRhc2sg5re35rWB5Lu75Yqh5a+56LGh44CC5piv5ZCm5b+F5aGr77ya5piv44CCXG4gICAgICogQHJldHVybiDlvIDlp4vmt7fmtYHku7vliqHnu5PmnpxcbiAgICAgKi9cbiAgICBzdGFydE1peGVyVGFzayh0YXNrKSB7XG4gICAgICAgIHJldHVybiBaZWdvRXhwcmVzc0VuZ2luZUltcGwuZ2V0SW5zdGFuY2UoKS5zdGFydE1peGVyVGFzayh0YXNrKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICog5YGc5q2i5re35rWB5Lu75Yqh44CCXG4gICAgICpcbiAgICAgKiDmlK/mjIHniYjmnKzvvJoxLjIuMSDlj4rku6XkuIrjgIJcbiAgICAgKiDor6bmg4Xmj4/ov7DvvJrlkJEgWkVHTyBSVEMg5pyN5Yqh5Zmo5Y+R6LW357uT5p2f5re35rWB6K+35rGC44CCXG4gICAgICog5Lia5Yqh5Zy65pmv77ya5bi455So5LqO6ZyA6KaB5aSa5Liq6KeG6aKR55S76Z2i5ZCI5oiQ5LiA5Liq6KeG6aKR5pe25L2/55So5re35rWB77yM5q+U5aaC5pWZ6IKy57G777yM55u05pKt6ICB5biI5ZKM5a2m55Sf55qE55S76Z2i44CCXG4gICAgICog6LCD55So5pe25py677ya6LCD55SoIFtzdGFydE1peGVyVGFza10g5byA5aeL5re35rWB5ZCO44CCXG4gICAgICog5L2/55So6ZmQ5Yi277ya5peg44CCXG4gICAgICog5rOo5oSP5LqL6aG577ya6Iul5byA5Y+R6ICF5Zyo5pyq5YGc5q2i5LiK5LiA5Liq5re35rWB5Lu75Yqh55qE5oOF5Ya15LiL5ZCv5Yqo5LiL5LiA5Liq5re35rWB5Lu75Yqh77yM5LiK5LiA5Liq5re35rWB5Lu75Yqh5LiN5Lya6Ieq5Yqo5YGc5q2i77yM55u05Yiw5LiK5LiA5Liq5re35rWB5Lu75Yqh55qE6L6T5YWl5rWB5oyB57utIDkwIOenkumDveS4jeWtmOWcqOS5i+WQjuOAguWcqOWQr+WKqOS4i+S4gOS4qua3t+a1geS7u+WKoeWJje+8jOW6lOW9k+WFiOWBnOatouS4iuS4gOS4qua3t+a1geS7u+WKoe+8jOS7peWFjeW9k+S4gOS4quS4u+aSreW3sue7j+W8gOWQr+S4i+S4gOS4qua3t+a1geS7u+WKoeS4juWFtuS7luS4u+aSrea3t+a1geaXtu+8jOinguS8l+S+neeEtuWcqOaLieS4iuS4gOS4qua3t+a1geS7u+WKoeeahOi+k+WHuua1geOAglxuICAgICAqIOebuOWFs+aOpeWPo++8muWPr+mAmui/hyBbc3RhcnRNaXhlclRhc2tdIOWHveaVsOW8gOWni+a3t+a1geOAglxuICAgICAqXG4gICAgICogQHBhcmFtIHRhc2sg5re35rWB5Lu75Yqh5a+56LGh44CC5piv5ZCm5b+F5aGr77ya5piv44CCXG4gICAgICogQHJldHVybiDlgZzmraLmt7fmtYHku7vliqHnu5PmnpxcbiAgICAgKi9cbiAgICBzdG9wTWl4ZXJUYXNrKHRhc2spIHtcbiAgICAgICAgcmV0dXJuIFplZ29FeHByZXNzRW5naW5lSW1wbC5nZXRJbnN0YW5jZSgpLnN0b3BNaXhlclRhc2sodGFzayk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIOW8gOWni+iHquWKqOa3t+a1geS7u+WKoVxuICAgICAqXG4gICAgICog5pSv5oyB54mI5pys77yaMi4xMC4wIOWPiuS7peS4iuOAglxuICAgICAqIOivpuaDheaPj+i/sO+8muacrOWcsOeUqOaIt+WPr+iwg+eUqOivpeWHveaVsOW8gOWni+iHquWKqOa3t+a1geS7u+WKoe+8jOWvueaIv+mXtOWGheeahOaJgOaciea1gei/m+ihjOa3t+a1ge+8jOebruWJjeS7heaUr+aMgemfs+mikea1geiHquWKqOa3t+a1geOAguWQr+WKqOiHquWKqOa3t+a1geWQju+8jOS8muiHquWKqOa3t+a1geivpeaIv+mXtOWGheaJgOaciea1geeahOmfs+mike+8jOatpOaIv+mXtOWGheWGjeWPkei1t+eahOaOqOa1geS5n+S8muiHquWKqOa3t+WFpeacgOWQjueahOi+k+WHuua1geS4reOAglxuICAgICAqIOS4muWKoeWcuuaZr++8muW4uOeUqOS6juivreiBiuaIv+WcuuaZr+S4i++8jOmcgOimgeeUseWuouaIt+err+WPkei1t+iHquWKqOa3t+a1geS7u+WKoeaXtuOAglxuICAgICAqIOiwg+eUqOaXtuacuu+8muWcqOWIm+W7uuW8leaTjuWQju+8jOWmguaenOebruagh+aIv+mXtOW3sue7j+WIm+W7uu+8jOWPr+iwg+eUqOivpeWHveaVsOWcqOebruagh+aIv+mXtOW8gOWQr+iHquWKqOa3t+a1geOAglxuICAgICAqIOazqOaEj+S6i+mhue+8muWcqOWQjOS4gOS4quaIv+mXtOWGheW8gOWQr+S4i+S4gOS4quiHquWKqOa3t+a1geS7u+WKoeWJje+8jOivt+WFiOiwg+eUqCBbc3RvcEF1dG9NaXhlclRhc2tdIOWHveaVsOe7k+adn+S4iuS4gOasoeiHquWKqOa3t+a1geS7u+WKoe+8jOS7peWFjemAoOaIkOW9k+S4gOS4quS4u+aSreW3sue7j+W8gOWQr+S4i+S4gOS4quiHquWKqOa3t+a1geS7u+WKoeS4juWFtuS7luS4u+aSrea3t+a1geaXtu+8jOinguS8l+S+neeEtuWcqOS4gOebtOaLieS4iuS4gOS4quiHquWKqOa3t+a1geS7u+WKoeeahOi+k+WHuua1geeahOaDheWGteOAguiLpeeUqOaIt+acquS4u+WKqOe7k+adn+W9k+WJjeiHquWKqOa3t+a1geS7u+WKoe+8jOivpeS7u+WKoeWwhuWcqOaIv+mXtOS4jeWtmOWcqOS5i+WQjuaIluiAhei+k+WFpea1geaMgee7rSA5MCDnp5LkuI3lrZjlnKjkuYvlkI7oh6rliqjnu5PmnZ/jgIJcbiAgICAgKiDnm7jlhbPlm57osIPvvJrpgJrov4cgW1plZ29NaXhlclN0YXJ0Q2FsbGJhY2tdIOWbnuiwg++8jOeUqOaIt+WPr+S7peiOt+WPluWHveaVsOaJp+ihjOe7k+aenOOAgumAmui/hyBbb25BdXRvTWl4ZXJTb3VuZExldmVsVXBkYXRlXSDlm57osIPvvIznlKjmiLflj6/ku6Xojrflj5boh6rliqjmt7fmtYHlkI7lo7Dmtarkv6Hmga/jgIJcbiAgICAgKiDnm7jlhbPmjqXlj6PvvJrlj6/osIPnlKggW3N0b3BBdXRvTWl4ZXJUYXNrXSDlh73mlbDvvIzlgZzmraLoh6rliqjmt7fmtYHku7vliqHjgIJcbiAgICAgKlxuICAgICAqIEBwYXJhbSB0YXNrIOiHquWKqOa3t+a1geS7u+WKoeWvueixoVxuICAgICAqIEByZXR1cm4g5byA5aeL6Ieq5Yqo5re35rWB5Lu75Yqh57uT5p6c6YCa55+lXG4gICAgICovXG4gICAgc3RhcnRBdXRvTWl4ZXJUYXNrKHRhc2spIHtcbiAgICAgICAgcmV0dXJuIFplZ29FeHByZXNzRW5naW5lSW1wbC5nZXRJbnN0YW5jZSgpLnN0YXJ0QXV0b01peGVyVGFzayh0YXNrKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICog5YGc5q2i6Ieq5Yqo5re35rWB5Lu75YqhXG4gICAgICpcbiAgICAgKiDmlK/mjIHniYjmnKzvvJoyLjEwLjAg5Y+K5Lul5LiK44CCXG4gICAgICog6K+m5oOF5o+P6L+w77ya5pys5Zyw55So5oi35Y+v6LCD55So6K+l5Ye95pWw57uT5p2f6Ieq5Yqo5re35rWB5Lu75Yqh44CCXG4gICAgICog5Lia5Yqh5Zy65pmv77ya5bi455So5LqO6K+t6IGK5oi/5Zy65pmv5LiL77yM6ZyA6KaB55Sx5a6i5oi356uv5Y+R6LW36Ieq5Yqo5re35rWB5Lu75Yqh5pe244CCXG4gICAgICog6LCD55So5pe25py677ya5Zyo6LCD55SoIFtzdGFydEF1dG9NaXhlclRhc2tdIOWHveaVsOW8gOWQr+iHquWKqOa3t+a1geS7u+WKoeWQjuWPr+iwg+eUqOivpeWHveaVsOOAglxuICAgICAqIOazqOaEj+S6i+mhue+8muWcqOWQjOS4gOS4quaIv+mXtOWGheiwg+eUqCBbc3RhcnRBdXRvTWl4ZXJUYXNrXSDlh73mlbDlvIDlkK/kuIvkuIDkuKroh6rliqjmt7fmtYHku7vliqHliY3vvIzor7flhYjosIPnlKjmraTlh73mlbDnu5PmnZ/kuIrkuIDmrKHoh6rliqjmt7fmtYHku7vliqHvvIzku6XlhY3pgKDmiJDlvZPkuIDkuKrkuLvmkq3lt7Lnu4/lvIDlkK/kuIvkuIDkuKroh6rliqjmt7fmtYHku7vliqHkuI7lhbbku5bkuLvmkq3mt7fmtYHml7bvvIzop4LkvJfkvp3nhLblnKjkuIDnm7Tmi4nkuIrkuIDkuKroh6rliqjmt7fmtYHku7vliqHnmoTovpPlh7rmtYHnmoTmg4XlhrXjgILoi6XnlKjmiLfmnKrkuLvliqjnu5PmnZ/lvZPliY3oh6rliqjmt7fmtYHku7vliqHvvIzor6Xku7vliqHlsIblnKjmiL/pl7TkuI3lrZjlnKjkuYvlkI7miJbogIXovpPlhaXmtYHmjIHnu60gOTAg56eS5LiN5a2Y5Zyo5LmL5ZCO6Ieq5Yqo57uT5p2f44CCXG4gICAgICog55u45YWz5Zue6LCD77ya6YCa6L+HIFtaZWdvTWl4ZXJTdG9wQ2FsbGJhY2tdIOWbnuiwg++8jOeUqOaIt+WPr+S7peiOt+WPluWHveaVsOaJp+ihjOe7k+aenOOAglxuICAgICAqIOebuOWFs+aOpeWPo++8muWPr+iwg+eUqCBbc3RhcnRBdXRvTWl4ZXJUYXNrXSDlh73mlbDvvIzlvIDlp4voh6rliqjmt7fmtYHku7vliqHjgIJcbiAgICAgKlxuICAgICAqIEBwYXJhbSB0YXNrIOiHquWKqOa3t+a1geS7u+WKoeWvueixoVxuICAgICAqIEByZXR1cm4g5YGc5q2i6Ieq5Yqo5re35rWB5Lu75Yqh57uT5p6c6YCa55+lXG4gICAgICovXG4gICAgc3RvcEF1dG9NaXhlclRhc2sodGFzaykge1xuICAgICAgICByZXR1cm4gWmVnb0V4cHJlc3NFbmdpbmVJbXBsLmdldEluc3RhbmNlKCkuc3RvcEF1dG9NaXhlclRhc2sodGFzayk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIOiuvue9ruaYr+WQpumdmemfs++8iOWFs+mXrem6puWFi+mjju+8ieOAglxuICAgICAqXG4gICAgICog5pSv5oyB54mI5pys77yaMS4xLjAg5Y+K5Lul5LiK44CCXG4gICAgICog6K+m5oOF5o+P6L+w77ya5q2k5Ye95pWw55So5LqO5o6n5Yi25piv5ZCm5L2/55So6YeH6ZuG5Yiw55qE6Z+z6aKR5pWw5o2u77yM6Z2Z6Z+z77yI5YWz6Zet6bqm5YWL6aOO77yJ5bCG5Lya5L2/55So6Z2Z6Z+z5pWw5o2u5pu/5o2i6K6+5aSH6YeH6ZuG5Yiw55qE6Z+z6aKR5pWw5o2u6L+b6KGM5o6o5rWB77yM5q2k5pe25LuN54S25Lya5Y2g55So6bqm5YWL6aOO6K6+5aSH44CCXG4gICAgICog5Lia5Yqh5Zy65pmv77ya55So5oi35LuF5YWz6Zet6bqm5YWL6aOO6YeH6ZuG55qE5Lq65aOw77yM5LiN5YWz6Zet5aqS5L2T5pKt5pS+5Zmo55qE6Z+z5LmQ5aOw6Z+z77yM5Y+v5Lul6LCD55So6K+l5o6l5Y+j44CC6K+l5o6l5Y+j5b2x5ZONIFtvbkJlZm9yZUF1ZGlvUHJlcEF1ZGlvRGF0YV3jgIJcbiAgICAgKiDpu5jorqTlgLzvvJrpu5jorqTkuLogXCJmYWxzZVwi77yM5Y2z5LiN6Z2Z6Z+z44CCXG4gICAgICog6LCD55So5pe25py677ya5Zyo5Yib5bu65byV5pOOIFtjcmVhdGVFbmdpbmVdIOWQjuOAglxuICAgICAqIOS9v+eUqOmZkOWItu+8muaXoOOAglxuICAgICAqIOebuOWFs+aOpeWPo++8muiLpeaDs+imgeecn+ato+iuqSBTREsg5pS+5byD5Y2g55So6bqm5YWL6aOO77yM5L6L5aaC5a6e546wIEFwcCDpgIDliLDlkI7lj7DlkI7ph4rmlL7puqblhYvpo47ljaDnlKjnrYnlip/og73vvIzlj6/osIPnlKggW2VuYWJsZUF1ZGlvQ2FwdHVyZURldmljZV0g5Ye95pWw5byA5YWz6Z+z6aKR6YeH6ZuG6K6+5aSH44CC5Y+v5L2/55SoIFtpc01pY3JvcGhvbmVNdXRlZF0g5p2l5qOA5p+l6bqm5YWL6aOO5piv5ZCm6Z2Z6Z+z44CCXG4gICAgICpcbiAgICAgKiBAcGFyYW0gbXV0ZSDmmK/lkKbpnZnpn7PvvIjlhbPpl63puqblhYvpo47vvInvvJtcInRydWVcIiDooajnpLrpnZnpn7PvvIjlhbPpl63puqblhYvpo47vvInvvJtcImZhbHNlXCIg6KGo56S65byA5ZCv6bqm5YWL6aOO44CCXG4gICAgICovXG4gICAgbXV0ZU1pY3JvcGhvbmUobXV0ZSkge1xuICAgICAgICByZXR1cm4gWmVnb0V4cHJlc3NFbmdpbmVJbXBsLmdldEluc3RhbmNlKCkubXV0ZU1pY3JvcGhvbmUobXV0ZSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIOajgOafpem6puWFi+mjjuaYr+WQpuiuvue9ruS4uumdmemfs+OAglxuICAgICAqXG4gICAgICog5pSv5oyB54mI5pys77yaMS4xLjAg5Y+K5Lul5LiK44CCXG4gICAgICog6K+m5oOF5o+P6L+w77ya55So5LqO5Yik5pat6bqm5YWL6aOO5piv5ZCm6KKr6K6+572u5Li66Z2Z6Z+z44CCXG4gICAgICog6LCD55So5pe25py677ya5Zyo5Yib5bu65byV5pOOIFtjcmVhdGVFbmdpbmVdIOWQjuOAglxuICAgICAqIOS9v+eUqOmZkOWItu+8muaXoOOAglxuICAgICAqIOebuOWFs+aOpeWPo++8mlttdXRlTWljcm9waG9uZV3jgIJcbiAgICAgKlxuICAgICAqIEByZXR1cm4g6bqm5YWL6aOO5piv5ZCm6Z2Z6Z+z77ybXCJ0cnVlXCIg6KGo56S66bqm5YWL6aOO6Z2Z6Z+z77ybXCJmYWxzZVwiIOihqOekuum6puWFi+mjjuW8gOWQr+S4re+8iOayoeacieiiq+mdmemfs++8ieOAglxuICAgICAqL1xuICAgIGlzTWljcm9waG9uZU11dGVkKCkge1xuICAgICAgICByZXR1cm4gWmVnb0V4cHJlc3NFbmdpbmVJbXBsLmdldEluc3RhbmNlKCkuaXNNaWNyb3Bob25lTXV0ZWQoKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICog6K6+572u5piv5ZCm6Z2Z6Z+z77yI5YWz6Zet6Z+z6aKR6L6T5Ye677yJ44CCXG4gICAgICpcbiAgICAgKiDmlK/mjIHniYjmnKzvvJoxLjEuMCDlj4rku6XkuIrjgIJcbiAgICAgKiDor6bmg4Xmj4/ov7DvvJrorr7nva7pnZnpn7PlkI7vvIxTREsg5omA5pyJ5aOw6Z+z6YO95LiN5Lya5pKt5pS+77yM5YyF5ous5ouJ5rWB44CB5aqS5L2T5pKt5pS+5Zmo562J44CCXG4gICAgICog6buY6K6k5YC877ya6buY6K6k5Li6IFwiZmFsc2VcIu+8jOWNs+S4jemdmemfs+OAglxuICAgICAqIOiwg+eUqOaXtuacuu+8muWcqOWIm+W7uuW8leaTjiBbY3JlYXRlRW5naW5lXSDlkI7jgIJcbiAgICAgKiDkvb/nlKjpmZDliLbvvJrml6DjgIJcbiAgICAgKlxuICAgICAqIEBwYXJhbSBtdXRlIOaYr+WQpumdmemfsyjlhbPpl63pn7PpopHovpPlh7op77ybXCJ0cnVlXCIg6KGo56S66Z2Z6Z+zKOWFs+mXremfs+mikei+k+WHuinvvJtcImZhbHNlXCIg6KGo56S65byA5ZCv6Z+z6aKR6L6T5Ye644CCXG4gICAgICovXG4gICAgbXV0ZVNwZWFrZXIobXV0ZSkge1xuICAgICAgICByZXR1cm4gWmVnb0V4cHJlc3NFbmdpbmVJbXBsLmdldEluc3RhbmNlKCkubXV0ZVNwZWFrZXIobXV0ZSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIOajgOafpemfs+mikei+k+WHuuaYr+WQpumdmemfs+OAglxuICAgICAqXG4gICAgICog5pSv5oyB54mI5pys77yaMS4xLjAg5Y+K5Lul5LiK44CCXG4gICAgICog6K+m5oOF5o+P6L+w77ya55So5LqO5Yik5pat6Z+z6aKR6L6T5Ye65piv5ZCm6Z2Z6Z+z44CCXG4gICAgICog6LCD55So5pe25py677ya5Zyo5Yib5bu65byV5pOOIFtjcmVhdGVFbmdpbmVdIOWQjuOAglxuICAgICAqIOS9v+eUqOmZkOWItu+8muaXoOOAglxuICAgICAqIOebuOWFs+aOpeWPo++8mlttdXRlU3BlYWtlcl3jgIJcbiAgICAgKlxuICAgICAqIEByZXR1cm4g6Z+z6aKR6L6T5Ye65piv5ZCm6Z2Z6Z+z77ybXCJ0cnVlXCIg6KGo56S66Z+z6aKR6L6T5Ye66Z2Z6Z+z77ybXCJmYWxzZVwiIOihqOekuumfs+mikei+k+WHuuW8gOWQr+S4re+8iOayoeacieiiq+mdmemfs++8ieOAglxuICAgICAqL1xuICAgIGlzU3BlYWtlck11dGVkKCkge1xuICAgICAgICByZXR1cm4gWmVnb0V4cHJlc3NFbmdpbmVJbXBsLmdldEluc3RhbmNlKCkuaXNTcGVha2VyTXV0ZWQoKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICog5byAL+WFs+mfs+mikemHh+mbhuiuvuWkh+OAglxuICAgICAqXG4gICAgICog5pSv5oyB54mI5pys77yaMS4xLjAg5Y+K5Lul5LiK44CCXG4gICAgICog6K+m5oOF5o+P6L+w77ya5q2k5Ye95pWw55So5LqO5o6n5Yi25piv5ZCm5L2/55So6Z+z6aKR6YeH6ZuG6K6+5aSH44CC5aaC5p6c5YWz6Zet6Z+z6aKR6YeH6ZuG6K6+5aSH77yM5YiZIFNESyDkuI3kvJrlho3ljaDnlKjpn7PpopHorr7lpIfvvIzlvZPnhLblpoLmnpzmraTml7bmraPlnKjmjqjmtYHvvIzpu5jorqTmg4XlhrXkuIvkvJrkvb/nlKjpnZnpn7PmlbDmja7lgZrkuLrpn7PpopHmlbDmja7ov5vooYzmjqjmtYHjgIJcbiAgICAgKiDkvb/nlKjlnLrmma/vvJrlvZPnlKjmiLfku47kuI3pnIDopoHnlKjliLDpn7PpopHnmoTml7blgJnvvIzlj6/ku6XosIPnlKjmraTlh73mlbDlhbPpl63pn7PpopHph4fpm4bjgIJcbiAgICAgKiDpu5jorqTlgLzvvJrpu5jorqTkuLogXCJ0cnVlXCLjgIJcbiAgICAgKiDosIPnlKjml7bmnLrvvJrlnKjliJvlu7rlvJXmk44gW2NyZWF0ZUVuZ2luZV0g5ZCO44CCXG4gICAgICog5L2/55So6ZmQ5Yi277ya5peg44CCXG4gICAgICog55u45YWz5o6l5Y+j77ya56Gs5Lu25LiK5YWz6Zet5oiW5omT5byA6bqm5YWL6aOO5piv6ICX5pe25pON5L2c77yM55So5oi36aKR57mB5pON5L2c5pe25pyJ5LiA5a6a55qE5oCn6IO95byA6ZSA77yM5LiA6Iis5o6o6I2Q5L2/55SoIFttdXRlTWljcm9waG9uZV3jgIJcbiAgICAgKlxuICAgICAqIEBwYXJhbSBlbmFibGUg5piv5ZCm5byA5ZCv6Z+z6aKR6YeH6ZuG6K6+5aSH77ybXCJ0cnVlXCIg6KGo56S65omT5byA6Z+z6aKR6YeH6ZuG6K6+5aSH77ybXCJmYWxzZVwiIOihqOekuuWFs+mXremfs+mikemHh+mbhuiuvuWkh+OAglxuICAgICAqL1xuICAgIGVuYWJsZUF1ZGlvQ2FwdHVyZURldmljZShlbmFibGUpIHtcbiAgICAgICAgcmV0dXJuIFplZ29FeHByZXNzRW5naW5lSW1wbC5nZXRJbnN0YW5jZSgpLmVuYWJsZUF1ZGlvQ2FwdHVyZURldmljZShlbmFibGUpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiDojrflj5blvZPliY3pn7PpopHot6/nlLHjgIJcbiAgICAgKlxuICAgICAqIOaUr+aMgeeJiOacrO+8mjEuMS4wIOWPiuS7peS4iuOAglxuICAgICAqIOivpuaDheaPj+i/sO+8mumfs+mikei3r+eUseaYr+aMhyBBcHAg5Zyo5pKt5pS+6Z+z6aKR5pe25L2/55So55qE6Z+z6aKR6L6T5Ye66K6+5aSH77yM5bi46KeB55qE6Z+z6aKR6Lev55Sx5pyJ77ya5oms5aOw5Zmo44CB5ZCs562S44CB6ICz5py644CB6JOd54mZ6K6+5aSH562J44CCXG4gICAgICog6LCD55So5pe25py677ya5Zyo5Yib5bu65byV5pOOIFtjcmVhdGVFbmdpbmVdIOWQjuOAglxuICAgICAqIOS9v+eUqOmZkOWItu+8mndpbiDmiJYgbWFjIOW5s+WPsOS4i+S4jeaUr+aMgeOAglxuICAgICAqIOebuOWFs+aOpeWPo++8muiuvue9rumfs+mikei3r+eUseWIsOaJrOWjsOWZqCBbc2V0QXVkaW9Sb3V0ZVRvU3BlYWtlcl3jgIJcbiAgICAgKi9cbiAgICBnZXRBdWRpb1JvdXRlVHlwZSgpIHtcbiAgICAgICAgcmV0dXJuIFplZ29FeHByZXNzRW5naW5lSW1wbC5nZXRJbnN0YW5jZSgpLmdldEF1ZGlvUm91dGVUeXBlKCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIOiuvue9rumfs+mikei3r+eUseWIsOaJrOWjsOWZqOOAglxuICAgICAqXG4gICAgICog5pSv5oyB54mI5pys77yaMS4xLjAg5Y+K5Lul5LiK44CCXG4gICAgICog6K+m5oOF5o+P6L+w77ya5piv5ZCm5L2/55So5oms5aOw5Zmo5pKt5pS+6Z+z6aKR77yM5b2T6YCJ5oup5LiN5L2/55So5YaF572u5oms5aOw5Zmo5pKt5pS+5aOw6Z+z5pe277yMU0RLIOS8muagueaNruezu+e7n+iwg+W6pumAieaLqeW9k+WJjeS8mOWFiOe6p+acgOmrmOeahOmfs+mikei+k+WHuuiuvuWkh+aSreaUvuWjsOmfs++8jOW4uOingeeahOmfs+mikei3r+eUseacie+8muWQrOetkuOAgeiAs+acuuOAgeiTneeJmeiuvuWkh+etieOAglxuICAgICAqIOiwg+eUqOaXtuacuu+8muWcqOWIm+W7uuW8leaTjiBbY3JlYXRlRW5naW5lXSDlkI7jgIJcbiAgICAgKiDkvb/nlKjpmZDliLbvvJrlj6rmlK/mjIHlkKznrZLlkozmiazlo7DlmajnmoTliIfmjaLvvIzlpoLmnpzmmK/ok53niZnogLPmnLrmiJbogIXmnInnur/ogLPmnLrkuI3mlK/mjIHpgJrov4for6XmjqXlj6Pot6/nlLHliLDmiazlo7DlmajjgIJcbiAgICAgKiDnm7jlhbPmjqXlj6PvvJrojrflj5blvZPliY3pn7PpopHot6/nlLEgW2dldEF1ZGlvUm91dGVUeXBlXeOAglxuICAgICAqXG4gICAgICogQHBhcmFtIGRlZmF1bHRUb1NwZWFrZXIg5piv5ZCm5L2/55So5YaF572u5oms5aOw5Zmo5pKt5pS+5aOw6Z+z77yMXCJ0cnVlXCIg6KGo56S65L2/55So5YaF572u5oms5aOw5Zmo5pKt5pS+5aOw6Z+z77yMXCJmYWxzZVwiIOihqOekuuS9v+eUqOW9k+WJjeezu+e7n+iwg+W6pueahOS8mOWFiOe6p+acgOmrmOeahOmfs+mikei+k+WHuuiuvuWkh+aSreaUvuWjsOmfs+OAglxuICAgICAqL1xuICAgIHNldEF1ZGlvUm91dGVUb1NwZWFrZXIoZGVmYXVsdFRvU3BlYWtlcikge1xuICAgICAgICByZXR1cm4gWmVnb0V4cHJlc3NFbmdpbmVJbXBsLmdldEluc3RhbmNlKCkuc2V0QXVkaW9Sb3V0ZVRvU3BlYWtlcihkZWZhdWx0VG9TcGVha2VyKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICog5byAL+WFs+aRhOWDj+WktO+8jOaUr+aMgeiuvue9ruWFtuS7lumAmumBk+eahOaOqOa1geOAglxuICAgICAqXG4gICAgICog5pSv5oyB54mI5pys77yaMS4xLjAg5Y+K5Lul5LiK44CCXG4gICAgICog6K+m5oOF5o+P6L+w77ya5q2k5Ye95pWw55So5LqO5o6n5Yi25piv5ZCm5ZCv5Yqo5pGE5YOP5aS055qE6YeH6ZuG77yM5YWz6Zet5pGE5YOP5aS05ZCO77yM5bCG5LiN5Lya6L+b6KGM6KeG6aKR6YeH6ZuG77yM5q2k5pe25pys5Zyw6aKE6KeI5ZKM5o6o5rWB6YO95bCG5rKh5pyJ6KeG6aKR5pWw5o2u44CCXG4gICAgICog6buY6K6k5YC877ya6buY6K6k5Li6IFwidHJ1ZVwi77yM5Y2z5omT5byA5pGE5YOP5aS044CCXG4gICAgICog6LCD55So5pe25py677ya5Zyo5Yib5bu65byV5pOOIFtjcmVhdGVFbmdpbmVdIOWQjuOAglxuICAgICAqIOS9v+eUqOmZkOWItu+8muaXoOOAglxuICAgICAqIOazqOaEj+S6i+mhue+8muWcqOS9v+eUqOiHquWumuS5ieinhumikemHh+mbhuWKn+iDvSBbZW5hYmxlQ3VzdG9tVmlkZW9DYXB0dXJlXSDnmoTmg4XlhrXkuIvvvIznlLHkuo7lvIDlj5HogIXmjqXnrqHkuobop4bpopHmlbDmja7nmoTph4fpm4bvvIxTREsg5LiN5YaN6LSf6LSj6KeG6aKR5pWw5o2u55qE6YeH6ZuG77yM5L2G5q2k5Ye95pWw5L6d54S25Lya5b2x5ZON5piv5ZCm6L+b6KGM57yW56CB55qE6KGM5Li644CC5Zug5q2k5byA5Y+R6ICF5L2/55So6Ieq5a6a5LmJ6KeG6aKR6YeH6ZuG5pe277yM6K+356Gu5L+d5q2k5Ye95pWw55qE5YC85Li6IFwidHJ1ZVwi44CCXG4gICAgICog5rOo5oSP77ya5q2k5Ye95pWw5LuF5ZyoIFplZ29FeHByZXNzVmlkZW8gU0RLIOS4reacieaViO+8gVxuICAgICAqXG4gICAgICogQHBhcmFtIGVuYWJsZSDmmK/lkKbmiZPlvIDmkYTlg4/lpLTvvJtcInRydWVcIiDooajnpLrmiZPlvIDmkYTlg4/lpLTvvJtcImZhbHNlXCIg6KGo56S65YWz6Zet5pGE5YOP5aS044CCXG4gICAgICogQHBhcmFtIGNoYW5uZWwg5o6o5rWB6YCa6YGTXG4gICAgICovXG4gICAgZW5hYmxlQ2FtZXJhKGVuYWJsZSwgY2hhbm5lbCkge1xuICAgICAgICByZXR1cm4gWmVnb0V4cHJlc3NFbmdpbmVJbXBsLmdldEluc3RhbmNlKCkuZW5hYmxlQ2FtZXJhKGVuYWJsZSwgY2hhbm5lbCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIOWIh+aNouWJjeWQjuaRhOWDj+WktO+8jOaUr+aMgeiuvue9ruWFtuS7lumAmumBk+eahOaOqOa1geOAglxuICAgICAqXG4gICAgICog5pSv5oyB54mI5pys77yaMS4xLjAg5Y+K5Lul5LiK44CCXG4gICAgICog6K+m5oOF5o+P6L+w77ya5q2k5Ye95pWw55So5LqO5o6n5Yi25L2/55So5YmN572u5pGE5YOP5aS05oiW6ICF5ZCO572u5pGE5YOP5aS0KOS7hSBBbmRyb2lkIOWSjCBpT1Mg5pSv5oyBKeOAglxuICAgICAqIOm7mOiupOWAvO+8mum7mOiupOS4uiBcInRydWVcIu+8jOWNs+S9v+eUqOWJjee9ruaRhOWDj+WktOOAglxuICAgICAqIOiwg+eUqOaXtuacuu+8muWcqOWIm+W7uuW8leaTjiBbY3JlYXRlRW5naW5lXSDlkI7jgIJcbiAgICAgKiDkvb/nlKjpmZDliLbvvJrml6DjgIJcbiAgICAgKiDms6jmhI/kuovpobnvvJrlnKjlvIDlkK/oh6rlrprkuYnop4bpopHph4fpm4blip/og70gW2VuYWJsZUN1c3RvbVZpZGVvQ2FwdHVyZV0g55qE5oOF5Ya15LiL77yM55Sx5LqO5byA5Y+R6ICF5o6l566h5LqG6KeG6aKR5pWw5o2u55qE6YeH6ZuG77yMU0RL5LiN5YaN6LSf6LSj6KeG6aKR5pWw5o2u55qE6YeH6ZuG77yM5pys5Ye95pWw5LiN5YaN5pyJ5pWI44CCXG4gICAgICog5rOo5oSP77ya5q2k5Ye95pWw5LuF5ZyoIFplZ29FeHByZXNzVmlkZW8gU0RLIOS4reacieaViO+8gVxuICAgICAqXG4gICAgICogQHBhcmFtIGVuYWJsZSDmmK/lkKbph4fnlKjliY3nva7mkYTlg4/lpLTvvJtcInRydWVcIiDooajnpLrkvb/nlKjliY3nva7mkYTlg4/lpLTvvJtcImZhbHNlXCIg6KGo56S65L2/55So5ZCO572u5pGE5YOP5aS044CCXG4gICAgICogQHBhcmFtIGNoYW5uZWwg5o6o5rWB6YCa6YGTXG4gICAgICovXG4gICAgdXNlRnJvbnRDYW1lcmEoZW5hYmxlLCBjaGFubmVsKSB7XG4gICAgICAgIHJldHVybiBaZWdvRXhwcmVzc0VuZ2luZUltcGwuZ2V0SW5zdGFuY2UoKS51c2VGcm9udENhbWVyYShlbmFibGUsIGNoYW5uZWwpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiDorr7nva7mkYTlg4/lpLTlj5jnhKblgI3mlbDvvIzmlK/mjIHmjIflrprmjqjmtYHpgJrpgZPlj7fjgILmr4/mrKHmkYTlg4/lpLTph43mlrDlkK/liqjml7bvvIzmkYTlg4/lpLTlj5jnhKblgI3mlbDpg73lsIbkvJrmgaLlpI3liJ3lp4vlgLwgKDEuMCnjgIJcbiAgICAgKlxuICAgICAqIOaUr+aMgeeJiOacrO+8mjEuMjAuMCDlj4rku6XkuIrjgIJcbiAgICAgKiDor6bmg4Xmj4/ov7DvvJrorr7nva7mkYTlg4/lpLTlj5jnhKblgI3mlbDjgIJcbiAgICAgKiDosIPnlKjml7bmnLrvvJrlnKjlvIDlkK/pooTop4ggW3N0YXJ0UHJldmlld10g5ZCO6LCD55So44CCXG4gICAgICog5L2/55So6ZmQ5Yi277ya5pGE5YOP5aS05ZCv5Yqo5ZCO6K6+572u5omN55Sf5pWI44CCXG4gICAgICog5rOo5oSP77ya5q2k5Ye95pWw5LuF5ZyoIFplZ29FeHByZXNzVmlkZW8gU0RLIOS4reacieaViO+8gVxuICAgICAqXG4gICAgICogQHBhcmFtIGZhY3RvciDmkYTlg4/lpLTlj5jnhKblgI3mlbDvvIzmnIDlsI/lgLzkuLogMS4w77yM5pyA5aSn5YC85Li6IFtnZXRDYW1lcmFNYXhab29tRmFjdG9yXSDnmoTov5Tlm57lgLzjgIJcbiAgICAgKiBAcGFyYW0gY2hhbm5lbCDmjqjmtYHpgJrpgZNcbiAgICAgKi9cbiAgICBzZXRDYW1lcmFab29tRmFjdG9yKGZhY3RvciwgY2hhbm5lbCkge1xuICAgICAgICByZXR1cm4gWmVnb0V4cHJlc3NFbmdpbmVJbXBsLmdldEluc3RhbmNlKCkuc2V0Q2FtZXJhWm9vbUZhY3RvcihmYWN0b3IsIGNoYW5uZWwpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiDojrflj5bmkYTlg4/lpLTmnIDlpKflj5jnhKblgI3mlbDvvIzmlK/mjIHmjIflrprmjqjmtYHpgJrpgZPlj7fjgIJcbiAgICAgKlxuICAgICAqIOaUr+aMgeeJiOacrO+8mjEuMjAuMCDlj4rku6XkuIrjgIJcbiAgICAgKiDor6bmg4Xmj4/ov7DvvJrojrflj5bmkYTlg4/lpLTmnIDlpKflj5jnhKblgI3mlbDjgIJcbiAgICAgKiDosIPnlKjml7bmnLrvvJrmkYTlg4/lpLTlkK/liqjmiJDlip/lkI7osIPnlKjmiY3mnInmlYjvvIzkuIDoiKzlj6/ku6XlnKjmlLbliLDph4fpm4bpppbluKflm57osIMgW29uUHVibGlzaGVyQ2FwdHVyZWRWaWRlb0ZpcnN0RnJhbWVdIOeahOaXtuWAmeiwg+eUqOOAglxuICAgICAqIOS9v+eUqOmZkOWItu+8muaXoOOAglxuICAgICAqIOazqOaEj++8muatpOWHveaVsOS7heWcqCBaZWdvRXhwcmVzc1ZpZGVvIFNESyDkuK3mnInmlYjvvIFcbiAgICAgKlxuICAgICAqIEBwYXJhbSBjaGFubmVsIOaOqOa1gemAmumBk1xuICAgICAqIEByZXR1cm4g5pGE5YOP5aS05pyA5aSn5Y+Y54Sm5YCN5pWwXG4gICAgICovXG4gICAgZ2V0Q2FtZXJhTWF4Wm9vbUZhY3RvcihjaGFubmVsKSB7XG4gICAgICAgIHJldHVybiBaZWdvRXhwcmVzc0VuZ2luZUltcGwuZ2V0SW5zdGFuY2UoKS5nZXRDYW1lcmFNYXhab29tRmFjdG9yKGNoYW5uZWwpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiDlkK/liqjlo7Dmtarnm5HmjqfvvIzmlK/mjIHlvIDlkK/ov5vpmLblip/og73jgIJcbiAgICAgKlxuICAgICAqIOaUr+aMgeeJiOacrO+8mjIuMTAuMCDlj4rku6XkuIrjgIJcbiAgICAgKiDor6bmg4Xmj4/ov7DvvJrlkK/liqjnm5HmjqflkI7lj6/pgJrov4cgW29uQ2FwdHVyZWRTb3VuZExldmVsVXBkYXRlXSDlm57osIPmjqXmlLbmnKzlnLDph4fpm4bpn7PpopHlo7DmtarvvIzku6Xlj4ogW29uUmVtb3RlU291bmRMZXZlbFVwZGF0ZV0g5Zue6LCD5o6l5pS26L+c56uv5ouJ5rWB6Z+z6aKR5aOw5rWq44CC5byA5Y+R6ICF5Y+v5Zyo6L+b5YWl5oi/6Ze05LmL5YmN77yM6LCD55SoIFtzdGFydFByZXZpZXddIOS4juatpOWHveaVsO+8jOW5tuS4jiBbb25DYXB0dXJlZFNvdW5kTGV2ZWxVcGRhdGVdIOe7k+WQiOadpeWIpOaWremfs+mikeiuvuWkh+aYr+WQpuato+W4uOW3peS9nOOAglxuICAgICAqIOS4muWKoeWcuuaZr++8muWcqOaOqOaLiea1gei/h+eoi+S4re+8jOWIpOaWrem6puS4iueahOeUqOaIt+iwgeWcqOivtOivne+8jOW5tuWBmiBVSSDlsZXnpLrjgIJcbiAgICAgKiDosIPnlKjml7bmnLrvvJrlnKjliJvlu7rlvJXmk44gW2NyZWF0ZUVuZ2luZV0g5ZCO44CCXG4gICAgICog5rOo5oSP5LqL6aG577yaXG4gICAgICogICAxLiBbb25DYXB0dXJlZFNvdW5kTGV2ZWxVcGRhdGVdIOS4jiBbb25SZW1vdGVTb3VuZExldmVsVXBkYXRlXSDlm57osIPpgJrnn6XlkajmnJ/kuLrlj4LmlbDorr7nva7nmoTlgLzjgIJcbiAgICAgKiAgIDIuIOWQr+WKqOWjsOa1quebkeaOp+WQju+8jOWNs+S9v+acquWQr+WKqOacrOWcsOmfs+mikemHh+mbhu+8jG9uQ2FwdHVyZWRTb3VuZExldmVsVXBkYXRl5Lmf5Lya5pyJ5Zue6LCD77yM5aOw5rWq5YC85Li6MOOAglxuICAgICAqXG4gICAgICogQHBhcmFtIGNvbmZpZyDlkK/liqjlo7Dmtarnm5HmjqfnmoTphY3nva7jgIJcbiAgICAgKi9cbiAgICBzdGFydFNvdW5kTGV2ZWxNb25pdG9yKGNvbmZpZykge1xuICAgICAgICByZXR1cm4gWmVnb0V4cHJlc3NFbmdpbmVJbXBsLmdldEluc3RhbmNlKCkuc3RhcnRTb3VuZExldmVsTW9uaXRvcihjb25maWcpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiDlgZzmraLlo7Dmtarnm5HmjqfjgIJcbiAgICAgKlxuICAgICAqIOaUr+aMgeeJiOacrO+8mjEuMS4wIOWPiuS7peS4iuOAglxuICAgICAqIOivpuaDheaPj+i/sO+8muWBnOatouebkeaOp+WQjuWwhuWBnOatouWbnuiwg+acrOWcsOmHh+mbhuS7peWPiui/nOerr+aLiea1geeahOmfs+mikeWjsOa1quWbnuiwg+OAglxuICAgICAqIOiwg+eUqOaXtuacuu+8muWcqOWIm+W7uuW8leaTjiBbY3JlYXRlRW5naW5lXSDlkI7jgIJcbiAgICAgKiDnm7jlhbPmjqXlj6PvvJrlj6/pgJrov4cgW3N0YXJ0U291bmRMZXZlbE1vbml0b3JdIOWQr+WKqOWjsOa1quebkeaOp+OAglxuICAgICAqL1xuICAgIHN0b3BTb3VuZExldmVsTW9uaXRvcigpIHtcbiAgICAgICAgcmV0dXJuIFplZ29FeHByZXNzRW5naW5lSW1wbC5nZXRJbnN0YW5jZSgpLnN0b3BTb3VuZExldmVsTW9uaXRvcigpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiDlvIDlkK8v5YWz6ZetIOiAs+i/lOOAglxuICAgICAqXG4gICAgICog5pSv5oyB54mI5pys77yaMS45LjAg5Y+K5Lul5LiK44CCXG4gICAgICog6K+m5oOF5o+P6L+w77ya5byA5ZCv6ICz6L+U77yM55So5oi35L2/55So6bqm5YWL6aOO6YeH6ZuG5aOw6Z+z5pe25Lya5ZCs5Yiw6Ieq5bex55qE5aOw6Z+z44CCXG4gICAgICog6LCD55So5pe25py677ya5Zyo5Yib5bu65byV5pOOIFtjcmVhdGVFbmdpbmVdIOWQjuOAglxuICAgICAqIOm7mOiupOWAvO+8muWFs+mXreOAglxuICAgICAqIOazqOaEj+S6i+mhue+8mlxuICAgICAqICAgMS4g5ZCM5pe26L+e5o6l6ICz5py65ZKM6bqm5YWL6aOO5pe26K+l6K6+572u5omN5a6e6ZmF55Sf5pWI44CCXG4gICAgICogICAyLiDogLPov5Tpu5jorqTmmK/lnKjph4fpm4bkuYvlkI7jgIHliY3lpITnkIbkuYvliY3ov5Tlm57vvIzlpoLmnpzpnIDopoHlnKjliY3lpITnkIbkuYvlkI7ov5Tlm57or7flkqjor6IgWkVHTyDmioDmnK/mlK/mjIHjgIJcbiAgICAgKlxuICAgICAqIEBwYXJhbSBlbmFibGUgdHJ1ZTog5byA5ZCv6ICz6L+U77yMIGZhbHNlOiDlhbPpl63ogLPov5TjgIJcbiAgICAgKi9cbiAgICBlbmFibGVIZWFkcGhvbmVNb25pdG9yKGVuYWJsZSkge1xuICAgICAgICByZXR1cm4gWmVnb0V4cHJlc3NFbmdpbmVJbXBsLmdldEluc3RhbmNlKCkuZW5hYmxlSGVhZHBob25lTW9uaXRvcihlbmFibGUpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiDorr7nva7ogLPov5Tpn7Pph4/jgIJcbiAgICAgKlxuICAgICAqIOaUr+aMgeeJiOacrO+8mjEuOS4wIOWPiuS7peS4iuOAglxuICAgICAqIOivpuaDheaPj+i/sO+8muiuvue9ruiAs+i/lOmfs+mHj+OAglxuICAgICAqIOiwg+eUqOaXtuacuu+8muWcqOWIm+W7uuW8leaTjiBbY3JlYXRlRW5naW5lXSDlkI7jgIJcbiAgICAgKiDms6jmhI/kuovpobnvvJrlkIzml7bov57mjqXogLPmnLrlkozpuqblhYvpo47ml7bor6Xorr7nva7miY3lrp7pmYXnlJ/mlYjjgIJcbiAgICAgKiDnm7jlhbPmjqXlj6PvvJrlj6/pgJrov4cgW2VuYWJsZUhlYWRwaG9uZU1vbml0b3JdIOW8gOWFs+iAs+i/lOOAglxuICAgICAqXG4gICAgICogQHBhcmFtIHZvbHVtZSDph4fpm4bogLPov5Tpn7Pph4/lpKflsI/vvIzlj5blgLwgWzAsIDIwMF3vvIzpu5jorqQgNjDjgIJcbiAgICAgKi9cbiAgICBzZXRIZWFkcGhvbmVNb25pdG9yVm9sdW1lKHZvbHVtZSkge1xuICAgICAgICByZXR1cm4gWmVnb0V4cHJlc3NFbmdpbmVJbXBsLmdldEluc3RhbmNlKCkuc2V0SGVhZHBob25lTW9uaXRvclZvbHVtZSh2b2x1bWUpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiDlvIDlkK8v5YWz6ZetIOaJi+eUteetkuOAglxuICAgICAqXG4gICAgICog5pSv5oyB54mI5pys77yaMy42LjAg5Y+K5Lul5LiK44CCXG4gICAgICog6K+m5oOF5o+P6L+w77ya5piv5ZCm5byA5ZCv6K6+5aSH55qE5omL55S1562S44CCXG4gICAgICog6LCD55So5pe25py677ya6ZyA6KaB5ZyoIFtjcmVhdGVFbmdpbmVdIOS5i+WQjuiwg+eUqOOAglxuICAgICAqXG4gICAgICogQHBhcmFtIGVuYWJsZSDlvIDlkK/miJblhbPpl63jgIJcbiAgICAgKiBAcGFyYW0gY2hhbm5lbCDmjqjmtYHpgJrpgZNcbiAgICAgKi9cbiAgICBlbmFibGVUb3JjaChlbmFibGUsIGNoYW5uZWwpIHtcbiAgICAgICAgcmV0dXJuIFplZ29FeHByZXNzRW5naW5lSW1wbC5nZXRJbnN0YW5jZSgpLmVuYWJsZVRvcmNoKGVuYWJsZSwgY2hhbm5lbCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIOaYr+WQpuW8gOWQr+WbnuWjsOa2iOmZpOOAglxuICAgICAqXG4gICAgICog5pSv5oyB54mI5pys77yaMS4xLjAg5Y+K5Lul5LiK44CCXG4gICAgICog6K+m5oOF5o+P6L+w77ya5omT5byA5Zue5aOw5raI6Zmk77yMIFNESyDkvJrlr7nph4fpm4bliLDnmoTpn7PpopHmlbDmja7ov5vooYzov4fmu6Tku6XpmY3kvY7pn7PpopHkuK3nmoTlm57pn7PmiJDliIbjgIJcbiAgICAgKiDkuJrliqHlnLrmma/vvJrlvZPpnIDopoHpmY3kvY7lm57lo7Dku6Xmj5Dpq5jpgJror53otKjph4/lkoznlKjmiLfkvZPpqozml7bvvIzlj6/ku6XlvIDlkK/mraTlip/og73jgIJcbiAgICAgKiDosIPnlKjml7bmnLrvvJrpnIDopoHlnKggW2NyZWF0ZUVuZ2luZV0g5LmL5ZCO6LCD55So44CCXG4gICAgICog5rOo5oSP5LqL6aG577ya5Zue5aOw5raI6Zmk5Yqf6IO95LuF5pSv5oyB5aSE55CG57uP6L+HIFNESyDmkq3mlL7nmoTlo7Dpn7PvvIzkvovlpoLmi4nmtYHjgIHlqpLkvZPmkq3mlL7lmajjgIHpn7PmlYjmkq3mlL7lmajnrYnlip/og73mkq3mlL7nmoTlo7Dpn7PjgILmnKrosIPnlKjmraTlh73mlbDliY3vvIxTREsg5YaF6YOo5Lya6Ieq5Yqo5Yik5pat5piv5ZCm6ZyA6KaB5L2/55SoIEFFQ++8jOS4gOaXpuiwg+eUqOS6huatpOWHveaVsOWImeS4jeWGjeiHquWKqOWIpOaWreOAglxuICAgICAqIOS9v+eUqOmZkOWItu+8muaXoOOAglxuICAgICAqIOebuOWFs+aOpeWPo++8muW8gOWPkeiAheWPr+mAmui/hyBbZW5hYmxlSGVhZHBob25lQUVDXSDku6Xorr7nva7lvZPkvb/nlKjogLPmnLrml7bmmK/lkKbkuZ/lvIDlkK/lm57lo7DmtojpmaTvvJvlj6/pgJrov4cgW3NldEFFQ01vZGVdIOiuvue9ruWbnuWjsOa2iOmZpOeahOaooeW8j+OAglxuICAgICAqXG4gICAgICogQHBhcmFtIGVuYWJsZSDmmK/lkKblvIDlkK/lm57lo7DmtojpmaTvvJt0cnVlIOihqOekuuW8gOWQr++8m2ZhbHNlIOihqOekuuWFs+mXrVxuICAgICAqL1xuICAgIGVuYWJsZUFFQyhlbmFibGUpIHtcbiAgICAgICAgcmV0dXJuIFplZ29FeHByZXNzRW5naW5lSW1wbC5nZXRJbnN0YW5jZSgpLmVuYWJsZUFFQyhlbmFibGUpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiDmmK/lkKblnKjkvb/nlKjogLPmnLrml7blvIDlkK/lm57lo7DmtojpmaTjgIJcbiAgICAgKlxuICAgICAqIOaUr+aMgeeJiOacrO+8mjEuMS4wIOWPiuS7peS4iuOAglxuICAgICAqIOivpuaDheaPj+i/sO+8muW9k+S9v+eUqCBbZW5hYmxlQUVDXSDlvIDlkK/kuoblm57lo7DmtojpmaTlkI7vvIzlr7nkuo7np7vliqjnq6/orr7lpIfmnaXor7Tlj6rlnKjkvb/nlKjmiazlo7Dlmajml7blvIDlkK/jgILlpoLmnpzpnIDopoHlnKjkvb/nlKjogLPmnLrml7blvIDlkK/miJbogIXlhbPpl63lm57lo7DmtojpmaTvvIzor7fosIPnlKjmraTlh73mlbDjgIJcbiAgICAgKiDkuJrliqHlnLrmma/vvJrlvZPnp7vliqjnq6/orr7lpIfov57mjqXkuobkuIDkuKrlpJbnva7lo7DljaHkvZzkuLrpn7PpopHovpPlh7rmupDml7bvvIzkuLrkuobmtojpmaTov5nnp43mg4XlhrXkuIvnmoTlm57lo7DvvIzpnIDopoHosIPnlKjmraTlh73mlbDlvIDlkK/lm57lo7DmtojpmaTjgIJcbiAgICAgKiDpu5jorqTlgLzvvJpBbmRyb2lkIOm7mOiupOWFs+mXre+8jGlPUyDpu5jorqTlvIDlkK/jgIJcbiAgICAgKiDosIPnlKjml7bmnLrvvJrpnIDopoHlnKggW2NyZWF0ZUVuZ2luZV0g5LmL5ZCO77yMW3N0YXJ0UHVibGlzaGluZ1N0cmVhbV3jgIEgW3N0YXJ0UGxheWluZ1N0cmVhbV3jgIEgW3N0YXJ0UHJldmlld13jgIEgW2NyZWF0ZU1lZGlhUGxheWVyXeOAgSBbY3JlYXRlQXVkaW9FZmZlY3RQbGF5ZXJdIOWSjCBbY3JlYXRlUmVhbFRpbWVTZXF1ZW50aWFsRGF0YU1hbmFnZXJdIOS5i+WJjeiwg+eUqOOAglxuICAgICAqIOazqOaEj+S6i+mhue+8muW8gOWQr+WbnuWjsOa2iOmZpOS8muWinuWKoOiAs+i/lOW7tui/n+OAguWcqCBpT1Mg5bmz5Y+w77yMU0RLIOWGhemDqOaXoOazleWMuuWIhuiAs+acuui3n+Wklue9ruWjsOWNoe+8jOWmguaenOS9v+eUqOatpOWHveaVsOWFs+mXreS9v+eUqOiAs+acuuaXtueahOezu+e7n+WbnuWjsOa2iOmZpO+8jOWImeWcqOeUqOaIt+aOpeWFpeWklumDqOWjsOWNoeaXtuS8mumHh+mbhuWklumDqOWjsOWNoeaSreaUvueahOWjsOmfs++8jOWvvOiHtOWbnuWjsOmXrumimOOAglxuICAgICAqIOS9v+eUqOmZkOWItu+8muaXoOOAglxuICAgICAqIOebuOWFs+aOpeWPo++8muS4jeS9v+eUqOiAs+acuuaXtuWPr+mAmui/hyBbZW5hYmxlQUVDXSDorr7nva4gU0RLIOaYr+WQpuW8gOWQr+WbnuWjsOa2iOmZpOOAglxuICAgICAqIOW5s+WPsOW3ruW8gu+8muS7heaUr+aMgSBpT1Mg5ZKMIEFuZHJvaWTjgIJcbiAgICAgKlxuICAgICAqIEBwYXJhbSBlbmFibGUg5piv5ZCm5byA5ZCv77ybdHJ1ZSDooajnpLrlvIDlkK/vvJtmYWxzZSDooajnpLrlhbPpl63jgIJcbiAgICAgKi9cbiAgICBlbmFibGVIZWFkcGhvbmVBRUMoZW5hYmxlKSB7XG4gICAgICAgIHJldHVybiBaZWdvRXhwcmVzc0VuZ2luZUltcGwuZ2V0SW5zdGFuY2UoKS5lbmFibGVIZWFkcGhvbmVBRUMoZW5hYmxlKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICog6K6+572u5Zue5aOw5raI6Zmk5qih5byPXG4gICAgICpcbiAgICAgKiDmlK/mjIHniYjmnKzvvJoxLjEuMCDlj4rku6XkuIrjgIJcbiAgICAgKiDor6bmg4Xmj4/ov7DvvJrlvZPkvb/nlKggW2VuYWJsZUFFQ10g5byA5ZCv5LqG5Zue5aOw5raI6Zmk5ZCO77yM5Y+v6YCa6L+H5q2k5Ye95pWw5YiH5o2i5LiN5ZCM55qE5Zue5aOw5raI6Zmk5qih5byP5Lul5o6n5Yi25raI6Zmk5Zue5aOw5pWw5o2u55qE56iL5bqm44CCXG4gICAgICog5Lia5Yqh5Zy65pmv77ya5b2T6buY6K6k55qE5Zue5aOw5raI6Zmk5pWI5p6c5LiN56ym5ZCI6aKE5pyf5pe277yM5Y+v6YCa6L+H5q2k5Ye95pWw6LCD5pW05Zue5aOw5raI6Zmk5qih5byP44CCXG4gICAgICog6buY6K6k5YC877ya5pyq6LCD55So5q2k5Ye95pWw5pe277yM6buY6K6k55qE5Zue5aOw5raI6Zmk5qih5byP5Li6IFtBZ2dyZXNzaXZlXSDmv4Dov5vmqKHlvI/jgIJcbiAgICAgKiDosIPnlKjml7bmnLrvvJrpnIDopoHlnKggW2NyZWF0ZUVuZ2luZV0g5LmL5ZCO6LCD55So44CCXG4gICAgICog5L2/55So6ZmQ5Yi277ya5LuF5Zyo5byA5ZCv5LqG5Zue5aOw5raI6Zmk5Yqf6IO95ZCO5q2k5Ye95pWw6K6+572u55qE5YC85omN5pyJ5pWI44CCXG4gICAgICpcbiAgICAgKiBAcGFyYW0gbW9kZSDlm57lo7DmtojpmaTmqKHlvI9cbiAgICAgKi9cbiAgICBzZXRBRUNNb2RlKG1vZGUpIHtcbiAgICAgICAgcmV0dXJuIFplZ29FeHByZXNzRW5naW5lSW1wbC5nZXRJbnN0YW5jZSgpLnNldEFFQ01vZGUobW9kZSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIOW8gC/lhbPoh6rliqjlop7nm4rmjqfliLZcbiAgICAgKlxuICAgICAqIOaUr+aMgeeJiOacrO+8mjEuMS4wIOWPiuS7peS4iuOAglxuICAgICAqIOivpuaDheaPj+i/sO+8muW8gOWQr+ivpeWKn+iDveWQju+8jFNESyDog73lpJ/oh6rliqjosIPoioLpuqblhYvpo47pn7Pph4/vvIzpgILlupTov5zov5Hmi77pn7PvvIzkv53mjIHpn7Pph4/nqLPlrprjgIJcbiAgICAgKiDkuJrliqHlnLrmma/vvJrlvZPpnIDopoHkv53pmpzpn7Pph4/nqLPlrprmgKfku6Xmj5Dpq5jpgJror53otKjph4/lkoznlKjmiLfkvZPpqozml7bvvIzlj6/ku6XlvIDlkK/mraTlip/og73jgIJcbiAgICAgKiDosIPnlKjml7bmnLrvvJrpnIDopoHlnKggW2NyZWF0ZUVuZ2luZV0g5LmL5ZCO6LCD55So44CCXG4gICAgICog5rOo5oSP5LqL6aG577ya5pyq6LCD55So5q2k5Ye95pWw5YmN77yMU0RLIOWGhemDqOS8muiHquWKqOWIpOaWreaYr+WQpumcgOimgeS9v+eUqCBBR0PvvIzkuIDml6bosIPnlKjkuobmraTlh73mlbDliJnkuI3lho3oh6rliqjliKTmlq3jgIJcbiAgICAgKiDkvb/nlKjpmZDliLbvvJrml6DjgIJcbiAgICAgKlxuICAgICAqIEBwYXJhbSBlbmFibGUg5piv5ZCm5byA5ZCv6Ieq5Yqo5aKe55uK5o6n5Yi277ybdHJ1ZSDooajnpLrlvIDlkK/vvJtmYWxzZSDooajnpLrlhbPpl61cbiAgICAgKi9cbiAgICBlbmFibGVBR0MoZW5hYmxlKSB7XG4gICAgICAgIHJldHVybiBaZWdvRXhwcmVzc0VuZ2luZUltcGwuZ2V0SW5zdGFuY2UoKS5lbmFibGVBR0MoZW5hYmxlKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICog5byAL+WFs+WZquWjsOaKkeWItlxuICAgICAqXG4gICAgICog5pSv5oyB54mI5pys77yaMS4xLjAg5Y+K5Lul5LiK44CCXG4gICAgICog6K+m5oOF5o+P6L+w77ya5byA5ZCv6K+l5Yqf6IO95ZCO77yM5Y+v5Lul5L2/5Lq65aOw5pu05Yqg5riF5pmw44CCXG4gICAgICog5Lia5Yqh5Zy65pmv77ya5b2T6ZyA6KaB5oqR5Yi25Zmq5aOw5Lul5o+Q6auY6YCa6K+d6LSo6YeP5ZKM55So5oi35L2T6aqM5pe277yM5Y+v5Lul5byA5ZCv5q2k5Yqf6IO944CCXG4gICAgICog6LCD55So5pe25py677ya6ZyA6KaB5ZyoIFtjcmVhdGVFbmdpbmVdIOS5i+WQjuiwg+eUqOOAglxuICAgICAqIOebuOWFs+aOpeWPo++8muatpOWKn+iDveWvueaMgee7reaAp+eahOWZquWjsO+8iOS+i+WmguS4i+mbqOWjsOetieeZveWZqumfs++8ieaKkeWItuaViOaenOi+g+Wlve+8jOWmguaenOmcgOimgeaKkeWItueerOaAgeWZquWjsO+8jOivt+S9v+eUqCBbZW5hYmxlVHJhbnNpZW50QU5TXe+8m+WPr+mAmui/hyBbc2V0QU5TTW9kZV0g6K6+572u5Zmq5aOw5oqR5Yi255qE5qih5byP44CCXG4gICAgICog5rOo5oSP5LqL6aG577ya5pyq6LCD55So5q2k5Ye95pWw5YmN77yMU0RLIOWGhemDqOS8muiHquWKqOWIpOaWreaYr+WQpumcgOimgeS9v+eUqCBBTlPvvIzkuIDml6bosIPnlKjkuobmraTlh73mlbDliJnkuI3lho3oh6rliqjliKTmlq3jgIJcbiAgICAgKiDkvb/nlKjpmZDliLbvvJrml6DjgIJcbiAgICAgKlxuICAgICAqIEBwYXJhbSBlbmFibGUg5piv5ZCm5byA5ZCv5Zmq5aOw5oqR5Yi277ybdHJ1ZSDooajnpLrlvIDlkK/lmarlo7DmipHliLbvvJtmYWxzZSDooajnpLrlhbPpl63lmarlo7DmipHliLZcbiAgICAgKi9cbiAgICBlbmFibGVBTlMoZW5hYmxlKSB7XG4gICAgICAgIHJldHVybiBaZWdvRXhwcmVzc0VuZ2luZUltcGwuZ2V0SW5zdGFuY2UoKS5lbmFibGVBTlMoZW5hYmxlKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICog5byAL+WFs+eerOaAgeWZquWjsOaKkeWItlxuICAgICAqXG4gICAgICog5pSv5oyB54mI5pys77yaMS4xNy4wIOWPiuS7peS4iuOAglxuICAgICAqIOivpuaDheaPj+i/sO+8mueUqOS6juaKkeWItuaVsuWHu+mUruebmOOAgeahjOWtkOetieeerOaAgeWZquWjsOOAglxuICAgICAqIOS4muWKoeWcuuaZr++8muW9k+mcgOimgeaKkeWItueerOaAgeWZquWjsOS7peaPkOmrmOmAmuivnei0qOmHj+WSjOeUqOaIt+S9k+mqjOaXtu+8jOWPr+S7peW8gOWQr+atpOWKn+iDveOAglxuICAgICAqIOm7mOiupOWAvO+8muacquiwg+eUqOatpOWHveaVsOaXtu+8jOm7mOiupOS4jeW8gOWQr+eerOaAgeWZquWjsOaKkeWItuOAglxuICAgICAqIOiwg+eUqOaXtuacuu+8mumcgOimgeWcqCBbY3JlYXRlRW5naW5lXSDkuYvlkI7osIPnlKjjgIJcbiAgICAgKiDnm7jlhbPmjqXlj6PvvJrmraTlh73mlbDlvIDlkK/lkI7kuI3kvJrmipHliLbluLjop4Tlmarlo7DvvIzlpoLmnpzpnIDopoHlvIDlkK/luLjop4Tlmarlo7DmipHliLbvvIzor7fkvb/nlKggW2VuYWJsZUFOU11cbiAgICAgKiDkvb/nlKjpmZDliLbvvJrml6DjgIJcbiAgICAgKlxuICAgICAqIEBwYXJhbSBlbmFibGUg5piv5ZCm5byA5ZCv556s5oCB5Zmq5aOw5oqR5Yi277ybdHJ1ZSDooajnpLrlvIDlkK/vvJtmYWxzZSDooajnpLrlhbPpl61cbiAgICAgKi9cbiAgICBlbmFibGVUcmFuc2llbnRBTlMoZW5hYmxlKSB7XG4gICAgICAgIHJldHVybiBaZWdvRXhwcmVzc0VuZ2luZUltcGwuZ2V0SW5zdGFuY2UoKS5lbmFibGVUcmFuc2llbnRBTlMoZW5hYmxlKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICog6K6+572u6Z+z6aKR5Zmq5aOw5oqR5Yi25qih5byPXG4gICAgICpcbiAgICAgKiDmlK/mjIHniYjmnKzvvJoxLjEuMCDlj4rku6XkuIrjgIJcbiAgICAgKiDor6bmg4Xmj4/ov7DvvJrlvZPkvb/nlKggW2VuYWJsZUFOU10g5byA5ZCv5LqG5Zmq5aOw5oqR5Yi25ZCO77yM5Y+v6YCa6L+H5q2k5Ye95pWw5YiH5o2i5LiN5ZCM55qE5Zmq5aOw5oqR5Yi25qih5byP5Lul5o6n5Yi25oqR5Yi25Zmq5aOw5pWw5o2u55qE56iL5bqm44CCXG4gICAgICog5Lia5Yqh5Zy65pmv77ya5b2T6buY6K6k55qE5Zmq5aOw5oqR5Yi25pWI5p6c5LiN56ym5ZCI6aKE5pyf5pe277yM5Y+v6YCa6L+H5q2k5Ye95pWw6LCD5pW05Zmq5aOw5oqR5Yi25qih5byP44CCXG4gICAgICog6buY6K6k5YC877ya5pyq6LCD55So5q2k5Ye95pWw5pe277yM6buY6K6k55qE5Zmq5aOw5oqR5Yi25qih5byP5Li6IFtNZWRpdW1dIOS4reetieaooeW8j+OAglxuICAgICAqIOiwg+eUqOaXtuacuu+8mumcgOimgeWcqCBbY3JlYXRlRW5naW5lXSDkuYvlkI7osIPnlKjjgIJcbiAgICAgKiDkvb/nlKjpmZDliLbvvJrku4XlnKjlvIDlkK/kuoblmarlo7DmipHliLblip/og73lkI7mraTlh73mlbDorr7nva7nmoTlgLzmiY3mnInmlYjjgIJcbiAgICAgKlxuICAgICAqIEBwYXJhbSBtb2RlIOWZquWjsOaKkeWItuaooeW8j1xuICAgICAqL1xuICAgIHNldEFOU01vZGUobW9kZSkge1xuICAgICAgICByZXR1cm4gWmVnb0V4cHJlc3NFbmdpbmVJbXBsLmdldEluc3RhbmNlKCkuc2V0QU5TTW9kZShtb2RlKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICog5byA5ZCvIEVmZmVjdHMg576O6aKc546v5aKD44CCXG4gICAgICpcbiAgICAgKiDmlK/mjIHniYjmnKzvvJoyLjE2LjAg5Y+K5Lul5LiK44CCXG4gICAgICog6K+m5oOF5o+P6L+w77ya5byA5ZCvIEVmZmVjdHMg576O6aKc546v5aKD44CCU0RLIOWGhemDqOS8muS9v+eUqOWbuuWumueahOinhumikeW4p+aVsOaNruexu+Wei+i/m+ihjOS8oOi+k++8jFdpbmRvd3Mg5bmz5Y+w5Y+q5pSv5oyB6KeG6aKR5bin6KO45pWw5o2u77yMIEFwcGxlIOW5s+WPsOWPquaUr+aMgSBDVlBpeGVsQnVmZmVy77yMQW5kcm9pZCDlubPlj7Dlj6rmlK/mjIEgdGV4dHVyZTJk44CCXG4gICAgICog5Lia5Yqh5Zy65pmv77ya5bi455So5LqO6KeG6aKR6YCa6K+d44CB55u05pKt562J5Zy65pmv44CCXG4gICAgICog6buY6K6k5YC877ya5pyq6LCD55So5q2k5Ye95pWw5pe277yM6buY6K6k5LiN5ZCv5Yqo576O6aKc546v5aKD44CCXG4gICAgICog6LCD55So5pe25py677ya5b+F6aG75Zyo6LCD55SoIFtzdGFydFByZXZpZXdd44CBW3N0YXJ0UHVibGlzaGluZ1N0cmVhbV0g5LmL5YmN6K6+572u44CC5aaC5p6c6ZyA6KaB5L+u5pS56YWN572u77yM6K+35YWI6LCD55SoIFtsb2dvdXRSb29tXSDnmbvlh7rmiL/pl7TvvIzlkKbliJnkuI3kvJrnlJ/mlYjjgIJcbiAgICAgKiDnm7jlhbPmjqXlj6PvvJpbZW5hYmxlRWZmZWN0c0JlYXV0eV0g5byA5YWz576O6aKc77yMW3NldEVmZmVjdHNCZWF1dHlQYXJhbV0g6K6+572u576O6aKc5Y+C5pWw44CCXG4gICAgICog5rOo5oSP5LqL6aG577ya5q2k576O6aKc5Yqf6IO95Li65Z+656GA5Yqf6IO977yM5aaC5LiN56ym5ZCI5byA5Y+R6ICF55qE6aKE5pyf77yM5Y+v5L2/55So6Ieq5a6a5LmJ6KeG6aKR5YmN5aSE55CG5Yqf6IO9IFtlbmFibGVDdXN0b21WaWRlb1Byb2Nlc3NpbmddIOaIluiAheiHquWumuS5ieinhumikemHh+mbhuWKn+iDvSBbZW5hYmxlQ3VzdG9tVmlkZW9DYXB0dXJlXSDlr7nmjqXljbPmnoQgQUkg576O6aKcIFNESyBbWmVnb0VmZmVjdHNdIGh0dHBzOi8vZG9jLXpoLnplZ28uaW0vYXJ0aWNsZS85NTU2IOS7peiOt+W+l+acgOS9s+aViOaenOOAglxuICAgICAqIOS9v+eUqOmZkOWItu+8muatpOWHveaVsOWPquaUr+aMgSBBbmRyb2lkIOezu+e7nyA1LjAg5Y+K5Lul5LiK77yMQW5kcm9pZCBTREsg54mI5pysIDIxIOWPiuS7peS4iuOAglxuICAgICAqIOazqOaEj++8muatpOWHveaVsOS7heWcqCBaZWdvRXhwcmVzc1ZpZGVvIFNESyDkuK3mnInmlYjvvIFcbiAgICAgKi9cbiAgICBzdGFydEVmZmVjdHNFbnYoKSB7XG4gICAgICAgIHJldHVybiBaZWdvRXhwcmVzc0VuZ2luZUltcGwuZ2V0SW5zdGFuY2UoKS5zdGFydEVmZmVjdHNFbnYoKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICog5YWz6ZetIEVmZmVjdHMg576O6aKc546v5aKD44CCXG4gICAgICpcbiAgICAgKiDmlK/mjIHniYjmnKzvvJoyLjE2LjAg5Y+K5Lul5LiK44CCXG4gICAgICog6K+m5oOF5o+P6L+w77ya5YWz6ZetIEVmZmVjdHMg576O6aKc546v5aKD44CCXG4gICAgICog5Lia5Yqh5Zy65pmv77ya5bi455So5LqO6KeG6aKR6YCa6K+d44CB55u05pKt562J5Zy65pmv44CCXG4gICAgICog6LCD55So5pe25py677ya5b+F6aG75Zyo6LCD55SoIFtzdGFydFByZXZpZXdd44CBW3N0YXJ0UHVibGlzaGluZ1N0cmVhbV0g5LmL5YmN6K6+572u44CC5aaC5p6c6ZyA6KaB5L+u5pS56YWN572u77yM6K+35YWI6LCD55SoIFtsb2dvdXRSb29tXSDnmbvlh7rmiL/pl7TvvIzlkKbliJnkuI3kvJrnlJ/mlYjjgIJcbiAgICAgKiDnm7jlhbPmjqXlj6PvvJpbZW5hYmxlRWZmZWN0c0JlYXV0eV0g5byA5YWz576O6aKc77yMW3NldEVmZmVjdHNCZWF1dHlQYXJhbV0g6K6+572u576O6aKc5Y+C5pWw44CCXG4gICAgICog5rOo5oSP5LqL6aG577ya5q2k576O6aKc5Yqf6IO95Li65Z+656GA5Yqf6IO977yM5aaC5LiN56ym5ZCI5byA5Y+R6ICF55qE6aKE5pyf77yM5Y+v5L2/55So6Ieq5a6a5LmJ6KeG6aKR5YmN5aSE55CG5Yqf6IO9IFtlbmFibGVDdXN0b21WaWRlb1Byb2Nlc3NpbmddIOaIluiAheiHquWumuS5ieinhumikemHh+mbhuWKn+iDvSBbZW5hYmxlQ3VzdG9tVmlkZW9DYXB0dXJlXSDlr7nmjqXljbPmnoQgQUkg576O6aKcIFNESyBbWmVnb0VmZmVjdHNdIGh0dHBzOi8vZG9jLXpoLnplZ28uaW0vYXJ0aWNsZS85NTU2IOS7peiOt+W+l+acgOS9s+aViOaenOOAglxuICAgICAqIOS9v+eUqOmZkOWItu+8muatpOWHveaVsOWPquaUr+aMgSBBbmRyb2lkIOezu+e7nyA1LjAg5Y+K5Lul5LiK77yMQW5kcm9pZCBTREsg54mI5pysIDIxIOWPiuS7peS4iuOAglxuICAgICAqIOazqOaEj++8muatpOWHveaVsOS7heWcqCBaZWdvRXhwcmVzc1ZpZGVvIFNESyDkuK3mnInmlYjvvIFcbiAgICAgKi9cbiAgICBzdG9wRWZmZWN0c0VudigpIHtcbiAgICAgICAgcmV0dXJuIFplZ29FeHByZXNzRW5naW5lSW1wbC5nZXRJbnN0YW5jZSgpLnN0b3BFZmZlY3RzRW52KCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIOW8gOWQr+aIluWFs+mXree+juminOaViOaenOOAglxuICAgICAqXG4gICAgICog5pSv5oyB54mI5pys77yaMi4xNi4wIOWPiuS7peS4iuOAglxuICAgICAqIOivpuaDheaPj+i/sO+8muaUr+aMgeWfuuehgOe+juminOWKn+iDve+8jOWMheaLrOe+jueZveOAgee6oua2puOAgeejqOearuOAgemUkOWMluOAglxuICAgICAqIOS4muWKoeWcuuaZr++8mumAmuW4uOeUqOS6juinhumikemAmuivneOAgeebtOaSreetieWcuuaZr+OAglxuICAgICAqIOiwg+eUqOaXtuacuu+8muW/hemhu+WcqOiwg+eUqCBbc3RhcnRFZmZlY3RzRW52XSDlvIDlkK/nvo7popznjq/looPlkI7miY3og73osIPnlKjmraTlh73mlbDjgIJcbiAgICAgKiDpu5jorqTlgLzvvJrmnKrosIPnlKjmraTlh73mlbDml7bvvIzpu5jorqTkuI3lvIDlkK/nvo7popzmlYjmnpzjgIJcbiAgICAgKiDnm7jlhbPmjqXlj6PvvJrlj6/osIPnlKggW3NldEVmZmVjdHNCZWF1dHlQYXJhbV0g5Ye95pWw6LCD5pW0576O6aKc5Y+C5pWw44CCXG4gICAgICog5rOo5oSP5LqL6aG577ya5q2k576O6aKc5Yqf6IO95Li65Z+656GA5Yqf6IO977yM5aaC5LiN56ym5ZCI5byA5Y+R6ICF55qE6aKE5pyf77yM5Y+v5L2/55So6Ieq5a6a5LmJ6KeG6aKR5YmN5aSE55CG5Yqf6IO9IFtlbmFibGVDdXN0b21WaWRlb1Byb2Nlc3NpbmddIOaIluiAheiHquWumuS5ieinhumikemHh+mbhuWKn+iDvSBbZW5hYmxlQ3VzdG9tVmlkZW9DYXB0dXJlXSDlr7nmjqXljbPmnoQgQUkg576O6aKcIFNESyBbWmVnb0VmZmVjdHNdIGh0dHBzOi8vZG9jLXpoLnplZ28uaW0vYXJ0aWNsZS85NTU2IOS7peiOt+W+l+acgOS9s+aViOaenOOAglxuICAgICAqIOS9v+eUqOmZkOWItu+8muatpOWHveaVsOWmguaenOS9v+eUqOWcqCBBbmRyb2lkIOW5s+WPsOS4iuWPquaUr+aMgSA1LjAg5Y+K5Lul5LiK77yMU0RLIOeJiOacrCAyMSDlj4rku6XkuIrjgIJcbiAgICAgKiDms6jmhI/vvJrmraTlh73mlbDku4XlnKggWmVnb0V4cHJlc3NWaWRlbyBTREsg5Lit5pyJ5pWI77yBXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZW5hYmxlIOaYr+WQpuW8gOWQr+e+juminOaViOaenO+8jHRydWUg5byA5ZCv77ybZmFsc2Ug5YWz6Zet77yM6buY6K6k5Li6IGZhbHNl44CCXG4gICAgICovXG4gICAgZW5hYmxlRWZmZWN0c0JlYXV0eShlbmFibGUpIHtcbiAgICAgICAgcmV0dXJuIFplZ29FeHByZXNzRW5naW5lSW1wbC5nZXRJbnN0YW5jZSgpLmVuYWJsZUVmZmVjdHNCZWF1dHkoZW5hYmxlKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICog6K6+572u576O6aKc5pWI5p6c5Y+C5pWw44CCXG4gICAgICpcbiAgICAgKiDmlK/mjIHniYjmnKzvvJoyLjE2LjAg5Y+K5Lul5LiK44CCXG4gICAgICog6K+m5oOF5o+P6L+w77ya6K6+572u576O6aKc5Y+C5pWw77yM5YyF5ous576O55m944CB57qi5ram44CB56Oo55qu44CB6ZSQ5YyW44CCXG4gICAgICog5Lia5Yqh5Zy65pmv77ya6YCa5bi455So5LqO6KeG6aKR6YCa6K+d44CB55u05pKt562J5Zy65pmv44CCXG4gICAgICog6LCD55So5pe25py677ya5b+F6aG75Zyo6LCD55SoIFtzdGFydEVmZmVjdHNFbnZdIOW8gOWQr+e+juminOeOr+Wig+WQjuaJjeiDveiwg+eUqOatpOWHveaVsOOAglxuICAgICAqIOebuOWFs+aOpeWPo++8muWPr+iwg+eUqCBbZW5hYmxlRWZmZWN0c0JlYXV0eV0g5byA5ZCv5oiW5YWz6Zet576O6aKc5pWI5p6c44CCXG4gICAgICog5L2/55So6ZmQ5Yi277ya5q2k5Ye95pWw5Y+q5pSv5oyBIEFuZHJvaWQg57O757ufIDUuMCDlj4rku6XkuIrvvIxBbmRyb2lkIFNESyDniYjmnKwgMjEg5Y+K5Lul5LiK44CCXG4gICAgICog5rOo5oSP77ya5q2k5Ye95pWw5LuF5ZyoIFplZ29FeHByZXNzVmlkZW8gU0RLIOS4reacieaViO+8gVxuICAgICAqXG4gICAgICogQHBhcmFtIHBhcmFtIOe+juminOmAiemhueWPguaVsOOAglxuICAgICAqL1xuICAgIHNldEVmZmVjdHNCZWF1dHlQYXJhbShwYXJhbSkge1xuICAgICAgICByZXR1cm4gWmVnb0V4cHJlc3NFbmdpbmVJbXBsLmdldEluc3RhbmNlKCkuc2V0RWZmZWN0c0JlYXV0eVBhcmFtKHBhcmFtKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICog5Y+R6YCB5oi/6Ze05bm/5pKt5raI5oGv44CCXG4gICAgICpcbiAgICAgKiDmlK/mjIHniYjmnKzvvJoxLjIuMSDlj4rku6XkuIrjgIJcbiAgICAgKiDor6bmg4Xmj4/ov7DvvJrlkJHmiL/pl7Tlj5HpgIHlub/mkq3mtojmga/vvIzlt7Lnu4/nmbvlvZXnm7jlkIzmiL/pl7TnmoTnlKjmiLfog73mlLbliLDmtojmga/vvIzmtojmga/lj6/pnaDjgIJcbiAgICAgKiDkuJrliqHlnLrmma/vvJrkuIDoiKzlnKjnm7Tmkq3miL/pl7TkurrmlbDkuI3otoXov4cgNTAwIOaXtuS9v+eUqOOAglxuICAgICAqIOiwg+eUqOaXtuacuu+8muiwg+eUqCBbbG9naW5Sb29tXSDnmbvlvZXmiL/pl7TkuYvlkI7jgIJcbiAgICAgKiDkvb/nlKjpmZDliLbvvJrmiL/pl7TlnKjnur/kurrmlbDotoXov4cgNTAwIOaXtuS4jeaUr+aMge+8jOWmguaenOmcgOimgeaPkOmrmOmZkOWItu+8jOivt+iBlOezuyBaRUdPIOaKgOacr+aUr+aMgeeUs+ivt+ivhOS8sOOAguWQjOS4gOaIv+mXtOWGheeahOW5v+aSrea2iOaBr+WPkemAgemikeeOh+S4jeiDvemrmOS6jiAxMOadoS9z44CC5Y2V5Liq55So5oi35Zyo5a6i5oi356uv6LCD55So5q2k5o6l5Y+j55qE5pyA5aSnUVBT5Li6Mu+8jOWFs+S6juatpOWHveaVsOeahOS9v+eUqOmZkOWItu+8jOivt+WPguiAgyBodHRwczovL2RvYy16aC56ZWdvLmltL2FydGljbGUvNzU4MSDmiJbogZTns7sgWkVHTyDmioDmnK/mlK/mjIHjgIJcbiAgICAgKiDnm7jlhbPlm57osIPvvJrlj6/pgJrov4cgW29uSU1SZWN2QnJvYWRjYXN0TWVzc2FnZV0g5o6l5pS25Yiw5oi/6Ze05bm/5pKt5raI5oGv44CCXG4gICAgICog55u45YWz5o6l5Y+j77ya5Y+v6YCa6L+HIFtzZW5kQmFycmFnZU1lc3NhZ2VdIOWHveaVsOWPkemAgeW8ueW5lea2iOaBr++8jOWPr+mAmui/hyBbc2VuZEN1c3RvbUNvbW1hbmRdIOWHveaVsOWPkemAgeiHquWumuS5ieS/oeS7pOOAglxuICAgICAqXG4gICAgICogQHBhcmFtIHJvb21JRCDmiL/pl7QgSUTvvIzkuI3lvpfkuLrnqbrvvIzmnIDlpKfplb/luqbkuLogMTI4IOWtl+iKgueahOWtl+espuS4suOAglxuICAgICAqICAg5rOo5oSP5LqL6aG577yaXG4gICAgICogICAxLuaIv+mXtCBJRCDnlLHmgqjoh6rlt7HlrprkuYnjgIJcbiAgICAgKiAgIDIuIOS7heaUr+aMgeaVsOWtl++8jOiLseaWh+Wtl+espiDlkowgJ34nLCAnIScsICdAJywgJyMnLCAnJCcsICclJywgJ14nLCAnJicsICcqJywgJygnLCAnKScsICdfJywgJysnLCAnPScsICctJywgJ2AnLCAnOycsICfigJknLCAnLCcsICcuJywgJzwnLCAnPicsICdcXCfjgIJcbiAgICAgKiAgIDMuIOWmguaenOmcgOimgeS4jiBXZWIgU0RLIOS6kumAmu+8jOivt+S4jeimgeS9v+eUqCAnJSfjgIJcbiAgICAgKiBAcGFyYW0gbWVzc2FnZSDmtojmga/lhoXlrrnjgILmmK/lkKblv4XloavvvJrmmK/jgILlj5blgLzojIPlm7TvvJrplb/luqbkuI3otoXov4cgMTAyNCDlrZfoioLjgIJcbiAgICAgKiBAcmV0dXJuIOWPkemAgeW5v+aSrea2iOaBr+e7k+aenOmAmuefpeOAguaYr+WQpuW/heWhq++8muWQpuOAguazqOaEj+S6i+mhue+8muS8oCBbbnVsbF0g5YiZ5oSP5ZGz552A5LiN5o6l5pS25Zue6LCD6YCa55+l44CCXG4gICAgICovXG4gICAgc2VuZEJyb2FkY2FzdE1lc3NhZ2Uocm9vbUlELCBtZXNzYWdlKSB7XG4gICAgICAgIHJldHVybiBaZWdvRXhwcmVzc0VuZ2luZUltcGwuZ2V0SW5zdGFuY2UoKS5zZW5kQnJvYWRjYXN0TWVzc2FnZShyb29tSUQsIG1lc3NhZ2UpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiDlj5HpgIHmiL/pl7TlvLnluZXmtojmga/jgIJcbiAgICAgKlxuICAgICAqIOaUr+aMgeeJiOacrO+8mjEuNS4wIOWPiuS7peS4iuOAglxuICAgICAqIOivpuaDheaPj+i/sO+8muWQkeaIv+mXtOWPkemAgeW8ueW5lea2iOaBr++8jOW3sue7j+eZu+W9leebuOWQjOaIv+mXtOeahOeUqOaIt+iDveaUtuWIsOa2iOaBr++8jOa2iOaBr+S4jeWPr+mdoOOAglxuICAgICAqIOS4muWKoeWcuuaZr++8muS4gOiIrOeUqOS6juaIv+mXtOWGheacieWkp+mHj+a2iOaBr+aUtuWPke+8jOS4lOS4jemcgOimgeS/neivgea2iOaBr+WPr+mdoOaAp+eahOWcuuaZr++8jOS+i+WmguebtOaSreW8ueW5leOAglxuICAgICAqIOiwg+eUqOaXtuacuu+8muiwg+eUqCBbbG9naW5Sb29tXSDnmbvlvZXmiL/pl7TkuYvlkI7jgIJcbiAgICAgKiDkvb/nlKjpmZDliLbvvJrlkIzkuIDmiL/pl7TlhoXnmoTlvLnluZXmtojmga/lj5HpgIHpopHnjofkuI3og73pq5jkuo4gMjDmnaEvc+OAguWFs+S6juatpOWHveaVsOeahOS9v+eUqOmZkOWItu+8jOivt+WPguiAgyBodHRwczovL2RvYy16aC56ZWdvLmltL2FydGljbGUvNzU4MSDmiJbogZTns7sgWkVHTyDmioDmnK/mlK/mjIHjgIJcbiAgICAgKiDnm7jlhbPlm57osIPvvJrlj6/pgJrov4cgW29uSU1SZWN2QmFycmFnZU1lc3NhZ2VdIOaOpeaUtuWIsOaIv+mXtOW8ueW5lea2iOaBr+OAglxuICAgICAqIOebuOWFs+aOpeWPo++8muWPr+mAmui/hyBbc2VuZEJyb2FkY2FzdE1lc3NhZ2VdIOWHveaVsOWPkemAgeW5v+aSrea2iOaBr++8jOWPr+mAmui/hyBbc2VuZEN1c3RvbUNvbW1hbmRdIOWHveaVsOWPkemAgeiHquWumuS5ieS/oeS7pOOAglxuICAgICAqXG4gICAgICogQHBhcmFtIHJvb21JRCDmiL/pl7QgSUTvvIzkuI3lvpfkuLrnqbrvvIzmnIDlpKfplb/luqbkuLogMTI4IOWtl+iKgueahOWtl+espuS4suOAglxuICAgICAqICAg5rOo5oSP5LqL6aG577yaXG4gICAgICogICAxLuaIv+mXtCBJRCDnlLHmgqjoh6rlt7HlrprkuYnjgIJcbiAgICAgKiAgIDIuIOS7heaUr+aMgeaVsOWtl++8jOiLseaWh+Wtl+espiDlkowgJ34nLCAnIScsICdAJywgJyMnLCAnJCcsICclJywgJ14nLCAnJicsICcqJywgJygnLCAnKScsICdfJywgJysnLCAnPScsICctJywgJ2AnLCAnOycsICfigJknLCAnLCcsICcuJywgJzwnLCAnPicsICdcXCfjgIJcbiAgICAgKiAgIDMuIOWmguaenOmcgOimgeS4jiBXZWIgU0RLIOS6kumAmu+8jOivt+S4jeimgeS9v+eUqCAnJSfjgIJcbiAgICAgKiBAcGFyYW0gbWVzc2FnZSDmtojmga/lhoXlrrnjgILmmK/lkKblv4XloavvvJrmmK/jgILlj5blgLzojIPlm7TvvJrplb/luqbkuI3otoXov4cgMTAyNCDlrZfoioLjgIJcbiAgICAgKiBAcmV0dXJuIOWPkemAgeW8ueW5lea2iOaBr+e7k+aenOmAmuefpeOAglxuICAgICAqL1xuICAgIHNlbmRCYXJyYWdlTWVzc2FnZShyb29tSUQsIG1lc3NhZ2UpIHtcbiAgICAgICAgcmV0dXJuIFplZ29FeHByZXNzRW5naW5lSW1wbC5nZXRJbnN0YW5jZSgpLnNlbmRCYXJyYWdlTWVzc2FnZShyb29tSUQsIG1lc3NhZ2UpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiDlj5HpgIHoh6rlrprkuYnkv6Hku6TjgIJcbiAgICAgKlxuICAgICAqIOaUr+aMgeeJiOacrO+8mjEuMi4xIOWPiuS7peS4iuOAglxuICAgICAqIOivpuaDheaPj+i/sO+8muWQkeW3sue7j+eZu+W9leebuOWQjOaIv+mXtOeahOWFtuS7lueUqOaIt+WPkemAgeeCueWvueeCueeahOS/oeS7pO+8jOa2iOaBr+WPr+mdoOOAglxuICAgICAqIOS4muWKoeWcuuaZr++8muS4gOiIrOeUqOS6jui/nOeoi+aOp+WItuS/oeS7pOaIlueUqOaIt+S4jueUqOaIt+S5i+mXtOeahOa2iOaBr+WPkemAgeOAglxuICAgICAqIOiwg+eUqOaXtuacuu+8muiwg+eUqCBbbG9naW5Sb29tXSDnmbvlvZXmiL/pl7TkuYvlkI7jgIJcbiAgICAgKiDkvb/nlKjpmZDliLbvvJrkuIDoiKzlnKjnm7Tmkq3miL/pl7TkurrmlbDkuI3otoXov4cgNTAwIOaXtuS9v+eUqOOAguWQjOS4gOaIv+mXtOWGheWQkeWNleS4queUqOaIt+WPkemAgeeahOiHquWumuS5iea2iOaBr+mikeeOh+S4jeiDvemrmOS6jiAyMDDmnaEvc++8jOWQkeWkmuS4queUqOaIt+WPkemAgeeahOiHquWumuS5iea2iOaBr+S4jeiDvemrmOS6jiAxMOadoS9z44CC5YWz5LqO5q2k5Ye95pWw55qE5L2/55So6ZmQ5Yi277yM6K+35Y+C6ICDIGh0dHBzOi8vZG9jLXpoLnplZ28uaW0vYXJ0aWNsZS83NTgxIOaIluiBlOezuyBaRUdPIOaKgOacr+aUr+aMgeOAglxuICAgICAqIOebuOWFs+Wbnuiwg++8muWPr+mAmui/hyBbb25JTVJlY3ZDdXN0b21Db21tYW5kXSDmjqXmlLbliLDmiL/pl7Toh6rlrprkuYnkv6Hku6TjgIJcbiAgICAgKiDnm7jlhbPmjqXlj6PvvJrlj6/pgJrov4cgW3NlbmRCcm9hZGNhc3RNZXNzYWdlXSDlh73mlbDlj5HpgIHlub/mkq3mtojmga/vvIzlj6/pgJrov4cgW3NlbmRCYXJyYWdlTWVzc2FnZV0g5Ye95pWw5Y+R6YCB5by55bmV5raI5oGv44CCXG4gICAgICog6ZqQ56eB5L+d5oqk5aOw5piO77ya6K+35Yu/5Zyo5q2k5o6l5Y+j5aGr5YaZ55So5oi35pWP5oSf5L+h5oGv77yM5YyF5ous5L2G5LiN6ZmQ5LqO5omL5py65Y+344CB6Lqr5Lu96K+B5Y+344CB5oqk54Wn57yW5Y+344CB55yf5a6e5aeT5ZCN562J44CCXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcm9vbUlEIOaIv+mXtCBJRO+8jOS4jeW+l+S4uuepuu+8jOacgOWkp+mVv+W6puS4uiAxMjgg5a2X6IqC55qE5a2X56ym5Liy44CCXG4gICAgICogICDms6jmhI/kuovpobnvvJpcbiAgICAgKiAgIDEu5oi/6Ze0IElEIOeUseaCqOiHquW3seWumuS5ieOAglxuICAgICAqICAgMi4g5LuF5pSv5oyB5pWw5a2X77yM6Iux5paH5a2X56ymIOWSjCAnficsICchJywgJ0AnLCAnIycsICckJywgJyUnLCAnXicsICcmJywgJyonLCAnKCcsICcpJywgJ18nLCAnKycsICc9JywgJy0nLCAnYCcsICc7JywgJ+KAmScsICcsJywgJy4nLCAnPCcsICc+JywgJ1xcJ+OAglxuICAgICAqICAgMy4g5aaC5p6c6ZyA6KaB5LiOIFdlYiBTREsg5LqS6YCa77yM6K+35LiN6KaB5L2/55SoICclJ+OAglxuICAgICAqIEBwYXJhbSBjb21tYW5kIOiHquWumuS5ieS/oeS7pOWGheWuueOAguaYr+WQpuW/heWhq++8muaYr+OAguWPluWAvOiMg+WbtO+8muacgOWkp+mVv+W6puS4uiAxMDI0IOWtl+iKguOAguazqOaEj+S6i+mhue+8muS4uuS/neaKpOmakOenge+8jOivt+WLv+WcqOatpOaOpeWPo+Whq+WGmeeUqOaIt+aVj+aEn+S/oeaBr++8jOWMheaLrOS9huS4jemZkOS6juaJi+acuuWPt+OAgei6q+S7veivgeWPt+OAgeaKpOeFp+e8luWPt+OAgeecn+WunuWnk+WQjeetieOAglxuICAgICAqIEBwYXJhbSB0b1VzZXJMaXN0IOS/oeS7pOeahOaOpeaUtuiAheWIl+ihqOOAguaYr+WQpuW/heWhq++8muaYr+OAguWPluWAvOiMg+WbtO+8mueUqOaIt+WIl+ihqOaIluiAhSBbbnVsbF3jgILms6jmhI/kuovpobnvvJrkuLogW251bGxdIOaXtiBTREsg5Zue5ZCR5oi/6Ze05YaF5omA5pyJ55So5oi35Y+R6YCB6Ieq5a6a5LmJ5L+h5Luk44CCXG4gICAgICogQHJldHVybiDlj5HpgIHlvLnluZXmtojmga/nu5PmnpzpgJrnn6XjgIJcbiAgICAgKi9cbiAgICBzZW5kQ3VzdG9tQ29tbWFuZChyb29tSUQsIGNvbW1hbmQsIHRvVXNlckxpc3QpIHtcbiAgICAgICAgcmV0dXJuIFplZ29FeHByZXNzRW5naW5lSW1wbC5nZXRJbnN0YW5jZSgpLnNlbmRDdXN0b21Db21tYW5kKHJvb21JRCwgY29tbWFuZCwgdG9Vc2VyTGlzdCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIOWIm+W7uuWqkuS9k+aSreaUvuWZqOWunuS+i+WvueixoeOAglxuICAgICAqXG4gICAgICog5pSv5oyB54mI5pys77yaMi4xLjAg5Y+K5Lul5LiK44CCXG4gICAgICog6K+m5oOF5o+P6L+w77ya5Yib5bu65aqS5L2T5pKt5pS+5Zmo5a6e5L6L5a+56LGh44CCXG4gICAgICog5Lia5Yqh5Zy65pmv77ya5bi455So5LqO5pKt5pS+5aqS5L2T6LWE5rqQ5Zy65pmv77yM5L6L5aaC5pKt5pS+6KeG6aKR5paH5Lu277yM57uT5ZCI6Ieq5a6a5LmJ6KeG6aKR6YeH6ZuG5bCG5aqS5L2T6LWE5rqQ55qE6KeG6aKR5pWw5o2u5o6o6YCB5Ye65Y6777yM6L+c56uv5Y+v5ouJ5rWB6KeC55yL44CCXG4gICAgICog6LCD55So5pe25py677ya5Zyo5Yid5aeL5YyWIFNESyBbY3JlYXRlRW5naW5lXSDkuYvlkI7jgIJcbiAgICAgKiDkvb/nlKjpmZDliLbvvJrnm67liY3mnIDlpJrmlK/mjIHliJvlu7ogNCDkuKrlrp7kvovvvIzotoXov4flkI7lsIbov5Tlm54gbnVsbOOAglxuICAgICAqIOazqOaEj+S6i+mhue+8muWqkuS9k+aSreaUvuWZqOeahOWunuS+i+i2iuWkmu+8jOWvueiuvuWkh+eahOaAp+iDveW8gOmUgOi2iuWkp+OAglxuICAgICAqIOebuOWFs+aOpeWPo++8mueUqOaIt+WPr+S7peiwg+eUqCBbZGVzdHJveU1lZGlhUGxheWVyXSDplIDmr4HlqpLkvZPmkq3mlL7lmajlrp7kvovlr7nosaHjgIJcbiAgICAgKlxuICAgICAqIEByZXR1cm4g5aqS5L2T5pKt5pS+5Zmo5a6e5L6L77yM6LaF6L+H5pyA5aSn5pWw6YeP6ZmQ5Yi25ZCO5bCG6L+U5ZueIG51bGzjgIJcbiAgICAgKi9cbiAgICBjcmVhdGVNZWRpYVBsYXllcigpIHtcbiAgICAgICAgcmV0dXJuIFplZ29FeHByZXNzRW5naW5lSW1wbC5nZXRJbnN0YW5jZSgpLmNyZWF0ZU1lZGlhUGxheWVyKCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIOmUgOavgeWqkuS9k+aSreaUvuWZqOWunuS+i+WvueixoeOAglxuICAgICAqXG4gICAgICog5pSv5oyB54mI5pys77yaMi4xLjAg5Y+K5Lul5LiK44CCXG4gICAgICog6K+m5oOF5o+P6L+w77ya6ZSA5q+B5aqS5L2T5pKt5pS+5Zmo5a6e5L6L5a+56LGh44CCXG4gICAgICog55u45YWz5o6l5Y+j77ya55So5oi35Y+v5Lul6LCD55SoIFtjcmVhdGVNZWRpYVBsYXllcl0g5Yib5bu65aqS5L2T5pKt5pS+5Zmo5a6e5L6L5a+56LGh44CCXG4gICAgICpcbiAgICAgKiBAcGFyYW0gbWVkaWFQbGF5ZXIg5aqS5L2T5pKt5pS+5Zmo5a6e5L6L5a+56LGh44CCXG4gICAgICovXG4gICAgZGVzdHJveU1lZGlhUGxheWVyKG1lZGlhUGxheWVyKSB7XG4gICAgICAgIHJldHVybiBaZWdvRXhwcmVzc0VuZ2luZUltcGwuZ2V0SW5zdGFuY2UoKS5kZXN0cm95TWVkaWFQbGF5ZXIobWVkaWFQbGF5ZXIpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiDlvIDlp4vmnKzlnLDlvZXliLbvvIznm7TmjqXlsIbpn7Pop4bpopHmlbDmja7lvZXliLbliLDmnKzlnLDmlofku7bjgIJcbiAgICAgKlxuICAgICAqIOaUr+aMgeeJiOacrO+8mjEuMTAuMCDlj4rku6XkuIrjgIJcbiAgICAgKiDor6bmg4Xmj4/ov7DvvJrlvIDlp4vlvZXliLbmnKznq6/pn7PpopHmiJbpn7Pop4bpopHvvIznm7TmjqXlsIbpn7Pop4bpopHmlbDmja7lvZXliLbliLDmnKzlnLDmlofku7bvvIzlvZXliLbnmoTmlbDmja7lsIbkuI7or6XpgJrpgZPmjqjmtYHnmoTmlbDmja7kuIDoh7TjgIJcbiAgICAgKiDkvb/nlKjpmZDliLbvvJrml6DjgIJcbiAgICAgKiDms6jmhI/kuovpobnvvJrlvZXliLbov4fnqIvkuK3kuI3lj6/ku6XlgZzmraLpooTop4ggW3N0b3BQcmV2aWV3XSDmiJblgZzmraLmjqjmtYEgW3N0b3BQdWJsaXNoaW5nU3RyZWFtXe+8jOWQpuWImSBTREsg5bCG5Li75Yqo57uT5p2f5b2T5YmN5b2V5Yi25Lu75Yqh44CC5aqS5L2T5pKt5pS+5Zmo55qE5pWw5o2u6ZyA6KaB5re35YWl5Yiw5o6o5rWB5Lit5omN6IO95b2V5Yi244CCXG4gICAgICog55u45YWz5Zue6LCD77ya5byA5aeL5b2V5Yi25ZCO5bCG5Lya5pS25YiwIFtvbkNhcHR1cmVkRGF0YVJlY29yZFN0YXRlVXBkYXRlXSDlvZXliLbnirbmgIHlm57osIPlkowgW29uQ2FwdHVyZWREYXRhUmVjb3JkUHJvZ3Jlc3NVcGRhdGVdIOW9leWItui/m+W6puWbnuiwg+OAglxuICAgICAqXG4gICAgICogQHBhcmFtIGNvbmZpZyDlvZXliLbphY3nva7lr7nosaHjgIJcbiAgICAgKiBAcGFyYW0gY2hhbm5lbCDmjqjmtYHpgJrpgZPjgIJcbiAgICAgKi9cbiAgICBzdGFydFJlY29yZGluZ0NhcHR1cmVkRGF0YShjb25maWcsIGNoYW5uZWwpIHtcbiAgICAgICAgcmV0dXJuIFplZ29FeHByZXNzRW5naW5lSW1wbC5nZXRJbnN0YW5jZSgpLnN0YXJ0UmVjb3JkaW5nQ2FwdHVyZWREYXRhKGNvbmZpZywgY2hhbm5lbCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIOe7k+adn+W9leWItuacrOerr+mfs+mikeaIlumfs+inhumikeOAglxuICAgICAqXG4gICAgICog5pSv5oyB54mI5pys77yaMS4xMC4wIOWPiuS7peS4iuOAglxuICAgICAqIOivpuaDheaPj+i/sO+8mue7k+adn+W9leWItuacrOerr+mfs+mikeaIlumfs+inhumikeOAglxuICAgICAqIOiwg+eUqOaXtuacuu+8muWcqCBbc3RhcnRSZWNvcmRpbmdDYXB0dXJlZERhdGFdIOS5i+WQjuOAglxuICAgICAqIOS9v+eUqOmZkOWItu+8muaXoOOAglxuICAgICAqXG4gICAgICogQHBhcmFtIGNoYW5uZWwg5o6o5rWB6YCa6YGT44CCXG4gICAgICovXG4gICAgc3RvcFJlY29yZGluZ0NhcHR1cmVkRGF0YShjaGFubmVsKSB7XG4gICAgICAgIHJldHVybiBaZWdvRXhwcmVzc0VuZ2luZUltcGwuZ2V0SW5zdGFuY2UoKS5zdG9wUmVjb3JkaW5nQ2FwdHVyZWREYXRhKGNoYW5uZWwpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiDjgJDlt7Llup/lvIPjgJHliJvlu7ogWmVnb0V4cHJlc3NFbmdpbmUg5Y2V5L6L5a+56LGh5bm25Yid5aeL5YyWIFNES+OAguatpOWHveaVsOWcqCAyLjE0LjAg54mI5pys5Y+K5Lul5LiK5bey5bqf5byD77yM6K+35L2/55So5LiN5bimIFtpc1Rlc3RFbnZdIOWPguaVsOeahOWQjOWQjeWHveaVsOS7o+abv+OAguivt+WPguiAgyBb5rWL6K+V546v5aKD5bqf5byD6K+05piOXShodHRwczovL2RvYy16aC56ZWdvLmltL2FydGljbGUvMTMxMDApXG4gICAgICpcbiAgICAgKiDmlK/mjIHniYjmnKzvvJoxLjEuMCB+IDIuMTMuMe+8jOatpOWHveaVsOWcqCAyLjE0LjAg54mI5pys5Y+K5Lul5LiK5bey5bqf5byD77yM6K+35L2/55So5LiN5bimIFtpc1Rlc3RFbnZdIOWPguaVsOeahOWQjOWQjeWHveaVsOS7o+abv+OAglxuICAgICAqIOivpuaDheaPj+i/sO+8muWIm+W7uiBaZWdvRXhwcmVzc0VuZ2luZSDljZXkvovlr7nosaHlubbliJ3lp4vljJYgU0RL44CCXG4gICAgICog6LCD55So5pe25py677yaU0RLIOWFtuS7luWunuS+i+aWueazleiwg+eUqOS5i+WJjeOAglxuICAgICAqIOS9v+eUqOmZkOWItu+8muaXoOOAglxuICAgICAqIOazqOaEj+S6i+mhue+8mlNESyDlj6rmlK/mjIHliJvlu7rkuIDkuKrlrp7kvovvvIzlpoLpnIDph43lpI3osIPnlKggW2NyZWF0ZUVuZ2luZV0g77yM5YiZ6ZyA5Zyo56ys5LqM5qyh6LCD55SoIFtjcmVhdGVFbmdpbmVdIOWJjeWFiOiwg+eUqCBbZGVzdHJveUVuZ2luZV0g5Ye95pWw6ZSA5q+B5byV5pOO77yM5ZCm5YiZ5YaN5qyh6LCD55So5q2k5Ye95pWw6L+U5Zue55qE6YO95piv5LiK5qyh5Yib5bu655qE5a+56LGh44CCXG4gICAgICpcbiAgICAgKiBAZGVwcmVjYXRlZCDmraTlh73mlbDlnKggMi4xNC4wIOeJiOacrOWPiuS7peS4iuW3suW6n+W8g++8jOivt+S9v+eUqOS4jeW4piBbaXNUZXN0RW52XSDlj4LmlbDnmoTlkIzlkI3lh73mlbDku6Pmm7/jgIJcbiAgICAgKiBAcGFyYW0gYXBwSUQgWkVHTyDkuLrlvIDlj5HogIXnrb7lj5HnmoTlupTnlKggSUTvvIzor7fku44gWkVHTyDnrqHnkIbmjqfliLblj7AgaHR0cHM6Ly9jb25zb2xlLWV4cHJlc3MuemVnby5pbSDnlLPor7fjgIJhcHBJRCDlj5blgLzojIPlm7QgMH40Mjk0OTY3Mjk144CCXG4gICAgICogQHBhcmFtIGFwcFNpZ24g5q+P5LiqIEFwcElEIOWvueW6lOeahOW6lOeUqOetvuWQje+8jOivt+S7jiBaRUdPIOeuoeeQhuaOp+WItuWPsOeUs+ivt+OAguivpeWPguaVsOS4uuWMheWQqyA2NCDkuKrlrZfnrKbnmoTlrZfnrKbkuLLvvIzlrZfnrKblj5blgLzojIPlm7TvvJonMCcgfiAnOScsICdhJyB+ICd6J+OAguS+i++8mlwiOWRjOWEyNWJoMmYyMTM3NDQ2ODk3MDcxYzhjMDMzZmEzM2I5MWMzZGQyYTg1ZTBjMDAwYWU4MmMwZGFkM1wi44CCMi4xNy4wIOWPiuS7peS4iueJiOacrCBhcHBTaWduIOWFgeiuuOS8oOepuuaIluiAheS4jeS8oOOAguWmguaenOS8oOepuuaIluiAheS4jeS8oO+8jOWImeW/hemhu+WcqOiwg+eUqCBbbG9naW5Sb29tXSDmjqXlj6PnmbvlvZXmiL/pl7Tml7blsIYgdG9rZW4g5aGr5YWlIFtaZWdvUm9vbUNvbmZpZ10g5Y+C5pWw5Lit77yM55So5LqO6Ym05p2D44CCdG9rZW4g55qE55Sf5oiQ5pa55byP6K+35Y+C6ICDIFvkvb/nlKggVG9rZW4g6Ym05p2DXShodHRwczovL2RvYy16aC56ZWdvLmltL2FydGljbGUvMTAzNjApIOOAglxuICAgICAqIEBwYXJhbSBpc1Rlc3RFbnYg44CQ5bey5bqf5byD44CR5Li65o+Q5L6b5pu05L6/5o2344CB5pu05qCH5YeG55qE5pyN5Yqh77yMWkVHTyDlt7Lnu5/kuIDnjq/looPmpoLlv7XvvIwyMDIxLTExLTE2IOS5i+WQju+8jOS4jeWGjeacieato+W8j+eOr+Wigy/mtYvor5Xnjq/looPkuYvliIbvvIwyMDIxLTExLTE2IOWPiuS5i+WJjeWcqCBaRUdPIOaOp+WItuWPsCDliJvlu7rpobnnm67nmoTnlKjmiLfvvIzlj6/lj4LogIMgW+a1i+ivleeOr+Wig+W6n+W8g+ivtOaYjl0oaHR0cHM6Ly9kb2MtemguemVnby5pbS9hcnRpY2xlLzEzMTAwKSDov5vooYwgU0RLIOWNh+e6p+WSjOiwg+aVtOebuOWFs+S7o+eggeOAglxuICAgICAqIEBwYXJhbSBzY2VuYXJpbyDmiL/pl7TlnLrmma/vvIxTREsg5Lya6ZKI5a+55oyH5a6a55qE5Zy65pmv55qE5YGa5LiA5Lqb6Z+z6KeG6aKR6YWN572u5LyY5YyW5Lul6L6+5oiQ5Zyo5q2k5Zy65pmv5LiL5pyA5LyY55qE5pWI5p6c44CC5oyH5a6a5Zy65pmv5ZCO77yM5byA5Y+R6ICF5Y+v5Lul5L2/55SoIFtzZXRSb29tU2NlbmFyaW9dIOadpeWunueOsOWcqOS4jemUgOavgeW8leaTjiBbZGVzdHJveUVuZ2luZV0g55qE5YmN5o+Q5LiL5YiH5o2i5YW25LuW5Zy65pmv44CC5oyH5a6a5Zy65pmv5ZCO77yM5byA5Y+R6ICF5Y+v5Lul6LCD55So5YW25LuWIEFQSSDmnaXnu6fnu63osIPmlbTpn7Pop4bpopHphY3nva7jgILlkITkuKrlnLrmma/kuYvpl7TnmoTlt67lvILku6Xlj4rlpoLkvZXpgInmi6nlkIjpgILnmoTlnLrmma/or7flj4LogIMgaHR0cHM6Ly9kb2MtemguemVnby5pbS9hcnRpY2xlLzE2MzE2XG4gICAgICogQHJldHVybiDlvJXmk47ljZXkvovlr7nosaFcbiAgICAgKi9cbiAgICBzdGF0aWMgY3JlYXRlRW5naW5lKGFwcElELCBhcHBTaWduLCBpc1Rlc3RFbnYsIHNjZW5hcmlvKSB7XG4gICAgICAgIHJldHVybiBaZWdvRXhwcmVzc0VuZ2luZUltcGwuY3JlYXRlRW5naW5lKGFwcElELCBhcHBTaWduLCBpc1Rlc3RFbnYsIHNjZW5hcmlvKTtcbiAgICB9XG59XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///34\n");
/***/ }),
/* 35 */
/*!***************************************************************!*\
!*** ./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;
/***/ }),
/* 36 */
/*!************************************************************!*\
!*** ./node_modules/@babel/runtime/helpers/createClass.js ***!
\************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var toPropertyKey = __webpack_require__(/*! ./toPropertyKey.js */ 19);
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;
/***/ }),
/* 37 */
/*!**************************************************************************************************************************************************************!*\
!*** E:/project/sxq/2024-10-16 chunwan/chunwan/uni_modules/zego-ZegoExpressUniApp-JS/components/zego-ZegoExpressUniApp-JS/lib/impl/ZegoExpressEngineImpl.js ***!
\**************************************************************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("/* WEBPACK VAR INJECTION */(function(__webpack_provided_uni_dot_requireNativePlugin) {\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 11);\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ZegoMediaPlayerImpl = exports.ZegoExpressEngineImpl = void 0;\nvar _regenerator = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/regenerator */ 12));\nvar _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ 18));\nvar _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ 15));\nvar _toConsumableArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ 39));\nvar _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ 35));\nvar _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/createClass */ 36));\nvar _index = __webpack_require__(/*! ../index */ 45);\nvar _ZegoExpressDefines = __webpack_require__(/*! ../ZegoExpressDefines */ 46);\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; }\nvar ZegoEvent = __webpack_provided_uni_dot_requireNativePlugin('globalEvent');\nvar ZegoExpressNativeEngineMoudle = __webpack_provided_uni_dot_requireNativePlugin('zego-ZegoExpressUniAppSDK_ZegoExpressUniAppEngine');\nvar Prefix = ZegoExpressNativeEngineMoudle.prefix();\nvar engine;\nvar ZegoExpressEngineImpl = /*#__PURE__*/function () {\n function ZegoExpressEngineImpl() {\n (0, _classCallCheck2.default)(this, ZegoExpressEngineImpl);\n }\n (0, _createClass2.default)(ZegoExpressEngineImpl, [{\n key: \"on\",\n value: function on(event, callback) {\n var native_listener = function native_listener(res) {\n var data = res.data;\n // @ts-ignore\n callback.apply(void 0, (0, _toConsumableArray2.default)(data));\n };\n var map = ZegoExpressEngineImpl._listeners.get(event);\n if (map === undefined) {\n map = new Map();\n ZegoExpressEngineImpl._listeners.set(event, map);\n }\n map.set(callback, native_listener);\n ZegoEvent.addEventListener(Prefix + event, native_listener);\n }\n }, {\n key: \"off\",\n value: function off(event, callback) {\n if (callback === undefined) {\n ZegoEvent.removeEventListener(Prefix + event);\n ZegoExpressEngineImpl._listeners.delete(event);\n } else {\n var map = ZegoExpressEngineImpl._listeners.get(event);\n if (map === undefined) return;\n ZegoEvent.removeEventListener(Prefix + event, map.get(callback));\n map.delete(callback);\n }\n }\n }, {\n key: \"uploadLog\",\n value: function uploadLog() {\n return ZegoExpressEngineImpl._callMethod(\"uploadLog\");\n }\n }, {\n key: \"callExperimentalAPI\",\n value: function callExperimentalAPI(params) {\n return ZegoExpressEngineImpl._callMethod(\"callExperimentalAPI\", {\n params: params\n });\n }\n }, {\n key: \"setDummyCaptureImagePath\",\n value: function setDummyCaptureImagePath(filePath) {\n var channel = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _ZegoExpressDefines.ZegoPublishChannel.Main;\n return ZegoExpressEngineImpl._callMethod(\"setDummyCaptureImagePath\", {\n filePath: filePath,\n channel: channel\n });\n }\n }, {\n key: \"loginRoom\",\n value: function loginRoom(roomID, user, config) {\n return ZegoExpressEngineImpl._callMethod(\"loginRoom\", {\n roomID: roomID,\n user: user,\n config: config\n });\n }\n }, {\n key: \"logoutRoom\",\n value: function logoutRoom(roomID) {\n return ZegoExpressEngineImpl._callMethod(\"logoutRoom\", {\n roomID: roomID\n });\n }\n }, {\n key: \"loginMultiRoom\",\n value: function loginMultiRoom(roomID, config) {\n return ZegoExpressEngineImpl._callMethod(\"loginMultiRoom\", {\n roomID: roomID,\n config: config\n });\n }\n }, {\n key: \"switchRoom\",\n value: function switchRoom(fromRoomID, toRoomID, config) {\n return ZegoExpressEngineImpl._callMethod(\"switchRoom\", {\n fromRoomID: fromRoomID,\n toRoomID: toRoomID,\n config: config\n });\n }\n }, {\n key: \"renewToken\",\n value: function renewToken(roomID, token) {\n return ZegoExpressEngineImpl._callMethod(\"renewToken\", {\n roomID: roomID,\n token: token\n });\n }\n }, {\n key: \"setRoomExtraInfo\",\n value: function setRoomExtraInfo(roomID, key, value) {\n return ZegoExpressEngineImpl._callMethod(\"setRoomExtraInfo\", {\n roomID: roomID,\n key: key,\n value: value\n });\n }\n }, {\n key: \"startPublishingStream\",\n value: function startPublishingStream(streamID) {\n var channel = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _ZegoExpressDefines.ZegoPublishChannel.Main;\n var config = arguments.length > 2 ? arguments[2] : undefined;\n return ZegoExpressEngineImpl._callMethod(\"startPublishingStream\", {\n streamID: streamID,\n channel: channel,\n config: config\n });\n }\n }, {\n key: \"stopPublishingStream\",\n value: function stopPublishingStream() {\n var channel = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _ZegoExpressDefines.ZegoPublishChannel.Main;\n return ZegoExpressEngineImpl._callMethod(\"stopPublishingStream\", {\n channel: channel\n });\n }\n }, {\n key: \"startPreview\",\n value: function startPreview() {\n var channel = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _ZegoExpressDefines.ZegoPublishChannel.Main;\n return ZegoExpressEngineImpl._callMethod(\"startPreview\", {\n channel: channel\n });\n }\n }, {\n key: \"setStreamExtraInfo\",\n value: function setStreamExtraInfo(extraInfo) {\n var channel = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _ZegoExpressDefines.ZegoPublishChannel.Main;\n return ZegoExpressEngineImpl._callMethod(\"setStreamExtraInfo\", {\n extraInfo: extraInfo,\n channel: channel\n });\n }\n }, {\n key: \"stopPreview\",\n value: function stopPreview() {\n var channel = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _ZegoExpressDefines.ZegoPublishChannel.Main;\n return ZegoExpressEngineImpl._callMethod(\"stopPreview\", {\n channel: channel\n });\n }\n }, {\n key: \"setVideoConfig\",\n value: function setVideoConfig(config) {\n var channel = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _ZegoExpressDefines.ZegoPublishChannel.Main;\n return ZegoExpressEngineImpl._callMethod(\"setVideoConfig\", {\n config: config,\n channel: channel\n });\n }\n }, {\n key: \"getVideoConfig\",\n value: function getVideoConfig() {\n var channel = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _ZegoExpressDefines.ZegoPublishChannel.Main;\n return ZegoExpressEngineImpl._callMethod(\"getVideoConfig\", {\n channel: channel\n });\n }\n }, {\n key: \"setVideoMirrorMode\",\n value: function setVideoMirrorMode(mode) {\n var channel = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _ZegoExpressDefines.ZegoPublishChannel.Main;\n return ZegoExpressEngineImpl._callMethod(\"setVideoMirrorMode\", {\n mode: mode,\n channel: channel\n });\n }\n }, {\n key: \"setAppOrientation\",\n value: function setAppOrientation(orientation) {\n var channel = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _ZegoExpressDefines.ZegoPublishChannel.Main;\n return ZegoExpressEngineImpl._callMethod(\"setAppOrientation\", {\n orientation: orientation,\n channel: channel\n });\n }\n }, {\n key: \"setAudioConfig\",\n value: function setAudioConfig(config) {\n var channel = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _ZegoExpressDefines.ZegoPublishChannel.Main;\n return ZegoExpressEngineImpl._callMethod(\"setAudioConfig\", {\n config: config,\n channel: channel\n });\n }\n }, {\n key: \"getAudioConfig\",\n value: function getAudioConfig() {\n var channel = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _ZegoExpressDefines.ZegoPublishChannel.Main;\n return ZegoExpressEngineImpl._callMethod(\"getAudioConfig\", {\n channel: channel\n });\n }\n }, {\n key: \"setPublishStreamEncryptionKey\",\n value: function setPublishStreamEncryptionKey(key) {\n var channel = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _ZegoExpressDefines.ZegoPublishChannel.Main;\n return ZegoExpressEngineImpl._callMethod(\"setPublishStreamEncryptionKey\", {\n key: key,\n channel: channel\n });\n }\n }, {\n key: \"takePublishStreamSnapshot\",\n value: function takePublishStreamSnapshot() {\n var channel = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _ZegoExpressDefines.ZegoPublishChannel.Main;\n return ZegoExpressEngineImpl._callMethod(\"takePublishStreamSnapshot\", {\n channel: channel\n });\n }\n }, {\n key: \"mutePublishStreamAudio\",\n value: function mutePublishStreamAudio(mute) {\n var channel = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _ZegoExpressDefines.ZegoPublishChannel.Main;\n return ZegoExpressEngineImpl._callMethod(\"mutePublishStreamAudio\", {\n mute: mute,\n channel: channel\n });\n }\n }, {\n key: \"mutePublishStreamVideo\",\n value: function mutePublishStreamVideo(mute) {\n var channel = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _ZegoExpressDefines.ZegoPublishChannel.Main;\n return ZegoExpressEngineImpl._callMethod(\"mutePublishStreamVideo\", {\n mute: mute,\n channel: channel\n });\n }\n }, {\n key: \"enableTrafficControl\",\n value: function enableTrafficControl(enable, property) {\n var channel = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _ZegoExpressDefines.ZegoPublishChannel.Main;\n return ZegoExpressEngineImpl._callMethod(\"enableTrafficControl\", {\n enable: enable,\n property: property,\n channel: channel\n });\n }\n }, {\n key: \"setMinVideoBitrateForTrafficControl\",\n value: function setMinVideoBitrateForTrafficControl(bitrate, mode) {\n var channel = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _ZegoExpressDefines.ZegoPublishChannel.Main;\n return ZegoExpressEngineImpl._callMethod(\"setMinVideoBitrateForTrafficControl\", {\n bitrate: bitrate,\n mode: mode,\n channel: channel\n });\n }\n }, {\n key: \"setCaptureVolume\",\n value: function setCaptureVolume(volume) {\n return ZegoExpressEngineImpl._callMethod(\"setCaptureVolume\", {\n volume: volume\n });\n }\n }, {\n key: \"addPublishCdnUrl\",\n value: function addPublishCdnUrl(streamID, targetURL) {\n return ZegoExpressEngineImpl._callMethod(\"addPublishCdnUrl\", {\n streamID: streamID,\n targetURL: targetURL\n });\n }\n }, {\n key: \"removePublishCdnUrl\",\n value: function removePublishCdnUrl(targetURL, streamID) {\n return ZegoExpressEngineImpl._callMethod(\"removePublishCdnUrl\", {\n targetURL: targetURL,\n streamID: streamID\n });\n }\n }, {\n key: \"enablePublishDirectToCDN\",\n value: function enablePublishDirectToCDN(enable, config) {\n var channel = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _ZegoExpressDefines.ZegoPublishChannel.Main;\n return ZegoExpressEngineImpl._callMethod(\"enablePublishDirectToCDN\", {\n enable: enable,\n config: config,\n channel: channel\n });\n }\n }, {\n key: \"setPublishWatermark\",\n value: function setPublishWatermark(watermark, isPreviewVisible) {\n var channel = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _ZegoExpressDefines.ZegoPublishChannel.Main;\n return ZegoExpressEngineImpl._callMethod(\"setPublishWatermark\", {\n watermark: watermark,\n isPreviewVisible: isPreviewVisible,\n channel: channel\n });\n }\n }, {\n key: \"sendSEI\",\n value: function sendSEI(data) {\n var channel = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _ZegoExpressDefines.ZegoPublishChannel.Main;\n return ZegoExpressEngineImpl._callMethod(\"sendSEI\", {\n data: data,\n channel: channel\n });\n }\n }, {\n key: \"enableHardwareEncoder\",\n value: function enableHardwareEncoder(enable) {\n return ZegoExpressEngineImpl._callMethod(\"enableHardwareEncoder\", {\n enable: enable\n });\n }\n }, {\n key: \"startPlayingStream\",\n value: function startPlayingStream(streamID, config) {\n return ZegoExpressEngineImpl._callMethod(\"startPlayingStream\", {\n streamID: streamID,\n config: config\n });\n }\n }, {\n key: \"stopPlayingStream\",\n value: function stopPlayingStream(streamID) {\n return ZegoExpressEngineImpl._callMethod(\"stopPlayingStream\", {\n streamID: streamID\n });\n }\n }, {\n key: \"setPlayStreamDecryptionKey\",\n value: function setPlayStreamDecryptionKey(key, streamID) {\n return ZegoExpressEngineImpl._callMethod(\"setPlayStreamDecryptionKey\", {\n key: key,\n streamID: streamID\n });\n }\n }, {\n key: \"takePlayStreamSnapshot\",\n value: function takePlayStreamSnapshot(streamID) {\n return ZegoExpressEngineImpl._callMethod(\"takePlayStreamSnapshot\", {\n streamID: streamID\n });\n }\n }, {\n key: \"setPlayVolume\",\n value: function setPlayVolume(streamID, volume) {\n return ZegoExpressEngineImpl._callMethod(\"setPlayVolume\", {\n streamID: streamID,\n volume: volume\n });\n }\n }, {\n key: \"setAllPlayStreamVolume\",\n value: function setAllPlayStreamVolume(volume) {\n return ZegoExpressEngineImpl._callMethod(\"setAllPlayStreamVolume\", {\n volume: volume\n });\n }\n }, {\n key: \"setPlayStreamVideoType\",\n value: function setPlayStreamVideoType(streamID, streamType) {\n return ZegoExpressEngineImpl._callMethod(\"setPlayStreamVideoType\", {\n streamID: streamID,\n streamType: streamType\n });\n }\n }, {\n key: \"setPlayStreamBufferIntervalRange\",\n value: function setPlayStreamBufferIntervalRange(streamID, minBufferInterval, maxBufferInterval) {\n return ZegoExpressEngineImpl._callMethod(\"setPlayStreamBufferIntervalRange\", {\n streamID: streamID,\n minBufferInterval: minBufferInterval,\n maxBufferInterval: maxBufferInterval\n });\n }\n }, {\n key: \"setPlayStreamFocusOn\",\n value: function setPlayStreamFocusOn(streamID) {\n return ZegoExpressEngineImpl._callMethod(\"setPlayStreamFocusOn\", {\n streamID: streamID\n });\n }\n }, {\n key: \"mutePlayStreamAudio\",\n value: function mutePlayStreamAudio(streamID, mute) {\n return ZegoExpressEngineImpl._callMethod(\"mutePlayStreamAudio\", {\n streamID: streamID,\n mute: mute\n });\n }\n }, {\n key: \"mutePlayStreamVideo\",\n value: function mutePlayStreamVideo(streamID, mute) {\n return ZegoExpressEngineImpl._callMethod(\"mutePlayStreamVideo\", {\n streamID: streamID,\n mute: mute\n });\n }\n }, {\n key: \"muteAllPlayStreamAudio\",\n value: function muteAllPlayStreamAudio(mute) {\n return ZegoExpressEngineImpl._callMethod(\"muteAllPlayStreamAudio\", {\n mute: mute\n });\n }\n }, {\n key: \"muteAllPlayStreamVideo\",\n value: function muteAllPlayStreamVideo(mute) {\n return ZegoExpressEngineImpl._callMethod(\"muteAllPlayStreamVideo\", {\n mute: mute\n });\n }\n }, {\n key: \"enableHardwareDecoder\",\n value: function enableHardwareDecoder(enable) {\n return ZegoExpressEngineImpl._callMethod(\"enableHardwareDecoder\", {\n enable: enable\n });\n }\n }, {\n key: \"enableCheckPoc\",\n value: function enableCheckPoc(enable) {\n return ZegoExpressEngineImpl._callMethod(\"enableCheckPoc\", {\n enable: enable\n });\n }\n }, {\n key: \"startMixerTask\",\n value: function startMixerTask(task) {\n return ZegoExpressEngineImpl._callMethod(\"startMixerTask\", {\n task: task\n });\n }\n }, {\n key: \"stopMixerTask\",\n value: function stopMixerTask(task) {\n return ZegoExpressEngineImpl._callMethod(\"stopMixerTask\", {\n task: task\n });\n }\n }, {\n key: \"startAutoMixerTask\",\n value: function startAutoMixerTask(task) {\n return ZegoExpressEngineImpl._callMethod(\"startAutoMixerTask\", {\n task: task\n });\n }\n }, {\n key: \"stopAutoMixerTask\",\n value: function stopAutoMixerTask(task) {\n return ZegoExpressEngineImpl._callMethod(\"stopAutoMixerTask\", {\n task: task\n });\n }\n }, {\n key: \"muteMicrophone\",\n value: function muteMicrophone(mute) {\n return ZegoExpressEngineImpl._callMethod(\"muteMicrophone\", {\n mute: mute\n });\n }\n }, {\n key: \"isMicrophoneMuted\",\n value: function isMicrophoneMuted() {\n return ZegoExpressEngineImpl._callMethod(\"isMicrophoneMuted\");\n }\n }, {\n key: \"muteSpeaker\",\n value: function muteSpeaker(mute) {\n return ZegoExpressEngineImpl._callMethod(\"muteSpeaker\", {\n mute: mute\n });\n }\n }, {\n key: \"isSpeakerMuted\",\n value: function isSpeakerMuted() {\n return ZegoExpressEngineImpl._callMethod(\"isSpeakerMuted\");\n }\n }, {\n key: \"enableAudioCaptureDevice\",\n value: function enableAudioCaptureDevice(enable) {\n return ZegoExpressEngineImpl._callMethod(\"enableAudioCaptureDevice\", {\n enable: enable\n });\n }\n }, {\n key: \"getAudioRouteType\",\n value: function getAudioRouteType() {\n return ZegoExpressEngineImpl._callMethod(\"getAudioRouteType\");\n }\n }, {\n key: \"setAudioRouteToSpeaker\",\n value: function setAudioRouteToSpeaker(defaultToSpeaker) {\n return ZegoExpressEngineImpl._callMethod(\"setAudioRouteToSpeaker\", {\n defaultToSpeaker: defaultToSpeaker\n });\n }\n }, {\n key: \"enableCamera\",\n value: function enableCamera(enable) {\n var channel = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _ZegoExpressDefines.ZegoPublishChannel.Main;\n return ZegoExpressEngineImpl._callMethod(\"enableCamera\", {\n enable: enable,\n channel: channel\n });\n }\n }, {\n key: \"useFrontCamera\",\n value: function useFrontCamera(enable) {\n var channel = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _ZegoExpressDefines.ZegoPublishChannel.Main;\n return ZegoExpressEngineImpl._callMethod(\"useFrontCamera\", {\n enable: enable,\n channel: channel\n });\n }\n }, {\n key: \"setCameraZoomFactor\",\n value: function setCameraZoomFactor(factor) {\n var channel = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _ZegoExpressDefines.ZegoPublishChannel.Main;\n return ZegoExpressEngineImpl._callMethod(\"setCameraZoomFactor\", {\n factor: factor,\n channel: channel\n });\n }\n }, {\n key: \"getCameraMaxZoomFactor\",\n value: function getCameraMaxZoomFactor() {\n var channel = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _ZegoExpressDefines.ZegoPublishChannel.Main;\n return ZegoExpressEngineImpl._callMethod(\"getCameraMaxZoomFactor\", {\n channel: channel\n });\n }\n }, {\n key: \"startSoundLevelMonitor\",\n value: function startSoundLevelMonitor(config) {\n return ZegoExpressEngineImpl._callMethod(\"startSoundLevelMonitor\", {\n config: config\n });\n }\n }, {\n key: \"stopSoundLevelMonitor\",\n value: function stopSoundLevelMonitor() {\n return ZegoExpressEngineImpl._callMethod(\"stopSoundLevelMonitor\");\n }\n }, {\n key: \"startAudioSpectrumMonitor\",\n value: function startAudioSpectrumMonitor(millisecond) {\n return ZegoExpressEngineImpl._callMethod(\"startAudioSpectrumMonitor\", {\n millisecond: millisecond\n });\n }\n }, {\n key: \"stopAudioSpectrumMonitor\",\n value: function stopAudioSpectrumMonitor() {\n return ZegoExpressEngineImpl._callMethod(\"stopAudioSpectrumMonitor\");\n }\n }, {\n key: \"enableHeadphoneMonitor\",\n value: function enableHeadphoneMonitor(enable) {\n return ZegoExpressEngineImpl._callMethod(\"enableHeadphoneMonitor\", {\n enable: enable\n });\n }\n }, {\n key: \"setHeadphoneMonitorVolume\",\n value: function setHeadphoneMonitorVolume(volume) {\n return ZegoExpressEngineImpl._callMethod(\"setHeadphoneMonitorVolume\", {\n volume: volume\n });\n }\n }, {\n key: \"enableAEC\",\n value: function enableAEC(enable) {\n return ZegoExpressEngineImpl._callMethod(\"enableAEC\", {\n enable: enable\n });\n }\n }, {\n key: \"enableHeadphoneAEC\",\n value: function enableHeadphoneAEC(enable) {\n return ZegoExpressEngineImpl._callMethod(\"enableHeadphoneAEC\", {\n enable: enable\n });\n }\n }, {\n key: \"setAECMode\",\n value: function setAECMode(mode) {\n return ZegoExpressEngineImpl._callMethod(\"setAECMode\", {\n mode: mode\n });\n }\n }, {\n key: \"enableAGC\",\n value: function enableAGC(enable) {\n return ZegoExpressEngineImpl._callMethod(\"enableAGC\", {\n enable: enable\n });\n }\n }, {\n key: \"enableANS\",\n value: function enableANS(enable) {\n return ZegoExpressEngineImpl._callMethod(\"enableANS\", {\n enable: enable\n });\n }\n }, {\n key: \"enableTransientANS\",\n value: function enableTransientANS(enable) {\n return ZegoExpressEngineImpl._callMethod(\"enableTransientANS\", {\n enable: enable\n });\n }\n }, {\n key: \"setANSMode\",\n value: function setANSMode(mode) {\n return ZegoExpressEngineImpl._callMethod(\"setANSMode\", {\n mode: mode\n });\n }\n }, {\n key: \"startEffectsEnv\",\n value: function startEffectsEnv() {\n return ZegoExpressEngineImpl._callMethod(\"startEffectsEnv\");\n }\n }, {\n key: \"stopEffectsEnv\",\n value: function stopEffectsEnv() {\n return ZegoExpressEngineImpl._callMethod(\"stopEffectsEnv\");\n }\n }, {\n key: \"enableEffectsBeauty\",\n value: function enableEffectsBeauty(enable) {\n return ZegoExpressEngineImpl._callMethod(\"enableEffectsBeauty\", {\n enable: enable\n });\n }\n }, {\n key: \"setEffectsBeautyParam\",\n value: function setEffectsBeautyParam(param) {\n return ZegoExpressEngineImpl._callMethod(\"setEffectsBeautyParam\", {\n param: param\n });\n }\n }, {\n key: \"setAudioEqualizerGain\",\n value: function setAudioEqualizerGain(bandGain, bandIndex) {\n return ZegoExpressEngineImpl._callMethod(\"setAudioEqualizerGain\", {\n bandGain: bandGain,\n bandIndex: bandIndex\n });\n }\n }, {\n key: \"setVoiceChangerParam\",\n value: function setVoiceChangerParam(param, audioChannel) {\n return ZegoExpressEngineImpl._callMethod(\"setVoiceChangerParam\", {\n param: param,\n audioChannel: audioChannel\n });\n }\n }, {\n key: \"enableVirtualStereo\",\n value: function enableVirtualStereo(enable, angle) {\n return ZegoExpressEngineImpl._callMethod(\"enableVirtualStereo\", {\n enable: enable,\n angle: angle\n });\n }\n }, {\n key: \"sendBroadcastMessage\",\n value: function sendBroadcastMessage(roomID, message) {\n return ZegoExpressEngineImpl._callMethod(\"sendBroadcastMessage\", {\n roomID: roomID,\n message: message\n });\n }\n }, {\n key: \"sendBarrageMessage\",\n value: function sendBarrageMessage(roomID, message) {\n return ZegoExpressEngineImpl._callMethod(\"sendBarrageMessage\", {\n roomID: roomID,\n message: message\n });\n }\n }, {\n key: \"sendCustomCommand\",\n value: function sendCustomCommand(roomID, command, toUserList) {\n return ZegoExpressEngineImpl._callMethod(\"sendCustomCommand\", {\n roomID: roomID,\n command: command,\n toUserList: toUserList\n });\n }\n }, {\n key: \"startScreenCapture\",\n value: function startScreenCapture() {\n return ZegoExpressEngineImpl._callMethod(\"startScreenCapture\");\n }\n }, {\n key: \"stopScreenCapture\",\n value: function stopScreenCapture() {\n return ZegoExpressEngineImpl._callMethod(\"stopScreenCapture\");\n }\n }, {\n key: \"enableTorch\",\n value: function enableTorch(enable) {\n var channel = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _ZegoExpressDefines.ZegoPublishChannel.Main;\n return ZegoExpressEngineImpl._callMethod(\"enableTorch\", {\n enable: enable,\n channel: channel\n });\n }\n }, {\n key: \"createMediaPlayer\",\n value: function () {\n var _createMediaPlayer = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {\n var _yield$ZegoExpressEng, playerID, mediaPlayer;\n return _regenerator.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return ZegoExpressEngineImpl._callMethod(\"createMediaPlayer\");\n case 2:\n _yield$ZegoExpressEng = _context.sent;\n playerID = _yield$ZegoExpressEng.playerID;\n if (!(playerID >= 0)) {\n _context.next = 8;\n break;\n }\n mediaPlayer = new ZegoMediaPlayerImpl(playerID);\n ZegoExpressEngineImpl._mediaPlayerMap.set(playerID, mediaPlayer);\n return _context.abrupt(\"return\", mediaPlayer);\n case 8:\n return _context.abrupt(\"return\", undefined);\n case 9:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n }));\n function createMediaPlayer() {\n return _createMediaPlayer.apply(this, arguments);\n }\n return createMediaPlayer;\n }()\n }, {\n key: \"destroyMediaPlayer\",\n value: function () {\n var _destroyMediaPlayer = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(mediaPlayer) {\n var index;\n return _regenerator.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n index = mediaPlayer.getIndex();\n if (!(index >= 0)) {\n _context2.next = 8;\n break;\n }\n _context2.next = 4;\n return ZegoExpressEngineImpl._callMethod(\"destroyMediaPlayer\", {\n index: index\n });\n case 4:\n ZegoExpressEngineImpl._mediaPlayerMap.delete(index);\n mediaPlayer.off(\"mediaPlayerStateUpdate\");\n mediaPlayer.off(\"mediaPlayerNetworkEvent\");\n mediaPlayer.off(\"mediaPlayerPlayingProgress\");\n case 8:\n return _context2.abrupt(\"return\");\n case 9:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2);\n }));\n function destroyMediaPlayer(_x) {\n return _destroyMediaPlayer.apply(this, arguments);\n }\n return destroyMediaPlayer;\n }()\n }, {\n key: \"startRecordingCapturedData\",\n value: function startRecordingCapturedData(config) {\n var channel = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _ZegoExpressDefines.ZegoPublishChannel.Main;\n return ZegoExpressEngineImpl._callMethod(\"startRecordingCapturedData\", {\n config: config,\n channel: channel\n });\n }\n }, {\n key: \"stopRecordingCapturedData\",\n value: function stopRecordingCapturedData() {\n var channel = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _ZegoExpressDefines.ZegoPublishChannel.Main;\n return ZegoExpressEngineImpl._callMethod(\"stopRecordingCapturedData\", {\n channel: channel\n });\n }\n }], [{\n key: \"_callMethod\",\n value: function _callMethod(method, args) {\n return new Promise(function (resolve, _) {\n ZegoExpressNativeEngineMoudle.callMethod({\n method: method,\n args: args\n }, function (res) {\n resolve(res);\n });\n });\n }\n }, {\n key: \"getInstance\",\n value: function getInstance() {\n if (engine) {\n return engine;\n }\n throw new Error('Get instance failed, Please create engine first');\n }\n }, {\n key: \"createEngineWithProfile\",\n value: function () {\n var _createEngineWithProfile = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(profile) {\n return _regenerator.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n if (!engine) {\n _context3.next = 2;\n break;\n }\n return _context3.abrupt(\"return\", engine);\n case 2:\n _context3.next = 4;\n return ZegoExpressEngineImpl._callMethod(\"createEngineWithProfile\", {\n profile: profile\n });\n case 4:\n engine = new ZegoExpressEngineImpl();\n _context3.next = 7;\n return ZegoExpressEngineImpl._callMethod(\"setPluginVersion\", {\n version: _index.pluginVersion\n });\n case 7:\n return _context3.abrupt(\"return\", engine);\n case 8:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3);\n }));\n function createEngineWithProfile(_x2) {\n return _createEngineWithProfile.apply(this, arguments);\n }\n return createEngineWithProfile;\n }()\n }, {\n key: \"createEngine\",\n value: function () {\n var _createEngine = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4(appID, appSign, isTestEnv, scenario) {\n return _regenerator.default.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n if (!engine) {\n _context4.next = 2;\n break;\n }\n return _context4.abrupt(\"return\", engine);\n case 2:\n _context4.next = 4;\n return ZegoExpressEngineImpl._callMethod(\"createEngine\", {\n appID: appID,\n appSign: appSign,\n isTestEnv: isTestEnv,\n scenario: scenario\n });\n case 4:\n engine = new ZegoExpressEngineImpl();\n _context4.next = 7;\n return ZegoExpressEngineImpl._callMethod(\"setPluginVersion\", {\n version: _index.pluginVersion\n });\n case 7:\n return _context4.abrupt(\"return\", engine);\n case 8:\n case \"end\":\n return _context4.stop();\n }\n }\n }, _callee4);\n }));\n function createEngine(_x3, _x4, _x5, _x6) {\n return _createEngine.apply(this, arguments);\n }\n return createEngine;\n }()\n }, {\n key: \"destroyEngine\",\n value: function () {\n var _destroyEngine = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5() {\n return _regenerator.default.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n engine = undefined;\n ZegoExpressEngineImpl._mediaPlayerMap.forEach(function (_, key) {\n ZegoExpressEngineImpl._callMethod(\"destroyMediaPlayer\", {\n key: key\n });\n });\n _context5.next = 4;\n return ZegoExpressEngineImpl._callMethod(\"destroyEngine\");\n case 4:\n ZegoExpressEngineImpl._listeners.forEach(function (_, key) {\n ZegoEvent.removeEventListener(Prefix + key);\n });\n ZegoExpressEngineImpl._listeners.clear();\n ZegoExpressEngineImpl._mediaPlayerMap.clear();\n case 7:\n case \"end\":\n return _context5.stop();\n }\n }\n }, _callee5);\n }));\n function destroyEngine() {\n return _destroyEngine.apply(this, arguments);\n }\n return destroyEngine;\n }()\n }, {\n key: \"setLogConfig\",\n value: function setLogConfig(config) {\n return ZegoExpressEngineImpl._callMethod(\"setLogConfig\", {\n config: config\n });\n }\n }, {\n key: \"getVersion\",\n value: function getVersion() {\n return ZegoExpressEngineImpl._callMethod(\"getVersion\");\n }\n }, {\n key: \"setEngineConfig\",\n value: function setEngineConfig(config) {\n return ZegoExpressEngineImpl._callMethod(\"setEngineConfig\", {\n config: config\n });\n }\n }, {\n key: \"setRoomMode\",\n value: function setRoomMode(mode) {\n return ZegoExpressEngineImpl._callMethod(\"setRoomMode\", {\n mode: mode\n });\n }\n }]);\n return ZegoExpressEngineImpl;\n}();\nexports.ZegoExpressEngineImpl = ZegoExpressEngineImpl;\nZegoExpressEngineImpl._listeners = new Map();\nZegoExpressEngineImpl._mediaPlayerMap = new Map();\nvar ZegoMediaPlayerImpl = /*#__PURE__*/function () {\n function ZegoMediaPlayerImpl(index) {\n (0, _classCallCheck2.default)(this, ZegoMediaPlayerImpl);\n this._index = index;\n }\n (0, _createClass2.default)(ZegoMediaPlayerImpl, [{\n key: \"_callMethod\",\n value: function _callMethod(method, args) {\n var _this = this;\n return new Promise(function (resolve, _) {\n ZegoExpressNativeEngineMoudle.callMethod({\n method: method,\n args: _objectSpread({\n playerID: _this._index\n }, args)\n }, function (res) {\n resolve(res);\n });\n });\n }\n }, {\n key: \"on\",\n value: function on(event, callback) {\n var native_listener = function native_listener(res) {\n var data = res.data,\n idx = res.idx;\n if (idx >= 0) {\n var mediaPlayer = ZegoExpressEngineImpl._mediaPlayerMap.get(idx);\n // @ts-ignore\n callback.apply(void 0, [mediaPlayer].concat((0, _toConsumableArray2.default)(data)));\n }\n };\n var map = ZegoExpressEngineImpl._listeners.get(event);\n if (map === undefined) {\n map = new Map();\n ZegoExpressEngineImpl._listeners.set(event, map);\n }\n map.set(callback, native_listener);\n ZegoEvent.addEventListener(Prefix + event, native_listener);\n ZegoExpressEngineImpl._listeners.set(event, map);\n }\n }, {\n key: \"off\",\n value: function off(event, callback) {\n if (callback === undefined) {\n ZegoEvent.removeEventListener(Prefix + event);\n ZegoExpressEngineImpl._listeners.delete(event);\n } else {\n var map = ZegoExpressEngineImpl._listeners.get(event);\n if (map === undefined) {\n return;\n }\n ZegoEvent.removeEventListener(Prefix + event, map.get(callback));\n map.delete(callback);\n }\n }\n }, {\n key: \"loadResource\",\n value: function loadResource(path) {\n return this._callMethod(\"mediaPlayerLoadResource\", {\n path: path\n });\n }\n }, {\n key: \"loadResourceWithConfig\",\n value: function loadResourceWithConfig(config) {\n return this._callMethod(\"mediaPlayerLoadResourceWithConfig\", {\n config: config\n });\n }\n }, {\n key: \"start\",\n value: function start() {\n return this._callMethod(\"mediaPlayerStart\");\n }\n }, {\n key: \"stop\",\n value: function stop() {\n return this._callMethod(\"mediaPlayerStop\");\n }\n }, {\n key: \"pause\",\n value: function pause() {\n return this._callMethod(\"mediaPlayerPause\");\n }\n }, {\n key: \"resume\",\n value: function resume() {\n return this._callMethod(\"mediaPlayerResume\");\n }\n }, {\n key: \"setPlayerView\",\n value: function setPlayerView(playerID) {\n return this._callMethod(\"mediaPlayerSetPlayerView\", {\n playerID: playerID\n });\n }\n }, {\n key: \"seekTo\",\n value: function seekTo(millisecond) {\n return this._callMethod(\"mediaPlayerSeekTo\", {\n millisecond: millisecond\n });\n }\n }, {\n key: \"enableRepeat\",\n value: function enableRepeat(enable) {\n return this._callMethod(\"mediaPlayerEnableRepeat\", {\n enable: enable\n });\n }\n }, {\n key: \"enableAux\",\n value: function enableAux(enable) {\n return this._callMethod(\"mediaPlayerEnableAux\", {\n enable: enable\n });\n }\n }, {\n key: \"setPlaySpeed\",\n value: function setPlaySpeed(speed) {\n return this._callMethod(\"mediaPlayerSetPlaySpeed\", {\n speed: speed\n });\n }\n }, {\n key: \"muteLocal\",\n value: function muteLocal(mute) {\n return this._callMethod(\"mediaPlayerMuteLocal\", {\n mute: mute\n });\n }\n }, {\n key: \"setVolume\",\n value: function setVolume(volume) {\n return this._callMethod(\"mediaPlayerSetVolume\", {\n volume: volume\n });\n }\n }, {\n key: \"setPlayVolume\",\n value: function setPlayVolume(volume) {\n return this._callMethod(\"mediaPlayerSetPlayVolume\", {\n volume: volume\n });\n }\n }, {\n key: \"setPublishVolume\",\n value: function setPublishVolume(volume) {\n return this._callMethod(\"mediaPlayerSetPublishVolume\", {\n volume: volume\n });\n }\n }, {\n key: \"setProgressInterval\",\n value: function setProgressInterval(millisecond) {\n return this._callMethod(\"mediaPlayerSetProgressInterval\", {\n millisecond: millisecond\n });\n }\n }, {\n key: \"setAudioTrackIndex\",\n value: function setAudioTrackIndex(index) {\n return this._callMethod(\"mediaPlayerSetAudioTrackIndex\", {\n index: index\n });\n }\n }, {\n key: \"setVoiceChangerParam\",\n value: function setVoiceChangerParam(param, audioChannel) {\n return this._callMethod(\"mediaPlayerSetVoiceChangerParam\", {\n param: param,\n audioChannel: audioChannel\n });\n }\n }, {\n key: \"takeSnapshot\",\n value: function takeSnapshot() {\n return this._callMethod(\"mediaPlayerTakeSnapshot\");\n }\n }, {\n key: \"setNetworkResourceMaxCache\",\n value: function setNetworkResourceMaxCache(time, size) {\n return this._callMethod(\"mediaPlayerSetNetworkResourceMaxCache\", {\n time: time,\n size: size\n });\n }\n }, {\n key: \"setNetworkBufferThreshold\",\n value: function setNetworkBufferThreshold(threshold) {\n return this._callMethod(\"mediaPlayerSetNetworkBufferThreshold\", {\n threshold: threshold\n });\n }\n }, {\n key: \"enableAccurateSeek\",\n value: function enableAccurateSeek(enable, config) {\n return this._callMethod(\"mediaPlayerEnableAccurateSeek\", {\n enable: enable,\n config: config\n });\n }\n }, {\n key: \"getNetworkResourceCache\",\n value: function getNetworkResourceCache() {\n return this._callMethod(\"mediaPlayerGetNetworkResourceCache\");\n }\n }, {\n key: \"getPlayVolume\",\n value: function getPlayVolume() {\n return this._callMethod(\"mediaPlayerGetPlayVolume\");\n }\n }, {\n key: \"getPublishVolume\",\n value: function getPublishVolume() {\n return this._callMethod(\"mediaPlayerGetPublishVolume\");\n }\n }, {\n key: \"getTotalDuration\",\n value: function getTotalDuration() {\n return this._callMethod(\"mediaPlayerGetTotalDuration\");\n }\n }, {\n key: \"getCurrentProgress\",\n value: function getCurrentProgress() {\n return this._callMethod(\"mediaPlayerGetCurrentProgress\");\n }\n }, {\n key: \"getAudioTrackCount\",\n value: function getAudioTrackCount() {\n return this._callMethod(\"mediaPlayerGetAudioTrackCount\");\n }\n }, {\n key: \"getCurrentState\",\n value: function getCurrentState() {\n return this._callMethod(\"mediaPlayerGetCurrentState\");\n }\n }, {\n key: \"getIndex\",\n value: function getIndex() {\n return this._index;\n }\n }]);\n return ZegoMediaPlayerImpl;\n}();\nexports.ZegoMediaPlayerImpl = ZegoMediaPlayerImpl;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-hbuilderx/packages/uni-app-plus-nvue/dist/require-native-plugin.js */ 38)[\"default\"]))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vdW5pX21vZHVsZXMvemVnby1aZWdvRXhwcmVzc1VuaUFwcC1KUy9jb21wb25lbnRzL3plZ28tWmVnb0V4cHJlc3NVbmlBcHAtSlMvbGliL2ltcGwvWmVnb0V4cHJlc3NFbmdpbmVJbXBsLmpzIl0sIm5hbWVzIjpbIlplZ29FdmVudCIsInVuaSIsIlplZ29FeHByZXNzTmF0aXZlRW5naW5lTW91ZGxlIiwiUHJlZml4IiwicHJlZml4IiwiZW5naW5lIiwiWmVnb0V4cHJlc3NFbmdpbmVJbXBsIiwiZXZlbnQiLCJjYWxsYmFjayIsIm5hdGl2ZV9saXN0ZW5lciIsInJlcyIsImRhdGEiLCJtYXAiLCJfbGlzdGVuZXJzIiwiZ2V0IiwidW5kZWZpbmVkIiwiTWFwIiwic2V0IiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJkZWxldGUiLCJfY2FsbE1ldGhvZCIsInBhcmFtcyIsImZpbGVQYXRoIiwiY2hhbm5lbCIsIlplZ29QdWJsaXNoQ2hhbm5lbCIsIk1haW4iLCJyb29tSUQiLCJ1c2VyIiwiY29uZmlnIiwiZnJvbVJvb21JRCIsInRvUm9vbUlEIiwidG9rZW4iLCJrZXkiLCJ2YWx1ZSIsInN0cmVhbUlEIiwiZXh0cmFJbmZvIiwibW9kZSIsIm9yaWVudGF0aW9uIiwibXV0ZSIsImVuYWJsZSIsInByb3BlcnR5IiwiYml0cmF0ZSIsInZvbHVtZSIsInRhcmdldFVSTCIsIndhdGVybWFyayIsImlzUHJldmlld1Zpc2libGUiLCJzdHJlYW1UeXBlIiwibWluQnVmZmVySW50ZXJ2YWwiLCJtYXhCdWZmZXJJbnRlcnZhbCIsInRhc2siLCJkZWZhdWx0VG9TcGVha2VyIiwiZmFjdG9yIiwibWlsbGlzZWNvbmQiLCJwYXJhbSIsImJhbmRHYWluIiwiYmFuZEluZGV4IiwiYXVkaW9DaGFubmVsIiwiYW5nbGUiLCJtZXNzYWdlIiwiY29tbWFuZCIsInRvVXNlckxpc3QiLCJwbGF5ZXJJRCIsIm1lZGlhUGxheWVyIiwiWmVnb01lZGlhUGxheWVySW1wbCIsIl9tZWRpYVBsYXllck1hcCIsImluZGV4IiwiZ2V0SW5kZXgiLCJvZmYiLCJtZXRob2QiLCJhcmdzIiwiUHJvbWlzZSIsInJlc29sdmUiLCJfIiwiY2FsbE1ldGhvZCIsIkVycm9yIiwicHJvZmlsZSIsInZlcnNpb24iLCJwbHVnaW5WZXJzaW9uIiwiYXBwSUQiLCJhcHBTaWduIiwiaXNUZXN0RW52Iiwic2NlbmFyaW8iLCJmb3JFYWNoIiwiY2xlYXIiLCJfaW5kZXgiLCJpZHgiLCJwYXRoIiwic3BlZWQiLCJ0aW1lIiwic2l6ZSIsInRocmVzaG9sZCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFBMkQ7QUFBQTtBQUMzRCxJQUFNQSxTQUFTLEdBQUdDLDhDQUF1QixDQUFDLGFBQWEsQ0FBQztBQUN4RCxJQUFNQyw2QkFBNkIsR0FBR0QsOENBQXVCLENBQUMsbURBQW1ELENBQUM7QUFDbEgsSUFBTUUsTUFBTSxHQUFHRCw2QkFBNkIsQ0FBQ0UsTUFBTSxFQUFFO0FBQ3JELElBQUlDLE1BQU07QUFBQyxJQUNFQyxxQkFBcUI7RUFBQTtJQUFBO0VBQUE7RUFBQTtJQUFBO0lBQUEsT0F3RDlCLFlBQUdDLEtBQUssRUFBRUMsUUFBUSxFQUFFO01BQ2hCLElBQU1DLGVBQWUsR0FBRyxTQUFsQkEsZUFBZSxDQUFJQyxHQUFHLEVBQUs7UUFDN0IsSUFBUUMsSUFBSSxHQUFLRCxHQUFHLENBQVpDLElBQUk7UUFDWjtRQUNBSCxRQUFRLGdEQUFJRyxJQUFJLEVBQUM7TUFDckIsQ0FBQztNQUNELElBQUlDLEdBQUcsR0FBR04scUJBQXFCLENBQUNPLFVBQVUsQ0FBQ0MsR0FBRyxDQUFDUCxLQUFLLENBQUM7TUFDckQsSUFBSUssR0FBRyxLQUFLRyxTQUFTLEVBQUU7UUFDbkJILEdBQUcsR0FBRyxJQUFJSSxHQUFHLEVBQUU7UUFDZlYscUJBQXFCLENBQUNPLFVBQVUsQ0FBQ0ksR0FBRyxDQUFDVixLQUFLLEVBQUVLLEdBQUcsQ0FBQztNQUNwRDtNQUNBQSxH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QUM7SUFDakU7RUFBQztJQUFBO0lBQUEsT0FDRCx5QkFBZ0I7TUFDWixPQUFPLElBQUksQ0FBQ0EsV0FBVyxDQUFDLDBCQUEwQixDQUFDO0lBQ3ZEO0VBQUM7SUFBQTtJQUFBLE9BQ0QsNEJBQW1CO01BQ2YsT0FBTyxJQUFJLENBQUNBLFdBQVcsQ0FBQyw2QkFBNkIsQ0FBQztJQUMxRDtFQUFDO0lBQUE7SUFBQSxPQUNELDRCQUFtQjtNQUNmLE9BQU8sSUFBSSxDQUFDQSxXQUFXLENBQUMsNkJBQTZCLENBQUM7SUFDMUQ7RUFBQztJQUFBO0lBQUEsT0FDRCw4QkFBcUI7TUFDakIsT0FBTyxJQUFJLENBQUNBLFdBQVcsQ0FBQywrQkFBK0IsQ0FBQztJQUM1RDtFQUFDO0lBQUE7SUFBQSxPQUNELDhCQUFxQjtNQUNqQixPQUFPLElBQUksQ0FBQ0EsV0FBVyxDQUFDLCtCQUErQixDQUFDO0lBQzVEO0VBQUM7SUFBQTtJQUFBLE9BQ0QsMkJBQWtCO01BQ2QsT0FBTyxJQUFJLENBQUNBLFdBQVcsQ0FBQyw0QkFBNEIsQ0FBQztJQUN6RDtFQUFDO0lBQUE7SUFBQSxPQUNELG9CQUFXO01BQ1AsT0FBTyxJQUFJLENBQUNnRSxNQUFNO0lBQ3RCO0VBQUM7RUFBQTtBQUFBO0FBQUEsa0QiLCJmaWxlIjoiMzcuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBwbHVnaW5WZXJzaW9uIH0gZnJvbSBcIi4uL2luZGV4XCI7XG5pbXBvcnQgeyBaZWdvUHVibGlzaENoYW5uZWwgfSBmcm9tIFwiLi4vWmVnb0V4cHJlc3NEZWZpbmVzXCI7XG5jb25zdCBaZWdvRXZlbnQgPSB1bmkucmVxdWlyZU5hdGl2ZVBsdWdpbignZ2xvYmFsRXZlbnQnKTtcbmNvbnN0IFplZ29FeHByZXNzTmF0aXZlRW5naW5lTW91ZGxlID0gdW5pLnJlcXVpcmVOYXRpdmVQbHVnaW4oJ3plZ28tWmVnb0V4cHJlc3NVbmlBcHBTREtfWmVnb0V4cHJlc3NVbmlBcHBFbmdpbmUnKTtcbmNvbnN0IFByZWZpeCA9IFplZ29FeHByZXNzTmF0aXZlRW5naW5lTW91ZGxlLnByZWZpeCgpO1xubGV0IGVuZ2luZTtcbmV4cG9ydCBjbGFzcyBaZWdvRXhwcmVzc0VuZ2luZUltcGwge1xuICAgIHN0YXRpYyBfY2FsbE1ldGhvZChtZXRob2QsIGFyZ3MpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCBfKSA9PiB7XG4gICAgICAgICAgICBaZWdvRXhwcmVzc05hdGl2ZUVuZ2luZU1vdWRsZS5jYWxsTWV0aG9kKHsgbWV0aG9kOiBtZXRob2QsIGFyZ3M6IGFyZ3MgfSwgKHJlcykgPT4ge1xuICAgICAgICAgICAgICAgIHJlc29sdmUocmVzKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgc3RhdGljIGdldEluc3RhbmNlKCkge1xuICAgICAgICBpZiAoZW5naW5lKSB7XG4gICAgICAgICAgICByZXR1cm4gZW5naW5lO1xuICAgICAgICB9XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignR2V0IGluc3RhbmNlIGZhaWxlZCwgUGxlYXNlIGNyZWF0ZSBlbmdpbmUgZmlyc3QnKTtcbiAgICB9XG4gICAgc3RhdGljIGFzeW5jIGNyZWF0ZUVuZ2luZVdpdGhQcm9maWxlKHByb2ZpbGUpIHtcbiAgICAgICAgaWYgKGVuZ2luZSkge1xuICAgICAgICAgICAgcmV0dXJuIGVuZ2luZTtcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCBaZWdvRXhwcmVzc0VuZ2luZUltcGwuX2NhbGxNZXRob2QoXCJjcmVhdGVFbmdpbmVXaXRoUHJvZmlsZVwiLCB7IHByb2ZpbGUgfSk7XG4gICAgICAgIGVuZ2luZSA9IG5ldyBaZWdvRXhwcmVzc0VuZ2luZUltcGwoKTtcbiAgICAgICAgYXdhaXQgWmVnb0V4cHJlc3NFbmdpbmVJbXBsLl9jYWxsTWV0aG9kKFwic2V0UGx1Z2luVmVyc2lvblwiLCB7IHZlcnNpb246IHBsdWdpblZlcnNpb24gfSk7XG4gICAgICAgIHJldHVybiBlbmdpbmU7XG4gICAgfVxuICAgIHN0YXRpYyBhc3luYyBjcmVhdGVFbmdpbmUoYXBwSUQsIGFwcFNpZ24sIGlzVGVzdEVudiwgc2NlbmFyaW8pIHtcbiAgICAgICAgaWYgKGVuZ2luZSkge1xuICAgICAgICAgICAgcmV0dXJuIGVuZ2luZTtcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCBaZWdvRXhwcmVzc0VuZ2luZUltcGwuX2NhbGxNZXRob2QoXCJjcmVhdGVFbmdpbmVcIiwgeyBhcHBJRCwgYXBwU2lnbiwgaXNUZXN0RW52LCBzY2VuYXJpbyB9KTtcbiAgICAgICAgZW5naW5lID0gbmV3IFplZ29FeHByZXNzRW5naW5lSW1wbCgpO1xuICAgICAgICBhd2FpdCBaZWdvRXhwcmVzc0VuZ2luZUltcGwuX2NhbGxNZXRob2QoXCJzZXRQbHVnaW5WZXJzaW9uXCIsIHsgdmVyc2lvbjogcGx1Z2luVmVyc2lvbiB9KTtcbiAgICAgICAgcmV0dXJuIGVuZ2luZTtcbiAgICB9XG4gICAgc3RhdGljIGFzeW5jIGRlc3Ryb3lFbmdpbmUoKSB7XG4gICAgICAgIGVuZ2luZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgWmVnb0V4cHJlc3NFbmdpbmVJbXBsLl9tZWRpYVBsYXllck1hcC5mb3JFYWNoKChfLCBrZXkpID0+IHtcbiAgICAgICAgICAgIFplZ29FeHByZXNzRW5naW5lSW1wbC5fY2FsbE1ldGhvZChcImRlc3Ryb3lNZWRpYVBsYXllclwiLCB7IGtleSB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIGF3YWl0IFplZ29FeHByZXNzRW5naW5lSW1wbC5fY2FsbE1ldGhvZChcImRlc3Ryb3lFbmdpbmVcIik7XG4gICAgICAgIFplZ29FeHByZXNzRW5naW5lSW1wbC5fbGlzdGVuZXJzLmZvckVhY2goKF8sIGtleSkgPT4ge1xuICAgICAgICAgICAgWmVnb0V2ZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoUHJlZml4ICsga2V5KTtcbiAgICAgICAgfSk7XG4gICAgICAgIFplZ29FeHByZXNzRW5naW5lSW1wbC5fbGlzdGVuZXJzLmNsZWFyKCk7XG4gICAgICAgIFplZ29FeHByZXNzRW5naW5lSW1wbC5fbWVkaWFQbGF5ZXJNYXAuY2xlYXIoKTtcbiAgICB9XG4gICAgc3RhdGljIHNldExvZ0NvbmZpZyhjb25maWcpIHtcbiAgICAgICAgcmV0dXJuIFplZ29FeHByZXNzRW5naW5lSW1wbC5fY2FsbE1ldGhvZChcInNldExvZ0NvbmZpZ1wiLCB7IGNvbmZpZyB9KTtcbiAgICB9XG4gICAgc3RhdGljIGdldFZlcnNpb24oKSB7XG4gICAgICAgIHJldHVybiBaZWdvRXhwcmVzc0VuZ2luZUltcGwuX2NhbGxNZXRob2QoXCJnZXRWZXJzaW9uXCIpO1xuICAgIH1cbiAgICBzdGF0aWMgc2V0RW5naW5lQ29uZmlnKGNvbmZpZykge1xuICAgICAgICByZXR1cm4gWmVnb0V4cHJlc3NFbmdpbmVJbXBsLl9jYWxsTWV0aG9kKFwic2V0RW5naW5lQ29uZmlnXCIsIHsgY29uZmlnIH0pO1xuICAgIH1cbiAgICBzdGF0aWMgc2V0Um9vbU1vZGUobW9kZSkge1xuICAgICAgICByZXR1cm4gWmVnb0V4cHJlc3NFbmdpbmVJbXBsLl9jYWxsTWV0aG9kKFwic2V0Um9vbU1vZGVcIiwgeyBtb2RlIH0pO1xuICAgIH1cbiAgICBvbihldmVudCwgY2FsbGJhY2spIHtcbiAgICAgICAgY29uc3QgbmF0aXZlX2xpc3RlbmVyID0gKHJlcykgPT4ge1xuICAgICAgICAgICAgY29uc3QgeyBkYXRhIH0gPSByZXM7XG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICBjYWxsYmFjayguLi5kYXRhKTtcbiAgICAgICAgfTtcbiAgICAgICAgbGV0IG1hcCA9IFplZ29FeHByZXNzRW5naW5lSW1wbC5fbGlzdGVuZXJzLmdldChldmVudCk7XG4gICAgICAgIGlmIChtYXAgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgbWFwID0gbmV3IE1hcCgpO1xuICAgICAgICAgICAgWmVnb0V4cHJlc3NFbmdpbmVJbXBsLl9saXN0ZW5lcnMuc2V0KGV2ZW50LCBtYXApO1xuICAgICAgICB9XG4gICAgICAgIG1hcC5zZXQoY2FsbGJhY2ssIG5hdGl2ZV9saXN0ZW5lcik7XG4gICAgICAgIFplZ29FdmVudC5hZGRFdmVudExpc3RlbmVyKFByZWZpeCArIGV2ZW50LCBuYXRpdmVfbGlzdGVuZXIpO1xuICAgIH1cbiAgICBvZmYoZXZlbnQsIGNhbGxiYWNrKSB7XG4gICAgICAgIGlmIChjYWxsYmFjayA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBaZWdvRXZlbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihQcmVmaXggKyBldmVudCk7XG4gICAgICAgICAgICBaZWdvRXhwcmVzc0VuZ2luZUltcGwuX2xpc3RlbmVycy5kZWxldGUoZXZlbnQpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgbWFwID0gWmVnb0V4cHJlc3NFbmdpbmVJbXBsLl9saXN0ZW5lcnMuZ2V0KGV2ZW50KTtcbiAgICAgICAgICAgIGlmIChtYXAgPT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICBaZWdvRXZlbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihQcmVmaXggKyBldmVudCwgbWFwLmdldChjYWxsYmFjaykpO1xuICAgICAgICAgICAgbWFwLmRlbGV0ZShjYWxsYmFjayk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgdXBsb2FkTG9nKCkge1xuICAgICAgICByZXR1cm4gWmVnb0V4cHJlc3NFbmdpbmVJbXBsLl9jYWxsTWV0aG9kKFwidXBsb2FkTG9nXCIpO1xuICAgIH1cbiAgICBjYWxsRXhwZXJpbWVudGFsQVBJKHBhcmFtcykge1xuICAgICAgICByZXR1cm4gWmVnb0V4cHJlc3NFbmdpbmVJbXBsLl9jYWxsTWV0aG9kKFwiY2FsbEV4cGVyaW1lbnRhbEFQSVwiLCB7IHBhcmFtcyB9KTtcbiAgICB9XG4gICAgc2V0RHVtbXlDYXB0dXJlSW1hZ2VQYXRoKGZpbGVQYXRoLCBjaGFubmVsID0gWmVnb1B1Ymxpc2hDaGFubmVsLk1haW4pIHtcbiAgICAgICAgcmV0dXJuIFplZ29FeHByZXNzRW5naW5lSW1wbC5fY2FsbE1ldGhvZChcInNldER1bW15Q2FwdHVyZUltYWdlUGF0aFwiLCB7IGZpbGVQYXRoLCBjaGFubmVsIH0pO1xuICAgIH1cbiAgICBsb2dpblJvb20ocm9vbUlELCB1c2VyLCBjb25maWcpIHtcbiAgICAgICAgcmV0dXJuIFplZ29FeHByZXNzRW5naW5lSW1wbC5fY2FsbE1ldGhvZChcImxvZ2luUm9vbVwiLCB7IHJvb21JRCwgdXNlciwgY29uZmlnIH0pO1xuICAgIH1cbiAgICBsb2dvdXRSb29tKHJvb21JRCkge1xuICAgICAgICByZXR1cm4gWmVnb0V4cHJlc3NFbmdpbmVJbXBsLl9jYWxsTWV0aG9kKFwibG9nb3V0Um9vbVwiLCB7IHJvb21JRCB9KTtcbiAgICB9XG4gICAgbG9naW5NdWx0aVJvb20ocm9vbUlELCBjb25maWcpIHtcbiAgICAgICAgcmV0dXJuIFplZ29FeHByZXNzRW5naW5lSW1wbC5fY2FsbE1ldGhvZChcImxvZ2luTXVsdGlSb29tXCIsIHsgcm9vbUlELCBjb25maWcgfSk7XG4gICAgfVxuICAgIHN3aXRjaFJvb20oZnJvbVJvb21JRCwgdG9Sb29tSUQsIGNvbmZpZykge1xuICAgICAgICByZXR1cm4gWmVnb0V4cHJlc3NFbmdpbmVJbXBsLl9jYWxsTWV0aG9kKFwic3dpdGNoUm9vbVwiLCB7IGZyb21Sb29tSUQsIHRvUm9vbUlELCBjb25maWcgfSk7XG4gICAgfVxuICAgIHJlbmV3VG9rZW4ocm9vbUlELCB0b2tlbikge1xuICAgICAgICByZXR1cm4gWmVnb0V4cHJlc3NFbmdpbmVJbXBsLl9jYWxsTWV0aG9kKFwicmVuZXdUb2tlblwiLCB7IHJvb21JRCwgdG9rZW4gfSk7XG4gICAgfVxuICAgIHNldFJvb21FeHRyYUluZm8ocm9vbUlELCBrZXksIHZhbHVlKSB7XG4gICAgICAgIHJldHVybiBaZWdvRXhwcmVzc0VuZ2luZUltcGwuX2NhbGxNZXRob2QoXCJzZXRSb29tRXh0cmFJbmZvXCIsIHsgcm9vbUlELCBrZXksIHZhbHVlIH0pO1xuICAgIH1cbiAgICBzdGFydFB1Ymxpc2hpbmdTdHJlYW0oc3RyZWFtSUQsIGNoYW5uZWwgPSBaZWdvUHVibGlzaENoYW5uZWwuTWFpbiwgY29uZmlnKSB7XG4gICAgICAgIHJldHVybiBaZWdvRXhwcmVzc0VuZ2luZUltcGwuX2NhbGxNZXRob2QoXCJzdGFydFB1Ymxpc2hpbmdTdHJlYW1cIiwgeyBzdHJlYW1JRCwgY2hhbm5lbCwgY29uZmlnIH0pO1xuICAgIH1cbiAgICBzdG9wUHVibGlzaGluZ1N0cmVhbShjaGFubmVsID0gWmVnb1B1Ymxpc2hDaGFubmVsLk1haW4pIHtcbiAgICAgICAgcmV0dXJuIFplZ29FeHByZXNzRW5naW5lSW1wbC5fY2FsbE1ldGhvZChcInN0b3BQdWJsaXNoaW5nU3RyZWFtXCIsIHsgY2hhbm5lbCB9KTtcbiAgICB9XG4gICAgc3RhcnRQcmV2aWV3KGNoYW5uZWwgPSBaZWdvUHVibGlzaENoYW5uZWwuTWFpbikge1xuICAgICAgICByZXR1cm4gWmVnb0V4cHJlc3NFbmdpbmVJbXBsLl9jYWxsTWV0aG9kKFwic3RhcnRQcmV2aWV3XCIsIHsgY2hhbm5lbCB9KTtcbiAgICB9XG4gICAgc2V0U3RyZWFtRXh0cmFJbmZvKGV4dHJhSW5mbywgY2hhbm5lbCA9IFplZ29QdWJsaXNoQ2hhbm5lbC5NYWluKSB7XG4gICAgICAgIHJldHVybiBaZWdvRXhwcmVzc0VuZ2luZUltcGwuX2NhbGxNZXRob2QoXCJzZXRTdHJlYW1FeHRyYUluZm9cIiwgeyBleHRyYUluZm8sIGNoYW5uZWwgfSk7XG4gICAgfVxuICAgIHN0b3BQcmV2aWV3KGNoYW5uZWwgPSBaZWdvUHVibGlzaENoYW5uZWwuTWFpbikge1xuICAgICAgICByZXR1cm4gWmVnb0V4cHJlc3NFbmdpbmVJbXBsLl9jYWxsTWV0aG9kKFwic3RvcFByZXZpZXdcIiwgeyBjaGFubmVsIH0pO1xuICAgIH1cbiAgICBzZXRWaWRlb0NvbmZpZyhjb25maWcsIGNoYW5uZWwgPSBaZWdvUHVibGlzaENoYW5uZWwuTWFpbikge1xuICAgICAgICByZXR1cm4gWmVnb0V4cHJlc3NFbmdpbmVJbXBsLl9jYWxsTWV0aG9kKFwic2V0VmlkZW9Db25maWdcIiwgeyBjb25maWcsIGNoYW5uZWwgfSk7XG4gICAgfVxuICAgIGdldFZpZGVvQ29uZmlnKGNoYW5uZWwgPSBaZWdvUHVibGlzaENoYW5uZWwuTWFpbikge1xuICAgICAgICByZXR1cm4gWmVnb0V4cHJlc3NFbmdpbmVJbXBsLl9jYWxsTWV0aG9kKFwiZ2V0VmlkZW9Db25maWdcIiwgeyBjaGFubmVsIH0pO1xuICAgIH1cbiAgICBzZXRWaWRlb01pcnJvck1vZGUobW9kZSwgY2hhbm5lbCA9IFplZ29QdWJsaXNoQ2hhbm5lbC5NYWluKSB7XG4gICAgICAgIHJldHVybiBaZWdvRXhwcmVzc0VuZ2luZUltcGwuX2NhbGxNZXRob2QoXCJzZXRWaWRlb01pcnJvck1vZGVcIiwgeyBtb2RlLCBjaGFubmVsIH0pO1xuICAgIH1cbiAgICBzZXRBcHBPcmllbnRhdGlvbihvcmllbnRhdGlvbiwgY2hhbm5lbCA9IFplZ29QdWJsaXNoQ2hhbm5lbC5NYWluKSB7XG4gICAgICAgIHJldHVybiBaZWdvRXhwcmVzc0VuZ2luZUltcGwuX2NhbGxNZXRob2QoXCJzZXRBcHBPcmllbnRhdGlvblwiLCB7IG9yaWVudGF0aW9uLCBjaGFubmVsIH0pO1xuICAgIH1cbiAgICBzZXRBdWRpb0NvbmZpZyhjb25maWcsIGNoYW5uZWwgPSBaZWdvUHVibGlzaENoYW5uZWwuTWFpbikge1xuICAgICAgICByZXR1cm4gWmVnb0V4cHJlc3NFbmdpbmVJbXBsLl9jYWxsTWV0aG9kKFwic2V0QXVkaW9Db25maWdcIiwgeyBjb25maWcsIGNoYW5uZWwgfSk7XG4gICAgfVxuICAgIGdldEF1ZGlvQ29uZmlnKGNoYW5uZWwgPSBaZWdvUHVibGlzaENoYW5uZWwuTWFpbikge1xuICAgICAgICByZXR1cm4gWmVnb0V4cHJlc3NFbmdpbmVJbXBsLl9jYWxsTWV0aG9kKFwiZ2V0QXVkaW9Db25maWdcIiwgeyBjaGFubmVsIH0pO1xuICAgIH1cbiAgICBzZXRQdWJsaXNoU3RyZWFtRW5jcnlwdGlvbktleShrZXksIGNoYW5uZWwgPSBaZWdvUHVibGlzaENoYW5uZWwuTWFpbikge1xuICAgICAgICByZXR1cm4gWmVnb0V4cHJlc3NFbmdpbmVJbXBsLl9jYWxsTWV0aG9kKFwic2V0UHVibGlzaFN0cmVhbUVuY3J5cHRpb25LZXlcIiwgeyBrZXksIGNoYW5uZWwgfSk7XG4gICAgfVxuICAgIHRha2VQdWJsaXNoU3RyZWFtU25hcHNob3QoY2hhbm5lbCA9IFplZ29QdWJsaXNoQ2hhbm5lbC5NYWluKSB7XG4gICAgICAgIHJldHVybiBaZWdvRXhwcmVzc0VuZ2luZUltcGwuX2NhbGxNZXRob2QoXCJ0YWtlUHVibGlzaFN0cmVhbVNuYXBzaG90XCIsIHsgY2hhbm5lbCB9KTtcbiAgICB9XG4gICAgbXV0ZVB1Ymxpc2hTdHJlYW1BdWRpbyhtdXRlLCBjaGFubmVsID0gWmVnb1B1Ymxpc2hDaGFubmVsLk1haW4pIHtcbiAgICAgICAgcmV0dXJuIFplZ29FeHByZXNzRW5naW5lSW1wbC5fY2FsbE1ldGhvZChcIm11dGVQdWJsaXNoU3RyZWFtQXVkaW9cIiwgeyBtdXRlLCBjaGFubmVsIH0pO1xuICAgIH1cbiAgICBtdXRlUHVibGlzaFN0cmVhbVZpZGVvKG11dGUsIGNoYW5uZWwgPSBaZWdvUHVibGlzaENoYW5uZWwuTWFpbikge1xuICAgICAgICByZXR1cm4gWmVnb0V4cHJlc3NFbmdpbmVJbXBsLl9jYWxsTWV0aG9kKFwibXV0ZVB1Ymxpc2hTdHJlYW1WaWRlb1wiLCB7IG11dGUsIGNoYW5uZWwgfSk7XG4gICAgfVxuICAgIGVuYWJsZVRyYWZmaWNDb250cm9sKGVuYWJsZSwgcHJvcGVydHksIGNoYW5uZWwgPSBaZWdvUHVibGlzaENoYW5uZWwuTWFpbikge1xuICAgICAgICByZXR1cm4gWmVnb0V4cHJlc3NFbmdpbmVJbXBsLl9jYWxsTWV0aG9kKFwiZW5hYmxlVHJhZmZpY0NvbnRyb2xcIiwgeyBlbmFibGUsIHByb3BlcnR5LCBjaGFubmVsIH0pO1xuICAgIH1cbiAgICBzZXRNaW5WaWRlb0JpdHJhdGVGb3JUcmFmZmljQ29udHJvbChiaXRyYXRlLCBtb2RlLCBjaGFubmVsID0gWmVnb1B1Ymxpc2hDaGFubmVsLk1haW4pIHtcbiAgICAgICAgcmV0dXJuIFplZ29FeHByZXNzRW5naW5lSW1wbC5fY2FsbE1ldGhvZChcInNldE1pblZpZGVvQml0cmF0ZUZvclRyYWZmaWNDb250cm9sXCIsIHsgYml0cmF0ZSwgbW9kZSwgY2hhbm5lbCB9KTtcbiAgICB9XG4gICAgc2V0Q2FwdHVyZVZvbHVtZSh2b2x1bWUpIHtcbiAgICAgICAgcmV0dXJuIFplZ29FeHByZXNzRW5naW5lSW1wbC5fY2FsbE1ldGhvZChcInNldENhcHR1cmVWb2x1bWVcIiwgeyB2b2x1bWUgfSk7XG4gICAgfVxuICAgIGFkZFB1Ymxpc2hDZG5Vcmwoc3RyZWFtSUQsIHRhcmdldFVSTCkge1xuICAgICAgICByZXR1cm4gWmVnb0V4cHJlc3NFbmdpbmVJbXBsLl9jYWxsTWV0aG9kKFwiYWRkUHVibGlzaENkblVybFwiLCB7IHN0cmVhbUlELCB0YXJnZXRVUkwgfSk7XG4gICAgfVxuICAgIHJlbW92ZVB1Ymxpc2hDZG5VcmwodGFyZ2V0VVJMLCBzdHJlYW1JRCkge1xuICAgICAgICByZXR1cm4gWmVnb0V4cHJlc3NFbmdpbmVJbXBsLl9jYWxsTWV0aG9kKFwicmVtb3ZlUHVibGlzaENkblVybFwiLCB7IHRhcmdldFVSTCwgc3RyZWFtSUQgfSk7XG4gICAgfVxuICAgIGVuYWJsZVB1Ymxpc2hEaXJlY3RUb0NETihlbmFibGUsIGNvbmZpZywgY2hhbm5lbCA9IFplZ29QdWJsaXNoQ2hhbm5lbC5NYWluKSB7XG4gICAgICAgIHJldHVybiBaZWdvRXhwcmVzc0VuZ2luZUltcGwuX2NhbGxNZXRob2QoXCJlbmFibGVQdWJsaXNoRGlyZWN0VG9DRE5cIiwgeyBlbmFibGUsIGNvbmZpZywgY2hhbm5lbCB9KTtcbiAgICB9XG4gICAgc2V0UHVibGlzaFdhdGVybWFyayh3YXRlcm1hcmssIGlzUHJldmlld1Zpc2libGUsIGNoYW5uZWwgPSBaZWdvUHVibGlzaENoYW5uZWwuTWFpbikge1xuICAgICAgICByZXR1cm4gWmVnb0V4cHJlc3NFbmdpbmVJbXBsLl9jYWxsTWV0aG9kKFwic2V0UHVibGlzaFdhdGVybWFya1wiLCB7IHdhdGVybWFyaywgaXNQcmV2aWV3VmlzaWJsZSwgY2hhbm5lbCB9KTtcbiAgICB9XG4gICAgc2VuZFNFSShkYXRhLCBjaGFubmVsID0gWmVnb1B1Ymxpc2hDaGFubmVsLk1haW4pIHtcbiAgICAgICAgcmV0dXJuIFplZ29FeHByZXNzRW5naW5lSW1wbC5fY2FsbE1ldGhvZChcInNlbmRTRUlcIiwgeyBkYXRhLCBjaGFubmVsIH0pO1xuICAgIH1cbiAgICBlbmFibGVIYXJkd2FyZUVuY29kZXIoZW5hYmxlKSB7XG4gICAgICAgIHJldHVybiBaZWdvRXhwcmVzc0VuZ2luZUltcGwuX2NhbGxNZXRob2QoXCJlbmFibGVIYXJkd2FyZUVuY29kZXJcIiwgeyBlbmFibGUgfSk7XG4gICAgfVxuICAgIHN0YXJ0UGxheWluZ1N0cmVhbShzdHJlYW1JRCwgY29uZmlnKSB7XG4gICAgICAgIHJldHVybiBaZWdvRXhwcmVzc0VuZ2luZUltcGwuX2NhbGxNZXRob2QoXCJzdGFydFBsYXlpbmdTdHJlYW1cIiwgeyBzdHJlYW1JRCwgY29uZmlnIH0pO1xuICAgIH1cbiAgICBzdG9wUGxheWluZ1N0cmVhbShzdHJlYW1JRCkge1xuICAgICAgICByZXR1cm4gWmVnb0V4cHJlc3NFbmdpbmVJbXBsLl9jYWxsTWV0aG9kKFwic3RvcFBsYXlpbmdTdHJlYW1cIiwgeyBzdHJlYW1JRCB9KTtcbiAgICB9XG4gICAgc2V0UGxheVN0cmVhbURlY3J5cHRpb25LZXkoa2V5LCBzdHJlYW1JRCkge1xuICAgICAgICByZXR1cm4gWmVnb0V4cHJlc3NFbmdpbmVJbXBsLl9jYWxsTWV0aG9kKFwic2V0UGxheVN0cmVhbURlY3J5cHRpb25LZXlcIiwgeyBrZXksIHN0cmVhbUlEIH0pO1xuICAgIH1cbiAgICB0YWtlUGxheVN0cmVhbVNuYXBzaG90KHN0cmVhbUlEKSB7XG4gICAgICAgIHJldHVybiBaZWdvRXhwcmVzc0VuZ2luZUltcGwuX2NhbGxNZXRob2QoXCJ0YWtlUGxheVN0cmVhbVNuYXBzaG90XCIsIHsgc3RyZWFtSUQgfSk7XG4gICAgfVxuICAgIHNldFBsYXlWb2x1bWUoc3RyZWFtSUQsIHZvbHVtZSkge1xuICAgICAgICByZXR1cm4gWmVnb0V4cHJlc3NFbmdpbmVJbXBsLl9jYWxsTWV0aG9kKFwic2V0UGxheVZvbHVtZVwiLCB7IHN0cmVhbUlELCB2b2x1bWUgfSk7XG4gICAgfVxuICAgIHNldEFsbFBsYXlTdHJlYW1Wb2x1bWUodm9sdW1lKSB7XG4gICAgICAgIHJldHVybiBaZWdvRXhwcmVzc0VuZ2luZUltcGwuX2NhbGxNZXRob2QoXCJzZXRBbGxQbGF5U3RyZWFtVm9sdW1lXCIsIHsgdm9sdW1lIH0pO1xuICAgIH1cbiAgICBzZXRQbGF5U3RyZWFtVmlkZW9UeXBlKHN0cmVhbUlELCBzdHJlYW1UeXBlKSB7XG4gICAgICAgIHJldHVybiBaZWdvRXhwcmVzc0VuZ2luZUltcGwuX2NhbGxNZXRob2QoXCJzZXRQbGF5U3RyZWFtVmlkZW9UeXBlXCIsIHsgc3RyZWFtSUQsIHN0cmVhbVR5cGUgfSk7XG4gICAgfVxuICAgIHNldFBsYXlTdHJlYW1CdWZmZXJJbnRlcnZhbFJhbmdlKHN0cmVhbUlELCBtaW5CdWZmZXJJbnRlcnZhbCwgbWF4QnVmZmVySW50ZXJ2YWwpIHtcbiAgICAgICAgcmV0dXJuIFplZ29FeHByZXNzRW5naW5lSW1wbC5fY2FsbE1ldGhvZChcInNldFBsYXlTdHJlYW1CdWZmZXJJbnRlcnZhbFJhbmdlXCIsIHsgc3RyZWFtSUQsIG1pbkJ1ZmZlckludGVydmFsLCBtYXhCdWZmZXJJbnRlcnZhbCB9KTtcbiAgICB9XG4gICAgc2V0UGxheVN0cmVhbUZvY3VzT24oc3RyZWFtSUQpIHtcbiAgICAgICAgcmV0dXJuIFplZ29FeHByZXNzRW5naW5lSW1wbC5fY2FsbE1ldGhvZChcInNldFBsYXlTdHJlYW1Gb2N1c09uXCIsIHsgc3RyZWFtSUQgfSk7XG4gICAgfVxuICAgIG11dGVQbGF5U3RyZWFtQXVkaW8oc3RyZWFtSUQsIG11dGUpIHtcbiAgICAgICAgcmV0dXJuIFplZ29FeHByZXNzRW5naW5lSW1wbC5fY2FsbE1ldGhvZChcIm11dGVQbGF5U3RyZWFtQXVkaW9cIiwgeyBzdHJlYW1JRCwgbXV0ZSB9KTtcbiAgICB9XG4gICAgbXV0ZVBsYXlTdHJlYW1WaWRlbyhzdHJlYW1JRCwgbXV0ZSkge1xuICAgICAgICByZXR1cm4gWmVnb0V4cHJlc3NFbmdpbmVJbXBsLl9jYWxsTWV0aG9kKFwibXV0ZVBsYXlTdHJlYW1WaWRlb1wiLCB7IHN0cmVhbUlELCBtdXRlIH0pO1xuICAgIH1cbiAgICBtdXRlQWxsUGxheVN0cmVhbUF1ZGlvKG11dGUpIHtcbiAgICAgICAgcmV0dXJuIFplZ29FeHByZXNzRW5naW5lSW1wbC5fY2FsbE1ldGhvZChcIm11dGVBbGxQbGF5U3RyZWFtQXVkaW9cIiwgeyBtdXRlIH0pO1xuICAgIH1cbiAgICBtdXRlQWxsUGxheVN0cmVhbVZpZGVvKG11dGUpIHtcbiAgICAgICAgcmV0dXJuIFplZ29FeHByZXNzRW5naW5lSW1wbC5fY2FsbE1ldGhvZChcIm11dGVBbGxQbGF5U3RyZWFtVmlkZW9cIiwgeyBtdXRlIH0pO1xuICAgIH1cbiAgICBlbmFibGVIYXJkd2FyZURlY29kZXIoZW5hYmxlKSB7XG4gICAgICAgIHJldHVybiBaZWdvRXhwcmVzc0VuZ2luZUltcGwuX2NhbGxNZXRob2QoXCJlbmFibGVIYXJkd2FyZURlY29kZXJcIiwgeyBlbmFibGUgfSk7XG4gICAgfVxuICAgIGVuYWJsZUNoZWNrUG9jKGVuYWJsZSkge1xuICAgICAgICByZXR1cm4gWmVnb0V4cHJlc3NFbmdpbmVJbXBsLl9jYWxsTWV0aG9kKFwiZW5hYmxlQ2hlY2tQb2NcIiwgeyBlbmFibGUgfSk7XG4gICAgfVxuICAgIHN0YXJ0TWl4ZXJUYXNrKHRhc2spIHtcbiAgICAgICAgcmV0dXJuIFplZ29FeHByZXNzRW5naW5lSW1wbC5fY2FsbE1ldGhvZChcInN0YXJ0TWl4ZXJUYXNrXCIsIHsgdGFzayB9KTtcbiAgICB9XG4gICAgc3RvcE1peGVyVGFzayh0YXNrKSB7XG4gICAgICAgIHJldHVybiBaZWdvRXhwcmVzc0VuZ2luZUltcGwuX2NhbGxNZXRob2QoXCJzdG9wTWl4ZXJUYXNrXCIsIHsgdGFzayB9KTtcbiAgICB9XG4gICAgc3RhcnRBdXRvTWl4ZXJUYXNrKHRhc2spIHtcbiAgICAgICAgcmV0dXJuIFplZ29FeHByZXNzRW5naW5lSW1wbC5fY2FsbE1ldGhvZChcInN0YXJ0QXV0b01peGVyVGFza1wiLCB7IHRhc2sgfSk7XG4gICAgfVxuICAgIHN0b3BBdXRvTWl4ZXJUYXNrKHRhc2spIHtcbiAgICAgICAgcmV0dXJuIFplZ29FeHByZXNzRW5naW5lSW1wbC5fY2FsbE1ldGhvZChcInN0b3BBdXRvTWl4ZXJUYXNrXCIsIHsgdGFzayB9KTtcbiAgICB9XG4gICAgbXV0ZU1pY3JvcGhvbmUobXV0ZSkge1xuICAgICAgICByZXR1cm4gWmVnb0V4cHJlc3NFbmdpbmVJbXBsLl9jYWxsTWV0aG9kKFwibXV0ZU1pY3JvcGhvbmVcIiwgeyBtdXRlIH0pO1xuICAgIH1cbiAgICBpc01pY3JvcGhvbmVNdXRlZCgpIHtcbiAgICAgICAgcmV0dXJuIFplZ29FeHByZXNzRW5naW5lSW1wbC5fY2FsbE1ldGhvZChcImlzTWljcm9waG9uZU11dGVkXCIpO1xuICAgIH1cbiAgICBtdXRlU3BlYWtlcihtdXRlKSB7XG4gICAgICAgIHJldHVybiBaZWdvRXhwcmVzc0VuZ2luZUltcGwuX2NhbGxNZXRob2QoXCJtdXRlU3BlYWtlclwiLCB7IG11dGUgfSk7XG4gICAgfVxuICAgIGlzU3BlYWtlck11dGVkKCkge1xuICAgICAgICByZXR1cm4gWmVnb0V4cHJlc3NFbmdpbmVJbXBsLl9jYWxsTWV0aG9kKFwiaXNTcGVha2VyTXV0ZWRcIik7XG4gICAgfVxuICAgIGVuYWJsZUF1ZGlvQ2FwdHVyZURldmljZShlbmFibGUpIHtcbiAgICAgICAgcmV0dXJuIFplZ29FeHByZXNzRW5naW5lSW1wbC5fY2FsbE1ldGhvZChcImVuYWJsZUF1ZGlvQ2FwdHVyZURldmljZVwiLCB7IGVuYWJsZSB9KTtcbiAgICB9XG4gICAgZ2V0QXVkaW9Sb3V0ZVR5cGUoKSB7XG4gICAgICAgIHJldHVybiBaZWdvRXhwcmVzc0VuZ2luZUltcGwuX2NhbGxNZXRob2QoXCJnZXRBdWRpb1JvdXRlVHlwZVwiKTtcbiAgICB9XG4gICAgc2V0QXVkaW9Sb3V0ZVRvU3BlYWtlcihkZWZhdWx0VG9TcGVha2VyKSB7XG4gICAgICAgIHJldHVybiBaZWdvRXhwcmVzc0VuZ2luZUltcGwuX2NhbGxNZXRob2QoXCJzZXRBdWRpb1JvdXRlVG9TcGVha2VyXCIsIHsgZGVmYXVsdFRvU3BlYWtlciB9KTtcbiAgICB9XG4gICAgZW5hYmxlQ2FtZXJhKGVuYWJsZSwgY2hhbm5lbCA9IFplZ29QdWJsaXNoQ2hhbm5lbC5NYWluKSB7XG4gICAgICAgIHJldHVybiBaZWdvRXhwcmVzc0VuZ2luZUltcGwuX2NhbGxNZXRob2QoXCJlbmFibGVDYW1lcmFcIiwgeyBlbmFibGUsIGNoYW5uZWwgfSk7XG4gICAgfVxuICAgIHVzZUZyb250Q2FtZXJhKGVuYWJsZSwgY2hhbm5lbCA9IFplZ29QdWJsaXNoQ2hhbm5lbC5NYWluKSB7XG4gICAgICAgIHJldHVybiBaZWdvRXhwcmVzc0VuZ2luZUltcGwuX2NhbGxNZXRob2QoXCJ1c2VGcm9udENhbWVyYVwiLCB7IGVuYWJsZSwgY2hhbm5lbCB9KTtcbiAgICB9XG4gICAgc2V0Q2FtZXJhWm9vbUZhY3RvcihmYWN0b3IsIGNoYW5uZWwgPSBaZWdvUHVibGlzaENoYW5uZWwuTWFpbikge1xuICAgICAgICByZXR1cm4gWmVnb0V4cHJlc3NFbmdpbmVJbXBsLl9jYWxsTWV0aG9kKFwic2V0Q2FtZXJhWm9vbUZhY3RvclwiLCB7IGZhY3RvciwgY2hhbm5lbCB9KTtcbiAgICB9XG4gICAgZ2V0Q2FtZXJhTWF4Wm9vbUZhY3RvcihjaGFubmVsID0gWmVnb1B1Ymxpc2hDaGFubmVsLk1haW4pIHtcbiAgICAgICAgcmV0dXJuIFplZ29FeHByZXNzRW5naW5lSW1wbC5fY2FsbE1ldGhvZChcImdldENhbWVyYU1heFpvb21GYWN0b3JcIiwgeyBjaGFubmVsIH0pO1xuICAgIH1cbiAgICBzdGFydFNvdW5kTGV2ZWxNb25pdG9yKGNvbmZpZykge1xuICAgICAgICByZXR1cm4gWmVnb0V4cHJlc3NFbmdpbmVJbXBsLl9jYWxsTWV0aG9kKFwic3RhcnRTb3VuZExldmVsTW9uaXRvclwiLCB7IGNvbmZpZyB9KTtcbiAgICB9XG4gICAgc3RvcFNvdW5kTGV2ZWxNb25pdG9yKCkge1xuICAgICAgICByZXR1cm4gWmVnb0V4cHJlc3NFbmdpbmVJbXBsLl9jYWxsTWV0aG9kKFwic3RvcFNvdW5kTGV2ZWxNb25pdG9yXCIpO1xuICAgIH1cbiAgICBzdGFydEF1ZGlvU3BlY3RydW1Nb25pdG9yKG1pbGxpc2Vjb25kKSB7XG4gICAgICAgIHJldHVybiBaZWdvRXhwcmVzc0VuZ2luZUltcGwuX2NhbGxNZXRob2QoXCJzdGFydEF1ZGlvU3BlY3RydW1Nb25pdG9yXCIsIHsgbWlsbGlzZWNvbmQgfSk7XG4gICAgfVxuICAgIHN0b3BBdWRpb1NwZWN0cnVtTW9uaXRvcigpIHtcbiAgICAgICAgcmV0dXJuIFplZ29FeHByZXNzRW5naW5lSW1wbC5fY2FsbE1ldGhvZChcInN0b3BBdWRpb1NwZWN0cnVtTW9uaXRvclwiKTtcbiAgICB9XG4gICAgZW5hYmxlSGVhZHBob25lTW9uaXRvcihlbmFibGUpIHtcbiAgICAgICAgcmV0dXJuIFplZ29FeHByZXNzRW5naW5lSW1wbC5fY2FsbE1ldGhvZChcImVuYWJsZUhlYWRwaG9uZU1vbml0b3JcIiwgeyBlbmFibGUgfSk7XG4gICAgfVxuICAgIHNldEhlYWRwaG9uZU1vbml0b3JWb2x1bWUodm9sdW1lKSB7XG4gICAgICAgIHJldHVybiBaZWdvRXhwcmVzc0VuZ2luZUltcGwuX2NhbGxNZXRob2QoXCJzZXRIZWFkcGhvbmVNb25pdG9yVm9sdW1lXCIsIHsgdm9sdW1lIH0pO1xuICAgIH1cbiAgICBlbmFibGVBRUMoZW5hYmxlKSB7XG4gICAgICAgIHJldHVybiBaZWdvRXhwcmVzc0VuZ2luZUltcGwuX2NhbGxNZXRob2QoXCJlbmFibGVBRUNcIiwgeyBlbmFibGUgfSk7XG4gICAgfVxuICAgIGVuYWJsZUhlYWRwaG9uZUFFQyhlbmFibGUpIHtcbiAgICAgICAgcmV0dXJuIFplZ29FeHByZXNzRW5naW5lSW1wbC5fY2FsbE1ldGhvZChcImVuYWJsZUhlYWRwaG9uZUFFQ1wiLCB7IGVuYWJsZSB9KTtcbiAgICB9XG4gICAgc2V0QUVDTW9kZShtb2RlKSB7XG4gICAgICAgIHJldHVybiBaZWdvRXhwcmVzc0VuZ2luZUltcGwuX2NhbGxNZXRob2QoXCJzZXRBRUNNb2RlXCIsIHsgbW9kZSB9KTtcbiAgICB9XG4gICAgZW5hYmxlQUdDKGVuYWJsZSkge1xuICAgICAgICByZXR1cm4gWmVnb0V4cHJlc3NFbmdpbmVJbXBsLl9jYWxsTWV0aG9kKFwiZW5hYmxlQUdDXCIsIHsgZW5hYmxlIH0pO1xuICAgIH1cbiAgICBlbmFibGVBTlMoZW5hYmxlKSB7XG4gICAgICAgIHJldHVybiBaZWdvRXhwcmVzc0VuZ2luZUltcGwuX2NhbGxNZXRob2QoXCJlbmFibGVBTlNcIiwgeyBlbmFibGUgfSk7XG4gICAgfVxuICAgIGVuYWJsZVRyYW5zaWVudEFOUyhlbmFibGUpIHtcbiAgICAgICAgcmV0dXJuIFplZ29FeHByZXNzRW5naW5lSW1wbC5fY2FsbE1ldGhvZChcImVuYWJsZVRyYW5zaWVudEFOU1wiLCB7IGVuYWJsZSB9KTtcbiAgICB9XG4gICAgc2V0QU5TTW9kZShtb2RlKSB7XG4gICAgICAgIHJldHVybiBaZWdvRXhwcmVzc0VuZ2luZUltcGwuX2NhbGxNZXRob2QoXCJzZXRBTlNNb2RlXCIsIHsgbW9kZSB9KTtcbiAgICB9XG4gICAgc3RhcnRFZmZlY3RzRW52KCkge1xuICAgICAgICByZXR1cm4gWmVnb0V4cHJlc3NFbmdpbmVJbXBsLl9jYWxsTWV0aG9kKFwic3RhcnRFZmZlY3RzRW52XCIpO1xuICAgIH1cbiAgICBzdG9wRWZmZWN0c0VudigpIHtcbiAgICAgICAgcmV0dXJuIFplZ29FeHByZXNzRW5naW5lSW1wbC5fY2FsbE1ldGhvZChcInN0b3BFZmZlY3RzRW52XCIpO1xuICAgIH1cbiAgICBlbmFibGVFZmZlY3RzQmVhdXR5KGVuYWJsZSkge1xuICAgICAgICByZXR1cm4gWmVnb0V4cHJlc3NFbmdpbmVJbXBsLl9jYWxsTWV0aG9kKFwiZW5hYmxlRWZmZWN0c0JlYXV0eVwiLCB7IGVuYWJsZSB9KTtcbiAgICB9XG4gICAgc2V0RWZmZWN0c0JlYXV0eVBhcmFtKHBhcmFtKSB7XG4gICAgICAgIHJldHVybiBaZWdvRXhwcmVzc0VuZ2luZUltcGwuX2NhbGxNZXRob2QoXCJzZXRFZmZlY3RzQmVhdXR5UGFyYW1cIiwgeyBwYXJhbSB9KTtcbiAgICB9XG4gICAgc2V0QXVkaW9FcXVhbGl6ZXJHYWluKGJhbmRHYWluLCBiYW5kSW5kZXgpIHtcbiAgICAgICAgcmV0dXJuIFplZ29FeHByZXNzRW5naW5lSW1wbC5fY2FsbE1ldGhvZChcInNldEF1ZGlvRXF1YWxpemVyR2FpblwiLCB7IGJhbmRHYWluLCBiYW5kSW5kZXggfSk7XG4gICAgfVxuICAgIHNldFZvaWNlQ2hhbmdlclBhcmFtKHBhcmFtLCBhdWRpb0NoYW5uZWwpIHtcbiAgICAgICAgcmV0dXJuIFplZ29FeHByZXNzRW5naW5lSW1wbC5fY2FsbE1ldGhvZChcInNldFZvaWNlQ2hhbmdlclBhcmFtXCIsIHsgcGFyYW0sIGF1ZGlvQ2hhbm5lbCB9KTtcbiAgICB9XG4gICAgZW5hYmxlVmlydHVhbFN0ZXJlbyhlbmFibGUsIGFuZ2xlKSB7XG4gICAgICAgIHJldHVybiBaZWdvRXhwcmVzc0VuZ2luZUltcGwuX2NhbGxNZXRob2QoXCJlbmFibGVWaXJ0dWFsU3RlcmVvXCIsIHsgZW5hYmxlLCBhbmdsZSB9KTtcbiAgICB9XG4gICAgc2VuZEJyb2FkY2FzdE1lc3NhZ2Uocm9vbUlELCBtZXNzYWdlKSB7XG4gICAgICAgIHJldHVybiBaZWdvRXhwcmVzc0VuZ2luZUltcGwuX2NhbGxNZXRob2QoXCJzZW5kQnJvYWRjYXN0TWVzc2FnZVwiLCB7IHJvb21JRCwgbWVzc2FnZSB9KTtcbiAgICB9XG4gICAgc2VuZEJhcnJhZ2VNZXNzYWdlKHJvb21JRCwgbWVzc2FnZSkge1xuICAgICAgICByZXR1cm4gWmVnb0V4cHJlc3NFbmdpbmVJbXBsLl9jYWxsTWV0aG9kKFwic2VuZEJhcnJhZ2VNZXNzYWdlXCIsIHsgcm9vbUlELCBtZXNzYWdlIH0pO1xuICAgIH1cbiAgICBzZW5kQ3VzdG9tQ29tbWFuZChyb29tSUQsIGNvbW1hbmQsIHRvVXNlckxpc3QpIHtcbiAgICAgICAgcmV0dXJuIFplZ29FeHByZXNzRW5naW5lSW1wbC5fY2FsbE1ldGhvZChcInNlbmRDdXN0b21Db21tYW5kXCIsIHsgcm9vbUlELCBjb21tYW5kLCB0b1VzZXJMaXN0IH0pO1xuICAgIH1cbiAgICBzdGFydFNjcmVlbkNhcHR1cmUoKSB7XG4gICAgICAgIHJldHVybiBaZWdvRXhwcmVzc0VuZ2luZUltcGwuX2NhbGxNZXRob2QoXCJzdGFydFNjcmVlbkNhcHR1cmVcIik7XG4gICAgfVxuICAgIHN0b3BTY3JlZW5DYXB0dXJlKCkge1xuICAgICAgICByZXR1cm4gWmVnb0V4cHJlc3NFbmdpbmVJbXBsLl9jYWxsTWV0aG9kKFwic3RvcFNjcmVlbkNhcHR1cmVcIik7XG4gICAgfVxuICAgIGVuYWJsZVRvcmNoKGVuYWJsZSwgY2hhbm5lbCA9IFplZ29QdWJsaXNoQ2hhbm5lbC5NYWluKSB7XG4gICAgICAgIHJldHVybiBaZWdvRXhwcmVzc0VuZ2luZUltcGwuX2NhbGxNZXRob2QoXCJlbmFibGVUb3JjaFwiLCB7IGVuYWJsZSwgY2hhbm5lbCB9KTtcbiAgICB9XG4gICAgYXN5bmMgY3JlYXRlTWVkaWFQbGF5ZXIoKSB7XG4gICAgICAgIGNvbnN0IHsgcGxheWVySUQgfSA9IGF3YWl0IFplZ29FeHByZXNzRW5naW5lSW1wbC5fY2FsbE1ldGhvZChcImNyZWF0ZU1lZGlhUGxheWVyXCIpO1xuICAgICAgICBpZiAocGxheWVySUQgPj0gMCkge1xuICAgICAgICAgICAgY29uc3QgbWVkaWFQbGF5ZXIgPSBuZXcgWmVnb01lZGlhUGxheWVySW1wbChwbGF5ZXJJRCk7XG4gICAgICAgICAgICBaZWdvRXhwcmVzc0VuZ2luZUltcGwuX21lZGlhUGxheWVyTWFwLnNldChwbGF5ZXJJRCwgbWVkaWFQbGF5ZXIpO1xuICAgICAgICAgICAgcmV0dXJuIG1lZGlhUGxheWVyO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGFzeW5jIGRlc3Ryb3lNZWRpYVBsYXllcihtZWRpYVBsYXllcikge1xuICAgICAgICBjb25zdCBpbmRleCA9IG1lZGlhUGxheWVyLmdldEluZGV4KCk7XG4gICAgICAgIGlmIChpbmRleCA+PSAwKSB7XG4gICAgICAgICAgICBhd2FpdCBaZWdvRXhwcmVzc0VuZ2luZUltcGwuX2NhbGxNZXRob2QoXCJkZXN0cm95TWVkaWFQbGF5ZXJcIiwgeyBpbmRleCB9KTtcbiAgICAgICAgICAgIFplZ29FeHByZXNzRW5naW5lSW1wbC5fbWVkaWFQbGF5ZXJNYXAuZGVsZXRlKGluZGV4KTtcbiAgICAgICAgICAgIG1lZGlhUGxheWVyLm9mZihcIm1lZGlhUGxheWVyU3RhdGVVcGRhdGVcIik7XG4gICAgICAgICAgICBtZWRpYVBsYXllci5vZmYoXCJtZWRpYVBsYXllck5ldHdvcmtFdmVudFwiKTtcbiAgICAgICAgICAgIG1lZGlhUGxheWVyLm9mZihcIm1lZGlhUGxheWVyUGxheWluZ1Byb2dyZXNzXCIpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgc3RhcnRSZWNvcmRpbmdDYXB0dXJlZERhdGEoY29uZmlnLCBjaGFubmVsID0gWmVnb1B1Ymxpc2hDaGFubmVsLk1haW4pIHtcbiAgICAgICAgcmV0dXJuIFplZ29FeHByZXNzRW5naW5lSW1wbC5fY2FsbE1ldGhvZChcInN0YXJ0UmVjb3JkaW5nQ2FwdHVyZWREYXRhXCIsIHsgY29uZmlnLCBjaGFubmVsIH0pO1xuICAgIH1cbiAgICBzdG9wUmVjb3JkaW5nQ2FwdHVyZWREYXRhKGNoYW5uZWwgPSBaZWdvUHVibGlzaENoYW5uZWwuTWFpbikge1xuICAgICAgICByZXR1cm4gWmVnb0V4cHJlc3NFbmdpbmVJbXBsLl9jYWxsTWV0aG9kKFwic3RvcFJlY29yZGluZ0NhcHR1cmVkRGF0YVwiLCB7IGNoYW5uZWwgfSk7XG4gICAgfVxufVxuWmVnb0V4cHJlc3NFbmdpbmVJbXBsLl9saXN0ZW5lcnMgPSBuZXcgTWFwKCk7XG5aZWdvRXhwcmVzc0VuZ2luZUltcGwuX21lZGlhUGxheWVyTWFwID0gbmV3IE1hcCgpO1xuZXhwb3J0IGNsYXNzIFplZ29NZWRpYVBsYXllckltcGwge1xuICAgIGNvbnN0cnVjdG9yKGluZGV4KSB7XG4gICAgICAgIHRoaXMuX2luZGV4ID0gaW5kZXg7XG4gICAgfVxuICAgIF9jYWxsTWV0aG9kKG1ldGhvZCwgYXJncykge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIF8pID0+IHtcbiAgICAgICAgICAgIFplZ29FeHByZXNzTmF0aXZlRW5naW5lTW91ZGxlLmNhbGxNZXRob2QoeyBtZXRob2Q6IG1ldGhvZCwgYXJnczogeyBwbGF5ZXJJRDogdGhpcy5faW5kZXgsIC4uLmFyZ3MgfSB9LCAocmVzKSA9PiB7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZShyZXMpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBvbihldmVudCwgY2FsbGJhY2spIHtcbiAgICAgICAgY29uc3QgbmF0aXZlX2xpc3RlbmVyID0gKHJlcykgPT4ge1xuICAgICAgICAgICAgY29uc3QgeyBkYXRhLCBpZHggfSA9IHJlcztcbiAgICAgICAgICAgIGlmIChpZHggPj0gMCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG1lZGlhUGxheWVyID0gWmVnb0V4cHJlc3NFbmdpbmVJbXBsLl9tZWRpYVBsYXllck1hcC5nZXQoaWR4KTtcbiAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgY2FsbGJhY2sobWVkaWFQbGF5ZXIsIC4uLmRhdGEpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICBsZXQgbWFwID0gWmVnb0V4cHJlc3NFbmdpbmVJbXBsLl9saXN0ZW5lcnMuZ2V0KGV2ZW50KTtcbiAgICAgICAgaWYgKG1hcCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBtYXAgPSBuZXcgTWFwKCk7XG4gICAgICAgICAgICBaZWdvRXhwcmVzc0VuZ2luZUltcGwuX2xpc3RlbmVycy5zZXQoZXZlbnQsIG1hcCk7XG4gICAgICAgIH1cbiAgICAgICAgbWFwLnNldChjYWxsYmFjaywgbmF0aXZlX2xpc3RlbmVyKTtcbiAgICAgICAgWmVnb0V2ZW50LmFkZEV2ZW50TGlzdGVuZXIoUHJlZml4ICsgZXZlbnQsIG5hdGl2ZV9saXN0ZW5lcik7XG4gICAgICAgIFplZ29FeHByZXNzRW5naW5lSW1wbC5fbGlzdGVuZXJzLnNldChldmVudCwgbWFwKTtcbiAgICB9XG4gICAgb2ZmKGV2ZW50LCBjYWxsYmFjaykge1xuICAgICAgICBpZiAoY2FsbGJhY2sgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgWmVnb0V2ZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoUHJlZml4ICsgZXZlbnQpO1xuICAgICAgICAgICAgWmVnb0V4cHJlc3NFbmdpbmVJbXBsLl9saXN0ZW5lcnMuZGVsZXRlKGV2ZW50KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IG1hcCA9IFplZ29FeHByZXNzRW5naW5lSW1wbC5fbGlzdGVuZXJzLmdldChldmVudCk7XG4gICAgICAgICAgICBpZiAobWFwID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBaZWdvRXZlbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihQcmVmaXggKyBldmVudCwgbWFwLmdldChjYWxsYmFjaykpO1xuICAgICAgICAgICAgbWFwLmRlbGV0ZShjYWxsYmFjayk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgbG9hZFJlc291cmNlKHBhdGgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NhbGxNZXRob2QoXCJtZWRpYVBsYXllckxvYWRSZXNvdXJjZVwiLCB7IHBhdGggfSk7XG4gICAgfVxuICAgIGxvYWRSZXNvdXJjZVdpdGhDb25maWcoY29uZmlnKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jYWxsTWV0aG9kKFwibWVkaWFQbGF5ZXJMb2FkUmVzb3VyY2VXaXRoQ29uZmlnXCIsIHsgY29uZmlnIH0pO1xuICAgIH1cbiAgICBzdGFydCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NhbGxNZXRob2QoXCJtZWRpYVBsYXllclN0YXJ0XCIpO1xuICAgIH1cbiAgICBzdG9wKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY2FsbE1ldGhvZChcIm1lZGlhUGxheWVyU3RvcFwiKTtcbiAgICB9XG4gICAgcGF1c2UoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jYWxsTWV0aG9kKFwibWVkaWFQbGF5ZXJQYXVzZVwiKTtcbiAgICB9XG4gICAgcmVzdW1lKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY2FsbE1ldGhvZChcIm1lZGlhUGxheWVyUmVzdW1lXCIpO1xuICAgIH1cbiAgICBzZXRQbGF5ZXJWaWV3KHBsYXllcklEKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jYWxsTWV0aG9kKFwibWVkaWFQbGF5ZXJTZXRQbGF5ZXJWaWV3XCIsIHsgcGxheWVySUQgfSk7XG4gICAgfVxuICAgIHNlZWtUbyhtaWxsaXNlY29uZCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY2FsbE1ldGhvZChcIm1lZGlhUGxheWVyU2Vla1RvXCIsIHsgbWlsbGlzZWNvbmQgfSk7XG4gICAgfVxuICAgIGVuYWJsZVJlcGVhdChlbmFibGUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NhbGxNZXRob2QoXCJtZWRpYVBsYXllckVuYWJsZVJlcGVhdFwiLCB7IGVuYWJsZSB9KTtcbiAgICB9XG4gICAgZW5hYmxlQXV4KGVuYWJsZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY2FsbE1ldGhvZChcIm1lZGlhUGxheWVyRW5hYmxlQXV4XCIsIHsgZW5hYmxlIH0pO1xuICAgIH1cbiAgICBzZXRQbGF5U3BlZWQoc3BlZWQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NhbGxNZXRob2QoXCJtZWRpYVBsYXllclNldFBsYXlTcGVlZFwiLCB7IHNwZWVkIH0pO1xuICAgIH1cbiAgICBtdXRlTG9jYWwobXV0ZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY2FsbE1ldGhvZChcIm1lZGlhUGxheWVyTXV0ZUxvY2FsXCIsIHsgbXV0ZSB9KTtcbiAgICB9XG4gICAgc2V0Vm9sdW1lKHZvbHVtZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY2FsbE1ldGhvZChcIm1lZGlhUGxheWVyU2V0Vm9sdW1lXCIsIHsgdm9sdW1lIH0pO1xuICAgIH1cbiAgICBzZXRQbGF5Vm9sdW1lKHZvbHVtZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY2FsbE1ldGhvZChcIm1lZGlhUGxheWVyU2V0UGxheVZvbHVtZVwiLCB7IHZvbHVtZSB9KTtcbiAgICB9XG4gICAgc2V0UHVibGlzaFZvbHVtZSh2b2x1bWUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NhbGxNZXRob2QoXCJtZWRpYVBsYXllclNldFB1Ymxpc2hWb2x1bWVcIiwgeyB2b2x1bWUgfSk7XG4gICAgfVxuICAgIHNldFByb2dyZXNzSW50ZXJ2YWwobWlsbGlzZWNvbmQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NhbGxNZXRob2QoXCJtZWRpYVBsYXllclNldFByb2dyZXNzSW50ZXJ2YWxcIiwgeyBtaWxsaXNlY29uZCB9KTtcbiAgICB9XG4gICAgc2V0QXVkaW9UcmFja0luZGV4KGluZGV4KSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jYWxsTWV0aG9kKFwibWVkaWFQbGF5ZXJTZXRBdWRpb1RyYWNrSW5kZXhcIiwgeyBpbmRleCB9KTtcbiAgICB9XG4gICAgc2V0Vm9pY2VDaGFuZ2VyUGFyYW0ocGFyYW0sIGF1ZGlvQ2hhbm5lbCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY2FsbE1ldGhvZChcIm1lZGlhUGxheWVyU2V0Vm9pY2VDaGFuZ2VyUGFyYW1cIiwgeyBwYXJhbSwgYXVkaW9DaGFubmVsIH0pO1xuICAgIH1cbiAgICB0YWtlU25hcHNob3QoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jYWxsTWV0aG9kKFwibWVkaWFQbGF5ZXJUYWtlU25hcHNob3RcIik7XG4gICAgfVxuICAgIHNldE5ldHdvcmtSZXNvdXJjZU1heENhY2hlKHRpbWUsIHNpemUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NhbGxNZXRob2QoXCJtZWRpYVBsYXllclNldE5ldHdvcmtSZXNvdXJjZU1heENhY2hlXCIsIHsgdGltZSwgc2l6ZSB9KTtcbiAgICB9XG4gICAgc2V0TmV0d29ya0J1ZmZlclRocmVzaG9sZCh0aHJlc2hvbGQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NhbGxNZXRob2QoXCJtZWRpYVBsYXllclNldE5ldHdvcmtCdWZmZXJUaHJlc2hvbGRcIiwgeyB0aHJlc2hvbGQgfSk7XG4gICAgfVxuICAgIGVuYWJsZUFjY3VyYXRlU2VlayhlbmFibGUsIGNvbmZpZykge1xuICAgICAgICByZXR1cm4gdGhpcy5fY2FsbE1ldGhvZChcIm1lZGlhUGxheWVyRW5hYmxlQWNjdXJhdGVTZWVrXCIsIHsgZW5hYmxlLCBjb25maWcgfSk7XG4gICAgfVxuICAgIGdldE5ldHdvcmtSZXNvdXJjZUNhY2hlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY2FsbE1ldGhvZChcIm1lZGlhUGxheWVyR2V0TmV0d29ya1Jlc291cmNlQ2FjaGVcIik7XG4gICAgfVxuICAgIGdldFBsYXlWb2x1bWUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jYWxsTWV0aG9kKFwibWVkaWFQbGF5ZXJHZXRQbGF5Vm9sdW1lXCIpO1xuICAgIH1cbiAgICBnZXRQdWJsaXNoVm9sdW1lKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY2FsbE1ldGhvZChcIm1lZGlhUGxheWVyR2V0UHVibGlzaFZvbHVtZVwiKTtcbiAgICB9XG4gICAgZ2V0VG90YWxEdXJhdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NhbGxNZXRob2QoXCJtZWRpYVBsYXllckdldFRvdGFsRHVyYXRpb25cIik7XG4gICAgfVxuICAgIGdldEN1cnJlbnRQcm9ncmVzcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NhbGxNZXRob2QoXCJtZWRpYVBsYXllckdldEN1cnJlbnRQcm9ncmVzc1wiKTtcbiAgICB9XG4gICAgZ2V0QXVkaW9UcmFja0NvdW50KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY2FsbE1ldGhvZChcIm1lZGlhUGxheWVyR2V0QXVkaW9UcmFja0NvdW50XCIpO1xuICAgIH1cbiAgICBnZXRDdXJyZW50U3RhdGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jYWxsTWV0aG9kKFwibWVkaWFQbGF5ZXJHZXRDdXJyZW50U3RhdGVcIik7XG4gICAgfVxuICAgIGdldEluZGV4KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faW5kZXg7XG4gICAgfVxufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///37\n");
/***/ }),
/* 38 */
/*!******************************************************************************************************************!*\
!*** ./node_modules/@dcloudio/vue-cli-plugin-hbuilderx/packages/uni-app-plus-nvue/dist/require-native-plugin.js ***!
\******************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = requireNativePlugin;
function requireNativePlugin(name) {
return weex.requireModule(name);
}
/***/ }),
/* 39 */
/*!******************************************************************!*\
!*** ./node_modules/@babel/runtime/helpers/toConsumableArray.js ***!
\******************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var arrayWithoutHoles = __webpack_require__(/*! ./arrayWithoutHoles.js */ 40);
var iterableToArray = __webpack_require__(/*! ./iterableToArray.js */ 42);
var unsupportedIterableToArray = __webpack_require__(/*! ./unsupportedIterableToArray.js */ 43);
var nonIterableSpread = __webpack_require__(/*! ./nonIterableSpread.js */ 44);
function _toConsumableArray(arr) {
return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();
}
module.exports = _toConsumableArray, module.exports.__esModule = true, module.exports["default"] = module.exports;
/***/ }),
/* 40 */
/*!******************************************************************!*\
!*** ./node_modules/@babel/runtime/helpers/arrayWithoutHoles.js ***!
\******************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var arrayLikeToArray = __webpack_require__(/*! ./arrayLikeToArray.js */ 41);
function _arrayWithoutHoles(arr) {
if (Array.isArray(arr)) return arrayLikeToArray(arr);
}
module.exports = _arrayWithoutHoles, module.exports.__esModule = true, module.exports["default"] = module.exports;
/***/ }),
/* 41 */
/*!*****************************************************************!*\
!*** ./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;
/***/ }),
/* 42 */
/*!****************************************************************!*\
!*** ./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;
/***/ }),
/* 43 */
/*!***************************************************************************!*\
!*** ./node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js ***!
\***************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var arrayLikeToArray = __webpack_require__(/*! ./arrayLikeToArray.js */ 41);
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/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;
/***/ }),
/* 45 */
/*!*****************************************************************************************************************************************!*\
!*** E:/project/sxq/2024-10-16 chunwan/chunwan/uni_modules/zego-ZegoExpressUniApp-JS/components/zego-ZegoExpressUniApp-JS/lib/index.js ***!
\*****************************************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 11);\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar _exportNames = {\n pluginVersion: true\n};\nexports.pluginVersion = exports.default = void 0;\nvar _ZegoExpressEngineApp = _interopRequireDefault(__webpack_require__(/*! ./ZegoExpressEngineApp */ 34));\nvar _ZegoExpressDefines = __webpack_require__(/*! ./ZegoExpressDefines */ 46);\nObject.keys(_ZegoExpressDefines).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;\n if (key in exports && exports[key] === _ZegoExpressDefines[key]) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _ZegoExpressDefines[key];\n }\n });\n});\nvar ZegoExpressEngine;\nZegoExpressEngine = _ZegoExpressEngineApp.default;\nvar _default = ZegoExpressEngine;\nexports.default = _default;\nvar pluginVersion = '3.16.0';\nexports.pluginVersion = pluginVersion;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vdW5pX21vZHVsZXMvemVnby1aZWdvRXhwcmVzc1VuaUFwcC1KUy9jb21wb25lbnRzL3plZ28tWmVnb0V4cHJlc3NVbmlBcHAtSlMvbGliL2luZGV4LmpzIl0sIm5hbWVzIjpbIlplZ29FeHByZXNzRW5naW5lIiwiWmVnb0V4cHJlc3NFbmdpbmVBcHAiLCJwbHVnaW5WZXJzaW9uIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBSUE7QUFDQTtBQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7SUFBQTtJQUFBO01BQUE7SUFBQTtFQUFBO0FBQUE7QUFFQSxJQUFJQSxpQkFBaUI7QUFLckJBLGlCQUFpQixHQUFHQyw2QkFBb0I7QUFBQyxlQUUxQkQsaUJBQWlCO0FBQUE7QUFDekIsSUFBTUUsYUFBYSxHQUFHLFFBQVE7QUFBQyIsImZpbGUiOiI0NS5qcyIsInNvdXJjZXNDb250ZW50IjpbIlxuXG5cblxuaW1wb3J0IFplZ29FeHByZXNzRW5naW5lQXBwIGZyb20gJy4vWmVnb0V4cHJlc3NFbmdpbmVBcHAnO1xuZXhwb3J0ICogZnJvbSAnLi9aZWdvRXhwcmVzc0RlZmluZXMnO1xuXG5sZXQgWmVnb0V4cHJlc3NFbmdpbmU7XG5cblxuXG5cblplZ29FeHByZXNzRW5naW5lID0gWmVnb0V4cHJlc3NFbmdpbmVBcHA7XG5cbmV4cG9ydCBkZWZhdWx0IFplZ29FeHByZXNzRW5naW5lO1xuZXhwb3J0IGNvbnN0IHBsdWdpblZlcnNpb24gPSAnMy4xNi4wJztcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///45\n");
/***/ }),
/* 46 */
/*!******************************************************************************************************************************************************!*\
!*** E:/project/sxq/2024-10-16 chunwan/chunwan/uni_modules/zego-ZegoExpressUniApp-JS/components/zego-ZegoExpressUniApp-JS/lib/ZegoExpressDefines.js ***!
\******************************************************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 11);\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ZegoWatermark = exports.ZegoVoiceChangerParam = exports.ZegoViewMode = exports.ZegoVideoStreamType = exports.ZegoVideoMirrorMode = exports.ZegoVideoConfigPreset = exports.ZegoVideoConfig = exports.ZegoVideoCodecID = exports.ZegoUser = exports.ZegoUpdateType = exports.ZegoTrafficControlProperty = exports.ZegoTrafficControlMinVideoBitrateMode = exports.ZegoStreamResourceType = exports.ZegoStreamResourceSwitchMode = exports.ZegoStreamResourceMode = exports.ZegoStreamRelayCDNUpdateReason = exports.ZegoStreamRelayCDNState = exports.ZegoStreamQualityLevel = exports.ZegoSoundLevelConfig = exports.ZegoScenario = exports.ZegoRoomStateChangedReason = exports.ZegoRoomState = exports.ZegoRoomMode = exports.ZegoRoomConfig = exports.ZegoRemoteDeviceState = exports.ZegoRect = exports.ZegoPublisherState = exports.ZegoPublisherConfig = exports.ZegoPublishChannel = exports.ZegoPlayerState = exports.ZegoPlayerMediaEvent = exports.ZegoPlayerConfig = exports.ZegoOrientation = exports.ZegoNetWorkResourceCache = exports.ZegoMultimediaLoadType = exports.ZegoMixerVideoConfig = exports.ZegoMixerTask = exports.ZegoMixerOutput = exports.ZegoMixerInputContentType = exports.ZegoMixerInput = exports.ZegoMixerAudioConfig = exports.ZegoMediaPlayerState = exports.ZegoMediaPlayerResource = exports.ZegoMediaPlayerNetworkEvent = exports.ZegoMediaPlayerAudioChannel = exports.ZegoMediaPlayer = exports.ZegoLogConfig = exports.ZegoEngineState = exports.ZegoEngineProfile = exports.ZegoEngineConfig = exports.ZegoEffectsBeautyParam = exports.ZegoDeviceType = exports.ZegoDeviceExceptionType = exports.ZegoDataRecordType = exports.ZegoDataRecordState = exports.ZegoDataRecordProgress = exports.ZegoDataRecordConfig = exports.ZegoCDNConfig = exports.ZegoAutoMixerTask = exports.ZegoAudioRoute = exports.ZegoAudioMixMode = exports.ZegoAudioConfigPreset = exports.ZegoAudioConfig = exports.ZegoAudioCodecID = exports.ZegoAudioChannel = exports.ZegoAlphaLayoutType = exports.ZegoAccurateSeekConfig = exports.ZegoANSMode = exports.ZegoAECMode = void 0;\nvar _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/createClass */ 36));\nvar _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ 35));\n/** 房间场景 */\nvar ZegoScenario;\nexports.ZegoScenario = ZegoScenario;\n(function (ZegoScenario) {\n /** 【已废弃】旧版通用场景,此场景在 3.0.0 版本及以上已废弃,不建议使用,请尽快迁移到新版场景。 */\n ZegoScenario[ZegoScenario[\"General\"] = 0] = \"General\";\n /** 【已废弃】旧版实时通讯场景,此场景在 3.0.0 版本及以上已废弃,不建议使用,请尽快迁移到新版场景。 */\n ZegoScenario[ZegoScenario[\"Communication\"] = 1] = \"Communication\";\n /** 【已废弃】旧版直播场景,此场景在 3.0.0 版本及以上已废弃,不建议使用,请尽快迁移到新版场景。 */\n ZegoScenario[ZegoScenario[\"Live\"] = 2] = \"Live\";\n /** 支持版本:3.0.0 及以上。详情描述:默认(通用)场景,若下列场景枚举均不符合开发者的实际应用场景,可使用此默认场景。 */\n ZegoScenario[ZegoScenario[\"Default\"] = 3] = \"Default\";\n /** 支持版本:3.0.0 及以上。详情描述:标准音视频通话场景,适用于 1v1 视频通话场景。 */\n ZegoScenario[ZegoScenario[\"StandardVideoCall\"] = 4] = \"StandardVideoCall\";\n /** 支持版本:3.0.0 及以上。详情描述:高品质音视频通话场景,与标准音视频通话场景类似,但该场景默认采用了更高的视频帧率、码率、分辨率 (540p),适用于对画质要求较高的视频通话场景。 */\n ZegoScenario[ZegoScenario[\"HighQualityVideoCall\"] = 5] = \"HighQualityVideoCall\";\n /** 支持版本:3.0.0 及以上。详情描述:标准语聊房场景,适用于多人纯语音通话(节省流量)。注意:在实时音视频 (ExpressVideo) SDK 上,此场景默认不开启摄像头。 */\n ZegoScenario[ZegoScenario[\"StandardChatroom\"] = 6] = \"StandardChatroom\";\n /** 支持版本:3.0.0 及以上。详情描述:高品质语聊房场景,与标准语聊房场景类似,但此场景默认采用了更高的音频码率。适用于对音质要求较高的多人纯语音通话场景。注意:在实时音视频 (ExpressVideo) SDK 上,此场景默认不开启摄像头。 */\n ZegoScenario[ZegoScenario[\"HighQualityChatroom\"] = 7] = \"HighQualityChatroom\";\n /** 支持版本:3.0.0 及以上。详情描述:直播场景,适用于秀场、游戏、电商、教育大班课等一对多直播的场景,对音画质量、流畅度、兼容性进行了优化。注意:即便是直播场景,SDK 也没有业务上的 “角色” 之分(例如主播、观众),房间内的所有用户均可推拉流。 */\n ZegoScenario[ZegoScenario[\"Broadcast\"] = 8] = \"Broadcast\";\n /** 支持版本:3.0.0 及以上。详情描述:卡拉 OK (KTV) 场景,适用于实时合唱、在线 K 歌场景,对延迟、音质、耳返、回声消除等做了优化,同时还保障了多人合唱时精准对齐和超低时延。 */\n ZegoScenario[ZegoScenario[\"Karaoke\"] = 9] = \"Karaoke\";\n /** 支持版本:3.3.0 及以上。详情描述:标准语音通话场景,适用于 1v1 纯语音通话场景。注意:在实时音视频 (ExpressVideo) SDK 上,此场景默认不开启摄像头。 */\n ZegoScenario[ZegoScenario[\"StandardVoiceCall\"] = 10] = \"StandardVoiceCall\";\n})(ZegoScenario || (exports.ZegoScenario = ZegoScenario = {}));\n/** 房间模式。 */\nvar ZegoRoomMode;\nexports.ZegoRoomMode = ZegoRoomMode;\n(function (ZegoRoomMode) {\n /** 单房间模式。 */\n ZegoRoomMode[ZegoRoomMode[\"SingleRoom\"] = 0] = \"SingleRoom\";\n /** 多房间模式。 */\n ZegoRoomMode[ZegoRoomMode[\"MultiRoom\"] = 1] = \"MultiRoom\";\n})(ZegoRoomMode || (exports.ZegoRoomMode = ZegoRoomMode = {}));\n/** 引擎状态 */\nvar ZegoEngineState;\nexports.ZegoEngineState = ZegoEngineState;\n(function (ZegoEngineState) {\n /** 引擎已开启 */\n ZegoEngineState[ZegoEngineState[\"Start\"] = 0] = \"Start\";\n /** 引擎已停止 */\n ZegoEngineState[ZegoEngineState[\"Stop\"] = 1] = \"Stop\";\n})(ZegoEngineState || (exports.ZegoEngineState = ZegoEngineState = {}));\n/** 房间状态 */\nvar ZegoRoomState;\nexports.ZegoRoomState = ZegoRoomState;\n(function (ZegoRoomState) {\n /** 未连接状态,在登录房间前和退出房间之后进入该状态。如果登录房间的过程出现稳态异常,例如 AppID 或 Token 不正确,或者有相同用户名在其他地方登录导致本端被 KickOut,都会进入该状态 */\n ZegoRoomState[ZegoRoomState[\"Disconnected\"] = 0] = \"Disconnected\";\n /** 正在请求连接状态,登录房间动作执行成功后会进入此状态。通常通过该状态进行应用界面的展示。如果因为网络质量不佳产生的中断, SDK 会进行内部重试,也会回到正在请求连接状态 */\n ZegoRoomState[ZegoRoomState[\"Connecting\"] = 1] = \"Connecting\";\n /** 连接成功状态,进入该状态表示登录房间已经成功,用户可以正常收到房间内的用户和流信息增删的回调通知 */\n ZegoRoomState[ZegoRoomState[\"Connected\"] = 2] = \"Connected\";\n})(ZegoRoomState || (exports.ZegoRoomState = ZegoRoomState = {}));\n/** 房间状态变化原因。 */\nvar ZegoRoomStateChangedReason;\nexports.ZegoRoomStateChangedReason = ZegoRoomStateChangedReason;\n(function (ZegoRoomStateChangedReason) {\n /** 正在登录房间。当调用 [loginRoom] 登录房间或 [switchRoom] 切换到目标房间时,进入该状态,表示正在请求连接服务器。通常通过该状态进行应用界面的展示。 */\n ZegoRoomStateChangedReason[ZegoRoomStateChangedReason[\"Logining\"] = 0] = \"Logining\";\n /** 登录房间成功。当登录房间或切换房间成功后,进入该状态,表示登录房间已经成功,用户可以正常收到房间内的其他用户和所有流信息增删的回调通知。 */\n ZegoRoomStateChangedReason[ZegoRoomStateChangedReason[\"Logined\"] = 1] = \"Logined\";\n /** 登录房间失败。当登录房间或切换房间失败后,进入该状态,表示登录房间或切换房间已经失败,例如 AppID 或 Token 不正确等。 */\n ZegoRoomStateChangedReason[ZegoRoomStateChangedReason[\"LoginFailed\"] = 2] = \"LoginFailed\";\n /** 房间连接临时中断。如果因为网络质量不佳产生的中断,SDK 会进行内部重试。 */\n ZegoRoomStateChangedReason[ZegoRoomStateChangedReason[\"Reconnecting\"] = 3] = \"Reconnecting\";\n /** 房间重新连接成功。如果因为网络质量不佳产生的中断,SDK 会进行内部重试,重连成功后进入该状态。 */\n ZegoRoomStateChangedReason[ZegoRoomStateChangedReason[\"Reconnected\"] = 4] = \"Reconnected\";\n /** 房间重新连接失败。如果因为网络质量不佳产生的中断,SDK 会进行内部重试,重连失败后进入该状态。 */\n ZegoRoomStateChangedReason[ZegoRoomStateChangedReason[\"ReconnectFailed\"] = 5] = \"ReconnectFailed\";\n /** 被服务器踢出房间。例如有相同用户名在其他地方登录房间导致本端被踢出房间,会进入该状态。 */\n ZegoRoomStateChangedReason[ZegoRoomStateChangedReason[\"KickOut\"] = 6] = \"KickOut\";\n /** 登出房间成功。没有登录房间前默认为该状态,当调用 [logoutRoom] 登出房间成功或 [switchRoom] 内部登出当前房间成功后,进入该状态。 */\n ZegoRoomStateChangedReason[ZegoRoomStateChangedReason[\"Logout\"] = 7] = \"Logout\";\n /** 登出房间失败。当调用 [logoutRoom] 登出房间失败或 [switchRoom] 内部登出当前房间失败后,进入该状态。 */\n ZegoRoomStateChangedReason[ZegoRoomStateChangedReason[\"LogoutFailed\"] = 8] = \"LogoutFailed\";\n})(ZegoRoomStateChangedReason || (exports.ZegoRoomStateChangedReason = ZegoRoomStateChangedReason = {}));\n/** 推流通道 */\nvar ZegoPublishChannel;\nexports.ZegoPublishChannel = ZegoPublishChannel;\n(function (ZegoPublishChannel) {\n /** 主推流通道,默认通道 */\n ZegoPublishChannel[ZegoPublishChannel[\"Main\"] = 0] = \"Main\";\n /** 辅推流通道(第二路推流通道) */\n ZegoPublishChannel[ZegoPublishChannel[\"Aux\"] = 1] = \"Aux\";\n /** 第三路推流通道 */\n ZegoPublishChannel[ZegoPublishChannel[\"Third\"] = 2] = \"Third\";\n /** 第四路推流通道 */\n ZegoPublishChannel[ZegoPublishChannel[\"Fourth\"] = 3] = \"Fourth\";\n})(ZegoPublishChannel || (exports.ZegoPublishChannel = ZegoPublishChannel = {}));\n/** 视频渲染填充模式 */\nvar ZegoViewMode;\nexports.ZegoViewMode = ZegoViewMode;\n(function (ZegoViewMode) {\n /** 等比缩放,可能有黑边 */\n ZegoViewMode[ZegoViewMode[\"AspectFit\"] = 0] = \"AspectFit\";\n /** 等比缩放填充整个 View,可能有部分被裁减 */\n ZegoViewMode[ZegoViewMode[\"AspectFill\"] = 1] = \"AspectFill\";\n /** 填充整个 View,图像可能被拉伸 */\n ZegoViewMode[ZegoViewMode[\"ScaleToFill\"] = 2] = \"ScaleToFill\";\n})(ZegoViewMode || (exports.ZegoViewMode = ZegoViewMode = {}));\n/** 预览或拉流端的镜像模式。 */\nvar ZegoVideoMirrorMode;\nexports.ZegoVideoMirrorMode = ZegoVideoMirrorMode;\n(function (ZegoVideoMirrorMode) {\n /** 只有本地预览时才是镜像画面,默认采用此模式。当移动端使用后置摄像头时,虽然仍默认采用此模式,但是不起作用,本地预览不设置镜像。 */\n ZegoVideoMirrorMode[ZegoVideoMirrorMode[\"OnlyPreviewMirror\"] = 0] = \"OnlyPreviewMirror\";\n /** 本地预览和拉流端看到的视频都是镜像画面。 */\n ZegoVideoMirrorMode[ZegoVideoMirrorMode[\"BothMirror\"] = 1] = \"BothMirror\";\n /** 本地预览和拉流端看到的视频都不是镜像画面。 */\n ZegoVideoMirrorMode[ZegoVideoMirrorMode[\"NoMirror\"] = 2] = \"NoMirror\";\n /** 只有拉流端看到的视频才是镜像画面。 */\n ZegoVideoMirrorMode[ZegoVideoMirrorMode[\"OnlyPublishMirror\"] = 3] = \"OnlyPublishMirror\";\n})(ZegoVideoMirrorMode || (exports.ZegoVideoMirrorMode = ZegoVideoMirrorMode = {}));\n/** 推流状态 */\nvar ZegoPublisherState;\nexports.ZegoPublisherState = ZegoPublisherState;\n(function (ZegoPublisherState) {\n /** 未推流状态,在推流前处于该状态。如果推流过程出现稳态的异常,例如 AppID 或 Token 不正确,或者如果其他用户已经在推送流,推送相同流 ID 的流会失败,都会进入未推流状态 */\n ZegoPublisherState[ZegoPublisherState[\"NoPublish\"] = 0] = \"NoPublish\";\n /** 正在请求推流状态,推流操作执行成功后会进入正在请求推流状态,通常通过该状态进行 UI 界面的展示。如果因为网络质量不佳产生的中断,SDK 会进行内部重试,也会回到正在请求推流状态 */\n ZegoPublisherState[ZegoPublisherState[\"PublishRequesting\"] = 1] = \"PublishRequesting\";\n /** 正在推流状态,进入该状态表明推流已经成功,用户可以正常通信 */\n ZegoPublisherState[ZegoPublisherState[\"Publishing\"] = 2] = \"Publishing\";\n})(ZegoPublisherState || (exports.ZegoPublisherState = ZegoPublisherState = {}));\n/** 视频配置分辨率与比特率预设枚举。预设的分辨率分别针对移动端与桌面端做了适配。在移动端上 height 长于 width,而桌面端相反。例如 1080p 在移动端上实际为 1080(w) x 1920(h),而在桌面端上实际为 1920(w) x 1080(h) */\nvar ZegoVideoConfigPreset;\nexports.ZegoVideoConfigPreset = ZegoVideoConfigPreset;\n(function (ZegoVideoConfigPreset) {\n /** 设置分辨率为 320x180,默认采用 15 fps,码率 300 kbps */\n ZegoVideoConfigPreset[ZegoVideoConfigPreset[\"Preset180P\"] = 0] = \"Preset180P\";\n /** 设置分辨率为 480x270,默认采用 15 fps,码率 400 kbps */\n ZegoVideoConfigPreset[ZegoVideoConfigPreset[\"Preset270P\"] = 1] = \"Preset270P\";\n /** 设置分辨率为 640x360,默认采用 15 fps,码率 600 kbps */\n ZegoVideoConfigPreset[ZegoVideoConfigPreset[\"Preset360P\"] = 2] = \"Preset360P\";\n /** 设置分辨率为 960x540,默认采用 15 fps,码率 1200 kbps */\n ZegoVideoConfigPreset[ZegoVideoConfigPreset[\"Preset540P\"] = 3] = \"Preset540P\";\n /** 设置分辨率为 1280x720,默认采用 15 fps,码率 1500 kbps */\n ZegoVideoConfigPreset[ZegoVideoConfigPreset[\"Preset720P\"] = 4] = \"Preset720P\";\n /** 设置分辨率为 1920x1080,默认采用 15 fps,码率 3000 kbps */\n ZegoVideoConfigPreset[ZegoVideoConfigPreset[\"Preset1080P\"] = 5] = \"Preset1080P\";\n})(ZegoVideoConfigPreset || (exports.ZegoVideoConfigPreset = ZegoVideoConfigPreset = {}));\n/** 流质量等级 */\nvar ZegoStreamQualityLevel;\nexports.ZegoStreamQualityLevel = ZegoStreamQualityLevel;\n(function (ZegoStreamQualityLevel) {\n /** 质量极好 */\n ZegoStreamQualityLevel[ZegoStreamQualityLevel[\"Excellent\"] = 0] = \"Excellent\";\n /** 质量好 */\n ZegoStreamQualityLevel[ZegoStreamQualityLevel[\"Good\"] = 1] = \"Good\";\n /** 质量正常 */\n ZegoStreamQualityLevel[ZegoStreamQualityLevel[\"Medium\"] = 2] = \"Medium\";\n /** 质量差 */\n ZegoStreamQualityLevel[ZegoStreamQualityLevel[\"Bad\"] = 3] = \"Bad\";\n /** 质量异常 */\n ZegoStreamQualityLevel[ZegoStreamQualityLevel[\"Die\"] = 4] = \"Die\";\n /** 质量未知 */\n ZegoStreamQualityLevel[ZegoStreamQualityLevel[\"Unknown\"] = 5] = \"Unknown\";\n})(ZegoStreamQualityLevel || (exports.ZegoStreamQualityLevel = ZegoStreamQualityLevel = {}));\n/** 音频声道 */\nvar ZegoAudioChannel;\nexports.ZegoAudioChannel = ZegoAudioChannel;\n(function (ZegoAudioChannel) {\n /** 未知 */\n ZegoAudioChannel[ZegoAudioChannel[\"Unknown\"] = 0] = \"Unknown\";\n /** 单声道 */\n ZegoAudioChannel[ZegoAudioChannel[\"Mono\"] = 1] = \"Mono\";\n /** 双声道 */\n ZegoAudioChannel[ZegoAudioChannel[\"Stereo\"] = 2] = \"Stereo\";\n})(ZegoAudioChannel || (exports.ZegoAudioChannel = ZegoAudioChannel = {}));\n/** 音频混音模式 */\nvar ZegoAudioMixMode;\nexports.ZegoAudioMixMode = ZegoAudioMixMode;\n(function (ZegoAudioMixMode) {\n /** 默认模式,无特殊行为 */\n ZegoAudioMixMode[ZegoAudioMixMode[\"Raw\"] = 0] = \"Raw\";\n /** 音频聚焦模式,可在多路音频流中突出某路流的声音 */\n ZegoAudioMixMode[ZegoAudioMixMode[\"Focused\"] = 1] = \"Focused\";\n})(ZegoAudioMixMode || (exports.ZegoAudioMixMode = ZegoAudioMixMode = {}));\n/** 音频编码器 ID */\nvar ZegoAudioCodecID;\nexports.ZegoAudioCodecID = ZegoAudioCodecID;\n(function (ZegoAudioCodecID) {\n /** 默认值,根据调用 [createEngine] 时的 [scenario] 决定。 */\n ZegoAudioCodecID[ZegoAudioCodecID[\"Default\"] = 0] = \"Default\";\n /** 可用于 RTC 和 CDN 推流;码率范围 10kbps ~ 128kbps;支持双声道;延迟在 500ms 左右。与 Web SDK 互通时需要服务端转码;转推 CDN 时不需要服务端云转码。 */\n ZegoAudioCodecID[ZegoAudioCodecID[\"Normal\"] = 1] = \"Normal\";\n /** 可用于 RTC 和 CDN 推流;兼容性好,码率范围 16kbps ~ 192kbps;支持双声道;延迟 350ms 左右;相同码率下(较低码率),音质弱于 [Normal]。与 Web SDK 互通时需要服务端转码;转推 CDN 时不需要服务端云转码。 */\n ZegoAudioCodecID[ZegoAudioCodecID[\"Normal2\"] = 2] = \"Normal2\";\n /** 不推荐使用;若需要使用请先咨询 ZEGO 技术支持。仅可用于 RTC 推流。 */\n ZegoAudioCodecID[ZegoAudioCodecID[\"Normal3\"] = 3] = \"Normal3\";\n /** 不推荐使用;若需要使用请先咨询 ZEGO 技术支持。仅可用于 RTC 推流。 */\n ZegoAudioCodecID[ZegoAudioCodecID[\"Low\"] = 4] = \"Low\";\n /** 不推荐使用;若需要使用请先咨询 ZEGO 技术支持。仅可用于 RTC 推流;最大码率为 16kbps。 */\n ZegoAudioCodecID[ZegoAudioCodecID[\"Low2\"] = 5] = \"Low2\";\n /** 仅可用于 RTC 推流;码率范围 6kbps ~ 192kbps;支持双声道;延迟在 200ms 左右;相同码率下(较低码率),音质明显好于 [Normal] 与 [Normal2];CPU 开销较低。与 Web SDK 互通时不需要服务端云转码;转推 CDN 时需要服务端转码。 */\n ZegoAudioCodecID[ZegoAudioCodecID[\"Low3\"] = 6] = \"Low3\";\n})(ZegoAudioCodecID || (exports.ZegoAudioCodecID = ZegoAudioCodecID = {}));\n/** 视频编码格式 */\nvar ZegoVideoCodecID;\nexports.ZegoVideoCodecID = ZegoVideoCodecID;\n(function (ZegoVideoCodecID) {\n /** 默认编码 (H.264) */\n ZegoVideoCodecID[ZegoVideoCodecID[\"Default\"] = 0] = \"Default\";\n /** 分层编码 (H.264 SVC) */\n ZegoVideoCodecID[ZegoVideoCodecID[\"SVC\"] = 1] = \"SVC\";\n /** VP8 */\n ZegoVideoCodecID[ZegoVideoCodecID[\"VP8\"] = 2] = \"VP8\";\n /** H.265 */\n ZegoVideoCodecID[ZegoVideoCodecID[\"H265\"] = 3] = \"H265\";\n /** 视频大小流编码 */\n ZegoVideoCodecID[ZegoVideoCodecID[\"H264DualStream\"] = 4] = \"H264DualStream\";\n /** 未知编码类型 */\n ZegoVideoCodecID[ZegoVideoCodecID[\"Unknown\"] = 100] = \"Unknown\";\n})(ZegoVideoCodecID || (exports.ZegoVideoCodecID = ZegoVideoCodecID = {}));\n/** 视频画面旋转方向枚举 */\nvar ZegoOrientation;\nexports.ZegoOrientation = ZegoOrientation;\n(function (ZegoOrientation) {\n /** 不旋转 */\n ZegoOrientation[ZegoOrientation[\"PortraitUp\"] = 0] = \"PortraitUp\";\n /** 逆时针旋转 90 度 */\n ZegoOrientation[ZegoOrientation[\"LandscapeLeft\"] = 1] = \"LandscapeLeft\";\n /** 逆时针旋转 180 度 */\n ZegoOrientation[ZegoOrientation[\"PortraitDown\"] = 2] = \"PortraitDown\";\n /** 逆时针旋转 270 度 */\n ZegoOrientation[ZegoOrientation[\"LandscapeRight\"] = 3] = \"LandscapeRight\";\n})(ZegoOrientation || (exports.ZegoOrientation = ZegoOrientation = {}));\n/** 视频流类型 */\nvar ZegoVideoStreamType;\nexports.ZegoVideoStreamType = ZegoVideoStreamType;\n(function (ZegoVideoStreamType) {\n /** 根据网络状态自动选择流类型 */\n ZegoVideoStreamType[ZegoVideoStreamType[\"Default\"] = 0] = \"Default\";\n /** 小分辨率类型 */\n ZegoVideoStreamType[ZegoVideoStreamType[\"Small\"] = 1] = \"Small\";\n /** 大分辨率类型 */\n ZegoVideoStreamType[ZegoVideoStreamType[\"Big\"] = 2] = \"Big\";\n})(ZegoVideoStreamType || (exports.ZegoVideoStreamType = ZegoVideoStreamType = {}));\n/** 回声消除模式。 */\nvar ZegoAECMode;\nexports.ZegoAECMode = ZegoAECMode;\n(function (ZegoAECMode) {\n /** 激进的回声抵消,可能会影响音质稍微明显,但是回声会消除得很干净。 */\n ZegoAECMode[ZegoAECMode[\"Aggressive\"] = 0] = \"Aggressive\";\n /** 适度的回声抵消,就是可能会稍微影响一点点音质,但是残留的回声会更少。 */\n ZegoAECMode[ZegoAECMode[\"Medium\"] = 1] = \"Medium\";\n /** 舒适的回声抵消,就是回声抵消基本不会影响声音的音质,可能有时会残留一点回声,但不会影响正常听音。 */\n ZegoAECMode[ZegoAECMode[\"Soft\"] = 2] = \"Soft\";\n})(ZegoAECMode || (exports.ZegoAECMode = ZegoAECMode = {}));\n/** 噪声抑制模式 */\nvar ZegoANSMode;\nexports.ZegoANSMode = ZegoANSMode;\n(function (ZegoANSMode) {\n /** 轻度的噪声抑制,基本不会损伤音质,但会残留一些噪声。 */\n ZegoANSMode[ZegoANSMode[\"Soft\"] = 0] = \"Soft\";\n /** 适度的噪声抑制,有可能损伤一些音质,但有不错的降噪效果。 */\n ZegoANSMode[ZegoANSMode[\"Medium\"] = 1] = \"Medium\";\n /** 激进的噪声抑制,有可能明显损伤音质,但有很好的降噪效果。 */\n ZegoANSMode[ZegoANSMode[\"Aggressive\"] = 2] = \"Aggressive\";\n /** AI 模式噪声抑制,会对音乐有较大损伤,故不能用于对需要采集背景音的音源进行噪声抑制。如需使用,请联系技术支持。 */\n ZegoANSMode[ZegoANSMode[\"AI\"] = 3] = \"AI\";\n /** 均衡 AI 模式噪声抑制,会对音乐有较大损伤,故不能用于对需要采集背景音的音源进行噪声抑制。如需使用,请联系技术支持。 */\n ZegoANSMode[ZegoANSMode[\"AIBalanced\"] = 4] = \"AIBalanced\";\n})(ZegoANSMode || (exports.ZegoANSMode = ZegoANSMode = {}));\n/** 当发生流量控制时可供调节的属性(位掩码枚举) */\nvar ZegoTrafficControlProperty;\nexports.ZegoTrafficControlProperty = ZegoTrafficControlProperty;\n(function (ZegoTrafficControlProperty) {\n /** 基础属性(自适应(降低)视频码率) */\n ZegoTrafficControlProperty[ZegoTrafficControlProperty[\"Basic\"] = 0] = \"Basic\";\n /** 自适应(降低)视频帧率 */\n ZegoTrafficControlProperty[ZegoTrafficControlProperty[\"AdaptiveFPS\"] = 1] = \"AdaptiveFPS\";\n /** 自适应(降低)视频分辨率 */\n ZegoTrafficControlProperty[ZegoTrafficControlProperty[\"AdaptiveResolution\"] = 2] = \"AdaptiveResolution\";\n /** 自适应(降低)音频码率 */\n ZegoTrafficControlProperty[ZegoTrafficControlProperty[\"AdaptiveAudioBitrate\"] = 4] = \"AdaptiveAudioBitrate\";\n})(ZegoTrafficControlProperty || (exports.ZegoTrafficControlProperty = ZegoTrafficControlProperty = {}));\n/** 流控触发最低码率时的视频发送模式 */\nvar ZegoTrafficControlMinVideoBitrateMode;\nexports.ZegoTrafficControlMinVideoBitrateMode = ZegoTrafficControlMinVideoBitrateMode;\n(function (ZegoTrafficControlMinVideoBitrateMode) {\n /** 低于设置的最低码率时,停止视频发送 */\n ZegoTrafficControlMinVideoBitrateMode[ZegoTrafficControlMinVideoBitrateMode[\"NoVideo\"] = 0] = \"NoVideo\";\n /** 低于设置的最低码率时,视频以极低的频率发送(不超过 2 FPS) */\n ZegoTrafficControlMinVideoBitrateMode[ZegoTrafficControlMinVideoBitrateMode[\"UltraLowFPS\"] = 1] = \"UltraLowFPS\";\n})(ZegoTrafficControlMinVideoBitrateMode || (exports.ZegoTrafficControlMinVideoBitrateMode = ZegoTrafficControlMinVideoBitrateMode = {}));\n/** 拉流状态 */\nvar ZegoPlayerState;\nexports.ZegoPlayerState = ZegoPlayerState;\n(function (ZegoPlayerState) {\n /** 未拉流状态,在拉流前处于该状态。如果拉流过程出现稳态的异常,例如 AppID 或 Token 不正确,都会进入未拉流状态 */\n ZegoPlayerState[ZegoPlayerState[\"NoPlay\"] = 0] = \"NoPlay\";\n /** 正在请求拉流状态,拉流操作执行成功后会进入正在请求拉流状态,通常通过该状态进行应用界面的展示。如果因为网络质量不佳产生的中断,SDK 会进行内部重试,也会回到正在请求拉流状态 */\n ZegoPlayerState[ZegoPlayerState[\"PlayRequesting\"] = 1] = \"PlayRequesting\";\n /** 正在拉流状态,进入该状态表明拉流已经成功,用户可以正常通信 */\n ZegoPlayerState[ZegoPlayerState[\"Playing\"] = 2] = \"Playing\";\n})(ZegoPlayerState || (exports.ZegoPlayerState = ZegoPlayerState = {}));\n/** 拉流媒体事件 */\nvar ZegoPlayerMediaEvent;\nexports.ZegoPlayerMediaEvent = ZegoPlayerMediaEvent;\n(function (ZegoPlayerMediaEvent) {\n /** 拉流端出现音频卡顿事件 */\n ZegoPlayerMediaEvent[ZegoPlayerMediaEvent[\"AudioBreakOccur\"] = 0] = \"AudioBreakOccur\";\n /** 拉流端音频卡顿事件结束 */\n ZegoPlayerMediaEvent[ZegoPlayerMediaEvent[\"AudioBreakResume\"] = 1] = \"AudioBreakResume\";\n /** 拉流端出现视频卡顿事件 */\n ZegoPlayerMediaEvent[ZegoPlayerMediaEvent[\"VideoBreakOccur\"] = 2] = \"VideoBreakOccur\";\n /** 拉流端视频卡顿事件结束 */\n ZegoPlayerMediaEvent[ZegoPlayerMediaEvent[\"VideoBreakResume\"] = 3] = \"VideoBreakResume\";\n})(ZegoPlayerMediaEvent || (exports.ZegoPlayerMediaEvent = ZegoPlayerMediaEvent = {}));\n/** 拉流资源策略模式 */\nvar ZegoStreamResourceMode;\nexports.ZegoStreamResourceMode = ZegoStreamResourceMode;\n(function (ZegoStreamResourceMode) {\n /** 默认模式。SDK 会根据拉流设置的 cdnConfig 参数以及即构的后台配置自动选择拉流资源 */\n ZegoStreamResourceMode[ZegoStreamResourceMode[\"Default\"] = 0] = \"Default\";\n /** 仅从 CDN 拉流 */\n ZegoStreamResourceMode[ZegoStreamResourceMode[\"OnlyCDN\"] = 1] = \"OnlyCDN\";\n /** 仅从 L3 拉流 */\n ZegoStreamResourceMode[ZegoStreamResourceMode[\"OnlyL3\"] = 2] = \"OnlyL3\";\n /** 仅从 RTC 拉流 */\n ZegoStreamResourceMode[ZegoStreamResourceMode[\"OnlyRTC\"] = 3] = \"OnlyRTC\";\n /** CDN Plus 拉流。SDK 会根据网络状况自动切换拉流资源 */\n ZegoStreamResourceMode[ZegoStreamResourceMode[\"CDNPlus\"] = 4] = \"CDNPlus\";\n})(ZegoStreamResourceMode || (exports.ZegoStreamResourceMode = ZegoStreamResourceMode = {}));\n/** 拉流资源切换策略模式 */\nvar ZegoStreamResourceSwitchMode;\nexports.ZegoStreamResourceSwitchMode = ZegoStreamResourceSwitchMode;\n(function (ZegoStreamResourceSwitchMode) {\n /** 默认模式。SDK 会根据拉流设置的参数以及即构的后台配置自动选择拉流资源 */\n ZegoStreamResourceSwitchMode[ZegoStreamResourceSwitchMode[\"Default\"] = 0] = \"Default\";\n /** 在连麦时自动切换到 RTC 源 */\n ZegoStreamResourceSwitchMode[ZegoStreamResourceSwitchMode[\"SwitchToRTC\"] = 1] = \"SwitchToRTC\";\n /** 在连麦时保持现有的拉流源,不切换到 RTC 源 */\n ZegoStreamResourceSwitchMode[ZegoStreamResourceSwitchMode[\"KeepOriginal\"] = 2] = \"KeepOriginal\";\n})(ZegoStreamResourceSwitchMode || (exports.ZegoStreamResourceSwitchMode = ZegoStreamResourceSwitchMode = {}));\n/** 拉流资源类型 */\nvar ZegoStreamResourceType;\nexports.ZegoStreamResourceType = ZegoStreamResourceType;\n(function (ZegoStreamResourceType) {\n /** 默认模式。SDK 会根据拉流设置的参数以及即构的后台配置自动选择拉流资源 */\n ZegoStreamResourceType[ZegoStreamResourceType[\"Default\"] = 0] = \"Default\";\n /** CDN 源 */\n ZegoStreamResourceType[ZegoStreamResourceType[\"CDN\"] = 1] = \"CDN\";\n /** L3 源 */\n ZegoStreamResourceType[ZegoStreamResourceType[\"L3\"] = 2] = \"L3\";\n})(ZegoStreamResourceType || (exports.ZegoStreamResourceType = ZegoStreamResourceType = {}));\n/** 更新类型 */\nvar ZegoUpdateType;\nexports.ZegoUpdateType = ZegoUpdateType;\n(function (ZegoUpdateType) {\n /** 添加 */\n ZegoUpdateType[ZegoUpdateType[\"Add\"] = 0] = \"Add\";\n /** 删除 */\n ZegoUpdateType[ZegoUpdateType[\"Delete\"] = 1] = \"Delete\";\n})(ZegoUpdateType || (exports.ZegoUpdateType = ZegoUpdateType = {}));\n/** 转推 CDN 状态 */\nvar ZegoStreamRelayCDNState;\nexports.ZegoStreamRelayCDNState = ZegoStreamRelayCDNState;\n(function (ZegoStreamRelayCDNState) {\n /** 未转推状态,在转推前处于该状态。如果转推过程出现稳态的异常,例如 转推地址 不正确,都会进入未转推状态 */\n ZegoStreamRelayCDNState[ZegoStreamRelayCDNState[\"NoRelay\"] = 0] = \"NoRelay\";\n /** 正在请求转推状态,转推操作执行成功后会进入正在请求转推状态,通常通过该状态进行应用界面的展示。如果因为网络质量不佳产生的中断,SDK 会进行内部重试,也会回到正在转推状态 */\n ZegoStreamRelayCDNState[ZegoStreamRelayCDNState[\"RelayRequesting\"] = 1] = \"RelayRequesting\";\n /** 正在转推状态,进入该状态表明转推已成功 */\n ZegoStreamRelayCDNState[ZegoStreamRelayCDNState[\"Relaying\"] = 2] = \"Relaying\";\n})(ZegoStreamRelayCDNState || (exports.ZegoStreamRelayCDNState = ZegoStreamRelayCDNState = {}));\n/** 转发 CDN 状态改变原因 */\nvar ZegoStreamRelayCDNUpdateReason;\nexports.ZegoStreamRelayCDNUpdateReason = ZegoStreamRelayCDNUpdateReason;\n(function (ZegoStreamRelayCDNUpdateReason) {\n /** 无 */\n ZegoStreamRelayCDNUpdateReason[ZegoStreamRelayCDNUpdateReason[\"None\"] = 0] = \"None\";\n /** 服务器错误 */\n ZegoStreamRelayCDNUpdateReason[ZegoStreamRelayCDNUpdateReason[\"ServerError\"] = 1] = \"ServerError\";\n /** 握手失败 */\n ZegoStreamRelayCDNUpdateReason[ZegoStreamRelayCDNUpdateReason[\"HandshakeFailed\"] = 2] = \"HandshakeFailed\";\n /** 接入点错误 */\n ZegoStreamRelayCDNUpdateReason[ZegoStreamRelayCDNUpdateReason[\"AccessPointError\"] = 3] = \"AccessPointError\";\n /** 创建流失败 */\n ZegoStreamRelayCDNUpdateReason[ZegoStreamRelayCDNUpdateReason[\"CreateStreamFailed\"] = 4] = \"CreateStreamFailed\";\n /** 流 ID 不合法 */\n ZegoStreamRelayCDNUpdateReason[ZegoStreamRelayCDNUpdateReason[\"BadName\"] = 5] = \"BadName\";\n /** CDN 服务器主动断开 */\n ZegoStreamRelayCDNUpdateReason[ZegoStreamRelayCDNUpdateReason[\"CDNServerDisconnected\"] = 6] = \"CDNServerDisconnected\";\n /** 主动断开 */\n ZegoStreamRelayCDNUpdateReason[ZegoStreamRelayCDNUpdateReason[\"Disconnected\"] = 7] = \"Disconnected\";\n /** 混流的全部输入流会话关闭 */\n ZegoStreamRelayCDNUpdateReason[ZegoStreamRelayCDNUpdateReason[\"MixStreamAllInputStreamClosed\"] = 8] = \"MixStreamAllInputStreamClosed\";\n /** 混流的全部输入流没有数据 */\n ZegoStreamRelayCDNUpdateReason[ZegoStreamRelayCDNUpdateReason[\"MixStreamAllInputStreamNoData\"] = 9] = \"MixStreamAllInputStreamNoData\";\n /** 混流服务器内部错误 */\n ZegoStreamRelayCDNUpdateReason[ZegoStreamRelayCDNUpdateReason[\"MixStreamServerInternalError\"] = 10] = \"MixStreamServerInternalError\";\n})(ZegoStreamRelayCDNUpdateReason || (exports.ZegoStreamRelayCDNUpdateReason = ZegoStreamRelayCDNUpdateReason = {}));\n/** 设备类型。 */\nvar ZegoDeviceType;\nexports.ZegoDeviceType = ZegoDeviceType;\n(function (ZegoDeviceType) {\n /** 未知的设备类型。 */\n ZegoDeviceType[ZegoDeviceType[\"Unknown\"] = 0] = \"Unknown\";\n /** 摄像头设备。 */\n ZegoDeviceType[ZegoDeviceType[\"Camera\"] = 1] = \"Camera\";\n /** 麦克风设备。 */\n ZegoDeviceType[ZegoDeviceType[\"Microphone\"] = 2] = \"Microphone\";\n /** 扬声器设备。 */\n ZegoDeviceType[ZegoDeviceType[\"Speaker\"] = 3] = \"Speaker\";\n /** 音频设备。(无法精确分类到麦克风或者扬声器的其他音频设备。) */\n ZegoDeviceType[ZegoDeviceType[\"AudioDevice\"] = 4] = \"AudioDevice\";\n /** 音频会话。 */\n ZegoDeviceType[ZegoDeviceType[\"AudioSession\"] = 5] = \"AudioSession\";\n})(ZegoDeviceType || (exports.ZegoDeviceType = ZegoDeviceType = {}));\n/** 设备异常类型。 */\nvar ZegoDeviceExceptionType;\nexports.ZegoDeviceExceptionType = ZegoDeviceExceptionType;\n(function (ZegoDeviceExceptionType) {\n /** 未知的设备异常。 */\n ZegoDeviceExceptionType[ZegoDeviceExceptionType[\"Unknown\"] = 0] = \"Unknown\";\n /** 一般性设备异常。 */\n ZegoDeviceExceptionType[ZegoDeviceExceptionType[\"Generic\"] = 1] = \"Generic\";\n /** 无效设备 ID 异常。 */\n ZegoDeviceExceptionType[ZegoDeviceExceptionType[\"InvalidId\"] = 2] = \"InvalidId\";\n /** 没有设备权限。 */\n ZegoDeviceExceptionType[ZegoDeviceExceptionType[\"PermissionNotGranted\"] = 3] = \"PermissionNotGranted\";\n /** 设备的采集帧率为 0。 */\n ZegoDeviceExceptionType[ZegoDeviceExceptionType[\"ZeroCaptureFps\"] = 4] = \"ZeroCaptureFps\";\n /** 设备被占用。 */\n ZegoDeviceExceptionType[ZegoDeviceExceptionType[\"DeviceOccupied\"] = 5] = \"DeviceOccupied\";\n /** 设备被拔出(未连接)。 */\n ZegoDeviceExceptionType[ZegoDeviceExceptionType[\"DeviceUnplugged\"] = 6] = \"DeviceUnplugged\";\n /** 设备要求系统重启后才能工作(仅限 Windows 平台)。 */\n ZegoDeviceExceptionType[ZegoDeviceExceptionType[\"RebootRequired\"] = 7] = \"RebootRequired\";\n /** 系统媒体服务不可用,例如当 iOS 系统检测到当前压力巨大(如播放大量动画),则有可能会将媒体相关服务全部停用(仅限 Apple 平台)。 */\n ZegoDeviceExceptionType[ZegoDeviceExceptionType[\"MediaServicesWereLost\"] = 8] = \"MediaServicesWereLost\";\n /** 设备被 Siri 占用(仅限 Apple 平台)。 */\n ZegoDeviceExceptionType[ZegoDeviceExceptionType[\"SiriIsRecording\"] = 9] = \"SiriIsRecording\";\n /** 设备采集的声音过低(仅限 Windows 平台)。 */\n ZegoDeviceExceptionType[ZegoDeviceExceptionType[\"SoundLevelTooLow\"] = 10] = \"SoundLevelTooLow\";\n /** 可能是由 iPad 磁吸保护套引起的设备被占用问题(仅限 Apple 平台)。 */\n ZegoDeviceExceptionType[ZegoDeviceExceptionType[\"MagneticCase\"] = 11] = \"MagneticCase\";\n /** 音频会话停用(仅限 Apple 平台)。 */\n ZegoDeviceExceptionType[ZegoDeviceExceptionType[\"AudioSessionDeactive\"] = 12] = \"AudioSessionDeactive\";\n /** 音频会话分类更改(仅限 Apple 平台)。 */\n ZegoDeviceExceptionType[ZegoDeviceExceptionType[\"AudioSessionCategoryChange\"] = 13] = \"AudioSessionCategoryChange\";\n})(ZegoDeviceExceptionType || (exports.ZegoDeviceExceptionType = ZegoDeviceExceptionType = {}));\n/** 远端设备状态 */\nvar ZegoRemoteDeviceState;\nexports.ZegoRemoteDeviceState = ZegoRemoteDeviceState;\n(function (ZegoRemoteDeviceState) {\n /** 设备开启 */\n ZegoRemoteDeviceState[ZegoRemoteDeviceState[\"Open\"] = 0] = \"Open\";\n /** 设备关闭:一般性设备错误 */\n ZegoRemoteDeviceState[ZegoRemoteDeviceState[\"GenericError\"] = 1] = \"GenericError\";\n /** 设备关闭:无效的设备 ID */\n ZegoRemoteDeviceState[ZegoRemoteDeviceState[\"InvalidID\"] = 2] = \"InvalidID\";\n /** 设备关闭:无权限 */\n ZegoRemoteDeviceState[ZegoRemoteDeviceState[\"NoAuthorization\"] = 3] = \"NoAuthorization\";\n /** 设备关闭:采集帧率为 0 */\n ZegoRemoteDeviceState[ZegoRemoteDeviceState[\"ZeroFPS\"] = 4] = \"ZeroFPS\";\n /** 设备关闭:设备被占用 */\n ZegoRemoteDeviceState[ZegoRemoteDeviceState[\"InUseByOther\"] = 5] = \"InUseByOther\";\n /** 设备关闭:设备未插入或被拔出 */\n ZegoRemoteDeviceState[ZegoRemoteDeviceState[\"Unplugged\"] = 6] = \"Unplugged\";\n /** 设备关闭:由于系统原因需要重启后才能进行下一次修改,否则重新打开也不生效 */\n ZegoRemoteDeviceState[ZegoRemoteDeviceState[\"RebootRequired\"] = 7] = \"RebootRequired\";\n /** 设备关闭:系统媒体服务停止,如 iOS 平台下,当系统检测到当前压力巨大(如播放大量动画),则有可能会将媒体相关服务全部停用 */\n ZegoRemoteDeviceState[ZegoRemoteDeviceState[\"SystemMediaServicesLost\"] = 8] = \"SystemMediaServicesLost\";\n /** 设备关闭:远端用户主动调用 [enableCamera] 或者 [enableAudioCaptureDevice] 禁用摄像头或者麦克风 */\n ZegoRemoteDeviceState[ZegoRemoteDeviceState[\"Disable\"] = 9] = \"Disable\";\n /** 设备关闭:远端用户主动调用 [muteMicrophone] 或者 [mutePublishStreamAudio] 或者 [mutePublishStreamVideo] 停止发送音频流或者视频流 */\n ZegoRemoteDeviceState[ZegoRemoteDeviceState[\"Mute\"] = 10] = \"Mute\";\n /** 设备关闭:设备被中断,如电话事件打断等 */\n ZegoRemoteDeviceState[ZegoRemoteDeviceState[\"Interruption\"] = 11] = \"Interruption\";\n /** 设备关闭:用户 App 退到后台 */\n ZegoRemoteDeviceState[ZegoRemoteDeviceState[\"InBackground\"] = 12] = \"InBackground\";\n /** 设备关闭:当前前台同时存在多个 App,如 iPad 应用分屏下,系统会禁止所有应用使用摄像头 */\n ZegoRemoteDeviceState[ZegoRemoteDeviceState[\"MultiForegroundApp\"] = 13] = \"MultiForegroundApp\";\n /** 设备关闭:系统处于高负载压力下,可能导致设备异常 */\n ZegoRemoteDeviceState[ZegoRemoteDeviceState[\"BySystemPressure\"] = 14] = \"BySystemPressure\";\n /** 设备状态未知:远端的 SDK 版本过低,不支持发布该设备状态信息 */\n ZegoRemoteDeviceState[ZegoRemoteDeviceState[\"NotSupport\"] = 15] = \"NotSupport\";\n})(ZegoRemoteDeviceState || (exports.ZegoRemoteDeviceState = ZegoRemoteDeviceState = {}));\n/** 音频路由 */\nvar ZegoAudioRoute;\nexports.ZegoAudioRoute = ZegoAudioRoute;\n(function (ZegoAudioRoute) {\n /** 扬声器 */\n ZegoAudioRoute[ZegoAudioRoute[\"Speaker\"] = 0] = \"Speaker\";\n /** 耳机 */\n ZegoAudioRoute[ZegoAudioRoute[\"Headphone\"] = 1] = \"Headphone\";\n /** 蓝牙设备 */\n ZegoAudioRoute[ZegoAudioRoute[\"Bluetooth\"] = 2] = \"Bluetooth\";\n /** 听筒 */\n ZegoAudioRoute[ZegoAudioRoute[\"Receiver\"] = 3] = \"Receiver\";\n /** USB 音频外接设备 */\n ZegoAudioRoute[ZegoAudioRoute[\"ExternalUSB\"] = 4] = \"ExternalUSB\";\n /** Apple 隔空播放 */\n ZegoAudioRoute[ZegoAudioRoute[\"AirPlay\"] = 5] = \"AirPlay\";\n})(ZegoAudioRoute || (exports.ZegoAudioRoute = ZegoAudioRoute = {}));\n/** 混流内容类型 */\nvar ZegoMixerInputContentType;\nexports.ZegoMixerInputContentType = ZegoMixerInputContentType;\n(function (ZegoMixerInputContentType) {\n /** 音频混流内容类型 */\n ZegoMixerInputContentType[ZegoMixerInputContentType[\"Audio\"] = 0] = \"Audio\";\n /** 视频混流内容类型 */\n ZegoMixerInputContentType[ZegoMixerInputContentType[\"Video\"] = 1] = \"Video\";\n /** 仅视频混流内容类型。在 web 平台,此属性不生效。 */\n ZegoMixerInputContentType[ZegoMixerInputContentType[\"VideoOnly\"] = 2] = \"VideoOnly\";\n})(ZegoMixerInputContentType || (exports.ZegoMixerInputContentType = ZegoMixerInputContentType = {}));\n/** 音频配置类型 */\nvar ZegoAudioConfigPreset;\nexports.ZegoAudioConfigPreset = ZegoAudioConfigPreset;\n(function (ZegoAudioConfigPreset) {\n /** 基础音质 (16 kbps, Mono, ZegoAudioCodecIDDefault) */\n ZegoAudioConfigPreset[ZegoAudioConfigPreset[\"BasicQuality\"] = 0] = \"BasicQuality\";\n /** 标准音质 (48 kbps, Mono, ZegoAudioCodecIDDefault) */\n ZegoAudioConfigPreset[ZegoAudioConfigPreset[\"StandardQuality\"] = 1] = \"StandardQuality\";\n /** 标准音质 (56 kbps, Stereo, ZegoAudioCodecIDDefault) */\n ZegoAudioConfigPreset[ZegoAudioConfigPreset[\"StandardQualityStereo\"] = 2] = \"StandardQualityStereo\";\n /** 高音质 (128 kbps, Mono, ZegoAudioCodecIDDefault) */\n ZegoAudioConfigPreset[ZegoAudioConfigPreset[\"HighQuality\"] = 3] = \"HighQuality\";\n /** 高音质 (192 kbps, Stereo, ZegoAudioCodecIDDefault) */\n ZegoAudioConfigPreset[ZegoAudioConfigPreset[\"HighQualityStereo\"] = 4] = \"HighQualityStereo\";\n})(ZegoAudioConfigPreset || (exports.ZegoAudioConfigPreset = ZegoAudioConfigPreset = {}));\n/** 播放器状态 */\nvar ZegoMediaPlayerState;\nexports.ZegoMediaPlayerState = ZegoMediaPlayerState;\n(function (ZegoMediaPlayerState) {\n /** 不在播放 */\n ZegoMediaPlayerState[ZegoMediaPlayerState[\"NoPlay\"] = 0] = \"NoPlay\";\n /** 播放中 */\n ZegoMediaPlayerState[ZegoMediaPlayerState[\"Playing\"] = 1] = \"Playing\";\n /** 暂停播放 */\n ZegoMediaPlayerState[ZegoMediaPlayerState[\"Pausing\"] = 2] = \"Pausing\";\n /** 播放结束 */\n ZegoMediaPlayerState[ZegoMediaPlayerState[\"PlayEnded\"] = 3] = \"PlayEnded\";\n})(ZegoMediaPlayerState || (exports.ZegoMediaPlayerState = ZegoMediaPlayerState = {}));\n/** 播放器网络事件 */\nvar ZegoMediaPlayerNetworkEvent;\nexports.ZegoMediaPlayerNetworkEvent = ZegoMediaPlayerNetworkEvent;\n(function (ZegoMediaPlayerNetworkEvent) {\n /** 网络资源播放不畅,开始尝试缓存数据 */\n ZegoMediaPlayerNetworkEvent[ZegoMediaPlayerNetworkEvent[\"BufferBegin\"] = 0] = \"BufferBegin\";\n /** 网络资源可以顺畅播放 */\n ZegoMediaPlayerNetworkEvent[ZegoMediaPlayerNetworkEvent[\"BufferEnded\"] = 1] = \"BufferEnded\";\n})(ZegoMediaPlayerNetworkEvent || (exports.ZegoMediaPlayerNetworkEvent = ZegoMediaPlayerNetworkEvent = {}));\n/** 播放器声道 */\nvar ZegoMediaPlayerAudioChannel;\nexports.ZegoMediaPlayerAudioChannel = ZegoMediaPlayerAudioChannel;\n(function (ZegoMediaPlayerAudioChannel) {\n /** 左声道 */\n ZegoMediaPlayerAudioChannel[ZegoMediaPlayerAudioChannel[\"Left\"] = 0] = \"Left\";\n /** 右声道 */\n ZegoMediaPlayerAudioChannel[ZegoMediaPlayerAudioChannel[\"Right\"] = 1] = \"Right\";\n /** 全部声道 */\n ZegoMediaPlayerAudioChannel[ZegoMediaPlayerAudioChannel[\"All\"] = 2] = \"All\";\n})(ZegoMediaPlayerAudioChannel || (exports.ZegoMediaPlayerAudioChannel = ZegoMediaPlayerAudioChannel = {}));\n/** 录制类型 */\nvar ZegoDataRecordType;\nexports.ZegoDataRecordType = ZegoDataRecordType;\n(function (ZegoDataRecordType) {\n /** 该字段表示纯音频 SDK 默认录制音频,音视频 SDK 默认录制音视频,当录制 .aac 格式的文件时默认也是录制音频 */\n ZegoDataRecordType[ZegoDataRecordType[\"Default\"] = 0] = \"Default\";\n /** 只录制音频 */\n ZegoDataRecordType[ZegoDataRecordType[\"OnlyAudio\"] = 1] = \"OnlyAudio\";\n /** 只录制视频,音频的 SDK 和录制 .aac 格式文件时无效 */\n ZegoDataRecordType[ZegoDataRecordType[\"OnlyVideo\"] = 2] = \"OnlyVideo\";\n /** 同时录制音频、视频。音频的 SDK 和录制 .aac 格式文件时录制出来也只有音频 */\n ZegoDataRecordType[ZegoDataRecordType[\"AudioAndVideo\"] = 3] = \"AudioAndVideo\";\n})(ZegoDataRecordType || (exports.ZegoDataRecordType = ZegoDataRecordType = {}));\n/** 录制状态 */\nvar ZegoDataRecordState;\nexports.ZegoDataRecordState = ZegoDataRecordState;\n(function (ZegoDataRecordState) {\n /** 未录制状态,当录制出错或者未开始录制之前处于此状态 */\n ZegoDataRecordState[ZegoDataRecordState[\"NoRecord\"] = 0] = \"NoRecord\";\n /** 正在录制中,当成功调用 [startRecordingCapturedData] 函数之后处于此状态 */\n ZegoDataRecordState[ZegoDataRecordState[\"Recording\"] = 1] = \"Recording\";\n /** 录制成功 */\n ZegoDataRecordState[ZegoDataRecordState[\"Success\"] = 2] = \"Success\";\n})(ZegoDataRecordState || (exports.ZegoDataRecordState = ZegoDataRecordState = {}));\n/** 多媒体资源加载方式。 */\nvar ZegoMultimediaLoadType;\nexports.ZegoMultimediaLoadType = ZegoMultimediaLoadType;\n(function (ZegoMultimediaLoadType) {\n /** 通过文件路径加载。 */\n ZegoMultimediaLoadType[ZegoMultimediaLoadType[\"FilePath\"] = 0] = \"FilePath\";\n /** 通过二进制内存数据加载。 */\n ZegoMultimediaLoadType[ZegoMultimediaLoadType[\"Memory\"] = 1] = \"Memory\";\n /** 通过版权音乐资源 ID 加载。 */\n ZegoMultimediaLoadType[ZegoMultimediaLoadType[\"ResourceID\"] = 2] = \"ResourceID\";\n})(ZegoMultimediaLoadType || (exports.ZegoMultimediaLoadType = ZegoMultimediaLoadType = {}));\n/** 透明通道数据布局方式。 */\nvar ZegoAlphaLayoutType;\nexports.ZegoAlphaLayoutType = ZegoAlphaLayoutType;\n(function (ZegoAlphaLayoutType) {\n /** 没有 alpha 数据。 */\n ZegoAlphaLayoutType[ZegoAlphaLayoutType[\"None\"] = 0] = \"None\";\n /** 透明通道数据位于 RGB/YUV 数据左侧。 */\n ZegoAlphaLayoutType[ZegoAlphaLayoutType[\"Left\"] = 1] = \"Left\";\n /** 透明通道数据位于 RGB/YUV 数据右侧。 */\n ZegoAlphaLayoutType[ZegoAlphaLayoutType[\"Right\"] = 2] = \"Right\";\n /** 透明通道数据位于 RGB/YUV 数据底部。 */\n ZegoAlphaLayoutType[ZegoAlphaLayoutType[\"Bottom\"] = 3] = \"Bottom\";\n})(ZegoAlphaLayoutType || (exports.ZegoAlphaLayoutType = ZegoAlphaLayoutType = {}));\n/**\n * 日志配置\n *\n * 详情描述:调用 [setLogConfig] 自定义日志配置时,需要通过该参数配置。\n * 业务场景:当需要自定义日志存储路径或日志文件大小上限时,需要这个配置。\n * 注意事项:无。\n */\nvar ZegoLogConfig = /*#__PURE__*/(0, _createClass2.default)(function ZegoLogConfig() {\n (0, _classCallCheck2.default)(this, ZegoLogConfig);\n this.logPath = '';\n this.logSize = 5 * 1024 * 1024;\n this.logCount = 3;\n});\n/**\n * 创建引擎的配置\n *\n * 创建引擎的配置\n */\nexports.ZegoLogConfig = ZegoLogConfig;\nvar ZegoEngineProfile = /*#__PURE__*/(0, _createClass2.default)(function ZegoEngineProfile(appID, appSign, scenario) {\n (0, _classCallCheck2.default)(this, ZegoEngineProfile);\n this.appID = appID;\n this.appSign = appSign;\n this.scenario = scenario;\n});\n/**\n * 引擎进阶配置\n */\nexports.ZegoEngineProfile = ZegoEngineProfile;\nvar ZegoEngineConfig = /*#__PURE__*/(0, _createClass2.default)(function ZegoEngineConfig() {\n (0, _classCallCheck2.default)(this, ZegoEngineConfig);\n});\n/**\n * 房间进阶配置\n *\n * 配置房间的最大用户数量、鉴权 token 等\n */\nexports.ZegoEngineConfig = ZegoEngineConfig;\nvar ZegoRoomConfig = /*#__PURE__*/(0, _createClass2.default)(function ZegoRoomConfig(maxMemberCount, isUserStatusNotify, token) {\n (0, _classCallCheck2.default)(this, ZegoRoomConfig);\n this.maxMemberCount = maxMemberCount;\n this.isUserStatusNotify = isUserStatusNotify;\n this.token = token;\n});\n/**\n * 视频配置\n *\n * 配置码率、帧率、分辨率等推流用到的参数。\n * 开发者应该注意的是,移动端与桌面端的宽高分辨率是相反的,例如,360p,移动端的分辨率为 360x640,而桌面端为 640x360。\n * 使用外部采集时,RTC的采集和编码分辨率不能设置为0*0,不然会导致整个引擎生命周期里的推流,都没有视频数据。\n */\nexports.ZegoRoomConfig = ZegoRoomConfig;\nvar ZegoVideoConfig = /*#__PURE__*/(0, _createClass2.default)(function ZegoVideoConfig(captureWidth, captureHeight, encodeWidth, encodeHeight, fps, bitrate, codecID) {\n (0, _classCallCheck2.default)(this, ZegoVideoConfig);\n this.captureWidth = captureWidth;\n this.captureHeight = captureHeight;\n this.encodeWidth = encodeWidth;\n this.encodeHeight = encodeHeight;\n this.fps = fps;\n this.bitrate = bitrate;\n this.codecID = codecID;\n});\n/**\n * 变声器参数\n *\n * 开发者可以使用 SDK 的内置预置来改变变声器的参数。\n */\nexports.ZegoVideoConfig = ZegoVideoConfig;\nvar ZegoVoiceChangerParam = /*#__PURE__*/(0, _createClass2.default)(function ZegoVoiceChangerParam(pitch) {\n (0, _classCallCheck2.default)(this, ZegoVoiceChangerParam);\n this.pitch = pitch;\n});\n/**\n * 用户对象\n *\n * 配置用户 ID 和用户名,用于标识房间内的用户。\n * 注意 userID 在同一个 appID 下需唯一,否则登录房间时会出现互踢的情况。\n * 强烈建议 userID 与业务 APP 的用户 ID 一一对应,即一个 userID 与一个真实用户是固定且唯一的,而不应该是以随机的 userID 的方式传给 SDK 的方式。因为唯一且固定的 userID 可以让 ZEGO 技术人员快速定位线上问题。\n */\nexports.ZegoVoiceChangerParam = ZegoVoiceChangerParam;\nvar ZegoUser = /*#__PURE__*/(0, _createClass2.default)(function ZegoUser(userID, userName) {\n (0, _classCallCheck2.default)(this, ZegoUser);\n this.userID = userID;\n this.userName = userName;\n});\n/**\n * 视图相关所使用的坐标\n */\nexports.ZegoUser = ZegoUser;\nvar ZegoRect = /*#__PURE__*/(0, _createClass2.default)(function ZegoRect(x, y, width, height) {\n (0, _classCallCheck2.default)(this, ZegoRect);\n this.x = x;\n this.y = y;\n this.width = width;\n this.height = height;\n});\n/**\n * 推流进阶配置\n *\n * 配置房间 ID\n */\nexports.ZegoRect = ZegoRect;\nvar ZegoPublisherConfig = /*#__PURE__*/(0, _createClass2.default)(function ZegoPublisherConfig() {\n (0, _classCallCheck2.default)(this, ZegoPublisherConfig);\n});\n/**\n * CDN 配置对象\n *\n * 包括 CDN 的 URL 以及鉴权参数字符串\n */\nexports.ZegoPublisherConfig = ZegoPublisherConfig;\nvar ZegoCDNConfig = /*#__PURE__*/(0, _createClass2.default)(function ZegoCDNConfig(url, authParam) {\n (0, _classCallCheck2.default)(this, ZegoCDNConfig);\n this.url = url;\n this.authParam = authParam;\n});\n/**\n * 拉流进阶配置。\n *\n * 配置资源策略模式、CDN 配置以及其他高级配置。\n */\nexports.ZegoCDNConfig = ZegoCDNConfig;\nvar ZegoPlayerConfig = /*#__PURE__*/(0, _createClass2.default)(function ZegoPlayerConfig(cdnConfig) {\n (0, _classCallCheck2.default)(this, ZegoPlayerConfig);\n this.cdnConfig = cdnConfig;\n});\n/**\n * 美颜配置参数\n *\n * 配置美颜的美白、红润、磨皮、锐化参数。\n */\nexports.ZegoPlayerConfig = ZegoPlayerConfig;\nvar ZegoEffectsBeautyParam = /*#__PURE__*/(0, _createClass2.default)(function ZegoEffectsBeautyParam() {\n (0, _classCallCheck2.default)(this, ZegoEffectsBeautyParam);\n this.whitenIntensity = 50;\n this.rosyIntensity = 50;\n this.smoothIntensity = 50;\n this.sharpenIntensity = 50;\n});\n/**\n * 混流音频配置\n *\n * 配置混流任务的音频码率、声道数、音频编码\n */\nexports.ZegoEffectsBeautyParam = ZegoEffectsBeautyParam;\nvar ZegoMixerAudioConfig = /*#__PURE__*/(0, _createClass2.default)(function ZegoMixerAudioConfig() {\n (0, _classCallCheck2.default)(this, ZegoMixerAudioConfig);\n this.bitrate = 48;\n this.channel = ZegoAudioChannel.Mono;\n this.codecID = ZegoAudioCodecID.Default;\n this.mixMode = ZegoAudioMixMode.Raw;\n});\n/**\n * 混流视频配置\n *\n * 配置混流任务的视频参数,帧率、码率、分辨率\n */\nexports.ZegoMixerAudioConfig = ZegoMixerAudioConfig;\nvar ZegoMixerVideoConfig = /*#__PURE__*/(0, _createClass2.default)(function ZegoMixerVideoConfig() {\n (0, _classCallCheck2.default)(this, ZegoMixerVideoConfig);\n this.width = 360;\n this.height = 640;\n this.fps = 15;\n this.bitrate = 600;\n});\n/**\n * 混流输入\n *\n * 配置混流输入的流 ID、输入类型、流的布局\n */\nexports.ZegoMixerVideoConfig = ZegoMixerVideoConfig;\nvar ZegoMixerInput = /*#__PURE__*/(0, _createClass2.default)(function ZegoMixerInput(streamID, contentType, layout, soundLevelID) {\n (0, _classCallCheck2.default)(this, ZegoMixerInput);\n this.streamID = streamID;\n this.contentType = contentType;\n this.layout = layout;\n this.soundLevelID = soundLevelID;\n});\n/**\n * 混流输出对象,目前一个混流任务最多只支持 4 路不同分辨率的视频流。\n *\n * 配置混流输出的目标 URL 或流 ID\n */\nexports.ZegoMixerInput = ZegoMixerInput;\nvar ZegoMixerOutput = /*#__PURE__*/(0, _createClass2.default)(function ZegoMixerOutput(target) {\n (0, _classCallCheck2.default)(this, ZegoMixerOutput);\n this.target = target;\n});\n/**\n * 水印对象\n *\n * 配置一个水印的图片 URL 以及该水印在画面中的大小方位。\n */\nexports.ZegoMixerOutput = ZegoMixerOutput;\nvar ZegoWatermark = /*#__PURE__*/(0, _createClass2.default)(function ZegoWatermark(imageURL, layout) {\n (0, _classCallCheck2.default)(this, ZegoWatermark);\n this.imageURL = imageURL;\n this.layout = layout;\n});\n/**\n * 混流任务对象\n *\n * 本类为混流任务的配置类,当向 ZEGO RTC 服务器发起混流任务的请求时,需要这个混流任务的配置。\n * 本类即描述这次混流任务的详细配置信息。\n */\nexports.ZegoWatermark = ZegoWatermark;\nvar ZegoMixerTask = /*#__PURE__*/(0, _createClass2.default)(function ZegoMixerTask(taskID) {\n (0, _classCallCheck2.default)(this, ZegoMixerTask);\n this.taskID = taskID;\n this.inputList = [];\n this.outputList = [];\n this.audioConfig = new ZegoMixerAudioConfig();\n this.videoConfig = new ZegoMixerVideoConfig();\n this.enableSoundLevel = false;\n this.backgroundImageURL = \"\";\n this.watermark = new ZegoWatermark(\"\", new ZegoRect(0, 0, 0, 0));\n this.advancedConfig = new Map();\n});\n/**\n * 启动声浪监控的配置\n *\n * 支持版本:2.10.0 及以上。\n * 详情描述:用于 startSoundLevelMonitor 函数,其中的 enableVAD 参数用于设置声浪回调是否检测 VAD,开启后结果将从 [onCapturedSoundLevelInfoUpdate] 和 [onRemoteSoundLevelInfoUpdate] 回调中体现。\n * 业务场景:开发者需要判断用户说话音量是否太小时,可开启 VAD 声音检测。\n * 注意事项:VAD 算法有性能开销,建议按需设置。\n */\nexports.ZegoMixerTask = ZegoMixerTask;\nvar ZegoSoundLevelConfig = /*#__PURE__*/(0, _createClass2.default)(function ZegoSoundLevelConfig(millisecond, enableVAD) {\n (0, _classCallCheck2.default)(this, ZegoSoundLevelConfig);\n this.millisecond = millisecond;\n this.enableVAD = enableVAD;\n});\n/**\n * 自动混流任务对象\n *\n * 详情描述:调用 [StartAutoMixerTask] 函数向 ZEGO RTC 服务器发起自动混流任务时,需要通过该参数配置自动混流任务,包括任务 ID、房间 ID、音频配置、输出流列表、是否开启声浪回调通知。\n * 业务场景:当向 ZEGO RTC 服务器发起自动混流任务时,需要这个配置。\n * 注意事项:作为调用 [StartAutoMixerTask] 函数时传入的参数。\n */\nexports.ZegoSoundLevelConfig = ZegoSoundLevelConfig;\nvar ZegoAutoMixerTask = /*#__PURE__*/(0, _createClass2.default)(\n/**\n * 构造一个自动混流任务对象\n */\nfunction ZegoAutoMixerTask() {\n (0, _classCallCheck2.default)(this, ZegoAutoMixerTask);\n this.taskID = \"\";\n this.roomID = \"\";\n this.outputList = [];\n this.audioConfig = new ZegoMixerAudioConfig();\n this.enableSoundLevel = false;\n});\n/**\n * 推流音频配置\n *\n * 配置推流的音频码率、声道数、音频编码\n */\nexports.ZegoAutoMixerTask = ZegoAutoMixerTask;\nvar ZegoAudioConfig = /*#__PURE__*/(0, _createClass2.default)(function ZegoAudioConfig(bitrate, channel, codecID) {\n (0, _classCallCheck2.default)(this, ZegoAudioConfig);\n this.bitrate = bitrate;\n this.channel = channel;\n this.codecID = codecID;\n});\n/**\n * 录制配置\n */\nexports.ZegoAudioConfig = ZegoAudioConfig;\nvar ZegoDataRecordConfig = /*#__PURE__*/(0, _createClass2.default)(function ZegoDataRecordConfig(filePath, recordType) {\n (0, _classCallCheck2.default)(this, ZegoDataRecordConfig);\n this.filePath = filePath;\n this.recordType = recordType;\n});\n/**\n * 文件录制进度\n */\nexports.ZegoDataRecordConfig = ZegoDataRecordConfig;\nvar ZegoDataRecordProgress = /*#__PURE__*/(0, _createClass2.default)(function ZegoDataRecordProgress(duration, currentFileSize, quality) {\n (0, _classCallCheck2.default)(this, ZegoDataRecordProgress);\n this.duration = duration;\n this.currentFileSize = currentFileSize;\n this.quality = quality;\n});\n/**\n * 精准seek的配置\n */\nexports.ZegoDataRecordProgress = ZegoDataRecordProgress;\nvar ZegoAccurateSeekConfig = /*#__PURE__*/(0, _createClass2.default)(function ZegoAccurateSeekConfig() {\n (0, _classCallCheck2.default)(this, ZegoAccurateSeekConfig);\n this.timeout = 5000;\n});\n/**\n * 媒体播放器网络缓存信息\n */\nexports.ZegoAccurateSeekConfig = ZegoAccurateSeekConfig;\nvar ZegoNetWorkResourceCache = /*#__PURE__*/(0, _createClass2.default)(function ZegoNetWorkResourceCache(time, size) {\n (0, _classCallCheck2.default)(this, ZegoNetWorkResourceCache);\n this.time = time;\n this.size = size;\n});\n/**\n * 用于指定播放器的多媒体资源。\n *\n * 用于在加载多媒体资源时,配置加载参数。\n */\nexports.ZegoNetWorkResourceCache = ZegoNetWorkResourceCache;\nvar ZegoMediaPlayerResource = /*#__PURE__*/(0, _createClass2.default)(function ZegoMediaPlayerResource() {\n (0, _classCallCheck2.default)(this, ZegoMediaPlayerResource);\n this.loadType = ZegoMultimediaLoadType.FilePath;\n this.startPosition = 0;\n this.alphaLayout = ZegoAlphaLayoutType.None;\n this.filePath = \"\";\n this.memory = undefined;\n this.resourceID = \"\";\n});\nexports.ZegoMediaPlayerResource = ZegoMediaPlayerResource;\nvar ZegoMediaPlayer = /*#__PURE__*/(0, _createClass2.default)(function ZegoMediaPlayer() {\n (0, _classCallCheck2.default)(this, ZegoMediaPlayer);\n});\nexports.ZegoMediaPlayer = ZegoMediaPlayer;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vdW5pX21vZHVsZXMvemVnby1aZWdvRXhwcmVzc1VuaUFwcC1KUy9jb21wb25lbnRzL3plZ28tWmVnb0V4cHJlc3NVbmlBcHAtSlMvbGliL1plZ29FeHByZXNzRGVmaW5lcy5qcyJdLCJuYW1lcyI6WyJaZWdvU2NlbmFyaW8iLCJaZWdvUm9vbU1vZGUiLCJaZWdvRW5naW5lU3RhdGUiLCJaZWdvUm9vbVN0YXRlIiwiWmVnb1Jvb21TdGF0ZUNoYW5nZWRSZWFzb24iLCJaZWdvUHVibGlzaENoYW5uZWwiLCJaZWdvVmlld01vZGUiLCJaZWdvVmlkZW9NaXJyb3JNb2RlIiwiWmVnb1B1Ymxpc2hlclN0YXRlIiwiWmVnb1ZpZGVvQ29uZmlnUHJlc2V0IiwiWmVnb1N0cmVhbVF1YWxpdHlMZXZlbCIsIlplZ29BdWRpb0NoYW5uZWwiLCJaZWdvQXVkaW9NaXhNb2RlIiwiWmVnb0F1ZGlvQ29kZWNJRCIsIlplZ29WaWRlb0NvZGVjSUQiLCJaZWdvT3JpZW50YXRpb24iLCJaZWdvVmlkZW9TdHJlYW1UeXBlIiwiWmVnb0FFQ01vZGUiLCJaZWdvQU5TTW9kZSIsIlplZ29UcmFmZmljQ29udHJvbFByb3BlcnR5IiwiWmVnb1RyYWZmaWNDb250cm9sTWluVmlkZW9CaXRyYXRlTW9kZSIsIlplZ29QbGF5ZXJTdGF0ZSIsIlplZ29QbGF5ZXJNZWRpYUV2ZW50IiwiWmVnb1N0cmVhbVJlc291cmNlTW9kZSIsIlplZ29TdHJlYW1SZXNvdXJjZVN3aXRjaE1vZGUiLCJaZWdvU3RyZWFtUmVzb3VyY2VUeXBlIiwiWmVnb1VwZGF0ZVR5cGUiLCJaZWdvU3RyZWFtUmVsYXlDRE5TdGF0ZSIsIlplZ29TdHJlYW1SZWxheUNETlVwZGF0ZVJlYXNvbiIsIlplZ29EZXZpY2VUeXBlIiwiWmVnb0RldmljZUV4Y2VwdGlvblR5cGUiLCJaZWdvUmVtb3RlRGV2aWNlU3RhdGUiLCJaZWdvQXVkaW9Sb3V0ZSIsIlplZ29NaXhlcklucHV0Q29udGVudFR5cGUiLCJaZWdvQXVkaW9Db25maWdQcmVzZXQiLCJaZWdvTWVkaWFQbGF5ZXJTdGF0ZSIsIlplZ29NZWRpYVBsYXllck5ldHdvcmtFdmVudCIsIlplZ29NZWRpYVBsYXllckF1ZGlvQ2hhbm5lbCIsIlplZ29EYXRhUmVjb3JkVHlwZSIsIlplZ29EYXRhUmVjb3JkU3RhdGUiLCJaZWdvTXVsdGltZWRpYUxvYWRUeXBlIiwiWmVnb0FscGhhTGF5b3V0VHlwZSIsIlplZ29Mb2dDb25maWciLCJsb2dQYXRoIiwibG9nU2l6ZSIsImxvZ0NvdW50IiwiWmVnb0VuZ2luZVByb2ZpbGUiLCJhcHBJRCIsImFwcFNpZ24iLCJzY2VuYXJpbyIsIlplZ29FbmdpbmVDb25maWciLCJaZWdvUm9vbUNvbmZpZyIsIm1heE1lbWJlckNvdW50IiwiaXNVc2VyU3RhdHVzTm90aWZ5IiwidG9rZW4iLCJaZWdvVmlkZW9Db25maWciLCJjYXB0dXJlV2lkdGgiLCJjYXB0dXJlSGVpZ2h0IiwiZW5jb2RlV2lkdGgiLCJlbmNvZGVIZWlnaHQiLCJmcHMiLCJiaXRyYXRlIiwiY29kZWNJRCIsIlplZ29Wb2ljZUNoYW5nZXJQYXJhbSIsInBpdGNoIiwiWmVnb1VzZXIiLCJ1c2VySUQiLCJ1c2VyTmFtZSIsIlplZ29SZWN0IiwieCIsInkiLCJ3aWR0aCIsImhlaWdodCIsIlplZ29QdWJsaXNoZXJDb25maWciLCJaZWdvQ0ROQ29uZmlnIiwidXJsIiwiYXV0aFBhcmFtIiwiWmVnb1BsYXllckNvbmZpZyIsImNkbkNvbmZpZyIsIlplZ29FZmZlY3RzQmVhdXR5UGFyYW0iLCJ3aGl0ZW5JbnRlbnNpdHkiLCJyb3N5SW50ZW5zaXR5Iiwic21vb3RoSW50ZW5zaXR5Iiwic2hhcnBlbkludGVuc2l0eSIsIlplZ29NaXhlckF1ZGlvQ29uZmlnIiwiY2hhbm5lbCIsIk1vbm8iLCJEZWZhdWx0IiwibWl4TW9kZSIsIlJhdyIsIlplZ29NaXhlclZpZGVvQ29uZmlnIiwiWmVnb01peGVySW5wdXQiLCJzdHJlYW1JRCIsImNvbnRlbnRUeXBlIiwibGF5b3V0Iiwic291bmRMZXZlbElEIiwiWmVnb01peGVyT3V0cHV0IiwidGFyZ2V0IiwiWmVnb1dhdGVybWFyayIsImltYWdlVVJMIiwiWmVnb01peGVyVGFzayIsInRhc2tJRCIsImlucHV0TGlzdCIsIm91dHB1dExpc3QiLCJhdWRpb0NvbmZpZyIsInZpZGVvQ29uZmlnIiwiZW5hYmxlU291bmRMZXZlbCIsImJhY2tncm91bmRJbWFnZVVSTCIsIndhdGVybWFyayIsImFkdmFuY2VkQ29uZmlnIiwiTWFwIiwiWmVnb1NvdW5kTGV2ZWxDb25maWciLCJtaWxsaXNlY29uZCIsImVuYWJsZVZBRCIsIlplZ29BdXRvTWl4ZXJUYXNrIiwicm9vbUlEIiwiWmVnb0F1ZGlvQ29uZmlnIiwiWmVnb0RhdGFSZWNvcmRDb25maWciLCJmaWxlUGF0aCIsInJlY29yZFR5cGUiLCJaZWdvRGF0YVJlY29yZFByb2dyZXNzIiwiZHVyYXRpb24iLCJjdXJyZW50RmlsZVNpemUiLCJxdWFsaXR5IiwiWmVnb0FjY3VyYXRlU2Vla0NvbmZpZyIsInRpbWVvdXQiLCJaZWdvTmV0V29ya1Jlc291cmNlQ2FjaGUiLCJ0aW1lIiwic2l6ZSIsIlplZ29NZWRpYVBsYXllclJlc291cmNlIiwibG9hZFR5cGUiLCJGaWxlUGF0aCIsInN0YXJ0UG9zaXRpb24iLCJhbHBoYUxheW91dCIsIk5vbmUiLCJtZW1vcnkiLCJ1bmRlZmluZWQiLCJyZXNvdXJjZUlEIiwiWmVnb01lZGlhUGxheWVyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTtBQUNPLElBQUlBLFlBQVk7QUFBQztBQUN4QixDQUFDLFVBQVVBLFlBQVksRUFBRTtFQUNyQjtFQUNBQSxZQUFZLENBQUNBLFlBQVksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxTQUFTO0VBQ3JEO0VBQ0FBLFlBQVksQ0FBQ0EsWUFBWSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLGVBQWU7RUFDakU7RUFDQUEsWUFBWSxDQUFDQSxZQUFZLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxD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QSIsImZpbGUiOiI0Ni5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKiDmiL/pl7TlnLrmma8gKi9cbmV4cG9ydCB2YXIgWmVnb1NjZW5hcmlvO1xuKGZ1bmN0aW9uIChaZWdvU2NlbmFyaW8pIHtcbiAgICAvKiog44CQ5bey5bqf5byD44CR5pen54mI6YCa55So5Zy65pmv77yM5q2k5Zy65pmv5ZyoIDMuMC4wIOeJiOacrOWPiuS7peS4iuW3suW6n+W8g++8jOS4jeW7uuiuruS9v+eUqO+8jOivt+WwveW/q+i/geenu+WIsOaWsOeJiOWcuuaZr+OAgiAqL1xuICAgIFplZ29TY2VuYXJpb1taZWdvU2NlbmFyaW9bXCJHZW5lcmFsXCJdID0gMF0gPSBcIkdlbmVyYWxcIjtcbiAgICAvKiog44CQ5bey5bqf5byD44CR5pen54mI5a6e5pe26YCa6K6v5Zy65pmv77yM5q2k5Zy65pmv5ZyoIDMuMC4wIOeJiOacrOWPiuS7peS4iuW3suW6n+W8g++8jOS4jeW7uuiuruS9v+eUqO+8jOivt+WwveW/q+i/geenu+WIsOaWsOeJiOWcuuaZr+OAgiAqL1xuICAgIFplZ29TY2VuYXJpb1taZWdvU2NlbmFyaW9bXCJDb21tdW5pY2F0aW9uXCJdID0gMV0gPSBcIkNvbW11bmljYXRpb25cIjtcbiAgICAvKiog44CQ5bey5bqf5byD44CR5pen54mI55u05pKt5Zy65pmv77yM5q2k5Zy65pmv5ZyoIDMuMC4wIOeJiOacrOWPiuS7peS4iuW3suW6n+W8g++8jOS4jeW7uuiuruS9v+eUqO+8jOivt+WwveW/q+i/geenu+WIsOaWsOeJiOWcuuaZr+OAgiAqL1xuICAgIFplZ29TY2VuYXJpb1taZWdvU2NlbmFyaW9bXCJMaXZlXCJdID0gMl0gPSBcIkxpdmVcIjtcbiAgICAvKiog5pSv5oyB54mI5pys77yaMy4wLjAg5Y+K5Lul5LiK44CC6K+m5oOF5o+P6L+w77ya6buY6K6k77yI6YCa55So77yJ5Zy65pmv77yM6Iul5LiL5YiX5Zy65pmv5p6a5Li+5Z2H5LiN56ym5ZCI5byA5Y+R6ICF55qE5a6e6ZmF5bqU55So5Zy65pmv77yM5Y+v5L2/55So5q2k6buY6K6k5Zy65pmv44CCICovXG4gICAgWmVnb1NjZW5hcmlvW1plZ29TY2VuYXJpb1tcIkRlZmF1bHRcIl0gPSAzXSA9IFwiRGVmYXVsdFwiO1xuICAgIC8qKiDmlK/mjIHniYjmnKzvvJozLjAuMCDlj4rku6XkuIrjgILor6bmg4Xmj4/ov7DvvJrmoIflh4bpn7Pop4bpopHpgJror53lnLrmma/vvIzpgILnlKjkuo4gMXYxIOinhumikemAmuivneWcuuaZr+OAgiAqL1xuICAgIFplZ29TY2VuYXJpb1taZWdvU2NlbmFyaW9bXCJTdGFuZGFyZFZpZGVvQ2FsbFwiXSA9IDRdID0gXCJTdGFuZGFyZFZpZGVvQ2FsbFwiO1xuICAgIC8qKiDmlK/mjIHniYjmnKzvvJozLjAuMCDlj4rku6XkuIrjgILor6bmg4Xmj4/ov7DvvJrpq5jlk4HotKjpn7Pop4bpopHpgJror53lnLrmma/vvIzkuI7moIflh4bpn7Pop4bpopHpgJror53lnLrmma/nsbvkvLzvvIzkvYbor6XlnLrmma/pu5jorqTph4fnlKjkuobmm7Tpq5jnmoTop4bpopHluKfnjofjgIHnoIHnjofjgIHliIbovqjnjocgKDU0MHAp77yM6YCC55So5LqO5a+555S76LSo6KaB5rGC6L6D6auY55qE6KeG6aKR6YCa6K+d5Zy65pmv44CCICovXG4gICAgWmVnb1NjZW5hcmlvW1plZ29TY2VuYXJpb1tcIkhpZ2hRdWFsaXR5VmlkZW9DYWxsXCJdID0gNV0gPSBcIkhpZ2hRdWFsaXR5VmlkZW9DYWxsXCI7XG4gICAgLyoqIOaUr+aMgeeJiOacrO+8mjMuMC4wIOWPiuS7peS4iuOAguivpuaDheaPj+i/sO+8muagh+WHhuivreiBiuaIv+WcuuaZr++8jOmAgueUqOS6juWkmuS6uue6r+ivremfs+mAmuivne+8iOiKguecgea1gemHj++8ieOAguazqOaEj++8muWcqOWunuaXtumfs+inhumikSAoRXhwcmVzc1ZpZGVvKSBTREsg5LiK77yM5q2k5Zy65pmv6buY6K6k5LiN5byA5ZCv5pGE5YOP5aS044CCICovXG4gICAgWmVnb1NjZW5hcmlvW1plZ29TY2VuYXJpb1tcIlN0YW5kYXJkQ2hhdHJvb21cIl0gPSA2XSA9IFwiU3RhbmRhcmRDaGF0cm9vbVwiO1xuICAgIC8qKiDmlK/mjIHniYjmnKzvvJozLjAuMCDlj4rku6XkuIrjgILor6bmg4Xmj4/ov7DvvJrpq5jlk4HotKjor63ogYrmiL/lnLrmma/vvIzkuI7moIflh4bor63ogYrmiL/lnLrmma/nsbvkvLzvvIzkvYbmraTlnLrmma/pu5jorqTph4fnlKjkuobmm7Tpq5jnmoTpn7PpopHnoIHnjofjgILpgILnlKjkuo7lr7npn7PotKjopoHmsYLovoPpq5jnmoTlpJrkurrnuq/or63pn7PpgJror53lnLrmma/jgILms6jmhI/vvJrlnKjlrp7ml7bpn7Pop4bpopEgKEV4cHJlc3NWaWRlbykgU0RLIOS4iu+8jOatpOWcuuaZr+m7mOiupOS4jeW8gOWQr+aRhOWDj+WktOOAgiAqL1xuICAgIFplZ29TY2VuYXJpb1taZWdvU2NlbmFyaW9bXCJIaWdoUXVhbGl0eUNoYXRyb29tXCJdID0gN10gPSBcIkhpZ2hRdWFsaXR5Q2hhdHJvb21cIjtcbiAgICAvKiog5pSv5oyB54mI5pys77yaMy4wLjAg5Y+K5Lul5LiK44CC6K+m5oOF5o+P6L+w77ya55u05pKt5Zy65pmv77yM6YCC55So5LqO56eA5Zy644CB5ri45oiP44CB55S15ZWG44CB5pWZ6IKy5aSn54+t6K++562J5LiA5a+55aSa55u05pKt55qE5Zy65pmv77yM5a+56Z+z55S76LSo6YeP44CB5rWB55WF5bqm44CB5YW85a655oCn6L+b6KGM5LqG5LyY5YyW44CC5rOo5oSP77ya5Y2z5L6/5piv55u05pKt5Zy65pmv77yMU0RLIOS5n+ayoeacieS4muWKoeS4iueahCDigJzop5LoibLigJ0g5LmL5YiG77yI5L6L5aaC5Li75pKt44CB6KeC5LyX77yJ77yM5oi/6Ze05YaF55qE5omA5pyJ55So5oi35Z2H5Y+v5o6o5ouJ5rWB44CCICovXG4gICAgWmVnb1NjZW5hcmlvW1plZ29TY2VuYXJpb1tcIkJyb2FkY2FzdFwiXSA9IDhdID0gXCJCcm9hZGNhc3RcIjtcbiAgICAvKiog5pSv5oyB54mI5pys77yaMy4wLjAg5Y+K5Lul5LiK44CC6K+m5oOF5o+P6L+w77ya5Y2h5ouJIE9LIChLVFYpIOWcuuaZr++8jOmAgueUqOS6juWunuaXtuWQiOWUseOAgeWcqOe6vyBLIOatjOWcuuaZr++8jOWvueW7tui/n+OAgemfs+i0qOOAgeiAs+i/lOOAgeWbnuWjsOa2iOmZpOetieWBmuS6huS8mOWMlu+8jOWQjOaXtui/mOS/nemanOS6huWkmuS6uuWQiOWUseaXtueyvuWHhuWvuem9kOWSjOi2heS9juaXtuW7tuOAgiAqL1xuICAgIFplZ29TY2VuYXJpb1taZWdvU2NlbmFyaW9bXCJLYXJhb2tlXCJdID0gOV0gPSBcIkthcmFva2VcIjtcbiAgICAvKiog5pSv5oyB54mI5pys77yaMy4zLjAg5Y+K5Lul5LiK44CC6K+m5oOF5o+P6L+w77ya5qCH5YeG6K+t6Z+z6YCa6K+d5Zy65pmv77yM6YCC55So5LqOIDF2MSDnuq/or63pn7PpgJror53lnLrmma/jgILms6jmhI/vvJrlnKjlrp7ml7bpn7Pop4bpopEgKEV4cHJlc3NWaWRlbykgU0RLIOS4iu+8jOatpOWcuuaZr+m7mOiupOS4jeW8gOWQr+aRhOWDj+WktOOAgiAqL1xuICAgIFplZ29TY2VuYXJpb1taZWdvU2NlbmFyaW9bXCJTdGFuZGFyZFZvaWNlQ2FsbFwiXSA9IDEwXSA9IFwiU3RhbmRhcmRWb2ljZUNhbGxcIjtcbn0pKFplZ29TY2VuYXJpbyB8fCAoWmVnb1NjZW5hcmlvID0ge30pKTtcbi8qKiDmiL/pl7TmqKHlvI/jgIIgKi9cbmV4cG9ydCB2YXIgWmVnb1Jvb21Nb2RlO1xuKGZ1bmN0aW9uIChaZWdvUm9vbU1vZGUpIHtcbiAgICAvKiog5Y2V5oi/6Ze05qih5byP44CCICovXG4gICAgWmVnb1Jvb21Nb2RlW1plZ29Sb29tTW9kZVtcIlNpbmdsZVJvb21cIl0gPSAwXSA9IFwiU2luZ2xlUm9vbVwiO1xuICAgIC8qKiDlpJrmiL/pl7TmqKHlvI/jgIIgKi9cbiAgICBaZWdvUm9vbU1vZGVbWmVnb1Jvb21Nb2RlW1wiTXVsdGlSb29tXCJdID0gMV0gPSBcIk11bHRpUm9vbVwiO1xufSkoWmVnb1Jvb21Nb2RlIHx8IChaZWdvUm9vbU1vZGUgPSB7fSkpO1xuLyoqIOW8leaTjueKtuaAgSAqL1xuZXhwb3J0IHZhciBaZWdvRW5naW5lU3RhdGU7XG4oZnVuY3Rpb24gKFplZ29FbmdpbmVTdGF0ZSkge1xuICAgIC8qKiDlvJXmk47lt7LlvIDlkK8gKi9cbiAgICBaZWdvRW5naW5lU3RhdGVbWmVnb0VuZ2luZVN0YXRlW1wiU3RhcnRcIl0gPSAwXSA9IFwiU3RhcnRcIjtcbiAgICAvKiog5byV5pOO5bey5YGc5q2iICovXG4gICAgWmVnb0VuZ2luZVN0YXRlW1plZ29FbmdpbmVTdGF0ZVtcIlN0b3BcIl0gPSAxXSA9IFwiU3RvcFwiO1xufSkoWmVnb0VuZ2luZVN0YXRlIHx8IChaZWdvRW5naW5lU3RhdGUgPSB7fSkpO1xuLyoqIOaIv+mXtOeKtuaAgSAqL1xuZXhwb3J0IHZhciBaZWdvUm9vbVN0YXRlO1xuKGZ1bmN0aW9uIChaZWdvUm9vbVN0YXRlKSB7XG4gICAgLyoqIOacqui/nuaOpeeKtuaAge+8jOWcqOeZu+W9leaIv+mXtOWJjeWSjOmAgOWHuuaIv+mXtOS5i+WQjui/m+WFpeivpeeKtuaAgeOAguWmguaenOeZu+W9leaIv+mXtOeahOi/h+eoi+WHuueOsOeos+aAgeW8guW4uO+8jOS+i+WmgiBBcHBJRCDmiJYgVG9rZW4g5LiN5q2j56Gu77yM5oiW6ICF5pyJ55u45ZCM55So5oi35ZCN5Zyo5YW25LuW5Zyw5pa555m75b2V5a+86Ie05pys56uv6KKrIEtpY2tPdXTvvIzpg73kvJrov5vlhaXor6XnirbmgIEgKi9cbiAgICBaZWdvUm9vbVN0YXRlW1plZ29Sb29tU3RhdGVbXCJEaXNjb25uZWN0ZWRcIl0gPSAwXSA9IFwiRGlzY29ubmVjdGVkXCI7XG4gICAgLyoqIOato+WcqOivt+axgui/nuaOpeeKtuaAge+8jOeZu+W9leaIv+mXtOWKqOS9nOaJp+ihjOaIkOWKn+WQjuS8mui/m+WFpeatpOeKtuaAgeOAgumAmuW4uOmAmui/h+ivpeeKtuaAgei/m+ihjOW6lOeUqOeVjOmdoueahOWxleekuuOAguWmguaenOWboOS4uue9kee7nOi0qOmHj+S4jeS9s+S6p+eUn+eahOS4reaWre+8jCBTREsg5Lya6L+b6KGM5YaF6YOo6YeN6K+V77yM5Lmf5Lya5Zue5Yiw5q2j5Zyo6K+35rGC6L+e5o6l54q25oCBICovXG4gICAgWmVnb1Jvb21TdGF0ZVtaZWdvUm9vbVN0YXRlW1wiQ29ubmVjdGluZ1wiXSA9IDFdID0gXCJDb25uZWN0aW5nXCI7XG4gICAgLyoqIOi/nuaOpeaIkOWKn+eKtuaAge+8jOi/m+WFpeivpeeKtuaAgeihqOekuueZu+W9leaIv+mXtOW3sue7j+aIkOWKn++8jOeUqOaIt+WPr+S7peato+W4uOaUtuWIsOaIv+mXtOWGheeahOeUqOaIt+WSjOa1geS/oeaBr+WinuWIoOeahOWbnuiwg+mAmuefpSAqL1xuICAgIFplZ29Sb29tU3RhdGVbWmVnb1Jvb21TdGF0ZVtcIkNvbm5lY3RlZFwiXSA9IDJdID0gXCJDb25uZWN0ZWRcIjtcbn0pKFplZ29Sb29tU3RhdGUgfHwgKFplZ29Sb29tU3RhdGUgPSB7fSkpO1xuLyoqIOaIv+mXtOeKtuaAgeWPmOWMluWOn+WboOOAgiAqL1xuZXhwb3J0IHZhciBaZWdvUm9vbVN0YXRlQ2hhbmdlZFJlYXNvbjtcbihmdW5jdGlvbiAoWmVnb1Jvb21TdGF0ZUNoYW5nZWRSZWFzb24pIHtcbiAgICAvKiog5q2j5Zyo55m75b2V5oi/6Ze044CC5b2T6LCD55SoIFtsb2dpblJvb21dIOeZu+W9leaIv+mXtOaIliBbc3dpdGNoUm9vbV0g5YiH5o2i5Yiw55uu5qCH5oi/6Ze05pe277yM6L+b5YWl6K+l54q25oCB77yM6KGo56S65q2j5Zyo6K+35rGC6L+e5o6l5pyN5Yqh5Zmo44CC6YCa5bi46YCa6L+H6K+l54q25oCB6L+b6KGM5bqU55So55WM6Z2i55qE5bGV56S644CCICovXG4gICAgWmVnb1Jvb21TdGF0ZUNoYW5nZWRSZWFzb25bWmVnb1Jvb21TdGF0ZUNoYW5nZWRSZWFzb25bXCJMb2dpbmluZ1wiXSA9IDBdID0gXCJMb2dpbmluZ1wiO1xuICAgIC8qKiDnmbvlvZXmiL/pl7TmiJDlip/jgILlvZPnmbvlvZXmiL/pl7TmiJbliIfmjaLmiL/pl7TmiJDlip/lkI7vvIzov5vlhaXor6XnirbmgIHvvIzooajnpLrnmbvlvZXmiL/pl7Tlt7Lnu4/miJDlip/vvIznlKjmiLflj6/ku6XmraPluLjmlLbliLDmiL/pl7TlhoXnmoTlhbbku5bnlKjmiLflkozmiYDmnInmtYHkv6Hmga/lop7liKDnmoTlm57osIPpgJrnn6XjgIIgKi9cbiAgICBaZWdvUm9vbVN0YXRlQ2hhbmdlZFJlYXNvbltaZWdvUm9vbVN0YXRlQ2hhbmdlZFJlYXNvbltcIkxvZ2luZWRcIl0gPSAxXSA9IFwiTG9naW5lZFwiO1xuICAgIC8qKiDnmbvlvZXmiL/pl7TlpLHotKXjgILlvZPnmbvlvZXmiL/pl7TmiJbliIfmjaLmiL/pl7TlpLHotKXlkI7vvIzov5vlhaXor6XnirbmgIHvvIzooajnpLrnmbvlvZXmiL/pl7TmiJbliIfmjaLmiL/pl7Tlt7Lnu4/lpLHotKXvvIzkvovlpoIgQXBwSUQg5oiWIFRva2VuIOS4jeato+ehruetieOAgiAqL1xuICAgIFplZ29Sb29tU3RhdGVDaGFuZ2VkUmVhc29uW1plZ29Sb29tU3RhdGVDaGFuZ2VkUmVhc29uW1wiTG9naW5GYWlsZWRcIl0gPSAyXSA9IFwiTG9naW5GYWlsZWRcIjtcbiAgICAvKiog5oi/6Ze06L+e5o6l5Li05pe25Lit5pat44CC5aaC5p6c5Zug5Li6572R57uc6LSo6YeP5LiN5L2z5Lqn55Sf55qE5Lit5pat77yMU0RLIOS8mui/m+ihjOWGhemDqOmHjeivleOAgiAqL1xuICAgIFplZ29Sb29tU3RhdGVDaGFuZ2VkUmVhc29uW1plZ29Sb29tU3RhdGVDaGFuZ2VkUmVhc29uW1wiUmVjb25uZWN0aW5nXCJdID0gM10gPSBcIlJlY29ubmVjdGluZ1wiO1xuICAgIC8qKiDmiL/pl7Tph43mlrDov57mjqXmiJDlip/jgILlpoLmnpzlm6DkuLrnvZHnu5zotKjph4/kuI3kvbPkuqfnlJ/nmoTkuK3mlq3vvIxTREsg5Lya6L+b6KGM5YaF6YOo6YeN6K+V77yM6YeN6L+e5oiQ5Yqf5ZCO6L+b5YWl6K+l54q25oCB44CCICovXG4gICAgWmVnb1Jvb21TdGF0ZUNoYW5nZWRSZWFzb25bWmVnb1Jvb21TdGF0ZUNoYW5nZWRSZWFzb25bXCJSZWNvbm5lY3RlZFwiXSA9IDRdID0gXCJSZWNvbm5lY3RlZFwiO1xuICAgIC8qKiDmiL/pl7Tph43mlrDov57mjqXlpLHotKXjgILlpoLmnpzlm6DkuLrnvZHnu5zotKjph4/kuI3kvbPkuqfnlJ/nmoTkuK3mlq3vvIxTREsg5Lya6L+b6KGM5YaF6YOo6YeN6K+V77yM6YeN6L+e5aSx6LSl5ZCO6L+b5YWl6K+l54q25oCB44CCICovXG4gICAgWmVnb1Jvb21TdGF0ZUNoYW5nZWRSZWFzb25bWmVnb1Jvb21TdGF0ZUNoYW5nZWRSZWFzb25bXCJSZWNvbm5lY3RGYWlsZWRcIl0gPSA1XSA9IFwiUmVjb25uZWN0RmFpbGVkXCI7XG4gICAgLyoqIOiiq+acjeWKoeWZqOi4ouWHuuaIv+mXtOOAguS+i+WmguacieebuOWQjOeUqOaIt+WQjeWcqOWFtuS7luWcsOaWueeZu+W9leaIv+mXtOWvvOiHtOacrOerr+iiq+i4ouWHuuaIv+mXtO+8jOS8mui/m+WFpeivpeeKtuaAgeOAgiAqL1xuICAgIFplZ29Sb29tU3RhdGVDaGFuZ2VkUmVhc29uW1plZ29Sb29tU3RhdGVDaGFuZ2VkUmVhc29uW1wiS2lja091dFwiXSA9IDZdID0gXCJLaWNrT3V0XCI7XG4gICAgLyoqIOeZu+WHuuaIv+mXtOaIkOWKn+OAguayoeacieeZu+W9leaIv+mXtOWJjem7mOiupOS4uuivpeeKtuaAge+8jOW9k+iwg+eUqCBbbG9nb3V0Um9vbV0g55m75Ye65oi/6Ze05oiQ5Yqf5oiWIFtzd2l0Y2hSb29tXSDlhoXpg6jnmbvlh7rlvZPliY3miL/pl7TmiJDlip/lkI7vvIzov5vlhaXor6XnirbmgIHjgIIgKi9cbiAgICBaZWdvUm9vbVN0YXRlQ2hhbmdlZFJlYXNvbltaZWdvUm9vbVN0YXRlQ2hhbmdlZFJlYXNvbltcIkxvZ291dFwiXSA9IDddID0gXCJMb2dvdXRcIjtcbiAgICAvKiog55m75Ye65oi/6Ze05aSx6LSl44CC5b2T6LCD55SoIFtsb2dvdXRSb29tXSDnmbvlh7rmiL/pl7TlpLHotKXmiJYgW3N3aXRjaFJvb21dIOWGhemDqOeZu+WHuuW9k+WJjeaIv+mXtOWksei0peWQju+8jOi/m+WFpeivpeeKtuaAgeOAgiAqL1xuICAgIFplZ29Sb29tU3RhdGVDaGFuZ2VkUmVhc29uW1plZ29Sb29tU3RhdGVDaGFuZ2VkUmVhc29uW1wiTG9nb3V0RmFpbGVkXCJdID0gOF0gPSBcIkxvZ291dEZhaWxlZFwiO1xufSkoWmVnb1Jvb21TdGF0ZUNoYW5nZWRSZWFzb24gfHwgKFplZ29Sb29tU3RhdGVDaGFuZ2VkUmVhc29uID0ge30pKTtcbi8qKiDmjqjmtYHpgJrpgZMgKi9cbmV4cG9ydCB2YXIgWmVnb1B1Ymxpc2hDaGFubmVsO1xuKGZ1bmN0aW9uIChaZWdvUHVibGlzaENoYW5uZWwpIHtcbiAgICAvKiog5Li75o6o5rWB6YCa6YGT77yM6buY6K6k6YCa6YGTICovXG4gICAgWmVnb1B1Ymxpc2hDaGFubmVsW1plZ29QdWJsaXNoQ2hhbm5lbFtcIk1haW5cIl0gPSAwXSA9IFwiTWFpblwiO1xuICAgIC8qKiDovoXmjqjmtYHpgJrpgZPvvIjnrKzkuozot6/mjqjmtYHpgJrpgZPvvIkgKi9cbiAgICBaZWdvUHVibGlzaENoYW5uZWxbWmVnb1B1Ymxpc2hDaGFubmVsW1wiQXV4XCJdID0gMV0gPSBcIkF1eFwiO1xuICAgIC8qKiDnrKzkuInot6/mjqjmtYHpgJrpgZMgKi9cbiAgICBaZWdvUHVibGlzaENoYW5uZWxbWmVnb1B1Ymxpc2hDaGFubmVsW1wiVGhpcmRcIl0gPSAyXSA9IFwiVGhpcmRcIjtcbiAgICAvKiog56ys5Zub6Lev5o6o5rWB6YCa6YGTICovXG4gICAgWmVnb1B1Ymxpc2hDaGFubmVsW1plZ29QdWJsaXNoQ2hhbm5lbFtcIkZvdXJ0aFwiXSA9IDNdID0gXCJGb3VydGhcIjtcbn0pKFplZ29QdWJsaXNoQ2hhbm5lbCB8fCAoWmVnb1B1Ymxpc2hDaGFubmVsID0ge30pKTtcbi8qKiDop4bpopHmuLLmn5PloavlhYXmqKHlvI8gKi9cbmV4cG9ydCB2YXIgWmVnb1ZpZXdNb2RlO1xuKGZ1bmN0aW9uIChaZWdvVmlld01vZGUpIHtcbiAgICAvKiog562J5q+U57yp5pS+77yM5Y+v6IO95pyJ6buR6L65ICovXG4gICAgWmVnb1ZpZXdNb2RlW1plZ29WaWV3TW9kZVtcIkFzcGVjdEZpdFwiXSA9IDBdID0gXCJBc3BlY3RGaXRcIjtcbiAgICAvKiog562J5q+U57yp5pS+5aGr5YWF5pW05LiqIFZpZXfvvIzlj6/og73mnInpg6jliIbooqvoo4Hlh48gKi9cbiAgICBaZWdvVmlld01vZGVbWmVnb1ZpZXdNb2RlW1wiQXNwZWN0RmlsbFwiXSA9IDFdID0gXCJBc3BlY3RGaWxsXCI7XG4gICAgLyoqIOWhq+WFheaVtOS4qiBWaWV377yM5Zu+5YOP5Y+v6IO96KKr5ouJ5Ly4ICovXG4gICAgWmVnb1ZpZXdNb2RlW1plZ29WaWV3TW9kZVtcIlNjYWxlVG9GaWxsXCJdID0gMl0gPSBcIlNjYWxlVG9GaWxsXCI7XG59KShaZWdvVmlld01vZGUgfHwgKFplZ29WaWV3TW9kZSA9IHt9KSk7XG4vKiog6aKE6KeI5oiW5ouJ5rWB56uv55qE6ZWc5YOP5qih5byP44CCICovXG5leHBvcnQgdmFyIFplZ29WaWRlb01pcnJvck1vZGU7XG4oZnVuY3Rpb24gKFplZ29WaWRlb01pcnJvck1vZGUpIHtcbiAgICAvKiog5Y+q5pyJ5pys5Zyw6aKE6KeI5pe25omN5piv6ZWc5YOP55S76Z2i77yM6buY6K6k6YeH55So5q2k5qih5byP44CC5b2T56e75Yqo56uv5L2/55So5ZCO572u5pGE5YOP5aS05pe277yM6Jm954S25LuN6buY6K6k6YeH55So5q2k5qih5byP77yM5L2G5piv5LiN6LW35L2c55So77yM5pys5Zyw6aKE6KeI5LiN6K6+572u6ZWc5YOP44CCICovXG4gICAgWmVnb1ZpZGVvTWlycm9yTW9kZVtaZWdvVmlkZW9NaXJyb3JNb2RlW1wiT25seVByZXZpZXdNaXJyb3JcIl0gPSAwXSA9IFwiT25seVByZXZpZXdNaXJyb3JcIjtcbiAgICAvKiog5pys5Zyw6aKE6KeI5ZKM5ouJ5rWB56uv55yL5Yiw55qE6KeG6aKR6YO95piv6ZWc5YOP55S76Z2i44CCICovXG4gICAgWmVnb1ZpZGVvTWlycm9yTW9kZVtaZWdvVmlkZW9NaXJyb3JNb2RlW1wiQm90aE1pcnJvclwiXSA9IDFdID0gXCJCb3RoTWlycm9yXCI7XG4gICAgLyoqIOacrOWcsOmihOiniOWSjOaLiea1geerr+eci+WIsOeahOinhumikemDveS4jeaYr+mVnOWDj+eUu+mdouOAgiAqL1xuICAgIFplZ29WaWRlb01pcnJvck1vZGVbWmVnb1ZpZGVvTWlycm9yTW9kZVtcIk5vTWlycm9yXCJdID0gMl0gPSBcIk5vTWlycm9yXCI7XG4gICAgLyoqIOWPquacieaLiea1geerr+eci+WIsOeahOinhumikeaJjeaYr+mVnOWDj+eUu+mdouOAgiAqL1xuICAgIFplZ29WaWRlb01pcnJvck1vZGVbWmVnb1ZpZGVvTWlycm9yTW9kZVtcIk9ubHlQdWJsaXNoTWlycm9yXCJdID0gM10gPSBcIk9ubHlQdWJsaXNoTWlycm9yXCI7XG59KShaZWdvVmlkZW9NaXJyb3JNb2RlIHx8IChaZWdvVmlkZW9NaXJyb3JNb2RlID0ge30pKTtcbi8qKiDmjqjmtYHnirbmgIEgKi9cbmV4cG9ydCB2YXIgWmVnb1B1Ymxpc2hlclN0YXRlO1xuKGZ1bmN0aW9uIChaZWdvUHVibGlzaGVyU3RhdGUpIHtcbiAgICAvKiog5pyq5o6o5rWB54q25oCB77yM5Zyo5o6o5rWB5YmN5aSE5LqO6K+l54q25oCB44CC5aaC5p6c5o6o5rWB6L+H56iL5Ye6546w56iz5oCB55qE5byC5bi477yM5L6L5aaCIEFwcElEIOaIliBUb2tlbiDkuI3mraPnoa7vvIzmiJbogIXlpoLmnpzlhbbku5bnlKjmiLflt7Lnu4/lnKjmjqjpgIHmtYHvvIzmjqjpgIHnm7jlkIzmtYEgSUQg55qE5rWB5Lya5aSx6LSl77yM6YO95Lya6L+b5YWl5pyq5o6o5rWB54q25oCBICovXG4gICAgWmVnb1B1Ymxpc2hlclN0YXRlW1plZ29QdWJsaXNoZXJTdGF0ZVtcIk5vUHVibGlzaFwiXSA9IDBdID0gXCJOb1B1Ymxpc2hcIjtcbiAgICAvKiog5q2j5Zyo6K+35rGC5o6o5rWB54q25oCB77yM5o6o5rWB5pON5L2c5omn6KGM5oiQ5Yqf5ZCO5Lya6L+b5YWl5q2j5Zyo6K+35rGC5o6o5rWB54q25oCB77yM6YCa5bi46YCa6L+H6K+l54q25oCB6L+b6KGMIFVJIOeVjOmdoueahOWxleekuuOAguWmguaenOWboOS4uue9kee7nOi0qOmHj+S4jeS9s+S6p+eUn+eahOS4reaWre+8jFNESyDkvJrov5vooYzlhoXpg6jph43or5XvvIzkuZ/kvJrlm57liLDmraPlnKjor7fmsYLmjqjmtYHnirbmgIEgKi9cbiAgICBaZWdvUHVibGlzaGVyU3RhdGVbWmVnb1B1Ymxpc2hlclN0YXRlW1wiUHVibGlzaFJlcXVlc3RpbmdcIl0gPSAxXSA9IFwiUHVibGlzaFJlcXVlc3RpbmdcIjtcbiAgICAvKiog5q2j5Zyo5o6o5rWB54q25oCB77yM6L+b5YWl6K+l54q25oCB6KGo5piO5o6o5rWB5bey57uP5oiQ5Yqf77yM55So5oi35Y+v5Lul5q2j5bi46YCa5L+hICovXG4gICAgWmVnb1B1Ymxpc2hlclN0YXRlW1plZ29QdWJsaXNoZXJTdGF0ZVtcIlB1Ymxpc2hpbmdcIl0gPSAyXSA9IFwiUHVibGlzaGluZ1wiO1xufSkoWmVnb1B1Ymxpc2hlclN0YXRlIHx8IChaZWdvUHVibGlzaGVyU3RhdGUgPSB7fSkpO1xuLyoqIOinhumikemFjee9ruWIhui+qOeOh+S4juavlOeJueeOh+mihOiuvuaemuS4vuOAgumihOiuvueahOWIhui+qOeOh+WIhuWIq+mSiOWvueenu+WKqOerr+S4juahjOmdouerr+WBmuS6humAgumFjeOAguWcqOenu+WKqOerr+S4iiBoZWlnaHQg6ZW/5LqOIHdpZHRo77yM6ICM5qGM6Z2i56uv55u45Y+N44CC5L6L5aaCIDEwODBwIOWcqOenu+WKqOerr+S4iuWunumZheS4uiAxMDgwKHcpIHggMTkyMChoKe+8jOiAjOWcqOahjOmdouerr+S4iuWunumZheS4uiAxOTIwKHcpIHggMTA4MChoKSAqL1xuZXhwb3J0IHZhciBaZWdvVmlkZW9Db25maWdQcmVzZXQ7XG4oZnVuY3Rpb24gKFplZ29WaWRlb0NvbmZpZ1ByZXNldCkge1xuICAgIC8qKiDorr7nva7liIbovqjnjofkuLogMzIweDE4MO+8jOm7mOiupOmHh+eUqCAxNSBmcHPvvIznoIHnjocgMzAwIGticHMgKi9cbiAgICBaZWdvVmlkZW9Db25maWdQcmVzZXRbWmVnb1ZpZGVvQ29uZmlnUHJlc2V0W1wiUHJlc2V0MTgwUFwiXSA9IDBdID0gXCJQcmVzZXQxODBQXCI7XG4gICAgLyoqIOiuvue9ruWIhui+qOeOh+S4uiA0ODB4Mjcw77yM6buY6K6k6YeH55SoIDE1IGZwc++8jOeggeeOhyA0MDAga2JwcyAqL1xuICAgIFplZ29WaWRlb0NvbmZpZ1ByZXNldFtaZWdvVmlkZW9Db25maWdQcmVzZXRbXCJQcmVzZXQyNzBQXCJdID0gMV0gPSBcIlByZXNldDI3MFBcIjtcbiAgICAvKiog6K6+572u5YiG6L6o546H5Li6IDY0MHgzNjDvvIzpu5jorqTph4fnlKggMTUgZnBz77yM56CB546HIDYwMCBrYnBzICovXG4gICAgWmVnb1ZpZGVvQ29uZmlnUHJlc2V0W1plZ29WaWRlb0NvbmZpZ1ByZXNldFtcIlByZXNldDM2MFBcIl0gPSAyXSA9IFwiUHJlc2V0MzYwUFwiO1xuICAgIC8qKiDorr7nva7liIbovqjnjofkuLogOTYweDU0MO+8jOm7mOiupOmHh+eUqCAxNSBmcHPvvIznoIHnjocgMTIwMCBrYnBzICovXG4gICAgWmVnb1ZpZGVvQ29uZmlnUHJlc2V0W1plZ29WaWRlb0NvbmZpZ1ByZXNldFtcIlByZXNldDU0MFBcIl0gPSAzXSA9IFwiUHJlc2V0NTQwUFwiO1xuICAgIC8qKiDorr7nva7liIbovqjnjofkuLogMTI4MHg3MjDvvIzpu5jorqTph4fnlKggMTUgZnBz77yM56CB546HIDE1MDAga2JwcyAqL1xuICAgIFplZ29WaWRlb0NvbmZpZ1ByZXNldFtaZWdvVmlkZW9Db25maWdQcmVzZXRbXCJQcmVzZXQ3MjBQXCJdID0gNF0gPSBcIlByZXNldDcyMFBcIjtcbiAgICAvKiog6K6+572u5YiG6L6o546H5Li6IDE5MjB4MTA4MO+8jOm7mOiupOmHh+eUqCAxNSBmcHPvvIznoIHnjocgMzAwMCBrYnBzICovXG4gICAgWmVnb1ZpZGVvQ29uZmlnUHJlc2V0W1plZ29WaWRlb0NvbmZpZ1ByZXNldFtcIlByZXNldDEwODBQXCJdID0gNV0gPSBcIlByZXNldDEwODBQXCI7XG59KShaZWdvVmlkZW9Db25maWdQcmVzZXQgfHwgKFplZ29WaWRlb0NvbmZpZ1ByZXNldCA9IHt9KSk7XG4vKiog5rWB6LSo6YeP562J57qnICovXG5leHBvcnQgdmFyIFplZ29TdHJlYW1RdWFsaXR5TGV2ZWw7XG4oZnVuY3Rpb24gKFplZ29TdHJlYW1RdWFsaXR5TGV2ZWwpIHtcbiAgICAvKiog6LSo6YeP5p6B5aW9ICovXG4gICAgWmVnb1N0cmVhbVF1YWxpdHlMZXZlbFtaZWdvU3RyZWFtUXVhbGl0eUxldmVsW1wiRXhjZWxsZW50XCJdID0gMF0gPSBcIkV4Y2VsbGVudFwiO1xuICAgIC8qKiDotKjph4/lpb0gKi9cbiAgICBaZWdvU3RyZWFtUXVhbGl0eUxldmVsW1plZ29TdHJlYW1RdWFsaXR5TGV2ZWxbXCJHb29kXCJdID0gMV0gPSBcIkdvb2RcIjtcbiAgICAvKiog6LSo6YeP5q2j5bi4ICovXG4gICAgWmVnb1N0cmVhbVF1YWxpdHlMZXZlbFtaZWdvU3RyZWFtUXVhbGl0eUxldmVsW1wiTWVkaXVtXCJdID0gMl0gPSBcIk1lZGl1bVwiO1xuICAgIC8qKiDotKjph4/lt64gKi9cbiAgICBaZWdvU3RyZWFtUXVhbGl0eUxldmVsW1plZ29TdHJlYW1RdWFsaXR5TGV2ZWxbXCJCYWRcIl0gPSAzXSA9IFwiQmFkXCI7XG4gICAgLyoqIOi0qOmHj+W8guW4uCAqL1xuICAgIFplZ29TdHJlYW1RdWFsaXR5TGV2ZWxbWmVnb1N0cmVhbVF1YWxpdHlMZXZlbFtcIkRpZVwiXSA9IDRdID0gXCJEaWVcIjtcbiAgICAvKiog6LSo6YeP5pyq55+lICovXG4gICAgWmVnb1N0cmVhbVF1YWxpdHlMZXZlbFtaZWdvU3RyZWFtUXVhbGl0eUxldmVsW1wiVW5rbm93blwiXSA9IDVdID0gXCJVbmtub3duXCI7XG59KShaZWdvU3RyZWFtUXVhbGl0eUxldmVsIHx8IChaZWdvU3RyZWFtUXVhbGl0eUxldmVsID0ge30pKTtcbi8qKiDpn7PpopHlo7DpgZMgKi9cbmV4cG9ydCB2YXIgWmVnb0F1ZGlvQ2hhbm5lbDtcbihmdW5jdGlvbiAoWmVnb0F1ZGlvQ2hhbm5lbCkge1xuICAgIC8qKiDmnKrnn6UgKi9cbiAgICBaZWdvQXVkaW9DaGFubmVsW1plZ29BdWRpb0NoYW5uZWxbXCJVbmtub3duXCJdID0gMF0gPSBcIlVua25vd25cIjtcbiAgICAvKiog5Y2V5aOw6YGTICovXG4gICAgWmVnb0F1ZGlvQ2hhbm5lbFtaZWdvQXVkaW9DaGFubmVsW1wiTW9ub1wiXSA9IDFdID0gXCJNb25vXCI7XG4gICAgLyoqIOWPjOWjsOmBkyAqL1xuICAgIFplZ29BdWRpb0NoYW5uZWxbWmVnb0F1ZGlvQ2hhbm5lbFtcIlN0ZXJlb1wiXSA9IDJdID0gXCJTdGVyZW9cIjtcbn0pKFplZ29BdWRpb0NoYW5uZWwgfHwgKFplZ29BdWRpb0NoYW5uZWwgPSB7fSkpO1xuLyoqIOmfs+mikea3t+mfs+aooeW8jyAqL1xuZXhwb3J0IHZhciBaZWdvQXVkaW9NaXhNb2RlO1xuKGZ1bmN0aW9uIChaZWdvQXVkaW9NaXhNb2RlKSB7XG4gICAgLyoqIOm7mOiupOaooeW8j++8jOaXoOeJueauiuihjOS4uiAqL1xuICAgIFplZ29BdWRpb01peE1vZGVbWmVnb0F1ZGlvTWl4TW9kZVtcIlJhd1wiXSA9IDBdID0gXCJSYXdcIjtcbiAgICAvKiog6Z+z6aKR6IGa54Sm5qih5byP77yM5Y+v5Zyo5aSa6Lev6Z+z6aKR5rWB5Lit56qB5Ye65p+Q6Lev5rWB55qE5aOw6Z+zICovXG4gICAgWmVnb0F1ZGlvTWl4TW9kZVtaZWdvQXVkaW9NaXhNb2RlW1wiRm9jdXNlZFwiXSA9IDFdID0gXCJGb2N1c2VkXCI7XG59KShaZWdvQXVkaW9NaXhNb2RlIHx8IChaZWdvQXVkaW9NaXhNb2RlID0ge30pKTtcbi8qKiDpn7PpopHnvJbnoIHlmaggSUQgKi9cbmV4cG9ydCB2YXIgWmVnb0F1ZGlvQ29kZWNJRDtcbihmdW5jdGlvbiAoWmVnb0F1ZGlvQ29kZWNJRCkge1xuICAgIC8qKiDpu5jorqTlgLzvvIzmoLnmja7osIPnlKggW2NyZWF0ZUVuZ2luZV0g5pe255qEIFtzY2VuYXJpb10g5Yaz5a6a44CCICovXG4gICAgWmVnb0F1ZGlvQ29kZWNJRFtaZWdvQXVkaW9Db2RlY0lEW1wiRGVmYXVsdFwiXSA9IDBdID0gXCJEZWZhdWx0XCI7XG4gICAgLyoqIOWPr+eUqOS6jiBSVEMg5ZKMIENETiDmjqjmtYHvvJvnoIHnjofojIPlm7QgMTBrYnBzIH4gMTI4a2Jwc++8m+aUr+aMgeWPjOWjsOmBk++8m+W7tui/n+WcqCA1MDBtcyDlt6blj7PjgILkuI4gV2ViIFNESyDkupLpgJrml7bpnIDopoHmnI3liqHnq6/ovaznoIHvvJvovazmjqggQ0ROIOaXtuS4jemcgOimgeacjeWKoeerr+S6kei9rOeggeOAgiAqL1xuICAgIFplZ29BdWRpb0NvZGVjSURbWmVnb0F1ZGlvQ29kZWNJRFtcIk5vcm1hbFwiXSA9IDFdID0gXCJOb3JtYWxcIjtcbiAgICAvKiog5Y+v55So5LqOIFJUQyDlkowgQ0ROIOaOqOa1ge+8m+WFvOWuueaAp+Wlve+8jOeggeeOh+iMg+WbtCAxNmticHMgfiAxOTJrYnBz77yb5pSv5oyB5Y+M5aOw6YGT77yb5bu26L+fIDM1MG1zIOW3puWPs++8m+ebuOWQjOeggeeOh+S4i++8iOi+g+S9jueggeeOh++8ie+8jOmfs+i0qOW8seS6jiBbTm9ybWFsXeOAguS4jiBXZWIgU0RLIOS6kumAmuaXtumcgOimgeacjeWKoeerr+i9rOegge+8m+i9rOaOqCBDRE4g5pe25LiN6ZyA6KaB5pyN5Yqh56uv5LqR6L2s56CB44CCICovXG4gICAgWmVnb0F1ZGlvQ29kZWNJRFtaZWdvQXVkaW9Db2RlY0lEW1wiTm9ybWFsMlwiXSA9IDJdID0gXCJOb3JtYWwyXCI7XG4gICAgLyoqIOS4jeaOqOiNkOS9v+eUqO+8m+iLpemcgOimgeS9v+eUqOivt+WFiOWSqOivoiBaRUdPIOaKgOacr+aUr+aMgeOAguS7heWPr+eUqOS6jiBSVEMg5o6o5rWB44CCICovXG4gICAgWmVnb0F1ZGlvQ29kZWNJRFtaZWdvQXVkaW9Db2RlY0lEW1wiTm9ybWFsM1wiXSA9IDNdID0gXCJOb3JtYWwzXCI7XG4gICAgLyoqIOS4jeaOqOiNkOS9v+eUqO+8m+iLpemcgOimgeS9v+eUqOivt+WFiOWSqOivoiBaRUdPIOaKgOacr+aUr+aMgeOAguS7heWPr+eUqOS6jiBSVEMg5o6o5rWB44CCICovXG4gICAgWmVnb0F1ZGlvQ29kZWNJRFtaZWdvQXVkaW9Db2RlY0lEW1wiTG93XCJdID0gNF0gPSBcIkxvd1wiO1xuICAgIC8qKiDkuI3mjqjojZDkvb/nlKjvvJvoi6XpnIDopoHkvb/nlKjor7flhYjlkqjor6IgWkVHTyDmioDmnK/mlK/mjIHjgILku4Xlj6/nlKjkuo4gUlRDIOaOqOa1ge+8m+acgOWkp+eggeeOh+S4uiAxNmticHPjgIIgKi9cbiAgICBaZWdvQXVkaW9Db2RlY0lEW1plZ29BdWRpb0NvZGVjSURbXCJMb3cyXCJdID0gNV0gPSBcIkxvdzJcIjtcbiAgICAvKiog5LuF5Y+v55So5LqOIFJUQyDmjqjmtYHvvJvnoIHnjofojIPlm7QgNmticHMgfiAxOTJrYnBz77yb5pSv5oyB5Y+M5aOw6YGT77yb5bu26L+f5ZyoIDIwMG1zIOW3puWPs++8m+ebuOWQjOeggeeOh+S4i++8iOi+g+S9jueggeeOh++8ie+8jOmfs+i0qOaYjuaYvuWlveS6jiBbTm9ybWFsXSDkuI4gW05vcm1hbDJd77ybQ1BVIOW8gOmUgOi+g+S9juOAguS4jiBXZWIgU0RLIOS6kumAmuaXtuS4jemcgOimgeacjeWKoeerr+S6kei9rOegge+8m+i9rOaOqCBDRE4g5pe26ZyA6KaB5pyN5Yqh56uv6L2s56CB44CCICovXG4gICAgWmVnb0F1ZGlvQ29kZWNJRFtaZWdvQXVkaW9Db2RlY0lEW1wiTG93M1wiXSA9IDZdID0gXCJMb3czXCI7XG59KShaZWdvQXVkaW9Db2RlY0lEIHx8IChaZWdvQXVkaW9Db2RlY0lEID0ge30pKTtcbi8qKiDop4bpopHnvJbnoIHmoLzlvI8gKi9cbmV4cG9ydCB2YXIgWmVnb1ZpZGVvQ29kZWNJRDtcbihmdW5jdGlvbiAoWmVnb1ZpZGVvQ29kZWNJRCkge1xuICAgIC8qKiDpu5jorqTnvJbnoIEgKEguMjY0KSAqL1xuICAgIFplZ29WaWRlb0NvZGVjSURbWmVnb1ZpZGVvQ29kZWNJRFtcIkRlZmF1bHRcIl0gPSAwXSA9IFwiRGVmYXVsdFwiO1xuICAgIC8qKiDliIblsYLnvJbnoIEgKEguMjY0IFNWQykgKi9cbiAgICBaZWdvVmlkZW9Db2RlY0lEW1plZ29WaWRlb0NvZGVjSURbXCJTVkNcIl0gPSAxXSA9IFwiU1ZDXCI7XG4gICAgLyoqIFZQOCAqL1xuICAgIFplZ29WaWRlb0NvZGVjSURbWmVnb1ZpZGVvQ29kZWNJRFtcIlZQOFwiXSA9IDJdID0gXCJWUDhcIjtcbiAgICAvKiogSC4yNjUgKi9cbiAgICBaZWdvVmlkZW9Db2RlY0lEW1plZ29WaWRlb0NvZGVjSURbXCJIMjY1XCJdID0gM10gPSBcIkgyNjVcIjtcbiAgICAvKiog6KeG6aKR5aSn5bCP5rWB57yW56CBICovXG4gICAgWmVnb1ZpZGVvQ29kZWNJRFtaZWdvVmlkZW9Db2RlY0lEW1wiSDI2NER1YWxTdHJlYW1cIl0gPSA0XSA9IFwiSDI2NER1YWxTdHJlYW1cIjtcbiAgICAvKiog5pyq55+l57yW56CB57G75Z6LICovXG4gICAgWmVnb1ZpZGVvQ29kZWNJRFtaZWdvVmlkZW9Db2RlY0lEW1wiVW5rbm93blwiXSA9IDEwMF0gPSBcIlVua25vd25cIjtcbn0pKFplZ29WaWRlb0NvZGVjSUQgfHwgKFplZ29WaWRlb0NvZGVjSUQgPSB7fSkpO1xuLyoqIOinhumikeeUu+mdouaXi+i9rOaWueWQkeaemuS4viAqL1xuZXhwb3J0IHZhciBaZWdvT3JpZW50YXRpb247XG4oZnVuY3Rpb24gKFplZ29PcmllbnRhdGlvbikge1xuICAgIC8qKiDkuI3ml4vovawgKi9cbiAgICBaZWdvT3JpZW50YXRpb25bWmVnb09yaWVudGF0aW9uW1wiUG9ydHJhaXRVcFwiXSA9IDBdID0gXCJQb3J0cmFpdFVwXCI7XG4gICAgLyoqIOmAhuaXtumSiOaXi+i9rCA5MCDluqYgKi9cbiAgICBaZWdvT3JpZW50YXRpb25bWmVnb09yaWVudGF0aW9uW1wiTGFuZHNjYXBlTGVmdFwiXSA9IDFdID0gXCJMYW5kc2NhcGVMZWZ0XCI7XG4gICAgLyoqIOmAhuaXtumSiOaXi+i9rCAxODAg5bqmICovXG4gICAgWmVnb09yaWVudGF0aW9uW1plZ29PcmllbnRhdGlvbltcIlBvcnRyYWl0RG93blwiXSA9IDJdID0gXCJQb3J0cmFpdERvd25cIjtcbiAgICAvKiog6YCG5pe26ZKI5peL6L2sIDI3MCDluqYgKi9cbiAgICBaZWdvT3JpZW50YXRpb25bWmVnb09yaWVudGF0aW9uW1wiTGFuZHNjYXBlUmlnaHRcIl0gPSAzXSA9IFwiTGFuZHNjYXBlUmlnaHRcIjtcbn0pKFplZ29PcmllbnRhdGlvbiB8fCAoWmVnb09yaWVudGF0aW9uID0ge30pKTtcbi8qKiDop4bpopHmtYHnsbvlnosgKi9cbmV4cG9ydCB2YXIgWmVnb1ZpZGVvU3RyZWFtVHlwZTtcbihmdW5jdGlvbiAoWmVnb1ZpZGVvU3RyZWFtVHlwZSkge1xuICAgIC8qKiDmoLnmja7nvZHnu5znirbmgIHoh6rliqjpgInmi6nmtYHnsbvlnosgKi9cbiAgICBaZWdvVmlkZW9TdHJlYW1UeXBlW1plZ29WaWRlb1N0cmVhbVR5cGVbXCJEZWZhdWx0XCJdID0gMF0gPSBcIkRlZmF1bHRcIjtcbiAgICAvKiog5bCP5YiG6L6o546H57G75Z6LICovXG4gICAgWmVnb1ZpZGVvU3RyZWFtVHlwZVtaZWdvVmlkZW9TdHJlYW1UeXBlW1wiU21hbGxcIl0gPSAxXSA9IFwiU21hbGxcIjtcbiAgICAvKiog5aSn5YiG6L6o546H57G75Z6LICovXG4gICAgWmVnb1ZpZGVvU3RyZWFtVHlwZVtaZWdvVmlkZW9TdHJlYW1UeXBlW1wiQmlnXCJdID0gMl0gPSBcIkJpZ1wiO1xufSkoWmVnb1ZpZGVvU3RyZWFtVHlwZSB8fCAoWmVnb1ZpZGVvU3RyZWFtVHlwZSA9IHt9KSk7XG4vKiog5Zue5aOw5raI6Zmk5qih5byP44CCICovXG5leHBvcnQgdmFyIFplZ29BRUNNb2RlO1xuKGZ1bmN0aW9uIChaZWdvQUVDTW9kZSkge1xuICAgIC8qKiDmv4Dov5vnmoTlm57lo7DmirXmtojvvIzlj6/og73kvJrlvbHlk43pn7PotKjnqI3lvq7mmI7mmL7vvIzkvYbmmK/lm57lo7DkvJrmtojpmaTlvpflvojlubLlh4DjgIIgKi9cbiAgICBaZWdvQUVDTW9kZVtaZWdvQUVDTW9kZVtcIkFnZ3Jlc3NpdmVcIl0gPSAwXSA9IFwiQWdncmVzc2l2ZVwiO1xuICAgIC8qKiDpgILluqbnmoTlm57lo7DmirXmtojvvIzlsLHmmK/lj6/og73kvJrnqI3lvq7lvbHlk43kuIDngrnngrnpn7PotKjvvIzkvYbmmK/mrovnlZnnmoTlm57lo7DkvJrmm7TlsJHjgIIgKi9cbiAgICBaZWdvQUVDTW9kZVtaZWdvQUVDTW9kZVtcIk1lZGl1bVwiXSA9IDFdID0gXCJNZWRpdW1cIjtcbiAgICAvKiog6IiS6YCC55qE5Zue5aOw5oq15raI77yM5bCx5piv5Zue5aOw5oq15raI5Z+65pys5LiN5Lya5b2x5ZON5aOw6Z+z55qE6Z+z6LSo77yM5Y+v6IO95pyJ5pe25Lya5q6L55WZ5LiA54K55Zue5aOw77yM5L2G5LiN5Lya5b2x5ZON5q2j5bi45ZCs6Z+z44CCICovXG4gICAgWmVnb0FFQ01vZGVbWmVnb0FFQ01vZGVbXCJTb2Z0XCJdID0gMl0gPSBcIlNvZnRcIjtcbn0pKFplZ29BRUNNb2RlIHx8IChaZWdvQUVDTW9kZSA9IHt9KSk7XG4vKiog5Zmq5aOw5oqR5Yi25qih5byPICovXG5leHBvcnQgdmFyIFplZ29BTlNNb2RlO1xuKGZ1bmN0aW9uIChaZWdvQU5TTW9kZSkge1xuICAgIC8qKiDovbvluqbnmoTlmarlo7DmipHliLbvvIzln7rmnKzkuI3kvJrmjZ/kvKTpn7PotKjvvIzkvYbkvJrmrovnlZnkuIDkupvlmarlo7DjgIIgKi9cbiAgICBaZWdvQU5TTW9kZVtaZWdvQU5TTW9kZVtcIlNvZnRcIl0gPSAwXSA9IFwiU29mdFwiO1xuICAgIC8qKiDpgILluqbnmoTlmarlo7DmipHliLbvvIzmnInlj6/og73mjZ/kvKTkuIDkupvpn7PotKjvvIzkvYbmnInkuI3plJnnmoTpmY3lmarmlYjmnpzjgIIgKi9cbiAgICBaZWdvQU5TTW9kZVtaZWdvQU5TTW9kZVtcIk1lZGl1bVwiXSA9IDFdID0gXCJNZWRpdW1cIjtcbiAgICAvKiog5r+A6L+b55qE5Zmq5aOw5oqR5Yi277yM5pyJ5Y+v6IO95piO5pi+5o2f5Lyk6Z+z6LSo77yM5L2G5pyJ5b6I5aW955qE6ZmN5Zmq5pWI5p6c44CCICovXG4gICAgWmVnb0FOU01vZGVbWmVnb0FOU01vZGVbXCJBZ2dyZXNzaXZlXCJdID0gMl0gPSBcIkFnZ3Jlc3NpdmVcIjtcbiAgICAvKiogQUkg5qih5byP5Zmq5aOw5oqR5Yi277yM5Lya5a+56Z+z5LmQ5pyJ6L6D5aSn5o2f5Lyk77yM5pWF5LiN6IO955So5LqO5a+56ZyA6KaB6YeH6ZuG6IOM5pmv6Z+z55qE6Z+z5rqQ6L+b6KGM5Zmq5aOw5oqR5Yi244CC5aaC6ZyA5L2/55So77yM6K+36IGU57O75oqA5pyv5pSv5oyB44CCICovXG4gICAgWmVnb0FOU01vZGVbWmVnb0FOU01vZGVbXCJBSVwiXSA9IDNdID0gXCJBSVwiO1xuICAgIC8qKiDlnYfooaEgQUkg5qih5byP5Zmq5aOw5oqR5Yi277yM5Lya5a+56Z+z5LmQ5pyJ6L6D5aSn5o2f5Lyk77yM5pWF5LiN6IO955So5LqO5a+56ZyA6KaB6YeH6ZuG6IOM5pmv6Z+z55qE6Z+z5rqQ6L+b6KGM5Zmq5aOw5oqR5Yi244CC5aaC6ZyA5L2/55So77yM6K+36IGU57O75oqA5pyv5pSv5oyB44CCICovXG4gICAgWmVnb0FOU01vZGVbWmVnb0FOU01vZGVbXCJBSUJhbGFuY2VkXCJdID0gNF0gPSBcIkFJQmFsYW5jZWRcIjtcbn0pKFplZ29BTlNNb2RlIHx8IChaZWdvQU5TTW9kZSA9IHt9KSk7XG4vKiog5b2T5Y+R55Sf5rWB6YeP5o6n5Yi25pe25Y+v5L6b6LCD6IqC55qE5bGe5oCn77yI5L2N5o6p56CB5p6a5Li+77yJICovXG5leHBvcnQgdmFyIFplZ29UcmFmZmljQ29udHJvbFByb3BlcnR5O1xuKGZ1bmN0aW9uIChaZWdvVHJhZmZpY0NvbnRyb2xQcm9wZXJ0eSkge1xuICAgIC8qKiDln7rnoYDlsZ7mgKfvvIjoh6rpgILlupTvvIjpmY3kvY7vvInop4bpopHnoIHnjofvvIkgKi9cbiAgICBaZWdvVHJhZmZpY0NvbnRyb2xQcm9wZXJ0eVtaZWdvVHJhZmZpY0NvbnRyb2xQcm9wZXJ0eVtcIkJhc2ljXCJdID0gMF0gPSBcIkJhc2ljXCI7XG4gICAgLyoqIOiHqumAguW6lO+8iOmZjeS9ju+8ieinhumikeW4p+eOhyAqL1xuICAgIFplZ29UcmFmZmljQ29udHJvbFByb3BlcnR5W1plZ29UcmFmZmljQ29udHJvbFByb3BlcnR5W1wiQWRhcHRpdmVGUFNcIl0gPSAxXSA9IFwiQWRhcHRpdmVGUFNcIjtcbiAgICAvKiog6Ieq6YCC5bqU77yI6ZmN5L2O77yJ6KeG6aKR5YiG6L6o546HICovXG4gICAgWmVnb1RyYWZmaWNDb250cm9sUHJvcGVydHlbWmVnb1RyYWZmaWNDb250cm9sUHJvcGVydHlbXCJBZGFwdGl2ZVJlc29sdXRpb25cIl0gPSAyXSA9IFwiQWRhcHRpdmVSZXNvbHV0aW9uXCI7XG4gICAgLyoqIOiHqumAguW6lO+8iOmZjeS9ju+8iemfs+mikeeggeeOhyAqL1xuICAgIFplZ29UcmFmZmljQ29udHJvbFByb3BlcnR5W1plZ29UcmFmZmljQ29udHJvbFByb3BlcnR5W1wiQWRhcHRpdmVBdWRpb0JpdHJhdGVcIl0gPSA0XSA9IFwiQWRhcHRpdmVBdWRpb0JpdHJhdGVcIjtcbn0pKFplZ29UcmFmZmljQ29udHJvbFByb3BlcnR5IHx8IChaZWdvVHJhZmZpY0NvbnRyb2xQcm9wZXJ0eSA9IHt9KSk7XG4vKiog5rWB5o6n6Kem5Y+R5pyA5L2O56CB546H5pe255qE6KeG6aKR5Y+R6YCB5qih5byPICovXG5leHBvcnQgdmFyIFplZ29UcmFmZmljQ29udHJvbE1pblZpZGVvQml0cmF0ZU1vZGU7XG4oZnVuY3Rpb24gKFplZ29UcmFmZmljQ29udHJvbE1pblZpZGVvQml0cmF0ZU1vZGUpIHtcbiAgICAvKiog5L2O5LqO6K6+572u55qE5pyA5L2O56CB546H5pe277yM5YGc5q2i6KeG6aKR5Y+R6YCBICovXG4gICAgWmVnb1RyYWZmaWNDb250cm9sTWluVmlkZW9CaXRyYXRlTW9kZVtaZWdvVHJhZmZpY0NvbnRyb2xNaW5WaWRlb0JpdHJhdGVNb2RlW1wiTm9WaWRlb1wiXSA9IDBdID0gXCJOb1ZpZGVvXCI7XG4gICAgLyoqIOS9juS6juiuvue9rueahOacgOS9jueggeeOh+aXtu+8jOinhumikeS7peaegeS9jueahOmikeeOh+WPkemAge+8iOS4jei2hei/hyAyIEZQUykgKi9cbiAgICBaZWdvVHJhZmZpY0NvbnRyb2xNaW5WaWRlb0JpdHJhdGVNb2RlW1plZ29UcmFmZmljQ29udHJvbE1pblZpZGVvQml0cmF0ZU1vZGVbXCJVbHRyYUxvd0ZQU1wiXSA9IDFdID0gXCJVbHRyYUxvd0ZQU1wiO1xufSkoWmVnb1RyYWZmaWNDb250cm9sTWluVmlkZW9CaXRyYXRlTW9kZSB8fCAoWmVnb1RyYWZmaWNDb250cm9sTWluVmlkZW9CaXRyYXRlTW9kZSA9IHt9KSk7XG4vKiog5ouJ5rWB54q25oCBICovXG5leHBvcnQgdmFyIFplZ29QbGF5ZXJTdGF0ZTtcbihmdW5jdGlvbiAoWmVnb1BsYXllclN0YXRlKSB7XG4gICAgLyoqIOacquaLiea1geeKtuaAge+8jOWcqOaLiea1geWJjeWkhOS6juivpeeKtuaAgeOAguWmguaenOaLiea1gei/h+eoi+WHuueOsOeos+aAgeeahOW8guW4uO+8jOS+i+WmgiBBcHBJRCDmiJYgVG9rZW4g5LiN5q2j56Gu77yM6YO95Lya6L+b5YWl5pyq5ouJ5rWB54q25oCBICovXG4gICAgWmVnb1BsYXllclN0YXRlW1plZ29QbGF5ZXJTdGF0ZVtcIk5vUGxheVwiXSA9IDBdID0gXCJOb1BsYXlcIjtcbiAgICAvKiog5q2j5Zyo6K+35rGC5ouJ5rWB54q25oCB77yM5ouJ5rWB5pON5L2c5omn6KGM5oiQ5Yqf5ZCO5Lya6L+b5YWl5q2j5Zyo6K+35rGC5ouJ5rWB54q25oCB77yM6YCa5bi46YCa6L+H6K+l54q25oCB6L+b6KGM5bqU55So55WM6Z2i55qE5bGV56S644CC5aaC5p6c5Zug5Li6572R57uc6LSo6YeP5LiN5L2z5Lqn55Sf55qE5Lit5pat77yMU0RLIOS8mui/m+ihjOWGhemDqOmHjeivle+8jOS5n+S8muWbnuWIsOato+WcqOivt+axguaLiea1geeKtuaAgSAqL1xuICAgIFplZ29QbGF5ZXJTdGF0ZVtaZWdvUGxheWVyU3RhdGVbXCJQbGF5UmVxdWVzdGluZ1wiXSA9IDFdID0gXCJQbGF5UmVxdWVzdGluZ1wiO1xuICAgIC8qKiDmraPlnKjmi4nmtYHnirbmgIHvvIzov5vlhaXor6XnirbmgIHooajmmI7mi4nmtYHlt7Lnu4/miJDlip/vvIznlKjmiLflj6/ku6XmraPluLjpgJrkv6EgKi9cbiAgICBaZWdvUGxheWVyU3RhdGVbWmVnb1BsYXllclN0YXRlW1wiUGxheWluZ1wiXSA9IDJdID0gXCJQbGF5aW5nXCI7XG59KShaZWdvUGxheWVyU3RhdGUgfHwgKFplZ29QbGF5ZXJTdGF0ZSA9IHt9KSk7XG4vKiog5ouJ5rWB5aqS5L2T5LqL5Lu2ICovXG5leHBvcnQgdmFyIFplZ29QbGF5ZXJNZWRpYUV2ZW50O1xuKGZ1bmN0aW9uIChaZWdvUGxheWVyTWVkaWFFdmVudCkge1xuICAgIC8qKiDmi4nmtYHnq6/lh7rnjrDpn7PpopHljaHpob/kuovku7YgKi9cbiAgICBaZWdvUGxheWVyTWVkaWFFdmVudFtaZWdvUGxheWVyTWVkaWFFdmVudFtcIkF1ZGlvQnJlYWtPY2N1clwiXSA9IDBdID0gXCJBdWRpb0JyZWFrT2NjdXJcIjtcbiAgICAvKiog5ouJ5rWB56uv6Z+z6aKR5Y2h6aG/5LqL5Lu257uT5p2fICovXG4gICAgWmVnb1BsYXllck1lZGlhRXZlbnRbWmVnb1BsYXllck1lZGlhRXZlbnRbXCJBdWRpb0JyZWFrUmVzdW1lXCJdID0gMV0gPSBcIkF1ZGlvQnJlYWtSZXN1bWVcIjtcbiAgICAvKiog5ouJ5rWB56uv5Ye6546w6KeG6aKR5Y2h6aG/5LqL5Lu2ICovXG4gICAgWmVnb1BsYXllck1lZGlhRXZlbnRbWmVnb1BsYXllck1lZGlhRXZlbnRbXCJWaWRlb0JyZWFrT2NjdXJcIl0gPSAyXSA9IFwiVmlkZW9CcmVha09jY3VyXCI7XG4gICAgLyoqIOaLiea1geerr+inhumikeWNoemhv+S6i+S7tue7k+adnyAqL1xuICAgIFplZ29QbGF5ZXJNZWRpYUV2ZW50W1plZ29QbGF5ZXJNZWRpYUV2ZW50W1wiVmlkZW9CcmVha1Jlc3VtZVwiXSA9IDNdID0gXCJWaWRlb0JyZWFrUmVzdW1lXCI7XG59KShaZWdvUGxheWVyTWVkaWFFdmVudCB8fCAoWmVnb1BsYXllck1lZGlhRXZlbnQgPSB7fSkpO1xuLyoqIOaLiea1gei1hOa6kOetlueVpeaooeW8jyAqL1xuZXhwb3J0IHZhciBaZWdvU3RyZWFtUmVzb3VyY2VNb2RlO1xuKGZ1bmN0aW9uIChaZWdvU3RyZWFtUmVzb3VyY2VNb2RlKSB7XG4gICAgLyoqIOm7mOiupOaooeW8j+OAglNESyDkvJrmoLnmja7mi4nmtYHorr7nva7nmoQgY2RuQ29uZmlnIOWPguaVsOS7peWPiuWNs+aehOeahOWQjuWPsOmFjee9ruiHquWKqOmAieaLqeaLiea1gei1hOa6kCAqL1xuICAgIFplZ29TdHJlYW1SZXNvdXJjZU1vZGVbWmVnb1N0cmVhbVJlc291cmNlTW9kZVtcIkRlZmF1bHRcIl0gPSAwXSA9IFwiRGVmYXVsdFwiO1xuICAgIC8qKiDku4Xku44gQ0ROIOaLiea1gSAqL1xuICAgIFplZ29TdHJlYW1SZXNvdXJjZU1vZGVbWmVnb1N0cmVhbVJlc291cmNlTW9kZVtcIk9ubHlDRE5cIl0gPSAxXSA9IFwiT25seUNETlwiO1xuICAgIC8qKiDku4Xku44gTDMg5ouJ5rWBICovXG4gICAgWmVnb1N0cmVhbVJlc291cmNlTW9kZVtaZWdvU3RyZWFtUmVzb3VyY2VNb2RlW1wiT25seUwzXCJdID0gMl0gPSBcIk9ubHlMM1wiO1xuICAgIC8qKiDku4Xku44gUlRDIOaLiea1gSAqL1xuICAgIFplZ29TdHJlYW1SZXNvdXJjZU1vZGVbWmVnb1N0cmVhbVJlc291cmNlTW9kZVtcIk9ubHlSVENcIl0gPSAzXSA9IFwiT25seVJUQ1wiO1xuICAgIC8qKiBDRE4gUGx1cyDmi4nmtYHjgIJTREsg5Lya5qC55o2u572R57uc54q25Ya16Ieq5Yqo5YiH5o2i5ouJ5rWB6LWE5rqQICovXG4gICAgWmVnb1N0cmVhbVJlc291cmNlTW9kZVtaZWdvU3RyZWFtUmVzb3VyY2VNb2RlW1wiQ0ROUGx1c1wiXSA9IDRdID0gXCJDRE5QbHVzXCI7XG59KShaZWdvU3RyZWFtUmVzb3VyY2VNb2RlIHx8IChaZWdvU3RyZWFtUmVzb3VyY2VNb2RlID0ge30pKTtcbi8qKiDmi4nmtYHotYTmupDliIfmjaLnrZbnlaXmqKHlvI8gKi9cbmV4cG9ydCB2YXIgWmVnb1N0cmVhbVJlc291cmNlU3dpdGNoTW9kZTtcbihmdW5jdGlvbiAoWmVnb1N0cmVhbVJlc291cmNlU3dpdGNoTW9kZSkge1xuICAgIC8qKiDpu5jorqTmqKHlvI/jgIJTREsg5Lya5qC55o2u5ouJ5rWB6K6+572u55qE5Y+C5pWw5Lul5Y+K5Y2z5p6E55qE5ZCO5Y+w6YWN572u6Ieq5Yqo6YCJ5oup5ouJ5rWB6LWE5rqQICovXG4gICAgWmVnb1N0cmVhbVJlc291cmNlU3dpdGNoTW9kZVtaZWdvU3RyZWFtUmVzb3VyY2VTd2l0Y2hNb2RlW1wiRGVmYXVsdFwiXSA9IDBdID0gXCJEZWZhdWx0XCI7XG4gICAgLyoqIOWcqOi/num6puaXtuiHquWKqOWIh+aNouWIsCBSVEMg5rqQICovXG4gICAgWmVnb1N0cmVhbVJlc291cmNlU3dpdGNoTW9kZVtaZWdvU3RyZWFtUmVzb3VyY2VTd2l0Y2hNb2RlW1wiU3dpdGNoVG9SVENcIl0gPSAxXSA9IFwiU3dpdGNoVG9SVENcIjtcbiAgICAvKiog5Zyo6L+e6bqm5pe25L+d5oyB546w5pyJ55qE5ouJ5rWB5rqQ77yM5LiN5YiH5o2i5YiwIFJUQyDmupAgKi9cbiAgICBaZWdvU3RyZWFtUmVzb3VyY2VTd2l0Y2hNb2RlW1plZ29TdHJlYW1SZXNvdXJjZVN3aXRjaE1vZGVbXCJLZWVwT3JpZ2luYWxcIl0gPSAyXSA9IFwiS2VlcE9yaWdpbmFsXCI7XG59KShaZWdvU3RyZWFtUmVzb3VyY2VTd2l0Y2hNb2RlIHx8IChaZWdvU3RyZWFtUmVzb3VyY2VTd2l0Y2hNb2RlID0ge30pKTtcbi8qKiDmi4nmtYHotYTmupDnsbvlnosgKi9cbmV4cG9ydCB2YXIgWmVnb1N0cmVhbVJlc291cmNlVHlwZTtcbihmdW5jdGlvbiAoWmVnb1N0cmVhbVJlc291cmNlVHlwZSkge1xuICAgIC8qKiDpu5jorqTmqKHlvI/jgIJTREsg5Lya5qC55o2u5ouJ5rWB6K6+572u55qE5Y+C5pWw5Lul5Y+K5Y2z5p6E55qE5ZCO5Y+w6YWN572u6Ieq5Yqo6YCJ5oup5ouJ5rWB6LWE5rqQICovXG4gICAgWmVnb1N0cmVhbVJlc291cmNlVHlwZVtaZWdvU3RyZWFtUmVzb3VyY2VUeXBlW1wiRGVmYXVsdFwiXSA9IDBdID0gXCJEZWZhdWx0XCI7XG4gICAgLyoqIENETiDmupAgKi9cbiAgICBaZWdvU3RyZWFtUmVzb3VyY2VUeXBlW1plZ29TdHJlYW1SZXNvdXJjZVR5cGVbXCJDRE5cIl0gPSAxXSA9IFwiQ0ROXCI7XG4gICAgLyoqIEwzIOa6kCAqL1xuICAgIFplZ29TdHJlYW1SZXNvdXJjZVR5cGVbWmVnb1N0cmVhbVJlc291cmNlVHlwZVtcIkwzXCJdID0gMl0gPSBcIkwzXCI7XG59KShaZWdvU3RyZWFtUmVzb3VyY2VUeXBlIHx8IChaZWdvU3RyZWFtUmVzb3VyY2VUeXBlID0ge30pKTtcbi8qKiDmm7TmlrDnsbvlnosgKi9cbmV4cG9ydCB2YXIgWmVnb1VwZGF0ZVR5cGU7XG4oZnVuY3Rpb24gKFplZ29VcGRhdGVUeXBlKSB7XG4gICAgLyoqIOa3u+WKoCAqL1xuICAgIFplZ29VcGRhdGVUeXBlW1plZ29VcGRhdGVUeXBlW1wiQWRkXCJdID0gMF0gPSBcIkFkZFwiO1xuICAgIC8qKiDliKDpmaQgKi9cbiAgICBaZWdvVXBkYXRlVHlwZVtaZWdvVXBkYXRlVHlwZVtcIkRlbGV0ZVwiXSA9IDFdID0gXCJEZWxldGVcIjtcbn0pKFplZ29VcGRhdGVUeXBlIHx8IChaZWdvVXBkYXRlVHlwZSA9IHt9KSk7XG4vKiog6L2s5o6oIENETiDnirbmgIEgKi9cbmV4cG9ydCB2YXIgWmVnb1N0cmVhbVJlbGF5Q0ROU3RhdGU7XG4oZnVuY3Rpb24gKFplZ29TdHJlYW1SZWxheUNETlN0YXRlKSB7XG4gICAgLyoqIOacqui9rOaOqOeKtuaAge+8jOWcqOi9rOaOqOWJjeWkhOS6juivpeeKtuaAgeOAguWmguaenOi9rOaOqOi/h+eoi+WHuueOsOeos+aAgeeahOW8guW4uO+8jOS+i+WmgiDovazmjqjlnLDlnYAg5LiN5q2j56Gu77yM6YO95Lya6L+b5YWl5pyq6L2s5o6o54q25oCBICovXG4gICAgWmVnb1N0cmVhbVJlbGF5Q0ROU3RhdGVbWmVnb1N0cmVhbVJlbGF5Q0ROU3RhdGVbXCJOb1JlbGF5XCJdID0gMF0gPSBcIk5vUmVsYXlcIjtcbiAgICAvKiog5q2j5Zyo6K+35rGC6L2s5o6o54q25oCB77yM6L2s5o6o5pON5L2c5omn6KGM5oiQ5Yqf5ZCO5Lya6L+b5YWl5q2j5Zyo6K+35rGC6L2s5o6o54q25oCB77yM6YCa5bi46YCa6L+H6K+l54q25oCB6L+b6KGM5bqU55So55WM6Z2i55qE5bGV56S644CC5aaC5p6c5Zug5Li6572R57uc6LSo6YeP5LiN5L2z5Lqn55Sf55qE5Lit5pat77yMU0RLIOS8mui/m+ihjOWGhemDqOmHjeivle+8jOS5n+S8muWbnuWIsOato+WcqOi9rOaOqOeKtuaAgSAqL1xuICAgIFplZ29TdHJlYW1SZWxheUNETlN0YXRlW1plZ29TdHJlYW1SZWxheUNETlN0YXRlW1wiUmVsYXlSZXF1ZXN0aW5nXCJdID0gMV0gPSBcIlJlbGF5UmVxdWVzdGluZ1wiO1xuICAgIC8qKiDmraPlnKjovazmjqjnirbmgIHvvIzov5vlhaXor6XnirbmgIHooajmmI7ovazmjqjlt7LmiJDlip8gKi9cbiAgICBaZWdvU3RyZWFtUmVsYXlDRE5TdGF0ZVtaZWdvU3RyZWFtUmVsYXlDRE5TdGF0ZVtcIlJlbGF5aW5nXCJdID0gMl0gPSBcIlJlbGF5aW5nXCI7XG59KShaZWdvU3RyZWFtUmVsYXlDRE5TdGF0ZSB8fCAoWmVnb1N0cmVhbVJlbGF5Q0ROU3RhdGUgPSB7fSkpO1xuLyoqIOi9rOWPkSBDRE4g54q25oCB5pS55Y+Y5Y6f5ZugICovXG5leHBvcnQgdmFyIFplZ29TdHJlYW1SZWxheUNETlVwZGF0ZVJlYXNvbjtcbihmdW5jdGlvbiAoWmVnb1N0cmVhbVJlbGF5Q0ROVXBkYXRlUmVhc29uKSB7XG4gICAgLyoqIOaXoCAqL1xuICAgIFplZ29TdHJlYW1SZWxheUNETlVwZGF0ZVJlYXNvbltaZWdvU3RyZWFtUmVsYXlDRE5VcGRhdGVSZWFzb25bXCJOb25lXCJdID0gMF0gPSBcIk5vbmVcIjtcbiAgICAvKiog5pyN5Yqh5Zmo6ZSZ6K+vICovXG4gICAgWmVnb1N0cmVhbVJlbGF5Q0ROVXBkYXRlUmVhc29uW1plZ29TdHJlYW1SZWxheUNETlVwZGF0ZVJlYXNvbltcIlNlcnZlckVycm9yXCJdID0gMV0gPSBcIlNlcnZlckVycm9yXCI7XG4gICAgLyoqIOaPoeaJi+Wksei0pSAqL1xuICAgIFplZ29TdHJlYW1SZWxheUNETlVwZGF0ZVJlYXNvbltaZWdvU3RyZWFtUmVsYXlDRE5VcGRhdGVSZWFzb25bXCJIYW5kc2hha2VGYWlsZWRcIl0gPSAyXSA9IFwiSGFuZHNoYWtlRmFpbGVkXCI7XG4gICAgLyoqIOaOpeWFpeeCuemUmeivryAqL1xuICAgIFplZ29TdHJlYW1SZWxheUNETlVwZGF0ZVJlYXNvbltaZWdvU3RyZWFtUmVsYXlDRE5VcGRhdGVSZWFzb25bXCJBY2Nlc3NQb2ludEVycm9yXCJdID0gM10gPSBcIkFjY2Vzc1BvaW50RXJyb3JcIjtcbiAgICAvKiog5Yib5bu65rWB5aSx6LSlICovXG4gICAgWmVnb1N0cmVhbVJlbGF5Q0ROVXBkYXRlUmVhc29uW1plZ29TdHJlYW1SZWxheUNETlVwZGF0ZVJlYXNvbltcIkNyZWF0ZVN0cmVhbUZhaWxlZFwiXSA9IDRdID0gXCJDcmVhdGVTdHJlYW1GYWlsZWRcIjtcbiAgICAvKiog5rWBIElEIOS4jeWQiOazlSAqL1xuICAgIFplZ29TdHJlYW1SZWxheUNETlVwZGF0ZVJlYXNvbltaZWdvU3RyZWFtUmVsYXlDRE5VcGRhdGVSZWFzb25bXCJCYWROYW1lXCJdID0gNV0gPSBcIkJhZE5hbWVcIjtcbiAgICAvKiogQ0ROIOacjeWKoeWZqOS4u+WKqOaWreW8gCAqL1xuICAgIFplZ29TdHJlYW1SZWxheUNETlVwZGF0ZVJlYXNvbltaZWdvU3RyZWFtUmVsYXlDRE5VcGRhdGVSZWFzb25bXCJDRE5TZXJ2ZXJEaXNjb25uZWN0ZWRcIl0gPSA2XSA9IFwiQ0ROU2VydmVyRGlzY29ubmVjdGVkXCI7XG4gICAgLyoqIOS4u+WKqOaWreW8gCAqL1xuICAgIFplZ29TdHJlYW1SZWxheUNETlVwZGF0ZVJlYXNvbltaZWdvU3RyZWFtUmVsYXlDRE5VcGRhdGVSZWFzb25bXCJEaXNjb25uZWN0ZWRcIl0gPSA3XSA9IFwiRGlzY29ubmVjdGVkXCI7XG4gICAgLyoqIOa3t+a1geeahOWFqOmDqOi+k+WFpea1geS8muivneWFs+mXrSAqL1xuICAgIFplZ29TdHJlYW1SZWxheUNETlVwZGF0ZVJlYXNvbltaZWdvU3RyZWFtUmVsYXlDRE5VcGRhdGVSZWFzb25bXCJNaXhTdHJlYW1BbGxJbnB1dFN0cmVhbUNsb3NlZFwiXSA9IDhdID0gXCJNaXhTdHJlYW1BbGxJbnB1dFN0cmVhbUNsb3NlZFwiO1xuICAgIC8qKiDmt7fmtYHnmoTlhajpg6jovpPlhaXmtYHmsqHmnInmlbDmja4gKi9cbiAgICBaZWdvU3RyZWFtUmVsYXlDRE5VcGRhdGVSZWFzb25bWmVnb1N0cmVhbVJlbGF5Q0ROVXBkYXRlUmVhc29uW1wiTWl4U3RyZWFtQWxsSW5wdXRTdHJlYW1Ob0RhdGFcIl0gPSA5XSA9IFwiTWl4U3RyZWFtQWxsSW5wdXRTdHJlYW1Ob0RhdGFcIjtcbiAgICAvKiog5re35rWB5pyN5Yqh5Zmo5YaF6YOo6ZSZ6K+vICovXG4gICAgWmVnb1N0cmVhbVJlbGF5Q0ROVXBkYXRlUmVhc29uW1plZ29TdHJlYW1SZWxheUNETlVwZGF0ZVJlYXNvbltcIk1peFN0cmVhbVNlcnZlckludGVybmFsRXJyb3JcIl0gPSAxMF0gPSBcIk1peFN0cmVhbVNlcnZlckludGVybmFsRXJyb3JcIjtcbn0pKFplZ29TdHJlYW1SZWxheUNETlVwZGF0ZVJlYXNvbiB8fCAoWmVnb1N0cmVhbVJlbGF5Q0ROVXBkYXRlUmVhc29uID0ge30pKTtcbi8qKiDorr7lpIfnsbvlnovjgIIgKi9cbmV4cG9ydCB2YXIgWmVnb0RldmljZVR5cGU7XG4oZnVuY3Rpb24gKFplZ29EZXZpY2VUeXBlKSB7XG4gICAgLyoqIOacquefpeeahOiuvuWkh+exu+Wei+OAgiAqL1xuICAgIFplZ29EZXZpY2VUeXBlW1plZ29EZXZpY2VUeXBlW1wiVW5rbm93blwiXSA9IDBdID0gXCJVbmtub3duXCI7XG4gICAgLyoqIOaRhOWDj+WktOiuvuWkh+OAgiAqL1xuICAgIFplZ29EZXZpY2VUeXBlW1plZ29EZXZpY2VUeXBlW1wiQ2FtZXJhXCJdID0gMV0gPSBcIkNhbWVyYVwiO1xuICAgIC8qKiDpuqblhYvpo47orr7lpIfjgIIgKi9cbiAgICBaZWdvRGV2aWNlVHlwZVtaZWdvRGV2aWNlVHlwZVtcIk1pY3JvcGhvbmVcIl0gPSAyXSA9IFwiTWljcm9waG9uZVwiO1xuICAgIC8qKiDmiazlo7Dlmajorr7lpIfjgIIgKi9cbiAgICBaZWdvRGV2aWNlVHlwZVtaZWdvRGV2aWNlVHlwZVtcIlNwZWFrZXJcIl0gPSAzXSA9IFwiU3BlYWtlclwiO1xuICAgIC8qKiDpn7PpopHorr7lpIfjgILvvIjml6Dms5Xnsr7noa7liIbnsbvliLDpuqblhYvpo47miJbogIXmiazlo7DlmajnmoTlhbbku5bpn7PpopHorr7lpIfjgILvvIkgKi9cbiAgICBaZWdvRGV2aWNlVHlwZVtaZWdvRGV2aWNlVHlwZVtcIkF1ZGlvRGV2aWNlXCJdID0gNF0gPSBcIkF1ZGlvRGV2aWNlXCI7XG4gICAgLyoqIOmfs+mikeS8muivneOAgiAqL1xuICAgIFplZ29EZXZpY2VUeXBlW1plZ29EZXZpY2VUeXBlW1wiQXVkaW9TZXNzaW9uXCJdID0gNV0gPSBcIkF1ZGlvU2Vzc2lvblwiO1xufSkoWmVnb0RldmljZVR5cGUgfHwgKFplZ29EZXZpY2VUeXBlID0ge30pKTtcbi8qKiDorr7lpIflvILluLjnsbvlnovjgIIgKi9cbmV4cG9ydCB2YXIgWmVnb0RldmljZUV4Y2VwdGlvblR5cGU7XG4oZnVuY3Rpb24gKFplZ29EZXZpY2VFeGNlcHRpb25UeXBlKSB7XG4gICAgLyoqIOacquefpeeahOiuvuWkh+W8guW4uOOAgiAqL1xuICAgIFplZ29EZXZpY2VFeGNlcHRpb25UeXBlW1plZ29EZXZpY2VFeGNlcHRpb25UeXBlW1wiVW5rbm93blwiXSA9IDBdID0gXCJVbmtub3duXCI7XG4gICAgLyoqIOS4gOiIrOaAp+iuvuWkh+W8guW4uOOAgiAqL1xuICAgIFplZ29EZXZpY2VFeGNlcHRpb25UeXBlW1plZ29EZXZpY2VFeGNlcHRpb25UeXBlW1wiR2VuZXJpY1wiXSA9IDFdID0gXCJHZW5lcmljXCI7XG4gICAgLyoqIOaXoOaViOiuvuWkhyBJRCDlvILluLjjgIIgKi9cbiAgICBaZWdvRGV2aWNlRXhjZXB0aW9uVHlwZVtaZWdvRGV2aWNlRXhjZXB0aW9uVHlwZVtcIkludmFsaWRJZFwiXSA9IDJdID0gXCJJbnZhbGlkSWRcIjtcbiAgICAvKiog5rKh5pyJ6K6+5aSH5p2D6ZmQ44CCICovXG4gICAgWmVnb0RldmljZUV4Y2VwdGlvblR5cGVbWmVnb0RldmljZUV4Y2VwdGlvblR5cGVbXCJQZXJtaXNzaW9uTm90R3JhbnRlZFwiXSA9IDNdID0gXCJQZXJtaXNzaW9uTm90R3JhbnRlZFwiO1xuICAgIC8qKiDorr7lpIfnmoTph4fpm4bluKfnjofkuLogMOOAgiAqL1xuICAgIFplZ29EZXZpY2VFeGNlcHRpb25UeXBlW1plZ29EZXZpY2VFeGNlcHRpb25UeXBlW1wiWmVyb0NhcHR1cmVGcHNcIl0gPSA0XSA9IFwiWmVyb0NhcHR1cmVGcHNcIjtcbiAgICAvKiog6K6+5aSH6KKr5Y2g55So44CCICovXG4gICAgWmVnb0RldmljZUV4Y2VwdGlvblR5cGVbWmVnb0RldmljZUV4Y2VwdGlvblR5cGVbXCJEZXZpY2VPY2N1cGllZFwiXSA9IDVdID0gXCJEZXZpY2VPY2N1cGllZFwiO1xuICAgIC8qKiDorr7lpIfooqvmi5Tlh7rvvIjmnKrov57mjqXvvInjgIIgKi9cbiAgICBaZWdvRGV2aWNlRXhjZXB0aW9uVHlwZVtaZWdvRGV2aWNlRXhjZXB0aW9uVHlwZVtcIkRldmljZVVucGx1Z2dlZFwiXSA9IDZdID0gXCJEZXZpY2VVbnBsdWdnZWRcIjtcbiAgICAvKiog6K6+5aSH6KaB5rGC57O757uf6YeN5ZCv5ZCO5omN6IO95bel5L2c77yI5LuF6ZmQIFdpbmRvd3Mg5bmz5Y+w77yJ44CCICovXG4gICAgWmVnb0RldmljZUV4Y2VwdGlvblR5cGVbWmVnb0RldmljZUV4Y2VwdGlvblR5cGVbXCJSZWJvb3RSZXF1aXJlZFwiXSA9IDddID0gXCJSZWJvb3RSZXF1aXJlZFwiO1xuICAgIC8qKiDns7vnu5/lqpLkvZPmnI3liqHkuI3lj6/nlKjvvIzkvovlpoLlvZMgaU9TIOezu+e7n+ajgOa1i+WIsOW9k+WJjeWOi+WKm+W3qOWkp++8iOWmguaSreaUvuWkp+mHj+WKqOeUu++8ie+8jOWImeacieWPr+iDveS8muWwhuWqkuS9k+ebuOWFs+acjeWKoeWFqOmDqOWBnOeUqO+8iOS7hemZkCBBcHBsZSDlubPlj7DvvInjgIIgKi9cbiAgICBaZWdvRGV2aWNlRXhjZXB0aW9uVHlwZVtaZWdvRGV2aWNlRXhjZXB0aW9uVHlwZVtcIk1lZGlhU2VydmljZXNXZXJlTG9zdFwiXSA9IDhdID0gXCJNZWRpYVNlcnZpY2VzV2VyZUxvc3RcIjtcbiAgICAvKiog6K6+5aSH6KKrIFNpcmkg5Y2g55So77yI5LuF6ZmQIEFwcGxlIOW5s+WPsO+8ieOAgiAqL1xuICAgIFplZ29EZXZpY2VFeGNlcHRpb25UeXBlW1plZ29EZXZpY2VFeGNlcHRpb25UeXBlW1wiU2lyaUlzUmVjb3JkaW5nXCJdID0gOV0gPSBcIlNpcmlJc1JlY29yZGluZ1wiO1xuICAgIC8qKiDorr7lpIfph4fpm4bnmoTlo7Dpn7Pov4fkvY7vvIjku4XpmZAgV2luZG93cyDlubPlj7DvvInjgIIgKi9cbiAgICBaZWdvRGV2aWNlRXhjZXB0aW9uVHlwZVtaZWdvRGV2aWNlRXhjZXB0aW9uVHlwZVtcIlNvdW5kTGV2ZWxUb29Mb3dcIl0gPSAxMF0gPSBcIlNvdW5kTGV2ZWxUb29Mb3dcIjtcbiAgICAvKiog5Y+v6IO95piv55SxIGlQYWQg56OB5ZC45L+d5oqk5aWX5byV6LW355qE6K6+5aSH6KKr5Y2g55So6Zeu6aKY77yI5LuF6ZmQIEFwcGxlIOW5s+WPsO+8ieOAgiAqL1xuICAgIFplZ29EZXZpY2VFeGNlcHRpb25UeXBlW1plZ29EZXZpY2VFeGNlcHRpb25UeXBlW1wiTWFnbmV0aWNDYXNlXCJdID0gMTFdID0gXCJNYWduZXRpY0Nhc2VcIjtcbiAgICAvKiog6Z+z6aKR5Lya6K+d5YGc55So77yI5LuF6ZmQIEFwcGxlIOW5s+WPsO+8ieOAgiAqL1xuICAgIFplZ29EZXZpY2VFeGNlcHRpb25UeXBlW1plZ29EZXZpY2VFeGNlcHRpb25UeXBlW1wiQXVkaW9TZXNzaW9uRGVhY3RpdmVcIl0gPSAxMl0gPSBcIkF1ZGlvU2Vzc2lvbkRlYWN0aXZlXCI7XG4gICAgLyoqIOmfs+mikeS8muivneWIhuexu+abtOaUue+8iOS7hemZkCBBcHBsZSDlubPlj7DvvInjgIIgKi9cbiAgICBaZWdvRGV2aWNlRXhjZXB0aW9uVHlwZVtaZWdvRGV2aWNlRXhjZXB0aW9uVHlwZVtcIkF1ZGlvU2Vzc2lvbkNhdGVnb3J5Q2hhbmdlXCJdID0gMTNdID0gXCJBdWRpb1Nlc3Npb25DYXRlZ29yeUNoYW5nZVwiO1xufSkoWmVnb0RldmljZUV4Y2VwdGlvblR5cGUgfHwgKFplZ29EZXZpY2VFeGNlcHRpb25UeXBlID0ge30pKTtcbi8qKiDov5znq6/orr7lpIfnirbmgIEgKi9cbmV4cG9ydCB2YXIgWmVnb1JlbW90ZURldmljZVN0YXRlO1xuKGZ1bmN0aW9uIChaZWdvUmVtb3RlRGV2aWNlU3RhdGUpIHtcbiAgICAvKiog6K6+5aSH5byA5ZCvICovXG4gICAgWmVnb1JlbW90ZURldmljZVN0YXRlW1plZ29SZW1vdGVEZXZpY2VTdGF0ZVtcIk9wZW5cIl0gPSAwXSA9IFwiT3BlblwiO1xuICAgIC8qKiDorr7lpIflhbPpl63vvJrkuIDoiKzmgKforr7lpIfplJnor68gKi9cbiAgICBaZWdvUmVtb3RlRGV2aWNlU3RhdGVbWmVnb1JlbW90ZURldmljZVN0YXRlW1wiR2VuZXJpY0Vycm9yXCJdID0gMV0gPSBcIkdlbmVyaWNFcnJvclwiO1xuICAgIC8qKiDorr7lpIflhbPpl63vvJrml6DmlYjnmoTorr7lpIcgSUQgKi9cbiAgICBaZWdvUmVtb3RlRGV2aWNlU3RhdGVbWmVnb1JlbW90ZURldmljZVN0YXRlW1wiSW52YWxpZElEXCJdID0gMl0gPSBcIkludmFsaWRJRFwiO1xuICAgIC8qKiDorr7lpIflhbPpl63vvJrml6DmnYPpmZAgKi9cbiAgICBaZWdvUmVtb3RlRGV2aWNlU3RhdGVbWmVnb1JlbW90ZURldmljZVN0YXRlW1wiTm9BdXRob3JpemF0aW9uXCJdID0gM10gPSBcIk5vQXV0aG9yaXphdGlvblwiO1xuICAgIC8qKiDorr7lpIflhbPpl63vvJrph4fpm4bluKfnjofkuLogMCAqL1xuICAgIFplZ29SZW1vdGVEZXZpY2VTdGF0ZVtaZWdvUmVtb3RlRGV2aWNlU3RhdGVbXCJaZXJvRlBTXCJdID0gNF0gPSBcIlplcm9GUFNcIjtcbiAgICAvKiog6K6+5aSH5YWz6Zet77ya6K6+5aSH6KKr5Y2g55SoICovXG4gICAgWmVnb1JlbW90ZURldmljZVN0YXRlW1plZ29SZW1vdGVEZXZpY2VTdGF0ZVtcIkluVXNlQnlPdGhlclwiXSA9IDVdID0gXCJJblVzZUJ5T3RoZXJcIjtcbiAgICAvKiog6K6+5aSH5YWz6Zet77ya6K6+5aSH5pyq5o+S5YWl5oiW6KKr5ouU5Ye6ICovXG4gICAgWmVnb1JlbW90ZURldmljZVN0YXRlW1plZ29SZW1vdGVEZXZpY2VTdGF0ZVtcIlVucGx1Z2dlZFwiXSA9IDZdID0gXCJVbnBsdWdnZWRcIjtcbiAgICAvKiog6K6+5aSH5YWz6Zet77ya55Sx5LqO57O757uf5Y6f5Zug6ZyA6KaB6YeN5ZCv5ZCO5omN6IO96L+b6KGM5LiL5LiA5qyh5L+u5pS577yM5ZCm5YiZ6YeN5paw5omT5byA5Lmf5LiN55Sf5pWIICovXG4gICAgWmVnb1JlbW90ZURldmljZVN0YXRlW1plZ29SZW1vdGVEZXZpY2VTdGF0ZVtcIlJlYm9vdFJlcXVpcmVkXCJdID0gN10gPSBcIlJlYm9vdFJlcXVpcmVkXCI7XG4gICAgLyoqIOiuvuWkh+WFs+mXre+8muezu+e7n+WqkuS9k+acjeWKoeWBnOatou+8jOWmgiBpT1Mg5bmz5Y+w5LiL77yM5b2T57O757uf5qOA5rWL5Yiw5b2T5YmN5Y6L5Yqb5beo5aSn77yI5aaC5pKt5pS+5aSn6YeP5Yqo55S777yJ77yM5YiZ5pyJ5Y+v6IO95Lya5bCG5aqS5L2T55u45YWz5pyN5Yqh5YWo6YOo5YGc55SoICovXG4gICAgWmVnb1JlbW90ZURldmljZVN0YXRlW1plZ29SZW1vdGVEZXZpY2VTdGF0ZVtcIlN5c3RlbU1lZGlhU2VydmljZXNMb3N0XCJdID0gOF0gPSBcIlN5c3RlbU1lZGlhU2VydmljZXNMb3N0XCI7XG4gICAgLyoqIOiuvuWkh+WFs+mXre+8mui/nOerr+eUqOaIt+S4u+WKqOiwg+eUqCBbZW5hYmxlQ2FtZXJhXSDmiJbogIUgW2VuYWJsZUF1ZGlvQ2FwdHVyZURldmljZV0g56aB55So5pGE5YOP5aS05oiW6ICF6bqm5YWL6aOOICovXG4gICAgWmVnb1JlbW90ZURldmljZVN0YXRlW1plZ29SZW1vdGVEZXZpY2VTdGF0ZVtcIkRpc2FibGVcIl0gPSA5XSA9IFwiRGlzYWJsZVwiO1xuICAgIC8qKiDorr7lpIflhbPpl63vvJrov5znq6/nlKjmiLfkuLvliqjosIPnlKggW211dGVNaWNyb3Bob25lXSDmiJbogIUgW211dGVQdWJsaXNoU3RyZWFtQXVkaW9dIOaIluiAhSBbbXV0ZVB1Ymxpc2hTdHJlYW1WaWRlb10g5YGc5q2i5Y+R6YCB6Z+z6aKR5rWB5oiW6ICF6KeG6aKR5rWBICovXG4gICAgWmVnb1JlbW90ZURldmljZVN0YXRlW1plZ29SZW1vdGVEZXZpY2VTdGF0ZVtcIk11dGVcIl0gPSAxMF0gPSBcIk11dGVcIjtcbiAgICAvKiog6K6+5aSH5YWz6Zet77ya6K6+5aSH6KKr5Lit5pat77yM5aaC55S16K+d5LqL5Lu25omT5pat562JICovXG4gICAgWmVnb1JlbW90ZURldmljZVN0YXRlW1plZ29SZW1vdGVEZXZpY2VTdGF0ZVtcIkludGVycnVwdGlvblwiXSA9IDExXSA9IFwiSW50ZXJydXB0aW9uXCI7XG4gICAgLyoqIOiuvuWkh+WFs+mXre+8mueUqOaItyBBcHAg6YCA5Yiw5ZCO5Y+wICovXG4gICAgWmVnb1JlbW90ZURldmljZVN0YXRlW1plZ29SZW1vdGVEZXZpY2VTdGF0ZVtcIkluQmFja2dyb3VuZFwiXSA9IDEyXSA9IFwiSW5CYWNrZ3JvdW5kXCI7XG4gICAgLyoqIOiuvuWkh+WFs+mXre+8muW9k+WJjeWJjeWPsOWQjOaXtuWtmOWcqOWkmuS4qiBBcHDvvIzlpoIgaVBhZCDlupTnlKjliIblsY/kuIvvvIzns7vnu5/kvJrnpoHmraLmiYDmnInlupTnlKjkvb/nlKjmkYTlg4/lpLQgKi9cbiAgICBaZWdvUmVtb3RlRGV2aWNlU3RhdGVbWmVnb1JlbW90ZURldmljZVN0YXRlW1wiTXVsdGlGb3JlZ3JvdW5kQXBwXCJdID0gMTNdID0gXCJNdWx0aUZvcmVncm91bmRBcHBcIjtcbiAgICAvKiog6K6+5aSH5YWz6Zet77ya57O757uf5aSE5LqO6auY6LSf6L295Y6L5Yqb5LiL77yM5Y+v6IO95a+86Ie06K6+5aSH5byC5bi4ICovXG4gICAgWmVnb1JlbW90ZURldmljZVN0YXRlW1plZ29SZW1vdGVEZXZpY2VTdGF0ZVtcIkJ5U3lzdGVtUHJlc3N1cmVcIl0gPSAxNF0gPSBcIkJ5U3lzdGVtUHJlc3N1cmVcIjtcbiAgICAvKiog6K6+5aSH54q25oCB5pyq55+l77ya6L+c56uv55qEIFNESyDniYjmnKzov4fkvY7vvIzkuI3mlK/mjIHlj5HluIPor6Xorr7lpIfnirbmgIHkv6Hmga8gKi9cbiAgICBaZWdvUmVtb3RlRGV2aWNlU3RhdGVbWmVnb1JlbW90ZURldmljZVN0YXRlW1wiTm90U3VwcG9ydFwiXSA9IDE1XSA9IFwiTm90U3VwcG9ydFwiO1xufSkoWmVnb1JlbW90ZURldmljZVN0YXRlIHx8IChaZWdvUmVtb3RlRGV2aWNlU3RhdGUgPSB7fSkpO1xuLyoqIOmfs+mikei3r+eUsSAqL1xuZXhwb3J0IHZhciBaZWdvQXVkaW9Sb3V0ZTtcbihmdW5jdGlvbiAoWmVnb0F1ZGlvUm91dGUpIHtcbiAgICAvKiog5oms5aOw5ZmoICovXG4gICAgWmVnb0F1ZGlvUm91dGVbWmVnb0F1ZGlvUm91dGVbXCJTcGVha2VyXCJdID0gMF0gPSBcIlNwZWFrZXJcIjtcbiAgICAvKiog6ICz5py6ICovXG4gICAgWmVnb0F1ZGlvUm91dGVbWmVnb0F1ZGlvUm91dGVbXCJIZWFkcGhvbmVcIl0gPSAxXSA9IFwiSGVhZHBob25lXCI7XG4gICAgLyoqIOiTneeJmeiuvuWkhyAqL1xuICAgIFplZ29BdWRpb1JvdXRlW1plZ29BdWRpb1JvdXRlW1wiQmx1ZXRvb3RoXCJdID0gMl0gPSBcIkJsdWV0b290aFwiO1xuICAgIC8qKiDlkKznrZIgKi9cbiAgICBaZWdvQXVkaW9Sb3V0ZVtaZWdvQXVkaW9Sb3V0ZVtcIlJlY2VpdmVyXCJdID0gM10gPSBcIlJlY2VpdmVyXCI7XG4gICAgLyoqIFVTQiDpn7PpopHlpJbmjqXorr7lpIcgKi9cbiAgICBaZWdvQXVkaW9Sb3V0ZVtaZWdvQXVkaW9Sb3V0ZVtcIkV4dGVybmFsVVNCXCJdID0gNF0gPSBcIkV4dGVybmFsVVNCXCI7XG4gICAgLyoqIEFwcGxlIOmalOepuuaSreaUviAqL1xuICAgIFplZ29BdWRpb1JvdXRlW1plZ29BdWRpb1JvdXRlW1wiQWlyUGxheVwiXSA9IDVdID0gXCJBaXJQbGF5XCI7XG59KShaZWdvQXVkaW9Sb3V0ZSB8fCAoWmVnb0F1ZGlvUm91dGUgPSB7fSkpO1xuLyoqIOa3t+a1geWGheWuueexu+WeiyAqL1xuZXhwb3J0IHZhciBaZWdvTWl4ZXJJbnB1dENvbnRlbnRUeXBlO1xuKGZ1bmN0aW9uIChaZWdvTWl4ZXJJbnB1dENvbnRlbnRUeXBlKSB7XG4gICAgLyoqIOmfs+mikea3t+a1geWGheWuueexu+WeiyAqL1xuICAgIFplZ29NaXhlcklucHV0Q29udGVudFR5cGVbWmVnb01peGVySW5wdXRDb250ZW50VHlwZVtcIkF1ZGlvXCJdID0gMF0gPSBcIkF1ZGlvXCI7XG4gICAgLyoqIOinhumikea3t+a1geWGheWuueexu+WeiyAqL1xuICAgIFplZ29NaXhlcklucHV0Q29udGVudFR5cGVbWmVnb01peGVySW5wdXRDb250ZW50VHlwZVtcIlZpZGVvXCJdID0gMV0gPSBcIlZpZGVvXCI7XG4gICAgLyoqIOS7heinhumikea3t+a1geWGheWuueexu+Wei+OAguWcqCB3ZWIg5bmz5Y+w77yM5q2k5bGe5oCn5LiN55Sf5pWI44CCICovXG4gICAgWmVnb01peGVySW5wdXRDb250ZW50VHlwZVtaZWdvTWl4ZXJJbnB1dENvbnRlbnRUeXBlW1wiVmlkZW9Pbmx5XCJdID0gMl0gPSBcIlZpZGVvT25seVwiO1xufSkoWmVnb01peGVySW5wdXRDb250ZW50VHlwZSB8fCAoWmVnb01peGVySW5wdXRDb250ZW50VHlwZSA9IHt9KSk7XG4vKiog6Z+z6aKR6YWN572u57G75Z6LICovXG5leHBvcnQgdmFyIFplZ29BdWRpb0NvbmZpZ1ByZXNldDtcbihmdW5jdGlvbiAoWmVnb0F1ZGlvQ29uZmlnUHJlc2V0KSB7XG4gICAgLyoqIOWfuuehgOmfs+i0qCAoMTYga2JwcywgTW9ubywgWmVnb0F1ZGlvQ29kZWNJRERlZmF1bHQpICovXG4gICAgWmVnb0F1ZGlvQ29uZmlnUHJlc2V0W1plZ29BdWRpb0NvbmZpZ1ByZXNldFtcIkJhc2ljUXVhbGl0eVwiXSA9IDBdID0gXCJCYXNpY1F1YWxpdHlcIjtcbiAgICAvKiog5qCH5YeG6Z+z6LSoICg0OCBrYnBzLCBNb25vLCBaZWdvQXVkaW9Db2RlY0lERGVmYXVsdCkgKi9cbiAgICBaZWdvQXVkaW9Db25maWdQcmVzZXRbWmVnb0F1ZGlvQ29uZmlnUHJlc2V0W1wiU3RhbmRhcmRRdWFsaXR5XCJdID0gMV0gPSBcIlN0YW5kYXJkUXVhbGl0eVwiO1xuICAgIC8qKiDmoIflh4bpn7PotKggKDU2IGticHMsIFN0ZXJlbywgWmVnb0F1ZGlvQ29kZWNJRERlZmF1bHQpICovXG4gICAgWmVnb0F1ZGlvQ29uZmlnUHJlc2V0W1plZ29BdWRpb0NvbmZpZ1ByZXNldFtcIlN0YW5kYXJkUXVhbGl0eVN0ZXJlb1wiXSA9IDJdID0gXCJTdGFuZGFyZFF1YWxpdHlTdGVyZW9cIjtcbiAgICAvKiog6auY6Z+z6LSoICgxMjgga2JwcywgTW9ubywgWmVnb0F1ZGlvQ29kZWNJRERlZmF1bHQpICovXG4gICAgWmVnb0F1ZGlvQ29uZmlnUHJlc2V0W1plZ29BdWRpb0NvbmZpZ1ByZXNldFtcIkhpZ2hRdWFsaXR5XCJdID0gM10gPSBcIkhpZ2hRdWFsaXR5XCI7XG4gICAgLyoqIOmrmOmfs+i0qCAoMTkyIGticHMsIFN0ZXJlbywgWmVnb0F1ZGlvQ29kZWNJRERlZmF1bHQpICovXG4gICAgWmVnb0F1ZGlvQ29uZmlnUHJlc2V0W1plZ29BdWRpb0NvbmZpZ1ByZXNldFtcIkhpZ2hRdWFsaXR5U3RlcmVvXCJdID0gNF0gPSBcIkhpZ2hRdWFsaXR5U3RlcmVvXCI7XG59KShaZWdvQXVkaW9Db25maWdQcmVzZXQgfHwgKFplZ29BdWRpb0NvbmZpZ1ByZXNldCA9IHt9KSk7XG4vKiog5pKt5pS+5Zmo54q25oCBICovXG5leHBvcnQgdmFyIFplZ29NZWRpYVBsYXllclN0YXRlO1xuKGZ1bmN0aW9uIChaZWdvTWVkaWFQbGF5ZXJTdGF0ZSkge1xuICAgIC8qKiDkuI3lnKjmkq3mlL4gKi9cbiAgICBaZWdvTWVkaWFQbGF5ZXJTdGF0ZVtaZWdvTWVkaWFQbGF5ZXJTdGF0ZVtcIk5vUGxheVwiXSA9IDBdID0gXCJOb1BsYXlcIjtcbiAgICAvKiog5pKt5pS+5LitICovXG4gICAgWmVnb01lZGlhUGxheWVyU3RhdGVbWmVnb01lZGlhUGxheWVyU3RhdGVbXCJQbGF5aW5nXCJdID0gMV0gPSBcIlBsYXlpbmdcIjtcbiAgICAvKiog5pqC5YGc5pKt5pS+ICovXG4gICAgWmVnb01lZGlhUGxheWVyU3RhdGVbWmVnb01lZGlhUGxheWVyU3RhdGVbXCJQYXVzaW5nXCJdID0gMl0gPSBcIlBhdXNpbmdcIjtcbiAgICAvKiog5pKt5pS+57uT5p2fICovXG4gICAgWmVnb01lZGlhUGxheWVyU3RhdGVbWmVnb01lZGlhUGxheWVyU3RhdGVbXCJQbGF5RW5kZWRcIl0gPSAzXSA9IFwiUGxheUVuZGVkXCI7XG59KShaZWdvTWVkaWFQbGF5ZXJTdGF0ZSB8fCAoWmVnb01lZGlhUGxheWVyU3RhdGUgPSB7fSkpO1xuLyoqIOaSreaUvuWZqOe9kee7nOS6i+S7tiAqL1xuZXhwb3J0IHZhciBaZWdvTWVkaWFQbGF5ZXJOZXR3b3JrRXZlbnQ7XG4oZnVuY3Rpb24gKFplZ29NZWRpYVBsYXllck5ldHdvcmtFdmVudCkge1xuICAgIC8qKiDnvZHnu5zotYTmupDmkq3mlL7kuI3nlYXvvIzlvIDlp4vlsJ3or5XnvJPlrZjmlbDmja4gKi9cbiAgICBaZWdvTWVkaWFQbGF5ZXJOZXR3b3JrRXZlbnRbWmVnb01lZGlhUGxheWVyTmV0d29ya0V2ZW50W1wiQnVmZmVyQmVnaW5cIl0gPSAwXSA9IFwiQnVmZmVyQmVnaW5cIjtcbiAgICAvKiog572R57uc6LWE5rqQ5Y+v5Lul6aG655WF5pKt5pS+ICovXG4gICAgWmVnb01lZGlhUGxheWVyTmV0d29ya0V2ZW50W1plZ29NZWRpYVBsYXllck5ldHdvcmtFdmVudFtcIkJ1ZmZlckVuZGVkXCJdID0gMV0gPSBcIkJ1ZmZlckVuZGVkXCI7XG59KShaZWdvTWVkaWFQbGF5ZXJOZXR3b3JrRXZlbnQgfHwgKFplZ29NZWRpYVBsYXllck5ldHdvcmtFdmVudCA9IHt9KSk7XG4vKiog5pKt5pS+5Zmo5aOw6YGTICovXG5leHBvcnQgdmFyIFplZ29NZWRpYVBsYXllckF1ZGlvQ2hhbm5lbDtcbihmdW5jdGlvbiAoWmVnb01lZGlhUGxheWVyQXVkaW9DaGFubmVsKSB7XG4gICAgLyoqIOW3puWjsOmBkyAqL1xuICAgIFplZ29NZWRpYVBsYXllckF1ZGlvQ2hhbm5lbFtaZWdvTWVkaWFQbGF5ZXJBdWRpb0NoYW5uZWxbXCJMZWZ0XCJdID0gMF0gPSBcIkxlZnRcIjtcbiAgICAvKiog5Y+z5aOw6YGTICovXG4gICAgWmVnb01lZGlhUGxheWVyQXVkaW9DaGFubmVsW1plZ29NZWRpYVBsYXllckF1ZGlvQ2hhbm5lbFtcIlJpZ2h0XCJdID0gMV0gPSBcIlJpZ2h0XCI7XG4gICAgLyoqIOWFqOmDqOWjsOmBkyAqL1xuICAgIFplZ29NZWRpYVBsYXllckF1ZGlvQ2hhbm5lbFtaZWdvTWVkaWFQbGF5ZXJBdWRpb0NoYW5uZWxbXCJBbGxcIl0gPSAyXSA9IFwiQWxsXCI7XG59KShaZWdvTWVkaWFQbGF5ZXJBdWRpb0NoYW5uZWwgfHwgKFplZ29NZWRpYVBsYXllckF1ZGlvQ2hhbm5lbCA9IHt9KSk7XG4vKiog5b2V5Yi257G75Z6LICovXG5leHBvcnQgdmFyIFplZ29EYXRhUmVjb3JkVHlwZTtcbihmdW5jdGlvbiAoWmVnb0RhdGFSZWNvcmRUeXBlKSB7XG4gICAgLyoqIOivpeWtl+auteihqOekuue6r+mfs+mikSBTREsg6buY6K6k5b2V5Yi26Z+z6aKR77yM6Z+z6KeG6aKRIFNESyDpu5jorqTlvZXliLbpn7Pop4bpopHvvIzlvZPlvZXliLYgLmFhYyDmoLzlvI/nmoTmlofku7bml7bpu5jorqTkuZ/mmK/lvZXliLbpn7PpopEgKi9cbiAgICBaZWdvRGF0YVJlY29yZFR5cGVbWmVnb0RhdGFSZWNvcmRUeXBlW1wiRGVmYXVsdFwiXSA9IDBdID0gXCJEZWZhdWx0XCI7XG4gICAgLyoqIOWPquW9leWItumfs+mikSAqL1xuICAgIFplZ29EYXRhUmVjb3JkVHlwZVtaZWdvRGF0YVJlY29yZFR5cGVbXCJPbmx5QXVkaW9cIl0gPSAxXSA9IFwiT25seUF1ZGlvXCI7XG4gICAgLyoqIOWPquW9leWItuinhumike+8jOmfs+mikeeahCBTREsg5ZKM5b2V5Yi2IC5hYWMg5qC85byP5paH5Lu25pe25peg5pWIICovXG4gICAgWmVnb0RhdGFSZWNvcmRUeXBlW1plZ29EYXRhUmVjb3JkVHlwZVtcIk9ubHlWaWRlb1wiXSA9IDJdID0gXCJPbmx5VmlkZW9cIjtcbiAgICAvKiog5ZCM5pe25b2V5Yi26Z+z6aKR44CB6KeG6aKR44CC6Z+z6aKR55qEIFNESyDlkozlvZXliLYgLmFhYyDmoLzlvI/mlofku7bml7blvZXliLblh7rmnaXkuZ/lj6rmnInpn7PpopEgKi9cbiAgICBaZWdvRGF0YVJlY29yZFR5cGVbWmVnb0RhdGFSZWNvcmRUeXBlW1wiQXVkaW9BbmRWaWRlb1wiXSA9IDNdID0gXCJBdWRpb0FuZFZpZGVvXCI7XG59KShaZWdvRGF0YVJlY29yZFR5cGUgfHwgKFplZ29EYXRhUmVjb3JkVHlwZSA9IHt9KSk7XG4vKiog5b2V5Yi254q25oCBICovXG5leHBvcnQgdmFyIFplZ29EYXRhUmVjb3JkU3RhdGU7XG4oZnVuY3Rpb24gKFplZ29EYXRhUmVjb3JkU3RhdGUpIHtcbiAgICAvKiog5pyq5b2V5Yi254q25oCB77yM5b2T5b2V5Yi25Ye66ZSZ5oiW6ICF5pyq5byA5aeL5b2V5Yi25LmL5YmN5aSE5LqO5q2k54q25oCBICovXG4gICAgWmVnb0RhdGFSZWNvcmRTdGF0ZVtaZWdvRGF0YVJlY29yZFN0YXRlW1wiTm9SZWNvcmRcIl0gPSAwXSA9IFwiTm9SZWNvcmRcIjtcbiAgICAvKiog5q2j5Zyo5b2V5Yi25Lit77yM5b2T5oiQ5Yqf6LCD55SoIFtzdGFydFJlY29yZGluZ0NhcHR1cmVkRGF0YV0g5Ye95pWw5LmL5ZCO5aSE5LqO5q2k54q25oCBICovXG4gICAgWmVnb0RhdGFSZWNvcmRTdGF0ZVtaZWdvRGF0YVJlY29yZFN0YXRlW1wiUmVjb3JkaW5nXCJdID0gMV0gPSBcIlJlY29yZGluZ1wiO1xuICAgIC8qKiDlvZXliLbmiJDlip8gKi9cbiAgICBaZWdvRGF0YVJlY29yZFN0YXRlW1plZ29EYXRhUmVjb3JkU3RhdGVbXCJTdWNjZXNzXCJdID0gMl0gPSBcIlN1Y2Nlc3NcIjtcbn0pKFplZ29EYXRhUmVjb3JkU3RhdGUgfHwgKFplZ29EYXRhUmVjb3JkU3RhdGUgPSB7fSkpO1xuLyoqIOWkmuWqkuS9k+i1hOa6kOWKoOi9veaWueW8j+OAgiAqL1xuZXhwb3J0IHZhciBaZWdvTXVsdGltZWRpYUxvYWRUeXBlO1xuKGZ1bmN0aW9uIChaZWdvTXVsdGltZWRpYUxvYWRUeXBlKSB7XG4gICAgLyoqIOmAmui/h+aWh+S7tui3r+W+hOWKoOi9veOAgiAqL1xuICAgIFplZ29NdWx0aW1lZGlhTG9hZFR5cGVbWmVnb011bHRpbWVkaWFMb2FkVHlwZVtcIkZpbGVQYXRoXCJdID0gMF0gPSBcIkZpbGVQYXRoXCI7XG4gICAgLyoqIOmAmui/h+S6jOi/m+WItuWGheWtmOaVsOaNruWKoOi9veOAgiAqL1xuICAgIFplZ29NdWx0aW1lZGlhTG9hZFR5cGVbWmVnb011bHRpbWVkaWFMb2FkVHlwZVtcIk1lbW9yeVwiXSA9IDFdID0gXCJNZW1vcnlcIjtcbiAgICAvKiog6YCa6L+H54mI5p2D6Z+z5LmQ6LWE5rqQIElEIOWKoOi9veOAgiAqL1xuICAgIFplZ29NdWx0aW1lZGlhTG9hZFR5cGVbWmVnb011bHRpbWVkaWFMb2FkVHlwZVtcIlJlc291cmNlSURcIl0gPSAyXSA9IFwiUmVzb3VyY2VJRFwiO1xufSkoWmVnb011bHRpbWVkaWFMb2FkVHlwZSB8fCAoWmVnb011bHRpbWVkaWFMb2FkVHlwZSA9IHt9KSk7XG4vKiog6YCP5piO6YCa6YGT5pWw5o2u5biD5bGA5pa55byP44CCICovXG5leHBvcnQgdmFyIFplZ29BbHBoYUxheW91dFR5cGU7XG4oZnVuY3Rpb24gKFplZ29BbHBoYUxheW91dFR5cGUpIHtcbiAgICAvKiog5rKh5pyJIGFscGhhIOaVsOaNruOAgiAqL1xuICAgIFplZ29BbHBoYUxheW91dFR5cGVbWmVnb0FscGhhTGF5b3V0VHlwZVtcIk5vbmVcIl0gPSAwXSA9IFwiTm9uZVwiO1xuICAgIC8qKiDpgI/mmI7pgJrpgZPmlbDmja7kvY3kuo4gUkdCL1lVViDmlbDmja7lt6bkvqfjgIIgKi9cbiAgICBaZWdvQWxwaGFMYXlvdXRUeXBlW1plZ29BbHBoYUxheW91dFR5cGVbXCJMZWZ0XCJdID0gMV0gPSBcIkxlZnRcIjtcbiAgICAvKiog6YCP5piO6YCa6YGT5pWw5o2u5L2N5LqOIFJHQi9ZVVYg5pWw5o2u5Y+z5L6n44CCICovXG4gICAgWmVnb0FscGhhTGF5b3V0VHlwZVtaZWdvQWxwaGFMYXlvdXRUeXBlW1wiUmlnaHRcIl0gPSAyXSA9IFwiUmlnaHRcIjtcbiAgICAvKiog6YCP5piO6YCa6YGT5pWw5o2u5L2N5LqOIFJHQi9ZVVYg5pWw5o2u5bqV6YOo44CCICovXG4gICAgWmVnb0FscGhhTGF5b3V0VHlwZVtaZWdvQWxwaGFMYXlvdXRUeXBlW1wiQm90dG9tXCJdID0gM10gPSBcIkJvdHRvbVwiO1xufSkoWmVnb0FscGhhTGF5b3V0VHlwZSB8fCAoWmVnb0FscGhhTGF5b3V0VHlwZSA9IHt9KSk7XG4vKipcbiAqIOaXpeW/l+mFjee9rlxuICpcbiAqIOivpuaDheaPj+i/sO+8muiwg+eUqCBbc2V0TG9nQ29uZmlnXSDoh6rlrprkuYnml6Xlv5fphY3nva7ml7bvvIzpnIDopoHpgJrov4for6Xlj4LmlbDphY3nva7jgIJcbiAqIOS4muWKoeWcuuaZr++8muW9k+mcgOimgeiHquWumuS5ieaXpeW/l+WtmOWCqOi3r+W+hOaIluaXpeW/l+aWh+S7tuWkp+Wwj+S4iumZkOaXtu+8jOmcgOimgei/meS4qumFjee9ruOAglxuICog5rOo5oSP5LqL6aG577ya5peg44CCXG4gKi9cbmV4cG9ydCBjbGFzcyBaZWdvTG9nQ29uZmlnIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5sb2dQYXRoID0gJyc7XG4gICAgICAgIHRoaXMubG9nU2l6ZSA9IDUgKiAxMDI0ICogMTAyNDtcbiAgICAgICAgdGhpcy5sb2dDb3VudCA9IDM7XG4gICAgfVxufVxuLyoqXG4gKiDliJvlu7rlvJXmk47nmoTphY3nva5cbiAqXG4gKiDliJvlu7rlvJXmk47nmoTphY3nva5cbiAqL1xuZXhwb3J0IGNsYXNzIFplZ29FbmdpbmVQcm9maWxlIHtcbiAgICBjb25zdHJ1Y3RvcihhcHBJRCwgYXBwU2lnbiwgc2NlbmFyaW8pIHtcbiAgICAgICAgdGhpcy5hcHBJRCA9IGFwcElEO1xuICAgICAgICB0aGlzLmFwcFNpZ24gPSBhcHBTaWduO1xuICAgICAgICB0aGlzLnNjZW5hcmlvID0gc2NlbmFyaW87XG4gICAgfVxufVxuLyoqXG4gKiDlvJXmk47ov5vpmLbphY3nva5cbiAqL1xuZXhwb3J0IGNsYXNzIFplZ29FbmdpbmVDb25maWcge1xufVxuLyoqXG4gKiDmiL/pl7Tov5vpmLbphY3nva5cbiAqXG4gKiDphY3nva7miL/pl7TnmoTmnIDlpKfnlKjmiLfmlbDph4/jgIHpibTmnYMgdG9rZW4g562JXG4gKi9cbmV4cG9ydCBjbGFzcyBaZWdvUm9vbUNvbmZpZyB7XG4gICAgY29uc3RydWN0b3IobWF4TWVtYmVyQ291bnQsIGlzVXNlclN0YXR1c05vdGlmeSwgdG9rZW4pIHtcbiAgICAgICAgdGhpcy5tYXhNZW1iZXJDb3VudCA9IG1heE1lbWJlckNvdW50O1xuICAgICAgICB0aGlzLmlzVXNlclN0YXR1c05vdGlmeSA9IGlzVXNlclN0YXR1c05vdGlmeTtcbiAgICAgICAgdGhpcy50b2tlbiA9IHRva2VuO1xuICAgIH1cbn1cbi8qKlxuICog6KeG6aKR6YWN572uXG4gKlxuICog6YWN572u56CB546H44CB5bin546H44CB5YiG6L6o546H562J5o6o5rWB55So5Yiw55qE5Y+C5pWw44CCXG4gKiDlvIDlj5HogIXlupTor6Xms6jmhI/nmoTmmK/vvIznp7vliqjnq6/kuI7moYzpnaLnq6/nmoTlrr3pq5jliIbovqjnjofmmK/nm7jlj43nmoTvvIzkvovlpoLvvIwzNjBw77yM56e75Yqo56uv55qE5YiG6L6o546H5Li6IDM2MHg2NDDvvIzogIzmoYzpnaLnq6/kuLogNjQweDM2MOOAglxuICog5L2/55So5aSW6YOo6YeH6ZuG5pe277yMUlRD55qE6YeH6ZuG5ZKM57yW56CB5YiG6L6o546H5LiN6IO96K6+572u5Li6MCow77yM5LiN54S25Lya5a+86Ie05pW05Liq5byV5pOO55Sf5ZG95ZGo5pyf6YeM55qE5o6o5rWB77yM6YO95rKh5pyJ6KeG6aKR5pWw5o2u44CCXG4gKi9cbmV4cG9ydCBjbGFzcyBaZWdvVmlkZW9Db25maWcge1xuICAgIGNvbnN0cnVjdG9yKGNhcHR1cmVXaWR0aCwgY2FwdHVyZUhlaWdodCwgZW5jb2RlV2lkdGgsIGVuY29kZUhlaWdodCwgZnBzLCBiaXRyYXRlLCBjb2RlY0lEKSB7XG4gICAgICAgIHRoaXMuY2FwdHVyZVdpZHRoID0gY2FwdHVyZVdpZHRoO1xuICAgICAgICB0aGlzLmNhcHR1cmVIZWlnaHQgPSBjYXB0dXJlSGVpZ2h0O1xuICAgICAgICB0aGlzLmVuY29kZVdpZHRoID0gZW5jb2RlV2lkdGg7XG4gICAgICAgIHRoaXMuZW5jb2RlSGVpZ2h0ID0gZW5jb2RlSGVpZ2h0O1xuICAgICAgICB0aGlzLmZwcyA9IGZwcztcbiAgICAgICAgdGhpcy5iaXRyYXRlID0gYml0cmF0ZTtcbiAgICAgICAgdGhpcy5jb2RlY0lEID0gY29kZWNJRDtcbiAgICB9XG59XG4vKipcbiAqIOWPmOWjsOWZqOWPguaVsFxuICpcbiAqIOW8gOWPkeiAheWPr+S7peS9v+eUqCBTREsg55qE5YaF572u6aKE572u5p2l5pS55Y+Y5Y+Y5aOw5Zmo55qE5Y+C5pWw44CCXG4gKi9cbmV4cG9ydCBjbGFzcyBaZWdvVm9pY2VDaGFuZ2VyUGFyYW0ge1xuICAgIGNvbnN0cnVjdG9yKHBpdGNoKSB7XG4gICAgICAgIHRoaXMucGl0Y2ggPSBwaXRjaDtcbiAgICB9XG59XG4vKipcbiAqIOeUqOaIt+WvueixoVxuICpcbiAqIOmFjee9rueUqOaItyBJRCDlkoznlKjmiLflkI3vvIznlKjkuo7moIfor4bmiL/pl7TlhoXnmoTnlKjmiLfjgIJcbiAqIOazqOaEjyB1c2VySUQg5Zyo5ZCM5LiA5LiqIGFwcElEIOS4i+mcgOWUr+S4gO+8jOWQpuWImeeZu+W9leaIv+mXtOaXtuS8muWHuueOsOS6kui4oueahOaDheWGteOAglxuICog5by654OI5bu66K6uIHVzZXJJRCDkuI7kuJrliqEgQVBQIOeahOeUqOaItyBJRCDkuIDkuIDlr7nlupTvvIzljbPkuIDkuKogdXNlcklEIOS4juS4gOS4quecn+WunueUqOaIt+aYr+WbuuWumuS4lOWUr+S4gOeahO+8jOiAjOS4jeW6lOivpeaYr+S7pemaj+acuueahCB1c2VySUQg55qE5pa55byP5Lyg57uZIFNESyDnmoTmlrnlvI/jgILlm6DkuLrllK/kuIDkuJTlm7rlrprnmoQgdXNlcklEIOWPr+S7peiuqSBaRUdPIOaKgOacr+S6uuWRmOW/q+mAn+WumuS9jee6v+S4iumXrumimOOAglxuICovXG5leHBvcnQgY2xhc3MgWmVnb1VzZXIge1xuICAgIGNvbnN0cnVjdG9yKHVzZXJJRCwgdXNlck5hbWUpIHtcbiAgICAgICAgdGhpcy51c2VySUQgPSB1c2VySUQ7XG4gICAgICAgIHRoaXMudXNlck5hbWUgPSB1c2VyTmFtZTtcbiAgICB9XG59XG4vKipcbiAqIOinhuWbvuebuOWFs+aJgOS9v+eUqOeahOWdkOagh1xuICovXG5leHBvcnQgY2xhc3MgWmVnb1JlY3Qge1xuICAgIGNvbnN0cnVjdG9yKHgsIHksIHdpZHRoLCBoZWlnaHQpIHtcbiAgICAgICAgdGhpcy54ID0geDtcbiAgICAgICAgdGhpcy55ID0geTtcbiAgICAgICAgdGhpcy53aWR0aCA9IHdpZHRoO1xuICAgICAgICB0aGlzLmhlaWdodCA9IGhlaWdodDtcbiAgICB9XG59XG4vKipcbiAqIOaOqOa1gei/m+mYtumFjee9rlxuICpcbiAqIOmFjee9ruaIv+mXtCBJRFxuICovXG5leHBvcnQgY2xhc3MgWmVnb1B1Ymxpc2hlckNvbmZpZyB7XG59XG4vKipcbiAqIENETiDphY3nva7lr7nosaFcbiAqXG4gKiDljIXmi6wgQ0ROIOeahCBVUkwg5Lul5Y+K6Ym05p2D5Y+C5pWw5a2X56ym5LiyXG4gKi9cbmV4cG9ydCBjbGFzcyBaZWdvQ0ROQ29uZmlnIHtcbiAgICBjb25zdHJ1Y3Rvcih1cmwsIGF1dGhQYXJhbSkge1xuICAgICAgICB0aGlzLnVybCA9IHVybDtcbiAgICAgICAgdGhpcy5hdXRoUGFyYW0gPSBhdXRoUGFyYW07XG4gICAgfVxufVxuLyoqXG4gKiDmi4nmtYHov5vpmLbphY3nva7jgIJcbiAqXG4gKiDphY3nva7otYTmupDnrZbnlaXmqKHlvI/jgIFDRE4g6YWN572u5Lul5Y+K5YW25LuW6auY57qn6YWN572u44CCXG4gKi9cbmV4cG9ydCBjbGFzcyBaZWdvUGxheWVyQ29uZmlnIHtcbiAgICBjb25zdHJ1Y3RvcihjZG5Db25maWcpIHtcbiAgICAgICAgdGhpcy5jZG5Db25maWcgPSBjZG5Db25maWc7XG4gICAgfVxufVxuLyoqXG4gKiDnvo7popzphY3nva7lj4LmlbBcbiAqXG4gKiDphY3nva7nvo7popznmoTnvo7nmb3jgIHnuqLmtqbjgIHno6jnmq7jgIHplJDljJblj4LmlbDjgIJcbiAqL1xuZXhwb3J0IGNsYXNzIFplZ29FZmZlY3RzQmVhdXR5UGFyYW0ge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLndoaXRlbkludGVuc2l0eSA9IDUwO1xuICAgICAgICB0aGlzLnJvc3lJbnRlbnNpdHkgPSA1MDtcbiAgICAgICAgdGhpcy5zbW9vdGhJbnRlbnNpdHkgPSA1MDtcbiAgICAgICAgdGhpcy5zaGFycGVuSW50ZW5zaXR5ID0gNTA7XG4gICAgfVxufVxuLyoqXG4gKiDmt7fmtYHpn7PpopHphY3nva5cbiAqXG4gKiDphY3nva7mt7fmtYHku7vliqHnmoTpn7PpopHnoIHnjofjgIHlo7DpgZPmlbDjgIHpn7PpopHnvJbnoIFcbiAqL1xuZXhwb3J0IGNsYXNzIFplZ29NaXhlckF1ZGlvQ29uZmlnIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5iaXRyYXRlID0gNDg7XG4gICAgICAgIHRoaXMuY2hhbm5lbCA9IFplZ29BdWRpb0NoYW5uZWwuTW9ubztcbiAgICAgICAgdGhpcy5jb2RlY0lEID0gWmVnb0F1ZGlvQ29kZWNJRC5EZWZhdWx0O1xuICAgICAgICB0aGlzLm1peE1vZGUgPSBaZWdvQXVkaW9NaXhNb2RlLlJhdztcbiAgICB9XG59XG4vKipcbiAqIOa3t+a1geinhumikemFjee9rlxuICpcbiAqIOmFjee9rua3t+a1geS7u+WKoeeahOinhumikeWPguaVsO+8jOW4p+eOh+OAgeeggeeOh+OAgeWIhui+qOeOh1xuICovXG5leHBvcnQgY2xhc3MgWmVnb01peGVyVmlkZW9Db25maWcge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLndpZHRoID0gMzYwO1xuICAgICAgICB0aGlzLmhlaWdodCA9IDY0MDtcbiAgICAgICAgdGhpcy5mcHMgPSAxNTtcbiAgICAgICAgdGhpcy5iaXRyYXRlID0gNjAwO1xuICAgIH1cbn1cbi8qKlxuICog5re35rWB6L6T5YWlXG4gKlxuICog6YWN572u5re35rWB6L6T5YWl55qE5rWBIElE44CB6L6T5YWl57G75Z6L44CB5rWB55qE5biD5bGAXG4gKi9cbmV4cG9ydCBjbGFzcyBaZWdvTWl4ZXJJbnB1dCB7XG4gICAgY29uc3RydWN0b3Ioc3RyZWFtSUQsIGNvbnRlbnRUeXBlLCBsYXlvdXQsIHNvdW5kTGV2ZWxJRCkge1xuICAgICAgICB0aGlzLnN0cmVhbUlEID0gc3RyZWFtSUQ7XG4gICAgICAgIHRoaXMuY29udGVudFR5cGUgPSBjb250ZW50VHlwZTtcbiAgICAgICAgdGhpcy5sYXlvdXQgPSBsYXlvdXQ7XG4gICAgICAgIHRoaXMuc291bmRMZXZlbElEID0gc291bmRMZXZlbElEO1xuICAgIH1cbn1cbi8qKlxuICog5re35rWB6L6T5Ye65a+56LGh77yM55uu5YmN5LiA5Liq5re35rWB5Lu75Yqh5pyA5aSa5Y+q5pSv5oyBIDQg6Lev5LiN5ZCM5YiG6L6o546H55qE6KeG6aKR5rWB44CCXG4gKlxuICog6YWN572u5re35rWB6L6T5Ye655qE55uu5qCHIFVSTCDmiJbmtYEgSURcbiAqL1xuZXhwb3J0IGNsYXNzIFplZ29NaXhlck91dHB1dCB7XG4gICAgY29uc3RydWN0b3IodGFyZ2V0KSB7XG4gICAgICAgIHRoaXMudGFyZ2V0ID0gdGFyZ2V0O1xuICAgIH1cbn1cbi8qKlxuICog5rC05Y2w5a+56LGhXG4gKlxuICog6YWN572u5LiA5Liq5rC05Y2w55qE5Zu+54mHIFVSTCDku6Xlj4ror6XmsLTljbDlnKjnlLvpnaLkuK3nmoTlpKflsI/mlrnkvY3jgIJcbiAqL1xuZXhwb3J0IGNsYXNzIFplZ29XYXRlcm1hcmsge1xuICAgIGNvbnN0cnVjdG9yKGltYWdlVVJMLCBsYXlvdXQpIHtcbiAgICAgICAgdGhpcy5pbWFnZVVSTCA9IGltYWdlVVJMO1xuICAgICAgICB0aGlzLmxheW91dCA9IGxheW91dDtcbiAgICB9XG59XG4vKipcbiAqIOa3t+a1geS7u+WKoeWvueixoVxuICpcbiAqIOacrOexu+S4uua3t+a1geS7u+WKoeeahOmFjee9ruexu++8jOW9k+WQkSBaRUdPIFJUQyDmnI3liqHlmajlj5Hotbfmt7fmtYHku7vliqHnmoTor7fmsYLml7bvvIzpnIDopoHov5nkuKrmt7fmtYHku7vliqHnmoTphY3nva7jgIJcbiAqIOacrOexu+WNs+aPj+i/sOi/measoea3t+a1geS7u+WKoeeahOivpue7humFjee9ruS/oeaBr+OAglxuICovXG5leHBvcnQgY2xhc3MgWmVnb01peGVyVGFzayB7XG4gICAgY29uc3RydWN0b3IodGFza0lEKSB7XG4gICAgICAgIHRoaXMudGFza0lEID0gdGFza0lEO1xuICAgICAgICB0aGlzLmlucHV0TGlzdCA9IFtdO1xuICAgICAgICB0aGlzLm91dHB1dExpc3QgPSBbXTtcbiAgICAgICAgdGhpcy5hdWRpb0NvbmZpZyA9IG5ldyBaZWdvTWl4ZXJBdWRpb0NvbmZpZygpO1xuICAgICAgICB0aGlzLnZpZGVvQ29uZmlnID0gbmV3IFplZ29NaXhlclZpZGVvQ29uZmlnKCk7XG4gICAgICAgIHRoaXMuZW5hYmxlU291bmRMZXZlbCA9IGZhbHNlO1xuICAgICAgICB0aGlzLmJhY2tncm91bmRJbWFnZVVSTCA9IFwiXCI7XG4gICAgICAgIHRoaXMud2F0ZXJtYXJrID0gbmV3IFplZ29XYXRlcm1hcmsoXCJcIiwgbmV3IFplZ29SZWN0KDAsIDAsIDAsIDApKTtcbiAgICAgICAgdGhpcy5hZHZhbmNlZENvbmZpZyA9IG5ldyBNYXAoKTtcbiAgICB9XG59XG4vKipcbiAqIOWQr+WKqOWjsOa1quebkeaOp+eahOmFjee9rlxuICpcbiAqIOaUr+aMgeeJiOacrO+8mjIuMTAuMCDlj4rku6XkuIrjgIJcbiAqIOivpuaDheaPj+i/sO+8mueUqOS6jiBzdGFydFNvdW5kTGV2ZWxNb25pdG9yIOWHveaVsO+8jOWFtuS4reeahCBlbmFibGVWQUQg5Y+C5pWw55So5LqO6K6+572u5aOw5rWq5Zue6LCD5piv5ZCm5qOA5rWLIFZBRO+8jOW8gOWQr+WQjue7k+aenOWwhuS7jiBbb25DYXB0dXJlZFNvdW5kTGV2ZWxJbmZvVXBkYXRlXSDlkowgW29uUmVtb3RlU291bmRMZXZlbEluZm9VcGRhdGVdIOWbnuiwg+S4reS9k+eOsOOAglxuICog5Lia5Yqh5Zy65pmv77ya5byA5Y+R6ICF6ZyA6KaB5Yik5pat55So5oi36K+06K+d6Z+z6YeP5piv5ZCm5aSq5bCP5pe277yM5Y+v5byA5ZCvIFZBRCDlo7Dpn7Pmo4DmtYvjgIJcbiAqIOazqOaEj+S6i+mhue+8mlZBRCDnrpfms5XmnInmgKfog73lvIDplIDvvIzlu7rorq7mjInpnIDorr7nva7jgIJcbiAqL1xuZXhwb3J0IGNsYXNzIFplZ29Tb3VuZExldmVsQ29uZmlnIHtcbiAgICBjb25zdHJ1Y3RvcihtaWxsaXNlY29uZCwgZW5hYmxlVkFEKSB7XG4gICAgICAgIHRoaXMubWlsbGlzZWNvbmQgPSBtaWxsaXNlY29uZDtcbiAgICAgICAgdGhpcy5lbmFibGVWQUQgPSBlbmFibGVWQUQ7XG4gICAgfVxufVxuLyoqXG4gKiDoh6rliqjmt7fmtYHku7vliqHlr7nosaFcbiAqXG4gKiDor6bmg4Xmj4/ov7DvvJrosIPnlKggW1N0YXJ0QXV0b01peGVyVGFza10g5Ye95pWw5ZCRIFpFR08gUlRDIOacjeWKoeWZqOWPkei1t+iHquWKqOa3t+a1geS7u+WKoeaXtu+8jOmcgOimgemAmui/h+ivpeWPguaVsOmFjee9ruiHquWKqOa3t+a1geS7u+WKoe+8jOWMheaLrOS7u+WKoSBJROOAgeaIv+mXtCBJROOAgemfs+mikemFjee9ruOAgei+k+WHuua1geWIl+ihqOOAgeaYr+WQpuW8gOWQr+WjsOa1quWbnuiwg+mAmuefpeOAglxuICog5Lia5Yqh5Zy65pmv77ya5b2T5ZCRIFpFR08gUlRDIOacjeWKoeWZqOWPkei1t+iHquWKqOa3t+a1geS7u+WKoeaXtu+8jOmcgOimgei/meS4qumFjee9ruOAglxuICog5rOo5oSP5LqL6aG577ya5L2c5Li66LCD55SoIFtTdGFydEF1dG9NaXhlclRhc2tdIOWHveaVsOaXtuS8oOWFpeeahOWPguaVsOOAglxuICovXG5leHBvcnQgY2xhc3MgWmVnb0F1dG9NaXhlclRhc2sge1xuICAgIC8qKlxuICAgICAqIOaehOmAoOS4gOS4quiHquWKqOa3t+a1geS7u+WKoeWvueixoVxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLnRhc2tJRCA9IFwiXCI7XG4gICAgICAgIHRoaXMucm9vbUlEID0gXCJcIjtcbiAgICAgICAgdGhpcy5vdXRwdXRMaXN0ID0gW107XG4gICAgICAgIHRoaXMuYXVkaW9Db25maWcgPSBuZXcgWmVnb01peGVyQXVkaW9Db25maWcoKTtcbiAgICAgICAgdGhpcy5lbmFibGVTb3VuZExldmVsID0gZmFsc2U7XG4gICAgfVxufVxuLyoqXG4gKiDmjqjmtYHpn7PpopHphY3nva5cbiAqXG4gKiDphY3nva7mjqjmtYHnmoTpn7PpopHnoIHnjofjgIHlo7DpgZPmlbDjgIHpn7PpopHnvJbnoIFcbiAqL1xuZXhwb3J0IGNsYXNzIFplZ29BdWRpb0NvbmZpZyB7XG4gICAgY29uc3RydWN0b3IoYml0cmF0ZSwgY2hhbm5lbCwgY29kZWNJRCkge1xuICAgICAgICB0aGlzLmJpdHJhdGUgPSBiaXRyYXRlO1xuICAgICAgICB0aGlzLmNoYW5uZWwgPSBjaGFubmVsO1xuICAgICAgICB0aGlzLmNvZGVjSUQgPSBjb2RlY0lEO1xuICAgIH1cbn1cbi8qKlxuICog5b2V5Yi26YWN572uXG4gKi9cbmV4cG9ydCBjbGFzcyBaZWdvRGF0YVJlY29yZENvbmZpZyB7XG4gICAgY29uc3RydWN0b3IoZmlsZVBhdGgsIHJlY29yZFR5cGUpIHtcbiAgICAgICAgdGhpcy5maWxlUGF0aCA9IGZpbGVQYXRoO1xuICAgICAgICB0aGlzLnJlY29yZFR5cGUgPSByZWNvcmRUeXBlO1xuICAgIH1cbn1cbi8qKlxuICog5paH5Lu25b2V5Yi26L+b5bqmXG4gKi9cbmV4cG9ydCBjbGFzcyBaZWdvRGF0YVJlY29yZFByb2dyZXNzIHtcbiAgICBjb25zdHJ1Y3RvcihkdXJhdGlvbiwgY3VycmVudEZpbGVTaXplLCBxdWFsaXR5KSB7XG4gICAgICAgIHRoaXMuZHVyYXRpb24gPSBkdXJhdGlvbjtcbiAgICAgICAgdGhpcy5jdXJyZW50RmlsZVNpemUgPSBjdXJyZW50RmlsZVNpemU7XG4gICAgICAgIHRoaXMucXVhbGl0eSA9IHF1YWxpdHk7XG4gICAgfVxufVxuLyoqXG4gKiDnsr7lh4ZzZWVr55qE6YWN572uXG4gKi9cbmV4cG9ydCBjbGFzcyBaZWdvQWNjdXJhdGVTZWVrQ29uZmlnIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy50aW1lb3V0ID0gNTAwMDtcbiAgICB9XG59XG4vKipcbiAqIOWqkuS9k+aSreaUvuWZqOe9kee7nOe8k+WtmOS/oeaBr1xuICovXG5leHBvcnQgY2xhc3MgWmVnb05ldFdvcmtSZXNvdXJjZUNhY2hlIHtcbiAgICBjb25zdHJ1Y3Rvcih0aW1lLCBzaXplKSB7XG4gICAgICAgIHRoaXMudGltZSA9IHRpbWU7XG4gICAgICAgIHRoaXMuc2l6ZSA9IHNpemU7XG4gICAgfVxufVxuLyoqXG4gKiDnlKjkuo7mjIflrprmkq3mlL7lmajnmoTlpJrlqpLkvZPotYTmupDjgIJcbiAqXG4gKiDnlKjkuo7lnKjliqDovb3lpJrlqpLkvZPotYTmupDml7bvvIzphY3nva7liqDovb3lj4LmlbDjgIJcbiAqL1xuZXhwb3J0IGNsYXNzIFplZ29NZWRpYVBsYXllclJlc291cmNlIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5sb2FkVHlwZSA9IFplZ29NdWx0aW1lZGlhTG9hZFR5cGUuRmlsZVBhdGg7XG4gICAgICAgIHRoaXMuc3RhcnRQb3NpdGlvbiA9IDA7XG4gICAgICAgIHRoaXMuYWxwaGFMYXlvdXQgPSBaZWdvQWxwaGFMYXlvdXRUeXBlLk5vbmU7XG4gICAgICAgIHRoaXMuZmlsZVBhdGggPSBcIlwiO1xuICAgICAgICB0aGlzLm1lbW9yeSA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5yZXNvdXJjZUlEID0gXCJcIjtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgWmVnb01lZGlhUGxheWVyIHtcbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///46\n");
/***/ }),
/* 47 */
/*!**********************************************************************************************************************************************************!*\
!*** E:/project/sxq/2024-10-16 chunwan/chunwan/uni_modules/zego-ZegoExpressUniApp-JS/components/zego-ZegoExpressUniApp-JS/zego-view/ZegoRemoteView.nvue ***!
\**********************************************************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _ZegoRemoteView_nvue_vue_type_template_id_2e514e8c___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ZegoRemoteView.nvue?vue&type=template&id=2e514e8c& */ 48);\n/* harmony import */ var _ZegoRemoteView_nvue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ZegoRemoteView.nvue?vue&type=script&lang=js& */ 50);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _ZegoRemoteView_nvue_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 _ZegoRemoteView_nvue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js */ 25);\n\nvar renderjs\n\n\nfunction injectStyles (context) {\n \n if(!this.options.style){\n this.options.style = {}\n }\n if(Vue.prototype.__merge_style && Vue.prototype.__$appStyle__){\n Vue.prototype.__merge_style(Vue.prototype.__$appStyle__, this.options.style)\n }\n \n}\n\n/* normalize component */\n\nvar component = Object(_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n _ZegoRemoteView_nvue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _ZegoRemoteView_nvue_vue_type_template_id_2e514e8c___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n _ZegoRemoteView_nvue_vue_type_template_id_2e514e8c___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n false,\n null,\n null,\n \"dc94a724\",\n false,\n _ZegoRemoteView_nvue_vue_type_template_id_2e514e8c___WEBPACK_IMPORTED_MODULE_0__[\"components\"],\n renderjs\n)\n\ninjectStyles.call(component)\ncomponent.options.__file = \"uni_modules/zego-ZegoExpressUniApp-JS/components/zego-ZegoExpressUniApp-JS/zego-view/ZegoRemoteView.nvue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBNEg7QUFDNUg7QUFDbUU7QUFDTDtBQUM5RDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDb007QUFDcE0sZ0JBQWdCLDJNQUFVO0FBQzFCLEVBQUUscUZBQU07QUFDUixFQUFFLDBGQUFNO0FBQ1IsRUFBRSxtR0FBZTtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRSw4RkFBVTtBQUNaO0FBQ0E7O0FBRUE7QUFDQTtBQUNlLGdGIiwiZmlsZSI6IjQ3LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMsIHJlY3ljbGFibGVSZW5kZXIsIGNvbXBvbmVudHMgfSBmcm9tIFwiLi9aZWdvUmVtb3RlVmlldy5udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTJlNTE0ZThjJlwiXG52YXIgcmVuZGVyanNcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vWmVnb1JlbW90ZVZpZXcubnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuZXhwb3J0ICogZnJvbSBcIi4vWmVnb1JlbW90ZVZpZXcubnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuZnVuY3Rpb24gaW5qZWN0U3R5bGVzIChjb250ZXh0KSB7XG4gIFxuICBpZighdGhpcy5vcHRpb25zLnN0eWxlKXtcbiAgICAgICAgICB0aGlzLm9wdGlvbnMuc3R5bGUgPSB7fVxuICAgICAgfVxuICAgICAgaWYoVnVlLnByb3RvdHlwZS5fX21lcmdlX3N0eWxlICYmIFZ1ZS5wcm90b3R5cGUuX18kYXBwU3R5bGVfXyl7XG4gICAgICAgIFZ1ZS5wcm90b3R5cGUuX19tZXJnZV9zdHlsZShWdWUucHJvdG90eXBlLl9fJGFwcFN0eWxlX18sIHRoaXMub3B0aW9ucy5zdHlsZSlcbiAgICAgIH1cbiAgICAgIFxufVxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5pbXBvcnQgbm9ybWFsaXplciBmcm9tIFwiIUM6XFxcXFVzZXJzXFxcXEFkbWluaXN0cmF0b3JcXFxcRGVza3RvcFxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHZ1ZS1sb2FkZXJcXFxcbGliXFxcXHJ1bnRpbWVcXFxcY29tcG9uZW50Tm9ybWFsaXplci5qc1wiXG52YXIgY29tcG9uZW50ID0gbm9ybWFsaXplcihcbiAgc2NyaXB0LFxuICByZW5kZXIsXG4gIHN0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIFwiZGM5NGE3MjRcIixcbiAgZmFsc2UsXG4gIGNvbXBvbmVudHMsXG4gIHJlbmRlcmpzXG4pXG5cbmluamVjdFN0eWxlcy5jYWxsKGNvbXBvbmVudClcbmNvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9IFwidW5pX21vZHVsZXMvemVnby1aZWdvRXhwcmVzc1VuaUFwcC1KUy9jb21wb25lbnRzL3plZ28tWmVnb0V4cHJlc3NVbmlBcHAtSlMvemVnby12aWV3L1plZ29SZW1vdGVWaWV3Lm52dWVcIlxuZXhwb3J0IGRlZmF1bHQgY29tcG9uZW50LmV4cG9ydHMiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///47\n");
/***/ }),
/* 48 */
/*!*****************************************************************************************************************************************************************************************!*\
!*** E:/project/sxq/2024-10-16 chunwan/chunwan/uni_modules/zego-ZegoExpressUniApp-JS/components/zego-ZegoExpressUniApp-JS/zego-view/ZegoRemoteView.nvue?vue&type=template&id=2e514e8c& ***!
\*****************************************************************************************************************************************************************************************/
/*! exports provided: render, staticRenderFns, recyclableRender, components */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_hbuilderx_packages_webpack_uni_nvue_loader_lib_template_recycle_js_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_0_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_ZegoRemoteView_nvue_vue_type_template_id_2e514e8c___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-hbuilderx/packages/webpack-uni-nvue-loader/lib/template.recycle.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--8-0!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./ZegoRemoteView.nvue?vue&type=template&id=2e514e8c& */ 49);
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_hbuilderx_packages_webpack_uni_nvue_loader_lib_template_recycle_js_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_0_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_ZegoRemoteView_nvue_vue_type_template_id_2e514e8c___WEBPACK_IMPORTED_MODULE_0__["render"]; });
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_hbuilderx_packages_webpack_uni_nvue_loader_lib_template_recycle_js_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_0_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_ZegoRemoteView_nvue_vue_type_template_id_2e514e8c___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; });
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return _C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_hbuilderx_packages_webpack_uni_nvue_loader_lib_template_recycle_js_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_0_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_ZegoRemoteView_nvue_vue_type_template_id_2e514e8c___WEBPACK_IMPORTED_MODULE_0__["recyclableRender"]; });
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "components", function() { return _C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_hbuilderx_packages_webpack_uni_nvue_loader_lib_template_recycle_js_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_0_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_ZegoRemoteView_nvue_vue_type_template_id_2e514e8c___WEBPACK_IMPORTED_MODULE_0__["components"]; });
/***/ }),
/* 49 */
/*!*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-hbuilderx/packages/webpack-uni-nvue-loader/lib/template.recycle.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--8-0!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!E:/project/sxq/2024-10-16 chunwan/chunwan/uni_modules/zego-ZegoExpressUniApp-JS/components/zego-ZegoExpressUniApp-JS/zego-view/ZegoRemoteView.nvue?vue&type=template&id=2e514e8c& ***!
\*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! 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("ZegoExpress-Remote-View", {
attrs: {
viewMode: _vm.viewMode,
streamID: _vm.streamID,
canvasType: _vm.canvasType,
},
})
}
var recyclableRender = false
var staticRenderFns = []
render._withStripped = true
/***/ }),
/* 50 */
/*!***********************************************************************************************************************************************************************************!*\
!*** E:/project/sxq/2024-10-16 chunwan/chunwan/uni_modules/zego-ZegoExpressUniApp-JS/components/zego-ZegoExpressUniApp-JS/zego-view/ZegoRemoteView.nvue?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 _C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_ref_5_0_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_5_1_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_ZegoRemoteView_nvue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!./node_modules/babel-loader/lib??ref--5-0!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--5-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./ZegoRemoteView.nvue?vue&type=script&lang=js& */ 51);\n/* harmony import */ var _C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_ref_5_0_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_5_1_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_ZegoRemoteView_nvue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_ref_5_0_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_5_1_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_ZegoRemoteView_nvue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_ref_5_0_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_5_1_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_ZegoRemoteView_nvue_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 _C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_ref_5_0_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_5_1_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_ZegoRemoteView_nvue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_ref_5_0_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_5_1_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_ZegoRemoteView_nvue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTBnQixDQUFnQiw2aUJBQUcsRUFBQyIsImZpbGUiOiI1MC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb2QgZnJvbSBcIi0hQzpcXFxcVXNlcnNcXFxcQWRtaW5pc3RyYXRvclxcXFxEZXNrdG9wXFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXGJhYmVsLWxvYWRlclxcXFxsaWJcXFxcaW5kZXguanM/P3JlZi0tNS0wIUM6XFxcXFVzZXJzXFxcXEFkbWluaXN0cmF0b3JcXFxcRGVza3RvcFxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHdlYnBhY2stcHJlcHJvY2Vzcy1sb2FkZXJcXFxcaW5kZXguanM/P3JlZi0tNS0xIUM6XFxcXFVzZXJzXFxcXEFkbWluaXN0cmF0b3JcXFxcRGVza3RvcFxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHZ1ZS1sb2FkZXJcXFxcbGliXFxcXGluZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9aZWdvUmVtb3RlVmlldy5udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiOyBleHBvcnQgZGVmYXVsdCBtb2Q7IGV4cG9ydCAqIGZyb20gXCItIUM6XFxcXFVzZXJzXFxcXEFkbWluaXN0cmF0b3JcXFxcRGVza3RvcFxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxiYWJlbC1sb2FkZXJcXFxcbGliXFxcXGluZGV4LmpzPz9yZWYtLTUtMCFDOlxcXFxVc2Vyc1xcXFxBZG1pbmlzdHJhdG9yXFxcXERlc2t0b3BcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx3ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyXFxcXGluZGV4LmpzPz9yZWYtLTUtMSFDOlxcXFxVc2Vyc1xcXFxBZG1pbmlzdHJhdG9yXFxcXERlc2t0b3BcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx2dWUtbG9hZGVyXFxcXGxpYlxcXFxpbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vWmVnb1JlbW90ZVZpZXcubnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///50\n");
/***/ }),
/* 51 */
/*!**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib??ref--5-0!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--5-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!E:/project/sxq/2024-10-16 chunwan/chunwan/uni_modules/zego-ZegoExpressUniApp-JS/components/zego-ZegoExpressUniApp-JS/zego-view/ZegoRemoteView.nvue?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;\nvar _ZegoExpressDefines = __webpack_require__(/*! ../lib/ZegoExpressDefines */ 46);\n//\n//\n//\n//\nvar _default = {\n name: 'ZegoRemoteView',\n props: {\n viewMode: {\n type: Number,\n default: _ZegoExpressDefines.ZegoViewMode.AspectFill\n },\n canvasType: {\n type: Number,\n default: 0\n },\n streamID: {\n type: String,\n default: ''\n }\n }\n};\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vdW5pX21vZHVsZXMvemVnby1aZWdvRXhwcmVzc1VuaUFwcC1KUy9jb21wb25lbnRzL3plZ28tWmVnb0V4cHJlc3NVbmlBcHAtSlMvemVnby12aWV3L1plZ29SZW1vdGVWaWV3Lm52dWUiXSwibmFtZXMiOlsibmFtZSIsInByb3BzIiwidmlld01vZGUiLCJ0eXBlIiwiZGVmYXVsdCIsImNhbnZhc1R5cGUiLCJzdHJlYW1JRCJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBS0E7Ozs7O2VBSUE7RUFDQUE7RUFDQUM7SUFDQUM7TUFDQUM7TUFDQUM7SUFDQTtJQUNBQztNQUNBRjtNQUNBQztJQUNBO0lBQ0FFO01BQ0FIO01BQ0FDO0lBQ0E7RUFDQTtBQUNBO0FBQUEiLCJmaWxlIjoiNTEuanMiLCJzb3VyY2VzQ29udGVudCI6WyI8dGVtcGxhdGU+XG5cdDxaZWdvRXhwcmVzcy1SZW1vdGUtVmlldyA6dmlld01vZGU9XCJ2aWV3TW9kZVwiIDpzdHJlYW1JRD1cInN0cmVhbUlEXCIgOmNhbnZhc1R5cGU9XCJjYW52YXNUeXBlXCI+PC9aZWdvRXhwcmVzcy1SZW1vdGUtVmlldz5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQ+XG5cdGltcG9ydCB7XG5cdFx0WmVnb1ZpZXdNb2RlXG5cdH0gZnJvbSAnLi4vbGliL1plZ29FeHByZXNzRGVmaW5lcyc7XG5cblx0ZXhwb3J0IGRlZmF1bHQge1xuXHRcdG5hbWU6ICdaZWdvUmVtb3RlVmlldycsXG5cdFx0cHJvcHM6IHtcblx0XHRcdHZpZXdNb2RlOiB7XG5cdFx0XHRcdHR5cGU6IE51bWJlcixcblx0XHRcdFx0ZGVmYXVsdDogWmVnb1ZpZXdNb2RlLkFzcGVjdEZpbGxcblx0XHRcdH0sXG5cdFx0XHRjYW52YXNUeXBlOiB7XG5cdFx0XHRcdHR5cGU6IE51bWJlcixcblx0XHRcdFx0ZGVmYXVsdDogMFxuXHRcdFx0fSxcblx0XHRcdHN0cmVhbUlEOiB7XG5cdFx0XHRcdHR5cGU6IFN0cmluZyxcblx0XHRcdFx0ZGVmYXVsdDogJydcblx0XHRcdH1cblx0XHR9LFxuXHR9XG48L3NjcmlwdD5cblxuPHN0eWxlPlxuXG48L3N0eWxlPlxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///51\n");
/***/ }),
/* 52 */
/*!*********************************************************************************************************************************************************!*\
!*** E:/project/sxq/2024-10-16 chunwan/chunwan/uni_modules/zego-ZegoExpressUniApp-JS/components/zego-ZegoExpressUniApp-JS/zego-view/ZegoLocalView.nvue ***!
\*********************************************************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _ZegoLocalView_nvue_vue_type_template_id_69e13685___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ZegoLocalView.nvue?vue&type=template&id=69e13685& */ 53);\n/* harmony import */ var _ZegoLocalView_nvue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ZegoLocalView.nvue?vue&type=script&lang=js& */ 55);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _ZegoLocalView_nvue_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 _ZegoLocalView_nvue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js */ 25);\n\nvar renderjs\n\n\nfunction injectStyles (context) {\n \n if(!this.options.style){\n this.options.style = {}\n }\n if(Vue.prototype.__merge_style && Vue.prototype.__$appStyle__){\n Vue.prototype.__merge_style(Vue.prototype.__$appStyle__, this.options.style)\n }\n \n}\n\n/* normalize component */\n\nvar component = Object(_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n _ZegoLocalView_nvue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _ZegoLocalView_nvue_vue_type_template_id_69e13685___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n _ZegoLocalView_nvue_vue_type_template_id_69e13685___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n false,\n null,\n null,\n \"912ed73a\",\n false,\n _ZegoLocalView_nvue_vue_type_template_id_69e13685___WEBPACK_IMPORTED_MODULE_0__[\"components\"],\n renderjs\n)\n\ninjectStyles.call(component)\ncomponent.options.__file = \"uni_modules/zego-ZegoExpressUniApp-JS/components/zego-ZegoExpressUniApp-JS/zego-view/ZegoLocalView.nvue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBMkg7QUFDM0g7QUFDa0U7QUFDTDtBQUM3RDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDb007QUFDcE0sZ0JBQWdCLDJNQUFVO0FBQzFCLEVBQUUsb0ZBQU07QUFDUixFQUFFLHlGQUFNO0FBQ1IsRUFBRSxrR0FBZTtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRSw2RkFBVTtBQUNaO0FBQ0E7O0FBRUE7QUFDQTtBQUNlLGdGIiwiZmlsZSI6IjUyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMsIHJlY3ljbGFibGVSZW5kZXIsIGNvbXBvbmVudHMgfSBmcm9tIFwiLi9aZWdvTG9jYWxWaWV3Lm52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NjllMTM2ODUmXCJcbnZhciByZW5kZXJqc1xuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9aZWdvTG9jYWxWaWV3Lm52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcbmV4cG9ydCAqIGZyb20gXCIuL1plZ29Mb2NhbFZpZXcubnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuZnVuY3Rpb24gaW5qZWN0U3R5bGVzIChjb250ZXh0KSB7XG4gIFxuICBpZighdGhpcy5vcHRpb25zLnN0eWxlKXtcbiAgICAgICAgICB0aGlzLm9wdGlvbnMuc3R5bGUgPSB7fVxuICAgICAgfVxuICAgICAgaWYoVnVlLnByb3RvdHlwZS5fX21lcmdlX3N0eWxlICYmIFZ1ZS5wcm90b3R5cGUuX18kYXBwU3R5bGVfXyl7XG4gICAgICAgIFZ1ZS5wcm90b3R5cGUuX19tZXJnZV9zdHlsZShWdWUucHJvdG90eXBlLl9fJGFwcFN0eWxlX18sIHRoaXMub3B0aW9ucy5zdHlsZSlcbiAgICAgIH1cbiAgICAgIFxufVxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5pbXBvcnQgbm9ybWFsaXplciBmcm9tIFwiIUM6XFxcXFVzZXJzXFxcXEFkbWluaXN0cmF0b3JcXFxcRGVza3RvcFxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHZ1ZS1sb2FkZXJcXFxcbGliXFxcXHJ1bnRpbWVcXFxcY29tcG9uZW50Tm9ybWFsaXplci5qc1wiXG52YXIgY29tcG9uZW50ID0gbm9ybWFsaXplcihcbiAgc2NyaXB0LFxuICByZW5kZXIsXG4gIHN0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIFwiOTEyZWQ3M2FcIixcbiAgZmFsc2UsXG4gIGNvbXBvbmVudHMsXG4gIHJlbmRlcmpzXG4pXG5cbmluamVjdFN0eWxlcy5jYWxsKGNvbXBvbmVudClcbmNvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9IFwidW5pX21vZHVsZXMvemVnby1aZWdvRXhwcmVzc1VuaUFwcC1KUy9jb21wb25lbnRzL3plZ28tWmVnb0V4cHJlc3NVbmlBcHAtSlMvemVnby12aWV3L1plZ29Mb2NhbFZpZXcubnZ1ZVwiXG5leHBvcnQgZGVmYXVsdCBjb21wb25lbnQuZXhwb3J0cyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///52\n");
/***/ }),
/* 53 */
/*!****************************************************************************************************************************************************************************************!*\
!*** E:/project/sxq/2024-10-16 chunwan/chunwan/uni_modules/zego-ZegoExpressUniApp-JS/components/zego-ZegoExpressUniApp-JS/zego-view/ZegoLocalView.nvue?vue&type=template&id=69e13685& ***!
\****************************************************************************************************************************************************************************************/
/*! exports provided: render, staticRenderFns, recyclableRender, components */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_hbuilderx_packages_webpack_uni_nvue_loader_lib_template_recycle_js_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_0_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_ZegoLocalView_nvue_vue_type_template_id_69e13685___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-hbuilderx/packages/webpack-uni-nvue-loader/lib/template.recycle.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--8-0!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./ZegoLocalView.nvue?vue&type=template&id=69e13685& */ 54);
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_hbuilderx_packages_webpack_uni_nvue_loader_lib_template_recycle_js_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_0_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_ZegoLocalView_nvue_vue_type_template_id_69e13685___WEBPACK_IMPORTED_MODULE_0__["render"]; });
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_hbuilderx_packages_webpack_uni_nvue_loader_lib_template_recycle_js_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_0_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_ZegoLocalView_nvue_vue_type_template_id_69e13685___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; });
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return _C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_hbuilderx_packages_webpack_uni_nvue_loader_lib_template_recycle_js_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_0_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_ZegoLocalView_nvue_vue_type_template_id_69e13685___WEBPACK_IMPORTED_MODULE_0__["recyclableRender"]; });
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "components", function() { return _C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_hbuilderx_packages_webpack_uni_nvue_loader_lib_template_recycle_js_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_0_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_ZegoLocalView_nvue_vue_type_template_id_69e13685___WEBPACK_IMPORTED_MODULE_0__["components"]; });
/***/ }),
/* 54 */
/*!******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-hbuilderx/packages/webpack-uni-nvue-loader/lib/template.recycle.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--8-0!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!E:/project/sxq/2024-10-16 chunwan/chunwan/uni_modules/zego-ZegoExpressUniApp-JS/components/zego-ZegoExpressUniApp-JS/zego-view/ZegoLocalView.nvue?vue&type=template&id=69e13685& ***!
\******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! 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("ZegoExpress-Local-View", {
attrs: {
viewMode: _vm.viewMode,
channel: _vm.channel,
canvasType: _vm.canvasType,
},
})
}
var recyclableRender = false
var staticRenderFns = []
render._withStripped = true
/***/ }),
/* 55 */
/*!**********************************************************************************************************************************************************************************!*\
!*** E:/project/sxq/2024-10-16 chunwan/chunwan/uni_modules/zego-ZegoExpressUniApp-JS/components/zego-ZegoExpressUniApp-JS/zego-view/ZegoLocalView.nvue?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 _C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_ref_5_0_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_5_1_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_ZegoLocalView_nvue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!./node_modules/babel-loader/lib??ref--5-0!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--5-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./ZegoLocalView.nvue?vue&type=script&lang=js& */ 56);\n/* harmony import */ var _C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_ref_5_0_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_5_1_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_ZegoLocalView_nvue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_ref_5_0_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_5_1_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_ZegoLocalView_nvue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_ref_5_0_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_5_1_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_ZegoLocalView_nvue_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 _C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_ref_5_0_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_5_1_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_ZegoLocalView_nvue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_ref_5_0_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_5_1_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_ZegoLocalView_nvue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQXlnQixDQUFnQiw0aUJBQUcsRUFBQyIsImZpbGUiOiI1NS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb2QgZnJvbSBcIi0hQzpcXFxcVXNlcnNcXFxcQWRtaW5pc3RyYXRvclxcXFxEZXNrdG9wXFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXGJhYmVsLWxvYWRlclxcXFxsaWJcXFxcaW5kZXguanM/P3JlZi0tNS0wIUM6XFxcXFVzZXJzXFxcXEFkbWluaXN0cmF0b3JcXFxcRGVza3RvcFxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHdlYnBhY2stcHJlcHJvY2Vzcy1sb2FkZXJcXFxcaW5kZXguanM/P3JlZi0tNS0xIUM6XFxcXFVzZXJzXFxcXEFkbWluaXN0cmF0b3JcXFxcRGVza3RvcFxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHZ1ZS1sb2FkZXJcXFxcbGliXFxcXGluZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9aZWdvTG9jYWxWaWV3Lm52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCI7IGV4cG9ydCBkZWZhdWx0IG1vZDsgZXhwb3J0ICogZnJvbSBcIi0hQzpcXFxcVXNlcnNcXFxcQWRtaW5pc3RyYXRvclxcXFxEZXNrdG9wXFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXGJhYmVsLWxvYWRlclxcXFxsaWJcXFxcaW5kZXguanM/P3JlZi0tNS0wIUM6XFxcXFVzZXJzXFxcXEFkbWluaXN0cmF0b3JcXFxcRGVza3RvcFxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHdlYnBhY2stcHJlcHJvY2Vzcy1sb2FkZXJcXFxcaW5kZXguanM/P3JlZi0tNS0xIUM6XFxcXFVzZXJzXFxcXEFkbWluaXN0cmF0b3JcXFxcRGVza3RvcFxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHZ1ZS1sb2FkZXJcXFxcbGliXFxcXGluZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9aZWdvTG9jYWxWaWV3Lm52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCIiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///55\n");
/***/ }),
/* 56 */
/*!*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib??ref--5-0!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--5-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!E:/project/sxq/2024-10-16 chunwan/chunwan/uni_modules/zego-ZegoExpressUniApp-JS/components/zego-ZegoExpressUniApp-JS/zego-view/ZegoLocalView.nvue?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;\nvar _ZegoExpressDefines = __webpack_require__(/*! ../lib/ZegoExpressDefines */ 46);\n//\n//\n//\n//\nvar _default = {\n name: 'ZegoLocalView',\n props: {\n viewMode: {\n type: Number,\n default: _ZegoExpressDefines.ZegoViewMode.AspectFill\n },\n channel: {\n type: Number,\n default: _ZegoExpressDefines.ZegoPublishChannel.Main\n },\n canvasType: {\n type: Number,\n default: 0\n }\n }\n};\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vdW5pX21vZHVsZXMvemVnby1aZWdvRXhwcmVzc1VuaUFwcC1KUy9jb21wb25lbnRzL3plZ28tWmVnb0V4cHJlc3NVbmlBcHAtSlMvemVnby12aWV3L1plZ29Mb2NhbFZpZXcubnZ1ZSJdLCJuYW1lcyI6WyJuYW1lIiwicHJvcHMiLCJ2aWV3TW9kZSIsInR5cGUiLCJkZWZhdWx0IiwiY2hhbm5lbCIsImNhbnZhc1R5cGUiXSwibWFwcGluZ3MiOiI7Ozs7OztBQUtBOzs7OztlQUtBO0VBQ0FBO0VBQ0FDO0lBQ0FDO01BQ0FDO01BQ0FDO0lBQ0E7SUFDQUM7TUFDQUY7TUFDQUM7SUFDQTtJQUNBRTtNQUNBSDtNQUNBQztJQUNBO0VBQ0E7QUFDQTtBQUFBIiwiZmlsZSI6IjU2LmpzIiwic291cmNlc0NvbnRlbnQiOlsiPHRlbXBsYXRlPlxuXHQ8WmVnb0V4cHJlc3MtTG9jYWwtVmlldyA6dmlld01vZGU9XCJ2aWV3TW9kZVwiIDpjaGFubmVsPVwiY2hhbm5lbFwiIDpjYW52YXNUeXBlPVwiY2FudmFzVHlwZVwiPjwvWmVnb0V4cHJlc3MtTG9jYWwtVmlldz5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQ+XG5cdGltcG9ydCB7XG5cdFx0WmVnb1B1Ymxpc2hDaGFubmVsLFxuXHRcdFplZ29WaWV3TW9kZVxuXHR9IGZyb20gJy4uL2xpYi9aZWdvRXhwcmVzc0RlZmluZXMnO1xuXG5cdGV4cG9ydCBkZWZhdWx0IHtcblx0XHRuYW1lOiAnWmVnb0xvY2FsVmlldycsXG5cdFx0cHJvcHM6IHtcblx0XHRcdHZpZXdNb2RlOiB7XG5cdFx0XHRcdHR5cGU6IE51bWJlcixcblx0XHRcdFx0ZGVmYXVsdDogWmVnb1ZpZXdNb2RlLkFzcGVjdEZpbGxcblx0XHRcdH0sXG5cdFx0XHRjaGFubmVsOiB7XG5cdFx0XHRcdHR5cGU6IE51bWJlcixcblx0XHRcdFx0ZGVmYXVsdDogWmVnb1B1Ymxpc2hDaGFubmVsLk1haW5cblx0XHRcdH0sXG5cdFx0XHRjYW52YXNUeXBlOiB7XG5cdFx0XHRcdHR5cGU6IE51bWJlcixcblx0XHRcdFx0ZGVmYXVsdDogMFxuXHRcdFx0fVxuXHRcdH0sXG5cdH1cbjwvc2NyaXB0PlxuXG48c3R5bGU+XG5cbjwvc3R5bGU+XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///56\n");
/***/ }),
/* 57 */
/*!*****************************************************************************************************************************!*\
!*** E:/project/sxq/2024-10-16 chunwan/chunwan/pages/pipei/shipin/detail.nvue?vue&type=style&index=0&lang=scss&mpType=page ***!
\*****************************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_hbuilderx_packages_webpack_uni_nvue_loader_lib_style_js_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_oneOf_0_1_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_11_oneOf_0_2_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_sass_loader_dist_cjs_js_ref_11_oneOf_0_3_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_oneOf_0_4_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_detail_nvue_vue_type_style_index_0_lang_scss_mpType_page__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!./node_modules/@dcloudio/vue-cli-plugin-hbuilderx/packages/webpack-uni-nvue-loader/lib/style.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-oneOf-0-1!./node_modules/postcss-loader/src??ref--11-oneOf-0-2!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/sass-loader/dist/cjs.js??ref--11-oneOf-0-3!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-oneOf-0-4!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./detail.nvue?vue&type=style&index=0&lang=scss&mpType=page */ 58);
/* harmony import */ var _C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_hbuilderx_packages_webpack_uni_nvue_loader_lib_style_js_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_oneOf_0_1_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_11_oneOf_0_2_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_sass_loader_dist_cjs_js_ref_11_oneOf_0_3_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_oneOf_0_4_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_detail_nvue_vue_type_style_index_0_lang_scss_mpType_page__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_hbuilderx_packages_webpack_uni_nvue_loader_lib_style_js_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_oneOf_0_1_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_11_oneOf_0_2_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_sass_loader_dist_cjs_js_ref_11_oneOf_0_3_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_oneOf_0_4_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_detail_nvue_vue_type_style_index_0_lang_scss_mpType_page__WEBPACK_IMPORTED_MODULE_0__);
/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_hbuilderx_packages_webpack_uni_nvue_loader_lib_style_js_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_oneOf_0_1_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_11_oneOf_0_2_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_sass_loader_dist_cjs_js_ref_11_oneOf_0_3_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_oneOf_0_4_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_detail_nvue_vue_type_style_index_0_lang_scss_mpType_page__WEBPACK_IMPORTED_MODULE_0__) if(["default"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_hbuilderx_packages_webpack_uni_nvue_loader_lib_style_js_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_oneOf_0_1_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_11_oneOf_0_2_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_sass_loader_dist_cjs_js_ref_11_oneOf_0_3_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_oneOf_0_4_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_detail_nvue_vue_type_style_index_0_lang_scss_mpType_page__WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
/* harmony default export */ __webpack_exports__["default"] = (_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_hbuilderx_packages_webpack_uni_nvue_loader_lib_style_js_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_oneOf_0_1_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_11_oneOf_0_2_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_sass_loader_dist_cjs_js_ref_11_oneOf_0_3_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_oneOf_0_4_C_Users_Administrator_Desktop_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_detail_nvue_vue_type_style_index_0_lang_scss_mpType_page__WEBPACK_IMPORTED_MODULE_0___default.a);
/***/ }),
/* 58 */
/*!******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/@dcloudio/vue-cli-plugin-hbuilderx/packages/webpack-uni-nvue-loader/lib/style.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-oneOf-0-1!./node_modules/postcss-loader/src??ref--11-oneOf-0-2!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/sass-loader/dist/cjs.js??ref--11-oneOf-0-3!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-oneOf-0-4!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!E:/project/sxq/2024-10-16 chunwan/chunwan/pages/pipei/shipin/detail.nvue?vue&type=style&index=0&lang=scss&mpType=page ***!
\******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
module.exports = {
".room": {
"": {
"backgroundColor": [
"#000000",
0,
0,
16
]
}
},
".room-navbar": {
"": {
"height": [
"44",
0,
0,
17
],
"position": [
"fixed",
0,
0,
17
],
"left": [
0,
0,
0,
17
],
"top": [
0,
0,
0,
17
],
"zIndex": [
122,
0,
0,
17
],
"display": [
"flex",
0,
0,
17
],
"flexDirection": [
"row",
0,
0,
17
]
}
},
".navbar": {
".room-navbar ": {
"flexDirection": [
"row",
0,
1,
18
],
"height": [
"44",
0,
1,
18
],
"lineHeight": [
"44",
0,
1,
18
],
"position": [
"relative",
0,
1,
18
],
"textAlign": [
"center",
0,
1,
18
],
"fontSize": [
"30",
0,
1,
18
]
}
},
".txt": {
".room-navbar .navbar ": {
"fontSize": [
"20",
0,
2,
19
],
"color": [
"#ffffff",
0,
2,
19
]
},
".room-bd .dian-on .info ": {
"marginTop": [
"20rpx",
0,
3,
38
],
"opacity": [
0.3,
0,
3,
38
]
},
".room-fd .item ": {
"marginTop": [
"20rpx",
0,
2,
42
]
}
},
".title": {
".room-navbar .navbar ": {
"display": [
"flex",
0,
2,
20
],
"alignItems": [
"center",
0,
2,
20
],
"justifyContent": [
"center",
0,
2,
20
]
}
},
".back": {
".room-navbar .navbar ": {
"width": [
"50",
0,
2,
21
],
"height": [
"44",
0,
2,
21
],
"position": [
"fixed",
0,
2,
21
],
"left": [
0,
0,
2,
21
],
"zIndex": [
44,
0,
2,
21
],
"display": [
"flex",
0,
2,
21
],
"alignItems": [
"center",
0,
2,
21
],
"justifyContent": [
"center",
0,
2,
21
]
}
},
".img": {
".room-navbar .navbar .back ": {
"width": [
"20",
0,
3,
22
],
"height": [
"20",
0,
3,
22
]
}
},
".room-hd": {
"": {
"flexDirection": [
"column",
0,
0,
23
],
"position": [
"relative",
0,
0,
23
],
"zIndex": [
2,
0,
0,
23
]
}
},
".shitu": {
".room-hd ": {
"width": [
"300rpx",
0,
1,
24
],
"height": [
"380rpx",
0,
1,
24
],
"borderRadius": [
"10rpx",
0,
1,
24
],
"overflow": [
"hidden",
0,
1,
24
],
"position": [
"fixed",
0,
1,
24
],
"right": [
"20rpx",
0,
1,
24
],
"top": [
"120rpx",
0,
1,
24
],
"zIndex": [
22,
0,
1,
24
]
}
},
".room-bd": {
"": {
"position": [
"relative",
0,
0,
25
]
}
},
".pic": {
".room-bd ": {
"width": [
100,
0,
1,
26
],
"height": [
100,
0,
1,
26
]
},
".room-fd .item ": {
"width": [
"130rpx",
0,
2,
44
],
"height": [
"130rpx",
0,
2,
44
],
"borderRadius": [
50,
0,
2,
44
],
"display": [
"flex",
0,
2,
44
],
"alignItems": [
"center",
0,
2,
44
],
"justifyContent": [
"center",
0,
2,
44
],
"marginTop": [
0,
0,
2,
44
],
"marginBottom": [
"10rpx",
0,
2,
44
]
},
".room-fd1 .items ": {
"width": [
"130rpx",
0,
2,
48
],
"height": [
"130rpx",
0,
2,
48
],
"borderRadius": [
50,
0,
2,
48
],
"display": [
"flex",
0,
2,
48
],
"alignItems": [
"center",
0,
2,
48
],
"justifyContent": [
"center",
0,
2,
48
],
"marginTop": [
0,
0,
2,
48
],
"marginBottom": [
"10rpx",
0,
2,
48
]
}
},
".dian-on": {
".room-bd ": {
"width": [
"650rpx",
0,
1,
27
],
"minHeight": [
"648rpx",
0,
1,
27
],
"position": [
"absolute",
0,
1,
27
],
"marginLeft": [
"50rpx",
0,
1,
27
],
"top": [
"250rpx",
0,
1,
27
],
"zIndex": [
1,
0,
1,
27
]
}
},
".tag": {
".room-bd .dian-on ": {
"width": [
"660rpx",
0,
2,
28
],
"height": [
"330rpx",
0,
2,
28
],
"backgroundColor": [
"rgba(35,32,48,0.36)",
0,
2,
28
],
"borderRadius": [
"20rpx",
0,
2,
28
],
"marginTop": [
"30rpx",
0,
2,
28
],
"marginBottom": [
0,
0,
2,
28
],
"paddingTop": [
"30rpx",
0,
2,
28
],
"paddingRight": [
"30rpx",
0,
2,
28
],
"paddingBottom": [
"30rpx",
0,
2,
28
],
"paddingLeft": [
"30rpx",
0,
2,
28
],
"boxSizing": [
"border-box",
0,
2,
28
],
"textAlign": [
"left",
0,
2,
28
]
}
},
".t": {
".room-bd .dian-on .tag .titles ": {
"fontWeight": [
"bold",
0,
4,
29
],
"fontSize": [
"30rpx",
0,
4,
29
],
"color": [
"#FFFFFF",
0,
4,
29
]
},
".room-bd .dian-on .tag .descs ": {
"fontSize": [
"24rpx",
0,
4,
31
],
"color": [
"#B8B7BC",
0,
4,
31
],
"lineHeight": [
"45rpx",
0,
4,
31
],
"fontWeight": [
"400",
0,
4,
31
]
},
".room-bd .dian-on .info .name ": {
"fontSize": [
"28rpx",
0,
4,
35
],
"color": [
"#FFFFFF",
0,
4,
35
]
},
".room-bd .dian-on .info .btn ": {
"fontWeight": [
"bold",
0,
4,
37
],
"fontSize": [
"30rpx",
0,
4,
37
],
"color": [
"#FFFFFF",
0,
4,
37
]
},
".room-bd .dian-on .info .txt ": {
"fontWeight": [
"500",
0,
4,
39
],
"fontSize": [
"26rpx",
0,
4,
39
],
"color": [
"#FFFFFF",
0,
4,
39
]
},
".room-fd .item .txt ": {
"fontSize": [
"30rpx",
0,
3,
43
],
"color": [
"#ffffff",
0,
3,
43
]
}
},
".descs": {
".room-bd .dian-on .tag ": {
"marginTop": [
"20rpx",
0,
3,
30
]
}
},
".info": {
".room-bd .dian-on ": {
"textAlign": [
"center",
0,
2,
32
],
"overflow": [
"hidden",
0,
2,
32
],
"display": [
"flex",
0,
2,
32
],
"justifyContent": [
"center",
0,
2,
32
],
"alignItems": [
"center",
0,
2,
32
],
"flexDirection": [
"column",
0,
2,
32
]
}
},
".avatar": {
".room-bd .dian-on .info ": {
"width": [
"180rpx",
0,
3,
33
],
"height": [
"180rpx",
0,
3,
33
],
"borderRadius": [
50,
0,
3,
33
],
"marginTop": [
0,
0,
3,
33
],
"marginBottom": [
0,
0,
3,
33
]
}
},
".name": {
".room-bd .dian-on .info ": {
"fontWeight": [
"500",
0,
3,
34
],
"marginTop": [
"10rpx",
0,
3,
34
],
"whiteSpace": [
"nowrap",
0,
3,
34
],
"overflow": [
"hidden",
0,
3,
34
],
"textOverflow": [
"ellipsis",
0,
3,
34
],
"textAlign": [
"center",
0,
3,
34
]
}
},
".btn": {
".room-bd .dian-on .info ": {
"width": [
"170rpx",
0,
3,
36
],
"lineHeight": [
"56rpx",
0,
3,
36
],
"backgroundImage": [
"linear-gradient(0deg, #FF9124, #BD4700)",
0,
3,
36
],
"borderRadius": [
"56rpx",
0,
3,
36
],
"marginTop": [
"20rpx",
0,
3,
36
],
"marginBottom": [
0,
0,
3,
36
]
}
},
".room-fd": {
"": {
"height": [
"220rpx",
0,
0,
40
],
"position": [
"fixed",
0,
0,
40
],
"left": [
0,
0,
0,
40
],
"bottom": [
"200rpx",
0,
0,
40
],
"zIndex": [
122,
0,
0,
40
],
"flexDirection": [
"row",
0,
0,
40
]
}
},
".item": {
".room-fd ": {
"flex": [
1,
0,
1,
41
],
"textAlign": [
"center",
0,
1,
41
],
"fontSize": [
"30rpx",
0,
1,
41
],
"fontWeight": [
"400",
0,
1,
41
],
"display": [
"flex",
0,
1,
41
],
"justifyContent": [
"center",
0,
1,
41
],
"alignItems": [
"center",
0,
1,
41
]
}
},
".pimg": {
".room-fd .item .pic ": {
"width": [
"130rpx",
0,
3,
45
],
"height": [
"130rpx",
0,
3,
45
]
},
".room-fd1 .items .pic ": {
"width": [
"130rpx",
0,
3,
49
],
"height": [
"130rpx",
0,
3,
49
]
}
},
".room-fd1": {
"": {
"height": [
"220rpx",
0,
0,
46
],
"position": [
"fixed",
0,
0,
46
],
"left": [
0,
0,
0,
46
],
"bottom": [
"40rpx",
0,
0,
46
],
"zIndex": [
44,
0,
0,
46
],
"flexDirection": [
"row",
0,
0,
46
],
"flexWrap": [
"wrap",
0,
0,
46
]
}
},
".items": {
".room-fd1 ": {
"flex": [
1,
0,
1,
47
],
"marginTop": [
"70rpx",
0,
1,
47
],
"position": [
"relative",
0,
1,
47
],
"flexDirection": [
"row",
0,
1,
47
],
"display": [
"flex",
0,
1,
47
],
"justifyContent": [
"center",
0,
1,
47
],
"alignItems": [
"center",
0,
1,
47
]
}
},
".off": {
".room-fd1 .items ": {
"width": [
"49rpx",
0,
2,
50
],
"height": [
"44rpx",
0,
2,
50
],
"position": [
"absolute",
0,
2,
50
],
"right": [
"200rpx",
0,
2,
50
],
"zIndex": [
2,
0,
2,
50
],
"top": [
"50rpx",
0,
2,
50
]
}
},
"@VERSION": 2
}
/***/ })
/******/ ]);