my-orders-tickets-widget 1.0.6 → 1.0.8-beta.1
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/__mocks__/@react-pdf/renderer.js +39 -0
- package/dist/i18n.js +2 -2
- package/dist/index.css +666 -526
- package/dist/index.js +1098 -135
- package/package.json +2 -1
package/dist/index.js
CHANGED
|
@@ -67,6 +67,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
67
67
|
/* harmony export */ changeFilter: () => (/* binding */ changeFilter),
|
|
68
68
|
/* harmony export */ changeSort: () => (/* binding */ changeSort),
|
|
69
69
|
/* harmony export */ delegateTicket: () => (/* binding */ delegateTicket),
|
|
70
|
+
/* harmony export */ downloadOrderReceipt: () => (/* binding */ downloadOrderReceipt),
|
|
70
71
|
/* harmony export */ getExtraQuestions: () => (/* binding */ getExtraQuestions),
|
|
71
72
|
/* harmony export */ getTicket: () => (/* binding */ getTicket),
|
|
72
73
|
/* harmony export */ getTicketPDF: () => (/* binding */ getTicketPDF),
|
|
@@ -106,7 +107,8 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
106
107
|
/* harmony import */ var i18next__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! i18next */ "i18next");
|
|
107
108
|
/* harmony import */ var i18next__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(i18next__WEBPACK_IMPORTED_MODULE_6__);
|
|
108
109
|
/* harmony import */ var _utils_auth__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./utils/auth */ "./src/utils/auth.js");
|
|
109
|
-
/* harmony import */ var
|
|
110
|
+
/* harmony import */ var _components_OrderReceipt__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./components/OrderReceipt */ "./src/components/OrderReceipt/index.js");
|
|
111
|
+
/* harmony import */ var _utils_constants__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./utils/constants */ "./src/utils/constants.js");
|
|
110
112
|
|
|
111
113
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
112
114
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
@@ -118,6 +120,7 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
|
|
|
118
120
|
|
|
119
121
|
|
|
120
122
|
|
|
123
|
+
|
|
121
124
|
const RESET_STATE = "RESET_STATE";
|
|
122
125
|
const RESET_FILTER = "RESET_FILTER";
|
|
123
126
|
const RESET_API_ERROR = "RESET_API_ERROR";
|
|
@@ -212,43 +215,43 @@ const parseFilter = (filterObj, filterAction) => {
|
|
|
212
215
|
filter.push("created[]".concat(filterObj.lower, "&&").concat(filterObj.upper));
|
|
213
216
|
}
|
|
214
217
|
if (filterObj.FILTER_VAR_BADGE_FEATURE && filterObj.FILTER_VAR_BADGE_FEATURE.length > 0) {
|
|
215
|
-
const filterName = filterAction ===
|
|
218
|
+
const filterName = filterAction === _utils_constants__WEBPACK_IMPORTED_MODULE_9__.FILTER_ACTION.ORDERS ? "tickets_badge_features_id" : "badge_features_id";
|
|
216
219
|
filter.push("".concat(filterName, "==").concat(filterObj.FILTER_VAR_BADGE_FEATURE.join("||")));
|
|
217
220
|
}
|
|
218
221
|
if (filterObj.FILTER_VAR_TICKET_TYPE && filterObj.FILTER_VAR_TICKET_TYPE.length > 0) {
|
|
219
|
-
const filterName = filterAction ===
|
|
222
|
+
const filterName = filterAction === _utils_constants__WEBPACK_IMPORTED_MODULE_9__.FILTER_ACTION.ORDERS ? "tickets_type_id" : "ticket_type_id";
|
|
220
223
|
filter.push("".concat(filterName, "==").concat(filterObj.FILTER_VAR_TICKET_TYPE.join("||")));
|
|
221
224
|
}
|
|
222
225
|
if (filterObj.FILTER_VAR_TICKET_ASSIGNED) {
|
|
223
|
-
const filterName = filterAction ===
|
|
226
|
+
const filterName = filterAction === _utils_constants__WEBPACK_IMPORTED_MODULE_9__.FILTER_ACTION.ORDERS ? "tickets_assigned_to" : "assigned_to";
|
|
224
227
|
filter.push("".concat(filterName, "==").concat(filterObj.FILTER_VAR_TICKET_ASSIGNED));
|
|
225
228
|
}
|
|
226
229
|
if (filterObj.FILTER_VAR_OWNER_STATUS) {
|
|
227
|
-
const filterName = filterAction ===
|
|
230
|
+
const filterName = filterAction === _utils_constants__WEBPACK_IMPORTED_MODULE_9__.FILTER_ACTION.ORDERS ? "tickets_owner_status" : "owner_status";
|
|
228
231
|
filter.push("".concat(filterName, "==").concat(filterObj.FILTER_VAR_OWNER_STATUS));
|
|
229
232
|
}
|
|
230
233
|
if (filterObj.FILTER_VAR_FREE_PAID) {
|
|
231
|
-
const filterName = filterAction ===
|
|
234
|
+
const filterName = filterAction === _utils_constants__WEBPACK_IMPORTED_MODULE_9__.FILTER_ACTION.ORDERS ? "amount" : "final_amount";
|
|
232
235
|
filter.push("".concat(filterName).concat(filterObj.FILTER_VAR_FREE_PAID === "Free" ? "==0" : ">0"));
|
|
233
236
|
}
|
|
234
237
|
if (filterObj.FILTER_VAR_PROMOCODE) {
|
|
235
|
-
const filterName = filterAction ===
|
|
238
|
+
const filterName = filterAction === _utils_constants__WEBPACK_IMPORTED_MODULE_9__.FILTER_ACTION.ORDERS ? "tickets_promo_code" : "promo_code";
|
|
236
239
|
filter.push("".concat(filterName, "=@").concat(filterObj.FILTER_VAR_PROMOCODE));
|
|
237
240
|
}
|
|
238
241
|
if (filterObj.FILTER_VAR_ORDER_NUMBER) {
|
|
239
242
|
let inputFilters = "";
|
|
240
243
|
switch (filterAction) {
|
|
241
|
-
case
|
|
244
|
+
case _utils_constants__WEBPACK_IMPORTED_MODULE_9__.FILTER_ACTION.ORDERS:
|
|
242
245
|
{
|
|
243
246
|
inputFilters = "number=@".concat(filterObj.FILTER_VAR_ORDER_NUMBER, ",tickets_owner_email=@").concat(filterObj.FILTER_VAR_ORDER_NUMBER, ",tickets_number=@").concat(filterObj.FILTER_VAR_ORDER_NUMBER);
|
|
244
247
|
break;
|
|
245
248
|
}
|
|
246
|
-
case
|
|
249
|
+
case _utils_constants__WEBPACK_IMPORTED_MODULE_9__.FILTER_ACTION.TICKETS_BY_ORDERS:
|
|
247
250
|
{
|
|
248
251
|
inputFilters = "number=@".concat(filterObj.FILTER_VAR_ORDER_NUMBER, ",owner_email=@").concat(filterObj.FILTER_VAR_ORDER_NUMBER);
|
|
249
252
|
break;
|
|
250
253
|
}
|
|
251
|
-
case
|
|
254
|
+
case _utils_constants__WEBPACK_IMPORTED_MODULE_9__.FILTER_ACTION.EXTERNAL_TICKETS:
|
|
252
255
|
{
|
|
253
256
|
inputFilters = "order_number=@".concat(filterObj.FILTER_VAR_ORDER_NUMBER, ",number=@").concat(filterObj.FILTER_VAR_ORDER_NUMBER, ",order_owner_email=@").concat(filterObj.FILTER_VAR_ORDER_NUMBER);
|
|
254
257
|
break;
|
|
@@ -275,13 +278,13 @@ const customFetchErrorHandler = response => dispatch => {
|
|
|
275
278
|
let msg;
|
|
276
279
|
dispatch((0,openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_1__.stopLoading)());
|
|
277
280
|
switch (code) {
|
|
278
|
-
case
|
|
281
|
+
case _utils_constants__WEBPACK_IMPORTED_MODULE_9__.ERROR_CODES["403"]:
|
|
279
282
|
msg = i18next__WEBPACK_IMPORTED_MODULE_6___default().t("errors.user_not_authz");
|
|
280
283
|
break;
|
|
281
|
-
case
|
|
284
|
+
case _utils_constants__WEBPACK_IMPORTED_MODULE_9__.ERROR_CODES["401"]:
|
|
282
285
|
msg = i18next__WEBPACK_IMPORTED_MODULE_6___default().t("errors.session_expired");
|
|
283
286
|
break;
|
|
284
|
-
case
|
|
287
|
+
case _utils_constants__WEBPACK_IMPORTED_MODULE_9__.ERROR_CODES["412"]:
|
|
285
288
|
msg = "";
|
|
286
289
|
Object.entries(response.errors).forEach(_ref => {
|
|
287
290
|
let [key, value] = _ref;
|
|
@@ -291,7 +294,7 @@ const customFetchErrorHandler = response => dispatch => {
|
|
|
291
294
|
msg = "".concat(msg, " ").concat(value, " <br>");
|
|
292
295
|
});
|
|
293
296
|
break;
|
|
294
|
-
case
|
|
297
|
+
case _utils_constants__WEBPACK_IMPORTED_MODULE_9__.ERROR_CODES["500"]:
|
|
295
298
|
msg = i18next__WEBPACK_IMPORTED_MODULE_6___default().t("errors.server_error");
|
|
296
299
|
break;
|
|
297
300
|
default:
|
|
@@ -306,8 +309,8 @@ const customFetchErrorHandler = response => dispatch => {
|
|
|
306
309
|
// ORDERS ACTIONS
|
|
307
310
|
const getUserOrders = (_ref2, skipLoading) => {
|
|
308
311
|
let {
|
|
309
|
-
page =
|
|
310
|
-
perPage =
|
|
312
|
+
page = _utils_constants__WEBPACK_IMPORTED_MODULE_9__.FIRST_PAGE,
|
|
313
|
+
perPage = _utils_constants__WEBPACK_IMPORTED_MODULE_9__.DEFAULT_ITEMS_PER_PAGE,
|
|
311
314
|
filter = {},
|
|
312
315
|
sort = {}
|
|
313
316
|
} = _ref2;
|
|
@@ -328,12 +331,12 @@ const getUserOrders = (_ref2, skipLoading) => {
|
|
|
328
331
|
order: "-created",
|
|
329
332
|
"filter[]": ["status==Paid"],
|
|
330
333
|
relations: "applied_taxes,none",
|
|
331
|
-
fields: "id,created,number,amount,currency,taxes_amount,discount_amount,tickets_excerpt_by_ticket_type,refunded_amount,raw_amount,applied_taxes.id,applied_taxes.name,applied_taxes.amount",
|
|
334
|
+
fields: "id,created,number,status,amount,currency,taxes_amount,discount_amount,tickets_excerpt_by_ticket_type,refunded_amount,raw_amount,applied_taxes.id,applied_taxes.name,applied_taxes.amount,payment_method,credit_card_type,credit_card_4number,owner_first_name,owner_last_name,owner_email,owner_company",
|
|
332
335
|
page,
|
|
333
336
|
per_page: perPage
|
|
334
337
|
};
|
|
335
338
|
if (Object.keys(filter).length > 0) {
|
|
336
|
-
const filters = parseFilter(filter,
|
|
339
|
+
const filters = parseFilter(filter, _utils_constants__WEBPACK_IMPORTED_MODULE_9__.FILTER_ACTION.ORDERS);
|
|
337
340
|
params["filter[]"] = [...params["filter[]"], ...filters];
|
|
338
341
|
}
|
|
339
342
|
if (Object.keys(sort).length > 0) {
|
|
@@ -356,8 +359,8 @@ const setUser = user => dispatch => dispatch((0,openstack_uicore_foundation_lib_
|
|
|
356
359
|
|
|
357
360
|
const getUserTickets = (_ref4, skipLoading) => {
|
|
358
361
|
let {
|
|
359
|
-
page =
|
|
360
|
-
perPage =
|
|
362
|
+
page = _utils_constants__WEBPACK_IMPORTED_MODULE_9__.FIRST_PAGE,
|
|
363
|
+
perPage = _utils_constants__WEBPACK_IMPORTED_MODULE_9__.DEFAULT_ITEMS_PER_PAGE,
|
|
361
364
|
filter = {},
|
|
362
365
|
sort = {}
|
|
363
366
|
} = _ref4;
|
|
@@ -377,20 +380,20 @@ const getUserTickets = (_ref4, skipLoading) => {
|
|
|
377
380
|
if (!summit) return Promise.reject();
|
|
378
381
|
const accessToken = await (0,_utils_auth__WEBPACK_IMPORTED_MODULE_7__.getAccessTokenSafely)();
|
|
379
382
|
if (!accessToken) return (0,_utils_auth__WEBPACK_IMPORTED_MODULE_7__.authPromiseReject)();
|
|
380
|
-
const fields = ["order.id", "order.owner_first_name", "order.owner_last_name", "order.owner_email", "owner.id", "owner.email", "owner.first_name", "owner.last_name", "owner.status", "badge.none"];
|
|
383
|
+
const fields = ["order.id", "order.owner_first_name", "order.owner_last_name", "order.owner_email", "owner.id", "owner.email", "owner.first_name", "owner.last_name", "owner.status", "badge.none", "promo_code.id", "promo_code.code", "promo_code.allows_to_delegate", "promo_code.allows_to_reassign", "ticket_type.id", "ticket_type.name", "ticket_type.allows_to_delegate", "ticket_type.allows_to_reassign"];
|
|
381
384
|
dispatch((0,openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_1__.startLoading)());
|
|
382
385
|
const params = {
|
|
383
386
|
access_token: accessToken,
|
|
384
387
|
"filter[]": ["status==Paid", "order_owner_id<>".concat(userProfile.id)],
|
|
385
|
-
expand: "order,owner,ticket_type,badge,badge.features",
|
|
388
|
+
expand: "order,owner,ticket_type,badge,badge.features,promo_code",
|
|
386
389
|
order: "-id",
|
|
387
390
|
fields: fields.join(","),
|
|
388
|
-
relations: "none,badge.features",
|
|
391
|
+
relations: "none,badge.features,promo_code.none,ticket_type.none",
|
|
389
392
|
page,
|
|
390
393
|
per_page: perPage
|
|
391
394
|
};
|
|
392
395
|
if (Object.keys(filter).length > 0) {
|
|
393
|
-
const filters = parseFilter(filter,
|
|
396
|
+
const filters = parseFilter(filter, _utils_constants__WEBPACK_IMPORTED_MODULE_9__.FILTER_ACTION.EXTERNAL_TICKETS);
|
|
394
397
|
params["filter[]"] = [...params["filter[]"], ...filters];
|
|
395
398
|
}
|
|
396
399
|
if (Object.keys(sort).length > 0) {
|
|
@@ -404,8 +407,8 @@ const getUserTickets = (_ref4, skipLoading) => {
|
|
|
404
407
|
const getTicketsByOrder = _ref6 => {
|
|
405
408
|
let {
|
|
406
409
|
orderId,
|
|
407
|
-
page =
|
|
408
|
-
perPage =
|
|
410
|
+
page = _utils_constants__WEBPACK_IMPORTED_MODULE_9__.FIRST_PAGE,
|
|
411
|
+
perPage = _utils_constants__WEBPACK_IMPORTED_MODULE_9__.DEFAULT_ITEMS_PER_PAGE,
|
|
409
412
|
filter,
|
|
410
413
|
sort
|
|
411
414
|
} = _ref6;
|
|
@@ -419,15 +422,15 @@ const getTicketsByOrder = _ref6 => {
|
|
|
419
422
|
const params = {
|
|
420
423
|
access_token: accessToken,
|
|
421
424
|
"filter[]": [],
|
|
422
|
-
fields: "badge.none",
|
|
423
|
-
expand: "refund_requests,refund_requests.refunded_taxes,refund_requests.refunded_taxes.tax,owner,owner.extra_questions,badge,badge.features,ticket_type",
|
|
425
|
+
fields: "badge.none,promo_code.id,promo_code.code,promo_code.allows_to_delegate,promo_code.allows_to_reassign,ticket_type.id,ticket_type.name,ticket_type.allows_to_delegate,ticket_type.allows_to_reassign",
|
|
426
|
+
expand: "refund_requests,refund_requests.refunded_taxes,refund_requests.refunded_taxes.tax,owner,owner.extra_questions,badge,badge.features,ticket_type,promo_code",
|
|
424
427
|
order: "+id",
|
|
425
|
-
relations: "none,badge.features",
|
|
428
|
+
relations: "none,badge.features,promo_code.none,ticket_type.none",
|
|
426
429
|
page,
|
|
427
430
|
per_page: perPage
|
|
428
431
|
};
|
|
429
432
|
if (Object.keys(filter).length > 0) {
|
|
430
|
-
const filters = parseFilter(filter,
|
|
433
|
+
const filters = parseFilter(filter, _utils_constants__WEBPACK_IMPORTED_MODULE_9__.FILTER_ACTION.TICKETS_BY_ORDERS);
|
|
431
434
|
params["filter[]"] = [...params["filter[]"], ...filters];
|
|
432
435
|
}
|
|
433
436
|
if (Object.keys(sort).length > 0) {
|
|
@@ -500,7 +503,7 @@ const refundBulkTickets = _ref11 => {
|
|
|
500
503
|
tickets
|
|
501
504
|
} = _ref11;
|
|
502
505
|
return async dispatch => {
|
|
503
|
-
const limit = p_limit__WEBPACK_IMPORTED_MODULE_2___default()(
|
|
506
|
+
const limit = p_limit__WEBPACK_IMPORTED_MODULE_2___default()(_utils_constants__WEBPACK_IMPORTED_MODULE_9__.PROMISE_BATCH_LIMIT);
|
|
504
507
|
const allRefundTicketCalls = tickets.map(ticket => limit(() => dispatch(refundTicket({
|
|
505
508
|
ticket
|
|
506
509
|
}))));
|
|
@@ -532,7 +535,7 @@ const getExtraQuestions = attendeeId => async (dispatch, getState, _ref12) => {
|
|
|
532
535
|
if (!accessToken) return (0,_utils_auth__WEBPACK_IMPORTED_MODULE_7__.authPromiseReject)();
|
|
533
536
|
const params = {
|
|
534
537
|
page: 1,
|
|
535
|
-
per_page:
|
|
538
|
+
per_page: _utils_constants__WEBPACK_IMPORTED_MODULE_9__.FIFTY_PER_PAGE,
|
|
536
539
|
expand: "*sub_question_rules,*sub_question,*values",
|
|
537
540
|
access_token: accessToken,
|
|
538
541
|
"filter[]": "tickets_exclude_inactives==true"
|
|
@@ -724,10 +727,26 @@ const saveExtraQuestions = (ticket, answers) => async (dispatch, getState, _ref1
|
|
|
724
727
|
return e;
|
|
725
728
|
});
|
|
726
729
|
};
|
|
727
|
-
const
|
|
730
|
+
const downloadOrderReceipt = _ref20 => {
|
|
728
731
|
let {
|
|
729
|
-
|
|
732
|
+
order,
|
|
733
|
+
summit
|
|
730
734
|
} = _ref20;
|
|
735
|
+
return async (dispatch, getState, _ref21) => {
|
|
736
|
+
let {
|
|
737
|
+
receiptSettings
|
|
738
|
+
} = _ref21;
|
|
739
|
+
return (0,_components_OrderReceipt__WEBPACK_IMPORTED_MODULE_8__.generateReceiptPDF)({
|
|
740
|
+
order,
|
|
741
|
+
summit,
|
|
742
|
+
receiptSettings
|
|
743
|
+
});
|
|
744
|
+
};
|
|
745
|
+
};
|
|
746
|
+
const getTicketPDF = ticket => async (dispatch, getState, _ref22) => {
|
|
747
|
+
let {
|
|
748
|
+
apiBaseUrl
|
|
749
|
+
} = _ref22;
|
|
731
750
|
const accessToken = await (0,_utils_auth__WEBPACK_IMPORTED_MODULE_7__.getAccessTokenSafely)();
|
|
732
751
|
if (!accessToken) return (0,_utils_auth__WEBPACK_IMPORTED_MODULE_7__.authPromiseReject)();
|
|
733
752
|
dispatch((0,openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_1__.startLoading)());
|
|
@@ -3591,6 +3610,1016 @@ const NoTicketsFound = _ref => {
|
|
|
3591
3610
|
|
|
3592
3611
|
/***/ }),
|
|
3593
3612
|
|
|
3613
|
+
/***/ "./src/components/OrderReceipt/generateReceiptPDF.js":
|
|
3614
|
+
/*!***********************************************************!*\
|
|
3615
|
+
!*** ./src/components/OrderReceipt/generateReceiptPDF.js ***!
|
|
3616
|
+
\***********************************************************/
|
|
3617
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
3618
|
+
|
|
3619
|
+
__webpack_require__.r(__webpack_exports__);
|
|
3620
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
3621
|
+
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__),
|
|
3622
|
+
/* harmony export */ generateReceiptPDF: () => (/* binding */ generateReceiptPDF)
|
|
3623
|
+
/* harmony export */ });
|
|
3624
|
+
/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "@babel/runtime/helpers/defineProperty");
|
|
3625
|
+
/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__);
|
|
3626
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");
|
|
3627
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);
|
|
3628
|
+
/* harmony import */ var _react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @react-pdf/renderer */ "@react-pdf/renderer");
|
|
3629
|
+
/* harmony import */ var _react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__);
|
|
3630
|
+
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");
|
|
3631
|
+
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__);
|
|
3632
|
+
|
|
3633
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
3634
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
3635
|
+
/**
|
|
3636
|
+
* Copyright 2026 OpenStack Foundation
|
|
3637
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
3638
|
+
* you may not use this file except in compliance with the License.
|
|
3639
|
+
* You may obtain a copy of the License at
|
|
3640
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
3641
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
3642
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
3643
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
3644
|
+
* See the License for the specific language governing permissions and
|
|
3645
|
+
* limitations under the License.
|
|
3646
|
+
* */
|
|
3647
|
+
|
|
3648
|
+
|
|
3649
|
+
|
|
3650
|
+
|
|
3651
|
+
// Track registered fonts to avoid re-registering
|
|
3652
|
+
|
|
3653
|
+
const registeredFonts = new Set();
|
|
3654
|
+
|
|
3655
|
+
// Built-in fallback font (available in @react-pdf/renderer without registration)
|
|
3656
|
+
const FALLBACK_FONT = "Helvetica";
|
|
3657
|
+
|
|
3658
|
+
// Default receipt settings
|
|
3659
|
+
const DEFAULT_RECEIPT_SETTINGS = {
|
|
3660
|
+
primaryColor: "#333333",
|
|
3661
|
+
fontFamily: null,
|
|
3662
|
+
// Font family name (consumer should provide this)
|
|
3663
|
+
fontFile: null,
|
|
3664
|
+
// URL to font file (ttf) - required if fontFamily is provided
|
|
3665
|
+
printLogo: null,
|
|
3666
|
+
organizerLegalName: null,
|
|
3667
|
+
organizerAddressLine1: null,
|
|
3668
|
+
organizerAddressLine2: null,
|
|
3669
|
+
organizerCity: null,
|
|
3670
|
+
organizerState: null,
|
|
3671
|
+
organizerPostalCode: null,
|
|
3672
|
+
organizerCountry: null,
|
|
3673
|
+
organizerTaxId: null,
|
|
3674
|
+
organizerTaxIdLabel: null,
|
|
3675
|
+
supportEmail: null
|
|
3676
|
+
};
|
|
3677
|
+
|
|
3678
|
+
/**
|
|
3679
|
+
* Register a custom font for PDF generation
|
|
3680
|
+
* @param {string} fontFamily - Font family name
|
|
3681
|
+
* @param {string} fontFile - URL to the font file (must be ttf)
|
|
3682
|
+
* @returns {boolean} - Whether registration was successful
|
|
3683
|
+
*/
|
|
3684
|
+
const registerFont = (fontFamily, fontFile) => {
|
|
3685
|
+
if (!fontFamily || !fontFile) return false;
|
|
3686
|
+
if (registeredFonts.has(fontFamily)) return true;
|
|
3687
|
+
try {
|
|
3688
|
+
_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Font.register({
|
|
3689
|
+
family: fontFamily,
|
|
3690
|
+
fonts: [{
|
|
3691
|
+
src: fontFile,
|
|
3692
|
+
fontWeight: "normal"
|
|
3693
|
+
}, {
|
|
3694
|
+
src: fontFile,
|
|
3695
|
+
fontWeight: "bold"
|
|
3696
|
+
}]
|
|
3697
|
+
});
|
|
3698
|
+
registeredFonts.add(fontFamily);
|
|
3699
|
+
return true;
|
|
3700
|
+
} catch (error) {
|
|
3701
|
+
console.warn("Failed to register font:", error);
|
|
3702
|
+
return false;
|
|
3703
|
+
}
|
|
3704
|
+
};
|
|
3705
|
+
|
|
3706
|
+
// Validate image URL before PDF generation (same pattern as certificate)
|
|
3707
|
+
const validateImageUrl = async url => {
|
|
3708
|
+
if (!url) return null;
|
|
3709
|
+
try {
|
|
3710
|
+
const response = await fetch(url, {
|
|
3711
|
+
method: "GET",
|
|
3712
|
+
mode: "cors"
|
|
3713
|
+
});
|
|
3714
|
+
if (response.ok) {
|
|
3715
|
+
return url;
|
|
3716
|
+
}
|
|
3717
|
+
return null;
|
|
3718
|
+
} catch (error) {
|
|
3719
|
+
console.warn("Image validation failed:", error);
|
|
3720
|
+
return null;
|
|
3721
|
+
}
|
|
3722
|
+
};
|
|
3723
|
+
const CURRENCY_DECIMALS = 2;
|
|
3724
|
+
const MS_PER_SECOND = 1000;
|
|
3725
|
+
const MIN_MASK_LENGTH = 2;
|
|
3726
|
+
const MAX_MASK_CHARS = 4;
|
|
3727
|
+
const formatCurrency = function (amount) {
|
|
3728
|
+
let currencySymbol = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "$";
|
|
3729
|
+
let currency = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : "USD";
|
|
3730
|
+
const numAmount = parseFloat(amount) || 0;
|
|
3731
|
+
return "".concat(currencySymbol).concat(numAmount.toFixed(CURRENCY_DECIMALS), " ").concat(currency);
|
|
3732
|
+
};
|
|
3733
|
+
const formatDate = timestamp => {
|
|
3734
|
+
if (!timestamp) return "";
|
|
3735
|
+
const date = new Date(timestamp * MS_PER_SECOND);
|
|
3736
|
+
return date.toLocaleDateString("en-US", {
|
|
3737
|
+
year: "numeric",
|
|
3738
|
+
month: "long",
|
|
3739
|
+
day: "2-digit"
|
|
3740
|
+
});
|
|
3741
|
+
};
|
|
3742
|
+
const maskPromoCode = code => {
|
|
3743
|
+
if (!code || code.length <= MIN_MASK_LENGTH) return code;
|
|
3744
|
+
const chars = [...code];
|
|
3745
|
+
const first = chars.shift();
|
|
3746
|
+
const last = chars.pop();
|
|
3747
|
+
const maskLength = Math.min(chars.length, MAX_MASK_CHARS);
|
|
3748
|
+
return "".concat(first).concat("*".repeat(maskLength)).concat(last);
|
|
3749
|
+
};
|
|
3750
|
+
const capitalize = str => {
|
|
3751
|
+
if (!str) return null;
|
|
3752
|
+
const [first, ...rest] = str;
|
|
3753
|
+
return first.toUpperCase() + rest.join("");
|
|
3754
|
+
};
|
|
3755
|
+
const getBadgeStatus = (amount, refundedAmount) => {
|
|
3756
|
+
const numAmount = parseFloat(amount) || 0;
|
|
3757
|
+
const numRefunded = parseFloat(refundedAmount) || 0;
|
|
3758
|
+
if (numAmount > 0 && numRefunded >= numAmount) {
|
|
3759
|
+
return {
|
|
3760
|
+
text: "REFUNDED",
|
|
3761
|
+
color: "#666666"
|
|
3762
|
+
};
|
|
3763
|
+
}
|
|
3764
|
+
if (numRefunded > 0) {
|
|
3765
|
+
return {
|
|
3766
|
+
text: "PARTIAL REFUND",
|
|
3767
|
+
color: "#e67e22"
|
|
3768
|
+
};
|
|
3769
|
+
}
|
|
3770
|
+
return {
|
|
3771
|
+
text: "PAID",
|
|
3772
|
+
color: "#0a7a2f"
|
|
3773
|
+
};
|
|
3774
|
+
};
|
|
3775
|
+
const getPaymentMethodLabel = order => {
|
|
3776
|
+
const {
|
|
3777
|
+
payment_info_type,
|
|
3778
|
+
payment_method
|
|
3779
|
+
} = order;
|
|
3780
|
+
switch (payment_info_type) {
|
|
3781
|
+
case "card":
|
|
3782
|
+
return "Credit / Debit Card";
|
|
3783
|
+
case "link":
|
|
3784
|
+
return "Link Payment";
|
|
3785
|
+
case "us_bank_account":
|
|
3786
|
+
return "Bank Transfer (ACH)";
|
|
3787
|
+
case "alipay":
|
|
3788
|
+
return "Alipay";
|
|
3789
|
+
default:
|
|
3790
|
+
if (payment_method === "Offline") return "Offline Payment";
|
|
3791
|
+
return "N/A";
|
|
3792
|
+
}
|
|
3793
|
+
};
|
|
3794
|
+
const formatAddress = settings => {
|
|
3795
|
+
const parts = [];
|
|
3796
|
+
if (settings.organizerAddressLine1) parts.push(settings.organizerAddressLine1);
|
|
3797
|
+
if (settings.organizerAddressLine2) parts.push(settings.organizerAddressLine2);
|
|
3798
|
+
const cityStateZip = [settings.organizerCity, settings.organizerState, settings.organizerPostalCode].filter(Boolean).join(", ");
|
|
3799
|
+
if (cityStateZip) parts.push(cityStateZip);
|
|
3800
|
+
if (settings.organizerCountry) parts.push(settings.organizerCountry);
|
|
3801
|
+
return parts;
|
|
3802
|
+
};
|
|
3803
|
+
const ReceiptPDF = _ref => {
|
|
3804
|
+
let {
|
|
3805
|
+
order,
|
|
3806
|
+
summit,
|
|
3807
|
+
settings,
|
|
3808
|
+
logoUrl
|
|
3809
|
+
} = _ref;
|
|
3810
|
+
const primaryColor = settings.primaryColor || "#333333";
|
|
3811
|
+
const fontFamily = settings.fontFamily || FALLBACK_FONT;
|
|
3812
|
+
const styles = _react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.StyleSheet.create({
|
|
3813
|
+
page: {
|
|
3814
|
+
backgroundColor: "#ffffff",
|
|
3815
|
+
fontFamily,
|
|
3816
|
+
fontSize: 10,
|
|
3817
|
+
color: "#333333",
|
|
3818
|
+
padding: 40
|
|
3819
|
+
},
|
|
3820
|
+
header: {
|
|
3821
|
+
flexDirection: "row",
|
|
3822
|
+
justifyContent: "space-between",
|
|
3823
|
+
alignItems: "flex-start",
|
|
3824
|
+
marginBottom: 8,
|
|
3825
|
+
borderBottomWidth: 2,
|
|
3826
|
+
borderBottomColor: "#eeeeee",
|
|
3827
|
+
paddingBottom: 8
|
|
3828
|
+
},
|
|
3829
|
+
headerLeft: {
|
|
3830
|
+
flex: 1,
|
|
3831
|
+
marginRight: 12
|
|
3832
|
+
},
|
|
3833
|
+
headerSubtitle: {
|
|
3834
|
+
fontSize: 9,
|
|
3835
|
+
color: "#777777",
|
|
3836
|
+
marginBottom: 4
|
|
3837
|
+
},
|
|
3838
|
+
headerTitleRow: {
|
|
3839
|
+
flexDirection: "row",
|
|
3840
|
+
alignItems: "center",
|
|
3841
|
+
flexWrap: "wrap",
|
|
3842
|
+
marginBottom: 4,
|
|
3843
|
+
gap: 8
|
|
3844
|
+
},
|
|
3845
|
+
headerTitle: {
|
|
3846
|
+
fontSize: 16,
|
|
3847
|
+
fontWeight: "bold",
|
|
3848
|
+
color: primaryColor
|
|
3849
|
+
},
|
|
3850
|
+
headerTagline: {
|
|
3851
|
+
fontSize: 9,
|
|
3852
|
+
color: "#666666"
|
|
3853
|
+
},
|
|
3854
|
+
paidBadge: {
|
|
3855
|
+
backgroundColor: "#0a7a2f",
|
|
3856
|
+
color: "#ffffff",
|
|
3857
|
+
fontSize: 9,
|
|
3858
|
+
fontWeight: "bold",
|
|
3859
|
+
paddingVertical: 4,
|
|
3860
|
+
paddingHorizontal: 12,
|
|
3861
|
+
borderRadius: 10
|
|
3862
|
+
},
|
|
3863
|
+
headerRight: {
|
|
3864
|
+
alignItems: "flex-end"
|
|
3865
|
+
},
|
|
3866
|
+
logo: {
|
|
3867
|
+
maxWidth: 100,
|
|
3868
|
+
maxHeight: 40,
|
|
3869
|
+
objectFit: "contain"
|
|
3870
|
+
},
|
|
3871
|
+
twoCol: {
|
|
3872
|
+
flexDirection: "row",
|
|
3873
|
+
justifyContent: "space-between",
|
|
3874
|
+
gap: 24
|
|
3875
|
+
},
|
|
3876
|
+
colHalf: {
|
|
3877
|
+
flex: 1
|
|
3878
|
+
},
|
|
3879
|
+
sectionTitle: {
|
|
3880
|
+
fontSize: 9,
|
|
3881
|
+
fontWeight: "bold",
|
|
3882
|
+
marginTop: 10,
|
|
3883
|
+
marginBottom: 6,
|
|
3884
|
+
textTransform: "uppercase",
|
|
3885
|
+
letterSpacing: 0.6,
|
|
3886
|
+
color: "#555555"
|
|
3887
|
+
},
|
|
3888
|
+
fieldLabel: {
|
|
3889
|
+
fontSize: 8,
|
|
3890
|
+
color: "#777777",
|
|
3891
|
+
marginBottom: 1
|
|
3892
|
+
},
|
|
3893
|
+
fieldValue: {
|
|
3894
|
+
fontSize: 10,
|
|
3895
|
+
fontWeight: "bold",
|
|
3896
|
+
marginBottom: 4
|
|
3897
|
+
},
|
|
3898
|
+
smallMuted: {
|
|
3899
|
+
fontSize: 8,
|
|
3900
|
+
color: "#777777"
|
|
3901
|
+
},
|
|
3902
|
+
table: {
|
|
3903
|
+
marginTop: 4
|
|
3904
|
+
},
|
|
3905
|
+
tableHeader: {
|
|
3906
|
+
flexDirection: "row",
|
|
3907
|
+
borderBottomWidth: 1,
|
|
3908
|
+
borderBottomColor: "#cccccc",
|
|
3909
|
+
padding: 6
|
|
3910
|
+
},
|
|
3911
|
+
tableHeaderCell: {
|
|
3912
|
+
fontSize: 8,
|
|
3913
|
+
textTransform: "uppercase",
|
|
3914
|
+
letterSpacing: 0.5,
|
|
3915
|
+
color: "#555555",
|
|
3916
|
+
fontWeight: "bold"
|
|
3917
|
+
},
|
|
3918
|
+
tableRow: {
|
|
3919
|
+
flexDirection: "row",
|
|
3920
|
+
borderBottomWidth: 1,
|
|
3921
|
+
borderBottomColor: "#eeeeee",
|
|
3922
|
+
padding: 6
|
|
3923
|
+
},
|
|
3924
|
+
tableCell: {
|
|
3925
|
+
fontSize: 9
|
|
3926
|
+
},
|
|
3927
|
+
textRight: {
|
|
3928
|
+
textAlign: "right"
|
|
3929
|
+
},
|
|
3930
|
+
totalsTable: {
|
|
3931
|
+
marginTop: 16,
|
|
3932
|
+
marginLeft: "auto",
|
|
3933
|
+
width: 220
|
|
3934
|
+
},
|
|
3935
|
+
totalsRow: {
|
|
3936
|
+
flexDirection: "row",
|
|
3937
|
+
justifyContent: "space-between",
|
|
3938
|
+
padding: 4
|
|
3939
|
+
},
|
|
3940
|
+
totalsLabel: {
|
|
3941
|
+
fontSize: 9,
|
|
3942
|
+
color: "#555555"
|
|
3943
|
+
},
|
|
3944
|
+
totalsValue: {
|
|
3945
|
+
fontSize: 9,
|
|
3946
|
+
fontWeight: "bold",
|
|
3947
|
+
textAlign: "right"
|
|
3948
|
+
},
|
|
3949
|
+
totalsTotalRow: {
|
|
3950
|
+
borderTopWidth: 1,
|
|
3951
|
+
borderTopColor: "#cccccc",
|
|
3952
|
+
paddingTop: 6,
|
|
3953
|
+
marginTop: 4
|
|
3954
|
+
},
|
|
3955
|
+
totalsBalanceRow: {
|
|
3956
|
+
color: "#0a7a2f"
|
|
3957
|
+
},
|
|
3958
|
+
box: {
|
|
3959
|
+
borderWidth: 1,
|
|
3960
|
+
borderColor: primaryColor,
|
|
3961
|
+
borderRadius: 6,
|
|
3962
|
+
padding: 10,
|
|
3963
|
+
backgroundColor: "#fff8f8",
|
|
3964
|
+
marginTop: 16
|
|
3965
|
+
},
|
|
3966
|
+
boxTitle: {
|
|
3967
|
+
fontSize: 10,
|
|
3968
|
+
fontWeight: "bold",
|
|
3969
|
+
color: primaryColor,
|
|
3970
|
+
marginBottom: 6
|
|
3971
|
+
},
|
|
3972
|
+
footer: {
|
|
3973
|
+
marginTop: 24,
|
|
3974
|
+
fontSize: 8,
|
|
3975
|
+
color: "#666666",
|
|
3976
|
+
borderTopWidth: 1,
|
|
3977
|
+
borderTopColor: "#eeeeee",
|
|
3978
|
+
paddingTop: 10
|
|
3979
|
+
}
|
|
3980
|
+
});
|
|
3981
|
+
const tickets = order.tickets || [];
|
|
3982
|
+
const currencySymbol = order.currency_symbol || "$";
|
|
3983
|
+
const currency = order.currency || "USD";
|
|
3984
|
+
const addressLines = formatAddress(settings);
|
|
3985
|
+
const badge = getBadgeStatus(order.amount, order.refunded_amount);
|
|
3986
|
+
return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Document, {
|
|
3987
|
+
children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Page, {
|
|
3988
|
+
size: "A4",
|
|
3989
|
+
style: styles.page,
|
|
3990
|
+
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.View, {
|
|
3991
|
+
style: styles.header,
|
|
3992
|
+
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.View, {
|
|
3993
|
+
style: styles.headerLeft,
|
|
3994
|
+
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
3995
|
+
style: styles.headerSubtitle,
|
|
3996
|
+
children: [summit.name, summit.tagline ? " \u2014 ".concat(summit.tagline) : ""]
|
|
3997
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.View, {
|
|
3998
|
+
style: styles.headerTitleRow,
|
|
3999
|
+
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4000
|
+
style: styles.headerTitle,
|
|
4001
|
+
children: "Payment Receipt / Invoice for Reimbursement"
|
|
4002
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4003
|
+
style: [styles.paidBadge, {
|
|
4004
|
+
backgroundColor: badge.color
|
|
4005
|
+
}],
|
|
4006
|
+
children: badge.text
|
|
4007
|
+
})]
|
|
4008
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4009
|
+
style: styles.headerTagline,
|
|
4010
|
+
children: "This document confirms that your registration has been paid in full. Keep it for your records or submit it for employer reimbursement."
|
|
4011
|
+
})]
|
|
4012
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.View, {
|
|
4013
|
+
style: styles.headerRight,
|
|
4014
|
+
children: logoUrl && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Image, {
|
|
4015
|
+
src: logoUrl,
|
|
4016
|
+
style: styles.logo
|
|
4017
|
+
})
|
|
4018
|
+
})]
|
|
4019
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.View, {
|
|
4020
|
+
style: styles.twoCol,
|
|
4021
|
+
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.View, {
|
|
4022
|
+
style: styles.colHalf,
|
|
4023
|
+
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4024
|
+
style: styles.sectionTitle,
|
|
4025
|
+
children: "Organizer"
|
|
4026
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4027
|
+
style: styles.fieldValue,
|
|
4028
|
+
children: settings.organizerLegalName || summit.name
|
|
4029
|
+
}), addressLines.map(line => /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4030
|
+
style: styles.tableCell,
|
|
4031
|
+
children: line
|
|
4032
|
+
}, line)), settings.organizerTaxId && settings.organizerTaxIdLabel && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4033
|
+
style: styles.smallMuted,
|
|
4034
|
+
children: [settings.organizerTaxIdLabel, ": ", settings.organizerTaxId]
|
|
4035
|
+
}), settings.supportEmail && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4036
|
+
style: styles.smallMuted,
|
|
4037
|
+
children: ["Support: ", settings.supportEmail]
|
|
4038
|
+
})]
|
|
4039
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.View, {
|
|
4040
|
+
style: styles.colHalf,
|
|
4041
|
+
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4042
|
+
style: styles.sectionTitle,
|
|
4043
|
+
children: "Document Details"
|
|
4044
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4045
|
+
style: styles.fieldLabel,
|
|
4046
|
+
children: "Document Number"
|
|
4047
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4048
|
+
style: styles.fieldValue,
|
|
4049
|
+
children: order.number
|
|
4050
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4051
|
+
style: styles.fieldLabel,
|
|
4052
|
+
children: "Issue Date"
|
|
4053
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4054
|
+
style: styles.fieldValue,
|
|
4055
|
+
children: order.issue_date
|
|
4056
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4057
|
+
style: styles.fieldLabel,
|
|
4058
|
+
children: "Purchase Date"
|
|
4059
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4060
|
+
style: styles.fieldValue,
|
|
4061
|
+
children: order.purchased_date
|
|
4062
|
+
}), order.confirmation_date && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.Fragment, {
|
|
4063
|
+
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4064
|
+
style: styles.fieldLabel,
|
|
4065
|
+
children: "Order Confirmation Email"
|
|
4066
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4067
|
+
style: styles.fieldValue,
|
|
4068
|
+
children: order.confirmation_date
|
|
4069
|
+
})]
|
|
4070
|
+
})]
|
|
4071
|
+
})]
|
|
4072
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.View, {
|
|
4073
|
+
style: [styles.twoCol, {
|
|
4074
|
+
marginTop: 4
|
|
4075
|
+
}],
|
|
4076
|
+
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.View, {
|
|
4077
|
+
style: styles.colHalf,
|
|
4078
|
+
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4079
|
+
style: styles.sectionTitle,
|
|
4080
|
+
children: "Billed To"
|
|
4081
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4082
|
+
style: styles.fieldValue,
|
|
4083
|
+
children: order.owner_full_name
|
|
4084
|
+
}), order.owner_company && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4085
|
+
style: styles.tableCell,
|
|
4086
|
+
children: order.owner_company
|
|
4087
|
+
}), order.owner_email && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4088
|
+
style: styles.smallMuted,
|
|
4089
|
+
children: order.owner_email
|
|
4090
|
+
})]
|
|
4091
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.View, {
|
|
4092
|
+
style: styles.colHalf,
|
|
4093
|
+
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4094
|
+
style: styles.sectionTitle,
|
|
4095
|
+
children: "Event"
|
|
4096
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4097
|
+
style: styles.fieldValue,
|
|
4098
|
+
children: summit.name
|
|
4099
|
+
})]
|
|
4100
|
+
})]
|
|
4101
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4102
|
+
style: [styles.sectionTitle, {
|
|
4103
|
+
marginTop: 20
|
|
4104
|
+
}],
|
|
4105
|
+
children: "Registration Summary"
|
|
4106
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.View, {
|
|
4107
|
+
style: styles.table,
|
|
4108
|
+
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.View, {
|
|
4109
|
+
style: styles.tableHeader,
|
|
4110
|
+
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4111
|
+
style: [styles.tableHeaderCell, {
|
|
4112
|
+
width: "40%"
|
|
4113
|
+
}],
|
|
4114
|
+
children: "Description"
|
|
4115
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4116
|
+
style: [styles.tableHeaderCell, styles.textRight, {
|
|
4117
|
+
width: "15%"
|
|
4118
|
+
}],
|
|
4119
|
+
children: "Qty"
|
|
4120
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4121
|
+
style: [styles.tableHeaderCell, styles.textRight, {
|
|
4122
|
+
width: "22%"
|
|
4123
|
+
}],
|
|
4124
|
+
children: "Unit Price"
|
|
4125
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4126
|
+
style: [styles.tableHeaderCell, styles.textRight, {
|
|
4127
|
+
width: "23%"
|
|
4128
|
+
}],
|
|
4129
|
+
children: "Amount"
|
|
4130
|
+
})]
|
|
4131
|
+
}), tickets.length > 0 ? tickets.map(ticket => {
|
|
4132
|
+
var _ticket$ticket_type;
|
|
4133
|
+
return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.View, {
|
|
4134
|
+
style: styles.tableRow,
|
|
4135
|
+
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.View, {
|
|
4136
|
+
style: {
|
|
4137
|
+
width: "40%"
|
|
4138
|
+
},
|
|
4139
|
+
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4140
|
+
style: styles.tableCell,
|
|
4141
|
+
children: ticket.ticket_type_name || ((_ticket$ticket_type = ticket.ticket_type) === null || _ticket$ticket_type === void 0 ? void 0 : _ticket$ticket_type.name)
|
|
4142
|
+
}), ticket.owner_email && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4143
|
+
style: styles.smallMuted,
|
|
4144
|
+
children: ["Attendee: ", ticket.owner_email]
|
|
4145
|
+
}), ticket.promo_code && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4146
|
+
style: styles.smallMuted,
|
|
4147
|
+
children: ["Promo Code: ", maskPromoCode(ticket.promo_code)]
|
|
4148
|
+
})]
|
|
4149
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4150
|
+
style: [styles.tableCell, styles.textRight, {
|
|
4151
|
+
width: "15%"
|
|
4152
|
+
}],
|
|
4153
|
+
children: "1"
|
|
4154
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4155
|
+
style: [styles.tableCell, styles.textRight, {
|
|
4156
|
+
width: "22%"
|
|
4157
|
+
}],
|
|
4158
|
+
children: formatCurrency(ticket.final_amount || ticket.raw_cost, currencySymbol, currency)
|
|
4159
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4160
|
+
style: [styles.tableCell, styles.textRight, {
|
|
4161
|
+
width: "23%"
|
|
4162
|
+
}],
|
|
4163
|
+
children: formatCurrency(ticket.final_amount || ticket.raw_cost, currencySymbol, currency)
|
|
4164
|
+
})]
|
|
4165
|
+
}, ticket.number);
|
|
4166
|
+
}) : /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.View, {
|
|
4167
|
+
style: styles.tableRow,
|
|
4168
|
+
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4169
|
+
style: [styles.tableCell, {
|
|
4170
|
+
width: "40%"
|
|
4171
|
+
}],
|
|
4172
|
+
children: "Conference Registration"
|
|
4173
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4174
|
+
style: [styles.tableCell, styles.textRight, {
|
|
4175
|
+
width: "15%"
|
|
4176
|
+
}],
|
|
4177
|
+
children: "1"
|
|
4178
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4179
|
+
style: [styles.tableCell, styles.textRight, {
|
|
4180
|
+
width: "22%"
|
|
4181
|
+
}],
|
|
4182
|
+
children: formatCurrency(order.raw_amount || order.amount, currencySymbol, currency)
|
|
4183
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4184
|
+
style: [styles.tableCell, styles.textRight, {
|
|
4185
|
+
width: "23%"
|
|
4186
|
+
}],
|
|
4187
|
+
children: formatCurrency(order.raw_amount || order.amount, currencySymbol, currency)
|
|
4188
|
+
})]
|
|
4189
|
+
})]
|
|
4190
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.View, {
|
|
4191
|
+
style: styles.totalsTable,
|
|
4192
|
+
children: [order.raw_amount !== undefined && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.View, {
|
|
4193
|
+
style: styles.totalsRow,
|
|
4194
|
+
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4195
|
+
style: styles.totalsLabel,
|
|
4196
|
+
children: "Amount"
|
|
4197
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4198
|
+
style: styles.totalsValue,
|
|
4199
|
+
children: formatCurrency(order.raw_amount, currencySymbol, currency)
|
|
4200
|
+
})]
|
|
4201
|
+
}), order.discount && parseFloat(order.discount) > 0 && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.View, {
|
|
4202
|
+
style: styles.totalsRow,
|
|
4203
|
+
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4204
|
+
style: styles.totalsLabel,
|
|
4205
|
+
children: "Discount"
|
|
4206
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4207
|
+
style: styles.totalsValue,
|
|
4208
|
+
children: ["-", formatCurrency(order.discount, currencySymbol, currency)]
|
|
4209
|
+
})]
|
|
4210
|
+
}), order.applied_taxes.map(tax => /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.View, {
|
|
4211
|
+
style: styles.totalsRow,
|
|
4212
|
+
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4213
|
+
style: styles.totalsLabel,
|
|
4214
|
+
children: tax.name
|
|
4215
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4216
|
+
style: styles.totalsValue,
|
|
4217
|
+
children: ["+", formatCurrency(tax.amount, currencySymbol, currency)]
|
|
4218
|
+
})]
|
|
4219
|
+
}, tax.id)), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.View, {
|
|
4220
|
+
style: [styles.totalsRow, styles.totalsTotalRow],
|
|
4221
|
+
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4222
|
+
style: [styles.totalsLabel, {
|
|
4223
|
+
fontWeight: "bold"
|
|
4224
|
+
}],
|
|
4225
|
+
children: "Amount Paid"
|
|
4226
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4227
|
+
style: [styles.totalsValue, {
|
|
4228
|
+
fontWeight: "bold"
|
|
4229
|
+
}],
|
|
4230
|
+
children: formatCurrency(order.amount, currencySymbol, currency)
|
|
4231
|
+
})]
|
|
4232
|
+
}), parseFloat(order.refunded_amount) > 0 && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.View, {
|
|
4233
|
+
style: styles.totalsRow,
|
|
4234
|
+
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4235
|
+
style: styles.totalsLabel,
|
|
4236
|
+
children: "Refunded"
|
|
4237
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4238
|
+
style: styles.totalsValue,
|
|
4239
|
+
children: ["-", formatCurrency(order.refunded_amount, currencySymbol, currency)]
|
|
4240
|
+
})]
|
|
4241
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.View, {
|
|
4242
|
+
style: [styles.totalsRow, styles.totalsBalanceRow],
|
|
4243
|
+
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4244
|
+
style: [styles.totalsLabel, {
|
|
4245
|
+
fontWeight: "bold"
|
|
4246
|
+
}],
|
|
4247
|
+
children: "Balance Due"
|
|
4248
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4249
|
+
style: [styles.totalsValue, {
|
|
4250
|
+
fontWeight: "bold"
|
|
4251
|
+
}],
|
|
4252
|
+
children: formatCurrency(0, currencySymbol, currency)
|
|
4253
|
+
})]
|
|
4254
|
+
})]
|
|
4255
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4256
|
+
style: styles.sectionTitle,
|
|
4257
|
+
children: "Payment Information"
|
|
4258
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.View, {
|
|
4259
|
+
style: styles.table,
|
|
4260
|
+
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.View, {
|
|
4261
|
+
style: styles.tableHeader,
|
|
4262
|
+
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4263
|
+
style: [styles.tableHeaderCell, {
|
|
4264
|
+
width: "35%"
|
|
4265
|
+
}],
|
|
4266
|
+
children: "Field"
|
|
4267
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4268
|
+
style: [styles.tableHeaderCell, {
|
|
4269
|
+
width: "65%"
|
|
4270
|
+
}],
|
|
4271
|
+
children: "Value"
|
|
4272
|
+
})]
|
|
4273
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.View, {
|
|
4274
|
+
style: styles.tableRow,
|
|
4275
|
+
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4276
|
+
style: [styles.tableCell, {
|
|
4277
|
+
width: "35%"
|
|
4278
|
+
}],
|
|
4279
|
+
children: "Payment Method"
|
|
4280
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4281
|
+
style: [styles.tableCell, {
|
|
4282
|
+
width: "65%"
|
|
4283
|
+
}],
|
|
4284
|
+
children: order.payment_method_readable
|
|
4285
|
+
})]
|
|
4286
|
+
}), order.credit_card_type && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.View, {
|
|
4287
|
+
style: styles.tableRow,
|
|
4288
|
+
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4289
|
+
style: [styles.tableCell, {
|
|
4290
|
+
width: "35%"
|
|
4291
|
+
}],
|
|
4292
|
+
children: "Card Type"
|
|
4293
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4294
|
+
style: [styles.tableCell, {
|
|
4295
|
+
width: "65%"
|
|
4296
|
+
}],
|
|
4297
|
+
children: order.credit_card_type
|
|
4298
|
+
})]
|
|
4299
|
+
}), order.credit_card_4number && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.View, {
|
|
4300
|
+
style: styles.tableRow,
|
|
4301
|
+
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4302
|
+
style: [styles.tableCell, {
|
|
4303
|
+
width: "35%"
|
|
4304
|
+
}],
|
|
4305
|
+
children: "Last Four"
|
|
4306
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4307
|
+
style: [styles.tableCell, {
|
|
4308
|
+
width: "65%"
|
|
4309
|
+
}],
|
|
4310
|
+
children: order.credit_card_4number
|
|
4311
|
+
})]
|
|
4312
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.View, {
|
|
4313
|
+
style: styles.tableRow,
|
|
4314
|
+
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4315
|
+
style: [styles.tableCell, {
|
|
4316
|
+
width: "35%"
|
|
4317
|
+
}],
|
|
4318
|
+
children: "Order Number"
|
|
4319
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4320
|
+
style: [styles.tableCell, {
|
|
4321
|
+
width: "65%"
|
|
4322
|
+
}],
|
|
4323
|
+
children: order.number
|
|
4324
|
+
})]
|
|
4325
|
+
})]
|
|
4326
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.View, {
|
|
4327
|
+
style: styles.box,
|
|
4328
|
+
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4329
|
+
style: styles.boxTitle,
|
|
4330
|
+
children: "For Employer / Reimbursement Use"
|
|
4331
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4332
|
+
style: {
|
|
4333
|
+
fontSize: 10
|
|
4334
|
+
},
|
|
4335
|
+
children: ["This is a payment receipt confirming the", " ", /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4336
|
+
style: {
|
|
4337
|
+
fontWeight: "bold"
|
|
4338
|
+
},
|
|
4339
|
+
children: "amount paid"
|
|
4340
|
+
}), " has been paid in full and serves as both an invoice and receipt."]
|
|
4341
|
+
})]
|
|
4342
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.View, {
|
|
4343
|
+
style: styles.footer,
|
|
4344
|
+
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4345
|
+
children: ["Thank you for registering for ", summit.name, "."]
|
|
4346
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.Text, {
|
|
4347
|
+
style: {
|
|
4348
|
+
marginTop: 4
|
|
4349
|
+
},
|
|
4350
|
+
children: "This PDF/receipt is generated from your order confirmation and is intended for recordkeeping and reimbursement purposes."
|
|
4351
|
+
})]
|
|
4352
|
+
})]
|
|
4353
|
+
})
|
|
4354
|
+
});
|
|
4355
|
+
};
|
|
4356
|
+
|
|
4357
|
+
/**
|
|
4358
|
+
* Generate and download a receipt PDF
|
|
4359
|
+
* @param {Object} params
|
|
4360
|
+
* @param {Object} params.order - Order data
|
|
4361
|
+
* @param {Object} params.summit - Summit data
|
|
4362
|
+
* @param {Object} [params.receiptSettings] - Receipt branding settings (optional, has defaults)
|
|
4363
|
+
*/
|
|
4364
|
+
const generateReceiptPDF = async _ref2 => {
|
|
4365
|
+
var _tickets$;
|
|
4366
|
+
let {
|
|
4367
|
+
order,
|
|
4368
|
+
summit,
|
|
4369
|
+
receiptSettings = {}
|
|
4370
|
+
} = _ref2;
|
|
4371
|
+
// Merge with defaults
|
|
4372
|
+
const settings = _objectSpread(_objectSpread({}, DEFAULT_RECEIPT_SETTINGS), receiptSettings);
|
|
4373
|
+
|
|
4374
|
+
// Register custom font if provided, otherwise use built-in fallback
|
|
4375
|
+
if (settings.fontFamily && settings.fontFile) {
|
|
4376
|
+
const fontRegistered = registerFont(settings.fontFamily, settings.fontFile);
|
|
4377
|
+
if (!fontRegistered) {
|
|
4378
|
+
// Fall back to built-in font if registration fails
|
|
4379
|
+
settings.fontFamily = FALLBACK_FONT;
|
|
4380
|
+
}
|
|
4381
|
+
} else {
|
|
4382
|
+
// No custom font provided - use built-in fallback
|
|
4383
|
+
settings.fontFamily = FALLBACK_FONT;
|
|
4384
|
+
}
|
|
4385
|
+
const logoUrl = await validateImageUrl(settings.printLogo || summit.logo);
|
|
4386
|
+
|
|
4387
|
+
// Prepare order data
|
|
4388
|
+
const tickets = order.tickets || order.memberTickets || [];
|
|
4389
|
+
const orderData = {
|
|
4390
|
+
number: order.number,
|
|
4391
|
+
amount: order.amount,
|
|
4392
|
+
raw_amount: order.raw_amount,
|
|
4393
|
+
discount: order.discount_amount,
|
|
4394
|
+
currency: order.currency,
|
|
4395
|
+
currency_symbol: order.currency_symbol || ((_tickets$ = tickets[0]) === null || _tickets$ === void 0 ? void 0 : _tickets$.currency_symbol) || "$",
|
|
4396
|
+
purchased_date: formatDate(order.created),
|
|
4397
|
+
confirmation_date: order.created ? new Date(order.created * MS_PER_SECOND).toLocaleDateString("en-US", {
|
|
4398
|
+
year: "numeric",
|
|
4399
|
+
month: "long",
|
|
4400
|
+
day: "2-digit",
|
|
4401
|
+
hour: "2-digit",
|
|
4402
|
+
minute: "2-digit",
|
|
4403
|
+
hour12: false,
|
|
4404
|
+
timeZoneName: "short"
|
|
4405
|
+
}) : "",
|
|
4406
|
+
issue_date: new Date().toLocaleDateString("en-US", {
|
|
4407
|
+
year: "numeric",
|
|
4408
|
+
month: "long",
|
|
4409
|
+
day: "2-digit"
|
|
4410
|
+
}),
|
|
4411
|
+
owner_full_name: "".concat(order.owner_first_name, " ").concat(order.owner_last_name),
|
|
4412
|
+
owner_company: order.owner_company,
|
|
4413
|
+
owner_email: order.owner_email,
|
|
4414
|
+
payment_method: order.payment_method,
|
|
4415
|
+
payment_info_type: order.payment_info_type,
|
|
4416
|
+
payment_method_readable: getPaymentMethodLabel(order),
|
|
4417
|
+
credit_card_type: capitalize(order.credit_card_type),
|
|
4418
|
+
credit_card_4number: order.credit_card_4number,
|
|
4419
|
+
refunded_amount: order.refunded_amount,
|
|
4420
|
+
applied_taxes: order.applied_taxes || [],
|
|
4421
|
+
tickets: tickets.map(t => {
|
|
4422
|
+
var _t$promo_code;
|
|
4423
|
+
return {
|
|
4424
|
+
number: t.number,
|
|
4425
|
+
ticket_type_name: t.ticket_type.name,
|
|
4426
|
+
owner_email: t.owner.email,
|
|
4427
|
+
final_amount: t.raw_cost,
|
|
4428
|
+
promo_code: (_t$promo_code = t.promo_code) === null || _t$promo_code === void 0 ? void 0 : _t$promo_code.code
|
|
4429
|
+
};
|
|
4430
|
+
})
|
|
4431
|
+
};
|
|
4432
|
+
const summitData = {
|
|
4433
|
+
name: summit.name,
|
|
4434
|
+
tagline: summit.tagline || "",
|
|
4435
|
+
dates_label: summit.dates_label || "",
|
|
4436
|
+
location: summit.location || "",
|
|
4437
|
+
website: summit.link || summit.website || ""
|
|
4438
|
+
};
|
|
4439
|
+
|
|
4440
|
+
// Generate PDF
|
|
4441
|
+
const doc = /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(ReceiptPDF, {
|
|
4442
|
+
order: orderData,
|
|
4443
|
+
summit: summitData,
|
|
4444
|
+
settings: settings,
|
|
4445
|
+
logoUrl: logoUrl
|
|
4446
|
+
});
|
|
4447
|
+
const blob = await (0,_react_pdf_renderer__WEBPACK_IMPORTED_MODULE_2__.pdf)(doc).toBlob();
|
|
4448
|
+
|
|
4449
|
+
// Download
|
|
4450
|
+
const url = URL.createObjectURL(blob);
|
|
4451
|
+
const link = document.createElement("a");
|
|
4452
|
+
link.href = url;
|
|
4453
|
+
link.download = "receipt-".concat(order.number, ".pdf").toLowerCase().replace(/\s+/g, "-");
|
|
4454
|
+
document.body.appendChild(link);
|
|
4455
|
+
link.click();
|
|
4456
|
+
document.body.removeChild(link);
|
|
4457
|
+
URL.revokeObjectURL(url);
|
|
4458
|
+
};
|
|
4459
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (generateReceiptPDF);
|
|
4460
|
+
|
|
4461
|
+
/***/ }),
|
|
4462
|
+
|
|
4463
|
+
/***/ "./src/components/OrderReceipt/index.js":
|
|
4464
|
+
/*!**********************************************!*\
|
|
4465
|
+
!*** ./src/components/OrderReceipt/index.js ***!
|
|
4466
|
+
\**********************************************/
|
|
4467
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
4468
|
+
|
|
4469
|
+
__webpack_require__.r(__webpack_exports__);
|
|
4470
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
4471
|
+
/* harmony export */ generateReceiptPDF: () => (/* reexport safe */ _generateReceiptPDF__WEBPACK_IMPORTED_MODULE_0__.generateReceiptPDF)
|
|
4472
|
+
/* harmony export */ });
|
|
4473
|
+
/* harmony import */ var _generateReceiptPDF__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./generateReceiptPDF */ "./src/components/OrderReceipt/generateReceiptPDF.js");
|
|
4474
|
+
/**
|
|
4475
|
+
* Copyright 2026 OpenStack Foundation
|
|
4476
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
4477
|
+
* you may not use this file except in compliance with the License.
|
|
4478
|
+
* You may obtain a copy of the License at
|
|
4479
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
4480
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
4481
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
4482
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
4483
|
+
* See the License for the specific language governing permissions and
|
|
4484
|
+
* limitations under the License.
|
|
4485
|
+
* */
|
|
4486
|
+
|
|
4487
|
+
|
|
4488
|
+
|
|
4489
|
+
/***/ }),
|
|
4490
|
+
|
|
4491
|
+
/***/ "./src/components/OrderSummary/OrderActions.js":
|
|
4492
|
+
/*!*****************************************************!*\
|
|
4493
|
+
!*** ./src/components/OrderSummary/OrderActions.js ***!
|
|
4494
|
+
\*****************************************************/
|
|
4495
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
4496
|
+
|
|
4497
|
+
__webpack_require__.r(__webpack_exports__);
|
|
4498
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
4499
|
+
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
4500
|
+
/* harmony export */ });
|
|
4501
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
|
|
4502
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
|
|
4503
|
+
/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ "prop-types");
|
|
4504
|
+
/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__);
|
|
4505
|
+
/* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react-i18next */ "react-i18next");
|
|
4506
|
+
/* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react_i18next__WEBPACK_IMPORTED_MODULE_2__);
|
|
4507
|
+
/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @mui/material */ "@mui/material");
|
|
4508
|
+
/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_mui_material__WEBPACK_IMPORTED_MODULE_3__);
|
|
4509
|
+
/* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react-redux */ "react-redux");
|
|
4510
|
+
/* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(react_redux__WEBPACK_IMPORTED_MODULE_4__);
|
|
4511
|
+
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../utils */ "./src/utils/index.js");
|
|
4512
|
+
/* harmony import */ var _utils_ticketUtils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../utils/ticketUtils */ "./src/utils/ticketUtils.js");
|
|
4513
|
+
/* harmony import */ var _styles_module_scss__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./styles.module.scss */ "./src/components/OrderSummary/styles.module.scss");
|
|
4514
|
+
/* harmony import */ var _utils_summitUtils__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../utils/summitUtils */ "./src/utils/summitUtils.js");
|
|
4515
|
+
/* harmony import */ var _actions__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../actions */ "./src/actions.js");
|
|
4516
|
+
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");
|
|
4517
|
+
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__);
|
|
4518
|
+
|
|
4519
|
+
|
|
4520
|
+
|
|
4521
|
+
|
|
4522
|
+
|
|
4523
|
+
|
|
4524
|
+
|
|
4525
|
+
|
|
4526
|
+
|
|
4527
|
+
|
|
4528
|
+
|
|
4529
|
+
const OrderActions = _ref => {
|
|
4530
|
+
let {
|
|
4531
|
+
summit,
|
|
4532
|
+
order,
|
|
4533
|
+
tickets,
|
|
4534
|
+
submitRequest,
|
|
4535
|
+
onRefundClick,
|
|
4536
|
+
onRefundDetailClick
|
|
4537
|
+
} = _ref;
|
|
4538
|
+
const {
|
|
4539
|
+
t
|
|
4540
|
+
} = (0,react_i18next__WEBPACK_IMPORTED_MODULE_2__.useTranslation)();
|
|
4541
|
+
const {
|
|
4542
|
+
isStarted
|
|
4543
|
+
} = (0,_utils_summitUtils__WEBPACK_IMPORTED_MODULE_8__.useSummitDetails)({
|
|
4544
|
+
summit
|
|
4545
|
+
});
|
|
4546
|
+
const now = (0,_utils__WEBPACK_IMPORTED_MODULE_5__.useNow)();
|
|
4547
|
+
const dispatch = (0,react_redux__WEBPACK_IMPORTED_MODULE_4__.useDispatch)();
|
|
4548
|
+
const [isDownloading, setIsDownloading] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);
|
|
4549
|
+
const isInRefundablePeriod = summit.registration_allowed_refund_request_till_date > now;
|
|
4550
|
+
const atLeastOneRefundableTicket = (0,_utils_ticketUtils__WEBPACK_IMPORTED_MODULE_6__.ticketsRefundable)(tickets);
|
|
4551
|
+
const isRefundable = !!(isInRefundablePeriod && !isStarted && atLeastOneRefundableTicket);
|
|
4552
|
+
const hasRefundRequests = tickets === null || tickets === void 0 ? void 0 : tickets.some(t => {
|
|
4553
|
+
var _t$refund_requests;
|
|
4554
|
+
return ((_t$refund_requests = t.refund_requests) === null || _t$refund_requests === void 0 ? void 0 : _t$refund_requests.length) > 0;
|
|
4555
|
+
});
|
|
4556
|
+
const canDownloadReceipt = (order === null || order === void 0 ? void 0 : order.status) === "Paid";
|
|
4557
|
+
const handleDownloadReceipt = async () => {
|
|
4558
|
+
if (isDownloading || !order) return;
|
|
4559
|
+
setIsDownloading(true);
|
|
4560
|
+
try {
|
|
4561
|
+
await dispatch((0,_actions__WEBPACK_IMPORTED_MODULE_9__.downloadOrderReceipt)({
|
|
4562
|
+
order,
|
|
4563
|
+
summit
|
|
4564
|
+
}));
|
|
4565
|
+
} catch (error) {
|
|
4566
|
+
console.error("Error downloading receipt:", error);
|
|
4567
|
+
} finally {
|
|
4568
|
+
setIsDownloading(false);
|
|
4569
|
+
}
|
|
4570
|
+
};
|
|
4571
|
+
return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.Fragment, {
|
|
4572
|
+
children: [canDownloadReceipt && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Button, {
|
|
4573
|
+
"aria-label": "download receipt button",
|
|
4574
|
+
role: "button",
|
|
4575
|
+
className: "".concat(_styles_module_scss__WEBPACK_IMPORTED_MODULE_7__.orderSummaryButton, " ").concat(isDownloading ? _styles_module_scss__WEBPACK_IMPORTED_MODULE_7__.refundDisabled : ""),
|
|
4576
|
+
variant: "outlined",
|
|
4577
|
+
size: "large",
|
|
4578
|
+
onClick: handleDownloadReceipt,
|
|
4579
|
+
disabled: isDownloading,
|
|
4580
|
+
children: isDownloading ? t("order_summary.generating_receipt") : t("order_summary.download_receipt")
|
|
4581
|
+
}), isRefundable && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Button, {
|
|
4582
|
+
"aria-label": "refund request button",
|
|
4583
|
+
role: "button",
|
|
4584
|
+
className: "".concat(_styles_module_scss__WEBPACK_IMPORTED_MODULE_7__.orderSummaryButton, "\n ").concat(submitRequest ? _styles_module_scss__WEBPACK_IMPORTED_MODULE_7__.refundDisabled : ""),
|
|
4585
|
+
variant: "outlined",
|
|
4586
|
+
size: "large",
|
|
4587
|
+
onClick: onRefundClick,
|
|
4588
|
+
disabled: submitRequest,
|
|
4589
|
+
children: t("order_summary.request_refund")
|
|
4590
|
+
}), hasRefundRequests && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Button, {
|
|
4591
|
+
"aria-label": "refund details button",
|
|
4592
|
+
role: "button",
|
|
4593
|
+
className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_7__.orderSummaryButton,
|
|
4594
|
+
variant: "outlined",
|
|
4595
|
+
size: "large",
|
|
4596
|
+
onClick: onRefundDetailClick,
|
|
4597
|
+
children: t("order_summary.refund_details")
|
|
4598
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Button, {
|
|
4599
|
+
"aria-label": "email support button",
|
|
4600
|
+
role: "button",
|
|
4601
|
+
className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_7__.orderSummaryButton,
|
|
4602
|
+
variant: "outlined",
|
|
4603
|
+
size: "large",
|
|
4604
|
+
target: "_top",
|
|
4605
|
+
rel: "noopener noreferrer",
|
|
4606
|
+
href: "mailto:".concat(summit.support_email),
|
|
4607
|
+
children: t("order_info.email_support")
|
|
4608
|
+
})]
|
|
4609
|
+
});
|
|
4610
|
+
};
|
|
4611
|
+
OrderActions.propTypes = {
|
|
4612
|
+
summit: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().object),
|
|
4613
|
+
order: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().object),
|
|
4614
|
+
tickets: prop_types__WEBPACK_IMPORTED_MODULE_1___default().arrayOf(Object),
|
|
4615
|
+
onRefundClick: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().func),
|
|
4616
|
+
onRefundDetailClick: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().func),
|
|
4617
|
+
submitRequest: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().bool)
|
|
4618
|
+
};
|
|
4619
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (OrderActions);
|
|
4620
|
+
|
|
4621
|
+
/***/ }),
|
|
4622
|
+
|
|
3594
4623
|
/***/ "./src/components/OrderSummary/OrderSummaryTable.js":
|
|
3595
4624
|
/*!**********************************************************!*\
|
|
3596
4625
|
!*** ./src/components/OrderSummary/OrderSummaryTable.js ***!
|
|
@@ -3763,102 +4792,6 @@ OrderSummaryTable.propTypes = {
|
|
|
3763
4792
|
|
|
3764
4793
|
/***/ }),
|
|
3765
4794
|
|
|
3766
|
-
/***/ "./src/components/OrderSummary/RefundEmailSupport.js":
|
|
3767
|
-
/*!***********************************************************!*\
|
|
3768
|
-
!*** ./src/components/OrderSummary/RefundEmailSupport.js ***!
|
|
3769
|
-
\***********************************************************/
|
|
3770
|
-
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
3771
|
-
|
|
3772
|
-
__webpack_require__.r(__webpack_exports__);
|
|
3773
|
-
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
3774
|
-
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
3775
|
-
/* harmony export */ });
|
|
3776
|
-
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
|
|
3777
|
-
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
|
|
3778
|
-
/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ "prop-types");
|
|
3779
|
-
/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__);
|
|
3780
|
-
/* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react-i18next */ "react-i18next");
|
|
3781
|
-
/* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react_i18next__WEBPACK_IMPORTED_MODULE_2__);
|
|
3782
|
-
/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @mui/material */ "@mui/material");
|
|
3783
|
-
/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_mui_material__WEBPACK_IMPORTED_MODULE_3__);
|
|
3784
|
-
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../utils */ "./src/utils/index.js");
|
|
3785
|
-
/* harmony import */ var _utils_ticketUtils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../utils/ticketUtils */ "./src/utils/ticketUtils.js");
|
|
3786
|
-
/* harmony import */ var _styles_module_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./styles.module.scss */ "./src/components/OrderSummary/styles.module.scss");
|
|
3787
|
-
/* harmony import */ var _utils_summitUtils__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../utils/summitUtils */ "./src/utils/summitUtils.js");
|
|
3788
|
-
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");
|
|
3789
|
-
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__);
|
|
3790
|
-
|
|
3791
|
-
|
|
3792
|
-
|
|
3793
|
-
|
|
3794
|
-
|
|
3795
|
-
|
|
3796
|
-
|
|
3797
|
-
|
|
3798
|
-
|
|
3799
|
-
const RefundEmailSupport = _ref => {
|
|
3800
|
-
let {
|
|
3801
|
-
summit,
|
|
3802
|
-
tickets,
|
|
3803
|
-
submitRequest,
|
|
3804
|
-
onRefundClick,
|
|
3805
|
-
onRefundDetailClick
|
|
3806
|
-
} = _ref;
|
|
3807
|
-
const {
|
|
3808
|
-
t
|
|
3809
|
-
} = (0,react_i18next__WEBPACK_IMPORTED_MODULE_2__.useTranslation)();
|
|
3810
|
-
const {
|
|
3811
|
-
isStarted
|
|
3812
|
-
} = (0,_utils_summitUtils__WEBPACK_IMPORTED_MODULE_7__.useSummitDetails)({
|
|
3813
|
-
summit
|
|
3814
|
-
});
|
|
3815
|
-
const now = (0,_utils__WEBPACK_IMPORTED_MODULE_4__.useNow)();
|
|
3816
|
-
const isInRefundablePeriod = summit.registration_allowed_refund_request_till_date > now;
|
|
3817
|
-
const atLeastOneRefundableTicket = (0,_utils_ticketUtils__WEBPACK_IMPORTED_MODULE_5__.ticketsRefundable)(tickets);
|
|
3818
|
-
const isRefundable = !!(isInRefundablePeriod && !isStarted && atLeastOneRefundableTicket);
|
|
3819
|
-
const hasRefundRequests = tickets === null || tickets === void 0 ? void 0 : tickets.some(t => t.refund_requests.length > 0);
|
|
3820
|
-
return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.Fragment, {
|
|
3821
|
-
children: [isRefundable && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Button, {
|
|
3822
|
-
"aria-label": "refund request button",
|
|
3823
|
-
role: "button",
|
|
3824
|
-
className: "".concat(_styles_module_scss__WEBPACK_IMPORTED_MODULE_6__.orderSummaryButton, "\n ").concat(submitRequest ? _styles_module_scss__WEBPACK_IMPORTED_MODULE_6__.refundDisabled : ""),
|
|
3825
|
-
variant: "outlined",
|
|
3826
|
-
size: "large",
|
|
3827
|
-
onClick: onRefundClick,
|
|
3828
|
-
disabled: submitRequest,
|
|
3829
|
-
children: t("order_summary.request_refund")
|
|
3830
|
-
}), hasRefundRequests && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Button, {
|
|
3831
|
-
"aria-label": "refund details button",
|
|
3832
|
-
role: "button",
|
|
3833
|
-
className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_6__.orderSummaryButton,
|
|
3834
|
-
variant: "outlined",
|
|
3835
|
-
size: "large",
|
|
3836
|
-
onClick: onRefundDetailClick,
|
|
3837
|
-
children: t("order_summary.refund_details")
|
|
3838
|
-
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Button, {
|
|
3839
|
-
"aria-label": "email support button",
|
|
3840
|
-
role: "button",
|
|
3841
|
-
className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_6__.orderSummaryButton,
|
|
3842
|
-
variant: "outlined",
|
|
3843
|
-
size: "large",
|
|
3844
|
-
target: "_top",
|
|
3845
|
-
rel: "noopener noreferrer",
|
|
3846
|
-
href: "mailto:".concat(summit.support_email),
|
|
3847
|
-
children: t("order_info.email_support")
|
|
3848
|
-
})]
|
|
3849
|
-
});
|
|
3850
|
-
};
|
|
3851
|
-
RefundEmailSupport.propTypes = {
|
|
3852
|
-
summit: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().object),
|
|
3853
|
-
tickets: prop_types__WEBPACK_IMPORTED_MODULE_1___default().arrayOf(Object),
|
|
3854
|
-
onRefundClick: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().func),
|
|
3855
|
-
onRefundDetailClick: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().func),
|
|
3856
|
-
submitRequest: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().bool)
|
|
3857
|
-
};
|
|
3858
|
-
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (RefundEmailSupport);
|
|
3859
|
-
|
|
3860
|
-
/***/ }),
|
|
3861
|
-
|
|
3862
4795
|
/***/ "./src/components/OrderSummary/index.js":
|
|
3863
4796
|
/*!**********************************************!*\
|
|
3864
4797
|
!*** ./src/components/OrderSummary/index.js ***!
|
|
@@ -3878,7 +4811,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
3878
4811
|
/* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react-i18next */ "react-i18next");
|
|
3879
4812
|
/* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(react_i18next__WEBPACK_IMPORTED_MODULE_3__);
|
|
3880
4813
|
/* harmony import */ var _OrderSummaryTable__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./OrderSummaryTable */ "./src/components/OrderSummary/OrderSummaryTable.js");
|
|
3881
|
-
/* harmony import */ var
|
|
4814
|
+
/* harmony import */ var _OrderActions__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./OrderActions */ "./src/components/OrderSummary/OrderActions.js");
|
|
3882
4815
|
/* harmony import */ var _styles_module_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./styles.module.scss */ "./src/components/OrderSummary/styles.module.scss");
|
|
3883
4816
|
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");
|
|
3884
4817
|
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__);
|
|
@@ -3931,8 +4864,9 @@ const OrderSummary = _ref => {
|
|
|
3931
4864
|
sx: {
|
|
3932
4865
|
pb: 3
|
|
3933
4866
|
},
|
|
3934
|
-
children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(
|
|
4867
|
+
children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_OrderActions__WEBPACK_IMPORTED_MODULE_5__["default"], {
|
|
3935
4868
|
summit: summit,
|
|
4869
|
+
order: order,
|
|
3936
4870
|
tickets: order === null || order === void 0 ? void 0 : order.memberTickets,
|
|
3937
4871
|
submitRequest: submitRequest,
|
|
3938
4872
|
onRefundClick: onRefundClick,
|
|
@@ -8195,6 +9129,7 @@ const getStore = _ref => {
|
|
|
8195
9129
|
loginUrl,
|
|
8196
9130
|
summit,
|
|
8197
9131
|
apiBaseUrl,
|
|
9132
|
+
receiptSettings,
|
|
8198
9133
|
updateProfile
|
|
8199
9134
|
} = _ref;
|
|
8200
9135
|
// to add other reducers later
|
|
@@ -8211,6 +9146,7 @@ const getStore = _ref => {
|
|
|
8211
9146
|
extraArgument: {
|
|
8212
9147
|
clientId,
|
|
8213
9148
|
apiBaseUrl,
|
|
9149
|
+
receiptSettings,
|
|
8214
9150
|
summit,
|
|
8215
9151
|
loginUrl,
|
|
8216
9152
|
updateProfile
|
|
@@ -9775,6 +10711,16 @@ module.exports = require("@mui/material/useMediaQuery");
|
|
|
9775
10711
|
|
|
9776
10712
|
/***/ }),
|
|
9777
10713
|
|
|
10714
|
+
/***/ "@react-pdf/renderer":
|
|
10715
|
+
/*!**************************************!*\
|
|
10716
|
+
!*** external "@react-pdf/renderer" ***!
|
|
10717
|
+
\**************************************/
|
|
10718
|
+
/***/ ((module) => {
|
|
10719
|
+
|
|
10720
|
+
module.exports = require("@react-pdf/renderer");
|
|
10721
|
+
|
|
10722
|
+
/***/ }),
|
|
10723
|
+
|
|
9778
10724
|
/***/ "@reduxjs/toolkit":
|
|
9779
10725
|
/*!***********************************!*\
|
|
9780
10726
|
!*** external "@reduxjs/toolkit" ***!
|
|
@@ -10041,7 +10987,7 @@ module.exports = require("yup");
|
|
|
10041
10987
|
\**********************************/
|
|
10042
10988
|
/***/ ((module) => {
|
|
10043
10989
|
|
|
10044
|
-
module.exports = /*#__PURE__*/JSON.parse('{"landing":{"sign_out":"Sign out","sign_in":"FNid Sign In","not_logged_in":"You are not logged in. Please log in to continue:"},"errors":{"error":"Error","user_not_authz":"Hold on. Your user is not authorized!.","user_not_set":"Hold on. Can not get any valid user.","session_expired":"Hold on. Your session expired!","server_error":"There was a problem with our server, please contact admin.","not_allowed":"You are not allowed here, please login with another user to access this page.","refund_unsuccessful":"Some of the refund requests were unsucessful. Please try again."},"general":{"continue":"Continue","save_and_continue":"Save and Continue","back":"Back","pay_now":"Pay Now","confirm":"Confirm","yes":"Yes","no":"No","cancel":"Cancel","finish":"Finish","copy_to_clipboard":"Copy to clipboard","copied":"Copied!","view_more":"View more","view_less":"View less","contact_support":"contact support"},"labels":{"tickets":"Tickets","summary":"Summary","assigned_to_me":"Assigned Tickets","search_results":"Search results for {{filter}}"},"order_summary":{"order_summary":"Order Summary","order_no":"Order number","discounts":"Promo Code Discount","refunds":"Refund","request_refund":"Request a Refund","refund_details":"Your Refund Details","taxes":"Taxes","sub_total":"Subtotal","total":"Total Paid","amount_paid":"Amount Paid","copy_order_number":"Copy Order Number"},"event_info":{"about_title":"About the event","about_desc":"a description","directions":"Get Directions","calendar":"Add to Calendar"},"step_one":{"choose_tickets":"Choose your ticket(s)","choose_tickets_desc":"a description","expiration":"Ticket(s) available until ","free":"Free","sold_out":"Sold Out","no_tickets":"No tickets for sale!","getfnid":"Create an FNid","signin":"Sign In"},"step_two":{"basic_info":"Purchaser Information","required":"Required fields","have_account":"Do you have an FNid account?","sign_in":"Sign in","sign_in_account":"to autopopulate this info and manage this order.","first_name":"First Name","last_name":"Last Name","email":"Email","company":"Company","tickets":"Tickets","ticket":"Ticket","asterisks_bold":"NOTE: Ticket(s) can be assigned later.","asterisks":"Ticket holders will immediately receive an email to finalize their attendee information.","code":"Promo Code:","assign":"Assign to:","add_ticket":"Add additional ticket(s) to this order","no_tickets":"No tickets selected.","disclaimer_in_person_title":"Attention","placeholders":{"coupon":"Coupon (Optional)","email":"Attendee Email (Optional)"},"validator":{"first_name":"Please enter your First Name.","last_name":"Please enter your Last Name.","company":"Please enter your Company.","email":"Please enter a valid Email."}},"step_three":{"payment_info":"Payment Information","required":"Required fields","payment_subtitle":"a subtitle...","cardholder_name":"Cardholder Name","card_number":"Card Number","expiration":"Expiration & Code","billing_info":"Billing Information","billing_subtitle":"a subtitle...","billing_country":"Country","billing_address":"Address","billing_address_two":"Address 2","billing_city":"City","billing_state":"State","billing_zipcode":"ZIP Code","stripe_errors":{"cardNumber":"Please enter a valid Credit Card.","cardExpiry":"Please enter the card expiration.","cardCvc":"Please enter the card cvc."},"validator":{"billing_country":"Please enter the billing Country.","billing_address":"Please enter the billing Address.","billing_city":"Please enter the billing City.","billing_state":"Please enter the billing State.","billing_zipcode":"Please enter the billing ZipCode."}},"step_four":{"thank_you":"Thank you for your order!","subtitle":"Your Order is Now Complete","member_exclamation":"You are signed in with your FNid and will use it to log in to the event on show days. ","member_text":"You may proceed directly to the \\"","member_link_tickets":"My Tickets","member_text_1":"\\" page to review your ticket(s) and complete any required details. Visit the \\"","member_link_orders":"My Orders","member_text_2":"\\" page to manage your purchase, assign ticket(s), and edit attendee details.","required_text":"PLEASE NOTE! Ticket(s) must be assigned and all additional details must be completed before official ticket(s) are issued.","register_text":"An FNid is required to manage order(s) and assign ticket(s) ","register_link_text":"create one","register_text_2":" with the email ","register_text_3":" used for this purchase, you will then be able to manage your order.","register_email_bold":"You will now receive an email with a one-click link to create a password for your FNid.","register_email_1":"Your FNid will allow you to access the event. Visit the \\"","register_email_orders":"My Orders","register_email_2":"\\" page to manage your purchase, assign ticket(s), and edit attendee details.","help_text":"For further assistance, please email ","order_no":"ORDER NUMBER","manage":"My Orders","getfnid":"Create an FNid","signin":"Sign In"},"guests":{"invalid_thanks":"Thanks for coming to fill in the remaining details so we can issue your ticket.","invalid_text_1":"Unfortunately the link in your email has expired. Not to worry we will send you a fresh link. Click here or the button below to get a new link.","invalid_button":"Send New Link","invalid_contact":"If you have any problems please email","hash_regenerated":"Please check your new link in your email","completed_text_1":"Thank you for completing your additional details. Your ticket has now been issued. Please use your FNid to access the event.","completed_button":"Download Ticket to","completed_text_2":"You will also receive an email confirmation.","cancel":"Cancel","save":"Save"},"orders":{"title":"My Orders with Tickets","purchased":"Purchased on","empty":"There are no active orders so far","loading":"Loading orders..."},"no-summit":{"not-found":"","select-list":"Please select from available shows:"},"order_info":{"print":"Print","resend":"Resend Receipt","download":"Download Ticket PDF","cancel_order":"Request to Refund All Tickets","cancel_ticket":"Cancel Ticket","email_support":"Email Support","directions":"Get Directions","calendar":"Add to Calendar"},"order_status":{"complete":"Ticket(s) assigned and issued","incomplete":"Additional attendee details required before ticket(s) can be issued","pending":"Pending confirmation","cancelled":"Cancelled","error":"Payment error","processing":"Payment processing","past":"Past"},"tickets":{"title":"External Tickets Assigned to Me","empty":"There are no tickets so far","loading":"Loading tickets...","save_message":"Thank you! Your information has been saved and ticket updated.","assign_success_message":"The ticket was successfully assigned.","reassign_success_message":"The ticket was successfully reassigned.","unassign_success_message":"The ticket was successfully unassigned.","notify_success_message":"Notification was sent to ticket holder.","refund_request_success_1":"Your refund request has been requested successfully","refund_request_success_2":"Please allow 24 - 48 hours for a response"},"ticket_status":{"unassigned":"Unassigned","incomplete":"Required details needed","complete":"Ready to use","cancelled":"Cancelled","past":"Past","ticket_no":"Ticket #","assigned_to":"Assigned to","assigned_by":"Assigned by","manage_for":"Manage for","attendee_status_unassigned":"Attendee unassigned","view_tickets":"View Tickets","hide_tickets":"Hide Tickets","view_ticket":"View Ticket","reassign_ticket":"Reassign","assign_ticket":"Assign Ticket","status_unassigned":"Unassigned","status_complete":"Completed","status_incomplete":"Incomplete","status_refund_requested":"Refund Requested","status_details_required":"Some tickets in this order require additional details before the ticket(s) can be issued.","status_cancelled":"Cancelled","finish_ticket":"Finish Ticket","select_ticket_refund":"Select the ticket(s) for a refund:","select_all":"Select All","select_cancel":"Cancel","copy_ticket_number":"Copy Ticket Number","refund_request_approved":"Approved","refund_request_rejected":"Rejected","refund_request_pending":"Requested"},"nav_bar":{"my-orders":"My Orders","my-tickets":"My Tickets"},"ticket_popup":{"tab_assign":"Assign","tab_reassign":"Reassign","tab_refund":"Refund","tab_edit":"Edit Details","tab_edit_read_only":"Details","tab_notify":"Notify Ticket Holder","assign_text":"Select the option to assign this ticket","assign_or":"Or","assign_me":"Assign to Me","assign_this":"Assign this Ticket","assign_want_text":"I want to assign this ticket to someone else!","assign_someone":"Assign to this person","assign_ticket":"Assign this Ticket","assign_expire":"Ability to assign ticket expires in ","assign_days":"days","reassign_printed_ticket":"Ticket may not be reassigned because this badge has already been printed.","reassign_text":"Select the option to reassign this ticket from","reassign_want_text":"I want to reassign this ticket to someone else!","reassign_before":"before","reassign_enter_email":"Enter the email of the person you would like to assign the ticket to below. Please note! An email will be sent to the below address with instructions on how to complete any additional information required to issue their ticket.","reassign_check":"Clean all fields","reassign_me":"Reassign to Me","reassign_someone":"Reassign to this person","edit_basic_info":"Attendee Information","edit_required":"Required","edit_email":"Ticket assigned to email:","assign_note":"Note: Should the ticket holder wish to change their name or company info, they can do so by logging into the event site and clicking on the profile icon (located on the far right of the top navigation bar).","edit_first_name":"First Name","edit_first_name_placeholder":"Attendee First Name","edit_last_name":"Last Name","edit_last_name_placeholder":"Attendee Last Name","edit_company":"Company","edit_company_placeholder":"Attendee Company","edit_required_star":"*","edit_preferences":"Additional Details","notify_text_1":"All required details must be completed before","notify_text_2":"Clicking the \\"Resend Notification\\" button will generate an email to","notify_text_3":"with instructions on how to provide their required attendee information. Once the details are complete, their official ticket will be issued and sent to","notify_message":"Personal Message","notify_message_condition":"(Optional)","notify_button":"Resend Notification","cancel_ticket":"Request a refund for this ticket","save_changes":"Save Changes","saving_changes":"Saving Changes","do_it_later":"Do this later","do_it_later_exp":"You may fill in the required information now or complete this step on the \'My Orders\' page later."},"confirm_popup":{"question_title_cancel":"Refund Ticket","question_text_select_refund":"Select the ticket you want a refund","question_text_confirm_refund":"Are you sure you want to request a refund for the below ticket(s)?","question_text_cancel":"Are you sure you want to request a refund of this ticket?","question_title_cancel_order":"Refund Order","question_text_cancel_order":"Are you sure you want to request a refund of this entire order ?","question_title_assign":"Assign Request","question_text_assign":"Are you sure you want to clean all the fields?","question_title_unassign":"Unassign Request","question_text_unassign":"Are you sure you want to unassign this ticket?","question_title_reassign":"Reassign Request","question_text_reassign":"Are you sure you want to reassign this ticket?","question_title_save":"Save","question_text_save":"","question_title_notification":"Notification Request","question_text_notification":"","question_text_confirm":"Are you sure?","cancel":"Cancel","accept":"Yes","success_title":"Request Submitted","success_text":"An email notification has been sent to","success_button":"Got it"},"invitees":{"validation_error":"Invitation error","entity_not_found":"Invitation not found"},"signin":{"add_code_title_p1":"Add the","add_code_title_p2":"digit code below","email_reception_error_p1":"Didn\'t receive it? Check your spam folder or","email_reception_error_p2":"resend email","email_sent":"We\'ve sent a code to the email","go_back_title_p1":"or go back and","go_back_title_p2":"try another way","invalid_email_addr":"Please enter a valid email adress","login_with_title":"Log in with one of the following","retry":"Please try again.","send_code_option":"or get a login code emailed to you","verify_btn":"Verify","wrong_code":"The code you entered is incorrect.","fn_login_btn":"Continue with FNid","fb_login_btn":"Continue with Facebook","ln_login_btn":"Sign in with LinkedIn","ap_login_btn":"Continue with Apple","ok_login_btn":"Continue with Okta"},"logout_popup":{"title":"Re-login required","message":"You are not logged in anymore. Please log in to continue.","close_btn":"Re-login"},"filter":{"filter":"Filter","purchased_on":"Purchased on","clear":"Clear","clear_filters":"Clear Filters"},"sort":{"sort":"Sort","new_first":"Newest first","old_first":"Oldest first"},"order_search":{"order_number":"Search order number"},"ticket_detail":{"purchased_by":"Purchased by","status":"ready to use","qr_note":"When you check in you will be able to scan the QR code directly from your device. Or you can:","download":"Download","send":"Send to email","sent":"Email sent!","attendee_information":"Attendee Information","email":"Email","manage_for":"Manage for: ","first_name":"First Name","last_name":"Last Name","attendee_first_name":"First Name","attendee_last_name":"Last Name","attendee_company":"Company","delegated_to":"Delegated to:","aditional_details":"Additional details","save":"save changes","cancel":"cancel","info_note":"Note: Should the ticket holder wish to change name or company info, they can do so by logging into the event site and clicking on the profile icon (located on the far right of the top navigation bar).","saving_error":"Error saving Ticket, please try again.","saving_success":"Complete Ticket saved successfully!"},"ticket_assign":{"header_assign":{"title":"Assign ticket","purchased_by":"Purchased by","assigned_to":"This ticket have been assigned to","delegated":"This ticket was assigned to you so you can manage it on behalf of","answer_your_eq":"You may enter the required information now to complete the ticket, or you may select \\"Complete Later\\".","answer_others_eq":"You may enter the required information for them to complete the ticket, or select \\"Complete Later\\" to let them do it.","complete_later":"Complete Later"},"header_reassign":{"title":"REASSIGN ticket","choose_option":"Below you can assign the ticket to yourself, assign it to someone else, or manage the ticket for someone else. We will notify the previous ticketholder via email that the ticket is no longer assigned to them.","choose_option_no_delegate":"Below you can assign the ticket to yourself or assign it to someone else. We will notify the previous ticketholder via email that the ticket is no longer assigned to them.","assigned_to":"This ticket is currently assigned to","reassigned_to":"You have assigned the ticket to","delegated":"You are now managing the ticket for","yourself":"yourself","answer_your_eq":"You may enter the required information now to complete the ticket, or you may select \\"Complete Later\\".","answer_others_eq":"You may enter the required information for them to complete the ticket, or select \\"Complete Later\\" to let them do it.","complete_later":"Complete Later"},"assign_to_me":"Assign to me","assign_to_other":"Assign to someone else","manage_ticket":"Manage ticket for someone else","revert_to_unassigned":"Revert to Unassigned","reassign_form":{"title":"I want to assign this ticket to someone else:","body":"Enter the email of the person you would like to assign the ticket to below. Please note! An email will be sent to the below address with instructions on how to complete any additional information required to issue their ticket.","new_attendee_email":"New attendee email","personal_message":"Personal Message (optional)","cancel":"cancel","save":"assign to this person"},"delegate_form":{"first_name":"First Name","last_name":"Last Name","email":"Email (optional)","title":"I want to manage this ticket for someone else:","body":"Enter the name of the person you would like to manage the ticket for below. Managing a ticket keeps it under your control. To give someone control you should assign it to the person instead.","save":"MANAGE FOR THIS PERSON","cancel":"cancel"},"extra_questions_form":{"cancel":"complete later","save":"save","disclaimer_label":"I agree with the above."},"saving_error":"Error saving Ticket, please try again.","saving_success":"Complete Ticket saved successfully!","confirm_unassign":{"title":"Unassign Ticket","body":"Are you sure you want to unassign this ticket?"}},"validation":{"required_question":"This question is required","required_field":"Required field","first_name":{"string":"Enter first name","required":"First name is required"},"last_name":{"string":"Enter last name","required":"Last name is required"},"email":{"string":"Enter email","format":"Must be a valid email address","required":"Email is required"},"text":{"string":"Enter text"},"checkbox":{"required":"Field must be checked"},"company":{"required":"Company is required"}},"no_results":{"assigned":{"title":"No tickets found assigned to you","body":"We did not find any tickets assigned to this account.\\n You may still have orders with tickets assigned to others.\\n If this seems incorrect please "},"filter":{"title":"No results found","body":"Try using fewer filters or clearing them to see more results."},"orders":{"title":"No orders found","body":"We did not find any orders associated with your account.\\nYou may still have tickets assigned to you.\\nIf this seems incorrect please "}}}');
|
|
10990
|
+
module.exports = /*#__PURE__*/JSON.parse('{"landing":{"sign_out":"Sign out","sign_in":"FNid Sign In","not_logged_in":"You are not logged in. Please log in to continue:"},"errors":{"error":"Error","user_not_authz":"Hold on. Your user is not authorized!.","user_not_set":"Hold on. Can not get any valid user.","session_expired":"Hold on. Your session expired!","server_error":"There was a problem with our server, please contact admin.","not_allowed":"You are not allowed here, please login with another user to access this page.","refund_unsuccessful":"Some of the refund requests were unsucessful. Please try again."},"general":{"continue":"Continue","save_and_continue":"Save and Continue","back":"Back","pay_now":"Pay Now","confirm":"Confirm","yes":"Yes","no":"No","cancel":"Cancel","finish":"Finish","copy_to_clipboard":"Copy to clipboard","copied":"Copied!","view_more":"View more","view_less":"View less","contact_support":"contact support"},"labels":{"tickets":"Tickets","summary":"Summary","assigned_to_me":"Assigned Tickets","search_results":"Search results for {{filter}}"},"order_summary":{"order_summary":"Order Summary","order_no":"Order number","discounts":"Promo Code Discount","refunds":"Refund","request_refund":"Request a Refund","refund_details":"Your Refund Details","download_receipt":"Download Receipt","generating_receipt":"Generating...","taxes":"Taxes","sub_total":"Subtotal","total":"Total","amount_paid":"Amount Paid","copy_order_number":"Copy Order Number"},"event_info":{"about_title":"About the event","about_desc":"a description","directions":"Get Directions","calendar":"Add to Calendar"},"step_one":{"choose_tickets":"Choose your ticket(s)","choose_tickets_desc":"a description","expiration":"Ticket(s) available until ","free":"Free","sold_out":"Sold Out","no_tickets":"No tickets for sale!","getfnid":"Create an FNid","signin":"Sign In"},"step_two":{"basic_info":"Purchaser Information","required":"Required fields","have_account":"Do you have an FNid account?","sign_in":"Sign in","sign_in_account":"to autopopulate this info and manage this order.","first_name":"First Name","last_name":"Last Name","email":"Email","company":"Company","tickets":"Tickets","ticket":"Ticket","asterisks_bold":"NOTE: Ticket(s) can be assigned later.","asterisks":"Ticket holders will immediately receive an email to finalize their attendee information.","code":"Promo Code:","assign":"Assign to:","add_ticket":"Add additional ticket(s) to this order","no_tickets":"No tickets selected.","disclaimer_in_person_title":"Attention","placeholders":{"coupon":"Coupon (Optional)","email":"Attendee Email (Optional)"},"validator":{"first_name":"Please enter your First Name.","last_name":"Please enter your Last Name.","company":"Please enter your Company.","email":"Please enter a valid Email."}},"step_three":{"payment_info":"Payment Information","required":"Required fields","payment_subtitle":"a subtitle...","cardholder_name":"Cardholder Name","card_number":"Card Number","expiration":"Expiration & Code","billing_info":"Billing Information","billing_subtitle":"a subtitle...","billing_country":"Country","billing_address":"Address","billing_address_two":"Address 2","billing_city":"City","billing_state":"State","billing_zipcode":"ZIP Code","stripe_errors":{"cardNumber":"Please enter a valid Credit Card.","cardExpiry":"Please enter the card expiration.","cardCvc":"Please enter the card cvc."},"validator":{"billing_country":"Please enter the billing Country.","billing_address":"Please enter the billing Address.","billing_city":"Please enter the billing City.","billing_state":"Please enter the billing State.","billing_zipcode":"Please enter the billing ZipCode."}},"step_four":{"thank_you":"Thank you for your order!","subtitle":"Your Order is Now Complete","member_exclamation":"You are signed in with your FNid and will use it to log in to the event on show days. ","member_text":"You may proceed directly to the \\"","member_link_tickets":"My Tickets","member_text_1":"\\" page to review your ticket(s) and complete any required details. Visit the \\"","member_link_orders":"My Orders","member_text_2":"\\" page to manage your purchase, assign ticket(s), and edit attendee details.","required_text":"PLEASE NOTE! Ticket(s) must be assigned and all additional details must be completed before official ticket(s) are issued.","register_text":"An FNid is required to manage order(s) and assign ticket(s) ","register_link_text":"create one","register_text_2":" with the email ","register_text_3":" used for this purchase, you will then be able to manage your order.","register_email_bold":"You will now receive an email with a one-click link to create a password for your FNid.","register_email_1":"Your FNid will allow you to access the event. Visit the \\"","register_email_orders":"My Orders","register_email_2":"\\" page to manage your purchase, assign ticket(s), and edit attendee details.","help_text":"For further assistance, please email ","order_no":"ORDER NUMBER","manage":"My Orders","getfnid":"Create an FNid","signin":"Sign In"},"guests":{"invalid_thanks":"Thanks for coming to fill in the remaining details so we can issue your ticket.","invalid_text_1":"Unfortunately the link in your email has expired. Not to worry we will send you a fresh link. Click here or the button below to get a new link.","invalid_button":"Send New Link","invalid_contact":"If you have any problems please email","hash_regenerated":"Please check your new link in your email","completed_text_1":"Thank you for completing your additional details. Your ticket has now been issued. Please use your FNid to access the event.","completed_button":"Download Ticket to","completed_text_2":"You will also receive an email confirmation.","cancel":"Cancel","save":"Save"},"orders":{"title":"My Orders with Tickets","purchased":"Purchased on","empty":"There are no active orders so far","loading":"Loading orders..."},"no-summit":{"not-found":"","select-list":"Please select from available shows:"},"order_info":{"print":"Print","resend":"Resend Receipt","download":"Download Ticket PDF","cancel_order":"Request to Refund All Tickets","cancel_ticket":"Cancel Ticket","email_support":"Email Support","directions":"Get Directions","calendar":"Add to Calendar"},"order_status":{"complete":"Ticket(s) assigned and issued","incomplete":"Additional attendee details required before ticket(s) can be issued","pending":"Pending confirmation","cancelled":"Cancelled","error":"Payment error","processing":"Payment processing","past":"Past"},"tickets":{"title":"External Tickets Assigned to Me","empty":"There are no tickets so far","loading":"Loading tickets...","save_message":"Thank you! Your information has been saved and ticket updated.","assign_success_message":"The ticket was successfully assigned.","reassign_success_message":"The ticket was successfully reassigned.","unassign_success_message":"The ticket was successfully unassigned.","notify_success_message":"Notification was sent to ticket holder.","refund_request_success_1":"Your refund request has been requested successfully","refund_request_success_2":"Please allow 24 - 48 hours for a response"},"ticket_status":{"unassigned":"Unassigned","incomplete":"Required details needed","complete":"Ready to use","cancelled":"Cancelled","past":"Past","ticket_no":"Ticket #","assigned_to":"Assigned to","assigned_by":"Assigned by","manage_for":"Manage for","attendee_status_unassigned":"Attendee unassigned","view_tickets":"View Tickets","hide_tickets":"Hide Tickets","view_ticket":"View Ticket","reassign_ticket":"Reassign","assign_ticket":"Assign Ticket","status_unassigned":"Unassigned","status_complete":"Completed","status_incomplete":"Incomplete","status_refund_requested":"Refund Requested","status_details_required":"Some tickets in this order require additional details before the ticket(s) can be issued.","status_cancelled":"Cancelled","finish_ticket":"Finish Ticket","select_ticket_refund":"Select the ticket(s) for a refund:","select_all":"Select All","select_cancel":"Cancel","copy_ticket_number":"Copy Ticket Number","refund_request_approved":"Approved","refund_request_rejected":"Rejected","refund_request_pending":"Requested"},"nav_bar":{"my-orders":"My Orders","my-tickets":"My Tickets"},"ticket_popup":{"tab_assign":"Assign","tab_reassign":"Reassign","tab_refund":"Refund","tab_edit":"Edit Details","tab_edit_read_only":"Details","tab_notify":"Notify Ticket Holder","assign_text":"Select the option to assign this ticket","assign_or":"Or","assign_me":"Assign to Me","assign_this":"Assign this Ticket","assign_want_text":"I want to assign this ticket to someone else!","assign_someone":"Assign to this person","assign_ticket":"Assign this Ticket","assign_expire":"Ability to assign ticket expires in ","assign_days":"days","reassign_printed_ticket":"Ticket may not be reassigned because this badge has already been printed.","reassign_text":"Select the option to reassign this ticket from","reassign_want_text":"I want to reassign this ticket to someone else!","reassign_before":"before","reassign_enter_email":"Enter the email of the person you would like to assign the ticket to below. Please note! An email will be sent to the below address with instructions on how to complete any additional information required to issue their ticket.","reassign_check":"Clean all fields","reassign_me":"Reassign to Me","reassign_someone":"Reassign to this person","edit_basic_info":"Attendee Information","edit_required":"Required","edit_email":"Ticket assigned to email:","assign_note":"Note: Should the ticket holder wish to change their name or company info, they can do so by logging into the event site and clicking on the profile icon (located on the far right of the top navigation bar).","edit_first_name":"First Name","edit_first_name_placeholder":"Attendee First Name","edit_last_name":"Last Name","edit_last_name_placeholder":"Attendee Last Name","edit_company":"Company","edit_company_placeholder":"Attendee Company","edit_required_star":"*","edit_preferences":"Additional Details","notify_text_1":"All required details must be completed before","notify_text_2":"Clicking the \\"Resend Notification\\" button will generate an email to","notify_text_3":"with instructions on how to provide their required attendee information. Once the details are complete, their official ticket will be issued and sent to","notify_message":"Personal Message","notify_message_condition":"(Optional)","notify_button":"Resend Notification","cancel_ticket":"Request a refund for this ticket","save_changes":"Save Changes","saving_changes":"Saving Changes","do_it_later":"Do this later","do_it_later_exp":"You may fill in the required information now or complete this step on the \'My Orders\' page later."},"confirm_popup":{"question_title_cancel":"Refund Ticket","question_text_select_refund":"Select the ticket you want a refund","question_text_confirm_refund":"Are you sure you want to request a refund for the below ticket(s)?","question_text_cancel":"Are you sure you want to request a refund of this ticket?","question_title_cancel_order":"Refund Order","question_text_cancel_order":"Are you sure you want to request a refund of this entire order ?","question_title_assign":"Assign Request","question_text_assign":"Are you sure you want to clean all the fields?","question_title_unassign":"Unassign Request","question_text_unassign":"Are you sure you want to unassign this ticket?","question_title_reassign":"Reassign Request","question_text_reassign":"Are you sure you want to reassign this ticket?","question_title_save":"Save","question_text_save":"","question_title_notification":"Notification Request","question_text_notification":"","question_text_confirm":"Are you sure?","cancel":"Cancel","accept":"Yes","success_title":"Request Submitted","success_text":"An email notification has been sent to","success_button":"Got it"},"invitees":{"validation_error":"Invitation error","entity_not_found":"Invitation not found"},"signin":{"add_code_title_p1":"Add the","add_code_title_p2":"digit code below","email_reception_error_p1":"Didn\'t receive it? Check your spam folder or","email_reception_error_p2":"resend email","email_sent":"We\'ve sent a code to the email","go_back_title_p1":"or go back and","go_back_title_p2":"try another way","invalid_email_addr":"Please enter a valid email adress","login_with_title":"Log in with one of the following","retry":"Please try again.","send_code_option":"or get a login code emailed to you","verify_btn":"Verify","wrong_code":"The code you entered is incorrect.","fn_login_btn":"Continue with FNid","fb_login_btn":"Continue with Facebook","ln_login_btn":"Sign in with LinkedIn","ap_login_btn":"Continue with Apple","ok_login_btn":"Continue with Okta"},"logout_popup":{"title":"Re-login required","message":"You are not logged in anymore. Please log in to continue.","close_btn":"Re-login"},"filter":{"filter":"Filter","purchased_on":"Purchased on","clear":"Clear","clear_filters":"Clear Filters"},"sort":{"sort":"Sort","new_first":"Newest first","old_first":"Oldest first"},"order_search":{"order_number":"Search order number"},"ticket_detail":{"purchased_by":"Purchased by","status":"ready to use","qr_note":"When you check in you will be able to scan the QR code directly from your device. Or you can:","download":"Download","send":"Send to email","sent":"Email sent!","attendee_information":"Attendee Information","email":"Email","manage_for":"Manage for: ","first_name":"First Name","last_name":"Last Name","attendee_first_name":"First Name","attendee_last_name":"Last Name","attendee_company":"Company","delegated_to":"Delegated to:","aditional_details":"Additional details","save":"save changes","cancel":"cancel","info_note":"Note: Should the ticket holder wish to change name or company info, they can do so by logging into the event site and clicking on the profile icon (located on the far right of the top navigation bar).","saving_error":"Error saving Ticket, please try again.","saving_success":"Complete Ticket saved successfully!"},"ticket_assign":{"header_assign":{"title":"Assign ticket","purchased_by":"Purchased by","assigned_to":"This ticket have been assigned to","delegated":"This ticket was assigned to you so you can manage it on behalf of","answer_your_eq":"You may enter the required information now to complete the ticket, or you may select \\"Complete Later\\".","answer_others_eq":"You may enter the required information for them to complete the ticket, or select \\"Complete Later\\" to let them do it.","complete_later":"Complete Later"},"header_reassign":{"title":"REASSIGN ticket","choose_option":"Below you can assign the ticket to yourself, assign it to someone else, or manage the ticket for someone else. We will notify the previous ticketholder via email that the ticket is no longer assigned to them.","choose_option_no_delegate":"Below you can assign the ticket to yourself or assign it to someone else. We will notify the previous ticketholder via email that the ticket is no longer assigned to them.","assigned_to":"This ticket is currently assigned to","reassigned_to":"You have assigned the ticket to","delegated":"You are now managing the ticket for","yourself":"yourself","answer_your_eq":"You may enter the required information now to complete the ticket, or you may select \\"Complete Later\\".","answer_others_eq":"You may enter the required information for them to complete the ticket, or select \\"Complete Later\\" to let them do it.","complete_later":"Complete Later"},"assign_to_me":"Assign to me","assign_to_other":"Assign to someone else","manage_ticket":"Manage ticket for someone else","revert_to_unassigned":"Revert to Unassigned","reassign_form":{"title":"I want to assign this ticket to someone else:","body":"Enter the email of the person you would like to assign the ticket to below. Please note! An email will be sent to the below address with instructions on how to complete any additional information required to issue their ticket.","new_attendee_email":"New attendee email","personal_message":"Personal Message (optional)","cancel":"cancel","save":"assign to this person"},"delegate_form":{"first_name":"First Name","last_name":"Last Name","email":"Email (optional)","title":"I want to manage this ticket for someone else:","body":"Enter the name of the person you would like to manage the ticket for below. Managing a ticket keeps it under your control. To give someone control you should assign it to the person instead.","save":"MANAGE FOR THIS PERSON","cancel":"cancel"},"extra_questions_form":{"cancel":"complete later","save":"save","disclaimer_label":"I agree with the above."},"saving_error":"Error saving Ticket, please try again.","saving_success":"Complete Ticket saved successfully!","confirm_unassign":{"title":"Unassign Ticket","body":"Are you sure you want to unassign this ticket?"}},"validation":{"required_question":"This question is required","required_field":"Required field","first_name":{"string":"Enter first name","required":"First name is required"},"last_name":{"string":"Enter last name","required":"Last name is required"},"email":{"string":"Enter email","format":"Must be a valid email address","required":"Email is required"},"text":{"string":"Enter text"},"checkbox":{"required":"Field must be checked"},"company":{"required":"Company is required"}},"no_results":{"assigned":{"title":"No tickets found assigned to you","body":"We did not find any tickets assigned to this account.\\n You may still have orders with tickets assigned to others.\\n If this seems incorrect please "},"filter":{"title":"No results found","body":"Try using fewer filters or clearing them to see more results."},"orders":{"title":"No orders found","body":"We did not find any orders associated with your account.\\nYou may still have tickets assigned to you.\\nIf this seems incorrect please "}}}');
|
|
10045
10991
|
|
|
10046
10992
|
/***/ }),
|
|
10047
10993
|
|
|
@@ -10051,7 +10997,7 @@ module.exports = /*#__PURE__*/JSON.parse('{"landing":{"sign_out":"Sign out","sig
|
|
|
10051
10997
|
\**********************************/
|
|
10052
10998
|
/***/ ((module) => {
|
|
10053
10999
|
|
|
10054
|
-
module.exports = /*#__PURE__*/JSON.parse('{"landing":{"sign_out":"Sign out","sign_in":"FNid Sign In","not_logged_in":"You are not logged in. Please log in to continue:"},"errors":{"error":"Error","user_not_authz":"Hold on. Your user is not authorized!.","user_not_set":"Hold on. Can not get any valid user.","session_expired":"Hold on. Your session expired!","server_error":"There was a problem with our server, please contact admin.","not_allowed":"You are not allowed here, please login with another user to access this page.","refund_unsuccessful":"Some of the refund requests were unsucessful. Please try again."},"general":{"continue":"Continue","save_and_continue":"Save and Continue","back":"Back","pay_now":"Pay Now","confirm":"Confirm","yes":"Yes","no":"No","cancel":"Cancel","finish":"Finish","copy_to_clipboard":"Copy to clipboard","copied":"Copied!","view_more":"View more","view_less":"View less","contact_support":"contact support"},"labels":{"tickets":"Tickets","summary":"Summary","assigned_to_me":"Assigned Tickets","search_results":"Search results for {{filter}}"},"order_summary":{"order_summary":"Order Summary","order_no":"Order number","discounts":"Promo Code Discount","refunds":"Refund","request_refund":"Request a Refund","refund_details":"Your Refund Details","taxes":"Taxes","sub_total":"Subtotal","total":"Total Paid","amount_paid":"Amount Paid","copy_order_number":"Copy Order Number"},"event_info":{"about_title":"About the event","about_desc":"a description","directions":"Get Directions","calendar":"Add to Calendar"},"step_one":{"choose_tickets":"Choose your ticket(s)","choose_tickets_desc":"a description","expiration":"Ticket(s) available until ","free":"Free","sold_out":"Sold Out","no_tickets":"No tickets for sale!","getfnid":"Create an FNid","signin":"Sign In"},"step_two":{"basic_info":"Purchaser Information","required":"Required fields","have_account":"Do you have an FNid account?","sign_in":"Sign in","sign_in_account":"to autopopulate this info and manage this order.","first_name":"First Name","last_name":"Last Name","email":"Email","company":"Company","tickets":"Tickets","ticket":"Ticket","asterisks_bold":"NOTE: Ticket(s) can be assigned later.","asterisks":"Ticket holders will immediately receive an email to finalize their attendee information.","code":"Promo Code:","assign":"Assign to:","add_ticket":"Add additional ticket(s) to this order","no_tickets":"No tickets selected.","disclaimer_in_person_title":"Attention","placeholders":{"coupon":"Coupon (Optional)","email":"Attendee Email (Optional)"},"validator":{"first_name":"Please enter your First Name.","last_name":"Please enter your Last Name.","company":"Please enter your Company.","email":"Please enter a valid Email."}},"step_three":{"payment_info":"Payment Information","required":"Required fields","payment_subtitle":"a subtitle...","cardholder_name":"Cardholder Name","card_number":"Card Number","expiration":"Expiration & Code","billing_info":"Billing Information","billing_subtitle":"a subtitle...","billing_country":"Country","billing_address":"Address","billing_address_two":"Address 2","billing_city":"City","billing_state":"State","billing_zipcode":"ZIP Code","stripe_errors":{"cardNumber":"Please enter a valid Credit Card.","cardExpiry":"Please enter the card expiration.","cardCvc":"Please enter the card cvc."},"validator":{"billing_country":"Please enter the billing Country.","billing_address":"Please enter the billing Address.","billing_city":"Please enter the billing City.","billing_state":"Please enter the billing State.","billing_zipcode":"Please enter the billing ZipCode."}},"step_four":{"thank_you":"Thank you for your order!","subtitle":"Your Order is Now Complete","member_exclamation":"You are signed in with your FNid and will use it to log in to the event on show days. ","member_text":"You may proceed directly to the \\"","member_link_tickets":"My Tickets","member_text_1":"\\" page to review your ticket(s) and complete any required details. Visit the \\"","member_link_orders":"My Orders","member_text_2":"\\" page to manage your purchase, assign ticket(s), and edit attendee details.","required_text":"PLEASE NOTE! Ticket(s) must be assigned and all additional details must be completed before official ticket(s) are issued.","register_text":"An FNid is required to manage order(s) and assign ticket(s) ","register_link_text":"create one","register_text_2":" with the email ","register_text_3":" used for this purchase, you will then be able to manage your order.","register_email_bold":"You will now receive an email with a one-click link to create a password for your FNid.","register_email_1":"Your FNid will allow you to access the event. Visit the \\"","register_email_orders":"My Orders","register_email_2":"\\" page to manage your purchase, assign ticket(s), and edit attendee details.","help_text":"For further assistance, please email ","order_no":"ORDER NUMBER","manage":"My Orders","getfnid":"Create an FNid","signin":"Sign In"},"guests":{"invalid_thanks":"Thanks for coming to fill in the remaining details so we can issue your ticket.","invalid_text_1":"Unfortunately the link in your email has expired. Not to worry we will send you a fresh link. Click here or the button below to get a new link.","invalid_button":"Send New Link","invalid_contact":"If you have any problems please email","hash_regenerated":"Please check your new link in your email","completed_text_1":"Thank you for completing your additional details. Your ticket has now been issued. Please use your FNid to access the event.","completed_button":"Download Ticket to","completed_text_2":"You will also receive an email confirmation.","cancel":"Cancel","save":"Save"},"orders":{"title":"My Orders with Tickets","purchased":"Purchased on","empty":"There are no active orders so far","loading":"Loading orders..."},"no-summit":{"not-found":"","select-list":"Please select from available shows:"},"order_info":{"print":"Print","resend":"Resend Receipt","download":"Download Ticket PDF","cancel_order":"Request to Refund All Tickets","cancel_ticket":"Cancel Ticket","email_support":"Email Support","directions":"Get Directions","calendar":"Add to Calendar"},"order_status":{"complete":"Ticket(s) assigned and issued","incomplete":"Additional attendee details required before ticket(s) can be issued","pending":"Pending confirmation","cancelled":"Cancelled","error":"Payment error","processing":"Payment processing","past":"Past"},"tickets":{"title":"External Tickets Assigned to Me","empty":"There are no tickets so far","loading":"Loading tickets...","save_message":"Thank you! Your information has been saved and ticket updated.","assign_success_message":"The ticket was successfully assigned.","reassign_success_message":"The ticket was successfully reassigned.","unassign_success_message":"The ticket was successfully unassigned.","notify_success_message":"Notification was sent to ticket holder.","refund_request_success_1":"Your refund request has been requested successfully","refund_request_success_2":"Please allow 24 - 48 hours for a response"},"ticket_status":{"unassigned":"Unassigned","incomplete":"Required details needed","complete":"Ready to use","cancelled":"Cancelled","past":"Past","ticket_no":"Ticket #","assigned_to":"Assigned to","assigned_by":"Assigned by","manage_for":"Manage for","attendee_status_unassigned":"Attendee unassigned","view_tickets":"View Tickets","hide_tickets":"Hide Tickets","view_ticket":"View Ticket","reassign_ticket":"Reassign","assign_ticket":"Assign Ticket","status_unassigned":"Unassigned","status_complete":"Completed","status_incomplete":"Incomplete","status_refund_requested":"Refund Requested","status_details_required":"Some tickets in this order require additional details before the ticket(s) can be issued.","status_cancelled":"Cancelled","finish_ticket":"Finish Ticket","select_ticket_refund":"Select the ticket(s) for a refund:","select_all":"Select All","select_cancel":"Cancel","copy_ticket_number":"Copy Ticket Number","refund_request_approved":"Approved","refund_request_rejected":"Rejected","refund_request_pending":"Requested"},"nav_bar":{"my-orders":"My Orders","my-tickets":"My Tickets"},"ticket_popup":{"tab_assign":"Assign","tab_reassign":"Reassign","tab_refund":"Refund","tab_edit":"Edit Details","tab_edit_read_only":"Details","tab_notify":"Notify Ticket Holder","assign_text":"Select the option to assign this ticket","assign_or":"Or","assign_me":"Assign to Me","assign_this":"Assign this Ticket","assign_want_text":"I want to assign this ticket to someone else!","assign_someone":"Assign to this person","assign_ticket":"Assign this Ticket","assign_expire":"Ability to assign ticket expires in ","assign_days":"days","reassign_printed_ticket":"Ticket may not be reassigned because this badge has already been printed.","reassign_text":"Select the option to reassign this ticket from","reassign_want_text":"I want to reassign this ticket to someone else!","reassign_before":"before","reassign_enter_email":"Enter the email of the person you would like to assign the ticket to below. Please note! An email will be sent to the below address with instructions on how to complete any additional information required to issue their ticket.","reassign_check":"Clean all fields","reassign_me":"Reassign to Me","reassign_someone":"Reassign to this person","edit_basic_info":"Attendee Information","edit_required":"Required","edit_email":"Ticket assigned to email:","assign_note":"Note: Should the ticket holder wish to change their name or company info, they can do so by logging into the event site and clicking on the profile icon (located on the far right of the top navigation bar).","edit_first_name":"First Name","edit_first_name_placeholder":"Attendee First Name","edit_last_name":"Last Name","edit_last_name_placeholder":"Attendee Last Name","edit_company":"Company","edit_company_placeholder":"Attendee Company","edit_required_star":"*","edit_preferences":"Additional Details","notify_text_1":"All required details must be completed before","notify_text_2":"Clicking the \\"Resend Notification\\" button will generate an email to","notify_text_3":"with instructions on how to provide their required attendee information. Once the details are complete, their official ticket will be issued and sent to","notify_message":"Personal Message","notify_message_condition":"(Optional)","notify_button":"Resend Notification","cancel_ticket":"Request a refund for this ticket","save_changes":"Save Changes","saving_changes":"Saving Changes","do_it_later":"Do this later","do_it_later_exp":"You may fill in the required information now or complete this step on the \'My Orders\' page later."},"confirm_popup":{"question_title_cancel":"Refund Ticket","question_text_select_refund":"Select the ticket you want a refund","question_text_confirm_refund":"Are you sure you want to request a refund for the below ticket(s)?","question_text_cancel":"Are you sure you want to request a refund of this ticket?","question_title_cancel_order":"Refund Order","question_text_cancel_order":"Are you sure you want to request a refund of this entire order ?","question_title_assign":"Assign Request","question_text_assign":"Are you sure you want to clean all the fields?","question_title_unassign":"Unassign Request","question_text_unassign":"Are you sure you want to unassign this ticket?","question_title_reassign":"Reassign Request","question_text_reassign":"Are you sure you want to reassign this ticket?","question_title_save":"Save","question_text_save":"","question_title_notification":"Notification Request","question_text_notification":"","question_text_confirm":"Are you sure?","cancel":"Cancel","accept":"Yes","success_title":"Request Submitted","success_text":"An email notification has been sent to","success_button":"Got it"},"invitees":{"validation_error":"Invitation error","entity_not_found":"Invitation not found"},"signin":{"add_code_title_p1":"Add the","add_code_title_p2":"digit code below","email_reception_error_p1":"Didn\'t receive it? Check your spam folder or","email_reception_error_p2":"resend email","email_sent":"We\'ve sent a code to the email","go_back_title_p1":"or go back and","go_back_title_p2":"try another way","invalid_email_addr":"Please enter a valid email adress","login_with_title":"Log in with one of the following","retry":"Please try again.","send_code_option":"or get a login code emailed to you","verify_btn":"Verify","wrong_code":"The code you entered is incorrect.","fn_login_btn":"Continue with FNid","fb_login_btn":"Continue with Facebook","ln_login_btn":"Sign in with LinkedIn","ap_login_btn":"Continue with Apple","ok_login_btn":"Continue with Okta"},"logout_popup":{"title":"Re-login required","message":"You are not logged in anymore. Please log in to continue.","close_btn":"Re-login"},"filter":{"filter":"Filter","purchased_on":"Purchased on","clear":"Clear","clear_filters":"Clear Filters"},"sort":{"sort":"Sort","new_first":"Newest first","old_first":"Oldest first"},"order_search":{"order_number":"Search order number"},"ticket_detail":{"purchased_by":"Purchased by","status":"ready to use","qr_note":"When you check in you will be able to scan the QR code directly from your device. Or you can:","download":"Download","send":"Send to email","sent":"Email sent!","attendee_information":"Attendee Information","email":"Email","manage_for":"Manage for: ","first_name":"First Name","last_name":"Last Name","attendee_first_name":"First Name","attendee_last_name":"Last Name","attendee_company":"Company","delegated_to":"Delegated to:","aditional_details":"Additional details","save":"save changes","cancel":"cancel","info_note":"Note: Should the ticket holder wish to change name or company info, they can do so by logging into the event site and clicking on the profile icon (located on the far right of the top navigation bar).","saving_error":"Error saving Ticket, please try again.","saving_success":"Complete Ticket saved successfully!"},"ticket_assign":{"header_assign":{"title":"Assign ticket","purchased_by":"Purchased by","assigned_to":"This ticket have been assigned to","delegated":"This ticket was assigned to you so you can manage it on behalf of","answer_your_eq":"You may enter the required information now to complete the ticket, or you may select \\"Complete Later\\".","answer_others_eq":"You may enter the required information for them to complete the ticket, or select \\"Complete Later\\" to let them do it.","complete_later":"Complete Later"},"header_reassign":{"title":"REASSIGN ticket","choose_option":"Below you can assign the ticket to yourself, assign it to someone else, or manage the ticket for someone else. We will notify the previous ticketholder via email that the ticket is no longer assigned to them.","choose_option_no_delegate":"Below you can assign the ticket to yourself or assign it to someone else. We will notify the previous ticketholder via email that the ticket is no longer assigned to them.","assigned_to":"This ticket is currently assigned to","reassigned_to":"You have assigned the ticket to","delegated":"You are now managing the ticket for","yourself":"yourself","answer_your_eq":"You may enter the required information now to complete the ticket, or you may select \\"Complete Later\\".","answer_others_eq":"You may enter the required information for them to complete the ticket, or select \\"Complete Later\\" to let them do it.","complete_later":"Complete Later"},"assign_to_me":"Assign to me","assign_to_other":"Assign to someone else","manage_ticket":"Manage ticket for someone else","revert_to_unassigned":"Revert to Unassigned","reassign_form":{"title":"I want to assign this ticket to someone else:","body":"Enter the email of the person you would like to assign the ticket to below. Please note! An email will be sent to the below address with instructions on how to complete any additional information required to issue their ticket.","new_attendee_email":"New attendee email","personal_message":"Personal Message (optional)","cancel":"cancel","save":"assign to this person"},"delegate_form":{"first_name":"First Name","last_name":"Last Name","email":"Email (optional)","title":"I want to manage this ticket for someone else:","body":"Enter the name of the person you would like to manage the ticket for below. Managing a ticket keeps it under your control. To give someone control you should assign it to the person instead.","save":"MANAGE FOR THIS PERSON","cancel":"cancel"},"extra_questions_form":{"cancel":"complete later","save":"save","disclaimer_label":"I agree with the above."},"saving_error":"Error saving Ticket, please try again.","saving_success":"Complete Ticket saved successfully!","confirm_unassign":{"title":"Unassign Ticket","body":"Are you sure you want to unassign this ticket?"}},"validation":{"required_question":"This question is required","required_field":"Required field","first_name":{"string":"Enter first name","required":"First name is required"},"last_name":{"string":"Enter last name","required":"Last name is required"},"email":{"string":"Enter email","format":"Must be a valid email address","required":"Email is required"},"text":{"string":"Enter text"},"checkbox":{"required":"Field must be checked"},"company":{"required":"Company is required"}},"no_results":{"assigned":{"title":"No tickets found assigned to you","body":"We did not find any tickets assigned to this account.\\n You may still have orders with tickets assigned to others.\\n If this seems incorrect please "},"filter":{"title":"No results found","body":"Try using fewer filters or clearing them to see more results."},"orders":{"title":"No orders found","body":"We did not find any orders associated with your account.\\nYou may still have tickets assigned to you.\\nIf this seems incorrect please "}}}');
|
|
11000
|
+
module.exports = /*#__PURE__*/JSON.parse('{"landing":{"sign_out":"Sign out","sign_in":"FNid Sign In","not_logged_in":"You are not logged in. Please log in to continue:"},"errors":{"error":"Error","user_not_authz":"Hold on. Your user is not authorized!.","user_not_set":"Hold on. Can not get any valid user.","session_expired":"Hold on. Your session expired!","server_error":"There was a problem with our server, please contact admin.","not_allowed":"You are not allowed here, please login with another user to access this page.","refund_unsuccessful":"Some of the refund requests were unsucessful. Please try again."},"general":{"continue":"Continue","save_and_continue":"Save and Continue","back":"Back","pay_now":"Pay Now","confirm":"Confirm","yes":"Yes","no":"No","cancel":"Cancel","finish":"Finish","copy_to_clipboard":"Copy to clipboard","copied":"Copied!","view_more":"View more","view_less":"View less","contact_support":"contact support"},"labels":{"tickets":"Tickets","summary":"Summary","assigned_to_me":"Assigned Tickets","search_results":"Search results for {{filter}}"},"order_summary":{"order_summary":"Resumen del Pedido","order_no":"Número de pedido","discounts":"Descuento de Código Promocional","refunds":"Reembolso","request_refund":"Solicitar Reembolso","refund_details":"Detalles de tu Reembolso","download_receipt":"Descargar Recibo","generating_receipt":"Generando...","taxes":"Impuestos","sub_total":"Subtotal","total":"Total","amount_paid":"Monto Pagado","copy_order_number":"Copiar Número de Pedido"},"event_info":{"about_title":"About the event","about_desc":"a description","directions":"Get Directions","calendar":"Add to Calendar"},"step_one":{"choose_tickets":"Choose your ticket(s)","choose_tickets_desc":"a description","expiration":"Ticket(s) available until ","free":"Free","sold_out":"Sold Out","no_tickets":"No tickets for sale!","getfnid":"Create an FNid","signin":"Sign In"},"step_two":{"basic_info":"Purchaser Information","required":"Required fields","have_account":"Do you have an FNid account?","sign_in":"Sign in","sign_in_account":"to autopopulate this info and manage this order.","first_name":"First Name","last_name":"Last Name","email":"Email","company":"Company","tickets":"Tickets","ticket":"Ticket","asterisks_bold":"NOTE: Ticket(s) can be assigned later.","asterisks":"Ticket holders will immediately receive an email to finalize their attendee information.","code":"Promo Code:","assign":"Assign to:","add_ticket":"Add additional ticket(s) to this order","no_tickets":"No tickets selected.","disclaimer_in_person_title":"Attention","placeholders":{"coupon":"Coupon (Optional)","email":"Attendee Email (Optional)"},"validator":{"first_name":"Please enter your First Name.","last_name":"Please enter your Last Name.","company":"Please enter your Company.","email":"Please enter a valid Email."}},"step_three":{"payment_info":"Payment Information","required":"Required fields","payment_subtitle":"a subtitle...","cardholder_name":"Cardholder Name","card_number":"Card Number","expiration":"Expiration & Code","billing_info":"Billing Information","billing_subtitle":"a subtitle...","billing_country":"Country","billing_address":"Address","billing_address_two":"Address 2","billing_city":"City","billing_state":"State","billing_zipcode":"ZIP Code","stripe_errors":{"cardNumber":"Please enter a valid Credit Card.","cardExpiry":"Please enter the card expiration.","cardCvc":"Please enter the card cvc."},"validator":{"billing_country":"Please enter the billing Country.","billing_address":"Please enter the billing Address.","billing_city":"Please enter the billing City.","billing_state":"Please enter the billing State.","billing_zipcode":"Please enter the billing ZipCode."}},"step_four":{"thank_you":"Thank you for your order!","subtitle":"Your Order is Now Complete","member_exclamation":"You are signed in with your FNid and will use it to log in to the event on show days. ","member_text":"You may proceed directly to the \\"","member_link_tickets":"My Tickets","member_text_1":"\\" page to review your ticket(s) and complete any required details. Visit the \\"","member_link_orders":"My Orders","member_text_2":"\\" page to manage your purchase, assign ticket(s), and edit attendee details.","required_text":"PLEASE NOTE! Ticket(s) must be assigned and all additional details must be completed before official ticket(s) are issued.","register_text":"An FNid is required to manage order(s) and assign ticket(s) ","register_link_text":"create one","register_text_2":" with the email ","register_text_3":" used for this purchase, you will then be able to manage your order.","register_email_bold":"You will now receive an email with a one-click link to create a password for your FNid.","register_email_1":"Your FNid will allow you to access the event. Visit the \\"","register_email_orders":"My Orders","register_email_2":"\\" page to manage your purchase, assign ticket(s), and edit attendee details.","help_text":"For further assistance, please email ","order_no":"ORDER NUMBER","manage":"My Orders","getfnid":"Create an FNid","signin":"Sign In"},"guests":{"invalid_thanks":"Thanks for coming to fill in the remaining details so we can issue your ticket.","invalid_text_1":"Unfortunately the link in your email has expired. Not to worry we will send you a fresh link. Click here or the button below to get a new link.","invalid_button":"Send New Link","invalid_contact":"If you have any problems please email","hash_regenerated":"Please check your new link in your email","completed_text_1":"Thank you for completing your additional details. Your ticket has now been issued. Please use your FNid to access the event.","completed_button":"Download Ticket to","completed_text_2":"You will also receive an email confirmation.","cancel":"Cancel","save":"Save"},"orders":{"title":"My Orders with Tickets","purchased":"Purchased on","empty":"There are no active orders so far","loading":"Loading orders..."},"no-summit":{"not-found":"","select-list":"Please select from available shows:"},"order_info":{"print":"Print","resend":"Resend Receipt","download":"Download Ticket PDF","cancel_order":"Request to Refund All Tickets","cancel_ticket":"Cancel Ticket","email_support":"Email Support","directions":"Get Directions","calendar":"Add to Calendar"},"order_status":{"complete":"Ticket(s) assigned and issued","incomplete":"Additional attendee details required before ticket(s) can be issued","pending":"Pending confirmation","cancelled":"Cancelled","error":"Payment error","processing":"Payment processing","past":"Past"},"tickets":{"title":"External Tickets Assigned to Me","empty":"There are no tickets so far","loading":"Loading tickets...","save_message":"Thank you! Your information has been saved and ticket updated.","assign_success_message":"The ticket was successfully assigned.","reassign_success_message":"The ticket was successfully reassigned.","unassign_success_message":"The ticket was successfully unassigned.","notify_success_message":"Notification was sent to ticket holder.","refund_request_success_1":"Your refund request has been requested successfully","refund_request_success_2":"Please allow 24 - 48 hours for a response"},"ticket_status":{"unassigned":"Unassigned","incomplete":"Required details needed","complete":"Ready to use","cancelled":"Cancelled","past":"Past","ticket_no":"Ticket #","assigned_to":"Assigned to","assigned_by":"Assigned by","manage_for":"Manage for","attendee_status_unassigned":"Attendee unassigned","view_tickets":"View Tickets","hide_tickets":"Hide Tickets","view_ticket":"View Ticket","reassign_ticket":"Reassign","assign_ticket":"Assign Ticket","status_unassigned":"Unassigned","status_complete":"Completed","status_incomplete":"Incomplete","status_refund_requested":"Refund Requested","status_details_required":"Some tickets in this order require additional details before the ticket(s) can be issued.","status_cancelled":"Cancelled","finish_ticket":"Finish Ticket","select_ticket_refund":"Select the ticket(s) for a refund:","select_all":"Select All","select_cancel":"Cancel","copy_ticket_number":"Copy Ticket Number","refund_request_approved":"Approved","refund_request_rejected":"Rejected","refund_request_pending":"Requested"},"nav_bar":{"my-orders":"My Orders","my-tickets":"My Tickets"},"ticket_popup":{"tab_assign":"Assign","tab_reassign":"Reassign","tab_refund":"Refund","tab_edit":"Edit Details","tab_edit_read_only":"Details","tab_notify":"Notify Ticket Holder","assign_text":"Select the option to assign this ticket","assign_or":"Or","assign_me":"Assign to Me","assign_this":"Assign this Ticket","assign_want_text":"I want to assign this ticket to someone else!","assign_someone":"Assign to this person","assign_ticket":"Assign this Ticket","assign_expire":"Ability to assign ticket expires in ","assign_days":"days","reassign_printed_ticket":"Ticket may not be reassigned because this badge has already been printed.","reassign_text":"Select the option to reassign this ticket from","reassign_want_text":"I want to reassign this ticket to someone else!","reassign_before":"before","reassign_enter_email":"Enter the email of the person you would like to assign the ticket to below. Please note! An email will be sent to the below address with instructions on how to complete any additional information required to issue their ticket.","reassign_check":"Clean all fields","reassign_me":"Reassign to Me","reassign_someone":"Reassign to this person","edit_basic_info":"Attendee Information","edit_required":"Required","edit_email":"Ticket assigned to email:","assign_note":"Note: Should the ticket holder wish to change their name or company info, they can do so by logging into the event site and clicking on the profile icon (located on the far right of the top navigation bar).","edit_first_name":"First Name","edit_first_name_placeholder":"Attendee First Name","edit_last_name":"Last Name","edit_last_name_placeholder":"Attendee Last Name","edit_company":"Company","edit_company_placeholder":"Attendee Company","edit_required_star":"*","edit_preferences":"Additional Details","notify_text_1":"All required details must be completed before","notify_text_2":"Clicking the \\"Resend Notification\\" button will generate an email to","notify_text_3":"with instructions on how to provide their required attendee information. Once the details are complete, their official ticket will be issued and sent to","notify_message":"Personal Message","notify_message_condition":"(Optional)","notify_button":"Resend Notification","cancel_ticket":"Request a refund for this ticket","save_changes":"Save Changes","saving_changes":"Saving Changes","do_it_later":"Do this later","do_it_later_exp":"You may fill in the required information now or complete this step on the \'My Orders\' page later."},"confirm_popup":{"question_title_cancel":"Refund Ticket","question_text_select_refund":"Select the ticket you want a refund","question_text_confirm_refund":"Are you sure you want to request a refund for the below ticket(s)?","question_text_cancel":"Are you sure you want to request a refund of this ticket?","question_title_cancel_order":"Refund Order","question_text_cancel_order":"Are you sure you want to request a refund of this entire order ?","question_title_assign":"Assign Request","question_text_assign":"Are you sure you want to clean all the fields?","question_title_unassign":"Unassign Request","question_text_unassign":"Are you sure you want to unassign this ticket?","question_title_reassign":"Reassign Request","question_text_reassign":"Are you sure you want to reassign this ticket?","question_title_save":"Save","question_text_save":"","question_title_notification":"Notification Request","question_text_notification":"","question_text_confirm":"Are you sure?","cancel":"Cancel","accept":"Yes","success_title":"Request Submitted","success_text":"An email notification has been sent to","success_button":"Got it"},"invitees":{"validation_error":"Invitation error","entity_not_found":"Invitation not found"},"signin":{"add_code_title_p1":"Add the","add_code_title_p2":"digit code below","email_reception_error_p1":"Didn\'t receive it? Check your spam folder or","email_reception_error_p2":"resend email","email_sent":"We\'ve sent a code to the email","go_back_title_p1":"or go back and","go_back_title_p2":"try another way","invalid_email_addr":"Please enter a valid email adress","login_with_title":"Log in with one of the following","retry":"Please try again.","send_code_option":"or get a login code emailed to you","verify_btn":"Verify","wrong_code":"The code you entered is incorrect.","fn_login_btn":"Continue with FNid","fb_login_btn":"Continue with Facebook","ln_login_btn":"Sign in with LinkedIn","ap_login_btn":"Continue with Apple","ok_login_btn":"Continue with Okta"},"logout_popup":{"title":"Re-login required","message":"You are not logged in anymore. Please log in to continue.","close_btn":"Re-login"},"filter":{"filter":"Filter","purchased_on":"Purchased on","clear":"Clear","clear_filters":"Clear Filters"},"sort":{"sort":"Sort","new_first":"Newest first","old_first":"Oldest first"},"order_search":{"order_number":"Search order number"},"ticket_detail":{"purchased_by":"Purchased by","status":"ready to use","qr_note":"When you check in you will be able to scan the QR code directly from your device. Or you can:","download":"Download","send":"Send to email","sent":"Email sent!","attendee_information":"Attendee Information","email":"Email","manage_for":"Manage for: ","first_name":"First Name","last_name":"Last Name","attendee_first_name":"First Name","attendee_last_name":"Last Name","attendee_company":"Company","delegated_to":"Delegated to:","aditional_details":"Additional details","save":"save changes","cancel":"cancel","info_note":"Note: Should the ticket holder wish to change name or company info, they can do so by logging into the event site and clicking on the profile icon (located on the far right of the top navigation bar).","saving_error":"Error saving Ticket, please try again.","saving_success":"Complete Ticket saved successfully!"},"ticket_assign":{"header_assign":{"title":"Assign ticket","purchased_by":"Purchased by","assigned_to":"This ticket have been assigned to","delegated":"This ticket was assigned to you so you can manage it on behalf of","answer_your_eq":"You may enter the required information now to complete the ticket, or you may select \\"Complete Later\\".","answer_others_eq":"You may enter the required information for them to complete the ticket, or select \\"Complete Later\\" to let them do it.","complete_later":"Complete Later"},"header_reassign":{"title":"REASSIGN ticket","choose_option":"Below you can assign the ticket to yourself, assign it to someone else, or manage the ticket for someone else. We will notify the previous ticketholder via email that the ticket is no longer assigned to them.","choose_option_no_delegate":"Below you can assign the ticket to yourself or assign it to someone else. We will notify the previous ticketholder via email that the ticket is no longer assigned to them.","assigned_to":"This ticket is currently assigned to","reassigned_to":"You have assigned the ticket to","delegated":"You are now managing the ticket for","yourself":"yourself","answer_your_eq":"You may enter the required information now to complete the ticket, or you may select \\"Complete Later\\".","answer_others_eq":"You may enter the required information for them to complete the ticket, or select \\"Complete Later\\" to let them do it.","complete_later":"Complete Later"},"assign_to_me":"Assign to me","assign_to_other":"Assign to someone else","manage_ticket":"Manage ticket for someone else","revert_to_unassigned":"Revert to Unassigned","reassign_form":{"title":"I want to assign this ticket to someone else:","body":"Enter the email of the person you would like to assign the ticket to below. Please note! An email will be sent to the below address with instructions on how to complete any additional information required to issue their ticket.","new_attendee_email":"New attendee email","personal_message":"Personal Message (optional)","cancel":"cancel","save":"assign to this person"},"delegate_form":{"first_name":"First Name","last_name":"Last Name","email":"Email (optional)","title":"I want to manage this ticket for someone else:","body":"Enter the name of the person you would like to manage the ticket for below. Managing a ticket keeps it under your control. To give someone control you should assign it to the person instead.","save":"MANAGE FOR THIS PERSON","cancel":"cancel"},"extra_questions_form":{"cancel":"complete later","save":"save","disclaimer_label":"I agree with the above."},"saving_error":"Error saving Ticket, please try again.","saving_success":"Complete Ticket saved successfully!","confirm_unassign":{"title":"Unassign Ticket","body":"Are you sure you want to unassign this ticket?"}},"validation":{"required_question":"This question is required","required_field":"Required field","first_name":{"string":"Enter first name","required":"First name is required"},"last_name":{"string":"Enter last name","required":"Last name is required"},"email":{"string":"Enter email","format":"Must be a valid email address","required":"Email is required"},"text":{"string":"Enter text"},"checkbox":{"required":"Field must be checked"},"company":{"required":"Company is required"}},"no_results":{"assigned":{"title":"No tickets found assigned to you","body":"We did not find any tickets assigned to this account.\\n You may still have orders with tickets assigned to others.\\n If this seems incorrect please "},"filter":{"title":"No results found","body":"Try using fewer filters or clearing them to see more results."},"orders":{"title":"No orders found","body":"We did not find any orders associated with your account.\\nYou may still have tickets assigned to you.\\nIf this seems incorrect please "}}}');
|
|
10055
11001
|
|
|
10056
11002
|
/***/ })
|
|
10057
11003
|
|
|
@@ -10175,6 +11121,7 @@ const MyOrdersMyTicketsWidget = props => {
|
|
|
10175
11121
|
supportEmail,
|
|
10176
11122
|
summit,
|
|
10177
11123
|
apiBaseUrl,
|
|
11124
|
+
receiptSettings,
|
|
10178
11125
|
user,
|
|
10179
11126
|
clientId,
|
|
10180
11127
|
updateProfile
|
|
@@ -10188,6 +11135,7 @@ const MyOrdersMyTicketsWidget = props => {
|
|
|
10188
11135
|
summit,
|
|
10189
11136
|
user,
|
|
10190
11137
|
apiBaseUrl,
|
|
11138
|
+
receiptSettings,
|
|
10191
11139
|
clientId,
|
|
10192
11140
|
updateProfile
|
|
10193
11141
|
});
|
|
@@ -10220,6 +11168,21 @@ MyOrdersMyTicketsWidget.propTypes = {
|
|
|
10220
11168
|
supportEmail: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().string),
|
|
10221
11169
|
summit: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().object),
|
|
10222
11170
|
apiBaseUrl: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().string),
|
|
11171
|
+
receiptSettings: prop_types__WEBPACK_IMPORTED_MODULE_1___default().shape({
|
|
11172
|
+
primaryColor: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().string),
|
|
11173
|
+
fontFamily: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().string),
|
|
11174
|
+
printLogo: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().string),
|
|
11175
|
+
organizerLegalName: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().string),
|
|
11176
|
+
organizerAddressLine1: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().string),
|
|
11177
|
+
organizerAddressLine2: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().string),
|
|
11178
|
+
organizerCity: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().string),
|
|
11179
|
+
organizerState: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().string),
|
|
11180
|
+
organizerPostalCode: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().string),
|
|
11181
|
+
organizerCountry: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().string),
|
|
11182
|
+
organizerTaxId: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().string),
|
|
11183
|
+
organizerTaxIdLabel: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().string),
|
|
11184
|
+
supportEmail: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().string)
|
|
11185
|
+
}),
|
|
10223
11186
|
user: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().object),
|
|
10224
11187
|
clientId: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().string),
|
|
10225
11188
|
updateProfile: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().func)
|
|
@@ -10231,4 +11194,4 @@ MyOrdersMyTicketsWidget.propTypes = {
|
|
|
10231
11194
|
/******/ })()
|
|
10232
11195
|
;
|
|
10233
11196
|
});
|
|
10234
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,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Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1VDQUE7VUFDQTs7VUFFQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTs7VUFFQTtVQUNBOztVQUVBO1VBQ0E7VUFDQTs7Ozs7V0N0QkE7V0FDQTtXQUNBO1dBQ0E7V0FDQTtXQUNBLGlDQUFpQyxXQUFXO1dBQzVDO1dBQ0E7Ozs7O1dDUEE7V0FDQTtXQUNBO1dBQ0E7V0FDQSx5Q0FBeUMsd0NBQXdDO1dBQ2pGO1dBQ0E7V0FDQTs7Ozs7V0NQQTs7Ozs7V0NBQTtXQUNBO1dBQ0E7V0FDQSx1REFBdUQsaUJBQWlCO1dBQ3hFO1dBQ0EsZ0RBQWdELGFBQWE7V0FDN0Q7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDTkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ3lDO0FBQ047QUFDSTtBQUN1QjtBQUNUO0FBQ2Q7QUFDa0I7QUFFRjtBQUFBO0FBRXZELE1BQU1FLHVCQUF1QixHQUFJdGxDLEtBQUssSUFBSztFQUN6QyxNQUFNO0lBQ0pvN0IsUUFBUTtJQUNSbUssWUFBWTtJQUNaL3hDLE1BQU07SUFDTjZELFVBQVU7SUFDVjVELElBQUk7SUFDSjBuQyxRQUFRO0lBQ1J6L0I7RUFDRixDQUFDLEdBQUdzRSxLQUFLO0VBRVQsTUFBTTtJQUFFczdCLEtBQUs7SUFBRVc7RUFBVSxDQUFDLEdBQUdGLG9EQUFZLENBQUM7SUFDeENYLFFBQVE7SUFDUm1LLFlBQVk7SUFDWi94QyxNQUFNO0lBQ05DLElBQUk7SUFDSjRELFVBQVU7SUFDVjhqQyxRQUFRO0lBQ1J6L0I7RUFDRixDQUFDLENBQUM7RUFFRixNQUFNOHBDLGdCQUFnQixHQUFHQSxDQUFBLEtBQU07SUFDN0IsTUFBTWh1QyxNQUFNLEdBQUcsSUFBSWl1QyxlQUFlLENBQUM5bUMsTUFBTSxDQUFDNGlDLFFBQVEsQ0FBQ21FLE1BQU0sQ0FBQztJQUMxRCxNQUFNQyxLQUFLLEdBQUdudUMsTUFBTSxDQUFDb3VDLEdBQUcsQ0FBQyxZQUFZLENBQUM7SUFDdEMsSUFBSUQsS0FBSyxFQUFFckssS0FBSyxDQUFDbm9DLFFBQVEsQ0FBQztNQUFFcVosSUFBSSxFQUFFL2IsaURBQVc7TUFBRThFLE9BQU8sRUFBRTtJQUFLLENBQUMsQ0FBQztFQUNqRSxDQUFDO0VBRUQrYSxnREFBUyxDQUFDLE1BQU07SUFDZGdyQixLQUFLLENBQUNub0MsUUFBUSxDQUFDSSx5REFBZSxDQUFDQyxNQUFNLEVBQUVDLElBQUksQ0FBQyxDQUFDO0VBQy9DLENBQUMsRUFBRSxDQUFDRCxNQUFNLEVBQUVDLElBQUksQ0FBQyxDQUFDO0VBRWxCLG9CQUNFK0wsc0RBQUEsQ0FBQ20xQixpREFBUTtJQUFDMkcsS0FBSyxFQUFFQSxLQUFNO0lBQUF4NkIsUUFBQSxlQUNyQnRCLHNEQUFBLENBQUM2bEMsd0VBQVc7TUFDVlEsWUFBWSxFQUFFTCxnQkFBaUI7TUFDL0Jwc0IsT0FBTyxFQUFFLElBQUs7TUFDZDZpQixTQUFTLEVBQUVBLFNBQVU7TUFBQW43QixRQUFBLGVBRXJCdEIsc0RBQUEsQ0FBQzBuQiwrREFBb0I7UUFBQzJCLFdBQVc7UUFBQS9uQixRQUFBLGVBQy9CdEIsc0RBQUEsQ0FBQzQwQixpRUFBYSxJQUFFO01BQUMsQ0FDRztJQUFDLENBQ1o7RUFBQyxDQUNOLENBQUM7QUFFZixDQUFDO0FBRURrUix1QkFBdUIsQ0FBQy9qQyxTQUFTLEdBQUc7RUFDbEM2NUIsUUFBUSxFQUFFLzdCLDBEQUFnQjtFQUMxQmttQyxZQUFZLEVBQUVsbUMsMERBQWdCO0VBQzlCN0wsTUFBTSxFQUFFNkwsMERBQWdCO0VBQ3hCaEksVUFBVSxFQUFFZ0ksMERBQWdCO0VBQzVCNUwsSUFBSSxFQUFFNEwsMERBQWdCO0VBQ3RCODdCLFFBQVEsRUFBRTk3QiwwREFBZ0I7RUFDMUIzRCxhQUFhLEVBQUUyRCx3REFBYytGO0FBQy9CLENBQUM7QUFFRCxpRUFBZWtnQyx1QkFBdUIsRSIsInNvdXJjZXMiOlsid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC93ZWJwYWNrL3VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24iLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2FjdGlvbnMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvQmFkZ2VGZWF0dXJlSWNvbi9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9Db25maXJtRGlhbG9nL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0NvcHlUZXh0L2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0N1c3RvbU5vdGlmaWNhdGlvbi9Db250ZXh0LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0N1c3RvbU5vdGlmaWNhdGlvbi9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9DdXN0b21UaGVtZS5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb21wb25lbnRzL0NoZWNrYm94TGlzdFF1ZXN0aW9uRmllbGQuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29tcG9uZW50cy9DaGVja2JveFF1ZXN0aW9uRmllbGQuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29tcG9uZW50cy9Ecm9wZG93blF1ZXN0aW9uRmllbGQuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29tcG9uZW50cy9SYWRpb0xpc3RRdWVzdGlvbkZpZWxkLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvVGV4dFF1ZXN0aW9uRmllbGQuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29tcG9uZW50cy91dGlscy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb25zdGFudHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVycy9Bc3NpZ25lZEZpbHRlci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJzL0JhZGdlRmVhdHVyZUZpbHRlci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJzL0ZpbHRlci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJzL0ZyZWVQYWlkRmlsdGVyLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlcnMvUHJvbW9Db2RlRmlsdGVyLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlcnMvU2VhcmNoLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlcnMvU29ydC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJzL1N0YXR1c0ZpbHRlci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJzL1RpY2tldFR5cGVGaWx0ZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVycy9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9Gb3JtRm9vdGVyL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0xhYmVscy9FcnJvckxhYmVsLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0xvYWRlci9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9NeU9yZGVyc1RpY2tldHMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvTm9UaWNrZXRzRm91bmQvVGlja2V0c0ljb24uanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvTm9UaWNrZXRzRm91bmQvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJTdW1tYXJ5L09yZGVyU3VtbWFyeVRhYmxlLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyU3VtbWFyeS9SZWZ1bmRFbWFpbFN1cHBvcnQuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJTdW1tYXJ5L2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyc0xpc3QvQXNzaWduZWRUb01lLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyc0xpc3QvQXR0ZW5kZWVTdGF0dXMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJzTGlzdC9PcmRlckxpc3RJdGVtLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyc0xpc3QvT3JkZXJMaXN0VGlja2V0cy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlcnNMaXN0L09yZGVyc0xpc3REZXNrdG9wTW9iaWxlLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyc0xpc3QvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvUmVmdW5kUmVxdWVzdHMvUmVmdW5kRGV0YWlscy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9SZWZ1bmRSZXF1ZXN0cy9SZWZ1bmRSZXF1ZXN0ZWRUaWNrZXQuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvUmVmdW5kUmVxdWVzdHMvUmVmdW5kU3RhdHVzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1JlZnVuZFJlcXVlc3RzL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1JpZ2h0RHJhd2VyL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1N1bW1pdEhlYWRlci9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UYWJXcmFwcGVyL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldEFzc2lnbi9jb21wb25lbnRzL0Fzc2lnbk9wdGlvbnMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0QXNzaWduL2NvbXBvbmVudHMvRGVsZWdhdGVGb3JtL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldEFzc2lnbi9jb21wb25lbnRzL0hlYWRlci9Bc3NpZ25IZWFkZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0QXNzaWduL2NvbXBvbmVudHMvSGVhZGVyL1JlYXNzaWduSGVhZGVyLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldEFzc2lnbi9jb21wb25lbnRzL1JlYXNzaWduRm9ybS9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXRBc3NpZ24vaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvQ29tcGFueUZpZWxkL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb21wb25lbnRzL1JlZ2lzdHJhdGlvbkRpc2NsYWltZXIvUmVnaXN0cmF0aW9uRGlzY2xhaW1lci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29tcG9uZW50cy9UaWNrZXREZXRhaWxIZWFkZXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvVGlja2V0Rm9ybS9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29tcG9uZW50cy9UaWNrZXRPd25lckZpZWxkcy9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29uc3RhbnRzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXRTdGF0dXMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvV2lkZ2V0VGFicy9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9XaWRnZXRXcmFwcGVyL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9ob29rcy91c2VHZXRUaWNrZXQuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2hvb2tzL3VzZVNjcm9sbFRvRXJyb3IuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2hvb2tzL3VzZVRpY2tldERldGFpbHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2kxOG4vaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL3JlZHVjZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL3N0b3JlLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy91dGlscy9hdXRoLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy91dGlscy9jb25zdGFudHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL3V0aWxzL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy91dGlscy9zdW1taXRVdGlscy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvdXRpbHMvdGlja2V0VXRpbHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvQmFkZ2VGZWF0dXJlSWNvbi9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvQ29weVRleHQvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlcnMvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0Zvcm1Gb290ZXIvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0xhYmVscy9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvTXlPcmRlcnNUaWNrZXRzL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9Ob1RpY2tldHNGb3VuZC9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJTdW1tYXJ5L3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlcnNMaXN0L3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9SZWZ1bmRSZXF1ZXN0cy9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvUmlnaHREcmF3ZXIvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1N1bW1pdEhlYWRlci9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0QXNzaWduL2NvbXBvbmVudHMvQXNzaWduT3B0aW9ucy9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0QXNzaWduL2NvbXBvbmVudHMvSGVhZGVyL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXRBc3NpZ24vc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb21wb25lbnRzL1JlZ2lzdHJhdGlvbkRpc2NsYWltZXIvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb21wb25lbnRzL1RpY2tldE93bmVyRmllbGRzL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldFN0YXR1cy9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvV2lkZ2V0VGFicy9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvV2lkZ2V0V3JhcHBlci9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvb2JqZWN0V2l0aG91dFByb3BlcnRpZXNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbC9DaGVja0NpcmNsZVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ2xvc2VcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL0NvbnRlbnRDb3B5XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbC9FcnJvclwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRXhwYW5kTW9yZVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRmlsdGVyTGlzdFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvSW1wb3J0RXhwb3J0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbC9JbmZvXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbC9TZWFyY2hcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9CdXR0b25cIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL0NoZWNrYm94XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9EaWFsb2dcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL0RpYWxvZ0FjdGlvbnNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL0RpYWxvZ0NvbnRlbnRcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL0RpYWxvZ0NvbnRlbnRUZXh0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9EaWFsb2dUaXRsZVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvRGl2aWRlclwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvSW5wdXRCYXNlXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9TdGFja1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvVGFiXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9UYWJzXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9Ub29sdGlwXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9zdHlsZXNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL3VzZU1lZGlhUXVlcnlcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAcmVkdXhqcy90b29sa2l0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQHNlbnRyeS9yZWFjdFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcImZvcm1pa1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcImkxOG5leHRcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJpMThuZXh0LWJyb3dzZXItbGFuZ3VhZ2VkZXRlY3RvclwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcImlkdG9rZW4tdmVyaWZpZXJcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJtb21lbnQtdGltZXpvbmVcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL2NvbXBvbmVudHMvcmF3LWh0bWxcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3NlY3VyaXR5L2FjdGlvbnNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3NlY3VyaXR5L21ldGhvZHNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL2FjdGlvbnNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL21ldGhvZHNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL3F1ZXJ5LWFjdGlvbnNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJwLWxpbWl0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicHJvcC10eXBlc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlYWN0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVhY3QtaTE4bmV4dFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlYWN0LWluZmluaXRlLXNjcm9sbC1jb21wb25lbnRcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWFjdC1xci1jb2RlXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVhY3QtcmVkdXhcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWFjdC9qc3gtcnVudGltZVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlZHV4XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVkdXgtcGVyc2lzdFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlZHV4LXBlcnNpc3QvaW50ZWdyYXRpb24vcmVhY3RcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWR1eC1wZXJzaXN0L2xpYi9zdG9yYWdlXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwieXVwXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L3dlYnBhY2svYm9vdHN0cmFwIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC93ZWJwYWNrL3J1bnRpbWUvY29tcGF0IGdldCBkZWZhdWx0IGV4cG9ydCIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvd2VicGFjay9ydW50aW1lL2RlZmluZSBwcm9wZXJ0eSBnZXR0ZXJzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC93ZWJwYWNrL3J1bnRpbWUvaGFzT3duUHJvcGVydHkgc2hvcnRoYW5kIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC93ZWJwYWNrL3J1bnRpbWUvbWFrZSBuYW1lc3BhY2Ugb2JqZWN0Iiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uIHdlYnBhY2tVbml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uKHJvb3QsIGZhY3RvcnkpIHtcblx0aWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnKVxuXHRcdG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeSgpO1xuXHRlbHNlIGlmKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZClcblx0XHRkZWZpbmUoXCJteS1vcmRlcnMtdGlja2V0cy13aWRnZXRcIiwgW10sIGZhY3RvcnkpO1xuXHRlbHNlIGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0Jylcblx0XHRleHBvcnRzW1wibXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0XCJdID0gZmFjdG9yeSgpO1xuXHRlbHNlXG5cdFx0cm9vdFtcIm15LW9yZGVycy10aWNrZXRzLXdpZGdldFwiXSA9IGZhY3RvcnkoKTtcbn0pKHRoaXMsICgpID0+IHtcbnJldHVybiAiLCJpbXBvcnQge1xuICBhdXRoRXJyb3JIYW5kbGVyLFxuICBjcmVhdGVBY3Rpb24sXG4gIGRlbGV0ZVJlcXVlc3QsXG4gIGdldFJlcXVlc3QsXG4gIHB1dFJlcXVlc3QsXG4gIHN0YXJ0TG9hZGluZyxcbiAgc3RvcExvYWRpbmdcbn0gZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvYWN0aW9uc1wiO1xuaW1wb3J0IHBMaW1pdCBmcm9tIFwicC1saW1pdFwiO1xuaW1wb3J0IHsgZ2V0SWRUb2tlbiB9IGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3NlY3VyaXR5L21ldGhvZHNcIjtcbmltcG9ydCB7IG9iamVjdFRvUXVlcnlTdHJpbmcgfSBmcm9tIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9tZXRob2RzXCI7XG5pbXBvcnQgSWRUb2tlblZlcmlmaWVyIGZyb20gXCJpZHRva2VuLXZlcmlmaWVyXCI7XG5pbXBvcnQgaTE4biBmcm9tIFwiaTE4bmV4dFwiO1xuaW1wb3J0IHsgYXV0aFByb21pc2VSZWplY3QsIGdldEFjY2Vzc1Rva2VuU2FmZWx5IH0gZnJvbSBcIi4vdXRpbHMvYXV0aFwiO1xuaW1wb3J0IHtcbiAgREVGQVVMVF9JVEVNU19QRVJfUEFHRSxcbiAgRVJST1JfQ09ERVMsXG4gIEZJRlRZX1BFUl9QQUdFLFxuICBGSUxURVJfQUNUSU9OLFxuICBGSVJTVF9QQUdFLFxuICBQUk9NSVNFX0JBVENIX0xJTUlUXG59IGZyb20gXCIuL3V0aWxzL2NvbnN0YW50c1wiO1xuXG5leHBvcnQgY29uc3QgUkVTRVRfU1RBVEUgPSBcIlJFU0VUX1NUQVRFXCI7XG5leHBvcnQgY29uc3QgUkVTRVRfRklMVEVSID0gXCJSRVNFVF9GSUxURVJcIjtcbmV4cG9ydCBjb25zdCBSRVNFVF9BUElfRVJST1IgPSBcIlJFU0VUX0FQSV9FUlJPUlwiO1xuZXhwb3J0IGNvbnN0IFNFVF9TVEFURSA9IFwiU0VUX1NUQVRFXCI7XG5leHBvcnQgY29uc3QgU0VUX0FQSV9FUlJPUiA9IFwiU0VUX0FQSV9FUlJPUlwiO1xuZXhwb3J0IGNvbnN0IENIQU5HRV9GSUxURVIgPSBcIkNIQU5HRV9GSUxURVJcIjtcbmV4cG9ydCBjb25zdCBDSEFOR0VfU09SVCA9IFwiQ0hBTkdFX1NPUlRcIjtcblxuLy8gT1JERVJTIENPTlNUU1xuZXhwb3J0IGNvbnN0IEdFVF9VU0VSX09SREVSUyA9IFwiR0VUX09SREVSU1wiO1xuZXhwb3J0IGNvbnN0IFJFRlVORF9PUkRFUiA9IFwiUkVGVU5EX09SREVSXCI7XG5leHBvcnQgY29uc3QgU0VUX0FDVElWRV9PUkRFUl9JRCA9IFwiU0VUX0FDVElWRV9PUkRFUl9JRFwiO1xuZXhwb3J0IGNvbnN0IEZJTFRFUl9VU0VSX09SREVSUyA9IFwiRklMVEVSX1VTRVJfT1JERVJTXCI7XG5cbi8vIFRJQ0tFVFMgQ09OU1RTXG5leHBvcnQgY29uc3QgR0VUX01ZX0FTU0lHTkVEX1RJQ0tFVFMgPSBcIkdFVF9NWV9BU1NJR05FRF9USUNLRVRTXCI7XG5leHBvcnQgY29uc3QgVVBEQVRFX1RJQ0tFVCA9IFwiVVBEQVRFX1RJQ0tFVFwiO1xuZXhwb3J0IGNvbnN0IFJFU0VUX1RJQ0tFVCA9IFwiUkVTRVRfVElDS0VUXCI7XG5leHBvcnQgY29uc3QgUkVDRUlWRV9USUNLRVQgPSBcIlJFQ0VJVkVfVElDS0VUXCI7XG5leHBvcnQgY29uc3QgUkVNT1ZFX1RJQ0tFVF9BVFRFTkRFRSA9IFwiUkVNT1ZFX1RJQ0tFVF9BVFRFTkRFRVwiO1xuZXhwb3J0IGNvbnN0IEFTU0lHTl9USUNLRVQgPSBcIkFTU0lHTl9USUNLRVRcIjtcbmV4cG9ydCBjb25zdCBERUxFR0FURV9USUNLRVQgPSBcIkRFTEVHQVRFX1RJQ0tFVFwiO1xuZXhwb3J0IGNvbnN0IFJFRlVORF9USUNLRVQgPSBcIlJFRlVORF9USUNLRVRcIjtcbmV4cG9ydCBjb25zdCBSRVNFTkRfTk9USUZJQ0FUSU9OID0gXCJSRVNFTkRfTk9USUZJQ0FUSU9OXCI7XG5leHBvcnQgY29uc3QgR0VUX1RJQ0tFVFNfQllfT1JERVIgPSBcIkdFVF9USUNLRVRTX0JZX09SREVSXCI7XG5leHBvcnQgY29uc3QgR0VUX1RJQ0tFVFNfQllfT1JERVJfRVJST1IgPSBcIkdFVF9USUNLRVRTX0JZX09SREVSX0VSUk9SXCI7XG5leHBvcnQgY29uc3QgR0VUX09SREVSX1RJQ0tFVF9ERVRBSUxTID0gXCJHRVRfT1JERVJfVElDS0VUX0RFVEFJTFNcIjtcbmV4cG9ydCBjb25zdCBHRVRfVElDS0VUX0RFVEFJTFMgPSBcIkdFVF9USUNLRVRfREVUQUlMU1wiO1xuZXhwb3J0IGNvbnN0IFJFQ0VJVkVfRVhUUkFfUVVFU1RJT05TID0gXCJSRUNFSVZFX0VYVFJBX1FVRVNUSU9OU1wiO1xuZXhwb3J0IGNvbnN0IFRJQ0tFVF9BVFRFTkRFRV9LRVlTID0ge1xuICBlbWFpbDogXCJhdHRlbmRlZV9lbWFpbFwiLFxuICBmaXJzdE5hbWU6IFwiYXR0ZW5kZWVfZmlyc3RfbmFtZVwiLFxuICBsYXN0TmFtZTogXCJhdHRlbmRlZV9sYXN0X25hbWVcIixcbiAgY29tcGFueTogXCJhdHRlbmRlZV9jb21wYW55XCIsXG4gIGRpc2NsYWltZXJBY2NlcHRlZDogXCJkaXNjbGFpbWVyX2FjY2VwdGVkXCIsXG4gIGV4dHJhUXVlc3Rpb25zOiBcImV4dHJhX3F1ZXN0aW9uc1wiXG59O1xuZXhwb3J0IGNvbnN0IFVQREFURV9USUNLRVRTX1JFRlVORF9SRVFVRVNURUQgPVxuICBcIlVQREFURV9USUNLRVRTX1JFRlVORF9SRVFVRVNURURcIjtcblxuLy8gVVNFUiBDT05UU1xuZXhwb3J0IGNvbnN0IFNUQVJUX0xPQURJTkdfSURQX1BST0ZJTEUgPSBcIlNUQVJUX0xPQURJTkdfSURQX1BST0ZJTEVcIjtcbmV4cG9ydCBjb25zdCBTVE9QX0xPQURJTkdfSURQX1BST0ZJTEUgPSBcIlNUT1BfTE9BRElOR19JRFBfUFJPRklMRVwiO1xuZXhwb3J0IGNvbnN0IFVQREFURV9JRFBfUFJPRklMRSA9IFwiVVBEQVRFX0lEUF9QUk9GSUxFXCI7XG5leHBvcnQgY29uc3QgU0VUX1VTRVIgPSBcIlNFVF9VU0VSXCI7XG5cbi8vIFNVTU1JVCBDT05TVFNcbmV4cG9ydCBjb25zdCBTRVRfU1VNTUlUID0gXCJTRVRfU1VNTUlUXCI7XG5leHBvcnQgY29uc3QgR0VUX01BSU5fRVhUUkFfUVVFU1RJT05TID0gXCJHRVRfTUFJTl9FWFRSQV9RVUVTVElPTlNcIjtcbmV4cG9ydCBjb25zdCBSRUNFSVZFX01BUktFVElOR19TRVRUSU5HUyA9IFwiUkVDRUlWRV9NQVJLRVRJTkdfU0VUVElOR1NcIjtcbmV4cG9ydCBjb25zdCBDTEVBUl9NQVJLRVRJTkdfU0VUVElOR1MgPSBcIkNMRUFSX01BUktFVElOR19TRVRUSU5HU1wiO1xuXG5leHBvcnQgY29uc3QgcmVzZXRUaWNrZXQgPSAoKSA9PiAoZGlzcGF0Y2gpID0+IHtcbiAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKFJFU0VUX1RJQ0tFVCkoe30pKTtcbn07XG5cbmV4cG9ydCBjb25zdCByZXNldFN0YXRlID0gKCkgPT4gKGRpc3BhdGNoKSA9PiB7XG4gIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihSRVNFVF9TVEFURSkoe30pKTtcbn07XG5cbmV4cG9ydCBjb25zdCByZXNldEZpbHRlciA9ICgpID0+IChkaXNwYXRjaCkgPT4ge1xuICBkaXNwYXRjaChjcmVhdGVBY3Rpb24oUkVTRVRfRklMVEVSKSh7fSkpO1xufTtcblxuZXhwb3J0IGNvbnN0IHJlc2V0RXJyb3IgPSAoKSA9PiAoZGlzcGF0Y2gpID0+IHtcbiAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKFJFU0VUX0FQSV9FUlJPUikoe30pKTtcbn07XG5cbmV4cG9ydCBjb25zdCBzZXRSZWR1Y2VyU3RhdGUgPSAoc3VtbWl0LCB1c2VyKSA9PiAoZGlzcGF0Y2gpID0+IHtcbiAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKFNFVF9TVEFURSkoeyBzdW1taXQsIHVzZXIgfSkpO1xufTtcblxuLy8gRklMVEVSIC8gU09SVCBDT05TVEFOVFNcbmV4cG9ydCBjb25zdCBGSUxURVJfVkFSX0RBVEUgPSBcIkZJTFRFUl9WQVJfREFURVwiO1xuZXhwb3J0IGNvbnN0IEZJTFRFUl9WQVJfQkFER0VfRkVBVFVSRSA9IFwiRklMVEVSX1ZBUl9CQURHRV9GRUFUVVJFXCI7XG5leHBvcnQgY29uc3QgRklMVEVSX1ZBUl9USUNLRVRfVFlQRSA9IFwiRklMVEVSX1ZBUl9USUNLRVRfVFlQRVwiO1xuZXhwb3J0IGNvbnN0IEZJTFRFUl9WQVJfVElDS0VUX0FTU0lHTkVEID0gXCJGSUxURVJfVkFSX1RJQ0tFVF9BU1NJR05FRFwiO1xuZXhwb3J0IGNvbnN0IEZJTFRFUl9WQVJfT1dORVJfU1RBVFVTID0gXCJGSUxURVJfVkFSX09XTkVSX1NUQVRVU1wiO1xuZXhwb3J0IGNvbnN0IEZJTFRFUl9WQVJfUFJPTU9DT0RFID0gXCJGSUxURVJfVkFSX1BST01PQ09ERVwiO1xuZXhwb3J0IGNvbnN0IEZJTFRFUl9WQVJfRlJFRV9QQUlEID0gXCJGSUxURVJfVkFSX0ZSRUVfUEFJRFwiO1xuZXhwb3J0IGNvbnN0IEZJTFRFUl9WQVJfT1JERVJfTlVNQkVSID0gXCJGSUxURVJfVkFSX09SREVSX05VTUJFUlwiO1xuXG4vLyBGSUxURVIgLyBTT1JUIEFDVElPTlNcbmV4cG9ydCBjb25zdCBjaGFuZ2VGaWx0ZXIgPSAoZmlsdGVyKSA9PiAoZGlzcGF0Y2gpID0+IHtcbiAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKENIQU5HRV9GSUxURVIpKGZpbHRlcikpO1xufTtcblxuZXhwb3J0IGNvbnN0IGNoYW5nZVNvcnQgPSAoc29ydCkgPT4gKGRpc3BhdGNoKSA9PiB7XG4gIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihDSEFOR0VfU09SVCkoc29ydCkpO1xufTtcblxuLy8gRklMVEVSL1NPUlQgUEFSU0VcbmNvbnN0IHBhcnNlRmlsdGVyID0gKGZpbHRlck9iaiwgZmlsdGVyQWN0aW9uKSA9PiB7XG4gIGNvbnN0IGZpbHRlciA9IFtdO1xuICBpZiAoZmlsdGVyT2JqLkZJTFRFUl9WQVJfREFURSkge1xuICAgIGZpbHRlci5wdXNoKGBjcmVhdGVkW10ke2ZpbHRlck9iai5sb3dlcn0mJiR7ZmlsdGVyT2JqLnVwcGVyfWApO1xuICB9XG4gIGlmIChcbiAgICBmaWx0ZXJPYmouRklMVEVSX1ZBUl9CQURHRV9GRUFUVVJFICYmXG4gICAgZmlsdGVyT2JqLkZJTFRFUl9WQVJfQkFER0VfRkVBVFVSRS5sZW5ndGggPiAwXG4gICkge1xuICAgIGNvbnN0IGZpbHRlck5hbWUgPVxuICAgICAgZmlsdGVyQWN0aW9uID09PSBGSUxURVJfQUNUSU9OLk9SREVSU1xuICAgICAgICA/IFwidGlja2V0c19iYWRnZV9mZWF0dXJlc19pZFwiXG4gICAgICAgIDogXCJiYWRnZV9mZWF0dXJlc19pZFwiO1xuICAgIGZpbHRlci5wdXNoKFxuICAgICAgYCR7ZmlsdGVyTmFtZX09PSR7ZmlsdGVyT2JqLkZJTFRFUl9WQVJfQkFER0VfRkVBVFVSRS5qb2luKFwifHxcIil9YFxuICAgICk7XG4gIH1cbiAgaWYgKFxuICAgIGZpbHRlck9iai5GSUxURVJfVkFSX1RJQ0tFVF9UWVBFICYmXG4gICAgZmlsdGVyT2JqLkZJTFRFUl9WQVJfVElDS0VUX1RZUEUubGVuZ3RoID4gMFxuICApIHtcbiAgICBjb25zdCBmaWx0ZXJOYW1lID1cbiAgICAgIGZpbHRlckFjdGlvbiA9PT0gRklMVEVSX0FDVElPTi5PUkRFUlNcbiAgICAgICAgPyBcInRpY2tldHNfdHlwZV9pZFwiXG4gICAgICAgIDogXCJ0aWNrZXRfdHlwZV9pZFwiO1xuICAgIGZpbHRlci5wdXNoKFxuICAgICAgYCR7ZmlsdGVyTmFtZX09PSR7ZmlsdGVyT2JqLkZJTFRFUl9WQVJfVElDS0VUX1RZUEUuam9pbihcInx8XCIpfWBcbiAgICApO1xuICB9XG4gIGlmIChmaWx0ZXJPYmouRklMVEVSX1ZBUl9USUNLRVRfQVNTSUdORUQpIHtcbiAgICBjb25zdCBmaWx0ZXJOYW1lID1cbiAgICAgIGZpbHRlckFjdGlvbiA9PT0gRklMVEVSX0FDVElPTi5PUkRFUlNcbiAgICAgICAgPyBcInRpY2tldHNfYXNzaWduZWRfdG9cIlxuICAgICAgICA6IFwiYXNzaWduZWRfdG9cIjtcbiAgICBmaWx0ZXIucHVzaChgJHtmaWx0ZXJOYW1lfT09JHtmaWx0ZXJPYmouRklMVEVSX1ZBUl9USUNLRVRfQVNTSUdORUR9YCk7XG4gIH1cbiAgaWYgKGZpbHRlck9iai5GSUxURVJfVkFSX09XTkVSX1NUQVRVUykge1xuICAgIGNvbnN0IGZpbHRlck5hbWUgPVxuICAgICAgZmlsdGVyQWN0aW9uID09PSBGSUxURVJfQUNUSU9OLk9SREVSU1xuICAgICAgICA/IFwidGlja2V0c19vd25lcl9zdGF0dXNcIlxuICAgICAgICA6IFwib3duZXJfc3RhdHVzXCI7XG4gICAgZmlsdGVyLnB1c2goYCR7ZmlsdGVyTmFtZX09PSR7ZmlsdGVyT2JqLkZJTFRFUl9WQVJfT1dORVJfU1RBVFVTfWApO1xuICB9XG4gIGlmIChmaWx0ZXJPYmouRklMVEVSX1ZBUl9GUkVFX1BBSUQpIHtcbiAgICBjb25zdCBmaWx0ZXJOYW1lID1cbiAgICAgIGZpbHRlckFjdGlvbiA9PT0gRklMVEVSX0FDVElPTi5PUkRFUlMgPyBcImFtb3VudFwiIDogXCJmaW5hbF9hbW91bnRcIjtcbiAgICBmaWx0ZXIucHVzaChcbiAgICAgIGAke2ZpbHRlck5hbWV9JHtmaWx0ZXJPYmouRklMVEVSX1ZBUl9GUkVFX1BBSUQgPT09IFwiRnJlZVwiID8gXCI9PTBcIiA6IFwiPjBcIn1gXG4gICAgKTtcbiAgfVxuICBpZiAoZmlsdGVyT2JqLkZJTFRFUl9WQVJfUFJPTU9DT0RFKSB7XG4gICAgY29uc3QgZmlsdGVyTmFtZSA9XG4gICAgICBmaWx0ZXJBY3Rpb24gPT09IEZJTFRFUl9BQ1RJT04uT1JERVJTXG4gICAgICAgID8gXCJ0aWNrZXRzX3Byb21vX2NvZGVcIlxuICAgICAgICA6IFwicHJvbW9fY29kZVwiO1xuICAgIGZpbHRlci5wdXNoKGAke2ZpbHRlck5hbWV9PUAke2ZpbHRlck9iai5GSUxURVJfVkFSX1BST01PQ09ERX1gKTtcbiAgfVxuICBpZiAoZmlsdGVyT2JqLkZJTFRFUl9WQVJfT1JERVJfTlVNQkVSKSB7XG4gICAgbGV0IGlucHV0RmlsdGVycyA9IFwiXCI7XG5cbiAgICBzd2l0Y2ggKGZpbHRlckFjdGlvbikge1xuICAgICAgY2FzZSBGSUxURVJfQUNUSU9OLk9SREVSUzoge1xuICAgICAgICBpbnB1dEZpbHRlcnMgPSBgbnVtYmVyPUAke2ZpbHRlck9iai5GSUxURVJfVkFSX09SREVSX05VTUJFUn0sdGlja2V0c19vd25lcl9lbWFpbD1AJHtmaWx0ZXJPYmouRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVJ9LHRpY2tldHNfbnVtYmVyPUAke2ZpbHRlck9iai5GSUxURVJfVkFSX09SREVSX05VTUJFUn1gO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgRklMVEVSX0FDVElPTi5USUNLRVRTX0JZX09SREVSUzoge1xuICAgICAgICBpbnB1dEZpbHRlcnMgPSBgbnVtYmVyPUAke2ZpbHRlck9iai5GSUxURVJfVkFSX09SREVSX05VTUJFUn0sb3duZXJfZW1haWw9QCR7ZmlsdGVyT2JqLkZJTFRFUl9WQVJfT1JERVJfTlVNQkVSfWA7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBGSUxURVJfQUNUSU9OLkVYVEVSTkFMX1RJQ0tFVFM6IHtcbiAgICAgICAgaW5wdXRGaWx0ZXJzID0gYG9yZGVyX251bWJlcj1AJHtmaWx0ZXJPYmouRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVJ9LG51bWJlcj1AJHtmaWx0ZXJPYmouRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVJ9LG9yZGVyX293bmVyX2VtYWlsPUAke2ZpbHRlck9iai5GSUxURVJfVkFSX09SREVSX05VTUJFUn1gO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBmaWx0ZXIucHVzaChpbnB1dEZpbHRlcnMpO1xuICB9XG4gIHJldHVybiBmaWx0ZXI7XG59O1xuXG5jb25zdCBnZXRTb3J0RGlyZWN0aW9uID0gKGRpcmVjdGlvbikgPT4gKGRpcmVjdGlvbiA9PT0gXCJhc2NcIiA/IFwiK1wiIDogXCItXCIpO1xuXG4vLyBwYXlsb2FkOiB7IGh0dHBDb2RlLCB0aXRsZSwgaHRtbDogY29udGVudCwgdHlwZSB9XG5jb25zdCBlcnJvckhhbmRsZXJOb3RpZnkgPSAocGF5bG9hZCwgY2FsbGJhY2spID0+IChkaXNwYXRjaCkgPT4ge1xuICBkaXNwYXRjaChjcmVhdGVBY3Rpb24oU0VUX0FQSV9FUlJPUikocGF5bG9hZCkpO1xuICBpZiAoY2FsbGJhY2spIGNhbGxiYWNrKCk7XG59O1xuXG5jb25zdCBjdXN0b21BdXRoRXJyb3JIYW5kbGVyID0gKGVyciwgcmVzKSA9PiAoZGlzcGF0Y2gpID0+IHtcbiAgZGlzcGF0Y2goYXV0aEVycm9ySGFuZGxlcihlcnIsIHJlcywgZXJyb3JIYW5kbGVyTm90aWZ5KSk7XG59O1xuXG5jb25zdCBjdXN0b21GZXRjaEVycm9ySGFuZGxlciA9IChyZXNwb25zZSkgPT4gKGRpc3BhdGNoKSA9PiB7XG4gIGNvbnN0IGNvZGUgPSByZXNwb25zZS5zdGF0dXM7XG4gIGxldCBtc2c7XG4gIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICBzd2l0Y2ggKGNvZGUpIHtcbiAgICBjYXNlIEVSUk9SX0NPREVTW1wiNDAzXCJdOlxuICAgICAgbXNnID0gaTE4bi50KFwiZXJyb3JzLnVzZXJfbm90X2F1dGh6XCIpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBFUlJPUl9DT0RFU1tcIjQwMVwiXTpcbiAgICAgIG1zZyA9IGkxOG4udChcImVycm9ycy5zZXNzaW9uX2V4cGlyZWRcIik7XG4gICAgICBicmVhaztcbiAgICBjYXNlIEVSUk9SX0NPREVTW1wiNDEyXCJdOlxuICAgICAgbXNnID0gXCJcIjtcbiAgICAgIE9iamVjdC5lbnRyaWVzKHJlc3BvbnNlLmVycm9ycykuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICAgIGlmIChOdW1iZXIuaXNOYU4oa2V5KSkge1xuICAgICAgICAgIG1zZyA9IGAke21zZ30gJHtrZXl9OiBgO1xuICAgICAgICB9XG5cbiAgICAgICAgbXNnID0gYCR7bXNnfSAke3ZhbHVlfSA8YnI+YDtcbiAgICAgIH0pO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBFUlJPUl9DT0RFU1tcIjUwMFwiXTpcbiAgICAgIG1zZyA9IGkxOG4udChcImVycm9ycy5zZXJ2ZXJfZXJyb3JcIik7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgbXNnID0gcmVzcG9uc2Uuc3RhdHVzVGV4dDtcbiAgfVxuXG4gIGRpc3BhdGNoKGVycm9ySGFuZGxlck5vdGlmeSh7IHRpdGxlOiBpMThuLnQoXCJlcnJvcnMuZXJyb3JcIiksIGh0bWw6IG1zZyB9KSk7XG59O1xuXG4vLyBPUkRFUlMgQUNUSU9OU1xuZXhwb3J0IGNvbnN0IGdldFVzZXJPcmRlcnMgPVxuICAoXG4gICAge1xuICAgICAgcGFnZSA9IEZJUlNUX1BBR0UsXG4gICAgICBwZXJQYWdlID0gREVGQVVMVF9JVEVNU19QRVJfUEFHRSxcbiAgICAgIGZpbHRlciA9IHt9LFxuICAgICAgc29ydCA9IHt9XG4gICAgfSxcbiAgICBza2lwTG9hZGluZ1xuICApID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgd2lkZ2V0U3RhdGU6IHsgc3VtbWl0IH1cbiAgICB9ID0gZ2V0U3RhdGUoKTtcblxuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKTtcblxuICAgIGlmICghYWNjZXNzVG9rZW4pIHJldHVybiBhdXRoUHJvbWlzZVJlamVjdCgpO1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgICBvcmRlcjogXCItY3JlYXRlZFwiLFxuICAgICAgXCJmaWx0ZXJbXVwiOiBbXCJzdGF0dXM9PVBhaWRcIl0sXG4gICAgICByZWxhdGlvbnM6IFwiYXBwbGllZF90YXhlcyxub25lXCIsXG4gICAgICBmaWVsZHM6XG4gICAgICAgIFwiaWQsY3JlYXRlZCxudW1iZXIsYW1vdW50LGN1cnJlbmN5LHRheGVzX2Ftb3VudCxkaXNjb3VudF9hbW91bnQsdGlja2V0c19leGNlcnB0X2J5X3RpY2tldF90eXBlLHJlZnVuZGVkX2Ftb3VudCxyYXdfYW1vdW50LGFwcGxpZWRfdGF4ZXMuaWQsYXBwbGllZF90YXhlcy5uYW1lLGFwcGxpZWRfdGF4ZXMuYW1vdW50XCIsXG4gICAgICBwYWdlLFxuICAgICAgcGVyX3BhZ2U6IHBlclBhZ2VcbiAgICB9O1xuXG4gICAgaWYgKE9iamVjdC5rZXlzKGZpbHRlcikubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgZmlsdGVycyA9IHBhcnNlRmlsdGVyKGZpbHRlciwgRklMVEVSX0FDVElPTi5PUkRFUlMpO1xuICAgICAgcGFyYW1zW1wiZmlsdGVyW11cIl0gPSBbLi4ucGFyYW1zW1wiZmlsdGVyW11cIl0sIC4uLmZpbHRlcnNdO1xuICAgIH1cbiAgICBpZiAoT2JqZWN0LmtleXMoc29ydCkubGVuZ3RoID4gMCkge1xuICAgICAgcGFyYW1zLm9yZGVyID0gYCR7Z2V0U29ydERpcmVjdGlvbihzb3J0LmRpcmVjdGlvbil9JHtzb3J0Lm5hbWV9YDtcbiAgICB9XG5cbiAgICByZXR1cm4gZ2V0UmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oR0VUX1VTRVJfT1JERVJTKSxcbiAgICAgIGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzLyR7c3VtbWl0LmlkfS9vcmRlcnMvbWVgLFxuICAgICAgY3VzdG9tQXV0aEVycm9ySGFuZGxlcixcbiAgICAgIHsgZmlsdGVyLCBzb3J0IH1cbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpXG4gICAgICAudGhlbigocGF5bG9hZCkgPT4gcGF5bG9hZClcbiAgICAgIC5jYXRjaCgoZSkgPT4gZSlcbiAgICAgIC5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgaWYgKCFza2lwTG9hZGluZykgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICB9KTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IHNldEFjdGl2ZU9yZGVySWQgPSAob3JkZXJJZCkgPT4gYXN5bmMgKGRpc3BhdGNoKSA9PlxuICBkaXNwYXRjaChjcmVhdGVBY3Rpb24oU0VUX0FDVElWRV9PUkRFUl9JRCkob3JkZXJJZCkpO1xuXG4vLyBVU0VSIEFDVElPTlNcbmV4cG9ydCBjb25zdCBzZXRVc2VyID0gKHVzZXIpID0+IChkaXNwYXRjaCkgPT5cbiAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKFNFVF9VU0VSKSh1c2VyKSk7XG5cbi8vIFRJQ0tFVCBBQ1RJT05TXG5cbmV4cG9ydCBjb25zdCBnZXRVc2VyVGlja2V0cyA9XG4gIChcbiAgICB7XG4gICAgICBwYWdlID0gRklSU1RfUEFHRSxcbiAgICAgIHBlclBhZ2UgPSBERUZBVUxUX0lURU1TX1BFUl9QQUdFLFxuICAgICAgZmlsdGVyID0ge30sXG4gICAgICBzb3J0ID0ge31cbiAgICB9LFxuICAgIHNraXBMb2FkaW5nXG4gICkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCB7XG4gICAgICB3aWRnZXRTdGF0ZTogeyBzdW1taXQsIHVzZXIgfVxuICAgIH0gPSBnZXRTdGF0ZSgpO1xuICAgIGNvbnN0IHsgdXNlclByb2ZpbGUgfSA9IHVzZXI7XG4gICAgaWYgKCFzdW1taXQpIHJldHVybiBQcm9taXNlLnJlamVjdCgpO1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKTtcblxuICAgIGlmICghYWNjZXNzVG9rZW4pIHJldHVybiBhdXRoUHJvbWlzZVJlamVjdCgpO1xuXG4gICAgY29uc3QgZmllbGRzID0gW1xuICAgICAgXCJvcmRlci5pZFwiLFxuICAgICAgXCJvcmRlci5vd25lcl9maXJzdF9uYW1lXCIsXG4gICAgICBcIm9yZGVyLm93bmVyX2xhc3RfbmFtZVwiLFxuICAgICAgXCJvcmRlci5vd25lcl9lbWFpbFwiLFxuICAgICAgXCJvd25lci5pZFwiLFxuICAgICAgXCJvd25lci5lbWFpbFwiLFxuICAgICAgXCJvd25lci5maXJzdF9uYW1lXCIsXG4gICAgICBcIm93bmVyLmxhc3RfbmFtZVwiLFxuICAgICAgXCJvd25lci5zdGF0dXNcIixcbiAgICAgIFwiYmFkZ2Uubm9uZVwiXG4gICAgXTtcbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIFwiZmlsdGVyW11cIjogW1wic3RhdHVzPT1QYWlkXCIsIGBvcmRlcl9vd25lcl9pZDw+JHt1c2VyUHJvZmlsZS5pZH1gXSxcbiAgICAgIGV4cGFuZDogXCJvcmRlcixvd25lcix0aWNrZXRfdHlwZSxiYWRnZSxiYWRnZS5mZWF0dXJlc1wiLFxuICAgICAgb3JkZXI6IFwiLWlkXCIsXG4gICAgICBmaWVsZHM6IGZpZWxkcy5qb2luKFwiLFwiKSxcbiAgICAgIHJlbGF0aW9uczogXCJub25lLGJhZGdlLmZlYXR1cmVzXCIsXG4gICAgICBwYWdlLFxuICAgICAgcGVyX3BhZ2U6IHBlclBhZ2VcbiAgICB9O1xuICAgIGlmIChPYmplY3Qua2V5cyhmaWx0ZXIpLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGZpbHRlcnMgPSBwYXJzZUZpbHRlcihmaWx0ZXIsIEZJTFRFUl9BQ1RJT04uRVhURVJOQUxfVElDS0VUUyk7XG4gICAgICBwYXJhbXNbXCJmaWx0ZXJbXVwiXSA9IFsuLi5wYXJhbXNbXCJmaWx0ZXJbXVwiXSwgLi4uZmlsdGVyc107XG4gICAgfVxuICAgIGlmIChPYmplY3Qua2V5cyhzb3J0KS5sZW5ndGggPiAwKSB7XG4gICAgICBwYXJhbXMub3JkZXIgPSBgJHtnZXRTb3J0RGlyZWN0aW9uKHNvcnQuZGlyZWN0aW9uKX0ke3NvcnQubmFtZX1gO1xuICAgIH1cbiAgICByZXR1cm4gZ2V0UmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oR0VUX01ZX0FTU0lHTkVEX1RJQ0tFVFMpLFxuICAgICAgYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvJHtzdW1taXQuaWR9L29yZGVycy9hbGwvdGlja2V0cy9tZWAsXG4gICAgICBjdXN0b21BdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKVxuICAgICAgLmNhdGNoKChlKSA9PiBlKVxuICAgICAgLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICBpZiAoIXNraXBMb2FkaW5nKSBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgIH0pO1xuICB9O1xuXG5leHBvcnQgY29uc3QgZ2V0VGlja2V0c0J5T3JkZXIgPVxuICAoe1xuICAgIG9yZGVySWQsXG4gICAgcGFnZSA9IEZJUlNUX1BBR0UsXG4gICAgcGVyUGFnZSA9IERFRkFVTFRfSVRFTVNfUEVSX1BBR0UsXG4gICAgZmlsdGVyLFxuICAgIHNvcnRcbiAgfSkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpO1xuXG4gICAgaWYgKCFhY2Nlc3NUb2tlbikgcmV0dXJuIGF1dGhQcm9taXNlUmVqZWN0KCk7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgXCJmaWx0ZXJbXVwiOiBbXSxcbiAgICAgIGZpZWxkczogXCJiYWRnZS5ub25lXCIsXG4gICAgICBleHBhbmQ6XG4gICAgICAgIFwicmVmdW5kX3JlcXVlc3RzLHJlZnVuZF9yZXF1ZXN0cy5yZWZ1bmRlZF90YXhlcyxyZWZ1bmRfcmVxdWVzdHMucmVmdW5kZWRfdGF4ZXMudGF4LG93bmVyLG93bmVyLmV4dHJhX3F1ZXN0aW9ucyxiYWRnZSxiYWRnZS5mZWF0dXJlcyx0aWNrZXRfdHlwZVwiLFxuICAgICAgb3JkZXI6IFwiK2lkXCIsXG4gICAgICByZWxhdGlvbnM6IFwibm9uZSxiYWRnZS5mZWF0dXJlc1wiLFxuICAgICAgcGFnZSxcbiAgICAgIHBlcl9wYWdlOiBwZXJQYWdlXG4gICAgfTtcbiAgICBpZiAoT2JqZWN0LmtleXMoZmlsdGVyKS5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBmaWx0ZXJzID0gcGFyc2VGaWx0ZXIoZmlsdGVyLCBGSUxURVJfQUNUSU9OLlRJQ0tFVFNfQllfT1JERVJTKTtcbiAgICAgIHBhcmFtc1tcImZpbHRlcltdXCJdID0gWy4uLnBhcmFtc1tcImZpbHRlcltdXCJdLCAuLi5maWx0ZXJzXTtcbiAgICB9XG4gICAgaWYgKE9iamVjdC5rZXlzKHNvcnQpLmxlbmd0aCA+IDApIHtcbiAgICAgIHBhcmFtcy5vcmRlciA9IGAke2dldFNvcnREaXJlY3Rpb24oc29ydC5kaXJlY3Rpb24pfSR7c29ydC5uYW1lfWA7XG4gICAgfVxuICAgIHJldHVybiBnZXRSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihHRVRfVElDS0VUU19CWV9PUkRFUiksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy9hbGwvb3JkZXJzLyR7b3JkZXJJZH0vdGlja2V0c2AsXG4gICAgICBjdXN0b21BdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKVxuICAgICAgLnRoZW4oKHBheWxvYWQpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKEdFVF9USUNLRVRTX0JZX09SREVSX0VSUk9SKSk7XG4gICAgICAgIHJldHVybiBlO1xuICAgICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCByZXNlbmROb3RpZmljYXRpb24gPVxuICAodGlja2V0KSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKTtcblxuICAgIGlmICghYWNjZXNzVG9rZW4pIHJldHVybiBhdXRoUHJvbWlzZVJlamVjdCgpO1xuXG4gICAgY29uc3QgeyBtZXNzYWdlIH0gPSB0aWNrZXQ7XG5cbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG5cbiAgICBjb25zdCBvcmRlcklkID0gdGlja2V0Lm9yZGVyID8gdGlja2V0Lm9yZGVyLmlkIDogdGlja2V0Lm9yZGVyX2lkO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlblxuICAgIH07XG5cbiAgICByZXR1cm4gcHV0UmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oUkVTRU5EX05PVElGSUNBVElPTiksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy9hbGwvb3JkZXJzLyR7b3JkZXJJZH0vdGlja2V0cy8ke3RpY2tldC5pZH0vYXR0ZW5kZWUvcmVpbnZpdGVgLFxuICAgICAgeyBtZXNzYWdlIH0sXG4gICAgICBjdXN0b21BdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKVxuICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIHJldHVybiBlO1xuICAgICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCByZWZ1bmRUaWNrZXQgPVxuICAoeyB0aWNrZXQgfSkgPT5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpO1xuXG4gICAgaWYgKCFhY2Nlc3NUb2tlbikgcmV0dXJuIGF1dGhQcm9taXNlUmVqZWN0KCk7XG5cbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG5cbiAgICBjb25zdCBvcmRlcklkID0gdGlja2V0Lm9yZGVyID8gdGlja2V0Lm9yZGVyLmlkIDogdGlja2V0Lm9yZGVyX2lkO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIGV4cGFuZDogXCJyZWZ1bmRfcmVxdWVzdHMsdGlja2V0X3R5cGVcIixcbiAgICAgIGZpZWxkczogXCJyZWZ1bmRfcmVxdWVzdHMuc3RhdHVzXCJcbiAgICB9O1xuXG4gICAgcmV0dXJuIGRlbGV0ZVJlcXVlc3QoXG4gICAgICBudWxsLFxuICAgICAgY3JlYXRlQWN0aW9uKFJFRlVORF9USUNLRVQpLFxuICAgICAgYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvYWxsL29yZGVycy8ke29yZGVySWR9L3RpY2tldHMvJHt0aWNrZXQuaWR9L3JlZnVuZGAsXG4gICAgICB7fSxcbiAgICAgIGN1c3RvbUF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpXG4gICAgICAudGhlbigocGF5bG9hZCkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgcmV0dXJuIHBheWxvYWQ7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICByZXR1cm4gZTtcbiAgICAgIH0pO1xuICB9O1xuXG5leHBvcnQgY29uc3QgcmVmdW5kQnVsa1RpY2tldHMgPVxuICAoeyB0aWNrZXRzIH0pID0+XG4gIGFzeW5jIChkaXNwYXRjaCkgPT4ge1xuICAgIGNvbnN0IGxpbWl0ID0gcExpbWl0KFBST01JU0VfQkFUQ0hfTElNSVQpO1xuICAgIGNvbnN0IGFsbFJlZnVuZFRpY2tldENhbGxzID0gdGlja2V0cy5tYXAoKHRpY2tldCkgPT5cbiAgICAgIGxpbWl0KCgpID0+IGRpc3BhdGNoKHJlZnVuZFRpY2tldCh7IHRpY2tldCB9KSkpXG4gICAgKTtcbiAgICByZXR1cm4gUHJvbWlzZS5hbGwoWy4uLmFsbFJlZnVuZFRpY2tldENhbGxzXSlcbiAgICAgIC50aGVuKChyZXMpID0+IHtcbiAgICAgICAgY29uc3Qgc3VjY2Vzc2Z1bGx5UmVxdWVzdGVkID0gcmVzXG4gICAgICAgICAgLmZpbHRlcigocikgPT4gci5yZXNwb25zZT8ucmVmdW5kX3JlcXVlc3RzPy5sZW5ndGgpXG4gICAgICAgICAgLm1hcCgocikgPT4gci5yZXNwb25zZSk7XG4gICAgICAgIHJldHVybiBzdWNjZXNzZnVsbHlSZXF1ZXN0ZWQ7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlKSA9PiBlKTtcbiAgfTtcblxuLy8gdXBkYXRlIHRoZSB0aWNrZXRzIHRoYXQgaGF2ZSBiZWVuIHN1Y2Vzc2Z1bGx5IHJlZnVuZGVkXG5leHBvcnQgY29uc3QgdXBkYXRlVGlja2V0c1JlZnVuZFJlcXVlc3RlZCA9XG4gICh0aWNrZXRzUmVmdW5kUmVxdWVzdGVkKSA9PiAoZGlzcGF0Y2gpID0+XG4gICAgZGlzcGF0Y2goXG4gICAgICBjcmVhdGVBY3Rpb24oVVBEQVRFX1RJQ0tFVFNfUkVGVU5EX1JFUVVFU1RFRCkodGlja2V0c1JlZnVuZFJlcXVlc3RlZClcbiAgICApO1xuXG4vLyBTVU1NSVQgQUNUSU9OU1xuXG5leHBvcnQgY29uc3QgZ2V0RXh0cmFRdWVzdGlvbnMgPVxuICAoYXR0ZW5kZWVJZCkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCB7XG4gICAgICB3aWRnZXRTdGF0ZTogeyBzdW1taXQgfVxuICAgIH0gPSBnZXRTdGF0ZSgpO1xuXG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpO1xuXG4gICAgaWYgKCFhY2Nlc3NUb2tlbikgcmV0dXJuIGF1dGhQcm9taXNlUmVqZWN0KCk7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBwYWdlOiAxLFxuICAgICAgcGVyX3BhZ2U6IEZJRlRZX1BFUl9QQUdFLFxuICAgICAgZXhwYW5kOiBcIipzdWJfcXVlc3Rpb25fcnVsZXMsKnN1Yl9xdWVzdGlvbiwqdmFsdWVzXCIsXG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgXCJmaWx0ZXJbXVwiOiBcInRpY2tldHNfZXhjbHVkZV9pbmFjdGl2ZXM9PXRydWVcIlxuICAgIH07XG5cbiAgICBjb25zdCBlbmRwb2ludCA9IGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzLyR7c3VtbWl0LmlkfS9hdHRlbmRlZXMvJHthdHRlbmRlZUlkfS9hbGxvd2VkLWV4dHJhLXF1ZXN0aW9uc2A7XG5cbiAgICByZXR1cm4gZ2V0UmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oUkVDRUlWRV9FWFRSQV9RVUVTVElPTlMpLFxuICAgICAgZW5kcG9pbnQsXG4gICAgICBjdXN0b21BdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKS50aGVuKCgpID0+IHtcbiAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgIH0pO1xuICB9O1xuXG5leHBvcnQgY29uc3QgZ2V0VGlja2V0ID1cbiAgKHRpY2tldElkLCBvcmRlcklkKSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKTtcblxuICAgIGlmICghYWNjZXNzVG9rZW4pIHJldHVybiBhdXRoUHJvbWlzZVJlamVjdCgpO1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIGV4cGFuZDpcbiAgICAgICAgXCJvd25lcixvd25lci5leHRyYV9xdWVzdGlvbnMsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLHRpY2tldF90eXBlLG9yZGVyLHByb21vX2NvZGVcIixcbiAgICAgIHJlbGF0aW9uczpcbiAgICAgICAgXCJvd25lci5leHRyYV9xdWVzdGlvbnMsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLm5vbmUscHJvbW9fY29kZS5ub25lLHRpY2tldF90eXBlLm5vbmVcIixcbiAgICAgIGZpZWxkczpcbiAgICAgICAgXCJvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24uaWQsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLm5hbWUsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLnR5cGUscHJvbW9fY29kZS5pZCxwcm9tb19jb2RlLmNvZGUscHJvbW9fY29kZS5hbGxvd3NfdG9fZGVsZWdhdGUscHJvbW9fY29kZS5hbGxvd3NfdG9fcmVhc3NpZ24sdGlja2V0X3R5cGUuaWQsdGlja2V0X3R5cGUubmFtZSx0aWNrZXRfdHlwZS5hbGxvd3NfdG9fZGVsZWdhdGUsdGlja2V0X3R5cGUuYWxsb3dzX3RvX3JlYXNzaWduLHRpY2tldF90eXBlLmNvc3QsdGlja2V0X3R5cGUuY3JlYXRlZFwiXG4gICAgfTtcblxuICAgIGNvbnN0IGVuZHBvaW50ID0gYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvYWxsL29yZGVycy8ke29yZGVySWR9L3RpY2tldHMvJHt0aWNrZXRJZH1gO1xuXG4gICAgcmV0dXJuIGdldFJlcXVlc3QoXG4gICAgICBjcmVhdGVBY3Rpb24oUkVTRVRfVElDS0VUKSxcbiAgICAgIGNyZWF0ZUFjdGlvbihSRUNFSVZFX1RJQ0tFVCksXG4gICAgICBlbmRwb2ludCxcbiAgICAgIGN1c3RvbUF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgfSk7XG4gIH07XG5cbmNvbnN0IG5vcm1hbGl6ZVRpY2tldCA9IChlbnRpdHkpID0+IHtcbiAgY29uc3Qgbm9ybWFsaXplZEVudGl0eSA9IHsgLi4uZW50aXR5IH07XG5cbiAgaWYgKCFlbnRpdHkuYXR0ZW5kZWVfY29tcGFueS5pZCkge1xuICAgIG5vcm1hbGl6ZWRFbnRpdHkuYXR0ZW5kZWVfY29tcGFueSA9IGVudGl0eS5hdHRlbmRlZV9jb21wYW55O1xuICB9IGVsc2Uge1xuICAgIGRlbGV0ZSBub3JtYWxpemVkRW50aXR5LmF0dGVuZGVlX2NvbXBhbnk7XG4gICAgbm9ybWFsaXplZEVudGl0eS5hdHRlbmRlZV9jb21wYW55X2lkID0gZW50aXR5LmF0dGVuZGVlX2NvbXBhbnkuaWQ7XG4gIH1cblxuICByZXR1cm4gbm9ybWFsaXplZEVudGl0eTtcbn07XG5cbmV4cG9ydCBjb25zdCByZWZyZXNoUHJvZmlsZSA9XG4gIChkYXRhLCBjb21wYW55LCB0aWNrZXRPd25lcikgPT5cbiAgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyB1cGRhdGVQcm9maWxlIH0pID0+IHtcbiAgICBjb25zdCB7XG4gICAgICB3aWRnZXRTdGF0ZTogeyB1c2VyIH1cbiAgICB9ID0gZ2V0U3RhdGUoKTtcbiAgICBjb25zdCB7IHVzZXJQcm9maWxlIH0gPSB1c2VyO1xuXG4gICAgLy8gZW1haWwgc2hvdWxkIG1hdGNoICggb25seSB1cGRhdGUgbXkgcHJvZmlsZSBpcyB0aWNrZXQgYmVsb25ncyB0byBtZSEpXG4gICAgLy8gYW5kIGlmIHRoZSB0aWNrZXQgZG9lc24ndCBoYXZlIGEgbWFuYWdlclxuICAgIC8vIENoZWNrIGlmIHRoZXJlJ3MgY2hhbmdlcyBpbiB0aGUgdGlja2V0IGRhdGEgdG8gdXBkYXRlIHRoZSBwcm9maWxlXG4gICAgY29uc3Qge1xuICAgICAgYXR0ZW5kZWVfZW1haWwsXG4gICAgICBhdHRlbmRlZV9maXJzdF9uYW1lLFxuICAgICAgYXR0ZW5kZWVfbGFzdF9uYW1lLFxuICAgICAgYXR0ZW5kZWVfY29tcGFueVxuICAgIH0gPSBkYXRhO1xuICAgIGNvbnN0IGhhc01hbmFnZXIgPSB0aWNrZXRPd25lcj8ubWFuYWdlcj8uaWQgfHwgdGlja2V0T3duZXI/Lm1hbmFnZXJfaWQ7XG4gICAgY29uc3QgaXRzTWUgPSB1c2VyUHJvZmlsZS5lbWFpbCA9PT0gYXR0ZW5kZWVfZW1haWw7XG4gICAgY29uc3QgcHJvZmlsZUNoYW5nZWQgPVxuICAgICAgYXR0ZW5kZWVfY29tcGFueS5uYW1lICE9PSBjb21wYW55IHx8XG4gICAgICBhdHRlbmRlZV9maXJzdF9uYW1lICE9PSB1c2VyUHJvZmlsZS5maXJzdF9uYW1lIHx8XG4gICAgICBhdHRlbmRlZV9sYXN0X25hbWUgIT09IHVzZXJQcm9maWxlLmxhc3RfbmFtZTtcblxuICAgIGlmIChpdHNNZSAmJiAhaGFzTWFuYWdlciAmJiBwcm9maWxlQ2hhbmdlZCkge1xuICAgICAgY29uc3QgbmV3UHJvZmlsZSA9IHtcbiAgICAgICAgZmlyc3RfbmFtZTogYXR0ZW5kZWVfZmlyc3RfbmFtZSxcbiAgICAgICAgbGFzdF9uYW1lOiBhdHRlbmRlZV9sYXN0X25hbWUsXG4gICAgICAgIGNvbXBhbnk6IGF0dGVuZGVlX2NvbXBhbnkubmFtZSB8fCBhdHRlbmRlZV9jb21wYW55XG4gICAgICB9O1xuXG4gICAgICAvLyB0aGlzIGlzIGEgY2FsbGJhY2sgbWV0aG9kIHRoYXQgdXBkYXRlcyB1c2VyUHJvZmlsZSBpbiBBUEkgYW5kIGV2ZW50LXNpdGVcbiAgICAgIHVwZGF0ZVByb2ZpbGUobmV3UHJvZmlsZSk7XG4gICAgfVxuICB9O1xuXG5leHBvcnQgY29uc3Qgc2F2ZVRpY2tldERldGFpbHMgPVxuICAodGlja2V0LCBhbnN3ZXJzKSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKTtcblxuICAgIGlmICghYWNjZXNzVG9rZW4pIHJldHVybiBhdXRoUHJvbWlzZVJlamVjdCgpO1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIGV4cGFuZDpcbiAgICAgICAgXCJyZWZ1bmRfcmVxdWVzdHMsb3duZXIsb3duZXIuZXh0cmFfcXVlc3Rpb25zLGJhZGdlLGJhZGdlLmZlYXR1cmVzLHRpY2tldF90eXBlXCJcbiAgICB9O1xuXG4gICAgY29uc3QgaWRUb2tlbiA9IGdldElkVG9rZW4oKTtcbiAgICBsZXQgY29tcGFueSA9IFwiXCI7XG4gICAgaWYgKGlkVG9rZW4pIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHZlcmlmaWVyID0gbmV3IElkVG9rZW5WZXJpZmllcigpO1xuICAgICAgICBjb25zdCBqd3QgPSB2ZXJpZmllci5kZWNvZGUoaWRUb2tlbik7XG4gICAgICAgIGNvbXBhbnkgPSBqd3QucGF5bG9hZC5jb21wYW55O1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBjb25zb2xlLmxvZyhcImVycm9yXCIsIGUpO1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBub3JtYWxpemVkRW50aXR5ID0gbm9ybWFsaXplVGlja2V0KGFuc3dlcnMpO1xuXG4gICAgcmV0dXJuIHB1dFJlcXVlc3QoXG4gICAgICBudWxsLFxuICAgICAgY3JlYXRlQWN0aW9uKFVQREFURV9USUNLRVQpLFxuICAgICAgYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvYWxsL29yZGVycy9hbGwvdGlja2V0cy8ke3RpY2tldC5pZH1gLFxuICAgICAgbm9ybWFsaXplZEVudGl0eSxcbiAgICAgIGN1c3RvbUF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpXG4gICAgICAudGhlbihhc3luYyAoKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHJlZnJlc2hQcm9maWxlKGFuc3dlcnMsIGNvbXBhbnksIHRpY2tldC5vd25lcikpO1xuICAgICAgfSlcbiAgICAgIC5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICB9KTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IGFzc2lnbkF0dGVuZGVlID1cbiAgKG9yZGVySWQsIHRpY2tldElkLCBhdHRlbmRlZV9lbWFpbCwgbWVzc2FnZSA9IG51bGwpID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpO1xuXG4gICAgY29uc3QgcGF5bG9hZCA9IHsgYXR0ZW5kZWVfZW1haWwgfTtcbiAgICBpZiAobWVzc2FnZSkgcGF5bG9hZC5tZXNzYWdlID0gbWVzc2FnZTtcblxuICAgIGlmICghYWNjZXNzVG9rZW4pIHJldHVybiBhdXRoUHJvbWlzZVJlamVjdCgpO1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIGV4cGFuZDpcbiAgICAgICAgXCJvd25lcixvd25lci5leHRyYV9xdWVzdGlvbnMsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLHRpY2tldF90eXBlLG9yZGVyXCIsXG4gICAgICByZWxhdGlvbnM6IFwib3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLm5vbmVcIixcbiAgICAgIGZpZWxkczpcbiAgICAgICAgXCJvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24uaWQsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLm5hbWUsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLnR5cGVcIlxuICAgIH07XG5cbiAgICByZXR1cm4gcHV0UmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oQVNTSUdOX1RJQ0tFVCksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy9hbGwvb3JkZXJzLyR7b3JkZXJJZH0vdGlja2V0cy8ke3RpY2tldElkfS9hdHRlbmRlZWAsXG4gICAgICBwYXlsb2FkLFxuICAgICAgY3VzdG9tQXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaCkuZmluYWxseSgoKSA9PiB7XG4gICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICB9KTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IHJlbW92ZVRpY2tldCA9XG4gIChvcmRlcklkLCB0aWNrZXRJZCkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCk7XG5cbiAgICBpZiAoIWFjY2Vzc1Rva2VuKSByZXR1cm4gYXV0aFByb21pc2VSZWplY3QoKTtcblxuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgICBleHBhbmQ6IFwib3JkZXIsIG93bmVyLCBvd25lci5leHRyYV9xdWVzdGlvbnMsIG9yZGVyLnN1bW1pdFwiXG4gICAgfTtcblxuICAgIHJldHVybiBkZWxldGVSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihSRU1PVkVfVElDS0VUX0FUVEVOREVFKSxcbiAgICAgIGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzL2FsbC9vcmRlcnMvJHtvcmRlcklkfS90aWNrZXRzLyR7dGlja2V0SWR9L2F0dGVuZGVlYCxcbiAgICAgIHt9LFxuICAgICAgY3VzdG9tQXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaCk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCByZWFzc2lnblRpY2tldCA9XG4gIChvcmRlcklkLCB0aWNrZXRJZCwgZW1haWwsIG1lc3NhZ2UpID0+IGFzeW5jIChkaXNwYXRjaCkgPT5cbiAgICBkaXNwYXRjaChyZW1vdmVUaWNrZXQob3JkZXJJZCwgdGlja2V0SWQpKS50aGVuKCgpID0+XG4gICAgICBkaXNwYXRjaChhc3NpZ25BdHRlbmRlZShvcmRlcklkLCB0aWNrZXRJZCwgZW1haWwsIG1lc3NhZ2UpKVxuICAgICk7XG5cbmV4cG9ydCBjb25zdCB1bmFzc2lnblRpY2tldCA9IChvcmRlcklkLCB0aWNrZXRJZCkgPT4gYXN5bmMgKGRpc3BhdGNoKSA9PlxuICBkaXNwYXRjaChyZW1vdmVUaWNrZXQob3JkZXJJZCwgdGlja2V0SWQpKS50aGVuKCgpID0+IGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpKTtcblxuZXhwb3J0IGNvbnN0IGRlbGVnYXRlVGlja2V0ID1cbiAgKG9yZGVySWQsIHRpY2tldElkLCBmaXJzdE5hbWUsIGxhc3ROYW1lLCBlbWFpbCkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCk7XG4gICAgY29uc3Qge1xuICAgICAgd2lkZ2V0U3RhdGU6IHsgc3VtbWl0IH1cbiAgICB9ID0gZ2V0U3RhdGUoKTtcbiAgICBjb25zdCBwYXlsb2FkID0ge1xuICAgICAgYXR0ZW5kZWVfZmlyc3RfbmFtZTogZmlyc3ROYW1lLFxuICAgICAgYXR0ZW5kZWVfbGFzdF9uYW1lOiBsYXN0TmFtZSxcbiAgICAgIGF0dGVuZGVlX2VtYWlsOiBlbWFpbFxuICAgIH07XG5cbiAgICBpZiAoIWFjY2Vzc1Rva2VuKSByZXR1cm4gYXV0aFByb21pc2VSZWplY3QoKTtcblxuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgICBleHBhbmQ6XG4gICAgICAgIFwib3duZXIsb3duZXIuZXh0cmFfcXVlc3Rpb25zLG93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbix0aWNrZXRfdHlwZSxvcmRlclwiLFxuICAgICAgcmVsYXRpb25zOiBcIm93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi5ub25lXCIsXG4gICAgICBmaWVsZHM6XG4gICAgICAgIFwib3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLmlkLG93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi5uYW1lLG93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi50eXBlXCJcbiAgICB9O1xuXG4gICAgcmV0dXJuIHB1dFJlcXVlc3QoXG4gICAgICBudWxsLFxuICAgICAgY3JlYXRlQWN0aW9uKERFTEVHQVRFX1RJQ0tFVCksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy8ke3N1bW1pdC5pZH0vb3JkZXJzLyR7b3JkZXJJZH0vdGlja2V0cy8ke3RpY2tldElkfS9kZWxlZ2F0ZWAsXG4gICAgICBwYXlsb2FkLFxuICAgICAgY3VzdG9tQXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaCkuZmluYWxseSgoKSA9PiB7XG4gICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICB9KTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IHNhdmVFeHRyYVF1ZXN0aW9ucyA9XG4gICh0aWNrZXQsIGFuc3dlcnMpID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpO1xuXG4gICAgaWYgKCFhY2Nlc3NUb2tlbikgcmV0dXJuIGF1dGhQcm9taXNlUmVqZWN0KCk7XG5cbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgZXhwYW5kOlxuICAgICAgICBcInJlZnVuZF9yZXF1ZXN0cyxvd25lcixvd25lci5leHRyYV9xdWVzdGlvbnMsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLGJhZGdlLGJhZGdlLmZlYXR1cmVzLHRpY2tldF90eXBlLG9yZGVyXCIsXG4gICAgICByZWxhdGlvbnM6IFwib3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLm5vbmVcIixcbiAgICAgIGZpZWxkczpcbiAgICAgICAgXCJvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24uaWQsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLm5hbWUsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLnR5cGVcIlxuICAgIH07XG5cbiAgICBjb25zdCBub3JtYWxpemVkQW5zID0gbm9ybWFsaXplVGlja2V0KGFuc3dlcnMpO1xuXG4gICAgcmV0dXJuIHB1dFJlcXVlc3QoXG4gICAgICBudWxsLFxuICAgICAgY3JlYXRlQWN0aW9uKFVQREFURV9USUNLRVQpLFxuICAgICAgYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvYWxsL29yZGVycy9hbGwvdGlja2V0cy8ke3RpY2tldC5pZH1gLFxuICAgICAgbm9ybWFsaXplZEFucyxcbiAgICAgIGN1c3RvbUF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpXG4gICAgICAudGhlbihhc3luYyAoKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgcmV0dXJuIGU7XG4gICAgICB9KTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IGdldFRpY2tldFBERiA9XG4gICh0aWNrZXQpID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpO1xuXG4gICAgaWYgKCFhY2Nlc3NUb2tlbikgcmV0dXJuIGF1dGhQcm9taXNlUmVqZWN0KCk7XG5cbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuXG4gICAgfTtcblxuICAgIGNvbnN0IG9yZGVySWQgPSB0aWNrZXQub3JkZXIgPyB0aWNrZXQub3JkZXIuaWQgOiB0aWNrZXQub3JkZXJfaWQ7XG5cbiAgICBjb25zdCBxdWVyeVN0cmluZyA9IG9iamVjdFRvUXVlcnlTdHJpbmcocGFyYW1zKTtcbiAgICBjb25zdCBhcGlVcmwgPSBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy9hbGwvb3JkZXJzLyR7b3JkZXJJZH0vdGlja2V0cy8ke3RpY2tldC5pZH0vcGRmPyR7cXVlcnlTdHJpbmd9YDtcblxuICAgIHJldHVybiBmZXRjaChhcGlVcmwsIHtcbiAgICAgIHJlc3BvbnNlVHlwZTogXCJCbG9iXCIsXG4gICAgICBoZWFkZXJzOiB7IFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vcGRmXCIgfVxuICAgIH0pXG4gICAgICAudGhlbigocmVzcG9uc2UpID0+IHtcbiAgICAgICAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICAgIHRocm93IHJlc3BvbnNlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiByZXNwb25zZS5ibG9iKCk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICAudGhlbigocGRmKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICBjb25zdCBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImFcIik7XG4gICAgICAgIGNvbnN0IHVybCA9IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKHBkZik7XG4gICAgICAgIGxpbmsuaHJlZiA9IHVybDtcbiAgICAgICAgbGluay5kb3dubG9hZCA9IFwidGlja2V0LnBkZlwiO1xuICAgICAgICBsaW5rLmRpc3BhdGNoRXZlbnQobmV3IE1vdXNlRXZlbnQoXCJjbGlja1wiKSk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKGN1c3RvbUZldGNoRXJyb3JIYW5kbGVyKTtcbiAgfTtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSwgZm9yd2FyZFJlZiB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBNQVhfSU5JVElBTFMgPSAyO1xuXG5jb25zdCBCYWRnZUZlYXR1cmVJY29uID0gZm9yd2FyZFJlZihcbiAgKHsgbmFtZSwgaW1hZ2UsIGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiB7XG4gICAgY29uc3QgW2ltYWdlTG9hZGVkLCBzZXRJbWFnZUxvYWRlZF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgW2ltYWdlRXJyb3IsIHNldEltYWdlRXJyb3JdID0gdXNlU3RhdGUoZmFsc2UpO1xuXG4gICAgY29uc3Qgc2hvd0ZhbGxiYWNrID0gIWltYWdlIHx8IGltYWdlRXJyb3I7XG5cbiAgICAvLyBFeHRyYWN0IHVwIHRvIDIgaW5pdGlhbHMgZnJvbSBiYWRnZSBmZWF0dXJlIG5hbWUgKGUuZy4sIFwiQm9hcmQgTWVtYmVyXCIgLT4gXCJCTVwiKVxuICAgIGNvbnN0IGluaXRpYWxzID0gbmFtZVxuICAgICAgLnNwbGl0KFwiIFwiKVxuICAgICAgLmZpbHRlcigod29yZCkgPT4gd29yZC5sZW5ndGggPiAwKVxuICAgICAgLm1hcCgod29yZCkgPT4gd29yZFswXSlcbiAgICAgIC5qb2luKFwiXCIpXG4gICAgICAuc3Vic3RyaW5nKDAsIE1BWF9JTklUSUFMUylcbiAgICAgIC50b1VwcGVyQ2FzZSgpO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXZcbiAgICAgICAgcmVmPXtyZWZ9XG4gICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLmJhZGdlRmVhdHVyZUljb259JHtjbGFzc05hbWUgPyBgICR7Y2xhc3NOYW1lfWAgOiAnJ31gfVxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvanN4LXByb3BzLW5vLXNwcmVhZGluZ1xuICAgICAgICB7Li4ucHJvcHN9XG4gICAgICA+XG4gICAgICAgIHtpbWFnZSAmJiAhaW1hZ2VFcnJvciAmJiAoXG4gICAgICAgICAgPGltZ1xuICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuYmFkZ2VGZWF0dXJlSW1hZ2V9XG4gICAgICAgICAgICBzcmM9e2ltYWdlfVxuICAgICAgICAgICAgYWx0PXtuYW1lfVxuICAgICAgICAgICAgb25Mb2FkPXsoKSA9PiBzZXRJbWFnZUxvYWRlZCh0cnVlKX1cbiAgICAgICAgICAgIG9uRXJyb3I9eygpID0+IHNldEltYWdlRXJyb3IodHJ1ZSl9XG4gICAgICAgICAgICBzdHlsZT17eyBkaXNwbGF5OiBpbWFnZUxvYWRlZCA/IFwiYmxvY2tcIiA6IFwibm9uZVwiIH19XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgICAge3Nob3dGYWxsYmFjayAmJiAoXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy5iYWRnZUZlYXR1cmVJbml0aWFsc30+e2luaXRpYWxzfTwvZGl2PlxuICAgICAgICApfVxuICAgICAgPC9kaXY+XG4gICAgKTtcbiAgfVxuKTtcblxuQmFkZ2VGZWF0dXJlSWNvbi5wcm9wVHlwZXMgPSB7XG4gIG5hbWU6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgaW1hZ2U6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZ1xufTtcblxuZXhwb3J0IGRlZmF1bHQgQmFkZ2VGZWF0dXJlSWNvbjtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBCdXR0b24gZnJvbSBcIkBtdWkvbWF0ZXJpYWwvQnV0dG9uXCI7XG5pbXBvcnQgRGlhbG9nIGZyb20gXCJAbXVpL21hdGVyaWFsL0RpYWxvZ1wiO1xuaW1wb3J0IERpYWxvZ0FjdGlvbnMgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvRGlhbG9nQWN0aW9uc1wiO1xuaW1wb3J0IERpYWxvZ0NvbnRlbnQgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvRGlhbG9nQ29udGVudFwiO1xuaW1wb3J0IERpYWxvZ0NvbnRlbnRUZXh0IGZyb20gXCJAbXVpL21hdGVyaWFsL0RpYWxvZ0NvbnRlbnRUZXh0XCI7XG5pbXBvcnQgRGlhbG9nVGl0bGUgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvRGlhbG9nVGl0bGVcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcblxuY29uc3QgQ29uZmlybURpYWxvZyA9ICh7IG9wZW4sIHRpdGxlLCBib2R5LCBvbkNsb3NlLCBvbkNvbmZpcm0gfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG5cbiAgcmV0dXJuIChcbiAgICA8RGlhbG9nXG4gICAgICBvcGVuPXtvcGVufVxuICAgICAgb25DbG9zZT17b25DbG9zZX1cbiAgICAgIGFyaWEtbGFiZWxsZWRieT1cImFsZXJ0LWRpYWxvZy10aXRsZVwiXG4gICAgICBhcmlhLWRlc2NyaWJlZGJ5PVwiYWxlcnQtZGlhbG9nLWRlc2NyaXB0aW9uXCJcbiAgICA+XG4gICAgICA8RGlhbG9nVGl0bGUgaWQ9XCJhbGVydC1kaWFsb2ctdGl0bGVcIj57dGl0bGV9PC9EaWFsb2dUaXRsZT5cbiAgICAgIDxEaWFsb2dDb250ZW50PlxuICAgICAgICA8RGlhbG9nQ29udGVudFRleHQgaWQ9XCJhbGVydC1kaWFsb2ctZGVzY3JpcHRpb25cIj5cbiAgICAgICAgICB7Ym9keX1cbiAgICAgICAgPC9EaWFsb2dDb250ZW50VGV4dD5cbiAgICAgIDwvRGlhbG9nQ29udGVudD5cbiAgICAgIDxEaWFsb2dBY3Rpb25zPlxuICAgICAgICA8QnV0dG9uIG9uQ2xpY2s9e29uQ2xvc2V9Pnt0KFwiZ2VuZXJhbC5jYW5jZWxcIil9PC9CdXR0b24+XG4gICAgICAgIDxCdXR0b24gb25DbGljaz17b25Db25maXJtfSBhdXRvRm9jdXM+XG4gICAgICAgICAge3QoXCJnZW5lcmFsLmNvbmZpcm1cIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgPC9EaWFsb2dBY3Rpb25zPlxuICAgIDwvRGlhbG9nPlxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgQ29uZmlybURpYWxvZztcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCBDb250ZW50Q29weUljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ29udGVudENvcHlcIjtcbmltcG9ydCB7IFRvb2x0aXAgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgTUlMTElTRUNfVE9fU0VDIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2NvbnN0YW50c1wiO1xuXG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IGRlZmF1bHRXaWR0aCA9IDkwO1xuXG5jb25zdCBDb3B5VGV4dCA9ICh7XG4gIHRleHQsXG4gIHRvb2x0aXBUZXh0LFxuICBoaWRlQ29weSA9IGZhbHNlLFxuICB0cnVuY2F0ZWQgPSB0cnVlLFxuICByZXZlcnNlZCA9IGZhbHNlLFxuICB3aWR0aCA9IGRlZmF1bHRXaWR0aFxufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IHRvb2x0aXBUZXh0VG9Vc2UgPSB0b29sdGlwVGV4dCB8fCB0KFwiZ2VuZXJhbC5jb3B5X3RvX2NsaXBib2FyZFwiKTtcbiAgY29uc3QgW3Rvb2x0aXAsIHNldFRvb2x0aXBdID0gUmVhY3QudXNlU3RhdGUodG9vbHRpcFRleHRUb1VzZSk7XG4gIGNvbnN0IGNsYXNzTmFtZXMgPSBgJHt0cnVuY2F0ZWQgJiYgc3R5bGVzLnRydW5jYXRlZH0gJHtcbiAgICByZXZlcnNlZCAmJiBzdHlsZXMucmV2ZXJzZWRcbiAgfWA7XG5cbiAgY29uc3QgaGFuZGxlQ29weSA9ICgpID0+IHtcbiAgICBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dCh0ZXh0KTtcbiAgICBzZXRUb29sdGlwKHQoXCJnZW5lcmFsLmNvcGllZFwiKSk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBzZXRUb29sdGlwKHRvb2x0aXBUZXh0VG9Vc2UpO1xuICAgIH0sIE1JTExJU0VDX1RPX1NFQyk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLndyYXBwZXJ9PlxuICAgICAgPHNwYW4gY2xhc3NOYW1lPXtjbGFzc05hbWVzfSBzdHlsZT17eyB3aWR0aCB9fT5cbiAgICAgICAge3RleHR9XG4gICAgICA8L3NwYW4+XG4gICAgICB7IWhpZGVDb3B5ICYmIChcbiAgICAgICAgPFRvb2x0aXAgdGl0bGU9e3Rvb2x0aXB9PlxuICAgICAgICAgIDxDb250ZW50Q29weUljb25cbiAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNvcHlJY29ufVxuICAgICAgICAgICAgb25DbGljaz17aGFuZGxlQ29weX1cbiAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwiY29weS1udW1iZXItYnV0dG9uXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICApfVxuICAgIDwvZGl2PlxuICApO1xufTtcblxuQ29weVRleHQucHJvcFR5cGVzID0ge1xuICB0ZXh0OiBQcm9wVHlwZXMuc3RyaW5nLFxuICB0b29sdGlwVGV4dDogUHJvcFR5cGVzLnN0cmluZyxcbiAgaGlkZUNvcHk6IFByb3BUeXBlcy5ib29sLFxuICB0cnVuY2F0ZWQ6IFByb3BUeXBlcy5ib29sLFxuICByZXZlcnNlZDogUHJvcFR5cGVzLmJvb2wsXG4gIHdpZHRoOiBQcm9wVHlwZXMubnVtYmVyXG59O1xuXG5leHBvcnQgZGVmYXVsdCBDb3B5VGV4dDtcbiIsImltcG9ydCB7IGNyZWF0ZUNvbnRleHQgfSBmcm9tIFwicmVhY3RcIjtcblxuY29uc3QgQ3VzdG9tTm90aWZpY2F0aW9uQ29udGV4dCA9IGNyZWF0ZUNvbnRleHQobnVsbCk7XG5cbmV4cG9ydCBkZWZhdWx0IEN1c3RvbU5vdGlmaWNhdGlvbkNvbnRleHQ7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBBbGVydCwgU25hY2tiYXIsIFR5cG9ncmFwaHkgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IENoZWNrQ2lyY2xlSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9DaGVja0NpcmNsZVwiO1xuaW1wb3J0IEVycm9ySWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9FcnJvclwiO1xuXG5jb25zdCBDdXN0b21Ob3RpZmljYXRpb24gPSAoeyBvcGVuLCBvbkNsb3NlLCBtZXNzYWdlLCBzZXZlcml0eSB9KSA9PiB7XG4gIGlmICghbWVzc2FnZSkgcmV0dXJuIG51bGw7XG5cbiAgcmV0dXJuIChcbiAgICA8U25hY2tiYXJcbiAgICAgIG9wZW49e29wZW59XG4gICAgICBvbkNsb3NlPXtvbkNsb3NlfVxuICAgICAgYW5jaG9yT3JpZ2luPXt7IHZlcnRpY2FsOiBcInRvcFwiLCBob3Jpem9udGFsOiBcImNlbnRlclwiIH19XG4gICAgICBhdXRvSGlkZUR1cmF0aW9uPXsyMDAwfVxuICAgID5cbiAgICAgIDxBbGVydFxuICAgICAgICBvbkNsb3NlPXtvbkNsb3NlfVxuICAgICAgICBzZXZlcml0eT17c2V2ZXJpdHl9XG4gICAgICAgIHZhcmlhbnQ9XCJmaWxsZWRcIlxuICAgICAgICBzeD17eyB3aWR0aDogXCIxMDAlXCIsIGJhY2tncm91bmRDb2xvcjogYCR7c2V2ZXJpdHl9LmxpZ2h0YCB9fVxuICAgICAgICBpY29uTWFwcGluZz17e1xuICAgICAgICAgIHN1Y2Nlc3M6IDxDaGVja0NpcmNsZUljb24gZm9udFNpemU9XCJpbmhlcml0XCIgLz4sXG4gICAgICAgICAgZXJyb3I6IDxFcnJvckljb24gZm9udFNpemU9XCJpbmhlcml0XCIgLz5cbiAgICAgICAgfX1cbiAgICAgID5cbiAgICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImJvZHkxXCI+e21lc3NhZ2V9PC9UeXBvZ3JhcGh5PlxuICAgICAgPC9BbGVydD5cbiAgICA8L1NuYWNrYmFyPlxuICApO1xufTtcblxuQ3VzdG9tTm90aWZpY2F0aW9uLnByb3BUeXBlcyA9IHtcbiAgb3BlbjogUHJvcFR5cGVzLmJvb2wsXG4gIG9uQ2xvc2U6IFByb3BUeXBlcy5mdW5jLFxuICBtZXNzYWdlOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBzZXZlcml0eTogUHJvcFR5cGVzLnN0cmluZ1xufTtcblxuZXhwb3J0IGRlZmF1bHQgQ3VzdG9tTm90aWZpY2F0aW9uO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgVGhlbWVQcm92aWRlciB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBjcmVhdGVUaGVtZSB9IGZyb20gXCJAbXVpL21hdGVyaWFsL3N0eWxlc1wiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuXG5sZXQgZGFya0NvbG9yID0gXCJcIjtcbmlmICh0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gIC8vIEdldCB0aGUgcm9vdCBlbGVtZW50XG4gIGNvbnN0IHJvb3QgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG5cbiAgLy8gUmV0cmlldmUgdGhlIGN1cnJlbnQgdmFsdWUgb2YgYSBDU1MgdmFyaWFibGVcbiAgZGFya0NvbG9yID0gZ2V0Q29tcHV0ZWRTdHlsZShyb290KS5nZXRQcm9wZXJ0eVZhbHVlKFxuICAgIFwiLS1jb2xvcl9iYWNrZ3JvdW5kX2RhcmtcIlxuICApO1xufVxuXG5jb25zdCB0aGVtZSA9IGNyZWF0ZVRoZW1lKHtcbiAgcGFsZXR0ZToge1xuICAgIHByaW1hcnk6IHtcbiAgICAgIG1haW46IGRhcmtDb2xvclxuICAgIH0sXG4gICAgdGV4dDoge1xuICAgICAgcHJpbWFyeTogXCIjMDAwMDAwREVcIixcbiAgICAgIHNlY29uZGFyeTogXCIjMDAwMDAwOTlcIixcbiAgICAgIGxpbms6IFwiIzIxOTZmM1wiXG4gICAgfVxuICB9LFxuICB0eXBvZ3JhcGh5OiB7XG4gICAgYm9keTE6IHtcbiAgICAgIGZvbnRTaXplOiBcIjE0cHhcIixcbiAgICAgIGZvbnRXZWlnaHQ6IDQwMFxuICAgIH0sXG4gICAgaDU6IHtcbiAgICAgIGZvbnRTaXplOiBcIjEuNmVtXCIsXG4gICAgICBmb250V2VpZ2h0OiA0MDAsXG4gICAgICBcIiYuTXVpVHlwb2dyYXBoeS1ndXR0ZXJCb3R0b21cIjoge1xuICAgICAgICBtYXJnaW5Cb3R0b206IFwiMjBweFwiXG4gICAgICB9XG4gICAgfSxcbiAgICBoNjoge1xuICAgICAgZm9udFNpemU6IFwiMS40ZW1cIixcbiAgICAgIGZvbnRXZWlnaHQ6IDUwMCxcbiAgICAgIFwiJi5NdWlUeXBvZ3JhcGh5LWd1dHRlckJvdHRvbVwiOiB7XG4gICAgICAgIG1hcmdpbkJvdHRvbTogXCIyMHB4XCJcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGNvbXBvbmVudHM6IHtcbiAgICBNdWlGb3JtSGVscGVyVGV4dDoge1xuICAgICAgc3R5bGVPdmVycmlkZXM6IHtcbiAgICAgICAgcm9vdDoge1xuICAgICAgICAgIGZvbnRTaXplOiBcIi44ZW1cIlxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBNdWlCdXR0b246IHtcbiAgICAgIHN0eWxlT3ZlcnJpZGVzOiB7XG4gICAgICAgIHJvb3Q6IHtcbiAgICAgICAgICBmb250U2l6ZTogXCIxZW1cIixcbiAgICAgICAgICBmb250V2VpZ2h0OiA1MDAsXG4gICAgICAgICAgbGluZUhlaWdodDogXCIyMnB4XCJcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgTXVpVGFiOiB7XG4gICAgICBzdHlsZU92ZXJyaWRlczoge1xuICAgICAgICByb290OiB7XG4gICAgICAgICAgZm9udFNpemU6IFwiMTRweFwiLFxuICAgICAgICAgIGNvbG9yOiBcIiMwMDAwMDA5OVwiLFxuICAgICAgICAgIFwiJi5NdWktc2VsZWN0ZWRcIjoge1xuICAgICAgICAgICAgY29sb3I6IFwiIzIxOTZmM1wiXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBNdWlUYWJzOiB7XG4gICAgICBzdHlsZU92ZXJyaWRlczoge1xuICAgICAgICBpbmRpY2F0b3I6IHtcbiAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IFwiIzIxOTZmM1wiXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn0pO1xuXG5jb25zdCBDdXN0b21UaGVtZSA9ICh7IGNoaWxkcmVuIH0pID0+IChcbiAgPFRoZW1lUHJvdmlkZXIgdGhlbWU9e3RoZW1lfT57Y2hpbGRyZW59PC9UaGVtZVByb3ZpZGVyPlxuKTtcblxuQ3VzdG9tVGhlbWUucHJvcFR5cGVzID0ge1xuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUuaXNSZXF1aXJlZFxufTtcblxuZXhwb3J0IGRlZmF1bHQgQ3VzdG9tVGhlbWU7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQge1xuICBDaGVja2JveCxcbiAgRm9ybUNvbnRyb2wsXG4gIEZvcm1Db250cm9sTGFiZWwsXG4gIEZvcm1Hcm91cCxcbiAgRm9ybUhlbHBlclRleHQsXG4gIEZvcm1MYWJlbFxufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IFJhd0hUTUwgZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvY29tcG9uZW50cy9yYXctaHRtbFwiO1xuaW1wb3J0IHsgZ2V0TGFiZWwsIHRvU2x1ZyB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbmNvbnN0IENoZWNrYm94TGlzdFF1ZXN0aW9uRmllbGQgPSAoe1xuICBxdWVzdGlvbixcbiAgcXVlc3Rpb25DbGFzc05hbWUgPSBcIlwiLFxuICBpc0Rpc2FibGVkID0gZmFsc2UsXG4gIGNoaWxkcmVuLFxuICB2YWx1ZSxcbiAgb25DaGFuZ2UsXG4gIHNldEZpZWxkVmFsdWUsXG4gIGVycm9yLFxuICBoZWxwZXJUZXh0LFxuICAuLi5yZXN0XG59KSA9PiB7XG4gIGNvbnN0IHF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhxdWVzdGlvbi5uYW1lLCBxdWVzdGlvbi5pZCk7XG4gIGNvbnN0IHF1ZXN0aW9uTGFiZWwgPSBnZXRMYWJlbChxdWVzdGlvbik7XG4gIGNvbnN0IGlzUmVxdWlyZWQgPSBxdWVzdGlvbi5tYW5kYXRvcnk7XG4gIGNvbnN0IHF1ZXN0aW9uTWF4VmFsdWVzID0gcXVlc3Rpb24ubWF4X3NlbGVjdGVkX3ZhbHVlcztcblxuICBjb25zdCBxdWVzdGlvbk9wdGlvbnMgPVxuICAgIHF1ZXN0aW9uLnZhbHVlcz8ubWFwKCh2YWwpID0+ICh7XG4gICAgICBsYWJlbDogdmFsLmxhYmVsLFxuICAgICAgdmFsdWU6IHZhbC5pZC50b1N0cmluZygpXG4gICAgfSkpIHx8IFtdO1xuXG4gIGNvbnN0IGhhbmRsZUNoZWNrYm94TGlzdENoYW5nZSA9IChjaGVja2VkLCB2YWwpID0+IHtcbiAgICBjb25zdCBjdXJyZW50QW5zID0gdmFsdWUgfHwgW107XG4gICAgY29uc3QgbWF4U2VsZWN0aW9uUmVhY2hlZCA9XG4gICAgICBxdWVzdGlvbk1heFZhbHVlcyAhPT0gMCAmJiBjdXJyZW50QW5zLmxlbmd0aCA9PT0gcXVlc3Rpb25NYXhWYWx1ZXM7XG4gICAgbGV0IG5ld1ZhbHVlO1xuXG4gICAgaWYgKGNoZWNrZWQpIHtcbiAgICAgIG5ld1ZhbHVlID0gbWF4U2VsZWN0aW9uUmVhY2hlZCA/IGN1cnJlbnRBbnMgOiBbLi4uY3VycmVudEFucywgdmFsXTtcbiAgICB9IGVsc2Uge1xuICAgICAgbmV3VmFsdWUgPSBjdXJyZW50QW5zLmZpbHRlcigodikgPT4gdiAhPT0gdmFsKTtcbiAgICB9XG5cbiAgICBzZXRGaWVsZFZhbHVlKHF1ZXN0aW9uU2x1ZywgbmV3VmFsdWUpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAga2V5PXtxdWVzdGlvblNsdWd9XG4gICAgICBpZD17YCR7cXVlc3Rpb25TbHVnfV9jb250YWluZXJgfVxuICAgICAgY2xhc3NOYW1lPXtxdWVzdGlvbkNsYXNzTmFtZX1cbiAgICA+XG4gICAgICA8Rm9ybUNvbnRyb2xcbiAgICAgICAgZGlzYWJsZWQ9e2lzRGlzYWJsZWR9XG4gICAgICAgIHJlcXVpcmVkPXtpc1JlcXVpcmVkfVxuICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgbWFyZ2luPVwibm9ybWFsXCJcbiAgICAgICAgZXJyb3I9e2Vycm9yfVxuICAgICAgPlxuICAgICAgICA8Rm9ybUxhYmVsPlxuICAgICAgICAgIDxSYXdIVE1MPntxdWVzdGlvbkxhYmVsfTwvUmF3SFRNTD5cbiAgICAgICAgPC9Gb3JtTGFiZWw+XG4gICAgICAgIHtlcnJvciAmJiA8Rm9ybUhlbHBlclRleHQ+e2hlbHBlclRleHQgPz8gXCIgXCJ9PC9Gb3JtSGVscGVyVGV4dD59XG4gICAgICAgIDxGb3JtR3JvdXA+XG4gICAgICAgICAge3F1ZXN0aW9uT3B0aW9ucy5tYXAoKG9wKSA9PiAoXG4gICAgICAgICAgICA8Rm9ybUNvbnRyb2xMYWJlbFxuICAgICAgICAgICAgICBrZXk9e29wLmxhYmVsfVxuICAgICAgICAgICAgICBuYW1lPXtxdWVzdGlvblNsdWd9XG4gICAgICAgICAgICAgIGNvbnRyb2w9e1xuICAgICAgICAgICAgICAgIDxDaGVja2JveFxuICAgICAgICAgICAgICAgICAgY2hlY2tlZD17dmFsdWU/LmluY2x1ZGVzKG9wLnZhbHVlKX1cbiAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZXYpID0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZUNoZWNrYm94TGlzdENoYW5nZShldi50YXJnZXQuY2hlY2tlZCwgb3AudmFsdWUpXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvanN4LXByb3BzLW5vLXNwcmVhZGluZyAqL1xuICAgICAgICAgICAgICAgICAgey4uLnJlc3R9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBsYWJlbD17b3AubGFiZWx9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICkpfVxuICAgICAgICA8L0Zvcm1Hcm91cD5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgPC9Gb3JtQ29udHJvbD5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbkNoZWNrYm94TGlzdFF1ZXN0aW9uRmllbGQucHJvcFR5cGVzID0ge1xuICBxdWVzdGlvbjogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICB2YWx1ZTogUHJvcFR5cGVzLmFycmF5LFxuICBxdWVzdGlvbkNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgaXNEaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gIG9uQ2hhbmdlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG4gIHNldEZpZWxkVmFsdWU6IFByb3BUeXBlcy5mdW5jLFxuICBlcnJvcjogUHJvcFR5cGVzLmJvb2wsXG4gIGhlbHBlclRleHQ6IFByb3BUeXBlcy5zdHJpbmdcbn07XG5cbmV4cG9ydCBkZWZhdWx0IENoZWNrYm94TGlzdFF1ZXN0aW9uRmllbGQ7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQge1xuICBDaGVja2JveCxcbiAgRm9ybUNvbnRyb2wsXG4gIEZvcm1Db250cm9sTGFiZWwsXG4gIEZvcm1IZWxwZXJUZXh0XG59IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgUmF3SFRNTCBmcm9tIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9jb21wb25lbnRzL3Jhdy1odG1sXCI7XG5pbXBvcnQgeyBnZXRMYWJlbCwgdG9TbHVnIH0gZnJvbSBcIi4vdXRpbHNcIjtcblxuY29uc3QgQ2hlY2tib3hRdWVzdGlvbkZpZWxkID0gKHtcbiAgcXVlc3Rpb24sXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lID0gXCJcIixcbiAgaXNEaXNhYmxlZCA9IGZhbHNlLFxuICBjaGlsZHJlbixcbiAgdmFsdWUsXG4gIGVycm9yLFxuICBoZWxwZXJUZXh0LFxuICBzZXRGaWVsZFZhbHVlLFxuICAuLi5yZXN0XG59KSA9PiB7XG4gIGNvbnN0IHF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhxdWVzdGlvbi5uYW1lLCBxdWVzdGlvbi5pZCk7XG4gIGNvbnN0IHF1ZXN0aW9uTGFiZWwgPSBnZXRMYWJlbChxdWVzdGlvbik7XG4gIGNvbnN0IGlzUmVxdWlyZWQgPSBxdWVzdGlvbi5tYW5kYXRvcnk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBrZXk9e3F1ZXN0aW9uU2x1Z31cbiAgICAgIGlkPXtgJHtxdWVzdGlvblNsdWd9X2NvbnRhaW5lcmB9XG4gICAgICBjbGFzc05hbWU9e3F1ZXN0aW9uQ2xhc3NOYW1lfVxuICAgID5cbiAgICAgIDxGb3JtQ29udHJvbCBmdWxsV2lkdGggbWFyZ2luPVwibm9ybWFsXCIgZXJyb3I9e2Vycm9yfT5cbiAgICAgICAgPEZvcm1Db250cm9sTGFiZWxcbiAgICAgICAgICBzeD17eyBhbGlnbkl0ZW1zOiBcImZsZXgtc3RhcnRcIiB9fVxuICAgICAgICAgIGNvbnRyb2w9e1xuICAgICAgICAgICAgPENoZWNrYm94XG4gICAgICAgICAgICAgIG5hbWU9e3F1ZXN0aW9uU2x1Z31cbiAgICAgICAgICAgICAgY2hlY2tlZD17ISF2YWx1ZX1cbiAgICAgICAgICAgICAgbGFiZWw9ezxSYXdIVE1MPntxdWVzdGlvbkxhYmVsfTwvUmF3SFRNTD59XG4gICAgICAgICAgICAgIHN4PXt7IG1hcmdpblRvcDogLTEgfX1cbiAgICAgICAgICAgICAgLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2pzeC1wcm9wcy1uby1zcHJlYWRpbmcgKi9cbiAgICAgICAgICAgICAgey4uLnJlc3R9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIH1cbiAgICAgICAgICBsYWJlbD17PFJhd0hUTUw+e3F1ZXN0aW9uTGFiZWx9PC9SYXdIVE1MPn1cbiAgICAgICAgICBkaXNhYmxlZD17aXNEaXNhYmxlZH1cbiAgICAgICAgICByZXF1aXJlZD17aXNSZXF1aXJlZH1cbiAgICAgICAgLz5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgICB7ZXJyb3IgJiYgPEZvcm1IZWxwZXJUZXh0PntoZWxwZXJUZXh0ID8/IFwiIFwifTwvRm9ybUhlbHBlclRleHQ+fVxuICAgICAgPC9Gb3JtQ29udHJvbD5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbkNoZWNrYm94UXVlc3Rpb25GaWVsZC5wcm9wVHlwZXMgPSB7XG4gIHF1ZXN0aW9uOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHZhbHVlOiBQcm9wVHlwZXMuYm9vbCxcbiAgcXVlc3Rpb25DbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGlzRGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG4gIHNldEZpZWxkVmFsdWU6IFByb3BUeXBlcy5mdW5jLFxuICBlcnJvcjogUHJvcFR5cGVzLmJvb2wsXG4gIGhlbHBlclRleHQ6IFByb3BUeXBlcy5zdHJpbmdcbn07XG5cbmV4cG9ydCBkZWZhdWx0IENoZWNrYm94UXVlc3Rpb25GaWVsZDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IEZvcm1Db250cm9sLCBJbnB1dExhYmVsLCBNZW51SXRlbSwgU2VsZWN0IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IGdldExhYmVsLCB0b1NsdWcgfSBmcm9tIFwiLi91dGlsc1wiO1xuXG5jb25zdCBEcm9wZG93blF1ZXN0aW9uRmllbGQgPSAoe1xuICBxdWVzdGlvbixcbiAgcXVlc3Rpb25DbGFzc05hbWUgPSBcIlwiLFxuICBpc0Rpc2FibGVkID0gZmFsc2UsXG4gIHNldEZpZWxkVmFsdWUsXG4gIGNoaWxkcmVuLFxuICBlcnJvcixcbiAgaGVscGVyVGV4dCxcbiAgLi4ucmVzdFxufSkgPT4ge1xuICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcocXVlc3Rpb24ubmFtZSwgcXVlc3Rpb24uaWQpO1xuICBjb25zdCBxdWVzdGlvbkxhYmVsID0gZ2V0TGFiZWwocXVlc3Rpb24pO1xuICBjb25zdCBpc1JlcXVpcmVkID0gcXVlc3Rpb24ubWFuZGF0b3J5O1xuXG4gIGNvbnN0IHF1ZXN0aW9uT3B0aW9ucyA9XG4gICAgcXVlc3Rpb24udmFsdWVzPy5tYXAoKHZhbCkgPT4gKHtcbiAgICAgIGxhYmVsOiB2YWwubGFiZWwsXG4gICAgICB2YWx1ZTogdmFsLmlkXG4gICAgfSkpIHx8IFtdO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAga2V5PXtxdWVzdGlvblNsdWd9XG4gICAgICBpZD17YCR7cXVlc3Rpb25TbHVnfV9jb250YWluZXJgfVxuICAgICAgY2xhc3NOYW1lPXtxdWVzdGlvbkNsYXNzTmFtZX1cbiAgICA+XG4gICAgICA8Rm9ybUNvbnRyb2xcbiAgICAgICAgZGlzYWJsZWQ9e2lzRGlzYWJsZWR9XG4gICAgICAgIHJlcXVpcmVkPXtpc1JlcXVpcmVkfVxuICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgbWFyZ2luPVwibm9ybWFsXCJcbiAgICAgICAgZXJyb3I9e2Vycm9yfVxuICAgICAgPlxuICAgICAgICA8SW5wdXRMYWJlbCBpZD17YCR7cXVlc3Rpb25TbHVnfV9sYWJlbGB9PntxdWVzdGlvbkxhYmVsfTwvSW5wdXRMYWJlbD5cbiAgICAgICAgPFNlbGVjdFxuICAgICAgICAgIGxhYmVsSWQ9e2Ake3F1ZXN0aW9uU2x1Z31fbGFiZWxgfVxuICAgICAgICAgIG5hbWU9e3F1ZXN0aW9uU2x1Z31cbiAgICAgICAgICBpZD17cXVlc3Rpb25TbHVnfVxuICAgICAgICAgIGxhYmVsPXtxdWVzdGlvbkxhYmVsfVxuICAgICAgICAgIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nICovXG4gICAgICAgICAgey4uLnJlc3R9XG4gICAgICAgICAgc3R5bGU9e3sgbWFyZ2luQm90dG9tOiAyMCB9fVxuICAgICAgICA+XG4gICAgICAgICAge3F1ZXN0aW9uT3B0aW9ucy5tYXAoKG9wKSA9PiAoXG4gICAgICAgICAgICA8TWVudUl0ZW0ga2V5PXtvcC5sYWJlbH0gdmFsdWU9e29wLnZhbHVlfT5cbiAgICAgICAgICAgICAge29wLmxhYmVsfVxuICAgICAgICAgICAgPC9NZW51SXRlbT5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9TZWxlY3Q+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDwvRm9ybUNvbnRyb2w+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5Ecm9wZG93blF1ZXN0aW9uRmllbGQucHJvcFR5cGVzID0ge1xuICBxdWVzdGlvbjogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBxdWVzdGlvbkNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgaXNEaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgZXJyb3I6IFByb3BUeXBlcy5ib29sLFxuICBoZWxwZXJUZXh0OiBQcm9wVHlwZXMuc3RyaW5nLFxuICBzZXRGaWVsZFZhbHVlOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgRHJvcGRvd25RdWVzdGlvbkZpZWxkO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHtcbiAgRm9ybUNvbnRyb2wsXG4gIEZvcm1Db250cm9sTGFiZWwsXG4gIEZvcm1IZWxwZXJUZXh0LFxuICBGb3JtTGFiZWwsXG4gIFJhZGlvLFxuICBSYWRpb0dyb3VwXG59IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgUmF3SFRNTCBmcm9tIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9jb21wb25lbnRzL3Jhdy1odG1sXCI7XG5pbXBvcnQgeyBnZXRMYWJlbCwgdG9TbHVnIH0gZnJvbSBcIi4vdXRpbHNcIjtcblxuY29uc3QgUmFkaW9MaXN0UXVlc3Rpb25GaWVsZCA9ICh7XG4gIHF1ZXN0aW9uLFxuICBxdWVzdGlvbkNsYXNzTmFtZSA9IFwiXCIsXG4gIGlzRGlzYWJsZWQgPSBmYWxzZSxcbiAgY2hpbGRyZW4sXG4gIGVycm9yLFxuICBoZWxwZXJUZXh0LFxuICBzZXRGaWVsZFZhbHVlLFxuICAuLi5yZXN0XG59KSA9PiB7XG4gIGNvbnN0IHF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhxdWVzdGlvbi5uYW1lLCBxdWVzdGlvbi5pZCk7XG4gIGNvbnN0IHF1ZXN0aW9uTGFiZWwgPSBnZXRMYWJlbChxdWVzdGlvbik7XG4gIGNvbnN0IGlzUmVxdWlyZWQgPSBxdWVzdGlvbi5tYW5kYXRvcnk7XG5cbiAgY29uc3QgcXVlc3Rpb25PcHRpb25zID1cbiAgICBxdWVzdGlvbi52YWx1ZXM/Lm1hcCgodmFsKSA9PiAoe1xuICAgICAgbGFiZWw6IHZhbC5sYWJlbCxcbiAgICAgIHZhbHVlOiB2YWwuaWQudG9TdHJpbmcoKVxuICAgIH0pKSB8fCBbXTtcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGtleT17cXVlc3Rpb25TbHVnfVxuICAgICAgaWQ9e2Ake3F1ZXN0aW9uU2x1Z31fY29udGFpbmVyYH1cbiAgICAgIGNsYXNzTmFtZT17cXVlc3Rpb25DbGFzc05hbWV9XG4gICAgPlxuICAgICAgPEZvcm1Db250cm9sXG4gICAgICAgIGRpc2FibGVkPXtpc0Rpc2FibGVkfVxuICAgICAgICByZXF1aXJlZD17aXNSZXF1aXJlZH1cbiAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgIG1hcmdpbj1cIm5vcm1hbFwiXG4gICAgICAgIGVycm9yPXtlcnJvcn1cbiAgICAgID5cbiAgICAgICAgPEZvcm1MYWJlbCBpZD17YCR7cXVlc3Rpb25TbHVnfV9sYWJlbGB9PlxuICAgICAgICAgIDxSYXdIVE1MPntxdWVzdGlvbkxhYmVsfTwvUmF3SFRNTD5cbiAgICAgICAgPC9Gb3JtTGFiZWw+XG4gICAgICAgIHtlcnJvciAmJiA8Rm9ybUhlbHBlclRleHQ+e2hlbHBlclRleHQgPz8gXCIgXCJ9PC9Gb3JtSGVscGVyVGV4dD59XG4gICAgICAgIDxSYWRpb0dyb3VwXG4gICAgICAgICAgYXJpYS1sYWJlbGxlZGJ5PXtgJHtxdWVzdGlvblNsdWd9X2xhYmVsYH1cbiAgICAgICAgICBuYW1lPXtxdWVzdGlvblNsdWd9XG4gICAgICAgICAgLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2pzeC1wcm9wcy1uby1zcHJlYWRpbmcgKi9cbiAgICAgICAgICB7Li4ucmVzdH1cbiAgICAgICAgPlxuICAgICAgICAgIHtxdWVzdGlvbk9wdGlvbnMubWFwKChvcCkgPT4gKFxuICAgICAgICAgICAgPEZvcm1Db250cm9sTGFiZWxcbiAgICAgICAgICAgICAga2V5PXtvcC5sYWJlbH1cbiAgICAgICAgICAgICAgdmFsdWU9e29wLnZhbHVlfVxuICAgICAgICAgICAgICBjb250cm9sPXs8UmFkaW8gLz59XG4gICAgICAgICAgICAgIGxhYmVsPXtvcC5sYWJlbH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvUmFkaW9Hcm91cD5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgPC9Gb3JtQ29udHJvbD5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cblJhZGlvTGlzdFF1ZXN0aW9uRmllbGQucHJvcFR5cGVzID0ge1xuICBxdWVzdGlvbjogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBxdWVzdGlvbkNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgaXNEaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgZXJyb3I6IFByb3BUeXBlcy5ib29sLFxuICBoZWxwZXJUZXh0OiBQcm9wVHlwZXMuc3RyaW5nLFxuICBzZXRGaWVsZFZhbHVlOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgUmFkaW9MaXN0UXVlc3Rpb25GaWVsZDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IEZvcm1Hcm91cCwgVGV4dEZpZWxkIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IGdldExhYmVsLCB0b1NsdWcgfSBmcm9tIFwiLi91dGlsc1wiO1xuXG5jb25zdCBUZXh0UXVlc3Rpb25GaWVsZCA9ICh7XG4gIHF1ZXN0aW9uLFxuICBxdWVzdGlvbkNsYXNzTmFtZSA9IFwiXCIsXG4gIGlzRGlzYWJsZWQgPSBmYWxzZSxcbiAgY2hpbGRyZW4sXG4gIHNldEZpZWxkVmFsdWUsXG4gIC4uLnJlc3Rcbn0pID0+IHtcbiAgY29uc3QgcXVlc3Rpb25TbHVnID0gdG9TbHVnKHF1ZXN0aW9uLm5hbWUsIHF1ZXN0aW9uLmlkKTtcbiAgY29uc3QgcXVlc3Rpb25MYWJlbCA9IGdldExhYmVsKHF1ZXN0aW9uKTtcbiAgY29uc3QgaXNSZXF1aXJlZCA9IHF1ZXN0aW9uLm1hbmRhdG9yeTtcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGtleT17cXVlc3Rpb25TbHVnfVxuICAgICAgaWQ9e2Ake3F1ZXN0aW9uU2x1Z31fY29udGFpbmVyYH1cbiAgICAgIGNsYXNzTmFtZT17cXVlc3Rpb25DbGFzc05hbWV9XG4gICAgPlxuICAgICAgPEZvcm1Hcm91cD5cbiAgICAgICAgPFRleHRGaWVsZFxuICAgICAgICAgIG5hbWU9e3F1ZXN0aW9uU2x1Z31cbiAgICAgICAgICBsYWJlbD17cXVlc3Rpb25MYWJlbH1cbiAgICAgICAgICBkaXNhYmxlZD17aXNEaXNhYmxlZH1cbiAgICAgICAgICByZXF1aXJlZD17aXNSZXF1aXJlZH1cbiAgICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgICBtYXJnaW49XCJub3JtYWxcIlxuICAgICAgICAgIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nICovXG4gICAgICAgICAgey4uLnJlc3R9XG4gICAgICAgIC8+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDwvRm9ybUdyb3VwPlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuVGV4dFF1ZXN0aW9uRmllbGQucHJvcFR5cGVzID0ge1xuICBxdWVzdGlvbjogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBxdWVzdGlvbkNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgaXNEaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgc2V0RmllbGRWYWx1ZTogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFRleHRRdWVzdGlvbkZpZWxkO1xuIiwiaW1wb3J0IHtcbiAgUXVlc3Rpb25UeXBlX0NoZWNrYm94LFxuICBRdWVzdGlvblR5cGVfQ2hlY2tCb3hMaXN0LFxuICBRdWVzdGlvblR5cGVfQ29tYm9Cb3gsXG4gIFF1ZXN0aW9uVHlwZV9Db3VudHJ5Q29tYm9Cb3gsXG4gIFF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbkxpc3Rcbn0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xuXG5leHBvcnQgY29uc3QgY2hlY2tSdWxlID0gKHZhbHVlLCBydWxlKSA9PiB7XG4gIGNvbnN0IHZhbHVlcyA9IHJ1bGUuYW5zd2VyX3ZhbHVlcztcblxuICBpZiAoIXZhbHVlKSByZXR1cm4gZmFsc2U7XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgaWYgKCF2YWx1ZS5sZW5ndGgpIHJldHVybiBmYWxzZTtcbiAgICBsZXQgcmVzID0gcnVsZS5hbnN3ZXJfdmFsdWVzX29wZXJhdG9yID09PSBcIkFuZFwiO1xuICAgIHZhbHVlcy5mb3JFYWNoKCh2KSA9PiB7XG4gICAgICBpZiAocnVsZS5hbnN3ZXJfdmFsdWVzX29wZXJhdG9yID09PSBcIkFuZFwiKSB7XG4gICAgICAgIHJlcyA9IHJlcyAmJiB2YWx1ZS5pbmNsdWRlcyh2KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIE9yXG4gICAgICAgIHJlcyA9IHJlcyB8fCB2YWx1ZS5pbmNsdWRlcyh2KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gcmVzO1xuICB9XG4gIHJldHVybiB2YWx1ZXMuaW5jbHVkZXModmFsdWU/LnRvU3RyaW5nKCkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGNoZWNrVmlzaWJpbGl0eSA9IChydWxlLCBydWxlUmVzdWx0KSA9PiB7XG4gIGlmIChydWxlLnZpc2liaWxpdHkgPT09IFwiVmlzaWJsZVwiKSB7XG4gICAgaWYgKHJ1bGUudmlzaWJpbGl0eV9jb25kaXRpb24gPT09IFwiRXF1YWxcIikge1xuICAgICAgcmV0dXJuICEhcnVsZVJlc3VsdDtcbiAgICB9XG4gICAgLy8gTm9uIEVxdWFsXG4gICAgcmV0dXJuICFydWxlUmVzdWx0O1xuICB9XG4gIC8vIG5vdCB2aXNpYmxlXG4gIGlmIChydWxlLnZpc2liaWxpdHlfY29uZGl0aW9uID09PSBcIkVxdWFsXCIpIHtcbiAgICByZXR1cm4gIXJ1bGVSZXN1bHQ7XG4gIH1cbiAgcmV0dXJuICEhcnVsZVJlc3VsdDtcbn07XG5cbmV4cG9ydCBjb25zdCB0b1NsdWcgPSAodGV4dCwgcXVlc3Rpb25JZCkgPT4ge1xuICBjb25zdCB0ZXh0TEMgPSB0ZXh0LnRvTG93ZXJDYXNlKCk7XG4gIHJldHVybiBgJHt0ZXh0TEMucmVwbGFjZSgvW15hLXpBLVowLTldKy9nLCBcIl9cIil9XyR7cXVlc3Rpb25JZH1gO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldExhYmVsID0gKHEpID0+XG4gIC8vIHJlcGxhY2UgbGluZSBicmVha3MgYW5kIHJlbW92ZSBvdXRlciA8cD5cbiAgcT8ubGFiZWw/LnJlcGxhY2UoL1xcbi9nLCBcIiBcIikucmVwbGFjZSgvPHA+KC4qKTxcXC9wPi9naSwgXCIkMVwiKTtcblxuZXhwb3J0IGNvbnN0IGlzQW5zd2VyZWQgPSAoYW5zd2VyKSA9PiB7XG4gIGlmICghYW5zd2VyKSByZXR1cm4gZmFsc2U7XG4gIC8vIGNoZWNrIHR5cGVcbiAgaWYgKEFycmF5LmlzQXJyYXkoYW5zd2VyKSkgcmV0dXJuIGFuc3dlci5sZW5ndGggPiAwO1xuICBpZiAodHlwZW9mIGFuc3dlciA9PT0gXCJzdHJpbmdcIikgcmV0dXJuIGFuc3dlci5sZW5ndGggPiAwO1xuICBpZiAodHlwZW9mIGFuc3dlciA9PT0gXCJudW1iZXJcIikgcmV0dXJuIGFuc3dlciA+IDA7XG4gIGlmICh0eXBlb2YgYW5zd2VyID09PSBcImJvb2xlYW5cIikgcmV0dXJuIGFuc3dlcjtcbiAgcmV0dXJuIGZhbHNlO1xufTtcblxuZXhwb3J0IGNvbnN0IGNoZWNrSWZWYWx1ZU1hdGNoID0gKGFuc3dlciwgY29tcGFyZVZhbCkgPT4ge1xuICBjb25zdCBhbnN3ZXJBcnJheSA9IEFycmF5LmlzQXJyYXkoYW5zd2VyKSA/IGFuc3dlciA6IFthbnN3ZXJdO1xuXG4gIHJldHVybiBhbnN3ZXJBcnJheS5zb21lKCh2KSA9PiB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoY29tcGFyZVZhbCkpIHtcbiAgICAgIHJldHVybiBjb21wYXJlVmFsLmluY2x1ZGVzKGAke3Z9YCk7XG4gICAgfVxuICAgIHJldHVybiBgJHt2fWAgPT09IGAke2NvbXBhcmVWYWx9YDtcbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0VHlwZUluaXRpYWxWYWx1ZSA9IChxKSA9PiB7XG4gIHN3aXRjaCAocS50eXBlKSB7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ2hlY2tib3g6XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0OlxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ2hlY2tCb3hMaXN0OlxuICAgICAgcmV0dXJuIFtdO1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveDpcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9Db21ib0JveDpcbiAgICAgIHJldHVybiBcIlwiO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gXCJcIjtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGdldFR5cGVWYWx1ZSA9IChhbnMsIHR5cGUpID0+IHtcbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ2hlY2tib3g6XG4gICAgICByZXR1cm4gYW5zID09PSBcInRydWVcIjtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3Q6XG4gICAgICByZXR1cm4gYW5zPy5zcGxpdChcIixcIikgfHwgW107XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ291bnRyeUNvbWJvQm94OlxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NvbWJvQm94OlxuICAgICAgcmV0dXJuIGFucyB8fCBcIlwiO1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdDpcbiAgICAgIHJldHVybiBhbnMgfHwgbnVsbDtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGFucztcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IHRyYW5zZm9ybUFud2Vyc0Zvcm1hdCA9IChhbnN3ZXJzKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBhdHRlbmRlZV9lbWFpbCxcbiAgICBhdHRlbmRlZV9maXJzdF9uYW1lLFxuICAgIGF0dGVuZGVlX2xhc3RfbmFtZSxcbiAgICBhdHRlbmRlZV9jb21wYW55LFxuICAgIGRpc2NsYWltZXJfYWNjZXB0ZWQsXG4gICAgLi4uZXh0cmFfcXVlc3Rpb25zXG4gIH0gPSBhbnN3ZXJzO1xuXG4gIGNvbnN0IGZvcm1hdHRlZEVRID0gT2JqZWN0LmVudHJpZXMoZXh0cmFfcXVlc3Rpb25zKS5tYXAoKFtrZXksIHZhbHVlXSkgPT4gKHtcbiAgICBxdWVzdGlvbl9pZDogcGFyc2VJbnQoa2V5LnNwbGl0KFwiX1wiKS5wb3AoKSwgMTApLFxuICAgIGFuc3dlcjogdmFsdWU/LnRvU3RyaW5nKCkgfHwgbnVsbFxuICB9KSk7XG5cbiAgcmV0dXJuIHtcbiAgICBhdHRlbmRlZV9lbWFpbCxcbiAgICBhdHRlbmRlZV9maXJzdF9uYW1lLFxuICAgIGF0dGVuZGVlX2xhc3RfbmFtZSxcbiAgICBhdHRlbmRlZV9jb21wYW55LFxuICAgIGRpc2NsYWltZXJfYWNjZXB0ZWQsXG4gICAgZXh0cmFfcXVlc3Rpb25zOiBmb3JtYXR0ZWRFUVxuICB9O1xufTtcbiIsImV4cG9ydCBjb25zdCBRdWVzdGlvblR5cGVfVGV4dCA9IFwiVGV4dFwiO1xuZXhwb3J0IGNvbnN0IFF1ZXN0aW9uVHlwZV9UZXh0QXJlYSA9IFwiVGV4dEFyZWFcIjtcbmV4cG9ydCBjb25zdCBRdWVzdGlvblR5cGVfQ2hlY2tib3ggPSBcIkNoZWNrQm94XCI7XG5leHBvcnQgY29uc3QgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdCA9IFwiUmFkaW9CdXR0b25MaXN0XCI7XG5leHBvcnQgY29uc3QgUXVlc3Rpb25UeXBlX0NvbWJvQm94ID0gXCJDb21ib0JveFwiO1xuZXhwb3J0IGNvbnN0IFF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3QgPSBcIkNoZWNrQm94TGlzdFwiO1xuZXhwb3J0IGNvbnN0IFF1ZXN0aW9uVHlwZV9Db3VudHJ5Q29tYm9Cb3ggPSBcIkNvdW50cnlDb21ib0JveFwiO1xuZXhwb3J0IGNvbnN0IFF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbiA9IFwiUmFkaW9CdXR0b25cIjtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTcgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcblxuaW1wb3J0IHtcbiAgdG9TbHVnLFxuICBpc0Fuc3dlcmVkLFxuICBjaGVja1Zpc2liaWxpdHksXG4gIGNoZWNrUnVsZVxufSBmcm9tIFwiLi9jb21wb25lbnRzL3V0aWxzXCI7XG5pbXBvcnQge1xuICBRdWVzdGlvblR5cGVfQ2hlY2tib3gsXG4gIFF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3QsXG4gIFF1ZXN0aW9uVHlwZV9Db21ib0JveCxcbiAgUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveCxcbiAgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdCxcbiAgUXVlc3Rpb25UeXBlX1RleHQsXG4gIFF1ZXN0aW9uVHlwZV9UZXh0QXJlYVxufSBmcm9tIFwiLi9jb25zdGFudHNcIjtcbmltcG9ydCBUZXh0UXVlc3Rpb25GaWVsZCBmcm9tIFwiLi9jb21wb25lbnRzL1RleHRRdWVzdGlvbkZpZWxkXCI7XG5pbXBvcnQgQ2hlY2tib3hRdWVzdGlvbkZpZWxkIGZyb20gXCIuL2NvbXBvbmVudHMvQ2hlY2tib3hRdWVzdGlvbkZpZWxkXCI7XG5pbXBvcnQgUmFkaW9MaXN0UXVlc3Rpb25GaWVsZCBmcm9tIFwiLi9jb21wb25lbnRzL1JhZGlvTGlzdFF1ZXN0aW9uRmllbGRcIjtcbmltcG9ydCBDaGVja2JveExpc3RRdWVzdGlvbkZpZWxkIGZyb20gXCIuL2NvbXBvbmVudHMvQ2hlY2tib3hMaXN0UXVlc3Rpb25GaWVsZFwiO1xuaW1wb3J0IERyb3Bkb3duUXVlc3Rpb25GaWVsZCBmcm9tIFwiLi9jb21wb25lbnRzL0Ryb3Bkb3duUXVlc3Rpb25GaWVsZFwiO1xuXG5jb25zdCBnZXRRdWVzdGlvbkZpZWxkQ29tcG9uZW50ID0gKHF1ZXN0aW9uVHlwZSkgPT4ge1xuICBzd2l0Y2ggKHF1ZXN0aW9uVHlwZSkge1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX1RleHRBcmVhOlxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX1RleHQ6IHtcbiAgICAgIHJldHVybiBUZXh0UXVlc3Rpb25GaWVsZDtcbiAgICB9XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ2hlY2tib3g6IHtcbiAgICAgIHJldHVybiBDaGVja2JveFF1ZXN0aW9uRmllbGQ7XG4gICAgfVxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdDoge1xuICAgICAgcmV0dXJuIFJhZGlvTGlzdFF1ZXN0aW9uRmllbGQ7XG4gICAgfVxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdDoge1xuICAgICAgcmV0dXJuIENoZWNrYm94TGlzdFF1ZXN0aW9uRmllbGQ7XG4gICAgfVxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveDpcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9Db21ib0JveDoge1xuICAgICAgcmV0dXJuIERyb3Bkb3duUXVlc3Rpb25GaWVsZDtcbiAgICB9XG4gICAgZGVmYXVsdDoge1xuICAgICAgcmV0dXJuIFJlYWN0LkZyYWdtZW50O1xuICAgIH1cbiAgfVxufTtcblxuY29uc3QgRXh0cmFRdWVzdGlvbnNGaWVsZHMgPSAoe1xuICBleHRyYVF1ZXN0aW9ucyxcbiAgb3JpZ2luYWxBbnN3ZXJzLFxuICBjbGFzc05hbWUgPSBcImV4dHJhUXVlc3Rpb25zXCIsXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lID0gXCJleHRyYVF1ZXN0aW9uXCIsXG4gIHJlYWRPbmx5ID0gZmFsc2UsXG4gIGFsbG93RWRpdCA9IHRydWUsXG4gIGZvcm1pa1xufSkgPT4ge1xuICBjb25zdCByZW5kZXJSdWxlID0gKHJ1bGUsIHF1ZXN0aW9uU2x1ZykgPT4ge1xuICAgIGNvbnN0IHJ1bGVSZXN1bHQgPSBjaGVja1J1bGUoZm9ybWlrLnZhbHVlc1txdWVzdGlvblNsdWddLCBydWxlKTtcbiAgICBjb25zdCBpc1Zpc2libGUgPSBjaGVja1Zpc2liaWxpdHkocnVsZSwgcnVsZVJlc3VsdCk7XG5cbiAgICBpZiAoaXNWaXNpYmxlKSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdXNlLWJlZm9yZS1kZWZpbmVcbiAgICAgIHJldHVybiByZW5kZXJRdWVzdGlvbihydWxlLnN1Yl9xdWVzdGlvbik7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH07XG5cbiAgY29uc3QgcmVuZGVyUXVlc3Rpb24gPSAocSkgPT4ge1xuICAgIGNvbnN0IHF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhxLm5hbWUsIHEuaWQpO1xuICAgIC8vIGRpc2FibGUgZmllbGQgaWYgZWRpdCBpc24ndCBhbGxvd2VkIGFuZCB0aGUgcXVlc3Rpb25zIGlzIGFuc3dlcmVkXG4gICAgY29uc3QgaXNEaXNhYmxlZCA9XG4gICAgICAoIWFsbG93RWRpdCAmJiBpc0Fuc3dlcmVkKG9yaWdpbmFsQW5zd2Vyc1txdWVzdGlvblNsdWddKSkgfHwgcmVhZE9ubHk7XG4gICAgY29uc3QgUXVlc3Rpb25GaWVsZENvbXBvbmVudCA9IGdldFF1ZXN0aW9uRmllbGRDb21wb25lbnQocS50eXBlKTtcblxuICAgIGNvbnN0IGZvcm1pa1Byb3BzID0ge1xuICAgICAgdmFsdWU6IGZvcm1pay52YWx1ZXNbcXVlc3Rpb25TbHVnXSxcbiAgICAgIG9uQ2hhbmdlOiBmb3JtaWsuaGFuZGxlQ2hhbmdlLFxuICAgICAgb25CbHVyOiBmb3JtaWsuaGFuZGxlQmx1cixcbiAgICAgIGVycm9yOlxuICAgICAgICBmb3JtaWsudG91Y2hlZFtxdWVzdGlvblNsdWddICYmIEJvb2xlYW4oZm9ybWlrLmVycm9yc1txdWVzdGlvblNsdWddKSxcbiAgICAgIGhlbHBlclRleHQ6IGZvcm1pay50b3VjaGVkW3F1ZXN0aW9uU2x1Z10gJiYgZm9ybWlrLmVycm9yc1txdWVzdGlvblNsdWddLFxuICAgICAgc2V0RmllbGRWYWx1ZTogZm9ybWlrLnNldEZpZWxkVmFsdWVcbiAgICB9O1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxRdWVzdGlvbkZpZWxkQ29tcG9uZW50XG4gICAgICAgIGtleT17cXVlc3Rpb25TbHVnfVxuICAgICAgICBxdWVzdGlvbj17cX1cbiAgICAgICAgcXVlc3Rpb25DbGFzc05hbWU9e3F1ZXN0aW9uQ2xhc3NOYW1lfVxuICAgICAgICBpc0Rpc2FibGVkPXtpc0Rpc2FibGVkfVxuICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvanN4LXByb3BzLW5vLXNwcmVhZGluZyAqL1xuICAgICAgICB7Li4uZm9ybWlrUHJvcHN9XG4gICAgICA+XG4gICAgICAgIHtxLnN1Yl9xdWVzdGlvbl9ydWxlcz8ubWFwKChydWxlKSA9PiByZW5kZXJSdWxlKHJ1bGUsIHF1ZXN0aW9uU2x1ZykpfVxuICAgICAgPC9RdWVzdGlvbkZpZWxkQ29tcG9uZW50PlxuICAgICk7XG4gIH07XG5cbiAgcmV0dXJuIDxkaXYgY2xhc3NOYW1lPXtjbGFzc05hbWV9PntleHRyYVF1ZXN0aW9ucy5tYXAocmVuZGVyUXVlc3Rpb24pfTwvZGl2Pjtcbn07XG5cbkV4dHJhUXVlc3Rpb25zRmllbGRzLnByb3BUeXBlcyA9IHtcbiAgZXh0cmFRdWVzdGlvbnM6IFByb3BUeXBlcy5hcnJheS5pc1JlcXVpcmVkLFxuICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBhbGxvd0VkaXQ6IFByb3BUeXBlcy5ib29sLFxuICByZWFkT25seTogUHJvcFR5cGVzLmJvb2xcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEV4dHJhUXVlc3Rpb25zRmllbGRzO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VTZWxlY3Rvciwgc2hhbGxvd0VxdWFsIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQge1xuICBCb3gsXG4gIEZvcm1Db250cm9sTGFiZWwsXG4gIENhcmRIZWFkZXIsXG4gIEljb25CdXR0b24sXG4gIENvbGxhcHNlLFxuICBDYXJkQ29udGVudCxcbiAgUmFkaW9Hcm91cCxcbiAgUmFkaW9cbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBFeHBhbmRNb3JlSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9FeHBhbmRNb3JlXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgeyBGSUxURVJfVkFSX1RJQ0tFVF9BU1NJR05FRCB9IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5cbmNvbnN0IEFzc2lnbmVkRmlsdGVyID0gKHsgb25GaWx0ZXIgfSkgPT4ge1xuICBjb25zdCB7XG4gICAgZmlsdGVyOiB7IEZJTFRFUl9WQVJfVElDS0VUX0FTU0lHTkVEOiBmaWx0ZXJWYWx1ZXMgfVxuICB9ID0gdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSB8fCB7fSwgc2hhbGxvd0VxdWFsKTtcblxuICBjb25zdCBbaXNFeHBhbmRlZCwgc2V0SXNFeHBhbmRlZF0gPSB1c2VTdGF0ZSghIWZpbHRlclZhbHVlcyk7XG5cbiAgY29uc3QgYXNzaWduZWRWYWx1ZXMgPSBbXG4gICAgeyB2YWx1ZTogXCJNZVwiLCBsYWJlbDogXCJNZVwiIH0sXG4gICAgeyB2YWx1ZTogXCJTb21lb25lRWxzZVwiLCBsYWJlbDogXCJTb21lb25lIEVsc2VcIiB9LFxuICAgIHsgdmFsdWU6IFwiTm9ib2R5XCIsIGxhYmVsOiBcIk5vYm9keVwiIH1cbiAgXTtcblxuICBjb25zdCBoYW5kbGVGaWx0ZXJDaGFuZ2UgPSAoZXYsIHZhbHVlKSA9PiB7XG4gICAgY29uc3QgbmV3RmlsdGVyID0gdmFsdWU7XG4gICAgb25GaWx0ZXIoe1xuICAgICAgW0ZJTFRFUl9WQVJfVElDS0VUX0FTU0lHTkVEXTogbmV3RmlsdGVyXG4gICAgfSk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94PlxuICAgICAgPENhcmRIZWFkZXJcbiAgICAgICAgdGl0bGU9XCJBc3NpZ25lZFwiXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnRpdGxlV3JhcHBlcn1cbiAgICAgICAgb25DbGljaz17KCkgPT4gc2V0SXNFeHBhbmRlZCghaXNFeHBhbmRlZCl9XG4gICAgICAgIGFjdGlvbj17XG4gICAgICAgICAgPEljb25CdXR0b24gYXJpYS1sYWJlbD1cImV4cGFuZFwiIGRpc2FibGVSaXBwbGU+XG4gICAgICAgICAgICA8RXhwYW5kTW9yZUljb25cbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IGlzRXhwYW5kZWQgPyBcInJvdGF0ZSgxODBkZWcpXCIgOiBcInJvdGF0ZSgwZGVnKVwiLFxuICAgICAgICAgICAgICAgIHRyYW5zaXRpb246IFwidHJhbnNmb3JtIDAuM3NcIlxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgIH1cbiAgICAgIC8+XG4gICAgICA8Q29sbGFwc2UgaW49e2lzRXhwYW5kZWR9IHRpbWVvdXQ9XCJhdXRvXCIgdW5tb3VudE9uRXhpdD5cbiAgICAgICAgPENhcmRDb250ZW50XG4gICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgIHB5OiAwLFxuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBcIiMwMDAwMDAwQVwiLFxuICAgICAgICAgICAgXCImOmxhc3QtY2hpbGRcIjoge1xuICAgICAgICAgICAgICBwYjogMFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICA8UmFkaW9Hcm91cCB2YWx1ZT17ZmlsdGVyVmFsdWVzfSBvbkNoYW5nZT17aGFuZGxlRmlsdGVyQ2hhbmdlfT5cbiAgICAgICAgICAgIHthc3NpZ25lZFZhbHVlcy5tYXAoKGFzc2lnbmVkKSA9PiAoXG4gICAgICAgICAgICAgIDxCb3hcbiAgICAgICAgICAgICAgICBzeD17eyBweTogMSB9fVxuICAgICAgICAgICAgICAgIGtleT17YGZpbHRlci1iYWRnZS1mZWF0dXJlLSR7YXNzaWduZWQubGFiZWx9fWB9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8Rm9ybUNvbnRyb2xMYWJlbFxuICAgICAgICAgICAgICAgICAgY29udHJvbD17XG4gICAgICAgICAgICAgICAgICAgIDxSYWRpb1xuICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXthc3NpZ25lZC52YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICAgICAgICAgICAgXCImIC5NdWlTdmdJY29uLXJvb3RcIjogeyBmb250U2l6ZTogMTggfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiJi5NdWktY2hlY2tlZFwiOiB7IGNvbG9yOiBcIiMyMTk2RjNcIiB9XG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIGxhYmVsPXthc3NpZ25lZC5sYWJlbH1cbiAgICAgICAgICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICAgICAgICAgIFwiJiAuTXVpRm9ybUNvbnRyb2xMYWJlbC1sYWJlbFwiOiB7XG4gICAgICAgICAgICAgICAgICAgICAgZm9udFNpemU6IFwiMWVtXCJcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgICkpfVxuICAgICAgICAgIDwvUmFkaW9Hcm91cD5cbiAgICAgICAgPC9DYXJkQ29udGVudD5cbiAgICAgIDwvQ29sbGFwc2U+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5Bc3NpZ25lZEZpbHRlci5wcm9wVHlwZXMgPSB7XG4gIG9uRmlsdGVyOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgQXNzaWduZWRGaWx0ZXI7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlU2VsZWN0b3IsIHNoYWxsb3dFcXVhbCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHtcbiAgQm94LFxuICBGb3JtQ29udHJvbExhYmVsLFxuICBDaGVja2JveCxcbiAgQ2FyZEhlYWRlcixcbiAgSWNvbkJ1dHRvbixcbiAgQ29sbGFwc2UsXG4gIENhcmRDb250ZW50XG59IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgRXhwYW5kTW9yZUljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRXhwYW5kTW9yZVwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHsgRklMVEVSX1ZBUl9CQURHRV9GRUFUVVJFIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcblxuY29uc3QgQmFkZ2VGZWF0dXJlRmlsdGVyID0gKHsgb25GaWx0ZXIgfSkgPT4ge1xuICBjb25zdCB7XG4gICAgc3VtbWl0OiB7IGJhZGdlX2ZlYXR1cmVzX3R5cGVzIH0sXG4gICAgZmlsdGVyOiB7IEZJTFRFUl9WQVJfQkFER0VfRkVBVFVSRTogZmlsdGVyVmFsdWVzIH1cbiAgfSA9IHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUgfHwge30sIHNoYWxsb3dFcXVhbCk7XG5cbiAgY29uc3QgW2lzRXhwYW5kZWQsIHNldElzRXhwYW5kZWRdID0gdXNlU3RhdGUoISFmaWx0ZXJWYWx1ZXMubGVuZ3RoKTtcblxuICBjb25zdCBoYW5kbGVGaWx0ZXJDaGFuZ2UgPSAodmFsdWUpID0+IHtcbiAgICBjb25zdCBuZXdGaWx0ZXJzID0gZmlsdGVyVmFsdWVzPy5pbmNsdWRlcyh2YWx1ZSlcbiAgICAgID8gZmlsdGVyVmFsdWVzLmZpbHRlcigoZikgPT4gZiAhPT0gdmFsdWUpXG4gICAgICA6IFsuLi5maWx0ZXJWYWx1ZXMsIHZhbHVlXTtcbiAgICBvbkZpbHRlcih7XG4gICAgICBbRklMVEVSX1ZBUl9CQURHRV9GRUFUVVJFXTogbmV3RmlsdGVyc1xuICAgIH0pO1xuICB9O1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc2V0SXNFeHBhbmRlZCghIWZpbHRlclZhbHVlcy5sZW5ndGgpO1xuICB9LCBbZmlsdGVyVmFsdWVzXSk7XG5cbiAgaWYgKCFiYWRnZV9mZWF0dXJlc190eXBlcyB8fCBiYWRnZV9mZWF0dXJlc190eXBlcy5sZW5ndGggPT09IDApIHJldHVybiBudWxsO1xuXG4gIHJldHVybiAoXG4gICAgPEJveD5cbiAgICAgIDxDYXJkSGVhZGVyXG4gICAgICAgIHRpdGxlPVwiQmFkZ2UgRmVhdHVyZVwiXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnRpdGxlV3JhcHBlcn1cbiAgICAgICAgb25DbGljaz17KCkgPT4gc2V0SXNFeHBhbmRlZCghaXNFeHBhbmRlZCl9XG4gICAgICAgIGFjdGlvbj17XG4gICAgICAgICAgPEljb25CdXR0b24gYXJpYS1sYWJlbD1cImV4cGFuZFwiIGRpc2FibGVSaXBwbGU+XG4gICAgICAgICAgICA8RXhwYW5kTW9yZUljb25cbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IGlzRXhwYW5kZWQgPyBcInJvdGF0ZSgxODBkZWcpXCIgOiBcInJvdGF0ZSgwZGVnKVwiLFxuICAgICAgICAgICAgICAgIHRyYW5zaXRpb246IFwidHJhbnNmb3JtIDAuM3NcIlxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgIH1cbiAgICAgIC8+XG4gICAgICA8Q29sbGFwc2UgaW49e2lzRXhwYW5kZWR9IHRpbWVvdXQ9XCJhdXRvXCIgdW5tb3VudE9uRXhpdD5cbiAgICAgICAgPENhcmRDb250ZW50XG4gICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgIHB5OiAwLFxuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBcIiMwMDAwMDAwQVwiLFxuICAgICAgICAgICAgXCImOmxhc3QtY2hpbGRcIjoge1xuICAgICAgICAgICAgICBwYjogMFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICB7YmFkZ2VfZmVhdHVyZXNfdHlwZXMubWFwKChiZikgPT4gKFxuICAgICAgICAgICAgPEJveCBzeD17eyBweTogMSB9fSBrZXk9e2BmaWx0ZXItYmFkZ2UtZmVhdHVyZS0ke2JmLm5hbWV9fWB9PlxuICAgICAgICAgICAgICA8Rm9ybUNvbnRyb2xMYWJlbFxuICAgICAgICAgICAgICAgIGNvbnRyb2w9e1xuICAgICAgICAgICAgICAgICAgPENoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoKSA9PiBoYW5kbGVGaWx0ZXJDaGFuZ2UoYmYuaWQpfVxuICAgICAgICAgICAgICAgICAgICBjaGVja2VkPXtmaWx0ZXJWYWx1ZXMuaW5jbHVkZXMoYmYuaWQpfVxuICAgICAgICAgICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICAgICAgICAgIFwiJiAuTXVpU3ZnSWNvbi1yb290XCI6IHsgZm9udFNpemU6IDE4IH0sXG4gICAgICAgICAgICAgICAgICAgICAgXCImLk11aS1jaGVja2VkXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBcIiMyMTk2RjNcIlxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGxhYmVsPXtiZi5uYW1lfVxuICAgICAgICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICAgICAgICBcIiYgLk11aUZvcm1Db250cm9sTGFiZWwtbGFiZWxcIjoge1xuICAgICAgICAgICAgICAgICAgICBmb250U2l6ZTogXCIxZW1cIlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9DYXJkQ29udGVudD5cbiAgICAgIDwvQ29sbGFwc2U+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5CYWRnZUZlYXR1cmVGaWx0ZXIucHJvcFR5cGVzID0ge1xuICBvbkZpbHRlcjogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEJhZGdlRmVhdHVyZUZpbHRlcjtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSwgdXNlUmVmLCB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCBTdGFjayBmcm9tIFwiQG11aS9tYXRlcmlhbC9TdGFja1wiO1xuaW1wb3J0IEZpbHRlckxpc3RJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0ZpbHRlckxpc3RcIjtcbmltcG9ydCB7XG4gIEJhZGdlLFxuICBCb3gsXG4gIEJ1dHRvbixcbiAgQ2FyZCxcbiAgQ2FyZEhlYWRlcixcbiAgRGl2aWRlcixcbiAgUGFwZXJcbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IGNvbm5lY3QgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCBCYWRnZUZlYXR1cmVGaWx0ZXIgZnJvbSBcIi4vQmFkZ2VGZWF0dXJlRmlsdGVyXCI7XG5pbXBvcnQge1xuICBGSUxURVJfVkFSX0JBREdFX0ZFQVRVUkUsXG4gIEZJTFRFUl9WQVJfRlJFRV9QQUlELFxuICBGSUxURVJfVkFSX09XTkVSX1NUQVRVUyxcbiAgRklMVEVSX1ZBUl9QUk9NT0NPREUsXG4gIEZJTFRFUl9WQVJfVElDS0VUX0FTU0lHTkVELFxuICBGSUxURVJfVkFSX1RJQ0tFVF9UWVBFXG59IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5pbXBvcnQgVGlja2V0VHlwZUZpbHRlciBmcm9tIFwiLi9UaWNrZXRUeXBlRmlsdGVyXCI7XG5pbXBvcnQgQXNzaWduZWRGaWx0ZXIgZnJvbSBcIi4vQXNzaWduZWRGaWx0ZXJcIjtcbmltcG9ydCBTdGF0dXNGaWx0ZXIgZnJvbSBcIi4vU3RhdHVzRmlsdGVyXCI7XG5pbXBvcnQgRnJlZVBhaWRGaWx0ZXIgZnJvbSBcIi4vRnJlZVBhaWRGaWx0ZXJcIjtcbmltcG9ydCBQcm9tb0NvZGVGaWx0ZXIgZnJvbSBcIi4vUHJvbW9Db2RlRmlsdGVyXCI7XG5cbmNvbnN0IEZpbHRlciA9ICh7IG9uRmlsdGVyLCBvblJlc2V0LCBmaWx0ZXIsIGFjdGl2ZUZpbHRlcnNDb3VudCB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgW3Nob3dGaWx0ZXJMaXN0LCBzZXRTaG93RmlsdGVyTGlzdF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtzaG93RGF0ZXBpY2tlciwgc2V0U2hvd0RhdGVwaWNrZXJdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBmaWx0ZXJSZWYgPSB1c2VSZWYobnVsbCk7XG4gIGNvbnN0IGhhbmRsZUZpbHRlckNsaWNrT3V0c2lkZSA9IChldmVudCkgPT4ge1xuICAgIGlmIChmaWx0ZXJSZWYuY3VycmVudCAmJiAhZmlsdGVyUmVmLmN1cnJlbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkge1xuICAgICAgaWYgKHNob3dGaWx0ZXJMaXN0KSB7XG4gICAgICAgIHNldFNob3dGaWx0ZXJMaXN0KGZhbHNlKTtcbiAgICAgICAgc2V0U2hvd0RhdGVwaWNrZXIoZmFsc2UpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgaGFuZGxlRmlsdGVyQ2xpY2tPdXRzaWRlLCBmYWxzZSk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBoYW5kbGVGaWx0ZXJDbGlja091dHNpZGUsIGZhbHNlKTtcbiAgICB9O1xuICB9LCBbc2hvd0ZpbHRlckxpc3RdKTtcblxuICBjb25zdCB0b2dnbGUgPSAoKSA9PiB7XG4gICAgc2V0U2hvd0ZpbHRlckxpc3QoIXNob3dGaWx0ZXJMaXN0KTtcbiAgICBzZXRTaG93RGF0ZXBpY2tlcighc2hvd0RhdGVwaWNrZXIpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUZpbHRlclJlc2V0ID0gKCkgPT4ge1xuICAgIG9uUmVzZXQoKTtcbiAgICB0b2dnbGUoKTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuZmlsdGVyQ29udGFpbmVyfSByZWY9e2ZpbHRlclJlZn0+XG4gICAgICA8U3RhY2tcbiAgICAgICAgYWxpZ25JdGVtcz1cImNlbnRlclwiXG4gICAgICAgIGRpcmVjdGlvbj1cInJvd1wiXG4gICAgICAgIHN4PXt7IHB0OiAyLCBwYjogMiB9fVxuICAgICAgICBvbkNsaWNrPXt0b2dnbGV9XG4gICAgICA+XG4gICAgICAgIDxCYWRnZSBiYWRnZUNvbnRlbnQ9e2FjdGl2ZUZpbHRlcnNDb3VudH0gY29sb3I9XCJwcmltYXJ5XCIgc3g9e3sgbXI6IDEgfX0+XG4gICAgICAgICAgPEZpbHRlckxpc3RJY29uIGZvbnRTaXplPVwibGFyZ2VcIiBjbGFzc05hbWU9e3N0eWxlcy5maWx0ZXJJY29ufSAvPlxuICAgICAgICA8L0JhZGdlPlxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlcy5maWx0ZXJMYWJlbH0+e3QoXCJmaWx0ZXIuZmlsdGVyXCIpfTwvc3Bhbj5cbiAgICAgIDwvU3RhY2s+XG4gICAgICA8Qm94XG4gICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLmZpbHRlckxpc3RDb250YWluZXJ9ICR7c3R5bGVzLmNvbnRhaW5lcn0gJHtcbiAgICAgICAgICBzaG93RmlsdGVyTGlzdCA/IHN0eWxlcy5zaG93RmlsdGVyTGlzdCA6IFwiXCJcbiAgICAgICAgfWB9XG4gICAgICA+XG4gICAgICAgIDxQYXBlciBlbGV2YXRpb249ezh9IGNsYXNzTmFtZT17c3R5bGVzLmZpbHRlckNoZWNrYm94Q29udGFpbmVyfT5cbiAgICAgICAgICA8Q2FyZCB2YXJpYW50PVwib3V0bGluZWRcIj5cbiAgICAgICAgICAgIDxDYXJkSGVhZGVyXG4gICAgICAgICAgICAgIHRpdGxlPVwiRmlsdGVyc1wiXG4gICAgICAgICAgICAgIGFjdGlvbj17XG4gICAgICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICAgICAgZGlzYWJsZVJpcHBsZVxuICAgICAgICAgICAgICAgICAgdmFyaWFudD1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgb25DbGljaz17aGFuZGxlRmlsdGVyUmVzZXR9XG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5jbGVhbkJ1dHRvbn1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB7dChcImZpbHRlci5jbGVhclwiKX1cbiAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxEaXZpZGVyIC8+XG4gICAgICAgICAgICA8QmFkZ2VGZWF0dXJlRmlsdGVyXG4gICAgICAgICAgICAgIHZhbHVlcz17ZmlsdGVyW0ZJTFRFUl9WQVJfQkFER0VfRkVBVFVSRV19XG4gICAgICAgICAgICAgIG9uRmlsdGVyPXsobmV3RmlsdGVyKSA9PiBvbkZpbHRlcihuZXdGaWx0ZXIpfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxBc3NpZ25lZEZpbHRlclxuICAgICAgICAgICAgICB2YWx1ZXM9e2ZpbHRlcltGSUxURVJfVkFSX1RJQ0tFVF9BU1NJR05FRF19XG4gICAgICAgICAgICAgIG9uRmlsdGVyPXsobmV3RmlsdGVyKSA9PiBvbkZpbHRlcihuZXdGaWx0ZXIpfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxTdGF0dXNGaWx0ZXJcbiAgICAgICAgICAgICAgdmFsdWVzPXtmaWx0ZXJbRklMVEVSX1ZBUl9PV05FUl9TVEFUVVNdfVxuICAgICAgICAgICAgICBvbkZpbHRlcj17KG5ld0ZpbHRlcikgPT4gb25GaWx0ZXIobmV3RmlsdGVyKX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8VGlja2V0VHlwZUZpbHRlclxuICAgICAgICAgICAgICB2YWx1ZXM9e2ZpbHRlcltGSUxURVJfVkFSX1RJQ0tFVF9UWVBFXX1cbiAgICAgICAgICAgICAgb25GaWx0ZXI9eyhuZXdGaWx0ZXIpID0+IG9uRmlsdGVyKG5ld0ZpbHRlcil9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPFByb21vQ29kZUZpbHRlclxuICAgICAgICAgICAgICB2YWx1ZXM9e2ZpbHRlcltGSUxURVJfVkFSX1BST01PQ09ERV19XG4gICAgICAgICAgICAgIG9uRmlsdGVyPXsobmV3RmlsdGVyKSA9PiBvbkZpbHRlcihuZXdGaWx0ZXIpfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxGcmVlUGFpZEZpbHRlclxuICAgICAgICAgICAgICB2YWx1ZXM9e2ZpbHRlcltGSUxURVJfVkFSX0ZSRUVfUEFJRF19XG4gICAgICAgICAgICAgIG9uRmlsdGVyPXsobmV3RmlsdGVyKSA9PiBvbkZpbHRlcihuZXdGaWx0ZXIpfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L0NhcmQ+XG4gICAgICAgIDwvUGFwZXI+XG4gICAgICA8L0JveD5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbkZpbHRlci5wcm9wVHlwZXMgPSB7XG4gIG9uRmlsdGVyOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuY29uc3QgbWFwU3RhdGVUb1Byb3BzID0gKHsgd2lkZ2V0U3RhdGUgfSkgPT4gKHtcbiAgc29ydDogd2lkZ2V0U3RhdGUuc29ydCxcbiAgZmlsdGVyOiB3aWRnZXRTdGF0ZS5maWx0ZXIsXG4gIGFjdGl2ZUZpbHRlcnNDb3VudDogd2lkZ2V0U3RhdGUuYWN0aXZlRmlsdGVyc0NvdW50XG59KTtcblxuZXhwb3J0IGRlZmF1bHQgY29ubmVjdChtYXBTdGF0ZVRvUHJvcHMsIHt9KShGaWx0ZXIpO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VTZWxlY3Rvciwgc2hhbGxvd0VxdWFsIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQge1xuICBCb3gsXG4gIEZvcm1Db250cm9sTGFiZWwsXG4gIENhcmRIZWFkZXIsXG4gIEljb25CdXR0b24sXG4gIENvbGxhcHNlLFxuICBDYXJkQ29udGVudCxcbiAgUmFkaW9Hcm91cCxcbiAgUmFkaW9cbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBFeHBhbmRNb3JlSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9FeHBhbmRNb3JlXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgeyBGSUxURVJfVkFSX0ZSRUVfUEFJRCB9IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5cbmNvbnN0IEZyZWVQYWlkRmlsdGVyID0gKHsgb25GaWx0ZXIgfSkgPT4ge1xuICBjb25zdCB7XG4gICAgZmlsdGVyOiB7IEZJTFRFUl9WQVJfRlJFRV9QQUlEOiBmaWx0ZXJWYWx1ZXMgfVxuICB9ID0gdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSB8fCB7fSwgc2hhbGxvd0VxdWFsKTtcblxuICBjb25zdCBbaXNFeHBhbmRlZCwgc2V0SXNFeHBhbmRlZF0gPSB1c2VTdGF0ZSghIWZpbHRlclZhbHVlcyk7XG5cbiAgY29uc3QgYXNzaWduZWRWYWx1ZXMgPSBbXG4gICAgeyB2YWx1ZTogXCJGcmVlXCIsIGxhYmVsOiBcIkZyZWVcIiB9LFxuICAgIHsgdmFsdWU6IFwiUGFpZFwiLCBsYWJlbDogXCJQYWlkXCIgfVxuICBdO1xuXG4gIGNvbnN0IGhhbmRsZUZpbHRlckNoYW5nZSA9IChldiwgdmFsdWUpID0+IHtcbiAgICBjb25zdCBuZXdGaWx0ZXIgPSB2YWx1ZTtcbiAgICBvbkZpbHRlcih7XG4gICAgICBbRklMVEVSX1ZBUl9GUkVFX1BBSURdOiBuZXdGaWx0ZXJcbiAgICB9KTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxCb3g+XG4gICAgICA8Q2FyZEhlYWRlclxuICAgICAgICB0aXRsZT1cIkZyZWUgLyBQYWlkXCJcbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGl0bGVXcmFwcGVyfVxuICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRJc0V4cGFuZGVkKCFpc0V4cGFuZGVkKX1cbiAgICAgICAgYWN0aW9uPXtcbiAgICAgICAgICA8SWNvbkJ1dHRvbiBhcmlhLWxhYmVsPVwiZXhwYW5kXCIgZGlzYWJsZVJpcHBsZT5cbiAgICAgICAgICAgIDxFeHBhbmRNb3JlSWNvblxuICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogaXNFeHBhbmRlZCA/IFwicm90YXRlKDE4MGRlZylcIiA6IFwicm90YXRlKDBkZWcpXCIsXG4gICAgICAgICAgICAgICAgdHJhbnNpdGlvbjogXCJ0cmFuc2Zvcm0gMC4zc1wiXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgfVxuICAgICAgLz5cbiAgICAgIDxDb2xsYXBzZSBpbj17aXNFeHBhbmRlZH0gdGltZW91dD1cImF1dG9cIiB1bm1vdW50T25FeGl0PlxuICAgICAgICA8Q2FyZENvbnRlbnRcbiAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgcHk6IDAsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IFwiIzAwMDAwMDBBXCIsXG4gICAgICAgICAgICBcIiY6bGFzdC1jaGlsZFwiOiB7XG4gICAgICAgICAgICAgIHBiOiAwXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIDxSYWRpb0dyb3VwIHZhbHVlPXtmaWx0ZXJWYWx1ZXN9IG9uQ2hhbmdlPXtoYW5kbGVGaWx0ZXJDaGFuZ2V9PlxuICAgICAgICAgICAge2Fzc2lnbmVkVmFsdWVzLm1hcCgoYXNzaWduZWQpID0+IChcbiAgICAgICAgICAgICAgPEJveFxuICAgICAgICAgICAgICAgIHN4PXt7IHB5OiAxIH19XG4gICAgICAgICAgICAgICAga2V5PXtgZmlsdGVyLWJhZGdlLWZlYXR1cmUtJHthc3NpZ25lZC5sYWJlbH19YH1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxGb3JtQ29udHJvbExhYmVsXG4gICAgICAgICAgICAgICAgICBjb250cm9sPXtcbiAgICAgICAgICAgICAgICAgICAgPFJhZGlvXG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2Fzc2lnbmVkLnZhbHVlfVxuICAgICAgICAgICAgICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICAgICAgICAgICAgICBcIiYgLk11aVN2Z0ljb24tcm9vdFwiOiB7IGZvbnRTaXplOiAxOCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgXCImLk11aS1jaGVja2VkXCI6IHsgY29sb3I6IFwiIzIxOTZGM1wiIH1cbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgbGFiZWw9e2Fzc2lnbmVkLmxhYmVsfVxuICAgICAgICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgICAgICAgXCImIC5NdWlGb3JtQ29udHJvbExhYmVsLWxhYmVsXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgICBmb250U2l6ZTogXCIxZW1cIlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAgKSl9XG4gICAgICAgICAgPC9SYWRpb0dyb3VwPlxuICAgICAgICA8L0NhcmRDb250ZW50PlxuICAgICAgPC9Db2xsYXBzZT5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbkZyZWVQYWlkRmlsdGVyLnByb3BUeXBlcyA9IHtcbiAgb25GaWx0ZXI6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBGcmVlUGFpZEZpbHRlcjtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZVNlbGVjdG9yLCBzaGFsbG93RXF1YWwgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIEJveCxcbiAgQ2FyZEhlYWRlcixcbiAgSWNvbkJ1dHRvbixcbiAgQ29sbGFwc2UsXG4gIENhcmRDb250ZW50LFxuICBUZXh0RmllbGRcbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBFeHBhbmRNb3JlSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9FeHBhbmRNb3JlXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgeyBGSUxURVJfVkFSX1BST01PQ09ERSB9IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5cbmNvbnN0IFByb21vQ29kZUZpbHRlciA9ICh7IG9uRmlsdGVyIH0pID0+IHtcbiAgY29uc3Qge1xuICAgIGZpbHRlcjogeyBGSUxURVJfVkFSX1BST01PQ09ERTogZmlsdGVyVmFsdWVzIH1cbiAgfSA9IHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUgfHwge30sIHNoYWxsb3dFcXVhbCk7XG5cbiAgY29uc3QgW2lzRXhwYW5kZWQsIHNldElzRXhwYW5kZWRdID0gdXNlU3RhdGUoISFmaWx0ZXJWYWx1ZXMpO1xuICBjb25zdCBbcHJvbW9Db2RlLCBzZXRQcm9tb0NvZGVdID0gdXNlU3RhdGUoZmlsdGVyVmFsdWVzIHx8IFwiXCIpO1xuXG4gIGNvbnN0IGRlYm91bmNlVGltZXIgPSB1c2VSZWYobnVsbCk7XG4gIGNvbnN0IERFQk9VTkNFX1ZBTFVFID0gNTAwO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc2V0UHJvbW9Db2RlKGZpbHRlclZhbHVlcyB8fCBcIlwiKTtcbiAgICBzZXRJc0V4cGFuZGVkKCEhZmlsdGVyVmFsdWVzKTtcbiAgfSwgW2ZpbHRlclZhbHVlc10pO1xuXG4gIGNvbnN0IGhhbmRsZUZpbHRlckNoYW5nZSA9IChldikgPT4ge1xuICAgIGNvbnN0IG5ld1Byb21vQ29kZSA9IGV2LnRhcmdldC52YWx1ZTtcbiAgICAvLyB1cGRhdGUgbG9jYWwgc3RhdGUgc28gdGhlIGlucHV0IHJlZmxlY3RzIGNoYW5nZXNcbiAgICBzZXRQcm9tb0NvZGUobmV3UHJvbW9Db2RlKTtcblxuICAgIC8vIHJlbW92ZSBjdXJyZW50IGRlYm91bmNlXG4gICAgaWYgKGRlYm91bmNlVGltZXIuY3VycmVudCkge1xuICAgICAgY2xlYXJUaW1lb3V0KGRlYm91bmNlVGltZXIuY3VycmVudCk7XG4gICAgfVxuXG4gICAgLy8gZGVib3VuY2Ugc2V0IHRvIDUwMCBtc1xuICAgIGRlYm91bmNlVGltZXIuY3VycmVudCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgb25GaWx0ZXIoe1xuICAgICAgICBbRklMVEVSX1ZBUl9QUk9NT0NPREVdOiBuZXdQcm9tb0NvZGVcbiAgICAgIH0pO1xuICAgIH0sIERFQk9VTkNFX1ZBTFVFKTtcbiAgfTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIC8vIHJlbW92ZSBkZWJvdW5jZSBvbiByZWxvYWRcbiAgICBpZiAoZGVib3VuY2VUaW1lci5jdXJyZW50KSB7XG4gICAgICBjbGVhclRpbWVvdXQoZGVib3VuY2VUaW1lci5jdXJyZW50KTtcbiAgICB9XG4gIH0sIFtdKTtcblxuICByZXR1cm4gKFxuICAgIDxCb3g+XG4gICAgICA8Q2FyZEhlYWRlclxuICAgICAgICB0aXRsZT1cIlByb21vIENvZGVcIlxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aXRsZVdyYXBwZXJ9XG4gICAgICAgIG9uQ2xpY2s9eygpID0+IHNldElzRXhwYW5kZWQoIWlzRXhwYW5kZWQpfVxuICAgICAgICBhY3Rpb249e1xuICAgICAgICAgIDxJY29uQnV0dG9uIGFyaWEtbGFiZWw9XCJleHBhbmRcIiBkaXNhYmxlUmlwcGxlPlxuICAgICAgICAgICAgPEV4cGFuZE1vcmVJY29uXG4gICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiBpc0V4cGFuZGVkID8gXCJyb3RhdGUoMTgwZGVnKVwiIDogXCJyb3RhdGUoMGRlZylcIixcbiAgICAgICAgICAgICAgICB0cmFuc2l0aW9uOiBcInRyYW5zZm9ybSAwLjNzXCJcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICB9XG4gICAgICAvPlxuICAgICAgPENvbGxhcHNlIGluPXtpc0V4cGFuZGVkfSB0aW1lb3V0PVwiYXV0b1wiIHVubW91bnRPbkV4aXQ+XG4gICAgICAgIDxDYXJkQ29udGVudFxuICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IFwiIzAwMDAwMDBBXCIsXG4gICAgICAgICAgICBcIiY6bGFzdC1jaGlsZFwiOiB7XG4gICAgICAgICAgICAgIHB5OiAxXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIDxUZXh0RmllbGRcbiAgICAgICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lZFwiXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkVudGVyIHByb21vIGNvZGVcIlxuICAgICAgICAgICAgdmFsdWU9e3Byb21vQ29kZX1cbiAgICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVGaWx0ZXJDaGFuZ2V9XG4gICAgICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgICAvPlxuICAgICAgICA8L0NhcmRDb250ZW50PlxuICAgICAgPC9Db2xsYXBzZT5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cblByb21vQ29kZUZpbHRlci5wcm9wVHlwZXMgPSB7XG4gIG9uRmlsdGVyOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgUHJvbW9Db2RlRmlsdGVyO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHNoYWxsb3dFcXVhbCwgdXNlU2VsZWN0b3IgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7IHN0eWxlZCB9IGZyb20gXCJAbXVpL21hdGVyaWFsL3N0eWxlc1wiO1xuaW1wb3J0IFNlYXJjaEljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvU2VhcmNoXCI7XG5pbXBvcnQgQ2xvc2VJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0Nsb3NlXCI7XG5pbXBvcnQgSW5wdXRCYXNlIGZyb20gXCJAbXVpL21hdGVyaWFsL0lucHV0QmFzZVwiO1xuaW1wb3J0IHsgQm94IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEZJTFRFUl9WQVJfT1JERVJfTlVNQkVSIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcblxuY29uc3QgU2VhcmNoQ29udGFpbmVyID0gc3R5bGVkKFwiZGl2XCIpKCgpID0+ICh7XG4gIHBvc2l0aW9uOiBcInJlbGF0aXZlXCIsXG4gIG1hcmdpblJpZ2h0OiBcIjBcIixcbiAgbWFyZ2luTGVmdDogXCIwXCIsXG4gIHdpZHRoOiBcIjEwMCVcIixcbiAgZGlzcGxheTogXCJibG9ja1wiXG59KSk7XG5jb25zdCBTZWFyY2hJY29uV3JhcHBlciA9IHN0eWxlZChcImRpdlwiKSgoKSA9PiAoe1xuICBoZWlnaHQ6IFwiMTAwJVwiLFxuICBwb3NpdGlvbjogXCJhYnNvbHV0ZVwiLFxuICBkaXNwbGF5OiBcImZsZXhcIixcbiAgYWxpZ25JdGVtczogXCJjZW50ZXJcIixcbiAganVzdGlmeUNvbnRlbnQ6IFwiY2VudGVyXCJcbn0pKTtcbmNvbnN0IFN0eWxlZElucHV0QmFzZSA9IHN0eWxlZChJbnB1dEJhc2UpKCgpID0+ICh7XG4gIGNvbG9yOiBcImluaGVyaXRcIixcbiAgYm9yZGVyQm90dG9tOiBcIjFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuNDIpXCIsXG4gIHBhZGRpbmdMZWZ0OiBcIjI1cHhcIixcbiAgcGFkZGluZ1JpZ2h0OiBcIjI1cHhcIixcbiAgZm9udFNpemU6IFwiMWVtXCJcbn0pKTtcbmNvbnN0IENsb3NlSWNvbldyYXBwZXIgPSBzdHlsZWQoQ2xvc2VJY29uKSgoKSA9PiAoe1xuICBwYWRkaW5nOiBcIjJweFwiLFxuICBmb250U2l6ZTogXCIxLjVlbVwiLFxuICBoZWlnaHQ6IFwiMTAwJVwiLFxuICBwb3NpdGlvbjogXCJhYnNvbHV0ZVwiLFxuICB0b3A6IFwiMFwiLFxuICByaWdodDogXCIwXCIsXG4gIGRpc3BsYXk6IFwiZmxleFwiLFxuICBhbGlnbkl0ZW1zOiBcImNlbnRlclwiLFxuICBqdXN0aWZ5Q29udGVudDogXCJjZW50ZXJcIixcbiAgY3Vyc29yOiBcInBvaW50ZXJcIixcbiAgekluZGV4OiBcIjEwMDBcIlxufSkpO1xuXG5jb25zdCBTZWFyY2ggPSAoeyBvblNlYXJjaCB9KSA9PiB7XG4gIGNvbnN0IHsgZmlsdGVyIH0gPSB1c2VTZWxlY3RvcihcbiAgICAoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlIHx8IHt9LFxuICAgIHNoYWxsb3dFcXVhbFxuICApO1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IFtzZWFyY2hWYWx1ZSwgc2V0U2VhcmNoVmFsdWVdID0gdXNlU3RhdGUoXCJcIik7XG4gIGNvbnN0IHNob3dDbG9zZUJ0biA9ICEhZmlsdGVyW0ZJTFRFUl9WQVJfT1JERVJfTlVNQkVSXTtcblxuICBjb25zdCBvbktleURvd24gPSAoZXZlbnQpID0+IHtcbiAgICBjb25zdCB7XG4gICAgICBrZXksXG4gICAgICBuYXRpdmVFdmVudDoge1xuICAgICAgICB0YXJnZXQ6IHsgdmFsdWUgfVxuICAgICAgfVxuICAgIH0gPSBldmVudDtcbiAgICBpZiAoa2V5ID09PSBcIkVudGVyXCIpIHtcbiAgICAgIG9uU2VhcmNoKHtcbiAgICAgICAgW0ZJTFRFUl9WQVJfT1JERVJfTlVNQkVSXTogdmFsdWVcbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcbiAgY29uc3QgcmVzZXRTZWFyY2ggPSAoKSA9PiB7XG4gICAgc2V0U2VhcmNoVmFsdWUoXCJcIik7XG4gICAgb25TZWFyY2goe1xuICAgICAgW0ZJTFRFUl9WQVJfT1JERVJfTlVNQkVSXTogXCJcIlxuICAgIH0pO1xuICB9O1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgLy8gd2UgbmVlZCB0aGlzIHdoZW4gc2VhcmNoIGlzIHJlc2V0IGZyb20gb3V0c2lkZSB0aGlzIGNvbXBvbmVudFxuICAgIHNldFNlYXJjaFZhbHVlKGZpbHRlcltGSUxURVJfVkFSX09SREVSX05VTUJFUl0pO1xuICB9LCBbZmlsdGVyW0ZJTFRFUl9WQVJfT1JERVJfTlVNQkVSXV0pO1xuXG4gIHJldHVybiAoXG4gICAgPEJveD5cbiAgICAgIDxTZWFyY2hDb250YWluZXI+XG4gICAgICAgIHtzaG93Q2xvc2VCdG4gJiYgKFxuICAgICAgICAgIDxDbG9zZUljb25XcmFwcGVyIG9uQ2xpY2s9e3Jlc2V0U2VhcmNofT5cbiAgICAgICAgICAgIDxDbG9zZUljb24gLz5cbiAgICAgICAgICA8L0Nsb3NlSWNvbldyYXBwZXI+XG4gICAgICAgICl9XG4gICAgICAgIDxTZWFyY2hJY29uV3JhcHBlcj5cbiAgICAgICAgICA8U2VhcmNoSWNvbiAvPlxuICAgICAgICA8L1NlYXJjaEljb25XcmFwcGVyPlxuICAgICAgICA8U3R5bGVkSW5wdXRCYXNlXG4gICAgICAgICAgcGxhY2Vob2xkZXI9e3QoXCJvcmRlcl9zZWFyY2gub3JkZXJfbnVtYmVyXCIpfVxuICAgICAgICAgIGlucHV0UHJvcHM9e3sgXCJhcmlhLWxhYmVsXCI6IFwic2VhcmNoXCIgfX1cbiAgICAgICAgICB2YWx1ZT17c2VhcmNoVmFsdWV9XG4gICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBzZXRTZWFyY2hWYWx1ZShlLnRhcmdldC52YWx1ZSl9XG4gICAgICAgICAgb25LZXlEb3duPXtvbktleURvd259XG4gICAgICAgIC8+XG4gICAgICA8L1NlYXJjaENvbnRhaW5lcj5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cblNlYXJjaC5wcm9wVHlwZXMgPSB7XG4gIG9uU2VhcmNoOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgU2VhcmNoO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlLCB1c2VSZWYsIHVzZUVmZmVjdCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFN0YWNrIGZyb20gXCJAbXVpL21hdGVyaWFsL1N0YWNrXCI7XG5pbXBvcnQgeyBCb3gsIEJ1dHRvbiwgUGFwZXIgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IEltcG9ydEV4cG9ydEljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvSW1wb3J0RXhwb3J0XCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IFNvcnQgPSAoeyBvblNvcnQgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IFtzaG93U29ydCwgc2V0U2hvd1NvcnRdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBzb3J0UmVmID0gdXNlUmVmKG51bGwpO1xuICBjb25zdCBoYW5kbGVTb3J0Q2xpY2tPdXRzaWRlID0gKGV2ZW50KSA9PiB7XG4gICAgaWYgKHNvcnRSZWYuY3VycmVudCAmJiAhc29ydFJlZi5jdXJyZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpIHtcbiAgICAgIHNldFNob3dTb3J0KGZhbHNlKTtcbiAgICB9XG4gIH07XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGhhbmRsZVNvcnRDbGlja091dHNpZGUsIGZhbHNlKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGhhbmRsZVNvcnRDbGlja091dHNpZGUsIGZhbHNlKTtcbiAgICB9O1xuICB9LCBbc2hvd1NvcnRdKTtcblxuICBjb25zdCB0b2dnbGUgPSAoKSA9PiB7XG4gICAgc2V0U2hvd1NvcnQoIXNob3dTb3J0KTtcbiAgfTtcbiAgcmV0dXJuIChcbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLnNvcnRDb250YWluZXJ9IG9uQ2xpY2s9e3RvZ2dsZX0+XG4gICAgICA8U3RhY2tcbiAgICAgICAgcmVmPXtzb3J0UmVmfVxuICAgICAgICBhbGlnbkl0ZW1zPVwiY2VudGVyXCJcbiAgICAgICAgZGlyZWN0aW9uPVwicm93XCJcbiAgICAgICAgc3g9e3sgcHQ6IDIsIHBiOiAyIH19XG4gICAgICA+XG4gICAgICAgIDxJbXBvcnRFeHBvcnRJY29uIGZvbnRTaXplPVwibGFyZ2VcIiBjbGFzc05hbWU9e3N0eWxlcy5zb3J0SWNvbn0gLz5cbiAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXMuc29ydExhYmVsfT57dChcInNvcnQuc29ydFwiKX08L3NwYW4+XG4gICAgICA8L1N0YWNrPlxuICAgICAge3Nob3dTb3J0ICYmIChcbiAgICAgICAgPFBhcGVyXG4gICAgICAgICAgZWxldmF0aW9uPXs4fVxuICAgICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLnNvcnRMaXN0Q29udGFpbmVyfSAke3N0eWxlcy5jb250YWluZXJ9YH1cbiAgICAgICAgPlxuICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgIGRpc2FibGVSaXBwbGVcbiAgICAgICAgICAgIHZhcmlhbnQ9XCJ0ZXh0XCJcbiAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmxhYmVsfVxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4gb25Tb3J0KHsgZGlyZWN0aW9uOiBcImRlc2NcIiwgbmFtZTogXCJjcmVhdGVkXCIgfSl9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge3QoXCJzb3J0Lm5ld19maXJzdFwiKX1cbiAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICBkaXNhYmxlUmlwcGxlXG4gICAgICAgICAgICB2YXJpYW50PVwidGV4dFwiXG4gICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5sYWJlbH1cbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IG9uU29ydCh7IGRpcmVjdGlvbjogXCJhc2NcIiwgbmFtZTogXCJjcmVhdGVkXCIgfSl9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge3QoXCJzb3J0Lm9sZF9maXJzdFwiKX1cbiAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgPC9QYXBlcj5cbiAgICAgICl9XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBTb3J0O1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VTZWxlY3Rvciwgc2hhbGxvd0VxdWFsIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQge1xuICBCb3gsXG4gIEZvcm1Db250cm9sTGFiZWwsXG4gIENhcmRIZWFkZXIsXG4gIEljb25CdXR0b24sXG4gIENvbGxhcHNlLFxuICBDYXJkQ29udGVudCxcbiAgUmFkaW9Hcm91cCxcbiAgUmFkaW9cbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBFeHBhbmRNb3JlSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9FeHBhbmRNb3JlXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgeyBGSUxURVJfVkFSX09XTkVSX1NUQVRVUyB9IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5cbmNvbnN0IFN0YXR1c0ZpbHRlciA9ICh7IG9uRmlsdGVyIH0pID0+IHtcbiAgY29uc3Qge1xuICAgIGZpbHRlcjogeyBGSUxURVJfVkFSX09XTkVSX1NUQVRVUzogZmlsdGVyVmFsdWVzIH1cbiAgfSA9IHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUgfHwge30sIHNoYWxsb3dFcXVhbCk7XG5cbiAgY29uc3QgW2lzRXhwYW5kZWQsIHNldElzRXhwYW5kZWRdID0gdXNlU3RhdGUoISFmaWx0ZXJWYWx1ZXMpO1xuXG4gIGNvbnN0IGFzc2lnbmVkVmFsdWVzID0gW1xuICAgIHsgdmFsdWU6IFwiSW5jb21wbGV0ZVwiLCBsYWJlbDogXCJJbmNvbXBsZXRlXCIgfSxcbiAgICB7IHZhbHVlOiBcIkNvbXBsZXRlXCIsIGxhYmVsOiBcIkNvbXBsZXRlXCIgfVxuICBdO1xuXG4gIGNvbnN0IGhhbmRsZUZpbHRlckNoYW5nZSA9IChldiwgdmFsdWUpID0+IHtcbiAgICBjb25zdCBuZXdGaWx0ZXIgPSB2YWx1ZTtcbiAgICBvbkZpbHRlcih7XG4gICAgICBbRklMVEVSX1ZBUl9PV05FUl9TVEFUVVNdOiBuZXdGaWx0ZXJcbiAgICB9KTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxCb3g+XG4gICAgICA8Q2FyZEhlYWRlclxuICAgICAgICB0aXRsZT1cIlN0YXR1c1wiXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnRpdGxlV3JhcHBlcn1cbiAgICAgICAgb25DbGljaz17KCkgPT4gc2V0SXNFeHBhbmRlZCghaXNFeHBhbmRlZCl9XG4gICAgICAgIGFjdGlvbj17XG4gICAgICAgICAgPEljb25CdXR0b24gYXJpYS1sYWJlbD1cImV4cGFuZFwiIGRpc2FibGVSaXBwbGU+XG4gICAgICAgICAgICA8RXhwYW5kTW9yZUljb25cbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IGlzRXhwYW5kZWQgPyBcInJvdGF0ZSgxODBkZWcpXCIgOiBcInJvdGF0ZSgwZGVnKVwiLFxuICAgICAgICAgICAgICAgIHRyYW5zaXRpb246IFwidHJhbnNmb3JtIDAuM3NcIlxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgIH1cbiAgICAgIC8+XG4gICAgICA8Q29sbGFwc2UgaW49e2lzRXhwYW5kZWR9IHRpbWVvdXQ9XCJhdXRvXCIgdW5tb3VudE9uRXhpdD5cbiAgICAgICAgPENhcmRDb250ZW50XG4gICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgIHB5OiAwLFxuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBcIiMwMDAwMDAwQVwiLFxuICAgICAgICAgICAgXCImOmxhc3QtY2hpbGRcIjoge1xuICAgICAgICAgICAgICBwYjogMFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICA8UmFkaW9Hcm91cCB2YWx1ZT17ZmlsdGVyVmFsdWVzfSBvbkNoYW5nZT17aGFuZGxlRmlsdGVyQ2hhbmdlfT5cbiAgICAgICAgICAgIHthc3NpZ25lZFZhbHVlcy5tYXAoKGFzc2lnbmVkKSA9PiAoXG4gICAgICAgICAgICAgIDxCb3hcbiAgICAgICAgICAgICAgICBzeD17eyBweTogMSB9fVxuICAgICAgICAgICAgICAgIGtleT17YGZpbHRlci1iYWRnZS1mZWF0dXJlLSR7YXNzaWduZWQubGFiZWx9fWB9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8Rm9ybUNvbnRyb2xMYWJlbFxuICAgICAgICAgICAgICAgICAgY29udHJvbD17XG4gICAgICAgICAgICAgICAgICAgIDxSYWRpb1xuICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXthc3NpZ25lZC52YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICAgICAgICAgICAgXCImIC5NdWlTdmdJY29uLXJvb3RcIjogeyBmb250U2l6ZTogMTggfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiJi5NdWktY2hlY2tlZFwiOiB7IGNvbG9yOiBcIiMyMTk2RjNcIiB9XG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIGxhYmVsPXthc3NpZ25lZC5sYWJlbH1cbiAgICAgICAgICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICAgICAgICAgIFwiJiAuTXVpRm9ybUNvbnRyb2xMYWJlbC1sYWJlbFwiOiB7XG4gICAgICAgICAgICAgICAgICAgICAgZm9udFNpemU6IFwiMWVtXCJcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgICkpfVxuICAgICAgICAgIDwvUmFkaW9Hcm91cD5cbiAgICAgICAgPC9DYXJkQ29udGVudD5cbiAgICAgIDwvQ29sbGFwc2U+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5TdGF0dXNGaWx0ZXIucHJvcFR5cGVzID0ge1xuICBvbkZpbHRlcjogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFN0YXR1c0ZpbHRlcjtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSwgdXNlRWZmZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VTZWxlY3Rvciwgc2hhbGxvd0VxdWFsIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQge1xuICBCb3gsXG4gIEZvcm1Db250cm9sTGFiZWwsXG4gIENoZWNrYm94LFxuICBDYXJkSGVhZGVyLFxuICBJY29uQnV0dG9uLFxuICBDb2xsYXBzZSxcbiAgQ2FyZENvbnRlbnRcbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBFeHBhbmRNb3JlSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9FeHBhbmRNb3JlXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgeyBGSUxURVJfVkFSX1RJQ0tFVF9UWVBFIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcblxuY29uc3QgVGlja2V0VHlwZUZpbHRlciA9ICh7IG9uRmlsdGVyIH0pID0+IHtcbiAgY29uc3Qge1xuICAgIHN1bW1pdDogeyB0aWNrZXRfdHlwZXMgfSxcbiAgICBmaWx0ZXI6IHsgRklMVEVSX1ZBUl9USUNLRVRfVFlQRTogZmlsdGVyVmFsdWVzIH1cbiAgfSA9IHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUgfHwge30sIHNoYWxsb3dFcXVhbCk7XG5cbiAgY29uc3QgW2lzRXhwYW5kZWQsIHNldElzRXhwYW5kZWRdID0gdXNlU3RhdGUoISFmaWx0ZXJWYWx1ZXMubGVuZ3RoKTtcblxuICBjb25zdCBoYW5kbGVGaWx0ZXJDaGFuZ2UgPSAodmFsdWUpID0+IHtcbiAgICBjb25zdCBuZXdGaWx0ZXJzID0gZmlsdGVyVmFsdWVzPy5pbmNsdWRlcyh2YWx1ZSlcbiAgICAgID8gZmlsdGVyVmFsdWVzLmZpbHRlcigoZikgPT4gZiAhPT0gdmFsdWUpXG4gICAgICA6IFsuLi5maWx0ZXJWYWx1ZXMsIHZhbHVlXTtcbiAgICBvbkZpbHRlcih7XG4gICAgICBbRklMVEVSX1ZBUl9USUNLRVRfVFlQRV06IG5ld0ZpbHRlcnNcbiAgICB9KTtcbiAgfTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHNldElzRXhwYW5kZWQoISFmaWx0ZXJWYWx1ZXMubGVuZ3RoKTtcbiAgfSwgW2ZpbHRlclZhbHVlc10pO1xuXG4gIHJldHVybiAoXG4gICAgPEJveD5cbiAgICAgIDxDYXJkSGVhZGVyXG4gICAgICAgIHRpdGxlPVwiVGlja2V0IFR5cGVcIlxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aXRsZVdyYXBwZXJ9XG4gICAgICAgIG9uQ2xpY2s9eygpID0+IHNldElzRXhwYW5kZWQoIWlzRXhwYW5kZWQpfVxuICAgICAgICBhY3Rpb249e1xuICAgICAgICAgIDxJY29uQnV0dG9uIGFyaWEtbGFiZWw9XCJleHBhbmRcIiBkaXNhYmxlUmlwcGxlPlxuICAgICAgICAgICAgPEV4cGFuZE1vcmVJY29uXG4gICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiBpc0V4cGFuZGVkID8gXCJyb3RhdGUoMTgwZGVnKVwiIDogXCJyb3RhdGUoMGRlZylcIixcbiAgICAgICAgICAgICAgICB0cmFuc2l0aW9uOiBcInRyYW5zZm9ybSAwLjNzXCJcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICB9XG4gICAgICAvPlxuICAgICAgPENvbGxhcHNlIGluPXtpc0V4cGFuZGVkfSB0aW1lb3V0PVwiYXV0b1wiIHVubW91bnRPbkV4aXQ+XG4gICAgICAgIDxDYXJkQ29udGVudFxuICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICBweTogMCxcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogXCIjMDAwMDAwMEFcIixcbiAgICAgICAgICAgIFwiJjpsYXN0LWNoaWxkXCI6IHtcbiAgICAgICAgICAgICAgcGI6IDBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9fVxuICAgICAgICA+XG4gICAgICAgICAge3RpY2tldF90eXBlcy5tYXAoKGJmKSA9PiAoXG4gICAgICAgICAgICA8Qm94IHN4PXt7IHB5OiAxIH19IGtleT17YGZpbHRlci1iYWRnZS1mZWF0dXJlLSR7YmYubmFtZX19YH0+XG4gICAgICAgICAgICAgIDxGb3JtQ29udHJvbExhYmVsXG4gICAgICAgICAgICAgICAgY29udHJvbD17XG4gICAgICAgICAgICAgICAgICA8Q2hlY2tib3hcbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eygpID0+IGhhbmRsZUZpbHRlckNoYW5nZShiZi5pZCl9XG4gICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e2ZpbHRlclZhbHVlcy5pbmNsdWRlcyhiZi5pZCl9XG4gICAgICAgICAgICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICAgICAgICAgICAgXCImIC5NdWlTdmdJY29uLXJvb3RcIjogeyBmb250U2l6ZTogMTggfSxcbiAgICAgICAgICAgICAgICAgICAgICBcIiYuTXVpLWNoZWNrZWRcIjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IFwiIzIxOTZGM1wiXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbGFiZWw9e2JmLm5hbWV9XG4gICAgICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgICAgIFwiJiAuTXVpRm9ybUNvbnRyb2xMYWJlbC1sYWJlbFwiOiB7XG4gICAgICAgICAgICAgICAgICAgIGZvbnRTaXplOiBcIjFlbVwiXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICkpfVxuICAgICAgICA8L0NhcmRDb250ZW50PlxuICAgICAgPC9Db2xsYXBzZT5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cblRpY2tldFR5cGVGaWx0ZXIucHJvcFR5cGVzID0ge1xuICBvbkZpbHRlcjogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFRpY2tldFR5cGVGaWx0ZXI7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBHcmlkIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBGaWx0ZXIgZnJvbSBcIi4vRmlsdGVyXCI7XG5pbXBvcnQgU29ydCBmcm9tIFwiLi9Tb3J0XCI7XG5pbXBvcnQgU2VhcmNoIGZyb20gXCIuL1NlYXJjaFwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBGaWx0ZXJzID0gKHsgb25GaWx0ZXIsIG9uU29ydCwgb25TZWFyY2gsIG9uUmVzZXQgfSkgPT4gKFxuICA8R3JpZCBjb250YWluZXIganVzdGlmeT1cImZsZXgtZW5kXCIgYWxpZ25JdGVtcz1cImNlbnRlclwiPlxuICAgIDxHcmlkXG4gICAgICBpdGVtXG4gICAgICB4cz17Nn1cbiAgICAgIGNvbnRhaW5lclxuICAgICAgcGFkZGluZz17MX1cbiAgICAgIGdhcD17Mn1cbiAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmZpbHRlclNvcnRDb250YWluZXJ9XG4gICAgICBzeD17eyBwdDogMiwgcGI6IDIgfX1cbiAgICA+XG4gICAgICA8R3JpZCBpdGVtPlxuICAgICAgICA8RmlsdGVyIG9uRmlsdGVyPXtvbkZpbHRlcn0gb25SZXNldD17b25SZXNldH0gLz5cbiAgICAgIDwvR3JpZD5cbiAgICAgIDxHcmlkIGl0ZW0+XG4gICAgICAgIDxTb3J0IG9uU29ydD17b25Tb3J0fSAvPlxuICAgICAgPC9HcmlkPlxuICAgIDwvR3JpZD5cbiAgICA8R3JpZCBpdGVtIHhzPXs2fSBjb250YWluZXIganVzdGlmeUNvbnRlbnQ9XCJmbGV4LWVuZFwiPlxuICAgICAgPFNlYXJjaCBvblNlYXJjaD17b25TZWFyY2h9IC8+XG4gICAgPC9HcmlkPlxuICA8L0dyaWQ+XG4pO1xuXG5GaWx0ZXJzLnByb3BUeXBlcyA9IHtcbiAgb25GaWx0ZXI6IFByb3BUeXBlcy5mdW5jLFxuICBvblNvcnQ6IFByb3BUeXBlcy5mdW5jLFxuICBvblNlYXJjaDogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uUmVzZXQ6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBGaWx0ZXJzO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgQm94LCBCdXR0b24gfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuXG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IEZvcm1Gb290ZXIgPSAoeyBzYXZlTGFiZWwsIGNhbmNlbExhYmVsLCBvbkNsb3NlLCBkaXNhYmxlZCB9KSA9PiAoXG4gIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuZm9vdGVyfT5cbiAgICA8QnV0dG9uXG4gICAgICBjbGFzc05hbWU9e3N0eWxlcy5jYW5jZWxCdG59XG4gICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lZFwiXG4gICAgICBvbkNsaWNrPXtvbkNsb3NlfVxuICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgID5cbiAgICAgIHtjYW5jZWxMYWJlbH1cbiAgICA8L0J1dHRvbj5cbiAgICA8QnV0dG9uXG4gICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnNhdmVCdG59XG4gICAgICB2YXJpYW50PVwiY29udGFpbmVkXCJcbiAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgID5cbiAgICAgIHtzYXZlTGFiZWx9XG4gICAgPC9CdXR0b24+XG4gIDwvQm94PlxuKTtcblxuRm9ybUZvb3Rlci5wcm9wVHlwZXMgPSB7XG4gIHNhdmVMYWJlbDogUHJvcFR5cGVzLnN0cmluZyxcbiAgY2FuY2VsTGFiZWw6IFByb3BUeXBlcy5zdHJpbmcsXG4gIG9uQ2xvc2U6IFByb3BUeXBlcy5mdW5jLFxuICBkaXNhYmxlZDogUHJvcFR5cGVzLmJvb2xcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEZvcm1Gb290ZXI7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgRXJyb3JJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0Vycm9yXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmZ1bmN0aW9uIEVycm9yTGFiZWwoeyBtZXNzYWdlLCBjb2xvciwgY2xhc3NOYW1lcywgZGF0YVRlc3RJZCB9KSB7XG4gIHJldHVybiAoXG4gICAgPHNwYW5cbiAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLmVycm9yTGFiZWx9ICR7Y2xhc3NOYW1lcyAmJiBjbGFzc05hbWVzfWB9XG4gICAgICBzdHlsZT17eyBjb2xvciB9fVxuICAgICAgZGF0YS10ZXN0aWQ9e2RhdGFUZXN0SWR9XG4gICAgPlxuICAgICAgPEVycm9ySWNvbiBzeD17eyBjb2xvciB9fSAvPlxuICAgICAge21lc3NhZ2V9XG4gICAgPC9zcGFuPlxuICApO1xufVxuXG5leHBvcnQgZGVmYXVsdCBFcnJvckxhYmVsO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgQmFja2Ryb3AsIENpcmN1bGFyUHJvZ3Jlc3MgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuXG5jb25zdCBMb2FkZXIgPSAoeyBvcGVuIH0pID0+IChcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW1hZ2ljLW51bWJlcnNcbiAgPEJhY2tkcm9wIG9wZW49e29wZW59IHN4PXsodGhlbWUpID0+ICh7IHpJbmRleDogdGhlbWUuekluZGV4LmRyYXdlciArIDEgfSl9PlxuICAgIDxDaXJjdWxhclByb2dyZXNzIGNvbG9yPVwiaW5oZXJpdFwiIC8+XG4gIDwvQmFja2Ryb3A+XG4pO1xuXG5Mb2FkZXIucHJvcFR5cGVzID0ge1xuICBvcGVuOiBQcm9wVHlwZXMuYm9vbFxufTtcblxuZXhwb3J0IGRlZmF1bHQgTG9hZGVyO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgc2hhbGxvd0VxdWFsLCB1c2VTZWxlY3RvciB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IEluZmluaXRlU2Nyb2xsIGZyb20gXCJyZWFjdC1pbmZpbml0ZS1zY3JvbGwtY29tcG9uZW50XCI7XG5pbXBvcnQgT3JkZXJzTGlzdCBmcm9tIFwiLi4vT3JkZXJzTGlzdFwiO1xuaW1wb3J0IHsgT05FX1BBR0VfTkVYVCB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgTXlPcmRlcnNUaWNrZXRzID0gKHsgZmV0Y2hEYXRhIH0pID0+IHtcbiAgY29uc3QgeyBzdW1taXQsIG1lbWJlck9yZGVycywgb3JkZXJzX2N1cnJlbnRfcGFnZSwgb3JkZXJzX2xhc3RfcGFnZSB9ID1cbiAgICB1c2VTZWxlY3Rvcigoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlIHx8IHt9LCBzaGFsbG93RXF1YWwpO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBpZD1cImluZmluaXRlV3JhcHBlclwiIGNsYXNzTmFtZT17c3R5bGVzLm15T3JkZXJzV3JhcHBlcn0+XG4gICAgICA8SW5maW5pdGVTY3JvbGxcbiAgICAgICAgZGF0YUxlbmd0aD17bWVtYmVyT3JkZXJzPy5sZW5ndGh9XG4gICAgICAgIG5leHQ9eygpID0+IGZldGNoRGF0YShvcmRlcnNfY3VycmVudF9wYWdlICsgT05FX1BBR0VfTkVYVCl9XG4gICAgICAgIGhhc01vcmU9e29yZGVyc19jdXJyZW50X3BhZ2UgPCBvcmRlcnNfbGFzdF9wYWdlfVxuICAgICAgICBzY3JvbGxUaHJlc2hvbGQ9ezF9XG4gICAgICA+XG4gICAgICAgIHttZW1iZXJPcmRlcnM/Lm1hcCgob3JkZXIpID0+IChcbiAgICAgICAgICA8T3JkZXJzTGlzdFxuICAgICAgICAgICAga2V5PXtvcmRlci5udW1iZXIgKyBvcmRlci5pZH1cbiAgICAgICAgICAgIG9yZGVyPXtvcmRlcn1cbiAgICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgIC8+XG4gICAgICAgICkpfVxuICAgICAgPC9JbmZpbml0ZVNjcm9sbD5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE15T3JkZXJzVGlja2V0cztcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcblxuY29uc3QgVGlja2V0c0ljb24gPSAoKSA9PiAoXG4gIDxzdmdcbiAgICB3aWR0aD1cIjEyOVwiXG4gICAgaGVpZ2h0PVwiODBcIlxuICAgIHZpZXdCb3g9XCIwIDAgMTI5IDgwXCJcbiAgICBmaWxsPVwibm9uZVwiXG4gICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gID5cbiAgICA8cGF0aFxuICAgICAgZD1cIk0xMjUuMTIyIDM2LjQ3ODFDMTI0LjgxNCAzNy41MTEyIDEyMy43MzggMzguMDg5MSAxMjIuNjYxIDM4LjAzNzZDMTE4LjUwNiAzNy44Mzg2IDExNC41OTMgNDAuNDc1NCAxMTMuMzQ5IDQ0LjY0MTJDMTEyLjEwNSA0OC44MDczIDExMy45MzIgNTMuMTU3NiAxMTcuNTE3IDU1LjI2OTdDMTE4LjQ0NiA1NS44MTY5IDExOS4wMjggNTYuODg5OSAxMTguNzIgNTcuOTIzMUwxMTYuMzY5IDY1Ljc5NjdDMTE2LjA1MyA2Ni44NTUxIDExNC45MzkgNjcuNDU3IDExMy44ODEgNjcuMTQxTDMwLjc2NzUgNDIuMzI3MUMyOS43MDkxIDQyLjAxMTIgMjkuMTA3MiA0MC44OTcgMjkuNDIzMiAzOS44Mzg2TDQwLjM0MzkgMy4yNjAxNkM0MC42NTk5IDIuMjAxNzYgNDEuNzc0IDEuNTk5OTEgNDIuODMyNCAxLjkxNTlMMTI1Ljk0NiAyNi43Mjk3QzEyNy4wMDQgMjcuMDQ1NyAxMjcuNjA2IDI4LjE1OTkgMTI3LjI5IDI5LjIxODNMMTI1LjEyMiAzNi40NzgxWlwiXG4gICAgICBmaWxsPVwid2hpdGVcIlxuICAgIC8+XG4gICAgPHBhdGhcbiAgICAgIGQ9XCJNMTEzLjM0OSA0NC42NDEyTDExMi4zOTEgNDQuMzU1MUwxMTIuMzkxIDQ0LjM1NTJMMTEzLjM0OSA0NC42NDEyWk0xMTcuNTE3IDU1LjI2OTdMMTE3LjAwOSA1Ni4xMzEyTDExNy41MTcgNTUuMjY5N1pNMTIyLjY2MSAzOC4wMzc2TDEyMi43MDkgMzcuMDM4N0MxMTguMTA1IDM2LjgxODMgMTEzLjc2OSAzOS43MzgxIDExMi4zOTEgNDQuMzU1MUwxMTMuMzQ5IDQ0LjY0MTJMMTE0LjMwNyA0NC45Mjc0QzExNS40MTYgNDEuMjEyNyAxMTguOTA2IDM4Ljg1ODkgMTIyLjYxNCAzOS4wMzY0TDEyMi42NjEgMzguMDM3NlpNMTEzLjM0OSA0NC42NDEyTDExMi4zOTEgNDQuMzU1MkMxMTEuMDEyIDQ4Ljk3MjUgMTEzLjAzOCA1My43OTE1IDExNy4wMDkgNTYuMTMxMkwxMTcuNTE3IDU1LjI2OTdMMTE4LjAyNCA1NC40MDgxQzExNC44MjYgNTIuNTIzOCAxMTMuMTk4IDQ4LjY0MjEgMTE0LjMwNyA0NC45MjczTDExMy4zNDkgNDQuNjQxMlpNMTE4LjcyIDU3LjkyMzFMMTE3Ljc2MiA1Ny42MzdMMTE1LjQxMSA2NS41MTA2TDExNi4zNjkgNjUuNzk2N0wxMTcuMzI3IDY2LjA4MjhMMTE5LjY3OCA1OC4yMDkxTDExOC43MiA1Ny45MjMxWk0xMTMuODgxIDY3LjE0MUwxMTQuMTY3IDY2LjE4MjhMMzEuMDUzNSA0MS4zNjg5TDMwLjc2NzUgNDIuMzI3MUwzMC40ODE0IDQzLjI4NTRMMTEzLjU5NSA2OC4wOTkyTDExMy44ODEgNjcuMTQxWk0yOS40MjMyIDM5LjgzODZMMzAuMzgxNCA0MC4xMjQ3TDQxLjMwMjEgMy41NDYyNEw0MC4zNDM5IDMuMjYwMTZMMzkuMzg1NyAyLjk3NDA5TDI4LjQ2NSAzOS41NTI1TDI5LjQyMzIgMzkuODM4NlpNNDIuODMyNCAxLjkxNTlMNDIuNTQ2NCAyLjg3NDExTDEyNS42NiAyNy42ODc5TDEyNS45NDYgMjYuNzI5N0wxMjYuMjMyIDI1Ljc3MTVMNDMuMTE4NSAwLjk1NzY5N0w0Mi44MzI0IDEuOTE1OVpNMTI3LjI5IDI5LjIxODNMMTI2LjMzMiAyOC45MzIyTDEyNC4xNjQgMzYuMTkyTDEyNS4xMjIgMzYuNDc4MUwxMjYuMDgxIDM2Ljc2NDJMMTI4LjI0OCAyOS41MDQ0TDEyNy4yOSAyOS4yMTgzWk0xMjUuOTQ2IDI2LjcyOTdMMTI1LjY2IDI3LjY4NzlDMTI2LjE4OSAyNy44NDU5IDEyNi40OSAyOC40MDMgMTI2LjMzMiAyOC45MzIyTDEyNy4yOSAyOS4yMTgzTDEyOC4yNDggMjkuNTA0NEMxMjguNzIyIDI3LjkxNjggMTI3LjgxOSAyNi4yNDU1IDEyNi4yMzIgMjUuNzcxNUwxMjUuOTQ2IDI2LjcyOTdaTTMwLjc2NzUgNDIuMzI3MUwzMS4wNTM1IDQxLjM2ODlDMzAuNTI0MyA0MS4yMTA5IDMwLjIyMzQgNDAuNjUzOSAzMC4zODE0IDQwLjEyNDdMMjkuNDIzMiAzOS44Mzg2TDI4LjQ2NSAzOS41NTI1QzI3Ljk5MSA0MS4xNDAxIDI4Ljg5MzggNDIuODExNCAzMC40ODE0IDQzLjI4NTRMMzAuNzY3NSA0Mi4zMjcxWk0xMTYuMzY5IDY1Ljc5NjdMMTE1LjQxMSA2NS41MTA2QzExNS4yNTMgNjYuMDM5OCAxMTQuNjk2IDY2LjM0MDggMTE0LjE2NyA2Ni4xODI4TDExMy44ODEgNjcuMTQxTDExMy41OTUgNjguMDk5MkMxMTUuMTgyIDY4LjU3MzIgMTE2Ljg1MyA2Ny42NzA0IDExNy4zMjcgNjYuMDgyOEwxMTYuMzY5IDY1Ljc5NjdaTTExNy41MTcgNTUuMjY5N0wxMTcuMDA5IDU2LjEzMTJDMTE3LjY1MyA1Ni41MTA1IDExNy45MDUgNTcuMTU3IDExNy43NjIgNTcuNjM3TDExOC43MiA1Ny45MjMxTDExOS42NzggNTguMjA5MUMxMjAuMTUyIDU2LjYyMjggMTE5LjIzOSA1NS4xMjM0IDExOC4wMjQgNTQuNDA4MUwxMTcuNTE3IDU1LjI2OTdaTTQwLjM0MzkgMy4yNjAxNkw0MS4zMDIxIDMuNTQ2MjRDNDEuNDYwMSAzLjAxNzA0IDQyLjAxNzEgMi43MTYxMSA0Mi41NDY0IDIuODc0MTFMNDIuODMyNCAxLjkxNTlMNDMuMTE4NSAwLjk1NzY5N0M0MS41MzA5IDAuNDgzNzEgMzkuODU5NiAxLjM4NjQ4IDM5LjM4NTcgMi45NzQwOUw0MC4zNDM5IDMuMjYwMTZaTTEyMi42NjEgMzguMDM3NkwxMjIuNjE0IDM5LjAzNjRDMTI0LjAyMSAzOS4xMDM4IDEyNS42MDcgMzguMzUwNSAxMjYuMDgxIDM2Ljc2NDJMMTI1LjEyMiAzNi40NzgxTDEyNC4xNjQgMzYuMTkyQzEyNC4wMjEgMzYuNjcyIDEyMy40NTYgMzcuMDc0NCAxMjIuNzA5IDM3LjAzODdMMTIyLjY2MSAzOC4wMzc2WlwiXG4gICAgICBmaWxsPVwiI0JEQkRCRFwiXG4gICAgLz5cbiAgICA8cGF0aFxuICAgICAgZD1cIk0xMDcuOTAzIDIyLjY3NThMOTYuNTY5NiA2MC42Mzc5XCJcbiAgICAgIHN0cm9rZT1cIiNCREJEQkRcIlxuICAgICAgc3Ryb2tlV2lkdGg9XCIyXCJcbiAgICAgIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICBzdHJva2VEYXNoYXJyYXk9XCIyIDVcIlxuICAgIC8+XG4gICAgPHBhdGhcbiAgICAgIGQ9XCJNOTEuNzQyIDQ1Ljg5NTJDOTEuNzQxOSA0Ni45NzM0IDkwLjg3NjUgNDcuODM0NyA4OS44Mjk3IDQ4LjA5MzNDODUuNzkwNiA0OS4wOTEzIDgyLjc5NTkgNTIuNzM3NiA4Mi43OTUzIDU3LjA4NTJDODIuNzk0OCA2MS40MzI5IDg1Ljc4ODcgNjUuMDc5MiA4OS44Mjc2IDY2LjA3NzlDOTAuODc0MiA2Ni4zMzY3IDkxLjczOTQgNjcuMTk4MyA5MS43MzkyIDY4LjI3NjRMOTEuNzM4MiA3Ni40OTM1QzkxLjczODEgNzcuNTk4MSA5MC44NDI2IDc4LjQ5MzQgODkuNzM4IDc4LjQ5MzNMMi45OTk3MiA3OC40ODI3QzEuODk1MTUgNzguNDgyNSAwLjk5OTgyNSA3Ny41ODcgMC45OTk5NiA3Ni40ODI0TDEuMDA0NjQgMzguMzA4NkMxLjAwNDc3IDM3LjIwNCAxLjkwMDMxIDM2LjMwODcgMy4wMDQ4OCAzNi4zMDg4TDg5Ljc0MzIgMzYuMzE5NUM5MC44NDc3IDM2LjMxOTYgOTEuNzQzMSAzNy4yMTUxIDkxLjc0MjkgMzguMzE5N0w5MS43NDIgNDUuODk1MlpcIlxuICAgICAgZmlsbD1cIndoaXRlXCJcbiAgICAvPlxuICAgIDxwYXRoXG4gICAgICBkPVwiTTgyLjc5NTMgNTcuMDg1Mkw4MS43OTUzIDU3LjA4NTFMODEuNzk1MyA1Ny4wODUxTDgyLjc5NTMgNTcuMDg1MlpNODkuODI5NyA0OC4wOTMzTDkwLjA2OTYgNDkuMDY0MUw4OS44Mjk3IDQ4LjA5MzNaTTg5LjgyOTcgNDguMDkzM0w4OS41ODk5IDQ3LjEyMjVDODUuMTE1IDQ4LjIyODEgODEuNzk2IDUyLjI2NjcgODEuNzk1MyA1Ny4wODUxTDgyLjc5NTMgNTcuMDg1Mkw4My43OTUzIDU3LjA4NTRDODMuNzk1OCA1My4yMDg0IDg2LjQ2NjMgNDkuOTU0NCA5MC4wNjk2IDQ5LjA2NDFMODkuODI5NyA0OC4wOTMzWk04Mi43OTUzIDU3LjA4NTJMODEuNzk1MyA1Ny4wODUxQzgxLjc5NDcgNjEuOTAzNiA4NS4xMTI5IDY1Ljk0MjIgODkuNTg3NSA2Ny4wNDg3TDg5LjgyNzYgNjYuMDc3OUw5MC4wNjc2IDY1LjEwNzFDODYuNDY0NCA2NC4yMTYyIDgzLjc5NDggNjAuOTYyMiA4My43OTUzIDU3LjA4NTNMODIuNzk1MyA1Ny4wODUyWk05MS43MzkyIDY4LjI3NjRMOTAuNzM5MiA2OC4yNzYzTDkwLjczODIgNzYuNDkzNEw5MS43MzgyIDc2LjQ5MzVMOTIuNzM4MiA3Ni40OTM3TDkyLjczOTIgNjguMjc2Nkw5MS43MzkyIDY4LjI3NjRaTTg5LjczOCA3OC40OTMzTDg5LjczODEgNzcuNDkzM0wyLjk5OTg0IDc3LjQ4MjdMMi45OTk3MiA3OC40ODI3TDIuOTk5NiA3OS40ODI3TDg5LjczNzkgNzkuNDkzM0w4OS43MzggNzguNDkzM1pNMC45OTk5NiA3Ni40ODI0TDEuOTk5OTYgNzYuNDgyNUwyLjAwNDY0IDM4LjMwODdMMS4wMDQ2NCAzOC4zMDg2TDAuMDA0NjM3NzYgMzguMzA4NUwtMy45NjA3NWUtMDUgNzYuNDgyM0wwLjk5OTk2IDc2LjQ4MjRaTTMuMDA0ODggMzYuMzA4OEwzLjAwNDc2IDM3LjMwODhMODkuNzQzIDM3LjMxOTVMODkuNzQzMiAzNi4zMTk1TDg5Ljc0MzMgMzUuMzE5NUwzLjAwNTAxIDM1LjMwODhMMy4wMDQ4OCAzNi4zMDg4Wk05MS43NDI5IDM4LjMxOTdMOTAuNzQyOSAzOC4zMTk2TDkwLjc0MiA0NS44OTUxTDkxLjc0MiA0NS44OTUyTDkyLjc0MiA0NS44OTUzTDkyLjc0MjkgMzguMzE5OEw5MS43NDI5IDM4LjMxOTdaTTg5Ljc0MzIgMzYuMzE5NUw4OS43NDMgMzcuMzE5NUM5MC4yOTUzIDM3LjMxOTUgOTAuNzQzIDM3Ljc2NzMgOTAuNzQyOSAzOC4zMTk2TDkxLjc0MjkgMzguMzE5N0w5Mi43NDI5IDM4LjMxOThDOTIuNzQzMSAzNi42NjMgOTEuNDAwMSAzNS4zMTk3IDg5Ljc0MzMgMzUuMzE5NUw4OS43NDMyIDM2LjMxOTVaTTIuOTk5NzIgNzguNDgyN0wyLjk5OTg0IDc3LjQ4MjdDMi40NDc1NSA3Ny40ODI2IDEuOTk5ODkgNzcuMDM0OCAxLjk5OTk2IDc2LjQ4MjVMMC45OTk5NiA3Ni40ODI0TC0zLjk2MDc1ZS0wNSA3Ni40ODIzQy0wLjAwMDI0MjYxOSA3OC4xMzkyIDEuMzQyNzQgNzkuNDgyNSAyLjk5OTYgNzkuNDgyN0wyLjk5OTcyIDc4LjQ4MjdaTTkxLjczODIgNzYuNDkzNUw5MC43MzgyIDc2LjQ5MzRDOTAuNzM4MiA3Ny4wNDU3IDkwLjI5MDQgNzcuNDkzNCA4OS43MzgxIDc3LjQ5MzNMODkuNzM4IDc4LjQ5MzNMODkuNzM3OSA3OS40OTMzQzkxLjM5NDcgNzkuNDkzNSA5Mi43MzggNzguMTUwNSA5Mi43MzgyIDc2LjQ5MzdMOTEuNzM4MiA3Ni40OTM1Wk04OS44Mjc2IDY2LjA3NzlMODkuNTg3NSA2Ny4wNDg3QzkwLjMxMjggNjcuMjI4IDkwLjczOTMgNjcuNzc1NCA5MC43MzkyIDY4LjI3NjNMOTEuNzM5MiA2OC4yNzY0TDkyLjczOTIgNjguMjc2NkM5Mi43Mzk1IDY2LjYyMTEgOTEuNDM1NiA2NS40NDU0IDkwLjA2NzYgNjUuMTA3MUw4OS44Mjc2IDY2LjA3NzlaTTEuMDA0NjQgMzguMzA4NkwyLjAwNDY0IDM4LjMwODdDMi4wMDQ3MSAzNy43NTY0IDIuNDUyNDggMzcuMzA4OCAzLjAwNDc2IDM3LjMwODhMMy4wMDQ4OCAzNi4zMDg4TDMuMDA1MDEgMzUuMzA4OEMxLjM0ODE1IDM1LjMwODYgMC4wMDQ4NDA3NyAzNi42NTE2IDAuMDA0NjM3NzYgMzguMzA4NUwxLjAwNDY0IDM4LjMwODZaTTg5LjgyOTcgNDguMDkzM0w5MC4wNjk2IDQ5LjA2NDFDOTEuNDM3NiA0OC43MjYxIDkyLjc0MTggNDcuNTUwOCA5Mi43NDIgNDUuODk1M0w5MS43NDIgNDUuODk1Mkw5MC43NDIgNDUuODk1MUM5MC43NDE5IDQ2LjM5NiA5MC4zMTUzIDQ2Ljk0MzMgODkuNTg5OSA0Ny4xMjI1TDg5LjgyOTcgNDguMDkzM1pcIlxuICAgICAgZmlsbD1cIiNCREJEQkRcIlxuICAgIC8+XG4gICAgPHBhdGhcbiAgICAgIGQ9XCJNNzEuMjk0OSAzNy41OTU3TDcxLjI5MDEgNzcuMjEzNlwiXG4gICAgICBzdHJva2U9XCIjQkRCREJEXCJcbiAgICAgIHN0cm9rZVdpZHRoPVwiMlwiXG4gICAgICBzdHJva2VMaW5lY2FwPVwicm91bmRcIlxuICAgICAgc3Ryb2tlRGFzaGFycmF5PVwiMiA1XCJcbiAgICAvPlxuICA8L3N2Zz5cbik7XG5cbmV4cG9ydCBkZWZhdWx0IFRpY2tldHNJY29uO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlU2VsZWN0b3IgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7IEJveCwgQnV0dG9uLCBUeXBvZ3JhcGh5IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCBUaWNrZXRzSWNvbiBmcm9tIFwiLi9UaWNrZXRzSWNvblwiO1xuaW1wb3J0IHsgVEFCUyB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgTm9UaWNrZXRzRm91bmQgPSAoeyBwYWdlVmlldywgb25DbGljayB9KSA9PiB7XG4gIGNvbnN0IHsgc3VtbWl0LCBsb2FkaW5nIH0gPSB1c2VTZWxlY3Rvcigoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlIHx8IHt9KTtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuXG4gIGNvbnN0IGdldENvbnRlbnQgPSAoKSA9PiB7XG4gICAgY29uc3QgbWFpbHRvVGFnID0gKFxuICAgICAgPGEgaHJlZj17YG1haWx0bzoke3N1bW1pdC5zdXBwb3J0X2VtYWlsfWB9PlxuICAgICAgICB7dChcImdlbmVyYWwuY29udGFjdF9zdXBwb3J0XCIpfVxuICAgICAgPC9hPlxuICAgICk7XG5cbiAgICBzd2l0Y2ggKHBhZ2VWaWV3KSB7XG4gICAgICBjYXNlIFRBQlMuT1JERVJTOiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdGl0bGU6IHQoXCJub19yZXN1bHRzLm9yZGVycy50aXRsZVwiKSxcbiAgICAgICAgICBib2R5OiAoXG4gICAgICAgICAgICA8PlxuICAgICAgICAgICAgICB7dChcIm5vX3Jlc3VsdHMub3JkZXJzLmJvZHlcIil9IHttYWlsdG9UYWd9LlxuICAgICAgICAgICAgPC8+XG4gICAgICAgICAgKSxcbiAgICAgICAgICBidXR0b25MYWJlbDogdChcImxhYmVscy5hc3NpZ25lZF90b19tZVwiKVxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgY2FzZSBUQUJTLlRJQ0tFVFM6IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0aXRsZTogdChcIm5vX3Jlc3VsdHMuYXNzaWduZWQudGl0bGVcIiksXG4gICAgICAgICAgYm9keTogKFxuICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAge3QoXCJub19yZXN1bHRzLmFzc2lnbmVkLmJvZHlcIil9IHttYWlsdG9UYWd9LlxuICAgICAgICAgICAgPC8+XG4gICAgICAgICAgKSxcbiAgICAgICAgICBidXR0b25MYWJlbDogdChcIm9yZGVycy50aXRsZVwiKVxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgZGVmYXVsdDoge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHRpdGxlOiB0KFwibm9fcmVzdWx0cy5maWx0ZXIudGl0bGVcIiksXG4gICAgICAgICAgYm9keTogdChcIm5vX3Jlc3VsdHMuZmlsdGVyLmJvZHlcIiksXG4gICAgICAgICAgYnV0dG9uTGFiZWw6IHQoXCJmaWx0ZXIuY2xlYXJfZmlsdGVyc1wiKVxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICBjb25zdCB7IHRpdGxlLCBib2R5LCBidXR0b25MYWJlbCB9ID0gZ2V0Q29udGVudCgpO1xuXG4gIGlmIChsb2FkaW5nKSByZXR1cm4gbnVsbDtcblxuICByZXR1cm4gKFxuICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMud3JhcHBlcn0+XG4gICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmljb25XcmFwcGVyfT5cbiAgICAgICAgPFRpY2tldHNJY29uIC8+XG4gICAgICA8L0JveD5cbiAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJoNlwiIGNsYXNzTmFtZT17c3R5bGVzLnRpdGxlfT5cbiAgICAgICAge3RpdGxlfVxuICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgPFR5cG9ncmFwaHlcbiAgICAgICAgdmFyaWFudD1cImJvZHkxXCJcbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuYm9keX1cbiAgICAgICAgc3g9e3sgY29sb3I6IFwidGV4dC5zZWNvbmRhcnlcIiB9fVxuICAgICAgPlxuICAgICAgICB7Ym9keX1cbiAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgIDxCdXR0b25cbiAgICAgICAgdmFyaWFudD1cImNvbnRhaW5lZFwiXG4gICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgIG9uQ2xpY2s9e29uQ2xpY2t9XG4gICAgICA+XG4gICAgICAgIHtidXR0b25MYWJlbH1cbiAgICAgIDwvQnV0dG9uPlxuICAgIDwvQm94PlxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgTm9UaWNrZXRzRm91bmQ7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBHcmlkLCBCb3ggfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IERpdmlkZXIgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvRGl2aWRlclwiO1xuaW1wb3J0IHsgY2FsY3VsYXRlT3JkZXJUb3RhbHMsIGZvcm1hdEN1cnJlbmN5IH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IE9yZGVyU3VtbWFyeVRhYmxlID0gKHsgb3JkZXIsIHN1bW1pdCB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3Qge1xuICAgIGRpc2NvdW50VG90YWwsXG4gICAgcmVmdW5kVG90YWwsXG4gICAgYW1vdW50VG90YWwsXG4gICAgc3ViVG90YWwsXG4gICAgdGlja2V0U3VtbWFyeSxcbiAgICB0YXhlc1N1bW1hcnlcbiAgfSA9IGNhbGN1bGF0ZU9yZGVyVG90YWxzKHsgb3JkZXIsIHN1bW1pdCB9KTtcblxuICBjb25zdCBodW5kcmVkID0gMTAwO1xuXG4gIHJldHVybiAoXG4gICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5vcmRlclN1bW1hcnlUYWJsZX0+XG4gICAgICB7dGlja2V0U3VtbWFyeT8ubGVuZ3RoID4gMCAmJiAoXG4gICAgICAgIDw+XG4gICAgICAgICAge3RpY2tldFN1bW1hcnkubWFwKCh0aWNrZXQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHRpY2tldFRvdGFsID1cbiAgICAgICAgICAgICAgKHRpY2tldC5xdHkgKiAodGlja2V0LnRpY2tldF90eXBlLmNvc3QgKiBodW5kcmVkKSkgLyBodW5kcmVkO1xuXG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICA8R3JpZFxuICAgICAgICAgICAgICAgIGNvbnRhaW5lclxuICAgICAgICAgICAgICAgIGtleT17YHRpeG9yZGVyXyR7dGlja2V0LnRpY2tldF90eXBlLmNyZWF0ZWR9YH1cbiAgICAgICAgICAgICAgICBzeD17eyBwYjogMSB9fVxuICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwib3JkZXItc3VtbWFyeS1pdGVtaXplZFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8R3JpZCB4cz17OH0gaXRlbT5cbiAgICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgICB4e3RpY2tldC5xdHl9IHt0aWNrZXQudGlja2V0X3R5cGUubmFtZX1cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgICAgICAgPEdyaWQgeHM9ezR9IGl0ZW0gYWxpZ249XCJyaWdodFwiPlxuICAgICAgICAgICAgICAgICAge2Zvcm1hdEN1cnJlbmN5KHRpY2tldFRvdGFsLCB7IGN1cnJlbmN5OiBvcmRlci5jdXJyZW5jeSB9KX1cbiAgICAgICAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSl9XG4gICAgICAgIDwvPlxuICAgICAgKX1cbiAgICAgIDxEaXZpZGVyIC8+XG4gICAgICA8R3JpZCBjb250YWluZXIgc3g9e3sgcHQ6IDEsIHBiOiAxIH19PlxuICAgICAgICA8R3JpZCB4cz17OH0gaXRlbT5cbiAgICAgICAgICB7dChcIm9yZGVyX3N1bW1hcnkuc3ViX3RvdGFsXCIpfVxuICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDxHcmlkIHhzPXs0fSBpdGVtIGFsaWduPVwicmlnaHRcIj5cbiAgICAgICAgICB7c3ViVG90YWx9XG4gICAgICAgIDwvR3JpZD5cbiAgICAgIDwvR3JpZD5cbiAgICAgIHtvcmRlci50YXhlc19hbW91bnQgPiAwICYmXG4gICAgICAgIHRheGVzU3VtbWFyeT8ubGVuZ3RoID4gMCAmJlxuICAgICAgICB0YXhlc1N1bW1hcnkubWFwKCh0YXgpID0+IChcbiAgICAgICAgICA8R3JpZCBjb250YWluZXIgc3g9e3sgcGI6IDEgfX0ga2V5PXt0YXguaWR9PlxuICAgICAgICAgICAgPEdyaWQgeHM9ezh9IGl0ZW0+XG4gICAgICAgICAgICAgIHt0YXgubmFtZX1cbiAgICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICAgIDxHcmlkIHhzPXs0fSBpdGVtIGFsaWduPVwicmlnaHRcIj5cbiAgICAgICAgICAgICAge3RheC5hbW91bnR9XG4gICAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICApKX1cbiAgICAgIHtvcmRlci5kaXNjb3VudF9hbW91bnQgPiAwICYmIChcbiAgICAgICAgPEdyaWQgY29udGFpbmVyIHN4PXt7IHBiOiAxIH19PlxuICAgICAgICAgIDxHcmlkIHhzPXs4fSBpdGVtPlxuICAgICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5LmRpc2NvdW50c1wiKX1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgPEdyaWQgeHM9ezR9IGl0ZW0gYWxpZ249XCJyaWdodFwiPlxuICAgICAgICAgICAgLXtkaXNjb3VudFRvdGFsfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgKX1cbiAgICAgIHtyZWZ1bmRUb3RhbCA+IDAgJiYgKFxuICAgICAgICA8R3JpZCBjb250YWluZXIgc3g9e3sgcGI6IDEgfX0+XG4gICAgICAgICAgPEdyaWQgeHM9ezh9IGl0ZW0+XG4gICAgICAgICAgICB7dChcIm9yZGVyX3N1bW1hcnkucmVmdW5kc1wiKX1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgPEdyaWQgeHM9ezR9IGl0ZW0gYWxpZ249XCJyaWdodFwiPlxuICAgICAgICAgICAge3JlZnVuZFRvdGFsfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgKX1cbiAgICAgIDxEaXZpZGVyIC8+XG4gICAgICA8R3JpZCBjb250YWluZXIgc3g9e3sgcHQ6IDEsIHBiOiAxIH19PlxuICAgICAgICA8R3JpZCB4cz17OH0gaXRlbT5cbiAgICAgICAgICB7dChcIm9yZGVyX3N1bW1hcnkudG90YWxcIil9XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICAgPEdyaWQgeHM9ezR9IGl0ZW0gYWxpZ249XCJyaWdodFwiPlxuICAgICAgICAgIHthbW91bnRUb3RhbH1cbiAgICAgICAgPC9HcmlkPlxuICAgICAgPC9HcmlkPlxuICAgIDwvQm94PlxuICApO1xufTtcblxuT3JkZXJTdW1tYXJ5VGFibGUucHJvcFR5cGVzID0ge1xuICBvcmRlcjogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBjdXJyZW5jeTogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBkaXNjb3VudF9hbW91bnQ6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgdGF4ZXNfYW1vdW50OiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIHN0YXR1czogUHJvcFR5cGVzLnN0cmluZ1xuICB9KSxcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0XG59O1xuXG5leHBvcnQgZGVmYXVsdCBPcmRlclN1bW1hcnlUYWJsZTtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEJ1dHRvbiB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VOb3cgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcbmltcG9ydCB7IHRpY2tldHNSZWZ1bmRhYmxlIH0gZnJvbSBcIi4uLy4uL3V0aWxzL3RpY2tldFV0aWxzXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgeyB1c2VTdW1taXREZXRhaWxzIH0gZnJvbSBcIi4uLy4uL3V0aWxzL3N1bW1pdFV0aWxzXCI7XG5cbmNvbnN0IFJlZnVuZEVtYWlsU3VwcG9ydCA9ICh7XG4gIHN1bW1pdCxcbiAgdGlja2V0cyxcbiAgc3VibWl0UmVxdWVzdCxcbiAgb25SZWZ1bmRDbGljayxcbiAgb25SZWZ1bmREZXRhaWxDbGlja1xufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IHsgaXNTdGFydGVkIH0gPSB1c2VTdW1taXREZXRhaWxzKHsgc3VtbWl0IH0pO1xuICBjb25zdCBub3cgPSB1c2VOb3coKTtcbiAgY29uc3QgaXNJblJlZnVuZGFibGVQZXJpb2QgPVxuICAgIHN1bW1pdC5yZWdpc3RyYXRpb25fYWxsb3dlZF9yZWZ1bmRfcmVxdWVzdF90aWxsX2RhdGUgPiBub3c7XG4gIGNvbnN0IGF0TGVhc3RPbmVSZWZ1bmRhYmxlVGlja2V0ID0gdGlja2V0c1JlZnVuZGFibGUodGlja2V0cyk7XG4gIGNvbnN0IGlzUmVmdW5kYWJsZSA9ICEhKFxuICAgIGlzSW5SZWZ1bmRhYmxlUGVyaW9kICYmXG4gICAgIWlzU3RhcnRlZCAmJlxuICAgIGF0TGVhc3RPbmVSZWZ1bmRhYmxlVGlja2V0XG4gICk7XG4gIGNvbnN0IGhhc1JlZnVuZFJlcXVlc3RzID0gdGlja2V0cz8uc29tZSgodCkgPT4gdC5yZWZ1bmRfcmVxdWVzdHMubGVuZ3RoID4gMCk7XG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIHtpc1JlZnVuZGFibGUgJiYgKFxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgYXJpYS1sYWJlbD1cInJlZnVuZCByZXF1ZXN0IGJ1dHRvblwiXG4gICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMub3JkZXJTdW1tYXJ5QnV0dG9ufVxuICAgICAgICAgICR7c3VibWl0UmVxdWVzdCA/IHN0eWxlcy5yZWZ1bmREaXNhYmxlZCA6IFwiXCJ9YH1cbiAgICAgICAgICB2YXJpYW50PVwib3V0bGluZWRcIlxuICAgICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgb25DbGljaz17b25SZWZ1bmRDbGlja31cbiAgICAgICAgICBkaXNhYmxlZD17c3VibWl0UmVxdWVzdH1cbiAgICAgICAgPlxuICAgICAgICAgIHt0KFwib3JkZXJfc3VtbWFyeS5yZXF1ZXN0X3JlZnVuZFwiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICApfVxuICAgICAge2hhc1JlZnVuZFJlcXVlc3RzICYmIChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJyZWZ1bmQgZGV0YWlscyBidXR0b25cIlxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyU3VtbWFyeUJ1dHRvbn1cbiAgICAgICAgICB2YXJpYW50PVwib3V0bGluZWRcIlxuICAgICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgb25DbGljaz17b25SZWZ1bmREZXRhaWxDbGlja31cbiAgICAgICAgPlxuICAgICAgICAgIHt0KFwib3JkZXJfc3VtbWFyeS5yZWZ1bmRfZGV0YWlsc1wiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICApfVxuICAgICAgPEJ1dHRvblxuICAgICAgICBhcmlhLWxhYmVsPVwiZW1haWwgc3VwcG9ydCBidXR0b25cIlxuICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJTdW1tYXJ5QnV0dG9ufVxuICAgICAgICB2YXJpYW50PVwib3V0bGluZWRcIlxuICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICB0YXJnZXQ9XCJfdG9wXCJcbiAgICAgICAgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiXG4gICAgICAgIGhyZWY9e2BtYWlsdG86JHtzdW1taXQuc3VwcG9ydF9lbWFpbH1gfVxuICAgICAgPlxuICAgICAgICB7dChcIm9yZGVyX2luZm8uZW1haWxfc3VwcG9ydFwiKX1cbiAgICAgIDwvQnV0dG9uPlxuICAgIDwvPlxuICApO1xufTtcblxuUmVmdW5kRW1haWxTdXBwb3J0LnByb3BUeXBlcyA9IHtcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0LFxuICB0aWNrZXRzOiBQcm9wVHlwZXMuYXJyYXlPZihPYmplY3QpLFxuICBvblJlZnVuZENsaWNrOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25SZWZ1bmREZXRhaWxDbGljazogUHJvcFR5cGVzLmZ1bmMsXG4gIHN1Ym1pdFJlcXVlc3Q6IFByb3BUeXBlcy5ib29sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBSZWZ1bmRFbWFpbFN1cHBvcnQ7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBHcmlkLCBCb3ggfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IE9yZGVyU3VtbWFyeVRhYmxlIGZyb20gXCIuL09yZGVyU3VtbWFyeVRhYmxlXCI7XG5pbXBvcnQgUmVmdW5kRW1haWxTdXBwb3J0IGZyb20gXCIuL1JlZnVuZEVtYWlsU3VwcG9ydFwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBPcmRlclN1bW1hcnkgPSAoe1xuICBvcmRlcixcbiAgc3VtbWl0LFxuICBvblJlZnVuZENsaWNrLFxuICBzdWJtaXRSZXF1ZXN0LFxuICBvblJlZnVuZERldGFpbENsaWNrXG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPEJveFxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5vcmRlclN1bW1hcnlXcmFwcGVyfVxuICAgICAgICBzeD17eyBwdDogNCwgcHg6IDQgfX1cbiAgICAgICAgZGF0YS10ZXN0aWQ9XCJvcmRlci1zdW1tYXJ5LWNvbnRhaW5lclwiXG4gICAgICA+XG4gICAgICAgIDxoMz57dChcIm9yZGVyX3N1bW1hcnkub3JkZXJfc3VtbWFyeVwiKX08L2gzPlxuICAgICAgICA8R3JpZCBjb250YWluZXI+XG4gICAgICAgICAgPEdyaWRcbiAgICAgICAgICAgIHhzPXsxMn1cbiAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyU3VtbWFyeVB1cmNoYXNlZEluZm99XG4gICAgICAgICAgICBzeD17eyBwYjogMyB9fVxuICAgICAgICAgICAgaXRlbVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxPcmRlclN1bW1hcnlUYWJsZSBvcmRlcj17b3JkZXJ9IHN1bW1pdD17c3VtbWl0fSAvPlxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgPC9Cb3g+XG4gICAgICA8Qm94IHhzPXsxMn0gc3g9e3sgcGI6IDMgfX0+XG4gICAgICAgIDxSZWZ1bmRFbWFpbFN1cHBvcnRcbiAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICB0aWNrZXRzPXtvcmRlcj8ubWVtYmVyVGlja2V0c31cbiAgICAgICAgICBzdWJtaXRSZXF1ZXN0PXtzdWJtaXRSZXF1ZXN0fVxuICAgICAgICAgIG9uUmVmdW5kQ2xpY2s9e29uUmVmdW5kQ2xpY2t9XG4gICAgICAgICAgb25SZWZ1bmREZXRhaWxDbGljaz17b25SZWZ1bmREZXRhaWxDbGlja31cbiAgICAgICAgLz5cbiAgICAgIDwvQm94PlxuICAgIDwvPlxuICApO1xufTtcbk9yZGVyU3VtbWFyeS5wcm9wVHlwZXMgPSB7XG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdCxcbiAgb3JkZXI6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgbWVtYmVyVGlja2V0czogUHJvcFR5cGVzLmFycmF5T2YoT2JqZWN0KVxuICB9KSxcbiAgb25SZWZ1bmRDbGljazogUHJvcFR5cGVzLmZ1bmMsXG4gIHN1Ym1pdFJlcXVlc3Q6IFByb3BUeXBlcy5ib29sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBPcmRlclN1bW1hcnk7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VTZWxlY3Rvciwgc2hhbGxvd0VxdWFsIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgSW5maW5pdGVTY3JvbGwgZnJvbSBcInJlYWN0LWluZmluaXRlLXNjcm9sbC1jb21wb25lbnRcIjtcbmltcG9ydCBPcmRlckxpc3RUaWNrZXRzIGZyb20gXCIuL09yZGVyTGlzdFRpY2tldHNcIjtcbmltcG9ydCB7IE9ORV9QQUdFX05FWFQgfSBmcm9tIFwiLi4vLi4vdXRpbHMvY29uc3RhbnRzXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IEFzc2lnblRvTWUgPSAoeyBmZXRjaERhdGEgfSkgPT4ge1xuICBjb25zdCB7XG4gICAgc3VtbWl0LFxuICAgIHVzZXJUaWNrZXRzLFxuICAgIHVzZXJfdGlja2V0c19jdXJyZW50X3BhZ2UsXG4gICAgdXNlcl90aWNrZXRzX2xhc3RfcGFnZVxuICB9ID0gdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSB8fCB7fSwgc2hhbGxvd0VxdWFsKTtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJUaWNrZXRDb250YWluZXJ9PlxuICAgICAgPGRpdiBpZD1cImFzc2lnbmVkVG9NZVdyYXBwZXJcIiBjbGFzc05hbWU9e3N0eWxlcy5hc3NpZ25lZFRvTWVXcmFwcGVyfT5cbiAgICAgICAgPEluZmluaXRlU2Nyb2xsXG4gICAgICAgICAgZGF0YUxlbmd0aD17dXNlclRpY2tldHM/Lmxlbmd0aH1cbiAgICAgICAgICBuZXh0PXsoKSA9PiBmZXRjaERhdGEodXNlcl90aWNrZXRzX2N1cnJlbnRfcGFnZSArIE9ORV9QQUdFX05FWFQpfVxuICAgICAgICAgIGhhc01vcmU9e3VzZXJfdGlja2V0c19jdXJyZW50X3BhZ2UgPCB1c2VyX3RpY2tldHNfbGFzdF9wYWdlfVxuICAgICAgICAgIHNjcm9sbFRocmVzaG9sZD17MX1cbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0TGlzdENvbnRhaW5lcn0+XG4gICAgICAgICAgICB7dXNlclRpY2tldHMubWFwKCh0aWNrZXQpID0+IChcbiAgICAgICAgICAgICAgPE9yZGVyTGlzdFRpY2tldHNcbiAgICAgICAgICAgICAgICBrZXk9e3RpY2tldC5pZH1cbiAgICAgICAgICAgICAgICB0aWNrZXQ9e3RpY2tldH1cbiAgICAgICAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICAgICAgICBpc1JlZnVuZE1vZGFsPXtmYWxzZX1cbiAgICAgICAgICAgICAgICBpc1NlbGVjdGVkVG9SZWZ1bmQ9e1tdfVxuICAgICAgICAgICAgICAgIHNlbGVjdFRvUmVmdW5kPXtmYWxzZX1cbiAgICAgICAgICAgICAgICBpc0V4dGVybmFsQXNzaWduZWRUaWNrZXRcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICkpfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L0luZmluaXRlU2Nyb2xsPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBBc3NpZ25Ub01lO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQm94LCBHcmlkLCBUeXBvZ3JhcGh5IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgQXNzaWduZWRUbyA9ICh7IGVtYWlsIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuXG4gIHJldHVybiAoXG4gICAgPEJveD5cbiAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMubGFiZWx9Pnt0KFwidGlja2V0X3N0YXR1cy5hc3NpZ25lZF90b1wiKX06PC9Cb3g+XG4gICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiYm9keTFcIiBkYXRhLXRlc3RpZD1cImF0dGVuZGVlLXN0YXR1cy1hc3NpZ25lZFwiPlxuICAgICAgICB7ZW1haWx9XG4gICAgICA8L1R5cG9ncmFwaHk+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5jb25zdCBFeHRlcm5hbEFzc2lnbmVkVG8gPSAoeyBmaXJzdE5hbWUsIGxhc3ROYW1lIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuXG4gIHJldHVybiAoXG4gICAgPEJveD5cbiAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMubGFiZWx9Pnt0KFwidGlja2V0X3N0YXR1cy5hc3NpZ25lZF9ieVwiKX06PC9Cb3g+XG4gICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiYm9keTFcIj5cbiAgICAgICAge2ZpcnN0TmFtZX0ge2xhc3ROYW1lfVxuICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgIDwvQm94PlxuICApO1xufTtcblxuY29uc3QgTWFuYWdlRm9yID0gKHsgZmlyc3ROYW1lLCBsYXN0TmFtZSB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcblxuICByZXR1cm4gKFxuICAgIDxCb3g+XG4gICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmxhYmVsfT57dChcInRpY2tldF9zdGF0dXMubWFuYWdlX2ZvclwiKX06PC9Cb3g+XG4gICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiYm9keTFcIj5cbiAgICAgICAge2ZpcnN0TmFtZX0ge2xhc3ROYW1lfVxuICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgIDwvQm94PlxuICApO1xufTtcblxuY29uc3QgQXR0ZW5kZWVTdGF0dXMgPSAoeyB0aWNrZXQsIGlzRXh0ZXJuYWxBc3NpZ25lZFRpY2tldCB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgaXNVbmFzc2lnbmVkID0gIXRpY2tldC5vd25lcj8uZW1haWwgJiYgdGlja2V0LmlzX2FjdGl2ZTtcbiAgY29uc3QgaXNEZWxlZ2F0ZWQgPSAhIXRpY2tldC5vd25lcj8ubWFuYWdlcl9pZDtcblxuICBpZiAoaXNVbmFzc2lnbmVkKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxzcGFuXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldE93bmVyRW1haWx9XG4gICAgICAgIGRhdGEtdGVzdGlkPVwiYXR0ZW5kZWUtc3RhdHVzLXVuYXNzaWduZWRcIlxuICAgICAgPlxuICAgICAgICB7dChcInRpY2tldF9zdGF0dXMuYXR0ZW5kZWVfc3RhdHVzX3VuYXNzaWduZWRcIil9XG4gICAgICA8L3NwYW4+XG4gICAgKTtcbiAgfVxuXG4gIGlmICh0aWNrZXQub3duZXI/LmVtYWlsKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxHcmlkIGNvbnRhaW5lcj5cbiAgICAgICAgPEdyaWQgaXRlbT5cbiAgICAgICAgICA8QXNzaWduZWRUbyBlbWFpbD17dGlja2V0Lm93bmVyLmVtYWlsfSAvPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICAgIHtpc0V4dGVybmFsQXNzaWduZWRUaWNrZXQgJiYgKFxuICAgICAgICAgIDxHcmlkIGl0ZW0gY2xhc3NOYW1lPXtzdHlsZXMuYXNzaWduZWRCeVRleHR9PlxuICAgICAgICAgICAgPEV4dGVybmFsQXNzaWduZWRUb1xuICAgICAgICAgICAgICBmaXJzdE5hbWU9e3RpY2tldC5vcmRlcj8ub3duZXJfZmlyc3RfbmFtZX1cbiAgICAgICAgICAgICAgbGFzdE5hbWU9e3RpY2tldC5vcmRlcj8ub3duZXJfbGFzdF9uYW1lfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICl9XG4gICAgICAgIHtpc0RlbGVnYXRlZCAmJiAoXG4gICAgICAgICAgPEdyaWQgaXRlbSBjbGFzc05hbWU9e3N0eWxlcy5hc3NpZ25lZEJ5VGV4dH0+XG4gICAgICAgICAgICA8TWFuYWdlRm9yXG4gICAgICAgICAgICAgIGZpcnN0TmFtZT17dGlja2V0Lm93bmVyPy5maXJzdF9uYW1lfVxuICAgICAgICAgICAgICBsYXN0TmFtZT17dGlja2V0Lm93bmVyPy5sYXN0X25hbWV9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgKX1cbiAgICAgIDwvR3JpZD5cbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59O1xuXG5BdHRlbmRlZVN0YXR1cy5wcm9wVHlwZXMgPSB7XG4gIHRpY2tldDogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBvd25lcjogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAgIGVtYWlsOiBQcm9wVHlwZXMuc3RyaW5nXG4gICAgfSksXG4gICAgaXNfYWN0aXZlOiBQcm9wVHlwZXMuYm9vbFxuICB9KSxcbiAgaXNFeHRlcm5hbEFzc2lnbmVkVGlja2V0OiBQcm9wVHlwZXMuYm9vbFxufTtcblxuZXhwb3J0IGRlZmF1bHQgQXR0ZW5kZWVTdGF0dXM7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBPcmRlckxpc3RUaWNrZXRzIGZyb20gXCIuL09yZGVyTGlzdFRpY2tldHNcIjtcbmltcG9ydCB7IFBBR0lOQVRJT05fRElTUExBWV9DT1VOVCB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgT3JkZXJMaXN0SXRlbSA9ICh7XG4gIHN1bW1pdCxcbiAgb3JkZXIsXG4gIG9uUGFnaW5hdGVDbGljayxcbiAgdGlja2V0c1RvUmVmdW5kLFxuICBzZWxlY3RUb1JlZnVuZFxufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IFtpdGVtc1RvRGlzcGxheSwgc2V0SXRlbXNUb0Rpc3BsYXldID0gdXNlU3RhdGUoXG4gICAgUEFHSU5BVElPTl9ESVNQTEFZX0NPVU5UXG4gICk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRJdGVtc1RvRGlzcGxheShQQUdJTkFUSU9OX0RJU1BMQVlfQ09VTlQpO1xuICB9LCBbb3JkZXI/LnRpY2tldHNfdG90YWxdKTtcblxuICBpZiAoIW9yZGVyPy5tZW1iZXJUaWNrZXRzPy5sZW5ndGgpIHJldHVybiBudWxsO1xuICBjb25zdCBzbGljZWRUaWNrZXRzID0gb3JkZXI/Lm1lbWJlclRpY2tldHM/LnNsaWNlKDAsIGl0ZW1zVG9EaXNwbGF5KTtcblxuICBjb25zdCBvblZpZXdNb3JlID0gKCkgPT4ge1xuICAgIGlmIChvcmRlcj8udGlja2V0c190b3RhbCA+IG9yZGVyPy5tZW1iZXJUaWNrZXRzLmxlbmd0aCkge1xuICAgICAgb25QYWdpbmF0ZUNsaWNrKCk7XG4gICAgfVxuICAgIHNldEl0ZW1zVG9EaXNwbGF5KGl0ZW1zVG9EaXNwbGF5ICsgUEFHSU5BVElPTl9ESVNQTEFZX0NPVU5UKTtcbiAgfTtcblxuICBjb25zdCBvblZpZXdMZXNzID0gKCkgPT4gc2V0SXRlbXNUb0Rpc3BsYXkoUEFHSU5BVElPTl9ESVNQTEFZX0NPVU5UKTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICB7c2xpY2VkVGlja2V0cz8ubWFwKCh0aWNrZXQpID0+IChcbiAgICAgICAgPE9yZGVyTGlzdFRpY2tldHNcbiAgICAgICAgICBrZXk9e3RpY2tldC5pZH1cbiAgICAgICAgICB0aWNrZXQ9e3RpY2tldH1cbiAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICBpc1JlZnVuZE1vZGFsPXtmYWxzZX1cbiAgICAgICAgICBpc1NlbGVjdGVkVG9SZWZ1bmQ9eyEhdGlja2V0c1RvUmVmdW5kLmZpbmQoKHQpID0+IHQuaWQgPT09IHRpY2tldC5pZCl9XG4gICAgICAgICAgc2VsZWN0VG9SZWZ1bmQ9e3NlbGVjdFRvUmVmdW5kfVxuICAgICAgICAvPlxuICAgICAgKSl9XG4gICAgICB7b3JkZXI/LnRpY2tldHNfdG90YWwgPiBpdGVtc1RvRGlzcGxheSA/IChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJ2aWV3IG1vcmUgYnV0dG9uXCJcbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy52aWV3TW9yZUJ1dHRvbn1cbiAgICAgICAgICBvbkNsaWNrPXtvblZpZXdNb3JlfVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJnZW5lcmFsLnZpZXdfbW9yZVwiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICApIDogKFxuICAgICAgICBcIlwiXG4gICAgICApfVxuICAgICAge3NsaWNlZFRpY2tldHM/Lmxlbmd0aCA+IFBBR0lOQVRJT05fRElTUExBWV9DT1VOVCAmJlxuICAgICAgc2xpY2VkVGlja2V0cz8ubGVuZ3RoID09PSBvcmRlcj8udGlja2V0c190b3RhbCA/IChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJ2aWV3IGxlc3MgYnV0dG9uXCJcbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy52aWV3TW9yZUJ1dHRvbn1cbiAgICAgICAgICBvbkNsaWNrPXtvblZpZXdMZXNzfVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJnZW5lcmFsLnZpZXdfbGVzc1wiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICApIDogKFxuICAgICAgICBcIlwiXG4gICAgICApfVxuICAgIDwvPlxuICApO1xufTtcblxuT3JkZXJMaXN0SXRlbS5wcm9wVHlwZXMgPSB7XG4gIG9yZGVyOiBQcm9wVHlwZXMub2JqZWN0LFxuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3Rcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE9yZGVyTGlzdEl0ZW07XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE3IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuXG5pbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEdyaWQsIEJ1dHRvbiwgQm94LCBUb29sdGlwIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBTdGFjayBmcm9tIFwiQG11aS9tYXRlcmlhbC9TdGFja1wiO1xuaW1wb3J0IENoZWNrYm94IGZyb20gXCJAbXVpL21hdGVyaWFsL0NoZWNrYm94XCI7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IFRpY2tldFN0YXR1cyBmcm9tIFwiLi4vVGlja2V0U3RhdHVzXCI7XG5pbXBvcnQgeyBnZXRTdW1taXRSZWFzc2lnbkRhdGUgfSBmcm9tIFwiLi4vLi4vdXRpbHMvc3VtbWl0VXRpbHNcIjtcbmltcG9ydCB7IHVzZU5vdyB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xuaW1wb3J0IEF0dGVuZGVlU3RhdHVzIGZyb20gXCIuL0F0dGVuZGVlU3RhdHVzXCI7XG5pbXBvcnQgVGlja2V0RGV0YWlsIGZyb20gXCIuLi9UaWNrZXREZXRhaWxcIjtcbmltcG9ydCB7IHVzZVRpY2tldERldGFpbHMgfSBmcm9tIFwiLi4vLi4vaG9va3MvdXNlVGlja2V0RGV0YWlsc1wiO1xuaW1wb3J0IENvcHlUZXh0IGZyb20gXCIuLi9Db3B5VGV4dFwiO1xuaW1wb3J0IFRpY2tldEFzc2lnbiBmcm9tIFwiLi4vVGlja2V0QXNzaWduXCI7XG5pbXBvcnQgQmFkZ2VGZWF0dXJlSWNvbiBmcm9tIFwiLi4vQmFkZ2VGZWF0dXJlSWNvblwiO1xuaW1wb3J0IHsgcmVzZXRUaWNrZXQgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBtb2RhbFZpZXdzID0ge1xuICBkZXRhaWw6IFwiREVUQUlMXCIsXG4gIHJlYXNzaWduOiBcIlJFQVNTSUdOXCIsXG4gIGFzc2lnbjogXCJBU1NJR05cIlxufTtcblxuY29uc3QgVGlja2V0Q1RBcyA9ICh7XG4gIGlzSW5jb21wbGV0ZSxcbiAgaXNVbmFzc2lnbmVkLFxuICBpc1JlYXNzaWduYWJsZSxcbiAgb25PcGVuQ2xpY2tcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuXG4gIGlmIChpc1VuYXNzaWduZWQpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPEJ1dHRvblxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5hc3NpZ25UaWNrZXRCdXR0b259XG4gICAgICAgIG9uQ2xpY2s9eygpID0+IG9uT3BlbkNsaWNrKG1vZGFsVmlld3MuYXNzaWduKX1cbiAgICAgID5cbiAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLmFzc2lnbl90aWNrZXRcIil9XG4gICAgICA8L0J1dHRvbj5cbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8U3RhY2sgYWxpZ25JdGVtcz1cImNlbnRlclwiIGRpcmVjdGlvbj1cInJvd1wiPlxuICAgICAgPEJ1dHRvblxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy52aWV3RmluaXNoVGlja2V0QnV0dG9ufVxuICAgICAgICBvbkNsaWNrPXsoKSA9PiBvbk9wZW5DbGljayhtb2RhbFZpZXdzLmRldGFpbCl9XG4gICAgICA+XG4gICAgICAgIHtpc0luY29tcGxldGVcbiAgICAgICAgICA/IHQoXCJ0aWNrZXRfc3RhdHVzLmZpbmlzaF90aWNrZXRcIilcbiAgICAgICAgICA6IHQoXCJ0aWNrZXRfc3RhdHVzLnZpZXdfdGlja2V0XCIpfVxuICAgICAgPC9CdXR0b24+XG4gICAgICB7aXNSZWFzc2lnbmFibGUgJiYgKFxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgYXJpYS1sYWJlbD1cInJlYXNzaWduIHRpY2tldCBidXR0b25cIlxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnJlYXNzaWduQnV0dG9ufVxuICAgICAgICAgIG9uQ2xpY2s9eygpID0+IG9uT3BlbkNsaWNrKG1vZGFsVmlld3MucmVhc3NpZ24pfVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnJlYXNzaWduX3RpY2tldFwiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICApfVxuICAgIDwvU3RhY2s+XG4gICk7XG59O1xuXG5UaWNrZXRDVEFzLnByb3BUeXBlcyA9IHtcbiAgaXNJbmNvbXBsZXRlOiBQcm9wVHlwZXMuYm9vbC5pc1JlcXVpcmVkLFxuICBpc1VuYXNzaWduZWQ6IFByb3BUeXBlcy5ib29sLmlzUmVxdWlyZWQsXG4gIGlzUmVhc3NpZ25hYmxlOiBQcm9wVHlwZXMuYm9vbC5pc1JlcXVpcmVkLFxuICBvbk9wZW5DbGljazogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZFxufTtcblxuY29uc3QgT3JkZXJMaXN0VGlja2V0cyA9ICh7XG4gIHRpY2tldCxcbiAgc3VtbWl0LFxuICBpc1JlZnVuZE1vZGFsLFxuICBpc1NlbGVjdGVkVG9SZWZ1bmQsXG4gIHNlbGVjdFRvUmVmdW5kLFxuICBpc0V4dGVybmFsQXNzaWduZWRUaWNrZXRcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG4gIGNvbnN0IG5vdyA9IHVzZU5vdygpO1xuICBjb25zdCB7IGlzUmVmdW5kYWJsZSwgaXNVbmFzc2lnbmVkLCBpc0luY29tcGxldGUsIGNhblJlYXNzaWduIH0gPVxuICAgIHVzZVRpY2tldERldGFpbHModGlja2V0KTtcbiAgY29uc3QgW21vZGFsT3Blbiwgc2V0TW9kYWxPcGVuXSA9IHVzZVN0YXRlKG51bGwpO1xuICBjb25zdCByZWFzc2lnbkRhdGUgPSBnZXRTdW1taXRSZWFzc2lnbkRhdGUoc3VtbWl0KTtcbiAgY29uc3Qgb25SZWFzc2lnbmFibGVQZXJpb2QgPSByZWFzc2lnbkRhdGUgPiBub3c7XG4gIGNvbnN0IGlzUmVhc3NpZ25hYmxlID1cbiAgICBvblJlYXNzaWduYWJsZVBlcmlvZCAmJiBjYW5SZWFzc2lnbiAmJiAhaXNFeHRlcm5hbEFzc2lnbmVkVGlja2V0O1xuXG4gIGNvbnN0IGhhbmRsZUNsb3NlTW9kYWwgPSAoKSA9PiB7XG4gICAgZGlzcGF0Y2gocmVzZXRUaWNrZXQoKSk7XG4gICAgc2V0TW9kYWxPcGVuKG51bGwpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZU9wZW5Nb2RhbCA9ICh2aWV3KSA9PiB7XG4gICAgZGlzcGF0Y2gocmVzZXRUaWNrZXQoKSk7XG4gICAgc2V0TW9kYWxPcGVuKHZpZXcpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPEdyaWRcbiAgICAgIGNvbnRhaW5lclxuICAgICAga2V5PXt0aWNrZXQuaWR9XG4gICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5vcmRlcldyYXBwZXJ9ICR7XG4gICAgICAgIGlzUmVmdW5kTW9kYWwgPyBzdHlsZXMucmVmdW5kTW9kYWwgOiBcIlwiXG4gICAgICB9ICR7aXNSZWZ1bmRNb2RhbCAmJiAhaXNSZWZ1bmRhYmxlID8gc3R5bGVzLmRpc2FibGVkUmVmdW5kIDogXCJcIn0gJHtcbiAgICAgICAgaXNTZWxlY3RlZFRvUmVmdW5kID8gc3R5bGVzLnNlbGVjdGVkIDogXCJcIlxuICAgICAgfWB9XG4gICAgPlxuICAgICAge2lzUmVmdW5kTW9kYWwgJiYgKFxuICAgICAgICA8R3JpZCBpdGVtIHhzPXsxfSBwYWRkaW5nPXsyfSBjbGFzc05hbWU9e3N0eWxlcy5jaGVja2JveH0+XG4gICAgICAgICAgPENoZWNrYm94XG4gICAgICAgICAgICBhcmlhLWxhYmVsPVwicmVmdW5kIHRpY2tldCBjaGVja2JveFwiXG4gICAgICAgICAgICByb2xlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgY2hlY2tlZD17aXNTZWxlY3RlZFRvUmVmdW5kfVxuICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBzZWxlY3RUb1JlZnVuZChlLCB0aWNrZXQpfVxuICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgXCImIC5NdWlTdmdJY29uLXJvb3RcIjoge1xuICAgICAgICAgICAgICAgIGZvbnRTaXplOiAxOFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgZGlzYWJsZWQ9eyFpc1JlZnVuZGFibGV9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgKX1cbiAgICAgIDxHcmlkXG4gICAgICAgIGl0ZW1cbiAgICAgICAgY29udGFpbmVyXG4gICAgICAgIGRhdGEtdGVzdGlkPVwib3JkZXItbGlzdC10aWNrZXRcIlxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICAgICAgeHM9e2lzUmVmdW5kTW9kYWwgPyAxMSA6IDEyfVxuICAgICAgPlxuICAgICAgICA8R3JpZFxuICAgICAgICAgIHhzPXs4fVxuICAgICAgICAgIHB5PXsyfVxuICAgICAgICAgIHBsPXs0fVxuICAgICAgICAgIGl0ZW1cbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRUaWNrZXRUeXBlfVxuICAgICAgICAgIGp1c3RpZnk9XCJzcGFjZS1iZXR3ZWVuXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxTdGFja1xuICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6IFwiZmxleC1zdGFydFwiXG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgZGlyZWN0aW9uPVwicm93XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aDQ+e3RpY2tldC50aWNrZXRfdHlwZT8ubmFtZX08L2g0PlxuICAgICAgICAgIDwvU3RhY2s+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICAgPEdyaWQgY2xhc3NOYW1lPXtzdHlsZXMuYmFkZ2VGZWF0dXJlV3JhcHBlcn0geHM9ezR9IHB5PXsyfSBwcj17NH0gaXRlbT5cbiAgICAgICAgICB7dGlja2V0LmJhZGdlPy5mZWF0dXJlcz8ubWFwKChiZikgPT4gKFxuICAgICAgICAgICAgPFRvb2x0aXAgdGl0bGU9e2JmLm5hbWV9IGtleT17YmYubmFtZX0+XG4gICAgICAgICAgICAgIDxCYWRnZUZlYXR1cmVJY29uIG5hbWU9e2JmLm5hbWV9IGltYWdlPXtiZi5pbWFnZX0gLz5cbiAgICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9HcmlkPlxuICAgICAgICA8R3JpZCB4cz17MTJ9IHN4PXt7IHB4OiA0LCBwYjogMiB9fSBpdGVtPlxuICAgICAgICAgIDxBdHRlbmRlZVN0YXR1c1xuICAgICAgICAgICAgdGlja2V0PXt0aWNrZXR9XG4gICAgICAgICAgICBpc0V4dGVybmFsQXNzaWduZWRUaWNrZXQ9eyEhaXNFeHRlcm5hbEFzc2lnbmVkVGlja2V0fVxuICAgICAgICAgIC8+XG4gICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0Tm99PlxuICAgICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnRpY2tldF9ub1wiKX06e1wiIFwifVxuICAgICAgICAgICAgPENvcHlUZXh0XG4gICAgICAgICAgICAgIHRleHQ9e3RpY2tldC5udW1iZXJ9XG4gICAgICAgICAgICAgIHRvb2x0aXBUZXh0PXt0KFwidGlja2V0X3N0YXR1cy5jb3B5X3RpY2tldF9udW1iZXJcIil9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldEZvb3Rlcn0gcHg9e3sgeHM6IDEgfX0gcGI9e3sgeHM6IDIgfX0+XG4gICAgICAgICAgPEJveD5cbiAgICAgICAgICAgIDxUaWNrZXRTdGF0dXMgdGlja2V0PXt0aWNrZXR9IC8+XG4gICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRBY3Rpb25CdXR0b25zfT5cbiAgICAgICAgICAgIHt0aWNrZXQuaXNfYWN0aXZlICYmICFpc1JlZnVuZE1vZGFsICYmIChcbiAgICAgICAgICAgICAgPFRpY2tldENUQXNcbiAgICAgICAgICAgICAgICBpc1VuYXNzaWduZWQ9e2lzVW5hc3NpZ25lZH1cbiAgICAgICAgICAgICAgICBpc0luY29tcGxldGU9e2lzSW5jb21wbGV0ZX1cbiAgICAgICAgICAgICAgICBpc1JlYXNzaWduYWJsZT17aXNSZWFzc2lnbmFibGUgJiYgIWlzRXh0ZXJuYWxBc3NpZ25lZFRpY2tldH1cbiAgICAgICAgICAgICAgICBvbk9wZW5DbGljaz17aGFuZGxlT3Blbk1vZGFsfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L0JveD5cbiAgICAgICAgPC9Cb3g+XG4gICAgICAgIDxUaWNrZXREZXRhaWxcbiAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICB0aWNrZXRJZD17dGlja2V0Py5pZH1cbiAgICAgICAgICBvcmRlcklkPXt0aWNrZXQ/Lm9yZGVyX2lkIHx8IHRpY2tldD8ub3JkZXI/LmlkfVxuICAgICAgICAgIG93bmVySWQ9e3RpY2tldD8ub3duZXI/LmlkfVxuICAgICAgICAgIG9wZW49e21vZGFsT3BlbiA9PT0gbW9kYWxWaWV3cy5kZXRhaWx9XG4gICAgICAgICAgb25DbG9zZT17aGFuZGxlQ2xvc2VNb2RhbH1cbiAgICAgICAgLz5cbiAgICAgICAgPFRpY2tldEFzc2lnblxuICAgICAgICAgIHRpY2tldElkPXt0aWNrZXQ/LmlkfVxuICAgICAgICAgIG9yZGVySWQ9e3RpY2tldD8ub3JkZXJfaWQgfHwgdGlja2V0Py5vcmRlcj8uaWR9XG4gICAgICAgICAgb3duZXJJZD17dGlja2V0Py5vd25lcj8uaWR9XG4gICAgICAgICAgb3Blbj17W21vZGFsVmlld3MucmVhc3NpZ24sIG1vZGFsVmlld3MuYXNzaWduXS5pbmNsdWRlcyhtb2RhbE9wZW4pfVxuICAgICAgICAgIG9uQ2xvc2U9e2hhbmRsZUNsb3NlTW9kYWx9XG4gICAgICAgIC8+XG4gICAgICA8L0dyaWQ+XG4gICAgPC9HcmlkPlxuICApO1xufTtcblxuT3JkZXJMaXN0VGlja2V0cy5wcm9wVHlwZXMgPSB7XG4gIHRpY2tldDogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBpZDogUHJvcFR5cGVzLm51bWJlcixcbiAgICBvcmRlcl9pZDogUHJvcFR5cGVzLm51bWJlcixcbiAgICBvd25lcjogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAgIGlkOiBQcm9wVHlwZXMubnVtYmVyLFxuICAgICAgZW1haWw6IFByb3BUeXBlcy5zdHJpbmdcbiAgICB9KSxcbiAgICBudW1iZXI6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgdG90YWxfcmVmdW5kZWRfYW1vdW50OiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIHRpY2tldF90eXBlOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgICAgbmFtZTogUHJvcFR5cGVzLnN0cmluZ1xuICAgIH0pLFxuICAgIGlzX2FjdGl2ZTogUHJvcFR5cGVzLmJvb2xcbiAgfSksXG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdCxcbiAgaXNSZWZ1bmRNb2RhbDogUHJvcFR5cGVzLmJvb2wsXG4gIGlzU2VsZWN0ZWRUb1JlZnVuZDogUHJvcFR5cGVzLmJvb2wsXG4gIHNlbGVjdFRvUmVmdW5kOiBQcm9wVHlwZXMuZnVuYyxcbiAgaXNFeHRlcm5hbEFzc2lnbmVkVGlja2V0OiBQcm9wVHlwZXMuYm9vbFxufTtcblxuZXhwb3J0IGRlZmF1bHQgT3JkZXJMaXN0VGlja2V0cztcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgR3JpZCwgQm94IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBUYWJzIGZyb20gXCJAbXVpL21hdGVyaWFsL1RhYnNcIjtcbmltcG9ydCBUYWIgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvVGFiXCI7XG5pbXBvcnQgT3JkZXJMaXN0SXRlbSBmcm9tIFwiLi9PcmRlckxpc3RJdGVtXCI7XG5pbXBvcnQgT3JkZXJTdW1tYXJ5IGZyb20gXCIuLi9PcmRlclN1bW1hcnlcIjtcbmltcG9ydCBSZWZ1bmRSZXF1ZXN0c01vZGFsIGZyb20gXCIuLi9SZWZ1bmRSZXF1ZXN0c1wiO1xuaW1wb3J0IEVycm9yTGFiZWwgZnJvbSBcIi4uL0xhYmVscy9FcnJvckxhYmVsXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgUmVmdW5kRGV0YWlscyBmcm9tIFwiLi4vUmVmdW5kUmVxdWVzdHMvUmVmdW5kRGV0YWlsc1wiO1xuXG5jb25zdCBUYWJQYW5lbCA9IChwcm9wcykgPT4ge1xuICBjb25zdCB7IGNoaWxkcmVuLCB2YWx1ZSwgaW5kZXggfSA9IHByb3BzO1xuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIHJvbGU9XCJ0YWJwYW5lbFwiXG4gICAgICBoaWRkZW49e3ZhbHVlICE9PSBpbmRleH1cbiAgICAgIGlkPXtgdGFicGFuZWwtJHtpbmRleH1gfVxuICAgICAgYXJpYS1sYWJlbGxlZGJ5PXtgdGFiLSR7aW5kZXh9YH1cbiAgICA+XG4gICAgICB7dmFsdWUgPT09IGluZGV4ICYmIGNoaWxkcmVufVxuICAgIDwvZGl2PlxuICApO1xufTtcblxuY29uc3QgT3JkZXJzTGlzdERlc2t0b3BNb2JpbGUgPSAoe1xuICBpc01vYmlsZSxcbiAgc3VtbWl0LFxuICBvcmRlcixcbiAgZGV0YWlsc1JlcXVpcmVkLFxuICBvblBhZ2luYXRlQ2xpY2tcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBbdmFsdWUsIHNldFZhbHVlXSA9IHVzZVN0YXRlKDApO1xuICBjb25zdCBoYW5kbGVDaGFuZ2UgPSAoXywgbmV3VmFsdWUpID0+IHtcbiAgICBzZXRWYWx1ZShuZXdWYWx1ZSk7XG4gIH07XG4gIGNvbnN0IFt0aWNrZXRzVG9SZWZ1bmQsIHNldFRpY2tldHNUb1JlZnVuZF0gPSB1c2VTdGF0ZShbXSk7XG4gIGNvbnN0IFtzdWJtaXRSZXF1ZXN0LCBzZXRTdWJtaXRSZXF1ZXN0XSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW3JlZnVuZERldGFpbHNPcGVuLCBzZXRSZWZ1bmREZXRhaWxzT3Blbl0gPSB1c2VTdGF0ZShmYWxzZSk7XG5cbiAgY29uc3Qgb25SZWZ1bmRDbGljayA9ICgpID0+IHtcbiAgICBzZXRTdWJtaXRSZXF1ZXN0KHRydWUpO1xuICB9O1xuICBjb25zdCB1bnNlbGVjdFJlZnVuZFRpY2tldHMgPSAodGlja2V0KSA9PiB7XG4gICAgY29uc3QgZmlsdGVyU2VsZWN0ZWQgPSB0aWNrZXRzVG9SZWZ1bmQuZmlsdGVyKCh0KSA9PiB0LmlkICE9PSB0aWNrZXQuaWQpO1xuICAgIHNldFRpY2tldHNUb1JlZnVuZChmaWx0ZXJTZWxlY3RlZCk7XG4gIH07XG4gIGNvbnN0IHNlbGVjdFRvUmVmdW5kID0gKGUsIHRpY2tldCkgPT4ge1xuICAgIGNvbnN0IHsgY2hlY2tlZCB9ID0gZS50YXJnZXQ7XG4gICAgaWYgKGNoZWNrZWQpIHtcbiAgICAgIGNvbnN0IHNlbGVjdGVkVGlja2V0ID0gb3JkZXI/Lm1lbWJlclRpY2tldHM/LmZpbmQoXG4gICAgICAgICh0KSA9PiB0LmlkID09PSB0aWNrZXQuaWRcbiAgICAgICk7XG4gICAgICBzZXRUaWNrZXRzVG9SZWZ1bmQoWy4uLnRpY2tldHNUb1JlZnVuZCwgc2VsZWN0ZWRUaWNrZXRdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdW5zZWxlY3RSZWZ1bmRUaWNrZXRzKHRpY2tldCk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGNsb3NlU3VibWl0UmVxdWVzdCA9ICgpID0+IHtcbiAgICBzZXRTdWJtaXRSZXF1ZXN0KGZhbHNlKTtcbiAgICBzZXRUaWNrZXRzVG9SZWZ1bmQoW10pO1xuICB9O1xuXG4gIGNvbnN0IHJlc2V0QWxsUmVmdW5kU3RhdHVzZXMgPSAoKSA9PiB7XG4gICAgc2V0U3VibWl0UmVxdWVzdChmYWxzZSk7XG4gICAgc2V0VGlja2V0c1RvUmVmdW5kKFtdKTtcbiAgfTtcblxuICBjb25zdCBtb3JlRGV0YWlscyA9ICgpID0+XG4gICAgZGV0YWlsc1JlcXVpcmVkICYmIChcbiAgICAgIDxFcnJvckxhYmVsXG4gICAgICAgIG1lc3NhZ2U9e3QoXCJ0aWNrZXRfc3RhdHVzLnN0YXR1c19kZXRhaWxzX3JlcXVpcmVkXCIpfVxuICAgICAgICBjb2xvcj1cIiNmZjk4MDBcIlxuICAgICAgICBkYXRhVGVzdElkPVwibW9yZS1kZXRhaWxzLWxhYmVsXCJcbiAgICAgIC8+XG4gICAgKTtcblxuICByZXR1cm4gaXNNb2JpbGUgPyAoXG4gICAgPEJveFxuICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0TGlzdENvbnRhaW5lcn1cbiAgICAgIGRhdGEtdGVzdGlkPVwibW9iaWxlLW9yZGVycy1saXN0LWNvbnRhaW5lclwiXG4gICAgPlxuICAgICAgPEJveCBzeD17eyBib3JkZXJDb2xvcjogXCJkaXZpZGVyXCIsIHBiOiAyIH19PlxuICAgICAgICA8VGFic1xuICAgICAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlQ2hhbmdlfVxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJUaWNrZXRzICYgU3VtbWFyeVwiXG4gICAgICAgID5cbiAgICAgICAgICA8VGFiIGxhYmVsPXt0KFwibGFiZWxzLnRpY2tldHNcIil9IGNsYXNzTmFtZT17c3R5bGVzLnRhYkJ1dHRvbnN9IC8+XG4gICAgICAgICAgPFRhYiBsYWJlbD17dChcImxhYmVscy5zdW1tYXJ5XCIpfSBjbGFzc05hbWU9e3N0eWxlcy50YWJCdXR0b25zfSAvPlxuICAgICAgICA8L1RhYnM+XG4gICAgICA8L0JveD5cbiAgICAgIHttb3JlRGV0YWlscygpfVxuICAgICAgPFRhYlBhbmVsIHZhbHVlPXt2YWx1ZX0gaW5kZXg9ezB9PlxuICAgICAgICA8T3JkZXJMaXN0SXRlbVxuICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgIG9yZGVyPXtvcmRlcn1cbiAgICAgICAgICBvblBhZ2luYXRlQ2xpY2s9e29uUGFnaW5hdGVDbGlja31cbiAgICAgICAgICB0aWNrZXRzVG9SZWZ1bmQ9e3RpY2tldHNUb1JlZnVuZH1cbiAgICAgICAgICBzZWxlY3RUb1JlZnVuZD17c2VsZWN0VG9SZWZ1bmR9XG4gICAgICAgICAgc3VibWl0UmVxdWVzdD17c3VibWl0UmVxdWVzdH1cbiAgICAgICAgICB1bnNlbGVjdFJlZnVuZFRpY2tldHM9e3Vuc2VsZWN0UmVmdW5kVGlja2V0c31cbiAgICAgICAgLz5cbiAgICAgIDwvVGFiUGFuZWw+XG4gICAgICA8VGFiUGFuZWwgdmFsdWU9e3ZhbHVlfSBpbmRleD17MX0+XG4gICAgICAgIDxPcmRlclN1bW1hcnlcbiAgICAgICAgICBvcmRlcj17b3JkZXJ9XG4gICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgb25SZWZ1bmRDbGljaz17b25SZWZ1bmRDbGlja31cbiAgICAgICAgICBzdWJtaXRSZXF1ZXN0PXtzdWJtaXRSZXF1ZXN0fVxuICAgICAgICAgIG9uUmVmdW5kRGV0YWlsQ2xpY2s9eygpID0+IHNldFJlZnVuZERldGFpbHNPcGVuKHRydWUpfVxuICAgICAgICAvPlxuICAgICAgICA8UmVmdW5kUmVxdWVzdHNNb2RhbFxuICAgICAgICAgIHRpY2tldHM9e29yZGVyPy5tZW1iZXJUaWNrZXRzIHx8IFtdfVxuICAgICAgICAgIG9wZW49e3N1Ym1pdFJlcXVlc3R9XG4gICAgICAgICAgb25SZWZ1bmRTdWNjZXNzQ2xvc2U9eygpID0+IHJlc2V0QWxsUmVmdW5kU3RhdHVzZXMoKX1cbiAgICAgICAgICBvbkNsb3NlU2xpZGVyPXsoKSA9PiBjbG9zZVN1Ym1pdFJlcXVlc3QoKX1cbiAgICAgICAgICB0aWNrZXRzVG9SZWZ1bmQ9e3RpY2tldHNUb1JlZnVuZH1cbiAgICAgICAgICBzZWxlY3RUb1JlZnVuZD17c2VsZWN0VG9SZWZ1bmR9XG4gICAgICAgICAgdW5zZWxlY3RSZWZ1bmRUaWNrZXRzPXt1bnNlbGVjdFJlZnVuZFRpY2tldHN9XG4gICAgICAgIC8+XG4gICAgICAgIDxSZWZ1bmREZXRhaWxzXG4gICAgICAgICAgdGlja2V0cz17b3JkZXI/Lm1lbWJlclRpY2tldHN9XG4gICAgICAgICAgY3VycmVuY3k9e29yZGVyLmN1cnJlbmN5fVxuICAgICAgICAgIG9wZW49e3JlZnVuZERldGFpbHNPcGVufVxuICAgICAgICAgIG9uQ2xvc2VTbGlkZXI9eygpID0+IHNldFJlZnVuZERldGFpbHNPcGVuKGZhbHNlKX1cbiAgICAgICAgLz5cbiAgICAgIDwvVGFiUGFuZWw+XG4gICAgPC9Cb3g+XG4gICkgOiAoXG4gICAgPD5cbiAgICAgIDxHcmlkIGl0ZW0gbWQ9ezEyfT5cbiAgICAgICAge21vcmVEZXRhaWxzKCl9XG4gICAgICA8L0dyaWQ+XG4gICAgICA8R3JpZFxuICAgICAgICBwYWRkaW5nPXsxfVxuICAgICAgICBpdGVtXG4gICAgICAgIG1kPXs3fVxuICAgICAgICBvcmRlcj17eyBtZDogMSB9fVxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRMaXN0Q29udGFpbmVyfVxuICAgICAgICBkYXRhLXRlc3RpZD1cImRlc2t0b3Atb3JkZXJzLWxpc3QtY29udGFpbmVyXCJcbiAgICAgID5cbiAgICAgICAgPE9yZGVyTGlzdEl0ZW1cbiAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICBvcmRlcj17b3JkZXJ9XG4gICAgICAgICAgb25QYWdpbmF0ZUNsaWNrPXtvblBhZ2luYXRlQ2xpY2t9XG4gICAgICAgICAgdGlja2V0c1RvUmVmdW5kPXt0aWNrZXRzVG9SZWZ1bmR9XG4gICAgICAgICAgc2VsZWN0VG9SZWZ1bmQ9e3NlbGVjdFRvUmVmdW5kfVxuICAgICAgICAgIHN1Ym1pdFJlcXVlc3Q9e3N1Ym1pdFJlcXVlc3R9XG4gICAgICAgICAgdW5zZWxlY3RSZWZ1bmRUaWNrZXRzPXt1bnNlbGVjdFJlZnVuZFRpY2tldHN9XG4gICAgICAgIC8+XG4gICAgICA8L0dyaWQ+XG4gICAgICA8R3JpZCBwYWRkaW5nPXsxfSBpdGVtIG1kPXs1fSBvcmRlcj17eyBtZDogMSB9fT5cbiAgICAgICAgPE9yZGVyU3VtbWFyeVxuICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgIG9yZGVyPXtvcmRlcn1cbiAgICAgICAgICBvblJlZnVuZENsaWNrPXtvblJlZnVuZENsaWNrfVxuICAgICAgICAgIHN1Ym1pdFJlcXVlc3Q9e3N1Ym1pdFJlcXVlc3R9XG4gICAgICAgICAgb25SZWZ1bmREZXRhaWxDbGljaz17KCkgPT4gc2V0UmVmdW5kRGV0YWlsc09wZW4odHJ1ZSl9XG4gICAgICAgIC8+XG4gICAgICA8L0dyaWQ+XG4gICAgICA8UmVmdW5kUmVxdWVzdHNNb2RhbFxuICAgICAgICB0aWNrZXRzPXtvcmRlcj8ubWVtYmVyVGlja2V0cyB8fCBbXX1cbiAgICAgICAgb3Blbj17c3VibWl0UmVxdWVzdH1cbiAgICAgICAgb25SZWZ1bmRTdWNjZXNzQ2xvc2U9eygpID0+IHJlc2V0QWxsUmVmdW5kU3RhdHVzZXMoKX1cbiAgICAgICAgb25DbG9zZVNsaWRlcj17KCkgPT4gY2xvc2VTdWJtaXRSZXF1ZXN0KCl9XG4gICAgICAgIHRpY2tldHNUb1JlZnVuZD17dGlja2V0c1RvUmVmdW5kfVxuICAgICAgICBzZWxlY3RUb1JlZnVuZD17c2VsZWN0VG9SZWZ1bmR9XG4gICAgICAgIHVuc2VsZWN0UmVmdW5kVGlja2V0cz17dW5zZWxlY3RSZWZ1bmRUaWNrZXRzfVxuICAgICAgLz5cbiAgICAgIDxSZWZ1bmREZXRhaWxzXG4gICAgICAgIHRpY2tldHM9e29yZGVyPy5tZW1iZXJUaWNrZXRzfVxuICAgICAgICBjdXJyZW5jeT17b3JkZXIuY3VycmVuY3l9XG4gICAgICAgIG9wZW49e3JlZnVuZERldGFpbHNPcGVufVxuICAgICAgICBvbkNsb3NlU2xpZGVyPXsoKSA9PiBzZXRSZWZ1bmREZXRhaWxzT3BlbihmYWxzZSl9XG4gICAgICAvPlxuICAgIDwvPlxuICApO1xufTtcblxuT3JkZXJzTGlzdERlc2t0b3BNb2JpbGUucHJvcFR5cGVzID0ge1xuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIG9yZGVyOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIG1lbWJlclRpY2tldHM6IFByb3BUeXBlcy5hcnJheU9mKE9iamVjdClcbiAgfSksXG4gIGlzTW9iaWxlOiBQcm9wVHlwZXMuYm9vbCxcbiAgZGV0YWlsc1JlcXVpcmVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgb25QYWdpbmF0ZUNsaWNrOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgT3JkZXJzTGlzdERlc2t0b3BNb2JpbGU7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoLCB1c2VTZWxlY3Rvciwgc2hhbGxvd0VxdWFsIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBHcmlkLCBCb3gsIEJ1dHRvbiB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VUaGVtZSB9IGZyb20gXCJAbXVpL21hdGVyaWFsL3N0eWxlc1wiO1xuaW1wb3J0IHVzZU1lZGlhUXVlcnkgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvdXNlTWVkaWFRdWVyeVwiO1xuaW1wb3J0IHsgZ2V0VGlja2V0c0J5T3JkZXIgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuaW1wb3J0IHsgZ2V0Rm9ybWF0dGVkRGF0ZSB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xuaW1wb3J0IHsgT05FX1BBR0VfTkVYVCB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCBPcmRlcnNMaXN0RGVza3RvcE1vYmlsZSBmcm9tIFwiLi9PcmRlcnNMaXN0RGVza3RvcE1vYmlsZVwiO1xuaW1wb3J0IENvcHlUZXh0IGZyb20gXCIuLi9Db3B5VGV4dFwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBPcmRlcnNMaXN0ID0gKHsgc3VtbWl0LCBvcmRlciB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuICBjb25zdCB7IHRpY2tldF9wZXJfcGFnZSwgZmlsdGVyLCBzb3J0IH0gPSB1c2VTZWxlY3RvcihcbiAgICAoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlIHx8IHt9LFxuICAgIHNoYWxsb3dFcXVhbFxuICApO1xuICBjb25zdCB0aGVtZSA9IHVzZVRoZW1lKCk7XG4gIGNvbnN0IGlzTW9iaWxlID0gdXNlTWVkaWFRdWVyeSh0aGVtZS5icmVha3BvaW50cy5kb3duKFwibGdcIikpO1xuICBjb25zdCBbaXNNb2JpbGVWaWV3YWJsZSwgc2V0TW9iaWxlVmlld2FibGVdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBkZXRhaWxzUmVxdWlyZWQgPSBvcmRlci5tZW1iZXJUaWNrZXRzPy5maW5kKFxuICAgICh0aWNrZXQpID0+IHRpY2tldC5vd25lcj8uc3RhdHVzID09PSBcIkluY29tcGxldGVcIlxuICApO1xuXG4gIGNvbnN0IG9uUGFnaW5hdGVDbGljayA9ICgpID0+XG4gICAgZGlzcGF0Y2goXG4gICAgICBnZXRUaWNrZXRzQnlPcmRlcih7XG4gICAgICAgIG9yZGVySWQ6IG9yZGVyLmlkLFxuICAgICAgICBwYWdlOiBvcmRlci50aWNrZXRzX3BhZ2VfY3VycmVudCArIE9ORV9QQUdFX05FWFQsXG4gICAgICAgIHBlclBhZ2U6IHRpY2tldF9wZXJfcGFnZSxcbiAgICAgICAgZmlsdGVyLFxuICAgICAgICBzb3J0XG4gICAgICB9KVxuICAgICk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPEJveFxuICAgICAgICBzeD17eyBwYWRkaW5nOiB7IHhzOiAyLCBtZDogMSwgbGc6IDAgfSB9fVxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5vcmRlclRpY2tldEluZm9Db250YWluZXJ9XG4gICAgICA+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJUaWNrZXRJbmZvfVxuICAgICAgICAgIGRhdGEtdGVzdGlkPVwib3JkZXItdGlja2V0LWluZm8tY29udGFpbmVyXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt0KFwib3JkZXJzLnB1cmNoYXNlZFwiKX06IHtnZXRGb3JtYXR0ZWREYXRlKG9yZGVyLmNyZWF0ZWQpfSB8e1wiIFwifVxuICAgICAgICAgIHt0KFwib3JkZXJfc3VtbWFyeS5vcmRlcl9ub1wiKX06e1wiIFwifVxuICAgICAgICAgIDxDb3B5VGV4dFxuICAgICAgICAgICAgdGV4dD17b3JkZXIubnVtYmVyfVxuICAgICAgICAgICAgdG9vbHRpcFRleHQ9e3QoXCJvcmRlcl9zdW1tYXJ5LmNvcHlfb3JkZXJfbnVtYmVyXCIpfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAge2lzTW9iaWxlICYmIChcbiAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICBzeD17eyBwYWRkaW5nOiBcIjVweCAxMHB4XCIgfX1cbiAgICAgICAgICAgIHZhcmlhbnQ9XCJjb250YWluZWRcIlxuICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldE1vYmlsZVZpZXdhYmxlKCFpc01vYmlsZVZpZXdhYmxlKX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7aXNNb2JpbGVWaWV3YWJsZVxuICAgICAgICAgICAgICA/IHQoXCJ0aWNrZXRfc3RhdHVzLmhpZGVfdGlja2V0c1wiKVxuICAgICAgICAgICAgICA6IHQoXCJ0aWNrZXRfc3RhdHVzLnZpZXdfdGlja2V0c1wiKX1cbiAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgKX1cbiAgICAgIDwvQm94PlxuICAgICAgPEdyaWRcbiAgICAgICAga2V5PXtvcmRlci5pZH1cbiAgICAgICAgY29udGFpbmVyXG4gICAgICAgIHJvd1NwYWNpbmc9ezF9XG4gICAgICAgIGNvbHVtblNwYWNpbmc9e3sgeHM6IDEsIHNtOiAyLCBtZDogMyB9fVxuICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5vcmRlclRpY2tldENvbnRhaW5lcn0gJHtcbiAgICAgICAgICBpc01vYmlsZSAmJiAhaXNNb2JpbGVWaWV3YWJsZSA/IHN0eWxlcy5kaXNwbGF5X25vbmUgOiBcIlwiXG4gICAgICAgIH1gfVxuICAgICAgICBzeD17e1xuICAgICAgICAgIGZsZXhEaXJlY3Rpb246IHtcbiAgICAgICAgICAgIG1kOiBcInJvd1wiLFxuICAgICAgICAgICAgbGc6IFwicm93XCJcbiAgICAgICAgICB9LFxuICAgICAgICAgIHBhZGRpbmc6IHtcbiAgICAgICAgICAgIHhzOiAyLFxuICAgICAgICAgICAgbWQ6IDQsXG4gICAgICAgICAgICBsZzogMFxuICAgICAgICAgIH1cbiAgICAgICAgfX1cbiAgICAgID5cbiAgICAgICAgPE9yZGVyc0xpc3REZXNrdG9wTW9iaWxlXG4gICAgICAgICAgaXNNb2JpbGU9e2lzTW9iaWxlfVxuICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgIG9yZGVyPXtvcmRlcn1cbiAgICAgICAgICBkZXRhaWxzUmVxdWlyZWQ9eyEhZGV0YWlsc1JlcXVpcmVkfVxuICAgICAgICAgIG9uUGFnaW5hdGVDbGljaz17b25QYWdpbmF0ZUNsaWNrfVxuICAgICAgICAvPlxuICAgICAgPC9HcmlkPlxuICAgIDwvPlxuICApO1xufTtcblxuT3JkZXJzTGlzdC5wcm9wVHlwZXMgPSB7XG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdCxcbiAgb3JkZXI6IFByb3BUeXBlcy5vYmplY3Rcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE9yZGVyc0xpc3Q7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlTWVtbyB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQm94IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBSaWdodERyYXdlciBmcm9tIFwiLi4vUmlnaHREcmF3ZXJcIjtcbmltcG9ydCBSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXQgZnJvbSBcIi4vUmVmdW5kUmVxdWVzdGVkVGlja2V0XCI7XG5pbXBvcnQgeyBnZXRBbGxSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXRzIH0gZnJvbSBcIi4uLy4uL3V0aWxzL3RpY2tldFV0aWxzXCI7XG5cbmNvbnN0IFJlZnVuZERldGFpbHMgPSAoeyB0aWNrZXRzLCBjdXJyZW5jeSwgb3Blbiwgb25DbG9zZVNsaWRlciB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgcmVxdWVzdGVkVGlja2V0cyA9IHVzZU1lbW8oXG4gICAgKCkgPT4gZ2V0QWxsUmVmdW5kUmVxdWVzdGVkVGlja2V0cyh0aWNrZXRzKSxcbiAgICBbdGlja2V0c11cbiAgKTtcbiAgY29uc3QgY2xvc2VTbGlkZXIgPSAoKSA9PiB7XG4gICAgb25DbG9zZVNsaWRlcigpO1xuICB9O1xuICByZXR1cm4gKFxuICAgIDxSaWdodERyYXdlclxuICAgICAgaWQ9XCJyZWZ1bmQtZGV0YWlsc1wiXG4gICAgICBvcGVuPXtvcGVufVxuICAgICAgb25DbG9zZT17Y2xvc2VTbGlkZXJ9XG4gICAgICB0aXRsZT17dChcIm9yZGVyX3N1bW1hcnkucmVmdW5kX2RldGFpbHNcIil9XG4gICAgPlxuICAgICAgPEJveFxuICAgICAgICBzeD17e1xuICAgICAgICAgIGRpc3BsYXk6IFwiZmxleFwiLFxuICAgICAgICAgIGZsZXhEaXJlY3Rpb246IFwiY29sdW1uXCIsXG4gICAgICAgICAgYWxpZ25JdGVtczogXCJjZW50ZXJcIixcbiAgICAgICAgICBwYWRkaW5nOiBcIjAgNXJlbVwiXG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIHtyZXF1ZXN0ZWRUaWNrZXRzPy5tYXAoKHRpY2tldCkgPT4gKFxuICAgICAgICAgIDxSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXRcbiAgICAgICAgICAgIGtleT17YHJlZnVuZF9yZXFfJHt0aWNrZXQ/LmlkfWB9XG4gICAgICAgICAgICB0aWNrZXQ9e3RpY2tldH1cbiAgICAgICAgICAgIGN1cnJlbmN5PXtjdXJyZW5jeX1cbiAgICAgICAgICAgIHJlZnVuZERldGFpbHNcbiAgICAgICAgICAvPlxuICAgICAgICApKX1cbiAgICAgIDwvQm94PlxuICAgIDwvUmlnaHREcmF3ZXI+XG4gICk7XG59O1xuXG5SZWZ1bmREZXRhaWxzLnByb3BUeXBlcyA9IHtcbiAgdGlja2V0czogUHJvcFR5cGVzLmFycmF5T2YoT2JqZWN0KSxcbiAgb3BlbjogUHJvcFR5cGVzLmJvb2wsXG4gIG9uQ2xvc2VTbGlkZXI6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBSZWZ1bmREZXRhaWxzO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgR3JpZCwgSWNvbkJ1dHRvbiwgVG9vbHRpcCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB0b29sdGlwQ2xhc3NlcyB9IGZyb20gXCJAbXVpL21hdGVyaWFsL1Rvb2x0aXBcIjtcbmltcG9ydCB7IHN0eWxlZCB9IGZyb20gXCJAbXVpL21hdGVyaWFsL3N0eWxlc1wiO1xuaW1wb3J0IEluZm9JY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0luZm9cIjtcbmltcG9ydCBTdGFjayBmcm9tIFwiQG11aS9tYXRlcmlhbC9TdGFja1wiO1xuaW1wb3J0IG1vbWVudCBmcm9tIFwibW9tZW50LXRpbWV6b25lXCI7XG5pbXBvcnQgQXR0ZW5kZWVTdGF0dXMgZnJvbSBcIi4uL09yZGVyc0xpc3QvQXR0ZW5kZWVTdGF0dXNcIjtcbmltcG9ydCBSZWZ1bmRTdGF0dXMgZnJvbSBcIi4vUmVmdW5kU3RhdHVzXCI7XG5pbXBvcnQgQ29weVRleHQgZnJvbSBcIi4uL0NvcHlUZXh0XCI7XG5pbXBvcnQgVGlja2V0U3RhdHVzIGZyb20gXCIuLi9UaWNrZXRTdGF0dXNcIjtcbmltcG9ydCBCYWRnZUZlYXR1cmVJY29uIGZyb20gXCIuLi9CYWRnZUZlYXR1cmVJY29uXCI7XG5pbXBvcnQgeyBNSUxMSVNFQ19UT19TRUMgfSBmcm9tIFwiLi4vLi4vdXRpbHMvY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBmb3JtYXRDdXJyZW5jeSB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXQgPSAoeyB0aWNrZXQsIGN1cnJlbmN5LCByZWZ1bmREZXRhaWxzIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuXG4gIGNvbnN0IEdSSURfOCA9IDg7XG4gIGNvbnN0IEdSSURfMTIgPSAxMjtcblxuICBjb25zdCBQQURESU5HXzIgPSAyO1xuXG4gIGNvbnN0IGFwcHJvdmVkUmVmdW5kcyA9IHRpY2tldC5yZWZ1bmRfcmVxdWVzdHMuZmlsdGVyKFxuICAgIChyZWZ1bmQpID0+IHJlZnVuZC5zdGF0dXMgPT09IFwiQXBwcm92ZWRcIlxuICApO1xuXG4gIGNvbnN0IHJlZnVuZGVkVGF4ZXNTdW1tYXRvcnkgPSB7fTtcblxuICBhcHByb3ZlZFJlZnVuZHMuZm9yRWFjaCgocmVmdW5kKSA9PiB7XG4gICAgcmVmdW5kLnJlZnVuZGVkX3RheGVzLmZvckVhY2goKHJ0KSA9PiB7XG4gICAgICBjb25zdCB0YXhJZCA9IHJ0LnRheC5pZDtcbiAgICAgIGlmICghcmVmdW5kZWRUYXhlc1N1bW1hdG9yeVt0YXhJZF0pIHtcbiAgICAgICAgcmVmdW5kZWRUYXhlc1N1bW1hdG9yeVt0YXhJZF0gPSB7XG4gICAgICAgICAgbmFtZTogcnQudGF4Lm5hbWUsXG4gICAgICAgICAgdG90YWxSZWZ1bmRlZFRheEFtb3VudDogMFxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgcmVmdW5kZWRUYXhlc1N1bW1hdG9yeVt0YXhJZF0udG90YWxSZWZ1bmRlZFRheEFtb3VudCArPVxuICAgICAgICBydC5yZWZ1bmRlZF9hbW91bnQ7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGNvbnN0IEh0bWxUb29sdGlwID0gc3R5bGVkKCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSkgPT4gKFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAgIDxUb29sdGlwIHsuLi5wcm9wc30gY2xhc3Nlcz17eyBwb3BwZXI6IGNsYXNzTmFtZSB9fSAvPlxuICApKSgoKSA9PiAoe1xuICAgIFtgJiAuJHt0b29sdGlwQ2xhc3Nlcy50b29sdGlwfWBdOiB7XG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6IFwiI2Y1ZjVmOVwiLFxuICAgICAgY29sb3I6IFwicmdiYSgwLCAwLCAwLCAwLjg3KVwiLFxuICAgICAgbWF4V2lkdGg6IDIyMCxcbiAgICAgIGZvbnRTaXplOiBcIjFlbVwiLFxuICAgICAgYm9yZGVyOiBcIjFweCBzb2xpZCAjZGFkZGU5XCJcbiAgICB9XG4gIH0pKTtcblxuICByZXR1cm4gKFxuICAgIDxHcmlkXG4gICAgICBjb250YWluZXJcbiAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLnJlZnVuZFRpY2tldEJveENvbnRhaW5lcn0gJHtcbiAgICAgICAgcmVmdW5kRGV0YWlscyA/IHN0eWxlcy5yZWZ1bmREZXRhaWwgOiBcIlwiXG4gICAgICB9IGB9XG4gICAgICBkYXRhLXRlc3RpZD1cInJlZnVuZC1yZXF1ZXN0ZWQtdGlja2V0LWNvbnRhaW5lclwiXG4gICAgPlxuICAgICAgPEdyaWRcbiAgICAgICAgeHM9e0dSSURfMTJ9XG4gICAgICAgIHNtPXtyZWZ1bmREZXRhaWxzID8gR1JJRF84IDogR1JJRF8xMn1cbiAgICAgICAgaXRlbVxuICAgICAgICBqdXN0aWZ5PVwic3BhY2UtYmV0d2VlblwiXG4gICAgICAgIHB0PXsyfVxuICAgICAgICBweD17NH1cbiAgICAgID5cbiAgICAgICAgPFN0YWNrXG4gICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgIGp1c3RpZnlDb250ZW50OiBcInNwYWNlLWJldHdlZW5cIixcbiAgICAgICAgICAgIGFsaWduSXRlbXM6IFwiY2VudGVyXCJcbiAgICAgICAgICB9fVxuICAgICAgICAgIGRpcmVjdGlvbj1cInJvd1wiXG4gICAgICAgID5cbiAgICAgICAgICA8aDQ+e3RpY2tldC50aWNrZXRfdHlwZT8ubmFtZX08L2g0PlxuICAgICAgICAgIDxHcmlkIGNsYXNzTmFtZT17c3R5bGVzLmJhZGdlRmVhdHVyZVdyYXBwZXJ9IHhzPXs0fSBpdGVtPlxuICAgICAgICAgICAge3RpY2tldC5iYWRnZT8uZmVhdHVyZXM/Lm1hcCgoYmYpID0+IChcbiAgICAgICAgICAgICAgPEJhZGdlRmVhdHVyZUljb24ga2V5PXtiZi5uYW1lfSBuYW1lPXtiZi5uYW1lfSBpbWFnZT17YmYuaW1hZ2V9IC8+XG4gICAgICAgICAgICApKX1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDwvU3RhY2s+XG4gICAgICA8L0dyaWQ+XG4gICAgICB7cmVmdW5kRGV0YWlscyAmJiAoXG4gICAgICAgIDxHcmlkIHNtPXs0fSB4cz17MTJ9IHB4PXt7IHNtOiAyLCB4czogNCB9fSBweT17eyB4czogMSwgc206IDIgfX0gaXRlbT5cbiAgICAgICAgICA8UmVmdW5kU3RhdHVzIHRpY2tldD17dGlja2V0fSAvPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICApfVxuICAgICAgPEdyaWQgeHM9ezEyfSBpdGVtIHB4PXs0fSBwYj17cmVmdW5kRGV0YWlscyA/IFBBRERJTkdfMiA6IDB9IGNvbnRhaW5lcj5cbiAgICAgICAgPEdyaWQgeHM9ezEyfSBzbT17OH0gY2xhc3NOYW1lPXtzdHlsZXMucmVmdW5kVGlja2V0QXR0ZW5kZWV9PlxuICAgICAgICAgIDxBdHRlbmRlZVN0YXR1cyB0aWNrZXQ9e3RpY2tldH0gLz5cbiAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXROb30+XG4gICAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMudGlja2V0X25vXCIpfTogPENvcHlUZXh0IHRleHQ9e3RpY2tldC5udW1iZXJ9IC8+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICAgIHtyZWZ1bmREZXRhaWxzICYmIHRpY2tldC50b3RhbF9yZWZ1bmRlZF9hbW91bnQgPiAwICYmIChcbiAgICAgICAgICA8R3JpZCB4cz17MTJ9IG1kPXs0fSBwbD17eyB4czogMCwgc206IDQgfX0+XG4gICAgICAgICAgICB7Zm9ybWF0Q3VycmVuY3kodGlja2V0LnRvdGFsX3JlZnVuZGVkX2Ftb3VudCwgeyBjdXJyZW5jeSB9KX17XCIgXCJ9XG4gICAgICAgICAgICBSZWZ1bmRlZFxuICAgICAgICAgICAge2FwcHJvdmVkUmVmdW5kcy5zb21lKChyKSA9PiByLnJlZnVuZGVkX3RheGVzLmxlbmd0aCA+IDApICYmIChcbiAgICAgICAgICAgICAgPEh0bWxUb29sdGlwXG4gICAgICAgICAgICAgICAgdGl0bGU9e1xuICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgICAgICAgICAge2Zvcm1hdEN1cnJlbmN5KHRpY2tldC5yZWZ1bmRlZF9hbW91bnQsIHsgY3VycmVuY3kgfSl9e1wiIFwifVxuICAgICAgICAgICAgICAgICAgICAgIFRpY2tldCBBbW91bnRcbiAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICA8Yj5UYXhlczwvYj5cbiAgICAgICAgICAgICAgICAgICAge09iamVjdC5rZXlzKHJlZnVuZGVkVGF4ZXNTdW1tYXRvcnkpLm1hcCgodGF4SWQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCB7IHRvdGFsUmVmdW5kZWRUYXhBbW91bnQsIG5hbWUgfSA9XG4gICAgICAgICAgICAgICAgICAgICAgICByZWZ1bmRlZFRheGVzU3VtbWF0b3J5W3RheElkXTtcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPHAga2V5PXt0YXhJZH0+e2Ake25hbWV9IC0gJHtmb3JtYXRDdXJyZW5jeShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdG90YWxSZWZ1bmRlZFRheEFtb3VudCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjdXJyZW5jeSB9XG4gICAgICAgICAgICAgICAgICAgICAgICApfWB9PC9wPlxuICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPEljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICA8SW5mb0ljb24gLz5cbiAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgIDwvSHRtbFRvb2x0aXA+XG4gICAgICAgICAgICApfVxuICAgICAgICAgICAgPGJyIC8+XG4gICAgICAgICAgICB7bW9tZW50KFxuICAgICAgICAgICAgICB0aWNrZXQucmVmdW5kX3JlcXVlc3RzWzBdLmFjdGlvbl9kYXRlICogTUlMTElTRUNfVE9fU0VDXG4gICAgICAgICAgICApLmZvcm1hdChcIk1NTSBERCwgWVlZWVwiKX1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICl9XG4gICAgICA8L0dyaWQ+XG4gICAgICB7IXJlZnVuZERldGFpbHMgJiYgKFxuICAgICAgICA8R3JpZCB4cz17MTJ9IHByPXs0fSBwYj17Mn0+XG4gICAgICAgICAgPEdyaWQgeHM9ezEyfSBpdGVtPlxuICAgICAgICAgICAgPFRpY2tldFN0YXR1cyB0aWNrZXQ9e3RpY2tldH0gLz5cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICl9XG4gICAgPC9HcmlkPlxuICApO1xufTtcblxuUmVmdW5kUmVxdWVzdGVkVGlja2V0LnByb3BUeXBlcyA9IHtcbiAgdGlja2V0OiBQcm9wVHlwZXMub2JqZWN0LFxuICByZWZ1bmREZXRhaWxzOiBQcm9wVHlwZXMuYm9vbFxufTtcblxuZXhwb3J0IGRlZmF1bHQgUmVmdW5kUmVxdWVzdGVkVGlja2V0O1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZU1lbW8gfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IENoaXAgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgZ2V0UmVmdW5kUmVxdWVzdGVkU3RhdHVzQ29sb3IgfSBmcm9tIFwiLi4vLi4vdXRpbHMvdGlja2V0VXRpbHNcIjtcblxuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBSZWZ1bmRTdGF0dXMgPSAoeyB0aWNrZXQgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IHN0YXR1c0NvbG9yID0gdXNlTWVtbyhcbiAgICAoKSA9PiBnZXRSZWZ1bmRSZXF1ZXN0ZWRTdGF0dXNDb2xvcih0aWNrZXQpLFxuICAgIFt0aWNrZXRdXG4gICk7XG4gIHJldHVybiAoXG4gICAgPENoaXBcbiAgICAgIGFyaWEtbGFiZWw9XCJ0aWNrZXQgcmVmdW5kIHN0YXR1cyBsYWJlbFwiXG4gICAgICBsYWJlbD17dChgdGlja2V0X3N0YXR1cy5yZWZ1bmRfcmVxdWVzdF8ke3N0YXR1c0NvbG9yfWApfVxuICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuYnV0dG9uUGlsbH0gJHtzdHlsZXNbc3RhdHVzQ29sb3JdfWB9XG4gICAgLz5cbiAgKTtcbn07XG5cblJlZnVuZFN0YXR1cy5wcm9wVHlwZXMgPSB7XG4gIHRpY2tldDogUHJvcFR5cGVzLm9iamVjdFxufTtcblxuZXhwb3J0IGRlZmF1bHQgUmVmdW5kU3RhdHVzO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgQm94LCBCdXR0b24sIFN0eWxlZEVuZ2luZVByb3ZpZGVyIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBDaGVja0NpcmNsZUljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ2hlY2tDaXJjbGVcIjtcbmltcG9ydCBSaWdodERyYXdlciBmcm9tIFwiLi4vUmlnaHREcmF3ZXJcIjtcbmltcG9ydCBFcnJvckxhYmVsIGZyb20gXCIuLi9MYWJlbHMvRXJyb3JMYWJlbFwiO1xuaW1wb3J0IHsgcmVmdW5kQnVsa1RpY2tldHMsIHVwZGF0ZVRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWQgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuaW1wb3J0IHsgU1RFUF9PTkUsIFNURVBfVEhSRUUsIFNURVBfVFdPIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2NvbnN0YW50c1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IE9yZGVyTGlzdFRpY2tldHMgZnJvbSBcIi4uL09yZGVyc0xpc3QvT3JkZXJMaXN0VGlja2V0c1wiO1xuaW1wb3J0IFJlZnVuZFJlcXVlc3RlZFRpY2tldCBmcm9tIFwiLi9SZWZ1bmRSZXF1ZXN0ZWRUaWNrZXRcIjtcblxuY29uc3QgUmVmdW5kUmVxdWVzdHNNb2RhbCA9ICh7XG4gIHRpY2tldHMsXG4gIHN1bW1pdCxcbiAgb3BlbixcbiAgb25SZWZ1bmRTdWNjZXNzQ2xvc2UsXG4gIG9uQ2xvc2VTbGlkZXIsXG4gIHRpY2tldHNUb1JlZnVuZCxcbiAgc2VsZWN0VG9SZWZ1bmQsXG4gIHVuc2VsZWN0UmVmdW5kVGlja2V0c1xufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcbiAgY29uc3QgW3N0ZXAsIHNldFN0ZXBdID0gdXNlU3RhdGUoU1RFUF9PTkUpO1xuICBjb25zdCBbZXJyb3JNc2csIHNldEVycm9yTXNnXSA9IHVzZVN0YXRlKFwiXCIpO1xuICBjb25zdCBbcmVmdW5kU3VjY2Vzcywgc2V0UmVmdW5kU3VjY2Vzc10gPSB1c2VTdGF0ZShmYWxzZSk7XG5cbiAgY29uc3QgY2xvc2VTbGlkZXIgPSAoKSA9PiB7XG4gICAgc2V0RXJyb3JNc2coXCJcIik7XG4gICAgb25DbG9zZVNsaWRlcigpO1xuICAgIHNldFN0ZXAoU1RFUF9PTkUpO1xuICAgIGlmIChyZWZ1bmRTdWNjZXNzKSB7XG4gICAgICBvblJlZnVuZFN1Y2Nlc3NDbG9zZSgpOyAvLyBpZiB0aGUgcmVmdW5kIGlzIGEgc3VjY2VzcywgdHJpZ2dlciBhbmQgcmUtcmV0cmlldmUgdGlja2V0cyBieSBvcmRlclxuICAgICAgc2V0UmVmdW5kU3VjY2VzcyhmYWxzZSk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGNvbmZpcm1SZWZ1bmQgPSAoKSA9PiB7XG4gICAgc2V0U3RlcChTVEVQX1RXTyk7XG4gIH07XG5cbiAgY29uc3QgZ29CYWNrVG9SZWZ1bmQgPSAoKSA9PiB7XG4gICAgc2V0U3RlcChTVEVQX09ORSk7XG4gIH07XG5cbiAgY29uc3QgcmVmdW5kVGlja2V0cyA9IGFzeW5jICgpID0+IHtcbiAgICBkaXNwYXRjaChyZWZ1bmRCdWxrVGlja2V0cyh7IHRpY2tldHM6IHRpY2tldHNUb1JlZnVuZCB9KSkudGhlbigocmVzKSA9PiB7XG4gICAgICBkaXNwYXRjaCh1cGRhdGVUaWNrZXRzUmVmdW5kUmVxdWVzdGVkKHJlcykpOyAvLyByZXR1cm5pbmcgd2hpY2ggdGlja2V0cyB3ZXJlIHN1Y2Nlc3NmdWxcbiAgICAgIGlmIChyZXM/Lmxlbmd0aCA9PT0gdGlja2V0c1RvUmVmdW5kLmxlbmd0aCkge1xuICAgICAgICBzZXRTdGVwKFNURVBfVEhSRUUpOyAvLyBzdWNjZXNzLCBhbGwgcmVmdW5kcyB3ZXJlIHJlcXVlc3RlZFxuICAgICAgICBzZXRSZWZ1bmRTdWNjZXNzKHRydWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2V0RXJyb3JNc2codChcImVycm9ycy5yZWZ1bmRfdW5zdWNjZXNzZnVsXCIpKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBzZXRFcnJvck1zZyhcIlwiKTtcbiAgfTtcblxuICBjb25zdCByZWZ1bmRTdGVwT25lID0gKCkgPT4gKFxuICAgIDw+XG4gICAgICA8aDIgY2xhc3NOYW1lPXtzdHlsZXMuc3VidGl0bGV9PlxuICAgICAgICB7dChcImNvbmZpcm1fcG9wdXAucXVlc3Rpb25fdGV4dF9zZWxlY3RfcmVmdW5kXCIpfVxuICAgICAgPC9oMj5cbiAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0TGlzdH0+XG4gICAgICAgIHt0aWNrZXRzLm1hcCgodGlja2V0KSA9PiAoXG4gICAgICAgICAgPE9yZGVyTGlzdFRpY2tldHNcbiAgICAgICAgICAgIGtleT17YHRpY2tldC0ke3RpY2tldC5pZH1gfVxuICAgICAgICAgICAgdGlja2V0PXt0aWNrZXR9XG4gICAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICAgIGlzU2VsZWN0ZWRUb1JlZnVuZD17XG4gICAgICAgICAgICAgICEhdGlja2V0c1RvUmVmdW5kLmZpbmQoKHQpID0+IHQuaWQgPT09IHRpY2tldC5pZClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNlbGVjdFRvUmVmdW5kPXtzZWxlY3RUb1JlZnVuZH1cbiAgICAgICAgICAgIHVuc2VsZWN0UmVmdW5kVGlja2V0cz17dW5zZWxlY3RSZWZ1bmRUaWNrZXRzfVxuICAgICAgICAgICAgaXNSZWZ1bmRNb2RhbFxuICAgICAgICAgIC8+XG4gICAgICAgICkpfVxuICAgICAgPC9Cb3g+XG4gICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmFjdGlvbkJ1dHRvbnN9PlxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgYXJpYS1sYWJlbD1cInJlZnVuZC1jYW5jZWwtYnV0dG9uXCJcbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5jYW5jZWxCdXR0b259XG4gICAgICAgICAgb25DbGljaz17Y2xvc2VTbGlkZXJ9XG4gICAgICAgID5cbiAgICAgICAgICB7dChcImdlbmVyYWwuY2FuY2VsXCIpfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJyZWZ1bmQtY29udGludWUtYnV0dG9uXCJcbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5jb250aW51ZUJ1dHRvbn1cbiAgICAgICAgICBvbkNsaWNrPXtjb25maXJtUmVmdW5kfVxuICAgICAgICAgIGRpc2FibGVkPXt0aWNrZXRzVG9SZWZ1bmQubGVuZ3RoID09PSAwfVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJnZW5lcmFsLmNvbnRpbnVlXCIpfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgIDwvQm94PlxuICAgIDwvPlxuICApO1xuXG4gIGNvbnN0IHJlZnVuZFN0ZXBUd28gPSAoKSA9PiAoXG4gICAgPEJveCBkYXRhLXRlc3RpZD1cInJlZnVuZC1yZXF1ZXN0LXN1Y2Nlc3NmdWxcIj5cbiAgICAgIDxoMyBjbGFzc05hbWU9e3N0eWxlcy5zdWJ0aXRsZX0+XG4gICAgICAgIHt0KFwiY29uZmlybV9wb3B1cC5xdWVzdGlvbl90ZXh0X2NvbmZpcm1fcmVmdW5kXCIpfVxuICAgICAgPC9oMz5cbiAgICAgIHtlcnJvck1zZyAmJiAoXG4gICAgICAgIDxFcnJvckxhYmVsXG4gICAgICAgICAgY2xhc3NOYW1lcz17c3R5bGVzLnJlZnVuZEVycm9yTXNnfVxuICAgICAgICAgIGNvbG9yPVwiI0ZGMDAwMFwiXG4gICAgICAgICAgZGF0YVRlc3RJZD1cImZhaWxlZC1yZWZ1bmQtbWVzc2FnZVwiXG4gICAgICAgICAgbWVzc2FnZT17ZXJyb3JNc2d9XG4gICAgICAgIC8+XG4gICAgICApfVxuICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRMaXN0fT5cbiAgICAgICAge3RpY2tldHNUb1JlZnVuZC5tYXAoKHRpY2tldCkgPT4gKFxuICAgICAgICAgIDxSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXRcbiAgICAgICAgICAgIGtleT17YHJlZnVuZF9yZXFfJHt0aWNrZXQ/LmlkfWB9XG4gICAgICAgICAgICB0aWNrZXQ9e3RpY2tldH1cbiAgICAgICAgICAvPlxuICAgICAgICApKX1cbiAgICAgIDwvQm94PlxuICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5DVEFCdXR0b25XcmFwcGVyfT5cbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJyZWZ1bmQtcmV0dXJuLWJ1dHRvblwiXG4gICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuY2FuY2VsQnV0dG9ufVxuICAgICAgICAgIG9uQ2xpY2s9e2dvQmFja1RvUmVmdW5kfVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJnZW5lcmFsLmJhY2tcIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgYXJpYS1sYWJlbD1cInJlZnVuZC1jb250aW51ZS1idXR0b25cIlxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNvbnRpbnVlQnV0dG9ufVxuICAgICAgICAgIG9uQ2xpY2s9e3JlZnVuZFRpY2tldHN9XG4gICAgICAgID5cbiAgICAgICAgICB7dChcImdlbmVyYWwuY29udGludWVcIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgPC9Cb3g+XG4gICAgPC9Cb3g+XG4gICk7XG5cbiAgY29uc3QgcmVmdW5kU3RlcFRocmVlID0gKCkgPT4gKFxuICAgIDxCb3hcbiAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnJlZnVuZFN1Y2Nlc3NmdWx9XG4gICAgICBkYXRhLXRlc3RpZD1cInJlZnVuZC1yZXF1ZXN0LXN1Y2Nlc3NmdWxcIlxuICAgID5cbiAgICAgIDxDaGVja0NpcmNsZUljb24gc3g9e3sgY29sb3I6IFwiIzRjYWY1MFwiIH19IC8+XG4gICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlcy5zdWNjZXNzTXNnfT5cbiAgICAgICAge3QoXCJ0aWNrZXRzLnJlZnVuZF9yZXF1ZXN0X3N1Y2Nlc3NfMVwiKX1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzLnN1Y2Nlc3NNc2cyfT5cbiAgICAgICAge3QoXCJ0aWNrZXRzLnJlZnVuZF9yZXF1ZXN0X3N1Y2Nlc3NfMlwiKX1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxCdXR0b25cbiAgICAgICAgYXJpYS1sYWJlbD1cInJlZnVuZC1maW5pc2gtYnV0dG9uXCJcbiAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNvbnRpbnVlQnV0dG9ufVxuICAgICAgICBvbkNsaWNrPXtjbG9zZVNsaWRlcn1cbiAgICAgID5cbiAgICAgICAge3QoXCJnZW5lcmFsLmZpbmlzaFwiKX1cbiAgICAgIDwvQnV0dG9uPlxuICAgIDwvQm94PlxuICApO1xuXG4gIGNvbnN0IHJlbmRlclN0ZXBzID0gKCkgPT4ge1xuICAgIHN3aXRjaCAoc3RlcCkge1xuICAgICAgY2FzZSBTVEVQX09ORTpcbiAgICAgICAgcmV0dXJuIHJlZnVuZFN0ZXBPbmUoKTtcbiAgICAgIGNhc2UgU1RFUF9UV086XG4gICAgICAgIHJldHVybiByZWZ1bmRTdGVwVHdvKCk7XG4gICAgICBjYXNlIFNURVBfVEhSRUU6XG4gICAgICAgIHJldHVybiByZWZ1bmRTdGVwVGhyZWUoKTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiByZWZ1bmRTdGVwT25lKCk7XG4gICAgfVxuICB9O1xuICByZXR1cm4gKFxuICAgIDxTdHlsZWRFbmdpbmVQcm92aWRlciBpbmplY3RGaXJzdD5cbiAgICAgIDxSaWdodERyYXdlclxuICAgICAgICBpZD1cInJlZnVuZC1yZXF1ZXN0c1wiXG4gICAgICAgIG9wZW49e29wZW59XG4gICAgICAgIG9uQ2xvc2U9e2Nsb3NlU2xpZGVyfVxuICAgICAgICB0aXRsZT17dChcIm9yZGVyX3N1bW1hcnkucmVxdWVzdF9yZWZ1bmRcIil9XG4gICAgICAgIGRhdGEtdGVzdGlkPVwicmVmdW5kLXJlcXVlc3QtbW9kYWxcIlxuICAgICAgPlxuICAgICAgICB7cmVuZGVyU3RlcHMoKX1cbiAgICAgIDwvUmlnaHREcmF3ZXI+XG4gICAgPC9TdHlsZWRFbmdpbmVQcm92aWRlcj5cbiAgKTtcbn07XG5cblJlZnVuZFJlcXVlc3RzTW9kYWwucHJvcFR5cGVzID0ge1xuICB0aWNrZXRzOiBQcm9wVHlwZXMuYXJyYXlPZihPYmplY3QpLFxuICBvcGVuOiBQcm9wVHlwZXMuYm9vbCxcbiAgb25SZWZ1bmRTdWNjZXNzQ2xvc2U6IFByb3BUeXBlcy5mdW5jLFxuICBvbkNsb3NlU2xpZGVyOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgUmVmdW5kUmVxdWVzdHNNb2RhbDtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTcgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IEJveCwgRHJhd2VyLCBJY29uQnV0dG9uLCBUeXBvZ3JhcGh5IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IENsb3NlIGFzIENsb3NlSWNvbiB9IGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IFJpZ2h0RHJhd2VyID0gKHtcbiAgaWQsXG4gIHRpdGxlLFxuICBoZWFkZXJDaGlsZHJlbiA9IG51bGwsXG4gIGNoaWxkcmVuLFxuICBvcGVuLFxuICBvbkNsb3NlLFxuICBjbGFzc05hbWVcbn0pID0+IChcbiAgPERyYXdlclxuICAgIGlkPXtpZH1cbiAgICBvcGVuPXtvcGVufVxuICAgIG9uQ2xvc2U9e29uQ2xvc2V9XG4gICAgYW5jaG9yPVwicmlnaHRcIlxuICAgIE1vZGFsUHJvcHM9e3sga2VlcE1vdW50ZWQ6IGZhbHNlIH19XG4gICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMud3JhcHBlcn0gJHtjbGFzc05hbWV9YH1cbiAgPlxuICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuaGVhZGVyfT5cbiAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgIGRhdGEtdGVzdGlkPVwiY2xvc2UtZHJhd2VyXCJcbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuY2xvc2VCdG59XG4gICAgICAgIG9uQ2xpY2s9e29uQ2xvc2V9XG4gICAgICAgIHN4PXt7IGZsb2F0OiBcInJpZ2h0XCIgfX1cbiAgICAgICAgZm9udFNpemU9XCJsYXJnZVwiXG4gICAgICA+XG4gICAgICAgIDxDbG9zZUljb24gLz5cbiAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgIHt0aXRsZSAmJiAoXG4gICAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJoNlwiIGd1dHRlckJvdHRvbSBjbGFzc05hbWU9e3N0eWxlcy50aXRsZX0+XG4gICAgICAgICAge3RpdGxlfVxuICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICApfVxuICAgICAge2hlYWRlckNoaWxkcmVufVxuICAgIDwvQm94PlxuICAgIHtjaGlsZHJlbn1cbiAgPC9EcmF3ZXI+XG4pO1xuXG5SaWdodERyYXdlci5wcm9wVHlwZXMgPSB7XG4gIGlkOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIHRpdGxlOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuc3RyaW5nLCBQcm9wVHlwZXMubm9kZV0pLFxuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG4gIGhlYWRlckNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgb3BlbjogUHJvcFR5cGVzLmJvb2wsXG4gIG9uQ2xvc2U6IFByb3BUeXBlcy5mdW5jLFxuICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmdcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFJpZ2h0RHJhd2VyO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgc2hhbGxvd0VxdWFsLCB1c2VTZWxlY3RvciB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgQm94IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcblxuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBTdW1taXRIZWFkZXIgPSAoKSA9PiB7XG4gIGNvbnN0IHsgc3VtbWl0IH0gPSB1c2VTZWxlY3RvcihcbiAgICAoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlIHx8IHt9LFxuICAgIHNoYWxsb3dFcXVhbFxuICApO1xuICByZXR1cm4gKFxuICAgIDxCb3hcbiAgICAgIGNsYXNzTmFtZT17c3R5bGVzLndpZGdldEhlYWRlcn1cbiAgICAgIHN4PXt7IHBhZGRpbmc6IHsgeHM6IDIsIG1kOiAwLCBsZzogMCB9IH19XG4gICAgICBkYXRhLXRlc3RpZD1cIm15LW9yZGVycy10aWNrZXQtaGVhZGVyXCJcbiAgICA+XG4gICAgICA8aDIgY2xhc3NOYW1lPXtzdHlsZXMuc3VtbWl0VGl0bGVEYXRlfT57c3VtbWl0Py5uYW1lfTwvaDI+XG4gICAgICA8aDIgY2xhc3NOYW1lPXtzdHlsZXMuc3VtbWl0VGl0bGVEYXRlfT57c3VtbWl0Py5kYXRlc19sYWJlbH08L2gyPlxuICAgIDwvQm94PlxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgU3VtbWl0SGVhZGVyO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2gsIHVzZVNlbGVjdG9yIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgeyBCb3ggfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgcmVzZXRGaWx0ZXIgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuaW1wb3J0IFN1bW1pdEhlYWRlciBmcm9tIFwiLi4vU3VtbWl0SGVhZGVyXCI7XG5pbXBvcnQgTm9UaWNrZXRzRm91bmQgZnJvbSBcIi4uL05vVGlja2V0c0ZvdW5kXCI7XG5pbXBvcnQgeyBUQUJTIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2NvbnN0YW50c1wiO1xuXG5jb25zdCBUYWJXcmFwcGVyID0gKHsgdGFiLCBjaGlsZHJlbiwgc2V0VGFiIH0pID0+IHtcbiAgY29uc3QgeyBtZW1iZXJPcmRlcnMsIHVzZXJUaWNrZXRzLCBhY3RpdmVGaWx0ZXJzQ291bnQgfSA9IHVzZVNlbGVjdG9yKFxuICAgIChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUgfHwge31cbiAgKTtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuICBjb25zdCB0aWNrZXRzID0gdGFiID09PSBUQUJTLlRJQ0tFVFMgPyB1c2VyVGlja2V0cyA6IG1lbWJlck9yZGVycztcbiAgY29uc3QgaGFzVGlja2V0cyA9IHRpY2tldHMubGVuZ3RoID4gMDtcbiAgY29uc3QgaXNGaWx0ZXJlZCA9IGFjdGl2ZUZpbHRlcnNDb3VudCA+IDA7XG5cbiAgY29uc3QgY2xlYXJGaWx0ZXJzID0gKCkgPT4ge1xuICAgIGRpc3BhdGNoKHJlc2V0RmlsdGVyKCkpO1xuICB9O1xuXG4gIGNvbnN0IGdldFBhZ2VWaWV3ID0gKCkgPT4ge1xuICAgIGlmIChpc0ZpbHRlcmVkKSByZXR1cm4gXCJmaWx0ZXJcIjtcbiAgICByZXR1cm4gdGFiID09PSBUQUJTLlRJQ0tFVFMgPyBUQUJTLlRJQ0tFVFMgOiBUQUJTLk9SREVSUztcbiAgfTtcblxuICBjb25zdCBnZXRPbkNsaWNrID0gKCkgPT4ge1xuICAgIGlmIChpc0ZpbHRlcmVkKSByZXR1cm4gY2xlYXJGaWx0ZXJzO1xuICAgIGNvbnN0IHRhYlRvTGluayA9IHRhYiA9PT0gVEFCUy5USUNLRVRTID8gVEFCUy5PUkRFUlMgOiBUQUJTLlRJQ0tFVFM7XG4gICAgcmV0dXJuICgpID0+IHNldFRhYih0YWJUb0xpbmspO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIHshaGFzVGlja2V0cyAmJiAoXG4gICAgICAgIDxOb1RpY2tldHNGb3VuZCBwYWdlVmlldz17Z2V0UGFnZVZpZXcoKX0gb25DbGljaz17Z2V0T25DbGljaygpfSAvPlxuICAgICAgKX1cbiAgICAgIHtoYXNUaWNrZXRzICYmIChcbiAgICAgICAgPD5cbiAgICAgICAgICA8Qm94IHN4PXt7IHB0OiA2LCBwYjogMyB9fT5cbiAgICAgICAgICAgIDxTdW1taXRIZWFkZXIgLz5cbiAgICAgICAgICA8L0JveD5cbiAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgIDwvPlxuICAgICAgKX1cbiAgICA8Lz5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFRhYldyYXBwZXI7XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE3IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBCb3gsIEJ1dHRvbiwgQ29sbGFwc2UsIERpdmlkZXIsIExpbmsgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IFJlYXNzaWduRm9ybSBmcm9tIFwiLi4vUmVhc3NpZ25Gb3JtXCI7XG5pbXBvcnQgRGVsZWdhdGVGb3JtIGZyb20gXCIuLi9EZWxlZ2F0ZUZvcm1cIjtcbmltcG9ydCB7IHVzZVRpY2tldERldGFpbHMgfSBmcm9tIFwiLi4vLi4vLi4vLi4vaG9va3MvdXNlVGlja2V0RGV0YWlsc1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IENvbmZpcm1EaWFsb2cgZnJvbSBcIi4uLy4uLy4uL0NvbmZpcm1EaWFsb2dcIjtcblxuY29uc3QgQXNzaWduT3B0aW9ucyA9ICh7XG4gIHRpY2tldCxcbiAgdXNlclByb2ZpbGUsXG4gIGFzc2lnbk9wdGlvbixcbiAgc2V0QXNzaWduT3B0aW9uLFxuICBvbkFzc2lnbixcbiAgb25EZWxlZ2F0ZSxcbiAgb25VbkFzc2lnblxufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IFtvcGVuQ29uZmlybVVuYXNzaWduLCBzZXRPcGVuQ29uZmlybVVuYXNzaWduXSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgaXNBc3NpZ25lZFRvTWUgPSB1c2VyUHJvZmlsZT8uZW1haWwgPT09IHRpY2tldD8ub3duZXI/LmVtYWlsO1xuICBjb25zdCB7IGFsbG93c0RlbGVnYXRlIH0gPSB1c2VUaWNrZXREZXRhaWxzKHRpY2tldCk7XG5cbiAgY29uc3QgaGFuZGxlVW5Bc3NpZ24gPSAoKSA9PiB7XG4gICAgc2V0T3BlbkNvbmZpcm1VbmFzc2lnbihmYWxzZSk7XG4gICAgb25VbkFzc2lnbigpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy53cmFwcGVyfT5cbiAgICAgIDxCdXR0b25cbiAgICAgICAgdmFyaWFudD1cImNvbnRhaW5lZFwiXG4gICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgIGRpc2FibGVkPXtpc0Fzc2lnbmVkVG9NZX1cbiAgICAgICAgb25DbGljaz17KCkgPT4gb25Bc3NpZ24odXNlclByb2ZpbGUuZW1haWwsIFwiXCIpfVxuICAgICAgPlxuICAgICAgICB7dChcInRpY2tldF9hc3NpZ24uYXNzaWduX3RvX21lXCIpfVxuICAgICAgPC9CdXR0b24+XG4gICAgICA8RGl2aWRlciB2YXJpYW50PVwibWlkZGxlXCIgc3g9e3sgbXk6IDMsIHB4OiA0IH19PlxuICAgICAgICBvclxuICAgICAgPC9EaXZpZGVyPlxuICAgICAgPEJveD5cbiAgICAgICAgPENvbGxhcHNlIGluPXthc3NpZ25PcHRpb24gPT09IFwib3RoZXJcIn0gdGltZW91dD17NTAwfT5cbiAgICAgICAgICA8UmVhc3NpZ25Gb3JtXG4gICAgICAgICAgICB0aWNrZXQ9e3RpY2tldH1cbiAgICAgICAgICAgIG9uU3VibWl0PXsodmFsKSA9PlxuICAgICAgICAgICAgICBvbkFzc2lnbih2YWwubmV3X2F0dGVuZGVlX2VtYWlsLCB2YWwucGVyc29uYWxfbWVzc2FnZSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9uQ2xvc2U9eygpID0+IHNldEFzc2lnbk9wdGlvbihudWxsKX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L0NvbGxhcHNlPlxuICAgICAgICB7YXNzaWduT3B0aW9uICE9PSBcIm90aGVyXCIgJiYgKFxuICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgIHZhcmlhbnQ9XCJjb250YWluZWRcIlxuICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRBc3NpZ25PcHRpb24oXCJvdGhlclwiKX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7dChcInRpY2tldF9hc3NpZ24uYXNzaWduX3RvX290aGVyXCIpfVxuICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICApfVxuICAgICAgPC9Cb3g+XG4gICAgICB7YWxsb3dzRGVsZWdhdGUgJiYgKFxuICAgICAgICA8PlxuICAgICAgICAgIDxEaXZpZGVyIHZhcmlhbnQ9XCJtaWRkbGVcIiBzeD17eyBteTogMywgcHg6IDQgfX0+XG4gICAgICAgICAgICBvclxuICAgICAgICAgIDwvRGl2aWRlcj5cbiAgICAgICAgICA8Q29sbGFwc2UgaW49e2Fzc2lnbk9wdGlvbiA9PT0gXCJtYW5hZ2VcIn0gdGltZW91dD17NTAwfT5cbiAgICAgICAgICAgIDxEZWxlZ2F0ZUZvcm1cbiAgICAgICAgICAgICAgdGlja2V0PXt0aWNrZXR9XG4gICAgICAgICAgICAgIG9uU3VibWl0PXsodmFsKSA9PlxuICAgICAgICAgICAgICAgIG9uRGVsZWdhdGUoXG4gICAgICAgICAgICAgICAgICB2YWwuZGVsZWdhdGVfZmlyc3RfbmFtZSxcbiAgICAgICAgICAgICAgICAgIHZhbC5kZWxlZ2F0ZV9sYXN0X25hbWUsXG4gICAgICAgICAgICAgICAgICB2YWwuZGVsZWdhdGVfZW1haWxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgb25DbG9zZT17KCkgPT4gc2V0QXNzaWduT3B0aW9uKG51bGwpfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L0NvbGxhcHNlPlxuICAgICAgICAgIHthc3NpZ25PcHRpb24gIT09IFwibWFuYWdlXCIgJiYgKFxuICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICB2YXJpYW50PVwiY29udGFpbmVkXCJcbiAgICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0QXNzaWduT3B0aW9uKFwibWFuYWdlXCIpfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7dChcInRpY2tldF9hc3NpZ24ubWFuYWdlX3RpY2tldFwiKX1cbiAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvPlxuICAgICAgKX1cbiAgICAgIHt0aWNrZXQ/Lm93bmVyPy5lbWFpbCAmJiAoXG4gICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMudW5hc3NpZ25XcmFwcGVyfT5cbiAgICAgICAgICB7LyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzeC1hMTF5L2FuY2hvci1pcy12YWxpZCAqL31cbiAgICAgICAgICA8TGlua1xuICAgICAgICAgICAgY29tcG9uZW50PVwiYnV0dG9uXCJcbiAgICAgICAgICAgIHZhcmlhbnQ9XCJib2R5MVwiXG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRPcGVuQ29uZmlybVVuYXNzaWduKHRydWUpfVxuICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgY29sb3I6IFwidGV4dC5saW5rXCIsXG4gICAgICAgICAgICAgIHRleHREZWNvcmF0aW9uOiBcInVuZGVybGluZVwiLFxuICAgICAgICAgICAgICB0ZXh0RGVjb3JhdGlvbkNvbG9yOiBcInRleHQubGlua1wiXG4gICAgICAgICAgICB9fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt0KFwidGlja2V0X2Fzc2lnbi5yZXZlcnRfdG9fdW5hc3NpZ25lZFwiKX1cbiAgICAgICAgICA8L0xpbms+XG4gICAgICAgIDwvQm94PlxuICAgICAgKX1cbiAgICAgIHsvKiBUT0RPOiBpZiB3ZSBuZWVkIHRvIHJldXNlIHRoaXMgdGhlbiB3ZSBzaG91bGQgbW92ZSBpdCB0byBjb250ZXh0ICovfVxuICAgICAgPENvbmZpcm1EaWFsb2dcbiAgICAgICAgb3Blbj17b3BlbkNvbmZpcm1VbmFzc2lnbn1cbiAgICAgICAgdGl0bGU9e3QoXCJ0aWNrZXRfYXNzaWduLmNvbmZpcm1fdW5hc3NpZ24udGl0bGVcIil9XG4gICAgICAgIGJvZHk9e3QoXCJ0aWNrZXRfYXNzaWduLmNvbmZpcm1fdW5hc3NpZ24uYm9keVwiKX1cbiAgICAgICAgb25Db25maXJtPXtoYW5kbGVVbkFzc2lnbn1cbiAgICAgICAgb25DbG9zZT17KCkgPT4gc2V0T3BlbkNvbmZpcm1VbmFzc2lnbihmYWxzZSl9XG4gICAgICAvPlxuICAgIDwvQm94PlxuICApO1xufTtcblxuQXNzaWduT3B0aW9ucy5wcm9wVHlwZXMgPSB7XG4gIHRpY2tldDogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICB1c2VyUHJvZmlsZTogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBhc3NpZ25PcHRpb246IFByb3BUeXBlcy5zdHJpbmcsXG4gIHNldEFzc2lnbk9wdGlvbjogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgb25Bc3NpZ246IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIG9uRGVsZWdhdGU6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWRcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEFzc2lnbk9wdGlvbnM7XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE3IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBUZXh0RmllbGQsIFR5cG9ncmFwaHkgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlRm9ybWlrIH0gZnJvbSBcImZvcm1pa1wiO1xuaW1wb3J0ICogYXMgeXVwIGZyb20gXCJ5dXBcIjtcblxuaW1wb3J0IEZvcm1Gb290ZXIgZnJvbSBcIi4uLy4uLy4uL0Zvcm1Gb290ZXJcIjtcblxuY29uc3QgRGVsZWdhdGVGb3JtID0gKHsgb25TdWJtaXQsIG9uQ2xvc2UgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG5cbiAgY29uc3QgZm9ybWlrID0gdXNlRm9ybWlrKHtcbiAgICBpbml0aWFsVmFsdWVzOiB7XG4gICAgICBkZWxlZ2F0ZV9maXJzdF9uYW1lOiBcIlwiLFxuICAgICAgZGVsZWdhdGVfbGFzdF9uYW1lOiBcIlwiLFxuICAgICAgZGVsZWdhdGVfZW1haWw6IFwiXCJcbiAgICB9LFxuICAgIHZhbGlkYXRpb25TY2hlbWE6IHl1cC5vYmplY3Qoe1xuICAgICAgZGVsZWdhdGVfZmlyc3RfbmFtZTogeXVwXG4gICAgICAgIC5zdHJpbmcodChcInZhbGlkYXRpb24uZmlyc3RfbmFtZS5zdHJpbmdcIikpXG4gICAgICAgIC5yZXF1aXJlZCh0KFwidmFsaWRhdGlvbi5maXJzdF9uYW1lLnJlcXVpcmVkXCIpKSxcbiAgICAgIGRlbGVnYXRlX2xhc3RfbmFtZTogeXVwXG4gICAgICAgIC5zdHJpbmcodChcInZhbGlkYXRpb24ubGFzdF9uYW1lLnN0cmluZ1wiKSlcbiAgICAgICAgLnJlcXVpcmVkKHQoXCJ2YWxpZGF0aW9uLmxhc3RfbmFtZS5yZXF1aXJlZFwiKSksXG4gICAgICBkZWxlZ2F0ZV9lbWFpbDogeXVwXG4gICAgICAgIC5zdHJpbmcodChcInZhbGlkYXRpb24uZW1haWwuc3RyaW5nXCIpKVxuICAgICAgICAuZW1haWwodChcInZhbGlkYXRpb24uZW1haWwuZm9ybWF0XCIpKVxuICAgIH0pLFxuICAgIG9uU3VibWl0OiAodmFsdWVzLCB7IHJlc2V0Rm9ybSB9KSA9PiB7XG4gICAgICBvblN1Ym1pdCh2YWx1ZXMpO1xuICAgICAgcmVzZXRGb3JtKCk7XG4gICAgfVxuICB9KTtcblxuICBjb25zdCBoYW5kbGVDYW5jZWwgPSAoKSA9PiB7XG4gICAgZm9ybWlrLnJlc2V0Rm9ybSgpO1xuICAgIG9uQ2xvc2UoKTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiaDZcIiBndXR0ZXJCb3R0b20+XG4gICAgICAgIHt0KFwidGlja2V0X2Fzc2lnbi5kZWxlZ2F0ZV9mb3JtLnRpdGxlXCIpfVxuICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImJvZHkxXCIgZ3V0dGVyQm90dG9tIHN4PXt7IGNvbG9yOiBcInRleHQuc2Vjb25kYXJ5XCIgfX0+XG4gICAgICAgIHt0KFwidGlja2V0X2Fzc2lnbi5kZWxlZ2F0ZV9mb3JtLmJvZHlcIil9XG4gICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICA8Zm9ybSBvblN1Ym1pdD17Zm9ybWlrLmhhbmRsZVN1Ym1pdH0gbm9WYWxpZGF0ZT5cbiAgICAgICAgPFRleHRGaWVsZFxuICAgICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICAgIG5hbWU9XCJkZWxlZ2F0ZV9maXJzdF9uYW1lXCJcbiAgICAgICAgICBtYXJnaW49XCJub3JtYWxcIlxuICAgICAgICAgIGxhYmVsPXt0KFwidGlja2V0X2Fzc2lnbi5kZWxlZ2F0ZV9mb3JtLmZpcnN0X25hbWVcIil9XG4gICAgICAgICAgdmFsdWU9e2Zvcm1pay52YWx1ZXMuZGVsZWdhdGVfZmlyc3RfbmFtZX1cbiAgICAgICAgICBvbkNoYW5nZT17Zm9ybWlrLmhhbmRsZUNoYW5nZX1cbiAgICAgICAgICBvbkJsdXI9e2Zvcm1pay5oYW5kbGVCbHVyfVxuICAgICAgICAgIGVycm9yPXtcbiAgICAgICAgICAgIGZvcm1pay50b3VjaGVkLmRlbGVnYXRlX2ZpcnN0X25hbWUgJiZcbiAgICAgICAgICAgIEJvb2xlYW4oZm9ybWlrLmVycm9ycy5kZWxlZ2F0ZV9maXJzdF9uYW1lKVxuICAgICAgICAgIH1cbiAgICAgICAgICBoZWxwZXJUZXh0PXtcbiAgICAgICAgICAgIGZvcm1pay50b3VjaGVkLmRlbGVnYXRlX2ZpcnN0X25hbWUgJiZcbiAgICAgICAgICAgIGZvcm1pay5lcnJvcnMuZGVsZWdhdGVfZmlyc3RfbmFtZVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAvPlxuICAgICAgICA8VGV4dEZpZWxkXG4gICAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgICAgbmFtZT1cImRlbGVnYXRlX2xhc3RfbmFtZVwiXG4gICAgICAgICAgbWFyZ2luPVwibm9ybWFsXCJcbiAgICAgICAgICBsYWJlbD17dChcInRpY2tldF9hc3NpZ24uZGVsZWdhdGVfZm9ybS5sYXN0X25hbWVcIil9XG4gICAgICAgICAgdmFsdWU9e2Zvcm1pay52YWx1ZXMuZGVsZWdhdGVfbGFzdF9uYW1lfVxuICAgICAgICAgIG9uQ2hhbmdlPXtmb3JtaWsuaGFuZGxlQ2hhbmdlfVxuICAgICAgICAgIG9uQmx1cj17Zm9ybWlrLmhhbmRsZUJsdXJ9XG4gICAgICAgICAgZXJyb3I9e1xuICAgICAgICAgICAgZm9ybWlrLnRvdWNoZWQuZGVsZWdhdGVfbGFzdF9uYW1lICYmXG4gICAgICAgICAgICBCb29sZWFuKGZvcm1pay5lcnJvcnMuZGVsZWdhdGVfbGFzdF9uYW1lKVxuICAgICAgICAgIH1cbiAgICAgICAgICBoZWxwZXJUZXh0PXtcbiAgICAgICAgICAgIGZvcm1pay50b3VjaGVkLmRlbGVnYXRlX2xhc3RfbmFtZSAmJlxuICAgICAgICAgICAgZm9ybWlrLmVycm9ycy5kZWxlZ2F0ZV9sYXN0X25hbWVcbiAgICAgICAgICB9XG4gICAgICAgIC8+XG4gICAgICAgIDxUZXh0RmllbGRcbiAgICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgICBuYW1lPVwiZGVsZWdhdGVfZW1haWxcIlxuICAgICAgICAgIGxhYmVsPXt0KFwidGlja2V0X2Fzc2lnbi5kZWxlZ2F0ZV9mb3JtLmVtYWlsXCIpfVxuICAgICAgICAgIG1hcmdpbj1cIm5vcm1hbFwiXG4gICAgICAgICAgdmFsdWU9e2Zvcm1pay52YWx1ZXMuZGVsZWdhdGVfZW1haWx9XG4gICAgICAgICAgb25DaGFuZ2U9e2Zvcm1pay5oYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgb25CbHVyPXtmb3JtaWsuaGFuZGxlQmx1cn1cbiAgICAgICAgICBlcnJvcj17XG4gICAgICAgICAgICBmb3JtaWsudG91Y2hlZC5kZWxlZ2F0ZV9lbWFpbCAmJlxuICAgICAgICAgICAgQm9vbGVhbihmb3JtaWsuZXJyb3JzLmRlbGVnYXRlX2VtYWlsKVxuICAgICAgICAgIH1cbiAgICAgICAgICBoZWxwZXJUZXh0PXtcbiAgICAgICAgICAgIGZvcm1pay50b3VjaGVkLmRlbGVnYXRlX2VtYWlsICYmIGZvcm1pay5lcnJvcnMuZGVsZWdhdGVfZW1haWxcbiAgICAgICAgICB9XG4gICAgICAgIC8+XG4gICAgICAgIDxGb3JtRm9vdGVyXG4gICAgICAgICAgc2F2ZUxhYmVsPXt0KFwidGlja2V0X2Fzc2lnbi5kZWxlZ2F0ZV9mb3JtLnNhdmVcIil9XG4gICAgICAgICAgY2FuY2VsTGFiZWw9e3QoXCJ0aWNrZXRfYXNzaWduLmRlbGVnYXRlX2Zvcm0uY2FuY2VsXCIpfVxuICAgICAgICAgIG9uQ2xvc2U9e2hhbmRsZUNhbmNlbH1cbiAgICAgICAgICBkaXNhYmxlZD17Zm9ybWlrLmlzU3VibWl0dGluZ31cbiAgICAgICAgLz5cbiAgICAgIDwvZm9ybT5cbiAgICA8Lz5cbiAgKTtcbn07XG5cbkRlbGVnYXRlRm9ybS5wcm9wVHlwZXMgPSB7XG4gIG9uU3VibWl0OiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkXG59O1xuXG5leHBvcnQgZGVmYXVsdCBEZWxlZ2F0ZUZvcm07XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCb3gsIExpbmssIFR5cG9ncmFwaHkgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IENvcHlUZXh0IGZyb20gXCIuLi8uLi8uLi9Db3B5VGV4dFwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBBc3NpZ25IZWFkZXIgPSAoeyBpblByb2dyZXNzLCB0aWNrZXQsIHVzZXJFbWFpbCwgb25DbG9zZSB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgYXNzaWduZWRUb1lvdSA9IHRpY2tldD8ub3duZXI/LmVtYWlsID09PSB1c2VyRW1haWw7XG5cbiAgY29uc3QgZ2V0U2Vjb25kYXJ5VGl0bGUgPSAoKSA9PiB7XG4gICAgaWYgKGluUHJvZ3Jlc3MgPT09IFwibWFuYWdlXCIpIHtcbiAgICAgIHJldHVybiBgJHt0KFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfYXNzaWduLmRlbGVnYXRlZFwiKX0gJHtcbiAgICAgICAgdGlja2V0Lm93bmVyLmZpcnN0X25hbWVcbiAgICAgIH0gJHt0aWNrZXQub3duZXIubGFzdF9uYW1lfS5gO1xuICAgIH1cblxuICAgIGlmIChpblByb2dyZXNzKSB7XG4gICAgICBjb25zdCB1c2VyID0gYXNzaWduZWRUb1lvdSA/IFwieW91XCIgOiB0aWNrZXQ/Lm93bmVyPy5lbWFpbDtcbiAgICAgIHJldHVybiBgJHt0KFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfYXNzaWduLmFzc2lnbmVkX3RvXCIpfSAke3VzZXJ9YDtcbiAgICB9XG5cbiAgICByZXR1cm4gdGlja2V0LnRpY2tldF90eXBlLm5hbWU7XG4gIH07XG5cbiAgY29uc3QgZ2V0SGVhZGVyTm90ZSA9ICgpID0+IHtcbiAgICBpZiAoaW5Qcm9ncmVzcykge1xuICAgICAgY29uc3QgdHJhbnNLZXkgPSBhc3NpZ25lZFRvWW91XG4gICAgICAgID8gXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9hc3NpZ24uYW5zd2VyX3lvdXJfZXFcIlxuICAgICAgICA6IFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfYXNzaWduLmFuc3dlcl9vdGhlcnNfZXFcIjtcblxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPD5cbiAgICAgICAgICB7dCh0cmFuc0tleSl9XG4gICAgICAgICAgPGJyIC8+XG4gICAgICAgICAgey8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc3gtYTExeS9hbmNob3ItaXMtdmFsaWQgKi99XG4gICAgICAgICAgPExpbmtcbiAgICAgICAgICAgIGNvbXBvbmVudD1cImJ1dHRvblwiXG4gICAgICAgICAgICB2YXJpYW50PVwiYm9keTFcIlxuICAgICAgICAgICAgb25DbGljaz17b25DbG9zZX1cbiAgICAgICAgICAgIHN4PXt7IGZvbnRXZWlnaHQ6IDcwMCwgbWFyZ2luOiBcIjIwcHggMCAxMHB4XCIgfX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7dChcInRpY2tldF9hc3NpZ24uaGVhZGVyX2Fzc2lnbi5jb21wbGV0ZV9sYXRlclwiKX1cbiAgICAgICAgICA8L0xpbms+XG4gICAgICAgIDwvPlxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gXCJcIjtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMud3JhcHBlcn0+XG4gICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLnB1cmNoYXNlZEJ5V3JhcHBlcn0+XG4gICAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJib2R5MVwiIGd1dHRlckJvdHRvbSBjbGFzc05hbWU9e3N0eWxlcy5wdXJjaGFzZWRCeX0+XG4gICAgICAgICAge3QoXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9hc3NpZ24ucHVyY2hhc2VkX2J5XCIpfXtcIiBcIn1cbiAgICAgICAgICB7dGlja2V0Py5vcmRlcj8ub3duZXJfZW1haWx9XG4gICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImJvZHkxXCIgZ3V0dGVyQm90dG9tIGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyTm99PlxuICAgICAgICAgIDxDb3B5VGV4dFxuICAgICAgICAgICAgdGV4dD17dGlja2V0Py5vcmRlcj8ubnVtYmVyfVxuICAgICAgICAgICAgcmV2ZXJzZWRcbiAgICAgICAgICAgIHdpZHRoPXsyNTB9XG4gICAgICAgICAgICB0b29sdGlwVGV4dD17dChcIm9yZGVyX3N1bW1hcnkuY29weV9vcmRlcl9udW1iZXJcIil9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgPC9Cb3g+XG4gICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiaDVcIiBndXR0ZXJCb3R0b20+XG4gICAgICAgIHtnZXRTZWNvbmRhcnlUaXRsZSgpfVxuICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgPFR5cG9ncmFwaHlcbiAgICAgICAgdmFyaWFudD1cImJvZHkxXCJcbiAgICAgICAgZ3V0dGVyQm90dG9tXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmhlYWRlck5vdGV9XG4gICAgICAgIHN4PXt7IGNvbG9yOiBcInRleHQuc2Vjb25kYXJ5XCIgfX1cbiAgICAgID5cbiAgICAgICAge2dldEhlYWRlck5vdGUoKX1cbiAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbi8vIEFkZGluZyBwcm9wLXR5cGVzIGZvciB0eXBlLWNoZWNraW5nXG5Bc3NpZ25IZWFkZXIucHJvcFR5cGVzID0ge1xuICBpblByb2dyZXNzOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIHRpY2tldDogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICB1c2VyRW1haWw6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZFxufTtcblxuZXhwb3J0IGRlZmF1bHQgQXNzaWduSGVhZGVyO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQm94LCBMaW5rLCBUeXBvZ3JhcGh5IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZVRpY2tldERldGFpbHMgfSBmcm9tIFwiLi4vLi4vLi4vLi4vaG9va3MvdXNlVGlja2V0RGV0YWlsc1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBSZWFzc2lnbkhlYWRlciA9ICh7IGluUHJvZ3Jlc3MsIHRpY2tldCwgdXNlckVtYWlsLCBvbkNsb3NlIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBhc3NpZ25lZFRvWW91ID0gdGlja2V0Py5vd25lcj8uZW1haWwgPT09IHVzZXJFbWFpbDtcbiAgY29uc3QgeyBhbGxvd3NEZWxlZ2F0ZSB9ID0gdXNlVGlja2V0RGV0YWlscyh0aWNrZXQpO1xuXG4gIGNvbnN0IGdldFNlY29uZGFyeVRpdGxlID0gKCkgPT4ge1xuICAgIGNvbnN0IHVzZXIgPSBhc3NpZ25lZFRvWW91XG4gICAgICA/IHQoXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9yZWFzc2lnbi55b3Vyc2VsZlwiKVxuICAgICAgOiB0aWNrZXQ/Lm93bmVyPy5lbWFpbDtcblxuICAgIGlmIChpblByb2dyZXNzID09PSBcIm1hbmFnZVwiKSB7XG4gICAgICByZXR1cm4gYCR7dChcInRpY2tldF9hc3NpZ24uaGVhZGVyX3JlYXNzaWduLmRlbGVnYXRlZFwiKX0gJHtcbiAgICAgICAgdGlja2V0Lm93bmVyLmZpcnN0X25hbWVcbiAgICAgIH0gJHt0aWNrZXQub3duZXIubGFzdF9uYW1lfS5gO1xuICAgIH1cblxuICAgIGlmICghaW5Qcm9ncmVzcykge1xuICAgICAgcmV0dXJuIGAke3QoXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9yZWFzc2lnbi5hc3NpZ25lZF90b1wiKX0gJHt1c2VyfWA7XG4gICAgfVxuXG4gICAgcmV0dXJuIGAke3QoXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9yZWFzc2lnbi5yZWFzc2lnbmVkX3RvXCIpfSAke3VzZXJ9YDtcbiAgfTtcblxuICBjb25zdCBnZXRIZWFkZXJOb3RlID0gKCkgPT4ge1xuICAgIGlmICghaW5Qcm9ncmVzcykge1xuICAgICAgcmV0dXJuIGFsbG93c0RlbGVnYXRlXG4gICAgICAgID8gdChcInRpY2tldF9hc3NpZ24uaGVhZGVyX3JlYXNzaWduLmNob29zZV9vcHRpb25cIilcbiAgICAgICAgOiB0KFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfcmVhc3NpZ24uY2hvb3NlX29wdGlvbl9ub19kZWxlZ2F0ZVwiKTtcbiAgICB9XG5cbiAgICBjb25zdCB0cmFuc0tleSA9IGFzc2lnbmVkVG9Zb3VcbiAgICAgID8gXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9yZWFzc2lnbi5hbnN3ZXJfeW91cl9lcVwiXG4gICAgICA6IFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfcmVhc3NpZ24uYW5zd2VyX290aGVyc19lcVwiO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDw+XG4gICAgICAgIHt0KHRyYW5zS2V5KX1cbiAgICAgICAgPGJyIC8+XG4gICAgICAgIHsvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganN4LWExMXkvYW5jaG9yLWlzLXZhbGlkICovfVxuICAgICAgICA8TGlua1xuICAgICAgICAgIGNvbXBvbmVudD1cImJ1dHRvblwiXG4gICAgICAgICAgdmFyaWFudD1cImJvZHkxXCJcbiAgICAgICAgICBvbkNsaWNrPXtvbkNsb3NlfVxuICAgICAgICAgIHN4PXt7IGZvbnRXZWlnaHQ6IDcwMCwgbWFyZ2luOiBcIjIwcHggMCAxMHB4XCIgfX1cbiAgICAgICAgPlxuICAgICAgICAgIHt0KFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfcmVhc3NpZ24uY29tcGxldGVfbGF0ZXJcIil9XG4gICAgICAgIDwvTGluaz5cbiAgICAgIDwvPlxuICAgICk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLndyYXBwZXJ9PlxuICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImg1XCIgZ3V0dGVyQm90dG9tPlxuICAgICAgICB7Z2V0U2Vjb25kYXJ5VGl0bGUoKX1cbiAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgIDxUeXBvZ3JhcGh5XG4gICAgICAgIHZhcmlhbnQ9XCJib2R5MVwiXG4gICAgICAgIGd1dHRlckJvdHRvbVxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5oZWFkZXJOb3RlfVxuICAgICAgICBzeD17eyBjb2xvcjogXCJ0ZXh0LnNlY29uZGFyeVwiIH19XG4gICAgICA+XG4gICAgICAgIHtnZXRIZWFkZXJOb3RlKCl9XG4gICAgICA8L1R5cG9ncmFwaHk+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG4vLyBBZGRpbmcgcHJvcC10eXBlcyBmb3IgdHlwZS1jaGVja2luZ1xuUmVhc3NpZ25IZWFkZXIucHJvcFR5cGVzID0ge1xuICBpblByb2dyZXNzOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIHRpY2tldDogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICB1c2VyRW1haWw6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZFxufTtcblxuZXhwb3J0IGRlZmF1bHQgUmVhc3NpZ25IZWFkZXI7XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE3IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBUZXh0RmllbGQsIFR5cG9ncmFwaHkgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlRm9ybWlrIH0gZnJvbSBcImZvcm1pa1wiO1xuaW1wb3J0ICogYXMgeXVwIGZyb20gXCJ5dXBcIjtcblxuaW1wb3J0IEZvcm1Gb290ZXIgZnJvbSBcIi4uLy4uLy4uL0Zvcm1Gb290ZXJcIjtcblxuY29uc3QgUmVhc3NpZ25Gb3JtID0gKHsgb25TdWJtaXQsIG9uQ2xvc2UgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG5cbiAgY29uc3QgZm9ybWlrID0gdXNlRm9ybWlrKHtcbiAgICBpbml0aWFsVmFsdWVzOiB7XG4gICAgICBuZXdfYXR0ZW5kZWVfZW1haWw6IFwiXCIsXG4gICAgICBwZXJzb25hbF9tZXNzYWdlOiBcIlwiXG4gICAgfSxcbiAgICB2YWxpZGF0aW9uU2NoZW1hOiB5dXAub2JqZWN0KHtcbiAgICAgIG5ld19hdHRlbmRlZV9lbWFpbDogeXVwXG4gICAgICAgIC5zdHJpbmcodChcInZhbGlkYXRpb24uZW1haWwuc3RyaW5nXCIpKVxuICAgICAgICAuZW1haWwodChcInZhbGlkYXRpb24uZW1haWwuZm9ybWF0XCIpKVxuICAgICAgICAucmVxdWlyZWQodChcInZhbGlkYXRpb24uZW1haWwucmVxdWlyZWRcIikpLFxuICAgICAgcGVyc29uYWxfbWVzc2FnZTogeXVwLnN0cmluZyh0KFwidmFsaWRhdGlvbi50ZXh0LnN0cmluZ1wiKSlcbiAgICB9KSxcbiAgICBvblN1Ym1pdDogKHZhbHVlcywgeyByZXNldEZvcm0gfSkgPT4ge1xuICAgICAgb25TdWJtaXQodmFsdWVzKTtcbiAgICAgIHJlc2V0Rm9ybSgpO1xuICAgIH1cbiAgfSk7XG5cbiAgY29uc3QgaGFuZGxlQ2FuY2VsID0gKCkgPT4ge1xuICAgIGZvcm1pay5yZXNldEZvcm0oKTtcbiAgICBvbkNsb3NlKCk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImg2XCIgZ3V0dGVyQm90dG9tPlxuICAgICAgICB7dChcInRpY2tldF9hc3NpZ24ucmVhc3NpZ25fZm9ybS50aXRsZVwiKX1cbiAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJib2R5MVwiIGd1dHRlckJvdHRvbSBzeD17eyBjb2xvcjogXCJ0ZXh0LnNlY29uZGFyeVwiIH19PlxuICAgICAgICB7dChcInRpY2tldF9hc3NpZ24ucmVhc3NpZ25fZm9ybS5ib2R5XCIpfVxuICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgPGZvcm0gb25TdWJtaXQ9e2Zvcm1pay5oYW5kbGVTdWJtaXR9IG5vVmFsaWRhdGU+XG4gICAgICAgIDxUZXh0RmllbGRcbiAgICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgICBuYW1lPVwibmV3X2F0dGVuZGVlX2VtYWlsXCJcbiAgICAgICAgICBsYWJlbD17dChcInRpY2tldF9hc3NpZ24ucmVhc3NpZ25fZm9ybS5uZXdfYXR0ZW5kZWVfZW1haWxcIil9XG4gICAgICAgICAgbWFyZ2luPVwibm9ybWFsXCJcbiAgICAgICAgICB2YWx1ZT17Zm9ybWlrLnZhbHVlcy5uZXdfYXR0ZW5kZWVfZW1haWx9XG4gICAgICAgICAgb25DaGFuZ2U9e2Zvcm1pay5oYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgb25CbHVyPXtmb3JtaWsuaGFuZGxlQmx1cn1cbiAgICAgICAgICBlcnJvcj17XG4gICAgICAgICAgICBmb3JtaWsudG91Y2hlZC5uZXdfYXR0ZW5kZWVfZW1haWwgJiZcbiAgICAgICAgICAgIEJvb2xlYW4oZm9ybWlrLmVycm9ycy5uZXdfYXR0ZW5kZWVfZW1haWwpXG4gICAgICAgICAgfVxuICAgICAgICAgIGhlbHBlclRleHQ9e1xuICAgICAgICAgICAgZm9ybWlrLnRvdWNoZWQubmV3X2F0dGVuZGVlX2VtYWlsICYmXG4gICAgICAgICAgICBmb3JtaWsuZXJyb3JzLm5ld19hdHRlbmRlZV9lbWFpbFxuICAgICAgICAgIH1cbiAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAvPlxuICAgICAgICA8VGV4dEZpZWxkXG4gICAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgICAgbmFtZT1cInBlcnNvbmFsX21lc3NhZ2VcIlxuICAgICAgICAgIGxhYmVsPXt0KFwidGlja2V0X2Fzc2lnbi5yZWFzc2lnbl9mb3JtLnBlcnNvbmFsX21lc3NhZ2VcIil9XG4gICAgICAgICAgdmFsdWU9e2Zvcm1pay52YWx1ZXMucGVyc29uYWxfbWVzc2FnZX1cbiAgICAgICAgICBtYXJnaW49XCJub3JtYWxcIlxuICAgICAgICAgIG11bHRpbGluZVxuICAgICAgICAgIG1pblJvd3M9ezR9XG4gICAgICAgICAgb25DaGFuZ2U9e2Zvcm1pay5oYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgb25CbHVyPXtmb3JtaWsuaGFuZGxlQmx1cn1cbiAgICAgICAgICBlcnJvcj17XG4gICAgICAgICAgICBmb3JtaWsudG91Y2hlZC5wZXJzb25hbF9tZXNzYWdlICYmXG4gICAgICAgICAgICBCb29sZWFuKGZvcm1pay5lcnJvcnMucGVyc29uYWxfbWVzc2FnZSlcbiAgICAgICAgICB9XG4gICAgICAgICAgaGVscGVyVGV4dD17XG4gICAgICAgICAgICBmb3JtaWsudG91Y2hlZC5wZXJzb25hbF9tZXNzYWdlICYmIGZvcm1pay5lcnJvcnMucGVyc29uYWxfbWVzc2FnZVxuICAgICAgICAgIH1cbiAgICAgICAgLz5cbiAgICAgICAgPEZvcm1Gb290ZXJcbiAgICAgICAgICBzYXZlTGFiZWw9e3QoXCJ0aWNrZXRfYXNzaWduLnJlYXNzaWduX2Zvcm0uc2F2ZVwiKX1cbiAgICAgICAgICBjYW5jZWxMYWJlbD17dChcInRpY2tldF9hc3NpZ24ucmVhc3NpZ25fZm9ybS5jYW5jZWxcIil9XG4gICAgICAgICAgb25DbG9zZT17aGFuZGxlQ2FuY2VsfVxuICAgICAgICAgIGRpc2FibGVkPXtmb3JtaWsuaXNTdWJtaXR0aW5nfVxuICAgICAgICAvPlxuICAgICAgPC9mb3JtPlxuICAgIDwvPlxuICApO1xufTtcblxuUmVhc3NpZ25Gb3JtLnByb3BUeXBlcyA9IHtcbiAgb25TdWJtaXQ6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIG9uQ2xvc2U6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWRcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFJlYXNzaWduRm9ybTtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VDb250ZXh0LCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2gsIHVzZVNlbGVjdG9yIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCb3ggfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHtcbiAgYXNzaWduQXR0ZW5kZWUsXG4gIGRlbGVnYXRlVGlja2V0LFxuICByZWFzc2lnblRpY2tldCxcbiAgc2F2ZUV4dHJhUXVlc3Rpb25zLFxuICB1bmFzc2lnblRpY2tldFxufSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuaW1wb3J0IFJpZ2h0RHJhd2VyIGZyb20gXCIuLi9SaWdodERyYXdlclwiO1xuaW1wb3J0IFRpY2tldEZvcm0gZnJvbSBcIi4uL1RpY2tldERldGFpbC9jb21wb25lbnRzL1RpY2tldEZvcm1cIjtcbmltcG9ydCBDdXN0b21Ob3RpZmljYXRpb25Db250ZXh0IGZyb20gXCIuLi9DdXN0b21Ob3RpZmljYXRpb24vQ29udGV4dFwiO1xuaW1wb3J0IHsgdHJhbnNmb3JtQW53ZXJzRm9ybWF0IH0gZnJvbSBcIi4uL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvdXRpbHNcIjtcbmltcG9ydCB1c2VHZXRUaWNrZXQgZnJvbSBcIi4uLy4uL2hvb2tzL3VzZUdldFRpY2tldFwiO1xuaW1wb3J0IEFzc2lnbkhlYWRlciBmcm9tIFwiLi9jb21wb25lbnRzL0hlYWRlci9Bc3NpZ25IZWFkZXJcIjtcbmltcG9ydCBSZWFzc2lnbkhlYWRlciBmcm9tIFwiLi9jb21wb25lbnRzL0hlYWRlci9SZWFzc2lnbkhlYWRlclwiO1xuaW1wb3J0IEFzc2lnbk9wdGlvbnMgZnJvbSBcIi4vY29tcG9uZW50cy9Bc3NpZ25PcHRpb25zXCI7XG5pbXBvcnQgeyBUSUNLRVRfRFJBV0VSX0lEIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2NvbnN0YW50c1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBUaWNrZXRBc3NpZ24gPSAoeyB0aWNrZXRJZCwgb3JkZXJJZCwgb3duZXJJZCwgb3Blbiwgb25DbG9zZSB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuICBjb25zdCB7IHN1Y2Nlc3NNZXNzYWdlLCBlcnJvck1lc3NhZ2UgfSA9IHVzZUNvbnRleHQoXG4gICAgQ3VzdG9tTm90aWZpY2F0aW9uQ29udGV4dFxuICApO1xuICBjb25zdCBbYXNzaWduT3B0aW9uLCBzZXRBc3NpZ25PcHRpb25dID0gdXNlU3RhdGUobnVsbCk7XG4gIGNvbnN0IFthc3NpZ25hdGlvbkluUHJvZ3Jlc3MsIHNldEFzc2lnbmF0aW9uSW5Qcm9ncmVzc10gPSB1c2VTdGF0ZShcIlwiKTtcbiAgY29uc3Qge1xuICAgIHN1bW1pdCxcbiAgICB1c2VyOiB7IHVzZXJQcm9maWxlIH1cbiAgfSA9IHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUpO1xuICBjb25zdCB7IHRpY2tldCwgZXh0cmFRdWVzdGlvbnMgfSA9IHVzZUdldFRpY2tldChcbiAgICB0aWNrZXRJZCxcbiAgICBvcmRlcklkLFxuICAgIG93bmVySWQsXG4gICAgb3BlblxuICApO1xuICBjb25zdCBpc1VzZXJPcmRlck93bmVyID0gdGlja2V0Py5vcmRlcj8ub3duZXJfaWQgPT09IHVzZXJQcm9maWxlPy5pZDtcbiAgY29uc3QgaXNVc2VyVGlja2V0T3duZXIgPSB0aWNrZXQ/Lm93bmVyPy5lbWFpbCA9PT0gdXNlclByb2ZpbGU/LmVtYWlsO1xuICBjb25zdCBjYW5FZGl0VGlja2V0RGF0YSA9XG4gICAgKGlzVXNlclRpY2tldE93bmVyIHx8IGlzVXNlck9yZGVyT3duZXIpICYmXG4gICAgc3VtbWl0LmFsbG93X3VwZGF0ZV9hdHRlbmRlZV9leHRyYV9xdWVzdGlvbnM7XG5cbiAgY29uc3Qgb25DbG9zZUVRRm9ybSA9ICgpID0+IHtcbiAgICBzZXRBc3NpZ25hdGlvbkluUHJvZ3Jlc3MoXCJcIik7XG4gICAgb25DbG9zZSgpO1xuICB9O1xuXG4gIGNvbnN0IG9uQXNzaWduID0gKGVtYWlsLCBtZXNzYWdlID0gXCJcIikgPT4ge1xuICAgIGlmIChvd25lcklkKSB7XG4gICAgICBkaXNwYXRjaChyZWFzc2lnblRpY2tldChvcmRlcklkLCB0aWNrZXRJZCwgZW1haWwsIG1lc3NhZ2UpKS50aGVuKCgpID0+IHtcbiAgICAgICAgc2V0QXNzaWduYXRpb25JblByb2dyZXNzKGAke2Fzc2lnbk9wdGlvbn1gKTtcbiAgICAgICAgc2V0QXNzaWduT3B0aW9uKG51bGwpO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRpc3BhdGNoKGFzc2lnbkF0dGVuZGVlKG9yZGVySWQsIHRpY2tldElkLCBlbWFpbCkpLnRoZW4oKCkgPT4ge1xuICAgICAgICBzZXRBc3NpZ25hdGlvbkluUHJvZ3Jlc3MoYCR7YXNzaWduT3B0aW9ufWApO1xuICAgICAgICBzZXRBc3NpZ25PcHRpb24obnVsbCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3Qgb25VbkFzc2lnbiA9ICgpID0+IHtcbiAgICBkaXNwYXRjaCh1bmFzc2lnblRpY2tldChvcmRlcklkLCB0aWNrZXRJZCkpLnRoZW4oKCkgPT4ge1xuICAgICAgb25DbG9zZUVRRm9ybSgpO1xuICAgIH0pO1xuICB9O1xuXG4gIGNvbnN0IG9uRGVsZWdhdGUgPSAoZmlyc3ROYW1lLCBsYXN0TmFtZSwgZW1haWwpID0+IHtcbiAgICBkaXNwYXRjaChcbiAgICAgIGRlbGVnYXRlVGlja2V0KG9yZGVySWQsIHRpY2tldElkLCBmaXJzdE5hbWUsIGxhc3ROYW1lLCBlbWFpbClcbiAgICApLnRoZW4oKCkgPT4ge1xuICAgICAgc2V0QXNzaWduYXRpb25JblByb2dyZXNzKGAke2Fzc2lnbk9wdGlvbn1gKTtcbiAgICAgIHNldEFzc2lnbk9wdGlvbihudWxsKTtcbiAgICB9KTtcbiAgfTtcblxuICBjb25zdCBvblNhdmVFUSA9ICh2YWwpID0+IHtcbiAgICBjb25zdCBhbnN3ZXJzID0gdHJhbnNmb3JtQW53ZXJzRm9ybWF0KHZhbCk7XG5cbiAgICByZXR1cm4gZGlzcGF0Y2goc2F2ZUV4dHJhUXVlc3Rpb25zKHRpY2tldCwgYW5zd2VycykpXG4gICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgIG9uQ2xvc2VFUUZvcm0oKTtcbiAgICAgICAgc3VjY2Vzc01lc3NhZ2UodChcInRpY2tldF9hc3NpZ24uc2F2aW5nX3N1Y2Nlc3NcIikpO1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKCgpID0+IHtcbiAgICAgICAgZXJyb3JNZXNzYWdlKHQoXCJ0aWNrZXRfYXNzaWduLnNhdmluZ19lcnJvclwiKSk7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCgpO1xuICAgICAgfSk7XG4gIH07XG5cbiAgY29uc3QgdGl0bGUgPSBvd25lcklkXG4gICAgPyB0KFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfcmVhc3NpZ24udGl0bGVcIilcbiAgICA6IHQoXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9hc3NpZ24udGl0bGVcIik7XG4gIGNvbnN0IEhlYWRlciA9IG93bmVySWQgPyBSZWFzc2lnbkhlYWRlciA6IEFzc2lnbkhlYWRlcjtcblxuICByZXR1cm4gKFxuICAgIDxSaWdodERyYXdlclxuICAgICAgaWQ9e1RJQ0tFVF9EUkFXRVJfSUR9XG4gICAgICB0aXRsZT17dGl0bGV9XG4gICAgICBvcGVuPXtvcGVufVxuICAgICAgb25DbG9zZT17b25DbG9zZUVRRm9ybX1cbiAgICA+XG4gICAgICB7dGlja2V0ICYmIGV4dHJhUXVlc3Rpb25zICYmIChcbiAgICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRSZWFzc2lnbkNvbnRhaW5lcn0+XG4gICAgICAgICAgPEhlYWRlclxuICAgICAgICAgICAgaW5Qcm9ncmVzcz17YXNzaWduYXRpb25JblByb2dyZXNzfVxuICAgICAgICAgICAgdGlja2V0PXt0aWNrZXR9XG4gICAgICAgICAgICB1c2VyRW1haWw9e3VzZXJQcm9maWxlLmVtYWlsfVxuICAgICAgICAgICAgb25DbG9zZT17b25DbG9zZUVRRm9ybX1cbiAgICAgICAgICAvPlxuXG4gICAgICAgICAge2Fzc2lnbmF0aW9uSW5Qcm9ncmVzcyA/IChcbiAgICAgICAgICAgIDxUaWNrZXRGb3JtXG4gICAgICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICAgICAgZXh0cmFRdWVzdGlvbnM9e2V4dHJhUXVlc3Rpb25zfVxuICAgICAgICAgICAgICBjYW5FZGl0PXtjYW5FZGl0VGlja2V0RGF0YX1cbiAgICAgICAgICAgICAgb25TdWJtaXQ9e29uU2F2ZUVRfVxuICAgICAgICAgICAgICBvbkNsb3NlPXtvbkNsb3NlRVFGb3JtfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApIDogKFxuICAgICAgICAgICAgPEFzc2lnbk9wdGlvbnNcbiAgICAgICAgICAgICAgdGlja2V0PXt0aWNrZXR9XG4gICAgICAgICAgICAgIHVzZXJQcm9maWxlPXt1c2VyUHJvZmlsZX1cbiAgICAgICAgICAgICAgYXNzaWduT3B0aW9uPXthc3NpZ25PcHRpb259XG4gICAgICAgICAgICAgIHNldEFzc2lnbk9wdGlvbj17c2V0QXNzaWduT3B0aW9ufVxuICAgICAgICAgICAgICBvbkFzc2lnbj17b25Bc3NpZ259XG4gICAgICAgICAgICAgIG9uVW5Bc3NpZ249e29uVW5Bc3NpZ259XG4gICAgICAgICAgICAgIG9uRGVsZWdhdGU9e29uRGVsZWdhdGV9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvQm94PlxuICAgICAgKX1cbiAgICA8L1JpZ2h0RHJhd2VyPlxuICApO1xufTtcblxuVGlja2V0QXNzaWduLnByb3BUeXBlcyA9IHtcbiAgdGlja2V0SWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gIG9yZGVySWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gIG93bmVySWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gIG9wZW46IFByb3BUeXBlcy5ib29sLFxuICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgVGlja2V0QXNzaWduO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgVGV4dEZpZWxkLCBBdXRvY29tcGxldGUsIFR5cG9ncmFwaHkgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgcXVlcnlSZWdpc3RyYXRpb25Db21wYW5pZXMgfSBmcm9tIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9xdWVyeS1hY3Rpb25zXCI7XG5pbXBvcnQgeyBUSUNLRVRfQVRURU5ERUVfS0VZUyB9IGZyb20gXCIuLi8uLi9jb25zdGFudHNcIjtcblxuY29uc3QgQ29tcGFueUZpZWxkID0gKHsgZm9ybWlrLCBzdW1taXRJZCwgaXNSZXF1aXJlZCB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgW2lucHV0VmFsdWUsIHNldElucHV0VmFsdWVdID0gUmVhY3QudXNlU3RhdGUoXCJcIik7XG4gIGNvbnN0IFtvcHRpb25zLCBzZXRPcHRpb25zXSA9IFJlYWN0LnVzZVN0YXRlKFtdKTtcbiAgY29uc3Qge1xuICAgIGVycm9ycyxcbiAgICB2YWx1ZXMsXG4gICAgdG91Y2hlZCxcbiAgICBzZXRGaWVsZFRvdWNoZWQsXG4gICAgc2V0RmllbGRWYWx1ZSxcbiAgICBpbml0aWFsVmFsdWVzXG4gIH0gPSBmb3JtaWs7XG4gIGNvbnN0IG5hbWUgPSBUSUNLRVRfQVRURU5ERUVfS0VZUy5jb21wYW55O1xuICBjb25zdCB2YWx1ZSA9IHZhbHVlc1tuYW1lXTtcbiAgY29uc3QgZGlzYWJsZWQgPSAhIWluaXRpYWxWYWx1ZXNbbmFtZV07XG4gIGNvbnN0IGVycm9yID0gdG91Y2hlZFtuYW1lXSAmJiBCb29sZWFuKGVycm9yc1tuYW1lXSk7XG4gIGNvbnN0IGhlbHBlclRleHQgPSB0b3VjaGVkW25hbWVdICYmIGVycm9yc1tuYW1lXTtcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChpbnB1dFZhbHVlID09PSBcIlwiKSB7XG4gICAgICBzZXRPcHRpb25zKHZhbHVlID8gW3ZhbHVlXSA6IFtdKTtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcXVlcnlSZWdpc3RyYXRpb25Db21wYW5pZXMoc3VtbWl0SWQsIGlucHV0VmFsdWUsIChyZXN1bHRzKSA9PiB7XG4gICAgICBsZXQgbmV3T3B0aW9ucyA9IFtdO1xuXG4gICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgbmV3T3B0aW9ucyA9IFt2YWx1ZV07XG4gICAgICB9XG5cbiAgICAgIGlmIChyZXN1bHRzKSB7XG4gICAgICAgIG5ld09wdGlvbnMgPSBbLi4ubmV3T3B0aW9ucywgLi4ucmVzdWx0c107XG4gICAgICB9XG5cbiAgICAgIHNldE9wdGlvbnMobmV3T3B0aW9ucyk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfSwgW3ZhbHVlLCBpbnB1dFZhbHVlXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8QXV0b2NvbXBsZXRlXG4gICAgICBuYW1lPXtuYW1lfVxuICAgICAgb3B0aW9ucz17b3B0aW9uc31cbiAgICAgIGF1dG9Db21wbGV0ZVxuICAgICAgZnJlZVNvbG9cbiAgICAgIGluY2x1ZGVJbnB1dEluTGlzdFxuICAgICAgZmlsdGVyU2VsZWN0ZWRPcHRpb25zXG4gICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICB2YWx1ZT17dmFsdWV9XG4gICAgICBvbkJsdXI9eygpID0+IHNldEZpZWxkVG91Y2hlZChuYW1lLCB0cnVlLCB0cnVlKX1cbiAgICAgIGdldE9wdGlvbkxhYmVsPXsob3B0aW9uKSA9PiB7XG4gICAgICAgIC8vIFZhbHVlIHNlbGVjdGVkIHdpdGggZW50ZXIsIHJpZ2h0IGZyb20gdGhlIGlucHV0XG4gICAgICAgIGlmICh0eXBlb2Ygb3B0aW9uID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgcmV0dXJuIG9wdGlvbjtcbiAgICAgICAgfVxuICAgICAgICAvLyBBZGQgXCJ4eHhcIiBvcHRpb24gY3JlYXRlZCBkeW5hbWljYWxseVxuICAgICAgICBpZiAob3B0aW9uLmlucHV0VmFsdWUpIHtcbiAgICAgICAgICByZXR1cm4gb3B0aW9uLmlucHV0VmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgLy8gUmVndWxhciBvcHRpb25cbiAgICAgICAgcmV0dXJuIG9wdGlvbi5uYW1lO1xuICAgICAgfX1cbiAgICAgIG9uQ2hhbmdlPXsoZXZlbnQsIG5ld1ZhbHVlKSA9PiB7XG4gICAgICAgIGNvbnN0IHRtcFZhbHVlID0gbmV3VmFsdWU/LmlucHV0VmFsdWUgfHwgbmV3VmFsdWU7XG5cbiAgICAgICAgc2V0T3B0aW9ucyh0bXBWYWx1ZSA/IFt0bXBWYWx1ZSwgLi4ub3B0aW9uc10gOiBvcHRpb25zKTtcbiAgICAgICAgc2V0RmllbGRWYWx1ZShuYW1lLCB0bXBWYWx1ZSk7XG4gICAgICB9fVxuICAgICAgb25JbnB1dENoYW5nZT17KGV2ZW50LCBuZXdJbnB1dFZhbHVlKSA9PiB7XG4gICAgICAgIHNldElucHV0VmFsdWUobmV3SW5wdXRWYWx1ZSk7XG4gICAgICB9fVxuICAgICAgZmlsdGVyT3B0aW9ucz17KG9wdGlvbnMsIHBhcmFtcykgPT4ge1xuICAgICAgICBjb25zdCB7IGlucHV0VmFsdWUgfSA9IHBhcmFtcztcbiAgICAgICAgY29uc3QgZmlsdGVyZWQgPSBbLi4ub3B0aW9uc107XG4gICAgICAgIC8vIFN1Z2dlc3QgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHZhbHVlXG4gICAgICAgIGNvbnN0IGlzRXhpc3RpbmcgPSBvcHRpb25zLnNvbWUoKG9wdGlvbikgPT4gaW5wdXRWYWx1ZSA9PT0gb3B0aW9uLm5hbWUpO1xuICAgICAgICBpZiAoaW5wdXRWYWx1ZSAhPT0gXCJcIiAmJiAhaXNFeGlzdGluZykge1xuICAgICAgICAgIGZpbHRlcmVkLnB1c2goe1xuICAgICAgICAgICAgaW5wdXRWYWx1ZSxcbiAgICAgICAgICAgIG5hbWU6IGBTZWxlY3QgXCIke2lucHV0VmFsdWV9XCJgXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmlsdGVyZWQ7XG4gICAgICB9fVxuICAgICAgcmVuZGVySW5wdXQ9eyhwYXJhbXMpID0+IChcbiAgICAgICAgPFRleHRGaWVsZFxuICAgICAgICAgIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nICovXG4gICAgICAgICAgey4uLnBhcmFtc31cbiAgICAgICAgICBsYWJlbD17dChcInRpY2tldF9kZXRhaWwuYXR0ZW5kZWVfY29tcGFueVwiKX1cbiAgICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgICByZXF1aXJlZD17aXNSZXF1aXJlZH1cbiAgICAgICAgICBoZWxwZXJUZXh0PXtoZWxwZXJUZXh0fVxuICAgICAgICAgIGVycm9yPXtlcnJvcn1cbiAgICAgICAgICBtYXJnaW49XCJub3JtYWxcIlxuICAgICAgICAvPlxuICAgICAgKX1cbiAgICAgIHJlbmRlck9wdGlvbj17KHByb3BzLCBvcHRpb24pID0+IHtcbiAgICAgICAgY29uc3QgeyBrZXksIC4uLm9wdGlvblByb3BzIH0gPSBwcm9wcztcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvanN4LXByb3BzLW5vLXNwcmVhZGluZ1xuICAgICAgICAgIDxsaSBrZXk9e2tleX0gey4uLm9wdGlvblByb3BzfT5cbiAgICAgICAgICAgIDxUeXBvZ3JhcGh5XG4gICAgICAgICAgICAgIHZhcmlhbnQ9XCJib2R5MlwiXG4gICAgICAgICAgICAgIHN4PXt7IGZvbnRTaXplOiBcIjFlbVwiLCBjb2xvcjogXCJ0ZXh0LnNlY29uZGFyeVwiIH19XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHtvcHRpb24ubmFtZX1cbiAgICAgICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgICA8L2xpPlxuICAgICAgICApO1xuICAgICAgfX1cbiAgICAvPlxuICApO1xufTtcblxuQ29tcGFueUZpZWxkLnByb3BUeXBlcyA9IHtcbiAgZm9ybWlrOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHN1bW1pdElkOiBQcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWRcbn07XG5cbmV4cG9ydCBkZWZhdWx0IENvbXBhbnlGaWVsZDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIEJveCxcbiAgQ2hlY2tib3gsXG4gIEZvcm1Db250cm9sLFxuICBGb3JtQ29udHJvbExhYmVsLFxuICBGb3JtSGVscGVyVGV4dFxufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IFJhd0hUTUwgZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvY29tcG9uZW50cy9yYXctaHRtbFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgVElDS0VUX0FUVEVOREVFX0tFWVMgfSBmcm9tIFwiLi4vLi4vY29uc3RhbnRzXCI7XG5cbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgUmVnaXN0cmF0aW9uRGlzY2xhaW1lciA9ICh7XG4gIGRpc2NsYWltZXIsXG4gIGZvcm1payxcbiAgaXNEaXNhYmxlZCA9IGZhbHNlLFxuICBpc1JlcXVpcmVkID0gdHJ1ZVxufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IG5hbWUgPSBUSUNLRVRfQVRURU5ERUVfS0VZUy5kaXNjbGFpbWVyQWNjZXB0ZWQ7XG4gIGNvbnN0IHsgZXJyb3JzLCB2YWx1ZXMsIHRvdWNoZWQsIGhhbmRsZUNoYW5nZSwgaGFuZGxlQmx1ciB9ID0gZm9ybWlrO1xuICBjb25zdCB2YWx1ZSA9IHZhbHVlc1tuYW1lXTtcbiAgY29uc3QgZXJyb3IgPSB0b3VjaGVkW25hbWVdICYmIEJvb2xlYW4oZXJyb3JzW25hbWVdKTtcbiAgY29uc3QgaGVscGVyVGV4dCA9IHRvdWNoZWRbbmFtZV0gJiYgZXJyb3JzW25hbWVdO1xuXG4gIHJldHVybiAoXG4gICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy53cmFwcGVyfT5cbiAgICAgIDxSYXdIVE1MPntkaXNjbGFpbWVyfTwvUmF3SFRNTD5cbiAgICAgIDxGb3JtQ29udHJvbCBmdWxsV2lkdGggZXJyb3I9e2Vycm9yfT5cbiAgICAgICAgPEZvcm1Db250cm9sTGFiZWxcbiAgICAgICAgICBjb250cm9sPXtcbiAgICAgICAgICAgIDxDaGVja2JveFxuICAgICAgICAgICAgICBuYW1lPXtuYW1lfVxuICAgICAgICAgICAgICBjaGVja2VkPXshIXZhbHVlfVxuICAgICAgICAgICAgICBsYWJlbD17dChcInRpY2tldF9hc3NpZ24uZXh0cmFfcXVlc3Rpb25zX2Zvcm0uZGlzY2xhaW1lcl9sYWJlbFwiKX1cbiAgICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX1cbiAgICAgICAgICAgICAgb25CbHVyPXtoYW5kbGVCbHVyfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICB9XG4gICAgICAgICAgbGFiZWw9e3QoXCJ0aWNrZXRfYXNzaWduLmV4dHJhX3F1ZXN0aW9uc19mb3JtLmRpc2NsYWltZXJfbGFiZWxcIil9XG4gICAgICAgICAgZGlzYWJsZWQ9e2lzRGlzYWJsZWR9XG4gICAgICAgICAgcmVxdWlyZWQ9e2lzUmVxdWlyZWR9XG4gICAgICAgIC8+XG4gICAgICAgIHtlcnJvciAmJiA8Rm9ybUhlbHBlclRleHQ+e2hlbHBlclRleHQgPz8gXCIgXCJ9PC9Gb3JtSGVscGVyVGV4dD59XG4gICAgICA8L0Zvcm1Db250cm9sPlxuICAgIDwvQm94PlxuICApO1xufTtcblxuUmVnaXN0cmF0aW9uRGlzY2xhaW1lci5wcm9wVHlwZXMgPSB7XG4gIGRpc2NsYWltZXI6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgZm9ybWlrOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIGlzRGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICBpc1JlcXVpcmVkOiBQcm9wVHlwZXMuYm9vbFxufTtcblxuZXhwb3J0IGRlZmF1bHQgUmVnaXN0cmF0aW9uRGlzY2xhaW1lcjtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2ggfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCBRUkNvZGUgZnJvbSBcInJlYWN0LXFyLWNvZGVcIjtcbmltcG9ydCB7IEJveCwgQnV0dG9uLCBUeXBvZ3JhcGh5IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7XG4gIEVtYWlsT3V0bGluZWQgYXMgRW1haWxJY29uLFxuICBGaWxlRG93bmxvYWRPdXRsaW5lZCBhcyBEb3dubG9hZEljb25cbn0gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWxcIjtcbmltcG9ydCBDb3B5VGV4dCBmcm9tIFwiLi4vLi4vLi4vQ29weVRleHRcIjtcbmltcG9ydCB7IHVzZVRpY2tldERldGFpbHMgfSBmcm9tIFwiLi4vLi4vLi4vLi4vaG9va3MvdXNlVGlja2V0RGV0YWlsc1wiO1xuaW1wb3J0IHsgZ2V0VGlja2V0UERGLCByZXNlbmROb3RpZmljYXRpb24gfSBmcm9tIFwiLi4vLi4vLi4vLi4vYWN0aW9uc1wiO1xuaW1wb3J0IHsgTUlMTElTRUNfVE9fU0VDLCBUV09fSVRFTSB9IGZyb20gXCIuLi8uLi8uLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi4vLi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IFRpY2tldERldGFpbEhlYWRlciA9ICh7IHRpY2tldCwgaXNWaXJ0dWFsU3VtbWl0IH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCB7IGlzQ29tcGxldGUgfSA9IHVzZVRpY2tldERldGFpbHModGlja2V0KTtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuICBjb25zdCBbc2VudENvbmZpcm1hdGlvbiwgc2V0U2VudENvbmZpcm1hdGlvbl0gPSB1c2VTdGF0ZShmYWxzZSk7XG5cbiAgY29uc3QgZG93bmxvYWRUaWNrZXRQZGYgPSAoKSA9PiB7XG4gICAgZGlzcGF0Y2goZ2V0VGlja2V0UERGKHRpY2tldCkpO1xuICB9O1xuXG4gIGNvbnN0IG9uU2VuZEVtYWlsID0gKCkgPT4ge1xuICAgIGRpc3BhdGNoKHJlc2VuZE5vdGlmaWNhdGlvbih0aWNrZXQpKS50aGVuKCgpID0+IHtcbiAgICAgIHNldFNlbnRDb25maXJtYXRpb24odHJ1ZSk7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgc2V0U2VudENvbmZpcm1hdGlvbihmYWxzZSk7XG4gICAgICB9LCBNSUxMSVNFQ19UT19TRUMgKiBUV09fSVRFTSk7XG4gICAgfSk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmhlYWRlcn0+XG4gICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiaDRcIiBndXR0ZXJCb3R0b20gY2xhc3NOYW1lPXtzdHlsZXMudGl0bGV9PlxuICAgICAgICB7dGlja2V0Py50aWNrZXRfdHlwZT8ubmFtZX1cbiAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJib2R5MlwiIGd1dHRlckJvdHRvbSBjbGFzc05hbWU9e3N0eWxlcy5zdWJ0aXRsZX0+XG4gICAgICAgIHt0KFwidGlja2V0X2RldGFpbC5wdXJjaGFzZWRfYnlcIil9IHt0aWNrZXQ/Lm9yZGVyPy5vd25lcl9lbWFpbH1cbiAgICAgIDwvVHlwb2dyYXBoeT5cblxuICAgICAge2lzQ29tcGxldGUgJiYgKFxuICAgICAgICA8PlxuICAgICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMucXJDb2RlfT5cbiAgICAgICAgICAgIDxRUkNvZGVcbiAgICAgICAgICAgICAgc2l6ZT17MjU2fVxuICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgIGhlaWdodDogXCJhdXRvXCIsXG4gICAgICAgICAgICAgICAgbWF4V2lkdGg6IFwiMTAwJVwiLFxuICAgICAgICAgICAgICAgIHdpZHRoOiBcIjEwMCVcIlxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICB2YWx1ZT17dGlja2V0LnFyX2NvZGV9XG4gICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjU2IDI1NlwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvQm94PlxuICAgICAgICAgIDxwIGNsYXNzTmFtZT17c3R5bGVzLnN0YXR1c30+e3QoXCJ0aWNrZXRfZGV0YWlsLnN0YXR1c1wiKX08L3A+XG4gICAgICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImJvZHkyXCIgZ3V0dGVyQm90dG9tIGNsYXNzTmFtZT17c3R5bGVzLnFyTm90ZX0+XG4gICAgICAgICAgICB7dChcInRpY2tldF9kZXRhaWwucXJfbm90ZVwiKX1cbiAgICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICAgIDwvPlxuICAgICAgKX1cblxuICAgICAgeyFpc1ZpcnR1YWxTdW1taXQgJiYgaXNDb21wbGV0ZSAmJiAoXG4gICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuYWN0aW9uQnV0dG9uc0NvbnRhaW5lcn0+XG4gICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuZG93bmxvYWRCdG59XG4gICAgICAgICAgICB2YXJpYW50PVwiY29udGFpbmVkXCJcbiAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgICBvbkNsaWNrPXtkb3dubG9hZFRpY2tldFBkZn1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8RG93bmxvYWRJY29uIGZvbnRTaXplPVwibGFyZ2VcIiAvPlxuICAgICAgICAgICAge3QoXCJ0aWNrZXRfZGV0YWlsLmRvd25sb2FkXCIpfVxuICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLnNlbmRCdG59ICR7c2VudENvbmZpcm1hdGlvbiAmJiBzdHlsZXMuc2VudH1gfVxuICAgICAgICAgICAgb25DbGljaz17b25TZW5kRW1haWx9XG4gICAgICAgICAgICBkaXNhYmxlZD17c2VudENvbmZpcm1hdGlvbn1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8RW1haWxJY29uIGZvbnRTaXplPVwibGFyZ2VcIiAvPlxuICAgICAgICAgICAge3NlbnRDb25maXJtYXRpb25cbiAgICAgICAgICAgICAgPyB0KFwidGlja2V0X2RldGFpbC5zZW50XCIpXG4gICAgICAgICAgICAgIDogdChcInRpY2tldF9kZXRhaWwuc2VuZFwiKX1cbiAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgPC9Cb3g+XG4gICAgICApfVxuXG4gICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyTnVtYmVyfT5cbiAgICAgICAgPENvcHlUZXh0XG4gICAgICAgICAgdGV4dD17dGlja2V0Py5vcmRlcj8ubnVtYmVyfVxuICAgICAgICAgIHJldmVyc2VkXG4gICAgICAgICAgd2lkdGg9ezE1MH1cbiAgICAgICAgICB0b29sdGlwVGV4dD17dChcIm9yZGVyX3N1bW1hcnkuY29weV9vcmRlcl9udW1iZXJcIil9XG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFRpY2tldERldGFpbEhlYWRlcjtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTcgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEJveCwgVHlwb2dyYXBoeSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VGb3JtaWsgfSBmcm9tIFwiZm9ybWlrXCI7XG5pbXBvcnQgRXh0cmFRdWVzdGlvbnNGaWVsZHMgZnJvbSBcIi4uLy4uLy4uL0V4dHJhUXVlc3Rpb25zRmllbGRzXCI7XG5cbmltcG9ydCB7XG4gIGdldFR5cGVWYWx1ZSxcbiAgdG9TbHVnXG59IGZyb20gXCIuLi8uLi8uLi9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb21wb25lbnRzL3V0aWxzXCI7XG5cbmltcG9ydCBUaWNrZXRPd25lckZpZWxkcyBmcm9tIFwiLi4vVGlja2V0T3duZXJGaWVsZHNcIjtcbmltcG9ydCBSZWdpc3RyYXRpb25EaXNjbGFpbWVyIGZyb20gXCIuLi9SZWdpc3RyYXRpb25EaXNjbGFpbWVyL1JlZ2lzdHJhdGlvbkRpc2NsYWltZXJcIjtcbmltcG9ydCBGb3JtRm9vdGVyIGZyb20gXCIuLi8uLi8uLi9Gb3JtRm9vdGVyXCI7XG5pbXBvcnQgdXNlU2Nyb2xsVG9FcnJvciBmcm9tIFwiLi4vLi4vLi4vLi4vaG9va3MvdXNlU2Nyb2xsVG9FcnJvclwiO1xuaW1wb3J0IHtcbiAgcGFyc2VBbnN3ZXJzLFxuICBidWlsZFZhbGlkYXRpb25TY2hlbWFcbn0gZnJvbSBcIi4uLy4uLy4uLy4uL3V0aWxzL3RpY2tldFV0aWxzXCI7XG5cbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi4vLi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IFRpY2tldEZvcm0gPSAoe1xuICB0aWNrZXQsXG4gIGV4dHJhUXVlc3Rpb25zLFxuICBzdW1taXQsXG4gIGNhbkVkaXQsXG4gIG9uU3VibWl0LFxuICBvbkNsb3NlXG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgYW5zd2VycyA9IHRpY2tldD8ub3duZXI/LmV4dHJhX3F1ZXN0aW9ucy5yZWR1Y2UoKHJlcywgYW5zKSA9PiB7XG4gICAgY29uc3QgcXVlc3Rpb25TbHVnID0gdG9TbHVnKGFucy5xdWVzdGlvbi5uYW1lLCBhbnMucXVlc3Rpb24uaWQpO1xuICAgIHJlc1txdWVzdGlvblNsdWddID0gZ2V0VHlwZVZhbHVlKGFucy52YWx1ZSwgYW5zLnF1ZXN0aW9uLnR5cGUpO1xuICAgIHJldHVybiByZXM7XG4gIH0sIHt9KTtcblxuICBjb25zdCBmb3JtaWsgPSB1c2VGb3JtaWsoe1xuICAgIGluaXRpYWxWYWx1ZXM6IHBhcnNlQW5zd2VycyhcbiAgICAgIHRpY2tldC5vd25lcixcbiAgICAgIGV4dHJhUXVlc3Rpb25zLFxuICAgICAgYW5zd2VycyxcbiAgICAgIHRydWUsXG4gICAgICB0cnVlXG4gICAgKSxcbiAgICB2YWxpZGF0aW9uU2NoZW1hOiBidWlsZFZhbGlkYXRpb25TY2hlbWEoXG4gICAgICBleHRyYVF1ZXN0aW9ucyxcbiAgICAgIHRydWUsXG4gICAgICBzdW1taXQucmVnaXN0cmF0aW9uX2Rpc2NsYWltZXJfbWFuZGF0b3J5XG4gICAgKSxcbiAgICBvblN1Ym1pdDogKHZhbHVlcykgPT4ge1xuICAgICAgY29uc3QgcmVsZXZhbnRBbnN3ZXJzID0gcGFyc2VBbnN3ZXJzKFxuICAgICAgICB0aWNrZXQub3duZXIsXG4gICAgICAgIGV4dHJhUXVlc3Rpb25zLFxuICAgICAgICB2YWx1ZXMsXG4gICAgICAgIHRydWUsXG4gICAgICAgIHRydWUsXG4gICAgICAgIHRydWVcbiAgICAgICk7XG5cbiAgICAgIHJldHVybiBvblN1Ym1pdChyZWxldmFudEFuc3dlcnMpO1xuICAgIH0sXG4gICAgZW5hYmxlUmVpbml0aWFsaXplOiB0cnVlXG4gIH0pO1xuXG4gIC8vIGNvbnNvbGUubG9nKFwiU1VNTUlUOiBcIiwgc3VtbWl0KTtcbiAgLy8gY29uc29sZS5sb2coXCJUSUNLRVQ6IFwiLCB0aWNrZXQpO1xuICAvLyBjb25zb2xlLmxvZyhcIlFVRVNUSVVPTnM6IFwiLCBleHRyYVF1ZXN0aW9ucyk7XG4gIC8vIGNvbnNvbGUubG9nKFwiQU5TV0VSUzogXCIsIGFuc3dlcnMpO1xuICAvLyBjb25zb2xlLmxvZyhcIkVSUk9SczogXCIsIGZvcm1pay5lcnJvcnMpO1xuICAvLyBjb25zb2xlLmxvZyhcIlZBTFVFUzogXCIsIGZvcm1pay52YWx1ZXMpO1xuICAvLyBjb25zb2xlLmxvZyhcIklOSVRJQUw6IFwiLCBmb3JtaWsuaW5pdGlhbFZhbHVlcyk7XG4gIC8vIGNvbnNvbGUubG9nKFwiVE9VQ0hFRDogXCIsIGZvcm1pay50b3VjaGVkKTtcblxuICAvLyBTQ1JPTEwgVE8gRVJST1JcbiAgdXNlU2Nyb2xsVG9FcnJvcihmb3JtaWspO1xuXG4gIHJldHVybiAoXG4gICAgPGZvcm0gb25TdWJtaXQ9e2Zvcm1pay5oYW5kbGVTdWJtaXR9IG5vVmFsaWRhdGU+XG4gICAgICA8VGlja2V0T3duZXJGaWVsZHNcbiAgICAgICAgZm9ybWlrPXtmb3JtaWt9XG4gICAgICAgIGlzRGVsZWdhdGVkPXshIXRpY2tldC5vd25lcj8ubWFuYWdlcl9pZH1cbiAgICAgICAgc3VtbWl0SWQ9e3N1bW1pdC5pZH1cbiAgICAgICAgZGlzYWJsZWQ9eyFjYW5FZGl0fVxuICAgICAgLz5cblxuICAgICAge2V4dHJhUXVlc3Rpb25zPy5sZW5ndGggPiAwICYmIChcbiAgICAgICAgPEJveD5cbiAgICAgICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiYm9keTJcIiBjbGFzc05hbWU9e3N0eWxlcy5hZGRpdGlvbmFsRGV0YWlsc30+XG4gICAgICAgICAgICB7dChcInRpY2tldF9kZXRhaWwuYWRpdGlvbmFsX2RldGFpbHNcIil9XG4gICAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgICAgIDxFeHRyYVF1ZXN0aW9uc0ZpZWxkc1xuICAgICAgICAgICAgZXh0cmFRdWVzdGlvbnM9e2V4dHJhUXVlc3Rpb25zfVxuICAgICAgICAgICAgb3JpZ2luYWxBbnN3ZXJzPXthbnN3ZXJzfVxuICAgICAgICAgICAgYWxsb3dFZGl0PXtjYW5FZGl0fVxuICAgICAgICAgICAgZm9ybWlrPXtmb3JtaWt9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9Cb3g+XG4gICAgICApfVxuXG4gICAgICB7c3VtbWl0LnJlZ2lzdHJhdGlvbl9kaXNjbGFpbWVyX2NvbnRlbnQgJiYgKFxuICAgICAgICA8UmVnaXN0cmF0aW9uRGlzY2xhaW1lclxuICAgICAgICAgIGZvcm1paz17Zm9ybWlrfVxuICAgICAgICAgIGRpc2NsYWltZXI9e3N1bW1pdC5yZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9jb250ZW50fVxuICAgICAgICAgIGlzUmVxdWlyZWQ9e3N1bW1pdC5yZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9tYW5kYXRvcnl9XG4gICAgICAgICAgaXNEaXNhYmxlZD17IWNhbkVkaXR9XG4gICAgICAgIC8+XG4gICAgICApfVxuICAgICAgPEZvcm1Gb290ZXJcbiAgICAgICAgc2F2ZUxhYmVsPXt0KFwidGlja2V0X2RldGFpbC5zYXZlXCIpfVxuICAgICAgICBjYW5jZWxMYWJlbD17dChcInRpY2tldF9kZXRhaWwuY2FuY2VsXCIpfVxuICAgICAgICBvbkNsb3NlPXtvbkNsb3NlfVxuICAgICAgICBkaXNhYmxlZD17Zm9ybWlrLmlzU3VibWl0dGluZ31cbiAgICAgIC8+XG4gICAgPC9mb3JtPlxuICApO1xufTtcblxuVGlja2V0Rm9ybS5wcm9wVHlwZXMgPSB7XG4gIHRpY2tldDogUHJvcFR5cGVzLm9iamVjdCxcbiAgZXh0cmFRdWVzdGlvbnM6IFByb3BUeXBlcy5hcnJheS5pc1JlcXVpcmVkLFxuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgY2FuRWRpdDogUHJvcFR5cGVzLmJvb2wsXG4gIG9uU3VibWl0OiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkXG59O1xuXG5leHBvcnQgZGVmYXVsdCBUaWNrZXRGb3JtO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgQm94LCBUZXh0RmllbGQsIFR5cG9ncmFwaHkgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuXG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgeyBUSUNLRVRfQVRURU5ERUVfS0VZUyB9IGZyb20gXCIuLi8uLi9jb25zdGFudHNcIjtcbmltcG9ydCBDb21wYW55RmllbGQgZnJvbSBcIi4uL0NvbXBhbnlGaWVsZFwiO1xuXG5jb25zdCBUaWNrZXRPd25lckZpZWxkcyA9ICh7IGZvcm1paywgc3VtbWl0SWQsIGRpc2FibGVkLCBpc0RlbGVnYXRlZCB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgeyBlcnJvcnMsIHZhbHVlcywgdG91Y2hlZCwgaGFuZGxlQ2hhbmdlLCBoYW5kbGVCbHVyLCBpbml0aWFsVmFsdWVzIH0gPVxuICAgIGZvcm1paztcblxuICByZXR1cm4gKFxuICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMud3JhcHBlcn0+XG4gICAgICA8VGV4dEZpZWxkXG4gICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICBuYW1lPXtUSUNLRVRfQVRURU5ERUVfS0VZUy5lbWFpbH1cbiAgICAgICAgbGFiZWw9e3QoXCJ0aWNrZXRfZGV0YWlsLmVtYWlsXCIpfVxuICAgICAgICBkaXNhYmxlZFxuICAgICAgICB2YWx1ZT17dmFsdWVzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmVtYWlsXX1cbiAgICAgICAgbWFyZ2luPVwibm9ybWFsXCJcbiAgICAgIC8+XG4gICAgICB7aXNEZWxlZ2F0ZWQgJiYgKFxuICAgICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiYm9keTFcIiBzeD17eyBmb250V2VpZ2h0OiA1MDAsIG1hcmdpbjogXCIxMHB4IDBcIiB9fT5cbiAgICAgICAgICB7dChcInRpY2tldF9kZXRhaWwubWFuYWdlX2ZvclwiKX1cbiAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgKX1cbiAgICAgIHtbVElDS0VUX0FUVEVOREVFX0tFWVMuZmlyc3ROYW1lLCBUSUNLRVRfQVRURU5ERUVfS0VZUy5sYXN0TmFtZV0ubWFwKFxuICAgICAgICAobmFtZSkgPT4gKFxuICAgICAgICAgIDxUZXh0RmllbGRcbiAgICAgICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICAgICAga2V5PXtuYW1lfVxuICAgICAgICAgICAgbmFtZT17bmFtZX1cbiAgICAgICAgICAgIGxhYmVsPXt0KGB0aWNrZXRfZGV0YWlsLiR7bmFtZX1gKX1cbiAgICAgICAgICAgIHZhbHVlPXt2YWx1ZXNbbmFtZV19XG4gICAgICAgICAgICBkaXNhYmxlZD17ZGlzYWJsZWQgfHwgaXNEZWxlZ2F0ZWQgfHwgISFpbml0aWFsVmFsdWVzW25hbWVdfVxuICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX1cbiAgICAgICAgICAgIG9uQmx1cj17aGFuZGxlQmx1cn1cbiAgICAgICAgICAgIGVycm9yPXt0b3VjaGVkW25hbWVdICYmIEJvb2xlYW4oZXJyb3JzW25hbWVdKX1cbiAgICAgICAgICAgIGhlbHBlclRleHQ9e2Zvcm1pay50b3VjaGVkW25hbWVdICYmIGZvcm1pay5lcnJvcnNbbmFtZV19XG4gICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgICAgbWFyZ2luPVwibm9ybWFsXCJcbiAgICAgICAgICAvPlxuICAgICAgICApXG4gICAgICApfVxuICAgICAgPENvbXBhbnlGaWVsZCBmb3JtaWs9e2Zvcm1pa30gc3VtbWl0SWQ9e3N1bW1pdElkfSBpc1JlcXVpcmVkIC8+XG4gICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmluZm9Ob3RlfT57dChcInRpY2tldF9kZXRhaWwuaW5mb19ub3RlXCIpfTwvQm94PlxuICAgIDwvQm94PlxuICApO1xufTtcblxuVGlja2V0T3duZXJGaWVsZHMucHJvcFR5cGVzID0ge1xuICBmb3JtaWs6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgc3VtbWl0SWQ6IFByb3BUeXBlcy5udW1iZXIuaXNSZXF1aXJlZCxcbiAgZGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICBpc0RlbGVnYXRlZDogUHJvcFR5cGVzLmJvb2xcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFRpY2tldE93bmVyRmllbGRzO1xuIiwiZXhwb3J0IGNvbnN0IFRJQ0tFVF9BVFRFTkRFRV9LRVlTID0ge1xuICBlbWFpbDogXCJhdHRlbmRlZV9lbWFpbFwiLFxuICBmaXJzdE5hbWU6IFwiYXR0ZW5kZWVfZmlyc3RfbmFtZVwiLFxuICBsYXN0TmFtZTogXCJhdHRlbmRlZV9sYXN0X25hbWVcIixcbiAgY29tcGFueTogXCJhdHRlbmRlZV9jb21wYW55XCIsXG4gIGRpc2NsYWltZXJBY2NlcHRlZDogXCJkaXNjbGFpbWVyX2FjY2VwdGVkXCJcbn07XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlQ29udGV4dCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2gsIHVzZVNlbGVjdG9yIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCb3gsIFR5cG9ncmFwaHkgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHVzZUdldFRpY2tldCBmcm9tIFwiLi4vLi4vaG9va3MvdXNlR2V0VGlja2V0XCI7XG5pbXBvcnQgeyB0cmFuc2Zvcm1BbndlcnNGb3JtYXQgfSBmcm9tIFwiLi4vRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29tcG9uZW50cy91dGlsc1wiO1xuaW1wb3J0IHsgVElDS0VUX0RSQVdFUl9JRCB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCBUaWNrZXRGb3JtIGZyb20gXCIuL2NvbXBvbmVudHMvVGlja2V0Rm9ybVwiO1xuaW1wb3J0IEN1c3RvbU5vdGlmaWNhdGlvbkNvbnRleHQgZnJvbSBcIi4uL0N1c3RvbU5vdGlmaWNhdGlvbi9Db250ZXh0XCI7XG5pbXBvcnQgeyBzYXZlVGlja2V0RGV0YWlscyB9IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5pbXBvcnQgUmlnaHREcmF3ZXIgZnJvbSBcIi4uL1JpZ2h0RHJhd2VyXCI7XG5pbXBvcnQgVGlja2V0RGV0YWlsSGVhZGVyIGZyb20gXCIuL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsSGVhZGVyXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IFRpY2tldERldGFpbCA9ICh7XG4gIHN1bW1pdCxcbiAgdGlja2V0SWQsXG4gIG9yZGVySWQsXG4gIG93bmVySWQsXG4gIG9wZW4sXG4gIG9uQ2xvc2Vcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCB7IHN1Y2Nlc3NNZXNzYWdlLCBlcnJvck1lc3NhZ2UgfSA9IHVzZUNvbnRleHQoXG4gICAgQ3VzdG9tTm90aWZpY2F0aW9uQ29udGV4dFxuICApO1xuICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG4gIGNvbnN0IHtcbiAgICB1c2VyOiB7IHVzZXJQcm9maWxlIH1cbiAgfSA9IHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUpO1xuICBjb25zdCB7IHRpY2tldCwgZXh0cmFRdWVzdGlvbnMgfSA9IHVzZUdldFRpY2tldChcbiAgICB0aWNrZXRJZCxcbiAgICBvcmRlcklkLFxuICAgIG93bmVySWQsXG4gICAgb3BlblxuICApO1xuICBjb25zdCBpc1VzZXJPcmRlck93bmVyID0gdGlja2V0Py5vcmRlcj8ub3duZXJfaWQgPT09IHVzZXJQcm9maWxlPy5pZDtcbiAgY29uc3QgaXNVc2VyVGlja2V0T3duZXIgPSB0aWNrZXQ/Lm93bmVyPy5lbWFpbCA9PT0gdXNlclByb2ZpbGU/LmVtYWlsO1xuICBjb25zdCBjYW5FZGl0VGlja2V0RGF0YSA9XG4gICAgKGlzVXNlclRpY2tldE93bmVyIHx8IGlzVXNlck9yZGVyT3duZXIpICYmXG4gICAgc3VtbWl0LmFsbG93X3VwZGF0ZV9hdHRlbmRlZV9leHRyYV9xdWVzdGlvbnM7XG5cbiAgY29uc3Qgb25TYXZlID0gKHZhbCkgPT4ge1xuICAgIGNvbnN0IGFuc3dlcnMgPSB0cmFuc2Zvcm1BbndlcnNGb3JtYXQodmFsKTtcblxuICAgIHJldHVybiBkaXNwYXRjaChzYXZlVGlja2V0RGV0YWlscyh0aWNrZXQsIGFuc3dlcnMpKVxuICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICBvbkNsb3NlKCk7XG4gICAgICAgIHN1Y2Nlc3NNZXNzYWdlKHQoXCJ0aWNrZXRfZGV0YWlsLnNhdmluZ19zdWNjZXNzXCIpKTtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoKSA9PiB7XG4gICAgICAgIGVycm9yTWVzc2FnZSh0KFwidGlja2V0X2RldGFpbC5zYXZpbmdfZXJyb3JcIikpO1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoKTtcbiAgICAgIH0pO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPFJpZ2h0RHJhd2VyXG4gICAgICBpZD17VElDS0VUX0RSQVdFUl9JRH1cbiAgICAgIG9wZW49e29wZW59XG4gICAgICBvbkNsb3NlPXtvbkNsb3NlfVxuICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0RGV0YWlsQ29udGFpbmVyfVxuICAgICAgaGVhZGVyQ2hpbGRyZW49e1xuICAgICAgICA8VGlja2V0RGV0YWlsSGVhZGVyXG4gICAgICAgICAgdGlja2V0PXt0aWNrZXR9XG4gICAgICAgICAgaXNWaXJ0dWFsU3VtbWl0PXtzdW1taXQ/LmlzX3ZpcnR1YWx9XG4gICAgICAgIC8+XG4gICAgICB9XG4gICAgPlxuICAgICAge3RpY2tldCAmJiBleHRyYVF1ZXN0aW9ucyAmJiAoXG4gICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuYXR0ZW5kZWVDb250YWluZXJ9PlxuICAgICAgICAgICAgPFR5cG9ncmFwaHlcbiAgICAgICAgICAgICAgdmFyaWFudD1cImg0XCJcbiAgICAgICAgICAgICAgZ3V0dGVyQm90dG9tXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmF0dGVuZGVlSW5mb1RpdGxlfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7dChcInRpY2tldF9kZXRhaWwuYXR0ZW5kZWVfaW5mb3JtYXRpb25cIil9XG4gICAgICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICAgICAgICB7dGlja2V0ICYmIChcbiAgICAgICAgICAgICAgPFRpY2tldEZvcm1cbiAgICAgICAgICAgICAgICB0aWNrZXQ9e3RpY2tldH1cbiAgICAgICAgICAgICAgICBleHRyYVF1ZXN0aW9ucz17ZXh0cmFRdWVzdGlvbnN9XG4gICAgICAgICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgICAgICAgY2FuRWRpdD17Y2FuRWRpdFRpY2tldERhdGF9XG4gICAgICAgICAgICAgICAgb25TdWJtaXQ9e29uU2F2ZX1cbiAgICAgICAgICAgICAgICBvbkNsb3NlPXtvbkNsb3NlfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L0JveD5cbiAgICAgICl9XG4gICAgPC9SaWdodERyYXdlcj5cbiAgKTtcbn07XG5cblRpY2tldERldGFpbC5wcm9wVHlwZXMgPSB7XG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdCxcbiAgdGlja2V0SWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gIG9yZGVySWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gIG93bmVySWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gIG9uQ2xvc2U6IFByb3BUeXBlcy5mdW5jLFxuICBvcGVuOiBQcm9wVHlwZXMuYm9vbFxufTtcblxuZXhwb3J0IGRlZmF1bHQgVGlja2V0RGV0YWlsO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQ29udGFpbmVyLCBCdXR0b24gfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlVGlja2V0RGV0YWlscyB9IGZyb20gXCIuLi8uLi9ob29rcy91c2VUaWNrZXREZXRhaWxzXCI7XG5cbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgVGlja2V0U3RhdHVzID0gKHsgdGlja2V0IH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBpc0FjdGl2ZSA9IHRpY2tldC5pc19hY3RpdmU7XG4gIGNvbnN0IHJlZnVuZFJlcXVlc3RzID0gdGlja2V0LnJlZnVuZF9yZXF1ZXN0cz8uZmluZChcbiAgICAocikgPT4gci5zdGF0dXMgPT09IFwiUmVxdWVzdGVkXCJcbiAgKTtcbiAgY29uc3QgeyBpc0luY29tcGxldGUsIGlzVW5hc3NpZ25lZCwgaXNDb21wbGV0ZSB9ID0gdXNlVGlja2V0RGV0YWlscyh0aWNrZXQpO1xuXG4gIHJldHVybiAoXG4gICAgPENvbnRhaW5lciBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRTdGF0dXNDb250YWluZXJ9PlxuICAgICAge2lzQWN0aXZlID8gKFxuICAgICAgICA8PlxuICAgICAgICAgIHshIXJlZnVuZFJlcXVlc3RzICYmIChcbiAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJ0aWNrZXQgc3RhdHVzIHJlZnVuZCByZXF1ZXN0ZWRcIlxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5idXR0b25QaWxsfSAke3N0eWxlcy5idXR0b25SZWZ1bmRSZXF1ZXN0ZWR9YH1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnN0YXR1c19yZWZ1bmRfcmVxdWVzdGVkXCIpfVxuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgKX1cbiAgICAgICAgICB7aXNJbmNvbXBsZXRlICYmIChcbiAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJ0aWNrZXQgc3RhdHVzIGluY29tcGxldGVcIlxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5idXR0b25QaWxsfSAke3N0eWxlcy5idXR0b25JbmNvbXBsZXRlfWB9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5zdGF0dXNfaW5jb21wbGV0ZVwiKX1cbiAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICl9XG4gICAgICAgICAge2lzVW5hc3NpZ25lZCAmJiAoXG4gICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwidGlja2V0IHN0YXR1cyB1bmFzc2lnbmVkXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuYnV0dG9uUGlsbH0gJHtzdHlsZXMuYnV0dG9uVW5hc3NpZ25lZH1gfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMuc3RhdHVzX3VuYXNzaWduZWRcIil9XG4gICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICApfVxuICAgICAgICAgIHtpc0NvbXBsZXRlICYmIChcbiAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJ0aWNrZXQgc3RhdHVzIGNvbXBsZXRlXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuYnV0dG9uUGlsbH0gJHtzdHlsZXMuYnV0dG9uQ29tcGxldGV9YH1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnN0YXR1c19jb21wbGV0ZVwiKX1cbiAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvPlxuICAgICAgKSA6IChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJ0aWNrZXQgc3RhdHVzIGNhbmNlbGxlZFwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuYnV0dG9uUGlsbH0gJHtzdHlsZXMuYnV0dG9uQ2FuY2VsbGVkfWB9XG4gICAgICAgID5cbiAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMuc3RhdHVzX2NhbmNlbGxlZFwiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICApfVxuICAgIDwvQ29udGFpbmVyPlxuICApO1xufTtcblxuVGlja2V0U3RhdHVzLnByb3BUeXBlcyA9IHtcbiAgdGlja2V0OiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIG93bmVyOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgICAgc3RhdHVzOiBQcm9wVHlwZXMuc3RyaW5nXG4gICAgfSksXG4gICAgcmVmdW5kUmVxdWVzdHM6IFByb3BUeXBlcy5hcnJheU9mKE9iamVjdClcbiAgfSlcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFRpY2tldFN0YXR1cztcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCwgdXNlU2VsZWN0b3IgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7XG4gIEJveCxcbiAgRGl2aWRlcixcbiAgVGFiLFxuICBUYWJzLFxuICB1c2VNZWRpYVF1ZXJ5LFxuICB1c2VUaGVtZVxufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgc3RvcExvYWRpbmcgfSBmcm9tIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9hY3Rpb25zXCI7XG5pbXBvcnQge1xuICBERUZBVUxUX0lURU1TX1BFUl9QQUdFLFxuICBGSVJTVF9QQUdFLFxuICBUQUJTXG59IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCBNeU9yZGVyc1RpY2tldHMgZnJvbSBcIi4uL015T3JkZXJzVGlja2V0c1wiO1xuaW1wb3J0IEFzc2lnbmVkVG9NZSBmcm9tIFwiLi4vT3JkZXJzTGlzdC9Bc3NpZ25lZFRvTWVcIjtcbmltcG9ydCB7XG4gIGdldFRpY2tldHNCeU9yZGVyLFxuICBnZXRVc2VyT3JkZXJzLFxuICBnZXRVc2VyVGlja2V0c1xufSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuaW1wb3J0IFRhYldyYXBwZXIgZnJvbSBcIi4uL1RhYldyYXBwZXJcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgV2lkZ2V0VGFicyA9ICgpID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBbdGFiLCBzZXRUYWJdID0gdXNlU3RhdGUoVEFCUy5PUkRFUlMpO1xuICBjb25zdCBbdGlja2V0c0Z1bGx5TG9hZGVkLCBzZXRUaWNrZXRzRnVsbHlMb2FkZWRdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG4gIGNvbnN0IHtcbiAgICBmaWx0ZXIsXG4gICAgc29ydCxcbiAgICBvcmRlcnNfcGVyX3BhZ2U6IG9yZGVyc1BlclBhZ2UsXG4gICAgdGlja2V0X3Blcl9wYWdlOiB0aWNrZXRQZXJQYWdlLFxuICAgIHVzZXJUaWNrZXRzLFxuICAgIG1lbWJlck9yZGVyc1xuICB9ID0gdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSk7XG4gIGNvbnN0IHRoZW1lID0gdXNlVGhlbWUoKTtcbiAgY29uc3QgaXNNb2JpbGUgPSB1c2VNZWRpYVF1ZXJ5KHRoZW1lLmJyZWFrcG9pbnRzLmRvd24oXCJsZ1wiKSk7XG5cbiAgY29uc3QgaGFuZGxlVGFiQ2hhbmdlID0gKGV2LCBuZXdUYWIpID0+IHtcbiAgICBzZXRUYWIobmV3VGFiKTtcbiAgfTtcblxuICBjb25zdCBmZXRjaEFzc2lnbmVkVGlja2V0cyA9IChwYWdlLCBza2lwTG9hZGluZyA9IGZhbHNlKSA9PlxuICAgIGRpc3BhdGNoKFxuICAgICAgZ2V0VXNlclRpY2tldHMoXG4gICAgICAgIHtcbiAgICAgICAgICBwYWdlLFxuICAgICAgICAgIHBlclBhZ2U6IERFRkFVTFRfSVRFTVNfUEVSX1BBR0UsXG4gICAgICAgICAgZmlsdGVyLFxuICAgICAgICAgIHNvcnRcbiAgICAgICAgfSxcbiAgICAgICAgc2tpcExvYWRpbmdcbiAgICAgIClcbiAgICApO1xuXG4gIGNvbnN0IGZldGNoT3JkZXJUaWNrZXRzID0gKHBhZ2UsIHNraXBMb2FkaW5nID0gZmFsc2UpID0+XG4gICAgZGlzcGF0Y2goXG4gICAgICBnZXRVc2VyT3JkZXJzKFxuICAgICAgICB7XG4gICAgICAgICAgcGFnZSxcbiAgICAgICAgICBwZXJQYWdlOiBvcmRlcnNQZXJQYWdlLFxuICAgICAgICAgIGZpbHRlcixcbiAgICAgICAgICBzb3J0XG4gICAgICAgIH0sXG4gICAgICAgIHNraXBMb2FkaW5nXG4gICAgICApXG4gICAgKS50aGVuKChwYXlsb2FkKSA9PiB7XG4gICAgICBjb25zdCB7IGRhdGEgfSA9IHBheWxvYWQucmVzcG9uc2U7XG4gICAgICBjb25zdCBvcmRlclRpY2tldHNQcm9taXNlcyA9IGRhdGEubWFwKChvcmRlcikgPT5cbiAgICAgICAgZGlzcGF0Y2goXG4gICAgICAgICAgZ2V0VGlja2V0c0J5T3JkZXIoe1xuICAgICAgICAgICAgb3JkZXJJZDogb3JkZXIuaWQsXG4gICAgICAgICAgICBjdXJyZW50X3BhZ2U6IEZJUlNUX1BBR0UsXG4gICAgICAgICAgICBwZXJQYWdlOiB0aWNrZXRQZXJQYWdlLFxuICAgICAgICAgICAgZmlsdGVyLFxuICAgICAgICAgICAgc29ydFxuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgICk7XG5cbiAgICAgIHJldHVybiBQcm9taXNlLmFsbChvcmRlclRpY2tldHNQcm9taXNlcyk7XG4gICAgfSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBmZXRjaFByb21pc2VzID0gW1xuICAgICAgZmV0Y2hBc3NpZ25lZFRpY2tldHMoRklSU1RfUEFHRSwgdHJ1ZSksXG4gICAgICBmZXRjaE9yZGVyVGlja2V0cyhGSVJTVF9QQUdFLCB0cnVlKVxuICAgIF07XG4gICAgUHJvbWlzZS5hbGwoZmV0Y2hQcm9taXNlcylcbiAgICAgIC50aGVuKCgpID0+IHNldFRpY2tldHNGdWxseUxvYWRlZCh0cnVlKSlcbiAgICAgIC5maW5hbGx5KCgpID0+IGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpKTtcbiAgfSwgW2ZpbHRlciwgc29ydF0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHRpY2tldHNGdWxseUxvYWRlZCkge1xuICAgICAgaWYgKG1lbWJlck9yZGVycz8ubGVuZ3RoID09PSAwICYmIHVzZXJUaWNrZXRzPy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHNldFRhYihUQUJTLlRJQ0tFVFMpO1xuICAgICAgfVxuICAgIH1cbiAgfSwgW3RpY2tldHNGdWxseUxvYWRlZF0pO1xuXG4gIHJldHVybiAoXG4gICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy50YWJXcmFwcGVyfT5cbiAgICAgIDxUYWJzXG4gICAgICAgIHZhbHVlPXt0YWJ9XG4gICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVUYWJDaGFuZ2V9XG4gICAgICAgIHZhcmlhbnQ9e2lzTW9iaWxlID8gXCJmdWxsV2lkdGhcIiA6IFwic3RhbmRhcmRcIn1cbiAgICAgID5cbiAgICAgICAgPFRhYiBsYWJlbD17dChcIm9yZGVycy50aXRsZVwiKX0gdmFsdWU9e1RBQlMuT1JERVJTfSAvPlxuICAgICAgICA8VGFiIGxhYmVsPXt0KFwibGFiZWxzLmFzc2lnbmVkX3RvX21lXCIpfSB2YWx1ZT17VEFCUy5USUNLRVRTfSAvPlxuICAgICAgPC9UYWJzPlxuICAgICAgPERpdmlkZXIgLz5cblxuICAgICAge3RhYiA9PT0gVEFCUy5PUkRFUlMgJiYgKFxuICAgICAgICA8VGFiV3JhcHBlciB0YWI9e1RBQlMuT1JERVJTfSBzZXRUYWI9e3NldFRhYn0+XG4gICAgICAgICAgPE15T3JkZXJzVGlja2V0cyBmZXRjaERhdGE9e2ZldGNoT3JkZXJUaWNrZXRzfSAvPlxuICAgICAgICA8L1RhYldyYXBwZXI+XG4gICAgICApfVxuICAgICAge3RhYiA9PT0gVEFCUy5USUNLRVRTICYmIChcbiAgICAgICAgPFRhYldyYXBwZXIgdGFiPXtUQUJTLlRJQ0tFVFN9IHNldFRhYj17c2V0VGFifT5cbiAgICAgICAgICA8QXNzaWduZWRUb01lIGZldGNoRGF0YT17ZmV0Y2hBc3NpZ25lZFRpY2tldHN9IC8+XG4gICAgICAgIDwvVGFiV3JhcHBlcj5cbiAgICAgICl9XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBXaWRnZXRUYWJzO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cbmltcG9ydCBSZWFjdCwgeyB1c2VNZW1vLCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2gsIHVzZVNlbGVjdG9yLCBzaGFsbG93RXF1YWwsIGNvbm5lY3QgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7IEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyByZXNldEZpbHRlciwgY2hhbmdlU29ydCwgY2hhbmdlRmlsdGVyIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcbmltcG9ydCBDdXN0b21UaGVtZSBmcm9tIFwiLi4vQ3VzdG9tVGhlbWVcIjtcbmltcG9ydCBMb2FkZXIgZnJvbSBcIi4uL0xvYWRlclwiO1xuaW1wb3J0IEZpbHRlcnMgZnJvbSBcIi4uL0ZpbHRlcnNcIjtcbmltcG9ydCBXaWRnZXRUYWJzIGZyb20gXCIuLi9XaWRnZXRUYWJzXCI7XG5pbXBvcnQgQ3VzdG9tTm90aWZpY2F0aW9uQ29udGV4dCBmcm9tIFwiLi4vQ3VzdG9tTm90aWZpY2F0aW9uL0NvbnRleHRcIjtcbmltcG9ydCBDdXN0b21Ob3RpZmljYXRpb24gZnJvbSBcIi4uL0N1c3RvbU5vdGlmaWNhdGlvblwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBXaWRnZXRXcmFwcGVyID0gKCkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcbiAgY29uc3QgW21zZ0RhdGEsIHNldE1zZ0RhdGFdID0gdXNlU3RhdGUoXCJcIik7XG4gIGNvbnN0IHtcbiAgICBsb2FkaW5nLFxuICAgIGZpbHRlcjogeyBGSUxURVJfVkFSX09SREVSX05VTUJFUjogZmlsdGVyVmFsdWVzIH1cbiAgfSA9IHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUgfHwge30sIHNoYWxsb3dFcXVhbCk7XG5cbiAgY29uc3Qgc3VjY2Vzc01lc3NhZ2UgPSAobXNnKSA9PlxuICAgIHNldE1zZ0RhdGEoeyBtZXNzYWdlOiBtc2csIHNldmVyaXR5OiBcInN1Y2Nlc3NcIiB9KTtcbiAgY29uc3QgZXJyb3JNZXNzYWdlID0gKG1zZykgPT4gc2V0TXNnRGF0YSh7IG1lc3NhZ2U6IG1zZywgc2V2ZXJpdHk6IFwiZXJyb3JcIiB9KTtcbiAgY29uc3QgbWVzc2FnZUNvbnRleHQgPSB1c2VNZW1vKCgpID0+ICh7IHN1Y2Nlc3NNZXNzYWdlLCBlcnJvck1lc3NhZ2UgfSksIFtdKTtcblxuICBjb25zdCBvblJlc2V0ID0gKCkgPT4ge1xuICAgIGRpc3BhdGNoKHJlc2V0RmlsdGVyKCkpO1xuICB9O1xuXG4gIGNvbnN0IG9uRmlsdGVyID0gKGZpbHRlclZhbHVlKSA9PiB7XG4gICAgZGlzcGF0Y2goY2hhbmdlRmlsdGVyKGZpbHRlclZhbHVlKSk7XG4gIH07XG5cbiAgY29uc3Qgb25Tb3J0ID0gKHNvcnRWYWx1ZSkgPT4ge1xuICAgIGRpc3BhdGNoKGNoYW5nZVNvcnQoc29ydFZhbHVlKSk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8Q3VzdG9tVGhlbWU+XG4gICAgICA8TG9hZGVyIG9wZW49e2xvYWRpbmd9IC8+XG4gICAgICA8Q3VzdG9tTm90aWZpY2F0aW9uXG4gICAgICAgIG9wZW49eyEhbXNnRGF0YX1cbiAgICAgICAgb25DbG9zZT17KCkgPT4gc2V0TXNnRGF0YShudWxsKX1cbiAgICAgICAgbWVzc2FnZT17bXNnRGF0YT8ubWVzc2FnZX1cbiAgICAgICAgc2V2ZXJpdHk9e21zZ0RhdGE/LnNldmVyaXR5fVxuICAgICAgLz5cbiAgICAgIDxGaWx0ZXJzXG4gICAgICAgIG9uRmlsdGVyPXtvbkZpbHRlcn1cbiAgICAgICAgb25Tb3J0PXtvblNvcnR9XG4gICAgICAgIG9uU2VhcmNoPXtvbkZpbHRlcn1cbiAgICAgICAgb25SZXNldD17b25SZXNldH1cbiAgICAgIC8+XG4gICAgICA8Qm94IHN4PXt7IHBhZGRpbmc6IHsgeHM6IDIsIG1kOiAwLCBsZzogMCB9IH19PlxuICAgICAgICA8aDMgY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0c1RpdGxlVGV4dH0+XG4gICAgICAgICAge2ZpbHRlclZhbHVlc1xuICAgICAgICAgICAgPyB0KFwibGFiZWxzLnNlYXJjaF9yZXN1bHRzXCIsIHsgZmlsdGVyOiBmaWx0ZXJWYWx1ZXMgfSlcbiAgICAgICAgICAgIDogdChcImxhYmVscy50aWNrZXRzXCIpfVxuICAgICAgICA8L2gzPlxuICAgICAgPC9Cb3g+XG4gICAgICA8Q3VzdG9tTm90aWZpY2F0aW9uQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17bWVzc2FnZUNvbnRleHR9PlxuICAgICAgICA8V2lkZ2V0VGFicyAvPlxuICAgICAgPC9DdXN0b21Ob3RpZmljYXRpb25Db250ZXh0LlByb3ZpZGVyPlxuICAgIDwvQ3VzdG9tVGhlbWU+XG4gICk7XG59O1xuXG5jb25zdCBtYXBTdGF0ZVRvUHJvcHMgPSAoeyB3aWRnZXRTdGF0ZSB9KSA9PiAoe1xuICBzb3J0OiB3aWRnZXRTdGF0ZS5zb3J0LFxuICBmaWx0ZXI6IHdpZGdldFN0YXRlLmZpbHRlclxufSk7XG5cbmV4cG9ydCBkZWZhdWx0IGNvbm5lY3QobWFwU3RhdGVUb1Byb3BzLCB7fSkoV2lkZ2V0V3JhcHBlcik7XG4iLCJpbXBvcnQgeyB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoLCB1c2VTZWxlY3RvciB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgZ2V0RXh0cmFRdWVzdGlvbnMsIGdldFRpY2tldCB9IGZyb20gXCIuLi9hY3Rpb25zXCI7XG5cbmNvbnN0IHVzZUdldFRpY2tldCA9ICh0aWNrZXRJZCwgb3JkZXJJZCwgb3duZXJJZCwgcnVuKSA9PiB7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChydW4pIHtcbiAgICAgIGlmICh0aWNrZXRJZCAmJiBvcmRlcklkKSB7XG4gICAgICAgIGRpc3BhdGNoKGdldFRpY2tldCh0aWNrZXRJZCwgb3JkZXJJZCkpO1xuICAgICAgfVxuXG4gICAgICBpZiAob3duZXJJZCkge1xuICAgICAgICBkaXNwYXRjaChnZXRFeHRyYVF1ZXN0aW9ucyhvd25lcklkKSk7XG4gICAgICB9XG4gICAgfVxuICB9LCBbdGlja2V0SWQsIG9yZGVySWQsIG93bmVySWQsIHJ1bl0pO1xuXG4gIGNvbnN0IHsgZXh0cmFRdWVzdGlvbnMsIGN1cnJlbnRUaWNrZXQ6IHRpY2tldCB9ID0gdXNlU2VsZWN0b3IoXG4gICAgKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZVxuICApO1xuXG4gIHJldHVybiB7IHRpY2tldCwgZXh0cmFRdWVzdGlvbnMgfTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IHVzZUdldFRpY2tldDtcbiIsImltcG9ydCB7IHVzZUVmZmVjdCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgVElDS0VUX0RSQVdFUl9JRCB9IGZyb20gXCIuLi91dGlscy9jb25zdGFudHNcIjtcblxuLy8gU21vb3RoIHNjcm9sbGluZyBmdW5jdGlvbiB1c2luZyByZXF1ZXN0QW5pbWF0aW9uRnJhbWVcbmZ1bmN0aW9uIHNtb290aFNjcm9sbFRvKGNvbnRhaW5lciwgdGFyZ2V0U2Nyb2xsVG9wLCBkdXJhdGlvbikge1xuICBjb25zdCBzdGFydFNjcm9sbFRvcCA9IGNvbnRhaW5lci5zY3JvbGxUb3A7XG4gIGNvbnN0IGRpc3RhbmNlID0gdGFyZ2V0U2Nyb2xsVG9wIC0gc3RhcnRTY3JvbGxUb3A7XG4gIGxldCBzdGFydFRpbWUgPSBudWxsO1xuXG4gIGZ1bmN0aW9uIGFuaW1hdGlvblN0ZXAodGltZXN0YW1wKSB7XG4gICAgaWYgKCFzdGFydFRpbWUpIHN0YXJ0VGltZSA9IHRpbWVzdGFtcDtcbiAgICBjb25zdCBlbGFwc2VkID0gdGltZXN0YW1wIC0gc3RhcnRUaW1lO1xuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW1hZ2ljLW51bWJlcnNcbiAgICBjb25zdCBwcm9ncmVzcyA9IE1hdGgubWluKGVsYXBzZWQgLyBkdXJhdGlvbiwgMSk7XG4gICAgY29uc3QgZWFzZUluT3V0UXVhZCA9XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbWFnaWMtbnVtYmVyc1xuICAgICAgcHJvZ3Jlc3MgPCAwLjUgPyAyICogcHJvZ3Jlc3MgKiogMiA6IDEgLSAoLTIgKiBwcm9ncmVzcyArIDIpICoqIDIgLyAyO1xuXG4gICAgY29udGFpbmVyLnNjcm9sbFRvcCA9IHN0YXJ0U2Nyb2xsVG9wICsgZGlzdGFuY2UgKiBlYXNlSW5PdXRRdWFkO1xuXG4gICAgaWYgKGVsYXBzZWQgPCBkdXJhdGlvbikge1xuICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGFuaW1hdGlvblN0ZXApO1xuICAgIH1cbiAgfVxuXG4gIHJlcXVlc3RBbmltYXRpb25GcmFtZShhbmltYXRpb25TdGVwKTtcbn1cblxuY29uc3QgdXNlU2Nyb2xsVG9FcnJvciA9IChmb3JtaWspID0+IHtcbiAgY29uc3QgeyBlcnJvcnMsIGlzVmFsaWQsIGlzU3VibWl0dGluZyB9ID0gZm9ybWlrO1xuICBjb25zdCBlcnJvckFycmF5ID0gT2JqZWN0LmtleXMoZXJyb3JzKTtcbiAgY29uc3QgZXJyb3JDb3VudCA9IGVycm9yQXJyYXkubGVuZ3RoO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGlzVmFsaWQgfHwgZXJyb3JDb3VudCA9PT0gMCkgcmV0dXJuO1xuXG4gICAgLy8gc29ydCBlbGVtZW50cyBieSBwb3NpdGlvblxuICAgIGNvbnN0IGVsZW1lbnRzU29ydGVkID0gZXJyb3JBcnJheVxuICAgICAgLnJlZHVjZSgocmVzdWx0LCBlcnJvcikgPT4ge1xuICAgICAgICBjb25zdCBlbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgW25hbWU9JyR7ZXJyb3J9J11gKTtcbiAgICAgICAgaWYgKCFlbGVtZW50KSByZXR1cm4gcmVzdWx0O1xuXG4gICAgICAgIGNvbnN0IGVsUmVjdCA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIHJlc3VsdC5wdXNoKHsgZWxlbWVudCwgZXJyb3IsIHRvcDogZWxSZWN0LnRvcCB9KTtcblxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfSwgW10pXG4gICAgICAuc29ydCgoYSwgYikgPT4gYS50b3AgLSBiLnRvcCk7XG5cbiAgICBpZiAoZWxlbWVudHNTb3J0ZWQubGVuZ3RoID09PSAwKSByZXR1cm47XG5cbiAgICBjb25zdCBjb250YWluZXIgPSBkb2N1bWVudFxuICAgICAgLmdldEVsZW1lbnRCeUlkKFRJQ0tFVF9EUkFXRVJfSUQpXG4gICAgICAucXVlcnlTZWxlY3RvcihcIi5NdWlEcmF3ZXItcGFwZXJcIik7XG4gICAgY29uc3QgdGFyZ2V0ID0gZWxlbWVudHNTb3J0ZWRbMF07XG5cbiAgICBpZiAoY29udGFpbmVyPy5jb250YWlucyh0YXJnZXQuZWxlbWVudCkpIHtcbiAgICAgIGNvbnN0IGNvbnRhaW5lclJlY3QgPSBjb250YWluZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICAgIC8vIENhbGN1bGF0ZSB0aGUgb2Zmc2V0IG9mIHRoZSB0YXJnZXQgZWxlbWVudCByZWxhdGl2ZSB0byB0aGUgY29udGFpbmVyXG4gICAgICBjb25zdCBlbGVtT2ZmZXN0ID0gMTAwO1xuICAgICAgY29uc3QgYW5pbWF0aW9uRHVyYXRpb24gPSA1MDA7XG4gICAgICBjb25zdCBzY3JvbGxUb3AgPVxuICAgICAgICB0YXJnZXQudG9wIC0gY29udGFpbmVyUmVjdC50b3AgKyBjb250YWluZXIuc2Nyb2xsVG9wIC0gZWxlbU9mZmVzdDtcblxuICAgICAgLy8gU2Nyb2xsIHRoZSBjb250YWluZXIgdG8gdGhlIHRhcmdldCBlbGVtZW50J3MgcG9zaXRpb25cbiAgICAgIHNtb290aFNjcm9sbFRvKGNvbnRhaW5lciwgc2Nyb2xsVG9wLCBhbmltYXRpb25EdXJhdGlvbik7IC8vIDUwMG1zIGR1cmF0aW9uXG4gICAgfVxuICB9LCBbaXNTdWJtaXR0aW5nXSk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCB1c2VTY3JvbGxUb0Vycm9yO1xuIiwiaW1wb3J0IHsgaXNUaWNrZXRSZWZ1bmRhYmxlIH0gZnJvbSBcIi4uL3V0aWxzL3RpY2tldFV0aWxzXCI7XG5cbmV4cG9ydCBjb25zdCBTVEFUVVNfQ09NUExFVEUgPSBcIkNvbXBsZXRlXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX0lOQ09NUExFVEUgPSBcIkluY29tcGxldGVcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfQ0FOQ0VMTEVEID0gXCJDYW5jZWxsZWRcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfVU5BU1NJR05FRCA9IFwiVW5hc3NpZ25lZFwiO1xuXG5leHBvcnQgY29uc3QgdXNlVGlja2V0RGV0YWlscyA9ICh0aWNrZXQpID0+IHtcbiAgY29uc3QgZ2V0U3RhdHVzID0gKCkgPT4ge1xuICAgIGlmICghdGlja2V0LmlzX2FjdGl2ZSkgcmV0dXJuIFNUQVRVU19DQU5DRUxMRUQ7XG4gICAgaWYgKHRpY2tldC5vd25lcl9pZCA9PT0gMCkgcmV0dXJuIFNUQVRVU19VTkFTU0lHTkVEO1xuICAgIGlmICghdGlja2V0Lm93bmVyPy5maXJzdF9uYW1lIHx8ICF0aWNrZXQub3duZXI/Lmxhc3RfbmFtZSlcbiAgICAgIHJldHVybiBTVEFUVVNfSU5DT01QTEVURTtcbiAgICByZXR1cm4gdGlja2V0Lm93bmVyLnN0YXR1cztcbiAgfTtcblxuICBpZiAoIXRpY2tldCkgcmV0dXJuIHt9O1xuXG4gIGNvbnN0IHN0YXR1cyA9IGdldFN0YXR1cygpO1xuICBjb25zdCBpc0FjdGl2ZSA9IHRpY2tldC5pc19hY3RpdmUgJiYgc3RhdHVzICE9PSBTVEFUVVNfQ0FOQ0VMTEVEO1xuICBjb25zdCBpc1JlZnVuZGFibGUgPSBpc1RpY2tldFJlZnVuZGFibGUodGlja2V0KTtcbiAgY29uc3QgYWxsb3dzRGVsZWdhdGUgPVxuICAgIHRpY2tldD8udGlja2V0X3R5cGU/LmFsbG93c190b19kZWxlZ2F0ZSB8fFxuICAgIHRpY2tldD8ucHJvbW9fY29kZT8uYWxsb3dzX3RvX2RlbGVnYXRlO1xuICBjb25zdCBpc0NvbXBsZXRlID0gc3RhdHVzID09PSBTVEFUVVNfQ09NUExFVEU7XG4gIGNvbnN0IGlzVW5hc3NpZ25lZCA9IHN0YXR1cyA9PT0gU1RBVFVTX1VOQVNTSUdORUQ7XG4gIGNvbnN0IGlzSW5jb21wbGV0ZSA9IHN0YXR1cyA9PT0gU1RBVFVTX0lOQ09NUExFVEU7XG4gIGNvbnN0IGNhblJlYXNzaWduID1cbiAgICAhaXNVbmFzc2lnbmVkICYmXG4gICAgdGlja2V0LnRpY2tldF90eXBlPy5hbGxvd3NfdG9fcmVhc3NpZ24gJiZcbiAgICAoIXRpY2tldC5wcm9tb19jb2RlIHx8IHRpY2tldC5wcm9tb19jb2RlPy5hbGxvd3NfdG9fcmVhc3NpZ24pO1xuXG4gIHJldHVybiB7XG4gICAgc3RhdHVzLFxuICAgIGlzQ29tcGxldGUsXG4gICAgaXNVbmFzc2lnbmVkLFxuICAgIGlzSW5jb21wbGV0ZSxcbiAgICBpc0FjdGl2ZSxcbiAgICBpc1JlZnVuZGFibGUsXG4gICAgYWxsb3dzRGVsZWdhdGUsXG4gICAgY2FuUmVhc3NpZ25cbiAgfTtcbn07XG4iLCJpbXBvcnQgaTE4biBmcm9tIFwiaTE4bmV4dFwiO1xuaW1wb3J0IHsgaW5pdFJlYWN0STE4bmV4dCB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgTGFuZ3VhZ2VEZXRlY3RvciBmcm9tIFwiaTE4bmV4dC1icm93c2VyLWxhbmd1YWdlZGV0ZWN0b3JcIjtcbmltcG9ydCBlbiBmcm9tIFwiLi9sb2NhbGVzL2VuLmpzb25cIjtcbmltcG9ydCBlcyBmcm9tIFwiLi9sb2NhbGVzL2VzLmpzb25cIjtcblxuLy8gaW1wb3J0IEJhY2tlbmQgZnJvbSAnaTE4bmV4dC1odHRwLWJhY2tlbmQnO1xuLy8gZG9uJ3Qgd2FudCB0byB1c2UgdGhpcz9cbi8vIGhhdmUgYSBsb29rIGF0IHRoZSBRdWljayBzdGFydCBndWlkZVxuLy8gZm9yIHBhc3NpbmcgaW4gbG5nIGFuZCB0cmFuc2xhdGlvbnMgb24gaW5pdFxuXG5pMThuXG4gIC8vIGxvYWQgdHJhbnNsYXRpb24gdXNpbmcgaHR0cCAtPiBzZWUgL3B1YmxpYy9sb2NhbGVzIChpLmUuIGh0dHBzOi8vZ2l0aHViLmNvbS9pMThuZXh0L3JlYWN0LWkxOG5leHQvdHJlZS9tYXN0ZXIvZXhhbXBsZS9yZWFjdC9wdWJsaWMvbG9jYWxlcylcbiAgLy8gbGVhcm4gbW9yZTogaHR0cHM6Ly9naXRodWIuY29tL2kxOG5leHQvaTE4bmV4dC1odHRwLWJhY2tlbmRcbiAgLy8gd2FudCB5b3VyIHRyYW5zbGF0aW9ucyB0byBiZSBsb2FkZWQgZnJvbSBhIHByb2Zlc3Npb25hbCBDRE4/ID0+IGh0dHBzOi8vZ2l0aHViLmNvbS9sb2NpemUvcmVhY3QtdHV0b3JpYWwjc3RlcC0yLS0tdXNlLXRoZS1sb2NpemUtY2RuXG4gIC8vIC51c2UoQmFja2VuZClcbiAgLy8gZGV0ZWN0IHVzZXIgbGFuZ3VhZ2VcbiAgLy8gbGVhcm4gbW9yZTogaHR0cHM6Ly9naXRodWIuY29tL2kxOG5leHQvaTE4bmV4dC1icm93c2VyLWxhbmd1YWdlRGV0ZWN0b3JcbiAgLnVzZShMYW5ndWFnZURldGVjdG9yKVxuICAvLyBwYXNzIHRoZSBpMThuIGluc3RhbmNlIHRvIHJlYWN0LWkxOG5leHQuXG4gIC51c2UoaW5pdFJlYWN0STE4bmV4dClcbiAgLy8gaW5pdCBpMThuZXh0XG4gIC8vIGZvciBhbGwgb3B0aW9ucyByZWFkOiBodHRwczovL3d3dy5pMThuZXh0LmNvbS9vdmVydmlldy9jb25maWd1cmF0aW9uLW9wdGlvbnNcbiAgLmluaXQoe1xuICAgIGZhbGxiYWNrTG5nOiBcImVuXCIsXG4gICAgZGVidWc6IGZhbHNlLFxuICAgIHJlc291cmNlczoge1xuICAgICAgZW46IHsgdHJhbnNsYXRpb246IGVuIH0sXG4gICAgICBlczogeyB0cmFuc2xhdGlvbjogZXMgfVxuICAgIH0sXG4gICAgaW50ZXJwb2xhdGlvbjoge1xuICAgICAgZXNjYXBlVmFsdWU6IGZhbHNlIC8vIG5vdCBuZWVkZWQgZm9yIHJlYWN0IGFzIGl0IGVzY2FwZXMgYnkgZGVmYXVsdFxuICAgIH1cbiAgfSk7XG5cbmV4cG9ydCBkZWZhdWx0IGkxOG47XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuaW1wb3J0IHsgTE9HT1VUX1VTRVIgfSBmcm9tIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9zZWN1cml0eS9hY3Rpb25zXCI7XG5pbXBvcnQge1xuICBTVEFSVF9MT0FESU5HLFxuICBTVE9QX0xPQURJTkcsXG4gIFJFU0VUX0xPQURJTkdcbn0gZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvYWN0aW9uc1wiO1xuaW1wb3J0IHtcbiAgUkVTRVRfU1RBVEUsXG4gIFJFU0VUX0ZJTFRFUixcbiAgU0VUX1NUQVRFLFxuICBTRVRfVVNFUixcbiAgR0VUX1VTRVJfT1JERVJTLFxuICBHRVRfTVlfQVNTSUdORURfVElDS0VUUyxcbiAgR0VUX1RJQ0tFVFNfQllfT1JERVIsXG4gIFVQREFURV9USUNLRVRTX1JFRlVORF9SRVFVRVNURUQsXG4gIFJFQ0VJVkVfVElDS0VULFxuICBSRUNFSVZFX0VYVFJBX1FVRVNUSU9OUyxcbiAgVVBEQVRFX1RJQ0tFVCxcbiAgQVNTSUdOX1RJQ0tFVCxcbiAgUkVTRVRfQVBJX0VSUk9SLFxuICBTRVRfQVBJX0VSUk9SLFxuICBSRVNFVF9USUNLRVQsXG4gIENIQU5HRV9GSUxURVIsXG4gIENIQU5HRV9TT1JULFxuICBGSUxURVJfVkFSX0JBREdFX0ZFQVRVUkUsXG4gIEZJTFRFUl9WQVJfT1JERVJfTlVNQkVSLFxuICBGSUxURVJfVkFSX0RBVEUsXG4gIEZJTFRFUl9WQVJfVElDS0VUX1RZUEUsXG4gIEZJTFRFUl9WQVJfRlJFRV9QQUlELFxuICBGSUxURVJfVkFSX09XTkVSX1NUQVRVUyxcbiAgRklMVEVSX1ZBUl9USUNLRVRfQVNTSUdORUQsXG4gIEZJTFRFUl9WQVJfUFJPTU9DT0RFLFxuICBERUxFR0FURV9USUNLRVQsXG4gIFJFTU9WRV9USUNLRVRfQVRURU5ERUVcbn0gZnJvbSBcIi4vYWN0aW9uc1wiO1xuaW1wb3J0IHsgRklSU1RfUEFHRSwgVEFCUyB9IGZyb20gXCIuL3V0aWxzL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgY2FsY3VsYXRlQWN0aXZlRmlsdGVycywgaGFzTG9hZGVkQWxsRGF0YSB9IGZyb20gXCIuL3V0aWxzXCI7XG5pbXBvcnQgeyB1cGRhdGVUaWNrZXRDb2xsZWN0aW9uIH0gZnJvbSBcIi4vdXRpbHMvdGlja2V0VXRpbHNcIjtcblxuY29uc3QgREVGQVVMVF9GSUxURVJfU1RBVEUgPSB7XG4gIFtGSUxURVJfVkFSX0JBREdFX0ZFQVRVUkVdOiBbXSxcbiAgW0ZJTFRFUl9WQVJfVElDS0VUX1RZUEVdOiBbXSxcbiAgW0ZJTFRFUl9WQVJfRlJFRV9QQUlEXTogXCJcIixcbiAgW0ZJTFRFUl9WQVJfT1dORVJfU1RBVFVTXTogXCJcIixcbiAgW0ZJTFRFUl9WQVJfVElDS0VUX0FTU0lHTkVEXTogXCJcIixcbiAgW0ZJTFRFUl9WQVJfUFJPTU9DT0RFXTogXCJcIixcbiAgW0ZJTFRFUl9WQVJfT1JERVJfTlVNQkVSXTogXCJcIixcbiAgW0ZJTFRFUl9WQVJfREFURV06IG51bGxcbn07XG5cbmNvbnN0IERFRkFVTFRfU1RBVEUgPSB7XG4gIHN1bW1pdDogbnVsbCxcbiAgdXNlcjoge30sXG4gIHdpZGdldExvYWRpbmc6IGZhbHNlLFxuICBtZW1iZXJPcmRlcnM6IFtdLFxuICB1c2VyVGlja2V0czogW10sXG4gIGV4dHJhUXVlc3Rpb25zOiBbXSxcbiAgY3VycmVudFRpY2tldDogbnVsbCxcbiAgZXJyb3JzOiB7fSxcbiAgbG9hZGluZzogZmFsc2UsXG4gIGN1cnJlbnRfdGFiOiBUQUJTLk9SREVSUyxcbiAgc29ydDoge30sXG4gIGZpbHRlcjogREVGQVVMVF9GSUxURVJfU1RBVEUsXG4gIGFjdGl2ZUZpbHRlcnNDb3VudDogMCxcbiAgb3JkZXJzX2N1cnJlbnRfcGFnZTogMCxcbiAgb3JkZXJzX2xhc3RfcGFnZTogMCxcbiAgb3JkZXJzX3Blcl9wYWdlOiA1LFxuICBvcmRlcnNfdG90YWw6IDAsXG4gIHRpY2tldF9jdXJyZW50X3BhZ2U6IDAsXG4gIHRpY2tldF9sYXN0X3BhZ2U6IDAsXG4gIHRpY2tldF9wZXJfcGFnZTogNSxcbiAgdGlja2V0X3RvdGFsOiAwLFxuICB1c2VyX3RpY2tldHNfdG90YWw6IDAsXG4gIHVzZXJfdGlja2V0c19jdXJyZW50X3BhZ2U6IDAsXG4gIHVzZXJfdGlja2V0c19sYXN0X3BhZ2U6IDAsXG4gIGFwaUVycm9yOiBudWxsXG59O1xuXG5jb25zdCBXaWRnZXRSZWR1Y2VyID0gKHN0YXRlID0gREVGQVVMVF9TVEFURSwgeyB0eXBlLCBwYXlsb2FkIH0gPSB7fSkgPT4ge1xuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlIExPR09VVF9VU0VSOlxuICAgIGNhc2UgUkVTRVRfU1RBVEU6XG4gICAgICByZXR1cm4gREVGQVVMVF9TVEFURTtcbiAgICBjYXNlIFNUQVJUX0xPQURJTkc6XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgbG9hZGluZzogdHJ1ZSB9O1xuICAgIGNhc2UgU1RPUF9MT0FESU5HOlxuICAgIGNhc2UgUkVTRVRfTE9BRElORzpcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBsb2FkaW5nOiBmYWxzZSB9O1xuICAgIGNhc2UgUkVTRVRfQVBJX0VSUk9SOlxuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIGFwaUVycm9yOiBudWxsIH07XG4gICAgY2FzZSBSRVNFVF9GSUxURVI6XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgZmlsdGVyOiBERUZBVUxUX0ZJTFRFUl9TVEFURSxcbiAgICAgICAgYWN0aXZlRmlsdGVyc0NvdW50OiAwLFxuICAgICAgICBzb3J0OiB7fSxcbiAgICAgICAgb3JkZXJzX2N1cnJlbnRfcGFnZTogMSxcbiAgICAgICAgb3JkZXJzX2xhc3RfcGFnZTogMSxcbiAgICAgICAgbG9hZGluZzogdHJ1ZVxuICAgICAgfTtcbiAgICBjYXNlIFNFVF9TVEFURTpcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCAuLi5wYXlsb2FkIH07XG4gICAgY2FzZSBTRVRfQVBJX0VSUk9SOiB7XG4gICAgICBjb25zdCB7IHRpdGxlLCBodG1sOiBib2R5IH0gPSBwYXlsb2FkO1xuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIGFwaUVycm9yOiB7IHRpdGxlLCBib2R5IH0gfTtcbiAgICB9XG4gICAgY2FzZSBTRVRfVVNFUjpcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCB1c2VyOiBwYXlsb2FkIH07XG4gICAgY2FzZSBDSEFOR0VfRklMVEVSOiB7XG4gICAgICBjb25zdCBuZXdGaWx0ZXJzID0geyAuLi5zdGF0ZS5maWx0ZXIsIC4uLnBheWxvYWQgfTtcbiAgICAgIGNvbnN0IG5ld0FjdGl2ZUNvdW50ID0gY2FsY3VsYXRlQWN0aXZlRmlsdGVycyhuZXdGaWx0ZXJzKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBmaWx0ZXI6IHsgLi4uc3RhdGUuZmlsdGVyLCAuLi5wYXlsb2FkIH0sXG4gICAgICAgIGFjdGl2ZUZpbHRlcnNDb3VudDogbmV3QWN0aXZlQ291bnRcbiAgICAgIH07XG4gICAgfVxuICAgIGNhc2UgQ0hBTkdFX1NPUlQ6IHtcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBzb3J0OiB7IC4uLnBheWxvYWQgfSB9O1xuICAgIH1cbiAgICBjYXNlIEdFVF9VU0VSX09SREVSUzoge1xuICAgICAgY29uc3QgeyBkYXRhLCB0b3RhbCwgY3VycmVudF9wYWdlLCBsYXN0X3BhZ2UgfSA9IHBheWxvYWQucmVzcG9uc2U7XG5cbiAgICAgIGlmIChoYXNMb2FkZWRBbGxEYXRhKGN1cnJlbnRfcGFnZSwgc3RhdGUubWVtYmVyT3JkZXJzLCB0b3RhbCkpXG4gICAgICAgIHJldHVybiBzdGF0ZTtcblxuICAgICAgY29uc3QgbWVtYmVyT3JkZXJzID1cbiAgICAgICAgY3VycmVudF9wYWdlID09PSBGSVJTVF9QQUdFID8gZGF0YSA6IFsuLi5zdGF0ZS5tZW1iZXJPcmRlcnMsIC4uLmRhdGFdO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgbWVtYmVyT3JkZXJzLFxuICAgICAgICBvcmRlcnNfdG90YWw6IHRvdGFsLFxuICAgICAgICBvcmRlcnNfY3VycmVudF9wYWdlOiBjdXJyZW50X3BhZ2UsXG4gICAgICAgIG9yZGVyc19sYXN0X3BhZ2U6IGxhc3RfcGFnZVxuICAgICAgfTtcbiAgICB9XG4gICAgY2FzZSBHRVRfTVlfQVNTSUdORURfVElDS0VUUzoge1xuICAgICAgY29uc3QgeyBkYXRhLCB0b3RhbCwgY3VycmVudF9wYWdlLCBsYXN0X3BhZ2UgfSA9IHBheWxvYWQucmVzcG9uc2U7XG5cbiAgICAgIGlmIChoYXNMb2FkZWRBbGxEYXRhKGN1cnJlbnRfcGFnZSwgc3RhdGUudXNlclRpY2tldHMsIHRvdGFsKSlcbiAgICAgICAgcmV0dXJuIHN0YXRlO1xuXG4gICAgICBjb25zdCB1c2VyVGlja2V0cyA9XG4gICAgICAgIGN1cnJlbnRfcGFnZSA9PT0gRklSU1RfUEFHRSA/IGRhdGEgOiBbLi4uc3RhdGUudXNlclRpY2tldHMsIC4uLmRhdGFdO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgdXNlclRpY2tldHMsXG4gICAgICAgIHVzZXJfdGlja2V0c190b3RhbDogdG90YWwsXG4gICAgICAgIHVzZXJfdGlja2V0c19jdXJyZW50X3BhZ2U6IGN1cnJlbnRfcGFnZSxcbiAgICAgICAgdXNlcl90aWNrZXRzX2xhc3RfcGFnZTogbGFzdF9wYWdlXG4gICAgICB9O1xuICAgIH1cbiAgICBjYXNlIEdFVF9USUNLRVRTX0JZX09SREVSOiB7XG4gICAgICBjb25zdCB7IG1lbWJlck9yZGVycyB9ID0gc3RhdGU7XG4gICAgICBjb25zdCB7IGRhdGEsIHRvdGFsLCBjdXJyZW50X3BhZ2UsIGxhc3RfcGFnZSB9ID0gcGF5bG9hZC5yZXNwb25zZTtcbiAgICAgIGNvbnN0IGZvcm1lck9yZGVyID0gbWVtYmVyT3JkZXJzLmZpbmQoKG8pID0+IG8uaWQgPT09IGRhdGFbMF0/Lm9yZGVyX2lkKTtcblxuICAgICAgY29uc3QgbmV3T3JkZXJzID0gbWVtYmVyT3JkZXJzLm1hcCgobW8pID0+IHtcbiAgICAgICAgaWYgKG1vLmlkICE9PSBkYXRhWzBdPy5vcmRlcl9pZCkgcmV0dXJuIG1vO1xuICAgICAgICBjb25zdCBuZXdUaWNrZXRzID1cbiAgICAgICAgICBjdXJyZW50X3BhZ2UgPT09IEZJUlNUX1BBR0VcbiAgICAgICAgICAgID8gZGF0YVxuICAgICAgICAgICAgOiBbLi4uZm9ybWVyT3JkZXIubWVtYmVyVGlja2V0cywgLi4uZGF0YV07XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4ubW8sXG4gICAgICAgICAgbWVtYmVyVGlja2V0czogbmV3VGlja2V0cyxcbiAgICAgICAgICB0aWNrZXRzX3BhZ2VfY3VycmVudDogY3VycmVudF9wYWdlLFxuICAgICAgICAgIHRpY2tldHNfcGFnZV9sYXN0OiBsYXN0X3BhZ2UsXG4gICAgICAgICAgdGlja2V0c190b3RhbDogdG90YWxcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgbWVtYmVyT3JkZXJzOiBuZXdPcmRlcnNcbiAgICAgIH07XG4gICAgfVxuICAgIGNhc2UgVVBEQVRFX1RJQ0tFVFNfUkVGVU5EX1JFUVVFU1RFRDoge1xuICAgICAgY29uc3QgeyBtZW1iZXJPcmRlcnMgfSA9IHN0YXRlO1xuICAgICAgY29uc3QgdGlja2V0c1JlZnVuZFJlcXVlc3RlZCA9IHBheWxvYWQ7XG4gICAgICBjb25zdCBvcmRlciA9IG1lbWJlck9yZGVycy5maW5kKFxuICAgICAgICAobykgPT4gby5pZCA9PT0gdGlja2V0c1JlZnVuZFJlcXVlc3RlZFswXT8ub3JkZXJfaWRcbiAgICAgICk7XG4gICAgICBjb25zdCB1cGRhdGVkVGlja2V0cyA9IG9yZGVyPy5tZW1iZXJUaWNrZXRzLm1hcChcbiAgICAgICAgKHRpY2tldCkgPT5cbiAgICAgICAgICB0aWNrZXRzUmVmdW5kUmVxdWVzdGVkLmZpbmQoKHRycikgPT4gdHJyLmlkID09PSB0aWNrZXQuaWQpIHx8IHRpY2tldFxuICAgICAgKTtcbiAgICAgIGNvbnN0IHVwZGF0ZWRPcmRlciA9IHtcbiAgICAgICAgLi4ub3JkZXIsXG4gICAgICAgIG1lbWJlclRpY2tldHM6IHVwZGF0ZWRUaWNrZXRzXG4gICAgICB9O1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIG1lbWJlck9yZGVyczogbWVtYmVyT3JkZXJzLm1hcCgobW8pID0+XG4gICAgICAgICAgbW8uaWQgPT09IHVwZGF0ZWRPcmRlci5pZCA/IHVwZGF0ZWRPcmRlciA6IG1vXG4gICAgICAgIClcbiAgICAgIH07XG4gICAgfVxuICAgIGNhc2UgUkVTRVRfVElDS0VUOiB7XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgY3VycmVudFRpY2tldDogbnVsbCB9O1xuICAgIH1cbiAgICBjYXNlIFJFQ0VJVkVfVElDS0VUOiB7XG4gICAgICBjb25zdCB0aWNrZXQgPSBwYXlsb2FkLnJlc3BvbnNlO1xuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIGN1cnJlbnRUaWNrZXQ6IHRpY2tldCB9O1xuICAgIH1cbiAgICBjYXNlIFJFQ0VJVkVfRVhUUkFfUVVFU1RJT05TOiB7XG4gICAgICBjb25zdCB7IGRhdGEgfSA9IHBheWxvYWQucmVzcG9uc2U7XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgZXh0cmFRdWVzdGlvbnM6IGRhdGEgfTtcbiAgICB9XG4gICAgY2FzZSBSRU1PVkVfVElDS0VUX0FUVEVOREVFOlxuICAgIGNhc2UgVVBEQVRFX1RJQ0tFVDoge1xuICAgICAgY29uc3QgdGlja2V0RGF0YSA9IHBheWxvYWQucmVzcG9uc2U7XG5cbiAgICAgIGNvbnN0IG5ld09yZGVycyA9IHN0YXRlLm1lbWJlck9yZGVycy5tYXAoKG9yZGVyKSA9PiB7XG4gICAgICAgIGNvbnN0IG5ld1RpY2tldHMgPSB1cGRhdGVUaWNrZXRDb2xsZWN0aW9uKFxuICAgICAgICAgIG9yZGVyLm1lbWJlclRpY2tldHMsXG4gICAgICAgICAgdGlja2V0RGF0YVxuICAgICAgICApO1xuICAgICAgICByZXR1cm4geyAuLi5vcmRlciwgbWVtYmVyVGlja2V0czogbmV3VGlja2V0cyB9O1xuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IG5ld1VzZXJUaWNrZXRzID0gdXBkYXRlVGlja2V0Q29sbGVjdGlvbihcbiAgICAgICAgc3RhdGUudXNlclRpY2tldHMsXG4gICAgICAgIHRpY2tldERhdGFcbiAgICAgICk7XG5cbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBtZW1iZXJPcmRlcnM6IG5ld09yZGVycywgdXNlclRpY2tldHM6IG5ld1VzZXJUaWNrZXRzIH07XG4gICAgfVxuICAgIGNhc2UgREVMRUdBVEVfVElDS0VUOlxuICAgIGNhc2UgQVNTSUdOX1RJQ0tFVDoge1xuICAgICAgY29uc3QgdGlja2V0RGF0YSA9IHBheWxvYWQucmVzcG9uc2U7XG4gICAgICBjb25zdCBuZXdPcmRlcnMgPSBzdGF0ZS5tZW1iZXJPcmRlcnMubWFwKChvcmRlcikgPT4ge1xuICAgICAgICBjb25zdCBuZXdUaWNrZXRzID0gdXBkYXRlVGlja2V0Q29sbGVjdGlvbihcbiAgICAgICAgICBvcmRlci5tZW1iZXJUaWNrZXRzLFxuICAgICAgICAgIHRpY2tldERhdGFcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIHsgLi4ub3JkZXIsIG1lbWJlclRpY2tldHM6IG5ld1RpY2tldHMgfTtcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBuZXdVc2VyVGlja2V0cyA9IHVwZGF0ZVRpY2tldENvbGxlY3Rpb24oXG4gICAgICAgIHN0YXRlLnVzZXJUaWNrZXRzLFxuICAgICAgICB0aWNrZXREYXRhXG4gICAgICApO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgY3VycmVudFRpY2tldDogdGlja2V0RGF0YSxcbiAgICAgICAgbWVtYmVyT3JkZXJzOiBuZXdPcmRlcnMsXG4gICAgICAgIHVzZXJUaWNrZXRzOiBuZXdVc2VyVGlja2V0c1xuICAgICAgfTtcbiAgICB9XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBzdGF0ZTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgV2lkZ2V0UmVkdWNlcjtcbiIsImltcG9ydCB7IHVzZU1lbW8gfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IGNvbmZpZ3VyZVN0b3JlIH0gZnJvbSBcIkByZWR1eGpzL3Rvb2xraXRcIjtcbmltcG9ydCB7XG4gIHBlcnNpc3RTdG9yZSxcbiAgcGVyc2lzdFJlZHVjZXIsXG4gIEZMVVNILFxuICBSRUhZRFJBVEUsXG4gIFBBVVNFLFxuICBQRVJTSVNULFxuICBQVVJHRSxcbiAgUkVHSVNURVJcbn0gZnJvbSBcInJlZHV4LXBlcnNpc3RcIjtcbmltcG9ydCBzdG9yYWdlIGZyb20gXCJyZWR1eC1wZXJzaXN0L2xpYi9zdG9yYWdlXCI7XG5pbXBvcnQgeyBjb21iaW5lUmVkdWNlcnMgfSBmcm9tIFwicmVkdXhcIjtcbmltcG9ydCBXaWRnZXRSZWR1Y2VyIGZyb20gXCIuL3JlZHVjZXJcIjtcblxuZXhwb3J0IGNvbnN0IGdldFN0b3JlID0gKHtcbiAgY2xpZW50SWQsXG4gIGxvZ2luVXJsLFxuICBzdW1taXQsXG4gIGFwaUJhc2VVcmwsXG4gIHVwZGF0ZVByb2ZpbGVcbn0pID0+IHtcbiAgLy8gdG8gYWRkIG90aGVyIHJlZHVjZXJzIGxhdGVyXG4gIGNvbnN0IHJlZHVjZXJzID0gY29tYmluZVJlZHVjZXJzKHtcbiAgICB3aWRnZXRTdGF0ZTogV2lkZ2V0UmVkdWNlclxuICB9KTtcblxuICBjb25zdCBzdG9yZSA9IGNvbmZpZ3VyZVN0b3JlKHtcbiAgICByZWR1Y2VyOiBwZXJzaXN0UmVkdWNlcihcbiAgICAgIHtcbiAgICAgICAga2V5OiBgcm9vdF9teV9vcmRlcnNfdGlja2V0c18ke2NsaWVudElkfWAsXG4gICAgICAgIHN0b3JhZ2VcbiAgICAgIH0sXG4gICAgICByZWR1Y2Vyc1xuICAgICksXG4gICAgbWlkZGxld2FyZTogKGdldERlZmF1bHRNaWRkbGV3YXJlKSA9PlxuICAgICAgZ2V0RGVmYXVsdE1pZGRsZXdhcmUoe1xuICAgICAgICB0aHVuazoge1xuICAgICAgICAgIGV4dHJhQXJndW1lbnQ6IHtcbiAgICAgICAgICAgIGNsaWVudElkLFxuICAgICAgICAgICAgYXBpQmFzZVVybCxcbiAgICAgICAgICAgIHN1bW1pdCxcbiAgICAgICAgICAgIGxvZ2luVXJsLFxuICAgICAgICAgICAgdXBkYXRlUHJvZmlsZVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgaW1tdXRhYmxlQ2hlY2s6IGZhbHNlLFxuICAgICAgICBzZXJpYWxpemFibGVDaGVjazoge1xuICAgICAgICAgIGlnbm9yZWRBY3Rpb25zOiBbRkxVU0gsIFJFSFlEUkFURSwgUEFVU0UsIFBFUlNJU1QsIFBVUkdFLCBSRUdJU1RFUl1cbiAgICAgICAgfVxuICAgICAgfSlcbiAgfSk7XG5cbiAgcmV0dXJuIHN0b3JlO1xufTtcblxuZXhwb3J0IGNvbnN0IHVzZUluaXRTdG9yZSA9IChjb25maWcpID0+IHtcbiAgY29uc3Qgc3RvcmUgPSB1c2VNZW1vKCgpID0+IGdldFN0b3JlKGNvbmZpZyksIFtdKTtcbiAgY29uc3QgcGVyc2lzdG9yID0gdXNlTWVtbygoKSA9PiBwZXJzaXN0U3RvcmUoc3RvcmUpLCBbc3RvcmVdKTtcblxuICByZXR1cm4ge1xuICAgIHN0b3JlLFxuICAgIHBlcnNpc3RvclxuICB9O1xufTtcbiIsImltcG9ydCB7XG4gIGluaXRMb2dPdXQsXG4gIGdldEFjY2Vzc1Rva2VuXG59IGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3NlY3VyaXR5L21ldGhvZHNcIjtcbmltcG9ydCAqIGFzIFNlbnRyeSBmcm9tIFwiQHNlbnRyeS9yZWFjdFwiO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcbmNvbnN0IGdldEFjY2Vzc1Rva2VuTW9jayA9ICgpID0+IHtcbiAgdGhyb3cgbmV3IEVycm9yKFwiQWNjZXNzIHRva2VuIGVycm9yXCIpO1xuICAvLyByZXR1cm4gYXV0aFByb21pc2VSZWplY3QoKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRBY2Nlc3NUb2tlblNhZmVseSA9IGFzeW5jICgpID0+IHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gYXdhaXQgZ2V0QWNjZXNzVG9rZW4oKS5jYXRjaCgoZSkgPT4ge1xuICAgICAgY29uc29sZS5sb2coXCJteS1vcmRlcnMtdGlja2V0cy13aWRnZXQ6OmdldEFjY2Vzc1Rva2VuU2FmZWx5IGVycm9yOiBcIiwgZSk7XG4gICAgICBTZW50cnkuY2FwdHVyZUV4Y2VwdGlvbihlKTtcbiAgICAgIGluaXRMb2dPdXQoKTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH0pO1xuICB9IGNhdGNoIChlKSB7XG4gICAgY29uc29sZS5sb2coXCJteS1vcmRlcnMtdGlja2V0cy13aWRnZXQ6OmdldEFjY2Vzc1Rva2VuU2FmZWx5IGVycm9yOiBcIiwgZSk7XG4gICAgU2VudHJ5LmNhcHR1cmVFeGNlcHRpb24oZSk7XG4gICAgaW5pdExvZ091dCgpO1xuICAgIHJldHVybiBudWxsO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgYXV0aFByb21pc2VSZWplY3QgPSBhc3luYyAoKSA9PlxuICBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoXCJBdXRoIFRva2VuIGVycm9yXCIpKTtcbiIsImV4cG9ydCBjb25zdCBMQVNUX0hPVVJfT0ZfMjRfSE9VUiA9IDIzO1xuZXhwb3J0IGNvbnN0IExBU1RfTUlOVVRFX09GX0hPVVIgPSA1OTtcbmV4cG9ydCBjb25zdCBPTkVfUEFHRV9ORVhUID0gMTtcbmV4cG9ydCBjb25zdCBNSUxMSVNFQ19UT19TRUMgPSAxMDAwO1xuZXhwb3J0IGNvbnN0IE9ORV9EQVkgPSAxO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfSVRFTVNfUEVSX1BBR0UgPSA1O1xuZXhwb3J0IGNvbnN0IEZJUlNUX1BBR0UgPSAxO1xuZXhwb3J0IGNvbnN0IFBBR0lOQVRJT05fRElTUExBWV9DT1VOVCA9IDU7XG5leHBvcnQgY29uc3QgU1RFUF9PTkUgPSAxO1xuZXhwb3J0IGNvbnN0IFNURVBfVFdPID0gMjtcbmV4cG9ydCBjb25zdCBTVEVQX1RIUkVFID0gMztcbmV4cG9ydCBjb25zdCBNSU5fUkVRVUlSRUQgPSAxO1xuXG5leHBvcnQgY29uc3QgU1RBVFVTX0NPTVBMRVRFID0gXCJTVEFUVVNfQ09NUExFVEVcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfSU5DT01QTEVURSA9IFwiU1RBVFVTX0lOQ09NUExFVEVcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfUEVORElORyA9IFwiU1RBVFVTX1BFTkRJTkdcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfQ0FOQ0VMTEVEID0gXCJTVEFUVVNfQ0FOQ0VMTEVEXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX0VSUk9SID0gXCJTVEFUVVNfRVJST1JcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfUFJPQ0VTU0lORyA9IFwiU1RBVFVTX1BST0NFU1NJTkdcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfVU5BU1NJR05FRCA9IFwiU1RBVFVTX1VOQVNTSUdORURcIjtcblxuZXhwb3J0IGNvbnN0IFNUQVRVU19SRUZVTkRfUEVORElORyA9IFwiU1RBVFVTX1JFRlVORF9QRU5ESU5HXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX1JFRlVORF9BUFBST1ZFRCA9IFwiU1RBVFVTX1JFRlVORF9BUFBST1ZFRFwiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19SRUZVTkRfUkVKRUNURUQgPSBcIlNUQVRVU19SRUZVTkRfUkVKRUNURURcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfUkVGVU5EX1BFTkRJTkdfTEMgPSBcIlJlcXVlc3RlZFwiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19SRUZVTkRfQVBQUk9WRURfTEMgPSBcIkFwcHJvdmVkXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX1JFRlVORF9SRUpFQ1RFRF9MQyA9IFwiUmVqZWN0ZWRcIjtcblxuZXhwb3J0IGNvbnN0IEpFU1RfVElNRU9VVF9JTl9NSUxMSVNFQyA9IDEwMDAwO1xuXG5leHBvcnQgY29uc3QgT05FX0lURU0gPSAxO1xuZXhwb3J0IGNvbnN0IFRXT19JVEVNID0gMjtcbmV4cG9ydCBjb25zdCBGSVZFX0lURU0gPSA1O1xuZXhwb3J0IGNvbnN0IFNJWF9JVEVNID0gNjtcblxuZXhwb3J0IGNvbnN0IFBST01JU0VfQkFUQ0hfTElNSVQgPSAxMDtcbmV4cG9ydCBjb25zdCBGSUZUWV9QRVJfUEFHRSA9IDUwO1xuXG5leHBvcnQgY29uc3QgRVJST1JfQ09ERVMgPSB7XG4gIDQwMTogNDAxLFxuICA0MDM6IDQwMSxcbiAgNDEyOiA0MDEsXG4gIDUwMDogNTAwXG59O1xuXG5leHBvcnQgY29uc3QgVEFCUyA9IHtcbiAgT1JERVJTOiBcIk9SREVSU1wiLFxuICBUSUNLRVRTOiBcIlRJQ0tFVFNcIlxufTtcblxuZXhwb3J0IGNvbnN0IE9ORV9SRVRSWSA9IDE7XG5cbmV4cG9ydCBjb25zdCBGSUxURVJfQUNUSU9OID0ge1xuICBPUkRFUlM6IFwiT1JERVJTXCIsXG4gIEVYVEVSTkFMX1RJQ0tFVFM6IFwiRVhURVJOQUxfVElDS0VUU1wiLFxuICBUSUNLRVRTX0JZX09SREVSUzogXCJUSUNLRVRTX0JZX09SREVSU1wiXG59O1xuXG5leHBvcnQgY29uc3QgVElDS0VUX0RSQVdFUl9JRCA9IFwidGlja2V0RHJhd2VyXCI7XG4iLCJpbXBvcnQgbW9tZW50IGZyb20gXCJtb21lbnQtdGltZXpvbmVcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQge1xuICBMQVNUX0hPVVJfT0ZfMjRfSE9VUixcbiAgTEFTVF9NSU5VVEVfT0ZfSE9VUixcbiAgTUlMTElTRUNfVE9fU0VDLFxuICBGSVJTVF9QQUdFXG59IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuXG5leHBvcnQgY29uc3QgZm9ybWF0Q3VycmVuY3kgPSAodmFsdWUsIHsgbG9jYWxlID0gXCJlbi1VU1wiLCAuLi5vcHRpb25zIH0pID0+IHtcbiAgY29uc3QgZGVmYXVsdE9wdGlvbnMgPSB7XG4gICAgY3VycmVuY3k6IFwiVVNEXCIsXG4gICAgbWluaW11bUZyYWN0aW9uRGlnaXRzOiAyLFxuICAgIG1heGltdW1GcmFjdGlvbkRpZ2l0czogMlxuICB9O1xuXG4gIGNvbnN0IGZvcm1hdHRlciA9IG5ldyBJbnRsLk51bWJlckZvcm1hdChsb2NhbGUsIHtcbiAgICBzdHlsZTogXCJjdXJyZW5jeVwiLFxuICAgIC4uLmRlZmF1bHRPcHRpb25zLFxuICAgIC4uLm9wdGlvbnNcbiAgfSk7XG5cbiAgcmV0dXJuIGZvcm1hdHRlci5mb3JtYXQodmFsdWUpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEZvcm1hdHRlZERhdGUgPSAoZGF0ZXRpbWUsIHRpbWVab25lKSA9PiB7XG4gIGlmICh0aW1lWm9uZSlcbiAgICByZXR1cm4gbW9tZW50XG4gICAgICAudHooZGF0ZXRpbWUgKiBNSUxMSVNFQ19UT19TRUMsIHRpbWVab25lKVxuICAgICAgLmZvcm1hdChcIk1NTU0gREQsIFlZWVlcIik7XG5cbiAgcmV0dXJuIG1vbWVudC51bml4KGRhdGV0aW1lKS5mb3JtYXQoXCJNTU1NIERELCBZWVlZXCIpO1xufTtcblxuZXhwb3J0IGNvbnN0IGNhbGN1bGF0ZU9yZGVyVG90YWxzID0gKHsgb3JkZXIsIHN1bW1pdCB9KSA9PiB7XG4gIGlmICghb3JkZXIgfHwgIXN1bW1pdCkgcmV0dXJuIHt9O1xuICBjb25zdCB0aWNrZXRzID0gb3JkZXI/Lm1lbWJlclRpY2tldHM7XG4gIGlmICghdGlja2V0cykgcmV0dXJuIHt9O1xuXG4gIGNvbnN0IHsgcmVmdW5kZWRfYW1vdW50LCBkaXNjb3VudF9hbW91bnQsIGFtb3VudCwgcmF3X2Ftb3VudCB9ID0gb3JkZXI7XG4gIGNvbnN0IHsgdGlja2V0X3R5cGVzIH0gPSBzdW1taXQ7XG5cbiAgY29uc3QgY3VycmVuY3lPYmplY3QgPSB7IGN1cnJlbmN5OiBvcmRlci5jdXJyZW5jeSB9O1xuXG4gIGNvbnN0IHRheGVzU3VtbWFyeSA9IFtdO1xuICBjb25zdCB0aWNrZXRTdW1tYXJ5ID0gW107XG4gIGxldCBwdXJjaGFzZVRpY2tldFRvdGFsID0gMDtcblxuICBPYmplY3Qua2V5cyhvcmRlci50aWNrZXRzX2V4Y2VycHRfYnlfdGlja2V0X3R5cGUpLm1hcCgodGlja2V0KSA9PiB7XG4gICAgY29uc3QgdGlja2V0VHlwZSA9IHRpY2tldF90eXBlcz8uZmluZCgodHQpID0+IHR0Lm5hbWUgPT09IHRpY2tldCk7XG4gICAgaWYgKCF0aWNrZXRUeXBlKSByZXR1cm4gbnVsbDtcbiAgICB0aWNrZXRTdW1tYXJ5LnB1c2goe1xuICAgICAgdGlja2V0X3R5cGVfaWQ6IHRpY2tldFR5cGUuaWQsXG4gICAgICB0aWNrZXRfdHlwZTogdGlja2V0VHlwZSxcbiAgICAgIG5hbWU6IHRpY2tldCxcbiAgICAgIHF0eTogb3JkZXIudGlja2V0c19leGNlcnB0X2J5X3RpY2tldF90eXBlW3RpY2tldF1cbiAgICB9KTtcbiAgICBwdXJjaGFzZVRpY2tldFRvdGFsICs9XG4gICAgICB0aWNrZXRUeXBlLmNvc3QgKiBvcmRlci50aWNrZXRzX2V4Y2VycHRfYnlfdGlja2V0X3R5cGVbdGlja2V0XTtcblxuICAgIHJldHVybiB0aWNrZXRTdW1tYXJ5O1xuICB9KTtcblxuICBvcmRlcj8uYXBwbGllZF90YXhlcz8uZm9yRWFjaCgodGF4KSA9PiB7XG4gICAgY29uc3QgZm9ybWF0dGVkVGF4ID0ge1xuICAgICAgLi4udGF4LFxuICAgICAgYW1vdW50OiBmb3JtYXRDdXJyZW5jeSh0YXguYW1vdW50LCBjdXJyZW5jeU9iamVjdClcbiAgICB9O1xuICAgIHRheGVzU3VtbWFyeS5wdXNoKGZvcm1hdHRlZFRheCk7XG4gIH0pO1xuXG4gIGNvbnN0IHB1cmNoYXNlVG90YWwgPSBmb3JtYXRDdXJyZW5jeShwdXJjaGFzZVRpY2tldFRvdGFsLCBjdXJyZW5jeU9iamVjdCk7XG5cbiAgY29uc3QgZGlzY291bnRUb3RhbCA9IGZvcm1hdEN1cnJlbmN5KGRpc2NvdW50X2Ftb3VudCwgY3VycmVuY3lPYmplY3QpO1xuICBjb25zdCByZWZ1bmRUb3RhbCA9IGZvcm1hdEN1cnJlbmN5KHJlZnVuZGVkX2Ftb3VudCwgY3VycmVuY3lPYmplY3QpO1xuICBjb25zdCBzdWJUb3RhbCA9IGZvcm1hdEN1cnJlbmN5KHJhd19hbW91bnQsIGN1cnJlbmN5T2JqZWN0KTtcbiAgY29uc3QgYW1vdW50VG90YWwgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob3JkZXIsIFwiYW1vdW50XCIpXG4gICAgPyBmb3JtYXRDdXJyZW5jeShhbW91bnQsIGN1cnJlbmN5T2JqZWN0KVxuICAgIDogZm9ybWF0Q3VycmVuY3kocHVyY2hhc2VUb3RhbCwgY3VycmVuY3lPYmplY3QpO1xuXG4gIHJldHVybiB7XG4gICAgZGlzY291bnRUb3RhbCxcbiAgICByZWZ1bmRUb3RhbCxcbiAgICBzdWJUb3RhbCxcbiAgICBhbW91bnRUb3RhbCxcbiAgICB0aWNrZXRTdW1tYXJ5LFxuICAgIHRheGVzU3VtbWFyeVxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldE9yZGVyVGlja2V0cyA9IChtZW1iZXJPcmRlcnMsIG9yZGVySWQpID0+IHtcbiAgY29uc3Qgb3JkZXJzID0gbWVtYmVyT3JkZXJzLmZpbHRlcigobykgPT4gby5pZCA9PT0gb3JkZXJJZCk7XG4gIHJldHVybiBvcmRlcnNbMF0/Lm1lbWJlclRpY2tldHM7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0RXBvY2hMb3dlclVwcGVySW5TZWNvbmRzID0gKHRzKSA9PiB7XG4gIGNvbnN0IGxvd2VyID0gdHMuc2V0SG91cnMoMCwgMCwgMCwgMCkgLyBNSUxMSVNFQ19UT19TRUM7XG4gIGNvbnN0IHVwcGVyID1cbiAgICB0cy5zZXRIb3VycyhMQVNUX0hPVVJfT0ZfMjRfSE9VUiwgTEFTVF9NSU5VVEVfT0ZfSE9VUiwgMCwgMCkgL1xuICAgIE1JTExJU0VDX1RPX1NFQztcbiAgcmV0dXJuIHtcbiAgICBsb3dlcixcbiAgICB1cHBlclxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRDdXJyZW50VGltZSA9ICgpID0+XG4gIE1hdGgucm91bmQoK25ldyBEYXRlKCkgLyBNSUxMSVNFQ19UT19TRUMpO1xuXG5leHBvcnQgY29uc3QgZ2V0Tm93ID0gKCkgPT4gKGRpc3BhdGNoLCBnZXRTdGF0ZSkgPT4ge1xuICBjb25zdCB7IHRpbWVyU3RhdGUgfSA9IGdldFN0YXRlKCk7XG4gIHJldHVybiB0aW1lclN0YXRlPy5ub3dVdGMgPT0gbnVsbCA/IGRlZmF1bHRDdXJyZW50VGltZSgpIDogdGltZXJTdGF0ZT8ubm93VXRjO1xufTtcblxuZXhwb3J0IGNvbnN0IHVzZU5vdyA9ICgpID0+IHtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuXG4gIHJldHVybiBkaXNwYXRjaChnZXROb3coKSk7XG59O1xuXG4vKipcbiAqIEBwYXJhbSBjdXJyZW50UGFnZVxuICogQHBhcmFtIGRhdGFcbiAqIEBwYXJhbSB0b3RhbFxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmV4cG9ydCBjb25zdCBoYXNMb2FkZWRBbGxEYXRhID0gKGN1cnJlbnRQYWdlLCBkYXRhLCB0b3RhbCkgPT4ge1xuICBsZXQgcmVzID0gZmFsc2U7XG4gIGNvbnN0IGRhdGFMZW5ndGggPSBBcnJheS5pc0FycmF5KGRhdGEpID8gZGF0YS5sZW5ndGggOiAwO1xuICAvLyB3ZSBhbHJlYWR5IGxvYWRlZCBhbGwgIGRhdGEgKCBmaXJzdCBwYWdlIGlzIGFsd2F5cyByZWxvYWRlZCBpdCApXG4gIGlmIChjdXJyZW50UGFnZSA+IEZJUlNUX1BBR0UgJiYgZGF0YUxlbmd0aCA+IDAgJiYgZGF0YUxlbmd0aCA9PT0gdG90YWwpXG4gICAgcmVzID0gdHJ1ZTtcbiAgcmV0dXJuIHJlcztcbn07XG5cbmV4cG9ydCBjb25zdCBjYWxjdWxhdGVBY3RpdmVGaWx0ZXJzID0gKGZpbHRlcnMpID0+IHtcbiAgbGV0IGNvdW50ID0gMDtcbiAgT2JqZWN0LmVudHJpZXMoZmlsdGVycykuZm9yRWFjaCgoWywgdmFsdWVdKSA9PiB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICBjb3VudCArPSB2YWx1ZS5sZW5ndGg7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgJiYgdmFsdWUudHJpbSgpICE9PSBcIlwiKSB7XG4gICAgICBjb3VudCsrO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSBcIm51bWJlclwiICYmIHZhbHVlID4gMCkge1xuICAgICAgY291bnQrKztcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gY291bnQ7XG59O1xuIiwiaW1wb3J0IG1vbWVudCBmcm9tIFwibW9tZW50LXRpbWV6b25lXCI7XG5pbXBvcnQgeyBNSUxMSVNFQ19UT19TRUMsIE9ORV9EQVkgfSBmcm9tIFwiLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IHVzZU5vdyB9IGZyb20gXCIuXCI7XG5cbmV4cG9ydCBjb25zdCBjaGVja1N1bW1pdFBhc3QgPSAoc3VtbWl0LCBub3cpID0+IHtcbiAgaWYgKCFzdW1taXQpIHJldHVybiBudWxsO1xuXG4gIGNvbnN0IHJlYXNzaWduX2RhdGUgPVxuICAgIHN1bW1pdD8ucmVhc3NpZ25fdGlja2V0X3RpbGxfZGF0ZSAmJlxuICAgIHN1bW1pdC5yZWFzc2lnbl90aWNrZXRfdGlsbF9kYXRlIDwgc3VtbWl0LmVuZF9kYXRlXG4gICAgICA/IHN1bW1pdC5yZWFzc2lnbl90aWNrZXRfdGlsbF9kYXRlXG4gICAgICA6IHN1bW1pdC5lbmRfZGF0ZTtcblxuICByZXR1cm4gbm93ID4gcmVhc3NpZ25fZGF0ZTtcbn07XG5cbmV4cG9ydCBjb25zdCBjaGVja1N1bW1pdFN0YXJ0ZWQgPSAoc3VtbWl0LCBub3cpID0+IHtcbiAgaWYgKCFzdW1taXQpIHJldHVybiBudWxsO1xuXG4gIHJldHVybiBzdW1taXQuc3RhcnRfZGF0ZSA8IG5vdztcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRTdW1taXREYXlzRGlmZiA9IChzdW1taXQpID0+IHtcbiAgaWYgKCFzdW1taXQpIHJldHVybiBudWxsO1xuICBjb25zdCBzdGFydERheSA9IG1vbWVudChzdW1taXQuc3RhcnRfZGF0ZSAqIE1JTExJU0VDX1RPX1NFQykudHooXG4gICAgc3VtbWl0LnRpbWVfem9uZV9pZFxuICApO1xuICBjb25zdCBlbmREYXkgPSBtb21lbnQoc3VtbWl0LmVuZF9kYXRlICogTUlMTElTRUNfVE9fU0VDKS50eihcbiAgICBzdW1taXQudGltZV96b25lX2lkXG4gICk7XG4gIGNvbnN0IGRheXMgPSBlbmREYXk/LmRpZmYoc3RhcnREYXksIFwiZGF5c1wiKTtcbiAgcmV0dXJuIHtcbiAgICBzdGFydERheSxcbiAgICBlbmREYXksXG4gICAgZGF5c1xuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFN1bW1pdEZvcm1hdHRlZERhdGUgPSAoc3VtbWl0KSA9PiB7XG4gIGlmICghc3VtbWl0KSByZXR1cm4gbnVsbDtcbiAgY29uc3QgeyBzdGFydERheSwgZW5kRGF5LCBkYXlzIH0gPSBnZXRTdW1taXREYXlzRGlmZihzdW1taXQpO1xuICBpZiAoIXN0YXJ0RGF5IHx8ICFlbmREYXkpIHJldHVybiBudWxsO1xuICBsZXQgZm9ybWF0U3RhcnREYXRlID0gXCJNTU1NIERELCBZWVlZXCI7XG4gIGxldCBmb3JtYXRFbmREYXRlID0gXCJNTU1NIERELCBZWVlZXCI7XG4gIGlmIChzdGFydERheS55ZWFyKCkgPT09IGVuZERheS55ZWFyKCkpIGZvcm1hdFN0YXJ0RGF0ZSA9IFwiTU1NTSBERFwiO1xuICBpZiAoc3RhcnREYXkubW9udGgoKSA9PT0gZW5kRGF5Lm1vbnRoKCkpIGZvcm1hdEVuZERhdGUgPSBcIkRELCBZWVlZXCI7XG5cbiAgY29uc3Qgc3RhcnREYXRlID0gc3RhcnREYXkuZm9ybWF0KGZvcm1hdFN0YXJ0RGF0ZSk7XG4gIGNvbnN0IGVuZERhdGUgPSBlbmREYXkuZm9ybWF0KGZvcm1hdEVuZERhdGUpO1xuXG4gIGlmIChkYXlzID4gT05FX0RBWSkgcmV0dXJuIGAke3N0YXJ0RGF0ZX0gLSAke2VuZERhdGV9YDtcblxuICByZXR1cm4gc3RhcnREYXRlO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFN1bW1pdExvY2F0aW9uID0gKHN1bW1pdCkgPT4ge1xuICBpZiAoIXN1bW1pdCkgcmV0dXJuIG51bGw7XG5cbiAgY29uc3QgbG9jYXRpb24gPSBzdW1taXQubG9jYXRpb25zPy5maW5kKFxuICAgIChsKSA9PiBsLmNsYXNzX25hbWUgPT09IFwiU3VtbWl0VmVudWVcIiAmJiBsLmlzX21haW4gPT09IHRydWVcbiAgKTtcblxuICBpZiAoIWxvY2F0aW9uKSByZXR1cm4gbnVsbDtcblxuICByZXR1cm4gYCR7bG9jYXRpb24uY2l0eX0sICR7bG9jYXRpb24uY291bnRyeX1gO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFN1bW1pdFJlYXNzaWduRGF0ZSA9IChzdW1taXQpID0+IHtcbiAgaWYgKCFzdW1taXQpIHJldHVybiBudWxsO1xuXG4gIHJldHVybiBzdW1taXQucmVhc3NpZ25fdGlja2V0X3RpbGxfZGF0ZSAmJlxuICAgIHN1bW1pdC5yZWFzc2lnbl90aWNrZXRfdGlsbF9kYXRlIDwgc3VtbWl0LmVuZF9kYXRlXG4gICAgPyBzdW1taXQucmVhc3NpZ25fdGlja2V0X3RpbGxfZGF0ZVxuICAgIDogc3VtbWl0LmVuZF9kYXRlO1xufTtcblxuZXhwb3J0IGNvbnN0IHVzZVN1bW1pdERldGFpbHMgPSAoeyBzdW1taXQgfSkgPT4ge1xuICBjb25zdCBub3cgPSB1c2VOb3coKTtcblxuICBpZiAoIXN1bW1pdCkgcmV0dXJuIHt9O1xuXG4gIGNvbnN0IGxvY2F0aW9uID0gZ2V0U3VtbWl0TG9jYXRpb24oc3VtbWl0KTtcbiAgY29uc3QgZm9ybWF0dGVkRGF0ZSA9IGdldFN1bW1pdEZvcm1hdHRlZERhdGUoc3VtbWl0KTtcbiAgY29uc3QgcmVhc3NpZ25EYXRlID0gZ2V0U3VtbWl0UmVhc3NpZ25EYXRlKHN1bW1pdCk7XG4gIGNvbnN0IGZvcm1hdHRlZFJlYXNzaWduRGF0ZSA9IG1vbWVudC50eihcbiAgICByZWFzc2lnbkRhdGUsXG4gICAgc3VtbWl0LnRpbWVfem9uZT8udGltZV96b25lX2lkXG4gICk7XG4gIGNvbnN0IGRheXNVbnRpbFJlYXNzaWduRGVhZGxpbmUgPSBnZXRTdW1taXREYXlzRGlmZihcbiAgICBub3csXG4gICAgcmVhc3NpZ25EYXRlLFxuICAgIHN1bW1pdC50aW1lX3pvbmU/Lm5hbWVcbiAgKTtcblxuICBjb25zdCBpc1Bhc3QgPSBjaGVja1N1bW1pdFBhc3Qoc3VtbWl0LCBub3cpO1xuICBjb25zdCBpc1N0YXJ0ZWQgPSBjaGVja1N1bW1pdFN0YXJ0ZWQoc3VtbWl0LCBub3cpO1xuICBjb25zdCBpc1JlYXNzaWduYWJsZSA9IHJlYXNzaWduRGF0ZSA+IG5vdztcblxuICByZXR1cm4ge1xuICAgIG5hbWU6IHN1bW1pdD8ubmFtZSxcbiAgICBub3csXG4gICAgbG9jYXRpb24sXG4gICAgZm9ybWF0dGVkRGF0ZSxcbiAgICByZWFzc2lnbkRhdGUsXG4gICAgZm9ybWF0dGVkUmVhc3NpZ25EYXRlLFxuICAgIGRheXNVbnRpbFJlYXNzaWduRGVhZGxpbmUsXG4gICAgaXNQYXN0LFxuICAgIGlzU3RhcnRlZCxcbiAgICBpc1JlYXNzaWduYWJsZVxuICB9O1xufTtcbiIsImltcG9ydCAqIGFzIHl1cCBmcm9tIFwieXVwXCI7XG5pbXBvcnQgaTE4biBmcm9tIFwiLi4vaTE4blwiO1xuaW1wb3J0IHtcbiAgTUlOX1JFUVVJUkVELFxuICBTVEFUVVNfQ0FOQ0VMTEVELFxuICBTVEFUVVNfQ09NUExFVEUsXG4gIFNUQVRVU19JTkNPTVBMRVRFLFxuICBTVEFUVVNfUkVGVU5EX0FQUFJPVkVELFxuICBTVEFUVVNfUkVGVU5EX0FQUFJPVkVEX0xDLFxuICBTVEFUVVNfUkVGVU5EX1BFTkRJTkcsXG4gIFNUQVRVU19SRUZVTkRfUEVORElOR19MQyxcbiAgU1RBVFVTX1JFRlVORF9SRUpFQ1RFRCxcbiAgU1RBVFVTX1JFRlVORF9SRUpFQ1RFRF9MQyxcbiAgU1RBVFVTX1VOQVNTSUdORURcbn0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBUSUNLRVRfQVRURU5ERUVfS0VZUyB9IGZyb20gXCIuLi9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb25zdGFudHNcIjtcbmltcG9ydCB7XG4gIGNoZWNrSWZWYWx1ZU1hdGNoLFxuICBnZXRUeXBlSW5pdGlhbFZhbHVlLFxuICB0b1NsdWdcbn0gZnJvbSBcIi4uL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29tcG9uZW50cy91dGlsc1wiO1xuaW1wb3J0IHtcbiAgUXVlc3Rpb25UeXBlX0NoZWNrYm94LFxuICBRdWVzdGlvblR5cGVfQ2hlY2tCb3hMaXN0LFxuICBRdWVzdGlvblR5cGVfQ29tYm9Cb3gsXG4gIFF1ZXN0aW9uVHlwZV9Db3VudHJ5Q29tYm9Cb3gsXG4gIFF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbkxpc3Rcbn0gZnJvbSBcIi4uL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29uc3RhbnRzXCI7XG5cbmV4cG9ydCBjb25zdCBzdGF0dXNEYXRhID0ge1xuICBbU1RBVFVTX1VOQVNTSUdORURdOiB7XG4gICAgdHlwZTogU1RBVFVTX1VOQVNTSUdORUQsXG4gICAgdGV4dDogaTE4bi50KFwidGlja2V0X3N0YXR1cy51bmFzc2lnbmVkXCIpXG4gIH0sXG4gIFtTVEFUVVNfSU5DT01QTEVURV06IHtcbiAgICB0eXBlOiBTVEFUVVNfSU5DT01QTEVURSxcbiAgICB0ZXh0OiBpMThuLnQoXCJ0aWNrZXRfc3RhdHVzLmluY29tcGxldGVcIilcbiAgfSxcbiAgW1NUQVRVU19DT01QTEVURV06IHtcbiAgICB0eXBlOiBTVEFUVVNfQ09NUExFVEUsXG4gICAgdGV4dDogaTE4bi50KFwidGlja2V0X3N0YXR1cy5jb21wbGV0ZVwiKVxuICB9LFxuICBbU1RBVFVTX0NBTkNFTExFRF06IHtcbiAgICB0eXBlOiBTVEFUVVNfQ0FOQ0VMTEVELFxuICAgIHRleHQ6IGkxOG4udChcInRpY2tldF9zdGF0dXMuY2FuY2VsbGVkXCIpXG4gIH1cbn07XG5leHBvcnQgY29uc3QgZ2V0VGlja2V0U3RhdHVzS2V5ID0gKHRpY2tldCkgPT4ge1xuICBpZiAoIXRpY2tldC5pc19hY3RpdmUpIHJldHVybiBTVEFUVVNfQ0FOQ0VMTEVEO1xuXG4gIGlmICh0aWNrZXQub3duZXJfaWQgPT09IDApIHJldHVybiBTVEFUVVNfVU5BU1NJR05FRDtcblxuICBpZiAoIXRpY2tldC5vd25lcj8uZmlyc3RfbmFtZSB8fCAhdGlja2V0Lm93bmVyPy5sYXN0X25hbWUpXG4gICAgcmV0dXJuIFNUQVRVU19JTkNPTVBMRVRFO1xuXG4gIGlmICh0aWNrZXQub3duZXIgJiYgdGlja2V0Lm93bmVyPy5zdGF0dXMgPT09IFwiSW5jb21wbGV0ZVwiKVxuICAgIHJldHVybiBTVEFUVVNfSU5DT01QTEVURTtcblxuICBpZiAodGlja2V0Lm93bmVyICYmIHRpY2tldC5vd25lcj8uc3RhdHVzID09PSBcIkNvbXBsZXRlXCIpXG4gICAgcmV0dXJuIFNUQVRVU19DT01QTEVURTtcblxuICByZXR1cm4gU1RBVFVTX0lOQ09NUExFVEU7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0VGlja2V0U3RhdHVzRGF0YSA9ICh0aWNrZXQsIGlzU3VtbWl0UGFzdCkgPT5cbiAgc3RhdHVzRGF0YVtnZXRUaWNrZXRTdGF0dXNLZXkodGlja2V0LCBpc1N1bW1pdFBhc3QpXTtcblxuZXhwb3J0IGNvbnN0IGdldFRpY2tldFJvbGUgPSAodGlja2V0KSA9PiB7XG4gIGlmICghdGlja2V0LmJhZGdlKSByZXR1cm4gbnVsbDtcblxuICBjb25zdCB7IGZlYXR1cmVzIH0gPSB0aWNrZXQuYmFkZ2U7XG5cbiAgaWYgKGZlYXR1cmVzLmxlbmd0aCA+IDApXG4gICAgcmV0dXJuIGZlYXR1cmVzLm1hcCgoZmVhdHVyZSkgPT4gZmVhdHVyZS5uYW1lKS5qb2luKFwiLCBcIik7XG5cbiAgcmV0dXJuIG51bGw7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0VGlja2V0VHlwZSA9ICh0aWNrZXQsIHN1bW1pdCkgPT5cbiAgc3VtbWl0LnRpY2tldF90eXBlcy5maW5kKCh0eXBlKSA9PiB0eXBlLmlkID09PSB0aWNrZXQudGlja2V0X3R5cGVfaWQpO1xuXG5leHBvcnQgY29uc3QgaXNUaWNrZXRSZWZ1bmRhYmxlID0gKHRpY2tldCkgPT5cbiAgdGlja2V0Py5maW5hbF9hbW91bnQgPiAwICYmXG4gIHRpY2tldD8ubmV0X3NlbGxpbmdfY29zdCA+IHRpY2tldC5yZWZ1bmRlZF9hbW91bnQgJiZcbiAgIXRpY2tldD8ucmVmdW5kX3JlcXVlc3RzPy5zb21lKFxuICAgIChycikgPT4gcnIuc3RhdHVzID09PSBTVEFUVVNfUkVGVU5EX1BFTkRJTkdfTENcbiAgKTtcblxuZXhwb3J0IGNvbnN0IHRpY2tldHNSZWZ1bmRhYmxlID0gKHRpY2tldHMpID0+XG4gIHRpY2tldHM/LmZpbHRlcigodGlja2V0KSA9PiBpc1RpY2tldFJlZnVuZGFibGUodGlja2V0KSkubGVuZ3RoIHx8IDA7XG5cbmV4cG9ydCBjb25zdCBnZXRSZWZ1bmRlZFJlcXVlc3RlZFRpY2tldHMgPSAodGlja2V0cykgPT5cbiAgdGlja2V0cz8uZmlsdGVyKCh0aWNrZXQpID0+XG4gICAgdGlja2V0LnJlZnVuZF9yZXF1ZXN0cz8uc29tZSgocnIpID0+IHJyLnN0YXR1cyA9PT0gU1RBVFVTX1JFRlVORF9QRU5ESU5HX0xDKVxuICApO1xuZXhwb3J0IGNvbnN0IGdldEFsbFJlZnVuZFJlcXVlc3RlZFRpY2tldHMgPSAodGlja2V0cykgPT4ge1xuICBjb25zdCBhbGxUaWNrZXRzID0gW107XG4gIHRpY2tldHM/Lm1hcCgodGlja2V0KSA9PiB7XG4gICAgaWYgKFxuICAgICAgdGlja2V0LnJlZnVuZF9yZXF1ZXN0cz8uc29tZShcbiAgICAgICAgKHJyKSA9PiByci5zdGF0dXMgPT09IFNUQVRVU19SRUZVTkRfUEVORElOR19MQ1xuICAgICAgKSB8fFxuICAgICAgdGlja2V0LnJlZnVuZF9yZXF1ZXN0cz8uc29tZShcbiAgICAgICAgKHJyKSA9PiByci5zdGF0dXMgPT09IFNUQVRVU19SRUZVTkRfQVBQUk9WRURfTENcbiAgICAgICkgfHxcbiAgICAgIHRpY2tldC5yZWZ1bmRfcmVxdWVzdHM/LnNvbWUoXG4gICAgICAgIChycikgPT4gcnIuc3RhdHVzID09PSBTVEFUVVNfUkVGVU5EX1JFSkVDVEVEX0xDXG4gICAgICApXG4gICAgKSB7XG4gICAgICBhbGxUaWNrZXRzLnB1c2godGlja2V0KTtcbiAgICB9XG4gICAgcmV0dXJuIHRpY2tldDtcbiAgfSk7XG4gIHJldHVybiBhbGxUaWNrZXRzO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFJlZnVuZGVkUmVxdWVzdGVkU3RhdHVzID0gKHRpY2tldCkgPT4ge1xuICBpZiAoXG4gICAgdGlja2V0LnJlZnVuZF9yZXF1ZXN0cz8uc29tZSgocnIpID0+IHJyLnN0YXR1cyA9PT0gU1RBVFVTX1JFRlVORF9QRU5ESU5HX0xDKVxuICApXG4gICAgcmV0dXJuIFNUQVRVU19SRUZVTkRfUEVORElORztcbiAgaWYgKFxuICAgIHRpY2tldC5yZWZ1bmRfcmVxdWVzdHM/LnNvbWUoXG4gICAgICAocnIpID0+IHJyLnN0YXR1cyA9PT0gU1RBVFVTX1JFRlVORF9BUFBST1ZFRF9MQ1xuICAgIClcbiAgKVxuICAgIHJldHVybiBTVEFUVVNfUkVGVU5EX0FQUFJPVkVEO1xuICBpZiAoXG4gICAgdGlja2V0LnJlZnVuZF9yZXF1ZXN0cz8uc29tZShcbiAgICAgIChycikgPT4gcnIuc3RhdHVzID09PSBTVEFUVVNfUkVGVU5EX1JFSkVDVEVEX0xDXG4gICAgKVxuICApXG4gICAgcmV0dXJuIFNUQVRVU19SRUZVTkRfUkVKRUNURUQ7XG4gIHJldHVybiBTVEFUVVNfUkVGVU5EX1BFTkRJTkc7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0UmVmdW5kUmVxdWVzdGVkU3RhdHVzQ29sb3IgPSAodGlja2V0KSA9PiB7XG4gIGNvbnN0IHN0YXR1cyA9IGdldFJlZnVuZGVkUmVxdWVzdGVkU3RhdHVzKHRpY2tldCk7XG4gIGxldCBzdGF0dXNDb2xvciA9IFwiXCI7XG4gIHN3aXRjaCAoc3RhdHVzKSB7XG4gICAgY2FzZSBTVEFUVVNfUkVGVU5EX1BFTkRJTkc6XG4gICAgICBzdGF0dXNDb2xvciA9IFwicGVuZGluZ1wiO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBTVEFUVVNfUkVGVU5EX0FQUFJPVkVEOlxuICAgICAgc3RhdHVzQ29sb3IgPSBcImFwcHJvdmVkXCI7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFNUQVRVU19SRUZVTkRfUkVKRUNURUQ6XG4gICAgICBzdGF0dXNDb2xvciA9IFwicmVqZWN0ZWRcIjtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICBzdGF0dXNDb2xvciA9IFwicGVuZGluZ1wiO1xuICB9XG4gIHJldHVybiBzdGF0dXNDb2xvcjtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRUeXBlVmFsaWRhdGlvbiA9ICh0eXBlLCBuYW1lLCBpc1JlcXVpcmVkKSA9PiB7XG4gIGxldCBzY2hlbWE7XG4gIHN3aXRjaCAodHlwZSkge1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NoZWNrYm94OlxuICAgICAgc2NoZW1hID0geXVwLmJvb2woKS5vbmVPZihbdHJ1ZV0sIGkxOG4udChcInZhbGlkYXRpb24uY2hlY2tib3gucmVxdWlyZWRcIikpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0OlxuICAgICAgc2NoZW1hID0geXVwLnN0cmluZyhgRW50ZXIgJHtuYW1lfWApO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ2hlY2tCb3hMaXN0OlxuICAgICAgc2NoZW1hID0geXVwLmFycmF5KCkub2YoeXVwLnN0cmluZygpKTtcbiAgICAgIGlmIChpc1JlcXVpcmVkKSBzY2hlbWEgPSBzY2hlbWEubWluKE1JTl9SRVFVSVJFRCwgYCR7bmFtZX0gaXMgcmVxdWlyZWRgKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveDpcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9Db21ib0JveDpcbiAgICAgIHNjaGVtYSA9IHl1cC5zdHJpbmcoYEVudGVyICR7bmFtZX1gKTtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICBzY2hlbWEgPSB5dXAuc3RyaW5nKGBFbnRlciAke25hbWV9YCk7XG4gICAgICBicmVhaztcbiAgfVxuXG4gIGlmIChpc1JlcXVpcmVkKSB7XG4gICAgc2NoZW1hID0gc2NoZW1hLnJlcXVpcmVkKGAke25hbWV9IGlzIHJlcXVpcmVkYCk7XG4gIH1cblxuICByZXR1cm4gc2NoZW1hO1xufTtcblxuY29uc3QgcGFyc2VTdWJRdWVzdGlvbkFuc3dlciA9IChcbiAgcSxcbiAgYW5zd2VycyxcbiAgYW5zd2VyLFxuICBpbml0aWFsVmFsdWVzLFxuICBvbmx5UmVsZXZhbnRcbikgPT4ge1xuICBpZiAocS5zdWJfcXVlc3Rpb25fcnVsZXM/Lmxlbmd0aCA+IDApIHtcbiAgICBxLnN1Yl9xdWVzdGlvbl9ydWxlcy5mb3JFYWNoKChydWxlKSA9PiB7XG4gICAgICBjb25zdCB7IHN1Yl9xdWVzdGlvbiwgYW5zd2VyX3ZhbHVlcyB9ID0gcnVsZTtcbiAgICAgIGNvbnN0IHN1YlF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhzdWJfcXVlc3Rpb24ubmFtZSwgc3ViX3F1ZXN0aW9uLmlkKTtcbiAgICAgIGNvbnN0IHN1YkFuc3dlciA9IGFuc3dlcnNbc3ViUXVlc3Rpb25TbHVnXTtcbiAgICAgIGNvbnN0IG1hdGNoID0gY2hlY2tJZlZhbHVlTWF0Y2goYW5zd2VyLCBhbnN3ZXJfdmFsdWVzKTtcblxuICAgICAgaWYgKCFvbmx5UmVsZXZhbnQgfHwgbWF0Y2gpIHtcbiAgICAgICAgaW5pdGlhbFZhbHVlc1tzdWJRdWVzdGlvblNsdWddID1cbiAgICAgICAgICBzdWJBbnN3ZXIgfHwgZ2V0VHlwZUluaXRpYWxWYWx1ZShzdWJfcXVlc3Rpb24pO1xuICAgICAgfVxuXG4gICAgICBwYXJzZVN1YlF1ZXN0aW9uQW5zd2VyKFxuICAgICAgICBzdWJfcXVlc3Rpb24sXG4gICAgICAgIGFuc3dlcnMsXG4gICAgICAgIHN1YkFuc3dlcixcbiAgICAgICAgaW5pdGlhbFZhbHVlcyxcbiAgICAgICAgb25seVJlbGV2YW50XG4gICAgICApO1xuICAgIH0pO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgcGFyc2VBbnN3ZXJzID0gKFxuICBvd25lcixcbiAgZXh0cmFRdWVzdGlvbnMsXG4gIGFuc3dlcnMsXG4gIGluY2x1ZGVBdHRlbmRlZUluZm8sXG4gIGluY2x1ZGVEaXNjbGFpbWVyLFxuICBvbmx5UmVsZXZhbnQgPSBmYWxzZVxuKSA9PiB7XG4gIGNvbnN0IGluaXRpYWxWYWx1ZXMgPSB7fTtcblxuICBpZiAoaW5jbHVkZUF0dGVuZGVlSW5mbykge1xuICAgIGluaXRpYWxWYWx1ZXNbVElDS0VUX0FUVEVOREVFX0tFWVMuZW1haWxdID1cbiAgICAgIGFuc3dlcnNbVElDS0VUX0FUVEVOREVFX0tFWVMuZW1haWxdIHx8IG93bmVyLmVtYWlsIHx8IFwiXCI7XG4gICAgaW5pdGlhbFZhbHVlc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5maXJzdE5hbWVdID1cbiAgICAgIGFuc3dlcnNbVElDS0VUX0FUVEVOREVFX0tFWVMuZmlyc3ROYW1lXSB8fCBvd25lci5maXJzdF9uYW1lIHx8IFwiXCI7XG4gICAgaW5pdGlhbFZhbHVlc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5sYXN0TmFtZV0gPVxuICAgICAgYW5zd2Vyc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5sYXN0TmFtZV0gfHwgb3duZXIubGFzdF9uYW1lIHx8IFwiXCI7XG4gICAgaW5pdGlhbFZhbHVlc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5jb21wYW55XSA9XG4gICAgICBhbnN3ZXJzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmNvbXBhbnldIHx8IG93bmVyLmNvbXBhbnk7XG4gIH1cblxuICBpZiAoaW5jbHVkZURpc2NsYWltZXIpIHtcbiAgICBpbml0aWFsVmFsdWVzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmRpc2NsYWltZXJBY2NlcHRlZF0gPVxuICAgICAgYW5zd2Vyc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5kaXNjbGFpbWVyQWNjZXB0ZWRdIHx8XG4gICAgICBvd25lci5kaXNjbGFpbWVyX2FjY2VwdGVkO1xuICB9XG5cbiAgZXh0cmFRdWVzdGlvbnMuZm9yRWFjaCgocSkgPT4ge1xuICAgIGNvbnN0IHF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhxLm5hbWUsIHEuaWQpO1xuICAgIGNvbnN0IGFuc3dlciA9IGFuc3dlcnNbcXVlc3Rpb25TbHVnXTtcbiAgICBpbml0aWFsVmFsdWVzW3F1ZXN0aW9uU2x1Z10gPSBhbnN3ZXIgfHwgZ2V0VHlwZUluaXRpYWxWYWx1ZShxKTtcblxuICAgIHBhcnNlU3ViUXVlc3Rpb25BbnN3ZXIocSwgYW5zd2VycywgYW5zd2VyLCBpbml0aWFsVmFsdWVzLCBvbmx5UmVsZXZhbnQpO1xuICB9KTtcblxuICByZXR1cm4gaW5pdGlhbFZhbHVlcztcbn07XG5cbmNvbnN0IGJ1aWxkU3ViUXVlc3Rpb25WYWxpZGF0aW9uU2NoZW1hID0gKHF1ZXN0aW9uU2x1ZywgcnVsZSwgc2NoZW1hKSA9PiB7XG4gIGNvbnN0IHN1YlF1ZXN0aW9uID0gcnVsZS5zdWJfcXVlc3Rpb247XG4gIGNvbnN0IHN1YlF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhzdWJRdWVzdGlvbi5uYW1lLCBzdWJRdWVzdGlvbi5pZCk7XG5cbiAgc2NoZW1hW3N1YlF1ZXN0aW9uU2x1Z10gPSBnZXRUeXBlVmFsaWRhdGlvbihcbiAgICBzdWJRdWVzdGlvbi50eXBlLFxuICAgIHN1YlF1ZXN0aW9uLm5hbWUsXG4gICAgZmFsc2VcbiAgKVxuICAgIC5udWxsYWJsZSgpXG4gICAgLndoZW4ocXVlc3Rpb25TbHVnLCB7XG4gICAgICBpczogKHF1ZXN0aW9uQW5zKSA9PiB7XG4gICAgICAgIGNvbnN0IGFuc1ZhbHVlTWF0Y2ggPSBjaGVja0lmVmFsdWVNYXRjaChcbiAgICAgICAgICBxdWVzdGlvbkFucyxcbiAgICAgICAgICBydWxlLmFuc3dlcl92YWx1ZXNcbiAgICAgICAgKTtcbiAgICAgICAgLy8gY2hlY2sgaWYgcXVlc3Rpb24gaXMgdmlzaWJsZSB0byBhZGQgdmFsaWRhdGlvblxuICAgICAgICBjb25zdCBpc1Zpc2libGUgPSAhIWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFxuICAgICAgICAgIGAke3F1ZXN0aW9uU2x1Z31fY29udGFpbmVyYFxuICAgICAgICApO1xuICAgICAgICByZXR1cm4gYW5zVmFsdWVNYXRjaCAmJiBpc1Zpc2libGU7XG4gICAgICB9LFxuICAgICAgdGhlbjogKHNjaCkgPT4ge1xuICAgICAgICBpZiAoc3ViUXVlc3Rpb24udHlwZSA9PT0gUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdCkge1xuICAgICAgICAgIHJldHVybiBzY2hcbiAgICAgICAgICAgIC5taW4oTUlOX1JFUVVJUkVELCBpMThuLnQoXCJ2YWxpZGF0aW9uLnJlcXVpcmVkX3F1ZXN0aW9uXCIpKVxuICAgICAgICAgICAgLnJlcXVpcmVkKGkxOG4udChcInZhbGlkYXRpb24ucmVxdWlyZWRfcXVlc3Rpb25cIikpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzY2gucmVxdWlyZWQoaTE4bi50KFwidmFsaWRhdGlvbi5yZXF1aXJlZF9xdWVzdGlvblwiKSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgaWYgKHN1YlF1ZXN0aW9uLnN1Yl9xdWVzdGlvbl9ydWxlcz8ubGVuZ3RoID4gMCkge1xuICAgIHN1YlF1ZXN0aW9uLnN1Yl9xdWVzdGlvbl9ydWxlcy5mb3JFYWNoKChzdWJSdWxlKSA9PiB7XG4gICAgICBidWlsZFN1YlF1ZXN0aW9uVmFsaWRhdGlvblNjaGVtYShzdWJRdWVzdGlvblNsdWcsIHN1YlJ1bGUsIHNjaGVtYSk7XG4gICAgfSk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBidWlsZFZhbGlkYXRpb25TY2hlbWEgPSAoXG4gIGV4dHJhUXVlc3Rpb25zLFxuICBpbmNsdWRlQXR0ZW5kZWVJbmZvLFxuICBkaXNjbGFpbWVyTWFuZGF0b3J5XG4pID0+IHtcbiAgY29uc3Qgc2NoZW1hID0ge307XG5cbiAgaWYgKGluY2x1ZGVBdHRlbmRlZUluZm8pIHtcbiAgICBzY2hlbWFbVElDS0VUX0FUVEVOREVFX0tFWVMuZW1haWxdID0geXVwXG4gICAgICAuc3RyaW5nKGkxOG4udChcInZhbGlkYXRpb24uZW1haWwuc3RyaW5nXCIpKVxuICAgICAgLmVtYWlsKGkxOG4udChcInZhbGlkYXRpb24uZW1haWwuZm9ybWF0XCIpKVxuICAgICAgLnJlcXVpcmVkKGkxOG4udChcInZhbGlkYXRpb24uZW1haWwucmVxdWlyZWRcIikpO1xuICAgIHNjaGVtYVtUSUNLRVRfQVRURU5ERUVfS0VZUy5maXJzdE5hbWVdID0geXVwXG4gICAgICAuc3RyaW5nKGkxOG4udChcInZhbGlkYXRpb24uZmlyc3RfbmFtZS5zdHJpbmdcIikpXG4gICAgICAucmVxdWlyZWQoaTE4bi50KFwidmFsaWRhdGlvbi5maXJzdF9uYW1lLnJlcXVpcmVkXCIpKTtcbiAgICBzY2hlbWFbVElDS0VUX0FUVEVOREVFX0tFWVMubGFzdE5hbWVdID0geXVwXG4gICAgICAuc3RyaW5nKGkxOG4udChcInZhbGlkYXRpb24ubGFzdF9uYW1lLnN0cmluZ1wiKSlcbiAgICAgIC5yZXF1aXJlZChpMThuLnQoXCJ2YWxpZGF0aW9uLmxhc3RfbmFtZS5yZXF1aXJlZFwiKSk7XG4gICAgc2NoZW1hW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmNvbXBhbnldID0geXVwLmxhenkoKHZhbHVlKSA9PlxuICAgICAgdHlwZW9mIHZhbHVlID09PSBcIm9iamVjdFwiXG4gICAgICAgID8geXVwXG4gICAgICAgICAgICAub2JqZWN0KClcbiAgICAgICAgICAgIC5yZXF1aXJlZChpMThuLnQoXCJ2YWxpZGF0aW9uLmNvbXBhbnkucmVxdWlyZWRcIikpXG4gICAgICAgICAgICAudHlwZUVycm9yKGkxOG4udChcInZhbGlkYXRpb24ucmVxdWlyZWRfZmllbGRcIikpXG4gICAgICAgIDogeXVwLnN0cmluZygpLnJlcXVpcmVkKGkxOG4udChcInZhbGlkYXRpb24uY29tcGFueS5yZXF1aXJlZFwiKSlcbiAgICApO1xuICB9XG5cbiAgaWYgKGRpc2NsYWltZXJNYW5kYXRvcnkpIHtcbiAgICBzY2hlbWFbVElDS0VUX0FUVEVOREVFX0tFWVMuZGlzY2xhaW1lckFjY2VwdGVkXSA9IHl1cFxuICAgICAgLmJvb2woKVxuICAgICAgLm9uZU9mKFt0cnVlXSwgaTE4bi50KFwidmFsaWRhdGlvbi5jaGVja2JveC5yZXF1aXJlZFwiKSk7XG4gIH1cblxuICBleHRyYVF1ZXN0aW9ucy5mb3JFYWNoKChxKSA9PiB7XG4gICAgY29uc3QgeyBpZCwgbmFtZSwgdHlwZSwgbWFuZGF0b3J5LCBzdWJfcXVlc3Rpb25fcnVsZXMgfSA9IHE7XG4gICAgY29uc3QgcXVlc3Rpb25TbHVnID0gdG9TbHVnKG5hbWUsIGlkKTtcbiAgICBzY2hlbWFbcXVlc3Rpb25TbHVnXSA9IGdldFR5cGVWYWxpZGF0aW9uKHR5cGUsIG5hbWUsIG1hbmRhdG9yeSk7XG5cbiAgICBpZiAoc3ViX3F1ZXN0aW9uX3J1bGVzPy5sZW5ndGggPiAwKSB7XG4gICAgICBzdWJfcXVlc3Rpb25fcnVsZXMuZm9yRWFjaCgocnVsZSkgPT4ge1xuICAgICAgICBidWlsZFN1YlF1ZXN0aW9uVmFsaWRhdGlvblNjaGVtYShxdWVzdGlvblNsdWcsIHJ1bGUsIHNjaGVtYSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiB5dXAub2JqZWN0KHNjaGVtYSk7XG59O1xuXG5leHBvcnQgY29uc3QgdXBkYXRlVGlja2V0Q29sbGVjdGlvbiA9ICh0aWNrZXRzLCB0aWNrZXQpID0+XG4gIHRpY2tldHMubWFwKCh0KSA9PiB7XG4gICAgY29uc3QgdG1wVGlja2V0ID0geyAuLi50IH07XG4gICAgLy8gdXBkYXRlIGF0dGVuZGVlXG4gICAgaWYgKFxuICAgICAgdC5vd25lcj8uaWQgPT09IHRpY2tldC5vd25lcj8uaWQgJiZcbiAgICAgIHQub3duZXI/LnN0YXR1cyAhPT0gdGlja2V0Lm93bmVyPy5zdGF0dXNcbiAgICApIHtcbiAgICAgIHRtcFRpY2tldC5vd25lciA9IHRpY2tldC5vd25lcjtcbiAgICB9XG4gICAgcmV0dXJuIHQuaWQgPT09IHRpY2tldC5pZCA/IHRpY2tldCA6IHRtcFRpY2tldDtcbiAgfSk7XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiYmFkZ2VGZWF0dXJlSWNvbl9fX3NLVlRDXCI7XG52YXIgXzIgPSBcImJhZGdlRmVhdHVyZUltYWdlX19fWU80ZnNcIjtcbnZhciBfMyA9IFwiYmFkZ2VGZWF0dXJlSW5pdGlhbHNfX19rVzdaa1wiO1xuZXhwb3J0IHsgXzEgYXMgXCJiYWRnZUZlYXR1cmVJY29uXCIsIF8yIGFzIFwiYmFkZ2VGZWF0dXJlSW1hZ2VcIiwgXzMgYXMgXCJiYWRnZUZlYXR1cmVJbml0aWFsc1wiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJjb3B5SWNvbl9fX2xJM2VRXCI7XG52YXIgXzIgPSBcInJldmVyc2VkX19fekp6bURcIjtcbnZhciBfMyA9IFwidHJ1bmNhdGVkX19faldTblVcIjtcbnZhciBfNCA9IFwid3JhcHBlcl9fX21WUGlSXCI7XG5leHBvcnQgeyBfMSBhcyBcImNvcHlJY29uXCIsIF8yIGFzIFwicmV2ZXJzZWRcIiwgXzMgYXMgXCJ0cnVuY2F0ZWRcIiwgXzQgYXMgXCJ3cmFwcGVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcIk11aU91dGxpbmVkSW5wdXQtbm90Y2hlZE91dGxpbmVfX19teEVLV1wiO1xudmFyIF8yID0gXCJNdWlQaWNrZXJzQ2FsZW5kYXJIZWFkZXItbGFiZWxDb250YWluZXJfX19PNHNTc1wiO1xudmFyIF8zID0gXCJjYWxlbmRhckRpc3BsYXlfX19GM251S1wiO1xudmFyIF80ID0gXCJjbGVhbkJ1dHRvbl9fX3FxRHZVXCI7XG52YXIgXzUgPSBcImNvbnRhaW5lcl9fX1FlUVlfXCI7XG52YXIgXzYgPSBcImRhdGVQaWNrZXJDb250YWluZXJfX19aNDJtd1wiO1xudmFyIF83ID0gXCJkYXRlcGlja2VyQ2xvc2VfX19UWjdrSlwiO1xudmFyIF84ID0gXCJmaWx0ZXJDaGVja2JveENvbnRhaW5lcl9fX2tVblc5XCI7XG52YXIgXzkgPSBcImZpbHRlckNvbnRhaW5lcl9fX3JycXA5XCI7XG52YXIgX2EgPSBcImZpbHRlckRhdGVMYWJlbF9fX0pnYmNzXCI7XG52YXIgX2IgPSBcImZpbHRlckljb25fX19paU96b1wiO1xudmFyIF9jID0gXCJmaWx0ZXJMYWJlbF9fX3NrWlA3XCI7XG52YXIgX2QgPSBcImZpbHRlckxpc3RDb250YWluZXJfX19JRHJsU1wiO1xudmFyIF9lID0gXCJmaWx0ZXJOdW1BY3RpdmVfX19rbUVFS1wiO1xudmFyIF9mID0gXCJmaWx0ZXJTb3J0Q29udGFpbmVyX19fbmhOSnNcIjtcbnZhciBfMTAgPSBcImxhYmVsX19fTEFtZV9cIjtcbnZhciBfMTEgPSBcInNob3dGaWx0ZXJMaXN0X19fSVc0eEdcIjtcbnZhciBfMTIgPSBcInNvcnRDb250YWluZXJfX19zYjVCZFwiO1xudmFyIF8xMyA9IFwic29ydEljb25fX19jX1haaVwiO1xudmFyIF8xNCA9IFwic29ydExhYmVsX19fZFhpTXlcIjtcbnZhciBfMTUgPSBcInNvcnRMaXN0Q29udGFpbmVyX19fUHAyWGdcIjtcbnZhciBfMTYgPSBcInRpdGxlV3JhcHBlcl9fX1A2bVB1XCI7XG5leHBvcnQgeyBfMSBhcyBcIk11aU91dGxpbmVkSW5wdXQtbm90Y2hlZE91dGxpbmVcIiwgXzIgYXMgXCJNdWlQaWNrZXJzQ2FsZW5kYXJIZWFkZXItbGFiZWxDb250YWluZXJcIiwgXzMgYXMgXCJjYWxlbmRhckRpc3BsYXlcIiwgXzQgYXMgXCJjbGVhbkJ1dHRvblwiLCBfNSBhcyBcImNvbnRhaW5lclwiLCBfNiBhcyBcImRhdGVQaWNrZXJDb250YWluZXJcIiwgXzcgYXMgXCJkYXRlcGlja2VyQ2xvc2VcIiwgXzggYXMgXCJmaWx0ZXJDaGVja2JveENvbnRhaW5lclwiLCBfOSBhcyBcImZpbHRlckNvbnRhaW5lclwiLCBfYSBhcyBcImZpbHRlckRhdGVMYWJlbFwiLCBfYiBhcyBcImZpbHRlckljb25cIiwgX2MgYXMgXCJmaWx0ZXJMYWJlbFwiLCBfZCBhcyBcImZpbHRlckxpc3RDb250YWluZXJcIiwgX2UgYXMgXCJmaWx0ZXJOdW1BY3RpdmVcIiwgX2YgYXMgXCJmaWx0ZXJTb3J0Q29udGFpbmVyXCIsIF8xMCBhcyBcImxhYmVsXCIsIF8xMSBhcyBcInNob3dGaWx0ZXJMaXN0XCIsIF8xMiBhcyBcInNvcnRDb250YWluZXJcIiwgXzEzIGFzIFwic29ydEljb25cIiwgXzE0IGFzIFwic29ydExhYmVsXCIsIF8xNSBhcyBcInNvcnRMaXN0Q29udGFpbmVyXCIsIF8xNiBhcyBcInRpdGxlV3JhcHBlclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJjYW5jZWxCdG5fX19xRGV4aFwiO1xudmFyIF8yID0gXCJmb290ZXJfX19TTjcweVwiO1xudmFyIF8zID0gXCJzYXZlQnRuX19fbmJVNmNcIjtcbmV4cG9ydCB7IF8xIGFzIFwiY2FuY2VsQnRuXCIsIF8yIGFzIFwiZm9vdGVyXCIsIF8zIGFzIFwic2F2ZUJ0blwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJlcnJvckxhYmVsX19fbm9jeVhcIjtcbmV4cG9ydCB7IF8xIGFzIFwiZXJyb3JMYWJlbFwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJteU9yZGVyc1dyYXBwZXJfX19ISm15c1wiO1xudmFyIF8yID0gXCJub09yZGVyc0ZvdW5kX19fRFJ3Z29cIjtcbnZhciBfMyA9IFwibm9PcmRlcnNJY29uV3JhcHBlcl9fX3RQVG1ZXCI7XG5leHBvcnQgeyBfMSBhcyBcIm15T3JkZXJzV3JhcHBlclwiLCBfMiBhcyBcIm5vT3JkZXJzRm91bmRcIiwgXzMgYXMgXCJub09yZGVyc0ljb25XcmFwcGVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImJvZHlfX19BV2RpTFwiO1xudmFyIF8yID0gXCJpY29uV3JhcHBlcl9fX216ZXZLXCI7XG52YXIgXzMgPSBcInRpdGxlX19fTTI0Mm1cIjtcbnZhciBfNCA9IFwid3JhcHBlcl9fX1Fzd0NQXCI7XG5leHBvcnQgeyBfMSBhcyBcImJvZHlcIiwgXzIgYXMgXCJpY29uV3JhcHBlclwiLCBfMyBhcyBcInRpdGxlXCIsIF80IGFzIFwid3JhcHBlclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJvcmRlckRldGFpbHNNbW91bnRfX19yM2tSQVwiO1xudmFyIF8yID0gXCJvcmRlckRldGFpbHNUaWNrZXRzX19fbTRJaktcIjtcbnZhciBfMyA9IFwib3JkZXJTdW1tYXJ5QnV0dG9uX19fdXhqaHRcIjtcbnZhciBfNCA9IFwib3JkZXJTdW1tYXJ5UHVyY2hhc2VkSW5mb19fX19SQlhFXCI7XG52YXIgXzUgPSBcIm9yZGVyU3VtbWFyeVRhYmxlX19fWURueFZcIjtcbnZhciBfNiA9IFwib3JkZXJTdW1tYXJ5V3JhcHBlcl9fX1J3SUVSXCI7XG52YXIgXzcgPSBcInJlZnVuZERpc2FibGVkX19fanZyazNcIjtcbmV4cG9ydCB7IF8xIGFzIFwib3JkZXJEZXRhaWxzTW1vdW50XCIsIF8yIGFzIFwib3JkZXJEZXRhaWxzVGlja2V0c1wiLCBfMyBhcyBcIm9yZGVyU3VtbWFyeUJ1dHRvblwiLCBfNCBhcyBcIm9yZGVyU3VtbWFyeVB1cmNoYXNlZEluZm9cIiwgXzUgYXMgXCJvcmRlclN1bW1hcnlUYWJsZVwiLCBfNiBhcyBcIm9yZGVyU3VtbWFyeVdyYXBwZXJcIiwgXzcgYXMgXCJyZWZ1bmREaXNhYmxlZFwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJhc3NpZ25UaWNrZXRCdXR0b25fX196ekxzY1wiO1xudmFyIF8yID0gXCJhc3NpZ25Ub01lVGV4dF9fX1pQYWV4XCI7XG52YXIgXzMgPSBcImFzc2lnbmVkQnlUZXh0X19fYk5aN3pcIjtcbnZhciBfNCA9IFwiYXNzaWduZWRUb01lRGVzX19fR2pGa1ZcIjtcbnZhciBfNSA9IFwiYXNzaWduZWRUb01lV3JhcHBlcl9fX1V4YzJ5XCI7XG52YXIgXzYgPSBcImJhZGdlRmVhdHVyZVdyYXBwZXJfX19JUUxOUFwiO1xudmFyIF83ID0gXCJjaGVja2JveF9fX1haSnBiXCI7XG52YXIgXzggPSBcImRpc2FibGVkUmVmdW5kX19fU2ZmbDdcIjtcbnZhciBfOSA9IFwiZGlzcGxheV9ub25lX19fQ3FwTDNcIjtcbnZhciBfYSA9IFwibGFiZWxfX196WERXelwiO1xudmFyIF9iID0gXCJvcmRlclRpY2tldENvbnRhaW5lcl9fX1pKTHprXCI7XG52YXIgX2MgPSBcIm9yZGVyVGlja2V0SW5mb19fX2dlbXFCXCI7XG52YXIgX2QgPSBcIm9yZGVyVGlja2V0SW5mb0NvbnRhaW5lcl9fX19wNjZWXCI7XG52YXIgX2UgPSBcIm9yZGVyV3JhcHBlcl9fX3lEQkFvXCI7XG52YXIgX2YgPSBcInJlYXNzaWduQnV0dG9uX19fUm9qTTVcIjtcbnZhciBfMTAgPSBcInJlZnVuZEJ1dHRvbnNfX19qRGw0SFwiO1xudmFyIF8xMSA9IFwicmVmdW5kTW9kYWxfX19FcWdQRlwiO1xudmFyIF8xMiA9IFwic2VsZWN0ZWRfX19IV0dOY1wiO1xudmFyIF8xMyA9IFwidGFiQnV0dG9uc19fX3hUeUpBXCI7XG52YXIgXzE0ID0gXCJ0aWNrZXRBY3Rpb25CdXR0b25zX19fcnBTTVFcIjtcbnZhciBfMTUgPSBcInRpY2tldEZvb3Rlcl9fX2ozYmRpXCI7XG52YXIgXzE2ID0gXCJ0aWNrZXRMaXN0Q29udGFpbmVyX19fY2ZtcnJcIjtcbnZhciBfMTcgPSBcInRpY2tldE5vX19fYTJpTTlcIjtcbnZhciBfMTggPSBcInRpY2tldE93bmVyRW1haWxfX19adDRPRVwiO1xudmFyIF8xOSA9IFwidGlja2V0VGlja2V0VHlwZV9fX1pxX2YwXCI7XG52YXIgXzFhID0gXCJ2aWV3RmluaXNoVGlja2V0QnV0dG9uX19fSEY2SW1cIjtcbnZhciBfMWIgPSBcInZpZXdNb3JlQnV0dG9uX19fS18xelRcIjtcbmV4cG9ydCB7IF8xIGFzIFwiYXNzaWduVGlja2V0QnV0dG9uXCIsIF8yIGFzIFwiYXNzaWduVG9NZVRleHRcIiwgXzMgYXMgXCJhc3NpZ25lZEJ5VGV4dFwiLCBfNCBhcyBcImFzc2lnbmVkVG9NZURlc1wiLCBfNSBhcyBcImFzc2lnbmVkVG9NZVdyYXBwZXJcIiwgXzYgYXMgXCJiYWRnZUZlYXR1cmVXcmFwcGVyXCIsIF83IGFzIFwiY2hlY2tib3hcIiwgXzggYXMgXCJkaXNhYmxlZFJlZnVuZFwiLCBfOSBhcyBcImRpc3BsYXlfbm9uZVwiLCBfYSBhcyBcImxhYmVsXCIsIF9iIGFzIFwib3JkZXJUaWNrZXRDb250YWluZXJcIiwgX2MgYXMgXCJvcmRlclRpY2tldEluZm9cIiwgX2QgYXMgXCJvcmRlclRpY2tldEluZm9Db250YWluZXJcIiwgX2UgYXMgXCJvcmRlcldyYXBwZXJcIiwgX2YgYXMgXCJyZWFzc2lnbkJ1dHRvblwiLCBfMTAgYXMgXCJyZWZ1bmRCdXR0b25zXCIsIF8xMSBhcyBcInJlZnVuZE1vZGFsXCIsIF8xMiBhcyBcInNlbGVjdGVkXCIsIF8xMyBhcyBcInRhYkJ1dHRvbnNcIiwgXzE0IGFzIFwidGlja2V0QWN0aW9uQnV0dG9uc1wiLCBfMTUgYXMgXCJ0aWNrZXRGb290ZXJcIiwgXzE2IGFzIFwidGlja2V0TGlzdENvbnRhaW5lclwiLCBfMTcgYXMgXCJ0aWNrZXROb1wiLCBfMTggYXMgXCJ0aWNrZXRPd25lckVtYWlsXCIsIF8xOSBhcyBcInRpY2tldFRpY2tldFR5cGVcIiwgXzFhIGFzIFwidmlld0ZpbmlzaFRpY2tldEJ1dHRvblwiLCBfMWIgYXMgXCJ2aWV3TW9yZUJ1dHRvblwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJDVEFCdXR0b25XcmFwcGVyX19fS2dxNmdcIjtcbnZhciBfMiA9IFwiYWN0aW9uQnV0dG9uc19fX3U3bVBTXCI7XG52YXIgXzMgPSBcImFwcHJvdmVkX19fc3hFSldcIjtcbnZhciBfNCA9IFwiYmFkZ2VGZWF0dXJlV3JhcHBlcl9fX185R2JEXCI7XG52YXIgXzUgPSBcImJ1dHRvblBpbGxfX19MZXNhelwiO1xudmFyIF82ID0gXCJjYW5jZWxCdXR0b25fX195ZmhZYlwiO1xudmFyIF83ID0gXCJjb250aW51ZUJ1dHRvbl9fX055WDNzXCI7XG52YXIgXzggPSBcImRlbGV0ZUljb25fX19GU3d5ZVwiO1xudmFyIF85ID0gXCJwZW5kaW5nX19fYUViV3dcIjtcbnZhciBfYSA9IFwicmVmdW5kRGV0YWlsX19fY1EyOFZcIjtcbnZhciBfYiA9IFwicmVmdW5kRXJyb3JNc2dfX19BYWh6clwiO1xudmFyIF9jID0gXCJyZWZ1bmRTdWNjZXNzZnVsX19fenJEUVlcIjtcbnZhciBfZCA9IFwicmVmdW5kVGV4dF9fX2FFbkw5XCI7XG52YXIgX2UgPSBcInJlZnVuZFRpY2tldEF0dGVuZGVlX19fUVhDak1cIjtcbnZhciBfZiA9IFwicmVmdW5kVGlja2V0Qm94Q29udGFpbmVyX19feWE2MTNcIjtcbnZhciBfMTAgPSBcInJlamVjdGVkX19fTkpFNFpcIjtcbnZhciBfMTEgPSBcInN1YnRpdGxlX19fUHREZTJcIjtcbnZhciBfMTIgPSBcInN1Y2Nlc3NNc2dfX19IdE1zZVwiO1xudmFyIF8xMyA9IFwic3VjY2Vzc01zZzJfX19RNnpuYVwiO1xudmFyIF8xNCA9IFwidGlja2V0TGlzdF9fX2VEUVIzXCI7XG52YXIgXzE1ID0gXCJ0aWNrZXROb19fX19FQUQ0XCI7XG5leHBvcnQgeyBfMSBhcyBcIkNUQUJ1dHRvbldyYXBwZXJcIiwgXzIgYXMgXCJhY3Rpb25CdXR0b25zXCIsIF8zIGFzIFwiYXBwcm92ZWRcIiwgXzQgYXMgXCJiYWRnZUZlYXR1cmVXcmFwcGVyXCIsIF81IGFzIFwiYnV0dG9uUGlsbFwiLCBfNiBhcyBcImNhbmNlbEJ1dHRvblwiLCBfNyBhcyBcImNvbnRpbnVlQnV0dG9uXCIsIF84IGFzIFwiZGVsZXRlSWNvblwiLCBfOSBhcyBcInBlbmRpbmdcIiwgX2EgYXMgXCJyZWZ1bmREZXRhaWxcIiwgX2IgYXMgXCJyZWZ1bmRFcnJvck1zZ1wiLCBfYyBhcyBcInJlZnVuZFN1Y2Nlc3NmdWxcIiwgX2QgYXMgXCJyZWZ1bmRUZXh0XCIsIF9lIGFzIFwicmVmdW5kVGlja2V0QXR0ZW5kZWVcIiwgX2YgYXMgXCJyZWZ1bmRUaWNrZXRCb3hDb250YWluZXJcIiwgXzEwIGFzIFwicmVqZWN0ZWRcIiwgXzExIGFzIFwic3VidGl0bGVcIiwgXzEyIGFzIFwic3VjY2Vzc01zZ1wiLCBfMTMgYXMgXCJzdWNjZXNzTXNnMlwiLCBfMTQgYXMgXCJ0aWNrZXRMaXN0XCIsIF8xNSBhcyBcInRpY2tldE5vXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImNsb3NlQnRuX19feVNRQ09cIjtcbnZhciBfMiA9IFwiaGVhZGVyX19fZkJYRzlcIjtcbnZhciBfMyA9IFwidGl0bGVfX190eVplUVwiO1xudmFyIF80ID0gXCJ3cmFwcGVyX19fUk9KR3NcIjtcbmV4cG9ydCB7IF8xIGFzIFwiY2xvc2VCdG5cIiwgXzIgYXMgXCJoZWFkZXJcIiwgXzMgYXMgXCJ0aXRsZVwiLCBfNCBhcyBcIndyYXBwZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwic3VtbWl0VGl0bGVEYXRlX19fWG5ycEZcIjtcbnZhciBfMiA9IFwid2lkZ2V0SGVhZGVyX19fZ2dMdE1cIjtcbmV4cG9ydCB7IF8xIGFzIFwic3VtbWl0VGl0bGVEYXRlXCIsIF8yIGFzIFwid2lkZ2V0SGVhZGVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcInVuYXNzaWduQnRuX19faTdtZ3lcIjtcbnZhciBfMiA9IFwidW5hc3NpZ25XcmFwcGVyX19fZzNlMnVcIjtcbnZhciBfMyA9IFwid3JhcHBlcl9fX1c5NFNMXCI7XG5leHBvcnQgeyBfMSBhcyBcInVuYXNzaWduQnRuXCIsIF8yIGFzIFwidW5hc3NpZ25XcmFwcGVyXCIsIF8zIGFzIFwid3JhcHBlclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJoZWFkZXJOb3RlX19fQWU1RUFcIjtcbnZhciBfMiA9IFwib3JkZXJOb19fX1ZPUFJ3XCI7XG52YXIgXzMgPSBcInB1cmNoYXNlZEJ5X19fTU5pSFRcIjtcbnZhciBfNCA9IFwicHVyY2hhc2VkQnlXcmFwcGVyX19fRGg2SFVcIjtcbnZhciBfNSA9IFwid3JhcHBlcl9fX21WdWlaXCI7XG5leHBvcnQgeyBfMSBhcyBcImhlYWRlck5vdGVcIiwgXzIgYXMgXCJvcmRlck5vXCIsIF8zIGFzIFwicHVyY2hhc2VkQnlcIiwgXzQgYXMgXCJwdXJjaGFzZWRCeVdyYXBwZXJcIiwgXzUgYXMgXCJ3cmFwcGVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcInRpY2tldFJlYXNzaWduQ29udGFpbmVyX19fZ090YUpcIjtcbmV4cG9ydCB7IF8xIGFzIFwidGlja2V0UmVhc3NpZ25Db250YWluZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwid3JhcHBlcl9fX0V3T1J6XCI7XG5leHBvcnQgeyBfMSBhcyBcIndyYXBwZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiaW5mb05vdGVfX19pMVhZOVwiO1xudmFyIF8yID0gXCJ3cmFwcGVyX19fTUF1TlNcIjtcbmV4cG9ydCB7IF8xIGFzIFwiaW5mb05vdGVcIiwgXzIgYXMgXCJ3cmFwcGVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImFjdGlvbkJ1dHRvbnNDb250YWluZXJfX19BdXZyblwiO1xudmFyIF8yID0gXCJhZGRpdGlvbmFsRGV0YWlsc19fX21QMWlKXCI7XG52YXIgXzMgPSBcImF0dGVuZGVlQ29udGFpbmVyX19fUTBWVXpcIjtcbnZhciBfNCA9IFwiYXR0ZW5kZWVJbmZvVGl0bGVfX19MbXJtNFwiO1xudmFyIF81ID0gXCJjbG9zZUJ0bl9fX1dOSmxFXCI7XG52YXIgXzYgPSBcImNvcHlCdG5fX19fdXRBNlwiO1xudmFyIF83ID0gXCJkZWxlZ2F0ZWRUb19fX1NHVlFJXCI7XG52YXIgXzggPSBcImRvd25sb2FkQnRuX19fcWpZaHpcIjtcbnZhciBfOSA9IFwiaGVhZGVyX19fQXVnbnpcIjtcbnZhciBfYSA9IFwib3JkZXJOdW1iZXJfX19MNVE1YVwiO1xudmFyIF9iID0gXCJxckNvZGVfX19md3FacVwiO1xudmFyIF9jID0gXCJxck5vdGVfX19HYzdLblwiO1xudmFyIF9kID0gXCJzZW5kQnRuX19fa29XTTJcIjtcbnZhciBfZSA9IFwic2VudF9fX2s2V0t4XCI7XG52YXIgX2YgPSBcInN0YXR1c19fX2t3Qzh5XCI7XG52YXIgXzEwID0gXCJzdWJ0aXRsZV9fX3lfTnVPXCI7XG52YXIgXzExID0gXCJ0aWNrZXREZXRhaWxDb250YWluZXJfX19iMlRMUlwiO1xudmFyIF8xMiA9IFwidGl0bGVfX193UXpVTlwiO1xuZXhwb3J0IHsgXzEgYXMgXCJhY3Rpb25CdXR0b25zQ29udGFpbmVyXCIsIF8yIGFzIFwiYWRkaXRpb25hbERldGFpbHNcIiwgXzMgYXMgXCJhdHRlbmRlZUNvbnRhaW5lclwiLCBfNCBhcyBcImF0dGVuZGVlSW5mb1RpdGxlXCIsIF81IGFzIFwiY2xvc2VCdG5cIiwgXzYgYXMgXCJjb3B5QnRuXCIsIF83IGFzIFwiZGVsZWdhdGVkVG9cIiwgXzggYXMgXCJkb3dubG9hZEJ0blwiLCBfOSBhcyBcImhlYWRlclwiLCBfYSBhcyBcIm9yZGVyTnVtYmVyXCIsIF9iIGFzIFwicXJDb2RlXCIsIF9jIGFzIFwicXJOb3RlXCIsIF9kIGFzIFwic2VuZEJ0blwiLCBfZSBhcyBcInNlbnRcIiwgX2YgYXMgXCJzdGF0dXNcIiwgXzEwIGFzIFwic3VidGl0bGVcIiwgXzExIGFzIFwidGlja2V0RGV0YWlsQ29udGFpbmVyXCIsIF8xMiBhcyBcInRpdGxlXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImJ1dHRvbkNhbmNlbGxlZF9fX0VybERaXCI7XG52YXIgXzIgPSBcImJ1dHRvbkNvbXBsZXRlX19fbGxXa1pcIjtcbnZhciBfMyA9IFwiYnV0dG9uSW5jb21wbGV0ZV9fX1RvbEhnXCI7XG52YXIgXzQgPSBcImJ1dHRvblBpbGxfX196cTJ0Y1wiO1xudmFyIF81ID0gXCJidXR0b25SZWZ1bmRSZXF1ZXN0ZWRfX19wV3QzMFwiO1xudmFyIF82ID0gXCJidXR0b25VbmFzc2lnbmVkX19fWURkOFhcIjtcbnZhciBfNyA9IFwidGlja2V0U3RhdHVzQ29udGFpbmVyX19fcWo2ZmJcIjtcbmV4cG9ydCB7IF8xIGFzIFwiYnV0dG9uQ2FuY2VsbGVkXCIsIF8yIGFzIFwiYnV0dG9uQ29tcGxldGVcIiwgXzMgYXMgXCJidXR0b25JbmNvbXBsZXRlXCIsIF80IGFzIFwiYnV0dG9uUGlsbFwiLCBfNSBhcyBcImJ1dHRvblJlZnVuZFJlcXVlc3RlZFwiLCBfNiBhcyBcImJ1dHRvblVuYXNzaWduZWRcIiwgXzcgYXMgXCJ0aWNrZXRTdGF0dXNDb250YWluZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiYWN0aXZlX19fdEx5V1pcIjtcbnZhciBfMiA9IFwidGFiT3B0aW9uX19fSDRIMXVcIjtcbnZhciBfMyA9IFwidGFiV3JhcHBlcl9fX3UyMXNHXCI7XG5leHBvcnQgeyBfMSBhcyBcImFjdGl2ZVwiLCBfMiBhcyBcInRhYk9wdGlvblwiLCBfMyBhcyBcInRhYldyYXBwZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwidGlja2V0c1RpdGxlVGV4dF9fX1REUG1wXCI7XG5leHBvcnQgeyBfMSBhcyBcInRpY2tldHNUaXRsZVRleHRcIiB9XG4iLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2RlZmluZVByb3BlcnR5XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvb2JqZWN0V2l0aG91dFByb3BlcnRpZXNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsL0NoZWNrQ2lyY2xlXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ2xvc2VcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbC9Db250ZW50Q29weVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsL0Vycm9yXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRXhwYW5kTW9yZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsL0ZpbHRlckxpc3RcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbC9JbXBvcnRFeHBvcnRcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbC9JbmZvXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvU2VhcmNoXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWxcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9CdXR0b25cIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9DaGVja2JveFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL0RpYWxvZ1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL0RpYWxvZ0FjdGlvbnNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9EaWFsb2dDb250ZW50XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvRGlhbG9nQ29udGVudFRleHRcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9EaWFsb2dUaXRsZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL0RpdmlkZXJcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9JbnB1dEJhc2VcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9TdGFja1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL1RhYlwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL1RhYnNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9Ub29sdGlwXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvc3R5bGVzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvdXNlTWVkaWFRdWVyeVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAcmVkdXhqcy90b29sa2l0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBzZW50cnkvcmVhY3RcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiZm9ybWlrXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImkxOG5leHRcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiaTE4bmV4dC1icm93c2VyLWxhbmd1YWdlZGV0ZWN0b3JcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiaWR0b2tlbi12ZXJpZmllclwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJtb21lbnQtdGltZXpvbmVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9jb21wb25lbnRzL3Jhdy1odG1sXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvc2VjdXJpdHkvYWN0aW9uc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3NlY3VyaXR5L21ldGhvZHNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9hY3Rpb25zXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvbWV0aG9kc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL3F1ZXJ5LWFjdGlvbnNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicC1saW1pdFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJwcm9wLXR5cGVzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0LWkxOG5leHRcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVhY3QtaW5maW5pdGUtc2Nyb2xsLWNvbXBvbmVudFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWFjdC1xci1jb2RlXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0LXJlZHV4XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0L2pzeC1ydW50aW1lXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlZHV4XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlZHV4LXBlcnNpc3RcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVkdXgtcGVyc2lzdC9pbnRlZ3JhdGlvbi9yZWFjdFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWR1eC1wZXJzaXN0L2xpYi9zdG9yYWdlXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInl1cFwiKTsiLCIvLyBUaGUgbW9kdWxlIGNhY2hlXG52YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XG5cbi8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG5mdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuXHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcblx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuXHR9XG5cdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG5cdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xuXHRcdC8vIG5vIG1vZHVsZS5pZCBuZWVkZWRcblx0XHQvLyBubyBtb2R1bGUubG9hZGVkIG5lZWRlZFxuXHRcdGV4cG9ydHM6IHt9XG5cdH07XG5cblx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG5cdF9fd2VicGFja19tb2R1bGVzX19bbW9kdWxlSWRdKG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG5cdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG5cdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbn1cblxuIiwiLy8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbl9fd2VicGFja19yZXF1aXJlX18ubiA9IChtb2R1bGUpID0+IHtcblx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG5cdFx0KCkgPT4gKG1vZHVsZVsnZGVmYXVsdCddKSA6XG5cdFx0KCkgPT4gKG1vZHVsZSk7XG5cdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsIHsgYTogZ2V0dGVyIH0pO1xuXHRyZXR1cm4gZ2V0dGVyO1xufTsiLCIvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9ucyBmb3IgaGFybW9ueSBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSAoZXhwb3J0cywgZGVmaW5pdGlvbikgPT4ge1xuXHRmb3IodmFyIGtleSBpbiBkZWZpbml0aW9uKSB7XG5cdFx0aWYoX193ZWJwYWNrX3JlcXVpcmVfXy5vKGRlZmluaXRpb24sIGtleSkgJiYgIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBrZXkpKSB7XG5cdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZGVmaW5pdGlvbltrZXldIH0pO1xuXHRcdH1cblx0fVxufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSAob2JqLCBwcm9wKSA9PiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCkpIiwiLy8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5yID0gKGV4cG9ydHMpID0+IHtcblx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG5cdH1cblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbn07IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cbmltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IFByb3ZpZGVyIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgeyBQZXJzaXN0R2F0ZSB9IGZyb20gXCJyZWR1eC1wZXJzaXN0L2ludGVncmF0aW9uL3JlYWN0XCI7XG5pbXBvcnQgeyBTdHlsZWRFbmdpbmVQcm92aWRlciB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VJbml0U3RvcmUgfSBmcm9tIFwiLi9zdG9yZVwiO1xuaW1wb3J0IHsgUkVTRVRfU1RBVEUsIHNldFJlZHVjZXJTdGF0ZSB9IGZyb20gXCIuL2FjdGlvbnNcIjtcblxuaW1wb3J0IFdpZGdldFdyYXBwZXIgZnJvbSBcIi4vY29tcG9uZW50cy9XaWRnZXRXcmFwcGVyXCI7XG5cbmNvbnN0IE15T3JkZXJzTXlUaWNrZXRzV2lkZ2V0ID0gKHByb3BzKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBsb2dpblVybCxcbiAgICBzdXBwb3J0RW1haWwsXG4gICAgc3VtbWl0LFxuICAgIGFwaUJhc2VVcmwsXG4gICAgdXNlcixcbiAgICBjbGllbnRJZCxcbiAgICB1cGRhdGVQcm9maWxlXG4gIH0gPSBwcm9wcztcblxuICBjb25zdCB7IHN0b3JlLCBwZXJzaXN0b3IgfSA9IHVzZUluaXRTdG9yZSh7XG4gICAgbG9naW5VcmwsXG4gICAgc3VwcG9ydEVtYWlsLFxuICAgIHN1bW1pdCxcbiAgICB1c2VyLFxuICAgIGFwaUJhc2VVcmwsXG4gICAgY2xpZW50SWQsXG4gICAgdXBkYXRlUHJvZmlsZVxuICB9KTtcblxuICBjb25zdCBoYW5kbGVCZWZvcmVMaWZ0ID0gKCkgPT4ge1xuICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMod2luZG93LmxvY2F0aW9uLnNlYXJjaCk7XG4gICAgY29uc3QgZmx1c2ggPSBwYXJhbXMuaGFzKFwiZmx1c2hTdGF0ZVwiKTtcbiAgICBpZiAoZmx1c2gpIHN0b3JlLmRpc3BhdGNoKHsgdHlwZTogUkVTRVRfU1RBVEUsIHBheWxvYWQ6IG51bGwgfSk7XG4gIH07XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzdG9yZS5kaXNwYXRjaChzZXRSZWR1Y2VyU3RhdGUoc3VtbWl0LCB1c2VyKSk7XG4gIH0sIFtzdW1taXQsIHVzZXJdKTtcblxuICByZXR1cm4gKFxuICAgIDxQcm92aWRlciBzdG9yZT17c3RvcmV9PlxuICAgICAgPFBlcnNpc3RHYXRlXG4gICAgICAgIG9uQmVmb3JlTGlmdD17aGFuZGxlQmVmb3JlTGlmdH1cbiAgICAgICAgbG9hZGluZz17bnVsbH1cbiAgICAgICAgcGVyc2lzdG9yPXtwZXJzaXN0b3J9XG4gICAgICA+XG4gICAgICAgIDxTdHlsZWRFbmdpbmVQcm92aWRlciBpbmplY3RGaXJzdD5cbiAgICAgICAgICA8V2lkZ2V0V3JhcHBlciAvPlxuICAgICAgICA8L1N0eWxlZEVuZ2luZVByb3ZpZGVyPlxuICAgICAgPC9QZXJzaXN0R2F0ZT5cbiAgICA8L1Byb3ZpZGVyPlxuICApO1xufTtcblxuTXlPcmRlcnNNeVRpY2tldHNXaWRnZXQucHJvcFR5cGVzID0ge1xuICBsb2dpblVybDogUHJvcFR5cGVzLnN0cmluZyxcbiAgc3VwcG9ydEVtYWlsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIGFwaUJhc2VVcmw6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHVzZXI6IFByb3BUeXBlcy5vYmplY3QsXG4gIGNsaWVudElkOiBQcm9wVHlwZXMuc3RyaW5nLFxuICB1cGRhdGVQcm9maWxlOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgTXlPcmRlcnNNeVRpY2tldHNXaWRnZXQ7XG4iXSwibmFtZXMiOlsiYXV0aEVycm9ySGFuZGxlciIsImNyZWF0ZUFjdGlvbiIsImRlbGV0ZVJlcXVlc3QiLCJnZXRSZXF1ZXN0IiwicHV0UmVxdWVzdCIsInN0YXJ0TG9hZGluZyIsInN0b3BMb2FkaW5nIiwicExpbWl0IiwiZ2V0SWRUb2tlbiIsIm9iamVjdFRvUXVlcnlTdHJpbmciLCJJZFRva2VuVmVyaWZpZXIiLCJpMThuIiwiYXV0aFByb21pc2VSZWplY3QiLCJnZXRBY2Nlc3NUb2tlblNhZmVseSIsIkRFRkFVTFRfSVRFTVNfUEVSX1BBR0UiLCJFUlJPUl9DT0RFUyIsIkZJRlRZX1BFUl9QQUdFIiwiRklMVEVSX0FDVElPTiIsIkZJUlNUX1BBR0UiLCJQUk9NSVNFX0JBVENIX0xJTUlUIiwiUkVTRVRfU1RBVEUiLCJSRVNFVF9GSUxURVIiLCJSRVNFVF9BUElfRVJST1IiLCJTRVRfU1RBVEUiLCJTRVRfQVBJX0VSUk9SIiwiQ0hBTkdFX0ZJTFRFUiIsIkNIQU5HRV9TT1JUIiwiR0VUX1VTRVJfT1JERVJTIiwiUkVGVU5EX09SREVSIiwiU0VUX0FDVElWRV9PUkRFUl9JRCIsIkZJTFRFUl9VU0VSX09SREVSUyIsIkdFVF9NWV9BU1NJR05FRF9USUNLRVRTIiwiVVBEQVRFX1RJQ0tFVCIsIlJFU0VUX1RJQ0tFVCIsIlJFQ0VJVkVfVElDS0VUIiwiUkVNT1ZFX1RJQ0tFVF9BVFRFTkRFRSIsIkFTU0lHTl9USUNLRVQiLCJERUxFR0FURV9USUNLRVQiLCJSRUZVTkRfVElDS0VUIiwiUkVTRU5EX05PVElGSUNBVElPTiIsIkdFVF9USUNLRVRTX0JZX09SREVSIiwiR0VUX1RJQ0tFVFNfQllfT1JERVJfRVJST1IiLCJHRVRfT1JERVJfVElDS0VUX0RFVEFJTFMiLCJHRVRfVElDS0VUX0RFVEFJTFMiLCJSRUNFSVZFX0VYVFJBX1FVRVNUSU9OUyIsIlRJQ0tFVF9BVFRFTkRFRV9LRVlTIiwiZW1haWwiLCJmaXJzdE5hbWUiLCJsYXN0TmFtZSIsImNvbXBhbnkiLCJkaXNjbGFpbWVyQWNjZXB0ZWQiLCJleHRyYVF1ZXN0aW9ucyIsIlVQREFURV9USUNLRVRTX1JFRlVORF9SRVFVRVNURUQiLCJTVEFSVF9MT0FESU5HX0lEUF9QUk9GSUxFIiwiU1RPUF9MT0FESU5HX0lEUF9QUk9GSUxFIiwiVVBEQVRFX0lEUF9QUk9GSUxFIiwiU0VUX1VTRVIiLCJTRVRfU1VNTUlUIiwiR0VUX01BSU5fRVhUUkFfUVVFU1RJT05TIiwiUkVDRUlWRV9NQVJLRVRJTkdfU0VUVElOR1MiLCJDTEVBUl9NQVJLRVRJTkdfU0VUVElOR1MiLCJyZXNldFRpY2tldCIsImRpc3BhdGNoIiwicmVzZXRTdGF0ZSIsInJlc2V0RmlsdGVyIiwicmVzZXRFcnJvciIsInNldFJlZHVjZXJTdGF0ZSIsInN1bW1pdCIsInVzZXIiLCJGSUxURVJfVkFSX0RBVEUiLCJGSUxURVJfVkFSX0JBREdFX0ZFQVRVUkUiLCJGSUxURVJfVkFSX1RJQ0tFVF9UWVBFIiwiRklMVEVSX1ZBUl9USUNLRVRfQVNTSUdORUQiLCJGSUxURVJfVkFSX09XTkVSX1NUQVRVUyIsIkZJTFRFUl9WQVJfUFJPTU9DT0RFIiwiRklMVEVSX1ZBUl9GUkVFX1BBSUQiLCJGSUxURVJfVkFSX09SREVSX05VTUJFUiIsImNoYW5nZUZpbHRlciIsImZpbHRlciIsImNoYW5nZVNvcnQiLCJzb3J0IiwicGFyc2VGaWx0ZXIiLCJmaWx0ZXJPYmoiLCJmaWx0ZXJBY3Rpb24iLCJwdXNoIiwiY29uY2F0IiwibG93ZXIiLCJ1cHBlciIsImxlbmd0aCIsImZpbHRlck5hbWUiLCJPUkRFUlMiLCJqb2luIiwiaW5wdXRGaWx0ZXJzIiwiVElDS0VUU19CWV9PUkRFUlMiLCJFWFRFUk5BTF9USUNLRVRTIiwiZ2V0U29ydERpcmVjdGlvbiIsImRpcmVjdGlvbiIsImVycm9ySGFuZGxlck5vdGlmeSIsInBheWxvYWQiLCJjYWxsYmFjayIsImN1c3RvbUF1dGhFcnJvckhhbmRsZXIiLCJlcnIiLCJyZXMiLCJjdXN0b21GZXRjaEVycm9ySGFuZGxlciIsInJlc3BvbnNlIiwiY29kZSIsInN0YXR1cyIsIm1zZyIsInQiLCJPYmplY3QiLCJlbnRyaWVzIiwiZXJyb3JzIiwiZm9yRWFjaCIsIl9yZWYiLCJrZXkiLCJ2YWx1ZSIsIk51bWJlciIsImlzTmFOIiwic3RhdHVzVGV4dCIsInRpdGxlIiwiaHRtbCIsImdldFVzZXJPcmRlcnMiLCJfcmVmMiIsInNraXBMb2FkaW5nIiwicGFnZSIsInBlclBhZ2UiLCJnZXRTdGF0ZSIsIl9yZWYzIiwiYXBpQmFzZVVybCIsIndpZGdldFN0YXRlIiwiYWNjZXNzVG9rZW4iLCJwYXJhbXMiLCJhY2Nlc3NfdG9rZW4iLCJvcmRlciIsInJlbGF0aW9ucyIsImZpZWxkcyIsInBlcl9wYWdlIiwia2V5cyIsImZpbHRlcnMiLCJuYW1lIiwiaWQiLCJ0aGVuIiwiY2F0Y2giLCJlIiwiZmluYWxseSIsInNldEFjdGl2ZU9yZGVySWQiLCJvcmRlcklkIiwic2V0VXNlciIsImdldFVzZXJUaWNrZXRzIiwiX3JlZjQiLCJfcmVmNSIsInVzZXJQcm9maWxlIiwiUHJvbWlzZSIsInJlamVjdCIsImV4cGFuZCIsImdldFRpY2tldHNCeU9yZGVyIiwiX3JlZjYiLCJfcmVmNyIsInJlc2VuZE5vdGlmaWNhdGlvbiIsInRpY2tldCIsIl9yZWY4IiwibWVzc2FnZSIsIm9yZGVyX2lkIiwicmVmdW5kVGlja2V0IiwiX3JlZjkiLCJfcmVmMTAiLCJyZWZ1bmRCdWxrVGlja2V0cyIsIl9yZWYxMSIsInRpY2tldHMiLCJsaW1pdCIsImFsbFJlZnVuZFRpY2tldENhbGxzIiwibWFwIiwiYWxsIiwic3VjY2Vzc2Z1bGx5UmVxdWVzdGVkIiwiciIsIl9yJHJlc3BvbnNlIiwicmVmdW5kX3JlcXVlc3RzIiwidXBkYXRlVGlja2V0c1JlZnVuZFJlcXVlc3RlZCIsInRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWQiLCJnZXRFeHRyYVF1ZXN0aW9ucyIsImF0dGVuZGVlSWQiLCJfcmVmMTIiLCJlbmRwb2ludCIsImdldFRpY2tldCIsInRpY2tldElkIiwiX3JlZjEzIiwibm9ybWFsaXplVGlja2V0IiwiZW50aXR5Iiwibm9ybWFsaXplZEVudGl0eSIsIl9vYmplY3RTcHJlYWQiLCJhdHRlbmRlZV9jb21wYW55IiwiYXR0ZW5kZWVfY29tcGFueV9pZCIsInJlZnJlc2hQcm9maWxlIiwiZGF0YSIsInRpY2tldE93bmVyIiwiX3JlZjE0IiwiX3RpY2tldE93bmVyJG1hbmFnZXIiLCJ1cGRhdGVQcm9maWxlIiwiYXR0ZW5kZWVfZW1haWwiLCJhdHRlbmRlZV9maXJzdF9uYW1lIiwiYXR0ZW5kZWVfbGFzdF9uYW1lIiwiaGFzTWFuYWdlciIsIm1hbmFnZXIiLCJtYW5hZ2VyX2lkIiwiaXRzTWUiLCJwcm9maWxlQ2hhbmdlZCIsImZpcnN0X25hbWUiLCJsYXN0X25hbWUiLCJuZXdQcm9maWxlIiwic2F2ZVRpY2tldERldGFpbHMiLCJhbnN3ZXJzIiwiX3JlZjE1IiwiaWRUb2tlbiIsInZlcmlmaWVyIiwiand0IiwiZGVjb2RlIiwiY29uc29sZSIsImxvZyIsIm93bmVyIiwiYXNzaWduQXR0ZW5kZWUiLCJhcmd1bWVudHMiLCJ1bmRlZmluZWQiLCJfcmVmMTYiLCJyZW1vdmVUaWNrZXQiLCJfcmVmMTciLCJyZWFzc2lnblRpY2tldCIsInVuYXNzaWduVGlja2V0IiwiZGVsZWdhdGVUaWNrZXQiLCJfcmVmMTgiLCJzYXZlRXh0cmFRdWVzdGlvbnMiLCJfcmVmMTkiLCJub3JtYWxpemVkQW5zIiwiZ2V0VGlja2V0UERGIiwiX3JlZjIwIiwicXVlcnlTdHJpbmciLCJhcGlVcmwiLCJmZXRjaCIsInJlc3BvbnNlVHlwZSIsImhlYWRlcnMiLCJvayIsImJsb2IiLCJwZGYiLCJsaW5rIiwiZG9jdW1lbnQiLCJjcmVhdGVFbGVtZW50IiwidXJsIiwid2luZG93IiwiVVJMIiwiY3JlYXRlT2JqZWN0VVJMIiwiaHJlZiIsImRvd25sb2FkIiwiZGlzcGF0Y2hFdmVudCIsIk1vdXNlRXZlbnQiLCJSZWFjdCIsInVzZVN0YXRlIiwiZm9yd2FyZFJlZiIsIlByb3BUeXBlcyIsInN0eWxlcyIsImpzeCIsIl9qc3giLCJqc3hzIiwiX2pzeHMiLCJNQVhfSU5JVElBTFMiLCJCYWRnZUZlYXR1cmVJY29uIiwicmVmIiwiaW1hZ2UiLCJjbGFzc05hbWUiLCJwcm9wcyIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllcyIsIl9leGNsdWRlZCIsImltYWdlTG9hZGVkIiwic2V0SW1hZ2VMb2FkZWQiLCJpbWFnZUVycm9yIiwic2V0SW1hZ2VFcnJvciIsInNob3dGYWxsYmFjayIsImluaXRpYWxzIiwic3BsaXQiLCJ3b3JkIiwic3Vic3RyaW5nIiwidG9VcHBlckNhc2UiLCJiYWRnZUZlYXR1cmVJY29uIiwiY2hpbGRyZW4iLCJiYWRnZUZlYXR1cmVJbWFnZSIsInNyYyIsImFsdCIsIm9uTG9hZCIsIm9uRXJyb3IiLCJzdHlsZSIsImRpc3BsYXkiLCJiYWRnZUZlYXR1cmVJbml0aWFscyIsInByb3BUeXBlcyIsInN0cmluZyIsImlzUmVxdWlyZWQiLCJCdXR0b24iLCJEaWFsb2ciLCJEaWFsb2dBY3Rpb25zIiwiRGlhbG9nQ29udGVudCIsIkRpYWxvZ0NvbnRlbnRUZXh0IiwiRGlhbG9nVGl0bGUiLCJ1c2VUcmFuc2xhdGlvbiIsIkNvbmZpcm1EaWFsb2ciLCJvcGVuIiwiYm9keSIsIm9uQ2xvc2UiLCJvbkNvbmZpcm0iLCJvbkNsaWNrIiwiYXV0b0ZvY3VzIiwiQ29udGVudENvcHlJY29uIiwiVG9vbHRpcCIsIk1JTExJU0VDX1RPX1NFQyIsImRlZmF1bHRXaWR0aCIsIkNvcHlUZXh0IiwidGV4dCIsInRvb2x0aXBUZXh0IiwiaGlkZUNvcHkiLCJ0cnVuY2F0ZWQiLCJyZXZlcnNlZCIsIndpZHRoIiwidG9vbHRpcFRleHRUb1VzZSIsInRvb2x0aXAiLCJzZXRUb29sdGlwIiwiY2xhc3NOYW1lcyIsImhhbmRsZUNvcHkiLCJuYXZpZ2F0b3IiLCJjbGlwYm9hcmQiLCJ3cml0ZVRleHQiLCJzZXRUaW1lb3V0Iiwid3JhcHBlciIsImNvcHlJY29uIiwiYm9vbCIsIm51bWJlciIsImNyZWF0ZUNvbnRleHQiLCJDdXN0b21Ob3RpZmljYXRpb25Db250ZXh0IiwiQWxlcnQiLCJTbmFja2JhciIsIlR5cG9ncmFwaHkiLCJDaGVja0NpcmNsZUljb24iLCJFcnJvckljb24iLCJDdXN0b21Ob3RpZmljYXRpb24iLCJzZXZlcml0eSIsImFuY2hvck9yaWdpbiIsInZlcnRpY2FsIiwiaG9yaXpvbnRhbCIsImF1dG9IaWRlRHVyYXRpb24iLCJ2YXJpYW50Iiwic3giLCJiYWNrZ3JvdW5kQ29sb3IiLCJpY29uTWFwcGluZyIsInN1Y2Nlc3MiLCJmb250U2l6ZSIsImVycm9yIiwiZnVuYyIsIlRoZW1lUHJvdmlkZXIiLCJjcmVhdGVUaGVtZSIsImRhcmtDb2xvciIsInJvb3QiLCJkb2N1bWVudEVsZW1lbnQiLCJnZXRDb21wdXRlZFN0eWxlIiwiZ2V0UHJvcGVydHlWYWx1ZSIsInRoZW1lIiwicGFsZXR0ZSIsInByaW1hcnkiLCJtYWluIiwic2Vjb25kYXJ5IiwidHlwb2dyYXBoeSIsImJvZHkxIiwiZm9udFdlaWdodCIsImg1IiwibWFyZ2luQm90dG9tIiwiaDYiLCJjb21wb25lbnRzIiwiTXVpRm9ybUhlbHBlclRleHQiLCJzdHlsZU92ZXJyaWRlcyIsIk11aUJ1dHRvbiIsImxpbmVIZWlnaHQiLCJNdWlUYWIiLCJjb2xvciIsIk11aVRhYnMiLCJpbmRpY2F0b3IiLCJDdXN0b21UaGVtZSIsIm5vZGUiLCJDaGVja2JveCIsIkZvcm1Db250cm9sIiwiRm9ybUNvbnRyb2xMYWJlbCIsIkZvcm1Hcm91cCIsIkZvcm1IZWxwZXJUZXh0IiwiRm9ybUxhYmVsIiwiUmF3SFRNTCIsImdldExhYmVsIiwidG9TbHVnIiwiQ2hlY2tib3hMaXN0UXVlc3Rpb25GaWVsZCIsIl9xdWVzdGlvbiR2YWx1ZXMiLCJxdWVzdGlvbiIsInF1ZXN0aW9uQ2xhc3NOYW1lIiwiaXNEaXNhYmxlZCIsIm9uQ2hhbmdlIiwic2V0RmllbGRWYWx1ZSIsImhlbHBlclRleHQiLCJyZXN0IiwicXVlc3Rpb25TbHVnIiwicXVlc3Rpb25MYWJlbCIsIm1hbmRhdG9yeSIsInF1ZXN0aW9uTWF4VmFsdWVzIiwibWF4X3NlbGVjdGVkX3ZhbHVlcyIsInF1ZXN0aW9uT3B0aW9ucyIsInZhbHVlcyIsInZhbCIsImxhYmVsIiwidG9TdHJpbmciLCJoYW5kbGVDaGVja2JveExpc3RDaGFuZ2UiLCJjaGVja2VkIiwiY3VycmVudEFucyIsIm1heFNlbGVjdGlvblJlYWNoZWQiLCJuZXdWYWx1ZSIsInYiLCJkaXNhYmxlZCIsInJlcXVpcmVkIiwiZnVsbFdpZHRoIiwibWFyZ2luIiwib3AiLCJjb250cm9sIiwiaW5jbHVkZXMiLCJldiIsInRhcmdldCIsIm9iamVjdCIsImFycmF5IiwiQ2hlY2tib3hRdWVzdGlvbkZpZWxkIiwiYWxpZ25JdGVtcyIsIm1hcmdpblRvcCIsIklucHV0TGFiZWwiLCJNZW51SXRlbSIsIlNlbGVjdCIsIkRyb3Bkb3duUXVlc3Rpb25GaWVsZCIsImxhYmVsSWQiLCJSYWRpbyIsIlJhZGlvR3JvdXAiLCJSYWRpb0xpc3RRdWVzdGlvbkZpZWxkIiwiVGV4dEZpZWxkIiwiVGV4dFF1ZXN0aW9uRmllbGQiLCJRdWVzdGlvblR5cGVfQ2hlY2tib3giLCJRdWVzdGlvblR5cGVfQ2hlY2tCb3hMaXN0IiwiUXVlc3Rpb25UeXBlX0NvbWJvQm94IiwiUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveCIsIlF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbkxpc3QiLCJjaGVja1J1bGUiLCJydWxlIiwiYW5zd2VyX3ZhbHVlcyIsIkFycmF5IiwiaXNBcnJheSIsImFuc3dlcl92YWx1ZXNfb3BlcmF0b3IiLCJjaGVja1Zpc2liaWxpdHkiLCJydWxlUmVzdWx0IiwidmlzaWJpbGl0eSIsInZpc2liaWxpdHlfY29uZGl0aW9uIiwicXVlc3Rpb25JZCIsInRleHRMQyIsInRvTG93ZXJDYXNlIiwicmVwbGFjZSIsInEiLCJfcSRsYWJlbCIsImlzQW5zd2VyZWQiLCJhbnN3ZXIiLCJjaGVja0lmVmFsdWVNYXRjaCIsImNvbXBhcmVWYWwiLCJhbnN3ZXJBcnJheSIsInNvbWUiLCJnZXRUeXBlSW5pdGlhbFZhbHVlIiwidHlwZSIsImdldFR5cGVWYWx1ZSIsImFucyIsInRyYW5zZm9ybUFud2Vyc0Zvcm1hdCIsImRpc2NsYWltZXJfYWNjZXB0ZWQiLCJleHRyYV9xdWVzdGlvbnMiLCJmb3JtYXR0ZWRFUSIsInF1ZXN0aW9uX2lkIiwicGFyc2VJbnQiLCJwb3AiLCJRdWVzdGlvblR5cGVfVGV4dCIsIlF1ZXN0aW9uVHlwZV9UZXh0QXJlYSIsIlF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbiIsImdldFF1ZXN0aW9uRmllbGRDb21wb25lbnQiLCJxdWVzdGlvblR5cGUiLCJGcmFnbWVudCIsIkV4dHJhUXVlc3Rpb25zRmllbGRzIiwib3JpZ2luYWxBbnN3ZXJzIiwicmVhZE9ubHkiLCJhbGxvd0VkaXQiLCJmb3JtaWsiLCJyZW5kZXJSdWxlIiwiaXNWaXNpYmxlIiwicmVuZGVyUXVlc3Rpb24iLCJzdWJfcXVlc3Rpb24iLCJfcSRzdWJfcXVlc3Rpb25fcnVsZXMiLCJRdWVzdGlvbkZpZWxkQ29tcG9uZW50IiwiZm9ybWlrUHJvcHMiLCJoYW5kbGVDaGFuZ2UiLCJvbkJsdXIiLCJoYW5kbGVCbHVyIiwidG91Y2hlZCIsIkJvb2xlYW4iLCJzdWJfcXVlc3Rpb25fcnVsZXMiLCJ1c2VTZWxlY3RvciIsInNoYWxsb3dFcXVhbCIsIkJveCIsIkNhcmRIZWFkZXIiLCJJY29uQnV0dG9uIiwiQ29sbGFwc2UiLCJDYXJkQ29udGVudCIsIkV4cGFuZE1vcmVJY29uIiwiQXNzaWduZWRGaWx0ZXIiLCJvbkZpbHRlciIsImZpbHRlclZhbHVlcyIsInN0YXRlIiwiaXNFeHBhbmRlZCIsInNldElzRXhwYW5kZWQiLCJhc3NpZ25lZFZhbHVlcyIsImhhbmRsZUZpbHRlckNoYW5nZSIsIm5ld0ZpbHRlciIsInRpdGxlV3JhcHBlciIsImFjdGlvbiIsImRpc2FibGVSaXBwbGUiLCJ0cmFuc2Zvcm0iLCJ0cmFuc2l0aW9uIiwiaW4iLCJ0aW1lb3V0IiwidW5tb3VudE9uRXhpdCIsInB5IiwicGIiLCJhc3NpZ25lZCIsInVzZUVmZmVjdCIsIkJhZGdlRmVhdHVyZUZpbHRlciIsImJhZGdlX2ZlYXR1cmVzX3R5cGVzIiwibmV3RmlsdGVycyIsImYiLCJiZiIsInVzZVJlZiIsIlN0YWNrIiwiRmlsdGVyTGlzdEljb24iLCJCYWRnZSIsIkNhcmQiLCJEaXZpZGVyIiwiUGFwZXIiLCJjb25uZWN0IiwiVGlja2V0VHlwZUZpbHRlciIsIlN0YXR1c0ZpbHRlciIsIkZyZWVQYWlkRmlsdGVyIiwiUHJvbW9Db2RlRmlsdGVyIiwiRmlsdGVyIiwib25SZXNldCIsImFjdGl2ZUZpbHRlcnNDb3VudCIsInNob3dGaWx0ZXJMaXN0Iiwic2V0U2hvd0ZpbHRlckxpc3QiLCJzaG93RGF0ZXBpY2tlciIsInNldFNob3dEYXRlcGlja2VyIiwiZmlsdGVyUmVmIiwiaGFuZGxlRmlsdGVyQ2xpY2tPdXRzaWRlIiwiZXZlbnQiLCJjdXJyZW50IiwiY29udGFpbnMiLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsInRvZ2dsZSIsImhhbmRsZUZpbHRlclJlc2V0IiwiZmlsdGVyQ29udGFpbmVyIiwicHQiLCJiYWRnZUNvbnRlbnQiLCJtciIsImZpbHRlckljb24iLCJmaWx0ZXJMYWJlbCIsImZpbHRlckxpc3RDb250YWluZXIiLCJjb250YWluZXIiLCJlbGV2YXRpb24iLCJmaWx0ZXJDaGVja2JveENvbnRhaW5lciIsImNsZWFuQnV0dG9uIiwibWFwU3RhdGVUb1Byb3BzIiwicHJvbW9Db2RlIiwic2V0UHJvbW9Db2RlIiwiZGVib3VuY2VUaW1lciIsIkRFQk9VTkNFX1ZBTFVFIiwibmV3UHJvbW9Db2RlIiwiY2xlYXJUaW1lb3V0IiwicGxhY2Vob2xkZXIiLCJzdHlsZWQiLCJTZWFyY2hJY29uIiwiQ2xvc2VJY29uIiwiSW5wdXRCYXNlIiwiU2VhcmNoQ29udGFpbmVyIiwicG9zaXRpb24iLCJtYXJnaW5SaWdodCIsIm1hcmdpbkxlZnQiLCJTZWFyY2hJY29uV3JhcHBlciIsImhlaWdodCIsImp1c3RpZnlDb250ZW50IiwiU3R5bGVkSW5wdXRCYXNlIiwiYm9yZGVyQm90dG9tIiwicGFkZGluZ0xlZnQiLCJwYWRkaW5nUmlnaHQiLCJDbG9zZUljb25XcmFwcGVyIiwicGFkZGluZyIsInRvcCIsInJpZ2h0IiwiY3Vyc29yIiwiekluZGV4IiwiU2VhcmNoIiwib25TZWFyY2giLCJzZWFyY2hWYWx1ZSIsInNldFNlYXJjaFZhbHVlIiwic2hvd0Nsb3NlQnRuIiwib25LZXlEb3duIiwibmF0aXZlRXZlbnQiLCJyZXNldFNlYXJjaCIsImlucHV0UHJvcHMiLCJJbXBvcnRFeHBvcnRJY29uIiwiU29ydCIsIm9uU29ydCIsInNob3dTb3J0Iiwic2V0U2hvd1NvcnQiLCJzb3J0UmVmIiwiaGFuZGxlU29ydENsaWNrT3V0c2lkZSIsInNvcnRDb250YWluZXIiLCJzb3J0SWNvbiIsInNvcnRMYWJlbCIsInNvcnRMaXN0Q29udGFpbmVyIiwidGlja2V0X3R5cGVzIiwiR3JpZCIsIkZpbHRlcnMiLCJqdXN0aWZ5IiwiaXRlbSIsInhzIiwiZ2FwIiwiZmlsdGVyU29ydENvbnRhaW5lciIsIkZvcm1Gb290ZXIiLCJzYXZlTGFiZWwiLCJjYW5jZWxMYWJlbCIsImZvb3RlciIsImNhbmNlbEJ0biIsInNpemUiLCJzYXZlQnRuIiwiRXJyb3JMYWJlbCIsImRhdGFUZXN0SWQiLCJlcnJvckxhYmVsIiwiQmFja2Ryb3AiLCJDaXJjdWxhclByb2dyZXNzIiwiTG9hZGVyIiwiZHJhd2VyIiwiSW5maW5pdGVTY3JvbGwiLCJPcmRlcnNMaXN0IiwiT05FX1BBR0VfTkVYVCIsIk15T3JkZXJzVGlja2V0cyIsImZldGNoRGF0YSIsIm1lbWJlck9yZGVycyIsIm9yZGVyc19jdXJyZW50X3BhZ2UiLCJvcmRlcnNfbGFzdF9wYWdlIiwibXlPcmRlcnNXcmFwcGVyIiwiZGF0YUxlbmd0aCIsIm5leHQiLCJoYXNNb3JlIiwic2Nyb2xsVGhyZXNob2xkIiwiVGlja2V0c0ljb24iLCJ2aWV3Qm94IiwiZmlsbCIsInhtbG5zIiwiZCIsInN0cm9rZSIsInN0cm9rZVdpZHRoIiwic3Ryb2tlTGluZWNhcCIsInN0cm9rZURhc2hhcnJheSIsIlRBQlMiLCJfRnJhZ21lbnQiLCJOb1RpY2tldHNGb3VuZCIsInBhZ2VWaWV3IiwibG9hZGluZyIsImdldENvbnRlbnQiLCJtYWlsdG9UYWciLCJzdXBwb3J0X2VtYWlsIiwiYnV0dG9uTGFiZWwiLCJUSUNLRVRTIiwiaWNvbldyYXBwZXIiLCJjYWxjdWxhdGVPcmRlclRvdGFscyIsImZvcm1hdEN1cnJlbmN5IiwiT3JkZXJTdW1tYXJ5VGFibGUiLCJkaXNjb3VudFRvdGFsIiwicmVmdW5kVG90YWwiLCJhbW91bnRUb3RhbCIsInN1YlRvdGFsIiwidGlja2V0U3VtbWFyeSIsInRheGVzU3VtbWFyeSIsImh1bmRyZWQiLCJvcmRlclN1bW1hcnlUYWJsZSIsInRpY2tldFRvdGFsIiwicXR5IiwidGlja2V0X3R5cGUiLCJjb3N0IiwiYWxpZ24iLCJjdXJyZW5jeSIsImNyZWF0ZWQiLCJ0YXhlc19hbW91bnQiLCJ0YXgiLCJhbW91bnQiLCJkaXNjb3VudF9hbW91bnQiLCJzaGFwZSIsInVzZU5vdyIsInRpY2tldHNSZWZ1bmRhYmxlIiwidXNlU3VtbWl0RGV0YWlscyIsIlJlZnVuZEVtYWlsU3VwcG9ydCIsInN1Ym1pdFJlcXVlc3QiLCJvblJlZnVuZENsaWNrIiwib25SZWZ1bmREZXRhaWxDbGljayIsImlzU3RhcnRlZCIsIm5vdyIsImlzSW5SZWZ1bmRhYmxlUGVyaW9kIiwicmVnaXN0cmF0aW9uX2FsbG93ZWRfcmVmdW5kX3JlcXVlc3RfdGlsbF9kYXRlIiwiYXRMZWFzdE9uZVJlZnVuZGFibGVUaWNrZXQiLCJpc1JlZnVuZGFibGUiLCJoYXNSZWZ1bmRSZXF1ZXN0cyIsInJvbGUiLCJvcmRlclN1bW1hcnlCdXR0b24iLCJyZWZ1bmREaXNhYmxlZCIsInJlbCIsImFycmF5T2YiLCJPcmRlclN1bW1hcnkiLCJvcmRlclN1bW1hcnlXcmFwcGVyIiwicHgiLCJvcmRlclN1bW1hcnlQdXJjaGFzZWRJbmZvIiwibWVtYmVyVGlja2V0cyIsIk9yZGVyTGlzdFRpY2tldHMiLCJBc3NpZ25Ub01lIiwidXNlclRpY2tldHMiLCJ1c2VyX3RpY2tldHNfY3VycmVudF9wYWdlIiwidXNlcl90aWNrZXRzX2xhc3RfcGFnZSIsIm9yZGVyVGlja2V0Q29udGFpbmVyIiwiYXNzaWduZWRUb01lV3JhcHBlciIsInRpY2tldExpc3RDb250YWluZXIiLCJpc1JlZnVuZE1vZGFsIiwiaXNTZWxlY3RlZFRvUmVmdW5kIiwic2VsZWN0VG9SZWZ1bmQiLCJpc0V4dGVybmFsQXNzaWduZWRUaWNrZXQiLCJBc3NpZ25lZFRvIiwiRXh0ZXJuYWxBc3NpZ25lZFRvIiwiTWFuYWdlRm9yIiwiQXR0ZW5kZWVTdGF0dXMiLCJfdGlja2V0JG93bmVyIiwiX3RpY2tldCRvd25lcjIiLCJfdGlja2V0JG93bmVyMyIsImlzVW5hc3NpZ25lZCIsImlzX2FjdGl2ZSIsImlzRGVsZWdhdGVkIiwidGlja2V0T3duZXJFbWFpbCIsIl90aWNrZXQkb3JkZXIiLCJfdGlja2V0JG9yZGVyMiIsIl90aWNrZXQkb3duZXI0IiwiX3RpY2tldCRvd25lcjUiLCJhc3NpZ25lZEJ5VGV4dCIsIm93bmVyX2ZpcnN0X25hbWUiLCJvd25lcl9sYXN0X25hbWUiLCJQQUdJTkFUSU9OX0RJU1BMQVlfQ09VTlQiLCJPcmRlckxpc3RJdGVtIiwiX29yZGVyJG1lbWJlclRpY2tldHMiLCJfb3JkZXIkbWVtYmVyVGlja2V0czIiLCJvblBhZ2luYXRlQ2xpY2siLCJ0aWNrZXRzVG9SZWZ1bmQiLCJpdGVtc1RvRGlzcGxheSIsInNldEl0ZW1zVG9EaXNwbGF5IiwidGlja2V0c190b3RhbCIsInNsaWNlZFRpY2tldHMiLCJzbGljZSIsIm9uVmlld01vcmUiLCJvblZpZXdMZXNzIiwiZmluZCIsInZpZXdNb3JlQnV0dG9uIiwidXNlRGlzcGF0Y2giLCJUaWNrZXRTdGF0dXMiLCJnZXRTdW1taXRSZWFzc2lnbkRhdGUiLCJUaWNrZXREZXRhaWwiLCJ1c2VUaWNrZXREZXRhaWxzIiwiVGlja2V0QXNzaWduIiwibW9kYWxWaWV3cyIsImRldGFpbCIsInJlYXNzaWduIiwiYXNzaWduIiwiVGlja2V0Q1RBcyIsImlzSW5jb21wbGV0ZSIsImlzUmVhc3NpZ25hYmxlIiwib25PcGVuQ2xpY2siLCJhc3NpZ25UaWNrZXRCdXR0b24iLCJ2aWV3RmluaXNoVGlja2V0QnV0dG9uIiwicmVhc3NpZ25CdXR0b24iLCJfdGlja2V0JHRpY2tldF90eXBlIiwiX3RpY2tldCRiYWRnZSIsImNhblJlYXNzaWduIiwibW9kYWxPcGVuIiwic2V0TW9kYWxPcGVuIiwicmVhc3NpZ25EYXRlIiwib25SZWFzc2lnbmFibGVQZXJpb2QiLCJoYW5kbGVDbG9zZU1vZGFsIiwiaGFuZGxlT3Blbk1vZGFsIiwidmlldyIsIm9yZGVyV3JhcHBlciIsInJlZnVuZE1vZGFsIiwiZGlzYWJsZWRSZWZ1bmQiLCJzZWxlY3RlZCIsImNoZWNrYm94IiwicGwiLCJ0aWNrZXRUaWNrZXRUeXBlIiwiYmFkZ2VGZWF0dXJlV3JhcHBlciIsInByIiwiYmFkZ2UiLCJmZWF0dXJlcyIsInRpY2tldE5vIiwidGlja2V0Rm9vdGVyIiwidGlja2V0QWN0aW9uQnV0dG9ucyIsIm93bmVySWQiLCJ0b3RhbF9yZWZ1bmRlZF9hbW91bnQiLCJUYWJzIiwiVGFiIiwiUmVmdW5kUmVxdWVzdHNNb2RhbCIsIlJlZnVuZERldGFpbHMiLCJUYWJQYW5lbCIsImluZGV4IiwiaGlkZGVuIiwiT3JkZXJzTGlzdERlc2t0b3BNb2JpbGUiLCJpc01vYmlsZSIsImRldGFpbHNSZXF1aXJlZCIsInNldFZhbHVlIiwiXyIsInNldFRpY2tldHNUb1JlZnVuZCIsInNldFN1Ym1pdFJlcXVlc3QiLCJyZWZ1bmREZXRhaWxzT3BlbiIsInNldFJlZnVuZERldGFpbHNPcGVuIiwidW5zZWxlY3RSZWZ1bmRUaWNrZXRzIiwiZmlsdGVyU2VsZWN0ZWQiLCJzZWxlY3RlZFRpY2tldCIsImNsb3NlU3VibWl0UmVxdWVzdCIsInJlc2V0QWxsUmVmdW5kU3RhdHVzZXMiLCJtb3JlRGV0YWlscyIsImJvcmRlckNvbG9yIiwidGFiQnV0dG9ucyIsIm9uUmVmdW5kU3VjY2Vzc0Nsb3NlIiwib25DbG9zZVNsaWRlciIsIm1kIiwidXNlVGhlbWUiLCJ1c2VNZWRpYVF1ZXJ5IiwiZ2V0Rm9ybWF0dGVkRGF0ZSIsInRpY2tldF9wZXJfcGFnZSIsImJyZWFrcG9pbnRzIiwiZG93biIsImlzTW9iaWxlVmlld2FibGUiLCJzZXRNb2JpbGVWaWV3YWJsZSIsInRpY2tldHNfcGFnZV9jdXJyZW50IiwibGciLCJvcmRlclRpY2tldEluZm9Db250YWluZXIiLCJvcmRlclRpY2tldEluZm8iLCJyb3dTcGFjaW5nIiwiY29sdW1uU3BhY2luZyIsInNtIiwiZGlzcGxheV9ub25lIiwiZmxleERpcmVjdGlvbiIsInVzZU1lbW8iLCJSaWdodERyYXdlciIsIlJlZnVuZFJlcXVlc3RlZFRpY2tldCIsImdldEFsbFJlZnVuZFJlcXVlc3RlZFRpY2tldHMiLCJyZXF1ZXN0ZWRUaWNrZXRzIiwiY2xvc2VTbGlkZXIiLCJyZWZ1bmREZXRhaWxzIiwidG9vbHRpcENsYXNzZXMiLCJJbmZvSWNvbiIsIm1vbWVudCIsIlJlZnVuZFN0YXR1cyIsIkdSSURfOCIsIkdSSURfMTIiLCJQQURESU5HXzIiLCJhcHByb3ZlZFJlZnVuZHMiLCJyZWZ1bmQiLCJyZWZ1bmRlZFRheGVzU3VtbWF0b3J5IiwicmVmdW5kZWRfdGF4ZXMiLCJydCIsInRheElkIiwidG90YWxSZWZ1bmRlZFRheEFtb3VudCIsInJlZnVuZGVkX2Ftb3VudCIsIkh0bWxUb29sdGlwIiwiY2xhc3NlcyIsInBvcHBlciIsIm1heFdpZHRoIiwiYm9yZGVyIiwicmVmdW5kVGlja2V0Qm94Q29udGFpbmVyIiwicmVmdW5kRGV0YWlsIiwicmVmdW5kVGlja2V0QXR0ZW5kZWUiLCJhY3Rpb25fZGF0ZSIsImZvcm1hdCIsIkNoaXAiLCJnZXRSZWZ1bmRSZXF1ZXN0ZWRTdGF0dXNDb2xvciIsInN0YXR1c0NvbG9yIiwiYnV0dG9uUGlsbCIsIlN0eWxlZEVuZ2luZVByb3ZpZGVyIiwiU1RFUF9PTkUiLCJTVEVQX1RIUkVFIiwiU1RFUF9UV08iLCJzdGVwIiwic2V0U3RlcCIsImVycm9yTXNnIiwic2V0RXJyb3JNc2ciLCJyZWZ1bmRTdWNjZXNzIiwic2V0UmVmdW5kU3VjY2VzcyIsImNvbmZpcm1SZWZ1bmQiLCJnb0JhY2tUb1JlZnVuZCIsInJlZnVuZFRpY2tldHMiLCJyZWZ1bmRTdGVwT25lIiwic3VidGl0bGUiLCJ0aWNrZXRMaXN0IiwiYWN0aW9uQnV0dG9ucyIsImNhbmNlbEJ1dHRvbiIsImNvbnRpbnVlQnV0dG9uIiwicmVmdW5kU3RlcFR3byIsInJlZnVuZEVycm9yTXNnIiwiQ1RBQnV0dG9uV3JhcHBlciIsInJlZnVuZFN0ZXBUaHJlZSIsInJlZnVuZFN1Y2Nlc3NmdWwiLCJzdWNjZXNzTXNnIiwic3VjY2Vzc01zZzIiLCJyZW5kZXJTdGVwcyIsImluamVjdEZpcnN0IiwiRHJhd2VyIiwiQ2xvc2UiLCJoZWFkZXJDaGlsZHJlbiIsImFuY2hvciIsIk1vZGFsUHJvcHMiLCJrZWVwTW91bnRlZCIsImhlYWRlciIsImNsb3NlQnRuIiwiZmxvYXQiLCJndXR0ZXJCb3R0b20iLCJvbmVPZlR5cGUiLCJTdW1taXRIZWFkZXIiLCJ3aWRnZXRIZWFkZXIiLCJzdW1taXRUaXRsZURhdGUiLCJkYXRlc19sYWJlbCIsIlRhYldyYXBwZXIiLCJ0YWIiLCJzZXRUYWIiLCJoYXNUaWNrZXRzIiwiaXNGaWx0ZXJlZCIsImNsZWFyRmlsdGVycyIsImdldFBhZ2VWaWV3IiwiZ2V0T25DbGljayIsInRhYlRvTGluayIsIkxpbmsiLCJSZWFzc2lnbkZvcm0iLCJEZWxlZ2F0ZUZvcm0iLCJBc3NpZ25PcHRpb25zIiwiYXNzaWduT3B0aW9uIiwic2V0QXNzaWduT3B0aW9uIiwib25Bc3NpZ24iLCJvbkRlbGVnYXRlIiwib25VbkFzc2lnbiIsIm9wZW5Db25maXJtVW5hc3NpZ24iLCJzZXRPcGVuQ29uZmlybVVuYXNzaWduIiwiaXNBc3NpZ25lZFRvTWUiLCJhbGxvd3NEZWxlZ2F0ZSIsImhhbmRsZVVuQXNzaWduIiwibXkiLCJvblN1Ym1pdCIsIm5ld19hdHRlbmRlZV9lbWFpbCIsInBlcnNvbmFsX21lc3NhZ2UiLCJkZWxlZ2F0ZV9maXJzdF9uYW1lIiwiZGVsZWdhdGVfbGFzdF9uYW1lIiwiZGVsZWdhdGVfZW1haWwiLCJ1bmFzc2lnbldyYXBwZXIiLCJjb21wb25lbnQiLCJ0ZXh0RGVjb3JhdGlvbiIsInRleHREZWNvcmF0aW9uQ29sb3IiLCJ1c2VGb3JtaWsiLCJ5dXAiLCJpbml0aWFsVmFsdWVzIiwidmFsaWRhdGlvblNjaGVtYSIsInJlc2V0Rm9ybSIsImhhbmRsZUNhbmNlbCIsImhhbmRsZVN1Ym1pdCIsIm5vVmFsaWRhdGUiLCJpc1N1Ym1pdHRpbmciLCJBc3NpZ25IZWFkZXIiLCJpblByb2dyZXNzIiwidXNlckVtYWlsIiwiYXNzaWduZWRUb1lvdSIsImdldFNlY29uZGFyeVRpdGxlIiwiZ2V0SGVhZGVyTm90ZSIsInRyYW5zS2V5IiwicHVyY2hhc2VkQnlXcmFwcGVyIiwicHVyY2hhc2VkQnkiLCJvd25lcl9lbWFpbCIsIm9yZGVyTm8iLCJoZWFkZXJOb3RlIiwiUmVhc3NpZ25IZWFkZXIiLCJtdWx0aWxpbmUiLCJtaW5Sb3dzIiwidXNlQ29udGV4dCIsIlRpY2tldEZvcm0iLCJ1c2VHZXRUaWNrZXQiLCJUSUNLRVRfRFJBV0VSX0lEIiwic3VjY2Vzc01lc3NhZ2UiLCJlcnJvck1lc3NhZ2UiLCJhc3NpZ25hdGlvbkluUHJvZ3Jlc3MiLCJzZXRBc3NpZ25hdGlvbkluUHJvZ3Jlc3MiLCJpc1VzZXJPcmRlck93bmVyIiwib3duZXJfaWQiLCJpc1VzZXJUaWNrZXRPd25lciIsImNhbkVkaXRUaWNrZXREYXRhIiwiYWxsb3dfdXBkYXRlX2F0dGVuZGVlX2V4dHJhX3F1ZXN0aW9ucyIsIm9uQ2xvc2VFUUZvcm0iLCJvblNhdmVFUSIsInJlc29sdmUiLCJIZWFkZXIiLCJ0aWNrZXRSZWFzc2lnbkNvbnRhaW5lciIsImNhbkVkaXQiLCJBdXRvY29tcGxldGUiLCJxdWVyeVJlZ2lzdHJhdGlvbkNvbXBhbmllcyIsIkNvbXBhbnlGaWVsZCIsInN1bW1pdElkIiwiaW5wdXRWYWx1ZSIsInNldElucHV0VmFsdWUiLCJvcHRpb25zIiwic2V0T3B0aW9ucyIsInNldEZpZWxkVG91Y2hlZCIsInJlc3VsdHMiLCJuZXdPcHRpb25zIiwiYXV0b0NvbXBsZXRlIiwiZnJlZVNvbG8iLCJpbmNsdWRlSW5wdXRJbkxpc3QiLCJmaWx0ZXJTZWxlY3RlZE9wdGlvbnMiLCJnZXRPcHRpb25MYWJlbCIsIm9wdGlvbiIsInRtcFZhbHVlIiwib25JbnB1dENoYW5nZSIsIm5ld0lucHV0VmFsdWUiLCJmaWx0ZXJPcHRpb25zIiwiZmlsdGVyZWQiLCJpc0V4aXN0aW5nIiwicmVuZGVySW5wdXQiLCJyZW5kZXJPcHRpb24iLCJvcHRpb25Qcm9wcyIsIlJlZ2lzdHJhdGlvbkRpc2NsYWltZXIiLCJkaXNjbGFpbWVyIiwiUVJDb2RlIiwiRW1haWxPdXRsaW5lZCIsIkVtYWlsSWNvbiIsIkZpbGVEb3dubG9hZE91dGxpbmVkIiwiRG93bmxvYWRJY29uIiwiVFdPX0lURU0iLCJUaWNrZXREZXRhaWxIZWFkZXIiLCJpc1ZpcnR1YWxTdW1taXQiLCJpc0NvbXBsZXRlIiwic2VudENvbmZpcm1hdGlvbiIsInNldFNlbnRDb25maXJtYXRpb24iLCJkb3dubG9hZFRpY2tldFBkZiIsIm9uU2VuZEVtYWlsIiwicXJDb2RlIiwicXJfY29kZSIsInFyTm90ZSIsImFjdGlvbkJ1dHRvbnNDb250YWluZXIiLCJkb3dubG9hZEJ0biIsInNlbmRCdG4iLCJzZW50Iiwib3JkZXJOdW1iZXIiLCJUaWNrZXRPd25lckZpZWxkcyIsInVzZVNjcm9sbFRvRXJyb3IiLCJwYXJzZUFuc3dlcnMiLCJidWlsZFZhbGlkYXRpb25TY2hlbWEiLCJyZWR1Y2UiLCJyZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9tYW5kYXRvcnkiLCJyZWxldmFudEFuc3dlcnMiLCJlbmFibGVSZWluaXRpYWxpemUiLCJhZGRpdGlvbmFsRGV0YWlscyIsInJlZ2lzdHJhdGlvbl9kaXNjbGFpbWVyX2NvbnRlbnQiLCJpbmZvTm90ZSIsIm9uU2F2ZSIsInRpY2tldERldGFpbENvbnRhaW5lciIsImlzX3ZpcnR1YWwiLCJhdHRlbmRlZUNvbnRhaW5lciIsImF0dGVuZGVlSW5mb1RpdGxlIiwiQ29udGFpbmVyIiwiX3RpY2tldCRyZWZ1bmRfcmVxdWVzIiwiaXNBY3RpdmUiLCJyZWZ1bmRSZXF1ZXN0cyIsInRpY2tldFN0YXR1c0NvbnRhaW5lciIsImJ1dHRvblJlZnVuZFJlcXVlc3RlZCIsImJ1dHRvbkluY29tcGxldGUiLCJidXR0b25VbmFzc2lnbmVkIiwiYnV0dG9uQ29tcGxldGUiLCJidXR0b25DYW5jZWxsZWQiLCJBc3NpZ25lZFRvTWUiLCJXaWRnZXRUYWJzIiwidGlja2V0c0Z1bGx5TG9hZGVkIiwic2V0VGlja2V0c0Z1bGx5TG9hZGVkIiwib3JkZXJzX3Blcl9wYWdlIiwib3JkZXJzUGVyUGFnZSIsInRpY2tldFBlclBhZ2UiLCJoYW5kbGVUYWJDaGFuZ2UiLCJuZXdUYWIiLCJmZXRjaEFzc2lnbmVkVGlja2V0cyIsImZldGNoT3JkZXJUaWNrZXRzIiwib3JkZXJUaWNrZXRzUHJvbWlzZXMiLCJjdXJyZW50X3BhZ2UiLCJmZXRjaFByb21pc2VzIiwidGFiV3JhcHBlciIsIldpZGdldFdyYXBwZXIiLCJtc2dEYXRhIiwic2V0TXNnRGF0YSIsIm1lc3NhZ2VDb250ZXh0IiwiZmlsdGVyVmFsdWUiLCJzb3J0VmFsdWUiLCJ0aWNrZXRzVGl0bGVUZXh0IiwiUHJvdmlkZXIiLCJydW4iLCJjdXJyZW50VGlja2V0Iiwic21vb3RoU2Nyb2xsVG8iLCJ0YXJnZXRTY3JvbGxUb3AiLCJkdXJhdGlvbiIsInN0YXJ0U2Nyb2xsVG9wIiwic2Nyb2xsVG9wIiwiZGlzdGFuY2UiLCJzdGFydFRpbWUiLCJhbmltYXRpb25TdGVwIiwidGltZXN0YW1wIiwiZWxhcHNlZCIsInByb2dyZXNzIiwiTWF0aCIsIm1pbiIsImVhc2VJbk91dFF1YWQiLCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCJpc1ZhbGlkIiwiZXJyb3JBcnJheSIsImVycm9yQ291bnQiLCJlbGVtZW50c1NvcnRlZCIsInJlc3VsdCIsImVsZW1lbnQiLCJxdWVyeVNlbGVjdG9yIiwiZWxSZWN0IiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwiYSIsImIiLCJnZXRFbGVtZW50QnlJZCIsImNvbnRhaW5lclJlY3QiLCJlbGVtT2ZmZXN0IiwiYW5pbWF0aW9uRHVyYXRpb24iLCJpc1RpY2tldFJlZnVuZGFibGUiLCJTVEFUVVNfQ09NUExFVEUiLCJTVEFUVVNfSU5DT01QTEVURSIsIlNUQVRVU19DQU5DRUxMRUQiLCJTVEFUVVNfVU5BU1NJR05FRCIsIl90aWNrZXQkcHJvbW9fY29kZSIsIl90aWNrZXQkdGlja2V0X3R5cGUyIiwiX3RpY2tldCRwcm9tb19jb2RlMiIsImdldFN0YXR1cyIsImFsbG93c190b19kZWxlZ2F0ZSIsInByb21vX2NvZGUiLCJhbGxvd3NfdG9fcmVhc3NpZ24iLCJpbml0UmVhY3RJMThuZXh0IiwiTGFuZ3VhZ2VEZXRlY3RvciIsImVuIiwiZXMiLCJ1c2UiLCJpbml0IiwiZmFsbGJhY2tMbmciLCJkZWJ1ZyIsInJlc291cmNlcyIsInRyYW5zbGF0aW9uIiwiaW50ZXJwb2xhdGlvbiIsImVzY2FwZVZhbHVlIiwiTE9HT1VUX1VTRVIiLCJTVEFSVF9MT0FESU5HIiwiU1RPUF9MT0FESU5HIiwiUkVTRVRfTE9BRElORyIsImNhbGN1bGF0ZUFjdGl2ZUZpbHRlcnMiLCJoYXNMb2FkZWRBbGxEYXRhIiwidXBkYXRlVGlja2V0Q29sbGVjdGlvbiIsIkRFRkFVTFRfRklMVEVSX1NUQVRFIiwiREVGQVVMVF9TVEFURSIsIndpZGdldExvYWRpbmciLCJjdXJyZW50X3RhYiIsIm9yZGVyc190b3RhbCIsInRpY2tldF9jdXJyZW50X3BhZ2UiLCJ0aWNrZXRfbGFzdF9wYWdlIiwidGlja2V0X3RvdGFsIiwidXNlcl90aWNrZXRzX3RvdGFsIiwiYXBpRXJyb3IiLCJXaWRnZXRSZWR1Y2VyIiwibmV3QWN0aXZlQ291bnQiLCJ0b3RhbCIsImxhc3RfcGFnZSIsImZvcm1lck9yZGVyIiwibyIsIl9kYXRhJCIsIm5ld09yZGVycyIsIm1vIiwiX2RhdGEkMiIsIm5ld1RpY2tldHMiLCJ0aWNrZXRzX3BhZ2VfbGFzdCIsIl90aWNrZXRzUmVmdW5kUmVxdWVzdCIsInVwZGF0ZWRUaWNrZXRzIiwidHJyIiwidXBkYXRlZE9yZGVyIiwidGlja2V0RGF0YSIsIm5ld1VzZXJUaWNrZXRzIiwiY29uZmlndXJlU3RvcmUiLCJwZXJzaXN0U3RvcmUiLCJwZXJzaXN0UmVkdWNlciIsIkZMVVNIIiwiUkVIWURSQVRFIiwiUEFVU0UiLCJQRVJTSVNUIiwiUFVSR0UiLCJSRUdJU1RFUiIsInN0b3JhZ2UiLCJjb21iaW5lUmVkdWNlcnMiLCJnZXRTdG9yZSIsImNsaWVudElkIiwibG9naW5VcmwiLCJyZWR1Y2VycyIsInN0b3JlIiwicmVkdWNlciIsIm1pZGRsZXdhcmUiLCJnZXREZWZhdWx0TWlkZGxld2FyZSIsInRodW5rIiwiZXh0cmFBcmd1bWVudCIsImltbXV0YWJsZUNoZWNrIiwic2VyaWFsaXphYmxlQ2hlY2siLCJpZ25vcmVkQWN0aW9ucyIsInVzZUluaXRTdG9yZSIsImNvbmZpZyIsInBlcnNpc3RvciIsImluaXRMb2dPdXQiLCJnZXRBY2Nlc3NUb2tlbiIsIlNlbnRyeSIsImdldEFjY2Vzc1Rva2VuTW9jayIsIkVycm9yIiwiY2FwdHVyZUV4Y2VwdGlvbiIsIkxBU1RfSE9VUl9PRl8yNF9IT1VSIiwiTEFTVF9NSU5VVEVfT0ZfSE9VUiIsIk9ORV9EQVkiLCJNSU5fUkVRVUlSRUQiLCJTVEFUVVNfUEVORElORyIsIlNUQVRVU19FUlJPUiIsIlNUQVRVU19QUk9DRVNTSU5HIiwiU1RBVFVTX1JFRlVORF9QRU5ESU5HIiwiU1RBVFVTX1JFRlVORF9BUFBST1ZFRCIsIlNUQVRVU19SRUZVTkRfUkVKRUNURUQiLCJTVEFUVVNfUkVGVU5EX1BFTkRJTkdfTEMiLCJTVEFUVVNfUkVGVU5EX0FQUFJPVkVEX0xDIiwiU1RBVFVTX1JFRlVORF9SRUpFQ1RFRF9MQyIsIkpFU1RfVElNRU9VVF9JTl9NSUxMSVNFQyIsIk9ORV9JVEVNIiwiRklWRV9JVEVNIiwiU0lYX0lURU0iLCJPTkVfUkVUUlkiLCJsb2NhbGUiLCJkZWZhdWx0T3B0aW9ucyIsIm1pbmltdW1GcmFjdGlvbkRpZ2l0cyIsIm1heGltdW1GcmFjdGlvbkRpZ2l0cyIsImZvcm1hdHRlciIsIkludGwiLCJOdW1iZXJGb3JtYXQiLCJkYXRldGltZSIsInRpbWVab25lIiwidHoiLCJ1bml4IiwiX29yZGVyJGFwcGxpZWRfdGF4ZXMiLCJyYXdfYW1vdW50IiwiY3VycmVuY3lPYmplY3QiLCJwdXJjaGFzZVRpY2tldFRvdGFsIiwidGlja2V0c19leGNlcnB0X2J5X3RpY2tldF90eXBlIiwidGlja2V0VHlwZSIsInR0IiwidGlja2V0X3R5cGVfaWQiLCJhcHBsaWVkX3RheGVzIiwiZm9ybWF0dGVkVGF4IiwicHVyY2hhc2VUb3RhbCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImdldE9yZGVyVGlja2V0cyIsIl9vcmRlcnMkIiwib3JkZXJzIiwiZ2V0RXBvY2hMb3dlclVwcGVySW5TZWNvbmRzIiwidHMiLCJzZXRIb3VycyIsImRlZmF1bHRDdXJyZW50VGltZSIsInJvdW5kIiwiRGF0ZSIsImdldE5vdyIsInRpbWVyU3RhdGUiLCJub3dVdGMiLCJjdXJyZW50UGFnZSIsImNvdW50IiwidHJpbSIsImNoZWNrU3VtbWl0UGFzdCIsInJlYXNzaWduX2RhdGUiLCJyZWFzc2lnbl90aWNrZXRfdGlsbF9kYXRlIiwiZW5kX2RhdGUiLCJjaGVja1N1bW1pdFN0YXJ0ZWQiLCJzdGFydF9kYXRlIiwiZ2V0U3VtbWl0RGF5c0RpZmYiLCJzdGFydERheSIsInRpbWVfem9uZV9pZCIsImVuZERheSIsImRheXMiLCJkaWZmIiwiZ2V0U3VtbWl0Rm9ybWF0dGVkRGF0ZSIsImZvcm1hdFN0YXJ0RGF0ZSIsImZvcm1hdEVuZERhdGUiLCJ5ZWFyIiwibW9udGgiLCJzdGFydERhdGUiLCJlbmREYXRlIiwiZ2V0U3VtbWl0TG9jYXRpb24iLCJfc3VtbWl0JGxvY2F0aW9ucyIsImxvY2F0aW9uIiwibG9jYXRpb25zIiwibCIsImNsYXNzX25hbWUiLCJpc19tYWluIiwiY2l0eSIsImNvdW50cnkiLCJfc3VtbWl0JHRpbWVfem9uZSIsIl9zdW1taXQkdGltZV96b25lMiIsImZvcm1hdHRlZERhdGUiLCJmb3JtYXR0ZWRSZWFzc2lnbkRhdGUiLCJ0aW1lX3pvbmUiLCJkYXlzVW50aWxSZWFzc2lnbkRlYWRsaW5lIiwiaXNQYXN0Iiwic3RhdHVzRGF0YSIsImdldFRpY2tldFN0YXR1c0tleSIsImdldFRpY2tldFN0YXR1c0RhdGEiLCJpc1N1bW1pdFBhc3QiLCJnZXRUaWNrZXRSb2xlIiwiZmVhdHVyZSIsImdldFRpY2tldFR5cGUiLCJmaW5hbF9hbW91bnQiLCJuZXRfc2VsbGluZ19jb3N0IiwicnIiLCJnZXRSZWZ1bmRlZFJlcXVlc3RlZFRpY2tldHMiLCJfdGlja2V0JHJlZnVuZF9yZXF1ZXMyIiwiYWxsVGlja2V0cyIsIl90aWNrZXQkcmVmdW5kX3JlcXVlczMiLCJfdGlja2V0JHJlZnVuZF9yZXF1ZXM0IiwiX3RpY2tldCRyZWZ1bmRfcmVxdWVzNSIsImdldFJlZnVuZGVkUmVxdWVzdGVkU3RhdHVzIiwiX3RpY2tldCRyZWZ1bmRfcmVxdWVzNiIsIl90aWNrZXQkcmVmdW5kX3JlcXVlczciLCJfdGlja2V0JHJlZnVuZF9yZXF1ZXM4IiwiZ2V0VHlwZVZhbGlkYXRpb24iLCJzY2hlbWEiLCJvbmVPZiIsIm9mIiwicGFyc2VTdWJRdWVzdGlvbkFuc3dlciIsIm9ubHlSZWxldmFudCIsInN1YlF1ZXN0aW9uU2x1ZyIsInN1YkFuc3dlciIsIm1hdGNoIiwiaW5jbHVkZUF0dGVuZGVlSW5mbyIsImluY2x1ZGVEaXNjbGFpbWVyIiwiYnVpbGRTdWJRdWVzdGlvblZhbGlkYXRpb25TY2hlbWEiLCJfc3ViUXVlc3Rpb24kc3ViX3F1ZXMiLCJzdWJRdWVzdGlvbiIsIm51bGxhYmxlIiwid2hlbiIsImlzIiwicXVlc3Rpb25BbnMiLCJhbnNWYWx1ZU1hdGNoIiwic2NoIiwic3ViUnVsZSIsImRpc2NsYWltZXJNYW5kYXRvcnkiLCJsYXp5IiwidHlwZUVycm9yIiwiX3Qkb3duZXIiLCJfdCRvd25lcjIiLCJfdGlja2V0JG93bmVyNiIsInRtcFRpY2tldCIsIlBlcnNpc3RHYXRlIiwiTXlPcmRlcnNNeVRpY2tldHNXaWRnZXQiLCJzdXBwb3J0RW1haWwiLCJoYW5kbGVCZWZvcmVMaWZ0IiwiVVJMU2VhcmNoUGFyYW1zIiwic2VhcmNoIiwiZmx1c2giLCJoYXMiLCJvbkJlZm9yZUxpZnQiXSwic291cmNlUm9vdCI6IiJ9
|
|
11197
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,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Q2dNOzs7Ozs7Ozs7Ozs7Ozs7OztBQ1JoTTtBQUNBO0FBQ0E7QUFDQTtBQUNnRTs7Ozs7Ozs7Ozs7Ozs7O0FDSmhFO0FBQ0E7QUFDbUM7Ozs7Ozs7Ozs7O0FDRm5DOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztVQ0FBO1VBQ0E7O1VBRUE7VUFDQTtVQUNB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Q3ZDdWIscUJBQXFCLEVBQUV2YiwwREFBZ0I7SUFDdkN3YixhQUFhLEVBQUV4YiwwREFBZ0I7SUFDL0J5YixjQUFjLEVBQUV6YiwwREFBZ0I7SUFDaEMwYixtQkFBbUIsRUFBRTFiLDBEQUFnQjtJQUNyQzJiLGdCQUFnQixFQUFFM2IsMERBQWdCO0lBQ2xDNGIsY0FBYyxFQUFFNWIsMERBQWdCO0lBQ2hDNmIsbUJBQW1CLEVBQUU3YiwwREFBZ0I7SUFDckM4YixZQUFZLEVBQUU5YiwwREFBZ0JtQztFQUNoQyxDQUFDLENBQUM7RUFDRm5PLElBQUksRUFBRWdNLDBEQUFnQjtFQUN0QjJsQyxRQUFRLEVBQUUzbEMsMERBQWdCO0VBQzFCL0QsYUFBYSxFQUFFK0Qsd0RBQWMrRjtBQUMvQixDQUFDO0FBRUQsaUVBQWV3cEMsdUJBQXVCLEUiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvd2VicGFjay91bml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9hY3Rpb25zLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0JhZGdlRmVhdHVyZUljb24vaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvQ29uZmlybURpYWxvZy9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9Db3B5VGV4dC9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9DdXN0b21Ob3RpZmljYXRpb24vQ29udGV4dC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9DdXN0b21Ob3RpZmljYXRpb24vaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvQ3VzdG9tVGhlbWUuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29tcG9uZW50cy9DaGVja2JveExpc3RRdWVzdGlvbkZpZWxkLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvQ2hlY2tib3hRdWVzdGlvbkZpZWxkLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvRHJvcGRvd25RdWVzdGlvbkZpZWxkLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvUmFkaW9MaXN0UXVlc3Rpb25GaWVsZC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb21wb25lbnRzL1RleHRRdWVzdGlvbkZpZWxkLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvdXRpbHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29uc3RhbnRzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlcnMvQXNzaWduZWRGaWx0ZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVycy9CYWRnZUZlYXR1cmVGaWx0ZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVycy9GaWx0ZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVycy9GcmVlUGFpZEZpbHRlci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJzL1Byb21vQ29kZUZpbHRlci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJzL1NlYXJjaC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJzL1NvcnQuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVycy9TdGF0dXNGaWx0ZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVycy9UaWNrZXRUeXBlRmlsdGVyLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlcnMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRm9ybUZvb3Rlci9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9MYWJlbHMvRXJyb3JMYWJlbC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9Mb2FkZXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvTXlPcmRlcnNUaWNrZXRzL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL05vVGlja2V0c0ZvdW5kL1RpY2tldHNJY29uLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL05vVGlja2V0c0ZvdW5kL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyUmVjZWlwdC9nZW5lcmF0ZVJlY2VpcHRQREYuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJSZWNlaXB0L2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyU3VtbWFyeS9PcmRlckFjdGlvbnMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJTdW1tYXJ5L09yZGVyU3VtbWFyeVRhYmxlLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyU3VtbWFyeS9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlcnNMaXN0L0Fzc2lnbmVkVG9NZS5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlcnNMaXN0L0F0dGVuZGVlU3RhdHVzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyc0xpc3QvT3JkZXJMaXN0SXRlbS5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlcnNMaXN0L09yZGVyTGlzdFRpY2tldHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJzTGlzdC9PcmRlcnNMaXN0RGVza3RvcE1vYmlsZS5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlcnNMaXN0L2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1JlZnVuZFJlcXVlc3RzL1JlZnVuZERldGFpbHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvUmVmdW5kUmVxdWVzdHMvUmVmdW5kUmVxdWVzdGVkVGlja2V0LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1JlZnVuZFJlcXVlc3RzL1JlZnVuZFN0YXR1cy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9SZWZ1bmRSZXF1ZXN0cy9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9SaWdodERyYXdlci9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9TdW1taXRIZWFkZXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGFiV3JhcHBlci9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXRBc3NpZ24vY29tcG9uZW50cy9Bc3NpZ25PcHRpb25zL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldEFzc2lnbi9jb21wb25lbnRzL0RlbGVnYXRlRm9ybS9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXRBc3NpZ24vY29tcG9uZW50cy9IZWFkZXIvQXNzaWduSGVhZGVyLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldEFzc2lnbi9jb21wb25lbnRzL0hlYWRlci9SZWFzc2lnbkhlYWRlci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXRBc3NpZ24vY29tcG9uZW50cy9SZWFzc2lnbkZvcm0vaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0QXNzaWduL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb21wb25lbnRzL0NvbXBhbnlGaWVsZC9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29tcG9uZW50cy9SZWdpc3RyYXRpb25EaXNjbGFpbWVyL1JlZ2lzdHJhdGlvbkRpc2NsYWltZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsSGVhZGVyL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb21wb25lbnRzL1RpY2tldEZvcm0vaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvVGlja2V0T3duZXJGaWVsZHMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbnN0YW50cy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0U3RhdHVzL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1dpZGdldFRhYnMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvV2lkZ2V0V3JhcHBlci9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvaG9va3MvdXNlR2V0VGlja2V0LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9ob29rcy91c2VTY3JvbGxUb0Vycm9yLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9ob29rcy91c2VUaWNrZXREZXRhaWxzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9pMThuL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9yZWR1Y2VyLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9zdG9yZS5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvdXRpbHMvYXV0aC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvdXRpbHMvY29uc3RhbnRzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy91dGlscy9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvdXRpbHMvc3VtbWl0VXRpbHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL3V0aWxzL3RpY2tldFV0aWxzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0JhZGdlRmVhdHVyZUljb24vc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0NvcHlUZXh0L3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJzL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9Gb3JtRm9vdGVyL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9MYWJlbHMvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL015T3JkZXJzVGlja2V0cy9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvTm9UaWNrZXRzRm91bmQvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyU3VtbWFyeS9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJzTGlzdC9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvUmVmdW5kUmVxdWVzdHMvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1JpZ2h0RHJhd2VyL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9TdW1taXRIZWFkZXIvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldEFzc2lnbi9jb21wb25lbnRzL0Fzc2lnbk9wdGlvbnMvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldEFzc2lnbi9jb21wb25lbnRzL0hlYWRlci9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0QXNzaWduL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29tcG9uZW50cy9SZWdpc3RyYXRpb25EaXNjbGFpbWVyL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29tcG9uZW50cy9UaWNrZXRPd25lckZpZWxkcy9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXRTdGF0dXMvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1dpZGdldFRhYnMvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1dpZGdldFdyYXBwZXIvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHlcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ2hlY2tDaXJjbGVcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL0Nsb3NlXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbC9Db250ZW50Q29weVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRXJyb3JcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL0V4cGFuZE1vcmVcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL0ZpbHRlckxpc3RcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL0ltcG9ydEV4cG9ydFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvSW5mb1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvU2VhcmNoXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvQnV0dG9uXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9DaGVja2JveFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvRGlhbG9nXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9EaWFsb2dBY3Rpb25zXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9EaWFsb2dDb250ZW50XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9EaWFsb2dDb250ZW50VGV4dFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvRGlhbG9nVGl0bGVcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL0RpdmlkZXJcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL0lucHV0QmFzZVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvU3RhY2tcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL1RhYlwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvVGFic1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvVG9vbHRpcFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvc3R5bGVzXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC91c2VNZWRpYVF1ZXJ5XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQHJlYWN0LXBkZi9yZW5kZXJlclwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkByZWR1eGpzL3Rvb2xraXRcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAc2VudHJ5L3JlYWN0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiZm9ybWlrXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiaTE4bmV4dFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcImkxOG5leHQtYnJvd3Nlci1sYW5ndWFnZWRldGVjdG9yXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiaWR0b2tlbi12ZXJpZmllclwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIm1vbWVudC10aW1lem9uZVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvY29tcG9uZW50cy9yYXctaHRtbFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvc2VjdXJpdHkvYWN0aW9uc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvc2VjdXJpdHkvbWV0aG9kc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvYWN0aW9uc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvbWV0aG9kc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvcXVlcnktYWN0aW9uc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInAtbGltaXRcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJwcm9wLXR5cGVzXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVhY3RcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWFjdC1pMThuZXh0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVhY3QtaW5maW5pdGUtc2Nyb2xsLWNvbXBvbmVudFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlYWN0LXFyLWNvZGVcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWFjdC1yZWR1eFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlYWN0L2pzeC1ydW50aW1lXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVkdXhcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWR1eC1wZXJzaXN0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVkdXgtcGVyc2lzdC9pbnRlZ3JhdGlvbi9yZWFjdFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlZHV4LXBlcnNpc3QvbGliL3N0b3JhZ2VcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJ5dXBcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L3dlYnBhY2svcnVudGltZS9jb21wYXQgZ2V0IGRlZmF1bHQgZXhwb3J0Iiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC93ZWJwYWNrL3J1bnRpbWUvZGVmaW5lIHByb3BlcnR5IGdldHRlcnMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L3dlYnBhY2svcnVudGltZS9oYXNPd25Qcm9wZXJ0eSBzaG9ydGhhbmQiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L3dlYnBhY2svcnVudGltZS9tYWtlIG5hbWVzcGFjZSBvYmplY3QiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL215LW9yZGVycy10aWNrZXRzLXdpZGdldC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gd2VicGFja1VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24ocm9vdCwgZmFjdG9yeSkge1xuXHRpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcpXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KCk7XG5cdGVsc2UgaWYodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKVxuXHRcdGRlZmluZShcIm15LW9yZGVycy10aWNrZXRzLXdpZGdldFwiLCBbXSwgZmFjdG9yeSk7XG5cdGVsc2UgaWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnKVxuXHRcdGV4cG9ydHNbXCJteS1vcmRlcnMtdGlja2V0cy13aWRnZXRcIl0gPSBmYWN0b3J5KCk7XG5cdGVsc2Vcblx0XHRyb290W1wibXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0XCJdID0gZmFjdG9yeSgpO1xufSkodGhpcywgKCkgPT4ge1xucmV0dXJuICIsImltcG9ydCB7XG4gIGF1dGhFcnJvckhhbmRsZXIsXG4gIGNyZWF0ZUFjdGlvbixcbiAgZGVsZXRlUmVxdWVzdCxcbiAgZ2V0UmVxdWVzdCxcbiAgcHV0UmVxdWVzdCxcbiAgc3RhcnRMb2FkaW5nLFxuICBzdG9wTG9hZGluZ1xufSBmcm9tIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9hY3Rpb25zXCI7XG5pbXBvcnQgcExpbWl0IGZyb20gXCJwLWxpbWl0XCI7XG5pbXBvcnQgeyBnZXRJZFRva2VuIH0gZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvc2VjdXJpdHkvbWV0aG9kc1wiO1xuaW1wb3J0IHsgb2JqZWN0VG9RdWVyeVN0cmluZyB9IGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL21ldGhvZHNcIjtcbmltcG9ydCBJZFRva2VuVmVyaWZpZXIgZnJvbSBcImlkdG9rZW4tdmVyaWZpZXJcIjtcbmltcG9ydCBpMThuIGZyb20gXCJpMThuZXh0XCI7XG5pbXBvcnQgeyBhdXRoUHJvbWlzZVJlamVjdCwgZ2V0QWNjZXNzVG9rZW5TYWZlbHkgfSBmcm9tIFwiLi91dGlscy9hdXRoXCI7XG5pbXBvcnQgeyBnZW5lcmF0ZVJlY2VpcHRQREYgfSBmcm9tIFwiLi9jb21wb25lbnRzL09yZGVyUmVjZWlwdFwiO1xuaW1wb3J0IHtcbiAgREVGQVVMVF9JVEVNU19QRVJfUEFHRSxcbiAgRVJST1JfQ09ERVMsXG4gIEZJRlRZX1BFUl9QQUdFLFxuICBGSUxURVJfQUNUSU9OLFxuICBGSVJTVF9QQUdFLFxuICBQUk9NSVNFX0JBVENIX0xJTUlUXG59IGZyb20gXCIuL3V0aWxzL2NvbnN0YW50c1wiO1xuXG5leHBvcnQgY29uc3QgUkVTRVRfU1RBVEUgPSBcIlJFU0VUX1NUQVRFXCI7XG5leHBvcnQgY29uc3QgUkVTRVRfRklMVEVSID0gXCJSRVNFVF9GSUxURVJcIjtcbmV4cG9ydCBjb25zdCBSRVNFVF9BUElfRVJST1IgPSBcIlJFU0VUX0FQSV9FUlJPUlwiO1xuZXhwb3J0IGNvbnN0IFNFVF9TVEFURSA9IFwiU0VUX1NUQVRFXCI7XG5leHBvcnQgY29uc3QgU0VUX0FQSV9FUlJPUiA9IFwiU0VUX0FQSV9FUlJPUlwiO1xuZXhwb3J0IGNvbnN0IENIQU5HRV9GSUxURVIgPSBcIkNIQU5HRV9GSUxURVJcIjtcbmV4cG9ydCBjb25zdCBDSEFOR0VfU09SVCA9IFwiQ0hBTkdFX1NPUlRcIjtcblxuLy8gT1JERVJTIENPTlNUU1xuZXhwb3J0IGNvbnN0IEdFVF9VU0VSX09SREVSUyA9IFwiR0VUX09SREVSU1wiO1xuZXhwb3J0IGNvbnN0IFJFRlVORF9PUkRFUiA9IFwiUkVGVU5EX09SREVSXCI7XG5leHBvcnQgY29uc3QgU0VUX0FDVElWRV9PUkRFUl9JRCA9IFwiU0VUX0FDVElWRV9PUkRFUl9JRFwiO1xuZXhwb3J0IGNvbnN0IEZJTFRFUl9VU0VSX09SREVSUyA9IFwiRklMVEVSX1VTRVJfT1JERVJTXCI7XG5cbi8vIFRJQ0tFVFMgQ09OU1RTXG5leHBvcnQgY29uc3QgR0VUX01ZX0FTU0lHTkVEX1RJQ0tFVFMgPSBcIkdFVF9NWV9BU1NJR05FRF9USUNLRVRTXCI7XG5leHBvcnQgY29uc3QgVVBEQVRFX1RJQ0tFVCA9IFwiVVBEQVRFX1RJQ0tFVFwiO1xuZXhwb3J0IGNvbnN0IFJFU0VUX1RJQ0tFVCA9IFwiUkVTRVRfVElDS0VUXCI7XG5leHBvcnQgY29uc3QgUkVDRUlWRV9USUNLRVQgPSBcIlJFQ0VJVkVfVElDS0VUXCI7XG5leHBvcnQgY29uc3QgUkVNT1ZFX1RJQ0tFVF9BVFRFTkRFRSA9IFwiUkVNT1ZFX1RJQ0tFVF9BVFRFTkRFRVwiO1xuZXhwb3J0IGNvbnN0IEFTU0lHTl9USUNLRVQgPSBcIkFTU0lHTl9USUNLRVRcIjtcbmV4cG9ydCBjb25zdCBERUxFR0FURV9USUNLRVQgPSBcIkRFTEVHQVRFX1RJQ0tFVFwiO1xuZXhwb3J0IGNvbnN0IFJFRlVORF9USUNLRVQgPSBcIlJFRlVORF9USUNLRVRcIjtcbmV4cG9ydCBjb25zdCBSRVNFTkRfTk9USUZJQ0FUSU9OID0gXCJSRVNFTkRfTk9USUZJQ0FUSU9OXCI7XG5leHBvcnQgY29uc3QgR0VUX1RJQ0tFVFNfQllfT1JERVIgPSBcIkdFVF9USUNLRVRTX0JZX09SREVSXCI7XG5leHBvcnQgY29uc3QgR0VUX1RJQ0tFVFNfQllfT1JERVJfRVJST1IgPSBcIkdFVF9USUNLRVRTX0JZX09SREVSX0VSUk9SXCI7XG5leHBvcnQgY29uc3QgR0VUX09SREVSX1RJQ0tFVF9ERVRBSUxTID0gXCJHRVRfT1JERVJfVElDS0VUX0RFVEFJTFNcIjtcbmV4cG9ydCBjb25zdCBHRVRfVElDS0VUX0RFVEFJTFMgPSBcIkdFVF9USUNLRVRfREVUQUlMU1wiO1xuZXhwb3J0IGNvbnN0IFJFQ0VJVkVfRVhUUkFfUVVFU1RJT05TID0gXCJSRUNFSVZFX0VYVFJBX1FVRVNUSU9OU1wiO1xuZXhwb3J0IGNvbnN0IFRJQ0tFVF9BVFRFTkRFRV9LRVlTID0ge1xuICBlbWFpbDogXCJhdHRlbmRlZV9lbWFpbFwiLFxuICBmaXJzdE5hbWU6IFwiYXR0ZW5kZWVfZmlyc3RfbmFtZVwiLFxuICBsYXN0TmFtZTogXCJhdHRlbmRlZV9sYXN0X25hbWVcIixcbiAgY29tcGFueTogXCJhdHRlbmRlZV9jb21wYW55XCIsXG4gIGRpc2NsYWltZXJBY2NlcHRlZDogXCJkaXNjbGFpbWVyX2FjY2VwdGVkXCIsXG4gIGV4dHJhUXVlc3Rpb25zOiBcImV4dHJhX3F1ZXN0aW9uc1wiXG59O1xuZXhwb3J0IGNvbnN0IFVQREFURV9USUNLRVRTX1JFRlVORF9SRVFVRVNURUQgPVxuICBcIlVQREFURV9USUNLRVRTX1JFRlVORF9SRVFVRVNURURcIjtcblxuLy8gVVNFUiBDT05UU1xuZXhwb3J0IGNvbnN0IFNUQVJUX0xPQURJTkdfSURQX1BST0ZJTEUgPSBcIlNUQVJUX0xPQURJTkdfSURQX1BST0ZJTEVcIjtcbmV4cG9ydCBjb25zdCBTVE9QX0xPQURJTkdfSURQX1BST0ZJTEUgPSBcIlNUT1BfTE9BRElOR19JRFBfUFJPRklMRVwiO1xuZXhwb3J0IGNvbnN0IFVQREFURV9JRFBfUFJPRklMRSA9IFwiVVBEQVRFX0lEUF9QUk9GSUxFXCI7XG5leHBvcnQgY29uc3QgU0VUX1VTRVIgPSBcIlNFVF9VU0VSXCI7XG5cbi8vIFNVTU1JVCBDT05TVFNcbmV4cG9ydCBjb25zdCBTRVRfU1VNTUlUID0gXCJTRVRfU1VNTUlUXCI7XG5leHBvcnQgY29uc3QgR0VUX01BSU5fRVhUUkFfUVVFU1RJT05TID0gXCJHRVRfTUFJTl9FWFRSQV9RVUVTVElPTlNcIjtcbmV4cG9ydCBjb25zdCBSRUNFSVZFX01BUktFVElOR19TRVRUSU5HUyA9IFwiUkVDRUlWRV9NQVJLRVRJTkdfU0VUVElOR1NcIjtcbmV4cG9ydCBjb25zdCBDTEVBUl9NQVJLRVRJTkdfU0VUVElOR1MgPSBcIkNMRUFSX01BUktFVElOR19TRVRUSU5HU1wiO1xuXG5leHBvcnQgY29uc3QgcmVzZXRUaWNrZXQgPSAoKSA9PiAoZGlzcGF0Y2gpID0+IHtcbiAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKFJFU0VUX1RJQ0tFVCkoe30pKTtcbn07XG5cbmV4cG9ydCBjb25zdCByZXNldFN0YXRlID0gKCkgPT4gKGRpc3BhdGNoKSA9PiB7XG4gIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihSRVNFVF9TVEFURSkoe30pKTtcbn07XG5cbmV4cG9ydCBjb25zdCByZXNldEZpbHRlciA9ICgpID0+IChkaXNwYXRjaCkgPT4ge1xuICBkaXNwYXRjaChjcmVhdGVBY3Rpb24oUkVTRVRfRklMVEVSKSh7fSkpO1xufTtcblxuZXhwb3J0IGNvbnN0IHJlc2V0RXJyb3IgPSAoKSA9PiAoZGlzcGF0Y2gpID0+IHtcbiAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKFJFU0VUX0FQSV9FUlJPUikoe30pKTtcbn07XG5cbmV4cG9ydCBjb25zdCBzZXRSZWR1Y2VyU3RhdGUgPSAoc3VtbWl0LCB1c2VyKSA9PiAoZGlzcGF0Y2gpID0+IHtcbiAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKFNFVF9TVEFURSkoeyBzdW1taXQsIHVzZXIgfSkpO1xufTtcblxuLy8gRklMVEVSIC8gU09SVCBDT05TVEFOVFNcbmV4cG9ydCBjb25zdCBGSUxURVJfVkFSX0RBVEUgPSBcIkZJTFRFUl9WQVJfREFURVwiO1xuZXhwb3J0IGNvbnN0IEZJTFRFUl9WQVJfQkFER0VfRkVBVFVSRSA9IFwiRklMVEVSX1ZBUl9CQURHRV9GRUFUVVJFXCI7XG5leHBvcnQgY29uc3QgRklMVEVSX1ZBUl9USUNLRVRfVFlQRSA9IFwiRklMVEVSX1ZBUl9USUNLRVRfVFlQRVwiO1xuZXhwb3J0IGNvbnN0IEZJTFRFUl9WQVJfVElDS0VUX0FTU0lHTkVEID0gXCJGSUxURVJfVkFSX1RJQ0tFVF9BU1NJR05FRFwiO1xuZXhwb3J0IGNvbnN0IEZJTFRFUl9WQVJfT1dORVJfU1RBVFVTID0gXCJGSUxURVJfVkFSX09XTkVSX1NUQVRVU1wiO1xuZXhwb3J0IGNvbnN0IEZJTFRFUl9WQVJfUFJPTU9DT0RFID0gXCJGSUxURVJfVkFSX1BST01PQ09ERVwiO1xuZXhwb3J0IGNvbnN0IEZJTFRFUl9WQVJfRlJFRV9QQUlEID0gXCJGSUxURVJfVkFSX0ZSRUVfUEFJRFwiO1xuZXhwb3J0IGNvbnN0IEZJTFRFUl9WQVJfT1JERVJfTlVNQkVSID0gXCJGSUxURVJfVkFSX09SREVSX05VTUJFUlwiO1xuXG4vLyBGSUxURVIgLyBTT1JUIEFDVElPTlNcbmV4cG9ydCBjb25zdCBjaGFuZ2VGaWx0ZXIgPSAoZmlsdGVyKSA9PiAoZGlzcGF0Y2gpID0+IHtcbiAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKENIQU5HRV9GSUxURVIpKGZpbHRlcikpO1xufTtcblxuZXhwb3J0IGNvbnN0IGNoYW5nZVNvcnQgPSAoc29ydCkgPT4gKGRpc3BhdGNoKSA9PiB7XG4gIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihDSEFOR0VfU09SVCkoc29ydCkpO1xufTtcblxuLy8gRklMVEVSL1NPUlQgUEFSU0VcbmNvbnN0IHBhcnNlRmlsdGVyID0gKGZpbHRlck9iaiwgZmlsdGVyQWN0aW9uKSA9PiB7XG4gIGNvbnN0IGZpbHRlciA9IFtdO1xuICBpZiAoZmlsdGVyT2JqLkZJTFRFUl9WQVJfREFURSkge1xuICAgIGZpbHRlci5wdXNoKGBjcmVhdGVkW10ke2ZpbHRlck9iai5sb3dlcn0mJiR7ZmlsdGVyT2JqLnVwcGVyfWApO1xuICB9XG4gIGlmIChcbiAgICBmaWx0ZXJPYmouRklMVEVSX1ZBUl9CQURHRV9GRUFUVVJFICYmXG4gICAgZmlsdGVyT2JqLkZJTFRFUl9WQVJfQkFER0VfRkVBVFVSRS5sZW5ndGggPiAwXG4gICkge1xuICAgIGNvbnN0IGZpbHRlck5hbWUgPVxuICAgICAgZmlsdGVyQWN0aW9uID09PSBGSUxURVJfQUNUSU9OLk9SREVSU1xuICAgICAgICA/IFwidGlja2V0c19iYWRnZV9mZWF0dXJlc19pZFwiXG4gICAgICAgIDogXCJiYWRnZV9mZWF0dXJlc19pZFwiO1xuICAgIGZpbHRlci5wdXNoKFxuICAgICAgYCR7ZmlsdGVyTmFtZX09PSR7ZmlsdGVyT2JqLkZJTFRFUl9WQVJfQkFER0VfRkVBVFVSRS5qb2luKFwifHxcIil9YFxuICAgICk7XG4gIH1cbiAgaWYgKFxuICAgIGZpbHRlck9iai5GSUxURVJfVkFSX1RJQ0tFVF9UWVBFICYmXG4gICAgZmlsdGVyT2JqLkZJTFRFUl9WQVJfVElDS0VUX1RZUEUubGVuZ3RoID4gMFxuICApIHtcbiAgICBjb25zdCBmaWx0ZXJOYW1lID1cbiAgICAgIGZpbHRlckFjdGlvbiA9PT0gRklMVEVSX0FDVElPTi5PUkRFUlNcbiAgICAgICAgPyBcInRpY2tldHNfdHlwZV9pZFwiXG4gICAgICAgIDogXCJ0aWNrZXRfdHlwZV9pZFwiO1xuICAgIGZpbHRlci5wdXNoKFxuICAgICAgYCR7ZmlsdGVyTmFtZX09PSR7ZmlsdGVyT2JqLkZJTFRFUl9WQVJfVElDS0VUX1RZUEUuam9pbihcInx8XCIpfWBcbiAgICApO1xuICB9XG4gIGlmIChmaWx0ZXJPYmouRklMVEVSX1ZBUl9USUNLRVRfQVNTSUdORUQpIHtcbiAgICBjb25zdCBmaWx0ZXJOYW1lID1cbiAgICAgIGZpbHRlckFjdGlvbiA9PT0gRklMVEVSX0FDVElPTi5PUkRFUlNcbiAgICAgICAgPyBcInRpY2tldHNfYXNzaWduZWRfdG9cIlxuICAgICAgICA6IFwiYXNzaWduZWRfdG9cIjtcbiAgICBmaWx0ZXIucHVzaChgJHtmaWx0ZXJOYW1lfT09JHtmaWx0ZXJPYmouRklMVEVSX1ZBUl9USUNLRVRfQVNTSUdORUR9YCk7XG4gIH1cbiAgaWYgKGZpbHRlck9iai5GSUxURVJfVkFSX09XTkVSX1NUQVRVUykge1xuICAgIGNvbnN0IGZpbHRlck5hbWUgPVxuICAgICAgZmlsdGVyQWN0aW9uID09PSBGSUxURVJfQUNUSU9OLk9SREVSU1xuICAgICAgICA/IFwidGlja2V0c19vd25lcl9zdGF0dXNcIlxuICAgICAgICA6IFwib3duZXJfc3RhdHVzXCI7XG4gICAgZmlsdGVyLnB1c2goYCR7ZmlsdGVyTmFtZX09PSR7ZmlsdGVyT2JqLkZJTFRFUl9WQVJfT1dORVJfU1RBVFVTfWApO1xuICB9XG4gIGlmIChmaWx0ZXJPYmouRklMVEVSX1ZBUl9GUkVFX1BBSUQpIHtcbiAgICBjb25zdCBmaWx0ZXJOYW1lID1cbiAgICAgIGZpbHRlckFjdGlvbiA9PT0gRklMVEVSX0FDVElPTi5PUkRFUlMgPyBcImFtb3VudFwiIDogXCJmaW5hbF9hbW91bnRcIjtcbiAgICBmaWx0ZXIucHVzaChcbiAgICAgIGAke2ZpbHRlck5hbWV9JHtmaWx0ZXJPYmouRklMVEVSX1ZBUl9GUkVFX1BBSUQgPT09IFwiRnJlZVwiID8gXCI9PTBcIiA6IFwiPjBcIn1gXG4gICAgKTtcbiAgfVxuICBpZiAoZmlsdGVyT2JqLkZJTFRFUl9WQVJfUFJPTU9DT0RFKSB7XG4gICAgY29uc3QgZmlsdGVyTmFtZSA9XG4gICAgICBmaWx0ZXJBY3Rpb24gPT09IEZJTFRFUl9BQ1RJT04uT1JERVJTXG4gICAgICAgID8gXCJ0aWNrZXRzX3Byb21vX2NvZGVcIlxuICAgICAgICA6IFwicHJvbW9fY29kZVwiO1xuICAgIGZpbHRlci5wdXNoKGAke2ZpbHRlck5hbWV9PUAke2ZpbHRlck9iai5GSUxURVJfVkFSX1BST01PQ09ERX1gKTtcbiAgfVxuICBpZiAoZmlsdGVyT2JqLkZJTFRFUl9WQVJfT1JERVJfTlVNQkVSKSB7XG4gICAgbGV0IGlucHV0RmlsdGVycyA9IFwiXCI7XG5cbiAgICBzd2l0Y2ggKGZpbHRlckFjdGlvbikge1xuICAgICAgY2FzZSBGSUxURVJfQUNUSU9OLk9SREVSUzoge1xuICAgICAgICBpbnB1dEZpbHRlcnMgPSBgbnVtYmVyPUAke2ZpbHRlck9iai5GSUxURVJfVkFSX09SREVSX05VTUJFUn0sdGlja2V0c19vd25lcl9lbWFpbD1AJHtmaWx0ZXJPYmouRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVJ9LHRpY2tldHNfbnVtYmVyPUAke2ZpbHRlck9iai5GSUxURVJfVkFSX09SREVSX05VTUJFUn1gO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgRklMVEVSX0FDVElPTi5USUNLRVRTX0JZX09SREVSUzoge1xuICAgICAgICBpbnB1dEZpbHRlcnMgPSBgbnVtYmVyPUAke2ZpbHRlck9iai5GSUxURVJfVkFSX09SREVSX05VTUJFUn0sb3duZXJfZW1haWw9QCR7ZmlsdGVyT2JqLkZJTFRFUl9WQVJfT1JERVJfTlVNQkVSfWA7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBGSUxURVJfQUNUSU9OLkVYVEVSTkFMX1RJQ0tFVFM6IHtcbiAgICAgICAgaW5wdXRGaWx0ZXJzID0gYG9yZGVyX251bWJlcj1AJHtmaWx0ZXJPYmouRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVJ9LG51bWJlcj1AJHtmaWx0ZXJPYmouRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVJ9LG9yZGVyX293bmVyX2VtYWlsPUAke2ZpbHRlck9iai5GSUxURVJfVkFSX09SREVSX05VTUJFUn1gO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBmaWx0ZXIucHVzaChpbnB1dEZpbHRlcnMpO1xuICB9XG4gIHJldHVybiBmaWx0ZXI7XG59O1xuXG5jb25zdCBnZXRTb3J0RGlyZWN0aW9uID0gKGRpcmVjdGlvbikgPT4gKGRpcmVjdGlvbiA9PT0gXCJhc2NcIiA/IFwiK1wiIDogXCItXCIpO1xuXG4vLyBwYXlsb2FkOiB7IGh0dHBDb2RlLCB0aXRsZSwgaHRtbDogY29udGVudCwgdHlwZSB9XG5jb25zdCBlcnJvckhhbmRsZXJOb3RpZnkgPSAocGF5bG9hZCwgY2FsbGJhY2spID0+IChkaXNwYXRjaCkgPT4ge1xuICBkaXNwYXRjaChjcmVhdGVBY3Rpb24oU0VUX0FQSV9FUlJPUikocGF5bG9hZCkpO1xuICBpZiAoY2FsbGJhY2spIGNhbGxiYWNrKCk7XG59O1xuXG5jb25zdCBjdXN0b21BdXRoRXJyb3JIYW5kbGVyID0gKGVyciwgcmVzKSA9PiAoZGlzcGF0Y2gpID0+IHtcbiAgZGlzcGF0Y2goYXV0aEVycm9ySGFuZGxlcihlcnIsIHJlcywgZXJyb3JIYW5kbGVyTm90aWZ5KSk7XG59O1xuXG5jb25zdCBjdXN0b21GZXRjaEVycm9ySGFuZGxlciA9IChyZXNwb25zZSkgPT4gKGRpc3BhdGNoKSA9PiB7XG4gIGNvbnN0IGNvZGUgPSByZXNwb25zZS5zdGF0dXM7XG4gIGxldCBtc2c7XG4gIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICBzd2l0Y2ggKGNvZGUpIHtcbiAgICBjYXNlIEVSUk9SX0NPREVTW1wiNDAzXCJdOlxuICAgICAgbXNnID0gaTE4bi50KFwiZXJyb3JzLnVzZXJfbm90X2F1dGh6XCIpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBFUlJPUl9DT0RFU1tcIjQwMVwiXTpcbiAgICAgIG1zZyA9IGkxOG4udChcImVycm9ycy5zZXNzaW9uX2V4cGlyZWRcIik7XG4gICAgICBicmVhaztcbiAgICBjYXNlIEVSUk9SX0NPREVTW1wiNDEyXCJdOlxuICAgICAgbXNnID0gXCJcIjtcbiAgICAgIE9iamVjdC5lbnRyaWVzKHJlc3BvbnNlLmVycm9ycykuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICAgIGlmIChOdW1iZXIuaXNOYU4oa2V5KSkge1xuICAgICAgICAgIG1zZyA9IGAke21zZ30gJHtrZXl9OiBgO1xuICAgICAgICB9XG5cbiAgICAgICAgbXNnID0gYCR7bXNnfSAke3ZhbHVlfSA8YnI+YDtcbiAgICAgIH0pO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBFUlJPUl9DT0RFU1tcIjUwMFwiXTpcbiAgICAgIG1zZyA9IGkxOG4udChcImVycm9ycy5zZXJ2ZXJfZXJyb3JcIik7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgbXNnID0gcmVzcG9uc2Uuc3RhdHVzVGV4dDtcbiAgfVxuXG4gIGRpc3BhdGNoKGVycm9ySGFuZGxlck5vdGlmeSh7IHRpdGxlOiBpMThuLnQoXCJlcnJvcnMuZXJyb3JcIiksIGh0bWw6IG1zZyB9KSk7XG59O1xuXG4vLyBPUkRFUlMgQUNUSU9OU1xuZXhwb3J0IGNvbnN0IGdldFVzZXJPcmRlcnMgPVxuICAoXG4gICAge1xuICAgICAgcGFnZSA9IEZJUlNUX1BBR0UsXG4gICAgICBwZXJQYWdlID0gREVGQVVMVF9JVEVNU19QRVJfUEFHRSxcbiAgICAgIGZpbHRlciA9IHt9LFxuICAgICAgc29ydCA9IHt9XG4gICAgfSxcbiAgICBza2lwTG9hZGluZ1xuICApID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgd2lkZ2V0U3RhdGU6IHsgc3VtbWl0IH1cbiAgICB9ID0gZ2V0U3RhdGUoKTtcblxuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKTtcblxuICAgIGlmICghYWNjZXNzVG9rZW4pIHJldHVybiBhdXRoUHJvbWlzZVJlamVjdCgpO1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgICBvcmRlcjogXCItY3JlYXRlZFwiLFxuICAgICAgXCJmaWx0ZXJbXVwiOiBbXCJzdGF0dXM9PVBhaWRcIl0sXG4gICAgICByZWxhdGlvbnM6IFwiYXBwbGllZF90YXhlcyxub25lXCIsXG4gICAgICBmaWVsZHM6XG4gICAgICAgIFwiaWQsY3JlYXRlZCxudW1iZXIsc3RhdHVzLGFtb3VudCxjdXJyZW5jeSx0YXhlc19hbW91bnQsZGlzY291bnRfYW1vdW50LHRpY2tldHNfZXhjZXJwdF9ieV90aWNrZXRfdHlwZSxyZWZ1bmRlZF9hbW91bnQscmF3X2Ftb3VudCxhcHBsaWVkX3RheGVzLmlkLGFwcGxpZWRfdGF4ZXMubmFtZSxhcHBsaWVkX3RheGVzLmFtb3VudCxwYXltZW50X21ldGhvZCxjcmVkaXRfY2FyZF90eXBlLGNyZWRpdF9jYXJkXzRudW1iZXIsb3duZXJfZmlyc3RfbmFtZSxvd25lcl9sYXN0X25hbWUsb3duZXJfZW1haWwsb3duZXJfY29tcGFueVwiLFxuICAgICAgcGFnZSxcbiAgICAgIHBlcl9wYWdlOiBwZXJQYWdlXG4gICAgfTtcblxuICAgIGlmIChPYmplY3Qua2V5cyhmaWx0ZXIpLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGZpbHRlcnMgPSBwYXJzZUZpbHRlcihmaWx0ZXIsIEZJTFRFUl9BQ1RJT04uT1JERVJTKTtcbiAgICAgIHBhcmFtc1tcImZpbHRlcltdXCJdID0gWy4uLnBhcmFtc1tcImZpbHRlcltdXCJdLCAuLi5maWx0ZXJzXTtcbiAgICB9XG4gICAgaWYgKE9iamVjdC5rZXlzKHNvcnQpLmxlbmd0aCA+IDApIHtcbiAgICAgIHBhcmFtcy5vcmRlciA9IGAke2dldFNvcnREaXJlY3Rpb24oc29ydC5kaXJlY3Rpb24pfSR7c29ydC5uYW1lfWA7XG4gICAgfVxuXG4gICAgcmV0dXJuIGdldFJlcXVlc3QoXG4gICAgICBudWxsLFxuICAgICAgY3JlYXRlQWN0aW9uKEdFVF9VU0VSX09SREVSUyksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy8ke3N1bW1pdC5pZH0vb3JkZXJzL21lYCxcbiAgICAgIGN1c3RvbUF1dGhFcnJvckhhbmRsZXIsXG4gICAgICB7IGZpbHRlciwgc29ydCB9XG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKVxuICAgICAgLnRoZW4oKHBheWxvYWQpID0+IHBheWxvYWQpXG4gICAgICAuY2F0Y2goKGUpID0+IGUpXG4gICAgICAuZmluYWxseSgoKSA9PiB7XG4gICAgICAgIGlmICghc2tpcExvYWRpbmcpIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCBzZXRBY3RpdmVPcmRlcklkID0gKG9yZGVySWQpID0+IGFzeW5jIChkaXNwYXRjaCkgPT5cbiAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKFNFVF9BQ1RJVkVfT1JERVJfSUQpKG9yZGVySWQpKTtcblxuLy8gVVNFUiBBQ1RJT05TXG5leHBvcnQgY29uc3Qgc2V0VXNlciA9ICh1c2VyKSA9PiAoZGlzcGF0Y2gpID0+XG4gIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihTRVRfVVNFUikodXNlcikpO1xuXG4vLyBUSUNLRVQgQUNUSU9OU1xuXG5leHBvcnQgY29uc3QgZ2V0VXNlclRpY2tldHMgPVxuICAoXG4gICAge1xuICAgICAgcGFnZSA9IEZJUlNUX1BBR0UsXG4gICAgICBwZXJQYWdlID0gREVGQVVMVF9JVEVNU19QRVJfUEFHRSxcbiAgICAgIGZpbHRlciA9IHt9LFxuICAgICAgc29ydCA9IHt9XG4gICAgfSxcbiAgICBza2lwTG9hZGluZ1xuICApID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgd2lkZ2V0U3RhdGU6IHsgc3VtbWl0LCB1c2VyIH1cbiAgICB9ID0gZ2V0U3RhdGUoKTtcbiAgICBjb25zdCB7IHVzZXJQcm9maWxlIH0gPSB1c2VyO1xuICAgIGlmICghc3VtbWl0KSByZXR1cm4gUHJvbWlzZS5yZWplY3QoKTtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCk7XG5cbiAgICBpZiAoIWFjY2Vzc1Rva2VuKSByZXR1cm4gYXV0aFByb21pc2VSZWplY3QoKTtcblxuICAgIGNvbnN0IGZpZWxkcyA9IFtcbiAgICAgIFwib3JkZXIuaWRcIixcbiAgICAgIFwib3JkZXIub3duZXJfZmlyc3RfbmFtZVwiLFxuICAgICAgXCJvcmRlci5vd25lcl9sYXN0X25hbWVcIixcbiAgICAgIFwib3JkZXIub3duZXJfZW1haWxcIixcbiAgICAgIFwib3duZXIuaWRcIixcbiAgICAgIFwib3duZXIuZW1haWxcIixcbiAgICAgIFwib3duZXIuZmlyc3RfbmFtZVwiLFxuICAgICAgXCJvd25lci5sYXN0X25hbWVcIixcbiAgICAgIFwib3duZXIuc3RhdHVzXCIsXG4gICAgICBcImJhZGdlLm5vbmVcIixcbiAgICAgIFwicHJvbW9fY29kZS5pZFwiLFxuICAgICAgXCJwcm9tb19jb2RlLmNvZGVcIixcbiAgICAgIFwicHJvbW9fY29kZS5hbGxvd3NfdG9fZGVsZWdhdGVcIixcbiAgICAgIFwicHJvbW9fY29kZS5hbGxvd3NfdG9fcmVhc3NpZ25cIixcbiAgICAgIFwidGlja2V0X3R5cGUuaWRcIixcbiAgICAgIFwidGlja2V0X3R5cGUubmFtZVwiLFxuICAgICAgXCJ0aWNrZXRfdHlwZS5hbGxvd3NfdG9fZGVsZWdhdGVcIixcbiAgICAgIFwidGlja2V0X3R5cGUuYWxsb3dzX3RvX3JlYXNzaWduXCJcbiAgICBdO1xuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgXCJmaWx0ZXJbXVwiOiBbXCJzdGF0dXM9PVBhaWRcIiwgYG9yZGVyX293bmVyX2lkPD4ke3VzZXJQcm9maWxlLmlkfWBdLFxuICAgICAgZXhwYW5kOiBcIm9yZGVyLG93bmVyLHRpY2tldF90eXBlLGJhZGdlLGJhZGdlLmZlYXR1cmVzLHByb21vX2NvZGVcIixcbiAgICAgIG9yZGVyOiBcIi1pZFwiLFxuICAgICAgZmllbGRzOiBmaWVsZHMuam9pbihcIixcIiksXG4gICAgICByZWxhdGlvbnM6IFwibm9uZSxiYWRnZS5mZWF0dXJlcyxwcm9tb19jb2RlLm5vbmUsdGlja2V0X3R5cGUubm9uZVwiLFxuICAgICAgcGFnZSxcbiAgICAgIHBlcl9wYWdlOiBwZXJQYWdlXG4gICAgfTtcbiAgICBpZiAoT2JqZWN0LmtleXMoZmlsdGVyKS5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBmaWx0ZXJzID0gcGFyc2VGaWx0ZXIoZmlsdGVyLCBGSUxURVJfQUNUSU9OLkVYVEVSTkFMX1RJQ0tFVFMpO1xuICAgICAgcGFyYW1zW1wiZmlsdGVyW11cIl0gPSBbLi4ucGFyYW1zW1wiZmlsdGVyW11cIl0sIC4uLmZpbHRlcnNdO1xuICAgIH1cbiAgICBpZiAoT2JqZWN0LmtleXMoc29ydCkubGVuZ3RoID4gMCkge1xuICAgICAgcGFyYW1zLm9yZGVyID0gYCR7Z2V0U29ydERpcmVjdGlvbihzb3J0LmRpcmVjdGlvbil9JHtzb3J0Lm5hbWV9YDtcbiAgICB9XG4gICAgcmV0dXJuIGdldFJlcXVlc3QoXG4gICAgICBudWxsLFxuICAgICAgY3JlYXRlQWN0aW9uKEdFVF9NWV9BU1NJR05FRF9USUNLRVRTKSxcbiAgICAgIGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzLyR7c3VtbWl0LmlkfS9vcmRlcnMvYWxsL3RpY2tldHMvbWVgLFxuICAgICAgY3VzdG9tQXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaClcbiAgICAgIC5jYXRjaCgoZSkgPT4gZSlcbiAgICAgIC5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgaWYgKCFza2lwTG9hZGluZykgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICB9KTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IGdldFRpY2tldHNCeU9yZGVyID1cbiAgKHtcbiAgICBvcmRlcklkLFxuICAgIHBhZ2UgPSBGSVJTVF9QQUdFLFxuICAgIHBlclBhZ2UgPSBERUZBVUxUX0lURU1TX1BFUl9QQUdFLFxuICAgIGZpbHRlcixcbiAgICBzb3J0XG4gIH0pID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKTtcblxuICAgIGlmICghYWNjZXNzVG9rZW4pIHJldHVybiBhdXRoUHJvbWlzZVJlamVjdCgpO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIFwiZmlsdGVyW11cIjogW10sXG4gICAgICBmaWVsZHM6XG4gICAgICAgIFwiYmFkZ2Uubm9uZSxwcm9tb19jb2RlLmlkLHByb21vX2NvZGUuY29kZSxwcm9tb19jb2RlLmFsbG93c190b19kZWxlZ2F0ZSxwcm9tb19jb2RlLmFsbG93c190b19yZWFzc2lnbix0aWNrZXRfdHlwZS5pZCx0aWNrZXRfdHlwZS5uYW1lLHRpY2tldF90eXBlLmFsbG93c190b19kZWxlZ2F0ZSx0aWNrZXRfdHlwZS5hbGxvd3NfdG9fcmVhc3NpZ25cIixcbiAgICAgIGV4cGFuZDpcbiAgICAgICAgXCJyZWZ1bmRfcmVxdWVzdHMscmVmdW5kX3JlcXVlc3RzLnJlZnVuZGVkX3RheGVzLHJlZnVuZF9yZXF1ZXN0cy5yZWZ1bmRlZF90YXhlcy50YXgsb3duZXIsb3duZXIuZXh0cmFfcXVlc3Rpb25zLGJhZGdlLGJhZGdlLmZlYXR1cmVzLHRpY2tldF90eXBlLHByb21vX2NvZGVcIixcbiAgICAgIG9yZGVyOiBcIitpZFwiLFxuICAgICAgcmVsYXRpb25zOiBcIm5vbmUsYmFkZ2UuZmVhdHVyZXMscHJvbW9fY29kZS5ub25lLHRpY2tldF90eXBlLm5vbmVcIixcbiAgICAgIHBhZ2UsXG4gICAgICBwZXJfcGFnZTogcGVyUGFnZVxuICAgIH07XG4gICAgaWYgKE9iamVjdC5rZXlzKGZpbHRlcikubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgZmlsdGVycyA9IHBhcnNlRmlsdGVyKGZpbHRlciwgRklMVEVSX0FDVElPTi5USUNLRVRTX0JZX09SREVSUyk7XG4gICAgICBwYXJhbXNbXCJmaWx0ZXJbXVwiXSA9IFsuLi5wYXJhbXNbXCJmaWx0ZXJbXVwiXSwgLi4uZmlsdGVyc107XG4gICAgfVxuICAgIGlmIChPYmplY3Qua2V5cyhzb3J0KS5sZW5ndGggPiAwKSB7XG4gICAgICBwYXJhbXMub3JkZXIgPSBgJHtnZXRTb3J0RGlyZWN0aW9uKHNvcnQuZGlyZWN0aW9uKX0ke3NvcnQubmFtZX1gO1xuICAgIH1cbiAgICByZXR1cm4gZ2V0UmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oR0VUX1RJQ0tFVFNfQllfT1JERVIpLFxuICAgICAgYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvYWxsL29yZGVycy8ke29yZGVySWR9L3RpY2tldHNgLFxuICAgICAgY3VzdG9tQXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaClcbiAgICAgIC50aGVuKChwYXlsb2FkKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihHRVRfVElDS0VUU19CWV9PUkRFUl9FUlJPUikpO1xuICAgICAgICByZXR1cm4gZTtcbiAgICAgIH0pO1xuICB9O1xuXG5leHBvcnQgY29uc3QgcmVzZW5kTm90aWZpY2F0aW9uID1cbiAgKHRpY2tldCkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCk7XG5cbiAgICBpZiAoIWFjY2Vzc1Rva2VuKSByZXR1cm4gYXV0aFByb21pc2VSZWplY3QoKTtcblxuICAgIGNvbnN0IHsgbWVzc2FnZSB9ID0gdGlja2V0O1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuXG4gICAgY29uc3Qgb3JkZXJJZCA9IHRpY2tldC5vcmRlciA/IHRpY2tldC5vcmRlci5pZCA6IHRpY2tldC5vcmRlcl9pZDtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW5cbiAgICB9O1xuXG4gICAgcmV0dXJuIHB1dFJlcXVlc3QoXG4gICAgICBudWxsLFxuICAgICAgY3JlYXRlQWN0aW9uKFJFU0VORF9OT1RJRklDQVRJT04pLFxuICAgICAgYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvYWxsL29yZGVycy8ke29yZGVySWR9L3RpY2tldHMvJHt0aWNrZXQuaWR9L2F0dGVuZGVlL3JlaW52aXRlYCxcbiAgICAgIHsgbWVzc2FnZSB9LFxuICAgICAgY3VzdG9tQXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaClcbiAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICByZXR1cm4gZTtcbiAgICAgIH0pO1xuICB9O1xuXG5leHBvcnQgY29uc3QgcmVmdW5kVGlja2V0ID1cbiAgKHsgdGlja2V0IH0pID0+XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKTtcblxuICAgIGlmICghYWNjZXNzVG9rZW4pIHJldHVybiBhdXRoUHJvbWlzZVJlamVjdCgpO1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuXG4gICAgY29uc3Qgb3JkZXJJZCA9IHRpY2tldC5vcmRlciA/IHRpY2tldC5vcmRlci5pZCA6IHRpY2tldC5vcmRlcl9pZDtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgICBleHBhbmQ6IFwicmVmdW5kX3JlcXVlc3RzLHRpY2tldF90eXBlXCIsXG4gICAgICBmaWVsZHM6IFwicmVmdW5kX3JlcXVlc3RzLnN0YXR1c1wiXG4gICAgfTtcblxuICAgIHJldHVybiBkZWxldGVSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihSRUZVTkRfVElDS0VUKSxcbiAgICAgIGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzL2FsbC9vcmRlcnMvJHtvcmRlcklkfS90aWNrZXRzLyR7dGlja2V0LmlkfS9yZWZ1bmRgLFxuICAgICAge30sXG4gICAgICBjdXN0b21BdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKVxuICAgICAgLnRoZW4oKHBheWxvYWQpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgcmV0dXJuIGU7XG4gICAgICB9KTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IHJlZnVuZEJ1bGtUaWNrZXRzID1cbiAgKHsgdGlja2V0cyB9KSA9PlxuICBhc3luYyAoZGlzcGF0Y2gpID0+IHtcbiAgICBjb25zdCBsaW1pdCA9IHBMaW1pdChQUk9NSVNFX0JBVENIX0xJTUlUKTtcbiAgICBjb25zdCBhbGxSZWZ1bmRUaWNrZXRDYWxscyA9IHRpY2tldHMubWFwKCh0aWNrZXQpID0+XG4gICAgICBsaW1pdCgoKSA9PiBkaXNwYXRjaChyZWZ1bmRUaWNrZXQoeyB0aWNrZXQgfSkpKVxuICAgICk7XG4gICAgcmV0dXJuIFByb21pc2UuYWxsKFsuLi5hbGxSZWZ1bmRUaWNrZXRDYWxsc10pXG4gICAgICAudGhlbigocmVzKSA9PiB7XG4gICAgICAgIGNvbnN0IHN1Y2Nlc3NmdWxseVJlcXVlc3RlZCA9IHJlc1xuICAgICAgICAgIC5maWx0ZXIoKHIpID0+IHIucmVzcG9uc2U/LnJlZnVuZF9yZXF1ZXN0cz8ubGVuZ3RoKVxuICAgICAgICAgIC5tYXAoKHIpID0+IHIucmVzcG9uc2UpO1xuICAgICAgICByZXR1cm4gc3VjY2Vzc2Z1bGx5UmVxdWVzdGVkO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZSkgPT4gZSk7XG4gIH07XG5cbi8vIHVwZGF0ZSB0aGUgdGlja2V0cyB0aGF0IGhhdmUgYmVlbiBzdWNlc3NmdWxseSByZWZ1bmRlZFxuZXhwb3J0IGNvbnN0IHVwZGF0ZVRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWQgPVxuICAodGlja2V0c1JlZnVuZFJlcXVlc3RlZCkgPT4gKGRpc3BhdGNoKSA9PlxuICAgIGRpc3BhdGNoKFxuICAgICAgY3JlYXRlQWN0aW9uKFVQREFURV9USUNLRVRTX1JFRlVORF9SRVFVRVNURUQpKHRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWQpXG4gICAgKTtcblxuLy8gU1VNTUlUIEFDVElPTlNcblxuZXhwb3J0IGNvbnN0IGdldEV4dHJhUXVlc3Rpb25zID1cbiAgKGF0dGVuZGVlSWQpID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgd2lkZ2V0U3RhdGU6IHsgc3VtbWl0IH1cbiAgICB9ID0gZ2V0U3RhdGUoKTtcblxuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKTtcblxuICAgIGlmICghYWNjZXNzVG9rZW4pIHJldHVybiBhdXRoUHJvbWlzZVJlamVjdCgpO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgcGFnZTogMSxcbiAgICAgIHBlcl9wYWdlOiBGSUZUWV9QRVJfUEFHRSxcbiAgICAgIGV4cGFuZDogXCIqc3ViX3F1ZXN0aW9uX3J1bGVzLCpzdWJfcXVlc3Rpb24sKnZhbHVlc1wiLFxuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIFwiZmlsdGVyW11cIjogXCJ0aWNrZXRzX2V4Y2x1ZGVfaW5hY3RpdmVzPT10cnVlXCJcbiAgICB9O1xuXG4gICAgY29uc3QgZW5kcG9pbnQgPSBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy8ke3N1bW1pdC5pZH0vYXR0ZW5kZWVzLyR7YXR0ZW5kZWVJZH0vYWxsb3dlZC1leHRyYS1xdWVzdGlvbnNgO1xuXG4gICAgcmV0dXJuIGdldFJlcXVlc3QoXG4gICAgICBudWxsLFxuICAgICAgY3JlYXRlQWN0aW9uKFJFQ0VJVkVfRVhUUkFfUVVFU1RJT05TKSxcbiAgICAgIGVuZHBvaW50LFxuICAgICAgY3VzdG9tQXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaCkudGhlbigoKSA9PiB7XG4gICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICB9KTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IGdldFRpY2tldCA9XG4gICh0aWNrZXRJZCwgb3JkZXJJZCkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCk7XG5cbiAgICBpZiAoIWFjY2Vzc1Rva2VuKSByZXR1cm4gYXV0aFByb21pc2VSZWplY3QoKTtcblxuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgICBleHBhbmQ6XG4gICAgICAgIFwib3duZXIsb3duZXIuZXh0cmFfcXVlc3Rpb25zLG93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbix0aWNrZXRfdHlwZSxvcmRlcixwcm9tb19jb2RlXCIsXG4gICAgICByZWxhdGlvbnM6XG4gICAgICAgIFwib3duZXIuZXh0cmFfcXVlc3Rpb25zLG93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi5ub25lLHByb21vX2NvZGUubm9uZSx0aWNrZXRfdHlwZS5ub25lXCIsXG4gICAgICBmaWVsZHM6XG4gICAgICAgIFwib3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLmlkLG93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi5uYW1lLG93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi50eXBlLHByb21vX2NvZGUuaWQscHJvbW9fY29kZS5jb2RlLHByb21vX2NvZGUuYWxsb3dzX3RvX2RlbGVnYXRlLHByb21vX2NvZGUuYWxsb3dzX3RvX3JlYXNzaWduLHRpY2tldF90eXBlLmlkLHRpY2tldF90eXBlLm5hbWUsdGlja2V0X3R5cGUuYWxsb3dzX3RvX2RlbGVnYXRlLHRpY2tldF90eXBlLmFsbG93c190b19yZWFzc2lnbix0aWNrZXRfdHlwZS5jb3N0LHRpY2tldF90eXBlLmNyZWF0ZWRcIlxuICAgIH07XG5cbiAgICBjb25zdCBlbmRwb2ludCA9IGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzL2FsbC9vcmRlcnMvJHtvcmRlcklkfS90aWNrZXRzLyR7dGlja2V0SWR9YDtcblxuICAgIHJldHVybiBnZXRSZXF1ZXN0KFxuICAgICAgY3JlYXRlQWN0aW9uKFJFU0VUX1RJQ0tFVCksXG4gICAgICBjcmVhdGVBY3Rpb24oUkVDRUlWRV9USUNLRVQpLFxuICAgICAgZW5kcG9pbnQsXG4gICAgICBjdXN0b21BdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKS5maW5hbGx5KCgpID0+IHtcbiAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgIH0pO1xuICB9O1xuXG5jb25zdCBub3JtYWxpemVUaWNrZXQgPSAoZW50aXR5KSA9PiB7XG4gIGNvbnN0IG5vcm1hbGl6ZWRFbnRpdHkgPSB7IC4uLmVudGl0eSB9O1xuXG4gIGlmICghZW50aXR5LmF0dGVuZGVlX2NvbXBhbnkuaWQpIHtcbiAgICBub3JtYWxpemVkRW50aXR5LmF0dGVuZGVlX2NvbXBhbnkgPSBlbnRpdHkuYXR0ZW5kZWVfY29tcGFueTtcbiAgfSBlbHNlIHtcbiAgICBkZWxldGUgbm9ybWFsaXplZEVudGl0eS5hdHRlbmRlZV9jb21wYW55O1xuICAgIG5vcm1hbGl6ZWRFbnRpdHkuYXR0ZW5kZWVfY29tcGFueV9pZCA9IGVudGl0eS5hdHRlbmRlZV9jb21wYW55LmlkO1xuICB9XG5cbiAgcmV0dXJuIG5vcm1hbGl6ZWRFbnRpdHk7XG59O1xuXG5leHBvcnQgY29uc3QgcmVmcmVzaFByb2ZpbGUgPVxuICAoZGF0YSwgY29tcGFueSwgdGlja2V0T3duZXIpID0+XG4gIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgdXBkYXRlUHJvZmlsZSB9KSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgd2lkZ2V0U3RhdGU6IHsgdXNlciB9XG4gICAgfSA9IGdldFN0YXRlKCk7XG4gICAgY29uc3QgeyB1c2VyUHJvZmlsZSB9ID0gdXNlcjtcblxuICAgIC8vIGVtYWlsIHNob3VsZCBtYXRjaCAoIG9ubHkgdXBkYXRlIG15IHByb2ZpbGUgaXMgdGlja2V0IGJlbG9uZ3MgdG8gbWUhKVxuICAgIC8vIGFuZCBpZiB0aGUgdGlja2V0IGRvZXNuJ3QgaGF2ZSBhIG1hbmFnZXJcbiAgICAvLyBDaGVjayBpZiB0aGVyZSdzIGNoYW5nZXMgaW4gdGhlIHRpY2tldCBkYXRhIHRvIHVwZGF0ZSB0aGUgcHJvZmlsZVxuICAgIGNvbnN0IHtcbiAgICAgIGF0dGVuZGVlX2VtYWlsLFxuICAgICAgYXR0ZW5kZWVfZmlyc3RfbmFtZSxcbiAgICAgIGF0dGVuZGVlX2xhc3RfbmFtZSxcbiAgICAgIGF0dGVuZGVlX2NvbXBhbnlcbiAgICB9ID0gZGF0YTtcbiAgICBjb25zdCBoYXNNYW5hZ2VyID0gdGlja2V0T3duZXI/Lm1hbmFnZXI/LmlkIHx8IHRpY2tldE93bmVyPy5tYW5hZ2VyX2lkO1xuICAgIGNvbnN0IGl0c01lID0gdXNlclByb2ZpbGUuZW1haWwgPT09IGF0dGVuZGVlX2VtYWlsO1xuICAgIGNvbnN0IHByb2ZpbGVDaGFuZ2VkID1cbiAgICAgIGF0dGVuZGVlX2NvbXBhbnkubmFtZSAhPT0gY29tcGFueSB8fFxuICAgICAgYXR0ZW5kZWVfZmlyc3RfbmFtZSAhPT0gdXNlclByb2ZpbGUuZmlyc3RfbmFtZSB8fFxuICAgICAgYXR0ZW5kZWVfbGFzdF9uYW1lICE9PSB1c2VyUHJvZmlsZS5sYXN0X25hbWU7XG5cbiAgICBpZiAoaXRzTWUgJiYgIWhhc01hbmFnZXIgJiYgcHJvZmlsZUNoYW5nZWQpIHtcbiAgICAgIGNvbnN0IG5ld1Byb2ZpbGUgPSB7XG4gICAgICAgIGZpcnN0X25hbWU6IGF0dGVuZGVlX2ZpcnN0X25hbWUsXG4gICAgICAgIGxhc3RfbmFtZTogYXR0ZW5kZWVfbGFzdF9uYW1lLFxuICAgICAgICBjb21wYW55OiBhdHRlbmRlZV9jb21wYW55Lm5hbWUgfHwgYXR0ZW5kZWVfY29tcGFueVxuICAgICAgfTtcblxuICAgICAgLy8gdGhpcyBpcyBhIGNhbGxiYWNrIG1ldGhvZCB0aGF0IHVwZGF0ZXMgdXNlclByb2ZpbGUgaW4gQVBJIGFuZCBldmVudC1zaXRlXG4gICAgICB1cGRhdGVQcm9maWxlKG5ld1Byb2ZpbGUpO1xuICAgIH1cbiAgfTtcblxuZXhwb3J0IGNvbnN0IHNhdmVUaWNrZXREZXRhaWxzID1cbiAgKHRpY2tldCwgYW5zd2VycykgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCk7XG5cbiAgICBpZiAoIWFjY2Vzc1Rva2VuKSByZXR1cm4gYXV0aFByb21pc2VSZWplY3QoKTtcblxuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgICBleHBhbmQ6XG4gICAgICAgIFwicmVmdW5kX3JlcXVlc3RzLG93bmVyLG93bmVyLmV4dHJhX3F1ZXN0aW9ucyxiYWRnZSxiYWRnZS5mZWF0dXJlcyx0aWNrZXRfdHlwZVwiXG4gICAgfTtcblxuICAgIGNvbnN0IGlkVG9rZW4gPSBnZXRJZFRva2VuKCk7XG4gICAgbGV0IGNvbXBhbnkgPSBcIlwiO1xuICAgIGlmIChpZFRva2VuKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCB2ZXJpZmllciA9IG5ldyBJZFRva2VuVmVyaWZpZXIoKTtcbiAgICAgICAgY29uc3Qgand0ID0gdmVyaWZpZXIuZGVjb2RlKGlkVG9rZW4pO1xuICAgICAgICBjb21wYW55ID0gand0LnBheWxvYWQuY29tcGFueTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgY29uc29sZS5sb2coXCJlcnJvclwiLCBlKTtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3Qgbm9ybWFsaXplZEVudGl0eSA9IG5vcm1hbGl6ZVRpY2tldChhbnN3ZXJzKTtcblxuICAgIHJldHVybiBwdXRSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihVUERBVEVfVElDS0VUKSxcbiAgICAgIGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzL2FsbC9vcmRlcnMvYWxsL3RpY2tldHMvJHt0aWNrZXQuaWR9YCxcbiAgICAgIG5vcm1hbGl6ZWRFbnRpdHksXG4gICAgICBjdXN0b21BdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKVxuICAgICAgLnRoZW4oYXN5bmMgKCkgPT4ge1xuICAgICAgICBkaXNwYXRjaChyZWZyZXNoUHJvZmlsZShhbnN3ZXJzLCBjb21wYW55LCB0aWNrZXQub3duZXIpKTtcbiAgICAgIH0pXG4gICAgICAuZmluYWxseSgoKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCBhc3NpZ25BdHRlbmRlZSA9XG4gIChvcmRlcklkLCB0aWNrZXRJZCwgYXR0ZW5kZWVfZW1haWwsIG1lc3NhZ2UgPSBudWxsKSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKTtcblxuICAgIGNvbnN0IHBheWxvYWQgPSB7IGF0dGVuZGVlX2VtYWlsIH07XG4gICAgaWYgKG1lc3NhZ2UpIHBheWxvYWQubWVzc2FnZSA9IG1lc3NhZ2U7XG5cbiAgICBpZiAoIWFjY2Vzc1Rva2VuKSByZXR1cm4gYXV0aFByb21pc2VSZWplY3QoKTtcblxuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgICBleHBhbmQ6XG4gICAgICAgIFwib3duZXIsb3duZXIuZXh0cmFfcXVlc3Rpb25zLG93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbix0aWNrZXRfdHlwZSxvcmRlclwiLFxuICAgICAgcmVsYXRpb25zOiBcIm93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi5ub25lXCIsXG4gICAgICBmaWVsZHM6XG4gICAgICAgIFwib3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLmlkLG93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi5uYW1lLG93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi50eXBlXCJcbiAgICB9O1xuXG4gICAgcmV0dXJuIHB1dFJlcXVlc3QoXG4gICAgICBudWxsLFxuICAgICAgY3JlYXRlQWN0aW9uKEFTU0lHTl9USUNLRVQpLFxuICAgICAgYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvYWxsL29yZGVycy8ke29yZGVySWR9L3RpY2tldHMvJHt0aWNrZXRJZH0vYXR0ZW5kZWVgLFxuICAgICAgcGF5bG9hZCxcbiAgICAgIGN1c3RvbUF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCByZW1vdmVUaWNrZXQgPVxuICAob3JkZXJJZCwgdGlja2V0SWQpID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpO1xuXG4gICAgaWYgKCFhY2Nlc3NUb2tlbikgcmV0dXJuIGF1dGhQcm9taXNlUmVqZWN0KCk7XG5cbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgZXhwYW5kOiBcIm9yZGVyLCBvd25lciwgb3duZXIuZXh0cmFfcXVlc3Rpb25zLCBvcmRlci5zdW1taXRcIlxuICAgIH07XG5cbiAgICByZXR1cm4gZGVsZXRlUmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oUkVNT1ZFX1RJQ0tFVF9BVFRFTkRFRSksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy9hbGwvb3JkZXJzLyR7b3JkZXJJZH0vdGlja2V0cy8ke3RpY2tldElkfS9hdHRlbmRlZWAsXG4gICAgICB7fSxcbiAgICAgIGN1c3RvbUF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpO1xuICB9O1xuXG5leHBvcnQgY29uc3QgcmVhc3NpZ25UaWNrZXQgPVxuICAob3JkZXJJZCwgdGlja2V0SWQsIGVtYWlsLCBtZXNzYWdlKSA9PiBhc3luYyAoZGlzcGF0Y2gpID0+XG4gICAgZGlzcGF0Y2gocmVtb3ZlVGlja2V0KG9yZGVySWQsIHRpY2tldElkKSkudGhlbigoKSA9PlxuICAgICAgZGlzcGF0Y2goYXNzaWduQXR0ZW5kZWUob3JkZXJJZCwgdGlja2V0SWQsIGVtYWlsLCBtZXNzYWdlKSlcbiAgICApO1xuXG5leHBvcnQgY29uc3QgdW5hc3NpZ25UaWNrZXQgPSAob3JkZXJJZCwgdGlja2V0SWQpID0+IGFzeW5jIChkaXNwYXRjaCkgPT5cbiAgZGlzcGF0Y2gocmVtb3ZlVGlja2V0KG9yZGVySWQsIHRpY2tldElkKSkudGhlbigoKSA9PiBkaXNwYXRjaChzdG9wTG9hZGluZygpKSk7XG5cbmV4cG9ydCBjb25zdCBkZWxlZ2F0ZVRpY2tldCA9XG4gIChvcmRlcklkLCB0aWNrZXRJZCwgZmlyc3ROYW1lLCBsYXN0TmFtZSwgZW1haWwpID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpO1xuICAgIGNvbnN0IHtcbiAgICAgIHdpZGdldFN0YXRlOiB7IHN1bW1pdCB9XG4gICAgfSA9IGdldFN0YXRlKCk7XG4gICAgY29uc3QgcGF5bG9hZCA9IHtcbiAgICAgIGF0dGVuZGVlX2ZpcnN0X25hbWU6IGZpcnN0TmFtZSxcbiAgICAgIGF0dGVuZGVlX2xhc3RfbmFtZTogbGFzdE5hbWUsXG4gICAgICBhdHRlbmRlZV9lbWFpbDogZW1haWxcbiAgICB9O1xuXG4gICAgaWYgKCFhY2Nlc3NUb2tlbikgcmV0dXJuIGF1dGhQcm9taXNlUmVqZWN0KCk7XG5cbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgZXhwYW5kOlxuICAgICAgICBcIm93bmVyLG93bmVyLmV4dHJhX3F1ZXN0aW9ucyxvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24sdGlja2V0X3R5cGUsb3JkZXJcIixcbiAgICAgIHJlbGF0aW9uczogXCJvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24ubm9uZVwiLFxuICAgICAgZmllbGRzOlxuICAgICAgICBcIm93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi5pZCxvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24ubmFtZSxvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24udHlwZVwiXG4gICAgfTtcblxuICAgIHJldHVybiBwdXRSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihERUxFR0FURV9USUNLRVQpLFxuICAgICAgYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvJHtzdW1taXQuaWR9L29yZGVycy8ke29yZGVySWR9L3RpY2tldHMvJHt0aWNrZXRJZH0vZGVsZWdhdGVgLFxuICAgICAgcGF5bG9hZCxcbiAgICAgIGN1c3RvbUF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCBzYXZlRXh0cmFRdWVzdGlvbnMgPVxuICAodGlja2V0LCBhbnN3ZXJzKSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKTtcblxuICAgIGlmICghYWNjZXNzVG9rZW4pIHJldHVybiBhdXRoUHJvbWlzZVJlamVjdCgpO1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIGV4cGFuZDpcbiAgICAgICAgXCJyZWZ1bmRfcmVxdWVzdHMsb3duZXIsb3duZXIuZXh0cmFfcXVlc3Rpb25zLG93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbixiYWRnZSxiYWRnZS5mZWF0dXJlcyx0aWNrZXRfdHlwZSxvcmRlclwiLFxuICAgICAgcmVsYXRpb25zOiBcIm93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi5ub25lXCIsXG4gICAgICBmaWVsZHM6XG4gICAgICAgIFwib3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLmlkLG93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi5uYW1lLG93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi50eXBlXCJcbiAgICB9O1xuXG4gICAgY29uc3Qgbm9ybWFsaXplZEFucyA9IG5vcm1hbGl6ZVRpY2tldChhbnN3ZXJzKTtcblxuICAgIHJldHVybiBwdXRSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihVUERBVEVfVElDS0VUKSxcbiAgICAgIGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzL2FsbC9vcmRlcnMvYWxsL3RpY2tldHMvJHt0aWNrZXQuaWR9YCxcbiAgICAgIG5vcm1hbGl6ZWRBbnMsXG4gICAgICBjdXN0b21BdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKVxuICAgICAgLnRoZW4oYXN5bmMgKCkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIHJldHVybiBlO1xuICAgICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCBkb3dubG9hZE9yZGVyUmVjZWlwdCA9XG4gICh7IG9yZGVyLCBzdW1taXQgfSkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyByZWNlaXB0U2V0dGluZ3MgfSkgPT4gZ2VuZXJhdGVSZWNlaXB0UERGKHsgb3JkZXIsIHN1bW1pdCwgcmVjZWlwdFNldHRpbmdzIH0pO1xuXG5leHBvcnQgY29uc3QgZ2V0VGlja2V0UERGID1cbiAgKHRpY2tldCkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCk7XG5cbiAgICBpZiAoIWFjY2Vzc1Rva2VuKSByZXR1cm4gYXV0aFByb21pc2VSZWplY3QoKTtcblxuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW5cbiAgICB9O1xuXG4gICAgY29uc3Qgb3JkZXJJZCA9IHRpY2tldC5vcmRlciA/IHRpY2tldC5vcmRlci5pZCA6IHRpY2tldC5vcmRlcl9pZDtcblxuICAgIGNvbnN0IHF1ZXJ5U3RyaW5nID0gb2JqZWN0VG9RdWVyeVN0cmluZyhwYXJhbXMpO1xuICAgIGNvbnN0IGFwaVVybCA9IGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzL2FsbC9vcmRlcnMvJHtvcmRlcklkfS90aWNrZXRzLyR7dGlja2V0LmlkfS9wZGY/JHtxdWVyeVN0cmluZ31gO1xuXG4gICAgcmV0dXJuIGZldGNoKGFwaVVybCwge1xuICAgICAgcmVzcG9uc2VUeXBlOiBcIkJsb2JcIixcbiAgICAgIGhlYWRlcnM6IHsgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9wZGZcIiB9XG4gICAgfSlcbiAgICAgIC50aGVuKChyZXNwb25zZSkgPT4ge1xuICAgICAgICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgICAgdGhyb3cgcmVzcG9uc2U7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHJlc3BvbnNlLmJsb2IoKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICAgIC50aGVuKChwZGYpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIGNvbnN0IGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiYVwiKTtcbiAgICAgICAgY29uc3QgdXJsID0gd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwocGRmKTtcbiAgICAgICAgbGluay5ocmVmID0gdXJsO1xuICAgICAgICBsaW5rLmRvd25sb2FkID0gXCJ0aWNrZXQucGRmXCI7XG4gICAgICAgIGxpbmsuZGlzcGF0Y2hFdmVudChuZXcgTW91c2VFdmVudChcImNsaWNrXCIpKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goY3VzdG9tRmV0Y2hFcnJvckhhbmRsZXIpO1xuICB9O1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlLCBmb3J3YXJkUmVmIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IE1BWF9JTklUSUFMUyA9IDI7XG5cbmNvbnN0IEJhZGdlRmVhdHVyZUljb24gPSBmb3J3YXJkUmVmKFxuICAoeyBuYW1lLCBpbWFnZSwgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IHtcbiAgICBjb25zdCBbaW1hZ2VMb2FkZWQsIHNldEltYWdlTG9hZGVkXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBbaW1hZ2VFcnJvciwgc2V0SW1hZ2VFcnJvcl0gPSB1c2VTdGF0ZShmYWxzZSk7XG5cbiAgICBjb25zdCBzaG93RmFsbGJhY2sgPSAhaW1hZ2UgfHwgaW1hZ2VFcnJvcjtcblxuICAgIC8vIEV4dHJhY3QgdXAgdG8gMiBpbml0aWFscyBmcm9tIGJhZGdlIGZlYXR1cmUgbmFtZSAoZS5nLiwgXCJCb2FyZCBNZW1iZXJcIiAtPiBcIkJNXCIpXG4gICAgY29uc3QgaW5pdGlhbHMgPSBuYW1lXG4gICAgICAuc3BsaXQoXCIgXCIpXG4gICAgICAuZmlsdGVyKCh3b3JkKSA9PiB3b3JkLmxlbmd0aCA+IDApXG4gICAgICAubWFwKCh3b3JkKSA9PiB3b3JkWzBdKVxuICAgICAgLmpvaW4oXCJcIilcbiAgICAgIC5zdWJzdHJpbmcoMCwgTUFYX0lOSVRJQUxTKVxuICAgICAgLnRvVXBwZXJDYXNlKCk7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPGRpdlxuICAgICAgICByZWY9e3JlZn1cbiAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuYmFkZ2VGZWF0dXJlSWNvbn0ke2NsYXNzTmFtZSA/IGAgJHtjbGFzc05hbWV9YCA6ICcnfWB9XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nXG4gICAgICAgIHsuLi5wcm9wc31cbiAgICAgID5cbiAgICAgICAge2ltYWdlICYmICFpbWFnZUVycm9yICYmIChcbiAgICAgICAgICA8aW1nXG4gICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5iYWRnZUZlYXR1cmVJbWFnZX1cbiAgICAgICAgICAgIHNyYz17aW1hZ2V9XG4gICAgICAgICAgICBhbHQ9e25hbWV9XG4gICAgICAgICAgICBvbkxvYWQ9eygpID0+IHNldEltYWdlTG9hZGVkKHRydWUpfVxuICAgICAgICAgICAgb25FcnJvcj17KCkgPT4gc2V0SW1hZ2VFcnJvcih0cnVlKX1cbiAgICAgICAgICAgIHN0eWxlPXt7IGRpc3BsYXk6IGltYWdlTG9hZGVkID8gXCJibG9ja1wiIDogXCJub25lXCIgfX1cbiAgICAgICAgICAvPlxuICAgICAgICApfVxuICAgICAgICB7c2hvd0ZhbGxiYWNrICYmIChcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLmJhZGdlRmVhdHVyZUluaXRpYWxzfT57aW5pdGlhbHN9PC9kaXY+XG4gICAgICAgICl9XG4gICAgICA8L2Rpdj5cbiAgICApO1xuICB9XG4pO1xuXG5CYWRnZUZlYXR1cmVJY29uLnByb3BUeXBlcyA9IHtcbiAgbmFtZTogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICBpbWFnZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nXG59O1xuXG5leHBvcnQgZGVmYXVsdCBCYWRnZUZlYXR1cmVJY29uO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IEJ1dHRvbiBmcm9tIFwiQG11aS9tYXRlcmlhbC9CdXR0b25cIjtcbmltcG9ydCBEaWFsb2cgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvRGlhbG9nXCI7XG5pbXBvcnQgRGlhbG9nQWN0aW9ucyBmcm9tIFwiQG11aS9tYXRlcmlhbC9EaWFsb2dBY3Rpb25zXCI7XG5pbXBvcnQgRGlhbG9nQ29udGVudCBmcm9tIFwiQG11aS9tYXRlcmlhbC9EaWFsb2dDb250ZW50XCI7XG5pbXBvcnQgRGlhbG9nQ29udGVudFRleHQgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvRGlhbG9nQ29udGVudFRleHRcIjtcbmltcG9ydCBEaWFsb2dUaXRsZSBmcm9tIFwiQG11aS9tYXRlcmlhbC9EaWFsb2dUaXRsZVwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuXG5jb25zdCBDb25maXJtRGlhbG9nID0gKHsgb3BlbiwgdGl0bGUsIGJvZHksIG9uQ2xvc2UsIG9uQ29uZmlybSB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcblxuICByZXR1cm4gKFxuICAgIDxEaWFsb2dcbiAgICAgIG9wZW49e29wZW59XG4gICAgICBvbkNsb3NlPXtvbkNsb3NlfVxuICAgICAgYXJpYS1sYWJlbGxlZGJ5PVwiYWxlcnQtZGlhbG9nLXRpdGxlXCJcbiAgICAgIGFyaWEtZGVzY3JpYmVkYnk9XCJhbGVydC1kaWFsb2ctZGVzY3JpcHRpb25cIlxuICAgID5cbiAgICAgIDxEaWFsb2dUaXRsZSBpZD1cImFsZXJ0LWRpYWxvZy10aXRsZVwiPnt0aXRsZX08L0RpYWxvZ1RpdGxlPlxuICAgICAgPERpYWxvZ0NvbnRlbnQ+XG4gICAgICAgIDxEaWFsb2dDb250ZW50VGV4dCBpZD1cImFsZXJ0LWRpYWxvZy1kZXNjcmlwdGlvblwiPlxuICAgICAgICAgIHtib2R5fVxuICAgICAgICA8L0RpYWxvZ0NvbnRlbnRUZXh0PlxuICAgICAgPC9EaWFsb2dDb250ZW50PlxuICAgICAgPERpYWxvZ0FjdGlvbnM+XG4gICAgICAgIDxCdXR0b24gb25DbGljaz17b25DbG9zZX0+e3QoXCJnZW5lcmFsLmNhbmNlbFwiKX08L0J1dHRvbj5cbiAgICAgICAgPEJ1dHRvbiBvbkNsaWNrPXtvbkNvbmZpcm19IGF1dG9Gb2N1cz5cbiAgICAgICAgICB7dChcImdlbmVyYWwuY29uZmlybVwiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICA8L0RpYWxvZ0FjdGlvbnM+XG4gICAgPC9EaWFsb2c+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBDb25maXJtRGlhbG9nO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IENvbnRlbnRDb3B5SWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9Db250ZW50Q29weVwiO1xuaW1wb3J0IHsgVG9vbHRpcCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBNSUxMSVNFQ19UT19TRUMgfSBmcm9tIFwiLi4vLi4vdXRpbHMvY29uc3RhbnRzXCI7XG5cbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgZGVmYXVsdFdpZHRoID0gOTA7XG5cbmNvbnN0IENvcHlUZXh0ID0gKHtcbiAgdGV4dCxcbiAgdG9vbHRpcFRleHQsXG4gIGhpZGVDb3B5ID0gZmFsc2UsXG4gIHRydW5jYXRlZCA9IHRydWUsXG4gIHJldmVyc2VkID0gZmFsc2UsXG4gIHdpZHRoID0gZGVmYXVsdFdpZHRoXG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgdG9vbHRpcFRleHRUb1VzZSA9IHRvb2x0aXBUZXh0IHx8IHQoXCJnZW5lcmFsLmNvcHlfdG9fY2xpcGJvYXJkXCIpO1xuICBjb25zdCBbdG9vbHRpcCwgc2V0VG9vbHRpcF0gPSBSZWFjdC51c2VTdGF0ZSh0b29sdGlwVGV4dFRvVXNlKTtcbiAgY29uc3QgY2xhc3NOYW1lcyA9IGAke3RydW5jYXRlZCAmJiBzdHlsZXMudHJ1bmNhdGVkfSAke1xuICAgIHJldmVyc2VkICYmIHN0eWxlcy5yZXZlcnNlZFxuICB9YDtcblxuICBjb25zdCBoYW5kbGVDb3B5ID0gKCkgPT4ge1xuICAgIG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KHRleHQpO1xuICAgIHNldFRvb2x0aXAodChcImdlbmVyYWwuY29waWVkXCIpKTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHNldFRvb2x0aXAodG9vbHRpcFRleHRUb1VzZSk7XG4gICAgfSwgTUlMTElTRUNfVE9fU0VDKTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMud3JhcHBlcn0+XG4gICAgICA8c3BhbiBjbGFzc05hbWU9e2NsYXNzTmFtZXN9IHN0eWxlPXt7IHdpZHRoIH19PlxuICAgICAgICB7dGV4dH1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIHshaGlkZUNvcHkgJiYgKFxuICAgICAgICA8VG9vbHRpcCB0aXRsZT17dG9vbHRpcH0+XG4gICAgICAgICAgPENvbnRlbnRDb3B5SWNvblxuICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuY29weUljb259XG4gICAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVDb3B5fVxuICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJjb3B5LW51bWJlci1idXR0b25cIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICl9XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5Db3B5VGV4dC5wcm9wVHlwZXMgPSB7XG4gIHRleHQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHRvb2x0aXBUZXh0OiBQcm9wVHlwZXMuc3RyaW5nLFxuICBoaWRlQ29weTogUHJvcFR5cGVzLmJvb2wsXG4gIHRydW5jYXRlZDogUHJvcFR5cGVzLmJvb2wsXG4gIHJldmVyc2VkOiBQcm9wVHlwZXMuYm9vbCxcbiAgd2lkdGg6IFByb3BUeXBlcy5udW1iZXJcbn07XG5cbmV4cG9ydCBkZWZhdWx0IENvcHlUZXh0O1xuIiwiaW1wb3J0IHsgY3JlYXRlQ29udGV4dCB9IGZyb20gXCJyZWFjdFwiO1xuXG5jb25zdCBDdXN0b21Ob3RpZmljYXRpb25Db250ZXh0ID0gY3JlYXRlQ29udGV4dChudWxsKTtcblxuZXhwb3J0IGRlZmF1bHQgQ3VzdG9tTm90aWZpY2F0aW9uQ29udGV4dDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IEFsZXJ0LCBTbmFja2JhciwgVHlwb2dyYXBoeSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgQ2hlY2tDaXJjbGVJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0NoZWNrQ2lyY2xlXCI7XG5pbXBvcnQgRXJyb3JJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0Vycm9yXCI7XG5cbmNvbnN0IEN1c3RvbU5vdGlmaWNhdGlvbiA9ICh7IG9wZW4sIG9uQ2xvc2UsIG1lc3NhZ2UsIHNldmVyaXR5IH0pID0+IHtcbiAgaWYgKCFtZXNzYWdlKSByZXR1cm4gbnVsbDtcblxuICByZXR1cm4gKFxuICAgIDxTbmFja2JhclxuICAgICAgb3Blbj17b3Blbn1cbiAgICAgIG9uQ2xvc2U9e29uQ2xvc2V9XG4gICAgICBhbmNob3JPcmlnaW49e3sgdmVydGljYWw6IFwidG9wXCIsIGhvcml6b250YWw6IFwiY2VudGVyXCIgfX1cbiAgICAgIGF1dG9IaWRlRHVyYXRpb249ezIwMDB9XG4gICAgPlxuICAgICAgPEFsZXJ0XG4gICAgICAgIG9uQ2xvc2U9e29uQ2xvc2V9XG4gICAgICAgIHNldmVyaXR5PXtzZXZlcml0eX1cbiAgICAgICAgdmFyaWFudD1cImZpbGxlZFwiXG4gICAgICAgIHN4PXt7IHdpZHRoOiBcIjEwMCVcIiwgYmFja2dyb3VuZENvbG9yOiBgJHtzZXZlcml0eX0ubGlnaHRgIH19XG4gICAgICAgIGljb25NYXBwaW5nPXt7XG4gICAgICAgICAgc3VjY2VzczogPENoZWNrQ2lyY2xlSWNvbiBmb250U2l6ZT1cImluaGVyaXRcIiAvPixcbiAgICAgICAgICBlcnJvcjogPEVycm9ySWNvbiBmb250U2l6ZT1cImluaGVyaXRcIiAvPlxuICAgICAgICB9fVxuICAgICAgPlxuICAgICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiYm9keTFcIj57bWVzc2FnZX08L1R5cG9ncmFwaHk+XG4gICAgICA8L0FsZXJ0PlxuICAgIDwvU25hY2tiYXI+XG4gICk7XG59O1xuXG5DdXN0b21Ob3RpZmljYXRpb24ucHJvcFR5cGVzID0ge1xuICBvcGVuOiBQcm9wVHlwZXMuYm9vbCxcbiAgb25DbG9zZTogUHJvcFR5cGVzLmZ1bmMsXG4gIG1lc3NhZ2U6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHNldmVyaXR5OiBQcm9wVHlwZXMuc3RyaW5nXG59O1xuXG5leHBvcnQgZGVmYXVsdCBDdXN0b21Ob3RpZmljYXRpb247XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBUaGVtZVByb3ZpZGVyIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IGNyZWF0ZVRoZW1lIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWwvc3R5bGVzXCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5cbmxldCBkYXJrQ29sb3IgPSBcIlwiO1xuaWYgKHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgLy8gR2V0IHRoZSByb290IGVsZW1lbnRcbiAgY29uc3Qgcm9vdCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcblxuICAvLyBSZXRyaWV2ZSB0aGUgY3VycmVudCB2YWx1ZSBvZiBhIENTUyB2YXJpYWJsZVxuICBkYXJrQ29sb3IgPSBnZXRDb21wdXRlZFN0eWxlKHJvb3QpLmdldFByb3BlcnR5VmFsdWUoXG4gICAgXCItLWNvbG9yX2JhY2tncm91bmRfZGFya1wiXG4gICk7XG59XG5cbmNvbnN0IHRoZW1lID0gY3JlYXRlVGhlbWUoe1xuICBwYWxldHRlOiB7XG4gICAgcHJpbWFyeToge1xuICAgICAgbWFpbjogZGFya0NvbG9yXG4gICAgfSxcbiAgICB0ZXh0OiB7XG4gICAgICBwcmltYXJ5OiBcIiMwMDAwMDBERVwiLFxuICAgICAgc2Vjb25kYXJ5OiBcIiMwMDAwMDA5OVwiLFxuICAgICAgbGluazogXCIjMjE5NmYzXCJcbiAgICB9XG4gIH0sXG4gIHR5cG9ncmFwaHk6IHtcbiAgICBib2R5MToge1xuICAgICAgZm9udFNpemU6IFwiMTRweFwiLFxuICAgICAgZm9udFdlaWdodDogNDAwXG4gICAgfSxcbiAgICBoNToge1xuICAgICAgZm9udFNpemU6IFwiMS42ZW1cIixcbiAgICAgIGZvbnRXZWlnaHQ6IDQwMCxcbiAgICAgIFwiJi5NdWlUeXBvZ3JhcGh5LWd1dHRlckJvdHRvbVwiOiB7XG4gICAgICAgIG1hcmdpbkJvdHRvbTogXCIyMHB4XCJcbiAgICAgIH1cbiAgICB9LFxuICAgIGg2OiB7XG4gICAgICBmb250U2l6ZTogXCIxLjRlbVwiLFxuICAgICAgZm9udFdlaWdodDogNTAwLFxuICAgICAgXCImLk11aVR5cG9ncmFwaHktZ3V0dGVyQm90dG9tXCI6IHtcbiAgICAgICAgbWFyZ2luQm90dG9tOiBcIjIwcHhcIlxuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgY29tcG9uZW50czoge1xuICAgIE11aUZvcm1IZWxwZXJUZXh0OiB7XG4gICAgICBzdHlsZU92ZXJyaWRlczoge1xuICAgICAgICByb290OiB7XG4gICAgICAgICAgZm9udFNpemU6IFwiLjhlbVwiXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIE11aUJ1dHRvbjoge1xuICAgICAgc3R5bGVPdmVycmlkZXM6IHtcbiAgICAgICAgcm9vdDoge1xuICAgICAgICAgIGZvbnRTaXplOiBcIjFlbVwiLFxuICAgICAgICAgIGZvbnRXZWlnaHQ6IDUwMCxcbiAgICAgICAgICBsaW5lSGVpZ2h0OiBcIjIycHhcIlxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBNdWlUYWI6IHtcbiAgICAgIHN0eWxlT3ZlcnJpZGVzOiB7XG4gICAgICAgIHJvb3Q6IHtcbiAgICAgICAgICBmb250U2l6ZTogXCIxNHB4XCIsXG4gICAgICAgICAgY29sb3I6IFwiIzAwMDAwMDk5XCIsXG4gICAgICAgICAgXCImLk11aS1zZWxlY3RlZFwiOiB7XG4gICAgICAgICAgICBjb2xvcjogXCIjMjE5NmYzXCJcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIE11aVRhYnM6IHtcbiAgICAgIHN0eWxlT3ZlcnJpZGVzOiB7XG4gICAgICAgIGluZGljYXRvcjoge1xuICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogXCIjMjE5NmYzXCJcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufSk7XG5cbmNvbnN0IEN1c3RvbVRoZW1lID0gKHsgY2hpbGRyZW4gfSkgPT4gKFxuICA8VGhlbWVQcm92aWRlciB0aGVtZT17dGhlbWV9PntjaGlsZHJlbn08L1RoZW1lUHJvdmlkZXI+XG4pO1xuXG5DdXN0b21UaGVtZS5wcm9wVHlwZXMgPSB7XG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZS5pc1JlcXVpcmVkXG59O1xuXG5leHBvcnQgZGVmYXVsdCBDdXN0b21UaGVtZTtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIENoZWNrYm94LFxuICBGb3JtQ29udHJvbCxcbiAgRm9ybUNvbnRyb2xMYWJlbCxcbiAgRm9ybUdyb3VwLFxuICBGb3JtSGVscGVyVGV4dCxcbiAgRm9ybUxhYmVsXG59IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgUmF3SFRNTCBmcm9tIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9jb21wb25lbnRzL3Jhdy1odG1sXCI7XG5pbXBvcnQgeyBnZXRMYWJlbCwgdG9TbHVnIH0gZnJvbSBcIi4vdXRpbHNcIjtcblxuY29uc3QgQ2hlY2tib3hMaXN0UXVlc3Rpb25GaWVsZCA9ICh7XG4gIHF1ZXN0aW9uLFxuICBxdWVzdGlvbkNsYXNzTmFtZSA9IFwiXCIsXG4gIGlzRGlzYWJsZWQgPSBmYWxzZSxcbiAgY2hpbGRyZW4sXG4gIHZhbHVlLFxuICBvbkNoYW5nZSxcbiAgc2V0RmllbGRWYWx1ZSxcbiAgZXJyb3IsXG4gIGhlbHBlclRleHQsXG4gIC4uLnJlc3Rcbn0pID0+IHtcbiAgY29uc3QgcXVlc3Rpb25TbHVnID0gdG9TbHVnKHF1ZXN0aW9uLm5hbWUsIHF1ZXN0aW9uLmlkKTtcbiAgY29uc3QgcXVlc3Rpb25MYWJlbCA9IGdldExhYmVsKHF1ZXN0aW9uKTtcbiAgY29uc3QgaXNSZXF1aXJlZCA9IHF1ZXN0aW9uLm1hbmRhdG9yeTtcbiAgY29uc3QgcXVlc3Rpb25NYXhWYWx1ZXMgPSBxdWVzdGlvbi5tYXhfc2VsZWN0ZWRfdmFsdWVzO1xuXG4gIGNvbnN0IHF1ZXN0aW9uT3B0aW9ucyA9XG4gICAgcXVlc3Rpb24udmFsdWVzPy5tYXAoKHZhbCkgPT4gKHtcbiAgICAgIGxhYmVsOiB2YWwubGFiZWwsXG4gICAgICB2YWx1ZTogdmFsLmlkLnRvU3RyaW5nKClcbiAgICB9KSkgfHwgW107XG5cbiAgY29uc3QgaGFuZGxlQ2hlY2tib3hMaXN0Q2hhbmdlID0gKGNoZWNrZWQsIHZhbCkgPT4ge1xuICAgIGNvbnN0IGN1cnJlbnRBbnMgPSB2YWx1ZSB8fCBbXTtcbiAgICBjb25zdCBtYXhTZWxlY3Rpb25SZWFjaGVkID1cbiAgICAgIHF1ZXN0aW9uTWF4VmFsdWVzICE9PSAwICYmIGN1cnJlbnRBbnMubGVuZ3RoID09PSBxdWVzdGlvbk1heFZhbHVlcztcbiAgICBsZXQgbmV3VmFsdWU7XG5cbiAgICBpZiAoY2hlY2tlZCkge1xuICAgICAgbmV3VmFsdWUgPSBtYXhTZWxlY3Rpb25SZWFjaGVkID8gY3VycmVudEFucyA6IFsuLi5jdXJyZW50QW5zLCB2YWxdO1xuICAgIH0gZWxzZSB7XG4gICAgICBuZXdWYWx1ZSA9IGN1cnJlbnRBbnMuZmlsdGVyKCh2KSA9PiB2ICE9PSB2YWwpO1xuICAgIH1cblxuICAgIHNldEZpZWxkVmFsdWUocXVlc3Rpb25TbHVnLCBuZXdWYWx1ZSk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBrZXk9e3F1ZXN0aW9uU2x1Z31cbiAgICAgIGlkPXtgJHtxdWVzdGlvblNsdWd9X2NvbnRhaW5lcmB9XG4gICAgICBjbGFzc05hbWU9e3F1ZXN0aW9uQ2xhc3NOYW1lfVxuICAgID5cbiAgICAgIDxGb3JtQ29udHJvbFxuICAgICAgICBkaXNhYmxlZD17aXNEaXNhYmxlZH1cbiAgICAgICAgcmVxdWlyZWQ9e2lzUmVxdWlyZWR9XG4gICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICBtYXJnaW49XCJub3JtYWxcIlxuICAgICAgICBlcnJvcj17ZXJyb3J9XG4gICAgICA+XG4gICAgICAgIDxGb3JtTGFiZWw+XG4gICAgICAgICAgPFJhd0hUTUw+e3F1ZXN0aW9uTGFiZWx9PC9SYXdIVE1MPlxuICAgICAgICA8L0Zvcm1MYWJlbD5cbiAgICAgICAge2Vycm9yICYmIDxGb3JtSGVscGVyVGV4dD57aGVscGVyVGV4dCA/PyBcIiBcIn08L0Zvcm1IZWxwZXJUZXh0Pn1cbiAgICAgICAgPEZvcm1Hcm91cD5cbiAgICAgICAgICB7cXVlc3Rpb25PcHRpb25zLm1hcCgob3ApID0+IChcbiAgICAgICAgICAgIDxGb3JtQ29udHJvbExhYmVsXG4gICAgICAgICAgICAgIGtleT17b3AubGFiZWx9XG4gICAgICAgICAgICAgIG5hbWU9e3F1ZXN0aW9uU2x1Z31cbiAgICAgICAgICAgICAgY29udHJvbD17XG4gICAgICAgICAgICAgICAgPENoZWNrYm94XG4gICAgICAgICAgICAgICAgICBjaGVja2VkPXt2YWx1ZT8uaW5jbHVkZXMob3AudmFsdWUpfVxuICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhldikgPT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlQ2hlY2tib3hMaXN0Q2hhbmdlKGV2LnRhcmdldC5jaGVja2VkLCBvcC52YWx1ZSlcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nICovXG4gICAgICAgICAgICAgICAgICB7Li4ucmVzdH1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGxhYmVsPXtvcC5sYWJlbH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvRm9ybUdyb3VwPlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L0Zvcm1Db250cm9sPlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuQ2hlY2tib3hMaXN0UXVlc3Rpb25GaWVsZC5wcm9wVHlwZXMgPSB7XG4gIHF1ZXN0aW9uOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHZhbHVlOiBQcm9wVHlwZXMuYXJyYXksXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBpc0Rpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgb25DaGFuZ2U6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgc2V0RmllbGRWYWx1ZTogUHJvcFR5cGVzLmZ1bmMsXG4gIGVycm9yOiBQcm9wVHlwZXMuYm9vbCxcbiAgaGVscGVyVGV4dDogUHJvcFR5cGVzLnN0cmluZ1xufTtcblxuZXhwb3J0IGRlZmF1bHQgQ2hlY2tib3hMaXN0UXVlc3Rpb25GaWVsZDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIENoZWNrYm94LFxuICBGb3JtQ29udHJvbCxcbiAgRm9ybUNvbnRyb2xMYWJlbCxcbiAgRm9ybUhlbHBlclRleHRcbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBSYXdIVE1MIGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL2NvbXBvbmVudHMvcmF3LWh0bWxcIjtcbmltcG9ydCB7IGdldExhYmVsLCB0b1NsdWcgfSBmcm9tIFwiLi91dGlsc1wiO1xuXG5jb25zdCBDaGVja2JveFF1ZXN0aW9uRmllbGQgPSAoe1xuICBxdWVzdGlvbixcbiAgcXVlc3Rpb25DbGFzc05hbWUgPSBcIlwiLFxuICBpc0Rpc2FibGVkID0gZmFsc2UsXG4gIGNoaWxkcmVuLFxuICB2YWx1ZSxcbiAgZXJyb3IsXG4gIGhlbHBlclRleHQsXG4gIHNldEZpZWxkVmFsdWUsXG4gIC4uLnJlc3Rcbn0pID0+IHtcbiAgY29uc3QgcXVlc3Rpb25TbHVnID0gdG9TbHVnKHF1ZXN0aW9uLm5hbWUsIHF1ZXN0aW9uLmlkKTtcbiAgY29uc3QgcXVlc3Rpb25MYWJlbCA9IGdldExhYmVsKHF1ZXN0aW9uKTtcbiAgY29uc3QgaXNSZXF1aXJlZCA9IHF1ZXN0aW9uLm1hbmRhdG9yeTtcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGtleT17cXVlc3Rpb25TbHVnfVxuICAgICAgaWQ9e2Ake3F1ZXN0aW9uU2x1Z31fY29udGFpbmVyYH1cbiAgICAgIGNsYXNzTmFtZT17cXVlc3Rpb25DbGFzc05hbWV9XG4gICAgPlxuICAgICAgPEZvcm1Db250cm9sIGZ1bGxXaWR0aCBtYXJnaW49XCJub3JtYWxcIiBlcnJvcj17ZXJyb3J9PlxuICAgICAgICA8Rm9ybUNvbnRyb2xMYWJlbFxuICAgICAgICAgIHN4PXt7IGFsaWduSXRlbXM6IFwiZmxleC1zdGFydFwiIH19XG4gICAgICAgICAgY29udHJvbD17XG4gICAgICAgICAgICA8Q2hlY2tib3hcbiAgICAgICAgICAgICAgbmFtZT17cXVlc3Rpb25TbHVnfVxuICAgICAgICAgICAgICBjaGVja2VkPXshIXZhbHVlfVxuICAgICAgICAgICAgICBsYWJlbD17PFJhd0hUTUw+e3F1ZXN0aW9uTGFiZWx9PC9SYXdIVE1MPn1cbiAgICAgICAgICAgICAgc3g9e3sgbWFyZ2luVG9wOiAtMSB9fVxuICAgICAgICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvanN4LXByb3BzLW5vLXNwcmVhZGluZyAqL1xuICAgICAgICAgICAgICB7Li4ucmVzdH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgfVxuICAgICAgICAgIGxhYmVsPXs8UmF3SFRNTD57cXVlc3Rpb25MYWJlbH08L1Jhd0hUTUw+fVxuICAgICAgICAgIGRpc2FibGVkPXtpc0Rpc2FibGVkfVxuICAgICAgICAgIHJlcXVpcmVkPXtpc1JlcXVpcmVkfVxuICAgICAgICAvPlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgIHtlcnJvciAmJiA8Rm9ybUhlbHBlclRleHQ+e2hlbHBlclRleHQgPz8gXCIgXCJ9PC9Gb3JtSGVscGVyVGV4dD59XG4gICAgICA8L0Zvcm1Db250cm9sPlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuQ2hlY2tib3hRdWVzdGlvbkZpZWxkLnByb3BUeXBlcyA9IHtcbiAgcXVlc3Rpb246IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgdmFsdWU6IFByb3BUeXBlcy5ib29sLFxuICBxdWVzdGlvbkNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgaXNEaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgc2V0RmllbGRWYWx1ZTogUHJvcFR5cGVzLmZ1bmMsXG4gIGVycm9yOiBQcm9wVHlwZXMuYm9vbCxcbiAgaGVscGVyVGV4dDogUHJvcFR5cGVzLnN0cmluZ1xufTtcblxuZXhwb3J0IGRlZmF1bHQgQ2hlY2tib3hRdWVzdGlvbkZpZWxkO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIElucHV0TGFiZWwsIE1lbnVJdGVtLCBTZWxlY3QgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgZ2V0TGFiZWwsIHRvU2x1ZyB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbmNvbnN0IERyb3Bkb3duUXVlc3Rpb25GaWVsZCA9ICh7XG4gIHF1ZXN0aW9uLFxuICBxdWVzdGlvbkNsYXNzTmFtZSA9IFwiXCIsXG4gIGlzRGlzYWJsZWQgPSBmYWxzZSxcbiAgc2V0RmllbGRWYWx1ZSxcbiAgY2hpbGRyZW4sXG4gIGVycm9yLFxuICBoZWxwZXJUZXh0LFxuICAuLi5yZXN0XG59KSA9PiB7XG4gIGNvbnN0IHF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhxdWVzdGlvbi5uYW1lLCBxdWVzdGlvbi5pZCk7XG4gIGNvbnN0IHF1ZXN0aW9uTGFiZWwgPSBnZXRMYWJlbChxdWVzdGlvbik7XG4gIGNvbnN0IGlzUmVxdWlyZWQgPSBxdWVzdGlvbi5tYW5kYXRvcnk7XG5cbiAgY29uc3QgcXVlc3Rpb25PcHRpb25zID1cbiAgICBxdWVzdGlvbi52YWx1ZXM/Lm1hcCgodmFsKSA9PiAoe1xuICAgICAgbGFiZWw6IHZhbC5sYWJlbCxcbiAgICAgIHZhbHVlOiB2YWwuaWRcbiAgICB9KSkgfHwgW107XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBrZXk9e3F1ZXN0aW9uU2x1Z31cbiAgICAgIGlkPXtgJHtxdWVzdGlvblNsdWd9X2NvbnRhaW5lcmB9XG4gICAgICBjbGFzc05hbWU9e3F1ZXN0aW9uQ2xhc3NOYW1lfVxuICAgID5cbiAgICAgIDxGb3JtQ29udHJvbFxuICAgICAgICBkaXNhYmxlZD17aXNEaXNhYmxlZH1cbiAgICAgICAgcmVxdWlyZWQ9e2lzUmVxdWlyZWR9XG4gICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICBtYXJnaW49XCJub3JtYWxcIlxuICAgICAgICBlcnJvcj17ZXJyb3J9XG4gICAgICA+XG4gICAgICAgIDxJbnB1dExhYmVsIGlkPXtgJHtxdWVzdGlvblNsdWd9X2xhYmVsYH0+e3F1ZXN0aW9uTGFiZWx9PC9JbnB1dExhYmVsPlxuICAgICAgICA8U2VsZWN0XG4gICAgICAgICAgbGFiZWxJZD17YCR7cXVlc3Rpb25TbHVnfV9sYWJlbGB9XG4gICAgICAgICAgbmFtZT17cXVlc3Rpb25TbHVnfVxuICAgICAgICAgIGlkPXtxdWVzdGlvblNsdWd9XG4gICAgICAgICAgbGFiZWw9e3F1ZXN0aW9uTGFiZWx9XG4gICAgICAgICAgLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2pzeC1wcm9wcy1uby1zcHJlYWRpbmcgKi9cbiAgICAgICAgICB7Li4ucmVzdH1cbiAgICAgICAgICBzdHlsZT17eyBtYXJnaW5Cb3R0b206IDIwIH19XG4gICAgICAgID5cbiAgICAgICAgICB7cXVlc3Rpb25PcHRpb25zLm1hcCgob3ApID0+IChcbiAgICAgICAgICAgIDxNZW51SXRlbSBrZXk9e29wLmxhYmVsfSB2YWx1ZT17b3AudmFsdWV9PlxuICAgICAgICAgICAgICB7b3AubGFiZWx9XG4gICAgICAgICAgICA8L01lbnVJdGVtPlxuICAgICAgICAgICkpfVxuICAgICAgICA8L1NlbGVjdD5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgPC9Gb3JtQ29udHJvbD5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbkRyb3Bkb3duUXVlc3Rpb25GaWVsZC5wcm9wVHlwZXMgPSB7XG4gIHF1ZXN0aW9uOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBpc0Rpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICBlcnJvcjogUHJvcFR5cGVzLmJvb2wsXG4gIGhlbHBlclRleHQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHNldEZpZWxkVmFsdWU6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBEcm9wZG93blF1ZXN0aW9uRmllbGQ7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQge1xuICBGb3JtQ29udHJvbCxcbiAgRm9ybUNvbnRyb2xMYWJlbCxcbiAgRm9ybUhlbHBlclRleHQsXG4gIEZvcm1MYWJlbCxcbiAgUmFkaW8sXG4gIFJhZGlvR3JvdXBcbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBSYXdIVE1MIGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL2NvbXBvbmVudHMvcmF3LWh0bWxcIjtcbmltcG9ydCB7IGdldExhYmVsLCB0b1NsdWcgfSBmcm9tIFwiLi91dGlsc1wiO1xuXG5jb25zdCBSYWRpb0xpc3RRdWVzdGlvbkZpZWxkID0gKHtcbiAgcXVlc3Rpb24sXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lID0gXCJcIixcbiAgaXNEaXNhYmxlZCA9IGZhbHNlLFxuICBjaGlsZHJlbixcbiAgZXJyb3IsXG4gIGhlbHBlclRleHQsXG4gIHNldEZpZWxkVmFsdWUsXG4gIC4uLnJlc3Rcbn0pID0+IHtcbiAgY29uc3QgcXVlc3Rpb25TbHVnID0gdG9TbHVnKHF1ZXN0aW9uLm5hbWUsIHF1ZXN0aW9uLmlkKTtcbiAgY29uc3QgcXVlc3Rpb25MYWJlbCA9IGdldExhYmVsKHF1ZXN0aW9uKTtcbiAgY29uc3QgaXNSZXF1aXJlZCA9IHF1ZXN0aW9uLm1hbmRhdG9yeTtcblxuICBjb25zdCBxdWVzdGlvbk9wdGlvbnMgPVxuICAgIHF1ZXN0aW9uLnZhbHVlcz8ubWFwKCh2YWwpID0+ICh7XG4gICAgICBsYWJlbDogdmFsLmxhYmVsLFxuICAgICAgdmFsdWU6IHZhbC5pZC50b1N0cmluZygpXG4gICAgfSkpIHx8IFtdO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAga2V5PXtxdWVzdGlvblNsdWd9XG4gICAgICBpZD17YCR7cXVlc3Rpb25TbHVnfV9jb250YWluZXJgfVxuICAgICAgY2xhc3NOYW1lPXtxdWVzdGlvbkNsYXNzTmFtZX1cbiAgICA+XG4gICAgICA8Rm9ybUNvbnRyb2xcbiAgICAgICAgZGlzYWJsZWQ9e2lzRGlzYWJsZWR9XG4gICAgICAgIHJlcXVpcmVkPXtpc1JlcXVpcmVkfVxuICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgbWFyZ2luPVwibm9ybWFsXCJcbiAgICAgICAgZXJyb3I9e2Vycm9yfVxuICAgICAgPlxuICAgICAgICA8Rm9ybUxhYmVsIGlkPXtgJHtxdWVzdGlvblNsdWd9X2xhYmVsYH0+XG4gICAgICAgICAgPFJhd0hUTUw+e3F1ZXN0aW9uTGFiZWx9PC9SYXdIVE1MPlxuICAgICAgICA8L0Zvcm1MYWJlbD5cbiAgICAgICAge2Vycm9yICYmIDxGb3JtSGVscGVyVGV4dD57aGVscGVyVGV4dCA/PyBcIiBcIn08L0Zvcm1IZWxwZXJUZXh0Pn1cbiAgICAgICAgPFJhZGlvR3JvdXBcbiAgICAgICAgICBhcmlhLWxhYmVsbGVkYnk9e2Ake3F1ZXN0aW9uU2x1Z31fbGFiZWxgfVxuICAgICAgICAgIG5hbWU9e3F1ZXN0aW9uU2x1Z31cbiAgICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvanN4LXByb3BzLW5vLXNwcmVhZGluZyAqL1xuICAgICAgICAgIHsuLi5yZXN0fVxuICAgICAgICA+XG4gICAgICAgICAge3F1ZXN0aW9uT3B0aW9ucy5tYXAoKG9wKSA9PiAoXG4gICAgICAgICAgICA8Rm9ybUNvbnRyb2xMYWJlbFxuICAgICAgICAgICAgICBrZXk9e29wLmxhYmVsfVxuICAgICAgICAgICAgICB2YWx1ZT17b3AudmFsdWV9XG4gICAgICAgICAgICAgIGNvbnRyb2w9ezxSYWRpbyAvPn1cbiAgICAgICAgICAgICAgbGFiZWw9e29wLmxhYmVsfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9SYWRpb0dyb3VwPlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L0Zvcm1Db250cm9sPlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuUmFkaW9MaXN0UXVlc3Rpb25GaWVsZC5wcm9wVHlwZXMgPSB7XG4gIHF1ZXN0aW9uOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBpc0Rpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICBlcnJvcjogUHJvcFR5cGVzLmJvb2wsXG4gIGhlbHBlclRleHQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHNldEZpZWxkVmFsdWU6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBSYWRpb0xpc3RRdWVzdGlvbkZpZWxkO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgRm9ybUdyb3VwLCBUZXh0RmllbGQgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgZ2V0TGFiZWwsIHRvU2x1ZyB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbmNvbnN0IFRleHRRdWVzdGlvbkZpZWxkID0gKHtcbiAgcXVlc3Rpb24sXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lID0gXCJcIixcbiAgaXNEaXNhYmxlZCA9IGZhbHNlLFxuICBjaGlsZHJlbixcbiAgc2V0RmllbGRWYWx1ZSxcbiAgLi4ucmVzdFxufSkgPT4ge1xuICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcocXVlc3Rpb24ubmFtZSwgcXVlc3Rpb24uaWQpO1xuICBjb25zdCBxdWVzdGlvbkxhYmVsID0gZ2V0TGFiZWwocXVlc3Rpb24pO1xuICBjb25zdCBpc1JlcXVpcmVkID0gcXVlc3Rpb24ubWFuZGF0b3J5O1xuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAga2V5PXtxdWVzdGlvblNsdWd9XG4gICAgICBpZD17YCR7cXVlc3Rpb25TbHVnfV9jb250YWluZXJgfVxuICAgICAgY2xhc3NOYW1lPXtxdWVzdGlvbkNsYXNzTmFtZX1cbiAgICA+XG4gICAgICA8Rm9ybUdyb3VwPlxuICAgICAgICA8VGV4dEZpZWxkXG4gICAgICAgICAgbmFtZT17cXVlc3Rpb25TbHVnfVxuICAgICAgICAgIGxhYmVsPXtxdWVzdGlvbkxhYmVsfVxuICAgICAgICAgIGRpc2FibGVkPXtpc0Rpc2FibGVkfVxuICAgICAgICAgIHJlcXVpcmVkPXtpc1JlcXVpcmVkfVxuICAgICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICAgIG1hcmdpbj1cIm5vcm1hbFwiXG4gICAgICAgICAgLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2pzeC1wcm9wcy1uby1zcHJlYWRpbmcgKi9cbiAgICAgICAgICB7Li4ucmVzdH1cbiAgICAgICAgLz5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgPC9Gb3JtR3JvdXA+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5UZXh0UXVlc3Rpb25GaWVsZC5wcm9wVHlwZXMgPSB7XG4gIHF1ZXN0aW9uOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBpc0Rpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICBzZXRGaWVsZFZhbHVlOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgVGV4dFF1ZXN0aW9uRmllbGQ7XG4iLCJpbXBvcnQge1xuICBRdWVzdGlvblR5cGVfQ2hlY2tib3gsXG4gIFF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3QsXG4gIFF1ZXN0aW9uVHlwZV9Db21ib0JveCxcbiAgUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveCxcbiAgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdFxufSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XG5cbmV4cG9ydCBjb25zdCBjaGVja1J1bGUgPSAodmFsdWUsIHJ1bGUpID0+IHtcbiAgY29uc3QgdmFsdWVzID0gcnVsZS5hbnN3ZXJfdmFsdWVzO1xuXG4gIGlmICghdmFsdWUpIHJldHVybiBmYWxzZTtcblxuICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICBpZiAoIXZhbHVlLmxlbmd0aCkgcmV0dXJuIGZhbHNlO1xuICAgIGxldCByZXMgPSBydWxlLmFuc3dlcl92YWx1ZXNfb3BlcmF0b3IgPT09IFwiQW5kXCI7XG4gICAgdmFsdWVzLmZvckVhY2goKHYpID0+IHtcbiAgICAgIGlmIChydWxlLmFuc3dlcl92YWx1ZXNfb3BlcmF0b3IgPT09IFwiQW5kXCIpIHtcbiAgICAgICAgcmVzID0gcmVzICYmIHZhbHVlLmluY2x1ZGVzKHYpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gT3JcbiAgICAgICAgcmVzID0gcmVzIHx8IHZhbHVlLmluY2x1ZGVzKHYpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiByZXM7XG4gIH1cbiAgcmV0dXJuIHZhbHVlcy5pbmNsdWRlcyh2YWx1ZT8udG9TdHJpbmcoKSk7XG59O1xuXG5leHBvcnQgY29uc3QgY2hlY2tWaXNpYmlsaXR5ID0gKHJ1bGUsIHJ1bGVSZXN1bHQpID0+IHtcbiAgaWYgKHJ1bGUudmlzaWJpbGl0eSA9PT0gXCJWaXNpYmxlXCIpIHtcbiAgICBpZiAocnVsZS52aXNpYmlsaXR5X2NvbmRpdGlvbiA9PT0gXCJFcXVhbFwiKSB7XG4gICAgICByZXR1cm4gISFydWxlUmVzdWx0O1xuICAgIH1cbiAgICAvLyBOb24gRXF1YWxcbiAgICByZXR1cm4gIXJ1bGVSZXN1bHQ7XG4gIH1cbiAgLy8gbm90IHZpc2libGVcbiAgaWYgKHJ1bGUudmlzaWJpbGl0eV9jb25kaXRpb24gPT09IFwiRXF1YWxcIikge1xuICAgIHJldHVybiAhcnVsZVJlc3VsdDtcbiAgfVxuICByZXR1cm4gISFydWxlUmVzdWx0O1xufTtcblxuZXhwb3J0IGNvbnN0IHRvU2x1ZyA9ICh0ZXh0LCBxdWVzdGlvbklkKSA9PiB7XG4gIGNvbnN0IHRleHRMQyA9IHRleHQudG9Mb3dlckNhc2UoKTtcbiAgcmV0dXJuIGAke3RleHRMQy5yZXBsYWNlKC9bXmEtekEtWjAtOV0rL2csIFwiX1wiKX1fJHtxdWVzdGlvbklkfWA7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0TGFiZWwgPSAocSkgPT5cbiAgLy8gcmVwbGFjZSBsaW5lIGJyZWFrcyBhbmQgcmVtb3ZlIG91dGVyIDxwPlxuICBxPy5sYWJlbD8ucmVwbGFjZSgvXFxuL2csIFwiIFwiKS5yZXBsYWNlKC88cD4oLiopPFxcL3A+L2dpLCBcIiQxXCIpO1xuXG5leHBvcnQgY29uc3QgaXNBbnN3ZXJlZCA9IChhbnN3ZXIpID0+IHtcbiAgaWYgKCFhbnN3ZXIpIHJldHVybiBmYWxzZTtcbiAgLy8gY2hlY2sgdHlwZVxuICBpZiAoQXJyYXkuaXNBcnJheShhbnN3ZXIpKSByZXR1cm4gYW5zd2VyLmxlbmd0aCA+IDA7XG4gIGlmICh0eXBlb2YgYW5zd2VyID09PSBcInN0cmluZ1wiKSByZXR1cm4gYW5zd2VyLmxlbmd0aCA+IDA7XG4gIGlmICh0eXBlb2YgYW5zd2VyID09PSBcIm51bWJlclwiKSByZXR1cm4gYW5zd2VyID4gMDtcbiAgaWYgKHR5cGVvZiBhbnN3ZXIgPT09IFwiYm9vbGVhblwiKSByZXR1cm4gYW5zd2VyO1xuICByZXR1cm4gZmFsc2U7XG59O1xuXG5leHBvcnQgY29uc3QgY2hlY2tJZlZhbHVlTWF0Y2ggPSAoYW5zd2VyLCBjb21wYXJlVmFsKSA9PiB7XG4gIGNvbnN0IGFuc3dlckFycmF5ID0gQXJyYXkuaXNBcnJheShhbnN3ZXIpID8gYW5zd2VyIDogW2Fuc3dlcl07XG5cbiAgcmV0dXJuIGFuc3dlckFycmF5LnNvbWUoKHYpID0+IHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShjb21wYXJlVmFsKSkge1xuICAgICAgcmV0dXJuIGNvbXBhcmVWYWwuaW5jbHVkZXMoYCR7dn1gKTtcbiAgICB9XG4gICAgcmV0dXJuIGAke3Z9YCA9PT0gYCR7Y29tcGFyZVZhbH1gO1xuICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRUeXBlSW5pdGlhbFZhbHVlID0gKHEpID0+IHtcbiAgc3dpdGNoIChxLnR5cGUpIHtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9DaGVja2JveDpcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbkxpc3Q6XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3Q6XG4gICAgICByZXR1cm4gW107XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ291bnRyeUNvbWJvQm94OlxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NvbWJvQm94OlxuICAgICAgcmV0dXJuIFwiXCI7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBcIlwiO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0VHlwZVZhbHVlID0gKGFucywgdHlwZSkgPT4ge1xuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9DaGVja2JveDpcbiAgICAgIHJldHVybiBhbnMgPT09IFwidHJ1ZVwiO1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdDpcbiAgICAgIHJldHVybiBhbnM/LnNwbGl0KFwiLFwiKSB8fCBbXTtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9Db3VudHJ5Q29tYm9Cb3g6XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ29tYm9Cb3g6XG4gICAgICByZXR1cm4gYW5zIHx8IFwiXCI7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0OlxuICAgICAgcmV0dXJuIGFucyB8fCBudWxsO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gYW5zO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgdHJhbnNmb3JtQW53ZXJzRm9ybWF0ID0gKGFuc3dlcnMpID0+IHtcbiAgY29uc3Qge1xuICAgIGF0dGVuZGVlX2VtYWlsLFxuICAgIGF0dGVuZGVlX2ZpcnN0X25hbWUsXG4gICAgYXR0ZW5kZWVfbGFzdF9uYW1lLFxuICAgIGF0dGVuZGVlX2NvbXBhbnksXG4gICAgZGlzY2xhaW1lcl9hY2NlcHRlZCxcbiAgICAuLi5leHRyYV9xdWVzdGlvbnNcbiAgfSA9IGFuc3dlcnM7XG5cbiAgY29uc3QgZm9ybWF0dGVkRVEgPSBPYmplY3QuZW50cmllcyhleHRyYV9xdWVzdGlvbnMpLm1hcCgoW2tleSwgdmFsdWVdKSA9PiAoe1xuICAgIHF1ZXN0aW9uX2lkOiBwYXJzZUludChrZXkuc3BsaXQoXCJfXCIpLnBvcCgpLCAxMCksXG4gICAgYW5zd2VyOiB2YWx1ZT8udG9TdHJpbmcoKSB8fCBudWxsXG4gIH0pKTtcblxuICByZXR1cm4ge1xuICAgIGF0dGVuZGVlX2VtYWlsLFxuICAgIGF0dGVuZGVlX2ZpcnN0X25hbWUsXG4gICAgYXR0ZW5kZWVfbGFzdF9uYW1lLFxuICAgIGF0dGVuZGVlX2NvbXBhbnksXG4gICAgZGlzY2xhaW1lcl9hY2NlcHRlZCxcbiAgICBleHRyYV9xdWVzdGlvbnM6IGZvcm1hdHRlZEVRXG4gIH07XG59O1xuIiwiZXhwb3J0IGNvbnN0IFF1ZXN0aW9uVHlwZV9UZXh0ID0gXCJUZXh0XCI7XG5leHBvcnQgY29uc3QgUXVlc3Rpb25UeXBlX1RleHRBcmVhID0gXCJUZXh0QXJlYVwiO1xuZXhwb3J0IGNvbnN0IFF1ZXN0aW9uVHlwZV9DaGVja2JveCA9IFwiQ2hlY2tCb3hcIjtcbmV4cG9ydCBjb25zdCBRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0ID0gXCJSYWRpb0J1dHRvbkxpc3RcIjtcbmV4cG9ydCBjb25zdCBRdWVzdGlvblR5cGVfQ29tYm9Cb3ggPSBcIkNvbWJvQm94XCI7XG5leHBvcnQgY29uc3QgUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdCA9IFwiQ2hlY2tCb3hMaXN0XCI7XG5leHBvcnQgY29uc3QgUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveCA9IFwiQ291bnRyeUNvbWJvQm94XCI7XG5leHBvcnQgY29uc3QgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uID0gXCJSYWRpb0J1dHRvblwiO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuXG5pbXBvcnQge1xuICB0b1NsdWcsXG4gIGlzQW5zd2VyZWQsXG4gIGNoZWNrVmlzaWJpbGl0eSxcbiAgY2hlY2tSdWxlXG59IGZyb20gXCIuL2NvbXBvbmVudHMvdXRpbHNcIjtcbmltcG9ydCB7XG4gIFF1ZXN0aW9uVHlwZV9DaGVja2JveCxcbiAgUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdCxcbiAgUXVlc3Rpb25UeXBlX0NvbWJvQm94LFxuICBRdWVzdGlvblR5cGVfQ291bnRyeUNvbWJvQm94LFxuICBRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0LFxuICBRdWVzdGlvblR5cGVfVGV4dCxcbiAgUXVlc3Rpb25UeXBlX1RleHRBcmVhXG59IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuaW1wb3J0IFRleHRRdWVzdGlvbkZpZWxkIGZyb20gXCIuL2NvbXBvbmVudHMvVGV4dFF1ZXN0aW9uRmllbGRcIjtcbmltcG9ydCBDaGVja2JveFF1ZXN0aW9uRmllbGQgZnJvbSBcIi4vY29tcG9uZW50cy9DaGVja2JveFF1ZXN0aW9uRmllbGRcIjtcbmltcG9ydCBSYWRpb0xpc3RRdWVzdGlvbkZpZWxkIGZyb20gXCIuL2NvbXBvbmVudHMvUmFkaW9MaXN0UXVlc3Rpb25GaWVsZFwiO1xuaW1wb3J0IENoZWNrYm94TGlzdFF1ZXN0aW9uRmllbGQgZnJvbSBcIi4vY29tcG9uZW50cy9DaGVja2JveExpc3RRdWVzdGlvbkZpZWxkXCI7XG5pbXBvcnQgRHJvcGRvd25RdWVzdGlvbkZpZWxkIGZyb20gXCIuL2NvbXBvbmVudHMvRHJvcGRvd25RdWVzdGlvbkZpZWxkXCI7XG5cbmNvbnN0IGdldFF1ZXN0aW9uRmllbGRDb21wb25lbnQgPSAocXVlc3Rpb25UeXBlKSA9PiB7XG4gIHN3aXRjaCAocXVlc3Rpb25UeXBlKSB7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfVGV4dEFyZWE6XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfVGV4dDoge1xuICAgICAgcmV0dXJuIFRleHRRdWVzdGlvbkZpZWxkO1xuICAgIH1cbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9DaGVja2JveDoge1xuICAgICAgcmV0dXJuIENoZWNrYm94UXVlc3Rpb25GaWVsZDtcbiAgICB9XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0OiB7XG4gICAgICByZXR1cm4gUmFkaW9MaXN0UXVlc3Rpb25GaWVsZDtcbiAgICB9XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ2hlY2tCb3hMaXN0OiB7XG4gICAgICByZXR1cm4gQ2hlY2tib3hMaXN0UXVlc3Rpb25GaWVsZDtcbiAgICB9XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ291bnRyeUNvbWJvQm94OlxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NvbWJvQm94OiB7XG4gICAgICByZXR1cm4gRHJvcGRvd25RdWVzdGlvbkZpZWxkO1xuICAgIH1cbiAgICBkZWZhdWx0OiB7XG4gICAgICByZXR1cm4gUmVhY3QuRnJhZ21lbnQ7XG4gICAgfVxuICB9XG59O1xuXG5jb25zdCBFeHRyYVF1ZXN0aW9uc0ZpZWxkcyA9ICh7XG4gIGV4dHJhUXVlc3Rpb25zLFxuICBvcmlnaW5hbEFuc3dlcnMsXG4gIGNsYXNzTmFtZSA9IFwiZXh0cmFRdWVzdGlvbnNcIixcbiAgcXVlc3Rpb25DbGFzc05hbWUgPSBcImV4dHJhUXVlc3Rpb25cIixcbiAgcmVhZE9ubHkgPSBmYWxzZSxcbiAgYWxsb3dFZGl0ID0gdHJ1ZSxcbiAgZm9ybWlrXG59KSA9PiB7XG4gIGNvbnN0IHJlbmRlclJ1bGUgPSAocnVsZSwgcXVlc3Rpb25TbHVnKSA9PiB7XG4gICAgY29uc3QgcnVsZVJlc3VsdCA9IGNoZWNrUnVsZShmb3JtaWsudmFsdWVzW3F1ZXN0aW9uU2x1Z10sIHJ1bGUpO1xuICAgIGNvbnN0IGlzVmlzaWJsZSA9IGNoZWNrVmlzaWJpbGl0eShydWxlLCBydWxlUmVzdWx0KTtcblxuICAgIGlmIChpc1Zpc2libGUpIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11c2UtYmVmb3JlLWRlZmluZVxuICAgICAgcmV0dXJuIHJlbmRlclF1ZXN0aW9uKHJ1bGUuc3ViX3F1ZXN0aW9uKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfTtcblxuICBjb25zdCByZW5kZXJRdWVzdGlvbiA9IChxKSA9PiB7XG4gICAgY29uc3QgcXVlc3Rpb25TbHVnID0gdG9TbHVnKHEubmFtZSwgcS5pZCk7XG4gICAgLy8gZGlzYWJsZSBmaWVsZCBpZiBlZGl0IGlzbid0IGFsbG93ZWQgYW5kIHRoZSBxdWVzdGlvbnMgaXMgYW5zd2VyZWRcbiAgICBjb25zdCBpc0Rpc2FibGVkID1cbiAgICAgICghYWxsb3dFZGl0ICYmIGlzQW5zd2VyZWQob3JpZ2luYWxBbnN3ZXJzW3F1ZXN0aW9uU2x1Z10pKSB8fCByZWFkT25seTtcbiAgICBjb25zdCBRdWVzdGlvbkZpZWxkQ29tcG9uZW50ID0gZ2V0UXVlc3Rpb25GaWVsZENvbXBvbmVudChxLnR5cGUpO1xuXG4gICAgY29uc3QgZm9ybWlrUHJvcHMgPSB7XG4gICAgICB2YWx1ZTogZm9ybWlrLnZhbHVlc1txdWVzdGlvblNsdWddLFxuICAgICAgb25DaGFuZ2U6IGZvcm1pay5oYW5kbGVDaGFuZ2UsXG4gICAgICBvbkJsdXI6IGZvcm1pay5oYW5kbGVCbHVyLFxuICAgICAgZXJyb3I6XG4gICAgICAgIGZvcm1pay50b3VjaGVkW3F1ZXN0aW9uU2x1Z10gJiYgQm9vbGVhbihmb3JtaWsuZXJyb3JzW3F1ZXN0aW9uU2x1Z10pLFxuICAgICAgaGVscGVyVGV4dDogZm9ybWlrLnRvdWNoZWRbcXVlc3Rpb25TbHVnXSAmJiBmb3JtaWsuZXJyb3JzW3F1ZXN0aW9uU2x1Z10sXG4gICAgICBzZXRGaWVsZFZhbHVlOiBmb3JtaWsuc2V0RmllbGRWYWx1ZVxuICAgIH07XG5cbiAgICByZXR1cm4gKFxuICAgICAgPFF1ZXN0aW9uRmllbGRDb21wb25lbnRcbiAgICAgICAga2V5PXtxdWVzdGlvblNsdWd9XG4gICAgICAgIHF1ZXN0aW9uPXtxfVxuICAgICAgICBxdWVzdGlvbkNsYXNzTmFtZT17cXVlc3Rpb25DbGFzc05hbWV9XG4gICAgICAgIGlzRGlzYWJsZWQ9e2lzRGlzYWJsZWR9XG4gICAgICAgIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nICovXG4gICAgICAgIHsuLi5mb3JtaWtQcm9wc31cbiAgICAgID5cbiAgICAgICAge3Euc3ViX3F1ZXN0aW9uX3J1bGVzPy5tYXAoKHJ1bGUpID0+IHJlbmRlclJ1bGUocnVsZSwgcXVlc3Rpb25TbHVnKSl9XG4gICAgICA8L1F1ZXN0aW9uRmllbGRDb21wb25lbnQ+XG4gICAgKTtcbiAgfTtcblxuICByZXR1cm4gPGRpdiBjbGFzc05hbWU9e2NsYXNzTmFtZX0+e2V4dHJhUXVlc3Rpb25zLm1hcChyZW5kZXJRdWVzdGlvbil9PC9kaXY+O1xufTtcblxuRXh0cmFRdWVzdGlvbnNGaWVsZHMucHJvcFR5cGVzID0ge1xuICBleHRyYVF1ZXN0aW9uczogUHJvcFR5cGVzLmFycmF5LmlzUmVxdWlyZWQsXG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgcXVlc3Rpb25DbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGFsbG93RWRpdDogUHJvcFR5cGVzLmJvb2wsXG4gIHJlYWRPbmx5OiBQcm9wVHlwZXMuYm9vbFxufTtcblxuZXhwb3J0IGRlZmF1bHQgRXh0cmFRdWVzdGlvbnNGaWVsZHM7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZVNlbGVjdG9yLCBzaGFsbG93RXF1YWwgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIEJveCxcbiAgRm9ybUNvbnRyb2xMYWJlbCxcbiAgQ2FyZEhlYWRlcixcbiAgSWNvbkJ1dHRvbixcbiAgQ29sbGFwc2UsXG4gIENhcmRDb250ZW50LFxuICBSYWRpb0dyb3VwLFxuICBSYWRpb1xufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IEV4cGFuZE1vcmVJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0V4cGFuZE1vcmVcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB7IEZJTFRFUl9WQVJfVElDS0VUX0FTU0lHTkVEIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcblxuY29uc3QgQXNzaWduZWRGaWx0ZXIgPSAoeyBvbkZpbHRlciB9KSA9PiB7XG4gIGNvbnN0IHtcbiAgICBmaWx0ZXI6IHsgRklMVEVSX1ZBUl9USUNLRVRfQVNTSUdORUQ6IGZpbHRlclZhbHVlcyB9XG4gIH0gPSB1c2VTZWxlY3Rvcigoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlIHx8IHt9LCBzaGFsbG93RXF1YWwpO1xuXG4gIGNvbnN0IFtpc0V4cGFuZGVkLCBzZXRJc0V4cGFuZGVkXSA9IHVzZVN0YXRlKCEhZmlsdGVyVmFsdWVzKTtcblxuICBjb25zdCBhc3NpZ25lZFZhbHVlcyA9IFtcbiAgICB7IHZhbHVlOiBcIk1lXCIsIGxhYmVsOiBcIk1lXCIgfSxcbiAgICB7IHZhbHVlOiBcIlNvbWVvbmVFbHNlXCIsIGxhYmVsOiBcIlNvbWVvbmUgRWxzZVwiIH0sXG4gICAgeyB2YWx1ZTogXCJOb2JvZHlcIiwgbGFiZWw6IFwiTm9ib2R5XCIgfVxuICBdO1xuXG4gIGNvbnN0IGhhbmRsZUZpbHRlckNoYW5nZSA9IChldiwgdmFsdWUpID0+IHtcbiAgICBjb25zdCBuZXdGaWx0ZXIgPSB2YWx1ZTtcbiAgICBvbkZpbHRlcih7XG4gICAgICBbRklMVEVSX1ZBUl9USUNLRVRfQVNTSUdORURdOiBuZXdGaWx0ZXJcbiAgICB9KTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxCb3g+XG4gICAgICA8Q2FyZEhlYWRlclxuICAgICAgICB0aXRsZT1cIkFzc2lnbmVkXCJcbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGl0bGVXcmFwcGVyfVxuICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRJc0V4cGFuZGVkKCFpc0V4cGFuZGVkKX1cbiAgICAgICAgYWN0aW9uPXtcbiAgICAgICAgICA8SWNvbkJ1dHRvbiBhcmlhLWxhYmVsPVwiZXhwYW5kXCIgZGlzYWJsZVJpcHBsZT5cbiAgICAgICAgICAgIDxFeHBhbmRNb3JlSWNvblxuICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogaXNFeHBhbmRlZCA/IFwicm90YXRlKDE4MGRlZylcIiA6IFwicm90YXRlKDBkZWcpXCIsXG4gICAgICAgICAgICAgICAgdHJhbnNpdGlvbjogXCJ0cmFuc2Zvcm0gMC4zc1wiXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgfVxuICAgICAgLz5cbiAgICAgIDxDb2xsYXBzZSBpbj17aXNFeHBhbmRlZH0gdGltZW91dD1cImF1dG9cIiB1bm1vdW50T25FeGl0PlxuICAgICAgICA8Q2FyZENvbnRlbnRcbiAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgcHk6IDAsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IFwiIzAwMDAwMDBBXCIsXG4gICAgICAgICAgICBcIiY6bGFzdC1jaGlsZFwiOiB7XG4gICAgICAgICAgICAgIHBiOiAwXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIDxSYWRpb0dyb3VwIHZhbHVlPXtmaWx0ZXJWYWx1ZXN9IG9uQ2hhbmdlPXtoYW5kbGVGaWx0ZXJDaGFuZ2V9PlxuICAgICAgICAgICAge2Fzc2lnbmVkVmFsdWVzLm1hcCgoYXNzaWduZWQpID0+IChcbiAgICAgICAgICAgICAgPEJveFxuICAgICAgICAgICAgICAgIHN4PXt7IHB5OiAxIH19XG4gICAgICAgICAgICAgICAga2V5PXtgZmlsdGVyLWJhZGdlLWZlYXR1cmUtJHthc3NpZ25lZC5sYWJlbH19YH1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxGb3JtQ29udHJvbExhYmVsXG4gICAgICAgICAgICAgICAgICBjb250cm9sPXtcbiAgICAgICAgICAgICAgICAgICAgPFJhZGlvXG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2Fzc2lnbmVkLnZhbHVlfVxuICAgICAgICAgICAgICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICAgICAgICAgICAgICBcIiYgLk11aVN2Z0ljb24tcm9vdFwiOiB7IGZvbnRTaXplOiAxOCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgXCImLk11aS1jaGVja2VkXCI6IHsgY29sb3I6IFwiIzIxOTZGM1wiIH1cbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgbGFiZWw9e2Fzc2lnbmVkLmxhYmVsfVxuICAgICAgICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgICAgICAgXCImIC5NdWlGb3JtQ29udHJvbExhYmVsLWxhYmVsXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgICBmb250U2l6ZTogXCIxZW1cIlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAgKSl9XG4gICAgICAgICAgPC9SYWRpb0dyb3VwPlxuICAgICAgICA8L0NhcmRDb250ZW50PlxuICAgICAgPC9Db2xsYXBzZT5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbkFzc2lnbmVkRmlsdGVyLnByb3BUeXBlcyA9IHtcbiAgb25GaWx0ZXI6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBBc3NpZ25lZEZpbHRlcjtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VTZWxlY3Rvciwgc2hhbGxvd0VxdWFsIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQge1xuICBCb3gsXG4gIEZvcm1Db250cm9sTGFiZWwsXG4gIENoZWNrYm94LFxuICBDYXJkSGVhZGVyLFxuICBJY29uQnV0dG9uLFxuICBDb2xsYXBzZSxcbiAgQ2FyZENvbnRlbnRcbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBFeHBhbmRNb3JlSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9FeHBhbmRNb3JlXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgeyBGSUxURVJfVkFSX0JBREdFX0ZFQVRVUkUgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuXG5jb25zdCBCYWRnZUZlYXR1cmVGaWx0ZXIgPSAoeyBvbkZpbHRlciB9KSA9PiB7XG4gIGNvbnN0IHtcbiAgICBzdW1taXQ6IHsgYmFkZ2VfZmVhdHVyZXNfdHlwZXMgfSxcbiAgICBmaWx0ZXI6IHsgRklMVEVSX1ZBUl9CQURHRV9GRUFUVVJFOiBmaWx0ZXJWYWx1ZXMgfVxuICB9ID0gdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSB8fCB7fSwgc2hhbGxvd0VxdWFsKTtcblxuICBjb25zdCBbaXNFeHBhbmRlZCwgc2V0SXNFeHBhbmRlZF0gPSB1c2VTdGF0ZSghIWZpbHRlclZhbHVlcy5sZW5ndGgpO1xuXG4gIGNvbnN0IGhhbmRsZUZpbHRlckNoYW5nZSA9ICh2YWx1ZSkgPT4ge1xuICAgIGNvbnN0IG5ld0ZpbHRlcnMgPSBmaWx0ZXJWYWx1ZXM/LmluY2x1ZGVzKHZhbHVlKVxuICAgICAgPyBmaWx0ZXJWYWx1ZXMuZmlsdGVyKChmKSA9PiBmICE9PSB2YWx1ZSlcbiAgICAgIDogWy4uLmZpbHRlclZhbHVlcywgdmFsdWVdO1xuICAgIG9uRmlsdGVyKHtcbiAgICAgIFtGSUxURVJfVkFSX0JBREdFX0ZFQVRVUkVdOiBuZXdGaWx0ZXJzXG4gICAgfSk7XG4gIH07XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRJc0V4cGFuZGVkKCEhZmlsdGVyVmFsdWVzLmxlbmd0aCk7XG4gIH0sIFtmaWx0ZXJWYWx1ZXNdKTtcblxuICBpZiAoIWJhZGdlX2ZlYXR1cmVzX3R5cGVzIHx8IGJhZGdlX2ZlYXR1cmVzX3R5cGVzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIG51bGw7XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94PlxuICAgICAgPENhcmRIZWFkZXJcbiAgICAgICAgdGl0bGU9XCJCYWRnZSBGZWF0dXJlXCJcbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGl0bGVXcmFwcGVyfVxuICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRJc0V4cGFuZGVkKCFpc0V4cGFuZGVkKX1cbiAgICAgICAgYWN0aW9uPXtcbiAgICAgICAgICA8SWNvbkJ1dHRvbiBhcmlhLWxhYmVsPVwiZXhwYW5kXCIgZGlzYWJsZVJpcHBsZT5cbiAgICAgICAgICAgIDxFeHBhbmRNb3JlSWNvblxuICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogaXNFeHBhbmRlZCA/IFwicm90YXRlKDE4MGRlZylcIiA6IFwicm90YXRlKDBkZWcpXCIsXG4gICAgICAgICAgICAgICAgdHJhbnNpdGlvbjogXCJ0cmFuc2Zvcm0gMC4zc1wiXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgfVxuICAgICAgLz5cbiAgICAgIDxDb2xsYXBzZSBpbj17aXNFeHBhbmRlZH0gdGltZW91dD1cImF1dG9cIiB1bm1vdW50T25FeGl0PlxuICAgICAgICA8Q2FyZENvbnRlbnRcbiAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgcHk6IDAsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IFwiIzAwMDAwMDBBXCIsXG4gICAgICAgICAgICBcIiY6bGFzdC1jaGlsZFwiOiB7XG4gICAgICAgICAgICAgIHBiOiAwXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIHtiYWRnZV9mZWF0dXJlc190eXBlcy5tYXAoKGJmKSA9PiAoXG4gICAgICAgICAgICA8Qm94IHN4PXt7IHB5OiAxIH19IGtleT17YGZpbHRlci1iYWRnZS1mZWF0dXJlLSR7YmYubmFtZX19YH0+XG4gICAgICAgICAgICAgIDxGb3JtQ29udHJvbExhYmVsXG4gICAgICAgICAgICAgICAgY29udHJvbD17XG4gICAgICAgICAgICAgICAgICA8Q2hlY2tib3hcbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eygpID0+IGhhbmRsZUZpbHRlckNoYW5nZShiZi5pZCl9XG4gICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e2ZpbHRlclZhbHVlcy5pbmNsdWRlcyhiZi5pZCl9XG4gICAgICAgICAgICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICAgICAgICAgICAgXCImIC5NdWlTdmdJY29uLXJvb3RcIjogeyBmb250U2l6ZTogMTggfSxcbiAgICAgICAgICAgICAgICAgICAgICBcIiYuTXVpLWNoZWNrZWRcIjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IFwiIzIxOTZGM1wiXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbGFiZWw9e2JmLm5hbWV9XG4gICAgICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgICAgIFwiJiAuTXVpRm9ybUNvbnRyb2xMYWJlbC1sYWJlbFwiOiB7XG4gICAgICAgICAgICAgICAgICAgIGZvbnRTaXplOiBcIjFlbVwiXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICkpfVxuICAgICAgICA8L0NhcmRDb250ZW50PlxuICAgICAgPC9Db2xsYXBzZT5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbkJhZGdlRmVhdHVyZUZpbHRlci5wcm9wVHlwZXMgPSB7XG4gIG9uRmlsdGVyOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgQmFkZ2VGZWF0dXJlRmlsdGVyO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlLCB1c2VSZWYsIHVzZUVmZmVjdCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IFN0YWNrIGZyb20gXCJAbXVpL21hdGVyaWFsL1N0YWNrXCI7XG5pbXBvcnQgRmlsdGVyTGlzdEljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRmlsdGVyTGlzdFwiO1xuaW1wb3J0IHtcbiAgQmFkZ2UsXG4gIEJveCxcbiAgQnV0dG9uLFxuICBDYXJkLFxuICBDYXJkSGVhZGVyLFxuICBEaXZpZGVyLFxuICBQYXBlclxufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgY29ubmVjdCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IEJhZGdlRmVhdHVyZUZpbHRlciBmcm9tIFwiLi9CYWRnZUZlYXR1cmVGaWx0ZXJcIjtcbmltcG9ydCB7XG4gIEZJTFRFUl9WQVJfQkFER0VfRkVBVFVSRSxcbiAgRklMVEVSX1ZBUl9GUkVFX1BBSUQsXG4gIEZJTFRFUl9WQVJfT1dORVJfU1RBVFVTLFxuICBGSUxURVJfVkFSX1BST01PQ09ERSxcbiAgRklMVEVSX1ZBUl9USUNLRVRfQVNTSUdORUQsXG4gIEZJTFRFUl9WQVJfVElDS0VUX1RZUEVcbn0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcbmltcG9ydCBUaWNrZXRUeXBlRmlsdGVyIGZyb20gXCIuL1RpY2tldFR5cGVGaWx0ZXJcIjtcbmltcG9ydCBBc3NpZ25lZEZpbHRlciBmcm9tIFwiLi9Bc3NpZ25lZEZpbHRlclwiO1xuaW1wb3J0IFN0YXR1c0ZpbHRlciBmcm9tIFwiLi9TdGF0dXNGaWx0ZXJcIjtcbmltcG9ydCBGcmVlUGFpZEZpbHRlciBmcm9tIFwiLi9GcmVlUGFpZEZpbHRlclwiO1xuaW1wb3J0IFByb21vQ29kZUZpbHRlciBmcm9tIFwiLi9Qcm9tb0NvZGVGaWx0ZXJcIjtcblxuY29uc3QgRmlsdGVyID0gKHsgb25GaWx0ZXIsIG9uUmVzZXQsIGZpbHRlciwgYWN0aXZlRmlsdGVyc0NvdW50IH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBbc2hvd0ZpbHRlckxpc3QsIHNldFNob3dGaWx0ZXJMaXN0XSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW3Nob3dEYXRlcGlja2VyLCBzZXRTaG93RGF0ZXBpY2tlcl0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IGZpbHRlclJlZiA9IHVzZVJlZihudWxsKTtcbiAgY29uc3QgaGFuZGxlRmlsdGVyQ2xpY2tPdXRzaWRlID0gKGV2ZW50KSA9PiB7XG4gICAgaWYgKGZpbHRlclJlZi5jdXJyZW50ICYmICFmaWx0ZXJSZWYuY3VycmVudC5jb250YWlucyhldmVudC50YXJnZXQpKSB7XG4gICAgICBpZiAoc2hvd0ZpbHRlckxpc3QpIHtcbiAgICAgICAgc2V0U2hvd0ZpbHRlckxpc3QoZmFsc2UpO1xuICAgICAgICBzZXRTaG93RGF0ZXBpY2tlcihmYWxzZSk7XG4gICAgICB9XG4gICAgfVxuICB9O1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBoYW5kbGVGaWx0ZXJDbGlja091dHNpZGUsIGZhbHNlKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGhhbmRsZUZpbHRlckNsaWNrT3V0c2lkZSwgZmFsc2UpO1xuICAgIH07XG4gIH0sIFtzaG93RmlsdGVyTGlzdF0pO1xuXG4gIGNvbnN0IHRvZ2dsZSA9ICgpID0+IHtcbiAgICBzZXRTaG93RmlsdGVyTGlzdCghc2hvd0ZpbHRlckxpc3QpO1xuICAgIHNldFNob3dEYXRlcGlja2VyKCFzaG93RGF0ZXBpY2tlcik7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlRmlsdGVyUmVzZXQgPSAoKSA9PiB7XG4gICAgb25SZXNldCgpO1xuICAgIHRvZ2dsZSgpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5maWx0ZXJDb250YWluZXJ9IHJlZj17ZmlsdGVyUmVmfT5cbiAgICAgIDxTdGFja1xuICAgICAgICBhbGlnbkl0ZW1zPVwiY2VudGVyXCJcbiAgICAgICAgZGlyZWN0aW9uPVwicm93XCJcbiAgICAgICAgc3g9e3sgcHQ6IDIsIHBiOiAyIH19XG4gICAgICAgIG9uQ2xpY2s9e3RvZ2dsZX1cbiAgICAgID5cbiAgICAgICAgPEJhZGdlIGJhZGdlQ29udGVudD17YWN0aXZlRmlsdGVyc0NvdW50fSBjb2xvcj1cInByaW1hcnlcIiBzeD17eyBtcjogMSB9fT5cbiAgICAgICAgICA8RmlsdGVyTGlzdEljb24gZm9udFNpemU9XCJsYXJnZVwiIGNsYXNzTmFtZT17c3R5bGVzLmZpbHRlckljb259IC8+XG4gICAgICAgIDwvQmFkZ2U+XG4gICAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzLmZpbHRlckxhYmVsfT57dChcImZpbHRlci5maWx0ZXJcIil9PC9zcGFuPlxuICAgICAgPC9TdGFjaz5cbiAgICAgIDxCb3hcbiAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuZmlsdGVyTGlzdENvbnRhaW5lcn0gJHtzdHlsZXMuY29udGFpbmVyfSAke1xuICAgICAgICAgIHNob3dGaWx0ZXJMaXN0ID8gc3R5bGVzLnNob3dGaWx0ZXJMaXN0IDogXCJcIlxuICAgICAgICB9YH1cbiAgICAgID5cbiAgICAgICAgPFBhcGVyIGVsZXZhdGlvbj17OH0gY2xhc3NOYW1lPXtzdHlsZXMuZmlsdGVyQ2hlY2tib3hDb250YWluZXJ9PlxuICAgICAgICAgIDxDYXJkIHZhcmlhbnQ9XCJvdXRsaW5lZFwiPlxuICAgICAgICAgICAgPENhcmRIZWFkZXJcbiAgICAgICAgICAgICAgdGl0bGU9XCJGaWx0ZXJzXCJcbiAgICAgICAgICAgICAgYWN0aW9uPXtcbiAgICAgICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgICAgICBkaXNhYmxlUmlwcGxlXG4gICAgICAgICAgICAgICAgICB2YXJpYW50PVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVGaWx0ZXJSZXNldH1cbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNsZWFuQnV0dG9ufVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIHt0KFwiZmlsdGVyLmNsZWFyXCIpfVxuICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPERpdmlkZXIgLz5cbiAgICAgICAgICAgIDxCYWRnZUZlYXR1cmVGaWx0ZXJcbiAgICAgICAgICAgICAgdmFsdWVzPXtmaWx0ZXJbRklMVEVSX1ZBUl9CQURHRV9GRUFUVVJFXX1cbiAgICAgICAgICAgICAgb25GaWx0ZXI9eyhuZXdGaWx0ZXIpID0+IG9uRmlsdGVyKG5ld0ZpbHRlcil9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPEFzc2lnbmVkRmlsdGVyXG4gICAgICAgICAgICAgIHZhbHVlcz17ZmlsdGVyW0ZJTFRFUl9WQVJfVElDS0VUX0FTU0lHTkVEXX1cbiAgICAgICAgICAgICAgb25GaWx0ZXI9eyhuZXdGaWx0ZXIpID0+IG9uRmlsdGVyKG5ld0ZpbHRlcil9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPFN0YXR1c0ZpbHRlclxuICAgICAgICAgICAgICB2YWx1ZXM9e2ZpbHRlcltGSUxURVJfVkFSX09XTkVSX1NUQVRVU119XG4gICAgICAgICAgICAgIG9uRmlsdGVyPXsobmV3RmlsdGVyKSA9PiBvbkZpbHRlcihuZXdGaWx0ZXIpfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxUaWNrZXRUeXBlRmlsdGVyXG4gICAgICAgICAgICAgIHZhbHVlcz17ZmlsdGVyW0ZJTFRFUl9WQVJfVElDS0VUX1RZUEVdfVxuICAgICAgICAgICAgICBvbkZpbHRlcj17KG5ld0ZpbHRlcikgPT4gb25GaWx0ZXIobmV3RmlsdGVyKX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8UHJvbW9Db2RlRmlsdGVyXG4gICAgICAgICAgICAgIHZhbHVlcz17ZmlsdGVyW0ZJTFRFUl9WQVJfUFJPTU9DT0RFXX1cbiAgICAgICAgICAgICAgb25GaWx0ZXI9eyhuZXdGaWx0ZXIpID0+IG9uRmlsdGVyKG5ld0ZpbHRlcil9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPEZyZWVQYWlkRmlsdGVyXG4gICAgICAgICAgICAgIHZhbHVlcz17ZmlsdGVyW0ZJTFRFUl9WQVJfRlJFRV9QQUlEXX1cbiAgICAgICAgICAgICAgb25GaWx0ZXI9eyhuZXdGaWx0ZXIpID0+IG9uRmlsdGVyKG5ld0ZpbHRlcil9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvQ2FyZD5cbiAgICAgICAgPC9QYXBlcj5cbiAgICAgIDwvQm94PlxuICAgIDwvQm94PlxuICApO1xufTtcblxuRmlsdGVyLnByb3BUeXBlcyA9IHtcbiAgb25GaWx0ZXI6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5jb25zdCBtYXBTdGF0ZVRvUHJvcHMgPSAoeyB3aWRnZXRTdGF0ZSB9KSA9PiAoe1xuICBzb3J0OiB3aWRnZXRTdGF0ZS5zb3J0LFxuICBmaWx0ZXI6IHdpZGdldFN0YXRlLmZpbHRlcixcbiAgYWN0aXZlRmlsdGVyc0NvdW50OiB3aWRnZXRTdGF0ZS5hY3RpdmVGaWx0ZXJzQ291bnRcbn0pO1xuXG5leHBvcnQgZGVmYXVsdCBjb25uZWN0KG1hcFN0YXRlVG9Qcm9wcywge30pKEZpbHRlcik7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZVNlbGVjdG9yLCBzaGFsbG93RXF1YWwgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIEJveCxcbiAgRm9ybUNvbnRyb2xMYWJlbCxcbiAgQ2FyZEhlYWRlcixcbiAgSWNvbkJ1dHRvbixcbiAgQ29sbGFwc2UsXG4gIENhcmRDb250ZW50LFxuICBSYWRpb0dyb3VwLFxuICBSYWRpb1xufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IEV4cGFuZE1vcmVJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0V4cGFuZE1vcmVcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB7IEZJTFRFUl9WQVJfRlJFRV9QQUlEIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcblxuY29uc3QgRnJlZVBhaWRGaWx0ZXIgPSAoeyBvbkZpbHRlciB9KSA9PiB7XG4gIGNvbnN0IHtcbiAgICBmaWx0ZXI6IHsgRklMVEVSX1ZBUl9GUkVFX1BBSUQ6IGZpbHRlclZhbHVlcyB9XG4gIH0gPSB1c2VTZWxlY3Rvcigoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlIHx8IHt9LCBzaGFsbG93RXF1YWwpO1xuXG4gIGNvbnN0IFtpc0V4cGFuZGVkLCBzZXRJc0V4cGFuZGVkXSA9IHVzZVN0YXRlKCEhZmlsdGVyVmFsdWVzKTtcblxuICBjb25zdCBhc3NpZ25lZFZhbHVlcyA9IFtcbiAgICB7IHZhbHVlOiBcIkZyZWVcIiwgbGFiZWw6IFwiRnJlZVwiIH0sXG4gICAgeyB2YWx1ZTogXCJQYWlkXCIsIGxhYmVsOiBcIlBhaWRcIiB9XG4gIF07XG5cbiAgY29uc3QgaGFuZGxlRmlsdGVyQ2hhbmdlID0gKGV2LCB2YWx1ZSkgPT4ge1xuICAgIGNvbnN0IG5ld0ZpbHRlciA9IHZhbHVlO1xuICAgIG9uRmlsdGVyKHtcbiAgICAgIFtGSUxURVJfVkFSX0ZSRUVfUEFJRF06IG5ld0ZpbHRlclxuICAgIH0pO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPEJveD5cbiAgICAgIDxDYXJkSGVhZGVyXG4gICAgICAgIHRpdGxlPVwiRnJlZSAvIFBhaWRcIlxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aXRsZVdyYXBwZXJ9XG4gICAgICAgIG9uQ2xpY2s9eygpID0+IHNldElzRXhwYW5kZWQoIWlzRXhwYW5kZWQpfVxuICAgICAgICBhY3Rpb249e1xuICAgICAgICAgIDxJY29uQnV0dG9uIGFyaWEtbGFiZWw9XCJleHBhbmRcIiBkaXNhYmxlUmlwcGxlPlxuICAgICAgICAgICAgPEV4cGFuZE1vcmVJY29uXG4gICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiBpc0V4cGFuZGVkID8gXCJyb3RhdGUoMTgwZGVnKVwiIDogXCJyb3RhdGUoMGRlZylcIixcbiAgICAgICAgICAgICAgICB0cmFuc2l0aW9uOiBcInRyYW5zZm9ybSAwLjNzXCJcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICB9XG4gICAgICAvPlxuICAgICAgPENvbGxhcHNlIGluPXtpc0V4cGFuZGVkfSB0aW1lb3V0PVwiYXV0b1wiIHVubW91bnRPbkV4aXQ+XG4gICAgICAgIDxDYXJkQ29udGVudFxuICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICBweTogMCxcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogXCIjMDAwMDAwMEFcIixcbiAgICAgICAgICAgIFwiJjpsYXN0LWNoaWxkXCI6IHtcbiAgICAgICAgICAgICAgcGI6IDBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9fVxuICAgICAgICA+XG4gICAgICAgICAgPFJhZGlvR3JvdXAgdmFsdWU9e2ZpbHRlclZhbHVlc30gb25DaGFuZ2U9e2hhbmRsZUZpbHRlckNoYW5nZX0+XG4gICAgICAgICAgICB7YXNzaWduZWRWYWx1ZXMubWFwKChhc3NpZ25lZCkgPT4gKFxuICAgICAgICAgICAgICA8Qm94XG4gICAgICAgICAgICAgICAgc3g9e3sgcHk6IDEgfX1cbiAgICAgICAgICAgICAgICBrZXk9e2BmaWx0ZXItYmFkZ2UtZmVhdHVyZS0ke2Fzc2lnbmVkLmxhYmVsfX1gfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPEZvcm1Db250cm9sTGFiZWxcbiAgICAgICAgICAgICAgICAgIGNvbnRyb2w9e1xuICAgICAgICAgICAgICAgICAgICA8UmFkaW9cbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17YXNzaWduZWQudmFsdWV9XG4gICAgICAgICAgICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiJiAuTXVpU3ZnSWNvbi1yb290XCI6IHsgZm9udFNpemU6IDE4IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBcIiYuTXVpLWNoZWNrZWRcIjogeyBjb2xvcjogXCIjMjE5NkYzXCIgfVxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBsYWJlbD17YXNzaWduZWQubGFiZWx9XG4gICAgICAgICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICAgICAgICBcIiYgLk11aUZvcm1Db250cm9sTGFiZWwtbGFiZWxcIjoge1xuICAgICAgICAgICAgICAgICAgICAgIGZvbnRTaXplOiBcIjFlbVwiXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgICApKX1cbiAgICAgICAgICA8L1JhZGlvR3JvdXA+XG4gICAgICAgIDwvQ2FyZENvbnRlbnQ+XG4gICAgICA8L0NvbGxhcHNlPlxuICAgIDwvQm94PlxuICApO1xufTtcblxuRnJlZVBhaWRGaWx0ZXIucHJvcFR5cGVzID0ge1xuICBvbkZpbHRlcjogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEZyZWVQYWlkRmlsdGVyO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCwgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlU2VsZWN0b3IsIHNoYWxsb3dFcXVhbCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHtcbiAgQm94LFxuICBDYXJkSGVhZGVyLFxuICBJY29uQnV0dG9uLFxuICBDb2xsYXBzZSxcbiAgQ2FyZENvbnRlbnQsXG4gIFRleHRGaWVsZFxufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IEV4cGFuZE1vcmVJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0V4cGFuZE1vcmVcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB7IEZJTFRFUl9WQVJfUFJPTU9DT0RFIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcblxuY29uc3QgUHJvbW9Db2RlRmlsdGVyID0gKHsgb25GaWx0ZXIgfSkgPT4ge1xuICBjb25zdCB7XG4gICAgZmlsdGVyOiB7IEZJTFRFUl9WQVJfUFJPTU9DT0RFOiBmaWx0ZXJWYWx1ZXMgfVxuICB9ID0gdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSB8fCB7fSwgc2hhbGxvd0VxdWFsKTtcblxuICBjb25zdCBbaXNFeHBhbmRlZCwgc2V0SXNFeHBhbmRlZF0gPSB1c2VTdGF0ZSghIWZpbHRlclZhbHVlcyk7XG4gIGNvbnN0IFtwcm9tb0NvZGUsIHNldFByb21vQ29kZV0gPSB1c2VTdGF0ZShmaWx0ZXJWYWx1ZXMgfHwgXCJcIik7XG5cbiAgY29uc3QgZGVib3VuY2VUaW1lciA9IHVzZVJlZihudWxsKTtcbiAgY29uc3QgREVCT1VOQ0VfVkFMVUUgPSA1MDA7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRQcm9tb0NvZGUoZmlsdGVyVmFsdWVzIHx8IFwiXCIpO1xuICAgIHNldElzRXhwYW5kZWQoISFmaWx0ZXJWYWx1ZXMpO1xuICB9LCBbZmlsdGVyVmFsdWVzXSk7XG5cbiAgY29uc3QgaGFuZGxlRmlsdGVyQ2hhbmdlID0gKGV2KSA9PiB7XG4gICAgY29uc3QgbmV3UHJvbW9Db2RlID0gZXYudGFyZ2V0LnZhbHVlO1xuICAgIC8vIHVwZGF0ZSBsb2NhbCBzdGF0ZSBzbyB0aGUgaW5wdXQgcmVmbGVjdHMgY2hhbmdlc1xuICAgIHNldFByb21vQ29kZShuZXdQcm9tb0NvZGUpO1xuXG4gICAgLy8gcmVtb3ZlIGN1cnJlbnQgZGVib3VuY2VcbiAgICBpZiAoZGVib3VuY2VUaW1lci5jdXJyZW50KSB7XG4gICAgICBjbGVhclRpbWVvdXQoZGVib3VuY2VUaW1lci5jdXJyZW50KTtcbiAgICB9XG5cbiAgICAvLyBkZWJvdW5jZSBzZXQgdG8gNTAwIG1zXG4gICAgZGVib3VuY2VUaW1lci5jdXJyZW50ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBvbkZpbHRlcih7XG4gICAgICAgIFtGSUxURVJfVkFSX1BST01PQ09ERV06IG5ld1Byb21vQ29kZVxuICAgICAgfSk7XG4gICAgfSwgREVCT1VOQ0VfVkFMVUUpO1xuICB9O1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgLy8gcmVtb3ZlIGRlYm91bmNlIG9uIHJlbG9hZFxuICAgIGlmIChkZWJvdW5jZVRpbWVyLmN1cnJlbnQpIHtcbiAgICAgIGNsZWFyVGltZW91dChkZWJvdW5jZVRpbWVyLmN1cnJlbnQpO1xuICAgIH1cbiAgfSwgW10pO1xuXG4gIHJldHVybiAoXG4gICAgPEJveD5cbiAgICAgIDxDYXJkSGVhZGVyXG4gICAgICAgIHRpdGxlPVwiUHJvbW8gQ29kZVwiXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnRpdGxlV3JhcHBlcn1cbiAgICAgICAgb25DbGljaz17KCkgPT4gc2V0SXNFeHBhbmRlZCghaXNFeHBhbmRlZCl9XG4gICAgICAgIGFjdGlvbj17XG4gICAgICAgICAgPEljb25CdXR0b24gYXJpYS1sYWJlbD1cImV4cGFuZFwiIGRpc2FibGVSaXBwbGU+XG4gICAgICAgICAgICA8RXhwYW5kTW9yZUljb25cbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IGlzRXhwYW5kZWQgPyBcInJvdGF0ZSgxODBkZWcpXCIgOiBcInJvdGF0ZSgwZGVnKVwiLFxuICAgICAgICAgICAgICAgIHRyYW5zaXRpb246IFwidHJhbnNmb3JtIDAuM3NcIlxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgIH1cbiAgICAgIC8+XG4gICAgICA8Q29sbGFwc2UgaW49e2lzRXhwYW5kZWR9IHRpbWVvdXQ9XCJhdXRvXCIgdW5tb3VudE9uRXhpdD5cbiAgICAgICAgPENhcmRDb250ZW50XG4gICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogXCIjMDAwMDAwMEFcIixcbiAgICAgICAgICAgIFwiJjpsYXN0LWNoaWxkXCI6IHtcbiAgICAgICAgICAgICAgcHk6IDFcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9fVxuICAgICAgICA+XG4gICAgICAgICAgPFRleHRGaWVsZFxuICAgICAgICAgICAgdmFyaWFudD1cIm91dGxpbmVkXCJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiRW50ZXIgcHJvbW8gY29kZVwiXG4gICAgICAgICAgICB2YWx1ZT17cHJvbW9Db2RlfVxuICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUZpbHRlckNoYW5nZX1cbiAgICAgICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICAgIC8+XG4gICAgICAgIDwvQ2FyZENvbnRlbnQ+XG4gICAgICA8L0NvbGxhcHNlPlxuICAgIDwvQm94PlxuICApO1xufTtcblxuUHJvbW9Db2RlRmlsdGVyLnByb3BUeXBlcyA9IHtcbiAgb25GaWx0ZXI6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBQcm9tb0NvZGVGaWx0ZXI7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgc2hhbGxvd0VxdWFsLCB1c2VTZWxlY3RvciB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgc3R5bGVkIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWwvc3R5bGVzXCI7XG5pbXBvcnQgU2VhcmNoSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9TZWFyY2hcIjtcbmltcG9ydCBDbG9zZUljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ2xvc2VcIjtcbmltcG9ydCBJbnB1dEJhc2UgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvSW5wdXRCYXNlXCI7XG5pbXBvcnQgeyBCb3ggfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVIgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuXG5jb25zdCBTZWFyY2hDb250YWluZXIgPSBzdHlsZWQoXCJkaXZcIikoKCkgPT4gKHtcbiAgcG9zaXRpb246IFwicmVsYXRpdmVcIixcbiAgbWFyZ2luUmlnaHQ6IFwiMFwiLFxuICBtYXJnaW5MZWZ0OiBcIjBcIixcbiAgd2lkdGg6IFwiMTAwJVwiLFxuICBkaXNwbGF5OiBcImJsb2NrXCJcbn0pKTtcbmNvbnN0IFNlYXJjaEljb25XcmFwcGVyID0gc3R5bGVkKFwiZGl2XCIpKCgpID0+ICh7XG4gIGhlaWdodDogXCIxMDAlXCIsXG4gIHBvc2l0aW9uOiBcImFic29sdXRlXCIsXG4gIGRpc3BsYXk6IFwiZmxleFwiLFxuICBhbGlnbkl0ZW1zOiBcImNlbnRlclwiLFxuICBqdXN0aWZ5Q29udGVudDogXCJjZW50ZXJcIlxufSkpO1xuY29uc3QgU3R5bGVkSW5wdXRCYXNlID0gc3R5bGVkKElucHV0QmFzZSkoKCkgPT4gKHtcbiAgY29sb3I6IFwiaW5oZXJpdFwiLFxuICBib3JkZXJCb3R0b206IFwiMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC40MilcIixcbiAgcGFkZGluZ0xlZnQ6IFwiMjVweFwiLFxuICBwYWRkaW5nUmlnaHQ6IFwiMjVweFwiLFxuICBmb250U2l6ZTogXCIxZW1cIlxufSkpO1xuY29uc3QgQ2xvc2VJY29uV3JhcHBlciA9IHN0eWxlZChDbG9zZUljb24pKCgpID0+ICh7XG4gIHBhZGRpbmc6IFwiMnB4XCIsXG4gIGZvbnRTaXplOiBcIjEuNWVtXCIsXG4gIGhlaWdodDogXCIxMDAlXCIsXG4gIHBvc2l0aW9uOiBcImFic29sdXRlXCIsXG4gIHRvcDogXCIwXCIsXG4gIHJpZ2h0OiBcIjBcIixcbiAgZGlzcGxheTogXCJmbGV4XCIsXG4gIGFsaWduSXRlbXM6IFwiY2VudGVyXCIsXG4gIGp1c3RpZnlDb250ZW50OiBcImNlbnRlclwiLFxuICBjdXJzb3I6IFwicG9pbnRlclwiLFxuICB6SW5kZXg6IFwiMTAwMFwiXG59KSk7XG5cbmNvbnN0IFNlYXJjaCA9ICh7IG9uU2VhcmNoIH0pID0+IHtcbiAgY29uc3QgeyBmaWx0ZXIgfSA9IHVzZVNlbGVjdG9yKFxuICAgIChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUgfHwge30sXG4gICAgc2hhbGxvd0VxdWFsXG4gICk7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgW3NlYXJjaFZhbHVlLCBzZXRTZWFyY2hWYWx1ZV0gPSB1c2VTdGF0ZShcIlwiKTtcbiAgY29uc3Qgc2hvd0Nsb3NlQnRuID0gISFmaWx0ZXJbRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVJdO1xuXG4gIGNvbnN0IG9uS2V5RG93biA9IChldmVudCkgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIGtleSxcbiAgICAgIG5hdGl2ZUV2ZW50OiB7XG4gICAgICAgIHRhcmdldDogeyB2YWx1ZSB9XG4gICAgICB9XG4gICAgfSA9IGV2ZW50O1xuICAgIGlmIChrZXkgPT09IFwiRW50ZXJcIikge1xuICAgICAgb25TZWFyY2goe1xuICAgICAgICBbRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVJdOiB2YWx1ZVxuICAgICAgfSk7XG4gICAgfVxuICB9O1xuICBjb25zdCByZXNldFNlYXJjaCA9ICgpID0+IHtcbiAgICBzZXRTZWFyY2hWYWx1ZShcIlwiKTtcbiAgICBvblNlYXJjaCh7XG4gICAgICBbRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVJdOiBcIlwiXG4gICAgfSk7XG4gIH07XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAvLyB3ZSBuZWVkIHRoaXMgd2hlbiBzZWFyY2ggaXMgcmVzZXQgZnJvbSBvdXRzaWRlIHRoaXMgY29tcG9uZW50XG4gICAgc2V0U2VhcmNoVmFsdWUoZmlsdGVyW0ZJTFRFUl9WQVJfT1JERVJfTlVNQkVSXSk7XG4gIH0sIFtmaWx0ZXJbRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVJdXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94PlxuICAgICAgPFNlYXJjaENvbnRhaW5lcj5cbiAgICAgICAge3Nob3dDbG9zZUJ0biAmJiAoXG4gICAgICAgICAgPENsb3NlSWNvbldyYXBwZXIgb25DbGljaz17cmVzZXRTZWFyY2h9PlxuICAgICAgICAgICAgPENsb3NlSWNvbiAvPlxuICAgICAgICAgIDwvQ2xvc2VJY29uV3JhcHBlcj5cbiAgICAgICAgKX1cbiAgICAgICAgPFNlYXJjaEljb25XcmFwcGVyPlxuICAgICAgICAgIDxTZWFyY2hJY29uIC8+XG4gICAgICAgIDwvU2VhcmNoSWNvbldyYXBwZXI+XG4gICAgICAgIDxTdHlsZWRJbnB1dEJhc2VcbiAgICAgICAgICBwbGFjZWhvbGRlcj17dChcIm9yZGVyX3NlYXJjaC5vcmRlcl9udW1iZXJcIil9XG4gICAgICAgICAgaW5wdXRQcm9wcz17eyBcImFyaWEtbGFiZWxcIjogXCJzZWFyY2hcIiB9fVxuICAgICAgICAgIHZhbHVlPXtzZWFyY2hWYWx1ZX1cbiAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHNldFNlYXJjaFZhbHVlKGUudGFyZ2V0LnZhbHVlKX1cbiAgICAgICAgICBvbktleURvd249e29uS2V5RG93bn1cbiAgICAgICAgLz5cbiAgICAgIDwvU2VhcmNoQ29udGFpbmVyPlxuICAgIDwvQm94PlxuICApO1xufTtcblxuU2VhcmNoLnByb3BUeXBlcyA9IHtcbiAgb25TZWFyY2g6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBTZWFyY2g7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUsIHVzZVJlZiwgdXNlRWZmZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgU3RhY2sgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvU3RhY2tcIjtcbmltcG9ydCB7IEJveCwgQnV0dG9uLCBQYXBlciB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgSW1wb3J0RXhwb3J0SWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9JbXBvcnRFeHBvcnRcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgU29ydCA9ICh7IG9uU29ydCB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgW3Nob3dTb3J0LCBzZXRTaG93U29ydF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IHNvcnRSZWYgPSB1c2VSZWYobnVsbCk7XG4gIGNvbnN0IGhhbmRsZVNvcnRDbGlja091dHNpZGUgPSAoZXZlbnQpID0+IHtcbiAgICBpZiAoc29ydFJlZi5jdXJyZW50ICYmICFzb3J0UmVmLmN1cnJlbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkge1xuICAgICAgc2V0U2hvd1NvcnQoZmFsc2UpO1xuICAgIH1cbiAgfTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgaGFuZGxlU29ydENsaWNrT3V0c2lkZSwgZmFsc2UpO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgaGFuZGxlU29ydENsaWNrT3V0c2lkZSwgZmFsc2UpO1xuICAgIH07XG4gIH0sIFtzaG93U29ydF0pO1xuXG4gIGNvbnN0IHRvZ2dsZSA9ICgpID0+IHtcbiAgICBzZXRTaG93U29ydCghc2hvd1NvcnQpO1xuICB9O1xuICByZXR1cm4gKFxuICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuc29ydENvbnRhaW5lcn0gb25DbGljaz17dG9nZ2xlfT5cbiAgICAgIDxTdGFja1xuICAgICAgICByZWY9e3NvcnRSZWZ9XG4gICAgICAgIGFsaWduSXRlbXM9XCJjZW50ZXJcIlxuICAgICAgICBkaXJlY3Rpb249XCJyb3dcIlxuICAgICAgICBzeD17eyBwdDogMiwgcGI6IDIgfX1cbiAgICAgID5cbiAgICAgICAgPEltcG9ydEV4cG9ydEljb24gZm9udFNpemU9XCJsYXJnZVwiIGNsYXNzTmFtZT17c3R5bGVzLnNvcnRJY29ufSAvPlxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlcy5zb3J0TGFiZWx9Pnt0KFwic29ydC5zb3J0XCIpfTwvc3Bhbj5cbiAgICAgIDwvU3RhY2s+XG4gICAgICB7c2hvd1NvcnQgJiYgKFxuICAgICAgICA8UGFwZXJcbiAgICAgICAgICBlbGV2YXRpb249ezh9XG4gICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuc29ydExpc3RDb250YWluZXJ9ICR7c3R5bGVzLmNvbnRhaW5lcn1gfVxuICAgICAgICA+XG4gICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgZGlzYWJsZVJpcHBsZVxuICAgICAgICAgICAgdmFyaWFudD1cInRleHRcIlxuICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMubGFiZWx9XG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBvblNvcnQoeyBkaXJlY3Rpb246IFwiZGVzY1wiLCBuYW1lOiBcImNyZWF0ZWRcIiB9KX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7dChcInNvcnQubmV3X2ZpcnN0XCIpfVxuICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgIGRpc2FibGVSaXBwbGVcbiAgICAgICAgICAgIHZhcmlhbnQ9XCJ0ZXh0XCJcbiAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmxhYmVsfVxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4gb25Tb3J0KHsgZGlyZWN0aW9uOiBcImFzY1wiLCBuYW1lOiBcImNyZWF0ZWRcIiB9KX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7dChcInNvcnQub2xkX2ZpcnN0XCIpfVxuICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICA8L1BhcGVyPlxuICAgICAgKX1cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFNvcnQ7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZVNlbGVjdG9yLCBzaGFsbG93RXF1YWwgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIEJveCxcbiAgRm9ybUNvbnRyb2xMYWJlbCxcbiAgQ2FyZEhlYWRlcixcbiAgSWNvbkJ1dHRvbixcbiAgQ29sbGFwc2UsXG4gIENhcmRDb250ZW50LFxuICBSYWRpb0dyb3VwLFxuICBSYWRpb1xufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IEV4cGFuZE1vcmVJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0V4cGFuZE1vcmVcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB7IEZJTFRFUl9WQVJfT1dORVJfU1RBVFVTIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcblxuY29uc3QgU3RhdHVzRmlsdGVyID0gKHsgb25GaWx0ZXIgfSkgPT4ge1xuICBjb25zdCB7XG4gICAgZmlsdGVyOiB7IEZJTFRFUl9WQVJfT1dORVJfU1RBVFVTOiBmaWx0ZXJWYWx1ZXMgfVxuICB9ID0gdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSB8fCB7fSwgc2hhbGxvd0VxdWFsKTtcblxuICBjb25zdCBbaXNFeHBhbmRlZCwgc2V0SXNFeHBhbmRlZF0gPSB1c2VTdGF0ZSghIWZpbHRlclZhbHVlcyk7XG5cbiAgY29uc3QgYXNzaWduZWRWYWx1ZXMgPSBbXG4gICAgeyB2YWx1ZTogXCJJbmNvbXBsZXRlXCIsIGxhYmVsOiBcIkluY29tcGxldGVcIiB9LFxuICAgIHsgdmFsdWU6IFwiQ29tcGxldGVcIiwgbGFiZWw6IFwiQ29tcGxldGVcIiB9XG4gIF07XG5cbiAgY29uc3QgaGFuZGxlRmlsdGVyQ2hhbmdlID0gKGV2LCB2YWx1ZSkgPT4ge1xuICAgIGNvbnN0IG5ld0ZpbHRlciA9IHZhbHVlO1xuICAgIG9uRmlsdGVyKHtcbiAgICAgIFtGSUxURVJfVkFSX09XTkVSX1NUQVRVU106IG5ld0ZpbHRlclxuICAgIH0pO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPEJveD5cbiAgICAgIDxDYXJkSGVhZGVyXG4gICAgICAgIHRpdGxlPVwiU3RhdHVzXCJcbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGl0bGVXcmFwcGVyfVxuICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRJc0V4cGFuZGVkKCFpc0V4cGFuZGVkKX1cbiAgICAgICAgYWN0aW9uPXtcbiAgICAgICAgICA8SWNvbkJ1dHRvbiBhcmlhLWxhYmVsPVwiZXhwYW5kXCIgZGlzYWJsZVJpcHBsZT5cbiAgICAgICAgICAgIDxFeHBhbmRNb3JlSWNvblxuICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogaXNFeHBhbmRlZCA/IFwicm90YXRlKDE4MGRlZylcIiA6IFwicm90YXRlKDBkZWcpXCIsXG4gICAgICAgICAgICAgICAgdHJhbnNpdGlvbjogXCJ0cmFuc2Zvcm0gMC4zc1wiXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgfVxuICAgICAgLz5cbiAgICAgIDxDb2xsYXBzZSBpbj17aXNFeHBhbmRlZH0gdGltZW91dD1cImF1dG9cIiB1bm1vdW50T25FeGl0PlxuICAgICAgICA8Q2FyZENvbnRlbnRcbiAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgcHk6IDAsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IFwiIzAwMDAwMDBBXCIsXG4gICAgICAgICAgICBcIiY6bGFzdC1jaGlsZFwiOiB7XG4gICAgICAgICAgICAgIHBiOiAwXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIDxSYWRpb0dyb3VwIHZhbHVlPXtmaWx0ZXJWYWx1ZXN9IG9uQ2hhbmdlPXtoYW5kbGVGaWx0ZXJDaGFuZ2V9PlxuICAgICAgICAgICAge2Fzc2lnbmVkVmFsdWVzLm1hcCgoYXNzaWduZWQpID0+IChcbiAgICAgICAgICAgICAgPEJveFxuICAgICAgICAgICAgICAgIHN4PXt7IHB5OiAxIH19XG4gICAgICAgICAgICAgICAga2V5PXtgZmlsdGVyLWJhZGdlLWZlYXR1cmUtJHthc3NpZ25lZC5sYWJlbH19YH1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxGb3JtQ29udHJvbExhYmVsXG4gICAgICAgICAgICAgICAgICBjb250cm9sPXtcbiAgICAgICAgICAgICAgICAgICAgPFJhZGlvXG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2Fzc2lnbmVkLnZhbHVlfVxuICAgICAgICAgICAgICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICAgICAgICAgICAgICBcIiYgLk11aVN2Z0ljb24tcm9vdFwiOiB7IGZvbnRTaXplOiAxOCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgXCImLk11aS1jaGVja2VkXCI6IHsgY29sb3I6IFwiIzIxOTZGM1wiIH1cbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgbGFiZWw9e2Fzc2lnbmVkLmxhYmVsfVxuICAgICAgICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgICAgICAgXCImIC5NdWlGb3JtQ29udHJvbExhYmVsLWxhYmVsXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgICBmb250U2l6ZTogXCIxZW1cIlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAgKSl9XG4gICAgICAgICAgPC9SYWRpb0dyb3VwPlxuICAgICAgICA8L0NhcmRDb250ZW50PlxuICAgICAgPC9Db2xsYXBzZT5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cblN0YXR1c0ZpbHRlci5wcm9wVHlwZXMgPSB7XG4gIG9uRmlsdGVyOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgU3RhdHVzRmlsdGVyO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlLCB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZVNlbGVjdG9yLCBzaGFsbG93RXF1YWwgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIEJveCxcbiAgRm9ybUNvbnRyb2xMYWJlbCxcbiAgQ2hlY2tib3gsXG4gIENhcmRIZWFkZXIsXG4gIEljb25CdXR0b24sXG4gIENvbGxhcHNlLFxuICBDYXJkQ29udGVudFxufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IEV4cGFuZE1vcmVJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0V4cGFuZE1vcmVcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB7IEZJTFRFUl9WQVJfVElDS0VUX1RZUEUgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuXG5jb25zdCBUaWNrZXRUeXBlRmlsdGVyID0gKHsgb25GaWx0ZXIgfSkgPT4ge1xuICBjb25zdCB7XG4gICAgc3VtbWl0OiB7IHRpY2tldF90eXBlcyB9LFxuICAgIGZpbHRlcjogeyBGSUxURVJfVkFSX1RJQ0tFVF9UWVBFOiBmaWx0ZXJWYWx1ZXMgfVxuICB9ID0gdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSB8fCB7fSwgc2hhbGxvd0VxdWFsKTtcblxuICBjb25zdCBbaXNFeHBhbmRlZCwgc2V0SXNFeHBhbmRlZF0gPSB1c2VTdGF0ZSghIWZpbHRlclZhbHVlcy5sZW5ndGgpO1xuXG4gIGNvbnN0IGhhbmRsZUZpbHRlckNoYW5nZSA9ICh2YWx1ZSkgPT4ge1xuICAgIGNvbnN0IG5ld0ZpbHRlcnMgPSBmaWx0ZXJWYWx1ZXM/LmluY2x1ZGVzKHZhbHVlKVxuICAgICAgPyBmaWx0ZXJWYWx1ZXMuZmlsdGVyKChmKSA9PiBmICE9PSB2YWx1ZSlcbiAgICAgIDogWy4uLmZpbHRlclZhbHVlcywgdmFsdWVdO1xuICAgIG9uRmlsdGVyKHtcbiAgICAgIFtGSUxURVJfVkFSX1RJQ0tFVF9UWVBFXTogbmV3RmlsdGVyc1xuICAgIH0pO1xuICB9O1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc2V0SXNFeHBhbmRlZCghIWZpbHRlclZhbHVlcy5sZW5ndGgpO1xuICB9LCBbZmlsdGVyVmFsdWVzXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94PlxuICAgICAgPENhcmRIZWFkZXJcbiAgICAgICAgdGl0bGU9XCJUaWNrZXQgVHlwZVwiXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnRpdGxlV3JhcHBlcn1cbiAgICAgICAgb25DbGljaz17KCkgPT4gc2V0SXNFeHBhbmRlZCghaXNFeHBhbmRlZCl9XG4gICAgICAgIGFjdGlvbj17XG4gICAgICAgICAgPEljb25CdXR0b24gYXJpYS1sYWJlbD1cImV4cGFuZFwiIGRpc2FibGVSaXBwbGU+XG4gICAgICAgICAgICA8RXhwYW5kTW9yZUljb25cbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IGlzRXhwYW5kZWQgPyBcInJvdGF0ZSgxODBkZWcpXCIgOiBcInJvdGF0ZSgwZGVnKVwiLFxuICAgICAgICAgICAgICAgIHRyYW5zaXRpb246IFwidHJhbnNmb3JtIDAuM3NcIlxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgIH1cbiAgICAgIC8+XG4gICAgICA8Q29sbGFwc2UgaW49e2lzRXhwYW5kZWR9IHRpbWVvdXQ9XCJhdXRvXCIgdW5tb3VudE9uRXhpdD5cbiAgICAgICAgPENhcmRDb250ZW50XG4gICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgIHB5OiAwLFxuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBcIiMwMDAwMDAwQVwiLFxuICAgICAgICAgICAgXCImOmxhc3QtY2hpbGRcIjoge1xuICAgICAgICAgICAgICBwYjogMFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICB7dGlja2V0X3R5cGVzLm1hcCgoYmYpID0+IChcbiAgICAgICAgICAgIDxCb3ggc3g9e3sgcHk6IDEgfX0ga2V5PXtgZmlsdGVyLWJhZGdlLWZlYXR1cmUtJHtiZi5uYW1lfX1gfT5cbiAgICAgICAgICAgICAgPEZvcm1Db250cm9sTGFiZWxcbiAgICAgICAgICAgICAgICBjb250cm9sPXtcbiAgICAgICAgICAgICAgICAgIDxDaGVja2JveFxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KCkgPT4gaGFuZGxlRmlsdGVyQ2hhbmdlKGJmLmlkKX1cbiAgICAgICAgICAgICAgICAgICAgY2hlY2tlZD17ZmlsdGVyVmFsdWVzLmluY2x1ZGVzKGJmLmlkKX1cbiAgICAgICAgICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgICAgICAgICBcIiYgLk11aVN2Z0ljb24tcm9vdFwiOiB7IGZvbnRTaXplOiAxOCB9LFxuICAgICAgICAgICAgICAgICAgICAgIFwiJi5NdWktY2hlY2tlZFwiOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogXCIjMjE5NkYzXCJcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBsYWJlbD17YmYubmFtZX1cbiAgICAgICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICAgICAgXCImIC5NdWlGb3JtQ29udHJvbExhYmVsLWxhYmVsXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgZm9udFNpemU6IFwiMWVtXCJcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvQ2FyZENvbnRlbnQ+XG4gICAgICA8L0NvbGxhcHNlPlxuICAgIDwvQm94PlxuICApO1xufTtcblxuVGlja2V0VHlwZUZpbHRlci5wcm9wVHlwZXMgPSB7XG4gIG9uRmlsdGVyOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgVGlja2V0VHlwZUZpbHRlcjtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IEdyaWQgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IEZpbHRlciBmcm9tIFwiLi9GaWx0ZXJcIjtcbmltcG9ydCBTb3J0IGZyb20gXCIuL1NvcnRcIjtcbmltcG9ydCBTZWFyY2ggZnJvbSBcIi4vU2VhcmNoXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IEZpbHRlcnMgPSAoeyBvbkZpbHRlciwgb25Tb3J0LCBvblNlYXJjaCwgb25SZXNldCB9KSA9PiAoXG4gIDxHcmlkIGNvbnRhaW5lciBqdXN0aWZ5PVwiZmxleC1lbmRcIiBhbGlnbkl0ZW1zPVwiY2VudGVyXCI+XG4gICAgPEdyaWRcbiAgICAgIGl0ZW1cbiAgICAgIHhzPXs2fVxuICAgICAgY29udGFpbmVyXG4gICAgICBwYWRkaW5nPXsxfVxuICAgICAgZ2FwPXsyfVxuICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuZmlsdGVyU29ydENvbnRhaW5lcn1cbiAgICAgIHN4PXt7IHB0OiAyLCBwYjogMiB9fVxuICAgID5cbiAgICAgIDxHcmlkIGl0ZW0+XG4gICAgICAgIDxGaWx0ZXIgb25GaWx0ZXI9e29uRmlsdGVyfSBvblJlc2V0PXtvblJlc2V0fSAvPlxuICAgICAgPC9HcmlkPlxuICAgICAgPEdyaWQgaXRlbT5cbiAgICAgICAgPFNvcnQgb25Tb3J0PXtvblNvcnR9IC8+XG4gICAgICA8L0dyaWQ+XG4gICAgPC9HcmlkPlxuICAgIDxHcmlkIGl0ZW0geHM9ezZ9IGNvbnRhaW5lciBqdXN0aWZ5Q29udGVudD1cImZsZXgtZW5kXCI+XG4gICAgICA8U2VhcmNoIG9uU2VhcmNoPXtvblNlYXJjaH0gLz5cbiAgICA8L0dyaWQ+XG4gIDwvR3JpZD5cbik7XG5cbkZpbHRlcnMucHJvcFR5cGVzID0ge1xuICBvbkZpbHRlcjogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uU29ydDogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uU2VhcmNoOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25SZXNldDogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEZpbHRlcnM7XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE3IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBCb3gsIEJ1dHRvbiB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5cbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgRm9ybUZvb3RlciA9ICh7IHNhdmVMYWJlbCwgY2FuY2VsTGFiZWwsIG9uQ2xvc2UsIGRpc2FibGVkIH0pID0+IChcbiAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5mb290ZXJ9PlxuICAgIDxCdXR0b25cbiAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNhbmNlbEJ0bn1cbiAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgdmFyaWFudD1cIm91dGxpbmVkXCJcbiAgICAgIG9uQ2xpY2s9e29uQ2xvc2V9XG4gICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgPlxuICAgICAge2NhbmNlbExhYmVsfVxuICAgIDwvQnV0dG9uPlxuICAgIDxCdXR0b25cbiAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuc2F2ZUJ0bn1cbiAgICAgIHZhcmlhbnQ9XCJjb250YWluZWRcIlxuICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgPlxuICAgICAge3NhdmVMYWJlbH1cbiAgICA8L0J1dHRvbj5cbiAgPC9Cb3g+XG4pO1xuXG5Gb3JtRm9vdGVyLnByb3BUeXBlcyA9IHtcbiAgc2F2ZUxhYmVsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBjYW5jZWxMYWJlbDogUHJvcFR5cGVzLnN0cmluZyxcbiAgb25DbG9zZTogUHJvcFR5cGVzLmZ1bmMsXG4gIGRpc2FibGVkOiBQcm9wVHlwZXMuYm9vbFxufTtcblxuZXhwb3J0IGRlZmF1bHQgRm9ybUZvb3RlcjtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBFcnJvckljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRXJyb3JcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuZnVuY3Rpb24gRXJyb3JMYWJlbCh7IG1lc3NhZ2UsIGNvbG9yLCBjbGFzc05hbWVzLCBkYXRhVGVzdElkIH0pIHtcbiAgcmV0dXJuIChcbiAgICA8c3BhblxuICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuZXJyb3JMYWJlbH0gJHtjbGFzc05hbWVzICYmIGNsYXNzTmFtZXN9YH1cbiAgICAgIHN0eWxlPXt7IGNvbG9yIH19XG4gICAgICBkYXRhLXRlc3RpZD17ZGF0YVRlc3RJZH1cbiAgICA+XG4gICAgICA8RXJyb3JJY29uIHN4PXt7IGNvbG9yIH19IC8+XG4gICAgICB7bWVzc2FnZX1cbiAgICA8L3NwYW4+XG4gICk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IEVycm9yTGFiZWw7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBCYWNrZHJvcCwgQ2lyY3VsYXJQcm9ncmVzcyB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5cbmNvbnN0IExvYWRlciA9ICh7IG9wZW4gfSkgPT4gKFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbWFnaWMtbnVtYmVyc1xuICA8QmFja2Ryb3Agb3Blbj17b3Blbn0gc3g9eyh0aGVtZSkgPT4gKHsgekluZGV4OiB0aGVtZS56SW5kZXguZHJhd2VyICsgMSB9KX0+XG4gICAgPENpcmN1bGFyUHJvZ3Jlc3MgY29sb3I9XCJpbmhlcml0XCIgLz5cbiAgPC9CYWNrZHJvcD5cbik7XG5cbkxvYWRlci5wcm9wVHlwZXMgPSB7XG4gIG9wZW46IFByb3BUeXBlcy5ib29sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBMb2FkZXI7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBzaGFsbG93RXF1YWwsIHVzZVNlbGVjdG9yIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgSW5maW5pdGVTY3JvbGwgZnJvbSBcInJlYWN0LWluZmluaXRlLXNjcm9sbC1jb21wb25lbnRcIjtcbmltcG9ydCBPcmRlcnNMaXN0IGZyb20gXCIuLi9PcmRlcnNMaXN0XCI7XG5pbXBvcnQgeyBPTkVfUEFHRV9ORVhUIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2NvbnN0YW50c1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBNeU9yZGVyc1RpY2tldHMgPSAoeyBmZXRjaERhdGEgfSkgPT4ge1xuICBjb25zdCB7IHN1bW1pdCwgbWVtYmVyT3JkZXJzLCBvcmRlcnNfY3VycmVudF9wYWdlLCBvcmRlcnNfbGFzdF9wYWdlIH0gPVxuICAgIHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUgfHwge30sIHNoYWxsb3dFcXVhbCk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGlkPVwiaW5maW5pdGVXcmFwcGVyXCIgY2xhc3NOYW1lPXtzdHlsZXMubXlPcmRlcnNXcmFwcGVyfT5cbiAgICAgIDxJbmZpbml0ZVNjcm9sbFxuICAgICAgICBkYXRhTGVuZ3RoPXttZW1iZXJPcmRlcnM/Lmxlbmd0aH1cbiAgICAgICAgbmV4dD17KCkgPT4gZmV0Y2hEYXRhKG9yZGVyc19jdXJyZW50X3BhZ2UgKyBPTkVfUEFHRV9ORVhUKX1cbiAgICAgICAgaGFzTW9yZT17b3JkZXJzX2N1cnJlbnRfcGFnZSA8IG9yZGVyc19sYXN0X3BhZ2V9XG4gICAgICAgIHNjcm9sbFRocmVzaG9sZD17MX1cbiAgICAgID5cbiAgICAgICAge21lbWJlck9yZGVycz8ubWFwKChvcmRlcikgPT4gKFxuICAgICAgICAgIDxPcmRlcnNMaXN0XG4gICAgICAgICAgICBrZXk9e29yZGVyLm51bWJlciArIG9yZGVyLmlkfVxuICAgICAgICAgICAgb3JkZXI9e29yZGVyfVxuICAgICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgLz5cbiAgICAgICAgKSl9XG4gICAgICA8L0luZmluaXRlU2Nyb2xsPlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgTXlPcmRlcnNUaWNrZXRzO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5jb25zdCBUaWNrZXRzSWNvbiA9ICgpID0+IChcbiAgPHN2Z1xuICAgIHdpZHRoPVwiMTI5XCJcbiAgICBoZWlnaHQ9XCI4MFwiXG4gICAgdmlld0JveD1cIjAgMCAxMjkgODBcIlxuICAgIGZpbGw9XCJub25lXCJcbiAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgPlxuICAgIDxwYXRoXG4gICAgICBkPVwiTTEyNS4xMjIgMzYuNDc4MUMxMjQuODE0IDM3LjUxMTIgMTIzLjczOCAzOC4wODkxIDEyMi42NjEgMzguMDM3NkMxMTguNTA2IDM3LjgzODYgMTE0LjU5MyA0MC40NzU0IDExMy4zNDkgNDQuNjQxMkMxMTIuMTA1IDQ4LjgwNzMgMTEzLjkzMiA1My4xNTc2IDExNy41MTcgNTUuMjY5N0MxMTguNDQ2IDU1LjgxNjkgMTE5LjAyOCA1Ni44ODk5IDExOC43MiA1Ny45MjMxTDExNi4zNjkgNjUuNzk2N0MxMTYuMDUzIDY2Ljg1NTEgMTE0LjkzOSA2Ny40NTcgMTEzLjg4MSA2Ny4xNDFMMzAuNzY3NSA0Mi4zMjcxQzI5LjcwOTEgNDIuMDExMiAyOS4xMDcyIDQwLjg5NyAyOS40MjMyIDM5LjgzODZMNDAuMzQzOSAzLjI2MDE2QzQwLjY1OTkgMi4yMDE3NiA0MS43NzQgMS41OTk5MSA0Mi44MzI0IDEuOTE1OUwxMjUuOTQ2IDI2LjcyOTdDMTI3LjAwNCAyNy4wNDU3IDEyNy42MDYgMjguMTU5OSAxMjcuMjkgMjkuMjE4M0wxMjUuMTIyIDM2LjQ3ODFaXCJcbiAgICAgIGZpbGw9XCJ3aGl0ZVwiXG4gICAgLz5cbiAgICA8cGF0aFxuICAgICAgZD1cIk0xMTMuMzQ5IDQ0LjY0MTJMMTEyLjM5MSA0NC4zNTUxTDExMi4zOTEgNDQuMzU1MkwxMTMuMzQ5IDQ0LjY0MTJaTTExNy41MTcgNTUuMjY5N0wxMTcuMDA5IDU2LjEzMTJMMTE3LjUxNyA1NS4yNjk3Wk0xMjIuNjYxIDM4LjAzNzZMMTIyLjcwOSAzNy4wMzg3QzExOC4xMDUgMzYuODE4MyAxMTMuNzY5IDM5LjczODEgMTEyLjM5MSA0NC4zNTUxTDExMy4zNDkgNDQuNjQxMkwxMTQuMzA3IDQ0LjkyNzRDMTE1LjQxNiA0MS4yMTI3IDExOC45MDYgMzguODU4OSAxMjIuNjE0IDM5LjAzNjRMMTIyLjY2MSAzOC4wMzc2Wk0xMTMuMzQ5IDQ0LjY0MTJMMTEyLjM5MSA0NC4zNTUyQzExMS4wMTIgNDguOTcyNSAxMTMuMDM4IDUzLjc5MTUgMTE3LjAwOSA1Ni4xMzEyTDExNy41MTcgNTUuMjY5N0wxMTguMDI0IDU0LjQwODFDMTE0LjgyNiA1Mi41MjM4IDExMy4xOTggNDguNjQyMSAxMTQuMzA3IDQ0LjkyNzNMMTEzLjM0OSA0NC42NDEyWk0xMTguNzIgNTcuOTIzMUwxMTcuNzYyIDU3LjYzN0wxMTUuNDExIDY1LjUxMDZMMTE2LjM2OSA2NS43OTY3TDExNy4zMjcgNjYuMDgyOEwxMTkuNjc4IDU4LjIwOTFMMTE4LjcyIDU3LjkyMzFaTTExMy44ODEgNjcuMTQxTDExNC4xNjcgNjYuMTgyOEwzMS4wNTM1IDQxLjM2ODlMMzAuNzY3NSA0Mi4zMjcxTDMwLjQ4MTQgNDMuMjg1NEwxMTMuNTk1IDY4LjA5OTJMMTEzLjg4MSA2Ny4xNDFaTTI5LjQyMzIgMzkuODM4NkwzMC4zODE0IDQwLjEyNDdMNDEuMzAyMSAzLjU0NjI0TDQwLjM0MzkgMy4yNjAxNkwzOS4zODU3IDIuOTc0MDlMMjguNDY1IDM5LjU1MjVMMjkuNDIzMiAzOS44Mzg2Wk00Mi44MzI0IDEuOTE1OUw0Mi41NDY0IDIuODc0MTFMMTI1LjY2IDI3LjY4NzlMMTI1Ljk0NiAyNi43Mjk3TDEyNi4yMzIgMjUuNzcxNUw0My4xMTg1IDAuOTU3Njk3TDQyLjgzMjQgMS45MTU5Wk0xMjcuMjkgMjkuMjE4M0wxMjYuMzMyIDI4LjkzMjJMMTI0LjE2NCAzNi4xOTJMMTI1LjEyMiAzNi40NzgxTDEyNi4wODEgMzYuNzY0MkwxMjguMjQ4IDI5LjUwNDRMMTI3LjI5IDI5LjIxODNaTTEyNS45NDYgMjYuNzI5N0wxMjUuNjYgMjcuNjg3OUMxMjYuMTg5IDI3Ljg0NTkgMTI2LjQ5IDI4LjQwMyAxMjYuMzMyIDI4LjkzMjJMMTI3LjI5IDI5LjIxODNMMTI4LjI0OCAyOS41MDQ0QzEyOC43MjIgMjcuOTE2OCAxMjcuODE5IDI2LjI0NTUgMTI2LjIzMiAyNS43NzE1TDEyNS45NDYgMjYuNzI5N1pNMzAuNzY3NSA0Mi4zMjcxTDMxLjA1MzUgNDEuMzY4OUMzMC41MjQzIDQxLjIxMDkgMzAuMjIzNCA0MC42NTM5IDMwLjM4MTQgNDAuMTI0N0wyOS40MjMyIDM5LjgzODZMMjguNDY1IDM5LjU1MjVDMjcuOTkxIDQxLjE0MDEgMjguODkzOCA0Mi44MTE0IDMwLjQ4MTQgNDMuMjg1NEwzMC43Njc1IDQyLjMyNzFaTTExNi4zNjkgNjUuNzk2N0wxMTUuNDExIDY1LjUxMDZDMTE1LjI1MyA2Ni4wMzk4IDExNC42OTYgNjYuMzQwOCAxMTQuMTY3IDY2LjE4MjhMMTEzLjg4MSA2Ny4xNDFMMTEzLjU5NSA2OC4wOTkyQzExNS4xODIgNjguNTczMiAxMTYuODUzIDY3LjY3MDQgMTE3LjMyNyA2Ni4wODI4TDExNi4zNjkgNjUuNzk2N1pNMTE3LjUxNyA1NS4yNjk3TDExNy4wMDkgNTYuMTMxMkMxMTcuNjUzIDU2LjUxMDUgMTE3LjkwNSA1Ny4xNTcgMTE3Ljc2MiA1Ny42MzdMMTE4LjcyIDU3LjkyMzFMMTE5LjY3OCA1OC4yMDkxQzEyMC4xNTIgNTYuNjIyOCAxMTkuMjM5IDU1LjEyMzQgMTE4LjAyNCA1NC40MDgxTDExNy41MTcgNTUuMjY5N1pNNDAuMzQzOSAzLjI2MDE2TDQxLjMwMjEgMy41NDYyNEM0MS40NjAxIDMuMDE3MDQgNDIuMDE3MSAyLjcxNjExIDQyLjU0NjQgMi44NzQxMUw0Mi44MzI0IDEuOTE1OUw0My4xMTg1IDAuOTU3Njk3QzQxLjUzMDkgMC40ODM3MSAzOS44NTk2IDEuMzg2NDggMzkuMzg1NyAyLjk3NDA5TDQwLjM0MzkgMy4yNjAxNlpNMTIyLjY2MSAzOC4wMzc2TDEyMi42MTQgMzkuMDM2NEMxMjQuMDIxIDM5LjEwMzggMTI1LjYwNyAzOC4zNTA1IDEyNi4wODEgMzYuNzY0MkwxMjUuMTIyIDM2LjQ3ODFMMTI0LjE2NCAzNi4xOTJDMTI0LjAyMSAzNi42NzIgMTIzLjQ1NiAzNy4wNzQ0IDEyMi43MDkgMzcuMDM4N0wxMjIuNjYxIDM4LjAzNzZaXCJcbiAgICAgIGZpbGw9XCIjQkRCREJEXCJcbiAgICAvPlxuICAgIDxwYXRoXG4gICAgICBkPVwiTTEwNy45MDMgMjIuNjc1OEw5Ni41Njk2IDYwLjYzNzlcIlxuICAgICAgc3Ryb2tlPVwiI0JEQkRCRFwiXG4gICAgICBzdHJva2VXaWR0aD1cIjJcIlxuICAgICAgc3Ryb2tlTGluZWNhcD1cInJvdW5kXCJcbiAgICAgIHN0cm9rZURhc2hhcnJheT1cIjIgNVwiXG4gICAgLz5cbiAgICA8cGF0aFxuICAgICAgZD1cIk05MS43NDIgNDUuODk1MkM5MS43NDE5IDQ2Ljk3MzQgOTAuODc2NSA0Ny44MzQ3IDg5LjgyOTcgNDguMDkzM0M4NS43OTA2IDQ5LjA5MTMgODIuNzk1OSA1Mi43Mzc2IDgyLjc5NTMgNTcuMDg1MkM4Mi43OTQ4IDYxLjQzMjkgODUuNzg4NyA2NS4wNzkyIDg5LjgyNzYgNjYuMDc3OUM5MC44NzQyIDY2LjMzNjcgOTEuNzM5NCA2Ny4xOTgzIDkxLjczOTIgNjguMjc2NEw5MS43MzgyIDc2LjQ5MzVDOTEuNzM4MSA3Ny41OTgxIDkwLjg0MjYgNzguNDkzNCA4OS43MzggNzguNDkzM0wyLjk5OTcyIDc4LjQ4MjdDMS44OTUxNSA3OC40ODI1IDAuOTk5ODI1IDc3LjU4NyAwLjk5OTk2IDc2LjQ4MjRMMS4wMDQ2NCAzOC4zMDg2QzEuMDA0NzcgMzcuMjA0IDEuOTAwMzEgMzYuMzA4NyAzLjAwNDg4IDM2LjMwODhMODkuNzQzMiAzNi4zMTk1QzkwLjg0NzcgMzYuMzE5NiA5MS43NDMxIDM3LjIxNTEgOTEuNzQyOSAzOC4zMTk3TDkxLjc0MiA0NS44OTUyWlwiXG4gICAgICBmaWxsPVwid2hpdGVcIlxuICAgIC8+XG4gICAgPHBhdGhcbiAgICAgIGQ9XCJNODIuNzk1MyA1Ny4wODUyTDgxLjc5NTMgNTcuMDg1MUw4MS43OTUzIDU3LjA4NTFMODIuNzk1MyA1Ny4wODUyWk04OS44Mjk3IDQ4LjA5MzNMOTAuMDY5NiA0OS4wNjQxTDg5LjgyOTcgNDguMDkzM1pNODkuODI5NyA0OC4wOTMzTDg5LjU4OTkgNDcuMTIyNUM4NS4xMTUgNDguMjI4MSA4MS43OTYgNTIuMjY2NyA4MS43OTUzIDU3LjA4NTFMODIuNzk1MyA1Ny4wODUyTDgzLjc5NTMgNTcuMDg1NEM4My43OTU4IDUzLjIwODQgODYuNDY2MyA0OS45NTQ0IDkwLjA2OTYgNDkuMDY0MUw4OS44Mjk3IDQ4LjA5MzNaTTgyLjc5NTMgNTcuMDg1Mkw4MS43OTUzIDU3LjA4NTFDODEuNzk0NyA2MS45MDM2IDg1LjExMjkgNjUuOTQyMiA4OS41ODc1IDY3LjA0ODdMODkuODI3NiA2Ni4wNzc5TDkwLjA2NzYgNjUuMTA3MUM4Ni40NjQ0IDY0LjIxNjIgODMuNzk0OCA2MC45NjIyIDgzLjc5NTMgNTcuMDg1M0w4Mi43OTUzIDU3LjA4NTJaTTkxLjczOTIgNjguMjc2NEw5MC43MzkyIDY4LjI3NjNMOTAuNzM4MiA3Ni40OTM0TDkxLjczODIgNzYuNDkzNUw5Mi43MzgyIDc2LjQ5MzdMOTIuNzM5MiA2OC4yNzY2TDkxLjczOTIgNjguMjc2NFpNODkuNzM4IDc4LjQ5MzNMODkuNzM4MSA3Ny40OTMzTDIuOTk5ODQgNzcuNDgyN0wyLjk5OTcyIDc4LjQ4MjdMMi45OTk2IDc5LjQ4MjdMODkuNzM3OSA3OS40OTMzTDg5LjczOCA3OC40OTMzWk0wLjk5OTk2IDc2LjQ4MjRMMS45OTk5NiA3Ni40ODI1TDIuMDA0NjQgMzguMzA4N0wxLjAwNDY0IDM4LjMwODZMMC4wMDQ2Mzc3NiAzOC4zMDg1TC0zLjk2MDc1ZS0wNSA3Ni40ODIzTDAuOTk5OTYgNzYuNDgyNFpNMy4wMDQ4OCAzNi4zMDg4TDMuMDA0NzYgMzcuMzA4OEw4OS43NDMgMzcuMzE5NUw4OS43NDMyIDM2LjMxOTVMODkuNzQzMyAzNS4zMTk1TDMuMDA1MDEgMzUuMzA4OEwzLjAwNDg4IDM2LjMwODhaTTkxLjc0MjkgMzguMzE5N0w5MC43NDI5IDM4LjMxOTZMOTAuNzQyIDQ1Ljg5NTFMOTEuNzQyIDQ1Ljg5NTJMOTIuNzQyIDQ1Ljg5NTNMOTIuNzQyOSAzOC4zMTk4TDkxLjc0MjkgMzguMzE5N1pNODkuNzQzMiAzNi4zMTk1TDg5Ljc0MyAzNy4zMTk1QzkwLjI5NTMgMzcuMzE5NSA5MC43NDMgMzcuNzY3MyA5MC43NDI5IDM4LjMxOTZMOTEuNzQyOSAzOC4zMTk3TDkyLjc0MjkgMzguMzE5OEM5Mi43NDMxIDM2LjY2MyA5MS40MDAxIDM1LjMxOTcgODkuNzQzMyAzNS4zMTk1TDg5Ljc0MzIgMzYuMzE5NVpNMi45OTk3MiA3OC40ODI3TDIuOTk5ODQgNzcuNDgyN0MyLjQ0NzU1IDc3LjQ4MjYgMS45OTk4OSA3Ny4wMzQ4IDEuOTk5OTYgNzYuNDgyNUwwLjk5OTk2IDc2LjQ4MjRMLTMuOTYwNzVlLTA1IDc2LjQ4MjNDLTAuMDAwMjQyNjE5IDc4LjEzOTIgMS4zNDI3NCA3OS40ODI1IDIuOTk5NiA3OS40ODI3TDIuOTk5NzIgNzguNDgyN1pNOTEuNzM4MiA3Ni40OTM1TDkwLjczODIgNzYuNDkzNEM5MC43MzgyIDc3LjA0NTcgOTAuMjkwNCA3Ny40OTM0IDg5LjczODEgNzcuNDkzM0w4OS43MzggNzguNDkzM0w4OS43Mzc5IDc5LjQ5MzNDOTEuMzk0NyA3OS40OTM1IDkyLjczOCA3OC4xNTA1IDkyLjczODIgNzYuNDkzN0w5MS43MzgyIDc2LjQ5MzVaTTg5LjgyNzYgNjYuMDc3OUw4OS41ODc1IDY3LjA0ODdDOTAuMzEyOCA2Ny4yMjggOTAuNzM5MyA2Ny43NzU0IDkwLjczOTIgNjguMjc2M0w5MS43MzkyIDY4LjI3NjRMOTIuNzM5MiA2OC4yNzY2QzkyLjczOTUgNjYuNjIxMSA5MS40MzU2IDY1LjQ0NTQgOTAuMDY3NiA2NS4xMDcxTDg5LjgyNzYgNjYuMDc3OVpNMS4wMDQ2NCAzOC4zMDg2TDIuMDA0NjQgMzguMzA4N0MyLjAwNDcxIDM3Ljc1NjQgMi40NTI0OCAzNy4zMDg4IDMuMDA0NzYgMzcuMzA4OEwzLjAwNDg4IDM2LjMwODhMMy4wMDUwMSAzNS4zMDg4QzEuMzQ4MTUgMzUuMzA4NiAwLjAwNDg0MDc3IDM2LjY1MTYgMC4wMDQ2Mzc3NiAzOC4zMDg1TDEuMDA0NjQgMzguMzA4NlpNODkuODI5NyA0OC4wOTMzTDkwLjA2OTYgNDkuMDY0MUM5MS40Mzc2IDQ4LjcyNjEgOTIuNzQxOCA0Ny41NTA4IDkyLjc0MiA0NS44OTUzTDkxLjc0MiA0NS44OTUyTDkwLjc0MiA0NS44OTUxQzkwLjc0MTkgNDYuMzk2IDkwLjMxNTMgNDYuOTQzMyA4OS41ODk5IDQ3LjEyMjVMODkuODI5NyA0OC4wOTMzWlwiXG4gICAgICBmaWxsPVwiI0JEQkRCRFwiXG4gICAgLz5cbiAgICA8cGF0aFxuICAgICAgZD1cIk03MS4yOTQ5IDM3LjU5NTdMNzEuMjkwMSA3Ny4yMTM2XCJcbiAgICAgIHN0cm9rZT1cIiNCREJEQkRcIlxuICAgICAgc3Ryb2tlV2lkdGg9XCIyXCJcbiAgICAgIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICBzdHJva2VEYXNoYXJyYXk9XCIyIDVcIlxuICAgIC8+XG4gIDwvc3ZnPlxuKTtcblxuZXhwb3J0IGRlZmF1bHQgVGlja2V0c0ljb247XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VTZWxlY3RvciB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgQm94LCBCdXR0b24sIFR5cG9ncmFwaHkgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IFRpY2tldHNJY29uIGZyb20gXCIuL1RpY2tldHNJY29uXCI7XG5pbXBvcnQgeyBUQUJTIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2NvbnN0YW50c1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBOb1RpY2tldHNGb3VuZCA9ICh7IHBhZ2VWaWV3LCBvbkNsaWNrIH0pID0+IHtcbiAgY29uc3QgeyBzdW1taXQsIGxvYWRpbmcgfSA9IHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUgfHwge30pO1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG5cbiAgY29uc3QgZ2V0Q29udGVudCA9ICgpID0+IHtcbiAgICBjb25zdCBtYWlsdG9UYWcgPSAoXG4gICAgICA8YSBocmVmPXtgbWFpbHRvOiR7c3VtbWl0LnN1cHBvcnRfZW1haWx9YH0+XG4gICAgICAgIHt0KFwiZ2VuZXJhbC5jb250YWN0X3N1cHBvcnRcIil9XG4gICAgICA8L2E+XG4gICAgKTtcblxuICAgIHN3aXRjaCAocGFnZVZpZXcpIHtcbiAgICAgIGNhc2UgVEFCUy5PUkRFUlM6IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0aXRsZTogdChcIm5vX3Jlc3VsdHMub3JkZXJzLnRpdGxlXCIpLFxuICAgICAgICAgIGJvZHk6IChcbiAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgIHt0KFwibm9fcmVzdWx0cy5vcmRlcnMuYm9keVwiKX0ge21haWx0b1RhZ30uXG4gICAgICAgICAgICA8Lz5cbiAgICAgICAgICApLFxuICAgICAgICAgIGJ1dHRvbkxhYmVsOiB0KFwibGFiZWxzLmFzc2lnbmVkX3RvX21lXCIpXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBjYXNlIFRBQlMuVElDS0VUUzoge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHRpdGxlOiB0KFwibm9fcmVzdWx0cy5hc3NpZ25lZC50aXRsZVwiKSxcbiAgICAgICAgICBib2R5OiAoXG4gICAgICAgICAgICA8PlxuICAgICAgICAgICAgICB7dChcIm5vX3Jlc3VsdHMuYXNzaWduZWQuYm9keVwiKX0ge21haWx0b1RhZ30uXG4gICAgICAgICAgICA8Lz5cbiAgICAgICAgICApLFxuICAgICAgICAgIGJ1dHRvbkxhYmVsOiB0KFwib3JkZXJzLnRpdGxlXCIpXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdGl0bGU6IHQoXCJub19yZXN1bHRzLmZpbHRlci50aXRsZVwiKSxcbiAgICAgICAgICBib2R5OiB0KFwibm9fcmVzdWx0cy5maWx0ZXIuYm9keVwiKSxcbiAgICAgICAgICBidXR0b25MYWJlbDogdChcImZpbHRlci5jbGVhcl9maWx0ZXJzXCIpXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IHsgdGl0bGUsIGJvZHksIGJ1dHRvbkxhYmVsIH0gPSBnZXRDb250ZW50KCk7XG5cbiAgaWYgKGxvYWRpbmcpIHJldHVybiBudWxsO1xuXG4gIHJldHVybiAoXG4gICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy53cmFwcGVyfT5cbiAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuaWNvbldyYXBwZXJ9PlxuICAgICAgICA8VGlja2V0c0ljb24gLz5cbiAgICAgIDwvQm94PlxuICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImg2XCIgY2xhc3NOYW1lPXtzdHlsZXMudGl0bGV9PlxuICAgICAgICB7dGl0bGV9XG4gICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICA8VHlwb2dyYXBoeVxuICAgICAgICB2YXJpYW50PVwiYm9keTFcIlxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5ib2R5fVxuICAgICAgICBzeD17eyBjb2xvcjogXCJ0ZXh0LnNlY29uZGFyeVwiIH19XG4gICAgICA+XG4gICAgICAgIHtib2R5fVxuICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgPEJ1dHRvblxuICAgICAgICB2YXJpYW50PVwiY29udGFpbmVkXCJcbiAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgICAgb25DbGljaz17b25DbGlja31cbiAgICAgID5cbiAgICAgICAge2J1dHRvbkxhYmVsfVxuICAgICAgPC9CdXR0b24+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBOb1RpY2tldHNGb3VuZDtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7XG4gIERvY3VtZW50LFxuICBQYWdlLFxuICBUZXh0LFxuICBWaWV3LFxuICBJbWFnZSxcbiAgU3R5bGVTaGVldCxcbiAgRm9udCxcbiAgcGRmXG59IGZyb20gXCJAcmVhY3QtcGRmL3JlbmRlcmVyXCI7XG5cbi8vIFRyYWNrIHJlZ2lzdGVyZWQgZm9udHMgdG8gYXZvaWQgcmUtcmVnaXN0ZXJpbmdcbmNvbnN0IHJlZ2lzdGVyZWRGb250cyA9IG5ldyBTZXQoKTtcblxuLy8gQnVpbHQtaW4gZmFsbGJhY2sgZm9udCAoYXZhaWxhYmxlIGluIEByZWFjdC1wZGYvcmVuZGVyZXIgd2l0aG91dCByZWdpc3RyYXRpb24pXG5jb25zdCBGQUxMQkFDS19GT05UID0gXCJIZWx2ZXRpY2FcIjtcblxuLy8gRGVmYXVsdCByZWNlaXB0IHNldHRpbmdzXG5jb25zdCBERUZBVUxUX1JFQ0VJUFRfU0VUVElOR1MgPSB7XG4gIHByaW1hcnlDb2xvcjogXCIjMzMzMzMzXCIsXG4gIGZvbnRGYW1pbHk6IG51bGwsIC8vIEZvbnQgZmFtaWx5IG5hbWUgKGNvbnN1bWVyIHNob3VsZCBwcm92aWRlIHRoaXMpXG4gIGZvbnRGaWxlOiBudWxsLCAvLyBVUkwgdG8gZm9udCBmaWxlICh0dGYpIC0gcmVxdWlyZWQgaWYgZm9udEZhbWlseSBpcyBwcm92aWRlZFxuICBwcmludExvZ286IG51bGwsXG4gIG9yZ2FuaXplckxlZ2FsTmFtZTogbnVsbCxcbiAgb3JnYW5pemVyQWRkcmVzc0xpbmUxOiBudWxsLFxuICBvcmdhbml6ZXJBZGRyZXNzTGluZTI6IG51bGwsXG4gIG9yZ2FuaXplckNpdHk6IG51bGwsXG4gIG9yZ2FuaXplclN0YXRlOiBudWxsLFxuICBvcmdhbml6ZXJQb3N0YWxDb2RlOiBudWxsLFxuICBvcmdhbml6ZXJDb3VudHJ5OiBudWxsLFxuICBvcmdhbml6ZXJUYXhJZDogbnVsbCxcbiAgb3JnYW5pemVyVGF4SWRMYWJlbDogbnVsbCxcbiAgc3VwcG9ydEVtYWlsOiBudWxsXG59O1xuXG4vKipcbiAqIFJlZ2lzdGVyIGEgY3VzdG9tIGZvbnQgZm9yIFBERiBnZW5lcmF0aW9uXG4gKiBAcGFyYW0ge3N0cmluZ30gZm9udEZhbWlseSAtIEZvbnQgZmFtaWx5IG5hbWVcbiAqIEBwYXJhbSB7c3RyaW5nfSBmb250RmlsZSAtIFVSTCB0byB0aGUgZm9udCBmaWxlIChtdXN0IGJlIHR0ZilcbiAqIEByZXR1cm5zIHtib29sZWFufSAtIFdoZXRoZXIgcmVnaXN0cmF0aW9uIHdhcyBzdWNjZXNzZnVsXG4gKi9cbmNvbnN0IHJlZ2lzdGVyRm9udCA9IChmb250RmFtaWx5LCBmb250RmlsZSkgPT4ge1xuICBpZiAoIWZvbnRGYW1pbHkgfHwgIWZvbnRGaWxlKSByZXR1cm4gZmFsc2U7XG4gIGlmIChyZWdpc3RlcmVkRm9udHMuaGFzKGZvbnRGYW1pbHkpKSByZXR1cm4gdHJ1ZTtcblxuICB0cnkge1xuICAgIEZvbnQucmVnaXN0ZXIoe1xuICAgICAgZmFtaWx5OiBmb250RmFtaWx5LFxuICAgICAgZm9udHM6IFtcbiAgICAgICAgeyBzcmM6IGZvbnRGaWxlLCBmb250V2VpZ2h0OiBcIm5vcm1hbFwiIH0sXG4gICAgICAgIHsgc3JjOiBmb250RmlsZSwgZm9udFdlaWdodDogXCJib2xkXCIgfVxuICAgICAgXVxuICAgIH0pO1xuICAgIHJlZ2lzdGVyZWRGb250cy5hZGQoZm9udEZhbWlseSk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgY29uc29sZS53YXJuKFwiRmFpbGVkIHRvIHJlZ2lzdGVyIGZvbnQ6XCIsIGVycm9yKTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn07XG5cbi8vIFZhbGlkYXRlIGltYWdlIFVSTCBiZWZvcmUgUERGIGdlbmVyYXRpb24gKHNhbWUgcGF0dGVybiBhcyBjZXJ0aWZpY2F0ZSlcbmNvbnN0IHZhbGlkYXRlSW1hZ2VVcmwgPSBhc3luYyAodXJsKSA9PiB7XG4gIGlmICghdXJsKSByZXR1cm4gbnVsbDtcblxuICB0cnkge1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2godXJsLCB7XG4gICAgICBtZXRob2Q6IFwiR0VUXCIsXG4gICAgICBtb2RlOiBcImNvcnNcIlxuICAgIH0pO1xuXG4gICAgaWYgKHJlc3BvbnNlLm9rKSB7XG4gICAgICByZXR1cm4gdXJsO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBjb25zb2xlLndhcm4oXCJJbWFnZSB2YWxpZGF0aW9uIGZhaWxlZDpcIiwgZXJyb3IpO1xuICAgIHJldHVybiBudWxsO1xuICB9XG59O1xuXG5jb25zdCBDVVJSRU5DWV9ERUNJTUFMUyA9IDI7XG5jb25zdCBNU19QRVJfU0VDT05EID0gMTAwMDtcbmNvbnN0IE1JTl9NQVNLX0xFTkdUSCA9IDI7XG5jb25zdCBNQVhfTUFTS19DSEFSUyA9IDQ7XG5cbmNvbnN0IGZvcm1hdEN1cnJlbmN5ID0gKGFtb3VudCwgY3VycmVuY3lTeW1ib2wgPSBcIiRcIiwgY3VycmVuY3kgPSBcIlVTRFwiKSA9PiB7XG4gIGNvbnN0IG51bUFtb3VudCA9IHBhcnNlRmxvYXQoYW1vdW50KSB8fCAwO1xuICByZXR1cm4gYCR7Y3VycmVuY3lTeW1ib2x9JHtudW1BbW91bnQudG9GaXhlZChDVVJSRU5DWV9ERUNJTUFMUyl9ICR7Y3VycmVuY3l9YDtcbn07XG5cbmNvbnN0IGZvcm1hdERhdGUgPSAodGltZXN0YW1wKSA9PiB7XG4gIGlmICghdGltZXN0YW1wKSByZXR1cm4gXCJcIjtcbiAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKHRpbWVzdGFtcCAqIE1TX1BFUl9TRUNPTkQpO1xuICByZXR1cm4gZGF0ZS50b0xvY2FsZURhdGVTdHJpbmcoXCJlbi1VU1wiLCB7XG4gICAgeWVhcjogXCJudW1lcmljXCIsXG4gICAgbW9udGg6IFwibG9uZ1wiLFxuICAgIGRheTogXCIyLWRpZ2l0XCJcbiAgfSk7XG59O1xuXG5jb25zdCBtYXNrUHJvbW9Db2RlID0gKGNvZGUpID0+IHtcbiAgaWYgKCFjb2RlIHx8IGNvZGUubGVuZ3RoIDw9IE1JTl9NQVNLX0xFTkdUSCkgcmV0dXJuIGNvZGU7XG4gIGNvbnN0IGNoYXJzID0gWy4uLmNvZGVdO1xuICBjb25zdCBmaXJzdCA9IGNoYXJzLnNoaWZ0KCk7XG4gIGNvbnN0IGxhc3QgPSBjaGFycy5wb3AoKTtcbiAgY29uc3QgbWFza0xlbmd0aCA9IE1hdGgubWluKGNoYXJzLmxlbmd0aCwgTUFYX01BU0tfQ0hBUlMpO1xuICByZXR1cm4gYCR7Zmlyc3R9JHtcIipcIi5yZXBlYXQobWFza0xlbmd0aCl9JHtsYXN0fWA7XG59O1xuXG5jb25zdCBjYXBpdGFsaXplID0gKHN0cikgPT4ge1xuICBpZiAoIXN0cikgcmV0dXJuIG51bGw7XG4gIGNvbnN0IFtmaXJzdCwgLi4ucmVzdF0gPSBzdHI7XG4gIHJldHVybiBmaXJzdC50b1VwcGVyQ2FzZSgpICsgcmVzdC5qb2luKFwiXCIpO1xufTtcblxuY29uc3QgZ2V0QmFkZ2VTdGF0dXMgPSAoYW1vdW50LCByZWZ1bmRlZEFtb3VudCkgPT4ge1xuICBjb25zdCBudW1BbW91bnQgPSBwYXJzZUZsb2F0KGFtb3VudCkgfHwgMDtcbiAgY29uc3QgbnVtUmVmdW5kZWQgPSBwYXJzZUZsb2F0KHJlZnVuZGVkQW1vdW50KSB8fCAwO1xuICBpZiAobnVtQW1vdW50ID4gMCAmJiBudW1SZWZ1bmRlZCA+PSBudW1BbW91bnQpIHtcbiAgICByZXR1cm4geyB0ZXh0OiBcIlJFRlVOREVEXCIsIGNvbG9yOiBcIiM2NjY2NjZcIiB9O1xuICB9XG4gIGlmIChudW1SZWZ1bmRlZCA+IDApIHtcbiAgICByZXR1cm4geyB0ZXh0OiBcIlBBUlRJQUwgUkVGVU5EXCIsIGNvbG9yOiBcIiNlNjdlMjJcIiB9O1xuICB9XG4gIHJldHVybiB7IHRleHQ6IFwiUEFJRFwiLCBjb2xvcjogXCIjMGE3YTJmXCIgfTtcbn07XG5cbmNvbnN0IGdldFBheW1lbnRNZXRob2RMYWJlbCA9IChvcmRlcikgPT4ge1xuICBjb25zdCB7IHBheW1lbnRfaW5mb190eXBlLCBwYXltZW50X21ldGhvZCB9ID0gb3JkZXI7XG5cbiAgc3dpdGNoIChwYXltZW50X2luZm9fdHlwZSkge1xuICAgIGNhc2UgXCJjYXJkXCI6XG4gICAgICByZXR1cm4gXCJDcmVkaXQgLyBEZWJpdCBDYXJkXCI7XG4gICAgY2FzZSBcImxpbmtcIjpcbiAgICAgIHJldHVybiBcIkxpbmsgUGF5bWVudFwiO1xuICAgIGNhc2UgXCJ1c19iYW5rX2FjY291bnRcIjpcbiAgICAgIHJldHVybiBcIkJhbmsgVHJhbnNmZXIgKEFDSClcIjtcbiAgICBjYXNlIFwiYWxpcGF5XCI6XG4gICAgICByZXR1cm4gXCJBbGlwYXlcIjtcbiAgICBkZWZhdWx0OlxuICAgICAgaWYgKHBheW1lbnRfbWV0aG9kID09PSBcIk9mZmxpbmVcIikgcmV0dXJuIFwiT2ZmbGluZSBQYXltZW50XCI7XG4gICAgICByZXR1cm4gXCJOL0FcIjtcbiAgfVxufTtcblxuY29uc3QgZm9ybWF0QWRkcmVzcyA9IChzZXR0aW5ncykgPT4ge1xuICBjb25zdCBwYXJ0cyA9IFtdO1xuICBpZiAoc2V0dGluZ3Mub3JnYW5pemVyQWRkcmVzc0xpbmUxKVxuICAgIHBhcnRzLnB1c2goc2V0dGluZ3Mub3JnYW5pemVyQWRkcmVzc0xpbmUxKTtcbiAgaWYgKHNldHRpbmdzLm9yZ2FuaXplckFkZHJlc3NMaW5lMilcbiAgICBwYXJ0cy5wdXNoKHNldHRpbmdzLm9yZ2FuaXplckFkZHJlc3NMaW5lMik7XG4gIGNvbnN0IGNpdHlTdGF0ZVppcCA9IFtcbiAgICBzZXR0aW5ncy5vcmdhbml6ZXJDaXR5LFxuICAgIHNldHRpbmdzLm9yZ2FuaXplclN0YXRlLFxuICAgIHNldHRpbmdzLm9yZ2FuaXplclBvc3RhbENvZGVcbiAgXVxuICAgIC5maWx0ZXIoQm9vbGVhbilcbiAgICAuam9pbihcIiwgXCIpO1xuICBpZiAoY2l0eVN0YXRlWmlwKSBwYXJ0cy5wdXNoKGNpdHlTdGF0ZVppcCk7XG4gIGlmIChzZXR0aW5ncy5vcmdhbml6ZXJDb3VudHJ5KSBwYXJ0cy5wdXNoKHNldHRpbmdzLm9yZ2FuaXplckNvdW50cnkpO1xuICByZXR1cm4gcGFydHM7XG59O1xuXG5jb25zdCBSZWNlaXB0UERGID0gKHsgb3JkZXIsIHN1bW1pdCwgc2V0dGluZ3MsIGxvZ29VcmwgfSkgPT4ge1xuICBjb25zdCBwcmltYXJ5Q29sb3IgPSBzZXR0aW5ncy5wcmltYXJ5Q29sb3IgfHwgXCIjMzMzMzMzXCI7XG4gIGNvbnN0IGZvbnRGYW1pbHkgPSBzZXR0aW5ncy5mb250RmFtaWx5IHx8IEZBTExCQUNLX0ZPTlQ7XG5cbiAgY29uc3Qgc3R5bGVzID0gU3R5bGVTaGVldC5jcmVhdGUoe1xuICAgIHBhZ2U6IHtcbiAgICAgIGJhY2tncm91bmRDb2xvcjogXCIjZmZmZmZmXCIsXG4gICAgICBmb250RmFtaWx5LFxuICAgICAgZm9udFNpemU6IDEwLFxuICAgICAgY29sb3I6IFwiIzMzMzMzM1wiLFxuICAgICAgcGFkZGluZzogNDBcbiAgICB9LFxuICAgIGhlYWRlcjoge1xuICAgICAgZmxleERpcmVjdGlvbjogXCJyb3dcIixcbiAgICAgIGp1c3RpZnlDb250ZW50OiBcInNwYWNlLWJldHdlZW5cIixcbiAgICAgIGFsaWduSXRlbXM6IFwiZmxleC1zdGFydFwiLFxuICAgICAgbWFyZ2luQm90dG9tOiA4LFxuICAgICAgYm9yZGVyQm90dG9tV2lkdGg6IDIsXG4gICAgICBib3JkZXJCb3R0b21Db2xvcjogXCIjZWVlZWVlXCIsXG4gICAgICBwYWRkaW5nQm90dG9tOiA4XG4gICAgfSxcbiAgICBoZWFkZXJMZWZ0OiB7IGZsZXg6IDEsIG1hcmdpblJpZ2h0OiAxMiB9LFxuICAgIGhlYWRlclN1YnRpdGxlOiB7IGZvbnRTaXplOiA5LCBjb2xvcjogXCIjNzc3Nzc3XCIsIG1hcmdpbkJvdHRvbTogNCB9LFxuICAgIGhlYWRlclRpdGxlUm93OiB7XG4gICAgICBmbGV4RGlyZWN0aW9uOiBcInJvd1wiLFxuICAgICAgYWxpZ25JdGVtczogXCJjZW50ZXJcIixcbiAgICAgIGZsZXhXcmFwOiBcIndyYXBcIixcbiAgICAgIG1hcmdpbkJvdHRvbTogNCxcbiAgICAgIGdhcDogOFxuICAgIH0sXG4gICAgaGVhZGVyVGl0bGU6IHtcbiAgICAgIGZvbnRTaXplOiAxNixcbiAgICAgIGZvbnRXZWlnaHQ6IFwiYm9sZFwiLFxuICAgICAgY29sb3I6IHByaW1hcnlDb2xvclxuICAgIH0sXG4gICAgaGVhZGVyVGFnbGluZTogeyBmb250U2l6ZTogOSwgY29sb3I6IFwiIzY2NjY2NlwiIH0sXG4gICAgcGFpZEJhZGdlOiB7XG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6IFwiIzBhN2EyZlwiLFxuICAgICAgY29sb3I6IFwiI2ZmZmZmZlwiLFxuICAgICAgZm9udFNpemU6IDksXG4gICAgICBmb250V2VpZ2h0OiBcImJvbGRcIixcbiAgICAgIHBhZGRpbmdWZXJ0aWNhbDogNCxcbiAgICAgIHBhZGRpbmdIb3Jpem9udGFsOiAxMixcbiAgICAgIGJvcmRlclJhZGl1czogMTBcbiAgICB9LFxuICAgIGhlYWRlclJpZ2h0OiB7IGFsaWduSXRlbXM6IFwiZmxleC1lbmRcIiB9LFxuICAgIGxvZ286IHsgbWF4V2lkdGg6IDEwMCwgbWF4SGVpZ2h0OiA0MCwgb2JqZWN0Rml0OiBcImNvbnRhaW5cIiB9LFxuICAgIHR3b0NvbDogeyBmbGV4RGlyZWN0aW9uOiBcInJvd1wiLCBqdXN0aWZ5Q29udGVudDogXCJzcGFjZS1iZXR3ZWVuXCIsIGdhcDogMjQgfSxcbiAgICBjb2xIYWxmOiB7IGZsZXg6IDEgfSxcbiAgICBzZWN0aW9uVGl0bGU6IHtcbiAgICAgIGZvbnRTaXplOiA5LFxuICAgICAgZm9udFdlaWdodDogXCJib2xkXCIsXG4gICAgICBtYXJnaW5Ub3A6IDEwLFxuICAgICAgbWFyZ2luQm90dG9tOiA2LFxuICAgICAgdGV4dFRyYW5zZm9ybTogXCJ1cHBlcmNhc2VcIixcbiAgICAgIGxldHRlclNwYWNpbmc6IDAuNixcbiAgICAgIGNvbG9yOiBcIiM1NTU1NTVcIlxuICAgIH0sXG4gICAgZmllbGRMYWJlbDogeyBmb250U2l6ZTogOCwgY29sb3I6IFwiIzc3Nzc3N1wiLCBtYXJnaW5Cb3R0b206IDEgfSxcbiAgICBmaWVsZFZhbHVlOiB7IGZvbnRTaXplOiAxMCwgZm9udFdlaWdodDogXCJib2xkXCIsIG1hcmdpbkJvdHRvbTogNCB9LFxuICAgIHNtYWxsTXV0ZWQ6IHsgZm9udFNpemU6IDgsIGNvbG9yOiBcIiM3Nzc3NzdcIiB9LFxuICAgIHRhYmxlOiB7IG1hcmdpblRvcDogNCB9LFxuICAgIHRhYmxlSGVhZGVyOiB7XG4gICAgICBmbGV4RGlyZWN0aW9uOiBcInJvd1wiLFxuICAgICAgYm9yZGVyQm90dG9tV2lkdGg6IDEsXG4gICAgICBib3JkZXJCb3R0b21Db2xvcjogXCIjY2NjY2NjXCIsXG4gICAgICBwYWRkaW5nOiA2XG4gICAgfSxcbiAgICB0YWJsZUhlYWRlckNlbGw6IHtcbiAgICAgIGZvbnRTaXplOiA4LFxuICAgICAgdGV4dFRyYW5zZm9ybTogXCJ1cHBlcmNhc2VcIixcbiAgICAgIGxldHRlclNwYWNpbmc6IDAuNSxcbiAgICAgIGNvbG9yOiBcIiM1NTU1NTVcIixcbiAgICAgIGZvbnRXZWlnaHQ6IFwiYm9sZFwiXG4gICAgfSxcbiAgICB0YWJsZVJvdzoge1xuICAgICAgZmxleERpcmVjdGlvbjogXCJyb3dcIixcbiAgICAgIGJvcmRlckJvdHRvbVdpZHRoOiAxLFxuICAgICAgYm9yZGVyQm90dG9tQ29sb3I6IFwiI2VlZWVlZVwiLFxuICAgICAgcGFkZGluZzogNlxuICAgIH0sXG4gICAgdGFibGVDZWxsOiB7IGZvbnRTaXplOiA5IH0sXG4gICAgdGV4dFJpZ2h0OiB7IHRleHRBbGlnbjogXCJyaWdodFwiIH0sXG4gICAgdG90YWxzVGFibGU6IHsgbWFyZ2luVG9wOiAxNiwgbWFyZ2luTGVmdDogXCJhdXRvXCIsIHdpZHRoOiAyMjAgfSxcbiAgICB0b3RhbHNSb3c6IHtcbiAgICAgIGZsZXhEaXJlY3Rpb246IFwicm93XCIsXG4gICAgICBqdXN0aWZ5Q29udGVudDogXCJzcGFjZS1iZXR3ZWVuXCIsXG4gICAgICBwYWRkaW5nOiA0XG4gICAgfSxcbiAgICB0b3RhbHNMYWJlbDogeyBmb250U2l6ZTogOSwgY29sb3I6IFwiIzU1NTU1NVwiIH0sXG4gICAgdG90YWxzVmFsdWU6IHsgZm9udFNpemU6IDksIGZvbnRXZWlnaHQ6IFwiYm9sZFwiLCB0ZXh0QWxpZ246IFwicmlnaHRcIiB9LFxuICAgIHRvdGFsc1RvdGFsUm93OiB7XG4gICAgICBib3JkZXJUb3BXaWR0aDogMSxcbiAgICAgIGJvcmRlclRvcENvbG9yOiBcIiNjY2NjY2NcIixcbiAgICAgIHBhZGRpbmdUb3A6IDYsXG4gICAgICBtYXJnaW5Ub3A6IDRcbiAgICB9LFxuICAgIHRvdGFsc0JhbGFuY2VSb3c6IHsgY29sb3I6IFwiIzBhN2EyZlwiIH0sXG4gICAgYm94OiB7XG4gICAgICBib3JkZXJXaWR0aDogMSxcbiAgICAgIGJvcmRlckNvbG9yOiBwcmltYXJ5Q29sb3IsXG4gICAgICBib3JkZXJSYWRpdXM6IDYsXG4gICAgICBwYWRkaW5nOiAxMCxcbiAgICAgIGJhY2tncm91bmRDb2xvcjogXCIjZmZmOGY4XCIsXG4gICAgICBtYXJnaW5Ub3A6IDE2XG4gICAgfSxcbiAgICBib3hUaXRsZToge1xuICAgICAgZm9udFNpemU6IDEwLFxuICAgICAgZm9udFdlaWdodDogXCJib2xkXCIsXG4gICAgICBjb2xvcjogcHJpbWFyeUNvbG9yLFxuICAgICAgbWFyZ2luQm90dG9tOiA2XG4gICAgfSxcbiAgICBmb290ZXI6IHtcbiAgICAgIG1hcmdpblRvcDogMjQsXG4gICAgICBmb250U2l6ZTogOCxcbiAgICAgIGNvbG9yOiBcIiM2NjY2NjZcIixcbiAgICAgIGJvcmRlclRvcFdpZHRoOiAxLFxuICAgICAgYm9yZGVyVG9wQ29sb3I6IFwiI2VlZWVlZVwiLFxuICAgICAgcGFkZGluZ1RvcDogMTBcbiAgICB9XG4gIH0pO1xuXG4gIGNvbnN0IHRpY2tldHMgPSBvcmRlci50aWNrZXRzIHx8IFtdO1xuICBjb25zdCBjdXJyZW5jeVN5bWJvbCA9IG9yZGVyLmN1cnJlbmN5X3N5bWJvbCB8fCBcIiRcIjtcbiAgY29uc3QgY3VycmVuY3kgPSBvcmRlci5jdXJyZW5jeSB8fCBcIlVTRFwiO1xuICBjb25zdCBhZGRyZXNzTGluZXMgPSBmb3JtYXRBZGRyZXNzKHNldHRpbmdzKTtcbiAgY29uc3QgYmFkZ2UgPSBnZXRCYWRnZVN0YXR1cyhvcmRlci5hbW91bnQsIG9yZGVyLnJlZnVuZGVkX2Ftb3VudCk7XG5cbiAgcmV0dXJuIChcbiAgICA8RG9jdW1lbnQ+XG4gICAgICA8UGFnZSBzaXplPVwiQTRcIiBzdHlsZT17c3R5bGVzLnBhZ2V9PlxuICAgICAgICA8VmlldyBzdHlsZT17c3R5bGVzLmhlYWRlcn0+XG4gICAgICAgICAgPFZpZXcgc3R5bGU9e3N0eWxlcy5oZWFkZXJMZWZ0fT5cbiAgICAgICAgICAgIDxUZXh0IHN0eWxlPXtzdHlsZXMuaGVhZGVyU3VidGl0bGV9PlxuICAgICAgICAgICAgICB7c3VtbWl0Lm5hbWV9XG4gICAgICAgICAgICAgIHtzdW1taXQudGFnbGluZSA/IGAg4oCUICR7c3VtbWl0LnRhZ2xpbmV9YCA6IFwiXCJ9XG4gICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICA8VmlldyBzdHlsZT17c3R5bGVzLmhlYWRlclRpdGxlUm93fT5cbiAgICAgICAgICAgICAgPFRleHQgc3R5bGU9e3N0eWxlcy5oZWFkZXJUaXRsZX0+XG4gICAgICAgICAgICAgICAgUGF5bWVudCBSZWNlaXB0IC8gSW52b2ljZSBmb3IgUmVpbWJ1cnNlbWVudFxuICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgIDxUZXh0XG4gICAgICAgICAgICAgICAgc3R5bGU9e1tzdHlsZXMucGFpZEJhZGdlLCB7IGJhY2tncm91bmRDb2xvcjogYmFkZ2UuY29sb3IgfV19XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7YmFkZ2UudGV4dH1cbiAgICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgPC9WaWV3PlxuICAgICAgICAgICAgPFRleHQgc3R5bGU9e3N0eWxlcy5oZWFkZXJUYWdsaW5lfT5cbiAgICAgICAgICAgICAgVGhpcyBkb2N1bWVudCBjb25maXJtcyB0aGF0IHlvdXIgcmVnaXN0cmF0aW9uIGhhcyBiZWVuIHBhaWQgaW5cbiAgICAgICAgICAgICAgZnVsbC4gS2VlcCBpdCBmb3IgeW91ciByZWNvcmRzIG9yIHN1Ym1pdCBpdCBmb3IgZW1wbG95ZXJcbiAgICAgICAgICAgICAgcmVpbWJ1cnNlbWVudC5cbiAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICA8L1ZpZXc+XG4gICAgICAgICAgPFZpZXcgc3R5bGU9e3N0eWxlcy5oZWFkZXJSaWdodH0+XG4gICAgICAgICAgICB7bG9nb1VybCAmJiA8SW1hZ2Ugc3JjPXtsb2dvVXJsfSBzdHlsZT17c3R5bGVzLmxvZ299IC8+fVxuICAgICAgICAgIDwvVmlldz5cbiAgICAgICAgPC9WaWV3PlxuXG4gICAgICAgIDxWaWV3IHN0eWxlPXtzdHlsZXMudHdvQ29sfT5cbiAgICAgICAgICA8VmlldyBzdHlsZT17c3R5bGVzLmNvbEhhbGZ9PlxuICAgICAgICAgICAgPFRleHQgc3R5bGU9e3N0eWxlcy5zZWN0aW9uVGl0bGV9Pk9yZ2FuaXplcjwvVGV4dD5cbiAgICAgICAgICAgIDxUZXh0IHN0eWxlPXtzdHlsZXMuZmllbGRWYWx1ZX0+XG4gICAgICAgICAgICAgIHtzZXR0aW5ncy5vcmdhbml6ZXJMZWdhbE5hbWUgfHwgc3VtbWl0Lm5hbWV9XG4gICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICB7YWRkcmVzc0xpbmVzLm1hcCgobGluZSkgPT4gKFxuICAgICAgICAgICAgICA8VGV4dCBrZXk9e2xpbmV9IHN0eWxlPXtzdHlsZXMudGFibGVDZWxsfT5cbiAgICAgICAgICAgICAgICB7bGluZX1cbiAgICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICB7c2V0dGluZ3Mub3JnYW5pemVyVGF4SWQgJiYgc2V0dGluZ3Mub3JnYW5pemVyVGF4SWRMYWJlbCAmJiAoXG4gICAgICAgICAgICAgIDxUZXh0IHN0eWxlPXtzdHlsZXMuc21hbGxNdXRlZH0+XG4gICAgICAgICAgICAgICAge3NldHRpbmdzLm9yZ2FuaXplclRheElkTGFiZWx9OiB7c2V0dGluZ3Mub3JnYW5pemVyVGF4SWR9XG4gICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICB7c2V0dGluZ3Muc3VwcG9ydEVtYWlsICYmIChcbiAgICAgICAgICAgICAgPFRleHQgc3R5bGU9e3N0eWxlcy5zbWFsbE11dGVkfT5cbiAgICAgICAgICAgICAgICBTdXBwb3J0OiB7c2V0dGluZ3Muc3VwcG9ydEVtYWlsfVxuICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIDwvVmlldz5cbiAgICAgICAgICA8VmlldyBzdHlsZT17c3R5bGVzLmNvbEhhbGZ9PlxuICAgICAgICAgICAgPFRleHQgc3R5bGU9e3N0eWxlcy5zZWN0aW9uVGl0bGV9PkRvY3VtZW50IERldGFpbHM8L1RleHQ+XG4gICAgICAgICAgICA8VGV4dCBzdHlsZT17c3R5bGVzLmZpZWxkTGFiZWx9PkRvY3VtZW50IE51bWJlcjwvVGV4dD5cbiAgICAgICAgICAgIDxUZXh0IHN0eWxlPXtzdHlsZXMuZmllbGRWYWx1ZX0+e29yZGVyLm51bWJlcn08L1RleHQ+XG4gICAgICAgICAgICA8VGV4dCBzdHlsZT17c3R5bGVzLmZpZWxkTGFiZWx9Pklzc3VlIERhdGU8L1RleHQ+XG4gICAgICAgICAgICA8VGV4dCBzdHlsZT17c3R5bGVzLmZpZWxkVmFsdWV9PntvcmRlci5pc3N1ZV9kYXRlfTwvVGV4dD5cbiAgICAgICAgICAgIDxUZXh0IHN0eWxlPXtzdHlsZXMuZmllbGRMYWJlbH0+UHVyY2hhc2UgRGF0ZTwvVGV4dD5cbiAgICAgICAgICAgIDxUZXh0IHN0eWxlPXtzdHlsZXMuZmllbGRWYWx1ZX0+e29yZGVyLnB1cmNoYXNlZF9kYXRlfTwvVGV4dD5cbiAgICAgICAgICAgIHtvcmRlci5jb25maXJtYXRpb25fZGF0ZSAmJiAoXG4gICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgPFRleHQgc3R5bGU9e3N0eWxlcy5maWVsZExhYmVsfT5PcmRlciBDb25maXJtYXRpb24gRW1haWw8L1RleHQ+XG4gICAgICAgICAgICAgICAgPFRleHQgc3R5bGU9e3N0eWxlcy5maWVsZFZhbHVlfT57b3JkZXIuY29uZmlybWF0aW9uX2RhdGV9PC9UZXh0PlxuICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC9WaWV3PlxuICAgICAgICA8L1ZpZXc+XG5cbiAgICAgICAgPFZpZXcgc3R5bGU9e1tzdHlsZXMudHdvQ29sLCB7IG1hcmdpblRvcDogNCB9XX0+XG4gICAgICAgICAgPFZpZXcgc3R5bGU9e3N0eWxlcy5jb2xIYWxmfT5cbiAgICAgICAgICAgIDxUZXh0IHN0eWxlPXtzdHlsZXMuc2VjdGlvblRpdGxlfT5CaWxsZWQgVG88L1RleHQ+XG4gICAgICAgICAgICA8VGV4dCBzdHlsZT17c3R5bGVzLmZpZWxkVmFsdWV9PntvcmRlci5vd25lcl9mdWxsX25hbWV9PC9UZXh0PlxuICAgICAgICAgICAge29yZGVyLm93bmVyX2NvbXBhbnkgJiYgKFxuICAgICAgICAgICAgICA8VGV4dCBzdHlsZT17c3R5bGVzLnRhYmxlQ2VsbH0+e29yZGVyLm93bmVyX2NvbXBhbnl9PC9UZXh0PlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIHtvcmRlci5vd25lcl9lbWFpbCAmJiAoXG4gICAgICAgICAgICAgIDxUZXh0IHN0eWxlPXtzdHlsZXMuc21hbGxNdXRlZH0+e29yZGVyLm93bmVyX2VtYWlsfTwvVGV4dD5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC9WaWV3PlxuICAgICAgICAgIDxWaWV3IHN0eWxlPXtzdHlsZXMuY29sSGFsZn0+XG4gICAgICAgICAgICA8VGV4dCBzdHlsZT17c3R5bGVzLnNlY3Rpb25UaXRsZX0+RXZlbnQ8L1RleHQ+XG4gICAgICAgICAgICA8VGV4dCBzdHlsZT17c3R5bGVzLmZpZWxkVmFsdWV9PntzdW1taXQubmFtZX08L1RleHQ+XG4gICAgICAgICAgPC9WaWV3PlxuICAgICAgICA8L1ZpZXc+XG5cbiAgICAgICAgPFRleHQgc3R5bGU9e1tzdHlsZXMuc2VjdGlvblRpdGxlLCB7IG1hcmdpblRvcDogMjAgfV19PlxuICAgICAgICAgIFJlZ2lzdHJhdGlvbiBTdW1tYXJ5XG4gICAgICAgIDwvVGV4dD5cbiAgICAgICAgPFZpZXcgc3R5bGU9e3N0eWxlcy50YWJsZX0+XG4gICAgICAgICAgPFZpZXcgc3R5bGU9e3N0eWxlcy50YWJsZUhlYWRlcn0+XG4gICAgICAgICAgICA8VGV4dCBzdHlsZT17W3N0eWxlcy50YWJsZUhlYWRlckNlbGwsIHsgd2lkdGg6IFwiNDAlXCIgfV19PlxuICAgICAgICAgICAgICBEZXNjcmlwdGlvblxuICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgPFRleHRcbiAgICAgICAgICAgICAgc3R5bGU9e1tcbiAgICAgICAgICAgICAgICBzdHlsZXMudGFibGVIZWFkZXJDZWxsLFxuICAgICAgICAgICAgICAgIHN0eWxlcy50ZXh0UmlnaHQsXG4gICAgICAgICAgICAgICAgeyB3aWR0aDogXCIxNSVcIiB9XG4gICAgICAgICAgICAgIF19XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIFF0eVxuICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgPFRleHRcbiAgICAgICAgICAgICAgc3R5bGU9e1tcbiAgICAgICAgICAgICAgICBzdHlsZXMudGFibGVIZWFkZXJDZWxsLFxuICAgICAgICAgICAgICAgIHN0eWxlcy50ZXh0UmlnaHQsXG4gICAgICAgICAgICAgICAgeyB3aWR0aDogXCIyMiVcIiB9XG4gICAgICAgICAgICAgIF19XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIFVuaXQgUHJpY2VcbiAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgIDxUZXh0XG4gICAgICAgICAgICAgIHN0eWxlPXtbXG4gICAgICAgICAgICAgICAgc3R5bGVzLnRhYmxlSGVhZGVyQ2VsbCxcbiAgICAgICAgICAgICAgICBzdHlsZXMudGV4dFJpZ2h0LFxuICAgICAgICAgICAgICAgIHsgd2lkdGg6IFwiMjMlXCIgfVxuICAgICAgICAgICAgICBdfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICBBbW91bnRcbiAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICA8L1ZpZXc+XG4gICAgICAgICAge3RpY2tldHMubGVuZ3RoID4gMCA/IChcbiAgICAgICAgICAgIHRpY2tldHMubWFwKCh0aWNrZXQpID0+IChcbiAgICAgICAgICAgICAgPFZpZXcga2V5PXt0aWNrZXQubnVtYmVyfSBzdHlsZT17c3R5bGVzLnRhYmxlUm93fT5cbiAgICAgICAgICAgICAgICA8VmlldyBzdHlsZT17eyB3aWR0aDogXCI0MCVcIiB9fT5cbiAgICAgICAgICAgICAgICAgIDxUZXh0IHN0eWxlPXtzdHlsZXMudGFibGVDZWxsfT5cbiAgICAgICAgICAgICAgICAgICAge3RpY2tldC50aWNrZXRfdHlwZV9uYW1lIHx8IHRpY2tldC50aWNrZXRfdHlwZT8ubmFtZX1cbiAgICAgICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgICAgICAgIHt0aWNrZXQub3duZXJfZW1haWwgJiYgKFxuICAgICAgICAgICAgICAgICAgICA8VGV4dCBzdHlsZT17c3R5bGVzLnNtYWxsTXV0ZWR9PlxuICAgICAgICAgICAgICAgICAgICAgIEF0dGVuZGVlOiB7dGlja2V0Lm93bmVyX2VtYWlsfVxuICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAge3RpY2tldC5wcm9tb19jb2RlICYmIChcbiAgICAgICAgICAgICAgICAgICAgPFRleHQgc3R5bGU9e3N0eWxlcy5zbWFsbE11dGVkfT5cbiAgICAgICAgICAgICAgICAgICAgICBQcm9tbyBDb2RlOiB7bWFza1Byb21vQ29kZSh0aWNrZXQucHJvbW9fY29kZSl9XG4gICAgICAgICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgPC9WaWV3PlxuICAgICAgICAgICAgICAgIDxUZXh0XG4gICAgICAgICAgICAgICAgICBzdHlsZT17W3N0eWxlcy50YWJsZUNlbGwsIHN0eWxlcy50ZXh0UmlnaHQsIHsgd2lkdGg6IFwiMTUlXCIgfV19XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgICAgICA8VGV4dFxuICAgICAgICAgICAgICAgICAgc3R5bGU9e1tzdHlsZXMudGFibGVDZWxsLCBzdHlsZXMudGV4dFJpZ2h0LCB7IHdpZHRoOiBcIjIyJVwiIH1dfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIHtmb3JtYXRDdXJyZW5jeShcbiAgICAgICAgICAgICAgICAgICAgdGlja2V0LmZpbmFsX2Ftb3VudCB8fCB0aWNrZXQucmF3X2Nvc3QsXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbmN5U3ltYm9sLFxuICAgICAgICAgICAgICAgICAgICBjdXJyZW5jeVxuICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgPFRleHRcbiAgICAgICAgICAgICAgICAgIHN0eWxlPXtbc3R5bGVzLnRhYmxlQ2VsbCwgc3R5bGVzLnRleHRSaWdodCwgeyB3aWR0aDogXCIyMyVcIiB9XX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB7Zm9ybWF0Q3VycmVuY3koXG4gICAgICAgICAgICAgICAgICAgIHRpY2tldC5maW5hbF9hbW91bnQgfHwgdGlja2V0LnJhd19jb3N0LFxuICAgICAgICAgICAgICAgICAgICBjdXJyZW5jeVN5bWJvbCxcbiAgICAgICAgICAgICAgICAgICAgY3VycmVuY3lcbiAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgICA8L1ZpZXc+XG4gICAgICAgICAgICApKVxuICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICA8VmlldyBzdHlsZT17c3R5bGVzLnRhYmxlUm93fT5cbiAgICAgICAgICAgICAgPFRleHQgc3R5bGU9e1tzdHlsZXMudGFibGVDZWxsLCB7IHdpZHRoOiBcIjQwJVwiIH1dfT5cbiAgICAgICAgICAgICAgICBDb25mZXJlbmNlIFJlZ2lzdHJhdGlvblxuICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgIDxUZXh0XG4gICAgICAgICAgICAgICAgc3R5bGU9e1tzdHlsZXMudGFibGVDZWxsLCBzdHlsZXMudGV4dFJpZ2h0LCB7IHdpZHRoOiBcIjE1JVwiIH1dfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgIDxUZXh0XG4gICAgICAgICAgICAgICAgc3R5bGU9e1tzdHlsZXMudGFibGVDZWxsLCBzdHlsZXMudGV4dFJpZ2h0LCB7IHdpZHRoOiBcIjIyJVwiIH1dfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge2Zvcm1hdEN1cnJlbmN5KFxuICAgICAgICAgICAgICAgICAgb3JkZXIucmF3X2Ftb3VudCB8fCBvcmRlci5hbW91bnQsXG4gICAgICAgICAgICAgICAgICBjdXJyZW5jeVN5bWJvbCxcbiAgICAgICAgICAgICAgICAgIGN1cnJlbmN5XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgICA8VGV4dFxuICAgICAgICAgICAgICAgIHN0eWxlPXtbc3R5bGVzLnRhYmxlQ2VsbCwgc3R5bGVzLnRleHRSaWdodCwgeyB3aWR0aDogXCIyMyVcIiB9XX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHtmb3JtYXRDdXJyZW5jeShcbiAgICAgICAgICAgICAgICAgIG9yZGVyLnJhd19hbW91bnQgfHwgb3JkZXIuYW1vdW50LFxuICAgICAgICAgICAgICAgICAgY3VycmVuY3lTeW1ib2wsXG4gICAgICAgICAgICAgICAgICBjdXJyZW5jeVxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgIDwvVmlldz5cbiAgICAgICAgICApfVxuICAgICAgICA8L1ZpZXc+XG5cbiAgICAgICAgPFZpZXcgc3R5bGU9e3N0eWxlcy50b3RhbHNUYWJsZX0+XG4gICAgICAgICAge29yZGVyLnJhd19hbW91bnQgIT09IHVuZGVmaW5lZCAmJiAoXG4gICAgICAgICAgICA8VmlldyBzdHlsZT17c3R5bGVzLnRvdGFsc1Jvd30+XG4gICAgICAgICAgICAgIDxUZXh0IHN0eWxlPXtzdHlsZXMudG90YWxzTGFiZWx9PkFtb3VudDwvVGV4dD5cbiAgICAgICAgICAgICAgPFRleHQgc3R5bGU9e3N0eWxlcy50b3RhbHNWYWx1ZX0+XG4gICAgICAgICAgICAgICAge2Zvcm1hdEN1cnJlbmN5KG9yZGVyLnJhd19hbW91bnQsIGN1cnJlbmN5U3ltYm9sLCBjdXJyZW5jeSl9XG4gICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgIDwvVmlldz5cbiAgICAgICAgICApfVxuICAgICAgICAgIHtvcmRlci5kaXNjb3VudCAmJiBwYXJzZUZsb2F0KG9yZGVyLmRpc2NvdW50KSA+IDAgJiYgKFxuICAgICAgICAgICAgPFZpZXcgc3R5bGU9e3N0eWxlcy50b3RhbHNSb3d9PlxuICAgICAgICAgICAgICA8VGV4dCBzdHlsZT17c3R5bGVzLnRvdGFsc0xhYmVsfT5EaXNjb3VudDwvVGV4dD5cbiAgICAgICAgICAgICAgPFRleHQgc3R5bGU9e3N0eWxlcy50b3RhbHNWYWx1ZX0+XG4gICAgICAgICAgICAgICAgLXtmb3JtYXRDdXJyZW5jeShvcmRlci5kaXNjb3VudCwgY3VycmVuY3lTeW1ib2wsIGN1cnJlbmN5KX1cbiAgICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgPC9WaWV3PlxuICAgICAgICAgICl9XG4gICAgICAgICAge29yZGVyLmFwcGxpZWRfdGF4ZXMubWFwKCh0YXgpID0+IChcbiAgICAgICAgICAgIDxWaWV3IGtleT17dGF4LmlkfSBzdHlsZT17c3R5bGVzLnRvdGFsc1Jvd30+XG4gICAgICAgICAgICAgIDxUZXh0IHN0eWxlPXtzdHlsZXMudG90YWxzTGFiZWx9Pnt0YXgubmFtZX08L1RleHQ+XG4gICAgICAgICAgICAgIDxUZXh0IHN0eWxlPXtzdHlsZXMudG90YWxzVmFsdWV9PlxuICAgICAgICAgICAgICAgICt7Zm9ybWF0Q3VycmVuY3kodGF4LmFtb3VudCwgY3VycmVuY3lTeW1ib2wsIGN1cnJlbmN5KX1cbiAgICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgPC9WaWV3PlxuICAgICAgICAgICkpfVxuICAgICAgICAgIDxWaWV3IHN0eWxlPXtbc3R5bGVzLnRvdGFsc1Jvdywgc3R5bGVzLnRvdGFsc1RvdGFsUm93XX0+XG4gICAgICAgICAgICA8VGV4dCBzdHlsZT17W3N0eWxlcy50b3RhbHNMYWJlbCwgeyBmb250V2VpZ2h0OiBcImJvbGRcIiB9XX0+XG4gICAgICAgICAgICAgIEFtb3VudCBQYWlkXG4gICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICA8VGV4dCBzdHlsZT17W3N0eWxlcy50b3RhbHNWYWx1ZSwgeyBmb250V2VpZ2h0OiBcImJvbGRcIiB9XX0+XG4gICAgICAgICAgICAgIHtmb3JtYXRDdXJyZW5jeShvcmRlci5hbW91bnQsIGN1cnJlbmN5U3ltYm9sLCBjdXJyZW5jeSl9XG4gICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgPC9WaWV3PlxuICAgICAgICAgIHtwYXJzZUZsb2F0KG9yZGVyLnJlZnVuZGVkX2Ftb3VudCkgPiAwICYmIChcbiAgICAgICAgICAgIDxWaWV3IHN0eWxlPXtzdHlsZXMudG90YWxzUm93fT5cbiAgICAgICAgICAgICAgPFRleHQgc3R5bGU9e3N0eWxlcy50b3RhbHNMYWJlbH0+UmVmdW5kZWQ8L1RleHQ+XG4gICAgICAgICAgICAgIDxUZXh0IHN0eWxlPXtzdHlsZXMudG90YWxzVmFsdWV9PlxuICAgICAgICAgICAgICAgIC1cbiAgICAgICAgICAgICAgICB7Zm9ybWF0Q3VycmVuY3koXG4gICAgICAgICAgICAgICAgICBvcmRlci5yZWZ1bmRlZF9hbW91bnQsXG4gICAgICAgICAgICAgICAgICBjdXJyZW5jeVN5bWJvbCxcbiAgICAgICAgICAgICAgICAgIGN1cnJlbmN5XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgPC9WaWV3PlxuICAgICAgICAgICl9XG4gICAgICAgICAgPFZpZXcgc3R5bGU9e1tzdHlsZXMudG90YWxzUm93LCBzdHlsZXMudG90YWxzQmFsYW5jZVJvd119PlxuICAgICAgICAgICAgPFRleHQgc3R5bGU9e1tzdHlsZXMudG90YWxzTGFiZWwsIHsgZm9udFdlaWdodDogXCJib2xkXCIgfV19PlxuICAgICAgICAgICAgICBCYWxhbmNlIER1ZVxuICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgPFRleHQgc3R5bGU9e1tzdHlsZXMudG90YWxzVmFsdWUsIHsgZm9udFdlaWdodDogXCJib2xkXCIgfV19PlxuICAgICAgICAgICAgICB7Zm9ybWF0Q3VycmVuY3koMCwgY3VycmVuY3lTeW1ib2wsIGN1cnJlbmN5KX1cbiAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICA8L1ZpZXc+XG4gICAgICAgIDwvVmlldz5cblxuICAgICAgICA8VGV4dCBzdHlsZT17c3R5bGVzLnNlY3Rpb25UaXRsZX0+UGF5bWVudCBJbmZvcm1hdGlvbjwvVGV4dD5cbiAgICAgICAgPFZpZXcgc3R5bGU9e3N0eWxlcy50YWJsZX0+XG4gICAgICAgICAgPFZpZXcgc3R5bGU9e3N0eWxlcy50YWJsZUhlYWRlcn0+XG4gICAgICAgICAgICA8VGV4dCBzdHlsZT17W3N0eWxlcy50YWJsZUhlYWRlckNlbGwsIHsgd2lkdGg6IFwiMzUlXCIgfV19PlxuICAgICAgICAgICAgICBGaWVsZFxuICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgPFRleHQgc3R5bGU9e1tzdHlsZXMudGFibGVIZWFkZXJDZWxsLCB7IHdpZHRoOiBcIjY1JVwiIH1dfT5cbiAgICAgICAgICAgICAgVmFsdWVcbiAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICA8L1ZpZXc+XG4gICAgICAgICAgPFZpZXcgc3R5bGU9e3N0eWxlcy50YWJsZVJvd30+XG4gICAgICAgICAgICA8VGV4dCBzdHlsZT17W3N0eWxlcy50YWJsZUNlbGwsIHsgd2lkdGg6IFwiMzUlXCIgfV19PlxuICAgICAgICAgICAgICBQYXltZW50IE1ldGhvZFxuICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgPFRleHQgc3R5bGU9e1tzdHlsZXMudGFibGVDZWxsLCB7IHdpZHRoOiBcIjY1JVwiIH1dfT5cbiAgICAgICAgICAgICAge29yZGVyLnBheW1lbnRfbWV0aG9kX3JlYWRhYmxlfVxuICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgIDwvVmlldz5cbiAgICAgICAgICB7b3JkZXIuY3JlZGl0X2NhcmRfdHlwZSAmJiAoXG4gICAgICAgICAgICA8VmlldyBzdHlsZT17c3R5bGVzLnRhYmxlUm93fT5cbiAgICAgICAgICAgICAgPFRleHQgc3R5bGU9e1tzdHlsZXMudGFibGVDZWxsLCB7IHdpZHRoOiBcIjM1JVwiIH1dfT5cbiAgICAgICAgICAgICAgICBDYXJkIFR5cGVcbiAgICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgICA8VGV4dCBzdHlsZT17W3N0eWxlcy50YWJsZUNlbGwsIHsgd2lkdGg6IFwiNjUlXCIgfV19PlxuICAgICAgICAgICAgICAgIHtvcmRlci5jcmVkaXRfY2FyZF90eXBlfVxuICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICA8L1ZpZXc+XG4gICAgICAgICAgKX1cbiAgICAgICAgICB7b3JkZXIuY3JlZGl0X2NhcmRfNG51bWJlciAmJiAoXG4gICAgICAgICAgICA8VmlldyBzdHlsZT17c3R5bGVzLnRhYmxlUm93fT5cbiAgICAgICAgICAgICAgPFRleHQgc3R5bGU9e1tzdHlsZXMudGFibGVDZWxsLCB7IHdpZHRoOiBcIjM1JVwiIH1dfT5cbiAgICAgICAgICAgICAgICBMYXN0IEZvdXJcbiAgICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgICA8VGV4dCBzdHlsZT17W3N0eWxlcy50YWJsZUNlbGwsIHsgd2lkdGg6IFwiNjUlXCIgfV19PlxuICAgICAgICAgICAgICAgIHtvcmRlci5jcmVkaXRfY2FyZF80bnVtYmVyfVxuICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICA8L1ZpZXc+XG4gICAgICAgICAgKX1cbiAgICAgICAgICA8VmlldyBzdHlsZT17c3R5bGVzLnRhYmxlUm93fT5cbiAgICAgICAgICAgIDxUZXh0IHN0eWxlPXtbc3R5bGVzLnRhYmxlQ2VsbCwgeyB3aWR0aDogXCIzNSVcIiB9XX0+XG4gICAgICAgICAgICAgIE9yZGVyIE51bWJlclxuICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgPFRleHQgc3R5bGU9e1tzdHlsZXMudGFibGVDZWxsLCB7IHdpZHRoOiBcIjY1JVwiIH1dfT5cbiAgICAgICAgICAgICAge29yZGVyLm51bWJlcn1cbiAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICA8L1ZpZXc+XG4gICAgICAgIDwvVmlldz5cblxuICAgICAgICA8VmlldyBzdHlsZT17c3R5bGVzLmJveH0+XG4gICAgICAgICAgPFRleHQgc3R5bGU9e3N0eWxlcy5ib3hUaXRsZX0+Rm9yIEVtcGxveWVyIC8gUmVpbWJ1cnNlbWVudCBVc2U8L1RleHQ+XG4gICAgICAgICAgPFRleHQgc3R5bGU9e3sgZm9udFNpemU6IDEwIH19PlxuICAgICAgICAgICAgVGhpcyBpcyBhIHBheW1lbnQgcmVjZWlwdCBjb25maXJtaW5nIHRoZXtcIiBcIn1cbiAgICAgICAgICAgIDxUZXh0IHN0eWxlPXt7IGZvbnRXZWlnaHQ6IFwiYm9sZFwiIH19PmFtb3VudCBwYWlkPC9UZXh0PiBoYXMgYmVlblxuICAgICAgICAgICAgcGFpZCBpbiBmdWxsIGFuZCBzZXJ2ZXMgYXMgYm90aCBhbiBpbnZvaWNlIGFuZCByZWNlaXB0LlxuICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgPC9WaWV3PlxuXG4gICAgICAgIDxWaWV3IHN0eWxlPXtzdHlsZXMuZm9vdGVyfT5cbiAgICAgICAgICA8VGV4dD5UaGFuayB5b3UgZm9yIHJlZ2lzdGVyaW5nIGZvciB7c3VtbWl0Lm5hbWV9LjwvVGV4dD5cbiAgICAgICAgICA8VGV4dCBzdHlsZT17eyBtYXJnaW5Ub3A6IDQgfX0+XG4gICAgICAgICAgICBUaGlzIFBERi9yZWNlaXB0IGlzIGdlbmVyYXRlZCBmcm9tIHlvdXIgb3JkZXIgY29uZmlybWF0aW9uIGFuZCBpc1xuICAgICAgICAgICAgaW50ZW5kZWQgZm9yIHJlY29yZGtlZXBpbmcgYW5kIHJlaW1idXJzZW1lbnQgcHVycG9zZXMuXG4gICAgICAgICAgPC9UZXh0PlxuICAgICAgICA8L1ZpZXc+XG4gICAgICA8L1BhZ2U+XG4gICAgPC9Eb2N1bWVudD5cbiAgKTtcbn07XG5cbi8qKlxuICogR2VuZXJhdGUgYW5kIGRvd25sb2FkIGEgcmVjZWlwdCBQREZcbiAqIEBwYXJhbSB7T2JqZWN0fSBwYXJhbXNcbiAqIEBwYXJhbSB7T2JqZWN0fSBwYXJhbXMub3JkZXIgLSBPcmRlciBkYXRhXG4gKiBAcGFyYW0ge09iamVjdH0gcGFyYW1zLnN1bW1pdCAtIFN1bW1pdCBkYXRhXG4gKiBAcGFyYW0ge09iamVjdH0gW3BhcmFtcy5yZWNlaXB0U2V0dGluZ3NdIC0gUmVjZWlwdCBicmFuZGluZyBzZXR0aW5ncyAob3B0aW9uYWwsIGhhcyBkZWZhdWx0cylcbiAqL1xuZXhwb3J0IGNvbnN0IGdlbmVyYXRlUmVjZWlwdFBERiA9IGFzeW5jICh7XG4gIG9yZGVyLFxuICBzdW1taXQsXG4gIHJlY2VpcHRTZXR0aW5ncyA9IHt9XG59KSA9PiB7XG4gIC8vIE1lcmdlIHdpdGggZGVmYXVsdHNcbiAgY29uc3Qgc2V0dGluZ3MgPSB7IC4uLkRFRkFVTFRfUkVDRUlQVF9TRVRUSU5HUywgLi4ucmVjZWlwdFNldHRpbmdzIH07XG5cbiAgLy8gUmVnaXN0ZXIgY3VzdG9tIGZvbnQgaWYgcHJvdmlkZWQsIG90aGVyd2lzZSB1c2UgYnVpbHQtaW4gZmFsbGJhY2tcbiAgaWYgKHNldHRpbmdzLmZvbnRGYW1pbHkgJiYgc2V0dGluZ3MuZm9udEZpbGUpIHtcbiAgICBjb25zdCBmb250UmVnaXN0ZXJlZCA9IHJlZ2lzdGVyRm9udChzZXR0aW5ncy5mb250RmFtaWx5LCBzZXR0aW5ncy5mb250RmlsZSk7XG4gICAgaWYgKCFmb250UmVnaXN0ZXJlZCkge1xuICAgICAgLy8gRmFsbCBiYWNrIHRvIGJ1aWx0LWluIGZvbnQgaWYgcmVnaXN0cmF0aW9uIGZhaWxzXG4gICAgICBzZXR0aW5ncy5mb250RmFtaWx5ID0gRkFMTEJBQ0tfRk9OVDtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgLy8gTm8gY3VzdG9tIGZvbnQgcHJvdmlkZWQgLSB1c2UgYnVpbHQtaW4gZmFsbGJhY2tcbiAgICBzZXR0aW5ncy5mb250RmFtaWx5ID0gRkFMTEJBQ0tfRk9OVDtcbiAgfVxuXG4gIGNvbnN0IGxvZ29VcmwgPSBhd2FpdCB2YWxpZGF0ZUltYWdlVXJsKHNldHRpbmdzLnByaW50TG9nbyB8fCBzdW1taXQubG9nbyk7XG5cbiAgLy8gUHJlcGFyZSBvcmRlciBkYXRhXG4gIGNvbnN0IHRpY2tldHMgPSBvcmRlci50aWNrZXRzIHx8IG9yZGVyLm1lbWJlclRpY2tldHMgfHwgW107XG5cbiAgY29uc3Qgb3JkZXJEYXRhID0ge1xuICAgIG51bWJlcjogb3JkZXIubnVtYmVyLFxuICAgIGFtb3VudDogb3JkZXIuYW1vdW50LFxuICAgIHJhd19hbW91bnQ6IG9yZGVyLnJhd19hbW91bnQsXG4gICAgZGlzY291bnQ6IG9yZGVyLmRpc2NvdW50X2Ftb3VudCxcbiAgICBjdXJyZW5jeTogb3JkZXIuY3VycmVuY3ksXG4gICAgY3VycmVuY3lfc3ltYm9sOlxuICAgICAgb3JkZXIuY3VycmVuY3lfc3ltYm9sIHx8IHRpY2tldHNbMF0/LmN1cnJlbmN5X3N5bWJvbCB8fCBcIiRcIixcbiAgICBwdXJjaGFzZWRfZGF0ZTogZm9ybWF0RGF0ZShvcmRlci5jcmVhdGVkKSxcbiAgICBjb25maXJtYXRpb25fZGF0ZTogb3JkZXIuY3JlYXRlZFxuICAgICAgPyBuZXcgRGF0ZShvcmRlci5jcmVhdGVkICogTVNfUEVSX1NFQ09ORCkudG9Mb2NhbGVEYXRlU3RyaW5nKFwiZW4tVVNcIiwge1xuICAgICAgICAgIHllYXI6IFwibnVtZXJpY1wiLFxuICAgICAgICAgIG1vbnRoOiBcImxvbmdcIixcbiAgICAgICAgICBkYXk6IFwiMi1kaWdpdFwiLFxuICAgICAgICAgIGhvdXI6IFwiMi1kaWdpdFwiLFxuICAgICAgICAgIG1pbnV0ZTogXCIyLWRpZ2l0XCIsXG4gICAgICAgICAgaG91cjEyOiBmYWxzZSxcbiAgICAgICAgICB0aW1lWm9uZU5hbWU6IFwic2hvcnRcIlxuICAgICAgICB9KVxuICAgICAgOiBcIlwiLFxuICAgIGlzc3VlX2RhdGU6IG5ldyBEYXRlKCkudG9Mb2NhbGVEYXRlU3RyaW5nKFwiZW4tVVNcIiwge1xuICAgICAgeWVhcjogXCJudW1lcmljXCIsXG4gICAgICBtb250aDogXCJsb25nXCIsXG4gICAgICBkYXk6IFwiMi1kaWdpdFwiXG4gICAgfSksXG4gICAgb3duZXJfZnVsbF9uYW1lOiBgJHtvcmRlci5vd25lcl9maXJzdF9uYW1lfSAke29yZGVyLm93bmVyX2xhc3RfbmFtZX1gLFxuICAgIG93bmVyX2NvbXBhbnk6IG9yZGVyLm93bmVyX2NvbXBhbnksXG4gICAgb3duZXJfZW1haWw6IG9yZGVyLm93bmVyX2VtYWlsLFxuICAgIHBheW1lbnRfbWV0aG9kOiBvcmRlci5wYXltZW50X21ldGhvZCxcbiAgICBwYXltZW50X2luZm9fdHlwZTogb3JkZXIucGF5bWVudF9pbmZvX3R5cGUsXG4gICAgcGF5bWVudF9tZXRob2RfcmVhZGFibGU6IGdldFBheW1lbnRNZXRob2RMYWJlbChvcmRlciksXG4gICAgY3JlZGl0X2NhcmRfdHlwZTogY2FwaXRhbGl6ZShvcmRlci5jcmVkaXRfY2FyZF90eXBlKSxcbiAgICBjcmVkaXRfY2FyZF80bnVtYmVyOiBvcmRlci5jcmVkaXRfY2FyZF80bnVtYmVyLFxuICAgIHJlZnVuZGVkX2Ftb3VudDogb3JkZXIucmVmdW5kZWRfYW1vdW50LFxuICAgIGFwcGxpZWRfdGF4ZXM6IG9yZGVyLmFwcGxpZWRfdGF4ZXMgfHwgW10sXG4gICAgdGlja2V0czogdGlja2V0cy5tYXAoKHQpID0+ICh7XG4gICAgICBudW1iZXI6IHQubnVtYmVyLFxuICAgICAgdGlja2V0X3R5cGVfbmFtZTogdC50aWNrZXRfdHlwZS5uYW1lLFxuICAgICAgb3duZXJfZW1haWw6IHQub3duZXIuZW1haWwsXG4gICAgICBmaW5hbF9hbW91bnQ6IHQucmF3X2Nvc3QsXG4gICAgICBwcm9tb19jb2RlOiB0LnByb21vX2NvZGU/LmNvZGVcbiAgICB9KSlcbiAgfTtcblxuICBjb25zdCBzdW1taXREYXRhID0ge1xuICAgIG5hbWU6IHN1bW1pdC5uYW1lLFxuICAgIHRhZ2xpbmU6IHN1bW1pdC50YWdsaW5lIHx8IFwiXCIsXG4gICAgZGF0ZXNfbGFiZWw6IHN1bW1pdC5kYXRlc19sYWJlbCB8fCBcIlwiLFxuICAgIGxvY2F0aW9uOiBzdW1taXQubG9jYXRpb24gfHwgXCJcIixcbiAgICB3ZWJzaXRlOiBzdW1taXQubGluayB8fCBzdW1taXQud2Vic2l0ZSB8fCBcIlwiXG4gIH07XG5cbiAgLy8gR2VuZXJhdGUgUERGXG4gIGNvbnN0IGRvYyA9IChcbiAgICA8UmVjZWlwdFBERlxuICAgICAgb3JkZXI9e29yZGVyRGF0YX1cbiAgICAgIHN1bW1pdD17c3VtbWl0RGF0YX1cbiAgICAgIHNldHRpbmdzPXtzZXR0aW5nc31cbiAgICAgIGxvZ29Vcmw9e2xvZ29Vcmx9XG4gICAgLz5cbiAgKTtcblxuICBjb25zdCBibG9iID0gYXdhaXQgcGRmKGRvYykudG9CbG9iKCk7XG5cbiAgLy8gRG93bmxvYWRcbiAgY29uc3QgdXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcbiAgY29uc3QgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJhXCIpO1xuICBsaW5rLmhyZWYgPSB1cmw7XG4gIGxpbmsuZG93bmxvYWQgPSBgcmVjZWlwdC0ke29yZGVyLm51bWJlcn0ucGRmYFxuICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgLnJlcGxhY2UoL1xccysvZywgXCItXCIpO1xuICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGxpbmspO1xuICBsaW5rLmNsaWNrKCk7XG4gIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQobGluayk7XG4gIFVSTC5yZXZva2VPYmplY3RVUkwodXJsKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGdlbmVyYXRlUmVjZWlwdFBERjtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmV4cG9ydCB7IGdlbmVyYXRlUmVjZWlwdFBERiB9IGZyb20gXCIuL2dlbmVyYXRlUmVjZWlwdFBERlwiO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2ggfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7IHVzZU5vdyB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xuaW1wb3J0IHsgdGlja2V0c1JlZnVuZGFibGUgfSBmcm9tIFwiLi4vLi4vdXRpbHMvdGlja2V0VXRpbHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB7IHVzZVN1bW1pdERldGFpbHMgfSBmcm9tIFwiLi4vLi4vdXRpbHMvc3VtbWl0VXRpbHNcIjtcbmltcG9ydCB7IGRvd25sb2FkT3JkZXJSZWNlaXB0IH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcblxuY29uc3QgT3JkZXJBY3Rpb25zID0gKHtcbiAgc3VtbWl0LFxuICBvcmRlcixcbiAgdGlja2V0cyxcbiAgc3VibWl0UmVxdWVzdCxcbiAgb25SZWZ1bmRDbGljayxcbiAgb25SZWZ1bmREZXRhaWxDbGlja1xufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IHsgaXNTdGFydGVkIH0gPSB1c2VTdW1taXREZXRhaWxzKHsgc3VtbWl0IH0pO1xuICBjb25zdCBub3cgPSB1c2VOb3coKTtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuICBjb25zdCBbaXNEb3dubG9hZGluZywgc2V0SXNEb3dubG9hZGluZ10gPSB1c2VTdGF0ZShmYWxzZSk7XG5cbiAgY29uc3QgaXNJblJlZnVuZGFibGVQZXJpb2QgPVxuICAgIHN1bW1pdC5yZWdpc3RyYXRpb25fYWxsb3dlZF9yZWZ1bmRfcmVxdWVzdF90aWxsX2RhdGUgPiBub3c7XG4gIGNvbnN0IGF0TGVhc3RPbmVSZWZ1bmRhYmxlVGlja2V0ID0gdGlja2V0c1JlZnVuZGFibGUodGlja2V0cyk7XG4gIGNvbnN0IGlzUmVmdW5kYWJsZSA9ICEhKFxuICAgIGlzSW5SZWZ1bmRhYmxlUGVyaW9kICYmXG4gICAgIWlzU3RhcnRlZCAmJlxuICAgIGF0TGVhc3RPbmVSZWZ1bmRhYmxlVGlja2V0XG4gICk7XG4gIGNvbnN0IGhhc1JlZnVuZFJlcXVlc3RzID0gdGlja2V0cz8uc29tZSgodCkgPT4gdC5yZWZ1bmRfcmVxdWVzdHM/Lmxlbmd0aCA+IDApO1xuICBjb25zdCBjYW5Eb3dubG9hZFJlY2VpcHQgPSBvcmRlcj8uc3RhdHVzID09PSBcIlBhaWRcIjtcblxuICBjb25zdCBoYW5kbGVEb3dubG9hZFJlY2VpcHQgPSBhc3luYyAoKSA9PiB7XG4gICAgaWYgKGlzRG93bmxvYWRpbmcgfHwgIW9yZGVyKSByZXR1cm47XG4gICAgc2V0SXNEb3dubG9hZGluZyh0cnVlKTtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgZGlzcGF0Y2goZG93bmxvYWRPcmRlclJlY2VpcHQoeyBvcmRlciwgc3VtbWl0IH0pKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcihcIkVycm9yIGRvd25sb2FkaW5nIHJlY2VpcHQ6XCIsIGVycm9yKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgc2V0SXNEb3dubG9hZGluZyhmYWxzZSk7XG4gICAgfVxuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIHtjYW5Eb3dubG9hZFJlY2VpcHQgJiYgKFxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgYXJpYS1sYWJlbD1cImRvd25sb2FkIHJlY2VpcHQgYnV0dG9uXCJcbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5vcmRlclN1bW1hcnlCdXR0b259ICR7XG4gICAgICAgICAgICBpc0Rvd25sb2FkaW5nID8gc3R5bGVzLnJlZnVuZERpc2FibGVkIDogXCJcIlxuICAgICAgICAgIH1gfVxuICAgICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lZFwiXG4gICAgICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVEb3dubG9hZFJlY2VpcHR9XG4gICAgICAgICAgZGlzYWJsZWQ9e2lzRG93bmxvYWRpbmd9XG4gICAgICAgID5cbiAgICAgICAgICB7aXNEb3dubG9hZGluZ1xuICAgICAgICAgICAgPyB0KFwib3JkZXJfc3VtbWFyeS5nZW5lcmF0aW5nX3JlY2VpcHRcIilcbiAgICAgICAgICAgIDogdChcIm9yZGVyX3N1bW1hcnkuZG93bmxvYWRfcmVjZWlwdFwiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICApfVxuICAgICAge2lzUmVmdW5kYWJsZSAmJiAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBhcmlhLWxhYmVsPVwicmVmdW5kIHJlcXVlc3QgYnV0dG9uXCJcbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5vcmRlclN1bW1hcnlCdXR0b259XG4gICAgICAgICAgJHtzdWJtaXRSZXF1ZXN0ID8gc3R5bGVzLnJlZnVuZERpc2FibGVkIDogXCJcIn1gfVxuICAgICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lZFwiXG4gICAgICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgICAgICBvbkNsaWNrPXtvblJlZnVuZENsaWNrfVxuICAgICAgICAgIGRpc2FibGVkPXtzdWJtaXRSZXF1ZXN0fVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5LnJlcXVlc3RfcmVmdW5kXCIpfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgICl9XG4gICAgICB7aGFzUmVmdW5kUmVxdWVzdHMgJiYgKFxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgYXJpYS1sYWJlbD1cInJlZnVuZCBkZXRhaWxzIGJ1dHRvblwiXG4gICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJTdW1tYXJ5QnV0dG9ufVxuICAgICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lZFwiXG4gICAgICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgICAgICBvbkNsaWNrPXtvblJlZnVuZERldGFpbENsaWNrfVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5LnJlZnVuZF9kZXRhaWxzXCIpfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgICl9XG4gICAgICA8QnV0dG9uXG4gICAgICAgIGFyaWEtbGFiZWw9XCJlbWFpbCBzdXBwb3J0IGJ1dHRvblwiXG4gICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5vcmRlclN1bW1hcnlCdXR0b259XG4gICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lZFwiXG4gICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgIHRhcmdldD1cIl90b3BcIlxuICAgICAgICByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCJcbiAgICAgICAgaHJlZj17YG1haWx0bzoke3N1bW1pdC5zdXBwb3J0X2VtYWlsfWB9XG4gICAgICA+XG4gICAgICAgIHt0KFwib3JkZXJfaW5mby5lbWFpbF9zdXBwb3J0XCIpfVxuICAgICAgPC9CdXR0b24+XG4gICAgPC8+XG4gICk7XG59O1xuXG5PcmRlckFjdGlvbnMucHJvcFR5cGVzID0ge1xuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIG9yZGVyOiBQcm9wVHlwZXMub2JqZWN0LFxuICB0aWNrZXRzOiBQcm9wVHlwZXMuYXJyYXlPZihPYmplY3QpLFxuICBvblJlZnVuZENsaWNrOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25SZWZ1bmREZXRhaWxDbGljazogUHJvcFR5cGVzLmZ1bmMsXG4gIHN1Ym1pdFJlcXVlc3Q6IFByb3BUeXBlcy5ib29sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBPcmRlckFjdGlvbnM7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBHcmlkLCBCb3ggfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IERpdmlkZXIgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvRGl2aWRlclwiO1xuaW1wb3J0IHsgY2FsY3VsYXRlT3JkZXJUb3RhbHMsIGZvcm1hdEN1cnJlbmN5IH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IE9yZGVyU3VtbWFyeVRhYmxlID0gKHsgb3JkZXIsIHN1bW1pdCB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3Qge1xuICAgIGRpc2NvdW50VG90YWwsXG4gICAgcmVmdW5kVG90YWwsXG4gICAgYW1vdW50VG90YWwsXG4gICAgc3ViVG90YWwsXG4gICAgdGlja2V0U3VtbWFyeSxcbiAgICB0YXhlc1N1bW1hcnlcbiAgfSA9IGNhbGN1bGF0ZU9yZGVyVG90YWxzKHsgb3JkZXIsIHN1bW1pdCB9KTtcblxuICBjb25zdCBodW5kcmVkID0gMTAwO1xuXG4gIHJldHVybiAoXG4gICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5vcmRlclN1bW1hcnlUYWJsZX0+XG4gICAgICB7dGlja2V0U3VtbWFyeT8ubGVuZ3RoID4gMCAmJiAoXG4gICAgICAgIDw+XG4gICAgICAgICAge3RpY2tldFN1bW1hcnkubWFwKCh0aWNrZXQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHRpY2tldFRvdGFsID1cbiAgICAgICAgICAgICAgKHRpY2tldC5xdHkgKiAodGlja2V0LnRpY2tldF90eXBlLmNvc3QgKiBodW5kcmVkKSkgLyBodW5kcmVkO1xuXG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICA8R3JpZFxuICAgICAgICAgICAgICAgIGNvbnRhaW5lclxuICAgICAgICAgICAgICAgIGtleT17YHRpeG9yZGVyXyR7dGlja2V0LnRpY2tldF90eXBlLmNyZWF0ZWR9YH1cbiAgICAgICAgICAgICAgICBzeD17eyBwYjogMSB9fVxuICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwib3JkZXItc3VtbWFyeS1pdGVtaXplZFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8R3JpZCB4cz17OH0gaXRlbT5cbiAgICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgICB4e3RpY2tldC5xdHl9IHt0aWNrZXQudGlja2V0X3R5cGUubmFtZX1cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgICAgICAgPEdyaWQgeHM9ezR9IGl0ZW0gYWxpZ249XCJyaWdodFwiPlxuICAgICAgICAgICAgICAgICAge2Zvcm1hdEN1cnJlbmN5KHRpY2tldFRvdGFsLCB7IGN1cnJlbmN5OiBvcmRlci5jdXJyZW5jeSB9KX1cbiAgICAgICAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSl9XG4gICAgICAgIDwvPlxuICAgICAgKX1cbiAgICAgIDxEaXZpZGVyIC8+XG4gICAgICA8R3JpZCBjb250YWluZXIgc3g9e3sgcHQ6IDEsIHBiOiAxIH19PlxuICAgICAgICA8R3JpZCB4cz17OH0gaXRlbT5cbiAgICAgICAgICB7dChcIm9yZGVyX3N1bW1hcnkuc3ViX3RvdGFsXCIpfVxuICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDxHcmlkIHhzPXs0fSBpdGVtIGFsaWduPVwicmlnaHRcIj5cbiAgICAgICAgICB7c3ViVG90YWx9XG4gICAgICAgIDwvR3JpZD5cbiAgICAgIDwvR3JpZD5cbiAgICAgIHtvcmRlci50YXhlc19hbW91bnQgPiAwICYmXG4gICAgICAgIHRheGVzU3VtbWFyeT8ubGVuZ3RoID4gMCAmJlxuICAgICAgICB0YXhlc1N1bW1hcnkubWFwKCh0YXgpID0+IChcbiAgICAgICAgICA8R3JpZCBjb250YWluZXIgc3g9e3sgcGI6IDEgfX0ga2V5PXt0YXguaWR9PlxuICAgICAgICAgICAgPEdyaWQgeHM9ezh9IGl0ZW0+XG4gICAgICAgICAgICAgIHt0YXgubmFtZX1cbiAgICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICAgIDxHcmlkIHhzPXs0fSBpdGVtIGFsaWduPVwicmlnaHRcIj5cbiAgICAgICAgICAgICAge3RheC5hbW91bnR9XG4gICAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICApKX1cbiAgICAgIHtvcmRlci5kaXNjb3VudF9hbW91bnQgPiAwICYmIChcbiAgICAgICAgPEdyaWQgY29udGFpbmVyIHN4PXt7IHBiOiAxIH19PlxuICAgICAgICAgIDxHcmlkIHhzPXs4fSBpdGVtPlxuICAgICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5LmRpc2NvdW50c1wiKX1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgPEdyaWQgeHM9ezR9IGl0ZW0gYWxpZ249XCJyaWdodFwiPlxuICAgICAgICAgICAgLXtkaXNjb3VudFRvdGFsfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgKX1cbiAgICAgIHtyZWZ1bmRUb3RhbCA+IDAgJiYgKFxuICAgICAgICA8R3JpZCBjb250YWluZXIgc3g9e3sgcGI6IDEgfX0+XG4gICAgICAgICAgPEdyaWQgeHM9ezh9IGl0ZW0+XG4gICAgICAgICAgICB7dChcIm9yZGVyX3N1bW1hcnkucmVmdW5kc1wiKX1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgPEdyaWQgeHM9ezR9IGl0ZW0gYWxpZ249XCJyaWdodFwiPlxuICAgICAgICAgICAge3JlZnVuZFRvdGFsfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgKX1cbiAgICAgIDxEaXZpZGVyIC8+XG4gICAgICA8R3JpZCBjb250YWluZXIgc3g9e3sgcHQ6IDEsIHBiOiAxIH19PlxuICAgICAgICA8R3JpZCB4cz17OH0gaXRlbT5cbiAgICAgICAgICB7dChcIm9yZGVyX3N1bW1hcnkudG90YWxcIil9XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICAgPEdyaWQgeHM9ezR9IGl0ZW0gYWxpZ249XCJyaWdodFwiPlxuICAgICAgICAgIHthbW91bnRUb3RhbH1cbiAgICAgICAgPC9HcmlkPlxuICAgICAgPC9HcmlkPlxuICAgIDwvQm94PlxuICApO1xufTtcblxuT3JkZXJTdW1tYXJ5VGFibGUucHJvcFR5cGVzID0ge1xuICBvcmRlcjogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBjdXJyZW5jeTogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBkaXNjb3VudF9hbW91bnQ6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgdGF4ZXNfYW1vdW50OiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIHN0YXR1czogUHJvcFR5cGVzLnN0cmluZ1xuICB9KSxcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0XG59O1xuXG5leHBvcnQgZGVmYXVsdCBPcmRlclN1bW1hcnlUYWJsZTtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IEdyaWQsIEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgT3JkZXJTdW1tYXJ5VGFibGUgZnJvbSBcIi4vT3JkZXJTdW1tYXJ5VGFibGVcIjtcbmltcG9ydCBPcmRlckFjdGlvbnMgZnJvbSBcIi4vT3JkZXJBY3Rpb25zXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IE9yZGVyU3VtbWFyeSA9ICh7XG4gIG9yZGVyLFxuICBzdW1taXQsXG4gIG9uUmVmdW5kQ2xpY2ssXG4gIHN1Ym1pdFJlcXVlc3QsXG4gIG9uUmVmdW5kRGV0YWlsQ2xpY2tcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8Qm94XG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyU3VtbWFyeVdyYXBwZXJ9XG4gICAgICAgIHN4PXt7IHB0OiA0LCBweDogNCB9fVxuICAgICAgICBkYXRhLXRlc3RpZD1cIm9yZGVyLXN1bW1hcnktY29udGFpbmVyXCJcbiAgICAgID5cbiAgICAgICAgPGgzPnt0KFwib3JkZXJfc3VtbWFyeS5vcmRlcl9zdW1tYXJ5XCIpfTwvaDM+XG4gICAgICAgIDxHcmlkIGNvbnRhaW5lcj5cbiAgICAgICAgICA8R3JpZFxuICAgICAgICAgICAgeHM9ezEyfVxuICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJTdW1tYXJ5UHVyY2hhc2VkSW5mb31cbiAgICAgICAgICAgIHN4PXt7IHBiOiAzIH19XG4gICAgICAgICAgICBpdGVtXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPE9yZGVyU3VtbWFyeVRhYmxlIG9yZGVyPXtvcmRlcn0gc3VtbWl0PXtzdW1taXR9IC8+XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICA8L0JveD5cbiAgICAgIDxCb3ggeHM9ezEyfSBzeD17eyBwYjogMyB9fT5cbiAgICAgICAgPE9yZGVyQWN0aW9uc1xuICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgIG9yZGVyPXtvcmRlcn1cbiAgICAgICAgICB0aWNrZXRzPXtvcmRlcj8ubWVtYmVyVGlja2V0c31cbiAgICAgICAgICBzdWJtaXRSZXF1ZXN0PXtzdWJtaXRSZXF1ZXN0fVxuICAgICAgICAgIG9uUmVmdW5kQ2xpY2s9e29uUmVmdW5kQ2xpY2t9XG4gICAgICAgICAgb25SZWZ1bmREZXRhaWxDbGljaz17b25SZWZ1bmREZXRhaWxDbGlja31cbiAgICAgICAgLz5cbiAgICAgIDwvQm94PlxuICAgIDwvPlxuICApO1xufTtcbk9yZGVyU3VtbWFyeS5wcm9wVHlwZXMgPSB7XG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdCxcbiAgb3JkZXI6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgbWVtYmVyVGlja2V0czogUHJvcFR5cGVzLmFycmF5T2YoT2JqZWN0KVxuICB9KSxcbiAgb25SZWZ1bmRDbGljazogUHJvcFR5cGVzLmZ1bmMsXG4gIHN1Ym1pdFJlcXVlc3Q6IFByb3BUeXBlcy5ib29sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBPcmRlclN1bW1hcnk7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VTZWxlY3Rvciwgc2hhbGxvd0VxdWFsIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgSW5maW5pdGVTY3JvbGwgZnJvbSBcInJlYWN0LWluZmluaXRlLXNjcm9sbC1jb21wb25lbnRcIjtcbmltcG9ydCBPcmRlckxpc3RUaWNrZXRzIGZyb20gXCIuL09yZGVyTGlzdFRpY2tldHNcIjtcbmltcG9ydCB7IE9ORV9QQUdFX05FWFQgfSBmcm9tIFwiLi4vLi4vdXRpbHMvY29uc3RhbnRzXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IEFzc2lnblRvTWUgPSAoeyBmZXRjaERhdGEgfSkgPT4ge1xuICBjb25zdCB7XG4gICAgc3VtbWl0LFxuICAgIHVzZXJUaWNrZXRzLFxuICAgIHVzZXJfdGlja2V0c19jdXJyZW50X3BhZ2UsXG4gICAgdXNlcl90aWNrZXRzX2xhc3RfcGFnZVxuICB9ID0gdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSB8fCB7fSwgc2hhbGxvd0VxdWFsKTtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJUaWNrZXRDb250YWluZXJ9PlxuICAgICAgPGRpdiBpZD1cImFzc2lnbmVkVG9NZVdyYXBwZXJcIiBjbGFzc05hbWU9e3N0eWxlcy5hc3NpZ25lZFRvTWVXcmFwcGVyfT5cbiAgICAgICAgPEluZmluaXRlU2Nyb2xsXG4gICAgICAgICAgZGF0YUxlbmd0aD17dXNlclRpY2tldHM/Lmxlbmd0aH1cbiAgICAgICAgICBuZXh0PXsoKSA9PiBmZXRjaERhdGEodXNlcl90aWNrZXRzX2N1cnJlbnRfcGFnZSArIE9ORV9QQUdFX05FWFQpfVxuICAgICAgICAgIGhhc01vcmU9e3VzZXJfdGlja2V0c19jdXJyZW50X3BhZ2UgPCB1c2VyX3RpY2tldHNfbGFzdF9wYWdlfVxuICAgICAgICAgIHNjcm9sbFRocmVzaG9sZD17MX1cbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0TGlzdENvbnRhaW5lcn0+XG4gICAgICAgICAgICB7dXNlclRpY2tldHMubWFwKCh0aWNrZXQpID0+IChcbiAgICAgICAgICAgICAgPE9yZGVyTGlzdFRpY2tldHNcbiAgICAgICAgICAgICAgICBrZXk9e3RpY2tldC5pZH1cbiAgICAgICAgICAgICAgICB0aWNrZXQ9e3RpY2tldH1cbiAgICAgICAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICAgICAgICBpc1JlZnVuZE1vZGFsPXtmYWxzZX1cbiAgICAgICAgICAgICAgICBpc1NlbGVjdGVkVG9SZWZ1bmQ9e1tdfVxuICAgICAgICAgICAgICAgIHNlbGVjdFRvUmVmdW5kPXtmYWxzZX1cbiAgICAgICAgICAgICAgICBpc0V4dGVybmFsQXNzaWduZWRUaWNrZXRcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICkpfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L0luZmluaXRlU2Nyb2xsPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBBc3NpZ25Ub01lO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQm94LCBHcmlkLCBUeXBvZ3JhcGh5IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgQXNzaWduZWRUbyA9ICh7IGVtYWlsIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuXG4gIHJldHVybiAoXG4gICAgPEJveD5cbiAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMubGFiZWx9Pnt0KFwidGlja2V0X3N0YXR1cy5hc3NpZ25lZF90b1wiKX06PC9Cb3g+XG4gICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiYm9keTFcIiBkYXRhLXRlc3RpZD1cImF0dGVuZGVlLXN0YXR1cy1hc3NpZ25lZFwiPlxuICAgICAgICB7ZW1haWx9XG4gICAgICA8L1R5cG9ncmFwaHk+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5jb25zdCBFeHRlcm5hbEFzc2lnbmVkVG8gPSAoeyBmaXJzdE5hbWUsIGxhc3ROYW1lIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuXG4gIHJldHVybiAoXG4gICAgPEJveD5cbiAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMubGFiZWx9Pnt0KFwidGlja2V0X3N0YXR1cy5hc3NpZ25lZF9ieVwiKX06PC9Cb3g+XG4gICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiYm9keTFcIj5cbiAgICAgICAge2ZpcnN0TmFtZX0ge2xhc3ROYW1lfVxuICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgIDwvQm94PlxuICApO1xufTtcblxuY29uc3QgTWFuYWdlRm9yID0gKHsgZmlyc3ROYW1lLCBsYXN0TmFtZSB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcblxuICByZXR1cm4gKFxuICAgIDxCb3g+XG4gICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmxhYmVsfT57dChcInRpY2tldF9zdGF0dXMubWFuYWdlX2ZvclwiKX06PC9Cb3g+XG4gICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiYm9keTFcIj5cbiAgICAgICAge2ZpcnN0TmFtZX0ge2xhc3ROYW1lfVxuICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgIDwvQm94PlxuICApO1xufTtcblxuY29uc3QgQXR0ZW5kZWVTdGF0dXMgPSAoeyB0aWNrZXQsIGlzRXh0ZXJuYWxBc3NpZ25lZFRpY2tldCB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgaXNVbmFzc2lnbmVkID0gIXRpY2tldC5vd25lcj8uZW1haWwgJiYgdGlja2V0LmlzX2FjdGl2ZTtcbiAgY29uc3QgaXNEZWxlZ2F0ZWQgPSAhIXRpY2tldC5vd25lcj8ubWFuYWdlcl9pZDtcblxuICBpZiAoaXNVbmFzc2lnbmVkKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxzcGFuXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldE93bmVyRW1haWx9XG4gICAgICAgIGRhdGEtdGVzdGlkPVwiYXR0ZW5kZWUtc3RhdHVzLXVuYXNzaWduZWRcIlxuICAgICAgPlxuICAgICAgICB7dChcInRpY2tldF9zdGF0dXMuYXR0ZW5kZWVfc3RhdHVzX3VuYXNzaWduZWRcIil9XG4gICAgICA8L3NwYW4+XG4gICAgKTtcbiAgfVxuXG4gIGlmICh0aWNrZXQub3duZXI/LmVtYWlsKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxHcmlkIGNvbnRhaW5lcj5cbiAgICAgICAgPEdyaWQgaXRlbT5cbiAgICAgICAgICA8QXNzaWduZWRUbyBlbWFpbD17dGlja2V0Lm93bmVyLmVtYWlsfSAvPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICAgIHtpc0V4dGVybmFsQXNzaWduZWRUaWNrZXQgJiYgKFxuICAgICAgICAgIDxHcmlkIGl0ZW0gY2xhc3NOYW1lPXtzdHlsZXMuYXNzaWduZWRCeVRleHR9PlxuICAgICAgICAgICAgPEV4dGVybmFsQXNzaWduZWRUb1xuICAgICAgICAgICAgICBmaXJzdE5hbWU9e3RpY2tldC5vcmRlcj8ub3duZXJfZmlyc3RfbmFtZX1cbiAgICAgICAgICAgICAgbGFzdE5hbWU9e3RpY2tldC5vcmRlcj8ub3duZXJfbGFzdF9uYW1lfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICl9XG4gICAgICAgIHtpc0RlbGVnYXRlZCAmJiAoXG4gICAgICAgICAgPEdyaWQgaXRlbSBjbGFzc05hbWU9e3N0eWxlcy5hc3NpZ25lZEJ5VGV4dH0+XG4gICAgICAgICAgICA8TWFuYWdlRm9yXG4gICAgICAgICAgICAgIGZpcnN0TmFtZT17dGlja2V0Lm93bmVyPy5maXJzdF9uYW1lfVxuICAgICAgICAgICAgICBsYXN0TmFtZT17dGlja2V0Lm93bmVyPy5sYXN0X25hbWV9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgKX1cbiAgICAgIDwvR3JpZD5cbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59O1xuXG5BdHRlbmRlZVN0YXR1cy5wcm9wVHlwZXMgPSB7XG4gIHRpY2tldDogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBvd25lcjogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAgIGVtYWlsOiBQcm9wVHlwZXMuc3RyaW5nXG4gICAgfSksXG4gICAgaXNfYWN0aXZlOiBQcm9wVHlwZXMuYm9vbFxuICB9KSxcbiAgaXNFeHRlcm5hbEFzc2lnbmVkVGlja2V0OiBQcm9wVHlwZXMuYm9vbFxufTtcblxuZXhwb3J0IGRlZmF1bHQgQXR0ZW5kZWVTdGF0dXM7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBPcmRlckxpc3RUaWNrZXRzIGZyb20gXCIuL09yZGVyTGlzdFRpY2tldHNcIjtcbmltcG9ydCB7IFBBR0lOQVRJT05fRElTUExBWV9DT1VOVCB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgT3JkZXJMaXN0SXRlbSA9ICh7XG4gIHN1bW1pdCxcbiAgb3JkZXIsXG4gIG9uUGFnaW5hdGVDbGljayxcbiAgdGlja2V0c1RvUmVmdW5kLFxuICBzZWxlY3RUb1JlZnVuZFxufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IFtpdGVtc1RvRGlzcGxheSwgc2V0SXRlbXNUb0Rpc3BsYXldID0gdXNlU3RhdGUoXG4gICAgUEFHSU5BVElPTl9ESVNQTEFZX0NPVU5UXG4gICk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRJdGVtc1RvRGlzcGxheShQQUdJTkFUSU9OX0RJU1BMQVlfQ09VTlQpO1xuICB9LCBbb3JkZXI/LnRpY2tldHNfdG90YWxdKTtcblxuICBpZiAoIW9yZGVyPy5tZW1iZXJUaWNrZXRzPy5sZW5ndGgpIHJldHVybiBudWxsO1xuICBjb25zdCBzbGljZWRUaWNrZXRzID0gb3JkZXI/Lm1lbWJlclRpY2tldHM/LnNsaWNlKDAsIGl0ZW1zVG9EaXNwbGF5KTtcblxuICBjb25zdCBvblZpZXdNb3JlID0gKCkgPT4ge1xuICAgIGlmIChvcmRlcj8udGlja2V0c190b3RhbCA+IG9yZGVyPy5tZW1iZXJUaWNrZXRzLmxlbmd0aCkge1xuICAgICAgb25QYWdpbmF0ZUNsaWNrKCk7XG4gICAgfVxuICAgIHNldEl0ZW1zVG9EaXNwbGF5KGl0ZW1zVG9EaXNwbGF5ICsgUEFHSU5BVElPTl9ESVNQTEFZX0NPVU5UKTtcbiAgfTtcblxuICBjb25zdCBvblZpZXdMZXNzID0gKCkgPT4gc2V0SXRlbXNUb0Rpc3BsYXkoUEFHSU5BVElPTl9ESVNQTEFZX0NPVU5UKTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICB7c2xpY2VkVGlja2V0cz8ubWFwKCh0aWNrZXQpID0+IChcbiAgICAgICAgPE9yZGVyTGlzdFRpY2tldHNcbiAgICAgICAgICBrZXk9e3RpY2tldC5pZH1cbiAgICAgICAgICB0aWNrZXQ9e3RpY2tldH1cbiAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICBpc1JlZnVuZE1vZGFsPXtmYWxzZX1cbiAgICAgICAgICBpc1NlbGVjdGVkVG9SZWZ1bmQ9eyEhdGlja2V0c1RvUmVmdW5kLmZpbmQoKHQpID0+IHQuaWQgPT09IHRpY2tldC5pZCl9XG4gICAgICAgICAgc2VsZWN0VG9SZWZ1bmQ9e3NlbGVjdFRvUmVmdW5kfVxuICAgICAgICAvPlxuICAgICAgKSl9XG4gICAgICB7b3JkZXI/LnRpY2tldHNfdG90YWwgPiBpdGVtc1RvRGlzcGxheSA/IChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJ2aWV3IG1vcmUgYnV0dG9uXCJcbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy52aWV3TW9yZUJ1dHRvbn1cbiAgICAgICAgICBvbkNsaWNrPXtvblZpZXdNb3JlfVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJnZW5lcmFsLnZpZXdfbW9yZVwiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICApIDogKFxuICAgICAgICBcIlwiXG4gICAgICApfVxuICAgICAge3NsaWNlZFRpY2tldHM/Lmxlbmd0aCA+IFBBR0lOQVRJT05fRElTUExBWV9DT1VOVCAmJlxuICAgICAgc2xpY2VkVGlja2V0cz8ubGVuZ3RoID09PSBvcmRlcj8udGlja2V0c190b3RhbCA/IChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJ2aWV3IGxlc3MgYnV0dG9uXCJcbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy52aWV3TW9yZUJ1dHRvbn1cbiAgICAgICAgICBvbkNsaWNrPXtvblZpZXdMZXNzfVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJnZW5lcmFsLnZpZXdfbGVzc1wiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICApIDogKFxuICAgICAgICBcIlwiXG4gICAgICApfVxuICAgIDwvPlxuICApO1xufTtcblxuT3JkZXJMaXN0SXRlbS5wcm9wVHlwZXMgPSB7XG4gIG9yZGVyOiBQcm9wVHlwZXMub2JqZWN0LFxuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3Rcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE9yZGVyTGlzdEl0ZW07XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE3IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuXG5pbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEdyaWQsIEJ1dHRvbiwgQm94LCBUb29sdGlwIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBTdGFjayBmcm9tIFwiQG11aS9tYXRlcmlhbC9TdGFja1wiO1xuaW1wb3J0IENoZWNrYm94IGZyb20gXCJAbXVpL21hdGVyaWFsL0NoZWNrYm94XCI7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IFRpY2tldFN0YXR1cyBmcm9tIFwiLi4vVGlja2V0U3RhdHVzXCI7XG5pbXBvcnQgeyBnZXRTdW1taXRSZWFzc2lnbkRhdGUgfSBmcm9tIFwiLi4vLi4vdXRpbHMvc3VtbWl0VXRpbHNcIjtcbmltcG9ydCB7IHVzZU5vdyB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xuaW1wb3J0IEF0dGVuZGVlU3RhdHVzIGZyb20gXCIuL0F0dGVuZGVlU3RhdHVzXCI7XG5pbXBvcnQgVGlja2V0RGV0YWlsIGZyb20gXCIuLi9UaWNrZXREZXRhaWxcIjtcbmltcG9ydCB7IHVzZVRpY2tldERldGFpbHMgfSBmcm9tIFwiLi4vLi4vaG9va3MvdXNlVGlja2V0RGV0YWlsc1wiO1xuaW1wb3J0IENvcHlUZXh0IGZyb20gXCIuLi9Db3B5VGV4dFwiO1xuaW1wb3J0IFRpY2tldEFzc2lnbiBmcm9tIFwiLi4vVGlja2V0QXNzaWduXCI7XG5pbXBvcnQgQmFkZ2VGZWF0dXJlSWNvbiBmcm9tIFwiLi4vQmFkZ2VGZWF0dXJlSWNvblwiO1xuaW1wb3J0IHsgcmVzZXRUaWNrZXQgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBtb2RhbFZpZXdzID0ge1xuICBkZXRhaWw6IFwiREVUQUlMXCIsXG4gIHJlYXNzaWduOiBcIlJFQVNTSUdOXCIsXG4gIGFzc2lnbjogXCJBU1NJR05cIlxufTtcblxuY29uc3QgVGlja2V0Q1RBcyA9ICh7XG4gIGlzSW5jb21wbGV0ZSxcbiAgaXNVbmFzc2lnbmVkLFxuICBpc1JlYXNzaWduYWJsZSxcbiAgb25PcGVuQ2xpY2tcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuXG4gIGlmIChpc1VuYXNzaWduZWQpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPEJ1dHRvblxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5hc3NpZ25UaWNrZXRCdXR0b259XG4gICAgICAgIG9uQ2xpY2s9eygpID0+IG9uT3BlbkNsaWNrKG1vZGFsVmlld3MuYXNzaWduKX1cbiAgICAgID5cbiAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLmFzc2lnbl90aWNrZXRcIil9XG4gICAgICA8L0J1dHRvbj5cbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8U3RhY2sgYWxpZ25JdGVtcz1cImNlbnRlclwiIGRpcmVjdGlvbj1cInJvd1wiPlxuICAgICAgPEJ1dHRvblxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy52aWV3RmluaXNoVGlja2V0QnV0dG9ufVxuICAgICAgICBvbkNsaWNrPXsoKSA9PiBvbk9wZW5DbGljayhtb2RhbFZpZXdzLmRldGFpbCl9XG4gICAgICA+XG4gICAgICAgIHtpc0luY29tcGxldGVcbiAgICAgICAgICA/IHQoXCJ0aWNrZXRfc3RhdHVzLmZpbmlzaF90aWNrZXRcIilcbiAgICAgICAgICA6IHQoXCJ0aWNrZXRfc3RhdHVzLnZpZXdfdGlja2V0XCIpfVxuICAgICAgPC9CdXR0b24+XG4gICAgICB7aXNSZWFzc2lnbmFibGUgJiYgKFxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgYXJpYS1sYWJlbD1cInJlYXNzaWduIHRpY2tldCBidXR0b25cIlxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnJlYXNzaWduQnV0dG9ufVxuICAgICAgICAgIG9uQ2xpY2s9eygpID0+IG9uT3BlbkNsaWNrKG1vZGFsVmlld3MucmVhc3NpZ24pfVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnJlYXNzaWduX3RpY2tldFwiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICApfVxuICAgIDwvU3RhY2s+XG4gICk7XG59O1xuXG5UaWNrZXRDVEFzLnByb3BUeXBlcyA9IHtcbiAgaXNJbmNvbXBsZXRlOiBQcm9wVHlwZXMuYm9vbC5pc1JlcXVpcmVkLFxuICBpc1VuYXNzaWduZWQ6IFByb3BUeXBlcy5ib29sLmlzUmVxdWlyZWQsXG4gIGlzUmVhc3NpZ25hYmxlOiBQcm9wVHlwZXMuYm9vbC5pc1JlcXVpcmVkLFxuICBvbk9wZW5DbGljazogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZFxufTtcblxuY29uc3QgT3JkZXJMaXN0VGlja2V0cyA9ICh7XG4gIHRpY2tldCxcbiAgc3VtbWl0LFxuICBpc1JlZnVuZE1vZGFsLFxuICBpc1NlbGVjdGVkVG9SZWZ1bmQsXG4gIHNlbGVjdFRvUmVmdW5kLFxuICBpc0V4dGVybmFsQXNzaWduZWRUaWNrZXRcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG4gIGNvbnN0IG5vdyA9IHVzZU5vdygpO1xuICBjb25zdCB7IGlzUmVmdW5kYWJsZSwgaXNVbmFzc2lnbmVkLCBpc0luY29tcGxldGUsIGNhblJlYXNzaWduIH0gPVxuICAgIHVzZVRpY2tldERldGFpbHModGlja2V0KTtcbiAgY29uc3QgW21vZGFsT3Blbiwgc2V0TW9kYWxPcGVuXSA9IHVzZVN0YXRlKG51bGwpO1xuICBjb25zdCByZWFzc2lnbkRhdGUgPSBnZXRTdW1taXRSZWFzc2lnbkRhdGUoc3VtbWl0KTtcbiAgY29uc3Qgb25SZWFzc2lnbmFibGVQZXJpb2QgPSByZWFzc2lnbkRhdGUgPiBub3c7XG4gIGNvbnN0IGlzUmVhc3NpZ25hYmxlID1cbiAgICBvblJlYXNzaWduYWJsZVBlcmlvZCAmJiBjYW5SZWFzc2lnbiAmJiAhaXNFeHRlcm5hbEFzc2lnbmVkVGlja2V0O1xuXG4gIGNvbnN0IGhhbmRsZUNsb3NlTW9kYWwgPSAoKSA9PiB7XG4gICAgZGlzcGF0Y2gocmVzZXRUaWNrZXQoKSk7XG4gICAgc2V0TW9kYWxPcGVuKG51bGwpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZU9wZW5Nb2RhbCA9ICh2aWV3KSA9PiB7XG4gICAgZGlzcGF0Y2gocmVzZXRUaWNrZXQoKSk7XG4gICAgc2V0TW9kYWxPcGVuKHZpZXcpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPEdyaWRcbiAgICAgIGNvbnRhaW5lclxuICAgICAga2V5PXt0aWNrZXQuaWR9XG4gICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5vcmRlcldyYXBwZXJ9ICR7XG4gICAgICAgIGlzUmVmdW5kTW9kYWwgPyBzdHlsZXMucmVmdW5kTW9kYWwgOiBcIlwiXG4gICAgICB9ICR7aXNSZWZ1bmRNb2RhbCAmJiAhaXNSZWZ1bmRhYmxlID8gc3R5bGVzLmRpc2FibGVkUmVmdW5kIDogXCJcIn0gJHtcbiAgICAgICAgaXNTZWxlY3RlZFRvUmVmdW5kID8gc3R5bGVzLnNlbGVjdGVkIDogXCJcIlxuICAgICAgfWB9XG4gICAgPlxuICAgICAge2lzUmVmdW5kTW9kYWwgJiYgKFxuICAgICAgICA8R3JpZCBpdGVtIHhzPXsxfSBwYWRkaW5nPXsyfSBjbGFzc05hbWU9e3N0eWxlcy5jaGVja2JveH0+XG4gICAgICAgICAgPENoZWNrYm94XG4gICAgICAgICAgICBhcmlhLWxhYmVsPVwicmVmdW5kIHRpY2tldCBjaGVja2JveFwiXG4gICAgICAgICAgICByb2xlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgY2hlY2tlZD17aXNTZWxlY3RlZFRvUmVmdW5kfVxuICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBzZWxlY3RUb1JlZnVuZChlLCB0aWNrZXQpfVxuICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgXCImIC5NdWlTdmdJY29uLXJvb3RcIjoge1xuICAgICAgICAgICAgICAgIGZvbnRTaXplOiAxOFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgZGlzYWJsZWQ9eyFpc1JlZnVuZGFibGV9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgKX1cbiAgICAgIDxHcmlkXG4gICAgICAgIGl0ZW1cbiAgICAgICAgY29udGFpbmVyXG4gICAgICAgIGRhdGEtdGVzdGlkPVwib3JkZXItbGlzdC10aWNrZXRcIlxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICAgICAgeHM9e2lzUmVmdW5kTW9kYWwgPyAxMSA6IDEyfVxuICAgICAgPlxuICAgICAgICA8R3JpZFxuICAgICAgICAgIHhzPXs4fVxuICAgICAgICAgIHB5PXsyfVxuICAgICAgICAgIHBsPXs0fVxuICAgICAgICAgIGl0ZW1cbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRUaWNrZXRUeXBlfVxuICAgICAgICAgIGp1c3RpZnk9XCJzcGFjZS1iZXR3ZWVuXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxTdGFja1xuICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6IFwiZmxleC1zdGFydFwiXG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgZGlyZWN0aW9uPVwicm93XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aDQ+e3RpY2tldC50aWNrZXRfdHlwZT8ubmFtZX08L2g0PlxuICAgICAgICAgIDwvU3RhY2s+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICAgPEdyaWQgY2xhc3NOYW1lPXtzdHlsZXMuYmFkZ2VGZWF0dXJlV3JhcHBlcn0geHM9ezR9IHB5PXsyfSBwcj17NH0gaXRlbT5cbiAgICAgICAgICB7dGlja2V0LmJhZGdlPy5mZWF0dXJlcz8ubWFwKChiZikgPT4gKFxuICAgICAgICAgICAgPFRvb2x0aXAgdGl0bGU9e2JmLm5hbWV9IGtleT17YmYubmFtZX0+XG4gICAgICAgICAgICAgIDxCYWRnZUZlYXR1cmVJY29uIG5hbWU9e2JmLm5hbWV9IGltYWdlPXtiZi5pbWFnZX0gLz5cbiAgICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9HcmlkPlxuICAgICAgICA8R3JpZCB4cz17MTJ9IHN4PXt7IHB4OiA0LCBwYjogMiB9fSBpdGVtPlxuICAgICAgICAgIDxBdHRlbmRlZVN0YXR1c1xuICAgICAgICAgICAgdGlja2V0PXt0aWNrZXR9XG4gICAgICAgICAgICBpc0V4dGVybmFsQXNzaWduZWRUaWNrZXQ9eyEhaXNFeHRlcm5hbEFzc2lnbmVkVGlja2V0fVxuICAgICAgICAgIC8+XG4gICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0Tm99PlxuICAgICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnRpY2tldF9ub1wiKX06e1wiIFwifVxuICAgICAgICAgICAgPENvcHlUZXh0XG4gICAgICAgICAgICAgIHRleHQ9e3RpY2tldC5udW1iZXJ9XG4gICAgICAgICAgICAgIHRvb2x0aXBUZXh0PXt0KFwidGlja2V0X3N0YXR1cy5jb3B5X3RpY2tldF9udW1iZXJcIil9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldEZvb3Rlcn0gcHg9e3sgeHM6IDEgfX0gcGI9e3sgeHM6IDIgfX0+XG4gICAgICAgICAgPEJveD5cbiAgICAgICAgICAgIDxUaWNrZXRTdGF0dXMgdGlja2V0PXt0aWNrZXR9IC8+XG4gICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRBY3Rpb25CdXR0b25zfT5cbiAgICAgICAgICAgIHt0aWNrZXQuaXNfYWN0aXZlICYmICFpc1JlZnVuZE1vZGFsICYmIChcbiAgICAgICAgICAgICAgPFRpY2tldENUQXNcbiAgICAgICAgICAgICAgICBpc1VuYXNzaWduZWQ9e2lzVW5hc3NpZ25lZH1cbiAgICAgICAgICAgICAgICBpc0luY29tcGxldGU9e2lzSW5jb21wbGV0ZX1cbiAgICAgICAgICAgICAgICBpc1JlYXNzaWduYWJsZT17aXNSZWFzc2lnbmFibGUgJiYgIWlzRXh0ZXJuYWxBc3NpZ25lZFRpY2tldH1cbiAgICAgICAgICAgICAgICBvbk9wZW5DbGljaz17aGFuZGxlT3Blbk1vZGFsfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L0JveD5cbiAgICAgICAgPC9Cb3g+XG4gICAgICAgIDxUaWNrZXREZXRhaWxcbiAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICB0aWNrZXRJZD17dGlja2V0Py5pZH1cbiAgICAgICAgICBvcmRlcklkPXt0aWNrZXQ/Lm9yZGVyX2lkIHx8IHRpY2tldD8ub3JkZXI/LmlkfVxuICAgICAgICAgIG93bmVySWQ9e3RpY2tldD8ub3duZXI/LmlkfVxuICAgICAgICAgIG9wZW49e21vZGFsT3BlbiA9PT0gbW9kYWxWaWV3cy5kZXRhaWx9XG4gICAgICAgICAgb25DbG9zZT17aGFuZGxlQ2xvc2VNb2RhbH1cbiAgICAgICAgLz5cbiAgICAgICAgPFRpY2tldEFzc2lnblxuICAgICAgICAgIHRpY2tldElkPXt0aWNrZXQ/LmlkfVxuICAgICAgICAgIG9yZGVySWQ9e3RpY2tldD8ub3JkZXJfaWQgfHwgdGlja2V0Py5vcmRlcj8uaWR9XG4gICAgICAgICAgb3duZXJJZD17dGlja2V0Py5vd25lcj8uaWR9XG4gICAgICAgICAgb3Blbj17W21vZGFsVmlld3MucmVhc3NpZ24sIG1vZGFsVmlld3MuYXNzaWduXS5pbmNsdWRlcyhtb2RhbE9wZW4pfVxuICAgICAgICAgIG9uQ2xvc2U9e2hhbmRsZUNsb3NlTW9kYWx9XG4gICAgICAgIC8+XG4gICAgICA8L0dyaWQ+XG4gICAgPC9HcmlkPlxuICApO1xufTtcblxuT3JkZXJMaXN0VGlja2V0cy5wcm9wVHlwZXMgPSB7XG4gIHRpY2tldDogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBpZDogUHJvcFR5cGVzLm51bWJlcixcbiAgICBvcmRlcl9pZDogUHJvcFR5cGVzLm51bWJlcixcbiAgICBvd25lcjogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAgIGlkOiBQcm9wVHlwZXMubnVtYmVyLFxuICAgICAgZW1haWw6IFByb3BUeXBlcy5zdHJpbmdcbiAgICB9KSxcbiAgICBudW1iZXI6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgdG90YWxfcmVmdW5kZWRfYW1vdW50OiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIHRpY2tldF90eXBlOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgICAgbmFtZTogUHJvcFR5cGVzLnN0cmluZ1xuICAgIH0pLFxuICAgIGlzX2FjdGl2ZTogUHJvcFR5cGVzLmJvb2xcbiAgfSksXG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdCxcbiAgaXNSZWZ1bmRNb2RhbDogUHJvcFR5cGVzLmJvb2wsXG4gIGlzU2VsZWN0ZWRUb1JlZnVuZDogUHJvcFR5cGVzLmJvb2wsXG4gIHNlbGVjdFRvUmVmdW5kOiBQcm9wVHlwZXMuZnVuYyxcbiAgaXNFeHRlcm5hbEFzc2lnbmVkVGlja2V0OiBQcm9wVHlwZXMuYm9vbFxufTtcblxuZXhwb3J0IGRlZmF1bHQgT3JkZXJMaXN0VGlja2V0cztcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgR3JpZCwgQm94IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBUYWJzIGZyb20gXCJAbXVpL21hdGVyaWFsL1RhYnNcIjtcbmltcG9ydCBUYWIgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvVGFiXCI7XG5pbXBvcnQgT3JkZXJMaXN0SXRlbSBmcm9tIFwiLi9PcmRlckxpc3RJdGVtXCI7XG5pbXBvcnQgT3JkZXJTdW1tYXJ5IGZyb20gXCIuLi9PcmRlclN1bW1hcnlcIjtcbmltcG9ydCBSZWZ1bmRSZXF1ZXN0c01vZGFsIGZyb20gXCIuLi9SZWZ1bmRSZXF1ZXN0c1wiO1xuaW1wb3J0IEVycm9yTGFiZWwgZnJvbSBcIi4uL0xhYmVscy9FcnJvckxhYmVsXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgUmVmdW5kRGV0YWlscyBmcm9tIFwiLi4vUmVmdW5kUmVxdWVzdHMvUmVmdW5kRGV0YWlsc1wiO1xuXG5jb25zdCBUYWJQYW5lbCA9IChwcm9wcykgPT4ge1xuICBjb25zdCB7IGNoaWxkcmVuLCB2YWx1ZSwgaW5kZXggfSA9IHByb3BzO1xuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIHJvbGU9XCJ0YWJwYW5lbFwiXG4gICAgICBoaWRkZW49e3ZhbHVlICE9PSBpbmRleH1cbiAgICAgIGlkPXtgdGFicGFuZWwtJHtpbmRleH1gfVxuICAgICAgYXJpYS1sYWJlbGxlZGJ5PXtgdGFiLSR7aW5kZXh9YH1cbiAgICA+XG4gICAgICB7dmFsdWUgPT09IGluZGV4ICYmIGNoaWxkcmVufVxuICAgIDwvZGl2PlxuICApO1xufTtcblxuY29uc3QgT3JkZXJzTGlzdERlc2t0b3BNb2JpbGUgPSAoe1xuICBpc01vYmlsZSxcbiAgc3VtbWl0LFxuICBvcmRlcixcbiAgZGV0YWlsc1JlcXVpcmVkLFxuICBvblBhZ2luYXRlQ2xpY2tcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBbdmFsdWUsIHNldFZhbHVlXSA9IHVzZVN0YXRlKDApO1xuICBjb25zdCBoYW5kbGVDaGFuZ2UgPSAoXywgbmV3VmFsdWUpID0+IHtcbiAgICBzZXRWYWx1ZShuZXdWYWx1ZSk7XG4gIH07XG4gIGNvbnN0IFt0aWNrZXRzVG9SZWZ1bmQsIHNldFRpY2tldHNUb1JlZnVuZF0gPSB1c2VTdGF0ZShbXSk7XG4gIGNvbnN0IFtzdWJtaXRSZXF1ZXN0LCBzZXRTdWJtaXRSZXF1ZXN0XSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW3JlZnVuZERldGFpbHNPcGVuLCBzZXRSZWZ1bmREZXRhaWxzT3Blbl0gPSB1c2VTdGF0ZShmYWxzZSk7XG5cbiAgY29uc3Qgb25SZWZ1bmRDbGljayA9ICgpID0+IHtcbiAgICBzZXRTdWJtaXRSZXF1ZXN0KHRydWUpO1xuICB9O1xuICBjb25zdCB1bnNlbGVjdFJlZnVuZFRpY2tldHMgPSAodGlja2V0KSA9PiB7XG4gICAgY29uc3QgZmlsdGVyU2VsZWN0ZWQgPSB0aWNrZXRzVG9SZWZ1bmQuZmlsdGVyKCh0KSA9PiB0LmlkICE9PSB0aWNrZXQuaWQpO1xuICAgIHNldFRpY2tldHNUb1JlZnVuZChmaWx0ZXJTZWxlY3RlZCk7XG4gIH07XG4gIGNvbnN0IHNlbGVjdFRvUmVmdW5kID0gKGUsIHRpY2tldCkgPT4ge1xuICAgIGNvbnN0IHsgY2hlY2tlZCB9ID0gZS50YXJnZXQ7XG4gICAgaWYgKGNoZWNrZWQpIHtcbiAgICAgIGNvbnN0IHNlbGVjdGVkVGlja2V0ID0gb3JkZXI/Lm1lbWJlclRpY2tldHM/LmZpbmQoXG4gICAgICAgICh0KSA9PiB0LmlkID09PSB0aWNrZXQuaWRcbiAgICAgICk7XG4gICAgICBzZXRUaWNrZXRzVG9SZWZ1bmQoWy4uLnRpY2tldHNUb1JlZnVuZCwgc2VsZWN0ZWRUaWNrZXRdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdW5zZWxlY3RSZWZ1bmRUaWNrZXRzKHRpY2tldCk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGNsb3NlU3VibWl0UmVxdWVzdCA9ICgpID0+IHtcbiAgICBzZXRTdWJtaXRSZXF1ZXN0KGZhbHNlKTtcbiAgICBzZXRUaWNrZXRzVG9SZWZ1bmQoW10pO1xuICB9O1xuXG4gIGNvbnN0IHJlc2V0QWxsUmVmdW5kU3RhdHVzZXMgPSAoKSA9PiB7XG4gICAgc2V0U3VibWl0UmVxdWVzdChmYWxzZSk7XG4gICAgc2V0VGlja2V0c1RvUmVmdW5kKFtdKTtcbiAgfTtcblxuICBjb25zdCBtb3JlRGV0YWlscyA9ICgpID0+XG4gICAgZGV0YWlsc1JlcXVpcmVkICYmIChcbiAgICAgIDxFcnJvckxhYmVsXG4gICAgICAgIG1lc3NhZ2U9e3QoXCJ0aWNrZXRfc3RhdHVzLnN0YXR1c19kZXRhaWxzX3JlcXVpcmVkXCIpfVxuICAgICAgICBjb2xvcj1cIiNmZjk4MDBcIlxuICAgICAgICBkYXRhVGVzdElkPVwibW9yZS1kZXRhaWxzLWxhYmVsXCJcbiAgICAgIC8+XG4gICAgKTtcblxuICByZXR1cm4gaXNNb2JpbGUgPyAoXG4gICAgPEJveFxuICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0TGlzdENvbnRhaW5lcn1cbiAgICAgIGRhdGEtdGVzdGlkPVwibW9iaWxlLW9yZGVycy1saXN0LWNvbnRhaW5lclwiXG4gICAgPlxuICAgICAgPEJveCBzeD17eyBib3JkZXJDb2xvcjogXCJkaXZpZGVyXCIsIHBiOiAyIH19PlxuICAgICAgICA8VGFic1xuICAgICAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlQ2hhbmdlfVxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJUaWNrZXRzICYgU3VtbWFyeVwiXG4gICAgICAgID5cbiAgICAgICAgICA8VGFiIGxhYmVsPXt0KFwibGFiZWxzLnRpY2tldHNcIil9IGNsYXNzTmFtZT17c3R5bGVzLnRhYkJ1dHRvbnN9IC8+XG4gICAgICAgICAgPFRhYiBsYWJlbD17dChcImxhYmVscy5zdW1tYXJ5XCIpfSBjbGFzc05hbWU9e3N0eWxlcy50YWJCdXR0b25zfSAvPlxuICAgICAgICA8L1RhYnM+XG4gICAgICA8L0JveD5cbiAgICAgIHttb3JlRGV0YWlscygpfVxuICAgICAgPFRhYlBhbmVsIHZhbHVlPXt2YWx1ZX0gaW5kZXg9ezB9PlxuICAgICAgICA8T3JkZXJMaXN0SXRlbVxuICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgIG9yZGVyPXtvcmRlcn1cbiAgICAgICAgICBvblBhZ2luYXRlQ2xpY2s9e29uUGFnaW5hdGVDbGlja31cbiAgICAgICAgICB0aWNrZXRzVG9SZWZ1bmQ9e3RpY2tldHNUb1JlZnVuZH1cbiAgICAgICAgICBzZWxlY3RUb1JlZnVuZD17c2VsZWN0VG9SZWZ1bmR9XG4gICAgICAgICAgc3VibWl0UmVxdWVzdD17c3VibWl0UmVxdWVzdH1cbiAgICAgICAgICB1bnNlbGVjdFJlZnVuZFRpY2tldHM9e3Vuc2VsZWN0UmVmdW5kVGlja2V0c31cbiAgICAgICAgLz5cbiAgICAgIDwvVGFiUGFuZWw+XG4gICAgICA8VGFiUGFuZWwgdmFsdWU9e3ZhbHVlfSBpbmRleD17MX0+XG4gICAgICAgIDxPcmRlclN1bW1hcnlcbiAgICAgICAgICBvcmRlcj17b3JkZXJ9XG4gICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgb25SZWZ1bmRDbGljaz17b25SZWZ1bmRDbGlja31cbiAgICAgICAgICBzdWJtaXRSZXF1ZXN0PXtzdWJtaXRSZXF1ZXN0fVxuICAgICAgICAgIG9uUmVmdW5kRGV0YWlsQ2xpY2s9eygpID0+IHNldFJlZnVuZERldGFpbHNPcGVuKHRydWUpfVxuICAgICAgICAvPlxuICAgICAgICA8UmVmdW5kUmVxdWVzdHNNb2RhbFxuICAgICAgICAgIHRpY2tldHM9e29yZGVyPy5tZW1iZXJUaWNrZXRzIHx8IFtdfVxuICAgICAgICAgIG9wZW49e3N1Ym1pdFJlcXVlc3R9XG4gICAgICAgICAgb25SZWZ1bmRTdWNjZXNzQ2xvc2U9eygpID0+IHJlc2V0QWxsUmVmdW5kU3RhdHVzZXMoKX1cbiAgICAgICAgICBvbkNsb3NlU2xpZGVyPXsoKSA9PiBjbG9zZVN1Ym1pdFJlcXVlc3QoKX1cbiAgICAgICAgICB0aWNrZXRzVG9SZWZ1bmQ9e3RpY2tldHNUb1JlZnVuZH1cbiAgICAgICAgICBzZWxlY3RUb1JlZnVuZD17c2VsZWN0VG9SZWZ1bmR9XG4gICAgICAgICAgdW5zZWxlY3RSZWZ1bmRUaWNrZXRzPXt1bnNlbGVjdFJlZnVuZFRpY2tldHN9XG4gICAgICAgIC8+XG4gICAgICAgIDxSZWZ1bmREZXRhaWxzXG4gICAgICAgICAgdGlja2V0cz17b3JkZXI/Lm1lbWJlclRpY2tldHN9XG4gICAgICAgICAgY3VycmVuY3k9e29yZGVyLmN1cnJlbmN5fVxuICAgICAgICAgIG9wZW49e3JlZnVuZERldGFpbHNPcGVufVxuICAgICAgICAgIG9uQ2xvc2VTbGlkZXI9eygpID0+IHNldFJlZnVuZERldGFpbHNPcGVuKGZhbHNlKX1cbiAgICAgICAgLz5cbiAgICAgIDwvVGFiUGFuZWw+XG4gICAgPC9Cb3g+XG4gICkgOiAoXG4gICAgPD5cbiAgICAgIDxHcmlkIGl0ZW0gbWQ9ezEyfT5cbiAgICAgICAge21vcmVEZXRhaWxzKCl9XG4gICAgICA8L0dyaWQ+XG4gICAgICA8R3JpZFxuICAgICAgICBwYWRkaW5nPXsxfVxuICAgICAgICBpdGVtXG4gICAgICAgIG1kPXs3fVxuICAgICAgICBvcmRlcj17eyBtZDogMSB9fVxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRMaXN0Q29udGFpbmVyfVxuICAgICAgICBkYXRhLXRlc3RpZD1cImRlc2t0b3Atb3JkZXJzLWxpc3QtY29udGFpbmVyXCJcbiAgICAgID5cbiAgICAgICAgPE9yZGVyTGlzdEl0ZW1cbiAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICBvcmRlcj17b3JkZXJ9XG4gICAgICAgICAgb25QYWdpbmF0ZUNsaWNrPXtvblBhZ2luYXRlQ2xpY2t9XG4gICAgICAgICAgdGlja2V0c1RvUmVmdW5kPXt0aWNrZXRzVG9SZWZ1bmR9XG4gICAgICAgICAgc2VsZWN0VG9SZWZ1bmQ9e3NlbGVjdFRvUmVmdW5kfVxuICAgICAgICAgIHN1Ym1pdFJlcXVlc3Q9e3N1Ym1pdFJlcXVlc3R9XG4gICAgICAgICAgdW5zZWxlY3RSZWZ1bmRUaWNrZXRzPXt1bnNlbGVjdFJlZnVuZFRpY2tldHN9XG4gICAgICAgIC8+XG4gICAgICA8L0dyaWQ+XG4gICAgICA8R3JpZCBwYWRkaW5nPXsxfSBpdGVtIG1kPXs1fSBvcmRlcj17eyBtZDogMSB9fT5cbiAgICAgICAgPE9yZGVyU3VtbWFyeVxuICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgIG9yZGVyPXtvcmRlcn1cbiAgICAgICAgICBvblJlZnVuZENsaWNrPXtvblJlZnVuZENsaWNrfVxuICAgICAgICAgIHN1Ym1pdFJlcXVlc3Q9e3N1Ym1pdFJlcXVlc3R9XG4gICAgICAgICAgb25SZWZ1bmREZXRhaWxDbGljaz17KCkgPT4gc2V0UmVmdW5kRGV0YWlsc09wZW4odHJ1ZSl9XG4gICAgICAgIC8+XG4gICAgICA8L0dyaWQ+XG4gICAgICA8UmVmdW5kUmVxdWVzdHNNb2RhbFxuICAgICAgICB0aWNrZXRzPXtvcmRlcj8ubWVtYmVyVGlja2V0cyB8fCBbXX1cbiAgICAgICAgb3Blbj17c3VibWl0UmVxdWVzdH1cbiAgICAgICAgb25SZWZ1bmRTdWNjZXNzQ2xvc2U9eygpID0+IHJlc2V0QWxsUmVmdW5kU3RhdHVzZXMoKX1cbiAgICAgICAgb25DbG9zZVNsaWRlcj17KCkgPT4gY2xvc2VTdWJtaXRSZXF1ZXN0KCl9XG4gICAgICAgIHRpY2tldHNUb1JlZnVuZD17dGlja2V0c1RvUmVmdW5kfVxuICAgICAgICBzZWxlY3RUb1JlZnVuZD17c2VsZWN0VG9SZWZ1bmR9XG4gICAgICAgIHVuc2VsZWN0UmVmdW5kVGlja2V0cz17dW5zZWxlY3RSZWZ1bmRUaWNrZXRzfVxuICAgICAgLz5cbiAgICAgIDxSZWZ1bmREZXRhaWxzXG4gICAgICAgIHRpY2tldHM9e29yZGVyPy5tZW1iZXJUaWNrZXRzfVxuICAgICAgICBjdXJyZW5jeT17b3JkZXIuY3VycmVuY3l9XG4gICAgICAgIG9wZW49e3JlZnVuZERldGFpbHNPcGVufVxuICAgICAgICBvbkNsb3NlU2xpZGVyPXsoKSA9PiBzZXRSZWZ1bmREZXRhaWxzT3BlbihmYWxzZSl9XG4gICAgICAvPlxuICAgIDwvPlxuICApO1xufTtcblxuT3JkZXJzTGlzdERlc2t0b3BNb2JpbGUucHJvcFR5cGVzID0ge1xuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIG9yZGVyOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIG1lbWJlclRpY2tldHM6IFByb3BUeXBlcy5hcnJheU9mKE9iamVjdClcbiAgfSksXG4gIGlzTW9iaWxlOiBQcm9wVHlwZXMuYm9vbCxcbiAgZGV0YWlsc1JlcXVpcmVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgb25QYWdpbmF0ZUNsaWNrOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgT3JkZXJzTGlzdERlc2t0b3BNb2JpbGU7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoLCB1c2VTZWxlY3Rvciwgc2hhbGxvd0VxdWFsIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBHcmlkLCBCb3gsIEJ1dHRvbiB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VUaGVtZSB9IGZyb20gXCJAbXVpL21hdGVyaWFsL3N0eWxlc1wiO1xuaW1wb3J0IHVzZU1lZGlhUXVlcnkgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvdXNlTWVkaWFRdWVyeVwiO1xuaW1wb3J0IHsgZ2V0VGlja2V0c0J5T3JkZXIgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuaW1wb3J0IHsgZ2V0Rm9ybWF0dGVkRGF0ZSB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xuaW1wb3J0IHsgT05FX1BBR0VfTkVYVCB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCBPcmRlcnNMaXN0RGVza3RvcE1vYmlsZSBmcm9tIFwiLi9PcmRlcnNMaXN0RGVza3RvcE1vYmlsZVwiO1xuaW1wb3J0IENvcHlUZXh0IGZyb20gXCIuLi9Db3B5VGV4dFwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBPcmRlcnNMaXN0ID0gKHsgc3VtbWl0LCBvcmRlciB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuICBjb25zdCB7IHRpY2tldF9wZXJfcGFnZSwgZmlsdGVyLCBzb3J0IH0gPSB1c2VTZWxlY3RvcihcbiAgICAoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlIHx8IHt9LFxuICAgIHNoYWxsb3dFcXVhbFxuICApO1xuICBjb25zdCB0aGVtZSA9IHVzZVRoZW1lKCk7XG4gIGNvbnN0IGlzTW9iaWxlID0gdXNlTWVkaWFRdWVyeSh0aGVtZS5icmVha3BvaW50cy5kb3duKFwibGdcIikpO1xuICBjb25zdCBbaXNNb2JpbGVWaWV3YWJsZSwgc2V0TW9iaWxlVmlld2FibGVdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBkZXRhaWxzUmVxdWlyZWQgPSBvcmRlci5tZW1iZXJUaWNrZXRzPy5maW5kKFxuICAgICh0aWNrZXQpID0+IHRpY2tldC5vd25lcj8uc3RhdHVzID09PSBcIkluY29tcGxldGVcIlxuICApO1xuXG4gIGNvbnN0IG9uUGFnaW5hdGVDbGljayA9ICgpID0+XG4gICAgZGlzcGF0Y2goXG4gICAgICBnZXRUaWNrZXRzQnlPcmRlcih7XG4gICAgICAgIG9yZGVySWQ6IG9yZGVyLmlkLFxuICAgICAgICBwYWdlOiBvcmRlci50aWNrZXRzX3BhZ2VfY3VycmVudCArIE9ORV9QQUdFX05FWFQsXG4gICAgICAgIHBlclBhZ2U6IHRpY2tldF9wZXJfcGFnZSxcbiAgICAgICAgZmlsdGVyLFxuICAgICAgICBzb3J0XG4gICAgICB9KVxuICAgICk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPEJveFxuICAgICAgICBzeD17eyBwYWRkaW5nOiB7IHhzOiAyLCBtZDogMSwgbGc6IDAgfSB9fVxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5vcmRlclRpY2tldEluZm9Db250YWluZXJ9XG4gICAgICA+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJUaWNrZXRJbmZvfVxuICAgICAgICAgIGRhdGEtdGVzdGlkPVwib3JkZXItdGlja2V0LWluZm8tY29udGFpbmVyXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt0KFwib3JkZXJzLnB1cmNoYXNlZFwiKX06IHtnZXRGb3JtYXR0ZWREYXRlKG9yZGVyLmNyZWF0ZWQpfSB8e1wiIFwifVxuICAgICAgICAgIHt0KFwib3JkZXJfc3VtbWFyeS5vcmRlcl9ub1wiKX06e1wiIFwifVxuICAgICAgICAgIDxDb3B5VGV4dFxuICAgICAgICAgICAgdGV4dD17b3JkZXIubnVtYmVyfVxuICAgICAgICAgICAgdG9vbHRpcFRleHQ9e3QoXCJvcmRlcl9zdW1tYXJ5LmNvcHlfb3JkZXJfbnVtYmVyXCIpfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAge2lzTW9iaWxlICYmIChcbiAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICBzeD17eyBwYWRkaW5nOiBcIjVweCAxMHB4XCIgfX1cbiAgICAgICAgICAgIHZhcmlhbnQ9XCJjb250YWluZWRcIlxuICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldE1vYmlsZVZpZXdhYmxlKCFpc01vYmlsZVZpZXdhYmxlKX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7aXNNb2JpbGVWaWV3YWJsZVxuICAgICAgICAgICAgICA/IHQoXCJ0aWNrZXRfc3RhdHVzLmhpZGVfdGlja2V0c1wiKVxuICAgICAgICAgICAgICA6IHQoXCJ0aWNrZXRfc3RhdHVzLnZpZXdfdGlja2V0c1wiKX1cbiAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgKX1cbiAgICAgIDwvQm94PlxuICAgICAgPEdyaWRcbiAgICAgICAga2V5PXtvcmRlci5pZH1cbiAgICAgICAgY29udGFpbmVyXG4gICAgICAgIHJvd1NwYWNpbmc9ezF9XG4gICAgICAgIGNvbHVtblNwYWNpbmc9e3sgeHM6IDEsIHNtOiAyLCBtZDogMyB9fVxuICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5vcmRlclRpY2tldENvbnRhaW5lcn0gJHtcbiAgICAgICAgICBpc01vYmlsZSAmJiAhaXNNb2JpbGVWaWV3YWJsZSA/IHN0eWxlcy5kaXNwbGF5X25vbmUgOiBcIlwiXG4gICAgICAgIH1gfVxuICAgICAgICBzeD17e1xuICAgICAgICAgIGZsZXhEaXJlY3Rpb246IHtcbiAgICAgICAgICAgIG1kOiBcInJvd1wiLFxuICAgICAgICAgICAgbGc6IFwicm93XCJcbiAgICAgICAgICB9LFxuICAgICAgICAgIHBhZGRpbmc6IHtcbiAgICAgICAgICAgIHhzOiAyLFxuICAgICAgICAgICAgbWQ6IDQsXG4gICAgICAgICAgICBsZzogMFxuICAgICAgICAgIH1cbiAgICAgICAgfX1cbiAgICAgID5cbiAgICAgICAgPE9yZGVyc0xpc3REZXNrdG9wTW9iaWxlXG4gICAgICAgICAgaXNNb2JpbGU9e2lzTW9iaWxlfVxuICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgIG9yZGVyPXtvcmRlcn1cbiAgICAgICAgICBkZXRhaWxzUmVxdWlyZWQ9eyEhZGV0YWlsc1JlcXVpcmVkfVxuICAgICAgICAgIG9uUGFnaW5hdGVDbGljaz17b25QYWdpbmF0ZUNsaWNrfVxuICAgICAgICAvPlxuICAgICAgPC9HcmlkPlxuICAgIDwvPlxuICApO1xufTtcblxuT3JkZXJzTGlzdC5wcm9wVHlwZXMgPSB7XG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdCxcbiAgb3JkZXI6IFByb3BUeXBlcy5vYmplY3Rcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE9yZGVyc0xpc3Q7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlTWVtbyB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQm94IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBSaWdodERyYXdlciBmcm9tIFwiLi4vUmlnaHREcmF3ZXJcIjtcbmltcG9ydCBSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXQgZnJvbSBcIi4vUmVmdW5kUmVxdWVzdGVkVGlja2V0XCI7XG5pbXBvcnQgeyBnZXRBbGxSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXRzIH0gZnJvbSBcIi4uLy4uL3V0aWxzL3RpY2tldFV0aWxzXCI7XG5cbmNvbnN0IFJlZnVuZERldGFpbHMgPSAoeyB0aWNrZXRzLCBjdXJyZW5jeSwgb3Blbiwgb25DbG9zZVNsaWRlciB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgcmVxdWVzdGVkVGlja2V0cyA9IHVzZU1lbW8oXG4gICAgKCkgPT4gZ2V0QWxsUmVmdW5kUmVxdWVzdGVkVGlja2V0cyh0aWNrZXRzKSxcbiAgICBbdGlja2V0c11cbiAgKTtcbiAgY29uc3QgY2xvc2VTbGlkZXIgPSAoKSA9PiB7XG4gICAgb25DbG9zZVNsaWRlcigpO1xuICB9O1xuICByZXR1cm4gKFxuICAgIDxSaWdodERyYXdlclxuICAgICAgaWQ9XCJyZWZ1bmQtZGV0YWlsc1wiXG4gICAgICBvcGVuPXtvcGVufVxuICAgICAgb25DbG9zZT17Y2xvc2VTbGlkZXJ9XG4gICAgICB0aXRsZT17dChcIm9yZGVyX3N1bW1hcnkucmVmdW5kX2RldGFpbHNcIil9XG4gICAgPlxuICAgICAgPEJveFxuICAgICAgICBzeD17e1xuICAgICAgICAgIGRpc3BsYXk6IFwiZmxleFwiLFxuICAgICAgICAgIGZsZXhEaXJlY3Rpb246IFwiY29sdW1uXCIsXG4gICAgICAgICAgYWxpZ25JdGVtczogXCJjZW50ZXJcIixcbiAgICAgICAgICBwYWRkaW5nOiBcIjAgNXJlbVwiXG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIHtyZXF1ZXN0ZWRUaWNrZXRzPy5tYXAoKHRpY2tldCkgPT4gKFxuICAgICAgICAgIDxSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXRcbiAgICAgICAgICAgIGtleT17YHJlZnVuZF9yZXFfJHt0aWNrZXQ/LmlkfWB9XG4gICAgICAgICAgICB0aWNrZXQ9e3RpY2tldH1cbiAgICAgICAgICAgIGN1cnJlbmN5PXtjdXJyZW5jeX1cbiAgICAgICAgICAgIHJlZnVuZERldGFpbHNcbiAgICAgICAgICAvPlxuICAgICAgICApKX1cbiAgICAgIDwvQm94PlxuICAgIDwvUmlnaHREcmF3ZXI+XG4gICk7XG59O1xuXG5SZWZ1bmREZXRhaWxzLnByb3BUeXBlcyA9IHtcbiAgdGlja2V0czogUHJvcFR5cGVzLmFycmF5T2YoT2JqZWN0KSxcbiAgb3BlbjogUHJvcFR5cGVzLmJvb2wsXG4gIG9uQ2xvc2VTbGlkZXI6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBSZWZ1bmREZXRhaWxzO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgR3JpZCwgSWNvbkJ1dHRvbiwgVG9vbHRpcCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB0b29sdGlwQ2xhc3NlcyB9IGZyb20gXCJAbXVpL21hdGVyaWFsL1Rvb2x0aXBcIjtcbmltcG9ydCB7IHN0eWxlZCB9IGZyb20gXCJAbXVpL21hdGVyaWFsL3N0eWxlc1wiO1xuaW1wb3J0IEluZm9JY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0luZm9cIjtcbmltcG9ydCBTdGFjayBmcm9tIFwiQG11aS9tYXRlcmlhbC9TdGFja1wiO1xuaW1wb3J0IG1vbWVudCBmcm9tIFwibW9tZW50LXRpbWV6b25lXCI7XG5pbXBvcnQgQXR0ZW5kZWVTdGF0dXMgZnJvbSBcIi4uL09yZGVyc0xpc3QvQXR0ZW5kZWVTdGF0dXNcIjtcbmltcG9ydCBSZWZ1bmRTdGF0dXMgZnJvbSBcIi4vUmVmdW5kU3RhdHVzXCI7XG5pbXBvcnQgQ29weVRleHQgZnJvbSBcIi4uL0NvcHlUZXh0XCI7XG5pbXBvcnQgVGlja2V0U3RhdHVzIGZyb20gXCIuLi9UaWNrZXRTdGF0dXNcIjtcbmltcG9ydCBCYWRnZUZlYXR1cmVJY29uIGZyb20gXCIuLi9CYWRnZUZlYXR1cmVJY29uXCI7XG5pbXBvcnQgeyBNSUxMSVNFQ19UT19TRUMgfSBmcm9tIFwiLi4vLi4vdXRpbHMvY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBmb3JtYXRDdXJyZW5jeSB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXQgPSAoeyB0aWNrZXQsIGN1cnJlbmN5LCByZWZ1bmREZXRhaWxzIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuXG4gIGNvbnN0IEdSSURfOCA9IDg7XG4gIGNvbnN0IEdSSURfMTIgPSAxMjtcblxuICBjb25zdCBQQURESU5HXzIgPSAyO1xuXG4gIGNvbnN0IGFwcHJvdmVkUmVmdW5kcyA9IHRpY2tldC5yZWZ1bmRfcmVxdWVzdHMuZmlsdGVyKFxuICAgIChyZWZ1bmQpID0+IHJlZnVuZC5zdGF0dXMgPT09IFwiQXBwcm92ZWRcIlxuICApO1xuXG4gIGNvbnN0IHJlZnVuZGVkVGF4ZXNTdW1tYXRvcnkgPSB7fTtcblxuICBhcHByb3ZlZFJlZnVuZHMuZm9yRWFjaCgocmVmdW5kKSA9PiB7XG4gICAgcmVmdW5kLnJlZnVuZGVkX3RheGVzLmZvckVhY2goKHJ0KSA9PiB7XG4gICAgICBjb25zdCB0YXhJZCA9IHJ0LnRheC5pZDtcbiAgICAgIGlmICghcmVmdW5kZWRUYXhlc1N1bW1hdG9yeVt0YXhJZF0pIHtcbiAgICAgICAgcmVmdW5kZWRUYXhlc1N1bW1hdG9yeVt0YXhJZF0gPSB7XG4gICAgICAgICAgbmFtZTogcnQudGF4Lm5hbWUsXG4gICAgICAgICAgdG90YWxSZWZ1bmRlZFRheEFtb3VudDogMFxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgcmVmdW5kZWRUYXhlc1N1bW1hdG9yeVt0YXhJZF0udG90YWxSZWZ1bmRlZFRheEFtb3VudCArPVxuICAgICAgICBydC5yZWZ1bmRlZF9hbW91bnQ7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGNvbnN0IEh0bWxUb29sdGlwID0gc3R5bGVkKCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSkgPT4gKFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAgIDxUb29sdGlwIHsuLi5wcm9wc30gY2xhc3Nlcz17eyBwb3BwZXI6IGNsYXNzTmFtZSB9fSAvPlxuICApKSgoKSA9PiAoe1xuICAgIFtgJiAuJHt0b29sdGlwQ2xhc3Nlcy50b29sdGlwfWBdOiB7XG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6IFwiI2Y1ZjVmOVwiLFxuICAgICAgY29sb3I6IFwicmdiYSgwLCAwLCAwLCAwLjg3KVwiLFxuICAgICAgbWF4V2lkdGg6IDIyMCxcbiAgICAgIGZvbnRTaXplOiBcIjFlbVwiLFxuICAgICAgYm9yZGVyOiBcIjFweCBzb2xpZCAjZGFkZGU5XCJcbiAgICB9XG4gIH0pKTtcblxuICByZXR1cm4gKFxuICAgIDxHcmlkXG4gICAgICBjb250YWluZXJcbiAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLnJlZnVuZFRpY2tldEJveENvbnRhaW5lcn0gJHtcbiAgICAgICAgcmVmdW5kRGV0YWlscyA/IHN0eWxlcy5yZWZ1bmREZXRhaWwgOiBcIlwiXG4gICAgICB9IGB9XG4gICAgICBkYXRhLXRlc3RpZD1cInJlZnVuZC1yZXF1ZXN0ZWQtdGlja2V0LWNvbnRhaW5lclwiXG4gICAgPlxuICAgICAgPEdyaWRcbiAgICAgICAgeHM9e0dSSURfMTJ9XG4gICAgICAgIHNtPXtyZWZ1bmREZXRhaWxzID8gR1JJRF84IDogR1JJRF8xMn1cbiAgICAgICAgaXRlbVxuICAgICAgICBqdXN0aWZ5PVwic3BhY2UtYmV0d2VlblwiXG4gICAgICAgIHB0PXsyfVxuICAgICAgICBweD17NH1cbiAgICAgID5cbiAgICAgICAgPFN0YWNrXG4gICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgIGp1c3RpZnlDb250ZW50OiBcInNwYWNlLWJldHdlZW5cIixcbiAgICAgICAgICAgIGFsaWduSXRlbXM6IFwiY2VudGVyXCJcbiAgICAgICAgICB9fVxuICAgICAgICAgIGRpcmVjdGlvbj1cInJvd1wiXG4gICAgICAgID5cbiAgICAgICAgICA8aDQ+e3RpY2tldC50aWNrZXRfdHlwZT8ubmFtZX08L2g0PlxuICAgICAgICAgIDxHcmlkIGNsYXNzTmFtZT17c3R5bGVzLmJhZGdlRmVhdHVyZVdyYXBwZXJ9IHhzPXs0fSBpdGVtPlxuICAgICAgICAgICAge3RpY2tldC5iYWRnZT8uZmVhdHVyZXM/Lm1hcCgoYmYpID0+IChcbiAgICAgICAgICAgICAgPEJhZGdlRmVhdHVyZUljb24ga2V5PXtiZi5uYW1lfSBuYW1lPXtiZi5uYW1lfSBpbWFnZT17YmYuaW1hZ2V9IC8+XG4gICAgICAgICAgICApKX1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDwvU3RhY2s+XG4gICAgICA8L0dyaWQ+XG4gICAgICB7cmVmdW5kRGV0YWlscyAmJiAoXG4gICAgICAgIDxHcmlkIHNtPXs0fSB4cz17MTJ9IHB4PXt7IHNtOiAyLCB4czogNCB9fSBweT17eyB4czogMSwgc206IDIgfX0gaXRlbT5cbiAgICAgICAgICA8UmVmdW5kU3RhdHVzIHRpY2tldD17dGlja2V0fSAvPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICApfVxuICAgICAgPEdyaWQgeHM9ezEyfSBpdGVtIHB4PXs0fSBwYj17cmVmdW5kRGV0YWlscyA/IFBBRERJTkdfMiA6IDB9IGNvbnRhaW5lcj5cbiAgICAgICAgPEdyaWQgeHM9ezEyfSBzbT17OH0gY2xhc3NOYW1lPXtzdHlsZXMucmVmdW5kVGlja2V0QXR0ZW5kZWV9PlxuICAgICAgICAgIDxBdHRlbmRlZVN0YXR1cyB0aWNrZXQ9e3RpY2tldH0gLz5cbiAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXROb30+XG4gICAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMudGlja2V0X25vXCIpfTogPENvcHlUZXh0IHRleHQ9e3RpY2tldC5udW1iZXJ9IC8+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICAgIHtyZWZ1bmREZXRhaWxzICYmIHRpY2tldC50b3RhbF9yZWZ1bmRlZF9hbW91bnQgPiAwICYmIChcbiAgICAgICAgICA8R3JpZCB4cz17MTJ9IG1kPXs0fSBwbD17eyB4czogMCwgc206IDQgfX0+XG4gICAgICAgICAgICB7Zm9ybWF0Q3VycmVuY3kodGlja2V0LnRvdGFsX3JlZnVuZGVkX2Ftb3VudCwgeyBjdXJyZW5jeSB9KX17XCIgXCJ9XG4gICAgICAgICAgICBSZWZ1bmRlZFxuICAgICAgICAgICAge2FwcHJvdmVkUmVmdW5kcy5zb21lKChyKSA9PiByLnJlZnVuZGVkX3RheGVzLmxlbmd0aCA+IDApICYmIChcbiAgICAgICAgICAgICAgPEh0bWxUb29sdGlwXG4gICAgICAgICAgICAgICAgdGl0bGU9e1xuICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgICAgICAgICAge2Zvcm1hdEN1cnJlbmN5KHRpY2tldC5yZWZ1bmRlZF9hbW91bnQsIHsgY3VycmVuY3kgfSl9e1wiIFwifVxuICAgICAgICAgICAgICAgICAgICAgIFRpY2tldCBBbW91bnRcbiAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICA8Yj5UYXhlczwvYj5cbiAgICAgICAgICAgICAgICAgICAge09iamVjdC5rZXlzKHJlZnVuZGVkVGF4ZXNTdW1tYXRvcnkpLm1hcCgodGF4SWQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCB7IHRvdGFsUmVmdW5kZWRUYXhBbW91bnQsIG5hbWUgfSA9XG4gICAgICAgICAgICAgICAgICAgICAgICByZWZ1bmRlZFRheGVzU3VtbWF0b3J5W3RheElkXTtcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPHAga2V5PXt0YXhJZH0+e2Ake25hbWV9IC0gJHtmb3JtYXRDdXJyZW5jeShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdG90YWxSZWZ1bmRlZFRheEFtb3VudCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjdXJyZW5jeSB9XG4gICAgICAgICAgICAgICAgICAgICAgICApfWB9PC9wPlxuICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPEljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICA8SW5mb0ljb24gLz5cbiAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgIDwvSHRtbFRvb2x0aXA+XG4gICAgICAgICAgICApfVxuICAgICAgICAgICAgPGJyIC8+XG4gICAgICAgICAgICB7bW9tZW50KFxuICAgICAgICAgICAgICB0aWNrZXQucmVmdW5kX3JlcXVlc3RzWzBdLmFjdGlvbl9kYXRlICogTUlMTElTRUNfVE9fU0VDXG4gICAgICAgICAgICApLmZvcm1hdChcIk1NTSBERCwgWVlZWVwiKX1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICl9XG4gICAgICA8L0dyaWQ+XG4gICAgICB7IXJlZnVuZERldGFpbHMgJiYgKFxuICAgICAgICA8R3JpZCB4cz17MTJ9IHByPXs0fSBwYj17Mn0+XG4gICAgICAgICAgPEdyaWQgeHM9ezEyfSBpdGVtPlxuICAgICAgICAgICAgPFRpY2tldFN0YXR1cyB0aWNrZXQ9e3RpY2tldH0gLz5cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICl9XG4gICAgPC9HcmlkPlxuICApO1xufTtcblxuUmVmdW5kUmVxdWVzdGVkVGlja2V0LnByb3BUeXBlcyA9IHtcbiAgdGlja2V0OiBQcm9wVHlwZXMub2JqZWN0LFxuICByZWZ1bmREZXRhaWxzOiBQcm9wVHlwZXMuYm9vbFxufTtcblxuZXhwb3J0IGRlZmF1bHQgUmVmdW5kUmVxdWVzdGVkVGlja2V0O1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZU1lbW8gfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IENoaXAgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgZ2V0UmVmdW5kUmVxdWVzdGVkU3RhdHVzQ29sb3IgfSBmcm9tIFwiLi4vLi4vdXRpbHMvdGlja2V0VXRpbHNcIjtcblxuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBSZWZ1bmRTdGF0dXMgPSAoeyB0aWNrZXQgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IHN0YXR1c0NvbG9yID0gdXNlTWVtbyhcbiAgICAoKSA9PiBnZXRSZWZ1bmRSZXF1ZXN0ZWRTdGF0dXNDb2xvcih0aWNrZXQpLFxuICAgIFt0aWNrZXRdXG4gICk7XG4gIHJldHVybiAoXG4gICAgPENoaXBcbiAgICAgIGFyaWEtbGFiZWw9XCJ0aWNrZXQgcmVmdW5kIHN0YXR1cyBsYWJlbFwiXG4gICAgICBsYWJlbD17dChgdGlja2V0X3N0YXR1cy5yZWZ1bmRfcmVxdWVzdF8ke3N0YXR1c0NvbG9yfWApfVxuICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuYnV0dG9uUGlsbH0gJHtzdHlsZXNbc3RhdHVzQ29sb3JdfWB9XG4gICAgLz5cbiAgKTtcbn07XG5cblJlZnVuZFN0YXR1cy5wcm9wVHlwZXMgPSB7XG4gIHRpY2tldDogUHJvcFR5cGVzLm9iamVjdFxufTtcblxuZXhwb3J0IGRlZmF1bHQgUmVmdW5kU3RhdHVzO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgQm94LCBCdXR0b24sIFN0eWxlZEVuZ2luZVByb3ZpZGVyIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBDaGVja0NpcmNsZUljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ2hlY2tDaXJjbGVcIjtcbmltcG9ydCBSaWdodERyYXdlciBmcm9tIFwiLi4vUmlnaHREcmF3ZXJcIjtcbmltcG9ydCBFcnJvckxhYmVsIGZyb20gXCIuLi9MYWJlbHMvRXJyb3JMYWJlbFwiO1xuaW1wb3J0IHsgcmVmdW5kQnVsa1RpY2tldHMsIHVwZGF0ZVRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWQgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuaW1wb3J0IHsgU1RFUF9PTkUsIFNURVBfVEhSRUUsIFNURVBfVFdPIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2NvbnN0YW50c1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IE9yZGVyTGlzdFRpY2tldHMgZnJvbSBcIi4uL09yZGVyc0xpc3QvT3JkZXJMaXN0VGlja2V0c1wiO1xuaW1wb3J0IFJlZnVuZFJlcXVlc3RlZFRpY2tldCBmcm9tIFwiLi9SZWZ1bmRSZXF1ZXN0ZWRUaWNrZXRcIjtcblxuY29uc3QgUmVmdW5kUmVxdWVzdHNNb2RhbCA9ICh7XG4gIHRpY2tldHMsXG4gIHN1bW1pdCxcbiAgb3BlbixcbiAgb25SZWZ1bmRTdWNjZXNzQ2xvc2UsXG4gIG9uQ2xvc2VTbGlkZXIsXG4gIHRpY2tldHNUb1JlZnVuZCxcbiAgc2VsZWN0VG9SZWZ1bmQsXG4gIHVuc2VsZWN0UmVmdW5kVGlja2V0c1xufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcbiAgY29uc3QgW3N0ZXAsIHNldFN0ZXBdID0gdXNlU3RhdGUoU1RFUF9PTkUpO1xuICBjb25zdCBbZXJyb3JNc2csIHNldEVycm9yTXNnXSA9IHVzZVN0YXRlKFwiXCIpO1xuICBjb25zdCBbcmVmdW5kU3VjY2Vzcywgc2V0UmVmdW5kU3VjY2Vzc10gPSB1c2VTdGF0ZShmYWxzZSk7XG5cbiAgY29uc3QgY2xvc2VTbGlkZXIgPSAoKSA9PiB7XG4gICAgc2V0RXJyb3JNc2coXCJcIik7XG4gICAgb25DbG9zZVNsaWRlcigpO1xuICAgIHNldFN0ZXAoU1RFUF9PTkUpO1xuICAgIGlmIChyZWZ1bmRTdWNjZXNzKSB7XG4gICAgICBvblJlZnVuZFN1Y2Nlc3NDbG9zZSgpOyAvLyBpZiB0aGUgcmVmdW5kIGlzIGEgc3VjY2VzcywgdHJpZ2dlciBhbmQgcmUtcmV0cmlldmUgdGlja2V0cyBieSBvcmRlclxuICAgICAgc2V0UmVmdW5kU3VjY2VzcyhmYWxzZSk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGNvbmZpcm1SZWZ1bmQgPSAoKSA9PiB7XG4gICAgc2V0U3RlcChTVEVQX1RXTyk7XG4gIH07XG5cbiAgY29uc3QgZ29CYWNrVG9SZWZ1bmQgPSAoKSA9PiB7XG4gICAgc2V0U3RlcChTVEVQX09ORSk7XG4gIH07XG5cbiAgY29uc3QgcmVmdW5kVGlja2V0cyA9IGFzeW5jICgpID0+IHtcbiAgICBkaXNwYXRjaChyZWZ1bmRCdWxrVGlja2V0cyh7IHRpY2tldHM6IHRpY2tldHNUb1JlZnVuZCB9KSkudGhlbigocmVzKSA9PiB7XG4gICAgICBkaXNwYXRjaCh1cGRhdGVUaWNrZXRzUmVmdW5kUmVxdWVzdGVkKHJlcykpOyAvLyByZXR1cm5pbmcgd2hpY2ggdGlja2V0cyB3ZXJlIHN1Y2Nlc3NmdWxcbiAgICAgIGlmIChyZXM/Lmxlbmd0aCA9PT0gdGlja2V0c1RvUmVmdW5kLmxlbmd0aCkge1xuICAgICAgICBzZXRTdGVwKFNURVBfVEhSRUUpOyAvLyBzdWNjZXNzLCBhbGwgcmVmdW5kcyB3ZXJlIHJlcXVlc3RlZFxuICAgICAgICBzZXRSZWZ1bmRTdWNjZXNzKHRydWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2V0RXJyb3JNc2codChcImVycm9ycy5yZWZ1bmRfdW5zdWNjZXNzZnVsXCIpKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBzZXRFcnJvck1zZyhcIlwiKTtcbiAgfTtcblxuICBjb25zdCByZWZ1bmRTdGVwT25lID0gKCkgPT4gKFxuICAgIDw+XG4gICAgICA8aDIgY2xhc3NOYW1lPXtzdHlsZXMuc3VidGl0bGV9PlxuICAgICAgICB7dChcImNvbmZpcm1fcG9wdXAucXVlc3Rpb25fdGV4dF9zZWxlY3RfcmVmdW5kXCIpfVxuICAgICAgPC9oMj5cbiAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0TGlzdH0+XG4gICAgICAgIHt0aWNrZXRzLm1hcCgodGlja2V0KSA9PiAoXG4gICAgICAgICAgPE9yZGVyTGlzdFRpY2tldHNcbiAgICAgICAgICAgIGtleT17YHRpY2tldC0ke3RpY2tldC5pZH1gfVxuICAgICAgICAgICAgdGlja2V0PXt0aWNrZXR9XG4gICAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICAgIGlzU2VsZWN0ZWRUb1JlZnVuZD17XG4gICAgICAgICAgICAgICEhdGlja2V0c1RvUmVmdW5kLmZpbmQoKHQpID0+IHQuaWQgPT09IHRpY2tldC5pZClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNlbGVjdFRvUmVmdW5kPXtzZWxlY3RUb1JlZnVuZH1cbiAgICAgICAgICAgIHVuc2VsZWN0UmVmdW5kVGlja2V0cz17dW5zZWxlY3RSZWZ1bmRUaWNrZXRzfVxuICAgICAgICAgICAgaXNSZWZ1bmRNb2RhbFxuICAgICAgICAgIC8+XG4gICAgICAgICkpfVxuICAgICAgPC9Cb3g+XG4gICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmFjdGlvbkJ1dHRvbnN9PlxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgYXJpYS1sYWJlbD1cInJlZnVuZC1jYW5jZWwtYnV0dG9uXCJcbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5jYW5jZWxCdXR0b259XG4gICAgICAgICAgb25DbGljaz17Y2xvc2VTbGlkZXJ9XG4gICAgICAgID5cbiAgICAgICAgICB7dChcImdlbmVyYWwuY2FuY2VsXCIpfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJyZWZ1bmQtY29udGludWUtYnV0dG9uXCJcbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5jb250aW51ZUJ1dHRvbn1cbiAgICAgICAgICBvbkNsaWNrPXtjb25maXJtUmVmdW5kfVxuICAgICAgICAgIGRpc2FibGVkPXt0aWNrZXRzVG9SZWZ1bmQubGVuZ3RoID09PSAwfVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJnZW5lcmFsLmNvbnRpbnVlXCIpfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgIDwvQm94PlxuICAgIDwvPlxuICApO1xuXG4gIGNvbnN0IHJlZnVuZFN0ZXBUd28gPSAoKSA9PiAoXG4gICAgPEJveCBkYXRhLXRlc3RpZD1cInJlZnVuZC1yZXF1ZXN0LXN1Y2Nlc3NmdWxcIj5cbiAgICAgIDxoMyBjbGFzc05hbWU9e3N0eWxlcy5zdWJ0aXRsZX0+XG4gICAgICAgIHt0KFwiY29uZmlybV9wb3B1cC5xdWVzdGlvbl90ZXh0X2NvbmZpcm1fcmVmdW5kXCIpfVxuICAgICAgPC9oMz5cbiAgICAgIHtlcnJvck1zZyAmJiAoXG4gICAgICAgIDxFcnJvckxhYmVsXG4gICAgICAgICAgY2xhc3NOYW1lcz17c3R5bGVzLnJlZnVuZEVycm9yTXNnfVxuICAgICAgICAgIGNvbG9yPVwiI0ZGMDAwMFwiXG4gICAgICAgICAgZGF0YVRlc3RJZD1cImZhaWxlZC1yZWZ1bmQtbWVzc2FnZVwiXG4gICAgICAgICAgbWVzc2FnZT17ZXJyb3JNc2d9XG4gICAgICAgIC8+XG4gICAgICApfVxuICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRMaXN0fT5cbiAgICAgICAge3RpY2tldHNUb1JlZnVuZC5tYXAoKHRpY2tldCkgPT4gKFxuICAgICAgICAgIDxSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXRcbiAgICAgICAgICAgIGtleT17YHJlZnVuZF9yZXFfJHt0aWNrZXQ/LmlkfWB9XG4gICAgICAgICAgICB0aWNrZXQ9e3RpY2tldH1cbiAgICAgICAgICAvPlxuICAgICAgICApKX1cbiAgICAgIDwvQm94PlxuICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5DVEFCdXR0b25XcmFwcGVyfT5cbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJyZWZ1bmQtcmV0dXJuLWJ1dHRvblwiXG4gICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuY2FuY2VsQnV0dG9ufVxuICAgICAgICAgIG9uQ2xpY2s9e2dvQmFja1RvUmVmdW5kfVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJnZW5lcmFsLmJhY2tcIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgYXJpYS1sYWJlbD1cInJlZnVuZC1jb250aW51ZS1idXR0b25cIlxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNvbnRpbnVlQnV0dG9ufVxuICAgICAgICAgIG9uQ2xpY2s9e3JlZnVuZFRpY2tldHN9XG4gICAgICAgID5cbiAgICAgICAgICB7dChcImdlbmVyYWwuY29udGludWVcIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgPC9Cb3g+XG4gICAgPC9Cb3g+XG4gICk7XG5cbiAgY29uc3QgcmVmdW5kU3RlcFRocmVlID0gKCkgPT4gKFxuICAgIDxCb3hcbiAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnJlZnVuZFN1Y2Nlc3NmdWx9XG4gICAgICBkYXRhLXRlc3RpZD1cInJlZnVuZC1yZXF1ZXN0LXN1Y2Nlc3NmdWxcIlxuICAgID5cbiAgICAgIDxDaGVja0NpcmNsZUljb24gc3g9e3sgY29sb3I6IFwiIzRjYWY1MFwiIH19IC8+XG4gICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlcy5zdWNjZXNzTXNnfT5cbiAgICAgICAge3QoXCJ0aWNrZXRzLnJlZnVuZF9yZXF1ZXN0X3N1Y2Nlc3NfMVwiKX1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzLnN1Y2Nlc3NNc2cyfT5cbiAgICAgICAge3QoXCJ0aWNrZXRzLnJlZnVuZF9yZXF1ZXN0X3N1Y2Nlc3NfMlwiKX1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxCdXR0b25cbiAgICAgICAgYXJpYS1sYWJlbD1cInJlZnVuZC1maW5pc2gtYnV0dG9uXCJcbiAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNvbnRpbnVlQnV0dG9ufVxuICAgICAgICBvbkNsaWNrPXtjbG9zZVNsaWRlcn1cbiAgICAgID5cbiAgICAgICAge3QoXCJnZW5lcmFsLmZpbmlzaFwiKX1cbiAgICAgIDwvQnV0dG9uPlxuICAgIDwvQm94PlxuICApO1xuXG4gIGNvbnN0IHJlbmRlclN0ZXBzID0gKCkgPT4ge1xuICAgIHN3aXRjaCAoc3RlcCkge1xuICAgICAgY2FzZSBTVEVQX09ORTpcbiAgICAgICAgcmV0dXJuIHJlZnVuZFN0ZXBPbmUoKTtcbiAgICAgIGNhc2UgU1RFUF9UV086XG4gICAgICAgIHJldHVybiByZWZ1bmRTdGVwVHdvKCk7XG4gICAgICBjYXNlIFNURVBfVEhSRUU6XG4gICAgICAgIHJldHVybiByZWZ1bmRTdGVwVGhyZWUoKTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiByZWZ1bmRTdGVwT25lKCk7XG4gICAgfVxuICB9O1xuICByZXR1cm4gKFxuICAgIDxTdHlsZWRFbmdpbmVQcm92aWRlciBpbmplY3RGaXJzdD5cbiAgICAgIDxSaWdodERyYXdlclxuICAgICAgICBpZD1cInJlZnVuZC1yZXF1ZXN0c1wiXG4gICAgICAgIG9wZW49e29wZW59XG4gICAgICAgIG9uQ2xvc2U9e2Nsb3NlU2xpZGVyfVxuICAgICAgICB0aXRsZT17dChcIm9yZGVyX3N1bW1hcnkucmVxdWVzdF9yZWZ1bmRcIil9XG4gICAgICAgIGRhdGEtdGVzdGlkPVwicmVmdW5kLXJlcXVlc3QtbW9kYWxcIlxuICAgICAgPlxuICAgICAgICB7cmVuZGVyU3RlcHMoKX1cbiAgICAgIDwvUmlnaHREcmF3ZXI+XG4gICAgPC9TdHlsZWRFbmdpbmVQcm92aWRlcj5cbiAgKTtcbn07XG5cblJlZnVuZFJlcXVlc3RzTW9kYWwucHJvcFR5cGVzID0ge1xuICB0aWNrZXRzOiBQcm9wVHlwZXMuYXJyYXlPZihPYmplY3QpLFxuICBvcGVuOiBQcm9wVHlwZXMuYm9vbCxcbiAgb25SZWZ1bmRTdWNjZXNzQ2xvc2U6IFByb3BUeXBlcy5mdW5jLFxuICBvbkNsb3NlU2xpZGVyOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgUmVmdW5kUmVxdWVzdHNNb2RhbDtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTcgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IEJveCwgRHJhd2VyLCBJY29uQnV0dG9uLCBUeXBvZ3JhcGh5IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IENsb3NlIGFzIENsb3NlSWNvbiB9IGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IFJpZ2h0RHJhd2VyID0gKHtcbiAgaWQsXG4gIHRpdGxlLFxuICBoZWFkZXJDaGlsZHJlbiA9IG51bGwsXG4gIGNoaWxkcmVuLFxuICBvcGVuLFxuICBvbkNsb3NlLFxuICBjbGFzc05hbWVcbn0pID0+IChcbiAgPERyYXdlclxuICAgIGlkPXtpZH1cbiAgICBvcGVuPXtvcGVufVxuICAgIG9uQ2xvc2U9e29uQ2xvc2V9XG4gICAgYW5jaG9yPVwicmlnaHRcIlxuICAgIE1vZGFsUHJvcHM9e3sga2VlcE1vdW50ZWQ6IGZhbHNlIH19XG4gICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMud3JhcHBlcn0gJHtjbGFzc05hbWV9YH1cbiAgPlxuICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuaGVhZGVyfT5cbiAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgIGRhdGEtdGVzdGlkPVwiY2xvc2UtZHJhd2VyXCJcbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuY2xvc2VCdG59XG4gICAgICAgIG9uQ2xpY2s9e29uQ2xvc2V9XG4gICAgICAgIHN4PXt7IGZsb2F0OiBcInJpZ2h0XCIgfX1cbiAgICAgICAgZm9udFNpemU9XCJsYXJnZVwiXG4gICAgICA+XG4gICAgICAgIDxDbG9zZUljb24gLz5cbiAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgIHt0aXRsZSAmJiAoXG4gICAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJoNlwiIGd1dHRlckJvdHRvbSBjbGFzc05hbWU9e3N0eWxlcy50aXRsZX0+XG4gICAgICAgICAge3RpdGxlfVxuICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICApfVxuICAgICAge2hlYWRlckNoaWxkcmVufVxuICAgIDwvQm94PlxuICAgIHtjaGlsZHJlbn1cbiAgPC9EcmF3ZXI+XG4pO1xuXG5SaWdodERyYXdlci5wcm9wVHlwZXMgPSB7XG4gIGlkOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIHRpdGxlOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuc3RyaW5nLCBQcm9wVHlwZXMubm9kZV0pLFxuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG4gIGhlYWRlckNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgb3BlbjogUHJvcFR5cGVzLmJvb2wsXG4gIG9uQ2xvc2U6IFByb3BUeXBlcy5mdW5jLFxuICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmdcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFJpZ2h0RHJhd2VyO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgc2hhbGxvd0VxdWFsLCB1c2VTZWxlY3RvciB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgQm94IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcblxuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBTdW1taXRIZWFkZXIgPSAoKSA9PiB7XG4gIGNvbnN0IHsgc3VtbWl0IH0gPSB1c2VTZWxlY3RvcihcbiAgICAoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlIHx8IHt9LFxuICAgIHNoYWxsb3dFcXVhbFxuICApO1xuICByZXR1cm4gKFxuICAgIDxCb3hcbiAgICAgIGNsYXNzTmFtZT17c3R5bGVzLndpZGdldEhlYWRlcn1cbiAgICAgIHN4PXt7IHBhZGRpbmc6IHsgeHM6IDIsIG1kOiAwLCBsZzogMCB9IH19XG4gICAgICBkYXRhLXRlc3RpZD1cIm15LW9yZGVycy10aWNrZXQtaGVhZGVyXCJcbiAgICA+XG4gICAgICA8aDIgY2xhc3NOYW1lPXtzdHlsZXMuc3VtbWl0VGl0bGVEYXRlfT57c3VtbWl0Py5uYW1lfTwvaDI+XG4gICAgICA8aDIgY2xhc3NOYW1lPXtzdHlsZXMuc3VtbWl0VGl0bGVEYXRlfT57c3VtbWl0Py5kYXRlc19sYWJlbH08L2gyPlxuICAgIDwvQm94PlxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgU3VtbWl0SGVhZGVyO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2gsIHVzZVNlbGVjdG9yIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgeyBCb3ggfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgcmVzZXRGaWx0ZXIgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuaW1wb3J0IFN1bW1pdEhlYWRlciBmcm9tIFwiLi4vU3VtbWl0SGVhZGVyXCI7XG5pbXBvcnQgTm9UaWNrZXRzRm91bmQgZnJvbSBcIi4uL05vVGlja2V0c0ZvdW5kXCI7XG5pbXBvcnQgeyBUQUJTIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2NvbnN0YW50c1wiO1xuXG5jb25zdCBUYWJXcmFwcGVyID0gKHsgdGFiLCBjaGlsZHJlbiwgc2V0VGFiIH0pID0+IHtcbiAgY29uc3QgeyBtZW1iZXJPcmRlcnMsIHVzZXJUaWNrZXRzLCBhY3RpdmVGaWx0ZXJzQ291bnQgfSA9IHVzZVNlbGVjdG9yKFxuICAgIChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUgfHwge31cbiAgKTtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuICBjb25zdCB0aWNrZXRzID0gdGFiID09PSBUQUJTLlRJQ0tFVFMgPyB1c2VyVGlja2V0cyA6IG1lbWJlck9yZGVycztcbiAgY29uc3QgaGFzVGlja2V0cyA9IHRpY2tldHMubGVuZ3RoID4gMDtcbiAgY29uc3QgaXNGaWx0ZXJlZCA9IGFjdGl2ZUZpbHRlcnNDb3VudCA+IDA7XG5cbiAgY29uc3QgY2xlYXJGaWx0ZXJzID0gKCkgPT4ge1xuICAgIGRpc3BhdGNoKHJlc2V0RmlsdGVyKCkpO1xuICB9O1xuXG4gIGNvbnN0IGdldFBhZ2VWaWV3ID0gKCkgPT4ge1xuICAgIGlmIChpc0ZpbHRlcmVkKSByZXR1cm4gXCJmaWx0ZXJcIjtcbiAgICByZXR1cm4gdGFiID09PSBUQUJTLlRJQ0tFVFMgPyBUQUJTLlRJQ0tFVFMgOiBUQUJTLk9SREVSUztcbiAgfTtcblxuICBjb25zdCBnZXRPbkNsaWNrID0gKCkgPT4ge1xuICAgIGlmIChpc0ZpbHRlcmVkKSByZXR1cm4gY2xlYXJGaWx0ZXJzO1xuICAgIGNvbnN0IHRhYlRvTGluayA9IHRhYiA9PT0gVEFCUy5USUNLRVRTID8gVEFCUy5PUkRFUlMgOiBUQUJTLlRJQ0tFVFM7XG4gICAgcmV0dXJuICgpID0+IHNldFRhYih0YWJUb0xpbmspO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIHshaGFzVGlja2V0cyAmJiAoXG4gICAgICAgIDxOb1RpY2tldHNGb3VuZCBwYWdlVmlldz17Z2V0UGFnZVZpZXcoKX0gb25DbGljaz17Z2V0T25DbGljaygpfSAvPlxuICAgICAgKX1cbiAgICAgIHtoYXNUaWNrZXRzICYmIChcbiAgICAgICAgPD5cbiAgICAgICAgICA8Qm94IHN4PXt7IHB0OiA2LCBwYjogMyB9fT5cbiAgICAgICAgICAgIDxTdW1taXRIZWFkZXIgLz5cbiAgICAgICAgICA8L0JveD5cbiAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgIDwvPlxuICAgICAgKX1cbiAgICA8Lz5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFRhYldyYXBwZXI7XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE3IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBCb3gsIEJ1dHRvbiwgQ29sbGFwc2UsIERpdmlkZXIsIExpbmsgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IFJlYXNzaWduRm9ybSBmcm9tIFwiLi4vUmVhc3NpZ25Gb3JtXCI7XG5pbXBvcnQgRGVsZWdhdGVGb3JtIGZyb20gXCIuLi9EZWxlZ2F0ZUZvcm1cIjtcbmltcG9ydCB7IHVzZVRpY2tldERldGFpbHMgfSBmcm9tIFwiLi4vLi4vLi4vLi4vaG9va3MvdXNlVGlja2V0RGV0YWlsc1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IENvbmZpcm1EaWFsb2cgZnJvbSBcIi4uLy4uLy4uL0NvbmZpcm1EaWFsb2dcIjtcblxuY29uc3QgQXNzaWduT3B0aW9ucyA9ICh7XG4gIHRpY2tldCxcbiAgdXNlclByb2ZpbGUsXG4gIGFzc2lnbk9wdGlvbixcbiAgc2V0QXNzaWduT3B0aW9uLFxuICBvbkFzc2lnbixcbiAgb25EZWxlZ2F0ZSxcbiAgb25VbkFzc2lnblxufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IFtvcGVuQ29uZmlybVVuYXNzaWduLCBzZXRPcGVuQ29uZmlybVVuYXNzaWduXSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgaXNBc3NpZ25lZFRvTWUgPSB1c2VyUHJvZmlsZT8uZW1haWwgPT09IHRpY2tldD8ub3duZXI/LmVtYWlsO1xuICBjb25zdCB7IGFsbG93c0RlbGVnYXRlIH0gPSB1c2VUaWNrZXREZXRhaWxzKHRpY2tldCk7XG5cbiAgY29uc3QgaGFuZGxlVW5Bc3NpZ24gPSAoKSA9PiB7XG4gICAgc2V0T3BlbkNvbmZpcm1VbmFzc2lnbihmYWxzZSk7XG4gICAgb25VbkFzc2lnbigpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy53cmFwcGVyfT5cbiAgICAgIDxCdXR0b25cbiAgICAgICAgdmFyaWFudD1cImNvbnRhaW5lZFwiXG4gICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgIGRpc2FibGVkPXtpc0Fzc2lnbmVkVG9NZX1cbiAgICAgICAgb25DbGljaz17KCkgPT4gb25Bc3NpZ24odXNlclByb2ZpbGUuZW1haWwsIFwiXCIpfVxuICAgICAgPlxuICAgICAgICB7dChcInRpY2tldF9hc3NpZ24uYXNzaWduX3RvX21lXCIpfVxuICAgICAgPC9CdXR0b24+XG4gICAgICA8RGl2aWRlciB2YXJpYW50PVwibWlkZGxlXCIgc3g9e3sgbXk6IDMsIHB4OiA0IH19PlxuICAgICAgICBvclxuICAgICAgPC9EaXZpZGVyPlxuICAgICAgPEJveD5cbiAgICAgICAgPENvbGxhcHNlIGluPXthc3NpZ25PcHRpb24gPT09IFwib3RoZXJcIn0gdGltZW91dD17NTAwfT5cbiAgICAgICAgICA8UmVhc3NpZ25Gb3JtXG4gICAgICAgICAgICB0aWNrZXQ9e3RpY2tldH1cbiAgICAgICAgICAgIG9uU3VibWl0PXsodmFsKSA9PlxuICAgICAgICAgICAgICBvbkFzc2lnbih2YWwubmV3X2F0dGVuZGVlX2VtYWlsLCB2YWwucGVyc29uYWxfbWVzc2FnZSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9uQ2xvc2U9eygpID0+IHNldEFzc2lnbk9wdGlvbihudWxsKX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L0NvbGxhcHNlPlxuICAgICAgICB7YXNzaWduT3B0aW9uICE9PSBcIm90aGVyXCIgJiYgKFxuICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgIHZhcmlhbnQ9XCJjb250YWluZWRcIlxuICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRBc3NpZ25PcHRpb24oXCJvdGhlclwiKX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7dChcInRpY2tldF9hc3NpZ24uYXNzaWduX3RvX290aGVyXCIpfVxuICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICApfVxuICAgICAgPC9Cb3g+XG4gICAgICB7YWxsb3dzRGVsZWdhdGUgJiYgKFxuICAgICAgICA8PlxuICAgICAgICAgIDxEaXZpZGVyIHZhcmlhbnQ9XCJtaWRkbGVcIiBzeD17eyBteTogMywgcHg6IDQgfX0+XG4gICAgICAgICAgICBvclxuICAgICAgICAgIDwvRGl2aWRlcj5cbiAgICAgICAgICA8Q29sbGFwc2UgaW49e2Fzc2lnbk9wdGlvbiA9PT0gXCJtYW5hZ2VcIn0gdGltZW91dD17NTAwfT5cbiAgICAgICAgICAgIDxEZWxlZ2F0ZUZvcm1cbiAgICAgICAgICAgICAgdGlja2V0PXt0aWNrZXR9XG4gICAgICAgICAgICAgIG9uU3VibWl0PXsodmFsKSA9PlxuICAgICAgICAgICAgICAgIG9uRGVsZWdhdGUoXG4gICAgICAgICAgICAgICAgICB2YWwuZGVsZWdhdGVfZmlyc3RfbmFtZSxcbiAgICAgICAgICAgICAgICAgIHZhbC5kZWxlZ2F0ZV9sYXN0X25hbWUsXG4gICAgICAgICAgICAgICAgICB2YWwuZGVsZWdhdGVfZW1haWxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgb25DbG9zZT17KCkgPT4gc2V0QXNzaWduT3B0aW9uKG51bGwpfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L0NvbGxhcHNlPlxuICAgICAgICAgIHthc3NpZ25PcHRpb24gIT09IFwibWFuYWdlXCIgJiYgKFxuICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICB2YXJpYW50PVwiY29udGFpbmVkXCJcbiAgICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0QXNzaWduT3B0aW9uKFwibWFuYWdlXCIpfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7dChcInRpY2tldF9hc3NpZ24ubWFuYWdlX3RpY2tldFwiKX1cbiAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvPlxuICAgICAgKX1cbiAgICAgIHt0aWNrZXQ/Lm93bmVyPy5lbWFpbCAmJiAoXG4gICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMudW5hc3NpZ25XcmFwcGVyfT5cbiAgICAgICAgICB7LyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzeC1hMTF5L2FuY2hvci1pcy12YWxpZCAqL31cbiAgICAgICAgICA8TGlua1xuICAgICAgICAgICAgY29tcG9uZW50PVwiYnV0dG9uXCJcbiAgICAgICAgICAgIHZhcmlhbnQ9XCJib2R5MVwiXG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRPcGVuQ29uZmlybVVuYXNzaWduKHRydWUpfVxuICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgY29sb3I6IFwidGV4dC5saW5rXCIsXG4gICAgICAgICAgICAgIHRleHREZWNvcmF0aW9uOiBcInVuZGVybGluZVwiLFxuICAgICAgICAgICAgICB0ZXh0RGVjb3JhdGlvbkNvbG9yOiBcInRleHQubGlua1wiXG4gICAgICAgICAgICB9fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt0KFwidGlja2V0X2Fzc2lnbi5yZXZlcnRfdG9fdW5hc3NpZ25lZFwiKX1cbiAgICAgICAgICA8L0xpbms+XG4gICAgICAgIDwvQm94PlxuICAgICAgKX1cbiAgICAgIHsvKiBUT0RPOiBpZiB3ZSBuZWVkIHRvIHJldXNlIHRoaXMgdGhlbiB3ZSBzaG91bGQgbW92ZSBpdCB0byBjb250ZXh0ICovfVxuICAgICAgPENvbmZpcm1EaWFsb2dcbiAgICAgICAgb3Blbj17b3BlbkNvbmZpcm1VbmFzc2lnbn1cbiAgICAgICAgdGl0bGU9e3QoXCJ0aWNrZXRfYXNzaWduLmNvbmZpcm1fdW5hc3NpZ24udGl0bGVcIil9XG4gICAgICAgIGJvZHk9e3QoXCJ0aWNrZXRfYXNzaWduLmNvbmZpcm1fdW5hc3NpZ24uYm9keVwiKX1cbiAgICAgICAgb25Db25maXJtPXtoYW5kbGVVbkFzc2lnbn1cbiAgICAgICAgb25DbG9zZT17KCkgPT4gc2V0T3BlbkNvbmZpcm1VbmFzc2lnbihmYWxzZSl9XG4gICAgICAvPlxuICAgIDwvQm94PlxuICApO1xufTtcblxuQXNzaWduT3B0aW9ucy5wcm9wVHlwZXMgPSB7XG4gIHRpY2tldDogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICB1c2VyUHJvZmlsZTogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBhc3NpZ25PcHRpb246IFByb3BUeXBlcy5zdHJpbmcsXG4gIHNldEFzc2lnbk9wdGlvbjogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgb25Bc3NpZ246IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIG9uRGVsZWdhdGU6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWRcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEFzc2lnbk9wdGlvbnM7XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE3IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBUZXh0RmllbGQsIFR5cG9ncmFwaHkgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlRm9ybWlrIH0gZnJvbSBcImZvcm1pa1wiO1xuaW1wb3J0ICogYXMgeXVwIGZyb20gXCJ5dXBcIjtcblxuaW1wb3J0IEZvcm1Gb290ZXIgZnJvbSBcIi4uLy4uLy4uL0Zvcm1Gb290ZXJcIjtcblxuY29uc3QgRGVsZWdhdGVGb3JtID0gKHsgb25TdWJtaXQsIG9uQ2xvc2UgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG5cbiAgY29uc3QgZm9ybWlrID0gdXNlRm9ybWlrKHtcbiAgICBpbml0aWFsVmFsdWVzOiB7XG4gICAgICBkZWxlZ2F0ZV9maXJzdF9uYW1lOiBcIlwiLFxuICAgICAgZGVsZWdhdGVfbGFzdF9uYW1lOiBcIlwiLFxuICAgICAgZGVsZWdhdGVfZW1haWw6IFwiXCJcbiAgICB9LFxuICAgIHZhbGlkYXRpb25TY2hlbWE6IHl1cC5vYmplY3Qoe1xuICAgICAgZGVsZWdhdGVfZmlyc3RfbmFtZTogeXVwXG4gICAgICAgIC5zdHJpbmcodChcInZhbGlkYXRpb24uZmlyc3RfbmFtZS5zdHJpbmdcIikpXG4gICAgICAgIC5yZXF1aXJlZCh0KFwidmFsaWRhdGlvbi5maXJzdF9uYW1lLnJlcXVpcmVkXCIpKSxcbiAgICAgIGRlbGVnYXRlX2xhc3RfbmFtZTogeXVwXG4gICAgICAgIC5zdHJpbmcodChcInZhbGlkYXRpb24ubGFzdF9uYW1lLnN0cmluZ1wiKSlcbiAgICAgICAgLnJlcXVpcmVkKHQoXCJ2YWxpZGF0aW9uLmxhc3RfbmFtZS5yZXF1aXJlZFwiKSksXG4gICAgICBkZWxlZ2F0ZV9lbWFpbDogeXVwXG4gICAgICAgIC5zdHJpbmcodChcInZhbGlkYXRpb24uZW1haWwuc3RyaW5nXCIpKVxuICAgICAgICAuZW1haWwodChcInZhbGlkYXRpb24uZW1haWwuZm9ybWF0XCIpKVxuICAgIH0pLFxuICAgIG9uU3VibWl0OiAodmFsdWVzLCB7IHJlc2V0Rm9ybSB9KSA9PiB7XG4gICAgICBvblN1Ym1pdCh2YWx1ZXMpO1xuICAgICAgcmVzZXRGb3JtKCk7XG4gICAgfVxuICB9KTtcblxuICBjb25zdCBoYW5kbGVDYW5jZWwgPSAoKSA9PiB7XG4gICAgZm9ybWlrLnJlc2V0Rm9ybSgpO1xuICAgIG9uQ2xvc2UoKTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiaDZcIiBndXR0ZXJCb3R0b20+XG4gICAgICAgIHt0KFwidGlja2V0X2Fzc2lnbi5kZWxlZ2F0ZV9mb3JtLnRpdGxlXCIpfVxuICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImJvZHkxXCIgZ3V0dGVyQm90dG9tIHN4PXt7IGNvbG9yOiBcInRleHQuc2Vjb25kYXJ5XCIgfX0+XG4gICAgICAgIHt0KFwidGlja2V0X2Fzc2lnbi5kZWxlZ2F0ZV9mb3JtLmJvZHlcIil9XG4gICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICA8Zm9ybSBvblN1Ym1pdD17Zm9ybWlrLmhhbmRsZVN1Ym1pdH0gbm9WYWxpZGF0ZT5cbiAgICAgICAgPFRleHRGaWVsZFxuICAgICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICAgIG5hbWU9XCJkZWxlZ2F0ZV9maXJzdF9uYW1lXCJcbiAgICAgICAgICBtYXJnaW49XCJub3JtYWxcIlxuICAgICAgICAgIGxhYmVsPXt0KFwidGlja2V0X2Fzc2lnbi5kZWxlZ2F0ZV9mb3JtLmZpcnN0X25hbWVcIil9XG4gICAgICAgICAgdmFsdWU9e2Zvcm1pay52YWx1ZXMuZGVsZWdhdGVfZmlyc3RfbmFtZX1cbiAgICAgICAgICBvbkNoYW5nZT17Zm9ybWlrLmhhbmRsZUNoYW5nZX1cbiAgICAgICAgICBvbkJsdXI9e2Zvcm1pay5oYW5kbGVCbHVyfVxuICAgICAgICAgIGVycm9yPXtcbiAgICAgICAgICAgIGZvcm1pay50b3VjaGVkLmRlbGVnYXRlX2ZpcnN0X25hbWUgJiZcbiAgICAgICAgICAgIEJvb2xlYW4oZm9ybWlrLmVycm9ycy5kZWxlZ2F0ZV9maXJzdF9uYW1lKVxuICAgICAgICAgIH1cbiAgICAgICAgICBoZWxwZXJUZXh0PXtcbiAgICAgICAgICAgIGZvcm1pay50b3VjaGVkLmRlbGVnYXRlX2ZpcnN0X25hbWUgJiZcbiAgICAgICAgICAgIGZvcm1pay5lcnJvcnMuZGVsZWdhdGVfZmlyc3RfbmFtZVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAvPlxuICAgICAgICA8VGV4dEZpZWxkXG4gICAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgICAgbmFtZT1cImRlbGVnYXRlX2xhc3RfbmFtZVwiXG4gICAgICAgICAgbWFyZ2luPVwibm9ybWFsXCJcbiAgICAgICAgICBsYWJlbD17dChcInRpY2tldF9hc3NpZ24uZGVsZWdhdGVfZm9ybS5sYXN0X25hbWVcIil9XG4gICAgICAgICAgdmFsdWU9e2Zvcm1pay52YWx1ZXMuZGVsZWdhdGVfbGFzdF9uYW1lfVxuICAgICAgICAgIG9uQ2hhbmdlPXtmb3JtaWsuaGFuZGxlQ2hhbmdlfVxuICAgICAgICAgIG9uQmx1cj17Zm9ybWlrLmhhbmRsZUJsdXJ9XG4gICAgICAgICAgZXJyb3I9e1xuICAgICAgICAgICAgZm9ybWlrLnRvdWNoZWQuZGVsZWdhdGVfbGFzdF9uYW1lICYmXG4gICAgICAgICAgICBCb29sZWFuKGZvcm1pay5lcnJvcnMuZGVsZWdhdGVfbGFzdF9uYW1lKVxuICAgICAgICAgIH1cbiAgICAgICAgICBoZWxwZXJUZXh0PXtcbiAgICAgICAgICAgIGZvcm1pay50b3VjaGVkLmRlbGVnYXRlX2xhc3RfbmFtZSAmJlxuICAgICAgICAgICAgZm9ybWlrLmVycm9ycy5kZWxlZ2F0ZV9sYXN0X25hbWVcbiAgICAgICAgICB9XG4gICAgICAgIC8+XG4gICAgICAgIDxUZXh0RmllbGRcbiAgICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgICBuYW1lPVwiZGVsZWdhdGVfZW1haWxcIlxuICAgICAgICAgIGxhYmVsPXt0KFwidGlja2V0X2Fzc2lnbi5kZWxlZ2F0ZV9mb3JtLmVtYWlsXCIpfVxuICAgICAgICAgIG1hcmdpbj1cIm5vcm1hbFwiXG4gICAgICAgICAgdmFsdWU9e2Zvcm1pay52YWx1ZXMuZGVsZWdhdGVfZW1haWx9XG4gICAgICAgICAgb25DaGFuZ2U9e2Zvcm1pay5oYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgb25CbHVyPXtmb3JtaWsuaGFuZGxlQmx1cn1cbiAgICAgICAgICBlcnJvcj17XG4gICAgICAgICAgICBmb3JtaWsudG91Y2hlZC5kZWxlZ2F0ZV9lbWFpbCAmJlxuICAgICAgICAgICAgQm9vbGVhbihmb3JtaWsuZXJyb3JzLmRlbGVnYXRlX2VtYWlsKVxuICAgICAgICAgIH1cbiAgICAgICAgICBoZWxwZXJUZXh0PXtcbiAgICAgICAgICAgIGZvcm1pay50b3VjaGVkLmRlbGVnYXRlX2VtYWlsICYmIGZvcm1pay5lcnJvcnMuZGVsZWdhdGVfZW1haWxcbiAgICAgICAgICB9XG4gICAgICAgIC8+XG4gICAgICAgIDxGb3JtRm9vdGVyXG4gICAgICAgICAgc2F2ZUxhYmVsPXt0KFwidGlja2V0X2Fzc2lnbi5kZWxlZ2F0ZV9mb3JtLnNhdmVcIil9XG4gICAgICAgICAgY2FuY2VsTGFiZWw9e3QoXCJ0aWNrZXRfYXNzaWduLmRlbGVnYXRlX2Zvcm0uY2FuY2VsXCIpfVxuICAgICAgICAgIG9uQ2xvc2U9e2hhbmRsZUNhbmNlbH1cbiAgICAgICAgICBkaXNhYmxlZD17Zm9ybWlrLmlzU3VibWl0dGluZ31cbiAgICAgICAgLz5cbiAgICAgIDwvZm9ybT5cbiAgICA8Lz5cbiAgKTtcbn07XG5cbkRlbGVnYXRlRm9ybS5wcm9wVHlwZXMgPSB7XG4gIG9uU3VibWl0OiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkXG59O1xuXG5leHBvcnQgZGVmYXVsdCBEZWxlZ2F0ZUZvcm07XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCb3gsIExpbmssIFR5cG9ncmFwaHkgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IENvcHlUZXh0IGZyb20gXCIuLi8uLi8uLi9Db3B5VGV4dFwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBBc3NpZ25IZWFkZXIgPSAoeyBpblByb2dyZXNzLCB0aWNrZXQsIHVzZXJFbWFpbCwgb25DbG9zZSB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgYXNzaWduZWRUb1lvdSA9IHRpY2tldD8ub3duZXI/LmVtYWlsID09PSB1c2VyRW1haWw7XG5cbiAgY29uc3QgZ2V0U2Vjb25kYXJ5VGl0bGUgPSAoKSA9PiB7XG4gICAgaWYgKGluUHJvZ3Jlc3MgPT09IFwibWFuYWdlXCIpIHtcbiAgICAgIHJldHVybiBgJHt0KFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfYXNzaWduLmRlbGVnYXRlZFwiKX0gJHtcbiAgICAgICAgdGlja2V0Lm93bmVyLmZpcnN0X25hbWVcbiAgICAgIH0gJHt0aWNrZXQub3duZXIubGFzdF9uYW1lfS5gO1xuICAgIH1cblxuICAgIGlmIChpblByb2dyZXNzKSB7XG4gICAgICBjb25zdCB1c2VyID0gYXNzaWduZWRUb1lvdSA/IFwieW91XCIgOiB0aWNrZXQ/Lm93bmVyPy5lbWFpbDtcbiAgICAgIHJldHVybiBgJHt0KFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfYXNzaWduLmFzc2lnbmVkX3RvXCIpfSAke3VzZXJ9YDtcbiAgICB9XG5cbiAgICByZXR1cm4gdGlja2V0LnRpY2tldF90eXBlLm5hbWU7XG4gIH07XG5cbiAgY29uc3QgZ2V0SGVhZGVyTm90ZSA9ICgpID0+IHtcbiAgICBpZiAoaW5Qcm9ncmVzcykge1xuICAgICAgY29uc3QgdHJhbnNLZXkgPSBhc3NpZ25lZFRvWW91XG4gICAgICAgID8gXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9hc3NpZ24uYW5zd2VyX3lvdXJfZXFcIlxuICAgICAgICA6IFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfYXNzaWduLmFuc3dlcl9vdGhlcnNfZXFcIjtcblxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPD5cbiAgICAgICAgICB7dCh0cmFuc0tleSl9XG4gICAgICAgICAgPGJyIC8+XG4gICAgICAgICAgey8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc3gtYTExeS9hbmNob3ItaXMtdmFsaWQgKi99XG4gICAgICAgICAgPExpbmtcbiAgICAgICAgICAgIGNvbXBvbmVudD1cImJ1dHRvblwiXG4gICAgICAgICAgICB2YXJpYW50PVwiYm9keTFcIlxuICAgICAgICAgICAgb25DbGljaz17b25DbG9zZX1cbiAgICAgICAgICAgIHN4PXt7IGZvbnRXZWlnaHQ6IDcwMCwgbWFyZ2luOiBcIjIwcHggMCAxMHB4XCIgfX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7dChcInRpY2tldF9hc3NpZ24uaGVhZGVyX2Fzc2lnbi5jb21wbGV0ZV9sYXRlclwiKX1cbiAgICAgICAgICA8L0xpbms+XG4gICAgICAgIDwvPlxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gXCJcIjtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMud3JhcHBlcn0+XG4gICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLnB1cmNoYXNlZEJ5V3JhcHBlcn0+XG4gICAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJib2R5MVwiIGd1dHRlckJvdHRvbSBjbGFzc05hbWU9e3N0eWxlcy5wdXJjaGFzZWRCeX0+XG4gICAgICAgICAge3QoXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9hc3NpZ24ucHVyY2hhc2VkX2J5XCIpfXtcIiBcIn1cbiAgICAgICAgICB7dGlja2V0Py5vcmRlcj8ub3duZXJfZW1haWx9XG4gICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImJvZHkxXCIgZ3V0dGVyQm90dG9tIGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyTm99PlxuICAgICAgICAgIDxDb3B5VGV4dFxuICAgICAgICAgICAgdGV4dD17dGlja2V0Py5vcmRlcj8ubnVtYmVyfVxuICAgICAgICAgICAgcmV2ZXJzZWRcbiAgICAgICAgICAgIHdpZHRoPXsyNTB9XG4gICAgICAgICAgICB0b29sdGlwVGV4dD17dChcIm9yZGVyX3N1bW1hcnkuY29weV9vcmRlcl9udW1iZXJcIil9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgPC9Cb3g+XG4gICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiaDVcIiBndXR0ZXJCb3R0b20+XG4gICAgICAgIHtnZXRTZWNvbmRhcnlUaXRsZSgpfVxuICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgPFR5cG9ncmFwaHlcbiAgICAgICAgdmFyaWFudD1cImJvZHkxXCJcbiAgICAgICAgZ3V0dGVyQm90dG9tXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmhlYWRlck5vdGV9XG4gICAgICAgIHN4PXt7IGNvbG9yOiBcInRleHQuc2Vjb25kYXJ5XCIgfX1cbiAgICAgID5cbiAgICAgICAge2dldEhlYWRlck5vdGUoKX1cbiAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbi8vIEFkZGluZyBwcm9wLXR5cGVzIGZvciB0eXBlLWNoZWNraW5nXG5Bc3NpZ25IZWFkZXIucHJvcFR5cGVzID0ge1xuICBpblByb2dyZXNzOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIHRpY2tldDogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICB1c2VyRW1haWw6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZFxufTtcblxuZXhwb3J0IGRlZmF1bHQgQXNzaWduSGVhZGVyO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQm94LCBMaW5rLCBUeXBvZ3JhcGh5IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZVRpY2tldERldGFpbHMgfSBmcm9tIFwiLi4vLi4vLi4vLi4vaG9va3MvdXNlVGlja2V0RGV0YWlsc1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBSZWFzc2lnbkhlYWRlciA9ICh7IGluUHJvZ3Jlc3MsIHRpY2tldCwgdXNlckVtYWlsLCBvbkNsb3NlIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBhc3NpZ25lZFRvWW91ID0gdGlja2V0Py5vd25lcj8uZW1haWwgPT09IHVzZXJFbWFpbDtcbiAgY29uc3QgeyBhbGxvd3NEZWxlZ2F0ZSB9ID0gdXNlVGlja2V0RGV0YWlscyh0aWNrZXQpO1xuXG4gIGNvbnN0IGdldFNlY29uZGFyeVRpdGxlID0gKCkgPT4ge1xuICAgIGNvbnN0IHVzZXIgPSBhc3NpZ25lZFRvWW91XG4gICAgICA/IHQoXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9yZWFzc2lnbi55b3Vyc2VsZlwiKVxuICAgICAgOiB0aWNrZXQ/Lm93bmVyPy5lbWFpbDtcblxuICAgIGlmIChpblByb2dyZXNzID09PSBcIm1hbmFnZVwiKSB7XG4gICAgICByZXR1cm4gYCR7dChcInRpY2tldF9hc3NpZ24uaGVhZGVyX3JlYXNzaWduLmRlbGVnYXRlZFwiKX0gJHtcbiAgICAgICAgdGlja2V0Lm93bmVyLmZpcnN0X25hbWVcbiAgICAgIH0gJHt0aWNrZXQub3duZXIubGFzdF9uYW1lfS5gO1xuICAgIH1cblxuICAgIGlmICghaW5Qcm9ncmVzcykge1xuICAgICAgcmV0dXJuIGAke3QoXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9yZWFzc2lnbi5hc3NpZ25lZF90b1wiKX0gJHt1c2VyfWA7XG4gICAgfVxuXG4gICAgcmV0dXJuIGAke3QoXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9yZWFzc2lnbi5yZWFzc2lnbmVkX3RvXCIpfSAke3VzZXJ9YDtcbiAgfTtcblxuICBjb25zdCBnZXRIZWFkZXJOb3RlID0gKCkgPT4ge1xuICAgIGlmICghaW5Qcm9ncmVzcykge1xuICAgICAgcmV0dXJuIGFsbG93c0RlbGVnYXRlXG4gICAgICAgID8gdChcInRpY2tldF9hc3NpZ24uaGVhZGVyX3JlYXNzaWduLmNob29zZV9vcHRpb25cIilcbiAgICAgICAgOiB0KFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfcmVhc3NpZ24uY2hvb3NlX29wdGlvbl9ub19kZWxlZ2F0ZVwiKTtcbiAgICB9XG5cbiAgICBjb25zdCB0cmFuc0tleSA9IGFzc2lnbmVkVG9Zb3VcbiAgICAgID8gXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9yZWFzc2lnbi5hbnN3ZXJfeW91cl9lcVwiXG4gICAgICA6IFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfcmVhc3NpZ24uYW5zd2VyX290aGVyc19lcVwiO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDw+XG4gICAgICAgIHt0KHRyYW5zS2V5KX1cbiAgICAgICAgPGJyIC8+XG4gICAgICAgIHsvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganN4LWExMXkvYW5jaG9yLWlzLXZhbGlkICovfVxuICAgICAgICA8TGlua1xuICAgICAgICAgIGNvbXBvbmVudD1cImJ1dHRvblwiXG4gICAgICAgICAgdmFyaWFudD1cImJvZHkxXCJcbiAgICAgICAgICBvbkNsaWNrPXtvbkNsb3NlfVxuICAgICAgICAgIHN4PXt7IGZvbnRXZWlnaHQ6IDcwMCwgbWFyZ2luOiBcIjIwcHggMCAxMHB4XCIgfX1cbiAgICAgICAgPlxuICAgICAgICAgIHt0KFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfcmVhc3NpZ24uY29tcGxldGVfbGF0ZXJcIil9XG4gICAgICAgIDwvTGluaz5cbiAgICAgIDwvPlxuICAgICk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLndyYXBwZXJ9PlxuICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImg1XCIgZ3V0dGVyQm90dG9tPlxuICAgICAgICB7Z2V0U2Vjb25kYXJ5VGl0bGUoKX1cbiAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgIDxUeXBvZ3JhcGh5XG4gICAgICAgIHZhcmlhbnQ9XCJib2R5MVwiXG4gICAgICAgIGd1dHRlckJvdHRvbVxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5oZWFkZXJOb3RlfVxuICAgICAgICBzeD17eyBjb2xvcjogXCJ0ZXh0LnNlY29uZGFyeVwiIH19XG4gICAgICA+XG4gICAgICAgIHtnZXRIZWFkZXJOb3RlKCl9XG4gICAgICA8L1R5cG9ncmFwaHk+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG4vLyBBZGRpbmcgcHJvcC10eXBlcyBmb3IgdHlwZS1jaGVja2luZ1xuUmVhc3NpZ25IZWFkZXIucHJvcFR5cGVzID0ge1xuICBpblByb2dyZXNzOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIHRpY2tldDogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICB1c2VyRW1haWw6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZFxufTtcblxuZXhwb3J0IGRlZmF1bHQgUmVhc3NpZ25IZWFkZXI7XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE3IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBUZXh0RmllbGQsIFR5cG9ncmFwaHkgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlRm9ybWlrIH0gZnJvbSBcImZvcm1pa1wiO1xuaW1wb3J0ICogYXMgeXVwIGZyb20gXCJ5dXBcIjtcblxuaW1wb3J0IEZvcm1Gb290ZXIgZnJvbSBcIi4uLy4uLy4uL0Zvcm1Gb290ZXJcIjtcblxuY29uc3QgUmVhc3NpZ25Gb3JtID0gKHsgb25TdWJtaXQsIG9uQ2xvc2UgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG5cbiAgY29uc3QgZm9ybWlrID0gdXNlRm9ybWlrKHtcbiAgICBpbml0aWFsVmFsdWVzOiB7XG4gICAgICBuZXdfYXR0ZW5kZWVfZW1haWw6IFwiXCIsXG4gICAgICBwZXJzb25hbF9tZXNzYWdlOiBcIlwiXG4gICAgfSxcbiAgICB2YWxpZGF0aW9uU2NoZW1hOiB5dXAub2JqZWN0KHtcbiAgICAgIG5ld19hdHRlbmRlZV9lbWFpbDogeXVwXG4gICAgICAgIC5zdHJpbmcodChcInZhbGlkYXRpb24uZW1haWwuc3RyaW5nXCIpKVxuICAgICAgICAuZW1haWwodChcInZhbGlkYXRpb24uZW1haWwuZm9ybWF0XCIpKVxuICAgICAgICAucmVxdWlyZWQodChcInZhbGlkYXRpb24uZW1haWwucmVxdWlyZWRcIikpLFxuICAgICAgcGVyc29uYWxfbWVzc2FnZTogeXVwLnN0cmluZyh0KFwidmFsaWRhdGlvbi50ZXh0LnN0cmluZ1wiKSlcbiAgICB9KSxcbiAgICBvblN1Ym1pdDogKHZhbHVlcywgeyByZXNldEZvcm0gfSkgPT4ge1xuICAgICAgb25TdWJtaXQodmFsdWVzKTtcbiAgICAgIHJlc2V0Rm9ybSgpO1xuICAgIH1cbiAgfSk7XG5cbiAgY29uc3QgaGFuZGxlQ2FuY2VsID0gKCkgPT4ge1xuICAgIGZvcm1pay5yZXNldEZvcm0oKTtcbiAgICBvbkNsb3NlKCk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImg2XCIgZ3V0dGVyQm90dG9tPlxuICAgICAgICB7dChcInRpY2tldF9hc3NpZ24ucmVhc3NpZ25fZm9ybS50aXRsZVwiKX1cbiAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJib2R5MVwiIGd1dHRlckJvdHRvbSBzeD17eyBjb2xvcjogXCJ0ZXh0LnNlY29uZGFyeVwiIH19PlxuICAgICAgICB7dChcInRpY2tldF9hc3NpZ24ucmVhc3NpZ25fZm9ybS5ib2R5XCIpfVxuICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgPGZvcm0gb25TdWJtaXQ9e2Zvcm1pay5oYW5kbGVTdWJtaXR9IG5vVmFsaWRhdGU+XG4gICAgICAgIDxUZXh0RmllbGRcbiAgICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgICBuYW1lPVwibmV3X2F0dGVuZGVlX2VtYWlsXCJcbiAgICAgICAgICBsYWJlbD17dChcInRpY2tldF9hc3NpZ24ucmVhc3NpZ25fZm9ybS5uZXdfYXR0ZW5kZWVfZW1haWxcIil9XG4gICAgICAgICAgbWFyZ2luPVwibm9ybWFsXCJcbiAgICAgICAgICB2YWx1ZT17Zm9ybWlrLnZhbHVlcy5uZXdfYXR0ZW5kZWVfZW1haWx9XG4gICAgICAgICAgb25DaGFuZ2U9e2Zvcm1pay5oYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgb25CbHVyPXtmb3JtaWsuaGFuZGxlQmx1cn1cbiAgICAgICAgICBlcnJvcj17XG4gICAgICAgICAgICBmb3JtaWsudG91Y2hlZC5uZXdfYXR0ZW5kZWVfZW1haWwgJiZcbiAgICAgICAgICAgIEJvb2xlYW4oZm9ybWlrLmVycm9ycy5uZXdfYXR0ZW5kZWVfZW1haWwpXG4gICAgICAgICAgfVxuICAgICAgICAgIGhlbHBlclRleHQ9e1xuICAgICAgICAgICAgZm9ybWlrLnRvdWNoZWQubmV3X2F0dGVuZGVlX2VtYWlsICYmXG4gICAgICAgICAgICBmb3JtaWsuZXJyb3JzLm5ld19hdHRlbmRlZV9lbWFpbFxuICAgICAgICAgIH1cbiAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAvPlxuICAgICAgICA8VGV4dEZpZWxkXG4gICAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgICAgbmFtZT1cInBlcnNvbmFsX21lc3NhZ2VcIlxuICAgICAgICAgIGxhYmVsPXt0KFwidGlja2V0X2Fzc2lnbi5yZWFzc2lnbl9mb3JtLnBlcnNvbmFsX21lc3NhZ2VcIil9XG4gICAgICAgICAgdmFsdWU9e2Zvcm1pay52YWx1ZXMucGVyc29uYWxfbWVzc2FnZX1cbiAgICAgICAgICBtYXJnaW49XCJub3JtYWxcIlxuICAgICAgICAgIG11bHRpbGluZVxuICAgICAgICAgIG1pblJvd3M9ezR9XG4gICAgICAgICAgb25DaGFuZ2U9e2Zvcm1pay5oYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgb25CbHVyPXtmb3JtaWsuaGFuZGxlQmx1cn1cbiAgICAgICAgICBlcnJvcj17XG4gICAgICAgICAgICBmb3JtaWsudG91Y2hlZC5wZXJzb25hbF9tZXNzYWdlICYmXG4gICAgICAgICAgICBCb29sZWFuKGZvcm1pay5lcnJvcnMucGVyc29uYWxfbWVzc2FnZSlcbiAgICAgICAgICB9XG4gICAgICAgICAgaGVscGVyVGV4dD17XG4gICAgICAgICAgICBmb3JtaWsudG91Y2hlZC5wZXJzb25hbF9tZXNzYWdlICYmIGZvcm1pay5lcnJvcnMucGVyc29uYWxfbWVzc2FnZVxuICAgICAgICAgIH1cbiAgICAgICAgLz5cbiAgICAgICAgPEZvcm1Gb290ZXJcbiAgICAgICAgICBzYXZlTGFiZWw9e3QoXCJ0aWNrZXRfYXNzaWduLnJlYXNzaWduX2Zvcm0uc2F2ZVwiKX1cbiAgICAgICAgICBjYW5jZWxMYWJlbD17dChcInRpY2tldF9hc3NpZ24ucmVhc3NpZ25fZm9ybS5jYW5jZWxcIil9XG4gICAgICAgICAgb25DbG9zZT17aGFuZGxlQ2FuY2VsfVxuICAgICAgICAgIGRpc2FibGVkPXtmb3JtaWsuaXNTdWJtaXR0aW5nfVxuICAgICAgICAvPlxuICAgICAgPC9mb3JtPlxuICAgIDwvPlxuICApO1xufTtcblxuUmVhc3NpZ25Gb3JtLnByb3BUeXBlcyA9IHtcbiAgb25TdWJtaXQ6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIG9uQ2xvc2U6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWRcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFJlYXNzaWduRm9ybTtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VDb250ZXh0LCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2gsIHVzZVNlbGVjdG9yIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCb3ggfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHtcbiAgYXNzaWduQXR0ZW5kZWUsXG4gIGRlbGVnYXRlVGlja2V0LFxuICByZWFzc2lnblRpY2tldCxcbiAgc2F2ZUV4dHJhUXVlc3Rpb25zLFxuICB1bmFzc2lnblRpY2tldFxufSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuaW1wb3J0IFJpZ2h0RHJhd2VyIGZyb20gXCIuLi9SaWdodERyYXdlclwiO1xuaW1wb3J0IFRpY2tldEZvcm0gZnJvbSBcIi4uL1RpY2tldERldGFpbC9jb21wb25lbnRzL1RpY2tldEZvcm1cIjtcbmltcG9ydCBDdXN0b21Ob3RpZmljYXRpb25Db250ZXh0IGZyb20gXCIuLi9DdXN0b21Ob3RpZmljYXRpb24vQ29udGV4dFwiO1xuaW1wb3J0IHsgdHJhbnNmb3JtQW53ZXJzRm9ybWF0IH0gZnJvbSBcIi4uL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvdXRpbHNcIjtcbmltcG9ydCB1c2VHZXRUaWNrZXQgZnJvbSBcIi4uLy4uL2hvb2tzL3VzZUdldFRpY2tldFwiO1xuaW1wb3J0IEFzc2lnbkhlYWRlciBmcm9tIFwiLi9jb21wb25lbnRzL0hlYWRlci9Bc3NpZ25IZWFkZXJcIjtcbmltcG9ydCBSZWFzc2lnbkhlYWRlciBmcm9tIFwiLi9jb21wb25lbnRzL0hlYWRlci9SZWFzc2lnbkhlYWRlclwiO1xuaW1wb3J0IEFzc2lnbk9wdGlvbnMgZnJvbSBcIi4vY29tcG9uZW50cy9Bc3NpZ25PcHRpb25zXCI7XG5pbXBvcnQgeyBUSUNLRVRfRFJBV0VSX0lEIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2NvbnN0YW50c1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBUaWNrZXRBc3NpZ24gPSAoeyB0aWNrZXRJZCwgb3JkZXJJZCwgb3duZXJJZCwgb3Blbiwgb25DbG9zZSB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuICBjb25zdCB7IHN1Y2Nlc3NNZXNzYWdlLCBlcnJvck1lc3NhZ2UgfSA9IHVzZUNvbnRleHQoXG4gICAgQ3VzdG9tTm90aWZpY2F0aW9uQ29udGV4dFxuICApO1xuICBjb25zdCBbYXNzaWduT3B0aW9uLCBzZXRBc3NpZ25PcHRpb25dID0gdXNlU3RhdGUobnVsbCk7XG4gIGNvbnN0IFthc3NpZ25hdGlvbkluUHJvZ3Jlc3MsIHNldEFzc2lnbmF0aW9uSW5Qcm9ncmVzc10gPSB1c2VTdGF0ZShcIlwiKTtcbiAgY29uc3Qge1xuICAgIHN1bW1pdCxcbiAgICB1c2VyOiB7IHVzZXJQcm9maWxlIH1cbiAgfSA9IHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUpO1xuICBjb25zdCB7IHRpY2tldCwgZXh0cmFRdWVzdGlvbnMgfSA9IHVzZUdldFRpY2tldChcbiAgICB0aWNrZXRJZCxcbiAgICBvcmRlcklkLFxuICAgIG93bmVySWQsXG4gICAgb3BlblxuICApO1xuICBjb25zdCBpc1VzZXJPcmRlck93bmVyID0gdGlja2V0Py5vcmRlcj8ub3duZXJfaWQgPT09IHVzZXJQcm9maWxlPy5pZDtcbiAgY29uc3QgaXNVc2VyVGlja2V0T3duZXIgPSB0aWNrZXQ/Lm93bmVyPy5lbWFpbCA9PT0gdXNlclByb2ZpbGU/LmVtYWlsO1xuICBjb25zdCBjYW5FZGl0VGlja2V0RGF0YSA9XG4gICAgKGlzVXNlclRpY2tldE93bmVyIHx8IGlzVXNlck9yZGVyT3duZXIpICYmXG4gICAgc3VtbWl0LmFsbG93X3VwZGF0ZV9hdHRlbmRlZV9leHRyYV9xdWVzdGlvbnM7XG5cbiAgY29uc3Qgb25DbG9zZUVRRm9ybSA9ICgpID0+IHtcbiAgICBzZXRBc3NpZ25hdGlvbkluUHJvZ3Jlc3MoXCJcIik7XG4gICAgb25DbG9zZSgpO1xuICB9O1xuXG4gIGNvbnN0IG9uQXNzaWduID0gKGVtYWlsLCBtZXNzYWdlID0gXCJcIikgPT4ge1xuICAgIGlmIChvd25lcklkKSB7XG4gICAgICBkaXNwYXRjaChyZWFzc2lnblRpY2tldChvcmRlcklkLCB0aWNrZXRJZCwgZW1haWwsIG1lc3NhZ2UpKS50aGVuKCgpID0+IHtcbiAgICAgICAgc2V0QXNzaWduYXRpb25JblByb2dyZXNzKGAke2Fzc2lnbk9wdGlvbn1gKTtcbiAgICAgICAgc2V0QXNzaWduT3B0aW9uKG51bGwpO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRpc3BhdGNoKGFzc2lnbkF0dGVuZGVlKG9yZGVySWQsIHRpY2tldElkLCBlbWFpbCkpLnRoZW4oKCkgPT4ge1xuICAgICAgICBzZXRBc3NpZ25hdGlvbkluUHJvZ3Jlc3MoYCR7YXNzaWduT3B0aW9ufWApO1xuICAgICAgICBzZXRBc3NpZ25PcHRpb24obnVsbCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3Qgb25VbkFzc2lnbiA9ICgpID0+IHtcbiAgICBkaXNwYXRjaCh1bmFzc2lnblRpY2tldChvcmRlcklkLCB0aWNrZXRJZCkpLnRoZW4oKCkgPT4ge1xuICAgICAgb25DbG9zZUVRRm9ybSgpO1xuICAgIH0pO1xuICB9O1xuXG4gIGNvbnN0IG9uRGVsZWdhdGUgPSAoZmlyc3ROYW1lLCBsYXN0TmFtZSwgZW1haWwpID0+IHtcbiAgICBkaXNwYXRjaChcbiAgICAgIGRlbGVnYXRlVGlja2V0KG9yZGVySWQsIHRpY2tldElkLCBmaXJzdE5hbWUsIGxhc3ROYW1lLCBlbWFpbClcbiAgICApLnRoZW4oKCkgPT4ge1xuICAgICAgc2V0QXNzaWduYXRpb25JblByb2dyZXNzKGAke2Fzc2lnbk9wdGlvbn1gKTtcbiAgICAgIHNldEFzc2lnbk9wdGlvbihudWxsKTtcbiAgICB9KTtcbiAgfTtcblxuICBjb25zdCBvblNhdmVFUSA9ICh2YWwpID0+IHtcbiAgICBjb25zdCBhbnN3ZXJzID0gdHJhbnNmb3JtQW53ZXJzRm9ybWF0KHZhbCk7XG5cbiAgICByZXR1cm4gZGlzcGF0Y2goc2F2ZUV4dHJhUXVlc3Rpb25zKHRpY2tldCwgYW5zd2VycykpXG4gICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgIG9uQ2xvc2VFUUZvcm0oKTtcbiAgICAgICAgc3VjY2Vzc01lc3NhZ2UodChcInRpY2tldF9hc3NpZ24uc2F2aW5nX3N1Y2Nlc3NcIikpO1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKCgpID0+IHtcbiAgICAgICAgZXJyb3JNZXNzYWdlKHQoXCJ0aWNrZXRfYXNzaWduLnNhdmluZ19lcnJvclwiKSk7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCgpO1xuICAgICAgfSk7XG4gIH07XG5cbiAgY29uc3QgdGl0bGUgPSBvd25lcklkXG4gICAgPyB0KFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfcmVhc3NpZ24udGl0bGVcIilcbiAgICA6IHQoXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9hc3NpZ24udGl0bGVcIik7XG4gIGNvbnN0IEhlYWRlciA9IG93bmVySWQgPyBSZWFzc2lnbkhlYWRlciA6IEFzc2lnbkhlYWRlcjtcblxuICByZXR1cm4gKFxuICAgIDxSaWdodERyYXdlclxuICAgICAgaWQ9e1RJQ0tFVF9EUkFXRVJfSUR9XG4gICAgICB0aXRsZT17dGl0bGV9XG4gICAgICBvcGVuPXtvcGVufVxuICAgICAgb25DbG9zZT17b25DbG9zZUVRRm9ybX1cbiAgICA+XG4gICAgICB7dGlja2V0ICYmIGV4dHJhUXVlc3Rpb25zICYmIChcbiAgICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRSZWFzc2lnbkNvbnRhaW5lcn0+XG4gICAgICAgICAgPEhlYWRlclxuICAgICAgICAgICAgaW5Qcm9ncmVzcz17YXNzaWduYXRpb25JblByb2dyZXNzfVxuICAgICAgICAgICAgdGlja2V0PXt0aWNrZXR9XG4gICAgICAgICAgICB1c2VyRW1haWw9e3VzZXJQcm9maWxlLmVtYWlsfVxuICAgICAgICAgICAgb25DbG9zZT17b25DbG9zZUVRRm9ybX1cbiAgICAgICAgICAvPlxuXG4gICAgICAgICAge2Fzc2lnbmF0aW9uSW5Qcm9ncmVzcyA/IChcbiAgICAgICAgICAgIDxUaWNrZXRGb3JtXG4gICAgICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICAgICAgZXh0cmFRdWVzdGlvbnM9e2V4dHJhUXVlc3Rpb25zfVxuICAgICAgICAgICAgICBjYW5FZGl0PXtjYW5FZGl0VGlja2V0RGF0YX1cbiAgICAgICAgICAgICAgb25TdWJtaXQ9e29uU2F2ZUVRfVxuICAgICAgICAgICAgICBvbkNsb3NlPXtvbkNsb3NlRVFGb3JtfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApIDogKFxuICAgICAgICAgICAgPEFzc2lnbk9wdGlvbnNcbiAgICAgICAgICAgICAgdGlja2V0PXt0aWNrZXR9XG4gICAgICAgICAgICAgIHVzZXJQcm9maWxlPXt1c2VyUHJvZmlsZX1cbiAgICAgICAgICAgICAgYXNzaWduT3B0aW9uPXthc3NpZ25PcHRpb259XG4gICAgICAgICAgICAgIHNldEFzc2lnbk9wdGlvbj17c2V0QXNzaWduT3B0aW9ufVxuICAgICAgICAgICAgICBvbkFzc2lnbj17b25Bc3NpZ259XG4gICAgICAgICAgICAgIG9uVW5Bc3NpZ249e29uVW5Bc3NpZ259XG4gICAgICAgICAgICAgIG9uRGVsZWdhdGU9e29uRGVsZWdhdGV9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvQm94PlxuICAgICAgKX1cbiAgICA8L1JpZ2h0RHJhd2VyPlxuICApO1xufTtcblxuVGlja2V0QXNzaWduLnByb3BUeXBlcyA9IHtcbiAgdGlja2V0SWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gIG9yZGVySWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gIG93bmVySWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gIG9wZW46IFByb3BUeXBlcy5ib29sLFxuICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgVGlja2V0QXNzaWduO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgVGV4dEZpZWxkLCBBdXRvY29tcGxldGUsIFR5cG9ncmFwaHkgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgcXVlcnlSZWdpc3RyYXRpb25Db21wYW5pZXMgfSBmcm9tIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9xdWVyeS1hY3Rpb25zXCI7XG5pbXBvcnQgeyBUSUNLRVRfQVRURU5ERUVfS0VZUyB9IGZyb20gXCIuLi8uLi9jb25zdGFudHNcIjtcblxuY29uc3QgQ29tcGFueUZpZWxkID0gKHsgZm9ybWlrLCBzdW1taXRJZCwgaXNSZXF1aXJlZCB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgW2lucHV0VmFsdWUsIHNldElucHV0VmFsdWVdID0gUmVhY3QudXNlU3RhdGUoXCJcIik7XG4gIGNvbnN0IFtvcHRpb25zLCBzZXRPcHRpb25zXSA9IFJlYWN0LnVzZVN0YXRlKFtdKTtcbiAgY29uc3Qge1xuICAgIGVycm9ycyxcbiAgICB2YWx1ZXMsXG4gICAgdG91Y2hlZCxcbiAgICBzZXRGaWVsZFRvdWNoZWQsXG4gICAgc2V0RmllbGRWYWx1ZSxcbiAgICBpbml0aWFsVmFsdWVzXG4gIH0gPSBmb3JtaWs7XG4gIGNvbnN0IG5hbWUgPSBUSUNLRVRfQVRURU5ERUVfS0VZUy5jb21wYW55O1xuICBjb25zdCB2YWx1ZSA9IHZhbHVlc1tuYW1lXTtcbiAgY29uc3QgZGlzYWJsZWQgPSAhIWluaXRpYWxWYWx1ZXNbbmFtZV07XG4gIGNvbnN0IGVycm9yID0gdG91Y2hlZFtuYW1lXSAmJiBCb29sZWFuKGVycm9yc1tuYW1lXSk7XG4gIGNvbnN0IGhlbHBlclRleHQgPSB0b3VjaGVkW25hbWVdICYmIGVycm9yc1tuYW1lXTtcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChpbnB1dFZhbHVlID09PSBcIlwiKSB7XG4gICAgICBzZXRPcHRpb25zKHZhbHVlID8gW3ZhbHVlXSA6IFtdKTtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcXVlcnlSZWdpc3RyYXRpb25Db21wYW5pZXMoc3VtbWl0SWQsIGlucHV0VmFsdWUsIChyZXN1bHRzKSA9PiB7XG4gICAgICBsZXQgbmV3T3B0aW9ucyA9IFtdO1xuXG4gICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgbmV3T3B0aW9ucyA9IFt2YWx1ZV07XG4gICAgICB9XG5cbiAgICAgIGlmIChyZXN1bHRzKSB7XG4gICAgICAgIG5ld09wdGlvbnMgPSBbLi4ubmV3T3B0aW9ucywgLi4ucmVzdWx0c107XG4gICAgICB9XG5cbiAgICAgIHNldE9wdGlvbnMobmV3T3B0aW9ucyk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfSwgW3ZhbHVlLCBpbnB1dFZhbHVlXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8QXV0b2NvbXBsZXRlXG4gICAgICBuYW1lPXtuYW1lfVxuICAgICAgb3B0aW9ucz17b3B0aW9uc31cbiAgICAgIGF1dG9Db21wbGV0ZVxuICAgICAgZnJlZVNvbG9cbiAgICAgIGluY2x1ZGVJbnB1dEluTGlzdFxuICAgICAgZmlsdGVyU2VsZWN0ZWRPcHRpb25zXG4gICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICB2YWx1ZT17dmFsdWV9XG4gICAgICBvbkJsdXI9eygpID0+IHNldEZpZWxkVG91Y2hlZChuYW1lLCB0cnVlLCB0cnVlKX1cbiAgICAgIGdldE9wdGlvbkxhYmVsPXsob3B0aW9uKSA9PiB7XG4gICAgICAgIC8vIFZhbHVlIHNlbGVjdGVkIHdpdGggZW50ZXIsIHJpZ2h0IGZyb20gdGhlIGlucHV0XG4gICAgICAgIGlmICh0eXBlb2Ygb3B0aW9uID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgcmV0dXJuIG9wdGlvbjtcbiAgICAgICAgfVxuICAgICAgICAvLyBBZGQgXCJ4eHhcIiBvcHRpb24gY3JlYXRlZCBkeW5hbWljYWxseVxuICAgICAgICBpZiAob3B0aW9uLmlucHV0VmFsdWUpIHtcbiAgICAgICAgICByZXR1cm4gb3B0aW9uLmlucHV0VmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgLy8gUmVndWxhciBvcHRpb25cbiAgICAgICAgcmV0dXJuIG9wdGlvbi5uYW1lO1xuICAgICAgfX1cbiAgICAgIG9uQ2hhbmdlPXsoZXZlbnQsIG5ld1ZhbHVlKSA9PiB7XG4gICAgICAgIGNvbnN0IHRtcFZhbHVlID0gbmV3VmFsdWU/LmlucHV0VmFsdWUgfHwgbmV3VmFsdWU7XG5cbiAgICAgICAgc2V0T3B0aW9ucyh0bXBWYWx1ZSA/IFt0bXBWYWx1ZSwgLi4ub3B0aW9uc10gOiBvcHRpb25zKTtcbiAgICAgICAgc2V0RmllbGRWYWx1ZShuYW1lLCB0bXBWYWx1ZSk7XG4gICAgICB9fVxuICAgICAgb25JbnB1dENoYW5nZT17KGV2ZW50LCBuZXdJbnB1dFZhbHVlKSA9PiB7XG4gICAgICAgIHNldElucHV0VmFsdWUobmV3SW5wdXRWYWx1ZSk7XG4gICAgICB9fVxuICAgICAgZmlsdGVyT3B0aW9ucz17KG9wdGlvbnMsIHBhcmFtcykgPT4ge1xuICAgICAgICBjb25zdCB7IGlucHV0VmFsdWUgfSA9IHBhcmFtcztcbiAgICAgICAgY29uc3QgZmlsdGVyZWQgPSBbLi4ub3B0aW9uc107XG4gICAgICAgIC8vIFN1Z2dlc3QgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHZhbHVlXG4gICAgICAgIGNvbnN0IGlzRXhpc3RpbmcgPSBvcHRpb25zLnNvbWUoKG9wdGlvbikgPT4gaW5wdXRWYWx1ZSA9PT0gb3B0aW9uLm5hbWUpO1xuICAgICAgICBpZiAoaW5wdXRWYWx1ZSAhPT0gXCJcIiAmJiAhaXNFeGlzdGluZykge1xuICAgICAgICAgIGZpbHRlcmVkLnB1c2goe1xuICAgICAgICAgICAgaW5wdXRWYWx1ZSxcbiAgICAgICAgICAgIG5hbWU6IGBTZWxlY3QgXCIke2lucHV0VmFsdWV9XCJgXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmlsdGVyZWQ7XG4gICAgICB9fVxuICAgICAgcmVuZGVySW5wdXQ9eyhwYXJhbXMpID0+IChcbiAgICAgICAgPFRleHRGaWVsZFxuICAgICAgICAgIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nICovXG4gICAgICAgICAgey4uLnBhcmFtc31cbiAgICAgICAgICBsYWJlbD17dChcInRpY2tldF9kZXRhaWwuYXR0ZW5kZWVfY29tcGFueVwiKX1cbiAgICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgICByZXF1aXJlZD17aXNSZXF1aXJlZH1cbiAgICAgICAgICBoZWxwZXJUZXh0PXtoZWxwZXJUZXh0fVxuICAgICAgICAgIGVycm9yPXtlcnJvcn1cbiAgICAgICAgICBtYXJnaW49XCJub3JtYWxcIlxuICAgICAgICAvPlxuICAgICAgKX1cbiAgICAgIHJlbmRlck9wdGlvbj17KHByb3BzLCBvcHRpb24pID0+IHtcbiAgICAgICAgY29uc3QgeyBrZXksIC4uLm9wdGlvblByb3BzIH0gPSBwcm9wcztcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvanN4LXByb3BzLW5vLXNwcmVhZGluZ1xuICAgICAgICAgIDxsaSBrZXk9e2tleX0gey4uLm9wdGlvblByb3BzfT5cbiAgICAgICAgICAgIDxUeXBvZ3JhcGh5XG4gICAgICAgICAgICAgIHZhcmlhbnQ9XCJib2R5MlwiXG4gICAgICAgICAgICAgIHN4PXt7IGZvbnRTaXplOiBcIjFlbVwiLCBjb2xvcjogXCJ0ZXh0LnNlY29uZGFyeVwiIH19XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHtvcHRpb24ubmFtZX1cbiAgICAgICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgICA8L2xpPlxuICAgICAgICApO1xuICAgICAgfX1cbiAgICAvPlxuICApO1xufTtcblxuQ29tcGFueUZpZWxkLnByb3BUeXBlcyA9IHtcbiAgZm9ybWlrOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHN1bW1pdElkOiBQcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWRcbn07XG5cbmV4cG9ydCBkZWZhdWx0IENvbXBhbnlGaWVsZDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIEJveCxcbiAgQ2hlY2tib3gsXG4gIEZvcm1Db250cm9sLFxuICBGb3JtQ29udHJvbExhYmVsLFxuICBGb3JtSGVscGVyVGV4dFxufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IFJhd0hUTUwgZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvY29tcG9uZW50cy9yYXctaHRtbFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgVElDS0VUX0FUVEVOREVFX0tFWVMgfSBmcm9tIFwiLi4vLi4vY29uc3RhbnRzXCI7XG5cbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgUmVnaXN0cmF0aW9uRGlzY2xhaW1lciA9ICh7XG4gIGRpc2NsYWltZXIsXG4gIGZvcm1payxcbiAgaXNEaXNhYmxlZCA9IGZhbHNlLFxuICBpc1JlcXVpcmVkID0gdHJ1ZVxufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IG5hbWUgPSBUSUNLRVRfQVRURU5ERUVfS0VZUy5kaXNjbGFpbWVyQWNjZXB0ZWQ7XG4gIGNvbnN0IHsgZXJyb3JzLCB2YWx1ZXMsIHRvdWNoZWQsIGhhbmRsZUNoYW5nZSwgaGFuZGxlQmx1ciB9ID0gZm9ybWlrO1xuICBjb25zdCB2YWx1ZSA9IHZhbHVlc1tuYW1lXTtcbiAgY29uc3QgZXJyb3IgPSB0b3VjaGVkW25hbWVdICYmIEJvb2xlYW4oZXJyb3JzW25hbWVdKTtcbiAgY29uc3QgaGVscGVyVGV4dCA9IHRvdWNoZWRbbmFtZV0gJiYgZXJyb3JzW25hbWVdO1xuXG4gIHJldHVybiAoXG4gICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy53cmFwcGVyfT5cbiAgICAgIDxSYXdIVE1MPntkaXNjbGFpbWVyfTwvUmF3SFRNTD5cbiAgICAgIDxGb3JtQ29udHJvbCBmdWxsV2lkdGggZXJyb3I9e2Vycm9yfT5cbiAgICAgICAgPEZvcm1Db250cm9sTGFiZWxcbiAgICAgICAgICBjb250cm9sPXtcbiAgICAgICAgICAgIDxDaGVja2JveFxuICAgICAgICAgICAgICBuYW1lPXtuYW1lfVxuICAgICAgICAgICAgICBjaGVja2VkPXshIXZhbHVlfVxuICAgICAgICAgICAgICBsYWJlbD17dChcInRpY2tldF9hc3NpZ24uZXh0cmFfcXVlc3Rpb25zX2Zvcm0uZGlzY2xhaW1lcl9sYWJlbFwiKX1cbiAgICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX1cbiAgICAgICAgICAgICAgb25CbHVyPXtoYW5kbGVCbHVyfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICB9XG4gICAgICAgICAgbGFiZWw9e3QoXCJ0aWNrZXRfYXNzaWduLmV4dHJhX3F1ZXN0aW9uc19mb3JtLmRpc2NsYWltZXJfbGFiZWxcIil9XG4gICAgICAgICAgZGlzYWJsZWQ9e2lzRGlzYWJsZWR9XG4gICAgICAgICAgcmVxdWlyZWQ9e2lzUmVxdWlyZWR9XG4gICAgICAgIC8+XG4gICAgICAgIHtlcnJvciAmJiA8Rm9ybUhlbHBlclRleHQ+e2hlbHBlclRleHQgPz8gXCIgXCJ9PC9Gb3JtSGVscGVyVGV4dD59XG4gICAgICA8L0Zvcm1Db250cm9sPlxuICAgIDwvQm94PlxuICApO1xufTtcblxuUmVnaXN0cmF0aW9uRGlzY2xhaW1lci5wcm9wVHlwZXMgPSB7XG4gIGRpc2NsYWltZXI6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgZm9ybWlrOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIGlzRGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICBpc1JlcXVpcmVkOiBQcm9wVHlwZXMuYm9vbFxufTtcblxuZXhwb3J0IGRlZmF1bHQgUmVnaXN0cmF0aW9uRGlzY2xhaW1lcjtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2ggfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCBRUkNvZGUgZnJvbSBcInJlYWN0LXFyLWNvZGVcIjtcbmltcG9ydCB7IEJveCwgQnV0dG9uLCBUeXBvZ3JhcGh5IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7XG4gIEVtYWlsT3V0bGluZWQgYXMgRW1haWxJY29uLFxuICBGaWxlRG93bmxvYWRPdXRsaW5lZCBhcyBEb3dubG9hZEljb25cbn0gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWxcIjtcbmltcG9ydCBDb3B5VGV4dCBmcm9tIFwiLi4vLi4vLi4vQ29weVRleHRcIjtcbmltcG9ydCB7IHVzZVRpY2tldERldGFpbHMgfSBmcm9tIFwiLi4vLi4vLi4vLi4vaG9va3MvdXNlVGlja2V0RGV0YWlsc1wiO1xuaW1wb3J0IHsgZ2V0VGlja2V0UERGLCByZXNlbmROb3RpZmljYXRpb24gfSBmcm9tIFwiLi4vLi4vLi4vLi4vYWN0aW9uc1wiO1xuaW1wb3J0IHsgTUlMTElTRUNfVE9fU0VDLCBUV09fSVRFTSB9IGZyb20gXCIuLi8uLi8uLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi4vLi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IFRpY2tldERldGFpbEhlYWRlciA9ICh7IHRpY2tldCwgaXNWaXJ0dWFsU3VtbWl0IH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCB7IGlzQ29tcGxldGUgfSA9IHVzZVRpY2tldERldGFpbHModGlja2V0KTtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuICBjb25zdCBbc2VudENvbmZpcm1hdGlvbiwgc2V0U2VudENvbmZpcm1hdGlvbl0gPSB1c2VTdGF0ZShmYWxzZSk7XG5cbiAgY29uc3QgZG93bmxvYWRUaWNrZXRQZGYgPSAoKSA9PiB7XG4gICAgZGlzcGF0Y2goZ2V0VGlja2V0UERGKHRpY2tldCkpO1xuICB9O1xuXG4gIGNvbnN0IG9uU2VuZEVtYWlsID0gKCkgPT4ge1xuICAgIGRpc3BhdGNoKHJlc2VuZE5vdGlmaWNhdGlvbih0aWNrZXQpKS50aGVuKCgpID0+IHtcbiAgICAgIHNldFNlbnRDb25maXJtYXRpb24odHJ1ZSk7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgc2V0U2VudENvbmZpcm1hdGlvbihmYWxzZSk7XG4gICAgICB9LCBNSUxMSVNFQ19UT19TRUMgKiBUV09fSVRFTSk7XG4gICAgfSk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmhlYWRlcn0+XG4gICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiaDRcIiBndXR0ZXJCb3R0b20gY2xhc3NOYW1lPXtzdHlsZXMudGl0bGV9PlxuICAgICAgICB7dGlja2V0Py50aWNrZXRfdHlwZT8ubmFtZX1cbiAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJib2R5MlwiIGd1dHRlckJvdHRvbSBjbGFzc05hbWU9e3N0eWxlcy5zdWJ0aXRsZX0+XG4gICAgICAgIHt0KFwidGlja2V0X2RldGFpbC5wdXJjaGFzZWRfYnlcIil9IHt0aWNrZXQ/Lm9yZGVyPy5vd25lcl9lbWFpbH1cbiAgICAgIDwvVHlwb2dyYXBoeT5cblxuICAgICAge2lzQ29tcGxldGUgJiYgKFxuICAgICAgICA8PlxuICAgICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMucXJDb2RlfT5cbiAgICAgICAgICAgIDxRUkNvZGVcbiAgICAgICAgICAgICAgc2l6ZT17MjU2fVxuICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgIGhlaWdodDogXCJhdXRvXCIsXG4gICAgICAgICAgICAgICAgbWF4V2lkdGg6IFwiMTAwJVwiLFxuICAgICAgICAgICAgICAgIHdpZHRoOiBcIjEwMCVcIlxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICB2YWx1ZT17dGlja2V0LnFyX2NvZGV9XG4gICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjU2IDI1NlwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvQm94PlxuICAgICAgICAgIDxwIGNsYXNzTmFtZT17c3R5bGVzLnN0YXR1c30+e3QoXCJ0aWNrZXRfZGV0YWlsLnN0YXR1c1wiKX08L3A+XG4gICAgICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImJvZHkyXCIgZ3V0dGVyQm90dG9tIGNsYXNzTmFtZT17c3R5bGVzLnFyTm90ZX0+XG4gICAgICAgICAgICB7dChcInRpY2tldF9kZXRhaWwucXJfbm90ZVwiKX1cbiAgICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICAgIDwvPlxuICAgICAgKX1cblxuICAgICAgeyFpc1ZpcnR1YWxTdW1taXQgJiYgaXNDb21wbGV0ZSAmJiAoXG4gICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuYWN0aW9uQnV0dG9uc0NvbnRhaW5lcn0+XG4gICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuZG93bmxvYWRCdG59XG4gICAgICAgICAgICB2YXJpYW50PVwiY29udGFpbmVkXCJcbiAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgICBvbkNsaWNrPXtkb3dubG9hZFRpY2tldFBkZn1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8RG93bmxvYWRJY29uIGZvbnRTaXplPVwibGFyZ2VcIiAvPlxuICAgICAgICAgICAge3QoXCJ0aWNrZXRfZGV0YWlsLmRvd25sb2FkXCIpfVxuICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLnNlbmRCdG59ICR7c2VudENvbmZpcm1hdGlvbiAmJiBzdHlsZXMuc2VudH1gfVxuICAgICAgICAgICAgb25DbGljaz17b25TZW5kRW1haWx9XG4gICAgICAgICAgICBkaXNhYmxlZD17c2VudENvbmZpcm1hdGlvbn1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8RW1haWxJY29uIGZvbnRTaXplPVwibGFyZ2VcIiAvPlxuICAgICAgICAgICAge3NlbnRDb25maXJtYXRpb25cbiAgICAgICAgICAgICAgPyB0KFwidGlja2V0X2RldGFpbC5zZW50XCIpXG4gICAgICAgICAgICAgIDogdChcInRpY2tldF9kZXRhaWwuc2VuZFwiKX1cbiAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgPC9Cb3g+XG4gICAgICApfVxuXG4gICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyTnVtYmVyfT5cbiAgICAgICAgPENvcHlUZXh0XG4gICAgICAgICAgdGV4dD17dGlja2V0Py5vcmRlcj8ubnVtYmVyfVxuICAgICAgICAgIHJldmVyc2VkXG4gICAgICAgICAgd2lkdGg9ezE1MH1cbiAgICAgICAgICB0b29sdGlwVGV4dD17dChcIm9yZGVyX3N1bW1hcnkuY29weV9vcmRlcl9udW1iZXJcIil9XG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFRpY2tldERldGFpbEhlYWRlcjtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTcgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEJveCwgVHlwb2dyYXBoeSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VGb3JtaWsgfSBmcm9tIFwiZm9ybWlrXCI7XG5pbXBvcnQgRXh0cmFRdWVzdGlvbnNGaWVsZHMgZnJvbSBcIi4uLy4uLy4uL0V4dHJhUXVlc3Rpb25zRmllbGRzXCI7XG5cbmltcG9ydCB7XG4gIGdldFR5cGVWYWx1ZSxcbiAgdG9TbHVnXG59IGZyb20gXCIuLi8uLi8uLi9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb21wb25lbnRzL3V0aWxzXCI7XG5cbmltcG9ydCBUaWNrZXRPd25lckZpZWxkcyBmcm9tIFwiLi4vVGlja2V0T3duZXJGaWVsZHNcIjtcbmltcG9ydCBSZWdpc3RyYXRpb25EaXNjbGFpbWVyIGZyb20gXCIuLi9SZWdpc3RyYXRpb25EaXNjbGFpbWVyL1JlZ2lzdHJhdGlvbkRpc2NsYWltZXJcIjtcbmltcG9ydCBGb3JtRm9vdGVyIGZyb20gXCIuLi8uLi8uLi9Gb3JtRm9vdGVyXCI7XG5pbXBvcnQgdXNlU2Nyb2xsVG9FcnJvciBmcm9tIFwiLi4vLi4vLi4vLi4vaG9va3MvdXNlU2Nyb2xsVG9FcnJvclwiO1xuaW1wb3J0IHtcbiAgcGFyc2VBbnN3ZXJzLFxuICBidWlsZFZhbGlkYXRpb25TY2hlbWFcbn0gZnJvbSBcIi4uLy4uLy4uLy4uL3V0aWxzL3RpY2tldFV0aWxzXCI7XG5cbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi4vLi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IFRpY2tldEZvcm0gPSAoe1xuICB0aWNrZXQsXG4gIGV4dHJhUXVlc3Rpb25zLFxuICBzdW1taXQsXG4gIGNhbkVkaXQsXG4gIG9uU3VibWl0LFxuICBvbkNsb3NlXG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgYW5zd2VycyA9IHRpY2tldD8ub3duZXI/LmV4dHJhX3F1ZXN0aW9ucy5yZWR1Y2UoKHJlcywgYW5zKSA9PiB7XG4gICAgY29uc3QgcXVlc3Rpb25TbHVnID0gdG9TbHVnKGFucy5xdWVzdGlvbi5uYW1lLCBhbnMucXVlc3Rpb24uaWQpO1xuICAgIHJlc1txdWVzdGlvblNsdWddID0gZ2V0VHlwZVZhbHVlKGFucy52YWx1ZSwgYW5zLnF1ZXN0aW9uLnR5cGUpO1xuICAgIHJldHVybiByZXM7XG4gIH0sIHt9KTtcblxuICBjb25zdCBmb3JtaWsgPSB1c2VGb3JtaWsoe1xuICAgIGluaXRpYWxWYWx1ZXM6IHBhcnNlQW5zd2VycyhcbiAgICAgIHRpY2tldC5vd25lcixcbiAgICAgIGV4dHJhUXVlc3Rpb25zLFxuICAgICAgYW5zd2VycyxcbiAgICAgIHRydWUsXG4gICAgICB0cnVlXG4gICAgKSxcbiAgICB2YWxpZGF0aW9uU2NoZW1hOiBidWlsZFZhbGlkYXRpb25TY2hlbWEoXG4gICAgICBleHRyYVF1ZXN0aW9ucyxcbiAgICAgIHRydWUsXG4gICAgICBzdW1taXQucmVnaXN0cmF0aW9uX2Rpc2NsYWltZXJfbWFuZGF0b3J5XG4gICAgKSxcbiAgICBvblN1Ym1pdDogKHZhbHVlcykgPT4ge1xuICAgICAgY29uc3QgcmVsZXZhbnRBbnN3ZXJzID0gcGFyc2VBbnN3ZXJzKFxuICAgICAgICB0aWNrZXQub3duZXIsXG4gICAgICAgIGV4dHJhUXVlc3Rpb25zLFxuICAgICAgICB2YWx1ZXMsXG4gICAgICAgIHRydWUsXG4gICAgICAgIHRydWUsXG4gICAgICAgIHRydWVcbiAgICAgICk7XG5cbiAgICAgIHJldHVybiBvblN1Ym1pdChyZWxldmFudEFuc3dlcnMpO1xuICAgIH0sXG4gICAgZW5hYmxlUmVpbml0aWFsaXplOiB0cnVlXG4gIH0pO1xuXG4gIC8vIGNvbnNvbGUubG9nKFwiU1VNTUlUOiBcIiwgc3VtbWl0KTtcbiAgLy8gY29uc29sZS5sb2coXCJUSUNLRVQ6IFwiLCB0aWNrZXQpO1xuICAvLyBjb25zb2xlLmxvZyhcIlFVRVNUSVVPTnM6IFwiLCBleHRyYVF1ZXN0aW9ucyk7XG4gIC8vIGNvbnNvbGUubG9nKFwiQU5TV0VSUzogXCIsIGFuc3dlcnMpO1xuICAvLyBjb25zb2xlLmxvZyhcIkVSUk9SczogXCIsIGZvcm1pay5lcnJvcnMpO1xuICAvLyBjb25zb2xlLmxvZyhcIlZBTFVFUzogXCIsIGZvcm1pay52YWx1ZXMpO1xuICAvLyBjb25zb2xlLmxvZyhcIklOSVRJQUw6IFwiLCBmb3JtaWsuaW5pdGlhbFZhbHVlcyk7XG4gIC8vIGNvbnNvbGUubG9nKFwiVE9VQ0hFRDogXCIsIGZvcm1pay50b3VjaGVkKTtcblxuICAvLyBTQ1JPTEwgVE8gRVJST1JcbiAgdXNlU2Nyb2xsVG9FcnJvcihmb3JtaWspO1xuXG4gIHJldHVybiAoXG4gICAgPGZvcm0gb25TdWJtaXQ9e2Zvcm1pay5oYW5kbGVTdWJtaXR9IG5vVmFsaWRhdGU+XG4gICAgICA8VGlja2V0T3duZXJGaWVsZHNcbiAgICAgICAgZm9ybWlrPXtmb3JtaWt9XG4gICAgICAgIGlzRGVsZWdhdGVkPXshIXRpY2tldC5vd25lcj8ubWFuYWdlcl9pZH1cbiAgICAgICAgc3VtbWl0SWQ9e3N1bW1pdC5pZH1cbiAgICAgICAgZGlzYWJsZWQ9eyFjYW5FZGl0fVxuICAgICAgLz5cblxuICAgICAge2V4dHJhUXVlc3Rpb25zPy5sZW5ndGggPiAwICYmIChcbiAgICAgICAgPEJveD5cbiAgICAgICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiYm9keTJcIiBjbGFzc05hbWU9e3N0eWxlcy5hZGRpdGlvbmFsRGV0YWlsc30+XG4gICAgICAgICAgICB7dChcInRpY2tldF9kZXRhaWwuYWRpdGlvbmFsX2RldGFpbHNcIil9XG4gICAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgICAgIDxFeHRyYVF1ZXN0aW9uc0ZpZWxkc1xuICAgICAgICAgICAgZXh0cmFRdWVzdGlvbnM9e2V4dHJhUXVlc3Rpb25zfVxuICAgICAgICAgICAgb3JpZ2luYWxBbnN3ZXJzPXthbnN3ZXJzfVxuICAgICAgICAgICAgYWxsb3dFZGl0PXtjYW5FZGl0fVxuICAgICAgICAgICAgZm9ybWlrPXtmb3JtaWt9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9Cb3g+XG4gICAgICApfVxuXG4gICAgICB7c3VtbWl0LnJlZ2lzdHJhdGlvbl9kaXNjbGFpbWVyX2NvbnRlbnQgJiYgKFxuICAgICAgICA8UmVnaXN0cmF0aW9uRGlzY2xhaW1lclxuICAgICAgICAgIGZvcm1paz17Zm9ybWlrfVxuICAgICAgICAgIGRpc2NsYWltZXI9e3N1bW1pdC5yZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9jb250ZW50fVxuICAgICAgICAgIGlzUmVxdWlyZWQ9e3N1bW1pdC5yZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9tYW5kYXRvcnl9XG4gICAgICAgICAgaXNEaXNhYmxlZD17IWNhbkVkaXR9XG4gICAgICAgIC8+XG4gICAgICApfVxuICAgICAgPEZvcm1Gb290ZXJcbiAgICAgICAgc2F2ZUxhYmVsPXt0KFwidGlja2V0X2RldGFpbC5zYXZlXCIpfVxuICAgICAgICBjYW5jZWxMYWJlbD17dChcInRpY2tldF9kZXRhaWwuY2FuY2VsXCIpfVxuICAgICAgICBvbkNsb3NlPXtvbkNsb3NlfVxuICAgICAgICBkaXNhYmxlZD17Zm9ybWlrLmlzU3VibWl0dGluZ31cbiAgICAgIC8+XG4gICAgPC9mb3JtPlxuICApO1xufTtcblxuVGlja2V0Rm9ybS5wcm9wVHlwZXMgPSB7XG4gIHRpY2tldDogUHJvcFR5cGVzLm9iamVjdCxcbiAgZXh0cmFRdWVzdGlvbnM6IFByb3BUeXBlcy5hcnJheS5pc1JlcXVpcmVkLFxuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgY2FuRWRpdDogUHJvcFR5cGVzLmJvb2wsXG4gIG9uU3VibWl0OiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkXG59O1xuXG5leHBvcnQgZGVmYXVsdCBUaWNrZXRGb3JtO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgQm94LCBUZXh0RmllbGQsIFR5cG9ncmFwaHkgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuXG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgeyBUSUNLRVRfQVRURU5ERUVfS0VZUyB9IGZyb20gXCIuLi8uLi9jb25zdGFudHNcIjtcbmltcG9ydCBDb21wYW55RmllbGQgZnJvbSBcIi4uL0NvbXBhbnlGaWVsZFwiO1xuXG5jb25zdCBUaWNrZXRPd25lckZpZWxkcyA9ICh7IGZvcm1paywgc3VtbWl0SWQsIGRpc2FibGVkLCBpc0RlbGVnYXRlZCB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgeyBlcnJvcnMsIHZhbHVlcywgdG91Y2hlZCwgaGFuZGxlQ2hhbmdlLCBoYW5kbGVCbHVyLCBpbml0aWFsVmFsdWVzIH0gPVxuICAgIGZvcm1paztcblxuICByZXR1cm4gKFxuICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMud3JhcHBlcn0+XG4gICAgICA8VGV4dEZpZWxkXG4gICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICBuYW1lPXtUSUNLRVRfQVRURU5ERUVfS0VZUy5lbWFpbH1cbiAgICAgICAgbGFiZWw9e3QoXCJ0aWNrZXRfZGV0YWlsLmVtYWlsXCIpfVxuICAgICAgICBkaXNhYmxlZFxuICAgICAgICB2YWx1ZT17dmFsdWVzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmVtYWlsXX1cbiAgICAgICAgbWFyZ2luPVwibm9ybWFsXCJcbiAgICAgIC8+XG4gICAgICB7aXNEZWxlZ2F0ZWQgJiYgKFxuICAgICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiYm9keTFcIiBzeD17eyBmb250V2VpZ2h0OiA1MDAsIG1hcmdpbjogXCIxMHB4IDBcIiB9fT5cbiAgICAgICAgICB7dChcInRpY2tldF9kZXRhaWwubWFuYWdlX2ZvclwiKX1cbiAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgKX1cbiAgICAgIHtbVElDS0VUX0FUVEVOREVFX0tFWVMuZmlyc3ROYW1lLCBUSUNLRVRfQVRURU5ERUVfS0VZUy5sYXN0TmFtZV0ubWFwKFxuICAgICAgICAobmFtZSkgPT4gKFxuICAgICAgICAgIDxUZXh0RmllbGRcbiAgICAgICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICAgICAga2V5PXtuYW1lfVxuICAgICAgICAgICAgbmFtZT17bmFtZX1cbiAgICAgICAgICAgIGxhYmVsPXt0KGB0aWNrZXRfZGV0YWlsLiR7bmFtZX1gKX1cbiAgICAgICAgICAgIHZhbHVlPXt2YWx1ZXNbbmFtZV19XG4gICAgICAgICAgICBkaXNhYmxlZD17ZGlzYWJsZWQgfHwgaXNEZWxlZ2F0ZWQgfHwgISFpbml0aWFsVmFsdWVzW25hbWVdfVxuICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX1cbiAgICAgICAgICAgIG9uQmx1cj17aGFuZGxlQmx1cn1cbiAgICAgICAgICAgIGVycm9yPXt0b3VjaGVkW25hbWVdICYmIEJvb2xlYW4oZXJyb3JzW25hbWVdKX1cbiAgICAgICAgICAgIGhlbHBlclRleHQ9e2Zvcm1pay50b3VjaGVkW25hbWVdICYmIGZvcm1pay5lcnJvcnNbbmFtZV19XG4gICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgICAgbWFyZ2luPVwibm9ybWFsXCJcbiAgICAgICAgICAvPlxuICAgICAgICApXG4gICAgICApfVxuICAgICAgPENvbXBhbnlGaWVsZCBmb3JtaWs9e2Zvcm1pa30gc3VtbWl0SWQ9e3N1bW1pdElkfSBpc1JlcXVpcmVkIC8+XG4gICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmluZm9Ob3RlfT57dChcInRpY2tldF9kZXRhaWwuaW5mb19ub3RlXCIpfTwvQm94PlxuICAgIDwvQm94PlxuICApO1xufTtcblxuVGlja2V0T3duZXJGaWVsZHMucHJvcFR5cGVzID0ge1xuICBmb3JtaWs6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgc3VtbWl0SWQ6IFByb3BUeXBlcy5udW1iZXIuaXNSZXF1aXJlZCxcbiAgZGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICBpc0RlbGVnYXRlZDogUHJvcFR5cGVzLmJvb2xcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFRpY2tldE93bmVyRmllbGRzO1xuIiwiZXhwb3J0IGNvbnN0IFRJQ0tFVF9BVFRFTkRFRV9LRVlTID0ge1xuICBlbWFpbDogXCJhdHRlbmRlZV9lbWFpbFwiLFxuICBmaXJzdE5hbWU6IFwiYXR0ZW5kZWVfZmlyc3RfbmFtZVwiLFxuICBsYXN0TmFtZTogXCJhdHRlbmRlZV9sYXN0X25hbWVcIixcbiAgY29tcGFueTogXCJhdHRlbmRlZV9jb21wYW55XCIsXG4gIGRpc2NsYWltZXJBY2NlcHRlZDogXCJkaXNjbGFpbWVyX2FjY2VwdGVkXCJcbn07XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlQ29udGV4dCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2gsIHVzZVNlbGVjdG9yIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCb3gsIFR5cG9ncmFwaHkgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHVzZUdldFRpY2tldCBmcm9tIFwiLi4vLi4vaG9va3MvdXNlR2V0VGlja2V0XCI7XG5pbXBvcnQgeyB0cmFuc2Zvcm1BbndlcnNGb3JtYXQgfSBmcm9tIFwiLi4vRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29tcG9uZW50cy91dGlsc1wiO1xuaW1wb3J0IHsgVElDS0VUX0RSQVdFUl9JRCB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCBUaWNrZXRGb3JtIGZyb20gXCIuL2NvbXBvbmVudHMvVGlja2V0Rm9ybVwiO1xuaW1wb3J0IEN1c3RvbU5vdGlmaWNhdGlvbkNvbnRleHQgZnJvbSBcIi4uL0N1c3RvbU5vdGlmaWNhdGlvbi9Db250ZXh0XCI7XG5pbXBvcnQgeyBzYXZlVGlja2V0RGV0YWlscyB9IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5pbXBvcnQgUmlnaHREcmF3ZXIgZnJvbSBcIi4uL1JpZ2h0RHJhd2VyXCI7XG5pbXBvcnQgVGlja2V0RGV0YWlsSGVhZGVyIGZyb20gXCIuL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsSGVhZGVyXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IFRpY2tldERldGFpbCA9ICh7XG4gIHN1bW1pdCxcbiAgdGlja2V0SWQsXG4gIG9yZGVySWQsXG4gIG93bmVySWQsXG4gIG9wZW4sXG4gIG9uQ2xvc2Vcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCB7IHN1Y2Nlc3NNZXNzYWdlLCBlcnJvck1lc3NhZ2UgfSA9IHVzZUNvbnRleHQoXG4gICAgQ3VzdG9tTm90aWZpY2F0aW9uQ29udGV4dFxuICApO1xuICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG4gIGNvbnN0IHtcbiAgICB1c2VyOiB7IHVzZXJQcm9maWxlIH1cbiAgfSA9IHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUpO1xuICBjb25zdCB7IHRpY2tldCwgZXh0cmFRdWVzdGlvbnMgfSA9IHVzZUdldFRpY2tldChcbiAgICB0aWNrZXRJZCxcbiAgICBvcmRlcklkLFxuICAgIG93bmVySWQsXG4gICAgb3BlblxuICApO1xuICBjb25zdCBpc1VzZXJPcmRlck93bmVyID0gdGlja2V0Py5vcmRlcj8ub3duZXJfaWQgPT09IHVzZXJQcm9maWxlPy5pZDtcbiAgY29uc3QgaXNVc2VyVGlja2V0T3duZXIgPSB0aWNrZXQ/Lm93bmVyPy5lbWFpbCA9PT0gdXNlclByb2ZpbGU/LmVtYWlsO1xuICBjb25zdCBjYW5FZGl0VGlja2V0RGF0YSA9XG4gICAgKGlzVXNlclRpY2tldE93bmVyIHx8IGlzVXNlck9yZGVyT3duZXIpICYmXG4gICAgc3VtbWl0LmFsbG93X3VwZGF0ZV9hdHRlbmRlZV9leHRyYV9xdWVzdGlvbnM7XG5cbiAgY29uc3Qgb25TYXZlID0gKHZhbCkgPT4ge1xuICAgIGNvbnN0IGFuc3dlcnMgPSB0cmFuc2Zvcm1BbndlcnNGb3JtYXQodmFsKTtcblxuICAgIHJldHVybiBkaXNwYXRjaChzYXZlVGlja2V0RGV0YWlscyh0aWNrZXQsIGFuc3dlcnMpKVxuICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICBvbkNsb3NlKCk7XG4gICAgICAgIHN1Y2Nlc3NNZXNzYWdlKHQoXCJ0aWNrZXRfZGV0YWlsLnNhdmluZ19zdWNjZXNzXCIpKTtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoKSA9PiB7XG4gICAgICAgIGVycm9yTWVzc2FnZSh0KFwidGlja2V0X2RldGFpbC5zYXZpbmdfZXJyb3JcIikpO1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoKTtcbiAgICAgIH0pO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPFJpZ2h0RHJhd2VyXG4gICAgICBpZD17VElDS0VUX0RSQVdFUl9JRH1cbiAgICAgIG9wZW49e29wZW59XG4gICAgICBvbkNsb3NlPXtvbkNsb3NlfVxuICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0RGV0YWlsQ29udGFpbmVyfVxuICAgICAgaGVhZGVyQ2hpbGRyZW49e1xuICAgICAgICA8VGlja2V0RGV0YWlsSGVhZGVyXG4gICAgICAgICAgdGlja2V0PXt0aWNrZXR9XG4gICAgICAgICAgaXNWaXJ0dWFsU3VtbWl0PXtzdW1taXQ/LmlzX3ZpcnR1YWx9XG4gICAgICAgIC8+XG4gICAgICB9XG4gICAgPlxuICAgICAge3RpY2tldCAmJiBleHRyYVF1ZXN0aW9ucyAmJiAoXG4gICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuYXR0ZW5kZWVDb250YWluZXJ9PlxuICAgICAgICAgICAgPFR5cG9ncmFwaHlcbiAgICAgICAgICAgICAgdmFyaWFudD1cImg0XCJcbiAgICAgICAgICAgICAgZ3V0dGVyQm90dG9tXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmF0dGVuZGVlSW5mb1RpdGxlfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7dChcInRpY2tldF9kZXRhaWwuYXR0ZW5kZWVfaW5mb3JtYXRpb25cIil9XG4gICAgICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICAgICAgICB7dGlja2V0ICYmIChcbiAgICAgICAgICAgICAgPFRpY2tldEZvcm1cbiAgICAgICAgICAgICAgICB0aWNrZXQ9e3RpY2tldH1cbiAgICAgICAgICAgICAgICBleHRyYVF1ZXN0aW9ucz17ZXh0cmFRdWVzdGlvbnN9XG4gICAgICAgICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgICAgICAgY2FuRWRpdD17Y2FuRWRpdFRpY2tldERhdGF9XG4gICAgICAgICAgICAgICAgb25TdWJtaXQ9e29uU2F2ZX1cbiAgICAgICAgICAgICAgICBvbkNsb3NlPXtvbkNsb3NlfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L0JveD5cbiAgICAgICl9XG4gICAgPC9SaWdodERyYXdlcj5cbiAgKTtcbn07XG5cblRpY2tldERldGFpbC5wcm9wVHlwZXMgPSB7XG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdCxcbiAgdGlja2V0SWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gIG9yZGVySWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gIG93bmVySWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gIG9uQ2xvc2U6IFByb3BUeXBlcy5mdW5jLFxuICBvcGVuOiBQcm9wVHlwZXMuYm9vbFxufTtcblxuZXhwb3J0IGRlZmF1bHQgVGlja2V0RGV0YWlsO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQ29udGFpbmVyLCBCdXR0b24gfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlVGlja2V0RGV0YWlscyB9IGZyb20gXCIuLi8uLi9ob29rcy91c2VUaWNrZXREZXRhaWxzXCI7XG5cbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgVGlja2V0U3RhdHVzID0gKHsgdGlja2V0IH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBpc0FjdGl2ZSA9IHRpY2tldC5pc19hY3RpdmU7XG4gIGNvbnN0IHJlZnVuZFJlcXVlc3RzID0gdGlja2V0LnJlZnVuZF9yZXF1ZXN0cz8uZmluZChcbiAgICAocikgPT4gci5zdGF0dXMgPT09IFwiUmVxdWVzdGVkXCJcbiAgKTtcbiAgY29uc3QgeyBpc0luY29tcGxldGUsIGlzVW5hc3NpZ25lZCwgaXNDb21wbGV0ZSB9ID0gdXNlVGlja2V0RGV0YWlscyh0aWNrZXQpO1xuXG4gIHJldHVybiAoXG4gICAgPENvbnRhaW5lciBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRTdGF0dXNDb250YWluZXJ9PlxuICAgICAge2lzQWN0aXZlID8gKFxuICAgICAgICA8PlxuICAgICAgICAgIHshIXJlZnVuZFJlcXVlc3RzICYmIChcbiAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJ0aWNrZXQgc3RhdHVzIHJlZnVuZCByZXF1ZXN0ZWRcIlxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5idXR0b25QaWxsfSAke3N0eWxlcy5idXR0b25SZWZ1bmRSZXF1ZXN0ZWR9YH1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnN0YXR1c19yZWZ1bmRfcmVxdWVzdGVkXCIpfVxuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgKX1cbiAgICAgICAgICB7aXNJbmNvbXBsZXRlICYmIChcbiAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJ0aWNrZXQgc3RhdHVzIGluY29tcGxldGVcIlxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5idXR0b25QaWxsfSAke3N0eWxlcy5idXR0b25JbmNvbXBsZXRlfWB9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5zdGF0dXNfaW5jb21wbGV0ZVwiKX1cbiAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICl9XG4gICAgICAgICAge2lzVW5hc3NpZ25lZCAmJiAoXG4gICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwidGlja2V0IHN0YXR1cyB1bmFzc2lnbmVkXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuYnV0dG9uUGlsbH0gJHtzdHlsZXMuYnV0dG9uVW5hc3NpZ25lZH1gfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMuc3RhdHVzX3VuYXNzaWduZWRcIil9XG4gICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICApfVxuICAgICAgICAgIHtpc0NvbXBsZXRlICYmIChcbiAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJ0aWNrZXQgc3RhdHVzIGNvbXBsZXRlXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuYnV0dG9uUGlsbH0gJHtzdHlsZXMuYnV0dG9uQ29tcGxldGV9YH1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnN0YXR1c19jb21wbGV0ZVwiKX1cbiAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvPlxuICAgICAgKSA6IChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJ0aWNrZXQgc3RhdHVzIGNhbmNlbGxlZFwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuYnV0dG9uUGlsbH0gJHtzdHlsZXMuYnV0dG9uQ2FuY2VsbGVkfWB9XG4gICAgICAgID5cbiAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMuc3RhdHVzX2NhbmNlbGxlZFwiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICApfVxuICAgIDwvQ29udGFpbmVyPlxuICApO1xufTtcblxuVGlja2V0U3RhdHVzLnByb3BUeXBlcyA9IHtcbiAgdGlja2V0OiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIG93bmVyOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgICAgc3RhdHVzOiBQcm9wVHlwZXMuc3RyaW5nXG4gICAgfSksXG4gICAgcmVmdW5kUmVxdWVzdHM6IFByb3BUeXBlcy5hcnJheU9mKE9iamVjdClcbiAgfSlcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFRpY2tldFN0YXR1cztcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCwgdXNlU2VsZWN0b3IgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7XG4gIEJveCxcbiAgRGl2aWRlcixcbiAgVGFiLFxuICBUYWJzLFxuICB1c2VNZWRpYVF1ZXJ5LFxuICB1c2VUaGVtZVxufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgc3RvcExvYWRpbmcgfSBmcm9tIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9hY3Rpb25zXCI7XG5pbXBvcnQge1xuICBERUZBVUxUX0lURU1TX1BFUl9QQUdFLFxuICBGSVJTVF9QQUdFLFxuICBUQUJTXG59IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCBNeU9yZGVyc1RpY2tldHMgZnJvbSBcIi4uL015T3JkZXJzVGlja2V0c1wiO1xuaW1wb3J0IEFzc2lnbmVkVG9NZSBmcm9tIFwiLi4vT3JkZXJzTGlzdC9Bc3NpZ25lZFRvTWVcIjtcbmltcG9ydCB7XG4gIGdldFRpY2tldHNCeU9yZGVyLFxuICBnZXRVc2VyT3JkZXJzLFxuICBnZXRVc2VyVGlja2V0c1xufSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuaW1wb3J0IFRhYldyYXBwZXIgZnJvbSBcIi4uL1RhYldyYXBwZXJcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgV2lkZ2V0VGFicyA9ICgpID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBbdGFiLCBzZXRUYWJdID0gdXNlU3RhdGUoVEFCUy5PUkRFUlMpO1xuICBjb25zdCBbdGlja2V0c0Z1bGx5TG9hZGVkLCBzZXRUaWNrZXRzRnVsbHlMb2FkZWRdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG4gIGNvbnN0IHtcbiAgICBmaWx0ZXIsXG4gICAgc29ydCxcbiAgICBvcmRlcnNfcGVyX3BhZ2U6IG9yZGVyc1BlclBhZ2UsXG4gICAgdGlja2V0X3Blcl9wYWdlOiB0aWNrZXRQZXJQYWdlLFxuICAgIHVzZXJUaWNrZXRzLFxuICAgIG1lbWJlck9yZGVyc1xuICB9ID0gdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSk7XG4gIGNvbnN0IHRoZW1lID0gdXNlVGhlbWUoKTtcbiAgY29uc3QgaXNNb2JpbGUgPSB1c2VNZWRpYVF1ZXJ5KHRoZW1lLmJyZWFrcG9pbnRzLmRvd24oXCJsZ1wiKSk7XG5cbiAgY29uc3QgaGFuZGxlVGFiQ2hhbmdlID0gKGV2LCBuZXdUYWIpID0+IHtcbiAgICBzZXRUYWIobmV3VGFiKTtcbiAgfTtcblxuICBjb25zdCBmZXRjaEFzc2lnbmVkVGlja2V0cyA9IChwYWdlLCBza2lwTG9hZGluZyA9IGZhbHNlKSA9PlxuICAgIGRpc3BhdGNoKFxuICAgICAgZ2V0VXNlclRpY2tldHMoXG4gICAgICAgIHtcbiAgICAgICAgICBwYWdlLFxuICAgICAgICAgIHBlclBhZ2U6IERFRkFVTFRfSVRFTVNfUEVSX1BBR0UsXG4gICAgICAgICAgZmlsdGVyLFxuICAgICAgICAgIHNvcnRcbiAgICAgICAgfSxcbiAgICAgICAgc2tpcExvYWRpbmdcbiAgICAgIClcbiAgICApO1xuXG4gIGNvbnN0IGZldGNoT3JkZXJUaWNrZXRzID0gKHBhZ2UsIHNraXBMb2FkaW5nID0gZmFsc2UpID0+XG4gICAgZGlzcGF0Y2goXG4gICAgICBnZXRVc2VyT3JkZXJzKFxuICAgICAgICB7XG4gICAgICAgICAgcGFnZSxcbiAgICAgICAgICBwZXJQYWdlOiBvcmRlcnNQZXJQYWdlLFxuICAgICAgICAgIGZpbHRlcixcbiAgICAgICAgICBzb3J0XG4gICAgICAgIH0sXG4gICAgICAgIHNraXBMb2FkaW5nXG4gICAgICApXG4gICAgKS50aGVuKChwYXlsb2FkKSA9PiB7XG4gICAgICBjb25zdCB7IGRhdGEgfSA9IHBheWxvYWQucmVzcG9uc2U7XG4gICAgICBjb25zdCBvcmRlclRpY2tldHNQcm9taXNlcyA9IGRhdGEubWFwKChvcmRlcikgPT5cbiAgICAgICAgZGlzcGF0Y2goXG4gICAgICAgICAgZ2V0VGlja2V0c0J5T3JkZXIoe1xuICAgICAgICAgICAgb3JkZXJJZDogb3JkZXIuaWQsXG4gICAgICAgICAgICBjdXJyZW50X3BhZ2U6IEZJUlNUX1BBR0UsXG4gICAgICAgICAgICBwZXJQYWdlOiB0aWNrZXRQZXJQYWdlLFxuICAgICAgICAgICAgZmlsdGVyLFxuICAgICAgICAgICAgc29ydFxuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgICk7XG5cbiAgICAgIHJldHVybiBQcm9taXNlLmFsbChvcmRlclRpY2tldHNQcm9taXNlcyk7XG4gICAgfSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBmZXRjaFByb21pc2VzID0gW1xuICAgICAgZmV0Y2hBc3NpZ25lZFRpY2tldHMoRklSU1RfUEFHRSwgdHJ1ZSksXG4gICAgICBmZXRjaE9yZGVyVGlja2V0cyhGSVJTVF9QQUdFLCB0cnVlKVxuICAgIF07XG4gICAgUHJvbWlzZS5hbGwoZmV0Y2hQcm9taXNlcylcbiAgICAgIC50aGVuKCgpID0+IHNldFRpY2tldHNGdWxseUxvYWRlZCh0cnVlKSlcbiAgICAgIC5maW5hbGx5KCgpID0+IGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpKTtcbiAgfSwgW2ZpbHRlciwgc29ydF0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHRpY2tldHNGdWxseUxvYWRlZCkge1xuICAgICAgaWYgKG1lbWJlck9yZGVycz8ubGVuZ3RoID09PSAwICYmIHVzZXJUaWNrZXRzPy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHNldFRhYihUQUJTLlRJQ0tFVFMpO1xuICAgICAgfVxuICAgIH1cbiAgfSwgW3RpY2tldHNGdWxseUxvYWRlZF0pO1xuXG4gIHJldHVybiAoXG4gICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy50YWJXcmFwcGVyfT5cbiAgICAgIDxUYWJzXG4gICAgICAgIHZhbHVlPXt0YWJ9XG4gICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVUYWJDaGFuZ2V9XG4gICAgICAgIHZhcmlhbnQ9e2lzTW9iaWxlID8gXCJmdWxsV2lkdGhcIiA6IFwic3RhbmRhcmRcIn1cbiAgICAgID5cbiAgICAgICAgPFRhYiBsYWJlbD17dChcIm9yZGVycy50aXRsZVwiKX0gdmFsdWU9e1RBQlMuT1JERVJTfSAvPlxuICAgICAgICA8VGFiIGxhYmVsPXt0KFwibGFiZWxzLmFzc2lnbmVkX3RvX21lXCIpfSB2YWx1ZT17VEFCUy5USUNLRVRTfSAvPlxuICAgICAgPC9UYWJzPlxuICAgICAgPERpdmlkZXIgLz5cblxuICAgICAge3RhYiA9PT0gVEFCUy5PUkRFUlMgJiYgKFxuICAgICAgICA8VGFiV3JhcHBlciB0YWI9e1RBQlMuT1JERVJTfSBzZXRUYWI9e3NldFRhYn0+XG4gICAgICAgICAgPE15T3JkZXJzVGlja2V0cyBmZXRjaERhdGE9e2ZldGNoT3JkZXJUaWNrZXRzfSAvPlxuICAgICAgICA8L1RhYldyYXBwZXI+XG4gICAgICApfVxuICAgICAge3RhYiA9PT0gVEFCUy5USUNLRVRTICYmIChcbiAgICAgICAgPFRhYldyYXBwZXIgdGFiPXtUQUJTLlRJQ0tFVFN9IHNldFRhYj17c2V0VGFifT5cbiAgICAgICAgICA8QXNzaWduZWRUb01lIGZldGNoRGF0YT17ZmV0Y2hBc3NpZ25lZFRpY2tldHN9IC8+XG4gICAgICAgIDwvVGFiV3JhcHBlcj5cbiAgICAgICl9XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBXaWRnZXRUYWJzO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cbmltcG9ydCBSZWFjdCwgeyB1c2VNZW1vLCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2gsIHVzZVNlbGVjdG9yLCBzaGFsbG93RXF1YWwsIGNvbm5lY3QgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7IEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyByZXNldEZpbHRlciwgY2hhbmdlU29ydCwgY2hhbmdlRmlsdGVyIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcbmltcG9ydCBDdXN0b21UaGVtZSBmcm9tIFwiLi4vQ3VzdG9tVGhlbWVcIjtcbmltcG9ydCBMb2FkZXIgZnJvbSBcIi4uL0xvYWRlclwiO1xuaW1wb3J0IEZpbHRlcnMgZnJvbSBcIi4uL0ZpbHRlcnNcIjtcbmltcG9ydCBXaWRnZXRUYWJzIGZyb20gXCIuLi9XaWRnZXRUYWJzXCI7XG5pbXBvcnQgQ3VzdG9tTm90aWZpY2F0aW9uQ29udGV4dCBmcm9tIFwiLi4vQ3VzdG9tTm90aWZpY2F0aW9uL0NvbnRleHRcIjtcbmltcG9ydCBDdXN0b21Ob3RpZmljYXRpb24gZnJvbSBcIi4uL0N1c3RvbU5vdGlmaWNhdGlvblwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBXaWRnZXRXcmFwcGVyID0gKCkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcbiAgY29uc3QgW21zZ0RhdGEsIHNldE1zZ0RhdGFdID0gdXNlU3RhdGUoXCJcIik7XG4gIGNvbnN0IHtcbiAgICBsb2FkaW5nLFxuICAgIGZpbHRlcjogeyBGSUxURVJfVkFSX09SREVSX05VTUJFUjogZmlsdGVyVmFsdWVzIH1cbiAgfSA9IHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUgfHwge30sIHNoYWxsb3dFcXVhbCk7XG5cbiAgY29uc3Qgc3VjY2Vzc01lc3NhZ2UgPSAobXNnKSA9PlxuICAgIHNldE1zZ0RhdGEoeyBtZXNzYWdlOiBtc2csIHNldmVyaXR5OiBcInN1Y2Nlc3NcIiB9KTtcbiAgY29uc3QgZXJyb3JNZXNzYWdlID0gKG1zZykgPT4gc2V0TXNnRGF0YSh7IG1lc3NhZ2U6IG1zZywgc2V2ZXJpdHk6IFwiZXJyb3JcIiB9KTtcbiAgY29uc3QgbWVzc2FnZUNvbnRleHQgPSB1c2VNZW1vKCgpID0+ICh7IHN1Y2Nlc3NNZXNzYWdlLCBlcnJvck1lc3NhZ2UgfSksIFtdKTtcblxuICBjb25zdCBvblJlc2V0ID0gKCkgPT4ge1xuICAgIGRpc3BhdGNoKHJlc2V0RmlsdGVyKCkpO1xuICB9O1xuXG4gIGNvbnN0IG9uRmlsdGVyID0gKGZpbHRlclZhbHVlKSA9PiB7XG4gICAgZGlzcGF0Y2goY2hhbmdlRmlsdGVyKGZpbHRlclZhbHVlKSk7XG4gIH07XG5cbiAgY29uc3Qgb25Tb3J0ID0gKHNvcnRWYWx1ZSkgPT4ge1xuICAgIGRpc3BhdGNoKGNoYW5nZVNvcnQoc29ydFZhbHVlKSk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8Q3VzdG9tVGhlbWU+XG4gICAgICA8TG9hZGVyIG9wZW49e2xvYWRpbmd9IC8+XG4gICAgICA8Q3VzdG9tTm90aWZpY2F0aW9uXG4gICAgICAgIG9wZW49eyEhbXNnRGF0YX1cbiAgICAgICAgb25DbG9zZT17KCkgPT4gc2V0TXNnRGF0YShudWxsKX1cbiAgICAgICAgbWVzc2FnZT17bXNnRGF0YT8ubWVzc2FnZX1cbiAgICAgICAgc2V2ZXJpdHk9e21zZ0RhdGE/LnNldmVyaXR5fVxuICAgICAgLz5cbiAgICAgIDxGaWx0ZXJzXG4gICAgICAgIG9uRmlsdGVyPXtvbkZpbHRlcn1cbiAgICAgICAgb25Tb3J0PXtvblNvcnR9XG4gICAgICAgIG9uU2VhcmNoPXtvbkZpbHRlcn1cbiAgICAgICAgb25SZXNldD17b25SZXNldH1cbiAgICAgIC8+XG4gICAgICA8Qm94IHN4PXt7IHBhZGRpbmc6IHsgeHM6IDIsIG1kOiAwLCBsZzogMCB9IH19PlxuICAgICAgICA8aDMgY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0c1RpdGxlVGV4dH0+XG4gICAgICAgICAge2ZpbHRlclZhbHVlc1xuICAgICAgICAgICAgPyB0KFwibGFiZWxzLnNlYXJjaF9yZXN1bHRzXCIsIHsgZmlsdGVyOiBmaWx0ZXJWYWx1ZXMgfSlcbiAgICAgICAgICAgIDogdChcImxhYmVscy50aWNrZXRzXCIpfVxuICAgICAgICA8L2gzPlxuICAgICAgPC9Cb3g+XG4gICAgICA8Q3VzdG9tTm90aWZpY2F0aW9uQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17bWVzc2FnZUNvbnRleHR9PlxuICAgICAgICA8V2lkZ2V0VGFicyAvPlxuICAgICAgPC9DdXN0b21Ob3RpZmljYXRpb25Db250ZXh0LlByb3ZpZGVyPlxuICAgIDwvQ3VzdG9tVGhlbWU+XG4gICk7XG59O1xuXG5jb25zdCBtYXBTdGF0ZVRvUHJvcHMgPSAoeyB3aWRnZXRTdGF0ZSB9KSA9PiAoe1xuICBzb3J0OiB3aWRnZXRTdGF0ZS5zb3J0LFxuICBmaWx0ZXI6IHdpZGdldFN0YXRlLmZpbHRlclxufSk7XG5cbmV4cG9ydCBkZWZhdWx0IGNvbm5lY3QobWFwU3RhdGVUb1Byb3BzLCB7fSkoV2lkZ2V0V3JhcHBlcik7XG4iLCJpbXBvcnQgeyB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoLCB1c2VTZWxlY3RvciB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgZ2V0RXh0cmFRdWVzdGlvbnMsIGdldFRpY2tldCB9IGZyb20gXCIuLi9hY3Rpb25zXCI7XG5cbmNvbnN0IHVzZUdldFRpY2tldCA9ICh0aWNrZXRJZCwgb3JkZXJJZCwgb3duZXJJZCwgcnVuKSA9PiB7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChydW4pIHtcbiAgICAgIGlmICh0aWNrZXRJZCAmJiBvcmRlcklkKSB7XG4gICAgICAgIGRpc3BhdGNoKGdldFRpY2tldCh0aWNrZXRJZCwgb3JkZXJJZCkpO1xuICAgICAgfVxuXG4gICAgICBpZiAob3duZXJJZCkge1xuICAgICAgICBkaXNwYXRjaChnZXRFeHRyYVF1ZXN0aW9ucyhvd25lcklkKSk7XG4gICAgICB9XG4gICAgfVxuICB9LCBbdGlja2V0SWQsIG9yZGVySWQsIG93bmVySWQsIHJ1bl0pO1xuXG4gIGNvbnN0IHsgZXh0cmFRdWVzdGlvbnMsIGN1cnJlbnRUaWNrZXQ6IHRpY2tldCB9ID0gdXNlU2VsZWN0b3IoXG4gICAgKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZVxuICApO1xuXG4gIHJldHVybiB7IHRpY2tldCwgZXh0cmFRdWVzdGlvbnMgfTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IHVzZUdldFRpY2tldDtcbiIsImltcG9ydCB7IHVzZUVmZmVjdCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgVElDS0VUX0RSQVdFUl9JRCB9IGZyb20gXCIuLi91dGlscy9jb25zdGFudHNcIjtcblxuLy8gU21vb3RoIHNjcm9sbGluZyBmdW5jdGlvbiB1c2luZyByZXF1ZXN0QW5pbWF0aW9uRnJhbWVcbmZ1bmN0aW9uIHNtb290aFNjcm9sbFRvKGNvbnRhaW5lciwgdGFyZ2V0U2Nyb2xsVG9wLCBkdXJhdGlvbikge1xuICBjb25zdCBzdGFydFNjcm9sbFRvcCA9IGNvbnRhaW5lci5zY3JvbGxUb3A7XG4gIGNvbnN0IGRpc3RhbmNlID0gdGFyZ2V0U2Nyb2xsVG9wIC0gc3RhcnRTY3JvbGxUb3A7XG4gIGxldCBzdGFydFRpbWUgPSBudWxsO1xuXG4gIGZ1bmN0aW9uIGFuaW1hdGlvblN0ZXAodGltZXN0YW1wKSB7XG4gICAgaWYgKCFzdGFydFRpbWUpIHN0YXJ0VGltZSA9IHRpbWVzdGFtcDtcbiAgICBjb25zdCBlbGFwc2VkID0gdGltZXN0YW1wIC0gc3RhcnRUaW1lO1xuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW1hZ2ljLW51bWJlcnNcbiAgICBjb25zdCBwcm9ncmVzcyA9IE1hdGgubWluKGVsYXBzZWQgLyBkdXJhdGlvbiwgMSk7XG4gICAgY29uc3QgZWFzZUluT3V0UXVhZCA9XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbWFnaWMtbnVtYmVyc1xuICAgICAgcHJvZ3Jlc3MgPCAwLjUgPyAyICogcHJvZ3Jlc3MgKiogMiA6IDEgLSAoLTIgKiBwcm9ncmVzcyArIDIpICoqIDIgLyAyO1xuXG4gICAgY29udGFpbmVyLnNjcm9sbFRvcCA9IHN0YXJ0U2Nyb2xsVG9wICsgZGlzdGFuY2UgKiBlYXNlSW5PdXRRdWFkO1xuXG4gICAgaWYgKGVsYXBzZWQgPCBkdXJhdGlvbikge1xuICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGFuaW1hdGlvblN0ZXApO1xuICAgIH1cbiAgfVxuXG4gIHJlcXVlc3RBbmltYXRpb25GcmFtZShhbmltYXRpb25TdGVwKTtcbn1cblxuY29uc3QgdXNlU2Nyb2xsVG9FcnJvciA9IChmb3JtaWspID0+IHtcbiAgY29uc3QgeyBlcnJvcnMsIGlzVmFsaWQsIGlzU3VibWl0dGluZyB9ID0gZm9ybWlrO1xuICBjb25zdCBlcnJvckFycmF5ID0gT2JqZWN0LmtleXMoZXJyb3JzKTtcbiAgY29uc3QgZXJyb3JDb3VudCA9IGVycm9yQXJyYXkubGVuZ3RoO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGlzVmFsaWQgfHwgZXJyb3JDb3VudCA9PT0gMCkgcmV0dXJuO1xuXG4gICAgLy8gc29ydCBlbGVtZW50cyBieSBwb3NpdGlvblxuICAgIGNvbnN0IGVsZW1lbnRzU29ydGVkID0gZXJyb3JBcnJheVxuICAgICAgLnJlZHVjZSgocmVzdWx0LCBlcnJvcikgPT4ge1xuICAgICAgICBjb25zdCBlbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgW25hbWU9JyR7ZXJyb3J9J11gKTtcbiAgICAgICAgaWYgKCFlbGVtZW50KSByZXR1cm4gcmVzdWx0O1xuXG4gICAgICAgIGNvbnN0IGVsUmVjdCA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIHJlc3VsdC5wdXNoKHsgZWxlbWVudCwgZXJyb3IsIHRvcDogZWxSZWN0LnRvcCB9KTtcblxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfSwgW10pXG4gICAgICAuc29ydCgoYSwgYikgPT4gYS50b3AgLSBiLnRvcCk7XG5cbiAgICBpZiAoZWxlbWVudHNTb3J0ZWQubGVuZ3RoID09PSAwKSByZXR1cm47XG5cbiAgICBjb25zdCBjb250YWluZXIgPSBkb2N1bWVudFxuICAgICAgLmdldEVsZW1lbnRCeUlkKFRJQ0tFVF9EUkFXRVJfSUQpXG4gICAgICAucXVlcnlTZWxlY3RvcihcIi5NdWlEcmF3ZXItcGFwZXJcIik7XG4gICAgY29uc3QgdGFyZ2V0ID0gZWxlbWVudHNTb3J0ZWRbMF07XG5cbiAgICBpZiAoY29udGFpbmVyPy5jb250YWlucyh0YXJnZXQuZWxlbWVudCkpIHtcbiAgICAgIGNvbnN0IGNvbnRhaW5lclJlY3QgPSBjb250YWluZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICAgIC8vIENhbGN1bGF0ZSB0aGUgb2Zmc2V0IG9mIHRoZSB0YXJnZXQgZWxlbWVudCByZWxhdGl2ZSB0byB0aGUgY29udGFpbmVyXG4gICAgICBjb25zdCBlbGVtT2ZmZXN0ID0gMTAwO1xuICAgICAgY29uc3QgYW5pbWF0aW9uRHVyYXRpb24gPSA1MDA7XG4gICAgICBjb25zdCBzY3JvbGxUb3AgPVxuICAgICAgICB0YXJnZXQudG9wIC0gY29udGFpbmVyUmVjdC50b3AgKyBjb250YWluZXIuc2Nyb2xsVG9wIC0gZWxlbU9mZmVzdDtcblxuICAgICAgLy8gU2Nyb2xsIHRoZSBjb250YWluZXIgdG8gdGhlIHRhcmdldCBlbGVtZW50J3MgcG9zaXRpb25cbiAgICAgIHNtb290aFNjcm9sbFRvKGNvbnRhaW5lciwgc2Nyb2xsVG9wLCBhbmltYXRpb25EdXJhdGlvbik7IC8vIDUwMG1zIGR1cmF0aW9uXG4gICAgfVxuICB9LCBbaXNTdWJtaXR0aW5nXSk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCB1c2VTY3JvbGxUb0Vycm9yO1xuIiwiaW1wb3J0IHsgaXNUaWNrZXRSZWZ1bmRhYmxlIH0gZnJvbSBcIi4uL3V0aWxzL3RpY2tldFV0aWxzXCI7XG5cbmV4cG9ydCBjb25zdCBTVEFUVVNfQ09NUExFVEUgPSBcIkNvbXBsZXRlXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX0lOQ09NUExFVEUgPSBcIkluY29tcGxldGVcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfQ0FOQ0VMTEVEID0gXCJDYW5jZWxsZWRcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfVU5BU1NJR05FRCA9IFwiVW5hc3NpZ25lZFwiO1xuXG5leHBvcnQgY29uc3QgdXNlVGlja2V0RGV0YWlscyA9ICh0aWNrZXQpID0+IHtcbiAgY29uc3QgZ2V0U3RhdHVzID0gKCkgPT4ge1xuICAgIGlmICghdGlja2V0LmlzX2FjdGl2ZSkgcmV0dXJuIFNUQVRVU19DQU5DRUxMRUQ7XG4gICAgaWYgKHRpY2tldC5vd25lcl9pZCA9PT0gMCkgcmV0dXJuIFNUQVRVU19VTkFTU0lHTkVEO1xuICAgIGlmICghdGlja2V0Lm93bmVyPy5maXJzdF9uYW1lIHx8ICF0aWNrZXQub3duZXI/Lmxhc3RfbmFtZSlcbiAgICAgIHJldHVybiBTVEFUVVNfSU5DT01QTEVURTtcbiAgICByZXR1cm4gdGlja2V0Lm93bmVyLnN0YXR1cztcbiAgfTtcblxuICBpZiAoIXRpY2tldCkgcmV0dXJuIHt9O1xuXG4gIGNvbnN0IHN0YXR1cyA9IGdldFN0YXR1cygpO1xuICBjb25zdCBpc0FjdGl2ZSA9IHRpY2tldC5pc19hY3RpdmUgJiYgc3RhdHVzICE9PSBTVEFUVVNfQ0FOQ0VMTEVEO1xuICBjb25zdCBpc1JlZnVuZGFibGUgPSBpc1RpY2tldFJlZnVuZGFibGUodGlja2V0KTtcbiAgY29uc3QgYWxsb3dzRGVsZWdhdGUgPVxuICAgIHRpY2tldD8udGlja2V0X3R5cGU/LmFsbG93c190b19kZWxlZ2F0ZSB8fFxuICAgIHRpY2tldD8ucHJvbW9fY29kZT8uYWxsb3dzX3RvX2RlbGVnYXRlO1xuICBjb25zdCBpc0NvbXBsZXRlID0gc3RhdHVzID09PSBTVEFUVVNfQ09NUExFVEU7XG4gIGNvbnN0IGlzVW5hc3NpZ25lZCA9IHN0YXR1cyA9PT0gU1RBVFVTX1VOQVNTSUdORUQ7XG4gIGNvbnN0IGlzSW5jb21wbGV0ZSA9IHN0YXR1cyA9PT0gU1RBVFVTX0lOQ09NUExFVEU7XG4gIGNvbnN0IGNhblJlYXNzaWduID1cbiAgICAhaXNVbmFzc2lnbmVkICYmXG4gICAgdGlja2V0LnRpY2tldF90eXBlPy5hbGxvd3NfdG9fcmVhc3NpZ24gJiZcbiAgICAoIXRpY2tldC5wcm9tb19jb2RlIHx8IHRpY2tldC5wcm9tb19jb2RlPy5hbGxvd3NfdG9fcmVhc3NpZ24pO1xuXG4gIHJldHVybiB7XG4gICAgc3RhdHVzLFxuICAgIGlzQ29tcGxldGUsXG4gICAgaXNVbmFzc2lnbmVkLFxuICAgIGlzSW5jb21wbGV0ZSxcbiAgICBpc0FjdGl2ZSxcbiAgICBpc1JlZnVuZGFibGUsXG4gICAgYWxsb3dzRGVsZWdhdGUsXG4gICAgY2FuUmVhc3NpZ25cbiAgfTtcbn07XG4iLCJpbXBvcnQgaTE4biBmcm9tIFwiaTE4bmV4dFwiO1xuaW1wb3J0IHsgaW5pdFJlYWN0STE4bmV4dCB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgTGFuZ3VhZ2VEZXRlY3RvciBmcm9tIFwiaTE4bmV4dC1icm93c2VyLWxhbmd1YWdlZGV0ZWN0b3JcIjtcbmltcG9ydCBlbiBmcm9tIFwiLi9sb2NhbGVzL2VuLmpzb25cIjtcbmltcG9ydCBlcyBmcm9tIFwiLi9sb2NhbGVzL2VzLmpzb25cIjtcblxuLy8gaW1wb3J0IEJhY2tlbmQgZnJvbSAnaTE4bmV4dC1odHRwLWJhY2tlbmQnO1xuLy8gZG9uJ3Qgd2FudCB0byB1c2UgdGhpcz9cbi8vIGhhdmUgYSBsb29rIGF0IHRoZSBRdWljayBzdGFydCBndWlkZVxuLy8gZm9yIHBhc3NpbmcgaW4gbG5nIGFuZCB0cmFuc2xhdGlvbnMgb24gaW5pdFxuXG5pMThuXG4gIC8vIGxvYWQgdHJhbnNsYXRpb24gdXNpbmcgaHR0cCAtPiBzZWUgL3B1YmxpYy9sb2NhbGVzIChpLmUuIGh0dHBzOi8vZ2l0aHViLmNvbS9pMThuZXh0L3JlYWN0LWkxOG5leHQvdHJlZS9tYXN0ZXIvZXhhbXBsZS9yZWFjdC9wdWJsaWMvbG9jYWxlcylcbiAgLy8gbGVhcm4gbW9yZTogaHR0cHM6Ly9naXRodWIuY29tL2kxOG5leHQvaTE4bmV4dC1odHRwLWJhY2tlbmRcbiAgLy8gd2FudCB5b3VyIHRyYW5zbGF0aW9ucyB0byBiZSBsb2FkZWQgZnJvbSBhIHByb2Zlc3Npb25hbCBDRE4/ID0+IGh0dHBzOi8vZ2l0aHViLmNvbS9sb2NpemUvcmVhY3QtdHV0b3JpYWwjc3RlcC0yLS0tdXNlLXRoZS1sb2NpemUtY2RuXG4gIC8vIC51c2UoQmFja2VuZClcbiAgLy8gZGV0ZWN0IHVzZXIgbGFuZ3VhZ2VcbiAgLy8gbGVhcm4gbW9yZTogaHR0cHM6Ly9naXRodWIuY29tL2kxOG5leHQvaTE4bmV4dC1icm93c2VyLWxhbmd1YWdlRGV0ZWN0b3JcbiAgLnVzZShMYW5ndWFnZURldGVjdG9yKVxuICAvLyBwYXNzIHRoZSBpMThuIGluc3RhbmNlIHRvIHJlYWN0LWkxOG5leHQuXG4gIC51c2UoaW5pdFJlYWN0STE4bmV4dClcbiAgLy8gaW5pdCBpMThuZXh0XG4gIC8vIGZvciBhbGwgb3B0aW9ucyByZWFkOiBodHRwczovL3d3dy5pMThuZXh0LmNvbS9vdmVydmlldy9jb25maWd1cmF0aW9uLW9wdGlvbnNcbiAgLmluaXQoe1xuICAgIGZhbGxiYWNrTG5nOiBcImVuXCIsXG4gICAgZGVidWc6IGZhbHNlLFxuICAgIHJlc291cmNlczoge1xuICAgICAgZW46IHsgdHJhbnNsYXRpb246IGVuIH0sXG4gICAgICBlczogeyB0cmFuc2xhdGlvbjogZXMgfVxuICAgIH0sXG4gICAgaW50ZXJwb2xhdGlvbjoge1xuICAgICAgZXNjYXBlVmFsdWU6IGZhbHNlIC8vIG5vdCBuZWVkZWQgZm9yIHJlYWN0IGFzIGl0IGVzY2FwZXMgYnkgZGVmYXVsdFxuICAgIH1cbiAgfSk7XG5cbmV4cG9ydCBkZWZhdWx0IGkxOG47XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuaW1wb3J0IHsgTE9HT1VUX1VTRVIgfSBmcm9tIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9zZWN1cml0eS9hY3Rpb25zXCI7XG5pbXBvcnQge1xuICBTVEFSVF9MT0FESU5HLFxuICBTVE9QX0xPQURJTkcsXG4gIFJFU0VUX0xPQURJTkdcbn0gZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvYWN0aW9uc1wiO1xuaW1wb3J0IHtcbiAgUkVTRVRfU1RBVEUsXG4gIFJFU0VUX0ZJTFRFUixcbiAgU0VUX1NUQVRFLFxuICBTRVRfVVNFUixcbiAgR0VUX1VTRVJfT1JERVJTLFxuICBHRVRfTVlfQVNTSUdORURfVElDS0VUUyxcbiAgR0VUX1RJQ0tFVFNfQllfT1JERVIsXG4gIFVQREFURV9USUNLRVRTX1JFRlVORF9SRVFVRVNURUQsXG4gIFJFQ0VJVkVfVElDS0VULFxuICBSRUNFSVZFX0VYVFJBX1FVRVNUSU9OUyxcbiAgVVBEQVRFX1RJQ0tFVCxcbiAgQVNTSUdOX1RJQ0tFVCxcbiAgUkVTRVRfQVBJX0VSUk9SLFxuICBTRVRfQVBJX0VSUk9SLFxuICBSRVNFVF9USUNLRVQsXG4gIENIQU5HRV9GSUxURVIsXG4gIENIQU5HRV9TT1JULFxuICBGSUxURVJfVkFSX0JBREdFX0ZFQVRVUkUsXG4gIEZJTFRFUl9WQVJfT1JERVJfTlVNQkVSLFxuICBGSUxURVJfVkFSX0RBVEUsXG4gIEZJTFRFUl9WQVJfVElDS0VUX1RZUEUsXG4gIEZJTFRFUl9WQVJfRlJFRV9QQUlELFxuICBGSUxURVJfVkFSX09XTkVSX1NUQVRVUyxcbiAgRklMVEVSX1ZBUl9USUNLRVRfQVNTSUdORUQsXG4gIEZJTFRFUl9WQVJfUFJPTU9DT0RFLFxuICBERUxFR0FURV9USUNLRVQsXG4gIFJFTU9WRV9USUNLRVRfQVRURU5ERUVcbn0gZnJvbSBcIi4vYWN0aW9uc1wiO1xuaW1wb3J0IHsgRklSU1RfUEFHRSwgVEFCUyB9IGZyb20gXCIuL3V0aWxzL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgY2FsY3VsYXRlQWN0aXZlRmlsdGVycywgaGFzTG9hZGVkQWxsRGF0YSB9IGZyb20gXCIuL3V0aWxzXCI7XG5pbXBvcnQgeyB1cGRhdGVUaWNrZXRDb2xsZWN0aW9uIH0gZnJvbSBcIi4vdXRpbHMvdGlja2V0VXRpbHNcIjtcblxuY29uc3QgREVGQVVMVF9GSUxURVJfU1RBVEUgPSB7XG4gIFtGSUxURVJfVkFSX0JBREdFX0ZFQVRVUkVdOiBbXSxcbiAgW0ZJTFRFUl9WQVJfVElDS0VUX1RZUEVdOiBbXSxcbiAgW0ZJTFRFUl9WQVJfRlJFRV9QQUlEXTogXCJcIixcbiAgW0ZJTFRFUl9WQVJfT1dORVJfU1RBVFVTXTogXCJcIixcbiAgW0ZJTFRFUl9WQVJfVElDS0VUX0FTU0lHTkVEXTogXCJcIixcbiAgW0ZJTFRFUl9WQVJfUFJPTU9DT0RFXTogXCJcIixcbiAgW0ZJTFRFUl9WQVJfT1JERVJfTlVNQkVSXTogXCJcIixcbiAgW0ZJTFRFUl9WQVJfREFURV06IG51bGxcbn07XG5cbmNvbnN0IERFRkFVTFRfU1RBVEUgPSB7XG4gIHN1bW1pdDogbnVsbCxcbiAgdXNlcjoge30sXG4gIHdpZGdldExvYWRpbmc6IGZhbHNlLFxuICBtZW1iZXJPcmRlcnM6IFtdLFxuICB1c2VyVGlja2V0czogW10sXG4gIGV4dHJhUXVlc3Rpb25zOiBbXSxcbiAgY3VycmVudFRpY2tldDogbnVsbCxcbiAgZXJyb3JzOiB7fSxcbiAgbG9hZGluZzogZmFsc2UsXG4gIGN1cnJlbnRfdGFiOiBUQUJTLk9SREVSUyxcbiAgc29ydDoge30sXG4gIGZpbHRlcjogREVGQVVMVF9GSUxURVJfU1RBVEUsXG4gIGFjdGl2ZUZpbHRlcnNDb3VudDogMCxcbiAgb3JkZXJzX2N1cnJlbnRfcGFnZTogMCxcbiAgb3JkZXJzX2xhc3RfcGFnZTogMCxcbiAgb3JkZXJzX3Blcl9wYWdlOiA1LFxuICBvcmRlcnNfdG90YWw6IDAsXG4gIHRpY2tldF9jdXJyZW50X3BhZ2U6IDAsXG4gIHRpY2tldF9sYXN0X3BhZ2U6IDAsXG4gIHRpY2tldF9wZXJfcGFnZTogNSxcbiAgdGlja2V0X3RvdGFsOiAwLFxuICB1c2VyX3RpY2tldHNfdG90YWw6IDAsXG4gIHVzZXJfdGlja2V0c19jdXJyZW50X3BhZ2U6IDAsXG4gIHVzZXJfdGlja2V0c19sYXN0X3BhZ2U6IDAsXG4gIGFwaUVycm9yOiBudWxsXG59O1xuXG5jb25zdCBXaWRnZXRSZWR1Y2VyID0gKHN0YXRlID0gREVGQVVMVF9TVEFURSwgeyB0eXBlLCBwYXlsb2FkIH0gPSB7fSkgPT4ge1xuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlIExPR09VVF9VU0VSOlxuICAgIGNhc2UgUkVTRVRfU1RBVEU6XG4gICAgICByZXR1cm4gREVGQVVMVF9TVEFURTtcbiAgICBjYXNlIFNUQVJUX0xPQURJTkc6XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgbG9hZGluZzogdHJ1ZSB9O1xuICAgIGNhc2UgU1RPUF9MT0FESU5HOlxuICAgIGNhc2UgUkVTRVRfTE9BRElORzpcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBsb2FkaW5nOiBmYWxzZSB9O1xuICAgIGNhc2UgUkVTRVRfQVBJX0VSUk9SOlxuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIGFwaUVycm9yOiBudWxsIH07XG4gICAgY2FzZSBSRVNFVF9GSUxURVI6XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgZmlsdGVyOiBERUZBVUxUX0ZJTFRFUl9TVEFURSxcbiAgICAgICAgYWN0aXZlRmlsdGVyc0NvdW50OiAwLFxuICAgICAgICBzb3J0OiB7fSxcbiAgICAgICAgb3JkZXJzX2N1cnJlbnRfcGFnZTogMSxcbiAgICAgICAgb3JkZXJzX2xhc3RfcGFnZTogMSxcbiAgICAgICAgbG9hZGluZzogdHJ1ZVxuICAgICAgfTtcbiAgICBjYXNlIFNFVF9TVEFURTpcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCAuLi5wYXlsb2FkIH07XG4gICAgY2FzZSBTRVRfQVBJX0VSUk9SOiB7XG4gICAgICBjb25zdCB7IHRpdGxlLCBodG1sOiBib2R5IH0gPSBwYXlsb2FkO1xuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIGFwaUVycm9yOiB7IHRpdGxlLCBib2R5IH0gfTtcbiAgICB9XG4gICAgY2FzZSBTRVRfVVNFUjpcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCB1c2VyOiBwYXlsb2FkIH07XG4gICAgY2FzZSBDSEFOR0VfRklMVEVSOiB7XG4gICAgICBjb25zdCBuZXdGaWx0ZXJzID0geyAuLi5zdGF0ZS5maWx0ZXIsIC4uLnBheWxvYWQgfTtcbiAgICAgIGNvbnN0IG5ld0FjdGl2ZUNvdW50ID0gY2FsY3VsYXRlQWN0aXZlRmlsdGVycyhuZXdGaWx0ZXJzKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBmaWx0ZXI6IHsgLi4uc3RhdGUuZmlsdGVyLCAuLi5wYXlsb2FkIH0sXG4gICAgICAgIGFjdGl2ZUZpbHRlcnNDb3VudDogbmV3QWN0aXZlQ291bnRcbiAgICAgIH07XG4gICAgfVxuICAgIGNhc2UgQ0hBTkdFX1NPUlQ6IHtcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBzb3J0OiB7IC4uLnBheWxvYWQgfSB9O1xuICAgIH1cbiAgICBjYXNlIEdFVF9VU0VSX09SREVSUzoge1xuICAgICAgY29uc3QgeyBkYXRhLCB0b3RhbCwgY3VycmVudF9wYWdlLCBsYXN0X3BhZ2UgfSA9IHBheWxvYWQucmVzcG9uc2U7XG5cbiAgICAgIGlmIChoYXNMb2FkZWRBbGxEYXRhKGN1cnJlbnRfcGFnZSwgc3RhdGUubWVtYmVyT3JkZXJzLCB0b3RhbCkpXG4gICAgICAgIHJldHVybiBzdGF0ZTtcblxuICAgICAgY29uc3QgbWVtYmVyT3JkZXJzID1cbiAgICAgICAgY3VycmVudF9wYWdlID09PSBGSVJTVF9QQUdFID8gZGF0YSA6IFsuLi5zdGF0ZS5tZW1iZXJPcmRlcnMsIC4uLmRhdGFdO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgbWVtYmVyT3JkZXJzLFxuICAgICAgICBvcmRlcnNfdG90YWw6IHRvdGFsLFxuICAgICAgICBvcmRlcnNfY3VycmVudF9wYWdlOiBjdXJyZW50X3BhZ2UsXG4gICAgICAgIG9yZGVyc19sYXN0X3BhZ2U6IGxhc3RfcGFnZVxuICAgICAgfTtcbiAgICB9XG4gICAgY2FzZSBHRVRfTVlfQVNTSUdORURfVElDS0VUUzoge1xuICAgICAgY29uc3QgeyBkYXRhLCB0b3RhbCwgY3VycmVudF9wYWdlLCBsYXN0X3BhZ2UgfSA9IHBheWxvYWQucmVzcG9uc2U7XG5cbiAgICAgIGlmIChoYXNMb2FkZWRBbGxEYXRhKGN1cnJlbnRfcGFnZSwgc3RhdGUudXNlclRpY2tldHMsIHRvdGFsKSlcbiAgICAgICAgcmV0dXJuIHN0YXRlO1xuXG4gICAgICBjb25zdCB1c2VyVGlja2V0cyA9XG4gICAgICAgIGN1cnJlbnRfcGFnZSA9PT0gRklSU1RfUEFHRSA/IGRhdGEgOiBbLi4uc3RhdGUudXNlclRpY2tldHMsIC4uLmRhdGFdO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgdXNlclRpY2tldHMsXG4gICAgICAgIHVzZXJfdGlja2V0c190b3RhbDogdG90YWwsXG4gICAgICAgIHVzZXJfdGlja2V0c19jdXJyZW50X3BhZ2U6IGN1cnJlbnRfcGFnZSxcbiAgICAgICAgdXNlcl90aWNrZXRzX2xhc3RfcGFnZTogbGFzdF9wYWdlXG4gICAgICB9O1xuICAgIH1cbiAgICBjYXNlIEdFVF9USUNLRVRTX0JZX09SREVSOiB7XG4gICAgICBjb25zdCB7IG1lbWJlck9yZGVycyB9ID0gc3RhdGU7XG4gICAgICBjb25zdCB7IGRhdGEsIHRvdGFsLCBjdXJyZW50X3BhZ2UsIGxhc3RfcGFnZSB9ID0gcGF5bG9hZC5yZXNwb25zZTtcbiAgICAgIGNvbnN0IGZvcm1lck9yZGVyID0gbWVtYmVyT3JkZXJzLmZpbmQoKG8pID0+IG8uaWQgPT09IGRhdGFbMF0/Lm9yZGVyX2lkKTtcblxuICAgICAgY29uc3QgbmV3T3JkZXJzID0gbWVtYmVyT3JkZXJzLm1hcCgobW8pID0+IHtcbiAgICAgICAgaWYgKG1vLmlkICE9PSBkYXRhWzBdPy5vcmRlcl9pZCkgcmV0dXJuIG1vO1xuICAgICAgICBjb25zdCBuZXdUaWNrZXRzID1cbiAgICAgICAgICBjdXJyZW50X3BhZ2UgPT09IEZJUlNUX1BBR0VcbiAgICAgICAgICAgID8gZGF0YVxuICAgICAgICAgICAgOiBbLi4uZm9ybWVyT3JkZXIubWVtYmVyVGlja2V0cywgLi4uZGF0YV07XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4ubW8sXG4gICAgICAgICAgbWVtYmVyVGlja2V0czogbmV3VGlja2V0cyxcbiAgICAgICAgICB0aWNrZXRzX3BhZ2VfY3VycmVudDogY3VycmVudF9wYWdlLFxuICAgICAgICAgIHRpY2tldHNfcGFnZV9sYXN0OiBsYXN0X3BhZ2UsXG4gICAgICAgICAgdGlja2V0c190b3RhbDogdG90YWxcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgbWVtYmVyT3JkZXJzOiBuZXdPcmRlcnNcbiAgICAgIH07XG4gICAgfVxuICAgIGNhc2UgVVBEQVRFX1RJQ0tFVFNfUkVGVU5EX1JFUVVFU1RFRDoge1xuICAgICAgY29uc3QgeyBtZW1iZXJPcmRlcnMgfSA9IHN0YXRlO1xuICAgICAgY29uc3QgdGlja2V0c1JlZnVuZFJlcXVlc3RlZCA9IHBheWxvYWQ7XG4gICAgICBjb25zdCBvcmRlciA9IG1lbWJlck9yZGVycy5maW5kKFxuICAgICAgICAobykgPT4gby5pZCA9PT0gdGlja2V0c1JlZnVuZFJlcXVlc3RlZFswXT8ub3JkZXJfaWRcbiAgICAgICk7XG4gICAgICBjb25zdCB1cGRhdGVkVGlja2V0cyA9IG9yZGVyPy5tZW1iZXJUaWNrZXRzLm1hcChcbiAgICAgICAgKHRpY2tldCkgPT5cbiAgICAgICAgICB0aWNrZXRzUmVmdW5kUmVxdWVzdGVkLmZpbmQoKHRycikgPT4gdHJyLmlkID09PSB0aWNrZXQuaWQpIHx8IHRpY2tldFxuICAgICAgKTtcbiAgICAgIGNvbnN0IHVwZGF0ZWRPcmRlciA9IHtcbiAgICAgICAgLi4ub3JkZXIsXG4gICAgICAgIG1lbWJlclRpY2tldHM6IHVwZGF0ZWRUaWNrZXRzXG4gICAgICB9O1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIG1lbWJlck9yZGVyczogbWVtYmVyT3JkZXJzLm1hcCgobW8pID0+XG4gICAgICAgICAgbW8uaWQgPT09IHVwZGF0ZWRPcmRlci5pZCA/IHVwZGF0ZWRPcmRlciA6IG1vXG4gICAgICAgIClcbiAgICAgIH07XG4gICAgfVxuICAgIGNhc2UgUkVTRVRfVElDS0VUOiB7XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgY3VycmVudFRpY2tldDogbnVsbCB9O1xuICAgIH1cbiAgICBjYXNlIFJFQ0VJVkVfVElDS0VUOiB7XG4gICAgICBjb25zdCB0aWNrZXQgPSBwYXlsb2FkLnJlc3BvbnNlO1xuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIGN1cnJlbnRUaWNrZXQ6IHRpY2tldCB9O1xuICAgIH1cbiAgICBjYXNlIFJFQ0VJVkVfRVhUUkFfUVVFU1RJT05TOiB7XG4gICAgICBjb25zdCB7IGRhdGEgfSA9IHBheWxvYWQucmVzcG9uc2U7XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgZXh0cmFRdWVzdGlvbnM6IGRhdGEgfTtcbiAgICB9XG4gICAgY2FzZSBSRU1PVkVfVElDS0VUX0FUVEVOREVFOlxuICAgIGNhc2UgVVBEQVRFX1RJQ0tFVDoge1xuICAgICAgY29uc3QgdGlja2V0RGF0YSA9IHBheWxvYWQucmVzcG9uc2U7XG5cbiAgICAgIGNvbnN0IG5ld09yZGVycyA9IHN0YXRlLm1lbWJlck9yZGVycy5tYXAoKG9yZGVyKSA9PiB7XG4gICAgICAgIGNvbnN0IG5ld1RpY2tldHMgPSB1cGRhdGVUaWNrZXRDb2xsZWN0aW9uKFxuICAgICAgICAgIG9yZGVyLm1lbWJlclRpY2tldHMsXG4gICAgICAgICAgdGlja2V0RGF0YVxuICAgICAgICApO1xuICAgICAgICByZXR1cm4geyAuLi5vcmRlciwgbWVtYmVyVGlja2V0czogbmV3VGlja2V0cyB9O1xuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IG5ld1VzZXJUaWNrZXRzID0gdXBkYXRlVGlja2V0Q29sbGVjdGlvbihcbiAgICAgICAgc3RhdGUudXNlclRpY2tldHMsXG4gICAgICAgIHRpY2tldERhdGFcbiAgICAgICk7XG5cbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBtZW1iZXJPcmRlcnM6IG5ld09yZGVycywgdXNlclRpY2tldHM6IG5ld1VzZXJUaWNrZXRzIH07XG4gICAgfVxuICAgIGNhc2UgREVMRUdBVEVfVElDS0VUOlxuICAgIGNhc2UgQVNTSUdOX1RJQ0tFVDoge1xuICAgICAgY29uc3QgdGlja2V0RGF0YSA9IHBheWxvYWQucmVzcG9uc2U7XG4gICAgICBjb25zdCBuZXdPcmRlcnMgPSBzdGF0ZS5tZW1iZXJPcmRlcnMubWFwKChvcmRlcikgPT4ge1xuICAgICAgICBjb25zdCBuZXdUaWNrZXRzID0gdXBkYXRlVGlja2V0Q29sbGVjdGlvbihcbiAgICAgICAgICBvcmRlci5tZW1iZXJUaWNrZXRzLFxuICAgICAgICAgIHRpY2tldERhdGFcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIHsgLi4ub3JkZXIsIG1lbWJlclRpY2tldHM6IG5ld1RpY2tldHMgfTtcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBuZXdVc2VyVGlja2V0cyA9IHVwZGF0ZVRpY2tldENvbGxlY3Rpb24oXG4gICAgICAgIHN0YXRlLnVzZXJUaWNrZXRzLFxuICAgICAgICB0aWNrZXREYXRhXG4gICAgICApO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgY3VycmVudFRpY2tldDogdGlja2V0RGF0YSxcbiAgICAgICAgbWVtYmVyT3JkZXJzOiBuZXdPcmRlcnMsXG4gICAgICAgIHVzZXJUaWNrZXRzOiBuZXdVc2VyVGlja2V0c1xuICAgICAgfTtcbiAgICB9XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBzdGF0ZTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgV2lkZ2V0UmVkdWNlcjtcbiIsImltcG9ydCB7IHVzZU1lbW8gfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IGNvbmZpZ3VyZVN0b3JlIH0gZnJvbSBcIkByZWR1eGpzL3Rvb2xraXRcIjtcbmltcG9ydCB7XG4gIHBlcnNpc3RTdG9yZSxcbiAgcGVyc2lzdFJlZHVjZXIsXG4gIEZMVVNILFxuICBSRUhZRFJBVEUsXG4gIFBBVVNFLFxuICBQRVJTSVNULFxuICBQVVJHRSxcbiAgUkVHSVNURVJcbn0gZnJvbSBcInJlZHV4LXBlcnNpc3RcIjtcbmltcG9ydCBzdG9yYWdlIGZyb20gXCJyZWR1eC1wZXJzaXN0L2xpYi9zdG9yYWdlXCI7XG5pbXBvcnQgeyBjb21iaW5lUmVkdWNlcnMgfSBmcm9tIFwicmVkdXhcIjtcbmltcG9ydCBXaWRnZXRSZWR1Y2VyIGZyb20gXCIuL3JlZHVjZXJcIjtcblxuZXhwb3J0IGNvbnN0IGdldFN0b3JlID0gKHtcbiAgY2xpZW50SWQsXG4gIGxvZ2luVXJsLFxuICBzdW1taXQsXG4gIGFwaUJhc2VVcmwsXG4gIHJlY2VpcHRTZXR0aW5ncyxcbiAgdXBkYXRlUHJvZmlsZVxufSkgPT4ge1xuICAvLyB0byBhZGQgb3RoZXIgcmVkdWNlcnMgbGF0ZXJcbiAgY29uc3QgcmVkdWNlcnMgPSBjb21iaW5lUmVkdWNlcnMoe1xuICAgIHdpZGdldFN0YXRlOiBXaWRnZXRSZWR1Y2VyXG4gIH0pO1xuXG4gIGNvbnN0IHN0b3JlID0gY29uZmlndXJlU3RvcmUoe1xuICAgIHJlZHVjZXI6IHBlcnNpc3RSZWR1Y2VyKFxuICAgICAge1xuICAgICAgICBrZXk6IGByb290X215X29yZGVyc190aWNrZXRzXyR7Y2xpZW50SWR9YCxcbiAgICAgICAgc3RvcmFnZVxuICAgICAgfSxcbiAgICAgIHJlZHVjZXJzXG4gICAgKSxcbiAgICBtaWRkbGV3YXJlOiAoZ2V0RGVmYXVsdE1pZGRsZXdhcmUpID0+XG4gICAgICBnZXREZWZhdWx0TWlkZGxld2FyZSh7XG4gICAgICAgIHRodW5rOiB7XG4gICAgICAgICAgZXh0cmFBcmd1bWVudDoge1xuICAgICAgICAgICAgY2xpZW50SWQsXG4gICAgICAgICAgICBhcGlCYXNlVXJsLFxuICAgICAgICAgICAgcmVjZWlwdFNldHRpbmdzLFxuICAgICAgICAgICAgc3VtbWl0LFxuICAgICAgICAgICAgbG9naW5VcmwsXG4gICAgICAgICAgICB1cGRhdGVQcm9maWxlXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBpbW11dGFibGVDaGVjazogZmFsc2UsXG4gICAgICAgIHNlcmlhbGl6YWJsZUNoZWNrOiB7XG4gICAgICAgICAgaWdub3JlZEFjdGlvbnM6IFtGTFVTSCwgUkVIWURSQVRFLCBQQVVTRSwgUEVSU0lTVCwgUFVSR0UsIFJFR0lTVEVSXVxuICAgICAgICB9XG4gICAgICB9KVxuICB9KTtcblxuICByZXR1cm4gc3RvcmU7XG59O1xuXG5leHBvcnQgY29uc3QgdXNlSW5pdFN0b3JlID0gKGNvbmZpZykgPT4ge1xuICBjb25zdCBzdG9yZSA9IHVzZU1lbW8oKCkgPT4gZ2V0U3RvcmUoY29uZmlnKSwgW10pO1xuICBjb25zdCBwZXJzaXN0b3IgPSB1c2VNZW1vKCgpID0+IHBlcnNpc3RTdG9yZShzdG9yZSksIFtzdG9yZV0pO1xuXG4gIHJldHVybiB7XG4gICAgc3RvcmUsXG4gICAgcGVyc2lzdG9yXG4gIH07XG59O1xuIiwiaW1wb3J0IHtcbiAgaW5pdExvZ091dCxcbiAgZ2V0QWNjZXNzVG9rZW5cbn0gZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvc2VjdXJpdHkvbWV0aG9kc1wiO1xuaW1wb3J0ICogYXMgU2VudHJ5IGZyb20gXCJAc2VudHJ5L3JlYWN0XCI7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xuY29uc3QgZ2V0QWNjZXNzVG9rZW5Nb2NrID0gKCkgPT4ge1xuICB0aHJvdyBuZXcgRXJyb3IoXCJBY2Nlc3MgdG9rZW4gZXJyb3JcIik7XG4gIC8vIHJldHVybiBhdXRoUHJvbWlzZVJlamVjdCgpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEFjY2Vzc1Rva2VuU2FmZWx5ID0gYXN5bmMgKCkgPT4ge1xuICB0cnkge1xuICAgIHJldHVybiBhd2FpdCBnZXRBY2Nlc3NUb2tlbigpLmNhdGNoKChlKSA9PiB7XG4gICAgICBjb25zb2xlLmxvZyhcIm15LW9yZGVycy10aWNrZXRzLXdpZGdldDo6Z2V0QWNjZXNzVG9rZW5TYWZlbHkgZXJyb3I6IFwiLCBlKTtcbiAgICAgIFNlbnRyeS5jYXB0dXJlRXhjZXB0aW9uKGUpO1xuICAgICAgaW5pdExvZ091dCgpO1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBjb25zb2xlLmxvZyhcIm15LW9yZGVycy10aWNrZXRzLXdpZGdldDo6Z2V0QWNjZXNzVG9rZW5TYWZlbHkgZXJyb3I6IFwiLCBlKTtcbiAgICBTZW50cnkuY2FwdHVyZUV4Y2VwdGlvbihlKTtcbiAgICBpbml0TG9nT3V0KCk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBhdXRoUHJvbWlzZVJlamVjdCA9IGFzeW5jICgpID0+XG4gIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcihcIkF1dGggVG9rZW4gZXJyb3JcIikpO1xuIiwiZXhwb3J0IGNvbnN0IExBU1RfSE9VUl9PRl8yNF9IT1VSID0gMjM7XG5leHBvcnQgY29uc3QgTEFTVF9NSU5VVEVfT0ZfSE9VUiA9IDU5O1xuZXhwb3J0IGNvbnN0IE9ORV9QQUdFX05FWFQgPSAxO1xuZXhwb3J0IGNvbnN0IE1JTExJU0VDX1RPX1NFQyA9IDEwMDA7XG5leHBvcnQgY29uc3QgT05FX0RBWSA9IDE7XG5leHBvcnQgY29uc3QgREVGQVVMVF9JVEVNU19QRVJfUEFHRSA9IDU7XG5leHBvcnQgY29uc3QgRklSU1RfUEFHRSA9IDE7XG5leHBvcnQgY29uc3QgUEFHSU5BVElPTl9ESVNQTEFZX0NPVU5UID0gNTtcbmV4cG9ydCBjb25zdCBTVEVQX09ORSA9IDE7XG5leHBvcnQgY29uc3QgU1RFUF9UV08gPSAyO1xuZXhwb3J0IGNvbnN0IFNURVBfVEhSRUUgPSAzO1xuZXhwb3J0IGNvbnN0IE1JTl9SRVFVSVJFRCA9IDE7XG5cbmV4cG9ydCBjb25zdCBTVEFUVVNfQ09NUExFVEUgPSBcIlNUQVRVU19DT01QTEVURVwiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19JTkNPTVBMRVRFID0gXCJTVEFUVVNfSU5DT01QTEVURVwiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19QRU5ESU5HID0gXCJTVEFUVVNfUEVORElOR1wiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19DQU5DRUxMRUQgPSBcIlNUQVRVU19DQU5DRUxMRURcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfRVJST1IgPSBcIlNUQVRVU19FUlJPUlwiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19QUk9DRVNTSU5HID0gXCJTVEFUVVNfUFJPQ0VTU0lOR1wiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19VTkFTU0lHTkVEID0gXCJTVEFUVVNfVU5BU1NJR05FRFwiO1xuXG5leHBvcnQgY29uc3QgU1RBVFVTX1JFRlVORF9QRU5ESU5HID0gXCJTVEFUVVNfUkVGVU5EX1BFTkRJTkdcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfUkVGVU5EX0FQUFJPVkVEID0gXCJTVEFUVVNfUkVGVU5EX0FQUFJPVkVEXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX1JFRlVORF9SRUpFQ1RFRCA9IFwiU1RBVFVTX1JFRlVORF9SRUpFQ1RFRFwiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19SRUZVTkRfUEVORElOR19MQyA9IFwiUmVxdWVzdGVkXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX1JFRlVORF9BUFBST1ZFRF9MQyA9IFwiQXBwcm92ZWRcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfUkVGVU5EX1JFSkVDVEVEX0xDID0gXCJSZWplY3RlZFwiO1xuXG5leHBvcnQgY29uc3QgSkVTVF9USU1FT1VUX0lOX01JTExJU0VDID0gMTAwMDA7XG5cbmV4cG9ydCBjb25zdCBPTkVfSVRFTSA9IDE7XG5leHBvcnQgY29uc3QgVFdPX0lURU0gPSAyO1xuZXhwb3J0IGNvbnN0IEZJVkVfSVRFTSA9IDU7XG5leHBvcnQgY29uc3QgU0lYX0lURU0gPSA2O1xuXG5leHBvcnQgY29uc3QgUFJPTUlTRV9CQVRDSF9MSU1JVCA9IDEwO1xuZXhwb3J0IGNvbnN0IEZJRlRZX1BFUl9QQUdFID0gNTA7XG5cbmV4cG9ydCBjb25zdCBFUlJPUl9DT0RFUyA9IHtcbiAgNDAxOiA0MDEsXG4gIDQwMzogNDAxLFxuICA0MTI6IDQwMSxcbiAgNTAwOiA1MDBcbn07XG5cbmV4cG9ydCBjb25zdCBUQUJTID0ge1xuICBPUkRFUlM6IFwiT1JERVJTXCIsXG4gIFRJQ0tFVFM6IFwiVElDS0VUU1wiXG59O1xuXG5leHBvcnQgY29uc3QgT05FX1JFVFJZID0gMTtcblxuZXhwb3J0IGNvbnN0IEZJTFRFUl9BQ1RJT04gPSB7XG4gIE9SREVSUzogXCJPUkRFUlNcIixcbiAgRVhURVJOQUxfVElDS0VUUzogXCJFWFRFUk5BTF9USUNLRVRTXCIsXG4gIFRJQ0tFVFNfQllfT1JERVJTOiBcIlRJQ0tFVFNfQllfT1JERVJTXCJcbn07XG5cbmV4cG9ydCBjb25zdCBUSUNLRVRfRFJBV0VSX0lEID0gXCJ0aWNrZXREcmF3ZXJcIjtcbiIsImltcG9ydCBtb21lbnQgZnJvbSBcIm1vbWVudC10aW1lem9uZVwiO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2ggfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7XG4gIExBU1RfSE9VUl9PRl8yNF9IT1VSLFxuICBMQVNUX01JTlVURV9PRl9IT1VSLFxuICBNSUxMSVNFQ19UT19TRUMsXG4gIEZJUlNUX1BBR0Vcbn0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5cbmV4cG9ydCBjb25zdCBmb3JtYXRDdXJyZW5jeSA9ICh2YWx1ZSwgeyBsb2NhbGUgPSBcImVuLVVTXCIsIC4uLm9wdGlvbnMgfSkgPT4ge1xuICBjb25zdCBkZWZhdWx0T3B0aW9ucyA9IHtcbiAgICBjdXJyZW5jeTogXCJVU0RcIixcbiAgICBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDIsXG4gICAgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiAyXG4gIH07XG5cbiAgY29uc3QgZm9ybWF0dGVyID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KGxvY2FsZSwge1xuICAgIHN0eWxlOiBcImN1cnJlbmN5XCIsXG4gICAgLi4uZGVmYXVsdE9wdGlvbnMsXG4gICAgLi4ub3B0aW9uc1xuICB9KTtcblxuICByZXR1cm4gZm9ybWF0dGVyLmZvcm1hdCh2YWx1ZSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Rm9ybWF0dGVkRGF0ZSA9IChkYXRldGltZSwgdGltZVpvbmUpID0+IHtcbiAgaWYgKHRpbWVab25lKVxuICAgIHJldHVybiBtb21lbnRcbiAgICAgIC50eihkYXRldGltZSAqIE1JTExJU0VDX1RPX1NFQywgdGltZVpvbmUpXG4gICAgICAuZm9ybWF0KFwiTU1NTSBERCwgWVlZWVwiKTtcblxuICByZXR1cm4gbW9tZW50LnVuaXgoZGF0ZXRpbWUpLmZvcm1hdChcIk1NTU0gREQsIFlZWVlcIik7XG59O1xuXG5leHBvcnQgY29uc3QgY2FsY3VsYXRlT3JkZXJUb3RhbHMgPSAoeyBvcmRlciwgc3VtbWl0IH0pID0+IHtcbiAgaWYgKCFvcmRlciB8fCAhc3VtbWl0KSByZXR1cm4ge307XG4gIGNvbnN0IHRpY2tldHMgPSBvcmRlcj8ubWVtYmVyVGlja2V0cztcbiAgaWYgKCF0aWNrZXRzKSByZXR1cm4ge307XG5cbiAgY29uc3QgeyByZWZ1bmRlZF9hbW91bnQsIGRpc2NvdW50X2Ftb3VudCwgYW1vdW50LCByYXdfYW1vdW50IH0gPSBvcmRlcjtcbiAgY29uc3QgeyB0aWNrZXRfdHlwZXMgfSA9IHN1bW1pdDtcblxuICBjb25zdCBjdXJyZW5jeU9iamVjdCA9IHsgY3VycmVuY3k6IG9yZGVyLmN1cnJlbmN5IH07XG5cbiAgY29uc3QgdGF4ZXNTdW1tYXJ5ID0gW107XG4gIGNvbnN0IHRpY2tldFN1bW1hcnkgPSBbXTtcbiAgbGV0IHB1cmNoYXNlVGlja2V0VG90YWwgPSAwO1xuXG4gIE9iamVjdC5rZXlzKG9yZGVyLnRpY2tldHNfZXhjZXJwdF9ieV90aWNrZXRfdHlwZSkubWFwKCh0aWNrZXQpID0+IHtcbiAgICBjb25zdCB0aWNrZXRUeXBlID0gdGlja2V0X3R5cGVzPy5maW5kKCh0dCkgPT4gdHQubmFtZSA9PT0gdGlja2V0KTtcbiAgICBpZiAoIXRpY2tldFR5cGUpIHJldHVybiBudWxsO1xuICAgIHRpY2tldFN1bW1hcnkucHVzaCh7XG4gICAgICB0aWNrZXRfdHlwZV9pZDogdGlja2V0VHlwZS5pZCxcbiAgICAgIHRpY2tldF90eXBlOiB0aWNrZXRUeXBlLFxuICAgICAgbmFtZTogdGlja2V0LFxuICAgICAgcXR5OiBvcmRlci50aWNrZXRzX2V4Y2VycHRfYnlfdGlja2V0X3R5cGVbdGlja2V0XVxuICAgIH0pO1xuICAgIHB1cmNoYXNlVGlja2V0VG90YWwgKz1cbiAgICAgIHRpY2tldFR5cGUuY29zdCAqIG9yZGVyLnRpY2tldHNfZXhjZXJwdF9ieV90aWNrZXRfdHlwZVt0aWNrZXRdO1xuXG4gICAgcmV0dXJuIHRpY2tldFN1bW1hcnk7XG4gIH0pO1xuXG4gIG9yZGVyPy5hcHBsaWVkX3RheGVzPy5mb3JFYWNoKCh0YXgpID0+IHtcbiAgICBjb25zdCBmb3JtYXR0ZWRUYXggPSB7XG4gICAgICAuLi50YXgsXG4gICAgICBhbW91bnQ6IGZvcm1hdEN1cnJlbmN5KHRheC5hbW91bnQsIGN1cnJlbmN5T2JqZWN0KVxuICAgIH07XG4gICAgdGF4ZXNTdW1tYXJ5LnB1c2goZm9ybWF0dGVkVGF4KTtcbiAgfSk7XG5cbiAgY29uc3QgcHVyY2hhc2VUb3RhbCA9IGZvcm1hdEN1cnJlbmN5KHB1cmNoYXNlVGlja2V0VG90YWwsIGN1cnJlbmN5T2JqZWN0KTtcblxuICBjb25zdCBkaXNjb3VudFRvdGFsID0gZm9ybWF0Q3VycmVuY3koZGlzY291bnRfYW1vdW50LCBjdXJyZW5jeU9iamVjdCk7XG4gIGNvbnN0IHJlZnVuZFRvdGFsID0gZm9ybWF0Q3VycmVuY3kocmVmdW5kZWRfYW1vdW50LCBjdXJyZW5jeU9iamVjdCk7XG4gIGNvbnN0IHN1YlRvdGFsID0gZm9ybWF0Q3VycmVuY3kocmF3X2Ftb3VudCwgY3VycmVuY3lPYmplY3QpO1xuICBjb25zdCBhbW91bnRUb3RhbCA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvcmRlciwgXCJhbW91bnRcIilcbiAgICA/IGZvcm1hdEN1cnJlbmN5KGFtb3VudCwgY3VycmVuY3lPYmplY3QpXG4gICAgOiBmb3JtYXRDdXJyZW5jeShwdXJjaGFzZVRvdGFsLCBjdXJyZW5jeU9iamVjdCk7XG5cbiAgcmV0dXJuIHtcbiAgICBkaXNjb3VudFRvdGFsLFxuICAgIHJlZnVuZFRvdGFsLFxuICAgIHN1YlRvdGFsLFxuICAgIGFtb3VudFRvdGFsLFxuICAgIHRpY2tldFN1bW1hcnksXG4gICAgdGF4ZXNTdW1tYXJ5XG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0T3JkZXJUaWNrZXRzID0gKG1lbWJlck9yZGVycywgb3JkZXJJZCkgPT4ge1xuICBjb25zdCBvcmRlcnMgPSBtZW1iZXJPcmRlcnMuZmlsdGVyKChvKSA9PiBvLmlkID09PSBvcmRlcklkKTtcbiAgcmV0dXJuIG9yZGVyc1swXT8ubWVtYmVyVGlja2V0cztcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRFcG9jaExvd2VyVXBwZXJJblNlY29uZHMgPSAodHMpID0+IHtcbiAgY29uc3QgbG93ZXIgPSB0cy5zZXRIb3VycygwLCAwLCAwLCAwKSAvIE1JTExJU0VDX1RPX1NFQztcbiAgY29uc3QgdXBwZXIgPVxuICAgIHRzLnNldEhvdXJzKExBU1RfSE9VUl9PRl8yNF9IT1VSLCBMQVNUX01JTlVURV9PRl9IT1VSLCAwLCAwKSAvXG4gICAgTUlMTElTRUNfVE9fU0VDO1xuICByZXR1cm4ge1xuICAgIGxvd2VyLFxuICAgIHVwcGVyXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgZGVmYXVsdEN1cnJlbnRUaW1lID0gKCkgPT5cbiAgTWF0aC5yb3VuZCgrbmV3IERhdGUoKSAvIE1JTExJU0VDX1RPX1NFQyk7XG5cbmV4cG9ydCBjb25zdCBnZXROb3cgPSAoKSA9PiAoZGlzcGF0Y2gsIGdldFN0YXRlKSA9PiB7XG4gIGNvbnN0IHsgdGltZXJTdGF0ZSB9ID0gZ2V0U3RhdGUoKTtcbiAgcmV0dXJuIHRpbWVyU3RhdGU/Lm5vd1V0YyA9PSBudWxsID8gZGVmYXVsdEN1cnJlbnRUaW1lKCkgOiB0aW1lclN0YXRlPy5ub3dVdGM7XG59O1xuXG5leHBvcnQgY29uc3QgdXNlTm93ID0gKCkgPT4ge1xuICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG5cbiAgcmV0dXJuIGRpc3BhdGNoKGdldE5vdygpKTtcbn07XG5cbi8qKlxuICogQHBhcmFtIGN1cnJlbnRQYWdlXG4gKiBAcGFyYW0gZGF0YVxuICogQHBhcmFtIHRvdGFsXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuZXhwb3J0IGNvbnN0IGhhc0xvYWRlZEFsbERhdGEgPSAoY3VycmVudFBhZ2UsIGRhdGEsIHRvdGFsKSA9PiB7XG4gIGxldCByZXMgPSBmYWxzZTtcbiAgY29uc3QgZGF0YUxlbmd0aCA9IEFycmF5LmlzQXJyYXkoZGF0YSkgPyBkYXRhLmxlbmd0aCA6IDA7XG4gIC8vIHdlIGFscmVhZHkgbG9hZGVkIGFsbCAgZGF0YSAoIGZpcnN0IHBhZ2UgaXMgYWx3YXlzIHJlbG9hZGVkIGl0IClcbiAgaWYgKGN1cnJlbnRQYWdlID4gRklSU1RfUEFHRSAmJiBkYXRhTGVuZ3RoID4gMCAmJiBkYXRhTGVuZ3RoID09PSB0b3RhbClcbiAgICByZXMgPSB0cnVlO1xuICByZXR1cm4gcmVzO1xufTtcblxuZXhwb3J0IGNvbnN0IGNhbGN1bGF0ZUFjdGl2ZUZpbHRlcnMgPSAoZmlsdGVycykgPT4ge1xuICBsZXQgY291bnQgPSAwO1xuICBPYmplY3QuZW50cmllcyhmaWx0ZXJzKS5mb3JFYWNoKChbLCB2YWx1ZV0pID0+IHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgIGNvdW50ICs9IHZhbHVlLmxlbmd0aDtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiAmJiB2YWx1ZS50cmltKCkgIT09IFwiXCIpIHtcbiAgICAgIGNvdW50Kys7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09IFwibnVtYmVyXCIgJiYgdmFsdWUgPiAwKSB7XG4gICAgICBjb3VudCsrO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBjb3VudDtcbn07XG4iLCJpbXBvcnQgbW9tZW50IGZyb20gXCJtb21lbnQtdGltZXpvbmVcIjtcbmltcG9ydCB7IE1JTExJU0VDX1RPX1NFQywgT05FX0RBWSB9IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgdXNlTm93IH0gZnJvbSBcIi5cIjtcblxuZXhwb3J0IGNvbnN0IGNoZWNrU3VtbWl0UGFzdCA9IChzdW1taXQsIG5vdykgPT4ge1xuICBpZiAoIXN1bW1pdCkgcmV0dXJuIG51bGw7XG5cbiAgY29uc3QgcmVhc3NpZ25fZGF0ZSA9XG4gICAgc3VtbWl0Py5yZWFzc2lnbl90aWNrZXRfdGlsbF9kYXRlICYmXG4gICAgc3VtbWl0LnJlYXNzaWduX3RpY2tldF90aWxsX2RhdGUgPCBzdW1taXQuZW5kX2RhdGVcbiAgICAgID8gc3VtbWl0LnJlYXNzaWduX3RpY2tldF90aWxsX2RhdGVcbiAgICAgIDogc3VtbWl0LmVuZF9kYXRlO1xuXG4gIHJldHVybiBub3cgPiByZWFzc2lnbl9kYXRlO1xufTtcblxuZXhwb3J0IGNvbnN0IGNoZWNrU3VtbWl0U3RhcnRlZCA9IChzdW1taXQsIG5vdykgPT4ge1xuICBpZiAoIXN1bW1pdCkgcmV0dXJuIG51bGw7XG5cbiAgcmV0dXJuIHN1bW1pdC5zdGFydF9kYXRlIDwgbm93O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFN1bW1pdERheXNEaWZmID0gKHN1bW1pdCkgPT4ge1xuICBpZiAoIXN1bW1pdCkgcmV0dXJuIG51bGw7XG4gIGNvbnN0IHN0YXJ0RGF5ID0gbW9tZW50KHN1bW1pdC5zdGFydF9kYXRlICogTUlMTElTRUNfVE9fU0VDKS50eihcbiAgICBzdW1taXQudGltZV96b25lX2lkXG4gICk7XG4gIGNvbnN0IGVuZERheSA9IG1vbWVudChzdW1taXQuZW5kX2RhdGUgKiBNSUxMSVNFQ19UT19TRUMpLnR6KFxuICAgIHN1bW1pdC50aW1lX3pvbmVfaWRcbiAgKTtcbiAgY29uc3QgZGF5cyA9IGVuZERheT8uZGlmZihzdGFydERheSwgXCJkYXlzXCIpO1xuICByZXR1cm4ge1xuICAgIHN0YXJ0RGF5LFxuICAgIGVuZERheSxcbiAgICBkYXlzXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0U3VtbWl0Rm9ybWF0dGVkRGF0ZSA9IChzdW1taXQpID0+IHtcbiAgaWYgKCFzdW1taXQpIHJldHVybiBudWxsO1xuICBjb25zdCB7IHN0YXJ0RGF5LCBlbmREYXksIGRheXMgfSA9IGdldFN1bW1pdERheXNEaWZmKHN1bW1pdCk7XG4gIGlmICghc3RhcnREYXkgfHwgIWVuZERheSkgcmV0dXJuIG51bGw7XG4gIGxldCBmb3JtYXRTdGFydERhdGUgPSBcIk1NTU0gREQsIFlZWVlcIjtcbiAgbGV0IGZvcm1hdEVuZERhdGUgPSBcIk1NTU0gREQsIFlZWVlcIjtcbiAgaWYgKHN0YXJ0RGF5LnllYXIoKSA9PT0gZW5kRGF5LnllYXIoKSkgZm9ybWF0U3RhcnREYXRlID0gXCJNTU1NIEREXCI7XG4gIGlmIChzdGFydERheS5tb250aCgpID09PSBlbmREYXkubW9udGgoKSkgZm9ybWF0RW5kRGF0ZSA9IFwiREQsIFlZWVlcIjtcblxuICBjb25zdCBzdGFydERhdGUgPSBzdGFydERheS5mb3JtYXQoZm9ybWF0U3RhcnREYXRlKTtcbiAgY29uc3QgZW5kRGF0ZSA9IGVuZERheS5mb3JtYXQoZm9ybWF0RW5kRGF0ZSk7XG5cbiAgaWYgKGRheXMgPiBPTkVfREFZKSByZXR1cm4gYCR7c3RhcnREYXRlfSAtICR7ZW5kRGF0ZX1gO1xuXG4gIHJldHVybiBzdGFydERhdGU7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0U3VtbWl0TG9jYXRpb24gPSAoc3VtbWl0KSA9PiB7XG4gIGlmICghc3VtbWl0KSByZXR1cm4gbnVsbDtcblxuICBjb25zdCBsb2NhdGlvbiA9IHN1bW1pdC5sb2NhdGlvbnM/LmZpbmQoXG4gICAgKGwpID0+IGwuY2xhc3NfbmFtZSA9PT0gXCJTdW1taXRWZW51ZVwiICYmIGwuaXNfbWFpbiA9PT0gdHJ1ZVxuICApO1xuXG4gIGlmICghbG9jYXRpb24pIHJldHVybiBudWxsO1xuXG4gIHJldHVybiBgJHtsb2NhdGlvbi5jaXR5fSwgJHtsb2NhdGlvbi5jb3VudHJ5fWA7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0U3VtbWl0UmVhc3NpZ25EYXRlID0gKHN1bW1pdCkgPT4ge1xuICBpZiAoIXN1bW1pdCkgcmV0dXJuIG51bGw7XG5cbiAgcmV0dXJuIHN1bW1pdC5yZWFzc2lnbl90aWNrZXRfdGlsbF9kYXRlICYmXG4gICAgc3VtbWl0LnJlYXNzaWduX3RpY2tldF90aWxsX2RhdGUgPCBzdW1taXQuZW5kX2RhdGVcbiAgICA/IHN1bW1pdC5yZWFzc2lnbl90aWNrZXRfdGlsbF9kYXRlXG4gICAgOiBzdW1taXQuZW5kX2RhdGU7XG59O1xuXG5leHBvcnQgY29uc3QgdXNlU3VtbWl0RGV0YWlscyA9ICh7IHN1bW1pdCB9KSA9PiB7XG4gIGNvbnN0IG5vdyA9IHVzZU5vdygpO1xuXG4gIGlmICghc3VtbWl0KSByZXR1cm4ge307XG5cbiAgY29uc3QgbG9jYXRpb24gPSBnZXRTdW1taXRMb2NhdGlvbihzdW1taXQpO1xuICBjb25zdCBmb3JtYXR0ZWREYXRlID0gZ2V0U3VtbWl0Rm9ybWF0dGVkRGF0ZShzdW1taXQpO1xuICBjb25zdCByZWFzc2lnbkRhdGUgPSBnZXRTdW1taXRSZWFzc2lnbkRhdGUoc3VtbWl0KTtcbiAgY29uc3QgZm9ybWF0dGVkUmVhc3NpZ25EYXRlID0gbW9tZW50LnR6KFxuICAgIHJlYXNzaWduRGF0ZSxcbiAgICBzdW1taXQudGltZV96b25lPy50aW1lX3pvbmVfaWRcbiAgKTtcbiAgY29uc3QgZGF5c1VudGlsUmVhc3NpZ25EZWFkbGluZSA9IGdldFN1bW1pdERheXNEaWZmKFxuICAgIG5vdyxcbiAgICByZWFzc2lnbkRhdGUsXG4gICAgc3VtbWl0LnRpbWVfem9uZT8ubmFtZVxuICApO1xuXG4gIGNvbnN0IGlzUGFzdCA9IGNoZWNrU3VtbWl0UGFzdChzdW1taXQsIG5vdyk7XG4gIGNvbnN0IGlzU3RhcnRlZCA9IGNoZWNrU3VtbWl0U3RhcnRlZChzdW1taXQsIG5vdyk7XG4gIGNvbnN0IGlzUmVhc3NpZ25hYmxlID0gcmVhc3NpZ25EYXRlID4gbm93O1xuXG4gIHJldHVybiB7XG4gICAgbmFtZTogc3VtbWl0Py5uYW1lLFxuICAgIG5vdyxcbiAgICBsb2NhdGlvbixcbiAgICBmb3JtYXR0ZWREYXRlLFxuICAgIHJlYXNzaWduRGF0ZSxcbiAgICBmb3JtYXR0ZWRSZWFzc2lnbkRhdGUsXG4gICAgZGF5c1VudGlsUmVhc3NpZ25EZWFkbGluZSxcbiAgICBpc1Bhc3QsXG4gICAgaXNTdGFydGVkLFxuICAgIGlzUmVhc3NpZ25hYmxlXG4gIH07XG59O1xuIiwiaW1wb3J0ICogYXMgeXVwIGZyb20gXCJ5dXBcIjtcbmltcG9ydCBpMThuIGZyb20gXCIuLi9pMThuXCI7XG5pbXBvcnQge1xuICBNSU5fUkVRVUlSRUQsXG4gIFNUQVRVU19DQU5DRUxMRUQsXG4gIFNUQVRVU19DT01QTEVURSxcbiAgU1RBVFVTX0lOQ09NUExFVEUsXG4gIFNUQVRVU19SRUZVTkRfQVBQUk9WRUQsXG4gIFNUQVRVU19SRUZVTkRfQVBQUk9WRURfTEMsXG4gIFNUQVRVU19SRUZVTkRfUEVORElORyxcbiAgU1RBVFVTX1JFRlVORF9QRU5ESU5HX0xDLFxuICBTVEFUVVNfUkVGVU5EX1JFSkVDVEVELFxuICBTVEFUVVNfUkVGVU5EX1JFSkVDVEVEX0xDLFxuICBTVEFUVVNfVU5BU1NJR05FRFxufSBmcm9tIFwiLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IFRJQ0tFVF9BVFRFTkRFRV9LRVlTIH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbnN0YW50c1wiO1xuaW1wb3J0IHtcbiAgY2hlY2tJZlZhbHVlTWF0Y2gsXG4gIGdldFR5cGVJbml0aWFsVmFsdWUsXG4gIHRvU2x1Z1xufSBmcm9tIFwiLi4vY29tcG9uZW50cy9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb21wb25lbnRzL3V0aWxzXCI7XG5pbXBvcnQge1xuICBRdWVzdGlvblR5cGVfQ2hlY2tib3gsXG4gIFF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3QsXG4gIFF1ZXN0aW9uVHlwZV9Db21ib0JveCxcbiAgUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveCxcbiAgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdFxufSBmcm9tIFwiLi4vY29tcG9uZW50cy9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb25zdGFudHNcIjtcblxuZXhwb3J0IGNvbnN0IHN0YXR1c0RhdGEgPSB7XG4gIFtTVEFUVVNfVU5BU1NJR05FRF06IHtcbiAgICB0eXBlOiBTVEFUVVNfVU5BU1NJR05FRCxcbiAgICB0ZXh0OiBpMThuLnQoXCJ0aWNrZXRfc3RhdHVzLnVuYXNzaWduZWRcIilcbiAgfSxcbiAgW1NUQVRVU19JTkNPTVBMRVRFXToge1xuICAgIHR5cGU6IFNUQVRVU19JTkNPTVBMRVRFLFxuICAgIHRleHQ6IGkxOG4udChcInRpY2tldF9zdGF0dXMuaW5jb21wbGV0ZVwiKVxuICB9LFxuICBbU1RBVFVTX0NPTVBMRVRFXToge1xuICAgIHR5cGU6IFNUQVRVU19DT01QTEVURSxcbiAgICB0ZXh0OiBpMThuLnQoXCJ0aWNrZXRfc3RhdHVzLmNvbXBsZXRlXCIpXG4gIH0sXG4gIFtTVEFUVVNfQ0FOQ0VMTEVEXToge1xuICAgIHR5cGU6IFNUQVRVU19DQU5DRUxMRUQsXG4gICAgdGV4dDogaTE4bi50KFwidGlja2V0X3N0YXR1cy5jYW5jZWxsZWRcIilcbiAgfVxufTtcbmV4cG9ydCBjb25zdCBnZXRUaWNrZXRTdGF0dXNLZXkgPSAodGlja2V0KSA9PiB7XG4gIGlmICghdGlja2V0LmlzX2FjdGl2ZSkgcmV0dXJuIFNUQVRVU19DQU5DRUxMRUQ7XG5cbiAgaWYgKHRpY2tldC5vd25lcl9pZCA9PT0gMCkgcmV0dXJuIFNUQVRVU19VTkFTU0lHTkVEO1xuXG4gIGlmICghdGlja2V0Lm93bmVyPy5maXJzdF9uYW1lIHx8ICF0aWNrZXQub3duZXI/Lmxhc3RfbmFtZSlcbiAgICByZXR1cm4gU1RBVFVTX0lOQ09NUExFVEU7XG5cbiAgaWYgKHRpY2tldC5vd25lciAmJiB0aWNrZXQub3duZXI/LnN0YXR1cyA9PT0gXCJJbmNvbXBsZXRlXCIpXG4gICAgcmV0dXJuIFNUQVRVU19JTkNPTVBMRVRFO1xuXG4gIGlmICh0aWNrZXQub3duZXIgJiYgdGlja2V0Lm93bmVyPy5zdGF0dXMgPT09IFwiQ29tcGxldGVcIilcbiAgICByZXR1cm4gU1RBVFVTX0NPTVBMRVRFO1xuXG4gIHJldHVybiBTVEFUVVNfSU5DT01QTEVURTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRUaWNrZXRTdGF0dXNEYXRhID0gKHRpY2tldCwgaXNTdW1taXRQYXN0KSA9PlxuICBzdGF0dXNEYXRhW2dldFRpY2tldFN0YXR1c0tleSh0aWNrZXQsIGlzU3VtbWl0UGFzdCldO1xuXG5leHBvcnQgY29uc3QgZ2V0VGlja2V0Um9sZSA9ICh0aWNrZXQpID0+IHtcbiAgaWYgKCF0aWNrZXQuYmFkZ2UpIHJldHVybiBudWxsO1xuXG4gIGNvbnN0IHsgZmVhdHVyZXMgfSA9IHRpY2tldC5iYWRnZTtcblxuICBpZiAoZmVhdHVyZXMubGVuZ3RoID4gMClcbiAgICByZXR1cm4gZmVhdHVyZXMubWFwKChmZWF0dXJlKSA9PiBmZWF0dXJlLm5hbWUpLmpvaW4oXCIsIFwiKTtcblxuICByZXR1cm4gbnVsbDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRUaWNrZXRUeXBlID0gKHRpY2tldCwgc3VtbWl0KSA9PlxuICBzdW1taXQudGlja2V0X3R5cGVzLmZpbmQoKHR5cGUpID0+IHR5cGUuaWQgPT09IHRpY2tldC50aWNrZXRfdHlwZV9pZCk7XG5cbmV4cG9ydCBjb25zdCBpc1RpY2tldFJlZnVuZGFibGUgPSAodGlja2V0KSA9PlxuICB0aWNrZXQ/LmZpbmFsX2Ftb3VudCA+IDAgJiZcbiAgdGlja2V0Py5uZXRfc2VsbGluZ19jb3N0ID4gdGlja2V0LnJlZnVuZGVkX2Ftb3VudCAmJlxuICAhdGlja2V0Py5yZWZ1bmRfcmVxdWVzdHM/LnNvbWUoXG4gICAgKHJyKSA9PiByci5zdGF0dXMgPT09IFNUQVRVU19SRUZVTkRfUEVORElOR19MQ1xuICApO1xuXG5leHBvcnQgY29uc3QgdGlja2V0c1JlZnVuZGFibGUgPSAodGlja2V0cykgPT5cbiAgdGlja2V0cz8uZmlsdGVyKCh0aWNrZXQpID0+IGlzVGlja2V0UmVmdW5kYWJsZSh0aWNrZXQpKS5sZW5ndGggfHwgMDtcblxuZXhwb3J0IGNvbnN0IGdldFJlZnVuZGVkUmVxdWVzdGVkVGlja2V0cyA9ICh0aWNrZXRzKSA9PlxuICB0aWNrZXRzPy5maWx0ZXIoKHRpY2tldCkgPT5cbiAgICB0aWNrZXQucmVmdW5kX3JlcXVlc3RzPy5zb21lKChycikgPT4gcnIuc3RhdHVzID09PSBTVEFUVVNfUkVGVU5EX1BFTkRJTkdfTEMpXG4gICk7XG5leHBvcnQgY29uc3QgZ2V0QWxsUmVmdW5kUmVxdWVzdGVkVGlja2V0cyA9ICh0aWNrZXRzKSA9PiB7XG4gIGNvbnN0IGFsbFRpY2tldHMgPSBbXTtcbiAgdGlja2V0cz8ubWFwKCh0aWNrZXQpID0+IHtcbiAgICBpZiAoXG4gICAgICB0aWNrZXQucmVmdW5kX3JlcXVlc3RzPy5zb21lKFxuICAgICAgICAocnIpID0+IHJyLnN0YXR1cyA9PT0gU1RBVFVTX1JFRlVORF9QRU5ESU5HX0xDXG4gICAgICApIHx8XG4gICAgICB0aWNrZXQucmVmdW5kX3JlcXVlc3RzPy5zb21lKFxuICAgICAgICAocnIpID0+IHJyLnN0YXR1cyA9PT0gU1RBVFVTX1JFRlVORF9BUFBST1ZFRF9MQ1xuICAgICAgKSB8fFxuICAgICAgdGlja2V0LnJlZnVuZF9yZXF1ZXN0cz8uc29tZShcbiAgICAgICAgKHJyKSA9PiByci5zdGF0dXMgPT09IFNUQVRVU19SRUZVTkRfUkVKRUNURURfTENcbiAgICAgIClcbiAgICApIHtcbiAgICAgIGFsbFRpY2tldHMucHVzaCh0aWNrZXQpO1xuICAgIH1cbiAgICByZXR1cm4gdGlja2V0O1xuICB9KTtcbiAgcmV0dXJuIGFsbFRpY2tldHM7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0UmVmdW5kZWRSZXF1ZXN0ZWRTdGF0dXMgPSAodGlja2V0KSA9PiB7XG4gIGlmIChcbiAgICB0aWNrZXQucmVmdW5kX3JlcXVlc3RzPy5zb21lKChycikgPT4gcnIuc3RhdHVzID09PSBTVEFUVVNfUkVGVU5EX1BFTkRJTkdfTEMpXG4gIClcbiAgICByZXR1cm4gU1RBVFVTX1JFRlVORF9QRU5ESU5HO1xuICBpZiAoXG4gICAgdGlja2V0LnJlZnVuZF9yZXF1ZXN0cz8uc29tZShcbiAgICAgIChycikgPT4gcnIuc3RhdHVzID09PSBTVEFUVVNfUkVGVU5EX0FQUFJPVkVEX0xDXG4gICAgKVxuICApXG4gICAgcmV0dXJuIFNUQVRVU19SRUZVTkRfQVBQUk9WRUQ7XG4gIGlmIChcbiAgICB0aWNrZXQucmVmdW5kX3JlcXVlc3RzPy5zb21lKFxuICAgICAgKHJyKSA9PiByci5zdGF0dXMgPT09IFNUQVRVU19SRUZVTkRfUkVKRUNURURfTENcbiAgICApXG4gIClcbiAgICByZXR1cm4gU1RBVFVTX1JFRlVORF9SRUpFQ1RFRDtcbiAgcmV0dXJuIFNUQVRVU19SRUZVTkRfUEVORElORztcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRSZWZ1bmRSZXF1ZXN0ZWRTdGF0dXNDb2xvciA9ICh0aWNrZXQpID0+IHtcbiAgY29uc3Qgc3RhdHVzID0gZ2V0UmVmdW5kZWRSZXF1ZXN0ZWRTdGF0dXModGlja2V0KTtcbiAgbGV0IHN0YXR1c0NvbG9yID0gXCJcIjtcbiAgc3dpdGNoIChzdGF0dXMpIHtcbiAgICBjYXNlIFNUQVRVU19SRUZVTkRfUEVORElORzpcbiAgICAgIHN0YXR1c0NvbG9yID0gXCJwZW5kaW5nXCI7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFNUQVRVU19SRUZVTkRfQVBQUk9WRUQ6XG4gICAgICBzdGF0dXNDb2xvciA9IFwiYXBwcm92ZWRcIjtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgU1RBVFVTX1JFRlVORF9SRUpFQ1RFRDpcbiAgICAgIHN0YXR1c0NvbG9yID0gXCJyZWplY3RlZFwiO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIHN0YXR1c0NvbG9yID0gXCJwZW5kaW5nXCI7XG4gIH1cbiAgcmV0dXJuIHN0YXR1c0NvbG9yO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFR5cGVWYWxpZGF0aW9uID0gKHR5cGUsIG5hbWUsIGlzUmVxdWlyZWQpID0+IHtcbiAgbGV0IHNjaGVtYTtcbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ2hlY2tib3g6XG4gICAgICBzY2hlbWEgPSB5dXAuYm9vbCgpLm9uZU9mKFt0cnVlXSwgaTE4bi50KFwidmFsaWRhdGlvbi5jaGVja2JveC5yZXF1aXJlZFwiKSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbkxpc3Q6XG4gICAgICBzY2hlbWEgPSB5dXAuc3RyaW5nKGBFbnRlciAke25hbWV9YCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3Q6XG4gICAgICBzY2hlbWEgPSB5dXAuYXJyYXkoKS5vZih5dXAuc3RyaW5nKCkpO1xuICAgICAgaWYgKGlzUmVxdWlyZWQpIHNjaGVtYSA9IHNjaGVtYS5taW4oTUlOX1JFUVVJUkVELCBgJHtuYW1lfSBpcyByZXF1aXJlZGApO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ291bnRyeUNvbWJvQm94OlxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NvbWJvQm94OlxuICAgICAgc2NoZW1hID0geXVwLnN0cmluZyhgRW50ZXIgJHtuYW1lfWApO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIHNjaGVtYSA9IHl1cC5zdHJpbmcoYEVudGVyICR7bmFtZX1gKTtcbiAgICAgIGJyZWFrO1xuICB9XG5cbiAgaWYgKGlzUmVxdWlyZWQpIHtcbiAgICBzY2hlbWEgPSBzY2hlbWEucmVxdWlyZWQoYCR7bmFtZX0gaXMgcmVxdWlyZWRgKTtcbiAgfVxuXG4gIHJldHVybiBzY2hlbWE7XG59O1xuXG5jb25zdCBwYXJzZVN1YlF1ZXN0aW9uQW5zd2VyID0gKFxuICBxLFxuICBhbnN3ZXJzLFxuICBhbnN3ZXIsXG4gIGluaXRpYWxWYWx1ZXMsXG4gIG9ubHlSZWxldmFudFxuKSA9PiB7XG4gIGlmIChxLnN1Yl9xdWVzdGlvbl9ydWxlcz8ubGVuZ3RoID4gMCkge1xuICAgIHEuc3ViX3F1ZXN0aW9uX3J1bGVzLmZvckVhY2goKHJ1bGUpID0+IHtcbiAgICAgIGNvbnN0IHsgc3ViX3F1ZXN0aW9uLCBhbnN3ZXJfdmFsdWVzIH0gPSBydWxlO1xuICAgICAgY29uc3Qgc3ViUXVlc3Rpb25TbHVnID0gdG9TbHVnKHN1Yl9xdWVzdGlvbi5uYW1lLCBzdWJfcXVlc3Rpb24uaWQpO1xuICAgICAgY29uc3Qgc3ViQW5zd2VyID0gYW5zd2Vyc1tzdWJRdWVzdGlvblNsdWddO1xuICAgICAgY29uc3QgbWF0Y2ggPSBjaGVja0lmVmFsdWVNYXRjaChhbnN3ZXIsIGFuc3dlcl92YWx1ZXMpO1xuXG4gICAgICBpZiAoIW9ubHlSZWxldmFudCB8fCBtYXRjaCkge1xuICAgICAgICBpbml0aWFsVmFsdWVzW3N1YlF1ZXN0aW9uU2x1Z10gPVxuICAgICAgICAgIHN1YkFuc3dlciB8fCBnZXRUeXBlSW5pdGlhbFZhbHVlKHN1Yl9xdWVzdGlvbik7XG4gICAgICB9XG5cbiAgICAgIHBhcnNlU3ViUXVlc3Rpb25BbnN3ZXIoXG4gICAgICAgIHN1Yl9xdWVzdGlvbixcbiAgICAgICAgYW5zd2VycyxcbiAgICAgICAgc3ViQW5zd2VyLFxuICAgICAgICBpbml0aWFsVmFsdWVzLFxuICAgICAgICBvbmx5UmVsZXZhbnRcbiAgICAgICk7XG4gICAgfSk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBwYXJzZUFuc3dlcnMgPSAoXG4gIG93bmVyLFxuICBleHRyYVF1ZXN0aW9ucyxcbiAgYW5zd2VycyxcbiAgaW5jbHVkZUF0dGVuZGVlSW5mbyxcbiAgaW5jbHVkZURpc2NsYWltZXIsXG4gIG9ubHlSZWxldmFudCA9IGZhbHNlXG4pID0+IHtcbiAgY29uc3QgaW5pdGlhbFZhbHVlcyA9IHt9O1xuXG4gIGlmIChpbmNsdWRlQXR0ZW5kZWVJbmZvKSB7XG4gICAgaW5pdGlhbFZhbHVlc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5lbWFpbF0gPVxuICAgICAgYW5zd2Vyc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5lbWFpbF0gfHwgb3duZXIuZW1haWwgfHwgXCJcIjtcbiAgICBpbml0aWFsVmFsdWVzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmZpcnN0TmFtZV0gPVxuICAgICAgYW5zd2Vyc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5maXJzdE5hbWVdIHx8IG93bmVyLmZpcnN0X25hbWUgfHwgXCJcIjtcbiAgICBpbml0aWFsVmFsdWVzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmxhc3ROYW1lXSA9XG4gICAgICBhbnN3ZXJzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmxhc3ROYW1lXSB8fCBvd25lci5sYXN0X25hbWUgfHwgXCJcIjtcbiAgICBpbml0aWFsVmFsdWVzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmNvbXBhbnldID1cbiAgICAgIGFuc3dlcnNbVElDS0VUX0FUVEVOREVFX0tFWVMuY29tcGFueV0gfHwgb3duZXIuY29tcGFueTtcbiAgfVxuXG4gIGlmIChpbmNsdWRlRGlzY2xhaW1lcikge1xuICAgIGluaXRpYWxWYWx1ZXNbVElDS0VUX0FUVEVOREVFX0tFWVMuZGlzY2xhaW1lckFjY2VwdGVkXSA9XG4gICAgICBhbnN3ZXJzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmRpc2NsYWltZXJBY2NlcHRlZF0gfHxcbiAgICAgIG93bmVyLmRpc2NsYWltZXJfYWNjZXB0ZWQ7XG4gIH1cblxuICBleHRyYVF1ZXN0aW9ucy5mb3JFYWNoKChxKSA9PiB7XG4gICAgY29uc3QgcXVlc3Rpb25TbHVnID0gdG9TbHVnKHEubmFtZSwgcS5pZCk7XG4gICAgY29uc3QgYW5zd2VyID0gYW5zd2Vyc1txdWVzdGlvblNsdWddO1xuICAgIGluaXRpYWxWYWx1ZXNbcXVlc3Rpb25TbHVnXSA9IGFuc3dlciB8fCBnZXRUeXBlSW5pdGlhbFZhbHVlKHEpO1xuXG4gICAgcGFyc2VTdWJRdWVzdGlvbkFuc3dlcihxLCBhbnN3ZXJzLCBhbnN3ZXIsIGluaXRpYWxWYWx1ZXMsIG9ubHlSZWxldmFudCk7XG4gIH0pO1xuXG4gIHJldHVybiBpbml0aWFsVmFsdWVzO1xufTtcblxuY29uc3QgYnVpbGRTdWJRdWVzdGlvblZhbGlkYXRpb25TY2hlbWEgPSAocXVlc3Rpb25TbHVnLCBydWxlLCBzY2hlbWEpID0+IHtcbiAgY29uc3Qgc3ViUXVlc3Rpb24gPSBydWxlLnN1Yl9xdWVzdGlvbjtcbiAgY29uc3Qgc3ViUXVlc3Rpb25TbHVnID0gdG9TbHVnKHN1YlF1ZXN0aW9uLm5hbWUsIHN1YlF1ZXN0aW9uLmlkKTtcblxuICBzY2hlbWFbc3ViUXVlc3Rpb25TbHVnXSA9IGdldFR5cGVWYWxpZGF0aW9uKFxuICAgIHN1YlF1ZXN0aW9uLnR5cGUsXG4gICAgc3ViUXVlc3Rpb24ubmFtZSxcbiAgICBmYWxzZVxuICApXG4gICAgLm51bGxhYmxlKClcbiAgICAud2hlbihxdWVzdGlvblNsdWcsIHtcbiAgICAgIGlzOiAocXVlc3Rpb25BbnMpID0+IHtcbiAgICAgICAgY29uc3QgYW5zVmFsdWVNYXRjaCA9IGNoZWNrSWZWYWx1ZU1hdGNoKFxuICAgICAgICAgIHF1ZXN0aW9uQW5zLFxuICAgICAgICAgIHJ1bGUuYW5zd2VyX3ZhbHVlc1xuICAgICAgICApO1xuICAgICAgICAvLyBjaGVjayBpZiBxdWVzdGlvbiBpcyB2aXNpYmxlIHRvIGFkZCB2YWxpZGF0aW9uXG4gICAgICAgIGNvbnN0IGlzVmlzaWJsZSA9ICEhZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXG4gICAgICAgICAgYCR7cXVlc3Rpb25TbHVnfV9jb250YWluZXJgXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiBhbnNWYWx1ZU1hdGNoICYmIGlzVmlzaWJsZTtcbiAgICAgIH0sXG4gICAgICB0aGVuOiAoc2NoKSA9PiB7XG4gICAgICAgIGlmIChzdWJRdWVzdGlvbi50eXBlID09PSBRdWVzdGlvblR5cGVfQ2hlY2tCb3hMaXN0KSB7XG4gICAgICAgICAgcmV0dXJuIHNjaFxuICAgICAgICAgICAgLm1pbihNSU5fUkVRVUlSRUQsIGkxOG4udChcInZhbGlkYXRpb24ucmVxdWlyZWRfcXVlc3Rpb25cIikpXG4gICAgICAgICAgICAucmVxdWlyZWQoaTE4bi50KFwidmFsaWRhdGlvbi5yZXF1aXJlZF9xdWVzdGlvblwiKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHNjaC5yZXF1aXJlZChpMThuLnQoXCJ2YWxpZGF0aW9uLnJlcXVpcmVkX3F1ZXN0aW9uXCIpKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICBpZiAoc3ViUXVlc3Rpb24uc3ViX3F1ZXN0aW9uX3J1bGVzPy5sZW5ndGggPiAwKSB7XG4gICAgc3ViUXVlc3Rpb24uc3ViX3F1ZXN0aW9uX3J1bGVzLmZvckVhY2goKHN1YlJ1bGUpID0+IHtcbiAgICAgIGJ1aWxkU3ViUXVlc3Rpb25WYWxpZGF0aW9uU2NoZW1hKHN1YlF1ZXN0aW9uU2x1Zywgc3ViUnVsZSwgc2NoZW1hKTtcbiAgICB9KTtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGJ1aWxkVmFsaWRhdGlvblNjaGVtYSA9IChcbiAgZXh0cmFRdWVzdGlvbnMsXG4gIGluY2x1ZGVBdHRlbmRlZUluZm8sXG4gIGRpc2NsYWltZXJNYW5kYXRvcnlcbikgPT4ge1xuICBjb25zdCBzY2hlbWEgPSB7fTtcblxuICBpZiAoaW5jbHVkZUF0dGVuZGVlSW5mbykge1xuICAgIHNjaGVtYVtUSUNLRVRfQVRURU5ERUVfS0VZUy5lbWFpbF0gPSB5dXBcbiAgICAgIC5zdHJpbmcoaTE4bi50KFwidmFsaWRhdGlvbi5lbWFpbC5zdHJpbmdcIikpXG4gICAgICAuZW1haWwoaTE4bi50KFwidmFsaWRhdGlvbi5lbWFpbC5mb3JtYXRcIikpXG4gICAgICAucmVxdWlyZWQoaTE4bi50KFwidmFsaWRhdGlvbi5lbWFpbC5yZXF1aXJlZFwiKSk7XG4gICAgc2NoZW1hW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmZpcnN0TmFtZV0gPSB5dXBcbiAgICAgIC5zdHJpbmcoaTE4bi50KFwidmFsaWRhdGlvbi5maXJzdF9uYW1lLnN0cmluZ1wiKSlcbiAgICAgIC5yZXF1aXJlZChpMThuLnQoXCJ2YWxpZGF0aW9uLmZpcnN0X25hbWUucmVxdWlyZWRcIikpO1xuICAgIHNjaGVtYVtUSUNLRVRfQVRURU5ERUVfS0VZUy5sYXN0TmFtZV0gPSB5dXBcbiAgICAgIC5zdHJpbmcoaTE4bi50KFwidmFsaWRhdGlvbi5sYXN0X25hbWUuc3RyaW5nXCIpKVxuICAgICAgLnJlcXVpcmVkKGkxOG4udChcInZhbGlkYXRpb24ubGFzdF9uYW1lLnJlcXVpcmVkXCIpKTtcbiAgICBzY2hlbWFbVElDS0VUX0FUVEVOREVFX0tFWVMuY29tcGFueV0gPSB5dXAubGF6eSgodmFsdWUpID0+XG4gICAgICB0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCJcbiAgICAgICAgPyB5dXBcbiAgICAgICAgICAgIC5vYmplY3QoKVxuICAgICAgICAgICAgLnJlcXVpcmVkKGkxOG4udChcInZhbGlkYXRpb24uY29tcGFueS5yZXF1aXJlZFwiKSlcbiAgICAgICAgICAgIC50eXBlRXJyb3IoaTE4bi50KFwidmFsaWRhdGlvbi5yZXF1aXJlZF9maWVsZFwiKSlcbiAgICAgICAgOiB5dXAuc3RyaW5nKCkucmVxdWlyZWQoaTE4bi50KFwidmFsaWRhdGlvbi5jb21wYW55LnJlcXVpcmVkXCIpKVxuICAgICk7XG4gIH1cblxuICBpZiAoZGlzY2xhaW1lck1hbmRhdG9yeSkge1xuICAgIHNjaGVtYVtUSUNLRVRfQVRURU5ERUVfS0VZUy5kaXNjbGFpbWVyQWNjZXB0ZWRdID0geXVwXG4gICAgICAuYm9vbCgpXG4gICAgICAub25lT2YoW3RydWVdLCBpMThuLnQoXCJ2YWxpZGF0aW9uLmNoZWNrYm94LnJlcXVpcmVkXCIpKTtcbiAgfVxuXG4gIGV4dHJhUXVlc3Rpb25zLmZvckVhY2goKHEpID0+IHtcbiAgICBjb25zdCB7IGlkLCBuYW1lLCB0eXBlLCBtYW5kYXRvcnksIHN1Yl9xdWVzdGlvbl9ydWxlcyB9ID0gcTtcbiAgICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcobmFtZSwgaWQpO1xuICAgIHNjaGVtYVtxdWVzdGlvblNsdWddID0gZ2V0VHlwZVZhbGlkYXRpb24odHlwZSwgbmFtZSwgbWFuZGF0b3J5KTtcblxuICAgIGlmIChzdWJfcXVlc3Rpb25fcnVsZXM/Lmxlbmd0aCA+IDApIHtcbiAgICAgIHN1Yl9xdWVzdGlvbl9ydWxlcy5mb3JFYWNoKChydWxlKSA9PiB7XG4gICAgICAgIGJ1aWxkU3ViUXVlc3Rpb25WYWxpZGF0aW9uU2NoZW1hKHF1ZXN0aW9uU2x1ZywgcnVsZSwgc2NoZW1hKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIHl1cC5vYmplY3Qoc2NoZW1hKTtcbn07XG5cbmV4cG9ydCBjb25zdCB1cGRhdGVUaWNrZXRDb2xsZWN0aW9uID0gKHRpY2tldHMsIHRpY2tldCkgPT5cbiAgdGlja2V0cy5tYXAoKHQpID0+IHtcbiAgICBjb25zdCB0bXBUaWNrZXQgPSB7IC4uLnQgfTtcbiAgICAvLyB1cGRhdGUgYXR0ZW5kZWVcbiAgICBpZiAoXG4gICAgICB0Lm93bmVyPy5pZCA9PT0gdGlja2V0Lm93bmVyPy5pZCAmJlxuICAgICAgdC5vd25lcj8uc3RhdHVzICE9PSB0aWNrZXQub3duZXI/LnN0YXR1c1xuICAgICkge1xuICAgICAgdG1wVGlja2V0Lm93bmVyID0gdGlja2V0Lm93bmVyO1xuICAgIH1cbiAgICByZXR1cm4gdC5pZCA9PT0gdGlja2V0LmlkID8gdGlja2V0IDogdG1wVGlja2V0O1xuICB9KTtcbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJiYWRnZUZlYXR1cmVJY29uX19fc0tWVENcIjtcbnZhciBfMiA9IFwiYmFkZ2VGZWF0dXJlSW1hZ2VfX19ZTzRmc1wiO1xudmFyIF8zID0gXCJiYWRnZUZlYXR1cmVJbml0aWFsc19fX2tXN1prXCI7XG5leHBvcnQgeyBfMSBhcyBcImJhZGdlRmVhdHVyZUljb25cIiwgXzIgYXMgXCJiYWRnZUZlYXR1cmVJbWFnZVwiLCBfMyBhcyBcImJhZGdlRmVhdHVyZUluaXRpYWxzXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImNvcHlJY29uX19fbEkzZVFcIjtcbnZhciBfMiA9IFwicmV2ZXJzZWRfX196SnptRFwiO1xudmFyIF8zID0gXCJ0cnVuY2F0ZWRfX19qV1NuVVwiO1xudmFyIF80ID0gXCJ3cmFwcGVyX19fbVZQaVJcIjtcbmV4cG9ydCB7IF8xIGFzIFwiY29weUljb25cIiwgXzIgYXMgXCJyZXZlcnNlZFwiLCBfMyBhcyBcInRydW5jYXRlZFwiLCBfNCBhcyBcIndyYXBwZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiTXVpT3V0bGluZWRJbnB1dC1ub3RjaGVkT3V0bGluZV9fX214RUtXXCI7XG52YXIgXzIgPSBcIk11aVBpY2tlcnNDYWxlbmRhckhlYWRlci1sYWJlbENvbnRhaW5lcl9fX080c1NzXCI7XG52YXIgXzMgPSBcImNhbGVuZGFyRGlzcGxheV9fX0YzbnVLXCI7XG52YXIgXzQgPSBcImNsZWFuQnV0dG9uX19fcXFEdlVcIjtcbnZhciBfNSA9IFwiY29udGFpbmVyX19fUWVRWV9cIjtcbnZhciBfNiA9IFwiZGF0ZVBpY2tlckNvbnRhaW5lcl9fX1o0Mm13XCI7XG52YXIgXzcgPSBcImRhdGVwaWNrZXJDbG9zZV9fX1RaN2tKXCI7XG52YXIgXzggPSBcImZpbHRlckNoZWNrYm94Q29udGFpbmVyX19fa1VuVzlcIjtcbnZhciBfOSA9IFwiZmlsdGVyQ29udGFpbmVyX19fcnJxcDlcIjtcbnZhciBfYSA9IFwiZmlsdGVyRGF0ZUxhYmVsX19fSmdiY3NcIjtcbnZhciBfYiA9IFwiZmlsdGVySWNvbl9fX2lpT3pvXCI7XG52YXIgX2MgPSBcImZpbHRlckxhYmVsX19fc2taUDdcIjtcbnZhciBfZCA9IFwiZmlsdGVyTGlzdENvbnRhaW5lcl9fX0lEcmxTXCI7XG52YXIgX2UgPSBcImZpbHRlck51bUFjdGl2ZV9fX2ttRUVLXCI7XG52YXIgX2YgPSBcImZpbHRlclNvcnRDb250YWluZXJfX19uaE5Kc1wiO1xudmFyIF8xMCA9IFwibGFiZWxfX19MQW1lX1wiO1xudmFyIF8xMSA9IFwic2hvd0ZpbHRlckxpc3RfX19JVzR4R1wiO1xudmFyIF8xMiA9IFwic29ydENvbnRhaW5lcl9fX3NiNUJkXCI7XG52YXIgXzEzID0gXCJzb3J0SWNvbl9fX2NfWFppXCI7XG52YXIgXzE0ID0gXCJzb3J0TGFiZWxfX19kWGlNeVwiO1xudmFyIF8xNSA9IFwic29ydExpc3RDb250YWluZXJfX19QcDJYZ1wiO1xudmFyIF8xNiA9IFwidGl0bGVXcmFwcGVyX19fUDZtUHVcIjtcbmV4cG9ydCB7IF8xIGFzIFwiTXVpT3V0bGluZWRJbnB1dC1ub3RjaGVkT3V0bGluZVwiLCBfMiBhcyBcIk11aVBpY2tlcnNDYWxlbmRhckhlYWRlci1sYWJlbENvbnRhaW5lclwiLCBfMyBhcyBcImNhbGVuZGFyRGlzcGxheVwiLCBfNCBhcyBcImNsZWFuQnV0dG9uXCIsIF81IGFzIFwiY29udGFpbmVyXCIsIF82IGFzIFwiZGF0ZVBpY2tlckNvbnRhaW5lclwiLCBfNyBhcyBcImRhdGVwaWNrZXJDbG9zZVwiLCBfOCBhcyBcImZpbHRlckNoZWNrYm94Q29udGFpbmVyXCIsIF85IGFzIFwiZmlsdGVyQ29udGFpbmVyXCIsIF9hIGFzIFwiZmlsdGVyRGF0ZUxhYmVsXCIsIF9iIGFzIFwiZmlsdGVySWNvblwiLCBfYyBhcyBcImZpbHRlckxhYmVsXCIsIF9kIGFzIFwiZmlsdGVyTGlzdENvbnRhaW5lclwiLCBfZSBhcyBcImZpbHRlck51bUFjdGl2ZVwiLCBfZiBhcyBcImZpbHRlclNvcnRDb250YWluZXJcIiwgXzEwIGFzIFwibGFiZWxcIiwgXzExIGFzIFwic2hvd0ZpbHRlckxpc3RcIiwgXzEyIGFzIFwic29ydENvbnRhaW5lclwiLCBfMTMgYXMgXCJzb3J0SWNvblwiLCBfMTQgYXMgXCJzb3J0TGFiZWxcIiwgXzE1IGFzIFwic29ydExpc3RDb250YWluZXJcIiwgXzE2IGFzIFwidGl0bGVXcmFwcGVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImNhbmNlbEJ0bl9fX3FEZXhoXCI7XG52YXIgXzIgPSBcImZvb3Rlcl9fX1NONzB5XCI7XG52YXIgXzMgPSBcInNhdmVCdG5fX19uYlU2Y1wiO1xuZXhwb3J0IHsgXzEgYXMgXCJjYW5jZWxCdG5cIiwgXzIgYXMgXCJmb290ZXJcIiwgXzMgYXMgXCJzYXZlQnRuXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImVycm9yTGFiZWxfX19ub2N5WFwiO1xuZXhwb3J0IHsgXzEgYXMgXCJlcnJvckxhYmVsXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcIm15T3JkZXJzV3JhcHBlcl9fX0hKbXlzXCI7XG52YXIgXzIgPSBcIm5vT3JkZXJzRm91bmRfX19EUndnb1wiO1xudmFyIF8zID0gXCJub09yZGVyc0ljb25XcmFwcGVyX19fdFBUbVlcIjtcbmV4cG9ydCB7IF8xIGFzIFwibXlPcmRlcnNXcmFwcGVyXCIsIF8yIGFzIFwibm9PcmRlcnNGb3VuZFwiLCBfMyBhcyBcIm5vT3JkZXJzSWNvbldyYXBwZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiYm9keV9fX0FXZGlMXCI7XG52YXIgXzIgPSBcImljb25XcmFwcGVyX19fbXpldktcIjtcbnZhciBfMyA9IFwidGl0bGVfX19NMjQybVwiO1xudmFyIF80ID0gXCJ3cmFwcGVyX19fUXN3Q1BcIjtcbmV4cG9ydCB7IF8xIGFzIFwiYm9keVwiLCBfMiBhcyBcImljb25XcmFwcGVyXCIsIF8zIGFzIFwidGl0bGVcIiwgXzQgYXMgXCJ3cmFwcGVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcIm9yZGVyRGV0YWlsc01tb3VudF9fX3Iza1JBXCI7XG52YXIgXzIgPSBcIm9yZGVyRGV0YWlsc1RpY2tldHNfX19tNElqS1wiO1xudmFyIF8zID0gXCJvcmRlclN1bW1hcnlCdXR0b25fX191eGpodFwiO1xudmFyIF80ID0gXCJvcmRlclN1bW1hcnlQdXJjaGFzZWRJbmZvX19fX1JCWEVcIjtcbnZhciBfNSA9IFwib3JkZXJTdW1tYXJ5VGFibGVfX19ZRG54VlwiO1xudmFyIF82ID0gXCJvcmRlclN1bW1hcnlXcmFwcGVyX19fUndJRVJcIjtcbnZhciBfNyA9IFwicmVmdW5kRGlzYWJsZWRfX19qdnJrM1wiO1xuZXhwb3J0IHsgXzEgYXMgXCJvcmRlckRldGFpbHNNbW91bnRcIiwgXzIgYXMgXCJvcmRlckRldGFpbHNUaWNrZXRzXCIsIF8zIGFzIFwib3JkZXJTdW1tYXJ5QnV0dG9uXCIsIF80IGFzIFwib3JkZXJTdW1tYXJ5UHVyY2hhc2VkSW5mb1wiLCBfNSBhcyBcIm9yZGVyU3VtbWFyeVRhYmxlXCIsIF82IGFzIFwib3JkZXJTdW1tYXJ5V3JhcHBlclwiLCBfNyBhcyBcInJlZnVuZERpc2FibGVkXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImFzc2lnblRpY2tldEJ1dHRvbl9fX3p6THNjXCI7XG52YXIgXzIgPSBcImFzc2lnblRvTWVUZXh0X19fWlBhZXhcIjtcbnZhciBfMyA9IFwiYXNzaWduZWRCeVRleHRfX19iTlo3elwiO1xudmFyIF80ID0gXCJhc3NpZ25lZFRvTWVEZXNfX19HakZrVlwiO1xudmFyIF81ID0gXCJhc3NpZ25lZFRvTWVXcmFwcGVyX19fVXhjMnlcIjtcbnZhciBfNiA9IFwiYmFkZ2VGZWF0dXJlV3JhcHBlcl9fX0lRTE5QXCI7XG52YXIgXzcgPSBcImNoZWNrYm94X19fWFpKcGJcIjtcbnZhciBfOCA9IFwiZGlzYWJsZWRSZWZ1bmRfX19TZmZsN1wiO1xudmFyIF85ID0gXCJkaXNwbGF5X25vbmVfX19DcXBMM1wiO1xudmFyIF9hID0gXCJsYWJlbF9fX3pYRFd6XCI7XG52YXIgX2IgPSBcIm9yZGVyVGlja2V0Q29udGFpbmVyX19fWkpMemtcIjtcbnZhciBfYyA9IFwib3JkZXJUaWNrZXRJbmZvX19fZ2VtcUJcIjtcbnZhciBfZCA9IFwib3JkZXJUaWNrZXRJbmZvQ29udGFpbmVyX19fX3A2NlZcIjtcbnZhciBfZSA9IFwib3JkZXJXcmFwcGVyX19feURCQW9cIjtcbnZhciBfZiA9IFwicmVhc3NpZ25CdXR0b25fX19Sb2pNNVwiO1xudmFyIF8xMCA9IFwicmVmdW5kQnV0dG9uc19fX2pEbDRIXCI7XG52YXIgXzExID0gXCJyZWZ1bmRNb2RhbF9fX0VxZ1BGXCI7XG52YXIgXzEyID0gXCJzZWxlY3RlZF9fX0hXR05jXCI7XG52YXIgXzEzID0gXCJ0YWJCdXR0b25zX19feFR5SkFcIjtcbnZhciBfMTQgPSBcInRpY2tldEFjdGlvbkJ1dHRvbnNfX19ycFNNUVwiO1xudmFyIF8xNSA9IFwidGlja2V0Rm9vdGVyX19fajNiZGlcIjtcbnZhciBfMTYgPSBcInRpY2tldExpc3RDb250YWluZXJfX19jZm1yclwiO1xudmFyIF8xNyA9IFwidGlja2V0Tm9fX19hMmlNOVwiO1xudmFyIF8xOCA9IFwidGlja2V0T3duZXJFbWFpbF9fX1p0NE9FXCI7XG52YXIgXzE5ID0gXCJ0aWNrZXRUaWNrZXRUeXBlX19fWnFfZjBcIjtcbnZhciBfMWEgPSBcInZpZXdGaW5pc2hUaWNrZXRCdXR0b25fX19IRjZJbVwiO1xudmFyIF8xYiA9IFwidmlld01vcmVCdXR0b25fX19LXzF6VFwiO1xuZXhwb3J0IHsgXzEgYXMgXCJhc3NpZ25UaWNrZXRCdXR0b25cIiwgXzIgYXMgXCJhc3NpZ25Ub01lVGV4dFwiLCBfMyBhcyBcImFzc2lnbmVkQnlUZXh0XCIsIF80IGFzIFwiYXNzaWduZWRUb01lRGVzXCIsIF81IGFzIFwiYXNzaWduZWRUb01lV3JhcHBlclwiLCBfNiBhcyBcImJhZGdlRmVhdHVyZVdyYXBwZXJcIiwgXzcgYXMgXCJjaGVja2JveFwiLCBfOCBhcyBcImRpc2FibGVkUmVmdW5kXCIsIF85IGFzIFwiZGlzcGxheV9ub25lXCIsIF9hIGFzIFwibGFiZWxcIiwgX2IgYXMgXCJvcmRlclRpY2tldENvbnRhaW5lclwiLCBfYyBhcyBcIm9yZGVyVGlja2V0SW5mb1wiLCBfZCBhcyBcIm9yZGVyVGlja2V0SW5mb0NvbnRhaW5lclwiLCBfZSBhcyBcIm9yZGVyV3JhcHBlclwiLCBfZiBhcyBcInJlYXNzaWduQnV0dG9uXCIsIF8xMCBhcyBcInJlZnVuZEJ1dHRvbnNcIiwgXzExIGFzIFwicmVmdW5kTW9kYWxcIiwgXzEyIGFzIFwic2VsZWN0ZWRcIiwgXzEzIGFzIFwidGFiQnV0dG9uc1wiLCBfMTQgYXMgXCJ0aWNrZXRBY3Rpb25CdXR0b25zXCIsIF8xNSBhcyBcInRpY2tldEZvb3RlclwiLCBfMTYgYXMgXCJ0aWNrZXRMaXN0Q29udGFpbmVyXCIsIF8xNyBhcyBcInRpY2tldE5vXCIsIF8xOCBhcyBcInRpY2tldE93bmVyRW1haWxcIiwgXzE5IGFzIFwidGlja2V0VGlja2V0VHlwZVwiLCBfMWEgYXMgXCJ2aWV3RmluaXNoVGlja2V0QnV0dG9uXCIsIF8xYiBhcyBcInZpZXdNb3JlQnV0dG9uXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcIkNUQUJ1dHRvbldyYXBwZXJfX19LZ3E2Z1wiO1xudmFyIF8yID0gXCJhY3Rpb25CdXR0b25zX19fdTdtUFNcIjtcbnZhciBfMyA9IFwiYXBwcm92ZWRfX19zeEVKV1wiO1xudmFyIF80ID0gXCJiYWRnZUZlYXR1cmVXcmFwcGVyX19fXzlHYkRcIjtcbnZhciBfNSA9IFwiYnV0dG9uUGlsbF9fX0xlc2F6XCI7XG52YXIgXzYgPSBcImNhbmNlbEJ1dHRvbl9fX3lmaFliXCI7XG52YXIgXzcgPSBcImNvbnRpbnVlQnV0dG9uX19fTnlYM3NcIjtcbnZhciBfOCA9IFwiZGVsZXRlSWNvbl9fX0ZTd3llXCI7XG52YXIgXzkgPSBcInBlbmRpbmdfX19hRWJXd1wiO1xudmFyIF9hID0gXCJyZWZ1bmREZXRhaWxfX19jUTI4VlwiO1xudmFyIF9iID0gXCJyZWZ1bmRFcnJvck1zZ19fX0FhaHpyXCI7XG52YXIgX2MgPSBcInJlZnVuZFN1Y2Nlc3NmdWxfX196ckRRWVwiO1xudmFyIF9kID0gXCJyZWZ1bmRUZXh0X19fYUVuTDlcIjtcbnZhciBfZSA9IFwicmVmdW5kVGlja2V0QXR0ZW5kZWVfX19RWENqTVwiO1xudmFyIF9mID0gXCJyZWZ1bmRUaWNrZXRCb3hDb250YWluZXJfX195YTYxM1wiO1xudmFyIF8xMCA9IFwicmVqZWN0ZWRfX19OSkU0WlwiO1xudmFyIF8xMSA9IFwic3VidGl0bGVfX19QdERlMlwiO1xudmFyIF8xMiA9IFwic3VjY2Vzc01zZ19fX0h0TXNlXCI7XG52YXIgXzEzID0gXCJzdWNjZXNzTXNnMl9fX1E2em5hXCI7XG52YXIgXzE0ID0gXCJ0aWNrZXRMaXN0X19fZURRUjNcIjtcbnZhciBfMTUgPSBcInRpY2tldE5vX19fX0VBRDRcIjtcbmV4cG9ydCB7IF8xIGFzIFwiQ1RBQnV0dG9uV3JhcHBlclwiLCBfMiBhcyBcImFjdGlvbkJ1dHRvbnNcIiwgXzMgYXMgXCJhcHByb3ZlZFwiLCBfNCBhcyBcImJhZGdlRmVhdHVyZVdyYXBwZXJcIiwgXzUgYXMgXCJidXR0b25QaWxsXCIsIF82IGFzIFwiY2FuY2VsQnV0dG9uXCIsIF83IGFzIFwiY29udGludWVCdXR0b25cIiwgXzggYXMgXCJkZWxldGVJY29uXCIsIF85IGFzIFwicGVuZGluZ1wiLCBfYSBhcyBcInJlZnVuZERldGFpbFwiLCBfYiBhcyBcInJlZnVuZEVycm9yTXNnXCIsIF9jIGFzIFwicmVmdW5kU3VjY2Vzc2Z1bFwiLCBfZCBhcyBcInJlZnVuZFRleHRcIiwgX2UgYXMgXCJyZWZ1bmRUaWNrZXRBdHRlbmRlZVwiLCBfZiBhcyBcInJlZnVuZFRpY2tldEJveENvbnRhaW5lclwiLCBfMTAgYXMgXCJyZWplY3RlZFwiLCBfMTEgYXMgXCJzdWJ0aXRsZVwiLCBfMTIgYXMgXCJzdWNjZXNzTXNnXCIsIF8xMyBhcyBcInN1Y2Nlc3NNc2cyXCIsIF8xNCBhcyBcInRpY2tldExpc3RcIiwgXzE1IGFzIFwidGlja2V0Tm9cIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiY2xvc2VCdG5fX195U1FDT1wiO1xudmFyIF8yID0gXCJoZWFkZXJfX19mQlhHOVwiO1xudmFyIF8zID0gXCJ0aXRsZV9fX3R5WmVRXCI7XG52YXIgXzQgPSBcIndyYXBwZXJfX19ST0pHc1wiO1xuZXhwb3J0IHsgXzEgYXMgXCJjbG9zZUJ0blwiLCBfMiBhcyBcImhlYWRlclwiLCBfMyBhcyBcInRpdGxlXCIsIF80IGFzIFwid3JhcHBlclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJzdW1taXRUaXRsZURhdGVfX19YbnJwRlwiO1xudmFyIF8yID0gXCJ3aWRnZXRIZWFkZXJfX19nZ0x0TVwiO1xuZXhwb3J0IHsgXzEgYXMgXCJzdW1taXRUaXRsZURhdGVcIiwgXzIgYXMgXCJ3aWRnZXRIZWFkZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwidW5hc3NpZ25CdG5fX19pN21neVwiO1xudmFyIF8yID0gXCJ1bmFzc2lnbldyYXBwZXJfX19nM2UydVwiO1xudmFyIF8zID0gXCJ3cmFwcGVyX19fVzk0U0xcIjtcbmV4cG9ydCB7IF8xIGFzIFwidW5hc3NpZ25CdG5cIiwgXzIgYXMgXCJ1bmFzc2lnbldyYXBwZXJcIiwgXzMgYXMgXCJ3cmFwcGVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImhlYWRlck5vdGVfX19BZTVFQVwiO1xudmFyIF8yID0gXCJvcmRlck5vX19fVk9QUndcIjtcbnZhciBfMyA9IFwicHVyY2hhc2VkQnlfX19NTmlIVFwiO1xudmFyIF80ID0gXCJwdXJjaGFzZWRCeVdyYXBwZXJfX19EaDZIVVwiO1xudmFyIF81ID0gXCJ3cmFwcGVyX19fbVZ1aVpcIjtcbmV4cG9ydCB7IF8xIGFzIFwiaGVhZGVyTm90ZVwiLCBfMiBhcyBcIm9yZGVyTm9cIiwgXzMgYXMgXCJwdXJjaGFzZWRCeVwiLCBfNCBhcyBcInB1cmNoYXNlZEJ5V3JhcHBlclwiLCBfNSBhcyBcIndyYXBwZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwidGlja2V0UmVhc3NpZ25Db250YWluZXJfX19nT3RhSlwiO1xuZXhwb3J0IHsgXzEgYXMgXCJ0aWNrZXRSZWFzc2lnbkNvbnRhaW5lclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJ3cmFwcGVyX19fRXdPUnpcIjtcbmV4cG9ydCB7IF8xIGFzIFwid3JhcHBlclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJpbmZvTm90ZV9fX2kxWFk5XCI7XG52YXIgXzIgPSBcIndyYXBwZXJfX19NQXVOU1wiO1xuZXhwb3J0IHsgXzEgYXMgXCJpbmZvTm90ZVwiLCBfMiBhcyBcIndyYXBwZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiYWN0aW9uQnV0dG9uc0NvbnRhaW5lcl9fX0F1dnJuXCI7XG52YXIgXzIgPSBcImFkZGl0aW9uYWxEZXRhaWxzX19fbVAxaUpcIjtcbnZhciBfMyA9IFwiYXR0ZW5kZWVDb250YWluZXJfX19RMFZVelwiO1xudmFyIF80ID0gXCJhdHRlbmRlZUluZm9UaXRsZV9fX0xtcm00XCI7XG52YXIgXzUgPSBcImNsb3NlQnRuX19fV05KbEVcIjtcbnZhciBfNiA9IFwiY29weUJ0bl9fX191dEE2XCI7XG52YXIgXzcgPSBcImRlbGVnYXRlZFRvX19fU0dWUUlcIjtcbnZhciBfOCA9IFwiZG93bmxvYWRCdG5fX19xalloelwiO1xudmFyIF85ID0gXCJoZWFkZXJfX19BdWduelwiO1xudmFyIF9hID0gXCJvcmRlck51bWJlcl9fX0w1UTVhXCI7XG52YXIgX2IgPSBcInFyQ29kZV9fX2Z3cVpxXCI7XG52YXIgX2MgPSBcInFyTm90ZV9fX0djN0tuXCI7XG52YXIgX2QgPSBcInNlbmRCdG5fX19rb1dNMlwiO1xudmFyIF9lID0gXCJzZW50X19fazZXS3hcIjtcbnZhciBfZiA9IFwic3RhdHVzX19fa3dDOHlcIjtcbnZhciBfMTAgPSBcInN1YnRpdGxlX19feV9OdU9cIjtcbnZhciBfMTEgPSBcInRpY2tldERldGFpbENvbnRhaW5lcl9fX2IyVExSXCI7XG52YXIgXzEyID0gXCJ0aXRsZV9fX3dRelVOXCI7XG5leHBvcnQgeyBfMSBhcyBcImFjdGlvbkJ1dHRvbnNDb250YWluZXJcIiwgXzIgYXMgXCJhZGRpdGlvbmFsRGV0YWlsc1wiLCBfMyBhcyBcImF0dGVuZGVlQ29udGFpbmVyXCIsIF80IGFzIFwiYXR0ZW5kZWVJbmZvVGl0bGVcIiwgXzUgYXMgXCJjbG9zZUJ0blwiLCBfNiBhcyBcImNvcHlCdG5cIiwgXzcgYXMgXCJkZWxlZ2F0ZWRUb1wiLCBfOCBhcyBcImRvd25sb2FkQnRuXCIsIF85IGFzIFwiaGVhZGVyXCIsIF9hIGFzIFwib3JkZXJOdW1iZXJcIiwgX2IgYXMgXCJxckNvZGVcIiwgX2MgYXMgXCJxck5vdGVcIiwgX2QgYXMgXCJzZW5kQnRuXCIsIF9lIGFzIFwic2VudFwiLCBfZiBhcyBcInN0YXR1c1wiLCBfMTAgYXMgXCJzdWJ0aXRsZVwiLCBfMTEgYXMgXCJ0aWNrZXREZXRhaWxDb250YWluZXJcIiwgXzEyIGFzIFwidGl0bGVcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiYnV0dG9uQ2FuY2VsbGVkX19fRXJsRFpcIjtcbnZhciBfMiA9IFwiYnV0dG9uQ29tcGxldGVfX19sbFdrWlwiO1xudmFyIF8zID0gXCJidXR0b25JbmNvbXBsZXRlX19fVG9sSGdcIjtcbnZhciBfNCA9IFwiYnV0dG9uUGlsbF9fX3pxMnRjXCI7XG52YXIgXzUgPSBcImJ1dHRvblJlZnVuZFJlcXVlc3RlZF9fX3BXdDMwXCI7XG52YXIgXzYgPSBcImJ1dHRvblVuYXNzaWduZWRfX19ZRGQ4WFwiO1xudmFyIF83ID0gXCJ0aWNrZXRTdGF0dXNDb250YWluZXJfX19xajZmYlwiO1xuZXhwb3J0IHsgXzEgYXMgXCJidXR0b25DYW5jZWxsZWRcIiwgXzIgYXMgXCJidXR0b25Db21wbGV0ZVwiLCBfMyBhcyBcImJ1dHRvbkluY29tcGxldGVcIiwgXzQgYXMgXCJidXR0b25QaWxsXCIsIF81IGFzIFwiYnV0dG9uUmVmdW5kUmVxdWVzdGVkXCIsIF82IGFzIFwiYnV0dG9uVW5hc3NpZ25lZFwiLCBfNyBhcyBcInRpY2tldFN0YXR1c0NvbnRhaW5lclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJhY3RpdmVfX190THlXWlwiO1xudmFyIF8yID0gXCJ0YWJPcHRpb25fX19INEgxdVwiO1xudmFyIF8zID0gXCJ0YWJXcmFwcGVyX19fdTIxc0dcIjtcbmV4cG9ydCB7IF8xIGFzIFwiYWN0aXZlXCIsIF8yIGFzIFwidGFiT3B0aW9uXCIsIF8zIGFzIFwidGFiV3JhcHBlclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJ0aWNrZXRzVGl0bGVUZXh0X19fVERQbXBcIjtcbmV4cG9ydCB7IF8xIGFzIFwidGlja2V0c1RpdGxlVGV4dFwiIH1cbiIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHlcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9vYmplY3RXaXRob3V0UHJvcGVydGllc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ2hlY2tDaXJjbGVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbC9DbG9zZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsL0NvbnRlbnRDb3B5XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRXJyb3JcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbC9FeHBhbmRNb3JlXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRmlsdGVyTGlzdFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsL0ltcG9ydEV4cG9ydFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsL0luZm9cIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbC9TZWFyY2hcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL0J1dHRvblwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL0NoZWNrYm94XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvRGlhbG9nXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvRGlhbG9nQWN0aW9uc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL0RpYWxvZ0NvbnRlbnRcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9EaWFsb2dDb250ZW50VGV4dFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL0RpYWxvZ1RpdGxlXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvRGl2aWRlclwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL0lucHV0QmFzZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL1N0YWNrXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvVGFiXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvVGFic1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL1Rvb2x0aXBcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9zdHlsZXNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC91c2VNZWRpYVF1ZXJ5XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkByZWFjdC1wZGYvcmVuZGVyZXJcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQHJlZHV4anMvdG9vbGtpdFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAc2VudHJ5L3JlYWN0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImZvcm1pa1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJpMThuZXh0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImkxOG5leHQtYnJvd3Nlci1sYW5ndWFnZWRldGVjdG9yXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImlkdG9rZW4tdmVyaWZpZXJcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwibW9tZW50LXRpbWV6b25lXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvY29tcG9uZW50cy9yYXctaHRtbFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3NlY3VyaXR5L2FjdGlvbnNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9zZWN1cml0eS9tZXRob2RzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvYWN0aW9uc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL21ldGhvZHNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9xdWVyeS1hY3Rpb25zXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInAtbGltaXRcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicHJvcC10eXBlc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWFjdFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWFjdC1pMThuZXh0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0LWluZmluaXRlLXNjcm9sbC1jb21wb25lbnRcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVhY3QtcXItY29kZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWFjdC1yZWR1eFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWFjdC9qc3gtcnVudGltZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWR1eFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWR1eC1wZXJzaXN0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlZHV4LXBlcnNpc3QvaW50ZWdyYXRpb24vcmVhY3RcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVkdXgtcGVyc2lzdC9saWIvc3RvcmFnZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJ5dXBcIik7IiwiLy8gVGhlIG1vZHVsZSBjYWNoZVxudmFyIF9fd2VicGFja19tb2R1bGVfY2FjaGVfXyA9IHt9O1xuXG4vLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcblx0dmFyIGNhY2hlZE1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF07XG5cdGlmIChjYWNoZWRNb2R1bGUgIT09IHVuZGVmaW5lZCkge1xuXHRcdHJldHVybiBjYWNoZWRNb2R1bGUuZXhwb3J0cztcblx0fVxuXHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuXHR2YXIgbW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXSA9IHtcblx0XHQvLyBubyBtb2R1bGUuaWQgbmVlZGVkXG5cdFx0Ly8gbm8gbW9kdWxlLmxvYWRlZCBuZWVkZWRcblx0XHRleHBvcnRzOiB7fVxuXHR9O1xuXG5cdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuXHRfX3dlYnBhY2tfbW9kdWxlc19fW21vZHVsZUlkXShtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuXHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuXHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG59XG5cbiIsIi8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSAobW9kdWxlKSA9PiB7XG5cdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuXHRcdCgpID0+IChtb2R1bGVbJ2RlZmF1bHQnXSkgOlxuXHRcdCgpID0+IChtb2R1bGUpO1xuXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCB7IGE6IGdldHRlciB9KTtcblx0cmV0dXJuIGdldHRlcjtcbn07IiwiLy8gZGVmaW5lIGdldHRlciBmdW5jdGlvbnMgZm9yIGhhcm1vbnkgZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5kID0gKGV4cG9ydHMsIGRlZmluaXRpb24pID0+IHtcblx0Zm9yKHZhciBrZXkgaW4gZGVmaW5pdGlvbikge1xuXHRcdGlmKF9fd2VicGFja19yZXF1aXJlX18ubyhkZWZpbml0aW9uLCBrZXkpICYmICFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywga2V5KSkge1xuXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGRlZmluaXRpb25ba2V5XSB9KTtcblx0XHR9XG5cdH1cbn07IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5vID0gKG9iaiwgcHJvcCkgPT4gKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3ApKSIsIi8vIGRlZmluZSBfX2VzTW9kdWxlIG9uIGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uciA9IChleHBvcnRzKSA9PiB7XG5cdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuXHR9XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG59OyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5pbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBQcm92aWRlciB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgUGVyc2lzdEdhdGUgfSBmcm9tIFwicmVkdXgtcGVyc2lzdC9pbnRlZ3JhdGlvbi9yZWFjdFwiO1xuaW1wb3J0IHsgU3R5bGVkRW5naW5lUHJvdmlkZXIgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlSW5pdFN0b3JlIH0gZnJvbSBcIi4vc3RvcmVcIjtcbmltcG9ydCB7IFJFU0VUX1NUQVRFLCBzZXRSZWR1Y2VyU3RhdGUgfSBmcm9tIFwiLi9hY3Rpb25zXCI7XG5cbmltcG9ydCBXaWRnZXRXcmFwcGVyIGZyb20gXCIuL2NvbXBvbmVudHMvV2lkZ2V0V3JhcHBlclwiO1xuXG5jb25zdCBNeU9yZGVyc015VGlja2V0c1dpZGdldCA9IChwcm9wcykgPT4ge1xuICBjb25zdCB7XG4gICAgbG9naW5VcmwsXG4gICAgc3VwcG9ydEVtYWlsLFxuICAgIHN1bW1pdCxcbiAgICBhcGlCYXNlVXJsLFxuICAgIHJlY2VpcHRTZXR0aW5ncyxcbiAgICB1c2VyLFxuICAgIGNsaWVudElkLFxuICAgIHVwZGF0ZVByb2ZpbGVcbiAgfSA9IHByb3BzO1xuXG4gIGNvbnN0IHsgc3RvcmUsIHBlcnNpc3RvciB9ID0gdXNlSW5pdFN0b3JlKHtcbiAgICBsb2dpblVybCxcbiAgICBzdXBwb3J0RW1haWwsXG4gICAgc3VtbWl0LFxuICAgIHVzZXIsXG4gICAgYXBpQmFzZVVybCxcbiAgICByZWNlaXB0U2V0dGluZ3MsXG4gICAgY2xpZW50SWQsXG4gICAgdXBkYXRlUHJvZmlsZVxuICB9KTtcblxuICBjb25zdCBoYW5kbGVCZWZvcmVMaWZ0ID0gKCkgPT4ge1xuICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMod2luZG93LmxvY2F0aW9uLnNlYXJjaCk7XG4gICAgY29uc3QgZmx1c2ggPSBwYXJhbXMuaGFzKFwiZmx1c2hTdGF0ZVwiKTtcbiAgICBpZiAoZmx1c2gpIHN0b3JlLmRpc3BhdGNoKHsgdHlwZTogUkVTRVRfU1RBVEUsIHBheWxvYWQ6IG51bGwgfSk7XG4gIH07XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzdG9yZS5kaXNwYXRjaChzZXRSZWR1Y2VyU3RhdGUoc3VtbWl0LCB1c2VyKSk7XG4gIH0sIFtzdW1taXQsIHVzZXJdKTtcblxuICByZXR1cm4gKFxuICAgIDxQcm92aWRlciBzdG9yZT17c3RvcmV9PlxuICAgICAgPFBlcnNpc3RHYXRlXG4gICAgICAgIG9uQmVmb3JlTGlmdD17aGFuZGxlQmVmb3JlTGlmdH1cbiAgICAgICAgbG9hZGluZz17bnVsbH1cbiAgICAgICAgcGVyc2lzdG9yPXtwZXJzaXN0b3J9XG4gICAgICA+XG4gICAgICAgIDxTdHlsZWRFbmdpbmVQcm92aWRlciBpbmplY3RGaXJzdD5cbiAgICAgICAgICA8V2lkZ2V0V3JhcHBlciAvPlxuICAgICAgICA8L1N0eWxlZEVuZ2luZVByb3ZpZGVyPlxuICAgICAgPC9QZXJzaXN0R2F0ZT5cbiAgICA8L1Byb3ZpZGVyPlxuICApO1xufTtcblxuTXlPcmRlcnNNeVRpY2tldHNXaWRnZXQucHJvcFR5cGVzID0ge1xuICBsb2dpblVybDogUHJvcFR5cGVzLnN0cmluZyxcbiAgc3VwcG9ydEVtYWlsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIGFwaUJhc2VVcmw6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHJlY2VpcHRTZXR0aW5nczogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBwcmltYXJ5Q29sb3I6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgZm9udEZhbWlseTogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBwcmludExvZ286IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgb3JnYW5pemVyTGVnYWxOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIG9yZ2FuaXplckFkZHJlc3NMaW5lMTogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBvcmdhbml6ZXJBZGRyZXNzTGluZTI6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgb3JnYW5pemVyQ2l0eTogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBvcmdhbml6ZXJTdGF0ZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBvcmdhbml6ZXJQb3N0YWxDb2RlOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIG9yZ2FuaXplckNvdW50cnk6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgb3JnYW5pemVyVGF4SWQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgb3JnYW5pemVyVGF4SWRMYWJlbDogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBzdXBwb3J0RW1haWw6IFByb3BUeXBlcy5zdHJpbmdcbiAgfSksXG4gIHVzZXI6IFByb3BUeXBlcy5vYmplY3QsXG4gIGNsaWVudElkOiBQcm9wVHlwZXMuc3RyaW5nLFxuICB1cGRhdGVQcm9maWxlOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgTXlPcmRlcnNNeVRpY2tldHNXaWRnZXQ7XG4iXSwibmFtZXMiOlsiYXV0aEVycm9ySGFuZGxlciIsImNyZWF0ZUFjdGlvbiIsImRlbGV0ZVJlcXVlc3QiLCJnZXRSZXF1ZXN0IiwicHV0UmVxdWVzdCIsInN0YXJ0TG9hZGluZyIsInN0b3BMb2FkaW5nIiwicExpbWl0IiwiZ2V0SWRUb2tlbiIsIm9iamVjdFRvUXVlcnlTdHJpbmciLCJJZFRva2VuVmVyaWZpZXIiLCJpMThuIiwiYXV0aFByb21pc2VSZWplY3QiLCJnZXRBY2Nlc3NUb2tlblNhZmVseSIsImdlbmVyYXRlUmVjZWlwdFBERiIsIkRFRkFVTFRfSVRFTVNfUEVSX1BBR0UiLCJFUlJPUl9DT0RFUyIsIkZJRlRZX1BFUl9QQUdFIiwiRklMVEVSX0FDVElPTiIsIkZJUlNUX1BBR0UiLCJQUk9NSVNFX0JBVENIX0xJTUlUIiwiUkVTRVRfU1RBVEUiLCJSRVNFVF9GSUxURVIiLCJSRVNFVF9BUElfRVJST1IiLCJTRVRfU1RBVEUiLCJTRVRfQVBJX0VSUk9SIiwiQ0hBTkdFX0ZJTFRFUiIsIkNIQU5HRV9TT1JUIiwiR0VUX1VTRVJfT1JERVJTIiwiUkVGVU5EX09SREVSIiwiU0VUX0FDVElWRV9PUkRFUl9JRCIsIkZJTFRFUl9VU0VSX09SREVSUyIsIkdFVF9NWV9BU1NJR05FRF9USUNLRVRTIiwiVVBEQVRFX1RJQ0tFVCIsIlJFU0VUX1RJQ0tFVCIsIlJFQ0VJVkVfVElDS0VUIiwiUkVNT1ZFX1RJQ0tFVF9BVFRFTkRFRSIsIkFTU0lHTl9USUNLRVQiLCJERUxFR0FURV9USUNLRVQiLCJSRUZVTkRfVElDS0VUIiwiUkVTRU5EX05PVElGSUNBVElPTiIsIkdFVF9USUNLRVRTX0JZX09SREVSIiwiR0VUX1RJQ0tFVFNfQllfT1JERVJfRVJST1IiLCJHRVRfT1JERVJfVElDS0VUX0RFVEFJTFMiLCJHRVRfVElDS0VUX0RFVEFJTFMiLCJSRUNFSVZFX0VYVFJBX1FVRVNUSU9OUyIsIlRJQ0tFVF9BVFRFTkRFRV9LRVlTIiwiZW1haWwiLCJmaXJzdE5hbWUiLCJsYXN0TmFtZSIsImNvbXBhbnkiLCJkaXNjbGFpbWVyQWNjZXB0ZWQiLCJleHRyYVF1ZXN0aW9ucyIsIlVQREFURV9USUNLRVRTX1JFRlVORF9SRVFVRVNURUQiLCJTVEFSVF9MT0FESU5HX0lEUF9QUk9GSUxFIiwiU1RPUF9MT0FESU5HX0lEUF9QUk9GSUxFIiwiVVBEQVRFX0lEUF9QUk9GSUxFIiwiU0VUX1VTRVIiLCJTRVRfU1VNTUlUIiwiR0VUX01BSU5fRVhUUkFfUVVFU1RJT05TIiwiUkVDRUlWRV9NQVJLRVRJTkdfU0VUVElOR1MiLCJDTEVBUl9NQVJLRVRJTkdfU0VUVElOR1MiLCJyZXNldFRpY2tldCIsImRpc3BhdGNoIiwicmVzZXRTdGF0ZSIsInJlc2V0RmlsdGVyIiwicmVzZXRFcnJvciIsInNldFJlZHVjZXJTdGF0ZSIsInN1bW1pdCIsInVzZXIiLCJGSUxURVJfVkFSX0RBVEUiLCJGSUxURVJfVkFSX0JBREdFX0ZFQVRVUkUiLCJGSUxURVJfVkFSX1RJQ0tFVF9UWVBFIiwiRklMVEVSX1ZBUl9USUNLRVRfQVNTSUdORUQiLCJGSUxURVJfVkFSX09XTkVSX1NUQVRVUyIsIkZJTFRFUl9WQVJfUFJPTU9DT0RFIiwiRklMVEVSX1ZBUl9GUkVFX1BBSUQiLCJGSUxURVJfVkFSX09SREVSX05VTUJFUiIsImNoYW5nZUZpbHRlciIsImZpbHRlciIsImNoYW5nZVNvcnQiLCJzb3J0IiwicGFyc2VGaWx0ZXIiLCJmaWx0ZXJPYmoiLCJmaWx0ZXJBY3Rpb24iLCJwdXNoIiwiY29uY2F0IiwibG93ZXIiLCJ1cHBlciIsImxlbmd0aCIsImZpbHRlck5hbWUiLCJPUkRFUlMiLCJqb2luIiwiaW5wdXRGaWx0ZXJzIiwiVElDS0VUU19CWV9PUkRFUlMiLCJFWFRFUk5BTF9USUNLRVRTIiwiZ2V0U29ydERpcmVjdGlvbiIsImRpcmVjdGlvbiIsImVycm9ySGFuZGxlck5vdGlmeSIsInBheWxvYWQiLCJjYWxsYmFjayIsImN1c3RvbUF1dGhFcnJvckhhbmRsZXIiLCJlcnIiLCJyZXMiLCJjdXN0b21GZXRjaEVycm9ySGFuZGxlciIsInJlc3BvbnNlIiwiY29kZSIsInN0YXR1cyIsIm1zZyIsInQiLCJPYmplY3QiLCJlbnRyaWVzIiwiZXJyb3JzIiwiZm9yRWFjaCIsIl9yZWYiLCJrZXkiLCJ2YWx1ZSIsIk51bWJlciIsImlzTmFOIiwic3RhdHVzVGV4dCIsInRpdGxlIiwiaHRtbCIsImdldFVzZXJPcmRlcnMiLCJfcmVmMiIsInNraXBMb2FkaW5nIiwicGFnZSIsInBlclBhZ2UiLCJnZXRTdGF0ZSIsIl9yZWYzIiwiYXBpQmFzZVVybCIsIndpZGdldFN0YXRlIiwiYWNjZXNzVG9rZW4iLCJwYXJhbXMiLCJhY2Nlc3NfdG9rZW4iLCJvcmRlciIsInJlbGF0aW9ucyIsImZpZWxkcyIsInBlcl9wYWdlIiwia2V5cyIsImZpbHRlcnMiLCJuYW1lIiwiaWQiLCJ0aGVuIiwiY2F0Y2giLCJlIiwiZmluYWxseSIsInNldEFjdGl2ZU9yZGVySWQiLCJvcmRlcklkIiwic2V0VXNlciIsImdldFVzZXJUaWNrZXRzIiwiX3JlZjQiLCJfcmVmNSIsInVzZXJQcm9maWxlIiwiUHJvbWlzZSIsInJlamVjdCIsImV4cGFuZCIsImdldFRpY2tldHNCeU9yZGVyIiwiX3JlZjYiLCJfcmVmNyIsInJlc2VuZE5vdGlmaWNhdGlvbiIsInRpY2tldCIsIl9yZWY4IiwibWVzc2FnZSIsIm9yZGVyX2lkIiwicmVmdW5kVGlja2V0IiwiX3JlZjkiLCJfcmVmMTAiLCJyZWZ1bmRCdWxrVGlja2V0cyIsIl9yZWYxMSIsInRpY2tldHMiLCJsaW1pdCIsImFsbFJlZnVuZFRpY2tldENhbGxzIiwibWFwIiwiYWxsIiwic3VjY2Vzc2Z1bGx5UmVxdWVzdGVkIiwiciIsIl9yJHJlc3BvbnNlIiwicmVmdW5kX3JlcXVlc3RzIiwidXBkYXRlVGlja2V0c1JlZnVuZFJlcXVlc3RlZCIsInRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWQiLCJnZXRFeHRyYVF1ZXN0aW9ucyIsImF0dGVuZGVlSWQiLCJfcmVmMTIiLCJlbmRwb2ludCIsImdldFRpY2tldCIsInRpY2tldElkIiwiX3JlZjEzIiwibm9ybWFsaXplVGlja2V0IiwiZW50aXR5Iiwibm9ybWFsaXplZEVudGl0eSIsIl9vYmplY3RTcHJlYWQiLCJhdHRlbmRlZV9jb21wYW55IiwiYXR0ZW5kZWVfY29tcGFueV9pZCIsInJlZnJlc2hQcm9maWxlIiwiZGF0YSIsInRpY2tldE93bmVyIiwiX3JlZjE0IiwiX3RpY2tldE93bmVyJG1hbmFnZXIiLCJ1cGRhdGVQcm9maWxlIiwiYXR0ZW5kZWVfZW1haWwiLCJhdHRlbmRlZV9maXJzdF9uYW1lIiwiYXR0ZW5kZWVfbGFzdF9uYW1lIiwiaGFzTWFuYWdlciIsIm1hbmFnZXIiLCJtYW5hZ2VyX2lkIiwiaXRzTWUiLCJwcm9maWxlQ2hhbmdlZCIsImZpcnN0X25hbWUiLCJsYXN0X25hbWUiLCJuZXdQcm9maWxlIiwic2F2ZVRpY2tldERldGFpbHMiLCJhbnN3ZXJzIiwiX3JlZjE1IiwiaWRUb2tlbiIsInZlcmlmaWVyIiwiand0IiwiZGVjb2RlIiwiY29uc29sZSIsImxvZyIsIm93bmVyIiwiYXNzaWduQXR0ZW5kZWUiLCJhcmd1bWVudHMiLCJ1bmRlZmluZWQiLCJfcmVmMTYiLCJyZW1vdmVUaWNrZXQiLCJfcmVmMTciLCJyZWFzc2lnblRpY2tldCIsInVuYXNzaWduVGlja2V0IiwiZGVsZWdhdGVUaWNrZXQiLCJfcmVmMTgiLCJzYXZlRXh0cmFRdWVzdGlvbnMiLCJfcmVmMTkiLCJub3JtYWxpemVkQW5zIiwiZG93bmxvYWRPcmRlclJlY2VpcHQiLCJfcmVmMjAiLCJfcmVmMjEiLCJyZWNlaXB0U2V0dGluZ3MiLCJnZXRUaWNrZXRQREYiLCJfcmVmMjIiLCJxdWVyeVN0cmluZyIsImFwaVVybCIsImZldGNoIiwicmVzcG9uc2VUeXBlIiwiaGVhZGVycyIsIm9rIiwiYmxvYiIsInBkZiIsImxpbmsiLCJkb2N1bWVudCIsImNyZWF0ZUVsZW1lbnQiLCJ1cmwiLCJ3aW5kb3ciLCJVUkwiLCJjcmVhdGVPYmplY3RVUkwiLCJocmVmIiwiZG93bmxvYWQiLCJkaXNwYXRjaEV2ZW50IiwiTW91c2VFdmVudCIsIlJlYWN0IiwidXNlU3RhdGUiLCJmb3J3YXJkUmVmIiwiUHJvcFR5cGVzIiwic3R5bGVzIiwianN4IiwiX2pzeCIsImpzeHMiLCJfanN4cyIsIk1BWF9JTklUSUFMUyIsIkJhZGdlRmVhdHVyZUljb24iLCJyZWYiLCJpbWFnZSIsImNsYXNzTmFtZSIsInByb3BzIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIiwiX2V4Y2x1ZGVkIiwiaW1hZ2VMb2FkZWQiLCJzZXRJbWFnZUxvYWRlZCIsImltYWdlRXJyb3IiLCJzZXRJbWFnZUVycm9yIiwic2hvd0ZhbGxiYWNrIiwiaW5pdGlhbHMiLCJzcGxpdCIsIndvcmQiLCJzdWJzdHJpbmciLCJ0b1VwcGVyQ2FzZSIsImJhZGdlRmVhdHVyZUljb24iLCJjaGlsZHJlbiIsImJhZGdlRmVhdHVyZUltYWdlIiwic3JjIiwiYWx0Iiwib25Mb2FkIiwib25FcnJvciIsInN0eWxlIiwiZGlzcGxheSIsImJhZGdlRmVhdHVyZUluaXRpYWxzIiwicHJvcFR5cGVzIiwic3RyaW5nIiwiaXNSZXF1aXJlZCIsIkJ1dHRvbiIsIkRpYWxvZyIsIkRpYWxvZ0FjdGlvbnMiLCJEaWFsb2dDb250ZW50IiwiRGlhbG9nQ29udGVudFRleHQiLCJEaWFsb2dUaXRsZSIsInVzZVRyYW5zbGF0aW9uIiwiQ29uZmlybURpYWxvZyIsIm9wZW4iLCJib2R5Iiwib25DbG9zZSIsIm9uQ29uZmlybSIsIm9uQ2xpY2siLCJhdXRvRm9jdXMiLCJDb250ZW50Q29weUljb24iLCJUb29sdGlwIiwiTUlMTElTRUNfVE9fU0VDIiwiZGVmYXVsdFdpZHRoIiwiQ29weVRleHQiLCJ0ZXh0IiwidG9vbHRpcFRleHQiLCJoaWRlQ29weSIsInRydW5jYXRlZCIsInJldmVyc2VkIiwid2lkdGgiLCJ0b29sdGlwVGV4dFRvVXNlIiwidG9vbHRpcCIsInNldFRvb2x0aXAiLCJjbGFzc05hbWVzIiwiaGFuZGxlQ29weSIsIm5hdmlnYXRvciIsImNsaXBib2FyZCIsIndyaXRlVGV4dCIsInNldFRpbWVvdXQiLCJ3cmFwcGVyIiwiY29weUljb24iLCJib29sIiwibnVtYmVyIiwiY3JlYXRlQ29udGV4dCIsIkN1c3RvbU5vdGlmaWNhdGlvbkNvbnRleHQiLCJBbGVydCIsIlNuYWNrYmFyIiwiVHlwb2dyYXBoeSIsIkNoZWNrQ2lyY2xlSWNvbiIsIkVycm9ySWNvbiIsIkN1c3RvbU5vdGlmaWNhdGlvbiIsInNldmVyaXR5IiwiYW5jaG9yT3JpZ2luIiwidmVydGljYWwiLCJob3Jpem9udGFsIiwiYXV0b0hpZGVEdXJhdGlvbiIsInZhcmlhbnQiLCJzeCIsImJhY2tncm91bmRDb2xvciIsImljb25NYXBwaW5nIiwic3VjY2VzcyIsImZvbnRTaXplIiwiZXJyb3IiLCJmdW5jIiwiVGhlbWVQcm92aWRlciIsImNyZWF0ZVRoZW1lIiwiZGFya0NvbG9yIiwicm9vdCIsImRvY3VtZW50RWxlbWVudCIsImdldENvbXB1dGVkU3R5bGUiLCJnZXRQcm9wZXJ0eVZhbHVlIiwidGhlbWUiLCJwYWxldHRlIiwicHJpbWFyeSIsIm1haW4iLCJzZWNvbmRhcnkiLCJ0eXBvZ3JhcGh5IiwiYm9keTEiLCJmb250V2VpZ2h0IiwiaDUiLCJtYXJnaW5Cb3R0b20iLCJoNiIsImNvbXBvbmVudHMiLCJNdWlGb3JtSGVscGVyVGV4dCIsInN0eWxlT3ZlcnJpZGVzIiwiTXVpQnV0dG9uIiwibGluZUhlaWdodCIsIk11aVRhYiIsImNvbG9yIiwiTXVpVGFicyIsImluZGljYXRvciIsIkN1c3RvbVRoZW1lIiwibm9kZSIsIkNoZWNrYm94IiwiRm9ybUNvbnRyb2wiLCJGb3JtQ29udHJvbExhYmVsIiwiRm9ybUdyb3VwIiwiRm9ybUhlbHBlclRleHQiLCJGb3JtTGFiZWwiLCJSYXdIVE1MIiwiZ2V0TGFiZWwiLCJ0b1NsdWciLCJDaGVja2JveExpc3RRdWVzdGlvbkZpZWxkIiwiX3F1ZXN0aW9uJHZhbHVlcyIsInF1ZXN0aW9uIiwicXVlc3Rpb25DbGFzc05hbWUiLCJpc0Rpc2FibGVkIiwib25DaGFuZ2UiLCJzZXRGaWVsZFZhbHVlIiwiaGVscGVyVGV4dCIsInJlc3QiLCJxdWVzdGlvblNsdWciLCJxdWVzdGlvbkxhYmVsIiwibWFuZGF0b3J5IiwicXVlc3Rpb25NYXhWYWx1ZXMiLCJtYXhfc2VsZWN0ZWRfdmFsdWVzIiwicXVlc3Rpb25PcHRpb25zIiwidmFsdWVzIiwidmFsIiwibGFiZWwiLCJ0b1N0cmluZyIsImhhbmRsZUNoZWNrYm94TGlzdENoYW5nZSIsImNoZWNrZWQiLCJjdXJyZW50QW5zIiwibWF4U2VsZWN0aW9uUmVhY2hlZCIsIm5ld1ZhbHVlIiwidiIsImRpc2FibGVkIiwicmVxdWlyZWQiLCJmdWxsV2lkdGgiLCJtYXJnaW4iLCJvcCIsImNvbnRyb2wiLCJpbmNsdWRlcyIsImV2IiwidGFyZ2V0Iiwib2JqZWN0IiwiYXJyYXkiLCJDaGVja2JveFF1ZXN0aW9uRmllbGQiLCJhbGlnbkl0ZW1zIiwibWFyZ2luVG9wIiwiSW5wdXRMYWJlbCIsIk1lbnVJdGVtIiwiU2VsZWN0IiwiRHJvcGRvd25RdWVzdGlvbkZpZWxkIiwibGFiZWxJZCIsIlJhZGlvIiwiUmFkaW9Hcm91cCIsIlJhZGlvTGlzdFF1ZXN0aW9uRmllbGQiLCJUZXh0RmllbGQiLCJUZXh0UXVlc3Rpb25GaWVsZCIsIlF1ZXN0aW9uVHlwZV9DaGVja2JveCIsIlF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3QiLCJRdWVzdGlvblR5cGVfQ29tYm9Cb3giLCJRdWVzdGlvblR5cGVfQ291bnRyeUNvbWJvQm94IiwiUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdCIsImNoZWNrUnVsZSIsInJ1bGUiLCJhbnN3ZXJfdmFsdWVzIiwiQXJyYXkiLCJpc0FycmF5IiwiYW5zd2VyX3ZhbHVlc19vcGVyYXRvciIsImNoZWNrVmlzaWJpbGl0eSIsInJ1bGVSZXN1bHQiLCJ2aXNpYmlsaXR5IiwidmlzaWJpbGl0eV9jb25kaXRpb24iLCJxdWVzdGlvbklkIiwidGV4dExDIiwidG9Mb3dlckNhc2UiLCJyZXBsYWNlIiwicSIsIl9xJGxhYmVsIiwiaXNBbnN3ZXJlZCIsImFuc3dlciIsImNoZWNrSWZWYWx1ZU1hdGNoIiwiY29tcGFyZVZhbCIsImFuc3dlckFycmF5Iiwic29tZSIsImdldFR5cGVJbml0aWFsVmFsdWUiLCJ0eXBlIiwiZ2V0VHlwZVZhbHVlIiwiYW5zIiwidHJhbnNmb3JtQW53ZXJzRm9ybWF0IiwiZGlzY2xhaW1lcl9hY2NlcHRlZCIsImV4dHJhX3F1ZXN0aW9ucyIsImZvcm1hdHRlZEVRIiwicXVlc3Rpb25faWQiLCJwYXJzZUludCIsInBvcCIsIlF1ZXN0aW9uVHlwZV9UZXh0IiwiUXVlc3Rpb25UeXBlX1RleHRBcmVhIiwiUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uIiwiZ2V0UXVlc3Rpb25GaWVsZENvbXBvbmVudCIsInF1ZXN0aW9uVHlwZSIsIkZyYWdtZW50IiwiRXh0cmFRdWVzdGlvbnNGaWVsZHMiLCJvcmlnaW5hbEFuc3dlcnMiLCJyZWFkT25seSIsImFsbG93RWRpdCIsImZvcm1payIsInJlbmRlclJ1bGUiLCJpc1Zpc2libGUiLCJyZW5kZXJRdWVzdGlvbiIsInN1Yl9xdWVzdGlvbiIsIl9xJHN1Yl9xdWVzdGlvbl9ydWxlcyIsIlF1ZXN0aW9uRmllbGRDb21wb25lbnQiLCJmb3JtaWtQcm9wcyIsImhhbmRsZUNoYW5nZSIsIm9uQmx1ciIsImhhbmRsZUJsdXIiLCJ0b3VjaGVkIiwiQm9vbGVhbiIsInN1Yl9xdWVzdGlvbl9ydWxlcyIsInVzZVNlbGVjdG9yIiwic2hhbGxvd0VxdWFsIiwiQm94IiwiQ2FyZEhlYWRlciIsIkljb25CdXR0b24iLCJDb2xsYXBzZSIsIkNhcmRDb250ZW50IiwiRXhwYW5kTW9yZUljb24iLCJBc3NpZ25lZEZpbHRlciIsIm9uRmlsdGVyIiwiZmlsdGVyVmFsdWVzIiwic3RhdGUiLCJpc0V4cGFuZGVkIiwic2V0SXNFeHBhbmRlZCIsImFzc2lnbmVkVmFsdWVzIiwiaGFuZGxlRmlsdGVyQ2hhbmdlIiwibmV3RmlsdGVyIiwidGl0bGVXcmFwcGVyIiwiYWN0aW9uIiwiZGlzYWJsZVJpcHBsZSIsInRyYW5zZm9ybSIsInRyYW5zaXRpb24iLCJpbiIsInRpbWVvdXQiLCJ1bm1vdW50T25FeGl0IiwicHkiLCJwYiIsImFzc2lnbmVkIiwidXNlRWZmZWN0IiwiQmFkZ2VGZWF0dXJlRmlsdGVyIiwiYmFkZ2VfZmVhdHVyZXNfdHlwZXMiLCJuZXdGaWx0ZXJzIiwiZiIsImJmIiwidXNlUmVmIiwiU3RhY2siLCJGaWx0ZXJMaXN0SWNvbiIsIkJhZGdlIiwiQ2FyZCIsIkRpdmlkZXIiLCJQYXBlciIsImNvbm5lY3QiLCJUaWNrZXRUeXBlRmlsdGVyIiwiU3RhdHVzRmlsdGVyIiwiRnJlZVBhaWRGaWx0ZXIiLCJQcm9tb0NvZGVGaWx0ZXIiLCJGaWx0ZXIiLCJvblJlc2V0IiwiYWN0aXZlRmlsdGVyc0NvdW50Iiwic2hvd0ZpbHRlckxpc3QiLCJzZXRTaG93RmlsdGVyTGlzdCIsInNob3dEYXRlcGlja2VyIiwic2V0U2hvd0RhdGVwaWNrZXIiLCJmaWx0ZXJSZWYiLCJoYW5kbGVGaWx0ZXJDbGlja091dHNpZGUiLCJldmVudCIsImN1cnJlbnQiLCJjb250YWlucyIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwidG9nZ2xlIiwiaGFuZGxlRmlsdGVyUmVzZXQiLCJmaWx0ZXJDb250YWluZXIiLCJwdCIsImJhZGdlQ29udGVudCIsIm1yIiwiZmlsdGVySWNvbiIsImZpbHRlckxhYmVsIiwiZmlsdGVyTGlzdENvbnRhaW5lciIsImNvbnRhaW5lciIsImVsZXZhdGlvbiIsImZpbHRlckNoZWNrYm94Q29udGFpbmVyIiwiY2xlYW5CdXR0b24iLCJtYXBTdGF0ZVRvUHJvcHMiLCJwcm9tb0NvZGUiLCJzZXRQcm9tb0NvZGUiLCJkZWJvdW5jZVRpbWVyIiwiREVCT1VOQ0VfVkFMVUUiLCJuZXdQcm9tb0NvZGUiLCJjbGVhclRpbWVvdXQiLCJwbGFjZWhvbGRlciIsInN0eWxlZCIsIlNlYXJjaEljb24iLCJDbG9zZUljb24iLCJJbnB1dEJhc2UiLCJTZWFyY2hDb250YWluZXIiLCJwb3NpdGlvbiIsIm1hcmdpblJpZ2h0IiwibWFyZ2luTGVmdCIsIlNlYXJjaEljb25XcmFwcGVyIiwiaGVpZ2h0IiwianVzdGlmeUNvbnRlbnQiLCJTdHlsZWRJbnB1dEJhc2UiLCJib3JkZXJCb3R0b20iLCJwYWRkaW5nTGVmdCIsInBhZGRpbmdSaWdodCIsIkNsb3NlSWNvbldyYXBwZXIiLCJwYWRkaW5nIiwidG9wIiwicmlnaHQiLCJjdXJzb3IiLCJ6SW5kZXgiLCJTZWFyY2giLCJvblNlYXJjaCIsInNlYXJjaFZhbHVlIiwic2V0U2VhcmNoVmFsdWUiLCJzaG93Q2xvc2VCdG4iLCJvbktleURvd24iLCJuYXRpdmVFdmVudCIsInJlc2V0U2VhcmNoIiwiaW5wdXRQcm9wcyIsIkltcG9ydEV4cG9ydEljb24iLCJTb3J0Iiwib25Tb3J0Iiwic2hvd1NvcnQiLCJzZXRTaG93U29ydCIsInNvcnRSZWYiLCJoYW5kbGVTb3J0Q2xpY2tPdXRzaWRlIiwic29ydENvbnRhaW5lciIsInNvcnRJY29uIiwic29ydExhYmVsIiwic29ydExpc3RDb250YWluZXIiLCJ0aWNrZXRfdHlwZXMiLCJHcmlkIiwiRmlsdGVycyIsImp1c3RpZnkiLCJpdGVtIiwieHMiLCJnYXAiLCJmaWx0ZXJTb3J0Q29udGFpbmVyIiwiRm9ybUZvb3RlciIsInNhdmVMYWJlbCIsImNhbmNlbExhYmVsIiwiZm9vdGVyIiwiY2FuY2VsQnRuIiwic2l6ZSIsInNhdmVCdG4iLCJFcnJvckxhYmVsIiwiZGF0YVRlc3RJZCIsImVycm9yTGFiZWwiLCJCYWNrZHJvcCIsIkNpcmN1bGFyUHJvZ3Jlc3MiLCJMb2FkZXIiLCJkcmF3ZXIiLCJJbmZpbml0ZVNjcm9sbCIsIk9yZGVyc0xpc3QiLCJPTkVfUEFHRV9ORVhUIiwiTXlPcmRlcnNUaWNrZXRzIiwiZmV0Y2hEYXRhIiwibWVtYmVyT3JkZXJzIiwib3JkZXJzX2N1cnJlbnRfcGFnZSIsIm9yZGVyc19sYXN0X3BhZ2UiLCJteU9yZGVyc1dyYXBwZXIiLCJkYXRhTGVuZ3RoIiwibmV4dCIsImhhc01vcmUiLCJzY3JvbGxUaHJlc2hvbGQiLCJUaWNrZXRzSWNvbiIsInZpZXdCb3giLCJmaWxsIiwieG1sbnMiLCJkIiwic3Ryb2tlIiwic3Ryb2tlV2lkdGgiLCJzdHJva2VMaW5lY2FwIiwic3Ryb2tlRGFzaGFycmF5IiwiVEFCUyIsIl9GcmFnbWVudCIsIk5vVGlja2V0c0ZvdW5kIiwicGFnZVZpZXciLCJsb2FkaW5nIiwiZ2V0Q29udGVudCIsIm1haWx0b1RhZyIsInN1cHBvcnRfZW1haWwiLCJidXR0b25MYWJlbCIsIlRJQ0tFVFMiLCJpY29uV3JhcHBlciIsIkRvY3VtZW50IiwiUGFnZSIsIlRleHQiLCJWaWV3IiwiSW1hZ2UiLCJTdHlsZVNoZWV0IiwiRm9udCIsInJlZ2lzdGVyZWRGb250cyIsIlNldCIsIkZBTExCQUNLX0ZPTlQiLCJERUZBVUxUX1JFQ0VJUFRfU0VUVElOR1MiLCJwcmltYXJ5Q29sb3IiLCJmb250RmFtaWx5IiwiZm9udEZpbGUiLCJwcmludExvZ28iLCJvcmdhbml6ZXJMZWdhbE5hbWUiLCJvcmdhbml6ZXJBZGRyZXNzTGluZTEiLCJvcmdhbml6ZXJBZGRyZXNzTGluZTIiLCJvcmdhbml6ZXJDaXR5Iiwib3JnYW5pemVyU3RhdGUiLCJvcmdhbml6ZXJQb3N0YWxDb2RlIiwib3JnYW5pemVyQ291bnRyeSIsIm9yZ2FuaXplclRheElkIiwib3JnYW5pemVyVGF4SWRMYWJlbCIsInN1cHBvcnRFbWFpbCIsInJlZ2lzdGVyRm9udCIsImhhcyIsInJlZ2lzdGVyIiwiZmFtaWx5IiwiZm9udHMiLCJhZGQiLCJ3YXJuIiwidmFsaWRhdGVJbWFnZVVybCIsIm1ldGhvZCIsIm1vZGUiLCJDVVJSRU5DWV9ERUNJTUFMUyIsIk1TX1BFUl9TRUNPTkQiLCJNSU5fTUFTS19MRU5HVEgiLCJNQVhfTUFTS19DSEFSUyIsImZvcm1hdEN1cnJlbmN5IiwiYW1vdW50IiwiY3VycmVuY3lTeW1ib2wiLCJjdXJyZW5jeSIsIm51bUFtb3VudCIsInBhcnNlRmxvYXQiLCJ0b0ZpeGVkIiwiZm9ybWF0RGF0ZSIsInRpbWVzdGFtcCIsImRhdGUiLCJEYXRlIiwidG9Mb2NhbGVEYXRlU3RyaW5nIiwieWVhciIsIm1vbnRoIiwiZGF5IiwibWFza1Byb21vQ29kZSIsImNoYXJzIiwiZmlyc3QiLCJzaGlmdCIsImxhc3QiLCJtYXNrTGVuZ3RoIiwiTWF0aCIsIm1pbiIsInJlcGVhdCIsImNhcGl0YWxpemUiLCJzdHIiLCJnZXRCYWRnZVN0YXR1cyIsInJlZnVuZGVkQW1vdW50IiwibnVtUmVmdW5kZWQiLCJnZXRQYXltZW50TWV0aG9kTGFiZWwiLCJwYXltZW50X2luZm9fdHlwZSIsInBheW1lbnRfbWV0aG9kIiwiZm9ybWF0QWRkcmVzcyIsInNldHRpbmdzIiwicGFydHMiLCJjaXR5U3RhdGVaaXAiLCJSZWNlaXB0UERGIiwibG9nb1VybCIsImNyZWF0ZSIsImhlYWRlciIsImZsZXhEaXJlY3Rpb24iLCJib3JkZXJCb3R0b21XaWR0aCIsImJvcmRlckJvdHRvbUNvbG9yIiwicGFkZGluZ0JvdHRvbSIsImhlYWRlckxlZnQiLCJmbGV4IiwiaGVhZGVyU3VidGl0bGUiLCJoZWFkZXJUaXRsZVJvdyIsImZsZXhXcmFwIiwiaGVhZGVyVGl0bGUiLCJoZWFkZXJUYWdsaW5lIiwicGFpZEJhZGdlIiwicGFkZGluZ1ZlcnRpY2FsIiwicGFkZGluZ0hvcml6b250YWwiLCJib3JkZXJSYWRpdXMiLCJoZWFkZXJSaWdodCIsImxvZ28iLCJtYXhXaWR0aCIsIm1heEhlaWdodCIsIm9iamVjdEZpdCIsInR3b0NvbCIsImNvbEhhbGYiLCJzZWN0aW9uVGl0bGUiLCJ0ZXh0VHJhbnNmb3JtIiwibGV0dGVyU3BhY2luZyIsImZpZWxkTGFiZWwiLCJmaWVsZFZhbHVlIiwic21hbGxNdXRlZCIsInRhYmxlIiwidGFibGVIZWFkZXIiLCJ0YWJsZUhlYWRlckNlbGwiLCJ0YWJsZVJvdyIsInRhYmxlQ2VsbCIsInRleHRSaWdodCIsInRleHRBbGlnbiIsInRvdGFsc1RhYmxlIiwidG90YWxzUm93IiwidG90YWxzTGFiZWwiLCJ0b3RhbHNWYWx1ZSIsInRvdGFsc1RvdGFsUm93IiwiYm9yZGVyVG9wV2lkdGgiLCJib3JkZXJUb3BDb2xvciIsInBhZGRpbmdUb3AiLCJ0b3RhbHNCYWxhbmNlUm93IiwiYm94IiwiYm9yZGVyV2lkdGgiLCJib3JkZXJDb2xvciIsImJveFRpdGxlIiwiY3VycmVuY3lfc3ltYm9sIiwiYWRkcmVzc0xpbmVzIiwiYmFkZ2UiLCJyZWZ1bmRlZF9hbW91bnQiLCJ0YWdsaW5lIiwibGluZSIsImlzc3VlX2RhdGUiLCJwdXJjaGFzZWRfZGF0ZSIsImNvbmZpcm1hdGlvbl9kYXRlIiwib3duZXJfZnVsbF9uYW1lIiwib3duZXJfY29tcGFueSIsIm93bmVyX2VtYWlsIiwiX3RpY2tldCR0aWNrZXRfdHlwZSIsInRpY2tldF90eXBlX25hbWUiLCJ0aWNrZXRfdHlwZSIsInByb21vX2NvZGUiLCJmaW5hbF9hbW91bnQiLCJyYXdfY29zdCIsInJhd19hbW91bnQiLCJkaXNjb3VudCIsImFwcGxpZWRfdGF4ZXMiLCJ0YXgiLCJwYXltZW50X21ldGhvZF9yZWFkYWJsZSIsImNyZWRpdF9jYXJkX3R5cGUiLCJjcmVkaXRfY2FyZF80bnVtYmVyIiwiX3RpY2tldHMkIiwiZm9udFJlZ2lzdGVyZWQiLCJtZW1iZXJUaWNrZXRzIiwib3JkZXJEYXRhIiwiZGlzY291bnRfYW1vdW50IiwiY3JlYXRlZCIsImhvdXIiLCJtaW51dGUiLCJob3VyMTIiLCJ0aW1lWm9uZU5hbWUiLCJvd25lcl9maXJzdF9uYW1lIiwib3duZXJfbGFzdF9uYW1lIiwiX3QkcHJvbW9fY29kZSIsInN1bW1pdERhdGEiLCJkYXRlc19sYWJlbCIsImxvY2F0aW9uIiwid2Vic2l0ZSIsImRvYyIsInRvQmxvYiIsImFwcGVuZENoaWxkIiwiY2xpY2siLCJyZW1vdmVDaGlsZCIsInJldm9rZU9iamVjdFVSTCIsInVzZURpc3BhdGNoIiwidXNlTm93IiwidGlja2V0c1JlZnVuZGFibGUiLCJ1c2VTdW1taXREZXRhaWxzIiwiT3JkZXJBY3Rpb25zIiwic3VibWl0UmVxdWVzdCIsIm9uUmVmdW5kQ2xpY2siLCJvblJlZnVuZERldGFpbENsaWNrIiwiaXNTdGFydGVkIiwibm93IiwiaXNEb3dubG9hZGluZyIsInNldElzRG93bmxvYWRpbmciLCJpc0luUmVmdW5kYWJsZVBlcmlvZCIsInJlZ2lzdHJhdGlvbl9hbGxvd2VkX3JlZnVuZF9yZXF1ZXN0X3RpbGxfZGF0ZSIsImF0TGVhc3RPbmVSZWZ1bmRhYmxlVGlja2V0IiwiaXNSZWZ1bmRhYmxlIiwiaGFzUmVmdW5kUmVxdWVzdHMiLCJfdCRyZWZ1bmRfcmVxdWVzdHMiLCJjYW5Eb3dubG9hZFJlY2VpcHQiLCJoYW5kbGVEb3dubG9hZFJlY2VpcHQiLCJyb2xlIiwib3JkZXJTdW1tYXJ5QnV0dG9uIiwicmVmdW5kRGlzYWJsZWQiLCJyZWwiLCJhcnJheU9mIiwiY2FsY3VsYXRlT3JkZXJUb3RhbHMiLCJPcmRlclN1bW1hcnlUYWJsZSIsImRpc2NvdW50VG90YWwiLCJyZWZ1bmRUb3RhbCIsImFtb3VudFRvdGFsIiwic3ViVG90YWwiLCJ0aWNrZXRTdW1tYXJ5IiwidGF4ZXNTdW1tYXJ5IiwiaHVuZHJlZCIsIm9yZGVyU3VtbWFyeVRhYmxlIiwidGlja2V0VG90YWwiLCJxdHkiLCJjb3N0IiwiYWxpZ24iLCJ0YXhlc19hbW91bnQiLCJzaGFwZSIsIk9yZGVyU3VtbWFyeSIsIm9yZGVyU3VtbWFyeVdyYXBwZXIiLCJweCIsIm9yZGVyU3VtbWFyeVB1cmNoYXNlZEluZm8iLCJPcmRlckxpc3RUaWNrZXRzIiwiQXNzaWduVG9NZSIsInVzZXJUaWNrZXRzIiwidXNlcl90aWNrZXRzX2N1cnJlbnRfcGFnZSIsInVzZXJfdGlja2V0c19sYXN0X3BhZ2UiLCJvcmRlclRpY2tldENvbnRhaW5lciIsImFzc2lnbmVkVG9NZVdyYXBwZXIiLCJ0aWNrZXRMaXN0Q29udGFpbmVyIiwiaXNSZWZ1bmRNb2RhbCIsImlzU2VsZWN0ZWRUb1JlZnVuZCIsInNlbGVjdFRvUmVmdW5kIiwiaXNFeHRlcm5hbEFzc2lnbmVkVGlja2V0IiwiQXNzaWduZWRUbyIsIkV4dGVybmFsQXNzaWduZWRUbyIsIk1hbmFnZUZvciIsIkF0dGVuZGVlU3RhdHVzIiwiX3RpY2tldCRvd25lciIsIl90aWNrZXQkb3duZXIyIiwiX3RpY2tldCRvd25lcjMiLCJpc1VuYXNzaWduZWQiLCJpc19hY3RpdmUiLCJpc0RlbGVnYXRlZCIsInRpY2tldE93bmVyRW1haWwiLCJfdGlja2V0JG9yZGVyIiwiX3RpY2tldCRvcmRlcjIiLCJfdGlja2V0JG93bmVyNCIsIl90aWNrZXQkb3duZXI1IiwiYXNzaWduZWRCeVRleHQiLCJQQUdJTkFUSU9OX0RJU1BMQVlfQ09VTlQiLCJPcmRlckxpc3RJdGVtIiwiX29yZGVyJG1lbWJlclRpY2tldHMiLCJfb3JkZXIkbWVtYmVyVGlja2V0czIiLCJvblBhZ2luYXRlQ2xpY2siLCJ0aWNrZXRzVG9SZWZ1bmQiLCJpdGVtc1RvRGlzcGxheSIsInNldEl0ZW1zVG9EaXNwbGF5IiwidGlja2V0c190b3RhbCIsInNsaWNlZFRpY2tldHMiLCJzbGljZSIsIm9uVmlld01vcmUiLCJvblZpZXdMZXNzIiwiZmluZCIsInZpZXdNb3JlQnV0dG9uIiwiVGlja2V0U3RhdHVzIiwiZ2V0U3VtbWl0UmVhc3NpZ25EYXRlIiwiVGlja2V0RGV0YWlsIiwidXNlVGlja2V0RGV0YWlscyIsIlRpY2tldEFzc2lnbiIsIm1vZGFsVmlld3MiLCJkZXRhaWwiLCJyZWFzc2lnbiIsImFzc2lnbiIsIlRpY2tldENUQXMiLCJpc0luY29tcGxldGUiLCJpc1JlYXNzaWduYWJsZSIsIm9uT3BlbkNsaWNrIiwiYXNzaWduVGlja2V0QnV0dG9uIiwidmlld0ZpbmlzaFRpY2tldEJ1dHRvbiIsInJlYXNzaWduQnV0dG9uIiwiX3RpY2tldCRiYWRnZSIsImNhblJlYXNzaWduIiwibW9kYWxPcGVuIiwic2V0TW9kYWxPcGVuIiwicmVhc3NpZ25EYXRlIiwib25SZWFzc2lnbmFibGVQZXJpb2QiLCJoYW5kbGVDbG9zZU1vZGFsIiwiaGFuZGxlT3Blbk1vZGFsIiwidmlldyIsIm9yZGVyV3JhcHBlciIsInJlZnVuZE1vZGFsIiwiZGlzYWJsZWRSZWZ1bmQiLCJzZWxlY3RlZCIsImNoZWNrYm94IiwicGwiLCJ0aWNrZXRUaWNrZXRUeXBlIiwiYmFkZ2VGZWF0dXJlV3JhcHBlciIsInByIiwiZmVhdHVyZXMiLCJ0aWNrZXRObyIsInRpY2tldEZvb3RlciIsInRpY2tldEFjdGlvbkJ1dHRvbnMiLCJvd25lcklkIiwidG90YWxfcmVmdW5kZWRfYW1vdW50IiwiVGFicyIsIlRhYiIsIlJlZnVuZFJlcXVlc3RzTW9kYWwiLCJSZWZ1bmREZXRhaWxzIiwiVGFiUGFuZWwiLCJpbmRleCIsImhpZGRlbiIsIk9yZGVyc0xpc3REZXNrdG9wTW9iaWxlIiwiaXNNb2JpbGUiLCJkZXRhaWxzUmVxdWlyZWQiLCJzZXRWYWx1ZSIsIl8iLCJzZXRUaWNrZXRzVG9SZWZ1bmQiLCJzZXRTdWJtaXRSZXF1ZXN0IiwicmVmdW5kRGV0YWlsc09wZW4iLCJzZXRSZWZ1bmREZXRhaWxzT3BlbiIsInVuc2VsZWN0UmVmdW5kVGlja2V0cyIsImZpbHRlclNlbGVjdGVkIiwic2VsZWN0ZWRUaWNrZXQiLCJjbG9zZVN1Ym1pdFJlcXVlc3QiLCJyZXNldEFsbFJlZnVuZFN0YXR1c2VzIiwibW9yZURldGFpbHMiLCJ0YWJCdXR0b25zIiwib25SZWZ1bmRTdWNjZXNzQ2xvc2UiLCJvbkNsb3NlU2xpZGVyIiwibWQiLCJ1c2VUaGVtZSIsInVzZU1lZGlhUXVlcnkiLCJnZXRGb3JtYXR0ZWREYXRlIiwidGlja2V0X3Blcl9wYWdlIiwiYnJlYWtwb2ludHMiLCJkb3duIiwiaXNNb2JpbGVWaWV3YWJsZSIsInNldE1vYmlsZVZpZXdhYmxlIiwidGlja2V0c19wYWdlX2N1cnJlbnQiLCJsZyIsIm9yZGVyVGlja2V0SW5mb0NvbnRhaW5lciIsIm9yZGVyVGlja2V0SW5mbyIsInJvd1NwYWNpbmciLCJjb2x1bW5TcGFjaW5nIiwic20iLCJkaXNwbGF5X25vbmUiLCJ1c2VNZW1vIiwiUmlnaHREcmF3ZXIiLCJSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXQiLCJnZXRBbGxSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXRzIiwicmVxdWVzdGVkVGlja2V0cyIsImNsb3NlU2xpZGVyIiwicmVmdW5kRGV0YWlscyIsInRvb2x0aXBDbGFzc2VzIiwiSW5mb0ljb24iLCJtb21lbnQiLCJSZWZ1bmRTdGF0dXMiLCJHUklEXzgiLCJHUklEXzEyIiwiUEFERElOR18yIiwiYXBwcm92ZWRSZWZ1bmRzIiwicmVmdW5kIiwicmVmdW5kZWRUYXhlc1N1bW1hdG9yeSIsInJlZnVuZGVkX3RheGVzIiwicnQiLCJ0YXhJZCIsInRvdGFsUmVmdW5kZWRUYXhBbW91bnQiLCJIdG1sVG9vbHRpcCIsImNsYXNzZXMiLCJwb3BwZXIiLCJib3JkZXIiLCJyZWZ1bmRUaWNrZXRCb3hDb250YWluZXIiLCJyZWZ1bmREZXRhaWwiLCJyZWZ1bmRUaWNrZXRBdHRlbmRlZSIsImFjdGlvbl9kYXRlIiwiZm9ybWF0IiwiQ2hpcCIsImdldFJlZnVuZFJlcXVlc3RlZFN0YXR1c0NvbG9yIiwic3RhdHVzQ29sb3IiLCJidXR0b25QaWxsIiwiU3R5bGVkRW5naW5lUHJvdmlkZXIiLCJTVEVQX09ORSIsIlNURVBfVEhSRUUiLCJTVEVQX1RXTyIsInN0ZXAiLCJzZXRTdGVwIiwiZXJyb3JNc2ciLCJzZXRFcnJvck1zZyIsInJlZnVuZFN1Y2Nlc3MiLCJzZXRSZWZ1bmRTdWNjZXNzIiwiY29uZmlybVJlZnVuZCIsImdvQmFja1RvUmVmdW5kIiwicmVmdW5kVGlja2V0cyIsInJlZnVuZFN0ZXBPbmUiLCJzdWJ0aXRsZSIsInRpY2tldExpc3QiLCJhY3Rpb25CdXR0b25zIiwiY2FuY2VsQnV0dG9uIiwiY29udGludWVCdXR0b24iLCJyZWZ1bmRTdGVwVHdvIiwicmVmdW5kRXJyb3JNc2ciLCJDVEFCdXR0b25XcmFwcGVyIiwicmVmdW5kU3RlcFRocmVlIiwicmVmdW5kU3VjY2Vzc2Z1bCIsInN1Y2Nlc3NNc2ciLCJzdWNjZXNzTXNnMiIsInJlbmRlclN0ZXBzIiwiaW5qZWN0Rmlyc3QiLCJEcmF3ZXIiLCJDbG9zZSIsImhlYWRlckNoaWxkcmVuIiwiYW5jaG9yIiwiTW9kYWxQcm9wcyIsImtlZXBNb3VudGVkIiwiY2xvc2VCdG4iLCJmbG9hdCIsImd1dHRlckJvdHRvbSIsIm9uZU9mVHlwZSIsIlN1bW1pdEhlYWRlciIsIndpZGdldEhlYWRlciIsInN1bW1pdFRpdGxlRGF0ZSIsIlRhYldyYXBwZXIiLCJ0YWIiLCJzZXRUYWIiLCJoYXNUaWNrZXRzIiwiaXNGaWx0ZXJlZCIsImNsZWFyRmlsdGVycyIsImdldFBhZ2VWaWV3IiwiZ2V0T25DbGljayIsInRhYlRvTGluayIsIkxpbmsiLCJSZWFzc2lnbkZvcm0iLCJEZWxlZ2F0ZUZvcm0iLCJBc3NpZ25PcHRpb25zIiwiYXNzaWduT3B0aW9uIiwic2V0QXNzaWduT3B0aW9uIiwib25Bc3NpZ24iLCJvbkRlbGVnYXRlIiwib25VbkFzc2lnbiIsIm9wZW5Db25maXJtVW5hc3NpZ24iLCJzZXRPcGVuQ29uZmlybVVuYXNzaWduIiwiaXNBc3NpZ25lZFRvTWUiLCJhbGxvd3NEZWxlZ2F0ZSIsImhhbmRsZVVuQXNzaWduIiwibXkiLCJvblN1Ym1pdCIsIm5ld19hdHRlbmRlZV9lbWFpbCIsInBlcnNvbmFsX21lc3NhZ2UiLCJkZWxlZ2F0ZV9maXJzdF9uYW1lIiwiZGVsZWdhdGVfbGFzdF9uYW1lIiwiZGVsZWdhdGVfZW1haWwiLCJ1bmFzc2lnbldyYXBwZXIiLCJjb21wb25lbnQiLCJ0ZXh0RGVjb3JhdGlvbiIsInRleHREZWNvcmF0aW9uQ29sb3IiLCJ1c2VGb3JtaWsiLCJ5dXAiLCJpbml0aWFsVmFsdWVzIiwidmFsaWRhdGlvblNjaGVtYSIsInJlc2V0Rm9ybSIsImhhbmRsZUNhbmNlbCIsImhhbmRsZVN1Ym1pdCIsIm5vVmFsaWRhdGUiLCJpc1N1Ym1pdHRpbmciLCJBc3NpZ25IZWFkZXIiLCJpblByb2dyZXNzIiwidXNlckVtYWlsIiwiYXNzaWduZWRUb1lvdSIsImdldFNlY29uZGFyeVRpdGxlIiwiZ2V0SGVhZGVyTm90ZSIsInRyYW5zS2V5IiwicHVyY2hhc2VkQnlXcmFwcGVyIiwicHVyY2hhc2VkQnkiLCJvcmRlck5vIiwiaGVhZGVyTm90ZSIsIlJlYXNzaWduSGVhZGVyIiwibXVsdGlsaW5lIiwibWluUm93cyIsInVzZUNvbnRleHQiLCJUaWNrZXRGb3JtIiwidXNlR2V0VGlja2V0IiwiVElDS0VUX0RSQVdFUl9JRCIsInN1Y2Nlc3NNZXNzYWdlIiwiZXJyb3JNZXNzYWdlIiwiYXNzaWduYXRpb25JblByb2dyZXNzIiwic2V0QXNzaWduYXRpb25JblByb2dyZXNzIiwiaXNVc2VyT3JkZXJPd25lciIsIm93bmVyX2lkIiwiaXNVc2VyVGlja2V0T3duZXIiLCJjYW5FZGl0VGlja2V0RGF0YSIsImFsbG93X3VwZGF0ZV9hdHRlbmRlZV9leHRyYV9xdWVzdGlvbnMiLCJvbkNsb3NlRVFGb3JtIiwib25TYXZlRVEiLCJyZXNvbHZlIiwiSGVhZGVyIiwidGlja2V0UmVhc3NpZ25Db250YWluZXIiLCJjYW5FZGl0IiwiQXV0b2NvbXBsZXRlIiwicXVlcnlSZWdpc3RyYXRpb25Db21wYW5pZXMiLCJDb21wYW55RmllbGQiLCJzdW1taXRJZCIsImlucHV0VmFsdWUiLCJzZXRJbnB1dFZhbHVlIiwib3B0aW9ucyIsInNldE9wdGlvbnMiLCJzZXRGaWVsZFRvdWNoZWQiLCJyZXN1bHRzIiwibmV3T3B0aW9ucyIsImF1dG9Db21wbGV0ZSIsImZyZWVTb2xvIiwiaW5jbHVkZUlucHV0SW5MaXN0IiwiZmlsdGVyU2VsZWN0ZWRPcHRpb25zIiwiZ2V0T3B0aW9uTGFiZWwiLCJvcHRpb24iLCJ0bXBWYWx1ZSIsIm9uSW5wdXRDaGFuZ2UiLCJuZXdJbnB1dFZhbHVlIiwiZmlsdGVyT3B0aW9ucyIsImZpbHRlcmVkIiwiaXNFeGlzdGluZyIsInJlbmRlcklucHV0IiwicmVuZGVyT3B0aW9uIiwib3B0aW9uUHJvcHMiLCJSZWdpc3RyYXRpb25EaXNjbGFpbWVyIiwiZGlzY2xhaW1lciIsIlFSQ29kZSIsIkVtYWlsT3V0bGluZWQiLCJFbWFpbEljb24iLCJGaWxlRG93bmxvYWRPdXRsaW5lZCIsIkRvd25sb2FkSWNvbiIsIlRXT19JVEVNIiwiVGlja2V0RGV0YWlsSGVhZGVyIiwiaXNWaXJ0dWFsU3VtbWl0IiwiaXNDb21wbGV0ZSIsInNlbnRDb25maXJtYXRpb24iLCJzZXRTZW50Q29uZmlybWF0aW9uIiwiZG93bmxvYWRUaWNrZXRQZGYiLCJvblNlbmRFbWFpbCIsInFyQ29kZSIsInFyX2NvZGUiLCJxck5vdGUiLCJhY3Rpb25CdXR0b25zQ29udGFpbmVyIiwiZG93bmxvYWRCdG4iLCJzZW5kQnRuIiwic2VudCIsIm9yZGVyTnVtYmVyIiwiVGlja2V0T3duZXJGaWVsZHMiLCJ1c2VTY3JvbGxUb0Vycm9yIiwicGFyc2VBbnN3ZXJzIiwiYnVpbGRWYWxpZGF0aW9uU2NoZW1hIiwicmVkdWNlIiwicmVnaXN0cmF0aW9uX2Rpc2NsYWltZXJfbWFuZGF0b3J5IiwicmVsZXZhbnRBbnN3ZXJzIiwiZW5hYmxlUmVpbml0aWFsaXplIiwiYWRkaXRpb25hbERldGFpbHMiLCJyZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9jb250ZW50IiwiaW5mb05vdGUiLCJvblNhdmUiLCJ0aWNrZXREZXRhaWxDb250YWluZXIiLCJpc192aXJ0dWFsIiwiYXR0ZW5kZWVDb250YWluZXIiLCJhdHRlbmRlZUluZm9UaXRsZSIsIkNvbnRhaW5lciIsIl90aWNrZXQkcmVmdW5kX3JlcXVlcyIsImlzQWN0aXZlIiwicmVmdW5kUmVxdWVzdHMiLCJ0aWNrZXRTdGF0dXNDb250YWluZXIiLCJidXR0b25SZWZ1bmRSZXF1ZXN0ZWQiLCJidXR0b25JbmNvbXBsZXRlIiwiYnV0dG9uVW5hc3NpZ25lZCIsImJ1dHRvbkNvbXBsZXRlIiwiYnV0dG9uQ2FuY2VsbGVkIiwiQXNzaWduZWRUb01lIiwiV2lkZ2V0VGFicyIsInRpY2tldHNGdWxseUxvYWRlZCIsInNldFRpY2tldHNGdWxseUxvYWRlZCIsIm9yZGVyc19wZXJfcGFnZSIsIm9yZGVyc1BlclBhZ2UiLCJ0aWNrZXRQZXJQYWdlIiwiaGFuZGxlVGFiQ2hhbmdlIiwibmV3VGFiIiwiZmV0Y2hBc3NpZ25lZFRpY2tldHMiLCJmZXRjaE9yZGVyVGlja2V0cyIsIm9yZGVyVGlja2V0c1Byb21pc2VzIiwiY3VycmVudF9wYWdlIiwiZmV0Y2hQcm9taXNlcyIsInRhYldyYXBwZXIiLCJXaWRnZXRXcmFwcGVyIiwibXNnRGF0YSIsInNldE1zZ0RhdGEiLCJtZXNzYWdlQ29udGV4dCIsImZpbHRlclZhbHVlIiwic29ydFZhbHVlIiwidGlja2V0c1RpdGxlVGV4dCIsIlByb3ZpZGVyIiwicnVuIiwiY3VycmVudFRpY2tldCIsInNtb290aFNjcm9sbFRvIiwidGFyZ2V0U2Nyb2xsVG9wIiwiZHVyYXRpb24iLCJzdGFydFNjcm9sbFRvcCIsInNjcm9sbFRvcCIsImRpc3RhbmNlIiwic3RhcnRUaW1lIiwiYW5pbWF0aW9uU3RlcCIsImVsYXBzZWQiLCJwcm9ncmVzcyIsImVhc2VJbk91dFF1YWQiLCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCJpc1ZhbGlkIiwiZXJyb3JBcnJheSIsImVycm9yQ291bnQiLCJlbGVtZW50c1NvcnRlZCIsInJlc3VsdCIsImVsZW1lbnQiLCJxdWVyeVNlbGVjdG9yIiwiZWxSZWN0IiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwiYSIsImIiLCJnZXRFbGVtZW50QnlJZCIsImNvbnRhaW5lclJlY3QiLCJlbGVtT2ZmZXN0IiwiYW5pbWF0aW9uRHVyYXRpb24iLCJpc1RpY2tldFJlZnVuZGFibGUiLCJTVEFUVVNfQ09NUExFVEUiLCJTVEFUVVNfSU5DT01QTEVURSIsIlNUQVRVU19DQU5DRUxMRUQiLCJTVEFUVVNfVU5BU1NJR05FRCIsIl90aWNrZXQkcHJvbW9fY29kZSIsIl90aWNrZXQkdGlja2V0X3R5cGUyIiwiX3RpY2tldCRwcm9tb19jb2RlMiIsImdldFN0YXR1cyIsImFsbG93c190b19kZWxlZ2F0ZSIsImFsbG93c190b19yZWFzc2lnbiIsImluaXRSZWFjdEkxOG5leHQiLCJMYW5ndWFnZURldGVjdG9yIiwiZW4iLCJlcyIsInVzZSIsImluaXQiLCJmYWxsYmFja0xuZyIsImRlYnVnIiwicmVzb3VyY2VzIiwidHJhbnNsYXRpb24iLCJpbnRlcnBvbGF0aW9uIiwiZXNjYXBlVmFsdWUiLCJMT0dPVVRfVVNFUiIsIlNUQVJUX0xPQURJTkciLCJTVE9QX0xPQURJTkciLCJSRVNFVF9MT0FESU5HIiwiY2FsY3VsYXRlQWN0aXZlRmlsdGVycyIsImhhc0xvYWRlZEFsbERhdGEiLCJ1cGRhdGVUaWNrZXRDb2xsZWN0aW9uIiwiREVGQVVMVF9GSUxURVJfU1RBVEUiLCJERUZBVUxUX1NUQVRFIiwid2lkZ2V0TG9hZGluZyIsImN1cnJlbnRfdGFiIiwib3JkZXJzX3RvdGFsIiwidGlja2V0X2N1cnJlbnRfcGFnZSIsInRpY2tldF9sYXN0X3BhZ2UiLCJ0aWNrZXRfdG90YWwiLCJ1c2VyX3RpY2tldHNfdG90YWwiLCJhcGlFcnJvciIsIldpZGdldFJlZHVjZXIiLCJuZXdBY3RpdmVDb3VudCIsInRvdGFsIiwibGFzdF9wYWdlIiwiZm9ybWVyT3JkZXIiLCJvIiwiX2RhdGEkIiwibmV3T3JkZXJzIiwibW8iLCJfZGF0YSQyIiwibmV3VGlja2V0cyIsInRpY2tldHNfcGFnZV9sYXN0IiwiX3RpY2tldHNSZWZ1bmRSZXF1ZXN0IiwidXBkYXRlZFRpY2tldHMiLCJ0cnIiLCJ1cGRhdGVkT3JkZXIiLCJ0aWNrZXREYXRhIiwibmV3VXNlclRpY2tldHMiLCJjb25maWd1cmVTdG9yZSIsInBlcnNpc3RTdG9yZSIsInBlcnNpc3RSZWR1Y2VyIiwiRkxVU0giLCJSRUhZRFJBVEUiLCJQQVVTRSIsIlBFUlNJU1QiLCJQVVJHRSIsIlJFR0lTVEVSIiwic3RvcmFnZSIsImNvbWJpbmVSZWR1Y2VycyIsImdldFN0b3JlIiwiY2xpZW50SWQiLCJsb2dpblVybCIsInJlZHVjZXJzIiwic3RvcmUiLCJyZWR1Y2VyIiwibWlkZGxld2FyZSIsImdldERlZmF1bHRNaWRkbGV3YXJlIiwidGh1bmsiLCJleHRyYUFyZ3VtZW50IiwiaW1tdXRhYmxlQ2hlY2siLCJzZXJpYWxpemFibGVDaGVjayIsImlnbm9yZWRBY3Rpb25zIiwidXNlSW5pdFN0b3JlIiwiY29uZmlnIiwicGVyc2lzdG9yIiwiaW5pdExvZ091dCIsImdldEFjY2Vzc1Rva2VuIiwiU2VudHJ5IiwiZ2V0QWNjZXNzVG9rZW5Nb2NrIiwiRXJyb3IiLCJjYXB0dXJlRXhjZXB0aW9uIiwiTEFTVF9IT1VSX09GXzI0X0hPVVIiLCJMQVNUX01JTlVURV9PRl9IT1VSIiwiT05FX0RBWSIsIk1JTl9SRVFVSVJFRCIsIlNUQVRVU19QRU5ESU5HIiwiU1RBVFVTX0VSUk9SIiwiU1RBVFVTX1BST0NFU1NJTkciLCJTVEFUVVNfUkVGVU5EX1BFTkRJTkciLCJTVEFUVVNfUkVGVU5EX0FQUFJPVkVEIiwiU1RBVFVTX1JFRlVORF9SRUpFQ1RFRCIsIlNUQVRVU19SRUZVTkRfUEVORElOR19MQyIsIlNUQVRVU19SRUZVTkRfQVBQUk9WRURfTEMiLCJTVEFUVVNfUkVGVU5EX1JFSkVDVEVEX0xDIiwiSkVTVF9USU1FT1VUX0lOX01JTExJU0VDIiwiT05FX0lURU0iLCJGSVZFX0lURU0iLCJTSVhfSVRFTSIsIk9ORV9SRVRSWSIsImxvY2FsZSIsImRlZmF1bHRPcHRpb25zIiwibWluaW11bUZyYWN0aW9uRGlnaXRzIiwibWF4aW11bUZyYWN0aW9uRGlnaXRzIiwiZm9ybWF0dGVyIiwiSW50bCIsIk51bWJlckZvcm1hdCIsImRhdGV0aW1lIiwidGltZVpvbmUiLCJ0eiIsInVuaXgiLCJfb3JkZXIkYXBwbGllZF90YXhlcyIsImN1cnJlbmN5T2JqZWN0IiwicHVyY2hhc2VUaWNrZXRUb3RhbCIsInRpY2tldHNfZXhjZXJwdF9ieV90aWNrZXRfdHlwZSIsInRpY2tldFR5cGUiLCJ0dCIsInRpY2tldF90eXBlX2lkIiwiZm9ybWF0dGVkVGF4IiwicHVyY2hhc2VUb3RhbCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImdldE9yZGVyVGlja2V0cyIsIl9vcmRlcnMkIiwib3JkZXJzIiwiZ2V0RXBvY2hMb3dlclVwcGVySW5TZWNvbmRzIiwidHMiLCJzZXRIb3VycyIsImRlZmF1bHRDdXJyZW50VGltZSIsInJvdW5kIiwiZ2V0Tm93IiwidGltZXJTdGF0ZSIsIm5vd1V0YyIsImN1cnJlbnRQYWdlIiwiY291bnQiLCJ0cmltIiwiY2hlY2tTdW1taXRQYXN0IiwicmVhc3NpZ25fZGF0ZSIsInJlYXNzaWduX3RpY2tldF90aWxsX2RhdGUiLCJlbmRfZGF0ZSIsImNoZWNrU3VtbWl0U3RhcnRlZCIsInN0YXJ0X2RhdGUiLCJnZXRTdW1taXREYXlzRGlmZiIsInN0YXJ0RGF5IiwidGltZV96b25lX2lkIiwiZW5kRGF5IiwiZGF5cyIsImRpZmYiLCJnZXRTdW1taXRGb3JtYXR0ZWREYXRlIiwiZm9ybWF0U3RhcnREYXRlIiwiZm9ybWF0RW5kRGF0ZSIsInN0YXJ0RGF0ZSIsImVuZERhdGUiLCJnZXRTdW1taXRMb2NhdGlvbiIsIl9zdW1taXQkbG9jYXRpb25zIiwibG9jYXRpb25zIiwibCIsImNsYXNzX25hbWUiLCJpc19tYWluIiwiY2l0eSIsImNvdW50cnkiLCJfc3VtbWl0JHRpbWVfem9uZSIsIl9zdW1taXQkdGltZV96b25lMiIsImZvcm1hdHRlZERhdGUiLCJmb3JtYXR0ZWRSZWFzc2lnbkRhdGUiLCJ0aW1lX3pvbmUiLCJkYXlzVW50aWxSZWFzc2lnbkRlYWRsaW5lIiwiaXNQYXN0Iiwic3RhdHVzRGF0YSIsImdldFRpY2tldFN0YXR1c0tleSIsImdldFRpY2tldFN0YXR1c0RhdGEiLCJpc1N1bW1pdFBhc3QiLCJnZXRUaWNrZXRSb2xlIiwiZmVhdHVyZSIsImdldFRpY2tldFR5cGUiLCJuZXRfc2VsbGluZ19jb3N0IiwicnIiLCJnZXRSZWZ1bmRlZFJlcXVlc3RlZFRpY2tldHMiLCJfdGlja2V0JHJlZnVuZF9yZXF1ZXMyIiwiYWxsVGlja2V0cyIsIl90aWNrZXQkcmVmdW5kX3JlcXVlczMiLCJfdGlja2V0JHJlZnVuZF9yZXF1ZXM0IiwiX3RpY2tldCRyZWZ1bmRfcmVxdWVzNSIsImdldFJlZnVuZGVkUmVxdWVzdGVkU3RhdHVzIiwiX3RpY2tldCRyZWZ1bmRfcmVxdWVzNiIsIl90aWNrZXQkcmVmdW5kX3JlcXVlczciLCJfdGlja2V0JHJlZnVuZF9yZXF1ZXM4IiwiZ2V0VHlwZVZhbGlkYXRpb24iLCJzY2hlbWEiLCJvbmVPZiIsIm9mIiwicGFyc2VTdWJRdWVzdGlvbkFuc3dlciIsIm9ubHlSZWxldmFudCIsInN1YlF1ZXN0aW9uU2x1ZyIsInN1YkFuc3dlciIsIm1hdGNoIiwiaW5jbHVkZUF0dGVuZGVlSW5mbyIsImluY2x1ZGVEaXNjbGFpbWVyIiwiYnVpbGRTdWJRdWVzdGlvblZhbGlkYXRpb25TY2hlbWEiLCJfc3ViUXVlc3Rpb24kc3ViX3F1ZXMiLCJzdWJRdWVzdGlvbiIsIm51bGxhYmxlIiwid2hlbiIsImlzIiwicXVlc3Rpb25BbnMiLCJhbnNWYWx1ZU1hdGNoIiwic2NoIiwic3ViUnVsZSIsImRpc2NsYWltZXJNYW5kYXRvcnkiLCJsYXp5IiwidHlwZUVycm9yIiwiX3Qkb3duZXIiLCJfdCRvd25lcjIiLCJfdGlja2V0JG93bmVyNiIsInRtcFRpY2tldCIsIlBlcnNpc3RHYXRlIiwiTXlPcmRlcnNNeVRpY2tldHNXaWRnZXQiLCJoYW5kbGVCZWZvcmVMaWZ0IiwiVVJMU2VhcmNoUGFyYW1zIiwic2VhcmNoIiwiZmx1c2giLCJvbkJlZm9yZUxpZnQiXSwic291cmNlUm9vdCI6IiJ9
|