@microsoft/ocsdk 0.2.1-main.9dd5d92 → 0.3.1-main.b56c728
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +28 -0
- package/dist/SDK.js +295 -51
- package/dist/SDK.min.js +1 -1
- package/lib/Common/Constants.d.ts +4 -1
- package/lib/Common/Constants.js +5 -2
- package/lib/Common/Constants.js.map +1 -1
- package/lib/Common/EventNames.js +1 -1
- package/lib/Common/Mappings.js +4 -0
- package/lib/Common/OCSDKLogger.js +1 -1
- package/lib/Interfaces/ISendTypingIndicatorOptionalParams.d.ts +3 -0
- package/lib/Interfaces/ISendTypingIndicatorOptionalParams.js +2 -0
- package/lib/Interfaces/ISendTypingIndicatorOptionalParams.js.map +1 -0
- package/lib/SDK.d.ts +2 -1
- package/lib/SDK.js +263 -124
- package/lib/SDK.js.map +1 -1
- package/lib/SDKProvider.js +1 -1
- package/lib/Utils/BrowserInfo.js +1 -1
- package/lib/Utils/DeviceInfo.js +1 -1
- package/lib/Utils/EventManager.js +1 -1
- package/lib/Utils/LocationInfo.js +1 -1
- package/lib/Utils/LoggingSanitizer.d.ts +3 -0
- package/lib/Utils/LoggingSanitizer.js +53 -0
- package/lib/Utils/LoggingSanitizer.js.map +1 -0
- package/lib/Utils/OSInfo.js +1 -1
- package/lib/Utils/TelemetryHelper.js +1 -1
- package/lib/Utils/Timer.js +1 -1
- package/lib/Utils/axiosRetry.js +1 -1
- package/package.json +21 -21
package/dist/SDK.js
CHANGED
|
@@ -120,6 +120,7 @@ module.exports = function xhrAdapter(config) {
|
|
|
120
120
|
return new Promise(function dispatchXhrRequest(resolve, reject) {
|
|
121
121
|
var requestData = config.data;
|
|
122
122
|
var requestHeaders = config.headers;
|
|
123
|
+
var responseType = config.responseType;
|
|
123
124
|
|
|
124
125
|
if (utils.isFormData(requestData)) {
|
|
125
126
|
delete requestHeaders['Content-Type']; // Let the browser set it
|
|
@@ -140,23 +141,14 @@ module.exports = function xhrAdapter(config) {
|
|
|
140
141
|
// Set the request timeout in MS
|
|
141
142
|
request.timeout = config.timeout;
|
|
142
143
|
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
if (!request || request.readyState !== 4) {
|
|
146
|
-
return;
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
// The request errored out and we didn't get a response, this will be
|
|
150
|
-
// handled by onerror instead
|
|
151
|
-
// With one exception: request that using file: protocol, most browsers
|
|
152
|
-
// will return status as 0 even though it's a successful request
|
|
153
|
-
if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {
|
|
144
|
+
function onloadend() {
|
|
145
|
+
if (!request) {
|
|
154
146
|
return;
|
|
155
147
|
}
|
|
156
|
-
|
|
157
148
|
// Prepare the response
|
|
158
149
|
var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;
|
|
159
|
-
var responseData = !
|
|
150
|
+
var responseData = !responseType || responseType === 'text' || responseType === 'json' ?
|
|
151
|
+
request.responseText : request.response;
|
|
160
152
|
var response = {
|
|
161
153
|
data: responseData,
|
|
162
154
|
status: request.status,
|
|
@@ -170,7 +162,30 @@ module.exports = function xhrAdapter(config) {
|
|
|
170
162
|
|
|
171
163
|
// Clean up request
|
|
172
164
|
request = null;
|
|
173
|
-
}
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
if ('onloadend' in request) {
|
|
168
|
+
// Use onloadend if available
|
|
169
|
+
request.onloadend = onloadend;
|
|
170
|
+
} else {
|
|
171
|
+
// Listen for ready state to emulate onloadend
|
|
172
|
+
request.onreadystatechange = function handleLoad() {
|
|
173
|
+
if (!request || request.readyState !== 4) {
|
|
174
|
+
return;
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
// The request errored out and we didn't get a response, this will be
|
|
178
|
+
// handled by onerror instead
|
|
179
|
+
// With one exception: request that using file: protocol, most browsers
|
|
180
|
+
// will return status as 0 even though it's a successful request
|
|
181
|
+
if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {
|
|
182
|
+
return;
|
|
183
|
+
}
|
|
184
|
+
// readystate handler is calling before onerror or ontimeout handlers,
|
|
185
|
+
// so we should call onloadend on the next 'tick'
|
|
186
|
+
setTimeout(onloadend);
|
|
187
|
+
};
|
|
188
|
+
}
|
|
174
189
|
|
|
175
190
|
// Handle browser request cancellation (as opposed to a manual cancellation)
|
|
176
191
|
request.onabort = function handleAbort() {
|
|
@@ -200,7 +215,10 @@ module.exports = function xhrAdapter(config) {
|
|
|
200
215
|
if (config.timeoutErrorMessage) {
|
|
201
216
|
timeoutErrorMessage = config.timeoutErrorMessage;
|
|
202
217
|
}
|
|
203
|
-
reject(createError(
|
|
218
|
+
reject(createError(
|
|
219
|
+
timeoutErrorMessage,
|
|
220
|
+
config,
|
|
221
|
+
config.transitional && config.transitional.clarifyTimeoutError ? 'ETIMEDOUT' : 'ECONNABORTED',
|
|
204
222
|
request));
|
|
205
223
|
|
|
206
224
|
// Clean up request
|
|
@@ -240,16 +258,8 @@ module.exports = function xhrAdapter(config) {
|
|
|
240
258
|
}
|
|
241
259
|
|
|
242
260
|
// Add responseType to request if needed
|
|
243
|
-
if (
|
|
244
|
-
|
|
245
|
-
request.responseType = config.responseType;
|
|
246
|
-
} catch (e) {
|
|
247
|
-
// Expected DOMException thrown by browsers not compatible XMLHttpRequest Level 2.
|
|
248
|
-
// But, this can be suppressed for 'json' type as it can be parsed by default 'transformResponse' function.
|
|
249
|
-
if (config.responseType !== 'json') {
|
|
250
|
-
throw e;
|
|
251
|
-
}
|
|
252
|
-
}
|
|
261
|
+
if (responseType && responseType !== 'json') {
|
|
262
|
+
request.responseType = config.responseType;
|
|
253
263
|
}
|
|
254
264
|
|
|
255
265
|
// Handle progress if needed
|
|
@@ -488,7 +498,9 @@ var buildURL = __webpack_require__(/*! ../helpers/buildURL */ "./node_modules/ax
|
|
|
488
498
|
var InterceptorManager = __webpack_require__(/*! ./InterceptorManager */ "./node_modules/axios/lib/core/InterceptorManager.js");
|
|
489
499
|
var dispatchRequest = __webpack_require__(/*! ./dispatchRequest */ "./node_modules/axios/lib/core/dispatchRequest.js");
|
|
490
500
|
var mergeConfig = __webpack_require__(/*! ./mergeConfig */ "./node_modules/axios/lib/core/mergeConfig.js");
|
|
501
|
+
var validator = __webpack_require__(/*! ../helpers/validator */ "./node_modules/axios/lib/helpers/validator.js");
|
|
491
502
|
|
|
503
|
+
var validators = validator.validators;
|
|
492
504
|
/**
|
|
493
505
|
* Create a new instance of Axios
|
|
494
506
|
*
|
|
@@ -528,20 +540,71 @@ Axios.prototype.request = function request(config) {
|
|
|
528
540
|
config.method = 'get';
|
|
529
541
|
}
|
|
530
542
|
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
543
|
+
var transitional = config.transitional;
|
|
544
|
+
|
|
545
|
+
if (transitional !== undefined) {
|
|
546
|
+
validator.assertOptions(transitional, {
|
|
547
|
+
silentJSONParsing: validators.transitional(validators.boolean, '1.0.0'),
|
|
548
|
+
forcedJSONParsing: validators.transitional(validators.boolean, '1.0.0'),
|
|
549
|
+
clarifyTimeoutError: validators.transitional(validators.boolean, '1.0.0')
|
|
550
|
+
}, false);
|
|
551
|
+
}
|
|
534
552
|
|
|
553
|
+
// filter out skipped interceptors
|
|
554
|
+
var requestInterceptorChain = [];
|
|
555
|
+
var synchronousRequestInterceptors = true;
|
|
535
556
|
this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {
|
|
536
|
-
|
|
557
|
+
if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {
|
|
558
|
+
return;
|
|
559
|
+
}
|
|
560
|
+
|
|
561
|
+
synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;
|
|
562
|
+
|
|
563
|
+
requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);
|
|
537
564
|
});
|
|
538
565
|
|
|
566
|
+
var responseInterceptorChain = [];
|
|
539
567
|
this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {
|
|
540
|
-
|
|
568
|
+
responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);
|
|
541
569
|
});
|
|
542
570
|
|
|
543
|
-
|
|
544
|
-
|
|
571
|
+
var promise;
|
|
572
|
+
|
|
573
|
+
if (!synchronousRequestInterceptors) {
|
|
574
|
+
var chain = [dispatchRequest, undefined];
|
|
575
|
+
|
|
576
|
+
Array.prototype.unshift.apply(chain, requestInterceptorChain);
|
|
577
|
+
chain = chain.concat(responseInterceptorChain);
|
|
578
|
+
|
|
579
|
+
promise = Promise.resolve(config);
|
|
580
|
+
while (chain.length) {
|
|
581
|
+
promise = promise.then(chain.shift(), chain.shift());
|
|
582
|
+
}
|
|
583
|
+
|
|
584
|
+
return promise;
|
|
585
|
+
}
|
|
586
|
+
|
|
587
|
+
|
|
588
|
+
var newConfig = config;
|
|
589
|
+
while (requestInterceptorChain.length) {
|
|
590
|
+
var onFulfilled = requestInterceptorChain.shift();
|
|
591
|
+
var onRejected = requestInterceptorChain.shift();
|
|
592
|
+
try {
|
|
593
|
+
newConfig = onFulfilled(newConfig);
|
|
594
|
+
} catch (error) {
|
|
595
|
+
onRejected(error);
|
|
596
|
+
break;
|
|
597
|
+
}
|
|
598
|
+
}
|
|
599
|
+
|
|
600
|
+
try {
|
|
601
|
+
promise = dispatchRequest(newConfig);
|
|
602
|
+
} catch (error) {
|
|
603
|
+
return Promise.reject(error);
|
|
604
|
+
}
|
|
605
|
+
|
|
606
|
+
while (responseInterceptorChain.length) {
|
|
607
|
+
promise = promise.then(responseInterceptorChain.shift(), responseInterceptorChain.shift());
|
|
545
608
|
}
|
|
546
609
|
|
|
547
610
|
return promise;
|
|
@@ -604,10 +667,12 @@ function InterceptorManager() {
|
|
|
604
667
|
*
|
|
605
668
|
* @return {Number} An ID used to remove interceptor later
|
|
606
669
|
*/
|
|
607
|
-
InterceptorManager.prototype.use = function use(fulfilled, rejected) {
|
|
670
|
+
InterceptorManager.prototype.use = function use(fulfilled, rejected, options) {
|
|
608
671
|
this.handlers.push({
|
|
609
672
|
fulfilled: fulfilled,
|
|
610
|
-
rejected: rejected
|
|
673
|
+
rejected: rejected,
|
|
674
|
+
synchronous: options ? options.synchronous : false,
|
|
675
|
+
runWhen: options ? options.runWhen : null
|
|
611
676
|
});
|
|
612
677
|
return this.handlers.length - 1;
|
|
613
678
|
};
|
|
@@ -743,7 +808,8 @@ module.exports = function dispatchRequest(config) {
|
|
|
743
808
|
config.headers = config.headers || {};
|
|
744
809
|
|
|
745
810
|
// Transform request data
|
|
746
|
-
config.data = transformData(
|
|
811
|
+
config.data = transformData.call(
|
|
812
|
+
config,
|
|
747
813
|
config.data,
|
|
748
814
|
config.headers,
|
|
749
815
|
config.transformRequest
|
|
@@ -769,7 +835,8 @@ module.exports = function dispatchRequest(config) {
|
|
|
769
835
|
throwIfCancellationRequested(config);
|
|
770
836
|
|
|
771
837
|
// Transform response data
|
|
772
|
-
response.data = transformData(
|
|
838
|
+
response.data = transformData.call(
|
|
839
|
+
config,
|
|
773
840
|
response.data,
|
|
774
841
|
response.headers,
|
|
775
842
|
config.transformResponse
|
|
@@ -782,7 +849,8 @@ module.exports = function dispatchRequest(config) {
|
|
|
782
849
|
|
|
783
850
|
// Transform response data
|
|
784
851
|
if (reason && reason.response) {
|
|
785
|
-
reason.response.data = transformData(
|
|
852
|
+
reason.response.data = transformData.call(
|
|
853
|
+
config,
|
|
786
854
|
reason.response.data,
|
|
787
855
|
reason.response.headers,
|
|
788
856
|
config.transformResponse
|
|
@@ -998,6 +1066,7 @@ module.exports = function settle(resolve, reject, response) {
|
|
|
998
1066
|
|
|
999
1067
|
|
|
1000
1068
|
var utils = __webpack_require__(/*! ./../utils */ "./node_modules/axios/lib/utils.js");
|
|
1069
|
+
var defaults = __webpack_require__(/*! ./../defaults */ "./node_modules/axios/lib/defaults.js");
|
|
1001
1070
|
|
|
1002
1071
|
/**
|
|
1003
1072
|
* Transform the data for a request or a response
|
|
@@ -1008,9 +1077,10 @@ var utils = __webpack_require__(/*! ./../utils */ "./node_modules/axios/lib/util
|
|
|
1008
1077
|
* @returns {*} The resulting transformed data
|
|
1009
1078
|
*/
|
|
1010
1079
|
module.exports = function transformData(data, headers, fns) {
|
|
1080
|
+
var context = this || defaults;
|
|
1011
1081
|
/*eslint no-param-reassign:0*/
|
|
1012
1082
|
utils.forEach(fns, function transform(fn) {
|
|
1013
|
-
data = fn(data, headers);
|
|
1083
|
+
data = fn.call(context, data, headers);
|
|
1014
1084
|
});
|
|
1015
1085
|
|
|
1016
1086
|
return data;
|
|
@@ -1031,6 +1101,7 @@ module.exports = function transformData(data, headers, fns) {
|
|
|
1031
1101
|
|
|
1032
1102
|
var utils = __webpack_require__(/*! ./utils */ "./node_modules/axios/lib/utils.js");
|
|
1033
1103
|
var normalizeHeaderName = __webpack_require__(/*! ./helpers/normalizeHeaderName */ "./node_modules/axios/lib/helpers/normalizeHeaderName.js");
|
|
1104
|
+
var enhanceError = __webpack_require__(/*! ./core/enhanceError */ "./node_modules/axios/lib/core/enhanceError.js");
|
|
1034
1105
|
|
|
1035
1106
|
var DEFAULT_CONTENT_TYPE = {
|
|
1036
1107
|
'Content-Type': 'application/x-www-form-urlencoded'
|
|
@@ -1054,12 +1125,35 @@ function getDefaultAdapter() {
|
|
|
1054
1125
|
return adapter;
|
|
1055
1126
|
}
|
|
1056
1127
|
|
|
1128
|
+
function stringifySafely(rawValue, parser, encoder) {
|
|
1129
|
+
if (utils.isString(rawValue)) {
|
|
1130
|
+
try {
|
|
1131
|
+
(parser || JSON.parse)(rawValue);
|
|
1132
|
+
return utils.trim(rawValue);
|
|
1133
|
+
} catch (e) {
|
|
1134
|
+
if (e.name !== 'SyntaxError') {
|
|
1135
|
+
throw e;
|
|
1136
|
+
}
|
|
1137
|
+
}
|
|
1138
|
+
}
|
|
1139
|
+
|
|
1140
|
+
return (encoder || JSON.stringify)(rawValue);
|
|
1141
|
+
}
|
|
1142
|
+
|
|
1057
1143
|
var defaults = {
|
|
1144
|
+
|
|
1145
|
+
transitional: {
|
|
1146
|
+
silentJSONParsing: true,
|
|
1147
|
+
forcedJSONParsing: true,
|
|
1148
|
+
clarifyTimeoutError: false
|
|
1149
|
+
},
|
|
1150
|
+
|
|
1058
1151
|
adapter: getDefaultAdapter(),
|
|
1059
1152
|
|
|
1060
1153
|
transformRequest: [function transformRequest(data, headers) {
|
|
1061
1154
|
normalizeHeaderName(headers, 'Accept');
|
|
1062
1155
|
normalizeHeaderName(headers, 'Content-Type');
|
|
1156
|
+
|
|
1063
1157
|
if (utils.isFormData(data) ||
|
|
1064
1158
|
utils.isArrayBuffer(data) ||
|
|
1065
1159
|
utils.isBuffer(data) ||
|
|
@@ -1076,20 +1170,32 @@ var defaults = {
|
|
|
1076
1170
|
setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');
|
|
1077
1171
|
return data.toString();
|
|
1078
1172
|
}
|
|
1079
|
-
if (utils.isObject(data)) {
|
|
1080
|
-
setContentTypeIfUnset(headers, 'application/json
|
|
1081
|
-
return
|
|
1173
|
+
if (utils.isObject(data) || (headers && headers['Content-Type'] === 'application/json')) {
|
|
1174
|
+
setContentTypeIfUnset(headers, 'application/json');
|
|
1175
|
+
return stringifySafely(data);
|
|
1082
1176
|
}
|
|
1083
1177
|
return data;
|
|
1084
1178
|
}],
|
|
1085
1179
|
|
|
1086
1180
|
transformResponse: [function transformResponse(data) {
|
|
1087
|
-
|
|
1088
|
-
|
|
1181
|
+
var transitional = this.transitional;
|
|
1182
|
+
var silentJSONParsing = transitional && transitional.silentJSONParsing;
|
|
1183
|
+
var forcedJSONParsing = transitional && transitional.forcedJSONParsing;
|
|
1184
|
+
var strictJSONParsing = !silentJSONParsing && this.responseType === 'json';
|
|
1185
|
+
|
|
1186
|
+
if (strictJSONParsing || (forcedJSONParsing && utils.isString(data) && data.length)) {
|
|
1089
1187
|
try {
|
|
1090
|
-
|
|
1091
|
-
} catch (e) {
|
|
1188
|
+
return JSON.parse(data);
|
|
1189
|
+
} catch (e) {
|
|
1190
|
+
if (strictJSONParsing) {
|
|
1191
|
+
if (e.name === 'SyntaxError') {
|
|
1192
|
+
throw enhanceError(e, this, 'E_JSON_PARSE');
|
|
1193
|
+
}
|
|
1194
|
+
throw e;
|
|
1195
|
+
}
|
|
1196
|
+
}
|
|
1092
1197
|
}
|
|
1198
|
+
|
|
1093
1199
|
return data;
|
|
1094
1200
|
}],
|
|
1095
1201
|
|
|
@@ -1581,6 +1687,123 @@ module.exports = function spread(callback) {
|
|
|
1581
1687
|
};
|
|
1582
1688
|
|
|
1583
1689
|
|
|
1690
|
+
/***/ }),
|
|
1691
|
+
|
|
1692
|
+
/***/ "./node_modules/axios/lib/helpers/validator.js":
|
|
1693
|
+
/*!*****************************************************!*\
|
|
1694
|
+
!*** ./node_modules/axios/lib/helpers/validator.js ***!
|
|
1695
|
+
\*****************************************************/
|
|
1696
|
+
/*! no static exports found */
|
|
1697
|
+
/***/ (function(module, exports, __webpack_require__) {
|
|
1698
|
+
|
|
1699
|
+
"use strict";
|
|
1700
|
+
|
|
1701
|
+
|
|
1702
|
+
var pkg = __webpack_require__(/*! ./../../package.json */ "./node_modules/axios/package.json");
|
|
1703
|
+
|
|
1704
|
+
var validators = {};
|
|
1705
|
+
|
|
1706
|
+
// eslint-disable-next-line func-names
|
|
1707
|
+
['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach(function(type, i) {
|
|
1708
|
+
validators[type] = function validator(thing) {
|
|
1709
|
+
return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;
|
|
1710
|
+
};
|
|
1711
|
+
});
|
|
1712
|
+
|
|
1713
|
+
var deprecatedWarnings = {};
|
|
1714
|
+
var currentVerArr = pkg.version.split('.');
|
|
1715
|
+
|
|
1716
|
+
/**
|
|
1717
|
+
* Compare package versions
|
|
1718
|
+
* @param {string} version
|
|
1719
|
+
* @param {string?} thanVersion
|
|
1720
|
+
* @returns {boolean}
|
|
1721
|
+
*/
|
|
1722
|
+
function isOlderVersion(version, thanVersion) {
|
|
1723
|
+
var pkgVersionArr = thanVersion ? thanVersion.split('.') : currentVerArr;
|
|
1724
|
+
var destVer = version.split('.');
|
|
1725
|
+
for (var i = 0; i < 3; i++) {
|
|
1726
|
+
if (pkgVersionArr[i] > destVer[i]) {
|
|
1727
|
+
return true;
|
|
1728
|
+
} else if (pkgVersionArr[i] < destVer[i]) {
|
|
1729
|
+
return false;
|
|
1730
|
+
}
|
|
1731
|
+
}
|
|
1732
|
+
return false;
|
|
1733
|
+
}
|
|
1734
|
+
|
|
1735
|
+
/**
|
|
1736
|
+
* Transitional option validator
|
|
1737
|
+
* @param {function|boolean?} validator
|
|
1738
|
+
* @param {string?} version
|
|
1739
|
+
* @param {string} message
|
|
1740
|
+
* @returns {function}
|
|
1741
|
+
*/
|
|
1742
|
+
validators.transitional = function transitional(validator, version, message) {
|
|
1743
|
+
var isDeprecated = version && isOlderVersion(version);
|
|
1744
|
+
|
|
1745
|
+
function formatMessage(opt, desc) {
|
|
1746
|
+
return '[Axios v' + pkg.version + '] Transitional option \'' + opt + '\'' + desc + (message ? '. ' + message : '');
|
|
1747
|
+
}
|
|
1748
|
+
|
|
1749
|
+
// eslint-disable-next-line func-names
|
|
1750
|
+
return function(value, opt, opts) {
|
|
1751
|
+
if (validator === false) {
|
|
1752
|
+
throw new Error(formatMessage(opt, ' has been removed in ' + version));
|
|
1753
|
+
}
|
|
1754
|
+
|
|
1755
|
+
if (isDeprecated && !deprecatedWarnings[opt]) {
|
|
1756
|
+
deprecatedWarnings[opt] = true;
|
|
1757
|
+
// eslint-disable-next-line no-console
|
|
1758
|
+
console.warn(
|
|
1759
|
+
formatMessage(
|
|
1760
|
+
opt,
|
|
1761
|
+
' has been deprecated since v' + version + ' and will be removed in the near future'
|
|
1762
|
+
)
|
|
1763
|
+
);
|
|
1764
|
+
}
|
|
1765
|
+
|
|
1766
|
+
return validator ? validator(value, opt, opts) : true;
|
|
1767
|
+
};
|
|
1768
|
+
};
|
|
1769
|
+
|
|
1770
|
+
/**
|
|
1771
|
+
* Assert object's properties type
|
|
1772
|
+
* @param {object} options
|
|
1773
|
+
* @param {object} schema
|
|
1774
|
+
* @param {boolean?} allowUnknown
|
|
1775
|
+
*/
|
|
1776
|
+
|
|
1777
|
+
function assertOptions(options, schema, allowUnknown) {
|
|
1778
|
+
if (typeof options !== 'object') {
|
|
1779
|
+
throw new TypeError('options must be an object');
|
|
1780
|
+
}
|
|
1781
|
+
var keys = Object.keys(options);
|
|
1782
|
+
var i = keys.length;
|
|
1783
|
+
while (i-- > 0) {
|
|
1784
|
+
var opt = keys[i];
|
|
1785
|
+
var validator = schema[opt];
|
|
1786
|
+
if (validator) {
|
|
1787
|
+
var value = options[opt];
|
|
1788
|
+
var result = value === undefined || validator(value, opt, options);
|
|
1789
|
+
if (result !== true) {
|
|
1790
|
+
throw new TypeError('option ' + opt + ' must be ' + result);
|
|
1791
|
+
}
|
|
1792
|
+
continue;
|
|
1793
|
+
}
|
|
1794
|
+
if (allowUnknown !== true) {
|
|
1795
|
+
throw Error('Unknown option ' + opt);
|
|
1796
|
+
}
|
|
1797
|
+
}
|
|
1798
|
+
}
|
|
1799
|
+
|
|
1800
|
+
module.exports = {
|
|
1801
|
+
isOlderVersion: isOlderVersion,
|
|
1802
|
+
assertOptions: assertOptions,
|
|
1803
|
+
validators: validators
|
|
1804
|
+
};
|
|
1805
|
+
|
|
1806
|
+
|
|
1584
1807
|
/***/ }),
|
|
1585
1808
|
|
|
1586
1809
|
/***/ "./node_modules/axios/lib/utils.js":
|
|
@@ -1595,8 +1818,6 @@ module.exports = function spread(callback) {
|
|
|
1595
1818
|
|
|
1596
1819
|
var bind = __webpack_require__(/*! ./helpers/bind */ "./node_modules/axios/lib/helpers/bind.js");
|
|
1597
1820
|
|
|
1598
|
-
/*global toString:true*/
|
|
1599
|
-
|
|
1600
1821
|
// utils is a library of generic helper functions non-specific to axios
|
|
1601
1822
|
|
|
1602
1823
|
var toString = Object.prototype.toString;
|
|
@@ -1780,7 +2001,7 @@ function isURLSearchParams(val) {
|
|
|
1780
2001
|
* @returns {String} The String freed of excess whitespace
|
|
1781
2002
|
*/
|
|
1782
2003
|
function trim(str) {
|
|
1783
|
-
return str.
|
|
2004
|
+
return str.trim ? str.trim() : str.replace(/^\s+|\s+$/g, '');
|
|
1784
2005
|
}
|
|
1785
2006
|
|
|
1786
2007
|
/**
|
|
@@ -1944,6 +2165,17 @@ module.exports = {
|
|
|
1944
2165
|
};
|
|
1945
2166
|
|
|
1946
2167
|
|
|
2168
|
+
/***/ }),
|
|
2169
|
+
|
|
2170
|
+
/***/ "./node_modules/axios/package.json":
|
|
2171
|
+
/*!*****************************************!*\
|
|
2172
|
+
!*** ./node_modules/axios/package.json ***!
|
|
2173
|
+
\*****************************************/
|
|
2174
|
+
/*! exports provided: _args, _from, _id, _inBundle, _integrity, _location, _phantomChildren, _requested, _requiredBy, _resolved, _spec, _where, author, browser, bugs, bundlesize, dependencies, description, devDependencies, homepage, jsdelivr, keywords, license, main, name, repository, scripts, typings, unpkg, version, default */
|
|
2175
|
+
/***/ (function(module) {
|
|
2176
|
+
|
|
2177
|
+
module.exports = JSON.parse("{\"_args\":[[\"axios@0.21.4\",\"/home/runner/work/omnichannel-sdk/omnichannel-sdk\"]],\"_from\":\"axios@0.21.4\",\"_id\":\"axios@0.21.4\",\"_inBundle\":false,\"_integrity\":\"sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==\",\"_location\":\"/axios\",\"_phantomChildren\":{},\"_requested\":{\"type\":\"version\",\"registry\":true,\"raw\":\"axios@0.21.4\",\"name\":\"axios\",\"escapedName\":\"axios\",\"rawSpec\":\"0.21.4\",\"saveSpec\":null,\"fetchSpec\":\"0.21.4\"},\"_requiredBy\":[\"/\"],\"_resolved\":\"https://registry.npmjs.org/axios/-/axios-0.21.4.tgz\",\"_spec\":\"0.21.4\",\"_where\":\"/home/runner/work/omnichannel-sdk/omnichannel-sdk\",\"author\":{\"name\":\"Matt Zabriskie\"},\"browser\":{\"./lib/adapters/http.js\":\"./lib/adapters/xhr.js\"},\"bugs\":{\"url\":\"https://github.com/axios/axios/issues\"},\"bundlesize\":[{\"path\":\"./dist/axios.min.js\",\"threshold\":\"5kB\"}],\"dependencies\":{\"follow-redirects\":\"^1.14.0\"},\"description\":\"Promise based HTTP client for the browser and node.js\",\"devDependencies\":{\"coveralls\":\"^3.0.0\",\"es6-promise\":\"^4.2.4\",\"grunt\":\"^1.3.0\",\"grunt-banner\":\"^0.6.0\",\"grunt-cli\":\"^1.2.0\",\"grunt-contrib-clean\":\"^1.1.0\",\"grunt-contrib-watch\":\"^1.0.0\",\"grunt-eslint\":\"^23.0.0\",\"grunt-karma\":\"^4.0.0\",\"grunt-mocha-test\":\"^0.13.3\",\"grunt-ts\":\"^6.0.0-beta.19\",\"grunt-webpack\":\"^4.0.2\",\"istanbul-instrumenter-loader\":\"^1.0.0\",\"jasmine-core\":\"^2.4.1\",\"karma\":\"^6.3.2\",\"karma-chrome-launcher\":\"^3.1.0\",\"karma-firefox-launcher\":\"^2.1.0\",\"karma-jasmine\":\"^1.1.1\",\"karma-jasmine-ajax\":\"^0.1.13\",\"karma-safari-launcher\":\"^1.0.0\",\"karma-sauce-launcher\":\"^4.3.6\",\"karma-sinon\":\"^1.0.5\",\"karma-sourcemap-loader\":\"^0.3.8\",\"karma-webpack\":\"^4.0.2\",\"load-grunt-tasks\":\"^3.5.2\",\"minimist\":\"^1.2.0\",\"mocha\":\"^8.2.1\",\"sinon\":\"^4.5.0\",\"terser-webpack-plugin\":\"^4.2.3\",\"typescript\":\"^4.0.5\",\"url-search-params\":\"^0.10.0\",\"webpack\":\"^4.44.2\",\"webpack-dev-server\":\"^3.11.0\"},\"homepage\":\"https://axios-http.com\",\"jsdelivr\":\"dist/axios.min.js\",\"keywords\":[\"xhr\",\"http\",\"ajax\",\"promise\",\"node\"],\"license\":\"MIT\",\"main\":\"index.js\",\"name\":\"axios\",\"repository\":{\"type\":\"git\",\"url\":\"git+https://github.com/axios/axios.git\"},\"scripts\":{\"build\":\"NODE_ENV=production grunt build\",\"coveralls\":\"cat coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js\",\"examples\":\"node ./examples/server.js\",\"fix\":\"eslint --fix lib/**/*.js\",\"postversion\":\"git push && git push --tags\",\"preversion\":\"npm test\",\"start\":\"node ./sandbox/server.js\",\"test\":\"grunt test\",\"version\":\"npm run build && grunt version && git add -A dist && git add CHANGELOG.md bower.json package.json\"},\"typings\":\"./index.d.ts\",\"unpkg\":\"dist/axios.min.js\",\"version\":\"0.21.4\"}");
|
|
2178
|
+
|
|
1947
2179
|
/***/ }),
|
|
1948
2180
|
|
|
1949
2181
|
/***/ "./node_modules/process/browser.js":
|
|
@@ -2180,7 +2412,7 @@ module.exports = g;
|
|
|
2180
2412
|
/***/ (function(module, exports, __webpack_require__) {
|
|
2181
2413
|
|
|
2182
2414
|
"use strict";
|
|
2183
|
-
var cov_1r6jlvxtwc=function(){var path="/home/runner/work/omnichannel-sdk/omnichannel-sdk/src/Common/Constants.ts",hash="
|
|
2415
|
+
var cov_1r6jlvxtwc=function(){var path="/home/runner/work/omnichannel-sdk/omnichannel-sdk/src/Common/Constants.ts",hash="da42173a970070e6cbb22589c55eb160af1f9e1f",Function=function(){}.constructor,global=new Function('return this')(),gcv="__coverage__",coverageData={path:"/home/runner/work/omnichannel-sdk/omnichannel-sdk/src/Common/Constants.ts",statementMap:{"0":{start:{line:2,column:0},end:{line:2,column:62}},"1":{start:{line:3,column:14},end:{line:3,column:32}},"2":{start:{line:4,column:31},end:{line:22,column:3}},"3":{start:{line:7,column:4},end:{line:7,column:91}},"4":{start:{line:8,column:4},end:{line:10,column:6}},"5":{start:{line:11,column:4},end:{line:14,column:6}},"6":{start:{line:15,column:4},end:{line:15,column:55}},"7":{start:{line:16,column:4},end:{line:16,column:38}},"8":{start:{line:17,column:4},end:{line:17,column:40}},"9":{start:{line:18,column:4},end:{line:18,column:63}},"10":{start:{line:19,column:4},end:{line:19,column:47}},"11":{start:{line:20,column:4},end:{line:20,column:58}},"12":{start:{line:21,column:4},end:{line:21,column:21}},"13":{start:{line:23,column:0},end:{line:23,column:28}}},fnMap:{"0":{name:"(anonymous_0)",decl:{start:{line:4,column:31},end:{line:4,column:32}},loc:{start:{line:4,column:43},end:{line:22,column:1}},line:4},"1":{name:"Constants",decl:{start:{line:5,column:13},end:{line:5,column:22}},loc:{start:{line:5,column:25},end:{line:6,column:5}},line:5}},branchMap:{},s:{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0},f:{"0":0,"1":0},b:{},inputSourceMap:{version:3,file:"/home/runner/work/omnichannel-sdk/omnichannel-sdk/src/Common/Constants.ts",sourceRoot:"",sources:["/home/runner/work/omnichannel-sdk/omnichannel-sdk/src/Common/Constants.ts"],names:[],mappings:";;AAAA,iCAAoC;AAEpC;IAAA;IAeA,CAAC;IAdwB,oDAA0C,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;IAC7E,wBAAc,GAAG;QACtC,cAAc,EAAE,kBAAkB;KACnC,CAAC;IACqB,4BAAkB,GAAG;QAC1C,eAAe,EAAE,qCAAqC;QACtD,iBAAiB,EAAE,UAAU;KAC9B,CAAC;IACqB,0BAAgB,GAAG,iBAAS,CAAC,GAAG,CAAC;IACjC,uBAAa,GAAG,OAAO,CAAC;IACxB,6BAAmB,GAAG,GAAG,CAAC;IAC1B,6BAAmB,GAAG,CAAC,wBAAwB,CAAC,CAAC;IACjD,uBAAa,GAAG,gBAAgB,CAAC;IACjC,6BAAmB,GAAG,qBAAqB,CAAC;IACrE,gBAAC;CAAA,AAfD,IAeC;kBAfoB,SAAS",sourcesContent:["import { ChannelId } from \"./Enums\";\n\nexport default class Constants {\n public static readonly requiredOmnichannelConfigurationParameters = [\"orgUrl\", \"orgId\", \"widgetId\"];\n public static readonly defaultHeaders = {\n \"Content-Type\": \"application/json\"\n };\n public static readonly bypassCacheHeaders = {\n \"Cache-Control\": \"no-store, must-revalidate, no-cache\",\n \"X-Cache-Control\": \"no-store\"\n };\n public static readonly defaultChannelId = ChannelId.LCW;\n public static readonly defaultLocale = \"en-us\";\n public static readonly noContentStatusCode = 204;\n public static readonly sensitiveProperties = [\"AuthenticatedUserToken\"];\n public static readonly transactionid = \"transaction-id\";\n public static readonly customerDisplayName = \"customerDisplayName\";\n}\n"]},_coverageSchema:"332fd63041d2c1bcb487cc26dd0d5f7d97098a6c"},coverage=global[gcv]||(global[gcv]={});if(coverage[path]&&coverage[path].hash===hash){return coverage[path];}coverageData.hash=hash;return coverage[path]=coverageData;}();cov_1r6jlvxtwc.s[0]++;Object.defineProperty(exports,"__esModule",{value:true});var Enums_1=(cov_1r6jlvxtwc.s[1]++,__webpack_require__(/*! ./Enums */ "./src/Common/Enums.ts"));var Constants=(cov_1r6jlvxtwc.s[2]++,function(){cov_1r6jlvxtwc.f[0]++;function Constants(){cov_1r6jlvxtwc.f[1]++;}cov_1r6jlvxtwc.s[3]++;Constants.requiredOmnichannelConfigurationParameters=["orgUrl","orgId","widgetId"];cov_1r6jlvxtwc.s[4]++;Constants.defaultHeaders={"Content-Type":"application/json"};cov_1r6jlvxtwc.s[5]++;Constants.bypassCacheHeaders={"Cache-Control":"no-store, must-revalidate, no-cache","X-Cache-Control":"no-store"};cov_1r6jlvxtwc.s[6]++;Constants.defaultChannelId=Enums_1.ChannelId.LCW;cov_1r6jlvxtwc.s[7]++;Constants.defaultLocale="en-us";cov_1r6jlvxtwc.s[8]++;Constants.noContentStatusCode=204;cov_1r6jlvxtwc.s[9]++;Constants.sensitiveProperties=["AuthenticatedUserToken"];cov_1r6jlvxtwc.s[10]++;Constants.transactionid="transaction-id";cov_1r6jlvxtwc.s[11]++;Constants.customerDisplayName="customerDisplayName";cov_1r6jlvxtwc.s[12]++;return Constants;}());cov_1r6jlvxtwc.s[13]++;exports.default=Constants;
|
|
2184
2416
|
|
|
2185
2417
|
/***/ }),
|
|
2186
2418
|
|
|
@@ -2276,7 +2508,7 @@ var cov_aokbwv4fe=function(){var path="/home/runner/work/omnichannel-sdk/omnicha
|
|
|
2276
2508
|
/***/ (function(module, exports, __webpack_require__) {
|
|
2277
2509
|
|
|
2278
2510
|
"use strict";
|
|
2279
|
-
var cov_2g5j0a6fdf=function(){var path="/home/runner/work/omnichannel-sdk/omnichannel-sdk/src/SDK.ts",hash="3426b73a4fff8aaba937f1cab1337f7234603336",Function=function(){}.constructor,global=new Function('return this')(),gcv="__coverage__",coverageData={path:"/home/runner/work/omnichannel-sdk/omnichannel-sdk/src/SDK.ts",statementMap:{"0":{start:{line:2,column:15},end:{line:12,column:1}},"1":{start:{line:3,column:4},end:{line:10,column:6}},"2":{start:{line:4,column:8},end:{line:8,column:9}},"3":{start:{line:5,column:12},end:{line:5,column:29}},"4":{start:{line:6,column:12},end:{line:7,column:28}},"5":{start:{line:6,column:29},end:{line:7,column:28}},"6":{start:{line:7,column:16},end:{line:7,column:28}},"7":{start:{line:9,column:8},end:{line:9,column:17}},"8":{start:{line:11,column:4},end:{line:11,column:43}},"9":{start:{line:13,column:16},end:{line:21,column:1}},"10":{start:{line:14,column:28},end:{line:14,column:110}},"11":{start:{line:14,column:91},end:{line:14,column:106}},"12":{start:{line:15,column:4},end:{line:20,column:7}},"13":{start:{line:16,column:36},end:{line:16,column:97}},"14":{start:{line:16,column:42},end:{line:16,column:70}},"15":{start:{line:16,column:85},end:{line:16,column:95}},"16":{start:{line:17,column:35},end:{line:17,column:100}},"17":{start:{line:17,column:41},end:{line:17,column:73}},"18":{start:{line:17,column:88},end:{line:17,column:98}},"19":{start:{line:18,column:32},end:{line:18,column:116}},"20":{start:{line:19,column:8},end:{line:19,column:78}},"21":{start:{line:22,column:18},end:{line:48,column:1}},"22":{start:{line:23,column:12},end:{line:23,column:104}},"23":{start:{line:23,column:43},end:{line:23,column:68}},"24":{start:{line:23,column:57},end:{line:23,column:68}},"25":{start:{line:23,column:69},end:{line:23,column:81}},"26":{start:{line:24,column:4},end:{line:24,column:157}},"27":{start:{line:24,column:138},end:{line:24,column:150}},"28":{start:{line:25,column:23},end:{line:25,column:68}},"29":{start:{line:25,column:45},end:{line:25,column:65}},"30":{start:{line:27,column:8},end:{line:27,column:70}},"31":{start:{line:27,column:15},end:{line:27,column:70}},"32":{start:{line:28,column:8},end:{line:45,column:66}},"33":{start:{line:28,column:18},end:{line:45,column:66}},"34":{start:{line:29,column:12},end:{line:29,column:169}},"35":{start:{line:29,column:160},end:{line:29,column:169}},"36":{start:{line:30,column:12},end:{line:30,column:52}},"37":{start:{line:30,column:26},end:{line:30,column:52}},"38":{start:{line:31,column:12},end:{line:43,column:13}},"39":{start:{line:32,column:32},end:{line:32,column:39}},"40":{start:{line:32,column:40},end:{line:32,column:46}},"41":{start:{line:33,column:24},end:{line:33,column:34}},"42":{start:{line:33,column:35},end:{line:33,column:72}},"43":{start:{line:34,column:24},end:{line:34,column:34}},"44":{start:{line:34,column:35},end:{line:34,column:45}},"45":{start:{line:34,column:46},end:{line:34,column:55}},"46":{start:{line:34,column:56},end:{line:34,column:65}},"47":{start:{line:35,column:24},end:{line:35,column:41}},"48":{start:{line:35,column:42},end:{line:35,column:55}},"49":{start:{line:35,column:56},end:{line:35,column:65}},"50":{start:{line:37,column:20},end:{line:37,column:128}},"51":{start:{line:37,column:110},end:{line:37,column:116}},"52":{start:{line:37,column:117},end:{line:37,column:126}},"53":{start:{line:38,column:20},end:{line:38,column:106}},"54":{start:{line:38,column:81},end:{line:38,column:97}},"55":{start:{line:38,column:98},end:{line:38,column:104}},"56":{start:{line:39,column:20},end:{line:39,column:89}},"57":{start:{line:39,column:57},end:{line:39,column:72}},"58":{start:{line:39,column:73},end:{line:39,column:80}},"59":{start:{line:39,column:81},end:{line:39,column:87}},"60":{start:{line:40,column:20},end:{line:40,column:87}},"61":{start:{line:40,column:47},end:{line:40,column:62}},"62":{start:{line:40,column:63},end:{line:40,column:78}},"63":{start:{line:40,column:79},end:{line:40,column:85}},"64":{start:{line:41,column:20},end:{line:41,column:42}},"65":{start:{line:41,column:30},end:{line:41,column:42}},"66":{start:{line:42,column:20},end:{line:42,column:33}},"67":{start:{line:42,column:34},end:{line:42,column:43}},"68":{start:{line:44,column:12},end:{line:44,column:39}},"69":{start:{line:45,column:22},end:{line:45,column:34}},"70":{start:{line:45,column:35},end:{line:45,column:41}},"71":{start:{line:45,column:54},end:{line:45,column:64}},"72":{start:{line:46,column:8},end:{line:46,column:35}},"73":{start:{line:46,column:23},end:{line:46,column:35}},"74":{start:{line:46,column:36},end:{line:46,column:89}},"75":{start:{line:49,column:0},end:{line:49,column:62}},"76":{start:{line:50,column:14},end:{line:50,column:39}},"77":{start:{line:51,column:14},end:{line:51,column:30}},"78":{start:{line:52,column:20},end:{line:52,column:50}},"79":{start:{line:53,column:18},end:{line:53,column:47}},"80":{start:{line:54,column:19},end:{line:54,column:48}},"81":{start:{line:55,column:16},end:{line:55,column:43}},"82":{start:{line:56,column:17},end:{line:56,column:44}},"83":{start:{line:57,column:14},end:{line:57,column:39}},"84":{start:{line:58,column:15},end:{line:58,column:40}},"85":{start:{line:59,column:29},end:{line:59,column:69}},"86":{start:{line:60,column:31},end:{line:60,column:73}},"87":{start:{line:61,column:14},end:{line:61,column:38}},"88":{start:{line:62,column:19},end:{line:62,column:48}},"89":{start:{line:63,column:13},end:{line:63,column:36}},"90":{start:{line:64,column:25},end:{line:1158,column:3}},"91":{start:{line:66,column:8},end:{line:66,column:83}},"92":{start:{line:66,column:40},end:{line:66,column:81}},"93":{start:{line:67,column:8},end:{line:67,column:65}},"94":{start:{line:68,column:8},end:{line:68,column:43}},"95":{start:{line:69,column:8},end:{line:69,column:29}},"96":{start:{line:71,column:8},end:{line:73,column:9}},"97":{start:{line:72,column:12},end:{line:72,column:58}},"98":{start:{line:75,column:8},end:{line:80,column:9}},"99":{start:{line:76,column:22},end:{line:76,column:28}},"100":{start:{line:77,column:12},end:{line:79,column:13}},"101":{start:{line:78,column:16},end:{line:78,column:77}},"102":{start:{line:82,column:24},end:{line:82,column:58}},"103":{start:{line:83,column:8},end:{line:85,column:9}},"104":{start:{line:84,column:12},end:{line:84,column:49}},"105":{start:{line:87,column:56},end:{line:87,column:93}},"106":{start:{line:88,column:8},end:{line:93,column:9}},"107":{start:{line:89,column:22},end:{line:89,column:28}},"108":{start:{line:90,column:12},end:{line:92,column:13}},"109":{start:{line:91,column:16},end:{line:91,column:85}},"110":{start:{line:94,column:8},end:{line:94,column:58}},"111":{start:{line:100,column:4},end:{line:138,column:6}},"112":{start:{line:101,column:8},end:{line:101,column:60}},"113":{start:{line:101,column:38},end:{line:101,column:58}},"114":{start:{line:102,column:8},end:{line:137,column:11}},"115":{start:{line:104,column:12},end:{line:136,column:15}},"116":{start:{line:105,column:16},end:{line:135,column:17}},"117":{start:{line:107,column:24},end:{line:107,column:54}},"118":{start:{line:108,column:24},end:{line:110,column:25}},"119":{start:{line:109,column:28},end:{line:109,column:166}},"120":{start:{line:111,column:24},end:{line:113,column:25}},"121":{start:{line:112,column:28},end:{line:112,column:56}},"122":{start:{line:114,column:24},end:{line:114,column:307}},"123":{start:{line:115,column:24},end:{line:115,column:65}},"124":{start:{line:116,column:24},end:{line:116,column:120}},"125":{start:{line:117,column:24},end:{line:117,column:37}},"126":{start:{line:118,column:24},end:{line:120,column:25}},"127":{start:{line:119,column:28},end:{line:119,column:110}},"128":{start:{line:121,column:24},end:{line:123,column:32}},"129":{start:{line:125,column:24},end:{line:125,column:45}},"130":{start:{line:126,column:24},end:{line:126,column:78}},"131":{start:{line:127,column:24},end:{line:127,column:45}},"132":{start:{line:128,column:24},end:{line:130,column:25}},"133":{start:{line:129,column:28},end:{line:129,column:72}},"134":{start:{line:131,column:24},end:{line:133,column:25}},"135":{start:{line:132,column:28},end:{line:132,column:310}},"136":{start:{line:134,column:24},end:{line:134,column:52}},"137":{start:{line:144,column:4},end:{line:207,column:6}},"138":{start:{line:145,column:8},end:{line:145,column:89}},"139":{start:{line:145,column:54},end:{line:145,column:87}},"140":{start:{line:146,column:8},end:{line:206,column:11}},"141":{start:{line:148,column:24},end:{line:148,column:28}},"142":{start:{line:149,column:12},end:{line:205,column:15}},"143":{start:{line:150,column:16},end:{line:150,column:46}},"144":{start:{line:151,column:16},end:{line:153,column:17}},"145":{start:{line:152,column:20},end:{line:152,column:164}},"146":{start:{line:154,column:16},end:{line:156,column:17}},"147":{start:{line:155,column:20},end:{line:155,column:48}},"148":{start:{line:157,column:16},end:{line:157,column:244}},"149":{start:{line:158,column:16},end:{line:158,column:57}},"150":{start:{line:159,column:16},end:{line:159,column:112}},"151":{start:{line:160,column:16},end:{line:160,column:147}},"152":{start:{line:161,column:16},end:{line:161,column:61}},"153":{start:{line:163,column:16},end:{line:166,column:17}},"154":{start:{line:164,column:20},end:{line:164,column:252}},"155":{start:{line:165,column:20},end:{line:165,column:110}},"156":{start:{line:168,column:16},end:{line:170,column:17}},"157":{start:{line:169,column:20},end:{line:169,column:50}},"158":{start:{line:171,column:16},end:{line:171,column:84}},"159":{start:{line:172,column:16},end:{line:176,column:18}},"160":{start:{line:177,column:16},end:{line:204,column:28}},"161":{start:{line:177,column:79},end:{line:204,column:23}},"162":{start:{line:179,column:24},end:{line:203,column:27}},"163":{start:{line:180,column:28},end:{line:202,column:29}},"164":{start:{line:182,column:36},end:{line:182,column:62}},"165":{start:{line:183,column:36},end:{line:183,column:81}},"166":{start:{line:185,column:36},end:{line:185,column:57}},"167":{start:{line:186,column:36},end:{line:186,column:90}},"168":{start:{line:187,column:36},end:{line:187,column:57}},"169":{start:{line:188,column:36},end:{line:190,column:37}},"170":{start:{line:189,column:40},end:{line:189,column:323}},"171":{start:{line:191,column:36},end:{line:191,column:50}},"172":{start:{line:192,column:36},end:{line:192,column:60}},"173":{start:{line:194,column:36},end:{line:194,column:56}},"174":{start:{line:195,column:36},end:{line:195,column:90}},"175":{start:{line:196,column:36},end:{line:198,column:37}},"176":{start:{line:197,column:40},end:{line:197,column:264}},"177":{start:{line:199,column:36},end:{line:199,column:45}},"178":{start:{line:200,column:36},end:{line:200,column:60}},"179":{start:{line:201,column:40},end:{line:201,column:62}},"180":{start:{line:213,column:4},end:{line:308,column:6}},"181":{start:{line:214,column:8},end:{line:214,column:87}},"182":{start:{line:214,column:53},end:{line:214,column:85}},"183":{start:{line:215,column:8},end:{line:215,column:68}},"184":{start:{line:215,column:44},end:{line:215,column:66}},"185":{start:{line:216,column:8},end:{line:307,column:11}},"186":{start:{line:218,column:24},end:{line:218,column:28}},"187":{start:{line:219,column:12},end:{line:306,column:15}},"188":{start:{line:220,column:16},end:{line:220,column:46}},"189":{start:{line:221,column:16},end:{line:221,column:221}},"190":{start:{line:222,column:16},end:{line:224,column:17}},"191":{start:{line:223,column:20},end:{line:223,column:163}},"192":{start:{line:225,column:16},end:{line:227,column:17}},"193":{start:{line:226,column:20},end:{line:226,column:65}},"194":{start:{line:228,column:16},end:{line:230,column:17}},"195":{start:{line:229,column:20},end:{line:229,column:48}},"196":{start:{line:231,column:16},end:{line:231,column:61}},"197":{start:{line:232,column:16},end:{line:232,column:237}},"198":{start:{line:233,column:16},end:{line:245,column:17}},"199":{start:{line:234,column:20},end:{line:234,column:243}},"200":{start:{line:235,column:20},end:{line:238,column:21}},"201":{start:{line:236,column:24},end:{line:236,column:251}},"202":{start:{line:237,column:24},end:{line:237,column:114}},"203":{start:{line:241,column:20},end:{line:244,column:21}},"204":{start:{line:242,column:24},end:{line:242,column:249}},"205":{start:{line:243,column:24},end:{line:243,column:114}},"206":{start:{line:246,column:16},end:{line:248,column:17}},"207":{start:{line:247,column:20},end:{line:247,column:50}},"208":{start:{line:249,column:16},end:{line:249,column:84}},"209":{start:{line:250,column:16},end:{line:254,column:18}},"210":{start:{line:255,column:16},end:{line:255,column:57}},"211":{start:{line:256,column:16},end:{line:256,column:112}},"212":{start:{line:257,column:16},end:{line:305,column:28}},"213":{start:{line:257,column:79},end:{line:305,column:23}},"214":{start:{line:259,column:36},end:{line:259,column:40}},"215":{start:{line:260,column:24},end:{line:304,column:27}},"216":{start:{line:261,column:28},end:{line:303,column:29}},"217":{start:{line:263,column:36},end:{line:263,column:62}},"218":{start:{line:264,column:36},end:{line:264,column:81}},"219":{start:{line:266,column:36},end:{line:266,column:57}},"220":{start:{line:267,column:36},end:{line:267,column:90}},"221":{start:{line:268,column:36},end:{line:268,column:57}},"222":{start:{line:270,column:36},end:{line:277,column:37}},"223":{start:{line:271,column:40},end:{line:271,column:67}},"224":{start:{line:272,column:40},end:{line:274,column:41}},"225":{start:{line:273,column:44},end:{line:273,column:326}},"226":{start:{line:275,column:40},end:{line:275,column:54}},"227":{start:{line:276,column:40},end:{line:276,column:62}},"228":{start:{line:279,column:36},end:{line:282,column:37}},"229":{start:{line:280,column:40},end:{line:280,column:57}},"230":{start:{line:281,column:40},end:{line:281,column:62}},"231":{start:{line:283,column:36},end:{line:283,column:60}},"232":{start:{line:285,column:36},end:{line:285,column:56}},"233":{start:{line:286,column:36},end:{line:286,column:90}},"234":{start:{line:287,column:36},end:{line:289,column:37}},"235":{start:{line:288,column:40},end:{line:288,column:263}},"236":{start:{line:290,column:36},end:{line:290,column:52}},"237":{start:{line:291,column:36},end:{line:291,column:58}},"238":{start:{line:294,column:36},end:{line:297,column:37}},"239":{start:{line:295,column:40},end:{line:295,column:163}},"240":{start:{line:296,column:40},end:{line:296,column:62}},"241":{start:{line:299,column:36},end:{line:301,column:99}},"242":{start:{line:300,column:40},end:{line:300,column:227}},"243":{start:{line:300,column:148},end:{line:300,column:173}},"244":{start:{line:300,column:202},end:{line:300,column:223}},"245":{start:{line:302,column:36},end:{line:302,column:58}},"246":{start:{line:313,column:4},end:{line:368,column:6}},"247":{start:{line:314,column:8},end:{line:367,column:11}},"248":{start:{line:316,column:24},end:{line:316,column:28}},"249":{start:{line:317,column:12},end:{line:366,column:15}},"250":{start:{line:318,column:16},end:{line:318,column:46}},"251":{start:{line:319,column:16},end:{line:319,column:89}},"252":{start:{line:320,column:16},end:{line:322,column:17}},"253":{start:{line:321,column:20},end:{line:321,column:147}},"254":{start:{line:323,column:16},end:{line:323,column:330}},"255":{start:{line:324,column:16},end:{line:324,column:61}},"256":{start:{line:325,column:16},end:{line:325,column:106}},"257":{start:{line:326,column:16},end:{line:330,column:18}},"258":{start:{line:331,column:16},end:{line:331,column:57}},"259":{start:{line:332,column:16},end:{line:365,column:28}},"260":{start:{line:332,column:79},end:{line:365,column:23}},"261":{start:{line:334,column:24},end:{line:364,column:27}},"262":{start:{line:335,column:28},end:{line:363,column:29}},"263":{start:{line:337,column:36},end:{line:337,column:62}},"264":{start:{line:338,column:36},end:{line:338,column:81}},"265":{start:{line:340,column:36},end:{line:340,column:57}},"266":{start:{line:341,column:36},end:{line:341,column:90}},"267":{start:{line:342,column:36},end:{line:342,column:57}},"268":{start:{line:344,column:36},end:{line:350,column:37}},"269":{start:{line:345,column:40},end:{line:347,column:41}},"270":{start:{line:346,column:44},end:{line:346,column:355}},"271":{start:{line:348,column:40},end:{line:348,column:54}},"272":{start:{line:349,column:40},end:{line:349,column:62}},"273":{start:{line:352,column:36},end:{line:352,column:46}},"274":{start:{line:353,column:36},end:{line:353,column:58}},"275":{start:{line:355,column:36},end:{line:355,column:56}},"276":{start:{line:356,column:36},end:{line:356,column:90}},"277":{start:{line:357,column:36},end:{line:359,column:37}},"278":{start:{line:358,column:40},end:{line:358,column:250}},"279":{start:{line:360,column:36},end:{line:360,column:52}},"280":{start:{line:361,column:36},end:{line:361,column:58}},"281":{start:{line:362,column:40},end:{line:362,column:62}},"282":{start:{line:373,column:4},end:{line:428,column:6}},"283":{start:{line:374,column:8},end:{line:427,column:11}},"284":{start:{line:376,column:24},end:{line:376,column:28}},"285":{start:{line:377,column:12},end:{line:426,column:15}},"286":{start:{line:378,column:16},end:{line:378,column:46}},"287":{start:{line:379,column:16},end:{line:381,column:17}},"288":{start:{line:380,column:20},end:{line:380,column:154}},"289":{start:{line:382,column:16},end:{line:382,column:248}},"290":{start:{line:383,column:16},end:{line:383,column:61}},"291":{start:{line:384,column:16},end:{line:388,column:18}},"292":{start:{line:389,column:16},end:{line:389,column:57}},"293":{start:{line:390,column:16},end:{line:425,column:28}},"294":{start:{line:390,column:79},end:{line:425,column:23}},"295":{start:{line:392,column:24},end:{line:424,column:27}},"296":{start:{line:393,column:28},end:{line:423,column:29}},"297":{start:{line:395,column:36},end:{line:395,column:62}},"298":{start:{line:396,column:36},end:{line:396,column:81}},"299":{start:{line:398,column:36},end:{line:398,column:57}},"300":{start:{line:399,column:36},end:{line:399,column:90}},"301":{start:{line:400,column:36},end:{line:400,column:57}},"302":{start:{line:401,column:36},end:{line:407,column:37}},"303":{start:{line:402,column:40},end:{line:404,column:41}},"304":{start:{line:403,column:44},end:{line:403,column:336}},"305":{start:{line:405,column:40},end:{line:405,column:54}},"306":{start:{line:406,column:40},end:{line:406,column:62}},"307":{start:{line:409,column:36},end:{line:411,column:37}},"308":{start:{line:410,column:40},end:{line:410,column:350}},"309":{start:{line:412,column:36},end:{line:412,column:46}},"310":{start:{line:413,column:36},end:{line:413,column:58}},"311":{start:{line:415,column:36},end:{line:415,column:56}},"312":{start:{line:416,column:36},end:{line:416,column:90}},"313":{start:{line:417,column:36},end:{line:419,column:37}},"314":{start:{line:418,column:40},end:{line:418,column:259}},"315":{start:{line:420,column:36},end:{line:420,column:52}},"316":{start:{line:421,column:36},end:{line:421,column:58}},"317":{start:{line:422,column:40},end:{line:422,column:62}},"318":{start:{line:434,column:4},end:{line:507,column:6}},"319":{start:{line:435,column:8},end:{line:435,column:97}},"320":{start:{line:435,column:58},end:{line:435,column:95}},"321":{start:{line:436,column:8},end:{line:506,column:11}},"322":{start:{line:438,column:24},end:{line:438,column:28}},"323":{start:{line:439,column:12},end:{line:505,column:15}},"324":{start:{line:440,column:16},end:{line:440,column:46}},"325":{start:{line:441,column:16},end:{line:443,column:17}},"326":{start:{line:442,column:20},end:{line:442,column:179}},"327":{start:{line:444,column:16},end:{line:444,column:256}},"328":{start:{line:445,column:16},end:{line:445,column:57}},"329":{start:{line:446,column:16},end:{line:446,column:112}},"330":{start:{line:447,column:16},end:{line:447,column:212}},"331":{start:{line:448,column:16},end:{line:448,column:61}},"332":{start:{line:449,column:16},end:{line:451,column:17}},"333":{start:{line:450,column:20},end:{line:450,column:110}},"334":{start:{line:452,column:16},end:{line:452,column:41}},"335":{start:{line:453,column:16},end:{line:455,column:17}},"336":{start:{line:454,column:20},end:{line:454,column:117}},"337":{start:{line:456,column:16},end:{line:461,column:17}},"338":{start:{line:457,column:20},end:{line:457,column:78}},"339":{start:{line:458,column:20},end:{line:458,column:74}},"340":{start:{line:459,column:20},end:{line:459,column:58}},"341":{start:{line:460,column:20},end:{line:460,column:58}},"342":{start:{line:462,column:16},end:{line:464,column:17}},"343":{start:{line:463,column:20},end:{line:463,column:68}},"344":{start:{line:466,column:16},end:{line:468,column:17}},"345":{start:{line:467,column:20},end:{line:467,column:114}},"346":{start:{line:469,column:16},end:{line:474,column:18}},"347":{start:{line:475,column:16},end:{line:504,column:28}},"348":{start:{line:475,column:79},end:{line:504,column:23}},"349":{start:{line:477,column:24},end:{line:503,column:27}},"350":{start:{line:478,column:28},end:{line:502,column:29}},"351":{start:{line:480,column:36},end:{line:480,column:62}},"352":{start:{line:481,column:36},end:{line:481,column:81}},"353":{start:{line:483,column:36},end:{line:483,column:57}},"354":{start:{line:484,column:36},end:{line:484,column:90}},"355":{start:{line:485,column:36},end:{line:485,column:59}},"356":{start:{line:486,column:36},end:{line:491,column:37}},"357":{start:{line:487,column:40},end:{line:489,column:41}},"358":{start:{line:488,column:44},end:{line:488,column:342}},"359":{start:{line:490,column:40},end:{line:490,column:56}},"360":{start:{line:492,column:36},end:{line:492,column:60}},"361":{start:{line:494,column:36},end:{line:494,column:56}},"362":{start:{line:495,column:36},end:{line:495,column:90}},"363":{start:{line:496,column:36},end:{line:498,column:37}},"364":{start:{line:497,column:40},end:{line:497,column:279}},"365":{start:{line:499,column:36},end:{line:499,column:52}},"366":{start:{line:500,column:36},end:{line:500,column:60}},"367":{start:{line:501,column:40},end:{line:501,column:62}},"368":{start:{line:513,column:4},end:{line:589,column:6}},"369":{start:{line:514,column:8},end:{line:514,column:85}},"370":{start:{line:514,column:52},end:{line:514,column:83}},"371":{start:{line:515,column:8},end:{line:588,column:11}},"372":{start:{line:517,column:24},end:{line:517,column:28}},"373":{start:{line:518,column:12},end:{line:587,column:15}},"374":{start:{line:519,column:16},end:{line:519,column:46}},"375":{start:{line:520,column:16},end:{line:522,column:17}},"376":{start:{line:521,column:20},end:{line:521,column:160}},"377":{start:{line:523,column:16},end:{line:523,column:57}},"378":{start:{line:524,column:16},end:{line:524,column:112}},"379":{start:{line:525,column:16},end:{line:525,column:247}},"380":{start:{line:526,column:16},end:{line:526,column:61}},"381":{start:{line:527,column:16},end:{line:527,column:236}},"382":{start:{line:528,column:16},end:{line:531,column:17}},"383":{start:{line:529,column:20},end:{line:529,column:244}},"384":{start:{line:530,column:20},end:{line:530,column:110}},"385":{start:{line:532,column:16},end:{line:534,column:17}},"386":{start:{line:533,column:20},end:{line:533,column:50}},"387":{start:{line:535,column:16},end:{line:535,column:84}},"388":{start:{line:536,column:16},end:{line:536,column:41}},"389":{start:{line:537,column:16},end:{line:539,column:17}},"390":{start:{line:538,column:20},end:{line:538,column:117}},"391":{start:{line:540,column:16},end:{line:545,column:17}},"392":{start:{line:541,column:20},end:{line:541,column:78}},"393":{start:{line:542,column:20},end:{line:542,column:74}},"394":{start:{line:543,column:20},end:{line:543,column:58}},"395":{start:{line:544,column:20},end:{line:544,column:58}},"396":{start:{line:547,column:16},end:{line:549,column:17}},"397":{start:{line:548,column:20},end:{line:548,column:68}},"398":{start:{line:551,column:16},end:{line:553,column:17}},"399":{start:{line:552,column:20},end:{line:552,column:114}},"400":{start:{line:554,column:16},end:{line:559,column:18}},"401":{start:{line:560,column:16},end:{line:586,column:28}},"402":{start:{line:560,column:79},end:{line:586,column:23}},"403":{start:{line:562,column:24},end:{line:585,column:27}},"404":{start:{line:563,column:28},end:{line:584,column:29}},"405":{start:{line:565,column:36},end:{line:565,column:62}},"406":{start:{line:566,column:36},end:{line:566,column:81}},"407":{start:{line:568,column:36},end:{line:568,column:57}},"408":{start:{line:569,column:36},end:{line:569,column:90}},"409":{start:{line:570,column:36},end:{line:572,column:37}},"410":{start:{line:571,column:40},end:{line:571,column:319}},"411":{start:{line:573,column:36},end:{line:573,column:46}},"412":{start:{line:574,column:36},end:{line:574,column:60}},"413":{start:{line:576,column:36},end:{line:576,column:56}},"414":{start:{line:577,column:36},end:{line:577,column:90}},"415":{start:{line:578,column:36},end:{line:580,column:37}},"416":{start:{line:579,column:40},end:{line:579,column:260}},"417":{start:{line:581,column:36},end:{line:581,column:52}},"418":{start:{line:582,column:36},end:{line:582,column:60}},"419":{start:{line:583,column:40},end:{line:583,column:62}},"420":{start:{line:595,column:4},end:{line:657,column:6}},"421":{start:{line:596,column:8},end:{line:596,column:87}},"422":{start:{line:596,column:53},end:{line:596,column:85}},"423":{start:{line:597,column:8},end:{line:656,column:11}},"424":{start:{line:599,column:24},end:{line:599,column:28}},"425":{start:{line:600,column:12},end:{line:655,column:15}},"426":{start:{line:601,column:16},end:{line:601,column:46}},"427":{start:{line:602,column:16},end:{line:604,column:17}},"428":{start:{line:603,column:20},end:{line:603,column:162}},"429":{start:{line:605,column:16},end:{line:605,column:295}},"430":{start:{line:606,column:16},end:{line:606,column:57}},"431":{start:{line:607,column:16},end:{line:607,column:112}},"432":{start:{line:608,column:16},end:{line:608,column:261}},"433":{start:{line:609,column:16},end:{line:609,column:61}},"434":{start:{line:610,column:16},end:{line:610,column:26}},"435":{start:{line:611,column:16},end:{line:611,column:37}},"436":{start:{line:612,column:16},end:{line:615,column:17}},"437":{start:{line:613,column:20},end:{line:613,column:303}},"438":{start:{line:614,column:20},end:{line:614,column:110}},"439":{start:{line:616,column:16},end:{line:618,column:17}},"440":{start:{line:617,column:20},end:{line:617,column:56}},"441":{start:{line:619,column:16},end:{line:621,column:17}},"442":{start:{line:620,column:20},end:{line:620,column:57}},"443":{start:{line:622,column:16},end:{line:627,column:18}},"444":{start:{line:628,column:16},end:{line:654,column:28}},"445":{start:{line:628,column:79},end:{line:654,column:23}},"446":{start:{line:630,column:24},end:{line:653,column:27}},"447":{start:{line:631,column:28},end:{line:652,column:29}},"448":{start:{line:633,column:36},end:{line:633,column:62}},"449":{start:{line:634,column:36},end:{line:634,column:81}},"450":{start:{line:636,column:36},end:{line:636,column:57}},"451":{start:{line:637,column:36},end:{line:637,column:90}},"452":{start:{line:638,column:36},end:{line:640,column:37}},"453":{start:{line:639,column:40},end:{line:639,column:321}},"454":{start:{line:641,column:36},end:{line:641,column:46}},"455":{start:{line:642,column:36},end:{line:642,column:60}},"456":{start:{line:644,column:36},end:{line:644,column:56}},"457":{start:{line:645,column:36},end:{line:645,column:90}},"458":{start:{line:646,column:36},end:{line:648,column:37}},"459":{start:{line:647,column:40},end:{line:647,column:262}},"460":{start:{line:649,column:36},end:{line:649,column:45}},"461":{start:{line:650,column:36},end:{line:650,column:60}},"462":{start:{line:651,column:40},end:{line:651,column:62}},"463":{start:{line:663,column:4},end:{line:718,column:6}},"464":{start:{line:665,column:8},end:{line:717,column:11}},"465":{start:{line:667,column:12},end:{line:716,column:15}},"466":{start:{line:668,column:16},end:{line:715,column:17}},"467":{start:{line:670,column:24},end:{line:670,column:54}},"468":{start:{line:671,column:24},end:{line:673,column:25}},"469":{start:{line:672,column:28},end:{line:672,column:192}},"470":{start:{line:674,column:24},end:{line:674,column:163}},"471":{start:{line:675,column:24},end:{line:675,column:331}},"472":{start:{line:676,column:24},end:{line:676,column:65}},"473":{start:{line:677,column:24},end:{line:677,column:120}},"474":{start:{line:678,column:24},end:{line:678,column:69}},"475":{start:{line:679,column:24},end:{line:681,column:25}},"476":{start:{line:680,column:28},end:{line:680,column:118}},"477":{start:{line:682,column:24},end:{line:686,column:26}},"478":{start:{line:687,column:24},end:{line:687,column:37}},"479":{start:{line:689,column:24},end:{line:689,column:50}},"480":{start:{line:690,column:24},end:{line:690,column:69}},"481":{start:{line:692,column:24},end:{line:692,column:45}},"482":{start:{line:693,column:24},end:{line:693,column:78}},"483":{start:{line:694,column:24},end:{line:701,column:25}},"484":{start:{line:695,column:28},end:{line:695,column:378}},"485":{start:{line:696,column:28},end:{line:696,column:82}},"486":{start:{line:699,column:28},end:{line:699,column:450}},"487":{start:{line:700,column:28},end:{line:700,column:163}},"488":{start:{line:702,column:24},end:{line:702,column:48}},"489":{start:{line:704,column:24},end:{line:704,column:44}},"490":{start:{line:705,column:24},end:{line:705,column:78}},"491":{start:{line:706,column:24},end:{line:706,column:315}},"492":{start:{line:707,column:24},end:{line:712,column:25}},"493":{start:{line:708,column:28},end:{line:708,column:71}},"494":{start:{line:711,column:28},end:{line:711,column:68}},"495":{start:{line:713,column:24},end:{line:713,column:48}},"496":{start:{line:714,column:28},end:{line:714,column:50}},"497":{start:{line:725,column:4},end:{line:779,column:6}},"498":{start:{line:726,column:8},end:{line:726,column:107}},"499":{start:{line:726,column:63},end:{line:726,column:105}},"500":{start:{line:727,column:8},end:{line:778,column:11}},"501":{start:{line:729,column:24},end:{line:729,column:28}},"502":{start:{line:730,column:12},end:{line:777,column:15}},"503":{start:{line:731,column:16},end:{line:731,column:46}},"504":{start:{line:732,column:16},end:{line:734,column:17}},"505":{start:{line:733,column:20},end:{line:733,column:167}},"506":{start:{line:735,column:16},end:{line:735,column:297}},"507":{start:{line:736,column:16},end:{line:736,column:57}},"508":{start:{line:737,column:16},end:{line:737,column:112}},"509":{start:{line:738,column:16},end:{line:738,column:101}},"510":{start:{line:739,column:16},end:{line:739,column:61}},"511":{start:{line:740,column:16},end:{line:743,column:17}},"512":{start:{line:741,column:20},end:{line:741,column:305}},"513":{start:{line:742,column:20},end:{line:742,column:110}},"514":{start:{line:744,column:16},end:{line:749,column:18}},"515":{start:{line:750,column:16},end:{line:776,column:28}},"516":{start:{line:750,column:79},end:{line:776,column:23}},"517":{start:{line:752,column:24},end:{line:775,column:27}},"518":{start:{line:753,column:28},end:{line:774,column:29}},"519":{start:{line:755,column:36},end:{line:755,column:62}},"520":{start:{line:756,column:36},end:{line:756,column:81}},"521":{start:{line:758,column:36},end:{line:758,column:57}},"522":{start:{line:759,column:36},end:{line:759,column:90}},"523":{start:{line:760,column:36},end:{line:762,column:37}},"524":{start:{line:761,column:40},end:{line:761,column:326}},"525":{start:{line:763,column:36},end:{line:763,column:46}},"526":{start:{line:764,column:36},end:{line:764,column:60}},"527":{start:{line:766,column:36},end:{line:766,column:56}},"528":{start:{line:767,column:36},end:{line:767,column:90}},"529":{start:{line:768,column:36},end:{line:770,column:37}},"530":{start:{line:769,column:40},end:{line:769,column:267}},"531":{start:{line:771,column:36},end:{line:771,column:45}},"532":{start:{line:772,column:36},end:{line:772,column:60}},"533":{start:{line:773,column:40},end:{line:773,column:62}},"534":{start:{line:786,column:4},end:{line:845,column:6}},"535":{start:{line:787,column:8},end:{line:787,column:101}},"536":{start:{line:787,column:60},end:{line:787,column:99}},"537":{start:{line:788,column:8},end:{line:844,column:11}},"538":{start:{line:790,column:24},end:{line:790,column:28}},"539":{start:{line:791,column:12},end:{line:843,column:15}},"540":{start:{line:792,column:16},end:{line:792,column:46}},"541":{start:{line:793,column:16},end:{line:795,column:17}},"542":{start:{line:794,column:20},end:{line:794,column:186}},"543":{start:{line:796,column:16},end:{line:796,column:201}},"544":{start:{line:797,column:16},end:{line:797,column:57}},"545":{start:{line:798,column:16},end:{line:798,column:112}},"546":{start:{line:799,column:16},end:{line:799,column:155}},"547":{start:{line:800,column:16},end:{line:800,column:61}},"548":{start:{line:801,column:16},end:{line:805,column:17}},"549":{start:{line:802,column:20},end:{line:802,column:209}},"550":{start:{line:803,column:20},end:{line:803,column:110}},"551":{start:{line:804,column:20},end:{line:804,column:115}},"552":{start:{line:806,column:16},end:{line:808,column:17}},"553":{start:{line:807,column:20},end:{line:807,column:84}},"554":{start:{line:809,column:16},end:{line:814,column:18}},"555":{start:{line:815,column:16},end:{line:842,column:28}},"556":{start:{line:815,column:79},end:{line:842,column:23}},"557":{start:{line:817,column:24},end:{line:841,column:27}},"558":{start:{line:818,column:28},end:{line:840,column:29}},"559":{start:{line:820,column:36},end:{line:820,column:62}},"560":{start:{line:821,column:36},end:{line:821,column:81}},"561":{start:{line:823,column:36},end:{line:823,column:57}},"562":{start:{line:824,column:36},end:{line:824,column:57}},"563":{start:{line:825,column:36},end:{line:825,column:90}},"564":{start:{line:826,column:36},end:{line:828,column:37}},"565":{start:{line:827,column:40},end:{line:827,column:315}},"566":{start:{line:829,column:36},end:{line:829,column:50}},"567":{start:{line:830,column:36},end:{line:830,column:60}},"568":{start:{line:832,column:36},end:{line:832,column:57}},"569":{start:{line:833,column:36},end:{line:833,column:90}},"570":{start:{line:834,column:36},end:{line:836,column:37}},"571":{start:{line:835,column:40},end:{line:835,column:257}},"572":{start:{line:837,column:36},end:{line:837,column:45}},"573":{start:{line:838,column:36},end:{line:838,column:60}},"574":{start:{line:839,column:40},end:{line:839,column:62}},"575":{start:{line:853,column:4},end:{line:915,column:6}},"576":{start:{line:854,column:8},end:{line:854,column:99}},"577":{start:{line:854,column:59},end:{line:854,column:97}},"578":{start:{line:855,column:8},end:{line:914,column:11}},"579":{start:{line:857,column:24},end:{line:857,column:28}},"580":{start:{line:858,column:12},end:{line:913,column:15}},"581":{start:{line:859,column:16},end:{line:859,column:46}},"582":{start:{line:860,column:16},end:{line:862,column:17}},"583":{start:{line:861,column:20},end:{line:861,column:173}},"584":{start:{line:863,column:16},end:{line:863,column:224}},"585":{start:{line:864,column:16},end:{line:864,column:57}},"586":{start:{line:865,column:16},end:{line:865,column:112}},"587":{start:{line:866,column:16},end:{line:866,column:179}},"588":{start:{line:867,column:16},end:{line:867,column:61}},"589":{start:{line:868,column:16},end:{line:868,column:111}},"590":{start:{line:869,column:16},end:{line:869,column:111}},"591":{start:{line:870,column:16},end:{line:870,column:80}},"592":{start:{line:871,column:16},end:{line:879,column:17}},"593":{start:{line:872,column:20},end:{line:872,column:230}},"594":{start:{line:873,column:20},end:{line:875,column:21}},"595":{start:{line:874,column:24},end:{line:874,column:238}},"596":{start:{line:877,column:21},end:{line:879,column:17}},"597":{start:{line:878,column:20},end:{line:878,column:232}},"598":{start:{line:880,column:16},end:{line:884,column:18}},"599":{start:{line:885,column:16},end:{line:912,column:28}},"600":{start:{line:885,column:79},end:{line:912,column:23}},"601":{start:{line:887,column:24},end:{line:911,column:27}},"602":{start:{line:888,column:28},end:{line:910,column:29}},"603":{start:{line:890,column:36},end:{line:890,column:62}},"604":{start:{line:891,column:36},end:{line:891,column:81}},"605":{start:{line:893,column:36},end:{line:893,column:57}},"606":{start:{line:894,column:36},end:{line:894,column:90}},"607":{start:{line:895,column:36},end:{line:895,column:57}},"608":{start:{line:896,column:36},end:{line:898,column:37}},"609":{start:{line:897,column:40},end:{line:897,column:332}},"610":{start:{line:899,column:36},end:{line:899,column:50}},"611":{start:{line:900,column:36},end:{line:900,column:60}},"612":{start:{line:902,column:36},end:{line:902,column:57}},"613":{start:{line:903,column:36},end:{line:903,column:90}},"614":{start:{line:904,column:36},end:{line:906,column:37}},"615":{start:{line:905,column:40},end:{line:905,column:274}},"616":{start:{line:907,column:36},end:{line:907,column:53}},"617":{start:{line:908,column:36},end:{line:908,column:60}},"618":{start:{line:909,column:40},end:{line:909,column:62}},"619":{start:{line:923,column:4},end:{line:979,column:6}},"620":{start:{line:924,column:8},end:{line:924,column:93}},"621":{start:{line:924,column:56},end:{line:924,column:91}},"622":{start:{line:925,column:8},end:{line:978,column:11}},"623":{start:{line:927,column:24},end:{line:927,column:28}},"624":{start:{line:928,column:12},end:{line:977,column:15}},"625":{start:{line:929,column:16},end:{line:929,column:46}},"626":{start:{line:930,column:16},end:{line:932,column:17}},"627":{start:{line:931,column:20},end:{line:931,column:168}},"628":{start:{line:933,column:16},end:{line:933,column:214}},"629":{start:{line:934,column:16},end:{line:934,column:57}},"630":{start:{line:935,column:16},end:{line:935,column:112}},"631":{start:{line:936,column:16},end:{line:936,column:94}},"632":{start:{line:937,column:16},end:{line:937,column:61}},"633":{start:{line:938,column:16},end:{line:938,column:111}},"634":{start:{line:939,column:16},end:{line:939,column:111}},"635":{start:{line:940,column:16},end:{line:940,column:80}},"636":{start:{line:941,column:16},end:{line:943,column:17}},"637":{start:{line:942,column:20},end:{line:942,column:222}},"638":{start:{line:944,column:16},end:{line:949,column:18}},"639":{start:{line:950,column:16},end:{line:976,column:28}},"640":{start:{line:950,column:79},end:{line:976,column:23}},"641":{start:{line:952,column:24},end:{line:975,column:27}},"642":{start:{line:953,column:28},end:{line:974,column:29}},"643":{start:{line:955,column:36},end:{line:955,column:62}},"644":{start:{line:956,column:36},end:{line:956,column:81}},"645":{start:{line:958,column:36},end:{line:958,column:57}},"646":{start:{line:959,column:36},end:{line:959,column:90}},"647":{start:{line:960,column:36},end:{line:962,column:37}},"648":{start:{line:961,column:40},end:{line:961,column:327}},"649":{start:{line:963,column:36},end:{line:963,column:46}},"650":{start:{line:964,column:36},end:{line:964,column:60}},"651":{start:{line:966,column:36},end:{line:966,column:57}},"652":{start:{line:967,column:36},end:{line:967,column:90}},"653":{start:{line:968,column:36},end:{line:970,column:37}},"654":{start:{line:969,column:40},end:{line:969,column:269}},"655":{start:{line:971,column:36},end:{line:971,column:45}},"656":{start:{line:972,column:36},end:{line:972,column:60}},"657":{start:{line:973,column:40},end:{line:973,column:62}},"658":{start:{line:984,column:4},end:{line:1037,column:6}},"659":{start:{line:985,column:8},end:{line:1036,column:11}},"660":{start:{line:987,column:24},end:{line:987,column:28}},"661":{start:{line:988,column:12},end:{line:1035,column:15}},"662":{start:{line:989,column:16},end:{line:989,column:46}},"663":{start:{line:990,column:16},end:{line:992,column:17}},"664":{start:{line:991,column:20},end:{line:991,column:171}},"665":{start:{line:993,column:16},end:{line:995,column:17}},"666":{start:{line:994,column:20},end:{line:994,column:48}},"667":{start:{line:996,column:16},end:{line:996,column:180}},"668":{start:{line:997,column:16},end:{line:997,column:57}},"669":{start:{line:998,column:16},end:{line:998,column:112}},"670":{start:{line:999,column:16},end:{line:999,column:61}},"671":{start:{line:1000,column:16},end:{line:1000,column:111}},"672":{start:{line:1001,column:16},end:{line:1001,column:80}},"673":{start:{line:1002,column:16},end:{line:1006,column:18}},"674":{start:{line:1007,column:16},end:{line:1034,column:28}},"675":{start:{line:1007,column:79},end:{line:1034,column:23}},"676":{start:{line:1009,column:24},end:{line:1033,column:27}},"677":{start:{line:1010,column:28},end:{line:1032,column:29}},"678":{start:{line:1012,column:36},end:{line:1012,column:62}},"679":{start:{line:1013,column:36},end:{line:1013,column:81}},"680":{start:{line:1015,column:36},end:{line:1015,column:57}},"681":{start:{line:1016,column:36},end:{line:1016,column:90}},"682":{start:{line:1017,column:36},end:{line:1017,column:57}},"683":{start:{line:1018,column:36},end:{line:1020,column:37}},"684":{start:{line:1019,column:40},end:{line:1019,column:330}},"685":{start:{line:1021,column:36},end:{line:1021,column:50}},"686":{start:{line:1022,column:36},end:{line:1022,column:60}},"687":{start:{line:1024,column:36},end:{line:1024,column:57}},"688":{start:{line:1025,column:36},end:{line:1025,column:90}},"689":{start:{line:1026,column:36},end:{line:1028,column:37}},"690":{start:{line:1027,column:40},end:{line:1027,column:272}},"691":{start:{line:1029,column:36},end:{line:1029,column:45}},"692":{start:{line:1030,column:36},end:{line:1030,column:60}},"693":{start:{line:1031,column:40},end:{line:1031,column:62}},"694":{start:{line:1044,column:4},end:{line:1095,column:6}},"695":{start:{line:1045,column:8},end:{line:1045,column:105}},"696":{start:{line:1045,column:62},end:{line:1045,column:103}},"697":{start:{line:1046,column:8},end:{line:1094,column:11}},"698":{start:{line:1048,column:12},end:{line:1093,column:15}},"699":{start:{line:1049,column:16},end:{line:1092,column:17}},"700":{start:{line:1051,column:24},end:{line:1051,column:54}},"701":{start:{line:1052,column:24},end:{line:1054,column:25}},"702":{start:{line:1053,column:28},end:{line:1053,column:204}},"703":{start:{line:1055,column:24},end:{line:1055,column:254}},"704":{start:{line:1056,column:24},end:{line:1056,column:65}},"705":{start:{line:1057,column:24},end:{line:1057,column:120}},"706":{start:{line:1058,column:24},end:{line:1058,column:108}},"707":{start:{line:1059,column:24},end:{line:1059,column:69}},"708":{start:{line:1060,column:24},end:{line:1060,column:119}},"709":{start:{line:1061,column:24},end:{line:1064,column:25}},"710":{start:{line:1062,column:28},end:{line:1062,column:118}},"711":{start:{line:1063,column:28},end:{line:1063,column:262}},"712":{start:{line:1065,column:24},end:{line:1065,column:89}},"713":{start:{line:1066,column:24},end:{line:1071,column:26}},"714":{start:{line:1072,column:24},end:{line:1072,column:37}},"715":{start:{line:1074,column:24},end:{line:1074,column:50}},"716":{start:{line:1075,column:24},end:{line:1075,column:69}},"717":{start:{line:1077,column:24},end:{line:1077,column:45}},"718":{start:{line:1078,column:24},end:{line:1078,column:78}},"719":{start:{line:1079,column:24},end:{line:1079,column:45}},"720":{start:{line:1080,column:24},end:{line:1082,column:25}},"721":{start:{line:1081,column:28},end:{line:1081,column:334}},"722":{start:{line:1083,column:24},end:{line:1083,column:48}},"723":{start:{line:1085,column:24},end:{line:1085,column:45}},"724":{start:{line:1086,column:24},end:{line:1086,column:78}},"725":{start:{line:1087,column:24},end:{line:1089,column:25}},"726":{start:{line:1088,column:28},end:{line:1088,column:285}},"727":{start:{line:1090,column:24},end:{line:1090,column:39}},"728":{start:{line:1091,column:28},end:{line:1091,column:50}},"729":{start:{line:1099,column:4},end:{line:1151,column:6}},"730":{start:{line:1100,column:8},end:{line:1150,column:11}},"731":{start:{line:1102,column:24},end:{line:1102,column:28}},"732":{start:{line:1103,column:12},end:{line:1149,column:15}},"733":{start:{line:1105,column:16},end:{line:1107,column:17}},"734":{start:{line:1106,column:20},end:{line:1106,column:61}},"735":{start:{line:1108,column:16},end:{line:1108,column:46}},"736":{start:{line:1109,column:16},end:{line:1111,column:17}},"737":{start:{line:1110,column:20},end:{line:1110,column:80}},"738":{start:{line:1112,column:16},end:{line:1112,column:145}},"739":{start:{line:1113,column:16},end:{line:1113,column:57}},"740":{start:{line:1114,column:16},end:{line:1114,column:61}},"741":{start:{line:1115,column:16},end:{line:1115,column:111}},"742":{start:{line:1116,column:16},end:{line:1120,column:18}},"743":{start:{line:1121,column:16},end:{line:1148,column:28}},"744":{start:{line:1121,column:79},end:{line:1148,column:23}},"745":{start:{line:1123,column:24},end:{line:1147,column:27}},"746":{start:{line:1124,column:28},end:{line:1146,column:29}},"747":{start:{line:1126,column:36},end:{line:1126,column:62}},"748":{start:{line:1127,column:36},end:{line:1127,column:81}},"749":{start:{line:1129,column:36},end:{line:1129,column:57}},"750":{start:{line:1130,column:36},end:{line:1130,column:90}},"751":{start:{line:1131,column:36},end:{line:1131,column:57}},"752":{start:{line:1132,column:36},end:{line:1134,column:37}},"753":{start:{line:1133,column:40},end:{line:1133,column:327}},"754":{start:{line:1135,column:36},end:{line:1135,column:46}},"755":{start:{line:1136,column:36},end:{line:1136,column:60}},"756":{start:{line:1138,column:36},end:{line:1138,column:57}},"757":{start:{line:1139,column:36},end:{line:1139,column:90}},"758":{start:{line:1140,column:36},end:{line:1142,column:37}},"759":{start:{line:1141,column:40},end:{line:1141,column:278}},"760":{start:{line:1143,column:36},end:{line:1143,column:53}},"761":{start:{line:1144,column:36},end:{line:1144,column:60}},"762":{start:{line:1145,column:40},end:{line:1145,column:62}},"763":{start:{line:1152,column:4},end:{line:1156,column:6}},"764":{start:{line:1157,column:4},end:{line:1157,column:15}},"765":{start:{line:1159,column:0},end:{line:1159,column:22}}},fnMap:{"0":{name:"(anonymous_0)",decl:{start:{line:2,column:42},end:{line:2,column:43}},loc:{start:{line:2,column:54},end:{line:12,column:1}},line:2},"1":{name:"(anonymous_1)",decl:{start:{line:3,column:32},end:{line:3,column:33}},loc:{start:{line:3,column:44},end:{line:10,column:5}},line:3},"2":{name:"(anonymous_2)",decl:{start:{line:13,column:44},end:{line:13,column:45}},loc:{start:{line:13,column:89},end:{line:21,column:1}},line:13},"3":{name:"adopt",decl:{start:{line:14,column:13},end:{line:14,column:18}},loc:{start:{line:14,column:26},end:{line:14,column:112}},line:14},"4":{name:"(anonymous_4)",decl:{start:{line:14,column:70},end:{line:14,column:71}},loc:{start:{line:14,column:89},end:{line:14,column:108}},line:14},"5":{name:"(anonymous_5)",decl:{start:{line:15,column:36},end:{line:15,column:37}},loc:{start:{line:15,column:63},end:{line:20,column:5}},line:15},"6":{name:"fulfilled",decl:{start:{line:16,column:17},end:{line:16,column:26}},loc:{start:{line:16,column:34},end:{line:16,column:99}},line:16},"7":{name:"rejected",decl:{start:{line:17,column:17},end:{line:17,column:25}},loc:{start:{line:17,column:33},end:{line:17,column:102}},line:17},"8":{name:"step",decl:{start:{line:18,column:17},end:{line:18,column:21}},loc:{start:{line:18,column:30},end:{line:18,column:118}},line:18},"9":{name:"(anonymous_9)",decl:{start:{line:22,column:48},end:{line:22,column:49}},loc:{start:{line:22,column:73},end:{line:48,column:1}},line:22},"10":{name:"(anonymous_10)",decl:{start:{line:23,column:30},end:{line:23,column:31}},loc:{start:{line:23,column:41},end:{line:23,column:83}},line:23},"11":{name:"(anonymous_11)",decl:{start:{line:24,column:125},end:{line:24,column:126}},loc:{start:{line:24,column:136},end:{line:24,column:152}},line:24},"12":{name:"verb",decl:{start:{line:25,column:13},end:{line:25,column:17}},loc:{start:{line:25,column:21},end:{line:25,column:70}},line:25},"13":{name:"(anonymous_13)",decl:{start:{line:25,column:30},end:{line:25,column:31}},loc:{start:{line:25,column:43},end:{line:25,column:67}},line:25},"14":{name:"step",decl:{start:{line:26,column:13},end:{line:26,column:17}},loc:{start:{line:26,column:22},end:{line:47,column:5}},line:26},"15":{name:"(anonymous_15)",decl:{start:{line:64,column:25},end:{line:64,column:26}},loc:{start:{line:64,column:37},end:{line:1158,column:1}},line:64},"16":{name:"SDK",decl:{start:{line:65,column:13},end:{line:65,column:16}},loc:{start:{line:65,column:66},end:{line:95,column:5}},line:65},"17":{name:"(anonymous_17)",decl:{start:{line:100,column:34},end:{line:100,column:35}},loc:{start:{line:100,column:68},end:{line:138,column:5}},line:100},"18":{name:"(anonymous_18)",decl:{start:{line:102,column:47},end:{line:102,column:48}},loc:{start:{line:102,column:59},end:{line:137,column:9}},line:102},"19":{name:"(anonymous_19)",decl:{start:{line:104,column:37},end:{line:104,column:38}},loc:{start:{line:104,column:51},end:{line:136,column:13}},line:104},"20":{name:"(anonymous_20)",decl:{start:{line:144,column:34},end:{line:144,column:35}},loc:{start:{line:144,column:84},end:{line:207,column:5}},line:144},"21":{name:"(anonymous_21)",decl:{start:{line:146,column:47},end:{line:146,column:48}},loc:{start:{line:146,column:59},end:{line:206,column:9}},line:146},"22":{name:"(anonymous_22)",decl:{start:{line:149,column:37},end:{line:149,column:38}},loc:{start:{line:149,column:51},end:{line:205,column:13}},line:149},"23":{name:"(anonymous_23)",decl:{start:{line:177,column:50},end:{line:177,column:51}},loc:{start:{line:177,column:77},end:{line:204,column:25}},line:177},"24":{name:"(anonymous_24)",decl:{start:{line:177,column:119},end:{line:177,column:120}},loc:{start:{line:177,column:131},end:{line:204,column:21}},line:177},"25":{name:"(anonymous_25)",decl:{start:{line:179,column:49},end:{line:179,column:50}},loc:{start:{line:179,column:63},end:{line:203,column:25}},line:179},"26":{name:"(anonymous_26)",decl:{start:{line:213,column:33},end:{line:213,column:34}},loc:{start:{line:213,column:101},end:{line:308,column:5}},line:213},"27":{name:"(anonymous_27)",decl:{start:{line:216,column:47},end:{line:216,column:48}},loc:{start:{line:216,column:59},end:{line:307,column:9}},line:216},"28":{name:"(anonymous_28)",decl:{start:{line:219,column:37},end:{line:219,column:38}},loc:{start:{line:219,column:51},end:{line:306,column:13}},line:219},"29":{name:"(anonymous_29)",decl:{start:{line:257,column:50},end:{line:257,column:51}},loc:{start:{line:257,column:77},end:{line:305,column:25}},line:257},"30":{name:"(anonymous_30)",decl:{start:{line:257,column:119},end:{line:257,column:120}},loc:{start:{line:257,column:131},end:{line:305,column:21}},line:257},"31":{name:"(anonymous_31)",decl:{start:{line:260,column:49},end:{line:260,column:50}},loc:{start:{line:260,column:63},end:{line:304,column:25}},line:260},"32":{name:"(anonymous_32)",decl:{start:{line:299,column:47},end:{line:299,column:48}},loc:{start:{line:299,column:59},end:{line:301,column:37}},line:299},"33":{name:"(anonymous_33)",decl:{start:{line:300,column:126},end:{line:300,column:127}},loc:{start:{line:300,column:146},end:{line:300,column:175}},line:300},"34":{name:"(anonymous_34)",decl:{start:{line:300,column:183},end:{line:300,column:184}},loc:{start:{line:300,column:200},end:{line:300,column:225}},line:300},"35":{name:"(anonymous_35)",decl:{start:{line:313,column:42},end:{line:313,column:43}},loc:{start:{line:313,column:78},end:{line:368,column:5}},line:313},"36":{name:"(anonymous_36)",decl:{start:{line:314,column:47},end:{line:314,column:48}},loc:{start:{line:314,column:59},end:{line:367,column:9}},line:314},"37":{name:"(anonymous_37)",decl:{start:{line:317,column:37},end:{line:317,column:38}},loc:{start:{line:317,column:51},end:{line:366,column:13}},line:317},"38":{name:"(anonymous_38)",decl:{start:{line:332,column:50},end:{line:332,column:51}},loc:{start:{line:332,column:77},end:{line:365,column:25}},line:332},"39":{name:"(anonymous_39)",decl:{start:{line:332,column:119},end:{line:332,column:120}},loc:{start:{line:332,column:131},end:{line:365,column:21}},line:332},"40":{name:"(anonymous_40)",decl:{start:{line:334,column:49},end:{line:334,column:50}},loc:{start:{line:334,column:63},end:{line:364,column:25}},line:334},"41":{name:"(anonymous_41)",decl:{start:{line:373,column:45},end:{line:373,column:46}},loc:{start:{line:373,column:68},end:{line:428,column:5}},line:373},"42":{name:"(anonymous_42)",decl:{start:{line:374,column:47},end:{line:374,column:48}},loc:{start:{line:374,column:59},end:{line:427,column:9}},line:374},"43":{name:"(anonymous_43)",decl:{start:{line:377,column:37},end:{line:377,column:38}},loc:{start:{line:377,column:51},end:{line:426,column:13}},line:377},"44":{name:"(anonymous_44)",decl:{start:{line:390,column:50},end:{line:390,column:51}},loc:{start:{line:390,column:77},end:{line:425,column:25}},line:390},"45":{name:"(anonymous_45)",decl:{start:{line:390,column:119},end:{line:390,column:120}},loc:{start:{line:390,column:131},end:{line:425,column:21}},line:390},"46":{name:"(anonymous_46)",decl:{start:{line:392,column:49},end:{line:392,column:50}},loc:{start:{line:392,column:63},end:{line:424,column:25}},line:392},"47":{name:"(anonymous_47)",decl:{start:{line:434,column:41},end:{line:434,column:42}},loc:{start:{line:434,column:95},end:{line:507,column:5}},line:434},"48":{name:"(anonymous_48)",decl:{start:{line:436,column:47},end:{line:436,column:48}},loc:{start:{line:436,column:59},end:{line:506,column:9}},line:436},"49":{name:"(anonymous_49)",decl:{start:{line:439,column:37},end:{line:439,column:38}},loc:{start:{line:439,column:51},end:{line:505,column:13}},line:439},"50":{name:"(anonymous_50)",decl:{start:{line:475,column:50},end:{line:475,column:51}},loc:{start:{line:475,column:77},end:{line:504,column:25}},line:475},"51":{name:"(anonymous_51)",decl:{start:{line:475,column:119},end:{line:475,column:120}},loc:{start:{line:475,column:131},end:{line:504,column:21}},line:475},"52":{name:"(anonymous_52)",decl:{start:{line:477,column:49},end:{line:477,column:50}},loc:{start:{line:477,column:63},end:{line:503,column:25}},line:477},"53":{name:"(anonymous_53)",decl:{start:{line:513,column:32},end:{line:513,column:33}},loc:{start:{line:513,column:80},end:{line:589,column:5}},line:513},"54":{name:"(anonymous_54)",decl:{start:{line:515,column:47},end:{line:515,column:48}},loc:{start:{line:515,column:59},end:{line:588,column:9}},line:515},"55":{name:"(anonymous_55)",decl:{start:{line:518,column:37},end:{line:518,column:38}},loc:{start:{line:518,column:51},end:{line:587,column:13}},line:518},"56":{name:"(anonymous_56)",decl:{start:{line:560,column:50},end:{line:560,column:51}},loc:{start:{line:560,column:77},end:{line:586,column:25}},line:560},"57":{name:"(anonymous_57)",decl:{start:{line:560,column:119},end:{line:560,column:120}},loc:{start:{line:560,column:131},end:{line:586,column:21}},line:560},"58":{name:"(anonymous_58)",decl:{start:{line:562,column:49},end:{line:562,column:50}},loc:{start:{line:562,column:63},end:{line:585,column:25}},line:562},"59":{name:"(anonymous_59)",decl:{start:{line:595,column:33},end:{line:595,column:34}},loc:{start:{line:595,column:82},end:{line:657,column:5}},line:595},"60":{name:"(anonymous_60)",decl:{start:{line:597,column:47},end:{line:597,column:48}},loc:{start:{line:597,column:59},end:{line:656,column:9}},line:597},"61":{name:"(anonymous_61)",decl:{start:{line:600,column:37},end:{line:600,column:38}},loc:{start:{line:600,column:51},end:{line:655,column:13}},line:600},"62":{name:"(anonymous_62)",decl:{start:{line:628,column:50},end:{line:628,column:51}},loc:{start:{line:628,column:77},end:{line:654,column:25}},line:628},"63":{name:"(anonymous_63)",decl:{start:{line:628,column:119},end:{line:628,column:120}},loc:{start:{line:628,column:131},end:{line:654,column:21}},line:628},"64":{name:"(anonymous_64)",decl:{start:{line:630,column:49},end:{line:630,column:50}},loc:{start:{line:630,column:63},end:{line:653,column:25}},line:630},"65":{name:"(anonymous_65)",decl:{start:{line:663,column:43},end:{line:663,column:44}},loc:{start:{line:663,column:102},end:{line:718,column:5}},line:663},"66":{name:"(anonymous_66)",decl:{start:{line:665,column:47},end:{line:665,column:48}},loc:{start:{line:665,column:59},end:{line:717,column:9}},line:665},"67":{name:"(anonymous_67)",decl:{start:{line:667,column:37},end:{line:667,column:38}},loc:{start:{line:667,column:51},end:{line:716,column:13}},line:667},"68":{name:"(anonymous_68)",decl:{start:{line:725,column:43},end:{line:725,column:44}},loc:{start:{line:725,column:120},end:{line:779,column:5}},line:725},"69":{name:"(anonymous_69)",decl:{start:{line:727,column:47},end:{line:727,column:48}},loc:{start:{line:727,column:59},end:{line:778,column:9}},line:727},"70":{name:"(anonymous_70)",decl:{start:{line:730,column:37},end:{line:730,column:38}},loc:{start:{line:730,column:51},end:{line:777,column:13}},line:730},"71":{name:"(anonymous_71)",decl:{start:{line:750,column:50},end:{line:750,column:51}},loc:{start:{line:750,column:77},end:{line:776,column:25}},line:750},"72":{name:"(anonymous_72)",decl:{start:{line:750,column:119},end:{line:750,column:120}},loc:{start:{line:750,column:131},end:{line:776,column:21}},line:750},"73":{name:"(anonymous_73)",decl:{start:{line:752,column:49},end:{line:752,column:50}},loc:{start:{line:752,column:63},end:{line:775,column:25}},line:752},"74":{name:"(anonymous_74)",decl:{start:{line:786,column:40},end:{line:786,column:41}},loc:{start:{line:786,column:128},end:{line:845,column:5}},line:786},"75":{name:"(anonymous_75)",decl:{start:{line:788,column:47},end:{line:788,column:48}},loc:{start:{line:788,column:59},end:{line:844,column:9}},line:788},"76":{name:"(anonymous_76)",decl:{start:{line:791,column:37},end:{line:791,column:38}},loc:{start:{line:791,column:51},end:{line:843,column:13}},line:791},"77":{name:"(anonymous_77)",decl:{start:{line:815,column:50},end:{line:815,column:51}},loc:{start:{line:815,column:77},end:{line:842,column:25}},line:815},"78":{name:"(anonymous_78)",decl:{start:{line:815,column:119},end:{line:815,column:120}},loc:{start:{line:815,column:131},end:{line:842,column:21}},line:815},"79":{name:"(anonymous_79)",decl:{start:{line:817,column:49},end:{line:817,column:50}},loc:{start:{line:817,column:63},end:{line:841,column:25}},line:817},"80":{name:"(anonymous_80)",decl:{start:{line:853,column:39},end:{line:853,column:40}},loc:{start:{line:853,column:109},end:{line:915,column:5}},line:853},"81":{name:"(anonymous_81)",decl:{start:{line:855,column:47},end:{line:855,column:48}},loc:{start:{line:855,column:59},end:{line:914,column:9}},line:855},"82":{name:"(anonymous_82)",decl:{start:{line:858,column:37},end:{line:858,column:38}},loc:{start:{line:858,column:51},end:{line:913,column:13}},line:858},"83":{name:"(anonymous_83)",decl:{start:{line:885,column:50},end:{line:885,column:51}},loc:{start:{line:885,column:77},end:{line:912,column:25}},line:885},"84":{name:"(anonymous_84)",decl:{start:{line:885,column:119},end:{line:885,column:120}},loc:{start:{line:885,column:131},end:{line:912,column:21}},line:885},"85":{name:"(anonymous_85)",decl:{start:{line:887,column:49},end:{line:887,column:50}},loc:{start:{line:887,column:63},end:{line:911,column:25}},line:887},"86":{name:"(anonymous_86)",decl:{start:{line:923,column:36},end:{line:923,column:37}},loc:{start:{line:923,column:113},end:{line:979,column:5}},line:923},"87":{name:"(anonymous_87)",decl:{start:{line:925,column:47},end:{line:925,column:48}},loc:{start:{line:925,column:59},end:{line:978,column:9}},line:925},"88":{name:"(anonymous_88)",decl:{start:{line:928,column:37},end:{line:928,column:38}},loc:{start:{line:928,column:51},end:{line:977,column:13}},line:928},"89":{name:"(anonymous_89)",decl:{start:{line:950,column:50},end:{line:950,column:51}},loc:{start:{line:950,column:77},end:{line:976,column:25}},line:950},"90":{name:"(anonymous_90)",decl:{start:{line:950,column:119},end:{line:950,column:120}},loc:{start:{line:950,column:131},end:{line:976,column:21}},line:950},"91":{name:"(anonymous_91)",decl:{start:{line:952,column:49},end:{line:952,column:50}},loc:{start:{line:952,column:63},end:{line:975,column:25}},line:952},"92":{name:"(anonymous_92)",decl:{start:{line:984,column:41},end:{line:984,column:42}},loc:{start:{line:984,column:62},end:{line:1037,column:5}},line:984},"93":{name:"(anonymous_93)",decl:{start:{line:985,column:47},end:{line:985,column:48}},loc:{start:{line:985,column:59},end:{line:1036,column:9}},line:985},"94":{name:"(anonymous_94)",decl:{start:{line:988,column:37},end:{line:988,column:38}},loc:{start:{line:988,column:51},end:{line:1035,column:13}},line:988},"95":{name:"(anonymous_95)",decl:{start:{line:1007,column:50},end:{line:1007,column:51}},loc:{start:{line:1007,column:77},end:{line:1034,column:25}},line:1007},"96":{name:"(anonymous_96)",decl:{start:{line:1007,column:119},end:{line:1007,column:120}},loc:{start:{line:1007,column:131},end:{line:1034,column:21}},line:1007},"97":{name:"(anonymous_97)",decl:{start:{line:1009,column:49},end:{line:1009,column:50}},loc:{start:{line:1009,column:63},end:{line:1033,column:25}},line:1009},"98":{name:"(anonymous_98)",decl:{start:{line:1044,column:53},end:{line:1044,column:54}},loc:{start:{line:1044,column:145},end:{line:1095,column:5}},line:1044},"99":{name:"(anonymous_99)",decl:{start:{line:1046,column:47},end:{line:1046,column:48}},loc:{start:{line:1046,column:59},end:{line:1094,column:9}},line:1046},"100":{name:"(anonymous_100)",decl:{start:{line:1048,column:37},end:{line:1048,column:38}},loc:{start:{line:1048,column:51},end:{line:1093,column:13}},line:1048},"101":{name:"(anonymous_101)",decl:{start:{line:1099,column:40},end:{line:1099,column:41}},loc:{start:{line:1099,column:85},end:{line:1151,column:5}},line:1099},"102":{name:"(anonymous_102)",decl:{start:{line:1100,column:47},end:{line:1100,column:48}},loc:{start:{line:1100,column:59},end:{line:1150,column:9}},line:1100},"103":{name:"(anonymous_103)",decl:{start:{line:1103,column:37},end:{line:1103,column:38}},loc:{start:{line:1103,column:51},end:{line:1149,column:13}},line:1103},"104":{name:"(anonymous_104)",decl:{start:{line:1121,column:50},end:{line:1121,column:51}},loc:{start:{line:1121,column:77},end:{line:1148,column:25}},line:1121},"105":{name:"(anonymous_105)",decl:{start:{line:1121,column:119},end:{line:1121,column:120}},loc:{start:{line:1121,column:131},end:{line:1148,column:21}},line:1121},"106":{name:"(anonymous_106)",decl:{start:{line:1123,column:49},end:{line:1123,column:50}},loc:{start:{line:1123,column:63},end:{line:1147,column:25}},line:1123}},branchMap:{"0":{loc:{start:{line:2,column:15},end:{line:12,column:1}},type:"binary-expr",locations:[{start:{line:2,column:16},end:{line:2,column:20}},{start:{line:2,column:24},end:{line:2,column:37}},{start:{line:2,column:42},end:{line:12,column:1}}],line:2},"1":{loc:{start:{line:3,column:15},end:{line:10,column:5}},type:"binary-expr",locations:[{start:{line:3,column:15},end:{line:3,column:28}},{start:{line:3,column:32},end:{line:10,column:5}}],line:3},"2":{loc:{start:{line:6,column:29},end:{line:7,column:28}},type:"if",locations:[{start:{line:6,column:29},end:{line:7,column:28}},{start:{line:6,column:29},end:{line:7,column:28}}],line:6},"3":{loc:{start:{line:13,column:16},end:{line:21,column:1}},type:"binary-expr",locations:[{start:{line:13,column:17},end:{line:13,column:21}},{start:{line:13,column:25},end:{line:13,column:39}},{start:{line:13,column:44},end:{line:21,column:1}}],line:13},"4":{loc:{start:{line:14,column:35},end:{line:14,column:109}},type:"cond-expr",locations:[{start:{line:14,column:56},end:{line:14,column:61}},{start:{line:14,column:64},end:{line:14,column:109}}],line:14},"5":{loc:{start:{line:15,column:16},end:{line:15,column:34}},type:"binary-expr",locations:[{start:{line:15,column:16},end:{line:15,column:17}},{start:{line:15,column:22},end:{line:15,column:33}}],line:15},"6":{loc:{start:{line:18,column:32},end:{line:18,column:115}},type:"cond-expr",locations:[{start:{line:18,column:46},end:{line:18,column:67}},{start:{line:18,column:70},end:{line:18,column:115}}],line:18},"7":{loc:{start:{line:19,column:51},end:{line:19,column:67}},type:"binary-expr",locations:[{start:{line:19,column:51},end:{line:19,column:61}},{start:{line:19,column:65},end:{line:19,column:67}}],line:19},"8":{loc:{start:{line:22,column:18},end:{line:48,column:1}},type:"binary-expr",locations:[{start:{line:22,column:19},end:{line:22,column:23}},{start:{line:22,column:27},end:{line:22,column:43}},{start:{line:22,column:48},end:{line:48,column:1}}],line:22},"9":{loc:{start:{line:23,column:43},end:{line:23,column:68}},type:"if",locations:[{start:{line:23,column:43},end:{line:23,column:68}},{start:{line:23,column:43},end:{line:23,column:68}}],line:23},"10":{loc:{start:{line:24,column:71},end:{line:24,column:153}},type:"binary-expr",locations:[{start:{line:24,column:71},end:{line:24,column:99}},{start:{line:24,column:104},end:{line:24,column:152}}],line:24},"11":{loc:{start:{line:27,column:8},end:{line:27,column:70}},type:"if",locations:[{start:{line:27,column:8},end:{line:27,column:70}},{start:{line:27,column:8},end:{line:27,column:70}}],line:27},"12":{loc:{start:{line:29,column:12},end:{line:29,column:169}},type:"if",locations:[{start:{line:29,column:12},end:{line:29,column:169}},{start:{line:29,column:12},end:{line:29,column:169}}],line:29},"13":{loc:{start:{line:29,column:23},end:{line:29,column:158}},type:"binary-expr",locations:[{start:{line:29,column:23},end:{line:29,column:24}},{start:{line:29,column:29},end:{line:29,column:125}},{start:{line:29,column:130},end:{line:29,column:158}}],line:29},"14":{loc:{start:{line:29,column:33},end:{line:29,column:125}},type:"cond-expr",locations:[{start:{line:29,column:45},end:{line:29,column:56}},{start:{line:29,column:59},end:{line:29,column:125}}],line:29},"15":{loc:{start:{line:29,column:59},end:{line:29,column:125}},type:"cond-expr",locations:[{start:{line:29,column:67},end:{line:29,column:116}},{start:{line:29,column:119},end:{line:29,column:125}}],line:29},"16":{loc:{start:{line:29,column:67},end:{line:29,column:116}},type:"binary-expr",locations:[{start:{line:29,column:67},end:{line:29,column:77}},{start:{line:29,column:82},end:{line:29,column:115}}],line:29},"17":{loc:{start:{line:29,column:82},end:{line:29,column:112}},type:"binary-expr",locations:[{start:{line:29,column:83},end:{line:29,column:98}},{start:{line:29,column:103},end:{line:29,column:112}}],line:29},"18":{loc:{start:{line:30,column:12},end:{line:30,column:52}},type:"if",locations:[{start:{line:30,column:12},end:{line:30,column:52}},{start:{line:30,column:12},end:{line:30,column:52}}],line:30},"19":{loc:{start:{line:31,column:12},end:{line:43,column:13}},type:"switch",locations:[{start:{line:32,column:16},end:{line:32,column:23}},{start:{line:32,column:24},end:{line:32,column:46}},{start:{line:33,column:16},end:{line:33,column:72}},{start:{line:34,column:16},end:{line:34,column:65}},{start:{line:35,column:16},end:{line:35,column:65}},{start:{line:36,column:16},end:{line:42,column:43}}],line:31},"20":{loc:{start:{line:37,column:20},end:{line:37,column:128}},type:"if",locations:[{start:{line:37,column:20},end:{line:37,column:128}},{start:{line:37,column:20},end:{line:37,column:128}}],line:37},"21":{loc:{start:{line:37,column:24},end:{line:37,column:106}},type:"binary-expr",locations:[{start:{line:37,column:24},end:{line:37,column:74}},{start:{line:37,column:79},end:{line:37,column:90}},{start:{line:37,column:94},end:{line:37,column:105}}],line:37},"22":{loc:{start:{line:37,column:42},end:{line:37,column:73}},type:"binary-expr",locations:[{start:{line:37,column:42},end:{line:37,column:54}},{start:{line:37,column:58},end:{line:37,column:73}}],line:37},"23":{loc:{start:{line:38,column:20},end:{line:38,column:106}},type:"if",locations:[{start:{line:38,column:20},end:{line:38,column:106}},{start:{line:38,column:20},end:{line:38,column:106}}],line:38},"24":{loc:{start:{line:38,column:24},end:{line:38,column:77}},type:"binary-expr",locations:[{start:{line:38,column:24},end:{line:38,column:35}},{start:{line:38,column:40},end:{line:38,column:42}},{start:{line:38,column:47},end:{line:38,column:59}},{start:{line:38,column:63},end:{line:38,column:75}}],line:38},"25":{loc:{start:{line:39,column:20},end:{line:39,column:89}},type:"if",locations:[{start:{line:39,column:20},end:{line:39,column:89}},{start:{line:39,column:20},end:{line:39,column:89}}],line:39},"26":{loc:{start:{line:39,column:24},end:{line:39,column:53}},type:"binary-expr",locations:[{start:{line:39,column:24},end:{line:39,column:35}},{start:{line:39,column:39},end:{line:39,column:53}}],line:39},"27":{loc:{start:{line:40,column:20},end:{line:40,column:87}},type:"if",locations:[{start:{line:40,column:20},end:{line:40,column:87}},{start:{line:40,column:20},end:{line:40,column:87}}],line:40},"28":{loc:{start:{line:40,column:24},end:{line:40,column:43}},type:"binary-expr",locations:[{start:{line:40,column:24},end:{line:40,column:25}},{start:{line:40,column:29},end:{line:40,column:43}}],line:40},"29":{loc:{start:{line:41,column:20},end:{line:41,column:42}},type:"if",locations:[{start:{line:41,column:20},end:{line:41,column:42}},{start:{line:41,column:20},end:{line:41,column:42}}],line:41},"30":{loc:{start:{line:46,column:8},end:{line:46,column:35}},type:"if",locations:[{start:{line:46,column:8},end:{line:46,column:35}},{start:{line:46,column:8},end:{line:46,column:35}}],line:46},"31":{loc:{start:{line:46,column:52},end:{line:46,column:74}},type:"cond-expr",locations:[{start:{line:46,column:60},end:{line:46,column:65}},{start:{line:46,column:68},end:{line:46,column:74}}],line:46},"32":{loc:{start:{line:66,column:8},end:{line:66,column:83}},type:"if",locations:[{start:{line:66,column:8},end:{line:66,column:83}},{start:{line:66,column:8},end:{line:66,column:83}}],line:66},"33":{loc:{start:{line:71,column:8},end:{line:73,column:9}},type:"if",locations:[{start:{line:71,column:8},end:{line:73,column:9}},{start:{line:71,column:8},end:{line:73,column:9}}],line:71},"34":{loc:{start:{line:71,column:12},end:{line:71,column:90}},type:"binary-expr",locations:[{start:{line:71,column:12},end:{line:71,column:51}},{start:{line:71,column:55},end:{line:71,column:90}}],line:71},"35":{loc:{start:{line:77,column:12},end:{line:79,column:13}},type:"if",locations:[{start:{line:77,column:12},end:{line:79,column:13}},{start:{line:77,column:12},end:{line:79,column:13}}],line:77},"36":{loc:{start:{line:83,column:8},end:{line:85,column:9}},type:"if",locations:[{start:{line:83,column:8},end:{line:85,column:9}},{start:{line:83,column:8},end:{line:85,column:9}}],line:83},"37":{loc:{start:{line:90,column:12},end:{line:92,column:13}},type:"if",locations:[{start:{line:90,column:12},end:{line:92,column:13}},{start:{line:90,column:12},end:{line:92,column:13}}],line:90},"38":{loc:{start:{line:101,column:8},end:{line:101,column:60}},type:"if",locations:[{start:{line:101,column:8},end:{line:101,column:60}},{start:{line:101,column:8},end:{line:101,column:60}}],line:101},"39":{loc:{start:{line:105,column:16},end:{line:135,column:17}},type:"switch",locations:[{start:{line:106,column:20},end:{line:123,column:32}},{start:{line:124,column:20},end:{line:134,column:52}}],line:105},"40":{loc:{start:{line:108,column:24},end:{line:110,column:25}},type:"if",locations:[{start:{line:108,column:24},end:{line:110,column:25}},{start:{line:108,column:24},end:{line:110,column:25}}],line:108},"41":{loc:{start:{line:111,column:24},end:{line:113,column:25}},type:"if",locations:[{start:{line:111,column:24},end:{line:113,column:25}},{start:{line:111,column:24},end:{line:113,column:25}}],line:111},"42":{loc:{start:{line:118,column:24},end:{line:120,column:25}},type:"if",locations:[{start:{line:118,column:24},end:{line:120,column:25}},{start:{line:118,column:24},end:{line:120,column:25}}],line:118},"43":{loc:{start:{line:128,column:24},end:{line:130,column:25}},type:"if",locations:[{start:{line:128,column:24},end:{line:130,column:25}},{start:{line:128,column:24},end:{line:130,column:25}}],line:128},"44":{loc:{start:{line:128,column:28},end:{line:128,column:103}},type:"binary-expr",locations:[{start:{line:128,column:28},end:{line:128,column:48}},{start:{line:128,column:52},end:{line:128,column:103}}],line:128},"45":{loc:{start:{line:131,column:24},end:{line:133,column:25}},type:"if",locations:[{start:{line:131,column:24},end:{line:133,column:25}},{start:{line:131,column:24},end:{line:133,column:25}}],line:131},"46":{loc:{start:{line:145,column:8},end:{line:145,column:89}},type:"if",locations:[{start:{line:145,column:8},end:{line:145,column:89}},{start:{line:145,column:8},end:{line:145,column:89}}],line:145},"47":{loc:{start:{line:151,column:16},end:{line:153,column:17}},type:"if",locations:[{start:{line:151,column:16},end:{line:153,column:17}},{start:{line:151,column:16},end:{line:153,column:17}}],line:151},"48":{loc:{start:{line:154,column:16},end:{line:156,column:17}},type:"if",locations:[{start:{line:154,column:16},end:{line:156,column:17}},{start:{line:154,column:16},end:{line:156,column:17}}],line:154},"49":{loc:{start:{line:163,column:16},end:{line:166,column:17}},type:"if",locations:[{start:{line:163,column:16},end:{line:166,column:17}},{start:{line:163,column:16},end:{line:166,column:17}}],line:163},"50":{loc:{start:{line:168,column:16},end:{line:170,column:17}},type:"if",locations:[{start:{line:168,column:16},end:{line:170,column:17}},{start:{line:168,column:16},end:{line:170,column:17}}],line:168},"51":{loc:{start:{line:180,column:28},end:{line:202,column:29}},type:"switch",locations:[{start:{line:181,column:32},end:{line:183,column:81}},{start:{line:184,column:32},end:{line:192,column:60}},{start:{line:193,column:32},end:{line:200,column:60}},{start:{line:201,column:32},end:{line:201,column:62}}],line:180},"52":{loc:{start:{line:188,column:36},end:{line:190,column:37}},type:"if",locations:[{start:{line:188,column:36},end:{line:190,column:37}},{start:{line:188,column:36},end:{line:190,column:37}}],line:188},"53":{loc:{start:{line:196,column:36},end:{line:198,column:37}},type:"if",locations:[{start:{line:196,column:36},end:{line:198,column:37}},{start:{line:196,column:36},end:{line:198,column:37}}],line:196},"54":{loc:{start:{line:214,column:8},end:{line:214,column:87}},type:"if",locations:[{start:{line:214,column:8},end:{line:214,column:87}},{start:{line:214,column:8},end:{line:214,column:87}}],line:214},"55":{loc:{start:{line:215,column:8},end:{line:215,column:68}},type:"if",locations:[{start:{line:215,column:8},end:{line:215,column:68}},{start:{line:215,column:8},end:{line:215,column:68}}],line:215},"56":{loc:{start:{line:222,column:16},end:{line:224,column:17}},type:"if",locations:[{start:{line:222,column:16},end:{line:224,column:17}},{start:{line:222,column:16},end:{line:224,column:17}}],line:222},"57":{loc:{start:{line:225,column:16},end:{line:227,column:17}},type:"if",locations:[{start:{line:225,column:16},end:{line:227,column:17}},{start:{line:225,column:16},end:{line:227,column:17}}],line:225},"58":{loc:{start:{line:228,column:16},end:{line:230,column:17}},type:"if",locations:[{start:{line:228,column:16},end:{line:230,column:17}},{start:{line:228,column:16},end:{line:230,column:17}}],line:228},"59":{loc:{start:{line:233,column:16},end:{line:245,column:17}},type:"if",locations:[{start:{line:233,column:16},end:{line:245,column:17}},{start:{line:233,column:16},end:{line:245,column:17}}],line:233},"60":{loc:{start:{line:233,column:20},end:{line:233,column:156}},type:"binary-expr",locations:[{start:{line:233,column:20},end:{line:233,column:71}},{start:{line:233,column:76},end:{line:233,column:98}},{start:{line:233,column:102},end:{line:233,column:155}}],line:233},"61":{loc:{start:{line:235,column:20},end:{line:238,column:21}},type:"if",locations:[{start:{line:235,column:20},end:{line:238,column:21}},{start:{line:235,column:20},end:{line:238,column:21}}],line:235},"62":{loc:{start:{line:241,column:20},end:{line:244,column:21}},type:"if",locations:[{start:{line:241,column:20},end:{line:244,column:21}},{start:{line:241,column:20},end:{line:244,column:21}}],line:241},"63":{loc:{start:{line:246,column:16},end:{line:248,column:17}},type:"if",locations:[{start:{line:246,column:16},end:{line:248,column:17}},{start:{line:246,column:16},end:{line:248,column:17}}],line:246},"64":{loc:{start:{line:261,column:28},end:{line:303,column:29}},type:"switch",locations:[{start:{line:262,column:32},end:{line:264,column:81}},{start:{line:265,column:32},end:{line:283,column:60}},{start:{line:284,column:32},end:{line:291,column:58}},{start:{line:292,column:32},end:{line:302,column:58}}],line:261},"65":{loc:{start:{line:270,column:36},end:{line:277,column:37}},type:"if",locations:[{start:{line:270,column:36},end:{line:277,column:37}},{start:{line:270,column:36},end:{line:277,column:37}}],line:270},"66":{loc:{start:{line:272,column:40},end:{line:274,column:41}},type:"if",locations:[{start:{line:272,column:40},end:{line:274,column:41}},{start:{line:272,column:40},end:{line:274,column:41}}],line:272},"67":{loc:{start:{line:279,column:36},end:{line:282,column:37}},type:"if",locations:[{start:{line:279,column:36},end:{line:282,column:37}},{start:{line:279,column:36},end:{line:282,column:37}}],line:279},"68":{loc:{start:{line:279,column:40},end:{line:279,column:114}},type:"binary-expr",locations:[{start:{line:279,column:40},end:{line:279,column:51}},{start:{line:279,column:55},end:{line:279,column:114}}],line:279},"69":{loc:{start:{line:287,column:36},end:{line:289,column:37}},type:"if",locations:[{start:{line:287,column:36},end:{line:289,column:37}},{start:{line:287,column:36},end:{line:289,column:37}}],line:287},"70":{loc:{start:{line:294,column:36},end:{line:297,column:37}},type:"if",locations:[{start:{line:294,column:36},end:{line:297,column:37}},{start:{line:294,column:36},end:{line:297,column:37}}],line:294},"71":{loc:{start:{line:320,column:16},end:{line:322,column:17}},type:"if",locations:[{start:{line:320,column:16},end:{line:322,column:17}},{start:{line:320,column:16},end:{line:322,column:17}}],line:320},"72":{loc:{start:{line:335,column:28},end:{line:363,column:29}},type:"switch",locations:[{start:{line:336,column:32},end:{line:338,column:81}},{start:{line:339,column:32},end:{line:353,column:58}},{start:{line:354,column:32},end:{line:361,column:58}},{start:{line:362,column:32},end:{line:362,column:62}}],line:335},"73":{loc:{start:{line:344,column:36},end:{line:350,column:37}},type:"if",locations:[{start:{line:344,column:36},end:{line:350,column:37}},{start:{line:344,column:36},end:{line:350,column:37}}],line:344},"74":{loc:{start:{line:345,column:40},end:{line:347,column:41}},type:"if",locations:[{start:{line:345,column:40},end:{line:347,column:41}},{start:{line:345,column:40},end:{line:347,column:41}}],line:345},"75":{loc:{start:{line:357,column:36},end:{line:359,column:37}},type:"if",locations:[{start:{line:357,column:36},end:{line:359,column:37}},{start:{line:357,column:36},end:{line:359,column:37}}],line:357},"76":{loc:{start:{line:379,column:16},end:{line:381,column:17}},type:"if",locations:[{start:{line:379,column:16},end:{line:381,column:17}},{start:{line:379,column:16},end:{line:381,column:17}}],line:379},"77":{loc:{start:{line:393,column:28},end:{line:423,column:29}},type:"switch",locations:[{start:{line:394,column:32},end:{line:396,column:81}},{start:{line:397,column:32},end:{line:413,column:58}},{start:{line:414,column:32},end:{line:421,column:58}},{start:{line:422,column:32},end:{line:422,column:62}}],line:393},"78":{loc:{start:{line:401,column:36},end:{line:407,column:37}},type:"if",locations:[{start:{line:401,column:36},end:{line:407,column:37}},{start:{line:401,column:36},end:{line:407,column:37}}],line:401},"79":{loc:{start:{line:402,column:40},end:{line:404,column:41}},type:"if",locations:[{start:{line:402,column:40},end:{line:404,column:41}},{start:{line:402,column:40},end:{line:404,column:41}}],line:402},"80":{loc:{start:{line:409,column:36},end:{line:411,column:37}},type:"if",locations:[{start:{line:409,column:36},end:{line:411,column:37}},{start:{line:409,column:36},end:{line:411,column:37}}],line:409},"81":{loc:{start:{line:417,column:36},end:{line:419,column:37}},type:"if",locations:[{start:{line:417,column:36},end:{line:419,column:37}},{start:{line:417,column:36},end:{line:419,column:37}}],line:417},"82":{loc:{start:{line:435,column:8},end:{line:435,column:97}},type:"if",locations:[{start:{line:435,column:8},end:{line:435,column:97}},{start:{line:435,column:8},end:{line:435,column:97}}],line:435},"83":{loc:{start:{line:441,column:16},end:{line:443,column:17}},type:"if",locations:[{start:{line:441,column:16},end:{line:443,column:17}},{start:{line:441,column:16},end:{line:443,column:17}}],line:441},"84":{loc:{start:{line:449,column:16},end:{line:451,column:17}},type:"if",locations:[{start:{line:449,column:16},end:{line:451,column:17}},{start:{line:449,column:16},end:{line:451,column:17}}],line:449},"85":{loc:{start:{line:452,column:23},end:{line:452,column:40}},type:"binary-expr",locations:[{start:{line:452,column:23},end:{line:452,column:34}},{start:{line:452,column:38},end:{line:452,column:40}}],line:452},"86":{loc:{start:{line:453,column:16},end:{line:455,column:17}},type:"if",locations:[{start:{line:453,column:16},end:{line:455,column:17}},{start:{line:453,column:16},end:{line:455,column:17}}],line:453},"87":{loc:{start:{line:453,column:20},end:{line:453,column:50}},type:"binary-expr",locations:[{start:{line:453,column:20},end:{line:453,column:30}},{start:{line:453,column:34},end:{line:453,column:50}}],line:453},"88":{loc:{start:{line:456,column:16},end:{line:461,column:17}},type:"if",locations:[{start:{line:456,column:16},end:{line:461,column:17}},{start:{line:456,column:16},end:{line:461,column:17}}],line:456},"89":{loc:{start:{line:462,column:16},end:{line:464,column:17}},type:"if",locations:[{start:{line:462,column:16},end:{line:464,column:17}},{start:{line:462,column:16},end:{line:464,column:17}}],line:462},"90":{loc:{start:{line:466,column:16},end:{line:468,column:17}},type:"if",locations:[{start:{line:466,column:16},end:{line:468,column:17}},{start:{line:466,column:16},end:{line:468,column:17}}],line:466},"91":{loc:{start:{line:466,column:20},end:{line:466,column:92}},type:"binary-expr",locations:[{start:{line:466,column:20},end:{line:466,column:31}},{start:{line:466,column:35},end:{line:466,column:92}}],line:466},"92":{loc:{start:{line:478,column:28},end:{line:502,column:29}},type:"switch",locations:[{start:{line:479,column:32},end:{line:481,column:81}},{start:{line:482,column:32},end:{line:492,column:60}},{start:{line:493,column:32},end:{line:500,column:60}},{start:{line:501,column:32},end:{line:501,column:62}}],line:478},"93":{loc:{start:{line:486,column:36},end:{line:491,column:37}},type:"if",locations:[{start:{line:486,column:36},end:{line:491,column:37}},{start:{line:486,column:36},end:{line:491,column:37}}],line:486},"94":{loc:{start:{line:487,column:40},end:{line:489,column:41}},type:"if",locations:[{start:{line:487,column:40},end:{line:489,column:41}},{start:{line:487,column:40},end:{line:489,column:41}}],line:487},"95":{loc:{start:{line:496,column:36},end:{line:498,column:37}},type:"if",locations:[{start:{line:496,column:36},end:{line:498,column:37}},{start:{line:496,column:36},end:{line:498,column:37}}],line:496},"96":{loc:{start:{line:514,column:8},end:{line:514,column:85}},type:"if",locations:[{start:{line:514,column:8},end:{line:514,column:85}},{start:{line:514,column:8},end:{line:514,column:85}}],line:514},"97":{loc:{start:{line:520,column:16},end:{line:522,column:17}},type:"if",locations:[{start:{line:520,column:16},end:{line:522,column:17}},{start:{line:520,column:16},end:{line:522,column:17}}],line:520},"98":{loc:{start:{line:528,column:16},end:{line:531,column:17}},type:"if",locations:[{start:{line:528,column:16},end:{line:531,column:17}},{start:{line:528,column:16},end:{line:531,column:17}}],line:528},"99":{loc:{start:{line:532,column:16},end:{line:534,column:17}},type:"if",locations:[{start:{line:532,column:16},end:{line:534,column:17}},{start:{line:532,column:16},end:{line:534,column:17}}],line:532},"100":{loc:{start:{line:536,column:23},end:{line:536,column:40}},type:"binary-expr",locations:[{start:{line:536,column:23},end:{line:536,column:34}},{start:{line:536,column:38},end:{line:536,column:40}}],line:536},"101":{loc:{start:{line:537,column:16},end:{line:539,column:17}},type:"if",locations:[{start:{line:537,column:16},end:{line:539,column:17}},{start:{line:537,column:16},end:{line:539,column:17}}],line:537},"102":{loc:{start:{line:537,column:20},end:{line:537,column:50}},type:"binary-expr",locations:[{start:{line:537,column:20},end:{line:537,column:30}},{start:{line:537,column:34},end:{line:537,column:50}}],line:537},"103":{loc:{start:{line:540,column:16},end:{line:545,column:17}},type:"if",locations:[{start:{line:540,column:16},end:{line:545,column:17}},{start:{line:540,column:16},end:{line:545,column:17}}],line:540},"104":{loc:{start:{line:547,column:16},end:{line:549,column:17}},type:"if",locations:[{start:{line:547,column:16},end:{line:549,column:17}},{start:{line:547,column:16},end:{line:549,column:17}}],line:547},"105":{loc:{start:{line:551,column:16},end:{line:553,column:17}},type:"if",locations:[{start:{line:551,column:16},end:{line:553,column:17}},{start:{line:551,column:16},end:{line:553,column:17}}],line:551},"106":{loc:{start:{line:551,column:20},end:{line:551,column:92}},type:"binary-expr",locations:[{start:{line:551,column:20},end:{line:551,column:31}},{start:{line:551,column:35},end:{line:551,column:92}}],line:551},"107":{loc:{start:{line:563,column:28},end:{line:584,column:29}},type:"switch",locations:[{start:{line:564,column:32},end:{line:566,column:81}},{start:{line:567,column:32},end:{line:574,column:60}},{start:{line:575,column:32},end:{line:582,column:60}},{start:{line:583,column:32},end:{line:583,column:62}}],line:563},"108":{loc:{start:{line:570,column:36},end:{line:572,column:37}},type:"if",locations:[{start:{line:570,column:36},end:{line:572,column:37}},{start:{line:570,column:36},end:{line:572,column:37}}],line:570},"109":{loc:{start:{line:578,column:36},end:{line:580,column:37}},type:"if",locations:[{start:{line:578,column:36},end:{line:580,column:37}},{start:{line:578,column:36},end:{line:580,column:37}}],line:578},"110":{loc:{start:{line:596,column:8},end:{line:596,column:87}},type:"if",locations:[{start:{line:596,column:8},end:{line:596,column:87}},{start:{line:596,column:8},end:{line:596,column:87}}],line:596},"111":{loc:{start:{line:602,column:16},end:{line:604,column:17}},type:"if",locations:[{start:{line:602,column:16},end:{line:604,column:17}},{start:{line:602,column:16},end:{line:604,column:17}}],line:602},"112":{loc:{start:{line:612,column:16},end:{line:615,column:17}},type:"if",locations:[{start:{line:612,column:16},end:{line:615,column:17}},{start:{line:612,column:16},end:{line:615,column:17}}],line:612},"113":{loc:{start:{line:616,column:16},end:{line:618,column:17}},type:"if",locations:[{start:{line:616,column:16},end:{line:618,column:17}},{start:{line:616,column:16},end:{line:618,column:17}}],line:616},"114":{loc:{start:{line:619,column:16},end:{line:621,column:17}},type:"if",locations:[{start:{line:619,column:16},end:{line:621,column:17}},{start:{line:619,column:16},end:{line:621,column:17}}],line:619},"115":{loc:{start:{line:631,column:28},end:{line:652,column:29}},type:"switch",locations:[{start:{line:632,column:32},end:{line:634,column:81}},{start:{line:635,column:32},end:{line:642,column:60}},{start:{line:643,column:32},end:{line:650,column:60}},{start:{line:651,column:32},end:{line:651,column:62}}],line:631},"116":{loc:{start:{line:638,column:36},end:{line:640,column:37}},type:"if",locations:[{start:{line:638,column:36},end:{line:640,column:37}},{start:{line:638,column:36},end:{line:640,column:37}}],line:638},"117":{loc:{start:{line:646,column:36},end:{line:648,column:37}},type:"if",locations:[{start:{line:646,column:36},end:{line:648,column:37}},{start:{line:646,column:36},end:{line:648,column:37}}],line:646},"118":{loc:{start:{line:668,column:16},end:{line:715,column:17}},type:"switch",locations:[{start:{line:669,column:20},end:{line:687,column:37}},{start:{line:688,column:20},end:{line:690,column:69}},{start:{line:691,column:20},end:{line:702,column:48}},{start:{line:703,column:20},end:{line:713,column:48}},{start:{line:714,column:20},end:{line:714,column:50}}],line:668},"119":{loc:{start:{line:671,column:24},end:{line:673,column:25}},type:"if",locations:[{start:{line:671,column:24},end:{line:673,column:25}},{start:{line:671,column:24},end:{line:673,column:25}}],line:671},"120":{loc:{start:{line:679,column:24},end:{line:681,column:25}},type:"if",locations:[{start:{line:679,column:24},end:{line:681,column:25}},{start:{line:679,column:24},end:{line:681,column:25}}],line:679},"121":{loc:{start:{line:694,column:24},end:{line:701,column:25}},type:"if",locations:[{start:{line:694,column:24},end:{line:701,column:25}},{start:{line:694,column:24},end:{line:701,column:25}}],line:694},"122":{loc:{start:{line:694,column:29},end:{line:694,column:103}},type:"cond-expr",locations:[{start:{line:694,column:78},end:{line:694,column:84}},{start:{line:694,column:87},end:{line:694,column:103}}],line:694},"123":{loc:{start:{line:694,column:29},end:{line:694,column:75}},type:"binary-expr",locations:[{start:{line:694,column:29},end:{line:694,column:58}},{start:{line:694,column:62},end:{line:694,column:75}}],line:694},"124":{loc:{start:{line:695,column:28},end:{line:695,column:377}},type:"cond-expr",locations:[{start:{line:695,column:75},end:{line:695,column:81}},{start:{line:695,column:84},end:{line:695,column:377}}],line:695},"125":{loc:{start:{line:695,column:28},end:{line:695,column:72}},type:"binary-expr",locations:[{start:{line:695,column:28},end:{line:695,column:55}},{start:{line:695,column:59},end:{line:695,column:72}}],line:695},"126":{loc:{start:{line:699,column:28},end:{line:699,column:449}},type:"cond-expr",locations:[{start:{line:699,column:75},end:{line:699,column:81}},{start:{line:699,column:84},end:{line:699,column:449}}],line:699},"127":{loc:{start:{line:699,column:28},end:{line:699,column:72}},type:"binary-expr",locations:[{start:{line:699,column:28},end:{line:699,column:55}},{start:{line:699,column:59},end:{line:699,column:72}}],line:699},"128":{loc:{start:{line:706,column:24},end:{line:706,column:314}},type:"cond-expr",locations:[{start:{line:706,column:71},end:{line:706,column:77}},{start:{line:706,column:80},end:{line:706,column:314}}],line:706},"129":{loc:{start:{line:706,column:24},end:{line:706,column:68}},type:"binary-expr",locations:[{start:{line:706,column:24},end:{line:706,column:51}},{start:{line:706,column:55},end:{line:706,column:68}}],line:706},"130":{loc:{start:{line:707,column:24},end:{line:712,column:25}},type:"if",locations:[{start:{line:707,column:24},end:{line:712,column:25}},{start:{line:707,column:24},end:{line:712,column:25}}],line:707},"131":{loc:{start:{line:726,column:8},end:{line:726,column:107}},type:"if",locations:[{start:{line:726,column:8},end:{line:726,column:107}},{start:{line:726,column:8},end:{line:726,column:107}}],line:726},"132":{loc:{start:{line:732,column:16},end:{line:734,column:17}},type:"if",locations:[{start:{line:732,column:16},end:{line:734,column:17}},{start:{line:732,column:16},end:{line:734,column:17}}],line:732},"133":{loc:{start:{line:740,column:16},end:{line:743,column:17}},type:"if",locations:[{start:{line:740,column:16},end:{line:743,column:17}},{start:{line:740,column:16},end:{line:743,column:17}}],line:740},"134":{loc:{start:{line:753,column:28},end:{line:774,column:29}},type:"switch",locations:[{start:{line:754,column:32},end:{line:756,column:81}},{start:{line:757,column:32},end:{line:764,column:60}},{start:{line:765,column:32},end:{line:772,column:60}},{start:{line:773,column:32},end:{line:773,column:62}}],line:753},"135":{loc:{start:{line:760,column:36},end:{line:762,column:37}},type:"if",locations:[{start:{line:760,column:36},end:{line:762,column:37}},{start:{line:760,column:36},end:{line:762,column:37}}],line:760},"136":{loc:{start:{line:768,column:36},end:{line:770,column:37}},type:"if",locations:[{start:{line:768,column:36},end:{line:770,column:37}},{start:{line:768,column:36},end:{line:770,column:37}}],line:768},"137":{loc:{start:{line:787,column:8},end:{line:787,column:101}},type:"if",locations:[{start:{line:787,column:8},end:{line:787,column:101}},{start:{line:787,column:8},end:{line:787,column:101}}],line:787},"138":{loc:{start:{line:793,column:16},end:{line:795,column:17}},type:"if",locations:[{start:{line:793,column:16},end:{line:795,column:17}},{start:{line:793,column:16},end:{line:795,column:17}}],line:793},"139":{loc:{start:{line:801,column:16},end:{line:805,column:17}},type:"if",locations:[{start:{line:801,column:16},end:{line:805,column:17}},{start:{line:801,column:16},end:{line:805,column:17}}],line:801},"140":{loc:{start:{line:806,column:16},end:{line:808,column:17}},type:"if",locations:[{start:{line:806,column:16},end:{line:808,column:17}},{start:{line:806,column:16},end:{line:808,column:17}}],line:806},"141":{loc:{start:{line:818,column:28},end:{line:840,column:29}},type:"switch",locations:[{start:{line:819,column:32},end:{line:821,column:81}},{start:{line:822,column:32},end:{line:830,column:60}},{start:{line:831,column:32},end:{line:838,column:60}},{start:{line:839,column:32},end:{line:839,column:62}}],line:818},"142":{loc:{start:{line:826,column:36},end:{line:828,column:37}},type:"if",locations:[{start:{line:826,column:36},end:{line:828,column:37}},{start:{line:826,column:36},end:{line:828,column:37}}],line:826},"143":{loc:{start:{line:834,column:36},end:{line:836,column:37}},type:"if",locations:[{start:{line:834,column:36},end:{line:836,column:37}},{start:{line:834,column:36},end:{line:836,column:37}}],line:834},"144":{loc:{start:{line:854,column:8},end:{line:854,column:99}},type:"if",locations:[{start:{line:854,column:8},end:{line:854,column:99}},{start:{line:854,column:8},end:{line:854,column:99}}],line:854},"145":{loc:{start:{line:860,column:16},end:{line:862,column:17}},type:"if",locations:[{start:{line:860,column:16},end:{line:862,column:17}},{start:{line:860,column:16},end:{line:862,column:17}}],line:860},"146":{loc:{start:{line:871,column:16},end:{line:879,column:17}},type:"if",locations:[{start:{line:871,column:16},end:{line:879,column:17}},{start:{line:871,column:16},end:{line:879,column:17}}],line:871},"147":{loc:{start:{line:871,column:20},end:{line:871,column:156}},type:"binary-expr",locations:[{start:{line:871,column:20},end:{line:871,column:71}},{start:{line:871,column:76},end:{line:871,column:98}},{start:{line:871,column:102},end:{line:871,column:155}}],line:871},"148":{loc:{start:{line:873,column:20},end:{line:875,column:21}},type:"if",locations:[{start:{line:873,column:20},end:{line:875,column:21}},{start:{line:873,column:20},end:{line:875,column:21}}],line:873},"149":{loc:{start:{line:877,column:21},end:{line:879,column:17}},type:"if",locations:[{start:{line:877,column:21},end:{line:879,column:17}},{start:{line:877,column:21},end:{line:879,column:17}}],line:877},"150":{loc:{start:{line:888,column:28},end:{line:910,column:29}},type:"switch",locations:[{start:{line:889,column:32},end:{line:891,column:81}},{start:{line:892,column:32},end:{line:900,column:60}},{start:{line:901,column:32},end:{line:908,column:60}},{start:{line:909,column:32},end:{line:909,column:62}}],line:888},"151":{loc:{start:{line:896,column:36},end:{line:898,column:37}},type:"if",locations:[{start:{line:896,column:36},end:{line:898,column:37}},{start:{line:896,column:36},end:{line:898,column:37}}],line:896},"152":{loc:{start:{line:904,column:36},end:{line:906,column:37}},type:"if",locations:[{start:{line:904,column:36},end:{line:906,column:37}},{start:{line:904,column:36},end:{line:906,column:37}}],line:904},"153":{loc:{start:{line:924,column:8},end:{line:924,column:93}},type:"if",locations:[{start:{line:924,column:8},end:{line:924,column:93}},{start:{line:924,column:8},end:{line:924,column:93}}],line:924},"154":{loc:{start:{line:930,column:16},end:{line:932,column:17}},type:"if",locations:[{start:{line:930,column:16},end:{line:932,column:17}},{start:{line:930,column:16},end:{line:932,column:17}}],line:930},"155":{loc:{start:{line:941,column:16},end:{line:943,column:17}},type:"if",locations:[{start:{line:941,column:16},end:{line:943,column:17}},{start:{line:941,column:16},end:{line:943,column:17}}],line:941},"156":{loc:{start:{line:953,column:28},end:{line:974,column:29}},type:"switch",locations:[{start:{line:954,column:32},end:{line:956,column:81}},{start:{line:957,column:32},end:{line:964,column:60}},{start:{line:965,column:32},end:{line:972,column:60}},{start:{line:973,column:32},end:{line:973,column:62}}],line:953},"157":{loc:{start:{line:960,column:36},end:{line:962,column:37}},type:"if",locations:[{start:{line:960,column:36},end:{line:962,column:37}},{start:{line:960,column:36},end:{line:962,column:37}}],line:960},"158":{loc:{start:{line:968,column:36},end:{line:970,column:37}},type:"if",locations:[{start:{line:968,column:36},end:{line:970,column:37}},{start:{line:968,column:36},end:{line:970,column:37}}],line:968},"159":{loc:{start:{line:990,column:16},end:{line:992,column:17}},type:"if",locations:[{start:{line:990,column:16},end:{line:992,column:17}},{start:{line:990,column:16},end:{line:992,column:17}}],line:990},"160":{loc:{start:{line:993,column:16},end:{line:995,column:17}},type:"if",locations:[{start:{line:993,column:16},end:{line:995,column:17}},{start:{line:993,column:16},end:{line:995,column:17}}],line:993},"161":{loc:{start:{line:1010,column:28},end:{line:1032,column:29}},type:"switch",locations:[{start:{line:1011,column:32},end:{line:1013,column:81}},{start:{line:1014,column:32},end:{line:1022,column:60}},{start:{line:1023,column:32},end:{line:1030,column:60}},{start:{line:1031,column:32},end:{line:1031,column:62}}],line:1010},"162":{loc:{start:{line:1018,column:36},end:{line:1020,column:37}},type:"if",locations:[{start:{line:1018,column:36},end:{line:1020,column:37}},{start:{line:1018,column:36},end:{line:1020,column:37}}],line:1018},"163":{loc:{start:{line:1026,column:36},end:{line:1028,column:37}},type:"if",locations:[{start:{line:1026,column:36},end:{line:1028,column:37}},{start:{line:1026,column:36},end:{line:1028,column:37}}],line:1026},"164":{loc:{start:{line:1045,column:8},end:{line:1045,column:105}},type:"if",locations:[{start:{line:1045,column:8},end:{line:1045,column:105}},{start:{line:1045,column:8},end:{line:1045,column:105}}],line:1045},"165":{loc:{start:{line:1049,column:16},end:{line:1092,column:17}},type:"switch",locations:[{start:{line:1050,column:20},end:{line:1072,column:37}},{start:{line:1073,column:20},end:{line:1075,column:69}},{start:{line:1076,column:20},end:{line:1083,column:48}},{start:{line:1084,column:20},end:{line:1090,column:39}},{start:{line:1091,column:20},end:{line:1091,column:50}}],line:1049},"166":{loc:{start:{line:1052,column:24},end:{line:1054,column:25}},type:"if",locations:[{start:{line:1052,column:24},end:{line:1054,column:25}},{start:{line:1052,column:24},end:{line:1054,column:25}}],line:1052},"167":{loc:{start:{line:1061,column:24},end:{line:1064,column:25}},type:"if",locations:[{start:{line:1061,column:24},end:{line:1064,column:25}},{start:{line:1061,column:24},end:{line:1064,column:25}}],line:1061},"168":{loc:{start:{line:1080,column:24},end:{line:1082,column:25}},type:"if",locations:[{start:{line:1080,column:24},end:{line:1082,column:25}},{start:{line:1080,column:24},end:{line:1082,column:25}}],line:1080},"169":{loc:{start:{line:1087,column:24},end:{line:1089,column:25}},type:"if",locations:[{start:{line:1087,column:24},end:{line:1089,column:25}},{start:{line:1087,column:24},end:{line:1089,column:25}}],line:1087},"170":{loc:{start:{line:1105,column:16},end:{line:1107,column:17}},type:"if",locations:[{start:{line:1105,column:16},end:{line:1107,column:17}},{start:{line:1105,column:16},end:{line:1107,column:17}}],line:1105},"171":{loc:{start:{line:1105,column:20},end:{line:1105,column:100}},type:"binary-expr",locations:[{start:{line:1105,column:20},end:{line:1105,column:43}},{start:{line:1105,column:47},end:{line:1105,column:100}}],line:1105},"172":{loc:{start:{line:1109,column:16},end:{line:1111,column:17}},type:"if",locations:[{start:{line:1109,column:16},end:{line:1111,column:17}},{start:{line:1109,column:16},end:{line:1111,column:17}}],line:1109},"173":{loc:{start:{line:1109,column:20},end:{line:1109,column:100}},type:"binary-expr",locations:[{start:{line:1109,column:20},end:{line:1109,column:43}},{start:{line:1109,column:47},end:{line:1109,column:100}}],line:1109},"174":{loc:{start:{line:1124,column:28},end:{line:1146,column:29}},type:"switch",locations:[{start:{line:1125,column:32},end:{line:1127,column:81}},{start:{line:1128,column:32},end:{line:1136,column:60}},{start:{line:1137,column:32},end:{line:1144,column:60}},{start:{line:1145,column:32},end:{line:1145,column:62}}],line:1124},"175":{loc:{start:{line:1132,column:36},end:{line:1134,column:37}},type:"if",locations:[{start:{line:1132,column:36},end:{line:1134,column:37}},{start:{line:1132,column:36},end:{line:1134,column:37}}],line:1132},"176":{loc:{start:{line:1140,column:36},end:{line:1142,column:37}},type:"if",locations:[{start:{line:1140,column:36},end:{line:1142,column:37}},{start:{line:1140,column:36},end:{line:1142,column:37}}],line:1140}},s:{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0,"75":0,"76":0,"77":0,"78":0,"79":0,"80":0,"81":0,"82":0,"83":0,"84":0,"85":0,"86":0,"87":0,"88":0,"89":0,"90":0,"91":0,"92":0,"93":0,"94":0,"95":0,"96":0,"97":0,"98":0,"99":0,"100":0,"101":0,"102":0,"103":0,"104":0,"105":0,"106":0,"107":0,"108":0,"109":0,"110":0,"111":0,"112":0,"113":0,"114":0,"115":0,"116":0,"117":0,"118":0,"119":0,"120":0,"121":0,"122":0,"123":0,"124":0,"125":0,"126":0,"127":0,"128":0,"129":0,"130":0,"131":0,"132":0,"133":0,"134":0,"135":0,"136":0,"137":0,"138":0,"139":0,"140":0,"141":0,"142":0,"143":0,"144":0,"145":0,"146":0,"147":0,"148":0,"149":0,"150":0,"151":0,"152":0,"153":0,"154":0,"155":0,"156":0,"157":0,"158":0,"159":0,"160":0,"161":0,"162":0,"163":0,"164":0,"165":0,"166":0,"167":0,"168":0,"169":0,"170":0,"171":0,"172":0,"173":0,"174":0,"175":0,"176":0,"177":0,"178":0,"179":0,"180":0,"181":0,"182":0,"183":0,"184":0,"185":0,"186":0,"187":0,"188":0,"189":0,"190":0,"191":0,"192":0,"193":0,"194":0,"195":0,"196":0,"197":0,"198":0,"199":0,"200":0,"201":0,"202":0,"203":0,"204":0,"205":0,"206":0,"207":0,"208":0,"209":0,"210":0,"211":0,"212":0,"213":0,"214":0,"215":0,"216":0,"217":0,"218":0,"219":0,"220":0,"221":0,"222":0,"223":0,"224":0,"225":0,"226":0,"227":0,"228":0,"229":0,"230":0,"231":0,"232":0,"233":0,"234":0,"235":0,"236":0,"237":0,"238":0,"239":0,"240":0,"241":0,"242":0,"243":0,"244":0,"245":0,"246":0,"247":0,"248":0,"249":0,"250":0,"251":0,"252":0,"253":0,"254":0,"255":0,"256":0,"257":0,"258":0,"259":0,"260":0,"261":0,"262":0,"263":0,"264":0,"265":0,"266":0,"267":0,"268":0,"269":0,"270":0,"271":0,"272":0,"273":0,"274":0,"275":0,"276":0,"277":0,"278":0,"279":0,"280":0,"281":0,"282":0,"283":0,"284":0,"285":0,"286":0,"287":0,"288":0,"289":0,"290":0,"291":0,"292":0,"293":0,"294":0,"295":0,"296":0,"297":0,"298":0,"299":0,"300":0,"301":0,"302":0,"303":0,"304":0,"305":0,"306":0,"307":0,"308":0,"309":0,"310":0,"311":0,"312":0,"313":0,"314":0,"315":0,"316":0,"317":0,"318":0,"319":0,"320":0,"321":0,"322":0,"323":0,"324":0,"325":0,"326":0,"327":0,"328":0,"329":0,"330":0,"331":0,"332":0,"333":0,"334":0,"335":0,"336":0,"337":0,"338":0,"339":0,"340":0,"341":0,"342":0,"343":0,"344":0,"345":0,"346":0,"347":0,"348":0,"349":0,"350":0,"351":0,"352":0,"353":0,"354":0,"355":0,"356":0,"357":0,"358":0,"359":0,"360":0,"361":0,"362":0,"363":0,"364":0,"365":0,"366":0,"367":0,"368":0,"369":0,"370":0,"371":0,"372":0,"373":0,"374":0,"375":0,"376":0,"377":0,"378":0,"379":0,"380":0,"381":0,"382":0,"383":0,"384":0,"385":0,"386":0,"387":0,"388":0,"389":0,"390":0,"391":0,"392":0,"393":0,"394":0,"395":0,"396":0,"397":0,"398":0,"399":0,"400":0,"401":0,"402":0,"403":0,"404":0,"405":0,"406":0,"407":0,"408":0,"409":0,"410":0,"411":0,"412":0,"413":0,"414":0,"415":0,"416":0,"417":0,"418":0,"419":0,"420":0,"421":0,"422":0,"423":0,"424":0,"425":0,"426":0,"427":0,"428":0,"429":0,"430":0,"431":0,"432":0,"433":0,"434":0,"435":0,"436":0,"437":0,"438":0,"439":0,"440":0,"441":0,"442":0,"443":0,"444":0,"445":0,"446":0,"447":0,"448":0,"449":0,"450":0,"451":0,"452":0,"453":0,"454":0,"455":0,"456":0,"457":0,"458":0,"459":0,"460":0,"461":0,"462":0,"463":0,"464":0,"465":0,"466":0,"467":0,"468":0,"469":0,"470":0,"471":0,"472":0,"473":0,"474":0,"475":0,"476":0,"477":0,"478":0,"479":0,"480":0,"481":0,"482":0,"483":0,"484":0,"485":0,"486":0,"487":0,"488":0,"489":0,"490":0,"491":0,"492":0,"493":0,"494":0,"495":0,"496":0,"497":0,"498":0,"499":0,"500":0,"501":0,"502":0,"503":0,"504":0,"505":0,"506":0,"507":0,"508":0,"509":0,"510":0,"511":0,"512":0,"513":0,"514":0,"515":0,"516":0,"517":0,"518":0,"519":0,"520":0,"521":0,"522":0,"523":0,"524":0,"525":0,"526":0,"527":0,"528":0,"529":0,"530":0,"531":0,"532":0,"533":0,"534":0,"535":0,"536":0,"537":0,"538":0,"539":0,"540":0,"541":0,"542":0,"543":0,"544":0,"545":0,"546":0,"547":0,"548":0,"549":0,"550":0,"551":0,"552":0,"553":0,"554":0,"555":0,"556":0,"557":0,"558":0,"559":0,"560":0,"561":0,"562":0,"563":0,"564":0,"565":0,"566":0,"567":0,"568":0,"569":0,"570":0,"571":0,"572":0,"573":0,"574":0,"575":0,"576":0,"577":0,"578":0,"579":0,"580":0,"581":0,"582":0,"583":0,"584":0,"585":0,"586":0,"587":0,"588":0,"589":0,"590":0,"591":0,"592":0,"593":0,"594":0,"595":0,"596":0,"597":0,"598":0,"599":0,"600":0,"601":0,"602":0,"603":0,"604":0,"605":0,"606":0,"607":0,"608":0,"609":0,"610":0,"611":0,"612":0,"613":0,"614":0,"615":0,"616":0,"617":0,"618":0,"619":0,"620":0,"621":0,"622":0,"623":0,"624":0,"625":0,"626":0,"627":0,"628":0,"629":0,"630":0,"631":0,"632":0,"633":0,"634":0,"635":0,"636":0,"637":0,"638":0,"639":0,"640":0,"641":0,"642":0,"643":0,"644":0,"645":0,"646":0,"647":0,"648":0,"649":0,"650":0,"651":0,"652":0,"653":0,"654":0,"655":0,"656":0,"657":0,"658":0,"659":0,"660":0,"661":0,"662":0,"663":0,"664":0,"665":0,"666":0,"667":0,"668":0,"669":0,"670":0,"671":0,"672":0,"673":0,"674":0,"675":0,"676":0,"677":0,"678":0,"679":0,"680":0,"681":0,"682":0,"683":0,"684":0,"685":0,"686":0,"687":0,"688":0,"689":0,"690":0,"691":0,"692":0,"693":0,"694":0,"695":0,"696":0,"697":0,"698":0,"699":0,"700":0,"701":0,"702":0,"703":0,"704":0,"705":0,"706":0,"707":0,"708":0,"709":0,"710":0,"711":0,"712":0,"713":0,"714":0,"715":0,"716":0,"717":0,"718":0,"719":0,"720":0,"721":0,"722":0,"723":0,"724":0,"725":0,"726":0,"727":0,"728":0,"729":0,"730":0,"731":0,"732":0,"733":0,"734":0,"735":0,"736":0,"737":0,"738":0,"739":0,"740":0,"741":0,"742":0,"743":0,"744":0,"745":0,"746":0,"747":0,"748":0,"749":0,"750":0,"751":0,"752":0,"753":0,"754":0,"755":0,"756":0,"757":0,"758":0,"759":0,"760":0,"761":0,"762":0,"763":0,"764":0,"765":0},f:{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0,"75":0,"76":0,"77":0,"78":0,"79":0,"80":0,"81":0,"82":0,"83":0,"84":0,"85":0,"86":0,"87":0,"88":0,"89":0,"90":0,"91":0,"92":0,"93":0,"94":0,"95":0,"96":0,"97":0,"98":0,"99":0,"100":0,"101":0,"102":0,"103":0,"104":0,"105":0,"106":0},b:{"0":[0,0,0],"1":[0,0],"2":[0,0],"3":[0,0,0],"4":[0,0],"5":[0,0],"6":[0,0],"7":[0,0],"8":[0,0,0],"9":[0,0],"10":[0,0],"11":[0,0],"12":[0,0],"13":[0,0,0],"14":[0,0],"15":[0,0],"16":[0,0],"17":[0,0],"18":[0,0],"19":[0,0,0,0,0,0],"20":[0,0],"21":[0,0,0],"22":[0,0],"23":[0,0],"24":[0,0,0,0],"25":[0,0],"26":[0,0],"27":[0,0],"28":[0,0],"29":[0,0],"30":[0,0],"31":[0,0],"32":[0,0],"33":[0,0],"34":[0,0],"35":[0,0],"36":[0,0],"37":[0,0],"38":[0,0],"39":[0,0],"40":[0,0],"41":[0,0],"42":[0,0],"43":[0,0],"44":[0,0],"45":[0,0],"46":[0,0],"47":[0,0],"48":[0,0],"49":[0,0],"50":[0,0],"51":[0,0,0,0],"52":[0,0],"53":[0,0],"54":[0,0],"55":[0,0],"56":[0,0],"57":[0,0],"58":[0,0],"59":[0,0],"60":[0,0,0],"61":[0,0],"62":[0,0],"63":[0,0],"64":[0,0,0,0],"65":[0,0],"66":[0,0],"67":[0,0],"68":[0,0],"69":[0,0],"70":[0,0],"71":[0,0],"72":[0,0,0,0],"73":[0,0],"74":[0,0],"75":[0,0],"76":[0,0],"77":[0,0,0,0],"78":[0,0],"79":[0,0],"80":[0,0],"81":[0,0],"82":[0,0],"83":[0,0],"84":[0,0],"85":[0,0],"86":[0,0],"87":[0,0],"88":[0,0],"89":[0,0],"90":[0,0],"91":[0,0],"92":[0,0,0,0],"93":[0,0],"94":[0,0],"95":[0,0],"96":[0,0],"97":[0,0],"98":[0,0],"99":[0,0],"100":[0,0],"101":[0,0],"102":[0,0],"103":[0,0],"104":[0,0],"105":[0,0],"106":[0,0],"107":[0,0,0,0],"108":[0,0],"109":[0,0],"110":[0,0],"111":[0,0],"112":[0,0],"113":[0,0],"114":[0,0],"115":[0,0,0,0],"116":[0,0],"117":[0,0],"118":[0,0,0,0,0],"119":[0,0],"120":[0,0],"121":[0,0],"122":[0,0],"123":[0,0],"124":[0,0],"125":[0,0],"126":[0,0],"127":[0,0],"128":[0,0],"129":[0,0],"130":[0,0],"131":[0,0],"132":[0,0],"133":[0,0],"134":[0,0,0,0],"135":[0,0],"136":[0,0],"137":[0,0],"138":[0,0],"139":[0,0],"140":[0,0],"141":[0,0,0,0],"142":[0,0],"143":[0,0],"144":[0,0],"145":[0,0],"146":[0,0],"147":[0,0,0],"148":[0,0],"149":[0,0],"150":[0,0,0,0],"151":[0,0],"152":[0,0],"153":[0,0],"154":[0,0],"155":[0,0],"156":[0,0,0,0],"157":[0,0],"158":[0,0],"159":[0,0],"160":[0,0],"161":[0,0,0,0],"162":[0,0],"163":[0,0],"164":[0,0],"165":[0,0,0,0,0],"166":[0,0],"167":[0,0],"168":[0,0],"169":[0,0],"170":[0,0],"171":[0,0],"172":[0,0],"173":[0,0],"174":[0,0,0,0],"175":[0,0],"176":[0,0]},inputSourceMap:{version:3,file:"/home/runner/work/omnichannel-sdk/omnichannel-sdk/src/SDK.ts",sourceRoot:"",sources:["/home/runner/work/omnichannel-sdk/omnichannel-sdk/src/SDK.ts"],names:[],mappings:"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",sourcesContent:["import { ChannelId, LiveChatVersion } from \"./Common/Enums\";\nimport axios, { AxiosRequestConfig } from \"axios\";\nimport { BrowserInfo } from \"./Utils/BrowserInfo\";\nimport Constants from \"./Common/Constants\";\nimport { DeviceInfo } from \"./Utils/DeviceInfo\";\nimport FetchChatTokenResponse from \"./Model/FetchChatTokenResponse\";\nimport IDataMaskingInfo from \"./Interfaces/IDataMaskingInfo\";\nimport IEmailTranscriptOptionalParams from \"./Interfaces/IEmailTranscriptOptionalParams\";\nimport IGetChatTokenOptionalParams from \"./Interfaces/IGetChatTokenOptionalParams\";\nimport IGetChatTranscriptsOptionalParams from \"./Interfaces/IGetChatTranscriptsOptionalParams\";\nimport IGetLWIDetailsOptionalParams from \"./Interfaces/IGetLWIDetailsOptionalParams\";\nimport IGetQueueAvailabilityOptionalParams from \"./Interfaces/IGetQueueAvailabilityOptionalParams\";\nimport IGetSurveyInviteLinkOptionalParams from \"./Interfaces/IGetSurveyInviteLinkOptionalParams\";\nimport IOmnichannelConfiguration from \"./Interfaces/IOmnichannelConfiguration\";\nimport IReconnectableChatsParams from \"./Interfaces/IReconnectableChatsParams\";\nimport ISDK from \"./Interfaces/ISDK\";\nimport ISDKConfiguration from \"./Interfaces/ISDKConfiguration\";\nimport ISecondaryChannelEventOptionalParams from \"./Interfaces/ISecondaryChannelEventOptionalParams\";\nimport ISessionCloseOptionalParams from \"./Interfaces/ISessionCloseOptionalParams\";\nimport ISessionInitOptionalParams from \"./Interfaces/ISessionInitOptionalParams\";\nimport ISubmitPostChatResponseOptionalParams from \"./Interfaces/ISubmitPostChatResponseOptionalParams\";\nimport IValidateAuthChatRecordOptionalParams from \"./Interfaces/IValidateAuthChatRecordOptionalParams\";\nimport InitContext from \"./Model/InitContext\";\nimport Locales from \"./Common/Locales\";\nimport { LogLevel } from \"./Model/LogLevel\";\nimport OCSDKLogger from \"./Common/OCSDKLogger\";\nimport { OCSDKTelemetryEvent } from \"./Common/Enums\";\nimport { OSInfo } from \"./Utils/OSInfo\";\nimport OmnichannelEndpoints from \"./Common/OmnichannelEndpoints\";\nimport OmnichannelHTTPHeaders from \"./Common/OmnichannelHTTPHeaders\";\nimport QueueAvailability from \"./Model/QueueAvailability\";\nimport ReconnectAvailability from \"./Model/ReconnectAvailability\";\nimport ReconnectMappingRecord from \"./Model/ReconnectMappingRecord\";\nimport { StringMap } from \"./Common/Mappings\";\nimport { Timer } from \"./Utils/Timer\";\nimport axiosRetry from \"./Utils/axiosRetry\";\nimport { uuidv4 } from \"./Utils/uuid\";\n\nexport default class SDK implements ISDK {\n private static defaultConfiguration: ISDKConfiguration = {\n getChatTokenRetryCount: 35,\n getChatTokenTimeBetweenRetriesOnFailure: 10000,\n maxRequestRetriesOnFailure: 3\n };\n \n liveChatVersion: number;\n\n public constructor(private omnichannelConfiguration: IOmnichannelConfiguration, private configuration: ISDKConfiguration = SDK.defaultConfiguration, private logger?: OCSDKLogger) {\n // Sets to default configuration if passed configuration is empty or is not an object\n if (!Object.keys(this.configuration).length || typeof (configuration) !== \"object\") {\n this.configuration = SDK.defaultConfiguration;\n }\n\n // Validate SDK config\n for (const key of Object.keys(SDK.defaultConfiguration)) {\n if (!this.configuration.hasOwnProperty(key)) { // eslint-disable-line no-prototype-builtins\n throw new Error(`Missing '${key}' in SDKConfiguration`);\n }\n }\n\n // Validate channelId\n const { channelId } = omnichannelConfiguration;\n if (!Object.values(ChannelId).includes(channelId as ChannelId)) {\n throw new Error(`Invalid channelId`);\n }\n\n // Validate OC config\n const currentOmnichannelConfigurationParameters = Object.keys(omnichannelConfiguration);\n for (const key of Constants.requiredOmnichannelConfigurationParameters) {\n if (!currentOmnichannelConfigurationParameters.includes(key)) {\n throw new Error(`Missing '${key}' in OmnichannelConfiguration`);\n }\n }\n \n this.liveChatVersion = LiveChatVersion.V1;\n }\n\n /**\n * Fetches chat config.\n * @param requestId: RequestId to use to get chat config (Optional).\n */\n public async getChatConfig(requestId: string, bypassCache = false): Promise<object> {\n const timer = Timer.TIMER();\n if (this.logger) {\n this.logger.log(LogLevel.INFO,\n OCSDKTelemetryEvent.GETCHATCONFIG,\n { RequestId: requestId},\n \"Get Chat Config Started\");\n }\n if (!requestId) {\n requestId = uuidv4();\n }\n\n const endpoint = `${this.omnichannelConfiguration.orgUrl}/${OmnichannelEndpoints.LiveChatConfigPath}/${this.omnichannelConfiguration.orgId}/${this.omnichannelConfiguration.widgetId}?requestId=${requestId}&channelId=${this.omnichannelConfiguration.channelId}`;\n const axiosInstance = axios.create();\n axiosRetry(axiosInstance, { retries: this.configuration.maxRequestRetriesOnFailure });\n\n let headers = {};\n if (bypassCache) {\n headers = { ...Constants.bypassCacheHeaders, ...headers };\n }\n const response = await axiosInstance.get(endpoint, {\n headers,\n });\n const elapsedTimeInMilliseconds = timer.milliSecondsElapsed;\n const { data } = response;\n if (data.LiveChatVersion && data.LiveChatVersion === LiveChatVersion.V2) {\n this.liveChatVersion = data.LiveChatVersion;\n }\n if (this.logger) {\n this.logger.log(LogLevel.INFO,\n OCSDKTelemetryEvent.GETCHATCONFIGSUCCESS,\n { RequestId: requestId, Region: response.data.Region, ElapsedTimeInMilliseconds: elapsedTimeInMilliseconds, TransactionId: response.headers[\"transaction-id\"] },\n \"Get Chat config succeeded\");\n }\n return data;\n }\n\n /**\n * Fetches LWI details.\n * @param requestId: RequestId to use to get chat config (Optional).\n * @param getLWIDetailsOptionalParams: Optional parameters for get LWI Details.\n */\n public async getLWIDetails(requestId: string, getLWIDetailsOptionalParams: IGetLWIDetailsOptionalParams = {}): Promise<object> {\n const timer = Timer.TIMER();\n if (this.logger) {\n this.logger.log(LogLevel.INFO,\n OCSDKTelemetryEvent.GETLWISTATUSSTARTED,\n { RequestId: requestId },\n \"Get LWI Details Started\");\n }\n if (!requestId) {\n requestId = uuidv4();\n }\n\n // construct a endpoint for anonymous chats to get LWI Details\n let endpoint = `${this.omnichannelConfiguration.orgUrl}/${OmnichannelEndpoints.LiveChatLiveWorkItemDetailsPath}/${this.omnichannelConfiguration.orgId}/${this.omnichannelConfiguration.widgetId}/${requestId}`;\n const axiosInstance = axios.create();\n axiosRetry(axiosInstance, { retries: this.configuration.maxRequestRetriesOnFailure });\n\n // Extract auth token and reconnect id from optional param\n const { authenticatedUserToken, reconnectId } = getLWIDetailsOptionalParams;\n const headers: StringMap = Constants.defaultHeaders;\n\n // updated auth endpoint for authenticated chats and add auth token in header\n if (authenticatedUserToken) {\n endpoint = `${this.omnichannelConfiguration.orgUrl}/${OmnichannelEndpoints.LiveChatAuthLiveWorkItemDetailsPath}/${this.omnichannelConfiguration.orgId}/${this.omnichannelConfiguration.widgetId}/${requestId}`;\n headers[OmnichannelHTTPHeaders.authenticatedUserToken] = authenticatedUserToken;\n }\n\n // Append reconnect id on the endpoint if vailable\n if (reconnectId) {\n endpoint += `/${reconnectId}`;\n }\n endpoint += `?channelId=${this.omnichannelConfiguration.channelId}`;\n\n const options: AxiosRequestConfig = {\n headers,\n method: \"GET\",\n url: endpoint\n };\n\n return new Promise(async (resolve, reject) => {\n try {\n const response = await axiosInstance(options);\n const elapsedTimeInMilliseconds = timer.milliSecondsElapsed;\n const { data } = response;\n if (this.logger) {\n this.logger.log(LogLevel.INFO,\n OCSDKTelemetryEvent.GETLWISTATUSSUCCEEDED,\n { RequestId: requestId, Region: response.data.Region, ElapsedTimeInMilliseconds: elapsedTimeInMilliseconds, TransactionId: response.headers[\"transaction-id\"] },\n \"Get LWI Details succeeded\");\n }\n resolve(data);\n } catch (error) {\n const elapsedTimeInMilliseconds = timer.milliSecondsElapsed;\n if (this.logger) {\n this.logger.log(LogLevel.ERROR,\n OCSDKTelemetryEvent.GETLWISTATUSFAILED,\n { RequestId: requestId, ExceptionDetails: error, ElapsedTimeInMilliseconds: elapsedTimeInMilliseconds },\n \"Get LWI Details failed\");\n }\n reject();\n }\n });\n }\n /**\n * Fetches the chat token from Omnichannel to join T1 thread.\n * @param requestId: RequestId to use for getchattoken (Optional).\n * @param getChatTokenOptionalParams: Optional parameters for get chat token.\n */\n public async getChatToken(requestId: string, getChatTokenOptionalParams: IGetChatTokenOptionalParams = {}, currentRetryCount: number = 0): Promise<FetchChatTokenResponse> { // eslint-disable-line @typescript-eslint/no-inferrable-types\n const timer = Timer.TIMER();\n const { reconnectId, authenticatedUserToken, currentLiveChatVersion } = getChatTokenOptionalParams;\n if (this.logger) {\n this.logger.log(LogLevel.INFO,\n OCSDKTelemetryEvent.GETCHATTOKENSTARTED,\n { RequestId: requestId },\n \"Get Chat Token Started\");\n }\n if (currentRetryCount < 0) {\n throw new Error(`Invalid currentRetryCount`);\n }\n\n if (!requestId) {\n requestId = uuidv4();\n }\n const headers: StringMap = Constants.defaultHeaders; \n let endpoint = `${this.omnichannelConfiguration.orgUrl}/${OmnichannelEndpoints.LiveChatGetChatTokenPath}/${this.omnichannelConfiguration.orgId}/${this.omnichannelConfiguration.widgetId}/${requestId}`;\n\n if (this.liveChatVersion === LiveChatVersion.V2 || (currentLiveChatVersion && currentLiveChatVersion === LiveChatVersion.V2)) {\n endpoint = `${this.omnichannelConfiguration.orgUrl}/${OmnichannelEndpoints.LiveChatv2GetChatTokenPath}/${this.omnichannelConfiguration.orgId}/${this.omnichannelConfiguration.widgetId}/${requestId}`;\n if (authenticatedUserToken) {\n endpoint = `${this.omnichannelConfiguration.orgUrl}/${OmnichannelEndpoints.LiveChatv2AuthGetChatTokenPath}/${this.omnichannelConfiguration.orgId}/${this.omnichannelConfiguration.widgetId}/${requestId}`;\n headers[OmnichannelHTTPHeaders.authenticatedUserToken] = authenticatedUserToken;\n }\n } else {\n if (authenticatedUserToken) {\n endpoint = `${this.omnichannelConfiguration.orgUrl}/${OmnichannelEndpoints.LiveChatAuthGetChatTokenPath}/${this.omnichannelConfiguration.orgId}/${this.omnichannelConfiguration.widgetId}/${requestId}`;\n headers[OmnichannelHTTPHeaders.authenticatedUserToken] = authenticatedUserToken;\n }\n }\n \n if (reconnectId) {\n endpoint += `/${reconnectId}`;\n }\n endpoint += `?channelId=${this.omnichannelConfiguration.channelId}`;\n\n const options: AxiosRequestConfig = {\n headers,\n method: \"GET\",\n url: endpoint\n };\n const axiosInstance = axios.create();\n axiosRetry(axiosInstance, { retries: this.configuration.maxRequestRetriesOnFailure });\n return new Promise(async (resolve, reject) => {\n try {\n const response = await axiosInstance(options);\n const elapsedTimeInMilliseconds = timer.milliSecondsElapsed;\n const { data } = response;\n // Resolves only if it contains chat token response which only happens on status 200\n if (data) {\n data.requestId = requestId;\n if (this.logger) {\n this.logger.log(LogLevel.INFO,\n OCSDKTelemetryEvent.GETCHATTOKENSUCCEEDED,\n { RequestId: requestId, Region: response.data.Region, ElapsedTimeInMilliseconds: elapsedTimeInMilliseconds, TransactionId: response.headers[\"transaction-id\"] },\n \"Get Chat Token Succeeded\");\n }\n resolve(data);\n return;\n }\n\n // No content for reconnect chat case shouldn't be retried.\n if (reconnectId && response.status === Constants.noContentStatusCode) {\n reject(response);\n return;\n }\n } catch (error) {\n const elapsedTimeInMilliseconds = timer.milliSecondsElapsed;\n if (this.logger) {\n this.logger.log(LogLevel.ERROR,\n OCSDKTelemetryEvent.GETCHATTOKENFAILED,\n { RequestId: requestId, ExceptionDetails: error, ElapsedTimeInMilliseconds: elapsedTimeInMilliseconds},\n \"Get Chat Token Failed\");\n }\n reject(error);\n return;\n }\n\n // Base case\n if (currentRetryCount + 1 >= this.configuration.getChatTokenRetryCount) {\n reject(new Error(`The retry for getchattoken has exceeded its max value of ${this.configuration.getChatTokenRetryCount}`));\n return;\n }\n\n // Retries until it reaches its limit\n setTimeout(() => {\n this.getChatToken(requestId, getChatTokenOptionalParams, currentRetryCount + 1).then((response) => resolve(response)).catch((error) => reject(error));\n }, this.configuration.getChatTokenTimeBetweenRetriesOnFailure);\n });\n }\n\n /**\n * Fetches the reconnectable chats from omnichannel from the given user information in JWT token(claim name: sub).\n * @param reconnectableChatsParams Mandate parameters for get reconnectable chats.\n */\n public async getReconnectableChats(reconnectableChatsParams: IReconnectableChatsParams): Promise<ReconnectMappingRecord> {\n const timer = Timer.TIMER();\n const { authenticatedUserToken } = reconnectableChatsParams;\n if (this.logger) {\n this.logger.log(LogLevel.INFO,\n OCSDKTelemetryEvent.GETRECONNECTABLECHATS,\n \"Get Reconnectable chat Started\");\n }\n\n const endpoint = `${this.omnichannelConfiguration.orgUrl}/${OmnichannelEndpoints.LiveChatGetReconnectableChatsPath}/${this.omnichannelConfiguration.orgId}/${this.omnichannelConfiguration.widgetId}/${this.omnichannelConfiguration.orgId}?channelId=${this.omnichannelConfiguration.channelId}`;\n const headers: StringMap = Constants.defaultHeaders;\n headers[OmnichannelHTTPHeaders.authenticatedUserToken] = authenticatedUserToken;\n\n const options: AxiosRequestConfig = {\n headers,\n method: \"GET\",\n url: endpoint\n };\n\n const axiosInstance = axios.create();\n return new Promise(async (resolve, reject) => {\n try {\n const response = await axiosInstance(options);\n const elapsedTimeInMilliseconds = timer.milliSecondsElapsed;\n const { data } = response;\n\n // Resolves only if it contains reconnectable chats response which only happens on status 200\n if (data) {\n if (this.logger) {\n this.logger.log(LogLevel.INFO,\n OCSDKTelemetryEvent.GETRECONNECTABLECHATS,\n { Region: response.data.Region, ElapsedTimeInMilliseconds: elapsedTimeInMilliseconds, TransactionId: response.headers[Constants.transactionid] },\n \"Get Reconnectable Chats Succeeded and old session returned\");\n }\n resolve(data);\n return;\n }\n // No data found in the old sessions so returning null\n resolve();\n return;\n } catch (error) {\n const elapsedTimeInMilliseconds = timer.milliSecondsElapsed;\n if (this.logger) {\n this.logger.log(LogLevel.ERROR,\n OCSDKTelemetryEvent.GETCHATTOKENFAILED,\n { ExceptionDetails: error, ElapsedTimeInMilliseconds: elapsedTimeInMilliseconds},\n \"Get Reconnectable Chats Failed\");\n }\n reject(error);\n return;\n }\n });\n }\n\n /**\n * Fetches the reconnectable chats from omnichannel from the given user information in JWT token(claim name: sub).\n * @param reconnectableChatsParams Mandate parameters for get reconnectable chats.\n */\n public async getReconnectAvailability(reconnectId: string): Promise<ReconnectAvailability> {\n const timer = Timer.TIMER();\n if (this.logger) {\n this.logger.log(LogLevel.INFO,\n OCSDKTelemetryEvent.GETRECONNECTAVAILABILITY,\n \"Get Reconnect availability started\");\n }\n\n const endpoint = `${this.omnichannelConfiguration.orgUrl}/${OmnichannelEndpoints.LiveChatReconnectAvailabilityPath}/${this.omnichannelConfiguration.orgId}/${this.omnichannelConfiguration.widgetId}/${reconnectId}`;\n const headers: StringMap = Constants.defaultHeaders;\n const options: AxiosRequestConfig = {\n headers,\n method: \"GET\",\n url: endpoint\n };\n\n const axiosInstance = axios.create();\n return new Promise(async (resolve, reject) => {\n try {\n const response = await axiosInstance(options);\n const elapsedTimeInMilliseconds = timer.milliSecondsElapsed;\n const { data } = response;\n if (data) {\n if (this.logger) {\n this.logger.log(LogLevel.INFO,\n OCSDKTelemetryEvent.GETRECONNECTAVAILABILITY,\n { Region: response.data.Region, ElapsedTimeInMilliseconds: elapsedTimeInMilliseconds, TransactionId: response.headers[Constants.transactionid] },\n \"Get Reconnect availability Succeeded\");\n }\n resolve(data);\n return;\n }\n // No data found so returning null\n if (this.logger) {\n this.logger.log(LogLevel.WARN,\n OCSDKTelemetryEvent.GETRECONNECTAVAILABILITY,\n { Region: response.data.Region, ElapsedTimeInMilliseconds: elapsedTimeInMilliseconds, TransactionId: response.headers[Constants.transactionid] },\n \"Get Reconnect availability didn't send any valid data.\");\n }\n resolve();\n return;\n } catch (error) {\n const elapsedTimeInMilliseconds = timer.milliSecondsElapsed;\n if (this.logger) {\n this.logger.log(LogLevel.ERROR,\n OCSDKTelemetryEvent.GETRECONNECTAVAILABILITY,\n { ExceptionDetails: error, ElapsedTimeInMilliseconds: elapsedTimeInMilliseconds},\n \"Get Reconnect Availability Failed\");\n }\n reject(error);\n return;\n }\n });\n }\n\n /**\n * \n * @param requestId: RequestId to use for session init.\n * @param queueAvailabilityOptionalParams: Optional parameters for session init.\n */\n public async getQueueAvailability(requestId: string, queueAvailabilityOptionalParams: IGetQueueAvailabilityOptionalParams = {}): Promise<QueueAvailability> {\n const timer = Timer.TIMER();\n if (this.logger) {\n this.logger.log(LogLevel.INFO,\n OCSDKTelemetryEvent.GETQUEUEAVAILABILITYSTARTED,\n { RequestId: requestId },\n \"Get queue availability started\");\n }\n\n const endpoint = `${this.omnichannelConfiguration.orgUrl}/${OmnichannelEndpoints.GetQueueAvailabilityPath}/${this.omnichannelConfiguration.orgId}/${this.omnichannelConfiguration.widgetId}/${requestId}?channelId=lcw`;\n const axiosInstance = axios.create();\n axiosRetry(axiosInstance, { retries: this.configuration.maxRequestRetriesOnFailure });\n\n const {authenticatedUserToken, initContext, getContext } = queueAvailabilityOptionalParams;\n\n const headers: StringMap = Constants.defaultHeaders;\n\n if (authenticatedUserToken) {\n headers[OmnichannelHTTPHeaders.authenticatedUserToken] = authenticatedUserToken;\n }\n\n const data: InitContext = initContext || {};\n\n if (getContext && !window.document) {\n return Promise.reject(new Error(`getContext is only supported on web browsers`));\n }\n\n if (getContext) {\n data.browser = BrowserInfo.getBrowserName();\n data.device = DeviceInfo.getDeviceType();\n data.originurl = window.location.href;\n data.os = OSInfo.getOsType();\n }\n\n if (!data.locale) {\n data.locale = Constants.defaultLocale;\n }\n\n // Validate locale\n if (data.locale && !Locales.supportedLocales.includes(data.locale)) {\n return Promise.reject(new Error(`Unsupported locale: '${data.locale}'`));\n }\n\n const options: AxiosRequestConfig = {\n data,\n headers,\n method: \"POST\",\n url: endpoint\n };\n\n return new Promise(async (resolve, reject) => {\n try {\n const response = await axiosInstance(options);\n const elapsedTimeInMilliseconds = timer.milliSecondsElapsed;\n const {data} = response;\n if(data) {\n if (this.logger) {\n this.logger.log(LogLevel.INFO,\n OCSDKTelemetryEvent.GETQUEUEAVAILABILITYSUCCEEDED,\n { RequestId: requestId, Region: response.data.Region, ElapsedTimeInMilliseconds: elapsedTimeInMilliseconds, TransactionId: response.headers[\"transaction-id\"] },\n \"Get queue availability Succeeded\");\n }\n resolve(data);\n }\n } catch (error) {\n const elapsedTimeInMilliseconds = timer.milliSecondsElapsed;\n if (this.logger) {\n this.logger.log(LogLevel.ERROR,\n OCSDKTelemetryEvent.GETQUEUEAVAILABILITYFAILED,\n { RequestId: requestId, ExceptionDetails: error, ElapsedTimeInMilliseconds: elapsedTimeInMilliseconds},\n \"Get queue availability failed\");\n }\n reject(error);\n }\n });\n }\n\n /**\n * Starts a session to omnichannel.\n * @param requestId: RequestId to use for session init.\n * @param sessionInitOptionalParams: Optional parameters for session init.\n */\n public async sessionInit(requestId: string, sessionInitOptionalParams: ISessionInitOptionalParams = {}): Promise<void> {\n const timer = Timer.TIMER();\n if (this.logger) {\n this.logger.log(LogLevel.INFO,\n OCSDKTelemetryEvent.SESSIONINITSTARTED,\n { RequestId: requestId },\n \"Session Init Started\");\n }\n\n const axiosInstance = axios.create();\n axiosRetry(axiosInstance, { retries: this.configuration.maxRequestRetriesOnFailure });\n\n const { reconnectId, authenticatedUserToken, initContext, getContext } = sessionInitOptionalParams;\n\n const headers: StringMap = Constants.defaultHeaders;\n let endpoint = `${this.omnichannelConfiguration.orgUrl}/${OmnichannelEndpoints.LiveChatSessionInitPath}/${this.omnichannelConfiguration.orgId}/${this.omnichannelConfiguration.widgetId}/${requestId}`;\n\n if (authenticatedUserToken) {\n endpoint = `${this.omnichannelConfiguration.orgUrl}/${OmnichannelEndpoints.LiveChatAuthSessionInitPath}/${this.omnichannelConfiguration.orgId}/${this.omnichannelConfiguration.widgetId}/${requestId}`;\n headers[OmnichannelHTTPHeaders.authenticatedUserToken] = authenticatedUserToken;\n }\n if (reconnectId) {\n endpoint += `/${reconnectId}`;\n }\n endpoint += `?channelId=${this.omnichannelConfiguration.channelId}`;\n\n const data: InitContext = initContext || {};\n\n if (getContext && !window.document) {\n return Promise.reject(new Error(`getContext is only supported on web browsers`));\n }\n\n if (getContext) {\n data.browser = BrowserInfo.getBrowserName();\n data.device = DeviceInfo.getDeviceType();\n data.originurl = window.location.href;\n data.os = OSInfo.getOsType();\n }\n\n // Set default locale if locale is empty\n if (!data.locale) {\n data.locale = Constants.defaultLocale;\n }\n\n // Validate locale\n if (data.locale && !Locales.supportedLocales.includes(data.locale)) {\n return Promise.reject(new Error(`Unsupported locale: '${data.locale}'`));\n }\n\n const options: AxiosRequestConfig = {\n data,\n headers,\n method: \"POST\",\n url: endpoint\n };\n\n return new Promise(async (resolve, reject) => {\n try {\n const response = await axiosInstance(options);\n const elapsedTimeInMilliseconds = timer.milliSecondsElapsed;\n if (this.logger) {\n this.logger.log(LogLevel.INFO,\n OCSDKTelemetryEvent.SESSIONINITSUCCEEDED,\n { RequestId: requestId, Region: response.data.Region, ElapsedTimeInMilliseconds: elapsedTimeInMilliseconds, TransactionId: response.headers[\"transaction-id\"] },\n \"Session Init Succeeded\");\n }\n resolve();\n } catch (error) {\n const elapsedTimeInMilliseconds = timer.milliSecondsElapsed;\n if (this.logger) {\n this.logger.log(LogLevel.ERROR,\n OCSDKTelemetryEvent.SESSIONINITFAILED,\n { RequestId: requestId, ExceptionDetails: error, ElapsedTimeInMilliseconds: elapsedTimeInMilliseconds},\n \"Session Init Failed\");\n }\n reject(error);\n }\n });\n }\n\n /**\n * Closes the omnichannel session.\n * @param requestId: RequestId to use for session close (same request id for session init).\n * @param sessionCloseOptionalParams: Optional parameters for session close.\n */\n public async sessionClose(requestId: string, sessionCloseOptionalParams: ISessionCloseOptionalParams = {}): Promise<void> {\n const timer = Timer.TIMER();\n if (this.logger) {\n this.logger.log(LogLevel.INFO,\n OCSDKTelemetryEvent.SESSIONCLOSESTARTED,\n { RequestId: requestId },\n \"Session Close Started\");\n }\n let endpoint = `${this.omnichannelConfiguration.orgUrl}/${OmnichannelEndpoints.LiveChatSessionClosePath}/${this.omnichannelConfiguration.orgId}/${this.omnichannelConfiguration.widgetId}/${requestId}?channelId=${this.omnichannelConfiguration.channelId}`;\n const axiosInstance = axios.create();\n axiosRetry(axiosInstance, { retries: this.configuration.maxRequestRetriesOnFailure });\n\n const { authenticatedUserToken, isReconnectChat, isPersistentChat, chatId} = sessionCloseOptionalParams;\n\n const headers: StringMap = Constants.defaultHeaders;\n const data: any = {}; // eslint-disable-line @typescript-eslint/no-explicit-any\n data.chatId = chatId;\n\n if (authenticatedUserToken) {\n endpoint = `${this.omnichannelConfiguration.orgUrl}/${OmnichannelEndpoints.LiveChatAuthSessionClosePath}/${this.omnichannelConfiguration.orgId}/${this.omnichannelConfiguration.widgetId}/${requestId}?channelId=${this.omnichannelConfiguration.channelId}`;\n headers[OmnichannelHTTPHeaders.authenticatedUserToken] = authenticatedUserToken;\n }\n\n if (isReconnectChat) {\n endpoint += `&isReconnectChat=true`;\n }\n\n if (isPersistentChat){\n endpoint += `&isPersistentChat=true`;\n }\n\n const options: AxiosRequestConfig = {\n data,\n headers,\n method: \"POST\",\n url: endpoint\n };\n\n return new Promise(async (resolve, reject) => {\n try {\n const response = await axiosInstance(options);\n const elapsedTimeInMilliseconds = timer.milliSecondsElapsed;\n if (this.logger) {\n this.logger.log(LogLevel.INFO,\n OCSDKTelemetryEvent.SESSIONCLOSESUCCEEDED,\n { RequestId: requestId, Region: response.data.Region, ElapsedTimeInMilliseconds: elapsedTimeInMilliseconds, TransactionId: response.headers[\"transaction-id\"] },\n \"Session Close Succeeded\");\n }\n resolve();\n } catch (error) {\n const elapsedTimeInMilliseconds = timer.milliSecondsElapsed;\n if (this.logger) {\n this.logger.log(LogLevel.ERROR,\n OCSDKTelemetryEvent.SESSIONCLOSEFAILED,\n { RequestId: requestId, ExceptionDetails: error, ElapsedTimeInMilliseconds: elapsedTimeInMilliseconds },\n \"Session Close Failed\");\n }\n reject();\n }\n });\n }\n /**\n * Validate the auth chat record exists in database.\n * @param requestId: RequestId for validateAuthChatRecord (same request id for session init).\n * @param validateAuthChatRecordOptionalParams: Optional parameters for validateAuthChatRecord.\n */\n public async validateAuthChatRecord(requestId: string, validateAuthChatRecordOptionalParams: IValidateAuthChatRecordOptionalParams): Promise<object> {\n const timer = Timer.TIMER();\n if (this.logger) {\n this.logger.log(LogLevel.INFO,\n OCSDKTelemetryEvent.VALIDATEAUTHCHATRECORDSTARTED,\n { RequestId: requestId },\n \"Validate Auth Chat Record Started\");\n }\n const { authenticatedUserToken, chatId } = validateAuthChatRecordOptionalParams;\n const endpoint = `${this.omnichannelConfiguration.orgUrl}/${OmnichannelEndpoints.LiveChatValidateAuthChatMapRecordPath}/${this.omnichannelConfiguration.orgId}/${this.omnichannelConfiguration.widgetId}/${chatId}/${requestId}?channelId=${this.omnichannelConfiguration.channelId}`;\n const axiosInstance = axios.create();\n axiosRetry(axiosInstance, { retries: this.configuration.maxRequestRetriesOnFailure });\n const headers: StringMap = Constants.defaultHeaders;\n if (authenticatedUserToken) {\n headers[OmnichannelHTTPHeaders.authenticatedUserToken] = authenticatedUserToken;\n }\n const options: AxiosRequestConfig = {\n headers,\n method: \"GET\",\n url: endpoint\n };\n\n try {\n const response = await axiosInstance(options);\n const elapsedTimeInMilliseconds = timer.milliSecondsElapsed;\n if (response.data?.authChatExist === true) {\n this.logger?.log(LogLevel.INFO,\n OCSDKTelemetryEvent.VALIDATEAUTHCHATRECORDSUCCEEDED,\n { RequestId: requestId, Region: response.data.Region, ElapsedTimeInMilliseconds: elapsedTimeInMilliseconds, TransactionId: response.headers[\"transaction-id\"] },\n \"Validate Auth Chat Record Succeeded\");\n return Promise.resolve(response.data);\n } else {\n this.logger?.log(LogLevel.INFO,\n OCSDKTelemetryEvent.VALIDATEAUTHCHATRECORDFAILED,\n { RequestId: requestId, Region: response.data.Region, ElapsedTimeInMilliseconds: elapsedTimeInMilliseconds, TransactionId: response.headers[\"transaction-id\"], ErrorCode: response.status},\n \"Validate Auth Chat Record Failed. Record is not found or request is not authorized\");\n return Promise.reject(new Error(\"Validate Auth Chat Record Failed. Record is not found or request is not authorized\"));\n }\n } catch (error) {\n const elapsedTimeInMilliseconds = timer.milliSecondsElapsed;\n this.logger?.log(LogLevel.ERROR,\n OCSDKTelemetryEvent.VALIDATEAUTHCHATRECORDFAILED,\n { RequestId: requestId, ExceptionDetails: error, ElapsedTimeInMilliseconds: elapsedTimeInMilliseconds },\n \"Validate Auth Chat Record Failed\");\n if (error.toString() === \"Error: Request failed with status code 404\") { // backward compatibility\n return Promise.resolve({});\n } else {\n return Promise.reject();\n }\n }\n }\n\n /**\n * Submits post chat response.\n * @param requestId RequestId of the omnichannel session.\n * @param postChatResponse Post chat response to submit.\n * @param submitPostChatResponseOptionalParams: Optional parameters for submit post chat response.\n */\n public async submitPostChatResponse(requestId: string, postChatResponse: object, submitPostChatResponseOptionalParams: ISubmitPostChatResponseOptionalParams = {}): Promise<void> {\n const timer = Timer.TIMER();\n if (this.logger) {\n this.logger.log(LogLevel.INFO,\n OCSDKTelemetryEvent.SUBMITPOSTCHATSTARTED,\n { RequestId: requestId },\n \"Submit Post Chat Started\");\n }\n let endpoint = `${this.omnichannelConfiguration.orgUrl}/${OmnichannelEndpoints.LiveChatSubmitPostChatPath}/${this.omnichannelConfiguration.orgId}/${this.omnichannelConfiguration.widgetId}/${requestId}?channelId=${this.omnichannelConfiguration.channelId}`;\n const axiosInstance = axios.create();\n axiosRetry(axiosInstance, { retries: this.configuration.maxRequestRetriesOnFailure });\n\n const { authenticatedUserToken } = submitPostChatResponseOptionalParams;\n\n const headers: StringMap = Constants.defaultHeaders;\n\n if (authenticatedUserToken) {\n endpoint = `${this.omnichannelConfiguration.orgUrl}/${OmnichannelEndpoints.LiveChatAuthSubmitPostChatPath}/${this.omnichannelConfiguration.orgId}/${this.omnichannelConfiguration.widgetId}/${requestId}?channelId=${this.omnichannelConfiguration.channelId}`;\n headers[OmnichannelHTTPHeaders.authenticatedUserToken] = authenticatedUserToken;\n }\n\n const options: AxiosRequestConfig = {\n data: JSON.stringify(postChatResponse),\n headers,\n method: \"POST\",\n url: endpoint\n };\n\n return new Promise(async (resolve, reject) => {\n try {\n const response = await axiosInstance(options);\n const elapsedTimeInMilliseconds = timer.milliSecondsElapsed;\n if (this.logger) {\n this.logger.log(LogLevel.INFO,\n OCSDKTelemetryEvent.SUBMITPOSTCHATSUCCEEDED,\n { RequestId: requestId, Region: response.data.Region, ElapsedTimeInMilliseconds: elapsedTimeInMilliseconds, TransactionId: response.headers[\"transaction-id\"] },\n \"Submit Post Chat Succeeded\");\n }\n resolve();\n } catch (error) {\n const elapsedTimeInMilliseconds = timer.milliSecondsElapsed;\n if (this.logger) {\n this.logger.log(LogLevel.ERROR,\n OCSDKTelemetryEvent.SUBMITPOSTCHATFAILED,\n { RequestId: requestId, ExceptionDetails: error, ElapsedTimeInMilliseconds: elapsedTimeInMilliseconds},\n \"Submit Post Chat Failed\");\n }\n reject();\n }\n });\n }\n\n /**\n * Submits post chat response.\n * @param requestId RequestId of the omnichannel session.\n * @param postChatResponse Post chat response to submit.\n * @param submitPostChatResponseOptionalParams: Optional parameters for submit post chat response.\n */\n public async getSurveyInviteLink(surveyOwnerId: string, surveyInviteAPIRequestBody: object, getsurveyInviteLinkOptionalParams: IGetSurveyInviteLinkOptionalParams = {}): Promise<object> {\n const timer = Timer.TIMER();\n if (this.logger) {\n this.logger.log(LogLevel.INFO,\n OCSDKTelemetryEvent.GETSURVEYINVITELINKSTARTED,\n { SurveyOwnerId: surveyOwnerId },\n \"Get Survey Invite Link Started\");\n }\n let endpoint = `${this.omnichannelConfiguration.orgUrl}/${OmnichannelEndpoints.LiveChatGetSurveyInviteLinkPath}/${this.omnichannelConfiguration.orgId}/${surveyOwnerId}`;\n const axiosInstance = axios.create();\n axiosRetry(axiosInstance, { retries: this.configuration.maxRequestRetriesOnFailure });\n\n const { authenticatedUserToken, requestId } = getsurveyInviteLinkOptionalParams;\n\n\n const headers: StringMap = Constants.defaultHeaders;\n\n if (authenticatedUserToken ) {\n endpoint = `${this.omnichannelConfiguration.orgUrl}/${OmnichannelEndpoints.LiveChatAuthGetSurveyInviteLinkPath}/${this.omnichannelConfiguration.orgId}/${surveyOwnerId}`;\n headers[OmnichannelHTTPHeaders.authenticatedUserToken] = authenticatedUserToken;\n headers[OmnichannelHTTPHeaders.widgetAppId] = this.omnichannelConfiguration.widgetId;\n }\n\n if (requestId) {\n headers[OmnichannelHTTPHeaders.requestId] = requestId;\n }\n\n const options: AxiosRequestConfig = {\n data: JSON.stringify(surveyInviteAPIRequestBody),\n headers,\n method: \"POST\",\n url: endpoint\n };\n\n return new Promise(async (resolve, reject) => {\n try {\n const response = await axiosInstance(options);\n const { data } = response;\n const elapsedTimeInMilliseconds = timer.milliSecondsElapsed;\n if (this.logger) {\n this.logger.log(LogLevel.INFO,\n OCSDKTelemetryEvent.GETSURVEYINVITELINKSUCCEEDED,\n { Region: response.data.Region, ElapsedTimeInMilliseconds: elapsedTimeInMilliseconds, TransactionId: response.headers[\"transaction-id\"] },\n \"Get Survey Invite Link Succeeded\");\n }\n resolve(data);\n } catch (error) {\n const elapsedTimeInMilliseconds = timer.milliSecondsElapsed;\n if (this.logger) {\n this.logger.log(LogLevel.ERROR,\n OCSDKTelemetryEvent.GETSURVEYINVITELINKFAILED,\n { ExceptionDetails: error, ElapsedTimeInMilliseconds: elapsedTimeInMilliseconds },\n \"Get Survey Invite Link Failed\");\n }\n reject();\n }\n });\n }\n\n /**\n * Get chat transcripts for customer.\n * @param requestId RequestId of the omnichannel session.\n * @param chatId Chat thread Id.\n * @param token Skype token.\n * @param getChatTranscriptsOptionalParams Optional parameters for get chat transcripts.\n */\n public async getChatTranscripts(requestId: string, chatId: string, token: string, getChatTranscriptsOptionalParams: IGetChatTranscriptsOptionalParams = {}): Promise<string> {\n const timer = Timer.TIMER();\n if (this.logger) {\n this.logger.log(LogLevel.INFO,\n OCSDKTelemetryEvent.GETCHATTRANSCRIPTSTARTED,\n { RequestId: requestId },\n \"Get Chat Transcript Started\");\n }\n let endpoint = `${this.omnichannelConfiguration.orgUrl}/${OmnichannelEndpoints.LiveChatGetChatTranscriptPath}/${chatId}/${requestId}?channelId=${this.omnichannelConfiguration.channelId}`;\n const axiosInstance = axios.create();\n axiosRetry(axiosInstance, { retries: this.configuration.maxRequestRetriesOnFailure });\n\n const { authenticatedUserToken, currentLiveChatVersion } = getChatTranscriptsOptionalParams;\n\n const headers: StringMap = Constants.defaultHeaders;\n headers[OmnichannelHTTPHeaders.organizationId] = this.omnichannelConfiguration.orgId;\n headers[OmnichannelHTTPHeaders.widgetAppId] = this.omnichannelConfiguration.widgetId;\n headers[OmnichannelHTTPHeaders.authorization] = token;\n\n if (this.liveChatVersion === LiveChatVersion.V2 || (currentLiveChatVersion && currentLiveChatVersion === LiveChatVersion.V2)){\n endpoint = `${this.omnichannelConfiguration.orgUrl}/${OmnichannelEndpoints.LiveChatv2GetChatTranscriptPath}/${chatId}/${requestId}?channelId=${this.omnichannelConfiguration.channelId}`;\n if (authenticatedUserToken) {\n endpoint = `${this.omnichannelConfiguration.orgUrl}/${OmnichannelEndpoints.LiveChatv2AuthGetChatTranscriptPath}/${chatId}/${requestId}?channelId=${this.omnichannelConfiguration.channelId}`;\n }\n }\n else if (authenticatedUserToken) {\n endpoint = `${this.omnichannelConfiguration.orgUrl}/${OmnichannelEndpoints.LiveChatAuthGetChatTranscriptPath}/${chatId}/${requestId}?channelId=${this.omnichannelConfiguration.channelId}`; \n }\n\n const options: AxiosRequestConfig = {\n headers,\n method: \"GET\",\n url: endpoint\n };\n\n return new Promise(async (resolve, reject) => {\n try {\n const response = await axiosInstance(options);\n const elapsedTimeInMilliseconds = timer.milliSecondsElapsed;\n const { data } = response;\n if (this.logger) {\n this.logger.log(LogLevel.INFO,\n OCSDKTelemetryEvent.GETCHATTRANSCRIPTSUCCEEDED,\n { RequestId: requestId, Region: response.data.Region, ElapsedTimeInMilliseconds: elapsedTimeInMilliseconds, TransactionId: response.headers[\"transaction-id\"] },\n \"Get Chat Transcript Succeeded\");\n }\n resolve(data);\n } catch (error) {\n const elapsedTimeInMilliseconds = timer.milliSecondsElapsed;\n if (this.logger) {\n this.logger.log(LogLevel.ERROR,\n OCSDKTelemetryEvent.GETCHATTRANSCRIPTFAILED,\n { RequestId: requestId, ExceptionDetails: error, ElapsedTimeInMilliseconds: elapsedTimeInMilliseconds},\n \"Get Chat Transcript Failed\");\n }\n reject(error);\n }\n });\n }\n\n /**\n * Email transcript to customer.\n * @param requestId RequestId of the omnichannel session.\n * @param token Skype token.\n * @param emailRequestBody Email request body.\n * @param emailTranscriptOptionalParams Optional parameters for email transcript.\n */\n public async emailTranscript(requestId: string, token: string, emailRequestBody: object, emailTranscriptOptionalParams: IEmailTranscriptOptionalParams = {}): Promise<void> {\n const timer = Timer.TIMER();\n if (this.logger) {\n this.logger.log(LogLevel.INFO,\n OCSDKTelemetryEvent.EMAILTRANSCRIPTSTARTED,\n { RequestId: requestId },\n \"Email Transcript Started\");\n }\n let endpoint = `${this.omnichannelConfiguration.orgUrl}/${OmnichannelEndpoints.LiveChatTranscriptEmailRequestPath}/${requestId}?channelId=${this.omnichannelConfiguration.channelId}`;\n const axiosInstance = axios.create();\n axiosRetry(axiosInstance, { retries: this.configuration.maxRequestRetriesOnFailure });\n\n const { authenticatedUserToken } = emailTranscriptOptionalParams;\n\n const headers: StringMap = Constants.defaultHeaders;\n headers[OmnichannelHTTPHeaders.organizationId] = this.omnichannelConfiguration.orgId;\n headers[OmnichannelHTTPHeaders.widgetAppId] = this.omnichannelConfiguration.widgetId;\n headers[OmnichannelHTTPHeaders.authorization] = token;\n\n if (authenticatedUserToken) {\n endpoint = `${this.omnichannelConfiguration.orgUrl}/${OmnichannelEndpoints.LiveChatAuthTranscriptEmailRequestPath}/${requestId}?channelId=${this.omnichannelConfiguration.channelId}`;\n }\n\n const options: AxiosRequestConfig = {\n data: JSON.stringify(emailRequestBody),\n headers,\n method: \"POST\",\n url: endpoint\n };\n\n return new Promise(async (resolve, reject) => {\n try {\n const response = await axiosInstance(options);\n const elapsedTimeInMilliseconds = timer.milliSecondsElapsed;\n if (this.logger) {\n this.logger.log(LogLevel.INFO,\n OCSDKTelemetryEvent.EMAILTRANSCRIPTSUCCEEDED,\n { RequestId: requestId, Region: response.data.Region, ElapsedTimeInMilliseconds: elapsedTimeInMilliseconds, TransactionId: response.headers[\"transaction-id\"] },\n \"Email Transcript Succeeded\");\n }\n resolve();\n } catch (error) {\n const elapsedTimeInMilliseconds = timer.milliSecondsElapsed;\n if (this.logger) {\n this.logger.log(LogLevel.ERROR,\n OCSDKTelemetryEvent.EMAILTRANSCRIPTFAILED,\n { RequestId: requestId, ExceptionDetails: error, ElapsedTimeInMilliseconds: elapsedTimeInMilliseconds},\n \"Email Transcript Failed\");\n }\n reject();\n }\n });\n }\n\n /**\n * Fetch data masking info of the org.\n * @param requestId RequestId of the omnichannel session (Optional).\n */\n public async fetchDataMaskingInfo(requestId: string): Promise<IDataMaskingInfo> {\n const timer = Timer.TIMER();\n if (this.logger) {\n this.logger.log(LogLevel.INFO,\n OCSDKTelemetryEvent.FETCHDATAMASKINGSTARTED,\n { RequestId: requestId },\n \"Fetch Data Masking Started\");\n }\n if (!requestId) {\n requestId = uuidv4();\n }\n\n const endpoint = `${this.omnichannelConfiguration.orgUrl}/${OmnichannelEndpoints.LiveChatFetchDataMaskingInfoPath}/${this.omnichannelConfiguration.orgId}`;\n const axiosInstance = axios.create();\n axiosRetry(axiosInstance, { retries: this.configuration.maxRequestRetriesOnFailure });\n\n const headers: StringMap = Constants.defaultHeaders;\n headers[OmnichannelHTTPHeaders.organizationId] = this.omnichannelConfiguration.orgId;\n headers[OmnichannelHTTPHeaders.requestId] = requestId;\n\n const options: AxiosRequestConfig = {\n headers,\n method: \"GET\",\n url: endpoint\n };\n\n return new Promise(async (resolve, reject) => {\n try {\n const response = await axiosInstance(options);\n const elapsedTimeInMilliseconds = timer.milliSecondsElapsed;\n const { data } = response;\n if (this.logger) {\n this.logger.log(LogLevel.INFO,\n OCSDKTelemetryEvent.FETCHDATAMASKINGSUCCEEDED,\n { RequestId: requestId, Region: response.data.Region, ElapsedTimeInMilliseconds: elapsedTimeInMilliseconds, TransactionId: response.headers[\"transaction-id\"] },\n \"Fetch Data Masking Succeeded\");\n }\n resolve(data);\n } catch (error) {\n const elapsedTimeInMilliseconds = timer.milliSecondsElapsed;\n if (this.logger) {\n this.logger.log(LogLevel.ERROR,\n OCSDKTelemetryEvent.FETCHDATAMASKINGFAILED,\n { RequestId: requestId, ExceptionDetails: error, ElapsedTimeInMilliseconds: elapsedTimeInMilliseconds},\n \"Fetch Data Masking Failed\");\n }\n reject();\n }\n });\n }\n\n /**\n * Makes a secondary channel event network call to Omnichannel.\n * @param requestId RequestId to use for secondary channel event\n * @param secondaryChannelEventRequestBody secondaryChannel event request body\n * @param secondaryChannelEventOptionalParams Optional parameters for secondary channel events.\n */\n public async makeSecondaryChannelEventRequest(requestId: string, secondaryChannelEventRequestBody: object, secondaryChannelEventOptionalParams: ISecondaryChannelEventOptionalParams = {}): Promise<void> {\n const timer = Timer.TIMER();\n if (this.logger) {\n this.logger.log(LogLevel.INFO,\n OCSDKTelemetryEvent.SECONDARYCHANNELEVENTREQUESTSTARTED,\n { RequestId: requestId },\n \"Secondary Channel Event Request Started\");\n }\n let endpoint = `${this.omnichannelConfiguration.orgUrl}/${OmnichannelEndpoints.LiveChatSecondaryChannelEventPath}/${this.omnichannelConfiguration.orgId}/${this.omnichannelConfiguration.widgetId}/${requestId}`;\n const axiosInstance = axios.create();\n axiosRetry(axiosInstance, { retries: this.configuration.maxRequestRetriesOnFailure });\n\n const { authenticatedUserToken } = secondaryChannelEventOptionalParams;\n\n const headers: StringMap = Constants.defaultHeaders;\n headers[OmnichannelHTTPHeaders.organizationId] = this.omnichannelConfiguration.orgId;\n\n if (authenticatedUserToken) {\n headers[OmnichannelHTTPHeaders.authenticatedUserToken] = authenticatedUserToken;\n endpoint = `${this.omnichannelConfiguration.orgUrl}/${OmnichannelEndpoints.LiveChatAuthSecondaryChannelEventPath}/${this.omnichannelConfiguration.orgId}/${this.omnichannelConfiguration.widgetId}/${requestId}`;\n }\n\n endpoint += \"?channelId=\" + Constants.defaultChannelId;\n\n const options: AxiosRequestConfig = {\n data: JSON.stringify(secondaryChannelEventRequestBody),\n headers,\n method: \"POST\",\n url: endpoint\n };\n\n try {\n const response = await axiosInstance(options);\n const elapsedTimeInMilliseconds = timer.milliSecondsElapsed;\n const { data } = response;\n if (this.logger) {\n this.logger.log(LogLevel.INFO,\n OCSDKTelemetryEvent.SECONDARYCHANNELEVENTREQUESTSUCCEEDED,\n { RequestId: requestId, Region: data.Region, ElapsedTimeInMilliseconds: elapsedTimeInMilliseconds, TransactionId: response.headers[\"transaction-id\"] },\n \"Secondary Channel Event Request Succeeded\");\n }\n } catch (error) {\n const elapsedTimeInMilliseconds = timer.milliSecondsElapsed;\n if (this.logger) {\n this.logger.log(LogLevel.ERROR,\n OCSDKTelemetryEvent.SECONDARYCHANNELEVENTREQUESTFAILED,\n { RequestId: requestId, ExceptionDetails: error, ElapsedTimeInMilliseconds: elapsedTimeInMilliseconds},\n \"Secondary Channel Event Request Failed\");\n }\n throw error;\n }\n }\n \n /** Send typing indicator\n * @param requestId RequestId of the omnichannel session.\n */\n public async sendTypingIndicator(requestId: string, currentLiveChatVersion: number): Promise<void> { \n // avoiding logging Info for typingindicator to reduce log traffic\n if (!currentLiveChatVersion || currentLiveChatVersion !== LiveChatVersion.V2) {\n return Promise.resolve();\n }\n const timer = Timer.TIMER();\n if (!currentLiveChatVersion || currentLiveChatVersion !== LiveChatVersion.V2) { throw new Error('Typing indicator is only supported on v2') }\n const endpoint = `${this.omnichannelConfiguration.orgUrl}/${OmnichannelEndpoints.SendTypingIndicatorPath}/${requestId}`;\n const axiosInstance = axios.create();\n\n const headers: StringMap = Constants.defaultHeaders;\n headers[OmnichannelHTTPHeaders.organizationId] = this.omnichannelConfiguration.orgId;\n\n const options: AxiosRequestConfig = {\n headers,\n method: \"POST\",\n url: endpoint\n };\n return new Promise(async (resolve, reject) => {\n try {\n const response = await axiosInstance(options);\n const elapsedTimeInMilliseconds = timer.milliSecondsElapsed;\n const { data } = response;\n if (this.logger) {\n this.logger.log(LogLevel.INFO,\n OCSDKTelemetryEvent.SENDTYPINGINDICATORSUCCEEDED,\n { RequestId: requestId, Region: data.Region, ElapsedTimeInMilliseconds: elapsedTimeInMilliseconds, TransactionId: response.headers[\"transaction-id\"] },\n \"Send Typing Indicator Succeeded\");\n }\n resolve();\n } catch (error) {\n const elapsedTimeInMilliseconds = timer.milliSecondsElapsed;\n if (this.logger) {\n this.logger.log(LogLevel.ERROR,\n OCSDKTelemetryEvent.SENDTYPINGINDICATORFAILED,\n { RequestId: requestId, ExceptionDetails: error, ElapsedTimeInMilliseconds: elapsedTimeInMilliseconds},\n \"Send Typing Indicator Failed\");\n }\n reject(error);\n }\n });\n }\n}\n"]},_coverageSchema:"332fd63041d2c1bcb487cc26dd0d5f7d97098a6c"},coverage=global[gcv]||(global[gcv]={});if(coverage[path]&&coverage[path].hash===hash){return coverage[path];}coverageData.hash=hash;return coverage[path]=coverageData;}();var __assign=(cov_2g5j0a6fdf.s[0]++,(cov_2g5j0a6fdf.b[0][0]++,this)&&(cov_2g5j0a6fdf.b[0][1]++,this.__assign)||(cov_2g5j0a6fdf.b[0][2]++,function(){cov_2g5j0a6fdf.f[0]++;cov_2g5j0a6fdf.s[1]++;__assign=(cov_2g5j0a6fdf.b[1][0]++,Object.assign)||(cov_2g5j0a6fdf.b[1][1]++,function(t){cov_2g5j0a6fdf.f[1]++;cov_2g5j0a6fdf.s[2]++;for(var s,i=1,n=arguments.length;i<n;i++){cov_2g5j0a6fdf.s[3]++;s=arguments[i];cov_2g5j0a6fdf.s[4]++;for(var p in s){cov_2g5j0a6fdf.s[5]++;if(Object.prototype.hasOwnProperty.call(s,p)){cov_2g5j0a6fdf.b[2][0]++;cov_2g5j0a6fdf.s[6]++;t[p]=s[p];}else{cov_2g5j0a6fdf.b[2][1]++;}}}cov_2g5j0a6fdf.s[7]++;return t;});cov_2g5j0a6fdf.s[8]++;return __assign.apply(this,arguments);}));var __awaiter=(cov_2g5j0a6fdf.s[9]++,(cov_2g5j0a6fdf.b[3][0]++,this)&&(cov_2g5j0a6fdf.b[3][1]++,this.__awaiter)||(cov_2g5j0a6fdf.b[3][2]++,function(thisArg,_arguments,P,generator){cov_2g5j0a6fdf.f[2]++;function adopt(value){cov_2g5j0a6fdf.f[3]++;cov_2g5j0a6fdf.s[10]++;return value instanceof P?(cov_2g5j0a6fdf.b[4][0]++,value):(cov_2g5j0a6fdf.b[4][1]++,new P(function(resolve){cov_2g5j0a6fdf.f[4]++;cov_2g5j0a6fdf.s[11]++;resolve(value);}));}cov_2g5j0a6fdf.s[12]++;return new((cov_2g5j0a6fdf.b[5][0]++,P)||(cov_2g5j0a6fdf.b[5][1]++,P=Promise))(function(resolve,reject){cov_2g5j0a6fdf.f[5]++;function fulfilled(value){cov_2g5j0a6fdf.f[6]++;cov_2g5j0a6fdf.s[13]++;try{cov_2g5j0a6fdf.s[14]++;step(generator.next(value));}catch(e){cov_2g5j0a6fdf.s[15]++;reject(e);}}function rejected(value){cov_2g5j0a6fdf.f[7]++;cov_2g5j0a6fdf.s[16]++;try{cov_2g5j0a6fdf.s[17]++;step(generator["throw"](value));}catch(e){cov_2g5j0a6fdf.s[18]++;reject(e);}}function step(result){cov_2g5j0a6fdf.f[8]++;cov_2g5j0a6fdf.s[19]++;result.done?(cov_2g5j0a6fdf.b[6][0]++,resolve(result.value)):(cov_2g5j0a6fdf.b[6][1]++,adopt(result.value).then(fulfilled,rejected));}cov_2g5j0a6fdf.s[20]++;step((generator=generator.apply(thisArg,(cov_2g5j0a6fdf.b[7][0]++,_arguments)||(cov_2g5j0a6fdf.b[7][1]++,[]))).next());});}));var __generator=(cov_2g5j0a6fdf.s[21]++,(cov_2g5j0a6fdf.b[8][0]++,this)&&(cov_2g5j0a6fdf.b[8][1]++,this.__generator)||(cov_2g5j0a6fdf.b[8][2]++,function(thisArg,body){cov_2g5j0a6fdf.f[9]++;var _=(cov_2g5j0a6fdf.s[22]++,{label:0,sent:function(){cov_2g5j0a6fdf.f[10]++;cov_2g5j0a6fdf.s[23]++;if(t[0]&1){cov_2g5j0a6fdf.b[9][0]++;cov_2g5j0a6fdf.s[24]++;throw t[1];}else{cov_2g5j0a6fdf.b[9][1]++;}cov_2g5j0a6fdf.s[25]++;return t[1];},trys:[],ops:[]}),f,y,t,g;cov_2g5j0a6fdf.s[26]++;return g={next:verb(0),"throw":verb(1),"return":verb(2)},(cov_2g5j0a6fdf.b[10][0]++,typeof Symbol==="function")&&(cov_2g5j0a6fdf.b[10][1]++,g[Symbol.iterator]=function(){cov_2g5j0a6fdf.f[11]++;cov_2g5j0a6fdf.s[27]++;return this;}),g;function verb(n){cov_2g5j0a6fdf.f[12]++;cov_2g5j0a6fdf.s[28]++;return function(v){cov_2g5j0a6fdf.f[13]++;cov_2g5j0a6fdf.s[29]++;return step([n,v]);};}function step(op){cov_2g5j0a6fdf.f[14]++;cov_2g5j0a6fdf.s[30]++;if(f){cov_2g5j0a6fdf.b[11][0]++;cov_2g5j0a6fdf.s[31]++;throw new TypeError("Generator is already executing.");}else{cov_2g5j0a6fdf.b[11][1]++;}cov_2g5j0a6fdf.s[32]++;while(_){cov_2g5j0a6fdf.s[33]++;try{cov_2g5j0a6fdf.s[34]++;if(f=1,(cov_2g5j0a6fdf.b[13][0]++,y)&&(cov_2g5j0a6fdf.b[13][1]++,t=op[0]&2?(cov_2g5j0a6fdf.b[14][0]++,y["return"]):(cov_2g5j0a6fdf.b[14][1]++,op[0]?(cov_2g5j0a6fdf.b[15][0]++,(cov_2g5j0a6fdf.b[16][0]++,y["throw"])||(cov_2g5j0a6fdf.b[16][1]++,((cov_2g5j0a6fdf.b[17][0]++,t=y["return"])&&(cov_2g5j0a6fdf.b[17][1]++,t.call(y)),0))):(cov_2g5j0a6fdf.b[15][1]++,y.next)))&&(cov_2g5j0a6fdf.b[13][2]++,!(t=t.call(y,op[1])).done)){cov_2g5j0a6fdf.b[12][0]++;cov_2g5j0a6fdf.s[35]++;return t;}else{cov_2g5j0a6fdf.b[12][1]++;}cov_2g5j0a6fdf.s[36]++;if(y=0,t){cov_2g5j0a6fdf.b[18][0]++;cov_2g5j0a6fdf.s[37]++;op=[op[0]&2,t.value];}else{cov_2g5j0a6fdf.b[18][1]++;}cov_2g5j0a6fdf.s[38]++;switch(op[0]){case 0:cov_2g5j0a6fdf.b[19][0]++;case 1:cov_2g5j0a6fdf.b[19][1]++;cov_2g5j0a6fdf.s[39]++;t=op;cov_2g5j0a6fdf.s[40]++;break;case 4:cov_2g5j0a6fdf.b[19][2]++;cov_2g5j0a6fdf.s[41]++;_.label++;cov_2g5j0a6fdf.s[42]++;return{value:op[1],done:false};case 5:cov_2g5j0a6fdf.b[19][3]++;cov_2g5j0a6fdf.s[43]++;_.label++;cov_2g5j0a6fdf.s[44]++;y=op[1];cov_2g5j0a6fdf.s[45]++;op=[0];cov_2g5j0a6fdf.s[46]++;continue;case 7:cov_2g5j0a6fdf.b[19][4]++;cov_2g5j0a6fdf.s[47]++;op=_.ops.pop();cov_2g5j0a6fdf.s[48]++;_.trys.pop();cov_2g5j0a6fdf.s[49]++;continue;default:cov_2g5j0a6fdf.b[19][5]++;cov_2g5j0a6fdf.s[50]++;if((cov_2g5j0a6fdf.b[21][0]++,!(t=_.trys,t=(cov_2g5j0a6fdf.b[22][0]++,t.length>0)&&(cov_2g5j0a6fdf.b[22][1]++,t[t.length-1])))&&((cov_2g5j0a6fdf.b[21][1]++,op[0]===6)||(cov_2g5j0a6fdf.b[21][2]++,op[0]===2))){cov_2g5j0a6fdf.b[20][0]++;cov_2g5j0a6fdf.s[51]++;_=0;cov_2g5j0a6fdf.s[52]++;continue;}else{cov_2g5j0a6fdf.b[20][1]++;}cov_2g5j0a6fdf.s[53]++;if((cov_2g5j0a6fdf.b[24][0]++,op[0]===3)&&((cov_2g5j0a6fdf.b[24][1]++,!t)||(cov_2g5j0a6fdf.b[24][2]++,op[1]>t[0])&&(cov_2g5j0a6fdf.b[24][3]++,op[1]<t[3]))){cov_2g5j0a6fdf.b[23][0]++;cov_2g5j0a6fdf.s[54]++;_.label=op[1];cov_2g5j0a6fdf.s[55]++;break;}else{cov_2g5j0a6fdf.b[23][1]++;}cov_2g5j0a6fdf.s[56]++;if((cov_2g5j0a6fdf.b[26][0]++,op[0]===6)&&(cov_2g5j0a6fdf.b[26][1]++,_.label<t[1])){cov_2g5j0a6fdf.b[25][0]++;cov_2g5j0a6fdf.s[57]++;_.label=t[1];cov_2g5j0a6fdf.s[58]++;t=op;cov_2g5j0a6fdf.s[59]++;break;}else{cov_2g5j0a6fdf.b[25][1]++;}cov_2g5j0a6fdf.s[60]++;if((cov_2g5j0a6fdf.b[28][0]++,t)&&(cov_2g5j0a6fdf.b[28][1]++,_.label<t[2])){cov_2g5j0a6fdf.b[27][0]++;cov_2g5j0a6fdf.s[61]++;_.label=t[2];cov_2g5j0a6fdf.s[62]++;_.ops.push(op);cov_2g5j0a6fdf.s[63]++;break;}else{cov_2g5j0a6fdf.b[27][1]++;}cov_2g5j0a6fdf.s[64]++;if(t[2]){cov_2g5j0a6fdf.b[29][0]++;cov_2g5j0a6fdf.s[65]++;_.ops.pop();}else{cov_2g5j0a6fdf.b[29][1]++;}cov_2g5j0a6fdf.s[66]++;_.trys.pop();cov_2g5j0a6fdf.s[67]++;continue;}cov_2g5j0a6fdf.s[68]++;op=body.call(thisArg,_);}catch(e){cov_2g5j0a6fdf.s[69]++;op=[6,e];cov_2g5j0a6fdf.s[70]++;y=0;}finally{cov_2g5j0a6fdf.s[71]++;f=t=0;}}cov_2g5j0a6fdf.s[72]++;if(op[0]&5){cov_2g5j0a6fdf.b[30][0]++;cov_2g5j0a6fdf.s[73]++;throw op[1];}else{cov_2g5j0a6fdf.b[30][1]++;}cov_2g5j0a6fdf.s[74]++;return{value:op[0]?(cov_2g5j0a6fdf.b[31][0]++,op[1]):(cov_2g5j0a6fdf.b[31][1]++,void 0),done:true};}}));cov_2g5j0a6fdf.s[75]++;Object.defineProperty(exports,"__esModule",{value:true});var Enums_1=(cov_2g5j0a6fdf.s[76]++,__webpack_require__(/*! ./Common/Enums */ "./src/Common/Enums.ts"));var axios_1=(cov_2g5j0a6fdf.s[77]++,__webpack_require__(/*! axios */ "./node_modules/axios/index.js"));var BrowserInfo_1=(cov_2g5j0a6fdf.s[78]++,__webpack_require__(/*! ./Utils/BrowserInfo */ "./src/Utils/BrowserInfo.ts"));var Constants_1=(cov_2g5j0a6fdf.s[79]++,__webpack_require__(/*! ./Common/Constants */ "./src/Common/Constants.ts"));var DeviceInfo_1=(cov_2g5j0a6fdf.s[80]++,__webpack_require__(/*! ./Utils/DeviceInfo */ "./src/Utils/DeviceInfo.ts"));var Locales_1=(cov_2g5j0a6fdf.s[81]++,__webpack_require__(/*! ./Common/Locales */ "./src/Common/Locales.ts"));var LogLevel_1=(cov_2g5j0a6fdf.s[82]++,__webpack_require__(/*! ./Model/LogLevel */ "./src/Model/LogLevel.ts"));var Enums_2=(cov_2g5j0a6fdf.s[83]++,__webpack_require__(/*! ./Common/Enums */ "./src/Common/Enums.ts"));var OSInfo_1=(cov_2g5j0a6fdf.s[84]++,__webpack_require__(/*! ./Utils/OSInfo */ "./src/Utils/OSInfo.ts"));var OmnichannelEndpoints_1=(cov_2g5j0a6fdf.s[85]++,__webpack_require__(/*! ./Common/OmnichannelEndpoints */ "./src/Common/OmnichannelEndpoints.ts"));var OmnichannelHTTPHeaders_1=(cov_2g5j0a6fdf.s[86]++,__webpack_require__(/*! ./Common/OmnichannelHTTPHeaders */ "./src/Common/OmnichannelHTTPHeaders.ts"));var Timer_1=(cov_2g5j0a6fdf.s[87]++,__webpack_require__(/*! ./Utils/Timer */ "./src/Utils/Timer.ts"));var axiosRetry_1=(cov_2g5j0a6fdf.s[88]++,__webpack_require__(/*! ./Utils/axiosRetry */ "./src/Utils/axiosRetry.ts"));var uuid_1=(cov_2g5j0a6fdf.s[89]++,__webpack_require__(/*! ./Utils/uuid */ "./src/Utils/uuid.ts"));var SDK=(cov_2g5j0a6fdf.s[90]++,function(){cov_2g5j0a6fdf.f[15]++;function SDK(omnichannelConfiguration,configuration,logger){cov_2g5j0a6fdf.f[16]++;cov_2g5j0a6fdf.s[91]++;if(configuration===void 0){cov_2g5j0a6fdf.b[32][0]++;cov_2g5j0a6fdf.s[92]++;configuration=SDK.defaultConfiguration;}else{cov_2g5j0a6fdf.b[32][1]++;}cov_2g5j0a6fdf.s[93]++;this.omnichannelConfiguration=omnichannelConfiguration;cov_2g5j0a6fdf.s[94]++;this.configuration=configuration;cov_2g5j0a6fdf.s[95]++;this.logger=logger;cov_2g5j0a6fdf.s[96]++;if((cov_2g5j0a6fdf.b[34][0]++,!Object.keys(this.configuration).length)||(cov_2g5j0a6fdf.b[34][1]++,typeof configuration!=="object")){cov_2g5j0a6fdf.b[33][0]++;cov_2g5j0a6fdf.s[97]++;this.configuration=SDK.defaultConfiguration;}else{cov_2g5j0a6fdf.b[33][1]++;}cov_2g5j0a6fdf.s[98]++;for(var _i=0,_a=Object.keys(SDK.defaultConfiguration);_i<_a.length;_i++){var key=(cov_2g5j0a6fdf.s[99]++,_a[_i]);cov_2g5j0a6fdf.s[100]++;if(!this.configuration.hasOwnProperty(key)){cov_2g5j0a6fdf.b[35][0]++;cov_2g5j0a6fdf.s[101]++;throw new Error("Missing '"+key+"' in SDKConfiguration");}else{cov_2g5j0a6fdf.b[35][1]++;}}var channelId=(cov_2g5j0a6fdf.s[102]++,omnichannelConfiguration.channelId);cov_2g5j0a6fdf.s[103]++;if(!Object.values(Enums_1.ChannelId).includes(channelId)){cov_2g5j0a6fdf.b[36][0]++;cov_2g5j0a6fdf.s[104]++;throw new Error("Invalid channelId");}else{cov_2g5j0a6fdf.b[36][1]++;}var currentOmnichannelConfigurationParameters=(cov_2g5j0a6fdf.s[105]++,Object.keys(omnichannelConfiguration));cov_2g5j0a6fdf.s[106]++;for(var _b=0,_c=Constants_1.default.requiredOmnichannelConfigurationParameters;_b<_c.length;_b++){var key=(cov_2g5j0a6fdf.s[107]++,_c[_b]);cov_2g5j0a6fdf.s[108]++;if(!currentOmnichannelConfigurationParameters.includes(key)){cov_2g5j0a6fdf.b[37][0]++;cov_2g5j0a6fdf.s[109]++;throw new Error("Missing '"+key+"' in OmnichannelConfiguration");}else{cov_2g5j0a6fdf.b[37][1]++;}}cov_2g5j0a6fdf.s[110]++;this.liveChatVersion=Enums_1.LiveChatVersion.V1;}cov_2g5j0a6fdf.s[111]++;SDK.prototype.getChatConfig=function(requestId,bypassCache){cov_2g5j0a6fdf.f[17]++;cov_2g5j0a6fdf.s[112]++;if(bypassCache===void 0){cov_2g5j0a6fdf.b[38][0]++;cov_2g5j0a6fdf.s[113]++;bypassCache=false;}else{cov_2g5j0a6fdf.b[38][1]++;}cov_2g5j0a6fdf.s[114]++;return __awaiter(this,void 0,void 0,function(){cov_2g5j0a6fdf.f[18]++;var timer,endpoint,axiosInstance,headers,response,elapsedTimeInMilliseconds,data;cov_2g5j0a6fdf.s[115]++;return __generator(this,function(_a){cov_2g5j0a6fdf.f[19]++;cov_2g5j0a6fdf.s[116]++;switch(_a.label){case 0:cov_2g5j0a6fdf.b[39][0]++;cov_2g5j0a6fdf.s[117]++;timer=Timer_1.Timer.TIMER();cov_2g5j0a6fdf.s[118]++;if(this.logger){cov_2g5j0a6fdf.b[40][0]++;cov_2g5j0a6fdf.s[119]++;this.logger.log(LogLevel_1.LogLevel.INFO,Enums_2.OCSDKTelemetryEvent.GETCHATCONFIG,{RequestId:requestId},"Get Chat Config Started");}else{cov_2g5j0a6fdf.b[40][1]++;}cov_2g5j0a6fdf.s[120]++;if(!requestId){cov_2g5j0a6fdf.b[41][0]++;cov_2g5j0a6fdf.s[121]++;requestId=uuid_1.uuidv4();}else{cov_2g5j0a6fdf.b[41][1]++;}cov_2g5j0a6fdf.s[122]++;endpoint=this.omnichannelConfiguration.orgUrl+"/"+OmnichannelEndpoints_1.default.LiveChatConfigPath+"/"+this.omnichannelConfiguration.orgId+"/"+this.omnichannelConfiguration.widgetId+"?requestId="+requestId+"&channelId="+this.omnichannelConfiguration.channelId;cov_2g5j0a6fdf.s[123]++;axiosInstance=axios_1.default.create();cov_2g5j0a6fdf.s[124]++;axiosRetry_1.default(axiosInstance,{retries:this.configuration.maxRequestRetriesOnFailure});cov_2g5j0a6fdf.s[125]++;headers={};cov_2g5j0a6fdf.s[126]++;if(bypassCache){cov_2g5j0a6fdf.b[42][0]++;cov_2g5j0a6fdf.s[127]++;headers=__assign(__assign({},Constants_1.default.bypassCacheHeaders),headers);}else{cov_2g5j0a6fdf.b[42][1]++;}cov_2g5j0a6fdf.s[128]++;return[4,axiosInstance.get(endpoint,{headers:headers})];case 1:cov_2g5j0a6fdf.b[39][1]++;cov_2g5j0a6fdf.s[129]++;response=_a.sent();cov_2g5j0a6fdf.s[130]++;elapsedTimeInMilliseconds=timer.milliSecondsElapsed;cov_2g5j0a6fdf.s[131]++;data=response.data;cov_2g5j0a6fdf.s[132]++;if((cov_2g5j0a6fdf.b[44][0]++,data.LiveChatVersion)&&(cov_2g5j0a6fdf.b[44][1]++,data.LiveChatVersion===Enums_1.LiveChatVersion.V2)){cov_2g5j0a6fdf.b[43][0]++;cov_2g5j0a6fdf.s[133]++;this.liveChatVersion=data.LiveChatVersion;}else{cov_2g5j0a6fdf.b[43][1]++;}cov_2g5j0a6fdf.s[134]++;if(this.logger){cov_2g5j0a6fdf.b[45][0]++;cov_2g5j0a6fdf.s[135]++;this.logger.log(LogLevel_1.LogLevel.INFO,Enums_2.OCSDKTelemetryEvent.GETCHATCONFIGSUCCESS,{RequestId:requestId,Region:response.data.Region,ElapsedTimeInMilliseconds:elapsedTimeInMilliseconds,TransactionId:response.headers["transaction-id"]},"Get Chat config succeeded");}else{cov_2g5j0a6fdf.b[45][1]++;}cov_2g5j0a6fdf.s[136]++;return[2,data];}});});};cov_2g5j0a6fdf.s[137]++;SDK.prototype.getLWIDetails=function(requestId,getLWIDetailsOptionalParams){cov_2g5j0a6fdf.f[20]++;cov_2g5j0a6fdf.s[138]++;if(getLWIDetailsOptionalParams===void 0){cov_2g5j0a6fdf.b[46][0]++;cov_2g5j0a6fdf.s[139]++;getLWIDetailsOptionalParams={};}else{cov_2g5j0a6fdf.b[46][1]++;}cov_2g5j0a6fdf.s[140]++;return __awaiter(this,void 0,void 0,function(){cov_2g5j0a6fdf.f[21]++;var timer,endpoint,axiosInstance,authenticatedUserToken,reconnectId,headers,options;var _this=(cov_2g5j0a6fdf.s[141]++,this);cov_2g5j0a6fdf.s[142]++;return __generator(this,function(_a){cov_2g5j0a6fdf.f[22]++;cov_2g5j0a6fdf.s[143]++;timer=Timer_1.Timer.TIMER();cov_2g5j0a6fdf.s[144]++;if(this.logger){cov_2g5j0a6fdf.b[47][0]++;cov_2g5j0a6fdf.s[145]++;this.logger.log(LogLevel_1.LogLevel.INFO,Enums_2.OCSDKTelemetryEvent.GETLWISTATUSSTARTED,{RequestId:requestId},"Get LWI Details Started");}else{cov_2g5j0a6fdf.b[47][1]++;}cov_2g5j0a6fdf.s[146]++;if(!requestId){cov_2g5j0a6fdf.b[48][0]++;cov_2g5j0a6fdf.s[147]++;requestId=uuid_1.uuidv4();}else{cov_2g5j0a6fdf.b[48][1]++;}cov_2g5j0a6fdf.s[148]++;endpoint=this.omnichannelConfiguration.orgUrl+"/"+OmnichannelEndpoints_1.default.LiveChatLiveWorkItemDetailsPath+"/"+this.omnichannelConfiguration.orgId+"/"+this.omnichannelConfiguration.widgetId+"/"+requestId;cov_2g5j0a6fdf.s[149]++;axiosInstance=axios_1.default.create();cov_2g5j0a6fdf.s[150]++;axiosRetry_1.default(axiosInstance,{retries:this.configuration.maxRequestRetriesOnFailure});cov_2g5j0a6fdf.s[151]++;authenticatedUserToken=getLWIDetailsOptionalParams.authenticatedUserToken,reconnectId=getLWIDetailsOptionalParams.reconnectId;cov_2g5j0a6fdf.s[152]++;headers=Constants_1.default.defaultHeaders;cov_2g5j0a6fdf.s[153]++;if(authenticatedUserToken){cov_2g5j0a6fdf.b[49][0]++;cov_2g5j0a6fdf.s[154]++;endpoint=this.omnichannelConfiguration.orgUrl+"/"+OmnichannelEndpoints_1.default.LiveChatAuthLiveWorkItemDetailsPath+"/"+this.omnichannelConfiguration.orgId+"/"+this.omnichannelConfiguration.widgetId+"/"+requestId;cov_2g5j0a6fdf.s[155]++;headers[OmnichannelHTTPHeaders_1.default.authenticatedUserToken]=authenticatedUserToken;}else{cov_2g5j0a6fdf.b[49][1]++;}cov_2g5j0a6fdf.s[156]++;if(reconnectId){cov_2g5j0a6fdf.b[50][0]++;cov_2g5j0a6fdf.s[157]++;endpoint+="/"+reconnectId;}else{cov_2g5j0a6fdf.b[50][1]++;}cov_2g5j0a6fdf.s[158]++;endpoint+="?channelId="+this.omnichannelConfiguration.channelId;cov_2g5j0a6fdf.s[159]++;options={headers:headers,method:"GET",url:endpoint};cov_2g5j0a6fdf.s[160]++;return[2,new Promise(function(resolve,reject){cov_2g5j0a6fdf.f[23]++;cov_2g5j0a6fdf.s[161]++;return __awaiter(_this,void 0,void 0,function(){cov_2g5j0a6fdf.f[24]++;var response,elapsedTimeInMilliseconds,data,error_1,elapsedTimeInMilliseconds;cov_2g5j0a6fdf.s[162]++;return __generator(this,function(_a){cov_2g5j0a6fdf.f[25]++;cov_2g5j0a6fdf.s[163]++;switch(_a.label){case 0:cov_2g5j0a6fdf.b[51][0]++;cov_2g5j0a6fdf.s[164]++;_a.trys.push([0,2,,3]);cov_2g5j0a6fdf.s[165]++;return[4,axiosInstance(options)];case 1:cov_2g5j0a6fdf.b[51][1]++;cov_2g5j0a6fdf.s[166]++;response=_a.sent();cov_2g5j0a6fdf.s[167]++;elapsedTimeInMilliseconds=timer.milliSecondsElapsed;cov_2g5j0a6fdf.s[168]++;data=response.data;cov_2g5j0a6fdf.s[169]++;if(this.logger){cov_2g5j0a6fdf.b[52][0]++;cov_2g5j0a6fdf.s[170]++;this.logger.log(LogLevel_1.LogLevel.INFO,Enums_2.OCSDKTelemetryEvent.GETLWISTATUSSUCCEEDED,{RequestId:requestId,Region:response.data.Region,ElapsedTimeInMilliseconds:elapsedTimeInMilliseconds,TransactionId:response.headers["transaction-id"]},"Get LWI Details succeeded");}else{cov_2g5j0a6fdf.b[52][1]++;}cov_2g5j0a6fdf.s[171]++;resolve(data);cov_2g5j0a6fdf.s[172]++;return[3,3];case 2:cov_2g5j0a6fdf.b[51][2]++;cov_2g5j0a6fdf.s[173]++;error_1=_a.sent();cov_2g5j0a6fdf.s[174]++;elapsedTimeInMilliseconds=timer.milliSecondsElapsed;cov_2g5j0a6fdf.s[175]++;if(this.logger){cov_2g5j0a6fdf.b[53][0]++;cov_2g5j0a6fdf.s[176]++;this.logger.log(LogLevel_1.LogLevel.ERROR,Enums_2.OCSDKTelemetryEvent.GETLWISTATUSFAILED,{RequestId:requestId,ExceptionDetails:error_1,ElapsedTimeInMilliseconds:elapsedTimeInMilliseconds},"Get LWI Details failed");}else{cov_2g5j0a6fdf.b[53][1]++;}cov_2g5j0a6fdf.s[177]++;reject();cov_2g5j0a6fdf.s[178]++;return[3,3];case 3:cov_2g5j0a6fdf.b[51][3]++;cov_2g5j0a6fdf.s[179]++;return[2];}});});})];});});};cov_2g5j0a6fdf.s[180]++;SDK.prototype.getChatToken=function(requestId,getChatTokenOptionalParams,currentRetryCount){cov_2g5j0a6fdf.f[26]++;cov_2g5j0a6fdf.s[181]++;if(getChatTokenOptionalParams===void 0){cov_2g5j0a6fdf.b[54][0]++;cov_2g5j0a6fdf.s[182]++;getChatTokenOptionalParams={};}else{cov_2g5j0a6fdf.b[54][1]++;}cov_2g5j0a6fdf.s[183]++;if(currentRetryCount===void 0){cov_2g5j0a6fdf.b[55][0]++;cov_2g5j0a6fdf.s[184]++;currentRetryCount=0;}else{cov_2g5j0a6fdf.b[55][1]++;}cov_2g5j0a6fdf.s[185]++;return __awaiter(this,void 0,void 0,function(){cov_2g5j0a6fdf.f[27]++;var timer,reconnectId,authenticatedUserToken,currentLiveChatVersion,headers,endpoint,options,axiosInstance;var _this=(cov_2g5j0a6fdf.s[186]++,this);cov_2g5j0a6fdf.s[187]++;return __generator(this,function(_a){cov_2g5j0a6fdf.f[28]++;cov_2g5j0a6fdf.s[188]++;timer=Timer_1.Timer.TIMER();cov_2g5j0a6fdf.s[189]++;reconnectId=getChatTokenOptionalParams.reconnectId,authenticatedUserToken=getChatTokenOptionalParams.authenticatedUserToken,currentLiveChatVersion=getChatTokenOptionalParams.currentLiveChatVersion;cov_2g5j0a6fdf.s[190]++;if(this.logger){cov_2g5j0a6fdf.b[56][0]++;cov_2g5j0a6fdf.s[191]++;this.logger.log(LogLevel_1.LogLevel.INFO,Enums_2.OCSDKTelemetryEvent.GETCHATTOKENSTARTED,{RequestId:requestId},"Get Chat Token Started");}else{cov_2g5j0a6fdf.b[56][1]++;}cov_2g5j0a6fdf.s[192]++;if(currentRetryCount<0){cov_2g5j0a6fdf.b[57][0]++;cov_2g5j0a6fdf.s[193]++;throw new Error("Invalid currentRetryCount");}else{cov_2g5j0a6fdf.b[57][1]++;}cov_2g5j0a6fdf.s[194]++;if(!requestId){cov_2g5j0a6fdf.b[58][0]++;cov_2g5j0a6fdf.s[195]++;requestId=uuid_1.uuidv4();}else{cov_2g5j0a6fdf.b[58][1]++;}cov_2g5j0a6fdf.s[196]++;headers=Constants_1.default.defaultHeaders;cov_2g5j0a6fdf.s[197]++;endpoint=this.omnichannelConfiguration.orgUrl+"/"+OmnichannelEndpoints_1.default.LiveChatGetChatTokenPath+"/"+this.omnichannelConfiguration.orgId+"/"+this.omnichannelConfiguration.widgetId+"/"+requestId;cov_2g5j0a6fdf.s[198]++;if((cov_2g5j0a6fdf.b[60][0]++,this.liveChatVersion===Enums_1.LiveChatVersion.V2)||(cov_2g5j0a6fdf.b[60][1]++,currentLiveChatVersion)&&(cov_2g5j0a6fdf.b[60][2]++,currentLiveChatVersion===Enums_1.LiveChatVersion.V2)){cov_2g5j0a6fdf.b[59][0]++;cov_2g5j0a6fdf.s[199]++;endpoint=this.omnichannelConfiguration.orgUrl+"/"+OmnichannelEndpoints_1.default.LiveChatv2GetChatTokenPath+"/"+this.omnichannelConfiguration.orgId+"/"+this.omnichannelConfiguration.widgetId+"/"+requestId;cov_2g5j0a6fdf.s[200]++;if(authenticatedUserToken){cov_2g5j0a6fdf.b[61][0]++;cov_2g5j0a6fdf.s[201]++;endpoint=this.omnichannelConfiguration.orgUrl+"/"+OmnichannelEndpoints_1.default.LiveChatv2AuthGetChatTokenPath+"/"+this.omnichannelConfiguration.orgId+"/"+this.omnichannelConfiguration.widgetId+"/"+requestId;cov_2g5j0a6fdf.s[202]++;headers[OmnichannelHTTPHeaders_1.default.authenticatedUserToken]=authenticatedUserToken;}else{cov_2g5j0a6fdf.b[61][1]++;}}else{cov_2g5j0a6fdf.b[59][1]++;cov_2g5j0a6fdf.s[203]++;if(authenticatedUserToken){cov_2g5j0a6fdf.b[62][0]++;cov_2g5j0a6fdf.s[204]++;endpoint=this.omnichannelConfiguration.orgUrl+"/"+OmnichannelEndpoints_1.default.LiveChatAuthGetChatTokenPath+"/"+this.omnichannelConfiguration.orgId+"/"+this.omnichannelConfiguration.widgetId+"/"+requestId;cov_2g5j0a6fdf.s[205]++;headers[OmnichannelHTTPHeaders_1.default.authenticatedUserToken]=authenticatedUserToken;}else{cov_2g5j0a6fdf.b[62][1]++;}}cov_2g5j0a6fdf.s[206]++;if(reconnectId){cov_2g5j0a6fdf.b[63][0]++;cov_2g5j0a6fdf.s[207]++;endpoint+="/"+reconnectId;}else{cov_2g5j0a6fdf.b[63][1]++;}cov_2g5j0a6fdf.s[208]++;endpoint+="?channelId="+this.omnichannelConfiguration.channelId;cov_2g5j0a6fdf.s[209]++;options={headers:headers,method:"GET",url:endpoint};cov_2g5j0a6fdf.s[210]++;axiosInstance=axios_1.default.create();cov_2g5j0a6fdf.s[211]++;axiosRetry_1.default(axiosInstance,{retries:this.configuration.maxRequestRetriesOnFailure});cov_2g5j0a6fdf.s[212]++;return[2,new Promise(function(resolve,reject){cov_2g5j0a6fdf.f[29]++;cov_2g5j0a6fdf.s[213]++;return __awaiter(_this,void 0,void 0,function(){cov_2g5j0a6fdf.f[30]++;var response,elapsedTimeInMilliseconds,data,error_2,elapsedTimeInMilliseconds;var _this=(cov_2g5j0a6fdf.s[214]++,this);cov_2g5j0a6fdf.s[215]++;return __generator(this,function(_a){cov_2g5j0a6fdf.f[31]++;cov_2g5j0a6fdf.s[216]++;switch(_a.label){case 0:cov_2g5j0a6fdf.b[64][0]++;cov_2g5j0a6fdf.s[217]++;_a.trys.push([0,2,,3]);cov_2g5j0a6fdf.s[218]++;return[4,axiosInstance(options)];case 1:cov_2g5j0a6fdf.b[64][1]++;cov_2g5j0a6fdf.s[219]++;response=_a.sent();cov_2g5j0a6fdf.s[220]++;elapsedTimeInMilliseconds=timer.milliSecondsElapsed;cov_2g5j0a6fdf.s[221]++;data=response.data;cov_2g5j0a6fdf.s[222]++;if(data){cov_2g5j0a6fdf.b[65][0]++;cov_2g5j0a6fdf.s[223]++;data.requestId=requestId;cov_2g5j0a6fdf.s[224]++;if(this.logger){cov_2g5j0a6fdf.b[66][0]++;cov_2g5j0a6fdf.s[225]++;this.logger.log(LogLevel_1.LogLevel.INFO,Enums_2.OCSDKTelemetryEvent.GETCHATTOKENSUCCEEDED,{RequestId:requestId,Region:response.data.Region,ElapsedTimeInMilliseconds:elapsedTimeInMilliseconds,TransactionId:response.headers["transaction-id"]},"Get Chat Token Succeeded");}else{cov_2g5j0a6fdf.b[66][1]++;}cov_2g5j0a6fdf.s[226]++;resolve(data);cov_2g5j0a6fdf.s[227]++;return[2];}else{cov_2g5j0a6fdf.b[65][1]++;}cov_2g5j0a6fdf.s[228]++;if((cov_2g5j0a6fdf.b[68][0]++,reconnectId)&&(cov_2g5j0a6fdf.b[68][1]++,response.status===Constants_1.default.noContentStatusCode)){cov_2g5j0a6fdf.b[67][0]++;cov_2g5j0a6fdf.s[229]++;reject(response);cov_2g5j0a6fdf.s[230]++;return[2];}else{cov_2g5j0a6fdf.b[67][1]++;}cov_2g5j0a6fdf.s[231]++;return[3,3];case 2:cov_2g5j0a6fdf.b[64][2]++;cov_2g5j0a6fdf.s[232]++;error_2=_a.sent();cov_2g5j0a6fdf.s[233]++;elapsedTimeInMilliseconds=timer.milliSecondsElapsed;cov_2g5j0a6fdf.s[234]++;if(this.logger){cov_2g5j0a6fdf.b[69][0]++;cov_2g5j0a6fdf.s[235]++;this.logger.log(LogLevel_1.LogLevel.ERROR,Enums_2.OCSDKTelemetryEvent.GETCHATTOKENFAILED,{RequestId:requestId,ExceptionDetails:error_2,ElapsedTimeInMilliseconds:elapsedTimeInMilliseconds},"Get Chat Token Failed");}else{cov_2g5j0a6fdf.b[69][1]++;}cov_2g5j0a6fdf.s[236]++;reject(error_2);cov_2g5j0a6fdf.s[237]++;return[2];case 3:cov_2g5j0a6fdf.b[64][3]++;cov_2g5j0a6fdf.s[238]++;if(currentRetryCount+1>=this.configuration.getChatTokenRetryCount){cov_2g5j0a6fdf.b[70][0]++;cov_2g5j0a6fdf.s[239]++;reject(new Error("The retry for getchattoken has exceeded its max value of "+this.configuration.getChatTokenRetryCount));cov_2g5j0a6fdf.s[240]++;return[2];}else{cov_2g5j0a6fdf.b[70][1]++;}cov_2g5j0a6fdf.s[241]++;setTimeout(function(){cov_2g5j0a6fdf.f[32]++;cov_2g5j0a6fdf.s[242]++;_this.getChatToken(requestId,getChatTokenOptionalParams,currentRetryCount+1).then(function(response){cov_2g5j0a6fdf.f[33]++;cov_2g5j0a6fdf.s[243]++;return resolve(response);}).catch(function(error){cov_2g5j0a6fdf.f[34]++;cov_2g5j0a6fdf.s[244]++;return reject(error);});},this.configuration.getChatTokenTimeBetweenRetriesOnFailure);cov_2g5j0a6fdf.s[245]++;return[2];}});});})];});});};cov_2g5j0a6fdf.s[246]++;SDK.prototype.getReconnectableChats=function(reconnectableChatsParams){cov_2g5j0a6fdf.f[35]++;cov_2g5j0a6fdf.s[247]++;return __awaiter(this,void 0,void 0,function(){cov_2g5j0a6fdf.f[36]++;var timer,authenticatedUserToken,endpoint,headers,options,axiosInstance;var _this=(cov_2g5j0a6fdf.s[248]++,this);cov_2g5j0a6fdf.s[249]++;return __generator(this,function(_a){cov_2g5j0a6fdf.f[37]++;cov_2g5j0a6fdf.s[250]++;timer=Timer_1.Timer.TIMER();cov_2g5j0a6fdf.s[251]++;authenticatedUserToken=reconnectableChatsParams.authenticatedUserToken;cov_2g5j0a6fdf.s[252]++;if(this.logger){cov_2g5j0a6fdf.b[71][0]++;cov_2g5j0a6fdf.s[253]++;this.logger.log(LogLevel_1.LogLevel.INFO,Enums_2.OCSDKTelemetryEvent.GETRECONNECTABLECHATS,"Get Reconnectable chat Started");}else{cov_2g5j0a6fdf.b[71][1]++;}cov_2g5j0a6fdf.s[254]++;endpoint=this.omnichannelConfiguration.orgUrl+"/"+OmnichannelEndpoints_1.default.LiveChatGetReconnectableChatsPath+"/"+this.omnichannelConfiguration.orgId+"/"+this.omnichannelConfiguration.widgetId+"/"+this.omnichannelConfiguration.orgId+"?channelId="+this.omnichannelConfiguration.channelId;cov_2g5j0a6fdf.s[255]++;headers=Constants_1.default.defaultHeaders;cov_2g5j0a6fdf.s[256]++;headers[OmnichannelHTTPHeaders_1.default.authenticatedUserToken]=authenticatedUserToken;cov_2g5j0a6fdf.s[257]++;options={headers:headers,method:"GET",url:endpoint};cov_2g5j0a6fdf.s[258]++;axiosInstance=axios_1.default.create();cov_2g5j0a6fdf.s[259]++;return[2,new Promise(function(resolve,reject){cov_2g5j0a6fdf.f[38]++;cov_2g5j0a6fdf.s[260]++;return __awaiter(_this,void 0,void 0,function(){cov_2g5j0a6fdf.f[39]++;var response,elapsedTimeInMilliseconds,data,error_3,elapsedTimeInMilliseconds;cov_2g5j0a6fdf.s[261]++;return __generator(this,function(_a){cov_2g5j0a6fdf.f[40]++;cov_2g5j0a6fdf.s[262]++;switch(_a.label){case 0:cov_2g5j0a6fdf.b[72][0]++;cov_2g5j0a6fdf.s[263]++;_a.trys.push([0,2,,3]);cov_2g5j0a6fdf.s[264]++;return[4,axiosInstance(options)];case 1:cov_2g5j0a6fdf.b[72][1]++;cov_2g5j0a6fdf.s[265]++;response=_a.sent();cov_2g5j0a6fdf.s[266]++;elapsedTimeInMilliseconds=timer.milliSecondsElapsed;cov_2g5j0a6fdf.s[267]++;data=response.data;cov_2g5j0a6fdf.s[268]++;if(data){cov_2g5j0a6fdf.b[73][0]++;cov_2g5j0a6fdf.s[269]++;if(this.logger){cov_2g5j0a6fdf.b[74][0]++;cov_2g5j0a6fdf.s[270]++;this.logger.log(LogLevel_1.LogLevel.INFO,Enums_2.OCSDKTelemetryEvent.GETRECONNECTABLECHATS,{Region:response.data.Region,ElapsedTimeInMilliseconds:elapsedTimeInMilliseconds,TransactionId:response.headers[Constants_1.default.transactionid]},"Get Reconnectable Chats Succeeded and old session returned");}else{cov_2g5j0a6fdf.b[74][1]++;}cov_2g5j0a6fdf.s[271]++;resolve(data);cov_2g5j0a6fdf.s[272]++;return[2];}else{cov_2g5j0a6fdf.b[73][1]++;}cov_2g5j0a6fdf.s[273]++;resolve();cov_2g5j0a6fdf.s[274]++;return[2];case 2:cov_2g5j0a6fdf.b[72][2]++;cov_2g5j0a6fdf.s[275]++;error_3=_a.sent();cov_2g5j0a6fdf.s[276]++;elapsedTimeInMilliseconds=timer.milliSecondsElapsed;cov_2g5j0a6fdf.s[277]++;if(this.logger){cov_2g5j0a6fdf.b[75][0]++;cov_2g5j0a6fdf.s[278]++;this.logger.log(LogLevel_1.LogLevel.ERROR,Enums_2.OCSDKTelemetryEvent.GETCHATTOKENFAILED,{ExceptionDetails:error_3,ElapsedTimeInMilliseconds:elapsedTimeInMilliseconds},"Get Reconnectable Chats Failed");}else{cov_2g5j0a6fdf.b[75][1]++;}cov_2g5j0a6fdf.s[279]++;reject(error_3);cov_2g5j0a6fdf.s[280]++;return[2];case 3:cov_2g5j0a6fdf.b[72][3]++;cov_2g5j0a6fdf.s[281]++;return[2];}});});})];});});};cov_2g5j0a6fdf.s[282]++;SDK.prototype.getReconnectAvailability=function(reconnectId){cov_2g5j0a6fdf.f[41]++;cov_2g5j0a6fdf.s[283]++;return __awaiter(this,void 0,void 0,function(){cov_2g5j0a6fdf.f[42]++;var timer,endpoint,headers,options,axiosInstance;var _this=(cov_2g5j0a6fdf.s[284]++,this);cov_2g5j0a6fdf.s[285]++;return __generator(this,function(_a){cov_2g5j0a6fdf.f[43]++;cov_2g5j0a6fdf.s[286]++;timer=Timer_1.Timer.TIMER();cov_2g5j0a6fdf.s[287]++;if(this.logger){cov_2g5j0a6fdf.b[76][0]++;cov_2g5j0a6fdf.s[288]++;this.logger.log(LogLevel_1.LogLevel.INFO,Enums_2.OCSDKTelemetryEvent.GETRECONNECTAVAILABILITY,"Get Reconnect availability started");}else{cov_2g5j0a6fdf.b[76][1]++;}cov_2g5j0a6fdf.s[289]++;endpoint=this.omnichannelConfiguration.orgUrl+"/"+OmnichannelEndpoints_1.default.LiveChatReconnectAvailabilityPath+"/"+this.omnichannelConfiguration.orgId+"/"+this.omnichannelConfiguration.widgetId+"/"+reconnectId;cov_2g5j0a6fdf.s[290]++;headers=Constants_1.default.defaultHeaders;cov_2g5j0a6fdf.s[291]++;options={headers:headers,method:"GET",url:endpoint};cov_2g5j0a6fdf.s[292]++;axiosInstance=axios_1.default.create();cov_2g5j0a6fdf.s[293]++;return[2,new Promise(function(resolve,reject){cov_2g5j0a6fdf.f[44]++;cov_2g5j0a6fdf.s[294]++;return __awaiter(_this,void 0,void 0,function(){cov_2g5j0a6fdf.f[45]++;var response,elapsedTimeInMilliseconds,data,error_4,elapsedTimeInMilliseconds;cov_2g5j0a6fdf.s[295]++;return __generator(this,function(_a){cov_2g5j0a6fdf.f[46]++;cov_2g5j0a6fdf.s[296]++;switch(_a.label){case 0:cov_2g5j0a6fdf.b[77][0]++;cov_2g5j0a6fdf.s[297]++;_a.trys.push([0,2,,3]);cov_2g5j0a6fdf.s[298]++;return[4,axiosInstance(options)];case 1:cov_2g5j0a6fdf.b[77][1]++;cov_2g5j0a6fdf.s[299]++;response=_a.sent();cov_2g5j0a6fdf.s[300]++;elapsedTimeInMilliseconds=timer.milliSecondsElapsed;cov_2g5j0a6fdf.s[301]++;data=response.data;cov_2g5j0a6fdf.s[302]++;if(data){cov_2g5j0a6fdf.b[78][0]++;cov_2g5j0a6fdf.s[303]++;if(this.logger){cov_2g5j0a6fdf.b[79][0]++;cov_2g5j0a6fdf.s[304]++;this.logger.log(LogLevel_1.LogLevel.INFO,Enums_2.OCSDKTelemetryEvent.GETRECONNECTAVAILABILITY,{Region:response.data.Region,ElapsedTimeInMilliseconds:elapsedTimeInMilliseconds,TransactionId:response.headers[Constants_1.default.transactionid]},"Get Reconnect availability Succeeded");}else{cov_2g5j0a6fdf.b[79][1]++;}cov_2g5j0a6fdf.s[305]++;resolve(data);cov_2g5j0a6fdf.s[306]++;return[2];}else{cov_2g5j0a6fdf.b[78][1]++;}cov_2g5j0a6fdf.s[307]++;if(this.logger){cov_2g5j0a6fdf.b[80][0]++;cov_2g5j0a6fdf.s[308]++;this.logger.log(LogLevel_1.LogLevel.WARN,Enums_2.OCSDKTelemetryEvent.GETRECONNECTAVAILABILITY,{Region:response.data.Region,ElapsedTimeInMilliseconds:elapsedTimeInMilliseconds,TransactionId:response.headers[Constants_1.default.transactionid]},"Get Reconnect availability didn't send any valid data.");}else{cov_2g5j0a6fdf.b[80][1]++;}cov_2g5j0a6fdf.s[309]++;resolve();cov_2g5j0a6fdf.s[310]++;return[2];case 2:cov_2g5j0a6fdf.b[77][2]++;cov_2g5j0a6fdf.s[311]++;error_4=_a.sent();cov_2g5j0a6fdf.s[312]++;elapsedTimeInMilliseconds=timer.milliSecondsElapsed;cov_2g5j0a6fdf.s[313]++;if(this.logger){cov_2g5j0a6fdf.b[81][0]++;cov_2g5j0a6fdf.s[314]++;this.logger.log(LogLevel_1.LogLevel.ERROR,Enums_2.OCSDKTelemetryEvent.GETRECONNECTAVAILABILITY,{ExceptionDetails:error_4,ElapsedTimeInMilliseconds:elapsedTimeInMilliseconds},"Get Reconnect Availability Failed");}else{cov_2g5j0a6fdf.b[81][1]++;}cov_2g5j0a6fdf.s[315]++;reject(error_4);cov_2g5j0a6fdf.s[316]++;return[2];case 3:cov_2g5j0a6fdf.b[77][3]++;cov_2g5j0a6fdf.s[317]++;return[2];}});});})];});});};cov_2g5j0a6fdf.s[318]++;SDK.prototype.getQueueAvailability=function(requestId,queueAvailabilityOptionalParams){cov_2g5j0a6fdf.f[47]++;cov_2g5j0a6fdf.s[319]++;if(queueAvailabilityOptionalParams===void 0){cov_2g5j0a6fdf.b[82][0]++;cov_2g5j0a6fdf.s[320]++;queueAvailabilityOptionalParams={};}else{cov_2g5j0a6fdf.b[82][1]++;}cov_2g5j0a6fdf.s[321]++;return __awaiter(this,void 0,void 0,function(){cov_2g5j0a6fdf.f[48]++;var timer,endpoint,axiosInstance,authenticatedUserToken,initContext,getContext,headers,data,options;var _this=(cov_2g5j0a6fdf.s[322]++,this);cov_2g5j0a6fdf.s[323]++;return __generator(this,function(_a){cov_2g5j0a6fdf.f[49]++;cov_2g5j0a6fdf.s[324]++;timer=Timer_1.Timer.TIMER();cov_2g5j0a6fdf.s[325]++;if(this.logger){cov_2g5j0a6fdf.b[83][0]++;cov_2g5j0a6fdf.s[326]++;this.logger.log(LogLevel_1.LogLevel.INFO,Enums_2.OCSDKTelemetryEvent.GETQUEUEAVAILABILITYSTARTED,{RequestId:requestId},"Get queue availability started");}else{cov_2g5j0a6fdf.b[83][1]++;}cov_2g5j0a6fdf.s[327]++;endpoint=this.omnichannelConfiguration.orgUrl+"/"+OmnichannelEndpoints_1.default.GetQueueAvailabilityPath+"/"+this.omnichannelConfiguration.orgId+"/"+this.omnichannelConfiguration.widgetId+"/"+requestId+"?channelId=lcw";cov_2g5j0a6fdf.s[328]++;axiosInstance=axios_1.default.create();cov_2g5j0a6fdf.s[329]++;axiosRetry_1.default(axiosInstance,{retries:this.configuration.maxRequestRetriesOnFailure});cov_2g5j0a6fdf.s[330]++;authenticatedUserToken=queueAvailabilityOptionalParams.authenticatedUserToken,initContext=queueAvailabilityOptionalParams.initContext,getContext=queueAvailabilityOptionalParams.getContext;cov_2g5j0a6fdf.s[331]++;headers=Constants_1.default.defaultHeaders;cov_2g5j0a6fdf.s[332]++;if(authenticatedUserToken){cov_2g5j0a6fdf.b[84][0]++;cov_2g5j0a6fdf.s[333]++;headers[OmnichannelHTTPHeaders_1.default.authenticatedUserToken]=authenticatedUserToken;}else{cov_2g5j0a6fdf.b[84][1]++;}cov_2g5j0a6fdf.s[334]++;data=(cov_2g5j0a6fdf.b[85][0]++,initContext)||(cov_2g5j0a6fdf.b[85][1]++,{});cov_2g5j0a6fdf.s[335]++;if((cov_2g5j0a6fdf.b[87][0]++,getContext)&&(cov_2g5j0a6fdf.b[87][1]++,!window.document)){cov_2g5j0a6fdf.b[86][0]++;cov_2g5j0a6fdf.s[336]++;return[2,Promise.reject(new Error("getContext is only supported on web browsers"))];}else{cov_2g5j0a6fdf.b[86][1]++;}cov_2g5j0a6fdf.s[337]++;if(getContext){cov_2g5j0a6fdf.b[88][0]++;cov_2g5j0a6fdf.s[338]++;data.browser=BrowserInfo_1.BrowserInfo.getBrowserName();cov_2g5j0a6fdf.s[339]++;data.device=DeviceInfo_1.DeviceInfo.getDeviceType();cov_2g5j0a6fdf.s[340]++;data.originurl=window.location.href;cov_2g5j0a6fdf.s[341]++;data.os=OSInfo_1.OSInfo.getOsType();}else{cov_2g5j0a6fdf.b[88][1]++;}cov_2g5j0a6fdf.s[342]++;if(!data.locale){cov_2g5j0a6fdf.b[89][0]++;cov_2g5j0a6fdf.s[343]++;data.locale=Constants_1.default.defaultLocale;}else{cov_2g5j0a6fdf.b[89][1]++;}cov_2g5j0a6fdf.s[344]++;if((cov_2g5j0a6fdf.b[91][0]++,data.locale)&&(cov_2g5j0a6fdf.b[91][1]++,!Locales_1.default.supportedLocales.includes(data.locale))){cov_2g5j0a6fdf.b[90][0]++;cov_2g5j0a6fdf.s[345]++;return[2,Promise.reject(new Error("Unsupported locale: '"+data.locale+"'"))];}else{cov_2g5j0a6fdf.b[90][1]++;}cov_2g5j0a6fdf.s[346]++;options={data:data,headers:headers,method:"POST",url:endpoint};cov_2g5j0a6fdf.s[347]++;return[2,new Promise(function(resolve,reject){cov_2g5j0a6fdf.f[50]++;cov_2g5j0a6fdf.s[348]++;return __awaiter(_this,void 0,void 0,function(){cov_2g5j0a6fdf.f[51]++;var response,elapsedTimeInMilliseconds,data_1,error_5,elapsedTimeInMilliseconds;cov_2g5j0a6fdf.s[349]++;return __generator(this,function(_a){cov_2g5j0a6fdf.f[52]++;cov_2g5j0a6fdf.s[350]++;switch(_a.label){case 0:cov_2g5j0a6fdf.b[92][0]++;cov_2g5j0a6fdf.s[351]++;_a.trys.push([0,2,,3]);cov_2g5j0a6fdf.s[352]++;return[4,axiosInstance(options)];case 1:cov_2g5j0a6fdf.b[92][1]++;cov_2g5j0a6fdf.s[353]++;response=_a.sent();cov_2g5j0a6fdf.s[354]++;elapsedTimeInMilliseconds=timer.milliSecondsElapsed;cov_2g5j0a6fdf.s[355]++;data_1=response.data;cov_2g5j0a6fdf.s[356]++;if(data_1){cov_2g5j0a6fdf.b[93][0]++;cov_2g5j0a6fdf.s[357]++;if(this.logger){cov_2g5j0a6fdf.b[94][0]++;cov_2g5j0a6fdf.s[358]++;this.logger.log(LogLevel_1.LogLevel.INFO,Enums_2.OCSDKTelemetryEvent.GETQUEUEAVAILABILITYSUCCEEDED,{RequestId:requestId,Region:response.data.Region,ElapsedTimeInMilliseconds:elapsedTimeInMilliseconds,TransactionId:response.headers["transaction-id"]},"Get queue availability Succeeded");}else{cov_2g5j0a6fdf.b[94][1]++;}cov_2g5j0a6fdf.s[359]++;resolve(data_1);}else{cov_2g5j0a6fdf.b[93][1]++;}cov_2g5j0a6fdf.s[360]++;return[3,3];case 2:cov_2g5j0a6fdf.b[92][2]++;cov_2g5j0a6fdf.s[361]++;error_5=_a.sent();cov_2g5j0a6fdf.s[362]++;elapsedTimeInMilliseconds=timer.milliSecondsElapsed;cov_2g5j0a6fdf.s[363]++;if(this.logger){cov_2g5j0a6fdf.b[95][0]++;cov_2g5j0a6fdf.s[364]++;this.logger.log(LogLevel_1.LogLevel.ERROR,Enums_2.OCSDKTelemetryEvent.GETQUEUEAVAILABILITYFAILED,{RequestId:requestId,ExceptionDetails:error_5,ElapsedTimeInMilliseconds:elapsedTimeInMilliseconds},"Get queue availability failed");}else{cov_2g5j0a6fdf.b[95][1]++;}cov_2g5j0a6fdf.s[365]++;reject(error_5);cov_2g5j0a6fdf.s[366]++;return[3,3];case 3:cov_2g5j0a6fdf.b[92][3]++;cov_2g5j0a6fdf.s[367]++;return[2];}});});})];});});};cov_2g5j0a6fdf.s[368]++;SDK.prototype.sessionInit=function(requestId,sessionInitOptionalParams){cov_2g5j0a6fdf.f[53]++;cov_2g5j0a6fdf.s[369]++;if(sessionInitOptionalParams===void 0){cov_2g5j0a6fdf.b[96][0]++;cov_2g5j0a6fdf.s[370]++;sessionInitOptionalParams={};}else{cov_2g5j0a6fdf.b[96][1]++;}cov_2g5j0a6fdf.s[371]++;return __awaiter(this,void 0,void 0,function(){cov_2g5j0a6fdf.f[54]++;var timer,axiosInstance,reconnectId,authenticatedUserToken,initContext,getContext,headers,endpoint,data,options;var _this=(cov_2g5j0a6fdf.s[372]++,this);cov_2g5j0a6fdf.s[373]++;return __generator(this,function(_a){cov_2g5j0a6fdf.f[55]++;cov_2g5j0a6fdf.s[374]++;timer=Timer_1.Timer.TIMER();cov_2g5j0a6fdf.s[375]++;if(this.logger){cov_2g5j0a6fdf.b[97][0]++;cov_2g5j0a6fdf.s[376]++;this.logger.log(LogLevel_1.LogLevel.INFO,Enums_2.OCSDKTelemetryEvent.SESSIONINITSTARTED,{RequestId:requestId},"Session Init Started");}else{cov_2g5j0a6fdf.b[97][1]++;}cov_2g5j0a6fdf.s[377]++;axiosInstance=axios_1.default.create();cov_2g5j0a6fdf.s[378]++;axiosRetry_1.default(axiosInstance,{retries:this.configuration.maxRequestRetriesOnFailure});cov_2g5j0a6fdf.s[379]++;reconnectId=sessionInitOptionalParams.reconnectId,authenticatedUserToken=sessionInitOptionalParams.authenticatedUserToken,initContext=sessionInitOptionalParams.initContext,getContext=sessionInitOptionalParams.getContext;cov_2g5j0a6fdf.s[380]++;headers=Constants_1.default.defaultHeaders;cov_2g5j0a6fdf.s[381]++;endpoint=this.omnichannelConfiguration.orgUrl+"/"+OmnichannelEndpoints_1.default.LiveChatSessionInitPath+"/"+this.omnichannelConfiguration.orgId+"/"+this.omnichannelConfiguration.widgetId+"/"+requestId;cov_2g5j0a6fdf.s[382]++;if(authenticatedUserToken){cov_2g5j0a6fdf.b[98][0]++;cov_2g5j0a6fdf.s[383]++;endpoint=this.omnichannelConfiguration.orgUrl+"/"+OmnichannelEndpoints_1.default.LiveChatAuthSessionInitPath+"/"+this.omnichannelConfiguration.orgId+"/"+this.omnichannelConfiguration.widgetId+"/"+requestId;cov_2g5j0a6fdf.s[384]++;headers[OmnichannelHTTPHeaders_1.default.authenticatedUserToken]=authenticatedUserToken;}else{cov_2g5j0a6fdf.b[98][1]++;}cov_2g5j0a6fdf.s[385]++;if(reconnectId){cov_2g5j0a6fdf.b[99][0]++;cov_2g5j0a6fdf.s[386]++;endpoint+="/"+reconnectId;}else{cov_2g5j0a6fdf.b[99][1]++;}cov_2g5j0a6fdf.s[387]++;endpoint+="?channelId="+this.omnichannelConfiguration.channelId;cov_2g5j0a6fdf.s[388]++;data=(cov_2g5j0a6fdf.b[100][0]++,initContext)||(cov_2g5j0a6fdf.b[100][1]++,{});cov_2g5j0a6fdf.s[389]++;if((cov_2g5j0a6fdf.b[102][0]++,getContext)&&(cov_2g5j0a6fdf.b[102][1]++,!window.document)){cov_2g5j0a6fdf.b[101][0]++;cov_2g5j0a6fdf.s[390]++;return[2,Promise.reject(new Error("getContext is only supported on web browsers"))];}else{cov_2g5j0a6fdf.b[101][1]++;}cov_2g5j0a6fdf.s[391]++;if(getContext){cov_2g5j0a6fdf.b[103][0]++;cov_2g5j0a6fdf.s[392]++;data.browser=BrowserInfo_1.BrowserInfo.getBrowserName();cov_2g5j0a6fdf.s[393]++;data.device=DeviceInfo_1.DeviceInfo.getDeviceType();cov_2g5j0a6fdf.s[394]++;data.originurl=window.location.href;cov_2g5j0a6fdf.s[395]++;data.os=OSInfo_1.OSInfo.getOsType();}else{cov_2g5j0a6fdf.b[103][1]++;}cov_2g5j0a6fdf.s[396]++;if(!data.locale){cov_2g5j0a6fdf.b[104][0]++;cov_2g5j0a6fdf.s[397]++;data.locale=Constants_1.default.defaultLocale;}else{cov_2g5j0a6fdf.b[104][1]++;}cov_2g5j0a6fdf.s[398]++;if((cov_2g5j0a6fdf.b[106][0]++,data.locale)&&(cov_2g5j0a6fdf.b[106][1]++,!Locales_1.default.supportedLocales.includes(data.locale))){cov_2g5j0a6fdf.b[105][0]++;cov_2g5j0a6fdf.s[399]++;return[2,Promise.reject(new Error("Unsupported locale: '"+data.locale+"'"))];}else{cov_2g5j0a6fdf.b[105][1]++;}cov_2g5j0a6fdf.s[400]++;options={data:data,headers:headers,method:"POST",url:endpoint};cov_2g5j0a6fdf.s[401]++;return[2,new Promise(function(resolve,reject){cov_2g5j0a6fdf.f[56]++;cov_2g5j0a6fdf.s[402]++;return __awaiter(_this,void 0,void 0,function(){cov_2g5j0a6fdf.f[57]++;var response,elapsedTimeInMilliseconds,error_6,elapsedTimeInMilliseconds;cov_2g5j0a6fdf.s[403]++;return __generator(this,function(_a){cov_2g5j0a6fdf.f[58]++;cov_2g5j0a6fdf.s[404]++;switch(_a.label){case 0:cov_2g5j0a6fdf.b[107][0]++;cov_2g5j0a6fdf.s[405]++;_a.trys.push([0,2,,3]);cov_2g5j0a6fdf.s[406]++;return[4,axiosInstance(options)];case 1:cov_2g5j0a6fdf.b[107][1]++;cov_2g5j0a6fdf.s[407]++;response=_a.sent();cov_2g5j0a6fdf.s[408]++;elapsedTimeInMilliseconds=timer.milliSecondsElapsed;cov_2g5j0a6fdf.s[409]++;if(this.logger){cov_2g5j0a6fdf.b[108][0]++;cov_2g5j0a6fdf.s[410]++;this.logger.log(LogLevel_1.LogLevel.INFO,Enums_2.OCSDKTelemetryEvent.SESSIONINITSUCCEEDED,{RequestId:requestId,Region:response.data.Region,ElapsedTimeInMilliseconds:elapsedTimeInMilliseconds,TransactionId:response.headers["transaction-id"]},"Session Init Succeeded");}else{cov_2g5j0a6fdf.b[108][1]++;}cov_2g5j0a6fdf.s[411]++;resolve();cov_2g5j0a6fdf.s[412]++;return[3,3];case 2:cov_2g5j0a6fdf.b[107][2]++;cov_2g5j0a6fdf.s[413]++;error_6=_a.sent();cov_2g5j0a6fdf.s[414]++;elapsedTimeInMilliseconds=timer.milliSecondsElapsed;cov_2g5j0a6fdf.s[415]++;if(this.logger){cov_2g5j0a6fdf.b[109][0]++;cov_2g5j0a6fdf.s[416]++;this.logger.log(LogLevel_1.LogLevel.ERROR,Enums_2.OCSDKTelemetryEvent.SESSIONINITFAILED,{RequestId:requestId,ExceptionDetails:error_6,ElapsedTimeInMilliseconds:elapsedTimeInMilliseconds},"Session Init Failed");}else{cov_2g5j0a6fdf.b[109][1]++;}cov_2g5j0a6fdf.s[417]++;reject(error_6);cov_2g5j0a6fdf.s[418]++;return[3,3];case 3:cov_2g5j0a6fdf.b[107][3]++;cov_2g5j0a6fdf.s[419]++;return[2];}});});})];});});};cov_2g5j0a6fdf.s[420]++;SDK.prototype.sessionClose=function(requestId,sessionCloseOptionalParams){cov_2g5j0a6fdf.f[59]++;cov_2g5j0a6fdf.s[421]++;if(sessionCloseOptionalParams===void 0){cov_2g5j0a6fdf.b[110][0]++;cov_2g5j0a6fdf.s[422]++;sessionCloseOptionalParams={};}else{cov_2g5j0a6fdf.b[110][1]++;}cov_2g5j0a6fdf.s[423]++;return __awaiter(this,void 0,void 0,function(){cov_2g5j0a6fdf.f[60]++;var timer,endpoint,axiosInstance,authenticatedUserToken,isReconnectChat,isPersistentChat,chatId,headers,data,options;var _this=(cov_2g5j0a6fdf.s[424]++,this);cov_2g5j0a6fdf.s[425]++;return __generator(this,function(_a){cov_2g5j0a6fdf.f[61]++;cov_2g5j0a6fdf.s[426]++;timer=Timer_1.Timer.TIMER();cov_2g5j0a6fdf.s[427]++;if(this.logger){cov_2g5j0a6fdf.b[111][0]++;cov_2g5j0a6fdf.s[428]++;this.logger.log(LogLevel_1.LogLevel.INFO,Enums_2.OCSDKTelemetryEvent.SESSIONCLOSESTARTED,{RequestId:requestId},"Session Close Started");}else{cov_2g5j0a6fdf.b[111][1]++;}cov_2g5j0a6fdf.s[429]++;endpoint=this.omnichannelConfiguration.orgUrl+"/"+OmnichannelEndpoints_1.default.LiveChatSessionClosePath+"/"+this.omnichannelConfiguration.orgId+"/"+this.omnichannelConfiguration.widgetId+"/"+requestId+"?channelId="+this.omnichannelConfiguration.channelId;cov_2g5j0a6fdf.s[430]++;axiosInstance=axios_1.default.create();cov_2g5j0a6fdf.s[431]++;axiosRetry_1.default(axiosInstance,{retries:this.configuration.maxRequestRetriesOnFailure});cov_2g5j0a6fdf.s[432]++;authenticatedUserToken=sessionCloseOptionalParams.authenticatedUserToken,isReconnectChat=sessionCloseOptionalParams.isReconnectChat,isPersistentChat=sessionCloseOptionalParams.isPersistentChat,chatId=sessionCloseOptionalParams.chatId;cov_2g5j0a6fdf.s[433]++;headers=Constants_1.default.defaultHeaders;cov_2g5j0a6fdf.s[434]++;data={};cov_2g5j0a6fdf.s[435]++;data.chatId=chatId;cov_2g5j0a6fdf.s[436]++;if(authenticatedUserToken){cov_2g5j0a6fdf.b[112][0]++;cov_2g5j0a6fdf.s[437]++;endpoint=this.omnichannelConfiguration.orgUrl+"/"+OmnichannelEndpoints_1.default.LiveChatAuthSessionClosePath+"/"+this.omnichannelConfiguration.orgId+"/"+this.omnichannelConfiguration.widgetId+"/"+requestId+"?channelId="+this.omnichannelConfiguration.channelId;cov_2g5j0a6fdf.s[438]++;headers[OmnichannelHTTPHeaders_1.default.authenticatedUserToken]=authenticatedUserToken;}else{cov_2g5j0a6fdf.b[112][1]++;}cov_2g5j0a6fdf.s[439]++;if(isReconnectChat){cov_2g5j0a6fdf.b[113][0]++;cov_2g5j0a6fdf.s[440]++;endpoint+="&isReconnectChat=true";}else{cov_2g5j0a6fdf.b[113][1]++;}cov_2g5j0a6fdf.s[441]++;if(isPersistentChat){cov_2g5j0a6fdf.b[114][0]++;cov_2g5j0a6fdf.s[442]++;endpoint+="&isPersistentChat=true";}else{cov_2g5j0a6fdf.b[114][1]++;}cov_2g5j0a6fdf.s[443]++;options={data:data,headers:headers,method:"POST",url:endpoint};cov_2g5j0a6fdf.s[444]++;return[2,new Promise(function(resolve,reject){cov_2g5j0a6fdf.f[62]++;cov_2g5j0a6fdf.s[445]++;return __awaiter(_this,void 0,void 0,function(){cov_2g5j0a6fdf.f[63]++;var response,elapsedTimeInMilliseconds,error_7,elapsedTimeInMilliseconds;cov_2g5j0a6fdf.s[446]++;return __generator(this,function(_a){cov_2g5j0a6fdf.f[64]++;cov_2g5j0a6fdf.s[447]++;switch(_a.label){case 0:cov_2g5j0a6fdf.b[115][0]++;cov_2g5j0a6fdf.s[448]++;_a.trys.push([0,2,,3]);cov_2g5j0a6fdf.s[449]++;return[4,axiosInstance(options)];case 1:cov_2g5j0a6fdf.b[115][1]++;cov_2g5j0a6fdf.s[450]++;response=_a.sent();cov_2g5j0a6fdf.s[451]++;elapsedTimeInMilliseconds=timer.milliSecondsElapsed;cov_2g5j0a6fdf.s[452]++;if(this.logger){cov_2g5j0a6fdf.b[116][0]++;cov_2g5j0a6fdf.s[453]++;this.logger.log(LogLevel_1.LogLevel.INFO,Enums_2.OCSDKTelemetryEvent.SESSIONCLOSESUCCEEDED,{RequestId:requestId,Region:response.data.Region,ElapsedTimeInMilliseconds:elapsedTimeInMilliseconds,TransactionId:response.headers["transaction-id"]},"Session Close Succeeded");}else{cov_2g5j0a6fdf.b[116][1]++;}cov_2g5j0a6fdf.s[454]++;resolve();cov_2g5j0a6fdf.s[455]++;return[3,3];case 2:cov_2g5j0a6fdf.b[115][2]++;cov_2g5j0a6fdf.s[456]++;error_7=_a.sent();cov_2g5j0a6fdf.s[457]++;elapsedTimeInMilliseconds=timer.milliSecondsElapsed;cov_2g5j0a6fdf.s[458]++;if(this.logger){cov_2g5j0a6fdf.b[117][0]++;cov_2g5j0a6fdf.s[459]++;this.logger.log(LogLevel_1.LogLevel.ERROR,Enums_2.OCSDKTelemetryEvent.SESSIONCLOSEFAILED,{RequestId:requestId,ExceptionDetails:error_7,ElapsedTimeInMilliseconds:elapsedTimeInMilliseconds},"Session Close Failed");}else{cov_2g5j0a6fdf.b[117][1]++;}cov_2g5j0a6fdf.s[460]++;reject();cov_2g5j0a6fdf.s[461]++;return[3,3];case 3:cov_2g5j0a6fdf.b[115][3]++;cov_2g5j0a6fdf.s[462]++;return[2];}});});})];});});};cov_2g5j0a6fdf.s[463]++;SDK.prototype.validateAuthChatRecord=function(requestId,validateAuthChatRecordOptionalParams){cov_2g5j0a6fdf.f[65]++;var _a,_b,_c,_d;cov_2g5j0a6fdf.s[464]++;return __awaiter(this,void 0,void 0,function(){cov_2g5j0a6fdf.f[66]++;var timer,authenticatedUserToken,chatId,endpoint,axiosInstance,headers,options,response,elapsedTimeInMilliseconds,error_8,elapsedTimeInMilliseconds;cov_2g5j0a6fdf.s[465]++;return __generator(this,function(_e){cov_2g5j0a6fdf.f[67]++;cov_2g5j0a6fdf.s[466]++;switch(_e.label){case 0:cov_2g5j0a6fdf.b[118][0]++;cov_2g5j0a6fdf.s[467]++;timer=Timer_1.Timer.TIMER();cov_2g5j0a6fdf.s[468]++;if(this.logger){cov_2g5j0a6fdf.b[119][0]++;cov_2g5j0a6fdf.s[469]++;this.logger.log(LogLevel_1.LogLevel.INFO,Enums_2.OCSDKTelemetryEvent.VALIDATEAUTHCHATRECORDSTARTED,{RequestId:requestId},"Validate Auth Chat Record Started");}else{cov_2g5j0a6fdf.b[119][1]++;}cov_2g5j0a6fdf.s[470]++;authenticatedUserToken=validateAuthChatRecordOptionalParams.authenticatedUserToken,chatId=validateAuthChatRecordOptionalParams.chatId;cov_2g5j0a6fdf.s[471]++;endpoint=this.omnichannelConfiguration.orgUrl+"/"+OmnichannelEndpoints_1.default.LiveChatValidateAuthChatMapRecordPath+"/"+this.omnichannelConfiguration.orgId+"/"+this.omnichannelConfiguration.widgetId+"/"+chatId+"/"+requestId+"?channelId="+this.omnichannelConfiguration.channelId;cov_2g5j0a6fdf.s[472]++;axiosInstance=axios_1.default.create();cov_2g5j0a6fdf.s[473]++;axiosRetry_1.default(axiosInstance,{retries:this.configuration.maxRequestRetriesOnFailure});cov_2g5j0a6fdf.s[474]++;headers=Constants_1.default.defaultHeaders;cov_2g5j0a6fdf.s[475]++;if(authenticatedUserToken){cov_2g5j0a6fdf.b[120][0]++;cov_2g5j0a6fdf.s[476]++;headers[OmnichannelHTTPHeaders_1.default.authenticatedUserToken]=authenticatedUserToken;}else{cov_2g5j0a6fdf.b[120][1]++;}cov_2g5j0a6fdf.s[477]++;options={headers:headers,method:"GET",url:endpoint};cov_2g5j0a6fdf.s[478]++;_e.label=1;case 1:cov_2g5j0a6fdf.b[118][1]++;cov_2g5j0a6fdf.s[479]++;_e.trys.push([1,3,,4]);cov_2g5j0a6fdf.s[480]++;return[4,axiosInstance(options)];case 2:cov_2g5j0a6fdf.b[118][2]++;cov_2g5j0a6fdf.s[481]++;response=_e.sent();cov_2g5j0a6fdf.s[482]++;elapsedTimeInMilliseconds=timer.milliSecondsElapsed;cov_2g5j0a6fdf.s[483]++;if(((cov_2g5j0a6fdf.b[123][0]++,(_a=response.data)===null)||(cov_2g5j0a6fdf.b[123][1]++,_a===void 0)?(cov_2g5j0a6fdf.b[122][0]++,void 0):(cov_2g5j0a6fdf.b[122][1]++,_a.authChatExist))===true){cov_2g5j0a6fdf.b[121][0]++;cov_2g5j0a6fdf.s[484]++;(cov_2g5j0a6fdf.b[125][0]++,(_b=this.logger)===null)||(cov_2g5j0a6fdf.b[125][1]++,_b===void 0)?(cov_2g5j0a6fdf.b[124][0]++,void 0):(cov_2g5j0a6fdf.b[124][1]++,_b.log(LogLevel_1.LogLevel.INFO,Enums_2.OCSDKTelemetryEvent.VALIDATEAUTHCHATRECORDSUCCEEDED,{RequestId:requestId,Region:response.data.Region,ElapsedTimeInMilliseconds:elapsedTimeInMilliseconds,TransactionId:response.headers["transaction-id"]},"Validate Auth Chat Record Succeeded"));cov_2g5j0a6fdf.s[485]++;return[2,Promise.resolve(response.data)];}else{cov_2g5j0a6fdf.b[121][1]++;cov_2g5j0a6fdf.s[486]++;(cov_2g5j0a6fdf.b[127][0]++,(_c=this.logger)===null)||(cov_2g5j0a6fdf.b[127][1]++,_c===void 0)?(cov_2g5j0a6fdf.b[126][0]++,void 0):(cov_2g5j0a6fdf.b[126][1]++,_c.log(LogLevel_1.LogLevel.INFO,Enums_2.OCSDKTelemetryEvent.VALIDATEAUTHCHATRECORDFAILED,{RequestId:requestId,Region:response.data.Region,ElapsedTimeInMilliseconds:elapsedTimeInMilliseconds,TransactionId:response.headers["transaction-id"],ErrorCode:response.status},"Validate Auth Chat Record Failed. Record is not found or request is not authorized"));cov_2g5j0a6fdf.s[487]++;return[2,Promise.reject(new Error("Validate Auth Chat Record Failed. Record is not found or request is not authorized"))];}cov_2g5j0a6fdf.s[488]++;return[3,4];case 3:cov_2g5j0a6fdf.b[118][3]++;cov_2g5j0a6fdf.s[489]++;error_8=_e.sent();cov_2g5j0a6fdf.s[490]++;elapsedTimeInMilliseconds=timer.milliSecondsElapsed;cov_2g5j0a6fdf.s[491]++;(cov_2g5j0a6fdf.b[129][0]++,(_d=this.logger)===null)||(cov_2g5j0a6fdf.b[129][1]++,_d===void 0)?(cov_2g5j0a6fdf.b[128][0]++,void 0):(cov_2g5j0a6fdf.b[128][1]++,_d.log(LogLevel_1.LogLevel.ERROR,Enums_2.OCSDKTelemetryEvent.VALIDATEAUTHCHATRECORDFAILED,{RequestId:requestId,ExceptionDetails:error_8,ElapsedTimeInMilliseconds:elapsedTimeInMilliseconds},"Validate Auth Chat Record Failed"));cov_2g5j0a6fdf.s[492]++;if(error_8.toString()==="Error: Request failed with status code 404"){cov_2g5j0a6fdf.b[130][0]++;cov_2g5j0a6fdf.s[493]++;return[2,Promise.resolve({})];}else{cov_2g5j0a6fdf.b[130][1]++;cov_2g5j0a6fdf.s[494]++;return[2,Promise.reject()];}cov_2g5j0a6fdf.s[495]++;return[3,4];case 4:cov_2g5j0a6fdf.b[118][4]++;cov_2g5j0a6fdf.s[496]++;return[2];}});});};cov_2g5j0a6fdf.s[497]++;SDK.prototype.submitPostChatResponse=function(requestId,postChatResponse,submitPostChatResponseOptionalParams){cov_2g5j0a6fdf.f[68]++;cov_2g5j0a6fdf.s[498]++;if(submitPostChatResponseOptionalParams===void 0){cov_2g5j0a6fdf.b[131][0]++;cov_2g5j0a6fdf.s[499]++;submitPostChatResponseOptionalParams={};}else{cov_2g5j0a6fdf.b[131][1]++;}cov_2g5j0a6fdf.s[500]++;return __awaiter(this,void 0,void 0,function(){cov_2g5j0a6fdf.f[69]++;var timer,endpoint,axiosInstance,authenticatedUserToken,headers,options;var _this=(cov_2g5j0a6fdf.s[501]++,this);cov_2g5j0a6fdf.s[502]++;return __generator(this,function(_a){cov_2g5j0a6fdf.f[70]++;cov_2g5j0a6fdf.s[503]++;timer=Timer_1.Timer.TIMER();cov_2g5j0a6fdf.s[504]++;if(this.logger){cov_2g5j0a6fdf.b[132][0]++;cov_2g5j0a6fdf.s[505]++;this.logger.log(LogLevel_1.LogLevel.INFO,Enums_2.OCSDKTelemetryEvent.SUBMITPOSTCHATSTARTED,{RequestId:requestId},"Submit Post Chat Started");}else{cov_2g5j0a6fdf.b[132][1]++;}cov_2g5j0a6fdf.s[506]++;endpoint=this.omnichannelConfiguration.orgUrl+"/"+OmnichannelEndpoints_1.default.LiveChatSubmitPostChatPath+"/"+this.omnichannelConfiguration.orgId+"/"+this.omnichannelConfiguration.widgetId+"/"+requestId+"?channelId="+this.omnichannelConfiguration.channelId;cov_2g5j0a6fdf.s[507]++;axiosInstance=axios_1.default.create();cov_2g5j0a6fdf.s[508]++;axiosRetry_1.default(axiosInstance,{retries:this.configuration.maxRequestRetriesOnFailure});cov_2g5j0a6fdf.s[509]++;authenticatedUserToken=submitPostChatResponseOptionalParams.authenticatedUserToken;cov_2g5j0a6fdf.s[510]++;headers=Constants_1.default.defaultHeaders;cov_2g5j0a6fdf.s[511]++;if(authenticatedUserToken){cov_2g5j0a6fdf.b[133][0]++;cov_2g5j0a6fdf.s[512]++;endpoint=this.omnichannelConfiguration.orgUrl+"/"+OmnichannelEndpoints_1.default.LiveChatAuthSubmitPostChatPath+"/"+this.omnichannelConfiguration.orgId+"/"+this.omnichannelConfiguration.widgetId+"/"+requestId+"?channelId="+this.omnichannelConfiguration.channelId;cov_2g5j0a6fdf.s[513]++;headers[OmnichannelHTTPHeaders_1.default.authenticatedUserToken]=authenticatedUserToken;}else{cov_2g5j0a6fdf.b[133][1]++;}cov_2g5j0a6fdf.s[514]++;options={data:JSON.stringify(postChatResponse),headers:headers,method:"POST",url:endpoint};cov_2g5j0a6fdf.s[515]++;return[2,new Promise(function(resolve,reject){cov_2g5j0a6fdf.f[71]++;cov_2g5j0a6fdf.s[516]++;return __awaiter(_this,void 0,void 0,function(){cov_2g5j0a6fdf.f[72]++;var response,elapsedTimeInMilliseconds,error_9,elapsedTimeInMilliseconds;cov_2g5j0a6fdf.s[517]++;return __generator(this,function(_a){cov_2g5j0a6fdf.f[73]++;cov_2g5j0a6fdf.s[518]++;switch(_a.label){case 0:cov_2g5j0a6fdf.b[134][0]++;cov_2g5j0a6fdf.s[519]++;_a.trys.push([0,2,,3]);cov_2g5j0a6fdf.s[520]++;return[4,axiosInstance(options)];case 1:cov_2g5j0a6fdf.b[134][1]++;cov_2g5j0a6fdf.s[521]++;response=_a.sent();cov_2g5j0a6fdf.s[522]++;elapsedTimeInMilliseconds=timer.milliSecondsElapsed;cov_2g5j0a6fdf.s[523]++;if(this.logger){cov_2g5j0a6fdf.b[135][0]++;cov_2g5j0a6fdf.s[524]++;this.logger.log(LogLevel_1.LogLevel.INFO,Enums_2.OCSDKTelemetryEvent.SUBMITPOSTCHATSUCCEEDED,{RequestId:requestId,Region:response.data.Region,ElapsedTimeInMilliseconds:elapsedTimeInMilliseconds,TransactionId:response.headers["transaction-id"]},"Submit Post Chat Succeeded");}else{cov_2g5j0a6fdf.b[135][1]++;}cov_2g5j0a6fdf.s[525]++;resolve();cov_2g5j0a6fdf.s[526]++;return[3,3];case 2:cov_2g5j0a6fdf.b[134][2]++;cov_2g5j0a6fdf.s[527]++;error_9=_a.sent();cov_2g5j0a6fdf.s[528]++;elapsedTimeInMilliseconds=timer.milliSecondsElapsed;cov_2g5j0a6fdf.s[529]++;if(this.logger){cov_2g5j0a6fdf.b[136][0]++;cov_2g5j0a6fdf.s[530]++;this.logger.log(LogLevel_1.LogLevel.ERROR,Enums_2.OCSDKTelemetryEvent.SUBMITPOSTCHATFAILED,{RequestId:requestId,ExceptionDetails:error_9,ElapsedTimeInMilliseconds:elapsedTimeInMilliseconds},"Submit Post Chat Failed");}else{cov_2g5j0a6fdf.b[136][1]++;}cov_2g5j0a6fdf.s[531]++;reject();cov_2g5j0a6fdf.s[532]++;return[3,3];case 3:cov_2g5j0a6fdf.b[134][3]++;cov_2g5j0a6fdf.s[533]++;return[2];}});});})];});});};cov_2g5j0a6fdf.s[534]++;SDK.prototype.getSurveyInviteLink=function(surveyOwnerId,surveyInviteAPIRequestBody,getsurveyInviteLinkOptionalParams){cov_2g5j0a6fdf.f[74]++;cov_2g5j0a6fdf.s[535]++;if(getsurveyInviteLinkOptionalParams===void 0){cov_2g5j0a6fdf.b[137][0]++;cov_2g5j0a6fdf.s[536]++;getsurveyInviteLinkOptionalParams={};}else{cov_2g5j0a6fdf.b[137][1]++;}cov_2g5j0a6fdf.s[537]++;return __awaiter(this,void 0,void 0,function(){cov_2g5j0a6fdf.f[75]++;var timer,endpoint,axiosInstance,authenticatedUserToken,requestId,headers,options;var _this=(cov_2g5j0a6fdf.s[538]++,this);cov_2g5j0a6fdf.s[539]++;return __generator(this,function(_a){cov_2g5j0a6fdf.f[76]++;cov_2g5j0a6fdf.s[540]++;timer=Timer_1.Timer.TIMER();cov_2g5j0a6fdf.s[541]++;if(this.logger){cov_2g5j0a6fdf.b[138][0]++;cov_2g5j0a6fdf.s[542]++;this.logger.log(LogLevel_1.LogLevel.INFO,Enums_2.OCSDKTelemetryEvent.GETSURVEYINVITELINKSTARTED,{SurveyOwnerId:surveyOwnerId},"Get Survey Invite Link Started");}else{cov_2g5j0a6fdf.b[138][1]++;}cov_2g5j0a6fdf.s[543]++;endpoint=this.omnichannelConfiguration.orgUrl+"/"+OmnichannelEndpoints_1.default.LiveChatGetSurveyInviteLinkPath+"/"+this.omnichannelConfiguration.orgId+"/"+surveyOwnerId;cov_2g5j0a6fdf.s[544]++;axiosInstance=axios_1.default.create();cov_2g5j0a6fdf.s[545]++;axiosRetry_1.default(axiosInstance,{retries:this.configuration.maxRequestRetriesOnFailure});cov_2g5j0a6fdf.s[546]++;authenticatedUserToken=getsurveyInviteLinkOptionalParams.authenticatedUserToken,requestId=getsurveyInviteLinkOptionalParams.requestId;cov_2g5j0a6fdf.s[547]++;headers=Constants_1.default.defaultHeaders;cov_2g5j0a6fdf.s[548]++;if(authenticatedUserToken){cov_2g5j0a6fdf.b[139][0]++;cov_2g5j0a6fdf.s[549]++;endpoint=this.omnichannelConfiguration.orgUrl+"/"+OmnichannelEndpoints_1.default.LiveChatAuthGetSurveyInviteLinkPath+"/"+this.omnichannelConfiguration.orgId+"/"+surveyOwnerId;cov_2g5j0a6fdf.s[550]++;headers[OmnichannelHTTPHeaders_1.default.authenticatedUserToken]=authenticatedUserToken;cov_2g5j0a6fdf.s[551]++;headers[OmnichannelHTTPHeaders_1.default.widgetAppId]=this.omnichannelConfiguration.widgetId;}else{cov_2g5j0a6fdf.b[139][1]++;}cov_2g5j0a6fdf.s[552]++;if(requestId){cov_2g5j0a6fdf.b[140][0]++;cov_2g5j0a6fdf.s[553]++;headers[OmnichannelHTTPHeaders_1.default.requestId]=requestId;}else{cov_2g5j0a6fdf.b[140][1]++;}cov_2g5j0a6fdf.s[554]++;options={data:JSON.stringify(surveyInviteAPIRequestBody),headers:headers,method:"POST",url:endpoint};cov_2g5j0a6fdf.s[555]++;return[2,new Promise(function(resolve,reject){cov_2g5j0a6fdf.f[77]++;cov_2g5j0a6fdf.s[556]++;return __awaiter(_this,void 0,void 0,function(){cov_2g5j0a6fdf.f[78]++;var response,data,elapsedTimeInMilliseconds,error_10,elapsedTimeInMilliseconds;cov_2g5j0a6fdf.s[557]++;return __generator(this,function(_a){cov_2g5j0a6fdf.f[79]++;cov_2g5j0a6fdf.s[558]++;switch(_a.label){case 0:cov_2g5j0a6fdf.b[141][0]++;cov_2g5j0a6fdf.s[559]++;_a.trys.push([0,2,,3]);cov_2g5j0a6fdf.s[560]++;return[4,axiosInstance(options)];case 1:cov_2g5j0a6fdf.b[141][1]++;cov_2g5j0a6fdf.s[561]++;response=_a.sent();cov_2g5j0a6fdf.s[562]++;data=response.data;cov_2g5j0a6fdf.s[563]++;elapsedTimeInMilliseconds=timer.milliSecondsElapsed;cov_2g5j0a6fdf.s[564]++;if(this.logger){cov_2g5j0a6fdf.b[142][0]++;cov_2g5j0a6fdf.s[565]++;this.logger.log(LogLevel_1.LogLevel.INFO,Enums_2.OCSDKTelemetryEvent.GETSURVEYINVITELINKSUCCEEDED,{Region:response.data.Region,ElapsedTimeInMilliseconds:elapsedTimeInMilliseconds,TransactionId:response.headers["transaction-id"]},"Get Survey Invite Link Succeeded");}else{cov_2g5j0a6fdf.b[142][1]++;}cov_2g5j0a6fdf.s[566]++;resolve(data);cov_2g5j0a6fdf.s[567]++;return[3,3];case 2:cov_2g5j0a6fdf.b[141][2]++;cov_2g5j0a6fdf.s[568]++;error_10=_a.sent();cov_2g5j0a6fdf.s[569]++;elapsedTimeInMilliseconds=timer.milliSecondsElapsed;cov_2g5j0a6fdf.s[570]++;if(this.logger){cov_2g5j0a6fdf.b[143][0]++;cov_2g5j0a6fdf.s[571]++;this.logger.log(LogLevel_1.LogLevel.ERROR,Enums_2.OCSDKTelemetryEvent.GETSURVEYINVITELINKFAILED,{ExceptionDetails:error_10,ElapsedTimeInMilliseconds:elapsedTimeInMilliseconds},"Get Survey Invite Link Failed");}else{cov_2g5j0a6fdf.b[143][1]++;}cov_2g5j0a6fdf.s[572]++;reject();cov_2g5j0a6fdf.s[573]++;return[3,3];case 3:cov_2g5j0a6fdf.b[141][3]++;cov_2g5j0a6fdf.s[574]++;return[2];}});});})];});});};cov_2g5j0a6fdf.s[575]++;SDK.prototype.getChatTranscripts=function(requestId,chatId,token,getChatTranscriptsOptionalParams){cov_2g5j0a6fdf.f[80]++;cov_2g5j0a6fdf.s[576]++;if(getChatTranscriptsOptionalParams===void 0){cov_2g5j0a6fdf.b[144][0]++;cov_2g5j0a6fdf.s[577]++;getChatTranscriptsOptionalParams={};}else{cov_2g5j0a6fdf.b[144][1]++;}cov_2g5j0a6fdf.s[578]++;return __awaiter(this,void 0,void 0,function(){cov_2g5j0a6fdf.f[81]++;var timer,endpoint,axiosInstance,authenticatedUserToken,currentLiveChatVersion,headers,options;var _this=(cov_2g5j0a6fdf.s[579]++,this);cov_2g5j0a6fdf.s[580]++;return __generator(this,function(_a){cov_2g5j0a6fdf.f[82]++;cov_2g5j0a6fdf.s[581]++;timer=Timer_1.Timer.TIMER();cov_2g5j0a6fdf.s[582]++;if(this.logger){cov_2g5j0a6fdf.b[145][0]++;cov_2g5j0a6fdf.s[583]++;this.logger.log(LogLevel_1.LogLevel.INFO,Enums_2.OCSDKTelemetryEvent.GETCHATTRANSCRIPTSTARTED,{RequestId:requestId},"Get Chat Transcript Started");}else{cov_2g5j0a6fdf.b[145][1]++;}cov_2g5j0a6fdf.s[584]++;endpoint=this.omnichannelConfiguration.orgUrl+"/"+OmnichannelEndpoints_1.default.LiveChatGetChatTranscriptPath+"/"+chatId+"/"+requestId+"?channelId="+this.omnichannelConfiguration.channelId;cov_2g5j0a6fdf.s[585]++;axiosInstance=axios_1.default.create();cov_2g5j0a6fdf.s[586]++;axiosRetry_1.default(axiosInstance,{retries:this.configuration.maxRequestRetriesOnFailure});cov_2g5j0a6fdf.s[587]++;authenticatedUserToken=getChatTranscriptsOptionalParams.authenticatedUserToken,currentLiveChatVersion=getChatTranscriptsOptionalParams.currentLiveChatVersion;cov_2g5j0a6fdf.s[588]++;headers=Constants_1.default.defaultHeaders;cov_2g5j0a6fdf.s[589]++;headers[OmnichannelHTTPHeaders_1.default.organizationId]=this.omnichannelConfiguration.orgId;cov_2g5j0a6fdf.s[590]++;headers[OmnichannelHTTPHeaders_1.default.widgetAppId]=this.omnichannelConfiguration.widgetId;cov_2g5j0a6fdf.s[591]++;headers[OmnichannelHTTPHeaders_1.default.authorization]=token;cov_2g5j0a6fdf.s[592]++;if((cov_2g5j0a6fdf.b[147][0]++,this.liveChatVersion===Enums_1.LiveChatVersion.V2)||(cov_2g5j0a6fdf.b[147][1]++,currentLiveChatVersion)&&(cov_2g5j0a6fdf.b[147][2]++,currentLiveChatVersion===Enums_1.LiveChatVersion.V2)){cov_2g5j0a6fdf.b[146][0]++;cov_2g5j0a6fdf.s[593]++;endpoint=this.omnichannelConfiguration.orgUrl+"/"+OmnichannelEndpoints_1.default.LiveChatv2GetChatTranscriptPath+"/"+chatId+"/"+requestId+"?channelId="+this.omnichannelConfiguration.channelId;cov_2g5j0a6fdf.s[594]++;if(authenticatedUserToken){cov_2g5j0a6fdf.b[148][0]++;cov_2g5j0a6fdf.s[595]++;endpoint=this.omnichannelConfiguration.orgUrl+"/"+OmnichannelEndpoints_1.default.LiveChatv2AuthGetChatTranscriptPath+"/"+chatId+"/"+requestId+"?channelId="+this.omnichannelConfiguration.channelId;}else{cov_2g5j0a6fdf.b[148][1]++;}}else{cov_2g5j0a6fdf.b[146][1]++;cov_2g5j0a6fdf.s[596]++;if(authenticatedUserToken){cov_2g5j0a6fdf.b[149][0]++;cov_2g5j0a6fdf.s[597]++;endpoint=this.omnichannelConfiguration.orgUrl+"/"+OmnichannelEndpoints_1.default.LiveChatAuthGetChatTranscriptPath+"/"+chatId+"/"+requestId+"?channelId="+this.omnichannelConfiguration.channelId;}else{cov_2g5j0a6fdf.b[149][1]++;}}cov_2g5j0a6fdf.s[598]++;options={headers:headers,method:"GET",url:endpoint};cov_2g5j0a6fdf.s[599]++;return[2,new Promise(function(resolve,reject){cov_2g5j0a6fdf.f[83]++;cov_2g5j0a6fdf.s[600]++;return __awaiter(_this,void 0,void 0,function(){cov_2g5j0a6fdf.f[84]++;var response,elapsedTimeInMilliseconds,data,error_11,elapsedTimeInMilliseconds;cov_2g5j0a6fdf.s[601]++;return __generator(this,function(_a){cov_2g5j0a6fdf.f[85]++;cov_2g5j0a6fdf.s[602]++;switch(_a.label){case 0:cov_2g5j0a6fdf.b[150][0]++;cov_2g5j0a6fdf.s[603]++;_a.trys.push([0,2,,3]);cov_2g5j0a6fdf.s[604]++;return[4,axiosInstance(options)];case 1:cov_2g5j0a6fdf.b[150][1]++;cov_2g5j0a6fdf.s[605]++;response=_a.sent();cov_2g5j0a6fdf.s[606]++;elapsedTimeInMilliseconds=timer.milliSecondsElapsed;cov_2g5j0a6fdf.s[607]++;data=response.data;cov_2g5j0a6fdf.s[608]++;if(this.logger){cov_2g5j0a6fdf.b[151][0]++;cov_2g5j0a6fdf.s[609]++;this.logger.log(LogLevel_1.LogLevel.INFO,Enums_2.OCSDKTelemetryEvent.GETCHATTRANSCRIPTSUCCEEDED,{RequestId:requestId,Region:response.data.Region,ElapsedTimeInMilliseconds:elapsedTimeInMilliseconds,TransactionId:response.headers["transaction-id"]},"Get Chat Transcript Succeeded");}else{cov_2g5j0a6fdf.b[151][1]++;}cov_2g5j0a6fdf.s[610]++;resolve(data);cov_2g5j0a6fdf.s[611]++;return[3,3];case 2:cov_2g5j0a6fdf.b[150][2]++;cov_2g5j0a6fdf.s[612]++;error_11=_a.sent();cov_2g5j0a6fdf.s[613]++;elapsedTimeInMilliseconds=timer.milliSecondsElapsed;cov_2g5j0a6fdf.s[614]++;if(this.logger){cov_2g5j0a6fdf.b[152][0]++;cov_2g5j0a6fdf.s[615]++;this.logger.log(LogLevel_1.LogLevel.ERROR,Enums_2.OCSDKTelemetryEvent.GETCHATTRANSCRIPTFAILED,{RequestId:requestId,ExceptionDetails:error_11,ElapsedTimeInMilliseconds:elapsedTimeInMilliseconds},"Get Chat Transcript Failed");}else{cov_2g5j0a6fdf.b[152][1]++;}cov_2g5j0a6fdf.s[616]++;reject(error_11);cov_2g5j0a6fdf.s[617]++;return[3,3];case 3:cov_2g5j0a6fdf.b[150][3]++;cov_2g5j0a6fdf.s[618]++;return[2];}});});})];});});};cov_2g5j0a6fdf.s[619]++;SDK.prototype.emailTranscript=function(requestId,token,emailRequestBody,emailTranscriptOptionalParams){cov_2g5j0a6fdf.f[86]++;cov_2g5j0a6fdf.s[620]++;if(emailTranscriptOptionalParams===void 0){cov_2g5j0a6fdf.b[153][0]++;cov_2g5j0a6fdf.s[621]++;emailTranscriptOptionalParams={};}else{cov_2g5j0a6fdf.b[153][1]++;}cov_2g5j0a6fdf.s[622]++;return __awaiter(this,void 0,void 0,function(){cov_2g5j0a6fdf.f[87]++;var timer,endpoint,axiosInstance,authenticatedUserToken,headers,options;var _this=(cov_2g5j0a6fdf.s[623]++,this);cov_2g5j0a6fdf.s[624]++;return __generator(this,function(_a){cov_2g5j0a6fdf.f[88]++;cov_2g5j0a6fdf.s[625]++;timer=Timer_1.Timer.TIMER();cov_2g5j0a6fdf.s[626]++;if(this.logger){cov_2g5j0a6fdf.b[154][0]++;cov_2g5j0a6fdf.s[627]++;this.logger.log(LogLevel_1.LogLevel.INFO,Enums_2.OCSDKTelemetryEvent.EMAILTRANSCRIPTSTARTED,{RequestId:requestId},"Email Transcript Started");}else{cov_2g5j0a6fdf.b[154][1]++;}cov_2g5j0a6fdf.s[628]++;endpoint=this.omnichannelConfiguration.orgUrl+"/"+OmnichannelEndpoints_1.default.LiveChatTranscriptEmailRequestPath+"/"+requestId+"?channelId="+this.omnichannelConfiguration.channelId;cov_2g5j0a6fdf.s[629]++;axiosInstance=axios_1.default.create();cov_2g5j0a6fdf.s[630]++;axiosRetry_1.default(axiosInstance,{retries:this.configuration.maxRequestRetriesOnFailure});cov_2g5j0a6fdf.s[631]++;authenticatedUserToken=emailTranscriptOptionalParams.authenticatedUserToken;cov_2g5j0a6fdf.s[632]++;headers=Constants_1.default.defaultHeaders;cov_2g5j0a6fdf.s[633]++;headers[OmnichannelHTTPHeaders_1.default.organizationId]=this.omnichannelConfiguration.orgId;cov_2g5j0a6fdf.s[634]++;headers[OmnichannelHTTPHeaders_1.default.widgetAppId]=this.omnichannelConfiguration.widgetId;cov_2g5j0a6fdf.s[635]++;headers[OmnichannelHTTPHeaders_1.default.authorization]=token;cov_2g5j0a6fdf.s[636]++;if(authenticatedUserToken){cov_2g5j0a6fdf.b[155][0]++;cov_2g5j0a6fdf.s[637]++;endpoint=this.omnichannelConfiguration.orgUrl+"/"+OmnichannelEndpoints_1.default.LiveChatAuthTranscriptEmailRequestPath+"/"+requestId+"?channelId="+this.omnichannelConfiguration.channelId;}else{cov_2g5j0a6fdf.b[155][1]++;}cov_2g5j0a6fdf.s[638]++;options={data:JSON.stringify(emailRequestBody),headers:headers,method:"POST",url:endpoint};cov_2g5j0a6fdf.s[639]++;return[2,new Promise(function(resolve,reject){cov_2g5j0a6fdf.f[89]++;cov_2g5j0a6fdf.s[640]++;return __awaiter(_this,void 0,void 0,function(){cov_2g5j0a6fdf.f[90]++;var response,elapsedTimeInMilliseconds,error_12,elapsedTimeInMilliseconds;cov_2g5j0a6fdf.s[641]++;return __generator(this,function(_a){cov_2g5j0a6fdf.f[91]++;cov_2g5j0a6fdf.s[642]++;switch(_a.label){case 0:cov_2g5j0a6fdf.b[156][0]++;cov_2g5j0a6fdf.s[643]++;_a.trys.push([0,2,,3]);cov_2g5j0a6fdf.s[644]++;return[4,axiosInstance(options)];case 1:cov_2g5j0a6fdf.b[156][1]++;cov_2g5j0a6fdf.s[645]++;response=_a.sent();cov_2g5j0a6fdf.s[646]++;elapsedTimeInMilliseconds=timer.milliSecondsElapsed;cov_2g5j0a6fdf.s[647]++;if(this.logger){cov_2g5j0a6fdf.b[157][0]++;cov_2g5j0a6fdf.s[648]++;this.logger.log(LogLevel_1.LogLevel.INFO,Enums_2.OCSDKTelemetryEvent.EMAILTRANSCRIPTSUCCEEDED,{RequestId:requestId,Region:response.data.Region,ElapsedTimeInMilliseconds:elapsedTimeInMilliseconds,TransactionId:response.headers["transaction-id"]},"Email Transcript Succeeded");}else{cov_2g5j0a6fdf.b[157][1]++;}cov_2g5j0a6fdf.s[649]++;resolve();cov_2g5j0a6fdf.s[650]++;return[3,3];case 2:cov_2g5j0a6fdf.b[156][2]++;cov_2g5j0a6fdf.s[651]++;error_12=_a.sent();cov_2g5j0a6fdf.s[652]++;elapsedTimeInMilliseconds=timer.milliSecondsElapsed;cov_2g5j0a6fdf.s[653]++;if(this.logger){cov_2g5j0a6fdf.b[158][0]++;cov_2g5j0a6fdf.s[654]++;this.logger.log(LogLevel_1.LogLevel.ERROR,Enums_2.OCSDKTelemetryEvent.EMAILTRANSCRIPTFAILED,{RequestId:requestId,ExceptionDetails:error_12,ElapsedTimeInMilliseconds:elapsedTimeInMilliseconds},"Email Transcript Failed");}else{cov_2g5j0a6fdf.b[158][1]++;}cov_2g5j0a6fdf.s[655]++;reject();cov_2g5j0a6fdf.s[656]++;return[3,3];case 3:cov_2g5j0a6fdf.b[156][3]++;cov_2g5j0a6fdf.s[657]++;return[2];}});});})];});});};cov_2g5j0a6fdf.s[658]++;SDK.prototype.fetchDataMaskingInfo=function(requestId){cov_2g5j0a6fdf.f[92]++;cov_2g5j0a6fdf.s[659]++;return __awaiter(this,void 0,void 0,function(){cov_2g5j0a6fdf.f[93]++;var timer,endpoint,axiosInstance,headers,options;var _this=(cov_2g5j0a6fdf.s[660]++,this);cov_2g5j0a6fdf.s[661]++;return __generator(this,function(_a){cov_2g5j0a6fdf.f[94]++;cov_2g5j0a6fdf.s[662]++;timer=Timer_1.Timer.TIMER();cov_2g5j0a6fdf.s[663]++;if(this.logger){cov_2g5j0a6fdf.b[159][0]++;cov_2g5j0a6fdf.s[664]++;this.logger.log(LogLevel_1.LogLevel.INFO,Enums_2.OCSDKTelemetryEvent.FETCHDATAMASKINGSTARTED,{RequestId:requestId},"Fetch Data Masking Started");}else{cov_2g5j0a6fdf.b[159][1]++;}cov_2g5j0a6fdf.s[665]++;if(!requestId){cov_2g5j0a6fdf.b[160][0]++;cov_2g5j0a6fdf.s[666]++;requestId=uuid_1.uuidv4();}else{cov_2g5j0a6fdf.b[160][1]++;}cov_2g5j0a6fdf.s[667]++;endpoint=this.omnichannelConfiguration.orgUrl+"/"+OmnichannelEndpoints_1.default.LiveChatFetchDataMaskingInfoPath+"/"+this.omnichannelConfiguration.orgId;cov_2g5j0a6fdf.s[668]++;axiosInstance=axios_1.default.create();cov_2g5j0a6fdf.s[669]++;axiosRetry_1.default(axiosInstance,{retries:this.configuration.maxRequestRetriesOnFailure});cov_2g5j0a6fdf.s[670]++;headers=Constants_1.default.defaultHeaders;cov_2g5j0a6fdf.s[671]++;headers[OmnichannelHTTPHeaders_1.default.organizationId]=this.omnichannelConfiguration.orgId;cov_2g5j0a6fdf.s[672]++;headers[OmnichannelHTTPHeaders_1.default.requestId]=requestId;cov_2g5j0a6fdf.s[673]++;options={headers:headers,method:"GET",url:endpoint};cov_2g5j0a6fdf.s[674]++;return[2,new Promise(function(resolve,reject){cov_2g5j0a6fdf.f[95]++;cov_2g5j0a6fdf.s[675]++;return __awaiter(_this,void 0,void 0,function(){cov_2g5j0a6fdf.f[96]++;var response,elapsedTimeInMilliseconds,data,error_13,elapsedTimeInMilliseconds;cov_2g5j0a6fdf.s[676]++;return __generator(this,function(_a){cov_2g5j0a6fdf.f[97]++;cov_2g5j0a6fdf.s[677]++;switch(_a.label){case 0:cov_2g5j0a6fdf.b[161][0]++;cov_2g5j0a6fdf.s[678]++;_a.trys.push([0,2,,3]);cov_2g5j0a6fdf.s[679]++;return[4,axiosInstance(options)];case 1:cov_2g5j0a6fdf.b[161][1]++;cov_2g5j0a6fdf.s[680]++;response=_a.sent();cov_2g5j0a6fdf.s[681]++;elapsedTimeInMilliseconds=timer.milliSecondsElapsed;cov_2g5j0a6fdf.s[682]++;data=response.data;cov_2g5j0a6fdf.s[683]++;if(this.logger){cov_2g5j0a6fdf.b[162][0]++;cov_2g5j0a6fdf.s[684]++;this.logger.log(LogLevel_1.LogLevel.INFO,Enums_2.OCSDKTelemetryEvent.FETCHDATAMASKINGSUCCEEDED,{RequestId:requestId,Region:response.data.Region,ElapsedTimeInMilliseconds:elapsedTimeInMilliseconds,TransactionId:response.headers["transaction-id"]},"Fetch Data Masking Succeeded");}else{cov_2g5j0a6fdf.b[162][1]++;}cov_2g5j0a6fdf.s[685]++;resolve(data);cov_2g5j0a6fdf.s[686]++;return[3,3];case 2:cov_2g5j0a6fdf.b[161][2]++;cov_2g5j0a6fdf.s[687]++;error_13=_a.sent();cov_2g5j0a6fdf.s[688]++;elapsedTimeInMilliseconds=timer.milliSecondsElapsed;cov_2g5j0a6fdf.s[689]++;if(this.logger){cov_2g5j0a6fdf.b[163][0]++;cov_2g5j0a6fdf.s[690]++;this.logger.log(LogLevel_1.LogLevel.ERROR,Enums_2.OCSDKTelemetryEvent.FETCHDATAMASKINGFAILED,{RequestId:requestId,ExceptionDetails:error_13,ElapsedTimeInMilliseconds:elapsedTimeInMilliseconds},"Fetch Data Masking Failed");}else{cov_2g5j0a6fdf.b[163][1]++;}cov_2g5j0a6fdf.s[691]++;reject();cov_2g5j0a6fdf.s[692]++;return[3,3];case 3:cov_2g5j0a6fdf.b[161][3]++;cov_2g5j0a6fdf.s[693]++;return[2];}});});})];});});};cov_2g5j0a6fdf.s[694]++;SDK.prototype.makeSecondaryChannelEventRequest=function(requestId,secondaryChannelEventRequestBody,secondaryChannelEventOptionalParams){cov_2g5j0a6fdf.f[98]++;cov_2g5j0a6fdf.s[695]++;if(secondaryChannelEventOptionalParams===void 0){cov_2g5j0a6fdf.b[164][0]++;cov_2g5j0a6fdf.s[696]++;secondaryChannelEventOptionalParams={};}else{cov_2g5j0a6fdf.b[164][1]++;}cov_2g5j0a6fdf.s[697]++;return __awaiter(this,void 0,void 0,function(){cov_2g5j0a6fdf.f[99]++;var timer,endpoint,axiosInstance,authenticatedUserToken,headers,options,response,elapsedTimeInMilliseconds,data,error_14,elapsedTimeInMilliseconds;cov_2g5j0a6fdf.s[698]++;return __generator(this,function(_a){cov_2g5j0a6fdf.f[100]++;cov_2g5j0a6fdf.s[699]++;switch(_a.label){case 0:cov_2g5j0a6fdf.b[165][0]++;cov_2g5j0a6fdf.s[700]++;timer=Timer_1.Timer.TIMER();cov_2g5j0a6fdf.s[701]++;if(this.logger){cov_2g5j0a6fdf.b[166][0]++;cov_2g5j0a6fdf.s[702]++;this.logger.log(LogLevel_1.LogLevel.INFO,Enums_2.OCSDKTelemetryEvent.SECONDARYCHANNELEVENTREQUESTSTARTED,{RequestId:requestId},"Secondary Channel Event Request Started");}else{cov_2g5j0a6fdf.b[166][1]++;}cov_2g5j0a6fdf.s[703]++;endpoint=this.omnichannelConfiguration.orgUrl+"/"+OmnichannelEndpoints_1.default.LiveChatSecondaryChannelEventPath+"/"+this.omnichannelConfiguration.orgId+"/"+this.omnichannelConfiguration.widgetId+"/"+requestId;cov_2g5j0a6fdf.s[704]++;axiosInstance=axios_1.default.create();cov_2g5j0a6fdf.s[705]++;axiosRetry_1.default(axiosInstance,{retries:this.configuration.maxRequestRetriesOnFailure});cov_2g5j0a6fdf.s[706]++;authenticatedUserToken=secondaryChannelEventOptionalParams.authenticatedUserToken;cov_2g5j0a6fdf.s[707]++;headers=Constants_1.default.defaultHeaders;cov_2g5j0a6fdf.s[708]++;headers[OmnichannelHTTPHeaders_1.default.organizationId]=this.omnichannelConfiguration.orgId;cov_2g5j0a6fdf.s[709]++;if(authenticatedUserToken){cov_2g5j0a6fdf.b[167][0]++;cov_2g5j0a6fdf.s[710]++;headers[OmnichannelHTTPHeaders_1.default.authenticatedUserToken]=authenticatedUserToken;cov_2g5j0a6fdf.s[711]++;endpoint=this.omnichannelConfiguration.orgUrl+"/"+OmnichannelEndpoints_1.default.LiveChatAuthSecondaryChannelEventPath+"/"+this.omnichannelConfiguration.orgId+"/"+this.omnichannelConfiguration.widgetId+"/"+requestId;}else{cov_2g5j0a6fdf.b[167][1]++;}cov_2g5j0a6fdf.s[712]++;endpoint+="?channelId="+Constants_1.default.defaultChannelId;cov_2g5j0a6fdf.s[713]++;options={data:JSON.stringify(secondaryChannelEventRequestBody),headers:headers,method:"POST",url:endpoint};cov_2g5j0a6fdf.s[714]++;_a.label=1;case 1:cov_2g5j0a6fdf.b[165][1]++;cov_2g5j0a6fdf.s[715]++;_a.trys.push([1,3,,4]);cov_2g5j0a6fdf.s[716]++;return[4,axiosInstance(options)];case 2:cov_2g5j0a6fdf.b[165][2]++;cov_2g5j0a6fdf.s[717]++;response=_a.sent();cov_2g5j0a6fdf.s[718]++;elapsedTimeInMilliseconds=timer.milliSecondsElapsed;cov_2g5j0a6fdf.s[719]++;data=response.data;cov_2g5j0a6fdf.s[720]++;if(this.logger){cov_2g5j0a6fdf.b[168][0]++;cov_2g5j0a6fdf.s[721]++;this.logger.log(LogLevel_1.LogLevel.INFO,Enums_2.OCSDKTelemetryEvent.SECONDARYCHANNELEVENTREQUESTSUCCEEDED,{RequestId:requestId,Region:data.Region,ElapsedTimeInMilliseconds:elapsedTimeInMilliseconds,TransactionId:response.headers["transaction-id"]},"Secondary Channel Event Request Succeeded");}else{cov_2g5j0a6fdf.b[168][1]++;}cov_2g5j0a6fdf.s[722]++;return[3,4];case 3:cov_2g5j0a6fdf.b[165][3]++;cov_2g5j0a6fdf.s[723]++;error_14=_a.sent();cov_2g5j0a6fdf.s[724]++;elapsedTimeInMilliseconds=timer.milliSecondsElapsed;cov_2g5j0a6fdf.s[725]++;if(this.logger){cov_2g5j0a6fdf.b[169][0]++;cov_2g5j0a6fdf.s[726]++;this.logger.log(LogLevel_1.LogLevel.ERROR,Enums_2.OCSDKTelemetryEvent.SECONDARYCHANNELEVENTREQUESTFAILED,{RequestId:requestId,ExceptionDetails:error_14,ElapsedTimeInMilliseconds:elapsedTimeInMilliseconds},"Secondary Channel Event Request Failed");}else{cov_2g5j0a6fdf.b[169][1]++;}cov_2g5j0a6fdf.s[727]++;throw error_14;case 4:cov_2g5j0a6fdf.b[165][4]++;cov_2g5j0a6fdf.s[728]++;return[2];}});});};cov_2g5j0a6fdf.s[729]++;SDK.prototype.sendTypingIndicator=function(requestId,currentLiveChatVersion){cov_2g5j0a6fdf.f[101]++;cov_2g5j0a6fdf.s[730]++;return __awaiter(this,void 0,void 0,function(){cov_2g5j0a6fdf.f[102]++;var timer,endpoint,axiosInstance,headers,options;var _this=(cov_2g5j0a6fdf.s[731]++,this);cov_2g5j0a6fdf.s[732]++;return __generator(this,function(_a){cov_2g5j0a6fdf.f[103]++;cov_2g5j0a6fdf.s[733]++;if((cov_2g5j0a6fdf.b[171][0]++,!currentLiveChatVersion)||(cov_2g5j0a6fdf.b[171][1]++,currentLiveChatVersion!==Enums_1.LiveChatVersion.V2)){cov_2g5j0a6fdf.b[170][0]++;cov_2g5j0a6fdf.s[734]++;return[2,Promise.resolve()];}else{cov_2g5j0a6fdf.b[170][1]++;}cov_2g5j0a6fdf.s[735]++;timer=Timer_1.Timer.TIMER();cov_2g5j0a6fdf.s[736]++;if((cov_2g5j0a6fdf.b[173][0]++,!currentLiveChatVersion)||(cov_2g5j0a6fdf.b[173][1]++,currentLiveChatVersion!==Enums_1.LiveChatVersion.V2)){cov_2g5j0a6fdf.b[172][0]++;cov_2g5j0a6fdf.s[737]++;throw new Error('Typing indicator is only supported on v2');}else{cov_2g5j0a6fdf.b[172][1]++;}cov_2g5j0a6fdf.s[738]++;endpoint=this.omnichannelConfiguration.orgUrl+"/"+OmnichannelEndpoints_1.default.SendTypingIndicatorPath+"/"+requestId;cov_2g5j0a6fdf.s[739]++;axiosInstance=axios_1.default.create();cov_2g5j0a6fdf.s[740]++;headers=Constants_1.default.defaultHeaders;cov_2g5j0a6fdf.s[741]++;headers[OmnichannelHTTPHeaders_1.default.organizationId]=this.omnichannelConfiguration.orgId;cov_2g5j0a6fdf.s[742]++;options={headers:headers,method:"POST",url:endpoint};cov_2g5j0a6fdf.s[743]++;return[2,new Promise(function(resolve,reject){cov_2g5j0a6fdf.f[104]++;cov_2g5j0a6fdf.s[744]++;return __awaiter(_this,void 0,void 0,function(){cov_2g5j0a6fdf.f[105]++;var response,elapsedTimeInMilliseconds,data,error_15,elapsedTimeInMilliseconds;cov_2g5j0a6fdf.s[745]++;return __generator(this,function(_a){cov_2g5j0a6fdf.f[106]++;cov_2g5j0a6fdf.s[746]++;switch(_a.label){case 0:cov_2g5j0a6fdf.b[174][0]++;cov_2g5j0a6fdf.s[747]++;_a.trys.push([0,2,,3]);cov_2g5j0a6fdf.s[748]++;return[4,axiosInstance(options)];case 1:cov_2g5j0a6fdf.b[174][1]++;cov_2g5j0a6fdf.s[749]++;response=_a.sent();cov_2g5j0a6fdf.s[750]++;elapsedTimeInMilliseconds=timer.milliSecondsElapsed;cov_2g5j0a6fdf.s[751]++;data=response.data;cov_2g5j0a6fdf.s[752]++;if(this.logger){cov_2g5j0a6fdf.b[175][0]++;cov_2g5j0a6fdf.s[753]++;this.logger.log(LogLevel_1.LogLevel.INFO,Enums_2.OCSDKTelemetryEvent.SENDTYPINGINDICATORSUCCEEDED,{RequestId:requestId,Region:data.Region,ElapsedTimeInMilliseconds:elapsedTimeInMilliseconds,TransactionId:response.headers["transaction-id"]},"Send Typing Indicator Succeeded");}else{cov_2g5j0a6fdf.b[175][1]++;}cov_2g5j0a6fdf.s[754]++;resolve();cov_2g5j0a6fdf.s[755]++;return[3,3];case 2:cov_2g5j0a6fdf.b[174][2]++;cov_2g5j0a6fdf.s[756]++;error_15=_a.sent();cov_2g5j0a6fdf.s[757]++;elapsedTimeInMilliseconds=timer.milliSecondsElapsed;cov_2g5j0a6fdf.s[758]++;if(this.logger){cov_2g5j0a6fdf.b[176][0]++;cov_2g5j0a6fdf.s[759]++;this.logger.log(LogLevel_1.LogLevel.ERROR,Enums_2.OCSDKTelemetryEvent.SENDTYPINGINDICATORFAILED,{RequestId:requestId,ExceptionDetails:error_15,ElapsedTimeInMilliseconds:elapsedTimeInMilliseconds},"Send Typing Indicator Failed");}else{cov_2g5j0a6fdf.b[176][1]++;}cov_2g5j0a6fdf.s[760]++;reject(error_15);cov_2g5j0a6fdf.s[761]++;return[3,3];case 3:cov_2g5j0a6fdf.b[174][3]++;cov_2g5j0a6fdf.s[762]++;return[2];}});});})];});});};cov_2g5j0a6fdf.s[763]++;SDK.defaultConfiguration={getChatTokenRetryCount:35,getChatTokenTimeBetweenRetriesOnFailure:10000,maxRequestRetriesOnFailure:3};cov_2g5j0a6fdf.s[764]++;return SDK;}());cov_2g5j0a6fdf.s[765]++;exports.default=SDK;
|
|
2511
|
+
var cov_2g5j0a6fdf=function(){var path="/home/runner/work/omnichannel-sdk/omnichannel-sdk/src/SDK.ts",hash="c9bcd9c1efcc4fb2f7560fb57fa10778b6c91797",Function=function(){}.constructor,global=new Function('return this')(),gcv="__coverage__",coverageData={path:"/home/runner/work/omnichannel-sdk/omnichannel-sdk/src/SDK.ts",statementMap:{"0":{start:{line:2,column:15},end:{line:12,column:1}},"1":{start:{line:3,column:4},end:{line:10,column:6}},"2":{start:{line:4,column:8},end:{line:8,column:9}},"3":{start:{line:5,column:12},end:{line:5,column:29}},"4":{start:{line:6,column:12},end:{line:7,column:28}},"5":{start:{line:6,column:29},end:{line:7,column:28}},"6":{start:{line:7,column:16},end:{line:7,column:28}},"7":{start:{line:9,column:8},end:{line:9,column:17}},"8":{start:{line:11,column:4},end:{line:11,column:43}},"9":{start:{line:13,column:16},end:{line:21,column:1}},"10":{start:{line:14,column:28},end:{line:14,column:110}},"11":{start:{line:14,column:91},end:{line:14,column:106}},"12":{start:{line:15,column:4},end:{line:20,column:7}},"13":{start:{line:16,column:36},end:{line:16,column:97}},"14":{start:{line:16,column:42},end:{line:16,column:70}},"15":{start:{line:16,column:85},end:{line:16,column:95}},"16":{start:{line:17,column:35},end:{line:17,column:100}},"17":{start:{line:17,column:41},end:{line:17,column:73}},"18":{start:{line:17,column:88},end:{line:17,column:98}},"19":{start:{line:18,column:32},end:{line:18,column:116}},"20":{start:{line:19,column:8},end:{line:19,column:78}},"21":{start:{line:22,column:18},end:{line:48,column:1}},"22":{start:{line:23,column:12},end:{line:23,column:104}},"23":{start:{line:23,column:43},end:{line:23,column:68}},"24":{start:{line:23,column:57},end:{line:23,column:68}},"25":{start:{line:23,column:69},end:{line:23,column:81}},"26":{start:{line:24,column:4},end:{line:24,column:157}},"27":{start:{line:24,column:138},end:{line:24,column:150}},"28":{start:{line:25,column:23},end:{line:25,column:68}},"29":{start:{line:25,column:45},end:{line:25,column:65}},"30":{start:{line:27,column:8},end:{line:27,column:70}},"31":{start:{line:27,column:15},end:{line:27,column:70}},"32":{start:{line:28,column:8},end:{line:45,column:66}},"33":{start:{line:28,column:18},end:{line:45,column:66}},"34":{start:{line:29,column:12},end:{line:29,column:169}},"35":{start:{line:29,column:160},end:{line:29,column:169}},"36":{start:{line:30,column:12},end:{line:30,column:52}},"37":{start:{line:30,column:26},end:{line:30,column:52}},"38":{start:{line:31,column:12},end:{line:43,column:13}},"39":{start:{line:32,column:32},end:{line:32,column:39}},"40":{start:{line:32,column:40},end:{line:32,column:46}},"41":{start:{line:33,column:24},end:{line:33,column:34}},"42":{start:{line:33,column:35},end:{line:33,column:72}},"43":{start:{line:34,column:24},end:{line:34,column:34}},"44":{start:{line:34,column:35},end:{line:34,column:45}},"45":{start:{line:34,column:46},end:{line:34,column:55}},"46":{start:{line:34,column:56},end:{line:34,column:65}},"47":{start:{line:35,column:24},end:{line:35,column:41}},"48":{start:{line:35,column:42},end:{line:35,column:55}},"49":{start:{line:35,column:56},end:{line:35,column:65}},"50":{start:{line:37,column:20},end:{line:37,column:128}},"51":{start:{line:37,column:110},end:{line:37,column:116}},"52":{start:{line:37,column:117},end:{line:37,column:126}},"53":{start:{line:38,column:20},end:{line:38,column:106}},"54":{start:{line:38,column:81},end:{line:38,column:97}},"55":{start:{line:38,column:98},end:{line:38,column:104}},"56":{start:{line:39,column:20},end:{line:39,column:89}},"57":{start:{line:39,column:57},end:{line:39,column:72}},"58":{start:{line:39,column:73},end:{line:39,column:80}},"59":{start:{line:39,column:81},end:{line:39,column:87}},"60":{start:{line:40,column:20},end:{line:40,column:87}},"61":{start:{line:40,column:47},end:{line:40,column:62}},"62":{start:{line:40,column:63},end:{line:40,column:78}},"63":{start:{line:40,column:79},end:{line:40,column:85}},"64":{start:{line:41,column:20},end:{line:41,column:42}},"65":{start:{line:41,column:30},end:{line:41,column:42}},"66":{start:{line:42,column:20},end:{line:42,column:33}},"67":{start:{line:42,column:34},end:{line:42,column:43}},"68":{start:{line:44,column:12},end:{line:44,column:39}},"69":{start:{line:45,column:22},end:{line:45,column:34}},"70":{start:{line:45,column:35},end:{line:45,column:41}},"71":{start:{line:45,column:54},end:{line:45,column:64}},"72":{start:{line:46,column:8},end:{line:46,column:35}},"73":{start:{line:46,column:23},end:{line:46,column:35}},"74":{start:{line:46,column:36},end:{line:46,column:89}},"75":{start:{line:49,column:0},end:{line:49,column:62}},"76":{start:{line:50,column:14},end:{line:50,column:39}},"77":{start:{line:51,column:14},end:{line:51,column:30}},"78":{start:{line:52,column:20},end:{line:52,column:50}},"79":{start:{line:53,column:18},end:{line:53,column:47}},"80":{start:{line:54,column:19},end:{line:54,column:48}},"81":{start:{line:55,column:16},end:{line:55,column:43}},"82":{start:{line:56,column:25},end:{line:56,column:60}},"83":{start:{line:57,column:17},end:{line:57,column:44}},"84":{start:{line:58,column:14},end:{line:58,column:39}},"85":{start:{line:59,column:15},end:{line:59,column:40}},"86":{start:{line:60,column:29},end:{line:60,column:69}},"87":{start:{line:61,column:31},end:{line:61,column:73}},"88":{start:{line:62,column:14},end:{line:62,column:38}},"89":{start:{line:63,column:19},end:{line:63,column:48}},"90":{start:{line:64,column:13},end:{line:64,column:36}},"91":{start:{line:65,column:25},end:{line:1226,column:3}},"92":{start:{line:67,column:8},end:{line:67,column:83}},"93":{start:{line:67,column:40},end:{line:67,column:81}},"94":{start:{line:68,column:8},end:{line:68,column:65}},"95":{start:{line:69,column:8},end:{line:69,column:43}},"96":{start:{line:70,column:8},end:{line:70,column:29}},"97":{start:{line:72,column:8},end:{line:74,column:9}},"98":{start:{line:73,column:12},end:{line:73,column:58}},"99":{start:{line:76,column:8},end:{line:81,column:9}},"100":{start:{line:77,column:22},end:{line:77,column:28}},"101":{start:{line:78,column:12},end:{line:80,column:13}},"102":{start:{line:79,column:16},end:{line:79,column:77}},"103":{start:{line:83,column:24},end:{line:83,column:58}},"104":{start:{line:84,column:8},end:{line:86,column:9}},"105":{start:{line:85,column:12},end:{line:85,column:49}},"106":{start:{line:88,column:56},end:{line:88,column:93}},"107":{start:{line:89,column:8},end:{line:94,column:9}},"108":{start:{line:90,column:22},end:{line:90,column:28}},"109":{start:{line:91,column:12},end:{line:93,column:13}},"110":{start:{line:92,column:16},end:{line:92,column:85}},"111":{start:{line:95,column:8},end:{line:95,column:58}},"112":{start:{line:101,column:4},end:{line:143,column:6}},"113":{start:{line:102,column:8},end:{line:102,column:60}},"114":{start:{line:102,column:38},end:{line:102,column:58}},"115":{start:{line:103,column:8},end:{line:142,column:11}},"116":{start:{line:105,column:12},end:{line:141,column:15}},"117":{start:{line:106,column:16},end:{line:140,column:17}},"118":{start:{line:108,column:24},end:{line:108,column:54}},"119":{start:{line:109,column:24},end:{line:111,column:25}},"120":{start:{line:110,column:28},end:{line:110,column:166}},"121":{start:{line:112,column:24},end:{line:114,column:25}},"122":{start:{line:113,column:28},end:{line:113,column:56}},"123":{start:{line:115,column:24},end:{line:115,column:307}},"124":{start:{line:116,column:24},end:{line:116,column:65}},"125":{start:{line:117,column:24},end:{line:117,column:120}},"126":{start:{line:118,column:24},end:{line:118,column:37}},"127":{start:{line:119,column:24},end:{line:121,column:25}},"128":{start:{line:120,column:28},end:{line:120,column:110}},"129":{start:{line:122,column:24},end:{line:124,column:32}},"130":{start:{line:126,column:24},end:{line:126,column:45}},"131":{start:{line:127,column:24},end:{line:127,column:78}},"132":{start:{line:128,column:24},end:{line:128,column:45}},"133":{start:{line:129,column:24},end:{line:131,column:25}},"134":{start:{line:130,column:28},end:{line:130,column:72}},"135":{start:{line:132,column:24},end:{line:132,column:42}},"136":{start:{line:133,column:24},end:{line:135,column:25}},"137":{start:{line:134,column:28},end:{line:134,column:76}},"138":{start:{line:136,column:24},end:{line:138,column:25}},"139":{start:{line:137,column:28},end:{line:137,column:310}},"140":{start:{line:139,column:24},end:{line:139,column:52}},"141":{start:{line:149,column:4},end:{line:216,column:6}},"142":{start:{line:150,column:8},end:{line:150,column:89}},"143":{start:{line:150,column:54},end:{line:150,column:87}},"144":{start:{line:151,column:8},end:{line:215,column:11}},"145":{start:{line:153,column:24},end:{line:153,column:28}},"146":{start:{line:154,column:12},end:{line:214,column:15}},"147":{start:{line:155,column:16},end:{line:155,column:46}},"148":{start:{line:156,column:16},end:{line:158,column:17}},"149":{start:{line:157,column:20},end:{line:157,column:164}},"150":{start:{line:159,column:16},end:{line:161,column:17}},"151":{start:{line:160,column:20},end:{line:160,column:48}},"152":{start:{line:162,column:16},end:{line:162,column:244}},"153":{start:{line:163,column:16},end:{line:163,column:57}},"154":{start:{line:164,column:16},end:{line:164,column:112}},"155":{start:{line:165,column:16},end:{line:165,column:147}},"156":{start:{line:166,column:16},end:{line:166,column:61}},"157":{start:{line:168,column:16},end:{line:171,column:17}},"158":{start:{line:169,column:20},end:{line:169,column:252}},"159":{start:{line:170,column:20},end:{line:170,column:110}},"160":{start:{line:173,column:16},end:{line:175,column:17}},"161":{start:{line:174,column:20},end:{line:174,column:50}},"162":{start:{line:176,column:16},end:{line:176,column:84}},"163":{start:{line:177,column:16},end:{line:181,column:18}},"164":{start:{line:182,column:16},end:{line:213,column:28}},"165":{start:{line:182,column:79},end:{line:213,column:23}},"166":{start:{line:184,column:24},end:{line:212,column:27}},"167":{start:{line:185,column:28},end:{line:211,column:29}},"168":{start:{line:187,column:36},end:{line:187,column:62}},"169":{start:{line:188,column:36},end:{line:188,column:81}},"170":{start:{line:190,column:36},end:{line:190,column:57}},"171":{start:{line:191,column:36},end:{line:191,column:90}},"172":{start:{line:192,column:36},end:{line:192,column:57}},"173":{start:{line:193,column:36},end:{line:195,column:37}},"174":{start:{line:194,column:40},end:{line:194,column:323}},"175":{start:{line:196,column:36},end:{line:196,column:50}},"176":{start:{line:197,column:36},end:{line:197,column:60}},"177":{start:{line:199,column:36},end:{line:199,column:56}},"178":{start:{line:200,column:36},end:{line:200,column:90}},"179":{start:{line:201,column:36},end:{line:201,column:78}},"180":{start:{line:201,column:54},end:{line:201,column:78}},"181":{start:{line:202,column:36},end:{line:202,column:133}},"182":{start:{line:204,column:36},end:{line:204,column:46}},"183":{start:{line:205,column:36},end:{line:205,column:260}},"184":{start:{line:206,column:36},end:{line:206,column:49}},"185":{start:{line:208,column:36},end:{line:208,column:45}},"186":{start:{line:209,column:36},end:{line:209,column:60}},"187":{start:{line:210,column:40},end:{line:210,column:62}},"188":{start:{line:222,column:4},end:{line:321,column:6}},"189":{start:{line:223,column:8},end:{line:223,column:87}},"190":{start:{line:223,column:53},end:{line:223,column:85}},"191":{start:{line:224,column:8},end:{line:224,column:68}},"192":{start:{line:224,column:44},end:{line:224,column:66}},"193":{start:{line:225,column:8},end:{line:320,column:11}},"194":{start:{line:227,column:24},end:{line:227,column:28}},"195":{start:{line:228,column:12},end:{line:319,column:15}},"196":{start:{line:229,column:16},end:{line:229,column:46}},"197":{start:{line:230,column:16},end:{line:230,column:221}},"198":{start:{line:231,column:16},end:{line:233,column:17}},"199":{start:{line:232,column:20},end:{line:232,column:163}},"200":{start:{line:234,column:16},end:{line:236,column:17}},"201":{start:{line:235,column:20},end:{line:235,column:65}},"202":{start:{line:237,column:16},end:{line:239,column:17}},"203":{start:{line:238,column:20},end:{line:238,column:48}},"204":{start:{line:240,column:16},end:{line:240,column:61}},"205":{start:{line:241,column:16},end:{line:241,column:237}},"206":{start:{line:242,column:16},end:{line:254,column:17}},"207":{start:{line:243,column:20},end:{line:243,column:243}},"208":{start:{line:244,column:20},end:{line:247,column:21}},"209":{start:{line:245,column:24},end:{line:245,column:251}},"210":{start:{line:246,column:24},end:{line:246,column:114}},"211":{start:{line:250,column:20},end:{line:253,column:21}},"212":{start:{line:251,column:24},end:{line:251,column:249}},"213":{start:{line:252,column:24},end:{line:252,column:114}},"214":{start:{line:255,column:16},end:{line:257,column:17}},"215":{start:{line:256,column:20},end:{line:256,column:50}},"216":{start:{line:258,column:16},end:{line:258,column:84}},"217":{start:{line:259,column:16},end:{line:263,column:18}},"218":{start:{line:264,column:16},end:{line:264,column:57}},"219":{start:{line:265,column:16},end:{line:265,column:112}},"220":{start:{line:266,column:16},end:{line:318,column:28}},"221":{start:{line:266,column:79},end:{line:318,column:23}},"222":{start:{line:268,column:36},end:{line:268,column:40}},"223":{start:{line:269,column:24},end:{line:317,column:27}},"224":{start:{line:270,column:28},end:{line:316,column:29}},"225":{start:{line:272,column:36},end:{line:272,column:62}},"226":{start:{line:273,column:36},end:{line:273,column:81}},"227":{start:{line:275,column:36},end:{line:275,column:57}},"228":{start:{line:276,column:36},end:{line:276,column:90}},"229":{start:{line:277,column:36},end:{line:277,column:57}},"230":{start:{line:279,column:36},end:{line:286,column:37}},"231":{start:{line:280,column:40},end:{line:280,column:67}},"232":{start:{line:281,column:40},end:{line:283,column:41}},"233":{start:{line:282,column:44},end:{line:282,column:326}},"234":{start:{line:284,column:40},end:{line:284,column:54}},"235":{start:{line:285,column:40},end:{line:285,column:62}},"236":{start:{line:288,column:36},end:{line:291,column:37}},"237":{start:{line:289,column:40},end:{line:289,column:57}},"238":{start:{line:290,column:40},end:{line:290,column:62}},"239":{start:{line:292,column:36},end:{line:292,column:60}},"240":{start:{line:294,column:36},end:{line:294,column:56}},"241":{start:{line:295,column:36},end:{line:295,column:90}},"242":{start:{line:296,column:36},end:{line:296,column:78}},"243":{start:{line:296,column:54},end:{line:296,column:78}},"244":{start:{line:297,column:36},end:{line:297,column:133}},"245":{start:{line:299,column:36},end:{line:299,column:46}},"246":{start:{line:300,column:36},end:{line:300,column:259}},"247":{start:{line:301,column:36},end:{line:301,column:49}},"248":{start:{line:303,column:36},end:{line:303,column:52}},"249":{start:{line:304,column:36},end:{line:304,column:58}},"250":{start:{line:307,column:36},end:{line:310,column:37}},"251":{start:{line:308,column:40},end:{line:308,column:163}},"252":{start:{line:309,column:40},end:{line:309,column:62}},"253":{start:{line:312,column:36},end:{line:314,column:99}},"254":{start:{line:313,column:40},end:{line:313,column:227}},"255":{start:{line:313,column:148},end:{line:313,column:173}},"256":{start:{line:313,column:202},end:{line:313,column:223}},"257":{start:{line:315,column:36},end:{line:315,column:58}},"258":{start:{line:326,column:4},end:{line:385,column:6}},"259":{start:{line:327,column:8},end:{line:384,column:11}},"260":{start:{line:329,column:24},end:{line:329,column:28}},"261":{start:{line:330,column:12},end:{line:383,column:15}},"262":{start:{line:331,column:16},end:{line:331,column:46}},"263":{start:{line:332,column:16},end:{line:332,column:89}},"264":{start:{line:333,column:16},end:{line:335,column:17}},"265":{start:{line:334,column:20},end:{line:334,column:147}},"266":{start:{line:336,column:16},end:{line:336,column:330}},"267":{start:{line:337,column:16},end:{line:337,column:61}},"268":{start:{line:338,column:16},end:{line:338,column:106}},"269":{start:{line:339,column:16},end:{line:343,column:18}},"270":{start:{line:344,column:16},end:{line:344,column:57}},"271":{start:{line:345,column:16},end:{line:382,column:28}},"272":{start:{line:345,column:79},end:{line:382,column:23}},"273":{start:{line:347,column:24},end:{line:381,column:27}},"274":{start:{line:348,column:28},end:{line:380,column:29}},"275":{start:{line:350,column:36},end:{line:350,column:62}},"276":{start:{line:351,column:36},end:{line:351,column:81}},"277":{start:{line:353,column:36},end:{line:353,column:57}},"278":{start:{line:354,column:36},end:{line:354,column:90}},"279":{start:{line:355,column:36},end:{line:355,column:57}},"280":{start:{line:357,column:36},end:{line:363,column:37}},"281":{start:{line:358,column:40},end:{line:360,column:41}},"282":{start:{line:359,column:44},end:{line:359,column:355}},"283":{start:{line:361,column:40},end:{line:361,column:54}},"284":{start:{line:362,column:40},end:{line:362,column:62}},"285":{start:{line:365,column:36},end:{line:365,column:46}},"286":{start:{line:366,column:36},end:{line:366,column:58}},"287":{start:{line:368,column:36},end:{line:368,column:56}},"288":{start:{line:369,column:36},end:{line:369,column:90}},"289":{start:{line:370,column:36},end:{line:370,column:78}},"290":{start:{line:370,column:54},end:{line:370,column:78}},"291":{start:{line:371,column:36},end:{line:371,column:133}},"292":{start:{line:373,column:36},end:{line:373,column:46}},"293":{start:{line:374,column:36},end:{line:374,column:249}},"294":{start:{line:375,column:36},end:{line:375,column:49}},"295":{start:{line:377,column:36},end:{line:377,column:52}},"296":{start:{line:378,column:36},end:{line:378,column:58}},"297":{start:{line:379,column:40},end:{line:379,column:62}},"298":{start:{line:390,column:4},end:{line:449,column:6}},"299":{start:{line:391,column:8},end:{line:448,column:11}},"300":{start:{line:393,column:24},end:{line:393,column:28}},"301":{start:{line:394,column:12},end:{line:447,column:15}},"302":{start:{line:395,column:16},end:{line:395,column:46}},"303":{start:{line:396,column:16},end:{line:398,column:17}},"304":{start:{line:397,column:20},end:{line:397,column:154}},"305":{start:{line:399,column:16},end:{line:399,column:248}},"306":{start:{line:400,column:16},end:{line:400,column:61}},"307":{start:{line:401,column:16},end:{line:405,column:18}},"308":{start:{line:406,column:16},end:{line:406,column:57}},"309":{start:{line:407,column:16},end:{line:446,column:28}},"310":{start:{line:407,column:79},end:{line:446,column:23}},"311":{start:{line:409,column:24},end:{line:445,column:27}},"312":{start:{line:410,column:28},end:{line:444,column:29}},"313":{start:{line:412,column:36},end:{line:412,column:62}},"314":{start:{line:413,column:36},end:{line:413,column:81}},"315":{start:{line:415,column:36},end:{line:415,column:57}},"316":{start:{line:416,column:36},end:{line:416,column:90}},"317":{start:{line:417,column:36},end:{line:417,column:57}},"318":{start:{line:418,column:36},end:{line:424,column:37}},"319":{start:{line:419,column:40},end:{line:421,column:41}},"320":{start:{line:420,column:44},end:{line:420,column:336}},"321":{start:{line:422,column:40},end:{line:422,column:54}},"322":{start:{line:423,column:40},end:{line:423,column:62}},"323":{start:{line:426,column:36},end:{line:428,column:37}},"324":{start:{line:427,column:40},end:{line:427,column:350}},"325":{start:{line:429,column:36},end:{line:429,column:46}},"326":{start:{line:430,column:36},end:{line:430,column:58}},"327":{start:{line:432,column:36},end:{line:432,column:56}},"328":{start:{line:433,column:36},end:{line:433,column:90}},"329":{start:{line:434,column:36},end:{line:434,column:78}},"330":{start:{line:434,column:54},end:{line:434,column:78}},"331":{start:{line:435,column:36},end:{line:435,column:133}},"332":{start:{line:437,column:36},end:{line:437,column:46}},"333":{start:{line:438,column:36},end:{line:438,column:255}},"334":{start:{line:439,column:36},end:{line:439,column:49}},"335":{start:{line:441,column:36},end:{line:441,column:52}},"336":{start:{line:442,column:36},end:{line:442,column:58}},"337":{start:{line:443,column:40},end:{line:443,column:62}},"338":{start:{line:455,column:4},end:{line:532,column:6}},"339":{start:{line:456,column:8},end:{line:456,column:97}},"340":{start:{line:456,column:58},end:{line:456,column:95}},"341":{start:{line:457,column:8},end:{line:531,column:11}},"342":{start:{line:459,column:24},end:{line:459,column:28}},"343":{start:{line:460,column:12},end:{line:530,column:15}},"344":{start:{line:461,column:16},end:{line:461,column:46}},"345":{start:{line:462,column:16},end:{line:464,column:17}},"346":{start:{line:463,column:20},end:{line:463,column:179}},"347":{start:{line:465,column:16},end:{line:465,column:256}},"348":{start:{line:466,column:16},end:{line:466,column:57}},"349":{start:{line:467,column:16},end:{line:467,column:112}},"350":{start:{line:468,column:16},end:{line:468,column:212}},"351":{start:{line:469,column:16},end:{line:469,column:61}},"352":{start:{line:470,column:16},end:{line:472,column:17}},"353":{start:{line:471,column:20},end:{line:471,column:110}},"354":{start:{line:473,column:16},end:{line:473,column:41}},"355":{start:{line:474,column:16},end:{line:476,column:17}},"356":{start:{line:475,column:20},end:{line:475,column:117}},"357":{start:{line:477,column:16},end:{line:482,column:17}},"358":{start:{line:478,column:20},end:{line:478,column:78}},"359":{start:{line:479,column:20},end:{line:479,column:74}},"360":{start:{line:480,column:20},end:{line:480,column:58}},"361":{start:{line:481,column:20},end:{line:481,column:58}},"362":{start:{line:483,column:16},end:{line:485,column:17}},"363":{start:{line:484,column:20},end:{line:484,column:68}},"364":{start:{line:487,column:16},end:{line:489,column:17}},"365":{start:{line:488,column:20},end:{line:488,column:114}},"366":{start:{line:490,column:16},end:{line:495,column:18}},"367":{start:{line:496,column:16},end:{line:529,column:28}},"368":{start:{line:496,column:79},end:{line:529,column:23}},"369":{start:{line:498,column:24},end:{line:528,column:27}},"370":{start:{line:499,column:28},end:{line:527,column:29}},"371":{start:{line:501,column:36},end:{line:501,column:62}},"372":{start:{line:502,column:36},end:{line:502,column:81}},"373":{start:{line:504,column:36},end:{line:504,column:57}},"374":{start:{line:505,column:36},end:{line:505,column:90}},"375":{start:{line:506,column:36},end:{line:506,column:59}},"376":{start:{line:507,column:36},end:{line:512,column:37}},"377":{start:{line:508,column:40},end:{line:510,column:41}},"378":{start:{line:509,column:44},end:{line:509,column:342}},"379":{start:{line:511,column:40},end:{line:511,column:56}},"380":{start:{line:513,column:36},end:{line:513,column:60}},"381":{start:{line:515,column:36},end:{line:515,column:56}},"382":{start:{line:516,column:36},end:{line:516,column:90}},"383":{start:{line:517,column:36},end:{line:517,column:78}},"384":{start:{line:517,column:54},end:{line:517,column:78}},"385":{start:{line:518,column:36},end:{line:518,column:133}},"386":{start:{line:520,column:36},end:{line:520,column:46}},"387":{start:{line:521,column:36},end:{line:521,column:275}},"388":{start:{line:522,column:36},end:{line:522,column:49}},"389":{start:{line:524,column:36},end:{line:524,column:52}},"390":{start:{line:525,column:36},end:{line:525,column:60}},"391":{start:{line:526,column:40},end:{line:526,column:62}},"392":{start:{line:538,column:4},end:{line:618,column:6}},"393":{start:{line:539,column:8},end:{line:539,column:85}},"394":{start:{line:539,column:52},end:{line:539,column:83}},"395":{start:{line:540,column:8},end:{line:617,column:11}},"396":{start:{line:542,column:24},end:{line:542,column:28}},"397":{start:{line:543,column:12},end:{line:616,column:15}},"398":{start:{line:544,column:16},end:{line:544,column:46}},"399":{start:{line:545,column:16},end:{line:547,column:17}},"400":{start:{line:546,column:20},end:{line:546,column:160}},"401":{start:{line:548,column:16},end:{line:548,column:57}},"402":{start:{line:549,column:16},end:{line:549,column:112}},"403":{start:{line:550,column:16},end:{line:550,column:247}},"404":{start:{line:551,column:16},end:{line:551,column:61}},"405":{start:{line:552,column:16},end:{line:552,column:236}},"406":{start:{line:553,column:16},end:{line:556,column:17}},"407":{start:{line:554,column:20},end:{line:554,column:244}},"408":{start:{line:555,column:20},end:{line:555,column:110}},"409":{start:{line:557,column:16},end:{line:559,column:17}},"410":{start:{line:558,column:20},end:{line:558,column:50}},"411":{start:{line:560,column:16},end:{line:560,column:84}},"412":{start:{line:561,column:16},end:{line:561,column:41}},"413":{start:{line:562,column:16},end:{line:564,column:17}},"414":{start:{line:563,column:20},end:{line:563,column:117}},"415":{start:{line:565,column:16},end:{line:570,column:17}},"416":{start:{line:566,column:20},end:{line:566,column:78}},"417":{start:{line:567,column:20},end:{line:567,column:74}},"418":{start:{line:568,column:20},end:{line:568,column:58}},"419":{start:{line:569,column:20},end:{line:569,column:58}},"420":{start:{line:572,column:16},end:{line:574,column:17}},"421":{start:{line:573,column:20},end:{line:573,column:68}},"422":{start:{line:576,column:16},end:{line:578,column:17}},"423":{start:{line:577,column:20},end:{line:577,column:114}},"424":{start:{line:579,column:16},end:{line:584,column:18}},"425":{start:{line:585,column:16},end:{line:615,column:28}},"426":{start:{line:585,column:79},end:{line:615,column:23}},"427":{start:{line:587,column:24},end:{line:614,column:27}},"428":{start:{line:588,column:28},end:{line:613,column:29}},"429":{start:{line:590,column:36},end:{line:590,column:62}},"430":{start:{line:591,column:36},end:{line:591,column:81}},"431":{start:{line:593,column:36},end:{line:593,column:57}},"432":{start:{line:594,column:36},end:{line:594,column:90}},"433":{start:{line:595,column:36},end:{line:597,column:37}},"434":{start:{line:596,column:40},end:{line:596,column:319}},"435":{start:{line:598,column:36},end:{line:598,column:46}},"436":{start:{line:599,column:36},end:{line:599,column:60}},"437":{start:{line:601,column:36},end:{line:601,column:56}},"438":{start:{line:602,column:36},end:{line:602,column:90}},"439":{start:{line:603,column:36},end:{line:603,column:78}},"440":{start:{line:603,column:54},end:{line:603,column:78}},"441":{start:{line:604,column:36},end:{line:604,column:133}},"442":{start:{line:606,column:36},end:{line:606,column:46}},"443":{start:{line:607,column:36},end:{line:607,column:256}},"444":{start:{line:608,column:36},end:{line:608,column:49}},"445":{start:{line:610,column:36},end:{line:610,column:52}},"446":{start:{line:611,column:36},end:{line:611,column:60}},"447":{start:{line:612,column:40},end:{line:612,column:62}},"448":{start:{line:624,column:4},end:{line:690,column:6}},"449":{start:{line:625,column:8},end:{line:625,column:87}},"450":{start:{line:625,column:53},end:{line:625,column:85}},"451":{start:{line:626,column:8},end:{line:689,column:11}},"452":{start:{line:628,column:24},end:{line:628,column:28}},"453":{start:{line:629,column:12},end:{line:688,column:15}},"454":{start:{line:630,column:16},end:{line:630,column:46}},"455":{start:{line:631,column:16},end:{line:633,column:17}},"456":{start:{line:632,column:20},end:{line:632,column:162}},"457":{start:{line:634,column:16},end:{line:634,column:295}},"458":{start:{line:635,column:16},end:{line:635,column:57}},"459":{start:{line:636,column:16},end:{line:636,column:112}},"460":{start:{line:637,column:16},end:{line:637,column:261}},"461":{start:{line:638,column:16},end:{line:638,column:61}},"462":{start:{line:639,column:16},end:{line:639,column:26}},"463":{start:{line:640,column:16},end:{line:640,column:37}},"464":{start:{line:641,column:16},end:{line:644,column:17}},"465":{start:{line:642,column:20},end:{line:642,column:303}},"466":{start:{line:643,column:20},end:{line:643,column:110}},"467":{start:{line:645,column:16},end:{line:647,column:17}},"468":{start:{line:646,column:20},end:{line:646,column:56}},"469":{start:{line:648,column:16},end:{line:650,column:17}},"470":{start:{line:649,column:20},end:{line:649,column:57}},"471":{start:{line:651,column:16},end:{line:656,column:18}},"472":{start:{line:657,column:16},end:{line:687,column:28}},"473":{start:{line:657,column:79},end:{line:687,column:23}},"474":{start:{line:659,column:24},end:{line:686,column:27}},"475":{start:{line:660,column:28},end:{line:685,column:29}},"476":{start:{line:662,column:36},end:{line:662,column:62}},"477":{start:{line:663,column:36},end:{line:663,column:81}},"478":{start:{line:665,column:36},end:{line:665,column:57}},"479":{start:{line:666,column:36},end:{line:666,column:90}},"480":{start:{line:667,column:36},end:{line:669,column:37}},"481":{start:{line:668,column:40},end:{line:668,column:321}},"482":{start:{line:670,column:36},end:{line:670,column:46}},"483":{start:{line:671,column:36},end:{line:671,column:60}},"484":{start:{line:673,column:36},end:{line:673,column:56}},"485":{start:{line:674,column:36},end:{line:674,column:90}},"486":{start:{line:675,column:36},end:{line:675,column:78}},"487":{start:{line:675,column:54},end:{line:675,column:78}},"488":{start:{line:676,column:36},end:{line:676,column:133}},"489":{start:{line:678,column:36},end:{line:678,column:46}},"490":{start:{line:679,column:36},end:{line:679,column:258}},"491":{start:{line:680,column:36},end:{line:680,column:49}},"492":{start:{line:682,column:36},end:{line:682,column:45}},"493":{start:{line:683,column:36},end:{line:683,column:60}},"494":{start:{line:684,column:40},end:{line:684,column:62}},"495":{start:{line:696,column:4},end:{line:754,column:6}},"496":{start:{line:698,column:8},end:{line:753,column:11}},"497":{start:{line:700,column:12},end:{line:752,column:15}},"498":{start:{line:701,column:16},end:{line:751,column:17}},"499":{start:{line:703,column:24},end:{line:703,column:54}},"500":{start:{line:704,column:24},end:{line:706,column:25}},"501":{start:{line:705,column:28},end:{line:705,column:192}},"502":{start:{line:707,column:24},end:{line:707,column:163}},"503":{start:{line:708,column:24},end:{line:708,column:331}},"504":{start:{line:709,column:24},end:{line:709,column:65}},"505":{start:{line:710,column:24},end:{line:710,column:120}},"506":{start:{line:711,column:24},end:{line:711,column:69}},"507":{start:{line:712,column:24},end:{line:714,column:25}},"508":{start:{line:713,column:28},end:{line:713,column:118}},"509":{start:{line:715,column:24},end:{line:719,column:26}},"510":{start:{line:720,column:24},end:{line:720,column:37}},"511":{start:{line:722,column:24},end:{line:722,column:50}},"512":{start:{line:723,column:24},end:{line:723,column:69}},"513":{start:{line:725,column:24},end:{line:725,column:45}},"514":{start:{line:726,column:24},end:{line:726,column:78}},"515":{start:{line:727,column:24},end:{line:734,column:25}},"516":{start:{line:728,column:28},end:{line:728,column:378}},"517":{start:{line:729,column:28},end:{line:729,column:82}},"518":{start:{line:732,column:28},end:{line:732,column:450}},"519":{start:{line:733,column:28},end:{line:733,column:163}},"520":{start:{line:735,column:24},end:{line:735,column:48}},"521":{start:{line:737,column:24},end:{line:737,column:44}},"522":{start:{line:738,column:24},end:{line:738,column:78}},"523":{start:{line:739,column:24},end:{line:739,column:121}},"524":{start:{line:741,column:24},end:{line:741,column:34}},"525":{start:{line:742,column:24},end:{line:742,column:315}},"526":{start:{line:743,column:24},end:{line:748,column:25}},"527":{start:{line:744,column:28},end:{line:744,column:71}},"528":{start:{line:747,column:28},end:{line:747,column:68}},"529":{start:{line:749,column:24},end:{line:749,column:48}},"530":{start:{line:750,column:28},end:{line:750,column:50}},"531":{start:{line:761,column:4},end:{line:819,column:6}},"532":{start:{line:762,column:8},end:{line:762,column:107}},"533":{start:{line:762,column:63},end:{line:762,column:105}},"534":{start:{line:763,column:8},end:{line:818,column:11}},"535":{start:{line:765,column:24},end:{line:765,column:28}},"536":{start:{line:766,column:12},end:{line:817,column:15}},"537":{start:{line:767,column:16},end:{line:767,column:46}},"538":{start:{line:768,column:16},end:{line:770,column:17}},"539":{start:{line:769,column:20},end:{line:769,column:167}},"540":{start:{line:771,column:16},end:{line:771,column:297}},"541":{start:{line:772,column:16},end:{line:772,column:57}},"542":{start:{line:773,column:16},end:{line:773,column:112}},"543":{start:{line:774,column:16},end:{line:774,column:101}},"544":{start:{line:775,column:16},end:{line:775,column:61}},"545":{start:{line:776,column:16},end:{line:779,column:17}},"546":{start:{line:777,column:20},end:{line:777,column:305}},"547":{start:{line:778,column:20},end:{line:778,column:110}},"548":{start:{line:780,column:16},end:{line:785,column:18}},"549":{start:{line:786,column:16},end:{line:816,column:28}},"550":{start:{line:786,column:79},end:{line:816,column:23}},"551":{start:{line:788,column:24},end:{line:815,column:27}},"552":{start:{line:789,column:28},end:{line:814,column:29}},"553":{start:{line:791,column:36},end:{line:791,column:62}},"554":{start:{line:792,column:36},end:{line:792,column:81}},"555":{start:{line:794,column:36},end:{line:794,column:57}},"556":{start:{line:795,column:36},end:{line:795,column:90}},"557":{start:{line:796,column:36},end:{line:798,column:37}},"558":{start:{line:797,column:40},end:{line:797,column:326}},"559":{start:{line:799,column:36},end:{line:799,column:46}},"560":{start:{line:800,column:36},end:{line:800,column:60}},"561":{start:{line:802,column:36},end:{line:802,column:56}},"562":{start:{line:803,column:36},end:{line:803,column:90}},"563":{start:{line:804,column:36},end:{line:804,column:78}},"564":{start:{line:804,column:54},end:{line:804,column:78}},"565":{start:{line:805,column:36},end:{line:805,column:133}},"566":{start:{line:807,column:36},end:{line:807,column:46}},"567":{start:{line:808,column:36},end:{line:808,column:263}},"568":{start:{line:809,column:36},end:{line:809,column:49}},"569":{start:{line:811,column:36},end:{line:811,column:45}},"570":{start:{line:812,column:36},end:{line:812,column:60}},"571":{start:{line:813,column:40},end:{line:813,column:62}},"572":{start:{line:826,column:4},end:{line:889,column:6}},"573":{start:{line:827,column:8},end:{line:827,column:101}},"574":{start:{line:827,column:60},end:{line:827,column:99}},"575":{start:{line:828,column:8},end:{line:888,column:11}},"576":{start:{line:830,column:24},end:{line:830,column:28}},"577":{start:{line:831,column:12},end:{line:887,column:15}},"578":{start:{line:832,column:16},end:{line:832,column:46}},"579":{start:{line:833,column:16},end:{line:835,column:17}},"580":{start:{line:834,column:20},end:{line:834,column:186}},"581":{start:{line:836,column:16},end:{line:836,column:201}},"582":{start:{line:837,column:16},end:{line:837,column:57}},"583":{start:{line:838,column:16},end:{line:838,column:112}},"584":{start:{line:839,column:16},end:{line:839,column:155}},"585":{start:{line:840,column:16},end:{line:840,column:61}},"586":{start:{line:841,column:16},end:{line:845,column:17}},"587":{start:{line:842,column:20},end:{line:842,column:209}},"588":{start:{line:843,column:20},end:{line:843,column:110}},"589":{start:{line:844,column:20},end:{line:844,column:115}},"590":{start:{line:846,column:16},end:{line:848,column:17}},"591":{start:{line:847,column:20},end:{line:847,column:84}},"592":{start:{line:849,column:16},end:{line:854,column:18}},"593":{start:{line:855,column:16},end:{line:886,column:28}},"594":{start:{line:855,column:79},end:{line:886,column:23}},"595":{start:{line:857,column:24},end:{line:885,column:27}},"596":{start:{line:858,column:28},end:{line:884,column:29}},"597":{start:{line:860,column:36},end:{line:860,column:62}},"598":{start:{line:861,column:36},end:{line:861,column:81}},"599":{start:{line:863,column:36},end:{line:863,column:57}},"600":{start:{line:864,column:36},end:{line:864,column:57}},"601":{start:{line:865,column:36},end:{line:865,column:90}},"602":{start:{line:866,column:36},end:{line:868,column:37}},"603":{start:{line:867,column:40},end:{line:867,column:315}},"604":{start:{line:869,column:36},end:{line:869,column:50}},"605":{start:{line:870,column:36},end:{line:870,column:60}},"606":{start:{line:872,column:36},end:{line:872,column:57}},"607":{start:{line:873,column:36},end:{line:873,column:90}},"608":{start:{line:874,column:36},end:{line:874,column:78}},"609":{start:{line:874,column:54},end:{line:874,column:78}},"610":{start:{line:875,column:36},end:{line:875,column:134}},"611":{start:{line:877,column:36},end:{line:877,column:46}},"612":{start:{line:878,column:36},end:{line:878,column:253}},"613":{start:{line:879,column:36},end:{line:879,column:49}},"614":{start:{line:881,column:36},end:{line:881,column:45}},"615":{start:{line:882,column:36},end:{line:882,column:60}},"616":{start:{line:883,column:40},end:{line:883,column:62}},"617":{start:{line:897,column:4},end:{line:963,column:6}},"618":{start:{line:898,column:8},end:{line:898,column:99}},"619":{start:{line:898,column:59},end:{line:898,column:97}},"620":{start:{line:899,column:8},end:{line:962,column:11}},"621":{start:{line:901,column:24},end:{line:901,column:28}},"622":{start:{line:902,column:12},end:{line:961,column:15}},"623":{start:{line:903,column:16},end:{line:903,column:46}},"624":{start:{line:904,column:16},end:{line:906,column:17}},"625":{start:{line:905,column:20},end:{line:905,column:173}},"626":{start:{line:907,column:16},end:{line:907,column:224}},"627":{start:{line:908,column:16},end:{line:908,column:57}},"628":{start:{line:909,column:16},end:{line:909,column:112}},"629":{start:{line:910,column:16},end:{line:910,column:179}},"630":{start:{line:911,column:16},end:{line:911,column:61}},"631":{start:{line:912,column:16},end:{line:912,column:111}},"632":{start:{line:913,column:16},end:{line:913,column:111}},"633":{start:{line:914,column:16},end:{line:914,column:80}},"634":{start:{line:915,column:16},end:{line:923,column:17}},"635":{start:{line:916,column:20},end:{line:916,column:230}},"636":{start:{line:917,column:20},end:{line:919,column:21}},"637":{start:{line:918,column:24},end:{line:918,column:238}},"638":{start:{line:921,column:21},end:{line:923,column:17}},"639":{start:{line:922,column:20},end:{line:922,column:232}},"640":{start:{line:924,column:16},end:{line:928,column:18}},"641":{start:{line:929,column:16},end:{line:960,column:28}},"642":{start:{line:929,column:79},end:{line:960,column:23}},"643":{start:{line:931,column:24},end:{line:959,column:27}},"644":{start:{line:932,column:28},end:{line:958,column:29}},"645":{start:{line:934,column:36},end:{line:934,column:62}},"646":{start:{line:935,column:36},end:{line:935,column:81}},"647":{start:{line:937,column:36},end:{line:937,column:57}},"648":{start:{line:938,column:36},end:{line:938,column:90}},"649":{start:{line:939,column:36},end:{line:939,column:57}},"650":{start:{line:940,column:36},end:{line:942,column:37}},"651":{start:{line:941,column:40},end:{line:941,column:332}},"652":{start:{line:943,column:36},end:{line:943,column:50}},"653":{start:{line:944,column:36},end:{line:944,column:60}},"654":{start:{line:946,column:36},end:{line:946,column:57}},"655":{start:{line:947,column:36},end:{line:947,column:90}},"656":{start:{line:948,column:36},end:{line:948,column:78}},"657":{start:{line:948,column:54},end:{line:948,column:78}},"658":{start:{line:949,column:36},end:{line:949,column:134}},"659":{start:{line:951,column:36},end:{line:951,column:46}},"660":{start:{line:952,column:36},end:{line:952,column:270}},"661":{start:{line:953,column:36},end:{line:953,column:49}},"662":{start:{line:955,column:36},end:{line:955,column:53}},"663":{start:{line:956,column:36},end:{line:956,column:60}},"664":{start:{line:957,column:40},end:{line:957,column:62}},"665":{start:{line:971,column:4},end:{line:1031,column:6}},"666":{start:{line:972,column:8},end:{line:972,column:93}},"667":{start:{line:972,column:56},end:{line:972,column:91}},"668":{start:{line:973,column:8},end:{line:1030,column:11}},"669":{start:{line:975,column:24},end:{line:975,column:28}},"670":{start:{line:976,column:12},end:{line:1029,column:15}},"671":{start:{line:977,column:16},end:{line:977,column:46}},"672":{start:{line:978,column:16},end:{line:980,column:17}},"673":{start:{line:979,column:20},end:{line:979,column:168}},"674":{start:{line:981,column:16},end:{line:981,column:214}},"675":{start:{line:982,column:16},end:{line:982,column:57}},"676":{start:{line:983,column:16},end:{line:983,column:112}},"677":{start:{line:984,column:16},end:{line:984,column:94}},"678":{start:{line:985,column:16},end:{line:985,column:61}},"679":{start:{line:986,column:16},end:{line:986,column:111}},"680":{start:{line:987,column:16},end:{line:987,column:111}},"681":{start:{line:988,column:16},end:{line:988,column:80}},"682":{start:{line:989,column:16},end:{line:991,column:17}},"683":{start:{line:990,column:20},end:{line:990,column:222}},"684":{start:{line:992,column:16},end:{line:997,column:18}},"685":{start:{line:998,column:16},end:{line:1028,column:28}},"686":{start:{line:998,column:79},end:{line:1028,column:23}},"687":{start:{line:1000,column:24},end:{line:1027,column:27}},"688":{start:{line:1001,column:28},end:{line:1026,column:29}},"689":{start:{line:1003,column:36},end:{line:1003,column:62}},"690":{start:{line:1004,column:36},end:{line:1004,column:81}},"691":{start:{line:1006,column:36},end:{line:1006,column:57}},"692":{start:{line:1007,column:36},end:{line:1007,column:90}},"693":{start:{line:1008,column:36},end:{line:1010,column:37}},"694":{start:{line:1009,column:40},end:{line:1009,column:327}},"695":{start:{line:1011,column:36},end:{line:1011,column:46}},"696":{start:{line:1012,column:36},end:{line:1012,column:60}},"697":{start:{line:1014,column:36},end:{line:1014,column:57}},"698":{start:{line:1015,column:36},end:{line:1015,column:90}},"699":{start:{line:1016,column:36},end:{line:1016,column:78}},"700":{start:{line:1016,column:54},end:{line:1016,column:78}},"701":{start:{line:1017,column:36},end:{line:1017,column:134}},"702":{start:{line:1019,column:36},end:{line:1019,column:46}},"703":{start:{line:1020,column:36},end:{line:1020,column:265}},"704":{start:{line:1021,column:36},end:{line:1021,column:49}},"705":{start:{line:1023,column:36},end:{line:1023,column:45}},"706":{start:{line:1024,column:36},end:{line:1024,column:60}},"707":{start:{line:1025,column:40},end:{line:1025,column:62}},"708":{start:{line:1036,column:4},end:{line:1093,column:6}},"709":{start:{line:1037,column:8},end:{line:1092,column:11}},"710":{start:{line:1039,column:24},end:{line:1039,column:28}},"711":{start:{line:1040,column:12},end:{line:1091,column:15}},"712":{start:{line:1041,column:16},end:{line:1041,column:46}},"713":{start:{line:1042,column:16},end:{line:1044,column:17}},"714":{start:{line:1043,column:20},end:{line:1043,column:171}},"715":{start:{line:1045,column:16},end:{line:1047,column:17}},"716":{start:{line:1046,column:20},end:{line:1046,column:48}},"717":{start:{line:1048,column:16},end:{line:1048,column:180}},"718":{start:{line:1049,column:16},end:{line:1049,column:57}},"719":{start:{line:1050,column:16},end:{line:1050,column:112}},"720":{start:{line:1051,column:16},end:{line:1051,column:61}},"721":{start:{line:1052,column:16},end:{line:1052,column:111}},"722":{start:{line:1053,column:16},end:{line:1053,column:80}},"723":{start:{line:1054,column:16},end:{line:1058,column:18}},"724":{start:{line:1059,column:16},end:{line:1090,column:28}},"725":{start:{line:1059,column:79},end:{line:1090,column:23}},"726":{start:{line:1061,column:24},end:{line:1089,column:27}},"727":{start:{line:1062,column:28},end:{line:1088,column:29}},"728":{start:{line:1064,column:36},end:{line:1064,column:62}},"729":{start:{line:1065,column:36},end:{line:1065,column:81}},"730":{start:{line:1067,column:36},end:{line:1067,column:57}},"731":{start:{line:1068,column:36},end:{line:1068,column:90}},"732":{start:{line:1069,column:36},end:{line:1069,column:57}},"733":{start:{line:1070,column:36},end:{line:1072,column:37}},"734":{start:{line:1071,column:40},end:{line:1071,column:330}},"735":{start:{line:1073,column:36},end:{line:1073,column:50}},"736":{start:{line:1074,column:36},end:{line:1074,column:60}},"737":{start:{line:1076,column:36},end:{line:1076,column:57}},"738":{start:{line:1077,column:36},end:{line:1077,column:90}},"739":{start:{line:1078,column:36},end:{line:1078,column:78}},"740":{start:{line:1078,column:54},end:{line:1078,column:78}},"741":{start:{line:1079,column:36},end:{line:1079,column:134}},"742":{start:{line:1081,column:36},end:{line:1081,column:46}},"743":{start:{line:1082,column:36},end:{line:1082,column:268}},"744":{start:{line:1083,column:36},end:{line:1083,column:49}},"745":{start:{line:1085,column:36},end:{line:1085,column:45}},"746":{start:{line:1086,column:36},end:{line:1086,column:60}},"747":{start:{line:1087,column:40},end:{line:1087,column:62}},"748":{start:{line:1100,column:4},end:{line:1154,column:6}},"749":{start:{line:1101,column:8},end:{line:1101,column:105}},"750":{start:{line:1101,column:62},end:{line:1101,column:103}},"751":{start:{line:1102,column:8},end:{line:1153,column:11}},"752":{start:{line:1104,column:12},end:{line:1152,column:15}},"753":{start:{line:1105,column:16},end:{line:1151,column:17}},"754":{start:{line:1107,column:24},end:{line:1107,column:54}},"755":{start:{line:1108,column:24},end:{line:1110,column:25}},"756":{start:{line:1109,column:28},end:{line:1109,column:204}},"757":{start:{line:1111,column:24},end:{line:1111,column:254}},"758":{start:{line:1112,column:24},end:{line:1112,column:65}},"759":{start:{line:1113,column:24},end:{line:1113,column:120}},"760":{start:{line:1114,column:24},end:{line:1114,column:108}},"761":{start:{line:1115,column:24},end:{line:1115,column:69}},"762":{start:{line:1116,column:24},end:{line:1116,column:119}},"763":{start:{line:1117,column:24},end:{line:1120,column:25}},"764":{start:{line:1118,column:28},end:{line:1118,column:118}},"765":{start:{line:1119,column:28},end:{line:1119,column:262}},"766":{start:{line:1121,column:24},end:{line:1121,column:89}},"767":{start:{line:1122,column:24},end:{line:1127,column:26}},"768":{start:{line:1128,column:24},end:{line:1128,column:37}},"769":{start:{line:1130,column:24},end:{line:1130,column:50}},"770":{start:{line:1131,column:24},end:{line:1131,column:69}},"771":{start:{line:1133,column:24},end:{line:1133,column:45}},"772":{start:{line:1134,column:24},end:{line:1134,column:78}},"773":{start:{line:1135,column:24},end:{line:1135,column:45}},"774":{start:{line:1136,column:24},end:{line:1138,column:25}},"775":{start:{line:1137,column:28},end:{line:1137,column:334}},"776":{start:{line:1139,column:24},end:{line:1139,column:48}},"777":{start:{line:1141,column:24},end:{line:1141,column:45}},"778":{start:{line:1142,column:24},end:{line:1142,column:78}},"779":{start:{line:1143,column:24},end:{line:1143,column:66}},"780":{start:{line:1143,column:42},end:{line:1143,column:66}},"781":{start:{line:1144,column:24},end:{line:1144,column:122}},"782":{start:{line:1146,column:24},end:{line:1146,column:34}},"783":{start:{line:1147,column:24},end:{line:1147,column:281}},"784":{start:{line:1148,column:24},end:{line:1148,column:37}},"785":{start:{line:1149,column:28},end:{line:1149,column:43}},"786":{start:{line:1150,column:28},end:{line:1150,column:50}},"787":{start:{line:1158,column:4},end:{line:1219,column:6}},"788":{start:{line:1159,column:8},end:{line:1159,column:101}},"789":{start:{line:1159,column:60},end:{line:1159,column:99}},"790":{start:{line:1160,column:8},end:{line:1218,column:11}},"791":{start:{line:1162,column:24},end:{line:1162,column:28}},"792":{start:{line:1163,column:12},end:{line:1217,column:15}},"793":{start:{line:1165,column:16},end:{line:1167,column:17}},"794":{start:{line:1166,column:20},end:{line:1166,column:61}},"795":{start:{line:1168,column:16},end:{line:1168,column:46}},"796":{start:{line:1169,column:16},end:{line:1169,column:92}},"797":{start:{line:1170,column:16},end:{line:1172,column:17}},"798":{start:{line:1171,column:20},end:{line:1171,column:80}},"799":{start:{line:1173,column:16},end:{line:1173,column:145}},"800":{start:{line:1174,column:16},end:{line:1174,column:57}},"801":{start:{line:1175,column:16},end:{line:1175,column:61}},"802":{start:{line:1176,column:16},end:{line:1176,column:111}},"803":{start:{line:1177,column:16},end:{line:1179,column:17}},"804":{start:{line:1178,column:20},end:{line:1178,column:91}},"805":{start:{line:1180,column:16},end:{line:1184,column:18}},"806":{start:{line:1185,column:16},end:{line:1216,column:28}},"807":{start:{line:1185,column:79},end:{line:1216,column:23}},"808":{start:{line:1187,column:24},end:{line:1215,column:27}},"809":{start:{line:1188,column:28},end:{line:1214,column:29}},"810":{start:{line:1190,column:36},end:{line:1190,column:62}},"811":{start:{line:1191,column:36},end:{line:1191,column:81}},"812":{start:{line:1193,column:36},end:{line:1193,column:57}},"813":{start:{line:1194,column:36},end:{line:1194,column:90}},"814":{start:{line:1195,column:36},end:{line:1195,column:57}},"815":{start:{line:1196,column:36},end:{line:1198,column:37}},"816":{start:{line:1197,column:40},end:{line:1197,column:327}},"817":{start:{line:1199,column:36},end:{line:1199,column:46}},"818":{start:{line:1200,column:36},end:{line:1200,column:60}},"819":{start:{line:1202,column:36},end:{line:1202,column:57}},"820":{start:{line:1203,column:36},end:{line:1203,column:90}},"821":{start:{line:1204,column:36},end:{line:1204,column:78}},"822":{start:{line:1204,column:54},end:{line:1204,column:78}},"823":{start:{line:1205,column:36},end:{line:1205,column:134}},"824":{start:{line:1207,column:36},end:{line:1207,column:46}},"825":{start:{line:1208,column:36},end:{line:1208,column:274}},"826":{start:{line:1209,column:36},end:{line:1209,column:49}},"827":{start:{line:1211,column:36},end:{line:1211,column:53}},"828":{start:{line:1212,column:36},end:{line:1212,column:60}},"829":{start:{line:1213,column:40},end:{line:1213,column:62}},"830":{start:{line:1220,column:4},end:{line:1224,column:6}},"831":{start:{line:1225,column:4},end:{line:1225,column:15}},"832":{start:{line:1227,column:0},end:{line:1227,column:22}}},fnMap:{"0":{name:"(anonymous_0)",decl:{start:{line:2,column:42},end:{line:2,column:43}},loc:{start:{line:2,column:54},end:{line:12,column:1}},line:2},"1":{name:"(anonymous_1)",decl:{start:{line:3,column:32},end:{line:3,column:33}},loc:{start:{line:3,column:44},end:{line:10,column:5}},line:3},"2":{name:"(anonymous_2)",decl:{start:{line:13,column:44},end:{line:13,column:45}},loc:{start:{line:13,column:89},end:{line:21,column:1}},line:13},"3":{name:"adopt",decl:{start:{line:14,column:13},end:{line:14,column:18}},loc:{start:{line:14,column:26},end:{line:14,column:112}},line:14},"4":{name:"(anonymous_4)",decl:{start:{line:14,column:70},end:{line:14,column:71}},loc:{start:{line:14,column:89},end:{line:14,column:108}},line:14},"5":{name:"(anonymous_5)",decl:{start:{line:15,column:36},end:{line:15,column:37}},loc:{start:{line:15,column:63},end:{line:20,column:5}},line:15},"6":{name:"fulfilled",decl:{start:{line:16,column:17},end:{line:16,column:26}},loc:{start:{line:16,column:34},end:{line:16,column:99}},line:16},"7":{name:"rejected",decl:{start:{line:17,column:17},end:{line:17,column:25}},loc:{start:{line:17,column:33},end:{line:17,column:102}},line:17},"8":{name:"step",decl:{start:{line:18,column:17},end:{line:18,column:21}},loc:{start:{line:18,column:30},end:{line:18,column:118}},line:18},"9":{name:"(anonymous_9)",decl:{start:{line:22,column:48},end:{line:22,column:49}},loc:{start:{line:22,column:73},end:{line:48,column:1}},line:22},"10":{name:"(anonymous_10)",decl:{start:{line:23,column:30},end:{line:23,column:31}},loc:{start:{line:23,column:41},end:{line:23,column:83}},line:23},"11":{name:"(anonymous_11)",decl:{start:{line:24,column:125},end:{line:24,column:126}},loc:{start:{line:24,column:136},end:{line:24,column:152}},line:24},"12":{name:"verb",decl:{start:{line:25,column:13},end:{line:25,column:17}},loc:{start:{line:25,column:21},end:{line:25,column:70}},line:25},"13":{name:"(anonymous_13)",decl:{start:{line:25,column:30},end:{line:25,column:31}},loc:{start:{line:25,column:43},end:{line:25,column:67}},line:25},"14":{name:"step",decl:{start:{line:26,column:13},end:{line:26,column:17}},loc:{start:{line:26,column:22},end:{line:47,column:5}},line:26},"15":{name:"(anonymous_15)",decl:{start:{line:65,column:25},end:{line:65,column:26}},loc:{start:{line:65,column:37},end:{line:1226,column:1}},line:65},"16":{name:"SDK",decl:{start:{line:66,column:13},end:{line:66,column:16}},loc:{start:{line:66,column:66},end:{line:96,column:5}},line:66},"17":{name:"(anonymous_17)",decl:{start:{line:101,column:34},end:{line:101,column:35}},loc:{start:{line:101,column:68},end:{line:143,column:5}},line:101},"18":{name:"(anonymous_18)",decl:{start:{line:103,column:47},end:{line:103,column:48}},loc:{start:{line:103,column:59},end:{line:142,column:9}},line:103},"19":{name:"(anonymous_19)",decl:{start:{line:105,column:37},end:{line:105,column:38}},loc:{start:{line:105,column:51},end:{line:141,column:13}},line:105},"20":{name:"(anonymous_20)",decl:{start:{line:149,column:34},end:{line:149,column:35}},loc:{start:{line:149,column:84},end:{line:216,column:5}},line:149},"21":{name:"(anonymous_21)",decl:{start:{line:151,column:47},end:{line:151,column:48}},loc:{start:{line:151,column:59},end:{line:215,column:9}},line:151},"22":{name:"(anonymous_22)",decl:{start:{line:154,column:37},end:{line:154,column:38}},loc:{start:{line:154,column:51},end:{line:214,column:13}},line:154},"23":{name:"(anonymous_23)",decl:{start:{line:182,column:50},end:{line:182,column:51}},loc:{start:{line:182,column:77},end:{line:213,column:25}},line:182},"24":{name:"(anonymous_24)",decl:{start:{line:182,column:119},end:{line:182,column:120}},loc:{start:{line:182,column:131},end:{line:213,column:21}},line:182},"25":{name:"(anonymous_25)",decl:{start:{line:184,column:49},end:{line:184,column:50}},loc:{start:{line:184,column:63},end:{line:212,column:25}},line:184},"26":{name:"(anonymous_26)",decl:{start:{line:222,column:33},end:{line:222,column:34}},loc:{start:{line:222,column:101},end:{line:321,column:5}},line:222},"27":{name:"(anonymous_27)",decl:{start:{line:225,column:47},end:{line:225,column:48}},loc:{start:{line:225,column:59},end:{line:320,column:9}},line:225},"28":{name:"(anonymous_28)",decl:{start:{line:228,column:37},end:{line:228,column:38}},loc:{start:{line:228,column:51},end:{line:319,column:13}},line:228},"29":{name:"(anonymous_29)",decl:{start:{line:266,column:50},end:{line:266,column:51}},loc:{start:{line:266,column:77},end:{line:318,column:25}},line:266},"30":{name:"(anonymous_30)",decl:{start:{line:266,column:119},end:{line:266,column:120}},loc:{start:{line:266,column:131},end:{line:318,column:21}},line:266},"31":{name:"(anonymous_31)",decl:{start:{line:269,column:49},end:{line:269,column:50}},loc:{start:{line:269,column:63},end:{line:317,column:25}},line:269},"32":{name:"(anonymous_32)",decl:{start:{line:312,column:47},end:{line:312,column:48}},loc:{start:{line:312,column:59},end:{line:314,column:37}},line:312},"33":{name:"(anonymous_33)",decl:{start:{line:313,column:126},end:{line:313,column:127}},loc:{start:{line:313,column:146},end:{line:313,column:175}},line:313},"34":{name:"(anonymous_34)",decl:{start:{line:313,column:183},end:{line:313,column:184}},loc:{start:{line:313,column:200},end:{line:313,column:225}},line:313},"35":{name:"(anonymous_35)",decl:{start:{line:326,column:42},end:{line:326,column:43}},loc:{start:{line:326,column:78},end:{line:385,column:5}},line:326},"36":{name:"(anonymous_36)",decl:{start:{line:327,column:47},end:{line:327,column:48}},loc:{start:{line:327,column:59},end:{line:384,column:9}},line:327},"37":{name:"(anonymous_37)",decl:{start:{line:330,column:37},end:{line:330,column:38}},loc:{start:{line:330,column:51},end:{line:383,column:13}},line:330},"38":{name:"(anonymous_38)",decl:{start:{line:345,column:50},end:{line:345,column:51}},loc:{start:{line:345,column:77},end:{line:382,column:25}},line:345},"39":{name:"(anonymous_39)",decl:{start:{line:345,column:119},end:{line:345,column:120}},loc:{start:{line:345,column:131},end:{line:382,column:21}},line:345},"40":{name:"(anonymous_40)",decl:{start:{line:347,column:49},end:{line:347,column:50}},loc:{start:{line:347,column:63},end:{line:381,column:25}},line:347},"41":{name:"(anonymous_41)",decl:{start:{line:390,column:45},end:{line:390,column:46}},loc:{start:{line:390,column:68},end:{line:449,column:5}},line:390},"42":{name:"(anonymous_42)",decl:{start:{line:391,column:47},end:{line:391,column:48}},loc:{start:{line:391,column:59},end:{line:448,column:9}},line:391},"43":{name:"(anonymous_43)",decl:{start:{line:394,column:37},end:{line:394,column:38}},loc:{start:{line:394,column:51},end:{line:447,column:13}},line:394},"44":{name:"(anonymous_44)",decl:{start:{line:407,column:50},end:{line:407,column:51}},loc:{start:{line:407,column:77},end:{line:446,column:25}},line:407},"45":{name:"(anonymous_45)",decl:{start:{line:407,column:119},end:{line:407,column:120}},loc:{start:{line:407,column:131},end:{line:446,column:21}},line:407},"46":{name:"(anonymous_46)",decl:{start:{line:409,column:49},end:{line:409,column:50}},loc:{start:{line:409,column:63},end:{line:445,column:25}},line:409},"47":{name:"(anonymous_47)",decl:{start:{line:455,column:41},end:{line:455,column:42}},loc:{start:{line:455,column:95},end:{line:532,column:5}},line:455},"48":{name:"(anonymous_48)",decl:{start:{line:457,column:47},end:{line:457,column:48}},loc:{start:{line:457,column:59},end:{line:531,column:9}},line:457},"49":{name:"(anonymous_49)",decl:{start:{line:460,column:37},end:{line:460,column:38}},loc:{start:{line:460,column:51},end:{line:530,column:13}},line:460},"50":{name:"(anonymous_50)",decl:{start:{line:496,column:50},end:{line:496,column:51}},loc:{start:{line:496,column:77},end:{line:529,column:25}},line:496},"51":{name:"(anonymous_51)",decl:{start:{line:496,column:119},end:{line:496,column:120}},loc:{start:{line:496,column:131},end:{line:529,column:21}},line:496},"52":{name:"(anonymous_52)",decl:{start:{line:498,column:49},end:{line:498,column:50}},loc:{start:{line:498,column:63},end:{line:528,column:25}},line:498},"53":{name:"(anonymous_53)",decl:{start:{line:538,column:32},end:{line:538,column:33}},loc:{start:{line:538,column:80},end:{line:618,column:5}},line:538},"54":{name:"(anonymous_54)",decl:{start:{line:540,column:47},end:{line:540,column:48}},loc:{start:{line:540,column:59},end:{line:617,column:9}},line:540},"55":{name:"(anonymous_55)",decl:{start:{line:543,column:37},end:{line:543,column:38}},loc:{start:{line:543,column:51},end:{line:616,column:13}},line:543},"56":{name:"(anonymous_56)",decl:{start:{line:585,column:50},end:{line:585,column:51}},loc:{start:{line:585,column:77},end:{line:615,column:25}},line:585},"57":{name:"(anonymous_57)",decl:{start:{line:585,column:119},end:{line:585,column:120}},loc:{start:{line:585,column:131},end:{line:615,column:21}},line:585},"58":{name:"(anonymous_58)",decl:{start:{line:587,column:49},end:{line:587,column:50}},loc:{start:{line:587,column:63},end:{line:614,column:25}},line:587},"59":{name:"(anonymous_59)",decl:{start:{line:624,column:33},end:{line:624,column:34}},loc:{start:{line:624,column:82},end:{line:690,column:5}},line:624},"60":{name:"(anonymous_60)",decl:{start:{line:626,column:47},end:{line:626,column:48}},loc:{start:{line:626,column:59},end:{line:689,column:9}},line:626},"61":{name:"(anonymous_61)",decl:{start:{line:629,column:37},end:{line:629,column:38}},loc:{start:{line:629,column:51},end:{line:688,column:13}},line:629},"62":{name:"(anonymous_62)",decl:{start:{line:657,column:50},end:{line:657,column:51}},loc:{start:{line:657,column:77},end:{line:687,column:25}},line:657},"63":{name:"(anonymous_63)",decl:{start:{line:657,column:119},end:{line:657,column:120}},loc:{start:{line:657,column:131},end:{line:687,column:21}},line:657},"64":{name:"(anonymous_64)",decl:{start:{line:659,column:49},end:{line:659,column:50}},loc:{start:{line:659,column:63},end:{line:686,column:25}},line:659},"65":{name:"(anonymous_65)",decl:{start:{line:696,column:43},end:{line:696,column:44}},loc:{start:{line:696,column:102},end:{line:754,column:5}},line:696},"66":{name:"(anonymous_66)",decl:{start:{line:698,column:47},end:{line:698,column:48}},loc:{start:{line:698,column:59},end:{line:753,column:9}},line:698},"67":{name:"(anonymous_67)",decl:{start:{line:700,column:37},end:{line:700,column:38}},loc:{start:{line:700,column:51},end:{line:752,column:13}},line:700},"68":{name:"(anonymous_68)",decl:{start:{line:761,column:43},end:{line:761,column:44}},loc:{start:{line:761,column:120},end:{line:819,column:5}},line:761},"69":{name:"(anonymous_69)",decl:{start:{line:763,column:47},end:{line:763,column:48}},loc:{start:{line:763,column:59},end:{line:818,column:9}},line:763},"70":{name:"(anonymous_70)",decl:{start:{line:766,column:37},end:{line:766,column:38}},loc:{start:{line:766,column:51},end:{line:817,column:13}},line:766},"71":{name:"(anonymous_71)",decl:{start:{line:786,column:50},end:{line:786,column:51}},loc:{start:{line:786,column:77},end:{line:816,column:25}},line:786},"72":{name:"(anonymous_72)",decl:{start:{line:786,column:119},end:{line:786,column:120}},loc:{start:{line:786,column:131},end:{line:816,column:21}},line:786},"73":{name:"(anonymous_73)",decl:{start:{line:788,column:49},end:{line:788,column:50}},loc:{start:{line:788,column:63},end:{line:815,column:25}},line:788},"74":{name:"(anonymous_74)",decl:{start:{line:826,column:40},end:{line:826,column:41}},loc:{start:{line:826,column:128},end:{line:889,column:5}},line:826},"75":{name:"(anonymous_75)",decl:{start:{line:828,column:47},end:{line:828,column:48}},loc:{start:{line:828,column:59},end:{line:888,column:9}},line:828},"76":{name:"(anonymous_76)",decl:{start:{line:831,column:37},end:{line:831,column:38}},loc:{start:{line:831,column:51},end:{line:887,column:13}},line:831},"77":{name:"(anonymous_77)",decl:{start:{line:855,column:50},end:{line:855,column:51}},loc:{start:{line:855,column:77},end:{line:886,column:25}},line:855},"78":{name:"(anonymous_78)",decl:{start:{line:855,column:119},end:{line:855,column:120}},loc:{start:{line:855,column:131},end:{line:886,column:21}},line:855},"79":{name:"(anonymous_79)",decl:{start:{line:857,column:49},end:{line:857,column:50}},loc:{start:{line:857,column:63},end:{line:885,column:25}},line:857},"80":{name:"(anonymous_80)",decl:{start:{line:897,column:39},end:{line:897,column:40}},loc:{start:{line:897,column:109},end:{line:963,column:5}},line:897},"81":{name:"(anonymous_81)",decl:{start:{line:899,column:47},end:{line:899,column:48}},loc:{start:{line:899,column:59},end:{line:962,column:9}},line:899},"82":{name:"(anonymous_82)",decl:{start:{line:902,column:37},end:{line:902,column:38}},loc:{start:{line:902,column:51},end:{line:961,column:13}},line:902},"83":{name:"(anonymous_83)",decl:{start:{line:929,column:50},end:{line:929,column:51}},loc:{start:{line:929,column:77},end:{line:960,column:25}},line:929},"84":{name:"(anonymous_84)",decl:{start:{line:929,column:119},end:{line:929,column:120}},loc:{start:{line:929,column:131},end:{line:960,column:21}},line:929},"85":{name:"(anonymous_85)",decl:{start:{line:931,column:49},end:{line:931,column:50}},loc:{start:{line:931,column:63},end:{line:959,column:25}},line:931},"86":{name:"(anonymous_86)",decl:{start:{line:971,column:36},end:{line:971,column:37}},loc:{start:{line:971,column:113},end:{line:1031,column:5}},line:971},"87":{name:"(anonymous_87)",decl:{start:{line:973,column:47},end:{line:973,column:48}},loc:{start:{line:973,column:59},end:{line:1030,column:9}},line:973},"88":{name:"(anonymous_88)",decl:{start:{line:976,column:37},end:{line:976,column:38}},loc:{start:{line:976,column:51},end:{line:1029,column:13}},line:976},"89":{name:"(anonymous_89)",decl:{start:{line:998,column:50},end:{line:998,column:51}},loc:{start:{line:998,column:77},end:{line:1028,column:25}},line:998},"90":{name:"(anonymous_90)",decl:{start:{line:998,column:119},end:{line:998,column:120}},loc:{start:{line:998,column:131},end:{line:1028,column:21}},line:998},"91":{name:"(anonymous_91)",decl:{start:{line:1000,column:49},end:{line:1000,column:50}},loc:{start:{line:1000,column:63},end:{line:1027,column:25}},line:1000},"92":{name:"(anonymous_92)",decl:{start:{line:1036,column:41},end:{line:1036,column:42}},loc:{start:{line:1036,column:62},end:{line:1093,column:5}},line:1036},"93":{name:"(anonymous_93)",decl:{start:{line:1037,column:47},end:{line:1037,column:48}},loc:{start:{line:1037,column:59},end:{line:1092,column:9}},line:1037},"94":{name:"(anonymous_94)",decl:{start:{line:1040,column:37},end:{line:1040,column:38}},loc:{start:{line:1040,column:51},end:{line:1091,column:13}},line:1040},"95":{name:"(anonymous_95)",decl:{start:{line:1059,column:50},end:{line:1059,column:51}},loc:{start:{line:1059,column:77},end:{line:1090,column:25}},line:1059},"96":{name:"(anonymous_96)",decl:{start:{line:1059,column:119},end:{line:1059,column:120}},loc:{start:{line:1059,column:131},end:{line:1090,column:21}},line:1059},"97":{name:"(anonymous_97)",decl:{start:{line:1061,column:49},end:{line:1061,column:50}},loc:{start:{line:1061,column:63},end:{line:1089,column:25}},line:1061},"98":{name:"(anonymous_98)",decl:{start:{line:1100,column:53},end:{line:1100,column:54}},loc:{start:{line:1100,column:145},end:{line:1154,column:5}},line:1100},"99":{name:"(anonymous_99)",decl:{start:{line:1102,column:47},end:{line:1102,column:48}},loc:{start:{line:1102,column:59},end:{line:1153,column:9}},line:1102},"100":{name:"(anonymous_100)",decl:{start:{line:1104,column:37},end:{line:1104,column:38}},loc:{start:{line:1104,column:51},end:{line:1152,column:13}},line:1104},"101":{name:"(anonymous_101)",decl:{start:{line:1158,column:40},end:{line:1158,column:41}},loc:{start:{line:1158,column:120},end:{line:1219,column:5}},line:1158},"102":{name:"(anonymous_102)",decl:{start:{line:1160,column:47},end:{line:1160,column:48}},loc:{start:{line:1160,column:59},end:{line:1218,column:9}},line:1160},"103":{name:"(anonymous_103)",decl:{start:{line:1163,column:37},end:{line:1163,column:38}},loc:{start:{line:1163,column:51},end:{line:1217,column:13}},line:1163},"104":{name:"(anonymous_104)",decl:{start:{line:1185,column:50},end:{line:1185,column:51}},loc:{start:{line:1185,column:77},end:{line:1216,column:25}},line:1185},"105":{name:"(anonymous_105)",decl:{start:{line:1185,column:119},end:{line:1185,column:120}},loc:{start:{line:1185,column:131},end:{line:1216,column:21}},line:1185},"106":{name:"(anonymous_106)",decl:{start:{line:1187,column:49},end:{line:1187,column:50}},loc:{start:{line:1187,column:63},end:{line:1215,column:25}},line:1187}},branchMap:{"0":{loc:{start:{line:2,column:15},end:{line:12,column:1}},type:"binary-expr",locations:[{start:{line:2,column:16},end:{line:2,column:20}},{start:{line:2,column:24},end:{line:2,column:37}},{start:{line:2,column:42},end:{line:12,column:1}}],line:2},"1":{loc:{start:{line:3,column:15},end:{line:10,column:5}},type:"binary-expr",locations:[{start:{line:3,column:15},end:{line:3,column:28}},{start:{line:3,column:32},end:{line:10,column:5}}],line:3},"2":{loc:{start:{line:6,column:29},end:{line:7,column:28}},type:"if",locations:[{start:{line:6,column:29},end:{line:7,column:28}},{start:{line:6,column:29},end:{line:7,column:28}}],line:6},"3":{loc:{start:{line:13,column:16},end:{line:21,column:1}},type:"binary-expr",locations:[{start:{line:13,column:17},end:{line:13,column:21}},{start:{line:13,column:25},end:{line:13,column:39}},{start:{line:13,column:44},end:{line:21,column:1}}],line:13},"4":{loc:{start:{line:14,column:35},end:{line:14,column:109}},type:"cond-expr",locations:[{start:{line:14,column:56},end:{line:14,column:61}},{start:{line:14,column:64},end:{line:14,column:109}}],line:14},"5":{loc:{start:{line:15,column:16},end:{line:15,column:34}},type:"binary-expr",locations:[{start:{line:15,column:16},end:{line:15,column:17}},{start:{line:15,column:22},end:{line:15,column:33}}],line:15},"6":{loc:{start:{line:18,column:32},end:{line:18,column:115}},type:"cond-expr",locations:[{start:{line:18,column:46},end:{line:18,column:67}},{start:{line:18,column:70},end:{line:18,column:115}}],line:18},"7":{loc:{start:{line:19,column:51},end:{line:19,column:67}},type:"binary-expr",locations:[{start:{line:19,column:51},end:{line:19,column:61}},{start:{line:19,column:65},end:{line:19,column:67}}],line:19},"8":{loc:{start:{line:22,column:18},end:{line:48,column:1}},type:"binary-expr",locations:[{start:{line:22,column:19},end:{line:22,column:23}},{start:{line:22,column:27},end:{line:22,column:43}},{start:{line:22,column:48},end:{line:48,column:1}}],line:22},"9":{loc:{start:{line:23,column:43},end:{line:23,column:68}},type:"if",locations:[{start:{line:23,column:43},end:{line:23,column:68}},{start:{line:23,column:43},end:{line:23,column:68}}],line:23},"10":{loc:{start:{line:24,column:71},end:{line:24,column:153}},type:"binary-expr",locations:[{start:{line:24,column:71},end:{line:24,column:99}},{start:{line:24,column:104},end:{line:24,column:152}}],line:24},"11":{loc:{start:{line:27,column:8},end:{line:27,column:70}},type:"if",locations:[{start:{line:27,column:8},end:{line:27,column:70}},{start:{line:27,column:8},end:{line:27,column:70}}],line:27},"12":{loc:{start:{line:29,column:12},end:{line:29,column:169}},type:"if",locations:[{start:{line:29,column:12},end:{line:29,column:169}},{start:{line:29,column:12},end:{line:29,column:169}}],line:29},"13":{loc:{start:{line:29,column:23},end:{line:29,column:158}},type:"binary-expr",locations:[{start:{line:29,column:23},end:{line:29,column:24}},{start:{line:29,column:29},end:{line:29,column:125}},{start:{line:29,column:130},end:{line:29,column:158}}],line:29},"14":{loc:{start:{line:29,column:33},end:{line:29,column:125}},type:"cond-expr",locations:[{start:{line:29,column:45},end:{line:29,column:56}},{start:{line:29,column:59},end:{line:29,column:125}}],line:29},"15":{loc:{start:{line:29,column:59},end:{line:29,column:125}},type:"cond-expr",locations:[{start:{line:29,column:67},end:{line:29,column:116}},{start:{line:29,column:119},end:{line:29,column:125}}],line:29},"16":{loc:{start:{line:29,column:67},end:{line:29,column:116}},type:"binary-expr",locations:[{start:{line:29,column:67},end:{line:29,column:77}},{start:{line:29,column:82},end:{line:29,column:115}}],line:29},"17":{loc:{start:{line:29,column:82},end:{line:29,column:112}},type:"binary-expr",locations:[{start:{line:29,column:83},end:{line:29,column:98}},{start:{line:29,column:103},end:{line:29,column:112}}],line:29},"18":{loc:{start:{line:30,column:12},end:{line:30,column:52}},type:"if",locations:[{start:{line:30,column:12},end:{line:30,column:52}},{start:{line:30,column:12},end:{line:30,column:52}}],line:30},"19":{loc:{start:{line:31,column:12},end:{line:43,column:13}},type:"switch",locations:[{start:{line:32,column:16},end:{line:32,column:23}},{start:{line:32,column:24},end:{line:32,column:46}},{start:{line:33,column:16},end:{line:33,column:72}},{start:{line:34,column:16},end:{line:34,column:65}},{start:{line:35,column:16},end:{line:35,column:65}},{start:{line:36,column:16},end:{line:42,column:43}}],line:31},"20":{loc:{start:{line:37,column:20},end:{line:37,column:128}},type:"if",locations:[{start:{line:37,column:20},end:{line:37,column:128}},{start:{line:37,column:20},end:{line:37,column:128}}],line:37},"21":{loc:{start:{line:37,column:24},end:{line:37,column:106}},type:"binary-expr",locations:[{start:{line:37,column:24},end:{line:37,column:74}},{start:{line:37,column:79},end:{line:37,column:90}},{start:{line:37,column:94},end:{line:37,column:105}}],line:37},"22":{loc:{start:{line:37,column:42},end:{line:37,column:73}},type:"binary-expr",locations:[{start:{line:37,column:42},end:{line:37,column:54}},{start:{line:37,column:58},end:{line:37,column:73}}],line:37},"23":{loc:{start:{line:38,column:20},end:{line:38,column:106}},type:"if",locations:[{start:{line:38,column:20},end:{line:38,column:106}},{start:{line:38,column:20},end:{line:38,column:106}}],line:38},"24":{loc:{start:{line:38,column:24},end:{line:38,column:77}},type:"binary-expr",locations:[{start:{line:38,column:24},end:{line:38,column:35}},{start:{line:38,column:40},end:{line:38,column:42}},{start:{line:38,column:47},end:{line:38,column:59}},{start:{line:38,column:63},end:{line:38,column:75}}],line:38},"25":{loc:{start:{line:39,column:20},end:{line:39,column:89}},type:"if",locations:[{start:{line:39,column:20},end:{line:39,column:89}},{start:{line:39,column:20},end:{line:39,column:89}}],line:39},"26":{loc:{start:{line:39,column:24},end:{line:39,column:53}},type:"binary-expr",locations:[{start:{line:39,column:24},end:{line:39,column:35}},{start:{line:39,column:39},end:{line:39,column:53}}],line:39},"27":{loc:{start:{line:40,column:20},end:{line:40,column:87}},type:"if",locations:[{start:{line:40,column:20},end:{line:40,column:87}},{start:{line:40,column:20},end:{line:40,column:87}}],line:40},"28":{loc:{start:{line:40,column:24},end:{line:40,column:43}},type:"binary-expr",locations:[{start:{line:40,column:24},end:{line:40,column:25}},{start:{line:40,column:29},end:{line:40,column:43}}],line:40},"29":{loc:{start:{line:41,column:20},end:{line:41,column:42}},type:"if",locations:[{start:{line:41,column:20},end:{line:41,column:42}},{start:{line:41,column:20},end:{line:41,column:42}}],line:41},"30":{loc:{start:{line:46,column:8},end:{line:46,column:35}},type:"if",locations:[{start:{line:46,column:8},end:{line:46,column:35}},{start:{line:46,column:8},end:{line:46,column:35}}],line:46},"31":{loc:{start:{line:46,column:52},end:{line:46,column:74}},type:"cond-expr",locations:[{start:{line:46,column:60},end:{line:46,column:65}},{start:{line:46,column:68},end:{line:46,column:74}}],line:46},"32":{loc:{start:{line:67,column:8},end:{line:67,column:83}},type:"if",locations:[{start:{line:67,column:8},end:{line:67,column:83}},{start:{line:67,column:8},end:{line:67,column:83}}],line:67},"33":{loc:{start:{line:72,column:8},end:{line:74,column:9}},type:"if",locations:[{start:{line:72,column:8},end:{line:74,column:9}},{start:{line:72,column:8},end:{line:74,column:9}}],line:72},"34":{loc:{start:{line:72,column:12},end:{line:72,column:90}},type:"binary-expr",locations:[{start:{line:72,column:12},end:{line:72,column:51}},{start:{line:72,column:55},end:{line:72,column:90}}],line:72},"35":{loc:{start:{line:78,column:12},end:{line:80,column:13}},type:"if",locations:[{start:{line:78,column:12},end:{line:80,column:13}},{start:{line:78,column:12},end:{line:80,column:13}}],line:78},"36":{loc:{start:{line:84,column:8},end:{line:86,column:9}},type:"if",locations:[{start:{line:84,column:8},end:{line:86,column:9}},{start:{line:84,column:8},end:{line:86,column:9}}],line:84},"37":{loc:{start:{line:91,column:12},end:{line:93,column:13}},type:"if",locations:[{start:{line:91,column:12},end:{line:93,column:13}},{start:{line:91,column:12},end:{line:93,column:13}}],line:91},"38":{loc:{start:{line:102,column:8},end:{line:102,column:60}},type:"if",locations:[{start:{line:102,column:8},end:{line:102,column:60}},{start:{line:102,column:8},end:{line:102,column:60}}],line:102},"39":{loc:{start:{line:106,column:16},end:{line:140,column:17}},type:"switch",locations:[{start:{line:107,column:20},end:{line:124,column:32}},{start:{line:125,column:20},end:{line:139,column:52}}],line:106},"40":{loc:{start:{line:109,column:24},end:{line:111,column:25}},type:"if",locations:[{start:{line:109,column:24},end:{line:111,column:25}},{start:{line:109,column:24},end:{line:111,column:25}}],line:109},"41":{loc:{start:{line:112,column:24},end:{line:114,column:25}},type:"if",locations:[{start:{line:112,column:24},end:{line:114,column:25}},{start:{line:112,column:24},end:{line:114,column:25}}],line:112},"42":{loc:{start:{line:119,column:24},end:{line:121,column:25}},type:"if",locations:[{start:{line:119,column:24},end:{line:121,column:25}},{start:{line:119,column:24},end:{line:121,column:25}}],line:119},"43":{loc:{start:{line:129,column:24},end:{line:131,column:25}},type:"if",locations:[{start:{line:129,column:24},end:{line:131,column:25}},{start:{line:129,column:24},end:{line:131,column:25}}],line:129},"44":{loc:{start:{line:129,column:28},end:{line:129,column:103}},type:"binary-expr",locations:[{start:{line:129,column:28},end:{line:129,column:48}},{start:{line:129,column:52},end:{line:129,column:103}}],line:129},"45":{loc:{start:{line:133,column:24},end:{line:135,column:25}},type:"if",locations:[{start:{line:133,column:24},end:{line:135,column:25}},{start:{line:133,column:24},end:{line:135,column:25}}],line:133},"46":{loc:{start:{line:133,column:28},end:{line:133,column:72}},type:"binary-expr",locations:[{start:{line:133,column:28},end:{line:133,column:44}},{start:{line:133,column:48},end:{line:133,column:72}}],line:133},"47":{loc:{start:{line:136,column:24},end:{line:138,column:25}},type:"if",locations:[{start:{line:136,column:24},end:{line:138,column:25}},{start:{line:136,column:24},end:{line:138,column:25}}],line:136},"48":{loc:{start:{line:150,column:8},end:{line:150,column:89}},type:"if",locations:[{start:{line:150,column:8},end:{line:150,column:89}},{start:{line:150,column:8},end:{line:150,column:89}}],line:150},"49":{loc:{start:{line:156,column:16},end:{line:158,column:17}},type:"if",locations:[{start:{line:156,column:16},end:{line:158,column:17}},{start:{line:156,column:16},end:{line:158,column:17}}],line:156},"50":{loc:{start:{line:159,column:16},end:{line:161,column:17}},type:"if",locations:[{start:{line:159,column:16},end:{line:161,column:17}},{start:{line:159,column:16},end:{line:161,column:17}}],line:159},"51":{loc:{start:{line:168,column:16},end:{line:171,column:17}},type:"if",locations:[{start:{line:168,column:16},end:{line:171,column:17}},{start:{line:168,column:16},end:{line:171,column:17}}],line:168},"52":{loc:{start:{line:173,column:16},end:{line:175,column:17}},type:"if",locations:[{start:{line:173,column:16},end:{line:175,column:17}},{start:{line:173,column:16},end:{line:175,column:17}}],line:173},"53":{loc:{start:{line:185,column:28},end:{line:211,column:29}},type:"switch",locations:[{start:{line:186,column:32},end:{line:188,column:81}},{start:{line:189,column:32},end:{line:197,column:60}},{start:{line:198,column:32},end:{line:202,column:133}},{start:{line:203,column:32},end:{line:206,column:49}},{start:{line:207,column:32},end:{line:209,column:60}},{start:{line:210,column:32},end:{line:210,column:62}}],line:185},"54":{loc:{start:{line:193,column:36},end:{line:195,column:37}},type:"if",locations:[{start:{line:193,column:36},end:{line:195,column:37}},{start:{line:193,column:36},end:{line:195,column:37}}],line:193},"55":{loc:{start:{line:201,column:36},end:{line:201,column:78}},type:"if",locations:[{start:{line:201,column:36},end:{line:201,column:78}},{start:{line:201,column:36},end:{line:201,column:78}}],line:201},"56":{loc:{start:{line:223,column:8},end:{line:223,column:87}},type:"if",locations:[{start:{line:223,column:8},end:{line:223,column:87}},{start:{line:223,column:8},end:{line:223,column:87}}],line:223},"57":{loc:{start:{line:224,column:8},end:{line:224,column:68}},type:"if",locations:[{start:{line:224,column:8},end:{line:224,column:68}},{start:{line:224,column:8},end:{line:224,column:68}}],line:224},"58":{loc:{start:{line:231,column:16},end:{line:233,column:17}},type:"if",locations:[{start:{line:231,column:16},end:{line:233,column:17}},{start:{line:231,column:16},end:{line:233,column:17}}],line:231},"59":{loc:{start:{line:234,column:16},end:{line:236,column:17}},type:"if",locations:[{start:{line:234,column:16},end:{line:236,column:17}},{start:{line:234,column:16},end:{line:236,column:17}}],line:234},"60":{loc:{start:{line:237,column:16},end:{line:239,column:17}},type:"if",locations:[{start:{line:237,column:16},end:{line:239,column:17}},{start:{line:237,column:16},end:{line:239,column:17}}],line:237},"61":{loc:{start:{line:242,column:16},end:{line:254,column:17}},type:"if",locations:[{start:{line:242,column:16},end:{line:254,column:17}},{start:{line:242,column:16},end:{line:254,column:17}}],line:242},"62":{loc:{start:{line:242,column:20},end:{line:242,column:156}},type:"binary-expr",locations:[{start:{line:242,column:20},end:{line:242,column:71}},{start:{line:242,column:76},end:{line:242,column:98}},{start:{line:242,column:102},end:{line:242,column:155}}],line:242},"63":{loc:{start:{line:244,column:20},end:{line:247,column:21}},type:"if",locations:[{start:{line:244,column:20},end:{line:247,column:21}},{start:{line:244,column:20},end:{line:247,column:21}}],line:244},"64":{loc:{start:{line:250,column:20},end:{line:253,column:21}},type:"if",locations:[{start:{line:250,column:20},end:{line:253,column:21}},{start:{line:250,column:20},end:{line:253,column:21}}],line:250},"65":{loc:{start:{line:255,column:16},end:{line:257,column:17}},type:"if",locations:[{start:{line:255,column:16},end:{line:257,column:17}},{start:{line:255,column:16},end:{line:257,column:17}}],line:255},"66":{loc:{start:{line:270,column:28},end:{line:316,column:29}},type:"switch",locations:[{start:{line:271,column:32},end:{line:273,column:81}},{start:{line:274,column:32},end:{line:292,column:60}},{start:{line:293,column:32},end:{line:297,column:133}},{start:{line:298,column:32},end:{line:301,column:49}},{start:{line:302,column:32},end:{line:304,column:58}},{start:{line:305,column:32},end:{line:315,column:58}}],line:270},"67":{loc:{start:{line:279,column:36},end:{line:286,column:37}},type:"if",locations:[{start:{line:279,column:36},end:{line:286,column:37}},{start:{line:279,column:36},end:{line:286,column:37}}],line:279},"68":{loc:{start:{line:281,column:40},end:{line:283,column:41}},type:"if",locations:[{start:{line:281,column:40},end:{line:283,column:41}},{start:{line:281,column:40},end:{line:283,column:41}}],line:281},"69":{loc:{start:{line:288,column:36},end:{line:291,column:37}},type:"if",locations:[{start:{line:288,column:36},end:{line:291,column:37}},{start:{line:288,column:36},end:{line:291,column:37}}],line:288},"70":{loc:{start:{line:288,column:40},end:{line:288,column:114}},type:"binary-expr",locations:[{start:{line:288,column:40},end:{line:288,column:51}},{start:{line:288,column:55},end:{line:288,column:114}}],line:288},"71":{loc:{start:{line:296,column:36},end:{line:296,column:78}},type:"if",locations:[{start:{line:296,column:36},end:{line:296,column:78}},{start:{line:296,column:36},end:{line:296,column:78}}],line:296},"72":{loc:{start:{line:307,column:36},end:{line:310,column:37}},type:"if",locations:[{start:{line:307,column:36},end:{line:310,column:37}},{start:{line:307,column:36},end:{line:310,column:37}}],line:307},"73":{loc:{start:{line:333,column:16},end:{line:335,column:17}},type:"if",locations:[{start:{line:333,column:16},end:{line:335,column:17}},{start:{line:333,column:16},end:{line:335,column:17}}],line:333},"74":{loc:{start:{line:348,column:28},end:{line:380,column:29}},type:"switch",locations:[{start:{line:349,column:32},end:{line:351,column:81}},{start:{line:352,column:32},end:{line:366,column:58}},{start:{line:367,column:32},end:{line:371,column:133}},{start:{line:372,column:32},end:{line:375,column:49}},{start:{line:376,column:32},end:{line:378,column:58}},{start:{line:379,column:32},end:{line:379,column:62}}],line:348},"75":{loc:{start:{line:357,column:36},end:{line:363,column:37}},type:"if",locations:[{start:{line:357,column:36},end:{line:363,column:37}},{start:{line:357,column:36},end:{line:363,column:37}}],line:357},"76":{loc:{start:{line:358,column:40},end:{line:360,column:41}},type:"if",locations:[{start:{line:358,column:40},end:{line:360,column:41}},{start:{line:358,column:40},end:{line:360,column:41}}],line:358},"77":{loc:{start:{line:370,column:36},end:{line:370,column:78}},type:"if",locations:[{start:{line:370,column:36},end:{line:370,column:78}},{start:{line:370,column:36},end:{line:370,column:78}}],line:370},"78":{loc:{start:{line:396,column:16},end:{line:398,column:17}},type:"if",locations:[{start:{line:396,column:16},end:{line:398,column:17}},{start:{line:396,column:16},end:{line:398,column:17}}],line:396},"79":{loc:{start:{line:410,column:28},end:{line:444,column:29}},type:"switch",locations:[{start:{line:411,column:32},end:{line:413,column:81}},{start:{line:414,column:32},end:{line:430,column:58}},{start:{line:431,column:32},end:{line:435,column:133}},{start:{line:436,column:32},end:{line:439,column:49}},{start:{line:440,column:32},end:{line:442,column:58}},{start:{line:443,column:32},end:{line:443,column:62}}],line:410},"80":{loc:{start:{line:418,column:36},end:{line:424,column:37}},type:"if",locations:[{start:{line:418,column:36},end:{line:424,column:37}},{start:{line:418,column:36},end:{line:424,column:37}}],line:418},"81":{loc:{start:{line:419,column:40},end:{line:421,column:41}},type:"if",locations:[{start:{line:419,column:40},end:{line:421,column:41}},{start:{line:419,column:40},end:{line:421,column:41}}],line:419},"82":{loc:{start:{line:426,column:36},end:{line:428,column:37}},type:"if",locations:[{start:{line:426,column:36},end:{line:428,column:37}},{start:{line:426,column:36},end:{line:428,column:37}}],line:426},"83":{loc:{start:{line:434,column:36},end:{line:434,column:78}},type:"if",locations:[{start:{line:434,column:36},end:{line:434,column:78}},{start:{line:434,column:36},end:{line:434,column:78}}],line:434},"84":{loc:{start:{line:456,column:8},end:{line:456,column:97}},type:"if",locations:[{start:{line:456,column:8},end:{line:456,column:97}},{start:{line:456,column:8},end:{line:456,column:97}}],line:456},"85":{loc:{start:{line:462,column:16},end:{line:464,column:17}},type:"if",locations:[{start:{line:462,column:16},end:{line:464,column:17}},{start:{line:462,column:16},end:{line:464,column:17}}],line:462},"86":{loc:{start:{line:470,column:16},end:{line:472,column:17}},type:"if",locations:[{start:{line:470,column:16},end:{line:472,column:17}},{start:{line:470,column:16},end:{line:472,column:17}}],line:470},"87":{loc:{start:{line:473,column:23},end:{line:473,column:40}},type:"binary-expr",locations:[{start:{line:473,column:23},end:{line:473,column:34}},{start:{line:473,column:38},end:{line:473,column:40}}],line:473},"88":{loc:{start:{line:474,column:16},end:{line:476,column:17}},type:"if",locations:[{start:{line:474,column:16},end:{line:476,column:17}},{start:{line:474,column:16},end:{line:476,column:17}}],line:474},"89":{loc:{start:{line:474,column:20},end:{line:474,column:50}},type:"binary-expr",locations:[{start:{line:474,column:20},end:{line:474,column:30}},{start:{line:474,column:34},end:{line:474,column:50}}],line:474},"90":{loc:{start:{line:477,column:16},end:{line:482,column:17}},type:"if",locations:[{start:{line:477,column:16},end:{line:482,column:17}},{start:{line:477,column:16},end:{line:482,column:17}}],line:477},"91":{loc:{start:{line:483,column:16},end:{line:485,column:17}},type:"if",locations:[{start:{line:483,column:16},end:{line:485,column:17}},{start:{line:483,column:16},end:{line:485,column:17}}],line:483},"92":{loc:{start:{line:487,column:16},end:{line:489,column:17}},type:"if",locations:[{start:{line:487,column:16},end:{line:489,column:17}},{start:{line:487,column:16},end:{line:489,column:17}}],line:487},"93":{loc:{start:{line:487,column:20},end:{line:487,column:92}},type:"binary-expr",locations:[{start:{line:487,column:20},end:{line:487,column:31}},{start:{line:487,column:35},end:{line:487,column:92}}],line:487},"94":{loc:{start:{line:499,column:28},end:{line:527,column:29}},type:"switch",locations:[{start:{line:500,column:32},end:{line:502,column:81}},{start:{line:503,column:32},end:{line:513,column:60}},{start:{line:514,column:32},end:{line:518,column:133}},{start:{line:519,column:32},end:{line:522,column:49}},{start:{line:523,column:32},end:{line:525,column:60}},{start:{line:526,column:32},end:{line:526,column:62}}],line:499},"95":{loc:{start:{line:507,column:36},end:{line:512,column:37}},type:"if",locations:[{start:{line:507,column:36},end:{line:512,column:37}},{start:{line:507,column:36},end:{line:512,column:37}}],line:507},"96":{loc:{start:{line:508,column:40},end:{line:510,column:41}},type:"if",locations:[{start:{line:508,column:40},end:{line:510,column:41}},{start:{line:508,column:40},end:{line:510,column:41}}],line:508},"97":{loc:{start:{line:517,column:36},end:{line:517,column:78}},type:"if",locations:[{start:{line:517,column:36},end:{line:517,column:78}},{start:{line:517,column:36},end:{line:517,column:78}}],line:517},"98":{loc:{start:{line:539,column:8},end:{line:539,column:85}},type:"if",locations:[{start:{line:539,column:8},end:{line:539,column:85}},{start:{line:539,column:8},end:{line:539,column:85}}],line:539},"99":{loc:{start:{line:545,column:16},end:{line:547,column:17}},type:"if",locations:[{start:{line:545,column:16},end:{line:547,column:17}},{start:{line:545,column:16},end:{line:547,column:17}}],line:545},"100":{loc:{start:{line:553,column:16},end:{line:556,column:17}},type:"if",locations:[{start:{line:553,column:16},end:{line:556,column:17}},{start:{line:553,column:16},end:{line:556,column:17}}],line:553},"101":{loc:{start:{line:557,column:16},end:{line:559,column:17}},type:"if",locations:[{start:{line:557,column:16},end:{line:559,column:17}},{start:{line:557,column:16},end:{line:559,column:17}}],line:557},"102":{loc:{start:{line:561,column:23},end:{line:561,column:40}},type:"binary-expr",locations:[{start:{line:561,column:23},end:{line:561,column:34}},{start:{line:561,column:38},end:{line:561,column:40}}],line:561},"103":{loc:{start:{line:562,column:16},end:{line:564,column:17}},type:"if",locations:[{start:{line:562,column:16},end:{line:564,column:17}},{start:{line:562,column:16},end:{line:564,column:17}}],line:562},"104":{loc:{start:{line:562,column:20},end:{line:562,column:50}},type:"binary-expr",locations:[{start:{line:562,column:20},end:{line:562,column:30}},{start:{line:562,column:34},end:{line:562,column:50}}],line:562},"105":{loc:{start:{line:565,column:16},end:{line:570,column:17}},type:"if",locations:[{start:{line:565,column:16},end:{line:570,column:17}},{start:{line:565,column:16},end:{line:570,column:17}}],line:565},"106":{loc:{start:{line:572,column:16},end:{line:574,column:17}},type:"if",locations:[{start:{line:572,column:16},end:{line:574,column:17}},{start:{line:572,column:16},end:{line:574,column:17}}],line:572},"107":{loc:{start:{line:576,column:16},end:{line:578,column:17}},type:"if",locations:[{start:{line:576,column:16},end:{line:578,column:17}},{start:{line:576,column:16},end:{line:578,column:17}}],line:576},"108":{loc:{start:{line:576,column:20},end:{line:576,column:92}},type:"binary-expr",locations:[{start:{line:576,column:20},end:{line:576,column:31}},{start:{line:576,column:35},end:{line:576,column:92}}],line:576},"109":{loc:{start:{line:588,column:28},end:{line:613,column:29}},type:"switch",locations:[{start:{line:589,column:32},end:{line:591,column:81}},{start:{line:592,column:32},end:{line:599,column:60}},{start:{line:600,column:32},end:{line:604,column:133}},{start:{line:605,column:32},end:{line:608,column:49}},{start:{line:609,column:32},end:{line:611,column:60}},{start:{line:612,column:32},end:{line:612,column:62}}],line:588},"110":{loc:{start:{line:595,column:36},end:{line:597,column:37}},type:"if",locations:[{start:{line:595,column:36},end:{line:597,column:37}},{start:{line:595,column:36},end:{line:597,column:37}}],line:595},"111":{loc:{start:{line:603,column:36},end:{line:603,column:78}},type:"if",locations:[{start:{line:603,column:36},end:{line:603,column:78}},{start:{line:603,column:36},end:{line:603,column:78}}],line:603},"112":{loc:{start:{line:625,column:8},end:{line:625,column:87}},type:"if",locations:[{start:{line:625,column:8},end:{line:625,column:87}},{start:{line:625,column:8},end:{line:625,column:87}}],line:625},"113":{loc:{start:{line:631,column:16},end:{line:633,column:17}},type:"if",locations:[{start:{line:631,column:16},end:{line:633,column:17}},{start:{line:631,column:16},end:{line:633,column:17}}],line:631},"114":{loc:{start:{line:641,column:16},end:{line:644,column:17}},type:"if",locations:[{start:{line:641,column:16},end:{line:644,column:17}},{start:{line:641,column:16},end:{line:644,column:17}}],line:641},"115":{loc:{start:{line:645,column:16},end:{line:647,column:17}},type:"if",locations:[{start:{line:645,column:16},end:{line:647,column:17}},{start:{line:645,column:16},end:{line:647,column:17}}],line:645},"116":{loc:{start:{line:648,column:16},end:{line:650,column:17}},type:"if",locations:[{start:{line:648,column:16},end:{line:650,column:17}},{start:{line:648,column:16},end:{line:650,column:17}}],line:648},"117":{loc:{start:{line:660,column:28},end:{line:685,column:29}},type:"switch",locations:[{start:{line:661,column:32},end:{line:663,column:81}},{start:{line:664,column:32},end:{line:671,column:60}},{start:{line:672,column:32},end:{line:676,column:133}},{start:{line:677,column:32},end:{line:680,column:49}},{start:{line:681,column:32},end:{line:683,column:60}},{start:{line:684,column:32},end:{line:684,column:62}}],line:660},"118":{loc:{start:{line:667,column:36},end:{line:669,column:37}},type:"if",locations:[{start:{line:667,column:36},end:{line:669,column:37}},{start:{line:667,column:36},end:{line:669,column:37}}],line:667},"119":{loc:{start:{line:675,column:36},end:{line:675,column:78}},type:"if",locations:[{start:{line:675,column:36},end:{line:675,column:78}},{start:{line:675,column:36},end:{line:675,column:78}}],line:675},"120":{loc:{start:{line:701,column:16},end:{line:751,column:17}},type:"switch",locations:[{start:{line:702,column:20},end:{line:720,column:37}},{start:{line:721,column:20},end:{line:723,column:69}},{start:{line:724,column:20},end:{line:735,column:48}},{start:{line:736,column:20},end:{line:739,column:121}},{start:{line:740,column:20},end:{line:749,column:48}},{start:{line:750,column:20},end:{line:750,column:50}}],line:701},"121":{loc:{start:{line:704,column:24},end:{line:706,column:25}},type:"if",locations:[{start:{line:704,column:24},end:{line:706,column:25}},{start:{line:704,column:24},end:{line:706,column:25}}],line:704},"122":{loc:{start:{line:712,column:24},end:{line:714,column:25}},type:"if",locations:[{start:{line:712,column:24},end:{line:714,column:25}},{start:{line:712,column:24},end:{line:714,column:25}}],line:712},"123":{loc:{start:{line:727,column:24},end:{line:734,column:25}},type:"if",locations:[{start:{line:727,column:24},end:{line:734,column:25}},{start:{line:727,column:24},end:{line:734,column:25}}],line:727},"124":{loc:{start:{line:727,column:29},end:{line:727,column:103}},type:"cond-expr",locations:[{start:{line:727,column:78},end:{line:727,column:84}},{start:{line:727,column:87},end:{line:727,column:103}}],line:727},"125":{loc:{start:{line:727,column:29},end:{line:727,column:75}},type:"binary-expr",locations:[{start:{line:727,column:29},end:{line:727,column:58}},{start:{line:727,column:62},end:{line:727,column:75}}],line:727},"126":{loc:{start:{line:728,column:28},end:{line:728,column:377}},type:"cond-expr",locations:[{start:{line:728,column:75},end:{line:728,column:81}},{start:{line:728,column:84},end:{line:728,column:377}}],line:728},"127":{loc:{start:{line:728,column:28},end:{line:728,column:72}},type:"binary-expr",locations:[{start:{line:728,column:28},end:{line:728,column:55}},{start:{line:728,column:59},end:{line:728,column:72}}],line:728},"128":{loc:{start:{line:732,column:28},end:{line:732,column:449}},type:"cond-expr",locations:[{start:{line:732,column:75},end:{line:732,column:81}},{start:{line:732,column:84},end:{line:732,column:449}}],line:732},"129":{loc:{start:{line:732,column:28},end:{line:732,column:72}},type:"binary-expr",locations:[{start:{line:732,column:28},end:{line:732,column:55}},{start:{line:732,column:59},end:{line:732,column:72}}],line:732},"130":{loc:{start:{line:742,column:24},end:{line:742,column:314}},type:"cond-expr",locations:[{start:{line:742,column:71},end:{line:742,column:77}},{start:{line:742,column:80},end:{line:742,column:314}}],line:742},"131":{loc:{start:{line:742,column:24},end:{line:742,column:68}},type:"binary-expr",locations:[{start:{line:742,column:24},end:{line:742,column:51}},{start:{line:742,column:55},end:{line:742,column:68}}],line:742},"132":{loc:{start:{line:743,column:24},end:{line:748,column:25}},type:"if",locations:[{start:{line:743,column:24},end:{line:748,column:25}},{start:{line:743,column:24},end:{line:748,column:25}}],line:743},"133":{loc:{start:{line:762,column:8},end:{line:762,column:107}},type:"if",locations:[{start:{line:762,column:8},end:{line:762,column:107}},{start:{line:762,column:8},end:{line:762,column:107}}],line:762},"134":{loc:{start:{line:768,column:16},end:{line:770,column:17}},type:"if",locations:[{start:{line:768,column:16},end:{line:770,column:17}},{start:{line:768,column:16},end:{line:770,column:17}}],line:768},"135":{loc:{start:{line:776,column:16},end:{line:779,column:17}},type:"if",locations:[{start:{line:776,column:16},end:{line:779,column:17}},{start:{line:776,column:16},end:{line:779,column:17}}],line:776},"136":{loc:{start:{line:789,column:28},end:{line:814,column:29}},type:"switch",locations:[{start:{line:790,column:32},end:{line:792,column:81}},{start:{line:793,column:32},end:{line:800,column:60}},{start:{line:801,column:32},end:{line:805,column:133}},{start:{line:806,column:32},end:{line:809,column:49}},{start:{line:810,column:32},end:{line:812,column:60}},{start:{line:813,column:32},end:{line:813,column:62}}],line:789},"137":{loc:{start:{line:796,column:36},end:{line:798,column:37}},type:"if",locations:[{start:{line:796,column:36},end:{line:798,column:37}},{start:{line:796,column:36},end:{line:798,column:37}}],line:796},"138":{loc:{start:{line:804,column:36},end:{line:804,column:78}},type:"if",locations:[{start:{line:804,column:36},end:{line:804,column:78}},{start:{line:804,column:36},end:{line:804,column:78}}],line:804},"139":{loc:{start:{line:827,column:8},end:{line:827,column:101}},type:"if",locations:[{start:{line:827,column:8},end:{line:827,column:101}},{start:{line:827,column:8},end:{line:827,column:101}}],line:827},"140":{loc:{start:{line:833,column:16},end:{line:835,column:17}},type:"if",locations:[{start:{line:833,column:16},end:{line:835,column:17}},{start:{line:833,column:16},end:{line:835,column:17}}],line:833},"141":{loc:{start:{line:841,column:16},end:{line:845,column:17}},type:"if",locations:[{start:{line:841,column:16},end:{line:845,column:17}},{start:{line:841,column:16},end:{line:845,column:17}}],line:841},"142":{loc:{start:{line:846,column:16},end:{line:848,column:17}},type:"if",locations:[{start:{line:846,column:16},end:{line:848,column:17}},{start:{line:846,column:16},end:{line:848,column:17}}],line:846},"143":{loc:{start:{line:858,column:28},end:{line:884,column:29}},type:"switch",locations:[{start:{line:859,column:32},end:{line:861,column:81}},{start:{line:862,column:32},end:{line:870,column:60}},{start:{line:871,column:32},end:{line:875,column:134}},{start:{line:876,column:32},end:{line:879,column:49}},{start:{line:880,column:32},end:{line:882,column:60}},{start:{line:883,column:32},end:{line:883,column:62}}],line:858},"144":{loc:{start:{line:866,column:36},end:{line:868,column:37}},type:"if",locations:[{start:{line:866,column:36},end:{line:868,column:37}},{start:{line:866,column:36},end:{line:868,column:37}}],line:866},"145":{loc:{start:{line:874,column:36},end:{line:874,column:78}},type:"if",locations:[{start:{line:874,column:36},end:{line:874,column:78}},{start:{line:874,column:36},end:{line:874,column:78}}],line:874},"146":{loc:{start:{line:898,column:8},end:{line:898,column:99}},type:"if",locations:[{start:{line:898,column:8},end:{line:898,column:99}},{start:{line:898,column:8},end:{line:898,column:99}}],line:898},"147":{loc:{start:{line:904,column:16},end:{line:906,column:17}},type:"if",locations:[{start:{line:904,column:16},end:{line:906,column:17}},{start:{line:904,column:16},end:{line:906,column:17}}],line:904},"148":{loc:{start:{line:915,column:16},end:{line:923,column:17}},type:"if",locations:[{start:{line:915,column:16},end:{line:923,column:17}},{start:{line:915,column:16},end:{line:923,column:17}}],line:915},"149":{loc:{start:{line:915,column:20},end:{line:915,column:156}},type:"binary-expr",locations:[{start:{line:915,column:20},end:{line:915,column:71}},{start:{line:915,column:76},end:{line:915,column:98}},{start:{line:915,column:102},end:{line:915,column:155}}],line:915},"150":{loc:{start:{line:917,column:20},end:{line:919,column:21}},type:"if",locations:[{start:{line:917,column:20},end:{line:919,column:21}},{start:{line:917,column:20},end:{line:919,column:21}}],line:917},"151":{loc:{start:{line:921,column:21},end:{line:923,column:17}},type:"if",locations:[{start:{line:921,column:21},end:{line:923,column:17}},{start:{line:921,column:21},end:{line:923,column:17}}],line:921},"152":{loc:{start:{line:932,column:28},end:{line:958,column:29}},type:"switch",locations:[{start:{line:933,column:32},end:{line:935,column:81}},{start:{line:936,column:32},end:{line:944,column:60}},{start:{line:945,column:32},end:{line:949,column:134}},{start:{line:950,column:32},end:{line:953,column:49}},{start:{line:954,column:32},end:{line:956,column:60}},{start:{line:957,column:32},end:{line:957,column:62}}],line:932},"153":{loc:{start:{line:940,column:36},end:{line:942,column:37}},type:"if",locations:[{start:{line:940,column:36},end:{line:942,column:37}},{start:{line:940,column:36},end:{line:942,column:37}}],line:940},"154":{loc:{start:{line:948,column:36},end:{line:948,column:78}},type:"if",locations:[{start:{line:948,column:36},end:{line:948,column:78}},{start:{line:948,column:36},end:{line:948,column:78}}],line:948},"155":{loc:{start:{line:972,column:8},end:{line:972,column:93}},type:"if",locations:[{start:{line:972,column:8},end:{line:972,column:93}},{start:{line:972,column:8},end:{line:972,column:93}}],line:972},"156":{loc:{start:{line:978,column:16},end:{line:980,column:17}},type:"if",locations:[{start:{line:978,column:16},end:{line:980,column:17}},{start:{line:978,column:16},end:{line:980,column:17}}],line:978},"157":{loc:{start:{line:989,column:16},end:{line:991,column:17}},type:"if",locations:[{start:{line:989,column:16},end:{line:991,column:17}},{start:{line:989,column:16},end:{line:991,column:17}}],line:989},"158":{loc:{start:{line:1001,column:28},end:{line:1026,column:29}},type:"switch",locations:[{start:{line:1002,column:32},end:{line:1004,column:81}},{start:{line:1005,column:32},end:{line:1012,column:60}},{start:{line:1013,column:32},end:{line:1017,column:134}},{start:{line:1018,column:32},end:{line:1021,column:49}},{start:{line:1022,column:32},end:{line:1024,column:60}},{start:{line:1025,column:32},end:{line:1025,column:62}}],line:1001},"159":{loc:{start:{line:1008,column:36},end:{line:1010,column:37}},type:"if",locations:[{start:{line:1008,column:36},end:{line:1010,column:37}},{start:{line:1008,column:36},end:{line:1010,column:37}}],line:1008},"160":{loc:{start:{line:1016,column:36},end:{line:1016,column:78}},type:"if",locations:[{start:{line:1016,column:36},end:{line:1016,column:78}},{start:{line:1016,column:36},end:{line:1016,column:78}}],line:1016},"161":{loc:{start:{line:1042,column:16},end:{line:1044,column:17}},type:"if",locations:[{start:{line:1042,column:16},end:{line:1044,column:17}},{start:{line:1042,column:16},end:{line:1044,column:17}}],line:1042},"162":{loc:{start:{line:1045,column:16},end:{line:1047,column:17}},type:"if",locations:[{start:{line:1045,column:16},end:{line:1047,column:17}},{start:{line:1045,column:16},end:{line:1047,column:17}}],line:1045},"163":{loc:{start:{line:1062,column:28},end:{line:1088,column:29}},type:"switch",locations:[{start:{line:1063,column:32},end:{line:1065,column:81}},{start:{line:1066,column:32},end:{line:1074,column:60}},{start:{line:1075,column:32},end:{line:1079,column:134}},{start:{line:1080,column:32},end:{line:1083,column:49}},{start:{line:1084,column:32},end:{line:1086,column:60}},{start:{line:1087,column:32},end:{line:1087,column:62}}],line:1062},"164":{loc:{start:{line:1070,column:36},end:{line:1072,column:37}},type:"if",locations:[{start:{line:1070,column:36},end:{line:1072,column:37}},{start:{line:1070,column:36},end:{line:1072,column:37}}],line:1070},"165":{loc:{start:{line:1078,column:36},end:{line:1078,column:78}},type:"if",locations:[{start:{line:1078,column:36},end:{line:1078,column:78}},{start:{line:1078,column:36},end:{line:1078,column:78}}],line:1078},"166":{loc:{start:{line:1101,column:8},end:{line:1101,column:105}},type:"if",locations:[{start:{line:1101,column:8},end:{line:1101,column:105}},{start:{line:1101,column:8},end:{line:1101,column:105}}],line:1101},"167":{loc:{start:{line:1105,column:16},end:{line:1151,column:17}},type:"switch",locations:[{start:{line:1106,column:20},end:{line:1128,column:37}},{start:{line:1129,column:20},end:{line:1131,column:69}},{start:{line:1132,column:20},end:{line:1139,column:48}},{start:{line:1140,column:20},end:{line:1144,column:122}},{start:{line:1145,column:20},end:{line:1148,column:37}},{start:{line:1149,column:20},end:{line:1149,column:43}},{start:{line:1150,column:20},end:{line:1150,column:50}}],line:1105},"168":{loc:{start:{line:1108,column:24},end:{line:1110,column:25}},type:"if",locations:[{start:{line:1108,column:24},end:{line:1110,column:25}},{start:{line:1108,column:24},end:{line:1110,column:25}}],line:1108},"169":{loc:{start:{line:1117,column:24},end:{line:1120,column:25}},type:"if",locations:[{start:{line:1117,column:24},end:{line:1120,column:25}},{start:{line:1117,column:24},end:{line:1120,column:25}}],line:1117},"170":{loc:{start:{line:1136,column:24},end:{line:1138,column:25}},type:"if",locations:[{start:{line:1136,column:24},end:{line:1138,column:25}},{start:{line:1136,column:24},end:{line:1138,column:25}}],line:1136},"171":{loc:{start:{line:1143,column:24},end:{line:1143,column:66}},type:"if",locations:[{start:{line:1143,column:24},end:{line:1143,column:66}},{start:{line:1143,column:24},end:{line:1143,column:66}}],line:1143},"172":{loc:{start:{line:1159,column:8},end:{line:1159,column:101}},type:"if",locations:[{start:{line:1159,column:8},end:{line:1159,column:101}},{start:{line:1159,column:8},end:{line:1159,column:101}}],line:1159},"173":{loc:{start:{line:1165,column:16},end:{line:1167,column:17}},type:"if",locations:[{start:{line:1165,column:16},end:{line:1167,column:17}},{start:{line:1165,column:16},end:{line:1167,column:17}}],line:1165},"174":{loc:{start:{line:1165,column:20},end:{line:1165,column:100}},type:"binary-expr",locations:[{start:{line:1165,column:20},end:{line:1165,column:43}},{start:{line:1165,column:47},end:{line:1165,column:100}}],line:1165},"175":{loc:{start:{line:1170,column:16},end:{line:1172,column:17}},type:"if",locations:[{start:{line:1170,column:16},end:{line:1172,column:17}},{start:{line:1170,column:16},end:{line:1172,column:17}}],line:1170},"176":{loc:{start:{line:1170,column:20},end:{line:1170,column:100}},type:"binary-expr",locations:[{start:{line:1170,column:20},end:{line:1170,column:43}},{start:{line:1170,column:47},end:{line:1170,column:100}}],line:1170},"177":{loc:{start:{line:1177,column:16},end:{line:1179,column:17}},type:"if",locations:[{start:{line:1177,column:16},end:{line:1179,column:17}},{start:{line:1177,column:16},end:{line:1179,column:17}}],line:1177},"178":{loc:{start:{line:1188,column:28},end:{line:1214,column:29}},type:"switch",locations:[{start:{line:1189,column:32},end:{line:1191,column:81}},{start:{line:1192,column:32},end:{line:1200,column:60}},{start:{line:1201,column:32},end:{line:1205,column:134}},{start:{line:1206,column:32},end:{line:1209,column:49}},{start:{line:1210,column:32},end:{line:1212,column:60}},{start:{line:1213,column:32},end:{line:1213,column:62}}],line:1188},"179":{loc:{start:{line:1196,column:36},end:{line:1198,column:37}},type:"if",locations:[{start:{line:1196,column:36},end:{line:1198,column:37}},{start:{line:1196,column:36},end:{line:1198,column:37}}],line:1196},"180":{loc:{start:{line:1204,column:36},end:{line:1204,column:78}},type:"if",locations:[{start:{line:1204,column:36},end:{line:1204,column:78}},{start:{line:1204,column:36},end:{line:1204,column:78}}],line:1204}},s:{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0,"75":0,"76":0,"77":0,"78":0,"79":0,"80":0,"81":0,"82":0,"83":0,"84":0,"85":0,"86":0,"87":0,"88":0,"89":0,"90":0,"91":0,"92":0,"93":0,"94":0,"95":0,"96":0,"97":0,"98":0,"99":0,"100":0,"101":0,"102":0,"103":0,"104":0,"105":0,"106":0,"107":0,"108":0,"109":0,"110":0,"111":0,"112":0,"113":0,"114":0,"115":0,"116":0,"117":0,"118":0,"119":0,"120":0,"121":0,"122":0,"123":0,"124":0,"125":0,"126":0,"127":0,"128":0,"129":0,"130":0,"131":0,"132":0,"133":0,"134":0,"135":0,"136":0,"137":0,"138":0,"139":0,"140":0,"141":0,"142":0,"143":0,"144":0,"145":0,"146":0,"147":0,"148":0,"149":0,"150":0,"151":0,"152":0,"153":0,"154":0,"155":0,"156":0,"157":0,"158":0,"159":0,"160":0,"161":0,"162":0,"163":0,"164":0,"165":0,"166":0,"167":0,"168":0,"169":0,"170":0,"171":0,"172":0,"173":0,"174":0,"175":0,"176":0,"177":0,"178":0,"179":0,"180":0,"181":0,"182":0,"183":0,"184":0,"185":0,"186":0,"187":0,"188":0,"189":0,"190":0,"191":0,"192":0,"193":0,"194":0,"195":0,"196":0,"197":0,"198":0,"199":0,"200":0,"201":0,"202":0,"203":0,"204":0,"205":0,"206":0,"207":0,"208":0,"209":0,"210":0,"211":0,"212":0,"213":0,"214":0,"215":0,"216":0,"217":0,"218":0,"219":0,"220":0,"221":0,"222":0,"223":0,"224":0,"225":0,"226":0,"227":0,"228":0,"229":0,"230":0,"231":0,"232":0,"233":0,"234":0,"235":0,"236":0,"237":0,"238":0,"239":0,"240":0,"241":0,"242":0,"243":0,"244":0,"245":0,"246":0,"247":0,"248":0,"249":0,"250":0,"251":0,"252":0,"253":0,"254":0,"255":0,"256":0,"257":0,"258":0,"259":0,"260":0,"261":0,"262":0,"263":0,"264":0,"265":0,"266":0,"267":0,"268":0,"269":0,"270":0,"271":0,"272":0,"273":0,"274":0,"275":0,"276":0,"277":0,"278":0,"279":0,"280":0,"281":0,"282":0,"283":0,"284":0,"285":0,"286":0,"287":0,"288":0,"289":0,"290":0,"291":0,"292":0,"293":0,"294":0,"295":0,"296":0,"297":0,"298":0,"299":0,"300":0,"301":0,"302":0,"303":0,"304":0,"305":0,"306":0,"307":0,"308":0,"309":0,"310":0,"311":0,"312":0,"313":0,"314":0,"315":0,"316":0,"317":0,"318":0,"319":0,"320":0,"321":0,"322":0,"323":0,"324":0,"325":0,"326":0,"327":0,"328":0,"329":0,"330":0,"331":0,"332":0,"333":0,"334":0,"335":0,"336":0,"337":0,"338":0,"339":0,"340":0,"341":0,"342":0,"343":0,"344":0,"345":0,"346":0,"347":0,"348":0,"349":0,"350":0,"351":0,"352":0,"353":0,"354":0,"355":0,"356":0,"357":0,"358":0,"359":0,"360":0,"361":0,"362":0,"363":0,"364":0,"365":0,"366":0,"367":0,"368":0,"369":0,"370":0,"371":0,"372":0,"373":0,"374":0,"375":0,"376":0,"377":0,"378":0,"379":0,"380":0,"381":0,"382":0,"383":0,"384":0,"385":0,"386":0,"387":0,"388":0,"389":0,"390":0,"391":0,"392":0,"393":0,"394":0,"395":0,"396":0,"397":0,"398":0,"399":0,"400":0,"401":0,"402":0,"403":0,"404":0,"405":0,"406":0,"407":0,"408":0,"409":0,"410":0,"411":0,"412":0,"413":0,"414":0,"415":0,"416":0,"417":0,"418":0,"419":0,"420":0,"421":0,"422":0,"423":0,"424":0,"425":0,"426":0,"427":0,"428":0,"429":0,"430":0,"431":0,"432":0,"433":0,"434":0,"435":0,"436":0,"437":0,"438":0,"439":0,"440":0,"441":0,"442":0,"443":0,"444":0,"445":0,"446":0,"447":0,"448":0,"449":0,"450":0,"451":0,"452":0,"453":0,"454":0,"455":0,"456":0,"457":0,"458":0,"459":0,"460":0,"461":0,"462":0,"463":0,"464":0,"465":0,"466":0,"467":0,"468":0,"469":0,"470":0,"471":0,"472":0,"473":0,"474":0,"475":0,"476":0,"477":0,"478":0,"479":0,"480":0,"481":0,"482":0,"483":0,"484":0,"485":0,"486":0,"487":0,"488":0,"489":0,"490":0,"491":0,"492":0,"493":0,"494":0,"495":0,"496":0,"497":0,"498":0,"499":0,"500":0,"501":0,"502":0,"503":0,"504":0,"505":0,"506":0,"507":0,"508":0,"509":0,"510":0,"511":0,"512":0,"513":0,"514":0,"515":0,"516":0,"517":0,"518":0,"519":0,"520":0,"521":0,"522":0,"523":0,"524":0,"525":0,"526":0,"527":0,"528":0,"529":0,"530":0,"531":0,"532":0,"533":0,"534":0,"535":0,"536":0,"537":0,"538":0,"539":0,"540":0,"541":0,"542":0,"543":0,"544":0,"545":0,"546":0,"547":0,"548":0,"549":0,"550":0,"551":0,"552":0,"553":0,"554":0,"555":0,"556":0,"557":0,"558":0,"559":0,"560":0,"561":0,"562":0,"563":0,"564":0,"565":0,"566":0,"567":0,"568":0,"569":0,"570":0,"571":0,"572":0,"573":0,"574":0,"575":0,"576":0,"577":0,"578":0,"579":0,"580":0,"581":0,"582":0,"583":0,"584":0,"585":0,"586":0,"587":0,"588":0,"589":0,"590":0,"591":0,"592":0,"593":0,"594":0,"595":0,"596":0,"597":0,"598":0,"599":0,"600":0,"601":0,"602":0,"603":0,"604":0,"605":0,"606":0,"607":0,"608":0,"609":0,"610":0,"611":0,"612":0,"613":0,"614":0,"615":0,"616":0,"617":0,"618":0,"619":0,"620":0,"621":0,"622":0,"623":0,"624":0,"625":0,"626":0,"627":0,"628":0,"629":0,"630":0,"631":0,"632":0,"633":0,"634":0,"635":0,"636":0,"637":0,"638":0,"639":0,"640":0,"641":0,"642":0,"643":0,"644":0,"645":0,"646":0,"647":0,"648":0,"649":0,"650":0,"651":0,"652":0,"653":0,"654":0,"655":0,"656":0,"657":0,"658":0,"659":0,"660":0,"661":0,"662":0,"663":0,"664":0,"665":0,"666":0,"667":0,"668":0,"669":0,"670":0,"671":0,"672":0,"673":0,"674":0,"675":0,"676":0,"677":0,"678":0,"679":0,"680":0,"681":0,"682":0,"683":0,"684":0,"685":0,"686":0,"687":0,"688":0,"689":0,"690":0,"691":0,"692":0,"693":0,"694":0,"695":0,"696":0,"697":0,"698":0,"699":0,"700":0,"701":0,"702":0,"703":0,"704":0,"705":0,"706":0,"707":0,"708":0,"709":0,"710":0,"711":0,"712":0,"713":0,"714":0,"715":0,"716":0,"717":0,"718":0,"719":0,"720":0,"721":0,"722":0,"723":0,"724":0,"725":0,"726":0,"727":0,"728":0,"729":0,"730":0,"731":0,"732":0,"733":0,"734":0,"735":0,"736":0,"737":0,"738":0,"739":0,"740":0,"741":0,"742":0,"743":0,"744":0,"745":0,"746":0,"747":0,"748":0,"749":0,"750":0,"751":0,"752":0,"753":0,"754":0,"755":0,"756":0,"757":0,"758":0,"759":0,"760":0,"761":0,"762":0,"763":0,"764":0,"765":0,"766":0,"767":0,"768":0,"769":0,"770":0,"771":0,"772":0,"773":0,"774":0,"775":0,"776":0,"777":0,"778":0,"779":0,"780":0,"781":0,"782":0,"783":0,"784":0,"785":0,"786":0,"787":0,"788":0,"789":0,"790":0,"791":0,"792":0,"793":0,"794":0,"795":0,"796":0,"797":0,"798":0,"799":0,"800":0,"801":0,"802":0,"803":0,"804":0,"805":0,"806":0,"807":0,"808":0,"809":0,"810":0,"811":0,"812":0,"813":0,"814":0,"815":0,"816":0,"817":0,"818":0,"819":0,"820":0,"821":0,"822":0,"823":0,"824":0,"825":0,"826":0,"827":0,"828":0,"829":0,"830":0,"831":0,"832":0},f:{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0,"75":0,"76":0,"77":0,"78":0,"79":0,"80":0,"81":0,"82":0,"83":0,"84":0,"85":0,"86":0,"87":0,"88":0,"89":0,"90":0,"91":0,"92":0,"93":0,"94":0,"95":0,"96":0,"97":0,"98":0,"99":0,"100":0,"101":0,"102":0,"103":0,"104":0,"105":0,"106":0},b:{"0":[0,0,0],"1":[0,0],"2":[0,0],"3":[0,0,0],"4":[0,0],"5":[0,0],"6":[0,0],"7":[0,0],"8":[0,0,0],"9":[0,0],"10":[0,0],"11":[0,0],"12":[0,0],"13":[0,0,0],"14":[0,0],"15":[0,0],"16":[0,0],"17":[0,0],"18":[0,0],"19":[0,0,0,0,0,0],"20":[0,0],"21":[0,0,0],"22":[0,0],"23":[0,0],"24":[0,0,0,0],"25":[0,0],"26":[0,0],"27":[0,0],"28":[0,0],"29":[0,0],"30":[0,0],"31":[0,0],"32":[0,0],"33":[0,0],"34":[0,0],"35":[0,0],"36":[0,0],"37":[0,0],"38":[0,0],"39":[0,0],"40":[0,0],"41":[0,0],"42":[0,0],"43":[0,0],"44":[0,0],"45":[0,0],"46":[0,0],"47":[0,0],"48":[0,0],"49":[0,0],"50":[0,0],"51":[0,0],"52":[0,0],"53":[0,0,0,0,0,0],"54":[0,0],"55":[0,0],"56":[0,0],"57":[0,0],"58":[0,0],"59":[0,0],"60":[0,0],"61":[0,0],"62":[0,0,0],"63":[0,0],"64":[0,0],"65":[0,0],"66":[0,0,0,0,0,0],"67":[0,0],"68":[0,0],"69":[0,0],"70":[0,0],"71":[0,0],"72":[0,0],"73":[0,0],"74":[0,0,0,0,0,0],"75":[0,0],"76":[0,0],"77":[0,0],"78":[0,0],"79":[0,0,0,0,0,0],"80":[0,0],"81":[0,0],"82":[0,0],"83":[0,0],"84":[0,0],"85":[0,0],"86":[0,0],"87":[0,0],"88":[0,0],"89":[0,0],"90":[0,0],"91":[0,0],"92":[0,0],"93":[0,0],"94":[0,0,0,0,0,0],"95":[0,0],"96":[0,0],"97":[0,0],"98":[0,0],"99":[0,0],"100":[0,0],"101":[0,0],"102":[0,0],"103":[0,0],"104":[0,0],"105":[0,0],"106":[0,0],"107":[0,0],"108":[0,0],"109":[0,0,0,0,0,0],"110":[0,0],"111":[0,0],"112":[0,0],"113":[0,0],"114":[0,0],"115":[0,0],"116":[0,0],"117":[0,0,0,0,0,0],"118":[0,0],"119":[0,0],"120":[0,0,0,0,0,0],"121":[0,0],"122":[0,0],"123":[0,0],"124":[0,0],"125":[0,0],"126":[0,0],"127":[0,0],"128":[0,0],"129":[0,0],"130":[0,0],"131":[0,0],"132":[0,0],"133":[0,0],"134":[0,0],"135":[0,0],"136":[0,0,0,0,0,0],"137":[0,0],"138":[0,0],"139":[0,0],"140":[0,0],"141":[0,0],"142":[0,0],"143":[0,0,0,0,0,0],"144":[0,0],"145":[0,0],"146":[0,0],"147":[0,0],"148":[0,0],"149":[0,0,0],"150":[0,0],"151":[0,0],"152":[0,0,0,0,0,0],"153":[0,0],"154":[0,0],"155":[0,0],"156":[0,0],"157":[0,0],"158":[0,0,0,0,0,0],"159":[0,0],"160":[0,0],"161":[0,0],"162":[0,0],"163":[0,0,0,0,0,0],"164":[0,0],"165":[0,0],"166":[0,0],"167":[0,0,0,0,0,0,0],"168":[0,0],"169":[0,0],"170":[0,0],"171":[0,0],"172":[0,0],"173":[0,0],"174":[0,0],"175":[0,0],"176":[0,0],"177":[0,0],"178":[0,0,0,0,0,0],"179":[0,0],"180":[0,0]},inputSourceMap:{version:3,file:"/home/runner/work/omnichannel-sdk/omnichannel-sdk/src/SDK.ts",sourceRoot:"",sources:["/home/runner/work/omnichannel-sdk/omnichannel-sdk/src/SDK.ts"],names:[],mappings:"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",sourcesContent:["import { ChannelId, LiveChatVersion } from \"./Common/Enums\";\nimport axios, { AxiosRequestConfig } from \"axios\";\nimport { BrowserInfo } from \"./Utils/BrowserInfo\";\nimport Constants from \"./Common/Constants\";\nimport { DeviceInfo } from \"./Utils/DeviceInfo\";\nimport FetchChatTokenResponse from \"./Model/FetchChatTokenResponse\";\nimport IDataMaskingInfo from \"./Interfaces/IDataMaskingInfo\";\nimport IEmailTranscriptOptionalParams from \"./Interfaces/IEmailTranscriptOptionalParams\";\nimport IGetChatTokenOptionalParams from \"./Interfaces/IGetChatTokenOptionalParams\";\nimport IGetChatTranscriptsOptionalParams from \"./Interfaces/IGetChatTranscriptsOptionalParams\";\nimport IGetLWIDetailsOptionalParams from \"./Interfaces/IGetLWIDetailsOptionalParams\";\nimport IGetQueueAvailabilityOptionalParams from \"./Interfaces/IGetQueueAvailabilityOptionalParams\";\nimport IGetSurveyInviteLinkOptionalParams from \"./Interfaces/IGetSurveyInviteLinkOptionalParams\";\nimport IOmnichannelConfiguration from \"./Interfaces/IOmnichannelConfiguration\";\nimport IReconnectableChatsParams from \"./Interfaces/IReconnectableChatsParams\";\nimport ISendTypingIndicatorOptionalParams from \"./Interfaces/ISendTypingIndicatorOptionalParams\"\nimport ISDK from \"./Interfaces/ISDK\";\nimport ISDKConfiguration from \"./Interfaces/ISDKConfiguration\";\nimport ISecondaryChannelEventOptionalParams from \"./Interfaces/ISecondaryChannelEventOptionalParams\";\nimport ISessionCloseOptionalParams from \"./Interfaces/ISessionCloseOptionalParams\";\nimport ISessionInitOptionalParams from \"./Interfaces/ISessionInitOptionalParams\";\nimport ISubmitPostChatResponseOptionalParams from \"./Interfaces/ISubmitPostChatResponseOptionalParams\";\nimport IValidateAuthChatRecordOptionalParams from \"./Interfaces/IValidateAuthChatRecordOptionalParams\";\nimport InitContext from \"./Model/InitContext\";\nimport Locales from \"./Common/Locales\";\nimport { LoggingSanitizer } from \"./Utils/LoggingSanitizer\";\nimport { LogLevel } from \"./Model/LogLevel\";\nimport OCSDKLogger from \"./Common/OCSDKLogger\";\nimport { OCSDKTelemetryEvent } from \"./Common/Enums\";\nimport { OSInfo } from \"./Utils/OSInfo\";\nimport OmnichannelEndpoints from \"./Common/OmnichannelEndpoints\";\nimport OmnichannelHTTPHeaders from \"./Common/OmnichannelHTTPHeaders\";\nimport QueueAvailability from \"./Model/QueueAvailability\";\nimport ReconnectAvailability from \"./Model/ReconnectAvailability\";\nimport ReconnectMappingRecord from \"./Model/ReconnectMappingRecord\";\nimport { StringMap } from \"./Common/Mappings\";\nimport { Timer } from \"./Utils/Timer\";\nimport axiosRetry from \"./Utils/axiosRetry\";\nimport { uuidv4 } from \"./Utils/uuid\";\n\nexport default class SDK implements ISDK {\n private static defaultConfiguration: ISDKConfiguration = {\n getChatTokenRetryCount: 35,\n getChatTokenTimeBetweenRetriesOnFailure: 10000,\n maxRequestRetriesOnFailure: 3\n };\n \n liveChatVersion: number;\n\n public constructor(private omnichannelConfiguration: IOmnichannelConfiguration, private configuration: ISDKConfiguration = SDK.defaultConfiguration, private logger?: OCSDKLogger) {\n // Sets to default configuration if passed configuration is empty or is not an object\n if (!Object.keys(this.configuration).length || typeof (configuration) !== \"object\") {\n this.configuration = SDK.defaultConfiguration;\n }\n\n // Validate SDK config\n for (const key of Object.keys(SDK.defaultConfiguration)) {\n if (!this.configuration.hasOwnProperty(key)) { // eslint-disable-line no-prototype-builtins\n throw new Error(`Missing '${key}' in SDKConfiguration`);\n }\n }\n\n // Validate channelId\n const { channelId } = omnichannelConfiguration;\n if (!Object.values(ChannelId).includes(channelId as ChannelId)) {\n throw new Error(`Invalid channelId`);\n }\n\n // Validate OC config\n const currentOmnichannelConfigurationParameters = Object.keys(omnichannelConfiguration);\n for (const key of Constants.requiredOmnichannelConfigurationParameters) {\n if (!currentOmnichannelConfigurationParameters.includes(key)) {\n throw new Error(`Missing '${key}' in OmnichannelConfiguration`);\n }\n }\n \n this.liveChatVersion = LiveChatVersion.V1;\n }\n\n /**\n * Fetches chat config.\n * @param requestId: RequestId to use to get chat config (Optional).\n */\n public async getChatConfig(requestId: string, bypassCache = false): Promise<object> {\n const timer = Timer.TIMER();\n if (this.logger) {\n this.logger.log(LogLevel.INFO,\n OCSDKTelemetryEvent.GETCHATCONFIG,\n { RequestId: requestId},\n \"Get Chat Config Started\");\n }\n if (!requestId) {\n requestId = uuidv4();\n }\n\n const endpoint = `${this.omnichannelConfiguration.orgUrl}/${OmnichannelEndpoints.LiveChatConfigPath}/${this.omnichannelConfiguration.orgId}/${this.omnichannelConfiguration.widgetId}?requestId=${requestId}&channelId=${this.omnichannelConfiguration.channelId}`;\n const axiosInstance = axios.create();\n axiosRetry(axiosInstance, { retries: this.configuration.maxRequestRetriesOnFailure });\n\n let headers = {};\n if (bypassCache) {\n headers = { ...Constants.bypassCacheHeaders, ...headers };\n }\n const response = await axiosInstance.get(endpoint, {\n headers,\n });\n const elapsedTimeInMilliseconds = timer.milliSecondsElapsed;\n const { data } = response;\n if (data.LiveChatVersion && data.LiveChatVersion === LiveChatVersion.V2) {\n this.liveChatVersion = data.LiveChatVersion;\n }\n data.headers = {};\n if (response.headers && response.headers[\"date\"]) {\n data.headers[\"date\"] = response.headers[\"date\"];\n }\n if (this.logger) {\n this.logger.log(LogLevel.INFO,\n OCSDKTelemetryEvent.GETCHATCONFIGSUCCESS,\n { RequestId: requestId, Region: response.data.Region, ElapsedTimeInMilliseconds: elapsedTimeInMilliseconds, TransactionId: response.headers[\"transaction-id\"] },\n \"Get Chat config succeeded\");\n }\n return data;\n }\n\n /**\n * Fetches LWI details.\n * @param requestId: RequestId to use to get chat config (Optional).\n * @param getLWIDetailsOptionalParams: Optional parameters for get LWI Details.\n */\n public async getLWIDetails(requestId: string, getLWIDetailsOptionalParams: IGetLWIDetailsOptionalParams = {}): Promise<object> {\n const timer = Timer.TIMER();\n if (this.logger) {\n this.logger.log(LogLevel.INFO,\n OCSDKTelemetryEvent.GETLWISTATUSSTARTED,\n { RequestId: requestId },\n \"Get LWI Details Started\");\n }\n if (!requestId) {\n requestId = uuidv4();\n }\n\n // construct a endpoint for anonymous chats to get LWI Details\n let endpoint = `${this.omnichannelConfiguration.orgUrl}/${OmnichannelEndpoints.LiveChatLiveWorkItemDetailsPath}/${this.omnichannelConfiguration.orgId}/${this.omnichannelConfiguration.widgetId}/${requestId}`;\n const axiosInstance = axios.create();\n axiosRetry(axiosInstance, { retries: this.configuration.maxRequestRetriesOnFailure });\n\n // Extract auth token and reconnect id from optional param\n const { authenticatedUserToken, reconnectId } = getLWIDetailsOptionalParams;\n const headers: StringMap = Constants.defaultHeaders;\n\n // updated auth endpoint for authenticated chats and add auth token in header\n if (authenticatedUserToken) {\n endpoint = `${this.omnichannelConfiguration.orgUrl}/${OmnichannelEndpoints.LiveChatAuthLiveWorkItemDetailsPath}/${this.omnichannelConfiguration.orgId}/${this.omnichannelConfiguration.widgetId}/${requestId}`;\n headers[OmnichannelHTTPHeaders.authenticatedUserToken] = authenticatedUserToken;\n }\n\n // Append reconnect id on the endpoint if vailable\n if (reconnectId) {\n endpoint += `/${reconnectId}`;\n }\n endpoint += `?channelId=${this.omnichannelConfiguration.channelId}`;\n\n const options: AxiosRequestConfig = {\n headers,\n method: \"GET\",\n url: endpoint\n };\n\n return new Promise(async (resolve, reject) => {\n try {\n const response = await axiosInstance(options);\n const elapsedTimeInMilliseconds = timer.milliSecondsElapsed;\n const { data } = response;\n if (this.logger) {\n this.logger.log(LogLevel.INFO,\n OCSDKTelemetryEvent.GETLWISTATUSSUCCEEDED,\n { RequestId: requestId, Region: response.data.Region, ElapsedTimeInMilliseconds: elapsedTimeInMilliseconds, TransactionId: response.headers[\"transaction-id\"] },\n \"Get LWI Details succeeded\");\n }\n resolve(data);\n } catch (error) {\n const elapsedTimeInMilliseconds = timer.milliSecondsElapsed;\n if (this.logger) {\n await LoggingSanitizer.stripErrorSensitiveProperties(error);\n this.logger.log(LogLevel.ERROR,\n OCSDKTelemetryEvent.GETLWISTATUSFAILED,\n { RequestId: requestId, ExceptionDetails: error, ElapsedTimeInMilliseconds: elapsedTimeInMilliseconds },\n \"Get LWI Details failed\");\n }\n reject();\n }\n });\n }\n /**\n * Fetches the chat token from Omnichannel to join T1 thread.\n * @param requestId: RequestId to use for getchattoken (Optional).\n * @param getChatTokenOptionalParams: Optional parameters for get chat token.\n */\n public async getChatToken(requestId: string, getChatTokenOptionalParams: IGetChatTokenOptionalParams = {}, currentRetryCount: number = 0): Promise<FetchChatTokenResponse> { // eslint-disable-line @typescript-eslint/no-inferrable-types\n const timer = Timer.TIMER();\n const { reconnectId, authenticatedUserToken, currentLiveChatVersion } = getChatTokenOptionalParams;\n if (this.logger) {\n this.logger.log(LogLevel.INFO,\n OCSDKTelemetryEvent.GETCHATTOKENSTARTED,\n { RequestId: requestId },\n \"Get Chat Token Started\");\n }\n if (currentRetryCount < 0) {\n throw new Error(`Invalid currentRetryCount`);\n }\n\n if (!requestId) {\n requestId = uuidv4();\n }\n const headers: StringMap = Constants.defaultHeaders; \n let endpoint = `${this.omnichannelConfiguration.orgUrl}/${OmnichannelEndpoints.LiveChatGetChatTokenPath}/${this.omnichannelConfiguration.orgId}/${this.omnichannelConfiguration.widgetId}/${requestId}`;\n\n if (this.liveChatVersion === LiveChatVersion.V2 || (currentLiveChatVersion && currentLiveChatVersion === LiveChatVersion.V2)) {\n endpoint = `${this.omnichannelConfiguration.orgUrl}/${OmnichannelEndpoints.LiveChatv2GetChatTokenPath}/${this.omnichannelConfiguration.orgId}/${this.omnichannelConfiguration.widgetId}/${requestId}`;\n if (authenticatedUserToken) {\n endpoint = `${this.omnichannelConfiguration.orgUrl}/${OmnichannelEndpoints.LiveChatv2AuthGetChatTokenPath}/${this.omnichannelConfiguration.orgId}/${this.omnichannelConfiguration.widgetId}/${requestId}`;\n headers[OmnichannelHTTPHeaders.authenticatedUserToken] = authenticatedUserToken;\n }\n } else {\n if (authenticatedUserToken) {\n endpoint = `${this.omnichannelConfiguration.orgUrl}/${OmnichannelEndpoints.LiveChatAuthGetChatTokenPath}/${this.omnichannelConfiguration.orgId}/${this.omnichannelConfiguration.widgetId}/${requestId}`;\n headers[OmnichannelHTTPHeaders.authenticatedUserToken] = authenticatedUserToken;\n }\n }\n \n if (reconnectId) {\n endpoint += `/${reconnectId}`;\n }\n endpoint += `?channelId=${this.omnichannelConfiguration.channelId}`;\n\n const options: AxiosRequestConfig = {\n headers,\n method: \"GET\",\n url: endpoint\n };\n const axiosInstance = axios.create();\n axiosRetry(axiosInstance, { retries: this.configuration.maxRequestRetriesOnFailure });\n return new Promise(async (resolve, reject) => {\n try {\n const response = await axiosInstance(options);\n const elapsedTimeInMilliseconds = timer.milliSecondsElapsed;\n const { data } = response;\n // Resolves only if it contains chat token response which only happens on status 200\n if (data) {\n data.requestId = requestId;\n if (this.logger) {\n this.logger.log(LogLevel.INFO,\n OCSDKTelemetryEvent.GETCHATTOKENSUCCEEDED,\n { RequestId: requestId, Region: response.data.Region, ElapsedTimeInMilliseconds: elapsedTimeInMilliseconds, TransactionId: response.headers[\"transaction-id\"] },\n \"Get Chat Token Succeeded\");\n }\n resolve(data);\n return;\n }\n\n // No content for reconnect chat case shouldn't be retried.\n if (reconnectId && response.status === Constants.noContentStatusCode) {\n reject(response);\n return;\n }\n } catch (error) {\n const elapsedTimeInMilliseconds = timer.milliSecondsElapsed;\n if (this.logger) {\n await LoggingSanitizer.stripErrorSensitiveProperties(error);\n this.logger.log(LogLevel.ERROR,\n OCSDKTelemetryEvent.GETCHATTOKENFAILED,\n { RequestId: requestId, ExceptionDetails: error, ElapsedTimeInMilliseconds: elapsedTimeInMilliseconds},\n \"Get Chat Token Failed\");\n }\n reject(error);\n return;\n }\n\n // Base case\n if (currentRetryCount + 1 >= this.configuration.getChatTokenRetryCount) {\n reject(new Error(`The retry for getchattoken has exceeded its max value of ${this.configuration.getChatTokenRetryCount}`));\n return;\n }\n\n // Retries until it reaches its limit\n setTimeout(() => {\n this.getChatToken(requestId, getChatTokenOptionalParams, currentRetryCount + 1).then((response) => resolve(response)).catch((error) => reject(error));\n }, this.configuration.getChatTokenTimeBetweenRetriesOnFailure);\n });\n }\n\n /**\n * Fetches the reconnectable chats from omnichannel from the given user information in JWT token(claim name: sub).\n * @param reconnectableChatsParams Mandate parameters for get reconnectable chats.\n */\n public async getReconnectableChats(reconnectableChatsParams: IReconnectableChatsParams): Promise<ReconnectMappingRecord> {\n const timer = Timer.TIMER();\n const { authenticatedUserToken } = reconnectableChatsParams;\n if (this.logger) {\n this.logger.log(LogLevel.INFO,\n OCSDKTelemetryEvent.GETRECONNECTABLECHATS,\n \"Get Reconnectable chat Started\");\n }\n\n const endpoint = `${this.omnichannelConfiguration.orgUrl}/${OmnichannelEndpoints.LiveChatGetReconnectableChatsPath}/${this.omnichannelConfiguration.orgId}/${this.omnichannelConfiguration.widgetId}/${this.omnichannelConfiguration.orgId}?channelId=${this.omnichannelConfiguration.channelId}`;\n const headers: StringMap = Constants.defaultHeaders;\n headers[OmnichannelHTTPHeaders.authenticatedUserToken] = authenticatedUserToken;\n\n const options: AxiosRequestConfig = {\n headers,\n method: \"GET\",\n url: endpoint\n };\n\n const axiosInstance = axios.create();\n return new Promise(async (resolve, reject) => {\n try {\n const response = await axiosInstance(options);\n const elapsedTimeInMilliseconds = timer.milliSecondsElapsed;\n const { data } = response;\n\n // Resolves only if it contains reconnectable chats response which only happens on status 200\n if (data) {\n if (this.logger) {\n this.logger.log(LogLevel.INFO,\n OCSDKTelemetryEvent.GETRECONNECTABLECHATS,\n { Region: response.data.Region, ElapsedTimeInMilliseconds: elapsedTimeInMilliseconds, TransactionId: response.headers[Constants.transactionid] },\n \"Get Reconnectable Chats Succeeded and old session returned\");\n }\n resolve(data);\n return;\n }\n // No data found in the old sessions so returning null\n resolve();\n return;\n } catch (error) {\n const elapsedTimeInMilliseconds = timer.milliSecondsElapsed;\n if (this.logger) {\n await LoggingSanitizer.stripErrorSensitiveProperties(error);\n this.logger.log(LogLevel.ERROR,\n OCSDKTelemetryEvent.GETRECONNECTABLECHATS,\n { ExceptionDetails: error, ElapsedTimeInMilliseconds: elapsedTimeInMilliseconds},\n \"Get Reconnectable Chats Failed\");\n }\n reject(error);\n return;\n }\n });\n }\n\n /**\n * Fetches the reconnectable chats from omnichannel from the given user information in JWT token(claim name: sub).\n * @param reconnectableChatsParams Mandate parameters for get reconnectable chats.\n */\n public async getReconnectAvailability(reconnectId: string): Promise<ReconnectAvailability> {\n const timer = Timer.TIMER();\n if (this.logger) {\n this.logger.log(LogLevel.INFO,\n OCSDKTelemetryEvent.GETRECONNECTAVAILABILITY,\n \"Get Reconnect availability started\");\n }\n\n const endpoint = `${this.omnichannelConfiguration.orgUrl}/${OmnichannelEndpoints.LiveChatReconnectAvailabilityPath}/${this.omnichannelConfiguration.orgId}/${this.omnichannelConfiguration.widgetId}/${reconnectId}`;\n const headers: StringMap = Constants.defaultHeaders;\n const options: AxiosRequestConfig = {\n headers,\n method: \"GET\",\n url: endpoint\n };\n\n const axiosInstance = axios.create();\n return new Promise(async (resolve, reject) => {\n try {\n const response = await axiosInstance(options);\n const elapsedTimeInMilliseconds = timer.milliSecondsElapsed;\n const { data } = response;\n if (data) {\n if (this.logger) {\n this.logger.log(LogLevel.INFO,\n OCSDKTelemetryEvent.GETRECONNECTAVAILABILITY,\n { Region: response.data.Region, ElapsedTimeInMilliseconds: elapsedTimeInMilliseconds, TransactionId: response.headers[Constants.transactionid] },\n \"Get Reconnect availability Succeeded\");\n }\n resolve(data);\n return;\n }\n // No data found so returning null\n if (this.logger) {\n this.logger.log(LogLevel.WARN,\n OCSDKTelemetryEvent.GETRECONNECTAVAILABILITY,\n { Region: response.data.Region, ElapsedTimeInMilliseconds: elapsedTimeInMilliseconds, TransactionId: response.headers[Constants.transactionid] },\n \"Get Reconnect availability didn't send any valid data.\");\n }\n resolve();\n return;\n } catch (error) {\n const elapsedTimeInMilliseconds = timer.milliSecondsElapsed;\n if (this.logger) {\n await LoggingSanitizer.stripErrorSensitiveProperties(error);\n this.logger.log(LogLevel.ERROR,\n OCSDKTelemetryEvent.GETRECONNECTAVAILABILITY,\n { ExceptionDetails: error, ElapsedTimeInMilliseconds: elapsedTimeInMilliseconds},\n \"Get Reconnect Availability Failed\");\n }\n reject(error);\n return;\n }\n });\n }\n\n /**\n * \n * @param requestId: RequestId to use for session init.\n * @param queueAvailabilityOptionalParams: Optional parameters for session init.\n */\n public async getQueueAvailability(requestId: string, queueAvailabilityOptionalParams: IGetQueueAvailabilityOptionalParams = {}): Promise<QueueAvailability> {\n const timer = Timer.TIMER();\n if (this.logger) {\n this.logger.log(LogLevel.INFO,\n OCSDKTelemetryEvent.GETQUEUEAVAILABILITYSTARTED,\n { RequestId: requestId },\n \"Get queue availability started\");\n }\n\n const endpoint = `${this.omnichannelConfiguration.orgUrl}/${OmnichannelEndpoints.GetQueueAvailabilityPath}/${this.omnichannelConfiguration.orgId}/${this.omnichannelConfiguration.widgetId}/${requestId}?channelId=lcw`;\n const axiosInstance = axios.create();\n axiosRetry(axiosInstance, { retries: this.configuration.maxRequestRetriesOnFailure });\n\n const {authenticatedUserToken, initContext, getContext } = queueAvailabilityOptionalParams;\n\n const headers: StringMap = Constants.defaultHeaders;\n\n if (authenticatedUserToken) {\n headers[OmnichannelHTTPHeaders.authenticatedUserToken] = authenticatedUserToken;\n }\n\n const data: InitContext = initContext || {};\n\n if (getContext && !window.document) {\n return Promise.reject(new Error(`getContext is only supported on web browsers`));\n }\n\n if (getContext) {\n data.browser = BrowserInfo.getBrowserName();\n data.device = DeviceInfo.getDeviceType();\n data.originurl = window.location.href;\n data.os = OSInfo.getOsType();\n }\n\n if (!data.locale) {\n data.locale = Constants.defaultLocale;\n }\n\n // Validate locale\n if (data.locale && !Locales.supportedLocales.includes(data.locale)) {\n return Promise.reject(new Error(`Unsupported locale: '${data.locale}'`));\n }\n\n const options: AxiosRequestConfig = {\n data,\n headers,\n method: \"POST\",\n url: endpoint\n };\n\n return new Promise(async (resolve, reject) => {\n try {\n const response = await axiosInstance(options);\n const elapsedTimeInMilliseconds = timer.milliSecondsElapsed;\n const {data} = response;\n if(data) {\n if (this.logger) {\n this.logger.log(LogLevel.INFO,\n OCSDKTelemetryEvent.GETQUEUEAVAILABILITYSUCCEEDED,\n { RequestId: requestId, Region: response.data.Region, ElapsedTimeInMilliseconds: elapsedTimeInMilliseconds, TransactionId: response.headers[\"transaction-id\"] },\n \"Get queue availability Succeeded\");\n }\n resolve(data);\n }\n } catch (error) {\n const elapsedTimeInMilliseconds = timer.milliSecondsElapsed;\n if (this.logger) {\n await LoggingSanitizer.stripErrorSensitiveProperties(error);\n this.logger.log(LogLevel.ERROR,\n OCSDKTelemetryEvent.GETQUEUEAVAILABILITYFAILED,\n { RequestId: requestId, ExceptionDetails: error, ElapsedTimeInMilliseconds: elapsedTimeInMilliseconds},\n \"Get queue availability failed\");\n }\n reject(error);\n }\n });\n }\n\n /**\n * Starts a session to omnichannel.\n * @param requestId: RequestId to use for session init.\n * @param sessionInitOptionalParams: Optional parameters for session init.\n */\n public async sessionInit(requestId: string, sessionInitOptionalParams: ISessionInitOptionalParams = {}): Promise<void> {\n const timer = Timer.TIMER();\n if (this.logger) {\n this.logger.log(LogLevel.INFO,\n OCSDKTelemetryEvent.SESSIONINITSTARTED,\n { RequestId: requestId },\n \"Session Init Started\");\n }\n\n const axiosInstance = axios.create();\n axiosRetry(axiosInstance, { retries: this.configuration.maxRequestRetriesOnFailure });\n\n const { reconnectId, authenticatedUserToken, initContext, getContext } = sessionInitOptionalParams;\n\n const headers: StringMap = Constants.defaultHeaders;\n let endpoint = `${this.omnichannelConfiguration.orgUrl}/${OmnichannelEndpoints.LiveChatSessionInitPath}/${this.omnichannelConfiguration.orgId}/${this.omnichannelConfiguration.widgetId}/${requestId}`;\n\n if (authenticatedUserToken) {\n endpoint = `${this.omnichannelConfiguration.orgUrl}/${OmnichannelEndpoints.LiveChatAuthSessionInitPath}/${this.omnichannelConfiguration.orgId}/${this.omnichannelConfiguration.widgetId}/${requestId}`;\n headers[OmnichannelHTTPHeaders.authenticatedUserToken] = authenticatedUserToken;\n }\n if (reconnectId) {\n endpoint += `/${reconnectId}`;\n }\n endpoint += `?channelId=${this.omnichannelConfiguration.channelId}`;\n\n const data: InitContext = initContext || {};\n\n if (getContext && !window.document) {\n return Promise.reject(new Error(`getContext is only supported on web browsers`));\n }\n\n if (getContext) {\n data.browser = BrowserInfo.getBrowserName();\n data.device = DeviceInfo.getDeviceType();\n data.originurl = window.location.href;\n data.os = OSInfo.getOsType();\n }\n\n // Set default locale if locale is empty\n if (!data.locale) {\n data.locale = Constants.defaultLocale;\n }\n\n // Validate locale\n if (data.locale && !Locales.supportedLocales.includes(data.locale)) {\n return Promise.reject(new Error(`Unsupported locale: '${data.locale}'`));\n }\n\n const options: AxiosRequestConfig = {\n data,\n headers,\n method: \"POST\",\n url: endpoint\n };\n\n return new Promise(async (resolve, reject) => {\n try {\n const response = await axiosInstance(options);\n const elapsedTimeInMilliseconds = timer.milliSecondsElapsed;\n if (this.logger) {\n this.logger.log(LogLevel.INFO,\n OCSDKTelemetryEvent.SESSIONINITSUCCEEDED,\n { RequestId: requestId, Region: response.data.Region, ElapsedTimeInMilliseconds: elapsedTimeInMilliseconds, TransactionId: response.headers[\"transaction-id\"] },\n \"Session Init Succeeded\");\n }\n resolve();\n } catch (error) {\n const elapsedTimeInMilliseconds = timer.milliSecondsElapsed;\n if (this.logger) {\n await LoggingSanitizer.stripErrorSensitiveProperties(error);\n this.logger.log(LogLevel.ERROR,\n OCSDKTelemetryEvent.SESSIONINITFAILED,\n { RequestId: requestId, ExceptionDetails: error, ElapsedTimeInMilliseconds: elapsedTimeInMilliseconds},\n \"Session Init Failed\");\n }\n reject(error);\n }\n });\n }\n\n /**\n * Closes the omnichannel session.\n * @param requestId: RequestId to use for session close (same request id for session init).\n * @param sessionCloseOptionalParams: Optional parameters for session close.\n */\n public async sessionClose(requestId: string, sessionCloseOptionalParams: ISessionCloseOptionalParams = {}): Promise<void> {\n const timer = Timer.TIMER();\n if (this.logger) {\n this.logger.log(LogLevel.INFO,\n OCSDKTelemetryEvent.SESSIONCLOSESTARTED,\n { RequestId: requestId },\n \"Session Close Started\");\n }\n let endpoint = `${this.omnichannelConfiguration.orgUrl}/${OmnichannelEndpoints.LiveChatSessionClosePath}/${this.omnichannelConfiguration.orgId}/${this.omnichannelConfiguration.widgetId}/${requestId}?channelId=${this.omnichannelConfiguration.channelId}`;\n const axiosInstance = axios.create();\n axiosRetry(axiosInstance, { retries: this.configuration.maxRequestRetriesOnFailure });\n\n const { authenticatedUserToken, isReconnectChat, isPersistentChat, chatId} = sessionCloseOptionalParams;\n\n const headers: StringMap = Constants.defaultHeaders;\n const data: any = {}; // eslint-disable-line @typescript-eslint/no-explicit-any\n data.chatId = chatId;\n\n if (authenticatedUserToken) {\n endpoint = `${this.omnichannelConfiguration.orgUrl}/${OmnichannelEndpoints.LiveChatAuthSessionClosePath}/${this.omnichannelConfiguration.orgId}/${this.omnichannelConfiguration.widgetId}/${requestId}?channelId=${this.omnichannelConfiguration.channelId}`;\n headers[OmnichannelHTTPHeaders.authenticatedUserToken] = authenticatedUserToken;\n }\n\n if (isReconnectChat) {\n endpoint += `&isReconnectChat=true`;\n }\n\n if (isPersistentChat){\n endpoint += `&isPersistentChat=true`;\n }\n\n const options: AxiosRequestConfig = {\n data,\n headers,\n method: \"POST\",\n url: endpoint\n };\n\n return new Promise(async (resolve, reject) => {\n try {\n const response = await axiosInstance(options);\n const elapsedTimeInMilliseconds = timer.milliSecondsElapsed;\n if (this.logger) {\n this.logger.log(LogLevel.INFO,\n OCSDKTelemetryEvent.SESSIONCLOSESUCCEEDED,\n { RequestId: requestId, Region: response.data.Region, ElapsedTimeInMilliseconds: elapsedTimeInMilliseconds, TransactionId: response.headers[\"transaction-id\"] },\n \"Session Close Succeeded\");\n }\n resolve();\n } catch (error) {\n const elapsedTimeInMilliseconds = timer.milliSecondsElapsed;\n if (this.logger) {\n await LoggingSanitizer.stripErrorSensitiveProperties(error);\n this.logger.log(LogLevel.ERROR,\n OCSDKTelemetryEvent.SESSIONCLOSEFAILED,\n { RequestId: requestId, ExceptionDetails: error, ElapsedTimeInMilliseconds: elapsedTimeInMilliseconds },\n \"Session Close Failed\");\n }\n reject();\n }\n });\n }\n /**\n * Validate the auth chat record exists in database.\n * @param requestId: RequestId for validateAuthChatRecord (same request id for session init).\n * @param validateAuthChatRecordOptionalParams: Optional parameters for validateAuthChatRecord.\n */\n public async validateAuthChatRecord(requestId: string, validateAuthChatRecordOptionalParams: IValidateAuthChatRecordOptionalParams): Promise<object> {\n const timer = Timer.TIMER();\n if (this.logger) {\n this.logger.log(LogLevel.INFO,\n OCSDKTelemetryEvent.VALIDATEAUTHCHATRECORDSTARTED,\n { RequestId: requestId },\n \"Validate Auth Chat Record Started\");\n }\n const { authenticatedUserToken, chatId } = validateAuthChatRecordOptionalParams;\n const endpoint = `${this.omnichannelConfiguration.orgUrl}/${OmnichannelEndpoints.LiveChatValidateAuthChatMapRecordPath}/${this.omnichannelConfiguration.orgId}/${this.omnichannelConfiguration.widgetId}/${chatId}/${requestId}?channelId=${this.omnichannelConfiguration.channelId}`;\n const axiosInstance = axios.create();\n axiosRetry(axiosInstance, { retries: this.configuration.maxRequestRetriesOnFailure });\n const headers: StringMap = Constants.defaultHeaders;\n if (authenticatedUserToken) {\n headers[OmnichannelHTTPHeaders.authenticatedUserToken] = authenticatedUserToken;\n }\n const options: AxiosRequestConfig = {\n headers,\n method: \"GET\",\n url: endpoint\n };\n\n try {\n const response = await axiosInstance(options);\n const elapsedTimeInMilliseconds = timer.milliSecondsElapsed;\n if (response.data?.authChatExist === true) {\n this.logger?.log(LogLevel.INFO,\n OCSDKTelemetryEvent.VALIDATEAUTHCHATRECORDSUCCEEDED,\n { RequestId: requestId, Region: response.data.Region, ElapsedTimeInMilliseconds: elapsedTimeInMilliseconds, TransactionId: response.headers[\"transaction-id\"] },\n \"Validate Auth Chat Record Succeeded\");\n return Promise.resolve(response.data);\n } else {\n this.logger?.log(LogLevel.INFO,\n OCSDKTelemetryEvent.VALIDATEAUTHCHATRECORDFAILED,\n { RequestId: requestId, Region: response.data.Region, ElapsedTimeInMilliseconds: elapsedTimeInMilliseconds, TransactionId: response.headers[\"transaction-id\"], ErrorCode: response.status},\n \"Validate Auth Chat Record Failed. Record is not found or request is not authorized\");\n return Promise.reject(new Error(\"Validate Auth Chat Record Failed. Record is not found or request is not authorized\"));\n }\n } catch (error) {\n const elapsedTimeInMilliseconds = timer.milliSecondsElapsed;\n await LoggingSanitizer.stripErrorSensitiveProperties(error);\n this.logger?.log(LogLevel.ERROR,\n OCSDKTelemetryEvent.VALIDATEAUTHCHATRECORDFAILED,\n { RequestId: requestId, ExceptionDetails: error, ElapsedTimeInMilliseconds: elapsedTimeInMilliseconds },\n \"Validate Auth Chat Record Failed\");\n if (error.toString() === \"Error: Request failed with status code 404\") { // backward compatibility\n return Promise.resolve({});\n } else {\n return Promise.reject();\n }\n }\n }\n\n /**\n * Submits post chat response.\n * @param requestId RequestId of the omnichannel session.\n * @param postChatResponse Post chat response to submit.\n * @param submitPostChatResponseOptionalParams: Optional parameters for submit post chat response.\n */\n public async submitPostChatResponse(requestId: string, postChatResponse: object, submitPostChatResponseOptionalParams: ISubmitPostChatResponseOptionalParams = {}): Promise<void> {\n const timer = Timer.TIMER();\n if (this.logger) {\n this.logger.log(LogLevel.INFO,\n OCSDKTelemetryEvent.SUBMITPOSTCHATSTARTED,\n { RequestId: requestId },\n \"Submit Post Chat Started\");\n }\n let endpoint = `${this.omnichannelConfiguration.orgUrl}/${OmnichannelEndpoints.LiveChatSubmitPostChatPath}/${this.omnichannelConfiguration.orgId}/${this.omnichannelConfiguration.widgetId}/${requestId}?channelId=${this.omnichannelConfiguration.channelId}`;\n const axiosInstance = axios.create();\n axiosRetry(axiosInstance, { retries: this.configuration.maxRequestRetriesOnFailure });\n\n const { authenticatedUserToken } = submitPostChatResponseOptionalParams;\n\n const headers: StringMap = Constants.defaultHeaders;\n\n if (authenticatedUserToken) {\n endpoint = `${this.omnichannelConfiguration.orgUrl}/${OmnichannelEndpoints.LiveChatAuthSubmitPostChatPath}/${this.omnichannelConfiguration.orgId}/${this.omnichannelConfiguration.widgetId}/${requestId}?channelId=${this.omnichannelConfiguration.channelId}`;\n headers[OmnichannelHTTPHeaders.authenticatedUserToken] = authenticatedUserToken;\n }\n\n const options: AxiosRequestConfig = {\n data: JSON.stringify(postChatResponse),\n headers,\n method: \"POST\",\n url: endpoint\n };\n\n return new Promise(async (resolve, reject) => {\n try {\n const response = await axiosInstance(options);\n const elapsedTimeInMilliseconds = timer.milliSecondsElapsed;\n if (this.logger) {\n this.logger.log(LogLevel.INFO,\n OCSDKTelemetryEvent.SUBMITPOSTCHATSUCCEEDED,\n { RequestId: requestId, Region: response.data.Region, ElapsedTimeInMilliseconds: elapsedTimeInMilliseconds, TransactionId: response.headers[\"transaction-id\"] },\n \"Submit Post Chat Succeeded\");\n }\n resolve();\n } catch (error) {\n const elapsedTimeInMilliseconds = timer.milliSecondsElapsed;\n if (this.logger) {\n await LoggingSanitizer.stripErrorSensitiveProperties(error);\n this.logger.log(LogLevel.ERROR,\n OCSDKTelemetryEvent.SUBMITPOSTCHATFAILED,\n { RequestId: requestId, ExceptionDetails: error, ElapsedTimeInMilliseconds: elapsedTimeInMilliseconds},\n \"Submit Post Chat Failed\");\n }\n reject();\n }\n });\n }\n\n /**\n * Submits post chat response.\n * @param requestId RequestId of the omnichannel session.\n * @param postChatResponse Post chat response to submit.\n * @param submitPostChatResponseOptionalParams: Optional parameters for submit post chat response.\n */\n public async getSurveyInviteLink(surveyOwnerId: string, surveyInviteAPIRequestBody: object, getsurveyInviteLinkOptionalParams: IGetSurveyInviteLinkOptionalParams = {}): Promise<object> {\n const timer = Timer.TIMER();\n if (this.logger) {\n this.logger.log(LogLevel.INFO,\n OCSDKTelemetryEvent.GETSURVEYINVITELINKSTARTED,\n { SurveyOwnerId: surveyOwnerId },\n \"Get Survey Invite Link Started\");\n }\n let endpoint = `${this.omnichannelConfiguration.orgUrl}/${OmnichannelEndpoints.LiveChatGetSurveyInviteLinkPath}/${this.omnichannelConfiguration.orgId}/${surveyOwnerId}`;\n const axiosInstance = axios.create();\n axiosRetry(axiosInstance, { retries: this.configuration.maxRequestRetriesOnFailure });\n\n const { authenticatedUserToken, requestId } = getsurveyInviteLinkOptionalParams;\n\n\n const headers: StringMap = Constants.defaultHeaders;\n\n if (authenticatedUserToken ) {\n endpoint = `${this.omnichannelConfiguration.orgUrl}/${OmnichannelEndpoints.LiveChatAuthGetSurveyInviteLinkPath}/${this.omnichannelConfiguration.orgId}/${surveyOwnerId}`;\n headers[OmnichannelHTTPHeaders.authenticatedUserToken] = authenticatedUserToken;\n headers[OmnichannelHTTPHeaders.widgetAppId] = this.omnichannelConfiguration.widgetId;\n }\n\n if (requestId) {\n headers[OmnichannelHTTPHeaders.requestId] = requestId;\n }\n\n const options: AxiosRequestConfig = {\n data: JSON.stringify(surveyInviteAPIRequestBody),\n headers,\n method: \"POST\",\n url: endpoint\n };\n\n return new Promise(async (resolve, reject) => {\n try {\n const response = await axiosInstance(options);\n const { data } = response;\n const elapsedTimeInMilliseconds = timer.milliSecondsElapsed;\n if (this.logger) {\n this.logger.log(LogLevel.INFO,\n OCSDKTelemetryEvent.GETSURVEYINVITELINKSUCCEEDED,\n { Region: response.data.Region, ElapsedTimeInMilliseconds: elapsedTimeInMilliseconds, TransactionId: response.headers[\"transaction-id\"] },\n \"Get Survey Invite Link Succeeded\");\n }\n resolve(data);\n } catch (error) {\n const elapsedTimeInMilliseconds = timer.milliSecondsElapsed;\n if (this.logger) {\n await LoggingSanitizer.stripErrorSensitiveProperties(error);\n this.logger.log(LogLevel.ERROR,\n OCSDKTelemetryEvent.GETSURVEYINVITELINKFAILED,\n { ExceptionDetails: error, ElapsedTimeInMilliseconds: elapsedTimeInMilliseconds },\n \"Get Survey Invite Link Failed\");\n }\n reject();\n }\n });\n }\n\n /**\n * Get chat transcripts for customer.\n * @param requestId RequestId of the omnichannel session.\n * @param chatId Chat thread Id.\n * @param token Skype token.\n * @param getChatTranscriptsOptionalParams Optional parameters for get chat transcripts.\n */\n public async getChatTranscripts(requestId: string, chatId: string, token: string, getChatTranscriptsOptionalParams: IGetChatTranscriptsOptionalParams = {}): Promise<string> {\n const timer = Timer.TIMER();\n if (this.logger) {\n this.logger.log(LogLevel.INFO,\n OCSDKTelemetryEvent.GETCHATTRANSCRIPTSTARTED,\n { RequestId: requestId },\n \"Get Chat Transcript Started\");\n }\n let endpoint = `${this.omnichannelConfiguration.orgUrl}/${OmnichannelEndpoints.LiveChatGetChatTranscriptPath}/${chatId}/${requestId}?channelId=${this.omnichannelConfiguration.channelId}`;\n const axiosInstance = axios.create();\n axiosRetry(axiosInstance, { retries: this.configuration.maxRequestRetriesOnFailure });\n\n const { authenticatedUserToken, currentLiveChatVersion } = getChatTranscriptsOptionalParams;\n\n const headers: StringMap = Constants.defaultHeaders;\n headers[OmnichannelHTTPHeaders.organizationId] = this.omnichannelConfiguration.orgId;\n headers[OmnichannelHTTPHeaders.widgetAppId] = this.omnichannelConfiguration.widgetId;\n headers[OmnichannelHTTPHeaders.authorization] = token;\n\n if (this.liveChatVersion === LiveChatVersion.V2 || (currentLiveChatVersion && currentLiveChatVersion === LiveChatVersion.V2)){\n endpoint = `${this.omnichannelConfiguration.orgUrl}/${OmnichannelEndpoints.LiveChatv2GetChatTranscriptPath}/${chatId}/${requestId}?channelId=${this.omnichannelConfiguration.channelId}`;\n if (authenticatedUserToken) {\n endpoint = `${this.omnichannelConfiguration.orgUrl}/${OmnichannelEndpoints.LiveChatv2AuthGetChatTranscriptPath}/${chatId}/${requestId}?channelId=${this.omnichannelConfiguration.channelId}`;\n }\n }\n else if (authenticatedUserToken) {\n endpoint = `${this.omnichannelConfiguration.orgUrl}/${OmnichannelEndpoints.LiveChatAuthGetChatTranscriptPath}/${chatId}/${requestId}?channelId=${this.omnichannelConfiguration.channelId}`; \n }\n\n const options: AxiosRequestConfig = {\n headers,\n method: \"GET\",\n url: endpoint\n };\n\n return new Promise(async (resolve, reject) => {\n try {\n const response = await axiosInstance(options);\n const elapsedTimeInMilliseconds = timer.milliSecondsElapsed;\n const { data } = response;\n if (this.logger) {\n this.logger.log(LogLevel.INFO,\n OCSDKTelemetryEvent.GETCHATTRANSCRIPTSUCCEEDED,\n { RequestId: requestId, Region: response.data.Region, ElapsedTimeInMilliseconds: elapsedTimeInMilliseconds, TransactionId: response.headers[\"transaction-id\"] },\n \"Get Chat Transcript Succeeded\");\n }\n resolve(data);\n } catch (error) {\n const elapsedTimeInMilliseconds = timer.milliSecondsElapsed;\n if (this.logger) {\n await LoggingSanitizer.stripErrorSensitiveProperties(error);\n this.logger.log(LogLevel.ERROR,\n OCSDKTelemetryEvent.GETCHATTRANSCRIPTFAILED,\n { RequestId: requestId, ExceptionDetails: error, ElapsedTimeInMilliseconds: elapsedTimeInMilliseconds},\n \"Get Chat Transcript Failed\");\n }\n reject(error);\n }\n });\n }\n\n /**\n * Email transcript to customer.\n * @param requestId RequestId of the omnichannel session.\n * @param token Skype token.\n * @param emailRequestBody Email request body.\n * @param emailTranscriptOptionalParams Optional parameters for email transcript.\n */\n public async emailTranscript(requestId: string, token: string, emailRequestBody: object, emailTranscriptOptionalParams: IEmailTranscriptOptionalParams = {}): Promise<void> {\n const timer = Timer.TIMER();\n if (this.logger) {\n this.logger.log(LogLevel.INFO,\n OCSDKTelemetryEvent.EMAILTRANSCRIPTSTARTED,\n { RequestId: requestId },\n \"Email Transcript Started\");\n }\n let endpoint = `${this.omnichannelConfiguration.orgUrl}/${OmnichannelEndpoints.LiveChatTranscriptEmailRequestPath}/${requestId}?channelId=${this.omnichannelConfiguration.channelId}`;\n const axiosInstance = axios.create();\n axiosRetry(axiosInstance, { retries: this.configuration.maxRequestRetriesOnFailure });\n\n const { authenticatedUserToken } = emailTranscriptOptionalParams;\n\n const headers: StringMap = Constants.defaultHeaders;\n headers[OmnichannelHTTPHeaders.organizationId] = this.omnichannelConfiguration.orgId;\n headers[OmnichannelHTTPHeaders.widgetAppId] = this.omnichannelConfiguration.widgetId;\n headers[OmnichannelHTTPHeaders.authorization] = token;\n\n if (authenticatedUserToken) {\n endpoint = `${this.omnichannelConfiguration.orgUrl}/${OmnichannelEndpoints.LiveChatAuthTranscriptEmailRequestPath}/${requestId}?channelId=${this.omnichannelConfiguration.channelId}`;\n }\n\n const options: AxiosRequestConfig = {\n data: JSON.stringify(emailRequestBody),\n headers,\n method: \"POST\",\n url: endpoint\n };\n\n return new Promise(async (resolve, reject) => {\n try {\n const response = await axiosInstance(options);\n const elapsedTimeInMilliseconds = timer.milliSecondsElapsed;\n if (this.logger) {\n this.logger.log(LogLevel.INFO,\n OCSDKTelemetryEvent.EMAILTRANSCRIPTSUCCEEDED,\n { RequestId: requestId, Region: response.data.Region, ElapsedTimeInMilliseconds: elapsedTimeInMilliseconds, TransactionId: response.headers[\"transaction-id\"] },\n \"Email Transcript Succeeded\");\n }\n resolve();\n } catch (error) {\n const elapsedTimeInMilliseconds = timer.milliSecondsElapsed;\n if (this.logger) {\n await LoggingSanitizer.stripErrorSensitiveProperties(error);\n this.logger.log(LogLevel.ERROR,\n OCSDKTelemetryEvent.EMAILTRANSCRIPTFAILED,\n { RequestId: requestId, ExceptionDetails: error, ElapsedTimeInMilliseconds: elapsedTimeInMilliseconds},\n \"Email Transcript Failed\");\n }\n reject();\n }\n });\n }\n\n /**\n * Fetch data masking info of the org.\n * @param requestId RequestId of the omnichannel session (Optional).\n */\n public async fetchDataMaskingInfo(requestId: string): Promise<IDataMaskingInfo> {\n const timer = Timer.TIMER();\n if (this.logger) {\n this.logger.log(LogLevel.INFO,\n OCSDKTelemetryEvent.FETCHDATAMASKINGSTARTED,\n { RequestId: requestId },\n \"Fetch Data Masking Started\");\n }\n if (!requestId) {\n requestId = uuidv4();\n }\n\n const endpoint = `${this.omnichannelConfiguration.orgUrl}/${OmnichannelEndpoints.LiveChatFetchDataMaskingInfoPath}/${this.omnichannelConfiguration.orgId}`;\n const axiosInstance = axios.create();\n axiosRetry(axiosInstance, { retries: this.configuration.maxRequestRetriesOnFailure });\n\n const headers: StringMap = Constants.defaultHeaders;\n headers[OmnichannelHTTPHeaders.organizationId] = this.omnichannelConfiguration.orgId;\n headers[OmnichannelHTTPHeaders.requestId] = requestId;\n\n const options: AxiosRequestConfig = {\n headers,\n method: \"GET\",\n url: endpoint\n };\n\n return new Promise(async (resolve, reject) => {\n try {\n const response = await axiosInstance(options);\n const elapsedTimeInMilliseconds = timer.milliSecondsElapsed;\n const { data } = response;\n if (this.logger) {\n this.logger.log(LogLevel.INFO,\n OCSDKTelemetryEvent.FETCHDATAMASKINGSUCCEEDED,\n { RequestId: requestId, Region: response.data.Region, ElapsedTimeInMilliseconds: elapsedTimeInMilliseconds, TransactionId: response.headers[\"transaction-id\"] },\n \"Fetch Data Masking Succeeded\");\n }\n resolve(data);\n } catch (error) {\n const elapsedTimeInMilliseconds = timer.milliSecondsElapsed;\n if (this.logger) {\n await LoggingSanitizer.stripErrorSensitiveProperties(error);\n this.logger.log(LogLevel.ERROR,\n OCSDKTelemetryEvent.FETCHDATAMASKINGFAILED,\n { RequestId: requestId, ExceptionDetails: error, ElapsedTimeInMilliseconds: elapsedTimeInMilliseconds},\n \"Fetch Data Masking Failed\");\n }\n reject();\n }\n });\n }\n\n /**\n * Makes a secondary channel event network call to Omnichannel.\n * @param requestId RequestId to use for secondary channel event\n * @param secondaryChannelEventRequestBody secondaryChannel event request body\n * @param secondaryChannelEventOptionalParams Optional parameters for secondary channel events.\n */\n public async makeSecondaryChannelEventRequest(requestId: string, secondaryChannelEventRequestBody: object, secondaryChannelEventOptionalParams: ISecondaryChannelEventOptionalParams = {}): Promise<void> {\n const timer = Timer.TIMER();\n if (this.logger) {\n this.logger.log(LogLevel.INFO,\n OCSDKTelemetryEvent.SECONDARYCHANNELEVENTREQUESTSTARTED,\n { RequestId: requestId },\n \"Secondary Channel Event Request Started\");\n }\n let endpoint = `${this.omnichannelConfiguration.orgUrl}/${OmnichannelEndpoints.LiveChatSecondaryChannelEventPath}/${this.omnichannelConfiguration.orgId}/${this.omnichannelConfiguration.widgetId}/${requestId}`;\n const axiosInstance = axios.create();\n axiosRetry(axiosInstance, { retries: this.configuration.maxRequestRetriesOnFailure });\n\n const { authenticatedUserToken } = secondaryChannelEventOptionalParams;\n\n const headers: StringMap = Constants.defaultHeaders;\n headers[OmnichannelHTTPHeaders.organizationId] = this.omnichannelConfiguration.orgId;\n\n if (authenticatedUserToken) {\n headers[OmnichannelHTTPHeaders.authenticatedUserToken] = authenticatedUserToken;\n endpoint = `${this.omnichannelConfiguration.orgUrl}/${OmnichannelEndpoints.LiveChatAuthSecondaryChannelEventPath}/${this.omnichannelConfiguration.orgId}/${this.omnichannelConfiguration.widgetId}/${requestId}`;\n }\n\n endpoint += \"?channelId=\" + Constants.defaultChannelId;\n\n const options: AxiosRequestConfig = {\n data: JSON.stringify(secondaryChannelEventRequestBody),\n headers,\n method: \"POST\",\n url: endpoint\n };\n\n try {\n const response = await axiosInstance(options);\n const elapsedTimeInMilliseconds = timer.milliSecondsElapsed;\n const { data } = response;\n if (this.logger) {\n this.logger.log(LogLevel.INFO,\n OCSDKTelemetryEvent.SECONDARYCHANNELEVENTREQUESTSUCCEEDED,\n { RequestId: requestId, Region: data.Region, ElapsedTimeInMilliseconds: elapsedTimeInMilliseconds, TransactionId: response.headers[\"transaction-id\"] },\n \"Secondary Channel Event Request Succeeded\");\n }\n } catch (error) {\n const elapsedTimeInMilliseconds = timer.milliSecondsElapsed;\n if (this.logger) {\n await LoggingSanitizer.stripErrorSensitiveProperties(error);\n this.logger.log(LogLevel.ERROR,\n OCSDKTelemetryEvent.SECONDARYCHANNELEVENTREQUESTFAILED,\n { RequestId: requestId, ExceptionDetails: error, ElapsedTimeInMilliseconds: elapsedTimeInMilliseconds},\n \"Secondary Channel Event Request Failed\");\n }\n throw error;\n }\n }\n \n /** Send typing indicator\n * @param requestId RequestId of the omnichannel session.\n */\n public async sendTypingIndicator(requestId: string, currentLiveChatVersion: number, sendTypingIndicatorOptionalParams: ISendTypingIndicatorOptionalParams = {}): Promise<void> { \n // avoiding logging Info for typingindicator to reduce log traffic\n if (!currentLiveChatVersion || currentLiveChatVersion !== LiveChatVersion.V2) {\n return Promise.resolve();\n }\n const timer = Timer.TIMER();\n const { customerDisplayName } = sendTypingIndicatorOptionalParams;\n if (!currentLiveChatVersion || currentLiveChatVersion !== LiveChatVersion.V2) { throw new Error('Typing indicator is only supported on v2') }\n const endpoint = `${this.omnichannelConfiguration.orgUrl}/${OmnichannelEndpoints.SendTypingIndicatorPath}/${requestId}`;\n const axiosInstance = axios.create();\n\n const headers: StringMap = Constants.defaultHeaders;\n headers[OmnichannelHTTPHeaders.organizationId] = this.omnichannelConfiguration.orgId;\n if (customerDisplayName) {\n headers[Constants.customerDisplayName] = customerDisplayName;\n }\n\n const options: AxiosRequestConfig = {\n headers,\n method: \"POST\",\n url: endpoint\n };\n return new Promise(async (resolve, reject) => {\n try {\n const response = await axiosInstance(options);\n const elapsedTimeInMilliseconds = timer.milliSecondsElapsed;\n const { data } = response;\n if (this.logger) {\n this.logger.log(LogLevel.INFO,\n OCSDKTelemetryEvent.SENDTYPINGINDICATORSUCCEEDED,\n { RequestId: requestId, Region: data.Region, ElapsedTimeInMilliseconds: elapsedTimeInMilliseconds, TransactionId: response.headers[\"transaction-id\"] },\n \"Send Typing Indicator Succeeded\");\n }\n resolve();\n } catch (error) {\n const elapsedTimeInMilliseconds = timer.milliSecondsElapsed;\n if (this.logger) {\n await LoggingSanitizer.stripErrorSensitiveProperties(error);\n this.logger.log(LogLevel.ERROR,\n OCSDKTelemetryEvent.SENDTYPINGINDICATORFAILED,\n { RequestId: requestId, ExceptionDetails: error, ElapsedTimeInMilliseconds: elapsedTimeInMilliseconds},\n \"Send Typing Indicator Failed\");\n }\n reject(error);\n }\n });\n }\n}"]},_coverageSchema:"332fd63041d2c1bcb487cc26dd0d5f7d97098a6c"},coverage=global[gcv]||(global[gcv]={});if(coverage[path]&&coverage[path].hash===hash){return coverage[path];}coverageData.hash=hash;return coverage[path]=coverageData;}();var __assign=(cov_2g5j0a6fdf.s[0]++,(cov_2g5j0a6fdf.b[0][0]++,this)&&(cov_2g5j0a6fdf.b[0][1]++,this.__assign)||(cov_2g5j0a6fdf.b[0][2]++,function(){cov_2g5j0a6fdf.f[0]++;cov_2g5j0a6fdf.s[1]++;__assign=(cov_2g5j0a6fdf.b[1][0]++,Object.assign)||(cov_2g5j0a6fdf.b[1][1]++,function(t){cov_2g5j0a6fdf.f[1]++;cov_2g5j0a6fdf.s[2]++;for(var s,i=1,n=arguments.length;i<n;i++){cov_2g5j0a6fdf.s[3]++;s=arguments[i];cov_2g5j0a6fdf.s[4]++;for(var p in s){cov_2g5j0a6fdf.s[5]++;if(Object.prototype.hasOwnProperty.call(s,p)){cov_2g5j0a6fdf.b[2][0]++;cov_2g5j0a6fdf.s[6]++;t[p]=s[p];}else{cov_2g5j0a6fdf.b[2][1]++;}}}cov_2g5j0a6fdf.s[7]++;return t;});cov_2g5j0a6fdf.s[8]++;return __assign.apply(this,arguments);}));var __awaiter=(cov_2g5j0a6fdf.s[9]++,(cov_2g5j0a6fdf.b[3][0]++,this)&&(cov_2g5j0a6fdf.b[3][1]++,this.__awaiter)||(cov_2g5j0a6fdf.b[3][2]++,function(thisArg,_arguments,P,generator){cov_2g5j0a6fdf.f[2]++;function adopt(value){cov_2g5j0a6fdf.f[3]++;cov_2g5j0a6fdf.s[10]++;return value instanceof P?(cov_2g5j0a6fdf.b[4][0]++,value):(cov_2g5j0a6fdf.b[4][1]++,new P(function(resolve){cov_2g5j0a6fdf.f[4]++;cov_2g5j0a6fdf.s[11]++;resolve(value);}));}cov_2g5j0a6fdf.s[12]++;return new((cov_2g5j0a6fdf.b[5][0]++,P)||(cov_2g5j0a6fdf.b[5][1]++,P=Promise))(function(resolve,reject){cov_2g5j0a6fdf.f[5]++;function fulfilled(value){cov_2g5j0a6fdf.f[6]++;cov_2g5j0a6fdf.s[13]++;try{cov_2g5j0a6fdf.s[14]++;step(generator.next(value));}catch(e){cov_2g5j0a6fdf.s[15]++;reject(e);}}function rejected(value){cov_2g5j0a6fdf.f[7]++;cov_2g5j0a6fdf.s[16]++;try{cov_2g5j0a6fdf.s[17]++;step(generator["throw"](value));}catch(e){cov_2g5j0a6fdf.s[18]++;reject(e);}}function step(result){cov_2g5j0a6fdf.f[8]++;cov_2g5j0a6fdf.s[19]++;result.done?(cov_2g5j0a6fdf.b[6][0]++,resolve(result.value)):(cov_2g5j0a6fdf.b[6][1]++,adopt(result.value).then(fulfilled,rejected));}cov_2g5j0a6fdf.s[20]++;step((generator=generator.apply(thisArg,(cov_2g5j0a6fdf.b[7][0]++,_arguments)||(cov_2g5j0a6fdf.b[7][1]++,[]))).next());});}));var __generator=(cov_2g5j0a6fdf.s[21]++,(cov_2g5j0a6fdf.b[8][0]++,this)&&(cov_2g5j0a6fdf.b[8][1]++,this.__generator)||(cov_2g5j0a6fdf.b[8][2]++,function(thisArg,body){cov_2g5j0a6fdf.f[9]++;var _=(cov_2g5j0a6fdf.s[22]++,{label:0,sent:function(){cov_2g5j0a6fdf.f[10]++;cov_2g5j0a6fdf.s[23]++;if(t[0]&1){cov_2g5j0a6fdf.b[9][0]++;cov_2g5j0a6fdf.s[24]++;throw t[1];}else{cov_2g5j0a6fdf.b[9][1]++;}cov_2g5j0a6fdf.s[25]++;return t[1];},trys:[],ops:[]}),f,y,t,g;cov_2g5j0a6fdf.s[26]++;return g={next:verb(0),"throw":verb(1),"return":verb(2)},(cov_2g5j0a6fdf.b[10][0]++,typeof Symbol==="function")&&(cov_2g5j0a6fdf.b[10][1]++,g[Symbol.iterator]=function(){cov_2g5j0a6fdf.f[11]++;cov_2g5j0a6fdf.s[27]++;return this;}),g;function verb(n){cov_2g5j0a6fdf.f[12]++;cov_2g5j0a6fdf.s[28]++;return function(v){cov_2g5j0a6fdf.f[13]++;cov_2g5j0a6fdf.s[29]++;return step([n,v]);};}function step(op){cov_2g5j0a6fdf.f[14]++;cov_2g5j0a6fdf.s[30]++;if(f){cov_2g5j0a6fdf.b[11][0]++;cov_2g5j0a6fdf.s[31]++;throw new TypeError("Generator is already executing.");}else{cov_2g5j0a6fdf.b[11][1]++;}cov_2g5j0a6fdf.s[32]++;while(_){cov_2g5j0a6fdf.s[33]++;try{cov_2g5j0a6fdf.s[34]++;if(f=1,(cov_2g5j0a6fdf.b[13][0]++,y)&&(cov_2g5j0a6fdf.b[13][1]++,t=op[0]&2?(cov_2g5j0a6fdf.b[14][0]++,y["return"]):(cov_2g5j0a6fdf.b[14][1]++,op[0]?(cov_2g5j0a6fdf.b[15][0]++,(cov_2g5j0a6fdf.b[16][0]++,y["throw"])||(cov_2g5j0a6fdf.b[16][1]++,((cov_2g5j0a6fdf.b[17][0]++,t=y["return"])&&(cov_2g5j0a6fdf.b[17][1]++,t.call(y)),0))):(cov_2g5j0a6fdf.b[15][1]++,y.next)))&&(cov_2g5j0a6fdf.b[13][2]++,!(t=t.call(y,op[1])).done)){cov_2g5j0a6fdf.b[12][0]++;cov_2g5j0a6fdf.s[35]++;return t;}else{cov_2g5j0a6fdf.b[12][1]++;}cov_2g5j0a6fdf.s[36]++;if(y=0,t){cov_2g5j0a6fdf.b[18][0]++;cov_2g5j0a6fdf.s[37]++;op=[op[0]&2,t.value];}else{cov_2g5j0a6fdf.b[18][1]++;}cov_2g5j0a6fdf.s[38]++;switch(op[0]){case 0:cov_2g5j0a6fdf.b[19][0]++;case 1:cov_2g5j0a6fdf.b[19][1]++;cov_2g5j0a6fdf.s[39]++;t=op;cov_2g5j0a6fdf.s[40]++;break;case 4:cov_2g5j0a6fdf.b[19][2]++;cov_2g5j0a6fdf.s[41]++;_.label++;cov_2g5j0a6fdf.s[42]++;return{value:op[1],done:false};case 5:cov_2g5j0a6fdf.b[19][3]++;cov_2g5j0a6fdf.s[43]++;_.label++;cov_2g5j0a6fdf.s[44]++;y=op[1];cov_2g5j0a6fdf.s[45]++;op=[0];cov_2g5j0a6fdf.s[46]++;continue;case 7:cov_2g5j0a6fdf.b[19][4]++;cov_2g5j0a6fdf.s[47]++;op=_.ops.pop();cov_2g5j0a6fdf.s[48]++;_.trys.pop();cov_2g5j0a6fdf.s[49]++;continue;default:cov_2g5j0a6fdf.b[19][5]++;cov_2g5j0a6fdf.s[50]++;if((cov_2g5j0a6fdf.b[21][0]++,!(t=_.trys,t=(cov_2g5j0a6fdf.b[22][0]++,t.length>0)&&(cov_2g5j0a6fdf.b[22][1]++,t[t.length-1])))&&((cov_2g5j0a6fdf.b[21][1]++,op[0]===6)||(cov_2g5j0a6fdf.b[21][2]++,op[0]===2))){cov_2g5j0a6fdf.b[20][0]++;cov_2g5j0a6fdf.s[51]++;_=0;cov_2g5j0a6fdf.s[52]++;continue;}else{cov_2g5j0a6fdf.b[20][1]++;}cov_2g5j0a6fdf.s[53]++;if((cov_2g5j0a6fdf.b[24][0]++,op[0]===3)&&((cov_2g5j0a6fdf.b[24][1]++,!t)||(cov_2g5j0a6fdf.b[24][2]++,op[1]>t[0])&&(cov_2g5j0a6fdf.b[24][3]++,op[1]<t[3]))){cov_2g5j0a6fdf.b[23][0]++;cov_2g5j0a6fdf.s[54]++;_.label=op[1];cov_2g5j0a6fdf.s[55]++;break;}else{cov_2g5j0a6fdf.b[23][1]++;}cov_2g5j0a6fdf.s[56]++;if((cov_2g5j0a6fdf.b[26][0]++,op[0]===6)&&(cov_2g5j0a6fdf.b[26][1]++,_.label<t[1])){cov_2g5j0a6fdf.b[25][0]++;cov_2g5j0a6fdf.s[57]++;_.label=t[1];cov_2g5j0a6fdf.s[58]++;t=op;cov_2g5j0a6fdf.s[59]++;break;}else{cov_2g5j0a6fdf.b[25][1]++;}cov_2g5j0a6fdf.s[60]++;if((cov_2g5j0a6fdf.b[28][0]++,t)&&(cov_2g5j0a6fdf.b[28][1]++,_.label<t[2])){cov_2g5j0a6fdf.b[27][0]++;cov_2g5j0a6fdf.s[61]++;_.label=t[2];cov_2g5j0a6fdf.s[62]++;_.ops.push(op);cov_2g5j0a6fdf.s[63]++;break;}else{cov_2g5j0a6fdf.b[27][1]++;}cov_2g5j0a6fdf.s[64]++;if(t[2]){cov_2g5j0a6fdf.b[29][0]++;cov_2g5j0a6fdf.s[65]++;_.ops.pop();}else{cov_2g5j0a6fdf.b[29][1]++;}cov_2g5j0a6fdf.s[66]++;_.trys.pop();cov_2g5j0a6fdf.s[67]++;continue;}cov_2g5j0a6fdf.s[68]++;op=body.call(thisArg,_);}catch(e){cov_2g5j0a6fdf.s[69]++;op=[6,e];cov_2g5j0a6fdf.s[70]++;y=0;}finally{cov_2g5j0a6fdf.s[71]++;f=t=0;}}cov_2g5j0a6fdf.s[72]++;if(op[0]&5){cov_2g5j0a6fdf.b[30][0]++;cov_2g5j0a6fdf.s[73]++;throw op[1];}else{cov_2g5j0a6fdf.b[30][1]++;}cov_2g5j0a6fdf.s[74]++;return{value:op[0]?(cov_2g5j0a6fdf.b[31][0]++,op[1]):(cov_2g5j0a6fdf.b[31][1]++,void 0),done:true};}}));cov_2g5j0a6fdf.s[75]++;Object.defineProperty(exports,"__esModule",{value:true});var Enums_1=(cov_2g5j0a6fdf.s[76]++,__webpack_require__(/*! ./Common/Enums */ "./src/Common/Enums.ts"));var axios_1=(cov_2g5j0a6fdf.s[77]++,__webpack_require__(/*! axios */ "./node_modules/axios/index.js"));var BrowserInfo_1=(cov_2g5j0a6fdf.s[78]++,__webpack_require__(/*! ./Utils/BrowserInfo */ "./src/Utils/BrowserInfo.ts"));var Constants_1=(cov_2g5j0a6fdf.s[79]++,__webpack_require__(/*! ./Common/Constants */ "./src/Common/Constants.ts"));var DeviceInfo_1=(cov_2g5j0a6fdf.s[80]++,__webpack_require__(/*! ./Utils/DeviceInfo */ "./src/Utils/DeviceInfo.ts"));var Locales_1=(cov_2g5j0a6fdf.s[81]++,__webpack_require__(/*! ./Common/Locales */ "./src/Common/Locales.ts"));var LoggingSanitizer_1=(cov_2g5j0a6fdf.s[82]++,__webpack_require__(/*! ./Utils/LoggingSanitizer */ "./src/Utils/LoggingSanitizer.ts"));var LogLevel_1=(cov_2g5j0a6fdf.s[83]++,__webpack_require__(/*! ./Model/LogLevel */ "./src/Model/LogLevel.ts"));var Enums_2=(cov_2g5j0a6fdf.s[84]++,__webpack_require__(/*! ./Common/Enums */ "./src/Common/Enums.ts"));var OSInfo_1=(cov_2g5j0a6fdf.s[85]++,__webpack_require__(/*! ./Utils/OSInfo */ "./src/Utils/OSInfo.ts"));var OmnichannelEndpoints_1=(cov_2g5j0a6fdf.s[86]++,__webpack_require__(/*! ./Common/OmnichannelEndpoints */ "./src/Common/OmnichannelEndpoints.ts"));var OmnichannelHTTPHeaders_1=(cov_2g5j0a6fdf.s[87]++,__webpack_require__(/*! ./Common/OmnichannelHTTPHeaders */ "./src/Common/OmnichannelHTTPHeaders.ts"));var Timer_1=(cov_2g5j0a6fdf.s[88]++,__webpack_require__(/*! ./Utils/Timer */ "./src/Utils/Timer.ts"));var axiosRetry_1=(cov_2g5j0a6fdf.s[89]++,__webpack_require__(/*! ./Utils/axiosRetry */ "./src/Utils/axiosRetry.ts"));var uuid_1=(cov_2g5j0a6fdf.s[90]++,__webpack_require__(/*! ./Utils/uuid */ "./src/Utils/uuid.ts"));var SDK=(cov_2g5j0a6fdf.s[91]++,function(){cov_2g5j0a6fdf.f[15]++;function SDK(omnichannelConfiguration,configuration,logger){cov_2g5j0a6fdf.f[16]++;cov_2g5j0a6fdf.s[92]++;if(configuration===void 0){cov_2g5j0a6fdf.b[32][0]++;cov_2g5j0a6fdf.s[93]++;configuration=SDK.defaultConfiguration;}else{cov_2g5j0a6fdf.b[32][1]++;}cov_2g5j0a6fdf.s[94]++;this.omnichannelConfiguration=omnichannelConfiguration;cov_2g5j0a6fdf.s[95]++;this.configuration=configuration;cov_2g5j0a6fdf.s[96]++;this.logger=logger;cov_2g5j0a6fdf.s[97]++;if((cov_2g5j0a6fdf.b[34][0]++,!Object.keys(this.configuration).length)||(cov_2g5j0a6fdf.b[34][1]++,typeof configuration!=="object")){cov_2g5j0a6fdf.b[33][0]++;cov_2g5j0a6fdf.s[98]++;this.configuration=SDK.defaultConfiguration;}else{cov_2g5j0a6fdf.b[33][1]++;}cov_2g5j0a6fdf.s[99]++;for(var _i=0,_a=Object.keys(SDK.defaultConfiguration);_i<_a.length;_i++){var key=(cov_2g5j0a6fdf.s[100]++,_a[_i]);cov_2g5j0a6fdf.s[101]++;if(!this.configuration.hasOwnProperty(key)){cov_2g5j0a6fdf.b[35][0]++;cov_2g5j0a6fdf.s[102]++;throw new Error("Missing '"+key+"' in SDKConfiguration");}else{cov_2g5j0a6fdf.b[35][1]++;}}var channelId=(cov_2g5j0a6fdf.s[103]++,omnichannelConfiguration.channelId);cov_2g5j0a6fdf.s[104]++;if(!Object.values(Enums_1.ChannelId).includes(channelId)){cov_2g5j0a6fdf.b[36][0]++;cov_2g5j0a6fdf.s[105]++;throw new Error("Invalid channelId");}else{cov_2g5j0a6fdf.b[36][1]++;}var currentOmnichannelConfigurationParameters=(cov_2g5j0a6fdf.s[106]++,Object.keys(omnichannelConfiguration));cov_2g5j0a6fdf.s[107]++;for(var _b=0,_c=Constants_1.default.requiredOmnichannelConfigurationParameters;_b<_c.length;_b++){var key=(cov_2g5j0a6fdf.s[108]++,_c[_b]);cov_2g5j0a6fdf.s[109]++;if(!currentOmnichannelConfigurationParameters.includes(key)){cov_2g5j0a6fdf.b[37][0]++;cov_2g5j0a6fdf.s[110]++;throw new Error("Missing '"+key+"' in OmnichannelConfiguration");}else{cov_2g5j0a6fdf.b[37][1]++;}}cov_2g5j0a6fdf.s[111]++;this.liveChatVersion=Enums_1.LiveChatVersion.V1;}cov_2g5j0a6fdf.s[112]++;SDK.prototype.getChatConfig=function(requestId,bypassCache){cov_2g5j0a6fdf.f[17]++;cov_2g5j0a6fdf.s[113]++;if(bypassCache===void 0){cov_2g5j0a6fdf.b[38][0]++;cov_2g5j0a6fdf.s[114]++;bypassCache=false;}else{cov_2g5j0a6fdf.b[38][1]++;}cov_2g5j0a6fdf.s[115]++;return __awaiter(this,void 0,void 0,function(){cov_2g5j0a6fdf.f[18]++;var timer,endpoint,axiosInstance,headers,response,elapsedTimeInMilliseconds,data;cov_2g5j0a6fdf.s[116]++;return __generator(this,function(_a){cov_2g5j0a6fdf.f[19]++;cov_2g5j0a6fdf.s[117]++;switch(_a.label){case 0:cov_2g5j0a6fdf.b[39][0]++;cov_2g5j0a6fdf.s[118]++;timer=Timer_1.Timer.TIMER();cov_2g5j0a6fdf.s[119]++;if(this.logger){cov_2g5j0a6fdf.b[40][0]++;cov_2g5j0a6fdf.s[120]++;this.logger.log(LogLevel_1.LogLevel.INFO,Enums_2.OCSDKTelemetryEvent.GETCHATCONFIG,{RequestId:requestId},"Get Chat Config Started");}else{cov_2g5j0a6fdf.b[40][1]++;}cov_2g5j0a6fdf.s[121]++;if(!requestId){cov_2g5j0a6fdf.b[41][0]++;cov_2g5j0a6fdf.s[122]++;requestId=uuid_1.uuidv4();}else{cov_2g5j0a6fdf.b[41][1]++;}cov_2g5j0a6fdf.s[123]++;endpoint=this.omnichannelConfiguration.orgUrl+"/"+OmnichannelEndpoints_1.default.LiveChatConfigPath+"/"+this.omnichannelConfiguration.orgId+"/"+this.omnichannelConfiguration.widgetId+"?requestId="+requestId+"&channelId="+this.omnichannelConfiguration.channelId;cov_2g5j0a6fdf.s[124]++;axiosInstance=axios_1.default.create();cov_2g5j0a6fdf.s[125]++;axiosRetry_1.default(axiosInstance,{retries:this.configuration.maxRequestRetriesOnFailure});cov_2g5j0a6fdf.s[126]++;headers={};cov_2g5j0a6fdf.s[127]++;if(bypassCache){cov_2g5j0a6fdf.b[42][0]++;cov_2g5j0a6fdf.s[128]++;headers=__assign(__assign({},Constants_1.default.bypassCacheHeaders),headers);}else{cov_2g5j0a6fdf.b[42][1]++;}cov_2g5j0a6fdf.s[129]++;return[4,axiosInstance.get(endpoint,{headers:headers})];case 1:cov_2g5j0a6fdf.b[39][1]++;cov_2g5j0a6fdf.s[130]++;response=_a.sent();cov_2g5j0a6fdf.s[131]++;elapsedTimeInMilliseconds=timer.milliSecondsElapsed;cov_2g5j0a6fdf.s[132]++;data=response.data;cov_2g5j0a6fdf.s[133]++;if((cov_2g5j0a6fdf.b[44][0]++,data.LiveChatVersion)&&(cov_2g5j0a6fdf.b[44][1]++,data.LiveChatVersion===Enums_1.LiveChatVersion.V2)){cov_2g5j0a6fdf.b[43][0]++;cov_2g5j0a6fdf.s[134]++;this.liveChatVersion=data.LiveChatVersion;}else{cov_2g5j0a6fdf.b[43][1]++;}cov_2g5j0a6fdf.s[135]++;data.headers={};cov_2g5j0a6fdf.s[136]++;if((cov_2g5j0a6fdf.b[46][0]++,response.headers)&&(cov_2g5j0a6fdf.b[46][1]++,response.headers["date"])){cov_2g5j0a6fdf.b[45][0]++;cov_2g5j0a6fdf.s[137]++;data.headers["date"]=response.headers["date"];}else{cov_2g5j0a6fdf.b[45][1]++;}cov_2g5j0a6fdf.s[138]++;if(this.logger){cov_2g5j0a6fdf.b[47][0]++;cov_2g5j0a6fdf.s[139]++;this.logger.log(LogLevel_1.LogLevel.INFO,Enums_2.OCSDKTelemetryEvent.GETCHATCONFIGSUCCESS,{RequestId:requestId,Region:response.data.Region,ElapsedTimeInMilliseconds:elapsedTimeInMilliseconds,TransactionId:response.headers["transaction-id"]},"Get Chat config succeeded");}else{cov_2g5j0a6fdf.b[47][1]++;}cov_2g5j0a6fdf.s[140]++;return[2,data];}});});};cov_2g5j0a6fdf.s[141]++;SDK.prototype.getLWIDetails=function(requestId,getLWIDetailsOptionalParams){cov_2g5j0a6fdf.f[20]++;cov_2g5j0a6fdf.s[142]++;if(getLWIDetailsOptionalParams===void 0){cov_2g5j0a6fdf.b[48][0]++;cov_2g5j0a6fdf.s[143]++;getLWIDetailsOptionalParams={};}else{cov_2g5j0a6fdf.b[48][1]++;}cov_2g5j0a6fdf.s[144]++;return __awaiter(this,void 0,void 0,function(){cov_2g5j0a6fdf.f[21]++;var timer,endpoint,axiosInstance,authenticatedUserToken,reconnectId,headers,options;var _this=(cov_2g5j0a6fdf.s[145]++,this);cov_2g5j0a6fdf.s[146]++;return __generator(this,function(_a){cov_2g5j0a6fdf.f[22]++;cov_2g5j0a6fdf.s[147]++;timer=Timer_1.Timer.TIMER();cov_2g5j0a6fdf.s[148]++;if(this.logger){cov_2g5j0a6fdf.b[49][0]++;cov_2g5j0a6fdf.s[149]++;this.logger.log(LogLevel_1.LogLevel.INFO,Enums_2.OCSDKTelemetryEvent.GETLWISTATUSSTARTED,{RequestId:requestId},"Get LWI Details Started");}else{cov_2g5j0a6fdf.b[49][1]++;}cov_2g5j0a6fdf.s[150]++;if(!requestId){cov_2g5j0a6fdf.b[50][0]++;cov_2g5j0a6fdf.s[151]++;requestId=uuid_1.uuidv4();}else{cov_2g5j0a6fdf.b[50][1]++;}cov_2g5j0a6fdf.s[152]++;endpoint=this.omnichannelConfiguration.orgUrl+"/"+OmnichannelEndpoints_1.default.LiveChatLiveWorkItemDetailsPath+"/"+this.omnichannelConfiguration.orgId+"/"+this.omnichannelConfiguration.widgetId+"/"+requestId;cov_2g5j0a6fdf.s[153]++;axiosInstance=axios_1.default.create();cov_2g5j0a6fdf.s[154]++;axiosRetry_1.default(axiosInstance,{retries:this.configuration.maxRequestRetriesOnFailure});cov_2g5j0a6fdf.s[155]++;authenticatedUserToken=getLWIDetailsOptionalParams.authenticatedUserToken,reconnectId=getLWIDetailsOptionalParams.reconnectId;cov_2g5j0a6fdf.s[156]++;headers=Constants_1.default.defaultHeaders;cov_2g5j0a6fdf.s[157]++;if(authenticatedUserToken){cov_2g5j0a6fdf.b[51][0]++;cov_2g5j0a6fdf.s[158]++;endpoint=this.omnichannelConfiguration.orgUrl+"/"+OmnichannelEndpoints_1.default.LiveChatAuthLiveWorkItemDetailsPath+"/"+this.omnichannelConfiguration.orgId+"/"+this.omnichannelConfiguration.widgetId+"/"+requestId;cov_2g5j0a6fdf.s[159]++;headers[OmnichannelHTTPHeaders_1.default.authenticatedUserToken]=authenticatedUserToken;}else{cov_2g5j0a6fdf.b[51][1]++;}cov_2g5j0a6fdf.s[160]++;if(reconnectId){cov_2g5j0a6fdf.b[52][0]++;cov_2g5j0a6fdf.s[161]++;endpoint+="/"+reconnectId;}else{cov_2g5j0a6fdf.b[52][1]++;}cov_2g5j0a6fdf.s[162]++;endpoint+="?channelId="+this.omnichannelConfiguration.channelId;cov_2g5j0a6fdf.s[163]++;options={headers:headers,method:"GET",url:endpoint};cov_2g5j0a6fdf.s[164]++;return[2,new Promise(function(resolve,reject){cov_2g5j0a6fdf.f[23]++;cov_2g5j0a6fdf.s[165]++;return __awaiter(_this,void 0,void 0,function(){cov_2g5j0a6fdf.f[24]++;var response,elapsedTimeInMilliseconds,data,error_1,elapsedTimeInMilliseconds;cov_2g5j0a6fdf.s[166]++;return __generator(this,function(_a){cov_2g5j0a6fdf.f[25]++;cov_2g5j0a6fdf.s[167]++;switch(_a.label){case 0:cov_2g5j0a6fdf.b[53][0]++;cov_2g5j0a6fdf.s[168]++;_a.trys.push([0,2,,5]);cov_2g5j0a6fdf.s[169]++;return[4,axiosInstance(options)];case 1:cov_2g5j0a6fdf.b[53][1]++;cov_2g5j0a6fdf.s[170]++;response=_a.sent();cov_2g5j0a6fdf.s[171]++;elapsedTimeInMilliseconds=timer.milliSecondsElapsed;cov_2g5j0a6fdf.s[172]++;data=response.data;cov_2g5j0a6fdf.s[173]++;if(this.logger){cov_2g5j0a6fdf.b[54][0]++;cov_2g5j0a6fdf.s[174]++;this.logger.log(LogLevel_1.LogLevel.INFO,Enums_2.OCSDKTelemetryEvent.GETLWISTATUSSUCCEEDED,{RequestId:requestId,Region:response.data.Region,ElapsedTimeInMilliseconds:elapsedTimeInMilliseconds,TransactionId:response.headers["transaction-id"]},"Get LWI Details succeeded");}else{cov_2g5j0a6fdf.b[54][1]++;}cov_2g5j0a6fdf.s[175]++;resolve(data);cov_2g5j0a6fdf.s[176]++;return[3,5];case 2:cov_2g5j0a6fdf.b[53][2]++;cov_2g5j0a6fdf.s[177]++;error_1=_a.sent();cov_2g5j0a6fdf.s[178]++;elapsedTimeInMilliseconds=timer.milliSecondsElapsed;cov_2g5j0a6fdf.s[179]++;if(!this.logger){cov_2g5j0a6fdf.b[55][0]++;cov_2g5j0a6fdf.s[180]++;return[3,4];}else{cov_2g5j0a6fdf.b[55][1]++;}cov_2g5j0a6fdf.s[181]++;return[4,LoggingSanitizer_1.LoggingSanitizer.stripErrorSensitiveProperties(error_1)];case 3:cov_2g5j0a6fdf.b[53][3]++;cov_2g5j0a6fdf.s[182]++;_a.sent();cov_2g5j0a6fdf.s[183]++;this.logger.log(LogLevel_1.LogLevel.ERROR,Enums_2.OCSDKTelemetryEvent.GETLWISTATUSFAILED,{RequestId:requestId,ExceptionDetails:error_1,ElapsedTimeInMilliseconds:elapsedTimeInMilliseconds},"Get LWI Details failed");cov_2g5j0a6fdf.s[184]++;_a.label=4;case 4:cov_2g5j0a6fdf.b[53][4]++;cov_2g5j0a6fdf.s[185]++;reject();cov_2g5j0a6fdf.s[186]++;return[3,5];case 5:cov_2g5j0a6fdf.b[53][5]++;cov_2g5j0a6fdf.s[187]++;return[2];}});});})];});});};cov_2g5j0a6fdf.s[188]++;SDK.prototype.getChatToken=function(requestId,getChatTokenOptionalParams,currentRetryCount){cov_2g5j0a6fdf.f[26]++;cov_2g5j0a6fdf.s[189]++;if(getChatTokenOptionalParams===void 0){cov_2g5j0a6fdf.b[56][0]++;cov_2g5j0a6fdf.s[190]++;getChatTokenOptionalParams={};}else{cov_2g5j0a6fdf.b[56][1]++;}cov_2g5j0a6fdf.s[191]++;if(currentRetryCount===void 0){cov_2g5j0a6fdf.b[57][0]++;cov_2g5j0a6fdf.s[192]++;currentRetryCount=0;}else{cov_2g5j0a6fdf.b[57][1]++;}cov_2g5j0a6fdf.s[193]++;return __awaiter(this,void 0,void 0,function(){cov_2g5j0a6fdf.f[27]++;var timer,reconnectId,authenticatedUserToken,currentLiveChatVersion,headers,endpoint,options,axiosInstance;var _this=(cov_2g5j0a6fdf.s[194]++,this);cov_2g5j0a6fdf.s[195]++;return __generator(this,function(_a){cov_2g5j0a6fdf.f[28]++;cov_2g5j0a6fdf.s[196]++;timer=Timer_1.Timer.TIMER();cov_2g5j0a6fdf.s[197]++;reconnectId=getChatTokenOptionalParams.reconnectId,authenticatedUserToken=getChatTokenOptionalParams.authenticatedUserToken,currentLiveChatVersion=getChatTokenOptionalParams.currentLiveChatVersion;cov_2g5j0a6fdf.s[198]++;if(this.logger){cov_2g5j0a6fdf.b[58][0]++;cov_2g5j0a6fdf.s[199]++;this.logger.log(LogLevel_1.LogLevel.INFO,Enums_2.OCSDKTelemetryEvent.GETCHATTOKENSTARTED,{RequestId:requestId},"Get Chat Token Started");}else{cov_2g5j0a6fdf.b[58][1]++;}cov_2g5j0a6fdf.s[200]++;if(currentRetryCount<0){cov_2g5j0a6fdf.b[59][0]++;cov_2g5j0a6fdf.s[201]++;throw new Error("Invalid currentRetryCount");}else{cov_2g5j0a6fdf.b[59][1]++;}cov_2g5j0a6fdf.s[202]++;if(!requestId){cov_2g5j0a6fdf.b[60][0]++;cov_2g5j0a6fdf.s[203]++;requestId=uuid_1.uuidv4();}else{cov_2g5j0a6fdf.b[60][1]++;}cov_2g5j0a6fdf.s[204]++;headers=Constants_1.default.defaultHeaders;cov_2g5j0a6fdf.s[205]++;endpoint=this.omnichannelConfiguration.orgUrl+"/"+OmnichannelEndpoints_1.default.LiveChatGetChatTokenPath+"/"+this.omnichannelConfiguration.orgId+"/"+this.omnichannelConfiguration.widgetId+"/"+requestId;cov_2g5j0a6fdf.s[206]++;if((cov_2g5j0a6fdf.b[62][0]++,this.liveChatVersion===Enums_1.LiveChatVersion.V2)||(cov_2g5j0a6fdf.b[62][1]++,currentLiveChatVersion)&&(cov_2g5j0a6fdf.b[62][2]++,currentLiveChatVersion===Enums_1.LiveChatVersion.V2)){cov_2g5j0a6fdf.b[61][0]++;cov_2g5j0a6fdf.s[207]++;endpoint=this.omnichannelConfiguration.orgUrl+"/"+OmnichannelEndpoints_1.default.LiveChatv2GetChatTokenPath+"/"+this.omnichannelConfiguration.orgId+"/"+this.omnichannelConfiguration.widgetId+"/"+requestId;cov_2g5j0a6fdf.s[208]++;if(authenticatedUserToken){cov_2g5j0a6fdf.b[63][0]++;cov_2g5j0a6fdf.s[209]++;endpoint=this.omnichannelConfiguration.orgUrl+"/"+OmnichannelEndpoints_1.default.LiveChatv2AuthGetChatTokenPath+"/"+this.omnichannelConfiguration.orgId+"/"+this.omnichannelConfiguration.widgetId+"/"+requestId;cov_2g5j0a6fdf.s[210]++;headers[OmnichannelHTTPHeaders_1.default.authenticatedUserToken]=authenticatedUserToken;}else{cov_2g5j0a6fdf.b[63][1]++;}}else{cov_2g5j0a6fdf.b[61][1]++;cov_2g5j0a6fdf.s[211]++;if(authenticatedUserToken){cov_2g5j0a6fdf.b[64][0]++;cov_2g5j0a6fdf.s[212]++;endpoint=this.omnichannelConfiguration.orgUrl+"/"+OmnichannelEndpoints_1.default.LiveChatAuthGetChatTokenPath+"/"+this.omnichannelConfiguration.orgId+"/"+this.omnichannelConfiguration.widgetId+"/"+requestId;cov_2g5j0a6fdf.s[213]++;headers[OmnichannelHTTPHeaders_1.default.authenticatedUserToken]=authenticatedUserToken;}else{cov_2g5j0a6fdf.b[64][1]++;}}cov_2g5j0a6fdf.s[214]++;if(reconnectId){cov_2g5j0a6fdf.b[65][0]++;cov_2g5j0a6fdf.s[215]++;endpoint+="/"+reconnectId;}else{cov_2g5j0a6fdf.b[65][1]++;}cov_2g5j0a6fdf.s[216]++;endpoint+="?channelId="+this.omnichannelConfiguration.channelId;cov_2g5j0a6fdf.s[217]++;options={headers:headers,method:"GET",url:endpoint};cov_2g5j0a6fdf.s[218]++;axiosInstance=axios_1.default.create();cov_2g5j0a6fdf.s[219]++;axiosRetry_1.default(axiosInstance,{retries:this.configuration.maxRequestRetriesOnFailure});cov_2g5j0a6fdf.s[220]++;return[2,new Promise(function(resolve,reject){cov_2g5j0a6fdf.f[29]++;cov_2g5j0a6fdf.s[221]++;return __awaiter(_this,void 0,void 0,function(){cov_2g5j0a6fdf.f[30]++;var response,elapsedTimeInMilliseconds,data,error_2,elapsedTimeInMilliseconds;var _this=(cov_2g5j0a6fdf.s[222]++,this);cov_2g5j0a6fdf.s[223]++;return __generator(this,function(_a){cov_2g5j0a6fdf.f[31]++;cov_2g5j0a6fdf.s[224]++;switch(_a.label){case 0:cov_2g5j0a6fdf.b[66][0]++;cov_2g5j0a6fdf.s[225]++;_a.trys.push([0,2,,5]);cov_2g5j0a6fdf.s[226]++;return[4,axiosInstance(options)];case 1:cov_2g5j0a6fdf.b[66][1]++;cov_2g5j0a6fdf.s[227]++;response=_a.sent();cov_2g5j0a6fdf.s[228]++;elapsedTimeInMilliseconds=timer.milliSecondsElapsed;cov_2g5j0a6fdf.s[229]++;data=response.data;cov_2g5j0a6fdf.s[230]++;if(data){cov_2g5j0a6fdf.b[67][0]++;cov_2g5j0a6fdf.s[231]++;data.requestId=requestId;cov_2g5j0a6fdf.s[232]++;if(this.logger){cov_2g5j0a6fdf.b[68][0]++;cov_2g5j0a6fdf.s[233]++;this.logger.log(LogLevel_1.LogLevel.INFO,Enums_2.OCSDKTelemetryEvent.GETCHATTOKENSUCCEEDED,{RequestId:requestId,Region:response.data.Region,ElapsedTimeInMilliseconds:elapsedTimeInMilliseconds,TransactionId:response.headers["transaction-id"]},"Get Chat Token Succeeded");}else{cov_2g5j0a6fdf.b[68][1]++;}cov_2g5j0a6fdf.s[234]++;resolve(data);cov_2g5j0a6fdf.s[235]++;return[2];}else{cov_2g5j0a6fdf.b[67][1]++;}cov_2g5j0a6fdf.s[236]++;if((cov_2g5j0a6fdf.b[70][0]++,reconnectId)&&(cov_2g5j0a6fdf.b[70][1]++,response.status===Constants_1.default.noContentStatusCode)){cov_2g5j0a6fdf.b[69][0]++;cov_2g5j0a6fdf.s[237]++;reject(response);cov_2g5j0a6fdf.s[238]++;return[2];}else{cov_2g5j0a6fdf.b[69][1]++;}cov_2g5j0a6fdf.s[239]++;return[3,5];case 2:cov_2g5j0a6fdf.b[66][2]++;cov_2g5j0a6fdf.s[240]++;error_2=_a.sent();cov_2g5j0a6fdf.s[241]++;elapsedTimeInMilliseconds=timer.milliSecondsElapsed;cov_2g5j0a6fdf.s[242]++;if(!this.logger){cov_2g5j0a6fdf.b[71][0]++;cov_2g5j0a6fdf.s[243]++;return[3,4];}else{cov_2g5j0a6fdf.b[71][1]++;}cov_2g5j0a6fdf.s[244]++;return[4,LoggingSanitizer_1.LoggingSanitizer.stripErrorSensitiveProperties(error_2)];case 3:cov_2g5j0a6fdf.b[66][3]++;cov_2g5j0a6fdf.s[245]++;_a.sent();cov_2g5j0a6fdf.s[246]++;this.logger.log(LogLevel_1.LogLevel.ERROR,Enums_2.OCSDKTelemetryEvent.GETCHATTOKENFAILED,{RequestId:requestId,ExceptionDetails:error_2,ElapsedTimeInMilliseconds:elapsedTimeInMilliseconds},"Get Chat Token Failed");cov_2g5j0a6fdf.s[247]++;_a.label=4;case 4:cov_2g5j0a6fdf.b[66][4]++;cov_2g5j0a6fdf.s[248]++;reject(error_2);cov_2g5j0a6fdf.s[249]++;return[2];case 5:cov_2g5j0a6fdf.b[66][5]++;cov_2g5j0a6fdf.s[250]++;if(currentRetryCount+1>=this.configuration.getChatTokenRetryCount){cov_2g5j0a6fdf.b[72][0]++;cov_2g5j0a6fdf.s[251]++;reject(new Error("The retry for getchattoken has exceeded its max value of "+this.configuration.getChatTokenRetryCount));cov_2g5j0a6fdf.s[252]++;return[2];}else{cov_2g5j0a6fdf.b[72][1]++;}cov_2g5j0a6fdf.s[253]++;setTimeout(function(){cov_2g5j0a6fdf.f[32]++;cov_2g5j0a6fdf.s[254]++;_this.getChatToken(requestId,getChatTokenOptionalParams,currentRetryCount+1).then(function(response){cov_2g5j0a6fdf.f[33]++;cov_2g5j0a6fdf.s[255]++;return resolve(response);}).catch(function(error){cov_2g5j0a6fdf.f[34]++;cov_2g5j0a6fdf.s[256]++;return reject(error);});},this.configuration.getChatTokenTimeBetweenRetriesOnFailure);cov_2g5j0a6fdf.s[257]++;return[2];}});});})];});});};cov_2g5j0a6fdf.s[258]++;SDK.prototype.getReconnectableChats=function(reconnectableChatsParams){cov_2g5j0a6fdf.f[35]++;cov_2g5j0a6fdf.s[259]++;return __awaiter(this,void 0,void 0,function(){cov_2g5j0a6fdf.f[36]++;var timer,authenticatedUserToken,endpoint,headers,options,axiosInstance;var _this=(cov_2g5j0a6fdf.s[260]++,this);cov_2g5j0a6fdf.s[261]++;return __generator(this,function(_a){cov_2g5j0a6fdf.f[37]++;cov_2g5j0a6fdf.s[262]++;timer=Timer_1.Timer.TIMER();cov_2g5j0a6fdf.s[263]++;authenticatedUserToken=reconnectableChatsParams.authenticatedUserToken;cov_2g5j0a6fdf.s[264]++;if(this.logger){cov_2g5j0a6fdf.b[73][0]++;cov_2g5j0a6fdf.s[265]++;this.logger.log(LogLevel_1.LogLevel.INFO,Enums_2.OCSDKTelemetryEvent.GETRECONNECTABLECHATS,"Get Reconnectable chat Started");}else{cov_2g5j0a6fdf.b[73][1]++;}cov_2g5j0a6fdf.s[266]++;endpoint=this.omnichannelConfiguration.orgUrl+"/"+OmnichannelEndpoints_1.default.LiveChatGetReconnectableChatsPath+"/"+this.omnichannelConfiguration.orgId+"/"+this.omnichannelConfiguration.widgetId+"/"+this.omnichannelConfiguration.orgId+"?channelId="+this.omnichannelConfiguration.channelId;cov_2g5j0a6fdf.s[267]++;headers=Constants_1.default.defaultHeaders;cov_2g5j0a6fdf.s[268]++;headers[OmnichannelHTTPHeaders_1.default.authenticatedUserToken]=authenticatedUserToken;cov_2g5j0a6fdf.s[269]++;options={headers:headers,method:"GET",url:endpoint};cov_2g5j0a6fdf.s[270]++;axiosInstance=axios_1.default.create();cov_2g5j0a6fdf.s[271]++;return[2,new Promise(function(resolve,reject){cov_2g5j0a6fdf.f[38]++;cov_2g5j0a6fdf.s[272]++;return __awaiter(_this,void 0,void 0,function(){cov_2g5j0a6fdf.f[39]++;var response,elapsedTimeInMilliseconds,data,error_3,elapsedTimeInMilliseconds;cov_2g5j0a6fdf.s[273]++;return __generator(this,function(_a){cov_2g5j0a6fdf.f[40]++;cov_2g5j0a6fdf.s[274]++;switch(_a.label){case 0:cov_2g5j0a6fdf.b[74][0]++;cov_2g5j0a6fdf.s[275]++;_a.trys.push([0,2,,5]);cov_2g5j0a6fdf.s[276]++;return[4,axiosInstance(options)];case 1:cov_2g5j0a6fdf.b[74][1]++;cov_2g5j0a6fdf.s[277]++;response=_a.sent();cov_2g5j0a6fdf.s[278]++;elapsedTimeInMilliseconds=timer.milliSecondsElapsed;cov_2g5j0a6fdf.s[279]++;data=response.data;cov_2g5j0a6fdf.s[280]++;if(data){cov_2g5j0a6fdf.b[75][0]++;cov_2g5j0a6fdf.s[281]++;if(this.logger){cov_2g5j0a6fdf.b[76][0]++;cov_2g5j0a6fdf.s[282]++;this.logger.log(LogLevel_1.LogLevel.INFO,Enums_2.OCSDKTelemetryEvent.GETRECONNECTABLECHATS,{Region:response.data.Region,ElapsedTimeInMilliseconds:elapsedTimeInMilliseconds,TransactionId:response.headers[Constants_1.default.transactionid]},"Get Reconnectable Chats Succeeded and old session returned");}else{cov_2g5j0a6fdf.b[76][1]++;}cov_2g5j0a6fdf.s[283]++;resolve(data);cov_2g5j0a6fdf.s[284]++;return[2];}else{cov_2g5j0a6fdf.b[75][1]++;}cov_2g5j0a6fdf.s[285]++;resolve();cov_2g5j0a6fdf.s[286]++;return[2];case 2:cov_2g5j0a6fdf.b[74][2]++;cov_2g5j0a6fdf.s[287]++;error_3=_a.sent();cov_2g5j0a6fdf.s[288]++;elapsedTimeInMilliseconds=timer.milliSecondsElapsed;cov_2g5j0a6fdf.s[289]++;if(!this.logger){cov_2g5j0a6fdf.b[77][0]++;cov_2g5j0a6fdf.s[290]++;return[3,4];}else{cov_2g5j0a6fdf.b[77][1]++;}cov_2g5j0a6fdf.s[291]++;return[4,LoggingSanitizer_1.LoggingSanitizer.stripErrorSensitiveProperties(error_3)];case 3:cov_2g5j0a6fdf.b[74][3]++;cov_2g5j0a6fdf.s[292]++;_a.sent();cov_2g5j0a6fdf.s[293]++;this.logger.log(LogLevel_1.LogLevel.ERROR,Enums_2.OCSDKTelemetryEvent.GETRECONNECTABLECHATS,{ExceptionDetails:error_3,ElapsedTimeInMilliseconds:elapsedTimeInMilliseconds},"Get Reconnectable Chats Failed");cov_2g5j0a6fdf.s[294]++;_a.label=4;case 4:cov_2g5j0a6fdf.b[74][4]++;cov_2g5j0a6fdf.s[295]++;reject(error_3);cov_2g5j0a6fdf.s[296]++;return[2];case 5:cov_2g5j0a6fdf.b[74][5]++;cov_2g5j0a6fdf.s[297]++;return[2];}});});})];});});};cov_2g5j0a6fdf.s[298]++;SDK.prototype.getReconnectAvailability=function(reconnectId){cov_2g5j0a6fdf.f[41]++;cov_2g5j0a6fdf.s[299]++;return __awaiter(this,void 0,void 0,function(){cov_2g5j0a6fdf.f[42]++;var timer,endpoint,headers,options,axiosInstance;var _this=(cov_2g5j0a6fdf.s[300]++,this);cov_2g5j0a6fdf.s[301]++;return __generator(this,function(_a){cov_2g5j0a6fdf.f[43]++;cov_2g5j0a6fdf.s[302]++;timer=Timer_1.Timer.TIMER();cov_2g5j0a6fdf.s[303]++;if(this.logger){cov_2g5j0a6fdf.b[78][0]++;cov_2g5j0a6fdf.s[304]++;this.logger.log(LogLevel_1.LogLevel.INFO,Enums_2.OCSDKTelemetryEvent.GETRECONNECTAVAILABILITY,"Get Reconnect availability started");}else{cov_2g5j0a6fdf.b[78][1]++;}cov_2g5j0a6fdf.s[305]++;endpoint=this.omnichannelConfiguration.orgUrl+"/"+OmnichannelEndpoints_1.default.LiveChatReconnectAvailabilityPath+"/"+this.omnichannelConfiguration.orgId+"/"+this.omnichannelConfiguration.widgetId+"/"+reconnectId;cov_2g5j0a6fdf.s[306]++;headers=Constants_1.default.defaultHeaders;cov_2g5j0a6fdf.s[307]++;options={headers:headers,method:"GET",url:endpoint};cov_2g5j0a6fdf.s[308]++;axiosInstance=axios_1.default.create();cov_2g5j0a6fdf.s[309]++;return[2,new Promise(function(resolve,reject){cov_2g5j0a6fdf.f[44]++;cov_2g5j0a6fdf.s[310]++;return __awaiter(_this,void 0,void 0,function(){cov_2g5j0a6fdf.f[45]++;var response,elapsedTimeInMilliseconds,data,error_4,elapsedTimeInMilliseconds;cov_2g5j0a6fdf.s[311]++;return __generator(this,function(_a){cov_2g5j0a6fdf.f[46]++;cov_2g5j0a6fdf.s[312]++;switch(_a.label){case 0:cov_2g5j0a6fdf.b[79][0]++;cov_2g5j0a6fdf.s[313]++;_a.trys.push([0,2,,5]);cov_2g5j0a6fdf.s[314]++;return[4,axiosInstance(options)];case 1:cov_2g5j0a6fdf.b[79][1]++;cov_2g5j0a6fdf.s[315]++;response=_a.sent();cov_2g5j0a6fdf.s[316]++;elapsedTimeInMilliseconds=timer.milliSecondsElapsed;cov_2g5j0a6fdf.s[317]++;data=response.data;cov_2g5j0a6fdf.s[318]++;if(data){cov_2g5j0a6fdf.b[80][0]++;cov_2g5j0a6fdf.s[319]++;if(this.logger){cov_2g5j0a6fdf.b[81][0]++;cov_2g5j0a6fdf.s[320]++;this.logger.log(LogLevel_1.LogLevel.INFO,Enums_2.OCSDKTelemetryEvent.GETRECONNECTAVAILABILITY,{Region:response.data.Region,ElapsedTimeInMilliseconds:elapsedTimeInMilliseconds,TransactionId:response.headers[Constants_1.default.transactionid]},"Get Reconnect availability Succeeded");}else{cov_2g5j0a6fdf.b[81][1]++;}cov_2g5j0a6fdf.s[321]++;resolve(data);cov_2g5j0a6fdf.s[322]++;return[2];}else{cov_2g5j0a6fdf.b[80][1]++;}cov_2g5j0a6fdf.s[323]++;if(this.logger){cov_2g5j0a6fdf.b[82][0]++;cov_2g5j0a6fdf.s[324]++;this.logger.log(LogLevel_1.LogLevel.WARN,Enums_2.OCSDKTelemetryEvent.GETRECONNECTAVAILABILITY,{Region:response.data.Region,ElapsedTimeInMilliseconds:elapsedTimeInMilliseconds,TransactionId:response.headers[Constants_1.default.transactionid]},"Get Reconnect availability didn't send any valid data.");}else{cov_2g5j0a6fdf.b[82][1]++;}cov_2g5j0a6fdf.s[325]++;resolve();cov_2g5j0a6fdf.s[326]++;return[2];case 2:cov_2g5j0a6fdf.b[79][2]++;cov_2g5j0a6fdf.s[327]++;error_4=_a.sent();cov_2g5j0a6fdf.s[328]++;elapsedTimeInMilliseconds=timer.milliSecondsElapsed;cov_2g5j0a6fdf.s[329]++;if(!this.logger){cov_2g5j0a6fdf.b[83][0]++;cov_2g5j0a6fdf.s[330]++;return[3,4];}else{cov_2g5j0a6fdf.b[83][1]++;}cov_2g5j0a6fdf.s[331]++;return[4,LoggingSanitizer_1.LoggingSanitizer.stripErrorSensitiveProperties(error_4)];case 3:cov_2g5j0a6fdf.b[79][3]++;cov_2g5j0a6fdf.s[332]++;_a.sent();cov_2g5j0a6fdf.s[333]++;this.logger.log(LogLevel_1.LogLevel.ERROR,Enums_2.OCSDKTelemetryEvent.GETRECONNECTAVAILABILITY,{ExceptionDetails:error_4,ElapsedTimeInMilliseconds:elapsedTimeInMilliseconds},"Get Reconnect Availability Failed");cov_2g5j0a6fdf.s[334]++;_a.label=4;case 4:cov_2g5j0a6fdf.b[79][4]++;cov_2g5j0a6fdf.s[335]++;reject(error_4);cov_2g5j0a6fdf.s[336]++;return[2];case 5:cov_2g5j0a6fdf.b[79][5]++;cov_2g5j0a6fdf.s[337]++;return[2];}});});})];});});};cov_2g5j0a6fdf.s[338]++;SDK.prototype.getQueueAvailability=function(requestId,queueAvailabilityOptionalParams){cov_2g5j0a6fdf.f[47]++;cov_2g5j0a6fdf.s[339]++;if(queueAvailabilityOptionalParams===void 0){cov_2g5j0a6fdf.b[84][0]++;cov_2g5j0a6fdf.s[340]++;queueAvailabilityOptionalParams={};}else{cov_2g5j0a6fdf.b[84][1]++;}cov_2g5j0a6fdf.s[341]++;return __awaiter(this,void 0,void 0,function(){cov_2g5j0a6fdf.f[48]++;var timer,endpoint,axiosInstance,authenticatedUserToken,initContext,getContext,headers,data,options;var _this=(cov_2g5j0a6fdf.s[342]++,this);cov_2g5j0a6fdf.s[343]++;return __generator(this,function(_a){cov_2g5j0a6fdf.f[49]++;cov_2g5j0a6fdf.s[344]++;timer=Timer_1.Timer.TIMER();cov_2g5j0a6fdf.s[345]++;if(this.logger){cov_2g5j0a6fdf.b[85][0]++;cov_2g5j0a6fdf.s[346]++;this.logger.log(LogLevel_1.LogLevel.INFO,Enums_2.OCSDKTelemetryEvent.GETQUEUEAVAILABILITYSTARTED,{RequestId:requestId},"Get queue availability started");}else{cov_2g5j0a6fdf.b[85][1]++;}cov_2g5j0a6fdf.s[347]++;endpoint=this.omnichannelConfiguration.orgUrl+"/"+OmnichannelEndpoints_1.default.GetQueueAvailabilityPath+"/"+this.omnichannelConfiguration.orgId+"/"+this.omnichannelConfiguration.widgetId+"/"+requestId+"?channelId=lcw";cov_2g5j0a6fdf.s[348]++;axiosInstance=axios_1.default.create();cov_2g5j0a6fdf.s[349]++;axiosRetry_1.default(axiosInstance,{retries:this.configuration.maxRequestRetriesOnFailure});cov_2g5j0a6fdf.s[350]++;authenticatedUserToken=queueAvailabilityOptionalParams.authenticatedUserToken,initContext=queueAvailabilityOptionalParams.initContext,getContext=queueAvailabilityOptionalParams.getContext;cov_2g5j0a6fdf.s[351]++;headers=Constants_1.default.defaultHeaders;cov_2g5j0a6fdf.s[352]++;if(authenticatedUserToken){cov_2g5j0a6fdf.b[86][0]++;cov_2g5j0a6fdf.s[353]++;headers[OmnichannelHTTPHeaders_1.default.authenticatedUserToken]=authenticatedUserToken;}else{cov_2g5j0a6fdf.b[86][1]++;}cov_2g5j0a6fdf.s[354]++;data=(cov_2g5j0a6fdf.b[87][0]++,initContext)||(cov_2g5j0a6fdf.b[87][1]++,{});cov_2g5j0a6fdf.s[355]++;if((cov_2g5j0a6fdf.b[89][0]++,getContext)&&(cov_2g5j0a6fdf.b[89][1]++,!window.document)){cov_2g5j0a6fdf.b[88][0]++;cov_2g5j0a6fdf.s[356]++;return[2,Promise.reject(new Error("getContext is only supported on web browsers"))];}else{cov_2g5j0a6fdf.b[88][1]++;}cov_2g5j0a6fdf.s[357]++;if(getContext){cov_2g5j0a6fdf.b[90][0]++;cov_2g5j0a6fdf.s[358]++;data.browser=BrowserInfo_1.BrowserInfo.getBrowserName();cov_2g5j0a6fdf.s[359]++;data.device=DeviceInfo_1.DeviceInfo.getDeviceType();cov_2g5j0a6fdf.s[360]++;data.originurl=window.location.href;cov_2g5j0a6fdf.s[361]++;data.os=OSInfo_1.OSInfo.getOsType();}else{cov_2g5j0a6fdf.b[90][1]++;}cov_2g5j0a6fdf.s[362]++;if(!data.locale){cov_2g5j0a6fdf.b[91][0]++;cov_2g5j0a6fdf.s[363]++;data.locale=Constants_1.default.defaultLocale;}else{cov_2g5j0a6fdf.b[91][1]++;}cov_2g5j0a6fdf.s[364]++;if((cov_2g5j0a6fdf.b[93][0]++,data.locale)&&(cov_2g5j0a6fdf.b[93][1]++,!Locales_1.default.supportedLocales.includes(data.locale))){cov_2g5j0a6fdf.b[92][0]++;cov_2g5j0a6fdf.s[365]++;return[2,Promise.reject(new Error("Unsupported locale: '"+data.locale+"'"))];}else{cov_2g5j0a6fdf.b[92][1]++;}cov_2g5j0a6fdf.s[366]++;options={data:data,headers:headers,method:"POST",url:endpoint};cov_2g5j0a6fdf.s[367]++;return[2,new Promise(function(resolve,reject){cov_2g5j0a6fdf.f[50]++;cov_2g5j0a6fdf.s[368]++;return __awaiter(_this,void 0,void 0,function(){cov_2g5j0a6fdf.f[51]++;var response,elapsedTimeInMilliseconds,data_1,error_5,elapsedTimeInMilliseconds;cov_2g5j0a6fdf.s[369]++;return __generator(this,function(_a){cov_2g5j0a6fdf.f[52]++;cov_2g5j0a6fdf.s[370]++;switch(_a.label){case 0:cov_2g5j0a6fdf.b[94][0]++;cov_2g5j0a6fdf.s[371]++;_a.trys.push([0,2,,5]);cov_2g5j0a6fdf.s[372]++;return[4,axiosInstance(options)];case 1:cov_2g5j0a6fdf.b[94][1]++;cov_2g5j0a6fdf.s[373]++;response=_a.sent();cov_2g5j0a6fdf.s[374]++;elapsedTimeInMilliseconds=timer.milliSecondsElapsed;cov_2g5j0a6fdf.s[375]++;data_1=response.data;cov_2g5j0a6fdf.s[376]++;if(data_1){cov_2g5j0a6fdf.b[95][0]++;cov_2g5j0a6fdf.s[377]++;if(this.logger){cov_2g5j0a6fdf.b[96][0]++;cov_2g5j0a6fdf.s[378]++;this.logger.log(LogLevel_1.LogLevel.INFO,Enums_2.OCSDKTelemetryEvent.GETQUEUEAVAILABILITYSUCCEEDED,{RequestId:requestId,Region:response.data.Region,ElapsedTimeInMilliseconds:elapsedTimeInMilliseconds,TransactionId:response.headers["transaction-id"]},"Get queue availability Succeeded");}else{cov_2g5j0a6fdf.b[96][1]++;}cov_2g5j0a6fdf.s[379]++;resolve(data_1);}else{cov_2g5j0a6fdf.b[95][1]++;}cov_2g5j0a6fdf.s[380]++;return[3,5];case 2:cov_2g5j0a6fdf.b[94][2]++;cov_2g5j0a6fdf.s[381]++;error_5=_a.sent();cov_2g5j0a6fdf.s[382]++;elapsedTimeInMilliseconds=timer.milliSecondsElapsed;cov_2g5j0a6fdf.s[383]++;if(!this.logger){cov_2g5j0a6fdf.b[97][0]++;cov_2g5j0a6fdf.s[384]++;return[3,4];}else{cov_2g5j0a6fdf.b[97][1]++;}cov_2g5j0a6fdf.s[385]++;return[4,LoggingSanitizer_1.LoggingSanitizer.stripErrorSensitiveProperties(error_5)];case 3:cov_2g5j0a6fdf.b[94][3]++;cov_2g5j0a6fdf.s[386]++;_a.sent();cov_2g5j0a6fdf.s[387]++;this.logger.log(LogLevel_1.LogLevel.ERROR,Enums_2.OCSDKTelemetryEvent.GETQUEUEAVAILABILITYFAILED,{RequestId:requestId,ExceptionDetails:error_5,ElapsedTimeInMilliseconds:elapsedTimeInMilliseconds},"Get queue availability failed");cov_2g5j0a6fdf.s[388]++;_a.label=4;case 4:cov_2g5j0a6fdf.b[94][4]++;cov_2g5j0a6fdf.s[389]++;reject(error_5);cov_2g5j0a6fdf.s[390]++;return[3,5];case 5:cov_2g5j0a6fdf.b[94][5]++;cov_2g5j0a6fdf.s[391]++;return[2];}});});})];});});};cov_2g5j0a6fdf.s[392]++;SDK.prototype.sessionInit=function(requestId,sessionInitOptionalParams){cov_2g5j0a6fdf.f[53]++;cov_2g5j0a6fdf.s[393]++;if(sessionInitOptionalParams===void 0){cov_2g5j0a6fdf.b[98][0]++;cov_2g5j0a6fdf.s[394]++;sessionInitOptionalParams={};}else{cov_2g5j0a6fdf.b[98][1]++;}cov_2g5j0a6fdf.s[395]++;return __awaiter(this,void 0,void 0,function(){cov_2g5j0a6fdf.f[54]++;var timer,axiosInstance,reconnectId,authenticatedUserToken,initContext,getContext,headers,endpoint,data,options;var _this=(cov_2g5j0a6fdf.s[396]++,this);cov_2g5j0a6fdf.s[397]++;return __generator(this,function(_a){cov_2g5j0a6fdf.f[55]++;cov_2g5j0a6fdf.s[398]++;timer=Timer_1.Timer.TIMER();cov_2g5j0a6fdf.s[399]++;if(this.logger){cov_2g5j0a6fdf.b[99][0]++;cov_2g5j0a6fdf.s[400]++;this.logger.log(LogLevel_1.LogLevel.INFO,Enums_2.OCSDKTelemetryEvent.SESSIONINITSTARTED,{RequestId:requestId},"Session Init Started");}else{cov_2g5j0a6fdf.b[99][1]++;}cov_2g5j0a6fdf.s[401]++;axiosInstance=axios_1.default.create();cov_2g5j0a6fdf.s[402]++;axiosRetry_1.default(axiosInstance,{retries:this.configuration.maxRequestRetriesOnFailure});cov_2g5j0a6fdf.s[403]++;reconnectId=sessionInitOptionalParams.reconnectId,authenticatedUserToken=sessionInitOptionalParams.authenticatedUserToken,initContext=sessionInitOptionalParams.initContext,getContext=sessionInitOptionalParams.getContext;cov_2g5j0a6fdf.s[404]++;headers=Constants_1.default.defaultHeaders;cov_2g5j0a6fdf.s[405]++;endpoint=this.omnichannelConfiguration.orgUrl+"/"+OmnichannelEndpoints_1.default.LiveChatSessionInitPath+"/"+this.omnichannelConfiguration.orgId+"/"+this.omnichannelConfiguration.widgetId+"/"+requestId;cov_2g5j0a6fdf.s[406]++;if(authenticatedUserToken){cov_2g5j0a6fdf.b[100][0]++;cov_2g5j0a6fdf.s[407]++;endpoint=this.omnichannelConfiguration.orgUrl+"/"+OmnichannelEndpoints_1.default.LiveChatAuthSessionInitPath+"/"+this.omnichannelConfiguration.orgId+"/"+this.omnichannelConfiguration.widgetId+"/"+requestId;cov_2g5j0a6fdf.s[408]++;headers[OmnichannelHTTPHeaders_1.default.authenticatedUserToken]=authenticatedUserToken;}else{cov_2g5j0a6fdf.b[100][1]++;}cov_2g5j0a6fdf.s[409]++;if(reconnectId){cov_2g5j0a6fdf.b[101][0]++;cov_2g5j0a6fdf.s[410]++;endpoint+="/"+reconnectId;}else{cov_2g5j0a6fdf.b[101][1]++;}cov_2g5j0a6fdf.s[411]++;endpoint+="?channelId="+this.omnichannelConfiguration.channelId;cov_2g5j0a6fdf.s[412]++;data=(cov_2g5j0a6fdf.b[102][0]++,initContext)||(cov_2g5j0a6fdf.b[102][1]++,{});cov_2g5j0a6fdf.s[413]++;if((cov_2g5j0a6fdf.b[104][0]++,getContext)&&(cov_2g5j0a6fdf.b[104][1]++,!window.document)){cov_2g5j0a6fdf.b[103][0]++;cov_2g5j0a6fdf.s[414]++;return[2,Promise.reject(new Error("getContext is only supported on web browsers"))];}else{cov_2g5j0a6fdf.b[103][1]++;}cov_2g5j0a6fdf.s[415]++;if(getContext){cov_2g5j0a6fdf.b[105][0]++;cov_2g5j0a6fdf.s[416]++;data.browser=BrowserInfo_1.BrowserInfo.getBrowserName();cov_2g5j0a6fdf.s[417]++;data.device=DeviceInfo_1.DeviceInfo.getDeviceType();cov_2g5j0a6fdf.s[418]++;data.originurl=window.location.href;cov_2g5j0a6fdf.s[419]++;data.os=OSInfo_1.OSInfo.getOsType();}else{cov_2g5j0a6fdf.b[105][1]++;}cov_2g5j0a6fdf.s[420]++;if(!data.locale){cov_2g5j0a6fdf.b[106][0]++;cov_2g5j0a6fdf.s[421]++;data.locale=Constants_1.default.defaultLocale;}else{cov_2g5j0a6fdf.b[106][1]++;}cov_2g5j0a6fdf.s[422]++;if((cov_2g5j0a6fdf.b[108][0]++,data.locale)&&(cov_2g5j0a6fdf.b[108][1]++,!Locales_1.default.supportedLocales.includes(data.locale))){cov_2g5j0a6fdf.b[107][0]++;cov_2g5j0a6fdf.s[423]++;return[2,Promise.reject(new Error("Unsupported locale: '"+data.locale+"'"))];}else{cov_2g5j0a6fdf.b[107][1]++;}cov_2g5j0a6fdf.s[424]++;options={data:data,headers:headers,method:"POST",url:endpoint};cov_2g5j0a6fdf.s[425]++;return[2,new Promise(function(resolve,reject){cov_2g5j0a6fdf.f[56]++;cov_2g5j0a6fdf.s[426]++;return __awaiter(_this,void 0,void 0,function(){cov_2g5j0a6fdf.f[57]++;var response,elapsedTimeInMilliseconds,error_6,elapsedTimeInMilliseconds;cov_2g5j0a6fdf.s[427]++;return __generator(this,function(_a){cov_2g5j0a6fdf.f[58]++;cov_2g5j0a6fdf.s[428]++;switch(_a.label){case 0:cov_2g5j0a6fdf.b[109][0]++;cov_2g5j0a6fdf.s[429]++;_a.trys.push([0,2,,5]);cov_2g5j0a6fdf.s[430]++;return[4,axiosInstance(options)];case 1:cov_2g5j0a6fdf.b[109][1]++;cov_2g5j0a6fdf.s[431]++;response=_a.sent();cov_2g5j0a6fdf.s[432]++;elapsedTimeInMilliseconds=timer.milliSecondsElapsed;cov_2g5j0a6fdf.s[433]++;if(this.logger){cov_2g5j0a6fdf.b[110][0]++;cov_2g5j0a6fdf.s[434]++;this.logger.log(LogLevel_1.LogLevel.INFO,Enums_2.OCSDKTelemetryEvent.SESSIONINITSUCCEEDED,{RequestId:requestId,Region:response.data.Region,ElapsedTimeInMilliseconds:elapsedTimeInMilliseconds,TransactionId:response.headers["transaction-id"]},"Session Init Succeeded");}else{cov_2g5j0a6fdf.b[110][1]++;}cov_2g5j0a6fdf.s[435]++;resolve();cov_2g5j0a6fdf.s[436]++;return[3,5];case 2:cov_2g5j0a6fdf.b[109][2]++;cov_2g5j0a6fdf.s[437]++;error_6=_a.sent();cov_2g5j0a6fdf.s[438]++;elapsedTimeInMilliseconds=timer.milliSecondsElapsed;cov_2g5j0a6fdf.s[439]++;if(!this.logger){cov_2g5j0a6fdf.b[111][0]++;cov_2g5j0a6fdf.s[440]++;return[3,4];}else{cov_2g5j0a6fdf.b[111][1]++;}cov_2g5j0a6fdf.s[441]++;return[4,LoggingSanitizer_1.LoggingSanitizer.stripErrorSensitiveProperties(error_6)];case 3:cov_2g5j0a6fdf.b[109][3]++;cov_2g5j0a6fdf.s[442]++;_a.sent();cov_2g5j0a6fdf.s[443]++;this.logger.log(LogLevel_1.LogLevel.ERROR,Enums_2.OCSDKTelemetryEvent.SESSIONINITFAILED,{RequestId:requestId,ExceptionDetails:error_6,ElapsedTimeInMilliseconds:elapsedTimeInMilliseconds},"Session Init Failed");cov_2g5j0a6fdf.s[444]++;_a.label=4;case 4:cov_2g5j0a6fdf.b[109][4]++;cov_2g5j0a6fdf.s[445]++;reject(error_6);cov_2g5j0a6fdf.s[446]++;return[3,5];case 5:cov_2g5j0a6fdf.b[109][5]++;cov_2g5j0a6fdf.s[447]++;return[2];}});});})];});});};cov_2g5j0a6fdf.s[448]++;SDK.prototype.sessionClose=function(requestId,sessionCloseOptionalParams){cov_2g5j0a6fdf.f[59]++;cov_2g5j0a6fdf.s[449]++;if(sessionCloseOptionalParams===void 0){cov_2g5j0a6fdf.b[112][0]++;cov_2g5j0a6fdf.s[450]++;sessionCloseOptionalParams={};}else{cov_2g5j0a6fdf.b[112][1]++;}cov_2g5j0a6fdf.s[451]++;return __awaiter(this,void 0,void 0,function(){cov_2g5j0a6fdf.f[60]++;var timer,endpoint,axiosInstance,authenticatedUserToken,isReconnectChat,isPersistentChat,chatId,headers,data,options;var _this=(cov_2g5j0a6fdf.s[452]++,this);cov_2g5j0a6fdf.s[453]++;return __generator(this,function(_a){cov_2g5j0a6fdf.f[61]++;cov_2g5j0a6fdf.s[454]++;timer=Timer_1.Timer.TIMER();cov_2g5j0a6fdf.s[455]++;if(this.logger){cov_2g5j0a6fdf.b[113][0]++;cov_2g5j0a6fdf.s[456]++;this.logger.log(LogLevel_1.LogLevel.INFO,Enums_2.OCSDKTelemetryEvent.SESSIONCLOSESTARTED,{RequestId:requestId},"Session Close Started");}else{cov_2g5j0a6fdf.b[113][1]++;}cov_2g5j0a6fdf.s[457]++;endpoint=this.omnichannelConfiguration.orgUrl+"/"+OmnichannelEndpoints_1.default.LiveChatSessionClosePath+"/"+this.omnichannelConfiguration.orgId+"/"+this.omnichannelConfiguration.widgetId+"/"+requestId+"?channelId="+this.omnichannelConfiguration.channelId;cov_2g5j0a6fdf.s[458]++;axiosInstance=axios_1.default.create();cov_2g5j0a6fdf.s[459]++;axiosRetry_1.default(axiosInstance,{retries:this.configuration.maxRequestRetriesOnFailure});cov_2g5j0a6fdf.s[460]++;authenticatedUserToken=sessionCloseOptionalParams.authenticatedUserToken,isReconnectChat=sessionCloseOptionalParams.isReconnectChat,isPersistentChat=sessionCloseOptionalParams.isPersistentChat,chatId=sessionCloseOptionalParams.chatId;cov_2g5j0a6fdf.s[461]++;headers=Constants_1.default.defaultHeaders;cov_2g5j0a6fdf.s[462]++;data={};cov_2g5j0a6fdf.s[463]++;data.chatId=chatId;cov_2g5j0a6fdf.s[464]++;if(authenticatedUserToken){cov_2g5j0a6fdf.b[114][0]++;cov_2g5j0a6fdf.s[465]++;endpoint=this.omnichannelConfiguration.orgUrl+"/"+OmnichannelEndpoints_1.default.LiveChatAuthSessionClosePath+"/"+this.omnichannelConfiguration.orgId+"/"+this.omnichannelConfiguration.widgetId+"/"+requestId+"?channelId="+this.omnichannelConfiguration.channelId;cov_2g5j0a6fdf.s[466]++;headers[OmnichannelHTTPHeaders_1.default.authenticatedUserToken]=authenticatedUserToken;}else{cov_2g5j0a6fdf.b[114][1]++;}cov_2g5j0a6fdf.s[467]++;if(isReconnectChat){cov_2g5j0a6fdf.b[115][0]++;cov_2g5j0a6fdf.s[468]++;endpoint+="&isReconnectChat=true";}else{cov_2g5j0a6fdf.b[115][1]++;}cov_2g5j0a6fdf.s[469]++;if(isPersistentChat){cov_2g5j0a6fdf.b[116][0]++;cov_2g5j0a6fdf.s[470]++;endpoint+="&isPersistentChat=true";}else{cov_2g5j0a6fdf.b[116][1]++;}cov_2g5j0a6fdf.s[471]++;options={data:data,headers:headers,method:"POST",url:endpoint};cov_2g5j0a6fdf.s[472]++;return[2,new Promise(function(resolve,reject){cov_2g5j0a6fdf.f[62]++;cov_2g5j0a6fdf.s[473]++;return __awaiter(_this,void 0,void 0,function(){cov_2g5j0a6fdf.f[63]++;var response,elapsedTimeInMilliseconds,error_7,elapsedTimeInMilliseconds;cov_2g5j0a6fdf.s[474]++;return __generator(this,function(_a){cov_2g5j0a6fdf.f[64]++;cov_2g5j0a6fdf.s[475]++;switch(_a.label){case 0:cov_2g5j0a6fdf.b[117][0]++;cov_2g5j0a6fdf.s[476]++;_a.trys.push([0,2,,5]);cov_2g5j0a6fdf.s[477]++;return[4,axiosInstance(options)];case 1:cov_2g5j0a6fdf.b[117][1]++;cov_2g5j0a6fdf.s[478]++;response=_a.sent();cov_2g5j0a6fdf.s[479]++;elapsedTimeInMilliseconds=timer.milliSecondsElapsed;cov_2g5j0a6fdf.s[480]++;if(this.logger){cov_2g5j0a6fdf.b[118][0]++;cov_2g5j0a6fdf.s[481]++;this.logger.log(LogLevel_1.LogLevel.INFO,Enums_2.OCSDKTelemetryEvent.SESSIONCLOSESUCCEEDED,{RequestId:requestId,Region:response.data.Region,ElapsedTimeInMilliseconds:elapsedTimeInMilliseconds,TransactionId:response.headers["transaction-id"]},"Session Close Succeeded");}else{cov_2g5j0a6fdf.b[118][1]++;}cov_2g5j0a6fdf.s[482]++;resolve();cov_2g5j0a6fdf.s[483]++;return[3,5];case 2:cov_2g5j0a6fdf.b[117][2]++;cov_2g5j0a6fdf.s[484]++;error_7=_a.sent();cov_2g5j0a6fdf.s[485]++;elapsedTimeInMilliseconds=timer.milliSecondsElapsed;cov_2g5j0a6fdf.s[486]++;if(!this.logger){cov_2g5j0a6fdf.b[119][0]++;cov_2g5j0a6fdf.s[487]++;return[3,4];}else{cov_2g5j0a6fdf.b[119][1]++;}cov_2g5j0a6fdf.s[488]++;return[4,LoggingSanitizer_1.LoggingSanitizer.stripErrorSensitiveProperties(error_7)];case 3:cov_2g5j0a6fdf.b[117][3]++;cov_2g5j0a6fdf.s[489]++;_a.sent();cov_2g5j0a6fdf.s[490]++;this.logger.log(LogLevel_1.LogLevel.ERROR,Enums_2.OCSDKTelemetryEvent.SESSIONCLOSEFAILED,{RequestId:requestId,ExceptionDetails:error_7,ElapsedTimeInMilliseconds:elapsedTimeInMilliseconds},"Session Close Failed");cov_2g5j0a6fdf.s[491]++;_a.label=4;case 4:cov_2g5j0a6fdf.b[117][4]++;cov_2g5j0a6fdf.s[492]++;reject();cov_2g5j0a6fdf.s[493]++;return[3,5];case 5:cov_2g5j0a6fdf.b[117][5]++;cov_2g5j0a6fdf.s[494]++;return[2];}});});})];});});};cov_2g5j0a6fdf.s[495]++;SDK.prototype.validateAuthChatRecord=function(requestId,validateAuthChatRecordOptionalParams){cov_2g5j0a6fdf.f[65]++;var _a,_b,_c,_d;cov_2g5j0a6fdf.s[496]++;return __awaiter(this,void 0,void 0,function(){cov_2g5j0a6fdf.f[66]++;var timer,authenticatedUserToken,chatId,endpoint,axiosInstance,headers,options,response,elapsedTimeInMilliseconds,error_8,elapsedTimeInMilliseconds;cov_2g5j0a6fdf.s[497]++;return __generator(this,function(_e){cov_2g5j0a6fdf.f[67]++;cov_2g5j0a6fdf.s[498]++;switch(_e.label){case 0:cov_2g5j0a6fdf.b[120][0]++;cov_2g5j0a6fdf.s[499]++;timer=Timer_1.Timer.TIMER();cov_2g5j0a6fdf.s[500]++;if(this.logger){cov_2g5j0a6fdf.b[121][0]++;cov_2g5j0a6fdf.s[501]++;this.logger.log(LogLevel_1.LogLevel.INFO,Enums_2.OCSDKTelemetryEvent.VALIDATEAUTHCHATRECORDSTARTED,{RequestId:requestId},"Validate Auth Chat Record Started");}else{cov_2g5j0a6fdf.b[121][1]++;}cov_2g5j0a6fdf.s[502]++;authenticatedUserToken=validateAuthChatRecordOptionalParams.authenticatedUserToken,chatId=validateAuthChatRecordOptionalParams.chatId;cov_2g5j0a6fdf.s[503]++;endpoint=this.omnichannelConfiguration.orgUrl+"/"+OmnichannelEndpoints_1.default.LiveChatValidateAuthChatMapRecordPath+"/"+this.omnichannelConfiguration.orgId+"/"+this.omnichannelConfiguration.widgetId+"/"+chatId+"/"+requestId+"?channelId="+this.omnichannelConfiguration.channelId;cov_2g5j0a6fdf.s[504]++;axiosInstance=axios_1.default.create();cov_2g5j0a6fdf.s[505]++;axiosRetry_1.default(axiosInstance,{retries:this.configuration.maxRequestRetriesOnFailure});cov_2g5j0a6fdf.s[506]++;headers=Constants_1.default.defaultHeaders;cov_2g5j0a6fdf.s[507]++;if(authenticatedUserToken){cov_2g5j0a6fdf.b[122][0]++;cov_2g5j0a6fdf.s[508]++;headers[OmnichannelHTTPHeaders_1.default.authenticatedUserToken]=authenticatedUserToken;}else{cov_2g5j0a6fdf.b[122][1]++;}cov_2g5j0a6fdf.s[509]++;options={headers:headers,method:"GET",url:endpoint};cov_2g5j0a6fdf.s[510]++;_e.label=1;case 1:cov_2g5j0a6fdf.b[120][1]++;cov_2g5j0a6fdf.s[511]++;_e.trys.push([1,3,,5]);cov_2g5j0a6fdf.s[512]++;return[4,axiosInstance(options)];case 2:cov_2g5j0a6fdf.b[120][2]++;cov_2g5j0a6fdf.s[513]++;response=_e.sent();cov_2g5j0a6fdf.s[514]++;elapsedTimeInMilliseconds=timer.milliSecondsElapsed;cov_2g5j0a6fdf.s[515]++;if(((cov_2g5j0a6fdf.b[125][0]++,(_a=response.data)===null)||(cov_2g5j0a6fdf.b[125][1]++,_a===void 0)?(cov_2g5j0a6fdf.b[124][0]++,void 0):(cov_2g5j0a6fdf.b[124][1]++,_a.authChatExist))===true){cov_2g5j0a6fdf.b[123][0]++;cov_2g5j0a6fdf.s[516]++;(cov_2g5j0a6fdf.b[127][0]++,(_b=this.logger)===null)||(cov_2g5j0a6fdf.b[127][1]++,_b===void 0)?(cov_2g5j0a6fdf.b[126][0]++,void 0):(cov_2g5j0a6fdf.b[126][1]++,_b.log(LogLevel_1.LogLevel.INFO,Enums_2.OCSDKTelemetryEvent.VALIDATEAUTHCHATRECORDSUCCEEDED,{RequestId:requestId,Region:response.data.Region,ElapsedTimeInMilliseconds:elapsedTimeInMilliseconds,TransactionId:response.headers["transaction-id"]},"Validate Auth Chat Record Succeeded"));cov_2g5j0a6fdf.s[517]++;return[2,Promise.resolve(response.data)];}else{cov_2g5j0a6fdf.b[123][1]++;cov_2g5j0a6fdf.s[518]++;(cov_2g5j0a6fdf.b[129][0]++,(_c=this.logger)===null)||(cov_2g5j0a6fdf.b[129][1]++,_c===void 0)?(cov_2g5j0a6fdf.b[128][0]++,void 0):(cov_2g5j0a6fdf.b[128][1]++,_c.log(LogLevel_1.LogLevel.INFO,Enums_2.OCSDKTelemetryEvent.VALIDATEAUTHCHATRECORDFAILED,{RequestId:requestId,Region:response.data.Region,ElapsedTimeInMilliseconds:elapsedTimeInMilliseconds,TransactionId:response.headers["transaction-id"],ErrorCode:response.status},"Validate Auth Chat Record Failed. Record is not found or request is not authorized"));cov_2g5j0a6fdf.s[519]++;return[2,Promise.reject(new Error("Validate Auth Chat Record Failed. Record is not found or request is not authorized"))];}cov_2g5j0a6fdf.s[520]++;return[3,5];case 3:cov_2g5j0a6fdf.b[120][3]++;cov_2g5j0a6fdf.s[521]++;error_8=_e.sent();cov_2g5j0a6fdf.s[522]++;elapsedTimeInMilliseconds=timer.milliSecondsElapsed;cov_2g5j0a6fdf.s[523]++;return[4,LoggingSanitizer_1.LoggingSanitizer.stripErrorSensitiveProperties(error_8)];case 4:cov_2g5j0a6fdf.b[120][4]++;cov_2g5j0a6fdf.s[524]++;_e.sent();cov_2g5j0a6fdf.s[525]++;(cov_2g5j0a6fdf.b[131][0]++,(_d=this.logger)===null)||(cov_2g5j0a6fdf.b[131][1]++,_d===void 0)?(cov_2g5j0a6fdf.b[130][0]++,void 0):(cov_2g5j0a6fdf.b[130][1]++,_d.log(LogLevel_1.LogLevel.ERROR,Enums_2.OCSDKTelemetryEvent.VALIDATEAUTHCHATRECORDFAILED,{RequestId:requestId,ExceptionDetails:error_8,ElapsedTimeInMilliseconds:elapsedTimeInMilliseconds},"Validate Auth Chat Record Failed"));cov_2g5j0a6fdf.s[526]++;if(error_8.toString()==="Error: Request failed with status code 404"){cov_2g5j0a6fdf.b[132][0]++;cov_2g5j0a6fdf.s[527]++;return[2,Promise.resolve({})];}else{cov_2g5j0a6fdf.b[132][1]++;cov_2g5j0a6fdf.s[528]++;return[2,Promise.reject()];}cov_2g5j0a6fdf.s[529]++;return[3,5];case 5:cov_2g5j0a6fdf.b[120][5]++;cov_2g5j0a6fdf.s[530]++;return[2];}});});};cov_2g5j0a6fdf.s[531]++;SDK.prototype.submitPostChatResponse=function(requestId,postChatResponse,submitPostChatResponseOptionalParams){cov_2g5j0a6fdf.f[68]++;cov_2g5j0a6fdf.s[532]++;if(submitPostChatResponseOptionalParams===void 0){cov_2g5j0a6fdf.b[133][0]++;cov_2g5j0a6fdf.s[533]++;submitPostChatResponseOptionalParams={};}else{cov_2g5j0a6fdf.b[133][1]++;}cov_2g5j0a6fdf.s[534]++;return __awaiter(this,void 0,void 0,function(){cov_2g5j0a6fdf.f[69]++;var timer,endpoint,axiosInstance,authenticatedUserToken,headers,options;var _this=(cov_2g5j0a6fdf.s[535]++,this);cov_2g5j0a6fdf.s[536]++;return __generator(this,function(_a){cov_2g5j0a6fdf.f[70]++;cov_2g5j0a6fdf.s[537]++;timer=Timer_1.Timer.TIMER();cov_2g5j0a6fdf.s[538]++;if(this.logger){cov_2g5j0a6fdf.b[134][0]++;cov_2g5j0a6fdf.s[539]++;this.logger.log(LogLevel_1.LogLevel.INFO,Enums_2.OCSDKTelemetryEvent.SUBMITPOSTCHATSTARTED,{RequestId:requestId},"Submit Post Chat Started");}else{cov_2g5j0a6fdf.b[134][1]++;}cov_2g5j0a6fdf.s[540]++;endpoint=this.omnichannelConfiguration.orgUrl+"/"+OmnichannelEndpoints_1.default.LiveChatSubmitPostChatPath+"/"+this.omnichannelConfiguration.orgId+"/"+this.omnichannelConfiguration.widgetId+"/"+requestId+"?channelId="+this.omnichannelConfiguration.channelId;cov_2g5j0a6fdf.s[541]++;axiosInstance=axios_1.default.create();cov_2g5j0a6fdf.s[542]++;axiosRetry_1.default(axiosInstance,{retries:this.configuration.maxRequestRetriesOnFailure});cov_2g5j0a6fdf.s[543]++;authenticatedUserToken=submitPostChatResponseOptionalParams.authenticatedUserToken;cov_2g5j0a6fdf.s[544]++;headers=Constants_1.default.defaultHeaders;cov_2g5j0a6fdf.s[545]++;if(authenticatedUserToken){cov_2g5j0a6fdf.b[135][0]++;cov_2g5j0a6fdf.s[546]++;endpoint=this.omnichannelConfiguration.orgUrl+"/"+OmnichannelEndpoints_1.default.LiveChatAuthSubmitPostChatPath+"/"+this.omnichannelConfiguration.orgId+"/"+this.omnichannelConfiguration.widgetId+"/"+requestId+"?channelId="+this.omnichannelConfiguration.channelId;cov_2g5j0a6fdf.s[547]++;headers[OmnichannelHTTPHeaders_1.default.authenticatedUserToken]=authenticatedUserToken;}else{cov_2g5j0a6fdf.b[135][1]++;}cov_2g5j0a6fdf.s[548]++;options={data:JSON.stringify(postChatResponse),headers:headers,method:"POST",url:endpoint};cov_2g5j0a6fdf.s[549]++;return[2,new Promise(function(resolve,reject){cov_2g5j0a6fdf.f[71]++;cov_2g5j0a6fdf.s[550]++;return __awaiter(_this,void 0,void 0,function(){cov_2g5j0a6fdf.f[72]++;var response,elapsedTimeInMilliseconds,error_9,elapsedTimeInMilliseconds;cov_2g5j0a6fdf.s[551]++;return __generator(this,function(_a){cov_2g5j0a6fdf.f[73]++;cov_2g5j0a6fdf.s[552]++;switch(_a.label){case 0:cov_2g5j0a6fdf.b[136][0]++;cov_2g5j0a6fdf.s[553]++;_a.trys.push([0,2,,5]);cov_2g5j0a6fdf.s[554]++;return[4,axiosInstance(options)];case 1:cov_2g5j0a6fdf.b[136][1]++;cov_2g5j0a6fdf.s[555]++;response=_a.sent();cov_2g5j0a6fdf.s[556]++;elapsedTimeInMilliseconds=timer.milliSecondsElapsed;cov_2g5j0a6fdf.s[557]++;if(this.logger){cov_2g5j0a6fdf.b[137][0]++;cov_2g5j0a6fdf.s[558]++;this.logger.log(LogLevel_1.LogLevel.INFO,Enums_2.OCSDKTelemetryEvent.SUBMITPOSTCHATSUCCEEDED,{RequestId:requestId,Region:response.data.Region,ElapsedTimeInMilliseconds:elapsedTimeInMilliseconds,TransactionId:response.headers["transaction-id"]},"Submit Post Chat Succeeded");}else{cov_2g5j0a6fdf.b[137][1]++;}cov_2g5j0a6fdf.s[559]++;resolve();cov_2g5j0a6fdf.s[560]++;return[3,5];case 2:cov_2g5j0a6fdf.b[136][2]++;cov_2g5j0a6fdf.s[561]++;error_9=_a.sent();cov_2g5j0a6fdf.s[562]++;elapsedTimeInMilliseconds=timer.milliSecondsElapsed;cov_2g5j0a6fdf.s[563]++;if(!this.logger){cov_2g5j0a6fdf.b[138][0]++;cov_2g5j0a6fdf.s[564]++;return[3,4];}else{cov_2g5j0a6fdf.b[138][1]++;}cov_2g5j0a6fdf.s[565]++;return[4,LoggingSanitizer_1.LoggingSanitizer.stripErrorSensitiveProperties(error_9)];case 3:cov_2g5j0a6fdf.b[136][3]++;cov_2g5j0a6fdf.s[566]++;_a.sent();cov_2g5j0a6fdf.s[567]++;this.logger.log(LogLevel_1.LogLevel.ERROR,Enums_2.OCSDKTelemetryEvent.SUBMITPOSTCHATFAILED,{RequestId:requestId,ExceptionDetails:error_9,ElapsedTimeInMilliseconds:elapsedTimeInMilliseconds},"Submit Post Chat Failed");cov_2g5j0a6fdf.s[568]++;_a.label=4;case 4:cov_2g5j0a6fdf.b[136][4]++;cov_2g5j0a6fdf.s[569]++;reject();cov_2g5j0a6fdf.s[570]++;return[3,5];case 5:cov_2g5j0a6fdf.b[136][5]++;cov_2g5j0a6fdf.s[571]++;return[2];}});});})];});});};cov_2g5j0a6fdf.s[572]++;SDK.prototype.getSurveyInviteLink=function(surveyOwnerId,surveyInviteAPIRequestBody,getsurveyInviteLinkOptionalParams){cov_2g5j0a6fdf.f[74]++;cov_2g5j0a6fdf.s[573]++;if(getsurveyInviteLinkOptionalParams===void 0){cov_2g5j0a6fdf.b[139][0]++;cov_2g5j0a6fdf.s[574]++;getsurveyInviteLinkOptionalParams={};}else{cov_2g5j0a6fdf.b[139][1]++;}cov_2g5j0a6fdf.s[575]++;return __awaiter(this,void 0,void 0,function(){cov_2g5j0a6fdf.f[75]++;var timer,endpoint,axiosInstance,authenticatedUserToken,requestId,headers,options;var _this=(cov_2g5j0a6fdf.s[576]++,this);cov_2g5j0a6fdf.s[577]++;return __generator(this,function(_a){cov_2g5j0a6fdf.f[76]++;cov_2g5j0a6fdf.s[578]++;timer=Timer_1.Timer.TIMER();cov_2g5j0a6fdf.s[579]++;if(this.logger){cov_2g5j0a6fdf.b[140][0]++;cov_2g5j0a6fdf.s[580]++;this.logger.log(LogLevel_1.LogLevel.INFO,Enums_2.OCSDKTelemetryEvent.GETSURVEYINVITELINKSTARTED,{SurveyOwnerId:surveyOwnerId},"Get Survey Invite Link Started");}else{cov_2g5j0a6fdf.b[140][1]++;}cov_2g5j0a6fdf.s[581]++;endpoint=this.omnichannelConfiguration.orgUrl+"/"+OmnichannelEndpoints_1.default.LiveChatGetSurveyInviteLinkPath+"/"+this.omnichannelConfiguration.orgId+"/"+surveyOwnerId;cov_2g5j0a6fdf.s[582]++;axiosInstance=axios_1.default.create();cov_2g5j0a6fdf.s[583]++;axiosRetry_1.default(axiosInstance,{retries:this.configuration.maxRequestRetriesOnFailure});cov_2g5j0a6fdf.s[584]++;authenticatedUserToken=getsurveyInviteLinkOptionalParams.authenticatedUserToken,requestId=getsurveyInviteLinkOptionalParams.requestId;cov_2g5j0a6fdf.s[585]++;headers=Constants_1.default.defaultHeaders;cov_2g5j0a6fdf.s[586]++;if(authenticatedUserToken){cov_2g5j0a6fdf.b[141][0]++;cov_2g5j0a6fdf.s[587]++;endpoint=this.omnichannelConfiguration.orgUrl+"/"+OmnichannelEndpoints_1.default.LiveChatAuthGetSurveyInviteLinkPath+"/"+this.omnichannelConfiguration.orgId+"/"+surveyOwnerId;cov_2g5j0a6fdf.s[588]++;headers[OmnichannelHTTPHeaders_1.default.authenticatedUserToken]=authenticatedUserToken;cov_2g5j0a6fdf.s[589]++;headers[OmnichannelHTTPHeaders_1.default.widgetAppId]=this.omnichannelConfiguration.widgetId;}else{cov_2g5j0a6fdf.b[141][1]++;}cov_2g5j0a6fdf.s[590]++;if(requestId){cov_2g5j0a6fdf.b[142][0]++;cov_2g5j0a6fdf.s[591]++;headers[OmnichannelHTTPHeaders_1.default.requestId]=requestId;}else{cov_2g5j0a6fdf.b[142][1]++;}cov_2g5j0a6fdf.s[592]++;options={data:JSON.stringify(surveyInviteAPIRequestBody),headers:headers,method:"POST",url:endpoint};cov_2g5j0a6fdf.s[593]++;return[2,new Promise(function(resolve,reject){cov_2g5j0a6fdf.f[77]++;cov_2g5j0a6fdf.s[594]++;return __awaiter(_this,void 0,void 0,function(){cov_2g5j0a6fdf.f[78]++;var response,data,elapsedTimeInMilliseconds,error_10,elapsedTimeInMilliseconds;cov_2g5j0a6fdf.s[595]++;return __generator(this,function(_a){cov_2g5j0a6fdf.f[79]++;cov_2g5j0a6fdf.s[596]++;switch(_a.label){case 0:cov_2g5j0a6fdf.b[143][0]++;cov_2g5j0a6fdf.s[597]++;_a.trys.push([0,2,,5]);cov_2g5j0a6fdf.s[598]++;return[4,axiosInstance(options)];case 1:cov_2g5j0a6fdf.b[143][1]++;cov_2g5j0a6fdf.s[599]++;response=_a.sent();cov_2g5j0a6fdf.s[600]++;data=response.data;cov_2g5j0a6fdf.s[601]++;elapsedTimeInMilliseconds=timer.milliSecondsElapsed;cov_2g5j0a6fdf.s[602]++;if(this.logger){cov_2g5j0a6fdf.b[144][0]++;cov_2g5j0a6fdf.s[603]++;this.logger.log(LogLevel_1.LogLevel.INFO,Enums_2.OCSDKTelemetryEvent.GETSURVEYINVITELINKSUCCEEDED,{Region:response.data.Region,ElapsedTimeInMilliseconds:elapsedTimeInMilliseconds,TransactionId:response.headers["transaction-id"]},"Get Survey Invite Link Succeeded");}else{cov_2g5j0a6fdf.b[144][1]++;}cov_2g5j0a6fdf.s[604]++;resolve(data);cov_2g5j0a6fdf.s[605]++;return[3,5];case 2:cov_2g5j0a6fdf.b[143][2]++;cov_2g5j0a6fdf.s[606]++;error_10=_a.sent();cov_2g5j0a6fdf.s[607]++;elapsedTimeInMilliseconds=timer.milliSecondsElapsed;cov_2g5j0a6fdf.s[608]++;if(!this.logger){cov_2g5j0a6fdf.b[145][0]++;cov_2g5j0a6fdf.s[609]++;return[3,4];}else{cov_2g5j0a6fdf.b[145][1]++;}cov_2g5j0a6fdf.s[610]++;return[4,LoggingSanitizer_1.LoggingSanitizer.stripErrorSensitiveProperties(error_10)];case 3:cov_2g5j0a6fdf.b[143][3]++;cov_2g5j0a6fdf.s[611]++;_a.sent();cov_2g5j0a6fdf.s[612]++;this.logger.log(LogLevel_1.LogLevel.ERROR,Enums_2.OCSDKTelemetryEvent.GETSURVEYINVITELINKFAILED,{ExceptionDetails:error_10,ElapsedTimeInMilliseconds:elapsedTimeInMilliseconds},"Get Survey Invite Link Failed");cov_2g5j0a6fdf.s[613]++;_a.label=4;case 4:cov_2g5j0a6fdf.b[143][4]++;cov_2g5j0a6fdf.s[614]++;reject();cov_2g5j0a6fdf.s[615]++;return[3,5];case 5:cov_2g5j0a6fdf.b[143][5]++;cov_2g5j0a6fdf.s[616]++;return[2];}});});})];});});};cov_2g5j0a6fdf.s[617]++;SDK.prototype.getChatTranscripts=function(requestId,chatId,token,getChatTranscriptsOptionalParams){cov_2g5j0a6fdf.f[80]++;cov_2g5j0a6fdf.s[618]++;if(getChatTranscriptsOptionalParams===void 0){cov_2g5j0a6fdf.b[146][0]++;cov_2g5j0a6fdf.s[619]++;getChatTranscriptsOptionalParams={};}else{cov_2g5j0a6fdf.b[146][1]++;}cov_2g5j0a6fdf.s[620]++;return __awaiter(this,void 0,void 0,function(){cov_2g5j0a6fdf.f[81]++;var timer,endpoint,axiosInstance,authenticatedUserToken,currentLiveChatVersion,headers,options;var _this=(cov_2g5j0a6fdf.s[621]++,this);cov_2g5j0a6fdf.s[622]++;return __generator(this,function(_a){cov_2g5j0a6fdf.f[82]++;cov_2g5j0a6fdf.s[623]++;timer=Timer_1.Timer.TIMER();cov_2g5j0a6fdf.s[624]++;if(this.logger){cov_2g5j0a6fdf.b[147][0]++;cov_2g5j0a6fdf.s[625]++;this.logger.log(LogLevel_1.LogLevel.INFO,Enums_2.OCSDKTelemetryEvent.GETCHATTRANSCRIPTSTARTED,{RequestId:requestId},"Get Chat Transcript Started");}else{cov_2g5j0a6fdf.b[147][1]++;}cov_2g5j0a6fdf.s[626]++;endpoint=this.omnichannelConfiguration.orgUrl+"/"+OmnichannelEndpoints_1.default.LiveChatGetChatTranscriptPath+"/"+chatId+"/"+requestId+"?channelId="+this.omnichannelConfiguration.channelId;cov_2g5j0a6fdf.s[627]++;axiosInstance=axios_1.default.create();cov_2g5j0a6fdf.s[628]++;axiosRetry_1.default(axiosInstance,{retries:this.configuration.maxRequestRetriesOnFailure});cov_2g5j0a6fdf.s[629]++;authenticatedUserToken=getChatTranscriptsOptionalParams.authenticatedUserToken,currentLiveChatVersion=getChatTranscriptsOptionalParams.currentLiveChatVersion;cov_2g5j0a6fdf.s[630]++;headers=Constants_1.default.defaultHeaders;cov_2g5j0a6fdf.s[631]++;headers[OmnichannelHTTPHeaders_1.default.organizationId]=this.omnichannelConfiguration.orgId;cov_2g5j0a6fdf.s[632]++;headers[OmnichannelHTTPHeaders_1.default.widgetAppId]=this.omnichannelConfiguration.widgetId;cov_2g5j0a6fdf.s[633]++;headers[OmnichannelHTTPHeaders_1.default.authorization]=token;cov_2g5j0a6fdf.s[634]++;if((cov_2g5j0a6fdf.b[149][0]++,this.liveChatVersion===Enums_1.LiveChatVersion.V2)||(cov_2g5j0a6fdf.b[149][1]++,currentLiveChatVersion)&&(cov_2g5j0a6fdf.b[149][2]++,currentLiveChatVersion===Enums_1.LiveChatVersion.V2)){cov_2g5j0a6fdf.b[148][0]++;cov_2g5j0a6fdf.s[635]++;endpoint=this.omnichannelConfiguration.orgUrl+"/"+OmnichannelEndpoints_1.default.LiveChatv2GetChatTranscriptPath+"/"+chatId+"/"+requestId+"?channelId="+this.omnichannelConfiguration.channelId;cov_2g5j0a6fdf.s[636]++;if(authenticatedUserToken){cov_2g5j0a6fdf.b[150][0]++;cov_2g5j0a6fdf.s[637]++;endpoint=this.omnichannelConfiguration.orgUrl+"/"+OmnichannelEndpoints_1.default.LiveChatv2AuthGetChatTranscriptPath+"/"+chatId+"/"+requestId+"?channelId="+this.omnichannelConfiguration.channelId;}else{cov_2g5j0a6fdf.b[150][1]++;}}else{cov_2g5j0a6fdf.b[148][1]++;cov_2g5j0a6fdf.s[638]++;if(authenticatedUserToken){cov_2g5j0a6fdf.b[151][0]++;cov_2g5j0a6fdf.s[639]++;endpoint=this.omnichannelConfiguration.orgUrl+"/"+OmnichannelEndpoints_1.default.LiveChatAuthGetChatTranscriptPath+"/"+chatId+"/"+requestId+"?channelId="+this.omnichannelConfiguration.channelId;}else{cov_2g5j0a6fdf.b[151][1]++;}}cov_2g5j0a6fdf.s[640]++;options={headers:headers,method:"GET",url:endpoint};cov_2g5j0a6fdf.s[641]++;return[2,new Promise(function(resolve,reject){cov_2g5j0a6fdf.f[83]++;cov_2g5j0a6fdf.s[642]++;return __awaiter(_this,void 0,void 0,function(){cov_2g5j0a6fdf.f[84]++;var response,elapsedTimeInMilliseconds,data,error_11,elapsedTimeInMilliseconds;cov_2g5j0a6fdf.s[643]++;return __generator(this,function(_a){cov_2g5j0a6fdf.f[85]++;cov_2g5j0a6fdf.s[644]++;switch(_a.label){case 0:cov_2g5j0a6fdf.b[152][0]++;cov_2g5j0a6fdf.s[645]++;_a.trys.push([0,2,,5]);cov_2g5j0a6fdf.s[646]++;return[4,axiosInstance(options)];case 1:cov_2g5j0a6fdf.b[152][1]++;cov_2g5j0a6fdf.s[647]++;response=_a.sent();cov_2g5j0a6fdf.s[648]++;elapsedTimeInMilliseconds=timer.milliSecondsElapsed;cov_2g5j0a6fdf.s[649]++;data=response.data;cov_2g5j0a6fdf.s[650]++;if(this.logger){cov_2g5j0a6fdf.b[153][0]++;cov_2g5j0a6fdf.s[651]++;this.logger.log(LogLevel_1.LogLevel.INFO,Enums_2.OCSDKTelemetryEvent.GETCHATTRANSCRIPTSUCCEEDED,{RequestId:requestId,Region:response.data.Region,ElapsedTimeInMilliseconds:elapsedTimeInMilliseconds,TransactionId:response.headers["transaction-id"]},"Get Chat Transcript Succeeded");}else{cov_2g5j0a6fdf.b[153][1]++;}cov_2g5j0a6fdf.s[652]++;resolve(data);cov_2g5j0a6fdf.s[653]++;return[3,5];case 2:cov_2g5j0a6fdf.b[152][2]++;cov_2g5j0a6fdf.s[654]++;error_11=_a.sent();cov_2g5j0a6fdf.s[655]++;elapsedTimeInMilliseconds=timer.milliSecondsElapsed;cov_2g5j0a6fdf.s[656]++;if(!this.logger){cov_2g5j0a6fdf.b[154][0]++;cov_2g5j0a6fdf.s[657]++;return[3,4];}else{cov_2g5j0a6fdf.b[154][1]++;}cov_2g5j0a6fdf.s[658]++;return[4,LoggingSanitizer_1.LoggingSanitizer.stripErrorSensitiveProperties(error_11)];case 3:cov_2g5j0a6fdf.b[152][3]++;cov_2g5j0a6fdf.s[659]++;_a.sent();cov_2g5j0a6fdf.s[660]++;this.logger.log(LogLevel_1.LogLevel.ERROR,Enums_2.OCSDKTelemetryEvent.GETCHATTRANSCRIPTFAILED,{RequestId:requestId,ExceptionDetails:error_11,ElapsedTimeInMilliseconds:elapsedTimeInMilliseconds},"Get Chat Transcript Failed");cov_2g5j0a6fdf.s[661]++;_a.label=4;case 4:cov_2g5j0a6fdf.b[152][4]++;cov_2g5j0a6fdf.s[662]++;reject(error_11);cov_2g5j0a6fdf.s[663]++;return[3,5];case 5:cov_2g5j0a6fdf.b[152][5]++;cov_2g5j0a6fdf.s[664]++;return[2];}});});})];});});};cov_2g5j0a6fdf.s[665]++;SDK.prototype.emailTranscript=function(requestId,token,emailRequestBody,emailTranscriptOptionalParams){cov_2g5j0a6fdf.f[86]++;cov_2g5j0a6fdf.s[666]++;if(emailTranscriptOptionalParams===void 0){cov_2g5j0a6fdf.b[155][0]++;cov_2g5j0a6fdf.s[667]++;emailTranscriptOptionalParams={};}else{cov_2g5j0a6fdf.b[155][1]++;}cov_2g5j0a6fdf.s[668]++;return __awaiter(this,void 0,void 0,function(){cov_2g5j0a6fdf.f[87]++;var timer,endpoint,axiosInstance,authenticatedUserToken,headers,options;var _this=(cov_2g5j0a6fdf.s[669]++,this);cov_2g5j0a6fdf.s[670]++;return __generator(this,function(_a){cov_2g5j0a6fdf.f[88]++;cov_2g5j0a6fdf.s[671]++;timer=Timer_1.Timer.TIMER();cov_2g5j0a6fdf.s[672]++;if(this.logger){cov_2g5j0a6fdf.b[156][0]++;cov_2g5j0a6fdf.s[673]++;this.logger.log(LogLevel_1.LogLevel.INFO,Enums_2.OCSDKTelemetryEvent.EMAILTRANSCRIPTSTARTED,{RequestId:requestId},"Email Transcript Started");}else{cov_2g5j0a6fdf.b[156][1]++;}cov_2g5j0a6fdf.s[674]++;endpoint=this.omnichannelConfiguration.orgUrl+"/"+OmnichannelEndpoints_1.default.LiveChatTranscriptEmailRequestPath+"/"+requestId+"?channelId="+this.omnichannelConfiguration.channelId;cov_2g5j0a6fdf.s[675]++;axiosInstance=axios_1.default.create();cov_2g5j0a6fdf.s[676]++;axiosRetry_1.default(axiosInstance,{retries:this.configuration.maxRequestRetriesOnFailure});cov_2g5j0a6fdf.s[677]++;authenticatedUserToken=emailTranscriptOptionalParams.authenticatedUserToken;cov_2g5j0a6fdf.s[678]++;headers=Constants_1.default.defaultHeaders;cov_2g5j0a6fdf.s[679]++;headers[OmnichannelHTTPHeaders_1.default.organizationId]=this.omnichannelConfiguration.orgId;cov_2g5j0a6fdf.s[680]++;headers[OmnichannelHTTPHeaders_1.default.widgetAppId]=this.omnichannelConfiguration.widgetId;cov_2g5j0a6fdf.s[681]++;headers[OmnichannelHTTPHeaders_1.default.authorization]=token;cov_2g5j0a6fdf.s[682]++;if(authenticatedUserToken){cov_2g5j0a6fdf.b[157][0]++;cov_2g5j0a6fdf.s[683]++;endpoint=this.omnichannelConfiguration.orgUrl+"/"+OmnichannelEndpoints_1.default.LiveChatAuthTranscriptEmailRequestPath+"/"+requestId+"?channelId="+this.omnichannelConfiguration.channelId;}else{cov_2g5j0a6fdf.b[157][1]++;}cov_2g5j0a6fdf.s[684]++;options={data:JSON.stringify(emailRequestBody),headers:headers,method:"POST",url:endpoint};cov_2g5j0a6fdf.s[685]++;return[2,new Promise(function(resolve,reject){cov_2g5j0a6fdf.f[89]++;cov_2g5j0a6fdf.s[686]++;return __awaiter(_this,void 0,void 0,function(){cov_2g5j0a6fdf.f[90]++;var response,elapsedTimeInMilliseconds,error_12,elapsedTimeInMilliseconds;cov_2g5j0a6fdf.s[687]++;return __generator(this,function(_a){cov_2g5j0a6fdf.f[91]++;cov_2g5j0a6fdf.s[688]++;switch(_a.label){case 0:cov_2g5j0a6fdf.b[158][0]++;cov_2g5j0a6fdf.s[689]++;_a.trys.push([0,2,,5]);cov_2g5j0a6fdf.s[690]++;return[4,axiosInstance(options)];case 1:cov_2g5j0a6fdf.b[158][1]++;cov_2g5j0a6fdf.s[691]++;response=_a.sent();cov_2g5j0a6fdf.s[692]++;elapsedTimeInMilliseconds=timer.milliSecondsElapsed;cov_2g5j0a6fdf.s[693]++;if(this.logger){cov_2g5j0a6fdf.b[159][0]++;cov_2g5j0a6fdf.s[694]++;this.logger.log(LogLevel_1.LogLevel.INFO,Enums_2.OCSDKTelemetryEvent.EMAILTRANSCRIPTSUCCEEDED,{RequestId:requestId,Region:response.data.Region,ElapsedTimeInMilliseconds:elapsedTimeInMilliseconds,TransactionId:response.headers["transaction-id"]},"Email Transcript Succeeded");}else{cov_2g5j0a6fdf.b[159][1]++;}cov_2g5j0a6fdf.s[695]++;resolve();cov_2g5j0a6fdf.s[696]++;return[3,5];case 2:cov_2g5j0a6fdf.b[158][2]++;cov_2g5j0a6fdf.s[697]++;error_12=_a.sent();cov_2g5j0a6fdf.s[698]++;elapsedTimeInMilliseconds=timer.milliSecondsElapsed;cov_2g5j0a6fdf.s[699]++;if(!this.logger){cov_2g5j0a6fdf.b[160][0]++;cov_2g5j0a6fdf.s[700]++;return[3,4];}else{cov_2g5j0a6fdf.b[160][1]++;}cov_2g5j0a6fdf.s[701]++;return[4,LoggingSanitizer_1.LoggingSanitizer.stripErrorSensitiveProperties(error_12)];case 3:cov_2g5j0a6fdf.b[158][3]++;cov_2g5j0a6fdf.s[702]++;_a.sent();cov_2g5j0a6fdf.s[703]++;this.logger.log(LogLevel_1.LogLevel.ERROR,Enums_2.OCSDKTelemetryEvent.EMAILTRANSCRIPTFAILED,{RequestId:requestId,ExceptionDetails:error_12,ElapsedTimeInMilliseconds:elapsedTimeInMilliseconds},"Email Transcript Failed");cov_2g5j0a6fdf.s[704]++;_a.label=4;case 4:cov_2g5j0a6fdf.b[158][4]++;cov_2g5j0a6fdf.s[705]++;reject();cov_2g5j0a6fdf.s[706]++;return[3,5];case 5:cov_2g5j0a6fdf.b[158][5]++;cov_2g5j0a6fdf.s[707]++;return[2];}});});})];});});};cov_2g5j0a6fdf.s[708]++;SDK.prototype.fetchDataMaskingInfo=function(requestId){cov_2g5j0a6fdf.f[92]++;cov_2g5j0a6fdf.s[709]++;return __awaiter(this,void 0,void 0,function(){cov_2g5j0a6fdf.f[93]++;var timer,endpoint,axiosInstance,headers,options;var _this=(cov_2g5j0a6fdf.s[710]++,this);cov_2g5j0a6fdf.s[711]++;return __generator(this,function(_a){cov_2g5j0a6fdf.f[94]++;cov_2g5j0a6fdf.s[712]++;timer=Timer_1.Timer.TIMER();cov_2g5j0a6fdf.s[713]++;if(this.logger){cov_2g5j0a6fdf.b[161][0]++;cov_2g5j0a6fdf.s[714]++;this.logger.log(LogLevel_1.LogLevel.INFO,Enums_2.OCSDKTelemetryEvent.FETCHDATAMASKINGSTARTED,{RequestId:requestId},"Fetch Data Masking Started");}else{cov_2g5j0a6fdf.b[161][1]++;}cov_2g5j0a6fdf.s[715]++;if(!requestId){cov_2g5j0a6fdf.b[162][0]++;cov_2g5j0a6fdf.s[716]++;requestId=uuid_1.uuidv4();}else{cov_2g5j0a6fdf.b[162][1]++;}cov_2g5j0a6fdf.s[717]++;endpoint=this.omnichannelConfiguration.orgUrl+"/"+OmnichannelEndpoints_1.default.LiveChatFetchDataMaskingInfoPath+"/"+this.omnichannelConfiguration.orgId;cov_2g5j0a6fdf.s[718]++;axiosInstance=axios_1.default.create();cov_2g5j0a6fdf.s[719]++;axiosRetry_1.default(axiosInstance,{retries:this.configuration.maxRequestRetriesOnFailure});cov_2g5j0a6fdf.s[720]++;headers=Constants_1.default.defaultHeaders;cov_2g5j0a6fdf.s[721]++;headers[OmnichannelHTTPHeaders_1.default.organizationId]=this.omnichannelConfiguration.orgId;cov_2g5j0a6fdf.s[722]++;headers[OmnichannelHTTPHeaders_1.default.requestId]=requestId;cov_2g5j0a6fdf.s[723]++;options={headers:headers,method:"GET",url:endpoint};cov_2g5j0a6fdf.s[724]++;return[2,new Promise(function(resolve,reject){cov_2g5j0a6fdf.f[95]++;cov_2g5j0a6fdf.s[725]++;return __awaiter(_this,void 0,void 0,function(){cov_2g5j0a6fdf.f[96]++;var response,elapsedTimeInMilliseconds,data,error_13,elapsedTimeInMilliseconds;cov_2g5j0a6fdf.s[726]++;return __generator(this,function(_a){cov_2g5j0a6fdf.f[97]++;cov_2g5j0a6fdf.s[727]++;switch(_a.label){case 0:cov_2g5j0a6fdf.b[163][0]++;cov_2g5j0a6fdf.s[728]++;_a.trys.push([0,2,,5]);cov_2g5j0a6fdf.s[729]++;return[4,axiosInstance(options)];case 1:cov_2g5j0a6fdf.b[163][1]++;cov_2g5j0a6fdf.s[730]++;response=_a.sent();cov_2g5j0a6fdf.s[731]++;elapsedTimeInMilliseconds=timer.milliSecondsElapsed;cov_2g5j0a6fdf.s[732]++;data=response.data;cov_2g5j0a6fdf.s[733]++;if(this.logger){cov_2g5j0a6fdf.b[164][0]++;cov_2g5j0a6fdf.s[734]++;this.logger.log(LogLevel_1.LogLevel.INFO,Enums_2.OCSDKTelemetryEvent.FETCHDATAMASKINGSUCCEEDED,{RequestId:requestId,Region:response.data.Region,ElapsedTimeInMilliseconds:elapsedTimeInMilliseconds,TransactionId:response.headers["transaction-id"]},"Fetch Data Masking Succeeded");}else{cov_2g5j0a6fdf.b[164][1]++;}cov_2g5j0a6fdf.s[735]++;resolve(data);cov_2g5j0a6fdf.s[736]++;return[3,5];case 2:cov_2g5j0a6fdf.b[163][2]++;cov_2g5j0a6fdf.s[737]++;error_13=_a.sent();cov_2g5j0a6fdf.s[738]++;elapsedTimeInMilliseconds=timer.milliSecondsElapsed;cov_2g5j0a6fdf.s[739]++;if(!this.logger){cov_2g5j0a6fdf.b[165][0]++;cov_2g5j0a6fdf.s[740]++;return[3,4];}else{cov_2g5j0a6fdf.b[165][1]++;}cov_2g5j0a6fdf.s[741]++;return[4,LoggingSanitizer_1.LoggingSanitizer.stripErrorSensitiveProperties(error_13)];case 3:cov_2g5j0a6fdf.b[163][3]++;cov_2g5j0a6fdf.s[742]++;_a.sent();cov_2g5j0a6fdf.s[743]++;this.logger.log(LogLevel_1.LogLevel.ERROR,Enums_2.OCSDKTelemetryEvent.FETCHDATAMASKINGFAILED,{RequestId:requestId,ExceptionDetails:error_13,ElapsedTimeInMilliseconds:elapsedTimeInMilliseconds},"Fetch Data Masking Failed");cov_2g5j0a6fdf.s[744]++;_a.label=4;case 4:cov_2g5j0a6fdf.b[163][4]++;cov_2g5j0a6fdf.s[745]++;reject();cov_2g5j0a6fdf.s[746]++;return[3,5];case 5:cov_2g5j0a6fdf.b[163][5]++;cov_2g5j0a6fdf.s[747]++;return[2];}});});})];});});};cov_2g5j0a6fdf.s[748]++;SDK.prototype.makeSecondaryChannelEventRequest=function(requestId,secondaryChannelEventRequestBody,secondaryChannelEventOptionalParams){cov_2g5j0a6fdf.f[98]++;cov_2g5j0a6fdf.s[749]++;if(secondaryChannelEventOptionalParams===void 0){cov_2g5j0a6fdf.b[166][0]++;cov_2g5j0a6fdf.s[750]++;secondaryChannelEventOptionalParams={};}else{cov_2g5j0a6fdf.b[166][1]++;}cov_2g5j0a6fdf.s[751]++;return __awaiter(this,void 0,void 0,function(){cov_2g5j0a6fdf.f[99]++;var timer,endpoint,axiosInstance,authenticatedUserToken,headers,options,response,elapsedTimeInMilliseconds,data,error_14,elapsedTimeInMilliseconds;cov_2g5j0a6fdf.s[752]++;return __generator(this,function(_a){cov_2g5j0a6fdf.f[100]++;cov_2g5j0a6fdf.s[753]++;switch(_a.label){case 0:cov_2g5j0a6fdf.b[167][0]++;cov_2g5j0a6fdf.s[754]++;timer=Timer_1.Timer.TIMER();cov_2g5j0a6fdf.s[755]++;if(this.logger){cov_2g5j0a6fdf.b[168][0]++;cov_2g5j0a6fdf.s[756]++;this.logger.log(LogLevel_1.LogLevel.INFO,Enums_2.OCSDKTelemetryEvent.SECONDARYCHANNELEVENTREQUESTSTARTED,{RequestId:requestId},"Secondary Channel Event Request Started");}else{cov_2g5j0a6fdf.b[168][1]++;}cov_2g5j0a6fdf.s[757]++;endpoint=this.omnichannelConfiguration.orgUrl+"/"+OmnichannelEndpoints_1.default.LiveChatSecondaryChannelEventPath+"/"+this.omnichannelConfiguration.orgId+"/"+this.omnichannelConfiguration.widgetId+"/"+requestId;cov_2g5j0a6fdf.s[758]++;axiosInstance=axios_1.default.create();cov_2g5j0a6fdf.s[759]++;axiosRetry_1.default(axiosInstance,{retries:this.configuration.maxRequestRetriesOnFailure});cov_2g5j0a6fdf.s[760]++;authenticatedUserToken=secondaryChannelEventOptionalParams.authenticatedUserToken;cov_2g5j0a6fdf.s[761]++;headers=Constants_1.default.defaultHeaders;cov_2g5j0a6fdf.s[762]++;headers[OmnichannelHTTPHeaders_1.default.organizationId]=this.omnichannelConfiguration.orgId;cov_2g5j0a6fdf.s[763]++;if(authenticatedUserToken){cov_2g5j0a6fdf.b[169][0]++;cov_2g5j0a6fdf.s[764]++;headers[OmnichannelHTTPHeaders_1.default.authenticatedUserToken]=authenticatedUserToken;cov_2g5j0a6fdf.s[765]++;endpoint=this.omnichannelConfiguration.orgUrl+"/"+OmnichannelEndpoints_1.default.LiveChatAuthSecondaryChannelEventPath+"/"+this.omnichannelConfiguration.orgId+"/"+this.omnichannelConfiguration.widgetId+"/"+requestId;}else{cov_2g5j0a6fdf.b[169][1]++;}cov_2g5j0a6fdf.s[766]++;endpoint+="?channelId="+Constants_1.default.defaultChannelId;cov_2g5j0a6fdf.s[767]++;options={data:JSON.stringify(secondaryChannelEventRequestBody),headers:headers,method:"POST",url:endpoint};cov_2g5j0a6fdf.s[768]++;_a.label=1;case 1:cov_2g5j0a6fdf.b[167][1]++;cov_2g5j0a6fdf.s[769]++;_a.trys.push([1,3,,6]);cov_2g5j0a6fdf.s[770]++;return[4,axiosInstance(options)];case 2:cov_2g5j0a6fdf.b[167][2]++;cov_2g5j0a6fdf.s[771]++;response=_a.sent();cov_2g5j0a6fdf.s[772]++;elapsedTimeInMilliseconds=timer.milliSecondsElapsed;cov_2g5j0a6fdf.s[773]++;data=response.data;cov_2g5j0a6fdf.s[774]++;if(this.logger){cov_2g5j0a6fdf.b[170][0]++;cov_2g5j0a6fdf.s[775]++;this.logger.log(LogLevel_1.LogLevel.INFO,Enums_2.OCSDKTelemetryEvent.SECONDARYCHANNELEVENTREQUESTSUCCEEDED,{RequestId:requestId,Region:data.Region,ElapsedTimeInMilliseconds:elapsedTimeInMilliseconds,TransactionId:response.headers["transaction-id"]},"Secondary Channel Event Request Succeeded");}else{cov_2g5j0a6fdf.b[170][1]++;}cov_2g5j0a6fdf.s[776]++;return[3,6];case 3:cov_2g5j0a6fdf.b[167][3]++;cov_2g5j0a6fdf.s[777]++;error_14=_a.sent();cov_2g5j0a6fdf.s[778]++;elapsedTimeInMilliseconds=timer.milliSecondsElapsed;cov_2g5j0a6fdf.s[779]++;if(!this.logger){cov_2g5j0a6fdf.b[171][0]++;cov_2g5j0a6fdf.s[780]++;return[3,5];}else{cov_2g5j0a6fdf.b[171][1]++;}cov_2g5j0a6fdf.s[781]++;return[4,LoggingSanitizer_1.LoggingSanitizer.stripErrorSensitiveProperties(error_14)];case 4:cov_2g5j0a6fdf.b[167][4]++;cov_2g5j0a6fdf.s[782]++;_a.sent();cov_2g5j0a6fdf.s[783]++;this.logger.log(LogLevel_1.LogLevel.ERROR,Enums_2.OCSDKTelemetryEvent.SECONDARYCHANNELEVENTREQUESTFAILED,{RequestId:requestId,ExceptionDetails:error_14,ElapsedTimeInMilliseconds:elapsedTimeInMilliseconds},"Secondary Channel Event Request Failed");cov_2g5j0a6fdf.s[784]++;_a.label=5;case 5:cov_2g5j0a6fdf.b[167][5]++;cov_2g5j0a6fdf.s[785]++;throw error_14;case 6:cov_2g5j0a6fdf.b[167][6]++;cov_2g5j0a6fdf.s[786]++;return[2];}});});};cov_2g5j0a6fdf.s[787]++;SDK.prototype.sendTypingIndicator=function(requestId,currentLiveChatVersion,sendTypingIndicatorOptionalParams){cov_2g5j0a6fdf.f[101]++;cov_2g5j0a6fdf.s[788]++;if(sendTypingIndicatorOptionalParams===void 0){cov_2g5j0a6fdf.b[172][0]++;cov_2g5j0a6fdf.s[789]++;sendTypingIndicatorOptionalParams={};}else{cov_2g5j0a6fdf.b[172][1]++;}cov_2g5j0a6fdf.s[790]++;return __awaiter(this,void 0,void 0,function(){cov_2g5j0a6fdf.f[102]++;var timer,customerDisplayName,endpoint,axiosInstance,headers,options;var _this=(cov_2g5j0a6fdf.s[791]++,this);cov_2g5j0a6fdf.s[792]++;return __generator(this,function(_a){cov_2g5j0a6fdf.f[103]++;cov_2g5j0a6fdf.s[793]++;if((cov_2g5j0a6fdf.b[174][0]++,!currentLiveChatVersion)||(cov_2g5j0a6fdf.b[174][1]++,currentLiveChatVersion!==Enums_1.LiveChatVersion.V2)){cov_2g5j0a6fdf.b[173][0]++;cov_2g5j0a6fdf.s[794]++;return[2,Promise.resolve()];}else{cov_2g5j0a6fdf.b[173][1]++;}cov_2g5j0a6fdf.s[795]++;timer=Timer_1.Timer.TIMER();cov_2g5j0a6fdf.s[796]++;customerDisplayName=sendTypingIndicatorOptionalParams.customerDisplayName;cov_2g5j0a6fdf.s[797]++;if((cov_2g5j0a6fdf.b[176][0]++,!currentLiveChatVersion)||(cov_2g5j0a6fdf.b[176][1]++,currentLiveChatVersion!==Enums_1.LiveChatVersion.V2)){cov_2g5j0a6fdf.b[175][0]++;cov_2g5j0a6fdf.s[798]++;throw new Error('Typing indicator is only supported on v2');}else{cov_2g5j0a6fdf.b[175][1]++;}cov_2g5j0a6fdf.s[799]++;endpoint=this.omnichannelConfiguration.orgUrl+"/"+OmnichannelEndpoints_1.default.SendTypingIndicatorPath+"/"+requestId;cov_2g5j0a6fdf.s[800]++;axiosInstance=axios_1.default.create();cov_2g5j0a6fdf.s[801]++;headers=Constants_1.default.defaultHeaders;cov_2g5j0a6fdf.s[802]++;headers[OmnichannelHTTPHeaders_1.default.organizationId]=this.omnichannelConfiguration.orgId;cov_2g5j0a6fdf.s[803]++;if(customerDisplayName){cov_2g5j0a6fdf.b[177][0]++;cov_2g5j0a6fdf.s[804]++;headers[Constants_1.default.customerDisplayName]=customerDisplayName;}else{cov_2g5j0a6fdf.b[177][1]++;}cov_2g5j0a6fdf.s[805]++;options={headers:headers,method:"POST",url:endpoint};cov_2g5j0a6fdf.s[806]++;return[2,new Promise(function(resolve,reject){cov_2g5j0a6fdf.f[104]++;cov_2g5j0a6fdf.s[807]++;return __awaiter(_this,void 0,void 0,function(){cov_2g5j0a6fdf.f[105]++;var response,elapsedTimeInMilliseconds,data,error_15,elapsedTimeInMilliseconds;cov_2g5j0a6fdf.s[808]++;return __generator(this,function(_a){cov_2g5j0a6fdf.f[106]++;cov_2g5j0a6fdf.s[809]++;switch(_a.label){case 0:cov_2g5j0a6fdf.b[178][0]++;cov_2g5j0a6fdf.s[810]++;_a.trys.push([0,2,,5]);cov_2g5j0a6fdf.s[811]++;return[4,axiosInstance(options)];case 1:cov_2g5j0a6fdf.b[178][1]++;cov_2g5j0a6fdf.s[812]++;response=_a.sent();cov_2g5j0a6fdf.s[813]++;elapsedTimeInMilliseconds=timer.milliSecondsElapsed;cov_2g5j0a6fdf.s[814]++;data=response.data;cov_2g5j0a6fdf.s[815]++;if(this.logger){cov_2g5j0a6fdf.b[179][0]++;cov_2g5j0a6fdf.s[816]++;this.logger.log(LogLevel_1.LogLevel.INFO,Enums_2.OCSDKTelemetryEvent.SENDTYPINGINDICATORSUCCEEDED,{RequestId:requestId,Region:data.Region,ElapsedTimeInMilliseconds:elapsedTimeInMilliseconds,TransactionId:response.headers["transaction-id"]},"Send Typing Indicator Succeeded");}else{cov_2g5j0a6fdf.b[179][1]++;}cov_2g5j0a6fdf.s[817]++;resolve();cov_2g5j0a6fdf.s[818]++;return[3,5];case 2:cov_2g5j0a6fdf.b[178][2]++;cov_2g5j0a6fdf.s[819]++;error_15=_a.sent();cov_2g5j0a6fdf.s[820]++;elapsedTimeInMilliseconds=timer.milliSecondsElapsed;cov_2g5j0a6fdf.s[821]++;if(!this.logger){cov_2g5j0a6fdf.b[180][0]++;cov_2g5j0a6fdf.s[822]++;return[3,4];}else{cov_2g5j0a6fdf.b[180][1]++;}cov_2g5j0a6fdf.s[823]++;return[4,LoggingSanitizer_1.LoggingSanitizer.stripErrorSensitiveProperties(error_15)];case 3:cov_2g5j0a6fdf.b[178][3]++;cov_2g5j0a6fdf.s[824]++;_a.sent();cov_2g5j0a6fdf.s[825]++;this.logger.log(LogLevel_1.LogLevel.ERROR,Enums_2.OCSDKTelemetryEvent.SENDTYPINGINDICATORFAILED,{RequestId:requestId,ExceptionDetails:error_15,ElapsedTimeInMilliseconds:elapsedTimeInMilliseconds},"Send Typing Indicator Failed");cov_2g5j0a6fdf.s[826]++;_a.label=4;case 4:cov_2g5j0a6fdf.b[178][4]++;cov_2g5j0a6fdf.s[827]++;reject(error_15);cov_2g5j0a6fdf.s[828]++;return[3,5];case 5:cov_2g5j0a6fdf.b[178][5]++;cov_2g5j0a6fdf.s[829]++;return[2];}});});})];});});};cov_2g5j0a6fdf.s[830]++;SDK.defaultConfiguration={getChatTokenRetryCount:35,getChatTokenTimeBetweenRetriesOnFailure:10000,maxRequestRetriesOnFailure:3};cov_2g5j0a6fdf.s[831]++;return SDK;}());cov_2g5j0a6fdf.s[832]++;exports.default=SDK;
|
|
2280
2512
|
|
|
2281
2513
|
/***/ }),
|
|
2282
2514
|
|
|
@@ -2328,6 +2560,18 @@ var cov_1usg6i6cap=function(){var path="/home/runner/work/omnichannel-sdk/omnich
|
|
|
2328
2560
|
|
|
2329
2561
|
/***/ }),
|
|
2330
2562
|
|
|
2563
|
+
/***/ "./src/Utils/LoggingSanitizer.ts":
|
|
2564
|
+
/*!***************************************!*\
|
|
2565
|
+
!*** ./src/Utils/LoggingSanitizer.ts ***!
|
|
2566
|
+
\***************************************/
|
|
2567
|
+
/*! no static exports found */
|
|
2568
|
+
/***/ (function(module, exports, __webpack_require__) {
|
|
2569
|
+
|
|
2570
|
+
"use strict";
|
|
2571
|
+
var cov_1dqryatfp5=function(){var path="/home/runner/work/omnichannel-sdk/omnichannel-sdk/src/Utils/LoggingSanitizer.ts",hash="6b1f640bed078557da0e24f9bb256c9a17cb5ab5",Function=function(){}.constructor,global=new Function('return this')(),gcv="__coverage__",coverageData={path:"/home/runner/work/omnichannel-sdk/omnichannel-sdk/src/Utils/LoggingSanitizer.ts",statementMap:{"0":{start:{line:2,column:0},end:{line:2,column:62}},"1":{start:{line:3,column:0},end:{line:3,column:34}},"2":{start:{line:4,column:18},end:{line:4,column:48}},"3":{start:{line:5,column:38},end:{line:26,column:3}},"4":{start:{line:8,column:4},end:{line:24,column:6}},"5":{start:{line:9,column:20},end:{line:9,column:24}},"6":{start:{line:11,column:8},end:{line:23,column:9}},"7":{start:{line:12,column:12},end:{line:22,column:15}},"8":{start:{line:13,column:16},end:{line:16,column:17}},"9":{start:{line:15,column:20},end:{line:15,column:49}},"10":{start:{line:17,column:16},end:{line:21,column:17}},"11":{start:{line:19,column:20},end:{line:19,column:79}},"12":{start:{line:20,column:20},end:{line:20,column:27}},"13":{start:{line:25,column:4},end:{line:25,column:28}},"14":{start:{line:27,column:0},end:{line:27,column:44}}},fnMap:{"0":{name:"(anonymous_0)",decl:{start:{line:5,column:38},end:{line:5,column:39}},loc:{start:{line:5,column:50},end:{line:26,column:1}},line:5},"1":{name:"LoggingSanitizer",decl:{start:{line:6,column:13},end:{line:6,column:29}},loc:{start:{line:6,column:32},end:{line:7,column:5}},line:6},"2":{name:"(anonymous_2)",decl:{start:{line:8,column:53},end:{line:8,column:54}},loc:{start:{line:8,column:76},end:{line:24,column:5}},line:8},"3":{name:"(anonymous_3)",decl:{start:{line:12,column:92},end:{line:12,column:93}},loc:{start:{line:12,column:107},end:{line:22,column:13}},line:12}},branchMap:{"0":{loc:{start:{line:11,column:8},end:{line:23,column:9}},type:"if",locations:[{start:{line:11,column:8},end:{line:23,column:9}},{start:{line:11,column:8},end:{line:23,column:9}}],line:11},"1":{loc:{start:{line:11,column:12},end:{line:11,column:146}},type:"binary-expr",locations:[{start:{line:11,column:12},end:{line:11,column:23}},{start:{line:11,column:27},end:{line:11,column:58}},{start:{line:11,column:62},end:{line:11,column:146}}],line:11},"2":{loc:{start:{line:11,column:63},end:{line:11,column:141}},type:"cond-expr",locations:[{start:{line:11,column:123},end:{line:11,column:129}},{start:{line:11,column:132},end:{line:11,column:141}}],line:11},"3":{loc:{start:{line:11,column:63},end:{line:11,column:120}},type:"binary-expr",locations:[{start:{line:11,column:63},end:{line:11,column:103}},{start:{line:11,column:107},end:{line:11,column:120}}],line:11},"4":{loc:{start:{line:12,column:12},end:{line:22,column:14}},type:"cond-expr",locations:[{start:{line:12,column:72},end:{line:12,column:78}},{start:{line:12,column:81},end:{line:22,column:14}}],line:12},"5":{loc:{start:{line:12,column:12},end:{line:12,column:69}},type:"binary-expr",locations:[{start:{line:12,column:12},end:{line:12,column:52}},{start:{line:12,column:56},end:{line:12,column:69}}],line:12},"6":{loc:{start:{line:13,column:16},end:{line:16,column:17}},type:"if",locations:[{start:{line:13,column:16},end:{line:16,column:17}},{start:{line:13,column:16},end:{line:16,column:17}}],line:13},"7":{loc:{start:{line:17,column:16},end:{line:21,column:17}},type:"if",locations:[{start:{line:17,column:16},end:{line:21,column:17}},{start:{line:17,column:16},end:{line:21,column:17}}],line:17},"8":{loc:{start:{line:17,column:20},end:{line:17,column:95}},type:"binary-expr",locations:[{start:{line:17,column:20},end:{line:17,column:50}},{start:{line:17,column:54},end:{line:17,column:95}}],line:17}},s:{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0},f:{"0":0,"1":0,"2":0,"3":0},b:{"0":[0,0],"1":[0,0,0],"2":[0,0],"3":[0,0],"4":[0,0],"5":[0,0],"6":[0,0],"7":[0,0],"8":[0,0]},inputSourceMap:{version:3,file:"/home/runner/work/omnichannel-sdk/omnichannel-sdk/src/Utils/LoggingSanitizer.ts",sourceRoot:"",sources:["/home/runner/work/omnichannel-sdk/omnichannel-sdk/src/Utils/LoggingSanitizer.ts"],names:[],mappings:";;;AAAA,iDAA4C;AAE5C;IAAA;IAiBA,CAAC;IAhBe,8CAA6B,GAA3C,UAA4C,WAAgB;QAA5D,iBAeC;;QAdC,IAAG,WAAW,IAAI,OAAO,WAAW,KAAK,QAAQ,IAAI,OAAA,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,0CAAE,MAAM,IAAG,CAAC,EAAE;YACzF,MAAA,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,0CAAE,OAAO,CAAC,UAAC,GAAG;gBAClC,IAAI,mBAAS,CAAC,mBAAmB,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE;oBACrD,gDAAgD;oBAChD,OAAO,WAAW,CAAC,KAAG,GAAK,CAAC,CAAC;iBAC9B;gBAED,IAAI,WAAW,CAAC,KAAG,GAAK,CAAC,KAAK,IAAI,IAAI,OAAO,WAAW,CAAC,KAAG,GAAK,CAAC,KAAK,QAAQ,EAAE;oBAC/E,oDAAoD;oBACpD,KAAI,CAAC,6BAA6B,CAAC,WAAW,CAAC,KAAG,GAAK,CAAC,CAAC,CAAC;oBAC1D,OAAO;iBACR;YACL,CAAC,EAAE;SACJ;IACH,CAAC;IACH,uBAAC;AAAD,CAAC,AAjBD,IAiBC;AAjBY,4CAAgB",sourcesContent:["import Constants from \"../Common/Constants\";\n\nexport class LoggingSanitizer {\n public static stripErrorSensitiveProperties(errorObject: any): void { // eslint-disable-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n if(errorObject && typeof errorObject === 'object' && Object.keys(errorObject)?.length > 0) {\n Object.keys(errorObject)?.forEach((key) => {\n if (Constants.sensitiveProperties.indexOf(key) !== -1) {\n // remove sensitive properties from error object\n delete errorObject[`${key}`];\n }\n\n if (errorObject[`${key}`] !== null && typeof errorObject[`${key}`] === 'object') {\n // check sensitive properties in nested error object\n this.stripErrorSensitiveProperties(errorObject[`${key}`]);\n return;\n }\n });\n }\n }\n}\n"]},_coverageSchema:"332fd63041d2c1bcb487cc26dd0d5f7d97098a6c"},coverage=global[gcv]||(global[gcv]={});if(coverage[path]&&coverage[path].hash===hash){return coverage[path];}coverageData.hash=hash;return coverage[path]=coverageData;}();cov_1dqryatfp5.s[0]++;Object.defineProperty(exports,"__esModule",{value:true});cov_1dqryatfp5.s[1]++;exports.LoggingSanitizer=void 0;var Constants_1=(cov_1dqryatfp5.s[2]++,__webpack_require__(/*! ../Common/Constants */ "./src/Common/Constants.ts"));var LoggingSanitizer=(cov_1dqryatfp5.s[3]++,function(){cov_1dqryatfp5.f[0]++;function LoggingSanitizer(){cov_1dqryatfp5.f[1]++;}cov_1dqryatfp5.s[4]++;LoggingSanitizer.stripErrorSensitiveProperties=function(errorObject){cov_1dqryatfp5.f[2]++;var _this=(cov_1dqryatfp5.s[5]++,this);var _a,_b;cov_1dqryatfp5.s[6]++;if((cov_1dqryatfp5.b[1][0]++,errorObject)&&(cov_1dqryatfp5.b[1][1]++,typeof errorObject==='object')&&(cov_1dqryatfp5.b[1][2]++,((cov_1dqryatfp5.b[3][0]++,(_a=Object.keys(errorObject))===null)||(cov_1dqryatfp5.b[3][1]++,_a===void 0)?(cov_1dqryatfp5.b[2][0]++,void 0):(cov_1dqryatfp5.b[2][1]++,_a.length))>0)){cov_1dqryatfp5.b[0][0]++;cov_1dqryatfp5.s[7]++;(cov_1dqryatfp5.b[5][0]++,(_b=Object.keys(errorObject))===null)||(cov_1dqryatfp5.b[5][1]++,_b===void 0)?(cov_1dqryatfp5.b[4][0]++,void 0):(cov_1dqryatfp5.b[4][1]++,_b.forEach(function(key){cov_1dqryatfp5.f[3]++;cov_1dqryatfp5.s[8]++;if(Constants_1.default.sensitiveProperties.indexOf(key)!==-1){cov_1dqryatfp5.b[6][0]++;cov_1dqryatfp5.s[9]++;delete errorObject[""+key];}else{cov_1dqryatfp5.b[6][1]++;}cov_1dqryatfp5.s[10]++;if((cov_1dqryatfp5.b[8][0]++,errorObject[""+key]!==null)&&(cov_1dqryatfp5.b[8][1]++,typeof errorObject[""+key]==='object')){cov_1dqryatfp5.b[7][0]++;cov_1dqryatfp5.s[11]++;_this.stripErrorSensitiveProperties(errorObject[""+key]);cov_1dqryatfp5.s[12]++;return;}else{cov_1dqryatfp5.b[7][1]++;}}));}else{cov_1dqryatfp5.b[0][1]++;}};cov_1dqryatfp5.s[13]++;return LoggingSanitizer;}());cov_1dqryatfp5.s[14]++;exports.LoggingSanitizer=LoggingSanitizer;
|
|
2572
|
+
|
|
2573
|
+
/***/ }),
|
|
2574
|
+
|
|
2331
2575
|
/***/ "./src/Utils/OSInfo.ts":
|
|
2332
2576
|
/*!*****************************!*\
|
|
2333
2577
|
!*** ./src/Utils/OSInfo.ts ***!
|
|
@@ -2402,4 +2646,4 @@ var cov_2a1cn1sr0=function(){var path="/home/runner/work/omnichannel-sdk/omnicha
|
|
|
2402
2646
|
/***/ })
|
|
2403
2647
|
|
|
2404
2648
|
/******/ })));
|
|
2405
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2F4aW9zL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvYWRhcHRlcnMveGhyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvYXhpb3MuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9jYW5jZWwvQ2FuY2VsLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvY2FuY2VsL0NhbmNlbFRva2VuLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvY2FuY2VsL2lzQ2FuY2VsLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvY29yZS9BeGlvcy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NvcmUvSW50ZXJjZXB0b3JNYW5hZ2VyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvY29yZS9idWlsZEZ1bGxQYXRoLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvY29yZS9jcmVhdGVFcnJvci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NvcmUvZGlzcGF0Y2hSZXF1ZXN0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvY29yZS9lbmhhbmNlRXJyb3IuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9jb3JlL21lcmdlQ29uZmlnLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvY29yZS9zZXR0bGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9jb3JlL3RyYW5zZm9ybURhdGEuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9kZWZhdWx0cy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvYmluZC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvYnVpbGRVUkwuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9oZWxwZXJzL2NvbWJpbmVVUkxzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9jb29raWVzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9pc0Fic29sdXRlVVJMLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9pc0F4aW9zRXJyb3IuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9oZWxwZXJzL2lzVVJMU2FtZU9yaWdpbi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvbm9ybWFsaXplSGVhZGVyTmFtZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvcGFyc2VIZWFkZXJzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9zcHJlYWQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi91dGlscy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcHJvY2Vzcy9icm93c2VyLmpzIiwid2VicGFjazovLy8od2VicGFjaykvYnVpbGRpbi9nbG9iYWwuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL0NvbW1vbi9Db25zdGFudHMudHMiLCJ3ZWJwYWNrOi8vLy4vc3JjL0NvbW1vbi9FbnVtcy50cyIsIndlYnBhY2s6Ly8vLi9zcmMvQ29tbW9uL0V2ZW50TmFtZXMudHMiLCJ3ZWJwYWNrOi8vLy4vc3JjL0NvbW1vbi9Mb2NhbGVzLnRzIiwid2VicGFjazovLy8uL3NyYy9Db21tb24vT0NTREtMb2dnZXIudHMiLCJ3ZWJwYWNrOi8vLy4vc3JjL0NvbW1vbi9PbW5pY2hhbm5lbEVuZHBvaW50cy50cyIsIndlYnBhY2s6Ly8vLi9zcmMvQ29tbW9uL09tbmljaGFubmVsSFRUUEhlYWRlcnMudHMiLCJ3ZWJwYWNrOi8vLy4vc3JjL01vZGVsL0xvZ0xldmVsLnRzIiwid2VicGFjazovLy8uL3NyYy9TREsudHMiLCJ3ZWJwYWNrOi8vLy4vc3JjL1NES1Byb3ZpZGVyLnRzIiwid2VicGFjazovLy8uL3NyYy9VdGlscy9Ccm93c2VySW5mby50cyIsIndlYnBhY2s6Ly8vLi9zcmMvVXRpbHMvRGV2aWNlSW5mby50cyIsIndlYnBhY2s6Ly8vLi9zcmMvVXRpbHMvRXZlbnRNYW5hZ2VyLnRzIiwid2VicGFjazovLy8uL3NyYy9VdGlscy9PU0luZm8udHMiLCJ3ZWJwYWNrOi8vLy4vc3JjL1V0aWxzL1RlbGVtZXRyeUhlbHBlci50cyIsIndlYnBhY2s6Ly8vLi9zcmMvVXRpbHMvVGltZXIudHMiLCJ3ZWJwYWNrOi8vLy4vc3JjL1V0aWxzL2F4aW9zUmV0cnkudHMiLCJ3ZWJwYWNrOi8vLy4vc3JjL1V0aWxzL3V1aWQudHMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZXhwb3J0cyIsInZhbHVlIiwiRW51bXNfMSIsInJlcXVpcmUiLCJDb25zdGFudHMiLCJyZXF1aXJlZE9tbmljaGFubmVsQ29uZmlndXJhdGlvblBhcmFtZXRlcnMiLCJkZWZhdWx0SGVhZGVycyIsImJ5cGFzc0NhY2hlSGVhZGVycyIsImRlZmF1bHRDaGFubmVsSWQiLCJDaGFubmVsSWQiLCJMQ1ciLCJkZWZhdWx0TG9jYWxlIiwibm9Db250ZW50U3RhdHVzQ29kZSIsInRyYW5zYWN0aW9uaWQiLCJkZWZhdWx0IiwiTGl2ZUNoYXRWZXJzaW9uIiwiT0NTREtUZWxlbWV0cnlFdmVudCIsIk9wZXJhdGluZ1N5c3RlbSIsIkRldmljZVR5cGUiLCJCcm93c2VyIiwiQnJvd3NlclZlbmRvciIsIkV2ZW50TmFtZXMiLCJnZXQiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwiTG9jYWxlcyIsInN1cHBvcnRlZExvY2FsZXMiLCJUZWxlbWV0cnlIZWxwZXJfMSIsIk9DU0RLTG9nZ2VyIiwibG9nZ2VyIiwicHJvdG90eXBlIiwibG9nIiwibG9nbGV2ZWwiLCJ0ZWxlbWV0cnlFdmVudCIsImN1c3RvbURhdGEiLCJkZXNjcmlwdGlvbiIsImlzTG9nZ2luZ0VuYWJsZWQiLCJsb2dEYXRhIiwiR0VUVEVMRU1FVFJZRVZFTlREQVRBIiwibG9nRXZlbnQiLCJsb2dMZXZlbCIsInNldFRpbWVvdXQiLCJsb2dDbGllbnRTZGtUZWxlbWV0cnlFdmVudCIsImJpbmQiLCJpc051bGxPclVuZGVmaW5lZCIsIm9iaiIsInVuZGVmaW5lZCIsIk9tbmljaGFubmVsRW5kcG9pbnRzIiwiTGl2ZUNoYXRDb25maWdQYXRoIiwiTGl2ZUNoYXRTZXNzaW9uSW5pdFBhdGgiLCJMaXZlQ2hhdEF1dGhTZXNzaW9uSW5pdFBhdGgiLCJMaXZlQ2hhdEdldENoYXRUb2tlblBhdGgiLCJMaXZlQ2hhdHYyR2V0Q2hhdFRva2VuUGF0aCIsIkxpdmVDaGF0QXV0aEdldENoYXRUb2tlblBhdGgiLCJMaXZlQ2hhdHYyQXV0aEdldENoYXRUb2tlblBhdGgiLCJMaXZlQ2hhdFNlc3Npb25DbG9zZVBhdGgiLCJMaXZlQ2hhdEF1dGhTZXNzaW9uQ2xvc2VQYXRoIiwiTGl2ZUNoYXRTdWJtaXRQb3N0Q2hhdFBhdGgiLCJMaXZlQ2hhdEF1dGhTdWJtaXRQb3N0Q2hhdFBhdGgiLCJMaXZlQ2hhdEdldFN1cnZleUludml0ZUxpbmtQYXRoIiwiTGl2ZUNoYXRBdXRoR2V0U3VydmV5SW52aXRlTGlua1BhdGgiLCJMaXZlQ2hhdEdldENoYXRUcmFuc2NyaXB0UGF0aCIsIkxpdmVDaGF0djJHZXRDaGF0VHJhbnNjcmlwdFBhdGgiLCJMaXZlQ2hhdEF1dGhHZXRDaGF0VHJhbnNjcmlwdFBhdGgiLCJMaXZlQ2hhdHYyQXV0aEdldENoYXRUcmFuc2NyaXB0UGF0aCIsIkxpdmVDaGF0VHJhbnNjcmlwdEVtYWlsUmVxdWVzdFBhdGgiLCJMaXZlQ2hhdEF1dGhUcmFuc2NyaXB0RW1haWxSZXF1ZXN0UGF0aCIsIkxpdmVDaGF0RmV0Y2hEYXRhTWFza2luZ0luZm9QYXRoIiwiTGl2ZUNoYXRTZWNvbmRhcnlDaGFubmVsRXZlbnRQYXRoIiwiTGl2ZUNoYXRBdXRoU2Vjb25kYXJ5Q2hhbm5lbEV2ZW50UGF0aCIsIkxpdmVDaGF0TGl2ZVdvcmtJdGVtRGV0YWlsc1BhdGgiLCJMaXZlQ2hhdEF1dGhMaXZlV29ya0l0ZW1EZXRhaWxzUGF0aCIsIkxpdmVDaGF0R2V0UmVjb25uZWN0YWJsZUNoYXRzUGF0aCIsIkxpdmVDaGF0UmVjb25uZWN0QXZhaWxhYmlsaXR5UGF0aCIsIkxpdmVDaGF0VmFsaWRhdGVBdXRoQ2hhdE1hcFJlY29yZFBhdGgiLCJHZXRRdWV1ZUF2YWlsYWJpbGl0eVBhdGgiLCJTZW5kVHlwaW5nSW5kaWNhdG9yUGF0aCIsIk9tbmljaGFubmVsSFRUUEhlYWRlcnMiLCJhdXRoZW50aWNhdGVkVXNlclRva2VuIiwiYXV0aG9yaXphdGlvbiIsIm9yZ2FuaXphdGlvbklkIiwid2lkZ2V0QXBwSWQiLCJyZXF1ZXN0SWQiLCJMb2dMZXZlbCIsIl9fYXNzaWduIiwiYXNzaWduIiwidCIsInMiLCJpIiwibiIsImFyZ3VtZW50cyIsImxlbmd0aCIsInAiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJhcHBseSIsIl9fYXdhaXRlciIsInRoaXNBcmciLCJfYXJndW1lbnRzIiwiUCIsImdlbmVyYXRvciIsImFkb3B0IiwicmVzb2x2ZSIsIlByb21pc2UiLCJyZWplY3QiLCJmdWxmaWxsZWQiLCJzdGVwIiwibmV4dCIsImUiLCJyZWplY3RlZCIsInJlc3VsdCIsImRvbmUiLCJ0aGVuIiwiX19nZW5lcmF0b3IiLCJib2R5IiwiXyIsImxhYmVsIiwic2VudCIsInRyeXMiLCJvcHMiLCJmIiwieSIsImciLCJ2ZXJiIiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJ2Iiwib3AiLCJUeXBlRXJyb3IiLCJwb3AiLCJwdXNoIiwiYXhpb3NfMSIsIkJyb3dzZXJJbmZvXzEiLCJDb25zdGFudHNfMSIsIkRldmljZUluZm9fMSIsIkxvY2FsZXNfMSIsIkxvZ0xldmVsXzEiLCJFbnVtc18yIiwiT1NJbmZvXzEiLCJPbW5pY2hhbm5lbEVuZHBvaW50c18xIiwiT21uaWNoYW5uZWxIVFRQSGVhZGVyc18xIiwiVGltZXJfMSIsImF4aW9zUmV0cnlfMSIsInV1aWRfMSIsIlNESyIsIm9tbmljaGFubmVsQ29uZmlndXJhdGlvbiIsImNvbmZpZ3VyYXRpb24iLCJkZWZhdWx0Q29uZmlndXJhdGlvbiIsImtleXMiLCJfaSIsIl9hIiwia2V5IiwiRXJyb3IiLCJjaGFubmVsSWQiLCJ2YWx1ZXMiLCJpbmNsdWRlcyIsImN1cnJlbnRPbW5pY2hhbm5lbENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJzIiwiX2IiLCJfYyIsImxpdmVDaGF0VmVyc2lvbiIsIlYxIiwiZ2V0Q2hhdENvbmZpZyIsImJ5cGFzc0NhY2hlIiwidGltZXIiLCJlbmRwb2ludCIsImF4aW9zSW5zdGFuY2UiLCJoZWFkZXJzIiwicmVzcG9uc2UiLCJlbGFwc2VkVGltZUluTWlsbGlzZWNvbmRzIiwiZGF0YSIsIlRpbWVyIiwiVElNRVIiLCJJTkZPIiwiR0VUQ0hBVENPTkZJRyIsIlJlcXVlc3RJZCIsInV1aWR2NCIsIm9yZ1VybCIsIm9yZ0lkIiwid2lkZ2V0SWQiLCJjcmVhdGUiLCJyZXRyaWVzIiwibWF4UmVxdWVzdFJldHJpZXNPbkZhaWx1cmUiLCJtaWxsaVNlY29uZHNFbGFwc2VkIiwiVjIiLCJHRVRDSEFUQ09ORklHU1VDQ0VTUyIsIlJlZ2lvbiIsIkVsYXBzZWRUaW1lSW5NaWxsaXNlY29uZHMiLCJUcmFuc2FjdGlvbklkIiwiZ2V0TFdJRGV0YWlscyIsImdldExXSURldGFpbHNPcHRpb25hbFBhcmFtcyIsInJlY29ubmVjdElkIiwib3B0aW9ucyIsIl90aGlzIiwiR0VUTFdJU1RBVFVTU1RBUlRFRCIsIm1ldGhvZCIsInVybCIsImVycm9yXzEiLCJHRVRMV0lTVEFUVVNTVUNDRUVERUQiLCJFUlJPUiIsIkdFVExXSVNUQVRVU0ZBSUxFRCIsIkV4Y2VwdGlvbkRldGFpbHMiLCJnZXRDaGF0VG9rZW4iLCJnZXRDaGF0VG9rZW5PcHRpb25hbFBhcmFtcyIsImN1cnJlbnRSZXRyeUNvdW50IiwiY3VycmVudExpdmVDaGF0VmVyc2lvbiIsIkdFVENIQVRUT0tFTlNUQVJURUQiLCJlcnJvcl8yIiwiR0VUQ0hBVFRPS0VOU1VDQ0VFREVEIiwic3RhdHVzIiwiR0VUQ0hBVFRPS0VORkFJTEVEIiwiZ2V0Q2hhdFRva2VuUmV0cnlDb3VudCIsImNhdGNoIiwiZXJyb3IiLCJnZXRDaGF0VG9rZW5UaW1lQmV0d2VlblJldHJpZXNPbkZhaWx1cmUiLCJnZXRSZWNvbm5lY3RhYmxlQ2hhdHMiLCJyZWNvbm5lY3RhYmxlQ2hhdHNQYXJhbXMiLCJHRVRSRUNPTk5FQ1RBQkxFQ0hBVFMiLCJlcnJvcl8zIiwiZ2V0UmVjb25uZWN0QXZhaWxhYmlsaXR5IiwiR0VUUkVDT05ORUNUQVZBSUxBQklMSVRZIiwiZXJyb3JfNCIsIldBUk4iLCJnZXRRdWV1ZUF2YWlsYWJpbGl0eSIsInF1ZXVlQXZhaWxhYmlsaXR5T3B0aW9uYWxQYXJhbXMiLCJpbml0Q29udGV4dCIsImdldENvbnRleHQiLCJHRVRRVUVVRUFWQUlMQUJJTElUWVNUQVJURUQiLCJ3aW5kb3ciLCJkb2N1bWVudCIsImJyb3dzZXIiLCJCcm93c2VySW5mbyIsImdldEJyb3dzZXJOYW1lIiwiZGV2aWNlIiwiRGV2aWNlSW5mbyIsImdldERldmljZVR5cGUiLCJvcmlnaW51cmwiLCJsb2NhdGlvbiIsImhyZWYiLCJvcyIsIk9TSW5mbyIsImdldE9zVHlwZSIsImxvY2FsZSIsImRhdGFfMSIsImVycm9yXzUiLCJHRVRRVUVVRUFWQUlMQUJJTElUWVNVQ0NFRURFRCIsIkdFVFFVRVVFQVZBSUxBQklMSVRZRkFJTEVEIiwic2Vzc2lvbkluaXQiLCJzZXNzaW9uSW5pdE9wdGlvbmFsUGFyYW1zIiwiU0VTU0lPTklOSVRTVEFSVEVEIiwiZXJyb3JfNiIsIlNFU1NJT05JTklUU1VDQ0VFREVEIiwiU0VTU0lPTklOSVRGQUlMRUQiLCJzZXNzaW9uQ2xvc2UiLCJzZXNzaW9uQ2xvc2VPcHRpb25hbFBhcmFtcyIsImlzUmVjb25uZWN0Q2hhdCIsImlzUGVyc2lzdGVudENoYXQiLCJjaGF0SWQiLCJTRVNTSU9OQ0xPU0VTVEFSVEVEIiwiZXJyb3JfNyIsIlNFU1NJT05DTE9TRVNVQ0NFRURFRCIsIlNFU1NJT05DTE9TRUZBSUxFRCIsInZhbGlkYXRlQXV0aENoYXRSZWNvcmQiLCJ2YWxpZGF0ZUF1dGhDaGF0UmVjb3JkT3B0aW9uYWxQYXJhbXMiLCJfZCIsImVycm9yXzgiLCJfZSIsIlZBTElEQVRFQVVUSENIQVRSRUNPUkRTVEFSVEVEIiwiYXV0aENoYXRFeGlzdCIsIlZBTElEQVRFQVVUSENIQVRSRUNPUkRTVUNDRUVERUQiLCJWQUxJREFURUFVVEhDSEFUUkVDT1JERkFJTEVEIiwiRXJyb3JDb2RlIiwidG9TdHJpbmciLCJzdWJtaXRQb3N0Q2hhdFJlc3BvbnNlIiwicG9zdENoYXRSZXNwb25zZSIsInN1Ym1pdFBvc3RDaGF0UmVzcG9uc2VPcHRpb25hbFBhcmFtcyIsIlNVQk1JVFBPU1RDSEFUU1RBUlRFRCIsIkpTT04iLCJzdHJpbmdpZnkiLCJlcnJvcl85IiwiU1VCTUlUUE9TVENIQVRTVUNDRUVERUQiLCJTVUJNSVRQT1NUQ0hBVEZBSUxFRCIsImdldFN1cnZleUludml0ZUxpbmsiLCJzdXJ2ZXlPd25lcklkIiwic3VydmV5SW52aXRlQVBJUmVxdWVzdEJvZHkiLCJnZXRzdXJ2ZXlJbnZpdGVMaW5rT3B0aW9uYWxQYXJhbXMiLCJHRVRTVVJWRVlJTlZJVEVMSU5LU1RBUlRFRCIsIlN1cnZleU93bmVySWQiLCJlcnJvcl8xMCIsIkdFVFNVUlZFWUlOVklURUxJTktTVUNDRUVERUQiLCJHRVRTVVJWRVlJTlZJVEVMSU5LRkFJTEVEIiwiZ2V0Q2hhdFRyYW5zY3JpcHRzIiwidG9rZW4iLCJnZXRDaGF0VHJhbnNjcmlwdHNPcHRpb25hbFBhcmFtcyIsIkdFVENIQVRUUkFOU0NSSVBUU1RBUlRFRCIsImVycm9yXzExIiwiR0VUQ0hBVFRSQU5TQ1JJUFRTVUNDRUVERUQiLCJHRVRDSEFUVFJBTlNDUklQVEZBSUxFRCIsImVtYWlsVHJhbnNjcmlwdCIsImVtYWlsUmVxdWVzdEJvZHkiLCJlbWFpbFRyYW5zY3JpcHRPcHRpb25hbFBhcmFtcyIsIkVNQUlMVFJBTlNDUklQVFNUQVJURUQiLCJlcnJvcl8xMiIsIkVNQUlMVFJBTlNDUklQVFNVQ0NFRURFRCIsIkVNQUlMVFJBTlNDUklQVEZBSUxFRCIsImZldGNoRGF0YU1hc2tpbmdJbmZvIiwiRkVUQ0hEQVRBTUFTS0lOR1NUQVJURUQiLCJlcnJvcl8xMyIsIkZFVENIREFUQU1BU0tJTkdTVUNDRUVERUQiLCJGRVRDSERBVEFNQVNLSU5HRkFJTEVEIiwibWFrZVNlY29uZGFyeUNoYW5uZWxFdmVudFJlcXVlc3QiLCJzZWNvbmRhcnlDaGFubmVsRXZlbnRSZXF1ZXN0Qm9keSIsInNlY29uZGFyeUNoYW5uZWxFdmVudE9wdGlvbmFsUGFyYW1zIiwiZXJyb3JfMTQiLCJTRUNPTkRBUllDSEFOTkVMRVZFTlRSRVFVRVNUU1RBUlRFRCIsIlNFQ09OREFSWUNIQU5ORUxFVkVOVFJFUVVFU1RTVUNDRUVERUQiLCJTRUNPTkRBUllDSEFOTkVMRVZFTlRSRVFVRVNURkFJTEVEIiwic2VuZFR5cGluZ0luZGljYXRvciIsImVycm9yXzE1IiwiU0VORFRZUElOR0lORElDQVRPUlNVQ0NFRURFRCIsIlNFTkRUWVBJTkdJTkRJQ0FUT1JGQUlMRUQiLCJPQ1NES0xvZ2dlcl8xIiwiU0RLXzEiLCJTREtQcm92aWRlciIsImdldFNESyIsImlsb2dnZXIiLCJVTktOT1dOX1ZFUlNJT04iLCJSRUdFWF9WRVJTSU9OIiwiZ2V0VXNlckFnZW50IiwidXNlckFnZW50IiwidXNlckFnZW50Q29udGFpbnNTdHJpbmciLCJzZWFyY2hTdHJpbmciLCJpbmRleE9mIiwiaXNDaHJvbWUiLCJDSFJPTUUiLCJFREdFIiwiRURHRV9DSFJPTUlVTSIsImlzSWUiLCJpc0VkZ2UiLCJpc09wZXJhIiwiT1BFUkEiLCJGSVJFRk9YIiwiU0FGQVJJIiwiSUUiLCJVTktOT1dOIiwiZ2V0QnJvd3NlclZlcnNpb24iLCJnZXRJZVZlcnNpb24iLCJjbGFzc2ljSWVWZXJzaW9uTWF0Y2hlcyIsIm1hdGNoIiwiUmVnRXhwIiwiaWVWZXJzaW9uTWF0Y2hlcyIsImdldE90aGVyVmVyc2lvbiIsImJyb3dzZXJTdHJpbmciLCJtYXRjaGVzIiwibmF2aWdhdG9yIiwibW9iaWxlIiwidGFibGV0IiwiTW9iaWxlIiwiVGFibGV0IiwiRGVza3RvcCIsIkV2ZW50TWFuYWdlciIsInJhaXNlQ3VzdG9tRXZlbnQiLCJldmVudE5hbWUiLCJwYXlsb2FkIiwiZXZlbnQiLCJjcmVhdGVDdXN0b21FdmVudCIsImRpc3BhdGNoRXZlbnQiLCJldmVudERldGFpbHMiLCJkZXRhaWwiLCJDdXN0b21FdmVudCIsImNyZWF0ZUV2ZW50IiwiaW5pdEN1c3RvbUV2ZW50Iiwid2luIiwid2lucnQiLCJ3aW5waG9uZSIsIm9zeCIsImlvcyIsImxpbnV4IiwiYW5kcm9pZCIsIldJTkRPV1NfUEhPTkUiLCJXSU5ET1dTX1JUIiwiSU9TIiwiQU5EUk9JRCIsIkxJTlVYIiwiTUFDT1NYIiwiV0lORE9XUyIsIlRlbGVtZXRyeUhlbHBlciIsIkRlc2NyaXB0aW9uIiwiRXZlbnQiLCJ0aW1lU3RhcnQiLCJEYXRlIiwiZ2V0VGltZSIsImF4aW9zUmV0cnkiLCJheGlvcyIsImF4aW9zUmV0cnlPcHRpb25zIiwiY3VycmVudFRyeSIsIm9uU3VjY2VzcyIsIm9uRXJyb3IiLCJjb25maWciLCJzaG91bGRSZXRyeSIsImludGVyY2VwdG9ycyIsInVzZSIsInJlcGxhY2UiLCJjIiwiciIsIk1hdGgiLCJyYW5kb20iLCJFdmVudE5hbWVzXzEiLCJTREtQcm92aWRlcl8xIiwiRXZlbnRNYW5hZ2VyXzEiLCJnbG9iYWwiLCJNaWNyb3NvZnQiLCJDUk0iLCJPbW5pY2hhbm5lbCIsIlV0aWwiLCJPQ1NES0xPQUQiXSwibWFwcGluZ3MiOiI7UUFBQTtRQUNBOztRQUVBO1FBQ0E7O1FBRUE7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7O1FBRUE7UUFDQTs7UUFFQTtRQUNBOztRQUVBO1FBQ0E7UUFDQTs7O1FBR0E7UUFDQTs7UUFFQTtRQUNBOztRQUVBO1FBQ0E7UUFDQTtRQUNBLDBDQUEwQyxnQ0FBZ0M7UUFDMUU7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7UUFDQSx3REFBd0Qsa0JBQWtCO1FBQzFFO1FBQ0EsaURBQWlELGNBQWM7UUFDL0Q7O1FBRUE7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBLHlDQUF5QyxpQ0FBaUM7UUFDMUUsZ0hBQWdILG1CQUFtQixFQUFFO1FBQ3JJO1FBQ0E7O1FBRUE7UUFDQTtRQUNBO1FBQ0EsMkJBQTJCLDBCQUEwQixFQUFFO1FBQ3ZELGlDQUFpQyxlQUFlO1FBQ2hEO1FBQ0E7UUFDQTs7UUFFQTtRQUNBLHNEQUFzRCwrREFBK0Q7O1FBRXJIO1FBQ0E7OztRQUdBO1FBQ0E7Ozs7Ozs7Ozs7OztBQ2xGQSxpQkFBaUIsbUJBQU8sQ0FBQyxzREFBYSxFOzs7Ozs7Ozs7Ozs7QUNBekI7O0FBRWIsWUFBWSxtQkFBTyxDQUFDLHFEQUFZO0FBQ2hDLGFBQWEsbUJBQU8sQ0FBQyxpRUFBa0I7QUFDdkMsY0FBYyxtQkFBTyxDQUFDLHlFQUFzQjtBQUM1QyxlQUFlLG1CQUFPLENBQUMsMkVBQXVCO0FBQzlDLG9CQUFvQixtQkFBTyxDQUFDLDZFQUF1QjtBQUNuRCxtQkFBbUIsbUJBQU8sQ0FBQyxtRkFBMkI7QUFDdEQsc0JBQXNCLG1CQUFPLENBQUMseUZBQThCO0FBQzVELGtCQUFrQixtQkFBTyxDQUFDLHlFQUFxQjs7QUFFL0M7QUFDQTtB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RCxRQUFQLDRCQUFtQm9MLGVBQWUxWSxPQUFmLENBQXVCMFYsZ0JBQXZCLENBQXdDOEMsYUFBYXhZLE9BQWIsQ0FBcUJnWixTQUE3RCxDQUFuQixFQUNILENBM0JELEkiLCJmaWxlIjoiU0RLLmpzIiwic291cmNlc0NvbnRlbnQiOlsiIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbiBcdFx0fVxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0aTogbW9kdWxlSWQsXG4gXHRcdFx0bDogZmFsc2UsXG4gXHRcdFx0ZXhwb3J0czoge31cbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbiBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZ2V0dGVyIH0pO1xuIFx0XHR9XG4gXHR9O1xuXG4gXHQvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG4gXHRcdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuIFx0XHR9XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gXHR9O1xuXG4gXHQvLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3RcbiBcdC8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxuIFx0Ly8gbW9kZSAmIDI6IG1lcmdlIGFsbCBwcm9wZXJ0aWVzIG9mIHZhbHVlIGludG8gdGhlIG5zXG4gXHQvLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3RcbiBcdC8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmVcbiBcdF9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uKHZhbHVlLCBtb2RlKSB7XG4gXHRcdGlmKG1vZGUgJiAxKSB2YWx1ZSA9IF9fd2VicGFja19yZXF1aXJlX18odmFsdWUpO1xuIFx0XHRpZihtb2RlICYgOCkgcmV0dXJuIHZhbHVlO1xuIFx0XHRpZigobW9kZSAmIDQpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgJiYgdmFsdWUuX19lc01vZHVsZSkgcmV0dXJuIHZhbHVlO1xuIFx0XHR2YXIgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpO1xuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobnMsICdkZWZhdWx0JywgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdmFsdWUgfSk7XG4gXHRcdGlmKG1vZGUgJiAyICYmIHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykgZm9yKHZhciBrZXkgaW4gdmFsdWUpIF9fd2VicGFja19yZXF1aXJlX18uZChucywga2V5LCBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIHZhbHVlW2tleV07IH0uYmluZChudWxsLCBrZXkpKTtcbiBcdFx0cmV0dXJuIG5zO1xuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IFwiLi9zcmMvaW5kZXgudHNcIik7XG4iLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vbGliL2F4aW9zJyk7IiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuLy4uL3V0aWxzJyk7XG52YXIgc2V0dGxlID0gcmVxdWlyZSgnLi8uLi9jb3JlL3NldHRsZScpO1xudmFyIGNvb2tpZXMgPSByZXF1aXJlKCcuLy4uL2hlbHBlcnMvY29va2llcycpO1xudmFyIGJ1aWxkVVJMID0gcmVxdWlyZSgnLi8uLi9oZWxwZXJzL2J1aWxkVVJMJyk7XG52YXIgYnVpbGRGdWxsUGF0aCA9IHJlcXVpcmUoJy4uL2NvcmUvYnVpbGRGdWxsUGF0aCcpO1xudmFyIHBhcnNlSGVhZGVycyA9IHJlcXVpcmUoJy4vLi4vaGVscGVycy9wYXJzZUhlYWRlcnMnKTtcbnZhciBpc1VSTFNhbWVPcmlnaW4gPSByZXF1aXJlKCcuLy4uL2hlbHBlcnMvaXNVUkxTYW1lT3JpZ2luJyk7XG52YXIgY3JlYXRlRXJyb3IgPSByZXF1aXJlKCcuLi9jb3JlL2NyZWF0ZUVycm9yJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24geGhyQWRhcHRlcihjb25maWcpIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIGRpc3BhdGNoWGhyUmVxdWVzdChyZXNvbHZlLCByZWplY3QpIHtcbiAgICB2YXIgcmVxdWVzdERhdGEgPSBjb25maWcuZGF0YTtcbiAgICB2YXIgcmVxdWVzdEhlYWRlcnMgPSBjb25maWcuaGVhZGVycztcblxuICAgIGlmICh1dGlscy5pc0Zvcm1EYXRhKHJlcXVlc3REYXRhKSkge1xuICAgICAgZGVsZXRlIHJlcXVlc3RIZWFkZXJzWydDb250ZW50LVR5cGUnXTsgLy8gTGV0IHRoZSBicm93c2VyIHNldCBpdFxuICAgIH1cblxuICAgIHZhciByZXF1ZXN0ID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7XG5cbiAgICAvLyBIVFRQIGJhc2ljIGF1dGhlbnRpY2F0aW9uXG4gICAgaWYgKGNvbmZpZy5hdXRoKSB7XG4gICAgICB2YXIgdXNlcm5hbWUgPSBjb25maWcuYXV0aC51c2VybmFtZSB8fCAnJztcbiAgICAgIHZhciBwYXNzd29yZCA9IGNvbmZpZy5hdXRoLnBhc3N3b3JkID8gdW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KGNvbmZpZy5hdXRoLnBhc3N3b3JkKSkgOiAnJztcbiAgICAgIHJlcXVlc3RIZWFkZXJzLkF1dGhvcml6YXRpb24gPSAnQmFzaWMgJyArIGJ0b2EodXNlcm5hbWUgKyAnOicgKyBwYXNzd29yZCk7XG4gICAgfVxuXG4gICAgdmFyIGZ1bGxQYXRoID0gYnVpbGRGdWxsUGF0aChjb25maWcuYmFzZVVSTCwgY29uZmlnLnVybCk7XG4gICAgcmVxdWVzdC5vcGVuKGNvbmZpZy5tZXRob2QudG9VcHBlckNhc2UoKSwgYnVpbGRVUkwoZnVsbFBhdGgsIGNvbmZpZy5wYXJhbXMsIGNvbmZpZy5wYXJhbXNTZXJpYWxpemVyKSwgdHJ1ZSk7XG5cbiAgICAvLyBTZXQgdGhlIHJlcXVlc3QgdGltZW91dCBpbiBNU1xuICAgIHJlcXVlc3QudGltZW91dCA9IGNvbmZpZy50aW1lb3V0O1xuXG4gICAgLy8gTGlzdGVuIGZvciByZWFkeSBzdGF0ZVxuICAgIHJlcXVlc3Qub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24gaGFuZGxlTG9hZCgpIHtcbiAgICAgIGlmICghcmVxdWVzdCB8fCByZXF1ZXN0LnJlYWR5U3RhdGUgIT09IDQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICAvLyBUaGUgcmVxdWVzdCBlcnJvcmVkIG91dCBhbmQgd2UgZGlkbid0IGdldCBhIHJlc3BvbnNlLCB0aGlzIHdpbGwgYmVcbiAgICAgIC8vIGhhbmRsZWQgYnkgb25lcnJvciBpbnN0ZWFkXG4gICAgICAvLyBXaXRoIG9uZSBleGNlcHRpb246IHJlcXVlc3QgdGhhdCB1c2luZyBmaWxlOiBwcm90b2NvbCwgbW9zdCBicm93c2Vyc1xuICAgICAgLy8gd2lsbCByZXR1cm4gc3RhdHVzIGFzIDAgZXZlbiB0aG91Z2ggaXQncyBhIHN1Y2Nlc3NmdWwgcmVxdWVzdFxuICAgICAgaWYgKHJlcXVlc3Quc3RhdHVzID09PSAwICYmICEocmVxdWVzdC5yZXNwb25zZVVSTCAmJiByZXF1ZXN0LnJlc3BvbnNlVVJMLmluZGV4T2YoJ2ZpbGU6JykgPT09IDApKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgLy8gUHJlcGFyZSB0aGUgcmVzcG9uc2VcbiAgICAgIHZhciByZXNwb25zZUhlYWRlcnMgPSAnZ2V0QWxsUmVzcG9uc2VIZWFkZXJzJyBpbiByZXF1ZXN0ID8gcGFyc2VIZWFkZXJzKHJlcXVlc3QuZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkpIDogbnVsbDtcbiAgICAgIHZhciByZXNwb25zZURhdGEgPSAhY29uZmlnLnJlc3BvbnNlVHlwZSB8fCBjb25maWcucmVzcG9uc2VUeXBlID09PSAndGV4dCcgPyByZXF1ZXN0LnJlc3BvbnNlVGV4dCA6IHJlcXVlc3QucmVzcG9uc2U7XG4gICAgICB2YXIgcmVzcG9uc2UgPSB7XG4gICAgICAgIGRhdGE6IHJlc3BvbnNlRGF0YSxcbiAgICAgICAgc3RhdHVzOiByZXF1ZXN0LnN0YXR1cyxcbiAgICAgICAgc3RhdHVzVGV4dDogcmVxdWVzdC5zdGF0dXNUZXh0LFxuICAgICAgICBoZWFkZXJzOiByZXNwb25zZUhlYWRlcnMsXG4gICAgICAgIGNvbmZpZzogY29uZmlnLFxuICAgICAgICByZXF1ZXN0OiByZXF1ZXN0XG4gICAgICB9O1xuXG4gICAgICBzZXR0bGUocmVzb2x2ZSwgcmVqZWN0LCByZXNwb25zZSk7XG5cbiAgICAgIC8vIENsZWFuIHVwIHJlcXVlc3RcbiAgICAgIHJlcXVlc3QgPSBudWxsO1xuICAgIH07XG5cbiAgICAvLyBIYW5kbGUgYnJvd3NlciByZXF1ZXN0IGNhbmNlbGxhdGlvbiAoYXMgb3Bwb3NlZCB0byBhIG1hbnVhbCBjYW5jZWxsYXRpb24pXG4gICAgcmVxdWVzdC5vbmFib3J0ID0gZnVuY3Rpb24gaGFuZGxlQWJvcnQoKSB7XG4gICAgICBpZiAoIXJlcXVlc3QpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICByZWplY3QoY3JlYXRlRXJyb3IoJ1JlcXVlc3QgYWJvcnRlZCcsIGNvbmZpZywgJ0VDT05OQUJPUlRFRCcsIHJlcXVlc3QpKTtcblxuICAgICAgLy8gQ2xlYW4gdXAgcmVxdWVzdFxuICAgICAgcmVxdWVzdCA9IG51bGw7XG4gICAgfTtcblxuICAgIC8vIEhhbmRsZSBsb3cgbGV2ZWwgbmV0d29yayBlcnJvcnNcbiAgICByZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbiBoYW5kbGVFcnJvcigpIHtcbiAgICAgIC8vIFJlYWwgZXJyb3JzIGFyZSBoaWRkZW4gZnJvbSB1cyBieSB0aGUgYnJvd3NlclxuICAgICAgLy8gb25lcnJvciBzaG91bGQgb25seSBmaXJlIGlmIGl0J3MgYSBuZXR3b3JrIGVycm9yXG4gICAgICByZWplY3QoY3JlYXRlRXJyb3IoJ05ldHdvcmsgRXJyb3InLCBjb25maWcsIG51bGwsIHJlcXVlc3QpKTtcblxuICAgICAgLy8gQ2xlYW4gdXAgcmVxdWVzdFxuICAgICAgcmVxdWVzdCA9IG51bGw7XG4gICAgfTtcblxuICAgIC8vIEhhbmRsZSB0aW1lb3V0XG4gICAgcmVxdWVzdC5vbnRpbWVvdXQgPSBmdW5jdGlvbiBoYW5kbGVUaW1lb3V0KCkge1xuICAgICAgdmFyIHRpbWVvdXRFcnJvck1lc3NhZ2UgPSAndGltZW91dCBvZiAnICsgY29uZmlnLnRpbWVvdXQgKyAnbXMgZXhjZWVkZWQnO1xuICAgICAgaWYgKGNvbmZpZy50aW1lb3V0RXJyb3JNZXNzYWdlKSB7XG4gICAgICAgIHRpbWVvdXRFcnJvck1lc3NhZ2UgPSBjb25maWcudGltZW91dEVycm9yTWVzc2FnZTtcbiAgICAgIH1cbiAgICAgIHJlamVjdChjcmVhdGVFcnJvcih0aW1lb3V0RXJyb3JNZXNzYWdlLCBjb25maWcsICdFQ09OTkFCT1JURUQnLFxuICAgICAgICByZXF1ZXN0KSk7XG5cbiAgICAgIC8vIENsZWFuIHVwIHJlcXVlc3RcbiAgICAgIHJlcXVlc3QgPSBudWxsO1xuICAgIH07XG5cbiAgICAvLyBBZGQgeHNyZiBoZWFkZXJcbiAgICAvLyBUaGlzIGlzIG9ubHkgZG9uZSBpZiBydW5uaW5nIGluIGEgc3RhbmRhcmQgYnJvd3NlciBlbnZpcm9ubWVudC5cbiAgICAvLyBTcGVjaWZpY2FsbHkgbm90IGlmIHdlJ3JlIGluIGEgd2ViIHdvcmtlciwgb3IgcmVhY3QtbmF0aXZlLlxuICAgIGlmICh1dGlscy5pc1N0YW5kYXJkQnJvd3NlckVudigpKSB7XG4gICAgICAvLyBBZGQgeHNyZiBoZWFkZXJcbiAgICAgIHZhciB4c3JmVmFsdWUgPSAoY29uZmlnLndpdGhDcmVkZW50aWFscyB8fCBpc1VSTFNhbWVPcmlnaW4oZnVsbFBhdGgpKSAmJiBjb25maWcueHNyZkNvb2tpZU5hbWUgP1xuICAgICAgICBjb29raWVzLnJlYWQoY29uZmlnLnhzcmZDb29raWVOYW1lKSA6XG4gICAgICAgIHVuZGVmaW5lZDtcblxuICAgICAgaWYgKHhzcmZWYWx1ZSkge1xuICAgICAgICByZXF1ZXN0SGVhZGVyc1tjb25maWcueHNyZkhlYWRlck5hbWVdID0geHNyZlZhbHVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEFkZCBoZWFkZXJzIHRvIHRoZSByZXF1ZXN0XG4gICAgaWYgKCdzZXRSZXF1ZXN0SGVhZGVyJyBpbiByZXF1ZXN0KSB7XG4gICAgICB1dGlscy5mb3JFYWNoKHJlcXVlc3RIZWFkZXJzLCBmdW5jdGlvbiBzZXRSZXF1ZXN0SGVhZGVyKHZhbCwga2V5KSB7XG4gICAgICAgIGlmICh0eXBlb2YgcmVxdWVzdERhdGEgPT09ICd1bmRlZmluZWQnICYmIGtleS50b0xvd2VyQ2FzZSgpID09PSAnY29udGVudC10eXBlJykge1xuICAgICAgICAgIC8vIFJlbW92ZSBDb250ZW50LVR5cGUgaWYgZGF0YSBpcyB1bmRlZmluZWRcbiAgICAgICAgICBkZWxldGUgcmVxdWVzdEhlYWRlcnNba2V5XTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBPdGhlcndpc2UgYWRkIGhlYWRlciB0byB0aGUgcmVxdWVzdFxuICAgICAgICAgIHJlcXVlc3Quc2V0UmVxdWVzdEhlYWRlcihrZXksIHZhbCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIEFkZCB3aXRoQ3JlZGVudGlhbHMgdG8gcmVxdWVzdCBpZiBuZWVkZWRcbiAgICBpZiAoIXV0aWxzLmlzVW5kZWZpbmVkKGNvbmZpZy53aXRoQ3JlZGVudGlhbHMpKSB7XG4gICAgICByZXF1ZXN0LndpdGhDcmVkZW50aWFscyA9ICEhY29uZmlnLndpdGhDcmVkZW50aWFscztcbiAgICB9XG5cbiAgICAvLyBBZGQgcmVzcG9uc2VUeXBlIHRvIHJlcXVlc3QgaWYgbmVlZGVkXG4gICAgaWYgKGNvbmZpZy5yZXNwb25zZVR5cGUpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJlcXVlc3QucmVzcG9uc2VUeXBlID0gY29uZmlnLnJlc3BvbnNlVHlwZTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgLy8gRXhwZWN0ZWQgRE9NRXhjZXB0aW9uIHRocm93biBieSBicm93c2VycyBub3QgY29tcGF0aWJsZSBYTUxIdHRwUmVxdWVzdCBMZXZlbCAyLlxuICAgICAgICAvLyBCdXQsIHRoaXMgY2FuIGJlIHN1cHByZXNzZWQgZm9yICdqc29uJyB0eXBlIGFzIGl0IGNhbiBiZSBwYXJzZWQgYnkgZGVmYXVsdCAndHJhbnNmb3JtUmVzcG9uc2UnIGZ1bmN0aW9uLlxuICAgICAgICBpZiAoY29uZmlnLnJlc3BvbnNlVHlwZSAhPT0gJ2pzb24nKSB7XG4gICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEhhbmRsZSBwcm9ncmVzcyBpZiBuZWVkZWRcbiAgICBpZiAodHlwZW9mIGNvbmZpZy5vbkRvd25sb2FkUHJvZ3Jlc3MgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJlcXVlc3QuYWRkRXZlbnRMaXN0ZW5lcigncHJvZ3Jlc3MnLCBjb25maWcub25Eb3dubG9hZFByb2dyZXNzKTtcbiAgICB9XG5cbiAgICAvLyBOb3QgYWxsIGJyb3dzZXJzIHN1cHBvcnQgdXBsb2FkIGV2ZW50c1xuICAgIGlmICh0eXBlb2YgY29uZmlnLm9uVXBsb2FkUHJvZ3Jlc3MgPT09ICdmdW5jdGlvbicgJiYgcmVxdWVzdC51cGxvYWQpIHtcbiAgICAgIHJlcXVlc3QudXBsb2FkLmFkZEV2ZW50TGlzdGVuZXIoJ3Byb2dyZXNzJywgY29uZmlnLm9uVXBsb2FkUHJvZ3Jlc3MpO1xuICAgIH1cblxuICAgIGlmIChjb25maWcuY2FuY2VsVG9rZW4pIHtcbiAgICAgIC8vIEhhbmRsZSBjYW5jZWxsYXRpb25cbiAgICAgIGNvbmZpZy5jYW5jZWxUb2tlbi5wcm9taXNlLnRoZW4oZnVuY3Rpb24gb25DYW5jZWxlZChjYW5jZWwpIHtcbiAgICAgICAgaWYgKCFyZXF1ZXN0KSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgcmVxdWVzdC5hYm9ydCgpO1xuICAgICAgICByZWplY3QoY2FuY2VsKTtcbiAgICAgICAgLy8gQ2xlYW4gdXAgcmVxdWVzdFxuICAgICAgICByZXF1ZXN0ID0gbnVsbDtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmICghcmVxdWVzdERhdGEpIHtcbiAgICAgIHJlcXVlc3REYXRhID0gbnVsbDtcbiAgICB9XG5cbiAgICAvLyBTZW5kIHRoZSByZXF1ZXN0XG4gICAgcmVxdWVzdC5zZW5kKHJlcXVlc3REYXRhKTtcbiAgfSk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuL3V0aWxzJyk7XG52YXIgYmluZCA9IHJlcXVpcmUoJy4vaGVscGVycy9iaW5kJyk7XG52YXIgQXhpb3MgPSByZXF1aXJlKCcuL2NvcmUvQXhpb3MnKTtcbnZhciBtZXJnZUNvbmZpZyA9IHJlcXVpcmUoJy4vY29yZS9tZXJnZUNvbmZpZycpO1xudmFyIGRlZmF1bHRzID0gcmVxdWlyZSgnLi9kZWZhdWx0cycpO1xuXG4vKipcbiAqIENyZWF0ZSBhbiBpbnN0YW5jZSBvZiBBeGlvc1xuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBkZWZhdWx0Q29uZmlnIFRoZSBkZWZhdWx0IGNvbmZpZyBmb3IgdGhlIGluc3RhbmNlXG4gKiBAcmV0dXJuIHtBeGlvc30gQSBuZXcgaW5zdGFuY2Ugb2YgQXhpb3NcbiAqL1xuZnVuY3Rpb24gY3JlYXRlSW5zdGFuY2UoZGVmYXVsdENvbmZpZykge1xuICB2YXIgY29udGV4dCA9IG5ldyBBeGlvcyhkZWZhdWx0Q29uZmlnKTtcbiAgdmFyIGluc3RhbmNlID0gYmluZChBeGlvcy5wcm90b3R5cGUucmVxdWVzdCwgY29udGV4dCk7XG5cbiAgLy8gQ29weSBheGlvcy5wcm90b3R5cGUgdG8gaW5zdGFuY2VcbiAgdXRpbHMuZXh0ZW5kKGluc3RhbmNlLCBBeGlvcy5wcm90b3R5cGUsIGNvbnRleHQpO1xuXG4gIC8vIENvcHkgY29udGV4dCB0byBpbnN0YW5jZVxuICB1dGlscy5leHRlbmQoaW5zdGFuY2UsIGNvbnRleHQpO1xuXG4gIHJldHVybiBpbnN0YW5jZTtcbn1cblxuLy8gQ3JlYXRlIHRoZSBkZWZhdWx0IGluc3RhbmNlIHRvIGJlIGV4cG9ydGVkXG52YXIgYXhpb3MgPSBjcmVhdGVJbnN0YW5jZShkZWZhdWx0cyk7XG5cbi8vIEV4cG9zZSBBeGlvcyBjbGFzcyB0byBhbGxvdyBjbGFzcyBpbmhlcml0YW5jZVxuYXhpb3MuQXhpb3MgPSBBeGlvcztcblxuLy8gRmFjdG9yeSBmb3IgY3JlYXRpbmcgbmV3IGluc3RhbmNlc1xuYXhpb3MuY3JlYXRlID0gZnVuY3Rpb24gY3JlYXRlKGluc3RhbmNlQ29uZmlnKSB7XG4gIHJldHVybiBjcmVhdGVJbnN0YW5jZShtZXJnZUNvbmZpZyhheGlvcy5kZWZhdWx0cywgaW5zdGFuY2VDb25maWcpKTtcbn07XG5cbi8vIEV4cG9zZSBDYW5jZWwgJiBDYW5jZWxUb2tlblxuYXhpb3MuQ2FuY2VsID0gcmVxdWlyZSgnLi9jYW5jZWwvQ2FuY2VsJyk7XG5heGlvcy5DYW5jZWxUb2tlbiA9IHJlcXVpcmUoJy4vY2FuY2VsL0NhbmNlbFRva2VuJyk7XG5heGlvcy5pc0NhbmNlbCA9IHJlcXVpcmUoJy4vY2FuY2VsL2lzQ2FuY2VsJyk7XG5cbi8vIEV4cG9zZSBhbGwvc3ByZWFkXG5heGlvcy5hbGwgPSBmdW5jdGlvbiBhbGwocHJvbWlzZXMpIHtcbiAgcmV0dXJuIFByb21pc2UuYWxsKHByb21pc2VzKTtcbn07XG5heGlvcy5zcHJlYWQgPSByZXF1aXJlKCcuL2hlbHBlcnMvc3ByZWFkJyk7XG5cbi8vIEV4cG9zZSBpc0F4aW9zRXJyb3JcbmF4aW9zLmlzQXhpb3NFcnJvciA9IHJlcXVpcmUoJy4vaGVscGVycy9pc0F4aW9zRXJyb3InKTtcblxubW9kdWxlLmV4cG9ydHMgPSBheGlvcztcblxuLy8gQWxsb3cgdXNlIG9mIGRlZmF1bHQgaW1wb3J0IHN5bnRheCBpbiBUeXBlU2NyaXB0XG5tb2R1bGUuZXhwb3J0cy5kZWZhdWx0ID0gYXhpb3M7XG4iLCIndXNlIHN0cmljdCc7XG5cbi8qKlxuICogQSBgQ2FuY2VsYCBpcyBhbiBvYmplY3QgdGhhdCBpcyB0aHJvd24gd2hlbiBhbiBvcGVyYXRpb24gaXMgY2FuY2VsZWQuXG4gKlxuICogQGNsYXNzXG4gKiBAcGFyYW0ge3N0cmluZz19IG1lc3NhZ2UgVGhlIG1lc3NhZ2UuXG4gKi9cbmZ1bmN0aW9uIENhbmNlbChtZXNzYWdlKSB7XG4gIHRoaXMubWVzc2FnZSA9IG1lc3NhZ2U7XG59XG5cbkNhbmNlbC5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgcmV0dXJuICdDYW5jZWwnICsgKHRoaXMubWVzc2FnZSA/ICc6ICcgKyB0aGlzLm1lc3NhZ2UgOiAnJyk7XG59O1xuXG5DYW5jZWwucHJvdG90eXBlLl9fQ0FOQ0VMX18gPSB0cnVlO1xuXG5tb2R1bGUuZXhwb3J0cyA9IENhbmNlbDtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIENhbmNlbCA9IHJlcXVpcmUoJy4vQ2FuY2VsJyk7XG5cbi8qKlxuICogQSBgQ2FuY2VsVG9rZW5gIGlzIGFuIG9iamVjdCB0aGF0IGNhbiBiZSB1c2VkIHRvIHJlcXVlc3QgY2FuY2VsbGF0aW9uIG9mIGFuIG9wZXJhdGlvbi5cbiAqXG4gKiBAY2xhc3NcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGV4ZWN1dG9yIFRoZSBleGVjdXRvciBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gQ2FuY2VsVG9rZW4oZXhlY3V0b3IpIHtcbiAgaWYgKHR5cGVvZiBleGVjdXRvciAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2V4ZWN1dG9yIG11c3QgYmUgYSBmdW5jdGlvbi4nKTtcbiAgfVxuXG4gIHZhciByZXNvbHZlUHJvbWlzZTtcbiAgdGhpcy5wcm9taXNlID0gbmV3IFByb21pc2UoZnVuY3Rpb24gcHJvbWlzZUV4ZWN1dG9yKHJlc29sdmUpIHtcbiAgICByZXNvbHZlUHJvbWlzZSA9IHJlc29sdmU7XG4gIH0pO1xuXG4gIHZhciB0b2tlbiA9IHRoaXM7XG4gIGV4ZWN1dG9yKGZ1bmN0aW9uIGNhbmNlbChtZXNzYWdlKSB7XG4gICAgaWYgKHRva2VuLnJlYXNvbikge1xuICAgICAgLy8gQ2FuY2VsbGF0aW9uIGhhcyBhbHJlYWR5IGJlZW4gcmVxdWVzdGVkXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdG9rZW4ucmVhc29uID0gbmV3IENhbmNlbChtZXNzYWdlKTtcbiAgICByZXNvbHZlUHJvbWlzZSh0b2tlbi5yZWFzb24pO1xuICB9KTtcbn1cblxuLyoqXG4gKiBUaHJvd3MgYSBgQ2FuY2VsYCBpZiBjYW5jZWxsYXRpb24gaGFzIGJlZW4gcmVxdWVzdGVkLlxuICovXG5DYW5jZWxUb2tlbi5wcm90b3R5cGUudGhyb3dJZlJlcXVlc3RlZCA9IGZ1bmN0aW9uIHRocm93SWZSZXF1ZXN0ZWQoKSB7XG4gIGlmICh0aGlzLnJlYXNvbikge1xuICAgIHRocm93IHRoaXMucmVhc29uO1xuICB9XG59O1xuXG4vKipcbiAqIFJldHVybnMgYW4gb2JqZWN0IHRoYXQgY29udGFpbnMgYSBuZXcgYENhbmNlbFRva2VuYCBhbmQgYSBmdW5jdGlvbiB0aGF0LCB3aGVuIGNhbGxlZCxcbiAqIGNhbmNlbHMgdGhlIGBDYW5jZWxUb2tlbmAuXG4gKi9cbkNhbmNlbFRva2VuLnNvdXJjZSA9IGZ1bmN0aW9uIHNvdXJjZSgpIHtcbiAgdmFyIGNhbmNlbDtcbiAgdmFyIHRva2VuID0gbmV3IENhbmNlbFRva2VuKGZ1bmN0aW9uIGV4ZWN1dG9yKGMpIHtcbiAgICBjYW5jZWwgPSBjO1xuICB9KTtcbiAgcmV0dXJuIHtcbiAgICB0b2tlbjogdG9rZW4sXG4gICAgY2FuY2VsOiBjYW5jZWxcbiAgfTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gQ2FuY2VsVG9rZW47XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gaXNDYW5jZWwodmFsdWUpIHtcbiAgcmV0dXJuICEhKHZhbHVlICYmIHZhbHVlLl9fQ0FOQ0VMX18pO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi8uLi91dGlscycpO1xudmFyIGJ1aWxkVVJMID0gcmVxdWlyZSgnLi4vaGVscGVycy9idWlsZFVSTCcpO1xudmFyIEludGVyY2VwdG9yTWFuYWdlciA9IHJlcXVpcmUoJy4vSW50ZXJjZXB0b3JNYW5hZ2VyJyk7XG52YXIgZGlzcGF0Y2hSZXF1ZXN0ID0gcmVxdWlyZSgnLi9kaXNwYXRjaFJlcXVlc3QnKTtcbnZhciBtZXJnZUNvbmZpZyA9IHJlcXVpcmUoJy4vbWVyZ2VDb25maWcnKTtcblxuLyoqXG4gKiBDcmVhdGUgYSBuZXcgaW5zdGFuY2Ugb2YgQXhpb3NcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gaW5zdGFuY2VDb25maWcgVGhlIGRlZmF1bHQgY29uZmlnIGZvciB0aGUgaW5zdGFuY2VcbiAqL1xuZnVuY3Rpb24gQXhpb3MoaW5zdGFuY2VDb25maWcpIHtcbiAgdGhpcy5kZWZhdWx0cyA9IGluc3RhbmNlQ29uZmlnO1xuICB0aGlzLmludGVyY2VwdG9ycyA9IHtcbiAgICByZXF1ZXN0OiBuZXcgSW50ZXJjZXB0b3JNYW5hZ2VyKCksXG4gICAgcmVzcG9uc2U6IG5ldyBJbnRlcmNlcHRvck1hbmFnZXIoKVxuICB9O1xufVxuXG4vKipcbiAqIERpc3BhdGNoIGEgcmVxdWVzdFxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBjb25maWcgVGhlIGNvbmZpZyBzcGVjaWZpYyBmb3IgdGhpcyByZXF1ZXN0IChtZXJnZWQgd2l0aCB0aGlzLmRlZmF1bHRzKVxuICovXG5BeGlvcy5wcm90b3R5cGUucmVxdWVzdCA9IGZ1bmN0aW9uIHJlcXVlc3QoY29uZmlnKSB7XG4gIC8qZXNsaW50IG5vLXBhcmFtLXJlYXNzaWduOjAqL1xuICAvLyBBbGxvdyBmb3IgYXhpb3MoJ2V4YW1wbGUvdXJsJ1ssIGNvbmZpZ10pIGEgbGEgZmV0Y2ggQVBJXG4gIGlmICh0eXBlb2YgY29uZmlnID09PSAnc3RyaW5nJykge1xuICAgIGNvbmZpZyA9IGFyZ3VtZW50c1sxXSB8fCB7fTtcbiAgICBjb25maWcudXJsID0gYXJndW1lbnRzWzBdO1xuICB9IGVsc2Uge1xuICAgIGNvbmZpZyA9IGNvbmZpZyB8fCB7fTtcbiAgfVxuXG4gIGNvbmZpZyA9IG1lcmdlQ29uZmlnKHRoaXMuZGVmYXVsdHMsIGNvbmZpZyk7XG5cbiAgLy8gU2V0IGNvbmZpZy5tZXRob2RcbiAgaWYgKGNvbmZpZy5tZXRob2QpIHtcbiAgICBjb25maWcubWV0aG9kID0gY29uZmlnLm1ldGhvZC50b0xvd2VyQ2FzZSgpO1xuICB9IGVsc2UgaWYgKHRoaXMuZGVmYXVsdHMubWV0aG9kKSB7XG4gICAgY29uZmlnLm1ldGhvZCA9IHRoaXMuZGVmYXVsdHMubWV0aG9kLnRvTG93ZXJDYXNlKCk7XG4gIH0gZWxzZSB7XG4gICAgY29uZmlnLm1ldGhvZCA9ICdnZXQnO1xuICB9XG5cbiAgLy8gSG9vayB1cCBpbnRlcmNlcHRvcnMgbWlkZGxld2FyZVxuICB2YXIgY2hhaW4gPSBbZGlzcGF0Y2hSZXF1ZXN0LCB1bmRlZmluZWRdO1xuICB2YXIgcHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZShjb25maWcpO1xuXG4gIHRoaXMuaW50ZXJjZXB0b3JzLnJlcXVlc3QuZm9yRWFjaChmdW5jdGlvbiB1bnNoaWZ0UmVxdWVzdEludGVyY2VwdG9ycyhpbnRlcmNlcHRvcikge1xuICAgIGNoYWluLnVuc2hpZnQoaW50ZXJjZXB0b3IuZnVsZmlsbGVkLCBpbnRlcmNlcHRvci5yZWplY3RlZCk7XG4gIH0pO1xuXG4gIHRoaXMuaW50ZXJjZXB0b3JzLnJlc3BvbnNlLmZvckVhY2goZnVuY3Rpb24gcHVzaFJlc3BvbnNlSW50ZXJjZXB0b3JzKGludGVyY2VwdG9yKSB7XG4gICAgY2hhaW4ucHVzaChpbnRlcmNlcHRvci5mdWxmaWxsZWQsIGludGVyY2VwdG9yLnJlamVjdGVkKTtcbiAgfSk7XG5cbiAgd2hpbGUgKGNoYWluLmxlbmd0aCkge1xuICAgIHByb21pc2UgPSBwcm9taXNlLnRoZW4oY2hhaW4uc2hpZnQoKSwgY2hhaW4uc2hpZnQoKSk7XG4gIH1cblxuICByZXR1cm4gcHJvbWlzZTtcbn07XG5cbkF4aW9zLnByb3RvdHlwZS5nZXRVcmkgPSBmdW5jdGlvbiBnZXRVcmkoY29uZmlnKSB7XG4gIGNvbmZpZyA9IG1lcmdlQ29uZmlnKHRoaXMuZGVmYXVsdHMsIGNvbmZpZyk7XG4gIHJldHVybiBidWlsZFVSTChjb25maWcudXJsLCBjb25maWcucGFyYW1zLCBjb25maWcucGFyYW1zU2VyaWFsaXplcikucmVwbGFjZSgvXlxcPy8sICcnKTtcbn07XG5cbi8vIFByb3ZpZGUgYWxpYXNlcyBmb3Igc3VwcG9ydGVkIHJlcXVlc3QgbWV0aG9kc1xudXRpbHMuZm9yRWFjaChbJ2RlbGV0ZScsICdnZXQnLCAnaGVhZCcsICdvcHRpb25zJ10sIGZ1bmN0aW9uIGZvckVhY2hNZXRob2ROb0RhdGEobWV0aG9kKSB7XG4gIC8qZXNsaW50IGZ1bmMtbmFtZXM6MCovXG4gIEF4aW9zLnByb3RvdHlwZVttZXRob2RdID0gZnVuY3Rpb24odXJsLCBjb25maWcpIHtcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KG1lcmdlQ29uZmlnKGNvbmZpZyB8fCB7fSwge1xuICAgICAgbWV0aG9kOiBtZXRob2QsXG4gICAgICB1cmw6IHVybCxcbiAgICAgIGRhdGE6IChjb25maWcgfHwge30pLmRhdGFcbiAgICB9KSk7XG4gIH07XG59KTtcblxudXRpbHMuZm9yRWFjaChbJ3Bvc3QnLCAncHV0JywgJ3BhdGNoJ10sIGZ1bmN0aW9uIGZvckVhY2hNZXRob2RXaXRoRGF0YShtZXRob2QpIHtcbiAgLyplc2xpbnQgZnVuYy1uYW1lczowKi9cbiAgQXhpb3MucHJvdG90eXBlW21ldGhvZF0gPSBmdW5jdGlvbih1cmwsIGRhdGEsIGNvbmZpZykge1xuICAgIHJldHVybiB0aGlzLnJlcXVlc3QobWVyZ2VDb25maWcoY29uZmlnIHx8IHt9LCB7XG4gICAgICBtZXRob2Q6IG1ldGhvZCxcbiAgICAgIHVybDogdXJsLFxuICAgICAgZGF0YTogZGF0YVxuICAgIH0pKTtcbiAgfTtcbn0pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IEF4aW9zO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuLy4uL3V0aWxzJyk7XG5cbmZ1bmN0aW9uIEludGVyY2VwdG9yTWFuYWdlcigpIHtcbiAgdGhpcy5oYW5kbGVycyA9IFtdO1xufVxuXG4vKipcbiAqIEFkZCBhIG5ldyBpbnRlcmNlcHRvciB0byB0aGUgc3RhY2tcbiAqXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdWxmaWxsZWQgVGhlIGZ1bmN0aW9uIHRvIGhhbmRsZSBgdGhlbmAgZm9yIGEgYFByb21pc2VgXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSByZWplY3RlZCBUaGUgZnVuY3Rpb24gdG8gaGFuZGxlIGByZWplY3RgIGZvciBhIGBQcm9taXNlYFxuICpcbiAqIEByZXR1cm4ge051bWJlcn0gQW4gSUQgdXNlZCB0byByZW1vdmUgaW50ZXJjZXB0b3IgbGF0ZXJcbiAqL1xuSW50ZXJjZXB0b3JNYW5hZ2VyLnByb3RvdHlwZS51c2UgPSBmdW5jdGlvbiB1c2UoZnVsZmlsbGVkLCByZWplY3RlZCkge1xuICB0aGlzLmhhbmRsZXJzLnB1c2goe1xuICAgIGZ1bGZpbGxlZDogZnVsZmlsbGVkLFxuICAgIHJlamVjdGVkOiByZWplY3RlZFxuICB9KTtcbiAgcmV0dXJuIHRoaXMuaGFuZGxlcnMubGVuZ3RoIC0gMTtcbn07XG5cbi8qKlxuICogUmVtb3ZlIGFuIGludGVyY2VwdG9yIGZyb20gdGhlIHN0YWNrXG4gKlxuICogQHBhcmFtIHtOdW1iZXJ9IGlkIFRoZSBJRCB0aGF0IHdhcyByZXR1cm5lZCBieSBgdXNlYFxuICovXG5JbnRlcmNlcHRvck1hbmFnZXIucHJvdG90eXBlLmVqZWN0ID0gZnVuY3Rpb24gZWplY3QoaWQpIHtcbiAgaWYgKHRoaXMuaGFuZGxlcnNbaWRdKSB7XG4gICAgdGhpcy5oYW5kbGVyc1tpZF0gPSBudWxsO1xuICB9XG59O1xuXG4vKipcbiAqIEl0ZXJhdGUgb3ZlciBhbGwgdGhlIHJlZ2lzdGVyZWQgaW50ZXJjZXB0b3JzXG4gKlxuICogVGhpcyBtZXRob2QgaXMgcGFydGljdWxhcmx5IHVzZWZ1bCBmb3Igc2tpcHBpbmcgb3ZlciBhbnlcbiAqIGludGVyY2VwdG9ycyB0aGF0IG1heSBoYXZlIGJlY29tZSBgbnVsbGAgY2FsbGluZyBgZWplY3RgLlxuICpcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZuIFRoZSBmdW5jdGlvbiB0byBjYWxsIGZvciBlYWNoIGludGVyY2VwdG9yXG4gKi9cbkludGVyY2VwdG9yTWFuYWdlci5wcm90b3R5cGUuZm9yRWFjaCA9IGZ1bmN0aW9uIGZvckVhY2goZm4pIHtcbiAgdXRpbHMuZm9yRWFjaCh0aGlzLmhhbmRsZXJzLCBmdW5jdGlvbiBmb3JFYWNoSGFuZGxlcihoKSB7XG4gICAgaWYgKGggIT09IG51bGwpIHtcbiAgICAgIGZuKGgpO1xuICAgIH1cbiAgfSk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IEludGVyY2VwdG9yTWFuYWdlcjtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIGlzQWJzb2x1dGVVUkwgPSByZXF1aXJlKCcuLi9oZWxwZXJzL2lzQWJzb2x1dGVVUkwnKTtcbnZhciBjb21iaW5lVVJMcyA9IHJlcXVpcmUoJy4uL2hlbHBlcnMvY29tYmluZVVSTHMnKTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgbmV3IFVSTCBieSBjb21iaW5pbmcgdGhlIGJhc2VVUkwgd2l0aCB0aGUgcmVxdWVzdGVkVVJMLFxuICogb25seSB3aGVuIHRoZSByZXF1ZXN0ZWRVUkwgaXMgbm90IGFscmVhZHkgYW4gYWJzb2x1dGUgVVJMLlxuICogSWYgdGhlIHJlcXVlc3RVUkwgaXMgYWJzb2x1dGUsIHRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgcmVxdWVzdGVkVVJMIHVudG91Y2hlZC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gYmFzZVVSTCBUaGUgYmFzZSBVUkxcbiAqIEBwYXJhbSB7c3RyaW5nfSByZXF1ZXN0ZWRVUkwgQWJzb2x1dGUgb3IgcmVsYXRpdmUgVVJMIHRvIGNvbWJpbmVcbiAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBjb21iaW5lZCBmdWxsIHBhdGhcbiAqL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBidWlsZEZ1bGxQYXRoKGJhc2VVUkwsIHJlcXVlc3RlZFVSTCkge1xuICBpZiAoYmFzZVVSTCAmJiAhaXNBYnNvbHV0ZVVSTChyZXF1ZXN0ZWRVUkwpKSB7XG4gICAgcmV0dXJuIGNvbWJpbmVVUkxzKGJhc2VVUkwsIHJlcXVlc3RlZFVSTCk7XG4gIH1cbiAgcmV0dXJuIHJlcXVlc3RlZFVSTDtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBlbmhhbmNlRXJyb3IgPSByZXF1aXJlKCcuL2VuaGFuY2VFcnJvcicpO1xuXG4vKipcbiAqIENyZWF0ZSBhbiBFcnJvciB3aXRoIHRoZSBzcGVjaWZpZWQgbWVzc2FnZSwgY29uZmlnLCBlcnJvciBjb2RlLCByZXF1ZXN0IGFuZCByZXNwb25zZS5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gbWVzc2FnZSBUaGUgZXJyb3IgbWVzc2FnZS5cbiAqIEBwYXJhbSB7T2JqZWN0fSBjb25maWcgVGhlIGNvbmZpZy5cbiAqIEBwYXJhbSB7c3RyaW5nfSBbY29kZV0gVGhlIGVycm9yIGNvZGUgKGZvciBleGFtcGxlLCAnRUNPTk5BQk9SVEVEJykuXG4gKiBAcGFyYW0ge09iamVjdH0gW3JlcXVlc3RdIFRoZSByZXF1ZXN0LlxuICogQHBhcmFtIHtPYmplY3R9IFtyZXNwb25zZV0gVGhlIHJlc3BvbnNlLlxuICogQHJldHVybnMge0Vycm9yfSBUaGUgY3JlYXRlZCBlcnJvci5cbiAqL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBjcmVhdGVFcnJvcihtZXNzYWdlLCBjb25maWcsIGNvZGUsIHJlcXVlc3QsIHJlc3BvbnNlKSB7XG4gIHZhciBlcnJvciA9IG5ldyBFcnJvcihtZXNzYWdlKTtcbiAgcmV0dXJuIGVuaGFuY2VFcnJvcihlcnJvciwgY29uZmlnLCBjb2RlLCByZXF1ZXN0LCByZXNwb25zZSk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuLy4uL3V0aWxzJyk7XG52YXIgdHJhbnNmb3JtRGF0YSA9IHJlcXVpcmUoJy4vdHJhbnNmb3JtRGF0YScpO1xudmFyIGlzQ2FuY2VsID0gcmVxdWlyZSgnLi4vY2FuY2VsL2lzQ2FuY2VsJyk7XG52YXIgZGVmYXVsdHMgPSByZXF1aXJlKCcuLi9kZWZhdWx0cycpO1xuXG4vKipcbiAqIFRocm93cyBhIGBDYW5jZWxgIGlmIGNhbmNlbGxhdGlvbiBoYXMgYmVlbiByZXF1ZXN0ZWQuXG4gKi9cbmZ1bmN0aW9uIHRocm93SWZDYW5jZWxsYXRpb25SZXF1ZXN0ZWQoY29uZmlnKSB7XG4gIGlmIChjb25maWcuY2FuY2VsVG9rZW4pIHtcbiAgICBjb25maWcuY2FuY2VsVG9rZW4udGhyb3dJZlJlcXVlc3RlZCgpO1xuICB9XG59XG5cbi8qKlxuICogRGlzcGF0Y2ggYSByZXF1ZXN0IHRvIHRoZSBzZXJ2ZXIgdXNpbmcgdGhlIGNvbmZpZ3VyZWQgYWRhcHRlci5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gY29uZmlnIFRoZSBjb25maWcgdGhhdCBpcyB0byBiZSB1c2VkIGZvciB0aGUgcmVxdWVzdFxuICogQHJldHVybnMge1Byb21pc2V9IFRoZSBQcm9taXNlIHRvIGJlIGZ1bGZpbGxlZFxuICovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGRpc3BhdGNoUmVxdWVzdChjb25maWcpIHtcbiAgdGhyb3dJZkNhbmNlbGxhdGlvblJlcXVlc3RlZChjb25maWcpO1xuXG4gIC8vIEVuc3VyZSBoZWFkZXJzIGV4aXN0XG4gIGNvbmZpZy5oZWFkZXJzID0gY29uZmlnLmhlYWRlcnMgfHwge307XG5cbiAgLy8gVHJhbnNmb3JtIHJlcXVlc3QgZGF0YVxuICBjb25maWcuZGF0YSA9IHRyYW5zZm9ybURhdGEoXG4gICAgY29uZmlnLmRhdGEsXG4gICAgY29uZmlnLmhlYWRlcnMsXG4gICAgY29uZmlnLnRyYW5zZm9ybVJlcXVlc3RcbiAgKTtcblxuICAvLyBGbGF0dGVuIGhlYWRlcnNcbiAgY29uZmlnLmhlYWRlcnMgPSB1dGlscy5tZXJnZShcbiAgICBjb25maWcuaGVhZGVycy5jb21tb24gfHwge30sXG4gICAgY29uZmlnLmhlYWRlcnNbY29uZmlnLm1ldGhvZF0gfHwge30sXG4gICAgY29uZmlnLmhlYWRlcnNcbiAgKTtcblxuICB1dGlscy5mb3JFYWNoKFxuICAgIFsnZGVsZXRlJywgJ2dldCcsICdoZWFkJywgJ3Bvc3QnLCAncHV0JywgJ3BhdGNoJywgJ2NvbW1vbiddLFxuICAgIGZ1bmN0aW9uIGNsZWFuSGVhZGVyQ29uZmlnKG1ldGhvZCkge1xuICAgICAgZGVsZXRlIGNvbmZpZy5oZWFkZXJzW21ldGhvZF07XG4gICAgfVxuICApO1xuXG4gIHZhciBhZGFwdGVyID0gY29uZmlnLmFkYXB0ZXIgfHwgZGVmYXVsdHMuYWRhcHRlcjtcblxuICByZXR1cm4gYWRhcHRlcihjb25maWcpLnRoZW4oZnVuY3Rpb24gb25BZGFwdGVyUmVzb2x1dGlvbihyZXNwb25zZSkge1xuICAgIHRocm93SWZDYW5jZWxsYXRpb25SZXF1ZXN0ZWQoY29uZmlnKTtcblxuICAgIC8vIFRyYW5zZm9ybSByZXNwb25zZSBkYXRhXG4gICAgcmVzcG9uc2UuZGF0YSA9IHRyYW5zZm9ybURhdGEoXG4gICAgICByZXNwb25zZS5kYXRhLFxuICAgICAgcmVzcG9uc2UuaGVhZGVycyxcbiAgICAgIGNvbmZpZy50cmFuc2Zvcm1SZXNwb25zZVxuICAgICk7XG5cbiAgICByZXR1cm4gcmVzcG9uc2U7XG4gIH0sIGZ1bmN0aW9uIG9uQWRhcHRlclJlamVjdGlvbihyZWFzb24pIHtcbiAgICBpZiAoIWlzQ2FuY2VsKHJlYXNvbikpIHtcbiAgICAgIHRocm93SWZDYW5jZWxsYXRpb25SZXF1ZXN0ZWQoY29uZmlnKTtcblxuICAgICAgLy8gVHJhbnNmb3JtIHJlc3BvbnNlIGRhdGFcbiAgICAgIGlmIChyZWFzb24gJiYgcmVhc29uLnJlc3BvbnNlKSB7XG4gICAgICAgIHJlYXNvbi5yZXNwb25zZS5kYXRhID0gdHJhbnNmb3JtRGF0YShcbiAgICAgICAgICByZWFzb24ucmVzcG9uc2UuZGF0YSxcbiAgICAgICAgICByZWFzb24ucmVzcG9uc2UuaGVhZGVycyxcbiAgICAgICAgICBjb25maWcudHJhbnNmb3JtUmVzcG9uc2VcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QocmVhc29uKTtcbiAgfSk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIFVwZGF0ZSBhbiBFcnJvciB3aXRoIHRoZSBzcGVjaWZpZWQgY29uZmlnLCBlcnJvciBjb2RlLCBhbmQgcmVzcG9uc2UuXG4gKlxuICogQHBhcmFtIHtFcnJvcn0gZXJyb3IgVGhlIGVycm9yIHRvIHVwZGF0ZS5cbiAqIEBwYXJhbSB7T2JqZWN0fSBjb25maWcgVGhlIGNvbmZpZy5cbiAqIEBwYXJhbSB7c3RyaW5nfSBbY29kZV0gVGhlIGVycm9yIGNvZGUgKGZvciBleGFtcGxlLCAnRUNPTk5BQk9SVEVEJykuXG4gKiBAcGFyYW0ge09iamVjdH0gW3JlcXVlc3RdIFRoZSByZXF1ZXN0LlxuICogQHBhcmFtIHtPYmplY3R9IFtyZXNwb25zZV0gVGhlIHJlc3BvbnNlLlxuICogQHJldHVybnMge0Vycm9yfSBUaGUgZXJyb3IuXG4gKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gZW5oYW5jZUVycm9yKGVycm9yLCBjb25maWcsIGNvZGUsIHJlcXVlc3QsIHJlc3BvbnNlKSB7XG4gIGVycm9yLmNvbmZpZyA9IGNvbmZpZztcbiAgaWYgKGNvZGUpIHtcbiAgICBlcnJvci5jb2RlID0gY29kZTtcbiAgfVxuXG4gIGVycm9yLnJlcXVlc3QgPSByZXF1ZXN0O1xuICBlcnJvci5yZXNwb25zZSA9IHJlc3BvbnNlO1xuICBlcnJvci5pc0F4aW9zRXJyb3IgPSB0cnVlO1xuXG4gIGVycm9yLnRvSlNPTiA9IGZ1bmN0aW9uIHRvSlNPTigpIHtcbiAgICByZXR1cm4ge1xuICAgICAgLy8gU3RhbmRhcmRcbiAgICAgIG1lc3NhZ2U6IHRoaXMubWVzc2FnZSxcbiAgICAgIG5hbWU6IHRoaXMubmFtZSxcbiAgICAgIC8vIE1pY3Jvc29mdFxuICAgICAgZGVzY3JpcHRpb246IHRoaXMuZGVzY3JpcHRpb24sXG4gICAgICBudW1iZXI6IHRoaXMubnVtYmVyLFxuICAgICAgLy8gTW96aWxsYVxuICAgICAgZmlsZU5hbWU6IHRoaXMuZmlsZU5hbWUsXG4gICAgICBsaW5lTnVtYmVyOiB0aGlzLmxpbmVOdW1iZXIsXG4gICAgICBjb2x1bW5OdW1iZXI6IHRoaXMuY29sdW1uTnVtYmVyLFxuICAgICAgc3RhY2s6IHRoaXMuc3RhY2ssXG4gICAgICAvLyBBeGlvc1xuICAgICAgY29uZmlnOiB0aGlzLmNvbmZpZyxcbiAgICAgIGNvZGU6IHRoaXMuY29kZVxuICAgIH07XG4gIH07XG4gIHJldHVybiBlcnJvcjtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlscyA9IHJlcXVpcmUoJy4uL3V0aWxzJyk7XG5cbi8qKlxuICogQ29uZmlnLXNwZWNpZmljIG1lcmdlLWZ1bmN0aW9uIHdoaWNoIGNyZWF0ZXMgYSBuZXcgY29uZmlnLW9iamVjdFxuICogYnkgbWVyZ2luZyB0d28gY29uZmlndXJhdGlvbiBvYmplY3RzIHRvZ2V0aGVyLlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBjb25maWcxXG4gKiBAcGFyYW0ge09iamVjdH0gY29uZmlnMlxuICogQHJldHVybnMge09iamVjdH0gTmV3IG9iamVjdCByZXN1bHRpbmcgZnJvbSBtZXJnaW5nIGNvbmZpZzIgdG8gY29uZmlnMVxuICovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIG1lcmdlQ29uZmlnKGNvbmZpZzEsIGNvbmZpZzIpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG4gIGNvbmZpZzIgPSBjb25maWcyIHx8IHt9O1xuICB2YXIgY29uZmlnID0ge307XG5cbiAgdmFyIHZhbHVlRnJvbUNvbmZpZzJLZXlzID0gWyd1cmwnLCAnbWV0aG9kJywgJ2RhdGEnXTtcbiAgdmFyIG1lcmdlRGVlcFByb3BlcnRpZXNLZXlzID0gWydoZWFkZXJzJywgJ2F1dGgnLCAncHJveHknLCAncGFyYW1zJ107XG4gIHZhciBkZWZhdWx0VG9Db25maWcyS2V5cyA9IFtcbiAgICAnYmFzZVVSTCcsICd0cmFuc2Zvcm1SZXF1ZXN0JywgJ3RyYW5zZm9ybVJlc3BvbnNlJywgJ3BhcmFtc1NlcmlhbGl6ZXInLFxuICAgICd0aW1lb3V0JywgJ3RpbWVvdXRNZXNzYWdlJywgJ3dpdGhDcmVkZW50aWFscycsICdhZGFwdGVyJywgJ3Jlc3BvbnNlVHlwZScsICd4c3JmQ29va2llTmFtZScsXG4gICAgJ3hzcmZIZWFkZXJOYW1lJywgJ29uVXBsb2FkUHJvZ3Jlc3MnLCAnb25Eb3dubG9hZFByb2dyZXNzJywgJ2RlY29tcHJlc3MnLFxuICAgICdtYXhDb250ZW50TGVuZ3RoJywgJ21heEJvZHlMZW5ndGgnLCAnbWF4UmVkaXJlY3RzJywgJ3RyYW5zcG9ydCcsICdodHRwQWdlbnQnLFxuICAgICdodHRwc0FnZW50JywgJ2NhbmNlbFRva2VuJywgJ3NvY2tldFBhdGgnLCAncmVzcG9uc2VFbmNvZGluZydcbiAgXTtcbiAgdmFyIGRpcmVjdE1lcmdlS2V5cyA9IFsndmFsaWRhdGVTdGF0dXMnXTtcblxuICBmdW5jdGlvbiBnZXRNZXJnZWRWYWx1ZSh0YXJnZXQsIHNvdXJjZSkge1xuICAgIGlmICh1dGlscy5pc1BsYWluT2JqZWN0KHRhcmdldCkgJiYgdXRpbHMuaXNQbGFpbk9iamVjdChzb3VyY2UpKSB7XG4gICAgICByZXR1cm4gdXRpbHMubWVyZ2UodGFyZ2V0LCBzb3VyY2UpO1xuICAgIH0gZWxzZSBpZiAodXRpbHMuaXNQbGFpbk9iamVjdChzb3VyY2UpKSB7XG4gICAgICByZXR1cm4gdXRpbHMubWVyZ2Uoe30sIHNvdXJjZSk7XG4gICAgfSBlbHNlIGlmICh1dGlscy5pc0FycmF5KHNvdXJjZSkpIHtcbiAgICAgIHJldHVybiBzb3VyY2Uuc2xpY2UoKTtcbiAgICB9XG4gICAgcmV0dXJuIHNvdXJjZTtcbiAgfVxuXG4gIGZ1bmN0aW9uIG1lcmdlRGVlcFByb3BlcnRpZXMocHJvcCkge1xuICAgIGlmICghdXRpbHMuaXNVbmRlZmluZWQoY29uZmlnMltwcm9wXSkpIHtcbiAgICAgIGNvbmZpZ1twcm9wXSA9IGdldE1lcmdlZFZhbHVlKGNvbmZpZzFbcHJvcF0sIGNvbmZpZzJbcHJvcF0pO1xuICAgIH0gZWxzZSBpZiAoIXV0aWxzLmlzVW5kZWZpbmVkKGNvbmZpZzFbcHJvcF0pKSB7XG4gICAgICBjb25maWdbcHJvcF0gPSBnZXRNZXJnZWRWYWx1ZSh1bmRlZmluZWQsIGNvbmZpZzFbcHJvcF0pO1xuICAgIH1cbiAgfVxuXG4gIHV0aWxzLmZvckVhY2godmFsdWVGcm9tQ29uZmlnMktleXMsIGZ1bmN0aW9uIHZhbHVlRnJvbUNvbmZpZzIocHJvcCkge1xuICAgIGlmICghdXRpbHMuaXNVbmRlZmluZWQoY29uZmlnMltwcm9wXSkpIHtcbiAgICAgIGNvbmZpZ1twcm9wXSA9IGdldE1lcmdlZFZhbHVlKHVuZGVmaW5lZCwgY29uZmlnMltwcm9wXSk7XG4gICAgfVxuICB9KTtcblxuICB1dGlscy5mb3JFYWNoKG1lcmdlRGVlcFByb3BlcnRpZXNLZXlzLCBtZXJnZURlZXBQcm9wZXJ0aWVzKTtcblxuICB1dGlscy5mb3JFYWNoKGRlZmF1bHRUb0NvbmZpZzJLZXlzLCBmdW5jdGlvbiBkZWZhdWx0VG9Db25maWcyKHByb3ApIHtcbiAgICBpZiAoIXV0aWxzLmlzVW5kZWZpbmVkKGNvbmZpZzJbcHJvcF0pKSB7XG4gICAgICBjb25maWdbcHJvcF0gPSBnZXRNZXJnZWRWYWx1ZSh1bmRlZmluZWQsIGNvbmZpZzJbcHJvcF0pO1xuICAgIH0gZWxzZSBpZiAoIXV0aWxzLmlzVW5kZWZpbmVkKGNvbmZpZzFbcHJvcF0pKSB7XG4gICAgICBjb25maWdbcHJvcF0gPSBnZXRNZXJnZWRWYWx1ZSh1bmRlZmluZWQsIGNvbmZpZzFbcHJvcF0pO1xuICAgIH1cbiAgfSk7XG5cbiAgdXRpbHMuZm9yRWFjaChkaXJlY3RNZXJnZUtleXMsIGZ1bmN0aW9uIG1lcmdlKHByb3ApIHtcbiAgICBpZiAocHJvcCBpbiBjb25maWcyKSB7XG4gICAgICBjb25maWdbcHJvcF0gPSBnZXRNZXJnZWRWYWx1ZShjb25maWcxW3Byb3BdLCBjb25maWcyW3Byb3BdKTtcbiAgICB9IGVsc2UgaWYgKHByb3AgaW4gY29uZmlnMSkge1xuICAgICAgY29uZmlnW3Byb3BdID0gZ2V0TWVyZ2VkVmFsdWUodW5kZWZpbmVkLCBjb25maWcxW3Byb3BdKTtcbiAgICB9XG4gIH0pO1xuXG4gIHZhciBheGlvc0tleXMgPSB2YWx1ZUZyb21Db25maWcyS2V5c1xuICAgIC5jb25jYXQobWVyZ2VEZWVwUHJvcGVydGllc0tleXMpXG4gICAgLmNvbmNhdChkZWZhdWx0VG9Db25maWcyS2V5cylcbiAgICAuY29uY2F0KGRpcmVjdE1lcmdlS2V5cyk7XG5cbiAgdmFyIG90aGVyS2V5cyA9IE9iamVjdFxuICAgIC5rZXlzKGNvbmZpZzEpXG4gICAgLmNvbmNhdChPYmplY3Qua2V5cyhjb25maWcyKSlcbiAgICAuZmlsdGVyKGZ1bmN0aW9uIGZpbHRlckF4aW9zS2V5cyhrZXkpIHtcbiAgICAgIHJldHVybiBheGlvc0tleXMuaW5kZXhPZihrZXkpID09PSAtMTtcbiAgICB9KTtcblxuICB1dGlscy5mb3JFYWNoKG90aGVyS2V5cywgbWVyZ2VEZWVwUHJvcGVydGllcyk7XG5cbiAgcmV0dXJuIGNvbmZpZztcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBjcmVhdGVFcnJvciA9IHJlcXVpcmUoJy4vY3JlYXRlRXJyb3InKTtcblxuLyoqXG4gKiBSZXNvbHZlIG9yIHJlamVjdCBhIFByb21pc2UgYmFzZWQgb24gcmVzcG9uc2Ugc3RhdHVzLlxuICpcbiAqIEBwYXJhbSB7RnVuY3Rpb259IHJlc29sdmUgQSBmdW5jdGlvbiB0aGF0IHJlc29sdmVzIHRoZSBwcm9taXNlLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gcmVqZWN0IEEgZnVuY3Rpb24gdGhhdCByZWplY3RzIHRoZSBwcm9taXNlLlxuICogQHBhcmFtIHtvYmplY3R9IHJlc3BvbnNlIFRoZSByZXNwb25zZS5cbiAqL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBzZXR0bGUocmVzb2x2ZSwgcmVqZWN0LCByZXNwb25zZSkge1xuICB2YXIgdmFsaWRhdGVTdGF0dXMgPSByZXNwb25zZS5jb25maWcudmFsaWRhdGVTdGF0dXM7XG4gIGlmICghcmVzcG9uc2Uuc3RhdHVzIHx8ICF2YWxpZGF0ZVN0YXR1cyB8fCB2YWxpZGF0ZVN0YXR1cyhyZXNwb25zZS5zdGF0dXMpKSB7XG4gICAgcmVzb2x2ZShyZXNwb25zZSk7XG4gIH0gZWxzZSB7XG4gICAgcmVqZWN0KGNyZWF0ZUVycm9yKFxuICAgICAgJ1JlcXVlc3QgZmFpbGVkIHdpdGggc3RhdHVzIGNvZGUgJyArIHJlc3BvbnNlLnN0YXR1cyxcbiAgICAgIHJlc3BvbnNlLmNvbmZpZyxcbiAgICAgIG51bGwsXG4gICAgICByZXNwb25zZS5yZXF1ZXN0LFxuICAgICAgcmVzcG9uc2VcbiAgICApKTtcbiAgfVxufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi8uLi91dGlscycpO1xuXG4vKipcbiAqIFRyYW5zZm9ybSB0aGUgZGF0YSBmb3IgYSByZXF1ZXN0IG9yIGEgcmVzcG9uc2VcbiAqXG4gKiBAcGFyYW0ge09iamVjdHxTdHJpbmd9IGRhdGEgVGhlIGRhdGEgdG8gYmUgdHJhbnNmb3JtZWRcbiAqIEBwYXJhbSB7QXJyYXl9IGhlYWRlcnMgVGhlIGhlYWRlcnMgZm9yIHRoZSByZXF1ZXN0IG9yIHJlc3BvbnNlXG4gKiBAcGFyYW0ge0FycmF5fEZ1bmN0aW9ufSBmbnMgQSBzaW5nbGUgZnVuY3Rpb24gb3IgQXJyYXkgb2YgZnVuY3Rpb25zXG4gKiBAcmV0dXJucyB7Kn0gVGhlIHJlc3VsdGluZyB0cmFuc2Zvcm1lZCBkYXRhXG4gKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gdHJhbnNmb3JtRGF0YShkYXRhLCBoZWFkZXJzLCBmbnMpIHtcbiAgLyplc2xpbnQgbm8tcGFyYW0tcmVhc3NpZ246MCovXG4gIHV0aWxzLmZvckVhY2goZm5zLCBmdW5jdGlvbiB0cmFuc2Zvcm0oZm4pIHtcbiAgICBkYXRhID0gZm4oZGF0YSwgaGVhZGVycyk7XG4gIH0pO1xuXG4gIHJldHVybiBkYXRhO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi91dGlscycpO1xudmFyIG5vcm1hbGl6ZUhlYWRlck5hbWUgPSByZXF1aXJlKCcuL2hlbHBlcnMvbm9ybWFsaXplSGVhZGVyTmFtZScpO1xuXG52YXIgREVGQVVMVF9DT05URU5UX1RZUEUgPSB7XG4gICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJ1xufTtcblxuZnVuY3Rpb24gc2V0Q29udGVudFR5cGVJZlVuc2V0KGhlYWRlcnMsIHZhbHVlKSB7XG4gIGlmICghdXRpbHMuaXNVbmRlZmluZWQoaGVhZGVycykgJiYgdXRpbHMuaXNVbmRlZmluZWQoaGVhZGVyc1snQ29udGVudC1UeXBlJ10pKSB7XG4gICAgaGVhZGVyc1snQ29udGVudC1UeXBlJ10gPSB2YWx1ZTtcbiAgfVxufVxuXG5mdW5jdGlvbiBnZXREZWZhdWx0QWRhcHRlcigpIHtcbiAgdmFyIGFkYXB0ZXI7XG4gIGlmICh0eXBlb2YgWE1MSHR0cFJlcXVlc3QgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgLy8gRm9yIGJyb3dzZXJzIHVzZSBYSFIgYWRhcHRlclxuICAgIGFkYXB0ZXIgPSByZXF1aXJlKCcuL2FkYXB0ZXJzL3hocicpO1xuICB9IGVsc2UgaWYgKHR5cGVvZiBwcm9jZXNzICE9PSAndW5kZWZpbmVkJyAmJiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwocHJvY2VzcykgPT09ICdbb2JqZWN0IHByb2Nlc3NdJykge1xuICAgIC8vIEZvciBub2RlIHVzZSBIVFRQIGFkYXB0ZXJcbiAgICBhZGFwdGVyID0gcmVxdWlyZSgnLi9hZGFwdGVycy9odHRwJyk7XG4gIH1cbiAgcmV0dXJuIGFkYXB0ZXI7XG59XG5cbnZhciBkZWZhdWx0cyA9IHtcbiAgYWRhcHRlcjogZ2V0RGVmYXVsdEFkYXB0ZXIoKSxcblxuICB0cmFuc2Zvcm1SZXF1ZXN0OiBbZnVuY3Rpb24gdHJhbnNmb3JtUmVxdWVzdChkYXRhLCBoZWFkZXJzKSB7XG4gICAgbm9ybWFsaXplSGVhZGVyTmFtZShoZWFkZXJzLCAnQWNjZXB0Jyk7XG4gICAgbm9ybWFsaXplSGVhZGVyTmFtZShoZWFkZXJzLCAnQ29udGVudC1UeXBlJyk7XG4gICAgaWYgKHV0aWxzLmlzRm9ybURhdGEoZGF0YSkgfHxcbiAgICAgIHV0aWxzLmlzQXJyYXlCdWZmZXIoZGF0YSkgfHxcbiAgICAgIHV0aWxzLmlzQnVmZmVyKGRhdGEpIHx8XG4gICAgICB1dGlscy5pc1N0cmVhbShkYXRhKSB8fFxuICAgICAgdXRpbHMuaXNGaWxlKGRhdGEpIHx8XG4gICAgICB1dGlscy5pc0Jsb2IoZGF0YSlcbiAgICApIHtcbiAgICAgIHJldHVybiBkYXRhO1xuICAgIH1cbiAgICBpZiAodXRpbHMuaXNBcnJheUJ1ZmZlclZpZXcoZGF0YSkpIHtcbiAgICAgIHJldHVybiBkYXRhLmJ1ZmZlcjtcbiAgICB9XG4gICAgaWYgKHV0aWxzLmlzVVJMU2VhcmNoUGFyYW1zKGRhdGEpKSB7XG4gICAgICBzZXRDb250ZW50VHlwZUlmVW5zZXQoaGVhZGVycywgJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDtjaGFyc2V0PXV0Zi04Jyk7XG4gICAgICByZXR1cm4gZGF0YS50b1N0cmluZygpO1xuICAgIH1cbiAgICBpZiAodXRpbHMuaXNPYmplY3QoZGF0YSkpIHtcbiAgICAgIHNldENvbnRlbnRUeXBlSWZVbnNldChoZWFkZXJzLCAnYXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04Jyk7XG4gICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoZGF0YSk7XG4gICAgfVxuICAgIHJldHVybiBkYXRhO1xuICB9XSxcblxuICB0cmFuc2Zvcm1SZXNwb25zZTogW2Z1bmN0aW9uIHRyYW5zZm9ybVJlc3BvbnNlKGRhdGEpIHtcbiAgICAvKmVzbGludCBuby1wYXJhbS1yZWFzc2lnbjowKi9cbiAgICBpZiAodHlwZW9mIGRhdGEgPT09ICdzdHJpbmcnKSB7XG4gICAgICB0cnkge1xuICAgICAgICBkYXRhID0gSlNPTi5wYXJzZShkYXRhKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHsgLyogSWdub3JlICovIH1cbiAgICB9XG4gICAgcmV0dXJuIGRhdGE7XG4gIH1dLFxuXG4gIC8qKlxuICAgKiBBIHRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzIHRvIGFib3J0IGEgcmVxdWVzdC4gSWYgc2V0IHRvIDAgKGRlZmF1bHQpIGFcbiAgICogdGltZW91dCBpcyBub3QgY3JlYXRlZC5cbiAgICovXG4gIHRpbWVvdXQ6IDAsXG5cbiAgeHNyZkNvb2tpZU5hbWU6ICdYU1JGLVRPS0VOJyxcbiAgeHNyZkhlYWRlck5hbWU6ICdYLVhTUkYtVE9LRU4nLFxuXG4gIG1heENvbnRlbnRMZW5ndGg6IC0xLFxuICBtYXhCb2R5TGVuZ3RoOiAtMSxcblxuICB2YWxpZGF0ZVN0YXR1czogZnVuY3Rpb24gdmFsaWRhdGVTdGF0dXMoc3RhdHVzKSB7XG4gICAgcmV0dXJuIHN0YXR1cyA+PSAyMDAgJiYgc3RhdHVzIDwgMzAwO1xuICB9XG59O1xuXG5kZWZhdWx0cy5oZWFkZXJzID0ge1xuICBjb21tb246IHtcbiAgICAnQWNjZXB0JzogJ2FwcGxpY2F0aW9uL2pzb24sIHRleHQvcGxhaW4sICovKidcbiAgfVxufTtcblxudXRpbHMuZm9yRWFjaChbJ2RlbGV0ZScsICdnZXQnLCAnaGVhZCddLCBmdW5jdGlvbiBmb3JFYWNoTWV0aG9kTm9EYXRhKG1ldGhvZCkge1xuICBkZWZhdWx0cy5oZWFkZXJzW21ldGhvZF0gPSB7fTtcbn0pO1xuXG51dGlscy5mb3JFYWNoKFsncG9zdCcsICdwdXQnLCAncGF0Y2gnXSwgZnVuY3Rpb24gZm9yRWFjaE1ldGhvZFdpdGhEYXRhKG1ldGhvZCkge1xuICBkZWZhdWx0cy5oZWFkZXJzW21ldGhvZF0gPSB1dGlscy5tZXJnZShERUZBVUxUX0NPTlRFTlRfVFlQRSk7XG59KTtcblxubW9kdWxlLmV4cG9ydHMgPSBkZWZhdWx0cztcbiIsIid1c2Ugc3RyaWN0JztcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBiaW5kKGZuLCB0aGlzQXJnKSB7XG4gIHJldHVybiBmdW5jdGlvbiB3cmFwKCkge1xuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGgpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJncy5sZW5ndGg7IGkrKykge1xuICAgICAgYXJnc1tpXSA9IGFyZ3VtZW50c1tpXTtcbiAgICB9XG4gICAgcmV0dXJuIGZuLmFwcGx5KHRoaXNBcmcsIGFyZ3MpO1xuICB9O1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi8uLi91dGlscycpO1xuXG5mdW5jdGlvbiBlbmNvZGUodmFsKSB7XG4gIHJldHVybiBlbmNvZGVVUklDb21wb25lbnQodmFsKS5cbiAgICByZXBsYWNlKC8lM0EvZ2ksICc6JykuXG4gICAgcmVwbGFjZSgvJTI0L2csICckJykuXG4gICAgcmVwbGFjZSgvJTJDL2dpLCAnLCcpLlxuICAgIHJlcGxhY2UoLyUyMC9nLCAnKycpLlxuICAgIHJlcGxhY2UoLyU1Qi9naSwgJ1snKS5cbiAgICByZXBsYWNlKC8lNUQvZ2ksICddJyk7XG59XG5cbi8qKlxuICogQnVpbGQgYSBVUkwgYnkgYXBwZW5kaW5nIHBhcmFtcyB0byB0aGUgZW5kXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHVybCBUaGUgYmFzZSBvZiB0aGUgdXJsIChlLmcuLCBodHRwOi8vd3d3Lmdvb2dsZS5jb20pXG4gKiBAcGFyYW0ge29iamVjdH0gW3BhcmFtc10gVGhlIHBhcmFtcyB0byBiZSBhcHBlbmRlZFxuICogQHJldHVybnMge3N0cmluZ30gVGhlIGZvcm1hdHRlZCB1cmxcbiAqL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBidWlsZFVSTCh1cmwsIHBhcmFtcywgcGFyYW1zU2VyaWFsaXplcikge1xuICAvKmVzbGludCBuby1wYXJhbS1yZWFzc2lnbjowKi9cbiAgaWYgKCFwYXJhbXMpIHtcbiAgICByZXR1cm4gdXJsO1xuICB9XG5cbiAgdmFyIHNlcmlhbGl6ZWRQYXJhbXM7XG4gIGlmIChwYXJhbXNTZXJpYWxpemVyKSB7XG4gICAgc2VyaWFsaXplZFBhcmFtcyA9IHBhcmFtc1NlcmlhbGl6ZXIocGFyYW1zKTtcbiAgfSBlbHNlIGlmICh1dGlscy5pc1VSTFNlYXJjaFBhcmFtcyhwYXJhbXMpKSB7XG4gICAgc2VyaWFsaXplZFBhcmFtcyA9IHBhcmFtcy50b1N0cmluZygpO1xuICB9IGVsc2Uge1xuICAgIHZhciBwYXJ0cyA9IFtdO1xuXG4gICAgdXRpbHMuZm9yRWFjaChwYXJhbXMsIGZ1bmN0aW9uIHNlcmlhbGl6ZSh2YWwsIGtleSkge1xuICAgICAgaWYgKHZhbCA9PT0gbnVsbCB8fCB0eXBlb2YgdmFsID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmICh1dGlscy5pc0FycmF5KHZhbCkpIHtcbiAgICAgICAga2V5ID0ga2V5ICsgJ1tdJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhbCA9IFt2YWxdO1xuICAgICAgfVxuXG4gICAgICB1dGlscy5mb3JFYWNoKHZhbCwgZnVuY3Rpb24gcGFyc2VWYWx1ZSh2KSB7XG4gICAgICAgIGlmICh1dGlscy5pc0RhdGUodikpIHtcbiAgICAgICAgICB2ID0gdi50b0lTT1N0cmluZygpO1xuICAgICAgICB9IGVsc2UgaWYgKHV0aWxzLmlzT2JqZWN0KHYpKSB7XG4gICAgICAgICAgdiA9IEpTT04uc3RyaW5naWZ5KHYpO1xuICAgICAgICB9XG4gICAgICAgIHBhcnRzLnB1c2goZW5jb2RlKGtleSkgKyAnPScgKyBlbmNvZGUodikpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBzZXJpYWxpemVkUGFyYW1zID0gcGFydHMuam9pbignJicpO1xuICB9XG5cbiAgaWYgKHNlcmlhbGl6ZWRQYXJhbXMpIHtcbiAgICB2YXIgaGFzaG1hcmtJbmRleCA9IHVybC5pbmRleE9mKCcjJyk7XG4gICAgaWYgKGhhc2htYXJrSW5kZXggIT09IC0xKSB7XG4gICAgICB1cmwgPSB1cmwuc2xpY2UoMCwgaGFzaG1hcmtJbmRleCk7XG4gICAgfVxuXG4gICAgdXJsICs9ICh1cmwuaW5kZXhPZignPycpID09PSAtMSA/ICc/JyA6ICcmJykgKyBzZXJpYWxpemVkUGFyYW1zO1xuICB9XG5cbiAgcmV0dXJuIHVybDtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbi8qKlxuICogQ3JlYXRlcyBhIG5ldyBVUkwgYnkgY29tYmluaW5nIHRoZSBzcGVjaWZpZWQgVVJMc1xuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBiYXNlVVJMIFRoZSBiYXNlIFVSTFxuICogQHBhcmFtIHtzdHJpbmd9IHJlbGF0aXZlVVJMIFRoZSByZWxhdGl2ZSBVUkxcbiAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBjb21iaW5lZCBVUkxcbiAqL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBjb21iaW5lVVJMcyhiYXNlVVJMLCByZWxhdGl2ZVVSTCkge1xuICByZXR1cm4gcmVsYXRpdmVVUkxcbiAgICA/IGJhc2VVUkwucmVwbGFjZSgvXFwvKyQvLCAnJykgKyAnLycgKyByZWxhdGl2ZVVSTC5yZXBsYWNlKC9eXFwvKy8sICcnKVxuICAgIDogYmFzZVVSTDtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlscyA9IHJlcXVpcmUoJy4vLi4vdXRpbHMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSAoXG4gIHV0aWxzLmlzU3RhbmRhcmRCcm93c2VyRW52KCkgP1xuXG4gIC8vIFN0YW5kYXJkIGJyb3dzZXIgZW52cyBzdXBwb3J0IGRvY3VtZW50LmNvb2tpZVxuICAgIChmdW5jdGlvbiBzdGFuZGFyZEJyb3dzZXJFbnYoKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB3cml0ZTogZnVuY3Rpb24gd3JpdGUobmFtZSwgdmFsdWUsIGV4cGlyZXMsIHBhdGgsIGRvbWFpbiwgc2VjdXJlKSB7XG4gICAgICAgICAgdmFyIGNvb2tpZSA9IFtdO1xuICAgICAgICAgIGNvb2tpZS5wdXNoKG5hbWUgKyAnPScgKyBlbmNvZGVVUklDb21wb25lbnQodmFsdWUpKTtcblxuICAgICAgICAgIGlmICh1dGlscy5pc051bWJlcihleHBpcmVzKSkge1xuICAgICAgICAgICAgY29va2llLnB1c2goJ2V4cGlyZXM9JyArIG5ldyBEYXRlKGV4cGlyZXMpLnRvR01UU3RyaW5nKCkpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICh1dGlscy5pc1N0cmluZyhwYXRoKSkge1xuICAgICAgICAgICAgY29va2llLnB1c2goJ3BhdGg9JyArIHBhdGgpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICh1dGlscy5pc1N0cmluZyhkb21haW4pKSB7XG4gICAgICAgICAgICBjb29raWUucHVzaCgnZG9tYWluPScgKyBkb21haW4pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChzZWN1cmUgPT09IHRydWUpIHtcbiAgICAgICAgICAgIGNvb2tpZS5wdXNoKCdzZWN1cmUnKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBkb2N1bWVudC5jb29raWUgPSBjb29raWUuam9pbignOyAnKTtcbiAgICAgICAgfSxcblxuICAgICAgICByZWFkOiBmdW5jdGlvbiByZWFkKG5hbWUpIHtcbiAgICAgICAgICB2YXIgbWF0Y2ggPSBkb2N1bWVudC5jb29raWUubWF0Y2gobmV3IFJlZ0V4cCgnKF58O1xcXFxzKikoJyArIG5hbWUgKyAnKT0oW147XSopJykpO1xuICAgICAgICAgIHJldHVybiAobWF0Y2ggPyBkZWNvZGVVUklDb21wb25lbnQobWF0Y2hbM10pIDogbnVsbCk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgcmVtb3ZlOiBmdW5jdGlvbiByZW1vdmUobmFtZSkge1xuICAgICAgICAgIHRoaXMud3JpdGUobmFtZSwgJycsIERhdGUubm93KCkgLSA4NjQwMDAwMCk7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfSkoKSA6XG5cbiAgLy8gTm9uIHN0YW5kYXJkIGJyb3dzZXIgZW52ICh3ZWIgd29ya2VycywgcmVhY3QtbmF0aXZlKSBsYWNrIG5lZWRlZCBzdXBwb3J0LlxuICAgIChmdW5jdGlvbiBub25TdGFuZGFyZEJyb3dzZXJFbnYoKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB3cml0ZTogZnVuY3Rpb24gd3JpdGUoKSB7fSxcbiAgICAgICAgcmVhZDogZnVuY3Rpb24gcmVhZCgpIHsgcmV0dXJuIG51bGw7IH0sXG4gICAgICAgIHJlbW92ZTogZnVuY3Rpb24gcmVtb3ZlKCkge31cbiAgICAgIH07XG4gICAgfSkoKVxuKTtcbiIsIid1c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIHNwZWNpZmllZCBVUkwgaXMgYWJzb2x1dGVcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdXJsIFRoZSBVUkwgdG8gdGVzdFxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdGhlIHNwZWNpZmllZCBVUkwgaXMgYWJzb2x1dGUsIG90aGVyd2lzZSBmYWxzZVxuICovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGlzQWJzb2x1dGVVUkwodXJsKSB7XG4gIC8vIEEgVVJMIGlzIGNvbnNpZGVyZWQgYWJzb2x1dGUgaWYgaXQgYmVnaW5zIHdpdGggXCI8c2NoZW1lPjovL1wiIG9yIFwiLy9cIiAocHJvdG9jb2wtcmVsYXRpdmUgVVJMKS5cbiAgLy8gUkZDIDM5ODYgZGVmaW5lcyBzY2hlbWUgbmFtZSBhcyBhIHNlcXVlbmNlIG9mIGNoYXJhY3RlcnMgYmVnaW5uaW5nIHdpdGggYSBsZXR0ZXIgYW5kIGZvbGxvd2VkXG4gIC8vIGJ5IGFueSBjb21iaW5hdGlvbiBvZiBsZXR0ZXJzLCBkaWdpdHMsIHBsdXMsIHBlcmlvZCwgb3IgaHlwaGVuLlxuICByZXR1cm4gL14oW2Etel1bYS16XFxkXFwrXFwtXFwuXSo6KT9cXC9cXC8vaS50ZXN0KHVybCk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIERldGVybWluZXMgd2hldGhlciB0aGUgcGF5bG9hZCBpcyBhbiBlcnJvciB0aHJvd24gYnkgQXhpb3NcbiAqXG4gKiBAcGFyYW0geyp9IHBheWxvYWQgVGhlIHZhbHVlIHRvIHRlc3RcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHRoZSBwYXlsb2FkIGlzIGFuIGVycm9yIHRocm93biBieSBBeGlvcywgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gaXNBeGlvc0Vycm9yKHBheWxvYWQpIHtcbiAgcmV0dXJuICh0eXBlb2YgcGF5bG9hZCA9PT0gJ29iamVjdCcpICYmIChwYXlsb2FkLmlzQXhpb3NFcnJvciA9PT0gdHJ1ZSk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuLy4uL3V0aWxzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gKFxuICB1dGlscy5pc1N0YW5kYXJkQnJvd3NlckVudigpID9cblxuICAvLyBTdGFuZGFyZCBicm93c2VyIGVudnMgaGF2ZSBmdWxsIHN1cHBvcnQgb2YgdGhlIEFQSXMgbmVlZGVkIHRvIHRlc3RcbiAgLy8gd2hldGhlciB0aGUgcmVxdWVzdCBVUkwgaXMgb2YgdGhlIHNhbWUgb3JpZ2luIGFzIGN1cnJlbnQgbG9jYXRpb24uXG4gICAgKGZ1bmN0aW9uIHN0YW5kYXJkQnJvd3NlckVudigpIHtcbiAgICAgIHZhciBtc2llID0gLyhtc2llfHRyaWRlbnQpL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KTtcbiAgICAgIHZhciB1cmxQYXJzaW5nTm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcbiAgICAgIHZhciBvcmlnaW5VUkw7XG5cbiAgICAgIC8qKlxuICAgICogUGFyc2UgYSBVUkwgdG8gZGlzY292ZXIgaXQncyBjb21wb25lbnRzXG4gICAgKlxuICAgICogQHBhcmFtIHtTdHJpbmd9IHVybCBUaGUgVVJMIHRvIGJlIHBhcnNlZFxuICAgICogQHJldHVybnMge09iamVjdH1cbiAgICAqL1xuICAgICAgZnVuY3Rpb24gcmVzb2x2ZVVSTCh1cmwpIHtcbiAgICAgICAgdmFyIGhyZWYgPSB1cmw7XG5cbiAgICAgICAgaWYgKG1zaWUpIHtcbiAgICAgICAgLy8gSUUgbmVlZHMgYXR0cmlidXRlIHNldCB0d2ljZSB0byBub3JtYWxpemUgcHJvcGVydGllc1xuICAgICAgICAgIHVybFBhcnNpbmdOb2RlLnNldEF0dHJpYnV0ZSgnaHJlZicsIGhyZWYpO1xuICAgICAgICAgIGhyZWYgPSB1cmxQYXJzaW5nTm9kZS5ocmVmO1xuICAgICAgICB9XG5cbiAgICAgICAgdXJsUGFyc2luZ05vZGUuc2V0QXR0cmlidXRlKCdocmVmJywgaHJlZik7XG5cbiAgICAgICAgLy8gdXJsUGFyc2luZ05vZGUgcHJvdmlkZXMgdGhlIFVybFV0aWxzIGludGVyZmFjZSAtIGh0dHA6Ly91cmwuc3BlYy53aGF0d2cub3JnLyN1cmx1dGlsc1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGhyZWY6IHVybFBhcnNpbmdOb2RlLmhyZWYsXG4gICAgICAgICAgcHJvdG9jb2w6IHVybFBhcnNpbmdOb2RlLnByb3RvY29sID8gdXJsUGFyc2luZ05vZGUucHJvdG9jb2wucmVwbGFjZSgvOiQvLCAnJykgOiAnJyxcbiAgICAgICAgICBob3N0OiB1cmxQYXJzaW5nTm9kZS5ob3N0LFxuICAgICAgICAgIHNlYXJjaDogdXJsUGFyc2luZ05vZGUuc2VhcmNoID8gdXJsUGFyc2luZ05vZGUuc2VhcmNoLnJlcGxhY2UoL15cXD8vLCAnJykgOiAnJyxcbiAgICAgICAgICBoYXNoOiB1cmxQYXJzaW5nTm9kZS5oYXNoID8gdXJsUGFyc2luZ05vZGUuaGFzaC5yZXBsYWNlKC9eIy8sICcnKSA6ICcnLFxuICAgICAgICAgIGhvc3RuYW1lOiB1cmxQYXJzaW5nTm9kZS5ob3N0bmFtZSxcbiAgICAgICAgICBwb3J0OiB1cmxQYXJzaW5nTm9kZS5wb3J0LFxuICAgICAgICAgIHBhdGhuYW1lOiAodXJsUGFyc2luZ05vZGUucGF0aG5hbWUuY2hhckF0KDApID09PSAnLycpID9cbiAgICAgICAgICAgIHVybFBhcnNpbmdOb2RlLnBhdGhuYW1lIDpcbiAgICAgICAgICAgICcvJyArIHVybFBhcnNpbmdOb2RlLnBhdGhuYW1lXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIG9yaWdpblVSTCA9IHJlc29sdmVVUkwod2luZG93LmxvY2F0aW9uLmhyZWYpO1xuXG4gICAgICAvKipcbiAgICAqIERldGVybWluZSBpZiBhIFVSTCBzaGFyZXMgdGhlIHNhbWUgb3JpZ2luIGFzIHRoZSBjdXJyZW50IGxvY2F0aW9uXG4gICAgKlxuICAgICogQHBhcmFtIHtTdHJpbmd9IHJlcXVlc3RVUkwgVGhlIFVSTCB0byB0ZXN0XG4gICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiBVUkwgc2hhcmVzIHRoZSBzYW1lIG9yaWdpbiwgb3RoZXJ3aXNlIGZhbHNlXG4gICAgKi9cbiAgICAgIHJldHVybiBmdW5jdGlvbiBpc1VSTFNhbWVPcmlnaW4ocmVxdWVzdFVSTCkge1xuICAgICAgICB2YXIgcGFyc2VkID0gKHV0aWxzLmlzU3RyaW5nKHJlcXVlc3RVUkwpKSA/IHJlc29sdmVVUkwocmVxdWVzdFVSTCkgOiByZXF1ZXN0VVJMO1xuICAgICAgICByZXR1cm4gKHBhcnNlZC5wcm90b2NvbCA9PT0gb3JpZ2luVVJMLnByb3RvY29sICYmXG4gICAgICAgICAgICBwYXJzZWQuaG9zdCA9PT0gb3JpZ2luVVJMLmhvc3QpO1xuICAgICAgfTtcbiAgICB9KSgpIDpcblxuICAvLyBOb24gc3RhbmRhcmQgYnJvd3NlciBlbnZzICh3ZWIgd29ya2VycywgcmVhY3QtbmF0aXZlKSBsYWNrIG5lZWRlZCBzdXBwb3J0LlxuICAgIChmdW5jdGlvbiBub25TdGFuZGFyZEJyb3dzZXJFbnYoKSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24gaXNVUkxTYW1lT3JpZ2luKCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH07XG4gICAgfSkoKVxuKTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi4vdXRpbHMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBub3JtYWxpemVIZWFkZXJOYW1lKGhlYWRlcnMsIG5vcm1hbGl6ZWROYW1lKSB7XG4gIHV0aWxzLmZvckVhY2goaGVhZGVycywgZnVuY3Rpb24gcHJvY2Vzc0hlYWRlcih2YWx1ZSwgbmFtZSkge1xuICAgIGlmIChuYW1lICE9PSBub3JtYWxpemVkTmFtZSAmJiBuYW1lLnRvVXBwZXJDYXNlKCkgPT09IG5vcm1hbGl6ZWROYW1lLnRvVXBwZXJDYXNlKCkpIHtcbiAgICAgIGhlYWRlcnNbbm9ybWFsaXplZE5hbWVdID0gdmFsdWU7XG4gICAgICBkZWxldGUgaGVhZGVyc1tuYW1lXTtcbiAgICB9XG4gIH0pO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi8uLi91dGlscycpO1xuXG4vLyBIZWFkZXJzIHdob3NlIGR1cGxpY2F0ZXMgYXJlIGlnbm9yZWQgYnkgbm9kZVxuLy8gYy5mLiBodHRwczovL25vZGVqcy5vcmcvYXBpL2h0dHAuaHRtbCNodHRwX21lc3NhZ2VfaGVhZGVyc1xudmFyIGlnbm9yZUR1cGxpY2F0ZU9mID0gW1xuICAnYWdlJywgJ2F1dGhvcml6YXRpb24nLCAnY29udGVudC1sZW5ndGgnLCAnY29udGVudC10eXBlJywgJ2V0YWcnLFxuICAnZXhwaXJlcycsICdmcm9tJywgJ2hvc3QnLCAnaWYtbW9kaWZpZWQtc2luY2UnLCAnaWYtdW5tb2RpZmllZC1zaW5jZScsXG4gICdsYXN0LW1vZGlmaWVkJywgJ2xvY2F0aW9uJywgJ21heC1mb3J3YXJkcycsICdwcm94eS1hdXRob3JpemF0aW9uJyxcbiAgJ3JlZmVyZXInLCAncmV0cnktYWZ0ZXInLCAndXNlci1hZ2VudCdcbl07XG5cbi8qKlxuICogUGFyc2UgaGVhZGVycyBpbnRvIGFuIG9iamVjdFxuICpcbiAqIGBgYFxuICogRGF0ZTogV2VkLCAyNyBBdWcgMjAxNCAwODo1ODo0OSBHTVRcbiAqIENvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvblxuICogQ29ubmVjdGlvbjoga2VlcC1hbGl2ZVxuICogVHJhbnNmZXItRW5jb2Rpbmc6IGNodW5rZWRcbiAqIGBgYFxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBoZWFkZXJzIEhlYWRlcnMgbmVlZGluZyB0byBiZSBwYXJzZWRcbiAqIEByZXR1cm5zIHtPYmplY3R9IEhlYWRlcnMgcGFyc2VkIGludG8gYW4gb2JqZWN0XG4gKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gcGFyc2VIZWFkZXJzKGhlYWRlcnMpIHtcbiAgdmFyIHBhcnNlZCA9IHt9O1xuICB2YXIga2V5O1xuICB2YXIgdmFsO1xuICB2YXIgaTtcblxuICBpZiAoIWhlYWRlcnMpIHsgcmV0dXJuIHBhcnNlZDsgfVxuXG4gIHV0aWxzLmZvckVhY2goaGVhZGVycy5zcGxpdCgnXFxuJyksIGZ1bmN0aW9uIHBhcnNlcihsaW5lKSB7XG4gICAgaSA9IGxpbmUuaW5kZXhPZignOicpO1xuICAgIGtleSA9IHV0aWxzLnRyaW0obGluZS5zdWJzdHIoMCwgaSkpLnRvTG93ZXJDYXNlKCk7XG4gICAgdmFsID0gdXRpbHMudHJpbShsaW5lLnN1YnN0cihpICsgMSkpO1xuXG4gICAgaWYgKGtleSkge1xuICAgICAgaWYgKHBhcnNlZFtrZXldICYmIGlnbm9yZUR1cGxpY2F0ZU9mLmluZGV4T2Yoa2V5KSA+PSAwKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmIChrZXkgPT09ICdzZXQtY29va2llJykge1xuICAgICAgICBwYXJzZWRba2V5XSA9IChwYXJzZWRba2V5XSA/IHBhcnNlZFtrZXldIDogW10pLmNvbmNhdChbdmFsXSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwYXJzZWRba2V5XSA9IHBhcnNlZFtrZXldID8gcGFyc2VkW2tleV0gKyAnLCAnICsgdmFsIDogdmFsO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIHBhcnNlZDtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbi8qKlxuICogU3ludGFjdGljIHN1Z2FyIGZvciBpbnZva2luZyBhIGZ1bmN0aW9uIGFuZCBleHBhbmRpbmcgYW4gYXJyYXkgZm9yIGFyZ3VtZW50cy5cbiAqXG4gKiBDb21tb24gdXNlIGNhc2Ugd291bGQgYmUgdG8gdXNlIGBGdW5jdGlvbi5wcm90b3R5cGUuYXBwbHlgLlxuICpcbiAqICBgYGBqc1xuICogIGZ1bmN0aW9uIGYoeCwgeSwgeikge31cbiAqICB2YXIgYXJncyA9IFsxLCAyLCAzXTtcbiAqICBmLmFwcGx5KG51bGwsIGFyZ3MpO1xuICogIGBgYFxuICpcbiAqIFdpdGggYHNwcmVhZGAgdGhpcyBleGFtcGxlIGNhbiBiZSByZS13cml0dGVuLlxuICpcbiAqICBgYGBqc1xuICogIHNwcmVhZChmdW5jdGlvbih4LCB5LCB6KSB7fSkoWzEsIDIsIDNdKTtcbiAqICBgYGBcbiAqXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBjYWxsYmFja1xuICogQHJldHVybnMge0Z1bmN0aW9ufVxuICovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIHNwcmVhZChjYWxsYmFjaykge1xuICByZXR1cm4gZnVuY3Rpb24gd3JhcChhcnIpIHtcbiAgICByZXR1cm4gY2FsbGJhY2suYXBwbHkobnVsbCwgYXJyKTtcbiAgfTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBiaW5kID0gcmVxdWlyZSgnLi9oZWxwZXJzL2JpbmQnKTtcblxuLypnbG9iYWwgdG9TdHJpbmc6dHJ1ZSovXG5cbi8vIHV0aWxzIGlzIGEgbGlicmFyeSBvZiBnZW5lcmljIGhlbHBlciBmdW5jdGlvbnMgbm9uLXNwZWNpZmljIHRvIGF4aW9zXG5cbnZhciB0b1N0cmluZyA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYW4gQXJyYXlcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhbiBBcnJheSwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzQXJyYXkodmFsKSB7XG4gIHJldHVybiB0b1N0cmluZy5jYWxsKHZhbCkgPT09ICdbb2JqZWN0IEFycmF5XSc7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgdW5kZWZpbmVkXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdGhlIHZhbHVlIGlzIHVuZGVmaW5lZCwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzVW5kZWZpbmVkKHZhbCkge1xuICByZXR1cm4gdHlwZW9mIHZhbCA9PT0gJ3VuZGVmaW5lZCc7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYSBCdWZmZXJcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhIEJ1ZmZlciwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzQnVmZmVyKHZhbCkge1xuICByZXR1cm4gdmFsICE9PSBudWxsICYmICFpc1VuZGVmaW5lZCh2YWwpICYmIHZhbC5jb25zdHJ1Y3RvciAhPT0gbnVsbCAmJiAhaXNVbmRlZmluZWQodmFsLmNvbnN0cnVjdG9yKVxuICAgICYmIHR5cGVvZiB2YWwuY29uc3RydWN0b3IuaXNCdWZmZXIgPT09ICdmdW5jdGlvbicgJiYgdmFsLmNvbnN0cnVjdG9yLmlzQnVmZmVyKHZhbCk7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYW4gQXJyYXlCdWZmZXJcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhbiBBcnJheUJ1ZmZlciwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzQXJyYXlCdWZmZXIodmFsKSB7XG4gIHJldHVybiB0b1N0cmluZy5jYWxsKHZhbCkgPT09ICdbb2JqZWN0IEFycmF5QnVmZmVyXSc7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYSBGb3JtRGF0YVxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGFuIEZvcm1EYXRhLCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNGb3JtRGF0YSh2YWwpIHtcbiAgcmV0dXJuICh0eXBlb2YgRm9ybURhdGEgIT09ICd1bmRlZmluZWQnKSAmJiAodmFsIGluc3RhbmNlb2YgRm9ybURhdGEpO1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgdmlldyBvbiBhbiBBcnJheUJ1ZmZlclxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGEgdmlldyBvbiBhbiBBcnJheUJ1ZmZlciwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzQXJyYXlCdWZmZXJWaWV3KHZhbCkge1xuICB2YXIgcmVzdWx0O1xuICBpZiAoKHR5cGVvZiBBcnJheUJ1ZmZlciAhPT0gJ3VuZGVmaW5lZCcpICYmIChBcnJheUJ1ZmZlci5pc1ZpZXcpKSB7XG4gICAgcmVzdWx0ID0gQXJyYXlCdWZmZXIuaXNWaWV3KHZhbCk7XG4gIH0gZWxzZSB7XG4gICAgcmVzdWx0ID0gKHZhbCkgJiYgKHZhbC5idWZmZXIpICYmICh2YWwuYnVmZmVyIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYSBTdHJpbmdcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhIFN0cmluZywgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzU3RyaW5nKHZhbCkge1xuICByZXR1cm4gdHlwZW9mIHZhbCA9PT0gJ3N0cmluZyc7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYSBOdW1iZXJcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhIE51bWJlciwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzTnVtYmVyKHZhbCkge1xuICByZXR1cm4gdHlwZW9mIHZhbCA9PT0gJ251bWJlcic7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYW4gT2JqZWN0XG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYW4gT2JqZWN0LCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNPYmplY3QodmFsKSB7XG4gIHJldHVybiB2YWwgIT09IG51bGwgJiYgdHlwZW9mIHZhbCA9PT0gJ29iamVjdCc7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYSBwbGFpbiBPYmplY3RcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGEgcGxhaW4gT2JqZWN0LCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNQbGFpbk9iamVjdCh2YWwpIHtcbiAgaWYgKHRvU3RyaW5nLmNhbGwodmFsKSAhPT0gJ1tvYmplY3QgT2JqZWN0XScpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICB2YXIgcHJvdG90eXBlID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHZhbCk7XG4gIHJldHVybiBwcm90b3R5cGUgPT09IG51bGwgfHwgcHJvdG90eXBlID09PSBPYmplY3QucHJvdG90eXBlO1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgRGF0ZVxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGEgRGF0ZSwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzRGF0ZSh2YWwpIHtcbiAgcmV0dXJuIHRvU3RyaW5nLmNhbGwodmFsKSA9PT0gJ1tvYmplY3QgRGF0ZV0nO1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgRmlsZVxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGEgRmlsZSwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzRmlsZSh2YWwpIHtcbiAgcmV0dXJuIHRvU3RyaW5nLmNhbGwodmFsKSA9PT0gJ1tvYmplY3QgRmlsZV0nO1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgQmxvYlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGEgQmxvYiwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzQmxvYih2YWwpIHtcbiAgcmV0dXJuIHRvU3RyaW5nLmNhbGwodmFsKSA9PT0gJ1tvYmplY3QgQmxvYl0nO1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgRnVuY3Rpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhIEZ1bmN0aW9uLCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNGdW5jdGlvbih2YWwpIHtcbiAgcmV0dXJuIHRvU3RyaW5nLmNhbGwodmFsKSA9PT0gJ1tvYmplY3QgRnVuY3Rpb25dJztcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhIFN0cmVhbVxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGEgU3RyZWFtLCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNTdHJlYW0odmFsKSB7XG4gIHJldHVybiBpc09iamVjdCh2YWwpICYmIGlzRnVuY3Rpb24odmFsLnBpcGUpO1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgVVJMU2VhcmNoUGFyYW1zIG9iamVjdFxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGEgVVJMU2VhcmNoUGFyYW1zIG9iamVjdCwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzVVJMU2VhcmNoUGFyYW1zKHZhbCkge1xuICByZXR1cm4gdHlwZW9mIFVSTFNlYXJjaFBhcmFtcyAhPT0gJ3VuZGVmaW5lZCcgJiYgdmFsIGluc3RhbmNlb2YgVVJMU2VhcmNoUGFyYW1zO1xufVxuXG4vKipcbiAqIFRyaW0gZXhjZXNzIHdoaXRlc3BhY2Ugb2ZmIHRoZSBiZWdpbm5pbmcgYW5kIGVuZCBvZiBhIHN0cmluZ1xuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBzdHIgVGhlIFN0cmluZyB0byB0cmltXG4gKiBAcmV0dXJucyB7U3RyaW5nfSBUaGUgU3RyaW5nIGZyZWVkIG9mIGV4Y2VzcyB3aGl0ZXNwYWNlXG4gKi9cbmZ1bmN0aW9uIHRyaW0oc3RyKSB7XG4gIHJldHVybiBzdHIucmVwbGFjZSgvXlxccyovLCAnJykucmVwbGFjZSgvXFxzKiQvLCAnJyk7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIHdlJ3JlIHJ1bm5pbmcgaW4gYSBzdGFuZGFyZCBicm93c2VyIGVudmlyb25tZW50XG4gKlxuICogVGhpcyBhbGxvd3MgYXhpb3MgdG8gcnVuIGluIGEgd2ViIHdvcmtlciwgYW5kIHJlYWN0LW5hdGl2ZS5cbiAqIEJvdGggZW52aXJvbm1lbnRzIHN1cHBvcnQgWE1MSHR0cFJlcXVlc3QsIGJ1dCBub3QgZnVsbHkgc3RhbmRhcmQgZ2xvYmFscy5cbiAqXG4gKiB3ZWIgd29ya2VyczpcbiAqICB0eXBlb2Ygd2luZG93IC0+IHVuZGVmaW5lZFxuICogIHR5cGVvZiBkb2N1bWVudCAtPiB1bmRlZmluZWRcbiAqXG4gKiByZWFjdC1uYXRpdmU6XG4gKiAgbmF2aWdhdG9yLnByb2R1Y3QgLT4gJ1JlYWN0TmF0aXZlJ1xuICogbmF0aXZlc2NyaXB0XG4gKiAgbmF2aWdhdG9yLnByb2R1Y3QgLT4gJ05hdGl2ZVNjcmlwdCcgb3IgJ05TJ1xuICovXG5mdW5jdGlvbiBpc1N0YW5kYXJkQnJvd3NlckVudigpIHtcbiAgaWYgKHR5cGVvZiBuYXZpZ2F0b3IgIT09ICd1bmRlZmluZWQnICYmIChuYXZpZ2F0b3IucHJvZHVjdCA9PT0gJ1JlYWN0TmF0aXZlJyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hdmlnYXRvci5wcm9kdWN0ID09PSAnTmF0aXZlU2NyaXB0JyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hdmlnYXRvci5wcm9kdWN0ID09PSAnTlMnKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gKFxuICAgIHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmXG4gICAgdHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJ1xuICApO1xufVxuXG4vKipcbiAqIEl0ZXJhdGUgb3ZlciBhbiBBcnJheSBvciBhbiBPYmplY3QgaW52b2tpbmcgYSBmdW5jdGlvbiBmb3IgZWFjaCBpdGVtLlxuICpcbiAqIElmIGBvYmpgIGlzIGFuIEFycmF5IGNhbGxiYWNrIHdpbGwgYmUgY2FsbGVkIHBhc3NpbmdcbiAqIHRoZSB2YWx1ZSwgaW5kZXgsIGFuZCBjb21wbGV0ZSBhcnJheSBmb3IgZWFjaCBpdGVtLlxuICpcbiAqIElmICdvYmonIGlzIGFuIE9iamVjdCBjYWxsYmFjayB3aWxsIGJlIGNhbGxlZCBwYXNzaW5nXG4gKiB0aGUgdmFsdWUsIGtleSwgYW5kIGNvbXBsZXRlIG9iamVjdCBmb3IgZWFjaCBwcm9wZXJ0eS5cbiAqXG4gKiBAcGFyYW0ge09iamVjdHxBcnJheX0gb2JqIFRoZSBvYmplY3QgdG8gaXRlcmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZm4gVGhlIGNhbGxiYWNrIHRvIGludm9rZSBmb3IgZWFjaCBpdGVtXG4gKi9cbmZ1bmN0aW9uIGZvckVhY2gob2JqLCBmbikge1xuICAvLyBEb24ndCBib3RoZXIgaWYgbm8gdmFsdWUgcHJvdmlkZWRcbiAgaWYgKG9iaiA9PT0gbnVsbCB8fCB0eXBlb2Ygb2JqID09PSAndW5kZWZpbmVkJykge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8vIEZvcmNlIGFuIGFycmF5IGlmIG5vdCBhbHJlYWR5IHNvbWV0aGluZyBpdGVyYWJsZVxuICBpZiAodHlwZW9mIG9iaiAhPT0gJ29iamVjdCcpIHtcbiAgICAvKmVzbGludCBuby1wYXJhbS1yZWFzc2lnbjowKi9cbiAgICBvYmogPSBbb2JqXTtcbiAgfVxuXG4gIGlmIChpc0FycmF5KG9iaikpIHtcbiAgICAvLyBJdGVyYXRlIG92ZXIgYXJyYXkgdmFsdWVzXG4gICAgZm9yICh2YXIgaSA9IDAsIGwgPSBvYmoubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICBmbi5jYWxsKG51bGwsIG9ialtpXSwgaSwgb2JqKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgLy8gSXRlcmF0ZSBvdmVyIG9iamVjdCBrZXlzXG4gICAgZm9yICh2YXIga2V5IGluIG9iaikge1xuICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIHtcbiAgICAgICAgZm4uY2FsbChudWxsLCBvYmpba2V5XSwga2V5LCBvYmopO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIEFjY2VwdHMgdmFyYXJncyBleHBlY3RpbmcgZWFjaCBhcmd1bWVudCB0byBiZSBhbiBvYmplY3QsIHRoZW5cbiAqIGltbXV0YWJseSBtZXJnZXMgdGhlIHByb3BlcnRpZXMgb2YgZWFjaCBvYmplY3QgYW5kIHJldHVybnMgcmVzdWx0LlxuICpcbiAqIFdoZW4gbXVsdGlwbGUgb2JqZWN0cyBjb250YWluIHRoZSBzYW1lIGtleSB0aGUgbGF0ZXIgb2JqZWN0IGluXG4gKiB0aGUgYXJndW1lbnRzIGxpc3Qgd2lsbCB0YWtlIHByZWNlZGVuY2UuXG4gKlxuICogRXhhbXBsZTpcbiAqXG4gKiBgYGBqc1xuICogdmFyIHJlc3VsdCA9IG1lcmdlKHtmb286IDEyM30sIHtmb286IDQ1Nn0pO1xuICogY29uc29sZS5sb2cocmVzdWx0LmZvbyk7IC8vIG91dHB1dHMgNDU2XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqMSBPYmplY3QgdG8gbWVyZ2VcbiAqIEByZXR1cm5zIHtPYmplY3R9IFJlc3VsdCBvZiBhbGwgbWVyZ2UgcHJvcGVydGllc1xuICovXG5mdW5jdGlvbiBtZXJnZSgvKiBvYmoxLCBvYmoyLCBvYmozLCAuLi4gKi8pIHtcbiAgdmFyIHJlc3VsdCA9IHt9O1xuICBmdW5jdGlvbiBhc3NpZ25WYWx1ZSh2YWwsIGtleSkge1xuICAgIGlmIChpc1BsYWluT2JqZWN0KHJlc3VsdFtrZXldKSAmJiBpc1BsYWluT2JqZWN0KHZhbCkpIHtcbiAgICAgIHJlc3VsdFtrZXldID0gbWVyZ2UocmVzdWx0W2tleV0sIHZhbCk7XG4gICAgfSBlbHNlIGlmIChpc1BsYWluT2JqZWN0KHZhbCkpIHtcbiAgICAgIHJlc3VsdFtrZXldID0gbWVyZ2Uoe30sIHZhbCk7XG4gICAgfSBlbHNlIGlmIChpc0FycmF5KHZhbCkpIHtcbiAgICAgIHJlc3VsdFtrZXldID0gdmFsLnNsaWNlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3VsdFtrZXldID0gdmFsO1xuICAgIH1cbiAgfVxuXG4gIGZvciAodmFyIGkgPSAwLCBsID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIGZvckVhY2goYXJndW1lbnRzW2ldLCBhc3NpZ25WYWx1ZSk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLyoqXG4gKiBFeHRlbmRzIG9iamVjdCBhIGJ5IG11dGFibHkgYWRkaW5nIHRvIGl0IHRoZSBwcm9wZXJ0aWVzIG9mIG9iamVjdCBiLlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBhIFRoZSBvYmplY3QgdG8gYmUgZXh0ZW5kZWRcbiAqIEBwYXJhbSB7T2JqZWN0fSBiIFRoZSBvYmplY3QgdG8gY29weSBwcm9wZXJ0aWVzIGZyb21cbiAqIEBwYXJhbSB7T2JqZWN0fSB0aGlzQXJnIFRoZSBvYmplY3QgdG8gYmluZCBmdW5jdGlvbiB0b1xuICogQHJldHVybiB7T2JqZWN0fSBUaGUgcmVzdWx0aW5nIHZhbHVlIG9mIG9iamVjdCBhXG4gKi9cbmZ1bmN0aW9uIGV4dGVuZChhLCBiLCB0aGlzQXJnKSB7XG4gIGZvckVhY2goYiwgZnVuY3Rpb24gYXNzaWduVmFsdWUodmFsLCBrZXkpIHtcbiAgICBpZiAodGhpc0FyZyAmJiB0eXBlb2YgdmFsID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBhW2tleV0gPSBiaW5kKHZhbCwgdGhpc0FyZyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFba2V5XSA9IHZhbDtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gYTtcbn1cblxuLyoqXG4gKiBSZW1vdmUgYnl0ZSBvcmRlciBtYXJrZXIuIFRoaXMgY2F0Y2hlcyBFRiBCQiBCRiAodGhlIFVURi04IEJPTSlcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gY29udGVudCB3aXRoIEJPTVxuICogQHJldHVybiB7c3RyaW5nfSBjb250ZW50IHZhbHVlIHdpdGhvdXQgQk9NXG4gKi9cbmZ1bmN0aW9uIHN0cmlwQk9NKGNvbnRlbnQpIHtcbiAgaWYgKGNvbnRlbnQuY2hhckNvZGVBdCgwKSA9PT0gMHhGRUZGKSB7XG4gICAgY29udGVudCA9IGNvbnRlbnQuc2xpY2UoMSk7XG4gIH1cbiAgcmV0dXJuIGNvbnRlbnQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBpc0FycmF5OiBpc0FycmF5LFxuICBpc0FycmF5QnVmZmVyOiBpc0FycmF5QnVmZmVyLFxuICBpc0J1ZmZlcjogaXNCdWZmZXIsXG4gIGlzRm9ybURhdGE6IGlzRm9ybURhdGEsXG4gIGlzQXJyYXlCdWZmZXJWaWV3OiBpc0FycmF5QnVmZmVyVmlldyxcbiAgaXNTdHJpbmc6IGlzU3RyaW5nLFxuICBpc051bWJlcjogaXNOdW1iZXIsXG4gIGlzT2JqZWN0OiBpc09iamVjdCxcbiAgaXNQbGFpbk9iamVjdDogaXNQbGFpbk9iamVjdCxcbiAgaXNVbmRlZmluZWQ6IGlzVW5kZWZpbmVkLFxuICBpc0RhdGU6IGlzRGF0ZSxcbiAgaXNGaWxlOiBpc0ZpbGUsXG4gIGlzQmxvYjogaXNCbG9iLFxuICBpc0Z1bmN0aW9uOiBpc0Z1bmN0aW9uLFxuICBpc1N0cmVhbTogaXNTdHJlYW0sXG4gIGlzVVJMU2VhcmNoUGFyYW1zOiBpc1VSTFNlYXJjaFBhcmFtcyxcbiAgaXNTdGFuZGFyZEJyb3dzZXJFbnY6IGlzU3RhbmRhcmRCcm93c2VyRW52LFxuICBmb3JFYWNoOiBmb3JFYWNoLFxuICBtZXJnZTogbWVyZ2UsXG4gIGV4dGVuZDogZXh0ZW5kLFxuICB0cmltOiB0cmltLFxuICBzdHJpcEJPTTogc3RyaXBCT01cbn07XG4iLCIvLyBzaGltIGZvciB1c2luZyBwcm9jZXNzIGluIGJyb3dzZXJcbnZhciBwcm9jZXNzID0gbW9kdWxlLmV4cG9ydHMgPSB7fTtcblxuLy8gY2FjaGVkIGZyb20gd2hhdGV2ZXIgZ2xvYmFsIGlzIHByZXNlbnQgc28gdGhhdCB0ZXN0IHJ1bm5lcnMgdGhhdCBzdHViIGl0XG4vLyBkb24ndCBicmVhayB0aGluZ3MuICBCdXQgd2UgbmVlZCB0byB3cmFwIGl0IGluIGEgdHJ5IGNhdGNoIGluIGNhc2UgaXQgaXNcbi8vIHdyYXBwZWQgaW4gc3RyaWN0IG1vZGUgY29kZSB3aGljaCBkb2Vzbid0IGRlZmluZSBhbnkgZ2xvYmFscy4gIEl0J3MgaW5zaWRlIGFcbi8vIGZ1bmN0aW9uIGJlY2F1c2UgdHJ5L2NhdGNoZXMgZGVvcHRpbWl6ZSBpbiBjZXJ0YWluIGVuZ2luZXMuXG5cbnZhciBjYWNoZWRTZXRUaW1lb3V0O1xudmFyIGNhY2hlZENsZWFyVGltZW91dDtcblxuZnVuY3Rpb24gZGVmYXVsdFNldFRpbW91dCgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3NldFRpbWVvdXQgaGFzIG5vdCBiZWVuIGRlZmluZWQnKTtcbn1cbmZ1bmN0aW9uIGRlZmF1bHRDbGVhclRpbWVvdXQgKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignY2xlYXJUaW1lb3V0IGhhcyBub3QgYmVlbiBkZWZpbmVkJyk7XG59XG4oZnVuY3Rpb24gKCkge1xuICAgIHRyeSB7XG4gICAgICAgIGlmICh0eXBlb2Ygc2V0VGltZW91dCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgY2FjaGVkU2V0VGltZW91dCA9IHNldFRpbWVvdXQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjYWNoZWRTZXRUaW1lb3V0ID0gZGVmYXVsdFNldFRpbW91dDtcbiAgICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgY2FjaGVkU2V0VGltZW91dCA9IGRlZmF1bHRTZXRUaW1vdXQ7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICAgIGlmICh0eXBlb2YgY2xlYXJUaW1lb3V0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBjYWNoZWRDbGVhclRpbWVvdXQgPSBjbGVhclRpbWVvdXQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjYWNoZWRDbGVhclRpbWVvdXQgPSBkZWZhdWx0Q2xlYXJUaW1lb3V0O1xuICAgICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBjYWNoZWRDbGVhclRpbWVvdXQgPSBkZWZhdWx0Q2xlYXJUaW1lb3V0O1xuICAgIH1cbn0gKCkpXG5mdW5jdGlvbiBydW5UaW1lb3V0KGZ1bikge1xuICAgIGlmIChjYWNoZWRTZXRUaW1lb3V0ID09PSBzZXRUaW1lb3V0KSB7XG4gICAgICAgIC8vbm9ybWFsIGVudmlyb21lbnRzIGluIHNhbmUgc2l0dWF0aW9uc1xuICAgICAgICByZXR1cm4gc2V0VGltZW91dChmdW4sIDApO1xuICAgIH1cbiAgICAvLyBpZiBzZXRUaW1lb3V0IHdhc24ndCBhdmFpbGFibGUgYnV0IHdhcyBsYXR0ZXIgZGVmaW5lZFxuICAgIGlmICgoY2FjaGVkU2V0VGltZW91dCA9PT0gZGVmYXVsdFNldFRpbW91dCB8fCAhY2FjaGVkU2V0VGltZW91dCkgJiYgc2V0VGltZW91dCkge1xuICAgICAgICBjYWNoZWRTZXRUaW1lb3V0ID0gc2V0VGltZW91dDtcbiAgICAgICAgcmV0dXJuIHNldFRpbWVvdXQoZnVuLCAwKTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgICAgLy8gd2hlbiB3aGVuIHNvbWVib2R5IGhhcyBzY3Jld2VkIHdpdGggc2V0VGltZW91dCBidXQgbm8gSS5FLiBtYWRkbmVzc1xuICAgICAgICByZXR1cm4gY2FjaGVkU2V0VGltZW91dChmdW4sIDApO1xuICAgIH0gY2F0Y2goZSl7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICAvLyBXaGVuIHdlIGFyZSBpbiBJLkUuIGJ1dCB0aGUgc2NyaXB0IGhhcyBiZWVuIGV2YWxlZCBzbyBJLkUuIGRvZXNuJ3QgdHJ1c3QgdGhlIGdsb2JhbCBvYmplY3Qgd2hlbiBjYWxsZWQgbm9ybWFsbHlcbiAgICAgICAgICAgIHJldHVybiBjYWNoZWRTZXRUaW1lb3V0LmNhbGwobnVsbCwgZnVuLCAwKTtcbiAgICAgICAgfSBjYXRjaChlKXtcbiAgICAgICAgICAgIC8vIHNhbWUgYXMgYWJvdmUgYnV0IHdoZW4gaXQncyBhIHZlcnNpb24gb2YgSS5FLiB0aGF0IG11c3QgaGF2ZSB0aGUgZ2xvYmFsIG9iamVjdCBmb3IgJ3RoaXMnLCBob3BmdWxseSBvdXIgY29udGV4dCBjb3JyZWN0IG90aGVyd2lzZSBpdCB3aWxsIHRocm93IGEgZ2xvYmFsIGVycm9yXG4gICAgICAgICAgICByZXR1cm4gY2FjaGVkU2V0VGltZW91dC5jYWxsKHRoaXMsIGZ1biwgMCk7XG4gICAgICAgIH1cbiAgICB9XG5cblxufVxuZnVuY3Rpb24gcnVuQ2xlYXJUaW1lb3V0KG1hcmtlcikge1xuICAgIGlmIChjYWNoZWRDbGVhclRpbWVvdXQgPT09IGNsZWFyVGltZW91dCkge1xuICAgICAgICAvL25vcm1hbCBlbnZpcm9tZW50cyBpbiBzYW5lIHNpdHVhdGlvbnNcbiAgICAgICAgcmV0dXJuIGNsZWFyVGltZW91dChtYXJrZXIpO1xuICAgIH1cbiAgICAvLyBpZiBjbGVhclRpbWVvdXQgd2Fzbid0IGF2YWlsYWJsZSBidXQgd2FzIGxhdHRlciBkZWZpbmVkXG4gICAgaWYgKChjYWNoZWRDbGVhclRpbWVvdXQgPT09IGRlZmF1bHRDbGVhclRpbWVvdXQgfHwgIWNhY2hlZENsZWFyVGltZW91dCkgJiYgY2xlYXJUaW1lb3V0KSB7XG4gICAgICAgIGNhY2hlZENsZWFyVGltZW91dCA9IGNsZWFyVGltZW91dDtcbiAgICAgICAgcmV0dXJuIGNsZWFyVGltZW91dChtYXJrZXIpO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgICAvLyB3aGVuIHdoZW4gc29tZWJvZHkgaGFzIHNjcmV3ZWQgd2l0aCBzZXRUaW1lb3V0IGJ1dCBubyBJLkUuIG1hZGRuZXNzXG4gICAgICAgIHJldHVybiBjYWNoZWRDbGVhclRpbWVvdXQobWFya2VyKTtcbiAgICB9IGNhdGNoIChlKXtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIC8vIFdoZW4gd2UgYXJlIGluIEkuRS4gYnV0IHRoZSBzY3JpcHQgaGFzIGJlZW4gZXZhbGVkIHNvIEkuRS4gZG9lc24ndCAgdHJ1c3QgdGhlIGdsb2JhbCBvYmplY3Qgd2hlbiBjYWxsZWQgbm9ybWFsbHlcbiAgICAgICAgICAgIHJldHVybiBjYWNoZWRDbGVhclRpbWVvdXQuY2FsbChudWxsLCBtYXJrZXIpO1xuICAgICAgICB9IGNhdGNoIChlKXtcbiAgICAgICAgICAgIC8vIHNhbWUgYXMgYWJvdmUgYnV0IHdoZW4gaXQncyBhIHZlcnNpb24gb2YgSS5FLiB0aGF0IG11c3QgaGF2ZSB0aGUgZ2xvYmFsIG9iamVjdCBmb3IgJ3RoaXMnLCBob3BmdWxseSBvdXIgY29udGV4dCBjb3JyZWN0IG90aGVyd2lzZSBpdCB3aWxsIHRocm93IGEgZ2xvYmFsIGVycm9yLlxuICAgICAgICAgICAgLy8gU29tZSB2ZXJzaW9ucyBvZiBJLkUuIGhhdmUgZGlmZmVyZW50IHJ1bGVzIGZvciBjbGVhclRpbWVvdXQgdnMgc2V0VGltZW91dFxuICAgICAgICAgICAgcmV0dXJuIGNhY2hlZENsZWFyVGltZW91dC5jYWxsKHRoaXMsIG1hcmtlcik7XG4gICAgICAgIH1cbiAgICB9XG5cblxuXG59XG52YXIgcXVldWUgPSBbXTtcbnZhciBkcmFpbmluZyA9IGZhbHNlO1xudmFyIGN1cnJlbnRRdWV1ZTtcbnZhciBxdWV1ZUluZGV4ID0gLTE7XG5cbmZ1bmN0aW9uIGNsZWFuVXBOZXh0VGljaygpIHtcbiAgICBpZiAoIWRyYWluaW5nIHx8ICFjdXJyZW50UXVldWUpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBkcmFpbmluZyA9IGZhbHNlO1xuICAgIGlmIChjdXJyZW50UXVldWUubGVuZ3RoKSB7XG4gICAgICAgIHF1ZXVlID0gY3VycmVudFF1ZXVlLmNvbmNhdChxdWV1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcXVldWVJbmRleCA9IC0xO1xuICAgIH1cbiAgICBpZiAocXVldWUubGVuZ3RoKSB7XG4gICAgICAgIGRyYWluUXVldWUoKTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGRyYWluUXVldWUoKSB7XG4gICAgaWYgKGRyYWluaW5nKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdmFyIHRpbWVvdXQgPSBydW5UaW1lb3V0KGNsZWFuVXBOZXh0VGljayk7XG4gICAgZHJhaW5pbmcgPSB0cnVlO1xuXG4gICAgdmFyIGxlbiA9IHF1ZXVlLmxlbmd0aDtcbiAgICB3aGlsZShsZW4pIHtcbiAgICAgICAgY3VycmVudFF1ZXVlID0gcXVldWU7XG4gICAgICAgIHF1ZXVlID0gW107XG4gICAgICAgIHdoaWxlICgrK3F1ZXVlSW5kZXggPCBsZW4pIHtcbiAgICAgICAgICAgIGlmIChjdXJyZW50UXVldWUpIHtcbiAgICAgICAgICAgICAgICBjdXJyZW50UXVldWVbcXVldWVJbmRleF0ucnVuKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcXVldWVJbmRleCA9IC0xO1xuICAgICAgICBsZW4gPSBxdWV1ZS5sZW5ndGg7XG4gICAgfVxuICAgIGN1cnJlbnRRdWV1ZSA9IG51bGw7XG4gICAgZHJhaW5pbmcgPSBmYWxzZTtcbiAgICBydW5DbGVhclRpbWVvdXQodGltZW91dCk7XG59XG5cbnByb2Nlc3MubmV4dFRpY2sgPSBmdW5jdGlvbiAoZnVuKSB7XG4gICAgdmFyIGFyZ3MgPSBuZXcgQXJyYXkoYXJndW1lbnRzLmxlbmd0aCAtIDEpO1xuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID4gMSkge1xuICAgICAgICBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgYXJnc1tpIC0gMV0gPSBhcmd1bWVudHNbaV07XG4gICAgICAgIH1cbiAgICB9XG4gICAgcXVldWUucHVzaChuZXcgSXRlbShmdW4sIGFyZ3MpKTtcbiAgICBpZiAocXVldWUubGVuZ3RoID09PSAxICYmICFkcmFpbmluZykge1xuICAgICAgICBydW5UaW1lb3V0KGRyYWluUXVldWUpO1xuICAgIH1cbn07XG5cbi8vIHY4IGxpa2VzIHByZWRpY3RpYmxlIG9iamVjdHNcbmZ1bmN0aW9uIEl0ZW0oZnVuLCBhcnJheSkge1xuICAgIHRoaXMuZnVuID0gZnVuO1xuICAgIHRoaXMuYXJyYXkgPSBhcnJheTtcbn1cbkl0ZW0ucHJvdG90eXBlLnJ1biA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmZ1bi5hcHBseShudWxsLCB0aGlzLmFycmF5KTtcbn07XG5wcm9jZXNzLnRpdGxlID0gJ2Jyb3dzZXInO1xucHJvY2Vzcy5icm93c2VyID0gdHJ1ZTtcbnByb2Nlc3MuZW52ID0ge307XG5wcm9jZXNzLmFyZ3YgPSBbXTtcbnByb2Nlc3MudmVyc2lvbiA9ICcnOyAvLyBlbXB0eSBzdHJpbmcgdG8gYXZvaWQgcmVnZXhwIGlzc3Vlc1xucHJvY2Vzcy52ZXJzaW9ucyA9IHt9O1xuXG5mdW5jdGlvbiBub29wKCkge31cblxucHJvY2Vzcy5vbiA9IG5vb3A7XG5wcm9jZXNzLmFkZExpc3RlbmVyID0gbm9vcDtcbnByb2Nlc3Mub25jZSA9IG5vb3A7XG5wcm9jZXNzLm9mZiA9IG5vb3A7XG5wcm9jZXNzLnJlbW92ZUxpc3RlbmVyID0gbm9vcDtcbnByb2Nlc3MucmVtb3ZlQWxsTGlzdGVuZXJzID0gbm9vcDtcbnByb2Nlc3MuZW1pdCA9IG5vb3A7XG5wcm9jZXNzLnByZXBlbmRMaXN0ZW5lciA9IG5vb3A7XG5wcm9jZXNzLnByZXBlbmRPbmNlTGlzdGVuZXIgPSBub29wO1xuXG5wcm9jZXNzLmxpc3RlbmVycyA9IGZ1bmN0aW9uIChuYW1lKSB7IHJldHVybiBbXSB9XG5cbnByb2Nlc3MuYmluZGluZyA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdwcm9jZXNzLmJpbmRpbmcgaXMgbm90IHN1cHBvcnRlZCcpO1xufTtcblxucHJvY2Vzcy5jd2QgPSBmdW5jdGlvbiAoKSB7IHJldHVybiAnLycgfTtcbnByb2Nlc3MuY2hkaXIgPSBmdW5jdGlvbiAoZGlyKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdwcm9jZXNzLmNoZGlyIGlzIG5vdCBzdXBwb3J0ZWQnKTtcbn07XG5wcm9jZXNzLnVtYXNrID0gZnVuY3Rpb24oKSB7IHJldHVybiAwOyB9O1xuIiwidmFyIGc7XG5cbi8vIFRoaXMgd29ya3MgaW4gbm9uLXN0cmljdCBtb2RlXG5nID0gKGZ1bmN0aW9uKCkge1xuXHRyZXR1cm4gdGhpcztcbn0pKCk7XG5cbnRyeSB7XG5cdC8vIFRoaXMgd29ya3MgaWYgZXZhbCBpcyBhbGxvd2VkIChzZWUgQ1NQKVxuXHRnID0gZyB8fCBuZXcgRnVuY3Rpb24oXCJyZXR1cm4gdGhpc1wiKSgpO1xufSBjYXRjaCAoZSkge1xuXHQvLyBUaGlzIHdvcmtzIGlmIHRoZSB3aW5kb3cgcmVmZXJlbmNlIGlzIGF2YWlsYWJsZVxuXHRpZiAodHlwZW9mIHdpbmRvdyA9PT0gXCJvYmplY3RcIikgZyA9IHdpbmRvdztcbn1cblxuLy8gZyBjYW4gc3RpbGwgYmUgdW5kZWZpbmVkLCBidXQgbm90aGluZyB0byBkbyBhYm91dCBpdC4uLlxuLy8gV2UgcmV0dXJuIHVuZGVmaW5lZCwgaW5zdGVhZCBvZiBub3RoaW5nIGhlcmUsIHNvIGl0J3Ncbi8vIGVhc2llciB0byBoYW5kbGUgdGhpcyBjYXNlLiBpZighZ2xvYmFsKSB7IC4uLn1cblxubW9kdWxlLmV4cG9ydHMgPSBnO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgRW51bXNfMSA9IHJlcXVpcmUoXCIuL0VudW1zXCIpO1xudmFyIENvbnN0YW50cyA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBDb25zdGFudHMoKSB7XG4gICAgfVxuICAgIENvbnN0YW50cy5yZXF1aXJlZE9tbmljaGFubmVsQ29uZmlndXJhdGlvblBhcmFtZXRlcnMgPSBbXCJvcmdVcmxcIiwgXCJvcmdJZFwiLCBcIndpZGdldElkXCJdO1xuICAgIENvbnN0YW50cy5kZWZhdWx0SGVhZGVycyA9IHtcbiAgICAgICAgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCJcbiAgICB9O1xuICAgIENvbnN0YW50cy5ieXBhc3NDYWNoZUhlYWRlcnMgPSB7XG4gICAgICAgIFwiY2FjaGUtY29udHJvbFwiOiBcIm5vLXN0b3JlLCBtdXN0LXJldmFsaWRhdGUsIG5vLWNhY2hlXCIsXG4gICAgfTtcbiAgICBDb25zdGFudHMuZGVmYXVsdENoYW5uZWxJZCA9IEVudW1zXzEuQ2hhbm5lbElkLkxDVztcbiAgICBDb25zdGFudHMuZGVmYXVsdExvY2FsZSA9IFwiZW4tdXNcIjtcbiAgICBDb25zdGFudHMubm9Db250ZW50U3RhdHVzQ29kZSA9IDIwNDtcbiAgICBDb25zdGFudHMudHJhbnNhY3Rpb25pZCA9IFwidHJhbnNhY3Rpb24taWRcIjtcbiAgICByZXR1cm4gQ29uc3RhbnRzO1xufSgpKTtcbmV4cG9ydHMuZGVmYXVsdCA9IENvbnN0YW50cztcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5MaXZlQ2hhdFZlcnNpb24gPSBleHBvcnRzLk9DU0RLVGVsZW1ldHJ5RXZlbnQgPSBleHBvcnRzLkNoYW5uZWxJZCA9IGV4cG9ydHMuT3BlcmF0aW5nU3lzdGVtID0gZXhwb3J0cy5EZXZpY2VUeXBlID0gZXhwb3J0cy5Ccm93c2VyID0gZXhwb3J0cy5Ccm93c2VyVmVuZG9yID0gdm9pZCAwO1xudmFyIEJyb3dzZXJWZW5kb3I7XG4oZnVuY3Rpb24gKEJyb3dzZXJWZW5kb3IpIHtcbiAgICBCcm93c2VyVmVuZG9yW1wiSUVcIl0gPSBcIklFXCI7XG4gICAgQnJvd3NlclZlbmRvcltcIkNIUk9NRVwiXSA9IFwiQ2hyb21lXCI7XG4gICAgQnJvd3NlclZlbmRvcltcIkZJUkVGT1hcIl0gPSBcIkZpcmVmb3hcIjtcbiAgICBCcm93c2VyVmVuZG9yW1wiU0FGQVJJXCJdID0gXCJTYWZhcmlcIjtcbiAgICBCcm93c2VyVmVuZG9yW1wiRURHRVwiXSA9IFwiRWRnZVwiO1xuICAgIEJyb3dzZXJWZW5kb3JbXCJFREdFX0NIUk9NSVVNXCJdID0gXCJFZGdcIjtcbiAgICBCcm93c2VyVmVuZG9yW1wiT1BFUkFcIl0gPSBcIk9wZXJhXCI7XG4gICAgQnJvd3NlclZlbmRvcltcIlVOS05PV05cIl0gPSBcIlVua25vd25cIjtcbn0pKEJyb3dzZXJWZW5kb3IgPSBleHBvcnRzLkJyb3dzZXJWZW5kb3IgfHwgKGV4cG9ydHMuQnJvd3NlclZlbmRvciA9IHt9KSk7XG52YXIgQnJvd3NlcjtcbihmdW5jdGlvbiAoQnJvd3Nlcikge1xuICAgIEJyb3dzZXJbQnJvd3NlcltcIkNocm9tZVwiXSA9IDBdID0gXCJDaHJvbWVcIjtcbiAgICBCcm93c2VyW0Jyb3dzZXJbXCJGaXJlZm94XCJdID0gMV0gPSBcIkZpcmVmb3hcIjtcbiAgICBCcm93c2VyW0Jyb3dzZXJbXCJJZVwiXSA9IDJdID0gXCJJZVwiO1xuICAgIEJyb3dzZXJbQnJvd3NlcltcIkVkZ2VcIl0gPSAzXSA9IFwiRWRnZVwiO1xuICAgIEJyb3dzZXJbQnJvd3NlcltcIlNhZmFyaVwiXSA9IDRdID0gXCJTYWZhcmlcIjtcbiAgICBCcm93c2VyW0Jyb3dzZXJbXCJOb25lXCJdID0gNV0gPSBcIk5vbmVcIjtcbn0pKEJyb3dzZXIgPSBleHBvcnRzLkJyb3dzZXIgfHwgKGV4cG9ydHMuQnJvd3NlciA9IHt9KSk7XG52YXIgRGV2aWNlVHlwZTtcbihmdW5jdGlvbiAoRGV2aWNlVHlwZSkge1xuICAgIERldmljZVR5cGVbXCJEZXNrdG9wXCJdID0gXCJEZXNrdG9wXCI7XG4gICAgRGV2aWNlVHlwZVtcIk1vYmlsZVwiXSA9IFwiTW9iaWxlXCI7XG4gICAgRGV2aWNlVHlwZVtcIlRhYmxldFwiXSA9IFwiVGFibGV0XCI7XG59KShEZXZpY2VUeXBlID0gZXhwb3J0cy5EZXZpY2VUeXBlIHx8IChleHBvcnRzLkRldmljZVR5cGUgPSB7fSkpO1xudmFyIE9wZXJhdGluZ1N5c3RlbTtcbihmdW5jdGlvbiAoT3BlcmF0aW5nU3lzdGVtKSB7XG4gICAgT3BlcmF0aW5nU3lzdGVtW1wiV0lORE9XU1wiXSA9IFwiV2luZG93c1wiO1xuICAgIE9wZXJhdGluZ1N5c3RlbVtcIk1BQ09TWFwiXSA9IFwiTWFjIE9TIFhcIjtcbiAgICBPcGVyYXRpbmdTeXN0ZW1bXCJXSU5ET1dTX1BIT05FXCJdID0gXCJXaW5kb3dzIFBob25lXCI7XG4gICAgT3BlcmF0aW5nU3lzdGVtW1wiV0lORE9XU19SVFwiXSA9IFwiV2luZG93cyBSVFwiO1xuICAgIE9wZXJhdGluZ1N5c3RlbVtcIklPU1wiXSA9IFwiaU9TXCI7XG4gICAgT3BlcmF0aW5nU3lzdGVtW1wiQU5EUk9JRFwiXSA9IFwiQW5kcm9pZFwiO1xuICAgIE9wZXJhdGluZ1N5c3RlbVtcIkxJTlVYXCJdID0gXCJMaW51eFwiO1xuICAgIE9wZXJhdGluZ1N5c3RlbVtcIlVOS05PV05cIl0gPSBcIlVua25vd25cIjtcbn0pKE9wZXJhdGluZ1N5c3RlbSA9IGV4cG9ydHMuT3BlcmF0aW5nU3lzdGVtIHx8IChleHBvcnRzLk9wZXJhdGluZ1N5c3RlbSA9IHt9KSk7XG52YXIgQ2hhbm5lbElkO1xuKGZ1bmN0aW9uIChDaGFubmVsSWQpIHtcbiAgICBDaGFubmVsSWRbXCJMQ1dcIl0gPSBcImxjd1wiO1xuICAgIENoYW5uZWxJZFtcIlNNU1wiXSA9IFwic21zXCI7XG4gICAgQ2hhbm5lbElkW1wiRkFDRUJPT0tcIl0gPSBcImZhY2Vib29rXCI7XG4gICAgQ2hhbm5lbElkW1wiV0VDSEFUXCJdID0gXCJ3ZWNoYXRcIjtcbn0pKENoYW5uZWxJZCA9IGV4cG9ydHMuQ2hhbm5lbElkIHx8IChleHBvcnRzLkNoYW5uZWxJZCA9IHt9KSk7XG52YXIgT0NTREtUZWxlbWV0cnlFdmVudDtcbihmdW5jdGlvbiAoT0NTREtUZWxlbWV0cnlFdmVudCkge1xuICAgIE9DU0RLVGVsZW1ldHJ5RXZlbnRbXCJHRVRDSEFUQ09ORklHXCJdID0gXCJHZXRDaGF0Q29uZmlnXCI7XG4gICAgT0NTREtUZWxlbWV0cnlFdmVudFtcIkdFVENIQVRDT05GSUdTVUNDRVNTXCJdID0gXCJHZXRDaGF0Q29uZmlnU3VjY2VlZGVkXCI7XG4gICAgT0NTREtUZWxlbWV0cnlFdmVudFtcIkdFVFJFQ09OTkVDVEFCTEVDSEFUU1wiXSA9IFwiR2V0UmVjb25ubmVjdGFibGVDaGF0c1wiO1xuICAgIE9DU0RLVGVsZW1ldHJ5RXZlbnRbXCJHRVRSRUNPTk5FQ1RBVkFJTEFCSUxJVFlcIl0gPSBcIkdldFJlY29ubm5lY3RhYmxlQXZhaWxhYmlsaXR5XCI7XG4gICAgT0NTREtUZWxlbWV0cnlFdmVudFtcIkdFVENIQVRUT0tFTlNUQVJURURcIl0gPSBcIkdldENoYXRUb2tlblN0YXJ0ZWRcIjtcbiAgICBPQ1NES1RlbGVtZXRyeUV2ZW50W1wiR0VUQ0hBVFRPS0VOU1VDQ0VFREVEXCJdID0gXCJHZXRDaGF0VG9rZW5TdWNjZWVkZWRcIjtcbiAgICBPQ1NES1RlbGVtZXRyeUV2ZW50W1wiR0VUQ0hBVFRPS0VORkFJTEVEXCJdID0gXCJHZXRDaGF0VG9rZW5GYWlsZWRcIjtcbiAgICBPQ1NES1RlbGVtZXRyeUV2ZW50W1wiR0VUTFdJU1RBVFVTU1RBUlRFRFwiXSA9IFwiR2V0THdpU3RhdHVzU3RhcnRlZFwiO1xuICAgIE9DU0RLVGVsZW1ldHJ5RXZlbnRbXCJHRVRMV0lTVEFUVVNTVUNDRUVERURcIl0gPSBcIkdldEx3aVN0YXR1c1N1Y2NlZWRlZFwiO1xuICAgIE9DU0RLVGVsZW1ldHJ5RXZlbnRbXCJHRVRMV0lTVEFUVVNGQUlMRURcIl0gPSBcIkdldEx3aVN0YXR1c0ZhaWxlZFwiO1xuICAgIE9DU0RLVGVsZW1ldHJ5RXZlbnRbXCJTRVNTSU9OSU5JVFNUQVJURURcIl0gPSBcIlNlc3Npb25Jbml0U3RhcnRlZFwiO1xuICAgIE9DU0RLVGVsZW1ldHJ5RXZlbnRbXCJTRVNTSU9OSU5JVFNVQ0NFRURFRFwiXSA9IFwiU2Vzc2lvbkluaXRTdWNjZWVkZWRcIjtcbiAgICBPQ1NES1RlbGVtZXRyeUV2ZW50W1wiU0VTU0lPTklOSVRGQUlMRURcIl0gPSBcIlNlc3Npb25Jbml0RmFpbGVkXCI7XG4gICAgT0NTREtUZWxlbWV0cnlFdmVudFtcIlNFU1NJT05DTE9TRVNUQVJURURcIl0gPSBcIlNlc3Npb25DbG9zZVN0YXJ0ZWRcIjtcbiAgICBPQ1NES1RlbGVtZXRyeUV2ZW50W1wiU0VTU0lPTkNMT1NFU1VDQ0VFREVEXCJdID0gXCJTZXNzaW9uQ2xvc2VTdWNjZWVkZWRcIjtcbiAgICBPQ1NES1RlbGVtZXRyeUV2ZW50W1wiU0VTU0lPTkNMT1NFRkFJTEVEXCJdID0gXCJTZXNzaW9uQ2xvc2VGYWlsZWRcIjtcbiAgICBPQ1NES1RlbGVtZXRyeUV2ZW50W1wiU1VCTUlUUE9TVENIQVRTVEFSVEVEXCJdID0gXCJTdWJtaXRQb3N0Q2hhdFN0YXJ0ZWRcIjtcbiAgICBPQ1NES1RlbGVtZXRyeUV2ZW50W1wiU1VCTUlUUE9TVENIQVRTVUNDRUVERURcIl0gPSBcIlN1Ym1pdFBvc3RDaGF0U3VjY2VlZGVkXCI7XG4gICAgT0NTREtUZWxlbWV0cnlFdmVudFtcIlNVQk1JVFBPU1RDSEFURkFJTEVEXCJdID0gXCJTdWJtaXRQb3N0Q2hhdEZhaWxlZFwiO1xuICAgIE9DU0RLVGVsZW1ldHJ5RXZlbnRbXCJHRVRDSEFUVFJBTlNDUklQVFNUQVJURURcIl0gPSBcIkdldENoYXRUcmFuc2NyaXB0U3RhcnRlZFwiO1xuICAgIE9DU0RLVGVsZW1ldHJ5RXZlbnRbXCJHRVRDSEFUVFJBTlNDUklQVFNVQ0NFRURFRFwiXSA9IFwiR2V0Q2hhdFRyYW5zY3JpcHRTdWNjZWVkZWRcIjtcbiAgICBPQ1NES1RlbGVtZXRyeUV2ZW50W1wiR0VUQ0hBVFRSQU5TQ1JJUFRGQUlMRURcIl0gPSBcIkdldENoYXRUcmFuc2NyaXB0RmFpbGVkXCI7XG4gICAgT0NTREtUZWxlbWV0cnlFdmVudFtcIkVNQUlMVFJBTlNDUklQVFNUQVJURURcIl0gPSBcIkVtYWlsVHJhbnNjcmlwdFN0YXJ0ZWRcIjtcbiAgICBPQ1NES1RlbGVtZXRyeUV2ZW50W1wiRU1BSUxUUkFOU0NSSVBUU1VDQ0VFREVEXCJdID0gXCJFbWFpbFRyYW5zY3JpcHRTdWNjZWVkZWRcIjtcbiAgICBPQ1NES1RlbGVtZXRyeUV2ZW50W1wiRU1BSUxUUkFOU0NSSVBURkFJTEVEXCJdID0gXCJFbWFpbFRyYW5zY3JpcHRGYWlsZWRcIjtcbiAgICBPQ1NES1RlbGVtZXRyeUV2ZW50W1wiRkVUQ0hEQVRBTUFTS0lOR1NUQVJURURcIl0gPSBcIkZldGNoRGF0YU1hc2tpbmdTdGFydGVkXCI7XG4gICAgT0NTREtUZWxlbWV0cnlFdmVudFtcIkZFVENIREFUQU1BU0tJTkdTVUNDRUVERURcIl0gPSBcIkZldGNoRGF0YU1hc2tpbmdTdWNjZWVkZWRcIjtcbiAgICBPQ1NES1RlbGVtZXRyeUV2ZW50W1wiRkVUQ0hEQVRBTUFTS0lOR0ZBSUxFRFwiXSA9IFwiRmV0Y2hEYXRhTWFza2luZ0ZhaWxlZFwiO1xuICAgIE9DU0RLVGVsZW1ldHJ5RXZlbnRbXCJTRUNPTkRBUllDSEFOTkVMRVZFTlRSRVFVRVNUU1RBUlRFRFwiXSA9IFwiU2Vjb25kYXJ5Q2hhbm5lbEV2ZW50UmVxdWVzdFN0YXJ0ZWRcIjtcbiAgICBPQ1NES1RlbGVtZXRyeUV2ZW50W1wiU0VDT05EQVJZQ0hBTk5FTEVWRU5UUkVRVUVTVFNVQ0NFRURFRFwiXSA9IFwiU2Vjb25kYXJ5Q2hhbm5lbEV2ZW50UmVxdWVzdFN1Y2NlZWRlZFwiO1xuICAgIE9DU0RLVGVsZW1ldHJ5RXZlbnRbXCJTRUNPTkRBUllDSEFOTkVMRVZFTlRSRVFVRVNURkFJTEVEXCJdID0gXCJTZWNvbmRhcnlDaGFubmVsRXZlbnRSZXF1ZXN0RmFpbGVkXCI7XG4gICAgT0NTREtUZWxlbWV0cnlFdmVudFtcIkdFVFNVUlZFWUlOVklURUxJTktTVEFSVEVEXCJdID0gXCJHZXRTdXJ2ZXlJbnZpdGVMaW5rU3RhcnRlZFwiO1xuICAgIE9DU0RLVGVsZW1ldHJ5RXZlbnRbXCJHRVRTVVJWRVlJTlZJVEVMSU5LU1VDQ0VFREVEXCJdID0gXCJHZXRTdXJ2ZXlJbnZpdGVMaW5rU3VjY2VlZGVkXCI7XG4gICAgT0NTREtUZWxlbWV0cnlFdmVudFtcIkdFVFNVUlZFWUlOVklURUxJTktGQUlMRURcIl0gPSBcIkdldFN1cnZleUludml0ZUxpbmtGYWlsZWRcIjtcbiAgICBPQ1NES1RlbGVtZXRyeUV2ZW50W1wiVkFMSURBVEVBVVRIQ0hBVFJFQ09SRFNUQVJURURcIl0gPSBcIlZhbGlkYXRlQXV0aENoYXRSZWNvcmRTdGFydGVkXCI7XG4gICAgT0NTREtUZWxlbWV0cnlFdmVudFtcIlZBTElEQVRFQVVUSENIQVRSRUNPUkRTVUNDRUVERURcIl0gPSBcIlZhbGlkYXRlQXV0aENoYXRSZWNvcmRTdWNjZWVkZWRcIjtcbiAgICBPQ1NES1RlbGVtZXRyeUV2ZW50W1wiVkFMSURBVEVBVVRIQ0hBVFJFQ09SREZBSUxFRFwiXSA9IFwiVmFsaWRhdGVBdXRoQ2hhdFJlY29yZEZhaWxlZFwiO1xuICAgIE9DU0RLVGVsZW1ldHJ5RXZlbnRbXCJHRVRRVUVVRUFWQUlMQUJJTElUWVNUQVJURURcIl0gPSBcIkdldFF1ZXVlQXZhaWxhYmlsaXR5U3RhcnRlZFwiO1xuICAgIE9DU0RLVGVsZW1ldHJ5RXZlbnRbXCJHRVRRVUVVRUFWQUlMQUJJTElUWVNVQ0NFRURFRFwiXSA9IFwiR2V0UXVldWVBdmFpbGFiaWxpdHlTdWNjZWVkZWRcIjtcbiAgICBPQ1NES1RlbGVtZXRyeUV2ZW50W1wiR0VUUVVFVUVBVkFJTEFCSUxJVFlGQUlMRURcIl0gPSBcIkdldFF1ZXVlQXZhaWxhYmlsaXR5RmFpbGVkXCI7XG4gICAgT0NTREtUZWxlbWV0cnlFdmVudFtcIlNFTkRUWVBJTkdJTkRJQ0FUT1JGQUlMRURcIl0gPSBcIlNlbmRUeXBpbmdJbmRpY2F0b3JGYWlsZWRcIjtcbiAgICBPQ1NES1RlbGVtZXRyeUV2ZW50W1wiU0VORFRZUElOR0lORElDQVRPUlNVQ0NFRURFRFwiXSA9IFwiU2VuZFR5cGluZ0luZGljYXRvclN1Y2NlZWRlZFwiO1xufSkoT0NTREtUZWxlbWV0cnlFdmVudCA9IGV4cG9ydHMuT0NTREtUZWxlbWV0cnlFdmVudCB8fCAoZXhwb3J0cy5PQ1NES1RlbGVtZXRyeUV2ZW50ID0ge30pKTtcbnZhciBMaXZlQ2hhdFZlcnNpb247XG4oZnVuY3Rpb24gKExpdmVDaGF0VmVyc2lvbikge1xuICAgIC8vIElDMyBsaXZlIGNoYXRcbiAgICBMaXZlQ2hhdFZlcnNpb25bTGl2ZUNoYXRWZXJzaW9uW1wiVjFcIl0gPSAxXSA9IFwiVjFcIjtcbiAgICAvLyBBQ1MgbGl2ZSBjaGF0XG4gICAgTGl2ZUNoYXRWZXJzaW9uW0xpdmVDaGF0VmVyc2lvbltcIlYyXCJdID0gMl0gPSBcIlYyXCI7XG59KShMaXZlQ2hhdFZlcnNpb24gPSBleHBvcnRzLkxpdmVDaGF0VmVyc2lvbiB8fCAoZXhwb3J0cy5MaXZlQ2hhdFZlcnNpb24gPSB7fSkpO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgRXZlbnROYW1lcyA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBFdmVudE5hbWVzKCkge1xuICAgIH1cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRXZlbnROYW1lcywgXCJPQ1NES0xPQURcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIFwib2M6c2RrOmxvYWRcIjsgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIHJldHVybiBFdmVudE5hbWVzO1xufSgpKTtcbmV4cG9ydHMuZGVmYXVsdCA9IEV2ZW50TmFtZXM7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBMb2NhbGVzID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIExvY2FsZXMoKSB7XG4gICAgfVxuICAgIExvY2FsZXMuc3VwcG9ydGVkTG9jYWxlcyA9IFtcbiAgICAgICAgXCJhci1zYVwiLFxuICAgICAgICBcImJnLWJnXCIsXG4gICAgICAgIFwiY2EtZXNcIixcbiAgICAgICAgXCJjcy1jelwiLFxuICAgICAgICBcImRhLWRrXCIsXG4gICAgICAgIFwiZGUtZGVcIixcbiAgICAgICAgXCJlbC1nclwiLFxuICAgICAgICBcImVuLXVzXCIsXG4gICAgICAgIFwiZXMtZXNcIixcbiAgICAgICAgXCJldC1lZVwiLFxuICAgICAgICBcImV1LWVzXCIsXG4gICAgICAgIFwiZmktZmlcIixcbiAgICAgICAgXCJmci1mclwiLFxuICAgICAgICBcImdsLWVzXCIsXG4gICAgICAgIFwiaGUtaWxcIixcbiAgICAgICAgXCJoaS1pblwiLFxuICAgICAgICBcImhyLWhyXCIsXG4gICAgICAgIFwiaHUtaHVcIixcbiAgICAgICAgXCJpZC1pZFwiLFxuICAgICAgICBcIml0LWl0XCIsXG4gICAgICAgIFwiamEtanBcIixcbiAgICAgICAgXCJray1relwiLFxuICAgICAgICBcImtvLWtyXCIsXG4gICAgICAgIFwibHQtbHRcIixcbiAgICAgICAgXCJsdi1sdlwiLFxuICAgICAgICBcIm1zLW15XCIsXG4gICAgICAgIFwibmItbm9cIixcbiAgICAgICAgXCJubC1ubFwiLFxuICAgICAgICBcInBsLXBsXCIsXG4gICAgICAgIFwicHQtYnJcIixcbiAgICAgICAgXCJwdC1wdFwiLFxuICAgICAgICBcInJvLXJvXCIsXG4gICAgICAgIFwicnUtcnVcIixcbiAgICAgICAgXCJzay1za1wiLFxuICAgICAgICBcInNsLXNpXCIsXG4gICAgICAgIFwic3ItY3lybC1jc1wiLFxuICAgICAgICBcInNyLWxhdG4tY3NcIixcbiAgICAgICAgXCJzdi1zZVwiLFxuICAgICAgICBcInRoLXRoXCIsXG4gICAgICAgIFwidHItdHJcIixcbiAgICAgICAgXCJ1ay11YVwiLFxuICAgICAgICBcInZpLXZuXCIsXG4gICAgICAgIFwiemgtY25cIixcbiAgICAgICAgXCJ6aC1oa1wiLFxuICAgICAgICBcInpoLXR3XCJcbiAgICBdO1xuICAgIHJldHVybiBMb2NhbGVzO1xufSgpKTtcbmV4cG9ydHMuZGVmYXVsdCA9IExvY2FsZXM7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBUZWxlbWV0cnlIZWxwZXJfMSA9IHJlcXVpcmUoXCIuLi9VdGlscy9UZWxlbWV0cnlIZWxwZXJcIik7XG52YXIgT0NTREtMb2dnZXIgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gT0NTREtMb2dnZXIobG9nZ2VyKSB7XG4gICAgICAgIHRoaXMubG9nZ2VyID0gbG9nZ2VyO1xuICAgIH1cbiAgICBPQ1NES0xvZ2dlci5wcm90b3R5cGUubG9nID0gZnVuY3Rpb24gKGxvZ2xldmVsLCB0ZWxlbWV0cnlFdmVudCwgY3VzdG9tRGF0YSwgZGVzY3JpcHRpb24pIHtcbiAgICAgICAgaWYgKHRoaXMuaXNMb2dnaW5nRW5hYmxlZCgpKSB7XG4gICAgICAgICAgICB2YXIgbG9nRGF0YSA9IFRlbGVtZXRyeUhlbHBlcl8xLmRlZmF1bHQuR0VUVEVMRU1FVFJZRVZFTlREQVRBKHRlbGVtZXRyeUV2ZW50LCBjdXN0b21EYXRhLCBkZXNjcmlwdGlvbik7XG4gICAgICAgICAgICB0aGlzLmxvZ0V2ZW50KGxvZ2xldmVsLCBsb2dEYXRhKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgT0NTREtMb2dnZXIucHJvdG90eXBlLmxvZ0V2ZW50ID0gZnVuY3Rpb24gKGxvZ0xldmVsLCBsb2dEYXRhKSB7XG4gICAgICAgIGlmICh0aGlzLmlzTG9nZ2luZ0VuYWJsZWQoKSkge1xuICAgICAgICAgICAgc2V0VGltZW91dCh0aGlzLmxvZ2dlci5sb2dDbGllbnRTZGtUZWxlbWV0cnlFdmVudC5iaW5kKHRoaXMubG9nZ2VyKSwgMCwgbG9nTGV2ZWwsIGxvZ0RhdGEpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBPQ1NES0xvZ2dlci5wcm90b3R5cGUuaXNMb2dnaW5nRW5hYmxlZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLmlzTnVsbE9yVW5kZWZpbmVkKHRoaXMubG9nZ2VyKTtcbiAgICB9O1xuICAgIE9DU0RLTG9nZ2VyLnByb3RvdHlwZS5pc051bGxPclVuZGVmaW5lZCA9IGZ1bmN0aW9uIChvYmopIHtcbiAgICAgICAgcmV0dXJuIChvYmogPT09IG51bGwgfHwgb2JqID09PSB1bmRlZmluZWQpO1xuICAgIH07XG4gICAgcmV0dXJuIE9DU0RLTG9nZ2VyO1xufSgpKTtcbmV4cG9ydHMuZGVmYXVsdCA9IE9DU0RLTG9nZ2VyO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgT21uaWNoYW5uZWxFbmRwb2ludHMgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gT21uaWNoYW5uZWxFbmRwb2ludHMoKSB7XG4gICAgfVxuICAgIE9tbmljaGFubmVsRW5kcG9pbnRzLkxpdmVDaGF0Q29uZmlnUGF0aCA9IFwibGl2ZWNoYXRjb25uZWN0b3IvY29uZmlnXCI7XG4gICAgT21uaWNoYW5uZWxFbmRwb2ludHMuTGl2ZUNoYXRTZXNzaW9uSW5pdFBhdGggPSBcImxpdmVjaGF0Y29ubmVjdG9yL3Nlc3Npb25pbml0XCI7XG4gICAgT21uaWNoYW5uZWxFbmRwb2ludHMuTGl2ZUNoYXRBdXRoU2Vzc2lvbkluaXRQYXRoID0gXCJsaXZlY2hhdGNvbm5lY3Rvci9hdXRoL3Nlc3Npb25pbml0XCI7XG4gICAgT21uaWNoYW5uZWxFbmRwb2ludHMuTGl2ZUNoYXRHZXRDaGF0VG9rZW5QYXRoID0gXCJsaXZlY2hhdGNvbm5lY3Rvci9nZXRjaGF0dG9rZW5cIjtcbiAgICBPbW5pY2hhbm5lbEVuZHBvaW50cy5MaXZlQ2hhdHYyR2V0Q2hhdFRva2VuUGF0aCA9IFwibGl2ZWNoYXRjb25uZWN0b3IvdjIvZ2V0Y2hhdHRva2VuXCI7XG4gICAgT21uaWNoYW5uZWxFbmRwb2ludHMuTGl2ZUNoYXRBdXRoR2V0Q2hhdFRva2VuUGF0aCA9IFwibGl2ZWNoYXRjb25uZWN0b3IvYXV0aC9nZXRjaGF0dG9rZW5cIjtcbiAgICBPbW5pY2hhbm5lbEVuZHBvaW50cy5MaXZlQ2hhdHYyQXV0aEdldENoYXRUb2tlblBhdGggPSBcImxpdmVjaGF0Y29ubmVjdG9yL3YyL2F1dGgvZ2V0Y2hhdHRva2VuXCI7XG4gICAgT21uaWNoYW5uZWxFbmRwb2ludHMuTGl2ZUNoYXRTZXNzaW9uQ2xvc2VQYXRoID0gXCJsaXZlY2hhdGNvbm5lY3Rvci9zZXNzaW9uY2xvc2VcIjtcbiAgICBPbW5pY2hhbm5lbEVuZHBvaW50cy5MaXZlQ2hhdEF1dGhTZXNzaW9uQ2xvc2VQYXRoID0gXCJsaXZlY2hhdGNvbm5lY3Rvci9hdXRoL3Nlc3Npb25jbG9zZVwiO1xuICAgIE9tbmljaGFubmVsRW5kcG9pbnRzLkxpdmVDaGF0U3VibWl0UG9zdENoYXRQYXRoID0gXCJzdXJ2ZXkvc3VibWl0cG9zdGNoYXRcIjtcbiAgICBPbW5pY2hhbm5lbEVuZHBvaW50cy5MaXZlQ2hhdEF1dGhTdWJtaXRQb3N0Q2hhdFBhdGggPSBcInN1cnZleS9hdXRoL3N1Ym1pdHBvc3RjaGF0XCI7XG4gICAgT21uaWNoYW5uZWxFbmRwb2ludHMuTGl2ZUNoYXRHZXRTdXJ2ZXlJbnZpdGVMaW5rUGF0aCA9IFwibGl2ZWNoYXRjb25uZWN0b3IvZ2V0c3VydmV5aW52aXRlXCI7XG4gICAgT21uaWNoYW5uZWxFbmRwb2ludHMuTGl2ZUNoYXRBdXRoR2V0U3VydmV5SW52aXRlTGlua1BhdGggPSBcImxpdmVjaGF0Y29ubmVjdG9yL2F1dGgvZ2V0c3VydmV5aW52aXRlXCI7XG4gICAgT21uaWNoYW5uZWxFbmRwb2ludHMuTGl2ZUNoYXRHZXRDaGF0VHJhbnNjcmlwdFBhdGggPSBcImxpdmVjaGF0Y29ubmVjdG9yL2dldGNoYXR0cmFuc2NyaXB0c1wiO1xuICAgIE9tbmljaGFubmVsRW5kcG9pbnRzLkxpdmVDaGF0djJHZXRDaGF0VHJhbnNjcmlwdFBhdGggPSBcImxpdmVjaGF0Y29ubmVjdG9yL3YyL2dldGNoYXR0cmFuc2NyaXB0c1wiO1xuICAgIE9tbmljaGFubmVsRW5kcG9pbnRzLkxpdmVDaGF0QXV0aEdldENoYXRUcmFuc2NyaXB0UGF0aCA9IFwibGl2ZWNoYXRjb25uZWN0b3IvYXV0aC9nZXRjaGF0dHJhbnNjcmlwdHNcIjtcbiAgICBPbW5pY2hhbm5lbEVuZHBvaW50cy5MaXZlQ2hhdHYyQXV0aEdldENoYXRUcmFuc2NyaXB0UGF0aCA9IFwibGl2ZWNoYXRjb25uZWN0b3IvdjIvYXV0aC9nZXRjaGF0dHJhbnNjcmlwdHNcIjtcbiAgICBPbW5pY2hhbm5lbEVuZHBvaW50cy5MaXZlQ2hhdFRyYW5zY3JpcHRFbWFpbFJlcXVlc3RQYXRoID0gXCJsaXZlY2hhdGNvbm5lY3Rvci9jcmVhdGVlbWFpbHJlcXVlc3RcIjtcbiAgICBPbW5pY2hhbm5lbEVuZHBvaW50cy5MaXZlQ2hhdEF1dGhUcmFuc2NyaXB0RW1haWxSZXF1ZXN0UGF0aCA9IFwibGl2ZWNoYXRjb25uZWN0b3IvYXV0aC9jcmVhdGVlbWFpbHJlcXVlc3RcIjtcbiAgICBPbW5pY2hhbm5lbEVuZHBvaW50cy5MaXZlQ2hhdEZldGNoRGF0YU1hc2tpbmdJbmZvUGF0aCA9IFwibGl2ZWNoYXRjb25uZWN0b3IvZmV0Y2hkYXRhbWFza2luZ2luZm9cIjtcbiAgICBPbW5pY2hhbm5lbEVuZHBvaW50cy5MaXZlQ2hhdFNlY29uZGFyeUNoYW5uZWxFdmVudFBhdGggPSBcImxpdmVjaGF0Y29ubmVjdG9yL3NlY29uZGFyeWNoYW5uZWxldmVudFwiO1xuICAgIE9tbmljaGFubmVsRW5kcG9pbnRzLkxpdmVDaGF0QXV0aFNlY29uZGFyeUNoYW5uZWxFdmVudFBhdGggPSBcImxpdmVjaGF0Y29ubmVjdG9yL2F1dGgvc2Vjb25kYXJ5Y2hhbm5lbGV2ZW50XCI7XG4gICAgT21uaWNoYW5uZWxFbmRwb2ludHMuTGl2ZUNoYXRMaXZlV29ya0l0ZW1EZXRhaWxzUGF0aCA9IFwibGl2ZWNoYXRjb25uZWN0b3IvZ2V0bGl2ZXdvcmtpdGVtZGV0YWlsc1wiO1xuICAgIE9tbmljaGFubmVsRW5kcG9pbnRzLkxpdmVDaGF0QXV0aExpdmVXb3JrSXRlbURldGFpbHNQYXRoID0gXCJsaXZlY2hhdGNvbm5lY3Rvci9hdXRoL2dldGxpdmV3b3JraXRlbWRldGFpbHNcIjtcbiAgICBPbW5pY2hhbm5lbEVuZHBvaW50cy5MaXZlQ2hhdEdldFJlY29ubmVjdGFibGVDaGF0c1BhdGggPSBcImxpdmVjaGF0Y29ubmVjdG9yL2F1dGgvcmVjb25uZWN0YWJsZWNoYXRzXCI7XG4gICAgT21uaWNoYW5uZWxFbmRwb2ludHMuTGl2ZUNoYXRSZWNvbm5lY3RBdmFpbGFiaWxpdHlQYXRoID0gXCJsaXZlY2hhdGNvbm5lY3Rvci9yZWNvbm5lY3RcIjtcbiAgICBPbW5pY2hhbm5lbEVuZHBvaW50cy5MaXZlQ2hhdFZhbGlkYXRlQXV0aENoYXRNYXBSZWNvcmRQYXRoID0gXCJsaXZlY2hhdGNvbm5lY3Rvci9hdXRoL3ZhbGlkYXRlYXV0aGNoYXRtYXByZWNvcmRcIjtcbiAgICBPbW5pY2hhbm5lbEVuZHBvaW50cy5HZXRRdWV1ZUF2YWlsYWJpbGl0eVBhdGggPSBcImxpdmVjaGF0Y29ubmVjdG9yL2F1dGgvZ2V0cXVldWVhdmFpbGFiaWxpdHlcIjtcbiAgICBPbW5pY2hhbm5lbEVuZHBvaW50cy5TZW5kVHlwaW5nSW5kaWNhdG9yUGF0aCA9IFwiaW5ib3VuZC90eXBpbmdpbmRpY2F0b3IvbGl2ZWNoYXQvc2VuZHR5cGluZ2luZGljYXRvclwiO1xuICAgIHJldHVybiBPbW5pY2hhbm5lbEVuZHBvaW50cztcbn0oKSk7XG5leHBvcnRzLmRlZmF1bHQgPSBPbW5pY2hhbm5lbEVuZHBvaW50cztcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIE9tbmljaGFubmVsSFRUUEhlYWRlcnMgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gT21uaWNoYW5uZWxIVFRQSGVhZGVycygpIHtcbiAgICB9XG4gICAgT21uaWNoYW5uZWxIVFRQSGVhZGVycy5hdXRoZW50aWNhdGVkVXNlclRva2VuID0gXCJBdXRoZW50aWNhdGVkVXNlclRva2VuXCI7XG4gICAgT21uaWNoYW5uZWxIVFRQSGVhZGVycy5hdXRob3JpemF0aW9uID0gXCJBdXRob3JpemF0aW9uXCI7XG4gICAgT21uaWNoYW5uZWxIVFRQSGVhZGVycy5vcmdhbml6YXRpb25JZCA9IFwiT3JnYW5pemF0aW9uSWRcIjtcbiAgICBPbW5pY2hhbm5lbEhUVFBIZWFkZXJzLndpZGdldEFwcElkID0gXCJ3aWRnZXRBcHBJZFwiO1xuICAgIE9tbmljaGFubmVsSFRUUEhlYWRlcnMucmVxdWVzdElkID0gXCJSZXF1ZXN0LUlkXCI7XG4gICAgcmV0dXJuIE9tbmljaGFubmVsSFRUUEhlYWRlcnM7XG59KCkpO1xuZXhwb3J0cy5kZWZhdWx0ID0gT21uaWNoYW5uZWxIVFRQSGVhZGVycztcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5Mb2dMZXZlbCA9IHZvaWQgMDtcbnZhciBMb2dMZXZlbDtcbihmdW5jdGlvbiAoTG9nTGV2ZWwpIHtcbiAgICBMb2dMZXZlbFtcIklORk9cIl0gPSBcIklORk9cIjtcbiAgICBMb2dMZXZlbFtcIkRFQlVHXCJdID0gXCJERUJVR1wiO1xuICAgIExvZ0xldmVsW1wiV0FSTlwiXSA9IFwiV0FSTlwiO1xuICAgIExvZ0xldmVsW1wiRVJST1JcIl0gPSBcIkVSUk9SXCI7XG59KShMb2dMZXZlbCA9IGV4cG9ydHMuTG9nTGV2ZWwgfHwgKGV4cG9ydHMuTG9nTGV2ZWwgPSB7fSkpO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19hc3NpZ24gPSAodGhpcyAmJiB0aGlzLl9fYXNzaWduKSB8fCBmdW5jdGlvbiAoKSB7XG4gICAgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uKHQpIHtcbiAgICAgICAgZm9yICh2YXIgcywgaSA9IDEsIG4gPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgICBzID0gYXJndW1lbnRzW2ldO1xuICAgICAgICAgICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApKVxuICAgICAgICAgICAgICAgIHRbcF0gPSBzW3BdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0O1xuICAgIH07XG4gICAgcmV0dXJuIF9fYXNzaWduLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59O1xudmFyIF9fYXdhaXRlciA9ICh0aGlzICYmIHRoaXMuX19hd2FpdGVyKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgICB9KTtcbn07XG52YXIgX19nZW5lcmF0b3IgPSAodGhpcyAmJiB0aGlzLl9fZ2VuZXJhdG9yKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgYm9keSkge1xuICAgIHZhciBfID0geyBsYWJlbDogMCwgc2VudDogZnVuY3Rpb24oKSB7IGlmICh0WzBdICYgMSkgdGhyb3cgdFsxXTsgcmV0dXJuIHRbMV07IH0sIHRyeXM6IFtdLCBvcHM6IFtdIH0sIGYsIHksIHQsIGc7XG4gICAgcmV0dXJuIGcgPSB7IG5leHQ6IHZlcmIoMCksIFwidGhyb3dcIjogdmVyYigxKSwgXCJyZXR1cm5cIjogdmVyYigyKSB9LCB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgKGdbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpczsgfSksIGc7XG4gICAgZnVuY3Rpb24gdmVyYihuKSB7IHJldHVybiBmdW5jdGlvbiAodikgeyByZXR1cm4gc3RlcChbbiwgdl0pOyB9OyB9XG4gICAgZnVuY3Rpb24gc3RlcChvcCkge1xuICAgICAgICBpZiAoZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy5cIik7XG4gICAgICAgIHdoaWxlIChfKSB0cnkge1xuICAgICAgICAgICAgaWYgKGYgPSAxLCB5ICYmICh0ID0gb3BbMF0gJiAyID8geVtcInJldHVyblwiXSA6IG9wWzBdID8geVtcInRocm93XCJdIHx8ICgodCA9IHlbXCJyZXR1cm5cIl0pICYmIHQuY2FsbCh5KSwgMCkgOiB5Lm5leHQpICYmICEodCA9IHQuY2FsbCh5LCBvcFsxXSkpLmRvbmUpIHJldHVybiB0O1xuICAgICAgICAgICAgaWYgKHkgPSAwLCB0KSBvcCA9IFtvcFswXSAmIDIsIHQudmFsdWVdO1xuICAgICAgICAgICAgc3dpdGNoIChvcFswXSkge1xuICAgICAgICAgICAgICAgIGNhc2UgMDogY2FzZSAxOiB0ID0gb3A7IGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgNDogXy5sYWJlbCsrOyByZXR1cm4geyB2YWx1ZTogb3BbMV0sIGRvbmU6IGZhbHNlIH07XG4gICAgICAgICAgICAgICAgY2FzZSA1OiBfLmxhYmVsKys7IHkgPSBvcFsxXTsgb3AgPSBbMF07IGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGNhc2UgNzogb3AgPSBfLm9wcy5wb3AoKTsgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBpZiAoISh0ID0gXy50cnlzLCB0ID0gdC5sZW5ndGggPiAwICYmIHRbdC5sZW5ndGggLSAxXSkgJiYgKG9wWzBdID09PSA2IHx8IG9wWzBdID09PSAyKSkgeyBfID0gMDsgY29udGludWU7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSAzICYmICghdCB8fCAob3BbMV0gPiB0WzBdICYmIG9wWzFdIDwgdFszXSkpKSB7IF8ubGFiZWwgPSBvcFsxXTsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSA2ICYmIF8ubGFiZWwgPCB0WzFdKSB7IF8ubGFiZWwgPSB0WzFdOyB0ID0gb3A7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0ICYmIF8ubGFiZWwgPCB0WzJdKSB7IF8ubGFiZWwgPSB0WzJdOyBfLm9wcy5wdXNoKG9wKTsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRbMl0pIF8ub3BzLnBvcCgpO1xuICAgICAgICAgICAgICAgICAgICBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb3AgPSBib2R5LmNhbGwodGhpc0FyZywgXyk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHsgb3AgPSBbNiwgZV07IHkgPSAwOyB9IGZpbmFsbHkgeyBmID0gdCA9IDA7IH1cbiAgICAgICAgaWYgKG9wWzBdICYgNSkgdGhyb3cgb3BbMV07IHJldHVybiB7IHZhbHVlOiBvcFswXSA/IG9wWzFdIDogdm9pZCAwLCBkb25lOiB0cnVlIH07XG4gICAgfVxufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBFbnVtc18xID0gcmVxdWlyZShcIi4vQ29tbW9uL0VudW1zXCIpO1xudmFyIGF4aW9zXzEgPSByZXF1aXJlKFwiYXhpb3NcIik7XG52YXIgQnJvd3NlckluZm9fMSA9IHJlcXVpcmUoXCIuL1V0aWxzL0Jyb3dzZXJJbmZvXCIpO1xudmFyIENvbnN0YW50c18xID0gcmVxdWlyZShcIi4vQ29tbW9uL0NvbnN0YW50c1wiKTtcbnZhciBEZXZpY2VJbmZvXzEgPSByZXF1aXJlKFwiLi9VdGlscy9EZXZpY2VJbmZvXCIpO1xudmFyIExvY2FsZXNfMSA9IHJlcXVpcmUoXCIuL0NvbW1vbi9Mb2NhbGVzXCIpO1xudmFyIExvZ0xldmVsXzEgPSByZXF1aXJlKFwiLi9Nb2RlbC9Mb2dMZXZlbFwiKTtcbnZhciBFbnVtc18yID0gcmVxdWlyZShcIi4vQ29tbW9uL0VudW1zXCIpO1xudmFyIE9TSW5mb18xID0gcmVxdWlyZShcIi4vVXRpbHMvT1NJbmZvXCIpO1xudmFyIE9tbmljaGFubmVsRW5kcG9pbnRzXzEgPSByZXF1aXJlKFwiLi9Db21tb24vT21uaWNoYW5uZWxFbmRwb2ludHNcIik7XG52YXIgT21uaWNoYW5uZWxIVFRQSGVhZGVyc18xID0gcmVxdWlyZShcIi4vQ29tbW9uL09tbmljaGFubmVsSFRUUEhlYWRlcnNcIik7XG52YXIgVGltZXJfMSA9IHJlcXVpcmUoXCIuL1V0aWxzL1RpbWVyXCIpO1xudmFyIGF4aW9zUmV0cnlfMSA9IHJlcXVpcmUoXCIuL1V0aWxzL2F4aW9zUmV0cnlcIik7XG52YXIgdXVpZF8xID0gcmVxdWlyZShcIi4vVXRpbHMvdXVpZFwiKTtcbnZhciBTREsgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gU0RLKG9tbmljaGFubmVsQ29uZmlndXJhdGlvbiwgY29uZmlndXJhdGlvbiwgbG9nZ2VyKSB7XG4gICAgICAgIGlmIChjb25maWd1cmF0aW9uID09PSB2b2lkIDApIHsgY29uZmlndXJhdGlvbiA9IFNESy5kZWZhdWx0Q29uZmlndXJhdGlvbjsgfVxuICAgICAgICB0aGlzLm9tbmljaGFubmVsQ29uZmlndXJhdGlvbiA9IG9tbmljaGFubmVsQ29uZmlndXJhdGlvbjtcbiAgICAgICAgdGhpcy5jb25maWd1cmF0aW9uID0gY29uZmlndXJhdGlvbjtcbiAgICAgICAgdGhpcy5sb2dnZXIgPSBsb2dnZXI7XG4gICAgICAgIC8vIFNldHMgdG8gZGVmYXVsdCBjb25maWd1cmF0aW9uIGlmIHBhc3NlZCBjb25maWd1cmF0aW9uIGlzIGVtcHR5IG9yIGlzIG5vdCBhbiBvYmplY3RcbiAgICAgICAgaWYgKCFPYmplY3Qua2V5cyh0aGlzLmNvbmZpZ3VyYXRpb24pLmxlbmd0aCB8fCB0eXBlb2YgKGNvbmZpZ3VyYXRpb24pICE9PSBcIm9iamVjdFwiKSB7XG4gICAgICAgICAgICB0aGlzLmNvbmZpZ3VyYXRpb24gPSBTREsuZGVmYXVsdENvbmZpZ3VyYXRpb247XG4gICAgICAgIH1cbiAgICAgICAgLy8gVmFsaWRhdGUgU0RLIGNvbmZpZ1xuICAgICAgICBmb3IgKHZhciBfaSA9IDAsIF9hID0gT2JqZWN0LmtleXMoU0RLLmRlZmF1bHRDb25maWd1cmF0aW9uKTsgX2kgPCBfYS5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgICAgIHZhciBrZXkgPSBfYVtfaV07XG4gICAgICAgICAgICBpZiAoIXRoaXMuY29uZmlndXJhdGlvbi5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tcHJvdG90eXBlLWJ1aWx0aW5zXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTWlzc2luZyAnXCIgKyBrZXkgKyBcIicgaW4gU0RLQ29uZmlndXJhdGlvblwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBWYWxpZGF0ZSBjaGFubmVsSWRcbiAgICAgICAgdmFyIGNoYW5uZWxJZCA9IG9tbmljaGFubmVsQ29uZmlndXJhdGlvbi5jaGFubmVsSWQ7XG4gICAgICAgIGlmICghT2JqZWN0LnZhbHVlcyhFbnVtc18xLkNoYW5uZWxJZCkuaW5jbHVkZXMoY2hhbm5lbElkKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBjaGFubmVsSWRcIik7XG4gICAgICAgIH1cbiAgICAgICAgLy8gVmFsaWRhdGUgT0MgY29uZmlnXG4gICAgICAgIHZhciBjdXJyZW50T21uaWNoYW5uZWxDb25maWd1cmF0aW9uUGFyYW1ldGVycyA9IE9iamVjdC5rZXlzKG9tbmljaGFubmVsQ29uZmlndXJhdGlvbik7XG4gICAgICAgIGZvciAodmFyIF9iID0gMCwgX2MgPSBDb25zdGFudHNfMS5kZWZhdWx0LnJlcXVpcmVkT21uaWNoYW5uZWxDb25maWd1cmF0aW9uUGFyYW1ldGVyczsgX2IgPCBfYy5sZW5ndGg7IF9iKyspIHtcbiAgICAgICAgICAgIHZhciBrZXkgPSBfY1tfYl07XG4gICAgICAgICAgICBpZiAoIWN1cnJlbnRPbW5pY2hhbm5lbENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJzLmluY2x1ZGVzKGtleSkpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJNaXNzaW5nICdcIiArIGtleSArIFwiJyBpbiBPbW5pY2hhbm5lbENvbmZpZ3VyYXRpb25cIik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5saXZlQ2hhdFZlcnNpb24gPSBFbnVtc18xLkxpdmVDaGF0VmVyc2lvbi5WMTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogRmV0Y2hlcyBjaGF0IGNvbmZpZy5cbiAgICAgKiBAcGFyYW0gcmVxdWVzdElkOiBSZXF1ZXN0SWQgdG8gdXNlIHRvIGdldCBjaGF0IGNvbmZpZyAoT3B0aW9uYWwpLlxuICAgICAqL1xuICAgIFNESy5wcm90b3R5cGUuZ2V0Q2hhdENvbmZpZyA9IGZ1bmN0aW9uIChyZXF1ZXN0SWQsIGJ5cGFzc0NhY2hlKSB7XG4gICAgICAgIGlmIChieXBhc3NDYWNoZSA9PT0gdm9pZCAwKSB7IGJ5cGFzc0NhY2hlID0gZmFsc2U7IH1cbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIHRpbWVyLCBlbmRwb2ludCwgYXhpb3NJbnN0YW5jZSwgaGVhZGVycywgcmVzcG9uc2UsIGVsYXBzZWRUaW1lSW5NaWxsaXNlY29uZHMsIGRhdGE7XG4gICAgICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IodGhpcywgZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoIChfYS5sYWJlbCkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgICAgICB0aW1lciA9IFRpbWVyXzEuVGltZXIuVElNRVIoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmxvZ2dlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmxvZyhMb2dMZXZlbF8xLkxvZ0xldmVsLklORk8sIEVudW1zXzIuT0NTREtUZWxlbWV0cnlFdmVudC5HRVRDSEFUQ09ORklHLCB7IFJlcXVlc3RJZDogcmVxdWVzdElkIH0sIFwiR2V0IENoYXQgQ29uZmlnIFN0YXJ0ZWRcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXJlcXVlc3RJZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RJZCA9IHV1aWRfMS51dWlkdjQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZHBvaW50ID0gdGhpcy5vbW5pY2hhbm5lbENvbmZpZ3VyYXRpb24ub3JnVXJsICsgXCIvXCIgKyBPbW5pY2hhbm5lbEVuZHBvaW50c18xLmRlZmF1bHQuTGl2ZUNoYXRDb25maWdQYXRoICsgXCIvXCIgKyB0aGlzLm9tbmljaGFubmVsQ29uZmlndXJhdGlvbi5vcmdJZCArIFwiL1wiICsgdGhpcy5vbW5pY2hhbm5lbENvbmZpZ3VyYXRpb24ud2lkZ2V0SWQgKyBcIj9yZXF1ZXN0SWQ9XCIgKyByZXF1ZXN0SWQgKyBcIiZjaGFubmVsSWQ9XCIgKyB0aGlzLm9tbmljaGFubmVsQ29uZmlndXJhdGlvbi5jaGFubmVsSWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBheGlvc0luc3RhbmNlID0gYXhpb3NfMS5kZWZhdWx0LmNyZWF0ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYXhpb3NSZXRyeV8xLmRlZmF1bHQoYXhpb3NJbnN0YW5jZSwgeyByZXRyaWVzOiB0aGlzLmNvbmZpZ3VyYXRpb24ubWF4UmVxdWVzdFJldHJpZXNPbkZhaWx1cmUgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzID0ge307XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoYnlwYXNzQ2FjaGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzID0gX19hc3NpZ24oX19hc3NpZ24oe30sIENvbnN0YW50c18xLmRlZmF1bHQuYnlwYXNzQ2FjaGVIZWFkZXJzKSwgaGVhZGVycyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzQgLyp5aWVsZCovLCBheGlvc0luc3RhbmNlLmdldChlbmRwb2ludCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiBoZWFkZXJzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXTtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UgPSBfYS5zZW50KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbGFwc2VkVGltZUluTWlsbGlzZWNvbmRzID0gdGltZXIubWlsbGlTZWNvbmRzRWxhcHNlZDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgPSByZXNwb25zZS5kYXRhO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEuTGl2ZUNoYXRWZXJzaW9uICYmIGRhdGEuTGl2ZUNoYXRWZXJzaW9uID09PSBFbnVtc18xLkxpdmVDaGF0VmVyc2lvbi5WMikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubGl2ZUNoYXRWZXJzaW9uID0gZGF0YS5MaXZlQ2hhdFZlcnNpb247XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5sb2dnZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvZ2dlci5sb2coTG9nTGV2ZWxfMS5Mb2dMZXZlbC5JTkZPLCBFbnVtc18yLk9DU0RLVGVsZW1ldHJ5RXZlbnQuR0VUQ0hBVENPTkZJR1NVQ0NFU1MsIHsgUmVxdWVzdElkOiByZXF1ZXN0SWQsIFJlZ2lvbjogcmVzcG9uc2UuZGF0YS5SZWdpb24sIEVsYXBzZWRUaW1lSW5NaWxsaXNlY29uZHM6IGVsYXBzZWRUaW1lSW5NaWxsaXNlY29uZHMsIFRyYW5zYWN0aW9uSWQ6IHJlc3BvbnNlLmhlYWRlcnNbXCJ0cmFuc2FjdGlvbi1pZFwiXSB9LCBcIkdldCBDaGF0IGNvbmZpZyBzdWNjZWVkZWRcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qLywgZGF0YV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogRmV0Y2hlcyBMV0kgZGV0YWlscy5cbiAgICAgKiBAcGFyYW0gcmVxdWVzdElkOiBSZXF1ZXN0SWQgdG8gdXNlIHRvIGdldCBjaGF0IGNvbmZpZyAoT3B0aW9uYWwpLlxuICAgICAqIEBwYXJhbSBnZXRMV0lEZXRhaWxzT3B0aW9uYWxQYXJhbXM6IE9wdGlvbmFsIHBhcmFtZXRlcnMgZm9yIGdldCBMV0kgRGV0YWlscy5cbiAgICAgKi9cbiAgICBTREsucHJvdG90eXBlLmdldExXSURldGFpbHMgPSBmdW5jdGlvbiAocmVxdWVzdElkLCBnZXRMV0lEZXRhaWxzT3B0aW9uYWxQYXJhbXMpIHtcbiAgICAgICAgaWYgKGdldExXSURldGFpbHNPcHRpb25hbFBhcmFtcyA9PT0gdm9pZCAwKSB7IGdldExXSURldGFpbHNPcHRpb25hbFBhcmFtcyA9IHt9OyB9XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciB0aW1lciwgZW5kcG9pbnQsIGF4aW9zSW5zdGFuY2UsIGF1dGhlbnRpY2F0ZWRVc2VyVG9rZW4sIHJlY29ubmVjdElkLCBoZWFkZXJzLCBvcHRpb25zO1xuICAgICAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgICAgICB0aW1lciA9IFRpbWVyXzEuVGltZXIuVElNRVIoKTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5sb2dnZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2dnZXIubG9nKExvZ0xldmVsXzEuTG9nTGV2ZWwuSU5GTywgRW51bXNfMi5PQ1NES1RlbGVtZXRyeUV2ZW50LkdFVExXSVNUQVRVU1NUQVJURUQsIHsgUmVxdWVzdElkOiByZXF1ZXN0SWQgfSwgXCJHZXQgTFdJIERldGFpbHMgU3RhcnRlZFwiKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKCFyZXF1ZXN0SWQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVxdWVzdElkID0gdXVpZF8xLnV1aWR2NCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbmRwb2ludCA9IHRoaXMub21uaWNoYW5uZWxDb25maWd1cmF0aW9uLm9yZ1VybCArIFwiL1wiICsgT21uaWNoYW5uZWxFbmRwb2ludHNfMS5kZWZhdWx0LkxpdmVDaGF0TGl2ZVdvcmtJdGVtRGV0YWlsc1BhdGggKyBcIi9cIiArIHRoaXMub21uaWNoYW5uZWxDb25maWd1cmF0aW9uLm9yZ0lkICsgXCIvXCIgKyB0aGlzLm9tbmljaGFubmVsQ29uZmlndXJhdGlvbi53aWRnZXRJZCArIFwiL1wiICsgcmVxdWVzdElkO1xuICAgICAgICAgICAgICAgIGF4aW9zSW5zdGFuY2UgPSBheGlvc18xLmRlZmF1bHQuY3JlYXRlKCk7XG4gICAgICAgICAgICAgICAgYXhpb3NSZXRyeV8xLmRlZmF1bHQoYXhpb3NJbnN0YW5jZSwgeyByZXRyaWVzOiB0aGlzLmNvbmZpZ3VyYXRpb24ubWF4UmVxdWVzdFJldHJpZXNPbkZhaWx1cmUgfSk7XG4gICAgICAgICAgICAgICAgYXV0aGVudGljYXRlZFVzZXJUb2tlbiA9IGdldExXSURldGFpbHNPcHRpb25hbFBhcmFtcy5hdXRoZW50aWNhdGVkVXNlclRva2VuLCByZWNvbm5lY3RJZCA9IGdldExXSURldGFpbHNPcHRpb25hbFBhcmFtcy5yZWNvbm5lY3RJZDtcbiAgICAgICAgICAgICAgICBoZWFkZXJzID0gQ29uc3RhbnRzXzEuZGVmYXVsdC5kZWZhdWx0SGVhZGVycztcbiAgICAgICAgICAgICAgICAvLyB1cGRhdGVkIGF1dGggZW5kcG9pbnQgZm9yIGF1dGhlbnRpY2F0ZWQgY2hhdHMgYW5kIGFkZCBhdXRoIHRva2VuIGluIGhlYWRlclxuICAgICAgICAgICAgICAgIGlmIChhdXRoZW50aWNhdGVkVXNlclRva2VuKSB7XG4gICAgICAgICAgICAgICAgICAgIGVuZHBvaW50ID0gdGhpcy5vbW5pY2hhbm5lbENvbmZpZ3VyYXRpb24ub3JnVXJsICsgXCIvXCIgKyBPbW5pY2hhbm5lbEVuZHBvaW50c18xLmRlZmF1bHQuTGl2ZUNoYXRBdXRoTGl2ZVdvcmtJdGVtRGV0YWlsc1BhdGggKyBcIi9cIiArIHRoaXMub21uaWNoYW5uZWxDb25maWd1cmF0aW9uLm9yZ0lkICsgXCIvXCIgKyB0aGlzLm9tbmljaGFubmVsQ29uZmlndXJhdGlvbi53aWRnZXRJZCArIFwiL1wiICsgcmVxdWVzdElkO1xuICAgICAgICAgICAgICAgICAgICBoZWFkZXJzW09tbmljaGFubmVsSFRUUEhlYWRlcnNfMS5kZWZhdWx0LmF1dGhlbnRpY2F0ZWRVc2VyVG9rZW5dID0gYXV0aGVudGljYXRlZFVzZXJUb2tlbjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gQXBwZW5kIHJlY29ubmVjdCBpZCBvbiB0aGUgZW5kcG9pbnQgaWYgdmFpbGFibGVcbiAgICAgICAgICAgICAgICBpZiAocmVjb25uZWN0SWQpIHtcbiAgICAgICAgICAgICAgICAgICAgZW5kcG9pbnQgKz0gXCIvXCIgKyByZWNvbm5lY3RJZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZW5kcG9pbnQgKz0gXCI/Y2hhbm5lbElkPVwiICsgdGhpcy5vbW5pY2hhbm5lbENvbmZpZ3VyYXRpb24uY2hhbm5lbElkO1xuICAgICAgICAgICAgICAgIG9wdGlvbnMgPSB7XG4gICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IGhlYWRlcnMsXG4gICAgICAgICAgICAgICAgICAgIG1ldGhvZDogXCJHRVRcIixcbiAgICAgICAgICAgICAgICAgICAgdXJsOiBlbmRwb2ludFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi8sIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsgcmV0dXJuIF9fYXdhaXRlcihfdGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSwgZWxhcHNlZFRpbWVJbk1pbGxpc2Vjb25kcywgZGF0YSwgZXJyb3JfMSwgZWxhcHNlZFRpbWVJbk1pbGxpc2Vjb25kcztcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKF9hLmxhYmVsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9hLnRyeXMucHVzaChbMCwgMiwgLCAzXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzQgLyp5aWVsZCovLCBheGlvc0luc3RhbmNlKG9wdGlvbnMpXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UgPSBfYS5zZW50KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGFwc2VkVGltZUluTWlsbGlzZWNvbmRzID0gdGltZXIubWlsbGlTZWNvbmRzRWxhcHNlZDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgPSByZXNwb25zZS5kYXRhO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubG9nZ2VyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2dnZXIubG9nKExvZ0xldmVsXzEuTG9nTGV2ZWwuSU5GTywgRW51bXNfMi5PQ1NES1RlbGVtZXRyeUV2ZW50LkdFVExXSVNUQVRVU1NVQ0NFRURFRCwgeyBSZXF1ZXN0SWQ6IHJlcXVlc3RJZCwgUmVnaW9uOiByZXNwb25zZS5kYXRhLlJlZ2lvbiwgRWxhcHNlZFRpbWVJbk1pbGxpc2Vjb25kczogZWxhcHNlZFRpbWVJbk1pbGxpc2Vjb25kcywgVHJhbnNhY3Rpb25JZDogcmVzcG9uc2UuaGVhZGVyc1tcInRyYW5zYWN0aW9uLWlkXCJdIH0sIFwiR2V0IExXSSBEZXRhaWxzIHN1Y2NlZWRlZFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoZGF0YSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzMgLypicmVhayovLCAzXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JfMSA9IF9hLnNlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsYXBzZWRUaW1lSW5NaWxsaXNlY29uZHMgPSB0aW1lci5taWxsaVNlY29uZHNFbGFwc2VkO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubG9nZ2VyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2dnZXIubG9nKExvZ0xldmVsXzEuTG9nTGV2ZWwuRVJST1IsIEVudW1zXzIuT0NTREtUZWxlbWV0cnlFdmVudC5HRVRMV0lTVEFUVVNGQUlMRUQsIHsgUmVxdWVzdElkOiByZXF1ZXN0SWQsIEV4Y2VwdGlvbkRldGFpbHM6IGVycm9yXzEsIEVsYXBzZWRUaW1lSW5NaWxsaXNlY29uZHM6IGVsYXBzZWRUaW1lSW5NaWxsaXNlY29uZHMgfSwgXCJHZXQgTFdJIERldGFpbHMgZmFpbGVkXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzMgLypicmVhayovLCAzXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAzOiByZXR1cm4gWzIgLypyZXR1cm4qL107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH0pOyB9KV07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBGZXRjaGVzIHRoZSBjaGF0IHRva2VuIGZyb20gT21uaWNoYW5uZWwgdG8gam9pbiBUMSB0aHJlYWQuXG4gICAgICogQHBhcmFtIHJlcXVlc3RJZDogUmVxdWVzdElkIHRvIHVzZSBmb3IgZ2V0Y2hhdHRva2VuIChPcHRpb25hbCkuXG4gICAgICogQHBhcmFtIGdldENoYXRUb2tlbk9wdGlvbmFsUGFyYW1zOiBPcHRpb25hbCBwYXJhbWV0ZXJzIGZvciBnZXQgY2hhdCB0b2tlbi5cbiAgICAgKi9cbiAgICBTREsucHJvdG90eXBlLmdldENoYXRUb2tlbiA9IGZ1bmN0aW9uIChyZXF1ZXN0SWQsIGdldENoYXRUb2tlbk9wdGlvbmFsUGFyYW1zLCBjdXJyZW50UmV0cnlDb3VudCkge1xuICAgICAgICBpZiAoZ2V0Q2hhdFRva2VuT3B0aW9uYWxQYXJhbXMgPT09IHZvaWQgMCkgeyBnZXRDaGF0VG9rZW5PcHRpb25hbFBhcmFtcyA9IHt9OyB9XG4gICAgICAgIGlmIChjdXJyZW50UmV0cnlDb3VudCA9PT0gdm9pZCAwKSB7IGN1cnJlbnRSZXRyeUNvdW50ID0gMDsgfVxuICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgdGltZXIsIHJlY29ubmVjdElkLCBhdXRoZW50aWNhdGVkVXNlclRva2VuLCBjdXJyZW50TGl2ZUNoYXRWZXJzaW9uLCBoZWFkZXJzLCBlbmRwb2ludCwgb3B0aW9ucywgYXhpb3NJbnN0YW5jZTtcbiAgICAgICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IodGhpcywgZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgICAgICAgICAgdGltZXIgPSBUaW1lcl8xLlRpbWVyLlRJTUVSKCk7XG4gICAgICAgICAgICAgICAgcmVjb25uZWN0SWQgPSBnZXRDaGF0VG9rZW5PcHRpb25hbFBhcmFtcy5yZWNvbm5lY3RJZCwgYXV0aGVudGljYXRlZFVzZXJUb2tlbiA9IGdldENoYXRUb2tlbk9wdGlvbmFsUGFyYW1zLmF1dGhlbnRpY2F0ZWRVc2VyVG9rZW4sIGN1cnJlbnRMaXZlQ2hhdFZlcnNpb24gPSBnZXRDaGF0VG9rZW5PcHRpb25hbFBhcmFtcy5jdXJyZW50TGl2ZUNoYXRWZXJzaW9uO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmxvZ2dlcikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmxvZ2dlci5sb2coTG9nTGV2ZWxfMS5Mb2dMZXZlbC5JTkZPLCBFbnVtc18yLk9DU0RLVGVsZW1ldHJ5RXZlbnQuR0VUQ0hBVFRPS0VOU1RBUlRFRCwgeyBSZXF1ZXN0SWQ6IHJlcXVlc3RJZCB9LCBcIkdldCBDaGF0IFRva2VuIFN0YXJ0ZWRcIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChjdXJyZW50UmV0cnlDb3VudCA8IDApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBjdXJyZW50UmV0cnlDb3VudFwiKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKCFyZXF1ZXN0SWQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVxdWVzdElkID0gdXVpZF8xLnV1aWR2NCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBoZWFkZXJzID0gQ29uc3RhbnRzXzEuZGVmYXVsdC5kZWZhdWx0SGVhZGVycztcbiAgICAgICAgICAgICAgICBlbmRwb2ludCA9IHRoaXMub21uaWNoYW5uZWxDb25maWd1cmF0aW9uLm9yZ1VybCArIFwiL1wiICsgT21uaWNoYW5uZWxFbmRwb2ludHNfMS5kZWZhdWx0LkxpdmVDaGF0R2V0Q2hhdFRva2VuUGF0aCArIFwiL1wiICsgdGhpcy5vbW5pY2hhbm5lbENvbmZpZ3VyYXRpb24ub3JnSWQgKyBcIi9cIiArIHRoaXMub21uaWNoYW5uZWxDb25maWd1cmF0aW9uLndpZGdldElkICsgXCIvXCIgKyByZXF1ZXN0SWQ7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubGl2ZUNoYXRWZXJzaW9uID09PSBFbnVtc18xLkxpdmVDaGF0VmVyc2lvbi5WMiB8fCAoY3VycmVudExpdmVDaGF0VmVyc2lvbiAmJiBjdXJyZW50TGl2ZUNoYXRWZXJzaW9uID09PSBFbnVtc18xLkxpdmVDaGF0VmVyc2lvbi5WMikpIHtcbiAgICAgICAgICAgICAgICAgICAgZW5kcG9pbnQgPSB0aGlzLm9tbmljaGFubmVsQ29uZmlndXJhdGlvbi5vcmdVcmwgKyBcIi9cIiArIE9tbmljaGFubmVsRW5kcG9pbnRzXzEuZGVmYXVsdC5MaXZlQ2hhdHYyR2V0Q2hhdFRva2VuUGF0aCArIFwiL1wiICsgdGhpcy5vbW5pY2hhbm5lbENvbmZpZ3VyYXRpb24ub3JnSWQgKyBcIi9cIiArIHRoaXMub21uaWNoYW5uZWxDb25maWd1cmF0aW9uLndpZGdldElkICsgXCIvXCIgKyByZXF1ZXN0SWQ7XG4gICAgICAgICAgICAgICAgICAgIGlmIChhdXRoZW50aWNhdGVkVXNlclRva2VuKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRwb2ludCA9IHRoaXMub21uaWNoYW5uZWxDb25maWd1cmF0aW9uLm9yZ1VybCArIFwiL1wiICsgT21uaWNoYW5uZWxFbmRwb2ludHNfMS5kZWZhdWx0LkxpdmVDaGF0djJBdXRoR2V0Q2hhdFRva2VuUGF0aCArIFwiL1wiICsgdGhpcy5vbW5pY2hhbm5lbENvbmZpZ3VyYXRpb24ub3JnSWQgKyBcIi9cIiArIHRoaXMub21uaWNoYW5uZWxDb25maWd1cmF0aW9uLndpZGdldElkICsgXCIvXCIgKyByZXF1ZXN0SWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzW09tbmljaGFubmVsSFRUUEhlYWRlcnNfMS5kZWZhdWx0LmF1dGhlbnRpY2F0ZWRVc2VyVG9rZW5dID0gYXV0aGVudGljYXRlZFVzZXJUb2tlbjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGF1dGhlbnRpY2F0ZWRVc2VyVG9rZW4pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZHBvaW50ID0gdGhpcy5vbW5pY2hhbm5lbENvbmZpZ3VyYXRpb24ub3JnVXJsICsgXCIvXCIgKyBPbW5pY2hhbm5lbEVuZHBvaW50c18xLmRlZmF1bHQuTGl2ZUNoYXRBdXRoR2V0Q2hhdFRva2VuUGF0aCArIFwiL1wiICsgdGhpcy5vbW5pY2hhbm5lbENvbmZpZ3VyYXRpb24ub3JnSWQgKyBcIi9cIiArIHRoaXMub21uaWNoYW5uZWxDb25maWd1cmF0aW9uLndpZGdldElkICsgXCIvXCIgKyByZXF1ZXN0SWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzW09tbmljaGFubmVsSFRUUEhlYWRlcnNfMS5kZWZhdWx0LmF1dGhlbnRpY2F0ZWRVc2VyVG9rZW5dID0gYXV0aGVudGljYXRlZFVzZXJUb2tlbjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAocmVjb25uZWN0SWQpIHtcbiAgICAgICAgICAgICAgICAgICAgZW5kcG9pbnQgKz0gXCIvXCIgKyByZWNvbm5lY3RJZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZW5kcG9pbnQgKz0gXCI/Y2hhbm5lbElkPVwiICsgdGhpcy5vbW5pY2hhbm5lbENvbmZpZ3VyYXRpb24uY2hhbm5lbElkO1xuICAgICAgICAgICAgICAgIG9wdGlvbnMgPSB7XG4gICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IGhlYWRlcnMsXG4gICAgICAgICAgICAgICAgICAgIG1ldGhvZDogXCJHRVRcIixcbiAgICAgICAgICAgICAgICAgICAgdXJsOiBlbmRwb2ludFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgYXhpb3NJbnN0YW5jZSA9IGF4aW9zXzEuZGVmYXVsdC5jcmVhdGUoKTtcbiAgICAgICAgICAgICAgICBheGlvc1JldHJ5XzEuZGVmYXVsdChheGlvc0luc3RhbmNlLCB7IHJldHJpZXM6IHRoaXMuY29uZmlndXJhdGlvbi5tYXhSZXF1ZXN0UmV0cmllc09uRmFpbHVyZSB9KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qLywgbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgeyByZXR1cm4gX19hd2FpdGVyKF90aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlLCBlbGFwc2VkVGltZUluTWlsbGlzZWNvbmRzLCBkYXRhLCBlcnJvcl8yLCBlbGFwc2VkVGltZUluTWlsbGlzZWNvbmRzO1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKF9hLmxhYmVsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9hLnRyeXMucHVzaChbMCwgMiwgLCAzXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzQgLyp5aWVsZCovLCBheGlvc0luc3RhbmNlKG9wdGlvbnMpXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UgPSBfYS5zZW50KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGFwc2VkVGltZUluTWlsbGlzZWNvbmRzID0gdGltZXIubWlsbGlTZWNvbmRzRWxhcHNlZDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgPSByZXNwb25zZS5kYXRhO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVzb2x2ZXMgb25seSBpZiBpdCBjb250YWlucyBjaGF0IHRva2VuIHJlc3BvbnNlIHdoaWNoIG9ubHkgaGFwcGVucyBvbiBzdGF0dXMgMjAwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEucmVxdWVzdElkID0gcmVxdWVzdElkO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmxvZ2dlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvZ2dlci5sb2coTG9nTGV2ZWxfMS5Mb2dMZXZlbC5JTkZPLCBFbnVtc18yLk9DU0RLVGVsZW1ldHJ5RXZlbnQuR0VUQ0hBVFRPS0VOU1VDQ0VFREVELCB7IFJlcXVlc3RJZDogcmVxdWVzdElkLCBSZWdpb246IHJlc3BvbnNlLmRhdGEuUmVnaW9uLCBFbGFwc2VkVGltZUluTWlsbGlzZWNvbmRzOiBlbGFwc2VkVGltZUluTWlsbGlzZWNvbmRzLCBUcmFuc2FjdGlvbklkOiByZXNwb25zZS5oZWFkZXJzW1widHJhbnNhY3Rpb24taWRcIl0gfSwgXCJHZXQgQ2hhdCBUb2tlbiBTdWNjZWVkZWRcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoZGF0YSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi9dO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTm8gY29udGVudCBmb3IgcmVjb25uZWN0IGNoYXQgY2FzZSBzaG91bGRuJ3QgYmUgcmV0cmllZC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZWNvbm5lY3RJZCAmJiByZXNwb25zZS5zdGF0dXMgPT09IENvbnN0YW50c18xLmRlZmF1bHQubm9Db250ZW50U3RhdHVzQ29kZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChyZXNwb25zZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi9dO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFszIC8qYnJlYWsqLywgM107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yXzIgPSBfYS5zZW50KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGFwc2VkVGltZUluTWlsbGlzZWNvbmRzID0gdGltZXIubWlsbGlTZWNvbmRzRWxhcHNlZDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmxvZ2dlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmxvZyhMb2dMZXZlbF8xLkxvZ0xldmVsLkVSUk9SLCBFbnVtc18yLk9DU0RLVGVsZW1ldHJ5RXZlbnQuR0VUQ0hBVFRPS0VORkFJTEVELCB7IFJlcXVlc3RJZDogcmVxdWVzdElkLCBFeGNlcHRpb25EZXRhaWxzOiBlcnJvcl8yLCBFbGFwc2VkVGltZUluTWlsbGlzZWNvbmRzOiBlbGFwc2VkVGltZUluTWlsbGlzZWNvbmRzIH0sIFwiR2V0IENoYXQgVG9rZW4gRmFpbGVkXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGVycm9yXzIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi9dO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBCYXNlIGNhc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjdXJyZW50UmV0cnlDb3VudCArIDEgPj0gdGhpcy5jb25maWd1cmF0aW9uLmdldENoYXRUb2tlblJldHJ5Q291bnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWplY3QobmV3IEVycm9yKFwiVGhlIHJldHJ5IGZvciBnZXRjaGF0dG9rZW4gaGFzIGV4Y2VlZGVkIGl0cyBtYXggdmFsdWUgb2YgXCIgKyB0aGlzLmNvbmZpZ3VyYXRpb24uZ2V0Q2hhdFRva2VuUmV0cnlDb3VudCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJldHJpZXMgdW50aWwgaXQgcmVhY2hlcyBpdHMgbGltaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF90aGlzLmdldENoYXRUb2tlbihyZXF1ZXN0SWQsIGdldENoYXRUb2tlbk9wdGlvbmFsUGFyYW1zLCBjdXJyZW50UmV0cnlDb3VudCArIDEpLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7IHJldHVybiByZXNvbHZlKHJlc3BvbnNlKTsgfSkuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7IHJldHVybiByZWplY3QoZXJyb3IpOyB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHRoaXMuY29uZmlndXJhdGlvbi5nZXRDaGF0VG9rZW5UaW1lQmV0d2VlblJldHJpZXNPbkZhaWx1cmUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi9dO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9KTsgfSldO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogRmV0Y2hlcyB0aGUgcmVjb25uZWN0YWJsZSBjaGF0cyBmcm9tIG9tbmljaGFubmVsIGZyb20gdGhlIGdpdmVuIHVzZXIgaW5mb3JtYXRpb24gaW4gSldUIHRva2VuKGNsYWltIG5hbWU6IHN1YikuXG4gICAgICogQHBhcmFtIHJlY29ubmVjdGFibGVDaGF0c1BhcmFtcyBNYW5kYXRlIHBhcmFtZXRlcnMgZm9yIGdldCByZWNvbm5lY3RhYmxlIGNoYXRzLlxuICAgICAqL1xuICAgIFNESy5wcm90b3R5cGUuZ2V0UmVjb25uZWN0YWJsZUNoYXRzID0gZnVuY3Rpb24gKHJlY29ubmVjdGFibGVDaGF0c1BhcmFtcykge1xuICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgdGltZXIsIGF1dGhlbnRpY2F0ZWRVc2VyVG9rZW4sIGVuZHBvaW50LCBoZWFkZXJzLCBvcHRpb25zLCBheGlvc0luc3RhbmNlO1xuICAgICAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgICAgICB0aW1lciA9IFRpbWVyXzEuVGltZXIuVElNRVIoKTtcbiAgICAgICAgICAgICAgICBhdXRoZW50aWNhdGVkVXNlclRva2VuID0gcmVjb25uZWN0YWJsZUNoYXRzUGFyYW1zLmF1dGhlbnRpY2F0ZWRVc2VyVG9rZW47XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubG9nZ2VyKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmxvZyhMb2dMZXZlbF8xLkxvZ0xldmVsLklORk8sIEVudW1zXzIuT0NTREtUZWxlbWV0cnlFdmVudC5HRVRSRUNPTk5FQ1RBQkxFQ0hBVFMsIFwiR2V0IFJlY29ubmVjdGFibGUgY2hhdCBTdGFydGVkXCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbmRwb2ludCA9IHRoaXMub21uaWNoYW5uZWxDb25maWd1cmF0aW9uLm9yZ1VybCArIFwiL1wiICsgT21uaWNoYW5uZWxFbmRwb2ludHNfMS5kZWZhdWx0LkxpdmVDaGF0R2V0UmVjb25uZWN0YWJsZUNoYXRzUGF0aCArIFwiL1wiICsgdGhpcy5vbW5pY2hhbm5lbENvbmZpZ3VyYXRpb24ub3JnSWQgKyBcIi9cIiArIHRoaXMub21uaWNoYW5uZWxDb25maWd1cmF0aW9uLndpZGdldElkICsgXCIvXCIgKyB0aGlzLm9tbmljaGFubmVsQ29uZmlndXJhdGlvbi5vcmdJZCArIFwiP2NoYW5uZWxJZD1cIiArIHRoaXMub21uaWNoYW5uZWxDb25maWd1cmF0aW9uLmNoYW5uZWxJZDtcbiAgICAgICAgICAgICAgICBoZWFkZXJzID0gQ29uc3RhbnRzXzEuZGVmYXVsdC5kZWZhdWx0SGVhZGVycztcbiAgICAgICAgICAgICAgICBoZWFkZXJzW09tbmljaGFubmVsSFRUUEhlYWRlcnNfMS5kZWZhdWx0LmF1dGhlbnRpY2F0ZWRVc2VyVG9rZW5dID0gYXV0aGVudGljYXRlZFVzZXJUb2tlbjtcbiAgICAgICAgICAgICAgICBvcHRpb25zID0ge1xuICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiBoZWFkZXJzLFxuICAgICAgICAgICAgICAgICAgICBtZXRob2Q6IFwiR0VUXCIsXG4gICAgICAgICAgICAgICAgICAgIHVybDogZW5kcG9pbnRcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGF4aW9zSW5zdGFuY2UgPSBheGlvc18xLmRlZmF1bHQuY3JlYXRlKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi8sIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsgcmV0dXJuIF9fYXdhaXRlcihfdGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSwgZWxhcHNlZFRpbWVJbk1pbGxpc2Vjb25kcywgZGF0YSwgZXJyb3JfMywgZWxhcHNlZFRpbWVJbk1pbGxpc2Vjb25kcztcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKF9hLmxhYmVsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9hLnRyeXMucHVzaChbMCwgMiwgLCAzXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzQgLyp5aWVsZCovLCBheGlvc0luc3RhbmNlKG9wdGlvbnMpXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UgPSBfYS5zZW50KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGFwc2VkVGltZUluTWlsbGlzZWNvbmRzID0gdGltZXIubWlsbGlTZWNvbmRzRWxhcHNlZDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgPSByZXNwb25zZS5kYXRhO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVzb2x2ZXMgb25seSBpZiBpdCBjb250YWlucyByZWNvbm5lY3RhYmxlIGNoYXRzIHJlc3BvbnNlIHdoaWNoIG9ubHkgaGFwcGVucyBvbiBzdGF0dXMgMjAwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmxvZ2dlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvZ2dlci5sb2coTG9nTGV2ZWxfMS5Mb2dMZXZlbC5JTkZPLCBFbnVtc18yLk9DU0RLVGVsZW1ldHJ5RXZlbnQuR0VUUkVDT05ORUNUQUJMRUNIQVRTLCB7IFJlZ2lvbjogcmVzcG9uc2UuZGF0YS5SZWdpb24sIEVsYXBzZWRUaW1lSW5NaWxsaXNlY29uZHM6IGVsYXBzZWRUaW1lSW5NaWxsaXNlY29uZHMsIFRyYW5zYWN0aW9uSWQ6IHJlc3BvbnNlLmhlYWRlcnNbQ29uc3RhbnRzXzEuZGVmYXVsdC50cmFuc2FjdGlvbmlkXSB9LCBcIkdldCBSZWNvbm5lY3RhYmxlIENoYXRzIFN1Y2NlZWRlZCBhbmQgb2xkIHNlc3Npb24gcmV0dXJuZWRcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoZGF0YSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi9dO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTm8gZGF0YSBmb3VuZCBpbiB0aGUgb2xkIHNlc3Npb25zIHNvIHJldHVybmluZyBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qL107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yXzMgPSBfYS5zZW50KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGFwc2VkVGltZUluTWlsbGlzZWNvbmRzID0gdGltZXIubWlsbGlTZWNvbmRzRWxhcHNlZDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmxvZ2dlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmxvZyhMb2dMZXZlbF8xLkxvZ0xldmVsLkVSUk9SLCBFbnVtc18yLk9DU0RLVGVsZW1ldHJ5RXZlbnQuR0VUQ0hBVFRPS0VORkFJTEVELCB7IEV4Y2VwdGlvbkRldGFpbHM6IGVycm9yXzMsIEVsYXBzZWRUaW1lSW5NaWxsaXNlY29uZHM6IGVsYXBzZWRUaW1lSW5NaWxsaXNlY29uZHMgfSwgXCJHZXQgUmVjb25uZWN0YWJsZSBDaGF0cyBGYWlsZWRcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWplY3QoZXJyb3JfMyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qL107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMzogcmV0dXJuIFsyIC8qcmV0dXJuKi9dO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9KTsgfSldO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgLyoqXG4gICAqIEZldGNoZXMgdGhlIHJlY29ubmVjdGFibGUgY2hhdHMgZnJvbSBvbW5pY2hhbm5lbCBmcm9tIHRoZSBnaXZlbiB1c2VyIGluZm9ybWF0aW9uIGluIEpXVCB0b2tlbihjbGFpbSBuYW1lOiBzdWIpLlxuICAgKiBAcGFyYW0gcmVjb25uZWN0YWJsZUNoYXRzUGFyYW1zIE1hbmRhdGUgcGFyYW1ldGVycyBmb3IgZ2V0IHJlY29ubmVjdGFibGUgY2hhdHMuXG4gICAqL1xuICAgIFNESy5wcm90b3R5cGUuZ2V0UmVjb25uZWN0QXZhaWxhYmlsaXR5ID0gZnVuY3Rpb24gKHJlY29ubmVjdElkKSB7XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciB0aW1lciwgZW5kcG9pbnQsIGhlYWRlcnMsIG9wdGlvbnMsIGF4aW9zSW5zdGFuY2U7XG4gICAgICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgICAgIHRpbWVyID0gVGltZXJfMS5UaW1lci5USU1FUigpO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmxvZ2dlcikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmxvZ2dlci5sb2coTG9nTGV2ZWxfMS5Mb2dMZXZlbC5JTkZPLCBFbnVtc18yLk9DU0RLVGVsZW1ldHJ5RXZlbnQuR0VUUkVDT05ORUNUQVZBSUxBQklMSVRZLCBcIkdldCBSZWNvbm5lY3QgYXZhaWxhYmlsaXR5IHN0YXJ0ZWRcIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVuZHBvaW50ID0gdGhpcy5vbW5pY2hhbm5lbENvbmZpZ3VyYXRpb24ub3JnVXJsICsgXCIvXCIgKyBPbW5pY2hhbm5lbEVuZHBvaW50c18xLmRlZmF1bHQuTGl2ZUNoYXRSZWNvbm5lY3RBdmFpbGFiaWxpdHlQYXRoICsgXCIvXCIgKyB0aGlzLm9tbmljaGFubmVsQ29uZmlndXJhdGlvbi5vcmdJZCArIFwiL1wiICsgdGhpcy5vbW5pY2hhbm5lbENvbmZpZ3VyYXRpb24ud2lkZ2V0SWQgKyBcIi9cIiArIHJlY29ubmVjdElkO1xuICAgICAgICAgICAgICAgIGhlYWRlcnMgPSBDb25zdGFudHNfMS5kZWZhdWx0LmRlZmF1bHRIZWFkZXJzO1xuICAgICAgICAgICAgICAgIG9wdGlvbnMgPSB7XG4gICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IGhlYWRlcnMsXG4gICAgICAgICAgICAgICAgICAgIG1ldGhvZDogXCJHRVRcIixcbiAgICAgICAgICAgICAgICAgICAgdXJsOiBlbmRwb2ludFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgYXhpb3NJbnN0YW5jZSA9IGF4aW9zXzEuZGVmYXVsdC5jcmVhdGUoKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qLywgbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgeyByZXR1cm4gX19hd2FpdGVyKF90aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlLCBlbGFwc2VkVGltZUluTWlsbGlzZWNvbmRzLCBkYXRhLCBlcnJvcl80LCBlbGFwc2VkVGltZUluTWlsbGlzZWNvbmRzO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoX2EubGFiZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2EudHJ5cy5wdXNoKFswLCAyLCAsIDNdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbNCAvKnlpZWxkKi8sIGF4aW9zSW5zdGFuY2Uob3B0aW9ucyldO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZSA9IF9hLnNlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsYXBzZWRUaW1lSW5NaWxsaXNlY29uZHMgPSB0aW1lci5taWxsaVNlY29uZHNFbGFwc2VkO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSA9IHJlc3BvbnNlLmRhdGE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmxvZ2dlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvZ2dlci5sb2coTG9nTGV2ZWxfMS5Mb2dMZXZlbC5JTkZPLCBFbnVtc18yLk9DU0RLVGVsZW1ldHJ5RXZlbnQuR0VUUkVDT05ORUNUQVZBSUxBQklMSVRZLCB7IFJlZ2lvbjogcmVzcG9uc2UuZGF0YS5SZWdpb24sIEVsYXBzZWRUaW1lSW5NaWxsaXNlY29uZHM6IGVsYXBzZWRUaW1lSW5NaWxsaXNlY29uZHMsIFRyYW5zYWN0aW9uSWQ6IHJlc3BvbnNlLmhlYWRlcnNbQ29uc3RhbnRzXzEuZGVmYXVsdC50cmFuc2FjdGlvbmlkXSB9LCBcIkdldCBSZWNvbm5lY3QgYXZhaWxhYmlsaXR5IFN1Y2NlZWRlZFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShkYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qL107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBObyBkYXRhIGZvdW5kIHNvIHJldHVybmluZyBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5sb2dnZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvZ2dlci5sb2coTG9nTGV2ZWxfMS5Mb2dMZXZlbC5XQVJOLCBFbnVtc18yLk9DU0RLVGVsZW1ldHJ5RXZlbnQuR0VUUkVDT05ORUNUQVZBSUxBQklMSVRZLCB7IFJlZ2lvbjogcmVzcG9uc2UuZGF0YS5SZWdpb24sIEVsYXBzZWRUaW1lSW5NaWxsaXNlY29uZHM6IGVsYXBzZWRUaW1lSW5NaWxsaXNlY29uZHMsIFRyYW5zYWN0aW9uSWQ6IHJlc3BvbnNlLmhlYWRlcnNbQ29uc3RhbnRzXzEuZGVmYXVsdC50cmFuc2FjdGlvbmlkXSB9LCBcIkdldCBSZWNvbm5lY3QgYXZhaWxhYmlsaXR5IGRpZG4ndCBzZW5kIGFueSB2YWxpZCBkYXRhLlwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JfNCA9IF9hLnNlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsYXBzZWRUaW1lSW5NaWxsaXNlY29uZHMgPSB0aW1lci5taWxsaVNlY29uZHNFbGFwc2VkO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubG9nZ2VyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2dnZXIubG9nKExvZ0xldmVsXzEuTG9nTGV2ZWwuRVJST1IsIEVudW1zXzIuT0NTREtUZWxlbWV0cnlFdmVudC5HRVRSRUNPTk5FQ1RBVkFJTEFCSUxJVFksIHsgRXhjZXB0aW9uRGV0YWlsczogZXJyb3JfNCwgRWxhcHNlZFRpbWVJbk1pbGxpc2Vjb25kczogZWxhcHNlZFRpbWVJbk1pbGxpc2Vjb25kcyB9LCBcIkdldCBSZWNvbm5lY3QgQXZhaWxhYmlsaXR5IEZhaWxlZFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChlcnJvcl80KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAzOiByZXR1cm4gWzIgLypyZXR1cm4qL107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH0pOyB9KV07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKlxuICAgICAqIEBwYXJhbSByZXF1ZXN0SWQ6IFJlcXVlc3RJZCB0byB1c2UgZm9yIHNlc3Npb24gaW5pdC5cbiAgICAgKiBAcGFyYW0gcXVldWVBdmFpbGFiaWxpdHlPcHRpb25hbFBhcmFtczogT3B0aW9uYWwgcGFyYW1ldGVycyBmb3Igc2Vzc2lvbiBpbml0LlxuICAgICAqL1xuICAgIFNESy5wcm90b3R5cGUuZ2V0UXVldWVBdmFpbGFiaWxpdHkgPSBmdW5jdGlvbiAocmVxdWVzdElkLCBxdWV1ZUF2YWlsYWJpbGl0eU9wdGlvbmFsUGFyYW1zKSB7XG4gICAgICAgIGlmIChxdWV1ZUF2YWlsYWJpbGl0eU9wdGlvbmFsUGFyYW1zID09PSB2b2lkIDApIHsgcXVldWVBdmFpbGFiaWxpdHlPcHRpb25hbFBhcmFtcyA9IHt9OyB9XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciB0aW1lciwgZW5kcG9pbnQsIGF4aW9zSW5zdGFuY2UsIGF1dGhlbnRpY2F0ZWRVc2VyVG9rZW4sIGluaXRDb250ZXh0LCBnZXRDb250ZXh0LCBoZWFkZXJzLCBkYXRhLCBvcHRpb25zO1xuICAgICAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgICAgICB0aW1lciA9IFRpbWVyXzEuVGltZXIuVElNRVIoKTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5sb2dnZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2dnZXIubG9nKExvZ0xldmVsXzEuTG9nTGV2ZWwuSU5GTywgRW51bXNfMi5PQ1NES1RlbGVtZXRyeUV2ZW50LkdFVFFVRVVFQVZBSUxBQklMSVRZU1RBUlRFRCwgeyBSZXF1ZXN0SWQ6IHJlcXVlc3RJZCB9LCBcIkdldCBxdWV1ZSBhdmFpbGFiaWxpdHkgc3RhcnRlZFwiKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZW5kcG9pbnQgPSB0aGlzLm9tbmljaGFubmVsQ29uZmlndXJhdGlvbi5vcmdVcmwgKyBcIi9cIiArIE9tbmljaGFubmVsRW5kcG9pbnRzXzEuZGVmYXVsdC5HZXRRdWV1ZUF2YWlsYWJpbGl0eVBhdGggKyBcIi9cIiArIHRoaXMub21uaWNoYW5uZWxDb25maWd1cmF0aW9uLm9yZ0lkICsgXCIvXCIgKyB0aGlzLm9tbmljaGFubmVsQ29uZmlndXJhdGlvbi53aWRnZXRJZCArIFwiL1wiICsgcmVxdWVzdElkICsgXCI/Y2hhbm5lbElkPWxjd1wiO1xuICAgICAgICAgICAgICAgIGF4aW9zSW5zdGFuY2UgPSBheGlvc18xLmRlZmF1bHQuY3JlYXRlKCk7XG4gICAgICAgICAgICAgICAgYXhpb3NSZXRyeV8xLmRlZmF1bHQoYXhpb3NJbnN0YW5jZSwgeyByZXRyaWVzOiB0aGlzLmNvbmZpZ3VyYXRpb24ubWF4UmVxdWVzdFJldHJpZXNPbkZhaWx1cmUgfSk7XG4gICAgICAgICAgICAgICAgYXV0aGVudGljYXRlZFVzZXJUb2tlbiA9IHF1ZXVlQXZhaWxhYmlsaXR5T3B0aW9uYWxQYXJhbXMuYXV0aGVudGljYXRlZFVzZXJUb2tlbiwgaW5pdENvbnRleHQgPSBxdWV1ZUF2YWlsYWJpbGl0eU9wdGlvbmFsUGFyYW1zLmluaXRDb250ZXh0LCBnZXRDb250ZXh0ID0gcXVldWVBdmFpbGFiaWxpdHlPcHRpb25hbFBhcmFtcy5nZXRDb250ZXh0O1xuICAgICAgICAgICAgICAgIGhlYWRlcnMgPSBDb25zdGFudHNfMS5kZWZhdWx0LmRlZmF1bHRIZWFkZXJzO1xuICAgICAgICAgICAgICAgIGlmIChhdXRoZW50aWNhdGVkVXNlclRva2VuKSB7XG4gICAgICAgICAgICAgICAgICAgIGhlYWRlcnNbT21uaWNoYW5uZWxIVFRQSGVhZGVyc18xLmRlZmF1bHQuYXV0aGVudGljYXRlZFVzZXJUb2tlbl0gPSBhdXRoZW50aWNhdGVkVXNlclRva2VuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBkYXRhID0gaW5pdENvbnRleHQgfHwge307XG4gICAgICAgICAgICAgICAgaWYgKGdldENvbnRleHQgJiYgIXdpbmRvdy5kb2N1bWVudCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qLywgUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKFwiZ2V0Q29udGV4dCBpcyBvbmx5IHN1cHBvcnRlZCBvbiB3ZWIgYnJvd3NlcnNcIikpXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGdldENvbnRleHQpIHtcbiAgICAgICAgICAgICAgICAgICAgZGF0YS5icm93c2VyID0gQnJvd3NlckluZm9fMS5Ccm93c2VySW5mby5nZXRCcm93c2VyTmFtZSgpO1xuICAgICAgICAgICAgICAgICAgICBkYXRhLmRldmljZSA9IERldmljZUluZm9fMS5EZXZpY2VJbmZvLmdldERldmljZVR5cGUoKTtcbiAgICAgICAgICAgICAgICAgICAgZGF0YS5vcmlnaW51cmwgPSB3aW5kb3cubG9jYXRpb24uaHJlZjtcbiAgICAgICAgICAgICAgICAgICAgZGF0YS5vcyA9IE9TSW5mb18xLk9TSW5mby5nZXRPc1R5cGUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKCFkYXRhLmxvY2FsZSkge1xuICAgICAgICAgICAgICAgICAgICBkYXRhLmxvY2FsZSA9IENvbnN0YW50c18xLmRlZmF1bHQuZGVmYXVsdExvY2FsZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gVmFsaWRhdGUgbG9jYWxlXG4gICAgICAgICAgICAgICAgaWYgKGRhdGEubG9jYWxlICYmICFMb2NhbGVzXzEuZGVmYXVsdC5zdXBwb3J0ZWRMb2NhbGVzLmluY2x1ZGVzKGRhdGEubG9jYWxlKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qLywgUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKFwiVW5zdXBwb3J0ZWQgbG9jYWxlOiAnXCIgKyBkYXRhLmxvY2FsZSArIFwiJ1wiKSldO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBvcHRpb25zID0ge1xuICAgICAgICAgICAgICAgICAgICBkYXRhOiBkYXRhLFxuICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiBoZWFkZXJzLFxuICAgICAgICAgICAgICAgICAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgICAgICAgICAgICAgICAgICB1cmw6IGVuZHBvaW50XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qLywgbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgeyByZXR1cm4gX19hd2FpdGVyKF90aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlLCBlbGFwc2VkVGltZUluTWlsbGlzZWNvbmRzLCBkYXRhXzEsIGVycm9yXzUsIGVsYXBzZWRUaW1lSW5NaWxsaXNlY29uZHM7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IodGhpcywgZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChfYS5sYWJlbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYS50cnlzLnB1c2goWzAsIDIsICwgM10pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFs0IC8qeWllbGQqLywgYXhpb3NJbnN0YW5jZShvcHRpb25zKV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gX2Euc2VudCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxhcHNlZFRpbWVJbk1pbGxpc2Vjb25kcyA9IHRpbWVyLm1pbGxpU2Vjb25kc0VsYXBzZWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhXzEgPSByZXNwb25zZS5kYXRhO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGFfMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmxvZ2dlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvZ2dlci5sb2coTG9nTGV2ZWxfMS5Mb2dMZXZlbC5JTkZPLCBFbnVtc18yLk9DU0RLVGVsZW1ldHJ5RXZlbnQuR0VUUVVFVUVBVkFJTEFCSUxJVFlTVUNDRUVERUQsIHsgUmVxdWVzdElkOiByZXF1ZXN0SWQsIFJlZ2lvbjogcmVzcG9uc2UuZGF0YS5SZWdpb24sIEVsYXBzZWRUaW1lSW5NaWxsaXNlY29uZHM6IGVsYXBzZWRUaW1lSW5NaWxsaXNlY29uZHMsIFRyYW5zYWN0aW9uSWQ6IHJlc3BvbnNlLmhlYWRlcnNbXCJ0cmFuc2FjdGlvbi1pZFwiXSB9LCBcIkdldCBxdWV1ZSBhdmFpbGFiaWxpdHkgU3VjY2VlZGVkXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKGRhdGFfMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzMgLypicmVhayovLCAzXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JfNSA9IF9hLnNlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsYXBzZWRUaW1lSW5NaWxsaXNlY29uZHMgPSB0aW1lci5taWxsaVNlY29uZHNFbGFwc2VkO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubG9nZ2VyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2dnZXIubG9nKExvZ0xldmVsXzEuTG9nTGV2ZWwuRVJST1IsIEVudW1zXzIuT0NTREtUZWxlbWV0cnlFdmVudC5HRVRRVUVVRUFWQUlMQUJJTElUWUZBSUxFRCwgeyBSZXF1ZXN0SWQ6IHJlcXVlc3RJZCwgRXhjZXB0aW9uRGV0YWlsczogZXJyb3JfNSwgRWxhcHNlZFRpbWVJbk1pbGxpc2Vjb25kczogZWxhcHNlZFRpbWVJbk1pbGxpc2Vjb25kcyB9LCBcIkdldCBxdWV1ZSBhdmFpbGFiaWxpdHkgZmFpbGVkXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGVycm9yXzUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFszIC8qYnJlYWsqLywgM107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMzogcmV0dXJuIFsyIC8qcmV0dXJuKi9dO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9KTsgfSldO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogU3RhcnRzIGEgc2Vzc2lvbiB0byBvbW5pY2hhbm5lbC5cbiAgICAgKiBAcGFyYW0gcmVxdWVzdElkOiBSZXF1ZXN0SWQgdG8gdXNlIGZvciBzZXNzaW9uIGluaXQuXG4gICAgICogQHBhcmFtIHNlc3Npb25Jbml0T3B0aW9uYWxQYXJhbXM6IE9wdGlvbmFsIHBhcmFtZXRlcnMgZm9yIHNlc3Npb24gaW5pdC5cbiAgICAgKi9cbiAgICBTREsucHJvdG90eXBlLnNlc3Npb25Jbml0ID0gZnVuY3Rpb24gKHJlcXVlc3RJZCwgc2Vzc2lvbkluaXRPcHRpb25hbFBhcmFtcykge1xuICAgICAgICBpZiAoc2Vzc2lvbkluaXRPcHRpb25hbFBhcmFtcyA9PT0gdm9pZCAwKSB7IHNlc3Npb25Jbml0T3B0aW9uYWxQYXJhbXMgPSB7fTsgfVxuICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgdGltZXIsIGF4aW9zSW5zdGFuY2UsIHJlY29ubmVjdElkLCBhdXRoZW50aWNhdGVkVXNlclRva2VuLCBpbml0Q29udGV4dCwgZ2V0Q29udGV4dCwgaGVhZGVycywgZW5kcG9pbnQsIGRhdGEsIG9wdGlvbnM7XG4gICAgICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgICAgIHRpbWVyID0gVGltZXJfMS5UaW1lci5USU1FUigpO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmxvZ2dlcikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmxvZ2dlci5sb2coTG9nTGV2ZWxfMS5Mb2dMZXZlbC5JTkZPLCBFbnVtc18yLk9DU0RLVGVsZW1ldHJ5RXZlbnQuU0VTU0lPTklOSVRTVEFSVEVELCB7IFJlcXVlc3RJZDogcmVxdWVzdElkIH0sIFwiU2Vzc2lvbiBJbml0IFN0YXJ0ZWRcIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGF4aW9zSW5zdGFuY2UgPSBheGlvc18xLmRlZmF1bHQuY3JlYXRlKCk7XG4gICAgICAgICAgICAgICAgYXhpb3NSZXRyeV8xLmRlZmF1bHQoYXhpb3NJbnN0YW5jZSwgeyByZXRyaWVzOiB0aGlzLmNvbmZpZ3VyYXRpb24ubWF4UmVxdWVzdFJldHJpZXNPbkZhaWx1cmUgfSk7XG4gICAgICAgICAgICAgICAgcmVjb25uZWN0SWQgPSBzZXNzaW9uSW5pdE9wdGlvbmFsUGFyYW1zLnJlY29ubmVjdElkLCBhdXRoZW50aWNhdGVkVXNlclRva2VuID0gc2Vzc2lvbkluaXRPcHRpb25hbFBhcmFtcy5hdXRoZW50aWNhdGVkVXNlclRva2VuLCBpbml0Q29udGV4dCA9IHNlc3Npb25Jbml0T3B0aW9uYWxQYXJhbXMuaW5pdENvbnRleHQsIGdldENvbnRleHQgPSBzZXNzaW9uSW5pdE9wdGlvbmFsUGFyYW1zLmdldENvbnRleHQ7XG4gICAgICAgICAgICAgICAgaGVhZGVycyA9IENvbnN0YW50c18xLmRlZmF1bHQuZGVmYXVsdEhlYWRlcnM7XG4gICAgICAgICAgICAgICAgZW5kcG9pbnQgPSB0aGlzLm9tbmljaGFubmVsQ29uZmlndXJhdGlvbi5vcmdVcmwgKyBcIi9cIiArIE9tbmljaGFubmVsRW5kcG9pbnRzXzEuZGVmYXVsdC5MaXZlQ2hhdFNlc3Npb25Jbml0UGF0aCArIFwiL1wiICsgdGhpcy5vbW5pY2hhbm5lbENvbmZpZ3VyYXRpb24ub3JnSWQgKyBcIi9cIiArIHRoaXMub21uaWNoYW5uZWxDb25maWd1cmF0aW9uLndpZGdldElkICsgXCIvXCIgKyByZXF1ZXN0SWQ7XG4gICAgICAgICAgICAgICAgaWYgKGF1dGhlbnRpY2F0ZWRVc2VyVG9rZW4pIHtcbiAgICAgICAgICAgICAgICAgICAgZW5kcG9pbnQgPSB0aGlzLm9tbmljaGFubmVsQ29uZmlndXJhdGlvbi5vcmdVcmwgKyBcIi9cIiArIE9tbmljaGFubmVsRW5kcG9pbnRzXzEuZGVmYXVsdC5MaXZlQ2hhdEF1dGhTZXNzaW9uSW5pdFBhdGggKyBcIi9cIiArIHRoaXMub21uaWNoYW5uZWxDb25maWd1cmF0aW9uLm9yZ0lkICsgXCIvXCIgKyB0aGlzLm9tbmljaGFubmVsQ29uZmlndXJhdGlvbi53aWRnZXRJZCArIFwiL1wiICsgcmVxdWVzdElkO1xuICAgICAgICAgICAgICAgICAgICBoZWFkZXJzW09tbmljaGFubmVsSFRUUEhlYWRlcnNfMS5kZWZhdWx0LmF1dGhlbnRpY2F0ZWRVc2VyVG9rZW5dID0gYXV0aGVudGljYXRlZFVzZXJUb2tlbjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHJlY29ubmVjdElkKSB7XG4gICAgICAgICAgICAgICAgICAgIGVuZHBvaW50ICs9IFwiL1wiICsgcmVjb25uZWN0SWQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVuZHBvaW50ICs9IFwiP2NoYW5uZWxJZD1cIiArIHRoaXMub21uaWNoYW5uZWxDb25maWd1cmF0aW9uLmNoYW5uZWxJZDtcbiAgICAgICAgICAgICAgICBkYXRhID0gaW5pdENvbnRleHQgfHwge307XG4gICAgICAgICAgICAgICAgaWYgKGdldENvbnRleHQgJiYgIXdpbmRvdy5kb2N1bWVudCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qLywgUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKFwiZ2V0Q29udGV4dCBpcyBvbmx5IHN1cHBvcnRlZCBvbiB3ZWIgYnJvd3NlcnNcIikpXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGdldENvbnRleHQpIHtcbiAgICAgICAgICAgICAgICAgICAgZGF0YS5icm93c2VyID0gQnJvd3NlckluZm9fMS5Ccm93c2VySW5mby5nZXRCcm93c2VyTmFtZSgpO1xuICAgICAgICAgICAgICAgICAgICBkYXRhLmRldmljZSA9IERldmljZUluZm9fMS5EZXZpY2VJbmZvLmdldERldmljZVR5cGUoKTtcbiAgICAgICAgICAgICAgICAgICAgZGF0YS5vcmlnaW51cmwgPSB3aW5kb3cubG9jYXRpb24uaHJlZjtcbiAgICAgICAgICAgICAgICAgICAgZGF0YS5vcyA9IE9TSW5mb18xLk9TSW5mby5nZXRPc1R5cGUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gU2V0IGRlZmF1bHQgbG9jYWxlIGlmIGxvY2FsZSBpcyBlbXB0eVxuICAgICAgICAgICAgICAgIGlmICghZGF0YS5sb2NhbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgZGF0YS5sb2NhbGUgPSBDb25zdGFudHNfMS5kZWZhdWx0LmRlZmF1bHRMb2NhbGU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIFZhbGlkYXRlIGxvY2FsZVxuICAgICAgICAgICAgICAgIGlmIChkYXRhLmxvY2FsZSAmJiAhTG9jYWxlc18xLmRlZmF1bHQuc3VwcG9ydGVkTG9jYWxlcy5pbmNsdWRlcyhkYXRhLmxvY2FsZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi8sIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcihcIlVuc3VwcG9ydGVkIGxvY2FsZTogJ1wiICsgZGF0YS5sb2NhbGUgKyBcIidcIikpXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgb3B0aW9ucyA9IHtcbiAgICAgICAgICAgICAgICAgICAgZGF0YTogZGF0YSxcbiAgICAgICAgICAgICAgICAgICAgaGVhZGVyczogaGVhZGVycyxcbiAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiBcIlBPU1RcIixcbiAgICAgICAgICAgICAgICAgICAgdXJsOiBlbmRwb2ludFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi8sIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsgcmV0dXJuIF9fYXdhaXRlcihfdGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSwgZWxhcHNlZFRpbWVJbk1pbGxpc2Vjb25kcywgZXJyb3JfNiwgZWxhcHNlZFRpbWVJbk1pbGxpc2Vjb25kcztcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKF9hLmxhYmVsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9hLnRyeXMucHVzaChbMCwgMiwgLCAzXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzQgLyp5aWVsZCovLCBheGlvc0luc3RhbmNlKG9wdGlvbnMpXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UgPSBfYS5zZW50KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGFwc2VkVGltZUluTWlsbGlzZWNvbmRzID0gdGltZXIubWlsbGlTZWNvbmRzRWxhcHNlZDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmxvZ2dlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmxvZyhMb2dMZXZlbF8xLkxvZ0xldmVsLklORk8sIEVudW1zXzIuT0NTREtUZWxlbWV0cnlFdmVudC5TRVNTSU9OSU5JVFNVQ0NFRURFRCwgeyBSZXF1ZXN0SWQ6IHJlcXVlc3RJZCwgUmVnaW9uOiByZXNwb25zZS5kYXRhLlJlZ2lvbiwgRWxhcHNlZFRpbWVJbk1pbGxpc2Vjb25kczogZWxhcHNlZFRpbWVJbk1pbGxpc2Vjb25kcywgVHJhbnNhY3Rpb25JZDogcmVzcG9uc2UuaGVhZGVyc1tcInRyYW5zYWN0aW9uLWlkXCJdIH0sIFwiU2Vzc2lvbiBJbml0IFN1Y2NlZWRlZFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMyAvKmJyZWFrKi8sIDNdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcl82ID0gX2Euc2VudCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxhcHNlZFRpbWVJbk1pbGxpc2Vjb25kcyA9IHRpbWVyLm1pbGxpU2Vjb25kc0VsYXBzZWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5sb2dnZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvZ2dlci5sb2coTG9nTGV2ZWxfMS5Mb2dMZXZlbC5FUlJPUiwgRW51bXNfMi5PQ1NES1RlbGVtZXRyeUV2ZW50LlNFU1NJT05JTklURkFJTEVELCB7IFJlcXVlc3RJZDogcmVxdWVzdElkLCBFeGNlcHRpb25EZXRhaWxzOiBlcnJvcl82LCBFbGFwc2VkVGltZUluTWlsbGlzZWNvbmRzOiBlbGFwc2VkVGltZUluTWlsbGlzZWNvbmRzIH0sIFwiU2Vzc2lvbiBJbml0IEZhaWxlZFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChlcnJvcl82KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMyAvKmJyZWFrKi8sIDNdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDM6IHJldHVybiBbMiAvKnJldHVybiovXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfSk7IH0pXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIENsb3NlcyB0aGUgb21uaWNoYW5uZWwgc2Vzc2lvbi5cbiAgICAgKiBAcGFyYW0gcmVxdWVzdElkOiBSZXF1ZXN0SWQgdG8gdXNlIGZvciBzZXNzaW9uIGNsb3NlIChzYW1lIHJlcXVlc3QgaWQgZm9yIHNlc3Npb24gaW5pdCkuXG4gICAgICogQHBhcmFtIHNlc3Npb25DbG9zZU9wdGlvbmFsUGFyYW1zOiBPcHRpb25hbCBwYXJhbWV0ZXJzIGZvciBzZXNzaW9uIGNsb3NlLlxuICAgICAqL1xuICAgIFNESy5wcm90b3R5cGUuc2Vzc2lvbkNsb3NlID0gZnVuY3Rpb24gKHJlcXVlc3RJZCwgc2Vzc2lvbkNsb3NlT3B0aW9uYWxQYXJhbXMpIHtcbiAgICAgICAgaWYgKHNlc3Npb25DbG9zZU9wdGlvbmFsUGFyYW1zID09PSB2b2lkIDApIHsgc2Vzc2lvbkNsb3NlT3B0aW9uYWxQYXJhbXMgPSB7fTsgfVxuICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgdGltZXIsIGVuZHBvaW50LCBheGlvc0luc3RhbmNlLCBhdXRoZW50aWNhdGVkVXNlclRva2VuLCBpc1JlY29ubmVjdENoYXQsIGlzUGVyc2lzdGVudENoYXQsIGNoYXRJZCwgaGVhZGVycywgZGF0YSwgb3B0aW9ucztcbiAgICAgICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IodGhpcywgZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgICAgICAgICAgdGltZXIgPSBUaW1lcl8xLlRpbWVyLlRJTUVSKCk7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubG9nZ2VyKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmxvZyhMb2dMZXZlbF8xLkxvZ0xldmVsLklORk8sIEVudW1zXzIuT0NTREtUZWxlbWV0cnlFdmVudC5TRVNTSU9OQ0xPU0VTVEFSVEVELCB7IFJlcXVlc3RJZDogcmVxdWVzdElkIH0sIFwiU2Vzc2lvbiBDbG9zZSBTdGFydGVkXCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbmRwb2ludCA9IHRoaXMub21uaWNoYW5uZWxDb25maWd1cmF0aW9uLm9yZ1VybCArIFwiL1wiICsgT21uaWNoYW5uZWxFbmRwb2ludHNfMS5kZWZhdWx0LkxpdmVDaGF0U2Vzc2lvbkNsb3NlUGF0aCArIFwiL1wiICsgdGhpcy5vbW5pY2hhbm5lbENvbmZpZ3VyYXRpb24ub3JnSWQgKyBcIi9cIiArIHRoaXMub21uaWNoYW5uZWxDb25maWd1cmF0aW9uLndpZGdldElkICsgXCIvXCIgKyByZXF1ZXN0SWQgKyBcIj9jaGFubmVsSWQ9XCIgKyB0aGlzLm9tbmljaGFubmVsQ29uZmlndXJhdGlvbi5jaGFubmVsSWQ7XG4gICAgICAgICAgICAgICAgYXhpb3NJbnN0YW5jZSA9IGF4aW9zXzEuZGVmYXVsdC5jcmVhdGUoKTtcbiAgICAgICAgICAgICAgICBheGlvc1JldHJ5XzEuZGVmYXVsdChheGlvc0luc3RhbmNlLCB7IHJldHJpZXM6IHRoaXMuY29uZmlndXJhdGlvbi5tYXhSZXF1ZXN0UmV0cmllc09uRmFpbHVyZSB9KTtcbiAgICAgICAgICAgICAgICBhdXRoZW50aWNhdGVkVXNlclRva2VuID0gc2Vzc2lvbkNsb3NlT3B0aW9uYWxQYXJhbXMuYXV0aGVudGljYXRlZFVzZXJUb2tlbiwgaXNSZWNvbm5lY3RDaGF0ID0gc2Vzc2lvbkNsb3NlT3B0aW9uYWxQYXJhbXMuaXNSZWNvbm5lY3RDaGF0LCBpc1BlcnNpc3RlbnRDaGF0ID0gc2Vzc2lvbkNsb3NlT3B0aW9uYWxQYXJhbXMuaXNQZXJzaXN0ZW50Q2hhdCwgY2hhdElkID0gc2Vzc2lvbkNsb3NlT3B0aW9uYWxQYXJhbXMuY2hhdElkO1xuICAgICAgICAgICAgICAgIGhlYWRlcnMgPSBDb25zdGFudHNfMS5kZWZhdWx0LmRlZmF1bHRIZWFkZXJzO1xuICAgICAgICAgICAgICAgIGRhdGEgPSB7fTtcbiAgICAgICAgICAgICAgICBkYXRhLmNoYXRJZCA9IGNoYXRJZDtcbiAgICAgICAgICAgICAgICBpZiAoYXV0aGVudGljYXRlZFVzZXJUb2tlbikge1xuICAgICAgICAgICAgICAgICAgICBlbmRwb2ludCA9IHRoaXMub21uaWNoYW5uZWxDb25maWd1cmF0aW9uLm9yZ1VybCArIFwiL1wiICsgT21uaWNoYW5uZWxFbmRwb2ludHNfMS5kZWZhdWx0LkxpdmVDaGF0QXV0aFNlc3Npb25DbG9zZVBhdGggKyBcIi9cIiArIHRoaXMub21uaWNoYW5uZWxDb25maWd1cmF0aW9uLm9yZ0lkICsgXCIvXCIgKyB0aGlzLm9tbmljaGFubmVsQ29uZmlndXJhdGlvbi53aWRnZXRJZCArIFwiL1wiICsgcmVxdWVzdElkICsgXCI/Y2hhbm5lbElkPVwiICsgdGhpcy5vbW5pY2hhbm5lbENvbmZpZ3VyYXRpb24uY2hhbm5lbElkO1xuICAgICAgICAgICAgICAgICAgICBoZWFkZXJzW09tbmljaGFubmVsSFRUUEhlYWRlcnNfMS5kZWZhdWx0LmF1dGhlbnRpY2F0ZWRVc2VyVG9rZW5dID0gYXV0aGVudGljYXRlZFVzZXJUb2tlbjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGlzUmVjb25uZWN0Q2hhdCkge1xuICAgICAgICAgICAgICAgICAgICBlbmRwb2ludCArPSBcIiZpc1JlY29ubmVjdENoYXQ9dHJ1ZVwiO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoaXNQZXJzaXN0ZW50Q2hhdCkge1xuICAgICAgICAgICAgICAgICAgICBlbmRwb2ludCArPSBcIiZpc1BlcnNpc3RlbnRDaGF0PXRydWVcIjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgb3B0aW9ucyA9IHtcbiAgICAgICAgICAgICAgICAgICAgZGF0YTogZGF0YSxcbiAgICAgICAgICAgICAgICAgICAgaGVhZGVyczogaGVhZGVycyxcbiAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiBcIlBPU1RcIixcbiAgICAgICAgICAgICAgICAgICAgdXJsOiBlbmRwb2ludFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi8sIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsgcmV0dXJuIF9fYXdhaXRlcihfdGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSwgZWxhcHNlZFRpbWVJbk1pbGxpc2Vjb25kcywgZXJyb3JfNywgZWxhcHNlZFRpbWVJbk1pbGxpc2Vjb25kcztcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKF9hLmxhYmVsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9hLnRyeXMucHVzaChbMCwgMiwgLCAzXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzQgLyp5aWVsZCovLCBheGlvc0luc3RhbmNlKG9wdGlvbnMpXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UgPSBfYS5zZW50KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGFwc2VkVGltZUluTWlsbGlzZWNvbmRzID0gdGltZXIubWlsbGlTZWNvbmRzRWxhcHNlZDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmxvZ2dlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmxvZyhMb2dMZXZlbF8xLkxvZ0xldmVsLklORk8sIEVudW1zXzIuT0NTREtUZWxlbWV0cnlFdmVudC5TRVNTSU9OQ0xPU0VTVUNDRUVERUQsIHsgUmVxdWVzdElkOiByZXF1ZXN0SWQsIFJlZ2lvbjogcmVzcG9uc2UuZGF0YS5SZWdpb24sIEVsYXBzZWRUaW1lSW5NaWxsaXNlY29uZHM6IGVsYXBzZWRUaW1lSW5NaWxsaXNlY29uZHMsIFRyYW5zYWN0aW9uSWQ6IHJlc3BvbnNlLmhlYWRlcnNbXCJ0cmFuc2FjdGlvbi1pZFwiXSB9LCBcIlNlc3Npb24gQ2xvc2UgU3VjY2VlZGVkXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFszIC8qYnJlYWsqLywgM107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yXzcgPSBfYS5zZW50KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGFwc2VkVGltZUluTWlsbGlzZWNvbmRzID0gdGltZXIubWlsbGlTZWNvbmRzRWxhcHNlZDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmxvZ2dlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmxvZyhMb2dMZXZlbF8xLkxvZ0xldmVsLkVSUk9SLCBFbnVtc18yLk9DU0RLVGVsZW1ldHJ5RXZlbnQuU0VTU0lPTkNMT1NFRkFJTEVELCB7IFJlcXVlc3RJZDogcmVxdWVzdElkLCBFeGNlcHRpb25EZXRhaWxzOiBlcnJvcl83LCBFbGFwc2VkVGltZUluTWlsbGlzZWNvbmRzOiBlbGFwc2VkVGltZUluTWlsbGlzZWNvbmRzIH0sIFwiU2Vzc2lvbiBDbG9zZSBGYWlsZWRcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWplY3QoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMyAvKmJyZWFrKi8sIDNdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDM6IHJldHVybiBbMiAvKnJldHVybiovXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfSk7IH0pXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIFZhbGlkYXRlIHRoZSBhdXRoIGNoYXQgcmVjb3JkIGV4aXN0cyBpbiBkYXRhYmFzZS5cbiAgICAgKiBAcGFyYW0gcmVxdWVzdElkOiBSZXF1ZXN0SWQgZm9yIHZhbGlkYXRlQXV0aENoYXRSZWNvcmQgKHNhbWUgcmVxdWVzdCBpZCBmb3Igc2Vzc2lvbiBpbml0KS5cbiAgICAgKiBAcGFyYW0gdmFsaWRhdGVBdXRoQ2hhdFJlY29yZE9wdGlvbmFsUGFyYW1zOiBPcHRpb25hbCBwYXJhbWV0ZXJzIGZvciB2YWxpZGF0ZUF1dGhDaGF0UmVjb3JkLlxuICAgICAqL1xuICAgIFNESy5wcm90b3R5cGUudmFsaWRhdGVBdXRoQ2hhdFJlY29yZCA9IGZ1bmN0aW9uIChyZXF1ZXN0SWQsIHZhbGlkYXRlQXV0aENoYXRSZWNvcmRPcHRpb25hbFBhcmFtcykge1xuICAgICAgICB2YXIgX2EsIF9iLCBfYywgX2Q7XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciB0aW1lciwgYXV0aGVudGljYXRlZFVzZXJUb2tlbiwgY2hhdElkLCBlbmRwb2ludCwgYXhpb3NJbnN0YW5jZSwgaGVhZGVycywgb3B0aW9ucywgcmVzcG9uc2UsIGVsYXBzZWRUaW1lSW5NaWxsaXNlY29uZHMsIGVycm9yXzgsIGVsYXBzZWRUaW1lSW5NaWxsaXNlY29uZHM7XG4gICAgICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IodGhpcywgZnVuY3Rpb24gKF9lKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoIChfZS5sYWJlbCkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgICAgICB0aW1lciA9IFRpbWVyXzEuVGltZXIuVElNRVIoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmxvZ2dlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmxvZyhMb2dMZXZlbF8xLkxvZ0xldmVsLklORk8sIEVudW1zXzIuT0NTREtUZWxlbWV0cnlFdmVudC5WQUxJREFURUFVVEhDSEFUUkVDT1JEU1RBUlRFRCwgeyBSZXF1ZXN0SWQ6IHJlcXVlc3RJZCB9LCBcIlZhbGlkYXRlIEF1dGggQ2hhdCBSZWNvcmQgU3RhcnRlZFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGF1dGhlbnRpY2F0ZWRVc2VyVG9rZW4gPSB2YWxpZGF0ZUF1dGhDaGF0UmVjb3JkT3B0aW9uYWxQYXJhbXMuYXV0aGVudGljYXRlZFVzZXJUb2tlbiwgY2hhdElkID0gdmFsaWRhdGVBdXRoQ2hhdFJlY29yZE9wdGlvbmFsUGFyYW1zLmNoYXRJZDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZHBvaW50ID0gdGhpcy5vbW5pY2hhbm5lbENvbmZpZ3VyYXRpb24ub3JnVXJsICsgXCIvXCIgKyBPbW5pY2hhbm5lbEVuZHBvaW50c18xLmRlZmF1bHQuTGl2ZUNoYXRWYWxpZGF0ZUF1dGhDaGF0TWFwUmVjb3JkUGF0aCArIFwiL1wiICsgdGhpcy5vbW5pY2hhbm5lbENvbmZpZ3VyYXRpb24ub3JnSWQgKyBcIi9cIiArIHRoaXMub21uaWNoYW5uZWxDb25maWd1cmF0aW9uLndpZGdldElkICsgXCIvXCIgKyBjaGF0SWQgKyBcIi9cIiArIHJlcXVlc3RJZCArIFwiP2NoYW5uZWxJZD1cIiArIHRoaXMub21uaWNoYW5uZWxDb25maWd1cmF0aW9uLmNoYW5uZWxJZDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGF4aW9zSW5zdGFuY2UgPSBheGlvc18xLmRlZmF1bHQuY3JlYXRlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBheGlvc1JldHJ5XzEuZGVmYXVsdChheGlvc0luc3RhbmNlLCB7IHJldHJpZXM6IHRoaXMuY29uZmlndXJhdGlvbi5tYXhSZXF1ZXN0UmV0cmllc09uRmFpbHVyZSB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnMgPSBDb25zdGFudHNfMS5kZWZhdWx0LmRlZmF1bHRIZWFkZXJzO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGF1dGhlbnRpY2F0ZWRVc2VyVG9rZW4pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzW09tbmljaGFubmVsSFRUUEhlYWRlcnNfMS5kZWZhdWx0LmF1dGhlbnRpY2F0ZWRVc2VyVG9rZW5dID0gYXV0aGVudGljYXRlZFVzZXJUb2tlbjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyczogaGVhZGVycyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Q6IFwiR0VUXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBlbmRwb2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIF9lLmxhYmVsID0gMTtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICAgICAgX2UudHJ5cy5wdXNoKFsxLCAzLCAsIDRdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbNCAvKnlpZWxkKi8sIGF4aW9zSW5zdGFuY2Uob3B0aW9ucyldO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZSA9IF9lLnNlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsYXBzZWRUaW1lSW5NaWxsaXNlY29uZHMgPSB0aW1lci5taWxsaVNlY29uZHNFbGFwc2VkO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCgoX2EgPSByZXNwb25zZS5kYXRhKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuYXV0aENoYXRFeGlzdCkgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX2IgPSB0aGlzLmxvZ2dlcikgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmxvZyhMb2dMZXZlbF8xLkxvZ0xldmVsLklORk8sIEVudW1zXzIuT0NTREtUZWxlbWV0cnlFdmVudC5WQUxJREFURUFVVEhDSEFUUkVDT1JEU1VDQ0VFREVELCB7IFJlcXVlc3RJZDogcmVxdWVzdElkLCBSZWdpb246IHJlc3BvbnNlLmRhdGEuUmVnaW9uLCBFbGFwc2VkVGltZUluTWlsbGlzZWNvbmRzOiBlbGFwc2VkVGltZUluTWlsbGlzZWNvbmRzLCBUcmFuc2FjdGlvbklkOiByZXNwb25zZS5oZWFkZXJzW1widHJhbnNhY3Rpb24taWRcIl0gfSwgXCJWYWxpZGF0ZSBBdXRoIENoYXQgUmVjb3JkIFN1Y2NlZWRlZFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qLywgUHJvbWlzZS5yZXNvbHZlKHJlc3BvbnNlLmRhdGEpXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfYyA9IHRoaXMubG9nZ2VyKSA9PT0gbnVsbCB8fCBfYyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2MubG9nKExvZ0xldmVsXzEuTG9nTGV2ZWwuSU5GTywgRW51bXNfMi5PQ1NES1RlbGVtZXRyeUV2ZW50LlZBTElEQVRFQVVUSENIQVRSRUNPUkRGQUlMRUQsIHsgUmVxdWVzdElkOiByZXF1ZXN0SWQsIFJlZ2lvbjogcmVzcG9uc2UuZGF0YS5SZWdpb24sIEVsYXBzZWRUaW1lSW5NaWxsaXNlY29uZHM6IGVsYXBzZWRUaW1lSW5NaWxsaXNlY29uZHMsIFRyYW5zYWN0aW9uSWQ6IHJlc3BvbnNlLmhlYWRlcnNbXCJ0cmFuc2FjdGlvbi1pZFwiXSwgRXJyb3JDb2RlOiByZXNwb25zZS5zdGF0dXMgfSwgXCJWYWxpZGF0ZSBBdXRoIENoYXQgUmVjb3JkIEZhaWxlZC4gUmVjb3JkIGlzIG5vdCBmb3VuZCBvciByZXF1ZXN0IGlzIG5vdCBhdXRob3JpemVkXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovLCBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoXCJWYWxpZGF0ZSBBdXRoIENoYXQgUmVjb3JkIEZhaWxlZC4gUmVjb3JkIGlzIG5vdCBmb3VuZCBvciByZXF1ZXN0IGlzIG5vdCBhdXRob3JpemVkXCIpKV07XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzMgLypicmVhayovLCA0XTtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JfOCA9IF9lLnNlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsYXBzZWRUaW1lSW5NaWxsaXNlY29uZHMgPSB0aW1lci5taWxsaVNlY29uZHNFbGFwc2VkO1xuICAgICAgICAgICAgICAgICAgICAgICAgKF9kID0gdGhpcy5sb2dnZXIpID09PSBudWxsIHx8IF9kID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZC5sb2coTG9nTGV2ZWxfMS5Mb2dMZXZlbC5FUlJPUiwgRW51bXNfMi5PQ1NES1RlbGVtZXRyeUV2ZW50LlZBTElEQVRFQVVUSENIQVRSRUNPUkRGQUlMRUQsIHsgUmVxdWVzdElkOiByZXF1ZXN0SWQsIEV4Y2VwdGlvbkRldGFpbHM6IGVycm9yXzgsIEVsYXBzZWRUaW1lSW5NaWxsaXNlY29uZHM6IGVsYXBzZWRUaW1lSW5NaWxsaXNlY29uZHMgfSwgXCJWYWxpZGF0ZSBBdXRoIENoYXQgUmVjb3JkIEZhaWxlZFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlcnJvcl84LnRvU3RyaW5nKCkgPT09IFwiRXJyb3I6IFJlcXVlc3QgZmFpbGVkIHdpdGggc3RhdHVzIGNvZGUgNDA0XCIpIHsgLy8gYmFja3dhcmQgY29tcGF0aWJpbGl0eVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovLCBQcm9taXNlLnJlc29sdmUoe30pXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovLCBQcm9taXNlLnJlamVjdCgpXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMyAvKmJyZWFrKi8sIDRdO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6IHJldHVybiBbMiAvKnJldHVybiovXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBTdWJtaXRzIHBvc3QgY2hhdCByZXNwb25zZS5cbiAgICAgKiBAcGFyYW0gcmVxdWVzdElkIFJlcXVlc3RJZCBvZiB0aGUgb21uaWNoYW5uZWwgc2Vzc2lvbi5cbiAgICAgKiBAcGFyYW0gcG9zdENoYXRSZXNwb25zZSBQb3N0IGNoYXQgcmVzcG9uc2UgdG8gc3VibWl0LlxuICAgICAqIEBwYXJhbSBzdWJtaXRQb3N0Q2hhdFJlc3BvbnNlT3B0aW9uYWxQYXJhbXM6IE9wdGlvbmFsIHBhcmFtZXRlcnMgZm9yIHN1Ym1pdCBwb3N0IGNoYXQgcmVzcG9uc2UuXG4gICAgICovXG4gICAgU0RLLnByb3RvdHlwZS5zdWJtaXRQb3N0Q2hhdFJlc3BvbnNlID0gZnVuY3Rpb24gKHJlcXVlc3RJZCwgcG9zdENoYXRSZXNwb25zZSwgc3VibWl0UG9zdENoYXRSZXNwb25zZU9wdGlvbmFsUGFyYW1zKSB7XG4gICAgICAgIGlmIChzdWJtaXRQb3N0Q2hhdFJlc3BvbnNlT3B0aW9uYWxQYXJhbXMgPT09IHZvaWQgMCkgeyBzdWJtaXRQb3N0Q2hhdFJlc3BvbnNlT3B0aW9uYWxQYXJhbXMgPSB7fTsgfVxuICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgdGltZXIsIGVuZHBvaW50LCBheGlvc0luc3RhbmNlLCBhdXRoZW50aWNhdGVkVXNlclRva2VuLCBoZWFkZXJzLCBvcHRpb25zO1xuICAgICAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgICAgICB0aW1lciA9IFRpbWVyXzEuVGltZXIuVElNRVIoKTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5sb2dnZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2dnZXIubG9nKExvZ0xldmVsXzEuTG9nTGV2ZWwuSU5GTywgRW51bXNfMi5PQ1NES1RlbGVtZXRyeUV2ZW50LlNVQk1JVFBPU1RDSEFUU1RBUlRFRCwgeyBSZXF1ZXN0SWQ6IHJlcXVlc3RJZCB9LCBcIlN1Ym1pdCBQb3N0IENoYXQgU3RhcnRlZFwiKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZW5kcG9pbnQgPSB0aGlzLm9tbmljaGFubmVsQ29uZmlndXJhdGlvbi5vcmdVcmwgKyBcIi9cIiArIE9tbmljaGFubmVsRW5kcG9pbnRzXzEuZGVmYXVsdC5MaXZlQ2hhdFN1Ym1pdFBvc3RDaGF0UGF0aCArIFwiL1wiICsgdGhpcy5vbW5pY2hhbm5lbENvbmZpZ3VyYXRpb24ub3JnSWQgKyBcIi9cIiArIHRoaXMub21uaWNoYW5uZWxDb25maWd1cmF0aW9uLndpZGdldElkICsgXCIvXCIgKyByZXF1ZXN0SWQgKyBcIj9jaGFubmVsSWQ9XCIgKyB0aGlzLm9tbmljaGFubmVsQ29uZmlndXJhdGlvbi5jaGFubmVsSWQ7XG4gICAgICAgICAgICAgICAgYXhpb3NJbnN0YW5jZSA9IGF4aW9zXzEuZGVmYXVsdC5jcmVhdGUoKTtcbiAgICAgICAgICAgICAgICBheGlvc1JldHJ5XzEuZGVmYXVsdChheGlvc0luc3RhbmNlLCB7IHJldHJpZXM6IHRoaXMuY29uZmlndXJhdGlvbi5tYXhSZXF1ZXN0UmV0cmllc09uRmFpbHVyZSB9KTtcbiAgICAgICAgICAgICAgICBhdXRoZW50aWNhdGVkVXNlclRva2VuID0gc3VibWl0UG9zdENoYXRSZXNwb25zZU9wdGlvbmFsUGFyYW1zLmF1dGhlbnRpY2F0ZWRVc2VyVG9rZW47XG4gICAgICAgICAgICAgICAgaGVhZGVycyA9IENvbnN0YW50c18xLmRlZmF1bHQuZGVmYXVsdEhlYWRlcnM7XG4gICAgICAgICAgICAgICAgaWYgKGF1dGhlbnRpY2F0ZWRVc2VyVG9rZW4pIHtcbiAgICAgICAgICAgICAgICAgICAgZW5kcG9pbnQgPSB0aGlzLm9tbmljaGFubmVsQ29uZmlndXJhdGlvbi5vcmdVcmwgKyBcIi9cIiArIE9tbmljaGFubmVsRW5kcG9pbnRzXzEuZGVmYXVsdC5MaXZlQ2hhdEF1dGhTdWJtaXRQb3N0Q2hhdFBhdGggKyBcIi9cIiArIHRoaXMub21uaWNoYW5uZWxDb25maWd1cmF0aW9uLm9yZ0lkICsgXCIvXCIgKyB0aGlzLm9tbmljaGFubmVsQ29uZmlndXJhdGlvbi53aWRnZXRJZCArIFwiL1wiICsgcmVxdWVzdElkICsgXCI/Y2hhbm5lbElkPVwiICsgdGhpcy5vbW5pY2hhbm5lbENvbmZpZ3VyYXRpb24uY2hhbm5lbElkO1xuICAgICAgICAgICAgICAgICAgICBoZWFkZXJzW09tbmljaGFubmVsSFRUUEhlYWRlcnNfMS5kZWZhdWx0LmF1dGhlbnRpY2F0ZWRVc2VyVG9rZW5dID0gYXV0aGVudGljYXRlZFVzZXJUb2tlbjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgb3B0aW9ucyA9IHtcbiAgICAgICAgICAgICAgICAgICAgZGF0YTogSlNPTi5zdHJpbmdpZnkocG9zdENoYXRSZXNwb25zZSksXG4gICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IGhlYWRlcnMsXG4gICAgICAgICAgICAgICAgICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgICAgICAgICAgICAgICAgIHVybDogZW5kcG9pbnRcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovLCBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7IHJldHVybiBfX2F3YWl0ZXIoX3RoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UsIGVsYXBzZWRUaW1lSW5NaWxsaXNlY29uZHMsIGVycm9yXzksIGVsYXBzZWRUaW1lSW5NaWxsaXNlY29uZHM7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IodGhpcywgZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChfYS5sYWJlbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYS50cnlzLnB1c2goWzAsIDIsICwgM10pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFs0IC8qeWllbGQqLywgYXhpb3NJbnN0YW5jZShvcHRpb25zKV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gX2Euc2VudCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxhcHNlZFRpbWVJbk1pbGxpc2Vjb25kcyA9IHRpbWVyLm1pbGxpU2Vjb25kc0VsYXBzZWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5sb2dnZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvZ2dlci5sb2coTG9nTGV2ZWxfMS5Mb2dMZXZlbC5JTkZPLCBFbnVtc18yLk9DU0RLVGVsZW1ldHJ5RXZlbnQuU1VCTUlUUE9TVENIQVRTVUNDRUVERUQsIHsgUmVxdWVzdElkOiByZXF1ZXN0SWQsIFJlZ2lvbjogcmVzcG9uc2UuZGF0YS5SZWdpb24sIEVsYXBzZWRUaW1lSW5NaWxsaXNlY29uZHM6IGVsYXBzZWRUaW1lSW5NaWxsaXNlY29uZHMsIFRyYW5zYWN0aW9uSWQ6IHJlc3BvbnNlLmhlYWRlcnNbXCJ0cmFuc2FjdGlvbi1pZFwiXSB9LCBcIlN1Ym1pdCBQb3N0IENoYXQgU3VjY2VlZGVkXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFszIC8qYnJlYWsqLywgM107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yXzkgPSBfYS5zZW50KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGFwc2VkVGltZUluTWlsbGlzZWNvbmRzID0gdGltZXIubWlsbGlTZWNvbmRzRWxhcHNlZDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmxvZ2dlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmxvZyhMb2dMZXZlbF8xLkxvZ0xldmVsLkVSUk9SLCBFbnVtc18yLk9DU0RLVGVsZW1ldHJ5RXZlbnQuU1VCTUlUUE9TVENIQVRGQUlMRUQsIHsgUmVxdWVzdElkOiByZXF1ZXN0SWQsIEV4Y2VwdGlvbkRldGFpbHM6IGVycm9yXzksIEVsYXBzZWRUaW1lSW5NaWxsaXNlY29uZHM6IGVsYXBzZWRUaW1lSW5NaWxsaXNlY29uZHMgfSwgXCJTdWJtaXQgUG9zdCBDaGF0IEZhaWxlZFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFszIC8qYnJlYWsqLywgM107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMzogcmV0dXJuIFsyIC8qcmV0dXJuKi9dO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9KTsgfSldO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogU3VibWl0cyBwb3N0IGNoYXQgcmVzcG9uc2UuXG4gICAgICogQHBhcmFtIHJlcXVlc3RJZCBSZXF1ZXN0SWQgb2YgdGhlIG9tbmljaGFubmVsIHNlc3Npb24uXG4gICAgICogQHBhcmFtIHBvc3RDaGF0UmVzcG9uc2UgUG9zdCBjaGF0IHJlc3BvbnNlIHRvIHN1Ym1pdC5cbiAgICAgKiBAcGFyYW0gc3VibWl0UG9zdENoYXRSZXNwb25zZU9wdGlvbmFsUGFyYW1zOiBPcHRpb25hbCBwYXJhbWV0ZXJzIGZvciBzdWJtaXQgcG9zdCBjaGF0IHJlc3BvbnNlLlxuICAgICAqL1xuICAgIFNESy5wcm90b3R5cGUuZ2V0U3VydmV5SW52aXRlTGluayA9IGZ1bmN0aW9uIChzdXJ2ZXlPd25lcklkLCBzdXJ2ZXlJbnZpdGVBUElSZXF1ZXN0Qm9keSwgZ2V0c3VydmV5SW52aXRlTGlua09wdGlvbmFsUGFyYW1zKSB7XG4gICAgICAgIGlmIChnZXRzdXJ2ZXlJbnZpdGVMaW5rT3B0aW9uYWxQYXJhbXMgPT09IHZvaWQgMCkgeyBnZXRzdXJ2ZXlJbnZpdGVMaW5rT3B0aW9uYWxQYXJhbXMgPSB7fTsgfVxuICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgdGltZXIsIGVuZHBvaW50LCBheGlvc0luc3RhbmNlLCBhdXRoZW50aWNhdGVkVXNlclRva2VuLCByZXF1ZXN0SWQsIGhlYWRlcnMsIG9wdGlvbnM7XG4gICAgICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgICAgIHRpbWVyID0gVGltZXJfMS5UaW1lci5USU1FUigpO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmxvZ2dlcikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmxvZ2dlci5sb2coTG9nTGV2ZWxfMS5Mb2dMZXZlbC5JTkZPLCBFbnVtc18yLk9DU0RLVGVsZW1ldHJ5RXZlbnQuR0VUU1VSVkVZSU5WSVRFTElOS1NUQVJURUQsIHsgU3VydmV5T3duZXJJZDogc3VydmV5T3duZXJJZCB9LCBcIkdldCBTdXJ2ZXkgSW52aXRlIExpbmsgU3RhcnRlZFwiKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZW5kcG9pbnQgPSB0aGlzLm9tbmljaGFubmVsQ29uZmlndXJhdGlvbi5vcmdVcmwgKyBcIi9cIiArIE9tbmljaGFubmVsRW5kcG9pbnRzXzEuZGVmYXVsdC5MaXZlQ2hhdEdldFN1cnZleUludml0ZUxpbmtQYXRoICsgXCIvXCIgKyB0aGlzLm9tbmljaGFubmVsQ29uZmlndXJhdGlvbi5vcmdJZCArIFwiL1wiICsgc3VydmV5T3duZXJJZDtcbiAgICAgICAgICAgICAgICBheGlvc0luc3RhbmNlID0gYXhpb3NfMS5kZWZhdWx0LmNyZWF0ZSgpO1xuICAgICAgICAgICAgICAgIGF4aW9zUmV0cnlfMS5kZWZhdWx0KGF4aW9zSW5zdGFuY2UsIHsgcmV0cmllczogdGhpcy5jb25maWd1cmF0aW9uLm1heFJlcXVlc3RSZXRyaWVzT25GYWlsdXJlIH0pO1xuICAgICAgICAgICAgICAgIGF1dGhlbnRpY2F0ZWRVc2VyVG9rZW4gPSBnZXRzdXJ2ZXlJbnZpdGVMaW5rT3B0aW9uYWxQYXJhbXMuYXV0aGVudGljYXRlZFVzZXJUb2tlbiwgcmVxdWVzdElkID0gZ2V0c3VydmV5SW52aXRlTGlua09wdGlvbmFsUGFyYW1zLnJlcXVlc3RJZDtcbiAgICAgICAgICAgICAgICBoZWFkZXJzID0gQ29uc3RhbnRzXzEuZGVmYXVsdC5kZWZhdWx0SGVhZGVycztcbiAgICAgICAgICAgICAgICBpZiAoYXV0aGVudGljYXRlZFVzZXJUb2tlbikge1xuICAgICAgICAgICAgICAgICAgICBlbmRwb2ludCA9IHRoaXMub21uaWNoYW5uZWxDb25maWd1cmF0aW9uLm9yZ1VybCArIFwiL1wiICsgT21uaWNoYW5uZWxFbmRwb2ludHNfMS5kZWZhdWx0LkxpdmVDaGF0QXV0aEdldFN1cnZleUludml0ZUxpbmtQYXRoICsgXCIvXCIgKyB0aGlzLm9tbmljaGFubmVsQ29uZmlndXJhdGlvbi5vcmdJZCArIFwiL1wiICsgc3VydmV5T3duZXJJZDtcbiAgICAgICAgICAgICAgICAgICAgaGVhZGVyc1tPbW5pY2hhbm5lbEhUVFBIZWFkZXJzXzEuZGVmYXVsdC5hdXRoZW50aWNhdGVkVXNlclRva2VuXSA9IGF1dGhlbnRpY2F0ZWRVc2VyVG9rZW47XG4gICAgICAgICAgICAgICAgICAgIGhlYWRlcnNbT21uaWNoYW5uZWxIVFRQSGVhZGVyc18xLmRlZmF1bHQud2lkZ2V0QXBwSWRdID0gdGhpcy5vbW5pY2hhbm5lbENvbmZpZ3VyYXRpb24ud2lkZ2V0SWQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChyZXF1ZXN0SWQpIHtcbiAgICAgICAgICAgICAgICAgICAgaGVhZGVyc1tPbW5pY2hhbm5lbEhUVFBIZWFkZXJzXzEuZGVmYXVsdC5yZXF1ZXN0SWRdID0gcmVxdWVzdElkO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBvcHRpb25zID0ge1xuICAgICAgICAgICAgICAgICAgICBkYXRhOiBKU09OLnN0cmluZ2lmeShzdXJ2ZXlJbnZpdGVBUElSZXF1ZXN0Qm9keSksXG4gICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IGhlYWRlcnMsXG4gICAgICAgICAgICAgICAgICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgICAgICAgICAgICAgICAgIHVybDogZW5kcG9pbnRcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovLCBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7IHJldHVybiBfX2F3YWl0ZXIoX3RoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UsIGRhdGEsIGVsYXBzZWRUaW1lSW5NaWxsaXNlY29uZHMsIGVycm9yXzEwLCBlbGFwc2VkVGltZUluTWlsbGlzZWNvbmRzO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoX2EubGFiZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2EudHJ5cy5wdXNoKFswLCAyLCAsIDNdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbNCAvKnlpZWxkKi8sIGF4aW9zSW5zdGFuY2Uob3B0aW9ucyldO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZSA9IF9hLnNlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgPSByZXNwb25zZS5kYXRhO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxhcHNlZFRpbWVJbk1pbGxpc2Vjb25kcyA9IHRpbWVyLm1pbGxpU2Vjb25kc0VsYXBzZWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5sb2dnZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvZ2dlci5sb2coTG9nTGV2ZWxfMS5Mb2dMZXZlbC5JTkZPLCBFbnVtc18yLk9DU0RLVGVsZW1ldHJ5RXZlbnQuR0VUU1VSVkVZSU5WSVRFTElOS1NVQ0NFRURFRCwgeyBSZWdpb246IHJlc3BvbnNlLmRhdGEuUmVnaW9uLCBFbGFwc2VkVGltZUluTWlsbGlzZWNvbmRzOiBlbGFwc2VkVGltZUluTWlsbGlzZWNvbmRzLCBUcmFuc2FjdGlvbklkOiByZXNwb25zZS5oZWFkZXJzW1widHJhbnNhY3Rpb24taWRcIl0gfSwgXCJHZXQgU3VydmV5IEludml0ZSBMaW5rIFN1Y2NlZWRlZFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoZGF0YSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzMgLypicmVhayovLCAzXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JfMTAgPSBfYS5zZW50KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGFwc2VkVGltZUluTWlsbGlzZWNvbmRzID0gdGltZXIubWlsbGlTZWNvbmRzRWxhcHNlZDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmxvZ2dlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmxvZyhMb2dMZXZlbF8xLkxvZ0xldmVsLkVSUk9SLCBFbnVtc18yLk9DU0RLVGVsZW1ldHJ5RXZlbnQuR0VUU1VSVkVZSU5WSVRFTElOS0ZBSUxFRCwgeyBFeGNlcHRpb25EZXRhaWxzOiBlcnJvcl8xMCwgRWxhcHNlZFRpbWVJbk1pbGxpc2Vjb25kczogZWxhcHNlZFRpbWVJbk1pbGxpc2Vjb25kcyB9LCBcIkdldCBTdXJ2ZXkgSW52aXRlIExpbmsgRmFpbGVkXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzMgLypicmVhayovLCAzXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAzOiByZXR1cm4gWzIgLypyZXR1cm4qL107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH0pOyB9KV07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBHZXQgY2hhdCB0cmFuc2NyaXB0cyBmb3IgY3VzdG9tZXIuXG4gICAgICogQHBhcmFtIHJlcXVlc3RJZCBSZXF1ZXN0SWQgb2YgdGhlIG9tbmljaGFubmVsIHNlc3Npb24uXG4gICAgICogQHBhcmFtIGNoYXRJZCBDaGF0IHRocmVhZCBJZC5cbiAgICAgKiBAcGFyYW0gdG9rZW4gU2t5cGUgdG9rZW4uXG4gICAgICogQHBhcmFtIGdldENoYXRUcmFuc2NyaXB0c09wdGlvbmFsUGFyYW1zIE9wdGlvbmFsIHBhcmFtZXRlcnMgZm9yIGdldCBjaGF0IHRyYW5zY3JpcHRzLlxuICAgICAqL1xuICAgIFNESy5wcm90b3R5cGUuZ2V0Q2hhdFRyYW5zY3JpcHRzID0gZnVuY3Rpb24gKHJlcXVlc3RJZCwgY2hhdElkLCB0b2tlbiwgZ2V0Q2hhdFRyYW5zY3JpcHRzT3B0aW9uYWxQYXJhbXMpIHtcbiAgICAgICAgaWYgKGdldENoYXRUcmFuc2NyaXB0c09wdGlvbmFsUGFyYW1zID09PSB2b2lkIDApIHsgZ2V0Q2hhdFRyYW5zY3JpcHRzT3B0aW9uYWxQYXJhbXMgPSB7fTsgfVxuICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgdGltZXIsIGVuZHBvaW50LCBheGlvc0luc3RhbmNlLCBhdXRoZW50aWNhdGVkVXNlclRva2VuLCBjdXJyZW50TGl2ZUNoYXRWZXJzaW9uLCBoZWFkZXJzLCBvcHRpb25zO1xuICAgICAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgICAgICB0aW1lciA9IFRpbWVyXzEuVGltZXIuVElNRVIoKTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5sb2dnZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2dnZXIubG9nKExvZ0xldmVsXzEuTG9nTGV2ZWwuSU5GTywgRW51bXNfMi5PQ1NES1RlbGVtZXRyeUV2ZW50LkdFVENIQVRUUkFOU0NSSVBUU1RBUlRFRCwgeyBSZXF1ZXN0SWQ6IHJlcXVlc3RJZCB9LCBcIkdldCBDaGF0IFRyYW5zY3JpcHQgU3RhcnRlZFwiKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZW5kcG9pbnQgPSB0aGlzLm9tbmljaGFubmVsQ29uZmlndXJhdGlvbi5vcmdVcmwgKyBcIi9cIiArIE9tbmljaGFubmVsRW5kcG9pbnRzXzEuZGVmYXVsdC5MaXZlQ2hhdEdldENoYXRUcmFuc2NyaXB0UGF0aCArIFwiL1wiICsgY2hhdElkICsgXCIvXCIgKyByZXF1ZXN0SWQgKyBcIj9jaGFubmVsSWQ9XCIgKyB0aGlzLm9tbmljaGFubmVsQ29uZmlndXJhdGlvbi5jaGFubmVsSWQ7XG4gICAgICAgICAgICAgICAgYXhpb3NJbnN0YW5jZSA9IGF4aW9zXzEuZGVmYXVsdC5jcmVhdGUoKTtcbiAgICAgICAgICAgICAgICBheGlvc1JldHJ5XzEuZGVmYXVsdChheGlvc0luc3RhbmNlLCB7IHJldHJpZXM6IHRoaXMuY29uZmlndXJhdGlvbi5tYXhSZXF1ZXN0UmV0cmllc09uRmFpbHVyZSB9KTtcbiAgICAgICAgICAgICAgICBhdXRoZW50aWNhdGVkVXNlclRva2VuID0gZ2V0Q2hhdFRyYW5zY3JpcHRzT3B0aW9uYWxQYXJhbXMuYXV0aGVudGljYXRlZFVzZXJUb2tlbiwgY3VycmVudExpdmVDaGF0VmVyc2lvbiA9IGdldENoYXRUcmFuc2NyaXB0c09wdGlvbmFsUGFyYW1zLmN1cnJlbnRMaXZlQ2hhdFZlcnNpb247XG4gICAgICAgICAgICAgICAgaGVhZGVycyA9IENvbnN0YW50c18xLmRlZmF1bHQuZGVmYXVsdEhlYWRlcnM7XG4gICAgICAgICAgICAgICAgaGVhZGVyc1tPbW5pY2hhbm5lbEhUVFBIZWFkZXJzXzEuZGVmYXVsdC5vcmdhbml6YXRpb25JZF0gPSB0aGlzLm9tbmljaGFubmVsQ29uZmlndXJhdGlvbi5vcmdJZDtcbiAgICAgICAgICAgICAgICBoZWFkZXJzW09tbmljaGFubmVsSFRUUEhlYWRlcnNfMS5kZWZhdWx0LndpZGdldEFwcElkXSA9IHRoaXMub21uaWNoYW5uZWxDb25maWd1cmF0aW9uLndpZGdldElkO1xuICAgICAgICAgICAgICAgIGhlYWRlcnNbT21uaWNoYW5uZWxIVFRQSGVhZGVyc18xLmRlZmF1bHQuYXV0aG9yaXphdGlvbl0gPSB0b2tlbjtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5saXZlQ2hhdFZlcnNpb24gPT09IEVudW1zXzEuTGl2ZUNoYXRWZXJzaW9uLlYyIHx8IChjdXJyZW50TGl2ZUNoYXRWZXJzaW9uICYmIGN1cnJlbnRMaXZlQ2hhdFZlcnNpb24gPT09IEVudW1zXzEuTGl2ZUNoYXRWZXJzaW9uLlYyKSkge1xuICAgICAgICAgICAgICAgICAgICBlbmRwb2ludCA9IHRoaXMub21uaWNoYW5uZWxDb25maWd1cmF0aW9uLm9yZ1VybCArIFwiL1wiICsgT21uaWNoYW5uZWxFbmRwb2ludHNfMS5kZWZhdWx0LkxpdmVDaGF0djJHZXRDaGF0VHJhbnNjcmlwdFBhdGggKyBcIi9cIiArIGNoYXRJZCArIFwiL1wiICsgcmVxdWVzdElkICsgXCI/Y2hhbm5lbElkPVwiICsgdGhpcy5vbW5pY2hhbm5lbENvbmZpZ3VyYXRpb24uY2hhbm5lbElkO1xuICAgICAgICAgICAgICAgICAgICBpZiAoYXV0aGVudGljYXRlZFVzZXJUb2tlbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kcG9pbnQgPSB0aGlzLm9tbmljaGFubmVsQ29uZmlndXJhdGlvbi5vcmdVcmwgKyBcIi9cIiArIE9tbmljaGFubmVsRW5kcG9pbnRzXzEuZGVmYXVsdC5MaXZlQ2hhdHYyQXV0aEdldENoYXRUcmFuc2NyaXB0UGF0aCArIFwiL1wiICsgY2hhdElkICsgXCIvXCIgKyByZXF1ZXN0SWQgKyBcIj9jaGFubmVsSWQ9XCIgKyB0aGlzLm9tbmljaGFubmVsQ29uZmlndXJhdGlvbi5jaGFubmVsSWQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoYXV0aGVudGljYXRlZFVzZXJUb2tlbikge1xuICAgICAgICAgICAgICAgICAgICBlbmRwb2ludCA9IHRoaXMub21uaWNoYW5uZWxDb25maWd1cmF0aW9uLm9yZ1VybCArIFwiL1wiICsgT21uaWNoYW5uZWxFbmRwb2ludHNfMS5kZWZhdWx0LkxpdmVDaGF0QXV0aEdldENoYXRUcmFuc2NyaXB0UGF0aCArIFwiL1wiICsgY2hhdElkICsgXCIvXCIgKyByZXF1ZXN0SWQgKyBcIj9jaGFubmVsSWQ9XCIgKyB0aGlzLm9tbmljaGFubmVsQ29uZmlndXJhdGlvbi5jaGFubmVsSWQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG9wdGlvbnMgPSB7XG4gICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IGhlYWRlcnMsXG4gICAgICAgICAgICAgICAgICAgIG1ldGhvZDogXCJHRVRcIixcbiAgICAgICAgICAgICAgICAgICAgdXJsOiBlbmRwb2ludFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi8sIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsgcmV0dXJuIF9fYXdhaXRlcihfdGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSwgZWxhcHNlZFRpbWVJbk1pbGxpc2Vjb25kcywgZGF0YSwgZXJyb3JfMTEsIGVsYXBzZWRUaW1lSW5NaWxsaXNlY29uZHM7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IodGhpcywgZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChfYS5sYWJlbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYS50cnlzLnB1c2goWzAsIDIsICwgM10pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFs0IC8qeWllbGQqLywgYXhpb3NJbnN0YW5jZShvcHRpb25zKV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gX2Euc2VudCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxhcHNlZFRpbWVJbk1pbGxpc2Vjb25kcyA9IHRpbWVyLm1pbGxpU2Vjb25kc0VsYXBzZWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhID0gcmVzcG9uc2UuZGF0YTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmxvZ2dlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmxvZyhMb2dMZXZlbF8xLkxvZ0xldmVsLklORk8sIEVudW1zXzIuT0NTREtUZWxlbWV0cnlFdmVudC5HRVRDSEFUVFJBTlNDUklQVFNVQ0NFRURFRCwgeyBSZXF1ZXN0SWQ6IHJlcXVlc3RJZCwgUmVnaW9uOiByZXNwb25zZS5kYXRhLlJlZ2lvbiwgRWxhcHNlZFRpbWVJbk1pbGxpc2Vjb25kczogZWxhcHNlZFRpbWVJbk1pbGxpc2Vjb25kcywgVHJhbnNhY3Rpb25JZDogcmVzcG9uc2UuaGVhZGVyc1tcInRyYW5zYWN0aW9uLWlkXCJdIH0sIFwiR2V0IENoYXQgVHJhbnNjcmlwdCBTdWNjZWVkZWRcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKGRhdGEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFszIC8qYnJlYWsqLywgM107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yXzExID0gX2Euc2VudCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxhcHNlZFRpbWVJbk1pbGxpc2Vjb25kcyA9IHRpbWVyLm1pbGxpU2Vjb25kc0VsYXBzZWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5sb2dnZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvZ2dlci5sb2coTG9nTGV2ZWxfMS5Mb2dMZXZlbC5FUlJPUiwgRW51bXNfMi5PQ1NES1RlbGVtZXRyeUV2ZW50LkdFVENIQVRUUkFOU0NSSVBURkFJTEVELCB7IFJlcXVlc3RJZDogcmVxdWVzdElkLCBFeGNlcHRpb25EZXRhaWxzOiBlcnJvcl8xMSwgRWxhcHNlZFRpbWVJbk1pbGxpc2Vjb25kczogZWxhcHNlZFRpbWVJbk1pbGxpc2Vjb25kcyB9LCBcIkdldCBDaGF0IFRyYW5zY3JpcHQgRmFpbGVkXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGVycm9yXzExKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMyAvKmJyZWFrKi8sIDNdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDM6IHJldHVybiBbMiAvKnJldHVybiovXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfSk7IH0pXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEVtYWlsIHRyYW5zY3JpcHQgdG8gY3VzdG9tZXIuXG4gICAgICogQHBhcmFtIHJlcXVlc3RJZCBSZXF1ZXN0SWQgb2YgdGhlIG9tbmljaGFubmVsIHNlc3Npb24uXG4gICAgICogQHBhcmFtIHRva2VuIFNreXBlIHRva2VuLlxuICAgICAqIEBwYXJhbSBlbWFpbFJlcXVlc3RCb2R5IEVtYWlsIHJlcXVlc3QgYm9keS5cbiAgICAgKiBAcGFyYW0gZW1haWxUcmFuc2NyaXB0T3B0aW9uYWxQYXJhbXMgT3B0aW9uYWwgcGFyYW1ldGVycyBmb3IgZW1haWwgdHJhbnNjcmlwdC5cbiAgICAgKi9cbiAgICBTREsucHJvdG90eXBlLmVtYWlsVHJhbnNjcmlwdCA9IGZ1bmN0aW9uIChyZXF1ZXN0SWQsIHRva2VuLCBlbWFpbFJlcXVlc3RCb2R5LCBlbWFpbFRyYW5zY3JpcHRPcHRpb25hbFBhcmFtcykge1xuICAgICAgICBpZiAoZW1haWxUcmFuc2NyaXB0T3B0aW9uYWxQYXJhbXMgPT09IHZvaWQgMCkgeyBlbWFpbFRyYW5zY3JpcHRPcHRpb25hbFBhcmFtcyA9IHt9OyB9XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciB0aW1lciwgZW5kcG9pbnQsIGF4aW9zSW5zdGFuY2UsIGF1dGhlbnRpY2F0ZWRVc2VyVG9rZW4sIGhlYWRlcnMsIG9wdGlvbnM7XG4gICAgICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgICAgIHRpbWVyID0gVGltZXJfMS5UaW1lci5USU1FUigpO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmxvZ2dlcikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmxvZ2dlci5sb2coTG9nTGV2ZWxfMS5Mb2dMZXZlbC5JTkZPLCBFbnVtc18yLk9DU0RLVGVsZW1ldHJ5RXZlbnQuRU1BSUxUUkFOU0NSSVBUU1RBUlRFRCwgeyBSZXF1ZXN0SWQ6IHJlcXVlc3RJZCB9LCBcIkVtYWlsIFRyYW5zY3JpcHQgU3RhcnRlZFwiKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZW5kcG9pbnQgPSB0aGlzLm9tbmljaGFubmVsQ29uZmlndXJhdGlvbi5vcmdVcmwgKyBcIi9cIiArIE9tbmljaGFubmVsRW5kcG9pbnRzXzEuZGVmYXVsdC5MaXZlQ2hhdFRyYW5zY3JpcHRFbWFpbFJlcXVlc3RQYXRoICsgXCIvXCIgKyByZXF1ZXN0SWQgKyBcIj9jaGFubmVsSWQ9XCIgKyB0aGlzLm9tbmljaGFubmVsQ29uZmlndXJhdGlvbi5jaGFubmVsSWQ7XG4gICAgICAgICAgICAgICAgYXhpb3NJbnN0YW5jZSA9IGF4aW9zXzEuZGVmYXVsdC5jcmVhdGUoKTtcbiAgICAgICAgICAgICAgICBheGlvc1JldHJ5XzEuZGVmYXVsdChheGlvc0luc3RhbmNlLCB7IHJldHJpZXM6IHRoaXMuY29uZmlndXJhdGlvbi5tYXhSZXF1ZXN0UmV0cmllc09uRmFpbHVyZSB9KTtcbiAgICAgICAgICAgICAgICBhdXRoZW50aWNhdGVkVXNlclRva2VuID0gZW1haWxUcmFuc2NyaXB0T3B0aW9uYWxQYXJhbXMuYXV0aGVudGljYXRlZFVzZXJUb2tlbjtcbiAgICAgICAgICAgICAgICBoZWFkZXJzID0gQ29uc3RhbnRzXzEuZGVmYXVsdC5kZWZhdWx0SGVhZGVycztcbiAgICAgICAgICAgICAgICBoZWFkZXJzW09tbmljaGFubmVsSFRUUEhlYWRlcnNfMS5kZWZhdWx0Lm9yZ2FuaXphdGlvbklkXSA9IHRoaXMub21uaWNoYW5uZWxDb25maWd1cmF0aW9uLm9yZ0lkO1xuICAgICAgICAgICAgICAgIGhlYWRlcnNbT21uaWNoYW5uZWxIVFRQSGVhZGVyc18xLmRlZmF1bHQud2lkZ2V0QXBwSWRdID0gdGhpcy5vbW5pY2hhbm5lbENvbmZpZ3VyYXRpb24ud2lkZ2V0SWQ7XG4gICAgICAgICAgICAgICAgaGVhZGVyc1tPbW5pY2hhbm5lbEhUVFBIZWFkZXJzXzEuZGVmYXVsdC5hdXRob3JpemF0aW9uXSA9IHRva2VuO1xuICAgICAgICAgICAgICAgIGlmIChhdXRoZW50aWNhdGVkVXNlclRva2VuKSB7XG4gICAgICAgICAgICAgICAgICAgIGVuZHBvaW50ID0gdGhpcy5vbW5pY2hhbm5lbENvbmZpZ3VyYXRpb24ub3JnVXJsICsgXCIvXCIgKyBPbW5pY2hhbm5lbEVuZHBvaW50c18xLmRlZmF1bHQuTGl2ZUNoYXRBdXRoVHJhbnNjcmlwdEVtYWlsUmVxdWVzdFBhdGggKyBcIi9cIiArIHJlcXVlc3RJZCArIFwiP2NoYW5uZWxJZD1cIiArIHRoaXMub21uaWNoYW5uZWxDb25maWd1cmF0aW9uLmNoYW5uZWxJZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgb3B0aW9ucyA9IHtcbiAgICAgICAgICAgICAgICAgICAgZGF0YTogSlNPTi5zdHJpbmdpZnkoZW1haWxSZXF1ZXN0Qm9keSksXG4gICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IGhlYWRlcnMsXG4gICAgICAgICAgICAgICAgICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgICAgICAgICAgICAgICAgIHVybDogZW5kcG9pbnRcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovLCBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7IHJldHVybiBfX2F3YWl0ZXIoX3RoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UsIGVsYXBzZWRUaW1lSW5NaWxsaXNlY29uZHMsIGVycm9yXzEyLCBlbGFwc2VkVGltZUluTWlsbGlzZWNvbmRzO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoX2EubGFiZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2EudHJ5cy5wdXNoKFswLCAyLCAsIDNdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbNCAvKnlpZWxkKi8sIGF4aW9zSW5zdGFuY2Uob3B0aW9ucyldO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZSA9IF9hLnNlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsYXBzZWRUaW1lSW5NaWxsaXNlY29uZHMgPSB0aW1lci5taWxsaVNlY29uZHNFbGFwc2VkO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubG9nZ2VyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2dnZXIubG9nKExvZ0xldmVsXzEuTG9nTGV2ZWwuSU5GTywgRW51bXNfMi5PQ1NES1RlbGVtZXRyeUV2ZW50LkVNQUlMVFJBTlNDUklQVFNVQ0NFRURFRCwgeyBSZXF1ZXN0SWQ6IHJlcXVlc3RJZCwgUmVnaW9uOiByZXNwb25zZS5kYXRhLlJlZ2lvbiwgRWxhcHNlZFRpbWVJbk1pbGxpc2Vjb25kczogZWxhcHNlZFRpbWVJbk1pbGxpc2Vjb25kcywgVHJhbnNhY3Rpb25JZDogcmVzcG9uc2UuaGVhZGVyc1tcInRyYW5zYWN0aW9uLWlkXCJdIH0sIFwiRW1haWwgVHJhbnNjcmlwdCBTdWNjZWVkZWRcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzMgLypicmVhayovLCAzXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JfMTIgPSBfYS5zZW50KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGFwc2VkVGltZUluTWlsbGlzZWNvbmRzID0gdGltZXIubWlsbGlTZWNvbmRzRWxhcHNlZDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmxvZ2dlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmxvZyhMb2dMZXZlbF8xLkxvZ0xldmVsLkVSUk9SLCBFbnVtc18yLk9DU0RLVGVsZW1ldHJ5RXZlbnQuRU1BSUxUUkFOU0NSSVBURkFJTEVELCB7IFJlcXVlc3RJZDogcmVxdWVzdElkLCBFeGNlcHRpb25EZXRhaWxzOiBlcnJvcl8xMiwgRWxhcHNlZFRpbWVJbk1pbGxpc2Vjb25kczogZWxhcHNlZFRpbWVJbk1pbGxpc2Vjb25kcyB9LCBcIkVtYWlsIFRyYW5zY3JpcHQgRmFpbGVkXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzMgLypicmVhayovLCAzXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAzOiByZXR1cm4gWzIgLypyZXR1cm4qL107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH0pOyB9KV07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBGZXRjaCBkYXRhIG1hc2tpbmcgaW5mbyBvZiB0aGUgb3JnLlxuICAgICAqIEBwYXJhbSByZXF1ZXN0SWQgUmVxdWVzdElkIG9mIHRoZSBvbW5pY2hhbm5lbCBzZXNzaW9uIChPcHRpb25hbCkuXG4gICAgICovXG4gICAgU0RLLnByb3RvdHlwZS5mZXRjaERhdGFNYXNraW5nSW5mbyA9IGZ1bmN0aW9uIChyZXF1ZXN0SWQpIHtcbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIHRpbWVyLCBlbmRwb2ludCwgYXhpb3NJbnN0YW5jZSwgaGVhZGVycywgb3B0aW9ucztcbiAgICAgICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IodGhpcywgZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgICAgICAgICAgdGltZXIgPSBUaW1lcl8xLlRpbWVyLlRJTUVSKCk7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubG9nZ2VyKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmxvZyhMb2dMZXZlbF8xLkxvZ0xldmVsLklORk8sIEVudW1zXzIuT0NTREtUZWxlbWV0cnlFdmVudC5GRVRDSERBVEFNQVNLSU5HU1RBUlRFRCwgeyBSZXF1ZXN0SWQ6IHJlcXVlc3RJZCB9LCBcIkZldGNoIERhdGEgTWFza2luZyBTdGFydGVkXCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoIXJlcXVlc3RJZCkge1xuICAgICAgICAgICAgICAgICAgICByZXF1ZXN0SWQgPSB1dWlkXzEudXVpZHY0KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVuZHBvaW50ID0gdGhpcy5vbW5pY2hhbm5lbENvbmZpZ3VyYXRpb24ub3JnVXJsICsgXCIvXCIgKyBPbW5pY2hhbm5lbEVuZHBvaW50c18xLmRlZmF1bHQuTGl2ZUNoYXRGZXRjaERhdGFNYXNraW5nSW5mb1BhdGggKyBcIi9cIiArIHRoaXMub21uaWNoYW5uZWxDb25maWd1cmF0aW9uLm9yZ0lkO1xuICAgICAgICAgICAgICAgIGF4aW9zSW5zdGFuY2UgPSBheGlvc18xLmRlZmF1bHQuY3JlYXRlKCk7XG4gICAgICAgICAgICAgICAgYXhpb3NSZXRyeV8xLmRlZmF1bHQoYXhpb3NJbnN0YW5jZSwgeyByZXRyaWVzOiB0aGlzLmNvbmZpZ3VyYXRpb24ubWF4UmVxdWVzdFJldHJpZXNPbkZhaWx1cmUgfSk7XG4gICAgICAgICAgICAgICAgaGVhZGVycyA9IENvbnN0YW50c18xLmRlZmF1bHQuZGVmYXVsdEhlYWRlcnM7XG4gICAgICAgICAgICAgICAgaGVhZGVyc1tPbW5pY2hhbm5lbEhUVFBIZWFkZXJzXzEuZGVmYXVsdC5vcmdhbml6YXRpb25JZF0gPSB0aGlzLm9tbmljaGFubmVsQ29uZmlndXJhdGlvbi5vcmdJZDtcbiAgICAgICAgICAgICAgICBoZWFkZXJzW09tbmljaGFubmVsSFRUUEhlYWRlcnNfMS5kZWZhdWx0LnJlcXVlc3RJZF0gPSByZXF1ZXN0SWQ7XG4gICAgICAgICAgICAgICAgb3B0aW9ucyA9IHtcbiAgICAgICAgICAgICAgICAgICAgaGVhZGVyczogaGVhZGVycyxcbiAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiBcIkdFVFwiLFxuICAgICAgICAgICAgICAgICAgICB1cmw6IGVuZHBvaW50XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qLywgbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgeyByZXR1cm4gX19hd2FpdGVyKF90aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlLCBlbGFwc2VkVGltZUluTWlsbGlzZWNvbmRzLCBkYXRhLCBlcnJvcl8xMywgZWxhcHNlZFRpbWVJbk1pbGxpc2Vjb25kcztcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKF9hLmxhYmVsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9hLnRyeXMucHVzaChbMCwgMiwgLCAzXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzQgLyp5aWVsZCovLCBheGlvc0luc3RhbmNlKG9wdGlvbnMpXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UgPSBfYS5zZW50KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGFwc2VkVGltZUluTWlsbGlzZWNvbmRzID0gdGltZXIubWlsbGlTZWNvbmRzRWxhcHNlZDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgPSByZXNwb25zZS5kYXRhO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubG9nZ2VyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2dnZXIubG9nKExvZ0xldmVsXzEuTG9nTGV2ZWwuSU5GTywgRW51bXNfMi5PQ1NES1RlbGVtZXRyeUV2ZW50LkZFVENIREFUQU1BU0tJTkdTVUNDRUVERUQsIHsgUmVxdWVzdElkOiByZXF1ZXN0SWQsIFJlZ2lvbjogcmVzcG9uc2UuZGF0YS5SZWdpb24sIEVsYXBzZWRUaW1lSW5NaWxsaXNlY29uZHM6IGVsYXBzZWRUaW1lSW5NaWxsaXNlY29uZHMsIFRyYW5zYWN0aW9uSWQ6IHJlc3BvbnNlLmhlYWRlcnNbXCJ0cmFuc2FjdGlvbi1pZFwiXSB9LCBcIkZldGNoIERhdGEgTWFza2luZyBTdWNjZWVkZWRcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKGRhdGEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFszIC8qYnJlYWsqLywgM107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yXzEzID0gX2Euc2VudCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxhcHNlZFRpbWVJbk1pbGxpc2Vjb25kcyA9IHRpbWVyLm1pbGxpU2Vjb25kc0VsYXBzZWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5sb2dnZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvZ2dlci5sb2coTG9nTGV2ZWxfMS5Mb2dMZXZlbC5FUlJPUiwgRW51bXNfMi5PQ1NES1RlbGVtZXRyeUV2ZW50LkZFVENIREFUQU1BU0tJTkdGQUlMRUQsIHsgUmVxdWVzdElkOiByZXF1ZXN0SWQsIEV4Y2VwdGlvbkRldGFpbHM6IGVycm9yXzEzLCBFbGFwc2VkVGltZUluTWlsbGlzZWNvbmRzOiBlbGFwc2VkVGltZUluTWlsbGlzZWNvbmRzIH0sIFwiRmV0Y2ggRGF0YSBNYXNraW5nIEZhaWxlZFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFszIC8qYnJlYWsqLywgM107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMzogcmV0dXJuIFsyIC8qcmV0dXJuKi9dO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9KTsgfSldO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogTWFrZXMgYSBzZWNvbmRhcnkgY2hhbm5lbCBldmVudCBuZXR3b3JrIGNhbGwgdG8gT21uaWNoYW5uZWwuXG4gICAgICogQHBhcmFtIHJlcXVlc3RJZCBSZXF1ZXN0SWQgdG8gdXNlIGZvciBzZWNvbmRhcnkgY2hhbm5lbCBldmVudFxuICAgICAqIEBwYXJhbSBzZWNvbmRhcnlDaGFubmVsRXZlbnRSZXF1ZXN0Qm9keSBzZWNvbmRhcnlDaGFubmVsIGV2ZW50IHJlcXVlc3QgYm9keVxuICAgICAqIEBwYXJhbSBzZWNvbmRhcnlDaGFubmVsRXZlbnRPcHRpb25hbFBhcmFtcyBPcHRpb25hbCBwYXJhbWV0ZXJzIGZvciBzZWNvbmRhcnkgY2hhbm5lbCBldmVudHMuXG4gICAgICovXG4gICAgU0RLLnByb3RvdHlwZS5tYWtlU2Vjb25kYXJ5Q2hhbm5lbEV2ZW50UmVxdWVzdCA9IGZ1bmN0aW9uIChyZXF1ZXN0SWQsIHNlY29uZGFyeUNoYW5uZWxFdmVudFJlcXVlc3RCb2R5LCBzZWNvbmRhcnlDaGFubmVsRXZlbnRPcHRpb25hbFBhcmFtcykge1xuICAgICAgICBpZiAoc2Vjb25kYXJ5Q2hhbm5lbEV2ZW50T3B0aW9uYWxQYXJhbXMgPT09IHZvaWQgMCkgeyBzZWNvbmRhcnlDaGFubmVsRXZlbnRPcHRpb25hbFBhcmFtcyA9IHt9OyB9XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciB0aW1lciwgZW5kcG9pbnQsIGF4aW9zSW5zdGFuY2UsIGF1dGhlbnRpY2F0ZWRVc2VyVG9rZW4sIGhlYWRlcnMsIG9wdGlvbnMsIHJlc3BvbnNlLCBlbGFwc2VkVGltZUluTWlsbGlzZWNvbmRzLCBkYXRhLCBlcnJvcl8xNCwgZWxhcHNlZFRpbWVJbk1pbGxpc2Vjb25kcztcbiAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKF9hLmxhYmVsKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVyID0gVGltZXJfMS5UaW1lci5USU1FUigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubG9nZ2VyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2dnZXIubG9nKExvZ0xldmVsXzEuTG9nTGV2ZWwuSU5GTywgRW51bXNfMi5PQ1NES1RlbGVtZXRyeUV2ZW50LlNFQ09OREFSWUNIQU5ORUxFVkVOVFJFUVVFU1RTVEFSVEVELCB7IFJlcXVlc3RJZDogcmVxdWVzdElkIH0sIFwiU2Vjb25kYXJ5IENoYW5uZWwgRXZlbnQgUmVxdWVzdCBTdGFydGVkXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZW5kcG9pbnQgPSB0aGlzLm9tbmljaGFubmVsQ29uZmlndXJhdGlvbi5vcmdVcmwgKyBcIi9cIiArIE9tbmljaGFubmVsRW5kcG9pbnRzXzEuZGVmYXVsdC5MaXZlQ2hhdFNlY29uZGFyeUNoYW5uZWxFdmVudFBhdGggKyBcIi9cIiArIHRoaXMub21uaWNoYW5uZWxDb25maWd1cmF0aW9uLm9yZ0lkICsgXCIvXCIgKyB0aGlzLm9tbmljaGFubmVsQ29uZmlndXJhdGlvbi53aWRnZXRJZCArIFwiL1wiICsgcmVxdWVzdElkO1xuICAgICAgICAgICAgICAgICAgICAgICAgYXhpb3NJbnN0YW5jZSA9IGF4aW9zXzEuZGVmYXVsdC5jcmVhdGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGF4aW9zUmV0cnlfMS5kZWZhdWx0KGF4aW9zSW5zdGFuY2UsIHsgcmV0cmllczogdGhpcy5jb25maWd1cmF0aW9uLm1heFJlcXVlc3RSZXRyaWVzT25GYWlsdXJlIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgYXV0aGVudGljYXRlZFVzZXJUb2tlbiA9IHNlY29uZGFyeUNoYW5uZWxFdmVudE9wdGlvbmFsUGFyYW1zLmF1dGhlbnRpY2F0ZWRVc2VyVG9rZW47XG4gICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzID0gQ29uc3RhbnRzXzEuZGVmYXVsdC5kZWZhdWx0SGVhZGVycztcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnNbT21uaWNoYW5uZWxIVFRQSGVhZGVyc18xLmRlZmF1bHQub3JnYW5pemF0aW9uSWRdID0gdGhpcy5vbW5pY2hhbm5lbENvbmZpZ3VyYXRpb24ub3JnSWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoYXV0aGVudGljYXRlZFVzZXJUb2tlbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnNbT21uaWNoYW5uZWxIVFRQSGVhZGVyc18xLmRlZmF1bHQuYXV0aGVudGljYXRlZFVzZXJUb2tlbl0gPSBhdXRoZW50aWNhdGVkVXNlclRva2VuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZHBvaW50ID0gdGhpcy5vbW5pY2hhbm5lbENvbmZpZ3VyYXRpb24ub3JnVXJsICsgXCIvXCIgKyBPbW5pY2hhbm5lbEVuZHBvaW50c18xLmRlZmF1bHQuTGl2ZUNoYXRBdXRoU2Vjb25kYXJ5Q2hhbm5lbEV2ZW50UGF0aCArIFwiL1wiICsgdGhpcy5vbW5pY2hhbm5lbENvbmZpZ3VyYXRpb24ub3JnSWQgKyBcIi9cIiArIHRoaXMub21uaWNoYW5uZWxDb25maWd1cmF0aW9uLndpZGdldElkICsgXCIvXCIgKyByZXF1ZXN0SWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRwb2ludCArPSBcIj9jaGFubmVsSWQ9XCIgKyBDb25zdGFudHNfMS5kZWZhdWx0LmRlZmF1bHRDaGFubmVsSWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IEpTT04uc3RyaW5naWZ5KHNlY29uZGFyeUNoYW5uZWxFdmVudFJlcXVlc3RCb2R5KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiBoZWFkZXJzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBlbmRwb2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIF9hLmxhYmVsID0gMTtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICAgICAgX2EudHJ5cy5wdXNoKFsxLCAzLCAsIDRdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbNCAvKnlpZWxkKi8sIGF4aW9zSW5zdGFuY2Uob3B0aW9ucyldO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZSA9IF9hLnNlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsYXBzZWRUaW1lSW5NaWxsaXNlY29uZHMgPSB0aW1lci5taWxsaVNlY29uZHNFbGFwc2VkO1xuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSA9IHJlc3BvbnNlLmRhdGE7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5sb2dnZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvZ2dlci5sb2coTG9nTGV2ZWxfMS5Mb2dMZXZlbC5JTkZPLCBFbnVtc18yLk9DU0RLVGVsZW1ldHJ5RXZlbnQuU0VDT05EQVJZQ0hBTk5FTEVWRU5UUkVRVUVTVFNVQ0NFRURFRCwgeyBSZXF1ZXN0SWQ6IHJlcXVlc3RJZCwgUmVnaW9uOiBkYXRhLlJlZ2lvbiwgRWxhcHNlZFRpbWVJbk1pbGxpc2Vjb25kczogZWxhcHNlZFRpbWVJbk1pbGxpc2Vjb25kcywgVHJhbnNhY3Rpb25JZDogcmVzcG9uc2UuaGVhZGVyc1tcInRyYW5zYWN0aW9uLWlkXCJdIH0sIFwiU2Vjb25kYXJ5IENoYW5uZWwgRXZlbnQgUmVxdWVzdCBTdWNjZWVkZWRcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzMgLypicmVhayovLCA0XTtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JfMTQgPSBfYS5zZW50KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbGFwc2VkVGltZUluTWlsbGlzZWNvbmRzID0gdGltZXIubWlsbGlTZWNvbmRzRWxhcHNlZDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmxvZ2dlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmxvZyhMb2dMZXZlbF8xLkxvZ0xldmVsLkVSUk9SLCBFbnVtc18yLk9DU0RLVGVsZW1ldHJ5RXZlbnQuU0VDT05EQVJZQ0hBTk5FTEVWRU5UUkVRVUVTVEZBSUxFRCwgeyBSZXF1ZXN0SWQ6IHJlcXVlc3RJZCwgRXhjZXB0aW9uRGV0YWlsczogZXJyb3JfMTQsIEVsYXBzZWRUaW1lSW5NaWxsaXNlY29uZHM6IGVsYXBzZWRUaW1lSW5NaWxsaXNlY29uZHMgfSwgXCJTZWNvbmRhcnkgQ2hhbm5lbCBFdmVudCBSZXF1ZXN0IEZhaWxlZFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IGVycm9yXzE0O1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6IHJldHVybiBbMiAvKnJldHVybiovXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICAvKiogU2VuZCB0eXBpbmcgaW5kaWNhdG9yXG4gICAgICogQHBhcmFtIHJlcXVlc3RJZCBSZXF1ZXN0SWQgb2YgdGhlIG9tbmljaGFubmVsIHNlc3Npb24uXG4gICAgICovXG4gICAgU0RLLnByb3RvdHlwZS5zZW5kVHlwaW5nSW5kaWNhdG9yID0gZnVuY3Rpb24gKHJlcXVlc3RJZCwgY3VycmVudExpdmVDaGF0VmVyc2lvbikge1xuICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgdGltZXIsIGVuZHBvaW50LCBheGlvc0luc3RhbmNlLCBoZWFkZXJzLCBvcHRpb25zO1xuICAgICAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgICAgICAvLyBhdm9pZGluZyBsb2dnaW5nIEluZm8gZm9yIHR5cGluZ2luZGljYXRvciB0byByZWR1Y2UgbG9nIHRyYWZmaWNcbiAgICAgICAgICAgICAgICBpZiAoIWN1cnJlbnRMaXZlQ2hhdFZlcnNpb24gfHwgY3VycmVudExpdmVDaGF0VmVyc2lvbiAhPT0gRW51bXNfMS5MaXZlQ2hhdFZlcnNpb24uVjIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi8sIFByb21pc2UucmVzb2x2ZSgpXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGltZXIgPSBUaW1lcl8xLlRpbWVyLlRJTUVSKCk7XG4gICAgICAgICAgICAgICAgaWYgKCFjdXJyZW50TGl2ZUNoYXRWZXJzaW9uIHx8IGN1cnJlbnRMaXZlQ2hhdFZlcnNpb24gIT09IEVudW1zXzEuTGl2ZUNoYXRWZXJzaW9uLlYyKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVHlwaW5nIGluZGljYXRvciBpcyBvbmx5IHN1cHBvcnRlZCBvbiB2MicpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbmRwb2ludCA9IHRoaXMub21uaWNoYW5uZWxDb25maWd1cmF0aW9uLm9yZ1VybCArIFwiL1wiICsgT21uaWNoYW5uZWxFbmRwb2ludHNfMS5kZWZhdWx0LlNlbmRUeXBpbmdJbmRpY2F0b3JQYXRoICsgXCIvXCIgKyByZXF1ZXN0SWQ7XG4gICAgICAgICAgICAgICAgYXhpb3NJbnN0YW5jZSA9IGF4aW9zXzEuZGVmYXVsdC5jcmVhdGUoKTtcbiAgICAgICAgICAgICAgICBoZWFkZXJzID0gQ29uc3RhbnRzXzEuZGVmYXVsdC5kZWZhdWx0SGVhZGVycztcbiAgICAgICAgICAgICAgICBoZWFkZXJzW09tbmljaGFubmVsSFRUUEhlYWRlcnNfMS5kZWZhdWx0Lm9yZ2FuaXphdGlvbklkXSA9IHRoaXMub21uaWNoYW5uZWxDb25maWd1cmF0aW9uLm9yZ0lkO1xuICAgICAgICAgICAgICAgIG9wdGlvbnMgPSB7XG4gICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IGhlYWRlcnMsXG4gICAgICAgICAgICAgICAgICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgICAgICAgICAgICAgICAgIHVybDogZW5kcG9pbnRcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovLCBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7IHJldHVybiBfX2F3YWl0ZXIoX3RoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UsIGVsYXBzZWRUaW1lSW5NaWxsaXNlY29uZHMsIGRhdGEsIGVycm9yXzE1LCBlbGFwc2VkVGltZUluTWlsbGlzZWNvbmRzO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoX2EubGFiZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2EudHJ5cy5wdXNoKFswLCAyLCAsIDNdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbNCAvKnlpZWxkKi8sIGF4aW9zSW5zdGFuY2Uob3B0aW9ucyldO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZSA9IF9hLnNlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsYXBzZWRUaW1lSW5NaWxsaXNlY29uZHMgPSB0aW1lci5taWxsaVNlY29uZHNFbGFwc2VkO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSA9IHJlc3BvbnNlLmRhdGE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5sb2dnZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvZ2dlci5sb2coTG9nTGV2ZWxfMS5Mb2dMZXZlbC5JTkZPLCBFbnVtc18yLk9DU0RLVGVsZW1ldHJ5RXZlbnQuU0VORFRZUElOR0lORElDQVRPUlNVQ0NFRURFRCwgeyBSZXF1ZXN0SWQ6IHJlcXVlc3RJZCwgUmVnaW9uOiBkYXRhLlJlZ2lvbiwgRWxhcHNlZFRpbWVJbk1pbGxpc2Vjb25kczogZWxhcHNlZFRpbWVJbk1pbGxpc2Vjb25kcywgVHJhbnNhY3Rpb25JZDogcmVzcG9uc2UuaGVhZGVyc1tcInRyYW5zYWN0aW9uLWlkXCJdIH0sIFwiU2VuZCBUeXBpbmcgSW5kaWNhdG9yIFN1Y2NlZWRlZFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMyAvKmJyZWFrKi8sIDNdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcl8xNSA9IF9hLnNlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsYXBzZWRUaW1lSW5NaWxsaXNlY29uZHMgPSB0aW1lci5taWxsaVNlY29uZHNFbGFwc2VkO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubG9nZ2VyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2dnZXIubG9nKExvZ0xldmVsXzEuTG9nTGV2ZWwuRVJST1IsIEVudW1zXzIuT0NTREtUZWxlbWV0cnlFdmVudC5TRU5EVFlQSU5HSU5ESUNBVE9SRkFJTEVELCB7IFJlcXVlc3RJZDogcmVxdWVzdElkLCBFeGNlcHRpb25EZXRhaWxzOiBlcnJvcl8xNSwgRWxhcHNlZFRpbWVJbk1pbGxpc2Vjb25kczogZWxhcHNlZFRpbWVJbk1pbGxpc2Vjb25kcyB9LCBcIlNlbmQgVHlwaW5nIEluZGljYXRvciBGYWlsZWRcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWplY3QoZXJyb3JfMTUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFszIC8qYnJlYWsqLywgM107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMzogcmV0dXJuIFsyIC8qcmV0dXJuKi9dO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9KTsgfSldO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgU0RLLmRlZmF1bHRDb25maWd1cmF0aW9uID0ge1xuICAgICAgICBnZXRDaGF0VG9rZW5SZXRyeUNvdW50OiAzNSxcbiAgICAgICAgZ2V0Q2hhdFRva2VuVGltZUJldHdlZW5SZXRyaWVzT25GYWlsdXJlOiAxMDAwMCxcbiAgICAgICAgbWF4UmVxdWVzdFJldHJpZXNPbkZhaWx1cmU6IDNcbiAgICB9O1xuICAgIHJldHVybiBTREs7XG59KCkpO1xuZXhwb3J0cy5kZWZhdWx0ID0gU0RLO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgQ29uc3RhbnRzXzEgPSByZXF1aXJlKFwiLi9Db21tb24vQ29uc3RhbnRzXCIpO1xudmFyIE9DU0RLTG9nZ2VyXzEgPSByZXF1aXJlKFwiLi9Db21tb24vT0NTREtMb2dnZXJcIik7XG52YXIgU0RLXzEgPSByZXF1aXJlKFwiLi9TREtcIik7XG52YXIgU0RLUHJvdmlkZXIgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gU0RLUHJvdmlkZXIoKSB7XG4gICAgfVxuICAgIFNES1Byb3ZpZGVyLmdldFNESyA9IGZ1bmN0aW9uIChvbW5pY2hhbm5lbENvbmZpZ3VyYXRpb24sIGNvbmZpZ3VyYXRpb24sIGxvZ2dlcikge1xuICAgICAgICB2YXIgaWxvZ2dlciA9IG5ldyBPQ1NES0xvZ2dlcl8xLmRlZmF1bHQobG9nZ2VyKTtcbiAgICAgICAgcmV0dXJuIG5ldyBTREtfMS5kZWZhdWx0KHtcbiAgICAgICAgICAgIGNoYW5uZWxJZDogb21uaWNoYW5uZWxDb25maWd1cmF0aW9uLmNoYW5uZWxJZCB8fCBDb25zdGFudHNfMS5kZWZhdWx0LmRlZmF1bHRDaGFubmVsSWQsXG4gICAgICAgICAgICBvcmdJZDogb21uaWNoYW5uZWxDb25maWd1cmF0aW9uLm9yZ0lkLFxuICAgICAgICAgICAgb3JnVXJsOiBvbW5pY2hhbm5lbENvbmZpZ3VyYXRpb24ub3JnVXJsLFxuICAgICAgICAgICAgd2lkZ2V0SWQ6IG9tbmljaGFubmVsQ29uZmlndXJhdGlvbi53aWRnZXRJZFxuICAgICAgICB9LCBjb25maWd1cmF0aW9uIHx8IHt9LCBpbG9nZ2VyKTtcbiAgICB9O1xuICAgIHJldHVybiBTREtQcm92aWRlcjtcbn0oKSk7XG5leHBvcnRzLmRlZmF1bHQgPSBTREtQcm92aWRlcjtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5Ccm93c2VySW5mbyA9IGV4cG9ydHMuVU5LTk9XTl9WRVJTSU9OID0gdm9pZCAwO1xudmFyIEVudW1zXzEgPSByZXF1aXJlKFwiLi4vQ29tbW9uL0VudW1zXCIpO1xuLy8gUG9ydGVkIGZyb20gaHR0cHM6Ly9kZXYuYXp1cmUuY29tL2R5bmFtaWNzY3JtL09uZUNSTS9fZ2l0L0NSTS5PbW5pQ2hhbm5lbC5MaXZlQ2hhdFdpZGdldD9wYXRoPS9zcmMvTGl2ZUNoYXRMb2FkZXIvVXRpbGl0eS9Ccm93c2VySW5mby50c1xudmFyIFJFR0VYX1ZFUlNJT04gPSBcIihbXFxcXGQsLl0rKVwiO1xuZXhwb3J0cy5VTktOT1dOX1ZFUlNJT04gPSBcIlVcIjtcbnZhciBCcm93c2VySW5mbyA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBCcm93c2VySW5mbygpIHtcbiAgICB9XG4gICAgQnJvd3NlckluZm8uZ2V0VXNlckFnZW50ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy51c2VyQWdlbnQoKTtcbiAgICB9O1xuICAgIEJyb3dzZXJJbmZvLnVzZXJBZ2VudENvbnRhaW5zU3RyaW5nID0gZnVuY3Rpb24gKHNlYXJjaFN0cmluZykge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRVc2VyQWdlbnQoKS5pbmRleE9mKHNlYXJjaFN0cmluZykgPiAtMTtcbiAgICB9O1xuICAgIEJyb3dzZXJJbmZvLmlzQ2hyb21lID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy51c2VyQWdlbnRDb250YWluc1N0cmluZyhFbnVtc18xLkJyb3dzZXJWZW5kb3IuQ0hST01FKSAmJlxuICAgICAgICAgICAgIXRoaXMudXNlckFnZW50Q29udGFpbnNTdHJpbmcoRW51bXNfMS5Ccm93c2VyVmVuZG9yLkVER0UpICYmXG4gICAgICAgICAgICAhdGhpcy51c2VyQWdlbnRDb250YWluc1N0cmluZyhFbnVtc18xLkJyb3dzZXJWZW5kb3IuRURHRV9DSFJPTUlVTSk7XG4gICAgfTtcbiAgICBCcm93c2VySW5mby5pc0llID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy51c2VyQWdlbnRDb250YWluc1N0cmluZyhcIlRyaWRlbnRcIik7XG4gICAgfTtcbiAgICBCcm93c2VySW5mby5pc0VkZ2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnVzZXJBZ2VudENvbnRhaW5zU3RyaW5nKEVudW1zXzEuQnJvd3NlclZlbmRvci5FREdFKSB8fFxuICAgICAgICAgICAgdGhpcy51c2VyQWdlbnRDb250YWluc1N0cmluZyhFbnVtc18xLkJyb3dzZXJWZW5kb3IuRURHRV9DSFJPTUlVTSk7XG4gICAgfTtcbiAgICBCcm93c2VySW5mby5pc09wZXJhID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy51c2VyQWdlbnRDb250YWluc1N0cmluZyhcIk9QUi9cIik7XG4gICAgfTtcbiAgICBCcm93c2VySW5mby5nZXRCcm93c2VyTmFtZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNPcGVyYSgpKSB7XG4gICAgICAgICAgICByZXR1cm4gRW51bXNfMS5Ccm93c2VyVmVuZG9yLk9QRVJBO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmlzRWRnZSgpKSB7XG4gICAgICAgICAgICByZXR1cm4gRW51bXNfMS5Ccm93c2VyVmVuZG9yLkVER0U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuaXNDaHJvbWUoKSkge1xuICAgICAgICAgICAgcmV0dXJuIEVudW1zXzEuQnJvd3NlclZlbmRvci5DSFJPTUU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMudXNlckFnZW50Q29udGFpbnNTdHJpbmcoRW51bXNfMS5Ccm93c2VyVmVuZG9yLkZJUkVGT1gpKSB7XG4gICAgICAgICAgICByZXR1cm4gRW51bXNfMS5Ccm93c2VyVmVuZG9yLkZJUkVGT1g7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMudXNlckFnZW50Q29udGFpbnNTdHJpbmcoRW51bXNfMS5Ccm93c2VyVmVuZG9yLlNBRkFSSSkpIHtcbiAgICAgICAgICAgIHJldHVybiBFbnVtc18xLkJyb3dzZXJWZW5kb3IuU0FGQVJJO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmlzSWUoKSkge1xuICAgICAgICAgICAgcmV0dXJuIEVudW1zXzEuQnJvd3NlclZlbmRvci5JRTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gRW51bXNfMS5Ccm93c2VyVmVuZG9yLlVOS05PV047XG4gICAgfTtcbiAgICBCcm93c2VySW5mby5nZXRCcm93c2VyVmVyc2lvbiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdmFyIGdldEllVmVyc2lvbiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciB1c2VyQWdlbnQgPSBfdGhpcy5nZXRVc2VyQWdlbnQoKTtcbiAgICAgICAgICAgIHZhciBjbGFzc2ljSWVWZXJzaW9uTWF0Y2hlcyA9IHVzZXJBZ2VudC5tYXRjaChuZXcgUmVnRXhwKEVudW1zXzEuQnJvd3NlclZlbmRvci5JRSArIFwiIFwiICsgUkVHRVhfVkVSU0lPTikpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIHNlY3VyaXR5L2RldGVjdC1ub24tbGl0ZXJhbC1yZWdleHBcbiAgICAgICAgICAgIGlmIChjbGFzc2ljSWVWZXJzaW9uTWF0Y2hlcykge1xuICAgICAgICAgICAgICAgIHJldHVybiBjbGFzc2ljSWVWZXJzaW9uTWF0Y2hlc1sxXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBpZVZlcnNpb25NYXRjaGVzID0gdXNlckFnZW50Lm1hdGNoKG5ldyBSZWdFeHAoXCJydjpcIiArIFJFR0VYX1ZFUlNJT04pKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBzZWN1cml0eS9kZXRlY3Qtbm9uLWxpdGVyYWwtcmVnZXhwXG4gICAgICAgICAgICBpZiAoaWVWZXJzaW9uTWF0Y2hlcykge1xuICAgICAgICAgICAgICAgIHJldHVybiBpZVZlcnNpb25NYXRjaGVzWzFdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGdldE90aGVyVmVyc2lvbiA9IGZ1bmN0aW9uIChicm93c2VyU3RyaW5nKSB7XG4gICAgICAgICAgICBpZiAoYnJvd3NlclN0cmluZyA9PT0gRW51bXNfMS5Ccm93c2VyVmVuZG9yLlNBRkFSSSkge1xuICAgICAgICAgICAgICAgIGJyb3dzZXJTdHJpbmcgPSBcIlZlcnNpb25cIjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChicm93c2VyU3RyaW5nID09PSBFbnVtc18xLkJyb3dzZXJWZW5kb3IuT1BFUkEpIHtcbiAgICAgICAgICAgICAgICBicm93c2VyU3RyaW5nID0gXCJPUFJcIjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChicm93c2VyU3RyaW5nID09PSBFbnVtc18xLkJyb3dzZXJWZW5kb3IuRURHRSkge1xuICAgICAgICAgICAgICAgIGJyb3dzZXJTdHJpbmcgPSBcIkVkZ2U/XCI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgbWF0Y2hlcyA9IF90aGlzLmdldFVzZXJBZ2VudCgpLm1hdGNoKG5ldyBSZWdFeHAoYnJvd3NlclN0cmluZyArIFwiL1wiICsgUkVHRVhfVkVSU0lPTikpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIHNlY3VyaXR5L2RldGVjdC1ub24tbGl0ZXJhbC1yZWdleHBcbiAgICAgICAgICAgIGlmIChtYXRjaGVzKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1hdGNoZXNbMV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZXhwb3J0cy5VTktOT1dOX1ZFUlNJT047XG4gICAgICAgIH07XG4gICAgICAgIGlmICh0aGlzLmlzSWUoKSkge1xuICAgICAgICAgICAgcmV0dXJuIGdldEllVmVyc2lvbigpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBnZXRPdGhlclZlcnNpb24odGhpcy5nZXRCcm93c2VyTmFtZSgpKTtcbiAgICB9O1xuICAgIEJyb3dzZXJJbmZvLnVzZXJBZ2VudCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50OyB9O1xuICAgIHJldHVybiBCcm93c2VySW5mbztcbn0oKSk7XG5leHBvcnRzLkJyb3dzZXJJbmZvID0gQnJvd3NlckluZm87XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuRGV2aWNlSW5mbyA9IHZvaWQgMDtcbnZhciBFbnVtc18xID0gcmVxdWlyZShcIi4uL0NvbW1vbi9FbnVtc1wiKTtcbi8vIFBvcnRlZCBmcm9tIGh0dHBzOi8vZGV2LmF6dXJlLmNvbS9keW5hbWljc2NybS9PbmVDUk0vX2dpdC9DUk0uT21uaUNoYW5uZWwuTGl2ZUNoYXRXaWRnZXQ/cGF0aD0vc3JjL0xpdmVDaGF0TG9hZGVyL1V0aWxpdHkvRGV2aWNlSW5mby50cyZ2ZXJzaW9uPUdCcmVsZWFzZVxudmFyIERldmljZUluZm8gPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gRGV2aWNlSW5mbygpIHtcbiAgICB9XG4gICAgRGV2aWNlSW5mby5nZXREZXZpY2VUeXBlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgbW9iaWxlID0gLyhhbmRyb2lkfGlwb2R8d2luZG93cyBwaG9uZXx3cGRlc2t0b3B8d2luZG93cyBjZXxibGFja2JlcnJ5XFx3KnxtZWVnb3x3ZWJvc3xwYWxtfHN5bWJpYW58cGRhfFxcdyo/bW9iaWxlXFx3Kj98XFx3Kj9waG9uZVxcdyo/KS9pO1xuICAgICAgICB2YXIgdGFibGV0ID0gL3RhYmxldHxpcGFkL2k7XG4gICAgICAgIGlmICh3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaChtb2JpbGUpKSB7XG4gICAgICAgICAgICByZXR1cm4gRW51bXNfMS5EZXZpY2VUeXBlLk1vYmlsZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAod2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2godGFibGV0KSkge1xuICAgICAgICAgICAgcmV0dXJuIEVudW1zXzEuRGV2aWNlVHlwZS5UYWJsZXQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIEVudW1zXzEuRGV2aWNlVHlwZS5EZXNrdG9wO1xuICAgIH07XG4gICAgcmV0dXJuIERldmljZUluZm87XG59KCkpO1xuZXhwb3J0cy5EZXZpY2VJbmZvID0gRGV2aWNlSW5mbztcbiIsIlwidXNlIHN0cmljdFwiO1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvZXhwbGljaXQtbW9kdWxlLWJvdW5kYXJ5LXR5cGVzICovXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG4vLyBQb3J0ZWQgZnJvbSBodHRwczovL2Rldi5henVyZS5jb20vZHluYW1pY3Njcm0vT25lQ1JNL19naXQvQ1JNLk9tbmljaGFubmVsLklDM0NsaWVudD9wYXRoPS9zcmMvQ29tbW9uL0V2ZW50TWFuYWdlci50cyZ2ZXJzaW9uPUdCbWFzdGVyXG52YXIgRXZlbnRNYW5hZ2VyID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIEV2ZW50TWFuYWdlcigpIHtcbiAgICB9XG4gICAgRXZlbnRNYW5hZ2VyLnJhaXNlQ3VzdG9tRXZlbnQgPSBmdW5jdGlvbiAoZXZlbnROYW1lLCBwYXlsb2FkKSB7XG4gICAgICAgIHZhciBldmVudCA9IEV2ZW50TWFuYWdlci5jcmVhdGVDdXN0b21FdmVudChldmVudE5hbWUsIHBheWxvYWQpO1xuICAgICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChldmVudCk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgY3VzdG9tIGV2ZW50IGJhc2VkIG9uIHRoZSBldmVudE5hbWUgYW5kIHBheWxvYWRcbiAgICAgKiBUaGUgY3VzdG9tIGV2ZW50IGlzIGRpc3BhdGNoLWNvbXBhdGlibGUgYWNyb3NzIGJyb3dzZXJzXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGV2ZW50TmFtZTogTmFtZSBvZiB0aGUgZXZlbnQuXG4gICAgICogQHBhcmFtIHthbnl9IHBheWxvYWQ6IFRoZSBldmVudCBwYXlsb2FkLlxuICAgICAqIEByZXR1cm5zIHtDdXN0b21FdmVudH06IEN1c3RvbUV2ZW50IGluc3RhbmNlLlxuICAgICAqL1xuICAgIEV2ZW50TWFuYWdlci5jcmVhdGVDdXN0b21FdmVudCA9IGZ1bmN0aW9uIChldmVudE5hbWUsIHBheWxvYWQpIHtcbiAgICAgICAgdmFyIGV2ZW50RGV0YWlscyA9IHBheWxvYWQgPyB7XG4gICAgICAgICAgICBkZXRhaWw6IHBheWxvYWRcbiAgICAgICAgfSA6IHVuZGVmaW5lZDtcbiAgICAgICAgdmFyIGV2ZW50ID0gbnVsbDtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIC8vIEZvciBub24gSUUxMSBzY2VuYXJpb3MsIGN1c3RvbWV2ZW50IG9iamVjdCBjYW4gYmUgZGlzcGF0Y2hlZFxuICAgICAgICAgICAgZXZlbnQgPSBuZXcgQ3VzdG9tRXZlbnQoZXZlbnROYW1lLCBldmVudERldGFpbHMpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgICAgICAvLyBTcGVjaWFsIGhhbmRsaW5nIGZvciBJRTExIHNjZW5hcmlvLCB3aGVyZSBjdXN0b21ldmVudCBvYmplY3QgY2Fubm90IGJlIGRpc3BhdGNoZWRcbiAgICAgICAgICAgIGV2ZW50ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoXCJDdXN0b21FdmVudFwiKTtcbiAgICAgICAgICAgIGV2ZW50LmluaXRDdXN0b21FdmVudChldmVudE5hbWUsIHRydWUsIHRydWUsIGV2ZW50RGV0YWlscyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGV2ZW50O1xuICAgIH07XG4gICAgcmV0dXJuIEV2ZW50TWFuYWdlcjtcbn0oKSk7XG5leHBvcnRzLmRlZmF1bHQgPSBFdmVudE1hbmFnZXI7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuT1NJbmZvID0gdm9pZCAwO1xudmFyIEVudW1zXzEgPSByZXF1aXJlKFwiLi4vQ29tbW9uL0VudW1zXCIpO1xuLy8gUG9ydGVkIGZyb20gaHR0cHM6Ly9kZXYuYXp1cmUuY29tL2R5bmFtaWNzY3JtL09uZUNSTS9fZ2l0L0NSTS5PbW5pQ2hhbm5lbC5MaXZlQ2hhdFdpZGdldD9wYXRoPS9zcmMvTGl2ZUNoYXRMb2FkZXIvVXRpbGl0eS9PU0luZm8udHMmdmVyc2lvbj1HQnJlbGVhc2VcbnZhciBPU0luZm8gPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gT1NJbmZvKCkge1xuICAgIH1cbiAgICBPU0luZm8uZ2V0T3NUeXBlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgd2luID0gLyh3aW5kb3dzfHdpbjMyKS9pO1xuICAgICAgICB2YXIgd2lucnQgPSAvIGFybTsvaTtcbiAgICAgICAgdmFyIHdpbnBob25lID0gL3dpbmRvd3NcXHNwaG9uZVxcc1xcZCtcXC5cXGQrL2k7XG4gICAgICAgIHZhciBvc3ggPSAvKG1hY2ludG9zaHxtYWMgb3MgeCkvaTtcbiAgICAgICAgdmFyIGlvcyA9IC8oaVBhZHxpUGhvbmV8aVBvZCkoPz0uKmxpa2UgTWFjIE9TIFgpL2k7XG4gICAgICAgIHZhciBsaW51eCA9IC8obGludXh8am9saXxba3hsbl0/dWJ1bnR1fGRlYmlhbnxbb3Blbl0qc3VzZXxnZW50b298YXJjaHxzbGFja3dhcmV8ZmVkb3JhfG1hbmRyaXZhfGNlbnRvc3xwY2xpbnV4b3N8cmVkaGF0fHplbndhbGt8Y3JvcykvaTtcbiAgICAgICAgdmFyIGFuZHJvaWQgPSAvYW5kcm9pZC9pO1xuICAgICAgICB2YXIgdXNlckFnZW50ID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gd2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQ7IH07XG4gICAgICAgIGlmICh1c2VyQWdlbnQoKS5tYXRjaCh3aW5waG9uZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBFbnVtc18xLk9wZXJhdGluZ1N5c3RlbS5XSU5ET1dTX1BIT05FO1xuICAgICAgICB9XG4gICAgICAgIGlmICh1c2VyQWdlbnQoKS5tYXRjaCh3aW5ydCkpIHtcbiAgICAgICAgICAgIHJldHVybiBFbnVtc18xLk9wZXJhdGluZ1N5c3RlbS5XSU5ET1dTX1JUO1xuICAgICAgICB9XG4gICAgICAgIGlmICh1c2VyQWdlbnQoKS5tYXRjaChpb3MpKSB7XG4gICAgICAgICAgICByZXR1cm4gRW51bXNfMS5PcGVyYXRpbmdTeXN0ZW0uSU9TO1xuICAgICAgICB9XG4gICAgICAgIGlmICh1c2VyQWdlbnQoKS5tYXRjaChhbmRyb2lkKSkge1xuICAgICAgICAgICAgcmV0dXJuIEVudW1zXzEuT3BlcmF0aW5nU3lzdGVtLkFORFJPSUQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHVzZXJBZ2VudCgpLm1hdGNoKGxpbnV4KSkge1xuICAgICAgICAgICAgcmV0dXJuIEVudW1zXzEuT3BlcmF0aW5nU3lzdGVtLkxJTlVYO1xuICAgICAgICB9XG4gICAgICAgIGlmICh1c2VyQWdlbnQoKS5tYXRjaChvc3gpKSB7XG4gICAgICAgICAgICByZXR1cm4gRW51bXNfMS5PcGVyYXRpbmdTeXN0ZW0uTUFDT1NYO1xuICAgICAgICB9XG4gICAgICAgIGlmICh1c2VyQWdlbnQoKS5tYXRjaCh3aW4pKSB7XG4gICAgICAgICAgICByZXR1cm4gRW51bXNfMS5PcGVyYXRpbmdTeXN0ZW0uV0lORE9XUztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gRW51bXNfMS5PcGVyYXRpbmdTeXN0ZW0uVU5LTk9XTjtcbiAgICB9O1xuICAgIHJldHVybiBPU0luZm87XG59KCkpO1xuZXhwb3J0cy5PU0luZm8gPSBPU0luZm87XG4iLCJcInVzZSBzdHJpY3RcIjtcbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9leHBsaWNpdC1tb2R1bGUtYm91bmRhcnktdHlwZXMgKi9cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBUZWxlbWV0cnlIZWxwZXIgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gVGVsZW1ldHJ5SGVscGVyKCkge1xuICAgIH1cbiAgICBUZWxlbWV0cnlIZWxwZXIuR0VUVEVMRU1FVFJZRVZFTlREQVRBID0gZnVuY3Rpb24gKHRlbGVtZXRyeUV2ZW50LCBjdXN0b21EYXRhLCBkZXNjcmlwdGlvbikge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgRGVzY3JpcHRpb246IGRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgRWxhcHNlZFRpbWVJbk1pbGxpc2Vjb25kczogY3VzdG9tRGF0YS5FbGFwc2VkVGltZUluTWlsbGlzZWNvbmRzLFxuICAgICAgICAgICAgRXZlbnQ6IHRlbGVtZXRyeUV2ZW50LFxuICAgICAgICAgICAgRXhjZXB0aW9uRGV0YWlsczogY3VzdG9tRGF0YS5FeGNlcHRpb25EZXRhaWxzLFxuICAgICAgICAgICAgUmVnaW9uOiBjdXN0b21EYXRhLlJlZ2lvbixcbiAgICAgICAgICAgIFJlcXVlc3RJZDogY3VzdG9tRGF0YS5SZXF1ZXN0SWQsXG4gICAgICAgICAgICBUcmFuc2FjdGlvbklkOiBjdXN0b21EYXRhLlRyYW5zYWN0aW9uSWRcbiAgICAgICAgfTtcbiAgICB9O1xuICAgIHJldHVybiBUZWxlbWV0cnlIZWxwZXI7XG59KCkpO1xuZXhwb3J0cy5kZWZhdWx0ID0gVGVsZW1ldHJ5SGVscGVyO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLlRpbWVyID0gdm9pZCAwO1xudmFyIFRpbWVyID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIFRpbWVyKCkge1xuICAgIH1cbiAgICBUaW1lci5USU1FUiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHRpbWVTdGFydCA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZ2V0IG1pbGxpU2Vjb25kc0VsYXBzZWQoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChuZXcgRGF0ZSgpLmdldFRpbWUoKSAtIHRpbWVTdGFydCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfTtcbiAgICByZXR1cm4gVGltZXI7XG59KCkpO1xuZXhwb3J0cy5UaW1lciA9IFRpbWVyO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG4vKipcbiAqIEN1c3RvbSBoYW5kbGVyIGZvciBIVFRQIGNhbGxzIHdpdGggQXhpb3MuIEhhbmRsZXIgYWxsb3dzIHRvIHJldHJ5IEhUVFAgY2FsbHMgaWYgZmFpbGVkLlxuICpcbiAqIEBwYXJhbSBheGlvcyBBeGlvcyBpbnN0YW5jZS5cbiAqIEBwYXJhbSBheGlvc1JldHJ5T3B0aW9ucyBPcHRpb25zIGZvciBheGlvcyByZXRyeS5cbiAqL1xudmFyIGF4aW9zUmV0cnkgPSBmdW5jdGlvbiAoYXhpb3MsIGF4aW9zUmV0cnlPcHRpb25zKSB7XG4gICAgdmFyIHJldHJpZXMgPSBheGlvc1JldHJ5T3B0aW9ucy5yZXRyaWVzO1xuICAgIHZhciBjdXJyZW50VHJ5ID0gMDtcbiAgICAvLyBNZXRob2QgdG8gaW50ZXJjZXB0cyByZXNwb25zZXMgd2l0aGluIHJhbmdlIG9mIDJ4eFxuICAgIHZhciBvblN1Y2Nlc3MgPSB1bmRlZmluZWQ7XG4gICAgLy8gTWV0aG9kIHRvIGludGVyY2VwdHMgcmVzcG9uc2VzIG91dHNpZGUgcmFuZ2Ugb2YgMnh4XG4gICAgdmFyIG9uRXJyb3IgPSBmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgdmFyIGNvbmZpZyA9IGVycm9yLmNvbmZpZztcbiAgICAgICAgLy8gSWYgd2UgaGF2ZSBubyBpbmZvcm1hdGlvbiBvZiB0aGUgcmVxdWVzdCB0byByZXRyeVxuICAgICAgICBpZiAoIWNvbmZpZykge1xuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBSZXRyeSByZXF1ZXN0IGlmIGJlbG93IHRocmVzaG9sZFxuICAgICAgICB2YXIgc2hvdWxkUmV0cnkgPSBjdXJyZW50VHJ5IDwgcmV0cmllcztcbiAgICAgICAgaWYgKHNob3VsZFJldHJ5KSB7XG4gICAgICAgICAgICBjdXJyZW50VHJ5Kys7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmV0dXJuIHJlc29sdmUoYXhpb3MoY29uZmlnKSk7IH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvcik7XG4gICAgfTtcbiAgICBheGlvcy5pbnRlcmNlcHRvcnMucmVzcG9uc2UudXNlKG9uU3VjY2Vzcywgb25FcnJvcik7XG59O1xuZXhwb3J0cy5kZWZhdWx0ID0gYXhpb3NSZXRyeTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy51dWlkdjQgPSB2b2lkIDA7XG5leHBvcnRzLnV1aWR2NCA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gXCJ4eHh4eHh4eC14eHh4LTR4eHgteXh4eC14eHh4eHh4eHh4eHhcIi5yZXBsYWNlKC9beHldL2csIGZ1bmN0aW9uIChjKSB7XG4gICAgICAgIHZhciByID0gTWF0aC5yYW5kb20oKSAqIDE2IHwgMCwgdiA9IGMgPT09IFwieFwiID8gciA6IChyICYgMHgzIHwgMHg4KTtcbiAgICAgICAgcmV0dXJuIHYudG9TdHJpbmcoMTYpO1xuICAgIH0pO1xufTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy51dWlkdjQgPSBleHBvcnRzLlNES1Byb3ZpZGVyID0gdm9pZCAwO1xuLy8gRW50cnkgcG9pbnRcbnZhciBFdmVudE5hbWVzXzEgPSByZXF1aXJlKFwiLi9Db21tb24vRXZlbnROYW1lc1wiKTtcbnZhciBTREtQcm92aWRlcl8xID0gcmVxdWlyZShcIi4vU0RLUHJvdmlkZXJcIik7XG5leHBvcnRzLlNES1Byb3ZpZGVyID0gU0RLUHJvdmlkZXJfMS5kZWZhdWx0O1xudmFyIEV2ZW50TWFuYWdlcl8xID0gcmVxdWlyZShcIi4vVXRpbHMvRXZlbnRNYW5hZ2VyXCIpO1xudmFyIHV1aWRfMSA9IHJlcXVpcmUoXCIuL1V0aWxzL3V1aWRcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJ1dWlkdjRcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHV1aWRfMS51dWlkdjQ7IH0gfSk7XG4oZnVuY3Rpb24gKCkge1xuICAgIC8vIERlY2xhcmVzIHdpbmRvdyBvYmplY3QgZm9yIE5vZGVKUyBlbnZpcm9ubWVudFxuICAgIGlmIChnbG9iYWwud2luZG93ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZ2xvYmFsLndpbmRvdyA9IGdsb2JhbDtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJ3aW5kb3cgb2JqZWN0IG5vdCBmb3VuZFwiKTtcbiAgICB9XG4gICAgLy8gQ2hlY2sgZXhpc3RlbmNlIG9mIGdsb2JhbCBvYmplY3RzIHRvIGF2b2lkIG92ZXJ3cml0ZS9jbGFzaGluZ1xuICAgIGlmICghKFwiTWljcm9zb2Z0XCIgaW4gd2luZG93KSkge1xuICAgICAgICB3aW5kb3cuTWljcm9zb2Z0ID0ge307XG4gICAgfVxuICAgIGlmICghKFwiQ1JNXCIgaW4gd2luZG93Lk1pY3Jvc29mdCkpIHtcbiAgICAgICAgd2luZG93Lk1pY3Jvc29mdC5DUk0gPSB7fTtcbiAgICB9XG4gICAgaWYgKCEoXCJPbW5pY2hhbm5lbFwiIGluIHdpbmRvdy5NaWNyb3NvZnQuQ1JNKSkge1xuICAgICAgICB3aW5kb3cuTWljcm9zb2Z0LkNSTS5PbW5pY2hhbm5lbCA9IHt9O1xuICAgIH1cbiAgICBpZiAoIShcIlNES1wiIGluIHdpbmRvdy5NaWNyb3NvZnQuQ1JNLk9tbmljaGFubmVsKSkge1xuICAgICAgICB3aW5kb3cuTWljcm9zb2Z0LkNSTS5PbW5pY2hhbm5lbC5TREsgPSB7XG4gICAgICAgICAgICBTREtQcm92aWRlcjogU0RLUHJvdmlkZXJfMS5kZWZhdWx0LFxuICAgICAgICAgICAgVXRpbDoge1xuICAgICAgICAgICAgICAgIHV1aWR2NDogdXVpZF8xLnV1aWR2NFxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH1cbiAgICB3aW5kb3cuZG9jdW1lbnQgJiYgRXZlbnRNYW5hZ2VyXzEuZGVmYXVsdC5yYWlzZUN1c3RvbUV2ZW50KEV2ZW50TmFtZXNfMS5kZWZhdWx0Lk9DU0RLTE9BRCk7XG59KSgpO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==
|
|
2649
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2F4aW9zL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvYWRhcHRlcnMveGhyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvYXhpb3MuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9jYW5jZWwvQ2FuY2VsLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvY2FuY2VsL0NhbmNlbFRva2VuLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvY2FuY2VsL2lzQ2FuY2VsLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvY29yZS9BeGlvcy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NvcmUvSW50ZXJjZXB0b3JNYW5hZ2VyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvY29yZS9idWlsZEZ1bGxQYXRoLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvY29yZS9jcmVhdGVFcnJvci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NvcmUvZGlzcGF0Y2hSZXF1ZXN0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvY29yZS9lbmhhbmNlRXJyb3IuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9jb3JlL21lcmdlQ29uZmlnLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvY29yZS9zZXR0bGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9jb3JlL3RyYW5zZm9ybURhdGEuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9kZWZhdWx0cy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvYmluZC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvYnVpbGRVUkwuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9oZWxwZXJzL2NvbWJpbmVVUkxzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9jb29raWVzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9pc0Fic29sdXRlVVJMLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9pc0F4aW9zRXJyb3IuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9oZWxwZXJzL2lzVVJMU2FtZU9yaWdpbi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvbm9ybWFsaXplSGVhZGVyTmFtZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvcGFyc2VIZWFkZXJzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9zcHJlYWQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9oZWxwZXJzL3ZhbGlkYXRvci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYXhpb3MvbGliL3V0aWxzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9wcm9jZXNzL2Jyb3dzZXIuanMiLCJ3ZWJwYWNrOi8vLyh3ZWJwYWNrKS9idWlsZGluL2dsb2JhbC5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvQ29tbW9uL0NvbnN0YW50cy50cyIsIndlYnBhY2s6Ly8vLi9zcmMvQ29tbW9uL0VudW1zLnRzIiwid2VicGFjazovLy8uL3NyYy9Db21tb24vRXZlbnROYW1lcy50cyIsIndlYnBhY2s6Ly8vLi9zcmMvQ29tbW9uL0xvY2FsZXMudHMiLCJ3ZWJwYWNrOi8vLy4vc3JjL0NvbW1vbi9PQ1NES0xvZ2dlci50cyIsIndlYnBhY2s6Ly8vLi9zcmMvQ29tbW9uL09tbmljaGFubmVsRW5kcG9pbnRzLnRzIiwid2VicGFjazovLy8uL3NyYy9Db21tb24vT21uaWNoYW5uZWxIVFRQSGVhZGVycy50cyIsIndlYnBhY2s6Ly8vLi9zcmMvTW9kZWwvTG9nTGV2ZWwudHMiLCJ3ZWJwYWNrOi8vLy4vc3JjL1NESy50cyIsIndlYnBhY2s6Ly8vLi9zcmMvU0RLUHJvdmlkZXIudHMiLCJ3ZWJwYWNrOi8vLy4vc3JjL1V0aWxzL0Jyb3dzZXJJbmZvLnRzIiwid2VicGFjazovLy8uL3NyYy9VdGlscy9EZXZpY2VJbmZvLnRzIiwid2VicGFjazovLy8uL3NyYy9VdGlscy9FdmVudE1hbmFnZXIudHMiLCJ3ZWJwYWNrOi8vLy4vc3JjL1V0aWxzL0xvZ2dpbmdTYW5pdGl6ZXIudHMiLCJ3ZWJwYWNrOi8vLy4vc3JjL1V0aWxzL09TSW5mby50cyIsIndlYnBhY2s6Ly8vLi9zcmMvVXRpbHMvVGVsZW1ldHJ5SGVscGVyLnRzIiwid2VicGFjazovLy8uL3NyYy9VdGlscy9UaW1lci50cyIsIndlYnBhY2s6Ly8vLi9zcmMvVXRpbHMvYXhpb3NSZXRyeS50cyIsIndlYnBhY2s6Ly8vLi9zcmMvVXRpbHMvdXVpZC50cyIsIndlYnBhY2s6Ly8vLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOlsiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJleHBvcnRzIiwidmFsdWUiLCJFbnVtc18xIiwicmVxdWlyZSIsIkNvbnN0YW50cyIsInJlcXVpcmVkT21uaWNoYW5uZWxDb25maWd1cmF0aW9uUGFyYW1ldGVycyIsImRlZmF1bHRIZWFkZXJzIiwiYnlwYXNzQ2FjaGVIZWFkZXJzIiwiZGVmYXVsdENoYW5uZWxJZCIsIkNoYW5uZWxJZCIsIkxDVyIsImRlZmF1bHRMb2NhbGUiLCJub0NvbnRlbnRTdGF0dXNDb2RlIiwic2Vuc2l0aXZlUHJvcGVydGllcyIsInRyYW5zYWN0aW9uaWQiLCJjdXN0b21lckRpc3BsYXlOYW1lIiwiZGVmYXVsdCIsIkxpdmVDaGF0VmVyc2lvbiIsIk9DU0RLVGVsZW1ldHJ5RXZlbnQiLCJPcGVyYXRpbmdTeXN0ZW0iLCJEZXZpY2VUeXBlIiwiQnJvd3NlciIsIkJyb3dzZXJWZW5kb3IiLCJFdmVudE5hbWVzIiwiZ2V0IiwiZW51bWVyYWJsZSIsImNvbmZpZ3VyYWJsZSIsIkxvY2FsZXMiLCJzdXBwb3J0ZWRMb2NhbGVzIiwiVGVsZW1ldHJ5SGVscGVyXzEiLCJPQ1NES0xvZ2dlciIsImxvZ2dlciIsInByb3RvdHlwZSIsImxvZyIsImxvZ2xldmVsIiwidGVsZW1ldHJ5RXZlbnQiLCJjdXN0b21EYXRhIiwiZGVzY3JpcHRpb24iLCJpc0xvZ2dpbmdFbmFibGVkIiwibG9nRGF0YSIsIkdFVFRFTEVNRVRSWUVWRU5UREFUQSIsImxvZ0V2ZW50IiwibG9nTGV2ZWwiLCJzZXRUaW1lb3V0IiwibG9nQ2xpZW50U2RrVGVsZW1ldHJ5RXZlbnQiLCJiaW5kIiwiaXNOdWxsT3JVbmRlZmluZWQiLCJvYmoiLCJ1bmRlZmluZWQiLCJPbW5pY2hhbm5lbEVuZHBvaW50cyIsIkxpdmVDaGF0Q29uZmlnUGF0aCIsIkxpdmVDaGF0U2Vzc2lvbkluaXRQYXRoIiwiTGl2ZUNoYXRBdXRoU2Vzc2lvbkluaXRQYXRoIiwiTGl2ZUNoYXRHZXRDaGF0VG9rZW5QYXRoIiwiTGl2ZUNoYXR2MkdldENoYXRUb2tlblBhdGgiLCJMaXZlQ2hhdEF1dGhHZXRDaGF0VG9rZW5QYXRoIiwiTGl2ZUNoYXR2MkF1dGhHZXRDaGF0VG9rZW5QYXRoIiwiTGl2ZUNoYXRTZXNzaW9uQ2xvc2VQYXRoIiwiTGl2ZUNoYXRBdXRoU2Vzc2lvbkNsb3NlUGF0aCIsIkxpdmVDaGF0U3VibWl0UG9zdENoYXRQYXRoIiwiTGl2ZUNoYXRBdXRoU3VibWl0UG9zdENoYXRQYXRoIiwiTGl2ZUNoYXRHZXRTdXJ2ZXlJbnZpdGVMaW5rUGF0aCIsIkxpdmVDaGF0QXV0aEdldFN1cnZleUludml0ZUxpbmtQYXRoIiwiTGl2ZUNoYXRHZXRDaGF0VHJhbnNjcmlwdFBhdGgiLCJMaXZlQ2hhdHYyR2V0Q2hhdFRyYW5zY3JpcHRQYXRoIiwiTGl2ZUNoYXRBdXRoR2V0Q2hhdFRyYW5zY3JpcHRQYXRoIiwiTGl2ZUNoYXR2MkF1dGhHZXRDaGF0VHJhbnNjcmlwdFBhdGgiLCJMaXZlQ2hhdFRyYW5zY3JpcHRFbWFpbFJlcXVlc3RQYXRoIiwiTGl2ZUNoYXRBdXRoVHJhbnNjcmlwdEVtYWlsUmVxdWVzdFBhdGgiLCJMaXZlQ2hhdEZldGNoRGF0YU1hc2tpbmdJbmZvUGF0aCIsIkxpdmVDaGF0U2Vjb25kYXJ5Q2hhbm5lbEV2ZW50UGF0aCIsIkxpdmVDaGF0QXV0aFNlY29uZGFyeUNoYW5uZWxFdmVudFBhdGgiLCJMaXZlQ2hhdExpdmVXb3JrSXRlbURldGFpbHNQYXRoIiwiTGl2ZUNoYXRBdXRoTGl2ZVdvcmtJdGVtRGV0YWlsc1BhdGgiLCJMaXZlQ2hhdEdldFJlY29ubmVjdGFibGVDaGF0c1BhdGgiLCJMaXZlQ2hhdFJlY29ubmVjdEF2YWlsYWJpbGl0eVBhdGgiLCJMaXZlQ2hhdFZhbGlkYXRlQXV0aENoYXRNYXBSZWNvcmRQYXRoIiwiR2V0UXVldWVBdmFpbGFiaWxpdHlQYXRoIiwiU2VuZFR5cGluZ0luZGljYXRvclBhdGgiLCJPbW5pY2hhbm5lbEhUVFBIZWFkZXJzIiwiYXV0aGVudGljYXRlZFVzZXJUb2tlbiIsImF1dGhvcml6YXRpb24iLCJvcmdhbml6YXRpb25JZCIsIndpZGdldEFwcElkIiwicmVxdWVzdElkIiwiTG9nTGV2ZWwiLCJfX2Fzc2lnbiIsImFzc2lnbiIsInQiLCJzIiwiaSIsIm4iLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJwIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiYXBwbHkiLCJfX2F3YWl0ZXIiLCJ0aGlzQXJnIiwiX2FyZ3VtZW50cyIsIlAiLCJnZW5lcmF0b3IiLCJhZG9wdCIsInJlc29sdmUiLCJQcm9taXNlIiwicmVqZWN0IiwiZnVsZmlsbGVkIiwic3RlcCIsIm5leHQiLCJlIiwicmVqZWN0ZWQiLCJyZXN1bHQiLCJkb25lIiwidGhlbiIsIl9fZ2VuZXJhdG9yIiwiYm9keSIsIl8iLCJsYWJlbCIsInNlbnQiLCJ0cnlzIiwib3BzIiwiZiIsInkiLCJnIiwidmVyYiIsIlN5bWJvbCIsIml0ZXJhdG9yIiwidiIsIm9wIiwiVHlwZUVycm9yIiwicG9wIiwicHVzaCIsImF4aW9zXzEiLCJCcm93c2VySW5mb18xIiwiQ29uc3RhbnRzXzEiLCJEZXZpY2VJbmZvXzEiLCJMb2NhbGVzXzEiLCJMb2dnaW5nU2FuaXRpemVyXzEiLCJMb2dMZXZlbF8xIiwiRW51bXNfMiIsIk9TSW5mb18xIiwiT21uaWNoYW5uZWxFbmRwb2ludHNfMSIsIk9tbmljaGFubmVsSFRUUEhlYWRlcnNfMSIsIlRpbWVyXzEiLCJheGlvc1JldHJ5XzEiLCJ1dWlkXzEiLCJTREsiLCJvbW5pY2hhbm5lbENvbmZpZ3VyYXRpb24iLCJjb25maWd1cmF0aW9uIiwiZGVmYXVsdENvbmZpZ3VyYXRpb24iLCJrZXlzIiwiX2kiLCJfYSIsImtleSIsIkVycm9yIiwiY2hhbm5lbElkIiwidmFsdWVzIiwiaW5jbHVkZXMiLCJjdXJyZW50T21uaWNoYW5uZWxDb25maWd1cmF0aW9uUGFyYW1ldGVycyIsIl9iIiwiX2MiLCJsaXZlQ2hhdFZlcnNpb24iLCJWMSIsImdldENoYXRDb25maWciLCJieXBhc3NDYWNoZSIsInRpbWVyIiwiZW5kcG9pbnQiLCJheGlvc0luc3RhbmNlIiwiaGVhZGVycyIsInJlc3BvbnNlIiwiZWxhcHNlZFRpbWVJbk1pbGxpc2Vjb25kcyIsImRhdGEiLCJUaW1lciIsIlRJTUVSIiwiSU5GTyIsIkdFVENIQVRDT05GSUciLCJSZXF1ZXN0SWQiLCJ1dWlkdjQiLCJvcmdVcmwiLCJvcmdJZCIsIndpZGdldElkIiwiY3JlYXRlIiwicmV0cmllcyIsIm1heFJlcXVlc3RSZXRyaWVzT25GYWlsdXJlIiwibWlsbGlTZWNvbmRzRWxhcHNlZCIsIlYyIiwiR0VUQ0hBVENPTkZJR1NVQ0NFU1MiLCJSZWdpb24iLCJFbGFwc2VkVGltZUluTWlsbGlzZWNvbmRzIiwiVHJhbnNhY3Rpb25JZCIsImdldExXSURldGFpbHMiLCJnZXRMV0lEZXRhaWxzT3B0aW9uYWxQYXJhbXMiLCJyZWNvbm5lY3RJZCIsIm9wdGlvbnMiLCJfdGhpcyIsIkdFVExXSVNUQVRVU1NUQVJURUQiLCJtZXRob2QiLCJ1cmwiLCJlcnJvcl8xIiwiR0VUTFdJU1RBVFVTU1VDQ0VFREVEIiwiTG9nZ2luZ1Nhbml0aXplciIsInN0cmlwRXJyb3JTZW5zaXRpdmVQcm9wZXJ0aWVzIiwiRVJST1IiLCJHRVRMV0lTVEFUVVNGQUlMRUQiLCJFeGNlcHRpb25EZXRhaWxzIiwiZ2V0Q2hhdFRva2VuIiwiZ2V0Q2hhdFRva2VuT3B0aW9uYWxQYXJhbXMiLCJjdXJyZW50UmV0cnlDb3VudCIsImN1cnJlbnRMaXZlQ2hhdFZlcnNpb24iLCJHRVRDSEFUVE9LRU5TVEFSVEVEIiwiZXJyb3JfMiIsIkdFVENIQVRUT0tFTlNVQ0NFRURFRCIsInN0YXR1cyIsIkdFVENIQVRUT0tFTkZBSUxFRCIsImdldENoYXRUb2tlblJldHJ5Q291bnQiLCJjYXRjaCIsImVycm9yIiwiZ2V0Q2hhdFRva2VuVGltZUJldHdlZW5SZXRyaWVzT25GYWlsdXJlIiwiZ2V0UmVjb25uZWN0YWJsZUNoYXRzIiwicmVjb25uZWN0YWJsZUNoYXRzUGFyYW1zIiwiR0VUUkVDT05ORUNUQUJMRUNIQVRTIiwiZXJyb3JfMyIsImdldFJlY29ubmVjdEF2YWlsYWJpbGl0eSIsIkdFVFJFQ09OTkVDVEFWQUlMQUJJTElUWSIsImVycm9yXzQiLCJXQVJOIiwiZ2V0UXVldWVBdmFpbGFiaWxpdHkiLCJxdWV1ZUF2YWlsYWJpbGl0eU9wdGlvbmFsUGFyYW1zIiwiaW5pdENvbnRleHQiLCJnZXRDb250ZXh0IiwiR0VUUVVFVUVBVkFJTEFCSUxJVFlTVEFSVEVEIiwid2luZG93IiwiZG9jdW1lbnQiLCJicm93c2VyIiwiQnJvd3NlckluZm8iLCJnZXRCcm93c2VyTmFtZSIsImRldmljZSIsIkRldmljZUluZm8iLCJnZXREZXZpY2VUeXBlIiwib3JpZ2ludXJsIiwibG9jYXRpb24iLCJocmVmIiwib3MiLCJPU0luZm8iLCJnZXRPc1R5cGUiLCJsb2NhbGUiLCJkYXRhXzEiLCJlcnJvcl81IiwiR0VUUVVFVUVBVkFJTEFCSUxJVFlTVUNDRUVERUQiLCJHRVRRVUVVRUFWQUlMQUJJTElUWUZBSUxFRCIsInNlc3Npb25Jbml0Iiwic2Vzc2lvbkluaXRPcHRpb25hbFBhcmFtcyIsIlNFU1NJT05JTklUU1RBUlRFRCIsImVycm9yXzYiLCJTRVNTSU9OSU5JVFNVQ0NFRURFRCIsIlNFU1NJT05JTklURkFJTEVEIiwic2Vzc2lvbkNsb3NlIiwic2Vzc2lvbkNsb3NlT3B0aW9uYWxQYXJhbXMiLCJpc1JlY29ubmVjdENoYXQiLCJpc1BlcnNpc3RlbnRDaGF0IiwiY2hhdElkIiwiU0VTU0lPTkNMT1NFU1RBUlRFRCIsImVycm9yXzciLCJTRVNTSU9OQ0xPU0VTVUNDRUVERUQiLCJTRVNTSU9OQ0xPU0VGQUlMRUQiLCJ2YWxpZGF0ZUF1dGhDaGF0UmVjb3JkIiwidmFsaWRhdGVBdXRoQ2hhdFJlY29yZE9wdGlvbmFsUGFyYW1zIiwiX2QiLCJlcnJvcl84IiwiX2UiLCJWQUxJREFURUFVVEhDSEFUUkVDT1JEU1RBUlRFRCIsImF1dGhDaGF0RXhpc3QiLCJWQUxJREFURUFVVEhDSEFUUkVDT1JEU1VDQ0VFREVEIiwiVkFMSURBVEVBVVRIQ0hBVFJFQ09SREZBSUxFRCIsIkVycm9yQ29kZSIsInRvU3RyaW5nIiwic3VibWl0UG9zdENoYXRSZXNwb25zZSIsInBvc3RDaGF0UmVzcG9uc2UiLCJzdWJtaXRQb3N0Q2hhdFJlc3BvbnNlT3B0aW9uYWxQYXJhbXMiLCJTVUJNSVRQT1NUQ0hBVFNUQVJURUQiLCJKU09OIiwic3RyaW5naWZ5IiwiZXJyb3JfOSIsIlNVQk1JVFBPU1RDSEFUU1VDQ0VFREVEIiwiU1VCTUlUUE9TVENIQVRGQUlMRUQiLCJnZXRTdXJ2ZXlJbnZpdGVMaW5rIiwic3VydmV5T3duZXJJZCIsInN1cnZleUludml0ZUFQSVJlcXVlc3RCb2R5IiwiZ2V0c3VydmV5SW52aXRlTGlua09wdGlvbmFsUGFyYW1zIiwiR0VUU1VSVkVZSU5WSVRFTElOS1NUQVJURUQiLCJTdXJ2ZXlPd25lcklkIiwiZXJyb3JfMTAiLCJHRVRTVVJWRVlJTlZJVEVMSU5LU1VDQ0VFREVEIiwiR0VUU1VSVkVZSU5WSVRFTElOS0ZBSUxFRCIsImdldENoYXRUcmFuc2NyaXB0cyIsInRva2VuIiwiZ2V0Q2hhdFRyYW5zY3JpcHRzT3B0aW9uYWxQYXJhbXMiLCJHRVRDSEFUVFJBTlNDUklQVFNUQVJURUQiLCJlcnJvcl8xMSIsIkdFVENIQVRUUkFOU0NSSVBUU1VDQ0VFREVEIiwiR0VUQ0hBVFRSQU5TQ1JJUFRGQUlMRUQiLCJlbWFpbFRyYW5zY3JpcHQiLCJlbWFpbFJlcXVlc3RCb2R5IiwiZW1haWxUcmFuc2NyaXB0T3B0aW9uYWxQYXJhbXMiLCJFTUFJTFRSQU5TQ1JJUFRTVEFSVEVEIiwiZXJyb3JfMTIiLCJFTUFJTFRSQU5TQ1JJUFRTVUNDRUVERUQiLCJFTUFJTFRSQU5TQ1JJUFRGQUlMRUQiLCJmZXRjaERhdGFNYXNraW5nSW5mbyIsIkZFVENIREFUQU1BU0tJTkdTVEFSVEVEIiwiZXJyb3JfMTMiLCJGRVRDSERBVEFNQVNLSU5HU1VDQ0VFREVEIiwiRkVUQ0hEQVRBTUFTS0lOR0ZBSUxFRCIsIm1ha2VTZWNvbmRhcnlDaGFubmVsRXZlbnRSZXF1ZXN0Iiwic2Vjb25kYXJ5Q2hhbm5lbEV2ZW50UmVxdWVzdEJvZHkiLCJzZWNvbmRhcnlDaGFubmVsRXZlbnRPcHRpb25hbFBhcmFtcyIsImVycm9yXzE0IiwiU0VDT05EQVJZQ0hBTk5FTEVWRU5UUkVRVUVTVFNUQVJURUQiLCJTRUNPTkRBUllDSEFOTkVMRVZFTlRSRVFVRVNUU1VDQ0VFREVEIiwiU0VDT05EQVJZQ0hBTk5FTEVWRU5UUkVRVUVTVEZBSUxFRCIsInNlbmRUeXBpbmdJbmRpY2F0b3IiLCJzZW5kVHlwaW5nSW5kaWNhdG9yT3B0aW9uYWxQYXJhbXMiLCJlcnJvcl8xNSIsIlNFTkRUWVBJTkdJTkRJQ0FUT1JTVUNDRUVERUQiLCJTRU5EVFlQSU5HSU5ESUNBVE9SRkFJTEVEIiwiT0NTREtMb2dnZXJfMSIsIlNES18xIiwiU0RLUHJvdmlkZXIiLCJnZXRTREsiLCJpbG9nZ2VyIiwiVU5LTk9XTl9WRVJTSU9OIiwiUkVHRVhfVkVSU0lPTiIsImdldFVzZXJBZ2VudCIsInVzZXJBZ2VudCIsInVzZXJBZ2VudENvbnRhaW5zU3RyaW5nIiwic2VhcmNoU3RyaW5nIiwiaW5kZXhPZiIsImlzQ2hyb21lIiwiQ0hST01FIiwiRURHRSIsIkVER0VfQ0hST01JVU0iLCJpc0llIiwiaXNFZGdlIiwiaXNPcGVyYSIsIk9QRVJBIiwiRklSRUZPWCIsIlNBRkFSSSIsIklFIiwiVU5LTk9XTiIsImdldEJyb3dzZXJWZXJzaW9uIiwiZ2V0SWVWZXJzaW9uIiwiY2xhc3NpY0llVmVyc2lvbk1hdGNoZXMiLCJtYXRjaCIsIlJlZ0V4cCIsImllVmVyc2lvbk1hdGNoZXMiLCJnZXRPdGhlclZlcnNpb24iLCJicm93c2VyU3RyaW5nIiwibWF0Y2hlcyIsIm5hdmlnYXRvciIsIm1vYmlsZSIsInRhYmxldCIsIk1vYmlsZSIsIlRhYmxldCIsIkRlc2t0b3AiLCJFdmVudE1hbmFnZXIiLCJyYWlzZUN1c3RvbUV2ZW50IiwiZXZlbnROYW1lIiwicGF5bG9hZCIsImV2ZW50IiwiY3JlYXRlQ3VzdG9tRXZlbnQiLCJkaXNwYXRjaEV2ZW50IiwiZXZlbnREZXRhaWxzIiwiZGV0YWlsIiwiQ3VzdG9tRXZlbnQiLCJjcmVhdGVFdmVudCIsImluaXRDdXN0b21FdmVudCIsImVycm9yT2JqZWN0IiwiZm9yRWFjaCIsIndpbiIsIndpbnJ0Iiwid2lucGhvbmUiLCJvc3giLCJpb3MiLCJsaW51eCIsImFuZHJvaWQiLCJXSU5ET1dTX1BIT05FIiwiV0lORE9XU19SVCIsIklPUyIsIkFORFJPSUQiLCJMSU5VWCIsIk1BQ09TWCIsIldJTkRPV1MiLCJUZWxlbWV0cnlIZWxwZXIiLCJEZXNjcmlwdGlvbiIsIkV2ZW50IiwidGltZVN0YXJ0IiwiRGF0ZSIsImdldFRpbWUiLCJheGlvc1JldHJ5IiwiYXhpb3MiLCJheGlvc1JldHJ5T3B0aW9ucyIsImN1cnJlbnRUcnkiLCJvblN1Y2Nlc3MiLCJvbkVycm9yIiwiY29uZmlnIiwic2hvdWxkUmV0cnkiLCJpbnRlcmNlcHRvcnMiLCJ1c2UiLCJyZXBsYWNlIiwiYyIsInIiLCJNYXRoIiwicmFuZG9tIiwiRXZlbnROYW1lc18xIiwiU0RLUHJvdmlkZXJfMSIsIkV2ZW50TWFuYWdlcl8xIiwiZ2xvYmFsIiwiTWljcm9zb2Z0IiwiQ1JNIiwiT21uaWNoYW5uZWwiLCJVdGlsIiwiT0NTREtMT0FEIl0sIm1hcHBpbmdzIjoiO1FBQUE7UUFDQTs7UUFFQTtRQUNBOztRQUVBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBOztRQUVBO1FBQ0E7O1FBRUE7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7OztRQUdBO1FBQ0E7O1FBRUE7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7UUFDQSwwQ0FBMEMsZ0NBQWdDO1FBQzFFO1FBQ0E7O1FBRUE7UUFDQTtRQUNBO1FBQ0Esd0RBQXdELGtCQUFrQjtRQUMxRTtRQUNBLGlEQUFpRCxjQUFjO1FBQy9EOztRQUVBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQSx5Q0FBeUMsaUNBQWlDO1FBQzFFLGdIQUFnSCxtQkFBbUIsRUFBRTtRQUNySTtRQUNBOztRQUVBO1FBQ0E7UUFDQTtRQUNBLDJCQUEyQiwwQkFBMEIsRUFBRTtRQUN2RCxpQ0FBaUMsZUFBZTtRQUNoRDtRQUNBO1FBQ0E7O1FBRUE7UUFDQSxzREFBc0QsK0RBQStEOztRQUVySDtRQUNBOzs7UUFHQTtRQUNBOzs7Ozs7Ozs7Ozs7QUNsRkEsaUJBQWlCLG1CQUFPLENB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QUFPO0FBQ2xCLFlBQVksT0FBTztBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsWUFBWSxPQUFPO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUM1VkE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztB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QUFtQnVMLGVBQWVoWixPQUFmLENBQXVCOFYsZ0JBQXZCLENBQXdDZ0QsYUFBYTlZLE9BQWIsQ0FBcUJzWixTQUE3RCxDQUFuQixFQUNILENBM0JELEkiLCJmaWxlIjoiU0RLLmpzIiwic291cmNlc0NvbnRlbnQiOlsiIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbiBcdFx0fVxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0aTogbW9kdWxlSWQsXG4gXHRcdFx0bDogZmFsc2UsXG4gXHRcdFx0ZXhwb3J0czoge31cbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbiBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZ2V0dGVyIH0pO1xuIFx0XHR9XG4gXHR9O1xuXG4gXHQvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG4gXHRcdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuIFx0XHR9XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gXHR9O1xuXG4gXHQvLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3RcbiBcdC8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxuIFx0Ly8gbW9kZSAmIDI6IG1lcmdlIGFsbCBwcm9wZXJ0aWVzIG9mIHZhbHVlIGludG8gdGhlIG5zXG4gXHQvLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3RcbiBcdC8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmVcbiBcdF9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uKHZhbHVlLCBtb2RlKSB7XG4gXHRcdGlmKG1vZGUgJiAxKSB2YWx1ZSA9IF9fd2VicGFja19yZXF1aXJlX18odmFsdWUpO1xuIFx0XHRpZihtb2RlICYgOCkgcmV0dXJuIHZhbHVlO1xuIFx0XHRpZigobW9kZSAmIDQpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgJiYgdmFsdWUuX19lc01vZHVsZSkgcmV0dXJuIHZhbHVlO1xuIFx0XHR2YXIgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpO1xuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobnMsICdkZWZhdWx0JywgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdmFsdWUgfSk7XG4gXHRcdGlmKG1vZGUgJiAyICYmIHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykgZm9yKHZhciBrZXkgaW4gdmFsdWUpIF9fd2VicGFja19yZXF1aXJlX18uZChucywga2V5LCBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIHZhbHVlW2tleV07IH0uYmluZChudWxsLCBrZXkpKTtcbiBcdFx0cmV0dXJuIG5zO1xuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IFwiLi9zcmMvaW5kZXgudHNcIik7XG4iLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vbGliL2F4aW9zJyk7IiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuLy4uL3V0aWxzJyk7XG52YXIgc2V0dGxlID0gcmVxdWlyZSgnLi8uLi9jb3JlL3NldHRsZScpO1xudmFyIGNvb2tpZXMgPSByZXF1aXJlKCcuLy4uL2hlbHBlcnMvY29va2llcycpO1xudmFyIGJ1aWxkVVJMID0gcmVxdWlyZSgnLi8uLi9oZWxwZXJzL2J1aWxkVVJMJyk7XG52YXIgYnVpbGRGdWxsUGF0aCA9IHJlcXVpcmUoJy4uL2NvcmUvYnVpbGRGdWxsUGF0aCcpO1xudmFyIHBhcnNlSGVhZGVycyA9IHJlcXVpcmUoJy4vLi4vaGVscGVycy9wYXJzZUhlYWRlcnMnKTtcbnZhciBpc1VSTFNhbWVPcmlnaW4gPSByZXF1aXJlKCcuLy4uL2hlbHBlcnMvaXNVUkxTYW1lT3JpZ2luJyk7XG52YXIgY3JlYXRlRXJyb3IgPSByZXF1aXJlKCcuLi9jb3JlL2NyZWF0ZUVycm9yJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24geGhyQWRhcHRlcihjb25maWcpIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIGRpc3BhdGNoWGhyUmVxdWVzdChyZXNvbHZlLCByZWplY3QpIHtcbiAgICB2YXIgcmVxdWVzdERhdGEgPSBjb25maWcuZGF0YTtcbiAgICB2YXIgcmVxdWVzdEhlYWRlcnMgPSBjb25maWcuaGVhZGVycztcbiAgICB2YXIgcmVzcG9uc2VUeXBlID0gY29uZmlnLnJlc3BvbnNlVHlwZTtcblxuICAgIGlmICh1dGlscy5pc0Zvcm1EYXRhKHJlcXVlc3REYXRhKSkge1xuICAgICAgZGVsZXRlIHJlcXVlc3RIZWFkZXJzWydDb250ZW50LVR5cGUnXTsgLy8gTGV0IHRoZSBicm93c2VyIHNldCBpdFxuICAgIH1cblxuICAgIHZhciByZXF1ZXN0ID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7XG5cbiAgICAvLyBIVFRQIGJhc2ljIGF1dGhlbnRpY2F0aW9uXG4gICAgaWYgKGNvbmZpZy5hdXRoKSB7XG4gICAgICB2YXIgdXNlcm5hbWUgPSBjb25maWcuYXV0aC51c2VybmFtZSB8fCAnJztcbiAgICAgIHZhciBwYXNzd29yZCA9IGNvbmZpZy5hdXRoLnBhc3N3b3JkID8gdW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KGNvbmZpZy5hdXRoLnBhc3N3b3JkKSkgOiAnJztcbiAgICAgIHJlcXVlc3RIZWFkZXJzLkF1dGhvcml6YXRpb24gPSAnQmFzaWMgJyArIGJ0b2EodXNlcm5hbWUgKyAnOicgKyBwYXNzd29yZCk7XG4gICAgfVxuXG4gICAgdmFyIGZ1bGxQYXRoID0gYnVpbGRGdWxsUGF0aChjb25maWcuYmFzZVVSTCwgY29uZmlnLnVybCk7XG4gICAgcmVxdWVzdC5vcGVuKGNvbmZpZy5tZXRob2QudG9VcHBlckNhc2UoKSwgYnVpbGRVUkwoZnVsbFBhdGgsIGNvbmZpZy5wYXJhbXMsIGNvbmZpZy5wYXJhbXNTZXJpYWxpemVyKSwgdHJ1ZSk7XG5cbiAgICAvLyBTZXQgdGhlIHJlcXVlc3QgdGltZW91dCBpbiBNU1xuICAgIHJlcXVlc3QudGltZW91dCA9IGNvbmZpZy50aW1lb3V0O1xuXG4gICAgZnVuY3Rpb24gb25sb2FkZW5kKCkge1xuICAgICAgaWYgKCFyZXF1ZXN0KSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIC8vIFByZXBhcmUgdGhlIHJlc3BvbnNlXG4gICAgICB2YXIgcmVzcG9uc2VIZWFkZXJzID0gJ2dldEFsbFJlc3BvbnNlSGVhZGVycycgaW4gcmVxdWVzdCA/IHBhcnNlSGVhZGVycyhyZXF1ZXN0LmdldEFsbFJlc3BvbnNlSGVhZGVycygpKSA6IG51bGw7XG4gICAgICB2YXIgcmVzcG9uc2VEYXRhID0gIXJlc3BvbnNlVHlwZSB8fCByZXNwb25zZVR5cGUgPT09ICd0ZXh0JyB8fCAgcmVzcG9uc2VUeXBlID09PSAnanNvbicgP1xuICAgICAgICByZXF1ZXN0LnJlc3BvbnNlVGV4dCA6IHJlcXVlc3QucmVzcG9uc2U7XG4gICAgICB2YXIgcmVzcG9uc2UgPSB7XG4gICAgICAgIGRhdGE6IHJlc3BvbnNlRGF0YSxcbiAgICAgICAgc3RhdHVzOiByZXF1ZXN0LnN0YXR1cyxcbiAgICAgICAgc3RhdHVzVGV4dDogcmVxdWVzdC5zdGF0dXNUZXh0LFxuICAgICAgICBoZWFkZXJzOiByZXNwb25zZUhlYWRlcnMsXG4gICAgICAgIGNvbmZpZzogY29uZmlnLFxuICAgICAgICByZXF1ZXN0OiByZXF1ZXN0XG4gICAgICB9O1xuXG4gICAgICBzZXR0bGUocmVzb2x2ZSwgcmVqZWN0LCByZXNwb25zZSk7XG5cbiAgICAgIC8vIENsZWFuIHVwIHJlcXVlc3RcbiAgICAgIHJlcXVlc3QgPSBudWxsO1xuICAgIH1cblxuICAgIGlmICgnb25sb2FkZW5kJyBpbiByZXF1ZXN0KSB7XG4gICAgICAvLyBVc2Ugb25sb2FkZW5kIGlmIGF2YWlsYWJsZVxuICAgICAgcmVxdWVzdC5vbmxvYWRlbmQgPSBvbmxvYWRlbmQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIExpc3RlbiBmb3IgcmVhZHkgc3RhdGUgdG8gZW11bGF0ZSBvbmxvYWRlbmRcbiAgICAgIHJlcXVlc3Qub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24gaGFuZGxlTG9hZCgpIHtcbiAgICAgICAgaWYgKCFyZXF1ZXN0IHx8IHJlcXVlc3QucmVhZHlTdGF0ZSAhPT0gNCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFRoZSByZXF1ZXN0IGVycm9yZWQgb3V0IGFuZCB3ZSBkaWRuJ3QgZ2V0IGEgcmVzcG9uc2UsIHRoaXMgd2lsbCBiZVxuICAgICAgICAvLyBoYW5kbGVkIGJ5IG9uZXJyb3IgaW5zdGVhZFxuICAgICAgICAvLyBXaXRoIG9uZSBleGNlcHRpb246IHJlcXVlc3QgdGhhdCB1c2luZyBmaWxlOiBwcm90b2NvbCwgbW9zdCBicm93c2Vyc1xuICAgICAgICAvLyB3aWxsIHJldHVybiBzdGF0dXMgYXMgMCBldmVuIHRob3VnaCBpdCdzIGEgc3VjY2Vzc2Z1bCByZXF1ZXN0XG4gICAgICAgIGlmIChyZXF1ZXN0LnN0YXR1cyA9PT0gMCAmJiAhKHJlcXVlc3QucmVzcG9uc2VVUkwgJiYgcmVxdWVzdC5yZXNwb25zZVVSTC5pbmRleE9mKCdmaWxlOicpID09PSAwKSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyByZWFkeXN0YXRlIGhhbmRsZXIgaXMgY2FsbGluZyBiZWZvcmUgb25lcnJvciBvciBvbnRpbWVvdXQgaGFuZGxlcnMsXG4gICAgICAgIC8vIHNvIHdlIHNob3VsZCBjYWxsIG9ubG9hZGVuZCBvbiB0aGUgbmV4dCAndGljaydcbiAgICAgICAgc2V0VGltZW91dChvbmxvYWRlbmQpO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBIYW5kbGUgYnJvd3NlciByZXF1ZXN0IGNhbmNlbGxhdGlvbiAoYXMgb3Bwb3NlZCB0byBhIG1hbnVhbCBjYW5jZWxsYXRpb24pXG4gICAgcmVxdWVzdC5vbmFib3J0ID0gZnVuY3Rpb24gaGFuZGxlQWJvcnQoKSB7XG4gICAgICBpZiAoIXJlcXVlc3QpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICByZWplY3QoY3JlYXRlRXJyb3IoJ1JlcXVlc3QgYWJvcnRlZCcsIGNvbmZpZywgJ0VDT05OQUJPUlRFRCcsIHJlcXVlc3QpKTtcblxuICAgICAgLy8gQ2xlYW4gdXAgcmVxdWVzdFxuICAgICAgcmVxdWVzdCA9IG51bGw7XG4gICAgfTtcblxuICAgIC8vIEhhbmRsZSBsb3cgbGV2ZWwgbmV0d29yayBlcnJvcnNcbiAgICByZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbiBoYW5kbGVFcnJvcigpIHtcbiAgICAgIC8vIFJlYWwgZXJyb3JzIGFyZSBoaWRkZW4gZnJvbSB1cyBieSB0aGUgYnJvd3NlclxuICAgICAgLy8gb25lcnJvciBzaG91bGQgb25seSBmaXJlIGlmIGl0J3MgYSBuZXR3b3JrIGVycm9yXG4gICAgICByZWplY3QoY3JlYXRlRXJyb3IoJ05ldHdvcmsgRXJyb3InLCBjb25maWcsIG51bGwsIHJlcXVlc3QpKTtcblxuICAgICAgLy8gQ2xlYW4gdXAgcmVxdWVzdFxuICAgICAgcmVxdWVzdCA9IG51bGw7XG4gICAgfTtcblxuICAgIC8vIEhhbmRsZSB0aW1lb3V0XG4gICAgcmVxdWVzdC5vbnRpbWVvdXQgPSBmdW5jdGlvbiBoYW5kbGVUaW1lb3V0KCkge1xuICAgICAgdmFyIHRpbWVvdXRFcnJvck1lc3NhZ2UgPSAndGltZW91dCBvZiAnICsgY29uZmlnLnRpbWVvdXQgKyAnbXMgZXhjZWVkZWQnO1xuICAgICAgaWYgKGNvbmZpZy50aW1lb3V0RXJyb3JNZXNzYWdlKSB7XG4gICAgICAgIHRpbWVvdXRFcnJvck1lc3NhZ2UgPSBjb25maWcudGltZW91dEVycm9yTWVzc2FnZTtcbiAgICAgIH1cbiAgICAgIHJlamVjdChjcmVhdGVFcnJvcihcbiAgICAgICAgdGltZW91dEVycm9yTWVzc2FnZSxcbiAgICAgICAgY29uZmlnLFxuICAgICAgICBjb25maWcudHJhbnNpdGlvbmFsICYmIGNvbmZpZy50cmFuc2l0aW9uYWwuY2xhcmlmeVRpbWVvdXRFcnJvciA/ICdFVElNRURPVVQnIDogJ0VDT05OQUJPUlRFRCcsXG4gICAgICAgIHJlcXVlc3QpKTtcblxuICAgICAgLy8gQ2xlYW4gdXAgcmVxdWVzdFxuICAgICAgcmVxdWVzdCA9IG51bGw7XG4gICAgfTtcblxuICAgIC8vIEFkZCB4c3JmIGhlYWRlclxuICAgIC8vIFRoaXMgaXMgb25seSBkb25lIGlmIHJ1bm5pbmcgaW4gYSBzdGFuZGFyZCBicm93c2VyIGVudmlyb25tZW50LlxuICAgIC8vIFNwZWNpZmljYWxseSBub3QgaWYgd2UncmUgaW4gYSB3ZWIgd29ya2VyLCBvciByZWFjdC1uYXRpdmUuXG4gICAgaWYgKHV0aWxzLmlzU3RhbmRhcmRCcm93c2VyRW52KCkpIHtcbiAgICAgIC8vIEFkZCB4c3JmIGhlYWRlclxuICAgICAgdmFyIHhzcmZWYWx1ZSA9IChjb25maWcud2l0aENyZWRlbnRpYWxzIHx8IGlzVVJMU2FtZU9yaWdpbihmdWxsUGF0aCkpICYmIGNvbmZpZy54c3JmQ29va2llTmFtZSA/XG4gICAgICAgIGNvb2tpZXMucmVhZChjb25maWcueHNyZkNvb2tpZU5hbWUpIDpcbiAgICAgICAgdW5kZWZpbmVkO1xuXG4gICAgICBpZiAoeHNyZlZhbHVlKSB7XG4gICAgICAgIHJlcXVlc3RIZWFkZXJzW2NvbmZpZy54c3JmSGVhZGVyTmFtZV0gPSB4c3JmVmFsdWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gQWRkIGhlYWRlcnMgdG8gdGhlIHJlcXVlc3RcbiAgICBpZiAoJ3NldFJlcXVlc3RIZWFkZXInIGluIHJlcXVlc3QpIHtcbiAgICAgIHV0aWxzLmZvckVhY2gocmVxdWVzdEhlYWRlcnMsIGZ1bmN0aW9uIHNldFJlcXVlc3RIZWFkZXIodmFsLCBrZXkpIHtcbiAgICAgICAgaWYgKHR5cGVvZiByZXF1ZXN0RGF0YSA9PT0gJ3VuZGVmaW5lZCcgJiYga2V5LnRvTG93ZXJDYXNlKCkgPT09ICdjb250ZW50LXR5cGUnKSB7XG4gICAgICAgICAgLy8gUmVtb3ZlIENvbnRlbnQtVHlwZSBpZiBkYXRhIGlzIHVuZGVmaW5lZFxuICAgICAgICAgIGRlbGV0ZSByZXF1ZXN0SGVhZGVyc1trZXldO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIE90aGVyd2lzZSBhZGQgaGVhZGVyIHRvIHRoZSByZXF1ZXN0XG4gICAgICAgICAgcmVxdWVzdC5zZXRSZXF1ZXN0SGVhZGVyKGtleSwgdmFsKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gQWRkIHdpdGhDcmVkZW50aWFscyB0byByZXF1ZXN0IGlmIG5lZWRlZFxuICAgIGlmICghdXRpbHMuaXNVbmRlZmluZWQoY29uZmlnLndpdGhDcmVkZW50aWFscykpIHtcbiAgICAgIHJlcXVlc3Qud2l0aENyZWRlbnRpYWxzID0gISFjb25maWcud2l0aENyZWRlbnRpYWxzO1xuICAgIH1cblxuICAgIC8vIEFkZCByZXNwb25zZVR5cGUgdG8gcmVxdWVzdCBpZiBuZWVkZWRcbiAgICBpZiAocmVzcG9uc2VUeXBlICYmIHJlc3BvbnNlVHlwZSAhPT0gJ2pzb24nKSB7XG4gICAgICByZXF1ZXN0LnJlc3BvbnNlVHlwZSA9IGNvbmZpZy5yZXNwb25zZVR5cGU7XG4gICAgfVxuXG4gICAgLy8gSGFuZGxlIHByb2dyZXNzIGlmIG5lZWRlZFxuICAgIGlmICh0eXBlb2YgY29uZmlnLm9uRG93bmxvYWRQcm9ncmVzcyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmVxdWVzdC5hZGRFdmVudExpc3RlbmVyKCdwcm9ncmVzcycsIGNvbmZpZy5vbkRvd25sb2FkUHJvZ3Jlc3MpO1xuICAgIH1cblxuICAgIC8vIE5vdCBhbGwgYnJvd3NlcnMgc3VwcG9ydCB1cGxvYWQgZXZlbnRzXG4gICAgaWYgKHR5cGVvZiBjb25maWcub25VcGxvYWRQcm9ncmVzcyA9PT0gJ2Z1bmN0aW9uJyAmJiByZXF1ZXN0LnVwbG9hZCkge1xuICAgICAgcmVxdWVzdC51cGxvYWQuYWRkRXZlbnRMaXN0ZW5lcigncHJvZ3Jlc3MnLCBjb25maWcub25VcGxvYWRQcm9ncmVzcyk7XG4gICAgfVxuXG4gICAgaWYgKGNvbmZpZy5jYW5jZWxUb2tlbikge1xuICAgICAgLy8gSGFuZGxlIGNhbmNlbGxhdGlvblxuICAgICAgY29uZmlnLmNhbmNlbFRva2VuLnByb21pc2UudGhlbihmdW5jdGlvbiBvbkNhbmNlbGVkKGNhbmNlbCkge1xuICAgICAgICBpZiAoIXJlcXVlc3QpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICByZXF1ZXN0LmFib3J0KCk7XG4gICAgICAgIHJlamVjdChjYW5jZWwpO1xuICAgICAgICAvLyBDbGVhbiB1cCByZXF1ZXN0XG4gICAgICAgIHJlcXVlc3QgPSBudWxsO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKCFyZXF1ZXN0RGF0YSkge1xuICAgICAgcmVxdWVzdERhdGEgPSBudWxsO1xuICAgIH1cblxuICAgIC8vIFNlbmQgdGhlIHJlcXVlc3RcbiAgICByZXF1ZXN0LnNlbmQocmVxdWVzdERhdGEpO1xuICB9KTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlscyA9IHJlcXVpcmUoJy4vdXRpbHMnKTtcbnZhciBiaW5kID0gcmVxdWlyZSgnLi9oZWxwZXJzL2JpbmQnKTtcbnZhciBBeGlvcyA9IHJlcXVpcmUoJy4vY29yZS9BeGlvcycpO1xudmFyIG1lcmdlQ29uZmlnID0gcmVxdWlyZSgnLi9jb3JlL21lcmdlQ29uZmlnJyk7XG52YXIgZGVmYXVsdHMgPSByZXF1aXJlKCcuL2RlZmF1bHRzJyk7XG5cbi8qKlxuICogQ3JlYXRlIGFuIGluc3RhbmNlIG9mIEF4aW9zXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IGRlZmF1bHRDb25maWcgVGhlIGRlZmF1bHQgY29uZmlnIGZvciB0aGUgaW5zdGFuY2VcbiAqIEByZXR1cm4ge0F4aW9zfSBBIG5ldyBpbnN0YW5jZSBvZiBBeGlvc1xuICovXG5mdW5jdGlvbiBjcmVhdGVJbnN0YW5jZShkZWZhdWx0Q29uZmlnKSB7XG4gIHZhciBjb250ZXh0ID0gbmV3IEF4aW9zKGRlZmF1bHRDb25maWcpO1xuICB2YXIgaW5zdGFuY2UgPSBiaW5kKEF4aW9zLnByb3RvdHlwZS5yZXF1ZXN0LCBjb250ZXh0KTtcblxuICAvLyBDb3B5IGF4aW9zLnByb3RvdHlwZSB0byBpbnN0YW5jZVxuICB1dGlscy5leHRlbmQoaW5zdGFuY2UsIEF4aW9zLnByb3RvdHlwZSwgY29udGV4dCk7XG5cbiAgLy8gQ29weSBjb250ZXh0IHRvIGluc3RhbmNlXG4gIHV0aWxzLmV4dGVuZChpbnN0YW5jZSwgY29udGV4dCk7XG5cbiAgcmV0dXJuIGluc3RhbmNlO1xufVxuXG4vLyBDcmVhdGUgdGhlIGRlZmF1bHQgaW5zdGFuY2UgdG8gYmUgZXhwb3J0ZWRcbnZhciBheGlvcyA9IGNyZWF0ZUluc3RhbmNlKGRlZmF1bHRzKTtcblxuLy8gRXhwb3NlIEF4aW9zIGNsYXNzIHRvIGFsbG93IGNsYXNzIGluaGVyaXRhbmNlXG5heGlvcy5BeGlvcyA9IEF4aW9zO1xuXG4vLyBGYWN0b3J5IGZvciBjcmVhdGluZyBuZXcgaW5zdGFuY2VzXG5heGlvcy5jcmVhdGUgPSBmdW5jdGlvbiBjcmVhdGUoaW5zdGFuY2VDb25maWcpIHtcbiAgcmV0dXJuIGNyZWF0ZUluc3RhbmNlKG1lcmdlQ29uZmlnKGF4aW9zLmRlZmF1bHRzLCBpbnN0YW5jZUNvbmZpZykpO1xufTtcblxuLy8gRXhwb3NlIENhbmNlbCAmIENhbmNlbFRva2VuXG5heGlvcy5DYW5jZWwgPSByZXF1aXJlKCcuL2NhbmNlbC9DYW5jZWwnKTtcbmF4aW9zLkNhbmNlbFRva2VuID0gcmVxdWlyZSgnLi9jYW5jZWwvQ2FuY2VsVG9rZW4nKTtcbmF4aW9zLmlzQ2FuY2VsID0gcmVxdWlyZSgnLi9jYW5jZWwvaXNDYW5jZWwnKTtcblxuLy8gRXhwb3NlIGFsbC9zcHJlYWRcbmF4aW9zLmFsbCA9IGZ1bmN0aW9uIGFsbChwcm9taXNlcykge1xuICByZXR1cm4gUHJvbWlzZS5hbGwocHJvbWlzZXMpO1xufTtcbmF4aW9zLnNwcmVhZCA9IHJlcXVpcmUoJy4vaGVscGVycy9zcHJlYWQnKTtcblxuLy8gRXhwb3NlIGlzQXhpb3NFcnJvclxuYXhpb3MuaXNBeGlvc0Vycm9yID0gcmVxdWlyZSgnLi9oZWxwZXJzL2lzQXhpb3NFcnJvcicpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGF4aW9zO1xuXG4vLyBBbGxvdyB1c2Ugb2YgZGVmYXVsdCBpbXBvcnQgc3ludGF4IGluIFR5cGVTY3JpcHRcbm1vZHVsZS5leHBvcnRzLmRlZmF1bHQgPSBheGlvcztcbiIsIid1c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBBIGBDYW5jZWxgIGlzIGFuIG9iamVjdCB0aGF0IGlzIHRocm93biB3aGVuIGFuIG9wZXJhdGlvbiBpcyBjYW5jZWxlZC5cbiAqXG4gKiBAY2xhc3NcbiAqIEBwYXJhbSB7c3RyaW5nPX0gbWVzc2FnZSBUaGUgbWVzc2FnZS5cbiAqL1xuZnVuY3Rpb24gQ2FuY2VsKG1lc3NhZ2UpIHtcbiAgdGhpcy5tZXNzYWdlID0gbWVzc2FnZTtcbn1cblxuQ2FuY2VsLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICByZXR1cm4gJ0NhbmNlbCcgKyAodGhpcy5tZXNzYWdlID8gJzogJyArIHRoaXMubWVzc2FnZSA6ICcnKTtcbn07XG5cbkNhbmNlbC5wcm90b3R5cGUuX19DQU5DRUxfXyA9IHRydWU7XG5cbm1vZHVsZS5leHBvcnRzID0gQ2FuY2VsO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgQ2FuY2VsID0gcmVxdWlyZSgnLi9DYW5jZWwnKTtcblxuLyoqXG4gKiBBIGBDYW5jZWxUb2tlbmAgaXMgYW4gb2JqZWN0IHRoYXQgY2FuIGJlIHVzZWQgdG8gcmVxdWVzdCBjYW5jZWxsYXRpb24gb2YgYW4gb3BlcmF0aW9uLlxuICpcbiAqIEBjbGFzc1xuICogQHBhcmFtIHtGdW5jdGlvbn0gZXhlY3V0b3IgVGhlIGV4ZWN1dG9yIGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBDYW5jZWxUb2tlbihleGVjdXRvcikge1xuICBpZiAodHlwZW9mIGV4ZWN1dG9yICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignZXhlY3V0b3IgbXVzdCBiZSBhIGZ1bmN0aW9uLicpO1xuICB9XG5cbiAgdmFyIHJlc29sdmVQcm9taXNlO1xuICB0aGlzLnByb21pc2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbiBwcm9taXNlRXhlY3V0b3IocmVzb2x2ZSkge1xuICAgIHJlc29sdmVQcm9taXNlID0gcmVzb2x2ZTtcbiAgfSk7XG5cbiAgdmFyIHRva2VuID0gdGhpcztcbiAgZXhlY3V0b3IoZnVuY3Rpb24gY2FuY2VsKG1lc3NhZ2UpIHtcbiAgICBpZiAodG9rZW4ucmVhc29uKSB7XG4gICAgICAvLyBDYW5jZWxsYXRpb24gaGFzIGFscmVhZHkgYmVlbiByZXF1ZXN0ZWRcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0b2tlbi5yZWFzb24gPSBuZXcgQ2FuY2VsKG1lc3NhZ2UpO1xuICAgIHJlc29sdmVQcm9taXNlKHRva2VuLnJlYXNvbik7XG4gIH0pO1xufVxuXG4vKipcbiAqIFRocm93cyBhIGBDYW5jZWxgIGlmIGNhbmNlbGxhdGlvbiBoYXMgYmVlbiByZXF1ZXN0ZWQuXG4gKi9cbkNhbmNlbFRva2VuLnByb3RvdHlwZS50aHJvd0lmUmVxdWVzdGVkID0gZnVuY3Rpb24gdGhyb3dJZlJlcXVlc3RlZCgpIHtcbiAgaWYgKHRoaXMucmVhc29uKSB7XG4gICAgdGhyb3cgdGhpcy5yZWFzb247XG4gIH1cbn07XG5cbi8qKlxuICogUmV0dXJucyBhbiBvYmplY3QgdGhhdCBjb250YWlucyBhIG5ldyBgQ2FuY2VsVG9rZW5gIGFuZCBhIGZ1bmN0aW9uIHRoYXQsIHdoZW4gY2FsbGVkLFxuICogY2FuY2VscyB0aGUgYENhbmNlbFRva2VuYC5cbiAqL1xuQ2FuY2VsVG9rZW4uc291cmNlID0gZnVuY3Rpb24gc291cmNlKCkge1xuICB2YXIgY2FuY2VsO1xuICB2YXIgdG9rZW4gPSBuZXcgQ2FuY2VsVG9rZW4oZnVuY3Rpb24gZXhlY3V0b3IoYykge1xuICAgIGNhbmNlbCA9IGM7XG4gIH0pO1xuICByZXR1cm4ge1xuICAgIHRva2VuOiB0b2tlbixcbiAgICBjYW5jZWw6IGNhbmNlbFxuICB9O1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBDYW5jZWxUb2tlbjtcbiIsIid1c2Ugc3RyaWN0JztcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBpc0NhbmNlbCh2YWx1ZSkge1xuICByZXR1cm4gISEodmFsdWUgJiYgdmFsdWUuX19DQU5DRUxfXyk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuLy4uL3V0aWxzJyk7XG52YXIgYnVpbGRVUkwgPSByZXF1aXJlKCcuLi9oZWxwZXJzL2J1aWxkVVJMJyk7XG52YXIgSW50ZXJjZXB0b3JNYW5hZ2VyID0gcmVxdWlyZSgnLi9JbnRlcmNlcHRvck1hbmFnZXInKTtcbnZhciBkaXNwYXRjaFJlcXVlc3QgPSByZXF1aXJlKCcuL2Rpc3BhdGNoUmVxdWVzdCcpO1xudmFyIG1lcmdlQ29uZmlnID0gcmVxdWlyZSgnLi9tZXJnZUNvbmZpZycpO1xudmFyIHZhbGlkYXRvciA9IHJlcXVpcmUoJy4uL2hlbHBlcnMvdmFsaWRhdG9yJyk7XG5cbnZhciB2YWxpZGF0b3JzID0gdmFsaWRhdG9yLnZhbGlkYXRvcnM7XG4vKipcbiAqIENyZWF0ZSBhIG5ldyBpbnN0YW5jZSBvZiBBeGlvc1xuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBpbnN0YW5jZUNvbmZpZyBUaGUgZGVmYXVsdCBjb25maWcgZm9yIHRoZSBpbnN0YW5jZVxuICovXG5mdW5jdGlvbiBBeGlvcyhpbnN0YW5jZUNvbmZpZykge1xuICB0aGlzLmRlZmF1bHRzID0gaW5zdGFuY2VDb25maWc7XG4gIHRoaXMuaW50ZXJjZXB0b3JzID0ge1xuICAgIHJlcXVlc3Q6IG5ldyBJbnRlcmNlcHRvck1hbmFnZXIoKSxcbiAgICByZXNwb25zZTogbmV3IEludGVyY2VwdG9yTWFuYWdlcigpXG4gIH07XG59XG5cbi8qKlxuICogRGlzcGF0Y2ggYSByZXF1ZXN0XG4gKlxuICogQHBhcmFtIHtPYmplY3R9IGNvbmZpZyBUaGUgY29uZmlnIHNwZWNpZmljIGZvciB0aGlzIHJlcXVlc3QgKG1lcmdlZCB3aXRoIHRoaXMuZGVmYXVsdHMpXG4gKi9cbkF4aW9zLnByb3RvdHlwZS5yZXF1ZXN0ID0gZnVuY3Rpb24gcmVxdWVzdChjb25maWcpIHtcbiAgLyplc2xpbnQgbm8tcGFyYW0tcmVhc3NpZ246MCovXG4gIC8vIEFsbG93IGZvciBheGlvcygnZXhhbXBsZS91cmwnWywgY29uZmlnXSkgYSBsYSBmZXRjaCBBUElcbiAgaWYgKHR5cGVvZiBjb25maWcgPT09ICdzdHJpbmcnKSB7XG4gICAgY29uZmlnID0gYXJndW1lbnRzWzFdIHx8IHt9O1xuICAgIGNvbmZpZy51cmwgPSBhcmd1bWVudHNbMF07XG4gIH0gZWxzZSB7XG4gICAgY29uZmlnID0gY29uZmlnIHx8IHt9O1xuICB9XG5cbiAgY29uZmlnID0gbWVyZ2VDb25maWcodGhpcy5kZWZhdWx0cywgY29uZmlnKTtcblxuICAvLyBTZXQgY29uZmlnLm1ldGhvZFxuICBpZiAoY29uZmlnLm1ldGhvZCkge1xuICAgIGNvbmZpZy5tZXRob2QgPSBjb25maWcubWV0aG9kLnRvTG93ZXJDYXNlKCk7XG4gIH0gZWxzZSBpZiAodGhpcy5kZWZhdWx0cy5tZXRob2QpIHtcbiAgICBjb25maWcubWV0aG9kID0gdGhpcy5kZWZhdWx0cy5tZXRob2QudG9Mb3dlckNhc2UoKTtcbiAgfSBlbHNlIHtcbiAgICBjb25maWcubWV0aG9kID0gJ2dldCc7XG4gIH1cblxuICB2YXIgdHJhbnNpdGlvbmFsID0gY29uZmlnLnRyYW5zaXRpb25hbDtcblxuICBpZiAodHJhbnNpdGlvbmFsICE9PSB1bmRlZmluZWQpIHtcbiAgICB2YWxpZGF0b3IuYXNzZXJ0T3B0aW9ucyh0cmFuc2l0aW9uYWwsIHtcbiAgICAgIHNpbGVudEpTT05QYXJzaW5nOiB2YWxpZGF0b3JzLnRyYW5zaXRpb25hbCh2YWxpZGF0b3JzLmJvb2xlYW4sICcxLjAuMCcpLFxuICAgICAgZm9yY2VkSlNPTlBhcnNpbmc6IHZhbGlkYXRvcnMudHJhbnNpdGlvbmFsKHZhbGlkYXRvcnMuYm9vbGVhbiwgJzEuMC4wJyksXG4gICAgICBjbGFyaWZ5VGltZW91dEVycm9yOiB2YWxpZGF0b3JzLnRyYW5zaXRpb25hbCh2YWxpZGF0b3JzLmJvb2xlYW4sICcxLjAuMCcpXG4gICAgfSwgZmFsc2UpO1xuICB9XG5cbiAgLy8gZmlsdGVyIG91dCBza2lwcGVkIGludGVyY2VwdG9yc1xuICB2YXIgcmVxdWVzdEludGVyY2VwdG9yQ2hhaW4gPSBbXTtcbiAgdmFyIHN5bmNocm9ub3VzUmVxdWVzdEludGVyY2VwdG9ycyA9IHRydWU7XG4gIHRoaXMuaW50ZXJjZXB0b3JzLnJlcXVlc3QuZm9yRWFjaChmdW5jdGlvbiB1bnNoaWZ0UmVxdWVzdEludGVyY2VwdG9ycyhpbnRlcmNlcHRvcikge1xuICAgIGlmICh0eXBlb2YgaW50ZXJjZXB0b3IucnVuV2hlbiA9PT0gJ2Z1bmN0aW9uJyAmJiBpbnRlcmNlcHRvci5ydW5XaGVuKGNvbmZpZykgPT09IGZhbHNlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgc3luY2hyb25vdXNSZXF1ZXN0SW50ZXJjZXB0b3JzID0gc3luY2hyb25vdXNSZXF1ZXN0SW50ZXJjZXB0b3JzICYmIGludGVyY2VwdG9yLnN5bmNocm9ub3VzO1xuXG4gICAgcmVxdWVzdEludGVyY2VwdG9yQ2hhaW4udW5zaGlmdChpbnRlcmNlcHRvci5mdWxmaWxsZWQsIGludGVyY2VwdG9yLnJlamVjdGVkKTtcbiAgfSk7XG5cbiAgdmFyIHJlc3BvbnNlSW50ZXJjZXB0b3JDaGFpbiA9IFtdO1xuICB0aGlzLmludGVyY2VwdG9ycy5yZXNwb25zZS5mb3JFYWNoKGZ1bmN0aW9uIHB1c2hSZXNwb25zZUludGVyY2VwdG9ycyhpbnRlcmNlcHRvcikge1xuICAgIHJlc3BvbnNlSW50ZXJjZXB0b3JDaGFpbi5wdXNoKGludGVyY2VwdG9yLmZ1bGZpbGxlZCwgaW50ZXJjZXB0b3IucmVqZWN0ZWQpO1xuICB9KTtcblxuICB2YXIgcHJvbWlzZTtcblxuICBpZiAoIXN5bmNocm9ub3VzUmVxdWVzdEludGVyY2VwdG9ycykge1xuICAgIHZhciBjaGFpbiA9IFtkaXNwYXRjaFJlcXVlc3QsIHVuZGVmaW5lZF07XG5cbiAgICBBcnJheS5wcm90b3R5cGUudW5zaGlmdC5hcHBseShjaGFpbiwgcmVxdWVzdEludGVyY2VwdG9yQ2hhaW4pO1xuICAgIGNoYWluID0gY2hhaW4uY29uY2F0KHJlc3BvbnNlSW50ZXJjZXB0b3JDaGFpbik7XG5cbiAgICBwcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKGNvbmZpZyk7XG4gICAgd2hpbGUgKGNoYWluLmxlbmd0aCkge1xuICAgICAgcHJvbWlzZSA9IHByb21pc2UudGhlbihjaGFpbi5zaGlmdCgpLCBjaGFpbi5zaGlmdCgpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcHJvbWlzZTtcbiAgfVxuXG5cbiAgdmFyIG5ld0NvbmZpZyA9IGNvbmZpZztcbiAgd2hpbGUgKHJlcXVlc3RJbnRlcmNlcHRvckNoYWluLmxlbmd0aCkge1xuICAgIHZhciBvbkZ1bGZpbGxlZCA9IHJlcXVlc3RJbnRlcmNlcHRvckNoYWluLnNoaWZ0KCk7XG4gICAgdmFyIG9uUmVqZWN0ZWQgPSByZXF1ZXN0SW50ZXJjZXB0b3JDaGFpbi5zaGlmdCgpO1xuICAgIHRyeSB7XG4gICAgICBuZXdDb25maWcgPSBvbkZ1bGZpbGxlZChuZXdDb25maWcpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBvblJlamVjdGVkKGVycm9yKTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHRyeSB7XG4gICAgcHJvbWlzZSA9IGRpc3BhdGNoUmVxdWVzdChuZXdDb25maWcpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvcik7XG4gIH1cblxuICB3aGlsZSAocmVzcG9uc2VJbnRlcmNlcHRvckNoYWluLmxlbmd0aCkge1xuICAgIHByb21pc2UgPSBwcm9taXNlLnRoZW4ocmVzcG9uc2VJbnRlcmNlcHRvckNoYWluLnNoaWZ0KCksIHJlc3BvbnNlSW50ZXJjZXB0b3JDaGFpbi5zaGlmdCgpKTtcbiAgfVxuXG4gIHJldHVybiBwcm9taXNlO1xufTtcblxuQXhpb3MucHJvdG90eXBlLmdldFVyaSA9IGZ1bmN0aW9uIGdldFVyaShjb25maWcpIHtcbiAgY29uZmlnID0gbWVyZ2VDb25maWcodGhpcy5kZWZhdWx0cywgY29uZmlnKTtcbiAgcmV0dXJuIGJ1aWxkVVJMKGNvbmZpZy51cmwsIGNvbmZpZy5wYXJhbXMsIGNvbmZpZy5wYXJhbXNTZXJpYWxpemVyKS5yZXBsYWNlKC9eXFw/LywgJycpO1xufTtcblxuLy8gUHJvdmlkZSBhbGlhc2VzIGZvciBzdXBwb3J0ZWQgcmVxdWVzdCBtZXRob2RzXG51dGlscy5mb3JFYWNoKFsnZGVsZXRlJywgJ2dldCcsICdoZWFkJywgJ29wdGlvbnMnXSwgZnVuY3Rpb24gZm9yRWFjaE1ldGhvZE5vRGF0YShtZXRob2QpIHtcbiAgLyplc2xpbnQgZnVuYy1uYW1lczowKi9cbiAgQXhpb3MucHJvdG90eXBlW21ldGhvZF0gPSBmdW5jdGlvbih1cmwsIGNvbmZpZykge1xuICAgIHJldHVybiB0aGlzLnJlcXVlc3QobWVyZ2VDb25maWcoY29uZmlnIHx8IHt9LCB7XG4gICAgICBtZXRob2Q6IG1ldGhvZCxcbiAgICAgIHVybDogdXJsLFxuICAgICAgZGF0YTogKGNvbmZpZyB8fCB7fSkuZGF0YVxuICAgIH0pKTtcbiAgfTtcbn0pO1xuXG51dGlscy5mb3JFYWNoKFsncG9zdCcsICdwdXQnLCAncGF0Y2gnXSwgZnVuY3Rpb24gZm9yRWFjaE1ldGhvZFdpdGhEYXRhKG1ldGhvZCkge1xuICAvKmVzbGludCBmdW5jLW5hbWVzOjAqL1xuICBBeGlvcy5wcm90b3R5cGVbbWV0aG9kXSA9IGZ1bmN0aW9uKHVybCwgZGF0YSwgY29uZmlnKSB7XG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdChtZXJnZUNvbmZpZyhjb25maWcgfHwge30sIHtcbiAgICAgIG1ldGhvZDogbWV0aG9kLFxuICAgICAgdXJsOiB1cmwsXG4gICAgICBkYXRhOiBkYXRhXG4gICAgfSkpO1xuICB9O1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gQXhpb3M7XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlscyA9IHJlcXVpcmUoJy4vLi4vdXRpbHMnKTtcblxuZnVuY3Rpb24gSW50ZXJjZXB0b3JNYW5hZ2VyKCkge1xuICB0aGlzLmhhbmRsZXJzID0gW107XG59XG5cbi8qKlxuICogQWRkIGEgbmV3IGludGVyY2VwdG9yIHRvIHRoZSBzdGFja1xuICpcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bGZpbGxlZCBUaGUgZnVuY3Rpb24gdG8gaGFuZGxlIGB0aGVuYCBmb3IgYSBgUHJvbWlzZWBcbiAqIEBwYXJhbSB7RnVuY3Rpb259IHJlamVjdGVkIFRoZSBmdW5jdGlvbiB0byBoYW5kbGUgYHJlamVjdGAgZm9yIGEgYFByb21pc2VgXG4gKlxuICogQHJldHVybiB7TnVtYmVyfSBBbiBJRCB1c2VkIHRvIHJlbW92ZSBpbnRlcmNlcHRvciBsYXRlclxuICovXG5JbnRlcmNlcHRvck1hbmFnZXIucHJvdG90eXBlLnVzZSA9IGZ1bmN0aW9uIHVzZShmdWxmaWxsZWQsIHJlamVjdGVkLCBvcHRpb25zKSB7XG4gIHRoaXMuaGFuZGxlcnMucHVzaCh7XG4gICAgZnVsZmlsbGVkOiBmdWxmaWxsZWQsXG4gICAgcmVqZWN0ZWQ6IHJlamVjdGVkLFxuICAgIHN5bmNocm9ub3VzOiBvcHRpb25zID8gb3B0aW9ucy5zeW5jaHJvbm91cyA6IGZhbHNlLFxuICAgIHJ1bldoZW46IG9wdGlvbnMgPyBvcHRpb25zLnJ1bldoZW4gOiBudWxsXG4gIH0pO1xuICByZXR1cm4gdGhpcy5oYW5kbGVycy5sZW5ndGggLSAxO1xufTtcblxuLyoqXG4gKiBSZW1vdmUgYW4gaW50ZXJjZXB0b3IgZnJvbSB0aGUgc3RhY2tcbiAqXG4gKiBAcGFyYW0ge051bWJlcn0gaWQgVGhlIElEIHRoYXQgd2FzIHJldHVybmVkIGJ5IGB1c2VgXG4gKi9cbkludGVyY2VwdG9yTWFuYWdlci5wcm90b3R5cGUuZWplY3QgPSBmdW5jdGlvbiBlamVjdChpZCkge1xuICBpZiAodGhpcy5oYW5kbGVyc1tpZF0pIHtcbiAgICB0aGlzLmhhbmRsZXJzW2lkXSA9IG51bGw7XG4gIH1cbn07XG5cbi8qKlxuICogSXRlcmF0ZSBvdmVyIGFsbCB0aGUgcmVnaXN0ZXJlZCBpbnRlcmNlcHRvcnNcbiAqXG4gKiBUaGlzIG1ldGhvZCBpcyBwYXJ0aWN1bGFybHkgdXNlZnVsIGZvciBza2lwcGluZyBvdmVyIGFueVxuICogaW50ZXJjZXB0b3JzIHRoYXQgbWF5IGhhdmUgYmVjb21lIGBudWxsYCBjYWxsaW5nIGBlamVjdGAuXG4gKlxuICogQHBhcmFtIHtGdW5jdGlvbn0gZm4gVGhlIGZ1bmN0aW9uIHRvIGNhbGwgZm9yIGVhY2ggaW50ZXJjZXB0b3JcbiAqL1xuSW50ZXJjZXB0b3JNYW5hZ2VyLnByb3RvdHlwZS5mb3JFYWNoID0gZnVuY3Rpb24gZm9yRWFjaChmbikge1xuICB1dGlscy5mb3JFYWNoKHRoaXMuaGFuZGxlcnMsIGZ1bmN0aW9uIGZvckVhY2hIYW5kbGVyKGgpIHtcbiAgICBpZiAoaCAhPT0gbnVsbCkge1xuICAgICAgZm4oaCk7XG4gICAgfVxuICB9KTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gSW50ZXJjZXB0b3JNYW5hZ2VyO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgaXNBYnNvbHV0ZVVSTCA9IHJlcXVpcmUoJy4uL2hlbHBlcnMvaXNBYnNvbHV0ZVVSTCcpO1xudmFyIGNvbWJpbmVVUkxzID0gcmVxdWlyZSgnLi4vaGVscGVycy9jb21iaW5lVVJMcycpO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBuZXcgVVJMIGJ5IGNvbWJpbmluZyB0aGUgYmFzZVVSTCB3aXRoIHRoZSByZXF1ZXN0ZWRVUkwsXG4gKiBvbmx5IHdoZW4gdGhlIHJlcXVlc3RlZFVSTCBpcyBub3QgYWxyZWFkeSBhbiBhYnNvbHV0ZSBVUkwuXG4gKiBJZiB0aGUgcmVxdWVzdFVSTCBpcyBhYnNvbHV0ZSwgdGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSByZXF1ZXN0ZWRVUkwgdW50b3VjaGVkLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBiYXNlVVJMIFRoZSBiYXNlIFVSTFxuICogQHBhcmFtIHtzdHJpbmd9IHJlcXVlc3RlZFVSTCBBYnNvbHV0ZSBvciByZWxhdGl2ZSBVUkwgdG8gY29tYmluZVxuICogQHJldHVybnMge3N0cmluZ30gVGhlIGNvbWJpbmVkIGZ1bGwgcGF0aFxuICovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGJ1aWxkRnVsbFBhdGgoYmFzZVVSTCwgcmVxdWVzdGVkVVJMKSB7XG4gIGlmIChiYXNlVVJMICYmICFpc0Fic29sdXRlVVJMKHJlcXVlc3RlZFVSTCkpIHtcbiAgICByZXR1cm4gY29tYmluZVVSTHMoYmFzZVVSTCwgcmVxdWVzdGVkVVJMKTtcbiAgfVxuICByZXR1cm4gcmVxdWVzdGVkVVJMO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIGVuaGFuY2VFcnJvciA9IHJlcXVpcmUoJy4vZW5oYW5jZUVycm9yJyk7XG5cbi8qKlxuICogQ3JlYXRlIGFuIEVycm9yIHdpdGggdGhlIHNwZWNpZmllZCBtZXNzYWdlLCBjb25maWcsIGVycm9yIGNvZGUsIHJlcXVlc3QgYW5kIHJlc3BvbnNlLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBtZXNzYWdlIFRoZSBlcnJvciBtZXNzYWdlLlxuICogQHBhcmFtIHtPYmplY3R9IGNvbmZpZyBUaGUgY29uZmlnLlxuICogQHBhcmFtIHtzdHJpbmd9IFtjb2RlXSBUaGUgZXJyb3IgY29kZSAoZm9yIGV4YW1wbGUsICdFQ09OTkFCT1JURUQnKS5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbcmVxdWVzdF0gVGhlIHJlcXVlc3QuXG4gKiBAcGFyYW0ge09iamVjdH0gW3Jlc3BvbnNlXSBUaGUgcmVzcG9uc2UuXG4gKiBAcmV0dXJucyB7RXJyb3J9IFRoZSBjcmVhdGVkIGVycm9yLlxuICovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGNyZWF0ZUVycm9yKG1lc3NhZ2UsIGNvbmZpZywgY29kZSwgcmVxdWVzdCwgcmVzcG9uc2UpIHtcbiAgdmFyIGVycm9yID0gbmV3IEVycm9yKG1lc3NhZ2UpO1xuICByZXR1cm4gZW5oYW5jZUVycm9yKGVycm9yLCBjb25maWcsIGNvZGUsIHJlcXVlc3QsIHJlc3BvbnNlKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlscyA9IHJlcXVpcmUoJy4vLi4vdXRpbHMnKTtcbnZhciB0cmFuc2Zvcm1EYXRhID0gcmVxdWlyZSgnLi90cmFuc2Zvcm1EYXRhJyk7XG52YXIgaXNDYW5jZWwgPSByZXF1aXJlKCcuLi9jYW5jZWwvaXNDYW5jZWwnKTtcbnZhciBkZWZhdWx0cyA9IHJlcXVpcmUoJy4uL2RlZmF1bHRzJyk7XG5cbi8qKlxuICogVGhyb3dzIGEgYENhbmNlbGAgaWYgY2FuY2VsbGF0aW9uIGhhcyBiZWVuIHJlcXVlc3RlZC5cbiAqL1xuZnVuY3Rpb24gdGhyb3dJZkNhbmNlbGxhdGlvblJlcXVlc3RlZChjb25maWcpIHtcbiAgaWYgKGNvbmZpZy5jYW5jZWxUb2tlbikge1xuICAgIGNvbmZpZy5jYW5jZWxUb2tlbi50aHJvd0lmUmVxdWVzdGVkKCk7XG4gIH1cbn1cblxuLyoqXG4gKiBEaXNwYXRjaCBhIHJlcXVlc3QgdG8gdGhlIHNlcnZlciB1c2luZyB0aGUgY29uZmlndXJlZCBhZGFwdGVyLlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSBjb25maWcgVGhlIGNvbmZpZyB0aGF0IGlzIHRvIGJlIHVzZWQgZm9yIHRoZSByZXF1ZXN0XG4gKiBAcmV0dXJucyB7UHJvbWlzZX0gVGhlIFByb21pc2UgdG8gYmUgZnVsZmlsbGVkXG4gKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gZGlzcGF0Y2hSZXF1ZXN0KGNvbmZpZykge1xuICB0aHJvd0lmQ2FuY2VsbGF0aW9uUmVxdWVzdGVkKGNvbmZpZyk7XG5cbiAgLy8gRW5zdXJlIGhlYWRlcnMgZXhpc3RcbiAgY29uZmlnLmhlYWRlcnMgPSBjb25maWcuaGVhZGVycyB8fCB7fTtcblxuICAvLyBUcmFuc2Zvcm0gcmVxdWVzdCBkYXRhXG4gIGNvbmZpZy5kYXRhID0gdHJhbnNmb3JtRGF0YS5jYWxsKFxuICAgIGNvbmZpZyxcbiAgICBjb25maWcuZGF0YSxcbiAgICBjb25maWcuaGVhZGVycyxcbiAgICBjb25maWcudHJhbnNmb3JtUmVxdWVzdFxuICApO1xuXG4gIC8vIEZsYXR0ZW4gaGVhZGVyc1xuICBjb25maWcuaGVhZGVycyA9IHV0aWxzLm1lcmdlKFxuICAgIGNvbmZpZy5oZWFkZXJzLmNvbW1vbiB8fCB7fSxcbiAgICBjb25maWcuaGVhZGVyc1tjb25maWcubWV0aG9kXSB8fCB7fSxcbiAgICBjb25maWcuaGVhZGVyc1xuICApO1xuXG4gIHV0aWxzLmZvckVhY2goXG4gICAgWydkZWxldGUnLCAnZ2V0JywgJ2hlYWQnLCAncG9zdCcsICdwdXQnLCAncGF0Y2gnLCAnY29tbW9uJ10sXG4gICAgZnVuY3Rpb24gY2xlYW5IZWFkZXJDb25maWcobWV0aG9kKSB7XG4gICAgICBkZWxldGUgY29uZmlnLmhlYWRlcnNbbWV0aG9kXTtcbiAgICB9XG4gICk7XG5cbiAgdmFyIGFkYXB0ZXIgPSBjb25maWcuYWRhcHRlciB8fCBkZWZhdWx0cy5hZGFwdGVyO1xuXG4gIHJldHVybiBhZGFwdGVyKGNvbmZpZykudGhlbihmdW5jdGlvbiBvbkFkYXB0ZXJSZXNvbHV0aW9uKHJlc3BvbnNlKSB7XG4gICAgdGhyb3dJZkNhbmNlbGxhdGlvblJlcXVlc3RlZChjb25maWcpO1xuXG4gICAgLy8gVHJhbnNmb3JtIHJlc3BvbnNlIGRhdGFcbiAgICByZXNwb25zZS5kYXRhID0gdHJhbnNmb3JtRGF0YS5jYWxsKFxuICAgICAgY29uZmlnLFxuICAgICAgcmVzcG9uc2UuZGF0YSxcbiAgICAgIHJlc3BvbnNlLmhlYWRlcnMsXG4gICAgICBjb25maWcudHJhbnNmb3JtUmVzcG9uc2VcbiAgICApO1xuXG4gICAgcmV0dXJuIHJlc3BvbnNlO1xuICB9LCBmdW5jdGlvbiBvbkFkYXB0ZXJSZWplY3Rpb24ocmVhc29uKSB7XG4gICAgaWYgKCFpc0NhbmNlbChyZWFzb24pKSB7XG4gICAgICB0aHJvd0lmQ2FuY2VsbGF0aW9uUmVxdWVzdGVkKGNvbmZpZyk7XG5cbiAgICAgIC8vIFRyYW5zZm9ybSByZXNwb25zZSBkYXRhXG4gICAgICBpZiAocmVhc29uICYmIHJlYXNvbi5yZXNwb25zZSkge1xuICAgICAgICByZWFzb24ucmVzcG9uc2UuZGF0YSA9IHRyYW5zZm9ybURhdGEuY2FsbChcbiAgICAgICAgICBjb25maWcsXG4gICAgICAgICAgcmVhc29uLnJlc3BvbnNlLmRhdGEsXG4gICAgICAgICAgcmVhc29uLnJlc3BvbnNlLmhlYWRlcnMsXG4gICAgICAgICAgY29uZmlnLnRyYW5zZm9ybVJlc3BvbnNlXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIFByb21pc2UucmVqZWN0KHJlYXNvbik7XG4gIH0pO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBVcGRhdGUgYW4gRXJyb3Igd2l0aCB0aGUgc3BlY2lmaWVkIGNvbmZpZywgZXJyb3IgY29kZSwgYW5kIHJlc3BvbnNlLlxuICpcbiAqIEBwYXJhbSB7RXJyb3J9IGVycm9yIFRoZSBlcnJvciB0byB1cGRhdGUuXG4gKiBAcGFyYW0ge09iamVjdH0gY29uZmlnIFRoZSBjb25maWcuXG4gKiBAcGFyYW0ge3N0cmluZ30gW2NvZGVdIFRoZSBlcnJvciBjb2RlIChmb3IgZXhhbXBsZSwgJ0VDT05OQUJPUlRFRCcpLlxuICogQHBhcmFtIHtPYmplY3R9IFtyZXF1ZXN0XSBUaGUgcmVxdWVzdC5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbcmVzcG9uc2VdIFRoZSByZXNwb25zZS5cbiAqIEByZXR1cm5zIHtFcnJvcn0gVGhlIGVycm9yLlxuICovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGVuaGFuY2VFcnJvcihlcnJvciwgY29uZmlnLCBjb2RlLCByZXF1ZXN0LCByZXNwb25zZSkge1xuICBlcnJvci5jb25maWcgPSBjb25maWc7XG4gIGlmIChjb2RlKSB7XG4gICAgZXJyb3IuY29kZSA9IGNvZGU7XG4gIH1cblxuICBlcnJvci5yZXF1ZXN0ID0gcmVxdWVzdDtcbiAgZXJyb3IucmVzcG9uc2UgPSByZXNwb25zZTtcbiAgZXJyb3IuaXNBeGlvc0Vycm9yID0gdHJ1ZTtcblxuICBlcnJvci50b0pTT04gPSBmdW5jdGlvbiB0b0pTT04oKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC8vIFN0YW5kYXJkXG4gICAgICBtZXNzYWdlOiB0aGlzLm1lc3NhZ2UsXG4gICAgICBuYW1lOiB0aGlzLm5hbWUsXG4gICAgICAvLyBNaWNyb3NvZnRcbiAgICAgIGRlc2NyaXB0aW9uOiB0aGlzLmRlc2NyaXB0aW9uLFxuICAgICAgbnVtYmVyOiB0aGlzLm51bWJlcixcbiAgICAgIC8vIE1vemlsbGFcbiAgICAgIGZpbGVOYW1lOiB0aGlzLmZpbGVOYW1lLFxuICAgICAgbGluZU51bWJlcjogdGhpcy5saW5lTnVtYmVyLFxuICAgICAgY29sdW1uTnVtYmVyOiB0aGlzLmNvbHVtbk51bWJlcixcbiAgICAgIHN0YWNrOiB0aGlzLnN0YWNrLFxuICAgICAgLy8gQXhpb3NcbiAgICAgIGNvbmZpZzogdGhpcy5jb25maWcsXG4gICAgICBjb2RlOiB0aGlzLmNvZGVcbiAgICB9O1xuICB9O1xuICByZXR1cm4gZXJyb3I7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuLi91dGlscycpO1xuXG4vKipcbiAqIENvbmZpZy1zcGVjaWZpYyBtZXJnZS1mdW5jdGlvbiB3aGljaCBjcmVhdGVzIGEgbmV3IGNvbmZpZy1vYmplY3RcbiAqIGJ5IG1lcmdpbmcgdHdvIGNvbmZpZ3VyYXRpb24gb2JqZWN0cyB0b2dldGhlci5cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gY29uZmlnMVxuICogQHBhcmFtIHtPYmplY3R9IGNvbmZpZzJcbiAqIEByZXR1cm5zIHtPYmplY3R9IE5ldyBvYmplY3QgcmVzdWx0aW5nIGZyb20gbWVyZ2luZyBjb25maWcyIHRvIGNvbmZpZzFcbiAqL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBtZXJnZUNvbmZpZyhjb25maWcxLCBjb25maWcyKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wYXJhbS1yZWFzc2lnblxuICBjb25maWcyID0gY29uZmlnMiB8fCB7fTtcbiAgdmFyIGNvbmZpZyA9IHt9O1xuXG4gIHZhciB2YWx1ZUZyb21Db25maWcyS2V5cyA9IFsndXJsJywgJ21ldGhvZCcsICdkYXRhJ107XG4gIHZhciBtZXJnZURlZXBQcm9wZXJ0aWVzS2V5cyA9IFsnaGVhZGVycycsICdhdXRoJywgJ3Byb3h5JywgJ3BhcmFtcyddO1xuICB2YXIgZGVmYXVsdFRvQ29uZmlnMktleXMgPSBbXG4gICAgJ2Jhc2VVUkwnLCAndHJhbnNmb3JtUmVxdWVzdCcsICd0cmFuc2Zvcm1SZXNwb25zZScsICdwYXJhbXNTZXJpYWxpemVyJyxcbiAgICAndGltZW91dCcsICd0aW1lb3V0TWVzc2FnZScsICd3aXRoQ3JlZGVudGlhbHMnLCAnYWRhcHRlcicsICdyZXNwb25zZVR5cGUnLCAneHNyZkNvb2tpZU5hbWUnLFxuICAgICd4c3JmSGVhZGVyTmFtZScsICdvblVwbG9hZFByb2dyZXNzJywgJ29uRG93bmxvYWRQcm9ncmVzcycsICdkZWNvbXByZXNzJyxcbiAgICAnbWF4Q29udGVudExlbmd0aCcsICdtYXhCb2R5TGVuZ3RoJywgJ21heFJlZGlyZWN0cycsICd0cmFuc3BvcnQnLCAnaHR0cEFnZW50JyxcbiAgICAnaHR0cHNBZ2VudCcsICdjYW5jZWxUb2tlbicsICdzb2NrZXRQYXRoJywgJ3Jlc3BvbnNlRW5jb2RpbmcnXG4gIF07XG4gIHZhciBkaXJlY3RNZXJnZUtleXMgPSBbJ3ZhbGlkYXRlU3RhdHVzJ107XG5cbiAgZnVuY3Rpb24gZ2V0TWVyZ2VkVmFsdWUodGFyZ2V0LCBzb3VyY2UpIHtcbiAgICBpZiAodXRpbHMuaXNQbGFpbk9iamVjdCh0YXJnZXQpICYmIHV0aWxzLmlzUGxhaW5PYmplY3Qoc291cmNlKSkge1xuICAgICAgcmV0dXJuIHV0aWxzLm1lcmdlKHRhcmdldCwgc291cmNlKTtcbiAgICB9IGVsc2UgaWYgKHV0aWxzLmlzUGxhaW5PYmplY3Qoc291cmNlKSkge1xuICAgICAgcmV0dXJuIHV0aWxzLm1lcmdlKHt9LCBzb3VyY2UpO1xuICAgIH0gZWxzZSBpZiAodXRpbHMuaXNBcnJheShzb3VyY2UpKSB7XG4gICAgICByZXR1cm4gc291cmNlLnNsaWNlKCk7XG4gICAgfVxuICAgIHJldHVybiBzb3VyY2U7XG4gIH1cblxuICBmdW5jdGlvbiBtZXJnZURlZXBQcm9wZXJ0aWVzKHByb3ApIHtcbiAgICBpZiAoIXV0aWxzLmlzVW5kZWZpbmVkKGNvbmZpZzJbcHJvcF0pKSB7XG4gICAgICBjb25maWdbcHJvcF0gPSBnZXRNZXJnZWRWYWx1ZShjb25maWcxW3Byb3BdLCBjb25maWcyW3Byb3BdKTtcbiAgICB9IGVsc2UgaWYgKCF1dGlscy5pc1VuZGVmaW5lZChjb25maWcxW3Byb3BdKSkge1xuICAgICAgY29uZmlnW3Byb3BdID0gZ2V0TWVyZ2VkVmFsdWUodW5kZWZpbmVkLCBjb25maWcxW3Byb3BdKTtcbiAgICB9XG4gIH1cblxuICB1dGlscy5mb3JFYWNoKHZhbHVlRnJvbUNvbmZpZzJLZXlzLCBmdW5jdGlvbiB2YWx1ZUZyb21Db25maWcyKHByb3ApIHtcbiAgICBpZiAoIXV0aWxzLmlzVW5kZWZpbmVkKGNvbmZpZzJbcHJvcF0pKSB7XG4gICAgICBjb25maWdbcHJvcF0gPSBnZXRNZXJnZWRWYWx1ZSh1bmRlZmluZWQsIGNvbmZpZzJbcHJvcF0pO1xuICAgIH1cbiAgfSk7XG5cbiAgdXRpbHMuZm9yRWFjaChtZXJnZURlZXBQcm9wZXJ0aWVzS2V5cywgbWVyZ2VEZWVwUHJvcGVydGllcyk7XG5cbiAgdXRpbHMuZm9yRWFjaChkZWZhdWx0VG9Db25maWcyS2V5cywgZnVuY3Rpb24gZGVmYXVsdFRvQ29uZmlnMihwcm9wKSB7XG4gICAgaWYgKCF1dGlscy5pc1VuZGVmaW5lZChjb25maWcyW3Byb3BdKSkge1xuICAgICAgY29uZmlnW3Byb3BdID0gZ2V0TWVyZ2VkVmFsdWUodW5kZWZpbmVkLCBjb25maWcyW3Byb3BdKTtcbiAgICB9IGVsc2UgaWYgKCF1dGlscy5pc1VuZGVmaW5lZChjb25maWcxW3Byb3BdKSkge1xuICAgICAgY29uZmlnW3Byb3BdID0gZ2V0TWVyZ2VkVmFsdWUodW5kZWZpbmVkLCBjb25maWcxW3Byb3BdKTtcbiAgICB9XG4gIH0pO1xuXG4gIHV0aWxzLmZvckVhY2goZGlyZWN0TWVyZ2VLZXlzLCBmdW5jdGlvbiBtZXJnZShwcm9wKSB7XG4gICAgaWYgKHByb3AgaW4gY29uZmlnMikge1xuICAgICAgY29uZmlnW3Byb3BdID0gZ2V0TWVyZ2VkVmFsdWUoY29uZmlnMVtwcm9wXSwgY29uZmlnMltwcm9wXSk7XG4gICAgfSBlbHNlIGlmIChwcm9wIGluIGNvbmZpZzEpIHtcbiAgICAgIGNvbmZpZ1twcm9wXSA9IGdldE1lcmdlZFZhbHVlKHVuZGVmaW5lZCwgY29uZmlnMVtwcm9wXSk7XG4gICAgfVxuICB9KTtcblxuICB2YXIgYXhpb3NLZXlzID0gdmFsdWVGcm9tQ29uZmlnMktleXNcbiAgICAuY29uY2F0KG1lcmdlRGVlcFByb3BlcnRpZXNLZXlzKVxuICAgIC5jb25jYXQoZGVmYXVsdFRvQ29uZmlnMktleXMpXG4gICAgLmNvbmNhdChkaXJlY3RNZXJnZUtleXMpO1xuXG4gIHZhciBvdGhlcktleXMgPSBPYmplY3RcbiAgICAua2V5cyhjb25maWcxKVxuICAgIC5jb25jYXQoT2JqZWN0LmtleXMoY29uZmlnMikpXG4gICAgLmZpbHRlcihmdW5jdGlvbiBmaWx0ZXJBeGlvc0tleXMoa2V5KSB7XG4gICAgICByZXR1cm4gYXhpb3NLZXlzLmluZGV4T2Yoa2V5KSA9PT0gLTE7XG4gICAgfSk7XG5cbiAgdXRpbHMuZm9yRWFjaChvdGhlcktleXMsIG1lcmdlRGVlcFByb3BlcnRpZXMpO1xuXG4gIHJldHVybiBjb25maWc7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgY3JlYXRlRXJyb3IgPSByZXF1aXJlKCcuL2NyZWF0ZUVycm9yJyk7XG5cbi8qKlxuICogUmVzb2x2ZSBvciByZWplY3QgYSBQcm9taXNlIGJhc2VkIG9uIHJlc3BvbnNlIHN0YXR1cy5cbiAqXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSByZXNvbHZlIEEgZnVuY3Rpb24gdGhhdCByZXNvbHZlcyB0aGUgcHJvbWlzZS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHJlamVjdCBBIGZ1bmN0aW9uIHRoYXQgcmVqZWN0cyB0aGUgcHJvbWlzZS5cbiAqIEBwYXJhbSB7b2JqZWN0fSByZXNwb25zZSBUaGUgcmVzcG9uc2UuXG4gKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gc2V0dGxlKHJlc29sdmUsIHJlamVjdCwgcmVzcG9uc2UpIHtcbiAgdmFyIHZhbGlkYXRlU3RhdHVzID0gcmVzcG9uc2UuY29uZmlnLnZhbGlkYXRlU3RhdHVzO1xuICBpZiAoIXJlc3BvbnNlLnN0YXR1cyB8fCAhdmFsaWRhdGVTdGF0dXMgfHwgdmFsaWRhdGVTdGF0dXMocmVzcG9uc2Uuc3RhdHVzKSkge1xuICAgIHJlc29sdmUocmVzcG9uc2UpO1xuICB9IGVsc2Uge1xuICAgIHJlamVjdChjcmVhdGVFcnJvcihcbiAgICAgICdSZXF1ZXN0IGZhaWxlZCB3aXRoIHN0YXR1cyBjb2RlICcgKyByZXNwb25zZS5zdGF0dXMsXG4gICAgICByZXNwb25zZS5jb25maWcsXG4gICAgICBudWxsLFxuICAgICAgcmVzcG9uc2UucmVxdWVzdCxcbiAgICAgIHJlc3BvbnNlXG4gICAgKSk7XG4gIH1cbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlscyA9IHJlcXVpcmUoJy4vLi4vdXRpbHMnKTtcbnZhciBkZWZhdWx0cyA9IHJlcXVpcmUoJy4vLi4vZGVmYXVsdHMnKTtcblxuLyoqXG4gKiBUcmFuc2Zvcm0gdGhlIGRhdGEgZm9yIGEgcmVxdWVzdCBvciBhIHJlc3BvbnNlXG4gKlxuICogQHBhcmFtIHtPYmplY3R8U3RyaW5nfSBkYXRhIFRoZSBkYXRhIHRvIGJlIHRyYW5zZm9ybWVkXG4gKiBAcGFyYW0ge0FycmF5fSBoZWFkZXJzIFRoZSBoZWFkZXJzIGZvciB0aGUgcmVxdWVzdCBvciByZXNwb25zZVxuICogQHBhcmFtIHtBcnJheXxGdW5jdGlvbn0gZm5zIEEgc2luZ2xlIGZ1bmN0aW9uIG9yIEFycmF5IG9mIGZ1bmN0aW9uc1xuICogQHJldHVybnMgeyp9IFRoZSByZXN1bHRpbmcgdHJhbnNmb3JtZWQgZGF0YVxuICovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIHRyYW5zZm9ybURhdGEoZGF0YSwgaGVhZGVycywgZm5zKSB7XG4gIHZhciBjb250ZXh0ID0gdGhpcyB8fCBkZWZhdWx0cztcbiAgLyplc2xpbnQgbm8tcGFyYW0tcmVhc3NpZ246MCovXG4gIHV0aWxzLmZvckVhY2goZm5zLCBmdW5jdGlvbiB0cmFuc2Zvcm0oZm4pIHtcbiAgICBkYXRhID0gZm4uY2FsbChjb250ZXh0LCBkYXRhLCBoZWFkZXJzKTtcbiAgfSk7XG5cbiAgcmV0dXJuIGRhdGE7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuL3V0aWxzJyk7XG52YXIgbm9ybWFsaXplSGVhZGVyTmFtZSA9IHJlcXVpcmUoJy4vaGVscGVycy9ub3JtYWxpemVIZWFkZXJOYW1lJyk7XG52YXIgZW5oYW5jZUVycm9yID0gcmVxdWlyZSgnLi9jb3JlL2VuaGFuY2VFcnJvcicpO1xuXG52YXIgREVGQVVMVF9DT05URU5UX1RZUEUgPSB7XG4gICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJ1xufTtcblxuZnVuY3Rpb24gc2V0Q29udGVudFR5cGVJZlVuc2V0KGhlYWRlcnMsIHZhbHVlKSB7XG4gIGlmICghdXRpbHMuaXNVbmRlZmluZWQoaGVhZGVycykgJiYgdXRpbHMuaXNVbmRlZmluZWQoaGVhZGVyc1snQ29udGVudC1UeXBlJ10pKSB7XG4gICAgaGVhZGVyc1snQ29udGVudC1UeXBlJ10gPSB2YWx1ZTtcbiAgfVxufVxuXG5mdW5jdGlvbiBnZXREZWZhdWx0QWRhcHRlcigpIHtcbiAgdmFyIGFkYXB0ZXI7XG4gIGlmICh0eXBlb2YgWE1MSHR0cFJlcXVlc3QgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgLy8gRm9yIGJyb3dzZXJzIHVzZSBYSFIgYWRhcHRlclxuICAgIGFkYXB0ZXIgPSByZXF1aXJlKCcuL2FkYXB0ZXJzL3hocicpO1xuICB9IGVsc2UgaWYgKHR5cGVvZiBwcm9jZXNzICE9PSAndW5kZWZpbmVkJyAmJiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwocHJvY2VzcykgPT09ICdbb2JqZWN0IHByb2Nlc3NdJykge1xuICAgIC8vIEZvciBub2RlIHVzZSBIVFRQIGFkYXB0ZXJcbiAgICBhZGFwdGVyID0gcmVxdWlyZSgnLi9hZGFwdGVycy9odHRwJyk7XG4gIH1cbiAgcmV0dXJuIGFkYXB0ZXI7XG59XG5cbmZ1bmN0aW9uIHN0cmluZ2lmeVNhZmVseShyYXdWYWx1ZSwgcGFyc2VyLCBlbmNvZGVyKSB7XG4gIGlmICh1dGlscy5pc1N0cmluZyhyYXdWYWx1ZSkpIHtcbiAgICB0cnkge1xuICAgICAgKHBhcnNlciB8fCBKU09OLnBhcnNlKShyYXdWYWx1ZSk7XG4gICAgICByZXR1cm4gdXRpbHMudHJpbShyYXdWYWx1ZSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaWYgKGUubmFtZSAhPT0gJ1N5bnRheEVycm9yJykge1xuICAgICAgICB0aHJvdyBlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiAoZW5jb2RlciB8fCBKU09OLnN0cmluZ2lmeSkocmF3VmFsdWUpO1xufVxuXG52YXIgZGVmYXVsdHMgPSB7XG5cbiAgdHJhbnNpdGlvbmFsOiB7XG4gICAgc2lsZW50SlNPTlBhcnNpbmc6IHRydWUsXG4gICAgZm9yY2VkSlNPTlBhcnNpbmc6IHRydWUsXG4gICAgY2xhcmlmeVRpbWVvdXRFcnJvcjogZmFsc2VcbiAgfSxcblxuICBhZGFwdGVyOiBnZXREZWZhdWx0QWRhcHRlcigpLFxuXG4gIHRyYW5zZm9ybVJlcXVlc3Q6IFtmdW5jdGlvbiB0cmFuc2Zvcm1SZXF1ZXN0KGRhdGEsIGhlYWRlcnMpIHtcbiAgICBub3JtYWxpemVIZWFkZXJOYW1lKGhlYWRlcnMsICdBY2NlcHQnKTtcbiAgICBub3JtYWxpemVIZWFkZXJOYW1lKGhlYWRlcnMsICdDb250ZW50LVR5cGUnKTtcblxuICAgIGlmICh1dGlscy5pc0Zvcm1EYXRhKGRhdGEpIHx8XG4gICAgICB1dGlscy5pc0FycmF5QnVmZmVyKGRhdGEpIHx8XG4gICAgICB1dGlscy5pc0J1ZmZlcihkYXRhKSB8fFxuICAgICAgdXRpbHMuaXNTdHJlYW0oZGF0YSkgfHxcbiAgICAgIHV0aWxzLmlzRmlsZShkYXRhKSB8fFxuICAgICAgdXRpbHMuaXNCbG9iKGRhdGEpXG4gICAgKSB7XG4gICAgICByZXR1cm4gZGF0YTtcbiAgICB9XG4gICAgaWYgKHV0aWxzLmlzQXJyYXlCdWZmZXJWaWV3KGRhdGEpKSB7XG4gICAgICByZXR1cm4gZGF0YS5idWZmZXI7XG4gICAgfVxuICAgIGlmICh1dGlscy5pc1VSTFNlYXJjaFBhcmFtcyhkYXRhKSkge1xuICAgICAgc2V0Q29udGVudFR5cGVJZlVuc2V0KGhlYWRlcnMsICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7Y2hhcnNldD11dGYtOCcpO1xuICAgICAgcmV0dXJuIGRhdGEudG9TdHJpbmcoKTtcbiAgICB9XG4gICAgaWYgKHV0aWxzLmlzT2JqZWN0KGRhdGEpIHx8IChoZWFkZXJzICYmIGhlYWRlcnNbJ0NvbnRlbnQtVHlwZSddID09PSAnYXBwbGljYXRpb24vanNvbicpKSB7XG4gICAgICBzZXRDb250ZW50VHlwZUlmVW5zZXQoaGVhZGVycywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcbiAgICAgIHJldHVybiBzdHJpbmdpZnlTYWZlbHkoZGF0YSk7XG4gICAgfVxuICAgIHJldHVybiBkYXRhO1xuICB9XSxcblxuICB0cmFuc2Zvcm1SZXNwb25zZTogW2Z1bmN0aW9uIHRyYW5zZm9ybVJlc3BvbnNlKGRhdGEpIHtcbiAgICB2YXIgdHJhbnNpdGlvbmFsID0gdGhpcy50cmFuc2l0aW9uYWw7XG4gICAgdmFyIHNpbGVudEpTT05QYXJzaW5nID0gdHJhbnNpdGlvbmFsICYmIHRyYW5zaXRpb25hbC5zaWxlbnRKU09OUGFyc2luZztcbiAgICB2YXIgZm9yY2VkSlNPTlBhcnNpbmcgPSB0cmFuc2l0aW9uYWwgJiYgdHJhbnNpdGlvbmFsLmZvcmNlZEpTT05QYXJzaW5nO1xuICAgIHZhciBzdHJpY3RKU09OUGFyc2luZyA9ICFzaWxlbnRKU09OUGFyc2luZyAmJiB0aGlzLnJlc3BvbnNlVHlwZSA9PT0gJ2pzb24nO1xuXG4gICAgaWYgKHN0cmljdEpTT05QYXJzaW5nIHx8IChmb3JjZWRKU09OUGFyc2luZyAmJiB1dGlscy5pc1N0cmluZyhkYXRhKSAmJiBkYXRhLmxlbmd0aCkpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJldHVybiBKU09OLnBhcnNlKGRhdGEpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBpZiAoc3RyaWN0SlNPTlBhcnNpbmcpIHtcbiAgICAgICAgICBpZiAoZS5uYW1lID09PSAnU3ludGF4RXJyb3InKSB7XG4gICAgICAgICAgICB0aHJvdyBlbmhhbmNlRXJyb3IoZSwgdGhpcywgJ0VfSlNPTl9QQVJTRScpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGRhdGE7XG4gIH1dLFxuXG4gIC8qKlxuICAgKiBBIHRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzIHRvIGFib3J0IGEgcmVxdWVzdC4gSWYgc2V0IHRvIDAgKGRlZmF1bHQpIGFcbiAgICogdGltZW91dCBpcyBub3QgY3JlYXRlZC5cbiAgICovXG4gIHRpbWVvdXQ6IDAsXG5cbiAgeHNyZkNvb2tpZU5hbWU6ICdYU1JGLVRPS0VOJyxcbiAgeHNyZkhlYWRlck5hbWU6ICdYLVhTUkYtVE9LRU4nLFxuXG4gIG1heENvbnRlbnRMZW5ndGg6IC0xLFxuICBtYXhCb2R5TGVuZ3RoOiAtMSxcblxuICB2YWxpZGF0ZVN0YXR1czogZnVuY3Rpb24gdmFsaWRhdGVTdGF0dXMoc3RhdHVzKSB7XG4gICAgcmV0dXJuIHN0YXR1cyA+PSAyMDAgJiYgc3RhdHVzIDwgMzAwO1xuICB9XG59O1xuXG5kZWZhdWx0cy5oZWFkZXJzID0ge1xuICBjb21tb246IHtcbiAgICAnQWNjZXB0JzogJ2FwcGxpY2F0aW9uL2pzb24sIHRleHQvcGxhaW4sICovKidcbiAgfVxufTtcblxudXRpbHMuZm9yRWFjaChbJ2RlbGV0ZScsICdnZXQnLCAnaGVhZCddLCBmdW5jdGlvbiBmb3JFYWNoTWV0aG9kTm9EYXRhKG1ldGhvZCkge1xuICBkZWZhdWx0cy5oZWFkZXJzW21ldGhvZF0gPSB7fTtcbn0pO1xuXG51dGlscy5mb3JFYWNoKFsncG9zdCcsICdwdXQnLCAncGF0Y2gnXSwgZnVuY3Rpb24gZm9yRWFjaE1ldGhvZFdpdGhEYXRhKG1ldGhvZCkge1xuICBkZWZhdWx0cy5oZWFkZXJzW21ldGhvZF0gPSB1dGlscy5tZXJnZShERUZBVUxUX0NPTlRFTlRfVFlQRSk7XG59KTtcblxubW9kdWxlLmV4cG9ydHMgPSBkZWZhdWx0cztcbiIsIid1c2Ugc3RyaWN0JztcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBiaW5kKGZuLCB0aGlzQXJnKSB7XG4gIHJldHVybiBmdW5jdGlvbiB3cmFwKCkge1xuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGgpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJncy5sZW5ndGg7IGkrKykge1xuICAgICAgYXJnc1tpXSA9IGFyZ3VtZW50c1tpXTtcbiAgICB9XG4gICAgcmV0dXJuIGZuLmFwcGx5KHRoaXNBcmcsIGFyZ3MpO1xuICB9O1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi8uLi91dGlscycpO1xuXG5mdW5jdGlvbiBlbmNvZGUodmFsKSB7XG4gIHJldHVybiBlbmNvZGVVUklDb21wb25lbnQodmFsKS5cbiAgICByZXBsYWNlKC8lM0EvZ2ksICc6JykuXG4gICAgcmVwbGFjZSgvJTI0L2csICckJykuXG4gICAgcmVwbGFjZSgvJTJDL2dpLCAnLCcpLlxuICAgIHJlcGxhY2UoLyUyMC9nLCAnKycpLlxuICAgIHJlcGxhY2UoLyU1Qi9naSwgJ1snKS5cbiAgICByZXBsYWNlKC8lNUQvZ2ksICddJyk7XG59XG5cbi8qKlxuICogQnVpbGQgYSBVUkwgYnkgYXBwZW5kaW5nIHBhcmFtcyB0byB0aGUgZW5kXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHVybCBUaGUgYmFzZSBvZiB0aGUgdXJsIChlLmcuLCBodHRwOi8vd3d3Lmdvb2dsZS5jb20pXG4gKiBAcGFyYW0ge29iamVjdH0gW3BhcmFtc10gVGhlIHBhcmFtcyB0byBiZSBhcHBlbmRlZFxuICogQHJldHVybnMge3N0cmluZ30gVGhlIGZvcm1hdHRlZCB1cmxcbiAqL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBidWlsZFVSTCh1cmwsIHBhcmFtcywgcGFyYW1zU2VyaWFsaXplcikge1xuICAvKmVzbGludCBuby1wYXJhbS1yZWFzc2lnbjowKi9cbiAgaWYgKCFwYXJhbXMpIHtcbiAgICByZXR1cm4gdXJsO1xuICB9XG5cbiAgdmFyIHNlcmlhbGl6ZWRQYXJhbXM7XG4gIGlmIChwYXJhbXNTZXJpYWxpemVyKSB7XG4gICAgc2VyaWFsaXplZFBhcmFtcyA9IHBhcmFtc1NlcmlhbGl6ZXIocGFyYW1zKTtcbiAgfSBlbHNlIGlmICh1dGlscy5pc1VSTFNlYXJjaFBhcmFtcyhwYXJhbXMpKSB7XG4gICAgc2VyaWFsaXplZFBhcmFtcyA9IHBhcmFtcy50b1N0cmluZygpO1xuICB9IGVsc2Uge1xuICAgIHZhciBwYXJ0cyA9IFtdO1xuXG4gICAgdXRpbHMuZm9yRWFjaChwYXJhbXMsIGZ1bmN0aW9uIHNlcmlhbGl6ZSh2YWwsIGtleSkge1xuICAgICAgaWYgKHZhbCA9PT0gbnVsbCB8fCB0eXBlb2YgdmFsID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmICh1dGlscy5pc0FycmF5KHZhbCkpIHtcbiAgICAgICAga2V5ID0ga2V5ICsgJ1tdJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhbCA9IFt2YWxdO1xuICAgICAgfVxuXG4gICAgICB1dGlscy5mb3JFYWNoKHZhbCwgZnVuY3Rpb24gcGFyc2VWYWx1ZSh2KSB7XG4gICAgICAgIGlmICh1dGlscy5pc0RhdGUodikpIHtcbiAgICAgICAgICB2ID0gdi50b0lTT1N0cmluZygpO1xuICAgICAgICB9IGVsc2UgaWYgKHV0aWxzLmlzT2JqZWN0KHYpKSB7XG4gICAgICAgICAgdiA9IEpTT04uc3RyaW5naWZ5KHYpO1xuICAgICAgICB9XG4gICAgICAgIHBhcnRzLnB1c2goZW5jb2RlKGtleSkgKyAnPScgKyBlbmNvZGUodikpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBzZXJpYWxpemVkUGFyYW1zID0gcGFydHMuam9pbignJicpO1xuICB9XG5cbiAgaWYgKHNlcmlhbGl6ZWRQYXJhbXMpIHtcbiAgICB2YXIgaGFzaG1hcmtJbmRleCA9IHVybC5pbmRleE9mKCcjJyk7XG4gICAgaWYgKGhhc2htYXJrSW5kZXggIT09IC0xKSB7XG4gICAgICB1cmwgPSB1cmwuc2xpY2UoMCwgaGFzaG1hcmtJbmRleCk7XG4gICAgfVxuXG4gICAgdXJsICs9ICh1cmwuaW5kZXhPZignPycpID09PSAtMSA/ICc/JyA6ICcmJykgKyBzZXJpYWxpemVkUGFyYW1zO1xuICB9XG5cbiAgcmV0dXJuIHVybDtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbi8qKlxuICogQ3JlYXRlcyBhIG5ldyBVUkwgYnkgY29tYmluaW5nIHRoZSBzcGVjaWZpZWQgVVJMc1xuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBiYXNlVVJMIFRoZSBiYXNlIFVSTFxuICogQHBhcmFtIHtzdHJpbmd9IHJlbGF0aXZlVVJMIFRoZSByZWxhdGl2ZSBVUkxcbiAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBjb21iaW5lZCBVUkxcbiAqL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBjb21iaW5lVVJMcyhiYXNlVVJMLCByZWxhdGl2ZVVSTCkge1xuICByZXR1cm4gcmVsYXRpdmVVUkxcbiAgICA/IGJhc2VVUkwucmVwbGFjZSgvXFwvKyQvLCAnJykgKyAnLycgKyByZWxhdGl2ZVVSTC5yZXBsYWNlKC9eXFwvKy8sICcnKVxuICAgIDogYmFzZVVSTDtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlscyA9IHJlcXVpcmUoJy4vLi4vdXRpbHMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSAoXG4gIHV0aWxzLmlzU3RhbmRhcmRCcm93c2VyRW52KCkgP1xuXG4gIC8vIFN0YW5kYXJkIGJyb3dzZXIgZW52cyBzdXBwb3J0IGRvY3VtZW50LmNvb2tpZVxuICAgIChmdW5jdGlvbiBzdGFuZGFyZEJyb3dzZXJFbnYoKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB3cml0ZTogZnVuY3Rpb24gd3JpdGUobmFtZSwgdmFsdWUsIGV4cGlyZXMsIHBhdGgsIGRvbWFpbiwgc2VjdXJlKSB7XG4gICAgICAgICAgdmFyIGNvb2tpZSA9IFtdO1xuICAgICAgICAgIGNvb2tpZS5wdXNoKG5hbWUgKyAnPScgKyBlbmNvZGVVUklDb21wb25lbnQodmFsdWUpKTtcblxuICAgICAgICAgIGlmICh1dGlscy5pc051bWJlcihleHBpcmVzKSkge1xuICAgICAgICAgICAgY29va2llLnB1c2goJ2V4cGlyZXM9JyArIG5ldyBEYXRlKGV4cGlyZXMpLnRvR01UU3RyaW5nKCkpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICh1dGlscy5pc1N0cmluZyhwYXRoKSkge1xuICAgICAgICAgICAgY29va2llLnB1c2goJ3BhdGg9JyArIHBhdGgpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICh1dGlscy5pc1N0cmluZyhkb21haW4pKSB7XG4gICAgICAgICAgICBjb29raWUucHVzaCgnZG9tYWluPScgKyBkb21haW4pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChzZWN1cmUgPT09IHRydWUpIHtcbiAgICAgICAgICAgIGNvb2tpZS5wdXNoKCdzZWN1cmUnKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBkb2N1bWVudC5jb29raWUgPSBjb29raWUuam9pbignOyAnKTtcbiAgICAgICAgfSxcblxuICAgICAgICByZWFkOiBmdW5jdGlvbiByZWFkKG5hbWUpIHtcbiAgICAgICAgICB2YXIgbWF0Y2ggPSBkb2N1bWVudC5jb29raWUubWF0Y2gobmV3IFJlZ0V4cCgnKF58O1xcXFxzKikoJyArIG5hbWUgKyAnKT0oW147XSopJykpO1xuICAgICAgICAgIHJldHVybiAobWF0Y2ggPyBkZWNvZGVVUklDb21wb25lbnQobWF0Y2hbM10pIDogbnVsbCk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgcmVtb3ZlOiBmdW5jdGlvbiByZW1vdmUobmFtZSkge1xuICAgICAgICAgIHRoaXMud3JpdGUobmFtZSwgJycsIERhdGUubm93KCkgLSA4NjQwMDAwMCk7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfSkoKSA6XG5cbiAgLy8gTm9uIHN0YW5kYXJkIGJyb3dzZXIgZW52ICh3ZWIgd29ya2VycywgcmVhY3QtbmF0aXZlKSBsYWNrIG5lZWRlZCBzdXBwb3J0LlxuICAgIChmdW5jdGlvbiBub25TdGFuZGFyZEJyb3dzZXJFbnYoKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB3cml0ZTogZnVuY3Rpb24gd3JpdGUoKSB7fSxcbiAgICAgICAgcmVhZDogZnVuY3Rpb24gcmVhZCgpIHsgcmV0dXJuIG51bGw7IH0sXG4gICAgICAgIHJlbW92ZTogZnVuY3Rpb24gcmVtb3ZlKCkge31cbiAgICAgIH07XG4gICAgfSkoKVxuKTtcbiIsIid1c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIHNwZWNpZmllZCBVUkwgaXMgYWJzb2x1dGVcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdXJsIFRoZSBVUkwgdG8gdGVzdFxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdGhlIHNwZWNpZmllZCBVUkwgaXMgYWJzb2x1dGUsIG90aGVyd2lzZSBmYWxzZVxuICovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGlzQWJzb2x1dGVVUkwodXJsKSB7XG4gIC8vIEEgVVJMIGlzIGNvbnNpZGVyZWQgYWJzb2x1dGUgaWYgaXQgYmVnaW5zIHdpdGggXCI8c2NoZW1lPjovL1wiIG9yIFwiLy9cIiAocHJvdG9jb2wtcmVsYXRpdmUgVVJMKS5cbiAgLy8gUkZDIDM5ODYgZGVmaW5lcyBzY2hlbWUgbmFtZSBhcyBhIHNlcXVlbmNlIG9mIGNoYXJhY3RlcnMgYmVnaW5uaW5nIHdpdGggYSBsZXR0ZXIgYW5kIGZvbGxvd2VkXG4gIC8vIGJ5IGFueSBjb21iaW5hdGlvbiBvZiBsZXR0ZXJzLCBkaWdpdHMsIHBsdXMsIHBlcmlvZCwgb3IgaHlwaGVuLlxuICByZXR1cm4gL14oW2Etel1bYS16XFxkXFwrXFwtXFwuXSo6KT9cXC9cXC8vaS50ZXN0KHVybCk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIERldGVybWluZXMgd2hldGhlciB0aGUgcGF5bG9hZCBpcyBhbiBlcnJvciB0aHJvd24gYnkgQXhpb3NcbiAqXG4gKiBAcGFyYW0geyp9IHBheWxvYWQgVGhlIHZhbHVlIHRvIHRlc3RcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHRoZSBwYXlsb2FkIGlzIGFuIGVycm9yIHRocm93biBieSBBeGlvcywgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gaXNBeGlvc0Vycm9yKHBheWxvYWQpIHtcbiAgcmV0dXJuICh0eXBlb2YgcGF5bG9hZCA9PT0gJ29iamVjdCcpICYmIChwYXlsb2FkLmlzQXhpb3NFcnJvciA9PT0gdHJ1ZSk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuLy4uL3V0aWxzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gKFxuICB1dGlscy5pc1N0YW5kYXJkQnJvd3NlckVudigpID9cblxuICAvLyBTdGFuZGFyZCBicm93c2VyIGVudnMgaGF2ZSBmdWxsIHN1cHBvcnQgb2YgdGhlIEFQSXMgbmVlZGVkIHRvIHRlc3RcbiAgLy8gd2hldGhlciB0aGUgcmVxdWVzdCBVUkwgaXMgb2YgdGhlIHNhbWUgb3JpZ2luIGFzIGN1cnJlbnQgbG9jYXRpb24uXG4gICAgKGZ1bmN0aW9uIHN0YW5kYXJkQnJvd3NlckVudigpIHtcbiAgICAgIHZhciBtc2llID0gLyhtc2llfHRyaWRlbnQpL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KTtcbiAgICAgIHZhciB1cmxQYXJzaW5nTm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcbiAgICAgIHZhciBvcmlnaW5VUkw7XG5cbiAgICAgIC8qKlxuICAgICogUGFyc2UgYSBVUkwgdG8gZGlzY292ZXIgaXQncyBjb21wb25lbnRzXG4gICAgKlxuICAgICogQHBhcmFtIHtTdHJpbmd9IHVybCBUaGUgVVJMIHRvIGJlIHBhcnNlZFxuICAgICogQHJldHVybnMge09iamVjdH1cbiAgICAqL1xuICAgICAgZnVuY3Rpb24gcmVzb2x2ZVVSTCh1cmwpIHtcbiAgICAgICAgdmFyIGhyZWYgPSB1cmw7XG5cbiAgICAgICAgaWYgKG1zaWUpIHtcbiAgICAgICAgLy8gSUUgbmVlZHMgYXR0cmlidXRlIHNldCB0d2ljZSB0byBub3JtYWxpemUgcHJvcGVydGllc1xuICAgICAgICAgIHVybFBhcnNpbmdOb2RlLnNldEF0dHJpYnV0ZSgnaHJlZicsIGhyZWYpO1xuICAgICAgICAgIGhyZWYgPSB1cmxQYXJzaW5nTm9kZS5ocmVmO1xuICAgICAgICB9XG5cbiAgICAgICAgdXJsUGFyc2luZ05vZGUuc2V0QXR0cmlidXRlKCdocmVmJywgaHJlZik7XG5cbiAgICAgICAgLy8gdXJsUGFyc2luZ05vZGUgcHJvdmlkZXMgdGhlIFVybFV0aWxzIGludGVyZmFjZSAtIGh0dHA6Ly91cmwuc3BlYy53aGF0d2cub3JnLyN1cmx1dGlsc1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGhyZWY6IHVybFBhcnNpbmdOb2RlLmhyZWYsXG4gICAgICAgICAgcHJvdG9jb2w6IHVybFBhcnNpbmdOb2RlLnByb3RvY29sID8gdXJsUGFyc2luZ05vZGUucHJvdG9jb2wucmVwbGFjZSgvOiQvLCAnJykgOiAnJyxcbiAgICAgICAgICBob3N0OiB1cmxQYXJzaW5nTm9kZS5ob3N0LFxuICAgICAgICAgIHNlYXJjaDogdXJsUGFyc2luZ05vZGUuc2VhcmNoID8gdXJsUGFyc2luZ05vZGUuc2VhcmNoLnJlcGxhY2UoL15cXD8vLCAnJykgOiAnJyxcbiAgICAgICAgICBoYXNoOiB1cmxQYXJzaW5nTm9kZS5oYXNoID8gdXJsUGFyc2luZ05vZGUuaGFzaC5yZXBsYWNlKC9eIy8sICcnKSA6ICcnLFxuICAgICAgICAgIGhvc3RuYW1lOiB1cmxQYXJzaW5nTm9kZS5ob3N0bmFtZSxcbiAgICAgICAgICBwb3J0OiB1cmxQYXJzaW5nTm9kZS5wb3J0LFxuICAgICAgICAgIHBhdGhuYW1lOiAodXJsUGFyc2luZ05vZGUucGF0aG5hbWUuY2hhckF0KDApID09PSAnLycpID9cbiAgICAgICAgICAgIHVybFBhcnNpbmdOb2RlLnBhdGhuYW1lIDpcbiAgICAgICAgICAgICcvJyArIHVybFBhcnNpbmdOb2RlLnBhdGhuYW1lXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIG9yaWdpblVSTCA9IHJlc29sdmVVUkwod2luZG93LmxvY2F0aW9uLmhyZWYpO1xuXG4gICAgICAvKipcbiAgICAqIERldGVybWluZSBpZiBhIFVSTCBzaGFyZXMgdGhlIHNhbWUgb3JpZ2luIGFzIHRoZSBjdXJyZW50IGxvY2F0aW9uXG4gICAgKlxuICAgICogQHBhcmFtIHtTdHJpbmd9IHJlcXVlc3RVUkwgVGhlIFVSTCB0byB0ZXN0XG4gICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiBVUkwgc2hhcmVzIHRoZSBzYW1lIG9yaWdpbiwgb3RoZXJ3aXNlIGZhbHNlXG4gICAgKi9cbiAgICAgIHJldHVybiBmdW5jdGlvbiBpc1VSTFNhbWVPcmlnaW4ocmVxdWVzdFVSTCkge1xuICAgICAgICB2YXIgcGFyc2VkID0gKHV0aWxzLmlzU3RyaW5nKHJlcXVlc3RVUkwpKSA/IHJlc29sdmVVUkwocmVxdWVzdFVSTCkgOiByZXF1ZXN0VVJMO1xuICAgICAgICByZXR1cm4gKHBhcnNlZC5wcm90b2NvbCA9PT0gb3JpZ2luVVJMLnByb3RvY29sICYmXG4gICAgICAgICAgICBwYXJzZWQuaG9zdCA9PT0gb3JpZ2luVVJMLmhvc3QpO1xuICAgICAgfTtcbiAgICB9KSgpIDpcblxuICAvLyBOb24gc3RhbmRhcmQgYnJvd3NlciBlbnZzICh3ZWIgd29ya2VycywgcmVhY3QtbmF0aXZlKSBsYWNrIG5lZWRlZCBzdXBwb3J0LlxuICAgIChmdW5jdGlvbiBub25TdGFuZGFyZEJyb3dzZXJFbnYoKSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24gaXNVUkxTYW1lT3JpZ2luKCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH07XG4gICAgfSkoKVxuKTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi4vdXRpbHMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBub3JtYWxpemVIZWFkZXJOYW1lKGhlYWRlcnMsIG5vcm1hbGl6ZWROYW1lKSB7XG4gIHV0aWxzLmZvckVhY2goaGVhZGVycywgZnVuY3Rpb24gcHJvY2Vzc0hlYWRlcih2YWx1ZSwgbmFtZSkge1xuICAgIGlmIChuYW1lICE9PSBub3JtYWxpemVkTmFtZSAmJiBuYW1lLnRvVXBwZXJDYXNlKCkgPT09IG5vcm1hbGl6ZWROYW1lLnRvVXBwZXJDYXNlKCkpIHtcbiAgICAgIGhlYWRlcnNbbm9ybWFsaXplZE5hbWVdID0gdmFsdWU7XG4gICAgICBkZWxldGUgaGVhZGVyc1tuYW1lXTtcbiAgICB9XG4gIH0pO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi8uLi91dGlscycpO1xuXG4vLyBIZWFkZXJzIHdob3NlIGR1cGxpY2F0ZXMgYXJlIGlnbm9yZWQgYnkgbm9kZVxuLy8gYy5mLiBodHRwczovL25vZGVqcy5vcmcvYXBpL2h0dHAuaHRtbCNodHRwX21lc3NhZ2VfaGVhZGVyc1xudmFyIGlnbm9yZUR1cGxpY2F0ZU9mID0gW1xuICAnYWdlJywgJ2F1dGhvcml6YXRpb24nLCAnY29udGVudC1sZW5ndGgnLCAnY29udGVudC10eXBlJywgJ2V0YWcnLFxuICAnZXhwaXJlcycsICdmcm9tJywgJ2hvc3QnLCAnaWYtbW9kaWZpZWQtc2luY2UnLCAnaWYtdW5tb2RpZmllZC1zaW5jZScsXG4gICdsYXN0LW1vZGlmaWVkJywgJ2xvY2F0aW9uJywgJ21heC1mb3J3YXJkcycsICdwcm94eS1hdXRob3JpemF0aW9uJyxcbiAgJ3JlZmVyZXInLCAncmV0cnktYWZ0ZXInLCAndXNlci1hZ2VudCdcbl07XG5cbi8qKlxuICogUGFyc2UgaGVhZGVycyBpbnRvIGFuIG9iamVjdFxuICpcbiAqIGBgYFxuICogRGF0ZTogV2VkLCAyNyBBdWcgMjAxNCAwODo1ODo0OSBHTVRcbiAqIENvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvblxuICogQ29ubmVjdGlvbjoga2VlcC1hbGl2ZVxuICogVHJhbnNmZXItRW5jb2Rpbmc6IGNodW5rZWRcbiAqIGBgYFxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBoZWFkZXJzIEhlYWRlcnMgbmVlZGluZyB0byBiZSBwYXJzZWRcbiAqIEByZXR1cm5zIHtPYmplY3R9IEhlYWRlcnMgcGFyc2VkIGludG8gYW4gb2JqZWN0XG4gKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gcGFyc2VIZWFkZXJzKGhlYWRlcnMpIHtcbiAgdmFyIHBhcnNlZCA9IHt9O1xuICB2YXIga2V5O1xuICB2YXIgdmFsO1xuICB2YXIgaTtcblxuICBpZiAoIWhlYWRlcnMpIHsgcmV0dXJuIHBhcnNlZDsgfVxuXG4gIHV0aWxzLmZvckVhY2goaGVhZGVycy5zcGxpdCgnXFxuJyksIGZ1bmN0aW9uIHBhcnNlcihsaW5lKSB7XG4gICAgaSA9IGxpbmUuaW5kZXhPZignOicpO1xuICAgIGtleSA9IHV0aWxzLnRyaW0obGluZS5zdWJzdHIoMCwgaSkpLnRvTG93ZXJDYXNlKCk7XG4gICAgdmFsID0gdXRpbHMudHJpbShsaW5lLnN1YnN0cihpICsgMSkpO1xuXG4gICAgaWYgKGtleSkge1xuICAgICAgaWYgKHBhcnNlZFtrZXldICYmIGlnbm9yZUR1cGxpY2F0ZU9mLmluZGV4T2Yoa2V5KSA+PSAwKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmIChrZXkgPT09ICdzZXQtY29va2llJykge1xuICAgICAgICBwYXJzZWRba2V5XSA9IChwYXJzZWRba2V5XSA/IHBhcnNlZFtrZXldIDogW10pLmNvbmNhdChbdmFsXSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwYXJzZWRba2V5XSA9IHBhcnNlZFtrZXldID8gcGFyc2VkW2tleV0gKyAnLCAnICsgdmFsIDogdmFsO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIHBhcnNlZDtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbi8qKlxuICogU3ludGFjdGljIHN1Z2FyIGZvciBpbnZva2luZyBhIGZ1bmN0aW9uIGFuZCBleHBhbmRpbmcgYW4gYXJyYXkgZm9yIGFyZ3VtZW50cy5cbiAqXG4gKiBDb21tb24gdXNlIGNhc2Ugd291bGQgYmUgdG8gdXNlIGBGdW5jdGlvbi5wcm90b3R5cGUuYXBwbHlgLlxuICpcbiAqICBgYGBqc1xuICogIGZ1bmN0aW9uIGYoeCwgeSwgeikge31cbiAqICB2YXIgYXJncyA9IFsxLCAyLCAzXTtcbiAqICBmLmFwcGx5KG51bGwsIGFyZ3MpO1xuICogIGBgYFxuICpcbiAqIFdpdGggYHNwcmVhZGAgdGhpcyBleGFtcGxlIGNhbiBiZSByZS13cml0dGVuLlxuICpcbiAqICBgYGBqc1xuICogIHNwcmVhZChmdW5jdGlvbih4LCB5LCB6KSB7fSkoWzEsIDIsIDNdKTtcbiAqICBgYGBcbiAqXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBjYWxsYmFja1xuICogQHJldHVybnMge0Z1bmN0aW9ufVxuICovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIHNwcmVhZChjYWxsYmFjaykge1xuICByZXR1cm4gZnVuY3Rpb24gd3JhcChhcnIpIHtcbiAgICByZXR1cm4gY2FsbGJhY2suYXBwbHkobnVsbCwgYXJyKTtcbiAgfTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBwa2cgPSByZXF1aXJlKCcuLy4uLy4uL3BhY2thZ2UuanNvbicpO1xuXG52YXIgdmFsaWRhdG9ycyA9IHt9O1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZnVuYy1uYW1lc1xuWydvYmplY3QnLCAnYm9vbGVhbicsICdudW1iZXInLCAnZnVuY3Rpb24nLCAnc3RyaW5nJywgJ3N5bWJvbCddLmZvckVhY2goZnVuY3Rpb24odHlwZSwgaSkge1xuICB2YWxpZGF0b3JzW3R5cGVdID0gZnVuY3Rpb24gdmFsaWRhdG9yKHRoaW5nKSB7XG4gICAgcmV0dXJuIHR5cGVvZiB0aGluZyA9PT0gdHlwZSB8fCAnYScgKyAoaSA8IDEgPyAnbiAnIDogJyAnKSArIHR5cGU7XG4gIH07XG59KTtcblxudmFyIGRlcHJlY2F0ZWRXYXJuaW5ncyA9IHt9O1xudmFyIGN1cnJlbnRWZXJBcnIgPSBwa2cudmVyc2lvbi5zcGxpdCgnLicpO1xuXG4vKipcbiAqIENvbXBhcmUgcGFja2FnZSB2ZXJzaW9uc1xuICogQHBhcmFtIHtzdHJpbmd9IHZlcnNpb25cbiAqIEBwYXJhbSB7c3RyaW5nP30gdGhhblZlcnNpb25cbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5mdW5jdGlvbiBpc09sZGVyVmVyc2lvbih2ZXJzaW9uLCB0aGFuVmVyc2lvbikge1xuICB2YXIgcGtnVmVyc2lvbkFyciA9IHRoYW5WZXJzaW9uID8gdGhhblZlcnNpb24uc3BsaXQoJy4nKSA6IGN1cnJlbnRWZXJBcnI7XG4gIHZhciBkZXN0VmVyID0gdmVyc2lvbi5zcGxpdCgnLicpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IDM7IGkrKykge1xuICAgIGlmIChwa2dWZXJzaW9uQXJyW2ldID4gZGVzdFZlcltpXSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIGlmIChwa2dWZXJzaW9uQXJyW2ldIDwgZGVzdFZlcltpXSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5cbi8qKlxuICogVHJhbnNpdGlvbmFsIG9wdGlvbiB2YWxpZGF0b3JcbiAqIEBwYXJhbSB7ZnVuY3Rpb258Ym9vbGVhbj99IHZhbGlkYXRvclxuICogQHBhcmFtIHtzdHJpbmc/fSB2ZXJzaW9uXG4gKiBAcGFyYW0ge3N0cmluZ30gbWVzc2FnZVxuICogQHJldHVybnMge2Z1bmN0aW9ufVxuICovXG52YWxpZGF0b3JzLnRyYW5zaXRpb25hbCA9IGZ1bmN0aW9uIHRyYW5zaXRpb25hbCh2YWxpZGF0b3IsIHZlcnNpb24sIG1lc3NhZ2UpIHtcbiAgdmFyIGlzRGVwcmVjYXRlZCA9IHZlcnNpb24gJiYgaXNPbGRlclZlcnNpb24odmVyc2lvbik7XG5cbiAgZnVuY3Rpb24gZm9ybWF0TWVzc2FnZShvcHQsIGRlc2MpIHtcbiAgICByZXR1cm4gJ1tBeGlvcyB2JyArIHBrZy52ZXJzaW9uICsgJ10gVHJhbnNpdGlvbmFsIG9wdGlvbiBcXCcnICsgb3B0ICsgJ1xcJycgKyBkZXNjICsgKG1lc3NhZ2UgPyAnLiAnICsgbWVzc2FnZSA6ICcnKTtcbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBmdW5jLW5hbWVzXG4gIHJldHVybiBmdW5jdGlvbih2YWx1ZSwgb3B0LCBvcHRzKSB7XG4gICAgaWYgKHZhbGlkYXRvciA9PT0gZmFsc2UpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihmb3JtYXRNZXNzYWdlKG9wdCwgJyBoYXMgYmVlbiByZW1vdmVkIGluICcgKyB2ZXJzaW9uKSk7XG4gICAgfVxuXG4gICAgaWYgKGlzRGVwcmVjYXRlZCAmJiAhZGVwcmVjYXRlZFdhcm5pbmdzW29wdF0pIHtcbiAgICAgIGRlcHJlY2F0ZWRXYXJuaW5nc1tvcHRdID0gdHJ1ZTtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgIGZvcm1hdE1lc3NhZ2UoXG4gICAgICAgICAgb3B0LFxuICAgICAgICAgICcgaGFzIGJlZW4gZGVwcmVjYXRlZCBzaW5jZSB2JyArIHZlcnNpb24gKyAnIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5lYXIgZnV0dXJlJ1xuICAgICAgICApXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiB2YWxpZGF0b3IgPyB2YWxpZGF0b3IodmFsdWUsIG9wdCwgb3B0cykgOiB0cnVlO1xuICB9O1xufTtcblxuLyoqXG4gKiBBc3NlcnQgb2JqZWN0J3MgcHJvcGVydGllcyB0eXBlXG4gKiBAcGFyYW0ge29iamVjdH0gb3B0aW9uc1xuICogQHBhcmFtIHtvYmplY3R9IHNjaGVtYVxuICogQHBhcmFtIHtib29sZWFuP30gYWxsb3dVbmtub3duXG4gKi9cblxuZnVuY3Rpb24gYXNzZXJ0T3B0aW9ucyhvcHRpb25zLCBzY2hlbWEsIGFsbG93VW5rbm93bikge1xuICBpZiAodHlwZW9mIG9wdGlvbnMgIT09ICdvYmplY3QnKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignb3B0aW9ucyBtdXN0IGJlIGFuIG9iamVjdCcpO1xuICB9XG4gIHZhciBrZXlzID0gT2JqZWN0LmtleXMob3B0aW9ucyk7XG4gIHZhciBpID0ga2V5cy5sZW5ndGg7XG4gIHdoaWxlIChpLS0gPiAwKSB7XG4gICAgdmFyIG9wdCA9IGtleXNbaV07XG4gICAgdmFyIHZhbGlkYXRvciA9IHNjaGVtYVtvcHRdO1xuICAgIGlmICh2YWxpZGF0b3IpIHtcbiAgICAgIHZhciB2YWx1ZSA9IG9wdGlvbnNbb3B0XTtcbiAgICAgIHZhciByZXN1bHQgPSB2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbGlkYXRvcih2YWx1ZSwgb3B0LCBvcHRpb25zKTtcbiAgICAgIGlmIChyZXN1bHQgIT09IHRydWUpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignb3B0aW9uICcgKyBvcHQgKyAnIG11c3QgYmUgJyArIHJlc3VsdCk7XG4gICAgICB9XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgaWYgKGFsbG93VW5rbm93biAhPT0gdHJ1ZSkge1xuICAgICAgdGhyb3cgRXJyb3IoJ1Vua25vd24gb3B0aW9uICcgKyBvcHQpO1xuICAgIH1cbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgaXNPbGRlclZlcnNpb246IGlzT2xkZXJWZXJzaW9uLFxuICBhc3NlcnRPcHRpb25zOiBhc3NlcnRPcHRpb25zLFxuICB2YWxpZGF0b3JzOiB2YWxpZGF0b3JzXG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgYmluZCA9IHJlcXVpcmUoJy4vaGVscGVycy9iaW5kJyk7XG5cbi8vIHV0aWxzIGlzIGEgbGlicmFyeSBvZiBnZW5lcmljIGhlbHBlciBmdW5jdGlvbnMgbm9uLXNwZWNpZmljIHRvIGF4aW9zXG5cbnZhciB0b1N0cmluZyA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYW4gQXJyYXlcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhbiBBcnJheSwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzQXJyYXkodmFsKSB7XG4gIHJldHVybiB0b1N0cmluZy5jYWxsKHZhbCkgPT09ICdbb2JqZWN0IEFycmF5XSc7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgdW5kZWZpbmVkXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdGhlIHZhbHVlIGlzIHVuZGVmaW5lZCwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzVW5kZWZpbmVkKHZhbCkge1xuICByZXR1cm4gdHlwZW9mIHZhbCA9PT0gJ3VuZGVmaW5lZCc7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYSBCdWZmZXJcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhIEJ1ZmZlciwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzQnVmZmVyKHZhbCkge1xuICByZXR1cm4gdmFsICE9PSBudWxsICYmICFpc1VuZGVmaW5lZCh2YWwpICYmIHZhbC5jb25zdHJ1Y3RvciAhPT0gbnVsbCAmJiAhaXNVbmRlZmluZWQodmFsLmNvbnN0cnVjdG9yKVxuICAgICYmIHR5cGVvZiB2YWwuY29uc3RydWN0b3IuaXNCdWZmZXIgPT09ICdmdW5jdGlvbicgJiYgdmFsLmNvbnN0cnVjdG9yLmlzQnVmZmVyKHZhbCk7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYW4gQXJyYXlCdWZmZXJcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhbiBBcnJheUJ1ZmZlciwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzQXJyYXlCdWZmZXIodmFsKSB7XG4gIHJldHVybiB0b1N0cmluZy5jYWxsKHZhbCkgPT09ICdbb2JqZWN0IEFycmF5QnVmZmVyXSc7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYSBGb3JtRGF0YVxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGFuIEZvcm1EYXRhLCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNGb3JtRGF0YSh2YWwpIHtcbiAgcmV0dXJuICh0eXBlb2YgRm9ybURhdGEgIT09ICd1bmRlZmluZWQnKSAmJiAodmFsIGluc3RhbmNlb2YgRm9ybURhdGEpO1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgdmlldyBvbiBhbiBBcnJheUJ1ZmZlclxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGEgdmlldyBvbiBhbiBBcnJheUJ1ZmZlciwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzQXJyYXlCdWZmZXJWaWV3KHZhbCkge1xuICB2YXIgcmVzdWx0O1xuICBpZiAoKHR5cGVvZiBBcnJheUJ1ZmZlciAhPT0gJ3VuZGVmaW5lZCcpICYmIChBcnJheUJ1ZmZlci5pc1ZpZXcpKSB7XG4gICAgcmVzdWx0ID0gQXJyYXlCdWZmZXIuaXNWaWV3KHZhbCk7XG4gIH0gZWxzZSB7XG4gICAgcmVzdWx0ID0gKHZhbCkgJiYgKHZhbC5idWZmZXIpICYmICh2YWwuYnVmZmVyIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYSBTdHJpbmdcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhIFN0cmluZywgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzU3RyaW5nKHZhbCkge1xuICByZXR1cm4gdHlwZW9mIHZhbCA9PT0gJ3N0cmluZyc7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYSBOdW1iZXJcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhIE51bWJlciwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzTnVtYmVyKHZhbCkge1xuICByZXR1cm4gdHlwZW9mIHZhbCA9PT0gJ251bWJlcic7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYW4gT2JqZWN0XG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYW4gT2JqZWN0LCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNPYmplY3QodmFsKSB7XG4gIHJldHVybiB2YWwgIT09IG51bGwgJiYgdHlwZW9mIHZhbCA9PT0gJ29iamVjdCc7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYSBwbGFpbiBPYmplY3RcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGEgcGxhaW4gT2JqZWN0LCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNQbGFpbk9iamVjdCh2YWwpIHtcbiAgaWYgKHRvU3RyaW5nLmNhbGwodmFsKSAhPT0gJ1tvYmplY3QgT2JqZWN0XScpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICB2YXIgcHJvdG90eXBlID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHZhbCk7XG4gIHJldHVybiBwcm90b3R5cGUgPT09IG51bGwgfHwgcHJvdG90eXBlID09PSBPYmplY3QucHJvdG90eXBlO1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgRGF0ZVxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGEgRGF0ZSwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzRGF0ZSh2YWwpIHtcbiAgcmV0dXJuIHRvU3RyaW5nLmNhbGwodmFsKSA9PT0gJ1tvYmplY3QgRGF0ZV0nO1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgRmlsZVxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGEgRmlsZSwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzRmlsZSh2YWwpIHtcbiAgcmV0dXJuIHRvU3RyaW5nLmNhbGwodmFsKSA9PT0gJ1tvYmplY3QgRmlsZV0nO1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgQmxvYlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGEgQmxvYiwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzQmxvYih2YWwpIHtcbiAgcmV0dXJuIHRvU3RyaW5nLmNhbGwodmFsKSA9PT0gJ1tvYmplY3QgQmxvYl0nO1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgRnVuY3Rpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhIEZ1bmN0aW9uLCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNGdW5jdGlvbih2YWwpIHtcbiAgcmV0dXJuIHRvU3RyaW5nLmNhbGwodmFsKSA9PT0gJ1tvYmplY3QgRnVuY3Rpb25dJztcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhIFN0cmVhbVxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGEgU3RyZWFtLCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNTdHJlYW0odmFsKSB7XG4gIHJldHVybiBpc09iamVjdCh2YWwpICYmIGlzRnVuY3Rpb24odmFsLnBpcGUpO1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgVVJMU2VhcmNoUGFyYW1zIG9iamVjdFxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGEgVVJMU2VhcmNoUGFyYW1zIG9iamVjdCwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzVVJMU2VhcmNoUGFyYW1zKHZhbCkge1xuICByZXR1cm4gdHlwZW9mIFVSTFNlYXJjaFBhcmFtcyAhPT0gJ3VuZGVmaW5lZCcgJiYgdmFsIGluc3RhbmNlb2YgVVJMU2VhcmNoUGFyYW1zO1xufVxuXG4vKipcbiAqIFRyaW0gZXhjZXNzIHdoaXRlc3BhY2Ugb2ZmIHRoZSBiZWdpbm5pbmcgYW5kIGVuZCBvZiBhIHN0cmluZ1xuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBzdHIgVGhlIFN0cmluZyB0byB0cmltXG4gKiBAcmV0dXJucyB7U3RyaW5nfSBUaGUgU3RyaW5nIGZyZWVkIG9mIGV4Y2VzcyB3aGl0ZXNwYWNlXG4gKi9cbmZ1bmN0aW9uIHRyaW0oc3RyKSB7XG4gIHJldHVybiBzdHIudHJpbSA/IHN0ci50cmltKCkgOiBzdHIucmVwbGFjZSgvXlxccyt8XFxzKyQvZywgJycpO1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiB3ZSdyZSBydW5uaW5nIGluIGEgc3RhbmRhcmQgYnJvd3NlciBlbnZpcm9ubWVudFxuICpcbiAqIFRoaXMgYWxsb3dzIGF4aW9zIHRvIHJ1biBpbiBhIHdlYiB3b3JrZXIsIGFuZCByZWFjdC1uYXRpdmUuXG4gKiBCb3RoIGVudmlyb25tZW50cyBzdXBwb3J0IFhNTEh0dHBSZXF1ZXN0LCBidXQgbm90IGZ1bGx5IHN0YW5kYXJkIGdsb2JhbHMuXG4gKlxuICogd2ViIHdvcmtlcnM6XG4gKiAgdHlwZW9mIHdpbmRvdyAtPiB1bmRlZmluZWRcbiAqICB0eXBlb2YgZG9jdW1lbnQgLT4gdW5kZWZpbmVkXG4gKlxuICogcmVhY3QtbmF0aXZlOlxuICogIG5hdmlnYXRvci5wcm9kdWN0IC0+ICdSZWFjdE5hdGl2ZSdcbiAqIG5hdGl2ZXNjcmlwdFxuICogIG5hdmlnYXRvci5wcm9kdWN0IC0+ICdOYXRpdmVTY3JpcHQnIG9yICdOUydcbiAqL1xuZnVuY3Rpb24gaXNTdGFuZGFyZEJyb3dzZXJFbnYoKSB7XG4gIGlmICh0eXBlb2YgbmF2aWdhdG9yICE9PSAndW5kZWZpbmVkJyAmJiAobmF2aWdhdG9yLnByb2R1Y3QgPT09ICdSZWFjdE5hdGl2ZScgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0b3IucHJvZHVjdCA9PT0gJ05hdGl2ZVNjcmlwdCcgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0b3IucHJvZHVjdCA9PT0gJ05TJykpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIChcbiAgICB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJlxuICAgIHR5cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCdcbiAgKTtcbn1cblxuLyoqXG4gKiBJdGVyYXRlIG92ZXIgYW4gQXJyYXkgb3IgYW4gT2JqZWN0IGludm9raW5nIGEgZnVuY3Rpb24gZm9yIGVhY2ggaXRlbS5cbiAqXG4gKiBJZiBgb2JqYCBpcyBhbiBBcnJheSBjYWxsYmFjayB3aWxsIGJlIGNhbGxlZCBwYXNzaW5nXG4gKiB0aGUgdmFsdWUsIGluZGV4LCBhbmQgY29tcGxldGUgYXJyYXkgZm9yIGVhY2ggaXRlbS5cbiAqXG4gKiBJZiAnb2JqJyBpcyBhbiBPYmplY3QgY2FsbGJhY2sgd2lsbCBiZSBjYWxsZWQgcGFzc2luZ1xuICogdGhlIHZhbHVlLCBrZXksIGFuZCBjb21wbGV0ZSBvYmplY3QgZm9yIGVhY2ggcHJvcGVydHkuXG4gKlxuICogQHBhcmFtIHtPYmplY3R8QXJyYXl9IG9iaiBUaGUgb2JqZWN0IHRvIGl0ZXJhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZuIFRoZSBjYWxsYmFjayB0byBpbnZva2UgZm9yIGVhY2ggaXRlbVxuICovXG5mdW5jdGlvbiBmb3JFYWNoKG9iaiwgZm4pIHtcbiAgLy8gRG9uJ3QgYm90aGVyIGlmIG5vIHZhbHVlIHByb3ZpZGVkXG4gIGlmIChvYmogPT09IG51bGwgfHwgdHlwZW9mIG9iaiA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvLyBGb3JjZSBhbiBhcnJheSBpZiBub3QgYWxyZWFkeSBzb21ldGhpbmcgaXRlcmFibGVcbiAgaWYgKHR5cGVvZiBvYmogIT09ICdvYmplY3QnKSB7XG4gICAgLyplc2xpbnQgbm8tcGFyYW0tcmVhc3NpZ246MCovXG4gICAgb2JqID0gW29ial07XG4gIH1cblxuICBpZiAoaXNBcnJheShvYmopKSB7XG4gICAgLy8gSXRlcmF0ZSBvdmVyIGFycmF5IHZhbHVlc1xuICAgIGZvciAodmFyIGkgPSAwLCBsID0gb2JqLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgZm4uY2FsbChudWxsLCBvYmpbaV0sIGksIG9iaik7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIC8vIEl0ZXJhdGUgb3ZlciBvYmplY3Qga2V5c1xuICAgIGZvciAodmFyIGtleSBpbiBvYmopIHtcbiAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpKSB7XG4gICAgICAgIGZuLmNhbGwobnVsbCwgb2JqW2tleV0sIGtleSwgb2JqKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBBY2NlcHRzIHZhcmFyZ3MgZXhwZWN0aW5nIGVhY2ggYXJndW1lbnQgdG8gYmUgYW4gb2JqZWN0LCB0aGVuXG4gKiBpbW11dGFibHkgbWVyZ2VzIHRoZSBwcm9wZXJ0aWVzIG9mIGVhY2ggb2JqZWN0IGFuZCByZXR1cm5zIHJlc3VsdC5cbiAqXG4gKiBXaGVuIG11bHRpcGxlIG9iamVjdHMgY29udGFpbiB0aGUgc2FtZSBrZXkgdGhlIGxhdGVyIG9iamVjdCBpblxuICogdGhlIGFyZ3VtZW50cyBsaXN0IHdpbGwgdGFrZSBwcmVjZWRlbmNlLlxuICpcbiAqIEV4YW1wbGU6XG4gKlxuICogYGBganNcbiAqIHZhciByZXN1bHQgPSBtZXJnZSh7Zm9vOiAxMjN9LCB7Zm9vOiA0NTZ9KTtcbiAqIGNvbnNvbGUubG9nKHJlc3VsdC5mb28pOyAvLyBvdXRwdXRzIDQ1NlxuICogYGBgXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IG9iajEgT2JqZWN0IHRvIG1lcmdlXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXN1bHQgb2YgYWxsIG1lcmdlIHByb3BlcnRpZXNcbiAqL1xuZnVuY3Rpb24gbWVyZ2UoLyogb2JqMSwgb2JqMiwgb2JqMywgLi4uICovKSB7XG4gIHZhciByZXN1bHQgPSB7fTtcbiAgZnVuY3Rpb24gYXNzaWduVmFsdWUodmFsLCBrZXkpIHtcbiAgICBpZiAoaXNQbGFpbk9iamVjdChyZXN1bHRba2V5XSkgJiYgaXNQbGFpbk9iamVjdCh2YWwpKSB7XG4gICAgICByZXN1bHRba2V5XSA9IG1lcmdlKHJlc3VsdFtrZXldLCB2YWwpO1xuICAgIH0gZWxzZSBpZiAoaXNQbGFpbk9iamVjdCh2YWwpKSB7XG4gICAgICByZXN1bHRba2V5XSA9IG1lcmdlKHt9LCB2YWwpO1xuICAgIH0gZWxzZSBpZiAoaXNBcnJheSh2YWwpKSB7XG4gICAgICByZXN1bHRba2V5XSA9IHZhbC5zbGljZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXN1bHRba2V5XSA9IHZhbDtcbiAgICB9XG4gIH1cblxuICBmb3IgKHZhciBpID0gMCwgbCA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICBmb3JFYWNoKGFyZ3VtZW50c1tpXSwgYXNzaWduVmFsdWUpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8qKlxuICogRXh0ZW5kcyBvYmplY3QgYSBieSBtdXRhYmx5IGFkZGluZyB0byBpdCB0aGUgcHJvcGVydGllcyBvZiBvYmplY3QgYi5cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gYSBUaGUgb2JqZWN0IHRvIGJlIGV4dGVuZGVkXG4gKiBAcGFyYW0ge09iamVjdH0gYiBUaGUgb2JqZWN0IHRvIGNvcHkgcHJvcGVydGllcyBmcm9tXG4gKiBAcGFyYW0ge09iamVjdH0gdGhpc0FyZyBUaGUgb2JqZWN0IHRvIGJpbmQgZnVuY3Rpb24gdG9cbiAqIEByZXR1cm4ge09iamVjdH0gVGhlIHJlc3VsdGluZyB2YWx1ZSBvZiBvYmplY3QgYVxuICovXG5mdW5jdGlvbiBleHRlbmQoYSwgYiwgdGhpc0FyZykge1xuICBmb3JFYWNoKGIsIGZ1bmN0aW9uIGFzc2lnblZhbHVlKHZhbCwga2V5KSB7XG4gICAgaWYgKHRoaXNBcmcgJiYgdHlwZW9mIHZhbCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgYVtrZXldID0gYmluZCh2YWwsIHRoaXNBcmcpO1xuICAgIH0gZWxzZSB7XG4gICAgICBhW2tleV0gPSB2YWw7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIGE7XG59XG5cbi8qKlxuICogUmVtb3ZlIGJ5dGUgb3JkZXIgbWFya2VyLiBUaGlzIGNhdGNoZXMgRUYgQkIgQkYgKHRoZSBVVEYtOCBCT00pXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGNvbnRlbnQgd2l0aCBCT01cbiAqIEByZXR1cm4ge3N0cmluZ30gY29udGVudCB2YWx1ZSB3aXRob3V0IEJPTVxuICovXG5mdW5jdGlvbiBzdHJpcEJPTShjb250ZW50KSB7XG4gIGlmIChjb250ZW50LmNoYXJDb2RlQXQoMCkgPT09IDB4RkVGRikge1xuICAgIGNvbnRlbnQgPSBjb250ZW50LnNsaWNlKDEpO1xuICB9XG4gIHJldHVybiBjb250ZW50O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgaXNBcnJheTogaXNBcnJheSxcbiAgaXNBcnJheUJ1ZmZlcjogaXNBcnJheUJ1ZmZlcixcbiAgaXNCdWZmZXI6IGlzQnVmZmVyLFxuICBpc0Zvcm1EYXRhOiBpc0Zvcm1EYXRhLFxuICBpc0FycmF5QnVmZmVyVmlldzogaXNBcnJheUJ1ZmZlclZpZXcsXG4gIGlzU3RyaW5nOiBpc1N0cmluZyxcbiAgaXNOdW1iZXI6IGlzTnVtYmVyLFxuICBpc09iamVjdDogaXNPYmplY3QsXG4gIGlzUGxhaW5PYmplY3Q6IGlzUGxhaW5PYmplY3QsXG4gIGlzVW5kZWZpbmVkOiBpc1VuZGVmaW5lZCxcbiAgaXNEYXRlOiBpc0RhdGUsXG4gIGlzRmlsZTogaXNGaWxlLFxuICBpc0Jsb2I6IGlzQmxvYixcbiAgaXNGdW5jdGlvbjogaXNGdW5jdGlvbixcbiAgaXNTdHJlYW06IGlzU3RyZWFtLFxuICBpc1VSTFNlYXJjaFBhcmFtczogaXNVUkxTZWFyY2hQYXJhbXMsXG4gIGlzU3RhbmRhcmRCcm93c2VyRW52OiBpc1N0YW5kYXJkQnJvd3NlckVudixcbiAgZm9yRWFjaDogZm9yRWFjaCxcbiAgbWVyZ2U6IG1lcmdlLFxuICBleHRlbmQ6IGV4dGVuZCxcbiAgdHJpbTogdHJpbSxcbiAgc3RyaXBCT006IHN0cmlwQk9NXG59O1xuIiwiLy8gc2hpbSBmb3IgdXNpbmcgcHJvY2VzcyBpbiBicm93c2VyXG52YXIgcHJvY2VzcyA9IG1vZHVsZS5leHBvcnRzID0ge307XG5cbi8vIGNhY2hlZCBmcm9tIHdoYXRldmVyIGdsb2JhbCBpcyBwcmVzZW50IHNvIHRoYXQgdGVzdCBydW5uZXJzIHRoYXQgc3R1YiBpdFxuLy8gZG9uJ3QgYnJlYWsgdGhpbmdzLiAgQnV0IHdlIG5lZWQgdG8gd3JhcCBpdCBpbiBhIHRyeSBjYXRjaCBpbiBjYXNlIGl0IGlzXG4vLyB3cmFwcGVkIGluIHN0cmljdCBtb2RlIGNvZGUgd2hpY2ggZG9lc24ndCBkZWZpbmUgYW55IGdsb2JhbHMuICBJdCdzIGluc2lkZSBhXG4vLyBmdW5jdGlvbiBiZWNhdXNlIHRyeS9jYXRjaGVzIGRlb3B0aW1pemUgaW4gY2VydGFpbiBlbmdpbmVzLlxuXG52YXIgY2FjaGVkU2V0VGltZW91dDtcbnZhciBjYWNoZWRDbGVhclRpbWVvdXQ7XG5cbmZ1bmN0aW9uIGRlZmF1bHRTZXRUaW1vdXQoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdzZXRUaW1lb3V0IGhhcyBub3QgYmVlbiBkZWZpbmVkJyk7XG59XG5mdW5jdGlvbiBkZWZhdWx0Q2xlYXJUaW1lb3V0ICgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2NsZWFyVGltZW91dCBoYXMgbm90IGJlZW4gZGVmaW5lZCcpO1xufVxuKGZ1bmN0aW9uICgpIHtcbiAgICB0cnkge1xuICAgICAgICBpZiAodHlwZW9mIHNldFRpbWVvdXQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIGNhY2hlZFNldFRpbWVvdXQgPSBzZXRUaW1lb3V0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY2FjaGVkU2V0VGltZW91dCA9IGRlZmF1bHRTZXRUaW1vdXQ7XG4gICAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNhY2hlZFNldFRpbWVvdXQgPSBkZWZhdWx0U2V0VGltb3V0O1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgICBpZiAodHlwZW9mIGNsZWFyVGltZW91dCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgY2FjaGVkQ2xlYXJUaW1lb3V0ID0gY2xlYXJUaW1lb3V0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY2FjaGVkQ2xlYXJUaW1lb3V0ID0gZGVmYXVsdENsZWFyVGltZW91dDtcbiAgICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgY2FjaGVkQ2xlYXJUaW1lb3V0ID0gZGVmYXVsdENsZWFyVGltZW91dDtcbiAgICB9XG59ICgpKVxuZnVuY3Rpb24gcnVuVGltZW91dChmdW4pIHtcbiAgICBpZiAoY2FjaGVkU2V0VGltZW91dCA9PT0gc2V0VGltZW91dCkge1xuICAgICAgICAvL25vcm1hbCBlbnZpcm9tZW50cyBpbiBzYW5lIHNpdHVhdGlvbnNcbiAgICAgICAgcmV0dXJuIHNldFRpbWVvdXQoZnVuLCAwKTtcbiAgICB9XG4gICAgLy8gaWYgc2V0VGltZW91dCB3YXNuJ3QgYXZhaWxhYmxlIGJ1dCB3YXMgbGF0dGVyIGRlZmluZWRcbiAgICBpZiAoKGNhY2hlZFNldFRpbWVvdXQgPT09IGRlZmF1bHRTZXRUaW1vdXQgfHwgIWNhY2hlZFNldFRpbWVvdXQpICYmIHNldFRpbWVvdXQpIHtcbiAgICAgICAgY2FjaGVkU2V0VGltZW91dCA9IHNldFRpbWVvdXQ7XG4gICAgICAgIHJldHVybiBzZXRUaW1lb3V0KGZ1biwgMCk7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICAgIC8vIHdoZW4gd2hlbiBzb21lYm9keSBoYXMgc2NyZXdlZCB3aXRoIHNldFRpbWVvdXQgYnV0IG5vIEkuRS4gbWFkZG5lc3NcbiAgICAgICAgcmV0dXJuIGNhY2hlZFNldFRpbWVvdXQoZnVuLCAwKTtcbiAgICB9IGNhdGNoKGUpe1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgLy8gV2hlbiB3ZSBhcmUgaW4gSS5FLiBidXQgdGhlIHNjcmlwdCBoYXMgYmVlbiBldmFsZWQgc28gSS5FLiBkb2Vzbid0IHRydXN0IHRoZSBnbG9iYWwgb2JqZWN0IHdoZW4gY2FsbGVkIG5vcm1hbGx5XG4gICAgICAgICAgICByZXR1cm4gY2FjaGVkU2V0VGltZW91dC5jYWxsKG51bGwsIGZ1biwgMCk7XG4gICAgICAgIH0gY2F0Y2goZSl7XG4gICAgICAgICAgICAvLyBzYW1lIGFzIGFib3ZlIGJ1dCB3aGVuIGl0J3MgYSB2ZXJzaW9uIG9mIEkuRS4gdGhhdCBtdXN0IGhhdmUgdGhlIGdsb2JhbCBvYmplY3QgZm9yICd0aGlzJywgaG9wZnVsbHkgb3VyIGNvbnRleHQgY29ycmVjdCBvdGhlcndpc2UgaXQgd2lsbCB0aHJvdyBhIGdsb2JhbCBlcnJvclxuICAgICAgICAgICAgcmV0dXJuIGNhY2hlZFNldFRpbWVvdXQuY2FsbCh0aGlzLCBmdW4sIDApO1xuICAgICAgICB9XG4gICAgfVxuXG5cbn1cbmZ1bmN0aW9uIHJ1bkNsZWFyVGltZW91dChtYXJrZXIpIHtcbiAgICBpZiAoY2FjaGVkQ2xlYXJUaW1lb3V0ID09PSBjbGVhclRpbWVvdXQpIHtcbiAgICAgICAgLy9ub3JtYWwgZW52aXJvbWVudHMgaW4gc2FuZSBzaXR1YXRpb25zXG4gICAgICAgIHJldHVybiBjbGVhclRpbWVvdXQobWFya2VyKTtcbiAgICB9XG4gICAgLy8gaWYgY2xlYXJUaW1lb3V0IHdhc24ndCBhdmFpbGFibGUgYnV0IHdhcyBsYXR0ZXIgZGVmaW5lZFxuICAgIGlmICgoY2FjaGVkQ2xlYXJUaW1lb3V0ID09PSBkZWZhdWx0Q2xlYXJUaW1lb3V0IHx8ICFjYWNoZWRDbGVhclRpbWVvdXQpICYmIGNsZWFyVGltZW91dCkge1xuICAgICAgICBjYWNoZWRDbGVhclRpbWVvdXQgPSBjbGVhclRpbWVvdXQ7XG4gICAgICAgIHJldHVybiBjbGVhclRpbWVvdXQobWFya2VyKTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgICAgLy8gd2hlbiB3aGVuIHNvbWVib2R5IGhhcyBzY3Jld2VkIHdpdGggc2V0VGltZW91dCBidXQgbm8gSS5FLiBtYWRkbmVzc1xuICAgICAgICByZXR1cm4gY2FjaGVkQ2xlYXJUaW1lb3V0KG1hcmtlcik7XG4gICAgfSBjYXRjaCAoZSl7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICAvLyBXaGVuIHdlIGFyZSBpbiBJLkUuIGJ1dCB0aGUgc2NyaXB0IGhhcyBiZWVuIGV2YWxlZCBzbyBJLkUuIGRvZXNuJ3QgIHRydXN0IHRoZSBnbG9iYWwgb2JqZWN0IHdoZW4gY2FsbGVkIG5vcm1hbGx5XG4gICAgICAgICAgICByZXR1cm4gY2FjaGVkQ2xlYXJUaW1lb3V0LmNhbGwobnVsbCwgbWFya2VyKTtcbiAgICAgICAgfSBjYXRjaCAoZSl7XG4gICAgICAgICAgICAvLyBzYW1lIGFzIGFib3ZlIGJ1dCB3aGVuIGl0J3MgYSB2ZXJzaW9uIG9mIEkuRS4gdGhhdCBtdXN0IGhhdmUgdGhlIGdsb2JhbCBvYmplY3QgZm9yICd0aGlzJywgaG9wZnVsbHkgb3VyIGNvbnRleHQgY29ycmVjdCBvdGhlcndpc2UgaXQgd2lsbCB0aHJvdyBhIGdsb2JhbCBlcnJvci5cbiAgICAgICAgICAgIC8vIFNvbWUgdmVyc2lvbnMgb2YgSS5FLiBoYXZlIGRpZmZlcmVudCBydWxlcyBmb3IgY2xlYXJUaW1lb3V0IHZzIHNldFRpbWVvdXRcbiAgICAgICAgICAgIHJldHVybiBjYWNoZWRDbGVhclRpbWVvdXQuY2FsbCh0aGlzLCBtYXJrZXIpO1xuICAgICAgICB9XG4gICAgfVxuXG5cblxufVxudmFyIHF1ZXVlID0gW107XG52YXIgZHJhaW5pbmcgPSBmYWxzZTtcbnZhciBjdXJyZW50UXVldWU7XG52YXIgcXVldWVJbmRleCA9IC0xO1xuXG5mdW5jdGlvbiBjbGVhblVwTmV4dFRpY2soKSB7XG4gICAgaWYgKCFkcmFpbmluZyB8fCAhY3VycmVudFF1ZXVlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZHJhaW5pbmcgPSBmYWxzZTtcbiAgICBpZiAoY3VycmVudFF1ZXVlLmxlbmd0aCkge1xuICAgICAgICBxdWV1ZSA9IGN1cnJlbnRRdWV1ZS5jb25jYXQocXVldWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHF1ZXVlSW5kZXggPSAtMTtcbiAgICB9XG4gICAgaWYgKHF1ZXVlLmxlbmd0aCkge1xuICAgICAgICBkcmFpblF1ZXVlKCk7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBkcmFpblF1ZXVlKCkge1xuICAgIGlmIChkcmFpbmluZykge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIHZhciB0aW1lb3V0ID0gcnVuVGltZW91dChjbGVhblVwTmV4dFRpY2spO1xuICAgIGRyYWluaW5nID0gdHJ1ZTtcblxuICAgIHZhciBsZW4gPSBxdWV1ZS5sZW5ndGg7XG4gICAgd2hpbGUobGVuKSB7XG4gICAgICAgIGN1cnJlbnRRdWV1ZSA9IHF1ZXVlO1xuICAgICAgICBxdWV1ZSA9IFtdO1xuICAgICAgICB3aGlsZSAoKytxdWV1ZUluZGV4IDwgbGVuKSB7XG4gICAgICAgICAgICBpZiAoY3VycmVudFF1ZXVlKSB7XG4gICAgICAgICAgICAgICAgY3VycmVudFF1ZXVlW3F1ZXVlSW5kZXhdLnJ1bigpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHF1ZXVlSW5kZXggPSAtMTtcbiAgICAgICAgbGVuID0gcXVldWUubGVuZ3RoO1xuICAgIH1cbiAgICBjdXJyZW50UXVldWUgPSBudWxsO1xuICAgIGRyYWluaW5nID0gZmFsc2U7XG4gICAgcnVuQ2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xufVxuXG5wcm9jZXNzLm5leHRUaWNrID0gZnVuY3Rpb24gKGZ1bikge1xuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGggLSAxKTtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGFyZ3NbaSAtIDFdID0gYXJndW1lbnRzW2ldO1xuICAgICAgICB9XG4gICAgfVxuICAgIHF1ZXVlLnB1c2gobmV3IEl0ZW0oZnVuLCBhcmdzKSk7XG4gICAgaWYgKHF1ZXVlLmxlbmd0aCA9PT0gMSAmJiAhZHJhaW5pbmcpIHtcbiAgICAgICAgcnVuVGltZW91dChkcmFpblF1ZXVlKTtcbiAgICB9XG59O1xuXG4vLyB2OCBsaWtlcyBwcmVkaWN0aWJsZSBvYmplY3RzXG5mdW5jdGlvbiBJdGVtKGZ1biwgYXJyYXkpIHtcbiAgICB0aGlzLmZ1biA9IGZ1bjtcbiAgICB0aGlzLmFycmF5ID0gYXJyYXk7XG59XG5JdGVtLnByb3RvdHlwZS5ydW4gPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5mdW4uYXBwbHkobnVsbCwgdGhpcy5hcnJheSk7XG59O1xucHJvY2Vzcy50aXRsZSA9ICdicm93c2VyJztcbnByb2Nlc3MuYnJvd3NlciA9IHRydWU7XG5wcm9jZXNzLmVudiA9IHt9O1xucHJvY2Vzcy5hcmd2ID0gW107XG5wcm9jZXNzLnZlcnNpb24gPSAnJzsgLy8gZW1wdHkgc3RyaW5nIHRvIGF2b2lkIHJlZ2V4cCBpc3N1ZXNcbnByb2Nlc3MudmVyc2lvbnMgPSB7fTtcblxuZnVuY3Rpb24gbm9vcCgpIHt9XG5cbnByb2Nlc3Mub24gPSBub29wO1xucHJvY2Vzcy5hZGRMaXN0ZW5lciA9IG5vb3A7XG5wcm9jZXNzLm9uY2UgPSBub29wO1xucHJvY2Vzcy5vZmYgPSBub29wO1xucHJvY2Vzcy5yZW1vdmVMaXN0ZW5lciA9IG5vb3A7XG5wcm9jZXNzLnJlbW92ZUFsbExpc3RlbmVycyA9IG5vb3A7XG5wcm9jZXNzLmVtaXQgPSBub29wO1xucHJvY2Vzcy5wcmVwZW5kTGlzdGVuZXIgPSBub29wO1xucHJvY2Vzcy5wcmVwZW5kT25jZUxpc3RlbmVyID0gbm9vcDtcblxucHJvY2Vzcy5saXN0ZW5lcnMgPSBmdW5jdGlvbiAobmFtZSkgeyByZXR1cm4gW10gfVxuXG5wcm9jZXNzLmJpbmRpbmcgPSBmdW5jdGlvbiAobmFtZSkge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvY2Vzcy5iaW5kaW5nIGlzIG5vdCBzdXBwb3J0ZWQnKTtcbn07XG5cbnByb2Nlc3MuY3dkID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gJy8nIH07XG5wcm9jZXNzLmNoZGlyID0gZnVuY3Rpb24gKGRpcikge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvY2Vzcy5jaGRpciBpcyBub3Qgc3VwcG9ydGVkJyk7XG59O1xucHJvY2Vzcy51bWFzayA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gMDsgfTtcbiIsInZhciBnO1xuXG4vLyBUaGlzIHdvcmtzIGluIG5vbi1zdHJpY3QgbW9kZVxuZyA9IChmdW5jdGlvbigpIHtcblx0cmV0dXJuIHRoaXM7XG59KSgpO1xuXG50cnkge1xuXHQvLyBUaGlzIHdvcmtzIGlmIGV2YWwgaXMgYWxsb3dlZCAoc2VlIENTUClcblx0ZyA9IGcgfHwgbmV3IEZ1bmN0aW9uKFwicmV0dXJuIHRoaXNcIikoKTtcbn0gY2F0Y2ggKGUpIHtcblx0Ly8gVGhpcyB3b3JrcyBpZiB0aGUgd2luZG93IHJlZmVyZW5jZSBpcyBhdmFpbGFibGVcblx0aWYgKHR5cGVvZiB3aW5kb3cgPT09IFwib2JqZWN0XCIpIGcgPSB3aW5kb3c7XG59XG5cbi8vIGcgY2FuIHN0aWxsIGJlIHVuZGVmaW5lZCwgYnV0IG5vdGhpbmcgdG8gZG8gYWJvdXQgaXQuLi5cbi8vIFdlIHJldHVybiB1bmRlZmluZWQsIGluc3RlYWQgb2Ygbm90aGluZyBoZXJlLCBzbyBpdCdzXG4vLyBlYXNpZXIgdG8gaGFuZGxlIHRoaXMgY2FzZS4gaWYoIWdsb2JhbCkgeyAuLi59XG5cbm1vZHVsZS5leHBvcnRzID0gZztcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIEVudW1zXzEgPSByZXF1aXJlKFwiLi9FbnVtc1wiKTtcbnZhciBDb25zdGFudHMgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gQ29uc3RhbnRzKCkge1xuICAgIH1cbiAgICBDb25zdGFudHMucmVxdWlyZWRPbW5pY2hhbm5lbENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJzID0gW1wib3JnVXJsXCIsIFwib3JnSWRcIiwgXCJ3aWRnZXRJZFwiXTtcbiAgICBDb25zdGFudHMuZGVmYXVsdEhlYWRlcnMgPSB7XG4gICAgICAgIFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiXG4gICAgfTtcbiAgICBDb25zdGFudHMuYnlwYXNzQ2FjaGVIZWFkZXJzID0ge1xuICAgICAgICBcIkNhY2hlLUNvbnRyb2xcIjogXCJuby1zdG9yZSwgbXVzdC1yZXZhbGlkYXRlLCBuby1jYWNoZVwiLFxuICAgICAgICBcIlgtQ2FjaGUtQ29udHJvbFwiOiBcIm5vLXN0b3JlXCJcbiAgICB9O1xuICAgIENvbnN0YW50cy5kZWZhdWx0Q2hhbm5lbElkID0gRW51bXNfMS5DaGFubmVsSWQuTENXO1xuICAgIENvbnN0YW50cy5kZWZhdWx0TG9jYWxlID0gXCJlbi11c1wiO1xuICAgIENvbnN0YW50cy5ub0NvbnRlbnRTdGF0dXNDb2RlID0gMjA0O1xuICAgIENvbnN0YW50cy5zZW5zaXRpdmVQcm9wZXJ0aWVzID0gW1wiQXV0aGVudGljYXRlZFVzZXJUb2tlblwiXTtcbiAgICBDb25zdGFudHMudHJhbnNhY3Rpb25pZCA9IFwidHJhbnNhY3Rpb24taWRcIjtcbiAgICBDb25zdGFudHMuY3VzdG9tZXJEaXNwbGF5TmFtZSA9IFwiY3VzdG9tZXJEaXNwbGF5TmFtZVwiO1xuICAgIHJldHVybiBDb25zdGFudHM7XG59KCkpO1xuZXhwb3J0cy5kZWZhdWx0ID0gQ29uc3RhbnRzO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLkxpdmVDaGF0VmVyc2lvbiA9IGV4cG9ydHMuT0NTREtUZWxlbWV0cnlFdmVudCA9IGV4cG9ydHMuQ2hhbm5lbElkID0gZXhwb3J0cy5PcGVyYXRpbmdTeXN0ZW0gPSBleHBvcnRzLkRldmljZVR5cGUgPSBleHBvcnRzLkJyb3dzZXIgPSBleHBvcnRzLkJyb3dzZXJWZW5kb3IgPSB2b2lkIDA7XG52YXIgQnJvd3NlclZlbmRvcjtcbihmdW5jdGlvbiAoQnJvd3NlclZlbmRvcikge1xuICAgIEJyb3dzZXJWZW5kb3JbXCJJRVwiXSA9IFwiSUVcIjtcbiAgICBCcm93c2VyVmVuZG9yW1wiQ0hST01FXCJdID0gXCJDaHJvbWVcIjtcbiAgICBCcm93c2VyVmVuZG9yW1wiRklSRUZPWFwiXSA9IFwiRmlyZWZveFwiO1xuICAgIEJyb3dzZXJWZW5kb3JbXCJTQUZBUklcIl0gPSBcIlNhZmFyaVwiO1xuICAgIEJyb3dzZXJWZW5kb3JbXCJFREdFXCJdID0gXCJFZGdlXCI7XG4gICAgQnJvd3NlclZlbmRvcltcIkVER0VfQ0hST01JVU1cIl0gPSBcIkVkZ1wiO1xuICAgIEJyb3dzZXJWZW5kb3JbXCJPUEVSQVwiXSA9IFwiT3BlcmFcIjtcbiAgICBCcm93c2VyVmVuZG9yW1wiVU5LTk9XTlwiXSA9IFwiVW5rbm93blwiO1xufSkoQnJvd3NlclZlbmRvciA9IGV4cG9ydHMuQnJvd3NlclZlbmRvciB8fCAoZXhwb3J0cy5Ccm93c2VyVmVuZG9yID0ge30pKTtcbnZhciBCcm93c2VyO1xuKGZ1bmN0aW9uIChCcm93c2VyKSB7XG4gICAgQnJvd3NlcltCcm93c2VyW1wiQ2hyb21lXCJdID0gMF0gPSBcIkNocm9tZVwiO1xuICAgIEJyb3dzZXJbQnJvd3NlcltcIkZpcmVmb3hcIl0gPSAxXSA9IFwiRmlyZWZveFwiO1xuICAgIEJyb3dzZXJbQnJvd3NlcltcIkllXCJdID0gMl0gPSBcIkllXCI7XG4gICAgQnJvd3NlcltCcm93c2VyW1wiRWRnZVwiXSA9IDNdID0gXCJFZGdlXCI7XG4gICAgQnJvd3NlcltCcm93c2VyW1wiU2FmYXJpXCJdID0gNF0gPSBcIlNhZmFyaVwiO1xuICAgIEJyb3dzZXJbQnJvd3NlcltcIk5vbmVcIl0gPSA1XSA9IFwiTm9uZVwiO1xufSkoQnJvd3NlciA9IGV4cG9ydHMuQnJvd3NlciB8fCAoZXhwb3J0cy5Ccm93c2VyID0ge30pKTtcbnZhciBEZXZpY2VUeXBlO1xuKGZ1bmN0aW9uIChEZXZpY2VUeXBlKSB7XG4gICAgRGV2aWNlVHlwZVtcIkRlc2t0b3BcIl0gPSBcIkRlc2t0b3BcIjtcbiAgICBEZXZpY2VUeXBlW1wiTW9iaWxlXCJdID0gXCJNb2JpbGVcIjtcbiAgICBEZXZpY2VUeXBlW1wiVGFibGV0XCJdID0gXCJUYWJsZXRcIjtcbn0pKERldmljZVR5cGUgPSBleHBvcnRzLkRldmljZVR5cGUgfHwgKGV4cG9ydHMuRGV2aWNlVHlwZSA9IHt9KSk7XG52YXIgT3BlcmF0aW5nU3lzdGVtO1xuKGZ1bmN0aW9uIChPcGVyYXRpbmdTeXN0ZW0pIHtcbiAgICBPcGVyYXRpbmdTeXN0ZW1bXCJXSU5ET1dTXCJdID0gXCJXaW5kb3dzXCI7XG4gICAgT3BlcmF0aW5nU3lzdGVtW1wiTUFDT1NYXCJdID0gXCJNYWMgT1MgWFwiO1xuICAgIE9wZXJhdGluZ1N5c3RlbVtcIldJTkRPV1NfUEhPTkVcIl0gPSBcIldpbmRvd3MgUGhvbmVcIjtcbiAgICBPcGVyYXRpbmdTeXN0ZW1bXCJXSU5ET1dTX1JUXCJdID0gXCJXaW5kb3dzIFJUXCI7XG4gICAgT3BlcmF0aW5nU3lzdGVtW1wiSU9TXCJdID0gXCJpT1NcIjtcbiAgICBPcGVyYXRpbmdTeXN0ZW1bXCJBTkRST0lEXCJdID0gXCJBbmRyb2lkXCI7XG4gICAgT3BlcmF0aW5nU3lzdGVtW1wiTElOVVhcIl0gPSBcIkxpbnV4XCI7XG4gICAgT3BlcmF0aW5nU3lzdGVtW1wiVU5LTk9XTlwiXSA9IFwiVW5rbm93blwiO1xufSkoT3BlcmF0aW5nU3lzdGVtID0gZXhwb3J0cy5PcGVyYXRpbmdTeXN0ZW0gfHwgKGV4cG9ydHMuT3BlcmF0aW5nU3lzdGVtID0ge30pKTtcbnZhciBDaGFubmVsSWQ7XG4oZnVuY3Rpb24gKENoYW5uZWxJZCkge1xuICAgIENoYW5uZWxJZFtcIkxDV1wiXSA9IFwibGN3XCI7XG4gICAgQ2hhbm5lbElkW1wiU01TXCJdID0gXCJzbXNcIjtcbiAgICBDaGFubmVsSWRbXCJGQUNFQk9PS1wiXSA9IFwiZmFjZWJvb2tcIjtcbiAgICBDaGFubmVsSWRbXCJXRUNIQVRcIl0gPSBcIndlY2hhdFwiO1xufSkoQ2hhbm5lbElkID0gZXhwb3J0cy5DaGFubmVsSWQgfHwgKGV4cG9ydHMuQ2hhbm5lbElkID0ge30pKTtcbnZhciBPQ1NES1RlbGVtZXRyeUV2ZW50O1xuKGZ1bmN0aW9uIChPQ1NES1RlbGVtZXRyeUV2ZW50KSB7XG4gICAgT0NTREtUZWxlbWV0cnlFdmVudFtcIkdFVENIQVRDT05GSUdcIl0gPSBcIkdldENoYXRDb25maWdcIjtcbiAgICBPQ1NES1RlbGVtZXRyeUV2ZW50W1wiR0VUQ0hBVENPTkZJR1NVQ0NFU1NcIl0gPSBcIkdldENoYXRDb25maWdTdWNjZWVkZWRcIjtcbiAgICBPQ1NES1RlbGVtZXRyeUV2ZW50W1wiR0VUUkVDT05ORUNUQUJMRUNIQVRTXCJdID0gXCJHZXRSZWNvbm5uZWN0YWJsZUNoYXRzXCI7XG4gICAgT0NTREtUZWxlbWV0cnlFdmVudFtcIkdFVFJFQ09OTkVDVEFWQUlMQUJJTElUWVwiXSA9IFwiR2V0UmVjb25ubmVjdGFibGVBdmFpbGFiaWxpdHlcIjtcbiAgICBPQ1NES1RlbGVtZXRyeUV2ZW50W1wiR0VUQ0hBVFRPS0VOU1RBUlRFRFwiXSA9IFwiR2V0Q2hhdFRva2VuU3RhcnRlZFwiO1xuICAgIE9DU0RLVGVsZW1ldHJ5RXZlbnRbXCJHRVRDSEFUVE9LRU5TVUNDRUVERURcIl0gPSBcIkdldENoYXRUb2tlblN1Y2NlZWRlZFwiO1xuICAgIE9DU0RLVGVsZW1ldHJ5RXZlbnRbXCJHRVRDSEFUVE9LRU5GQUlMRURcIl0gPSBcIkdldENoYXRUb2tlbkZhaWxlZFwiO1xuICAgIE9DU0RLVGVsZW1ldHJ5RXZlbnRbXCJHRVRMV0lTVEFUVVNTVEFSVEVEXCJdID0gXCJHZXRMd2lTdGF0dXNTdGFydGVkXCI7XG4gICAgT0NTREtUZWxlbWV0cnlFdmVudFtcIkdFVExXSVNUQVRVU1NVQ0NFRURFRFwiXSA9IFwiR2V0THdpU3RhdHVzU3VjY2VlZGVkXCI7XG4gICAgT0NTREtUZWxlbWV0cnlFdmVudFtcIkdFVExXSVNUQVRVU0ZBSUxFRFwiXSA9IFwiR2V0THdpU3RhdHVzRmFpbGVkXCI7XG4gICAgT0NTREtUZWxlbWV0cnlFdmVudFtcIlNFU1NJT05JTklUU1RBUlRFRFwiXSA9IFwiU2Vzc2lvbkluaXRTdGFydGVkXCI7XG4gICAgT0NTREtUZWxlbWV0cnlFdmVudFtcIlNFU1NJT05JTklUU1VDQ0VFREVEXCJdID0gXCJTZXNzaW9uSW5pdFN1Y2NlZWRlZFwiO1xuICAgIE9DU0RLVGVsZW1ldHJ5RXZlbnRbXCJTRVNTSU9OSU5JVEZBSUxFRFwiXSA9IFwiU2Vzc2lvbkluaXRGYWlsZWRcIjtcbiAgICBPQ1NES1RlbGVtZXRyeUV2ZW50W1wiU0VTU0lPTkNMT1NFU1RBUlRFRFwiXSA9IFwiU2Vzc2lvbkNsb3NlU3RhcnRlZFwiO1xuICAgIE9DU0RLVGVsZW1ldHJ5RXZlbnRbXCJTRVNTSU9OQ0xPU0VTVUNDRUVERURcIl0gPSBcIlNlc3Npb25DbG9zZVN1Y2NlZWRlZFwiO1xuICAgIE9DU0RLVGVsZW1ldHJ5RXZlbnRbXCJTRVNTSU9OQ0xPU0VGQUlMRURcIl0gPSBcIlNlc3Npb25DbG9zZUZhaWxlZFwiO1xuICAgIE9DU0RLVGVsZW1ldHJ5RXZlbnRbXCJTVUJNSVRQT1NUQ0hBVFNUQVJURURcIl0gPSBcIlN1Ym1pdFBvc3RDaGF0U3RhcnRlZFwiO1xuICAgIE9DU0RLVGVsZW1ldHJ5RXZlbnRbXCJTVUJNSVRQT1NUQ0hBVFNVQ0NFRURFRFwiXSA9IFwiU3VibWl0UG9zdENoYXRTdWNjZWVkZWRcIjtcbiAgICBPQ1NES1RlbGVtZXRyeUV2ZW50W1wiU1VCTUlUUE9TVENIQVRGQUlMRURcIl0gPSBcIlN1Ym1pdFBvc3RDaGF0RmFpbGVkXCI7XG4gICAgT0NTREtUZWxlbWV0cnlFdmVudFtcIkdFVENIQVRUUkFOU0NSSVBUU1RBUlRFRFwiXSA9IFwiR2V0Q2hhdFRyYW5zY3JpcHRTdGFydGVkXCI7XG4gICAgT0NTREtUZWxlbWV0cnlFdmVudFtcIkdFVENIQVRUUkFOU0NSSVBUU1VDQ0VFREVEXCJdID0gXCJHZXRDaGF0VHJhbnNjcmlwdFN1Y2NlZWRlZFwiO1xuICAgIE9DU0RLVGVsZW1ldHJ5RXZlbnRbXCJHRVRDSEFUVFJBTlNDUklQVEZBSUxFRFwiXSA9IFwiR2V0Q2hhdFRyYW5zY3JpcHRGYWlsZWRcIjtcbiAgICBPQ1NES1RlbGVtZXRyeUV2ZW50W1wiRU1BSUxUUkFOU0NSSVBUU1RBUlRFRFwiXSA9IFwiRW1haWxUcmFuc2NyaXB0U3RhcnRlZFwiO1xuICAgIE9DU0RLVGVsZW1ldHJ5RXZlbnRbXCJFTUFJTFRSQU5TQ1JJUFRTVUNDRUVERURcIl0gPSBcIkVtYWlsVHJhbnNjcmlwdFN1Y2NlZWRlZFwiO1xuICAgIE9DU0RLVGVsZW1ldHJ5RXZlbnRbXCJFTUFJTFRSQU5TQ1JJUFRGQUlMRURcIl0gPSBcIkVtYWlsVHJhbnNjcmlwdEZhaWxlZFwiO1xuICAgIE9DU0RLVGVsZW1ldHJ5RXZlbnRbXCJGRVRDSERBVEFNQVNLSU5HU1RBUlRFRFwiXSA9IFwiRmV0Y2hEYXRhTWFza2luZ1N0YXJ0ZWRcIjtcbiAgICBPQ1NES1RlbGVtZXRyeUV2ZW50W1wiRkVUQ0hEQVRBTUFTS0lOR1NVQ0NFRURFRFwiXSA9IFwiRmV0Y2hEYXRhTWFza2luZ1N1Y2NlZWRlZFwiO1xuICAgIE9DU0RLVGVsZW1ldHJ5RXZlbnRbXCJGRVRDSERBVEFNQVNLSU5HRkFJTEVEXCJdID0gXCJGZXRjaERhdGFNYXNraW5nRmFpbGVkXCI7XG4gICAgT0NTREtUZWxlbWV0cnlFdmVudFtcIlNFQ09OREFSWUNIQU5ORUxFVkVOVFJFUVVFU1RTVEFSVEVEXCJdID0gXCJTZWNvbmRhcnlDaGFubmVsRXZlbnRSZXF1ZXN0U3RhcnRlZFwiO1xuICAgIE9DU0RLVGVsZW1ldHJ5RXZlbnRbXCJTRUNPTkRBUllDSEFOTkVMRVZFTlRSRVFVRVNUU1VDQ0VFREVEXCJdID0gXCJTZWNvbmRhcnlDaGFubmVsRXZlbnRSZXF1ZXN0U3VjY2VlZGVkXCI7XG4gICAgT0NTREtUZWxlbWV0cnlFdmVudFtcIlNFQ09OREFSWUNIQU5ORUxFVkVOVFJFUVVFU1RGQUlMRURcIl0gPSBcIlNlY29uZGFyeUNoYW5uZWxFdmVudFJlcXVlc3RGYWlsZWRcIjtcbiAgICBPQ1NES1RlbGVtZXRyeUV2ZW50W1wiR0VUU1VSVkVZSU5WSVRFTElOS1NUQVJURURcIl0gPSBcIkdldFN1cnZleUludml0ZUxpbmtTdGFydGVkXCI7XG4gICAgT0NTREtUZWxlbWV0cnlFdmVudFtcIkdFVFNVUlZFWUlOVklURUxJTktTVUNDRUVERURcIl0gPSBcIkdldFN1cnZleUludml0ZUxpbmtTdWNjZWVkZWRcIjtcbiAgICBPQ1NES1RlbGVtZXRyeUV2ZW50W1wiR0VUU1VSVkVZSU5WSVRFTElOS0ZBSUxFRFwiXSA9IFwiR2V0U3VydmV5SW52aXRlTGlua0ZhaWxlZFwiO1xuICAgIE9DU0RLVGVsZW1ldHJ5RXZlbnRbXCJWQUxJREFURUFVVEhDSEFUUkVDT1JEU1RBUlRFRFwiXSA9IFwiVmFsaWRhdGVBdXRoQ2hhdFJlY29yZFN0YXJ0ZWRcIjtcbiAgICBPQ1NES1RlbGVtZXRyeUV2ZW50W1wiVkFMSURBVEVBVVRIQ0hBVFJFQ09SRFNVQ0NFRURFRFwiXSA9IFwiVmFsaWRhdGVBdXRoQ2hhdFJlY29yZFN1Y2NlZWRlZFwiO1xuICAgIE9DU0RLVGVsZW1ldHJ5RXZlbnRbXCJWQUxJREFURUFVVEhDSEFUUkVDT1JERkFJTEVEXCJdID0gXCJWYWxpZGF0ZUF1dGhDaGF0UmVjb3JkRmFpbGVkXCI7XG4gICAgT0NTREtUZWxlbWV0cnlFdmVudFtcIkdFVFFVRVVFQVZBSUxBQklMSVRZU1RBUlRFRFwiXSA9IFwiR2V0UXVldWVBdmFpbGFiaWxpdHlTdGFydGVkXCI7XG4gICAgT0NTREtUZWxlbWV0cnlFdmVudFtcIkdFVFFVRVVFQVZBSUxBQklMSVRZU1VDQ0VFREVEXCJdID0gXCJHZXRRdWV1ZUF2YWlsYWJpbGl0eVN1Y2NlZWRlZFwiO1xuICAgIE9DU0RLVGVsZW1ldHJ5RXZlbnRbXCJHRVRRVUVVRUFWQUlMQUJJTElUWUZBSUxFRFwiXSA9IFwiR2V0UXVldWVBdmFpbGFiaWxpdHlGYWlsZWRcIjtcbiAgICBPQ1NES1RlbGVtZXRyeUV2ZW50W1wiU0VORFRZUElOR0lORElDQVRPUkZBSUxFRFwiXSA9IFwiU2VuZFR5cGluZ0luZGljYXRvckZhaWxlZFwiO1xuICAgIE9DU0RLVGVsZW1ldHJ5RXZlbnRbXCJTRU5EVFlQSU5HSU5ESUNBVE9SU1VDQ0VFREVEXCJdID0gXCJTZW5kVHlwaW5nSW5kaWNhdG9yU3VjY2VlZGVkXCI7XG59KShPQ1NES1RlbGVtZXRyeUV2ZW50ID0gZXhwb3J0cy5PQ1NES1RlbGVtZXRyeUV2ZW50IHx8IChleHBvcnRzLk9DU0RLVGVsZW1ldHJ5RXZlbnQgPSB7fSkpO1xudmFyIExpdmVDaGF0VmVyc2lvbjtcbihmdW5jdGlvbiAoTGl2ZUNoYXRWZXJzaW9uKSB7XG4gICAgLy8gSUMzIGxpdmUgY2hhdFxuICAgIExpdmVDaGF0VmVyc2lvbltMaXZlQ2hhdFZlcnNpb25bXCJWMVwiXSA9IDFdID0gXCJWMVwiO1xuICAgIC8vIEFDUyBsaXZlIGNoYXRcbiAgICBMaXZlQ2hhdFZlcnNpb25bTGl2ZUNoYXRWZXJzaW9uW1wiVjJcIl0gPSAyXSA9IFwiVjJcIjtcbn0pKExpdmVDaGF0VmVyc2lvbiA9IGV4cG9ydHMuTGl2ZUNoYXRWZXJzaW9uIHx8IChleHBvcnRzLkxpdmVDaGF0VmVyc2lvbiA9IHt9KSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBFdmVudE5hbWVzID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIEV2ZW50TmFtZXMoKSB7XG4gICAgfVxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShFdmVudE5hbWVzLCBcIk9DU0RLTE9BRFwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gXCJvYzpzZGs6bG9hZFwiOyB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgcmV0dXJuIEV2ZW50TmFtZXM7XG59KCkpO1xuZXhwb3J0cy5kZWZhdWx0ID0gRXZlbnROYW1lcztcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIExvY2FsZXMgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gTG9jYWxlcygpIHtcbiAgICB9XG4gICAgTG9jYWxlcy5zdXBwb3J0ZWRMb2NhbGVzID0gW1xuICAgICAgICBcImFyLXNhXCIsXG4gICAgICAgIFwiYmctYmdcIixcbiAgICAgICAgXCJjYS1lc1wiLFxuICAgICAgICBcImNzLWN6XCIsXG4gICAgICAgIFwiZGEtZGtcIixcbiAgICAgICAgXCJkZS1kZVwiLFxuICAgICAgICBcImVsLWdyXCIsXG4gICAgICAgIFwiZW4tdXNcIixcbiAgICAgICAgXCJlcy1lc1wiLFxuICAgICAgICBcImV0LWVlXCIsXG4gICAgICAgIFwiZXUtZXNcIixcbiAgICAgICAgXCJmaS1maVwiLFxuICAgICAgICBcImZyLWZyXCIsXG4gICAgICAgIFwiZ2wtZXNcIixcbiAgICAgICAgXCJoZS1pbFwiLFxuICAgICAgICBcImhpLWluXCIsXG4gICAgICAgIFwiaHItaHJcIixcbiAgICAgICAgXCJodS1odVwiLFxuICAgICAgICBcImlkLWlkXCIsXG4gICAgICAgIFwiaXQtaXRcIixcbiAgICAgICAgXCJqYS1qcFwiLFxuICAgICAgICBcImtrLWt6XCIsXG4gICAgICAgIFwia28ta3JcIixcbiAgICAgICAgXCJsdC1sdFwiLFxuICAgICAgICBcImx2LWx2XCIsXG4gICAgICAgIFwibXMtbXlcIixcbiAgICAgICAgXCJuYi1ub1wiLFxuICAgICAgICBcIm5sLW5sXCIsXG4gICAgICAgIFwicGwtcGxcIixcbiAgICAgICAgXCJwdC1iclwiLFxuICAgICAgICBcInB0LXB0XCIsXG4gICAgICAgIFwicm8tcm9cIixcbiAgICAgICAgXCJydS1ydVwiLFxuICAgICAgICBcInNrLXNrXCIsXG4gICAgICAgIFwic2wtc2lcIixcbiAgICAgICAgXCJzci1jeXJsLWNzXCIsXG4gICAgICAgIFwic3ItbGF0bi1jc1wiLFxuICAgICAgICBcInN2LXNlXCIsXG4gICAgICAgIFwidGgtdGhcIixcbiAgICAgICAgXCJ0ci10clwiLFxuICAgICAgICBcInVrLXVhXCIsXG4gICAgICAgIFwidmktdm5cIixcbiAgICAgICAgXCJ6aC1jblwiLFxuICAgICAgICBcInpoLWhrXCIsXG4gICAgICAgIFwiemgtdHdcIlxuICAgIF07XG4gICAgcmV0dXJuIExvY2FsZXM7XG59KCkpO1xuZXhwb3J0cy5kZWZhdWx0ID0gTG9jYWxlcztcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIFRlbGVtZXRyeUhlbHBlcl8xID0gcmVxdWlyZShcIi4uL1V0aWxzL1RlbGVtZXRyeUhlbHBlclwiKTtcbnZhciBPQ1NES0xvZ2dlciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBPQ1NES0xvZ2dlcihsb2dnZXIpIHtcbiAgICAgICAgdGhpcy5sb2dnZXIgPSBsb2dnZXI7XG4gICAgfVxuICAgIE9DU0RLTG9nZ2VyLnByb3RvdHlwZS5sb2cgPSBmdW5jdGlvbiAobG9nbGV2ZWwsIHRlbGVtZXRyeUV2ZW50LCBjdXN0b21EYXRhLCBkZXNjcmlwdGlvbikge1xuICAgICAgICBpZiAodGhpcy5pc0xvZ2dpbmdFbmFibGVkKCkpIHtcbiAgICAgICAgICAgIHZhciBsb2dEYXRhID0gVGVsZW1ldHJ5SGVscGVyXzEuZGVmYXVsdC5HRVRURUxFTUVUUllFVkVOVERBVEEodGVsZW1ldHJ5RXZlbnQsIGN1c3RvbURhdGEsIGRlc2NyaXB0aW9uKTtcbiAgICAgICAgICAgIHRoaXMubG9nRXZlbnQobG9nbGV2ZWwsIGxvZ0RhdGEpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBPQ1NES0xvZ2dlci5wcm90b3R5cGUubG9nRXZlbnQgPSBmdW5jdGlvbiAobG9nTGV2ZWwsIGxvZ0RhdGEpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNMb2dnaW5nRW5hYmxlZCgpKSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KHRoaXMubG9nZ2VyLmxvZ0NsaWVudFNka1RlbGVtZXRyeUV2ZW50LmJpbmQodGhpcy5sb2dnZXIpLCAwLCBsb2dMZXZlbCwgbG9nRGF0YSk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIE9DU0RLTG9nZ2VyLnByb3RvdHlwZS5pc0xvZ2dpbmdFbmFibGVkID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gIXRoaXMuaXNOdWxsT3JVbmRlZmluZWQodGhpcy5sb2dnZXIpO1xuICAgIH07XG4gICAgT0NTREtMb2dnZXIucHJvdG90eXBlLmlzTnVsbE9yVW5kZWZpbmVkID0gZnVuY3Rpb24gKG9iaikge1xuICAgICAgICByZXR1cm4gKG9iaiA9PT0gbnVsbCB8fCBvYmogPT09IHVuZGVmaW5lZCk7XG4gICAgfTtcbiAgICByZXR1cm4gT0NTREtMb2dnZXI7XG59KCkpO1xuZXhwb3J0cy5kZWZhdWx0ID0gT0NTREtMb2dnZXI7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBPbW5pY2hhbm5lbEVuZHBvaW50cyA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBPbW5pY2hhbm5lbEVuZHBvaW50cygpIHtcbiAgICB9XG4gICAgT21uaWNoYW5uZWxFbmRwb2ludHMuTGl2ZUNoYXRDb25maWdQYXRoID0gXCJsaXZlY2hhdGNvbm5lY3Rvci9jb25maWdcIjtcbiAgICBPbW5pY2hhbm5lbEVuZHBvaW50cy5MaXZlQ2hhdFNlc3Npb25Jbml0UGF0aCA9IFwibGl2ZWNoYXRjb25uZWN0b3Ivc2Vzc2lvbmluaXRcIjtcbiAgICBPbW5pY2hhbm5lbEVuZHBvaW50cy5MaXZlQ2hhdEF1dGhTZXNzaW9uSW5pdFBhdGggPSBcImxpdmVjaGF0Y29ubmVjdG9yL2F1dGgvc2Vzc2lvbmluaXRcIjtcbiAgICBPbW5pY2hhbm5lbEVuZHBvaW50cy5MaXZlQ2hhdEdldENoYXRUb2tlblBhdGggPSBcImxpdmVjaGF0Y29ubmVjdG9yL2dldGNoYXR0b2tlblwiO1xuICAgIE9tbmljaGFubmVsRW5kcG9pbnRzLkxpdmVDaGF0djJHZXRDaGF0VG9rZW5QYXRoID0gXCJsaXZlY2hhdGNvbm5lY3Rvci92Mi9nZXRjaGF0dG9rZW5cIjtcbiAgICBPbW5pY2hhbm5lbEVuZHBvaW50cy5MaXZlQ2hhdEF1dGhHZXRDaGF0VG9rZW5QYXRoID0gXCJsaXZlY2hhdGNvbm5lY3Rvci9hdXRoL2dldGNoYXR0b2tlblwiO1xuICAgIE9tbmljaGFubmVsRW5kcG9pbnRzLkxpdmVDaGF0djJBdXRoR2V0Q2hhdFRva2VuUGF0aCA9IFwibGl2ZWNoYXRjb25uZWN0b3IvdjIvYXV0aC9nZXRjaGF0dG9rZW5cIjtcbiAgICBPbW5pY2hhbm5lbEVuZHBvaW50cy5MaXZlQ2hhdFNlc3Npb25DbG9zZVBhdGggPSBcImxpdmVjaGF0Y29ubmVjdG9yL3Nlc3Npb25jbG9zZVwiO1xuICAgIE9tbmljaGFubmVsRW5kcG9pbnRzLkxpdmVDaGF0QXV0aFNlc3Npb25DbG9zZVBhdGggPSBcImxpdmVjaGF0Y29ubmVjdG9yL2F1dGgvc2Vzc2lvbmNsb3NlXCI7XG4gICAgT21uaWNoYW5uZWxFbmRwb2ludHMuTGl2ZUNoYXRTdWJtaXRQb3N0Q2hhdFBhdGggPSBcInN1cnZleS9zdWJtaXRwb3N0Y2hhdFwiO1xuICAgIE9tbmljaGFubmVsRW5kcG9pbnRzLkxpdmVDaGF0QXV0aFN1Ym1pdFBvc3RDaGF0UGF0aCA9IFwic3VydmV5L2F1dGgvc3VibWl0cG9zdGNoYXRcIjtcbiAgICBPbW5pY2hhbm5lbEVuZHBvaW50cy5MaXZlQ2hhdEdldFN1cnZleUludml0ZUxpbmtQYXRoID0gXCJsaXZlY2hhdGNvbm5lY3Rvci9nZXRzdXJ2ZXlpbnZpdGVcIjtcbiAgICBPbW5pY2hhbm5lbEVuZHBvaW50cy5MaXZlQ2hhdEF1dGhHZXRTdXJ2ZXlJbnZpdGVMaW5rUGF0aCA9IFwibGl2ZWNoYXRjb25uZWN0b3IvYXV0aC9nZXRzdXJ2ZXlpbnZpdGVcIjtcbiAgICBPbW5pY2hhbm5lbEVuZHBvaW50cy5MaXZlQ2hhdEdldENoYXRUcmFuc2NyaXB0UGF0aCA9IFwibGl2ZWNoYXRjb25uZWN0b3IvZ2V0Y2hhdHRyYW5zY3JpcHRzXCI7XG4gICAgT21uaWNoYW5uZWxFbmRwb2ludHMuTGl2ZUNoYXR2MkdldENoYXRUcmFuc2NyaXB0UGF0aCA9IFwibGl2ZWNoYXRjb25uZWN0b3IvdjIvZ2V0Y2hhdHRyYW5zY3JpcHRzXCI7XG4gICAgT21uaWNoYW5uZWxFbmRwb2ludHMuTGl2ZUNoYXRBdXRoR2V0Q2hhdFRyYW5zY3JpcHRQYXRoID0gXCJsaXZlY2hhdGNvbm5lY3Rvci9hdXRoL2dldGNoYXR0cmFuc2NyaXB0c1wiO1xuICAgIE9tbmljaGFubmVsRW5kcG9pbnRzLkxpdmVDaGF0djJBdXRoR2V0Q2hhdFRyYW5zY3JpcHRQYXRoID0gXCJsaXZlY2hhdGNvbm5lY3Rvci92Mi9hdXRoL2dldGNoYXR0cmFuc2NyaXB0c1wiO1xuICAgIE9tbmljaGFubmVsRW5kcG9pbnRzLkxpdmVDaGF0VHJhbnNjcmlwdEVtYWlsUmVxdWVzdFBhdGggPSBcImxpdmVjaGF0Y29ubmVjdG9yL2NyZWF0ZWVtYWlscmVxdWVzdFwiO1xuICAgIE9tbmljaGFubmVsRW5kcG9pbnRzLkxpdmVDaGF0QXV0aFRyYW5zY3JpcHRFbWFpbFJlcXVlc3RQYXRoID0gXCJsaXZlY2hhdGNvbm5lY3Rvci9hdXRoL2NyZWF0ZWVtYWlscmVxdWVzdFwiO1xuICAgIE9tbmljaGFubmVsRW5kcG9pbnRzLkxpdmVDaGF0RmV0Y2hEYXRhTWFza2luZ0luZm9QYXRoID0gXCJsaXZlY2hhdGNvbm5lY3Rvci9mZXRjaGRhdGFtYXNraW5naW5mb1wiO1xuICAgIE9tbmljaGFubmVsRW5kcG9pbnRzLkxpdmVDaGF0U2Vjb25kYXJ5Q2hhbm5lbEV2ZW50UGF0aCA9IFwibGl2ZWNoYXRjb25uZWN0b3Ivc2Vjb25kYXJ5Y2hhbm5lbGV2ZW50XCI7XG4gICAgT21uaWNoYW5uZWxFbmRwb2ludHMuTGl2ZUNoYXRBdXRoU2Vjb25kYXJ5Q2hhbm5lbEV2ZW50UGF0aCA9IFwibGl2ZWNoYXRjb25uZWN0b3IvYXV0aC9zZWNvbmRhcnljaGFubmVsZXZlbnRcIjtcbiAgICBPbW5pY2hhbm5lbEVuZHBvaW50cy5MaXZlQ2hhdExpdmVXb3JrSXRlbURldGFpbHNQYXRoID0gXCJsaXZlY2hhdGNvbm5lY3Rvci9nZXRsaXZld29ya2l0ZW1kZXRhaWxzXCI7XG4gICAgT21uaWNoYW5uZWxFbmRwb2ludHMuTGl2ZUNoYXRBdXRoTGl2ZVdvcmtJdGVtRGV0YWlsc1BhdGggPSBcImxpdmVjaGF0Y29ubmVjdG9yL2F1dGgvZ2V0bGl2ZXdvcmtpdGVtZGV0YWlsc1wiO1xuICAgIE9tbmljaGFubmVsRW5kcG9pbnRzLkxpdmVDaGF0R2V0UmVjb25uZWN0YWJsZUNoYXRzUGF0aCA9IFwibGl2ZWNoYXRjb25uZWN0b3IvYXV0aC9yZWNvbm5lY3RhYmxlY2hhdHNcIjtcbiAgICBPbW5pY2hhbm5lbEVuZHBvaW50cy5MaXZlQ2hhdFJlY29ubmVjdEF2YWlsYWJpbGl0eVBhdGggPSBcImxpdmVjaGF0Y29ubmVjdG9yL3JlY29ubmVjdFwiO1xuICAgIE9tbmljaGFubmVsRW5kcG9pbnRzLkxpdmVDaGF0VmFsaWRhdGVBdXRoQ2hhdE1hcFJlY29yZFBhdGggPSBcImxpdmVjaGF0Y29ubmVjdG9yL2F1dGgvdmFsaWRhdGVhdXRoY2hhdG1hcHJlY29yZFwiO1xuICAgIE9tbmljaGFubmVsRW5kcG9pbnRzLkdldFF1ZXVlQXZhaWxhYmlsaXR5UGF0aCA9IFwibGl2ZWNoYXRjb25uZWN0b3IvYXV0aC9nZXRxdWV1ZWF2YWlsYWJpbGl0eVwiO1xuICAgIE9tbmljaGFubmVsRW5kcG9pbnRzLlNlbmRUeXBpbmdJbmRpY2F0b3JQYXRoID0gXCJpbmJvdW5kL3R5cGluZ2luZGljYXRvci9saXZlY2hhdC9zZW5kdHlwaW5naW5kaWNhdG9yXCI7XG4gICAgcmV0dXJuIE9tbmljaGFubmVsRW5kcG9pbnRzO1xufSgpKTtcbmV4cG9ydHMuZGVmYXVsdCA9IE9tbmljaGFubmVsRW5kcG9pbnRzO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgT21uaWNoYW5uZWxIVFRQSGVhZGVycyA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBPbW5pY2hhbm5lbEhUVFBIZWFkZXJzKCkge1xuICAgIH1cbiAgICBPbW5pY2hhbm5lbEhUVFBIZWFkZXJzLmF1dGhlbnRpY2F0ZWRVc2VyVG9rZW4gPSBcIkF1dGhlbnRpY2F0ZWRVc2VyVG9rZW5cIjtcbiAgICBPbW5pY2hhbm5lbEhUVFBIZWFkZXJzLmF1dGhvcml6YXRpb24gPSBcIkF1dGhvcml6YXRpb25cIjtcbiAgICBPbW5pY2hhbm5lbEhUVFBIZWFkZXJzLm9yZ2FuaXphdGlvbklkID0gXCJPcmdhbml6YXRpb25JZFwiO1xuICAgIE9tbmljaGFubmVsSFRUUEhlYWRlcnMud2lkZ2V0QXBwSWQgPSBcIndpZGdldEFwcElkXCI7XG4gICAgT21uaWNoYW5uZWxIVFRQSGVhZGVycy5yZXF1ZXN0SWQgPSBcIlJlcXVlc3QtSWRcIjtcbiAgICByZXR1cm4gT21uaWNoYW5uZWxIVFRQSGVhZGVycztcbn0oKSk7XG5leHBvcnRzLmRlZmF1bHQgPSBPbW5pY2hhbm5lbEhUVFBIZWFkZXJzO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLkxvZ0xldmVsID0gdm9pZCAwO1xudmFyIExvZ0xldmVsO1xuKGZ1bmN0aW9uIChMb2dMZXZlbCkge1xuICAgIExvZ0xldmVsW1wiSU5GT1wiXSA9IFwiSU5GT1wiO1xuICAgIExvZ0xldmVsW1wiREVCVUdcIl0gPSBcIkRFQlVHXCI7XG4gICAgTG9nTGV2ZWxbXCJXQVJOXCJdID0gXCJXQVJOXCI7XG4gICAgTG9nTGV2ZWxbXCJFUlJPUlwiXSA9IFwiRVJST1JcIjtcbn0pKExvZ0xldmVsID0gZXhwb3J0cy5Mb2dMZXZlbCB8fCAoZXhwb3J0cy5Mb2dMZXZlbCA9IHt9KSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2Fzc2lnbiA9ICh0aGlzICYmIHRoaXMuX19hc3NpZ24pIHx8IGZ1bmN0aW9uICgpIHtcbiAgICBfX2Fzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24odCkge1xuICAgICAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgIHMgPSBhcmd1bWVudHNbaV07XG4gICAgICAgICAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpXG4gICAgICAgICAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHQ7XG4gICAgfTtcbiAgICByZXR1cm4gX19hc3NpZ24uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn07XG52YXIgX19hd2FpdGVyID0gKHRoaXMgJiYgdGhpcy5fX2F3YWl0ZXIpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICAgIH0pO1xufTtcbnZhciBfX2dlbmVyYXRvciA9ICh0aGlzICYmIHRoaXMuX19nZW5lcmF0b3IpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBib2R5KSB7XG4gICAgdmFyIF8gPSB7IGxhYmVsOiAwLCBzZW50OiBmdW5jdGlvbigpIHsgaWYgKHRbMF0gJiAxKSB0aHJvdyB0WzFdOyByZXR1cm4gdFsxXTsgfSwgdHJ5czogW10sIG9wczogW10gfSwgZiwgeSwgdCwgZztcbiAgICByZXR1cm4gZyA9IHsgbmV4dDogdmVyYigwKSwgXCJ0aHJvd1wiOiB2ZXJiKDEpLCBcInJldHVyblwiOiB2ZXJiKDIpIH0sIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiAoZ1tTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9KSwgZztcbiAgICBmdW5jdGlvbiB2ZXJiKG4pIHsgcmV0dXJuIGZ1bmN0aW9uICh2KSB7IHJldHVybiBzdGVwKFtuLCB2XSk7IH07IH1cbiAgICBmdW5jdGlvbiBzdGVwKG9wKSB7XG4gICAgICAgIGlmIChmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtcbiAgICAgICAgd2hpbGUgKF8pIHRyeSB7XG4gICAgICAgICAgICBpZiAoZiA9IDEsIHkgJiYgKHQgPSBvcFswXSAmIDIgPyB5W1wicmV0dXJuXCJdIDogb3BbMF0gPyB5W1widGhyb3dcIl0gfHwgKCh0ID0geVtcInJldHVyblwiXSkgJiYgdC5jYWxsKHkpLCAwKSA6IHkubmV4dCkgJiYgISh0ID0gdC5jYWxsKHksIG9wWzFdKSkuZG9uZSkgcmV0dXJuIHQ7XG4gICAgICAgICAgICBpZiAoeSA9IDAsIHQpIG9wID0gW29wWzBdICYgMiwgdC52YWx1ZV07XG4gICAgICAgICAgICBzd2l0Y2ggKG9wWzBdKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAwOiBjYXNlIDE6IHQgPSBvcDsgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSA0OiBfLmxhYmVsKys7IHJldHVybiB7IHZhbHVlOiBvcFsxXSwgZG9uZTogZmFsc2UgfTtcbiAgICAgICAgICAgICAgICBjYXNlIDU6IF8ubGFiZWwrKzsgeSA9IG9wWzFdOyBvcCA9IFswXTsgY29udGludWU7XG4gICAgICAgICAgICAgICAgY2FzZSA3OiBvcCA9IF8ub3BzLnBvcCgpOyBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIGlmICghKHQgPSBfLnRyeXMsIHQgPSB0Lmxlbmd0aCA+IDAgJiYgdFt0Lmxlbmd0aCAtIDFdKSAmJiAob3BbMF0gPT09IDYgfHwgb3BbMF0gPT09IDIpKSB7IF8gPSAwOyBjb250aW51ZTsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDMgJiYgKCF0IHx8IChvcFsxXSA+IHRbMF0gJiYgb3BbMV0gPCB0WzNdKSkpIHsgXy5sYWJlbCA9IG9wWzFdOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDYgJiYgXy5sYWJlbCA8IHRbMV0pIHsgXy5sYWJlbCA9IHRbMV07IHQgPSBvcDsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHQgJiYgXy5sYWJlbCA8IHRbMl0pIHsgXy5sYWJlbCA9IHRbMl07IF8ub3BzLnB1c2gob3ApOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodFsyXSkgXy5vcHMucG9wKCk7XG4gICAgICAgICAgICAgICAgICAgIF8udHJ5cy5wb3AoKTsgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvcCA9IGJvZHkuY2FsbCh0aGlzQXJnLCBfKTtcbiAgICAgICAgfSBjYXRjaCAoZSkgeyBvcCA9IFs2LCBlXTsgeSA9IDA7IH0gZmluYWxseSB7IGYgPSB0ID0gMDsgfVxuICAgICAgICBpZiAob3BbMF0gJiA1KSB0aHJvdyBvcFsxXTsgcmV0dXJuIHsgdmFsdWU6IG9wWzBdID8gb3BbMV0gOiB2b2lkIDAsIGRvbmU6IHRydWUgfTtcbiAgICB9XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIEVudW1zXzEgPSByZXF1aXJlKFwiLi9Db21tb24vRW51bXNcIik7XG52YXIgYXhpb3NfMSA9IHJlcXVpcmUoXCJheGlvc1wiKTtcbnZhciBCcm93c2VySW5mb18xID0gcmVxdWlyZShcIi4vVXRpbHMvQnJvd3NlckluZm9cIik7XG52YXIgQ29uc3RhbnRzXzEgPSByZXF1aXJlKFwiLi9Db21tb24vQ29uc3RhbnRzXCIpO1xudmFyIERldmljZUluZm9fMSA9IHJlcXVpcmUoXCIuL1V0aWxzL0RldmljZUluZm9cIik7XG52YXIgTG9jYWxlc18xID0gcmVxdWlyZShcIi4vQ29tbW9uL0xvY2FsZXNcIik7XG52YXIgTG9nZ2luZ1Nhbml0aXplcl8xID0gcmVxdWlyZShcIi4vVXRpbHMvTG9nZ2luZ1Nhbml0aXplclwiKTtcbnZhciBMb2dMZXZlbF8xID0gcmVxdWlyZShcIi4vTW9kZWwvTG9nTGV2ZWxcIik7XG52YXIgRW51bXNfMiA9IHJlcXVpcmUoXCIuL0NvbW1vbi9FbnVtc1wiKTtcbnZhciBPU0luZm9fMSA9IHJlcXVpcmUoXCIuL1V0aWxzL09TSW5mb1wiKTtcbnZhciBPbW5pY2hhbm5lbEVuZHBvaW50c18xID0gcmVxdWlyZShcIi4vQ29tbW9uL09tbmljaGFubmVsRW5kcG9pbnRzXCIpO1xudmFyIE9tbmljaGFubmVsSFRUUEhlYWRlcnNfMSA9IHJlcXVpcmUoXCIuL0NvbW1vbi9PbW5pY2hhbm5lbEhUVFBIZWFkZXJzXCIpO1xudmFyIFRpbWVyXzEgPSByZXF1aXJlKFwiLi9VdGlscy9UaW1lclwiKTtcbnZhciBheGlvc1JldHJ5XzEgPSByZXF1aXJlKFwiLi9VdGlscy9heGlvc1JldHJ5XCIpO1xudmFyIHV1aWRfMSA9IHJlcXVpcmUoXCIuL1V0aWxzL3V1aWRcIik7XG52YXIgU0RLID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIFNESyhvbW5pY2hhbm5lbENvbmZpZ3VyYXRpb24sIGNvbmZpZ3VyYXRpb24sIGxvZ2dlcikge1xuICAgICAgICBpZiAoY29uZmlndXJhdGlvbiA9PT0gdm9pZCAwKSB7IGNvbmZpZ3VyYXRpb24gPSBTREsuZGVmYXVsdENvbmZpZ3VyYXRpb247IH1cbiAgICAgICAgdGhpcy5vbW5pY2hhbm5lbENvbmZpZ3VyYXRpb24gPSBvbW5pY2hhbm5lbENvbmZpZ3VyYXRpb247XG4gICAgICAgIHRoaXMuY29uZmlndXJhdGlvbiA9IGNvbmZpZ3VyYXRpb247XG4gICAgICAgIHRoaXMubG9nZ2VyID0gbG9nZ2VyO1xuICAgICAgICAvLyBTZXRzIHRvIGRlZmF1bHQgY29uZmlndXJhdGlvbiBpZiBwYXNzZWQgY29uZmlndXJhdGlvbiBpcyBlbXB0eSBvciBpcyBub3QgYW4gb2JqZWN0XG4gICAgICAgIGlmICghT2JqZWN0LmtleXModGhpcy5jb25maWd1cmF0aW9uKS5sZW5ndGggfHwgdHlwZW9mIChjb25maWd1cmF0aW9uKSAhPT0gXCJvYmplY3RcIikge1xuICAgICAgICAgICAgdGhpcy5jb25maWd1cmF0aW9uID0gU0RLLmRlZmF1bHRDb25maWd1cmF0aW9uO1xuICAgICAgICB9XG4gICAgICAgIC8vIFZhbGlkYXRlIFNESyBjb25maWdcbiAgICAgICAgZm9yICh2YXIgX2kgPSAwLCBfYSA9IE9iamVjdC5rZXlzKFNESy5kZWZhdWx0Q29uZmlndXJhdGlvbik7IF9pIDwgX2EubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICB2YXIga2V5ID0gX2FbX2ldO1xuICAgICAgICAgICAgaWYgKCF0aGlzLmNvbmZpZ3VyYXRpb24uaGFzT3duUHJvcGVydHkoa2V5KSkgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXByb3RvdHlwZS1idWlsdGluc1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIk1pc3NpbmcgJ1wiICsga2V5ICsgXCInIGluIFNES0NvbmZpZ3VyYXRpb25cIik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gVmFsaWRhdGUgY2hhbm5lbElkXG4gICAgICAgIHZhciBjaGFubmVsSWQgPSBvbW5pY2hhbm5lbENvbmZpZ3VyYXRpb24uY2hhbm5lbElkO1xuICAgICAgICBpZiAoIU9iamVjdC52YWx1ZXMoRW51bXNfMS5DaGFubmVsSWQpLmluY2x1ZGVzKGNoYW5uZWxJZCkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgY2hhbm5lbElkXCIpO1xuICAgICAgICB9XG4gICAgICAgIC8vIFZhbGlkYXRlIE9DIGNvbmZpZ1xuICAgICAgICB2YXIgY3VycmVudE9tbmljaGFubmVsQ29uZmlndXJhdGlvblBhcmFtZXRlcnMgPSBPYmplY3Qua2V5cyhvbW5pY2hhbm5lbENvbmZpZ3VyYXRpb24pO1xuICAgICAgICBmb3IgKHZhciBfYiA9IDAsIF9jID0gQ29uc3RhbnRzXzEuZGVmYXVsdC5yZXF1aXJlZE9tbmljaGFubmVsQ29uZmlndXJhdGlvblBhcmFtZXRlcnM7IF9iIDwgX2MubGVuZ3RoOyBfYisrKSB7XG4gICAgICAgICAgICB2YXIga2V5ID0gX2NbX2JdO1xuICAgICAgICAgICAgaWYgKCFjdXJyZW50T21uaWNoYW5uZWxDb25maWd1cmF0aW9uUGFyYW1ldGVycy5pbmNsdWRlcyhrZXkpKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTWlzc2luZyAnXCIgKyBrZXkgKyBcIicgaW4gT21uaWNoYW5uZWxDb25maWd1cmF0aW9uXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMubGl2ZUNoYXRWZXJzaW9uID0gRW51bXNfMS5MaXZlQ2hhdFZlcnNpb24uVjE7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEZldGNoZXMgY2hhdCBjb25maWcuXG4gICAgICogQHBhcmFtIHJlcXVlc3RJZDogUmVxdWVzdElkIHRvIHVzZSB0byBnZXQgY2hhdCBjb25maWcgKE9wdGlvbmFsKS5cbiAgICAgKi9cbiAgICBTREsucHJvdG90eXBlLmdldENoYXRDb25maWcgPSBmdW5jdGlvbiAocmVxdWVzdElkLCBieXBhc3NDYWNoZSkge1xuICAgICAgICBpZiAoYnlwYXNzQ2FjaGUgPT09IHZvaWQgMCkgeyBieXBhc3NDYWNoZSA9IGZhbHNlOyB9XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciB0aW1lciwgZW5kcG9pbnQsIGF4aW9zSW5zdGFuY2UsIGhlYWRlcnMsIHJlc3BvbnNlLCBlbGFwc2VkVGltZUluTWlsbGlzZWNvbmRzLCBkYXRhO1xuICAgICAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAoX2EubGFiZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICAgICAgdGltZXIgPSBUaW1lcl8xLlRpbWVyLlRJTUVSKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5sb2dnZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvZ2dlci5sb2coTG9nTGV2ZWxfMS5Mb2dMZXZlbC5JTkZPLCBFbnVtc18yLk9DU0RLVGVsZW1ldHJ5RXZlbnQuR0VUQ0hBVENPTkZJRywgeyBSZXF1ZXN0SWQ6IHJlcXVlc3RJZCB9LCBcIkdldCBDaGF0IENvbmZpZyBTdGFydGVkXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFyZXF1ZXN0SWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0SWQgPSB1dWlkXzEudXVpZHY0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRwb2ludCA9IHRoaXMub21uaWNoYW5uZWxDb25maWd1cmF0aW9uLm9yZ1VybCArIFwiL1wiICsgT21uaWNoYW5uZWxFbmRwb2ludHNfMS5kZWZhdWx0LkxpdmVDaGF0Q29uZmlnUGF0aCArIFwiL1wiICsgdGhpcy5vbW5pY2hhbm5lbENvbmZpZ3VyYXRpb24ub3JnSWQgKyBcIi9cIiArIHRoaXMub21uaWNoYW5uZWxDb25maWd1cmF0aW9uLndpZGdldElkICsgXCI/cmVxdWVzdElkPVwiICsgcmVxdWVzdElkICsgXCImY2hhbm5lbElkPVwiICsgdGhpcy5vbW5pY2hhbm5lbENvbmZpZ3VyYXRpb24uY2hhbm5lbElkO1xuICAgICAgICAgICAgICAgICAgICAgICAgYXhpb3NJbnN0YW5jZSA9IGF4aW9zXzEuZGVmYXVsdC5jcmVhdGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGF4aW9zUmV0cnlfMS5kZWZhdWx0KGF4aW9zSW5zdGFuY2UsIHsgcmV0cmllczogdGhpcy5jb25maWd1cmF0aW9uLm1heFJlcXVlc3RSZXRyaWVzT25GYWlsdXJlIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVycyA9IHt9O1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJ5cGFzc0NhY2hlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVycyA9IF9fYXNzaWduKF9fYXNzaWduKHt9LCBDb25zdGFudHNfMS5kZWZhdWx0LmJ5cGFzc0NhY2hlSGVhZGVycyksIGhlYWRlcnMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFs0IC8qeWllbGQqLywgYXhpb3NJbnN0YW5jZS5nZXQoZW5kcG9pbnQsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyczogaGVhZGVycyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KV07XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gX2Euc2VudCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZWxhcHNlZFRpbWVJbk1pbGxpc2Vjb25kcyA9IHRpbWVyLm1pbGxpU2Vjb25kc0VsYXBzZWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhID0gcmVzcG9uc2UuZGF0YTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLkxpdmVDaGF0VmVyc2lvbiAmJiBkYXRhLkxpdmVDaGF0VmVyc2lvbiA9PT0gRW51bXNfMS5MaXZlQ2hhdFZlcnNpb24uVjIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxpdmVDaGF0VmVyc2lvbiA9IGRhdGEuTGl2ZUNoYXRWZXJzaW9uO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS5oZWFkZXJzID0ge307XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UuaGVhZGVycyAmJiByZXNwb25zZS5oZWFkZXJzW1wiZGF0ZVwiXSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEuaGVhZGVyc1tcImRhdGVcIl0gPSByZXNwb25zZS5oZWFkZXJzW1wiZGF0ZVwiXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmxvZ2dlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmxvZyhMb2dMZXZlbF8xLkxvZ0xldmVsLklORk8sIEVudW1zXzIuT0NTREtUZWxlbWV0cnlFdmVudC5HRVRDSEFUQ09ORklHU1VDQ0VTUywgeyBSZXF1ZXN0SWQ6IHJlcXVlc3RJZCwgUmVnaW9uOiByZXNwb25zZS5kYXRhLlJlZ2lvbiwgRWxhcHNlZFRpbWVJbk1pbGxpc2Vjb25kczogZWxhcHNlZFRpbWVJbk1pbGxpc2Vjb25kcywgVHJhbnNhY3Rpb25JZDogcmVzcG9uc2UuaGVhZGVyc1tcInRyYW5zYWN0aW9uLWlkXCJdIH0sIFwiR2V0IENoYXQgY29uZmlnIHN1Y2NlZWRlZFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovLCBkYXRhXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBGZXRjaGVzIExXSSBkZXRhaWxzLlxuICAgICAqIEBwYXJhbSByZXF1ZXN0SWQ6IFJlcXVlc3RJZCB0byB1c2UgdG8gZ2V0IGNoYXQgY29uZmlnIChPcHRpb25hbCkuXG4gICAgICogQHBhcmFtIGdldExXSURldGFpbHNPcHRpb25hbFBhcmFtczogT3B0aW9uYWwgcGFyYW1ldGVycyBmb3IgZ2V0IExXSSBEZXRhaWxzLlxuICAgICAqL1xuICAgIFNESy5wcm90b3R5cGUuZ2V0TFdJRGV0YWlscyA9IGZ1bmN0aW9uIChyZXF1ZXN0SWQsIGdldExXSURldGFpbHNPcHRpb25hbFBhcmFtcykge1xuICAgICAgICBpZiAoZ2V0TFdJRGV0YWlsc09wdGlvbmFsUGFyYW1zID09PSB2b2lkIDApIHsgZ2V0TFdJRGV0YWlsc09wdGlvbmFsUGFyYW1zID0ge307IH1cbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIHRpbWVyLCBlbmRwb2ludCwgYXhpb3NJbnN0YW5jZSwgYXV0aGVudGljYXRlZFVzZXJUb2tlbiwgcmVjb25uZWN0SWQsIGhlYWRlcnMsIG9wdGlvbnM7XG4gICAgICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgICAgIHRpbWVyID0gVGltZXJfMS5UaW1lci5USU1FUigpO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmxvZ2dlcikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmxvZ2dlci5sb2coTG9nTGV2ZWxfMS5Mb2dMZXZlbC5JTkZPLCBFbnVtc18yLk9DU0RLVGVsZW1ldHJ5RXZlbnQuR0VUTFdJU1RBVFVTU1RBUlRFRCwgeyBSZXF1ZXN0SWQ6IHJlcXVlc3RJZCB9LCBcIkdldCBMV0kgRGV0YWlscyBTdGFydGVkXCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoIXJlcXVlc3RJZCkge1xuICAgICAgICAgICAgICAgICAgICByZXF1ZXN0SWQgPSB1dWlkXzEudXVpZHY0KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVuZHBvaW50ID0gdGhpcy5vbW5pY2hhbm5lbENvbmZpZ3VyYXRpb24ub3JnVXJsICsgXCIvXCIgKyBPbW5pY2hhbm5lbEVuZHBvaW50c18xLmRlZmF1bHQuTGl2ZUNoYXRMaXZlV29ya0l0ZW1EZXRhaWxzUGF0aCArIFwiL1wiICsgdGhpcy5vbW5pY2hhbm5lbENvbmZpZ3VyYXRpb24ub3JnSWQgKyBcIi9cIiArIHRoaXMub21uaWNoYW5uZWxDb25maWd1cmF0aW9uLndpZGdldElkICsgXCIvXCIgKyByZXF1ZXN0SWQ7XG4gICAgICAgICAgICAgICAgYXhpb3NJbnN0YW5jZSA9IGF4aW9zXzEuZGVmYXVsdC5jcmVhdGUoKTtcbiAgICAgICAgICAgICAgICBheGlvc1JldHJ5XzEuZGVmYXVsdChheGlvc0luc3RhbmNlLCB7IHJldHJpZXM6IHRoaXMuY29uZmlndXJhdGlvbi5tYXhSZXF1ZXN0UmV0cmllc09uRmFpbHVyZSB9KTtcbiAgICAgICAgICAgICAgICBhdXRoZW50aWNhdGVkVXNlclRva2VuID0gZ2V0TFdJRGV0YWlsc09wdGlvbmFsUGFyYW1zLmF1dGhlbnRpY2F0ZWRVc2VyVG9rZW4sIHJlY29ubmVjdElkID0gZ2V0TFdJRGV0YWlsc09wdGlvbmFsUGFyYW1zLnJlY29ubmVjdElkO1xuICAgICAgICAgICAgICAgIGhlYWRlcnMgPSBDb25zdGFudHNfMS5kZWZhdWx0LmRlZmF1bHRIZWFkZXJzO1xuICAgICAgICAgICAgICAgIC8vIHVwZGF0ZWQgYXV0aCBlbmRwb2ludCBmb3IgYXV0aGVudGljYXRlZCBjaGF0cyBhbmQgYWRkIGF1dGggdG9rZW4gaW4gaGVhZGVyXG4gICAgICAgICAgICAgICAgaWYgKGF1dGhlbnRpY2F0ZWRVc2VyVG9rZW4pIHtcbiAgICAgICAgICAgICAgICAgICAgZW5kcG9pbnQgPSB0aGlzLm9tbmljaGFubmVsQ29uZmlndXJhdGlvbi5vcmdVcmwgKyBcIi9cIiArIE9tbmljaGFubmVsRW5kcG9pbnRzXzEuZGVmYXVsdC5MaXZlQ2hhdEF1dGhMaXZlV29ya0l0ZW1EZXRhaWxzUGF0aCArIFwiL1wiICsgdGhpcy5vbW5pY2hhbm5lbENvbmZpZ3VyYXRpb24ub3JnSWQgKyBcIi9cIiArIHRoaXMub21uaWNoYW5uZWxDb25maWd1cmF0aW9uLndpZGdldElkICsgXCIvXCIgKyByZXF1ZXN0SWQ7XG4gICAgICAgICAgICAgICAgICAgIGhlYWRlcnNbT21uaWNoYW5uZWxIVFRQSGVhZGVyc18xLmRlZmF1bHQuYXV0aGVudGljYXRlZFVzZXJUb2tlbl0gPSBhdXRoZW50aWNhdGVkVXNlclRva2VuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBBcHBlbmQgcmVjb25uZWN0IGlkIG9uIHRoZSBlbmRwb2ludCBpZiB2YWlsYWJsZVxuICAgICAgICAgICAgICAgIGlmIChyZWNvbm5lY3RJZCkge1xuICAgICAgICAgICAgICAgICAgICBlbmRwb2ludCArPSBcIi9cIiArIHJlY29ubmVjdElkO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbmRwb2ludCArPSBcIj9jaGFubmVsSWQ9XCIgKyB0aGlzLm9tbmljaGFubmVsQ29uZmlndXJhdGlvbi5jaGFubmVsSWQ7XG4gICAgICAgICAgICAgICAgb3B0aW9ucyA9IHtcbiAgICAgICAgICAgICAgICAgICAgaGVhZGVyczogaGVhZGVycyxcbiAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiBcIkdFVFwiLFxuICAgICAgICAgICAgICAgICAgICB1cmw6IGVuZHBvaW50XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qLywgbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgeyByZXR1cm4gX19hd2FpdGVyKF90aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlLCBlbGFwc2VkVGltZUluTWlsbGlzZWNvbmRzLCBkYXRhLCBlcnJvcl8xLCBlbGFwc2VkVGltZUluTWlsbGlzZWNvbmRzO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoX2EubGFiZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2EudHJ5cy5wdXNoKFswLCAyLCAsIDVdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbNCAvKnlpZWxkKi8sIGF4aW9zSW5zdGFuY2Uob3B0aW9ucyldO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZSA9IF9hLnNlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsYXBzZWRUaW1lSW5NaWxsaXNlY29uZHMgPSB0aW1lci5taWxsaVNlY29uZHNFbGFwc2VkO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSA9IHJlc3BvbnNlLmRhdGE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5sb2dnZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvZ2dlci5sb2coTG9nTGV2ZWxfMS5Mb2dMZXZlbC5JTkZPLCBFbnVtc18yLk9DU0RLVGVsZW1ldHJ5RXZlbnQuR0VUTFdJU1RBVFVTU1VDQ0VFREVELCB7IFJlcXVlc3RJZDogcmVxdWVzdElkLCBSZWdpb246IHJlc3BvbnNlLmRhdGEuUmVnaW9uLCBFbGFwc2VkVGltZUluTWlsbGlzZWNvbmRzOiBlbGFwc2VkVGltZUluTWlsbGlzZWNvbmRzLCBUcmFuc2FjdGlvbklkOiByZXNwb25zZS5oZWFkZXJzW1widHJhbnNhY3Rpb24taWRcIl0gfSwgXCJHZXQgTFdJIERldGFpbHMgc3VjY2VlZGVkXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShkYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMyAvKmJyZWFrKi8sIDVdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcl8xID0gX2Euc2VudCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxhcHNlZFRpbWVJbk1pbGxpc2Vjb25kcyA9IHRpbWVyLm1pbGxpU2Vjb25kc0VsYXBzZWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMubG9nZ2VyKSByZXR1cm4gWzMgLypicmVhayovLCA0XTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbNCAvKnlpZWxkKi8sIExvZ2dpbmdTYW5pdGl6ZXJfMS5Mb2dnaW5nU2FuaXRpemVyLnN0cmlwRXJyb3JTZW5zaXRpdmVQcm9wZXJ0aWVzKGVycm9yXzEpXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2Euc2VudCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2dnZXIubG9nKExvZ0xldmVsXzEuTG9nTGV2ZWwuRVJST1IsIEVudW1zXzIuT0NTREtUZWxlbWV0cnlFdmVudC5HRVRMV0lTVEFUVVNGQUlMRUQsIHsgUmVxdWVzdElkOiByZXF1ZXN0SWQsIEV4Y2VwdGlvbkRldGFpbHM6IGVycm9yXzEsIEVsYXBzZWRUaW1lSW5NaWxsaXNlY29uZHM6IGVsYXBzZWRUaW1lSW5NaWxsaXNlY29uZHMgfSwgXCJHZXQgTFdJIERldGFpbHMgZmFpbGVkXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2EubGFiZWwgPSA0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWplY3QoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMyAvKmJyZWFrKi8sIDVdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDU6IHJldHVybiBbMiAvKnJldHVybiovXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfSk7IH0pXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEZldGNoZXMgdGhlIGNoYXQgdG9rZW4gZnJvbSBPbW5pY2hhbm5lbCB0byBqb2luIFQxIHRocmVhZC5cbiAgICAgKiBAcGFyYW0gcmVxdWVzdElkOiBSZXF1ZXN0SWQgdG8gdXNlIGZvciBnZXRjaGF0dG9rZW4gKE9wdGlvbmFsKS5cbiAgICAgKiBAcGFyYW0gZ2V0Q2hhdFRva2VuT3B0aW9uYWxQYXJhbXM6IE9wdGlvbmFsIHBhcmFtZXRlcnMgZm9yIGdldCBjaGF0IHRva2VuLlxuICAgICAqL1xuICAgIFNESy5wcm90b3R5cGUuZ2V0Q2hhdFRva2VuID0gZnVuY3Rpb24gKHJlcXVlc3RJZCwgZ2V0Q2hhdFRva2VuT3B0aW9uYWxQYXJhbXMsIGN1cnJlbnRSZXRyeUNvdW50KSB7XG4gICAgICAgIGlmIChnZXRDaGF0VG9rZW5PcHRpb25hbFBhcmFtcyA9PT0gdm9pZCAwKSB7IGdldENoYXRUb2tlbk9wdGlvbmFsUGFyYW1zID0ge307IH1cbiAgICAgICAgaWYgKGN1cnJlbnRSZXRyeUNvdW50ID09PSB2b2lkIDApIHsgY3VycmVudFJldHJ5Q291bnQgPSAwOyB9XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciB0aW1lciwgcmVjb25uZWN0SWQsIGF1dGhlbnRpY2F0ZWRVc2VyVG9rZW4sIGN1cnJlbnRMaXZlQ2hhdFZlcnNpb24sIGhlYWRlcnMsIGVuZHBvaW50LCBvcHRpb25zLCBheGlvc0luc3RhbmNlO1xuICAgICAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgICAgICB0aW1lciA9IFRpbWVyXzEuVGltZXIuVElNRVIoKTtcbiAgICAgICAgICAgICAgICByZWNvbm5lY3RJZCA9IGdldENoYXRUb2tlbk9wdGlvbmFsUGFyYW1zLnJlY29ubmVjdElkLCBhdXRoZW50aWNhdGVkVXNlclRva2VuID0gZ2V0Q2hhdFRva2VuT3B0aW9uYWxQYXJhbXMuYXV0aGVudGljYXRlZFVzZXJUb2tlbiwgY3VycmVudExpdmVDaGF0VmVyc2lvbiA9IGdldENoYXRUb2tlbk9wdGlvbmFsUGFyYW1zLmN1cnJlbnRMaXZlQ2hhdFZlcnNpb247XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubG9nZ2VyKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmxvZyhMb2dMZXZlbF8xLkxvZ0xldmVsLklORk8sIEVudW1zXzIuT0NTREtUZWxlbWV0cnlFdmVudC5HRVRDSEFUVE9LRU5TVEFSVEVELCB7IFJlcXVlc3RJZDogcmVxdWVzdElkIH0sIFwiR2V0IENoYXQgVG9rZW4gU3RhcnRlZFwiKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRSZXRyeUNvdW50IDwgMCkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGN1cnJlbnRSZXRyeUNvdW50XCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoIXJlcXVlc3RJZCkge1xuICAgICAgICAgICAgICAgICAgICByZXF1ZXN0SWQgPSB1dWlkXzEudXVpZHY0KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGhlYWRlcnMgPSBDb25zdGFudHNfMS5kZWZhdWx0LmRlZmF1bHRIZWFkZXJzO1xuICAgICAgICAgICAgICAgIGVuZHBvaW50ID0gdGhpcy5vbW5pY2hhbm5lbENvbmZpZ3VyYXRpb24ub3JnVXJsICsgXCIvXCIgKyBPbW5pY2hhbm5lbEVuZHBvaW50c18xLmRlZmF1bHQuTGl2ZUNoYXRHZXRDaGF0VG9rZW5QYXRoICsgXCIvXCIgKyB0aGlzLm9tbmljaGFubmVsQ29uZmlndXJhdGlvbi5vcmdJZCArIFwiL1wiICsgdGhpcy5vbW5pY2hhbm5lbENvbmZpZ3VyYXRpb24ud2lkZ2V0SWQgKyBcIi9cIiArIHJlcXVlc3RJZDtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5saXZlQ2hhdFZlcnNpb24gPT09IEVudW1zXzEuTGl2ZUNoYXRWZXJzaW9uLlYyIHx8IChjdXJyZW50TGl2ZUNoYXRWZXJzaW9uICYmIGN1cnJlbnRMaXZlQ2hhdFZlcnNpb24gPT09IEVudW1zXzEuTGl2ZUNoYXRWZXJzaW9uLlYyKSkge1xuICAgICAgICAgICAgICAgICAgICBlbmRwb2ludCA9IHRoaXMub21uaWNoYW5uZWxDb25maWd1cmF0aW9uLm9yZ1VybCArIFwiL1wiICsgT21uaWNoYW5uZWxFbmRwb2ludHNfMS5kZWZhdWx0LkxpdmVDaGF0djJHZXRDaGF0VG9rZW5QYXRoICsgXCIvXCIgKyB0aGlzLm9tbmljaGFubmVsQ29uZmlndXJhdGlvbi5vcmdJZCArIFwiL1wiICsgdGhpcy5vbW5pY2hhbm5lbENvbmZpZ3VyYXRpb24ud2lkZ2V0SWQgKyBcIi9cIiArIHJlcXVlc3RJZDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGF1dGhlbnRpY2F0ZWRVc2VyVG9rZW4pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZHBvaW50ID0gdGhpcy5vbW5pY2hhbm5lbENvbmZpZ3VyYXRpb24ub3JnVXJsICsgXCIvXCIgKyBPbW5pY2hhbm5lbEVuZHBvaW50c18xLmRlZmF1bHQuTGl2ZUNoYXR2MkF1dGhHZXRDaGF0VG9rZW5QYXRoICsgXCIvXCIgKyB0aGlzLm9tbmljaGFubmVsQ29uZmlndXJhdGlvbi5vcmdJZCArIFwiL1wiICsgdGhpcy5vbW5pY2hhbm5lbENvbmZpZ3VyYXRpb24ud2lkZ2V0SWQgKyBcIi9cIiArIHJlcXVlc3RJZDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnNbT21uaWNoYW5uZWxIVFRQSGVhZGVyc18xLmRlZmF1bHQuYXV0aGVudGljYXRlZFVzZXJUb2tlbl0gPSBhdXRoZW50aWNhdGVkVXNlclRva2VuO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpZiAoYXV0aGVudGljYXRlZFVzZXJUb2tlbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kcG9pbnQgPSB0aGlzLm9tbmljaGFubmVsQ29uZmlndXJhdGlvbi5vcmdVcmwgKyBcIi9cIiArIE9tbmljaGFubmVsRW5kcG9pbnRzXzEuZGVmYXVsdC5MaXZlQ2hhdEF1dGhHZXRDaGF0VG9rZW5QYXRoICsgXCIvXCIgKyB0aGlzLm9tbmljaGFubmVsQ29uZmlndXJhdGlvbi5vcmdJZCArIFwiL1wiICsgdGhpcy5vbW5pY2hhbm5lbENvbmZpZ3VyYXRpb24ud2lkZ2V0SWQgKyBcIi9cIiArIHJlcXVlc3RJZDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnNbT21uaWNoYW5uZWxIVFRQSGVhZGVyc18xLmRlZmF1bHQuYXV0aGVudGljYXRlZFVzZXJUb2tlbl0gPSBhdXRoZW50aWNhdGVkVXNlclRva2VuO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChyZWNvbm5lY3RJZCkge1xuICAgICAgICAgICAgICAgICAgICBlbmRwb2ludCArPSBcIi9cIiArIHJlY29ubmVjdElkO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbmRwb2ludCArPSBcIj9jaGFubmVsSWQ9XCIgKyB0aGlzLm9tbmljaGFubmVsQ29uZmlndXJhdGlvbi5jaGFubmVsSWQ7XG4gICAgICAgICAgICAgICAgb3B0aW9ucyA9IHtcbiAgICAgICAgICAgICAgICAgICAgaGVhZGVyczogaGVhZGVycyxcbiAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiBcIkdFVFwiLFxuICAgICAgICAgICAgICAgICAgICB1cmw6IGVuZHBvaW50XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBheGlvc0luc3RhbmNlID0gYXhpb3NfMS5kZWZhdWx0LmNyZWF0ZSgpO1xuICAgICAgICAgICAgICAgIGF4aW9zUmV0cnlfMS5kZWZhdWx0KGF4aW9zSW5zdGFuY2UsIHsgcmV0cmllczogdGhpcy5jb25maWd1cmF0aW9uLm1heFJlcXVlc3RSZXRyaWVzT25GYWlsdXJlIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovLCBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7IHJldHVybiBfX2F3YWl0ZXIoX3RoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UsIGVsYXBzZWRUaW1lSW5NaWxsaXNlY29uZHMsIGRhdGEsIGVycm9yXzIsIGVsYXBzZWRUaW1lSW5NaWxsaXNlY29uZHM7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoX2EubGFiZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2EudHJ5cy5wdXNoKFswLCAyLCAsIDVdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbNCAvKnlpZWxkKi8sIGF4aW9zSW5zdGFuY2Uob3B0aW9ucyldO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZSA9IF9hLnNlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsYXBzZWRUaW1lSW5NaWxsaXNlY29uZHMgPSB0aW1lci5taWxsaVNlY29uZHNFbGFwc2VkO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSA9IHJlc3BvbnNlLmRhdGE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSZXNvbHZlcyBvbmx5IGlmIGl0IGNvbnRhaW5zIGNoYXQgdG9rZW4gcmVzcG9uc2Ugd2hpY2ggb25seSBoYXBwZW5zIG9uIHN0YXR1cyAyMDBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkYXRhKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS5yZXF1ZXN0SWQgPSByZXF1ZXN0SWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubG9nZ2VyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmxvZyhMb2dMZXZlbF8xLkxvZ0xldmVsLklORk8sIEVudW1zXzIuT0NTREtUZWxlbWV0cnlFdmVudC5HRVRDSEFUVE9LRU5TVUNDRUVERUQsIHsgUmVxdWVzdElkOiByZXF1ZXN0SWQsIFJlZ2lvbjogcmVzcG9uc2UuZGF0YS5SZWdpb24sIEVsYXBzZWRUaW1lSW5NaWxsaXNlY29uZHM6IGVsYXBzZWRUaW1lSW5NaWxsaXNlY29uZHMsIFRyYW5zYWN0aW9uSWQ6IHJlc3BvbnNlLmhlYWRlcnNbXCJ0cmFuc2FjdGlvbi1pZFwiXSB9LCBcIkdldCBDaGF0IFRva2VuIFN1Y2NlZWRlZFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShkYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qL107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBObyBjb250ZW50IGZvciByZWNvbm5lY3QgY2hhdCBjYXNlIHNob3VsZG4ndCBiZSByZXRyaWVkLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlY29ubmVjdElkICYmIHJlc3BvbnNlLnN0YXR1cyA9PT0gQ29uc3RhbnRzXzEuZGVmYXVsdC5ub0NvbnRlbnRTdGF0dXNDb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KHJlc3BvbnNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qL107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzMgLypicmVhayovLCA1XTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JfMiA9IF9hLnNlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsYXBzZWRUaW1lSW5NaWxsaXNlY29uZHMgPSB0aW1lci5taWxsaVNlY29uZHNFbGFwc2VkO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLmxvZ2dlcikgcmV0dXJuIFszIC8qYnJlYWsqLywgNF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzQgLyp5aWVsZCovLCBMb2dnaW5nU2FuaXRpemVyXzEuTG9nZ2luZ1Nhbml0aXplci5zdHJpcEVycm9yU2Vuc2l0aXZlUHJvcGVydGllcyhlcnJvcl8yKV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9hLnNlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmxvZyhMb2dMZXZlbF8xLkxvZ0xldmVsLkVSUk9SLCBFbnVtc18yLk9DU0RLVGVsZW1ldHJ5RXZlbnQuR0VUQ0hBVFRPS0VORkFJTEVELCB7IFJlcXVlc3RJZDogcmVxdWVzdElkLCBFeGNlcHRpb25EZXRhaWxzOiBlcnJvcl8yLCBFbGFwc2VkVGltZUluTWlsbGlzZWNvbmRzOiBlbGFwc2VkVGltZUluTWlsbGlzZWNvbmRzIH0sIFwiR2V0IENoYXQgVG9rZW4gRmFpbGVkXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2EubGFiZWwgPSA0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWplY3QoZXJyb3JfMik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qL107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEJhc2UgY2FzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRSZXRyeUNvdW50ICsgMSA+PSB0aGlzLmNvbmZpZ3VyYXRpb24uZ2V0Q2hhdFRva2VuUmV0cnlDb3VudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChuZXcgRXJyb3IoXCJUaGUgcmV0cnkgZm9yIGdldGNoYXR0b2tlbiBoYXMgZXhjZWVkZWQgaXRzIG1heCB2YWx1ZSBvZiBcIiArIHRoaXMuY29uZmlndXJhdGlvbi5nZXRDaGF0VG9rZW5SZXRyeUNvdW50KSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi9dO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmV0cmllcyB1bnRpbCBpdCByZWFjaGVzIGl0cyBsaW1pdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3RoaXMuZ2V0Q2hhdFRva2VuKHJlcXVlc3RJZCwgZ2V0Q2hhdFRva2VuT3B0aW9uYWxQYXJhbXMsIGN1cnJlbnRSZXRyeUNvdW50ICsgMSkudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHsgcmV0dXJuIHJlc29sdmUocmVzcG9uc2UpOyB9KS5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHsgcmV0dXJuIHJlamVjdChlcnJvcik7IH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgdGhpcy5jb25maWd1cmF0aW9uLmdldENoYXRUb2tlblRpbWVCZXR3ZWVuUmV0cmllc09uRmFpbHVyZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qL107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH0pOyB9KV07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBGZXRjaGVzIHRoZSByZWNvbm5lY3RhYmxlIGNoYXRzIGZyb20gb21uaWNoYW5uZWwgZnJvbSB0aGUgZ2l2ZW4gdXNlciBpbmZvcm1hdGlvbiBpbiBKV1QgdG9rZW4oY2xhaW0gbmFtZTogc3ViKS5cbiAgICAgKiBAcGFyYW0gcmVjb25uZWN0YWJsZUNoYXRzUGFyYW1zIE1hbmRhdGUgcGFyYW1ldGVycyBmb3IgZ2V0IHJlY29ubmVjdGFibGUgY2hhdHMuXG4gICAgICovXG4gICAgU0RLLnByb3RvdHlwZS5nZXRSZWNvbm5lY3RhYmxlQ2hhdHMgPSBmdW5jdGlvbiAocmVjb25uZWN0YWJsZUNoYXRzUGFyYW1zKSB7XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciB0aW1lciwgYXV0aGVudGljYXRlZFVzZXJUb2tlbiwgZW5kcG9pbnQsIGhlYWRlcnMsIG9wdGlvbnMsIGF4aW9zSW5zdGFuY2U7XG4gICAgICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgICAgIHRpbWVyID0gVGltZXJfMS5UaW1lci5USU1FUigpO1xuICAgICAgICAgICAgICAgIGF1dGhlbnRpY2F0ZWRVc2VyVG9rZW4gPSByZWNvbm5lY3RhYmxlQ2hhdHNQYXJhbXMuYXV0aGVudGljYXRlZFVzZXJUb2tlbjtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5sb2dnZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2dnZXIubG9nKExvZ0xldmVsXzEuTG9nTGV2ZWwuSU5GTywgRW51bXNfMi5PQ1NES1RlbGVtZXRyeUV2ZW50LkdFVFJFQ09OTkVDVEFCTEVDSEFUUywgXCJHZXQgUmVjb25uZWN0YWJsZSBjaGF0IFN0YXJ0ZWRcIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVuZHBvaW50ID0gdGhpcy5vbW5pY2hhbm5lbENvbmZpZ3VyYXRpb24ub3JnVXJsICsgXCIvXCIgKyBPbW5pY2hhbm5lbEVuZHBvaW50c18xLmRlZmF1bHQuTGl2ZUNoYXRHZXRSZWNvbm5lY3RhYmxlQ2hhdHNQYXRoICsgXCIvXCIgKyB0aGlzLm9tbmljaGFubmVsQ29uZmlndXJhdGlvbi5vcmdJZCArIFwiL1wiICsgdGhpcy5vbW5pY2hhbm5lbENvbmZpZ3VyYXRpb24ud2lkZ2V0SWQgKyBcIi9cIiArIHRoaXMub21uaWNoYW5uZWxDb25maWd1cmF0aW9uLm9yZ0lkICsgXCI/Y2hhbm5lbElkPVwiICsgdGhpcy5vbW5pY2hhbm5lbENvbmZpZ3VyYXRpb24uY2hhbm5lbElkO1xuICAgICAgICAgICAgICAgIGhlYWRlcnMgPSBDb25zdGFudHNfMS5kZWZhdWx0LmRlZmF1bHRIZWFkZXJzO1xuICAgICAgICAgICAgICAgIGhlYWRlcnNbT21uaWNoYW5uZWxIVFRQSGVhZGVyc18xLmRlZmF1bHQuYXV0aGVudGljYXRlZFVzZXJUb2tlbl0gPSBhdXRoZW50aWNhdGVkVXNlclRva2VuO1xuICAgICAgICAgICAgICAgIG9wdGlvbnMgPSB7XG4gICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IGhlYWRlcnMsXG4gICAgICAgICAgICAgICAgICAgIG1ldGhvZDogXCJHRVRcIixcbiAgICAgICAgICAgICAgICAgICAgdXJsOiBlbmRwb2ludFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgYXhpb3NJbnN0YW5jZSA9IGF4aW9zXzEuZGVmYXVsdC5jcmVhdGUoKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qLywgbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgeyByZXR1cm4gX19hd2FpdGVyKF90aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlLCBlbGFwc2VkVGltZUluTWlsbGlzZWNvbmRzLCBkYXRhLCBlcnJvcl8zLCBlbGFwc2VkVGltZUluTWlsbGlzZWNvbmRzO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoX2EubGFiZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2EudHJ5cy5wdXNoKFswLCAyLCAsIDVdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbNCAvKnlpZWxkKi8sIGF4aW9zSW5zdGFuY2Uob3B0aW9ucyldO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZSA9IF9hLnNlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsYXBzZWRUaW1lSW5NaWxsaXNlY29uZHMgPSB0aW1lci5taWxsaVNlY29uZHNFbGFwc2VkO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSA9IHJlc3BvbnNlLmRhdGE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSZXNvbHZlcyBvbmx5IGlmIGl0IGNvbnRhaW5zIHJlY29ubmVjdGFibGUgY2hhdHMgcmVzcG9uc2Ugd2hpY2ggb25seSBoYXBwZW5zIG9uIHN0YXR1cyAyMDBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkYXRhKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubG9nZ2VyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmxvZyhMb2dMZXZlbF8xLkxvZ0xldmVsLklORk8sIEVudW1zXzIuT0NTREtUZWxlbWV0cnlFdmVudC5HRVRSRUNPTk5FQ1RBQkxFQ0hBVFMsIHsgUmVnaW9uOiByZXNwb25zZS5kYXRhLlJlZ2lvbiwgRWxhcHNlZFRpbWVJbk1pbGxpc2Vjb25kczogZWxhcHNlZFRpbWVJbk1pbGxpc2Vjb25kcywgVHJhbnNhY3Rpb25JZDogcmVzcG9uc2UuaGVhZGVyc1tDb25zdGFudHNfMS5kZWZhdWx0LnRyYW5zYWN0aW9uaWRdIH0sIFwiR2V0IFJlY29ubmVjdGFibGUgQ2hhdHMgU3VjY2VlZGVkIGFuZCBvbGQgc2Vzc2lvbiByZXR1cm5lZFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShkYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qL107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBObyBkYXRhIGZvdW5kIGluIHRoZSBvbGQgc2Vzc2lvbnMgc28gcmV0dXJuaW5nIG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JfMyA9IF9hLnNlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsYXBzZWRUaW1lSW5NaWxsaXNlY29uZHMgPSB0aW1lci5taWxsaVNlY29uZHNFbGFwc2VkO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLmxvZ2dlcikgcmV0dXJuIFszIC8qYnJlYWsqLywgNF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzQgLyp5aWVsZCovLCBMb2dnaW5nU2FuaXRpemVyXzEuTG9nZ2luZ1Nhbml0aXplci5zdHJpcEVycm9yU2Vuc2l0aXZlUHJvcGVydGllcyhlcnJvcl8zKV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9hLnNlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmxvZyhMb2dMZXZlbF8xLkxvZ0xldmVsLkVSUk9SLCBFbnVtc18yLk9DU0RLVGVsZW1ldHJ5RXZlbnQuR0VUUkVDT05ORUNUQUJMRUNIQVRTLCB7IEV4Y2VwdGlvbkRldGFpbHM6IGVycm9yXzMsIEVsYXBzZWRUaW1lSW5NaWxsaXNlY29uZHM6IGVsYXBzZWRUaW1lSW5NaWxsaXNlY29uZHMgfSwgXCJHZXQgUmVjb25uZWN0YWJsZSBDaGF0cyBGYWlsZWRcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYS5sYWJlbCA9IDQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChlcnJvcl8zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA1OiByZXR1cm4gWzIgLypyZXR1cm4qL107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH0pOyB9KV07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICAvKipcbiAgICogRmV0Y2hlcyB0aGUgcmVjb25uZWN0YWJsZSBjaGF0cyBmcm9tIG9tbmljaGFubmVsIGZyb20gdGhlIGdpdmVuIHVzZXIgaW5mb3JtYXRpb24gaW4gSldUIHRva2VuKGNsYWltIG5hbWU6IHN1YikuXG4gICAqIEBwYXJhbSByZWNvbm5lY3RhYmxlQ2hhdHNQYXJhbXMgTWFuZGF0ZSBwYXJhbWV0ZXJzIGZvciBnZXQgcmVjb25uZWN0YWJsZSBjaGF0cy5cbiAgICovXG4gICAgU0RLLnByb3RvdHlwZS5nZXRSZWNvbm5lY3RBdmFpbGFiaWxpdHkgPSBmdW5jdGlvbiAocmVjb25uZWN0SWQpIHtcbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIHRpbWVyLCBlbmRwb2ludCwgaGVhZGVycywgb3B0aW9ucywgYXhpb3NJbnN0YW5jZTtcbiAgICAgICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IodGhpcywgZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgICAgICAgICAgdGltZXIgPSBUaW1lcl8xLlRpbWVyLlRJTUVSKCk7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubG9nZ2VyKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmxvZyhMb2dMZXZlbF8xLkxvZ0xldmVsLklORk8sIEVudW1zXzIuT0NTREtUZWxlbWV0cnlFdmVudC5HRVRSRUNPTk5FQ1RBVkFJTEFCSUxJVFksIFwiR2V0IFJlY29ubmVjdCBhdmFpbGFiaWxpdHkgc3RhcnRlZFwiKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZW5kcG9pbnQgPSB0aGlzLm9tbmljaGFubmVsQ29uZmlndXJhdGlvbi5vcmdVcmwgKyBcIi9cIiArIE9tbmljaGFubmVsRW5kcG9pbnRzXzEuZGVmYXVsdC5MaXZlQ2hhdFJlY29ubmVjdEF2YWlsYWJpbGl0eVBhdGggKyBcIi9cIiArIHRoaXMub21uaWNoYW5uZWxDb25maWd1cmF0aW9uLm9yZ0lkICsgXCIvXCIgKyB0aGlzLm9tbmljaGFubmVsQ29uZmlndXJhdGlvbi53aWRnZXRJZCArIFwiL1wiICsgcmVjb25uZWN0SWQ7XG4gICAgICAgICAgICAgICAgaGVhZGVycyA9IENvbnN0YW50c18xLmRlZmF1bHQuZGVmYXVsdEhlYWRlcnM7XG4gICAgICAgICAgICAgICAgb3B0aW9ucyA9IHtcbiAgICAgICAgICAgICAgICAgICAgaGVhZGVyczogaGVhZGVycyxcbiAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiBcIkdFVFwiLFxuICAgICAgICAgICAgICAgICAgICB1cmw6IGVuZHBvaW50XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBheGlvc0luc3RhbmNlID0gYXhpb3NfMS5kZWZhdWx0LmNyZWF0ZSgpO1xuICAgICAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovLCBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7IHJldHVybiBfX2F3YWl0ZXIoX3RoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UsIGVsYXBzZWRUaW1lSW5NaWxsaXNlY29uZHMsIGRhdGEsIGVycm9yXzQsIGVsYXBzZWRUaW1lSW5NaWxsaXNlY29uZHM7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IodGhpcywgZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChfYS5sYWJlbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYS50cnlzLnB1c2goWzAsIDIsICwgNV0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFs0IC8qeWllbGQqLywgYXhpb3NJbnN0YW5jZShvcHRpb25zKV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gX2Euc2VudCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxhcHNlZFRpbWVJbk1pbGxpc2Vjb25kcyA9IHRpbWVyLm1pbGxpU2Vjb25kc0VsYXBzZWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhID0gcmVzcG9uc2UuZGF0YTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkYXRhKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubG9nZ2VyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmxvZyhMb2dMZXZlbF8xLkxvZ0xldmVsLklORk8sIEVudW1zXzIuT0NTREtUZWxlbWV0cnlFdmVudC5HRVRSRUNPTk5FQ1RBVkFJTEFCSUxJVFksIHsgUmVnaW9uOiByZXNwb25zZS5kYXRhLlJlZ2lvbiwgRWxhcHNlZFRpbWVJbk1pbGxpc2Vjb25kczogZWxhcHNlZFRpbWVJbk1pbGxpc2Vjb25kcywgVHJhbnNhY3Rpb25JZDogcmVzcG9uc2UuaGVhZGVyc1tDb25zdGFudHNfMS5kZWZhdWx0LnRyYW5zYWN0aW9uaWRdIH0sIFwiR2V0IFJlY29ubmVjdCBhdmFpbGFiaWxpdHkgU3VjY2VlZGVkXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKGRhdGEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5vIGRhdGEgZm91bmQgc28gcmV0dXJuaW5nIG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmxvZ2dlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmxvZyhMb2dMZXZlbF8xLkxvZ0xldmVsLldBUk4sIEVudW1zXzIuT0NTREtUZWxlbWV0cnlFdmVudC5HRVRSRUNPTk5FQ1RBVkFJTEFCSUxJVFksIHsgUmVnaW9uOiByZXNwb25zZS5kYXRhLlJlZ2lvbiwgRWxhcHNlZFRpbWVJbk1pbGxpc2Vjb25kczogZWxhcHNlZFRpbWVJbk1pbGxpc2Vjb25kcywgVHJhbnNhY3Rpb25JZDogcmVzcG9uc2UuaGVhZGVyc1tDb25zdGFudHNfMS5kZWZhdWx0LnRyYW5zYWN0aW9uaWRdIH0sIFwiR2V0IFJlY29ubmVjdCBhdmFpbGFiaWxpdHkgZGlkbid0IHNlbmQgYW55IHZhbGlkIGRhdGEuXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi9dO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcl80ID0gX2Euc2VudCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxhcHNlZFRpbWVJbk1pbGxpc2Vjb25kcyA9IHRpbWVyLm1pbGxpU2Vjb25kc0VsYXBzZWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMubG9nZ2VyKSByZXR1cm4gWzMgLypicmVhayovLCA0XTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbNCAvKnlpZWxkKi8sIExvZ2dpbmdTYW5pdGl6ZXJfMS5Mb2dnaW5nU2FuaXRpemVyLnN0cmlwRXJyb3JTZW5zaXRpdmVQcm9wZXJ0aWVzKGVycm9yXzQpXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2Euc2VudCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2dnZXIubG9nKExvZ0xldmVsXzEuTG9nTGV2ZWwuRVJST1IsIEVudW1zXzIuT0NTREtUZWxlbWV0cnlFdmVudC5HRVRSRUNPTk5FQ1RBVkFJTEFCSUxJVFksIHsgRXhjZXB0aW9uRGV0YWlsczogZXJyb3JfNCwgRWxhcHNlZFRpbWVJbk1pbGxpc2Vjb25kczogZWxhcHNlZFRpbWVJbk1pbGxpc2Vjb25kcyB9LCBcIkdldCBSZWNvbm5lY3QgQXZhaWxhYmlsaXR5IEZhaWxlZFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9hLmxhYmVsID0gNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGVycm9yXzQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi9dO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDU6IHJldHVybiBbMiAvKnJldHVybiovXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfSk7IH0pXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqXG4gICAgICogQHBhcmFtIHJlcXVlc3RJZDogUmVxdWVzdElkIHRvIHVzZSBmb3Igc2Vzc2lvbiBpbml0LlxuICAgICAqIEBwYXJhbSBxdWV1ZUF2YWlsYWJpbGl0eU9wdGlvbmFsUGFyYW1zOiBPcHRpb25hbCBwYXJhbWV0ZXJzIGZvciBzZXNzaW9uIGluaXQuXG4gICAgICovXG4gICAgU0RLLnByb3RvdHlwZS5nZXRRdWV1ZUF2YWlsYWJpbGl0eSA9IGZ1bmN0aW9uIChyZXF1ZXN0SWQsIHF1ZXVlQXZhaWxhYmlsaXR5T3B0aW9uYWxQYXJhbXMpIHtcbiAgICAgICAgaWYgKHF1ZXVlQXZhaWxhYmlsaXR5T3B0aW9uYWxQYXJhbXMgPT09IHZvaWQgMCkgeyBxdWV1ZUF2YWlsYWJpbGl0eU9wdGlvbmFsUGFyYW1zID0ge307IH1cbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIHRpbWVyLCBlbmRwb2ludCwgYXhpb3NJbnN0YW5jZSwgYXV0aGVudGljYXRlZFVzZXJUb2tlbiwgaW5pdENvbnRleHQsIGdldENvbnRleHQsIGhlYWRlcnMsIGRhdGEsIG9wdGlvbnM7XG4gICAgICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgICAgIHRpbWVyID0gVGltZXJfMS5UaW1lci5USU1FUigpO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmxvZ2dlcikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmxvZ2dlci5sb2coTG9nTGV2ZWxfMS5Mb2dMZXZlbC5JTkZPLCBFbnVtc18yLk9DU0RLVGVsZW1ldHJ5RXZlbnQuR0VUUVVFVUVBVkFJTEFCSUxJVFlTVEFSVEVELCB7IFJlcXVlc3RJZDogcmVxdWVzdElkIH0sIFwiR2V0IHF1ZXVlIGF2YWlsYWJpbGl0eSBzdGFydGVkXCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbmRwb2ludCA9IHRoaXMub21uaWNoYW5uZWxDb25maWd1cmF0aW9uLm9yZ1VybCArIFwiL1wiICsgT21uaWNoYW5uZWxFbmRwb2ludHNfMS5kZWZhdWx0LkdldFF1ZXVlQXZhaWxhYmlsaXR5UGF0aCArIFwiL1wiICsgdGhpcy5vbW5pY2hhbm5lbENvbmZpZ3VyYXRpb24ub3JnSWQgKyBcIi9cIiArIHRoaXMub21uaWNoYW5uZWxDb25maWd1cmF0aW9uLndpZGdldElkICsgXCIvXCIgKyByZXF1ZXN0SWQgKyBcIj9jaGFubmVsSWQ9bGN3XCI7XG4gICAgICAgICAgICAgICAgYXhpb3NJbnN0YW5jZSA9IGF4aW9zXzEuZGVmYXVsdC5jcmVhdGUoKTtcbiAgICAgICAgICAgICAgICBheGlvc1JldHJ5XzEuZGVmYXVsdChheGlvc0luc3RhbmNlLCB7IHJldHJpZXM6IHRoaXMuY29uZmlndXJhdGlvbi5tYXhSZXF1ZXN0UmV0cmllc09uRmFpbHVyZSB9KTtcbiAgICAgICAgICAgICAgICBhdXRoZW50aWNhdGVkVXNlclRva2VuID0gcXVldWVBdmFpbGFiaWxpdHlPcHRpb25hbFBhcmFtcy5hdXRoZW50aWNhdGVkVXNlclRva2VuLCBpbml0Q29udGV4dCA9IHF1ZXVlQXZhaWxhYmlsaXR5T3B0aW9uYWxQYXJhbXMuaW5pdENvbnRleHQsIGdldENvbnRleHQgPSBxdWV1ZUF2YWlsYWJpbGl0eU9wdGlvbmFsUGFyYW1zLmdldENvbnRleHQ7XG4gICAgICAgICAgICAgICAgaGVhZGVycyA9IENvbnN0YW50c18xLmRlZmF1bHQuZGVmYXVsdEhlYWRlcnM7XG4gICAgICAgICAgICAgICAgaWYgKGF1dGhlbnRpY2F0ZWRVc2VyVG9rZW4pIHtcbiAgICAgICAgICAgICAgICAgICAgaGVhZGVyc1tPbW5pY2hhbm5lbEhUVFBIZWFkZXJzXzEuZGVmYXVsdC5hdXRoZW50aWNhdGVkVXNlclRva2VuXSA9IGF1dGhlbnRpY2F0ZWRVc2VyVG9rZW47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGRhdGEgPSBpbml0Q29udGV4dCB8fCB7fTtcbiAgICAgICAgICAgICAgICBpZiAoZ2V0Q29udGV4dCAmJiAhd2luZG93LmRvY3VtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovLCBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoXCJnZXRDb250ZXh0IGlzIG9ubHkgc3VwcG9ydGVkIG9uIHdlYiBicm93c2Vyc1wiKSldO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoZ2V0Q29udGV4dCkge1xuICAgICAgICAgICAgICAgICAgICBkYXRhLmJyb3dzZXIgPSBCcm93c2VySW5mb18xLkJyb3dzZXJJbmZvLmdldEJyb3dzZXJOYW1lKCk7XG4gICAgICAgICAgICAgICAgICAgIGRhdGEuZGV2aWNlID0gRGV2aWNlSW5mb18xLkRldmljZUluZm8uZ2V0RGV2aWNlVHlwZSgpO1xuICAgICAgICAgICAgICAgICAgICBkYXRhLm9yaWdpbnVybCA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmO1xuICAgICAgICAgICAgICAgICAgICBkYXRhLm9zID0gT1NJbmZvXzEuT1NJbmZvLmdldE9zVHlwZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoIWRhdGEubG9jYWxlKSB7XG4gICAgICAgICAgICAgICAgICAgIGRhdGEubG9jYWxlID0gQ29uc3RhbnRzXzEuZGVmYXVsdC5kZWZhdWx0TG9jYWxlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBWYWxpZGF0ZSBsb2NhbGVcbiAgICAgICAgICAgICAgICBpZiAoZGF0YS5sb2NhbGUgJiYgIUxvY2FsZXNfMS5kZWZhdWx0LnN1cHBvcnRlZExvY2FsZXMuaW5jbHVkZXMoZGF0YS5sb2NhbGUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovLCBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoXCJVbnN1cHBvcnRlZCBsb2NhbGU6ICdcIiArIGRhdGEubG9jYWxlICsgXCInXCIpKV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG9wdGlvbnMgPSB7XG4gICAgICAgICAgICAgICAgICAgIGRhdGE6IGRhdGEsXG4gICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IGhlYWRlcnMsXG4gICAgICAgICAgICAgICAgICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgICAgICAgICAgICAgICAgIHVybDogZW5kcG9pbnRcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovLCBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7IHJldHVybiBfX2F3YWl0ZXIoX3RoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UsIGVsYXBzZWRUaW1lSW5NaWxsaXNlY29uZHMsIGRhdGFfMSwgZXJyb3JfNSwgZWxhcHNlZFRpbWVJbk1pbGxpc2Vjb25kcztcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKF9hLmxhYmVsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9hLnRyeXMucHVzaChbMCwgMiwgLCA1XSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzQgLyp5aWVsZCovLCBheGlvc0luc3RhbmNlKG9wdGlvbnMpXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UgPSBfYS5zZW50KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGFwc2VkVGltZUluTWlsbGlzZWNvbmRzID0gdGltZXIubWlsbGlTZWNvbmRzRWxhcHNlZDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFfMSA9IHJlc3BvbnNlLmRhdGE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YV8xKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubG9nZ2VyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmxvZyhMb2dMZXZlbF8xLkxvZ0xldmVsLklORk8sIEVudW1zXzIuT0NTREtUZWxlbWV0cnlFdmVudC5HRVRRVUVVRUFWQUlMQUJJTElUWVNVQ0NFRURFRCwgeyBSZXF1ZXN0SWQ6IHJlcXVlc3RJZCwgUmVnaW9uOiByZXNwb25zZS5kYXRhLlJlZ2lvbiwgRWxhcHNlZFRpbWVJbk1pbGxpc2Vjb25kczogZWxhcHNlZFRpbWVJbk1pbGxpc2Vjb25kcywgVHJhbnNhY3Rpb25JZDogcmVzcG9uc2UuaGVhZGVyc1tcInRyYW5zYWN0aW9uLWlkXCJdIH0sIFwiR2V0IHF1ZXVlIGF2YWlsYWJpbGl0eSBTdWNjZWVkZWRcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoZGF0YV8xKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMyAvKmJyZWFrKi8sIDVdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcl81ID0gX2Euc2VudCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxhcHNlZFRpbWVJbk1pbGxpc2Vjb25kcyA9IHRpbWVyLm1pbGxpU2Vjb25kc0VsYXBzZWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMubG9nZ2VyKSByZXR1cm4gWzMgLypicmVhayovLCA0XTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbNCAvKnlpZWxkKi8sIExvZ2dpbmdTYW5pdGl6ZXJfMS5Mb2dnaW5nU2FuaXRpemVyLnN0cmlwRXJyb3JTZW5zaXRpdmVQcm9wZXJ0aWVzKGVycm9yXzUpXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2Euc2VudCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2dnZXIubG9nKExvZ0xldmVsXzEuTG9nTGV2ZWwuRVJST1IsIEVudW1zXzIuT0NTREtUZWxlbWV0cnlFdmVudC5HRVRRVUVVRUFWQUlMQUJJTElUWUZBSUxFRCwgeyBSZXF1ZXN0SWQ6IHJlcXVlc3RJZCwgRXhjZXB0aW9uRGV0YWlsczogZXJyb3JfNSwgRWxhcHNlZFRpbWVJbk1pbGxpc2Vjb25kczogZWxhcHNlZFRpbWVJbk1pbGxpc2Vjb25kcyB9LCBcIkdldCBxdWV1ZSBhdmFpbGFiaWxpdHkgZmFpbGVkXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2EubGFiZWwgPSA0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWplY3QoZXJyb3JfNSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzMgLypicmVhayovLCA1XTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA1OiByZXR1cm4gWzIgLypyZXR1cm4qL107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH0pOyB9KV07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBTdGFydHMgYSBzZXNzaW9uIHRvIG9tbmljaGFubmVsLlxuICAgICAqIEBwYXJhbSByZXF1ZXN0SWQ6IFJlcXVlc3RJZCB0byB1c2UgZm9yIHNlc3Npb24gaW5pdC5cbiAgICAgKiBAcGFyYW0gc2Vzc2lvbkluaXRPcHRpb25hbFBhcmFtczogT3B0aW9uYWwgcGFyYW1ldGVycyBmb3Igc2Vzc2lvbiBpbml0LlxuICAgICAqL1xuICAgIFNESy5wcm90b3R5cGUuc2Vzc2lvbkluaXQgPSBmdW5jdGlvbiAocmVxdWVzdElkLCBzZXNzaW9uSW5pdE9wdGlvbmFsUGFyYW1zKSB7XG4gICAgICAgIGlmIChzZXNzaW9uSW5pdE9wdGlvbmFsUGFyYW1zID09PSB2b2lkIDApIHsgc2Vzc2lvbkluaXRPcHRpb25hbFBhcmFtcyA9IHt9OyB9XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciB0aW1lciwgYXhpb3NJbnN0YW5jZSwgcmVjb25uZWN0SWQsIGF1dGhlbnRpY2F0ZWRVc2VyVG9rZW4sIGluaXRDb250ZXh0LCBnZXRDb250ZXh0LCBoZWFkZXJzLCBlbmRwb2ludCwgZGF0YSwgb3B0aW9ucztcbiAgICAgICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IodGhpcywgZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgICAgICAgICAgdGltZXIgPSBUaW1lcl8xLlRpbWVyLlRJTUVSKCk7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubG9nZ2VyKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmxvZyhMb2dMZXZlbF8xLkxvZ0xldmVsLklORk8sIEVudW1zXzIuT0NTREtUZWxlbWV0cnlFdmVudC5TRVNTSU9OSU5JVFNUQVJURUQsIHsgUmVxdWVzdElkOiByZXF1ZXN0SWQgfSwgXCJTZXNzaW9uIEluaXQgU3RhcnRlZFwiKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYXhpb3NJbnN0YW5jZSA9IGF4aW9zXzEuZGVmYXVsdC5jcmVhdGUoKTtcbiAgICAgICAgICAgICAgICBheGlvc1JldHJ5XzEuZGVmYXVsdChheGlvc0luc3RhbmNlLCB7IHJldHJpZXM6IHRoaXMuY29uZmlndXJhdGlvbi5tYXhSZXF1ZXN0UmV0cmllc09uRmFpbHVyZSB9KTtcbiAgICAgICAgICAgICAgICByZWNvbm5lY3RJZCA9IHNlc3Npb25Jbml0T3B0aW9uYWxQYXJhbXMucmVjb25uZWN0SWQsIGF1dGhlbnRpY2F0ZWRVc2VyVG9rZW4gPSBzZXNzaW9uSW5pdE9wdGlvbmFsUGFyYW1zLmF1dGhlbnRpY2F0ZWRVc2VyVG9rZW4sIGluaXRDb250ZXh0ID0gc2Vzc2lvbkluaXRPcHRpb25hbFBhcmFtcy5pbml0Q29udGV4dCwgZ2V0Q29udGV4dCA9IHNlc3Npb25Jbml0T3B0aW9uYWxQYXJhbXMuZ2V0Q29udGV4dDtcbiAgICAgICAgICAgICAgICBoZWFkZXJzID0gQ29uc3RhbnRzXzEuZGVmYXVsdC5kZWZhdWx0SGVhZGVycztcbiAgICAgICAgICAgICAgICBlbmRwb2ludCA9IHRoaXMub21uaWNoYW5uZWxDb25maWd1cmF0aW9uLm9yZ1VybCArIFwiL1wiICsgT21uaWNoYW5uZWxFbmRwb2ludHNfMS5kZWZhdWx0LkxpdmVDaGF0U2Vzc2lvbkluaXRQYXRoICsgXCIvXCIgKyB0aGlzLm9tbmljaGFubmVsQ29uZmlndXJhdGlvbi5vcmdJZCArIFwiL1wiICsgdGhpcy5vbW5pY2hhbm5lbENvbmZpZ3VyYXRpb24ud2lkZ2V0SWQgKyBcIi9cIiArIHJlcXVlc3RJZDtcbiAgICAgICAgICAgICAgICBpZiAoYXV0aGVudGljYXRlZFVzZXJUb2tlbikge1xuICAgICAgICAgICAgICAgICAgICBlbmRwb2ludCA9IHRoaXMub21uaWNoYW5uZWxDb25maWd1cmF0aW9uLm9yZ1VybCArIFwiL1wiICsgT21uaWNoYW5uZWxFbmRwb2ludHNfMS5kZWZhdWx0LkxpdmVDaGF0QXV0aFNlc3Npb25Jbml0UGF0aCArIFwiL1wiICsgdGhpcy5vbW5pY2hhbm5lbENvbmZpZ3VyYXRpb24ub3JnSWQgKyBcIi9cIiArIHRoaXMub21uaWNoYW5uZWxDb25maWd1cmF0aW9uLndpZGdldElkICsgXCIvXCIgKyByZXF1ZXN0SWQ7XG4gICAgICAgICAgICAgICAgICAgIGhlYWRlcnNbT21uaWNoYW5uZWxIVFRQSGVhZGVyc18xLmRlZmF1bHQuYXV0aGVudGljYXRlZFVzZXJUb2tlbl0gPSBhdXRoZW50aWNhdGVkVXNlclRva2VuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAocmVjb25uZWN0SWQpIHtcbiAgICAgICAgICAgICAgICAgICAgZW5kcG9pbnQgKz0gXCIvXCIgKyByZWNvbm5lY3RJZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZW5kcG9pbnQgKz0gXCI/Y2hhbm5lbElkPVwiICsgdGhpcy5vbW5pY2hhbm5lbENvbmZpZ3VyYXRpb24uY2hhbm5lbElkO1xuICAgICAgICAgICAgICAgIGRhdGEgPSBpbml0Q29udGV4dCB8fCB7fTtcbiAgICAgICAgICAgICAgICBpZiAoZ2V0Q29udGV4dCAmJiAhd2luZG93LmRvY3VtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovLCBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoXCJnZXRDb250ZXh0IGlzIG9ubHkgc3VwcG9ydGVkIG9uIHdlYiBicm93c2Vyc1wiKSldO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoZ2V0Q29udGV4dCkge1xuICAgICAgICAgICAgICAgICAgICBkYXRhLmJyb3dzZXIgPSBCcm93c2VySW5mb18xLkJyb3dzZXJJbmZvLmdldEJyb3dzZXJOYW1lKCk7XG4gICAgICAgICAgICAgICAgICAgIGRhdGEuZGV2aWNlID0gRGV2aWNlSW5mb18xLkRldmljZUluZm8uZ2V0RGV2aWNlVHlwZSgpO1xuICAgICAgICAgICAgICAgICAgICBkYXRhLm9yaWdpbnVybCA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmO1xuICAgICAgICAgICAgICAgICAgICBkYXRhLm9zID0gT1NJbmZvXzEuT1NJbmZvLmdldE9zVHlwZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBTZXQgZGVmYXVsdCBsb2NhbGUgaWYgbG9jYWxlIGlzIGVtcHR5XG4gICAgICAgICAgICAgICAgaWYgKCFkYXRhLmxvY2FsZSkge1xuICAgICAgICAgICAgICAgICAgICBkYXRhLmxvY2FsZSA9IENvbnN0YW50c18xLmRlZmF1bHQuZGVmYXVsdExvY2FsZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gVmFsaWRhdGUgbG9jYWxlXG4gICAgICAgICAgICAgICAgaWYgKGRhdGEubG9jYWxlICYmICFMb2NhbGVzXzEuZGVmYXVsdC5zdXBwb3J0ZWRMb2NhbGVzLmluY2x1ZGVzKGRhdGEubG9jYWxlKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qLywgUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKFwiVW5zdXBwb3J0ZWQgbG9jYWxlOiAnXCIgKyBkYXRhLmxvY2FsZSArIFwiJ1wiKSldO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBvcHRpb25zID0ge1xuICAgICAgICAgICAgICAgICAgICBkYXRhOiBkYXRhLFxuICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiBoZWFkZXJzLFxuICAgICAgICAgICAgICAgICAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgICAgICAgICAgICAgICAgICB1cmw6IGVuZHBvaW50XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qLywgbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgeyByZXR1cm4gX19hd2FpdGVyKF90aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlLCBlbGFwc2VkVGltZUluTWlsbGlzZWNvbmRzLCBlcnJvcl82LCBlbGFwc2VkVGltZUluTWlsbGlzZWNvbmRzO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoX2EubGFiZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2EudHJ5cy5wdXNoKFswLCAyLCAsIDVdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbNCAvKnlpZWxkKi8sIGF4aW9zSW5zdGFuY2Uob3B0aW9ucyldO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZSA9IF9hLnNlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsYXBzZWRUaW1lSW5NaWxsaXNlY29uZHMgPSB0aW1lci5taWxsaVNlY29uZHNFbGFwc2VkO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubG9nZ2VyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2dnZXIubG9nKExvZ0xldmVsXzEuTG9nTGV2ZWwuSU5GTywgRW51bXNfMi5PQ1NES1RlbGVtZXRyeUV2ZW50LlNFU1NJT05JTklUU1VDQ0VFREVELCB7IFJlcXVlc3RJZDogcmVxdWVzdElkLCBSZWdpb246IHJlc3BvbnNlLmRhdGEuUmVnaW9uLCBFbGFwc2VkVGltZUluTWlsbGlzZWNvbmRzOiBlbGFwc2VkVGltZUluTWlsbGlzZWNvbmRzLCBUcmFuc2FjdGlvbklkOiByZXNwb25zZS5oZWFkZXJzW1widHJhbnNhY3Rpb24taWRcIl0gfSwgXCJTZXNzaW9uIEluaXQgU3VjY2VlZGVkXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFszIC8qYnJlYWsqLywgNV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yXzYgPSBfYS5zZW50KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGFwc2VkVGltZUluTWlsbGlzZWNvbmRzID0gdGltZXIubWlsbGlTZWNvbmRzRWxhcHNlZDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5sb2dnZXIpIHJldHVybiBbMyAvKmJyZWFrKi8sIDRdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFs0IC8qeWllbGQqLywgTG9nZ2luZ1Nhbml0aXplcl8xLkxvZ2dpbmdTYW5pdGl6ZXIuc3RyaXBFcnJvclNlbnNpdGl2ZVByb3BlcnRpZXMoZXJyb3JfNildO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYS5zZW50KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvZ2dlci5sb2coTG9nTGV2ZWxfMS5Mb2dMZXZlbC5FUlJPUiwgRW51bXNfMi5PQ1NES1RlbGVtZXRyeUV2ZW50LlNFU1NJT05JTklURkFJTEVELCB7IFJlcXVlc3RJZDogcmVxdWVzdElkLCBFeGNlcHRpb25EZXRhaWxzOiBlcnJvcl82LCBFbGFwc2VkVGltZUluTWlsbGlzZWNvbmRzOiBlbGFwc2VkVGltZUluTWlsbGlzZWNvbmRzIH0sIFwiU2Vzc2lvbiBJbml0IEZhaWxlZFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9hLmxhYmVsID0gNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGVycm9yXzYpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFszIC8qYnJlYWsqLywgNV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNTogcmV0dXJuIFsyIC8qcmV0dXJuKi9dO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9KTsgfSldO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQ2xvc2VzIHRoZSBvbW5pY2hhbm5lbCBzZXNzaW9uLlxuICAgICAqIEBwYXJhbSByZXF1ZXN0SWQ6IFJlcXVlc3RJZCB0byB1c2UgZm9yIHNlc3Npb24gY2xvc2UgKHNhbWUgcmVxdWVzdCBpZCBmb3Igc2Vzc2lvbiBpbml0KS5cbiAgICAgKiBAcGFyYW0gc2Vzc2lvbkNsb3NlT3B0aW9uYWxQYXJhbXM6IE9wdGlvbmFsIHBhcmFtZXRlcnMgZm9yIHNlc3Npb24gY2xvc2UuXG4gICAgICovXG4gICAgU0RLLnByb3RvdHlwZS5zZXNzaW9uQ2xvc2UgPSBmdW5jdGlvbiAocmVxdWVzdElkLCBzZXNzaW9uQ2xvc2VPcHRpb25hbFBhcmFtcykge1xuICAgICAgICBpZiAoc2Vzc2lvbkNsb3NlT3B0aW9uYWxQYXJhbXMgPT09IHZvaWQgMCkgeyBzZXNzaW9uQ2xvc2VPcHRpb25hbFBhcmFtcyA9IHt9OyB9XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciB0aW1lciwgZW5kcG9pbnQsIGF4aW9zSW5zdGFuY2UsIGF1dGhlbnRpY2F0ZWRVc2VyVG9rZW4sIGlzUmVjb25uZWN0Q2hhdCwgaXNQZXJzaXN0ZW50Q2hhdCwgY2hhdElkLCBoZWFkZXJzLCBkYXRhLCBvcHRpb25zO1xuICAgICAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgICAgICB0aW1lciA9IFRpbWVyXzEuVGltZXIuVElNRVIoKTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5sb2dnZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2dnZXIubG9nKExvZ0xldmVsXzEuTG9nTGV2ZWwuSU5GTywgRW51bXNfMi5PQ1NES1RlbGVtZXRyeUV2ZW50LlNFU1NJT05DTE9TRVNUQVJURUQsIHsgUmVxdWVzdElkOiByZXF1ZXN0SWQgfSwgXCJTZXNzaW9uIENsb3NlIFN0YXJ0ZWRcIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVuZHBvaW50ID0gdGhpcy5vbW5pY2hhbm5lbENvbmZpZ3VyYXRpb24ub3JnVXJsICsgXCIvXCIgKyBPbW5pY2hhbm5lbEVuZHBvaW50c18xLmRlZmF1bHQuTGl2ZUNoYXRTZXNzaW9uQ2xvc2VQYXRoICsgXCIvXCIgKyB0aGlzLm9tbmljaGFubmVsQ29uZmlndXJhdGlvbi5vcmdJZCArIFwiL1wiICsgdGhpcy5vbW5pY2hhbm5lbENvbmZpZ3VyYXRpb24ud2lkZ2V0SWQgKyBcIi9cIiArIHJlcXVlc3RJZCArIFwiP2NoYW5uZWxJZD1cIiArIHRoaXMub21uaWNoYW5uZWxDb25maWd1cmF0aW9uLmNoYW5uZWxJZDtcbiAgICAgICAgICAgICAgICBheGlvc0luc3RhbmNlID0gYXhpb3NfMS5kZWZhdWx0LmNyZWF0ZSgpO1xuICAgICAgICAgICAgICAgIGF4aW9zUmV0cnlfMS5kZWZhdWx0KGF4aW9zSW5zdGFuY2UsIHsgcmV0cmllczogdGhpcy5jb25maWd1cmF0aW9uLm1heFJlcXVlc3RSZXRyaWVzT25GYWlsdXJlIH0pO1xuICAgICAgICAgICAgICAgIGF1dGhlbnRpY2F0ZWRVc2VyVG9rZW4gPSBzZXNzaW9uQ2xvc2VPcHRpb25hbFBhcmFtcy5hdXRoZW50aWNhdGVkVXNlclRva2VuLCBpc1JlY29ubmVjdENoYXQgPSBzZXNzaW9uQ2xvc2VPcHRpb25hbFBhcmFtcy5pc1JlY29ubmVjdENoYXQsIGlzUGVyc2lzdGVudENoYXQgPSBzZXNzaW9uQ2xvc2VPcHRpb25hbFBhcmFtcy5pc1BlcnNpc3RlbnRDaGF0LCBjaGF0SWQgPSBzZXNzaW9uQ2xvc2VPcHRpb25hbFBhcmFtcy5jaGF0SWQ7XG4gICAgICAgICAgICAgICAgaGVhZGVycyA9IENvbnN0YW50c18xLmRlZmF1bHQuZGVmYXVsdEhlYWRlcnM7XG4gICAgICAgICAgICAgICAgZGF0YSA9IHt9O1xuICAgICAgICAgICAgICAgIGRhdGEuY2hhdElkID0gY2hhdElkO1xuICAgICAgICAgICAgICAgIGlmIChhdXRoZW50aWNhdGVkVXNlclRva2VuKSB7XG4gICAgICAgICAgICAgICAgICAgIGVuZHBvaW50ID0gdGhpcy5vbW5pY2hhbm5lbENvbmZpZ3VyYXRpb24ub3JnVXJsICsgXCIvXCIgKyBPbW5pY2hhbm5lbEVuZHBvaW50c18xLmRlZmF1bHQuTGl2ZUNoYXRBdXRoU2Vzc2lvbkNsb3NlUGF0aCArIFwiL1wiICsgdGhpcy5vbW5pY2hhbm5lbENvbmZpZ3VyYXRpb24ub3JnSWQgKyBcIi9cIiArIHRoaXMub21uaWNoYW5uZWxDb25maWd1cmF0aW9uLndpZGdldElkICsgXCIvXCIgKyByZXF1ZXN0SWQgKyBcIj9jaGFubmVsSWQ9XCIgKyB0aGlzLm9tbmljaGFubmVsQ29uZmlndXJhdGlvbi5jaGFubmVsSWQ7XG4gICAgICAgICAgICAgICAgICAgIGhlYWRlcnNbT21uaWNoYW5uZWxIVFRQSGVhZGVyc18xLmRlZmF1bHQuYXV0aGVudGljYXRlZFVzZXJUb2tlbl0gPSBhdXRoZW50aWNhdGVkVXNlclRva2VuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoaXNSZWNvbm5lY3RDaGF0KSB7XG4gICAgICAgICAgICAgICAgICAgIGVuZHBvaW50ICs9IFwiJmlzUmVjb25uZWN0Q2hhdD10cnVlXCI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChpc1BlcnNpc3RlbnRDaGF0KSB7XG4gICAgICAgICAgICAgICAgICAgIGVuZHBvaW50ICs9IFwiJmlzUGVyc2lzdGVudENoYXQ9dHJ1ZVwiO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBvcHRpb25zID0ge1xuICAgICAgICAgICAgICAgICAgICBkYXRhOiBkYXRhLFxuICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiBoZWFkZXJzLFxuICAgICAgICAgICAgICAgICAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgICAgICAgICAgICAgICAgICB1cmw6IGVuZHBvaW50XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qLywgbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgeyByZXR1cm4gX19hd2FpdGVyKF90aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlLCBlbGFwc2VkVGltZUluTWlsbGlzZWNvbmRzLCBlcnJvcl83LCBlbGFwc2VkVGltZUluTWlsbGlzZWNvbmRzO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoX2EubGFiZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2EudHJ5cy5wdXNoKFswLCAyLCAsIDVdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbNCAvKnlpZWxkKi8sIGF4aW9zSW5zdGFuY2Uob3B0aW9ucyldO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZSA9IF9hLnNlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsYXBzZWRUaW1lSW5NaWxsaXNlY29uZHMgPSB0aW1lci5taWxsaVNlY29uZHNFbGFwc2VkO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubG9nZ2VyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2dnZXIubG9nKExvZ0xldmVsXzEuTG9nTGV2ZWwuSU5GTywgRW51bXNfMi5PQ1NES1RlbGVtZXRyeUV2ZW50LlNFU1NJT05DTE9TRVNVQ0NFRURFRCwgeyBSZXF1ZXN0SWQ6IHJlcXVlc3RJZCwgUmVnaW9uOiByZXNwb25zZS5kYXRhLlJlZ2lvbiwgRWxhcHNlZFRpbWVJbk1pbGxpc2Vjb25kczogZWxhcHNlZFRpbWVJbk1pbGxpc2Vjb25kcywgVHJhbnNhY3Rpb25JZDogcmVzcG9uc2UuaGVhZGVyc1tcInRyYW5zYWN0aW9uLWlkXCJdIH0sIFwiU2Vzc2lvbiBDbG9zZSBTdWNjZWVkZWRcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzMgLypicmVhayovLCA1XTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JfNyA9IF9hLnNlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsYXBzZWRUaW1lSW5NaWxsaXNlY29uZHMgPSB0aW1lci5taWxsaVNlY29uZHNFbGFwc2VkO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLmxvZ2dlcikgcmV0dXJuIFszIC8qYnJlYWsqLywgNF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzQgLyp5aWVsZCovLCBMb2dnaW5nU2FuaXRpemVyXzEuTG9nZ2luZ1Nhbml0aXplci5zdHJpcEVycm9yU2Vuc2l0aXZlUHJvcGVydGllcyhlcnJvcl83KV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9hLnNlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmxvZyhMb2dMZXZlbF8xLkxvZ0xldmVsLkVSUk9SLCBFbnVtc18yLk9DU0RLVGVsZW1ldHJ5RXZlbnQuU0VTU0lPTkNMT1NFRkFJTEVELCB7IFJlcXVlc3RJZDogcmVxdWVzdElkLCBFeGNlcHRpb25EZXRhaWxzOiBlcnJvcl83LCBFbGFwc2VkVGltZUluTWlsbGlzZWNvbmRzOiBlbGFwc2VkVGltZUluTWlsbGlzZWNvbmRzIH0sIFwiU2Vzc2lvbiBDbG9zZSBGYWlsZWRcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYS5sYWJlbCA9IDQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFszIC8qYnJlYWsqLywgNV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNTogcmV0dXJuIFsyIC8qcmV0dXJuKi9dO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9KTsgfSldO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogVmFsaWRhdGUgdGhlIGF1dGggY2hhdCByZWNvcmQgZXhpc3RzIGluIGRhdGFiYXNlLlxuICAgICAqIEBwYXJhbSByZXF1ZXN0SWQ6IFJlcXVlc3RJZCBmb3IgdmFsaWRhdGVBdXRoQ2hhdFJlY29yZCAoc2FtZSByZXF1ZXN0IGlkIGZvciBzZXNzaW9uIGluaXQpLlxuICAgICAqIEBwYXJhbSB2YWxpZGF0ZUF1dGhDaGF0UmVjb3JkT3B0aW9uYWxQYXJhbXM6IE9wdGlvbmFsIHBhcmFtZXRlcnMgZm9yIHZhbGlkYXRlQXV0aENoYXRSZWNvcmQuXG4gICAgICovXG4gICAgU0RLLnByb3RvdHlwZS52YWxpZGF0ZUF1dGhDaGF0UmVjb3JkID0gZnVuY3Rpb24gKHJlcXVlc3RJZCwgdmFsaWRhdGVBdXRoQ2hhdFJlY29yZE9wdGlvbmFsUGFyYW1zKSB7XG4gICAgICAgIHZhciBfYSwgX2IsIF9jLCBfZDtcbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIHRpbWVyLCBhdXRoZW50aWNhdGVkVXNlclRva2VuLCBjaGF0SWQsIGVuZHBvaW50LCBheGlvc0luc3RhbmNlLCBoZWFkZXJzLCBvcHRpb25zLCByZXNwb25zZSwgZWxhcHNlZFRpbWVJbk1pbGxpc2Vjb25kcywgZXJyb3JfOCwgZWxhcHNlZFRpbWVJbk1pbGxpc2Vjb25kcztcbiAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2UpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKF9lLmxhYmVsKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVyID0gVGltZXJfMS5UaW1lci5USU1FUigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubG9nZ2VyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2dnZXIubG9nKExvZ0xldmVsXzEuTG9nTGV2ZWwuSU5GTywgRW51bXNfMi5PQ1NES1RlbGVtZXRyeUV2ZW50LlZBTElEQVRFQVVUSENIQVRSRUNPUkRTVEFSVEVELCB7IFJlcXVlc3RJZDogcmVxdWVzdElkIH0sIFwiVmFsaWRhdGUgQXV0aCBDaGF0IFJlY29yZCBTdGFydGVkXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgYXV0aGVudGljYXRlZFVzZXJUb2tlbiA9IHZhbGlkYXRlQXV0aENoYXRSZWNvcmRPcHRpb25hbFBhcmFtcy5hdXRoZW50aWNhdGVkVXNlclRva2VuLCBjaGF0SWQgPSB2YWxpZGF0ZUF1dGhDaGF0UmVjb3JkT3B0aW9uYWxQYXJhbXMuY2hhdElkO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW5kcG9pbnQgPSB0aGlzLm9tbmljaGFubmVsQ29uZmlndXJhdGlvbi5vcmdVcmwgKyBcIi9cIiArIE9tbmljaGFubmVsRW5kcG9pbnRzXzEuZGVmYXVsdC5MaXZlQ2hhdFZhbGlkYXRlQXV0aENoYXRNYXBSZWNvcmRQYXRoICsgXCIvXCIgKyB0aGlzLm9tbmljaGFubmVsQ29uZmlndXJhdGlvbi5vcmdJZCArIFwiL1wiICsgdGhpcy5vbW5pY2hhbm5lbENvbmZpZ3VyYXRpb24ud2lkZ2V0SWQgKyBcIi9cIiArIGNoYXRJZCArIFwiL1wiICsgcmVxdWVzdElkICsgXCI/Y2hhbm5lbElkPVwiICsgdGhpcy5vbW5pY2hhbm5lbENvbmZpZ3VyYXRpb24uY2hhbm5lbElkO1xuICAgICAgICAgICAgICAgICAgICAgICAgYXhpb3NJbnN0YW5jZSA9IGF4aW9zXzEuZGVmYXVsdC5jcmVhdGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGF4aW9zUmV0cnlfMS5kZWZhdWx0KGF4aW9zSW5zdGFuY2UsIHsgcmV0cmllczogdGhpcy5jb25maWd1cmF0aW9uLm1heFJlcXVlc3RSZXRyaWVzT25GYWlsdXJlIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVycyA9IENvbnN0YW50c18xLmRlZmF1bHQuZGVmYXVsdEhlYWRlcnM7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoYXV0aGVudGljYXRlZFVzZXJUb2tlbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnNbT21uaWNoYW5uZWxIVFRQSGVhZGVyc18xLmRlZmF1bHQuYXV0aGVudGljYXRlZFVzZXJUb2tlbl0gPSBhdXRoZW50aWNhdGVkVXNlclRva2VuO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucyA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiBoZWFkZXJzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZDogXCJHRVRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGVuZHBvaW50XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgX2UubGFiZWwgPSAxO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgICAgICBfZS50cnlzLnB1c2goWzEsIDMsICwgNV0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFs0IC8qeWllbGQqLywgYXhpb3NJbnN0YW5jZShvcHRpb25zKV07XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gX2Uuc2VudCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZWxhcHNlZFRpbWVJbk1pbGxpc2Vjb25kcyA9IHRpbWVyLm1pbGxpU2Vjb25kc0VsYXBzZWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoKChfYSA9IHJlc3BvbnNlLmRhdGEpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5hdXRoQ2hhdEV4aXN0KSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfYiA9IHRoaXMubG9nZ2VyKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IubG9nKExvZ0xldmVsXzEuTG9nTGV2ZWwuSU5GTywgRW51bXNfMi5PQ1NES1RlbGVtZXRyeUV2ZW50LlZBTElEQVRFQVVUSENIQVRSRUNPUkRTVUNDRUVERUQsIHsgUmVxdWVzdElkOiByZXF1ZXN0SWQsIFJlZ2lvbjogcmVzcG9uc2UuZGF0YS5SZWdpb24sIEVsYXBzZWRUaW1lSW5NaWxsaXNlY29uZHM6IGVsYXBzZWRUaW1lSW5NaWxsaXNlY29uZHMsIFRyYW5zYWN0aW9uSWQ6IHJlc3BvbnNlLmhlYWRlcnNbXCJ0cmFuc2FjdGlvbi1pZFwiXSB9LCBcIlZhbGlkYXRlIEF1dGggQ2hhdCBSZWNvcmQgU3VjY2VlZGVkXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovLCBQcm9taXNlLnJlc29sdmUocmVzcG9uc2UuZGF0YSldO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9jID0gdGhpcy5sb2dnZXIpID09PSBudWxsIHx8IF9jID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYy5sb2coTG9nTGV2ZWxfMS5Mb2dMZXZlbC5JTkZPLCBFbnVtc18yLk9DU0RLVGVsZW1ldHJ5RXZlbnQuVkFMSURBVEVBVVRIQ0hBVFJFQ09SREZBSUxFRCwgeyBSZXF1ZXN0SWQ6IHJlcXVlc3RJZCwgUmVnaW9uOiByZXNwb25zZS5kYXRhLlJlZ2lvbiwgRWxhcHNlZFRpbWVJbk1pbGxpc2Vjb25kczogZWxhcHNlZFRpbWVJbk1pbGxpc2Vjb25kcywgVHJhbnNhY3Rpb25JZDogcmVzcG9uc2UuaGVhZGVyc1tcInRyYW5zYWN0aW9uLWlkXCJdLCBFcnJvckNvZGU6IHJlc3BvbnNlLnN0YXR1cyB9LCBcIlZhbGlkYXRlIEF1dGggQ2hhdCBSZWNvcmQgRmFpbGVkLiBSZWNvcmQgaXMgbm90IGZvdW5kIG9yIHJlcXVlc3QgaXMgbm90IGF1dGhvcml6ZWRcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi8sIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcihcIlZhbGlkYXRlIEF1dGggQ2hhdCBSZWNvcmQgRmFpbGVkLiBSZWNvcmQgaXMgbm90IGZvdW5kIG9yIHJlcXVlc3QgaXMgbm90IGF1dGhvcml6ZWRcIikpXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMyAvKmJyZWFrKi8sIDVdO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvcl84ID0gX2Uuc2VudCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZWxhcHNlZFRpbWVJbk1pbGxpc2Vjb25kcyA9IHRpbWVyLm1pbGxpU2Vjb25kc0VsYXBzZWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzQgLyp5aWVsZCovLCBMb2dnaW5nU2FuaXRpemVyXzEuTG9nZ2luZ1Nhbml0aXplci5zdHJpcEVycm9yU2Vuc2l0aXZlUHJvcGVydGllcyhlcnJvcl84KV07XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgICAgICAgICAgICAgIF9lLnNlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChfZCA9IHRoaXMubG9nZ2VyKSA9PT0gbnVsbCB8fCBfZCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2QubG9nKExvZ0xldmVsXzEuTG9nTGV2ZWwuRVJST1IsIEVudW1zXzIuT0NTREtUZWxlbWV0cnlFdmVudC5WQUxJREFURUFVVEhDSEFUUkVDT1JERkFJTEVELCB7IFJlcXVlc3RJZDogcmVxdWVzdElkLCBFeGNlcHRpb25EZXRhaWxzOiBlcnJvcl84LCBFbGFwc2VkVGltZUluTWlsbGlzZWNvbmRzOiBlbGFwc2VkVGltZUluTWlsbGlzZWNvbmRzIH0sIFwiVmFsaWRhdGUgQXV0aCBDaGF0IFJlY29yZCBGYWlsZWRcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXJyb3JfOC50b1N0cmluZygpID09PSBcIkVycm9yOiBSZXF1ZXN0IGZhaWxlZCB3aXRoIHN0YXR1cyBjb2RlIDQwNFwiKSB7IC8vIGJhY2t3YXJkIGNvbXBhdGliaWxpdHlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qLywgUHJvbWlzZS5yZXNvbHZlKHt9KV07XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qLywgUHJvbWlzZS5yZWplY3QoKV07XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzMgLypicmVhayovLCA1XTtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA1OiByZXR1cm4gWzIgLypyZXR1cm4qL107XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogU3VibWl0cyBwb3N0IGNoYXQgcmVzcG9uc2UuXG4gICAgICogQHBhcmFtIHJlcXVlc3RJZCBSZXF1ZXN0SWQgb2YgdGhlIG9tbmljaGFubmVsIHNlc3Npb24uXG4gICAgICogQHBhcmFtIHBvc3RDaGF0UmVzcG9uc2UgUG9zdCBjaGF0IHJlc3BvbnNlIHRvIHN1Ym1pdC5cbiAgICAgKiBAcGFyYW0gc3VibWl0UG9zdENoYXRSZXNwb25zZU9wdGlvbmFsUGFyYW1zOiBPcHRpb25hbCBwYXJhbWV0ZXJzIGZvciBzdWJtaXQgcG9zdCBjaGF0IHJlc3BvbnNlLlxuICAgICAqL1xuICAgIFNESy5wcm90b3R5cGUuc3VibWl0UG9zdENoYXRSZXNwb25zZSA9IGZ1bmN0aW9uIChyZXF1ZXN0SWQsIHBvc3RDaGF0UmVzcG9uc2UsIHN1Ym1pdFBvc3RDaGF0UmVzcG9uc2VPcHRpb25hbFBhcmFtcykge1xuICAgICAgICBpZiAoc3VibWl0UG9zdENoYXRSZXNwb25zZU9wdGlvbmFsUGFyYW1zID09PSB2b2lkIDApIHsgc3VibWl0UG9zdENoYXRSZXNwb25zZU9wdGlvbmFsUGFyYW1zID0ge307IH1cbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIHRpbWVyLCBlbmRwb2ludCwgYXhpb3NJbnN0YW5jZSwgYXV0aGVudGljYXRlZFVzZXJUb2tlbiwgaGVhZGVycywgb3B0aW9ucztcbiAgICAgICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IodGhpcywgZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgICAgICAgICAgdGltZXIgPSBUaW1lcl8xLlRpbWVyLlRJTUVSKCk7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubG9nZ2VyKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmxvZyhMb2dMZXZlbF8xLkxvZ0xldmVsLklORk8sIEVudW1zXzIuT0NTREtUZWxlbWV0cnlFdmVudC5TVUJNSVRQT1NUQ0hBVFNUQVJURUQsIHsgUmVxdWVzdElkOiByZXF1ZXN0SWQgfSwgXCJTdWJtaXQgUG9zdCBDaGF0IFN0YXJ0ZWRcIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVuZHBvaW50ID0gdGhpcy5vbW5pY2hhbm5lbENvbmZpZ3VyYXRpb24ub3JnVXJsICsgXCIvXCIgKyBPbW5pY2hhbm5lbEVuZHBvaW50c18xLmRlZmF1bHQuTGl2ZUNoYXRTdWJtaXRQb3N0Q2hhdFBhdGggKyBcIi9cIiArIHRoaXMub21uaWNoYW5uZWxDb25maWd1cmF0aW9uLm9yZ0lkICsgXCIvXCIgKyB0aGlzLm9tbmljaGFubmVsQ29uZmlndXJhdGlvbi53aWRnZXRJZCArIFwiL1wiICsgcmVxdWVzdElkICsgXCI/Y2hhbm5lbElkPVwiICsgdGhpcy5vbW5pY2hhbm5lbENvbmZpZ3VyYXRpb24uY2hhbm5lbElkO1xuICAgICAgICAgICAgICAgIGF4aW9zSW5zdGFuY2UgPSBheGlvc18xLmRlZmF1bHQuY3JlYXRlKCk7XG4gICAgICAgICAgICAgICAgYXhpb3NSZXRyeV8xLmRlZmF1bHQoYXhpb3NJbnN0YW5jZSwgeyByZXRyaWVzOiB0aGlzLmNvbmZpZ3VyYXRpb24ubWF4UmVxdWVzdFJldHJpZXNPbkZhaWx1cmUgfSk7XG4gICAgICAgICAgICAgICAgYXV0aGVudGljYXRlZFVzZXJUb2tlbiA9IHN1Ym1pdFBvc3RDaGF0UmVzcG9uc2VPcHRpb25hbFBhcmFtcy5hdXRoZW50aWNhdGVkVXNlclRva2VuO1xuICAgICAgICAgICAgICAgIGhlYWRlcnMgPSBDb25zdGFudHNfMS5kZWZhdWx0LmRlZmF1bHRIZWFkZXJzO1xuICAgICAgICAgICAgICAgIGlmIChhdXRoZW50aWNhdGVkVXNlclRva2VuKSB7XG4gICAgICAgICAgICAgICAgICAgIGVuZHBvaW50ID0gdGhpcy5vbW5pY2hhbm5lbENvbmZpZ3VyYXRpb24ub3JnVXJsICsgXCIvXCIgKyBPbW5pY2hhbm5lbEVuZHBvaW50c18xLmRlZmF1bHQuTGl2ZUNoYXRBdXRoU3VibWl0UG9zdENoYXRQYXRoICsgXCIvXCIgKyB0aGlzLm9tbmljaGFubmVsQ29uZmlndXJhdGlvbi5vcmdJZCArIFwiL1wiICsgdGhpcy5vbW5pY2hhbm5lbENvbmZpZ3VyYXRpb24ud2lkZ2V0SWQgKyBcIi9cIiArIHJlcXVlc3RJZCArIFwiP2NoYW5uZWxJZD1cIiArIHRoaXMub21uaWNoYW5uZWxDb25maWd1cmF0aW9uLmNoYW5uZWxJZDtcbiAgICAgICAgICAgICAgICAgICAgaGVhZGVyc1tPbW5pY2hhbm5lbEhUVFBIZWFkZXJzXzEuZGVmYXVsdC5hdXRoZW50aWNhdGVkVXNlclRva2VuXSA9IGF1dGhlbnRpY2F0ZWRVc2VyVG9rZW47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG9wdGlvbnMgPSB7XG4gICAgICAgICAgICAgICAgICAgIGRhdGE6IEpTT04uc3RyaW5naWZ5KHBvc3RDaGF0UmVzcG9uc2UpLFxuICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiBoZWFkZXJzLFxuICAgICAgICAgICAgICAgICAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgICAgICAgICAgICAgICAgICB1cmw6IGVuZHBvaW50XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qLywgbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgeyByZXR1cm4gX19hd2FpdGVyKF90aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlLCBlbGFwc2VkVGltZUluTWlsbGlzZWNvbmRzLCBlcnJvcl85LCBlbGFwc2VkVGltZUluTWlsbGlzZWNvbmRzO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoX2EubGFiZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2EudHJ5cy5wdXNoKFswLCAyLCAsIDVdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbNCAvKnlpZWxkKi8sIGF4aW9zSW5zdGFuY2Uob3B0aW9ucyldO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZSA9IF9hLnNlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsYXBzZWRUaW1lSW5NaWxsaXNlY29uZHMgPSB0aW1lci5taWxsaVNlY29uZHNFbGFwc2VkO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubG9nZ2VyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2dnZXIubG9nKExvZ0xldmVsXzEuTG9nTGV2ZWwuSU5GTywgRW51bXNfMi5PQ1NES1RlbGVtZXRyeUV2ZW50LlNVQk1JVFBPU1RDSEFUU1VDQ0VFREVELCB7IFJlcXVlc3RJZDogcmVxdWVzdElkLCBSZWdpb246IHJlc3BvbnNlLmRhdGEuUmVnaW9uLCBFbGFwc2VkVGltZUluTWlsbGlzZWNvbmRzOiBlbGFwc2VkVGltZUluTWlsbGlzZWNvbmRzLCBUcmFuc2FjdGlvbklkOiByZXNwb25zZS5oZWFkZXJzW1widHJhbnNhY3Rpb24taWRcIl0gfSwgXCJTdWJtaXQgUG9zdCBDaGF0IFN1Y2NlZWRlZFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMyAvKmJyZWFrKi8sIDVdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcl85ID0gX2Euc2VudCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxhcHNlZFRpbWVJbk1pbGxpc2Vjb25kcyA9IHRpbWVyLm1pbGxpU2Vjb25kc0VsYXBzZWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMubG9nZ2VyKSByZXR1cm4gWzMgLypicmVhayovLCA0XTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbNCAvKnlpZWxkKi8sIExvZ2dpbmdTYW5pdGl6ZXJfMS5Mb2dnaW5nU2FuaXRpemVyLnN0cmlwRXJyb3JTZW5zaXRpdmVQcm9wZXJ0aWVzKGVycm9yXzkpXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2Euc2VudCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2dnZXIubG9nKExvZ0xldmVsXzEuTG9nTGV2ZWwuRVJST1IsIEVudW1zXzIuT0NTREtUZWxlbWV0cnlFdmVudC5TVUJNSVRQT1NUQ0hBVEZBSUxFRCwgeyBSZXF1ZXN0SWQ6IHJlcXVlc3RJZCwgRXhjZXB0aW9uRGV0YWlsczogZXJyb3JfOSwgRWxhcHNlZFRpbWVJbk1pbGxpc2Vjb25kczogZWxhcHNlZFRpbWVJbk1pbGxpc2Vjb25kcyB9LCBcIlN1Ym1pdCBQb3N0IENoYXQgRmFpbGVkXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2EubGFiZWwgPSA0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWplY3QoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMyAvKmJyZWFrKi8sIDVdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDU6IHJldHVybiBbMiAvKnJldHVybiovXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfSk7IH0pXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIFN1Ym1pdHMgcG9zdCBjaGF0IHJlc3BvbnNlLlxuICAgICAqIEBwYXJhbSByZXF1ZXN0SWQgUmVxdWVzdElkIG9mIHRoZSBvbW5pY2hhbm5lbCBzZXNzaW9uLlxuICAgICAqIEBwYXJhbSBwb3N0Q2hhdFJlc3BvbnNlIFBvc3QgY2hhdCByZXNwb25zZSB0byBzdWJtaXQuXG4gICAgICogQHBhcmFtIHN1Ym1pdFBvc3RDaGF0UmVzcG9uc2VPcHRpb25hbFBhcmFtczogT3B0aW9uYWwgcGFyYW1ldGVycyBmb3Igc3VibWl0IHBvc3QgY2hhdCByZXNwb25zZS5cbiAgICAgKi9cbiAgICBTREsucHJvdG90eXBlLmdldFN1cnZleUludml0ZUxpbmsgPSBmdW5jdGlvbiAoc3VydmV5T3duZXJJZCwgc3VydmV5SW52aXRlQVBJUmVxdWVzdEJvZHksIGdldHN1cnZleUludml0ZUxpbmtPcHRpb25hbFBhcmFtcykge1xuICAgICAgICBpZiAoZ2V0c3VydmV5SW52aXRlTGlua09wdGlvbmFsUGFyYW1zID09PSB2b2lkIDApIHsgZ2V0c3VydmV5SW52aXRlTGlua09wdGlvbmFsUGFyYW1zID0ge307IH1cbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIHRpbWVyLCBlbmRwb2ludCwgYXhpb3NJbnN0YW5jZSwgYXV0aGVudGljYXRlZFVzZXJUb2tlbiwgcmVxdWVzdElkLCBoZWFkZXJzLCBvcHRpb25zO1xuICAgICAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgICAgICB0aW1lciA9IFRpbWVyXzEuVGltZXIuVElNRVIoKTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5sb2dnZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2dnZXIubG9nKExvZ0xldmVsXzEuTG9nTGV2ZWwuSU5GTywgRW51bXNfMi5PQ1NES1RlbGVtZXRyeUV2ZW50LkdFVFNVUlZFWUlOVklURUxJTktTVEFSVEVELCB7IFN1cnZleU93bmVySWQ6IHN1cnZleU93bmVySWQgfSwgXCJHZXQgU3VydmV5IEludml0ZSBMaW5rIFN0YXJ0ZWRcIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVuZHBvaW50ID0gdGhpcy5vbW5pY2hhbm5lbENvbmZpZ3VyYXRpb24ub3JnVXJsICsgXCIvXCIgKyBPbW5pY2hhbm5lbEVuZHBvaW50c18xLmRlZmF1bHQuTGl2ZUNoYXRHZXRTdXJ2ZXlJbnZpdGVMaW5rUGF0aCArIFwiL1wiICsgdGhpcy5vbW5pY2hhbm5lbENvbmZpZ3VyYXRpb24ub3JnSWQgKyBcIi9cIiArIHN1cnZleU93bmVySWQ7XG4gICAgICAgICAgICAgICAgYXhpb3NJbnN0YW5jZSA9IGF4aW9zXzEuZGVmYXVsdC5jcmVhdGUoKTtcbiAgICAgICAgICAgICAgICBheGlvc1JldHJ5XzEuZGVmYXVsdChheGlvc0luc3RhbmNlLCB7IHJldHJpZXM6IHRoaXMuY29uZmlndXJhdGlvbi5tYXhSZXF1ZXN0UmV0cmllc09uRmFpbHVyZSB9KTtcbiAgICAgICAgICAgICAgICBhdXRoZW50aWNhdGVkVXNlclRva2VuID0gZ2V0c3VydmV5SW52aXRlTGlua09wdGlvbmFsUGFyYW1zLmF1dGhlbnRpY2F0ZWRVc2VyVG9rZW4sIHJlcXVlc3RJZCA9IGdldHN1cnZleUludml0ZUxpbmtPcHRpb25hbFBhcmFtcy5yZXF1ZXN0SWQ7XG4gICAgICAgICAgICAgICAgaGVhZGVycyA9IENvbnN0YW50c18xLmRlZmF1bHQuZGVmYXVsdEhlYWRlcnM7XG4gICAgICAgICAgICAgICAgaWYgKGF1dGhlbnRpY2F0ZWRVc2VyVG9rZW4pIHtcbiAgICAgICAgICAgICAgICAgICAgZW5kcG9pbnQgPSB0aGlzLm9tbmljaGFubmVsQ29uZmlndXJhdGlvbi5vcmdVcmwgKyBcIi9cIiArIE9tbmljaGFubmVsRW5kcG9pbnRzXzEuZGVmYXVsdC5MaXZlQ2hhdEF1dGhHZXRTdXJ2ZXlJbnZpdGVMaW5rUGF0aCArIFwiL1wiICsgdGhpcy5vbW5pY2hhbm5lbENvbmZpZ3VyYXRpb24ub3JnSWQgKyBcIi9cIiArIHN1cnZleU93bmVySWQ7XG4gICAgICAgICAgICAgICAgICAgIGhlYWRlcnNbT21uaWNoYW5uZWxIVFRQSGVhZGVyc18xLmRlZmF1bHQuYXV0aGVudGljYXRlZFVzZXJUb2tlbl0gPSBhdXRoZW50aWNhdGVkVXNlclRva2VuO1xuICAgICAgICAgICAgICAgICAgICBoZWFkZXJzW09tbmljaGFubmVsSFRUUEhlYWRlcnNfMS5kZWZhdWx0LndpZGdldEFwcElkXSA9IHRoaXMub21uaWNoYW5uZWxDb25maWd1cmF0aW9uLndpZGdldElkO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAocmVxdWVzdElkKSB7XG4gICAgICAgICAgICAgICAgICAgIGhlYWRlcnNbT21uaWNoYW5uZWxIVFRQSGVhZGVyc18xLmRlZmF1bHQucmVxdWVzdElkXSA9IHJlcXVlc3RJZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgb3B0aW9ucyA9IHtcbiAgICAgICAgICAgICAgICAgICAgZGF0YTogSlNPTi5zdHJpbmdpZnkoc3VydmV5SW52aXRlQVBJUmVxdWVzdEJvZHkpLFxuICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiBoZWFkZXJzLFxuICAgICAgICAgICAgICAgICAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgICAgICAgICAgICAgICAgICB1cmw6IGVuZHBvaW50XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qLywgbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgeyByZXR1cm4gX19hd2FpdGVyKF90aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlLCBkYXRhLCBlbGFwc2VkVGltZUluTWlsbGlzZWNvbmRzLCBlcnJvcl8xMCwgZWxhcHNlZFRpbWVJbk1pbGxpc2Vjb25kcztcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKF9hLmxhYmVsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9hLnRyeXMucHVzaChbMCwgMiwgLCA1XSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzQgLyp5aWVsZCovLCBheGlvc0luc3RhbmNlKG9wdGlvbnMpXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UgPSBfYS5zZW50KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhID0gcmVzcG9uc2UuZGF0YTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsYXBzZWRUaW1lSW5NaWxsaXNlY29uZHMgPSB0aW1lci5taWxsaVNlY29uZHNFbGFwc2VkO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubG9nZ2VyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2dnZXIubG9nKExvZ0xldmVsXzEuTG9nTGV2ZWwuSU5GTywgRW51bXNfMi5PQ1NES1RlbGVtZXRyeUV2ZW50LkdFVFNVUlZFWUlOVklURUxJTktTVUNDRUVERUQsIHsgUmVnaW9uOiByZXNwb25zZS5kYXRhLlJlZ2lvbiwgRWxhcHNlZFRpbWVJbk1pbGxpc2Vjb25kczogZWxhcHNlZFRpbWVJbk1pbGxpc2Vjb25kcywgVHJhbnNhY3Rpb25JZDogcmVzcG9uc2UuaGVhZGVyc1tcInRyYW5zYWN0aW9uLWlkXCJdIH0sIFwiR2V0IFN1cnZleSBJbnZpdGUgTGluayBTdWNjZWVkZWRcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKGRhdGEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFszIC8qYnJlYWsqLywgNV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yXzEwID0gX2Euc2VudCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxhcHNlZFRpbWVJbk1pbGxpc2Vjb25kcyA9IHRpbWVyLm1pbGxpU2Vjb25kc0VsYXBzZWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMubG9nZ2VyKSByZXR1cm4gWzMgLypicmVhayovLCA0XTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbNCAvKnlpZWxkKi8sIExvZ2dpbmdTYW5pdGl6ZXJfMS5Mb2dnaW5nU2FuaXRpemVyLnN0cmlwRXJyb3JTZW5zaXRpdmVQcm9wZXJ0aWVzKGVycm9yXzEwKV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9hLnNlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmxvZyhMb2dMZXZlbF8xLkxvZ0xldmVsLkVSUk9SLCBFbnVtc18yLk9DU0RLVGVsZW1ldHJ5RXZlbnQuR0VUU1VSVkVZSU5WSVRFTElOS0ZBSUxFRCwgeyBFeGNlcHRpb25EZXRhaWxzOiBlcnJvcl8xMCwgRWxhcHNlZFRpbWVJbk1pbGxpc2Vjb25kczogZWxhcHNlZFRpbWVJbk1pbGxpc2Vjb25kcyB9LCBcIkdldCBTdXJ2ZXkgSW52aXRlIExpbmsgRmFpbGVkXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2EubGFiZWwgPSA0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWplY3QoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMyAvKmJyZWFrKi8sIDVdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDU6IHJldHVybiBbMiAvKnJldHVybiovXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfSk7IH0pXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEdldCBjaGF0IHRyYW5zY3JpcHRzIGZvciBjdXN0b21lci5cbiAgICAgKiBAcGFyYW0gcmVxdWVzdElkIFJlcXVlc3RJZCBvZiB0aGUgb21uaWNoYW5uZWwgc2Vzc2lvbi5cbiAgICAgKiBAcGFyYW0gY2hhdElkIENoYXQgdGhyZWFkIElkLlxuICAgICAqIEBwYXJhbSB0b2tlbiBTa3lwZSB0b2tlbi5cbiAgICAgKiBAcGFyYW0gZ2V0Q2hhdFRyYW5zY3JpcHRzT3B0aW9uYWxQYXJhbXMgT3B0aW9uYWwgcGFyYW1ldGVycyBmb3IgZ2V0IGNoYXQgdHJhbnNjcmlwdHMuXG4gICAgICovXG4gICAgU0RLLnByb3RvdHlwZS5nZXRDaGF0VHJhbnNjcmlwdHMgPSBmdW5jdGlvbiAocmVxdWVzdElkLCBjaGF0SWQsIHRva2VuLCBnZXRDaGF0VHJhbnNjcmlwdHNPcHRpb25hbFBhcmFtcykge1xuICAgICAgICBpZiAoZ2V0Q2hhdFRyYW5zY3JpcHRzT3B0aW9uYWxQYXJhbXMgPT09IHZvaWQgMCkgeyBnZXRDaGF0VHJhbnNjcmlwdHNPcHRpb25hbFBhcmFtcyA9IHt9OyB9XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciB0aW1lciwgZW5kcG9pbnQsIGF4aW9zSW5zdGFuY2UsIGF1dGhlbnRpY2F0ZWRVc2VyVG9rZW4sIGN1cnJlbnRMaXZlQ2hhdFZlcnNpb24sIGhlYWRlcnMsIG9wdGlvbnM7XG4gICAgICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgICAgIHRpbWVyID0gVGltZXJfMS5UaW1lci5USU1FUigpO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmxvZ2dlcikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmxvZ2dlci5sb2coTG9nTGV2ZWxfMS5Mb2dMZXZlbC5JTkZPLCBFbnVtc18yLk9DU0RLVGVsZW1ldHJ5RXZlbnQuR0VUQ0hBVFRSQU5TQ1JJUFRTVEFSVEVELCB7IFJlcXVlc3RJZDogcmVxdWVzdElkIH0sIFwiR2V0IENoYXQgVHJhbnNjcmlwdCBTdGFydGVkXCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbmRwb2ludCA9IHRoaXMub21uaWNoYW5uZWxDb25maWd1cmF0aW9uLm9yZ1VybCArIFwiL1wiICsgT21uaWNoYW5uZWxFbmRwb2ludHNfMS5kZWZhdWx0LkxpdmVDaGF0R2V0Q2hhdFRyYW5zY3JpcHRQYXRoICsgXCIvXCIgKyBjaGF0SWQgKyBcIi9cIiArIHJlcXVlc3RJZCArIFwiP2NoYW5uZWxJZD1cIiArIHRoaXMub21uaWNoYW5uZWxDb25maWd1cmF0aW9uLmNoYW5uZWxJZDtcbiAgICAgICAgICAgICAgICBheGlvc0luc3RhbmNlID0gYXhpb3NfMS5kZWZhdWx0LmNyZWF0ZSgpO1xuICAgICAgICAgICAgICAgIGF4aW9zUmV0cnlfMS5kZWZhdWx0KGF4aW9zSW5zdGFuY2UsIHsgcmV0cmllczogdGhpcy5jb25maWd1cmF0aW9uLm1heFJlcXVlc3RSZXRyaWVzT25GYWlsdXJlIH0pO1xuICAgICAgICAgICAgICAgIGF1dGhlbnRpY2F0ZWRVc2VyVG9rZW4gPSBnZXRDaGF0VHJhbnNjcmlwdHNPcHRpb25hbFBhcmFtcy5hdXRoZW50aWNhdGVkVXNlclRva2VuLCBjdXJyZW50TGl2ZUNoYXRWZXJzaW9uID0gZ2V0Q2hhdFRyYW5zY3JpcHRzT3B0aW9uYWxQYXJhbXMuY3VycmVudExpdmVDaGF0VmVyc2lvbjtcbiAgICAgICAgICAgICAgICBoZWFkZXJzID0gQ29uc3RhbnRzXzEuZGVmYXVsdC5kZWZhdWx0SGVhZGVycztcbiAgICAgICAgICAgICAgICBoZWFkZXJzW09tbmljaGFubmVsSFRUUEhlYWRlcnNfMS5kZWZhdWx0Lm9yZ2FuaXphdGlvbklkXSA9IHRoaXMub21uaWNoYW5uZWxDb25maWd1cmF0aW9uLm9yZ0lkO1xuICAgICAgICAgICAgICAgIGhlYWRlcnNbT21uaWNoYW5uZWxIVFRQSGVhZGVyc18xLmRlZmF1bHQud2lkZ2V0QXBwSWRdID0gdGhpcy5vbW5pY2hhbm5lbENvbmZpZ3VyYXRpb24ud2lkZ2V0SWQ7XG4gICAgICAgICAgICAgICAgaGVhZGVyc1tPbW5pY2hhbm5lbEhUVFBIZWFkZXJzXzEuZGVmYXVsdC5hdXRob3JpemF0aW9uXSA9IHRva2VuO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmxpdmVDaGF0VmVyc2lvbiA9PT0gRW51bXNfMS5MaXZlQ2hhdFZlcnNpb24uVjIgfHwgKGN1cnJlbnRMaXZlQ2hhdFZlcnNpb24gJiYgY3VycmVudExpdmVDaGF0VmVyc2lvbiA9PT0gRW51bXNfMS5MaXZlQ2hhdFZlcnNpb24uVjIpKSB7XG4gICAgICAgICAgICAgICAgICAgIGVuZHBvaW50ID0gdGhpcy5vbW5pY2hhbm5lbENvbmZpZ3VyYXRpb24ub3JnVXJsICsgXCIvXCIgKyBPbW5pY2hhbm5lbEVuZHBvaW50c18xLmRlZmF1bHQuTGl2ZUNoYXR2MkdldENoYXRUcmFuc2NyaXB0UGF0aCArIFwiL1wiICsgY2hhdElkICsgXCIvXCIgKyByZXF1ZXN0SWQgKyBcIj9jaGFubmVsSWQ9XCIgKyB0aGlzLm9tbmljaGFubmVsQ29uZmlndXJhdGlvbi5jaGFubmVsSWQ7XG4gICAgICAgICAgICAgICAgICAgIGlmIChhdXRoZW50aWNhdGVkVXNlclRva2VuKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRwb2ludCA9IHRoaXMub21uaWNoYW5uZWxDb25maWd1cmF0aW9uLm9yZ1VybCArIFwiL1wiICsgT21uaWNoYW5uZWxFbmRwb2ludHNfMS5kZWZhdWx0LkxpdmVDaGF0djJBdXRoR2V0Q2hhdFRyYW5zY3JpcHRQYXRoICsgXCIvXCIgKyBjaGF0SWQgKyBcIi9cIiArIHJlcXVlc3RJZCArIFwiP2NoYW5uZWxJZD1cIiArIHRoaXMub21uaWNoYW5uZWxDb25maWd1cmF0aW9uLmNoYW5uZWxJZDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChhdXRoZW50aWNhdGVkVXNlclRva2VuKSB7XG4gICAgICAgICAgICAgICAgICAgIGVuZHBvaW50ID0gdGhpcy5vbW5pY2hhbm5lbENvbmZpZ3VyYXRpb24ub3JnVXJsICsgXCIvXCIgKyBPbW5pY2hhbm5lbEVuZHBvaW50c18xLmRlZmF1bHQuTGl2ZUNoYXRBdXRoR2V0Q2hhdFRyYW5zY3JpcHRQYXRoICsgXCIvXCIgKyBjaGF0SWQgKyBcIi9cIiArIHJlcXVlc3RJZCArIFwiP2NoYW5uZWxJZD1cIiArIHRoaXMub21uaWNoYW5uZWxDb25maWd1cmF0aW9uLmNoYW5uZWxJZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgb3B0aW9ucyA9IHtcbiAgICAgICAgICAgICAgICAgICAgaGVhZGVyczogaGVhZGVycyxcbiAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiBcIkdFVFwiLFxuICAgICAgICAgICAgICAgICAgICB1cmw6IGVuZHBvaW50XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qLywgbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgeyByZXR1cm4gX19hd2FpdGVyKF90aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlLCBlbGFwc2VkVGltZUluTWlsbGlzZWNvbmRzLCBkYXRhLCBlcnJvcl8xMSwgZWxhcHNlZFRpbWVJbk1pbGxpc2Vjb25kcztcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKF9hLmxhYmVsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9hLnRyeXMucHVzaChbMCwgMiwgLCA1XSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzQgLyp5aWVsZCovLCBheGlvc0luc3RhbmNlKG9wdGlvbnMpXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UgPSBfYS5zZW50KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGFwc2VkVGltZUluTWlsbGlzZWNvbmRzID0gdGltZXIubWlsbGlTZWNvbmRzRWxhcHNlZDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgPSByZXNwb25zZS5kYXRhO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubG9nZ2VyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2dnZXIubG9nKExvZ0xldmVsXzEuTG9nTGV2ZWwuSU5GTywgRW51bXNfMi5PQ1NES1RlbGVtZXRyeUV2ZW50LkdFVENIQVRUUkFOU0NSSVBUU1VDQ0VFREVELCB7IFJlcXVlc3RJZDogcmVxdWVzdElkLCBSZWdpb246IHJlc3BvbnNlLmRhdGEuUmVnaW9uLCBFbGFwc2VkVGltZUluTWlsbGlzZWNvbmRzOiBlbGFwc2VkVGltZUluTWlsbGlzZWNvbmRzLCBUcmFuc2FjdGlvbklkOiByZXNwb25zZS5oZWFkZXJzW1widHJhbnNhY3Rpb24taWRcIl0gfSwgXCJHZXQgQ2hhdCBUcmFuc2NyaXB0IFN1Y2NlZWRlZFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoZGF0YSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzMgLypicmVhayovLCA1XTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JfMTEgPSBfYS5zZW50KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGFwc2VkVGltZUluTWlsbGlzZWNvbmRzID0gdGltZXIubWlsbGlTZWNvbmRzRWxhcHNlZDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5sb2dnZXIpIHJldHVybiBbMyAvKmJyZWFrKi8sIDRdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFs0IC8qeWllbGQqLywgTG9nZ2luZ1Nhbml0aXplcl8xLkxvZ2dpbmdTYW5pdGl6ZXIuc3RyaXBFcnJvclNlbnNpdGl2ZVByb3BlcnRpZXMoZXJyb3JfMTEpXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2Euc2VudCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2dnZXIubG9nKExvZ0xldmVsXzEuTG9nTGV2ZWwuRVJST1IsIEVudW1zXzIuT0NTREtUZWxlbWV0cnlFdmVudC5HRVRDSEFUVFJBTlNDUklQVEZBSUxFRCwgeyBSZXF1ZXN0SWQ6IHJlcXVlc3RJZCwgRXhjZXB0aW9uRGV0YWlsczogZXJyb3JfMTEsIEVsYXBzZWRUaW1lSW5NaWxsaXNlY29uZHM6IGVsYXBzZWRUaW1lSW5NaWxsaXNlY29uZHMgfSwgXCJHZXQgQ2hhdCBUcmFuc2NyaXB0IEZhaWxlZFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9hLmxhYmVsID0gNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGVycm9yXzExKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMyAvKmJyZWFrKi8sIDVdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDU6IHJldHVybiBbMiAvKnJldHVybiovXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfSk7IH0pXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIEVtYWlsIHRyYW5zY3JpcHQgdG8gY3VzdG9tZXIuXG4gICAgICogQHBhcmFtIHJlcXVlc3RJZCBSZXF1ZXN0SWQgb2YgdGhlIG9tbmljaGFubmVsIHNlc3Npb24uXG4gICAgICogQHBhcmFtIHRva2VuIFNreXBlIHRva2VuLlxuICAgICAqIEBwYXJhbSBlbWFpbFJlcXVlc3RCb2R5IEVtYWlsIHJlcXVlc3QgYm9keS5cbiAgICAgKiBAcGFyYW0gZW1haWxUcmFuc2NyaXB0T3B0aW9uYWxQYXJhbXMgT3B0aW9uYWwgcGFyYW1ldGVycyBmb3IgZW1haWwgdHJhbnNjcmlwdC5cbiAgICAgKi9cbiAgICBTREsucHJvdG90eXBlLmVtYWlsVHJhbnNjcmlwdCA9IGZ1bmN0aW9uIChyZXF1ZXN0SWQsIHRva2VuLCBlbWFpbFJlcXVlc3RCb2R5LCBlbWFpbFRyYW5zY3JpcHRPcHRpb25hbFBhcmFtcykge1xuICAgICAgICBpZiAoZW1haWxUcmFuc2NyaXB0T3B0aW9uYWxQYXJhbXMgPT09IHZvaWQgMCkgeyBlbWFpbFRyYW5zY3JpcHRPcHRpb25hbFBhcmFtcyA9IHt9OyB9XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciB0aW1lciwgZW5kcG9pbnQsIGF4aW9zSW5zdGFuY2UsIGF1dGhlbnRpY2F0ZWRVc2VyVG9rZW4sIGhlYWRlcnMsIG9wdGlvbnM7XG4gICAgICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgICAgIHRpbWVyID0gVGltZXJfMS5UaW1lci5USU1FUigpO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmxvZ2dlcikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmxvZ2dlci5sb2coTG9nTGV2ZWxfMS5Mb2dMZXZlbC5JTkZPLCBFbnVtc18yLk9DU0RLVGVsZW1ldHJ5RXZlbnQuRU1BSUxUUkFOU0NSSVBUU1RBUlRFRCwgeyBSZXF1ZXN0SWQ6IHJlcXVlc3RJZCB9LCBcIkVtYWlsIFRyYW5zY3JpcHQgU3RhcnRlZFwiKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZW5kcG9pbnQgPSB0aGlzLm9tbmljaGFubmVsQ29uZmlndXJhdGlvbi5vcmdVcmwgKyBcIi9cIiArIE9tbmljaGFubmVsRW5kcG9pbnRzXzEuZGVmYXVsdC5MaXZlQ2hhdFRyYW5zY3JpcHRFbWFpbFJlcXVlc3RQYXRoICsgXCIvXCIgKyByZXF1ZXN0SWQgKyBcIj9jaGFubmVsSWQ9XCIgKyB0aGlzLm9tbmljaGFubmVsQ29uZmlndXJhdGlvbi5jaGFubmVsSWQ7XG4gICAgICAgICAgICAgICAgYXhpb3NJbnN0YW5jZSA9IGF4aW9zXzEuZGVmYXVsdC5jcmVhdGUoKTtcbiAgICAgICAgICAgICAgICBheGlvc1JldHJ5XzEuZGVmYXVsdChheGlvc0luc3RhbmNlLCB7IHJldHJpZXM6IHRoaXMuY29uZmlndXJhdGlvbi5tYXhSZXF1ZXN0UmV0cmllc09uRmFpbHVyZSB9KTtcbiAgICAgICAgICAgICAgICBhdXRoZW50aWNhdGVkVXNlclRva2VuID0gZW1haWxUcmFuc2NyaXB0T3B0aW9uYWxQYXJhbXMuYXV0aGVudGljYXRlZFVzZXJUb2tlbjtcbiAgICAgICAgICAgICAgICBoZWFkZXJzID0gQ29uc3RhbnRzXzEuZGVmYXVsdC5kZWZhdWx0SGVhZGVycztcbiAgICAgICAgICAgICAgICBoZWFkZXJzW09tbmljaGFubmVsSFRUUEhlYWRlcnNfMS5kZWZhdWx0Lm9yZ2FuaXphdGlvbklkXSA9IHRoaXMub21uaWNoYW5uZWxDb25maWd1cmF0aW9uLm9yZ0lkO1xuICAgICAgICAgICAgICAgIGhlYWRlcnNbT21uaWNoYW5uZWxIVFRQSGVhZGVyc18xLmRlZmF1bHQud2lkZ2V0QXBwSWRdID0gdGhpcy5vbW5pY2hhbm5lbENvbmZpZ3VyYXRpb24ud2lkZ2V0SWQ7XG4gICAgICAgICAgICAgICAgaGVhZGVyc1tPbW5pY2hhbm5lbEhUVFBIZWFkZXJzXzEuZGVmYXVsdC5hdXRob3JpemF0aW9uXSA9IHRva2VuO1xuICAgICAgICAgICAgICAgIGlmIChhdXRoZW50aWNhdGVkVXNlclRva2VuKSB7XG4gICAgICAgICAgICAgICAgICAgIGVuZHBvaW50ID0gdGhpcy5vbW5pY2hhbm5lbENvbmZpZ3VyYXRpb24ub3JnVXJsICsgXCIvXCIgKyBPbW5pY2hhbm5lbEVuZHBvaW50c18xLmRlZmF1bHQuTGl2ZUNoYXRBdXRoVHJhbnNjcmlwdEVtYWlsUmVxdWVzdFBhdGggKyBcIi9cIiArIHJlcXVlc3RJZCArIFwiP2NoYW5uZWxJZD1cIiArIHRoaXMub21uaWNoYW5uZWxDb25maWd1cmF0aW9uLmNoYW5uZWxJZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgb3B0aW9ucyA9IHtcbiAgICAgICAgICAgICAgICAgICAgZGF0YTogSlNPTi5zdHJpbmdpZnkoZW1haWxSZXF1ZXN0Qm9keSksXG4gICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IGhlYWRlcnMsXG4gICAgICAgICAgICAgICAgICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgICAgICAgICAgICAgICAgIHVybDogZW5kcG9pbnRcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovLCBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7IHJldHVybiBfX2F3YWl0ZXIoX3RoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UsIGVsYXBzZWRUaW1lSW5NaWxsaXNlY29uZHMsIGVycm9yXzEyLCBlbGFwc2VkVGltZUluTWlsbGlzZWNvbmRzO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoX2EubGFiZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2EudHJ5cy5wdXNoKFswLCAyLCAsIDVdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbNCAvKnlpZWxkKi8sIGF4aW9zSW5zdGFuY2Uob3B0aW9ucyldO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZSA9IF9hLnNlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsYXBzZWRUaW1lSW5NaWxsaXNlY29uZHMgPSB0aW1lci5taWxsaVNlY29uZHNFbGFwc2VkO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubG9nZ2VyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2dnZXIubG9nKExvZ0xldmVsXzEuTG9nTGV2ZWwuSU5GTywgRW51bXNfMi5PQ1NES1RlbGVtZXRyeUV2ZW50LkVNQUlMVFJBTlNDUklQVFNVQ0NFRURFRCwgeyBSZXF1ZXN0SWQ6IHJlcXVlc3RJZCwgUmVnaW9uOiByZXNwb25zZS5kYXRhLlJlZ2lvbiwgRWxhcHNlZFRpbWVJbk1pbGxpc2Vjb25kczogZWxhcHNlZFRpbWVJbk1pbGxpc2Vjb25kcywgVHJhbnNhY3Rpb25JZDogcmVzcG9uc2UuaGVhZGVyc1tcInRyYW5zYWN0aW9uLWlkXCJdIH0sIFwiRW1haWwgVHJhbnNjcmlwdCBTdWNjZWVkZWRcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzMgLypicmVhayovLCA1XTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JfMTIgPSBfYS5zZW50KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGFwc2VkVGltZUluTWlsbGlzZWNvbmRzID0gdGltZXIubWlsbGlTZWNvbmRzRWxhcHNlZDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5sb2dnZXIpIHJldHVybiBbMyAvKmJyZWFrKi8sIDRdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFs0IC8qeWllbGQqLywgTG9nZ2luZ1Nhbml0aXplcl8xLkxvZ2dpbmdTYW5pdGl6ZXIuc3RyaXBFcnJvclNlbnNpdGl2ZVByb3BlcnRpZXMoZXJyb3JfMTIpXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2Euc2VudCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2dnZXIubG9nKExvZ0xldmVsXzEuTG9nTGV2ZWwuRVJST1IsIEVudW1zXzIuT0NTREtUZWxlbWV0cnlFdmVudC5FTUFJTFRSQU5TQ1JJUFRGQUlMRUQsIHsgUmVxdWVzdElkOiByZXF1ZXN0SWQsIEV4Y2VwdGlvbkRldGFpbHM6IGVycm9yXzEyLCBFbGFwc2VkVGltZUluTWlsbGlzZWNvbmRzOiBlbGFwc2VkVGltZUluTWlsbGlzZWNvbmRzIH0sIFwiRW1haWwgVHJhbnNjcmlwdCBGYWlsZWRcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYS5sYWJlbCA9IDQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFszIC8qYnJlYWsqLywgNV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNTogcmV0dXJuIFsyIC8qcmV0dXJuKi9dO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9KTsgfSldO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogRmV0Y2ggZGF0YSBtYXNraW5nIGluZm8gb2YgdGhlIG9yZy5cbiAgICAgKiBAcGFyYW0gcmVxdWVzdElkIFJlcXVlc3RJZCBvZiB0aGUgb21uaWNoYW5uZWwgc2Vzc2lvbiAoT3B0aW9uYWwpLlxuICAgICAqL1xuICAgIFNESy5wcm90b3R5cGUuZmV0Y2hEYXRhTWFza2luZ0luZm8gPSBmdW5jdGlvbiAocmVxdWVzdElkKSB7XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciB0aW1lciwgZW5kcG9pbnQsIGF4aW9zSW5zdGFuY2UsIGhlYWRlcnMsIG9wdGlvbnM7XG4gICAgICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgICAgIHRpbWVyID0gVGltZXJfMS5UaW1lci5USU1FUigpO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmxvZ2dlcikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmxvZ2dlci5sb2coTG9nTGV2ZWxfMS5Mb2dMZXZlbC5JTkZPLCBFbnVtc18yLk9DU0RLVGVsZW1ldHJ5RXZlbnQuRkVUQ0hEQVRBTUFTS0lOR1NUQVJURUQsIHsgUmVxdWVzdElkOiByZXF1ZXN0SWQgfSwgXCJGZXRjaCBEYXRhIE1hc2tpbmcgU3RhcnRlZFwiKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKCFyZXF1ZXN0SWQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVxdWVzdElkID0gdXVpZF8xLnV1aWR2NCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbmRwb2ludCA9IHRoaXMub21uaWNoYW5uZWxDb25maWd1cmF0aW9uLm9yZ1VybCArIFwiL1wiICsgT21uaWNoYW5uZWxFbmRwb2ludHNfMS5kZWZhdWx0LkxpdmVDaGF0RmV0Y2hEYXRhTWFza2luZ0luZm9QYXRoICsgXCIvXCIgKyB0aGlzLm9tbmljaGFubmVsQ29uZmlndXJhdGlvbi5vcmdJZDtcbiAgICAgICAgICAgICAgICBheGlvc0luc3RhbmNlID0gYXhpb3NfMS5kZWZhdWx0LmNyZWF0ZSgpO1xuICAgICAgICAgICAgICAgIGF4aW9zUmV0cnlfMS5kZWZhdWx0KGF4aW9zSW5zdGFuY2UsIHsgcmV0cmllczogdGhpcy5jb25maWd1cmF0aW9uLm1heFJlcXVlc3RSZXRyaWVzT25GYWlsdXJlIH0pO1xuICAgICAgICAgICAgICAgIGhlYWRlcnMgPSBDb25zdGFudHNfMS5kZWZhdWx0LmRlZmF1bHRIZWFkZXJzO1xuICAgICAgICAgICAgICAgIGhlYWRlcnNbT21uaWNoYW5uZWxIVFRQSGVhZGVyc18xLmRlZmF1bHQub3JnYW5pemF0aW9uSWRdID0gdGhpcy5vbW5pY2hhbm5lbENvbmZpZ3VyYXRpb24ub3JnSWQ7XG4gICAgICAgICAgICAgICAgaGVhZGVyc1tPbW5pY2hhbm5lbEhUVFBIZWFkZXJzXzEuZGVmYXVsdC5yZXF1ZXN0SWRdID0gcmVxdWVzdElkO1xuICAgICAgICAgICAgICAgIG9wdGlvbnMgPSB7XG4gICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IGhlYWRlcnMsXG4gICAgICAgICAgICAgICAgICAgIG1ldGhvZDogXCJHRVRcIixcbiAgICAgICAgICAgICAgICAgICAgdXJsOiBlbmRwb2ludFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi8sIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsgcmV0dXJuIF9fYXdhaXRlcihfdGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZXNwb25zZSwgZWxhcHNlZFRpbWVJbk1pbGxpc2Vjb25kcywgZGF0YSwgZXJyb3JfMTMsIGVsYXBzZWRUaW1lSW5NaWxsaXNlY29uZHM7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IodGhpcywgZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChfYS5sYWJlbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYS50cnlzLnB1c2goWzAsIDIsICwgNV0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFs0IC8qeWllbGQqLywgYXhpb3NJbnN0YW5jZShvcHRpb25zKV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gX2Euc2VudCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxhcHNlZFRpbWVJbk1pbGxpc2Vjb25kcyA9IHRpbWVyLm1pbGxpU2Vjb25kc0VsYXBzZWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhID0gcmVzcG9uc2UuZGF0YTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmxvZ2dlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmxvZyhMb2dMZXZlbF8xLkxvZ0xldmVsLklORk8sIEVudW1zXzIuT0NTREtUZWxlbWV0cnlFdmVudC5GRVRDSERBVEFNQVNLSU5HU1VDQ0VFREVELCB7IFJlcXVlc3RJZDogcmVxdWVzdElkLCBSZWdpb246IHJlc3BvbnNlLmRhdGEuUmVnaW9uLCBFbGFwc2VkVGltZUluTWlsbGlzZWNvbmRzOiBlbGFwc2VkVGltZUluTWlsbGlzZWNvbmRzLCBUcmFuc2FjdGlvbklkOiByZXNwb25zZS5oZWFkZXJzW1widHJhbnNhY3Rpb24taWRcIl0gfSwgXCJGZXRjaCBEYXRhIE1hc2tpbmcgU3VjY2VlZGVkXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShkYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMyAvKmJyZWFrKi8sIDVdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcl8xMyA9IF9hLnNlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsYXBzZWRUaW1lSW5NaWxsaXNlY29uZHMgPSB0aW1lci5taWxsaVNlY29uZHNFbGFwc2VkO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLmxvZ2dlcikgcmV0dXJuIFszIC8qYnJlYWsqLywgNF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzQgLyp5aWVsZCovLCBMb2dnaW5nU2FuaXRpemVyXzEuTG9nZ2luZ1Nhbml0aXplci5zdHJpcEVycm9yU2Vuc2l0aXZlUHJvcGVydGllcyhlcnJvcl8xMyldO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYS5zZW50KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvZ2dlci5sb2coTG9nTGV2ZWxfMS5Mb2dMZXZlbC5FUlJPUiwgRW51bXNfMi5PQ1NES1RlbGVtZXRyeUV2ZW50LkZFVENIREFUQU1BU0tJTkdGQUlMRUQsIHsgUmVxdWVzdElkOiByZXF1ZXN0SWQsIEV4Y2VwdGlvbkRldGFpbHM6IGVycm9yXzEzLCBFbGFwc2VkVGltZUluTWlsbGlzZWNvbmRzOiBlbGFwc2VkVGltZUluTWlsbGlzZWNvbmRzIH0sIFwiRmV0Y2ggRGF0YSBNYXNraW5nIEZhaWxlZFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9hLmxhYmVsID0gNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzMgLypicmVhayovLCA1XTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA1OiByZXR1cm4gWzIgLypyZXR1cm4qL107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH0pOyB9KV07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBNYWtlcyBhIHNlY29uZGFyeSBjaGFubmVsIGV2ZW50IG5ldHdvcmsgY2FsbCB0byBPbW5pY2hhbm5lbC5cbiAgICAgKiBAcGFyYW0gcmVxdWVzdElkIFJlcXVlc3RJZCB0byB1c2UgZm9yIHNlY29uZGFyeSBjaGFubmVsIGV2ZW50XG4gICAgICogQHBhcmFtIHNlY29uZGFyeUNoYW5uZWxFdmVudFJlcXVlc3RCb2R5IHNlY29uZGFyeUNoYW5uZWwgZXZlbnQgcmVxdWVzdCBib2R5XG4gICAgICogQHBhcmFtIHNlY29uZGFyeUNoYW5uZWxFdmVudE9wdGlvbmFsUGFyYW1zIE9wdGlvbmFsIHBhcmFtZXRlcnMgZm9yIHNlY29uZGFyeSBjaGFubmVsIGV2ZW50cy5cbiAgICAgKi9cbiAgICBTREsucHJvdG90eXBlLm1ha2VTZWNvbmRhcnlDaGFubmVsRXZlbnRSZXF1ZXN0ID0gZnVuY3Rpb24gKHJlcXVlc3RJZCwgc2Vjb25kYXJ5Q2hhbm5lbEV2ZW50UmVxdWVzdEJvZHksIHNlY29uZGFyeUNoYW5uZWxFdmVudE9wdGlvbmFsUGFyYW1zKSB7XG4gICAgICAgIGlmIChzZWNvbmRhcnlDaGFubmVsRXZlbnRPcHRpb25hbFBhcmFtcyA9PT0gdm9pZCAwKSB7IHNlY29uZGFyeUNoYW5uZWxFdmVudE9wdGlvbmFsUGFyYW1zID0ge307IH1cbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIHRpbWVyLCBlbmRwb2ludCwgYXhpb3NJbnN0YW5jZSwgYXV0aGVudGljYXRlZFVzZXJUb2tlbiwgaGVhZGVycywgb3B0aW9ucywgcmVzcG9uc2UsIGVsYXBzZWRUaW1lSW5NaWxsaXNlY29uZHMsIGRhdGEsIGVycm9yXzE0LCBlbGFwc2VkVGltZUluTWlsbGlzZWNvbmRzO1xuICAgICAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAoX2EubGFiZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICAgICAgdGltZXIgPSBUaW1lcl8xLlRpbWVyLlRJTUVSKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5sb2dnZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvZ2dlci5sb2coTG9nTGV2ZWxfMS5Mb2dMZXZlbC5JTkZPLCBFbnVtc18yLk9DU0RLVGVsZW1ldHJ5RXZlbnQuU0VDT05EQVJZQ0hBTk5FTEVWRU5UUkVRVUVTVFNUQVJURUQsIHsgUmVxdWVzdElkOiByZXF1ZXN0SWQgfSwgXCJTZWNvbmRhcnkgQ2hhbm5lbCBFdmVudCBSZXF1ZXN0IFN0YXJ0ZWRcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRwb2ludCA9IHRoaXMub21uaWNoYW5uZWxDb25maWd1cmF0aW9uLm9yZ1VybCArIFwiL1wiICsgT21uaWNoYW5uZWxFbmRwb2ludHNfMS5kZWZhdWx0LkxpdmVDaGF0U2Vjb25kYXJ5Q2hhbm5lbEV2ZW50UGF0aCArIFwiL1wiICsgdGhpcy5vbW5pY2hhbm5lbENvbmZpZ3VyYXRpb24ub3JnSWQgKyBcIi9cIiArIHRoaXMub21uaWNoYW5uZWxDb25maWd1cmF0aW9uLndpZGdldElkICsgXCIvXCIgKyByZXF1ZXN0SWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBheGlvc0luc3RhbmNlID0gYXhpb3NfMS5kZWZhdWx0LmNyZWF0ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYXhpb3NSZXRyeV8xLmRlZmF1bHQoYXhpb3NJbnN0YW5jZSwgeyByZXRyaWVzOiB0aGlzLmNvbmZpZ3VyYXRpb24ubWF4UmVxdWVzdFJldHJpZXNPbkZhaWx1cmUgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBhdXRoZW50aWNhdGVkVXNlclRva2VuID0gc2Vjb25kYXJ5Q2hhbm5lbEV2ZW50T3B0aW9uYWxQYXJhbXMuYXV0aGVudGljYXRlZFVzZXJUb2tlbjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnMgPSBDb25zdGFudHNfMS5kZWZhdWx0LmRlZmF1bHRIZWFkZXJzO1xuICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyc1tPbW5pY2hhbm5lbEhUVFBIZWFkZXJzXzEuZGVmYXVsdC5vcmdhbml6YXRpb25JZF0gPSB0aGlzLm9tbmljaGFubmVsQ29uZmlndXJhdGlvbi5vcmdJZDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhdXRoZW50aWNhdGVkVXNlclRva2VuKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyc1tPbW5pY2hhbm5lbEhUVFBIZWFkZXJzXzEuZGVmYXVsdC5hdXRoZW50aWNhdGVkVXNlclRva2VuXSA9IGF1dGhlbnRpY2F0ZWRVc2VyVG9rZW47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kcG9pbnQgPSB0aGlzLm9tbmljaGFubmVsQ29uZmlndXJhdGlvbi5vcmdVcmwgKyBcIi9cIiArIE9tbmljaGFubmVsRW5kcG9pbnRzXzEuZGVmYXVsdC5MaXZlQ2hhdEF1dGhTZWNvbmRhcnlDaGFubmVsRXZlbnRQYXRoICsgXCIvXCIgKyB0aGlzLm9tbmljaGFubmVsQ29uZmlndXJhdGlvbi5vcmdJZCArIFwiL1wiICsgdGhpcy5vbW5pY2hhbm5lbENvbmZpZ3VyYXRpb24ud2lkZ2V0SWQgKyBcIi9cIiArIHJlcXVlc3RJZDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZHBvaW50ICs9IFwiP2NoYW5uZWxJZD1cIiArIENvbnN0YW50c18xLmRlZmF1bHQuZGVmYXVsdENoYW5uZWxJZDtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogSlNPTi5zdHJpbmdpZnkoc2Vjb25kYXJ5Q2hhbm5lbEV2ZW50UmVxdWVzdEJvZHkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IGhlYWRlcnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiBcIlBPU1RcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGVuZHBvaW50XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgX2EubGFiZWwgPSAxO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgICAgICBfYS50cnlzLnB1c2goWzEsIDMsICwgNl0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFs0IC8qeWllbGQqLywgYXhpb3NJbnN0YW5jZShvcHRpb25zKV07XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gX2Euc2VudCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZWxhcHNlZFRpbWVJbk1pbGxpc2Vjb25kcyA9IHRpbWVyLm1pbGxpU2Vjb25kc0VsYXBzZWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhID0gcmVzcG9uc2UuZGF0YTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmxvZ2dlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmxvZyhMb2dMZXZlbF8xLkxvZ0xldmVsLklORk8sIEVudW1zXzIuT0NTREtUZWxlbWV0cnlFdmVudC5TRUNPTkRBUllDSEFOTkVMRVZFTlRSRVFVRVNUU1VDQ0VFREVELCB7IFJlcXVlc3RJZDogcmVxdWVzdElkLCBSZWdpb246IGRhdGEuUmVnaW9uLCBFbGFwc2VkVGltZUluTWlsbGlzZWNvbmRzOiBlbGFwc2VkVGltZUluTWlsbGlzZWNvbmRzLCBUcmFuc2FjdGlvbklkOiByZXNwb25zZS5oZWFkZXJzW1widHJhbnNhY3Rpb24taWRcIl0gfSwgXCJTZWNvbmRhcnkgQ2hhbm5lbCBFdmVudCBSZXF1ZXN0IFN1Y2NlZWRlZFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMyAvKmJyZWFrKi8sIDZdO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvcl8xNCA9IF9hLnNlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsYXBzZWRUaW1lSW5NaWxsaXNlY29uZHMgPSB0aW1lci5taWxsaVNlY29uZHNFbGFwc2VkO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLmxvZ2dlcikgcmV0dXJuIFszIC8qYnJlYWsqLywgNV07XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzQgLyp5aWVsZCovLCBMb2dnaW5nU2FuaXRpemVyXzEuTG9nZ2luZ1Nhbml0aXplci5zdHJpcEVycm9yU2Vuc2l0aXZlUHJvcGVydGllcyhlcnJvcl8xNCldO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICAgICAgICAgICAgICBfYS5zZW50KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvZ2dlci5sb2coTG9nTGV2ZWxfMS5Mb2dMZXZlbC5FUlJPUiwgRW51bXNfMi5PQ1NES1RlbGVtZXRyeUV2ZW50LlNFQ09OREFSWUNIQU5ORUxFVkVOVFJFUVVFU1RGQUlMRUQsIHsgUmVxdWVzdElkOiByZXF1ZXN0SWQsIEV4Y2VwdGlvbkRldGFpbHM6IGVycm9yXzE0LCBFbGFwc2VkVGltZUluTWlsbGlzZWNvbmRzOiBlbGFwc2VkVGltZUluTWlsbGlzZWNvbmRzIH0sIFwiU2Vjb25kYXJ5IENoYW5uZWwgRXZlbnQgUmVxdWVzdCBGYWlsZWRcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICBfYS5sYWJlbCA9IDU7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNTogdGhyb3cgZXJyb3JfMTQ7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNjogcmV0dXJuIFsyIC8qcmV0dXJuKi9dO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9O1xuICAgIC8qKiBTZW5kIHR5cGluZyBpbmRpY2F0b3JcbiAgICAgKiBAcGFyYW0gcmVxdWVzdElkIFJlcXVlc3RJZCBvZiB0aGUgb21uaWNoYW5uZWwgc2Vzc2lvbi5cbiAgICAgKi9cbiAgICBTREsucHJvdG90eXBlLnNlbmRUeXBpbmdJbmRpY2F0b3IgPSBmdW5jdGlvbiAocmVxdWVzdElkLCBjdXJyZW50TGl2ZUNoYXRWZXJzaW9uLCBzZW5kVHlwaW5nSW5kaWNhdG9yT3B0aW9uYWxQYXJhbXMpIHtcbiAgICAgICAgaWYgKHNlbmRUeXBpbmdJbmRpY2F0b3JPcHRpb25hbFBhcmFtcyA9PT0gdm9pZCAwKSB7IHNlbmRUeXBpbmdJbmRpY2F0b3JPcHRpb25hbFBhcmFtcyA9IHt9OyB9XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciB0aW1lciwgY3VzdG9tZXJEaXNwbGF5TmFtZSwgZW5kcG9pbnQsIGF4aW9zSW5zdGFuY2UsIGhlYWRlcnMsIG9wdGlvbnM7XG4gICAgICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgICAgIC8vIGF2b2lkaW5nIGxvZ2dpbmcgSW5mbyBmb3IgdHlwaW5naW5kaWNhdG9yIHRvIHJlZHVjZSBsb2cgdHJhZmZpY1xuICAgICAgICAgICAgICAgIGlmICghY3VycmVudExpdmVDaGF0VmVyc2lvbiB8fCBjdXJyZW50TGl2ZUNoYXRWZXJzaW9uICE9PSBFbnVtc18xLkxpdmVDaGF0VmVyc2lvbi5WMikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qLywgUHJvbWlzZS5yZXNvbHZlKCldO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aW1lciA9IFRpbWVyXzEuVGltZXIuVElNRVIoKTtcbiAgICAgICAgICAgICAgICBjdXN0b21lckRpc3BsYXlOYW1lID0gc2VuZFR5cGluZ0luZGljYXRvck9wdGlvbmFsUGFyYW1zLmN1c3RvbWVyRGlzcGxheU5hbWU7XG4gICAgICAgICAgICAgICAgaWYgKCFjdXJyZW50TGl2ZUNoYXRWZXJzaW9uIHx8IGN1cnJlbnRMaXZlQ2hhdFZlcnNpb24gIT09IEVudW1zXzEuTGl2ZUNoYXRWZXJzaW9uLlYyKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVHlwaW5nIGluZGljYXRvciBpcyBvbmx5IHN1cHBvcnRlZCBvbiB2MicpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbmRwb2ludCA9IHRoaXMub21uaWNoYW5uZWxDb25maWd1cmF0aW9uLm9yZ1VybCArIFwiL1wiICsgT21uaWNoYW5uZWxFbmRwb2ludHNfMS5kZWZhdWx0LlNlbmRUeXBpbmdJbmRpY2F0b3JQYXRoICsgXCIvXCIgKyByZXF1ZXN0SWQ7XG4gICAgICAgICAgICAgICAgYXhpb3NJbnN0YW5jZSA9IGF4aW9zXzEuZGVmYXVsdC5jcmVhdGUoKTtcbiAgICAgICAgICAgICAgICBoZWFkZXJzID0gQ29uc3RhbnRzXzEuZGVmYXVsdC5kZWZhdWx0SGVhZGVycztcbiAgICAgICAgICAgICAgICBoZWFkZXJzW09tbmljaGFubmVsSFRUUEhlYWRlcnNfMS5kZWZhdWx0Lm9yZ2FuaXphdGlvbklkXSA9IHRoaXMub21uaWNoYW5uZWxDb25maWd1cmF0aW9uLm9yZ0lkO1xuICAgICAgICAgICAgICAgIGlmIChjdXN0b21lckRpc3BsYXlOYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgIGhlYWRlcnNbQ29uc3RhbnRzXzEuZGVmYXVsdC5jdXN0b21lckRpc3BsYXlOYW1lXSA9IGN1c3RvbWVyRGlzcGxheU5hbWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG9wdGlvbnMgPSB7XG4gICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IGhlYWRlcnMsXG4gICAgICAgICAgICAgICAgICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgICAgICAgICAgICAgICAgIHVybDogZW5kcG9pbnRcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovLCBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7IHJldHVybiBfX2F3YWl0ZXIoX3RoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UsIGVsYXBzZWRUaW1lSW5NaWxsaXNlY29uZHMsIGRhdGEsIGVycm9yXzE1LCBlbGFwc2VkVGltZUluTWlsbGlzZWNvbmRzO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoX2EubGFiZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2EudHJ5cy5wdXNoKFswLCAyLCAsIDVdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbNCAvKnlpZWxkKi8sIGF4aW9zSW5zdGFuY2Uob3B0aW9ucyldO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZSA9IF9hLnNlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsYXBzZWRUaW1lSW5NaWxsaXNlY29uZHMgPSB0aW1lci5taWxsaVNlY29uZHNFbGFwc2VkO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSA9IHJlc3BvbnNlLmRhdGE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5sb2dnZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvZ2dlci5sb2coTG9nTGV2ZWxfMS5Mb2dMZXZlbC5JTkZPLCBFbnVtc18yLk9DU0RLVGVsZW1ldHJ5RXZlbnQuU0VORFRZUElOR0lORElDQVRPUlNVQ0NFRURFRCwgeyBSZXF1ZXN0SWQ6IHJlcXVlc3RJZCwgUmVnaW9uOiBkYXRhLlJlZ2lvbiwgRWxhcHNlZFRpbWVJbk1pbGxpc2Vjb25kczogZWxhcHNlZFRpbWVJbk1pbGxpc2Vjb25kcywgVHJhbnNhY3Rpb25JZDogcmVzcG9uc2UuaGVhZGVyc1tcInRyYW5zYWN0aW9uLWlkXCJdIH0sIFwiU2VuZCBUeXBpbmcgSW5kaWNhdG9yIFN1Y2NlZWRlZFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMyAvKmJyZWFrKi8sIDVdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcl8xNSA9IF9hLnNlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsYXBzZWRUaW1lSW5NaWxsaXNlY29uZHMgPSB0aW1lci5taWxsaVNlY29uZHNFbGFwc2VkO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLmxvZ2dlcikgcmV0dXJuIFszIC8qYnJlYWsqLywgNF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzQgLyp5aWVsZCovLCBMb2dnaW5nU2FuaXRpemVyXzEuTG9nZ2luZ1Nhbml0aXplci5zdHJpcEVycm9yU2Vuc2l0aXZlUHJvcGVydGllcyhlcnJvcl8xNSldO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYS5zZW50KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvZ2dlci5sb2coTG9nTGV2ZWxfMS5Mb2dMZXZlbC5FUlJPUiwgRW51bXNfMi5PQ1NES1RlbGVtZXRyeUV2ZW50LlNFTkRUWVBJTkdJTkRJQ0FUT1JGQUlMRUQsIHsgUmVxdWVzdElkOiByZXF1ZXN0SWQsIEV4Y2VwdGlvbkRldGFpbHM6IGVycm9yXzE1LCBFbGFwc2VkVGltZUluTWlsbGlzZWNvbmRzOiBlbGFwc2VkVGltZUluTWlsbGlzZWNvbmRzIH0sIFwiU2VuZCBUeXBpbmcgSW5kaWNhdG9yIEZhaWxlZFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9hLmxhYmVsID0gNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGVycm9yXzE1KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMyAvKmJyZWFrKi8sIDVdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDU6IHJldHVybiBbMiAvKnJldHVybiovXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfSk7IH0pXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9O1xuICAgIFNESy5kZWZhdWx0Q29uZmlndXJhdGlvbiA9IHtcbiAgICAgICAgZ2V0Q2hhdFRva2VuUmV0cnlDb3VudDogMzUsXG4gICAgICAgIGdldENoYXRUb2tlblRpbWVCZXR3ZWVuUmV0cmllc09uRmFpbHVyZTogMTAwMDAsXG4gICAgICAgIG1heFJlcXVlc3RSZXRyaWVzT25GYWlsdXJlOiAzXG4gICAgfTtcbiAgICByZXR1cm4gU0RLO1xufSgpKTtcbmV4cG9ydHMuZGVmYXVsdCA9IFNESztcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIENvbnN0YW50c18xID0gcmVxdWlyZShcIi4vQ29tbW9uL0NvbnN0YW50c1wiKTtcbnZhciBPQ1NES0xvZ2dlcl8xID0gcmVxdWlyZShcIi4vQ29tbW9uL09DU0RLTG9nZ2VyXCIpO1xudmFyIFNES18xID0gcmVxdWlyZShcIi4vU0RLXCIpO1xudmFyIFNES1Byb3ZpZGVyID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIFNES1Byb3ZpZGVyKCkge1xuICAgIH1cbiAgICBTREtQcm92aWRlci5nZXRTREsgPSBmdW5jdGlvbiAob21uaWNoYW5uZWxDb25maWd1cmF0aW9uLCBjb25maWd1cmF0aW9uLCBsb2dnZXIpIHtcbiAgICAgICAgdmFyIGlsb2dnZXIgPSBuZXcgT0NTREtMb2dnZXJfMS5kZWZhdWx0KGxvZ2dlcik7XG4gICAgICAgIHJldHVybiBuZXcgU0RLXzEuZGVmYXVsdCh7XG4gICAgICAgICAgICBjaGFubmVsSWQ6IG9tbmljaGFubmVsQ29uZmlndXJhdGlvbi5jaGFubmVsSWQgfHwgQ29uc3RhbnRzXzEuZGVmYXVsdC5kZWZhdWx0Q2hhbm5lbElkLFxuICAgICAgICAgICAgb3JnSWQ6IG9tbmljaGFubmVsQ29uZmlndXJhdGlvbi5vcmdJZCxcbiAgICAgICAgICAgIG9yZ1VybDogb21uaWNoYW5uZWxDb25maWd1cmF0aW9uLm9yZ1VybCxcbiAgICAgICAgICAgIHdpZGdldElkOiBvbW5pY2hhbm5lbENvbmZpZ3VyYXRpb24ud2lkZ2V0SWRcbiAgICAgICAgfSwgY29uZmlndXJhdGlvbiB8fCB7fSwgaWxvZ2dlcik7XG4gICAgfTtcbiAgICByZXR1cm4gU0RLUHJvdmlkZXI7XG59KCkpO1xuZXhwb3J0cy5kZWZhdWx0ID0gU0RLUHJvdmlkZXI7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuQnJvd3NlckluZm8gPSBleHBvcnRzLlVOS05PV05fVkVSU0lPTiA9IHZvaWQgMDtcbnZhciBFbnVtc18xID0gcmVxdWlyZShcIi4uL0NvbW1vbi9FbnVtc1wiKTtcbi8vIFBvcnRlZCBmcm9tIGh0dHBzOi8vZGV2LmF6dXJlLmNvbS9keW5hbWljc2NybS9PbmVDUk0vX2dpdC9DUk0uT21uaUNoYW5uZWwuTGl2ZUNoYXRXaWRnZXQ/cGF0aD0vc3JjL0xpdmVDaGF0TG9hZGVyL1V0aWxpdHkvQnJvd3NlckluZm8udHNcbnZhciBSRUdFWF9WRVJTSU9OID0gXCIoW1xcXFxkLC5dKylcIjtcbmV4cG9ydHMuVU5LTk9XTl9WRVJTSU9OID0gXCJVXCI7XG52YXIgQnJvd3NlckluZm8gPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gQnJvd3NlckluZm8oKSB7XG4gICAgfVxuICAgIEJyb3dzZXJJbmZvLmdldFVzZXJBZ2VudCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudXNlckFnZW50KCk7XG4gICAgfTtcbiAgICBCcm93c2VySW5mby51c2VyQWdlbnRDb250YWluc1N0cmluZyA9IGZ1bmN0aW9uIChzZWFyY2hTdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0VXNlckFnZW50KCkuaW5kZXhPZihzZWFyY2hTdHJpbmcpID4gLTE7XG4gICAgfTtcbiAgICBCcm93c2VySW5mby5pc0Nocm9tZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudXNlckFnZW50Q29udGFpbnNTdHJpbmcoRW51bXNfMS5Ccm93c2VyVmVuZG9yLkNIUk9NRSkgJiZcbiAgICAgICAgICAgICF0aGlzLnVzZXJBZ2VudENvbnRhaW5zU3RyaW5nKEVudW1zXzEuQnJvd3NlclZlbmRvci5FREdFKSAmJlxuICAgICAgICAgICAgIXRoaXMudXNlckFnZW50Q29udGFpbnNTdHJpbmcoRW51bXNfMS5Ccm93c2VyVmVuZG9yLkVER0VfQ0hST01JVU0pO1xuICAgIH07XG4gICAgQnJvd3NlckluZm8uaXNJZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudXNlckFnZW50Q29udGFpbnNTdHJpbmcoXCJUcmlkZW50XCIpO1xuICAgIH07XG4gICAgQnJvd3NlckluZm8uaXNFZGdlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy51c2VyQWdlbnRDb250YWluc1N0cmluZyhFbnVtc18xLkJyb3dzZXJWZW5kb3IuRURHRSkgfHxcbiAgICAgICAgICAgIHRoaXMudXNlckFnZW50Q29udGFpbnNTdHJpbmcoRW51bXNfMS5Ccm93c2VyVmVuZG9yLkVER0VfQ0hST01JVU0pO1xuICAgIH07XG4gICAgQnJvd3NlckluZm8uaXNPcGVyYSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudXNlckFnZW50Q29udGFpbnNTdHJpbmcoXCJPUFIvXCIpO1xuICAgIH07XG4gICAgQnJvd3NlckluZm8uZ2V0QnJvd3Nlck5hbWUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICh0aGlzLmlzT3BlcmEoKSkge1xuICAgICAgICAgICAgcmV0dXJuIEVudW1zXzEuQnJvd3NlclZlbmRvci5PUEVSQTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5pc0VkZ2UoKSkge1xuICAgICAgICAgICAgcmV0dXJuIEVudW1zXzEuQnJvd3NlclZlbmRvci5FREdFO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmlzQ2hyb21lKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBFbnVtc18xLkJyb3dzZXJWZW5kb3IuQ0hST01FO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnVzZXJBZ2VudENvbnRhaW5zU3RyaW5nKEVudW1zXzEuQnJvd3NlclZlbmRvci5GSVJFRk9YKSkge1xuICAgICAgICAgICAgcmV0dXJuIEVudW1zXzEuQnJvd3NlclZlbmRvci5GSVJFRk9YO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnVzZXJBZ2VudENvbnRhaW5zU3RyaW5nKEVudW1zXzEuQnJvd3NlclZlbmRvci5TQUZBUkkpKSB7XG4gICAgICAgICAgICByZXR1cm4gRW51bXNfMS5Ccm93c2VyVmVuZG9yLlNBRkFSSTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5pc0llKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBFbnVtc18xLkJyb3dzZXJWZW5kb3IuSUU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIEVudW1zXzEuQnJvd3NlclZlbmRvci5VTktOT1dOO1xuICAgIH07XG4gICAgQnJvd3NlckluZm8uZ2V0QnJvd3NlclZlcnNpb24gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHZhciBnZXRJZVZlcnNpb24gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgdXNlckFnZW50ID0gX3RoaXMuZ2V0VXNlckFnZW50KCk7XG4gICAgICAgICAgICB2YXIgY2xhc3NpY0llVmVyc2lvbk1hdGNoZXMgPSB1c2VyQWdlbnQubWF0Y2gobmV3IFJlZ0V4cChFbnVtc18xLkJyb3dzZXJWZW5kb3IuSUUgKyBcIiBcIiArIFJFR0VYX1ZFUlNJT04pKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBzZWN1cml0eS9kZXRlY3Qtbm9uLWxpdGVyYWwtcmVnZXhwXG4gICAgICAgICAgICBpZiAoY2xhc3NpY0llVmVyc2lvbk1hdGNoZXMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gY2xhc3NpY0llVmVyc2lvbk1hdGNoZXNbMV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgaWVWZXJzaW9uTWF0Y2hlcyA9IHVzZXJBZ2VudC5tYXRjaChuZXcgUmVnRXhwKFwicnY6XCIgKyBSRUdFWF9WRVJTSU9OKSk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgc2VjdXJpdHkvZGV0ZWN0LW5vbi1saXRlcmFsLXJlZ2V4cFxuICAgICAgICAgICAgaWYgKGllVmVyc2lvbk1hdGNoZXMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaWVWZXJzaW9uTWF0Y2hlc1sxXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBnZXRPdGhlclZlcnNpb24gPSBmdW5jdGlvbiAoYnJvd3NlclN0cmluZykge1xuICAgICAgICAgICAgaWYgKGJyb3dzZXJTdHJpbmcgPT09IEVudW1zXzEuQnJvd3NlclZlbmRvci5TQUZBUkkpIHtcbiAgICAgICAgICAgICAgICBicm93c2VyU3RyaW5nID0gXCJWZXJzaW9uXCI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoYnJvd3NlclN0cmluZyA9PT0gRW51bXNfMS5Ccm93c2VyVmVuZG9yLk9QRVJBKSB7XG4gICAgICAgICAgICAgICAgYnJvd3NlclN0cmluZyA9IFwiT1BSXCI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoYnJvd3NlclN0cmluZyA9PT0gRW51bXNfMS5Ccm93c2VyVmVuZG9yLkVER0UpIHtcbiAgICAgICAgICAgICAgICBicm93c2VyU3RyaW5nID0gXCJFZGdlP1wiO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIG1hdGNoZXMgPSBfdGhpcy5nZXRVc2VyQWdlbnQoKS5tYXRjaChuZXcgUmVnRXhwKGJyb3dzZXJTdHJpbmcgKyBcIi9cIiArIFJFR0VYX1ZFUlNJT04pKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBzZWN1cml0eS9kZXRlY3Qtbm9uLWxpdGVyYWwtcmVnZXhwXG4gICAgICAgICAgICBpZiAobWF0Y2hlcykge1xuICAgICAgICAgICAgICAgIHJldHVybiBtYXRjaGVzWzFdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGV4cG9ydHMuVU5LTk9XTl9WRVJTSU9OO1xuICAgICAgICB9O1xuICAgICAgICBpZiAodGhpcy5pc0llKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBnZXRJZVZlcnNpb24oKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZ2V0T3RoZXJWZXJzaW9uKHRoaXMuZ2V0QnJvd3Nlck5hbWUoKSk7XG4gICAgfTtcbiAgICBCcm93c2VySW5mby51c2VyQWdlbnQgPSBmdW5jdGlvbiAoKSB7IHJldHVybiB3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudDsgfTtcbiAgICByZXR1cm4gQnJvd3NlckluZm87XG59KCkpO1xuZXhwb3J0cy5Ccm93c2VySW5mbyA9IEJyb3dzZXJJbmZvO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLkRldmljZUluZm8gPSB2b2lkIDA7XG52YXIgRW51bXNfMSA9IHJlcXVpcmUoXCIuLi9Db21tb24vRW51bXNcIik7XG4vLyBQb3J0ZWQgZnJvbSBodHRwczovL2Rldi5henVyZS5jb20vZHluYW1pY3Njcm0vT25lQ1JNL19naXQvQ1JNLk9tbmlDaGFubmVsLkxpdmVDaGF0V2lkZ2V0P3BhdGg9L3NyYy9MaXZlQ2hhdExvYWRlci9VdGlsaXR5L0RldmljZUluZm8udHMmdmVyc2lvbj1HQnJlbGVhc2VcbnZhciBEZXZpY2VJbmZvID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIERldmljZUluZm8oKSB7XG4gICAgfVxuICAgIERldmljZUluZm8uZ2V0RGV2aWNlVHlwZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIG1vYmlsZSA9IC8oYW5kcm9pZHxpcG9kfHdpbmRvd3MgcGhvbmV8d3BkZXNrdG9wfHdpbmRvd3MgY2V8YmxhY2tiZXJyeVxcdyp8bWVlZ298d2Vib3N8cGFsbXxzeW1iaWFufHBkYXxcXHcqP21vYmlsZVxcdyo/fFxcdyo/cGhvbmVcXHcqPykvaTtcbiAgICAgICAgdmFyIHRhYmxldCA9IC90YWJsZXR8aXBhZC9pO1xuICAgICAgICBpZiAod2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2gobW9iaWxlKSkge1xuICAgICAgICAgICAgcmV0dXJuIEVudW1zXzEuRGV2aWNlVHlwZS5Nb2JpbGU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50Lm1hdGNoKHRhYmxldCkpIHtcbiAgICAgICAgICAgIHJldHVybiBFbnVtc18xLkRldmljZVR5cGUuVGFibGV0O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBFbnVtc18xLkRldmljZVR5cGUuRGVza3RvcDtcbiAgICB9O1xuICAgIHJldHVybiBEZXZpY2VJbmZvO1xufSgpKTtcbmV4cG9ydHMuRGV2aWNlSW5mbyA9IERldmljZUluZm87XG4iLCJcInVzZSBzdHJpY3RcIjtcbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L2V4cGxpY2l0LW1vZHVsZS1ib3VuZGFyeS10eXBlcyAqL1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuLy8gUG9ydGVkIGZyb20gaHR0cHM6Ly9kZXYuYXp1cmUuY29tL2R5bmFtaWNzY3JtL09uZUNSTS9fZ2l0L0NSTS5PbW5pY2hhbm5lbC5JQzNDbGllbnQ/cGF0aD0vc3JjL0NvbW1vbi9FdmVudE1hbmFnZXIudHMmdmVyc2lvbj1HQm1hc3RlclxudmFyIEV2ZW50TWFuYWdlciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBFdmVudE1hbmFnZXIoKSB7XG4gICAgfVxuICAgIEV2ZW50TWFuYWdlci5yYWlzZUN1c3RvbUV2ZW50ID0gZnVuY3Rpb24gKGV2ZW50TmFtZSwgcGF5bG9hZCkge1xuICAgICAgICB2YXIgZXZlbnQgPSBFdmVudE1hbmFnZXIuY3JlYXRlQ3VzdG9tRXZlbnQoZXZlbnROYW1lLCBwYXlsb2FkKTtcbiAgICAgICAgd2luZG93LmRpc3BhdGNoRXZlbnQoZXZlbnQpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGN1c3RvbSBldmVudCBiYXNlZCBvbiB0aGUgZXZlbnROYW1lIGFuZCBwYXlsb2FkXG4gICAgICogVGhlIGN1c3RvbSBldmVudCBpcyBkaXNwYXRjaC1jb21wYXRpYmxlIGFjcm9zcyBicm93c2Vyc1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBldmVudE5hbWU6IE5hbWUgb2YgdGhlIGV2ZW50LlxuICAgICAqIEBwYXJhbSB7YW55fSBwYXlsb2FkOiBUaGUgZXZlbnQgcGF5bG9hZC5cbiAgICAgKiBAcmV0dXJucyB7Q3VzdG9tRXZlbnR9OiBDdXN0b21FdmVudCBpbnN0YW5jZS5cbiAgICAgKi9cbiAgICBFdmVudE1hbmFnZXIuY3JlYXRlQ3VzdG9tRXZlbnQgPSBmdW5jdGlvbiAoZXZlbnROYW1lLCBwYXlsb2FkKSB7XG4gICAgICAgIHZhciBldmVudERldGFpbHMgPSBwYXlsb2FkID8ge1xuICAgICAgICAgICAgZGV0YWlsOiBwYXlsb2FkXG4gICAgICAgIH0gOiB1bmRlZmluZWQ7XG4gICAgICAgIHZhciBldmVudCA9IG51bGw7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICAvLyBGb3Igbm9uIElFMTEgc2NlbmFyaW9zLCBjdXN0b21ldmVudCBvYmplY3QgY2FuIGJlIGRpc3BhdGNoZWRcbiAgICAgICAgICAgIGV2ZW50ID0gbmV3IEN1c3RvbUV2ZW50KGV2ZW50TmFtZSwgZXZlbnREZXRhaWxzKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZSkge1xuICAgICAgICAgICAgLy8gU3BlY2lhbCBoYW5kbGluZyBmb3IgSUUxMSBzY2VuYXJpbywgd2hlcmUgY3VzdG9tZXZlbnQgb2JqZWN0IGNhbm5vdCBiZSBkaXNwYXRjaGVkXG4gICAgICAgICAgICBldmVudCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KFwiQ3VzdG9tRXZlbnRcIik7XG4gICAgICAgICAgICBldmVudC5pbml0Q3VzdG9tRXZlbnQoZXZlbnROYW1lLCB0cnVlLCB0cnVlLCBldmVudERldGFpbHMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBldmVudDtcbiAgICB9O1xuICAgIHJldHVybiBFdmVudE1hbmFnZXI7XG59KCkpO1xuZXhwb3J0cy5kZWZhdWx0ID0gRXZlbnRNYW5hZ2VyO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLkxvZ2dpbmdTYW5pdGl6ZXIgPSB2b2lkIDA7XG52YXIgQ29uc3RhbnRzXzEgPSByZXF1aXJlKFwiLi4vQ29tbW9uL0NvbnN0YW50c1wiKTtcbnZhciBMb2dnaW5nU2FuaXRpemVyID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIExvZ2dpbmdTYW5pdGl6ZXIoKSB7XG4gICAgfVxuICAgIExvZ2dpbmdTYW5pdGl6ZXIuc3RyaXBFcnJvclNlbnNpdGl2ZVByb3BlcnRpZXMgPSBmdW5jdGlvbiAoZXJyb3JPYmplY3QpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgaWYgKGVycm9yT2JqZWN0ICYmIHR5cGVvZiBlcnJvck9iamVjdCA9PT0gJ29iamVjdCcgJiYgKChfYSA9IE9iamVjdC5rZXlzKGVycm9yT2JqZWN0KSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmxlbmd0aCkgPiAwKSB7XG4gICAgICAgICAgICAoX2IgPSBPYmplY3Qua2V5cyhlcnJvck9iamVjdCkpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgICAgICAgICBpZiAoQ29uc3RhbnRzXzEuZGVmYXVsdC5zZW5zaXRpdmVQcm9wZXJ0aWVzLmluZGV4T2Yoa2V5KSAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gcmVtb3ZlIHNlbnNpdGl2ZSBwcm9wZXJ0aWVzIGZyb20gZXJyb3Igb2JqZWN0XG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBlcnJvck9iamVjdFtcIlwiICsga2V5XTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGVycm9yT2JqZWN0W1wiXCIgKyBrZXldICE9PSBudWxsICYmIHR5cGVvZiBlcnJvck9iamVjdFtcIlwiICsga2V5XSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gY2hlY2sgc2Vuc2l0aXZlIHByb3BlcnRpZXMgaW4gbmVzdGVkIGVycm9yIG9iamVjdFxuICAgICAgICAgICAgICAgICAgICBfdGhpcy5zdHJpcEVycm9yU2Vuc2l0aXZlUHJvcGVydGllcyhlcnJvck9iamVjdFtcIlwiICsga2V5XSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgcmV0dXJuIExvZ2dpbmdTYW5pdGl6ZXI7XG59KCkpO1xuZXhwb3J0cy5Mb2dnaW5nU2FuaXRpemVyID0gTG9nZ2luZ1Nhbml0aXplcjtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5PU0luZm8gPSB2b2lkIDA7XG52YXIgRW51bXNfMSA9IHJlcXVpcmUoXCIuLi9Db21tb24vRW51bXNcIik7XG4vLyBQb3J0ZWQgZnJvbSBodHRwczovL2Rldi5henVyZS5jb20vZHluYW1pY3Njcm0vT25lQ1JNL19naXQvQ1JNLk9tbmlDaGFubmVsLkxpdmVDaGF0V2lkZ2V0P3BhdGg9L3NyYy9MaXZlQ2hhdExvYWRlci9VdGlsaXR5L09TSW5mby50cyZ2ZXJzaW9uPUdCcmVsZWFzZVxudmFyIE9TSW5mbyA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBPU0luZm8oKSB7XG4gICAgfVxuICAgIE9TSW5mby5nZXRPc1R5cGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciB3aW4gPSAvKHdpbmRvd3N8d2luMzIpL2k7XG4gICAgICAgIHZhciB3aW5ydCA9IC8gYXJtOy9pO1xuICAgICAgICB2YXIgd2lucGhvbmUgPSAvd2luZG93c1xcc3Bob25lXFxzXFxkK1xcLlxcZCsvaTtcbiAgICAgICAgdmFyIG9zeCA9IC8obWFjaW50b3NofG1hYyBvcyB4KS9pO1xuICAgICAgICB2YXIgaW9zID0gLyhpUGFkfGlQaG9uZXxpUG9kKSg/PS4qbGlrZSBNYWMgT1MgWCkvaTtcbiAgICAgICAgdmFyIGxpbnV4ID0gLyhsaW51eHxqb2xpfFtreGxuXT91YnVudHV8ZGViaWFufFtvcGVuXSpzdXNlfGdlbnRvb3xhcmNofHNsYWNrd2FyZXxmZWRvcmF8bWFuZHJpdmF8Y2VudG9zfHBjbGludXhvc3xyZWRoYXR8emVud2Fsa3xjcm9zKS9pO1xuICAgICAgICB2YXIgYW5kcm9pZCA9IC9hbmRyb2lkL2k7XG4gICAgICAgIHZhciB1c2VyQWdlbnQgPSBmdW5jdGlvbiAoKSB7IHJldHVybiB3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudDsgfTtcbiAgICAgICAgaWYgKHVzZXJBZ2VudCgpLm1hdGNoKHdpbnBob25lKSkge1xuICAgICAgICAgICAgcmV0dXJuIEVudW1zXzEuT3BlcmF0aW5nU3lzdGVtLldJTkRPV1NfUEhPTkU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHVzZXJBZ2VudCgpLm1hdGNoKHdpbnJ0KSkge1xuICAgICAgICAgICAgcmV0dXJuIEVudW1zXzEuT3BlcmF0aW5nU3lzdGVtLldJTkRPV1NfUlQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHVzZXJBZ2VudCgpLm1hdGNoKGlvcykpIHtcbiAgICAgICAgICAgIHJldHVybiBFbnVtc18xLk9wZXJhdGluZ1N5c3RlbS5JT1M7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHVzZXJBZ2VudCgpLm1hdGNoKGFuZHJvaWQpKSB7XG4gICAgICAgICAgICByZXR1cm4gRW51bXNfMS5PcGVyYXRpbmdTeXN0ZW0uQU5EUk9JRDtcbiAgICAgICAgfVxuICAgICAgICBpZiAodXNlckFnZW50KCkubWF0Y2gobGludXgpKSB7XG4gICAgICAgICAgICByZXR1cm4gRW51bXNfMS5PcGVyYXRpbmdTeXN0ZW0uTElOVVg7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHVzZXJBZ2VudCgpLm1hdGNoKG9zeCkpIHtcbiAgICAgICAgICAgIHJldHVybiBFbnVtc18xLk9wZXJhdGluZ1N5c3RlbS5NQUNPU1g7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHVzZXJBZ2VudCgpLm1hdGNoKHdpbikpIHtcbiAgICAgICAgICAgIHJldHVybiBFbnVtc18xLk9wZXJhdGluZ1N5c3RlbS5XSU5ET1dTO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBFbnVtc18xLk9wZXJhdGluZ1N5c3RlbS5VTktOT1dOO1xuICAgIH07XG4gICAgcmV0dXJuIE9TSW5mbztcbn0oKSk7XG5leHBvcnRzLk9TSW5mbyA9IE9TSW5mbztcbiIsIlwidXNlIHN0cmljdFwiO1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L2V4cGxpY2l0LW1vZHVsZS1ib3VuZGFyeS10eXBlcyAqL1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIFRlbGVtZXRyeUhlbHBlciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBUZWxlbWV0cnlIZWxwZXIoKSB7XG4gICAgfVxuICAgIFRlbGVtZXRyeUhlbHBlci5HRVRURUxFTUVUUllFVkVOVERBVEEgPSBmdW5jdGlvbiAodGVsZW1ldHJ5RXZlbnQsIGN1c3RvbURhdGEsIGRlc2NyaXB0aW9uKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBEZXNjcmlwdGlvbjogZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBFbGFwc2VkVGltZUluTWlsbGlzZWNvbmRzOiBjdXN0b21EYXRhLkVsYXBzZWRUaW1lSW5NaWxsaXNlY29uZHMsXG4gICAgICAgICAgICBFdmVudDogdGVsZW1ldHJ5RXZlbnQsXG4gICAgICAgICAgICBFeGNlcHRpb25EZXRhaWxzOiBjdXN0b21EYXRhLkV4Y2VwdGlvbkRldGFpbHMsXG4gICAgICAgICAgICBSZWdpb246IGN1c3RvbURhdGEuUmVnaW9uLFxuICAgICAgICAgICAgUmVxdWVzdElkOiBjdXN0b21EYXRhLlJlcXVlc3RJZCxcbiAgICAgICAgICAgIFRyYW5zYWN0aW9uSWQ6IGN1c3RvbURhdGEuVHJhbnNhY3Rpb25JZFxuICAgICAgICB9O1xuICAgIH07XG4gICAgcmV0dXJuIFRlbGVtZXRyeUhlbHBlcjtcbn0oKSk7XG5leHBvcnRzLmRlZmF1bHQgPSBUZWxlbWV0cnlIZWxwZXI7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuVGltZXIgPSB2b2lkIDA7XG52YXIgVGltZXIgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gVGltZXIoKSB7XG4gICAgfVxuICAgIFRpbWVyLlRJTUVSID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgdGltZVN0YXJ0ID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBnZXQgbWlsbGlTZWNvbmRzRWxhcHNlZCgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKG5ldyBEYXRlKCkuZ2V0VGltZSgpIC0gdGltZVN0YXJ0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9O1xuICAgIHJldHVybiBUaW1lcjtcbn0oKSk7XG5leHBvcnRzLlRpbWVyID0gVGltZXI7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbi8qKlxuICogQ3VzdG9tIGhhbmRsZXIgZm9yIEhUVFAgY2FsbHMgd2l0aCBBeGlvcy4gSGFuZGxlciBhbGxvd3MgdG8gcmV0cnkgSFRUUCBjYWxscyBpZiBmYWlsZWQuXG4gKlxuICogQHBhcmFtIGF4aW9zIEF4aW9zIGluc3RhbmNlLlxuICogQHBhcmFtIGF4aW9zUmV0cnlPcHRpb25zIE9wdGlvbnMgZm9yIGF4aW9zIHJldHJ5LlxuICovXG52YXIgYXhpb3NSZXRyeSA9IGZ1bmN0aW9uIChheGlvcywgYXhpb3NSZXRyeU9wdGlvbnMpIHtcbiAgICB2YXIgcmV0cmllcyA9IGF4aW9zUmV0cnlPcHRpb25zLnJldHJpZXM7XG4gICAgdmFyIGN1cnJlbnRUcnkgPSAwO1xuICAgIC8vIE1ldGhvZCB0byBpbnRlcmNlcHRzIHJlc3BvbnNlcyB3aXRoaW4gcmFuZ2Ugb2YgMnh4XG4gICAgdmFyIG9uU3VjY2VzcyA9IHVuZGVmaW5lZDtcbiAgICAvLyBNZXRob2QgdG8gaW50ZXJjZXB0cyByZXNwb25zZXMgb3V0c2lkZSByYW5nZSBvZiAyeHhcbiAgICB2YXIgb25FcnJvciA9IGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICB2YXIgY29uZmlnID0gZXJyb3IuY29uZmlnO1xuICAgICAgICAvLyBJZiB3ZSBoYXZlIG5vIGluZm9ybWF0aW9uIG9mIHRoZSByZXF1ZXN0IHRvIHJldHJ5XG4gICAgICAgIGlmICghY29uZmlnKSB7XG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJyb3IpO1xuICAgICAgICB9XG4gICAgICAgIC8vIFJldHJ5IHJlcXVlc3QgaWYgYmVsb3cgdGhyZXNob2xkXG4gICAgICAgIHZhciBzaG91bGRSZXRyeSA9IGN1cnJlbnRUcnkgPCByZXRyaWVzO1xuICAgICAgICBpZiAoc2hvdWxkUmV0cnkpIHtcbiAgICAgICAgICAgIGN1cnJlbnRUcnkrKztcbiAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXR1cm4gcmVzb2x2ZShheGlvcyhjb25maWcpKTsgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yKTtcbiAgICB9O1xuICAgIGF4aW9zLmludGVyY2VwdG9ycy5yZXNwb25zZS51c2Uob25TdWNjZXNzLCBvbkVycm9yKTtcbn07XG5leHBvcnRzLmRlZmF1bHQgPSBheGlvc1JldHJ5O1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLnV1aWR2NCA9IHZvaWQgMDtcbmV4cG9ydHMudXVpZHY0ID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBcInh4eHh4eHh4LXh4eHgtNHh4eC15eHh4LXh4eHh4eHh4eHh4eFwiLnJlcGxhY2UoL1t4eV0vZywgZnVuY3Rpb24gKGMpIHtcbiAgICAgICAgdmFyIHIgPSBNYXRoLnJhbmRvbSgpICogMTYgfCAwLCB2ID0gYyA9PT0gXCJ4XCIgPyByIDogKHIgJiAweDMgfCAweDgpO1xuICAgICAgICByZXR1cm4gdi50b1N0cmluZygxNik7XG4gICAgfSk7XG59O1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLnV1aWR2NCA9IGV4cG9ydHMuU0RLUHJvdmlkZXIgPSB2b2lkIDA7XG4vLyBFbnRyeSBwb2ludFxudmFyIEV2ZW50TmFtZXNfMSA9IHJlcXVpcmUoXCIuL0NvbW1vbi9FdmVudE5hbWVzXCIpO1xudmFyIFNES1Byb3ZpZGVyXzEgPSByZXF1aXJlKFwiLi9TREtQcm92aWRlclwiKTtcbmV4cG9ydHMuU0RLUHJvdmlkZXIgPSBTREtQcm92aWRlcl8xLmRlZmF1bHQ7XG52YXIgRXZlbnRNYW5hZ2VyXzEgPSByZXF1aXJlKFwiLi9VdGlscy9FdmVudE1hbmFnZXJcIik7XG52YXIgdXVpZF8xID0gcmVxdWlyZShcIi4vVXRpbHMvdXVpZFwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcInV1aWR2NFwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gdXVpZF8xLnV1aWR2NDsgfSB9KTtcbihmdW5jdGlvbiAoKSB7XG4gICAgLy8gRGVjbGFyZXMgd2luZG93IG9iamVjdCBmb3IgTm9kZUpTIGVudmlyb25tZW50XG4gICAgaWYgKGdsb2JhbC53aW5kb3cgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBnbG9iYWwud2luZG93ID0gZ2xvYmFsO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIndpbmRvdyBvYmplY3Qgbm90IGZvdW5kXCIpO1xuICAgIH1cbiAgICAvLyBDaGVjayBleGlzdGVuY2Ugb2YgZ2xvYmFsIG9iamVjdHMgdG8gYXZvaWQgb3ZlcndyaXRlL2NsYXNoaW5nXG4gICAgaWYgKCEoXCJNaWNyb3NvZnRcIiBpbiB3aW5kb3cpKSB7XG4gICAgICAgIHdpbmRvdy5NaWNyb3NvZnQgPSB7fTtcbiAgICB9XG4gICAgaWYgKCEoXCJDUk1cIiBpbiB3aW5kb3cuTWljcm9zb2Z0KSkge1xuICAgICAgICB3aW5kb3cuTWljcm9zb2Z0LkNSTSA9IHt9O1xuICAgIH1cbiAgICBpZiAoIShcIk9tbmljaGFubmVsXCIgaW4gd2luZG93Lk1pY3Jvc29mdC5DUk0pKSB7XG4gICAgICAgIHdpbmRvdy5NaWNyb3NvZnQuQ1JNLk9tbmljaGFubmVsID0ge307XG4gICAgfVxuICAgIGlmICghKFwiU0RLXCIgaW4gd2luZG93Lk1pY3Jvc29mdC5DUk0uT21uaWNoYW5uZWwpKSB7XG4gICAgICAgIHdpbmRvdy5NaWNyb3NvZnQuQ1JNLk9tbmljaGFubmVsLlNESyA9IHtcbiAgICAgICAgICAgIFNES1Byb3ZpZGVyOiBTREtQcm92aWRlcl8xLmRlZmF1bHQsXG4gICAgICAgICAgICBVdGlsOiB7XG4gICAgICAgICAgICAgICAgdXVpZHY0OiB1dWlkXzEudXVpZHY0XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfVxuICAgIHdpbmRvdy5kb2N1bWVudCAmJiBFdmVudE1hbmFnZXJfMS5kZWZhdWx0LnJhaXNlQ3VzdG9tRXZlbnQoRXZlbnROYW1lc18xLmRlZmF1bHQuT0NTREtMT0FEKTtcbn0pKCk7XG4iXSwic291cmNlUm9vdCI6IiJ9
|