my-orders-tickets-widget 1.0.0-beta.27 → 1.0.0-beta.29

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/dist/index.js CHANGED
@@ -26,8 +26,8 @@ __webpack_require__.r(__webpack_exports__);
26
26
  /* harmony export */ FILTER_VAR_DATE: () => (/* binding */ FILTER_VAR_DATE),
27
27
  /* harmony export */ FILTER_VAR_ORDER_NUMBER: () => (/* binding */ FILTER_VAR_ORDER_NUMBER),
28
28
  /* harmony export */ GET_MAIN_EXTRA_QUESTIONS: () => (/* binding */ GET_MAIN_EXTRA_QUESTIONS),
29
+ /* harmony export */ GET_MY_ASSIGNED_TICKETS: () => (/* binding */ GET_MY_ASSIGNED_TICKETS),
29
30
  /* harmony export */ GET_ORDER_TICKET_DETAILS: () => (/* binding */ GET_ORDER_TICKET_DETAILS),
30
- /* harmony export */ GET_TICKETS: () => (/* binding */ GET_TICKETS),
31
31
  /* harmony export */ GET_TICKETS_BY_ORDER: () => (/* binding */ GET_TICKETS_BY_ORDER),
32
32
  /* harmony export */ GET_TICKETS_BY_ORDER_ERROR: () => (/* binding */ GET_TICKETS_BY_ORDER_ERROR),
33
33
  /* harmony export */ GET_TICKET_DETAILS: () => (/* binding */ GET_TICKET_DETAILS),
@@ -73,7 +73,6 @@ __webpack_require__.r(__webpack_exports__);
73
73
  /* harmony export */ resetError: () => (/* binding */ resetError),
74
74
  /* harmony export */ resetFilter: () => (/* binding */ resetFilter),
75
75
  /* harmony export */ resetState: () => (/* binding */ resetState),
76
- /* harmony export */ resetTicket: () => (/* binding */ resetTicket),
77
76
  /* harmony export */ saveExtraQuestions: () => (/* binding */ saveExtraQuestions),
78
77
  /* harmony export */ saveTicketDetails: () => (/* binding */ saveTicketDetails),
79
78
  /* harmony export */ setActiveOrderId: () => (/* binding */ setActiveOrderId),
@@ -121,7 +120,7 @@ const SET_ACTIVE_ORDER_ID = "SET_ACTIVE_ORDER_ID";
121
120
  const FILTER_USER_ORDERS = "FILTER_USER_ORDERS";
122
121
 
123
122
  // TICKETS CONSTS
124
- const GET_TICKETS = "GET_TICKETS";
123
+ const GET_MY_ASSIGNED_TICKETS = "GET_MY_ASSIGNED_TICKETS";
125
124
  const UPDATE_TICKET = "UPDATE_TICKET";
126
125
  const RESET_TICKET = "RESET_TICKET";
127
126
  const RECEIVE_TICKET = "RECEIVE_TICKET";
@@ -164,9 +163,6 @@ const resetFilter = () => dispatch => {
164
163
  const resetError = () => dispatch => {
165
164
  dispatch((0,openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_1__.createAction)(RESET_API_ERROR)({}));
166
165
  };
167
- const resetTicket = () => dispatch => {
168
- dispatch((0,openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_1__.createAction)(RESET_TICKET)({}));
169
- };
170
166
  const setReducerState = (summit, user) => dispatch => {
171
167
  dispatch((0,openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_1__.createAction)(SET_STATE)({
172
168
  summit,
@@ -292,26 +288,25 @@ const getUserTickets = _ref4 => {
292
288
  apiBaseUrl
293
289
  } = _ref5;
294
290
  const {
295
- userState: {
296
- userProfile
297
- },
298
- summit
291
+ widgetState: {
292
+ summit
293
+ }
299
294
  } = getState();
300
295
  if (!summit) return Promise.reject();
301
296
  const accessToken = await (0,_utils_auth__WEBPACK_IMPORTED_MODULE_7__.getAccessTokenSafely)().catch(() => Promise.reject());
302
- if (!userProfile.id) return Promise.reject();
297
+ 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"];
303
298
  dispatch((0,openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_1__.startLoading)());
304
299
  const params = {
305
300
  access_token: accessToken,
306
301
  filter: "status==Paid",
307
- expand: "order, owner, ticket_type",
302
+ expand: "order,owner,ticket_type",
308
303
  order: "-id",
309
- fields: "order.id,order.owner_first_name,order.owner_last_name,order.owner_email,owner.first_name,owner.last_name,owner.status",
304
+ fields: fields.join(","),
310
305
  relations: "none",
311
306
  page,
312
307
  per_page: perPage
313
308
  };
314
- return (0,openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_1__.getRequest)(null, (0,openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_1__.createAction)(GET_TICKETS), "".concat(apiBaseUrl, "/api/v1/summits/").concat(summit.id, "/orders/all/tickets/me"), customAuthErrorHandler)(params)(dispatch).then(() => {
309
+ return (0,openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_1__.getRequest)(null, (0,openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_1__.createAction)(GET_MY_ASSIGNED_TICKETS), "".concat(apiBaseUrl, "/api/v1/summits/").concat(summit.id, "/orders/all/tickets/me"), customAuthErrorHandler)(params)(dispatch).then(() => {
315
310
  dispatch((0,openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_1__.stopLoading)());
316
311
  }).catch(e => {
317
312
  dispatch((0,openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_1__.stopLoading)());
@@ -2564,18 +2559,27 @@ const MyOrdersTickets = () => {
2564
2559
  })]
2565
2560
  }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsx)(_CustomDialog_Context__WEBPACK_IMPORTED_MODULE_12__["default"].Provider, {
2566
2561
  value: (setMessage, setMessageCallback),
2567
- children: memberOrders !== null && memberOrders !== void 0 && memberOrders.length ? /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsx)((react_infinite_scroll_component__WEBPACK_IMPORTED_MODULE_4___default()), {
2568
- dataLength: orders_total,
2569
- next: () => fetchData(orders_current_page + _utils_constants__WEBPACK_IMPORTED_MODULE_9__.ONE_PAGE_NEXT),
2570
- hasMore: orders_current_page < orders_last_page,
2571
- scrollThreshold: 1,
2572
- children: memberOrders === null || memberOrders === void 0 ? void 0 : memberOrders.map(order => /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsx)(_OrdersList__WEBPACK_IMPORTED_MODULE_6__["default"], {
2573
- order: order,
2574
- summit: summit
2575
- }, order.number + order.id))
2576
- }) : /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Box, {
2577
- className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_14__.noOrdersFound,
2578
- children: t("orders.no_orders")
2562
+ children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsxs)("div", {
2563
+ id: "infiniteWrapper",
2564
+ style: {
2565
+ height: 500,
2566
+ overflow: "auto",
2567
+ margin: "15px 0"
2568
+ },
2569
+ children: [" ", memberOrders !== null && memberOrders !== void 0 && memberOrders.length ? /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsx)((react_infinite_scroll_component__WEBPACK_IMPORTED_MODULE_4___default()), {
2570
+ dataLength: orders_total,
2571
+ next: () => fetchData(orders_current_page + _utils_constants__WEBPACK_IMPORTED_MODULE_9__.ONE_PAGE_NEXT),
2572
+ hasMore: orders_current_page < orders_last_page,
2573
+ scrollThreshold: 1,
2574
+ scrollableTarget: "infiniteWrapper",
2575
+ children: memberOrders === null || memberOrders === void 0 ? void 0 : memberOrders.map(order => /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsx)(_OrdersList__WEBPACK_IMPORTED_MODULE_6__["default"], {
2576
+ order: order,
2577
+ summit: summit
2578
+ }, order.number + order.id))
2579
+ }) : /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Box, {
2580
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_14__.noOrdersFound,
2581
+ children: t("orders.no_orders")
2582
+ })]
2579
2583
  })
2580
2584
  })]
2581
2585
  });
@@ -2947,6 +2951,99 @@ OrderSummary.propTypes = {
2947
2951
 
2948
2952
  /***/ }),
2949
2953
 
2954
+ /***/ "./src/components/OrdersList/AssignedToMe.js":
2955
+ /*!***************************************************!*\
2956
+ !*** ./src/components/OrdersList/AssignedToMe.js ***!
2957
+ \***************************************************/
2958
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2959
+
2960
+ __webpack_require__.r(__webpack_exports__);
2961
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
2962
+ /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
2963
+ /* harmony export */ });
2964
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
2965
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
2966
+ /* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-i18next */ "react-i18next");
2967
+ /* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react_i18next__WEBPACK_IMPORTED_MODULE_1__);
2968
+ /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react-redux */ "react-redux");
2969
+ /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react_redux__WEBPACK_IMPORTED_MODULE_2__);
2970
+ /* harmony import */ var react_infinite_scroll_component__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react-infinite-scroll-component */ "react-infinite-scroll-component");
2971
+ /* harmony import */ var react_infinite_scroll_component__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(react_infinite_scroll_component__WEBPACK_IMPORTED_MODULE_3__);
2972
+ /* harmony import */ var _actions__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../actions */ "./src/actions.js");
2973
+ /* harmony import */ var _OrderListTickets__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./OrderListTickets */ "./src/components/OrdersList/OrderListTickets.js");
2974
+ /* harmony import */ var _utils_summitUtils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../utils/summitUtils */ "./src/utils/summitUtils.js");
2975
+ /* harmony import */ var _utils_constants__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../utils/constants */ "./src/utils/constants.js");
2976
+ /* harmony import */ var _styles_module_scss__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./styles.module.scss */ "./src/components/OrdersList/styles.module.scss");
2977
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");
2978
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__);
2979
+
2980
+
2981
+
2982
+
2983
+
2984
+
2985
+
2986
+
2987
+
2988
+
2989
+ const AssignToMe = () => {
2990
+ const {
2991
+ summit,
2992
+ userTickets,
2993
+ user_tickets_total,
2994
+ user_tickets_current_page,
2995
+ user_tickets_last_page
2996
+ } = (0,react_redux__WEBPACK_IMPORTED_MODULE_2__.useSelector)(state => state.widgetState || {}, react_redux__WEBPACK_IMPORTED_MODULE_2__.shallowEqual);
2997
+ const dispatch = (0,react_redux__WEBPACK_IMPORTED_MODULE_2__.useDispatch)();
2998
+ const {
2999
+ t
3000
+ } = (0,react_i18next__WEBPACK_IMPORTED_MODULE_1__.useTranslation)();
3001
+ const fetchData = async page => {
3002
+ dispatch((0,_actions__WEBPACK_IMPORTED_MODULE_4__.getUserTickets)({
3003
+ page,
3004
+ perPage: _utils_constants__WEBPACK_IMPORTED_MODULE_7__.DEFAULT_ITEMS_PER_PAGE
3005
+ }));
3006
+ };
3007
+ (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {
3008
+ fetchData(_utils_constants__WEBPACK_IMPORTED_MODULE_7__.ONE_PAGE_NEXT);
3009
+ }, []);
3010
+ return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxs)("div", {
3011
+ id: "assignedToMeWrapper",
3012
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_8__.orderTicketContainer,
3013
+ style: {
3014
+ height: 500,
3015
+ overflow: "auto",
3016
+ margin: "15px 0"
3017
+ },
3018
+ children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)("h3", {
3019
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_8__.assignToMeText,
3020
+ children: t("labels.assigned_to_me")
3021
+ }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxs)("h2", {
3022
+ children: [summit === null || summit === void 0 ? void 0 : summit.name, " ", /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)("br", {}), (0,_utils_summitUtils__WEBPACK_IMPORTED_MODULE_6__.getSummitFormattedDate)(summit)]
3023
+ }), userTickets !== null && userTickets !== void 0 && userTickets.length ? /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)((react_infinite_scroll_component__WEBPACK_IMPORTED_MODULE_3___default()), {
3024
+ dataLength: user_tickets_total,
3025
+ next: () => fetchData(user_tickets_current_page + _utils_constants__WEBPACK_IMPORTED_MODULE_7__.ONE_PAGE_NEXT),
3026
+ hasMore: user_tickets_current_page < user_tickets_last_page,
3027
+ scrollThreshold: 1,
3028
+ scrollableTarget: "assignedToMeWrapper",
3029
+ children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)("div", {
3030
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_8__.ticketListContainer,
3031
+ children: userTickets.map(ticket => /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_OrderListTickets__WEBPACK_IMPORTED_MODULE_5__["default"], {
3032
+ ticket: ticket,
3033
+ summit: summit,
3034
+ refundRequested: false,
3035
+ isSelectedToRefund: [],
3036
+ selectToRefund: false,
3037
+ isExternalAssignedTicket: true
3038
+ }, ticket.id))
3039
+ })
3040
+ }) : ""]
3041
+ });
3042
+ };
3043
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (AssignToMe);
3044
+
3045
+ /***/ }),
3046
+
2950
3047
  /***/ "./src/components/OrdersList/AttendeeStatus.js":
2951
3048
  /*!*****************************************************!*\
2952
3049
  !*** ./src/components/OrdersList/AttendeeStatus.js ***!
@@ -2974,34 +3071,51 @@ __webpack_require__.r(__webpack_exports__);
2974
3071
 
2975
3072
 
2976
3073
 
2977
- function AttendeeStatus(_ref) {
2978
- var _ticket$owner, _ticket$owner2;
3074
+ const AttendeeStatus = _ref => {
3075
+ var _ticket$owner, _ticket$order, _ticket$order2, _ticket$order3;
2979
3076
  let {
2980
- ticket
3077
+ ticket,
3078
+ isExternalAssignedTicket
2981
3079
  } = _ref;
2982
3080
  const {
2983
3081
  t
2984
3082
  } = (0,react_i18next__WEBPACK_IMPORTED_MODULE_2__.useTranslation)();
2985
- return (_ticket$owner = ticket.owner) !== null && _ticket$owner !== void 0 && _ticket$owner.email ? /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Box, {
2986
- className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_4__.label,
2987
- children: [t("ticket_status.assigned_to"), ":", /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxs)("span", {
2988
- className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_4__.ticketOwnerEmail,
2989
- "data-testid": "attendee-status-assigned",
2990
- children: [" ", (_ticket$owner2 = ticket.owner) === null || _ticket$owner2 === void 0 ? void 0 : _ticket$owner2.email]
3083
+ return (_ticket$owner = ticket.owner) !== null && _ticket$owner !== void 0 && _ticket$owner.email ? /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Grid, {
3084
+ container: true,
3085
+ children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Grid, {
3086
+ item: true,
3087
+ children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Box, {
3088
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_4__.label,
3089
+ children: [t("ticket_status.assigned_to"), ": ", /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)("br", {}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxs)("span", {
3090
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_4__.ticketOwnerEmail,
3091
+ "data-testid": "attendee-status-assigned",
3092
+ children: [" ", (_ticket$order = ticket.order) === null || _ticket$order === void 0 ? void 0 : _ticket$order.owner_email]
3093
+ })]
3094
+ })
3095
+ }), isExternalAssignedTicket && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Grid, {
3096
+ item: true,
3097
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_4__.assignedByText,
3098
+ children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Box, {
3099
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_4__.label,
3100
+ children: [t("ticket_status.assigned_by"), ": ", /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)("br", {}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxs)("span", {
3101
+ children: [(_ticket$order2 = ticket.order) === null || _ticket$order2 === void 0 ? void 0 : _ticket$order2.owner_first_name, " ", (_ticket$order3 = ticket.order) === null || _ticket$order3 === void 0 ? void 0 : _ticket$order3.owner_last_name]
3102
+ })]
3103
+ })
2991
3104
  })]
2992
3105
  }) : ticket.is_active && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)("span", {
2993
3106
  className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_4__.ticketOwnerEmail,
2994
3107
  "data-testid": "attendee-status-unassigned",
2995
3108
  children: t("ticket_status.attendee_status_unassigned")
2996
3109
  });
2997
- }
3110
+ };
2998
3111
  AttendeeStatus.propTypes = {
2999
3112
  ticket: prop_types__WEBPACK_IMPORTED_MODULE_1___default().shape({
3000
3113
  owner: prop_types__WEBPACK_IMPORTED_MODULE_1___default().shape({
3001
3114
  email: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().string)
3002
3115
  }),
3003
3116
  is_active: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().bool)
3004
- })
3117
+ }),
3118
+ isExternalAssignedTicket: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().bool)
3005
3119
  };
3006
3120
  /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (AttendeeStatus);
3007
3121
 
@@ -3113,21 +3227,18 @@ __webpack_require__.r(__webpack_exports__);
3113
3227
  /* harmony import */ var _mui_material_Stack__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_mui_material_Stack__WEBPACK_IMPORTED_MODULE_4__);
3114
3228
  /* harmony import */ var _mui_material_Checkbox__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @mui/material/Checkbox */ "@mui/material/Checkbox");
3115
3229
  /* harmony import */ var _mui_material_Checkbox__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_mui_material_Checkbox__WEBPACK_IMPORTED_MODULE_5__);
3116
- /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! react-redux */ "react-redux");
3117
- /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(react_redux__WEBPACK_IMPORTED_MODULE_6__);
3118
- /* harmony import */ var _actions__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../actions */ "./src/actions.js");
3119
- /* harmony import */ var _TicketStatus__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../TicketStatus */ "./src/components/TicketStatus/index.js");
3120
- /* harmony import */ var _utils_summitUtils__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../utils/summitUtils */ "./src/utils/summitUtils.js");
3121
- /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../utils */ "./src/utils/index.js");
3122
- /* harmony import */ var _AttendeeStatus__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./AttendeeStatus */ "./src/components/OrdersList/AttendeeStatus.js");
3123
- /* harmony import */ var _TicketDetail__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../TicketDetail */ "./src/components/TicketDetail/index.js");
3124
- /* harmony import */ var _hooks_useTicketDetails__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../../hooks/useTicketDetails */ "./src/hooks/useTicketDetails.js");
3125
- /* harmony import */ var _TicketReassign__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../TicketReassign */ "./src/components/TicketReassign/index.js");
3126
- /* harmony import */ var _CopyText__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../CopyText */ "./src/components/CopyText/index.js");
3127
- /* harmony import */ var _TicketAssign__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../TicketAssign */ "./src/components/TicketAssign/index.js");
3128
- /* harmony import */ var _styles_module_scss__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./styles.module.scss */ "./src/components/OrdersList/styles.module.scss");
3129
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");
3130
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__);
3230
+ /* harmony import */ var _TicketStatus__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../TicketStatus */ "./src/components/TicketStatus/index.js");
3231
+ /* harmony import */ var _utils_summitUtils__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../utils/summitUtils */ "./src/utils/summitUtils.js");
3232
+ /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../utils */ "./src/utils/index.js");
3233
+ /* harmony import */ var _AttendeeStatus__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./AttendeeStatus */ "./src/components/OrdersList/AttendeeStatus.js");
3234
+ /* harmony import */ var _TicketDetail__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../TicketDetail */ "./src/components/TicketDetail/index.js");
3235
+ /* harmony import */ var _hooks_useTicketDetails__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../hooks/useTicketDetails */ "./src/hooks/useTicketDetails.js");
3236
+ /* harmony import */ var _TicketReassign__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../TicketReassign */ "./src/components/TicketReassign/index.js");
3237
+ /* harmony import */ var _CopyText__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../CopyText */ "./src/components/CopyText/index.js");
3238
+ /* harmony import */ var _TicketAssign__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../TicketAssign */ "./src/components/TicketAssign/index.js");
3239
+ /* harmony import */ var _styles_module_scss__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./styles.module.scss */ "./src/components/OrdersList/styles.module.scss");
3240
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");
3241
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_16___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_16__);
3131
3242
  /**
3132
3243
  * Copyright 2017 OpenStack Foundation
3133
3244
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -3158,8 +3269,6 @@ __webpack_require__.r(__webpack_exports__);
3158
3269
 
3159
3270
 
3160
3271
 
3161
-
3162
-
3163
3272
  const modalViews = {
3164
3273
  detail: "DETAIL",
3165
3274
  reassign: "REASSIGN",
@@ -3176,27 +3285,27 @@ const TicketCTAs = _ref => {
3176
3285
  t
3177
3286
  } = (0,react_i18next__WEBPACK_IMPORTED_MODULE_2__.useTranslation)();
3178
3287
  if (isUnassigned) {
3179
- return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Button, {
3180
- className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_17__.assignTicketButton,
3288
+ return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_16__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Button, {
3289
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_15__.assignTicketButton,
3181
3290
  onClick: () => onOpenClick(modalViews.assign),
3182
3291
  children: t("ticket_status.assign_ticket")
3183
3292
  });
3184
3293
  }
3185
- return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsxs)((_mui_material_Stack__WEBPACK_IMPORTED_MODULE_4___default()), {
3294
+ return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_16__.jsxs)((_mui_material_Stack__WEBPACK_IMPORTED_MODULE_4___default()), {
3186
3295
  sx: {
3187
3296
  justifyContent: "space-between",
3188
3297
  width: "100%"
3189
3298
  },
3190
3299
  alignItems: "center",
3191
3300
  direction: "row",
3192
- children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Button, {
3193
- className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_17__.viewFinishTicketButton,
3301
+ children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_16__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Button, {
3302
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_15__.viewFinishTicketButton,
3194
3303
  onClick: () => onOpenClick(modalViews.detail),
3195
3304
  children: isIncomplete ? t("ticket_status.finish_ticket") : t("ticket_status.view_ticket")
3196
- }), isReassignable && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Button, {
3305
+ }), isReassignable && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_16__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Button, {
3197
3306
  "aria-label": "reassign ticket button",
3198
3307
  role: "button",
3199
- className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_17__.reassignButton,
3308
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_15__.reassignButton,
3200
3309
  onClick: () => onOpenClick(modalViews.reassign),
3201
3310
  children: t("ticket_status.reassign_ticket")
3202
3311
  })]
@@ -3209,134 +3318,137 @@ TicketCTAs.propTypes = {
3209
3318
  onOpenClick: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().func).isRequired
3210
3319
  };
3211
3320
  const OrderListTickets = _ref2 => {
3212
- var _ticket$ticket_type, _ticket$owner, _ticket$owner2, _ticket$owner3;
3321
+ var _ticket$ticket_type, _ticket$order, _ticket$owner, _ticket$owner2, _ticket$owner3;
3213
3322
  let {
3214
3323
  ticket,
3215
3324
  summit,
3216
3325
  refundRequested,
3217
3326
  isSelectedToRefund,
3218
- selectToRefund
3327
+ selectToRefund,
3328
+ isExternalAssignedTicket
3219
3329
  } = _ref2;
3330
+ const _isExternalAssignedTicket = !!isExternalAssignedTicket;
3220
3331
  const {
3221
3332
  t
3222
3333
  } = (0,react_i18next__WEBPACK_IMPORTED_MODULE_2__.useTranslation)();
3223
- const dispatch = (0,react_redux__WEBPACK_IMPORTED_MODULE_6__.useDispatch)();
3224
- const now = (0,_utils__WEBPACK_IMPORTED_MODULE_10__.useNow)();
3334
+ const now = (0,_utils__WEBPACK_IMPORTED_MODULE_8__.useNow)();
3225
3335
  const {
3226
3336
  isRefundable,
3227
3337
  isUnassigned,
3228
3338
  isIncomplete,
3229
3339
  canReassign
3230
- } = (0,_hooks_useTicketDetails__WEBPACK_IMPORTED_MODULE_13__.useTicketDetails)(ticket);
3340
+ } = (0,_hooks_useTicketDetails__WEBPACK_IMPORTED_MODULE_11__.useTicketDetails)(ticket);
3231
3341
  const [modalOpen, setModalOpen] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null);
3232
- const reassignDate = (0,_utils_summitUtils__WEBPACK_IMPORTED_MODULE_9__.getSummitReassignDate)(summit);
3342
+ const reassignDate = (0,_utils_summitUtils__WEBPACK_IMPORTED_MODULE_7__.getSummitReassignDate)(summit);
3233
3343
  const isReassignable = reassignDate > now;
3234
3344
  const handleCloseModal = () => {
3235
3345
  setModalOpen(null);
3236
- dispatch((0,_actions__WEBPACK_IMPORTED_MODULE_7__.resetTicket)());
3237
3346
  };
3238
3347
  const handleOpenModal = view => {
3239
3348
  setModalOpen(view);
3240
3349
  };
3241
- return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Grid, {
3242
- className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_17__.orderWrapper,
3350
+ return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_16__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Grid, {
3351
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_15__.orderWrapper,
3243
3352
  container: true,
3244
3353
  "data-testid": "order-list-ticket",
3245
- children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Grid, {
3354
+ children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_16__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Grid, {
3246
3355
  xs: 8,
3247
3356
  padding: 2,
3248
3357
  item: true,
3249
- className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_17__.ticketTicketType,
3358
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_15__.ticketTicketType,
3250
3359
  justify: "space-between",
3251
- children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsxs)((_mui_material_Stack__WEBPACK_IMPORTED_MODULE_4___default()), {
3360
+ children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_16__.jsxs)((_mui_material_Stack__WEBPACK_IMPORTED_MODULE_4___default()), {
3252
3361
  sx: {
3253
3362
  justifyContent: "flex-start"
3254
3363
  },
3255
3364
  direction: "row",
3256
- children: [refundRequested && isRefundable && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)((_mui_material_Checkbox__WEBPACK_IMPORTED_MODULE_5___default()), {
3365
+ children: [refundRequested && isRefundable && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_16__.jsx)((_mui_material_Checkbox__WEBPACK_IMPORTED_MODULE_5___default()), {
3257
3366
  "aria-label": "refund ticket checkbox",
3258
3367
  role: "checkbox",
3259
3368
  checked: isSelectedToRefund,
3260
3369
  onChange: e => selectToRefund(e, ticket)
3261
- }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)("h4", {
3370
+ }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_16__.jsx)("h4", {
3262
3371
  children: (_ticket$ticket_type = ticket.ticket_type) === null || _ticket$ticket_type === void 0 ? void 0 : _ticket$ticket_type.name
3263
3372
  })]
3264
3373
  })
3265
- }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Grid, {
3374
+ }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_16__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Grid, {
3266
3375
  xs: 4,
3267
3376
  padding: 2,
3268
3377
  item: true
3269
- }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Grid, {
3378
+ }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_16__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Grid, {
3270
3379
  xs: 12,
3271
3380
  sx: {
3272
3381
  px: 2,
3273
3382
  pb: 2
3274
3383
  },
3275
3384
  item: true,
3276
- children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)(_AttendeeStatus__WEBPACK_IMPORTED_MODULE_11__["default"], {
3277
- ticket: ticket
3278
- }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsxs)("span", {
3279
- className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_17__.ticketNo,
3280
- children: [t("ticket_status.ticket_no"), ":", " ", /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)(_CopyText__WEBPACK_IMPORTED_MODULE_15__["default"], {
3385
+ children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_16__.jsx)(_AttendeeStatus__WEBPACK_IMPORTED_MODULE_9__["default"], {
3386
+ ticket: ticket,
3387
+ isExternalAssignedTicket: _isExternalAssignedTicket
3388
+ }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_16__.jsxs)("span", {
3389
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_15__.ticketNo,
3390
+ children: [t("ticket_status.ticket_no"), ":", " ", /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_16__.jsx)(_CopyText__WEBPACK_IMPORTED_MODULE_13__["default"], {
3281
3391
  text: ticket.number,
3282
3392
  tooltipText: t("ticket_status.copy_ticket_number")
3283
3393
  })]
3284
3394
  })]
3285
- }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Grid, {
3395
+ }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_16__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Grid, {
3286
3396
  container: true,
3287
- children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Grid, {
3397
+ children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_16__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Grid, {
3288
3398
  container: true,
3289
3399
  direction: "row",
3290
3400
  xs: 12,
3291
3401
  lg: 6,
3292
3402
  alignItems: "center",
3293
3403
  item: true,
3294
- children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)(_TicketStatus__WEBPACK_IMPORTED_MODULE_8__["default"], {
3404
+ children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_16__.jsx)(_TicketStatus__WEBPACK_IMPORTED_MODULE_6__["default"], {
3295
3405
  ticket: ticket
3296
3406
  })
3297
- }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Grid, {
3407
+ }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_16__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Grid, {
3298
3408
  padding: 2,
3299
3409
  xs: 12,
3300
3410
  lg: 6,
3301
3411
  container: true,
3302
3412
  item: true,
3303
- children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Grid, {
3413
+ children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_16__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Grid, {
3304
3414
  item: true,
3305
3415
  container: true,
3306
3416
  align: "center",
3307
3417
  sx: {
3308
3418
  justifyContent: "space-between"
3309
3419
  },
3310
- className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_17__.ticketActionButtons,
3311
- children: ticket.is_active && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)(TicketCTAs, {
3420
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_15__.ticketActionButtons,
3421
+ children: ticket.is_active && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_16__.jsx)(TicketCTAs, {
3312
3422
  isUnassigned: isUnassigned,
3313
3423
  isIncomplete: isIncomplete,
3314
- isReassignable: isReassignable && canReassign,
3424
+ isReassignable: isReassignable && canReassign && !_isExternalAssignedTicket,
3315
3425
  onOpenClick: handleOpenModal
3316
3426
  })
3317
3427
  })
3318
3428
  })]
3319
- }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)(_TicketDetail__WEBPACK_IMPORTED_MODULE_12__["default"], {
3429
+ }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_16__.jsx)(_TicketDetail__WEBPACK_IMPORTED_MODULE_10__["default"], {
3320
3430
  summit: summit,
3321
3431
  ticketId: ticket === null || ticket === void 0 ? void 0 : ticket.id,
3322
- orderId: ticket === null || ticket === void 0 ? void 0 : ticket.order_id,
3432
+ orderId: (ticket === null || ticket === void 0 ? void 0 : ticket.order_id) || (ticket === null || ticket === void 0 || (_ticket$order = ticket.order) === null || _ticket$order === void 0 ? void 0 : _ticket$order.id),
3323
3433
  ownerId: ticket === null || ticket === void 0 || (_ticket$owner = ticket.owner) === null || _ticket$owner === void 0 ? void 0 : _ticket$owner.id,
3324
3434
  open: modalOpen === modalViews.detail,
3325
3435
  onClose: handleCloseModal
3326
- }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)(_TicketReassign__WEBPACK_IMPORTED_MODULE_14__["default"], {
3327
- summit: summit,
3328
- ticketId: ticket === null || ticket === void 0 ? void 0 : ticket.id,
3329
- orderId: ticket === null || ticket === void 0 ? void 0 : ticket.order_id,
3330
- ownerId: ticket === null || ticket === void 0 || (_ticket$owner2 = ticket.owner) === null || _ticket$owner2 === void 0 ? void 0 : _ticket$owner2.id,
3331
- open: modalOpen === modalViews.reassign,
3332
- onClose: handleCloseModal
3333
- }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)(_TicketAssign__WEBPACK_IMPORTED_MODULE_16__["default"], {
3334
- summit: summit,
3335
- ticketId: ticket === null || ticket === void 0 ? void 0 : ticket.id,
3336
- orderId: ticket === null || ticket === void 0 ? void 0 : ticket.order_id,
3337
- ownerId: ticket === null || ticket === void 0 || (_ticket$owner3 = ticket.owner) === null || _ticket$owner3 === void 0 ? void 0 : _ticket$owner3.id,
3338
- open: modalOpen === modalViews.assign,
3339
- onClose: handleCloseModal
3436
+ }), isReassignable && canReassign && !_isExternalAssignedTicket && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_16__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_16__.Fragment, {
3437
+ children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_16__.jsx)(_TicketReassign__WEBPACK_IMPORTED_MODULE_12__["default"], {
3438
+ summit: summit,
3439
+ ticketId: ticket === null || ticket === void 0 ? void 0 : ticket.id,
3440
+ orderId: ticket === null || ticket === void 0 ? void 0 : ticket.order_id,
3441
+ ownerId: ticket === null || ticket === void 0 || (_ticket$owner2 = ticket.owner) === null || _ticket$owner2 === void 0 ? void 0 : _ticket$owner2.id,
3442
+ open: modalOpen === modalViews.reassign,
3443
+ onClose: handleCloseModal
3444
+ }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_16__.jsx)(_TicketAssign__WEBPACK_IMPORTED_MODULE_14__["default"], {
3445
+ summit: summit,
3446
+ ticketId: ticket === null || ticket === void 0 ? void 0 : ticket.id,
3447
+ orderId: ticket === null || ticket === void 0 ? void 0 : ticket.order_id,
3448
+ ownerId: ticket === null || ticket === void 0 || (_ticket$owner3 = ticket.owner) === null || _ticket$owner3 === void 0 ? void 0 : _ticket$owner3.id,
3449
+ open: modalOpen === modalViews.assign,
3450
+ onClose: handleCloseModal
3451
+ })]
3340
3452
  })]
3341
3453
  }, ticket.id);
3342
3454
  };
@@ -3358,7 +3470,8 @@ OrderListTickets.propTypes = {
3358
3470
  summit: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().object),
3359
3471
  refundRequested: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().bool),
3360
3472
  isSelectedToRefund: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().bool),
3361
- selectToRefund: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().func)
3473
+ selectToRefund: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().func),
3474
+ isExternalAssignedTicket: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().bool)
3362
3475
  };
3363
3476
  /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (OrderListTickets);
3364
3477
 
@@ -3782,8 +3895,10 @@ __webpack_require__.r(__webpack_exports__);
3782
3895
  /* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react_i18next__WEBPACK_IMPORTED_MODULE_2__);
3783
3896
  /* harmony import */ var _RightDrawer__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../RightDrawer */ "./src/components/RightDrawer/index.js");
3784
3897
  /* harmony import */ var _RefundRequestedTicket__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./RefundRequestedTicket */ "./src/components/RefundRequests/RefundRequestedTicket.js");
3785
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");
3786
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__);
3898
+ /* harmony import */ var _utils_ticketUtils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../utils/ticketUtils */ "./src/utils/ticketUtils.js");
3899
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");
3900
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__);
3901
+
3787
3902
 
3788
3903
 
3789
3904
 
@@ -3799,15 +3914,16 @@ const RefundDetails = _ref => {
3799
3914
  const {
3800
3915
  t
3801
3916
  } = (0,react_i18next__WEBPACK_IMPORTED_MODULE_2__.useTranslation)();
3917
+ const requestedTickets = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(() => (0,_utils_ticketUtils__WEBPACK_IMPORTED_MODULE_5__.getAllRefundRequestedTickets)(tickets), [tickets]);
3802
3918
  const closeSlider = () => {
3803
3919
  onCloseSlider();
3804
3920
  };
3805
- return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(_RightDrawer__WEBPACK_IMPORTED_MODULE_3__["default"], {
3921
+ return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(_RightDrawer__WEBPACK_IMPORTED_MODULE_3__["default"], {
3806
3922
  id: "refund-details",
3807
3923
  open: open,
3808
3924
  onClose: closeSlider,
3809
3925
  title: t("order_summary.refund_details"),
3810
- children: tickets === null || tickets === void 0 ? void 0 : tickets.map(ticket => /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(_RefundRequestedTicket__WEBPACK_IMPORTED_MODULE_4__["default"], {
3926
+ children: requestedTickets === null || requestedTickets === void 0 ? void 0 : requestedTickets.map(ticket => /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(_RefundRequestedTicket__WEBPACK_IMPORTED_MODULE_4__["default"], {
3811
3927
  ticket: ticket,
3812
3928
  refundDetails: true
3813
3929
  }, "refund_req_".concat(ticket === null || ticket === void 0 ? void 0 : ticket.id)))
@@ -4059,7 +4175,6 @@ const RefundRequestsModal = _ref => {
4059
4175
  };
4060
4176
  const refundStepOne = () => /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__.Fragment, {
4061
4177
  children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__.jsx)("h2", {
4062
- className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_11__.refundText,
4063
4178
  children: t("confirm_popup.question_text_cancel")
4064
4179
  }), errorMsg && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__.jsx)(_Labels_ErrorLabel__WEBPACK_IMPORTED_MODULE_8__["default"], {
4065
4180
  classNames: _styles_module_scss__WEBPACK_IMPORTED_MODULE_11__.refundErrorMsg,
@@ -5413,7 +5528,8 @@ TicketDetail.propTypes = {
5413
5528
  ticketId: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().number),
5414
5529
  orderId: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().number),
5415
5530
  ownerId: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().number),
5416
- onClose: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().func)
5531
+ onClose: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().func),
5532
+ open: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().bool)
5417
5533
  };
5418
5534
  /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (TicketDetail);
5419
5535
 
@@ -5934,7 +6050,7 @@ const STATUS_INCOMPLETE = "Incomplete";
5934
6050
  const STATUS_CANCELLED = "Cancelled";
5935
6051
  const STATUS_UNASSIGNED = "Unassigned";
5936
6052
  const useTicketDetails = ticket => {
5937
- var _ticket$ticket_type, _ticket$promo_code, _ticket$owner3, _ticket$owner4;
6053
+ var _ticket$ticket_type, _ticket$promo_code, _ticket$owner3, _ticket$owner4, _ticket$ticket_type2, _ticket$promo_code2;
5938
6054
  const getStatus = () => {
5939
6055
  var _ticket$owner, _ticket$owner2;
5940
6056
  if (!ticket.is_active) return STATUS_CANCELLED;
@@ -5950,7 +6066,7 @@ const useTicketDetails = ticket => {
5950
6066
  const isComplete = status === STATUS_COMPLETE;
5951
6067
  const isUnassigned = status === STATUS_UNASSIGNED;
5952
6068
  const isIncomplete = status === STATUS_INCOMPLETE;
5953
- const canReassign = !isUnassigned && ticket.ticket_type.allows_to_reassign && (!ticket.promo_code || ticket.promo_code.allows_to_reassign);
6069
+ const canReassign = !isUnassigned && ((_ticket$ticket_type2 = ticket.ticket_type) === null || _ticket$ticket_type2 === void 0 ? void 0 : _ticket$ticket_type2.allows_to_reassign) && (!ticket.promo_code || ((_ticket$promo_code2 = ticket.promo_code) === null || _ticket$promo_code2 === void 0 ? void 0 : _ticket$promo_code2.allows_to_reassign));
5954
6070
  return {
5955
6071
  status,
5956
6072
  isComplete,
@@ -6060,6 +6176,7 @@ const DEFAULT_STATE = {
6060
6176
  user: {},
6061
6177
  widgetLoading: false,
6062
6178
  memberOrders: [],
6179
+ userTickets: [],
6063
6180
  extraQuestions: [],
6064
6181
  currentTicket: null,
6065
6182
  errors: {},
@@ -6073,6 +6190,9 @@ const DEFAULT_STATE = {
6073
6190
  ticket_last_page: 1,
6074
6191
  ticket_per_page: 5,
6075
6192
  ticket_total: 0,
6193
+ user_tickets_total: 0,
6194
+ user_tickets_current_page: 0,
6195
+ user_tickets_last_page: 0,
6076
6196
  apiError: null
6077
6197
  };
6078
6198
  const WidgetReducer = function () {
@@ -6140,6 +6260,24 @@ const WidgetReducer = function () {
6140
6260
  orders_last_page: last_page
6141
6261
  });
6142
6262
  }
6263
+ case _actions__WEBPACK_IMPORTED_MODULE_3__.GET_MY_ASSIGNED_TICKETS:
6264
+ {
6265
+ const {
6266
+ userTickets
6267
+ } = state;
6268
+ const {
6269
+ data,
6270
+ total,
6271
+ current_page,
6272
+ last_page
6273
+ } = payload.response;
6274
+ return _objectSpread(_objectSpread({}, state), {}, {
6275
+ userTickets: current_page === _utils_constants__WEBPACK_IMPORTED_MODULE_4__.FIRST_PAGE ? data : [...userTickets, ...data],
6276
+ user_tickets_total: total,
6277
+ user_tickets_current_page: current_page,
6278
+ user_tickets_last_page: last_page
6279
+ });
6280
+ }
6143
6281
  case _actions__WEBPACK_IMPORTED_MODULE_3__.GET_TICKETS_BY_ORDER:
6144
6282
  {
6145
6283
  const {
@@ -6383,8 +6521,11 @@ __webpack_require__.r(__webpack_exports__);
6383
6521
  /* harmony export */ STATUS_PENDING: () => (/* binding */ STATUS_PENDING),
6384
6522
  /* harmony export */ STATUS_PROCESSING: () => (/* binding */ STATUS_PROCESSING),
6385
6523
  /* harmony export */ STATUS_REFUND_APPROVED: () => (/* binding */ STATUS_REFUND_APPROVED),
6524
+ /* harmony export */ STATUS_REFUND_APPROVED_LC: () => (/* binding */ STATUS_REFUND_APPROVED_LC),
6386
6525
  /* harmony export */ STATUS_REFUND_PENDING: () => (/* binding */ STATUS_REFUND_PENDING),
6526
+ /* harmony export */ STATUS_REFUND_PENDING_LC: () => (/* binding */ STATUS_REFUND_PENDING_LC),
6387
6527
  /* harmony export */ STATUS_REFUND_REJECTED: () => (/* binding */ STATUS_REFUND_REJECTED),
6528
+ /* harmony export */ STATUS_REFUND_REJECTED_LC: () => (/* binding */ STATUS_REFUND_REJECTED_LC),
6388
6529
  /* harmony export */ STATUS_UNASSIGNED: () => (/* binding */ STATUS_UNASSIGNED),
6389
6530
  /* harmony export */ STEP_ONE: () => (/* binding */ STEP_ONE),
6390
6531
  /* harmony export */ STEP_TWO: () => (/* binding */ STEP_TWO),
@@ -6410,6 +6551,9 @@ const STATUS_UNASSIGNED = "STATUS_UNASSIGNED";
6410
6551
  const STATUS_REFUND_PENDING = "STATUS_REFUND_PENDING";
6411
6552
  const STATUS_REFUND_APPROVED = "STATUS_REFUND_APPROVED";
6412
6553
  const STATUS_REFUND_REJECTED = "STATUS_REFUND_REJECTED";
6554
+ const STATUS_REFUND_PENDING_LC = "Requested";
6555
+ const STATUS_REFUND_APPROVED_LC = "Approved";
6556
+ const STATUS_REFUND_REJECTED_LC = "Rejected";
6413
6557
  const JEST_TIMEOUT_IN_MILLISEC = 10000;
6414
6558
  const ONE_ITEM = 1;
6415
6559
  const TWO_ITEM = 2;
@@ -6664,6 +6808,7 @@ const useSummitDetails = _ref => {
6664
6808
  __webpack_require__.r(__webpack_exports__);
6665
6809
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
6666
6810
  /* harmony export */ buildValidationSchema: () => (/* binding */ buildValidationSchema),
6811
+ /* harmony export */ getAllRefundRequestedTickets: () => (/* binding */ getAllRefundRequestedTickets),
6667
6812
  /* harmony export */ getRefundRequestedStatusColor: () => (/* binding */ getRefundRequestedStatusColor),
6668
6813
  /* harmony export */ getRefundedRequestedStatus: () => (/* binding */ getRefundedRequestedStatus),
6669
6814
  /* harmony export */ getRefundedRequestedTickets: () => (/* binding */ getRefundedRequestedTickets),
@@ -6729,18 +6874,29 @@ const getTicketRole = ticket => {
6729
6874
  const getTicketType = (ticket, summit) => summit.ticket_types.find(type => type.id === ticket.ticket_type_id);
6730
6875
  const isTicketRefundable = ticket => {
6731
6876
  var _ticket$refund_reques;
6732
- return (ticket === null || ticket === void 0 ? void 0 : ticket.final_amount) > 0 && (ticket === null || ticket === void 0 ? void 0 : ticket.final_amount) > (ticket === null || ticket === void 0 ? void 0 : ticket.refunded_amount) && !(ticket !== null && ticket !== void 0 && (_ticket$refund_reques = ticket.refund_requests) !== null && _ticket$refund_reques !== void 0 && _ticket$refund_reques.some(rr => rr.status === "Requested"));
6877
+ return (ticket === null || ticket === void 0 ? void 0 : ticket.final_amount) > 0 && (ticket === null || ticket === void 0 ? void 0 : ticket.final_amount) > (ticket === null || ticket === void 0 ? void 0 : ticket.refunded_amount) && !(ticket !== null && ticket !== void 0 && (_ticket$refund_reques = ticket.refund_requests) !== null && _ticket$refund_reques !== void 0 && _ticket$refund_reques.some(rr => rr.status === _constants__WEBPACK_IMPORTED_MODULE_2__.STATUS_REFUND_PENDING_LC));
6733
6878
  };
6734
6879
  const ticketsRefundable = tickets => (tickets === null || tickets === void 0 ? void 0 : tickets.filter(ticket => isTicketRefundable(ticket)).length) || 0;
6735
6880
  const getRefundedRequestedTickets = tickets => tickets === null || tickets === void 0 ? void 0 : tickets.filter(ticket => {
6736
6881
  var _ticket$refund_reques2;
6737
- return (_ticket$refund_reques2 = ticket.refund_requests) === null || _ticket$refund_reques2 === void 0 ? void 0 : _ticket$refund_reques2.some(rr => rr.status === "Requested");
6882
+ return (_ticket$refund_reques2 = ticket.refund_requests) === null || _ticket$refund_reques2 === void 0 ? void 0 : _ticket$refund_reques2.some(rr => rr.status === _constants__WEBPACK_IMPORTED_MODULE_2__.STATUS_REFUND_PENDING_LC);
6738
6883
  });
6884
+ const getAllRefundRequestedTickets = tickets => {
6885
+ const allTickets = [];
6886
+ tickets === null || tickets === void 0 || tickets.map(ticket => {
6887
+ var _ticket$refund_reques3, _ticket$refund_reques4, _ticket$refund_reques5;
6888
+ if ((_ticket$refund_reques3 = ticket.refund_requests) !== null && _ticket$refund_reques3 !== void 0 && _ticket$refund_reques3.some(rr => rr.status === _constants__WEBPACK_IMPORTED_MODULE_2__.STATUS_REFUND_PENDING_LC) || (_ticket$refund_reques4 = ticket.refund_requests) !== null && _ticket$refund_reques4 !== void 0 && _ticket$refund_reques4.some(rr => rr.status === _constants__WEBPACK_IMPORTED_MODULE_2__.STATUS_REFUND_APPROVED_LC) || (_ticket$refund_reques5 = ticket.refund_requests) !== null && _ticket$refund_reques5 !== void 0 && _ticket$refund_reques5.some(rr => rr.status === _constants__WEBPACK_IMPORTED_MODULE_2__.STATUS_REFUND_REJECTED_LC)) {
6889
+ allTickets.push(ticket);
6890
+ }
6891
+ return ticket;
6892
+ });
6893
+ return allTickets;
6894
+ };
6739
6895
  const getRefundedRequestedStatus = ticket => {
6740
- var _ticket$refund_reques3, _ticket$refund_reques4, _ticket$refund_reques5;
6741
- if ((_ticket$refund_reques3 = ticket.refund_requests) !== null && _ticket$refund_reques3 !== void 0 && _ticket$refund_reques3.some(rr => rr.status === "Requested")) return _constants__WEBPACK_IMPORTED_MODULE_2__.STATUS_REFUND_PENDING;
6742
- if ((_ticket$refund_reques4 = ticket.refund_requests) !== null && _ticket$refund_reques4 !== void 0 && _ticket$refund_reques4.some(rr => rr.status === "Approved")) return _constants__WEBPACK_IMPORTED_MODULE_2__.STATUS_REFUND_APPROVED;
6743
- if ((_ticket$refund_reques5 = ticket.refund_requests) !== null && _ticket$refund_reques5 !== void 0 && _ticket$refund_reques5.some(rr => rr.status === "Rejected")) return _constants__WEBPACK_IMPORTED_MODULE_2__.STATUS_REFUND_REJECTED;
6896
+ var _ticket$refund_reques6, _ticket$refund_reques7, _ticket$refund_reques8;
6897
+ if ((_ticket$refund_reques6 = ticket.refund_requests) !== null && _ticket$refund_reques6 !== void 0 && _ticket$refund_reques6.some(rr => rr.status === _constants__WEBPACK_IMPORTED_MODULE_2__.STATUS_REFUND_PENDING_LC)) return _constants__WEBPACK_IMPORTED_MODULE_2__.STATUS_REFUND_PENDING;
6898
+ if ((_ticket$refund_reques7 = ticket.refund_requests) !== null && _ticket$refund_reques7 !== void 0 && _ticket$refund_reques7.some(rr => rr.status === _constants__WEBPACK_IMPORTED_MODULE_2__.STATUS_REFUND_APPROVED_LC)) return _constants__WEBPACK_IMPORTED_MODULE_2__.STATUS_REFUND_APPROVED;
6899
+ if ((_ticket$refund_reques8 = ticket.refund_requests) !== null && _ticket$refund_reques8 !== void 0 && _ticket$refund_reques8.some(rr => rr.status === _constants__WEBPACK_IMPORTED_MODULE_2__.STATUS_REFUND_REJECTED_LC)) return _constants__WEBPACK_IMPORTED_MODULE_2__.STATUS_REFUND_REJECTED;
6744
6900
  return _constants__WEBPACK_IMPORTED_MODULE_2__.STATUS_REFUND_PENDING;
6745
6901
  };
6746
6902
  const getRefundRequestedStatusColor = ticket => {
@@ -7010,43 +7166,49 @@ var _7 = "refundDisabled___jvrk3";
7010
7166
  __webpack_require__.r(__webpack_exports__);
7011
7167
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
7012
7168
  /* harmony export */ assignTicketButton: () => (/* binding */ _1),
7013
- /* harmony export */ blackButton: () => (/* binding */ _2),
7014
- /* harmony export */ display_none: () => (/* binding */ _3),
7015
- /* harmony export */ label: () => (/* binding */ _4),
7016
- /* harmony export */ orderTicketContainer: () => (/* binding */ _5),
7017
- /* harmony export */ orderTicketInfo: () => (/* binding */ _6),
7018
- /* harmony export */ orderTicketInfoContainer: () => (/* binding */ _7),
7019
- /* harmony export */ orderWrapper: () => (/* binding */ _8),
7020
- /* harmony export */ reassignButton: () => (/* binding */ _9),
7021
- /* harmony export */ refundButtons: () => (/* binding */ _a),
7022
- /* harmony export */ tabButtons: () => (/* binding */ _b),
7023
- /* harmony export */ ticketActionButtons: () => (/* binding */ _c),
7024
- /* harmony export */ ticketListContainer: () => (/* binding */ _d),
7025
- /* harmony export */ ticketNo: () => (/* binding */ _e),
7026
- /* harmony export */ ticketOwnerEmail: () => (/* binding */ _f),
7027
- /* harmony export */ ticketTicketType: () => (/* binding */ _10),
7028
- /* harmony export */ viewFinishTicketButton: () => (/* binding */ _11),
7029
- /* harmony export */ viewMoreButton: () => (/* binding */ _12)
7169
+ /* harmony export */ assignToMeText: () => (/* binding */ _2),
7170
+ /* harmony export */ assignedByText: () => (/* binding */ _3),
7171
+ /* harmony export */ assignedToMeDes: () => (/* binding */ _4),
7172
+ /* harmony export */ blackButton: () => (/* binding */ _5),
7173
+ /* harmony export */ display_none: () => (/* binding */ _6),
7174
+ /* harmony export */ label: () => (/* binding */ _7),
7175
+ /* harmony export */ orderTicketContainer: () => (/* binding */ _8),
7176
+ /* harmony export */ orderTicketInfo: () => (/* binding */ _9),
7177
+ /* harmony export */ orderTicketInfoContainer: () => (/* binding */ _a),
7178
+ /* harmony export */ orderWrapper: () => (/* binding */ _b),
7179
+ /* harmony export */ reassignButton: () => (/* binding */ _c),
7180
+ /* harmony export */ refundButtons: () => (/* binding */ _d),
7181
+ /* harmony export */ tabButtons: () => (/* binding */ _e),
7182
+ /* harmony export */ ticketActionButtons: () => (/* binding */ _f),
7183
+ /* harmony export */ ticketListContainer: () => (/* binding */ _10),
7184
+ /* harmony export */ ticketNo: () => (/* binding */ _11),
7185
+ /* harmony export */ ticketOwnerEmail: () => (/* binding */ _12),
7186
+ /* harmony export */ ticketTicketType: () => (/* binding */ _13),
7187
+ /* harmony export */ viewFinishTicketButton: () => (/* binding */ _14),
7188
+ /* harmony export */ viewMoreButton: () => (/* binding */ _15)
7030
7189
  /* harmony export */ });
7031
7190
  // extracted by mini-css-extract-plugin
7032
7191
  var _1 = "assignTicketButton___zzLsc";
7033
- var _2 = "blackButton___l9hj9";
7034
- var _3 = "display_none___CqpL3";
7035
- var _4 = "label___zXDWz";
7036
- var _5 = "orderTicketContainer___ZJLzk";
7037
- var _6 = "orderTicketInfo___gemqB";
7038
- var _7 = "orderTicketInfoContainer____p66V";
7039
- var _8 = "orderWrapper___yDBAo";
7040
- var _9 = "reassignButton___RojM5";
7041
- var _a = "refundButtons___jDl4H";
7042
- var _b = "tabButtons___xTyJA";
7043
- var _c = "ticketActionButtons___rpSMQ";
7044
- var _d = "ticketListContainer___cfmrr";
7045
- var _e = "ticketNo___a2iM9";
7046
- var _f = "ticketOwnerEmail___Zt4OE";
7047
- var _10 = "ticketTicketType___Zq_f0";
7048
- var _11 = "viewFinishTicketButton___HF6Im";
7049
- var _12 = "viewMoreButton___K_1zT";
7192
+ var _2 = "assignToMeText___ZPaex";
7193
+ var _3 = "assignedByText___bNZ7z";
7194
+ var _4 = "assignedToMeDes___GjFkV";
7195
+ var _5 = "blackButton___l9hj9";
7196
+ var _6 = "display_none___CqpL3";
7197
+ var _7 = "label___zXDWz";
7198
+ var _8 = "orderTicketContainer___ZJLzk";
7199
+ var _9 = "orderTicketInfo___gemqB";
7200
+ var _a = "orderTicketInfoContainer____p66V";
7201
+ var _b = "orderWrapper___yDBAo";
7202
+ var _c = "reassignButton___RojM5";
7203
+ var _d = "refundButtons___jDl4H";
7204
+ var _e = "tabButtons___xTyJA";
7205
+ var _f = "ticketActionButtons___rpSMQ";
7206
+ var _10 = "ticketListContainer___cfmrr";
7207
+ var _11 = "ticketNo___a2iM9";
7208
+ var _12 = "ticketOwnerEmail___Zt4OE";
7209
+ var _13 = "ticketTicketType___Zq_f0";
7210
+ var _14 = "viewFinishTicketButton___HF6Im";
7211
+ var _15 = "viewMoreButton___K_1zT";
7050
7212
 
7051
7213
 
7052
7214
 
@@ -7821,7 +7983,7 @@ module.exports = require("yup");
7821
7983
  \**********************************/
7822
7984
  /***/ ((module) => {
7823
7985
 
7824
- 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!"},"labels":{"tickets":"Tickets","summary":"Summary"},"order_summary":{"order_summary":"Order Summary","order_no":"Order number","discounts":"Discount","refunds":"Refund","request_refund":"Request a Refund","refund_details":"Your Refund Details","taxes":"Taxes","total":"Total Due","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-tickets":{"loading":"Loading your orders and tickets...","empty-title":"It appears you have not placed any orders and no tickets have been assigned to you.","empty-text":"If you believe this is incorrect please email <a href=\\"mailto:{{support_email}}\\">{{support_email}}</a>. Thank you!","view_more":"View more","view_less":"View less"},"orders":{"title":"My Orders with Tickets","purchased":"Purchased on","empty":"There are no active orders so far","loading":"Loading orders...","no_orders":"No results found."},"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","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":"Refund Approved","refund_request_rejected":"Refund Rejected","refund_request_pending":"Refund 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_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"},"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","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","saving_success":"Ticket Saved!","saving_success_description":"ticket saved successfully"},"ticket_reassign":{"reassign_ticket":"REASSIGN ticket","assigned_to":"This ticket is assigned to ","reassigned_to":"You have reassigned the ticket to","enter_email_note":"Enter the email of the person you would like to REASSIGN the ticket to below. \\n We will notice the old address that the ticket is no longer available.","complete_info":"To finish, complete the following information.","new_attendee_email":"New attendee email","personal_message":"Personal Message (optional)","cancel":"cancel","save":"reassign","saving_error":"Error saving ticket","saving_success":"Ticket Saved!","saving_success_description":"ticket saved successfully"},"ticket_assign_eq":{"cancel":"complete later","save":"save"},"ticket_assign":{"assign_ticket":"Assign ticket","purchased_by":"Purchased by ","assign_to_me":"Assign to me","assign_to_someone_else":"I want to assign this ticket to someone else:","enter_email_note":"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.","save_label":"Assign to this person","complete_info":"To finish, complete the following information.","assigned_to":"You have assigned the ticket to","new_attendee_email":"New attendee email","personal_message":"Personal Message (optional)","cancel":"cancel","save":"reassign","saving_error":"Error saving ticket","saving_success":"Ticket Saved!","saving_success_description":"ticket saved successfully"},"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"}}}');
7986
+ 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!"},"labels":{"tickets":"Tickets","summary":"Summary","assigned_to_me":"Assigned Tickets"},"order_summary":{"order_summary":"Order Summary","order_no":"Order number","discounts":"Discount","refunds":"Refund","request_refund":"Request a Refund","refund_details":"Your Refund Details","taxes":"Taxes","total":"Total Due","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-tickets":{"loading":"Loading your orders and tickets...","empty-title":"It appears you have not placed any orders and no tickets have been assigned to you.","empty-text":"If you believe this is incorrect please email <a href=\\"mailto:{{support_email}}\\">{{support_email}}</a>. Thank you!","view_more":"View more","view_less":"View less"},"orders":{"title":"My Orders with Tickets","purchased":"Purchased on","empty":"There are no active orders so far","loading":"Loading orders...","no_orders":"No results found."},"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","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":"Refund Approved","refund_request_rejected":"Refund Rejected","refund_request_pending":"Refund 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_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"},"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","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","saving_success":"Ticket Saved!","saving_success_description":"ticket saved successfully"},"ticket_reassign":{"reassign_ticket":"REASSIGN ticket","assigned_to":"This ticket is assigned to ","reassigned_to":"You have reassigned the ticket to","enter_email_note":"Enter the email of the person you would like to REASSIGN the ticket to below. \\n We will notice the old address that the ticket is no longer available.","complete_info":"To finish, complete the following information.","new_attendee_email":"New attendee email","personal_message":"Personal Message (optional)","cancel":"cancel","save":"reassign","saving_error":"Error saving ticket","saving_success":"Ticket Saved!","saving_success_description":"ticket saved successfully"},"ticket_assign_eq":{"cancel":"complete later","save":"save"},"ticket_assign":{"assign_ticket":"Assign ticket","purchased_by":"Purchased by ","assign_to_me":"Assign to me","assign_to_someone_else":"I want to assign this ticket to someone else:","enter_email_note":"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.","save_label":"Assign to this person","complete_info":"To finish, complete the following information.","assigned_to":"You have assigned the ticket to","new_attendee_email":"New attendee email","personal_message":"Personal Message (optional)","cancel":"cancel","save":"reassign","saving_error":"Error saving ticket","saving_success":"Ticket Saved!","saving_success_description":"ticket saved successfully"},"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"}}}');
7825
7987
 
7826
7988
  /***/ }),
7827
7989
 
@@ -7831,7 +7993,7 @@ module.exports = /*#__PURE__*/JSON.parse('{"landing":{"sign_out":"Sign out","sig
7831
7993
  \**********************************/
7832
7994
  /***/ ((module) => {
7833
7995
 
7834
- 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":{"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"},"labels":{"tickets":"Tickets","summary":"Summary"},"order_summary":{"order_summary":"Order Summary","order_no":"Order number","discounts":"Discount","refunds":"Refund","request_refund":"Request a Refund","refund_details":"Your Refund Details","taxes":"Taxes","total":"Total Due","amount_paid":"Amount Paid"},"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-tickets":{"loading":"Loading your orders and tickets...","empty-title":"It appears you have not placed any orders and no tickets have been assigned to you.","empty-text":"If you believe this is incorrect please email <a href=\\"mailto:{{support_email}}\\">{{support_email}}</a>. Thank you!","view_more":"View more","view_less":"View less"},"orders":{"title":"My Orders with Tickets","purchased":"Purchased on","empty":"There are no active orders so far","loading":"Loading orders...","no_orders":"No results found."},"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","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","refund_request_approved":"Refund Approved","refund_request_rejected":"Refund Rejected","refund_request_pending":"Refund 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_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"},"sort":{"sort":"Sort","new_first":"Newest first","old_first":"Oldest first"},"order_search":{"order_number":"Search order number"}}');
7996
+ 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":{"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"},"labels":{"tickets":"Tickets","summary":"Summary","assigned_to_me":"Assigned Tickets"},"order_summary":{"order_summary":"Order Summary","order_no":"Order number","discounts":"Discount","refunds":"Refund","request_refund":"Request a Refund","refund_details":"Your Refund Details","taxes":"Taxes","total":"Total Due","amount_paid":"Amount Paid"},"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-tickets":{"loading":"Loading your orders and tickets...","empty-title":"It appears you have not placed any orders and no tickets have been assigned to you.","empty-text":"If you believe this is incorrect please email <a href=\\"mailto:{{support_email}}\\">{{support_email}}</a>. Thank you!","view_more":"View more","view_less":"View less"},"orders":{"title":"My Orders with Tickets","purchased":"Purchased on","empty":"There are no active orders so far","loading":"Loading orders...","no_orders":"No results found."},"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","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","refund_request_approved":"Refund Approved","refund_request_rejected":"Refund Rejected","refund_request_pending":"Refund 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_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"},"sort":{"sort":"Sort","new_first":"Newest first","old_first":"Oldest first"},"order_search":{"order_number":"Search order number"}}');
7835
7997
 
7836
7998
  /***/ })
7837
7999
 
@@ -7927,9 +8089,10 @@ __webpack_require__.r(__webpack_exports__);
7927
8089
  /* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_mui_material__WEBPACK_IMPORTED_MODULE_5__);
7928
8090
  /* harmony import */ var _store__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./store */ "./src/store.js");
7929
8091
  /* harmony import */ var _components_MyOrdersTickets__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./components/MyOrdersTickets */ "./src/components/MyOrdersTickets.js");
7930
- /* harmony import */ var _actions__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./actions */ "./src/actions.js");
7931
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");
7932
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__);
8092
+ /* harmony import */ var _components_OrdersList_AssignedToMe__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./components/OrdersList/AssignedToMe */ "./src/components/OrdersList/AssignedToMe.js");
8093
+ /* harmony import */ var _actions__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./actions */ "./src/actions.js");
8094
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");
8095
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__);
7933
8096
  /**
7934
8097
  * Copyright 2024 OpenStack Foundation
7935
8098
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -7952,6 +8115,7 @@ __webpack_require__.r(__webpack_exports__);
7952
8115
 
7953
8116
 
7954
8117
 
8118
+
7955
8119
  const MyOrdersMyTicketsWidget = props => {
7956
8120
  const {
7957
8121
  loginUrl,
@@ -7981,22 +8145,22 @@ const MyOrdersMyTicketsWidget = props => {
7981
8145
  const params = new URLSearchParams(window.location.search);
7982
8146
  const flush = params.has("flushState");
7983
8147
  if (flush) store.dispatch({
7984
- type: _actions__WEBPACK_IMPORTED_MODULE_8__.RESET_STATE,
8148
+ type: _actions__WEBPACK_IMPORTED_MODULE_9__.RESET_STATE,
7985
8149
  payload: null
7986
8150
  });
7987
8151
  };
7988
8152
  (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {
7989
- store.dispatch((0,_actions__WEBPACK_IMPORTED_MODULE_8__.setReducerState)(summit, user));
8153
+ store.dispatch((0,_actions__WEBPACK_IMPORTED_MODULE_9__.setReducerState)(summit, user));
7990
8154
  }, [summit, user]);
7991
- return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(react_redux__WEBPACK_IMPORTED_MODULE_2__.Provider, {
8155
+ return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)(react_redux__WEBPACK_IMPORTED_MODULE_2__.Provider, {
7992
8156
  store: store,
7993
- children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(redux_persist_integration_react__WEBPACK_IMPORTED_MODULE_3__.PersistGate, {
8157
+ children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)(redux_persist_integration_react__WEBPACK_IMPORTED_MODULE_3__.PersistGate, {
7994
8158
  onBeforeLift: handleBeforeLift,
7995
8159
  loading: null,
7996
8160
  persistor: persistor,
7997
- children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_5__.StyledEngineProvider, {
8161
+ children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_5__.StyledEngineProvider, {
7998
8162
  injectFirst: true,
7999
- children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_5__.Box, {
8163
+ children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_5__.Box, {
8000
8164
  sx: {
8001
8165
  padding: {
8002
8166
  xs: 2,
@@ -8004,15 +8168,15 @@ const MyOrdersMyTicketsWidget = props => {
8004
8168
  lg: 0
8005
8169
  }
8006
8170
  },
8007
- children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)("h3", {
8171
+ children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)("h3", {
8008
8172
  children: t("orders.title")
8009
8173
  })
8010
- }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_components_MyOrdersTickets__WEBPACK_IMPORTED_MODULE_7__["default"], {
8174
+ }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)(_components_MyOrdersTickets__WEBPACK_IMPORTED_MODULE_7__["default"], {
8011
8175
  loginUrl: loginUrl,
8012
8176
  supportEmail: supportEmail,
8013
8177
  summit: summit,
8014
8178
  apiBaseUrl: apiBaseUrl
8015
- })]
8179
+ }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)(_components_OrdersList_AssignedToMe__WEBPACK_IMPORTED_MODULE_8__["default"], {})]
8016
8180
  })
8017
8181
  })
8018
8182
  });
@@ -8033,4 +8197,4 @@ MyOrdersMyTicketsWidget.propTypes = {
8033
8197
  /******/ })()
8034
8198
  ;
8035
8199
  });
8036
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,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Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNINUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDOFg7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNuQjlYO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNzSTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDTnRJO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDZ007Ozs7Ozs7Ozs7Ozs7Ozs7O0FDUmhNO0FBQ0E7QUFDQTtBQUNBO0FBQytFOzs7Ozs7Ozs7OztBQ0ovRTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7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Q0FBQyxlQUNOd0osc0RBQUEsQ0FBQ2lVLG1FQUFlO1VBQ2RvYixRQUFRLEVBQUVBLFFBQVM7VUFDbkIrSSxZQUFZLEVBQUVBLFlBQWE7VUFDM0J2akMsTUFBTSxFQUFFQSxNQUFPO1VBQ2Y4QyxVQUFVLEVBQUVBO1FBQVcsQ0FDeEIsQ0FBQztNQUFBLENBQ2tCO0lBQUMsQ0FDWjtFQUFDLENBQ04sQ0FBQztBQUVmLENBQUM7QUFFRHdnQyx1QkFBdUIsQ0FBQzUyQixTQUFTLEdBQUc7RUFDbEM4dEIsUUFBUSxFQUFFaHdCLDBEQUFnQjtFQUMxQis0QixZQUFZLEVBQUUvNEIsMERBQWdCO0VBQzlCeEssTUFBTSxFQUFFd0ssMERBQWdCO0VBQ3hCMUgsVUFBVSxFQUFFMEgsMERBQWdCO0VBQzVCdkssSUFBSSxFQUFFdUssMERBQWdCO0VBQ3RCK3ZCLFFBQVEsRUFBRS92QiwwREFBZ0I7RUFDMUJwRCxhQUFhLEVBQUVvRCx3REFBY3FDO0FBQy9CLENBQUM7QUFFRCxpRUFBZXkyQix1QkFBdUIsRSIsInNvdXJjZXMiOlsid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC93ZWJwYWNrL3VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24iLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2FjdGlvbnMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvQXNzaWduRVFGb3JtL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0NvcHlUZXh0L2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0N1c3RvbURpYWxvZy9Db250ZXh0LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0N1c3RvbURpYWxvZy9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9DdXN0b21UaGVtZS5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb21wb25lbnRzL0NoZWNrYm94TGlzdFF1ZXN0aW9uRmllbGQuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29tcG9uZW50cy9DaGVja2JveFF1ZXN0aW9uRmllbGQuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29tcG9uZW50cy9Ecm9wZG93blF1ZXN0aW9uRmllbGQuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29tcG9uZW50cy9SYWRpb0xpc3RRdWVzdGlvbkZpZWxkLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvVGV4dFF1ZXN0aW9uRmllbGQuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29tcG9uZW50cy91dGlscy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb25zdGFudHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVyU29ydFNlYXJjaC9EYXRlcGlja2VyLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlclNvcnRTZWFyY2gvRmlsdGVyLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlclNvcnRTZWFyY2gvU2VhcmNoLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlclNvcnRTZWFyY2gvU29ydC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJTb3J0U2VhcmNoL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0Zvcm1Gb290ZXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvTGFiZWxzL0Vycm9yTGFiZWwuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvTG9hZGVyL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL015T3JkZXJzVGlja2V0cy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlclN1bW1hcnkvT3JkZXJTdW1tYXJ5VGFibGUuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJTdW1tYXJ5L1JlZnVuZEVtYWlsU3VwcG9ydC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlclN1bW1hcnkvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJzTGlzdC9BdHRlbmRlZVN0YXR1cy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlcnNMaXN0L09yZGVyTGlzdEl0ZW0uanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJzTGlzdC9PcmRlckxpc3RUaWNrZXRzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyc0xpc3QvT3JkZXJzTGlzdERlc2t0b3BNb2JpbGUuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJzTGlzdC9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9SZWZ1bmRSZXF1ZXN0cy9SZWZ1bmREZXRhaWxzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1JlZnVuZFJlcXVlc3RzL1JlZnVuZFJlcXVlc3RlZFRpY2tldC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9SZWZ1bmRSZXF1ZXN0cy9SZWZ1bmRTdGF0dXMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvUmVmdW5kUmVxdWVzdHMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvUmlnaHREcmF3ZXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0QXNzaWduL2NvbXBvbmVudHMvQXNzaWduRm9ybS9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXRBc3NpZ24vaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvQ29tcGFueUZpZWxkL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb21wb25lbnRzL1JlZ2lzdHJhdGlvbkRpc2NsYWltZXIvUmVnaXN0cmF0aW9uRGlzY2xhaW1lci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29tcG9uZW50cy9UaWNrZXREZWxlZ2F0aW9uRmllbGRzL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb21wb25lbnRzL1RpY2tldEZvcm0vaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvVGlja2V0T3duZXJGaWVsZHMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbnN0YW50cy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0UmVhc3NpZ24vY29tcG9uZW50cy9SZWFzc2lnbkZvcm0vaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0UmVhc3NpZ24vaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0U3RhdHVzL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9ob29rcy91c2VHZXRUaWNrZXQuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2hvb2tzL3VzZVNjcm9sbFRvRXJyb3IuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2hvb2tzL3VzZVRpY2tldERldGFpbHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2kxOG4vaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL3JlZHVjZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL3N0b3JlLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy91dGlscy9hdXRoLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy91dGlscy9jb25zdGFudHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL3V0aWxzL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy91dGlscy9zdW1taXRVdGlscy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvdXRpbHMvdGlja2V0VXRpbHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvQ29weVRleHQvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlclNvcnRTZWFyY2gvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0Zvcm1Gb290ZXIvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0xhYmVscy9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJTdW1tYXJ5L3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlcnNMaXN0L3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9SZWZ1bmRSZXF1ZXN0cy9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvUmlnaHREcmF3ZXIvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldEFzc2lnbi9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvUmVnaXN0cmF0aW9uRGlzY2xhaW1lci9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvVGlja2V0T3duZXJGaWVsZHMvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0UmVhc3NpZ24vc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldFN0YXR1cy9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHlcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ2hlY2tDaXJjbGVcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL0Nsb3NlXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbC9Db250ZW50Q29weVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRGVsZXRlT3V0bGluZVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRXJyb3JcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL0ZpbHRlckxpc3RcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL0ltcG9ydEV4cG9ydFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvU2VhcmNoXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvQ2hlY2tib3hcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL0RpdmlkZXJcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL0lucHV0QmFzZVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvU3RhY2tcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL1RhYlwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvVGFic1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvc3R5bGVzXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC91c2VNZWRpYVF1ZXJ5XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS94LWRhdGUtcGlja2Vycy9BZGFwdGVyRGF5anNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL3gtZGF0ZS1waWNrZXJzL0RhdGVQaWNrZXJcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL3gtZGF0ZS1waWNrZXJzL0xvY2FsaXphdGlvblByb3ZpZGVyXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQHJlZHV4anMvdG9vbGtpdFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBzZW50cnkvcmVhY3RcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJkYXlqc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcImZvcm1pa1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcImkxOG5leHRcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJpMThuZXh0LWJyb3dzZXItbGFuZ3VhZ2VkZXRlY3RvclwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcImlkdG9rZW4tdmVyaWZpZXJcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJtb21lbnQtdGltZXpvbmVcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL2NvbXBvbmVudHMvcmF3LWh0bWxcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3NlY3VyaXR5L2FjdGlvbnNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3NlY3VyaXR5L21ldGhvZHNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL2FjdGlvbnNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL21ldGhvZHNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL3F1ZXJ5LWFjdGlvbnNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJwLWxpbWl0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicHJvcC10eXBlc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlYWN0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVhY3QtaTE4bmV4dFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlYWN0LWluZmluaXRlLXNjcm9sbC1jb21wb25lbnRcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWFjdC1xci1jb2RlXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVhY3QtcmVkdXhcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWFjdC9qc3gtcnVudGltZVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlZHV4XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVkdXgtcGVyc2lzdFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlZHV4LXBlcnNpc3QvaW50ZWdyYXRpb24vcmVhY3RcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWR1eC1wZXJzaXN0L2xpYi9zdG9yYWdlXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwieXVwXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L3dlYnBhY2svYm9vdHN0cmFwIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC93ZWJwYWNrL3J1bnRpbWUvY29tcGF0IGdldCBkZWZhdWx0IGV4cG9ydCIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvd2VicGFjay9ydW50aW1lL2RlZmluZSBwcm9wZXJ0eSBnZXR0ZXJzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC93ZWJwYWNrL3J1bnRpbWUvaGFzT3duUHJvcGVydHkgc2hvcnRoYW5kIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC93ZWJwYWNrL3J1bnRpbWUvbWFrZSBuYW1lc3BhY2Ugb2JqZWN0Iiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uIHdlYnBhY2tVbml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uKHJvb3QsIGZhY3RvcnkpIHtcblx0aWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnKVxuXHRcdG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeSgpO1xuXHRlbHNlIGlmKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZClcblx0XHRkZWZpbmUoXCJteS1vcmRlcnMtdGlja2V0cy13aWRnZXRcIiwgW10sIGZhY3RvcnkpO1xuXHRlbHNlIGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0Jylcblx0XHRleHBvcnRzW1wibXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0XCJdID0gZmFjdG9yeSgpO1xuXHRlbHNlXG5cdFx0cm9vdFtcIm15LW9yZGVycy10aWNrZXRzLXdpZGdldFwiXSA9IGZhY3RvcnkoKTtcbn0pKHRoaXMsICgpID0+IHtcbnJldHVybiAiLCJpbXBvcnQge1xuICBhdXRoRXJyb3JIYW5kbGVyLFxuICBnZXRSZXF1ZXN0LFxuICBkZWxldGVSZXF1ZXN0LFxuICBjcmVhdGVBY3Rpb24sXG4gIHN0b3BMb2FkaW5nLFxuICBzdGFydExvYWRpbmcsXG4gIHB1dFJlcXVlc3Rcbn0gZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvYWN0aW9uc1wiO1xuaW1wb3J0IHBMaW1pdCBmcm9tIFwicC1saW1pdFwiO1xuaW1wb3J0IHsgZ2V0SWRUb2tlbiB9IGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3NlY3VyaXR5L21ldGhvZHNcIjtcbmltcG9ydCB7IG9iamVjdFRvUXVlcnlTdHJpbmcgfSBmcm9tIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9tZXRob2RzXCI7XG5pbXBvcnQgSWRUb2tlblZlcmlmaWVyIGZyb20gXCJpZHRva2VuLXZlcmlmaWVyXCI7XG5pbXBvcnQgaTE4biBmcm9tIFwiaTE4bmV4dFwiO1xuaW1wb3J0IHsgZ2V0QWNjZXNzVG9rZW5TYWZlbHkgfSBmcm9tIFwiLi91dGlscy9hdXRoXCI7XG5pbXBvcnQge1xuICBGSVJTVF9QQUdFLFxuICBERUZBVUxUX0lURU1TX1BFUl9QQUdFLFxuICBQUk9NSVNFX0JBVENIX0xJTUlULFxuICBGSUZUWV9QRVJfUEFHRSxcbiAgRVJST1JfQ09ERVNcbn0gZnJvbSBcIi4vdXRpbHMvY29uc3RhbnRzXCI7XG5cbmV4cG9ydCBjb25zdCBSRVNFVF9TVEFURSA9IFwiUkVTRVRfU1RBVEVcIjtcbmV4cG9ydCBjb25zdCBSRVNFVF9GSUxURVIgPSBcIlJFU0VUX0ZJTFRFUlwiO1xuZXhwb3J0IGNvbnN0IFJFU0VUX0FQSV9FUlJPUiA9IFwiUkVTRVRfQVBJX0VSUk9SXCI7XG5leHBvcnQgY29uc3QgU0VUX1NUQVRFID0gXCJTRVRfU1RBVEVcIjtcbmV4cG9ydCBjb25zdCBTRVRfQVBJX0VSUk9SID0gXCJTRVRfQVBJX0VSUk9SXCI7XG5cbi8vIE9SREVSUyBDT05TVFNcbmV4cG9ydCBjb25zdCBHRVRfVVNFUl9PUkRFUlMgPSBcIkdFVF9PUkRFUlNcIjtcbmV4cG9ydCBjb25zdCBSRUZVTkRfT1JERVIgPSBcIlJFRlVORF9PUkRFUlwiO1xuZXhwb3J0IGNvbnN0IFNFVF9BQ1RJVkVfT1JERVJfSUQgPSBcIlNFVF9BQ1RJVkVfT1JERVJfSURcIjtcbmV4cG9ydCBjb25zdCBGSUxURVJfVVNFUl9PUkRFUlMgPSBcIkZJTFRFUl9VU0VSX09SREVSU1wiO1xuXG4vLyBUSUNLRVRTIENPTlNUU1xuZXhwb3J0IGNvbnN0IEdFVF9USUNLRVRTID0gXCJHRVRfVElDS0VUU1wiO1xuZXhwb3J0IGNvbnN0IFVQREFURV9USUNLRVQgPSBcIlVQREFURV9USUNLRVRcIjtcbmV4cG9ydCBjb25zdCBSRVNFVF9USUNLRVQgPSBcIlJFU0VUX1RJQ0tFVFwiO1xuZXhwb3J0IGNvbnN0IFJFQ0VJVkVfVElDS0VUID0gXCJSRUNFSVZFX1RJQ0tFVFwiO1xuZXhwb3J0IGNvbnN0IFJFTU9WRV9USUNLRVRfQVRURU5ERUUgPSBcIlJFTU9WRV9USUNLRVRfQVRURU5ERUVcIjtcbmV4cG9ydCBjb25zdCBBU1NJR05fVElDS0VUID0gXCJBU1NJR05fVElDS0VUXCI7XG5leHBvcnQgY29uc3QgUkVGVU5EX1RJQ0tFVCA9IFwiUkVGVU5EX1RJQ0tFVFwiO1xuZXhwb3J0IGNvbnN0IFJFU0VORF9OT1RJRklDQVRJT04gPSBcIlJFU0VORF9OT1RJRklDQVRJT05cIjtcbmV4cG9ydCBjb25zdCBHRVRfVElDS0VUU19CWV9PUkRFUiA9IFwiR0VUX1RJQ0tFVFNfQllfT1JERVJcIjtcbmV4cG9ydCBjb25zdCBHRVRfVElDS0VUU19CWV9PUkRFUl9FUlJPUiA9IFwiR0VUX1RJQ0tFVFNfQllfT1JERVJfRVJST1JcIjtcbmV4cG9ydCBjb25zdCBHRVRfT1JERVJfVElDS0VUX0RFVEFJTFMgPSBcIkdFVF9PUkRFUl9USUNLRVRfREVUQUlMU1wiO1xuZXhwb3J0IGNvbnN0IEdFVF9USUNLRVRfREVUQUlMUyA9IFwiR0VUX1RJQ0tFVF9ERVRBSUxTXCI7XG5leHBvcnQgY29uc3QgUkVDRUlWRV9FWFRSQV9RVUVTVElPTlMgPSBcIlJFQ0VJVkVfRVhUUkFfUVVFU1RJT05TXCI7XG5leHBvcnQgY29uc3QgVElDS0VUX0FUVEVOREVFX0tFWVMgPSB7XG4gIGVtYWlsOiBcImF0dGVuZGVlX2VtYWlsXCIsXG4gIGZpcnN0TmFtZTogXCJhdHRlbmRlZV9maXJzdF9uYW1lXCIsXG4gIGxhc3ROYW1lOiBcImF0dGVuZGVlX2xhc3RfbmFtZVwiLFxuICBjb21wYW55OiBcImF0dGVuZGVlX2NvbXBhbnlcIixcbiAgZGlzY2xhaW1lckFjY2VwdGVkOiBcImRpc2NsYWltZXJfYWNjZXB0ZWRcIixcbiAgZXh0cmFRdWVzdGlvbnM6IFwiZXh0cmFfcXVlc3Rpb25zXCJcbn07XG5leHBvcnQgY29uc3QgVVBEQVRFX1RJQ0tFVFNfUkVGVU5EX1JFUVVFU1RFRCA9XG4gIFwiVVBEQVRFX1RJQ0tFVFNfUkVGVU5EX1JFUVVFU1RFRFwiO1xuXG4vLyBVU0VSIENPTlRTXG5leHBvcnQgY29uc3QgU1RBUlRfTE9BRElOR19JRFBfUFJPRklMRSA9IFwiU1RBUlRfTE9BRElOR19JRFBfUFJPRklMRVwiO1xuZXhwb3J0IGNvbnN0IFNUT1BfTE9BRElOR19JRFBfUFJPRklMRSA9IFwiU1RPUF9MT0FESU5HX0lEUF9QUk9GSUxFXCI7XG5leHBvcnQgY29uc3QgVVBEQVRFX0lEUF9QUk9GSUxFID0gXCJVUERBVEVfSURQX1BST0ZJTEVcIjtcbmV4cG9ydCBjb25zdCBTRVRfVVNFUiA9IFwiU0VUX1VTRVJcIjtcblxuLy8gU1VNTUlUIENPTlNUU1xuZXhwb3J0IGNvbnN0IFNFVF9TVU1NSVQgPSBcIlNFVF9TVU1NSVRcIjtcbmV4cG9ydCBjb25zdCBHRVRfTUFJTl9FWFRSQV9RVUVTVElPTlMgPSBcIkdFVF9NQUlOX0VYVFJBX1FVRVNUSU9OU1wiO1xuZXhwb3J0IGNvbnN0IFJFQ0VJVkVfTUFSS0VUSU5HX1NFVFRJTkdTID0gXCJSRUNFSVZFX01BUktFVElOR19TRVRUSU5HU1wiO1xuZXhwb3J0IGNvbnN0IENMRUFSX01BUktFVElOR19TRVRUSU5HUyA9IFwiQ0xFQVJfTUFSS0VUSU5HX1NFVFRJTkdTXCI7XG5cbmV4cG9ydCBjb25zdCByZXNldFN0YXRlID0gKCkgPT4gKGRpc3BhdGNoKSA9PiB7XG4gIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihSRVNFVF9TVEFURSkoe30pKTtcbn07XG5cbmV4cG9ydCBjb25zdCByZXNldEZpbHRlciA9ICgpID0+IChkaXNwYXRjaCkgPT4ge1xuICBkaXNwYXRjaChjcmVhdGVBY3Rpb24oUkVTRVRfRklMVEVSKSh7fSkpO1xufTtcblxuZXhwb3J0IGNvbnN0IHJlc2V0RXJyb3IgPSAoKSA9PiAoZGlzcGF0Y2gpID0+IHtcbiAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKFJFU0VUX0FQSV9FUlJPUikoe30pKTtcbn07XG5cbmV4cG9ydCBjb25zdCByZXNldFRpY2tldCA9ICgpID0+IChkaXNwYXRjaCkgPT4ge1xuICBkaXNwYXRjaChjcmVhdGVBY3Rpb24oUkVTRVRfVElDS0VUKSh7fSkpO1xufTtcblxuZXhwb3J0IGNvbnN0IHNldFJlZHVjZXJTdGF0ZSA9IChzdW1taXQsIHVzZXIpID0+IChkaXNwYXRjaCkgPT4ge1xuICBkaXNwYXRjaChjcmVhdGVBY3Rpb24oU0VUX1NUQVRFKSh7IHN1bW1pdCwgdXNlciB9KSk7XG59O1xuXG4vLyBGSUxURVIgLyBTT1JUIENPTlNUQU5UU1xuZXhwb3J0IGNvbnN0IEZJTFRFUl9WQVJfREFURSA9IFwiRklMVEVSX1ZBUl9EQVRFXCI7XG5leHBvcnQgY29uc3QgRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVIgPSBcIkZJTFRFUl9WQVJfT1JERVJfTlVNQkVSXCI7XG5cbi8vIEZJTFRFUi9TT1JUIEFDVElPTlNcbmV4cG9ydCBjb25zdCBwYXJzZUZpbHRlciA9IChmaWx0ZXJPYmopID0+IHtcbiAgY29uc3QgZmlsdGVyID0gW107XG4gIGlmIChmaWx0ZXJPYmoudHlwZSA9PT0gRklMVEVSX1ZBUl9EQVRFKSB7XG4gICAgZmlsdGVyLnB1c2goYCR7ZmlsdGVyT2JqLm5hbWV9W10ke2ZpbHRlck9iai5sb3dlcn0mJiR7ZmlsdGVyT2JqLnVwcGVyfWApO1xuICB9XG4gIGlmIChmaWx0ZXJPYmoudHlwZSA9PT0gRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVIpIHtcbiAgICBmaWx0ZXIucHVzaChgJHtmaWx0ZXJPYmoubmFtZX09QCR7ZmlsdGVyT2JqLnZhbHVlfWApO1xuICB9XG4gIHJldHVybiBmaWx0ZXI7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0U29ydERpcmVjdGlvbiA9IChkaXJlY3Rpb24pID0+XG4gIGRpcmVjdGlvbiA9PT0gXCJhc2NcIiA/IFwiK1wiIDogXCItXCI7XG5cbi8vIHBheWxvYWQ6IHsgaHR0cENvZGUsIHRpdGxlLCBodG1sOiBjb250ZW50LCB0eXBlIH1cbmV4cG9ydCBjb25zdCBlcnJvckhhbmRsZXJOb3RpZnkgPSAocGF5bG9hZCwgY2FsbGJhY2spID0+IChkaXNwYXRjaCkgPT4ge1xuICBkaXNwYXRjaChjcmVhdGVBY3Rpb24oU0VUX0FQSV9FUlJPUikocGF5bG9hZCkpO1xuICBpZiAoY2FsbGJhY2spIGNhbGxiYWNrKCk7XG59O1xuXG5leHBvcnQgY29uc3QgY3VzdG9tQXV0aEVycm9ySGFuZGxlciA9IChlcnIsIHJlcykgPT4gKGRpc3BhdGNoKSA9PiB7XG4gIGRpc3BhdGNoKGF1dGhFcnJvckhhbmRsZXIoZXJyLCByZXMsIGVycm9ySGFuZGxlck5vdGlmeSkpO1xufTtcblxuY29uc3QgY3VzdG9tRmV0Y2hFcnJvckhhbmRsZXIgPSAocmVzcG9uc2UpID0+IChkaXNwYXRjaCkgPT4ge1xuICBjb25zdCBjb2RlID0gcmVzcG9uc2Uuc3RhdHVzO1xuICBsZXQgbXNnO1xuICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgc3dpdGNoIChjb2RlKSB7XG4gICAgY2FzZSBFUlJPUl9DT0RFU1tcIjQwM1wiXTpcbiAgICAgIG1zZyA9IGkxOG4udChcImVycm9ycy51c2VyX25vdF9hdXRoelwiKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgRVJST1JfQ09ERVNbXCI0MDFcIl06XG4gICAgICBtc2cgPSBpMThuLnQoXCJlcnJvcnMuc2Vzc2lvbl9leHBpcmVkXCIpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBFUlJPUl9DT0RFU1tcIjQxMlwiXTpcbiAgICAgIG1zZyA9IFwiXCI7XG4gICAgICBPYmplY3QuZW50cmllcyhyZXNwb25zZS5lcnJvcnMpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgICBpZiAoTnVtYmVyLmlzTmFOKGtleSkpIHtcbiAgICAgICAgICBtc2cgPSBgJHttc2d9ICR7a2V5fTogYDtcbiAgICAgICAgfVxuXG4gICAgICAgIG1zZyA9IGAke21zZ30gJHt2YWx1ZX0gPGJyPmA7XG4gICAgICB9KTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgRVJST1JfQ09ERVNbXCI1MDBcIl06XG4gICAgICBtc2cgPSBpMThuLnQoXCJlcnJvcnMuc2VydmVyX2Vycm9yXCIpO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIG1zZyA9IHJlc3BvbnNlLnN0YXR1c1RleHQ7XG4gIH1cblxuICBkaXNwYXRjaChlcnJvckhhbmRsZXJOb3RpZnkoeyB0aXRsZTogaTE4bi50KFwiZXJyb3JzLmVycm9yXCIpLCBodG1sOiBtc2cgfSkpO1xufTtcblxuLy8gT1JERVJTIEFDVElPTlNcbmV4cG9ydCBjb25zdCBnZXRVc2VyT3JkZXJzID1cbiAgKHtcbiAgICBwYWdlID0gRklSU1RfUEFHRSxcbiAgICBwZXJQYWdlID0gREVGQVVMVF9JVEVNU19QRVJfUEFHRSxcbiAgICBmaWx0ZXIgPSB7fSxcbiAgICBzb3J0ID0ge31cbiAgfSkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCB7XG4gICAgICB3aWRnZXRTdGF0ZTogeyBzdW1taXQgfVxuICAgIH0gPSBnZXRTdGF0ZSgpO1xuXG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpLmNhdGNoKCgpID0+XG4gICAgICBQcm9taXNlLnJlamVjdCgpXG4gICAgKTtcblxuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgb3JkZXI6IFwiLWlkXCIsXG4gICAgICBcImZpbHRlcltdXCI6IFtcInN0YXR1cz09UGFpZFwiXSxcbiAgICAgIHJlbGF0aW9uczogXCJub25lXCIsXG4gICAgICBwYWdlLFxuICAgICAgcGVyX3BhZ2U6IHBlclBhZ2VcbiAgICB9O1xuXG4gICAgaWYgKE9iamVjdC5rZXlzKGZpbHRlcikubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgZmlsdGVycyA9IHBhcnNlRmlsdGVyKGZpbHRlcik7XG4gICAgICBwYXJhbXNbXCJmaWx0ZXJbXVwiXSA9IFsuLi5wYXJhbXNbXCJmaWx0ZXJbXVwiXSwgLi4uZmlsdGVyc107XG4gICAgfVxuICAgIGlmIChPYmplY3Qua2V5cyhzb3J0KS5sZW5ndGggPiAwKSB7XG4gICAgICBwYXJhbXMub3JkZXIgPSBgJHtnZXRTb3J0RGlyZWN0aW9uKHNvcnQuZGlyZWN0aW9uKX0ke3NvcnQubmFtZX1gO1xuICAgIH1cblxuICAgIHJldHVybiBnZXRSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihHRVRfVVNFUl9PUkRFUlMpLFxuICAgICAgYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvJHtzdW1taXQuaWR9L29yZGVycy9tZWAsXG4gICAgICBjdXN0b21BdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKVxuICAgICAgLnRoZW4oKHBheWxvYWQpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgcmV0dXJuIGU7XG4gICAgICB9KTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IHNldEFjdGl2ZU9yZGVySWQgPSAob3JkZXJJZCkgPT4gYXN5bmMgKGRpc3BhdGNoKSA9PlxuICBkaXNwYXRjaChjcmVhdGVBY3Rpb24oU0VUX0FDVElWRV9PUkRFUl9JRCkob3JkZXJJZCkpO1xuXG4vLyBVU0VSIEFDVElPTlNcbmV4cG9ydCBjb25zdCBzZXRVc2VyID0gKHVzZXIpID0+IChkaXNwYXRjaCkgPT5cbiAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKFNFVF9VU0VSKSh1c2VyKSk7XG5cbi8vIFRJQ0tFVCBBQ1RJT05TXG5cbmV4cG9ydCBjb25zdCBnZXRVc2VyVGlja2V0cyA9XG4gICh7IHBhZ2UgPSBGSVJTVF9QQUdFLCBwZXJQYWdlID0gREVGQVVMVF9JVEVNU19QRVJfUEFHRSB9KSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIHVzZXJTdGF0ZTogeyB1c2VyUHJvZmlsZSB9LFxuICAgICAgc3VtbWl0XG4gICAgfSA9IGdldFN0YXRlKCk7XG4gICAgaWYgKCFzdW1taXQpIHJldHVybiBQcm9taXNlLnJlamVjdCgpO1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKS5jYXRjaCgoKSA9PlxuICAgICAgUHJvbWlzZS5yZWplY3QoKVxuICAgICk7XG5cbiAgICBpZiAoIXVzZXJQcm9maWxlLmlkKSByZXR1cm4gUHJvbWlzZS5yZWplY3QoKTtcbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIGZpbHRlcjogXCJzdGF0dXM9PVBhaWRcIixcbiAgICAgIGV4cGFuZDogXCJvcmRlciwgb3duZXIsIHRpY2tldF90eXBlXCIsXG4gICAgICBvcmRlcjogXCItaWRcIixcbiAgICAgIGZpZWxkczpcbiAgICAgICAgXCJvcmRlci5pZCxvcmRlci5vd25lcl9maXJzdF9uYW1lLG9yZGVyLm93bmVyX2xhc3RfbmFtZSxvcmRlci5vd25lcl9lbWFpbCxvd25lci5maXJzdF9uYW1lLG93bmVyLmxhc3RfbmFtZSxvd25lci5zdGF0dXNcIixcbiAgICAgIHJlbGF0aW9uczogXCJub25lXCIsXG4gICAgICBwYWdlLFxuICAgICAgcGVyX3BhZ2U6IHBlclBhZ2VcbiAgICB9O1xuICAgIHJldHVybiBnZXRSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihHRVRfVElDS0VUUyksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy8ke3N1bW1pdC5pZH0vb3JkZXJzL2FsbC90aWNrZXRzL21lYCxcbiAgICAgIGN1c3RvbUF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpXG4gICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgcmV0dXJuIGU7XG4gICAgICB9KTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IGdldFRpY2tldHNCeU9yZGVyID1cbiAgKHsgb3JkZXJJZCwgcGFnZSA9IEZJUlNUX1BBR0UsIHBlclBhZ2UgPSBERUZBVUxUX0lURU1TX1BFUl9QQUdFIH0pID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKS5jYXRjaCgoKSA9PlxuICAgICAgUHJvbWlzZS5yZWplY3QoKVxuICAgICk7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgZXhwYW5kOlxuICAgICAgICBcInJlZnVuZF9yZXF1ZXN0cyxvd25lcixvd25lci5leHRyYV9xdWVzdGlvbnMsYmFkZ2UsYmFkZ2UuZmVhdHVyZXMsdGlja2V0X3R5cGVcIixcbiAgICAgIG9yZGVyOiBcIitpZFwiLFxuICAgICAgcGFnZSxcbiAgICAgIHBlcl9wYWdlOiBwZXJQYWdlXG4gICAgfTtcbiAgICByZXR1cm4gZ2V0UmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oR0VUX1RJQ0tFVFNfQllfT1JERVIpLFxuICAgICAgYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvYWxsL29yZGVycy8ke29yZGVySWR9L3RpY2tldHNgLFxuICAgICAgY3VzdG9tQXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaClcbiAgICAgIC50aGVuKChwYXlsb2FkKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihHRVRfVElDS0VUU19CWV9PUkRFUl9FUlJPUikpO1xuICAgICAgICByZXR1cm4gZTtcbiAgICAgIH0pO1xuICB9O1xuXG5leHBvcnQgY29uc3QgcmVzZW5kTm90aWZpY2F0aW9uID1cbiAgKHRpY2tldCkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCkuY2F0Y2goKCkgPT5cbiAgICAgIFByb21pc2UucmVqZWN0KClcbiAgICApO1xuXG4gICAgY29uc3QgeyBtZXNzYWdlIH0gPSB0aWNrZXQ7XG5cbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG5cbiAgICBjb25zdCBvcmRlcklkID0gdGlja2V0Lm9yZGVyID8gdGlja2V0Lm9yZGVyLmlkIDogdGlja2V0Lm9yZGVyX2lkO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlblxuICAgIH07XG5cbiAgICByZXR1cm4gcHV0UmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oUkVTRU5EX05PVElGSUNBVElPTiksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy9hbGwvb3JkZXJzLyR7b3JkZXJJZH0vdGlja2V0cy8ke3RpY2tldC5pZH0vYXR0ZW5kZWUvcmVpbnZpdGVgLFxuICAgICAgeyBtZXNzYWdlIH0sXG4gICAgICBjdXN0b21BdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKVxuICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIHJldHVybiBlO1xuICAgICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCByZWZ1bmRUaWNrZXQgPVxuICAoeyB0aWNrZXQgfSkgPT5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpLmNhdGNoKCgpID0+XG4gICAgICBQcm9taXNlLnJlamVjdCgpXG4gICAgKTtcblxuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcblxuICAgIGNvbnN0IG9yZGVySWQgPSB0aWNrZXQub3JkZXIgPyB0aWNrZXQub3JkZXIuaWQgOiB0aWNrZXQub3JkZXJfaWQ7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgZXhwYW5kOiBcInJlZnVuZF9yZXF1ZXN0cyx0aWNrZXRfdHlwZVwiLFxuICAgICAgZmllbGRzOiBcInJlZnVuZF9yZXF1ZXN0cy5zdGF0dXNcIlxuICAgIH07XG5cbiAgICByZXR1cm4gZGVsZXRlUmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oUkVGVU5EX1RJQ0tFVCksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy9hbGwvb3JkZXJzLyR7b3JkZXJJZH0vdGlja2V0cy8ke3RpY2tldC5pZH0vcmVmdW5kYCxcbiAgICAgIHt9LFxuICAgICAgY3VzdG9tQXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaClcbiAgICAgIC50aGVuKChwYXlsb2FkKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIHJldHVybiBlO1xuICAgICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCByZWZ1bmRCdWxrVGlja2V0cyA9XG4gICh7IHRpY2tldHMgfSkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoKSA9PiB7XG4gICAgY29uc3QgbGltaXQgPSBwTGltaXQoUFJPTUlTRV9CQVRDSF9MSU1JVCk7XG4gICAgY29uc3QgYWxsUmVmdW5kVGlja2V0Q2FsbHMgPSB0aWNrZXRzLm1hcCgodGlja2V0KSA9PlxuICAgICAgbGltaXQoKCkgPT4gZGlzcGF0Y2gocmVmdW5kVGlja2V0KHsgdGlja2V0IH0pKSlcbiAgICApO1xuICAgIHJldHVybiBQcm9taXNlLmFsbChbLi4uYWxsUmVmdW5kVGlja2V0Q2FsbHNdKVxuICAgICAgLnRoZW4oKHJlcykgPT4ge1xuICAgICAgICBjb25zdCBzdWNjZXNzZnVsbHlSZXF1ZXN0ZWQgPSByZXNcbiAgICAgICAgICAuZmlsdGVyKChyKSA9PiByLnJlc3BvbnNlPy5yZWZ1bmRfcmVxdWVzdHM/Lmxlbmd0aClcbiAgICAgICAgICAubWFwKChyKSA9PiByLnJlc3BvbnNlKTtcbiAgICAgICAgcmV0dXJuIHN1Y2Nlc3NmdWxseVJlcXVlc3RlZDtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGUpID0+IGUpO1xuICB9O1xuXG4vLyB1cGRhdGUgdGhlIHRpY2tldHMgdGhhdCBoYXZlIGJlZW4gc3VjZXNzZnVsbHkgcmVmdW5kZWRcbmV4cG9ydCBjb25zdCB1cGRhdGVUaWNrZXRzUmVmdW5kUmVxdWVzdGVkID1cbiAgKHRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWQpID0+IChkaXNwYXRjaCkgPT5cbiAgICBkaXNwYXRjaChcbiAgICAgIGNyZWF0ZUFjdGlvbihVUERBVEVfVElDS0VUU19SRUZVTkRfUkVRVUVTVEVEKSh0aWNrZXRzUmVmdW5kUmVxdWVzdGVkKVxuICAgICk7XG5cbi8vIFNVTU1JVCBBQ1RJT05TXG5cbmV4cG9ydCBjb25zdCBnZXRFeHRyYVF1ZXN0aW9ucyA9XG4gIChhdHRlbmRlZUlkKSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIHdpZGdldFN0YXRlOiB7IHN1bW1pdCB9XG4gICAgfSA9IGdldFN0YXRlKCk7XG5cbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCkuY2F0Y2goKCkgPT5cbiAgICAgIFByb21pc2UucmVqZWN0KClcbiAgICApO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgcGFnZTogMSxcbiAgICAgIHBlcl9wYWdlOiBGSUZUWV9QRVJfUEFHRSxcbiAgICAgIGV4cGFuZDogXCIqc3ViX3F1ZXN0aW9uX3J1bGVzLCpzdWJfcXVlc3Rpb24sKnZhbHVlc1wiLFxuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIFwiZmlsdGVyW11cIjogXCJ0aWNrZXRzX2V4Y2x1ZGVfaW5hY3RpdmVzPT10cnVlXCJcbiAgICB9O1xuXG4gICAgY29uc3QgZW5kcG9pbnQgPSBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy8ke3N1bW1pdC5pZH0vYXR0ZW5kZWVzLyR7YXR0ZW5kZWVJZH0vYWxsb3dlZC1leHRyYS1xdWVzdGlvbnNgO1xuXG4gICAgcmV0dXJuIGdldFJlcXVlc3QoXG4gICAgICBudWxsLFxuICAgICAgY3JlYXRlQWN0aW9uKFJFQ0VJVkVfRVhUUkFfUVVFU1RJT05TKSxcbiAgICAgIGVuZHBvaW50LFxuICAgICAgY3VzdG9tQXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaCkudGhlbigoKSA9PiB7XG4gICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICB9KTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IGdldFRpY2tldCA9XG4gICh0aWNrZXRJZCwgb3JkZXJJZCkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCkuY2F0Y2goKCkgPT5cbiAgICAgIFByb21pc2UucmVqZWN0KClcbiAgICApO1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIGV4cGFuZDpcbiAgICAgICAgXCJvd25lcixvd25lci5leHRyYV9xdWVzdGlvbnMsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLHRpY2tldF90eXBlLG9yZGVyXCIsXG4gICAgICByZWxhdGlvbnM6IFwib3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLm5vbmVcIixcbiAgICAgIGZpZWxkczpcbiAgICAgICAgXCJvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24uaWQsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLm5hbWUsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLnR5cGVcIlxuICAgIH07XG5cbiAgICBjb25zdCBlbmRwb2ludCA9IGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzL2FsbC9vcmRlcnMvJHtvcmRlcklkfS90aWNrZXRzLyR7dGlja2V0SWR9YDtcblxuICAgIHJldHVybiBnZXRSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihSRUNFSVZFX1RJQ0tFVCksXG4gICAgICBlbmRwb2ludCxcbiAgICAgIGN1c3RvbUF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgfSk7XG4gIH07XG5cbmNvbnN0IG5vcm1hbGl6ZVRpY2tldCA9IChlbnRpdHkpID0+IHtcbiAgY29uc3Qgbm9ybWFsaXplZEVudGl0eSA9IHsgLi4uZW50aXR5IH07XG5cbiAgaWYgKCFlbnRpdHkuYXR0ZW5kZWVfY29tcGFueS5pZCkge1xuICAgIG5vcm1hbGl6ZWRFbnRpdHkuYXR0ZW5kZWVfY29tcGFueSA9IGVudGl0eS5hdHRlbmRlZV9jb21wYW55O1xuICB9IGVsc2Uge1xuICAgIGRlbGV0ZSBub3JtYWxpemVkRW50aXR5LmF0dGVuZGVlX2NvbXBhbnk7XG4gICAgbm9ybWFsaXplZEVudGl0eS5hdHRlbmRlZV9jb21wYW55X2lkID0gZW50aXR5LmF0dGVuZGVlX2NvbXBhbnkuaWQ7XG4gIH1cblxuICByZXR1cm4gbm9ybWFsaXplZEVudGl0eTtcbn07XG5cbmV4cG9ydCBjb25zdCByZWZyZXNoUHJvZmlsZSA9XG4gIChkYXRhLCBjb21wYW55LCB0aWNrZXRPd25lcikgPT5cbiAgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyB1cGRhdGVQcm9maWxlIH0pID0+IHtcbiAgICBjb25zdCB7XG4gICAgICB3aWRnZXRTdGF0ZTogeyB1c2VyIH1cbiAgICB9ID0gZ2V0U3RhdGUoKTtcbiAgICBjb25zdCB7IHVzZXJQcm9maWxlIH0gPSB1c2VyO1xuXG4gICAgLy8gZW1haWwgc2hvdWxkIG1hdGNoICggb25seSB1cGRhdGUgbXkgcHJvZmlsZSBpcyB0aWNrZXQgYmVsb25ncyB0byBtZSEpXG4gICAgLy8gYW5kIGlmIHRoZSB0aWNrZXQgZG9lc24ndCBoYXZlIGEgbWFuYWdlclxuICAgIC8vIENoZWNrIGlmIHRoZXJlJ3MgY2hhbmdlcyBpbiB0aGUgdGlja2V0IGRhdGEgdG8gdXBkYXRlIHRoZSBwcm9maWxlXG4gICAgY29uc3Qge1xuICAgICAgYXR0ZW5kZWVfZW1haWwsXG4gICAgICBhdHRlbmRlZV9maXJzdF9uYW1lLFxuICAgICAgYXR0ZW5kZWVfbGFzdF9uYW1lLFxuICAgICAgYXR0ZW5kZWVfY29tcGFueVxuICAgIH0gPSBkYXRhO1xuICAgIGNvbnN0IGhhc01hbmFnZXIgPSB0aWNrZXRPd25lcj8ubWFuYWdlcj8uaWQgfHwgdGlja2V0T3duZXI/Lm1hbmFnZXJfaWQ7XG4gICAgY29uc3QgaXRzTWUgPSB1c2VyUHJvZmlsZS5lbWFpbCA9PT0gYXR0ZW5kZWVfZW1haWw7XG4gICAgY29uc3QgcHJvZmlsZUNoYW5nZWQgPVxuICAgICAgYXR0ZW5kZWVfY29tcGFueS5uYW1lICE9PSBjb21wYW55IHx8XG4gICAgICBhdHRlbmRlZV9maXJzdF9uYW1lICE9PSB1c2VyUHJvZmlsZS5maXJzdF9uYW1lIHx8XG4gICAgICBhdHRlbmRlZV9sYXN0X25hbWUgIT09IHVzZXJQcm9maWxlLmxhc3RfbmFtZTtcblxuICAgIGlmIChpdHNNZSAmJiAhaGFzTWFuYWdlciAmJiBwcm9maWxlQ2hhbmdlZCkge1xuICAgICAgY29uc3QgbmV3UHJvZmlsZSA9IHtcbiAgICAgICAgZmlyc3RfbmFtZTogYXR0ZW5kZWVfZmlyc3RfbmFtZSxcbiAgICAgICAgbGFzdF9uYW1lOiBhdHRlbmRlZV9sYXN0X25hbWUsXG4gICAgICAgIGNvbXBhbnk6IGF0dGVuZGVlX2NvbXBhbnkubmFtZSB8fCBhdHRlbmRlZV9jb21wYW55XG4gICAgICB9O1xuXG4gICAgICAvLyB0aGlzIGlzIGEgY2FsbGJhY2sgbWV0aG9kIHRoYXQgdXBkYXRlcyB1c2VyUHJvZmlsZSBpbiBBUEkgYW5kIGV2ZW50LXNpdGVcbiAgICAgIHVwZGF0ZVByb2ZpbGUobmV3UHJvZmlsZSk7XG4gICAgfVxuICB9O1xuXG5leHBvcnQgY29uc3Qgc2F2ZVRpY2tldERldGFpbHMgPVxuICAodGlja2V0LCBhbnN3ZXJzKSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKS5jYXRjaChQcm9taXNlLnJlamVjdCk7XG5cbiAgICBpZiAoIWFjY2Vzc1Rva2VuKSByZXR1cm4gUHJvbWlzZS5yZWplY3QoKTtcblxuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgICBleHBhbmQ6XG4gICAgICAgIFwicmVmdW5kX3JlcXVlc3RzLG93bmVyLG93bmVyLmV4dHJhX3F1ZXN0aW9ucyxiYWRnZSxiYWRnZS5mZWF0dXJlcyx0aWNrZXRfdHlwZVwiXG4gICAgfTtcblxuICAgIGNvbnN0IGlkVG9rZW4gPSBnZXRJZFRva2VuKCk7XG4gICAgbGV0IGNvbXBhbnkgPSBcIlwiO1xuICAgIGlmIChpZFRva2VuKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCB2ZXJpZmllciA9IG5ldyBJZFRva2VuVmVyaWZpZXIoKTtcbiAgICAgICAgY29uc3Qgand0ID0gdmVyaWZpZXIuZGVjb2RlKGlkVG9rZW4pO1xuICAgICAgICBjb21wYW55ID0gand0LnBheWxvYWQuY29tcGFueTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgY29uc29sZS5sb2coXCJlcnJvclwiLCBlKTtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3Qgbm9ybWFsaXplZEVudGl0eSA9IG5vcm1hbGl6ZVRpY2tldChhbnN3ZXJzKTtcblxuICAgIHJldHVybiBwdXRSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihVUERBVEVfVElDS0VUKSxcbiAgICAgIGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzL2FsbC9vcmRlcnMvYWxsL3RpY2tldHMvJHt0aWNrZXQuaWR9YCxcbiAgICAgIG5vcm1hbGl6ZWRFbnRpdHksXG4gICAgICBjdXN0b21BdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKVxuICAgICAgLnRoZW4oYXN5bmMgKCkgPT4ge1xuICAgICAgICBkaXNwYXRjaChyZWZyZXNoUHJvZmlsZShhbnN3ZXJzLCBjb21wYW55LCB0aWNrZXQub3duZXIpKTtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICByZXR1cm4gZTtcbiAgICAgIH0pO1xuICB9O1xuXG5leHBvcnQgY29uc3QgYXNzaWduQXR0ZW5kZWUgPVxuICAob3JkZXJJZCwgdGlja2V0SWQsIGF0dGVuZGVlX2VtYWlsLCBtZXNzYWdlID0gbnVsbCkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCkuY2F0Y2goUHJvbWlzZS5yZWplY3QpO1xuXG4gICAgY29uc3QgcGF5bG9hZCA9IHsgYXR0ZW5kZWVfZW1haWwgfTtcbiAgICBpZiAobWVzc2FnZSkgcGF5bG9hZC5tZXNzYWdlID0gbWVzc2FnZTtcblxuICAgIGlmICghYWNjZXNzVG9rZW4pIHJldHVybiBQcm9taXNlLnJlamVjdCgpO1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIGV4cGFuZDpcbiAgICAgICAgXCJvd25lcixvd25lci5leHRyYV9xdWVzdGlvbnMsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLHRpY2tldF90eXBlLG9yZGVyXCIsXG4gICAgICByZWxhdGlvbnM6IFwib3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLm5vbmVcIixcbiAgICAgIGZpZWxkczpcbiAgICAgICAgXCJvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24uaWQsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLm5hbWUsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLnR5cGVcIlxuICAgIH07XG5cbiAgICByZXR1cm4gcHV0UmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oQVNTSUdOX1RJQ0tFVCksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy9hbGwvb3JkZXJzLyR7b3JkZXJJZH0vdGlja2V0cy8ke3RpY2tldElkfS9hdHRlbmRlZWAsXG4gICAgICBwYXlsb2FkLFxuICAgICAgY3VzdG9tQXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaCkuZmluYWxseSgoKSA9PiB7XG4gICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICB9KTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IHJlYXNzaWduVGlja2V0ID1cbiAgKG9yZGVySWQsIHRpY2tldElkLCBlbWFpbCwgbWVzc2FnZSkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCkuY2F0Y2goUHJvbWlzZS5yZWplY3QpO1xuXG4gICAgaWYgKCFhY2Nlc3NUb2tlbikgcmV0dXJuIFByb21pc2UucmVqZWN0KCk7XG5cbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgZXhwYW5kOiBcIm9yZGVyLCBvd25lciwgb3duZXIuZXh0cmFfcXVlc3Rpb25zLCBvcmRlci5zdW1taXRcIlxuICAgIH07XG5cbiAgICByZXR1cm4gZGVsZXRlUmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oUkVNT1ZFX1RJQ0tFVF9BVFRFTkRFRSksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy9hbGwvb3JkZXJzLyR7b3JkZXJJZH0vdGlja2V0cy8ke3RpY2tldElkfS9hdHRlbmRlZWAsXG4gICAgICB7fSxcbiAgICAgIGN1c3RvbUF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpLnRoZW4oKCkgPT5cbiAgICAgIGRpc3BhdGNoKGFzc2lnbkF0dGVuZGVlKG9yZGVySWQsIHRpY2tldElkLCBlbWFpbCwgbWVzc2FnZSkpXG4gICAgKTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IHNhdmVFeHRyYVF1ZXN0aW9ucyA9XG4gICh0aWNrZXQsIGFuc3dlcnMpID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpLmNhdGNoKFByb21pc2UucmVqZWN0KTtcblxuICAgIGlmICghYWNjZXNzVG9rZW4pIHJldHVybiBQcm9taXNlLnJlamVjdCgpO1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIGV4cGFuZDpcbiAgICAgICAgXCJyZWZ1bmRfcmVxdWVzdHMsb3duZXIsb3duZXIuZXh0cmFfcXVlc3Rpb25zLG93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbixiYWRnZSxiYWRnZS5mZWF0dXJlcyx0aWNrZXRfdHlwZSxvcmRlclwiLFxuICAgICAgcmVsYXRpb25zOiBcIm93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi5ub25lXCIsXG4gICAgICBmaWVsZHM6XG4gICAgICAgIFwib3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLmlkLG93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi5uYW1lLG93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi50eXBlXCJcbiAgICB9O1xuXG4gICAgcmV0dXJuIHB1dFJlcXVlc3QoXG4gICAgICBudWxsLFxuICAgICAgY3JlYXRlQWN0aW9uKFVQREFURV9USUNLRVQpLFxuICAgICAgYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvYWxsL29yZGVycy9hbGwvdGlja2V0cy8ke3RpY2tldC5pZH1gLFxuICAgICAgYW5zd2VycyxcbiAgICAgIGN1c3RvbUF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpXG4gICAgICAudGhlbihhc3luYyAoKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgcmV0dXJuIGU7XG4gICAgICB9KTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IGdldFRpY2tldFBERiA9XG4gICh0aWNrZXQpID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpLmNhdGNoKFByb21pc2UucmVqZWN0KTtcblxuICAgIGlmICghYWNjZXNzVG9rZW4pIHJldHVybiBQcm9taXNlLnJlamVjdCgpO1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlblxuICAgIH07XG5cbiAgICBjb25zdCBvcmRlcklkID0gdGlja2V0Lm9yZGVyID8gdGlja2V0Lm9yZGVyLmlkIDogdGlja2V0Lm9yZGVyX2lkO1xuXG4gICAgY29uc3QgcXVlcnlTdHJpbmcgPSBvYmplY3RUb1F1ZXJ5U3RyaW5nKHBhcmFtcyk7XG4gICAgY29uc3QgYXBpVXJsID0gYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvYWxsL29yZGVycy8ke29yZGVySWR9L3RpY2tldHMvJHt0aWNrZXQuaWR9L3BkZj8ke3F1ZXJ5U3RyaW5nfWA7XG5cbiAgICByZXR1cm4gZmV0Y2goYXBpVXJsLCB7XG4gICAgICByZXNwb25zZVR5cGU6IFwiQmxvYlwiLFxuICAgICAgaGVhZGVyczogeyBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL3BkZlwiIH1cbiAgICB9KVxuICAgICAgLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgICB0aHJvdyByZXNwb25zZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gcmVzcG9uc2UuYmxvYigpO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICAgLnRoZW4oKHBkZikgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgY29uc3QgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJhXCIpO1xuICAgICAgICBjb25zdCB1cmwgPSB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChwZGYpO1xuICAgICAgICBsaW5rLmhyZWYgPSB1cmw7XG4gICAgICAgIGxpbmsuZG93bmxvYWQgPSBcInRpY2tldC5wZGZcIjtcbiAgICAgICAgbGluay5kaXNwYXRjaEV2ZW50KG5ldyBNb3VzZUV2ZW50KFwiY2xpY2tcIikpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaChjdXN0b21GZXRjaEVycm9ySGFuZGxlcik7XG4gIH07XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE3IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCb3ggfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlRm9ybWlrIH0gZnJvbSBcImZvcm1pa1wiO1xuaW1wb3J0IEV4dHJhUXVlc3Rpb25zRmllbGRzIGZyb20gXCIuLi9FeHRyYVF1ZXN0aW9uc0ZpZWxkc1wiO1xuaW1wb3J0IEZvcm1Gb290ZXIgZnJvbSBcIi4uL0Zvcm1Gb290ZXJcIjtcbmltcG9ydCB1c2VTY3JvbGxUb0Vycm9yIGZyb20gXCIuLi8uLi9ob29rcy91c2VTY3JvbGxUb0Vycm9yXCI7XG5pbXBvcnQgUmVnaXN0cmF0aW9uRGlzY2xhaW1lciBmcm9tIFwiLi4vVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvUmVnaXN0cmF0aW9uRGlzY2xhaW1lci9SZWdpc3RyYXRpb25EaXNjbGFpbWVyXCI7XG5pbXBvcnQgeyBidWlsZFZhbGlkYXRpb25TY2hlbWEsIHBhcnNlQW5zd2VycyB9IGZyb20gXCIuLi8uLi91dGlscy90aWNrZXRVdGlsc1wiO1xuXG5jb25zdCBBc3NpZ25FUUZvcm0gPSAoe1xuICB0aWNrZXQsXG4gIHN1bW1pdCxcbiAgZXh0cmFRdWVzdGlvbnMsXG4gIG9uU3VibWl0LFxuICBvbkNsb3NlXG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcblxuICBjb25zdCBmb3JtaWsgPSB1c2VGb3JtaWsoe1xuICAgIGluaXRpYWxWYWx1ZXM6IHBhcnNlQW5zd2VycyhcbiAgICAgIHRpY2tldC5vd25lcixcbiAgICAgIGV4dHJhUXVlc3Rpb25zLFxuICAgICAge30sXG4gICAgICBudWxsLFxuICAgICAgZmFsc2UsXG4gICAgICBmYWxzZSxcbiAgICAgIHRydWVcbiAgICApLFxuICAgIHZhbGlkYXRpb25TY2hlbWE6IGJ1aWxkVmFsaWRhdGlvblNjaGVtYShcbiAgICAgIGV4dHJhUXVlc3Rpb25zLFxuICAgICAgZmFsc2UsXG4gICAgICBmYWxzZSxcbiAgICAgIHN1bW1pdC5yZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9tYW5kYXRvcnlcbiAgICApLFxuICAgIG9uU3VibWl0OiAodmFsdWVzKSA9PiB7XG4gICAgICBjb25zdCByZWxldmFudEFuc3dlcnMgPSBwYXJzZUFuc3dlcnMoXG4gICAgICAgIHRpY2tldC5vd25lcixcbiAgICAgICAgZXh0cmFRdWVzdGlvbnMsXG4gICAgICAgIHZhbHVlcyxcbiAgICAgICAgbnVsbCxcbiAgICAgICAgZmFsc2UsXG4gICAgICAgIGZhbHNlLFxuICAgICAgICB0cnVlLFxuICAgICAgICB0cnVlXG4gICAgICApO1xuICAgICAgcmV0dXJuIG9uU3VibWl0KHJlbGV2YW50QW5zd2Vycyk7XG4gICAgfSxcbiAgICBlbmFibGVSZWluaXRpYWxpemU6IHRydWVcbiAgfSk7XG5cbiAgLy8gU0NST0xMIFRPIEVSUk9SXG4gIHVzZVNjcm9sbFRvRXJyb3IoZm9ybWlrLCBcInJlYXNzaWduRHJhd2VyXCIpO1xuXG4gIGlmIChleHRyYVF1ZXN0aW9ucz8ubGVuZ3RoID09PSAwKSByZXR1cm4gbnVsbDtcblxuICByZXR1cm4gKFxuICAgIDxmb3JtIG9uU3VibWl0PXtmb3JtaWsuaGFuZGxlU3VibWl0fSBub1ZhbGlkYXRlPlxuICAgICAgPEJveD5cbiAgICAgICAgPEV4dHJhUXVlc3Rpb25zRmllbGRzIGV4dHJhUXVlc3Rpb25zPXtleHRyYVF1ZXN0aW9uc30gZm9ybWlrPXtmb3JtaWt9IC8+XG4gICAgICAgIHtzdW1taXQucmVnaXN0cmF0aW9uX2Rpc2NsYWltZXJfY29udGVudCAmJiAoXG4gICAgICAgICAgPFJlZ2lzdHJhdGlvbkRpc2NsYWltZXJcbiAgICAgICAgICAgIGZvcm1paz17Zm9ybWlrfVxuICAgICAgICAgICAgZGlzY2xhaW1lcj17c3VtbWl0LnJlZ2lzdHJhdGlvbl9kaXNjbGFpbWVyX2NvbnRlbnR9XG4gICAgICAgICAgICBpc1JlcXVpcmVkPXtzdW1taXQucmVnaXN0cmF0aW9uX2Rpc2NsYWltZXJfbWFuZGF0b3J5fVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICA8L0JveD5cbiAgICAgIDxGb3JtRm9vdGVyXG4gICAgICAgIHNhdmVMYWJlbD17dChcInRpY2tldF9hc3NpZ25fZXEuc2F2ZVwiKX1cbiAgICAgICAgY2FuY2VsTGFiZWw9e3QoXCJ0aWNrZXRfYXNzaWduX2VxLmNhbmNlbFwiKX1cbiAgICAgICAgb25DbG9zZT17b25DbG9zZX1cbiAgICAgICAgZGlzYWJsZWQ9e2Zvcm1pay5pc1N1Ym1pdHRpbmd9XG4gICAgICAvPlxuICAgIDwvZm9ybT5cbiAgKTtcbn07XG5cbkFzc2lnbkVRRm9ybS5wcm9wVHlwZXMgPSB7XG4gIHRpY2tldDogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgZXh0cmFRdWVzdGlvbnM6IFByb3BUeXBlcy5hcnJheS5pc1JlcXVpcmVkLFxuICBvblN1Ym1pdDogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgb25DbG9zZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZFxufTtcblxuZXhwb3J0IGRlZmF1bHQgQXNzaWduRVFGb3JtO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IENvbnRlbnRDb3B5SWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9Db250ZW50Q29weVwiO1xuaW1wb3J0IHsgVG9vbHRpcCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBNSUxMSVNFQ19UT19TRUMgfSBmcm9tIFwiLi4vLi4vdXRpbHMvY29uc3RhbnRzXCI7XG5cbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgZGVmYXVsdFdpZHRoID0gOTA7XG5cbmNvbnN0IENvcHlUZXh0ID0gKHtcbiAgdGV4dCxcbiAgdG9vbHRpcFRleHQsXG4gIGhpZGVDb3B5ID0gZmFsc2UsXG4gIHRydW5jYXRlZCA9IHRydWUsXG4gIHJldmVyc2VkID0gZmFsc2UsXG4gIHdpZHRoID0gZGVmYXVsdFdpZHRoXG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgdG9vbHRpcFRleHRUb1VzZSA9IHRvb2x0aXBUZXh0IHx8IHQoXCJnZW5lcmFsLmNvcHlfdG9fY2xpcGJvYXJkXCIpO1xuICBjb25zdCBbdG9vbHRpcCwgc2V0VG9vbHRpcF0gPSBSZWFjdC51c2VTdGF0ZSh0b29sdGlwVGV4dFRvVXNlKTtcbiAgY29uc3QgY2xhc3NOYW1lcyA9IGAke3RydW5jYXRlZCAmJiBzdHlsZXMudHJ1bmNhdGVkfSAke1xuICAgIHJldmVyc2VkICYmIHN0eWxlcy5yZXZlcnNlZFxuICB9YDtcblxuICBjb25zdCBoYW5kbGVDb3B5ID0gKCkgPT4ge1xuICAgIG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KHRleHQpO1xuICAgIHNldFRvb2x0aXAodChcImdlbmVyYWwuY29waWVkXCIpKTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHNldFRvb2x0aXAodG9vbHRpcFRleHRUb1VzZSk7XG4gICAgfSwgTUlMTElTRUNfVE9fU0VDKTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMud3JhcHBlcn0+XG4gICAgICA8c3BhbiBjbGFzc05hbWU9e2NsYXNzTmFtZXN9IHN0eWxlPXt7IHdpZHRoIH19PlxuICAgICAgICB7dGV4dH1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIHshaGlkZUNvcHkgJiYgKFxuICAgICAgICA8VG9vbHRpcCB0aXRsZT17dG9vbHRpcH0+XG4gICAgICAgICAgPENvbnRlbnRDb3B5SWNvblxuICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuY29weUljb259XG4gICAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVDb3B5fVxuICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJjb3B5LW51bWJlci1idXR0b25cIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICl9XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5Db3B5VGV4dC5wcm9wVHlwZXMgPSB7XG4gIHRleHQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHRvb2x0aXBUZXh0OiBQcm9wVHlwZXMuc3RyaW5nLFxuICBoaWRlQ29weTogUHJvcFR5cGVzLmJvb2wsXG4gIHRydW5jYXRlZDogUHJvcFR5cGVzLmJvb2wsXG4gIHJldmVyc2VkOiBQcm9wVHlwZXMuYm9vbCxcbiAgd2lkdGg6IFByb3BUeXBlcy5udW1iZXJcbn07XG5cbmV4cG9ydCBkZWZhdWx0IENvcHlUZXh0O1xuIiwiaW1wb3J0IHsgY3JlYXRlQ29udGV4dCB9IGZyb20gXCJyZWFjdFwiO1xuXG5jb25zdCBkZWZhdWx0Q29udGV4dFZhbHVlID0ge1xuICBzZXRNZXNzYWdlOiAoKSA9PiB7fSxcbiAgc2V0TWVzc2FnZUNhbGxiYWNrOiAoKSA9PiB7fVxufTtcblxuY29uc3QgQ3VzdG9tRGlhbG9nQ29udGV4dCA9IGNyZWF0ZUNvbnRleHQoZGVmYXVsdENvbnRleHRWYWx1ZSk7XG5cbmV4cG9ydCBkZWZhdWx0IEN1c3RvbURpYWxvZ0NvbnRleHQ7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQge1xuICBEaWFsb2csXG4gIERpYWxvZ0NvbnRlbnQsXG4gIERpYWxvZ0NvbnRlbnRUZXh0LFxuICBEaWFsb2dUaXRsZVxufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuXG5jb25zdCBDdXN0b21EaWFsb2cgPSAoeyBvcGVuLCBvbkNsb3NlLCB0aXRsZSwgYm9keSB9KSA9PiAoXG4gIDxEaWFsb2dcbiAgICBvcGVuPXtvcGVufVxuICAgIG9uQ2xvc2U9e29uQ2xvc2V9XG4gICAgYXJpYS1sYWJlbGxlZGJ5PVwiYWxlcnQtZGlhbG9nLXRpdGxlXCJcbiAgICBhcmlhLWRlc2NyaWJlZGJ5PVwiYWxlcnQtZGlhbG9nLWRlc2NyaXB0aW9uXCJcbiAgPlxuICAgIDxEaWFsb2dUaXRsZSBpZD1cImFsZXJ0LWRpYWxvZy10aXRsZVwiPnt0aXRsZX08L0RpYWxvZ1RpdGxlPlxuICAgIDxEaWFsb2dDb250ZW50PlxuICAgICAgPERpYWxvZ0NvbnRlbnRUZXh0IGlkPVwiYWxlcnQtZGlhbG9nLWRlc2NyaXB0aW9uXCI+XG4gICAgICAgIHtib2R5fVxuICAgICAgPC9EaWFsb2dDb250ZW50VGV4dD5cbiAgICA8L0RpYWxvZ0NvbnRlbnQ+XG4gIDwvRGlhbG9nPlxuKTtcblxuQ3VzdG9tRGlhbG9nLnByb3BUeXBlcyA9IHtcbiAgb3BlbjogUHJvcFR5cGVzLmJvb2wsXG4gIG9uQ2xvc2U6IFByb3BUeXBlcy5mdW5jLFxuICB0aXRsZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgYm9keTogUHJvcFR5cGVzLnN0cmluZ1xufTtcblxuZXhwb3J0IGRlZmF1bHQgQ3VzdG9tRGlhbG9nO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgVGhlbWVQcm92aWRlciB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBjcmVhdGVUaGVtZSB9IGZyb20gXCJAbXVpL21hdGVyaWFsL3N0eWxlc1wiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuXG5sZXQgZGFya0NvbG9yID0gXCJcIjtcbmlmICh0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gIC8vIEdldCB0aGUgcm9vdCBlbGVtZW50XG4gIGNvbnN0IHJvb3QgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG5cbiAgLy8gUmV0cmlldmUgdGhlIGN1cnJlbnQgdmFsdWUgb2YgYSBDU1MgdmFyaWFibGVcbiAgZGFya0NvbG9yID0gZ2V0Q29tcHV0ZWRTdHlsZShyb290KS5nZXRQcm9wZXJ0eVZhbHVlKFxuICAgIFwiLS1jb2xvcl9iYWNrZ3JvdW5kX2RhcmtcIlxuICApO1xufVxuXG5jb25zdCB0aGVtZSA9IGNyZWF0ZVRoZW1lKHtcbiAgcGFsZXR0ZToge1xuICAgIHByaW1hcnk6IHtcbiAgICAgIG1haW46IGRhcmtDb2xvclxuICAgIH1cbiAgfVxufSk7XG5cbmNvbnN0IEN1c3RvbVRoZW1lID0gKHsgY2hpbGRyZW4gfSkgPT4gKFxuICA8VGhlbWVQcm92aWRlciB0aGVtZT17dGhlbWV9PntjaGlsZHJlbn08L1RoZW1lUHJvdmlkZXI+XG4pO1xuXG5DdXN0b21UaGVtZS5wcm9wVHlwZXMgPSB7XG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZS5pc1JlcXVpcmVkXG59O1xuXG5leHBvcnQgZGVmYXVsdCBDdXN0b21UaGVtZTtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIENoZWNrYm94LFxuICBGb3JtQ29udHJvbCxcbiAgRm9ybUNvbnRyb2xMYWJlbCxcbiAgRm9ybUdyb3VwLFxuICBGb3JtSGVscGVyVGV4dCxcbiAgRm9ybUxhYmVsXG59IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBnZXRMYWJlbCwgdG9TbHVnIH0gZnJvbSBcIi4vdXRpbHNcIjtcblxuY29uc3QgQ2hlY2tib3hMaXN0UXVlc3Rpb25GaWVsZCA9ICh7XG4gIHF1ZXN0aW9uLFxuICBxdWVzdGlvbkNsYXNzTmFtZSA9IFwiXCIsXG4gIGlzRGlzYWJsZWQgPSBmYWxzZSxcbiAgY2hpbGRyZW4sXG4gIHZhbHVlLFxuICBvbkNoYW5nZSxcbiAgc2V0RmllbGRWYWx1ZSxcbiAgZXJyb3IsXG4gIGhlbHBlclRleHQsXG4gIC4uLnJlc3Rcbn0pID0+IHtcbiAgY29uc3QgcXVlc3Rpb25TbHVnID0gdG9TbHVnKHF1ZXN0aW9uLm5hbWUsIHF1ZXN0aW9uLmlkKTtcbiAgY29uc3QgcXVlc3Rpb25MYWJlbCA9IGdldExhYmVsKHF1ZXN0aW9uKTtcbiAgY29uc3QgaXNSZXF1aXJlZCA9IHF1ZXN0aW9uLm1hbmRhdG9yeTtcbiAgY29uc3QgcXVlc3Rpb25NYXhWYWx1ZXMgPSBxdWVzdGlvbi5tYXhfc2VsZWN0ZWRfdmFsdWVzO1xuXG4gIGNvbnN0IHF1ZXN0aW9uT3B0aW9ucyA9XG4gICAgcXVlc3Rpb24udmFsdWVzPy5tYXAoKHZhbCkgPT4gKHtcbiAgICAgIGxhYmVsOiB2YWwubGFiZWwsXG4gICAgICB2YWx1ZTogdmFsLmlkLnRvU3RyaW5nKClcbiAgICB9KSkgfHwgW107XG5cbiAgY29uc3QgaGFuZGxlQ2hlY2tib3hMaXN0Q2hhbmdlID0gKGNoZWNrZWQsIHZhbCkgPT4ge1xuICAgIGNvbnN0IGN1cnJlbnRBbnMgPSB2YWx1ZSB8fCBbXTtcbiAgICBjb25zdCBtYXhTZWxlY3Rpb25SZWFjaGVkID0gY3VycmVudEFucy5sZW5ndGggPT09IHF1ZXN0aW9uTWF4VmFsdWVzO1xuICAgIGxldCBuZXdWYWx1ZTtcblxuICAgIGlmIChjaGVja2VkKSB7XG4gICAgICBuZXdWYWx1ZSA9IG1heFNlbGVjdGlvblJlYWNoZWQgPyBjdXJyZW50QW5zIDogWy4uLmN1cnJlbnRBbnMsIHZhbF07XG4gICAgfSBlbHNlIHtcbiAgICAgIG5ld1ZhbHVlID0gY3VycmVudEFucy5maWx0ZXIoKHYpID0+IHYgIT09IHZhbCk7XG4gICAgfVxuXG4gICAgc2V0RmllbGRWYWx1ZShxdWVzdGlvblNsdWcsIG5ld1ZhbHVlKTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGtleT17cXVlc3Rpb25TbHVnfVxuICAgICAgaWQ9e2Ake3F1ZXN0aW9uU2x1Z31fY29udGFpbmVyYH1cbiAgICAgIGNsYXNzTmFtZT17cXVlc3Rpb25DbGFzc05hbWV9XG4gICAgPlxuICAgICAgPEZvcm1Db250cm9sXG4gICAgICAgIGRpc2FibGVkPXtpc0Rpc2FibGVkfVxuICAgICAgICByZXF1aXJlZD17aXNSZXF1aXJlZH1cbiAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgIGVycm9yPXtlcnJvcn1cbiAgICAgID5cbiAgICAgICAgPEZvcm1MYWJlbD57cXVlc3Rpb25MYWJlbH08L0Zvcm1MYWJlbD5cbiAgICAgICAge2Vycm9yICYmIDxGb3JtSGVscGVyVGV4dD57aGVscGVyVGV4dCA/PyBcIiBcIn08L0Zvcm1IZWxwZXJUZXh0Pn1cbiAgICAgICAgPEZvcm1Hcm91cD5cbiAgICAgICAgICB7cXVlc3Rpb25PcHRpb25zLm1hcCgob3ApID0+IChcbiAgICAgICAgICAgIDxGb3JtQ29udHJvbExhYmVsXG4gICAgICAgICAgICAgIGtleT17b3AubGFiZWx9XG4gICAgICAgICAgICAgIG5hbWU9e3F1ZXN0aW9uU2x1Z31cbiAgICAgICAgICAgICAgY29udHJvbD17XG4gICAgICAgICAgICAgICAgPENoZWNrYm94XG4gICAgICAgICAgICAgICAgICBjaGVja2VkPXt2YWx1ZT8uaW5jbHVkZXMob3AudmFsdWUpfVxuICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhldikgPT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlQ2hlY2tib3hMaXN0Q2hhbmdlKGV2LnRhcmdldC5jaGVja2VkLCBvcC52YWx1ZSlcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nICovXG4gICAgICAgICAgICAgICAgICB7Li4ucmVzdH1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGxhYmVsPXtvcC5sYWJlbH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvRm9ybUdyb3VwPlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L0Zvcm1Db250cm9sPlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuQ2hlY2tib3hMaXN0UXVlc3Rpb25GaWVsZC5wcm9wVHlwZXMgPSB7XG4gIHF1ZXN0aW9uOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHZhbHVlOiBQcm9wVHlwZXMuYXJyYXksXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBpc0Rpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgb25DaGFuZ2U6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgc2V0RmllbGRWYWx1ZTogUHJvcFR5cGVzLmZ1bmMsXG4gIGVycm9yOiBQcm9wVHlwZXMuYm9vbCxcbiAgaGVscGVyVGV4dDogUHJvcFR5cGVzLnN0cmluZ1xufTtcblxuZXhwb3J0IGRlZmF1bHQgQ2hlY2tib3hMaXN0UXVlc3Rpb25GaWVsZDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIENoZWNrYm94LFxuICBGb3JtQ29udHJvbCxcbiAgRm9ybUNvbnRyb2xMYWJlbCxcbiAgRm9ybUhlbHBlclRleHRcbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBSYXdIVE1MIGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL2NvbXBvbmVudHMvcmF3LWh0bWxcIjtcbmltcG9ydCB7IGdldExhYmVsLCB0b1NsdWcgfSBmcm9tIFwiLi91dGlsc1wiO1xuXG5jb25zdCBDaGVja2JveFF1ZXN0aW9uRmllbGQgPSAoe1xuICBxdWVzdGlvbixcbiAgcXVlc3Rpb25DbGFzc05hbWUgPSBcIlwiLFxuICBpc0Rpc2FibGVkID0gZmFsc2UsXG4gIGNoaWxkcmVuLFxuICB2YWx1ZSxcbiAgZXJyb3IsXG4gIGhlbHBlclRleHQsXG4gIHNldEZpZWxkVmFsdWUsXG4gIC4uLnJlc3Rcbn0pID0+IHtcbiAgY29uc3QgcXVlc3Rpb25TbHVnID0gdG9TbHVnKHF1ZXN0aW9uLm5hbWUsIHF1ZXN0aW9uLmlkKTtcbiAgY29uc3QgcXVlc3Rpb25MYWJlbCA9IGdldExhYmVsKHF1ZXN0aW9uKTtcbiAgY29uc3QgaXNSZXF1aXJlZCA9IHF1ZXN0aW9uLm1hbmRhdG9yeTtcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGtleT17cXVlc3Rpb25TbHVnfVxuICAgICAgaWQ9e2Ake3F1ZXN0aW9uU2x1Z31fY29udGFpbmVyYH1cbiAgICAgIGNsYXNzTmFtZT17cXVlc3Rpb25DbGFzc05hbWV9XG4gICAgPlxuICAgICAgPEZvcm1Db250cm9sIGZ1bGxXaWR0aCBlcnJvcj17ZXJyb3J9PlxuICAgICAgICA8Rm9ybUNvbnRyb2xMYWJlbFxuICAgICAgICAgIGNvbnRyb2w9e1xuICAgICAgICAgICAgPENoZWNrYm94XG4gICAgICAgICAgICAgIG5hbWU9e3F1ZXN0aW9uU2x1Z31cbiAgICAgICAgICAgICAgY2hlY2tlZD17ISF2YWx1ZX1cbiAgICAgICAgICAgICAgbGFiZWw9ezxSYXdIVE1MPntxdWVzdGlvbkxhYmVsfTwvUmF3SFRNTD59XG4gICAgICAgICAgICAgIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nICovXG4gICAgICAgICAgICAgIHsuLi5yZXN0fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICB9XG4gICAgICAgICAgbGFiZWw9ezxSYXdIVE1MPntxdWVzdGlvbkxhYmVsfTwvUmF3SFRNTD59XG4gICAgICAgICAgZGlzYWJsZWQ9e2lzRGlzYWJsZWR9XG4gICAgICAgICAgcmVxdWlyZWQ9e2lzUmVxdWlyZWR9XG4gICAgICAgIC8+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgICAge2Vycm9yICYmIDxGb3JtSGVscGVyVGV4dD57aGVscGVyVGV4dCA/PyBcIiBcIn08L0Zvcm1IZWxwZXJUZXh0Pn1cbiAgICAgIDwvRm9ybUNvbnRyb2w+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5DaGVja2JveFF1ZXN0aW9uRmllbGQucHJvcFR5cGVzID0ge1xuICBxdWVzdGlvbjogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICB2YWx1ZTogUHJvcFR5cGVzLmJvb2wsXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBpc0Rpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICBzZXRGaWVsZFZhbHVlOiBQcm9wVHlwZXMuZnVuYyxcbiAgZXJyb3I6IFByb3BUeXBlcy5ib29sLFxuICBoZWxwZXJUZXh0OiBQcm9wVHlwZXMuc3RyaW5nXG59O1xuXG5leHBvcnQgZGVmYXVsdCBDaGVja2JveFF1ZXN0aW9uRmllbGQ7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgSW5wdXRMYWJlbCwgTWVudUl0ZW0sIFNlbGVjdCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBnZXRMYWJlbCwgdG9TbHVnIH0gZnJvbSBcIi4vdXRpbHNcIjtcblxuY29uc3QgRHJvcGRvd25RdWVzdGlvbkZpZWxkID0gKHtcbiAgcXVlc3Rpb24sXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lID0gXCJcIixcbiAgaXNEaXNhYmxlZCA9IGZhbHNlLFxuICBzZXRGaWVsZFZhbHVlLFxuICBjaGlsZHJlbixcbiAgZXJyb3IsXG4gIGhlbHBlclRleHQsXG4gIC4uLnJlc3Rcbn0pID0+IHtcbiAgY29uc3QgcXVlc3Rpb25TbHVnID0gdG9TbHVnKHF1ZXN0aW9uLm5hbWUsIHF1ZXN0aW9uLmlkKTtcbiAgY29uc3QgcXVlc3Rpb25MYWJlbCA9IGdldExhYmVsKHF1ZXN0aW9uKTtcbiAgY29uc3QgaXNSZXF1aXJlZCA9IHF1ZXN0aW9uLm1hbmRhdG9yeTtcblxuICBjb25zdCBxdWVzdGlvbk9wdGlvbnMgPVxuICAgIHF1ZXN0aW9uLnZhbHVlcz8ubWFwKCh2YWwpID0+ICh7XG4gICAgICBsYWJlbDogdmFsLmxhYmVsLFxuICAgICAgdmFsdWU6IHZhbC5pZFxuICAgIH0pKSB8fCBbXTtcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGtleT17cXVlc3Rpb25TbHVnfVxuICAgICAgaWQ9e2Ake3F1ZXN0aW9uU2x1Z31fY29udGFpbmVyYH1cbiAgICAgIGNsYXNzTmFtZT17cXVlc3Rpb25DbGFzc05hbWV9XG4gICAgPlxuICAgICAgPEZvcm1Db250cm9sXG4gICAgICAgIGRpc2FibGVkPXtpc0Rpc2FibGVkfVxuICAgICAgICByZXF1aXJlZD17aXNSZXF1aXJlZH1cbiAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgIGVycm9yPXtlcnJvcn1cbiAgICAgID5cbiAgICAgICAgPElucHV0TGFiZWwgaWQ9e2Ake3F1ZXN0aW9uU2x1Z31fbGFiZWxgfT57cXVlc3Rpb25MYWJlbH08L0lucHV0TGFiZWw+XG4gICAgICAgIDxTZWxlY3RcbiAgICAgICAgICBsYWJlbElkPXtgJHtxdWVzdGlvblNsdWd9X2xhYmVsYH1cbiAgICAgICAgICBuYW1lPXtxdWVzdGlvblNsdWd9XG4gICAgICAgICAgaWQ9e3F1ZXN0aW9uU2x1Z31cbiAgICAgICAgICBsYWJlbD17cXVlc3Rpb25MYWJlbH1cbiAgICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvanN4LXByb3BzLW5vLXNwcmVhZGluZyAqL1xuICAgICAgICAgIHsuLi5yZXN0fVxuICAgICAgICAgIHN0eWxlPXt7IG1hcmdpbkJvdHRvbTogMjAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIHtxdWVzdGlvbk9wdGlvbnMubWFwKChvcCkgPT4gKFxuICAgICAgICAgICAgPE1lbnVJdGVtIGtleT17b3AubGFiZWx9IHZhbHVlPXtvcC52YWx1ZX0+XG4gICAgICAgICAgICAgIHtvcC5sYWJlbH1cbiAgICAgICAgICAgIDwvTWVudUl0ZW0+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvU2VsZWN0PlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L0Zvcm1Db250cm9sPlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuRHJvcGRvd25RdWVzdGlvbkZpZWxkLnByb3BUeXBlcyA9IHtcbiAgcXVlc3Rpb246IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgcXVlc3Rpb25DbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGlzRGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG4gIGVycm9yOiBQcm9wVHlwZXMuYm9vbCxcbiAgaGVscGVyVGV4dDogUHJvcFR5cGVzLnN0cmluZyxcbiAgc2V0RmllbGRWYWx1ZTogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IERyb3Bkb3duUXVlc3Rpb25GaWVsZDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIEZvcm1Db250cm9sLFxuICBGb3JtQ29udHJvbExhYmVsLFxuICBGb3JtSGVscGVyVGV4dCxcbiAgRm9ybUxhYmVsLFxuICBSYWRpbyxcbiAgUmFkaW9Hcm91cFxufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgZ2V0TGFiZWwsIHRvU2x1ZyB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbmNvbnN0IFJhZGlvTGlzdFF1ZXN0aW9uRmllbGQgPSAoe1xuICBxdWVzdGlvbixcbiAgcXVlc3Rpb25DbGFzc05hbWUgPSBcIlwiLFxuICBpc0Rpc2FibGVkID0gZmFsc2UsXG4gIGNoaWxkcmVuLFxuICBlcnJvcixcbiAgaGVscGVyVGV4dCxcbiAgc2V0RmllbGRWYWx1ZSxcbiAgLi4ucmVzdFxufSkgPT4ge1xuICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcocXVlc3Rpb24ubmFtZSwgcXVlc3Rpb24uaWQpO1xuICBjb25zdCBxdWVzdGlvbkxhYmVsID0gZ2V0TGFiZWwocXVlc3Rpb24pO1xuICBjb25zdCBpc1JlcXVpcmVkID0gcXVlc3Rpb24ubWFuZGF0b3J5O1xuXG4gIGNvbnN0IHF1ZXN0aW9uT3B0aW9ucyA9XG4gICAgcXVlc3Rpb24udmFsdWVzPy5tYXAoKHZhbCkgPT4gKHtcbiAgICAgIGxhYmVsOiB2YWwubGFiZWwsXG4gICAgICB2YWx1ZTogdmFsLmlkLnRvU3RyaW5nKClcbiAgICB9KSkgfHwgW107XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBrZXk9e3F1ZXN0aW9uU2x1Z31cbiAgICAgIGlkPXtgJHtxdWVzdGlvblNsdWd9X2NvbnRhaW5lcmB9XG4gICAgICBjbGFzc05hbWU9e3F1ZXN0aW9uQ2xhc3NOYW1lfVxuICAgID5cbiAgICAgIDxGb3JtQ29udHJvbFxuICAgICAgICBkaXNhYmxlZD17aXNEaXNhYmxlZH1cbiAgICAgICAgcmVxdWlyZWQ9e2lzUmVxdWlyZWR9XG4gICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICBlcnJvcj17ZXJyb3J9XG4gICAgICA+XG4gICAgICAgIDxGb3JtTGFiZWwgaWQ9e2Ake3F1ZXN0aW9uU2x1Z31fbGFiZWxgfT57cXVlc3Rpb25MYWJlbH08L0Zvcm1MYWJlbD5cbiAgICAgICAge2Vycm9yICYmIDxGb3JtSGVscGVyVGV4dD57aGVscGVyVGV4dCA/PyBcIiBcIn08L0Zvcm1IZWxwZXJUZXh0Pn1cbiAgICAgICAgPFJhZGlvR3JvdXBcbiAgICAgICAgICBhcmlhLWxhYmVsbGVkYnk9e2Ake3F1ZXN0aW9uU2x1Z31fbGFiZWxgfVxuICAgICAgICAgIG5hbWU9e3F1ZXN0aW9uU2x1Z31cbiAgICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvanN4LXByb3BzLW5vLXNwcmVhZGluZyAqL1xuICAgICAgICAgIHsuLi5yZXN0fVxuICAgICAgICA+XG4gICAgICAgICAge3F1ZXN0aW9uT3B0aW9ucy5tYXAoKG9wKSA9PiAoXG4gICAgICAgICAgICA8Rm9ybUNvbnRyb2xMYWJlbFxuICAgICAgICAgICAgICBrZXk9e29wLmxhYmVsfVxuICAgICAgICAgICAgICB2YWx1ZT17b3AudmFsdWV9XG4gICAgICAgICAgICAgIGNvbnRyb2w9ezxSYWRpbyAvPn1cbiAgICAgICAgICAgICAgbGFiZWw9e29wLmxhYmVsfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9SYWRpb0dyb3VwPlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L0Zvcm1Db250cm9sPlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuUmFkaW9MaXN0UXVlc3Rpb25GaWVsZC5wcm9wVHlwZXMgPSB7XG4gIHF1ZXN0aW9uOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBpc0Rpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICBlcnJvcjogUHJvcFR5cGVzLmJvb2wsXG4gIGhlbHBlclRleHQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHNldEZpZWxkVmFsdWU6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBSYWRpb0xpc3RRdWVzdGlvbkZpZWxkO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgRm9ybUdyb3VwLCBUZXh0RmllbGQgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgZ2V0TGFiZWwsIHRvU2x1ZyB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbmNvbnN0IFRleHRRdWVzdGlvbkZpZWxkID0gKHtcbiAgcXVlc3Rpb24sXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lID0gXCJcIixcbiAgaXNEaXNhYmxlZCA9IGZhbHNlLFxuICBjaGlsZHJlbixcbiAgc2V0RmllbGRWYWx1ZSxcbiAgLi4ucmVzdFxufSkgPT4ge1xuICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcocXVlc3Rpb24ubmFtZSwgcXVlc3Rpb24uaWQpO1xuICBjb25zdCBxdWVzdGlvbkxhYmVsID0gZ2V0TGFiZWwocXVlc3Rpb24pO1xuICBjb25zdCBpc1JlcXVpcmVkID0gcXVlc3Rpb24ubWFuZGF0b3J5O1xuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAga2V5PXtxdWVzdGlvblNsdWd9XG4gICAgICBpZD17YCR7cXVlc3Rpb25TbHVnfV9jb250YWluZXJgfVxuICAgICAgY2xhc3NOYW1lPXtxdWVzdGlvbkNsYXNzTmFtZX1cbiAgICA+XG4gICAgICA8Rm9ybUdyb3VwPlxuICAgICAgICA8VGV4dEZpZWxkXG4gICAgICAgICAgbmFtZT17cXVlc3Rpb25TbHVnfVxuICAgICAgICAgIGxhYmVsPXtxdWVzdGlvbkxhYmVsfVxuICAgICAgICAgIGRpc2FibGVkPXtpc0Rpc2FibGVkfVxuICAgICAgICAgIHJlcXVpcmVkPXtpc1JlcXVpcmVkfVxuICAgICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICAgIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nICovXG4gICAgICAgICAgey4uLnJlc3R9XG4gICAgICAgIC8+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDwvRm9ybUdyb3VwPlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuVGV4dFF1ZXN0aW9uRmllbGQucHJvcFR5cGVzID0ge1xuICBxdWVzdGlvbjogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBxdWVzdGlvbkNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgaXNEaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgc2V0RmllbGRWYWx1ZTogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFRleHRRdWVzdGlvbkZpZWxkO1xuIiwiaW1wb3J0IHtcbiAgUXVlc3Rpb25UeXBlX0NoZWNrYm94LFxuICBRdWVzdGlvblR5cGVfQ2hlY2tCb3hMaXN0LFxuICBRdWVzdGlvblR5cGVfQ29tYm9Cb3gsXG4gIFF1ZXN0aW9uVHlwZV9Db3VudHJ5Q29tYm9Cb3gsXG4gIFF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbkxpc3Rcbn0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xuXG5leHBvcnQgY29uc3QgY2hlY2tSdWxlID0gKHZhbHVlLCBydWxlKSA9PiB7XG4gIGNvbnN0IHZhbHVlcyA9IHJ1bGUuYW5zd2VyX3ZhbHVlcztcblxuICBpZiAoIXZhbHVlKSByZXR1cm4gZmFsc2U7XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgaWYgKCF2YWx1ZS5sZW5ndGgpIHJldHVybiBmYWxzZTtcbiAgICBsZXQgcmVzID0gcnVsZS5hbnN3ZXJfdmFsdWVzX29wZXJhdG9yID09PSBcIkFuZFwiO1xuICAgIHZhbHVlcy5mb3JFYWNoKCh2KSA9PiB7XG4gICAgICBpZiAocnVsZS5hbnN3ZXJfdmFsdWVzX29wZXJhdG9yID09PSBcIkFuZFwiKSB7XG4gICAgICAgIHJlcyA9IHJlcyAmJiB2YWx1ZS5pbmNsdWRlcyh2KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIE9yXG4gICAgICAgIHJlcyA9IHJlcyB8fCB2YWx1ZS5pbmNsdWRlcyh2KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gcmVzO1xuICB9XG4gIHJldHVybiB2YWx1ZXMuaW5jbHVkZXModmFsdWU/LnRvU3RyaW5nKCkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGNoZWNrVmlzaWJpbGl0eSA9IChydWxlLCBydWxlUmVzdWx0LCBjaGlsZHJlbikgPT4ge1xuICBpZiAocnVsZS52aXNpYmlsaXR5ID09PSBcIlZpc2libGVcIikge1xuICAgIGlmIChydWxlLnZpc2liaWxpdHlfY29uZGl0aW9uID09PSBcIkVxdWFsXCIpIHtcbiAgICAgIGlmIChydWxlUmVzdWx0KSByZXR1cm4gY2hpbGRyZW47XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgLy8gTm9uIEVxdWFsXG4gICAgaWYgKCFydWxlUmVzdWx0KSB7XG4gICAgICByZXR1cm4gY2hpbGRyZW47XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG4gIC8vIG5vdCB2aXNpYmxlXG4gIGlmIChydWxlLnZpc2liaWxpdHlfY29uZGl0aW9uID09PSBcIkVxdWFsXCIpIHtcbiAgICBpZiAoIXJ1bGVSZXN1bHQpIHJldHVybiBjaGlsZHJlbjtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBpZiAocnVsZVJlc3VsdCkgcmV0dXJuIGNoaWxkcmVuO1xuICByZXR1cm4gbnVsbDtcbn07XG5cbmV4cG9ydCBjb25zdCB0b1NsdWcgPSAodGV4dCwgcXVlc3Rpb25JZCkgPT4ge1xuICBjb25zdCB0ZXh0TEMgPSB0ZXh0LnRvTG93ZXJDYXNlKCk7XG4gIHJldHVybiBgJHt0ZXh0TEMucmVwbGFjZSgvW15hLXpBLVowLTldKy9nLCBcIl9cIil9XyR7cXVlc3Rpb25JZH1gO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldExhYmVsID0gKHEpID0+XG4gIC8vIHJlcGxhY2UgbGluZSBicmVha3MgYW5kIHJlbW92ZSBvdXRlciA8cD5cbiAgcT8ubGFiZWw/LnJlcGxhY2UoL1xcbi9nLCBcIiBcIikucmVwbGFjZSgvPHA+KC4qKTxcXC9wPi9naSwgXCIkMVwiKTtcblxuZXhwb3J0IGNvbnN0IGlzQW5zd2VyZWQgPSAoYW5zd2VyKSA9PiB7XG4gIGlmICghYW5zd2VyKSByZXR1cm4gZmFsc2U7XG4gIC8vIGNoZWNrIHR5cGVcbiAgaWYgKEFycmF5LmlzQXJyYXkoYW5zd2VyKSkgcmV0dXJuIGFuc3dlci5sZW5ndGggPiAwO1xuICBpZiAodHlwZW9mIGFuc3dlciA9PT0gXCJzdHJpbmdcIikgcmV0dXJuIGFuc3dlci5sZW5ndGggPiAwO1xuICBpZiAodHlwZW9mIGFuc3dlciA9PT0gXCJudW1iZXJcIikgcmV0dXJuIGFuc3dlciA+IDA7XG4gIGlmICh0eXBlb2YgYW5zd2VyID09PSBcImJvb2xlYW5cIikgcmV0dXJuIGFuc3dlcjtcbiAgcmV0dXJuIGZhbHNlO1xufTtcblxuZXhwb3J0IGNvbnN0IGNoZWNrSWZWYWx1ZU1hdGNoID0gKGFuc3dlciwgY29tcGFyZVZhbCkgPT4ge1xuICBjb25zdCBhbnN3ZXJBcnJheSA9IEFycmF5LmlzQXJyYXkoYW5zd2VyKSA/IGFuc3dlciA6IFthbnN3ZXJdO1xuXG4gIHJldHVybiBhbnN3ZXJBcnJheS5zb21lKCh2KSA9PiB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoY29tcGFyZVZhbCkpIHtcbiAgICAgIHJldHVybiBjb21wYXJlVmFsLmluY2x1ZGVzKHYpO1xuICAgIH1cbiAgICByZXR1cm4gdiA9PT0gY29tcGFyZVZhbDtcbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0VHlwZUluaXRpYWxWYWx1ZSA9IChxKSA9PiB7XG4gIHN3aXRjaCAocS50eXBlKSB7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ2hlY2tib3g6XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0OlxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ2hlY2tCb3hMaXN0OlxuICAgICAgcmV0dXJuIFtdO1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveDpcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9Db21ib0JveDpcbiAgICAgIHJldHVybiBcIlwiO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gXCJcIjtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGdldFR5cGVWYWx1ZSA9IChhbnMsIHR5cGUpID0+IHtcbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ2hlY2tib3g6XG4gICAgICByZXR1cm4gYW5zID09PSBcInRydWVcIjtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3Q6XG4gICAgICByZXR1cm4gYW5zPy5zcGxpdChcIixcIikgfHwgW107XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ291bnRyeUNvbWJvQm94OlxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NvbWJvQm94OlxuICAgICAgcmV0dXJuIGFucyB8fCBcIlwiO1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdDpcbiAgICAgIHJldHVybiBhbnMgfHwgbnVsbDtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGFucztcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IHRyYW5zZm9ybUFud2Vyc0Zvcm1hdCA9IChhbnN3ZXJzKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBhdHRlbmRlZV9lbWFpbCxcbiAgICBhdHRlbmRlZV9maXJzdF9uYW1lLFxuICAgIGF0dGVuZGVlX2xhc3RfbmFtZSxcbiAgICBhdHRlbmRlZV9jb21wYW55LFxuICAgIGRpc2NsYWltZXJfYWNjZXB0ZWQsXG4gICAgLi4uZXh0cmFfcXVlc3Rpb25zXG4gIH0gPSBhbnN3ZXJzO1xuXG4gIGNvbnN0IGZvcm1hdHRlZEVRID0gT2JqZWN0LmVudHJpZXMoZXh0cmFfcXVlc3Rpb25zKS5tYXAoKFtrZXksIHZhbHVlXSkgPT4gKHtcbiAgICBxdWVzdGlvbl9pZDogcGFyc2VJbnQoa2V5LnNwbGl0KFwiX1wiKS5wb3AoKSwgMTApLFxuICAgIGFuc3dlcjogdmFsdWUudG9TdHJpbmcoKVxuICB9KSk7XG5cbiAgcmV0dXJuIHtcbiAgICBhdHRlbmRlZV9lbWFpbCxcbiAgICBhdHRlbmRlZV9maXJzdF9uYW1lLFxuICAgIGF0dGVuZGVlX2xhc3RfbmFtZSxcbiAgICBhdHRlbmRlZV9jb21wYW55LFxuICAgIGRpc2NsYWltZXJfYWNjZXB0ZWQsXG4gICAgZXh0cmFfcXVlc3Rpb25zOiBmb3JtYXR0ZWRFUVxuICB9O1xufTtcbiIsImV4cG9ydCBjb25zdCBRdWVzdGlvblR5cGVfVGV4dCA9IFwiVGV4dFwiO1xuZXhwb3J0IGNvbnN0IFF1ZXN0aW9uVHlwZV9UZXh0QXJlYSA9IFwiVGV4dEFyZWFcIjtcbmV4cG9ydCBjb25zdCBRdWVzdGlvblR5cGVfQ2hlY2tib3ggPSBcIkNoZWNrQm94XCI7XG5leHBvcnQgY29uc3QgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdCA9IFwiUmFkaW9CdXR0b25MaXN0XCI7XG5leHBvcnQgY29uc3QgUXVlc3Rpb25UeXBlX0NvbWJvQm94ID0gXCJDb21ib0JveFwiO1xuZXhwb3J0IGNvbnN0IFF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3QgPSBcIkNoZWNrQm94TGlzdFwiO1xuZXhwb3J0IGNvbnN0IFF1ZXN0aW9uVHlwZV9Db3VudHJ5Q29tYm9Cb3ggPSBcIkNvdW50cnlDb21ib0JveFwiO1xuZXhwb3J0IGNvbnN0IFF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbiA9IFwiUmFkaW9CdXR0b25cIjtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTcgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcblxuaW1wb3J0IHtcbiAgdG9TbHVnLFxuICBpc0Fuc3dlcmVkLFxuICBjaGVja1Zpc2liaWxpdHksXG4gIGNoZWNrUnVsZVxufSBmcm9tIFwiLi9jb21wb25lbnRzL3V0aWxzXCI7XG5pbXBvcnQge1xuICBRdWVzdGlvblR5cGVfQ2hlY2tib3gsXG4gIFF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3QsXG4gIFF1ZXN0aW9uVHlwZV9Db21ib0JveCxcbiAgUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveCxcbiAgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdCxcbiAgUXVlc3Rpb25UeXBlX1RleHQsXG4gIFF1ZXN0aW9uVHlwZV9UZXh0QXJlYVxufSBmcm9tIFwiLi9jb25zdGFudHNcIjtcbmltcG9ydCBUZXh0UXVlc3Rpb25GaWVsZCBmcm9tIFwiLi9jb21wb25lbnRzL1RleHRRdWVzdGlvbkZpZWxkXCI7XG5pbXBvcnQgQ2hlY2tib3hRdWVzdGlvbkZpZWxkIGZyb20gXCIuL2NvbXBvbmVudHMvQ2hlY2tib3hRdWVzdGlvbkZpZWxkXCI7XG5pbXBvcnQgUmFkaW9MaXN0UXVlc3Rpb25GaWVsZCBmcm9tIFwiLi9jb21wb25lbnRzL1JhZGlvTGlzdFF1ZXN0aW9uRmllbGRcIjtcbmltcG9ydCBDaGVja2JveExpc3RRdWVzdGlvbkZpZWxkIGZyb20gXCIuL2NvbXBvbmVudHMvQ2hlY2tib3hMaXN0UXVlc3Rpb25GaWVsZFwiO1xuaW1wb3J0IERyb3Bkb3duUXVlc3Rpb25GaWVsZCBmcm9tIFwiLi9jb21wb25lbnRzL0Ryb3Bkb3duUXVlc3Rpb25GaWVsZFwiO1xuXG5jb25zdCBnZXRRdWVzdGlvbkZpZWxkQ29tcG9uZW50ID0gKHF1ZXN0aW9uVHlwZSkgPT4ge1xuICBzd2l0Y2ggKHF1ZXN0aW9uVHlwZSkge1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX1RleHRBcmVhOlxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX1RleHQ6IHtcbiAgICAgIHJldHVybiBUZXh0UXVlc3Rpb25GaWVsZDtcbiAgICB9XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ2hlY2tib3g6IHtcbiAgICAgIHJldHVybiBDaGVja2JveFF1ZXN0aW9uRmllbGQ7XG4gICAgfVxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdDoge1xuICAgICAgcmV0dXJuIFJhZGlvTGlzdFF1ZXN0aW9uRmllbGQ7XG4gICAgfVxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdDoge1xuICAgICAgcmV0dXJuIENoZWNrYm94TGlzdFF1ZXN0aW9uRmllbGQ7XG4gICAgfVxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveDpcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9Db21ib0JveDoge1xuICAgICAgcmV0dXJuIERyb3Bkb3duUXVlc3Rpb25GaWVsZDtcbiAgICB9XG4gICAgZGVmYXVsdDoge1xuICAgICAgcmV0dXJuIFJlYWN0LkZyYWdtZW50O1xuICAgIH1cbiAgfVxufTtcblxuY29uc3QgRXh0cmFRdWVzdGlvbnNGaWVsZHMgPSAoe1xuICBleHRyYVF1ZXN0aW9ucyxcbiAgY2xhc3NOYW1lID0gXCJleHRyYVF1ZXN0aW9uc1wiLFxuICBxdWVzdGlvbkNsYXNzTmFtZSA9IFwiZXh0cmFRdWVzdGlvblwiLFxuICByZWFkT25seSA9IGZhbHNlLFxuICBhbGxvd0VkaXQgPSB0cnVlLFxuICBmb3JtaWtcbn0pID0+IHtcbiAgY29uc3QgcmVuZGVyUnVsZSA9IChydWxlLCBxdWVzdGlvblNsdWcpID0+XG4gICAgY2hlY2tWaXNpYmlsaXR5KFxuICAgICAgcnVsZSxcbiAgICAgIGNoZWNrUnVsZShmb3JtaWsudmFsdWVzW3F1ZXN0aW9uU2x1Z10sIHJ1bGUpLFxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVzZS1iZWZvcmUtZGVmaW5lXG4gICAgICByZW5kZXJRdWVzdGlvbihydWxlLnN1Yl9xdWVzdGlvbilcbiAgICApO1xuXG4gIGNvbnN0IHJlbmRlclF1ZXN0aW9uID0gKHEpID0+IHtcbiAgICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcocS5uYW1lLCBxLmlkKTtcbiAgICAvLyBkaXNhYmxlIGZpZWxkIGlmIGVkaXQgaXNuJ3QgYWxsb3dlZCBhbmQgdGhlIHF1ZXN0aW9ucyBpcyBhbnN3ZXJlZFxuICAgIGNvbnN0IGlzRGlzYWJsZWQgPVxuICAgICAgKCFhbGxvd0VkaXQgJiYgaXNBbnN3ZXJlZChmb3JtaWsudmFsdWVzW3F1ZXN0aW9uU2x1Z10pKSB8fCByZWFkT25seTtcbiAgICBjb25zdCBRdWVzdGlvbkZpZWxkQ29tcG9uZW50ID0gZ2V0UXVlc3Rpb25GaWVsZENvbXBvbmVudChxLnR5cGUpO1xuXG4gICAgY29uc3QgZm9ybWlrUHJvcHMgPSB7XG4gICAgICB2YWx1ZTogZm9ybWlrLnZhbHVlc1txdWVzdGlvblNsdWddLFxuICAgICAgb25DaGFuZ2U6IGZvcm1pay5oYW5kbGVDaGFuZ2UsXG4gICAgICBvbkJsdXI6IGZvcm1pay5oYW5kbGVCbHVyLFxuICAgICAgZXJyb3I6XG4gICAgICAgIGZvcm1pay50b3VjaGVkW3F1ZXN0aW9uU2x1Z10gJiYgQm9vbGVhbihmb3JtaWsuZXJyb3JzW3F1ZXN0aW9uU2x1Z10pLFxuICAgICAgaGVscGVyVGV4dDogZm9ybWlrLnRvdWNoZWRbcXVlc3Rpb25TbHVnXSAmJiBmb3JtaWsuZXJyb3JzW3F1ZXN0aW9uU2x1Z10sXG4gICAgICBzZXRGaWVsZFZhbHVlOiBmb3JtaWsuc2V0RmllbGRWYWx1ZVxuICAgIH07XG5cbiAgICByZXR1cm4gKFxuICAgICAgPFF1ZXN0aW9uRmllbGRDb21wb25lbnRcbiAgICAgICAga2V5PXtxdWVzdGlvblNsdWd9XG4gICAgICAgIHF1ZXN0aW9uPXtxfVxuICAgICAgICBxdWVzdGlvbkNsYXNzTmFtZT17cXVlc3Rpb25DbGFzc05hbWV9XG4gICAgICAgIGlzRGlzYWJsZWQ9e2lzRGlzYWJsZWR9XG4gICAgICAgIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nICovXG4gICAgICAgIHsuLi5mb3JtaWtQcm9wc31cbiAgICAgID5cbiAgICAgICAge3Euc3ViX3F1ZXN0aW9uX3J1bGVzPy5tYXAoKHJ1bGUpID0+IHJlbmRlclJ1bGUocnVsZSwgcXVlc3Rpb25TbHVnKSl9XG4gICAgICA8L1F1ZXN0aW9uRmllbGRDb21wb25lbnQ+XG4gICAgKTtcbiAgfTtcblxuICByZXR1cm4gPGRpdiBjbGFzc05hbWU9e2NsYXNzTmFtZX0+e2V4dHJhUXVlc3Rpb25zLm1hcChyZW5kZXJRdWVzdGlvbil9PC9kaXY+O1xufTtcblxuRXh0cmFRdWVzdGlvbnNGaWVsZHMucHJvcFR5cGVzID0ge1xuICBleHRyYVF1ZXN0aW9uczogUHJvcFR5cGVzLmFycmF5LmlzUmVxdWlyZWQsXG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgcXVlc3Rpb25DbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGFsbG93RWRpdDogUHJvcFR5cGVzLmJvb2wsXG4gIHJlYWRPbmx5OiBQcm9wVHlwZXMuYm9vbFxufTtcblxuZXhwb3J0IGRlZmF1bHQgRXh0cmFRdWVzdGlvbnNGaWVsZHM7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCBTdGFjayBmcm9tIFwiQG11aS9tYXRlcmlhbC9TdGFja1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IGRheWpzIGZyb20gXCJkYXlqc1wiO1xuaW1wb3J0IHsgQWRhcHRlckRheWpzIH0gZnJvbSBcIkBtdWkveC1kYXRlLXBpY2tlcnMvQWRhcHRlckRheWpzXCI7XG5pbXBvcnQgeyBMb2NhbGl6YXRpb25Qcm92aWRlciB9IGZyb20gXCJAbXVpL3gtZGF0ZS1waWNrZXJzL0xvY2FsaXphdGlvblByb3ZpZGVyXCI7XG5pbXBvcnQgeyBEYXRlUGlja2VyIH0gZnJvbSBcIkBtdWkveC1kYXRlLXBpY2tlcnMvRGF0ZVBpY2tlclwiO1xuaW1wb3J0IENsb3NlSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9DbG9zZVwiO1xuaW1wb3J0IHsgRklMVEVSX1ZBUl9EQVRFIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcbmltcG9ydCB7IGdldEVwb2NoTG93ZXJVcHBlckluU2Vjb25kcyB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBCYXNpY0RhdGVQaWNrZXIoeyBvbkZpbHRlciwgb25SZXNldCB9KSB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3Qgbm93ID0gZGF5anMoKTtcbiAgY29uc3QgW2RhdGVWYWx1ZSwgc2V0RGF0ZVZhbHVlXSA9IHVzZVN0YXRlKG5vdyk7XG4gIGNvbnN0IG9uRGF0ZUNoYW5nZSA9ICh2YWwpID0+IHtcbiAgICBzZXREYXRlVmFsdWUodmFsKTtcbiAgICBjb25zdCBkYXRlID0gbmV3IERhdGUodmFsLiRkKTtcbiAgICBjb25zdCB7IGxvd2VyLCB1cHBlciB9ID0gZ2V0RXBvY2hMb3dlclVwcGVySW5TZWNvbmRzKGRhdGUpO1xuICAgIG9uRmlsdGVyKHtcbiAgICAgIHR5cGU6IEZJTFRFUl9WQVJfREFURSxcbiAgICAgIG5hbWU6IFwiY3JlYXRlZFwiLFxuICAgICAgZGF0ZSxcbiAgICAgIGxvd2VyLFxuICAgICAgdXBwZXJcbiAgICB9KTtcbiAgfTtcbiAgY29uc3Qgb25SZXNldEFjdGlvbiA9ICgpID0+IHtcbiAgICBvblJlc2V0KCk7XG4gICAgc2V0RGF0ZVZhbHVlKG5vdyk7XG4gIH07XG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMuZmlsdGVyRGF0ZUxhYmVsfT57dChcImZpbHRlci5wdXJjaGFzZWRfb25cIil9PC9kaXY+XG4gICAgICA8U3RhY2tcbiAgICAgICAgYWxpZ25JdGVtcz1cImNlbnRlclwiXG4gICAgICAgIGRpcmVjdGlvbj1cInJvd1wiXG4gICAgICAgIHN4PXt7IHB0OiAyLCBwYjogMiB9fVxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5kYXRlUGlja2VyQ29udGFpbmVyfVxuICAgICAgPlxuICAgICAgICA8Q2xvc2VJY29uXG4gICAgICAgICAgZm9udFNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuZGF0ZXBpY2tlckNsb3NlfVxuICAgICAgICAgIG9uQ2xpY2s9e29uUmVzZXRBY3Rpb259XG4gICAgICAgIC8+XG4gICAgICAgIDxMb2NhbGl6YXRpb25Qcm92aWRlciBkYXRlQWRhcHRlcj17QWRhcHRlckRheWpzfT5cbiAgICAgICAgICA8RGF0ZVBpY2tlclxuICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuY2FsZW5kYXJEaXNwbGF5fVxuICAgICAgICAgICAgb25DaGFuZ2U9e29uRGF0ZUNoYW5nZX1cbiAgICAgICAgICAgIHZhbHVlPXtkYXRlVmFsdWV9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9Mb2NhbGl6YXRpb25Qcm92aWRlcj5cbiAgICAgIDwvU3RhY2s+XG4gICAgPC8+XG4gICk7XG59XG5cbkJhc2ljRGF0ZVBpY2tlci5wcm9wVHlwZXMgPSB7XG4gIG9uRmlsdGVyOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25SZXNldDogUHJvcFR5cGVzLmZ1bmNcbn07XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUsIHVzZVJlZiwgdXNlRWZmZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgU3RhY2sgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvU3RhY2tcIjtcbmltcG9ydCBGaWx0ZXJMaXN0SWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9GaWx0ZXJMaXN0XCI7XG5pbXBvcnQgeyBCb3ggfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IEJhc2ljRGF0ZVBpY2tlciBmcm9tIFwiLi9EYXRlcGlja2VyXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmZ1bmN0aW9uIEZpbHRlcih7IG9uRmlsdGVyLCBvblJlc2V0IH0pIHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBbc2hvd0ZpbHRlckxpc3QsIHNldFNob3dGaWx0ZXJMaXN0XSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW3Nob3dEYXRlcGlja2VyLCBzZXRTaG93RGF0ZXBpY2tlcl0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtmaWx0ZXJOdW1BY3RpdmUsIHNldEZpbHRlck51bUFjdGl2ZV0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IGZpbHRlclJlZiA9IHVzZVJlZihudWxsKTtcbiAgY29uc3QgaGFuZGxlRmlsdGVyQ2xpY2tPdXRzaWRlID0gKGV2ZW50KSA9PiB7XG4gICAgaWYgKGZpbHRlclJlZi5jdXJyZW50ICYmICFmaWx0ZXJSZWYuY3VycmVudC5jb250YWlucyhldmVudC50YXJnZXQpKSB7XG4gICAgICBpZiAoc2hvd0ZpbHRlckxpc3QpIHtcbiAgICAgICAgc2V0U2hvd0ZpbHRlckxpc3QoZmFsc2UpO1xuICAgICAgICBzZXRTaG93RGF0ZXBpY2tlcihmYWxzZSk7XG4gICAgICB9XG4gICAgfVxuICB9O1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBoYW5kbGVGaWx0ZXJDbGlja091dHNpZGUsIGZhbHNlKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGhhbmRsZUZpbHRlckNsaWNrT3V0c2lkZSwgZmFsc2UpO1xuICAgIH07XG4gIH0sIFtzaG93RmlsdGVyTGlzdF0pO1xuXG4gIGNvbnN0IHRvZ2dsZSA9ICgpID0+IHtcbiAgICBzZXRTaG93RmlsdGVyTGlzdCghc2hvd0ZpbHRlckxpc3QpO1xuICAgIHNldFNob3dEYXRlcGlja2VyKCFzaG93RGF0ZXBpY2tlcik7XG4gIH07XG4gIHJldHVybiAoXG4gICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5maWx0ZXJDb250YWluZXJ9IHJlZj17ZmlsdGVyUmVmfT5cbiAgICAgIDxTdGFja1xuICAgICAgICBhbGlnbkl0ZW1zPVwiY2VudGVyXCJcbiAgICAgICAgZGlyZWN0aW9uPVwicm93XCJcbiAgICAgICAgc3g9e3sgcHQ6IDIsIHBiOiAyIH19XG4gICAgICAgIG9uQ2xpY2s9e3RvZ2dsZX1cbiAgICAgID5cbiAgICAgICAgPEZpbHRlckxpc3RJY29uIGZvbnRTaXplPVwibGFyZ2VcIiBjbGFzc05hbWU9e3N0eWxlcy5maWx0ZXJJY29ufSAvPlxuICAgICAgICB7LyoqIGN1cnJlbnRseSBqdXN0IHNob3dpbmcgXCIxXCIgYmVjYXVzZSB3ZSdyZSBjdXJyZW50bHkgb25seSBmaWx0ZXJpbmcgb25lIGNyaXRlcmlhIC0gY3JlYXRlZCBkYXRlICovfVxuICAgICAgICB7ZmlsdGVyTnVtQWN0aXZlICYmIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMuZmlsdGVyTnVtQWN0aXZlfT4xPC9kaXY+fVxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlcy5maWx0ZXJMYWJlbH0+e3QoXCJmaWx0ZXIuZmlsdGVyXCIpfTwvc3Bhbj5cbiAgICAgIDwvU3RhY2s+XG4gICAgICA8Qm94XG4gICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLmZpbHRlckxpc3RDb250YWluZXJ9ICR7c3R5bGVzLmNvbnRhaW5lcn0gJHtcbiAgICAgICAgICBzaG93RmlsdGVyTGlzdCA/IHN0eWxlcy5zaG93RGF0ZVBpY2tlciA6IFwiXCJcbiAgICAgICAgfWB9XG4gICAgICA+XG4gICAgICAgIDxCYXNpY0RhdGVQaWNrZXJcbiAgICAgICAgICBvblJlc2V0PXsoKSA9PiB7XG4gICAgICAgICAgICBvblJlc2V0KCk7XG4gICAgICAgICAgICBzZXRGaWx0ZXJOdW1BY3RpdmUoZmFsc2UpO1xuICAgICAgICAgICAgdG9nZ2xlKCk7XG4gICAgICAgICAgfX1cbiAgICAgICAgICBvbkZpbHRlcj17KGZpbHRlcikgPT4ge1xuICAgICAgICAgICAgb25GaWx0ZXIoZmlsdGVyKTtcbiAgICAgICAgICAgIHNldEZpbHRlck51bUFjdGl2ZSh0cnVlKTtcbiAgICAgICAgICB9fVxuICAgICAgICAvPlxuICAgICAgPC9Cb3g+XG4gICAgPC9Cb3g+XG4gICk7XG59XG5cbkZpbHRlci5wcm9wVHlwZXMgPSB7XG4gIG9uRmlsdGVyOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgRmlsdGVyO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBzdHlsZWQgfSBmcm9tIFwiQG11aS9tYXRlcmlhbC9zdHlsZXNcIjtcbmltcG9ydCBTZWFyY2hJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL1NlYXJjaFwiO1xuaW1wb3J0IENsb3NlSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9DbG9zZVwiO1xuaW1wb3J0IElucHV0QmFzZSBmcm9tIFwiQG11aS9tYXRlcmlhbC9JbnB1dEJhc2VcIjtcbmltcG9ydCB7IEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBGSUxURVJfVkFSX09SREVSX05VTUJFUiB9IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5cbmNvbnN0IFNlYXJjaENvbnRhaW5lciA9IHN0eWxlZChcImRpdlwiKSgoKSA9PiAoe1xuICBwb3NpdGlvbjogXCJyZWxhdGl2ZVwiLFxuICBtYXJnaW5SaWdodDogXCIwXCIsXG4gIG1hcmdpbkxlZnQ6IFwiMFwiLFxuICB3aWR0aDogXCIxMDAlXCIsXG4gIGRpc3BsYXk6IFwiYmxvY2tcIlxufSkpO1xuY29uc3QgU2VhcmNoSWNvbldyYXBwZXIgPSBzdHlsZWQoXCJkaXZcIikoKCkgPT4gKHtcbiAgaGVpZ2h0OiBcIjEwMCVcIixcbiAgcG9zaXRpb246IFwiYWJzb2x1dGVcIixcbiAgZGlzcGxheTogXCJmbGV4XCIsXG4gIGFsaWduSXRlbXM6IFwiY2VudGVyXCIsXG4gIGp1c3RpZnlDb250ZW50OiBcImNlbnRlclwiXG59KSk7XG5jb25zdCBTdHlsZWRJbnB1dEJhc2UgPSBzdHlsZWQoSW5wdXRCYXNlKSgoKSA9PiAoe1xuICBjb2xvcjogXCJpbmhlcml0XCIsXG4gIGJvcmRlckJvdHRvbTogXCIxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjQyKVwiLFxuICBwYWRkaW5nTGVmdDogXCIyNXB4XCIsXG4gIHBhZGRpbmdSaWdodDogXCIyNXB4XCIsXG4gIGZvbnRTaXplOiBcIjFlbVwiXG59KSk7XG5jb25zdCBDbG9zZUljb25XcmFwcGVyID0gc3R5bGVkKENsb3NlSWNvbikoKCkgPT4gKHtcbiAgcGFkZGluZzogXCIycHhcIixcbiAgZm9udFNpemU6IFwiMS41ZW1cIixcbiAgaGVpZ2h0OiBcIjEwMCVcIixcbiAgcG9zaXRpb246IFwiYWJzb2x1dGVcIixcbiAgdG9wOiBcIjBcIixcbiAgcmlnaHQ6IFwiMFwiLFxuICBkaXNwbGF5OiBcImZsZXhcIixcbiAgYWxpZ25JdGVtczogXCJjZW50ZXJcIixcbiAganVzdGlmeUNvbnRlbnQ6IFwiY2VudGVyXCIsXG4gIGN1cnNvcjogXCJwb2ludGVyXCIsXG4gIHpJbmRleDogXCIxMDAwXCJcbn0pKTtcblxuZnVuY3Rpb24gU2VhcmNoKHsgb25TZWFyY2gsIG9uUmVzZXQgfSkge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IFtzaG93Q2xvc2UsIHNldFNob3dDbG9zZV0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtzZWFyY2hWYWx1ZSwgc2V0U2VhcmNoVmFsdWVdID0gdXNlU3RhdGUoXCJcIik7XG4gIGNvbnN0IG9uS2V5RG93biA9IChldmVudCkgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIGtleSxcbiAgICAgIG5hdGl2ZUV2ZW50OiB7XG4gICAgICAgIHRhcmdldDogeyB2YWx1ZSB9XG4gICAgICB9XG4gICAgfSA9IGV2ZW50O1xuICAgIGlmIChrZXkgPT09IFwiRW50ZXJcIikge1xuICAgICAgb25TZWFyY2goe1xuICAgICAgICB2YWx1ZSxcbiAgICAgICAgbmFtZTogXCJudW1iZXJcIixcbiAgICAgICAgdHlwZTogRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVJcbiAgICAgIH0pO1xuICAgICAgc2V0U2hvd0Nsb3NlKHRydWUpO1xuICAgIH1cbiAgfTtcbiAgY29uc3QgcmVzZXRTZWFyY2ggPSAoKSA9PiB7XG4gICAgc2V0U2VhcmNoVmFsdWUoXCJcIik7XG4gICAgc2V0U2hvd0Nsb3NlKGZhbHNlKTtcbiAgICBvblJlc2V0KCk7XG4gIH07XG4gIHJldHVybiAoXG4gICAgPEJveD5cbiAgICAgIDxTZWFyY2hDb250YWluZXI+XG4gICAgICAgIHtzaG93Q2xvc2UgJiYgKFxuICAgICAgICAgIDxDbG9zZUljb25XcmFwcGVyIG9uQ2xpY2s9e3Jlc2V0U2VhcmNofT5cbiAgICAgICAgICAgIDxDbG9zZUljb24gLz5cbiAgICAgICAgICA8L0Nsb3NlSWNvbldyYXBwZXI+XG4gICAgICAgICl9XG4gICAgICAgIDxTZWFyY2hJY29uV3JhcHBlcj5cbiAgICAgICAgICA8U2VhcmNoSWNvbiAvPlxuICAgICAgICA8L1NlYXJjaEljb25XcmFwcGVyPlxuICAgICAgICA8U3R5bGVkSW5wdXRCYXNlXG4gICAgICAgICAgcGxhY2Vob2xkZXI9e3QoXCJvcmRlcl9zZWFyY2gub3JkZXJfbnVtYmVyXCIpfVxuICAgICAgICAgIGlucHV0UHJvcHM9e3sgXCJhcmlhLWxhYmVsXCI6IFwic2VhcmNoXCIgfX1cbiAgICAgICAgICB2YWx1ZT17c2VhcmNoVmFsdWV9XG4gICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBzZXRTZWFyY2hWYWx1ZShlLnRhcmdldC52YWx1ZSl9XG4gICAgICAgICAgb25LZXlEb3duPXtvbktleURvd259XG4gICAgICAgIC8+XG4gICAgICA8L1NlYXJjaENvbnRhaW5lcj5cbiAgICA8L0JveD5cbiAgKTtcbn1cblxuU2VhcmNoLnByb3BUeXBlcyA9IHtcbiAgb25TZWFyY2g6IFByb3BUeXBlcy5mdW5jLFxuICBvblJlc2V0OiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgU2VhcmNoO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlLCB1c2VSZWYsIHVzZUVmZmVjdCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFN0YWNrIGZyb20gXCJAbXVpL21hdGVyaWFsL1N0YWNrXCI7XG5pbXBvcnQgeyBCb3gsIEJ1dHRvbiB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgSW1wb3J0RXhwb3J0SWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9JbXBvcnRFeHBvcnRcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuZnVuY3Rpb24gU29ydCh7IG9uU29ydCB9KSB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgW3Nob3dTb3J0LCBzZXRTaG93U29ydF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IHNvcnRSZWYgPSB1c2VSZWYobnVsbCk7XG4gIGNvbnN0IGhhbmRsZVNvcnRDbGlja091dHNpZGUgPSAoZXZlbnQpID0+IHtcbiAgICBpZiAoc29ydFJlZi5jdXJyZW50ICYmICFzb3J0UmVmLmN1cnJlbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkge1xuICAgICAgc2V0U2hvd1NvcnQoZmFsc2UpO1xuICAgIH1cbiAgfTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgaGFuZGxlU29ydENsaWNrT3V0c2lkZSwgZmFsc2UpO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgaGFuZGxlU29ydENsaWNrT3V0c2lkZSwgZmFsc2UpO1xuICAgIH07XG4gIH0sIFtzaG93U29ydF0pO1xuXG4gIGNvbnN0IHRvZ2dsZSA9ICgpID0+IHtcbiAgICBzZXRTaG93U29ydCghc2hvd1NvcnQpO1xuICB9O1xuICByZXR1cm4gKFxuICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuc29ydENvbnRhaW5lcn0gb25DbGljaz17dG9nZ2xlfT5cbiAgICAgIDxTdGFja1xuICAgICAgICByZWY9e3NvcnRSZWZ9XG4gICAgICAgIGFsaWduSXRlbXM9XCJjZW50ZXJcIlxuICAgICAgICBkaXJlY3Rpb249XCJyb3dcIlxuICAgICAgICBzeD17eyBwdDogMiwgcGI6IDIgfX1cbiAgICAgID5cbiAgICAgICAgPEltcG9ydEV4cG9ydEljb24gZm9udFNpemU9XCJsYXJnZVwiIGNsYXNzTmFtZT17c3R5bGVzLnNvcnRJY29ufSAvPlxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlcy5zb3J0TGFiZWx9Pnt0KFwic29ydC5zb3J0XCIpfTwvc3Bhbj5cbiAgICAgIDwvU3RhY2s+XG4gICAgICB7c2hvd1NvcnQgJiYgKFxuICAgICAgICA8Qm94IGNsYXNzTmFtZT17YCR7c3R5bGVzLnNvcnRMaXN0Q29udGFpbmVyfSAke3N0eWxlcy5jb250YWluZXJ9YH0+XG4gICAgICAgICAgPEJ1dHRvbiBjbGFzc05hbWU9e3N0eWxlcy5sYWJlbH0gb25DbGljaz17KCkgPT4gb25Tb3J0KFwiZGVzY1wiKX0+XG4gICAgICAgICAgICB7dChcInNvcnQubmV3X2ZpcnN0XCIpfVxuICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgIDxCdXR0b24gY2xhc3NOYW1lPXtzdHlsZXMubGFiZWx9IG9uQ2xpY2s9eygpID0+IG9uU29ydChcImFzY1wiKX0+XG4gICAgICAgICAgICB7dChcInNvcnQub2xkX2ZpcnN0XCIpfVxuICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICA8L0JveD5cbiAgICAgICl9XG4gICAgPC9Cb3g+XG4gICk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IFNvcnQ7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBHcmlkIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBGaWx0ZXIgZnJvbSBcIi4vRmlsdGVyXCI7XG5pbXBvcnQgU29ydCBmcm9tIFwiLi9Tb3J0XCI7XG5pbXBvcnQgU2VhcmNoIGZyb20gXCIuL1NlYXJjaFwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5mdW5jdGlvbiBGaWx0ZXJTb3J0U2VhcmNoKHsgb25GaWx0ZXIsIG9uU29ydCwgb25TZWFyY2gsIG9uUmVzZXQgfSkge1xuICByZXR1cm4gKFxuICAgIDxHcmlkIGNvbnRhaW5lciBqdXN0aWZ5PVwiZmxleC1lbmRcIiBhbGlnbkl0ZW1zPVwiY2VudGVyXCI+XG4gICAgICA8R3JpZFxuICAgICAgICBpdGVtXG4gICAgICAgIHhzPXs2fVxuICAgICAgICBjb250YWluZXJcbiAgICAgICAgcGFkZGluZz17MX1cbiAgICAgICAgZ2FwPXsyfVxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5maWx0ZXJTb3J0Q29udGFpbmVyfVxuICAgICAgICBzeD17eyBwdDogMiwgcGI6IDIgfX1cbiAgICAgID5cbiAgICAgICAgPEdyaWQgaXRlbT5cbiAgICAgICAgICA8RmlsdGVyIG9uRmlsdGVyPXtvbkZpbHRlcn0gb25SZXNldD17b25SZXNldH0gLz5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgICA8R3JpZCBpdGVtPlxuICAgICAgICAgIDxTb3J0IG9uU29ydD17b25Tb3J0fSAvPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICA8L0dyaWQ+XG4gICAgICA8R3JpZCBpdGVtIHhzPXs2fSBjb250YWluZXIganVzdGlmeUNvbnRlbnQ9XCJmbGV4LWVuZFwiPlxuICAgICAgICA8U2VhcmNoIG9uU2VhcmNoPXtvblNlYXJjaH0gb25SZXNldD17b25SZXNldH0gLz5cbiAgICAgIDwvR3JpZD5cbiAgICA8L0dyaWQ+XG4gICk7XG59XG5cbkZpbHRlclNvcnRTZWFyY2gucHJvcFR5cGVzID0ge1xuICBvbkZpbHRlcjogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uU29ydDogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uU2VhcmNoOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25SZXNldDogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEZpbHRlclNvcnRTZWFyY2g7XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE3IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBCb3gsIEJ1dHRvbiB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5cbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgRm9ybUZvb3RlciA9ICh7IHNhdmVMYWJlbCwgY2FuY2VsTGFiZWwsIG9uQ2xvc2UsIGRpc2FibGVkIH0pID0+IChcbiAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5mb290ZXJ9PlxuICAgIDxCdXR0b25cbiAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNhbmNlbEJ0bn1cbiAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgdmFyaWFudD1cIm91dGxpbmVkXCJcbiAgICAgIG9uQ2xpY2s9e29uQ2xvc2V9XG4gICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgPlxuICAgICAge2NhbmNlbExhYmVsfVxuICAgIDwvQnV0dG9uPlxuICAgIDxCdXR0b25cbiAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuc2F2ZUJ0bn1cbiAgICAgIHZhcmlhbnQ9XCJjb250YWluZWRcIlxuICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgPlxuICAgICAge3NhdmVMYWJlbH1cbiAgICA8L0J1dHRvbj5cbiAgPC9Cb3g+XG4pO1xuXG5Gb3JtRm9vdGVyLnByb3BUeXBlcyA9IHtcbiAgc2F2ZUxhYmVsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBjYW5jZWxMYWJlbDogUHJvcFR5cGVzLnN0cmluZyxcbiAgb25DbG9zZTogUHJvcFR5cGVzLmZ1bmMsXG4gIGRpc2FibGVkOiBQcm9wVHlwZXMuYm9vbFxufTtcblxuZXhwb3J0IGRlZmF1bHQgRm9ybUZvb3RlcjtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBFcnJvckljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRXJyb3JcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuZnVuY3Rpb24gRXJyb3JMYWJlbCh7IG1lc3NhZ2UsIGNvbG9yLCBjbGFzc05hbWVzLCBkYXRhVGVzdElkIH0pIHtcbiAgcmV0dXJuIChcbiAgICA8c3BhblxuICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuZXJyb3JMYWJlbH0gJHtjbGFzc05hbWVzICYmIGNsYXNzTmFtZXN9YH1cbiAgICAgIHN0eWxlPXt7IGNvbG9yIH19XG4gICAgICBkYXRhLXRlc3RpZD17ZGF0YVRlc3RJZH1cbiAgICA+XG4gICAgICA8RXJyb3JJY29uIHN4PXt7IGNvbG9yIH19IC8+XG4gICAgICB7bWVzc2FnZX1cbiAgICA8L3NwYW4+XG4gICk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IEVycm9yTGFiZWw7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBCYWNrZHJvcCwgQ2lyY3VsYXJQcm9ncmVzcyB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5cbmNvbnN0IExvYWRlciA9ICh7IG9wZW4gfSkgPT4gKFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbWFnaWMtbnVtYmVyc1xuICA8QmFja2Ryb3Agb3Blbj17b3Blbn0gc3g9eyh0aGVtZSkgPT4gKHsgekluZGV4OiB0aGVtZS56SW5kZXguZHJhd2VyICsgMSB9KX0+XG4gICAgPENpcmN1bGFyUHJvZ3Jlc3MgY29sb3I9XCJpbmhlcml0XCIgLz5cbiAgPC9CYWNrZHJvcD5cbik7XG5cbkxvYWRlci5wcm9wVHlwZXMgPSB7XG4gIG9wZW46IFByb3BUeXBlcy5ib29sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBMb2FkZXI7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2gsIHVzZVNlbGVjdG9yLCBzaGFsbG93RXF1YWwgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgSW5maW5pdGVTY3JvbGwgZnJvbSBcInJlYWN0LWluZmluaXRlLXNjcm9sbC1jb21wb25lbnRcIjtcbmltcG9ydCBGaWx0ZXJTb3J0U2VhcmNoIGZyb20gXCIuL0ZpbHRlclNvcnRTZWFyY2hcIjtcbmltcG9ydCBPcmRlcnNMaXN0IGZyb20gXCIuL09yZGVyc0xpc3RcIjtcbmltcG9ydCB7IGdldFN1bW1pdEZvcm1hdHRlZERhdGUgfSBmcm9tIFwiLi4vdXRpbHMvc3VtbWl0VXRpbHNcIjtcbmltcG9ydCB7XG4gIGdldFRpY2tldHNCeU9yZGVyLFxuICBnZXRVc2VyT3JkZXJzLFxuICByZXNldEZpbHRlcixcbiAgcmVzZXRFcnJvclxufSBmcm9tIFwiLi4vYWN0aW9uc1wiO1xuaW1wb3J0IHsgT05FX1BBR0VfTkVYVCB9IGZyb20gXCIuLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCBDdXN0b21UaGVtZSBmcm9tIFwiLi9DdXN0b21UaGVtZVwiO1xuaW1wb3J0IExvYWRlciBmcm9tIFwiLi9Mb2FkZXJcIjtcbmltcG9ydCBDdXN0b21EaWFsb2dDb250ZXh0IGZyb20gXCIuL0N1c3RvbURpYWxvZy9Db250ZXh0XCI7XG5pbXBvcnQgQ3VzdG9tRGlhbG9nIGZyb20gXCIuL0N1c3RvbURpYWxvZ1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBNeU9yZGVyc1RpY2tldHMgPSAoKSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuICBjb25zdCBbbWVzc2FnZSwgc2V0TWVzc2FnZV0gPSB1c2VTdGF0ZShcIlwiKTtcbiAgY29uc3QgW21lc3NhZ2VDYWxsYmFjaywgc2V0TWVzc2FnZUNhbGxiYWNrXSA9IHVzZVN0YXRlKG51bGwpO1xuICBjb25zdCB7XG4gICAgc3VtbWl0LFxuICAgIG1lbWJlck9yZGVycyxcbiAgICBsb2FkaW5nLFxuICAgIG9yZGVyc19jdXJyZW50X3BhZ2UsXG4gICAgb3JkZXJzX2xhc3RfcGFnZSxcbiAgICBvcmRlcnNfcGVyX3BhZ2UsXG4gICAgb3JkZXJzX3RvdGFsLFxuICAgIHRpY2tldF9wZXJfcGFnZSxcbiAgICBhcGlFcnJvclxuICB9ID0gdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSB8fCB7fSwgc2hhbGxvd0VxdWFsKTtcbiAgY29uc3QgW2ZpbHRlciwgc2V0RmlsdGVyXSA9IHVzZVN0YXRlKHt9KTtcbiAgY29uc3QgW3NvcnQsIHNldFNvcnRdID0gdXNlU3RhdGUoe30pO1xuXG4gIGNvbnN0IG9uUmVzZXQgPSAoKSA9PiB7XG4gICAgc2V0U29ydCh7fSk7XG4gICAgc2V0RmlsdGVyKHt9KTtcbiAgICBkaXNwYXRjaChyZXNldEZpbHRlcigpKTtcbiAgfTtcblxuICBjb25zdCByZXNldEFwaUVycm9yID0gKCkgPT4ge1xuICAgIGRpc3BhdGNoKHJlc2V0RXJyb3IoKSk7XG4gIH07XG5cbiAgY29uc3QgZmV0Y2hEYXRhID0gYXN5bmMgKHBhZ2UpID0+IHtcbiAgICBkaXNwYXRjaChcbiAgICAgIGdldFVzZXJPcmRlcnMoe1xuICAgICAgICBwYWdlLFxuICAgICAgICBwZXJQYWdlOiBvcmRlcnNfcGVyX3BhZ2UsXG4gICAgICAgIGZpbHRlcixcbiAgICAgICAgc29ydFxuICAgICAgfSlcbiAgICApLnRoZW4oKHBheWxvYWQpID0+IHtcbiAgICAgIGNvbnN0IHsgZGF0YSB9ID0gcGF5bG9hZC5yZXNwb25zZTtcbiAgICAgIGRhdGEuZm9yRWFjaCgob3JkZXIpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goXG4gICAgICAgICAgZ2V0VGlja2V0c0J5T3JkZXIoe1xuICAgICAgICAgICAgb3JkZXJJZDogb3JkZXIuaWQsXG4gICAgICAgICAgICBjdXJyZW50X3BhZ2U6IE9ORV9QQUdFX05FWFQsXG4gICAgICAgICAgICBwZXJQYWdlOiB0aWNrZXRfcGVyX3BhZ2VcbiAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH07XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBmZXRjaERhdGEob3JkZXJzX2N1cnJlbnRfcGFnZSk7XG4gIH0sIFtmaWx0ZXJdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChhcGlFcnJvcikge1xuICAgICAgc2V0TWVzc2FnZShhcGlFcnJvcik7XG4gICAgICBzZXRNZXNzYWdlQ2FsbGJhY2socmVzZXRBcGlFcnJvcik7XG4gICAgfVxuICB9LCBbYXBpRXJyb3JdKTtcblxuICBjb25zdCBvbkZpbHRlciA9IChmaWx0ZXIpID0+IHtcbiAgICBzZXRTb3J0KHt9KTtcbiAgICBzZXRGaWx0ZXIoZmlsdGVyKTtcbiAgfTtcbiAgY29uc3Qgb25Tb3J0ID0gKGRpcmVjdGlvbikgPT4ge1xuICAgIHNldEZpbHRlcih7fSk7XG4gICAgc2V0U29ydCh7IGRpcmVjdGlvbiwgbmFtZTogXCJjcmVhdGVkXCIgfSk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8Q3VzdG9tVGhlbWU+XG4gICAgICA8TG9hZGVyIG9wZW49e2xvYWRpbmd9IC8+XG4gICAgICA8Q3VzdG9tRGlhbG9nXG4gICAgICAgIG9wZW49eyEhbWVzc2FnZX1cbiAgICAgICAgb25DbG9zZT17KCkgPT4ge1xuICAgICAgICAgIHNldE1lc3NhZ2UobnVsbCk7XG4gICAgICAgICAgaWYgKG1lc3NhZ2VDYWxsYmFjaykgbWVzc2FnZUNhbGxiYWNrKCk7XG4gICAgICAgIH19XG4gICAgICAgIGJvZHk9e21lc3NhZ2U/LmJvZHl9XG4gICAgICAgIHRpdGxlPXttZXNzYWdlPy50aXRsZX1cbiAgICAgIC8+XG4gICAgICA8RmlsdGVyU29ydFNlYXJjaFxuICAgICAgICBvbkZpbHRlcj17b25GaWx0ZXJ9XG4gICAgICAgIG9uU29ydD17b25Tb3J0fVxuICAgICAgICBvblNlYXJjaD17b25GaWx0ZXJ9XG4gICAgICAgIG9uUmVzZXQ9e29uUmVzZXR9XG4gICAgICAvPlxuICAgICAgPEJveFxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy53aWRnZXRIZWFkZXJ9XG4gICAgICAgIHN4PXt7IHBhZGRpbmc6IHsgeHM6IDIsIG1kOiAwLCBsZzogMCB9IH19XG4gICAgICAgIGRhdGEtdGVzdGlkPVwibXktb3JkZXJzLXRpY2tldC1oZWFkZXJcIlxuICAgICAgPlxuICAgICAgICA8aDIgY2xhc3NOYW1lPXtzdHlsZXMuc3VtbWl0VGl0bGVEYXRlfT57c3VtbWl0Py5uYW1lfTwvaDI+XG4gICAgICAgIDxoMiBjbGFzc05hbWU9e3N0eWxlcy5zdW1taXRUaXRsZURhdGV9PlxuICAgICAgICAgIHtnZXRTdW1taXRGb3JtYXR0ZWREYXRlKHN1bW1pdCl9XG4gICAgICAgIDwvaDI+XG4gICAgICA8L0JveD5cbiAgICAgIDxDdXN0b21EaWFsb2dDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXsoc2V0TWVzc2FnZSwgc2V0TWVzc2FnZUNhbGxiYWNrKX0+XG4gICAgICAgIHttZW1iZXJPcmRlcnM/Lmxlbmd0aCA/IChcbiAgICAgICAgICA8SW5maW5pdGVTY3JvbGxcbiAgICAgICAgICAgIGRhdGFMZW5ndGg9e29yZGVyc190b3RhbH1cbiAgICAgICAgICAgIG5leHQ9eygpID0+IGZldGNoRGF0YShvcmRlcnNfY3VycmVudF9wYWdlICsgT05FX1BBR0VfTkVYVCl9XG4gICAgICAgICAgICBoYXNNb3JlPXtvcmRlcnNfY3VycmVudF9wYWdlIDwgb3JkZXJzX2xhc3RfcGFnZX1cbiAgICAgICAgICAgIHNjcm9sbFRocmVzaG9sZD17MX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7bWVtYmVyT3JkZXJzPy5tYXAoKG9yZGVyKSA9PiAoXG4gICAgICAgICAgICAgIDxPcmRlcnNMaXN0XG4gICAgICAgICAgICAgICAga2V5PXtvcmRlci5udW1iZXIgKyBvcmRlci5pZH1cbiAgICAgICAgICAgICAgICBvcmRlcj17b3JkZXJ9XG4gICAgICAgICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApKX1cbiAgICAgICAgICA8L0luZmluaXRlU2Nyb2xsPlxuICAgICAgICApIDogKFxuICAgICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMubm9PcmRlcnNGb3VuZH0+e3QoXCJvcmRlcnMubm9fb3JkZXJzXCIpfTwvQm94PlxuICAgICAgICApfVxuICAgICAgPC9DdXN0b21EaWFsb2dDb250ZXh0LlByb3ZpZGVyPlxuICAgIDwvQ3VzdG9tVGhlbWU+XG4gICk7XG59O1xuZXhwb3J0IGRlZmF1bHQgTXlPcmRlcnNUaWNrZXRzO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgR3JpZCwgQm94IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBEaXZpZGVyIGZyb20gXCJAbXVpL21hdGVyaWFsL0RpdmlkZXJcIjtcbmltcG9ydCB7IGNhbGN1bGF0ZU9yZGVyVG90YWxzLCBmb3JtYXRDdXJyZW5jeSB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBPcmRlclN1bW1hcnlUYWJsZSA9ICh7IG9yZGVyLCBzdW1taXQgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IHsgZGlzY291bnRUb3RhbCwgcmVmdW5kVG90YWwsIHRheGVzVG90YWwsIGFtb3VudFRvdGFsLCB0aWNrZXRTdW1tYXJ5IH0gPVxuICAgIGNhbGN1bGF0ZU9yZGVyVG90YWxzKHsgb3JkZXIsIHN1bW1pdCB9KTtcbiAgY29uc3QgaHVuZHJlZCA9IDEwMDtcblxuICByZXR1cm4gKFxuICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJTdW1tYXJ5VGFibGV9PlxuICAgICAge3RpY2tldFN1bW1hcnk/Lmxlbmd0aCA+IDAgJiYgKFxuICAgICAgICA8PlxuICAgICAgICAgIHt0aWNrZXRTdW1tYXJ5Lm1hcCgodGlja2V0KSA9PiB7XG4gICAgICAgICAgICBjb25zdCB0aWNrZXRUb3RhbCA9XG4gICAgICAgICAgICAgICh0aWNrZXQucXR5ICogKHRpY2tldC50aWNrZXRfdHlwZS5jb3N0ICogaHVuZHJlZCkpIC8gaHVuZHJlZDtcblxuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgPEdyaWRcbiAgICAgICAgICAgICAgICBjb250YWluZXJcbiAgICAgICAgICAgICAgICBrZXk9e2B0aXhvcmRlcl8ke3RpY2tldC50aWNrZXRfdHlwZS5jcmVhdGVkfWB9XG4gICAgICAgICAgICAgICAgc3g9e3sgcGI6IDEgfX1cbiAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD1cIm9yZGVyLXN1bW1hcnktaXRlbWl6ZWRcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPEdyaWQgeHM9ezh9IGl0ZW0+XG4gICAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgeHt0aWNrZXQucXR5fSB7dGlja2V0LnRpY2tldF90eXBlLm5hbWV9XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgICAgICAgIDxHcmlkIHhzPXs0fSBpdGVtIGFsaWduPVwicmlnaHRcIj5cbiAgICAgICAgICAgICAgICAgIHtmb3JtYXRDdXJyZW5jeSh0aWNrZXRUb3RhbCwgeyBjdXJyZW5jeTogb3JkZXIuY3VycmVuY3kgfSl9XG4gICAgICAgICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0pfVxuICAgICAgICA8Lz5cbiAgICAgICl9XG4gICAgICB7b3JkZXIuZGlzY291bnRfYW1vdW50ID4gMCAmJiAoXG4gICAgICAgIDxHcmlkIGNvbnRhaW5lciBzeD17eyBwYjogMSB9fT5cbiAgICAgICAgICA8R3JpZCB4cz17OH0gaXRlbT5cbiAgICAgICAgICAgIHt0KFwib3JkZXJfc3VtbWFyeS5kaXNjb3VudHNcIil9XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgIDxHcmlkIHhzPXs0fSBpdGVtIGFsaWduPVwicmlnaHRcIj5cbiAgICAgICAgICAgIC17ZGlzY291bnRUb3RhbH1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICl9XG4gICAgICB7b3JkZXIudGF4ZXNfYW1vdW50ID4gMCAmJiAoXG4gICAgICAgIDxHcmlkIGNvbnRhaW5lciBzeD17eyBwYjogMSB9fT5cbiAgICAgICAgICA8R3JpZCB4cz17OH0gaXRlbT5cbiAgICAgICAgICAgIHt0KFwib3JkZXJfc3VtbWFyeS50YXhlc1wiKX1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgPEdyaWQgeHM9ezR9IGl0ZW0gYWxpZ249XCJyaWdodFwiPlxuICAgICAgICAgICAge3RheGVzVG90YWx9XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICApfVxuICAgICAge29yZGVyLnN0YXR1cyA9PT0gXCJQYWlkXCIgJiYgKFxuICAgICAgICA8R3JpZCBjb250YWluZXIgc3g9e3sgcGI6IDEgfX0+XG4gICAgICAgICAgPEdyaWQgeHM9ezh9IGl0ZW0+XG4gICAgICAgICAgICB7dChcIm9yZGVyX3N1bW1hcnkuYW1vdW50X3BhaWRcIil9XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgIDxHcmlkIHhzPXs0fSBpdGVtIGFsaWduPVwicmlnaHRcIj5cbiAgICAgICAgICAgIC17YW1vdW50VG90YWx9XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICApfVxuICAgICAge3JlZnVuZFRvdGFsID4gMCAmJiAoXG4gICAgICAgIDxHcmlkIGNvbnRhaW5lciBzeD17eyBwYjogMSB9fT5cbiAgICAgICAgICA8R3JpZCB4cz17OH0gaXRlbT5cbiAgICAgICAgICAgIHt0KFwib3JkZXJfc3VtbWFyeS5yZWZ1bmRzXCIpfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICA8R3JpZCB4cz17NH0gaXRlbSBhbGlnbj1cInJpZ2h0XCI+XG4gICAgICAgICAgICB7cmVmdW5kVG90YWx9XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICApfVxuICAgICAgPERpdmlkZXIgLz5cbiAgICAgIDxHcmlkIGNvbnRhaW5lciBzeD17eyBwdDogMSwgcGI6IDEgfX0+XG4gICAgICAgIDxHcmlkIHhzPXs4fSBpdGVtPlxuICAgICAgICAgIHt0KFwib3JkZXJfc3VtbWFyeS50b3RhbFwiKX1cbiAgICAgICAgPC9HcmlkPlxuICAgICAgICA8R3JpZCB4cz17NH0gaXRlbSBhbGlnbj1cInJpZ2h0XCI+XG4gICAgICAgICAge29yZGVyLnN0YXR1cyA9PT0gXCJQYWlkXCIgPyBcIiQwLjAwXCIgOiBhbW91bnRUb3RhbH1cbiAgICAgICAgPC9HcmlkPlxuICAgICAgPC9HcmlkPlxuICAgIDwvQm94PlxuICApO1xufTtcblxuT3JkZXJTdW1tYXJ5VGFibGUucHJvcFR5cGVzID0ge1xuICBvcmRlcjogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBjdXJyZW5jeTogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBkaXNjb3VudF9hbW91bnQ6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgdGF4ZXNfYW1vdW50OiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIHN0YXR1czogUHJvcFR5cGVzLnN0cmluZ1xuICB9KSxcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0XG59O1xuXG5leHBvcnQgZGVmYXVsdCBPcmRlclN1bW1hcnlUYWJsZTtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEJ1dHRvbiB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VOb3cgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcbmltcG9ydCB7IHRpY2tldHNSZWZ1bmRhYmxlIH0gZnJvbSBcIi4uLy4uL3V0aWxzL3RpY2tldFV0aWxzXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IFJlZnVuZEVtYWlsU3VwcG9ydCA9ICh7XG4gIHN1bW1pdCxcbiAgdGlja2V0cyxcbiAgcmVmdW5kUmVxdWVzdGVkLFxuICB0aWNrZXRzVG9SZWZ1bmQsXG4gIHN1Ym1pdFJlcXVlc3QsXG4gIG9uUmVmdW5kQ2xpY2ssXG4gIG9uUmVmdW5kRGV0YWlsQ2xpY2ssXG4gIG9uRW1haWxTdXBwb3J0Q2xpY2tcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBub3cgPSB1c2VOb3coKTtcbiAgY29uc3QgaXNJblJlZnVuZGFibGVQZXJpb2QgPVxuICAgIHN1bW1pdC5yZWdpc3RyYXRpb25fYWxsb3dlZF9yZWZ1bmRfcmVxdWVzdF90aWxsX2RhdGUgPiBub3c7XG4gIGNvbnN0IGF0TGVhc3RPbmVSZWZ1bmRhYmxlVGlja2V0ID0gdGlja2V0c1JlZnVuZGFibGUodGlja2V0cyk7XG4gIGNvbnN0IGlzUmVmdW5kYWJsZSA9ICEhKGlzSW5SZWZ1bmRhYmxlUGVyaW9kICYmIGF0TGVhc3RPbmVSZWZ1bmRhYmxlVGlja2V0KTtcbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAge2lzUmVmdW5kYWJsZSAmJiAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBhcmlhLWxhYmVsPVwicmVmdW5kIHJlcXVlc3QgYnV0dG9uXCJcbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5vcmRlclN1bW1hcnlCdXR0b259ICR7XG4gICAgICAgICAgICByZWZ1bmRSZXF1ZXN0ZWQgJiYgdGlja2V0c1RvUmVmdW5kLmxlbmd0aCA9PT0gMCAmJiAhc3VibWl0UmVxdWVzdFxuICAgICAgICAgICAgICA/IHN0eWxlcy5yZWZ1bmREaXNhYmxlZFxuICAgICAgICAgICAgICA6IFwiXCJcbiAgICAgICAgICB9YH1cbiAgICAgICAgICB2YXJpYW50PVwib3V0bGluZWRcIlxuICAgICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgb25DbGljaz17b25SZWZ1bmRDbGlja31cbiAgICAgICAgICBkaXNhYmxlZD17XG4gICAgICAgICAgICByZWZ1bmRSZXF1ZXN0ZWQgJiYgdGlja2V0c1RvUmVmdW5kLmxlbmd0aCA9PT0gMCAmJiAhc3VibWl0UmVxdWVzdFxuICAgICAgICAgIH1cbiAgICAgICAgPlxuICAgICAgICAgIHt0KFwib3JkZXJfc3VtbWFyeS5yZXF1ZXN0X3JlZnVuZFwiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICApfVxuICAgICAgPEJ1dHRvblxuICAgICAgICBhcmlhLWxhYmVsPVwicmVmdW5kIGRldGFpbHMgYnV0dG9uXCJcbiAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyU3VtbWFyeUJ1dHRvbn1cbiAgICAgICAgdmFyaWFudD1cIm91dGxpbmVkXCJcbiAgICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgICAgb25DbGljaz17b25SZWZ1bmREZXRhaWxDbGlja31cbiAgICAgID5cbiAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5LnJlZnVuZF9kZXRhaWxzXCIpfVxuICAgICAgPC9CdXR0b24+XG4gICAgICA8QnV0dG9uXG4gICAgICAgIGFyaWEtbGFiZWw9XCJlbWFpbCBzdXBwb3J0IGJ1dHRvblwiXG4gICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5vcmRlclN1bW1hcnlCdXR0b259XG4gICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lZFwiXG4gICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgIG9uQ2xpY2s9e29uRW1haWxTdXBwb3J0Q2xpY2t9XG4gICAgICA+XG4gICAgICAgIHt0KFwib3JkZXJfaW5mby5lbWFpbF9zdXBwb3J0XCIpfVxuICAgICAgPC9CdXR0b24+XG4gICAgPC8+XG4gICk7XG59O1xuXG5SZWZ1bmRFbWFpbFN1cHBvcnQucHJvcFR5cGVzID0ge1xuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIHRpY2tldHM6IFByb3BUeXBlcy5hcnJheU9mKE9iamVjdCksXG4gIG9uUmVmdW5kQ2xpY2s6IFByb3BUeXBlcy5mdW5jLFxuICBvblJlZnVuZERldGFpbENsaWNrOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25FbWFpbFN1cHBvcnRDbGljazogUHJvcFR5cGVzLmZ1bmMsXG4gIHJlZnVuZFJlcXVlc3RlZDogUHJvcFR5cGVzLmJvb2wsXG4gIHRpY2tldHNUb1JlZnVuZDogUHJvcFR5cGVzLmFycmF5T2YoT2JqZWN0KSxcbiAgc3VibWl0UmVxdWVzdDogUHJvcFR5cGVzLmJvb2xcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFJlZnVuZEVtYWlsU3VwcG9ydDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IEdyaWQsIEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgT3JkZXJTdW1tYXJ5VGFibGUgZnJvbSBcIi4vT3JkZXJTdW1tYXJ5VGFibGVcIjtcbmltcG9ydCBSZWZ1bmRFbWFpbFN1cHBvcnQgZnJvbSBcIi4vUmVmdW5kRW1haWxTdXBwb3J0XCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IE9yZGVyU3VtbWFyeSA9ICh7XG4gIG9yZGVyLFxuICBzdW1taXQsXG4gIG9uUmVmdW5kQ2xpY2ssXG4gIHJlZnVuZFJlcXVlc3RlZCxcbiAgdGlja2V0c1RvUmVmdW5kLFxuICBzdWJtaXRSZXF1ZXN0LFxuICBvblJlZnVuZERldGFpbENsaWNrXG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPEJveFxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5vcmRlclN1bW1hcnlXcmFwcGVyfVxuICAgICAgICBzeD17eyBwdDogNCwgcHg6IDQgfX1cbiAgICAgICAgZGF0YS10ZXN0aWQ9XCJvcmRlci1zdW1tYXJ5LWNvbnRhaW5lclwiXG4gICAgICA+XG4gICAgICAgIDxoMz57dChcIm9yZGVyX3N1bW1hcnkub3JkZXJfc3VtbWFyeVwiKX08L2gzPlxuICAgICAgICA8R3JpZCBjb250YWluZXI+XG4gICAgICAgICAgPEdyaWRcbiAgICAgICAgICAgIHhzPXsxMn1cbiAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyU3VtbWFyeVB1cmNoYXNlZEluZm99XG4gICAgICAgICAgICBzeD17eyBwYjogMyB9fVxuICAgICAgICAgICAgaXRlbVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxPcmRlclN1bW1hcnlUYWJsZSBvcmRlcj17b3JkZXJ9IHN1bW1pdD17c3VtbWl0fSAvPlxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgPC9Cb3g+XG4gICAgICA8Qm94IHhzPXsxMn0gc3g9e3sgcGI6IDMgfX0+XG4gICAgICAgIDxSZWZ1bmRFbWFpbFN1cHBvcnRcbiAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICByZWZ1bmRSZXF1ZXN0ZWQ9e3JlZnVuZFJlcXVlc3RlZH1cbiAgICAgICAgICB0aWNrZXRzPXtvcmRlcj8ubWVtYmVyVGlja2V0c31cbiAgICAgICAgICB0aWNrZXRzVG9SZWZ1bmQ9e3RpY2tldHNUb1JlZnVuZH1cbiAgICAgICAgICBzdWJtaXRSZXF1ZXN0PXtzdWJtaXRSZXF1ZXN0fVxuICAgICAgICAgIG9uUmVmdW5kQ2xpY2s9e29uUmVmdW5kQ2xpY2t9XG4gICAgICAgICAgb25SZWZ1bmREZXRhaWxDbGljaz17b25SZWZ1bmREZXRhaWxDbGlja31cbiAgICAgICAgICBvbkVtYWlsU3VwcG9ydENsaWNrPXsoKSA9PiB7fX1cbiAgICAgICAgLz5cbiAgICAgIDwvQm94PlxuICAgIDwvPlxuICApO1xufTtcbk9yZGVyU3VtbWFyeS5wcm9wVHlwZXMgPSB7XG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdCxcbiAgb3JkZXI6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgbWVtYmVyVGlja2V0czogUHJvcFR5cGVzLmFycmF5T2YoT2JqZWN0KVxuICB9KSxcbiAgb25SZWZ1bmRDbGljazogUHJvcFR5cGVzLmZ1bmMsXG4gIHJlZnVuZFJlcXVlc3RlZDogUHJvcFR5cGVzLmJvb2wsXG4gIHRpY2tldHNUb1JlZnVuZDogUHJvcFR5cGVzLmFycmF5T2YoT2JqZWN0KSxcbiAgc3VibWl0UmVxdWVzdDogUHJvcFR5cGVzLmJvb2xcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE9yZGVyU3VtbWFyeTtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmZ1bmN0aW9uIEF0dGVuZGVlU3RhdHVzKHsgdGlja2V0IH0pIHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICByZXR1cm4gdGlja2V0Lm93bmVyPy5lbWFpbCA/IChcbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmxhYmVsfT5cbiAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5hc3NpZ25lZF90b1wiKX06XG4gICAgICA8c3BhblxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRPd25lckVtYWlsfVxuICAgICAgICBkYXRhLXRlc3RpZD1cImF0dGVuZGVlLXN0YXR1cy1hc3NpZ25lZFwiXG4gICAgICA+XG4gICAgICAgIHtcIiBcIn1cbiAgICAgICAge3RpY2tldC5vd25lcj8uZW1haWx9XG4gICAgICA8L3NwYW4+XG4gICAgPC9Cb3g+XG4gICkgOiAoXG4gICAgdGlja2V0LmlzX2FjdGl2ZSAmJiAoXG4gICAgICA8c3BhblxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRPd25lckVtYWlsfVxuICAgICAgICBkYXRhLXRlc3RpZD1cImF0dGVuZGVlLXN0YXR1cy11bmFzc2lnbmVkXCJcbiAgICAgID5cbiAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLmF0dGVuZGVlX3N0YXR1c191bmFzc2lnbmVkXCIpfVxuICAgICAgPC9zcGFuPlxuICAgIClcbiAgKTtcbn1cblxuQXR0ZW5kZWVTdGF0dXMucHJvcFR5cGVzID0ge1xuICB0aWNrZXQ6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgb3duZXI6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgICBlbWFpbDogUHJvcFR5cGVzLnN0cmluZ1xuICAgIH0pLFxuICAgIGlzX2FjdGl2ZTogUHJvcFR5cGVzLmJvb2xcbiAgfSlcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEF0dGVuZGVlU3RhdHVzO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IE9yZGVyTGlzdFRpY2tldHMgZnJvbSBcIi4vT3JkZXJMaXN0VGlja2V0c1wiO1xuaW1wb3J0IHsgUEFHSU5BVElPTl9ESVNQTEFZX0NPVU5UIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2NvbnN0YW50c1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBPcmRlckxpc3RJdGVtID0gKHtcbiAgc3VtbWl0LFxuICBvcmRlcixcbiAgb25QYWdpbmF0ZUNsaWNrLFxuICByZWZ1bmRSZXF1ZXN0ZWQsXG4gIHRpY2tldHNUb1JlZnVuZCxcbiAgc2VsZWN0VG9SZWZ1bmRcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBbaXRlbXNUb0Rpc3BsYXksIHNldEl0ZW1zVG9EaXNwbGF5XSA9IHVzZVN0YXRlKFxuICAgIFBBR0lOQVRJT05fRElTUExBWV9DT1VOVFxuICApO1xuXG4gIGlmICghb3JkZXI/Lm1lbWJlclRpY2tldHM/Lmxlbmd0aCkgcmV0dXJuIG51bGw7XG4gIGNvbnN0IHNsaWNlZFRpY2tldHMgPSBvcmRlcj8ubWVtYmVyVGlja2V0cz8uc2xpY2UoMCwgaXRlbXNUb0Rpc3BsYXkpO1xuXG4gIGNvbnN0IG9uVmlld01vcmUgPSAoKSA9PiB7XG4gICAgaWYgKG9yZGVyPy50aWNrZXRzX3RvdGFsID4gb3JkZXI/Lm1lbWJlclRpY2tldHMubGVuZ3RoKSB7XG4gICAgICBvblBhZ2luYXRlQ2xpY2soKTtcbiAgICB9XG4gICAgc2V0SXRlbXNUb0Rpc3BsYXkoaXRlbXNUb0Rpc3BsYXkgKyBQQUdJTkFUSU9OX0RJU1BMQVlfQ09VTlQpO1xuICB9O1xuXG4gIGNvbnN0IG9uVmlld0xlc3MgPSAoKSA9PiBzZXRJdGVtc1RvRGlzcGxheShQQUdJTkFUSU9OX0RJU1BMQVlfQ09VTlQpO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIHtzbGljZWRUaWNrZXRzPy5tYXAoKHRpY2tldCkgPT4gKFxuICAgICAgICA8T3JkZXJMaXN0VGlja2V0c1xuICAgICAgICAgIGtleT17dGlja2V0LmlkfVxuICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgIHJlZnVuZFJlcXVlc3RlZD17cmVmdW5kUmVxdWVzdGVkfVxuICAgICAgICAgIGlzU2VsZWN0ZWRUb1JlZnVuZD17ISF0aWNrZXRzVG9SZWZ1bmQuZmluZCgodCkgPT4gdC5pZCA9PT0gdGlja2V0LmlkKX1cbiAgICAgICAgICBzZWxlY3RUb1JlZnVuZD17c2VsZWN0VG9SZWZ1bmR9XG4gICAgICAgIC8+XG4gICAgICApKX1cbiAgICAgIHtvcmRlcj8udGlja2V0c190b3RhbCA+IGl0ZW1zVG9EaXNwbGF5ID8gKFxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgYXJpYS1sYWJlbD1cInZpZXcgbW9yZSBidXR0b25cIlxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnZpZXdNb3JlQnV0dG9ufVxuICAgICAgICAgIG9uQ2xpY2s9e29uVmlld01vcmV9XG4gICAgICAgID5cbiAgICAgICAgICB7dChcIm9yZGVycy10aWNrZXRzLnZpZXdfbW9yZVwiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICApIDogKFxuICAgICAgICBcIlwiXG4gICAgICApfVxuICAgICAge3NsaWNlZFRpY2tldHM/Lmxlbmd0aCA+IFBBR0lOQVRJT05fRElTUExBWV9DT1VOVCAmJlxuICAgICAgc2xpY2VkVGlja2V0cz8ubGVuZ3RoID09PSBvcmRlcj8udGlja2V0c190b3RhbCA/IChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJ2aWV3IGxlc3MgYnV0dG9uXCJcbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy52aWV3TW9yZUJ1dHRvbn1cbiAgICAgICAgICBvbkNsaWNrPXtvblZpZXdMZXNzfVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJvcmRlcnMtdGlja2V0cy52aWV3X2xlc3NcIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgKSA6IChcbiAgICAgICAgXCJcIlxuICAgICAgKX1cbiAgICA8Lz5cbiAgKTtcbn07XG5cbk9yZGVyTGlzdEl0ZW0ucHJvcFR5cGVzID0ge1xuICBvcmRlcjogUHJvcFR5cGVzLm9iamVjdCxcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0XG59O1xuXG5leHBvcnQgZGVmYXVsdCBPcmRlckxpc3RJdGVtO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBHcmlkLCBCdXR0b24gfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IFN0YWNrIGZyb20gXCJAbXVpL21hdGVyaWFsL1N0YWNrXCI7XG5pbXBvcnQgQ2hlY2tib3ggZnJvbSBcIkBtdWkvbWF0ZXJpYWwvQ2hlY2tib3hcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgeyByZXNldFRpY2tldCB9IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5pbXBvcnQgVGlja2V0U3RhdHVzIGZyb20gXCIuLi9UaWNrZXRTdGF0dXNcIjtcbmltcG9ydCB7IGdldFN1bW1pdFJlYXNzaWduRGF0ZSB9IGZyb20gXCIuLi8uLi91dGlscy9zdW1taXRVdGlsc1wiO1xuaW1wb3J0IHsgdXNlTm93IH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XG5pbXBvcnQgQXR0ZW5kZWVTdGF0dXMgZnJvbSBcIi4vQXR0ZW5kZWVTdGF0dXNcIjtcbmltcG9ydCBUaWNrZXREZXRhaWwgZnJvbSBcIi4uL1RpY2tldERldGFpbFwiO1xuaW1wb3J0IHsgdXNlVGlja2V0RGV0YWlscyB9IGZyb20gXCIuLi8uLi9ob29rcy91c2VUaWNrZXREZXRhaWxzXCI7XG5pbXBvcnQgVGlja2V0UmVhc3NpZ24gZnJvbSBcIi4uL1RpY2tldFJlYXNzaWduXCI7XG5pbXBvcnQgQ29weVRleHQgZnJvbSBcIi4uL0NvcHlUZXh0XCI7XG5cbmltcG9ydCBUaWNrZXRBc3NpZ24gZnJvbSBcIi4uL1RpY2tldEFzc2lnblwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBtb2RhbFZpZXdzID0ge1xuICBkZXRhaWw6IFwiREVUQUlMXCIsXG4gIHJlYXNzaWduOiBcIlJFQVNTSUdOXCIsXG4gIGFzc2lnbjogXCJBU1NJR05cIlxufTtcblxuY29uc3QgVGlja2V0Q1RBcyA9ICh7XG4gIGlzSW5jb21wbGV0ZSxcbiAgaXNVbmFzc2lnbmVkLFxuICBpc1JlYXNzaWduYWJsZSxcbiAgb25PcGVuQ2xpY2tcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuXG4gIGlmIChpc1VuYXNzaWduZWQpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPEJ1dHRvblxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5hc3NpZ25UaWNrZXRCdXR0b259XG4gICAgICAgIG9uQ2xpY2s9eygpID0+IG9uT3BlbkNsaWNrKG1vZGFsVmlld3MuYXNzaWduKX1cbiAgICAgID5cbiAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLmFzc2lnbl90aWNrZXRcIil9XG4gICAgICA8L0J1dHRvbj5cbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8U3RhY2tcbiAgICAgIHN4PXt7XG4gICAgICAgIGp1c3RpZnlDb250ZW50OiBcInNwYWNlLWJldHdlZW5cIixcbiAgICAgICAgd2lkdGg6IFwiMTAwJVwiXG4gICAgICB9fVxuICAgICAgYWxpZ25JdGVtcz1cImNlbnRlclwiXG4gICAgICBkaXJlY3Rpb249XCJyb3dcIlxuICAgID5cbiAgICAgIDxCdXR0b25cbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudmlld0ZpbmlzaFRpY2tldEJ1dHRvbn1cbiAgICAgICAgb25DbGljaz17KCkgPT4gb25PcGVuQ2xpY2sobW9kYWxWaWV3cy5kZXRhaWwpfVxuICAgICAgPlxuICAgICAgICB7aXNJbmNvbXBsZXRlXG4gICAgICAgICAgPyB0KFwidGlja2V0X3N0YXR1cy5maW5pc2hfdGlja2V0XCIpXG4gICAgICAgICAgOiB0KFwidGlja2V0X3N0YXR1cy52aWV3X3RpY2tldFwiKX1cbiAgICAgIDwvQnV0dG9uPlxuICAgICAge2lzUmVhc3NpZ25hYmxlICYmIChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJyZWFzc2lnbiB0aWNrZXQgYnV0dG9uXCJcbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5yZWFzc2lnbkJ1dHRvbn1cbiAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBvbk9wZW5DbGljayhtb2RhbFZpZXdzLnJlYXNzaWduKX1cbiAgICAgICAgPlxuICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5yZWFzc2lnbl90aWNrZXRcIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgKX1cbiAgICA8L1N0YWNrPlxuICApO1xufTtcblxuVGlja2V0Q1RBcy5wcm9wVHlwZXMgPSB7XG4gIGlzSW5jb21wbGV0ZTogUHJvcFR5cGVzLmJvb2wuaXNSZXF1aXJlZCxcbiAgaXNVbmFzc2lnbmVkOiBQcm9wVHlwZXMuYm9vbC5pc1JlcXVpcmVkLFxuICBpc1JlYXNzaWduYWJsZTogUHJvcFR5cGVzLmJvb2wuaXNSZXF1aXJlZCxcbiAgb25PcGVuQ2xpY2s6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWRcbn07XG5cbmNvbnN0IE9yZGVyTGlzdFRpY2tldHMgPSAoe1xuICB0aWNrZXQsXG4gIHN1bW1pdCxcbiAgcmVmdW5kUmVxdWVzdGVkLFxuICBpc1NlbGVjdGVkVG9SZWZ1bmQsXG4gIHNlbGVjdFRvUmVmdW5kXG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuICBjb25zdCBub3cgPSB1c2VOb3coKTtcbiAgY29uc3QgeyBpc1JlZnVuZGFibGUsIGlzVW5hc3NpZ25lZCwgaXNJbmNvbXBsZXRlLCBjYW5SZWFzc2lnbiB9ID1cbiAgICB1c2VUaWNrZXREZXRhaWxzKHRpY2tldCk7XG4gIGNvbnN0IFttb2RhbE9wZW4sIHNldE1vZGFsT3Blbl0gPSB1c2VTdGF0ZShudWxsKTtcbiAgY29uc3QgcmVhc3NpZ25EYXRlID0gZ2V0U3VtbWl0UmVhc3NpZ25EYXRlKHN1bW1pdCk7XG4gIGNvbnN0IGlzUmVhc3NpZ25hYmxlID0gcmVhc3NpZ25EYXRlID4gbm93O1xuXG4gIGNvbnN0IGhhbmRsZUNsb3NlTW9kYWwgPSAoKSA9PiB7XG4gICAgc2V0TW9kYWxPcGVuKG51bGwpO1xuICAgIGRpc3BhdGNoKHJlc2V0VGlja2V0KCkpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZU9wZW5Nb2RhbCA9ICh2aWV3KSA9PiB7XG4gICAgc2V0TW9kYWxPcGVuKHZpZXcpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPEdyaWRcbiAgICAgIGtleT17dGlja2V0LmlkfVxuICAgICAgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJXcmFwcGVyfVxuICAgICAgY29udGFpbmVyXG4gICAgICBkYXRhLXRlc3RpZD1cIm9yZGVyLWxpc3QtdGlja2V0XCJcbiAgICA+XG4gICAgICA8R3JpZFxuICAgICAgICB4cz17OH1cbiAgICAgICAgcGFkZGluZz17Mn1cbiAgICAgICAgaXRlbVxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRUaWNrZXRUeXBlfVxuICAgICAgICBqdXN0aWZ5PVwic3BhY2UtYmV0d2VlblwiXG4gICAgICA+XG4gICAgICAgIDxTdGFja1xuICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogXCJmbGV4LXN0YXJ0XCJcbiAgICAgICAgICB9fVxuICAgICAgICAgIGRpcmVjdGlvbj1cInJvd1wiXG4gICAgICAgID5cbiAgICAgICAgICB7cmVmdW5kUmVxdWVzdGVkICYmIGlzUmVmdW5kYWJsZSAmJiAoXG4gICAgICAgICAgICA8Q2hlY2tib3hcbiAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cInJlZnVuZCB0aWNrZXQgY2hlY2tib3hcIlxuICAgICAgICAgICAgICByb2xlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICBjaGVja2VkPXtpc1NlbGVjdGVkVG9SZWZ1bmR9XG4gICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gc2VsZWN0VG9SZWZ1bmQoZSwgdGlja2V0KX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKX1cbiAgICAgICAgICA8aDQ+e3RpY2tldC50aWNrZXRfdHlwZT8ubmFtZX08L2g0PlxuICAgICAgICA8L1N0YWNrPlxuICAgICAgPC9HcmlkPlxuICAgICAgPEdyaWQgeHM9ezR9IHBhZGRpbmc9ezJ9IGl0ZW0+XG4gICAgICAgIHsvKiBUbyBhZGQgYmFkZ2UgZmVhdHVyZXMgKi99XG4gICAgICA8L0dyaWQ+XG4gICAgICA8R3JpZCB4cz17MTJ9IHN4PXt7IHB4OiAyLCBwYjogMiB9fSBpdGVtPlxuICAgICAgICA8QXR0ZW5kZWVTdGF0dXMgdGlja2V0PXt0aWNrZXR9IC8+XG4gICAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldE5vfT5cbiAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMudGlja2V0X25vXCIpfTp7XCIgXCJ9XG4gICAgICAgICAgPENvcHlUZXh0XG4gICAgICAgICAgICB0ZXh0PXt0aWNrZXQubnVtYmVyfVxuICAgICAgICAgICAgdG9vbHRpcFRleHQ9e3QoXCJ0aWNrZXRfc3RhdHVzLmNvcHlfdGlja2V0X251bWJlclwiKX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L0dyaWQ+XG4gICAgICA8R3JpZCBjb250YWluZXI+XG4gICAgICAgIDxHcmlkIGNvbnRhaW5lciBkaXJlY3Rpb249XCJyb3dcIiB4cz17MTJ9IGxnPXs2fSBhbGlnbkl0ZW1zPVwiY2VudGVyXCIgaXRlbT5cbiAgICAgICAgICA8VGlja2V0U3RhdHVzIHRpY2tldD17dGlja2V0fSAvPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDxHcmlkIHBhZGRpbmc9ezJ9IHhzPXsxMn0gbGc9ezZ9IGNvbnRhaW5lciBpdGVtPlxuICAgICAgICAgIDxHcmlkXG4gICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICBjb250YWluZXJcbiAgICAgICAgICAgIGFsaWduPVwiY2VudGVyXCJcbiAgICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICAgIGp1c3RpZnlDb250ZW50OiBcInNwYWNlLWJldHdlZW5cIlxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldEFjdGlvbkJ1dHRvbnN9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge3RpY2tldC5pc19hY3RpdmUgJiYgKFxuICAgICAgICAgICAgICA8VGlja2V0Q1RBc1xuICAgICAgICAgICAgICAgIGlzVW5hc3NpZ25lZD17aXNVbmFzc2lnbmVkfVxuICAgICAgICAgICAgICAgIGlzSW5jb21wbGV0ZT17aXNJbmNvbXBsZXRlfVxuICAgICAgICAgICAgICAgIGlzUmVhc3NpZ25hYmxlPXtpc1JlYXNzaWduYWJsZSAmJiBjYW5SZWFzc2lnbn1cbiAgICAgICAgICAgICAgICBvbk9wZW5DbGljaz17aGFuZGxlT3Blbk1vZGFsfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgIDwvR3JpZD5cbiAgICAgIDxUaWNrZXREZXRhaWxcbiAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgIHRpY2tldElkPXt0aWNrZXQ/LmlkfVxuICAgICAgICBvcmRlcklkPXt0aWNrZXQ/Lm9yZGVyX2lkfVxuICAgICAgICBvd25lcklkPXt0aWNrZXQ/Lm93bmVyPy5pZH1cbiAgICAgICAgb3Blbj17bW9kYWxPcGVuID09PSBtb2RhbFZpZXdzLmRldGFpbH1cbiAgICAgICAgb25DbG9zZT17aGFuZGxlQ2xvc2VNb2RhbH1cbiAgICAgIC8+XG4gICAgICA8VGlja2V0UmVhc3NpZ25cbiAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgIHRpY2tldElkPXt0aWNrZXQ/LmlkfVxuICAgICAgICBvcmRlcklkPXt0aWNrZXQ/Lm9yZGVyX2lkfVxuICAgICAgICBvd25lcklkPXt0aWNrZXQ/Lm93bmVyPy5pZH1cbiAgICAgICAgb3Blbj17bW9kYWxPcGVuID09PSBtb2RhbFZpZXdzLnJlYXNzaWdufVxuICAgICAgICBvbkNsb3NlPXtoYW5kbGVDbG9zZU1vZGFsfVxuICAgICAgLz5cbiAgICAgIDxUaWNrZXRBc3NpZ25cbiAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgIHRpY2tldElkPXt0aWNrZXQ/LmlkfVxuICAgICAgICBvcmRlcklkPXt0aWNrZXQ/Lm9yZGVyX2lkfVxuICAgICAgICBvd25lcklkPXt0aWNrZXQ/Lm93bmVyPy5pZH1cbiAgICAgICAgb3Blbj17bW9kYWxPcGVuID09PSBtb2RhbFZpZXdzLmFzc2lnbn1cbiAgICAgICAgb25DbG9zZT17aGFuZGxlQ2xvc2VNb2RhbH1cbiAgICAgIC8+XG4gICAgPC9HcmlkPlxuICApO1xufTtcblxuT3JkZXJMaXN0VGlja2V0cy5wcm9wVHlwZXMgPSB7XG4gIHRpY2tldDogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBpZDogUHJvcFR5cGVzLm51bWJlcixcbiAgICBvcmRlcl9pZDogUHJvcFR5cGVzLm51bWJlcixcbiAgICBvd25lcjogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAgIGlkOiBQcm9wVHlwZXMubnVtYmVyLFxuICAgICAgZW1haWw6IFByb3BUeXBlcy5zdHJpbmdcbiAgICB9KSxcbiAgICBudW1iZXI6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgdG90YWxfcmVmdW5kZWRfYW1vdW50OiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIHRpY2tldF90eXBlOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgICAgbmFtZTogUHJvcFR5cGVzLnN0cmluZ1xuICAgIH0pLFxuICAgIGlzX2FjdGl2ZTogUHJvcFR5cGVzLmJvb2xcbiAgfSksXG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdCxcbiAgcmVmdW5kUmVxdWVzdGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgaXNTZWxlY3RlZFRvUmVmdW5kOiBQcm9wVHlwZXMuYm9vbCxcbiAgc2VsZWN0VG9SZWZ1bmQ6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBPcmRlckxpc3RUaWNrZXRzO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBHcmlkLCBCb3gsIEJ1dHRvbiB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgU3RhY2sgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvU3RhY2tcIjtcbmltcG9ydCBUYWJzIGZyb20gXCJAbXVpL21hdGVyaWFsL1RhYnNcIjtcbmltcG9ydCBUYWIgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvVGFiXCI7XG5pbXBvcnQgT3JkZXJMaXN0SXRlbSBmcm9tIFwiLi9PcmRlckxpc3RJdGVtXCI7XG5pbXBvcnQgT3JkZXJTdW1tYXJ5IGZyb20gXCIuLi9PcmRlclN1bW1hcnlcIjtcbmltcG9ydCBSZWZ1bmRSZXF1ZXN0c01vZGFsIGZyb20gXCIuLi9SZWZ1bmRSZXF1ZXN0c1wiO1xuaW1wb3J0IEVycm9yTGFiZWwgZnJvbSBcIi4uL0xhYmVscy9FcnJvckxhYmVsXCI7XG5pbXBvcnQgeyBpc1RpY2tldFJlZnVuZGFibGUgfSBmcm9tIFwiLi4vLi4vdXRpbHMvdGlja2V0VXRpbHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCBSZWZ1bmREZXRhaWxzIGZyb20gXCIuLi9SZWZ1bmRSZXF1ZXN0cy9SZWZ1bmREZXRhaWxzXCI7XG5cbmNvbnN0IFRhYlBhbmVsID0gKHByb3BzKSA9PiB7XG4gIGNvbnN0IHsgY2hpbGRyZW4sIHZhbHVlLCBpbmRleCB9ID0gcHJvcHM7XG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgcm9sZT1cInRhYnBhbmVsXCJcbiAgICAgIGhpZGRlbj17dmFsdWUgIT09IGluZGV4fVxuICAgICAgaWQ9e2B0YWJwYW5lbC0ke2luZGV4fWB9XG4gICAgICBhcmlhLWxhYmVsbGVkYnk9e2B0YWItJHtpbmRleH1gfVxuICAgID5cbiAgICAgIHt2YWx1ZSA9PT0gaW5kZXggJiYgY2hpbGRyZW59XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5jb25zdCBPcmRlcnNMaXN0RGVza3RvcE1vYmlsZSA9ICh7XG4gIGlzTW9iaWxlLFxuICBzdW1taXQsXG4gIG9yZGVyLFxuICBkZXRhaWxzUmVxdWlyZWQsXG4gIG9uUGFnaW5hdGVDbGlja1xufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IFt2YWx1ZSwgc2V0VmFsdWVdID0gdXNlU3RhdGUoMCk7XG4gIGNvbnN0IGhhbmRsZUNoYW5nZSA9IChfLCBuZXdWYWx1ZSkgPT4ge1xuICAgIHNldFZhbHVlKG5ld1ZhbHVlKTtcbiAgfTtcbiAgY29uc3QgW3JlZnVuZFJlcXVlc3RlZCwgc2V0UmVmdW5kUmVxdWVzdGVkXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW3RpY2tldHNUb1JlZnVuZCwgc2V0VGlja2V0c1RvUmVmdW5kXSA9IHVzZVN0YXRlKFtdKTtcbiAgY29uc3QgW3N1Ym1pdFJlcXVlc3QsIHNldFN1Ym1pdFJlcXVlc3RdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbcmVmdW5kRGV0YWlsc09wZW4sIHNldFJlZnVuZERldGFpbHNPcGVuXSA9IHVzZVN0YXRlKGZhbHNlKTtcblxuICBjb25zdCBvblJlZnVuZENsaWNrID0gKCkgPT4ge1xuICAgIGlmICh0aWNrZXRzVG9SZWZ1bmQubGVuZ3RoID09PSAwKSB7XG4gICAgICBzZXRSZWZ1bmRSZXF1ZXN0ZWQodHJ1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNldFN1Ym1pdFJlcXVlc3QodHJ1ZSk7XG4gICAgfVxuICB9O1xuICBjb25zdCB1bnNlbGVjdFJlZnVuZFRpY2tldHMgPSAodGlja2V0KSA9PiB7XG4gICAgY29uc3QgZmlsdGVyU2VsZWN0ZWQgPSB0aWNrZXRzVG9SZWZ1bmQuZmlsdGVyKCh0KSA9PiB0LmlkICE9PSB0aWNrZXQuaWQpO1xuICAgIHNldFRpY2tldHNUb1JlZnVuZChmaWx0ZXJTZWxlY3RlZCk7XG4gIH07XG4gIGNvbnN0IHNlbGVjdFRvUmVmdW5kID0gKGUsIHRpY2tldCkgPT4ge1xuICAgIGNvbnN0IHsgY2hlY2tlZCB9ID0gZS50YXJnZXQ7XG4gICAgaWYgKGNoZWNrZWQpIHtcbiAgICAgIGNvbnN0IHNlbGVjdGVkVGlja2V0ID0gb3JkZXI/Lm1lbWJlclRpY2tldHM/LmZpbmQoXG4gICAgICAgICh0KSA9PiB0LmlkID09PSB0aWNrZXQuaWRcbiAgICAgICk7XG4gICAgICBzZXRUaWNrZXRzVG9SZWZ1bmQoWy4uLnRpY2tldHNUb1JlZnVuZCwgc2VsZWN0ZWRUaWNrZXRdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdW5zZWxlY3RSZWZ1bmRUaWNrZXRzKHRpY2tldCk7XG4gICAgfVxuICB9O1xuICBjb25zdCBjYW5jZWxUaWNrZXRzVG9SZWZ1bmQgPSAoKSA9PiB7XG4gICAgc2V0UmVmdW5kUmVxdWVzdGVkKGZhbHNlKTtcbiAgICBzZXRUaWNrZXRzVG9SZWZ1bmQoW10pO1xuICB9O1xuXG4gIGNvbnN0IHNlbGVjdEFsbFRpY2tldHMgPSAoKSA9PiB7XG4gICAgY29uc3QgcmVmdW5kYWJsZVRpY2tldHMgPSBvcmRlcj8ubWVtYmVyVGlja2V0cz8uZmlsdGVyKFxuICAgICAgKHRpY2tldCkgPT4gaXNUaWNrZXRSZWZ1bmRhYmxlKHRpY2tldCkgPT09IHRydWVcbiAgICApO1xuICAgIHNldFRpY2tldHNUb1JlZnVuZChyZWZ1bmRhYmxlVGlja2V0cyk7XG4gIH07XG5cbiAgY29uc3QgcmVzZXRBbGxSZWZ1bmRTdGF0dXNlcyA9ICgpID0+IHtcbiAgICBzZXRSZWZ1bmRSZXF1ZXN0ZWQoZmFsc2UpO1xuICAgIHNldFN1Ym1pdFJlcXVlc3QoZmFsc2UpO1xuICAgIHNldFRpY2tldHNUb1JlZnVuZChbXSk7XG4gIH07XG5cbiAgY29uc3QgbW9yZURldGFpbHMgPSAoKSA9PlxuICAgIGRldGFpbHNSZXF1aXJlZCAmJiAoXG4gICAgICA8RXJyb3JMYWJlbFxuICAgICAgICBtZXNzYWdlPXt0KFwidGlja2V0X3N0YXR1cy5zdGF0dXNfZGV0YWlsc19yZXF1aXJlZFwiKX1cbiAgICAgICAgY29sb3I9XCIjZmY5ODAwXCJcbiAgICAgICAgZGF0YVRlc3RJZD1cIm1vcmUtZGV0YWlscy1sYWJlbFwiXG4gICAgICAvPlxuICAgICk7XG5cbiAgcmV0dXJuIGlzTW9iaWxlID8gKFxuICAgIDxCb3hcbiAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldExpc3RDb250YWluZXJ9XG4gICAgICBkYXRhLXRlc3RpZD1cIm1vYmlsZS1vcmRlcnMtbGlzdC1jb250YWluZXJcIlxuICAgID5cbiAgICAgIDxCb3ggc3g9e3sgYm9yZGVyQ29sb3I6IFwiZGl2aWRlclwiLCBwYjogMiB9fT5cbiAgICAgICAgPFRhYnNcbiAgICAgICAgICB2YWx1ZT17dmFsdWV9XG4gICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX1cbiAgICAgICAgICB0ZXh0Q29sb3I9XCIjMDAwXCJcbiAgICAgICAgICBhcmlhLWxhYmVsPVwiVGlja2V0cyAmIFN1bW1hcnlcIlxuICAgICAgICAgIFRhYkluZGljYXRvclByb3BzPXt7XG4gICAgICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiBcIiMwMDBcIlxuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICA8VGFiIGxhYmVsPXt0KFwibGFiZWxzLnRpY2tldHNcIil9IGNsYXNzTmFtZT17c3R5bGVzLnRhYkJ1dHRvbnN9IC8+XG4gICAgICAgICAgPFRhYiBsYWJlbD17dChcImxhYmVscy5zdW1tYXJ5XCIpfSBjbGFzc05hbWU9e3N0eWxlcy50YWJCdXR0b25zfSAvPlxuICAgICAgICA8L1RhYnM+XG4gICAgICA8L0JveD5cbiAgICAgIHttb3JlRGV0YWlscygpfVxuICAgICAgPFRhYlBhbmVsIHZhbHVlPXt2YWx1ZX0gaW5kZXg9ezB9PlxuICAgICAgICA8T3JkZXJMaXN0SXRlbVxuICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgIG9yZGVyPXtvcmRlcn1cbiAgICAgICAgICBvblBhZ2luYXRlQ2xpY2s9e29uUGFnaW5hdGVDbGlja31cbiAgICAgICAgICByZWZ1bmRSZXF1ZXN0ZWQ9e3JlZnVuZFJlcXVlc3RlZH1cbiAgICAgICAgICB0aWNrZXRzVG9SZWZ1bmQ9e3RpY2tldHNUb1JlZnVuZH1cbiAgICAgICAgICBzZWxlY3RUb1JlZnVuZD17c2VsZWN0VG9SZWZ1bmR9XG4gICAgICAgICAgc3VibWl0UmVxdWVzdD17c3VibWl0UmVxdWVzdH1cbiAgICAgICAgICB1bnNlbGVjdFJlZnVuZFRpY2tldHM9e3Vuc2VsZWN0UmVmdW5kVGlja2V0c31cbiAgICAgICAgLz5cbiAgICAgIDwvVGFiUGFuZWw+XG4gICAgICA8VGFiUGFuZWwgdmFsdWU9e3ZhbHVlfSBpbmRleD17MX0+XG4gICAgICAgIDxPcmRlclN1bW1hcnlcbiAgICAgICAgICBvcmRlcj17b3JkZXJ9XG4gICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgb25SZWZ1bmRDbGljaz17b25SZWZ1bmRDbGlja31cbiAgICAgICAgICB0aWNrZXRzVG9SZWZ1bmQ9e3RpY2tldHNUb1JlZnVuZH1cbiAgICAgICAgICByZWZ1bmRSZXF1ZXN0ZWQ9e3JlZnVuZFJlcXVlc3RlZH1cbiAgICAgICAgICBzdWJtaXRSZXF1ZXN0PXtzdWJtaXRSZXF1ZXN0fVxuICAgICAgICAvPlxuICAgICAgPC9UYWJQYW5lbD5cbiAgICA8L0JveD5cbiAgKSA6IChcbiAgICA8PlxuICAgICAgPEdyaWQgaXRlbSBtZD17MTJ9PlxuICAgICAgICB7bW9yZURldGFpbHMoKX1cbiAgICAgIDwvR3JpZD5cbiAgICAgIHtyZWZ1bmRSZXF1ZXN0ZWQgJiYgKFxuICAgICAgICA8R3JpZCBpdGVtIG1kPXsxMn0+XG4gICAgICAgICAgPHNwYW4+e3QoXCJ0aWNrZXRfc3RhdHVzLnNlbGVjdF90aWNrZXRfcmVmdW5kXCIpfTwvc3Bhbj5cbiAgICAgICAgICA8U3RhY2tcbiAgICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICAgIGp1c3RpZnlDb250ZW50OiBcImZsZXgtc3RhcnRcIlxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIGFsaWduSXRlbXM9XCJjZW50ZXJcIlxuICAgICAgICAgICAgZGlyZWN0aW9uPVwicm93XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lZFwiXG4gICAgICAgICAgICAgIHNpemU9XCJtZWRpdW1cIlxuICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5yZWZ1bmRCdXR0b25zfVxuICAgICAgICAgICAgICBvbkNsaWNrPXtzZWxlY3RBbGxUaWNrZXRzfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMuc2VsZWN0X2FsbFwiKX1cbiAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICB2YXJpYW50PVwib3V0bGluZWRcIlxuICAgICAgICAgICAgICBzaXplPVwibWVkaXVtXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMucmVmdW5kQnV0dG9uc31cbiAgICAgICAgICAgICAgb25DbGljaz17Y2FuY2VsVGlja2V0c1RvUmVmdW5kfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMuc2VsZWN0X2NhbmNlbFwiKX1cbiAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgIDwvU3RhY2s+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICl9XG4gICAgICA8R3JpZFxuICAgICAgICBwYWRkaW5nPXsxfVxuICAgICAgICBpdGVtXG4gICAgICAgIG1kPXs3fVxuICAgICAgICBvcmRlcj17eyBtZDogMSB9fVxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRMaXN0Q29udGFpbmVyfVxuICAgICAgICBkYXRhLXRlc3RpZD1cImRlc2t0b3Atb3JkZXJzLWxpc3QtY29udGFpbmVyXCJcbiAgICAgID5cbiAgICAgICAgPE9yZGVyTGlzdEl0ZW1cbiAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICBvcmRlcj17b3JkZXJ9XG4gICAgICAgICAgb25QYWdpbmF0ZUNsaWNrPXtvblBhZ2luYXRlQ2xpY2t9XG4gICAgICAgICAgcmVmdW5kUmVxdWVzdGVkPXtyZWZ1bmRSZXF1ZXN0ZWR9XG4gICAgICAgICAgdGlja2V0c1RvUmVmdW5kPXt0aWNrZXRzVG9SZWZ1bmR9XG4gICAgICAgICAgc2VsZWN0VG9SZWZ1bmQ9e3NlbGVjdFRvUmVmdW5kfVxuICAgICAgICAgIHN1Ym1pdFJlcXVlc3Q9e3N1Ym1pdFJlcXVlc3R9XG4gICAgICAgICAgdW5zZWxlY3RSZWZ1bmRUaWNrZXRzPXt1bnNlbGVjdFJlZnVuZFRpY2tldHN9XG4gICAgICAgIC8+XG4gICAgICA8L0dyaWQ+XG4gICAgICA8R3JpZCBwYWRkaW5nPXsxfSBpdGVtIG1kPXs1fSBvcmRlcj17eyBtZDogMSB9fT5cbiAgICAgICAgPE9yZGVyU3VtbWFyeVxuICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgIG9yZGVyPXtvcmRlcn1cbiAgICAgICAgICBvblJlZnVuZENsaWNrPXtvblJlZnVuZENsaWNrfVxuICAgICAgICAgIHRpY2tldHNUb1JlZnVuZD17dGlja2V0c1RvUmVmdW5kfVxuICAgICAgICAgIHJlZnVuZFJlcXVlc3RlZD17cmVmdW5kUmVxdWVzdGVkfVxuICAgICAgICAgIHN1Ym1pdFJlcXVlc3Q9e3N1Ym1pdFJlcXVlc3R9XG4gICAgICAgICAgb25SZWZ1bmREZXRhaWxDbGljaz17KCkgPT4gc2V0UmVmdW5kRGV0YWlsc09wZW4odHJ1ZSl9XG4gICAgICAgIC8+XG4gICAgICA8L0dyaWQ+XG4gICAgICA8UmVmdW5kUmVxdWVzdHNNb2RhbFxuICAgICAgICB0aWNrZXRzPXt0aWNrZXRzVG9SZWZ1bmR9XG4gICAgICAgIG9wZW49e3N1Ym1pdFJlcXVlc3R9XG4gICAgICAgIG9uUmVtb3ZlU2VsZWN0ZWRSZWZ1bmRUaWNrZXRzPXt1bnNlbGVjdFJlZnVuZFRpY2tldHN9XG4gICAgICAgIG9uUmVmdW5kU3VjY2Vzc0Nsb3NlPXsoKSA9PiByZXNldEFsbFJlZnVuZFN0YXR1c2VzKCl9XG4gICAgICAgIG9uQ2xvc2VTbGlkZXI9eygpID0+IHNldFN1Ym1pdFJlcXVlc3QoZmFsc2UpfVxuICAgICAgLz5cbiAgICAgIDxSZWZ1bmREZXRhaWxzXG4gICAgICAgIHRpY2tldHM9e29yZGVyPy5tZW1iZXJUaWNrZXRzfVxuICAgICAgICBvcGVuPXtyZWZ1bmREZXRhaWxzT3Blbn1cbiAgICAgICAgb25DbG9zZVNsaWRlcj17KCkgPT4gc2V0UmVmdW5kRGV0YWlsc09wZW4oZmFsc2UpfVxuICAgICAgLz5cbiAgICA8Lz5cbiAgKTtcbn07XG5cbk9yZGVyc0xpc3REZXNrdG9wTW9iaWxlLnByb3BUeXBlcyA9IHtcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0LFxuICBvcmRlcjogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBtZW1iZXJUaWNrZXRzOiBQcm9wVHlwZXMuYXJyYXlPZihPYmplY3QpXG4gIH0pLFxuICBpc01vYmlsZTogUHJvcFR5cGVzLmJvb2wsXG4gIGRldGFpbHNSZXF1aXJlZDogUHJvcFR5cGVzLmJvb2wsXG4gIG9uUGFnaW5hdGVDbGljazogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE9yZGVyc0xpc3REZXNrdG9wTW9iaWxlO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCwgdXNlU2VsZWN0b3IsIHNoYWxsb3dFcXVhbCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgR3JpZCwgQm94LCBCdXR0b24gfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlVGhlbWUgfSBmcm9tIFwiQG11aS9tYXRlcmlhbC9zdHlsZXNcIjtcbmltcG9ydCB1c2VNZWRpYVF1ZXJ5IGZyb20gXCJAbXVpL21hdGVyaWFsL3VzZU1lZGlhUXVlcnlcIjtcbmltcG9ydCB7IGdldFRpY2tldHNCeU9yZGVyIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcbmltcG9ydCB7IGdldEZvcm1hdHRlZERhdGUgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcbmltcG9ydCB7IE9ORV9QQUdFX05FWFQgfSBmcm9tIFwiLi4vLi4vdXRpbHMvY29uc3RhbnRzXCI7XG5pbXBvcnQgT3JkZXJzTGlzdERlc2t0b3BNb2JpbGUgZnJvbSBcIi4vT3JkZXJzTGlzdERlc2t0b3BNb2JpbGVcIjtcbmltcG9ydCBDb3B5VGV4dCBmcm9tIFwiLi4vQ29weVRleHRcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgT3JkZXJzTGlzdCA9ICh7IHN1bW1pdCwgb3JkZXIgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcbiAgY29uc3QgeyB0aWNrZXRfcGVyX3BhZ2UgfSA9IHVzZVNlbGVjdG9yKFxuICAgIChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUgfHwge30sXG4gICAgc2hhbGxvd0VxdWFsXG4gICk7XG4gIGNvbnN0IHRoZW1lID0gdXNlVGhlbWUoKTtcbiAgY29uc3QgaXNNb2JpbGUgPSB1c2VNZWRpYVF1ZXJ5KHRoZW1lLmJyZWFrcG9pbnRzLmRvd24oXCJsZ1wiKSk7XG4gIGNvbnN0IFtpc01vYmlsZVZpZXdhYmxlLCBzZXRNb2JpbGVWaWV3YWJsZV0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IGRldGFpbHNSZXF1aXJlZCA9IG9yZGVyLm1lbWJlclRpY2tldHM/LmZpbmQoXG4gICAgKHRpY2tldCkgPT4gdGlja2V0Lm93bmVyPy5zdGF0dXMgPT09IFwiSW5jb21wbGV0ZVwiXG4gICk7XG5cbiAgY29uc3Qgb25QYWdpbmF0ZUNsaWNrID0gKCkgPT5cbiAgICBkaXNwYXRjaChcbiAgICAgIGdldFRpY2tldHNCeU9yZGVyKHtcbiAgICAgICAgb3JkZXJJZDogb3JkZXIuaWQsXG4gICAgICAgIHBhZ2U6IG9yZGVyLnRpY2tldHNfcGFnZV9jdXJyZW50ICsgT05FX1BBR0VfTkVYVCxcbiAgICAgICAgcGVyUGFnZTogdGlja2V0X3Blcl9wYWdlLFxuICAgICAgICBuZXh0OiB0cnVlXG4gICAgICB9KVxuICAgICk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPEJveFxuICAgICAgICBzeD17e1xuICAgICAgICAgIHBhZGRpbmc6IHtcbiAgICAgICAgICAgIHhzOiAyLFxuICAgICAgICAgICAgbWQ6IDEsXG4gICAgICAgICAgICBsZzogMFxuICAgICAgICAgIH1cbiAgICAgICAgfX1cbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJUaWNrZXRJbmZvQ29udGFpbmVyfVxuICAgICAgPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyVGlja2V0SW5mb31cbiAgICAgICAgICBkYXRhLXRlc3RpZD1cIm9yZGVyLXRpY2tldC1pbmZvLWNvbnRhaW5lclwiXG4gICAgICAgID5cbiAgICAgICAgICB7dChcIm9yZGVycy5wdXJjaGFzZWRcIil9OiB7Z2V0Rm9ybWF0dGVkRGF0ZShvcmRlci5jcmVhdGVkKX0gfHtcIiBcIn1cbiAgICAgICAgICB7dChcIm9yZGVyX3N1bW1hcnkub3JkZXJfbm9cIil9OntcIiBcIn1cbiAgICAgICAgICA8Q29weVRleHRcbiAgICAgICAgICAgIHRleHQ9e29yZGVyLm51bWJlcn1cbiAgICAgICAgICAgIHRvb2x0aXBUZXh0PXt0KFwib3JkZXJfc3VtbWFyeS5jb3B5X29yZGVyX251bWJlclwiKX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L3NwYW4+XG4gICAgICAgIHtpc01vYmlsZSAmJiAoXG4gICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgc3g9e3sgcGFkZGluZzogMCB9fVxuICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuYmxhY2tCdXR0b259XG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRNb2JpbGVWaWV3YWJsZSghaXNNb2JpbGVWaWV3YWJsZSl9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge2lzTW9iaWxlVmlld2FibGVcbiAgICAgICAgICAgICAgPyB0KFwidGlja2V0X3N0YXR1cy5oaWRlX3RpY2tldHNcIilcbiAgICAgICAgICAgICAgOiB0KFwidGlja2V0X3N0YXR1cy52aWV3X3RpY2tldHNcIil9XG4gICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICl9XG4gICAgICA8L0JveD5cbiAgICAgIDxHcmlkXG4gICAgICAgIGtleT17b3JkZXIuaWR9XG4gICAgICAgIGNvbnRhaW5lclxuICAgICAgICByb3dTcGFjaW5nPXsxfVxuICAgICAgICBjb2x1bW5TcGFjaW5nPXt7IHhzOiAxLCBzbTogMiwgbWQ6IDMgfX1cbiAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMub3JkZXJUaWNrZXRDb250YWluZXJ9ICR7XG4gICAgICAgICAgaXNNb2JpbGUgJiYgIWlzTW9iaWxlVmlld2FibGUgPyBzdHlsZXMuZGlzcGxheV9ub25lIDogXCJcIlxuICAgICAgICB9YH1cbiAgICAgICAgc3g9e3tcbiAgICAgICAgICBmbGV4RGlyZWN0aW9uOiB7XG4gICAgICAgICAgICBtZDogXCJyb3dcIixcbiAgICAgICAgICAgIGxnOiBcInJvd1wiXG4gICAgICAgICAgfSxcbiAgICAgICAgICBwYWRkaW5nOiB7XG4gICAgICAgICAgICB4czogMixcbiAgICAgICAgICAgIG1kOiAwLFxuICAgICAgICAgICAgbGc6IDBcbiAgICAgICAgICB9XG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIDxPcmRlcnNMaXN0RGVza3RvcE1vYmlsZVxuICAgICAgICAgIGlzTW9iaWxlPXtpc01vYmlsZX1cbiAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICBvcmRlcj17b3JkZXJ9XG4gICAgICAgICAgZGV0YWlsc1JlcXVpcmVkPXshIWRldGFpbHNSZXF1aXJlZH1cbiAgICAgICAgICBvblBhZ2luYXRlQ2xpY2s9e29uUGFnaW5hdGVDbGlja31cbiAgICAgICAgLz5cbiAgICAgIDwvR3JpZD5cbiAgICA8Lz5cbiAgKTtcbn07XG5cbk9yZGVyc0xpc3QucHJvcFR5cGVzID0ge1xuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIG9yZGVyOiBQcm9wVHlwZXMub2JqZWN0XG59O1xuXG5leHBvcnQgZGVmYXVsdCBPcmRlcnNMaXN0O1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IFJpZ2h0RHJhd2VyIGZyb20gXCIuLi9SaWdodERyYXdlclwiO1xuaW1wb3J0IFJlZnVuZFJlcXVlc3RlZFRpY2tldCBmcm9tIFwiLi9SZWZ1bmRSZXF1ZXN0ZWRUaWNrZXRcIjtcblxuY29uc3QgUmVmdW5kRGV0YWlscyA9ICh7IHRpY2tldHMsIG9wZW4sIG9uQ2xvc2VTbGlkZXIgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IGNsb3NlU2xpZGVyID0gKCkgPT4ge1xuICAgIG9uQ2xvc2VTbGlkZXIoKTtcbiAgfTtcbiAgcmV0dXJuIChcbiAgICA8UmlnaHREcmF3ZXJcbiAgICAgIGlkPVwicmVmdW5kLWRldGFpbHNcIlxuICAgICAgb3Blbj17b3Blbn1cbiAgICAgIG9uQ2xvc2U9e2Nsb3NlU2xpZGVyfVxuICAgICAgdGl0bGU9e3QoXCJvcmRlcl9zdW1tYXJ5LnJlZnVuZF9kZXRhaWxzXCIpfVxuICAgID5cbiAgICAgIHt0aWNrZXRzPy5tYXAoKHRpY2tldCkgPT4gKFxuICAgICAgICA8UmVmdW5kUmVxdWVzdGVkVGlja2V0XG4gICAgICAgICAga2V5PXtgcmVmdW5kX3JlcV8ke3RpY2tldD8uaWR9YH1cbiAgICAgICAgICB0aWNrZXQ9e3RpY2tldH1cbiAgICAgICAgICByZWZ1bmREZXRhaWxzXG4gICAgICAgIC8+XG4gICAgICApKX1cbiAgICA8L1JpZ2h0RHJhd2VyPlxuICApO1xufTtcblxuUmVmdW5kRGV0YWlscy5wcm9wVHlwZXMgPSB7XG4gIHRpY2tldHM6IFByb3BUeXBlcy5hcnJheU9mKE9iamVjdCksXG4gIG9wZW46IFByb3BUeXBlcy5ib29sLFxuICBvbkNsb3NlU2xpZGVyOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgUmVmdW5kRGV0YWlscztcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEdyaWQgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IFN0YWNrIGZyb20gXCJAbXVpL21hdGVyaWFsL1N0YWNrXCI7XG5pbXBvcnQgRGVsZXRlT3V0bGluZUljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRGVsZXRlT3V0bGluZVwiO1xuaW1wb3J0IEF0dGVuZGVlU3RhdHVzIGZyb20gXCIuLi9PcmRlcnNMaXN0L0F0dGVuZGVlU3RhdHVzXCI7XG5pbXBvcnQgUmVmdW5kU3RhdHVzIGZyb20gXCIuL1JlZnVuZFN0YXR1c1wiO1xuaW1wb3J0IENvcHlUZXh0IGZyb20gXCIuLi9Db3B5VGV4dFwiO1xuXG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IFJlZnVuZFJlcXVlc3RlZFRpY2tldCA9ICh7IHRpY2tldCwgb25SZW1vdmUsIHJlZnVuZERldGFpbHMgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG5cbiAgcmV0dXJuIChcbiAgICA8R3JpZFxuICAgICAgY29udGFpbmVyXG4gICAgICBjbGFzc05hbWU9e3N0eWxlcy5yZWZ1bmRUaWNrZXRCb3hDb250YWluZXJ9XG4gICAgICBkYXRhLXRlc3RpZD1cInJlZnVuZC1yZXF1ZXN0ZWQtdGlja2V0LWNvbnRhaW5lclwiXG4gICAgPlxuICAgICAgPEdyaWQgeHM9ezEyfSBwYWRkaW5nPXsyfSBpdGVtIGp1c3RpZnk9XCJzcGFjZS1iZXR3ZWVuXCI+XG4gICAgICAgIDxTdGFja1xuICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogXCJzcGFjZS1iZXR3ZWVuXCJcbiAgICAgICAgICB9fVxuICAgICAgICAgIGRpcmVjdGlvbj1cInJvd1wiXG4gICAgICAgID5cbiAgICAgICAgICA8aDQ+e3RpY2tldC50aWNrZXRfdHlwZT8ubmFtZX08L2g0PlxuICAgICAgICAgIHshcmVmdW5kRGV0YWlscyAmJiAoXG4gICAgICAgICAgICA8RGVsZXRlT3V0bGluZUljb25cbiAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJyZWZ1bmQtcmVtb3ZlLWJ1dHRvblwiXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmRlbGV0ZUljb259XG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IG9uUmVtb3ZlKHRpY2tldCl9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvU3RhY2s+XG4gICAgICA8L0dyaWQ+XG4gICAgICA8R3JpZCB4cz17MTJ9IHBhZGRpbmc9ezJ9IGl0ZW0+XG4gICAgICAgIDxBdHRlbmRlZVN0YXR1cyB0aWNrZXQ9e3RpY2tldH0gLz5cbiAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0Tm99PlxuICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy50aWNrZXRfbm9cIil9OntcIiBcIn1cbiAgICAgICAgICA8Q29weVRleHQgdGV4dD17dGlja2V0Lm51bWJlcn0gaGlkZUNvcHkgLz5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9HcmlkPlxuICAgICAge3JlZnVuZERldGFpbHMgJiYgKFxuICAgICAgICA8R3JpZCB4cz17MTJ9IHBhZGRpbmc9ezJ9IGl0ZW0+XG4gICAgICAgICAgPFJlZnVuZFN0YXR1cyB0aWNrZXQ9e3RpY2tldH0gLz5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgKX1cbiAgICA8L0dyaWQ+XG4gICk7XG59O1xuXG5SZWZ1bmRSZXF1ZXN0ZWRUaWNrZXQucHJvcFR5cGVzID0ge1xuICB0aWNrZXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIG9uUmVtb3ZlOiBQcm9wVHlwZXMuZnVuYyxcbiAgcmVmdW5kRGV0YWlsczogUHJvcFR5cGVzLmJvb2xcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFJlZnVuZFJlcXVlc3RlZFRpY2tldDtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VNZW1vIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgZ2V0UmVmdW5kUmVxdWVzdGVkU3RhdHVzQ29sb3IgfSBmcm9tIFwiLi4vLi4vdXRpbHMvdGlja2V0VXRpbHNcIjtcblxuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBSZWZ1bmRTdGF0dXMgPSAoeyB0aWNrZXQgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IHN0YXR1c0NvbG9yID0gdXNlTWVtbyhcbiAgICAoKSA9PiBnZXRSZWZ1bmRSZXF1ZXN0ZWRTdGF0dXNDb2xvcih0aWNrZXQpLFxuICAgIFt0aWNrZXRdXG4gICk7XG4gIHJldHVybiAoXG4gICAgPEJ1dHRvblxuICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICBhcmlhLWxhYmVsPVwidGlja2V0IHJlZnVuZCBzdGF0dXMgbGFiZWxcIlxuICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuYnV0dG9uUGlsbH0gJHtzdHlsZXNbc3RhdHVzQ29sb3JdfWB9XG4gICAgPlxuICAgICAge3QoYHRpY2tldF9zdGF0dXMucmVmdW5kX3JlcXVlc3RfJHtzdGF0dXNDb2xvcn1gKX1cbiAgICA8L0J1dHRvbj5cbiAgKTtcbn07XG5cblJlZnVuZFN0YXR1cy5wcm9wVHlwZXMgPSB7XG4gIHRpY2tldDogUHJvcFR5cGVzLm9iamVjdFxufTtcblxuZXhwb3J0IGRlZmF1bHQgUmVmdW5kU3RhdHVzO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgQm94LCBCdXR0b24sIFN0eWxlZEVuZ2luZVByb3ZpZGVyIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBDaGVja0NpcmNsZUljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ2hlY2tDaXJjbGVcIjtcbmltcG9ydCBSaWdodERyYXdlciBmcm9tIFwiLi4vUmlnaHREcmF3ZXJcIjtcbmltcG9ydCBSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXQgZnJvbSBcIi4vUmVmdW5kUmVxdWVzdGVkVGlja2V0XCI7XG5pbXBvcnQgRXJyb3JMYWJlbCBmcm9tIFwiLi4vTGFiZWxzL0Vycm9yTGFiZWxcIjtcbmltcG9ydCB7IHJlZnVuZEJ1bGtUaWNrZXRzLCB1cGRhdGVUaWNrZXRzUmVmdW5kUmVxdWVzdGVkIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcbmltcG9ydCB7IFNURVBfT05FLCBTVEVQX1RXTyB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgUmVmdW5kUmVxdWVzdHNNb2RhbCA9ICh7XG4gIHRpY2tldHMsXG4gIG9wZW4sXG4gIG9uUmVtb3ZlU2VsZWN0ZWRSZWZ1bmRUaWNrZXRzLFxuICBvblJlZnVuZFN1Y2Nlc3NDbG9zZSxcbiAgb25DbG9zZVNsaWRlclxufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcbiAgY29uc3QgW3N0ZXAsIHNldFN0ZXBdID0gdXNlU3RhdGUoU1RFUF9PTkUpO1xuICBjb25zdCBbZXJyb3JNc2csIHNldEVycm9yTXNnXSA9IHVzZVN0YXRlKFwiXCIpO1xuICBjb25zdCBbcmVmdW5kU3VjY2Vzcywgc2V0UmVmdW5kU3VjY2Vzc10gPSB1c2VTdGF0ZShmYWxzZSk7XG5cbiAgY29uc3QgY2xvc2VTbGlkZXIgPSAoKSA9PiB7XG4gICAgc2V0RXJyb3JNc2coXCJcIik7XG4gICAgb25DbG9zZVNsaWRlcigpO1xuICAgIHNldFN0ZXAoU1RFUF9PTkUpO1xuICAgIGlmIChyZWZ1bmRTdWNjZXNzKSB7XG4gICAgICBvblJlZnVuZFN1Y2Nlc3NDbG9zZSgpOyAvLyBpZiB0aGUgcmVmdW5kIGlzIGEgc3VjY2VzcywgdHJpZ2dlciBhbmQgcmUtcmV0cmlldmUgdGlja2V0cyBieSBvcmRlclxuICAgICAgc2V0UmVmdW5kU3VjY2VzcyhmYWxzZSk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IHJlZnVuZFRpY2tldHMgPSBhc3luYyAoKSA9PiB7XG4gICAgZGlzcGF0Y2gocmVmdW5kQnVsa1RpY2tldHMoeyB0aWNrZXRzIH0pKS50aGVuKChyZXMpID0+IHtcbiAgICAgIGRpc3BhdGNoKHVwZGF0ZVRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWQocmVzKSk7IC8vIHJldHVybmluZyB3aGljaCB0aWNrZXRzIHdlcmUgc3VjY2Vzc2Z1bFxuICAgICAgaWYgKHJlcz8ubGVuZ3RoID09PSB0aWNrZXRzLmxlbmd0aCkge1xuICAgICAgICBzZXRTdGVwKFNURVBfVFdPKTsgLy8gc3VjY2VzcywgYWxsIHJlZnVuZHMgd2VyZSByZXF1ZXN0ZWRcbiAgICAgICAgc2V0UmVmdW5kU3VjY2Vzcyh0cnVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldEVycm9yTXNnKHQoXCJlcnJvcnMucmVmdW5kX3Vuc3VjY2Vzc2Z1bFwiKSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgc2V0RXJyb3JNc2coXCJcIik7XG4gIH07XG5cbiAgY29uc3QgcmVmdW5kU3RlcE9uZSA9ICgpID0+IChcbiAgICA8PlxuICAgICAgPGgyIGNsYXNzTmFtZT17c3R5bGVzLnJlZnVuZFRleHR9PlxuICAgICAgICB7dChcImNvbmZpcm1fcG9wdXAucXVlc3Rpb25fdGV4dF9jYW5jZWxcIil9XG4gICAgICA8L2gyPlxuICAgICAge2Vycm9yTXNnICYmIChcbiAgICAgICAgPEVycm9yTGFiZWxcbiAgICAgICAgICBjbGFzc05hbWVzPXtzdHlsZXMucmVmdW5kRXJyb3JNc2d9XG4gICAgICAgICAgY29sb3I9XCIjRkYwMDAwXCJcbiAgICAgICAgICBkYXRhVGVzdElkPVwiZmFpbGVkLXJlZnVuZC1tZXNzYWdlXCJcbiAgICAgICAgICBtZXNzYWdlPXtlcnJvck1zZ31cbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgICA8Qm94PlxuICAgICAgICB7dGlja2V0cy5tYXAoKHRpY2tldCkgPT4gKFxuICAgICAgICAgIDxSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXRcbiAgICAgICAgICAgIGtleT17dGlja2V0LmlkfVxuICAgICAgICAgICAgdGlja2V0PXt0aWNrZXR9XG4gICAgICAgICAgICBvblJlbW92ZT17b25SZW1vdmVTZWxlY3RlZFJlZnVuZFRpY2tldHN9XG4gICAgICAgICAgLz5cbiAgICAgICAgKSl9XG4gICAgICA8L0JveD5cbiAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuYWN0aW9uQnV0dG9uc30+XG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBhcmlhLWxhYmVsPVwicmVmdW5kLWNhbmNlbC1idXR0b25cIlxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNhbmNlbEJ1dHRvbn1cbiAgICAgICAgICBvbkNsaWNrPXtjbG9zZVNsaWRlcn1cbiAgICAgICAgPlxuICAgICAgICAgIHt0KFwiZ2VuZXJhbC5jYW5jZWxcIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgYXJpYS1sYWJlbD1cInJlZnVuZC1jb250aW51ZS1idXR0b25cIlxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNvbnRpbnVlQnV0dG9ufVxuICAgICAgICAgIG9uQ2xpY2s9e3JlZnVuZFRpY2tldHN9XG4gICAgICAgID5cbiAgICAgICAgICB7dChcImdlbmVyYWwuY29udGludWVcIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgPC9Cb3g+XG4gICAgPC8+XG4gICk7XG5cbiAgY29uc3QgcmVmdW5kU3RlcFR3byA9ICgpID0+IChcbiAgICA8Qm94XG4gICAgICBjbGFzc05hbWU9e3N0eWxlcy5yZWZ1bmRTdWNjZXNzZnVsfVxuICAgICAgZGF0YS10ZXN0aWQ9XCJyZWZ1bmQtcmVxdWVzdC1zdWNjZXNzZnVsXCJcbiAgICA+XG4gICAgICA8Q2hlY2tDaXJjbGVJY29uIHN4PXt7IGNvbG9yOiBcIiM0Y2FmNTBcIiB9fSAvPlxuICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXMuc3VjY2Vzc01zZ30+XG4gICAgICAgIHt0KFwidGlja2V0cy5yZWZ1bmRfcmVxdWVzdF9zdWNjZXNzXzFcIil9XG4gICAgICA8L3NwYW4+XG4gICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlcy5zdWNjZXNzTXNnMn0+XG4gICAgICAgIHt0KFwidGlja2V0cy5yZWZ1bmRfcmVxdWVzdF9zdWNjZXNzXzJcIil9XG4gICAgICA8L3NwYW4+XG4gICAgICA8QnV0dG9uXG4gICAgICAgIGFyaWEtbGFiZWw9XCJyZWZ1bmQtZmluaXNoLWJ1dHRvblwiXG4gICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5jb250aW51ZUJ1dHRvbn1cbiAgICAgICAgb25DbGljaz17Y2xvc2VTbGlkZXJ9XG4gICAgICA+XG4gICAgICAgIHt0KFwiZ2VuZXJhbC5maW5pc2hcIil9XG4gICAgICA8L0J1dHRvbj5cbiAgICA8L0JveD5cbiAgKTtcblxuICBjb25zdCByZW5kZXJTdGVwcyA9ICgpID0+IHtcbiAgICBzd2l0Y2ggKHN0ZXApIHtcbiAgICAgIGNhc2UgU1RFUF9PTkU6XG4gICAgICAgIHJldHVybiByZWZ1bmRTdGVwT25lKCk7XG4gICAgICBjYXNlIFNURVBfVFdPOlxuICAgICAgICByZXR1cm4gcmVmdW5kU3RlcFR3bygpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIHJlZnVuZFN0ZXBPbmUoKTtcbiAgICB9XG4gIH07XG4gIHJldHVybiAoXG4gICAgPFN0eWxlZEVuZ2luZVByb3ZpZGVyIGluamVjdEZpcnN0PlxuICAgICAgPFJpZ2h0RHJhd2VyXG4gICAgICAgIGlkPVwicmVmdW5kLXJlcXVlc3RzXCJcbiAgICAgICAgb3Blbj17b3Blbn1cbiAgICAgICAgb25DbG9zZT17Y2xvc2VTbGlkZXJ9XG4gICAgICAgIHRpdGxlPXt0KFwib3JkZXJfc3VtbWFyeS5yZXF1ZXN0X3JlZnVuZFwiKX1cbiAgICAgICAgZGF0YS10ZXN0aWQ9XCJyZWZ1bmQtcmVxdWVzdC1tb2RhbFwiXG4gICAgICA+XG4gICAgICAgIHtyZW5kZXJTdGVwcygpfVxuICAgICAgPC9SaWdodERyYXdlcj5cbiAgICA8L1N0eWxlZEVuZ2luZVByb3ZpZGVyPlxuICApO1xufTtcblxuUmVmdW5kUmVxdWVzdHNNb2RhbC5wcm9wVHlwZXMgPSB7XG4gIHRpY2tldHM6IFByb3BUeXBlcy5hcnJheU9mKE9iamVjdCksXG4gIG9wZW46IFByb3BUeXBlcy5ib29sLFxuICBvblJlbW92ZVNlbGVjdGVkUmVmdW5kVGlja2V0czogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uUmVmdW5kU3VjY2Vzc0Nsb3NlOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25DbG9zZVNsaWRlcjogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFJlZnVuZFJlcXVlc3RzTW9kYWw7XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE3IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBCb3gsIEljb25CdXR0b24sIFR5cG9ncmFwaHksIERyYXdlciB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBDbG9zZSBhcyBDbG9zZUljb24gfSBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbFwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBSaWdodERyYXdlciA9ICh7IGlkLCB0aXRsZSwgY2hpbGRyZW4sIG9wZW4sIG9uQ2xvc2UsIGNsYXNzTmFtZSB9KSA9PiAoXG4gIDxEcmF3ZXJcbiAgICBpZD17aWR9XG4gICAgb3Blbj17b3Blbn1cbiAgICBvbkNsb3NlPXtvbkNsb3NlfVxuICAgIGFuY2hvcj1cInJpZ2h0XCJcbiAgICBNb2RhbFByb3BzPXt7IGtlZXBNb3VudGVkOiBmYWxzZSB9fVxuICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLndyYXBwZXJ9ICR7Y2xhc3NOYW1lfWB9XG4gID5cbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmhlYWRlcn0+XG4gICAgICA8SWNvbkJ1dHRvblxuICAgICAgICBkYXRhLXRlc3RpZD1cImNsb3NlLWRyYXdlclwiXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNsb3NlQnRufVxuICAgICAgICBvbkNsaWNrPXtvbkNsb3NlfVxuICAgICAgICBzeD17eyBmbG9hdDogXCJyaWdodFwiIH19XG4gICAgICAgIGZvbnRTaXplPVwibGFyZ2VcIlxuICAgICAgPlxuICAgICAgICA8Q2xvc2VJY29uIC8+XG4gICAgICA8L0ljb25CdXR0b24+XG4gICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiaDVcIiBndXR0ZXJCb3R0b20gY2xhc3NOYW1lPXtzdHlsZXMudGl0bGV9PlxuICAgICAgICB7dGl0bGV9XG4gICAgICA8L1R5cG9ncmFwaHk+XG4gICAgPC9Cb3g+XG4gICAge2NoaWxkcmVufVxuICA8L0RyYXdlcj5cbik7XG5cblJpZ2h0RHJhd2VyLnByb3BUeXBlcyA9IHtcbiAgaWQ6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgdGl0bGU6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5zdHJpbmcsIFByb3BUeXBlcy5ub2RlXSksXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgb3BlbjogUHJvcFR5cGVzLmJvb2wsXG4gIG9uQ2xvc2U6IFByb3BUeXBlcy5mdW5jLFxuICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmdcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFJpZ2h0RHJhd2VyO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgVGV4dEZpZWxkIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZUZvcm1payB9IGZyb20gXCJmb3JtaWtcIjtcbmltcG9ydCAqIGFzIHl1cCBmcm9tIFwieXVwXCI7XG5cbmltcG9ydCBGb3JtRm9vdGVyIGZyb20gXCIuLi8uLi8uLi9Gb3JtRm9vdGVyXCI7XG5cbmNvbnN0IEFzc2lnbkZvcm0gPSAoeyBvblN1Ym1pdCwgb25DbG9zZSwgc2F2ZUxhYmVsIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuXG4gIGNvbnN0IGZvcm1payA9IHVzZUZvcm1payh7XG4gICAgaW5pdGlhbFZhbHVlczoge1xuICAgICAgbmV3X2F0dGVuZGVlX2VtYWlsOiBcIlwiLFxuICAgICAgcGVyc29uYWxfbWVzc2FnZTogXCJcIlxuICAgIH0sXG4gICAgdmFsaWRhdGlvblNjaGVtYTogeXVwLm9iamVjdCh7XG4gICAgICBuZXdfYXR0ZW5kZWVfZW1haWw6IHl1cFxuICAgICAgICAuc3RyaW5nKHQoXCJ2YWxpZGF0aW9uLmVtYWlsLnN0cmluZ1wiKSlcbiAgICAgICAgLmVtYWlsKHQoXCJ2YWxpZGF0aW9uLmVtYWlsLmZvcm1hdFwiKSlcbiAgICAgICAgLnJlcXVpcmVkKHQoXCJ2YWxpZGF0aW9uLmVtYWlsLnJlcXVpcmVkXCIpKSxcbiAgICAgIHBlcnNvbmFsX21lc3NhZ2U6IHl1cC5zdHJpbmcodChcInZhbGlkYXRpb24udGV4dC5zdHJpbmdcIikpXG4gICAgfSksXG4gICAgb25TdWJtaXRcbiAgfSk7XG5cbiAgcmV0dXJuIChcbiAgICA8Zm9ybSBvblN1Ym1pdD17Zm9ybWlrLmhhbmRsZVN1Ym1pdH0gbm9WYWxpZGF0ZT5cbiAgICAgIDxUZXh0RmllbGRcbiAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgIG5hbWU9XCJuZXdfYXR0ZW5kZWVfZW1haWxcIlxuICAgICAgICBsYWJlbD17dChcInRpY2tldF9yZWFzc2lnbi5uZXdfYXR0ZW5kZWVfZW1haWxcIil9XG4gICAgICAgIHZhbHVlPXtmb3JtaWsudmFsdWVzLm5ld19hdHRlbmRlZV9lbWFpbH1cbiAgICAgICAgb25DaGFuZ2U9e2Zvcm1pay5oYW5kbGVDaGFuZ2V9XG4gICAgICAgIG9uQmx1cj17Zm9ybWlrLmhhbmRsZUJsdXJ9XG4gICAgICAgIGVycm9yPXtcbiAgICAgICAgICBmb3JtaWsudG91Y2hlZC5uZXdfYXR0ZW5kZWVfZW1haWwgJiZcbiAgICAgICAgICBCb29sZWFuKGZvcm1pay5lcnJvcnMubmV3X2F0dGVuZGVlX2VtYWlsKVxuICAgICAgICB9XG4gICAgICAgIGhlbHBlclRleHQ9e1xuICAgICAgICAgIGZvcm1pay50b3VjaGVkLm5ld19hdHRlbmRlZV9lbWFpbCAmJiBmb3JtaWsuZXJyb3JzLm5ld19hdHRlbmRlZV9lbWFpbFxuICAgICAgICB9XG4gICAgICAgIHJlcXVpcmVkXG4gICAgICAvPlxuICAgICAgPFRleHRGaWVsZFxuICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgbmFtZT1cInBlcnNvbmFsX21lc3NhZ2VcIlxuICAgICAgICBsYWJlbD17dChcInRpY2tldF9yZWFzc2lnbi5wZXJzb25hbF9tZXNzYWdlXCIpfVxuICAgICAgICB2YWx1ZT17Zm9ybWlrLnZhbHVlcy5wZXJzb25hbF9tZXNzYWdlfVxuICAgICAgICBtdWx0aWxpbmVcbiAgICAgICAgbWluUm93cz17NH1cbiAgICAgICAgb25DaGFuZ2U9e2Zvcm1pay5oYW5kbGVDaGFuZ2V9XG4gICAgICAgIG9uQmx1cj17Zm9ybWlrLmhhbmRsZUJsdXJ9XG4gICAgICAgIGVycm9yPXtcbiAgICAgICAgICBmb3JtaWsudG91Y2hlZC5wZXJzb25hbF9tZXNzYWdlICYmXG4gICAgICAgICAgQm9vbGVhbihmb3JtaWsuZXJyb3JzLnBlcnNvbmFsX21lc3NhZ2UpXG4gICAgICAgIH1cbiAgICAgICAgaGVscGVyVGV4dD17XG4gICAgICAgICAgZm9ybWlrLnRvdWNoZWQucGVyc29uYWxfbWVzc2FnZSAmJiBmb3JtaWsuZXJyb3JzLnBlcnNvbmFsX21lc3NhZ2VcbiAgICAgICAgfVxuICAgICAgLz5cbiAgICAgIDxGb3JtRm9vdGVyXG4gICAgICAgIHNhdmVMYWJlbD17c2F2ZUxhYmVsIHx8IHQoXCJ0aWNrZXRfcmVhc3NpZ24uc2F2ZVwiKX1cbiAgICAgICAgY2FuY2VsTGFiZWw9e3QoXCJ0aWNrZXRfcmVhc3NpZ24uY2FuY2VsXCIpfVxuICAgICAgICBvbkNsb3NlPXtvbkNsb3NlfVxuICAgICAgICBkaXNhYmxlZD17Zm9ybWlrLmlzU3VibWl0dGluZ31cbiAgICAgIC8+XG4gICAgPC9mb3JtPlxuICApO1xufTtcblxuQXNzaWduRm9ybS5wcm9wVHlwZXMgPSB7XG4gIG9uU3VibWl0OiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBzYXZlTGFiZWw6IFByb3BUeXBlcy5zdHJpbmdcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEFzc2lnbkZvcm07XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE3IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuXG5pbXBvcnQgUmVhY3QsIHsgdXNlQ29udGV4dCwgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2gsIHVzZVNlbGVjdG9yIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCb3gsIEJ1dHRvbiwgVHlwb2dyYXBoeSwgRGl2aWRlciB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQge1xuICBhc3NpZ25BdHRlbmRlZSxcbiAgZ2V0RXh0cmFRdWVzdGlvbnMsXG4gIGdldFRpY2tldCxcbiAgc2F2ZUV4dHJhUXVlc3Rpb25zXG59IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5pbXBvcnQgUmlnaHREcmF3ZXIgZnJvbSBcIi4uL1JpZ2h0RHJhd2VyXCI7XG5pbXBvcnQgQXNzaWduRVFGb3JtIGZyb20gXCIuLi9Bc3NpZ25FUUZvcm1cIjtcbmltcG9ydCBBc3NpZ25Gb3JtIGZyb20gXCIuL2NvbXBvbmVudHMvQXNzaWduRm9ybVwiO1xuaW1wb3J0IHsgdHJhbnNmb3JtQW53ZXJzRm9ybWF0IH0gZnJvbSBcIi4uL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvdXRpbHNcIjtcbmltcG9ydCB7IE1JTExJU0VDX1RPX1NFQyB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCBDb3B5VGV4dCBmcm9tIFwiLi4vQ29weVRleHRcIjtcbmltcG9ydCBDdXN0b21EaWFsb2dDb250ZXh0IGZyb20gXCIuLi9DdXN0b21EaWFsb2cvQ29udGV4dFwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBUaWNrZXRBc3NpZ24gPSAoe1xuICBzdW1taXQsXG4gIHRpY2tldElkLFxuICBvcmRlcklkLFxuICBvd25lcklkLFxuICBvcGVuLFxuICBvbkNsb3NlXG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuICBjb25zdCBbdGlja2V0QXNzaWduZWQsIHNldFRpY2tldEFzc2lnbmVkXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgeyBzZXRNZXNzYWdlLCBzZXRNZXNzYWdlQ2FsbGJhY2sgfSA9IHVzZUNvbnRleHQoQ3VzdG9tRGlhbG9nQ29udGV4dCk7XG4gIGNvbnN0IHtcbiAgICBjdXJyZW50VGlja2V0OiB0aWNrZXQsXG4gICAgZXh0cmFRdWVzdGlvbnMsXG4gICAgdXNlcjogeyB1c2VyUHJvZmlsZSB9XG4gIH0gPSB1c2VTZWxlY3Rvcigoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICh0aWNrZXRJZCAmJiBvcmRlcklkICYmIG9wZW4pIHtcbiAgICAgIGRpc3BhdGNoKGdldFRpY2tldCh0aWNrZXRJZCwgb3JkZXJJZCkpO1xuICAgIH1cbiAgfSwgW3RpY2tldElkLCBvcmRlcklkLCBvcGVuXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAob3duZXJJZCAmJiBvcGVuKSB7XG4gICAgICBkaXNwYXRjaChnZXRFeHRyYVF1ZXN0aW9ucyhvd25lcklkKSk7XG4gICAgfVxuICB9LCBbb3duZXJJZF0pO1xuXG4gIGNvbnN0IG9uQXNzaWduVG9PdGhlciA9ICh2YWwpID0+IHtcbiAgICBjb25zdCB7IG5ld19hdHRlbmRlZV9lbWFpbCwgcGVyc29uYWxfbWVzc2FnZSB9ID0gdmFsO1xuICAgIHJldHVybiBkaXNwYXRjaChcbiAgICAgIGFzc2lnbkF0dGVuZGVlKG9yZGVySWQsIHRpY2tldElkLCBuZXdfYXR0ZW5kZWVfZW1haWwsIHBlcnNvbmFsX21lc3NhZ2UpXG4gICAgKS50aGVuKCgpID0+IHtcbiAgICAgIHNldFRpY2tldEFzc2lnbmVkKHRydWUpO1xuICAgIH0pO1xuICB9O1xuXG4gIGNvbnN0IG9uQXNzaWduVG9NZSA9ICgpID0+XG4gICAgZGlzcGF0Y2goYXNzaWduQXR0ZW5kZWUob3JkZXJJZCwgdGlja2V0SWQsIHVzZXJQcm9maWxlLmVtYWlsKSkudGhlbigoKSA9PiB7XG4gICAgICBzZXRUaWNrZXRBc3NpZ25lZCh0cnVlKTtcbiAgICB9KTtcblxuICBjb25zdCBvbkNsb3NlRVFGb3JtID0gKCkgPT4ge1xuICAgIHNldFRpY2tldEFzc2lnbmVkKGZhbHNlKTtcbiAgICBvbkNsb3NlKCk7XG4gIH07XG5cbiAgY29uc3Qgb25DbG9zZVNhdmVNZXNzYWdlID0gKCkgPT4ge1xuICAgIHNldFRpY2tldEFzc2lnbmVkKGZhbHNlKTtcbiAgICBzZXRUaW1lb3V0KG9uQ2xvc2UsIE1JTExJU0VDX1RPX1NFQyk7XG4gIH07XG5cbiAgY29uc3Qgb25TYXZlRVEgPSAodmFsKSA9PiB7XG4gICAgY29uc3QgYW5zd2VycyA9IHRyYW5zZm9ybUFud2Vyc0Zvcm1hdCh2YWwpO1xuXG4gICAgcmV0dXJuIGRpc3BhdGNoKHNhdmVFeHRyYVF1ZXN0aW9ucyh0aWNrZXQsIGFuc3dlcnMpKVxuICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICBzZXRNZXNzYWdlKHtcbiAgICAgICAgICB0aXRsZTogdChcInRpY2tldF9hc3NpZ24uc2F2aW5nX3N1Y2Nlc3NcIiksXG4gICAgICAgICAgYm9keTogdChcInRpY2tldF9hc3NpZ24uc2F2aW5nX3N1Y2Nlc3NfZGVzY3JpcHRpb25cIilcbiAgICAgICAgfSk7XG4gICAgICAgIHNldE1lc3NhZ2VDYWxsYmFjayhvbkNsb3NlU2F2ZU1lc3NhZ2UpO1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlcnIpID0+IHtcbiAgICAgICAgc2V0TWVzc2FnZSh7XG4gICAgICAgICAgdGl0bGU6IHQoXCJ0aWNrZXRfYXNzaWduLnNhdmluZ19lcnJvclwiKSxcbiAgICAgICAgICBib2R5OiBlcnIudG9TdHJpbmcoKVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KCk7XG4gICAgICB9KTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxSaWdodERyYXdlclxuICAgICAgaWQ9XCJyZWFzc2lnbkRyYXdlclwiXG4gICAgICB0aXRsZT17dChcInRpY2tldF9hc3NpZ24uYXNzaWduX3RpY2tldFwiKX1cbiAgICAgIG9wZW49e29wZW59XG4gICAgICBvbkNsb3NlPXtvbkNsb3NlfVxuICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0QXNzaWduQ29udGFpbmVyfVxuICAgID5cbiAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuYWxpZ25DZW50ZXJ9PlxuICAgICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiYm9keTFcIiBndXR0ZXJCb3R0b20gY2xhc3NOYW1lPXtzdHlsZXMuc3VidGl0bGV9PlxuICAgICAgICAgIHt0KFwidGlja2V0X2Fzc2lnbi5wdXJjaGFzZWRfYnlcIil9IHt0aWNrZXQ/Lm9yZGVyPy5vd25lcl9lbWFpbH1cbiAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiYm9keTFcIiBndXR0ZXJCb3R0b20gY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJOb30+XG4gICAgICAgICAgPENvcHlUZXh0XG4gICAgICAgICAgICB0ZXh0PXt0aWNrZXQ/Lm9yZGVyPy5udW1iZXJ9XG4gICAgICAgICAgICByZXZlcnNlZFxuICAgICAgICAgICAgd2lkdGg9ezI1MH1cbiAgICAgICAgICAgIHRvb2x0aXBUZXh0PXt0KFwib3JkZXJfc3VtbWFyeS5jb3B5X29yZGVyX251bWJlclwiKX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICA8L0JveD5cbiAgICAgIHt0aWNrZXQgJiYgIXRpY2tldEFzc2lnbmVkICYmIChcbiAgICAgICAgPD5cbiAgICAgICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmFsaWduQ2VudGVyfT5cbiAgICAgICAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJoNFwiIGd1dHRlckJvdHRvbSBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRUeXBlfT5cbiAgICAgICAgICAgICAge3RpY2tldD8udHlwZT8ubmFtZX1cbiAgICAgICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuYXNzaWduQnRufVxuICAgICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICAgICAgICB2YXJpYW50PVwiY29udGFpbmVkXCJcbiAgICAgICAgICAgICAgb25DbGljaz17b25Bc3NpZ25Ub01lfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7dChcInRpY2tldF9hc3NpZ24uYXNzaWduX3RvX21lXCIpfVxuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgPERpdmlkZXIgdmFyaWFudD1cIm1pZGRsZVwiPiZuYnNwOyZuYnNwO29yJm5ic3A7Jm5ic3A7PC9EaXZpZGVyPlxuICAgICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuYXR0ZW5kZWVDb250YWluZXJ9PlxuICAgICAgICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5hbGlnbkNlbnRlcn0+XG4gICAgICAgICAgICAgIDxUeXBvZ3JhcGh5XG4gICAgICAgICAgICAgICAgdmFyaWFudD1cImg0XCJcbiAgICAgICAgICAgICAgICBndXR0ZXJCb3R0b21cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5hdHRlbmRlZUluZm9UaXRsZX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt0KFwidGlja2V0X2Fzc2lnbi5hc3NpZ25fdG9fc29tZW9uZV9lbHNlXCIpfVxuICAgICAgICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICAgICAgICAgIDxUeXBvZ3JhcGh5XG4gICAgICAgICAgICAgICAgdmFyaWFudD1cImJvZHkxXCJcbiAgICAgICAgICAgICAgICBndXR0ZXJCb3R0b21cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5hdHRlbmRlZUluZm9Ob3RlfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfYXNzaWduLmVudGVyX2VtYWlsX25vdGVcIil9XG4gICAgICAgICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAgPEFzc2lnbkZvcm1cbiAgICAgICAgICAgICAgb25TdWJtaXQ9e29uQXNzaWduVG9PdGhlcn1cbiAgICAgICAgICAgICAgb25DbG9zZT17b25DbG9zZX1cbiAgICAgICAgICAgICAgc2F2ZUxhYmVsPXt0KFwidGlja2V0X2Fzc2lnbi5zYXZlX2xhYmVsXCIpfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L0JveD5cbiAgICAgICAgPC8+XG4gICAgICApfVxuICAgICAge3RpY2tldCAmJiB0aWNrZXRBc3NpZ25lZCAmJiAoXG4gICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuYXR0ZW5kZWVDb250YWluZXJ9PlxuICAgICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuYWxpZ25DZW50ZXJ9PlxuICAgICAgICAgICAgPFR5cG9ncmFwaHlcbiAgICAgICAgICAgICAgdmFyaWFudD1cImg0XCJcbiAgICAgICAgICAgICAgZ3V0dGVyQm90dG9tXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmF0dGVuZGVlSW5mb1RpdGxlfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7dChcInRpY2tldF9hc3NpZ24uYXNzaWduX3RvX3NvbWVvbmVfZWxzZVwiKX1cbiAgICAgICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgICAgIDxUeXBvZ3JhcGh5XG4gICAgICAgICAgICAgIHZhcmlhbnQ9XCJib2R5MVwiXG4gICAgICAgICAgICAgIGd1dHRlckJvdHRvbVxuICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5hdHRlbmRlZUluZm9Ob3RlfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7dChcInRpY2tldF9hc3NpZ24uZW50ZXJfZW1haWxfbm90ZVwiKX1cbiAgICAgICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgICA8L0JveD5cbiAgICAgICAgICA8QXNzaWduRm9ybVxuICAgICAgICAgICAgb25TdWJtaXQ9e29uQXNzaWduVG9PdGhlcn1cbiAgICAgICAgICAgIG9uQ2xvc2U9e29uQ2xvc2V9XG4gICAgICAgICAgICBzYXZlTGFiZWw9e3QoXCJ0aWNrZXRfYXNzaWduLnNhdmVfbGFiZWxcIil9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9Cb3g+XG4gICAgICApfVxuICAgICAge3RpY2tldCAmJiB0aWNrZXRBc3NpZ25lZCAmJiAoXG4gICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuYXR0ZW5kZWVDb250YWluZXJ9PlxuICAgICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuYWxpZ25DZW50ZXJ9PlxuICAgICAgICAgICAgPFR5cG9ncmFwaHlcbiAgICAgICAgICAgICAgdmFyaWFudD1cImg0XCJcbiAgICAgICAgICAgICAgZ3V0dGVyQm90dG9tXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmF0dGVuZGVlSW5mb1RpdGxlfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7dChcInRpY2tldF9hc3NpZ24uYXNzaWduZWRfdG9cIil9XG4gICAgICAgICAgICAgIDxiciAvPlxuICAgICAgICAgICAgICB7dGlja2V0Py5vd25lcj8uZW1haWx9XG4gICAgICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICAgICAgICA8VHlwb2dyYXBoeVxuICAgICAgICAgICAgICB2YXJpYW50PVwiYm9keTFcIlxuICAgICAgICAgICAgICBndXR0ZXJCb3R0b21cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuYXR0ZW5kZWVJbmZvTm90ZX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfYXNzaWduLmNvbXBsZXRlX2luZm9cIil9XG4gICAgICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgPEFzc2lnbkVRRm9ybVxuICAgICAgICAgICAgdGlja2V0PXt0aWNrZXR9XG4gICAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICAgIGV4dHJhUXVlc3Rpb25zPXtleHRyYVF1ZXN0aW9uc31cbiAgICAgICAgICAgIG9uU3VibWl0PXtvblNhdmVFUX1cbiAgICAgICAgICAgIG9uQ2xvc2U9e29uQ2xvc2VFUUZvcm19XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9Cb3g+XG4gICAgICApfVxuICAgIDwvUmlnaHREcmF3ZXI+XG4gICk7XG59O1xuXG5UaWNrZXRBc3NpZ24ucHJvcFR5cGVzID0ge1xuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIHRpY2tldElkOiBQcm9wVHlwZXMubnVtYmVyLFxuICBvcmRlcklkOiBQcm9wVHlwZXMubnVtYmVyLFxuICBvd25lcklkOiBQcm9wVHlwZXMubnVtYmVyLFxuICBvcGVuOiBQcm9wVHlwZXMuYm9vbCxcbiAgb25DbG9zZTogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFRpY2tldEFzc2lnbjtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTcgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IFRleHRGaWVsZCwgQXV0b2NvbXBsZXRlLCBUeXBvZ3JhcGh5IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHF1ZXJ5UmVnaXN0cmF0aW9uQ29tcGFuaWVzIH0gZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvcXVlcnktYWN0aW9uc1wiO1xuaW1wb3J0IHsgVElDS0VUX0FUVEVOREVFX0tFWVMgfSBmcm9tIFwiLi4vLi4vY29uc3RhbnRzXCI7XG5cbmNvbnN0IENvbXBhbnlGaWVsZCA9ICh7IGZvcm1paywgc3VtbWl0SWQsIGlzUmVxdWlyZWQgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IFtpbnB1dFZhbHVlLCBzZXRJbnB1dFZhbHVlXSA9IFJlYWN0LnVzZVN0YXRlKFwiXCIpO1xuICBjb25zdCBbb3B0aW9ucywgc2V0T3B0aW9uc10gPSBSZWFjdC51c2VTdGF0ZShbXSk7XG4gIGNvbnN0IHsgZXJyb3JzLCB2YWx1ZXMsIHRvdWNoZWQsIHNldEZpZWxkVG91Y2hlZCwgc2V0RmllbGRWYWx1ZSB9ID0gZm9ybWlrO1xuICBjb25zdCBuYW1lID0gVElDS0VUX0FUVEVOREVFX0tFWVMuY29tcGFueTtcbiAgY29uc3QgdmFsdWUgPSB2YWx1ZXNbbmFtZV07XG4gIGNvbnN0IGVycm9yID0gdG91Y2hlZFtuYW1lXSAmJiBCb29sZWFuKGVycm9yc1tuYW1lXSk7XG4gIGNvbnN0IGhlbHBlclRleHQgPSB0b3VjaGVkW25hbWVdICYmIGVycm9yc1tuYW1lXTtcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChpbnB1dFZhbHVlID09PSBcIlwiKSB7XG4gICAgICBzZXRPcHRpb25zKHZhbHVlID8gW3ZhbHVlXSA6IFtdKTtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcXVlcnlSZWdpc3RyYXRpb25Db21wYW5pZXMoc3VtbWl0SWQsIGlucHV0VmFsdWUsIChyZXN1bHRzKSA9PiB7XG4gICAgICBsZXQgbmV3T3B0aW9ucyA9IFtdO1xuXG4gICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgbmV3T3B0aW9ucyA9IFt2YWx1ZV07XG4gICAgICB9XG5cbiAgICAgIGlmIChyZXN1bHRzKSB7XG4gICAgICAgIG5ld09wdGlvbnMgPSBbLi4ubmV3T3B0aW9ucywgLi4ucmVzdWx0c107XG4gICAgICB9XG5cbiAgICAgIHNldE9wdGlvbnMobmV3T3B0aW9ucyk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfSwgW3ZhbHVlLCBpbnB1dFZhbHVlXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8QXV0b2NvbXBsZXRlXG4gICAgICBuYW1lPXtuYW1lfVxuICAgICAgb3B0aW9ucz17b3B0aW9uc31cbiAgICAgIGF1dG9Db21wbGV0ZVxuICAgICAgZnJlZVNvbG9cbiAgICAgIGluY2x1ZGVJbnB1dEluTGlzdFxuICAgICAgZmlsdGVyU2VsZWN0ZWRPcHRpb25zXG4gICAgICB2YWx1ZT17dmFsdWV9XG4gICAgICBvbkJsdXI9eygpID0+IHNldEZpZWxkVG91Y2hlZChuYW1lLCB0cnVlLCB0cnVlKX1cbiAgICAgIGdldE9wdGlvbkxhYmVsPXsob3B0aW9uKSA9PiB7XG4gICAgICAgIC8vIFZhbHVlIHNlbGVjdGVkIHdpdGggZW50ZXIsIHJpZ2h0IGZyb20gdGhlIGlucHV0XG4gICAgICAgIGlmICh0eXBlb2Ygb3B0aW9uID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgcmV0dXJuIG9wdGlvbjtcbiAgICAgICAgfVxuICAgICAgICAvLyBBZGQgXCJ4eHhcIiBvcHRpb24gY3JlYXRlZCBkeW5hbWljYWxseVxuICAgICAgICBpZiAob3B0aW9uLmlucHV0VmFsdWUpIHtcbiAgICAgICAgICByZXR1cm4gb3B0aW9uLmlucHV0VmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgLy8gUmVndWxhciBvcHRpb25cbiAgICAgICAgcmV0dXJuIG9wdGlvbi5uYW1lO1xuICAgICAgfX1cbiAgICAgIG9uQ2hhbmdlPXsoZXZlbnQsIG5ld1ZhbHVlKSA9PiB7XG4gICAgICAgIGNvbnN0IHRtcFZhbHVlID0gbmV3VmFsdWU/LmlucHV0VmFsdWUgfHwgbmV3VmFsdWU7XG4gICAgICAgIHNldE9wdGlvbnModG1wVmFsdWUgPyBbdG1wVmFsdWUsIC4uLm9wdGlvbnNdIDogb3B0aW9ucyk7XG4gICAgICAgIHNldEZpZWxkVmFsdWUobmFtZSwgdG1wVmFsdWUpO1xuICAgICAgfX1cbiAgICAgIG9uSW5wdXRDaGFuZ2U9eyhldmVudCwgbmV3SW5wdXRWYWx1ZSkgPT4ge1xuICAgICAgICBzZXRJbnB1dFZhbHVlKG5ld0lucHV0VmFsdWUpO1xuICAgICAgfX1cbiAgICAgIGZpbHRlck9wdGlvbnM9eyhvcHRpb25zLCBwYXJhbXMpID0+IHtcbiAgICAgICAgY29uc3QgeyBpbnB1dFZhbHVlIH0gPSBwYXJhbXM7XG4gICAgICAgIGNvbnN0IGZpbHRlcmVkID0gWy4uLm9wdGlvbnNdO1xuICAgICAgICAvLyBTdWdnZXN0IHRoZSBjcmVhdGlvbiBvZiBhIG5ldyB2YWx1ZVxuICAgICAgICBjb25zdCBpc0V4aXN0aW5nID0gb3B0aW9ucy5zb21lKFxuICAgICAgICAgIChvcHRpb24pID0+IGlucHV0VmFsdWUgPT09IG9wdGlvbi50aXRsZVxuICAgICAgICApO1xuICAgICAgICBpZiAoaW5wdXRWYWx1ZSAhPT0gXCJcIiAmJiAhaXNFeGlzdGluZykge1xuICAgICAgICAgIGZpbHRlcmVkLnB1c2goe1xuICAgICAgICAgICAgaW5wdXRWYWx1ZSxcbiAgICAgICAgICAgIG5hbWU6IGBTZWxlY3QgXCIke2lucHV0VmFsdWV9XCJgXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmlsdGVyZWQ7XG4gICAgICB9fVxuICAgICAgcmVuZGVySW5wdXQ9eyhwYXJhbXMpID0+IChcbiAgICAgICAgPFRleHRGaWVsZFxuICAgICAgICAgIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nICovXG4gICAgICAgICAgey4uLnBhcmFtc31cbiAgICAgICAgICBsYWJlbD17dChcInRpY2tldF9kZXRhaWwuYXR0ZW5kZWVfY29tcGFueVwiKX1cbiAgICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgICByZXF1aXJlZD17aXNSZXF1aXJlZH1cbiAgICAgICAgICBoZWxwZXJUZXh0PXtoZWxwZXJUZXh0fVxuICAgICAgICAgIGVycm9yPXtlcnJvcn1cbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgICByZW5kZXJPcHRpb249eyhwcm9wcywgb3B0aW9uKSA9PiB7XG4gICAgICAgIGNvbnN0IHsga2V5LCAuLi5vcHRpb25Qcm9wcyB9ID0gcHJvcHM7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2pzeC1wcm9wcy1uby1zcHJlYWRpbmdcbiAgICAgICAgICA8bGkga2V5PXtrZXl9IHsuLi5vcHRpb25Qcm9wc30+XG4gICAgICAgICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiYm9keTJcIiBzeD17eyBjb2xvcjogXCJ0ZXh0LnNlY29uZGFyeVwiIH19PlxuICAgICAgICAgICAgICB7b3B0aW9uLm5hbWV9XG4gICAgICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICAgICAgPC9saT5cbiAgICAgICAgKTtcbiAgICAgIH19XG4gICAgLz5cbiAgKTtcbn07XG5cbkNvbXBhbnlGaWVsZC5wcm9wVHlwZXMgPSB7XG4gIGZvcm1pazogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBzdW1taXRJZDogUHJvcFR5cGVzLm51bWJlci5pc1JlcXVpcmVkXG59O1xuXG5leHBvcnQgZGVmYXVsdCBDb21wYW55RmllbGQ7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQge1xuICBCb3gsXG4gIENoZWNrYm94LFxuICBGb3JtQ29udHJvbCxcbiAgRm9ybUNvbnRyb2xMYWJlbCxcbiAgRm9ybUhlbHBlclRleHRcbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBSYXdIVE1MIGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL2NvbXBvbmVudHMvcmF3LWh0bWxcIjtcbmltcG9ydCB7IFRJQ0tFVF9BVFRFTkRFRV9LRVlTIH0gZnJvbSBcIi4uLy4uL2NvbnN0YW50c1wiO1xuXG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IFJlZ2lzdHJhdGlvbkRpc2NsYWltZXIgPSAoe1xuICBkaXNjbGFpbWVyLFxuICBmb3JtaWssXG4gIGlzRGlzYWJsZWQgPSBmYWxzZSxcbiAgaXNSZXF1aXJlZCA9IHRydWVcbn0pID0+IHtcbiAgY29uc3QgbmFtZSA9IFRJQ0tFVF9BVFRFTkRFRV9LRVlTLmRpc2NsYWltZXJBY2NlcHRlZDtcbiAgY29uc3QgeyBlcnJvcnMsIHZhbHVlcywgdG91Y2hlZCwgaGFuZGxlQ2hhbmdlLCBoYW5kbGVCbHVyIH0gPSBmb3JtaWs7XG4gIGNvbnN0IHZhbHVlID0gdmFsdWVzW25hbWVdO1xuICBjb25zdCBlcnJvciA9IHRvdWNoZWRbbmFtZV0gJiYgQm9vbGVhbihlcnJvcnNbbmFtZV0pO1xuICBjb25zdCBoZWxwZXJUZXh0ID0gdG91Y2hlZFtuYW1lXSAmJiBlcnJvcnNbbmFtZV07XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLndyYXBwZXJ9PlxuICAgICAgPEZvcm1Db250cm9sIGZ1bGxXaWR0aCBlcnJvcj17ZXJyb3J9PlxuICAgICAgICA8Rm9ybUNvbnRyb2xMYWJlbFxuICAgICAgICAgIGNvbnRyb2w9e1xuICAgICAgICAgICAgPENoZWNrYm94XG4gICAgICAgICAgICAgIG5hbWU9e25hbWV9XG4gICAgICAgICAgICAgIGNoZWNrZWQ9eyEhdmFsdWV9XG4gICAgICAgICAgICAgIGxhYmVsPXs8UmF3SFRNTD57ZGlzY2xhaW1lcn08L1Jhd0hUTUw+fVxuICAgICAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlQ2hhbmdlfVxuICAgICAgICAgICAgICBvbkJsdXI9e2hhbmRsZUJsdXJ9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIH1cbiAgICAgICAgICBsYWJlbD17PFJhd0hUTUw+e2Rpc2NsYWltZXJ9PC9SYXdIVE1MPn1cbiAgICAgICAgICBkaXNhYmxlZD17aXNEaXNhYmxlZH1cbiAgICAgICAgICByZXF1aXJlZD17aXNSZXF1aXJlZH1cbiAgICAgICAgLz5cbiAgICAgICAge2Vycm9yICYmIDxGb3JtSGVscGVyVGV4dD57aGVscGVyVGV4dCA/PyBcIiBcIn08L0Zvcm1IZWxwZXJUZXh0Pn1cbiAgICAgIDwvRm9ybUNvbnRyb2w+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5SZWdpc3RyYXRpb25EaXNjbGFpbWVyLnByb3BUeXBlcyA9IHtcbiAgZGlzY2xhaW1lcjogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICBmb3JtaWs6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgaXNEaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gIGlzUmVxdWlyZWQ6IFByb3BUeXBlcy5ib29sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBSZWdpc3RyYXRpb25EaXNjbGFpbWVyO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgVGV4dEZpZWxkIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcblxuY29uc3QgVGlja2V0RGVsZWdhdGlvbkZpZWxkcyA9ICh7IGZvcm1payB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8VGV4dEZpZWxkXG4gICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICBpZD1cImRlbGVnYXRlZF9maXJzdF9uYW1lXCJcbiAgICAgICAgbGFiZWw9e3QoXCJ0aWNrZXRfZGV0YWlsLmZpcnN0X25hbWVcIil9XG4gICAgICAgIHZhbHVlPXtmb3JtaWsudmFsdWVzLmRlbGVnYXRlZF9maXJzdF9uYW1lfVxuICAgICAgICBvbkNoYW5nZT17Zm9ybWlrLmhhbmRsZUNoYW5nZX1cbiAgICAgICAgb25CbHVyPXtmb3JtaWsuaGFuZGxlQmx1cn1cbiAgICAgICAgZXJyb3I9e1xuICAgICAgICAgIGZvcm1pay50b3VjaGVkLmRlbGVnYXRlZF9maXJzdF9uYW1lICYmXG4gICAgICAgICAgQm9vbGVhbihmb3JtaWsuZXJyb3JzLmRlbGVnYXRlZF9maXJzdF9uYW1lKVxuICAgICAgICB9XG4gICAgICAgIGhlbHBlclRleHQ9e1xuICAgICAgICAgIGZvcm1pay50b3VjaGVkLmRlbGVnYXRlZF9maXJzdF9uYW1lICYmXG4gICAgICAgICAgZm9ybWlrLmVycm9ycy5kZWxlZ2F0ZWRfZmlyc3RfbmFtZVxuICAgICAgICB9XG4gICAgICAvPlxuICAgICAgPFRleHRGaWVsZFxuICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgaWQ9XCJkZWxlZ2F0ZWRfbGFzdF9uYW1lXCJcbiAgICAgICAgbGFiZWw9e3QoXCJ0aWNrZXRfZGV0YWlsLmxhc3RfbmFtZVwiKX1cbiAgICAgICAgdmFsdWU9e2Zvcm1pay52YWx1ZXMuZGVsZWdhdGVkX2xhc3RfbmFtZX1cbiAgICAgICAgb25DaGFuZ2U9e2Zvcm1pay5oYW5kbGVDaGFuZ2V9XG4gICAgICAgIG9uQmx1cj17Zm9ybWlrLmhhbmRsZUJsdXJ9XG4gICAgICAgIGVycm9yPXtcbiAgICAgICAgICBmb3JtaWsudG91Y2hlZC5kZWxlZ2F0ZWRfbGFzdF9uYW1lICYmXG4gICAgICAgICAgQm9vbGVhbihmb3JtaWsuZXJyb3JzLmRlbGVnYXRlZF9sYXN0X25hbWUpXG4gICAgICAgIH1cbiAgICAgICAgaGVscGVyVGV4dD17XG4gICAgICAgICAgZm9ybWlrLnRvdWNoZWQuZGVsZWdhdGVkX2xhc3RfbmFtZSAmJlxuICAgICAgICAgIGZvcm1pay5lcnJvcnMuZGVsZWdhdGVkX2xhc3RfbmFtZVxuICAgICAgICB9XG4gICAgICAvPlxuICAgIDwvPlxuICApO1xufTtcblxuVGlja2V0RGVsZWdhdGlvbkZpZWxkcy5wcm9wVHlwZXMgPSB7XG4gIGZvcm1pazogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkXG59O1xuXG5leHBvcnQgZGVmYXVsdCBUaWNrZXREZWxlZ2F0aW9uRmllbGRzO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQm94LCBUeXBvZ3JhcGh5IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZUZvcm1payB9IGZyb20gXCJmb3JtaWtcIjtcbmltcG9ydCBFeHRyYVF1ZXN0aW9uc0ZpZWxkcyBmcm9tIFwiLi4vLi4vLi4vRXh0cmFRdWVzdGlvbnNGaWVsZHNcIjtcblxuaW1wb3J0IHtcbiAgZ2V0VHlwZVZhbHVlLFxuICB0b1NsdWdcbn0gZnJvbSBcIi4uLy4uLy4uL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvdXRpbHNcIjtcblxuaW1wb3J0IFRpY2tldERlbGVnYXRpb25GaWVsZHMgZnJvbSBcIi4uL1RpY2tldERlbGVnYXRpb25GaWVsZHNcIjtcbmltcG9ydCBUaWNrZXRPd25lckZpZWxkcyBmcm9tIFwiLi4vVGlja2V0T3duZXJGaWVsZHNcIjtcbmltcG9ydCBSZWdpc3RyYXRpb25EaXNjbGFpbWVyIGZyb20gXCIuLi9SZWdpc3RyYXRpb25EaXNjbGFpbWVyL1JlZ2lzdHJhdGlvbkRpc2NsYWltZXJcIjtcbmltcG9ydCBGb3JtRm9vdGVyIGZyb20gXCIuLi8uLi8uLi9Gb3JtRm9vdGVyXCI7XG5pbXBvcnQgdXNlU2Nyb2xsVG9FcnJvciBmcm9tIFwiLi4vLi4vLi4vLi4vaG9va3MvdXNlU2Nyb2xsVG9FcnJvclwiO1xuaW1wb3J0IHtcbiAgcGFyc2VBbnN3ZXJzLFxuICBidWlsZFZhbGlkYXRpb25TY2hlbWFcbn0gZnJvbSBcIi4uLy4uLy4uLy4uL3V0aWxzL3RpY2tldFV0aWxzXCI7XG5cbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi4vLi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IFRpY2tldEZvcm0gPSAoe1xuICB0aWNrZXQsXG4gIGV4dHJhUXVlc3Rpb25zLFxuICBzdW1taXQsXG4gIGNhbkVkaXQsXG4gIG9uU3VibWl0LFxuICBvbkNsb3NlXG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgdGlja2V0TWFuYWdlciA9IHRpY2tldD8ubWFuYWdlcjtcbiAgLyogRElTQUJMRSBERUxFR0FUSU9OIEZUTSAqL1xuICBjb25zdCBhbGxvd3NEZWxlZ2F0aW9uID0gdGlja2V0Py50aWNrZXRfdHlwZT8uYWxsb3dzX3RvX2RlbGVnYXRlICYmIGZhbHNlO1xuICBjb25zdCBhbnN3ZXJzID0gdGlja2V0Py5vd25lcj8uZXh0cmFfcXVlc3Rpb25zLnJlZHVjZSgocmVzLCBhbnMpID0+IHtcbiAgICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcoYW5zLnF1ZXN0aW9uLm5hbWUsIGFucy5xdWVzdGlvbi5pZCk7XG4gICAgcmVzW3F1ZXN0aW9uU2x1Z10gPSBnZXRUeXBlVmFsdWUoYW5zLnZhbHVlLCBhbnMucXVlc3Rpb24udHlwZSk7XG4gICAgcmV0dXJuIHJlcztcbiAgfSwge30pO1xuXG4gIGNvbnN0IGZvcm1payA9IHVzZUZvcm1payh7XG4gICAgaW5pdGlhbFZhbHVlczogcGFyc2VBbnN3ZXJzKFxuICAgICAgdGlja2V0Lm93bmVyLFxuICAgICAgZXh0cmFRdWVzdGlvbnMsXG4gICAgICBhbnN3ZXJzLFxuICAgICAgdGlja2V0TWFuYWdlcixcbiAgICAgIGFsbG93c0RlbGVnYXRpb24sXG4gICAgICB0cnVlLFxuICAgICAgdHJ1ZVxuICAgICksXG4gICAgdmFsaWRhdGlvblNjaGVtYTogYnVpbGRWYWxpZGF0aW9uU2NoZW1hKFxuICAgICAgZXh0cmFRdWVzdGlvbnMsXG4gICAgICB0cnVlLFxuICAgICAgYWxsb3dzRGVsZWdhdGlvbixcbiAgICAgIHN1bW1pdC5yZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9tYW5kYXRvcnlcbiAgICApLFxuICAgIG9uU3VibWl0OiAodmFsdWVzKSA9PiB7XG4gICAgICBjb25zdCByZWxldmFudEFuc3dlcnMgPSBwYXJzZUFuc3dlcnMoXG4gICAgICAgIHRpY2tldC5vd25lcixcbiAgICAgICAgZXh0cmFRdWVzdGlvbnMsXG4gICAgICAgIHZhbHVlcyxcbiAgICAgICAgdGlja2V0TWFuYWdlcixcbiAgICAgICAgYWxsb3dzRGVsZWdhdGlvbixcbiAgICAgICAgdHJ1ZSxcbiAgICAgICAgdHJ1ZSxcbiAgICAgICAgdHJ1ZVxuICAgICAgKTtcblxuICAgICAgcmV0dXJuIG9uU3VibWl0KHJlbGV2YW50QW5zd2Vycyk7XG4gICAgfSxcbiAgICBlbmFibGVSZWluaXRpYWxpemU6IHRydWVcbiAgfSk7XG5cbiAgLy8gY29uc29sZS5sb2coXCJTVU1NSVQ6IFwiLCBzdW1taXQpO1xuICAvLyBjb25zb2xlLmxvZyhcIlRJQ0tFVDogXCIsIHRpY2tldCk7XG4gIC8vIGNvbnNvbGUubG9nKFwiUVVFU1RJVU9OczogXCIsIGV4dHJhUXVlc3Rpb25zKTtcbiAgLy8gY29uc29sZS5sb2coXCJBTlNXRVJTOiBcIiwgYW5zd2Vycyk7XG4gIC8vIGNvbnNvbGUubG9nKFwiRVJST1JzOiBcIiwgZm9ybWlrLmVycm9ycyk7XG4gIC8vIGNvbnNvbGUubG9nKFwiVkFMVUVTOiBcIiwgZm9ybWlrLnZhbHVlcyk7XG4gIC8vIGNvbnNvbGUubG9nKFwiSU5JVElBTDogXCIsIGZvcm1pay5pbml0aWFsVmFsdWVzKTtcbiAgLy8gY29uc29sZS5sb2coXCJUT1VDSEVEOiBcIiwgZm9ybWlrLnRvdWNoZWQpO1xuXG4gIC8vIFNDUk9MTCBUTyBFUlJPUlxuICB1c2VTY3JvbGxUb0Vycm9yKGZvcm1paywgXCJkZXRhaWxzRHJhd2VyXCIpO1xuXG4gIHJldHVybiAoXG4gICAgPGZvcm0gb25TdWJtaXQ9e2Zvcm1pay5oYW5kbGVTdWJtaXR9IG5vVmFsaWRhdGU+XG4gICAgICA8VGlja2V0T3duZXJGaWVsZHNcbiAgICAgICAgZm9ybWlrPXtmb3JtaWt9XG4gICAgICAgIG93bmVyPXt0aWNrZXQub3duZXJ9XG4gICAgICAgIHN1bW1pdElkPXtzdW1taXQuaWR9XG4gICAgICAgIGRpc2FibGVkPXshY2FuRWRpdH1cbiAgICAgIC8+XG5cbiAgICAgIHthbGxvd3NEZWxlZ2F0aW9uICYmIChcbiAgICAgICAgPEJveD5cbiAgICAgICAgICA8VHlwb2dyYXBoeVxuICAgICAgICAgICAgdmFyaWFudD1cInN1YnRpdGxlMlwiXG4gICAgICAgICAgICBndXR0ZXJCb3R0b21cbiAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmRlbGVnYXRlZFRvfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt0KFwidGlja2V0X2RldGFpbC5kZWxlZ2F0ZWRfdG9cIil9XG4gICAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgICAgIDxUaWNrZXREZWxlZ2F0aW9uRmllbGRzIGZvcm1paz17Zm9ybWlrfSAvPlxuICAgICAgICA8L0JveD5cbiAgICAgICl9XG5cbiAgICAgIHtleHRyYVF1ZXN0aW9ucz8ubGVuZ3RoID4gMCAmJiAoXG4gICAgICAgIDxCb3g+XG4gICAgICAgICAgPGg2IGNsYXNzTmFtZT17c3R5bGVzLmFkZGl0aW9uYWxEZXRhaWxzfT5cbiAgICAgICAgICAgIHt0KFwidGlja2V0X2RldGFpbC5hZGl0aW9uYWxfZGV0YWlsc1wiKX1cbiAgICAgICAgICA8L2g2PlxuICAgICAgICAgIDxFeHRyYVF1ZXN0aW9uc0ZpZWxkc1xuICAgICAgICAgICAgZXh0cmFRdWVzdGlvbnM9e2V4dHJhUXVlc3Rpb25zfVxuICAgICAgICAgICAgYWxsb3dFZGl0PXtjYW5FZGl0fVxuICAgICAgICAgICAgZm9ybWlrPXtmb3JtaWt9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9Cb3g+XG4gICAgICApfVxuXG4gICAgICB7c3VtbWl0LnJlZ2lzdHJhdGlvbl9kaXNjbGFpbWVyX2NvbnRlbnQgJiYgKFxuICAgICAgICA8UmVnaXN0cmF0aW9uRGlzY2xhaW1lclxuICAgICAgICAgIGZvcm1paz17Zm9ybWlrfVxuICAgICAgICAgIGRpc2NsYWltZXI9e3N1bW1pdC5yZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9jb250ZW50fVxuICAgICAgICAgIGlzUmVxdWlyZWQ9e3N1bW1pdC5yZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9tYW5kYXRvcnl9XG4gICAgICAgICAgaXNEaXNhYmxlZD17IWNhbkVkaXR9XG4gICAgICAgIC8+XG4gICAgICApfVxuICAgICAgPEZvcm1Gb290ZXJcbiAgICAgICAgc2F2ZUxhYmVsPXt0KFwidGlja2V0X2RldGFpbC5zYXZlXCIpfVxuICAgICAgICBjYW5jZWxMYWJlbD17dChcInRpY2tldF9kZXRhaWwuY2FuY2VsXCIpfVxuICAgICAgICBvbkNsb3NlPXtvbkNsb3NlfVxuICAgICAgICBkaXNhYmxlZD17Zm9ybWlrLmlzU3VibWl0dGluZ31cbiAgICAgIC8+XG4gICAgPC9mb3JtPlxuICApO1xufTtcblxuVGlja2V0Rm9ybS5wcm9wVHlwZXMgPSB7XG4gIHRpY2tldDogUHJvcFR5cGVzLm9iamVjdCxcbiAgZXh0cmFRdWVzdGlvbnM6IFByb3BUeXBlcy5hcnJheS5pc1JlcXVpcmVkLFxuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgY2FuRWRpdDogUHJvcFR5cGVzLmJvb2wsXG4gIG9uU3VibWl0OiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkXG59O1xuXG5leHBvcnQgZGVmYXVsdCBUaWNrZXRGb3JtO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgQm94LCBUZXh0RmllbGQgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuXG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgeyBUSUNLRVRfQVRURU5ERUVfS0VZUyB9IGZyb20gXCIuLi8uLi9jb25zdGFudHNcIjtcbmltcG9ydCBDb21wYW55RmllbGQgZnJvbSBcIi4uL0NvbXBhbnlGaWVsZFwiO1xuXG5jb25zdCBUaWNrZXRPd25lckZpZWxkcyA9ICh7IGZvcm1paywgc3VtbWl0SWQsIGRpc2FibGVkIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCB7IGVycm9ycywgdmFsdWVzLCB0b3VjaGVkLCBoYW5kbGVDaGFuZ2UsIGhhbmRsZUJsdXIgfSA9IGZvcm1paztcblxuICByZXR1cm4gKFxuICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMud3JhcHBlcn0+XG4gICAgICA8VGV4dEZpZWxkXG4gICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICBuYW1lPXtUSUNLRVRfQVRURU5ERUVfS0VZUy5lbWFpbH1cbiAgICAgICAgbGFiZWw9e3QoXCJ0aWNrZXRfZGV0YWlsLmVtYWlsXCIpfVxuICAgICAgICBkaXNhYmxlZFxuICAgICAgICB2YWx1ZT17dmFsdWVzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmVtYWlsXX1cbiAgICAgIC8+XG4gICAgICB7W1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmZpcnN0TmFtZSwgVElDS0VUX0FUVEVOREVFX0tFWVMubGFzdE5hbWVdLm1hcChcbiAgICAgICAgKG5hbWUpID0+IChcbiAgICAgICAgICA8VGV4dEZpZWxkXG4gICAgICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgICAgIGtleT17bmFtZX1cbiAgICAgICAgICAgIG5hbWU9e25hbWV9XG4gICAgICAgICAgICBsYWJlbD17dChgdGlja2V0X2RldGFpbC4ke25hbWV9YCl9XG4gICAgICAgICAgICB2YWx1ZT17dmFsdWVzW25hbWVdfVxuICAgICAgICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX1cbiAgICAgICAgICAgIG9uQmx1cj17aGFuZGxlQmx1cn1cbiAgICAgICAgICAgIGVycm9yPXt0b3VjaGVkW25hbWVdICYmIEJvb2xlYW4oZXJyb3JzW25hbWVdKX1cbiAgICAgICAgICAgIGhlbHBlclRleHQ9e2Zvcm1pay50b3VjaGVkW25hbWVdICYmIGZvcm1pay5lcnJvcnNbbmFtZV19XG4gICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgIC8+XG4gICAgICAgIClcbiAgICAgICl9XG4gICAgICA8Q29tcGFueUZpZWxkIGZvcm1paz17Zm9ybWlrfSBzdW1taXRJZD17c3VtbWl0SWR9IGlzUmVxdWlyZWQgLz5cbiAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuaW5mb05vdGV9Pnt0KFwidGlja2V0X2RldGFpbC5pbmZvX25vdGVcIil9PC9Cb3g+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5UaWNrZXRPd25lckZpZWxkcy5wcm9wVHlwZXMgPSB7XG4gIGZvcm1pazogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkXG59O1xuXG5leHBvcnQgZGVmYXVsdCBUaWNrZXRPd25lckZpZWxkcztcbiIsImV4cG9ydCBjb25zdCBUSUNLRVRfQVRURU5ERUVfS0VZUyA9IHtcbiAgZW1haWw6IFwiYXR0ZW5kZWVfZW1haWxcIixcbiAgZmlyc3ROYW1lOiBcImF0dGVuZGVlX2ZpcnN0X25hbWVcIixcbiAgbGFzdE5hbWU6IFwiYXR0ZW5kZWVfbGFzdF9uYW1lXCIsXG4gIGNvbXBhbnk6IFwiYXR0ZW5kZWVfY29tcGFueVwiLFxuICBkaXNjbGFpbWVyQWNjZXB0ZWQ6IFwiZGlzY2xhaW1lcl9hY2NlcHRlZFwiXG59O1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCwgdXNlU2VsZWN0b3IgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCBRUkNvZGUgZnJvbSBcInJlYWN0LXFyLWNvZGVcIjtcbmltcG9ydCB7IEJveCwgQnV0dG9uLCBEcmF3ZXIsIEljb25CdXR0b24sIFR5cG9ncmFwaHkgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHtcbiAgQ2xvc2UgYXMgQ2xvc2VJY29uLFxuICBGaWxlRG93bmxvYWRPdXRsaW5lZCBhcyBEb3dubG9hZEljb24sXG4gIEVtYWlsT3V0bGluZWQgYXMgRW1haWxJY29uXG59IGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VUaWNrZXREZXRhaWxzIH0gZnJvbSBcIi4uLy4uL2hvb2tzL3VzZVRpY2tldERldGFpbHNcIjtcbmltcG9ydCBDb3B5VGV4dCBmcm9tIFwiLi4vQ29weVRleHRcIjtcbmltcG9ydCB1c2VHZXRUaWNrZXQgZnJvbSBcIi4uLy4uL2hvb2tzL3VzZUdldFRpY2tldFwiO1xuaW1wb3J0IHsgdHJhbnNmb3JtQW53ZXJzRm9ybWF0IH0gZnJvbSBcIi4uL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvdXRpbHNcIjtcbmltcG9ydCBDdXN0b21EaWFsb2cgZnJvbSBcIi4uL0N1c3RvbURpYWxvZ1wiO1xuaW1wb3J0IHsgTUlMTElTRUNfVE9fU0VDLCBUV09fSVRFTSB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCBUaWNrZXRGb3JtIGZyb20gXCIuL2NvbXBvbmVudHMvVGlja2V0Rm9ybVwiO1xuaW1wb3J0IHsgZ2V0VGlja2V0UERGLCBzYXZlVGlja2V0RGV0YWlscywgcmVzZW5kTm90aWZpY2F0aW9uIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcblxuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBUaWNrZXREZXRhaWwgPSAoe1xuICBzdW1taXQsXG4gIHRpY2tldElkLFxuICBvcmRlcklkLFxuICBvd25lcklkLFxuICBvcGVuLFxuICBvbkNsb3NlXG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuICBjb25zdCB7XG4gICAgdXNlcjogeyB1c2VyUHJvZmlsZSB9XG4gIH0gPSB1c2VTZWxlY3Rvcigoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlKTtcbiAgY29uc3QgeyB0aWNrZXQsIGV4dHJhUXVlc3Rpb25zIH0gPSB1c2VHZXRUaWNrZXQoXG4gICAgdGlja2V0SWQsXG4gICAgb3JkZXJJZCxcbiAgICBvd25lcklkLFxuICAgIG9wZW5cbiAgKTtcbiAgY29uc3QgW3NhdmVNZXNzYWdlLCBzZXRTYXZlTWVzc2FnZV0gPSB1c2VTdGF0ZShudWxsKTtcbiAgY29uc3QgW3NlbnRDb25maXJtYXRpb24sIHNldFNlbnRDb25maXJtYXRpb25dID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBpc1VzZXJPcmRlck93bmVyID0gdGlja2V0Py5vcmRlcj8ub3duZXJfaWQgPT09IHVzZXJQcm9maWxlPy5pZDtcbiAgY29uc3QgaXNVc2VyVGlja2V0T3duZXIgPSB0aWNrZXQ/Lm93bmVyPy5lbWFpbCA9PT0gdXNlclByb2ZpbGU/LmVtYWlsO1xuICBjb25zdCBjYW5FZGl0VGlja2V0RGF0YSA9XG4gICAgKGlzVXNlclRpY2tldE93bmVyIHx8IGlzVXNlck9yZGVyT3duZXIpICYmXG4gICAgc3VtbWl0LmFsbG93X3VwZGF0ZV9hdHRlbmRlZV9leHRyYV9xdWVzdGlvbnM7XG4gIGNvbnN0IHsgaXNDb21wbGV0ZSB9ID0gdXNlVGlja2V0RGV0YWlscyh0aWNrZXQpO1xuXG4gIGNvbnN0IG9uU2F2ZSA9ICh2YWwpID0+IHtcbiAgICBjb25zdCBhbnN3ZXJzID0gdHJhbnNmb3JtQW53ZXJzRm9ybWF0KHZhbCk7XG5cbiAgICByZXR1cm4gZGlzcGF0Y2goc2F2ZVRpY2tldERldGFpbHModGlja2V0LCBhbnN3ZXJzKSlcbiAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgc2V0U2F2ZU1lc3NhZ2Uoe1xuICAgICAgICAgIHRpdGxlOiB0KFwidGlja2V0X2RldGFpbC5zYXZpbmdfc3VjY2Vzc1wiKSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogdChcInRpY2tldF9kZXRhaWwuc2F2aW5nX3N1Y2Nlc3NfZGVzY3JpcHRpb25cIilcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGVycikgPT4ge1xuICAgICAgICBzZXRTYXZlTWVzc2FnZSh7XG4gICAgICAgICAgdGl0bGU6IHQoXCJ0aWNrZXRfZGV0YWlsLnNhdmluZ19lcnJvclwiKSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogZXJyLnRvU3RyaW5nKClcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCgpO1xuICAgICAgfSk7XG4gIH07XG5cbiAgY29uc3Qgb25DbG9zZVNhdmVNZXNzYWdlID0gKCkgPT4ge1xuICAgIHNldFNhdmVNZXNzYWdlKG51bGwpO1xuICAgIHNldFRpbWVvdXQob25DbG9zZSwgTUlMTElTRUNfVE9fU0VDKTtcbiAgfTtcblxuICBjb25zdCBkb3dubG9hZFRpY2tldFBkZiA9ICgpID0+IHtcbiAgICBkaXNwYXRjaChnZXRUaWNrZXRQREYodGlja2V0KSk7XG4gIH07XG5cbiAgY29uc3Qgb25TZW5kRW1haWwgPSAoKSA9PiB7XG4gICAgZGlzcGF0Y2gocmVzZW5kTm90aWZpY2F0aW9uKHRpY2tldCkpLnRoZW4oKCkgPT4ge1xuICAgICAgc2V0U2VudENvbmZpcm1hdGlvbih0cnVlKTtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBzZXRTZW50Q29uZmlybWF0aW9uKGZhbHNlKTtcbiAgICAgIH0sIE1JTExJU0VDX1RPX1NFQyAqIFRXT19JVEVNKTtcbiAgICB9KTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8RHJhd2VyXG4gICAgICAgIGlkPVwiZGV0YWlsc0RyYXdlclwiXG4gICAgICAgIG9wZW49e29wZW59XG4gICAgICAgIG9uQ2xvc2U9e29uQ2xvc2V9XG4gICAgICAgIGFuY2hvcj1cInJpZ2h0XCJcbiAgICAgICAgTW9kYWxQcm9wcz17eyBrZWVwTW91bnRlZDogZmFsc2UgfX1cbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0RGV0YWlsQ29udGFpbmVyfVxuICAgICAgPlxuICAgICAgICB7dGlja2V0ICYmIGV4dHJhUXVlc3Rpb25zICYmIChcbiAgICAgICAgICA8PlxuICAgICAgICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5oZWFkZXJ9PlxuICAgICAgICAgICAgICA8SWNvbkJ1dHRvblxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNsb3NlQnRufVxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9e29uQ2xvc2V9XG4gICAgICAgICAgICAgICAgc3g9e3sgZmxvYXQ6IFwicmlnaHRcIiB9fVxuICAgICAgICAgICAgICAgIGZvbnRTaXplPVwibGFyZ2VcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPENsb3NlSWNvbiAvPlxuICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJoNFwiIGd1dHRlckJvdHRvbSBjbGFzc05hbWU9e3N0eWxlcy50aXRsZX0+XG4gICAgICAgICAgICAgICAge3RpY2tldD8udGlja2V0X3R5cGU/Lm5hbWV9XG4gICAgICAgICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgICAgICAgPFR5cG9ncmFwaHlcbiAgICAgICAgICAgICAgICB2YXJpYW50PVwiYm9keTJcIlxuICAgICAgICAgICAgICAgIGd1dHRlckJvdHRvbVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnN1YnRpdGxlfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfZGV0YWlsLnB1cmNoYXNlZF9ieVwiKX0ge3RpY2tldD8ub3duZXI/LmVtYWlsfVxuICAgICAgICAgICAgICA8L1R5cG9ncmFwaHk+XG5cbiAgICAgICAgICAgICAge2lzQ29tcGxldGUgJiYgKFxuICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLnFyQ29kZX0+XG4gICAgICAgICAgICAgICAgICAgIDxRUkNvZGVcbiAgICAgICAgICAgICAgICAgICAgICBzaXplPXsyNTZ9XG4gICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogXCJhdXRvXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXhXaWR0aDogXCIxMDAlXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogXCIxMDAlXCJcbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXt0aWNrZXQucXJfY29kZX1cbiAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI1NiAyNTZcIlxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9e3N0eWxlcy5zdGF0dXN9Pnt0KFwidGlja2V0X2RldGFpbC5zdGF0dXNcIil9PC9wPlxuICAgICAgICAgICAgICAgICAgPFR5cG9ncmFwaHlcbiAgICAgICAgICAgICAgICAgICAgdmFyaWFudD1cImJvZHkyXCJcbiAgICAgICAgICAgICAgICAgICAgZ3V0dGVyQm90dG9tXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnFyTm90ZX1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfZGV0YWlsLnFyX25vdGVcIil9XG4gICAgICAgICAgICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgICAgeyFzdW1taXQ/LmlzX3ZpcnR1YWwgJiYgaXNDb21wbGV0ZSAmJiAoXG4gICAgICAgICAgICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5hY3Rpb25CdXR0b25zQ29udGFpbmVyfT5cbiAgICAgICAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuZG93bmxvYWRCdG59XG4gICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJjb250YWluZWRcIlxuICAgICAgICAgICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXtkb3dubG9hZFRpY2tldFBkZn1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPERvd25sb2FkSWNvbiBmb250U2l6ZT1cImxhcmdlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfZGV0YWlsLmRvd25sb2FkXCIpfVxuICAgICAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLnNlbmRCdG59ICR7XG4gICAgICAgICAgICAgICAgICAgICAgc2VudENvbmZpcm1hdGlvbiA/IHN0eWxlcy5zZW50IDogXCJcIlxuICAgICAgICAgICAgICAgICAgICB9YH1cbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17b25TZW5kRW1haWx9XG4gICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtzZW50Q29uZmlybWF0aW9ufVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8RW1haWxJY29uIGZvbnRTaXplPVwibGFyZ2VcIiAvPlxuICAgICAgICAgICAgICAgICAgICB7c2VudENvbmZpcm1hdGlvblxuICAgICAgICAgICAgICAgICAgICAgID8gdChcInRpY2tldF9kZXRhaWwuc2VudFwiKVxuICAgICAgICAgICAgICAgICAgICAgIDogdChcInRpY2tldF9kZXRhaWwuc2VuZFwiKX1cbiAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAgICApfVxuXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJOdW1iZXJ9PlxuICAgICAgICAgICAgICAgIDxDb3B5VGV4dFxuICAgICAgICAgICAgICAgICAgdGV4dD17dGlja2V0Py5vcmRlcj8ubnVtYmVyfVxuICAgICAgICAgICAgICAgICAgcmV2ZXJzZWRcbiAgICAgICAgICAgICAgICAgIHdpZHRoPXsxNTB9XG4gICAgICAgICAgICAgICAgICB0b29sdGlwVGV4dD17dChcIm9yZGVyX3N1bW1hcnkuY29weV9vcmRlcl9udW1iZXJcIil9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuYXR0ZW5kZWVDb250YWluZXJ9PlxuICAgICAgICAgICAgICA8VHlwb2dyYXBoeVxuICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJoNFwiXG4gICAgICAgICAgICAgICAgZ3V0dGVyQm90dG9tXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuYXR0ZW5kZWVJbmZvVGl0bGV9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7dChcInRpY2tldF9kZXRhaWwuYXR0ZW5kZWVfaW5mb3JtYXRpb25cIil9XG4gICAgICAgICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgICAgICAge3RpY2tldCAmJiAoXG4gICAgICAgICAgICAgICAgPFRpY2tldEZvcm1cbiAgICAgICAgICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgICAgICAgICAgZXh0cmFRdWVzdGlvbnM9e2V4dHJhUXVlc3Rpb25zfVxuICAgICAgICAgICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgICAgICAgICBjYW5FZGl0PXtjYW5FZGl0VGlja2V0RGF0YX1cbiAgICAgICAgICAgICAgICAgIG9uU3VibWl0PXtvblNhdmV9XG4gICAgICAgICAgICAgICAgICBvbkNsb3NlPXtvbkNsb3NlfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICA8Lz5cbiAgICAgICAgKX1cbiAgICAgIDwvRHJhd2VyPlxuICAgICAgPEN1c3RvbURpYWxvZ1xuICAgICAgICBvcGVuPXshIXNhdmVNZXNzYWdlfVxuICAgICAgICBvbkNsb3NlPXtvbkNsb3NlU2F2ZU1lc3NhZ2V9XG4gICAgICAgIHRpdGxlPXtzYXZlTWVzc2FnZT8udGl0bGV9XG4gICAgICAgIGRlc2NyaXB0aW9uPXtzYXZlTWVzc2FnZT8uZGVzY3JpcHRpb259XG4gICAgICAvPlxuICAgIDwvPlxuICApO1xufTtcblxuVGlja2V0RGV0YWlsLnByb3BUeXBlcyA9IHtcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0LFxuICB0aWNrZXRJZDogUHJvcFR5cGVzLm51bWJlcixcbiAgb3JkZXJJZDogUHJvcFR5cGVzLm51bWJlcixcbiAgb3duZXJJZDogUHJvcFR5cGVzLm51bWJlcixcbiAgb25DbG9zZTogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFRpY2tldERldGFpbDtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTcgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IFRleHRGaWVsZCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VGb3JtaWsgfSBmcm9tIFwiZm9ybWlrXCI7XG5pbXBvcnQgKiBhcyB5dXAgZnJvbSBcInl1cFwiO1xuXG5pbXBvcnQgRm9ybUZvb3RlciBmcm9tIFwiLi4vLi4vLi4vRm9ybUZvb3RlclwiO1xuXG5jb25zdCBSZWFzc2lnbkZvcm0gPSAoeyBvblN1Ym1pdCwgb25DbG9zZSB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcblxuICBjb25zdCBmb3JtaWsgPSB1c2VGb3JtaWsoe1xuICAgIGluaXRpYWxWYWx1ZXM6IHtcbiAgICAgIG5ld19hdHRlbmRlZV9lbWFpbDogXCJcIixcbiAgICAgIHBlcnNvbmFsX21lc3NhZ2U6IFwiXCJcbiAgICB9LFxuICAgIHZhbGlkYXRpb25TY2hlbWE6IHl1cC5vYmplY3Qoe1xuICAgICAgbmV3X2F0dGVuZGVlX2VtYWlsOiB5dXBcbiAgICAgICAgLnN0cmluZyh0KFwidmFsaWRhdGlvbi5lbWFpbC5zdHJpbmdcIikpXG4gICAgICAgIC5lbWFpbCh0KFwidmFsaWRhdGlvbi5lbWFpbC5mb3JtYXRcIikpXG4gICAgICAgIC5yZXF1aXJlZCh0KFwidmFsaWRhdGlvbi5lbWFpbC5yZXF1aXJlZFwiKSksXG4gICAgICBwZXJzb25hbF9tZXNzYWdlOiB5dXAuc3RyaW5nKHQoXCJ2YWxpZGF0aW9uLnRleHQuc3RyaW5nXCIpKVxuICAgIH0pLFxuICAgIG9uU3VibWl0XG4gIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPGZvcm0gb25TdWJtaXQ9e2Zvcm1pay5oYW5kbGVTdWJtaXR9IG5vVmFsaWRhdGU+XG4gICAgICA8VGV4dEZpZWxkXG4gICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICBuYW1lPVwibmV3X2F0dGVuZGVlX2VtYWlsXCJcbiAgICAgICAgbGFiZWw9e3QoXCJ0aWNrZXRfcmVhc3NpZ24ubmV3X2F0dGVuZGVlX2VtYWlsXCIpfVxuICAgICAgICB2YWx1ZT17Zm9ybWlrLnZhbHVlcy5uZXdfYXR0ZW5kZWVfZW1haWx9XG4gICAgICAgIG9uQ2hhbmdlPXtmb3JtaWsuaGFuZGxlQ2hhbmdlfVxuICAgICAgICBvbkJsdXI9e2Zvcm1pay5oYW5kbGVCbHVyfVxuICAgICAgICBlcnJvcj17XG4gICAgICAgICAgZm9ybWlrLnRvdWNoZWQubmV3X2F0dGVuZGVlX2VtYWlsICYmXG4gICAgICAgICAgQm9vbGVhbihmb3JtaWsuZXJyb3JzLm5ld19hdHRlbmRlZV9lbWFpbClcbiAgICAgICAgfVxuICAgICAgICBoZWxwZXJUZXh0PXtcbiAgICAgICAgICBmb3JtaWsudG91Y2hlZC5uZXdfYXR0ZW5kZWVfZW1haWwgJiYgZm9ybWlrLmVycm9ycy5uZXdfYXR0ZW5kZWVfZW1haWxcbiAgICAgICAgfVxuICAgICAgICByZXF1aXJlZFxuICAgICAgLz5cbiAgICAgIDxUZXh0RmllbGRcbiAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgIG5hbWU9XCJwZXJzb25hbF9tZXNzYWdlXCJcbiAgICAgICAgbGFiZWw9e3QoXCJ0aWNrZXRfcmVhc3NpZ24ucGVyc29uYWxfbWVzc2FnZVwiKX1cbiAgICAgICAgdmFsdWU9e2Zvcm1pay52YWx1ZXMucGVyc29uYWxfbWVzc2FnZX1cbiAgICAgICAgbXVsdGlsaW5lXG4gICAgICAgIG1pblJvd3M9ezR9XG4gICAgICAgIG9uQ2hhbmdlPXtmb3JtaWsuaGFuZGxlQ2hhbmdlfVxuICAgICAgICBvbkJsdXI9e2Zvcm1pay5oYW5kbGVCbHVyfVxuICAgICAgICBlcnJvcj17XG4gICAgICAgICAgZm9ybWlrLnRvdWNoZWQucGVyc29uYWxfbWVzc2FnZSAmJlxuICAgICAgICAgIEJvb2xlYW4oZm9ybWlrLmVycm9ycy5wZXJzb25hbF9tZXNzYWdlKVxuICAgICAgICB9XG4gICAgICAgIGhlbHBlclRleHQ9e1xuICAgICAgICAgIGZvcm1pay50b3VjaGVkLnBlcnNvbmFsX21lc3NhZ2UgJiYgZm9ybWlrLmVycm9ycy5wZXJzb25hbF9tZXNzYWdlXG4gICAgICAgIH1cbiAgICAgIC8+XG4gICAgICA8Rm9ybUZvb3RlclxuICAgICAgICBzYXZlTGFiZWw9e3QoXCJ0aWNrZXRfcmVhc3NpZ24uc2F2ZVwiKX1cbiAgICAgICAgY2FuY2VsTGFiZWw9e3QoXCJ0aWNrZXRfcmVhc3NpZ24uY2FuY2VsXCIpfVxuICAgICAgICBvbkNsb3NlPXtvbkNsb3NlfVxuICAgICAgICBkaXNhYmxlZD17Zm9ybWlrLmlzU3VibWl0dGluZ31cbiAgICAgIC8+XG4gICAgPC9mb3JtPlxuICApO1xufTtcblxuUmVhc3NpZ25Gb3JtLnByb3BUeXBlcyA9IHtcbiAgb25TdWJtaXQ6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIG9uQ2xvc2U6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWRcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFJlYXNzaWduRm9ybTtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2ggfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEJveCwgVHlwb2dyYXBoeSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyByZWFzc2lnblRpY2tldCwgc2F2ZUV4dHJhUXVlc3Rpb25zIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcbmltcG9ydCBSZWFzc2lnbkZvcm0gZnJvbSBcIi4vY29tcG9uZW50cy9SZWFzc2lnbkZvcm1cIjtcbmltcG9ydCBSaWdodERyYXdlciBmcm9tIFwiLi4vUmlnaHREcmF3ZXJcIjtcblxuaW1wb3J0IEFzc2lnbkVRRm9ybSBmcm9tIFwiLi4vQXNzaWduRVFGb3JtXCI7XG5pbXBvcnQgeyB0cmFuc2Zvcm1BbndlcnNGb3JtYXQgfSBmcm9tIFwiLi4vRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29tcG9uZW50cy91dGlsc1wiO1xuaW1wb3J0IEN1c3RvbURpYWxvZyBmcm9tIFwiLi4vQ3VzdG9tRGlhbG9nXCI7XG5pbXBvcnQgdXNlR2V0VGlja2V0IGZyb20gXCIuLi8uLi9ob29rcy91c2VHZXRUaWNrZXRcIjtcbmltcG9ydCB7IE1JTExJU0VDX1RPX1NFQyB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgVGlja2V0UmVhc3NpZ24gPSAoe1xuICBzdW1taXQsXG4gIHRpY2tldElkLFxuICBvcmRlcklkLFxuICBvd25lcklkLFxuICBvcGVuLFxuICBvbkNsb3NlXG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuICBjb25zdCBbc2F2ZU1lc3NhZ2UsIHNldFNhdmVNZXNzYWdlXSA9IHVzZVN0YXRlKG51bGwpO1xuICBjb25zdCBbdGlja2V0UmVhc3NpZ25lZCwgc2V0VGlja2V0UmVhc3NpZ25lZF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IHsgdGlja2V0LCBleHRyYVF1ZXN0aW9ucyB9ID0gdXNlR2V0VGlja2V0KFxuICAgIHRpY2tldElkLFxuICAgIG9yZGVySWQsXG4gICAgb3duZXJJZCxcbiAgICBvcGVuXG4gICk7XG5cbiAgY29uc3Qgb25SZWFzc2lnbiA9ICh2YWwpID0+IHtcbiAgICBjb25zdCB7IG5ld19hdHRlbmRlZV9lbWFpbCwgcGVyc29uYWxfbWVzc2FnZSB9ID0gdmFsO1xuICAgIHJldHVybiBkaXNwYXRjaChcbiAgICAgIHJlYXNzaWduVGlja2V0KG9yZGVySWQsIHRpY2tldElkLCBuZXdfYXR0ZW5kZWVfZW1haWwsIHBlcnNvbmFsX21lc3NhZ2UpXG4gICAgKS50aGVuKCgpID0+IHtcbiAgICAgIHNldFRpY2tldFJlYXNzaWduZWQodHJ1ZSk7XG4gICAgfSk7XG4gIH07XG5cbiAgY29uc3Qgb25DbG9zZUVRRm9ybSA9ICgpID0+IHtcbiAgICBzZXRUaWNrZXRSZWFzc2lnbmVkKGZhbHNlKTtcbiAgICBvbkNsb3NlKCk7XG4gIH07XG5cbiAgY29uc3Qgb25DbG9zZVNhdmVNZXNzYWdlID0gKCkgPT4ge1xuICAgIHNldFNhdmVNZXNzYWdlKG51bGwpO1xuICAgIHNldFRpY2tldFJlYXNzaWduZWQoZmFsc2UpO1xuICAgIHNldFRpbWVvdXQob25DbG9zZSwgTUlMTElTRUNfVE9fU0VDKTtcbiAgfTtcblxuICBjb25zdCBvblNhdmVFUSA9ICh2YWwpID0+IHtcbiAgICBjb25zdCBhbnN3ZXJzID0gdHJhbnNmb3JtQW53ZXJzRm9ybWF0KHZhbCk7XG5cbiAgICByZXR1cm4gZGlzcGF0Y2goc2F2ZUV4dHJhUXVlc3Rpb25zKHRpY2tldCwgYW5zd2VycykpXG4gICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgIHNldFNhdmVNZXNzYWdlKHtcbiAgICAgICAgICB0aXRsZTogdChcInRpY2tldF9yZWFzc2lnbi5zYXZpbmdfc3VjY2Vzc1wiKSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogdChcInRpY2tldF9yZWFzc2lnbi5zYXZpbmdfc3VjY2Vzc19kZXNjcmlwdGlvblwiKVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZXJyKSA9PiB7XG4gICAgICAgIHNldFNhdmVNZXNzYWdlKHtcbiAgICAgICAgICB0aXRsZTogdChcInRpY2tldF9yZWFzc2lnbi5zYXZpbmdfZXJyb3JcIiksXG4gICAgICAgICAgZGVzY3JpcHRpb246IGVyci50b1N0cmluZygpXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoKTtcbiAgICAgIH0pO1xuICB9O1xuXG4gIGNvbnN0IGdldExhYmVscyA9ICgpID0+IHtcbiAgICBpZiAodGlja2V0UmVhc3NpZ25lZCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdGl0bGU6IHQoXCJ0aWNrZXRfcmVhc3NpZ24ucmVhc3NpZ25fdGlja2V0XCIpLFxuICAgICAgICBzdWJ0aXRsZTogYCR7dChcInRpY2tldF9yZWFzc2lnbi5yZWFzc2lnbmVkX3RvXCIpfSAke1xuICAgICAgICAgIHRpY2tldD8ub3duZXI/LmVtYWlsXG4gICAgICAgIH1gLFxuICAgICAgICBoZWFkZXJOb3RlOiB0KFwidGlja2V0X3JlYXNzaWduLmNvbXBsZXRlX2luZm9cIilcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHRpdGxlOiB0KFwidGlja2V0X3JlYXNzaWduLnJlYXNzaWduX3RpY2tldFwiKSxcbiAgICAgIHN1YnRpdGxlOiAoXG4gICAgICAgIDw+XG4gICAgICAgICAge3QoXCJ0aWNrZXRfcmVhc3NpZ24uYXNzaWduZWRfdG9cIil9XG4gICAgICAgICAgPGJyIC8+XG4gICAgICAgICAge3RpY2tldD8ub3duZXI/LmVtYWlsfVxuICAgICAgICA8Lz5cbiAgICAgICksXG4gICAgICBoZWFkZXJOb3RlOiB0KFwidGlja2V0X3JlYXNzaWduLmVudGVyX2VtYWlsX25vdGVcIilcbiAgICB9O1xuICB9O1xuXG4gIGNvbnN0IHsgdGl0bGUsIHN1YnRpdGxlLCBoZWFkZXJOb3RlIH0gPSBnZXRMYWJlbHMoKTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8UmlnaHREcmF3ZXJcbiAgICAgICAgaWQ9XCJyZWFzc2lnbkRyYXdlclwiXG4gICAgICAgIHRpdGxlPXt0aXRsZX1cbiAgICAgICAgb3Blbj17b3Blbn1cbiAgICAgICAgb25DbG9zZT17b25DbG9zZX1cbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0UmVhc3NpZ25Db250YWluZXJ9XG4gICAgICA+XG4gICAgICAgIHt0aWNrZXQgJiYgZXh0cmFRdWVzdGlvbnMgJiYgKFxuICAgICAgICAgIDw+XG4gICAgICAgICAgICA8Qm94PlxuICAgICAgICAgICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiaDRcIiBndXR0ZXJCb3R0b20gY2xhc3NOYW1lPXtzdHlsZXMuc3VidGl0bGV9PlxuICAgICAgICAgICAgICAgIHtzdWJ0aXRsZX1cbiAgICAgICAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgICAgICAgICA8VHlwb2dyYXBoeVxuICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJib2R5MVwiXG4gICAgICAgICAgICAgICAgZ3V0dGVyQm90dG9tXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuaGVhZGVyTm90ZX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHtoZWFkZXJOb3RlfVxuICAgICAgICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuYXR0ZW5kZWVDb250YWluZXJ9PlxuICAgICAgICAgICAgICA8VHlwb2dyYXBoeVxuICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJoNFwiXG4gICAgICAgICAgICAgICAgZ3V0dGVyQm90dG9tXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuYXR0ZW5kZWVJbmZvVGl0bGV9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7dGlja2V0Py50eXBlPy5uYW1lfVxuICAgICAgICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICAgICAgICAgIHt0aWNrZXQgJiYgIXRpY2tldFJlYXNzaWduZWQgJiYgKFxuICAgICAgICAgICAgICAgIDxSZWFzc2lnbkZvcm1cbiAgICAgICAgICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgICAgICAgICBvblN1Ym1pdD17b25SZWFzc2lnbn1cbiAgICAgICAgICAgICAgICAgIG9uQ2xvc2U9e29uQ2xvc2V9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAge3RpY2tldCAmJiB0aWNrZXRSZWFzc2lnbmVkICYmIChcbiAgICAgICAgICAgICAgICA8QXNzaWduRVFGb3JtXG4gICAgICAgICAgICAgICAgICB0aWNrZXQ9e3RpY2tldH1cbiAgICAgICAgICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgICAgICAgICAgZXh0cmFRdWVzdGlvbnM9e2V4dHJhUXVlc3Rpb25zfVxuICAgICAgICAgICAgICAgICAgb25TdWJtaXQ9e29uU2F2ZUVRfVxuICAgICAgICAgICAgICAgICAgb25DbG9zZT17b25DbG9zZUVRRm9ybX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgPC8+XG4gICAgICAgICl9XG4gICAgICA8L1JpZ2h0RHJhd2VyPlxuICAgICAgPEN1c3RvbURpYWxvZ1xuICAgICAgICBvcGVuPXshIXNhdmVNZXNzYWdlfVxuICAgICAgICBvbkNsb3NlPXtvbkNsb3NlU2F2ZU1lc3NhZ2V9XG4gICAgICAgIHRpdGxlPXtzYXZlTWVzc2FnZT8udGl0bGV9XG4gICAgICAgIGRlc2NyaXB0aW9uPXtzYXZlTWVzc2FnZT8uZGVzY3JpcHRpb259XG4gICAgICAvPlxuICAgIDwvPlxuICApO1xufTtcblxuVGlja2V0UmVhc3NpZ24ucHJvcFR5cGVzID0ge1xuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIHRpY2tldElkOiBQcm9wVHlwZXMubnVtYmVyLFxuICBvcmRlcklkOiBQcm9wVHlwZXMubnVtYmVyLFxuICBvd25lcklkOiBQcm9wVHlwZXMubnVtYmVyLFxuICBvcGVuOiBQcm9wVHlwZXMuYm9vbCxcbiAgb25DbG9zZTogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFRpY2tldFJlYXNzaWduO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQ29udGFpbmVyLCBCdXR0b24gfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlVGlja2V0RGV0YWlscyB9IGZyb20gXCIuLi8uLi9ob29rcy91c2VUaWNrZXREZXRhaWxzXCI7XG5cbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgVGlja2V0U3RhdHVzID0gKHsgdGlja2V0IH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBpc0FjdGl2ZSA9IHRpY2tldC5pc19hY3RpdmU7XG4gIGNvbnN0IHJlZnVuZFJlcXVlc3RzID0gdGlja2V0LnJlZnVuZF9yZXF1ZXN0cz8uZmluZChcbiAgICAocikgPT4gci5zdGF0dXMgPT09IFwiUmVxdWVzdGVkXCJcbiAgKTtcbiAgY29uc3QgeyBpc0luY29tcGxldGUsIGlzVW5hc3NpZ25lZCwgaXNDb21wbGV0ZSB9ID0gdXNlVGlja2V0RGV0YWlscyh0aWNrZXQpO1xuXG4gIHJldHVybiAoXG4gICAgPENvbnRhaW5lciBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRTdGF0dXNDb250YWluZXJ9PlxuICAgICAge2lzQWN0aXZlID8gKFxuICAgICAgICA8PlxuICAgICAgICAgIHtyZWZ1bmRSZXF1ZXN0cyAmJiAoXG4gICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwidGlja2V0IHN0YXR1cyByZWZ1bmQgcmVxdWVzdGVkXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuYnV0dG9uUGlsbH0gJHtzdHlsZXMuYnV0dG9uUmVmdW5kUmVxdWVzdGVkfWB9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5zdGF0dXNfcmVmdW5kX3JlcXVlc3RlZFwiKX1cbiAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICl9XG4gICAgICAgICAge2lzSW5jb21wbGV0ZSAmJiAoXG4gICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwidGlja2V0IHN0YXR1cyBpbmNvbXBsZXRlXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuYnV0dG9uUGlsbH0gJHtzdHlsZXMuYnV0dG9uSW5jb21wbGV0ZX1gfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMuc3RhdHVzX2luY29tcGxldGVcIil9XG4gICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICApfVxuICAgICAgICAgIHtpc1VuYXNzaWduZWQgJiYgKFxuICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cInRpY2tldCBzdGF0dXMgdW5hc3NpZ25lZFwiXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLmJ1dHRvblBpbGx9ICR7c3R5bGVzLmJ1dHRvblVuYXNzaWduZWR9YH1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnN0YXR1c191bmFzc2lnbmVkXCIpfVxuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgKX1cbiAgICAgICAgICB7aXNDb21wbGV0ZSAmJiAoXG4gICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwidGlja2V0IHN0YXR1cyBjb21wbGV0ZVwiXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLmJ1dHRvblBpbGx9ICR7c3R5bGVzLmJ1dHRvbkNvbXBsZXRlfWB9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5zdGF0dXNfY29tcGxldGVcIil9XG4gICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICApfVxuICAgICAgICA8Lz5cbiAgICAgICkgOiAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBhcmlhLWxhYmVsPVwidGlja2V0IHN0YXR1cyBjYW5jZWxsZWRcIlxuICAgICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLmJ1dHRvblBpbGx9ICR7c3R5bGVzLmJ1dHRvbkNhbmNlbGxlZH1gfVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnN0YXR1c19jYW5jZWxsZWRcIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgKX1cbiAgICA8L0NvbnRhaW5lcj5cbiAgKTtcbn07XG5cblRpY2tldFN0YXR1cy5wcm9wVHlwZXMgPSB7XG4gIHRpY2tldDogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBvd25lcjogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAgIHN0YXR1czogUHJvcFR5cGVzLnN0cmluZ1xuICAgIH0pLFxuICAgIHJlZnVuZFJlcXVlc3RzOiBQcm9wVHlwZXMuYXJyYXlPZihPYmplY3QpXG4gIH0pXG59O1xuXG5leHBvcnQgZGVmYXVsdCBUaWNrZXRTdGF0dXM7XG4iLCJpbXBvcnQgeyB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoLCB1c2VTZWxlY3RvciB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgZ2V0RXh0cmFRdWVzdGlvbnMsIGdldFRpY2tldCB9IGZyb20gXCIuLi9hY3Rpb25zXCI7XG5cbmNvbnN0IHVzZUdldFRpY2tldCA9ICh0aWNrZXRJZCwgb3JkZXJJZCwgb3duZXJJZCwgcnVuKSA9PiB7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICh0aWNrZXRJZCAmJiBvcmRlcklkICYmIG93bmVySWQgJiYgcnVuKSB7XG4gICAgICBkaXNwYXRjaChnZXRUaWNrZXQodGlja2V0SWQsIG9yZGVySWQpKTtcbiAgICAgIGRpc3BhdGNoKGdldEV4dHJhUXVlc3Rpb25zKG93bmVySWQpKTtcbiAgICB9XG4gIH0sIFt0aWNrZXRJZCwgb3JkZXJJZCwgb3duZXJJZCwgcnVuXSk7XG5cbiAgY29uc3QgeyBleHRyYVF1ZXN0aW9ucywgY3VycmVudFRpY2tldDogdGlja2V0IH0gPSB1c2VTZWxlY3RvcihcbiAgICAoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlXG4gICk7XG5cbiAgcmV0dXJuIHsgdGlja2V0LCBleHRyYVF1ZXN0aW9ucyB9O1xufTtcblxuZXhwb3J0IGRlZmF1bHQgdXNlR2V0VGlja2V0O1xuIiwiaW1wb3J0IHsgdXNlRWZmZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5cbi8vIFNtb290aCBzY3JvbGxpbmcgZnVuY3Rpb24gdXNpbmcgcmVxdWVzdEFuaW1hdGlvbkZyYW1lXG5mdW5jdGlvbiBzbW9vdGhTY3JvbGxUbyhjb250YWluZXIsIHRhcmdldFNjcm9sbFRvcCwgZHVyYXRpb24pIHtcbiAgY29uc3Qgc3RhcnRTY3JvbGxUb3AgPSBjb250YWluZXIuc2Nyb2xsVG9wO1xuICBjb25zdCBkaXN0YW5jZSA9IHRhcmdldFNjcm9sbFRvcCAtIHN0YXJ0U2Nyb2xsVG9wO1xuICBsZXQgc3RhcnRUaW1lID0gbnVsbDtcblxuICBmdW5jdGlvbiBhbmltYXRpb25TdGVwKHRpbWVzdGFtcCkge1xuICAgIGlmICghc3RhcnRUaW1lKSBzdGFydFRpbWUgPSB0aW1lc3RhbXA7XG4gICAgY29uc3QgZWxhcHNlZCA9IHRpbWVzdGFtcCAtIHN0YXJ0VGltZTtcblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1tYWdpYy1udW1iZXJzXG4gICAgY29uc3QgcHJvZ3Jlc3MgPSBNYXRoLm1pbihlbGFwc2VkIC8gZHVyYXRpb24sIDEpO1xuICAgIGNvbnN0IGVhc2VJbk91dFF1YWQgPVxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW1hZ2ljLW51bWJlcnNcbiAgICAgIHByb2dyZXNzIDwgMC41ID8gMiAqIHByb2dyZXNzICoqIDIgOiAxIC0gKC0yICogcHJvZ3Jlc3MgKyAyKSAqKiAyIC8gMjtcblxuICAgIGNvbnRhaW5lci5zY3JvbGxUb3AgPSBzdGFydFNjcm9sbFRvcCArIGRpc3RhbmNlICogZWFzZUluT3V0UXVhZDtcblxuICAgIGlmIChlbGFwc2VkIDwgZHVyYXRpb24pIHtcbiAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShhbmltYXRpb25TdGVwKTtcbiAgICB9XG4gIH1cblxuICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoYW5pbWF0aW9uU3RlcCk7XG59XG5cbmNvbnN0IHVzZVNjcm9sbFRvRXJyb3IgPSAoZm9ybWlrLCBjb250YWluZXJJZCkgPT4ge1xuICBjb25zdCB7IGVycm9ycywgaXNWYWxpZCwgaXNTdWJtaXR0aW5nIH0gPSBmb3JtaWs7XG4gIGNvbnN0IGVycm9yQXJyYXkgPSBPYmplY3Qua2V5cyhlcnJvcnMpO1xuICBjb25zdCBlcnJvckNvdW50ID0gZXJyb3JBcnJheS5sZW5ndGg7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaXNWYWxpZCB8fCBlcnJvckNvdW50ID09PSAwKSByZXR1cm47XG5cbiAgICAvLyBzb3J0IGVsZW1lbnRzIGJ5IHBvc2l0aW9uXG4gICAgY29uc3QgZWxlbWVudHNTb3J0ZWQgPSBlcnJvckFycmF5XG4gICAgICAucmVkdWNlKChyZXN1bHQsIGVycm9yKSA9PiB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGBpbnB1dFtuYW1lPScke2Vycm9yfSddYCk7XG4gICAgICAgIGlmICghZWxlbWVudCkgcmV0dXJuIHJlc3VsdDtcblxuICAgICAgICBjb25zdCBlbFJlY3QgPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICByZXN1bHQucHVzaCh7IGVsZW1lbnQsIGVycm9yLCB0b3A6IGVsUmVjdC50b3AgfSk7XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH0sIFtdKVxuICAgICAgLnNvcnQoKGEsIGIpID0+IGEudG9wIC0gYi50b3ApO1xuXG4gICAgaWYgKGVsZW1lbnRzU29ydGVkLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuXG4gICAgY29uc3QgY29udGFpbmVyID0gZG9jdW1lbnRcbiAgICAgIC5nZXRFbGVtZW50QnlJZChjb250YWluZXJJZClcbiAgICAgIC5xdWVyeVNlbGVjdG9yKFwiLk11aURyYXdlci1wYXBlclwiKTtcbiAgICBjb25zdCB0YXJnZXQgPSBlbGVtZW50c1NvcnRlZFswXTtcblxuICAgIGlmIChjb250YWluZXI/LmNvbnRhaW5zKHRhcmdldC5lbGVtZW50KSkge1xuICAgICAgY29uc3QgY29udGFpbmVyUmVjdCA9IGNvbnRhaW5lci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAgICAgLy8gQ2FsY3VsYXRlIHRoZSBvZmZzZXQgb2YgdGhlIHRhcmdldCBlbGVtZW50IHJlbGF0aXZlIHRvIHRoZSBjb250YWluZXJcbiAgICAgIGNvbnN0IGVsZW1PZmZlc3QgPSAxMDA7XG4gICAgICBjb25zdCBhbmltYXRpb25EdXJhdGlvbiA9IDUwMDtcbiAgICAgIGNvbnN0IHNjcm9sbFRvcCA9XG4gICAgICAgIHRhcmdldC50b3AgLSBjb250YWluZXJSZWN0LnRvcCArIGNvbnRhaW5lci5zY3JvbGxUb3AgLSBlbGVtT2ZmZXN0O1xuXG4gICAgICAvLyBTY3JvbGwgdGhlIGNvbnRhaW5lciB0byB0aGUgdGFyZ2V0IGVsZW1lbnQncyBwb3NpdGlvblxuICAgICAgc21vb3RoU2Nyb2xsVG8oY29udGFpbmVyLCBzY3JvbGxUb3AsIGFuaW1hdGlvbkR1cmF0aW9uKTsgLy8gNTAwbXMgZHVyYXRpb25cbiAgICB9XG4gIH0sIFtpc1N1Ym1pdHRpbmddKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IHVzZVNjcm9sbFRvRXJyb3I7XG4iLCJpbXBvcnQgeyBpc1RpY2tldFJlZnVuZGFibGUgfSBmcm9tIFwiLi4vdXRpbHMvdGlja2V0VXRpbHNcIjtcblxuZXhwb3J0IGNvbnN0IFNUQVRVU19DT01QTEVURSA9IFwiQ29tcGxldGVcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfSU5DT01QTEVURSA9IFwiSW5jb21wbGV0ZVwiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19DQU5DRUxMRUQgPSBcIkNhbmNlbGxlZFwiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19VTkFTU0lHTkVEID0gXCJVbmFzc2lnbmVkXCI7XG5cbmV4cG9ydCBjb25zdCB1c2VUaWNrZXREZXRhaWxzID0gKHRpY2tldCkgPT4ge1xuICBjb25zdCBnZXRTdGF0dXMgPSAoKSA9PiB7XG4gICAgaWYgKCF0aWNrZXQuaXNfYWN0aXZlKSByZXR1cm4gU1RBVFVTX0NBTkNFTExFRDtcbiAgICBpZiAodGlja2V0Lm93bmVyX2lkID09PSAwKSByZXR1cm4gU1RBVFVTX1VOQVNTSUdORUQ7XG4gICAgaWYgKCF0aWNrZXQub3duZXI/LmZpcnN0X25hbWUgfHwgIXRpY2tldC5vd25lcj8ubGFzdF9uYW1lKVxuICAgICAgcmV0dXJuIFNUQVRVU19JTkNPTVBMRVRFO1xuICAgIHJldHVybiB0aWNrZXQub3duZXIuc3RhdHVzO1xuICB9O1xuXG4gIGlmICghdGlja2V0KSByZXR1cm4ge307XG5cbiAgY29uc3Qgc3RhdHVzID0gZ2V0U3RhdHVzKCk7XG4gIGNvbnN0IGlzQWN0aXZlID0gdGlja2V0LmlzX2FjdGl2ZSAmJiBzdGF0dXMgIT09IFNUQVRVU19DQU5DRUxMRUQ7XG4gIGNvbnN0IGlzUmVmdW5kYWJsZSA9IGlzVGlja2V0UmVmdW5kYWJsZSh0aWNrZXQpO1xuICBjb25zdCBhbGxvd3NEZWxlZ2F0ZSA9XG4gICAgKHRpY2tldD8udGlja2V0X3R5cGU/LmFsbG93c190b19kZWxlZ2F0ZSB8fFxuICAgICAgdGlja2V0Py5wcm9tb19jb2RlPy5hbGxvd3NfdG9fZGVsZWdhdGUpICYmXG4gICAgc3RhdHVzICE9PSBTVEFUVVNfVU5BU1NJR05FRCAmJlxuICAgICF0aWNrZXQub3duZXI/Lm1hbmFnZXI/LmlkICYmXG4gICAgIXRpY2tldC5vd25lcj8ubWFuYWdlcl9pZDtcbiAgY29uc3QgaXNDb21wbGV0ZSA9IHN0YXR1cyA9PT0gU1RBVFVTX0NPTVBMRVRFO1xuICBjb25zdCBpc1VuYXNzaWduZWQgPSBzdGF0dXMgPT09IFNUQVRVU19VTkFTU0lHTkVEO1xuICBjb25zdCBpc0luY29tcGxldGUgPSBzdGF0dXMgPT09IFNUQVRVU19JTkNPTVBMRVRFO1xuICBjb25zdCBjYW5SZWFzc2lnbiA9ICFpc1VuYXNzaWduZWQgJiYgdGlja2V0LnRpY2tldF90eXBlLmFsbG93c190b19yZWFzc2lnbiAmJiAoIXRpY2tldC5wcm9tb19jb2RlIHx8IHRpY2tldC5wcm9tb19jb2RlLmFsbG93c190b19yZWFzc2lnbik7XG5cbiAgcmV0dXJuIHtcbiAgICBzdGF0dXMsXG4gICAgaXNDb21wbGV0ZSxcbiAgICBpc1VuYXNzaWduZWQsXG4gICAgaXNJbmNvbXBsZXRlLFxuICAgIGlzQWN0aXZlLFxuICAgIGlzUmVmdW5kYWJsZSxcbiAgICBhbGxvd3NEZWxlZ2F0ZSxcbiAgICBjYW5SZWFzc2lnblxuICB9O1xufTtcbiIsImltcG9ydCBpMThuIGZyb20gXCJpMThuZXh0XCI7XG5pbXBvcnQgeyBpbml0UmVhY3RJMThuZXh0IH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCBMYW5ndWFnZURldGVjdG9yIGZyb20gXCJpMThuZXh0LWJyb3dzZXItbGFuZ3VhZ2VkZXRlY3RvclwiO1xuaW1wb3J0IGVuIGZyb20gXCIuL2xvY2FsZXMvZW4uanNvblwiO1xuaW1wb3J0IGVzIGZyb20gXCIuL2xvY2FsZXMvZXMuanNvblwiO1xuXG4vLyBpbXBvcnQgQmFja2VuZCBmcm9tICdpMThuZXh0LWh0dHAtYmFja2VuZCc7XG4vLyBkb24ndCB3YW50IHRvIHVzZSB0aGlzP1xuLy8gaGF2ZSBhIGxvb2sgYXQgdGhlIFF1aWNrIHN0YXJ0IGd1aWRlXG4vLyBmb3IgcGFzc2luZyBpbiBsbmcgYW5kIHRyYW5zbGF0aW9ucyBvbiBpbml0XG5cbmkxOG5cbiAgLy8gbG9hZCB0cmFuc2xhdGlvbiB1c2luZyBodHRwIC0+IHNlZSAvcHVibGljL2xvY2FsZXMgKGkuZS4gaHR0cHM6Ly9naXRodWIuY29tL2kxOG5leHQvcmVhY3QtaTE4bmV4dC90cmVlL21hc3Rlci9leGFtcGxlL3JlYWN0L3B1YmxpYy9sb2NhbGVzKVxuICAvLyBsZWFybiBtb3JlOiBodHRwczovL2dpdGh1Yi5jb20vaTE4bmV4dC9pMThuZXh0LWh0dHAtYmFja2VuZFxuICAvLyB3YW50IHlvdXIgdHJhbnNsYXRpb25zIHRvIGJlIGxvYWRlZCBmcm9tIGEgcHJvZmVzc2lvbmFsIENETj8gPT4gaHR0cHM6Ly9naXRodWIuY29tL2xvY2l6ZS9yZWFjdC10dXRvcmlhbCNzdGVwLTItLS11c2UtdGhlLWxvY2l6ZS1jZG5cbiAgLy8gLnVzZShCYWNrZW5kKVxuICAvLyBkZXRlY3QgdXNlciBsYW5ndWFnZVxuICAvLyBsZWFybiBtb3JlOiBodHRwczovL2dpdGh1Yi5jb20vaTE4bmV4dC9pMThuZXh0LWJyb3dzZXItbGFuZ3VhZ2VEZXRlY3RvclxuICAudXNlKExhbmd1YWdlRGV0ZWN0b3IpXG4gIC8vIHBhc3MgdGhlIGkxOG4gaW5zdGFuY2UgdG8gcmVhY3QtaTE4bmV4dC5cbiAgLnVzZShpbml0UmVhY3RJMThuZXh0KVxuICAvLyBpbml0IGkxOG5leHRcbiAgLy8gZm9yIGFsbCBvcHRpb25zIHJlYWQ6IGh0dHBzOi8vd3d3LmkxOG5leHQuY29tL292ZXJ2aWV3L2NvbmZpZ3VyYXRpb24tb3B0aW9uc1xuICAuaW5pdCh7XG4gICAgZmFsbGJhY2tMbmc6IFwiZW5cIixcbiAgICBkZWJ1ZzogZmFsc2UsXG4gICAgcmVzb3VyY2VzOiB7XG4gICAgICBlbjogeyB0cmFuc2xhdGlvbjogZW4gfSxcbiAgICAgIGVzOiB7IHRyYW5zbGF0aW9uOiBlcyB9XG4gICAgfSxcbiAgICBpbnRlcnBvbGF0aW9uOiB7XG4gICAgICBlc2NhcGVWYWx1ZTogZmFsc2UgLy8gbm90IG5lZWRlZCBmb3IgcmVhY3QgYXMgaXQgZXNjYXBlcyBieSBkZWZhdWx0XG4gICAgfVxuICB9KTtcblxuZXhwb3J0IGRlZmF1bHQgaTE4bjtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5pbXBvcnQgeyBMT0dPVVRfVVNFUiB9IGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3NlY3VyaXR5L2FjdGlvbnNcIjtcbmltcG9ydCB7XG4gIFNUQVJUX0xPQURJTkcsXG4gIFNUT1BfTE9BRElORyxcbiAgUkVTRVRfTE9BRElOR1xufSBmcm9tIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9hY3Rpb25zXCI7XG5pbXBvcnQge1xuICBSRVNFVF9TVEFURSxcbiAgUkVTRVRfRklMVEVSLFxuICBTRVRfU1RBVEUsXG4gIFNFVF9VU0VSLFxuICBHRVRfVVNFUl9PUkRFUlMsXG4gIEdFVF9USUNLRVRTX0JZX09SREVSLFxuICBVUERBVEVfVElDS0VUU19SRUZVTkRfUkVRVUVTVEVELFxuICBSRUNFSVZFX1RJQ0tFVCxcbiAgUkVDRUlWRV9FWFRSQV9RVUVTVElPTlMsXG4gIFVQREFURV9USUNLRVQsXG4gIEFTU0lHTl9USUNLRVQsXG4gIFJFU0VUX0FQSV9FUlJPUixcbiAgU0VUX0FQSV9FUlJPUixcbiAgUkVTRVRfVElDS0VUXG59IGZyb20gXCIuL2FjdGlvbnNcIjtcbmltcG9ydCB7IEZJUlNUX1BBR0UgfSBmcm9tIFwiLi91dGlscy9jb25zdGFudHNcIjtcblxuY29uc3QgREVGQVVMVF9TVEFURSA9IHtcbiAgc3VtbWl0OiBudWxsLFxuICB1c2VyOiB7fSxcbiAgd2lkZ2V0TG9hZGluZzogZmFsc2UsXG4gIG1lbWJlck9yZGVyczogW10sXG4gIGV4dHJhUXVlc3Rpb25zOiBbXSxcbiAgY3VycmVudFRpY2tldDogbnVsbCxcbiAgZXJyb3JzOiB7fSxcbiAgbG9hZGluZzogZmFsc2UsXG4gIGlzT3JkZXJMb2FkaW5nOiBmYWxzZSxcbiAgb3JkZXJzX2N1cnJlbnRfcGFnZTogMSxcbiAgb3JkZXJzX2xhc3RfcGFnZTogMSxcbiAgb3JkZXJzX3Blcl9wYWdlOiA1LFxuICBvcmRlcnNfdG90YWw6IDAsXG4gIHRpY2tldF9jdXJyZW50X3BhZ2U6IDEsXG4gIHRpY2tldF9sYXN0X3BhZ2U6IDEsXG4gIHRpY2tldF9wZXJfcGFnZTogNSxcbiAgdGlja2V0X3RvdGFsOiAwLFxuICBhcGlFcnJvcjogbnVsbFxufTtcblxuY29uc3QgV2lkZ2V0UmVkdWNlciA9IChzdGF0ZSA9IERFRkFVTFRfU1RBVEUsIHsgdHlwZSwgcGF5bG9hZCB9ID0ge30pID0+IHtcbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSBMT0dPVVRfVVNFUjpcbiAgICBjYXNlIFJFU0VUX1NUQVRFOlxuICAgICAgcmV0dXJuIERFRkFVTFRfU1RBVEU7XG4gICAgY2FzZSBTVEFSVF9MT0FESU5HOlxuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIGxvYWRpbmc6IHRydWUgfTtcbiAgICBjYXNlIFNUT1BfTE9BRElORzpcbiAgICBjYXNlIFJFU0VUX0xPQURJTkc6XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgbG9hZGluZzogZmFsc2UgfTtcbiAgICBjYXNlIFJFU0VUX0FQSV9FUlJPUjpcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBhcGlFcnJvcjogbnVsbCB9O1xuICAgIGNhc2UgUkVTRVRfRklMVEVSOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIG9yZGVyc19jdXJyZW50X3BhZ2U6IDEsXG4gICAgICAgIG9yZGVyc19sYXN0X3BhZ2U6IDFcbiAgICAgIH07XG4gICAgY2FzZSBTRVRfU1RBVEU6XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgLi4ucGF5bG9hZCB9O1xuICAgIGNhc2UgU0VUX0FQSV9FUlJPUjoge1xuICAgICAgY29uc3QgeyB0aXRsZSwgaHRtbDogYm9keSB9ID0gcGF5bG9hZDtcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBhcGlFcnJvcjogeyB0aXRsZSwgYm9keSB9IH07XG4gICAgfVxuICAgIGNhc2UgU0VUX1VTRVI6XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgdXNlcjogcGF5bG9hZCB9O1xuICAgIGNhc2UgR0VUX1VTRVJfT1JERVJTOiB7XG4gICAgICBjb25zdCB7IG1lbWJlck9yZGVycyB9ID0gc3RhdGU7XG4gICAgICBjb25zdCB7IGRhdGEsIHRvdGFsLCBjdXJyZW50X3BhZ2UsIGxhc3RfcGFnZSB9ID0gcGF5bG9hZC5yZXNwb25zZTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIG1lbWJlck9yZGVyczpcbiAgICAgICAgICBjdXJyZW50X3BhZ2UgPT09IEZJUlNUX1BBR0UgPyBkYXRhIDogWy4uLm1lbWJlck9yZGVycywgLi4uZGF0YV0sXG4gICAgICAgIG9yZGVyc190b3RhbDogdG90YWwsXG4gICAgICAgIG9yZGVyc19jdXJyZW50X3BhZ2U6IGN1cnJlbnRfcGFnZSxcbiAgICAgICAgb3JkZXJzX2xhc3RfcGFnZTogbGFzdF9wYWdlXG4gICAgICB9O1xuICAgIH1cbiAgICBjYXNlIEdFVF9USUNLRVRTX0JZX09SREVSOiB7XG4gICAgICBjb25zdCB7IG1lbWJlck9yZGVycyB9ID0gc3RhdGU7XG4gICAgICBjb25zdCB7IGRhdGEsIHRvdGFsLCBjdXJyZW50X3BhZ2UsIGxhc3RfcGFnZSB9ID0gcGF5bG9hZC5yZXNwb25zZTtcbiAgICAgIGNvbnN0IGZvcm1lck9yZGVyID0gbWVtYmVyT3JkZXJzLmZpbmQoKG8pID0+IG8uaWQgPT09IGRhdGFbMF0/Lm9yZGVyX2lkKTtcblxuICAgICAgY29uc3QgdXBkYXRlZE9yZGVyID0ge1xuICAgICAgICAuLi5mb3JtZXJPcmRlcixcbiAgICAgICAgbWVtYmVyVGlja2V0czpcbiAgICAgICAgICBjdXJyZW50X3BhZ2UgPT09IEZJUlNUX1BBR0VcbiAgICAgICAgICAgID8gZGF0YVxuICAgICAgICAgICAgOiBbLi4uZm9ybWVyT3JkZXIubWVtYmVyVGlja2V0cywgLi4uZGF0YV0sXG4gICAgICAgIHRpY2tldHNfcGFnZV9jdXJyZW50OiBjdXJyZW50X3BhZ2UsXG4gICAgICAgIHRpY2tldHNfcGFnZV9sYXN0OiBsYXN0X3BhZ2UsXG4gICAgICAgIHRpY2tldHNfdG90YWw6IHRvdGFsXG4gICAgICB9O1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIG1lbWJlck9yZGVyczogbWVtYmVyT3JkZXJzLm1hcCgobW8pID0+XG4gICAgICAgICAgbW8uaWQgPT09IHVwZGF0ZWRPcmRlci5pZCA/IHVwZGF0ZWRPcmRlciA6IG1vXG4gICAgICAgIClcbiAgICAgIH07XG4gICAgfVxuICAgIGNhc2UgVVBEQVRFX1RJQ0tFVFNfUkVGVU5EX1JFUVVFU1RFRDoge1xuICAgICAgY29uc3QgeyBtZW1iZXJPcmRlcnMgfSA9IHN0YXRlO1xuICAgICAgY29uc3QgdGlja2V0c1JlZnVuZFJlcXVlc3RlZCA9IHBheWxvYWQ7XG4gICAgICBjb25zdCBvcmRlciA9IG1lbWJlck9yZGVycy5maW5kKFxuICAgICAgICAobykgPT4gby5pZCA9PT0gdGlja2V0c1JlZnVuZFJlcXVlc3RlZFswXT8ub3JkZXJfaWRcbiAgICAgICk7XG4gICAgICBjb25zdCB1cGRhdGVkVGlja2V0cyA9IG9yZGVyPy5tZW1iZXJUaWNrZXRzLm1hcChcbiAgICAgICAgKHRpY2tldCkgPT5cbiAgICAgICAgICB0aWNrZXRzUmVmdW5kUmVxdWVzdGVkLmZpbmQoKHRycikgPT4gdHJyLmlkID09PSB0aWNrZXQuaWQpIHx8IHRpY2tldFxuICAgICAgKTtcbiAgICAgIGNvbnN0IHVwZGF0ZWRPcmRlciA9IHtcbiAgICAgICAgLi4ub3JkZXIsXG4gICAgICAgIG1lbWJlclRpY2tldHM6IHVwZGF0ZWRUaWNrZXRzXG4gICAgICB9O1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIG1lbWJlck9yZGVyczogbWVtYmVyT3JkZXJzLm1hcCgobW8pID0+XG4gICAgICAgICAgbW8uaWQgPT09IHVwZGF0ZWRPcmRlci5pZCA/IHVwZGF0ZWRPcmRlciA6IG1vXG4gICAgICAgIClcbiAgICAgIH07XG4gICAgfVxuICAgIGNhc2UgUkVTRVRfVElDS0VUOiB7XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgY3VycmVudFRpY2tldDogbnVsbCB9O1xuICAgIH1cbiAgICBjYXNlIFJFQ0VJVkVfVElDS0VUOiB7XG4gICAgICBjb25zdCB0aWNrZXQgPSBwYXlsb2FkLnJlc3BvbnNlO1xuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIGN1cnJlbnRUaWNrZXQ6IHRpY2tldCB9O1xuICAgIH1cbiAgICBjYXNlIFJFQ0VJVkVfRVhUUkFfUVVFU1RJT05TOiB7XG4gICAgICBjb25zdCB7IGRhdGEgfSA9IHBheWxvYWQucmVzcG9uc2U7XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgZXh0cmFRdWVzdGlvbnM6IGRhdGEgfTtcbiAgICB9XG4gICAgY2FzZSBVUERBVEVfVElDS0VUOiB7XG4gICAgICBjb25zdCB0aWNrZXREYXRhID0gcGF5bG9hZC5yZXNwb25zZTtcbiAgICAgIGNvbnN0IG5ld09yZGVycyA9IHN0YXRlLm1lbWJlck9yZGVycy5tYXAoKG9yZGVyKSA9PiB7XG4gICAgICAgIGNvbnN0IG5ld1RpY2tldHMgPSBvcmRlci5tZW1iZXJUaWNrZXRzLm1hcCgodGlja2V0KSA9PiB7XG4gICAgICAgICAgaWYgKHRpY2tldC5pZCA9PT0gdGlja2V0RGF0YS5pZCkge1xuICAgICAgICAgICAgcmV0dXJuIHRpY2tldERhdGE7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB0aWNrZXQ7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiB7IC4uLm9yZGVyLCBtZW1iZXJUaWNrZXRzOiBuZXdUaWNrZXRzIH07XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIG1lbWJlck9yZGVyczogbmV3T3JkZXJzIH07XG4gICAgfVxuICAgIGNhc2UgQVNTSUdOX1RJQ0tFVDoge1xuICAgICAgY29uc3QgdGlja2V0RGF0YSA9IHBheWxvYWQucmVzcG9uc2U7XG4gICAgICBjb25zdCBuZXdPcmRlcnMgPSBzdGF0ZS5tZW1iZXJPcmRlcnMubWFwKChvcmRlcikgPT4ge1xuICAgICAgICBjb25zdCBuZXdUaWNrZXRzID0gb3JkZXIubWVtYmVyVGlja2V0cy5tYXAoKHRpY2tldCkgPT4ge1xuICAgICAgICAgIGlmICh0aWNrZXQuaWQgPT09IHRpY2tldERhdGEuaWQpIHtcbiAgICAgICAgICAgIHJldHVybiB0aWNrZXREYXRhO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gdGlja2V0O1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4geyAuLi5vcmRlciwgbWVtYmVyVGlja2V0czogbmV3VGlja2V0cyB9O1xuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBjdXJyZW50VGlja2V0OiB0aWNrZXREYXRhLCBtZW1iZXJPcmRlcnM6IG5ld09yZGVycyB9O1xuICAgIH1cbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIHN0YXRlO1xuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBXaWRnZXRSZWR1Y2VyO1xuIiwiaW1wb3J0IHsgdXNlTWVtbyB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgY29uZmlndXJlU3RvcmUgfSBmcm9tIFwiQHJlZHV4anMvdG9vbGtpdFwiO1xuaW1wb3J0IHtcbiAgcGVyc2lzdFN0b3JlLFxuICBwZXJzaXN0UmVkdWNlcixcbiAgRkxVU0gsXG4gIFJFSFlEUkFURSxcbiAgUEFVU0UsXG4gIFBFUlNJU1QsXG4gIFBVUkdFLFxuICBSRUdJU1RFUlxufSBmcm9tIFwicmVkdXgtcGVyc2lzdFwiO1xuaW1wb3J0IHN0b3JhZ2UgZnJvbSBcInJlZHV4LXBlcnNpc3QvbGliL3N0b3JhZ2VcIjtcbmltcG9ydCB7IGNvbWJpbmVSZWR1Y2VycyB9IGZyb20gXCJyZWR1eFwiO1xuaW1wb3J0IFdpZGdldFJlZHVjZXIgZnJvbSBcIi4vcmVkdWNlclwiO1xuXG5leHBvcnQgY29uc3QgZ2V0U3RvcmUgPSAoe1xuICBjbGllbnRJZCxcbiAgbG9naW5VcmwsXG4gIHN1bW1pdCxcbiAgYXBpQmFzZVVybCxcbiAgdXBkYXRlUHJvZmlsZVxufSkgPT4ge1xuICAvLyB0byBhZGQgb3RoZXIgcmVkdWNlcnMgbGF0ZXJcbiAgY29uc3QgcmVkdWNlcnMgPSBjb21iaW5lUmVkdWNlcnMoe1xuICAgIHdpZGdldFN0YXRlOiBXaWRnZXRSZWR1Y2VyXG4gIH0pO1xuXG4gIGNvbnN0IHN0b3JlID0gY29uZmlndXJlU3RvcmUoe1xuICAgIHJlZHVjZXI6IHBlcnNpc3RSZWR1Y2VyKFxuICAgICAge1xuICAgICAgICBrZXk6IGByb290X215X29yZGVyc190aWNrZXRzXyR7Y2xpZW50SWR9YCxcbiAgICAgICAgc3RvcmFnZVxuICAgICAgfSxcbiAgICAgIHJlZHVjZXJzXG4gICAgKSxcbiAgICBtaWRkbGV3YXJlOiAoZ2V0RGVmYXVsdE1pZGRsZXdhcmUpID0+XG4gICAgICBnZXREZWZhdWx0TWlkZGxld2FyZSh7XG4gICAgICAgIHRodW5rOiB7XG4gICAgICAgICAgZXh0cmFBcmd1bWVudDoge1xuICAgICAgICAgICAgY2xpZW50SWQsXG4gICAgICAgICAgICBhcGlCYXNlVXJsLFxuICAgICAgICAgICAgc3VtbWl0LFxuICAgICAgICAgICAgbG9naW5VcmwsXG4gICAgICAgICAgICB1cGRhdGVQcm9maWxlXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBpbW11dGFibGVDaGVjazogZmFsc2UsXG4gICAgICAgIHNlcmlhbGl6YWJsZUNoZWNrOiB7XG4gICAgICAgICAgaWdub3JlZEFjdGlvbnM6IFtGTFVTSCwgUkVIWURSQVRFLCBQQVVTRSwgUEVSU0lTVCwgUFVSR0UsIFJFR0lTVEVSXVxuICAgICAgICB9XG4gICAgICB9KVxuICB9KTtcblxuICByZXR1cm4gc3RvcmU7XG59O1xuXG5leHBvcnQgY29uc3QgdXNlSW5pdFN0b3JlID0gKGNvbmZpZykgPT4ge1xuICBjb25zdCBzdG9yZSA9IHVzZU1lbW8oKCkgPT4gZ2V0U3RvcmUoY29uZmlnKSwgW10pO1xuICBjb25zdCBwZXJzaXN0b3IgPSB1c2VNZW1vKCgpID0+IHBlcnNpc3RTdG9yZShzdG9yZSksIFtzdG9yZV0pO1xuXG4gIHJldHVybiB7XG4gICAgc3RvcmUsXG4gICAgcGVyc2lzdG9yXG4gIH07XG59O1xuIiwiaW1wb3J0IHtcbiAgaW5pdExvZ091dCxcbiAgZ2V0QWNjZXNzVG9rZW5cbn0gZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvc2VjdXJpdHkvbWV0aG9kc1wiO1xuaW1wb3J0ICogYXMgU2VudHJ5IGZyb20gXCJAc2VudHJ5L3JlYWN0XCI7XG5cbmV4cG9ydCBjb25zdCBnZXRBY2Nlc3NUb2tlblNhZmVseSA9IGFzeW5jICgpID0+IHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gYXdhaXQgZ2V0QWNjZXNzVG9rZW4oKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGNvbnNvbGUubG9nKFwibXktb3JkZXJzLXRpY2tldHMtd2lkZ2U6OiBnZXRBY2Nlc3NUb2tlblNhZmVseSBlcnJvcjogXCIsIGUpO1xuICAgIFNlbnRyeS5jYXB0dXJlRXhjZXB0aW9uKGUpO1xuICAgIGluaXRMb2dPdXQoKTtcbiAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoKTtcbiAgfVxufTtcbiIsImV4cG9ydCBjb25zdCBMQVNUX0hPVVJfT0ZfMjRfSE9VUiA9IDIzO1xuZXhwb3J0IGNvbnN0IExBU1RfTUlOVVRFX09GX0hPVVIgPSA1OTtcbmV4cG9ydCBjb25zdCBPTkVfUEFHRV9ORVhUID0gMTtcbmV4cG9ydCBjb25zdCBNSUxMSVNFQ19UT19TRUMgPSAxMDAwO1xuZXhwb3J0IGNvbnN0IE9ORV9EQVkgPSAxO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfSVRFTVNfUEVSX1BBR0UgPSA1O1xuZXhwb3J0IGNvbnN0IEZJUlNUX1BBR0UgPSAxO1xuZXhwb3J0IGNvbnN0IFBBR0lOQVRJT05fRElTUExBWV9DT1VOVCA9IDU7XG5leHBvcnQgY29uc3QgU1RFUF9PTkUgPSAxO1xuZXhwb3J0IGNvbnN0IFNURVBfVFdPID0gMjtcblxuZXhwb3J0IGNvbnN0IFNUQVRVU19DT01QTEVURSA9IFwiU1RBVFVTX0NPTVBMRVRFXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX0lOQ09NUExFVEUgPSBcIlNUQVRVU19JTkNPTVBMRVRFXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX1BFTkRJTkcgPSBcIlNUQVRVU19QRU5ESU5HXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX0NBTkNFTExFRCA9IFwiU1RBVFVTX0NBTkNFTExFRFwiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19FUlJPUiA9IFwiU1RBVFVTX0VSUk9SXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX1BST0NFU1NJTkcgPSBcIlNUQVRVU19QUk9DRVNTSU5HXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX1VOQVNTSUdORUQgPSBcIlNUQVRVU19VTkFTU0lHTkVEXCI7XG5cbmV4cG9ydCBjb25zdCBTVEFUVVNfUkVGVU5EX1BFTkRJTkcgPSBcIlNUQVRVU19SRUZVTkRfUEVORElOR1wiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19SRUZVTkRfQVBQUk9WRUQgPSBcIlNUQVRVU19SRUZVTkRfQVBQUk9WRURcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfUkVGVU5EX1JFSkVDVEVEID0gXCJTVEFUVVNfUkVGVU5EX1JFSkVDVEVEXCI7XG5cbmV4cG9ydCBjb25zdCBKRVNUX1RJTUVPVVRfSU5fTUlMTElTRUMgPSAxMDAwMDtcblxuZXhwb3J0IGNvbnN0IE9ORV9JVEVNID0gMTtcbmV4cG9ydCBjb25zdCBUV09fSVRFTSA9IDI7XG5leHBvcnQgY29uc3QgRklWRV9JVEVNID0gNTtcbmV4cG9ydCBjb25zdCBTSVhfSVRFTSA9IDY7XG5cbmV4cG9ydCBjb25zdCBQUk9NSVNFX0JBVENIX0xJTUlUID0gMTA7XG5leHBvcnQgY29uc3QgRklGVFlfUEVSX1BBR0UgPSA1MDtcblxuZXhwb3J0IGNvbnN0IEVSUk9SX0NPREVTID0ge1xuICA0MDE6IDQwMSxcbiAgNDAzOiA0MDEsXG4gIDQxMjogNDAxLFxuICA1MDA6IDUwMFxufTtcbiIsImltcG9ydCBtb21lbnQgZnJvbSBcIm1vbWVudC10aW1lem9uZVwiO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2ggfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7XG4gIExBU1RfSE9VUl9PRl8yNF9IT1VSLFxuICBMQVNUX01JTlVURV9PRl9IT1VSLFxuICBNSUxMSVNFQ19UT19TRUNcbn0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5cbmV4cG9ydCBjb25zdCBmb3JtYXRDdXJyZW5jeSA9ICh2YWx1ZSwgeyBsb2NhbGUgPSBcImVuLVVTXCIsIC4uLm9wdGlvbnMgfSkgPT4ge1xuICBjb25zdCBkZWZhdWx0T3B0aW9ucyA9IHtcbiAgICBjdXJyZW5jeTogXCJVU0RcIixcbiAgICBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDIsXG4gICAgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiAyXG4gIH07XG5cbiAgY29uc3QgZm9ybWF0dGVyID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KGxvY2FsZSwge1xuICAgIHN0eWxlOiBcImN1cnJlbmN5XCIsXG4gICAgLi4uZGVmYXVsdE9wdGlvbnMsXG4gICAgLi4ub3B0aW9uc1xuICB9KTtcblxuICByZXR1cm4gZm9ybWF0dGVyLmZvcm1hdCh2YWx1ZSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Rm9ybWF0dGVkRGF0ZSA9IChkYXRldGltZSwgdGltZVpvbmUpID0+IHtcbiAgaWYgKHRpbWVab25lKVxuICAgIHJldHVybiBtb21lbnRcbiAgICAgIC50eihkYXRldGltZSAqIE1JTExJU0VDX1RPX1NFQywgdGltZVpvbmUpXG4gICAgICAuZm9ybWF0KFwiTU1NTSBERCwgWVlZWVwiKTtcblxuICByZXR1cm4gbW9tZW50LnVuaXgoZGF0ZXRpbWUpLmZvcm1hdChcIk1NTU0gREQsIFlZWVlcIik7XG59O1xuXG5leHBvcnQgY29uc3QgY2FsY3VsYXRlT3JkZXJUb3RhbHMgPSAoeyBvcmRlciwgc3VtbWl0IH0pID0+IHtcbiAgaWYgKCFvcmRlciB8fCAhc3VtbWl0KSByZXR1cm4ge307XG4gIGNvbnN0IHRpY2tldHMgPSBvcmRlcj8ubWVtYmVyVGlja2V0cztcbiAgaWYgKCF0aWNrZXRzKSByZXR1cm4ge307XG5cbiAgY29uc3QgeyByZWZ1bmRlZF9hbW91bnQsIGRpc2NvdW50X2Ftb3VudCwgdGF4ZXNfYW1vdW50LCBhbW91bnQgfSA9IG9yZGVyO1xuICBjb25zdCB7IHRpY2tldF90eXBlcyB9ID0gc3VtbWl0O1xuXG4gIGNvbnN0IHRpY2tldFN1bW1hcnkgPSBbXTtcbiAgbGV0IHB1cmNoYXNlVGlja2V0VG90YWwgPSAwO1xuXG4gIGNvbnN0IGN1cnJlbmN5T2JqZWN0ID0geyBjdXJyZW5jeTogb3JkZXIuY3VycmVuY3kgfTtcblxuICBPYmplY3Qua2V5cyhvcmRlci50aWNrZXRzX2V4Y2VycHRfYnlfdGlja2V0X3R5cGUpLm1hcCgodGlja2V0KSA9PiB7XG4gICAgY29uc3QgdGlja2V0VHlwZSA9IHRpY2tldF90eXBlcz8uZmluZCgodHQpID0+IHR0Lm5hbWUgPT09IHRpY2tldCk7XG4gICAgaWYgKCF0aWNrZXRUeXBlKSByZXR1cm4gbnVsbDtcbiAgICB0aWNrZXRTdW1tYXJ5LnB1c2goe1xuICAgICAgdGlja2V0X3R5cGVfaWQ6IHRpY2tldFR5cGUuaWQsXG4gICAgICB0aWNrZXRfdHlwZTogdGlja2V0VHlwZSxcbiAgICAgIG5hbWU6IHRpY2tldCxcbiAgICAgIHF0eTogb3JkZXIudGlja2V0c19leGNlcnB0X2J5X3RpY2tldF90eXBlW3RpY2tldF1cbiAgICB9KTtcbiAgICBwdXJjaGFzZVRpY2tldFRvdGFsICs9XG4gICAgICB0aWNrZXRUeXBlLmNvc3QgKiBvcmRlci50aWNrZXRzX2V4Y2VycHRfYnlfdGlja2V0X3R5cGVbdGlja2V0XTtcblxuICAgIHJldHVybiB0aWNrZXRTdW1tYXJ5O1xuICB9KTtcblxuICBjb25zdCBwdXJjaGFzZVRvdGFsID0gZm9ybWF0Q3VycmVuY3kocHVyY2hhc2VUaWNrZXRUb3RhbCwgY3VycmVuY3lPYmplY3QpO1xuXG4gIGNvbnN0IGRpc2NvdW50VG90YWwgPSBmb3JtYXRDdXJyZW5jeShkaXNjb3VudF9hbW91bnQsIGN1cnJlbmN5T2JqZWN0KTtcbiAgY29uc3QgcmVmdW5kVG90YWwgPSBmb3JtYXRDdXJyZW5jeShyZWZ1bmRlZF9hbW91bnQsIGN1cnJlbmN5T2JqZWN0KTtcbiAgY29uc3QgdGF4ZXNUb3RhbCA9IGZvcm1hdEN1cnJlbmN5KHRheGVzX2Ftb3VudCwgY3VycmVuY3lPYmplY3QpO1xuICBjb25zdCBhbW91bnRUb3RhbCA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvcmRlciwgXCJhbW91bnRcIilcbiAgICA/IGZvcm1hdEN1cnJlbmN5KGFtb3VudCwgY3VycmVuY3lPYmplY3QpXG4gICAgOiBmb3JtYXRDdXJyZW5jeShwdXJjaGFzZVRvdGFsLCBjdXJyZW5jeU9iamVjdCk7XG5cbiAgcmV0dXJuIHtcbiAgICBkaXNjb3VudFRvdGFsLFxuICAgIHJlZnVuZFRvdGFsLFxuICAgIHRheGVzVG90YWwsXG4gICAgYW1vdW50VG90YWwsXG4gICAgdGlja2V0U3VtbWFyeVxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldE9yZGVyVGlja2V0cyA9IChtZW1iZXJPcmRlcnMsIG9yZGVySWQpID0+IHtcbiAgY29uc3Qgb3JkZXJzID0gbWVtYmVyT3JkZXJzLmZpbHRlcigobykgPT4gby5pZCA9PT0gb3JkZXJJZCk7XG4gIHJldHVybiBvcmRlcnNbMF0/Lm1lbWJlclRpY2tldHM7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0RXBvY2hMb3dlclVwcGVySW5TZWNvbmRzID0gKHRzKSA9PiB7XG4gIGNvbnN0IGxvd2VyID0gdHMuc2V0SG91cnMoMCwgMCwgMCwgMCkgLyBNSUxMSVNFQ19UT19TRUM7XG4gIGNvbnN0IHVwcGVyID1cbiAgICB0cy5zZXRIb3VycyhMQVNUX0hPVVJfT0ZfMjRfSE9VUiwgTEFTVF9NSU5VVEVfT0ZfSE9VUiwgMCwgMCkgL1xuICAgIE1JTExJU0VDX1RPX1NFQztcbiAgcmV0dXJuIHtcbiAgICBsb3dlcixcbiAgICB1cHBlclxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRDdXJyZW50VGltZSA9ICgpID0+XG4gIE1hdGgucm91bmQoK25ldyBEYXRlKCkgLyBNSUxMSVNFQ19UT19TRUMpO1xuXG5leHBvcnQgY29uc3QgZ2V0Tm93ID0gKCkgPT4gKGRpc3BhdGNoLCBnZXRTdGF0ZSkgPT4ge1xuICBjb25zdCB7IHRpbWVyU3RhdGUgfSA9IGdldFN0YXRlKCk7XG4gIHJldHVybiB0aW1lclN0YXRlPy5ub3dVdGMgPT0gbnVsbCA/IGRlZmF1bHRDdXJyZW50VGltZSgpIDogdGltZXJTdGF0ZT8ubm93VXRjO1xufTtcblxuZXhwb3J0IGNvbnN0IHVzZU5vdyA9ICgpID0+IHtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuXG4gIHJldHVybiBkaXNwYXRjaChnZXROb3coKSk7XG59O1xuIiwiaW1wb3J0IG1vbWVudCBmcm9tIFwibW9tZW50LXRpbWV6b25lXCI7XG5pbXBvcnQgeyBNSUxMSVNFQ19UT19TRUMsIE9ORV9EQVkgfSBmcm9tIFwiLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IHVzZU5vdyB9IGZyb20gXCIuXCI7XG5cbmV4cG9ydCBjb25zdCBjaGVja1N1bW1pdFBhc3QgPSAoc3VtbWl0LCBub3cpID0+IHtcbiAgaWYgKCFzdW1taXQpIHJldHVybiBudWxsO1xuXG4gIGNvbnN0IHJlYXNzaWduX2RhdGUgPVxuICAgIHN1bW1pdD8ucmVhc3NpZ25fdGlja2V0X3RpbGxfZGF0ZSAmJlxuICAgIHN1bW1pdC5yZWFzc2lnbl90aWNrZXRfdGlsbF9kYXRlIDwgc3VtbWl0LmVuZF9kYXRlXG4gICAgICA/IHN1bW1pdC5yZWFzc2lnbl90aWNrZXRfdGlsbF9kYXRlXG4gICAgICA6IHN1bW1pdC5lbmRfZGF0ZTtcblxuICByZXR1cm4gbm93ID4gcmVhc3NpZ25fZGF0ZTtcbn07XG5cbmV4cG9ydCBjb25zdCBjaGVja1N1bW1pdFN0YXJ0ZWQgPSAoc3VtbWl0LCBub3cpID0+IHtcbiAgaWYgKCFzdW1taXQpIHJldHVybiBudWxsO1xuXG4gIHJldHVybiBzdW1taXQuc3RhcnRfZGF0ZSA8IG5vdztcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRTdW1taXREYXlzRGlmZiA9IChzdW1taXQpID0+IHtcbiAgaWYgKCFzdW1taXQpIHJldHVybiBudWxsO1xuICBjb25zdCBzdGFydERheSA9IG1vbWVudChzdW1taXQuc3RhcnRfZGF0ZSAqIE1JTExJU0VDX1RPX1NFQykudHooXG4gICAgc3VtbWl0LnRpbWVfem9uZV9pZFxuICApO1xuICBjb25zdCBlbmREYXkgPSBtb21lbnQoc3VtbWl0LmVuZF9kYXRlICogTUlMTElTRUNfVE9fU0VDKS50eihcbiAgICBzdW1taXQudGltZV96b25lX2lkXG4gICk7XG4gIGNvbnN0IGRheXMgPSBlbmREYXk/LmRpZmYoc3RhcnREYXksIFwiZGF5c1wiKTtcbiAgcmV0dXJuIHtcbiAgICBzdGFydERheSxcbiAgICBlbmREYXksXG4gICAgZGF5c1xuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFN1bW1pdEZvcm1hdHRlZERhdGUgPSAoc3VtbWl0KSA9PiB7XG4gIGlmICghc3VtbWl0KSByZXR1cm4gbnVsbDtcbiAgY29uc3QgeyBzdGFydERheSwgZW5kRGF5LCBkYXlzIH0gPSBnZXRTdW1taXREYXlzRGlmZihzdW1taXQpO1xuICBpZiAoIXN0YXJ0RGF5IHx8ICFlbmREYXkpIHJldHVybiBudWxsO1xuICBsZXQgZm9ybWF0U3RhcnREYXRlID0gXCJNTU1NIERELCBZWVlZXCI7XG4gIGxldCBmb3JtYXRFbmREYXRlID0gXCJNTU1NIERELCBZWVlZXCI7XG4gIGlmIChzdGFydERheS55ZWFyKCkgPT09IGVuZERheS55ZWFyKCkpIGZvcm1hdFN0YXJ0RGF0ZSA9IFwiTU1NTSBERFwiO1xuICBpZiAoc3RhcnREYXkubW9udGgoKSA9PT0gZW5kRGF5Lm1vbnRoKCkpIGZvcm1hdEVuZERhdGUgPSBcIkRELCBZWVlZXCI7XG5cbiAgY29uc3Qgc3RhcnREYXRlID0gc3RhcnREYXkuZm9ybWF0KGZvcm1hdFN0YXJ0RGF0ZSk7XG4gIGNvbnN0IGVuZERhdGUgPSBlbmREYXkuZm9ybWF0KGZvcm1hdEVuZERhdGUpO1xuXG4gIGlmIChkYXlzID4gT05FX0RBWSkgcmV0dXJuIGAke3N0YXJ0RGF0ZX0gLSAke2VuZERhdGV9YDtcblxuICByZXR1cm4gc3RhcnREYXRlO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFN1bW1pdExvY2F0aW9uID0gKHN1bW1pdCkgPT4ge1xuICBpZiAoIXN1bW1pdCkgcmV0dXJuIG51bGw7XG5cbiAgY29uc3QgbG9jYXRpb24gPSBzdW1taXQubG9jYXRpb25zPy5maW5kKFxuICAgIChsKSA9PiBsLmNsYXNzX25hbWUgPT09IFwiU3VtbWl0VmVudWVcIiAmJiBsLmlzX21haW4gPT09IHRydWVcbiAgKTtcblxuICBpZiAoIWxvY2F0aW9uKSByZXR1cm4gbnVsbDtcblxuICByZXR1cm4gYCR7bG9jYXRpb24uY2l0eX0sICR7bG9jYXRpb24uY291bnRyeX1gO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFN1bW1pdFJlYXNzaWduRGF0ZSA9IChzdW1taXQpID0+IHtcbiAgaWYgKCFzdW1taXQpIHJldHVybiBudWxsO1xuXG4gIHJldHVybiBzdW1taXQucmVhc3NpZ25fdGlja2V0X3RpbGxfZGF0ZSAmJlxuICAgIHN1bW1pdC5yZWFzc2lnbl90aWNrZXRfdGlsbF9kYXRlIDwgc3VtbWl0LmVuZF9kYXRlXG4gICAgPyBzdW1taXQucmVhc3NpZ25fdGlja2V0X3RpbGxfZGF0ZVxuICAgIDogc3VtbWl0LmVuZF9kYXRlO1xufTtcblxuZXhwb3J0IGNvbnN0IHVzZVN1bW1pdERldGFpbHMgPSAoeyBzdW1taXQgfSkgPT4ge1xuICBjb25zdCBub3cgPSB1c2VOb3coKTtcblxuICBpZiAoIXN1bW1pdCkgcmV0dXJuIHt9O1xuXG4gIGNvbnN0IGxvY2F0aW9uID0gZ2V0U3VtbWl0TG9jYXRpb24oc3VtbWl0KTtcbiAgY29uc3QgZm9ybWF0dGVkRGF0ZSA9IGdldFN1bW1pdEZvcm1hdHRlZERhdGUoc3VtbWl0KTtcbiAgY29uc3QgcmVhc3NpZ25EYXRlID0gZ2V0U3VtbWl0UmVhc3NpZ25EYXRlKHN1bW1pdCk7XG4gIGNvbnN0IGZvcm1hdHRlZFJlYXNzaWduRGF0ZSA9IG1vbWVudC50eihcbiAgICByZWFzc2lnbkRhdGUsXG4gICAgc3VtbWl0LnRpbWVfem9uZT8udGltZV96b25lX2lkXG4gICk7XG4gIGNvbnN0IGRheXNVbnRpbFJlYXNzaWduRGVhZGxpbmUgPSBnZXRTdW1taXREYXlzRGlmZihcbiAgICBub3csXG4gICAgcmVhc3NpZ25EYXRlLFxuICAgIHN1bW1pdC50aW1lX3pvbmU/Lm5hbWVcbiAgKTtcblxuICBjb25zdCBpc1Bhc3QgPSBjaGVja1N1bW1pdFBhc3Qoc3VtbWl0LCBub3cpO1xuICBjb25zdCBpc1N0YXJ0ZWQgPSBjaGVja1N1bW1pdFN0YXJ0ZWQoc3VtbWl0LCBub3cpO1xuICBjb25zdCBpc1JlYXNzaWduYWJsZSA9IHJlYXNzaWduRGF0ZSA+IG5vdztcblxuICByZXR1cm4ge1xuICAgIG5hbWU6IHN1bW1pdD8ubmFtZSxcbiAgICBub3csXG4gICAgbG9jYXRpb24sXG4gICAgZm9ybWF0dGVkRGF0ZSxcbiAgICByZWFzc2lnbkRhdGUsXG4gICAgZm9ybWF0dGVkUmVhc3NpZ25EYXRlLFxuICAgIGRheXNVbnRpbFJlYXNzaWduRGVhZGxpbmUsXG4gICAgaXNQYXN0LFxuICAgIGlzU3RhcnRlZCxcbiAgICBpc1JlYXNzaWduYWJsZVxuICB9O1xufTtcbiIsImltcG9ydCAqIGFzIHl1cCBmcm9tIFwieXVwXCI7XG5pbXBvcnQgaTE4biBmcm9tIFwiLi4vaTE4blwiO1xuaW1wb3J0IHtcbiAgU1RBVFVTX0NBTkNFTExFRCxcbiAgU1RBVFVTX0NPTVBMRVRFLFxuICBTVEFUVVNfSU5DT01QTEVURSxcbiAgU1RBVFVTX1VOQVNTSUdORUQsXG4gIFNUQVRVU19SRUZVTkRfUEVORElORyxcbiAgU1RBVFVTX1JFRlVORF9BUFBST1ZFRCxcbiAgU1RBVFVTX1JFRlVORF9SRUpFQ1RFRFxufSBmcm9tIFwiLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IFRJQ0tFVF9BVFRFTkRFRV9LRVlTIH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbnN0YW50c1wiO1xuaW1wb3J0IHtcbiAgY2hlY2tJZlZhbHVlTWF0Y2gsXG4gIGdldFR5cGVJbml0aWFsVmFsdWUsXG4gIHRvU2x1Z1xufSBmcm9tIFwiLi4vY29tcG9uZW50cy9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb21wb25lbnRzL3V0aWxzXCI7XG5pbXBvcnQge1xuICBRdWVzdGlvblR5cGVfQ2hlY2tib3gsXG4gIFF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3QsXG4gIFF1ZXN0aW9uVHlwZV9Db21ib0JveCxcbiAgUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveCxcbiAgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdFxufSBmcm9tIFwiLi4vY29tcG9uZW50cy9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb25zdGFudHNcIjtcblxuZXhwb3J0IGNvbnN0IHN0YXR1c0RhdGEgPSB7XG4gIFtTVEFUVVNfVU5BU1NJR05FRF06IHtcbiAgICB0eXBlOiBTVEFUVVNfVU5BU1NJR05FRCxcbiAgICB0ZXh0OiBpMThuLnQoXCJ0aWNrZXRfc3RhdHVzLnVuYXNzaWduZWRcIilcbiAgfSxcbiAgW1NUQVRVU19JTkNPTVBMRVRFXToge1xuICAgIHR5cGU6IFNUQVRVU19JTkNPTVBMRVRFLFxuICAgIHRleHQ6IGkxOG4udChcInRpY2tldF9zdGF0dXMuaW5jb21wbGV0ZVwiKVxuICB9LFxuICBbU1RBVFVTX0NPTVBMRVRFXToge1xuICAgIHR5cGU6IFNUQVRVU19DT01QTEVURSxcbiAgICB0ZXh0OiBpMThuLnQoXCJ0aWNrZXRfc3RhdHVzLmNvbXBsZXRlXCIpXG4gIH0sXG4gIFtTVEFUVVNfQ0FOQ0VMTEVEXToge1xuICAgIHR5cGU6IFNUQVRVU19DQU5DRUxMRUQsXG4gICAgdGV4dDogaTE4bi50KFwidGlja2V0X3N0YXR1cy5jYW5jZWxsZWRcIilcbiAgfVxufTtcbmV4cG9ydCBjb25zdCBnZXRUaWNrZXRTdGF0dXNLZXkgPSAodGlja2V0KSA9PiB7XG4gIGlmICghdGlja2V0LmlzX2FjdGl2ZSkgcmV0dXJuIFNUQVRVU19DQU5DRUxMRUQ7XG5cbiAgaWYgKHRpY2tldC5vd25lcl9pZCA9PT0gMCkgcmV0dXJuIFNUQVRVU19VTkFTU0lHTkVEO1xuXG4gIGlmICghdGlja2V0Lm93bmVyPy5maXJzdF9uYW1lIHx8ICF0aWNrZXQub3duZXI/Lmxhc3RfbmFtZSlcbiAgICByZXR1cm4gU1RBVFVTX0lOQ09NUExFVEU7XG5cbiAgaWYgKHRpY2tldC5vd25lciAmJiB0aWNrZXQub3duZXI/LnN0YXR1cyA9PT0gXCJJbmNvbXBsZXRlXCIpXG4gICAgcmV0dXJuIFNUQVRVU19JTkNPTVBMRVRFO1xuXG4gIGlmICh0aWNrZXQub3duZXIgJiYgdGlja2V0Lm93bmVyPy5zdGF0dXMgPT09IFwiQ29tcGxldGVcIilcbiAgICByZXR1cm4gU1RBVFVTX0NPTVBMRVRFO1xuXG4gIHJldHVybiBTVEFUVVNfSU5DT01QTEVURTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRUaWNrZXRTdGF0dXNEYXRhID0gKHRpY2tldCwgaXNTdW1taXRQYXN0KSA9PlxuICBzdGF0dXNEYXRhW2dldFRpY2tldFN0YXR1c0tleSh0aWNrZXQsIGlzU3VtbWl0UGFzdCldO1xuXG5leHBvcnQgY29uc3QgZ2V0VGlja2V0Um9sZSA9ICh0aWNrZXQpID0+IHtcbiAgaWYgKCF0aWNrZXQuYmFkZ2UpIHJldHVybiBudWxsO1xuXG4gIGNvbnN0IHsgZmVhdHVyZXMgfSA9IHRpY2tldC5iYWRnZTtcblxuICBpZiAoZmVhdHVyZXMubGVuZ3RoID4gMClcbiAgICByZXR1cm4gZmVhdHVyZXMubWFwKChmZWF0dXJlKSA9PiBmZWF0dXJlLm5hbWUpLmpvaW4oXCIsIFwiKTtcblxuICByZXR1cm4gbnVsbDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRUaWNrZXRUeXBlID0gKHRpY2tldCwgc3VtbWl0KSA9PlxuICBzdW1taXQudGlja2V0X3R5cGVzLmZpbmQoKHR5cGUpID0+IHR5cGUuaWQgPT09IHRpY2tldC50aWNrZXRfdHlwZV9pZCk7XG5cbmV4cG9ydCBjb25zdCBpc1RpY2tldFJlZnVuZGFibGUgPSAodGlja2V0KSA9PlxuICB0aWNrZXQ/LmZpbmFsX2Ftb3VudCA+IDAgJiZcbiAgdGlja2V0Py5maW5hbF9hbW91bnQgPiB0aWNrZXQ/LnJlZnVuZGVkX2Ftb3VudCAmJlxuICAhdGlja2V0Py5yZWZ1bmRfcmVxdWVzdHM/LnNvbWUoKHJyKSA9PiByci5zdGF0dXMgPT09IFwiUmVxdWVzdGVkXCIpO1xuXG5leHBvcnQgY29uc3QgdGlja2V0c1JlZnVuZGFibGUgPSAodGlja2V0cykgPT5cbiAgdGlja2V0cz8uZmlsdGVyKCh0aWNrZXQpID0+IGlzVGlja2V0UmVmdW5kYWJsZSh0aWNrZXQpKS5sZW5ndGggfHwgMDtcblxuZXhwb3J0IGNvbnN0IGdldFJlZnVuZGVkUmVxdWVzdGVkVGlja2V0cyA9ICh0aWNrZXRzKSA9PlxuICB0aWNrZXRzPy5maWx0ZXIoKHRpY2tldCkgPT5cbiAgICB0aWNrZXQucmVmdW5kX3JlcXVlc3RzPy5zb21lKChycikgPT4gcnIuc3RhdHVzID09PSBcIlJlcXVlc3RlZFwiKVxuICApO1xuXG5leHBvcnQgY29uc3QgZ2V0UmVmdW5kZWRSZXF1ZXN0ZWRTdGF0dXMgPSAodGlja2V0KSA9PiB7XG4gIGlmICh0aWNrZXQucmVmdW5kX3JlcXVlc3RzPy5zb21lKChycikgPT4gcnIuc3RhdHVzID09PSBcIlJlcXVlc3RlZFwiKSlcbiAgICByZXR1cm4gU1RBVFVTX1JFRlVORF9QRU5ESU5HO1xuICBpZiAodGlja2V0LnJlZnVuZF9yZXF1ZXN0cz8uc29tZSgocnIpID0+IHJyLnN0YXR1cyA9PT0gXCJBcHByb3ZlZFwiKSlcbiAgICByZXR1cm4gU1RBVFVTX1JFRlVORF9BUFBST1ZFRDtcbiAgaWYgKHRpY2tldC5yZWZ1bmRfcmVxdWVzdHM/LnNvbWUoKHJyKSA9PiByci5zdGF0dXMgPT09IFwiUmVqZWN0ZWRcIikpXG4gICAgcmV0dXJuIFNUQVRVU19SRUZVTkRfUkVKRUNURUQ7XG4gIHJldHVybiBTVEFUVVNfUkVGVU5EX1BFTkRJTkc7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0UmVmdW5kUmVxdWVzdGVkU3RhdHVzQ29sb3IgPSAodGlja2V0KSA9PiB7XG4gIGNvbnN0IHN0YXR1cyA9IGdldFJlZnVuZGVkUmVxdWVzdGVkU3RhdHVzKHRpY2tldCk7XG4gIGxldCBzdGF0dXNDb2xvciA9IFwiXCI7XG4gIHN3aXRjaCAoc3RhdHVzKSB7XG4gICAgY2FzZSBTVEFUVVNfUkVGVU5EX1BFTkRJTkc6XG4gICAgICBzdGF0dXNDb2xvciA9IFwicGVuZGluZ1wiO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBTVEFUVVNfUkVGVU5EX0FQUFJPVkVEOlxuICAgICAgc3RhdHVzQ29sb3IgPSBcImFwcHJvdmVkXCI7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFNUQVRVU19SRUZVTkRfUkVKRUNURUQ6XG4gICAgICBzdGF0dXNDb2xvciA9IFwicmVqZWN0ZWRcIjtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICBzdGF0dXNDb2xvciA9IFwicGVuZGluZ1wiO1xuICB9XG4gIHJldHVybiBzdGF0dXNDb2xvcjtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRUeXBlVmFsaWRhdGlvbiA9ICh0eXBlLCBuYW1lLCBpc1JlcXVpcmVkKSA9PiB7XG4gIGxldCBzY2hlbWE7XG4gIHN3aXRjaCAodHlwZSkge1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NoZWNrYm94OlxuICAgICAgc2NoZW1hID0geXVwLmJvb2woKS5vbmVPZihbdHJ1ZV0sIGkxOG4udChcInZhbGlkYXRpb24uY2hlY2tib3gucmVxdWlyZWRcIikpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0OlxuICAgICAgc2NoZW1hID0geXVwLnN0cmluZyhgRW50ZXIgJHtuYW1lfWApO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ2hlY2tCb3hMaXN0OlxuICAgICAgc2NoZW1hID0geXVwLmFycmF5KCkub2YoeXVwLnN0cmluZygpKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveDpcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9Db21ib0JveDpcbiAgICAgIHNjaGVtYSA9IHl1cC5zdHJpbmcoYEVudGVyICR7bmFtZX1gKTtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICBzY2hlbWEgPSB5dXAuc3RyaW5nKGBFbnRlciAke25hbWV9YCk7XG4gICAgICBicmVhaztcbiAgfVxuXG4gIGlmIChpc1JlcXVpcmVkKSB7XG4gICAgc2NoZW1hID0gc2NoZW1hLnJlcXVpcmVkKGAke25hbWV9IGlzIHJlcXVpcmVkYCk7XG4gIH1cblxuICByZXR1cm4gc2NoZW1hO1xufTtcblxuZXhwb3J0IGNvbnN0IHBhcnNlQW5zd2VycyA9IChcbiAgb3duZXIsXG4gIGV4dHJhUXVlc3Rpb25zLFxuICBhbnN3ZXJzLFxuICBtYW5hZ2VyLFxuICBpbmNsdWRlRGVsZWdhdGlvbixcbiAgaW5jbHVkZUF0dGVuZGVlSW5mbyxcbiAgaW5jbHVkZURpc2NsYWltZXIsXG4gIG9ubHlSZWxldmFudCA9IGZhbHNlXG4pID0+IHtcbiAgY29uc3QgaW5pdGlhbFZhbHVlcyA9IHt9O1xuXG4gIGlmIChpbmNsdWRlQXR0ZW5kZWVJbmZvKSB7XG4gICAgaW5pdGlhbFZhbHVlc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5lbWFpbF0gPVxuICAgICAgYW5zd2Vyc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5lbWFpbF0gfHwgb3duZXIuZW1haWwgfHwgXCJcIjtcbiAgICBpbml0aWFsVmFsdWVzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmZpcnN0TmFtZV0gPVxuICAgICAgYW5zd2Vyc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5maXJzdE5hbWVdIHx8IG93bmVyLmZpcnN0X25hbWUgfHwgXCJcIjtcbiAgICBpbml0aWFsVmFsdWVzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmxhc3ROYW1lXSA9XG4gICAgICBhbnN3ZXJzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmxhc3ROYW1lXSB8fCBvd25lci5sYXN0X25hbWUgfHwgXCJcIjtcbiAgICBpbml0aWFsVmFsdWVzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmNvbXBhbnldID1cbiAgICAgIGFuc3dlcnNbVElDS0VUX0FUVEVOREVFX0tFWVMuY29tcGFueV0gfHwgb3duZXIuY29tcGFueTtcbiAgfVxuXG4gIGlmIChpbmNsdWRlRGlzY2xhaW1lcikge1xuICAgIGluaXRpYWxWYWx1ZXNbVElDS0VUX0FUVEVOREVFX0tFWVMuZGlzY2xhaW1lckFjY2VwdGVkXSA9XG4gICAgICBhbnN3ZXJzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmRpc2NsYWltZXJBY2NlcHRlZF0gfHxcbiAgICAgIG93bmVyLmRpc2NsYWltZXJfYWNjZXB0ZWQ7XG4gIH1cblxuICBpZiAoaW5jbHVkZURlbGVnYXRpb24pIHtcbiAgICBpbml0aWFsVmFsdWVzLmRlbGVnYXRlZF9maXJzdF9uYW1lID1cbiAgICAgIGFuc3dlcnMuZGVsZWdhdGVkX2ZpcnN0X25hbWUgfHwgbWFuYWdlcj8uZmlyc3RfbmFtZSB8fCBcIlwiO1xuICAgIGluaXRpYWxWYWx1ZXMuZGVsZWdhdGVkX2xhc3RfbmFtZSA9XG4gICAgICBhbnN3ZXJzLmRlbGVnYXRlZF9sYXN0X25hbWUgfHwgbWFuYWdlcj8ubGFzdF9uYW1lIHx8IFwiXCI7XG4gIH1cblxuICBleHRyYVF1ZXN0aW9ucy5mb3JFYWNoKChxKSA9PiB7XG4gICAgY29uc3QgcXVlc3Rpb25TbHVnID0gdG9TbHVnKHEubmFtZSwgcS5pZCk7XG4gICAgY29uc3QgYW5zd2VyID0gYW5zd2Vyc1txdWVzdGlvblNsdWddO1xuICAgIGluaXRpYWxWYWx1ZXNbcXVlc3Rpb25TbHVnXSA9IGFuc3dlciB8fCBnZXRUeXBlSW5pdGlhbFZhbHVlKHEpO1xuXG4gICAgaWYgKHEuc3ViX3F1ZXN0aW9uX3J1bGVzPy5sZW5ndGggPiAwKSB7XG4gICAgICBxLnN1Yl9xdWVzdGlvbl9ydWxlcy5mb3JFYWNoKChydWxlKSA9PiB7XG4gICAgICAgIGNvbnN0IHN1YlF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhcbiAgICAgICAgICBydWxlLnN1Yl9xdWVzdGlvbi5uYW1lLFxuICAgICAgICAgIHJ1bGUuc3ViX3F1ZXN0aW9uLmlkXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IHN1YkFuc3dlciA9IGFuc3dlcnNbc3ViUXVlc3Rpb25TbHVnXTtcbiAgICAgICAgY29uc3QgbWF0Y2ggPSBjaGVja0lmVmFsdWVNYXRjaChhbnN3ZXIsIHJ1bGUuYW5zd2VyX3ZhbHVlcyk7XG5cbiAgICAgICAgaWYgKCFvbmx5UmVsZXZhbnQgfHwgbWF0Y2gpIHtcbiAgICAgICAgICBpbml0aWFsVmFsdWVzW3N1YlF1ZXN0aW9uU2x1Z10gPVxuICAgICAgICAgICAgc3ViQW5zd2VyIHx8IGdldFR5cGVJbml0aWFsVmFsdWUocnVsZS5zdWJfcXVlc3Rpb24pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiBpbml0aWFsVmFsdWVzO1xufTtcblxuZXhwb3J0IGNvbnN0IGJ1aWxkVmFsaWRhdGlvblNjaGVtYSA9IChcbiAgZXh0cmFRdWVzdGlvbnMsXG4gIGluY2x1ZGVBdHRlbmRlZUluZm8sXG4gIGFsbG93c0RlbGVnYXRpb24sXG4gIGRpc2NsYWltZXJNYW5kYXRvcnlcbikgPT4ge1xuICBjb25zdCBzY2hlbWEgPSB7fTtcblxuICBpZiAoaW5jbHVkZUF0dGVuZGVlSW5mbykge1xuICAgIHNjaGVtYVtUSUNLRVRfQVRURU5ERUVfS0VZUy5lbWFpbF0gPSB5dXBcbiAgICAgIC5zdHJpbmcoaTE4bi50KFwidmFsaWRhdGlvbi5lbWFpbC5zdHJpbmdcIikpXG4gICAgICAuZW1haWwoaTE4bi50KFwidmFsaWRhdGlvbi5lbWFpbC5mb3JtYXRcIikpXG4gICAgICAucmVxdWlyZWQoaTE4bi50KFwidmFsaWRhdGlvbi5lbWFpbC5yZXF1aXJlZFwiKSk7XG4gICAgc2NoZW1hW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmZpcnN0TmFtZV0gPSB5dXBcbiAgICAgIC5zdHJpbmcoaTE4bi50KFwidmFsaWRhdGlvbi5maXJzdF9uYW1lLnN0cmluZ1wiKSlcbiAgICAgIC5yZXF1aXJlZChpMThuLnQoXCJ2YWxpZGF0aW9uLmZpcnN0X25hbWUucmVxdWlyZWRcIikpO1xuICAgIHNjaGVtYVtUSUNLRVRfQVRURU5ERUVfS0VZUy5sYXN0TmFtZV0gPSB5dXBcbiAgICAgIC5zdHJpbmcoaTE4bi50KFwidmFsaWRhdGlvbi5sYXN0X25hbWUuc3RyaW5nXCIpKVxuICAgICAgLnJlcXVpcmVkKGkxOG4udChcInZhbGlkYXRpb24ubGFzdF9uYW1lLnJlcXVpcmVkXCIpKTtcbiAgICBzY2hlbWFbVElDS0VUX0FUVEVOREVFX0tFWVMuY29tcGFueV0gPSB5dXAubGF6eSgodmFsdWUpID0+XG4gICAgICB0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCJcbiAgICAgICAgPyB5dXBcbiAgICAgICAgICAgIC5vYmplY3QoKVxuICAgICAgICAgICAgLnJlcXVpcmVkKGkxOG4udChcInZhbGlkYXRpb24uY29tcGFueS5yZXF1aXJlZFwiKSlcbiAgICAgICAgICAgIC50eXBlRXJyb3IoaTE4bi50KFwidmFsaWRhdGlvbi5yZXF1aXJlZF9maWVsZFwiKSlcbiAgICAgICAgOiB5dXAuc3RyaW5nKCkucmVxdWlyZWQoaTE4bi50KFwidmFsaWRhdGlvbi5jb21wYW55LnJlcXVpcmVkXCIpKVxuICAgICk7XG4gIH1cblxuICBpZiAoZGlzY2xhaW1lck1hbmRhdG9yeSkge1xuICAgIHNjaGVtYVtUSUNLRVRfQVRURU5ERUVfS0VZUy5kaXNjbGFpbWVyQWNjZXB0ZWRdID0geXVwXG4gICAgICAuYm9vbCgpXG4gICAgICAub25lT2YoW3RydWVdLCBpMThuLnQoXCJ2YWxpZGF0aW9uLmNoZWNrYm94LnJlcXVpcmVkXCIpKTtcbiAgfVxuXG4gIGlmIChhbGxvd3NEZWxlZ2F0aW9uKSB7XG4gICAgc2NoZW1hLmRlbGVnYXRlZF9maXJzdF9uYW1lID0geXVwXG4gICAgICAuc3RyaW5nKGkxOG4udChcInZhbGlkYXRpb24uZmlyc3RfbmFtZS5zdHJpbmdcIikpXG4gICAgICAucmVxdWlyZWQoaTE4bi50KFwidmFsaWRhdGlvbi5maXJzdF9uYW1lLnJlcXVpcmVkXCIpKTtcblxuICAgIHNjaGVtYS5kZWxlZ2F0ZWRfbGFzdF9uYW1lID0geXVwXG4gICAgICAuc3RyaW5nKGkxOG4udChcInZhbGlkYXRpb24ubGFzdF9uYW1lLnN0cmluZ1wiKSlcbiAgICAgIC5yZXF1aXJlZChpMThuLnQoXCJ2YWxpZGF0aW9uLmxhc3RfbmFtZS5yZXF1aXJlZFwiKSk7XG4gIH1cblxuICBleHRyYVF1ZXN0aW9ucy5mb3JFYWNoKChxKSA9PiB7XG4gICAgY29uc3QgcXVlc3Rpb25TbHVnID0gdG9TbHVnKHEubmFtZSwgcS5pZCk7XG4gICAgc2NoZW1hW3F1ZXN0aW9uU2x1Z10gPSBnZXRUeXBlVmFsaWRhdGlvbihxLnR5cGUsIHEubmFtZSwgcS5tYW5kYXRvcnkpO1xuXG4gICAgaWYgKHEuc3ViX3F1ZXN0aW9uX3J1bGVzPy5sZW5ndGggPiAwKSB7XG4gICAgICBxLnN1Yl9xdWVzdGlvbl9ydWxlcy5mb3JFYWNoKChydWxlKSA9PiB7XG4gICAgICAgIGNvbnN0IHN1YlF1ZXN0aW9uID0gcnVsZS5zdWJfcXVlc3Rpb247XG4gICAgICAgIGNvbnN0IHN1YlF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhzdWJRdWVzdGlvbi5uYW1lLCBzdWJRdWVzdGlvbi5pZCk7XG4gICAgICAgIHNjaGVtYVtzdWJRdWVzdGlvblNsdWddID0gZ2V0VHlwZVZhbGlkYXRpb24oXG4gICAgICAgICAgc3ViUXVlc3Rpb24udHlwZSxcbiAgICAgICAgICBzdWJRdWVzdGlvbi5uYW1lLFxuICAgICAgICAgIGZhbHNlXG4gICAgICAgIClcbiAgICAgICAgICAubnVsbGFibGUoKVxuICAgICAgICAgIC53aGVuKHF1ZXN0aW9uU2x1Zywge1xuICAgICAgICAgICAgaXM6IChxdWVzdGlvbkFucykgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBtYXRjaCA9IGNoZWNrSWZWYWx1ZU1hdGNoKHF1ZXN0aW9uQW5zLCBydWxlLmFuc3dlcl92YWx1ZXMpO1xuICAgICAgICAgICAgICByZXR1cm4gbWF0Y2g7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGhlbjogKHNjaCkgPT4gc2NoLnJlcXVpcmVkKGkxOG4udChcInZhbGlkYXRpb24ucmVxdWlyZWRfcXVlc3Rpb25cIikpXG4gICAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiB5dXAub2JqZWN0KHNjaGVtYSk7XG59O1xuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImNvcHlJY29uX19fbEkzZVFcIjtcbnZhciBfMiA9IFwicmV2ZXJzZWRfX196SnptRFwiO1xudmFyIF8zID0gXCJ0cnVuY2F0ZWRfX19qV1NuVVwiO1xudmFyIF80ID0gXCJ3cmFwcGVyX19fbVZQaVJcIjtcbmV4cG9ydCB7IF8xIGFzIFwiY29weUljb25cIiwgXzIgYXMgXCJyZXZlcnNlZFwiLCBfMyBhcyBcInRydW5jYXRlZFwiLCBfNCBhcyBcIndyYXBwZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiTXVpT3V0bGluZWRJbnB1dC1ub3RjaGVkT3V0bGluZV9fX1JvaW1SXCI7XG52YXIgXzIgPSBcIk11aVBpY2tlcnNDYWxlbmRhckhlYWRlci1sYWJlbENvbnRhaW5lcl9fX29vSTBWXCI7XG52YXIgXzMgPSBcImNhbGVuZGFyRGlzcGxheV9fX2ltX2poXCI7XG52YXIgXzQgPSBcImNvbnRhaW5lcl9fX04zWTRYXCI7XG52YXIgXzUgPSBcImRhdGVQaWNrZXJDb250YWluZXJfX19KVzJsT1wiO1xudmFyIF82ID0gXCJkYXRlcGlja2VyQ2xvc2VfX19WOWdIQ1wiO1xudmFyIF83ID0gXCJmaWx0ZXJDb250YWluZXJfX19yR3BZVlwiO1xudmFyIF84ID0gXCJmaWx0ZXJEYXRlTGFiZWxfX19pZkQ0cFwiO1xudmFyIF85ID0gXCJmaWx0ZXJJY29uX19fbDIxS0lcIjtcbnZhciBfYSA9IFwiZmlsdGVyTGFiZWxfX19fUDB3blwiO1xudmFyIF9iID0gXCJmaWx0ZXJMaXN0Q29udGFpbmVyX19fVm1kR3FcIjtcbnZhciBfYyA9IFwiZmlsdGVyTnVtQWN0aXZlX19fVnVIQ0pcIjtcbnZhciBfZCA9IFwiZmlsdGVyU29ydENvbnRhaW5lcl9fX2FyQnZRXCI7XG52YXIgX2UgPSBcImxhYmVsX19feU5GeWpcIjtcbnZhciBfZiA9IFwic2hvd0RhdGVQaWNrZXJfX19VcFFicFwiO1xudmFyIF8xMCA9IFwic29ydENvbnRhaW5lcl9fX2xSc2pVXCI7XG52YXIgXzExID0gXCJzb3J0SWNvbl9fX2ZWVjVLXCI7XG52YXIgXzEyID0gXCJzb3J0TGFiZWxfX19VcUxUQ1wiO1xudmFyIF8xMyA9IFwic29ydExpc3RDb250YWluZXJfX19jbW5CRFwiO1xuZXhwb3J0IHsgXzEgYXMgXCJNdWlPdXRsaW5lZElucHV0LW5vdGNoZWRPdXRsaW5lXCIsIF8yIGFzIFwiTXVpUGlja2Vyc0NhbGVuZGFySGVhZGVyLWxhYmVsQ29udGFpbmVyXCIsIF8zIGFzIFwiY2FsZW5kYXJEaXNwbGF5XCIsIF80IGFzIFwiY29udGFpbmVyXCIsIF81IGFzIFwiZGF0ZVBpY2tlckNvbnRhaW5lclwiLCBfNiBhcyBcImRhdGVwaWNrZXJDbG9zZVwiLCBfNyBhcyBcImZpbHRlckNvbnRhaW5lclwiLCBfOCBhcyBcImZpbHRlckRhdGVMYWJlbFwiLCBfOSBhcyBcImZpbHRlckljb25cIiwgX2EgYXMgXCJmaWx0ZXJMYWJlbFwiLCBfYiBhcyBcImZpbHRlckxpc3RDb250YWluZXJcIiwgX2MgYXMgXCJmaWx0ZXJOdW1BY3RpdmVcIiwgX2QgYXMgXCJmaWx0ZXJTb3J0Q29udGFpbmVyXCIsIF9lIGFzIFwibGFiZWxcIiwgX2YgYXMgXCJzaG93RGF0ZVBpY2tlclwiLCBfMTAgYXMgXCJzb3J0Q29udGFpbmVyXCIsIF8xMSBhcyBcInNvcnRJY29uXCIsIF8xMiBhcyBcInNvcnRMYWJlbFwiLCBfMTMgYXMgXCJzb3J0TGlzdENvbnRhaW5lclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJjYW5jZWxCdG5fX19xRGV4aFwiO1xudmFyIF8yID0gXCJmb290ZXJfX19TTjcweVwiO1xudmFyIF8zID0gXCJzYXZlQnRuX19fbmJVNmNcIjtcbmV4cG9ydCB7IF8xIGFzIFwiY2FuY2VsQnRuXCIsIF8yIGFzIFwiZm9vdGVyXCIsIF8zIGFzIFwic2F2ZUJ0blwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJlcnJvckxhYmVsX19fbm9jeVhcIjtcbmV4cG9ydCB7IF8xIGFzIFwiZXJyb3JMYWJlbFwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJvcmRlckRldGFpbHNNbW91bnRfX19yM2tSQVwiO1xudmFyIF8yID0gXCJvcmRlckRldGFpbHNUaWNrZXRzX19fbTRJaktcIjtcbnZhciBfMyA9IFwib3JkZXJTdW1tYXJ5QnV0dG9uX19fdXhqaHRcIjtcbnZhciBfNCA9IFwib3JkZXJTdW1tYXJ5UHVyY2hhc2VkSW5mb19fX19SQlhFXCI7XG52YXIgXzUgPSBcIm9yZGVyU3VtbWFyeVRhYmxlX19fWURueFZcIjtcbnZhciBfNiA9IFwib3JkZXJTdW1tYXJ5V3JhcHBlcl9fX1J3SUVSXCI7XG52YXIgXzcgPSBcInJlZnVuZERpc2FibGVkX19fanZyazNcIjtcbmV4cG9ydCB7IF8xIGFzIFwib3JkZXJEZXRhaWxzTW1vdW50XCIsIF8yIGFzIFwib3JkZXJEZXRhaWxzVGlja2V0c1wiLCBfMyBhcyBcIm9yZGVyU3VtbWFyeUJ1dHRvblwiLCBfNCBhcyBcIm9yZGVyU3VtbWFyeVB1cmNoYXNlZEluZm9cIiwgXzUgYXMgXCJvcmRlclN1bW1hcnlUYWJsZVwiLCBfNiBhcyBcIm9yZGVyU3VtbWFyeVdyYXBwZXJcIiwgXzcgYXMgXCJyZWZ1bmREaXNhYmxlZFwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJhc3NpZ25UaWNrZXRCdXR0b25fX196ekxzY1wiO1xudmFyIF8yID0gXCJibGFja0J1dHRvbl9fX2w5aGo5XCI7XG52YXIgXzMgPSBcImRpc3BsYXlfbm9uZV9fX0NxcEwzXCI7XG52YXIgXzQgPSBcImxhYmVsX19felhEV3pcIjtcbnZhciBfNSA9IFwib3JkZXJUaWNrZXRDb250YWluZXJfX19aSkx6a1wiO1xudmFyIF82ID0gXCJvcmRlclRpY2tldEluZm9fX19nZW1xQlwiO1xudmFyIF83ID0gXCJvcmRlclRpY2tldEluZm9Db250YWluZXJfX19fcDY2VlwiO1xudmFyIF84ID0gXCJvcmRlcldyYXBwZXJfX195REJBb1wiO1xudmFyIF85ID0gXCJyZWFzc2lnbkJ1dHRvbl9fX1Jvak01XCI7XG52YXIgX2EgPSBcInJlZnVuZEJ1dHRvbnNfX19qRGw0SFwiO1xudmFyIF9iID0gXCJ0YWJCdXR0b25zX19feFR5SkFcIjtcbnZhciBfYyA9IFwidGlja2V0QWN0aW9uQnV0dG9uc19fX3JwU01RXCI7XG52YXIgX2QgPSBcInRpY2tldExpc3RDb250YWluZXJfX19jZm1yclwiO1xudmFyIF9lID0gXCJ0aWNrZXROb19fX2EyaU05XCI7XG52YXIgX2YgPSBcInRpY2tldE93bmVyRW1haWxfX19adDRPRVwiO1xudmFyIF8xMCA9IFwidGlja2V0VGlja2V0VHlwZV9fX1pxX2YwXCI7XG52YXIgXzExID0gXCJ2aWV3RmluaXNoVGlja2V0QnV0dG9uX19fSEY2SW1cIjtcbnZhciBfMTIgPSBcInZpZXdNb3JlQnV0dG9uX19fS18xelRcIjtcbmV4cG9ydCB7IF8xIGFzIFwiYXNzaWduVGlja2V0QnV0dG9uXCIsIF8yIGFzIFwiYmxhY2tCdXR0b25cIiwgXzMgYXMgXCJkaXNwbGF5X25vbmVcIiwgXzQgYXMgXCJsYWJlbFwiLCBfNSBhcyBcIm9yZGVyVGlja2V0Q29udGFpbmVyXCIsIF82IGFzIFwib3JkZXJUaWNrZXRJbmZvXCIsIF83IGFzIFwib3JkZXJUaWNrZXRJbmZvQ29udGFpbmVyXCIsIF84IGFzIFwib3JkZXJXcmFwcGVyXCIsIF85IGFzIFwicmVhc3NpZ25CdXR0b25cIiwgX2EgYXMgXCJyZWZ1bmRCdXR0b25zXCIsIF9iIGFzIFwidGFiQnV0dG9uc1wiLCBfYyBhcyBcInRpY2tldEFjdGlvbkJ1dHRvbnNcIiwgX2QgYXMgXCJ0aWNrZXRMaXN0Q29udGFpbmVyXCIsIF9lIGFzIFwidGlja2V0Tm9cIiwgX2YgYXMgXCJ0aWNrZXRPd25lckVtYWlsXCIsIF8xMCBhcyBcInRpY2tldFRpY2tldFR5cGVcIiwgXzExIGFzIFwidmlld0ZpbmlzaFRpY2tldEJ1dHRvblwiLCBfMTIgYXMgXCJ2aWV3TW9yZUJ1dHRvblwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJhY3Rpb25CdXR0b25zX19fdTdtUFNcIjtcbnZhciBfMiA9IFwiYXBwcm92ZWRfX19zeEVKV1wiO1xudmFyIF8zID0gXCJidXR0b25QaWxsX19fTGVzYXpcIjtcbnZhciBfNCA9IFwiY2FuY2VsQnV0dG9uX19feWZoWWJcIjtcbnZhciBfNSA9IFwiY29udGludWVCdXR0b25fX19OeVgzc1wiO1xudmFyIF82ID0gXCJkZWxldGVJY29uX19fRlN3eWVcIjtcbnZhciBfNyA9IFwicGVuZGluZ19fX2FFYld3XCI7XG52YXIgXzggPSBcInJlZnVuZEVycm9yTXNnX19fQWFoenJcIjtcbnZhciBfOSA9IFwicmVmdW5kU3VjY2Vzc2Z1bF9fX3pyRFFZXCI7XG52YXIgX2EgPSBcInJlZnVuZFRleHRfX19hRW5MOVwiO1xudmFyIF9iID0gXCJyZWZ1bmRUaWNrZXRCb3hDb250YWluZXJfX195YTYxM1wiO1xudmFyIF9jID0gXCJyZWplY3RlZF9fX05KRTRaXCI7XG52YXIgX2QgPSBcInN1Y2Nlc3NNc2dfX19IdE1zZVwiO1xudmFyIF9lID0gXCJzdWNjZXNzTXNnMl9fX1E2em5hXCI7XG52YXIgX2YgPSBcInRpY2tldE5vX19fX0VBRDRcIjtcbmV4cG9ydCB7IF8xIGFzIFwiYWN0aW9uQnV0dG9uc1wiLCBfMiBhcyBcImFwcHJvdmVkXCIsIF8zIGFzIFwiYnV0dG9uUGlsbFwiLCBfNCBhcyBcImNhbmNlbEJ1dHRvblwiLCBfNSBhcyBcImNvbnRpbnVlQnV0dG9uXCIsIF82IGFzIFwiZGVsZXRlSWNvblwiLCBfNyBhcyBcInBlbmRpbmdcIiwgXzggYXMgXCJyZWZ1bmRFcnJvck1zZ1wiLCBfOSBhcyBcInJlZnVuZFN1Y2Nlc3NmdWxcIiwgX2EgYXMgXCJyZWZ1bmRUZXh0XCIsIF9iIGFzIFwicmVmdW5kVGlja2V0Qm94Q29udGFpbmVyXCIsIF9jIGFzIFwicmVqZWN0ZWRcIiwgX2QgYXMgXCJzdWNjZXNzTXNnXCIsIF9lIGFzIFwic3VjY2Vzc01zZzJcIiwgX2YgYXMgXCJ0aWNrZXROb1wiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJjbG9zZUJ0bl9fX3lTUUNPXCI7XG52YXIgXzIgPSBcImhlYWRlcl9fX2ZCWEc5XCI7XG52YXIgXzMgPSBcInRpdGxlX19fdHlaZVFcIjtcbnZhciBfNCA9IFwid3JhcHBlcl9fX1JPSkdzXCI7XG5leHBvcnQgeyBfMSBhcyBcImNsb3NlQnRuXCIsIF8yIGFzIFwiaGVhZGVyXCIsIF8zIGFzIFwidGl0bGVcIiwgXzQgYXMgXCJ3cmFwcGVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImFsaWduQ2VudGVyX19fTjRFdk9cIjtcbnZhciBfMiA9IFwiYXNzaWduQnRuX19fRlFIM25cIjtcbnZhciBfMyA9IFwiYXR0ZW5kZWVDb250YWluZXJfX19kM1JHQ1wiO1xudmFyIF80ID0gXCJhdHRlbmRlZUluZm9Ob3RlX19fS2QxeTZcIjtcbnZhciBfNSA9IFwiYXR0ZW5kZWVJbmZvVGl0bGVfX19UOVU1elwiO1xudmFyIF82ID0gXCJvcmRlck5vX19feXFScjhcIjtcbnZhciBfNyA9IFwic3VidGl0bGVfX19TdlJsVVwiO1xudmFyIF84ID0gXCJ0aWNrZXRBc3NpZ25Db250YWluZXJfX19kSjV2V1wiO1xudmFyIF85ID0gXCJ0aWNrZXRUeXBlX19fWVh3T0pcIjtcbmV4cG9ydCB7IF8xIGFzIFwiYWxpZ25DZW50ZXJcIiwgXzIgYXMgXCJhc3NpZ25CdG5cIiwgXzMgYXMgXCJhdHRlbmRlZUNvbnRhaW5lclwiLCBfNCBhcyBcImF0dGVuZGVlSW5mb05vdGVcIiwgXzUgYXMgXCJhdHRlbmRlZUluZm9UaXRsZVwiLCBfNiBhcyBcIm9yZGVyTm9cIiwgXzcgYXMgXCJzdWJ0aXRsZVwiLCBfOCBhcyBcInRpY2tldEFzc2lnbkNvbnRhaW5lclwiLCBfOSBhcyBcInRpY2tldFR5cGVcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwid3JhcHBlcl9fX0V3T1J6XCI7XG5leHBvcnQgeyBfMSBhcyBcIndyYXBwZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiaW5mb05vdGVfX19pMVhZOVwiO1xudmFyIF8yID0gXCJ3cmFwcGVyX19fTUF1TlNcIjtcbmV4cG9ydCB7IF8xIGFzIFwiaW5mb05vdGVcIiwgXzIgYXMgXCJ3cmFwcGVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImFjdGlvbkJ1dHRvbnNDb250YWluZXJfX19BdXZyblwiO1xudmFyIF8yID0gXCJhZGRpdGlvbmFsRGV0YWlsc19fX21QMWlKXCI7XG52YXIgXzMgPSBcImF0dGVuZGVlQ29udGFpbmVyX19fUTBWVXpcIjtcbnZhciBfNCA9IFwiYXR0ZW5kZWVJbmZvVGl0bGVfX19MbXJtNFwiO1xudmFyIF81ID0gXCJjbG9zZUJ0bl9fX1dOSmxFXCI7XG52YXIgXzYgPSBcImNvcHlCdG5fX19fdXRBNlwiO1xudmFyIF83ID0gXCJkZWxlZ2F0ZWRUb19fX1NHVlFJXCI7XG52YXIgXzggPSBcImRvd25sb2FkQnRuX19fcWpZaHpcIjtcbnZhciBfOSA9IFwiaGVhZGVyX19fQXVnbnpcIjtcbnZhciBfYSA9IFwib3JkZXJOdW1iZXJfX19MNVE1YVwiO1xudmFyIF9iID0gXCJxckNvZGVfX19md3FacVwiO1xudmFyIF9jID0gXCJxck5vdGVfX19HYzdLblwiO1xudmFyIF9kID0gXCJzZW5kQnRuX19fa29XTTJcIjtcbnZhciBfZSA9IFwic2VudF9fX2s2V0t4XCI7XG52YXIgX2YgPSBcInN0YXR1c19fX2t3Qzh5XCI7XG52YXIgXzEwID0gXCJzdWJ0aXRsZV9fX3lfTnVPXCI7XG52YXIgXzExID0gXCJ0aWNrZXREZXRhaWxDb250YWluZXJfX19iMlRMUlwiO1xudmFyIF8xMiA9IFwidGl0bGVfX193UXpVTlwiO1xuZXhwb3J0IHsgXzEgYXMgXCJhY3Rpb25CdXR0b25zQ29udGFpbmVyXCIsIF8yIGFzIFwiYWRkaXRpb25hbERldGFpbHNcIiwgXzMgYXMgXCJhdHRlbmRlZUNvbnRhaW5lclwiLCBfNCBhcyBcImF0dGVuZGVlSW5mb1RpdGxlXCIsIF81IGFzIFwiY2xvc2VCdG5cIiwgXzYgYXMgXCJjb3B5QnRuXCIsIF83IGFzIFwiZGVsZWdhdGVkVG9cIiwgXzggYXMgXCJkb3dubG9hZEJ0blwiLCBfOSBhcyBcImhlYWRlclwiLCBfYSBhcyBcIm9yZGVyTnVtYmVyXCIsIF9iIGFzIFwicXJDb2RlXCIsIF9jIGFzIFwicXJOb3RlXCIsIF9kIGFzIFwic2VuZEJ0blwiLCBfZSBhcyBcInNlbnRcIiwgX2YgYXMgXCJzdGF0dXNcIiwgXzEwIGFzIFwic3VidGl0bGVcIiwgXzExIGFzIFwidGlja2V0RGV0YWlsQ29udGFpbmVyXCIsIF8xMiBhcyBcInRpdGxlXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImF0dGVuZGVlQ29udGFpbmVyX19fY0hTTXRcIjtcbnZhciBfMiA9IFwiYXR0ZW5kZWVJbmZvVGl0bGVfX19Kc1BsR1wiO1xudmFyIF8zID0gXCJoZWFkZXJOb3RlX19fYjJtckNcIjtcbnZhciBfNCA9IFwic3VidGl0bGVfX19ZWDZPRFwiO1xudmFyIF81ID0gXCJ0aWNrZXRSZWFzc2lnbkNvbnRhaW5lcl9fX3BHOWI0XCI7XG5leHBvcnQgeyBfMSBhcyBcImF0dGVuZGVlQ29udGFpbmVyXCIsIF8yIGFzIFwiYXR0ZW5kZWVJbmZvVGl0bGVcIiwgXzMgYXMgXCJoZWFkZXJOb3RlXCIsIF80IGFzIFwic3VidGl0bGVcIiwgXzUgYXMgXCJ0aWNrZXRSZWFzc2lnbkNvbnRhaW5lclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJidXR0b25DYW5jZWxsZWRfX19FcmxEWlwiO1xudmFyIF8yID0gXCJidXR0b25Db21wbGV0ZV9fX2xsV2taXCI7XG52YXIgXzMgPSBcImJ1dHRvbkluY29tcGxldGVfX19Ub2xIZ1wiO1xudmFyIF80ID0gXCJidXR0b25QaWxsX19fenEydGNcIjtcbnZhciBfNSA9IFwiYnV0dG9uUmVmdW5kUmVxdWVzdGVkX19fcFd0MzBcIjtcbnZhciBfNiA9IFwiYnV0dG9uVW5hc3NpZ25lZF9fX1lEZDhYXCI7XG52YXIgXzcgPSBcInRpY2tldFN0YXR1c0NvbnRhaW5lcl9fX3FqNmZiXCI7XG5leHBvcnQgeyBfMSBhcyBcImJ1dHRvbkNhbmNlbGxlZFwiLCBfMiBhcyBcImJ1dHRvbkNvbXBsZXRlXCIsIF8zIGFzIFwiYnV0dG9uSW5jb21wbGV0ZVwiLCBfNCBhcyBcImJ1dHRvblBpbGxcIiwgXzUgYXMgXCJidXR0b25SZWZ1bmRSZXF1ZXN0ZWRcIiwgXzYgYXMgXCJidXR0b25VbmFzc2lnbmVkXCIsIF83IGFzIFwidGlja2V0U3RhdHVzQ29udGFpbmVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcIm5vT3JkZXJzRm91bmRfX19Bb2cycFwiO1xudmFyIF8yID0gXCJzdW1taXRUaXRsZURhdGVfX19aMTlQbVwiO1xudmFyIF8zID0gXCJ3aWRnZXRIZWFkZXJfX195WTVnZVwiO1xuZXhwb3J0IHsgXzEgYXMgXCJub09yZGVyc0ZvdW5kXCIsIF8yIGFzIFwic3VtbWl0VGl0bGVEYXRlXCIsIF8zIGFzIFwid2lkZ2V0SGVhZGVyXCIgfVxuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWxcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbC9DaGVja0NpcmNsZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsL0Nsb3NlXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ29udGVudENvcHlcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbC9EZWxldGVPdXRsaW5lXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRXJyb3JcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbC9GaWx0ZXJMaXN0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvSW1wb3J0RXhwb3J0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvU2VhcmNoXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWxcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9DaGVja2JveFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL0RpdmlkZXJcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9JbnB1dEJhc2VcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9TdGFja1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL1RhYlwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL1RhYnNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9zdHlsZXNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC91c2VNZWRpYVF1ZXJ5XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkveC1kYXRlLXBpY2tlcnMvQWRhcHRlckRheWpzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkveC1kYXRlLXBpY2tlcnMvRGF0ZVBpY2tlclwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL3gtZGF0ZS1waWNrZXJzL0xvY2FsaXphdGlvblByb3ZpZGVyXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkByZWR1eGpzL3Rvb2xraXRcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQHNlbnRyeS9yZWFjdFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJkYXlqc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJmb3JtaWtcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiaTE4bmV4dFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJpMThuZXh0LWJyb3dzZXItbGFuZ3VhZ2VkZXRlY3RvclwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJpZHRva2VuLXZlcmlmaWVyXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm1vbWVudC10aW1lem9uZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL2NvbXBvbmVudHMvcmF3LWh0bWxcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9zZWN1cml0eS9hY3Rpb25zXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvc2VjdXJpdHkvbWV0aG9kc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL2FjdGlvbnNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9tZXRob2RzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvcXVlcnktYWN0aW9uc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJwLWxpbWl0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInByb3AtdHlwZXNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVhY3RcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVhY3QtaTE4bmV4dFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWFjdC1pbmZpbml0ZS1zY3JvbGwtY29tcG9uZW50XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0LXFyLWNvZGVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVhY3QtcmVkdXhcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVhY3QvanN4LXJ1bnRpbWVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVkdXhcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVkdXgtcGVyc2lzdFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWR1eC1wZXJzaXN0L2ludGVncmF0aW9uL3JlYWN0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlZHV4LXBlcnNpc3QvbGliL3N0b3JhZ2VcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwieXVwXCIpOyIsIi8vIFRoZSBtb2R1bGUgY2FjaGVcbnZhciBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18gPSB7fTtcblxuLy8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbmZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG5cdHZhciBjYWNoZWRNb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdO1xuXHRpZiAoY2FjaGVkTW9kdWxlICE9PSB1bmRlZmluZWQpIHtcblx0XHRyZXR1cm4gY2FjaGVkTW9kdWxlLmV4cG9ydHM7XG5cdH1cblx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcblx0dmFyIG1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF0gPSB7XG5cdFx0Ly8gbm8gbW9kdWxlLmlkIG5lZWRlZFxuXHRcdC8vIG5vIG1vZHVsZS5sb2FkZWQgbmVlZGVkXG5cdFx0ZXhwb3J0czoge31cblx0fTtcblxuXHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cblx0X193ZWJwYWNrX21vZHVsZXNfX1ttb2R1bGVJZF0obW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cblx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcblx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xufVxuXG4iLCIvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuX193ZWJwYWNrX3JlcXVpcmVfXy5uID0gKG1vZHVsZSkgPT4ge1xuXHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cblx0XHQoKSA9PiAobW9kdWxlWydkZWZhdWx0J10pIDpcblx0XHQoKSA9PiAobW9kdWxlKTtcblx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgeyBhOiBnZXR0ZXIgfSk7XG5cdHJldHVybiBnZXR0ZXI7XG59OyIsIi8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb25zIGZvciBoYXJtb255IGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uZCA9IChleHBvcnRzLCBkZWZpbml0aW9uKSA9PiB7XG5cdGZvcih2YXIga2V5IGluIGRlZmluaXRpb24pIHtcblx0XHRpZihfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZGVmaW5pdGlvbiwga2V5KSAmJiAhX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIGtleSkpIHtcblx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBkZWZpbml0aW9uW2tleV0gfSk7XG5cdFx0fVxuXHR9XG59OyIsIl9fd2VicGFja19yZXF1aXJlX18ubyA9IChvYmosIHByb3ApID0+IChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKSkiLCIvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSAoZXhwb3J0cykgPT4ge1xuXHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcblx0fVxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xufTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgUHJvdmlkZXIgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7IFBlcnNpc3RHYXRlIH0gZnJvbSBcInJlZHV4LXBlcnNpc3QvaW50ZWdyYXRpb24vcmVhY3RcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEJveCwgU3R5bGVkRW5naW5lUHJvdmlkZXIgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlSW5pdFN0b3JlIH0gZnJvbSBcIi4vc3RvcmVcIjtcbmltcG9ydCBNeU9yZGVyc1RpY2tldHMgZnJvbSBcIi4vY29tcG9uZW50cy9NeU9yZGVyc1RpY2tldHNcIjtcbmltcG9ydCB7IFJFU0VUX1NUQVRFLCBzZXRSZWR1Y2VyU3RhdGUgfSBmcm9tIFwiLi9hY3Rpb25zXCI7XG5cbmNvbnN0IE15T3JkZXJzTXlUaWNrZXRzV2lkZ2V0ID0gKHByb3BzKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBsb2dpblVybCxcbiAgICBzdXBwb3J0RW1haWwsXG4gICAgc3VtbWl0LFxuICAgIGFwaUJhc2VVcmwsXG4gICAgdXNlcixcbiAgICBjbGllbnRJZCxcbiAgICB1cGRhdGVQcm9maWxlXG4gIH0gPSBwcm9wcztcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuXG4gIGNvbnN0IHsgc3RvcmUsIHBlcnNpc3RvciB9ID0gdXNlSW5pdFN0b3JlKHtcbiAgICBsb2dpblVybCxcbiAgICBzdXBwb3J0RW1haWwsXG4gICAgc3VtbWl0LFxuICAgIHVzZXIsXG4gICAgYXBpQmFzZVVybCxcbiAgICBjbGllbnRJZCxcbiAgICB1cGRhdGVQcm9maWxlXG4gIH0pO1xuXG4gIGNvbnN0IGhhbmRsZUJlZm9yZUxpZnQgPSAoKSA9PiB7XG4gICAgY29uc3QgcGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyh3aW5kb3cubG9jYXRpb24uc2VhcmNoKTtcbiAgICBjb25zdCBmbHVzaCA9IHBhcmFtcy5oYXMoXCJmbHVzaFN0YXRlXCIpO1xuICAgIGlmIChmbHVzaCkgc3RvcmUuZGlzcGF0Y2goeyB0eXBlOiBSRVNFVF9TVEFURSwgcGF5bG9hZDogbnVsbCB9KTtcbiAgfTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHN0b3JlLmRpc3BhdGNoKHNldFJlZHVjZXJTdGF0ZShzdW1taXQsIHVzZXIpKTtcbiAgfSwgW3N1bW1pdCwgdXNlcl0pO1xuXG4gIHJldHVybiAoXG4gICAgPFByb3ZpZGVyIHN0b3JlPXtzdG9yZX0+XG4gICAgICA8UGVyc2lzdEdhdGVcbiAgICAgICAgb25CZWZvcmVMaWZ0PXtoYW5kbGVCZWZvcmVMaWZ0fVxuICAgICAgICBsb2FkaW5nPXtudWxsfVxuICAgICAgICBwZXJzaXN0b3I9e3BlcnNpc3Rvcn1cbiAgICAgID5cbiAgICAgICAgPFN0eWxlZEVuZ2luZVByb3ZpZGVyIGluamVjdEZpcnN0PlxuICAgICAgICAgIDxCb3ggc3g9e3sgcGFkZGluZzogeyB4czogMiwgbWQ6IDAsIGxnOiAwIH0gfX0+XG4gICAgICAgICAgICA8aDM+e3QoXCJvcmRlcnMudGl0bGVcIil9PC9oMz5cbiAgICAgICAgICA8L0JveD5cbiAgICAgICAgICA8TXlPcmRlcnNUaWNrZXRzXG4gICAgICAgICAgICBsb2dpblVybD17bG9naW5Vcmx9XG4gICAgICAgICAgICBzdXBwb3J0RW1haWw9e3N1cHBvcnRFbWFpbH1cbiAgICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgICAgYXBpQmFzZVVybD17YXBpQmFzZVVybH1cbiAgICAgICAgICAvPlxuICAgICAgICA8L1N0eWxlZEVuZ2luZVByb3ZpZGVyPlxuICAgICAgPC9QZXJzaXN0R2F0ZT5cbiAgICA8L1Byb3ZpZGVyPlxuICApO1xufTtcblxuTXlPcmRlcnNNeVRpY2tldHNXaWRnZXQucHJvcFR5cGVzID0ge1xuICBsb2dpblVybDogUHJvcFR5cGVzLnN0cmluZyxcbiAgc3VwcG9ydEVtYWlsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIGFwaUJhc2VVcmw6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHVzZXI6IFByb3BUeXBlcy5vYmplY3QsXG4gIGNsaWVudElkOiBQcm9wVHlwZXMuc3RyaW5nLFxuICB1cGRhdGVQcm9maWxlOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgTXlPcmRlcnNNeVRpY2tldHNXaWRnZXQ7XG4iXSwibmFtZXMiOlsiYXV0aEVycm9ySGFuZGxlciIsImdldFJlcXVlc3QiLCJkZWxldGVSZXF1ZXN0IiwiY3JlYXRlQWN0aW9uIiwic3RvcExvYWRpbmciLCJzdGFydExvYWRpbmciLCJwdXRSZXF1ZXN0IiwicExpbWl0IiwiZ2V0SWRUb2tlbiIsIm9iamVjdFRvUXVlcnlTdHJpbmciLCJJZFRva2VuVmVyaWZpZXIiLCJpMThuIiwiZ2V0QWNjZXNzVG9rZW5TYWZlbHkiLCJGSVJTVF9QQUdFIiwiREVGQVVMVF9JVEVNU19QRVJfUEFHRSIsIlBST01JU0VfQkFUQ0hfTElNSVQiLCJGSUZUWV9QRVJfUEFHRSIsIkVSUk9SX0NPREVTIiwiUkVTRVRfU1RBVEUiLCJSRVNFVF9GSUxURVIiLCJSRVNFVF9BUElfRVJST1IiLCJTRVRfU1RBVEUiLCJTRVRfQVBJX0VSUk9SIiwiR0VUX1VTRVJfT1JERVJTIiwiUkVGVU5EX09SREVSIiwiU0VUX0FDVElWRV9PUkRFUl9JRCIsIkZJTFRFUl9VU0VSX09SREVSUyIsIkdFVF9USUNLRVRTIiwiVVBEQVRFX1RJQ0tFVCIsIlJFU0VUX1RJQ0tFVCIsIlJFQ0VJVkVfVElDS0VUIiwiUkVNT1ZFX1RJQ0tFVF9BVFRFTkRFRSIsIkFTU0lHTl9USUNLRVQiLCJSRUZVTkRfVElDS0VUIiwiUkVTRU5EX05PVElGSUNBVElPTiIsIkdFVF9USUNLRVRTX0JZX09SREVSIiwiR0VUX1RJQ0tFVFNfQllfT1JERVJfRVJST1IiLCJHRVRfT1JERVJfVElDS0VUX0RFVEFJTFMiLCJHRVRfVElDS0VUX0RFVEFJTFMiLCJSRUNFSVZFX0VYVFJBX1FVRVNUSU9OUyIsIlRJQ0tFVF9BVFRFTkRFRV9LRVlTIiwiZW1haWwiLCJmaXJzdE5hbWUiLCJsYXN0TmFtZSIsImNvbXBhbnkiLCJkaXNjbGFpbWVyQWNjZXB0ZWQiLCJleHRyYVF1ZXN0aW9ucyIsIlVQREFURV9USUNLRVRTX1JFRlVORF9SRVFVRVNURUQiLCJTVEFSVF9MT0FESU5HX0lEUF9QUk9GSUxFIiwiU1RPUF9MT0FESU5HX0lEUF9QUk9GSUxFIiwiVVBEQVRFX0lEUF9QUk9GSUxFIiwiU0VUX1VTRVIiLCJTRVRfU1VNTUlUIiwiR0VUX01BSU5fRVhUUkFfUVVFU1RJT05TIiwiUkVDRUlWRV9NQVJLRVRJTkdfU0VUVElOR1MiLCJDTEVBUl9NQVJLRVRJTkdfU0VUVElOR1MiLCJyZXNldFN0YXRlIiwiZGlzcGF0Y2giLCJyZXNldEZpbHRlciIsInJlc2V0RXJyb3IiLCJyZXNldFRpY2tldCIsInNldFJlZHVjZXJTdGF0ZSIsInN1bW1pdCIsInVzZXIiLCJGSUxURVJfVkFSX0RBVEUiLCJGSUxURVJfVkFSX09SREVSX05VTUJFUiIsInBhcnNlRmlsdGVyIiwiZmlsdGVyT2JqIiwiZmlsdGVyIiwidHlwZSIsInB1c2giLCJjb25jYXQiLCJuYW1lIiwibG93ZXIiLCJ1cHBlciIsInZhbHVlIiwiZ2V0U29ydERpcmVjdGlvbiIsImRpcmVjdGlvbiIsImVycm9ySGFuZGxlck5vdGlmeSIsInBheWxvYWQiLCJjYWxsYmFjayIsImN1c3RvbUF1dGhFcnJvckhhbmRsZXIiLCJlcnIiLCJyZXMiLCJjdXN0b21GZXRjaEVycm9ySGFuZGxlciIsInJlc3BvbnNlIiwiY29kZSIsInN0YXR1cyIsIm1zZyIsInQiLCJPYmplY3QiLCJlbnRyaWVzIiwiZXJyb3JzIiwiZm9yRWFjaCIsIl9yZWYiLCJrZXkiLCJOdW1iZXIiLCJpc05hTiIsInN0YXR1c1RleHQiLCJ0aXRsZSIsImh0bWwiLCJnZXRVc2VyT3JkZXJzIiwiX3JlZjIiLCJwYWdlIiwicGVyUGFnZSIsInNvcnQiLCJnZXRTdGF0ZSIsIl9yZWYzIiwiYXBpQmFzZVVybCIsIndpZGdldFN0YXRlIiwiYWNjZXNzVG9rZW4iLCJjYXRjaCIsIlByb21pc2UiLCJyZWplY3QiLCJwYXJhbXMiLCJhY2Nlc3NfdG9rZW4iLCJvcmRlciIsInJlbGF0aW9ucyIsInBlcl9wYWdlIiwia2V5cyIsImxlbmd0aCIsImZpbHRlcnMiLCJpZCIsInRoZW4iLCJlIiwic2V0QWN0aXZlT3JkZXJJZCIsIm9yZGVySWQiLCJzZXRVc2VyIiwiZ2V0VXNlclRpY2tldHMiLCJfcmVmNCIsIl9yZWY1IiwidXNlclN0YXRlIiwidXNlclByb2ZpbGUiLCJleHBhbmQiLCJmaWVsZHMiLCJnZXRUaWNrZXRzQnlPcmRlciIsIl9yZWY2IiwiX3JlZjciLCJyZXNlbmROb3RpZmljYXRpb24iLCJ0aWNrZXQiLCJfcmVmOCIsIm1lc3NhZ2UiLCJvcmRlcl9pZCIsInJlZnVuZFRpY2tldCIsIl9yZWY5IiwiX3JlZjEwIiwicmVmdW5kQnVsa1RpY2tldHMiLCJfcmVmMTEiLCJ0aWNrZXRzIiwibGltaXQiLCJhbGxSZWZ1bmRUaWNrZXRDYWxscyIsIm1hcCIsImFsbCIsInN1Y2Nlc3NmdWxseVJlcXVlc3RlZCIsInIiLCJfciRyZXNwb25zZSIsInJlZnVuZF9yZXF1ZXN0cyIsInVwZGF0ZVRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWQiLCJ0aWNrZXRzUmVmdW5kUmVxdWVzdGVkIiwiZ2V0RXh0cmFRdWVzdGlvbnMiLCJhdHRlbmRlZUlkIiwiX3JlZjEyIiwiZW5kcG9pbnQiLCJnZXRUaWNrZXQiLCJ0aWNrZXRJZCIsIl9yZWYxMyIsImZpbmFsbHkiLCJub3JtYWxpemVUaWNrZXQiLCJlbnRpdHkiLCJub3JtYWxpemVkRW50aXR5IiwiX29iamVjdFNwcmVhZCIsImF0dGVuZGVlX2NvbXBhbnkiLCJhdHRlbmRlZV9jb21wYW55X2lkIiwicmVmcmVzaFByb2ZpbGUiLCJkYXRhIiwidGlja2V0T3duZXIiLCJfcmVmMTQiLCJfdGlja2V0T3duZXIkbWFuYWdlciIsInVwZGF0ZVByb2ZpbGUiLCJhdHRlbmRlZV9lbWFpbCIsImF0dGVuZGVlX2ZpcnN0X25hbWUiLCJhdHRlbmRlZV9sYXN0X25hbWUiLCJoYXNNYW5hZ2VyIiwibWFuYWdlciIsIm1hbmFnZXJfaWQiLCJpdHNNZSIsInByb2ZpbGVDaGFuZ2VkIiwiZmlyc3RfbmFtZSIsImxhc3RfbmFtZSIsIm5ld1Byb2ZpbGUiLCJzYXZlVGlja2V0RGV0YWlscyIsImFuc3dlcnMiLCJfcmVmMTUiLCJpZFRva2VuIiwidmVyaWZpZXIiLCJqd3QiLCJkZWNvZGUiLCJjb25zb2xlIiwibG9nIiwib3duZXIiLCJhc3NpZ25BdHRlbmRlZSIsImFyZ3VtZW50cyIsInVuZGVmaW5lZCIsIl9yZWYxNiIsInJlYXNzaWduVGlja2V0IiwiX3JlZjE3Iiwic2F2ZUV4dHJhUXVlc3Rpb25zIiwiX3JlZjE4IiwiZ2V0VGlja2V0UERGIiwiX3JlZjE5IiwicXVlcnlTdHJpbmciLCJhcGlVcmwiLCJmZXRjaCIsInJlc3BvbnNlVHlwZSIsImhlYWRlcnMiLCJvayIsImJsb2IiLCJwZGYiLCJsaW5rIiwiZG9jdW1lbnQiLCJjcmVhdGVFbGVtZW50IiwidXJsIiwid2luZG93IiwiVVJMIiwiY3JlYXRlT2JqZWN0VVJMIiwiaHJlZiIsImRvd25sb2FkIiwiZGlzcGF0Y2hFdmVudCIsIk1vdXNlRXZlbnQiLCJSZWFjdCIsIlByb3BUeXBlcyIsInVzZVRyYW5zbGF0aW9uIiwiQm94IiwidXNlRm9ybWlrIiwiRXh0cmFRdWVzdGlvbnNGaWVsZHMiLCJGb3JtRm9vdGVyIiwidXNlU2Nyb2xsVG9FcnJvciIsIlJlZ2lzdHJhdGlvbkRpc2NsYWltZXIiLCJidWlsZFZhbGlkYXRpb25TY2hlbWEiLCJwYXJzZUFuc3dlcnMiLCJqc3giLCJfanN4IiwianN4cyIsIl9qc3hzIiwiQXNzaWduRVFGb3JtIiwib25TdWJtaXQiLCJvbkNsb3NlIiwiZm9ybWlrIiwiaW5pdGlhbFZhbHVlcyIsInZhbGlkYXRpb25TY2hlbWEiLCJyZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9tYW5kYXRvcnkiLCJ2YWx1ZXMiLCJyZWxldmFudEFuc3dlcnMiLCJlbmFibGVSZWluaXRpYWxpemUiLCJoYW5kbGVTdWJtaXQiLCJub1ZhbGlkYXRlIiwiY2hpbGRyZW4iLCJyZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9jb250ZW50IiwiZGlzY2xhaW1lciIsImlzUmVxdWlyZWQiLCJzYXZlTGFiZWwiLCJjYW5jZWxMYWJlbCIsImRpc2FibGVkIiwiaXNTdWJtaXR0aW5nIiwicHJvcFR5cGVzIiwib2JqZWN0IiwiYXJyYXkiLCJmdW5jIiwiQ29udGVudENvcHlJY29uIiwiVG9vbHRpcCIsIk1JTExJU0VDX1RPX1NFQyIsInN0eWxlcyIsImRlZmF1bHRXaWR0aCIsIkNvcHlUZXh0IiwidGV4dCIsInRvb2x0aXBUZXh0IiwiaGlkZUNvcHkiLCJ0cnVuY2F0ZWQiLCJyZXZlcnNlZCIsIndpZHRoIiwidG9vbHRpcFRleHRUb1VzZSIsInRvb2x0aXAiLCJzZXRUb29sdGlwIiwidXNlU3RhdGUiLCJjbGFzc05hbWVzIiwiaGFuZGxlQ29weSIsIm5hdmlnYXRvciIsImNsaXBib2FyZCIsIndyaXRlVGV4dCIsInNldFRpbWVvdXQiLCJjbGFzc05hbWUiLCJ3cmFwcGVyIiwic3R5bGUiLCJjb3B5SWNvbiIsIm9uQ2xpY2siLCJzdHJpbmciLCJib29sIiwibnVtYmVyIiwiY3JlYXRlQ29udGV4dCIsImRlZmF1bHRDb250ZXh0VmFsdWUiLCJzZXRNZXNzYWdlIiwic2V0TWVzc2FnZUNhbGxiYWNrIiwiQ3VzdG9tRGlhbG9nQ29udGV4dCIsIkRpYWxvZyIsIkRpYWxvZ0NvbnRlbnQiLCJEaWFsb2dDb250ZW50VGV4dCIsIkRpYWxvZ1RpdGxlIiwiQ3VzdG9tRGlhbG9nIiwib3BlbiIsImJvZHkiLCJUaGVtZVByb3ZpZGVyIiwiY3JlYXRlVGhlbWUiLCJkYXJrQ29sb3IiLCJyb290IiwiZG9jdW1lbnRFbGVtZW50IiwiZ2V0Q29tcHV0ZWRTdHlsZSIsImdldFByb3BlcnR5VmFsdWUiLCJ0aGVtZSIsInBhbGV0dGUiLCJwcmltYXJ5IiwibWFpbiIsIkN1c3RvbVRoZW1lIiwibm9kZSIsIkNoZWNrYm94IiwiRm9ybUNvbnRyb2wiLCJGb3JtQ29udHJvbExhYmVsIiwiRm9ybUdyb3VwIiwiRm9ybUhlbHBlclRleHQiLCJGb3JtTGFiZWwiLCJnZXRMYWJlbCIsInRvU2x1ZyIsIkNoZWNrYm94TGlzdFF1ZXN0aW9uRmllbGQiLCJfcXVlc3Rpb24kdmFsdWVzIiwicXVlc3Rpb24iLCJxdWVzdGlvbkNsYXNzTmFtZSIsImlzRGlzYWJsZWQiLCJvbkNoYW5nZSIsInNldEZpZWxkVmFsdWUiLCJlcnJvciIsImhlbHBlclRleHQiLCJyZXN0IiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIiwiX2V4Y2x1ZGVkIiwicXVlc3Rpb25TbHVnIiwicXVlc3Rpb25MYWJlbCIsIm1hbmRhdG9yeSIsInF1ZXN0aW9uTWF4VmFsdWVzIiwibWF4X3NlbGVjdGVkX3ZhbHVlcyIsInF1ZXN0aW9uT3B0aW9ucyIsInZhbCIsImxhYmVsIiwidG9TdHJpbmciLCJoYW5kbGVDaGVja2JveExpc3RDaGFuZ2UiLCJjaGVja2VkIiwiY3VycmVudEFucyIsIm1heFNlbGVjdGlvblJlYWNoZWQiLCJuZXdWYWx1ZSIsInYiLCJyZXF1aXJlZCIsImZ1bGxXaWR0aCIsIm9wIiwiY29udHJvbCIsImluY2x1ZGVzIiwiZXYiLCJ0YXJnZXQiLCJSYXdIVE1MIiwiQ2hlY2tib3hRdWVzdGlvbkZpZWxkIiwiSW5wdXRMYWJlbCIsIk1lbnVJdGVtIiwiU2VsZWN0IiwiRHJvcGRvd25RdWVzdGlvbkZpZWxkIiwibGFiZWxJZCIsIm1hcmdpbkJvdHRvbSIsIlJhZGlvIiwiUmFkaW9Hcm91cCIsIlJhZGlvTGlzdFF1ZXN0aW9uRmllbGQiLCJUZXh0RmllbGQiLCJUZXh0UXVlc3Rpb25GaWVsZCIsIlF1ZXN0aW9uVHlwZV9DaGVja2JveCIsIlF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3QiLCJRdWVzdGlvblR5cGVfQ29tYm9Cb3giLCJRdWVzdGlvblR5cGVfQ291bnRyeUNvbWJvQm94IiwiUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdCIsImNoZWNrUnVsZSIsInJ1bGUiLCJhbnN3ZXJfdmFsdWVzIiwiQXJyYXkiLCJpc0FycmF5IiwiYW5zd2VyX3ZhbHVlc19vcGVyYXRvciIsImNoZWNrVmlzaWJpbGl0eSIsInJ1bGVSZXN1bHQiLCJ2aXNpYmlsaXR5IiwidmlzaWJpbGl0eV9jb25kaXRpb24iLCJxdWVzdGlvbklkIiwidGV4dExDIiwidG9Mb3dlckNhc2UiLCJyZXBsYWNlIiwicSIsIl9xJGxhYmVsIiwiaXNBbnN3ZXJlZCIsImFuc3dlciIsImNoZWNrSWZWYWx1ZU1hdGNoIiwiY29tcGFyZVZhbCIsImFuc3dlckFycmF5Iiwic29tZSIsImdldFR5cGVJbml0aWFsVmFsdWUiLCJnZXRUeXBlVmFsdWUiLCJhbnMiLCJzcGxpdCIsInRyYW5zZm9ybUFud2Vyc0Zvcm1hdCIsImRpc2NsYWltZXJfYWNjZXB0ZWQiLCJleHRyYV9xdWVzdGlvbnMiLCJmb3JtYXR0ZWRFUSIsInF1ZXN0aW9uX2lkIiwicGFyc2VJbnQiLCJwb3AiLCJRdWVzdGlvblR5cGVfVGV4dCIsIlF1ZXN0aW9uVHlwZV9UZXh0QXJlYSIsIlF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbiIsImdldFF1ZXN0aW9uRmllbGRDb21wb25lbnQiLCJxdWVzdGlvblR5cGUiLCJGcmFnbWVudCIsInJlYWRPbmx5IiwiYWxsb3dFZGl0IiwicmVuZGVyUnVsZSIsInJlbmRlclF1ZXN0aW9uIiwic3ViX3F1ZXN0aW9uIiwiX3Ekc3ViX3F1ZXN0aW9uX3J1bGVzIiwiUXVlc3Rpb25GaWVsZENvbXBvbmVudCIsImZvcm1pa1Byb3BzIiwiaGFuZGxlQ2hhbmdlIiwib25CbHVyIiwiaGFuZGxlQmx1ciIsInRvdWNoZWQiLCJCb29sZWFuIiwic3ViX3F1ZXN0aW9uX3J1bGVzIiwiU3RhY2siLCJkYXlqcyIsIkFkYXB0ZXJEYXlqcyIsIkxvY2FsaXphdGlvblByb3ZpZGVyIiwiRGF0ZVBpY2tlciIsIkNsb3NlSWNvbiIsImdldEVwb2NoTG93ZXJVcHBlckluU2Vjb25kcyIsIl9GcmFnbWVudCIsIkJhc2ljRGF0ZVBpY2tlciIsIm9uRmlsdGVyIiwib25SZXNldCIsIm5vdyIsImRhdGVWYWx1ZSIsInNldERhdGVWYWx1ZSIsIm9uRGF0ZUNoYW5nZSIsImRhdGUiLCJEYXRlIiwiJGQiLCJvblJlc2V0QWN0aW9uIiwiZmlsdGVyRGF0ZUxhYmVsIiwiYWxpZ25JdGVtcyIsInN4IiwicHQiLCJwYiIsImRhdGVQaWNrZXJDb250YWluZXIiLCJmb250U2l6ZSIsImRhdGVwaWNrZXJDbG9zZSIsImRhdGVBZGFwdGVyIiwiY2FsZW5kYXJEaXNwbGF5IiwidXNlUmVmIiwidXNlRWZmZWN0IiwiRmlsdGVyTGlzdEljb24iLCJGaWx0ZXIiLCJzaG93RmlsdGVyTGlzdCIsInNldFNob3dGaWx0ZXJMaXN0Iiwic2hvd0RhdGVwaWNrZXIiLCJzZXRTaG93RGF0ZXBpY2tlciIsImZpbHRlck51bUFjdGl2ZSIsInNldEZpbHRlck51bUFjdGl2ZSIsImZpbHRlclJlZiIsImhhbmRsZUZpbHRlckNsaWNrT3V0c2lkZSIsImV2ZW50IiwiY3VycmVudCIsImNvbnRhaW5zIiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJ0b2dnbGUiLCJmaWx0ZXJDb250YWluZXIiLCJyZWYiLCJmaWx0ZXJJY29uIiwiZmlsdGVyTGFiZWwiLCJmaWx0ZXJMaXN0Q29udGFpbmVyIiwiY29udGFpbmVyIiwic2hvd0RhdGVQaWNrZXIiLCJzdHlsZWQiLCJTZWFyY2hJY29uIiwiSW5wdXRCYXNlIiwiU2VhcmNoQ29udGFpbmVyIiwicG9zaXRpb24iLCJtYXJnaW5SaWdodCIsIm1hcmdpbkxlZnQiLCJkaXNwbGF5IiwiU2VhcmNoSWNvbldyYXBwZXIiLCJoZWlnaHQiLCJqdXN0aWZ5Q29udGVudCIsIlN0eWxlZElucHV0QmFzZSIsImNvbG9yIiwiYm9yZGVyQm90dG9tIiwicGFkZGluZ0xlZnQiLCJwYWRkaW5nUmlnaHQiLCJDbG9zZUljb25XcmFwcGVyIiwicGFkZGluZyIsInRvcCIsInJpZ2h0IiwiY3Vyc29yIiwiekluZGV4IiwiU2VhcmNoIiwib25TZWFyY2giLCJzaG93Q2xvc2UiLCJzZXRTaG93Q2xvc2UiLCJzZWFyY2hWYWx1ZSIsInNldFNlYXJjaFZhbHVlIiwib25LZXlEb3duIiwibmF0aXZlRXZlbnQiLCJyZXNldFNlYXJjaCIsInBsYWNlaG9sZGVyIiwiaW5wdXRQcm9wcyIsIkJ1dHRvbiIsIkltcG9ydEV4cG9ydEljb24iLCJTb3J0Iiwib25Tb3J0Iiwic2hvd1NvcnQiLCJzZXRTaG93U29ydCIsInNvcnRSZWYiLCJoYW5kbGVTb3J0Q2xpY2tPdXRzaWRlIiwic29ydENvbnRhaW5lciIsInNvcnRJY29uIiwic29ydExhYmVsIiwic29ydExpc3RDb250YWluZXIiLCJHcmlkIiwiRmlsdGVyU29ydFNlYXJjaCIsImp1c3RpZnkiLCJpdGVtIiwieHMiLCJnYXAiLCJmaWx0ZXJTb3J0Q29udGFpbmVyIiwiZm9vdGVyIiwiY2FuY2VsQnRuIiwic2l6ZSIsInZhcmlhbnQiLCJzYXZlQnRuIiwiRXJyb3JJY29uIiwiRXJyb3JMYWJlbCIsImRhdGFUZXN0SWQiLCJlcnJvckxhYmVsIiwiQmFja2Ryb3AiLCJDaXJjdWxhclByb2dyZXNzIiwiTG9hZGVyIiwiZHJhd2VyIiwidXNlRGlzcGF0Y2giLCJ1c2VTZWxlY3RvciIsInNoYWxsb3dFcXVhbCIsIkluZmluaXRlU2Nyb2xsIiwiT3JkZXJzTGlzdCIsImdldFN1bW1pdEZvcm1hdHRlZERhdGUiLCJPTkVfUEFHRV9ORVhUIiwiTXlPcmRlcnNUaWNrZXRzIiwibWVzc2FnZUNhbGxiYWNrIiwibWVtYmVyT3JkZXJzIiwibG9hZGluZyIsIm9yZGVyc19jdXJyZW50X3BhZ2UiLCJvcmRlcnNfbGFzdF9wYWdlIiwib3JkZXJzX3Blcl9wYWdlIiwib3JkZXJzX3RvdGFsIiwidGlja2V0X3Blcl9wYWdlIiwiYXBpRXJyb3IiLCJzdGF0ZSIsInNldEZpbHRlciIsInNldFNvcnQiLCJyZXNldEFwaUVycm9yIiwiZmV0Y2hEYXRhIiwiY3VycmVudF9wYWdlIiwid2lkZ2V0SGVhZGVyIiwibWQiLCJsZyIsInN1bW1pdFRpdGxlRGF0ZSIsIlByb3ZpZGVyIiwiZGF0YUxlbmd0aCIsIm5leHQiLCJoYXNNb3JlIiwic2Nyb2xsVGhyZXNob2xkIiwibm9PcmRlcnNGb3VuZCIsIkRpdmlkZXIiLCJjYWxjdWxhdGVPcmRlclRvdGFscyIsImZvcm1hdEN1cnJlbmN5IiwiT3JkZXJTdW1tYXJ5VGFibGUiLCJkaXNjb3VudFRvdGFsIiwicmVmdW5kVG90YWwiLCJ0YXhlc1RvdGFsIiwiYW1vdW50VG90YWwiLCJ0aWNrZXRTdW1tYXJ5IiwiaHVuZHJlZCIsIm9yZGVyU3VtbWFyeVRhYmxlIiwidGlja2V0VG90YWwiLCJxdHkiLCJ0aWNrZXRfdHlwZSIsImNvc3QiLCJhbGlnbiIsImN1cnJlbmN5IiwiY3JlYXRlZCIsImRpc2NvdW50X2Ftb3VudCIsInRheGVzX2Ftb3VudCIsInNoYXBlIiwidXNlTm93IiwidGlja2V0c1JlZnVuZGFibGUiLCJSZWZ1bmRFbWFpbFN1cHBvcnQiLCJyZWZ1bmRSZXF1ZXN0ZWQiLCJ0aWNrZXRzVG9SZWZ1bmQiLCJzdWJtaXRSZXF1ZXN0Iiwib25SZWZ1bmRDbGljayIsIm9uUmVmdW5kRGV0YWlsQ2xpY2siLCJvbkVtYWlsU3VwcG9ydENsaWNrIiwiaXNJblJlZnVuZGFibGVQZXJpb2QiLCJyZWdpc3RyYXRpb25fYWxsb3dlZF9yZWZ1bmRfcmVxdWVzdF90aWxsX2RhdGUiLCJhdExlYXN0T25lUmVmdW5kYWJsZVRpY2tldCIsImlzUmVmdW5kYWJsZSIsInJvbGUiLCJvcmRlclN1bW1hcnlCdXR0b24iLCJyZWZ1bmREaXNhYmxlZCIsImFycmF5T2YiLCJPcmRlclN1bW1hcnkiLCJvcmRlclN1bW1hcnlXcmFwcGVyIiwicHgiLCJvcmRlclN1bW1hcnlQdXJjaGFzZWRJbmZvIiwibWVtYmVyVGlja2V0cyIsIkF0dGVuZGVlU3RhdHVzIiwiX3RpY2tldCRvd25lciIsIl90aWNrZXQkb3duZXIyIiwidGlja2V0T3duZXJFbWFpbCIsImlzX2FjdGl2ZSIsIk9yZGVyTGlzdFRpY2tldHMiLCJQQUdJTkFUSU9OX0RJU1BMQVlfQ09VTlQiLCJPcmRlckxpc3RJdGVtIiwiX29yZGVyJG1lbWJlclRpY2tldHMiLCJfb3JkZXIkbWVtYmVyVGlja2V0czIiLCJvblBhZ2luYXRlQ2xpY2siLCJzZWxlY3RUb1JlZnVuZCIsIml0ZW1zVG9EaXNwbGF5Iiwic2V0SXRlbXNUb0Rpc3BsYXkiLCJzbGljZWRUaWNrZXRzIiwic2xpY2UiLCJvblZpZXdNb3JlIiwidGlja2V0c190b3RhbCIsIm9uVmlld0xlc3MiLCJpc1NlbGVjdGVkVG9SZWZ1bmQiLCJmaW5kIiwidmlld01vcmVCdXR0b24iLCJUaWNrZXRTdGF0dXMiLCJnZXRTdW1taXRSZWFzc2lnbkRhdGUiLCJUaWNrZXREZXRhaWwiLCJ1c2VUaWNrZXREZXRhaWxzIiwiVGlja2V0UmVhc3NpZ24iLCJUaWNrZXRBc3NpZ24iLCJtb2RhbFZpZXdzIiwiZGV0YWlsIiwicmVhc3NpZ24iLCJhc3NpZ24iLCJUaWNrZXRDVEFzIiwiaXNJbmNvbXBsZXRlIiwiaXNVbmFzc2lnbmVkIiwiaXNSZWFzc2lnbmFibGUiLCJvbk9wZW5DbGljayIsImFzc2lnblRpY2tldEJ1dHRvbiIsInZpZXdGaW5pc2hUaWNrZXRCdXR0b24iLCJyZWFzc2lnbkJ1dHRvbiIsIl90aWNrZXQkdGlja2V0X3R5cGUiLCJfdGlja2V0JG93bmVyMyIsImNhblJlYXNzaWduIiwibW9kYWxPcGVuIiwic2V0TW9kYWxPcGVuIiwicmVhc3NpZ25EYXRlIiwiaGFuZGxlQ2xvc2VNb2RhbCIsImhhbmRsZU9wZW5Nb2RhbCIsInZpZXciLCJvcmRlcldyYXBwZXIiLCJ0aWNrZXRUaWNrZXRUeXBlIiwidGlja2V0Tm8iLCJ0aWNrZXRBY3Rpb25CdXR0b25zIiwib3duZXJJZCIsInRvdGFsX3JlZnVuZGVkX2Ftb3VudCIsIlRhYnMiLCJUYWIiLCJSZWZ1bmRSZXF1ZXN0c01vZGFsIiwiaXNUaWNrZXRSZWZ1bmRhYmxlIiwiUmVmdW5kRGV0YWlscyIsIlRhYlBhbmVsIiwicHJvcHMiLCJpbmRleCIsImhpZGRlbiIsIk9yZGVyc0xpc3REZXNrdG9wTW9iaWxlIiwiaXNNb2JpbGUiLCJkZXRhaWxzUmVxdWlyZWQiLCJzZXRWYWx1ZSIsIl8iLCJzZXRSZWZ1bmRSZXF1ZXN0ZWQiLCJzZXRUaWNrZXRzVG9SZWZ1bmQiLCJzZXRTdWJtaXRSZXF1ZXN0IiwicmVmdW5kRGV0YWlsc09wZW4iLCJzZXRSZWZ1bmREZXRhaWxzT3BlbiIsInVuc2VsZWN0UmVmdW5kVGlja2V0cyIsImZpbHRlclNlbGVjdGVkIiwic2VsZWN0ZWRUaWNrZXQiLCJjYW5jZWxUaWNrZXRzVG9SZWZ1bmQiLCJzZWxlY3RBbGxUaWNrZXRzIiwicmVmdW5kYWJsZVRpY2tldHMiLCJyZXNldEFsbFJlZnVuZFN0YXR1c2VzIiwibW9yZURldGFpbHMiLCJ0aWNrZXRMaXN0Q29udGFpbmVyIiwiYm9yZGVyQ29sb3IiLCJ0ZXh0Q29sb3IiLCJUYWJJbmRpY2F0b3JQcm9wcyIsImJhY2tncm91bmQiLCJ0YWJCdXR0b25zIiwicmVmdW5kQnV0dG9ucyIsIm9uUmVtb3ZlU2VsZWN0ZWRSZWZ1bmRUaWNrZXRzIiwib25SZWZ1bmRTdWNjZXNzQ2xvc2UiLCJvbkNsb3NlU2xpZGVyIiwidXNlVGhlbWUiLCJ1c2VNZWRpYVF1ZXJ5IiwiZ2V0Rm9ybWF0dGVkRGF0ZSIsImJyZWFrcG9pbnRzIiwiZG93biIsImlzTW9iaWxlVmlld2FibGUiLCJzZXRNb2JpbGVWaWV3YWJsZSIsInRpY2tldHNfcGFnZV9jdXJyZW50Iiwib3JkZXJUaWNrZXRJbmZvQ29udGFpbmVyIiwib3JkZXJUaWNrZXRJbmZvIiwiYmxhY2tCdXR0b24iLCJyb3dTcGFjaW5nIiwiY29sdW1uU3BhY2luZyIsInNtIiwib3JkZXJUaWNrZXRDb250YWluZXIiLCJkaXNwbGF5X25vbmUiLCJmbGV4RGlyZWN0aW9uIiwiUmlnaHREcmF3ZXIiLCJSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXQiLCJjbG9zZVNsaWRlciIsInJlZnVuZERldGFpbHMiLCJEZWxldGVPdXRsaW5lSWNvbiIsIlJlZnVuZFN0YXR1cyIsIm9uUmVtb3ZlIiwicmVmdW5kVGlja2V0Qm94Q29udGFpbmVyIiwiZGVsZXRlSWNvbiIsInVzZU1lbW8iLCJnZXRSZWZ1bmRSZXF1ZXN0ZWRTdGF0dXNDb2xvciIsInN0YXR1c0NvbG9yIiwiYnV0dG9uUGlsbCIsIlN0eWxlZEVuZ2luZVByb3ZpZGVyIiwiQ2hlY2tDaXJjbGVJY29uIiwiU1RFUF9PTkUiLCJTVEVQX1RXTyIsInN0ZXAiLCJzZXRTdGVwIiwiZXJyb3JNc2ciLCJzZXRFcnJvck1zZyIsInJlZnVuZFN1Y2Nlc3MiLCJzZXRSZWZ1bmRTdWNjZXNzIiwicmVmdW5kVGlja2V0cyIsInJlZnVuZFN0ZXBPbmUiLCJyZWZ1bmRUZXh0IiwicmVmdW5kRXJyb3JNc2ciLCJhY3Rpb25CdXR0b25zIiwiY2FuY2VsQnV0dG9uIiwiY29udGludWVCdXR0b24iLCJyZWZ1bmRTdGVwVHdvIiwicmVmdW5kU3VjY2Vzc2Z1bCIsInN1Y2Nlc3NNc2ciLCJzdWNjZXNzTXNnMiIsInJlbmRlclN0ZXBzIiwiaW5qZWN0Rmlyc3QiLCJJY29uQnV0dG9uIiwiVHlwb2dyYXBoeSIsIkRyYXdlciIsIkNsb3NlIiwiYW5jaG9yIiwiTW9kYWxQcm9wcyIsImtlZXBNb3VudGVkIiwiaGVhZGVyIiwiY2xvc2VCdG4iLCJmbG9hdCIsImd1dHRlckJvdHRvbSIsIm9uZU9mVHlwZSIsInl1cCIsIkFzc2lnbkZvcm0iLCJuZXdfYXR0ZW5kZWVfZW1haWwiLCJwZXJzb25hbF9tZXNzYWdlIiwibXVsdGlsaW5lIiwibWluUm93cyIsInVzZUNvbnRleHQiLCJfdGlja2V0JG9yZGVyIiwiX3RpY2tldCRvcmRlcjIiLCJfdGlja2V0JHR5cGUiLCJ0aWNrZXRBc3NpZ25lZCIsInNldFRpY2tldEFzc2lnbmVkIiwiY3VycmVudFRpY2tldCIsIm9uQXNzaWduVG9PdGhlciIsIm9uQXNzaWduVG9NZSIsIm9uQ2xvc2VFUUZvcm0iLCJvbkNsb3NlU2F2ZU1lc3NhZ2UiLCJvblNhdmVFUSIsInJlc29sdmUiLCJ0aWNrZXRBc3NpZ25Db250YWluZXIiLCJhbGlnbkNlbnRlciIsInN1YnRpdGxlIiwib3duZXJfZW1haWwiLCJvcmRlck5vIiwidGlja2V0VHlwZSIsImFzc2lnbkJ0biIsImF0dGVuZGVlQ29udGFpbmVyIiwiYXR0ZW5kZWVJbmZvVGl0bGUiLCJhdHRlbmRlZUluZm9Ob3RlIiwiQXV0b2NvbXBsZXRlIiwicXVlcnlSZWdpc3RyYXRpb25Db21wYW5pZXMiLCJDb21wYW55RmllbGQiLCJzdW1taXRJZCIsImlucHV0VmFsdWUiLCJzZXRJbnB1dFZhbHVlIiwib3B0aW9ucyIsInNldE9wdGlvbnMiLCJzZXRGaWVsZFRvdWNoZWQiLCJyZXN1bHRzIiwibmV3T3B0aW9ucyIsImF1dG9Db21wbGV0ZSIsImZyZWVTb2xvIiwiaW5jbHVkZUlucHV0SW5MaXN0IiwiZmlsdGVyU2VsZWN0ZWRPcHRpb25zIiwiZ2V0T3B0aW9uTGFiZWwiLCJvcHRpb24iLCJ0bXBWYWx1ZSIsIm9uSW5wdXRDaGFuZ2UiLCJuZXdJbnB1dFZhbHVlIiwiZmlsdGVyT3B0aW9ucyIsImZpbHRlcmVkIiwiaXNFeGlzdGluZyIsInJlbmRlcklucHV0IiwicmVuZGVyT3B0aW9uIiwib3B0aW9uUHJvcHMiLCJUaWNrZXREZWxlZ2F0aW9uRmllbGRzIiwiZGVsZWdhdGVkX2ZpcnN0X25hbWUiLCJkZWxlZ2F0ZWRfbGFzdF9uYW1lIiwiVGlja2V0T3duZXJGaWVsZHMiLCJUaWNrZXRGb3JtIiwiY2FuRWRpdCIsInRpY2tldE1hbmFnZXIiLCJhbGxvd3NEZWxlZ2F0aW9uIiwiYWxsb3dzX3RvX2RlbGVnYXRlIiwicmVkdWNlIiwiZGVsZWdhdGVkVG8iLCJhZGRpdGlvbmFsRGV0YWlscyIsImluZm9Ob3RlIiwiUVJDb2RlIiwiRmlsZURvd25sb2FkT3V0bGluZWQiLCJEb3dubG9hZEljb24iLCJFbWFpbE91dGxpbmVkIiwiRW1haWxJY29uIiwidXNlR2V0VGlja2V0IiwiVFdPX0lURU0iLCJzYXZlTWVzc2FnZSIsInNldFNhdmVNZXNzYWdlIiwic2VudENvbmZpcm1hdGlvbiIsInNldFNlbnRDb25maXJtYXRpb24iLCJpc1VzZXJPcmRlck93bmVyIiwib3duZXJfaWQiLCJpc1VzZXJUaWNrZXRPd25lciIsImNhbkVkaXRUaWNrZXREYXRhIiwiYWxsb3dfdXBkYXRlX2F0dGVuZGVlX2V4dHJhX3F1ZXN0aW9ucyIsImlzQ29tcGxldGUiLCJvblNhdmUiLCJkZXNjcmlwdGlvbiIsImRvd25sb2FkVGlja2V0UGRmIiwib25TZW5kRW1haWwiLCJ0aWNrZXREZXRhaWxDb250YWluZXIiLCJxckNvZGUiLCJtYXhXaWR0aCIsInFyX2NvZGUiLCJ2aWV3Qm94IiwicXJOb3RlIiwiaXNfdmlydHVhbCIsImFjdGlvbkJ1dHRvbnNDb250YWluZXIiLCJkb3dubG9hZEJ0biIsInNlbmRCdG4iLCJzZW50Iiwib3JkZXJOdW1iZXIiLCJSZWFzc2lnbkZvcm0iLCJ0aWNrZXRSZWFzc2lnbmVkIiwic2V0VGlja2V0UmVhc3NpZ25lZCIsIm9uUmVhc3NpZ24iLCJnZXRMYWJlbHMiLCJoZWFkZXJOb3RlIiwidGlja2V0UmVhc3NpZ25Db250YWluZXIiLCJDb250YWluZXIiLCJfdGlja2V0JHJlZnVuZF9yZXF1ZXMiLCJpc0FjdGl2ZSIsInJlZnVuZFJlcXVlc3RzIiwidGlja2V0U3RhdHVzQ29udGFpbmVyIiwiYnV0dG9uUmVmdW5kUmVxdWVzdGVkIiwiYnV0dG9uSW5jb21wbGV0ZSIsImJ1dHRvblVuYXNzaWduZWQiLCJidXR0b25Db21wbGV0ZSIsImJ1dHRvbkNhbmNlbGxlZCIsInJ1biIsInNtb290aFNjcm9sbFRvIiwidGFyZ2V0U2Nyb2xsVG9wIiwiZHVyYXRpb24iLCJzdGFydFNjcm9sbFRvcCIsInNjcm9sbFRvcCIsImRpc3RhbmNlIiwic3RhcnRUaW1lIiwiYW5pbWF0aW9uU3RlcCIsInRpbWVzdGFtcCIsImVsYXBzZWQiLCJwcm9ncmVzcyIsIk1hdGgiLCJtaW4iLCJlYXNlSW5PdXRRdWFkIiwicmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwiY29udGFpbmVySWQiLCJpc1ZhbGlkIiwiZXJyb3JBcnJheSIsImVycm9yQ291bnQiLCJlbGVtZW50c1NvcnRlZCIsInJlc3VsdCIsImVsZW1lbnQiLCJxdWVyeVNlbGVjdG9yIiwiZWxSZWN0IiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwiYSIsImIiLCJnZXRFbGVtZW50QnlJZCIsImNvbnRhaW5lclJlY3QiLCJlbGVtT2ZmZXN0IiwiYW5pbWF0aW9uRHVyYXRpb24iLCJTVEFUVVNfQ09NUExFVEUiLCJTVEFUVVNfSU5DT01QTEVURSIsIlNUQVRVU19DQU5DRUxMRUQiLCJTVEFUVVNfVU5BU1NJR05FRCIsIl90aWNrZXQkcHJvbW9fY29kZSIsIl90aWNrZXQkb3duZXI0IiwiZ2V0U3RhdHVzIiwiYWxsb3dzRGVsZWdhdGUiLCJwcm9tb19jb2RlIiwiYWxsb3dzX3RvX3JlYXNzaWduIiwiaW5pdFJlYWN0STE4bmV4dCIsIkxhbmd1YWdlRGV0ZWN0b3IiLCJlbiIsImVzIiwidXNlIiwiaW5pdCIsImZhbGxiYWNrTG5nIiwiZGVidWciLCJyZXNvdXJjZXMiLCJ0cmFuc2xhdGlvbiIsImludGVycG9sYXRpb24iLCJlc2NhcGVWYWx1ZSIsIkxPR09VVF9VU0VSIiwiU1RBUlRfTE9BRElORyIsIlNUT1BfTE9BRElORyIsIlJFU0VUX0xPQURJTkciLCJERUZBVUxUX1NUQVRFIiwid2lkZ2V0TG9hZGluZyIsImlzT3JkZXJMb2FkaW5nIiwidGlja2V0X2N1cnJlbnRfcGFnZSIsInRpY2tldF9sYXN0X3BhZ2UiLCJ0aWNrZXRfdG90YWwiLCJXaWRnZXRSZWR1Y2VyIiwidG90YWwiLCJsYXN0X3BhZ2UiLCJmb3JtZXJPcmRlciIsIm8iLCJfZGF0YSQiLCJ1cGRhdGVkT3JkZXIiLCJ0aWNrZXRzX3BhZ2VfbGFzdCIsIm1vIiwiX3RpY2tldHNSZWZ1bmRSZXF1ZXN0IiwidXBkYXRlZFRpY2tldHMiLCJ0cnIiLCJ0aWNrZXREYXRhIiwibmV3T3JkZXJzIiwibmV3VGlja2V0cyIsImNvbmZpZ3VyZVN0b3JlIiwicGVyc2lzdFN0b3JlIiwicGVyc2lzdFJlZHVjZXIiLCJGTFVTSCIsIlJFSFlEUkFURSIsIlBBVVNFIiwiUEVSU0lTVCIsIlBVUkdFIiwiUkVHSVNURVIiLCJzdG9yYWdlIiwiY29tYmluZVJlZHVjZXJzIiwiZ2V0U3RvcmUiLCJjbGllbnRJZCIsImxvZ2luVXJsIiwicmVkdWNlcnMiLCJzdG9yZSIsInJlZHVjZXIiLCJtaWRkbGV3YXJlIiwiZ2V0RGVmYXVsdE1pZGRsZXdhcmUiLCJ0aHVuayIsImV4dHJhQXJndW1lbnQiLCJpbW11dGFibGVDaGVjayIsInNlcmlhbGl6YWJsZUNoZWNrIiwiaWdub3JlZEFjdGlvbnMiLCJ1c2VJbml0U3RvcmUiLCJjb25maWciLCJwZXJzaXN0b3IiLCJpbml0TG9nT3V0IiwiZ2V0QWNjZXNzVG9rZW4iLCJTZW50cnkiLCJjYXB0dXJlRXhjZXB0aW9uIiwiTEFTVF9IT1VSX09GXzI0X0hPVVIiLCJMQVNUX01JTlVURV9PRl9IT1VSIiwiT05FX0RBWSIsIlNUQVRVU19QRU5ESU5HIiwiU1RBVFVTX0VSUk9SIiwiU1RBVFVTX1BST0NFU1NJTkciLCJTVEFUVVNfUkVGVU5EX1BFTkRJTkciLCJTVEFUVVNfUkVGVU5EX0FQUFJPVkVEIiwiU1RBVFVTX1JFRlVORF9SRUpFQ1RFRCIsIkpFU1RfVElNRU9VVF9JTl9NSUxMSVNFQyIsIk9ORV9JVEVNIiwiRklWRV9JVEVNIiwiU0lYX0lURU0iLCJtb21lbnQiLCJsb2NhbGUiLCJkZWZhdWx0T3B0aW9ucyIsIm1pbmltdW1GcmFjdGlvbkRpZ2l0cyIsIm1heGltdW1GcmFjdGlvbkRpZ2l0cyIsImZvcm1hdHRlciIsIkludGwiLCJOdW1iZXJGb3JtYXQiLCJmb3JtYXQiLCJkYXRldGltZSIsInRpbWVab25lIiwidHoiLCJ1bml4IiwicmVmdW5kZWRfYW1vdW50IiwiYW1vdW50IiwidGlja2V0X3R5cGVzIiwicHVyY2hhc2VUaWNrZXRUb3RhbCIsImN1cnJlbmN5T2JqZWN0IiwidGlja2V0c19leGNlcnB0X2J5X3RpY2tldF90eXBlIiwidHQiLCJ0aWNrZXRfdHlwZV9pZCIsInB1cmNoYXNlVG90YWwiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJnZXRPcmRlclRpY2tldHMiLCJfb3JkZXJzJCIsIm9yZGVycyIsInRzIiwic2V0SG91cnMiLCJkZWZhdWx0Q3VycmVudFRpbWUiLCJyb3VuZCIsImdldE5vdyIsInRpbWVyU3RhdGUiLCJub3dVdGMiLCJjaGVja1N1bW1pdFBhc3QiLCJyZWFzc2lnbl9kYXRlIiwicmVhc3NpZ25fdGlja2V0X3RpbGxfZGF0ZSIsImVuZF9kYXRlIiwiY2hlY2tTdW1taXRTdGFydGVkIiwic3RhcnRfZGF0ZSIsImdldFN1bW1pdERheXNEaWZmIiwic3RhcnREYXkiLCJ0aW1lX3pvbmVfaWQiLCJlbmREYXkiLCJkYXlzIiwiZGlmZiIsImZvcm1hdFN0YXJ0RGF0ZSIsImZvcm1hdEVuZERhdGUiLCJ5ZWFyIiwibW9udGgiLCJzdGFydERhdGUiLCJlbmREYXRlIiwiZ2V0U3VtbWl0TG9jYXRpb24iLCJfc3VtbWl0JGxvY2F0aW9ucyIsImxvY2F0aW9uIiwibG9jYXRpb25zIiwibCIsImNsYXNzX25hbWUiLCJpc19tYWluIiwiY2l0eSIsImNvdW50cnkiLCJ1c2VTdW1taXREZXRhaWxzIiwiX3N1bW1pdCR0aW1lX3pvbmUiLCJfc3VtbWl0JHRpbWVfem9uZTIiLCJmb3JtYXR0ZWREYXRlIiwiZm9ybWF0dGVkUmVhc3NpZ25EYXRlIiwidGltZV96b25lIiwiZGF5c1VudGlsUmVhc3NpZ25EZWFkbGluZSIsImlzUGFzdCIsImlzU3RhcnRlZCIsInN0YXR1c0RhdGEiLCJnZXRUaWNrZXRTdGF0dXNLZXkiLCJnZXRUaWNrZXRTdGF0dXNEYXRhIiwiaXNTdW1taXRQYXN0IiwiZ2V0VGlja2V0Um9sZSIsImJhZGdlIiwiZmVhdHVyZXMiLCJmZWF0dXJlIiwiam9pbiIsImdldFRpY2tldFR5cGUiLCJmaW5hbF9hbW91bnQiLCJyciIsImdldFJlZnVuZGVkUmVxdWVzdGVkVGlja2V0cyIsIl90aWNrZXQkcmVmdW5kX3JlcXVlczIiLCJnZXRSZWZ1bmRlZFJlcXVlc3RlZFN0YXR1cyIsIl90aWNrZXQkcmVmdW5kX3JlcXVlczMiLCJfdGlja2V0JHJlZnVuZF9yZXF1ZXM0IiwiX3RpY2tldCRyZWZ1bmRfcmVxdWVzNSIsImdldFR5cGVWYWxpZGF0aW9uIiwic2NoZW1hIiwib25lT2YiLCJvZiIsImluY2x1ZGVEZWxlZ2F0aW9uIiwiaW5jbHVkZUF0dGVuZGVlSW5mbyIsImluY2x1ZGVEaXNjbGFpbWVyIiwib25seVJlbGV2YW50Iiwic3ViUXVlc3Rpb25TbHVnIiwic3ViQW5zd2VyIiwibWF0Y2giLCJkaXNjbGFpbWVyTWFuZGF0b3J5IiwibGF6eSIsInR5cGVFcnJvciIsIl9xJHN1Yl9xdWVzdGlvbl9ydWxlczIiLCJzdWJRdWVzdGlvbiIsIm51bGxhYmxlIiwid2hlbiIsImlzIiwicXVlc3Rpb25BbnMiLCJzY2giLCJQZXJzaXN0R2F0ZSIsIk15T3JkZXJzTXlUaWNrZXRzV2lkZ2V0Iiwic3VwcG9ydEVtYWlsIiwiaGFuZGxlQmVmb3JlTGlmdCIsIlVSTFNlYXJjaFBhcmFtcyIsInNlYXJjaCIsImZsdXNoIiwiaGFzIiwib25CZWZvcmVMaWZ0Il0sInNvdXJjZVJvb3QiOiIifQ==
8200
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,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Q0E7QUFDZ007Ozs7Ozs7Ozs7Ozs7Ozs7O0FDUmhNO0FBQ0E7QUFDQTtBQUNBO0FBQytFOzs7Ozs7Ozs7OztBQ0ovRTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztVQ0FBO1VBQ0E7O1VBRUE7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7O1VBRUE7VUFDQTs7VUFFQTtVQUNBO1VBQ0E7Ozs7O1dDdEJBO1dBQ0E7V0FDQTtXQUNBO1dBQ0E7V0FDQSxpQ0FBaUMsV0FBVztXQUM1QztXQUNBOzs7OztXQ1BBO1dBQ0E7V0FDQTtXQUNBO1dBQ0EseUNBQXlDLHdDQUF3QztXQUNqRjtXQUNBO1dBQ0E7Ozs7O1dDUEE7Ozs7O1dDQUE7V0FDQTtXQUNBO1dBQ0EsdURBQXVELGlCQUFpQjtXQUN4RTtXQUNBLGdEQUFnRCxhQUFhO1dBQzdEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ05BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUN5QztBQUNOO0FBQ0k7QUFDdUI7QUFDZjtBQUNXO0FBQ25CO0FBQ29CO0FBQ0c7QUFDTDtBQUFBO0FBRXpELE1BQU1xQix1QkFBdUIsR0FBSXBjLEtBQUssSUFBSztFQUN6QyxNQUFNO0lBQ0pnVCxRQUFRO0lBQ1JxSixZQUFZO0lBQ1ova0MsTUFBTTtJQUNOOEMsVUFBVTtJQUNWN0MsSUFBSTtJQUNKdzdCLFFBQVE7SUFDUnQwQjtFQUNGLENBQUMsR0FBR3VoQixLQUFLO0VBQ1QsTUFBTTtJQUFFL21CO0VBQUUsQ0FBQyxHQUFHOEksNkRBQWMsQ0FBQyxDQUFDO0VBRTlCLE1BQU07SUFBRW14QixLQUFLO0lBQUVXO0VBQVUsQ0FBQyxHQUFHRixvREFBWSxDQUFDO0lBQ3hDWCxRQUFRO0lBQ1JxSixZQUFZO0lBQ1ova0MsTUFBTTtJQUNOQyxJQUFJO0lBQ0o2QyxVQUFVO0lBQ1YyNEIsUUFBUTtJQUNSdDBCO0VBQ0YsQ0FBQyxDQUFDO0VBRUYsTUFBTTY5QixnQkFBZ0IsR0FBR0EsQ0FBQSxLQUFNO0lBQzdCLE1BQU01aEMsTUFBTSxHQUFHLElBQUk2aEMsZUFBZSxDQUFDajdCLE1BQU0sQ0FBQ20zQixRQUFRLENBQUMrRCxNQUFNLENBQUM7SUFDMUQsTUFBTUMsS0FBSyxHQUFHL2hDLE1BQU0sQ0FBQ2dpQyxHQUFHLENBQUMsWUFBWSxDQUFDO0lBQ3RDLElBQUlELEtBQUssRUFBRXZKLEtBQUssQ0FBQ2g4QixRQUFRLENBQUM7TUFBRVcsSUFBSSxFQUFFbEQsaURBQVc7TUFBRTRELE9BQU8sRUFBRTtJQUFLLENBQUMsQ0FBQztFQUNqRSxDQUFDO0VBRURtWSxnREFBUyxDQUFDLE1BQU07SUFDZHdpQixLQUFLLENBQUNoOEIsUUFBUSxDQUFDRyx5REFBZSxDQUFDQyxNQUFNLEVBQUVDLElBQUksQ0FBQyxDQUFDO0VBQy9DLENBQUMsRUFBRSxDQUFDRCxNQUFNLEVBQUVDLElBQUksQ0FBQyxDQUFDO0VBRWxCLG9CQUNFa0wsdURBQUEsQ0FBQ3FWLGlEQUFRO0lBQUNvYixLQUFLLEVBQUVBLEtBQU07SUFBQTF2QixRQUFBLGVBQ3JCZix1REFBQSxDQUFDMDVCLHdFQUFXO01BQ1ZRLFlBQVksRUFBRUwsZ0JBQWlCO01BQy9CemxCLE9BQU8sRUFBRSxJQUFLO01BQ2RnZCxTQUFTLEVBQUVBLFNBQVU7TUFBQXJ3QixRQUFBLGVBRXJCYix3REFBQSxDQUFDa2hCLCtEQUFvQjtRQUFDcUIsV0FBVztRQUFBMWhCLFFBQUEsZ0JBQy9CZix1REFBQSxDQUFDVCw4Q0FBRztVQUFDaU8sRUFBRSxFQUFFO1lBQUVrRCxPQUFPLEVBQUU7Y0FBRWdDLEVBQUUsRUFBRSxDQUFDO2NBQUV3QyxFQUFFLEVBQUUsQ0FBQztjQUFFQyxFQUFFLEVBQUU7WUFBRTtVQUFFLENBQUU7VUFBQXBVLFFBQUEsZUFDNUNmLHVEQUFBO1lBQUFlLFFBQUEsRUFBS3ZLLENBQUMsQ0FBQyxjQUFjO1VBQUMsQ0FBSztRQUFDLENBQ3pCLENBQUMsZUFDTndKLHVEQUFBLENBQUNpVSxtRUFBZTtVQUNkc2MsUUFBUSxFQUFFQSxRQUFTO1VBQ25CcUosWUFBWSxFQUFFQSxZQUFhO1VBQzNCL2tDLE1BQU0sRUFBRUEsTUFBTztVQUNmOEMsVUFBVSxFQUFFQTtRQUFXLENBQ3hCLENBQUMsZUFDRnFJLHVEQUFBLENBQUMwWSwyRUFBVSxJQUFFLENBQUM7TUFBQSxDQUNNO0lBQUMsQ0FDWjtFQUFDLENBQ04sQ0FBQztBQUVmLENBQUM7QUFFRGloQix1QkFBdUIsQ0FBQ3A0QixTQUFTLEdBQUc7RUFDbENndkIsUUFBUSxFQUFFbHhCLDBEQUFnQjtFQUMxQnU2QixZQUFZLEVBQUV2NkIsMERBQWdCO0VBQzlCeEssTUFBTSxFQUFFd0ssMERBQWdCO0VBQ3hCMUgsVUFBVSxFQUFFMEgsMERBQWdCO0VBQzVCdkssSUFBSSxFQUFFdUssMERBQWdCO0VBQ3RCaXhCLFFBQVEsRUFBRWp4QiwwREFBZ0I7RUFDMUJyRCxhQUFhLEVBQUVxRCx3REFBY3FDO0FBQy9CLENBQUM7QUFFRCxpRUFBZWk0Qix1QkFBdUIsRSIsInNvdXJjZXMiOlsid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC93ZWJwYWNrL3VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24iLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2FjdGlvbnMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvQXNzaWduRVFGb3JtL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0NvcHlUZXh0L2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0N1c3RvbURpYWxvZy9Db250ZXh0LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0N1c3RvbURpYWxvZy9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9DdXN0b21UaGVtZS5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb21wb25lbnRzL0NoZWNrYm94TGlzdFF1ZXN0aW9uRmllbGQuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29tcG9uZW50cy9DaGVja2JveFF1ZXN0aW9uRmllbGQuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29tcG9uZW50cy9Ecm9wZG93blF1ZXN0aW9uRmllbGQuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29tcG9uZW50cy9SYWRpb0xpc3RRdWVzdGlvbkZpZWxkLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvVGV4dFF1ZXN0aW9uRmllbGQuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29tcG9uZW50cy91dGlscy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb25zdGFudHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVyU29ydFNlYXJjaC9EYXRlcGlja2VyLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlclNvcnRTZWFyY2gvRmlsdGVyLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlclNvcnRTZWFyY2gvU2VhcmNoLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlclNvcnRTZWFyY2gvU29ydC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJTb3J0U2VhcmNoL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0Zvcm1Gb290ZXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvTGFiZWxzL0Vycm9yTGFiZWwuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvTG9hZGVyL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL015T3JkZXJzVGlja2V0cy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlclN1bW1hcnkvT3JkZXJTdW1tYXJ5VGFibGUuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJTdW1tYXJ5L1JlZnVuZEVtYWlsU3VwcG9ydC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlclN1bW1hcnkvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJzTGlzdC9Bc3NpZ25lZFRvTWUuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJzTGlzdC9BdHRlbmRlZVN0YXR1cy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlcnNMaXN0L09yZGVyTGlzdEl0ZW0uanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJzTGlzdC9PcmRlckxpc3RUaWNrZXRzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyc0xpc3QvT3JkZXJzTGlzdERlc2t0b3BNb2JpbGUuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJzTGlzdC9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9SZWZ1bmRSZXF1ZXN0cy9SZWZ1bmREZXRhaWxzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1JlZnVuZFJlcXVlc3RzL1JlZnVuZFJlcXVlc3RlZFRpY2tldC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9SZWZ1bmRSZXF1ZXN0cy9SZWZ1bmRTdGF0dXMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvUmVmdW5kUmVxdWVzdHMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvUmlnaHREcmF3ZXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0QXNzaWduL2NvbXBvbmVudHMvQXNzaWduRm9ybS9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXRBc3NpZ24vaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvQ29tcGFueUZpZWxkL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb21wb25lbnRzL1JlZ2lzdHJhdGlvbkRpc2NsYWltZXIvUmVnaXN0cmF0aW9uRGlzY2xhaW1lci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29tcG9uZW50cy9UaWNrZXREZWxlZ2F0aW9uRmllbGRzL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb21wb25lbnRzL1RpY2tldEZvcm0vaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvVGlja2V0T3duZXJGaWVsZHMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbnN0YW50cy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0UmVhc3NpZ24vY29tcG9uZW50cy9SZWFzc2lnbkZvcm0vaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0UmVhc3NpZ24vaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0U3RhdHVzL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9ob29rcy91c2VHZXRUaWNrZXQuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2hvb2tzL3VzZVNjcm9sbFRvRXJyb3IuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2hvb2tzL3VzZVRpY2tldERldGFpbHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2kxOG4vaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL3JlZHVjZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL3N0b3JlLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy91dGlscy9hdXRoLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy91dGlscy9jb25zdGFudHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL3V0aWxzL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy91dGlscy9zdW1taXRVdGlscy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvdXRpbHMvdGlja2V0VXRpbHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvQ29weVRleHQvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlclNvcnRTZWFyY2gvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0Zvcm1Gb290ZXIvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0xhYmVscy9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJTdW1tYXJ5L3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlcnNMaXN0L3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9SZWZ1bmRSZXF1ZXN0cy9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvUmlnaHREcmF3ZXIvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldEFzc2lnbi9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvUmVnaXN0cmF0aW9uRGlzY2xhaW1lci9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvVGlja2V0T3duZXJGaWVsZHMvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0UmVhc3NpZ24vc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldFN0YXR1cy9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHlcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ2hlY2tDaXJjbGVcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL0Nsb3NlXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbC9Db250ZW50Q29weVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRGVsZXRlT3V0bGluZVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRXJyb3JcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL0ZpbHRlckxpc3RcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL0ltcG9ydEV4cG9ydFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvU2VhcmNoXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvQ2hlY2tib3hcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL0RpdmlkZXJcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL0lucHV0QmFzZVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvU3RhY2tcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL1RhYlwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvVGFic1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvc3R5bGVzXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC91c2VNZWRpYVF1ZXJ5XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS94LWRhdGUtcGlja2Vycy9BZGFwdGVyRGF5anNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL3gtZGF0ZS1waWNrZXJzL0RhdGVQaWNrZXJcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL3gtZGF0ZS1waWNrZXJzL0xvY2FsaXphdGlvblByb3ZpZGVyXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQHJlZHV4anMvdG9vbGtpdFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBzZW50cnkvcmVhY3RcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJkYXlqc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcImZvcm1pa1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcImkxOG5leHRcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJpMThuZXh0LWJyb3dzZXItbGFuZ3VhZ2VkZXRlY3RvclwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcImlkdG9rZW4tdmVyaWZpZXJcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJtb21lbnQtdGltZXpvbmVcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL2NvbXBvbmVudHMvcmF3LWh0bWxcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3NlY3VyaXR5L2FjdGlvbnNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3NlY3VyaXR5L21ldGhvZHNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL2FjdGlvbnNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL21ldGhvZHNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL3F1ZXJ5LWFjdGlvbnNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJwLWxpbWl0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicHJvcC10eXBlc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlYWN0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVhY3QtaTE4bmV4dFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlYWN0LWluZmluaXRlLXNjcm9sbC1jb21wb25lbnRcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWFjdC1xci1jb2RlXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVhY3QtcmVkdXhcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWFjdC9qc3gtcnVudGltZVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlZHV4XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVkdXgtcGVyc2lzdFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlZHV4LXBlcnNpc3QvaW50ZWdyYXRpb24vcmVhY3RcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWR1eC1wZXJzaXN0L2xpYi9zdG9yYWdlXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwieXVwXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L3dlYnBhY2svYm9vdHN0cmFwIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC93ZWJwYWNrL3J1bnRpbWUvY29tcGF0IGdldCBkZWZhdWx0IGV4cG9ydCIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvd2VicGFjay9ydW50aW1lL2RlZmluZSBwcm9wZXJ0eSBnZXR0ZXJzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC93ZWJwYWNrL3J1bnRpbWUvaGFzT3duUHJvcGVydHkgc2hvcnRoYW5kIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC93ZWJwYWNrL3J1bnRpbWUvbWFrZSBuYW1lc3BhY2Ugb2JqZWN0Iiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uIHdlYnBhY2tVbml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uKHJvb3QsIGZhY3RvcnkpIHtcblx0aWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnKVxuXHRcdG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeSgpO1xuXHRlbHNlIGlmKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZClcblx0XHRkZWZpbmUoXCJteS1vcmRlcnMtdGlja2V0cy13aWRnZXRcIiwgW10sIGZhY3RvcnkpO1xuXHRlbHNlIGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0Jylcblx0XHRleHBvcnRzW1wibXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0XCJdID0gZmFjdG9yeSgpO1xuXHRlbHNlXG5cdFx0cm9vdFtcIm15LW9yZGVycy10aWNrZXRzLXdpZGdldFwiXSA9IGZhY3RvcnkoKTtcbn0pKHRoaXMsICgpID0+IHtcbnJldHVybiAiLCJpbXBvcnQge1xuICBhdXRoRXJyb3JIYW5kbGVyLFxuICBnZXRSZXF1ZXN0LFxuICBkZWxldGVSZXF1ZXN0LFxuICBjcmVhdGVBY3Rpb24sXG4gIHN0b3BMb2FkaW5nLFxuICBzdGFydExvYWRpbmcsXG4gIHB1dFJlcXVlc3Rcbn0gZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvYWN0aW9uc1wiO1xuaW1wb3J0IHBMaW1pdCBmcm9tIFwicC1saW1pdFwiO1xuaW1wb3J0IHsgZ2V0SWRUb2tlbiB9IGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3NlY3VyaXR5L21ldGhvZHNcIjtcbmltcG9ydCB7IG9iamVjdFRvUXVlcnlTdHJpbmcgfSBmcm9tIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9tZXRob2RzXCI7XG5pbXBvcnQgSWRUb2tlblZlcmlmaWVyIGZyb20gXCJpZHRva2VuLXZlcmlmaWVyXCI7XG5pbXBvcnQgaTE4biBmcm9tIFwiaTE4bmV4dFwiO1xuaW1wb3J0IHsgZ2V0QWNjZXNzVG9rZW5TYWZlbHkgfSBmcm9tIFwiLi91dGlscy9hdXRoXCI7XG5pbXBvcnQge1xuICBGSVJTVF9QQUdFLFxuICBERUZBVUxUX0lURU1TX1BFUl9QQUdFLFxuICBQUk9NSVNFX0JBVENIX0xJTUlULFxuICBGSUZUWV9QRVJfUEFHRSxcbiAgRVJST1JfQ09ERVNcbn0gZnJvbSBcIi4vdXRpbHMvY29uc3RhbnRzXCI7XG5cbmV4cG9ydCBjb25zdCBSRVNFVF9TVEFURSA9IFwiUkVTRVRfU1RBVEVcIjtcbmV4cG9ydCBjb25zdCBSRVNFVF9GSUxURVIgPSBcIlJFU0VUX0ZJTFRFUlwiO1xuZXhwb3J0IGNvbnN0IFJFU0VUX0FQSV9FUlJPUiA9IFwiUkVTRVRfQVBJX0VSUk9SXCI7XG5leHBvcnQgY29uc3QgU0VUX1NUQVRFID0gXCJTRVRfU1RBVEVcIjtcbmV4cG9ydCBjb25zdCBTRVRfQVBJX0VSUk9SID0gXCJTRVRfQVBJX0VSUk9SXCI7XG5cbi8vIE9SREVSUyBDT05TVFNcbmV4cG9ydCBjb25zdCBHRVRfVVNFUl9PUkRFUlMgPSBcIkdFVF9PUkRFUlNcIjtcbmV4cG9ydCBjb25zdCBSRUZVTkRfT1JERVIgPSBcIlJFRlVORF9PUkRFUlwiO1xuZXhwb3J0IGNvbnN0IFNFVF9BQ1RJVkVfT1JERVJfSUQgPSBcIlNFVF9BQ1RJVkVfT1JERVJfSURcIjtcbmV4cG9ydCBjb25zdCBGSUxURVJfVVNFUl9PUkRFUlMgPSBcIkZJTFRFUl9VU0VSX09SREVSU1wiO1xuXG4vLyBUSUNLRVRTIENPTlNUU1xuZXhwb3J0IGNvbnN0IEdFVF9NWV9BU1NJR05FRF9USUNLRVRTID0gXCJHRVRfTVlfQVNTSUdORURfVElDS0VUU1wiO1xuZXhwb3J0IGNvbnN0IFVQREFURV9USUNLRVQgPSBcIlVQREFURV9USUNLRVRcIjtcbmV4cG9ydCBjb25zdCBSRVNFVF9USUNLRVQgPSBcIlJFU0VUX1RJQ0tFVFwiO1xuZXhwb3J0IGNvbnN0IFJFQ0VJVkVfVElDS0VUID0gXCJSRUNFSVZFX1RJQ0tFVFwiO1xuZXhwb3J0IGNvbnN0IFJFTU9WRV9USUNLRVRfQVRURU5ERUUgPSBcIlJFTU9WRV9USUNLRVRfQVRURU5ERUVcIjtcbmV4cG9ydCBjb25zdCBBU1NJR05fVElDS0VUID0gXCJBU1NJR05fVElDS0VUXCI7XG5leHBvcnQgY29uc3QgUkVGVU5EX1RJQ0tFVCA9IFwiUkVGVU5EX1RJQ0tFVFwiO1xuZXhwb3J0IGNvbnN0IFJFU0VORF9OT1RJRklDQVRJT04gPSBcIlJFU0VORF9OT1RJRklDQVRJT05cIjtcbmV4cG9ydCBjb25zdCBHRVRfVElDS0VUU19CWV9PUkRFUiA9IFwiR0VUX1RJQ0tFVFNfQllfT1JERVJcIjtcbmV4cG9ydCBjb25zdCBHRVRfVElDS0VUU19CWV9PUkRFUl9FUlJPUiA9IFwiR0VUX1RJQ0tFVFNfQllfT1JERVJfRVJST1JcIjtcbmV4cG9ydCBjb25zdCBHRVRfT1JERVJfVElDS0VUX0RFVEFJTFMgPSBcIkdFVF9PUkRFUl9USUNLRVRfREVUQUlMU1wiO1xuZXhwb3J0IGNvbnN0IEdFVF9USUNLRVRfREVUQUlMUyA9IFwiR0VUX1RJQ0tFVF9ERVRBSUxTXCI7XG5leHBvcnQgY29uc3QgUkVDRUlWRV9FWFRSQV9RVUVTVElPTlMgPSBcIlJFQ0VJVkVfRVhUUkFfUVVFU1RJT05TXCI7XG5leHBvcnQgY29uc3QgVElDS0VUX0FUVEVOREVFX0tFWVMgPSB7XG4gIGVtYWlsOiBcImF0dGVuZGVlX2VtYWlsXCIsXG4gIGZpcnN0TmFtZTogXCJhdHRlbmRlZV9maXJzdF9uYW1lXCIsXG4gIGxhc3ROYW1lOiBcImF0dGVuZGVlX2xhc3RfbmFtZVwiLFxuICBjb21wYW55OiBcImF0dGVuZGVlX2NvbXBhbnlcIixcbiAgZGlzY2xhaW1lckFjY2VwdGVkOiBcImRpc2NsYWltZXJfYWNjZXB0ZWRcIixcbiAgZXh0cmFRdWVzdGlvbnM6IFwiZXh0cmFfcXVlc3Rpb25zXCJcbn07XG5leHBvcnQgY29uc3QgVVBEQVRFX1RJQ0tFVFNfUkVGVU5EX1JFUVVFU1RFRCA9XG4gIFwiVVBEQVRFX1RJQ0tFVFNfUkVGVU5EX1JFUVVFU1RFRFwiO1xuXG4vLyBVU0VSIENPTlRTXG5leHBvcnQgY29uc3QgU1RBUlRfTE9BRElOR19JRFBfUFJPRklMRSA9IFwiU1RBUlRfTE9BRElOR19JRFBfUFJPRklMRVwiO1xuZXhwb3J0IGNvbnN0IFNUT1BfTE9BRElOR19JRFBfUFJPRklMRSA9IFwiU1RPUF9MT0FESU5HX0lEUF9QUk9GSUxFXCI7XG5leHBvcnQgY29uc3QgVVBEQVRFX0lEUF9QUk9GSUxFID0gXCJVUERBVEVfSURQX1BST0ZJTEVcIjtcbmV4cG9ydCBjb25zdCBTRVRfVVNFUiA9IFwiU0VUX1VTRVJcIjtcblxuLy8gU1VNTUlUIENPTlNUU1xuZXhwb3J0IGNvbnN0IFNFVF9TVU1NSVQgPSBcIlNFVF9TVU1NSVRcIjtcbmV4cG9ydCBjb25zdCBHRVRfTUFJTl9FWFRSQV9RVUVTVElPTlMgPSBcIkdFVF9NQUlOX0VYVFJBX1FVRVNUSU9OU1wiO1xuZXhwb3J0IGNvbnN0IFJFQ0VJVkVfTUFSS0VUSU5HX1NFVFRJTkdTID0gXCJSRUNFSVZFX01BUktFVElOR19TRVRUSU5HU1wiO1xuZXhwb3J0IGNvbnN0IENMRUFSX01BUktFVElOR19TRVRUSU5HUyA9IFwiQ0xFQVJfTUFSS0VUSU5HX1NFVFRJTkdTXCI7XG5cbmV4cG9ydCBjb25zdCByZXNldFN0YXRlID0gKCkgPT4gKGRpc3BhdGNoKSA9PiB7XG4gIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihSRVNFVF9TVEFURSkoe30pKTtcbn07XG5cbmV4cG9ydCBjb25zdCByZXNldEZpbHRlciA9ICgpID0+IChkaXNwYXRjaCkgPT4ge1xuICBkaXNwYXRjaChjcmVhdGVBY3Rpb24oUkVTRVRfRklMVEVSKSh7fSkpO1xufTtcblxuZXhwb3J0IGNvbnN0IHJlc2V0RXJyb3IgPSAoKSA9PiAoZGlzcGF0Y2gpID0+IHtcbiAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKFJFU0VUX0FQSV9FUlJPUikoe30pKTtcbn07XG5cbmV4cG9ydCBjb25zdCBzZXRSZWR1Y2VyU3RhdGUgPSAoc3VtbWl0LCB1c2VyKSA9PiAoZGlzcGF0Y2gpID0+IHtcbiAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKFNFVF9TVEFURSkoeyBzdW1taXQsIHVzZXIgfSkpO1xufTtcblxuLy8gRklMVEVSIC8gU09SVCBDT05TVEFOVFNcbmV4cG9ydCBjb25zdCBGSUxURVJfVkFSX0RBVEUgPSBcIkZJTFRFUl9WQVJfREFURVwiO1xuZXhwb3J0IGNvbnN0IEZJTFRFUl9WQVJfT1JERVJfTlVNQkVSID0gXCJGSUxURVJfVkFSX09SREVSX05VTUJFUlwiO1xuXG4vLyBGSUxURVIvU09SVCBBQ1RJT05TXG5leHBvcnQgY29uc3QgcGFyc2VGaWx0ZXIgPSAoZmlsdGVyT2JqKSA9PiB7XG4gIGNvbnN0IGZpbHRlciA9IFtdO1xuICBpZiAoZmlsdGVyT2JqLnR5cGUgPT09IEZJTFRFUl9WQVJfREFURSkge1xuICAgIGZpbHRlci5wdXNoKGAke2ZpbHRlck9iai5uYW1lfVtdJHtmaWx0ZXJPYmoubG93ZXJ9JiYke2ZpbHRlck9iai51cHBlcn1gKTtcbiAgfVxuICBpZiAoZmlsdGVyT2JqLnR5cGUgPT09IEZJTFRFUl9WQVJfT1JERVJfTlVNQkVSKSB7XG4gICAgZmlsdGVyLnB1c2goYCR7ZmlsdGVyT2JqLm5hbWV9PUAke2ZpbHRlck9iai52YWx1ZX1gKTtcbiAgfVxuICByZXR1cm4gZmlsdGVyO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFNvcnREaXJlY3Rpb24gPSAoZGlyZWN0aW9uKSA9PlxuICBkaXJlY3Rpb24gPT09IFwiYXNjXCIgPyBcIitcIiA6IFwiLVwiO1xuXG4vLyBwYXlsb2FkOiB7IGh0dHBDb2RlLCB0aXRsZSwgaHRtbDogY29udGVudCwgdHlwZSB9XG5leHBvcnQgY29uc3QgZXJyb3JIYW5kbGVyTm90aWZ5ID0gKHBheWxvYWQsIGNhbGxiYWNrKSA9PiAoZGlzcGF0Y2gpID0+IHtcbiAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKFNFVF9BUElfRVJST1IpKHBheWxvYWQpKTtcbiAgaWYgKGNhbGxiYWNrKSBjYWxsYmFjaygpO1xufTtcblxuZXhwb3J0IGNvbnN0IGN1c3RvbUF1dGhFcnJvckhhbmRsZXIgPSAoZXJyLCByZXMpID0+IChkaXNwYXRjaCkgPT4ge1xuICBkaXNwYXRjaChhdXRoRXJyb3JIYW5kbGVyKGVyciwgcmVzLCBlcnJvckhhbmRsZXJOb3RpZnkpKTtcbn07XG5cbmNvbnN0IGN1c3RvbUZldGNoRXJyb3JIYW5kbGVyID0gKHJlc3BvbnNlKSA9PiAoZGlzcGF0Y2gpID0+IHtcbiAgY29uc3QgY29kZSA9IHJlc3BvbnNlLnN0YXR1cztcbiAgbGV0IG1zZztcbiAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gIHN3aXRjaCAoY29kZSkge1xuICAgIGNhc2UgRVJST1JfQ09ERVNbXCI0MDNcIl06XG4gICAgICBtc2cgPSBpMThuLnQoXCJlcnJvcnMudXNlcl9ub3RfYXV0aHpcIik7XG4gICAgICBicmVhaztcbiAgICBjYXNlIEVSUk9SX0NPREVTW1wiNDAxXCJdOlxuICAgICAgbXNnID0gaTE4bi50KFwiZXJyb3JzLnNlc3Npb25fZXhwaXJlZFwiKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgRVJST1JfQ09ERVNbXCI0MTJcIl06XG4gICAgICBtc2cgPSBcIlwiO1xuICAgICAgT2JqZWN0LmVudHJpZXMocmVzcG9uc2UuZXJyb3JzKS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgICAgaWYgKE51bWJlci5pc05hTihrZXkpKSB7XG4gICAgICAgICAgbXNnID0gYCR7bXNnfSAke2tleX06IGA7XG4gICAgICAgIH1cblxuICAgICAgICBtc2cgPSBgJHttc2d9ICR7dmFsdWV9IDxicj5gO1xuICAgICAgfSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIEVSUk9SX0NPREVTW1wiNTAwXCJdOlxuICAgICAgbXNnID0gaTE4bi50KFwiZXJyb3JzLnNlcnZlcl9lcnJvclwiKTtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICBtc2cgPSByZXNwb25zZS5zdGF0dXNUZXh0O1xuICB9XG5cbiAgZGlzcGF0Y2goZXJyb3JIYW5kbGVyTm90aWZ5KHsgdGl0bGU6IGkxOG4udChcImVycm9ycy5lcnJvclwiKSwgaHRtbDogbXNnIH0pKTtcbn07XG5cbi8vIE9SREVSUyBBQ1RJT05TXG5leHBvcnQgY29uc3QgZ2V0VXNlck9yZGVycyA9XG4gICh7XG4gICAgcGFnZSA9IEZJUlNUX1BBR0UsXG4gICAgcGVyUGFnZSA9IERFRkFVTFRfSVRFTVNfUEVSX1BBR0UsXG4gICAgZmlsdGVyID0ge30sXG4gICAgc29ydCA9IHt9XG4gIH0pID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgd2lkZ2V0U3RhdGU6IHsgc3VtbWl0IH1cbiAgICB9ID0gZ2V0U3RhdGUoKTtcblxuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKS5jYXRjaCgoKSA9PlxuICAgICAgUHJvbWlzZS5yZWplY3QoKVxuICAgICk7XG5cbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIG9yZGVyOiBcIi1pZFwiLFxuICAgICAgXCJmaWx0ZXJbXVwiOiBbXCJzdGF0dXM9PVBhaWRcIl0sXG4gICAgICByZWxhdGlvbnM6IFwibm9uZVwiLFxuICAgICAgcGFnZSxcbiAgICAgIHBlcl9wYWdlOiBwZXJQYWdlXG4gICAgfTtcblxuICAgIGlmIChPYmplY3Qua2V5cyhmaWx0ZXIpLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGZpbHRlcnMgPSBwYXJzZUZpbHRlcihmaWx0ZXIpO1xuICAgICAgcGFyYW1zW1wiZmlsdGVyW11cIl0gPSBbLi4ucGFyYW1zW1wiZmlsdGVyW11cIl0sIC4uLmZpbHRlcnNdO1xuICAgIH1cbiAgICBpZiAoT2JqZWN0LmtleXMoc29ydCkubGVuZ3RoID4gMCkge1xuICAgICAgcGFyYW1zLm9yZGVyID0gYCR7Z2V0U29ydERpcmVjdGlvbihzb3J0LmRpcmVjdGlvbil9JHtzb3J0Lm5hbWV9YDtcbiAgICB9XG5cbiAgICByZXR1cm4gZ2V0UmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oR0VUX1VTRVJfT1JERVJTKSxcbiAgICAgIGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzLyR7c3VtbWl0LmlkfS9vcmRlcnMvbWVgLFxuICAgICAgY3VzdG9tQXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaClcbiAgICAgIC50aGVuKChwYXlsb2FkKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIHJldHVybiBlO1xuICAgICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCBzZXRBY3RpdmVPcmRlcklkID0gKG9yZGVySWQpID0+IGFzeW5jIChkaXNwYXRjaCkgPT5cbiAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKFNFVF9BQ1RJVkVfT1JERVJfSUQpKG9yZGVySWQpKTtcblxuLy8gVVNFUiBBQ1RJT05TXG5leHBvcnQgY29uc3Qgc2V0VXNlciA9ICh1c2VyKSA9PiAoZGlzcGF0Y2gpID0+XG4gIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihTRVRfVVNFUikodXNlcikpO1xuXG4vLyBUSUNLRVQgQUNUSU9OU1xuXG5leHBvcnQgY29uc3QgZ2V0VXNlclRpY2tldHMgPVxuICAoeyBwYWdlID0gRklSU1RfUEFHRSwgcGVyUGFnZSA9IERFRkFVTFRfSVRFTVNfUEVSX1BBR0UgfSkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCB7XG4gICAgICB3aWRnZXRTdGF0ZTogeyBzdW1taXQgfVxuICAgIH0gPSBnZXRTdGF0ZSgpO1xuICAgIGlmICghc3VtbWl0KSByZXR1cm4gUHJvbWlzZS5yZWplY3QoKTtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCkuY2F0Y2goKCkgPT5cbiAgICAgIFByb21pc2UucmVqZWN0KClcbiAgICApO1xuICAgIGNvbnN0IGZpZWxkcyA9IFtcbiAgICAgIFwib3JkZXIuaWRcIixcbiAgICAgIFwib3JkZXIub3duZXJfZmlyc3RfbmFtZVwiLFxuICAgICAgXCJvcmRlci5vd25lcl9sYXN0X25hbWVcIixcbiAgICAgIFwib3JkZXIub3duZXJfZW1haWxcIixcbiAgICAgIFwib3duZXIuaWRcIixcbiAgICAgIFwib3duZXIuZW1haWxcIixcbiAgICAgIFwib3duZXIuZmlyc3RfbmFtZVwiLFxuICAgICAgXCJvd25lci5sYXN0X25hbWVcIixcbiAgICAgIFwib3duZXIuc3RhdHVzXCJcbiAgICBdO1xuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgZmlsdGVyOiBcInN0YXR1cz09UGFpZFwiLFxuICAgICAgZXhwYW5kOiBcIm9yZGVyLG93bmVyLHRpY2tldF90eXBlXCIsXG4gICAgICBvcmRlcjogXCItaWRcIixcbiAgICAgIGZpZWxkczogZmllbGRzLmpvaW4oXCIsXCIpLFxuICAgICAgcmVsYXRpb25zOiBcIm5vbmVcIixcbiAgICAgIHBhZ2UsXG4gICAgICBwZXJfcGFnZTogcGVyUGFnZVxuICAgIH07XG4gICAgcmV0dXJuIGdldFJlcXVlc3QoXG4gICAgICBudWxsLFxuICAgICAgY3JlYXRlQWN0aW9uKEdFVF9NWV9BU1NJR05FRF9USUNLRVRTKSxcbiAgICAgIGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzLyR7c3VtbWl0LmlkfS9vcmRlcnMvYWxsL3RpY2tldHMvbWVgLFxuICAgICAgY3VzdG9tQXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaClcbiAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICByZXR1cm4gZTtcbiAgICAgIH0pO1xuICB9O1xuXG5leHBvcnQgY29uc3QgZ2V0VGlja2V0c0J5T3JkZXIgPVxuICAoeyBvcmRlcklkLCBwYWdlID0gRklSU1RfUEFHRSwgcGVyUGFnZSA9IERFRkFVTFRfSVRFTVNfUEVSX1BBR0UgfSkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpLmNhdGNoKCgpID0+XG4gICAgICBQcm9taXNlLnJlamVjdCgpXG4gICAgKTtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgICBleHBhbmQ6XG4gICAgICAgIFwicmVmdW5kX3JlcXVlc3RzLG93bmVyLG93bmVyLmV4dHJhX3F1ZXN0aW9ucyxiYWRnZSxiYWRnZS5mZWF0dXJlcyx0aWNrZXRfdHlwZVwiLFxuICAgICAgb3JkZXI6IFwiK2lkXCIsXG4gICAgICBwYWdlLFxuICAgICAgcGVyX3BhZ2U6IHBlclBhZ2VcbiAgICB9O1xuICAgIHJldHVybiBnZXRSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihHRVRfVElDS0VUU19CWV9PUkRFUiksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy9hbGwvb3JkZXJzLyR7b3JkZXJJZH0vdGlja2V0c2AsXG4gICAgICBjdXN0b21BdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKVxuICAgICAgLnRoZW4oKHBheWxvYWQpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKEdFVF9USUNLRVRTX0JZX09SREVSX0VSUk9SKSk7XG4gICAgICAgIHJldHVybiBlO1xuICAgICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCByZXNlbmROb3RpZmljYXRpb24gPVxuICAodGlja2V0KSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKS5jYXRjaCgoKSA9PlxuICAgICAgUHJvbWlzZS5yZWplY3QoKVxuICAgICk7XG5cbiAgICBjb25zdCB7IG1lc3NhZ2UgfSA9IHRpY2tldDtcblxuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcblxuICAgIGNvbnN0IG9yZGVySWQgPSB0aWNrZXQub3JkZXIgPyB0aWNrZXQub3JkZXIuaWQgOiB0aWNrZXQub3JkZXJfaWQ7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuXG4gICAgfTtcblxuICAgIHJldHVybiBwdXRSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihSRVNFTkRfTk9USUZJQ0FUSU9OKSxcbiAgICAgIGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzL2FsbC9vcmRlcnMvJHtvcmRlcklkfS90aWNrZXRzLyR7dGlja2V0LmlkfS9hdHRlbmRlZS9yZWludml0ZWAsXG4gICAgICB7IG1lc3NhZ2UgfSxcbiAgICAgIGN1c3RvbUF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpXG4gICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgcmV0dXJuIGU7XG4gICAgICB9KTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IHJlZnVuZFRpY2tldCA9XG4gICh7IHRpY2tldCB9KSA9PlxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCkuY2F0Y2goKCkgPT5cbiAgICAgIFByb21pc2UucmVqZWN0KClcbiAgICApO1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuXG4gICAgY29uc3Qgb3JkZXJJZCA9IHRpY2tldC5vcmRlciA/IHRpY2tldC5vcmRlci5pZCA6IHRpY2tldC5vcmRlcl9pZDtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgICBleHBhbmQ6IFwicmVmdW5kX3JlcXVlc3RzLHRpY2tldF90eXBlXCIsXG4gICAgICBmaWVsZHM6IFwicmVmdW5kX3JlcXVlc3RzLnN0YXR1c1wiXG4gICAgfTtcblxuICAgIHJldHVybiBkZWxldGVSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihSRUZVTkRfVElDS0VUKSxcbiAgICAgIGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzL2FsbC9vcmRlcnMvJHtvcmRlcklkfS90aWNrZXRzLyR7dGlja2V0LmlkfS9yZWZ1bmRgLFxuICAgICAge30sXG4gICAgICBjdXN0b21BdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKVxuICAgICAgLnRoZW4oKHBheWxvYWQpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgcmV0dXJuIGU7XG4gICAgICB9KTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IHJlZnVuZEJ1bGtUaWNrZXRzID1cbiAgKHsgdGlja2V0cyB9KSA9PlxuICBhc3luYyAoZGlzcGF0Y2gpID0+IHtcbiAgICBjb25zdCBsaW1pdCA9IHBMaW1pdChQUk9NSVNFX0JBVENIX0xJTUlUKTtcbiAgICBjb25zdCBhbGxSZWZ1bmRUaWNrZXRDYWxscyA9IHRpY2tldHMubWFwKCh0aWNrZXQpID0+XG4gICAgICBsaW1pdCgoKSA9PiBkaXNwYXRjaChyZWZ1bmRUaWNrZXQoeyB0aWNrZXQgfSkpKVxuICAgICk7XG4gICAgcmV0dXJuIFByb21pc2UuYWxsKFsuLi5hbGxSZWZ1bmRUaWNrZXRDYWxsc10pXG4gICAgICAudGhlbigocmVzKSA9PiB7XG4gICAgICAgIGNvbnN0IHN1Y2Nlc3NmdWxseVJlcXVlc3RlZCA9IHJlc1xuICAgICAgICAgIC5maWx0ZXIoKHIpID0+IHIucmVzcG9uc2U/LnJlZnVuZF9yZXF1ZXN0cz8ubGVuZ3RoKVxuICAgICAgICAgIC5tYXAoKHIpID0+IHIucmVzcG9uc2UpO1xuICAgICAgICByZXR1cm4gc3VjY2Vzc2Z1bGx5UmVxdWVzdGVkO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZSkgPT4gZSk7XG4gIH07XG5cbi8vIHVwZGF0ZSB0aGUgdGlja2V0cyB0aGF0IGhhdmUgYmVlbiBzdWNlc3NmdWxseSByZWZ1bmRlZFxuZXhwb3J0IGNvbnN0IHVwZGF0ZVRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWQgPVxuICAodGlja2V0c1JlZnVuZFJlcXVlc3RlZCkgPT4gKGRpc3BhdGNoKSA9PlxuICAgIGRpc3BhdGNoKFxuICAgICAgY3JlYXRlQWN0aW9uKFVQREFURV9USUNLRVRTX1JFRlVORF9SRVFVRVNURUQpKHRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWQpXG4gICAgKTtcblxuLy8gU1VNTUlUIEFDVElPTlNcblxuZXhwb3J0IGNvbnN0IGdldEV4dHJhUXVlc3Rpb25zID1cbiAgKGF0dGVuZGVlSWQpID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgd2lkZ2V0U3RhdGU6IHsgc3VtbWl0IH1cbiAgICB9ID0gZ2V0U3RhdGUoKTtcblxuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKS5jYXRjaCgoKSA9PlxuICAgICAgUHJvbWlzZS5yZWplY3QoKVxuICAgICk7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBwYWdlOiAxLFxuICAgICAgcGVyX3BhZ2U6IEZJRlRZX1BFUl9QQUdFLFxuICAgICAgZXhwYW5kOiBcIipzdWJfcXVlc3Rpb25fcnVsZXMsKnN1Yl9xdWVzdGlvbiwqdmFsdWVzXCIsXG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgXCJmaWx0ZXJbXVwiOiBcInRpY2tldHNfZXhjbHVkZV9pbmFjdGl2ZXM9PXRydWVcIlxuICAgIH07XG5cbiAgICBjb25zdCBlbmRwb2ludCA9IGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzLyR7c3VtbWl0LmlkfS9hdHRlbmRlZXMvJHthdHRlbmRlZUlkfS9hbGxvd2VkLWV4dHJhLXF1ZXN0aW9uc2A7XG5cbiAgICByZXR1cm4gZ2V0UmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oUkVDRUlWRV9FWFRSQV9RVUVTVElPTlMpLFxuICAgICAgZW5kcG9pbnQsXG4gICAgICBjdXN0b21BdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKS50aGVuKCgpID0+IHtcbiAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgIH0pO1xuICB9O1xuXG5leHBvcnQgY29uc3QgZ2V0VGlja2V0ID1cbiAgKHRpY2tldElkLCBvcmRlcklkKSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKS5jYXRjaCgoKSA9PlxuICAgICAgUHJvbWlzZS5yZWplY3QoKVxuICAgICk7XG5cbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgZXhwYW5kOlxuICAgICAgICBcIm93bmVyLG93bmVyLmV4dHJhX3F1ZXN0aW9ucyxvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24sdGlja2V0X3R5cGUsb3JkZXJcIixcbiAgICAgIHJlbGF0aW9uczogXCJvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24ubm9uZVwiLFxuICAgICAgZmllbGRzOlxuICAgICAgICBcIm93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi5pZCxvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24ubmFtZSxvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24udHlwZVwiXG4gICAgfTtcblxuICAgIGNvbnN0IGVuZHBvaW50ID0gYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvYWxsL29yZGVycy8ke29yZGVySWR9L3RpY2tldHMvJHt0aWNrZXRJZH1gO1xuXG4gICAgcmV0dXJuIGdldFJlcXVlc3QoXG4gICAgICBudWxsLFxuICAgICAgY3JlYXRlQWN0aW9uKFJFQ0VJVkVfVElDS0VUKSxcbiAgICAgIGVuZHBvaW50LFxuICAgICAgY3VzdG9tQXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaCkuZmluYWxseSgoKSA9PiB7XG4gICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICB9KTtcbiAgfTtcblxuY29uc3Qgbm9ybWFsaXplVGlja2V0ID0gKGVudGl0eSkgPT4ge1xuICBjb25zdCBub3JtYWxpemVkRW50aXR5ID0geyAuLi5lbnRpdHkgfTtcblxuICBpZiAoIWVudGl0eS5hdHRlbmRlZV9jb21wYW55LmlkKSB7XG4gICAgbm9ybWFsaXplZEVudGl0eS5hdHRlbmRlZV9jb21wYW55ID0gZW50aXR5LmF0dGVuZGVlX2NvbXBhbnk7XG4gIH0gZWxzZSB7XG4gICAgZGVsZXRlIG5vcm1hbGl6ZWRFbnRpdHkuYXR0ZW5kZWVfY29tcGFueTtcbiAgICBub3JtYWxpemVkRW50aXR5LmF0dGVuZGVlX2NvbXBhbnlfaWQgPSBlbnRpdHkuYXR0ZW5kZWVfY29tcGFueS5pZDtcbiAgfVxuXG4gIHJldHVybiBub3JtYWxpemVkRW50aXR5O1xufTtcblxuZXhwb3J0IGNvbnN0IHJlZnJlc2hQcm9maWxlID1cbiAgKGRhdGEsIGNvbXBhbnksIHRpY2tldE93bmVyKSA9PlxuICAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IHVwZGF0ZVByb2ZpbGUgfSkgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIHdpZGdldFN0YXRlOiB7IHVzZXIgfVxuICAgIH0gPSBnZXRTdGF0ZSgpO1xuICAgIGNvbnN0IHsgdXNlclByb2ZpbGUgfSA9IHVzZXI7XG5cbiAgICAvLyBlbWFpbCBzaG91bGQgbWF0Y2ggKCBvbmx5IHVwZGF0ZSBteSBwcm9maWxlIGlzIHRpY2tldCBiZWxvbmdzIHRvIG1lISlcbiAgICAvLyBhbmQgaWYgdGhlIHRpY2tldCBkb2Vzbid0IGhhdmUgYSBtYW5hZ2VyXG4gICAgLy8gQ2hlY2sgaWYgdGhlcmUncyBjaGFuZ2VzIGluIHRoZSB0aWNrZXQgZGF0YSB0byB1cGRhdGUgdGhlIHByb2ZpbGVcbiAgICBjb25zdCB7XG4gICAgICBhdHRlbmRlZV9lbWFpbCxcbiAgICAgIGF0dGVuZGVlX2ZpcnN0X25hbWUsXG4gICAgICBhdHRlbmRlZV9sYXN0X25hbWUsXG4gICAgICBhdHRlbmRlZV9jb21wYW55XG4gICAgfSA9IGRhdGE7XG4gICAgY29uc3QgaGFzTWFuYWdlciA9IHRpY2tldE93bmVyPy5tYW5hZ2VyPy5pZCB8fCB0aWNrZXRPd25lcj8ubWFuYWdlcl9pZDtcbiAgICBjb25zdCBpdHNNZSA9IHVzZXJQcm9maWxlLmVtYWlsID09PSBhdHRlbmRlZV9lbWFpbDtcbiAgICBjb25zdCBwcm9maWxlQ2hhbmdlZCA9XG4gICAgICBhdHRlbmRlZV9jb21wYW55Lm5hbWUgIT09IGNvbXBhbnkgfHxcbiAgICAgIGF0dGVuZGVlX2ZpcnN0X25hbWUgIT09IHVzZXJQcm9maWxlLmZpcnN0X25hbWUgfHxcbiAgICAgIGF0dGVuZGVlX2xhc3RfbmFtZSAhPT0gdXNlclByb2ZpbGUubGFzdF9uYW1lO1xuXG4gICAgaWYgKGl0c01lICYmICFoYXNNYW5hZ2VyICYmIHByb2ZpbGVDaGFuZ2VkKSB7XG4gICAgICBjb25zdCBuZXdQcm9maWxlID0ge1xuICAgICAgICBmaXJzdF9uYW1lOiBhdHRlbmRlZV9maXJzdF9uYW1lLFxuICAgICAgICBsYXN0X25hbWU6IGF0dGVuZGVlX2xhc3RfbmFtZSxcbiAgICAgICAgY29tcGFueTogYXR0ZW5kZWVfY29tcGFueS5uYW1lIHx8IGF0dGVuZGVlX2NvbXBhbnlcbiAgICAgIH07XG5cbiAgICAgIC8vIHRoaXMgaXMgYSBjYWxsYmFjayBtZXRob2QgdGhhdCB1cGRhdGVzIHVzZXJQcm9maWxlIGluIEFQSSBhbmQgZXZlbnQtc2l0ZVxuICAgICAgdXBkYXRlUHJvZmlsZShuZXdQcm9maWxlKTtcbiAgICB9XG4gIH07XG5cbmV4cG9ydCBjb25zdCBzYXZlVGlja2V0RGV0YWlscyA9XG4gICh0aWNrZXQsIGFuc3dlcnMpID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpLmNhdGNoKFByb21pc2UucmVqZWN0KTtcblxuICAgIGlmICghYWNjZXNzVG9rZW4pIHJldHVybiBQcm9taXNlLnJlamVjdCgpO1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIGV4cGFuZDpcbiAgICAgICAgXCJyZWZ1bmRfcmVxdWVzdHMsb3duZXIsb3duZXIuZXh0cmFfcXVlc3Rpb25zLGJhZGdlLGJhZGdlLmZlYXR1cmVzLHRpY2tldF90eXBlXCJcbiAgICB9O1xuXG4gICAgY29uc3QgaWRUb2tlbiA9IGdldElkVG9rZW4oKTtcbiAgICBsZXQgY29tcGFueSA9IFwiXCI7XG4gICAgaWYgKGlkVG9rZW4pIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHZlcmlmaWVyID0gbmV3IElkVG9rZW5WZXJpZmllcigpO1xuICAgICAgICBjb25zdCBqd3QgPSB2ZXJpZmllci5kZWNvZGUoaWRUb2tlbik7XG4gICAgICAgIGNvbXBhbnkgPSBqd3QucGF5bG9hZC5jb21wYW55O1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBjb25zb2xlLmxvZyhcImVycm9yXCIsIGUpO1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBub3JtYWxpemVkRW50aXR5ID0gbm9ybWFsaXplVGlja2V0KGFuc3dlcnMpO1xuXG4gICAgcmV0dXJuIHB1dFJlcXVlc3QoXG4gICAgICBudWxsLFxuICAgICAgY3JlYXRlQWN0aW9uKFVQREFURV9USUNLRVQpLFxuICAgICAgYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvYWxsL29yZGVycy9hbGwvdGlja2V0cy8ke3RpY2tldC5pZH1gLFxuICAgICAgbm9ybWFsaXplZEVudGl0eSxcbiAgICAgIGN1c3RvbUF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpXG4gICAgICAudGhlbihhc3luYyAoKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHJlZnJlc2hQcm9maWxlKGFuc3dlcnMsIGNvbXBhbnksIHRpY2tldC5vd25lcikpO1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIHJldHVybiBlO1xuICAgICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCBhc3NpZ25BdHRlbmRlZSA9XG4gIChvcmRlcklkLCB0aWNrZXRJZCwgYXR0ZW5kZWVfZW1haWwsIG1lc3NhZ2UgPSBudWxsKSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKS5jYXRjaChQcm9taXNlLnJlamVjdCk7XG5cbiAgICBjb25zdCBwYXlsb2FkID0geyBhdHRlbmRlZV9lbWFpbCB9O1xuICAgIGlmIChtZXNzYWdlKSBwYXlsb2FkLm1lc3NhZ2UgPSBtZXNzYWdlO1xuXG4gICAgaWYgKCFhY2Nlc3NUb2tlbikgcmV0dXJuIFByb21pc2UucmVqZWN0KCk7XG5cbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgZXhwYW5kOlxuICAgICAgICBcIm93bmVyLG93bmVyLmV4dHJhX3F1ZXN0aW9ucyxvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24sdGlja2V0X3R5cGUsb3JkZXJcIixcbiAgICAgIHJlbGF0aW9uczogXCJvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24ubm9uZVwiLFxuICAgICAgZmllbGRzOlxuICAgICAgICBcIm93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi5pZCxvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24ubmFtZSxvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24udHlwZVwiXG4gICAgfTtcblxuICAgIHJldHVybiBwdXRSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihBU1NJR05fVElDS0VUKSxcbiAgICAgIGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzL2FsbC9vcmRlcnMvJHtvcmRlcklkfS90aWNrZXRzLyR7dGlja2V0SWR9L2F0dGVuZGVlYCxcbiAgICAgIHBheWxvYWQsXG4gICAgICBjdXN0b21BdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKS5maW5hbGx5KCgpID0+IHtcbiAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgIH0pO1xuICB9O1xuXG5leHBvcnQgY29uc3QgcmVhc3NpZ25UaWNrZXQgPVxuICAob3JkZXJJZCwgdGlja2V0SWQsIGVtYWlsLCBtZXNzYWdlKSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKS5jYXRjaChQcm9taXNlLnJlamVjdCk7XG5cbiAgICBpZiAoIWFjY2Vzc1Rva2VuKSByZXR1cm4gUHJvbWlzZS5yZWplY3QoKTtcblxuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgICBleHBhbmQ6IFwib3JkZXIsIG93bmVyLCBvd25lci5leHRyYV9xdWVzdGlvbnMsIG9yZGVyLnN1bW1pdFwiXG4gICAgfTtcblxuICAgIHJldHVybiBkZWxldGVSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihSRU1PVkVfVElDS0VUX0FUVEVOREVFKSxcbiAgICAgIGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzL2FsbC9vcmRlcnMvJHtvcmRlcklkfS90aWNrZXRzLyR7dGlja2V0SWR9L2F0dGVuZGVlYCxcbiAgICAgIHt9LFxuICAgICAgY3VzdG9tQXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaCkudGhlbigoKSA9PlxuICAgICAgZGlzcGF0Y2goYXNzaWduQXR0ZW5kZWUob3JkZXJJZCwgdGlja2V0SWQsIGVtYWlsLCBtZXNzYWdlKSlcbiAgICApO1xuICB9O1xuXG5leHBvcnQgY29uc3Qgc2F2ZUV4dHJhUXVlc3Rpb25zID1cbiAgKHRpY2tldCwgYW5zd2VycykgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCkuY2F0Y2goUHJvbWlzZS5yZWplY3QpO1xuXG4gICAgaWYgKCFhY2Nlc3NUb2tlbikgcmV0dXJuIFByb21pc2UucmVqZWN0KCk7XG5cbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgZXhwYW5kOlxuICAgICAgICBcInJlZnVuZF9yZXF1ZXN0cyxvd25lcixvd25lci5leHRyYV9xdWVzdGlvbnMsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLGJhZGdlLGJhZGdlLmZlYXR1cmVzLHRpY2tldF90eXBlLG9yZGVyXCIsXG4gICAgICByZWxhdGlvbnM6IFwib3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLm5vbmVcIixcbiAgICAgIGZpZWxkczpcbiAgICAgICAgXCJvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24uaWQsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLm5hbWUsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLnR5cGVcIlxuICAgIH07XG5cbiAgICByZXR1cm4gcHV0UmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oVVBEQVRFX1RJQ0tFVCksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy9hbGwvb3JkZXJzL2FsbC90aWNrZXRzLyR7dGlja2V0LmlkfWAsXG4gICAgICBhbnN3ZXJzLFxuICAgICAgY3VzdG9tQXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaClcbiAgICAgIC50aGVuKGFzeW5jICgpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICByZXR1cm4gZTtcbiAgICAgIH0pO1xuICB9O1xuXG5leHBvcnQgY29uc3QgZ2V0VGlja2V0UERGID1cbiAgKHRpY2tldCkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCkuY2F0Y2goUHJvbWlzZS5yZWplY3QpO1xuXG4gICAgaWYgKCFhY2Nlc3NUb2tlbikgcmV0dXJuIFByb21pc2UucmVqZWN0KCk7XG5cbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuXG4gICAgfTtcblxuICAgIGNvbnN0IG9yZGVySWQgPSB0aWNrZXQub3JkZXIgPyB0aWNrZXQub3JkZXIuaWQgOiB0aWNrZXQub3JkZXJfaWQ7XG5cbiAgICBjb25zdCBxdWVyeVN0cmluZyA9IG9iamVjdFRvUXVlcnlTdHJpbmcocGFyYW1zKTtcbiAgICBjb25zdCBhcGlVcmwgPSBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy9hbGwvb3JkZXJzLyR7b3JkZXJJZH0vdGlja2V0cy8ke3RpY2tldC5pZH0vcGRmPyR7cXVlcnlTdHJpbmd9YDtcblxuICAgIHJldHVybiBmZXRjaChhcGlVcmwsIHtcbiAgICAgIHJlc3BvbnNlVHlwZTogXCJCbG9iXCIsXG4gICAgICBoZWFkZXJzOiB7IFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vcGRmXCIgfVxuICAgIH0pXG4gICAgICAudGhlbigocmVzcG9uc2UpID0+IHtcbiAgICAgICAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICAgIHRocm93IHJlc3BvbnNlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiByZXNwb25zZS5ibG9iKCk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICAudGhlbigocGRmKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICBjb25zdCBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImFcIik7XG4gICAgICAgIGNvbnN0IHVybCA9IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKHBkZik7XG4gICAgICAgIGxpbmsuaHJlZiA9IHVybDtcbiAgICAgICAgbGluay5kb3dubG9hZCA9IFwidGlja2V0LnBkZlwiO1xuICAgICAgICBsaW5rLmRpc3BhdGNoRXZlbnQobmV3IE1vdXNlRXZlbnQoXCJjbGlja1wiKSk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKGN1c3RvbUZldGNoRXJyb3JIYW5kbGVyKTtcbiAgfTtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTcgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VGb3JtaWsgfSBmcm9tIFwiZm9ybWlrXCI7XG5pbXBvcnQgRXh0cmFRdWVzdGlvbnNGaWVsZHMgZnJvbSBcIi4uL0V4dHJhUXVlc3Rpb25zRmllbGRzXCI7XG5pbXBvcnQgRm9ybUZvb3RlciBmcm9tIFwiLi4vRm9ybUZvb3RlclwiO1xuaW1wb3J0IHVzZVNjcm9sbFRvRXJyb3IgZnJvbSBcIi4uLy4uL2hvb2tzL3VzZVNjcm9sbFRvRXJyb3JcIjtcbmltcG9ydCBSZWdpc3RyYXRpb25EaXNjbGFpbWVyIGZyb20gXCIuLi9UaWNrZXREZXRhaWwvY29tcG9uZW50cy9SZWdpc3RyYXRpb25EaXNjbGFpbWVyL1JlZ2lzdHJhdGlvbkRpc2NsYWltZXJcIjtcbmltcG9ydCB7IGJ1aWxkVmFsaWRhdGlvblNjaGVtYSwgcGFyc2VBbnN3ZXJzIH0gZnJvbSBcIi4uLy4uL3V0aWxzL3RpY2tldFV0aWxzXCI7XG5cbmNvbnN0IEFzc2lnbkVRRm9ybSA9ICh7XG4gIHRpY2tldCxcbiAgc3VtbWl0LFxuICBleHRyYVF1ZXN0aW9ucyxcbiAgb25TdWJtaXQsXG4gIG9uQ2xvc2Vcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuXG4gIGNvbnN0IGZvcm1payA9IHVzZUZvcm1payh7XG4gICAgaW5pdGlhbFZhbHVlczogcGFyc2VBbnN3ZXJzKFxuICAgICAgdGlja2V0Lm93bmVyLFxuICAgICAgZXh0cmFRdWVzdGlvbnMsXG4gICAgICB7fSxcbiAgICAgIG51bGwsXG4gICAgICBmYWxzZSxcbiAgICAgIGZhbHNlLFxuICAgICAgdHJ1ZVxuICAgICksXG4gICAgdmFsaWRhdGlvblNjaGVtYTogYnVpbGRWYWxpZGF0aW9uU2NoZW1hKFxuICAgICAgZXh0cmFRdWVzdGlvbnMsXG4gICAgICBmYWxzZSxcbiAgICAgIGZhbHNlLFxuICAgICAgc3VtbWl0LnJlZ2lzdHJhdGlvbl9kaXNjbGFpbWVyX21hbmRhdG9yeVxuICAgICksXG4gICAgb25TdWJtaXQ6ICh2YWx1ZXMpID0+IHtcbiAgICAgIGNvbnN0IHJlbGV2YW50QW5zd2VycyA9IHBhcnNlQW5zd2VycyhcbiAgICAgICAgdGlja2V0Lm93bmVyLFxuICAgICAgICBleHRyYVF1ZXN0aW9ucyxcbiAgICAgICAgdmFsdWVzLFxuICAgICAgICBudWxsLFxuICAgICAgICBmYWxzZSxcbiAgICAgICAgZmFsc2UsXG4gICAgICAgIHRydWUsXG4gICAgICAgIHRydWVcbiAgICAgICk7XG4gICAgICByZXR1cm4gb25TdWJtaXQocmVsZXZhbnRBbnN3ZXJzKTtcbiAgICB9LFxuICAgIGVuYWJsZVJlaW5pdGlhbGl6ZTogdHJ1ZVxuICB9KTtcblxuICAvLyBTQ1JPTEwgVE8gRVJST1JcbiAgdXNlU2Nyb2xsVG9FcnJvcihmb3JtaWssIFwicmVhc3NpZ25EcmF3ZXJcIik7XG5cbiAgaWYgKGV4dHJhUXVlc3Rpb25zPy5sZW5ndGggPT09IDApIHJldHVybiBudWxsO1xuXG4gIHJldHVybiAoXG4gICAgPGZvcm0gb25TdWJtaXQ9e2Zvcm1pay5oYW5kbGVTdWJtaXR9IG5vVmFsaWRhdGU+XG4gICAgICA8Qm94PlxuICAgICAgICA8RXh0cmFRdWVzdGlvbnNGaWVsZHMgZXh0cmFRdWVzdGlvbnM9e2V4dHJhUXVlc3Rpb25zfSBmb3JtaWs9e2Zvcm1pa30gLz5cbiAgICAgICAge3N1bW1pdC5yZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9jb250ZW50ICYmIChcbiAgICAgICAgICA8UmVnaXN0cmF0aW9uRGlzY2xhaW1lclxuICAgICAgICAgICAgZm9ybWlrPXtmb3JtaWt9XG4gICAgICAgICAgICBkaXNjbGFpbWVyPXtzdW1taXQucmVnaXN0cmF0aW9uX2Rpc2NsYWltZXJfY29udGVudH1cbiAgICAgICAgICAgIGlzUmVxdWlyZWQ9e3N1bW1pdC5yZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9tYW5kYXRvcnl9XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgIDwvQm94PlxuICAgICAgPEZvcm1Gb290ZXJcbiAgICAgICAgc2F2ZUxhYmVsPXt0KFwidGlja2V0X2Fzc2lnbl9lcS5zYXZlXCIpfVxuICAgICAgICBjYW5jZWxMYWJlbD17dChcInRpY2tldF9hc3NpZ25fZXEuY2FuY2VsXCIpfVxuICAgICAgICBvbkNsb3NlPXtvbkNsb3NlfVxuICAgICAgICBkaXNhYmxlZD17Zm9ybWlrLmlzU3VibWl0dGluZ31cbiAgICAgIC8+XG4gICAgPC9mb3JtPlxuICApO1xufTtcblxuQXNzaWduRVFGb3JtLnByb3BUeXBlcyA9IHtcbiAgdGlja2V0OiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBleHRyYVF1ZXN0aW9uczogUHJvcFR5cGVzLmFycmF5LmlzUmVxdWlyZWQsXG4gIG9uU3VibWl0OiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkXG59O1xuXG5leHBvcnQgZGVmYXVsdCBBc3NpZ25FUUZvcm07XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgQ29udGVudENvcHlJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0NvbnRlbnRDb3B5XCI7XG5pbXBvcnQgeyBUb29sdGlwIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IE1JTExJU0VDX1RPX1NFQyB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcblxuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBkZWZhdWx0V2lkdGggPSA5MDtcblxuY29uc3QgQ29weVRleHQgPSAoe1xuICB0ZXh0LFxuICB0b29sdGlwVGV4dCxcbiAgaGlkZUNvcHkgPSBmYWxzZSxcbiAgdHJ1bmNhdGVkID0gdHJ1ZSxcbiAgcmV2ZXJzZWQgPSBmYWxzZSxcbiAgd2lkdGggPSBkZWZhdWx0V2lkdGhcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCB0b29sdGlwVGV4dFRvVXNlID0gdG9vbHRpcFRleHQgfHwgdChcImdlbmVyYWwuY29weV90b19jbGlwYm9hcmRcIik7XG4gIGNvbnN0IFt0b29sdGlwLCBzZXRUb29sdGlwXSA9IFJlYWN0LnVzZVN0YXRlKHRvb2x0aXBUZXh0VG9Vc2UpO1xuICBjb25zdCBjbGFzc05hbWVzID0gYCR7dHJ1bmNhdGVkICYmIHN0eWxlcy50cnVuY2F0ZWR9ICR7XG4gICAgcmV2ZXJzZWQgJiYgc3R5bGVzLnJldmVyc2VkXG4gIH1gO1xuXG4gIGNvbnN0IGhhbmRsZUNvcHkgPSAoKSA9PiB7XG4gICAgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQodGV4dCk7XG4gICAgc2V0VG9vbHRpcCh0KFwiZ2VuZXJhbC5jb3BpZWRcIikpO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgc2V0VG9vbHRpcCh0b29sdGlwVGV4dFRvVXNlKTtcbiAgICB9LCBNSUxMSVNFQ19UT19TRUMpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy53cmFwcGVyfT5cbiAgICAgIDxzcGFuIGNsYXNzTmFtZT17Y2xhc3NOYW1lc30gc3R5bGU9e3sgd2lkdGggfX0+XG4gICAgICAgIHt0ZXh0fVxuICAgICAgPC9zcGFuPlxuICAgICAgeyFoaWRlQ29weSAmJiAoXG4gICAgICAgIDxUb29sdGlwIHRpdGxlPXt0b29sdGlwfT5cbiAgICAgICAgICA8Q29udGVudENvcHlJY29uXG4gICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5jb3B5SWNvbn1cbiAgICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZUNvcHl9XG4gICAgICAgICAgICBkYXRhLXRlc3RpZD1cImNvcHktbnVtYmVyLWJ1dHRvblwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgKX1cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbkNvcHlUZXh0LnByb3BUeXBlcyA9IHtcbiAgdGV4dDogUHJvcFR5cGVzLnN0cmluZyxcbiAgdG9vbHRpcFRleHQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGhpZGVDb3B5OiBQcm9wVHlwZXMuYm9vbCxcbiAgdHJ1bmNhdGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgcmV2ZXJzZWQ6IFByb3BUeXBlcy5ib29sLFxuICB3aWR0aDogUHJvcFR5cGVzLm51bWJlclxufTtcblxuZXhwb3J0IGRlZmF1bHQgQ29weVRleHQ7XG4iLCJpbXBvcnQgeyBjcmVhdGVDb250ZXh0IH0gZnJvbSBcInJlYWN0XCI7XG5cbmNvbnN0IGRlZmF1bHRDb250ZXh0VmFsdWUgPSB7XG4gIHNldE1lc3NhZ2U6ICgpID0+IHt9LFxuICBzZXRNZXNzYWdlQ2FsbGJhY2s6ICgpID0+IHt9XG59O1xuXG5jb25zdCBDdXN0b21EaWFsb2dDb250ZXh0ID0gY3JlYXRlQ29udGV4dChkZWZhdWx0Q29udGV4dFZhbHVlKTtcblxuZXhwb3J0IGRlZmF1bHQgQ3VzdG9tRGlhbG9nQ29udGV4dDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIERpYWxvZyxcbiAgRGlhbG9nQ29udGVudCxcbiAgRGlhbG9nQ29udGVudFRleHQsXG4gIERpYWxvZ1RpdGxlXG59IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5cbmNvbnN0IEN1c3RvbURpYWxvZyA9ICh7IG9wZW4sIG9uQ2xvc2UsIHRpdGxlLCBib2R5IH0pID0+IChcbiAgPERpYWxvZ1xuICAgIG9wZW49e29wZW59XG4gICAgb25DbG9zZT17b25DbG9zZX1cbiAgICBhcmlhLWxhYmVsbGVkYnk9XCJhbGVydC1kaWFsb2ctdGl0bGVcIlxuICAgIGFyaWEtZGVzY3JpYmVkYnk9XCJhbGVydC1kaWFsb2ctZGVzY3JpcHRpb25cIlxuICA+XG4gICAgPERpYWxvZ1RpdGxlIGlkPVwiYWxlcnQtZGlhbG9nLXRpdGxlXCI+e3RpdGxlfTwvRGlhbG9nVGl0bGU+XG4gICAgPERpYWxvZ0NvbnRlbnQ+XG4gICAgICA8RGlhbG9nQ29udGVudFRleHQgaWQ9XCJhbGVydC1kaWFsb2ctZGVzY3JpcHRpb25cIj5cbiAgICAgICAge2JvZHl9XG4gICAgICA8L0RpYWxvZ0NvbnRlbnRUZXh0PlxuICAgIDwvRGlhbG9nQ29udGVudD5cbiAgPC9EaWFsb2c+XG4pO1xuXG5DdXN0b21EaWFsb2cucHJvcFR5cGVzID0ge1xuICBvcGVuOiBQcm9wVHlwZXMuYm9vbCxcbiAgb25DbG9zZTogUHJvcFR5cGVzLmZ1bmMsXG4gIHRpdGxlOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBib2R5OiBQcm9wVHlwZXMuc3RyaW5nXG59O1xuXG5leHBvcnQgZGVmYXVsdCBDdXN0b21EaWFsb2c7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBUaGVtZVByb3ZpZGVyIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IGNyZWF0ZVRoZW1lIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWwvc3R5bGVzXCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5cbmxldCBkYXJrQ29sb3IgPSBcIlwiO1xuaWYgKHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgLy8gR2V0IHRoZSByb290IGVsZW1lbnRcbiAgY29uc3Qgcm9vdCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcblxuICAvLyBSZXRyaWV2ZSB0aGUgY3VycmVudCB2YWx1ZSBvZiBhIENTUyB2YXJpYWJsZVxuICBkYXJrQ29sb3IgPSBnZXRDb21wdXRlZFN0eWxlKHJvb3QpLmdldFByb3BlcnR5VmFsdWUoXG4gICAgXCItLWNvbG9yX2JhY2tncm91bmRfZGFya1wiXG4gICk7XG59XG5cbmNvbnN0IHRoZW1lID0gY3JlYXRlVGhlbWUoe1xuICBwYWxldHRlOiB7XG4gICAgcHJpbWFyeToge1xuICAgICAgbWFpbjogZGFya0NvbG9yXG4gICAgfVxuICB9XG59KTtcblxuY29uc3QgQ3VzdG9tVGhlbWUgPSAoeyBjaGlsZHJlbiB9KSA9PiAoXG4gIDxUaGVtZVByb3ZpZGVyIHRoZW1lPXt0aGVtZX0+e2NoaWxkcmVufTwvVGhlbWVQcm92aWRlcj5cbik7XG5cbkN1c3RvbVRoZW1lLnByb3BUeXBlcyA9IHtcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLmlzUmVxdWlyZWRcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEN1c3RvbVRoZW1lO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHtcbiAgQ2hlY2tib3gsXG4gIEZvcm1Db250cm9sLFxuICBGb3JtQ29udHJvbExhYmVsLFxuICBGb3JtR3JvdXAsXG4gIEZvcm1IZWxwZXJUZXh0LFxuICBGb3JtTGFiZWxcbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IGdldExhYmVsLCB0b1NsdWcgfSBmcm9tIFwiLi91dGlsc1wiO1xuXG5jb25zdCBDaGVja2JveExpc3RRdWVzdGlvbkZpZWxkID0gKHtcbiAgcXVlc3Rpb24sXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lID0gXCJcIixcbiAgaXNEaXNhYmxlZCA9IGZhbHNlLFxuICBjaGlsZHJlbixcbiAgdmFsdWUsXG4gIG9uQ2hhbmdlLFxuICBzZXRGaWVsZFZhbHVlLFxuICBlcnJvcixcbiAgaGVscGVyVGV4dCxcbiAgLi4ucmVzdFxufSkgPT4ge1xuICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcocXVlc3Rpb24ubmFtZSwgcXVlc3Rpb24uaWQpO1xuICBjb25zdCBxdWVzdGlvbkxhYmVsID0gZ2V0TGFiZWwocXVlc3Rpb24pO1xuICBjb25zdCBpc1JlcXVpcmVkID0gcXVlc3Rpb24ubWFuZGF0b3J5O1xuICBjb25zdCBxdWVzdGlvbk1heFZhbHVlcyA9IHF1ZXN0aW9uLm1heF9zZWxlY3RlZF92YWx1ZXM7XG5cbiAgY29uc3QgcXVlc3Rpb25PcHRpb25zID1cbiAgICBxdWVzdGlvbi52YWx1ZXM/Lm1hcCgodmFsKSA9PiAoe1xuICAgICAgbGFiZWw6IHZhbC5sYWJlbCxcbiAgICAgIHZhbHVlOiB2YWwuaWQudG9TdHJpbmcoKVxuICAgIH0pKSB8fCBbXTtcblxuICBjb25zdCBoYW5kbGVDaGVja2JveExpc3RDaGFuZ2UgPSAoY2hlY2tlZCwgdmFsKSA9PiB7XG4gICAgY29uc3QgY3VycmVudEFucyA9IHZhbHVlIHx8IFtdO1xuICAgIGNvbnN0IG1heFNlbGVjdGlvblJlYWNoZWQgPSBjdXJyZW50QW5zLmxlbmd0aCA9PT0gcXVlc3Rpb25NYXhWYWx1ZXM7XG4gICAgbGV0IG5ld1ZhbHVlO1xuXG4gICAgaWYgKGNoZWNrZWQpIHtcbiAgICAgIG5ld1ZhbHVlID0gbWF4U2VsZWN0aW9uUmVhY2hlZCA/IGN1cnJlbnRBbnMgOiBbLi4uY3VycmVudEFucywgdmFsXTtcbiAgICB9IGVsc2Uge1xuICAgICAgbmV3VmFsdWUgPSBjdXJyZW50QW5zLmZpbHRlcigodikgPT4gdiAhPT0gdmFsKTtcbiAgICB9XG5cbiAgICBzZXRGaWVsZFZhbHVlKHF1ZXN0aW9uU2x1ZywgbmV3VmFsdWUpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAga2V5PXtxdWVzdGlvblNsdWd9XG4gICAgICBpZD17YCR7cXVlc3Rpb25TbHVnfV9jb250YWluZXJgfVxuICAgICAgY2xhc3NOYW1lPXtxdWVzdGlvbkNsYXNzTmFtZX1cbiAgICA+XG4gICAgICA8Rm9ybUNvbnRyb2xcbiAgICAgICAgZGlzYWJsZWQ9e2lzRGlzYWJsZWR9XG4gICAgICAgIHJlcXVpcmVkPXtpc1JlcXVpcmVkfVxuICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgZXJyb3I9e2Vycm9yfVxuICAgICAgPlxuICAgICAgICA8Rm9ybUxhYmVsPntxdWVzdGlvbkxhYmVsfTwvRm9ybUxhYmVsPlxuICAgICAgICB7ZXJyb3IgJiYgPEZvcm1IZWxwZXJUZXh0PntoZWxwZXJUZXh0ID8/IFwiIFwifTwvRm9ybUhlbHBlclRleHQ+fVxuICAgICAgICA8Rm9ybUdyb3VwPlxuICAgICAgICAgIHtxdWVzdGlvbk9wdGlvbnMubWFwKChvcCkgPT4gKFxuICAgICAgICAgICAgPEZvcm1Db250cm9sTGFiZWxcbiAgICAgICAgICAgICAga2V5PXtvcC5sYWJlbH1cbiAgICAgICAgICAgICAgbmFtZT17cXVlc3Rpb25TbHVnfVxuICAgICAgICAgICAgICBjb250cm9sPXtcbiAgICAgICAgICAgICAgICA8Q2hlY2tib3hcbiAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e3ZhbHVlPy5pbmNsdWRlcyhvcC52YWx1ZSl9XG4gICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGV2KSA9PlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVDaGVja2JveExpc3RDaGFuZ2UoZXYudGFyZ2V0LmNoZWNrZWQsIG9wLnZhbHVlKVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2pzeC1wcm9wcy1uby1zcHJlYWRpbmcgKi9cbiAgICAgICAgICAgICAgICAgIHsuLi5yZXN0fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgbGFiZWw9e29wLmxhYmVsfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9Gb3JtR3JvdXA+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDwvRm9ybUNvbnRyb2w+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5DaGVja2JveExpc3RRdWVzdGlvbkZpZWxkLnByb3BUeXBlcyA9IHtcbiAgcXVlc3Rpb246IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgdmFsdWU6IFByb3BUeXBlcy5hcnJheSxcbiAgcXVlc3Rpb25DbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGlzRGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICBvbkNoYW5nZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICBzZXRGaWVsZFZhbHVlOiBQcm9wVHlwZXMuZnVuYyxcbiAgZXJyb3I6IFByb3BUeXBlcy5ib29sLFxuICBoZWxwZXJUZXh0OiBQcm9wVHlwZXMuc3RyaW5nXG59O1xuXG5leHBvcnQgZGVmYXVsdCBDaGVja2JveExpc3RRdWVzdGlvbkZpZWxkO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHtcbiAgQ2hlY2tib3gsXG4gIEZvcm1Db250cm9sLFxuICBGb3JtQ29udHJvbExhYmVsLFxuICBGb3JtSGVscGVyVGV4dFxufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IFJhd0hUTUwgZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvY29tcG9uZW50cy9yYXctaHRtbFwiO1xuaW1wb3J0IHsgZ2V0TGFiZWwsIHRvU2x1ZyB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbmNvbnN0IENoZWNrYm94UXVlc3Rpb25GaWVsZCA9ICh7XG4gIHF1ZXN0aW9uLFxuICBxdWVzdGlvbkNsYXNzTmFtZSA9IFwiXCIsXG4gIGlzRGlzYWJsZWQgPSBmYWxzZSxcbiAgY2hpbGRyZW4sXG4gIHZhbHVlLFxuICBlcnJvcixcbiAgaGVscGVyVGV4dCxcbiAgc2V0RmllbGRWYWx1ZSxcbiAgLi4ucmVzdFxufSkgPT4ge1xuICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcocXVlc3Rpb24ubmFtZSwgcXVlc3Rpb24uaWQpO1xuICBjb25zdCBxdWVzdGlvbkxhYmVsID0gZ2V0TGFiZWwocXVlc3Rpb24pO1xuICBjb25zdCBpc1JlcXVpcmVkID0gcXVlc3Rpb24ubWFuZGF0b3J5O1xuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAga2V5PXtxdWVzdGlvblNsdWd9XG4gICAgICBpZD17YCR7cXVlc3Rpb25TbHVnfV9jb250YWluZXJgfVxuICAgICAgY2xhc3NOYW1lPXtxdWVzdGlvbkNsYXNzTmFtZX1cbiAgICA+XG4gICAgICA8Rm9ybUNvbnRyb2wgZnVsbFdpZHRoIGVycm9yPXtlcnJvcn0+XG4gICAgICAgIDxGb3JtQ29udHJvbExhYmVsXG4gICAgICAgICAgY29udHJvbD17XG4gICAgICAgICAgICA8Q2hlY2tib3hcbiAgICAgICAgICAgICAgbmFtZT17cXVlc3Rpb25TbHVnfVxuICAgICAgICAgICAgICBjaGVja2VkPXshIXZhbHVlfVxuICAgICAgICAgICAgICBsYWJlbD17PFJhd0hUTUw+e3F1ZXN0aW9uTGFiZWx9PC9SYXdIVE1MPn1cbiAgICAgICAgICAgICAgLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2pzeC1wcm9wcy1uby1zcHJlYWRpbmcgKi9cbiAgICAgICAgICAgICAgey4uLnJlc3R9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIH1cbiAgICAgICAgICBsYWJlbD17PFJhd0hUTUw+e3F1ZXN0aW9uTGFiZWx9PC9SYXdIVE1MPn1cbiAgICAgICAgICBkaXNhYmxlZD17aXNEaXNhYmxlZH1cbiAgICAgICAgICByZXF1aXJlZD17aXNSZXF1aXJlZH1cbiAgICAgICAgLz5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgICB7ZXJyb3IgJiYgPEZvcm1IZWxwZXJUZXh0PntoZWxwZXJUZXh0ID8/IFwiIFwifTwvRm9ybUhlbHBlclRleHQ+fVxuICAgICAgPC9Gb3JtQ29udHJvbD5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbkNoZWNrYm94UXVlc3Rpb25GaWVsZC5wcm9wVHlwZXMgPSB7XG4gIHF1ZXN0aW9uOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHZhbHVlOiBQcm9wVHlwZXMuYm9vbCxcbiAgcXVlc3Rpb25DbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGlzRGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG4gIHNldEZpZWxkVmFsdWU6IFByb3BUeXBlcy5mdW5jLFxuICBlcnJvcjogUHJvcFR5cGVzLmJvb2wsXG4gIGhlbHBlclRleHQ6IFByb3BUeXBlcy5zdHJpbmdcbn07XG5cbmV4cG9ydCBkZWZhdWx0IENoZWNrYm94UXVlc3Rpb25GaWVsZDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IEZvcm1Db250cm9sLCBJbnB1dExhYmVsLCBNZW51SXRlbSwgU2VsZWN0IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IGdldExhYmVsLCB0b1NsdWcgfSBmcm9tIFwiLi91dGlsc1wiO1xuXG5jb25zdCBEcm9wZG93blF1ZXN0aW9uRmllbGQgPSAoe1xuICBxdWVzdGlvbixcbiAgcXVlc3Rpb25DbGFzc05hbWUgPSBcIlwiLFxuICBpc0Rpc2FibGVkID0gZmFsc2UsXG4gIHNldEZpZWxkVmFsdWUsXG4gIGNoaWxkcmVuLFxuICBlcnJvcixcbiAgaGVscGVyVGV4dCxcbiAgLi4ucmVzdFxufSkgPT4ge1xuICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcocXVlc3Rpb24ubmFtZSwgcXVlc3Rpb24uaWQpO1xuICBjb25zdCBxdWVzdGlvbkxhYmVsID0gZ2V0TGFiZWwocXVlc3Rpb24pO1xuICBjb25zdCBpc1JlcXVpcmVkID0gcXVlc3Rpb24ubWFuZGF0b3J5O1xuXG4gIGNvbnN0IHF1ZXN0aW9uT3B0aW9ucyA9XG4gICAgcXVlc3Rpb24udmFsdWVzPy5tYXAoKHZhbCkgPT4gKHtcbiAgICAgIGxhYmVsOiB2YWwubGFiZWwsXG4gICAgICB2YWx1ZTogdmFsLmlkXG4gICAgfSkpIHx8IFtdO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAga2V5PXtxdWVzdGlvblNsdWd9XG4gICAgICBpZD17YCR7cXVlc3Rpb25TbHVnfV9jb250YWluZXJgfVxuICAgICAgY2xhc3NOYW1lPXtxdWVzdGlvbkNsYXNzTmFtZX1cbiAgICA+XG4gICAgICA8Rm9ybUNvbnRyb2xcbiAgICAgICAgZGlzYWJsZWQ9e2lzRGlzYWJsZWR9XG4gICAgICAgIHJlcXVpcmVkPXtpc1JlcXVpcmVkfVxuICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgZXJyb3I9e2Vycm9yfVxuICAgICAgPlxuICAgICAgICA8SW5wdXRMYWJlbCBpZD17YCR7cXVlc3Rpb25TbHVnfV9sYWJlbGB9PntxdWVzdGlvbkxhYmVsfTwvSW5wdXRMYWJlbD5cbiAgICAgICAgPFNlbGVjdFxuICAgICAgICAgIGxhYmVsSWQ9e2Ake3F1ZXN0aW9uU2x1Z31fbGFiZWxgfVxuICAgICAgICAgIG5hbWU9e3F1ZXN0aW9uU2x1Z31cbiAgICAgICAgICBpZD17cXVlc3Rpb25TbHVnfVxuICAgICAgICAgIGxhYmVsPXtxdWVzdGlvbkxhYmVsfVxuICAgICAgICAgIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nICovXG4gICAgICAgICAgey4uLnJlc3R9XG4gICAgICAgICAgc3R5bGU9e3sgbWFyZ2luQm90dG9tOiAyMCB9fVxuICAgICAgICA+XG4gICAgICAgICAge3F1ZXN0aW9uT3B0aW9ucy5tYXAoKG9wKSA9PiAoXG4gICAgICAgICAgICA8TWVudUl0ZW0ga2V5PXtvcC5sYWJlbH0gdmFsdWU9e29wLnZhbHVlfT5cbiAgICAgICAgICAgICAge29wLmxhYmVsfVxuICAgICAgICAgICAgPC9NZW51SXRlbT5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9TZWxlY3Q+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDwvRm9ybUNvbnRyb2w+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5Ecm9wZG93blF1ZXN0aW9uRmllbGQucHJvcFR5cGVzID0ge1xuICBxdWVzdGlvbjogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBxdWVzdGlvbkNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgaXNEaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgZXJyb3I6IFByb3BUeXBlcy5ib29sLFxuICBoZWxwZXJUZXh0OiBQcm9wVHlwZXMuc3RyaW5nLFxuICBzZXRGaWVsZFZhbHVlOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgRHJvcGRvd25RdWVzdGlvbkZpZWxkO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHtcbiAgRm9ybUNvbnRyb2wsXG4gIEZvcm1Db250cm9sTGFiZWwsXG4gIEZvcm1IZWxwZXJUZXh0LFxuICBGb3JtTGFiZWwsXG4gIFJhZGlvLFxuICBSYWRpb0dyb3VwXG59IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBnZXRMYWJlbCwgdG9TbHVnIH0gZnJvbSBcIi4vdXRpbHNcIjtcblxuY29uc3QgUmFkaW9MaXN0UXVlc3Rpb25GaWVsZCA9ICh7XG4gIHF1ZXN0aW9uLFxuICBxdWVzdGlvbkNsYXNzTmFtZSA9IFwiXCIsXG4gIGlzRGlzYWJsZWQgPSBmYWxzZSxcbiAgY2hpbGRyZW4sXG4gIGVycm9yLFxuICBoZWxwZXJUZXh0LFxuICBzZXRGaWVsZFZhbHVlLFxuICAuLi5yZXN0XG59KSA9PiB7XG4gIGNvbnN0IHF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhxdWVzdGlvbi5uYW1lLCBxdWVzdGlvbi5pZCk7XG4gIGNvbnN0IHF1ZXN0aW9uTGFiZWwgPSBnZXRMYWJlbChxdWVzdGlvbik7XG4gIGNvbnN0IGlzUmVxdWlyZWQgPSBxdWVzdGlvbi5tYW5kYXRvcnk7XG5cbiAgY29uc3QgcXVlc3Rpb25PcHRpb25zID1cbiAgICBxdWVzdGlvbi52YWx1ZXM/Lm1hcCgodmFsKSA9PiAoe1xuICAgICAgbGFiZWw6IHZhbC5sYWJlbCxcbiAgICAgIHZhbHVlOiB2YWwuaWQudG9TdHJpbmcoKVxuICAgIH0pKSB8fCBbXTtcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGtleT17cXVlc3Rpb25TbHVnfVxuICAgICAgaWQ9e2Ake3F1ZXN0aW9uU2x1Z31fY29udGFpbmVyYH1cbiAgICAgIGNsYXNzTmFtZT17cXVlc3Rpb25DbGFzc05hbWV9XG4gICAgPlxuICAgICAgPEZvcm1Db250cm9sXG4gICAgICAgIGRpc2FibGVkPXtpc0Rpc2FibGVkfVxuICAgICAgICByZXF1aXJlZD17aXNSZXF1aXJlZH1cbiAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgIGVycm9yPXtlcnJvcn1cbiAgICAgID5cbiAgICAgICAgPEZvcm1MYWJlbCBpZD17YCR7cXVlc3Rpb25TbHVnfV9sYWJlbGB9PntxdWVzdGlvbkxhYmVsfTwvRm9ybUxhYmVsPlxuICAgICAgICB7ZXJyb3IgJiYgPEZvcm1IZWxwZXJUZXh0PntoZWxwZXJUZXh0ID8/IFwiIFwifTwvRm9ybUhlbHBlclRleHQ+fVxuICAgICAgICA8UmFkaW9Hcm91cFxuICAgICAgICAgIGFyaWEtbGFiZWxsZWRieT17YCR7cXVlc3Rpb25TbHVnfV9sYWJlbGB9XG4gICAgICAgICAgbmFtZT17cXVlc3Rpb25TbHVnfVxuICAgICAgICAgIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nICovXG4gICAgICAgICAgey4uLnJlc3R9XG4gICAgICAgID5cbiAgICAgICAgICB7cXVlc3Rpb25PcHRpb25zLm1hcCgob3ApID0+IChcbiAgICAgICAgICAgIDxGb3JtQ29udHJvbExhYmVsXG4gICAgICAgICAgICAgIGtleT17b3AubGFiZWx9XG4gICAgICAgICAgICAgIHZhbHVlPXtvcC52YWx1ZX1cbiAgICAgICAgICAgICAgY29udHJvbD17PFJhZGlvIC8+fVxuICAgICAgICAgICAgICBsYWJlbD17b3AubGFiZWx9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICkpfVxuICAgICAgICA8L1JhZGlvR3JvdXA+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDwvRm9ybUNvbnRyb2w+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5SYWRpb0xpc3RRdWVzdGlvbkZpZWxkLnByb3BUeXBlcyA9IHtcbiAgcXVlc3Rpb246IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgcXVlc3Rpb25DbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGlzRGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG4gIGVycm9yOiBQcm9wVHlwZXMuYm9vbCxcbiAgaGVscGVyVGV4dDogUHJvcFR5cGVzLnN0cmluZyxcbiAgc2V0RmllbGRWYWx1ZTogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFJhZGlvTGlzdFF1ZXN0aW9uRmllbGQ7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBGb3JtR3JvdXAsIFRleHRGaWVsZCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBnZXRMYWJlbCwgdG9TbHVnIH0gZnJvbSBcIi4vdXRpbHNcIjtcblxuY29uc3QgVGV4dFF1ZXN0aW9uRmllbGQgPSAoe1xuICBxdWVzdGlvbixcbiAgcXVlc3Rpb25DbGFzc05hbWUgPSBcIlwiLFxuICBpc0Rpc2FibGVkID0gZmFsc2UsXG4gIGNoaWxkcmVuLFxuICBzZXRGaWVsZFZhbHVlLFxuICAuLi5yZXN0XG59KSA9PiB7XG4gIGNvbnN0IHF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhxdWVzdGlvbi5uYW1lLCBxdWVzdGlvbi5pZCk7XG4gIGNvbnN0IHF1ZXN0aW9uTGFiZWwgPSBnZXRMYWJlbChxdWVzdGlvbik7XG4gIGNvbnN0IGlzUmVxdWlyZWQgPSBxdWVzdGlvbi5tYW5kYXRvcnk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBrZXk9e3F1ZXN0aW9uU2x1Z31cbiAgICAgIGlkPXtgJHtxdWVzdGlvblNsdWd9X2NvbnRhaW5lcmB9XG4gICAgICBjbGFzc05hbWU9e3F1ZXN0aW9uQ2xhc3NOYW1lfVxuICAgID5cbiAgICAgIDxGb3JtR3JvdXA+XG4gICAgICAgIDxUZXh0RmllbGRcbiAgICAgICAgICBuYW1lPXtxdWVzdGlvblNsdWd9XG4gICAgICAgICAgbGFiZWw9e3F1ZXN0aW9uTGFiZWx9XG4gICAgICAgICAgZGlzYWJsZWQ9e2lzRGlzYWJsZWR9XG4gICAgICAgICAgcmVxdWlyZWQ9e2lzUmVxdWlyZWR9XG4gICAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgICAgLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2pzeC1wcm9wcy1uby1zcHJlYWRpbmcgKi9cbiAgICAgICAgICB7Li4ucmVzdH1cbiAgICAgICAgLz5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgPC9Gb3JtR3JvdXA+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5UZXh0UXVlc3Rpb25GaWVsZC5wcm9wVHlwZXMgPSB7XG4gIHF1ZXN0aW9uOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBpc0Rpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICBzZXRGaWVsZFZhbHVlOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgVGV4dFF1ZXN0aW9uRmllbGQ7XG4iLCJpbXBvcnQge1xuICBRdWVzdGlvblR5cGVfQ2hlY2tib3gsXG4gIFF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3QsXG4gIFF1ZXN0aW9uVHlwZV9Db21ib0JveCxcbiAgUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveCxcbiAgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdFxufSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XG5cbmV4cG9ydCBjb25zdCBjaGVja1J1bGUgPSAodmFsdWUsIHJ1bGUpID0+IHtcbiAgY29uc3QgdmFsdWVzID0gcnVsZS5hbnN3ZXJfdmFsdWVzO1xuXG4gIGlmICghdmFsdWUpIHJldHVybiBmYWxzZTtcblxuICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICBpZiAoIXZhbHVlLmxlbmd0aCkgcmV0dXJuIGZhbHNlO1xuICAgIGxldCByZXMgPSBydWxlLmFuc3dlcl92YWx1ZXNfb3BlcmF0b3IgPT09IFwiQW5kXCI7XG4gICAgdmFsdWVzLmZvckVhY2goKHYpID0+IHtcbiAgICAgIGlmIChydWxlLmFuc3dlcl92YWx1ZXNfb3BlcmF0b3IgPT09IFwiQW5kXCIpIHtcbiAgICAgICAgcmVzID0gcmVzICYmIHZhbHVlLmluY2x1ZGVzKHYpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gT3JcbiAgICAgICAgcmVzID0gcmVzIHx8IHZhbHVlLmluY2x1ZGVzKHYpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiByZXM7XG4gIH1cbiAgcmV0dXJuIHZhbHVlcy5pbmNsdWRlcyh2YWx1ZT8udG9TdHJpbmcoKSk7XG59O1xuXG5leHBvcnQgY29uc3QgY2hlY2tWaXNpYmlsaXR5ID0gKHJ1bGUsIHJ1bGVSZXN1bHQsIGNoaWxkcmVuKSA9PiB7XG4gIGlmIChydWxlLnZpc2liaWxpdHkgPT09IFwiVmlzaWJsZVwiKSB7XG4gICAgaWYgKHJ1bGUudmlzaWJpbGl0eV9jb25kaXRpb24gPT09IFwiRXF1YWxcIikge1xuICAgICAgaWYgKHJ1bGVSZXN1bHQpIHJldHVybiBjaGlsZHJlbjtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICAvLyBOb24gRXF1YWxcbiAgICBpZiAoIXJ1bGVSZXN1bHQpIHtcbiAgICAgIHJldHVybiBjaGlsZHJlbjtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgLy8gbm90IHZpc2libGVcbiAgaWYgKHJ1bGUudmlzaWJpbGl0eV9jb25kaXRpb24gPT09IFwiRXF1YWxcIikge1xuICAgIGlmICghcnVsZVJlc3VsdCkgcmV0dXJuIGNoaWxkcmVuO1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGlmIChydWxlUmVzdWx0KSByZXR1cm4gY2hpbGRyZW47XG4gIHJldHVybiBudWxsO1xufTtcblxuZXhwb3J0IGNvbnN0IHRvU2x1ZyA9ICh0ZXh0LCBxdWVzdGlvbklkKSA9PiB7XG4gIGNvbnN0IHRleHRMQyA9IHRleHQudG9Mb3dlckNhc2UoKTtcbiAgcmV0dXJuIGAke3RleHRMQy5yZXBsYWNlKC9bXmEtekEtWjAtOV0rL2csIFwiX1wiKX1fJHtxdWVzdGlvbklkfWA7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0TGFiZWwgPSAocSkgPT5cbiAgLy8gcmVwbGFjZSBsaW5lIGJyZWFrcyBhbmQgcmVtb3ZlIG91dGVyIDxwPlxuICBxPy5sYWJlbD8ucmVwbGFjZSgvXFxuL2csIFwiIFwiKS5yZXBsYWNlKC88cD4oLiopPFxcL3A+L2dpLCBcIiQxXCIpO1xuXG5leHBvcnQgY29uc3QgaXNBbnN3ZXJlZCA9IChhbnN3ZXIpID0+IHtcbiAgaWYgKCFhbnN3ZXIpIHJldHVybiBmYWxzZTtcbiAgLy8gY2hlY2sgdHlwZVxuICBpZiAoQXJyYXkuaXNBcnJheShhbnN3ZXIpKSByZXR1cm4gYW5zd2VyLmxlbmd0aCA+IDA7XG4gIGlmICh0eXBlb2YgYW5zd2VyID09PSBcInN0cmluZ1wiKSByZXR1cm4gYW5zd2VyLmxlbmd0aCA+IDA7XG4gIGlmICh0eXBlb2YgYW5zd2VyID09PSBcIm51bWJlclwiKSByZXR1cm4gYW5zd2VyID4gMDtcbiAgaWYgKHR5cGVvZiBhbnN3ZXIgPT09IFwiYm9vbGVhblwiKSByZXR1cm4gYW5zd2VyO1xuICByZXR1cm4gZmFsc2U7XG59O1xuXG5leHBvcnQgY29uc3QgY2hlY2tJZlZhbHVlTWF0Y2ggPSAoYW5zd2VyLCBjb21wYXJlVmFsKSA9PiB7XG4gIGNvbnN0IGFuc3dlckFycmF5ID0gQXJyYXkuaXNBcnJheShhbnN3ZXIpID8gYW5zd2VyIDogW2Fuc3dlcl07XG5cbiAgcmV0dXJuIGFuc3dlckFycmF5LnNvbWUoKHYpID0+IHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShjb21wYXJlVmFsKSkge1xuICAgICAgcmV0dXJuIGNvbXBhcmVWYWwuaW5jbHVkZXModik7XG4gICAgfVxuICAgIHJldHVybiB2ID09PSBjb21wYXJlVmFsO1xuICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRUeXBlSW5pdGlhbFZhbHVlID0gKHEpID0+IHtcbiAgc3dpdGNoIChxLnR5cGUpIHtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9DaGVja2JveDpcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbkxpc3Q6XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3Q6XG4gICAgICByZXR1cm4gW107XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ291bnRyeUNvbWJvQm94OlxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NvbWJvQm94OlxuICAgICAgcmV0dXJuIFwiXCI7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBcIlwiO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0VHlwZVZhbHVlID0gKGFucywgdHlwZSkgPT4ge1xuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9DaGVja2JveDpcbiAgICAgIHJldHVybiBhbnMgPT09IFwidHJ1ZVwiO1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdDpcbiAgICAgIHJldHVybiBhbnM/LnNwbGl0KFwiLFwiKSB8fCBbXTtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9Db3VudHJ5Q29tYm9Cb3g6XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ29tYm9Cb3g6XG4gICAgICByZXR1cm4gYW5zIHx8IFwiXCI7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0OlxuICAgICAgcmV0dXJuIGFucyB8fCBudWxsO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gYW5zO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgdHJhbnNmb3JtQW53ZXJzRm9ybWF0ID0gKGFuc3dlcnMpID0+IHtcbiAgY29uc3Qge1xuICAgIGF0dGVuZGVlX2VtYWlsLFxuICAgIGF0dGVuZGVlX2ZpcnN0X25hbWUsXG4gICAgYXR0ZW5kZWVfbGFzdF9uYW1lLFxuICAgIGF0dGVuZGVlX2NvbXBhbnksXG4gICAgZGlzY2xhaW1lcl9hY2NlcHRlZCxcbiAgICAuLi5leHRyYV9xdWVzdGlvbnNcbiAgfSA9IGFuc3dlcnM7XG5cbiAgY29uc3QgZm9ybWF0dGVkRVEgPSBPYmplY3QuZW50cmllcyhleHRyYV9xdWVzdGlvbnMpLm1hcCgoW2tleSwgdmFsdWVdKSA9PiAoe1xuICAgIHF1ZXN0aW9uX2lkOiBwYXJzZUludChrZXkuc3BsaXQoXCJfXCIpLnBvcCgpLCAxMCksXG4gICAgYW5zd2VyOiB2YWx1ZS50b1N0cmluZygpXG4gIH0pKTtcblxuICByZXR1cm4ge1xuICAgIGF0dGVuZGVlX2VtYWlsLFxuICAgIGF0dGVuZGVlX2ZpcnN0X25hbWUsXG4gICAgYXR0ZW5kZWVfbGFzdF9uYW1lLFxuICAgIGF0dGVuZGVlX2NvbXBhbnksXG4gICAgZGlzY2xhaW1lcl9hY2NlcHRlZCxcbiAgICBleHRyYV9xdWVzdGlvbnM6IGZvcm1hdHRlZEVRXG4gIH07XG59O1xuIiwiZXhwb3J0IGNvbnN0IFF1ZXN0aW9uVHlwZV9UZXh0ID0gXCJUZXh0XCI7XG5leHBvcnQgY29uc3QgUXVlc3Rpb25UeXBlX1RleHRBcmVhID0gXCJUZXh0QXJlYVwiO1xuZXhwb3J0IGNvbnN0IFF1ZXN0aW9uVHlwZV9DaGVja2JveCA9IFwiQ2hlY2tCb3hcIjtcbmV4cG9ydCBjb25zdCBRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0ID0gXCJSYWRpb0J1dHRvbkxpc3RcIjtcbmV4cG9ydCBjb25zdCBRdWVzdGlvblR5cGVfQ29tYm9Cb3ggPSBcIkNvbWJvQm94XCI7XG5leHBvcnQgY29uc3QgUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdCA9IFwiQ2hlY2tCb3hMaXN0XCI7XG5leHBvcnQgY29uc3QgUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveCA9IFwiQ291bnRyeUNvbWJvQm94XCI7XG5leHBvcnQgY29uc3QgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uID0gXCJSYWRpb0J1dHRvblwiO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuXG5pbXBvcnQge1xuICB0b1NsdWcsXG4gIGlzQW5zd2VyZWQsXG4gIGNoZWNrVmlzaWJpbGl0eSxcbiAgY2hlY2tSdWxlXG59IGZyb20gXCIuL2NvbXBvbmVudHMvdXRpbHNcIjtcbmltcG9ydCB7XG4gIFF1ZXN0aW9uVHlwZV9DaGVja2JveCxcbiAgUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdCxcbiAgUXVlc3Rpb25UeXBlX0NvbWJvQm94LFxuICBRdWVzdGlvblR5cGVfQ291bnRyeUNvbWJvQm94LFxuICBRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0LFxuICBRdWVzdGlvblR5cGVfVGV4dCxcbiAgUXVlc3Rpb25UeXBlX1RleHRBcmVhXG59IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuaW1wb3J0IFRleHRRdWVzdGlvbkZpZWxkIGZyb20gXCIuL2NvbXBvbmVudHMvVGV4dFF1ZXN0aW9uRmllbGRcIjtcbmltcG9ydCBDaGVja2JveFF1ZXN0aW9uRmllbGQgZnJvbSBcIi4vY29tcG9uZW50cy9DaGVja2JveFF1ZXN0aW9uRmllbGRcIjtcbmltcG9ydCBSYWRpb0xpc3RRdWVzdGlvbkZpZWxkIGZyb20gXCIuL2NvbXBvbmVudHMvUmFkaW9MaXN0UXVlc3Rpb25GaWVsZFwiO1xuaW1wb3J0IENoZWNrYm94TGlzdFF1ZXN0aW9uRmllbGQgZnJvbSBcIi4vY29tcG9uZW50cy9DaGVja2JveExpc3RRdWVzdGlvbkZpZWxkXCI7XG5pbXBvcnQgRHJvcGRvd25RdWVzdGlvbkZpZWxkIGZyb20gXCIuL2NvbXBvbmVudHMvRHJvcGRvd25RdWVzdGlvbkZpZWxkXCI7XG5cbmNvbnN0IGdldFF1ZXN0aW9uRmllbGRDb21wb25lbnQgPSAocXVlc3Rpb25UeXBlKSA9PiB7XG4gIHN3aXRjaCAocXVlc3Rpb25UeXBlKSB7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfVGV4dEFyZWE6XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfVGV4dDoge1xuICAgICAgcmV0dXJuIFRleHRRdWVzdGlvbkZpZWxkO1xuICAgIH1cbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9DaGVja2JveDoge1xuICAgICAgcmV0dXJuIENoZWNrYm94UXVlc3Rpb25GaWVsZDtcbiAgICB9XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0OiB7XG4gICAgICByZXR1cm4gUmFkaW9MaXN0UXVlc3Rpb25GaWVsZDtcbiAgICB9XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ2hlY2tCb3hMaXN0OiB7XG4gICAgICByZXR1cm4gQ2hlY2tib3hMaXN0UXVlc3Rpb25GaWVsZDtcbiAgICB9XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ291bnRyeUNvbWJvQm94OlxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NvbWJvQm94OiB7XG4gICAgICByZXR1cm4gRHJvcGRvd25RdWVzdGlvbkZpZWxkO1xuICAgIH1cbiAgICBkZWZhdWx0OiB7XG4gICAgICByZXR1cm4gUmVhY3QuRnJhZ21lbnQ7XG4gICAgfVxuICB9XG59O1xuXG5jb25zdCBFeHRyYVF1ZXN0aW9uc0ZpZWxkcyA9ICh7XG4gIGV4dHJhUXVlc3Rpb25zLFxuICBjbGFzc05hbWUgPSBcImV4dHJhUXVlc3Rpb25zXCIsXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lID0gXCJleHRyYVF1ZXN0aW9uXCIsXG4gIHJlYWRPbmx5ID0gZmFsc2UsXG4gIGFsbG93RWRpdCA9IHRydWUsXG4gIGZvcm1pa1xufSkgPT4ge1xuICBjb25zdCByZW5kZXJSdWxlID0gKHJ1bGUsIHF1ZXN0aW9uU2x1ZykgPT5cbiAgICBjaGVja1Zpc2liaWxpdHkoXG4gICAgICBydWxlLFxuICAgICAgY2hlY2tSdWxlKGZvcm1pay52YWx1ZXNbcXVlc3Rpb25TbHVnXSwgcnVsZSksXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdXNlLWJlZm9yZS1kZWZpbmVcbiAgICAgIHJlbmRlclF1ZXN0aW9uKHJ1bGUuc3ViX3F1ZXN0aW9uKVxuICAgICk7XG5cbiAgY29uc3QgcmVuZGVyUXVlc3Rpb24gPSAocSkgPT4ge1xuICAgIGNvbnN0IHF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhxLm5hbWUsIHEuaWQpO1xuICAgIC8vIGRpc2FibGUgZmllbGQgaWYgZWRpdCBpc24ndCBhbGxvd2VkIGFuZCB0aGUgcXVlc3Rpb25zIGlzIGFuc3dlcmVkXG4gICAgY29uc3QgaXNEaXNhYmxlZCA9XG4gICAgICAoIWFsbG93RWRpdCAmJiBpc0Fuc3dlcmVkKGZvcm1pay52YWx1ZXNbcXVlc3Rpb25TbHVnXSkpIHx8IHJlYWRPbmx5O1xuICAgIGNvbnN0IFF1ZXN0aW9uRmllbGRDb21wb25lbnQgPSBnZXRRdWVzdGlvbkZpZWxkQ29tcG9uZW50KHEudHlwZSk7XG5cbiAgICBjb25zdCBmb3JtaWtQcm9wcyA9IHtcbiAgICAgIHZhbHVlOiBmb3JtaWsudmFsdWVzW3F1ZXN0aW9uU2x1Z10sXG4gICAgICBvbkNoYW5nZTogZm9ybWlrLmhhbmRsZUNoYW5nZSxcbiAgICAgIG9uQmx1cjogZm9ybWlrLmhhbmRsZUJsdXIsXG4gICAgICBlcnJvcjpcbiAgICAgICAgZm9ybWlrLnRvdWNoZWRbcXVlc3Rpb25TbHVnXSAmJiBCb29sZWFuKGZvcm1pay5lcnJvcnNbcXVlc3Rpb25TbHVnXSksXG4gICAgICBoZWxwZXJUZXh0OiBmb3JtaWsudG91Y2hlZFtxdWVzdGlvblNsdWddICYmIGZvcm1pay5lcnJvcnNbcXVlc3Rpb25TbHVnXSxcbiAgICAgIHNldEZpZWxkVmFsdWU6IGZvcm1pay5zZXRGaWVsZFZhbHVlXG4gICAgfTtcblxuICAgIHJldHVybiAoXG4gICAgICA8UXVlc3Rpb25GaWVsZENvbXBvbmVudFxuICAgICAgICBrZXk9e3F1ZXN0aW9uU2x1Z31cbiAgICAgICAgcXVlc3Rpb249e3F9XG4gICAgICAgIHF1ZXN0aW9uQ2xhc3NOYW1lPXtxdWVzdGlvbkNsYXNzTmFtZX1cbiAgICAgICAgaXNEaXNhYmxlZD17aXNEaXNhYmxlZH1cbiAgICAgICAgLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2pzeC1wcm9wcy1uby1zcHJlYWRpbmcgKi9cbiAgICAgICAgey4uLmZvcm1pa1Byb3BzfVxuICAgICAgPlxuICAgICAgICB7cS5zdWJfcXVlc3Rpb25fcnVsZXM/Lm1hcCgocnVsZSkgPT4gcmVuZGVyUnVsZShydWxlLCBxdWVzdGlvblNsdWcpKX1cbiAgICAgIDwvUXVlc3Rpb25GaWVsZENvbXBvbmVudD5cbiAgICApO1xuICB9O1xuXG4gIHJldHVybiA8ZGl2IGNsYXNzTmFtZT17Y2xhc3NOYW1lfT57ZXh0cmFRdWVzdGlvbnMubWFwKHJlbmRlclF1ZXN0aW9uKX08L2Rpdj47XG59O1xuXG5FeHRyYVF1ZXN0aW9uc0ZpZWxkcy5wcm9wVHlwZXMgPSB7XG4gIGV4dHJhUXVlc3Rpb25zOiBQcm9wVHlwZXMuYXJyYXkuaXNSZXF1aXJlZCxcbiAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBxdWVzdGlvbkNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgYWxsb3dFZGl0OiBQcm9wVHlwZXMuYm9vbCxcbiAgcmVhZE9ubHk6IFByb3BUeXBlcy5ib29sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBFeHRyYVF1ZXN0aW9uc0ZpZWxkcztcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IFN0YWNrIGZyb20gXCJAbXVpL21hdGVyaWFsL1N0YWNrXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgZGF5anMgZnJvbSBcImRheWpzXCI7XG5pbXBvcnQgeyBBZGFwdGVyRGF5anMgfSBmcm9tIFwiQG11aS94LWRhdGUtcGlja2Vycy9BZGFwdGVyRGF5anNcIjtcbmltcG9ydCB7IExvY2FsaXphdGlvblByb3ZpZGVyIH0gZnJvbSBcIkBtdWkveC1kYXRlLXBpY2tlcnMvTG9jYWxpemF0aW9uUHJvdmlkZXJcIjtcbmltcG9ydCB7IERhdGVQaWNrZXIgfSBmcm9tIFwiQG11aS94LWRhdGUtcGlja2Vycy9EYXRlUGlja2VyXCI7XG5pbXBvcnQgQ2xvc2VJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0Nsb3NlXCI7XG5pbXBvcnQgeyBGSUxURVJfVkFSX0RBVEUgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuaW1wb3J0IHsgZ2V0RXBvY2hMb3dlclVwcGVySW5TZWNvbmRzIH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEJhc2ljRGF0ZVBpY2tlcih7IG9uRmlsdGVyLCBvblJlc2V0IH0pIHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBub3cgPSBkYXlqcygpO1xuICBjb25zdCBbZGF0ZVZhbHVlLCBzZXREYXRlVmFsdWVdID0gdXNlU3RhdGUobm93KTtcbiAgY29uc3Qgb25EYXRlQ2hhbmdlID0gKHZhbCkgPT4ge1xuICAgIHNldERhdGVWYWx1ZSh2YWwpO1xuICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSh2YWwuJGQpO1xuICAgIGNvbnN0IHsgbG93ZXIsIHVwcGVyIH0gPSBnZXRFcG9jaExvd2VyVXBwZXJJblNlY29uZHMoZGF0ZSk7XG4gICAgb25GaWx0ZXIoe1xuICAgICAgdHlwZTogRklMVEVSX1ZBUl9EQVRFLFxuICAgICAgbmFtZTogXCJjcmVhdGVkXCIsXG4gICAgICBkYXRlLFxuICAgICAgbG93ZXIsXG4gICAgICB1cHBlclxuICAgIH0pO1xuICB9O1xuICBjb25zdCBvblJlc2V0QWN0aW9uID0gKCkgPT4ge1xuICAgIG9uUmVzZXQoKTtcbiAgICBzZXREYXRlVmFsdWUobm93KTtcbiAgfTtcbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy5maWx0ZXJEYXRlTGFiZWx9Pnt0KFwiZmlsdGVyLnB1cmNoYXNlZF9vblwiKX08L2Rpdj5cbiAgICAgIDxTdGFja1xuICAgICAgICBhbGlnbkl0ZW1zPVwiY2VudGVyXCJcbiAgICAgICAgZGlyZWN0aW9uPVwicm93XCJcbiAgICAgICAgc3g9e3sgcHQ6IDIsIHBiOiAyIH19XG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmRhdGVQaWNrZXJDb250YWluZXJ9XG4gICAgICA+XG4gICAgICAgIDxDbG9zZUljb25cbiAgICAgICAgICBmb250U2l6ZT1cImxhcmdlXCJcbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5kYXRlcGlja2VyQ2xvc2V9XG4gICAgICAgICAgb25DbGljaz17b25SZXNldEFjdGlvbn1cbiAgICAgICAgLz5cbiAgICAgICAgPExvY2FsaXphdGlvblByb3ZpZGVyIGRhdGVBZGFwdGVyPXtBZGFwdGVyRGF5anN9PlxuICAgICAgICAgIDxEYXRlUGlja2VyXG4gICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5jYWxlbmRhckRpc3BsYXl9XG4gICAgICAgICAgICBvbkNoYW5nZT17b25EYXRlQ2hhbmdlfVxuICAgICAgICAgICAgdmFsdWU9e2RhdGVWYWx1ZX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L0xvY2FsaXphdGlvblByb3ZpZGVyPlxuICAgICAgPC9TdGFjaz5cbiAgICA8Lz5cbiAgKTtcbn1cblxuQmFzaWNEYXRlUGlja2VyLnByb3BUeXBlcyA9IHtcbiAgb25GaWx0ZXI6IFByb3BUeXBlcy5mdW5jLFxuICBvblJlc2V0OiBQcm9wVHlwZXMuZnVuY1xufTtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSwgdXNlUmVmLCB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCBTdGFjayBmcm9tIFwiQG11aS9tYXRlcmlhbC9TdGFja1wiO1xuaW1wb3J0IEZpbHRlckxpc3RJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0ZpbHRlckxpc3RcIjtcbmltcG9ydCB7IEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgQmFzaWNEYXRlUGlja2VyIGZyb20gXCIuL0RhdGVwaWNrZXJcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuZnVuY3Rpb24gRmlsdGVyKHsgb25GaWx0ZXIsIG9uUmVzZXQgfSkge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IFtzaG93RmlsdGVyTGlzdCwgc2V0U2hvd0ZpbHRlckxpc3RdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbc2hvd0RhdGVwaWNrZXIsIHNldFNob3dEYXRlcGlja2VyXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW2ZpbHRlck51bUFjdGl2ZSwgc2V0RmlsdGVyTnVtQWN0aXZlXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgZmlsdGVyUmVmID0gdXNlUmVmKG51bGwpO1xuICBjb25zdCBoYW5kbGVGaWx0ZXJDbGlja091dHNpZGUgPSAoZXZlbnQpID0+IHtcbiAgICBpZiAoZmlsdGVyUmVmLmN1cnJlbnQgJiYgIWZpbHRlclJlZi5jdXJyZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpIHtcbiAgICAgIGlmIChzaG93RmlsdGVyTGlzdCkge1xuICAgICAgICBzZXRTaG93RmlsdGVyTGlzdChmYWxzZSk7XG4gICAgICAgIHNldFNob3dEYXRlcGlja2VyKGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGhhbmRsZUZpbHRlckNsaWNrT3V0c2lkZSwgZmFsc2UpO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgaGFuZGxlRmlsdGVyQ2xpY2tPdXRzaWRlLCBmYWxzZSk7XG4gICAgfTtcbiAgfSwgW3Nob3dGaWx0ZXJMaXN0XSk7XG5cbiAgY29uc3QgdG9nZ2xlID0gKCkgPT4ge1xuICAgIHNldFNob3dGaWx0ZXJMaXN0KCFzaG93RmlsdGVyTGlzdCk7XG4gICAgc2V0U2hvd0RhdGVwaWNrZXIoIXNob3dEYXRlcGlja2VyKTtcbiAgfTtcbiAgcmV0dXJuIChcbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmZpbHRlckNvbnRhaW5lcn0gcmVmPXtmaWx0ZXJSZWZ9PlxuICAgICAgPFN0YWNrXG4gICAgICAgIGFsaWduSXRlbXM9XCJjZW50ZXJcIlxuICAgICAgICBkaXJlY3Rpb249XCJyb3dcIlxuICAgICAgICBzeD17eyBwdDogMiwgcGI6IDIgfX1cbiAgICAgICAgb25DbGljaz17dG9nZ2xlfVxuICAgICAgPlxuICAgICAgICA8RmlsdGVyTGlzdEljb24gZm9udFNpemU9XCJsYXJnZVwiIGNsYXNzTmFtZT17c3R5bGVzLmZpbHRlckljb259IC8+XG4gICAgICAgIHsvKiogY3VycmVudGx5IGp1c3Qgc2hvd2luZyBcIjFcIiBiZWNhdXNlIHdlJ3JlIGN1cnJlbnRseSBvbmx5IGZpbHRlcmluZyBvbmUgY3JpdGVyaWEgLSBjcmVhdGVkIGRhdGUgKi99XG4gICAgICAgIHtmaWx0ZXJOdW1BY3RpdmUgJiYgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy5maWx0ZXJOdW1BY3RpdmV9PjE8L2Rpdj59XG4gICAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzLmZpbHRlckxhYmVsfT57dChcImZpbHRlci5maWx0ZXJcIil9PC9zcGFuPlxuICAgICAgPC9TdGFjaz5cbiAgICAgIDxCb3hcbiAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuZmlsdGVyTGlzdENvbnRhaW5lcn0gJHtzdHlsZXMuY29udGFpbmVyfSAke1xuICAgICAgICAgIHNob3dGaWx0ZXJMaXN0ID8gc3R5bGVzLnNob3dEYXRlUGlja2VyIDogXCJcIlxuICAgICAgICB9YH1cbiAgICAgID5cbiAgICAgICAgPEJhc2ljRGF0ZVBpY2tlclxuICAgICAgICAgIG9uUmVzZXQ9eygpID0+IHtcbiAgICAgICAgICAgIG9uUmVzZXQoKTtcbiAgICAgICAgICAgIHNldEZpbHRlck51bUFjdGl2ZShmYWxzZSk7XG4gICAgICAgICAgICB0b2dnbGUoKTtcbiAgICAgICAgICB9fVxuICAgICAgICAgIG9uRmlsdGVyPXsoZmlsdGVyKSA9PiB7XG4gICAgICAgICAgICBvbkZpbHRlcihmaWx0ZXIpO1xuICAgICAgICAgICAgc2V0RmlsdGVyTnVtQWN0aXZlKHRydWUpO1xuICAgICAgICAgIH19XG4gICAgICAgIC8+XG4gICAgICA8L0JveD5cbiAgICA8L0JveD5cbiAgKTtcbn1cblxuRmlsdGVyLnByb3BUeXBlcyA9IHtcbiAgb25GaWx0ZXI6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBGaWx0ZXI7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHN0eWxlZCB9IGZyb20gXCJAbXVpL21hdGVyaWFsL3N0eWxlc1wiO1xuaW1wb3J0IFNlYXJjaEljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvU2VhcmNoXCI7XG5pbXBvcnQgQ2xvc2VJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0Nsb3NlXCI7XG5pbXBvcnQgSW5wdXRCYXNlIGZyb20gXCJAbXVpL21hdGVyaWFsL0lucHV0QmFzZVwiO1xuaW1wb3J0IHsgQm94IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEZJTFRFUl9WQVJfT1JERVJfTlVNQkVSIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcblxuY29uc3QgU2VhcmNoQ29udGFpbmVyID0gc3R5bGVkKFwiZGl2XCIpKCgpID0+ICh7XG4gIHBvc2l0aW9uOiBcInJlbGF0aXZlXCIsXG4gIG1hcmdpblJpZ2h0OiBcIjBcIixcbiAgbWFyZ2luTGVmdDogXCIwXCIsXG4gIHdpZHRoOiBcIjEwMCVcIixcbiAgZGlzcGxheTogXCJibG9ja1wiXG59KSk7XG5jb25zdCBTZWFyY2hJY29uV3JhcHBlciA9IHN0eWxlZChcImRpdlwiKSgoKSA9PiAoe1xuICBoZWlnaHQ6IFwiMTAwJVwiLFxuICBwb3NpdGlvbjogXCJhYnNvbHV0ZVwiLFxuICBkaXNwbGF5OiBcImZsZXhcIixcbiAgYWxpZ25JdGVtczogXCJjZW50ZXJcIixcbiAganVzdGlmeUNvbnRlbnQ6IFwiY2VudGVyXCJcbn0pKTtcbmNvbnN0IFN0eWxlZElucHV0QmFzZSA9IHN0eWxlZChJbnB1dEJhc2UpKCgpID0+ICh7XG4gIGNvbG9yOiBcImluaGVyaXRcIixcbiAgYm9yZGVyQm90dG9tOiBcIjFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuNDIpXCIsXG4gIHBhZGRpbmdMZWZ0OiBcIjI1cHhcIixcbiAgcGFkZGluZ1JpZ2h0OiBcIjI1cHhcIixcbiAgZm9udFNpemU6IFwiMWVtXCJcbn0pKTtcbmNvbnN0IENsb3NlSWNvbldyYXBwZXIgPSBzdHlsZWQoQ2xvc2VJY29uKSgoKSA9PiAoe1xuICBwYWRkaW5nOiBcIjJweFwiLFxuICBmb250U2l6ZTogXCIxLjVlbVwiLFxuICBoZWlnaHQ6IFwiMTAwJVwiLFxuICBwb3NpdGlvbjogXCJhYnNvbHV0ZVwiLFxuICB0b3A6IFwiMFwiLFxuICByaWdodDogXCIwXCIsXG4gIGRpc3BsYXk6IFwiZmxleFwiLFxuICBhbGlnbkl0ZW1zOiBcImNlbnRlclwiLFxuICBqdXN0aWZ5Q29udGVudDogXCJjZW50ZXJcIixcbiAgY3Vyc29yOiBcInBvaW50ZXJcIixcbiAgekluZGV4OiBcIjEwMDBcIlxufSkpO1xuXG5mdW5jdGlvbiBTZWFyY2goeyBvblNlYXJjaCwgb25SZXNldCB9KSB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgW3Nob3dDbG9zZSwgc2V0U2hvd0Nsb3NlXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW3NlYXJjaFZhbHVlLCBzZXRTZWFyY2hWYWx1ZV0gPSB1c2VTdGF0ZShcIlwiKTtcbiAgY29uc3Qgb25LZXlEb3duID0gKGV2ZW50KSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAga2V5LFxuICAgICAgbmF0aXZlRXZlbnQ6IHtcbiAgICAgICAgdGFyZ2V0OiB7IHZhbHVlIH1cbiAgICAgIH1cbiAgICB9ID0gZXZlbnQ7XG4gICAgaWYgKGtleSA9PT0gXCJFbnRlclwiKSB7XG4gICAgICBvblNlYXJjaCh7XG4gICAgICAgIHZhbHVlLFxuICAgICAgICBuYW1lOiBcIm51bWJlclwiLFxuICAgICAgICB0eXBlOiBGSUxURVJfVkFSX09SREVSX05VTUJFUlxuICAgICAgfSk7XG4gICAgICBzZXRTaG93Q2xvc2UodHJ1ZSk7XG4gICAgfVxuICB9O1xuICBjb25zdCByZXNldFNlYXJjaCA9ICgpID0+IHtcbiAgICBzZXRTZWFyY2hWYWx1ZShcIlwiKTtcbiAgICBzZXRTaG93Q2xvc2UoZmFsc2UpO1xuICAgIG9uUmVzZXQoKTtcbiAgfTtcbiAgcmV0dXJuIChcbiAgICA8Qm94PlxuICAgICAgPFNlYXJjaENvbnRhaW5lcj5cbiAgICAgICAge3Nob3dDbG9zZSAmJiAoXG4gICAgICAgICAgPENsb3NlSWNvbldyYXBwZXIgb25DbGljaz17cmVzZXRTZWFyY2h9PlxuICAgICAgICAgICAgPENsb3NlSWNvbiAvPlxuICAgICAgICAgIDwvQ2xvc2VJY29uV3JhcHBlcj5cbiAgICAgICAgKX1cbiAgICAgICAgPFNlYXJjaEljb25XcmFwcGVyPlxuICAgICAgICAgIDxTZWFyY2hJY29uIC8+XG4gICAgICAgIDwvU2VhcmNoSWNvbldyYXBwZXI+XG4gICAgICAgIDxTdHlsZWRJbnB1dEJhc2VcbiAgICAgICAgICBwbGFjZWhvbGRlcj17dChcIm9yZGVyX3NlYXJjaC5vcmRlcl9udW1iZXJcIil9XG4gICAgICAgICAgaW5wdXRQcm9wcz17eyBcImFyaWEtbGFiZWxcIjogXCJzZWFyY2hcIiB9fVxuICAgICAgICAgIHZhbHVlPXtzZWFyY2hWYWx1ZX1cbiAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHNldFNlYXJjaFZhbHVlKGUudGFyZ2V0LnZhbHVlKX1cbiAgICAgICAgICBvbktleURvd249e29uS2V5RG93bn1cbiAgICAgICAgLz5cbiAgICAgIDwvU2VhcmNoQ29udGFpbmVyPlxuICAgIDwvQm94PlxuICApO1xufVxuXG5TZWFyY2gucHJvcFR5cGVzID0ge1xuICBvblNlYXJjaDogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uUmVzZXQ6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBTZWFyY2g7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUsIHVzZVJlZiwgdXNlRWZmZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgU3RhY2sgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvU3RhY2tcIjtcbmltcG9ydCB7IEJveCwgQnV0dG9uIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBJbXBvcnRFeHBvcnRJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0ltcG9ydEV4cG9ydFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5mdW5jdGlvbiBTb3J0KHsgb25Tb3J0IH0pIHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBbc2hvd1NvcnQsIHNldFNob3dTb3J0XSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3Qgc29ydFJlZiA9IHVzZVJlZihudWxsKTtcbiAgY29uc3QgaGFuZGxlU29ydENsaWNrT3V0c2lkZSA9IChldmVudCkgPT4ge1xuICAgIGlmIChzb3J0UmVmLmN1cnJlbnQgJiYgIXNvcnRSZWYuY3VycmVudC5jb250YWlucyhldmVudC50YXJnZXQpKSB7XG4gICAgICBzZXRTaG93U29ydChmYWxzZSk7XG4gICAgfVxuICB9O1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBoYW5kbGVTb3J0Q2xpY2tPdXRzaWRlLCBmYWxzZSk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBoYW5kbGVTb3J0Q2xpY2tPdXRzaWRlLCBmYWxzZSk7XG4gICAgfTtcbiAgfSwgW3Nob3dTb3J0XSk7XG5cbiAgY29uc3QgdG9nZ2xlID0gKCkgPT4ge1xuICAgIHNldFNob3dTb3J0KCFzaG93U29ydCk7XG4gIH07XG4gIHJldHVybiAoXG4gICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5zb3J0Q29udGFpbmVyfSBvbkNsaWNrPXt0b2dnbGV9PlxuICAgICAgPFN0YWNrXG4gICAgICAgIHJlZj17c29ydFJlZn1cbiAgICAgICAgYWxpZ25JdGVtcz1cImNlbnRlclwiXG4gICAgICAgIGRpcmVjdGlvbj1cInJvd1wiXG4gICAgICAgIHN4PXt7IHB0OiAyLCBwYjogMiB9fVxuICAgICAgPlxuICAgICAgICA8SW1wb3J0RXhwb3J0SWNvbiBmb250U2l6ZT1cImxhcmdlXCIgY2xhc3NOYW1lPXtzdHlsZXMuc29ydEljb259IC8+XG4gICAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzLnNvcnRMYWJlbH0+e3QoXCJzb3J0LnNvcnRcIil9PC9zcGFuPlxuICAgICAgPC9TdGFjaz5cbiAgICAgIHtzaG93U29ydCAmJiAoXG4gICAgICAgIDxCb3ggY2xhc3NOYW1lPXtgJHtzdHlsZXMuc29ydExpc3RDb250YWluZXJ9ICR7c3R5bGVzLmNvbnRhaW5lcn1gfT5cbiAgICAgICAgICA8QnV0dG9uIGNsYXNzTmFtZT17c3R5bGVzLmxhYmVsfSBvbkNsaWNrPXsoKSA9PiBvblNvcnQoXCJkZXNjXCIpfT5cbiAgICAgICAgICAgIHt0KFwic29ydC5uZXdfZmlyc3RcIil9XG4gICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgPEJ1dHRvbiBjbGFzc05hbWU9e3N0eWxlcy5sYWJlbH0gb25DbGljaz17KCkgPT4gb25Tb3J0KFwiYXNjXCIpfT5cbiAgICAgICAgICAgIHt0KFwic29ydC5vbGRfZmlyc3RcIil9XG4gICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgIDwvQm94PlxuICAgICAgKX1cbiAgICA8L0JveD5cbiAgKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgU29ydDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IEdyaWQgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IEZpbHRlciBmcm9tIFwiLi9GaWx0ZXJcIjtcbmltcG9ydCBTb3J0IGZyb20gXCIuL1NvcnRcIjtcbmltcG9ydCBTZWFyY2ggZnJvbSBcIi4vU2VhcmNoXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmZ1bmN0aW9uIEZpbHRlclNvcnRTZWFyY2goeyBvbkZpbHRlciwgb25Tb3J0LCBvblNlYXJjaCwgb25SZXNldCB9KSB7XG4gIHJldHVybiAoXG4gICAgPEdyaWQgY29udGFpbmVyIGp1c3RpZnk9XCJmbGV4LWVuZFwiIGFsaWduSXRlbXM9XCJjZW50ZXJcIj5cbiAgICAgIDxHcmlkXG4gICAgICAgIGl0ZW1cbiAgICAgICAgeHM9ezZ9XG4gICAgICAgIGNvbnRhaW5lclxuICAgICAgICBwYWRkaW5nPXsxfVxuICAgICAgICBnYXA9ezJ9XG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmZpbHRlclNvcnRDb250YWluZXJ9XG4gICAgICAgIHN4PXt7IHB0OiAyLCBwYjogMiB9fVxuICAgICAgPlxuICAgICAgICA8R3JpZCBpdGVtPlxuICAgICAgICAgIDxGaWx0ZXIgb25GaWx0ZXI9e29uRmlsdGVyfSBvblJlc2V0PXtvblJlc2V0fSAvPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDxHcmlkIGl0ZW0+XG4gICAgICAgICAgPFNvcnQgb25Tb3J0PXtvblNvcnR9IC8+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgIDwvR3JpZD5cbiAgICAgIDxHcmlkIGl0ZW0geHM9ezZ9IGNvbnRhaW5lciBqdXN0aWZ5Q29udGVudD1cImZsZXgtZW5kXCI+XG4gICAgICAgIDxTZWFyY2ggb25TZWFyY2g9e29uU2VhcmNofSBvblJlc2V0PXtvblJlc2V0fSAvPlxuICAgICAgPC9HcmlkPlxuICAgIDwvR3JpZD5cbiAgKTtcbn1cblxuRmlsdGVyU29ydFNlYXJjaC5wcm9wVHlwZXMgPSB7XG4gIG9uRmlsdGVyOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25Tb3J0OiBQcm9wVHlwZXMuZnVuYyxcbiAgb25TZWFyY2g6IFByb3BUeXBlcy5mdW5jLFxuICBvblJlc2V0OiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgRmlsdGVyU29ydFNlYXJjaDtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTcgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IEJveCwgQnV0dG9uIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcblxuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBGb3JtRm9vdGVyID0gKHsgc2F2ZUxhYmVsLCBjYW5jZWxMYWJlbCwgb25DbG9zZSwgZGlzYWJsZWQgfSkgPT4gKFxuICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmZvb3Rlcn0+XG4gICAgPEJ1dHRvblxuICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuY2FuY2VsQnRufVxuICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICB2YXJpYW50PVwib3V0bGluZWRcIlxuICAgICAgb25DbGljaz17b25DbG9zZX1cbiAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICA+XG4gICAgICB7Y2FuY2VsTGFiZWx9XG4gICAgPC9CdXR0b24+XG4gICAgPEJ1dHRvblxuICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICBjbGFzc05hbWU9e3N0eWxlcy5zYXZlQnRufVxuICAgICAgdmFyaWFudD1cImNvbnRhaW5lZFwiXG4gICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICA+XG4gICAgICB7c2F2ZUxhYmVsfVxuICAgIDwvQnV0dG9uPlxuICA8L0JveD5cbik7XG5cbkZvcm1Gb290ZXIucHJvcFR5cGVzID0ge1xuICBzYXZlTGFiZWw6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGNhbmNlbExhYmVsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuYyxcbiAgZGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBGb3JtRm9vdGVyO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IEVycm9ySWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9FcnJvclwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5mdW5jdGlvbiBFcnJvckxhYmVsKHsgbWVzc2FnZSwgY29sb3IsIGNsYXNzTmFtZXMsIGRhdGFUZXN0SWQgfSkge1xuICByZXR1cm4gKFxuICAgIDxzcGFuXG4gICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5lcnJvckxhYmVsfSAke2NsYXNzTmFtZXMgJiYgY2xhc3NOYW1lc31gfVxuICAgICAgc3R5bGU9e3sgY29sb3IgfX1cbiAgICAgIGRhdGEtdGVzdGlkPXtkYXRhVGVzdElkfVxuICAgID5cbiAgICAgIDxFcnJvckljb24gc3g9e3sgY29sb3IgfX0gLz5cbiAgICAgIHttZXNzYWdlfVxuICAgIDwvc3Bhbj5cbiAgKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgRXJyb3JMYWJlbDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IEJhY2tkcm9wLCBDaXJjdWxhclByb2dyZXNzIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcblxuY29uc3QgTG9hZGVyID0gKHsgb3BlbiB9KSA9PiAoXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1tYWdpYy1udW1iZXJzXG4gIDxCYWNrZHJvcCBvcGVuPXtvcGVufSBzeD17KHRoZW1lKSA9PiAoeyB6SW5kZXg6IHRoZW1lLnpJbmRleC5kcmF3ZXIgKyAxIH0pfT5cbiAgICA8Q2lyY3VsYXJQcm9ncmVzcyBjb2xvcj1cImluaGVyaXRcIiAvPlxuICA8L0JhY2tkcm9wPlxuKTtcblxuTG9hZGVyLnByb3BUeXBlcyA9IHtcbiAgb3BlbjogUHJvcFR5cGVzLmJvb2xcbn07XG5cbmV4cG9ydCBkZWZhdWx0IExvYWRlcjtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCwgdXNlU2VsZWN0b3IsIHNoYWxsb3dFcXVhbCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQm94IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBJbmZpbml0ZVNjcm9sbCBmcm9tIFwicmVhY3QtaW5maW5pdGUtc2Nyb2xsLWNvbXBvbmVudFwiO1xuaW1wb3J0IEZpbHRlclNvcnRTZWFyY2ggZnJvbSBcIi4vRmlsdGVyU29ydFNlYXJjaFwiO1xuaW1wb3J0IE9yZGVyc0xpc3QgZnJvbSBcIi4vT3JkZXJzTGlzdFwiO1xuaW1wb3J0IHsgZ2V0U3VtbWl0Rm9ybWF0dGVkRGF0ZSB9IGZyb20gXCIuLi91dGlscy9zdW1taXRVdGlsc1wiO1xuaW1wb3J0IHtcbiAgZ2V0VGlja2V0c0J5T3JkZXIsXG4gIGdldFVzZXJPcmRlcnMsXG4gIHJlc2V0RmlsdGVyLFxuICByZXNldEVycm9yXG59IGZyb20gXCIuLi9hY3Rpb25zXCI7XG5pbXBvcnQgeyBPTkVfUEFHRV9ORVhUIH0gZnJvbSBcIi4uL3V0aWxzL2NvbnN0YW50c1wiO1xuaW1wb3J0IEN1c3RvbVRoZW1lIGZyb20gXCIuL0N1c3RvbVRoZW1lXCI7XG5pbXBvcnQgTG9hZGVyIGZyb20gXCIuL0xvYWRlclwiO1xuaW1wb3J0IEN1c3RvbURpYWxvZ0NvbnRleHQgZnJvbSBcIi4vQ3VzdG9tRGlhbG9nL0NvbnRleHRcIjtcbmltcG9ydCBDdXN0b21EaWFsb2cgZnJvbSBcIi4vQ3VzdG9tRGlhbG9nXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IE15T3JkZXJzVGlja2V0cyA9ICgpID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG4gIGNvbnN0IFttZXNzYWdlLCBzZXRNZXNzYWdlXSA9IHVzZVN0YXRlKFwiXCIpO1xuICBjb25zdCBbbWVzc2FnZUNhbGxiYWNrLCBzZXRNZXNzYWdlQ2FsbGJhY2tdID0gdXNlU3RhdGUobnVsbCk7XG4gIGNvbnN0IHtcbiAgICBzdW1taXQsXG4gICAgbWVtYmVyT3JkZXJzLFxuICAgIGxvYWRpbmcsXG4gICAgb3JkZXJzX2N1cnJlbnRfcGFnZSxcbiAgICBvcmRlcnNfbGFzdF9wYWdlLFxuICAgIG9yZGVyc19wZXJfcGFnZSxcbiAgICBvcmRlcnNfdG90YWwsXG4gICAgdGlja2V0X3Blcl9wYWdlLFxuICAgIGFwaUVycm9yXG4gIH0gPSB1c2VTZWxlY3Rvcigoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlIHx8IHt9LCBzaGFsbG93RXF1YWwpO1xuICBjb25zdCBbZmlsdGVyLCBzZXRGaWx0ZXJdID0gdXNlU3RhdGUoe30pO1xuICBjb25zdCBbc29ydCwgc2V0U29ydF0gPSB1c2VTdGF0ZSh7fSk7XG5cbiAgY29uc3Qgb25SZXNldCA9ICgpID0+IHtcbiAgICBzZXRTb3J0KHt9KTtcbiAgICBzZXRGaWx0ZXIoe30pO1xuICAgIGRpc3BhdGNoKHJlc2V0RmlsdGVyKCkpO1xuICB9O1xuXG4gIGNvbnN0IHJlc2V0QXBpRXJyb3IgPSAoKSA9PiB7XG4gICAgZGlzcGF0Y2gocmVzZXRFcnJvcigpKTtcbiAgfTtcblxuICBjb25zdCBmZXRjaERhdGEgPSBhc3luYyAocGFnZSkgPT4ge1xuICAgIGRpc3BhdGNoKFxuICAgICAgZ2V0VXNlck9yZGVycyh7XG4gICAgICAgIHBhZ2UsXG4gICAgICAgIHBlclBhZ2U6IG9yZGVyc19wZXJfcGFnZSxcbiAgICAgICAgZmlsdGVyLFxuICAgICAgICBzb3J0XG4gICAgICB9KVxuICAgICkudGhlbigocGF5bG9hZCkgPT4ge1xuICAgICAgY29uc3QgeyBkYXRhIH0gPSBwYXlsb2FkLnJlc3BvbnNlO1xuICAgICAgZGF0YS5mb3JFYWNoKChvcmRlcikgPT4ge1xuICAgICAgICBkaXNwYXRjaChcbiAgICAgICAgICBnZXRUaWNrZXRzQnlPcmRlcih7XG4gICAgICAgICAgICBvcmRlcklkOiBvcmRlci5pZCxcbiAgICAgICAgICAgIGN1cnJlbnRfcGFnZTogT05FX1BBR0VfTkVYVCxcbiAgICAgICAgICAgIHBlclBhZ2U6IHRpY2tldF9wZXJfcGFnZVxuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGZldGNoRGF0YShvcmRlcnNfY3VycmVudF9wYWdlKTtcbiAgfSwgW2ZpbHRlcl0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGFwaUVycm9yKSB7XG4gICAgICBzZXRNZXNzYWdlKGFwaUVycm9yKTtcbiAgICAgIHNldE1lc3NhZ2VDYWxsYmFjayhyZXNldEFwaUVycm9yKTtcbiAgICB9XG4gIH0sIFthcGlFcnJvcl0pO1xuXG4gIGNvbnN0IG9uRmlsdGVyID0gKGZpbHRlcikgPT4ge1xuICAgIHNldFNvcnQoe30pO1xuICAgIHNldEZpbHRlcihmaWx0ZXIpO1xuICB9O1xuICBjb25zdCBvblNvcnQgPSAoZGlyZWN0aW9uKSA9PiB7XG4gICAgc2V0RmlsdGVyKHt9KTtcbiAgICBzZXRTb3J0KHsgZGlyZWN0aW9uLCBuYW1lOiBcImNyZWF0ZWRcIiB9KTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxDdXN0b21UaGVtZT5cbiAgICAgIDxMb2FkZXIgb3Blbj17bG9hZGluZ30gLz5cbiAgICAgIDxDdXN0b21EaWFsb2dcbiAgICAgICAgb3Blbj17ISFtZXNzYWdlfVxuICAgICAgICBvbkNsb3NlPXsoKSA9PiB7XG4gICAgICAgICAgc2V0TWVzc2FnZShudWxsKTtcbiAgICAgICAgICBpZiAobWVzc2FnZUNhbGxiYWNrKSBtZXNzYWdlQ2FsbGJhY2soKTtcbiAgICAgICAgfX1cbiAgICAgICAgYm9keT17bWVzc2FnZT8uYm9keX1cbiAgICAgICAgdGl0bGU9e21lc3NhZ2U/LnRpdGxlfVxuICAgICAgLz5cbiAgICAgIDxGaWx0ZXJTb3J0U2VhcmNoXG4gICAgICAgIG9uRmlsdGVyPXtvbkZpbHRlcn1cbiAgICAgICAgb25Tb3J0PXtvblNvcnR9XG4gICAgICAgIG9uU2VhcmNoPXtvbkZpbHRlcn1cbiAgICAgICAgb25SZXNldD17b25SZXNldH1cbiAgICAgIC8+XG4gICAgICA8Qm94XG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLndpZGdldEhlYWRlcn1cbiAgICAgICAgc3g9e3sgcGFkZGluZzogeyB4czogMiwgbWQ6IDAsIGxnOiAwIH0gfX1cbiAgICAgICAgZGF0YS10ZXN0aWQ9XCJteS1vcmRlcnMtdGlja2V0LWhlYWRlclwiXG4gICAgICA+XG4gICAgICAgIDxoMiBjbGFzc05hbWU9e3N0eWxlcy5zdW1taXRUaXRsZURhdGV9PntzdW1taXQ/Lm5hbWV9PC9oMj5cbiAgICAgICAgPGgyIGNsYXNzTmFtZT17c3R5bGVzLnN1bW1pdFRpdGxlRGF0ZX0+XG4gICAgICAgICAge2dldFN1bW1pdEZvcm1hdHRlZERhdGUoc3VtbWl0KX1cbiAgICAgICAgPC9oMj5cbiAgICAgIDwvQm94PlxuICAgICAgPEN1c3RvbURpYWxvZ0NvbnRleHQuUHJvdmlkZXIgdmFsdWU9eyhzZXRNZXNzYWdlLCBzZXRNZXNzYWdlQ2FsbGJhY2spfT5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGlkPVwiaW5maW5pdGVXcmFwcGVyXCJcbiAgICAgICAgICBzdHlsZT17eyBoZWlnaHQ6IDUwMCwgb3ZlcmZsb3c6IFwiYXV0b1wiLCBtYXJnaW46IFwiMTVweCAwXCIgfX1cbiAgICAgICAgPlxuICAgICAgICAgIHtcIiBcIn1cbiAgICAgICAgICB7bWVtYmVyT3JkZXJzPy5sZW5ndGggPyAoXG4gICAgICAgICAgICA8SW5maW5pdGVTY3JvbGxcbiAgICAgICAgICAgICAgZGF0YUxlbmd0aD17b3JkZXJzX3RvdGFsfVxuICAgICAgICAgICAgICBuZXh0PXsoKSA9PiBmZXRjaERhdGEob3JkZXJzX2N1cnJlbnRfcGFnZSArIE9ORV9QQUdFX05FWFQpfVxuICAgICAgICAgICAgICBoYXNNb3JlPXtvcmRlcnNfY3VycmVudF9wYWdlIDwgb3JkZXJzX2xhc3RfcGFnZX1cbiAgICAgICAgICAgICAgc2Nyb2xsVGhyZXNob2xkPXsxfVxuICAgICAgICAgICAgICBzY3JvbGxhYmxlVGFyZ2V0PVwiaW5maW5pdGVXcmFwcGVyXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge21lbWJlck9yZGVycz8ubWFwKChvcmRlcikgPT4gKFxuICAgICAgICAgICAgICAgIDxPcmRlcnNMaXN0XG4gICAgICAgICAgICAgICAgICBrZXk9e29yZGVyLm51bWJlciArIG9yZGVyLmlkfVxuICAgICAgICAgICAgICAgICAgb3JkZXI9e29yZGVyfVxuICAgICAgICAgICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICA8L0luZmluaXRlU2Nyb2xsPlxuICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLm5vT3JkZXJzRm91bmR9Pnt0KFwib3JkZXJzLm5vX29yZGVyc1wiKX08L0JveD5cbiAgICAgICAgICApfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvQ3VzdG9tRGlhbG9nQ29udGV4dC5Qcm92aWRlcj5cbiAgICA8L0N1c3RvbVRoZW1lPlxuICApO1xufTtcbmV4cG9ydCBkZWZhdWx0IE15T3JkZXJzVGlja2V0cztcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEdyaWQsIEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgRGl2aWRlciBmcm9tIFwiQG11aS9tYXRlcmlhbC9EaXZpZGVyXCI7XG5pbXBvcnQgeyBjYWxjdWxhdGVPcmRlclRvdGFscywgZm9ybWF0Q3VycmVuY3kgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgT3JkZXJTdW1tYXJ5VGFibGUgPSAoeyBvcmRlciwgc3VtbWl0IH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCB7IGRpc2NvdW50VG90YWwsIHJlZnVuZFRvdGFsLCB0YXhlc1RvdGFsLCBhbW91bnRUb3RhbCwgdGlja2V0U3VtbWFyeSB9ID1cbiAgICBjYWxjdWxhdGVPcmRlclRvdGFscyh7IG9yZGVyLCBzdW1taXQgfSk7XG4gIGNvbnN0IGh1bmRyZWQgPSAxMDA7XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyU3VtbWFyeVRhYmxlfT5cbiAgICAgIHt0aWNrZXRTdW1tYXJ5Py5sZW5ndGggPiAwICYmIChcbiAgICAgICAgPD5cbiAgICAgICAgICB7dGlja2V0U3VtbWFyeS5tYXAoKHRpY2tldCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdGlja2V0VG90YWwgPVxuICAgICAgICAgICAgICAodGlja2V0LnF0eSAqICh0aWNrZXQudGlja2V0X3R5cGUuY29zdCAqIGh1bmRyZWQpKSAvIGh1bmRyZWQ7XG5cbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgIDxHcmlkXG4gICAgICAgICAgICAgICAgY29udGFpbmVyXG4gICAgICAgICAgICAgICAga2V5PXtgdGl4b3JkZXJfJHt0aWNrZXQudGlja2V0X3R5cGUuY3JlYXRlZH1gfVxuICAgICAgICAgICAgICAgIHN4PXt7IHBiOiAxIH19XG4gICAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJvcmRlci1zdW1tYXJ5LWl0ZW1pemVkXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxHcmlkIHhzPXs4fSBpdGVtPlxuICAgICAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAgICAgIHh7dGlja2V0LnF0eX0ge3RpY2tldC50aWNrZXRfdHlwZS5uYW1lfVxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICAgICAgICA8R3JpZCB4cz17NH0gaXRlbSBhbGlnbj1cInJpZ2h0XCI+XG4gICAgICAgICAgICAgICAgICB7Zm9ybWF0Q3VycmVuY3kodGlja2V0VG90YWwsIHsgY3VycmVuY3k6IG9yZGVyLmN1cnJlbmN5IH0pfVxuICAgICAgICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9KX1cbiAgICAgICAgPC8+XG4gICAgICApfVxuICAgICAge29yZGVyLmRpc2NvdW50X2Ftb3VudCA+IDAgJiYgKFxuICAgICAgICA8R3JpZCBjb250YWluZXIgc3g9e3sgcGI6IDEgfX0+XG4gICAgICAgICAgPEdyaWQgeHM9ezh9IGl0ZW0+XG4gICAgICAgICAgICB7dChcIm9yZGVyX3N1bW1hcnkuZGlzY291bnRzXCIpfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICA8R3JpZCB4cz17NH0gaXRlbSBhbGlnbj1cInJpZ2h0XCI+XG4gICAgICAgICAgICAte2Rpc2NvdW50VG90YWx9XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICApfVxuICAgICAge29yZGVyLnRheGVzX2Ftb3VudCA+IDAgJiYgKFxuICAgICAgICA8R3JpZCBjb250YWluZXIgc3g9e3sgcGI6IDEgfX0+XG4gICAgICAgICAgPEdyaWQgeHM9ezh9IGl0ZW0+XG4gICAgICAgICAgICB7dChcIm9yZGVyX3N1bW1hcnkudGF4ZXNcIil9XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgIDxHcmlkIHhzPXs0fSBpdGVtIGFsaWduPVwicmlnaHRcIj5cbiAgICAgICAgICAgIHt0YXhlc1RvdGFsfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgKX1cbiAgICAgIHtvcmRlci5zdGF0dXMgPT09IFwiUGFpZFwiICYmIChcbiAgICAgICAgPEdyaWQgY29udGFpbmVyIHN4PXt7IHBiOiAxIH19PlxuICAgICAgICAgIDxHcmlkIHhzPXs4fSBpdGVtPlxuICAgICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5LmFtb3VudF9wYWlkXCIpfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICA8R3JpZCB4cz17NH0gaXRlbSBhbGlnbj1cInJpZ2h0XCI+XG4gICAgICAgICAgICAte2Ftb3VudFRvdGFsfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgKX1cbiAgICAgIHtyZWZ1bmRUb3RhbCA+IDAgJiYgKFxuICAgICAgICA8R3JpZCBjb250YWluZXIgc3g9e3sgcGI6IDEgfX0+XG4gICAgICAgICAgPEdyaWQgeHM9ezh9IGl0ZW0+XG4gICAgICAgICAgICB7dChcIm9yZGVyX3N1bW1hcnkucmVmdW5kc1wiKX1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgPEdyaWQgeHM9ezR9IGl0ZW0gYWxpZ249XCJyaWdodFwiPlxuICAgICAgICAgICAge3JlZnVuZFRvdGFsfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgKX1cbiAgICAgIDxEaXZpZGVyIC8+XG4gICAgICA8R3JpZCBjb250YWluZXIgc3g9e3sgcHQ6IDEsIHBiOiAxIH19PlxuICAgICAgICA8R3JpZCB4cz17OH0gaXRlbT5cbiAgICAgICAgICB7dChcIm9yZGVyX3N1bW1hcnkudG90YWxcIil9XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICAgPEdyaWQgeHM9ezR9IGl0ZW0gYWxpZ249XCJyaWdodFwiPlxuICAgICAgICAgIHtvcmRlci5zdGF0dXMgPT09IFwiUGFpZFwiID8gXCIkMC4wMFwiIDogYW1vdW50VG90YWx9XG4gICAgICAgIDwvR3JpZD5cbiAgICAgIDwvR3JpZD5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbk9yZGVyU3VtbWFyeVRhYmxlLnByb3BUeXBlcyA9IHtcbiAgb3JkZXI6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgY3VycmVuY3k6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgZGlzY291bnRfYW1vdW50OiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIHRheGVzX2Ftb3VudDogUHJvcFR5cGVzLm51bWJlcixcbiAgICBzdGF0dXM6IFByb3BUeXBlcy5zdHJpbmdcbiAgfSksXG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdFxufTtcblxuZXhwb3J0IGRlZmF1bHQgT3JkZXJTdW1tYXJ5VGFibGU7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlTm93IH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XG5pbXBvcnQgeyB0aWNrZXRzUmVmdW5kYWJsZSB9IGZyb20gXCIuLi8uLi91dGlscy90aWNrZXRVdGlsc1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBSZWZ1bmRFbWFpbFN1cHBvcnQgPSAoe1xuICBzdW1taXQsXG4gIHRpY2tldHMsXG4gIHJlZnVuZFJlcXVlc3RlZCxcbiAgdGlja2V0c1RvUmVmdW5kLFxuICBzdWJtaXRSZXF1ZXN0LFxuICBvblJlZnVuZENsaWNrLFxuICBvblJlZnVuZERldGFpbENsaWNrLFxuICBvbkVtYWlsU3VwcG9ydENsaWNrXG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3Qgbm93ID0gdXNlTm93KCk7XG4gIGNvbnN0IGlzSW5SZWZ1bmRhYmxlUGVyaW9kID1cbiAgICBzdW1taXQucmVnaXN0cmF0aW9uX2FsbG93ZWRfcmVmdW5kX3JlcXVlc3RfdGlsbF9kYXRlID4gbm93O1xuICBjb25zdCBhdExlYXN0T25lUmVmdW5kYWJsZVRpY2tldCA9IHRpY2tldHNSZWZ1bmRhYmxlKHRpY2tldHMpO1xuICBjb25zdCBpc1JlZnVuZGFibGUgPSAhIShpc0luUmVmdW5kYWJsZVBlcmlvZCAmJiBhdExlYXN0T25lUmVmdW5kYWJsZVRpY2tldCk7XG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIHtpc1JlZnVuZGFibGUgJiYgKFxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgYXJpYS1sYWJlbD1cInJlZnVuZCByZXF1ZXN0IGJ1dHRvblwiXG4gICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMub3JkZXJTdW1tYXJ5QnV0dG9ufSAke1xuICAgICAgICAgICAgcmVmdW5kUmVxdWVzdGVkICYmIHRpY2tldHNUb1JlZnVuZC5sZW5ndGggPT09IDAgJiYgIXN1Ym1pdFJlcXVlc3RcbiAgICAgICAgICAgICAgPyBzdHlsZXMucmVmdW5kRGlzYWJsZWRcbiAgICAgICAgICAgICAgOiBcIlwiXG4gICAgICAgICAgfWB9XG4gICAgICAgICAgdmFyaWFudD1cIm91dGxpbmVkXCJcbiAgICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICAgIG9uQ2xpY2s9e29uUmVmdW5kQ2xpY2t9XG4gICAgICAgICAgZGlzYWJsZWQ9e1xuICAgICAgICAgICAgcmVmdW5kUmVxdWVzdGVkICYmIHRpY2tldHNUb1JlZnVuZC5sZW5ndGggPT09IDAgJiYgIXN1Ym1pdFJlcXVlc3RcbiAgICAgICAgICB9XG4gICAgICAgID5cbiAgICAgICAgICB7dChcIm9yZGVyX3N1bW1hcnkucmVxdWVzdF9yZWZ1bmRcIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgKX1cbiAgICAgIDxCdXR0b25cbiAgICAgICAgYXJpYS1sYWJlbD1cInJlZnVuZCBkZXRhaWxzIGJ1dHRvblwiXG4gICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5vcmRlclN1bW1hcnlCdXR0b259XG4gICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lZFwiXG4gICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgIG9uQ2xpY2s9e29uUmVmdW5kRGV0YWlsQ2xpY2t9XG4gICAgICA+XG4gICAgICAgIHt0KFwib3JkZXJfc3VtbWFyeS5yZWZ1bmRfZGV0YWlsc1wiKX1cbiAgICAgIDwvQnV0dG9uPlxuICAgICAgPEJ1dHRvblxuICAgICAgICBhcmlhLWxhYmVsPVwiZW1haWwgc3VwcG9ydCBidXR0b25cIlxuICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJTdW1tYXJ5QnV0dG9ufVxuICAgICAgICB2YXJpYW50PVwib3V0bGluZWRcIlxuICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICBvbkNsaWNrPXtvbkVtYWlsU3VwcG9ydENsaWNrfVxuICAgICAgPlxuICAgICAgICB7dChcIm9yZGVyX2luZm8uZW1haWxfc3VwcG9ydFwiKX1cbiAgICAgIDwvQnV0dG9uPlxuICAgIDwvPlxuICApO1xufTtcblxuUmVmdW5kRW1haWxTdXBwb3J0LnByb3BUeXBlcyA9IHtcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0LFxuICB0aWNrZXRzOiBQcm9wVHlwZXMuYXJyYXlPZihPYmplY3QpLFxuICBvblJlZnVuZENsaWNrOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25SZWZ1bmREZXRhaWxDbGljazogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uRW1haWxTdXBwb3J0Q2xpY2s6IFByb3BUeXBlcy5mdW5jLFxuICByZWZ1bmRSZXF1ZXN0ZWQ6IFByb3BUeXBlcy5ib29sLFxuICB0aWNrZXRzVG9SZWZ1bmQ6IFByb3BUeXBlcy5hcnJheU9mKE9iamVjdCksXG4gIHN1Ym1pdFJlcXVlc3Q6IFByb3BUeXBlcy5ib29sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBSZWZ1bmRFbWFpbFN1cHBvcnQ7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBHcmlkLCBCb3ggfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IE9yZGVyU3VtbWFyeVRhYmxlIGZyb20gXCIuL09yZGVyU3VtbWFyeVRhYmxlXCI7XG5pbXBvcnQgUmVmdW5kRW1haWxTdXBwb3J0IGZyb20gXCIuL1JlZnVuZEVtYWlsU3VwcG9ydFwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBPcmRlclN1bW1hcnkgPSAoe1xuICBvcmRlcixcbiAgc3VtbWl0LFxuICBvblJlZnVuZENsaWNrLFxuICByZWZ1bmRSZXF1ZXN0ZWQsXG4gIHRpY2tldHNUb1JlZnVuZCxcbiAgc3VibWl0UmVxdWVzdCxcbiAgb25SZWZ1bmREZXRhaWxDbGlja1xufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxCb3hcbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJTdW1tYXJ5V3JhcHBlcn1cbiAgICAgICAgc3g9e3sgcHQ6IDQsIHB4OiA0IH19XG4gICAgICAgIGRhdGEtdGVzdGlkPVwib3JkZXItc3VtbWFyeS1jb250YWluZXJcIlxuICAgICAgPlxuICAgICAgICA8aDM+e3QoXCJvcmRlcl9zdW1tYXJ5Lm9yZGVyX3N1bW1hcnlcIil9PC9oMz5cbiAgICAgICAgPEdyaWQgY29udGFpbmVyPlxuICAgICAgICAgIDxHcmlkXG4gICAgICAgICAgICB4cz17MTJ9XG4gICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5vcmRlclN1bW1hcnlQdXJjaGFzZWRJbmZvfVxuICAgICAgICAgICAgc3g9e3sgcGI6IDMgfX1cbiAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8T3JkZXJTdW1tYXJ5VGFibGUgb3JkZXI9e29yZGVyfSBzdW1taXQ9e3N1bW1pdH0gLz5cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgIDwvQm94PlxuICAgICAgPEJveCB4cz17MTJ9IHN4PXt7IHBiOiAzIH19PlxuICAgICAgICA8UmVmdW5kRW1haWxTdXBwb3J0XG4gICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgcmVmdW5kUmVxdWVzdGVkPXtyZWZ1bmRSZXF1ZXN0ZWR9XG4gICAgICAgICAgdGlja2V0cz17b3JkZXI/Lm1lbWJlclRpY2tldHN9XG4gICAgICAgICAgdGlja2V0c1RvUmVmdW5kPXt0aWNrZXRzVG9SZWZ1bmR9XG4gICAgICAgICAgc3VibWl0UmVxdWVzdD17c3VibWl0UmVxdWVzdH1cbiAgICAgICAgICBvblJlZnVuZENsaWNrPXtvblJlZnVuZENsaWNrfVxuICAgICAgICAgIG9uUmVmdW5kRGV0YWlsQ2xpY2s9e29uUmVmdW5kRGV0YWlsQ2xpY2t9XG4gICAgICAgICAgb25FbWFpbFN1cHBvcnRDbGljaz17KCkgPT4ge319XG4gICAgICAgIC8+XG4gICAgICA8L0JveD5cbiAgICA8Lz5cbiAgKTtcbn07XG5PcmRlclN1bW1hcnkucHJvcFR5cGVzID0ge1xuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIG9yZGVyOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIG1lbWJlclRpY2tldHM6IFByb3BUeXBlcy5hcnJheU9mKE9iamVjdClcbiAgfSksXG4gIG9uUmVmdW5kQ2xpY2s6IFByb3BUeXBlcy5mdW5jLFxuICByZWZ1bmRSZXF1ZXN0ZWQ6IFByb3BUeXBlcy5ib29sLFxuICB0aWNrZXRzVG9SZWZ1bmQ6IFByb3BUeXBlcy5hcnJheU9mKE9iamVjdCksXG4gIHN1Ym1pdFJlcXVlc3Q6IFByb3BUeXBlcy5ib29sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBPcmRlclN1bW1hcnk7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCwgdXNlU2VsZWN0b3IsIHNoYWxsb3dFcXVhbCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IEluZmluaXRlU2Nyb2xsIGZyb20gXCJyZWFjdC1pbmZpbml0ZS1zY3JvbGwtY29tcG9uZW50XCI7XG5pbXBvcnQgeyBnZXRVc2VyVGlja2V0cyB9IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5pbXBvcnQgT3JkZXJMaXN0VGlja2V0cyBmcm9tIFwiLi9PcmRlckxpc3RUaWNrZXRzXCI7XG5pbXBvcnQgeyBnZXRTdW1taXRGb3JtYXR0ZWREYXRlIH0gZnJvbSBcIi4uLy4uL3V0aWxzL3N1bW1pdFV0aWxzXCI7XG5pbXBvcnQgeyBPTkVfUEFHRV9ORVhULCBERUZBVUxUX0lURU1TX1BFUl9QQUdFIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2NvbnN0YW50c1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBBc3NpZ25Ub01lID0gKCkgPT4ge1xuICBjb25zdCB7XG4gICAgc3VtbWl0LFxuICAgIHVzZXJUaWNrZXRzLFxuICAgIHVzZXJfdGlja2V0c190b3RhbCxcbiAgICB1c2VyX3RpY2tldHNfY3VycmVudF9wYWdlLFxuICAgIHVzZXJfdGlja2V0c19sYXN0X3BhZ2VcbiAgfSA9IHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUgfHwge30sIHNoYWxsb3dFcXVhbCk7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuXG4gIGNvbnN0IGZldGNoRGF0YSA9IGFzeW5jIChwYWdlKSA9PiB7XG4gICAgZGlzcGF0Y2goZ2V0VXNlclRpY2tldHMoeyBwYWdlLCBwZXJQYWdlOiBERUZBVUxUX0lURU1TX1BFUl9QQUdFIH0pKTtcbiAgfTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGZldGNoRGF0YShPTkVfUEFHRV9ORVhUKTtcbiAgfSwgW10pO1xuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGlkPVwiYXNzaWduZWRUb01lV3JhcHBlclwiXG4gICAgICBjbGFzc05hbWU9e3N0eWxlcy5vcmRlclRpY2tldENvbnRhaW5lcn1cbiAgICAgIHN0eWxlPXt7IGhlaWdodDogNTAwLCBvdmVyZmxvdzogXCJhdXRvXCIsIG1hcmdpbjogXCIxNXB4IDBcIiB9fVxuICAgID5cbiAgICAgIDxoMyBjbGFzc05hbWU9e3N0eWxlcy5hc3NpZ25Ub01lVGV4dH0+e3QoXCJsYWJlbHMuYXNzaWduZWRfdG9fbWVcIil9PC9oMz5cbiAgICAgIDxoMj5cbiAgICAgICAge3N1bW1pdD8ubmFtZX0gPGJyIC8+XG4gICAgICAgIHtnZXRTdW1taXRGb3JtYXR0ZWREYXRlKHN1bW1pdCl9XG4gICAgICA8L2gyPlxuICAgICAge3VzZXJUaWNrZXRzPy5sZW5ndGggPyAoXG4gICAgICAgIDxJbmZpbml0ZVNjcm9sbFxuICAgICAgICAgIGRhdGFMZW5ndGg9e3VzZXJfdGlja2V0c190b3RhbH1cbiAgICAgICAgICBuZXh0PXsoKSA9PiBmZXRjaERhdGEodXNlcl90aWNrZXRzX2N1cnJlbnRfcGFnZSArIE9ORV9QQUdFX05FWFQpfVxuICAgICAgICAgIGhhc01vcmU9e3VzZXJfdGlja2V0c19jdXJyZW50X3BhZ2UgPCB1c2VyX3RpY2tldHNfbGFzdF9wYWdlfVxuICAgICAgICAgIHNjcm9sbFRocmVzaG9sZD17MX1cbiAgICAgICAgICBzY3JvbGxhYmxlVGFyZ2V0PVwiYXNzaWduZWRUb01lV3JhcHBlclwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldExpc3RDb250YWluZXJ9PlxuICAgICAgICAgICAge3VzZXJUaWNrZXRzLm1hcCgodGlja2V0KSA9PiAoXG4gICAgICAgICAgICAgIDxPcmRlckxpc3RUaWNrZXRzXG4gICAgICAgICAgICAgICAga2V5PXt0aWNrZXQuaWR9XG4gICAgICAgICAgICAgICAgdGlja2V0PXt0aWNrZXR9XG4gICAgICAgICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgICAgICAgcmVmdW5kUmVxdWVzdGVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgICBpc1NlbGVjdGVkVG9SZWZ1bmQ9e1tdfVxuICAgICAgICAgICAgICAgIHNlbGVjdFRvUmVmdW5kPXtmYWxzZX1cbiAgICAgICAgICAgICAgICBpc0V4dGVybmFsQXNzaWduZWRUaWNrZXRcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICkpfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L0luZmluaXRlU2Nyb2xsPlxuICAgICAgKSA6IChcbiAgICAgICAgXCJcIlxuICAgICAgKX1cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEFzc2lnblRvTWU7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCb3gsIEdyaWQgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBBdHRlbmRlZVN0YXR1cyA9ICh7IHRpY2tldCwgaXNFeHRlcm5hbEFzc2lnbmVkVGlja2V0IH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICByZXR1cm4gdGlja2V0Lm93bmVyPy5lbWFpbCA/IChcbiAgICA8R3JpZCBjb250YWluZXI+XG4gICAgICA8R3JpZCBpdGVtPlxuICAgICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmxhYmVsfT5cbiAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMuYXNzaWduZWRfdG9cIil9OiA8YnIgLz5cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0T3duZXJFbWFpbH1cbiAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwiYXR0ZW5kZWUtc3RhdHVzLWFzc2lnbmVkXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7XCIgXCJ9XG4gICAgICAgICAgICB7dGlja2V0Lm9yZGVyPy5vd25lcl9lbWFpbH1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvQm94PlxuICAgICAgPC9HcmlkPlxuICAgICAge2lzRXh0ZXJuYWxBc3NpZ25lZFRpY2tldCAmJiAoXG4gICAgICAgIDxHcmlkIGl0ZW0gY2xhc3NOYW1lPXtzdHlsZXMuYXNzaWduZWRCeVRleHR9PlxuICAgICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMubGFiZWx9PlxuICAgICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLmFzc2lnbmVkX2J5XCIpfTogPGJyIC8+XG4gICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAge3RpY2tldC5vcmRlcj8ub3duZXJfZmlyc3RfbmFtZX0ge3RpY2tldC5vcmRlcj8ub3duZXJfbGFzdF9uYW1lfVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvQm94PlxuICAgICAgICA8L0dyaWQ+XG4gICAgICApfVxuICAgIDwvR3JpZD5cbiAgKSA6IChcbiAgICB0aWNrZXQuaXNfYWN0aXZlICYmIChcbiAgICAgIDxzcGFuXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldE93bmVyRW1haWx9XG4gICAgICAgIGRhdGEtdGVzdGlkPVwiYXR0ZW5kZWUtc3RhdHVzLXVuYXNzaWduZWRcIlxuICAgICAgPlxuICAgICAgICB7dChcInRpY2tldF9zdGF0dXMuYXR0ZW5kZWVfc3RhdHVzX3VuYXNzaWduZWRcIil9XG4gICAgICA8L3NwYW4+XG4gICAgKVxuICApO1xufTtcblxuQXR0ZW5kZWVTdGF0dXMucHJvcFR5cGVzID0ge1xuICB0aWNrZXQ6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgb3duZXI6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgICBlbWFpbDogUHJvcFR5cGVzLnN0cmluZ1xuICAgIH0pLFxuICAgIGlzX2FjdGl2ZTogUHJvcFR5cGVzLmJvb2xcbiAgfSksXG4gIGlzRXh0ZXJuYWxBc3NpZ25lZFRpY2tldDogUHJvcFR5cGVzLmJvb2xcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEF0dGVuZGVlU3RhdHVzO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IE9yZGVyTGlzdFRpY2tldHMgZnJvbSBcIi4vT3JkZXJMaXN0VGlja2V0c1wiO1xuaW1wb3J0IHsgUEFHSU5BVElPTl9ESVNQTEFZX0NPVU5UIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2NvbnN0YW50c1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBPcmRlckxpc3RJdGVtID0gKHtcbiAgc3VtbWl0LFxuICBvcmRlcixcbiAgb25QYWdpbmF0ZUNsaWNrLFxuICByZWZ1bmRSZXF1ZXN0ZWQsXG4gIHRpY2tldHNUb1JlZnVuZCxcbiAgc2VsZWN0VG9SZWZ1bmRcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBbaXRlbXNUb0Rpc3BsYXksIHNldEl0ZW1zVG9EaXNwbGF5XSA9IHVzZVN0YXRlKFxuICAgIFBBR0lOQVRJT05fRElTUExBWV9DT1VOVFxuICApO1xuXG4gIGlmICghb3JkZXI/Lm1lbWJlclRpY2tldHM/Lmxlbmd0aCkgcmV0dXJuIG51bGw7XG4gIGNvbnN0IHNsaWNlZFRpY2tldHMgPSBvcmRlcj8ubWVtYmVyVGlja2V0cz8uc2xpY2UoMCwgaXRlbXNUb0Rpc3BsYXkpO1xuXG4gIGNvbnN0IG9uVmlld01vcmUgPSAoKSA9PiB7XG4gICAgaWYgKG9yZGVyPy50aWNrZXRzX3RvdGFsID4gb3JkZXI/Lm1lbWJlclRpY2tldHMubGVuZ3RoKSB7XG4gICAgICBvblBhZ2luYXRlQ2xpY2soKTtcbiAgICB9XG4gICAgc2V0SXRlbXNUb0Rpc3BsYXkoaXRlbXNUb0Rpc3BsYXkgKyBQQUdJTkFUSU9OX0RJU1BMQVlfQ09VTlQpO1xuICB9O1xuXG4gIGNvbnN0IG9uVmlld0xlc3MgPSAoKSA9PiBzZXRJdGVtc1RvRGlzcGxheShQQUdJTkFUSU9OX0RJU1BMQVlfQ09VTlQpO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIHtzbGljZWRUaWNrZXRzPy5tYXAoKHRpY2tldCkgPT4gKFxuICAgICAgICA8T3JkZXJMaXN0VGlja2V0c1xuICAgICAgICAgIGtleT17dGlja2V0LmlkfVxuICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgIHJlZnVuZFJlcXVlc3RlZD17cmVmdW5kUmVxdWVzdGVkfVxuICAgICAgICAgIGlzU2VsZWN0ZWRUb1JlZnVuZD17ISF0aWNrZXRzVG9SZWZ1bmQuZmluZCgodCkgPT4gdC5pZCA9PT0gdGlja2V0LmlkKX1cbiAgICAgICAgICBzZWxlY3RUb1JlZnVuZD17c2VsZWN0VG9SZWZ1bmR9XG4gICAgICAgIC8+XG4gICAgICApKX1cbiAgICAgIHtvcmRlcj8udGlja2V0c190b3RhbCA+IGl0ZW1zVG9EaXNwbGF5ID8gKFxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgYXJpYS1sYWJlbD1cInZpZXcgbW9yZSBidXR0b25cIlxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnZpZXdNb3JlQnV0dG9ufVxuICAgICAgICAgIG9uQ2xpY2s9e29uVmlld01vcmV9XG4gICAgICAgID5cbiAgICAgICAgICB7dChcIm9yZGVycy10aWNrZXRzLnZpZXdfbW9yZVwiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICApIDogKFxuICAgICAgICBcIlwiXG4gICAgICApfVxuICAgICAge3NsaWNlZFRpY2tldHM/Lmxlbmd0aCA+IFBBR0lOQVRJT05fRElTUExBWV9DT1VOVCAmJlxuICAgICAgc2xpY2VkVGlja2V0cz8ubGVuZ3RoID09PSBvcmRlcj8udGlja2V0c190b3RhbCA/IChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJ2aWV3IGxlc3MgYnV0dG9uXCJcbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy52aWV3TW9yZUJ1dHRvbn1cbiAgICAgICAgICBvbkNsaWNrPXtvblZpZXdMZXNzfVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJvcmRlcnMtdGlja2V0cy52aWV3X2xlc3NcIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgKSA6IChcbiAgICAgICAgXCJcIlxuICAgICAgKX1cbiAgICA8Lz5cbiAgKTtcbn07XG5cbk9yZGVyTGlzdEl0ZW0ucHJvcFR5cGVzID0ge1xuICBvcmRlcjogUHJvcFR5cGVzLm9iamVjdCxcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0XG59O1xuXG5leHBvcnQgZGVmYXVsdCBPcmRlckxpc3RJdGVtO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBHcmlkLCBCdXR0b24gfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IFN0YWNrIGZyb20gXCJAbXVpL21hdGVyaWFsL1N0YWNrXCI7XG5pbXBvcnQgQ2hlY2tib3ggZnJvbSBcIkBtdWkvbWF0ZXJpYWwvQ2hlY2tib3hcIjtcbmltcG9ydCBUaWNrZXRTdGF0dXMgZnJvbSBcIi4uL1RpY2tldFN0YXR1c1wiO1xuaW1wb3J0IHsgZ2V0U3VtbWl0UmVhc3NpZ25EYXRlIH0gZnJvbSBcIi4uLy4uL3V0aWxzL3N1bW1pdFV0aWxzXCI7XG5pbXBvcnQgeyB1c2VOb3cgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcbmltcG9ydCBBdHRlbmRlZVN0YXR1cyBmcm9tIFwiLi9BdHRlbmRlZVN0YXR1c1wiO1xuaW1wb3J0IFRpY2tldERldGFpbCBmcm9tIFwiLi4vVGlja2V0RGV0YWlsXCI7XG5pbXBvcnQgeyB1c2VUaWNrZXREZXRhaWxzIH0gZnJvbSBcIi4uLy4uL2hvb2tzL3VzZVRpY2tldERldGFpbHNcIjtcbmltcG9ydCBUaWNrZXRSZWFzc2lnbiBmcm9tIFwiLi4vVGlja2V0UmVhc3NpZ25cIjtcbmltcG9ydCBDb3B5VGV4dCBmcm9tIFwiLi4vQ29weVRleHRcIjtcbmltcG9ydCBUaWNrZXRBc3NpZ24gZnJvbSBcIi4uL1RpY2tldEFzc2lnblwiO1xuXG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IG1vZGFsVmlld3MgPSB7XG4gIGRldGFpbDogXCJERVRBSUxcIixcbiAgcmVhc3NpZ246IFwiUkVBU1NJR05cIixcbiAgYXNzaWduOiBcIkFTU0lHTlwiXG59O1xuXG5jb25zdCBUaWNrZXRDVEFzID0gKHtcbiAgaXNJbmNvbXBsZXRlLFxuICBpc1VuYXNzaWduZWQsXG4gIGlzUmVhc3NpZ25hYmxlLFxuICBvbk9wZW5DbGlja1xufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG5cbiAgaWYgKGlzVW5hc3NpZ25lZCkge1xuICAgIHJldHVybiAoXG4gICAgICA8QnV0dG9uXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmFzc2lnblRpY2tldEJ1dHRvbn1cbiAgICAgICAgb25DbGljaz17KCkgPT4gb25PcGVuQ2xpY2sobW9kYWxWaWV3cy5hc3NpZ24pfVxuICAgICAgPlxuICAgICAgICB7dChcInRpY2tldF9zdGF0dXMuYXNzaWduX3RpY2tldFwiKX1cbiAgICAgIDwvQnV0dG9uPlxuICAgICk7XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxTdGFja1xuICAgICAgc3g9e3tcbiAgICAgICAganVzdGlmeUNvbnRlbnQ6IFwic3BhY2UtYmV0d2VlblwiLFxuICAgICAgICB3aWR0aDogXCIxMDAlXCJcbiAgICAgIH19XG4gICAgICBhbGlnbkl0ZW1zPVwiY2VudGVyXCJcbiAgICAgIGRpcmVjdGlvbj1cInJvd1wiXG4gICAgPlxuICAgICAgPEJ1dHRvblxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy52aWV3RmluaXNoVGlja2V0QnV0dG9ufVxuICAgICAgICBvbkNsaWNrPXsoKSA9PiBvbk9wZW5DbGljayhtb2RhbFZpZXdzLmRldGFpbCl9XG4gICAgICA+XG4gICAgICAgIHtpc0luY29tcGxldGVcbiAgICAgICAgICA/IHQoXCJ0aWNrZXRfc3RhdHVzLmZpbmlzaF90aWNrZXRcIilcbiAgICAgICAgICA6IHQoXCJ0aWNrZXRfc3RhdHVzLnZpZXdfdGlja2V0XCIpfVxuICAgICAgPC9CdXR0b24+XG4gICAgICB7aXNSZWFzc2lnbmFibGUgJiYgKFxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgYXJpYS1sYWJlbD1cInJlYXNzaWduIHRpY2tldCBidXR0b25cIlxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnJlYXNzaWduQnV0dG9ufVxuICAgICAgICAgIG9uQ2xpY2s9eygpID0+IG9uT3BlbkNsaWNrKG1vZGFsVmlld3MucmVhc3NpZ24pfVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnJlYXNzaWduX3RpY2tldFwiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICApfVxuICAgIDwvU3RhY2s+XG4gICk7XG59O1xuXG5UaWNrZXRDVEFzLnByb3BUeXBlcyA9IHtcbiAgaXNJbmNvbXBsZXRlOiBQcm9wVHlwZXMuYm9vbC5pc1JlcXVpcmVkLFxuICBpc1VuYXNzaWduZWQ6IFByb3BUeXBlcy5ib29sLmlzUmVxdWlyZWQsXG4gIGlzUmVhc3NpZ25hYmxlOiBQcm9wVHlwZXMuYm9vbC5pc1JlcXVpcmVkLFxuICBvbk9wZW5DbGljazogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZFxufTtcblxuY29uc3QgT3JkZXJMaXN0VGlja2V0cyA9ICh7XG4gIHRpY2tldCxcbiAgc3VtbWl0LFxuICByZWZ1bmRSZXF1ZXN0ZWQsXG4gIGlzU2VsZWN0ZWRUb1JlZnVuZCxcbiAgc2VsZWN0VG9SZWZ1bmQsXG4gIGlzRXh0ZXJuYWxBc3NpZ25lZFRpY2tldFxufSkgPT4ge1xuICBjb25zdCBfaXNFeHRlcm5hbEFzc2lnbmVkVGlja2V0ID0gISFpc0V4dGVybmFsQXNzaWduZWRUaWNrZXQ7XG5cbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBub3cgPSB1c2VOb3coKTtcbiAgY29uc3QgeyBpc1JlZnVuZGFibGUsIGlzVW5hc3NpZ25lZCwgaXNJbmNvbXBsZXRlLCBjYW5SZWFzc2lnbiB9ID1cbiAgICB1c2VUaWNrZXREZXRhaWxzKHRpY2tldCk7XG4gIGNvbnN0IFttb2RhbE9wZW4sIHNldE1vZGFsT3Blbl0gPSB1c2VTdGF0ZShudWxsKTtcbiAgY29uc3QgcmVhc3NpZ25EYXRlID0gZ2V0U3VtbWl0UmVhc3NpZ25EYXRlKHN1bW1pdCk7XG4gIGNvbnN0IGlzUmVhc3NpZ25hYmxlID0gcmVhc3NpZ25EYXRlID4gbm93O1xuXG4gIGNvbnN0IGhhbmRsZUNsb3NlTW9kYWwgPSAoKSA9PiB7XG4gICAgc2V0TW9kYWxPcGVuKG51bGwpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZU9wZW5Nb2RhbCA9ICh2aWV3KSA9PiB7XG4gICAgc2V0TW9kYWxPcGVuKHZpZXcpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPEdyaWRcbiAgICAgIGtleT17dGlja2V0LmlkfVxuICAgICAgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJXcmFwcGVyfVxuICAgICAgY29udGFpbmVyXG4gICAgICBkYXRhLXRlc3RpZD1cIm9yZGVyLWxpc3QtdGlja2V0XCJcbiAgICA+XG4gICAgICA8R3JpZFxuICAgICAgICB4cz17OH1cbiAgICAgICAgcGFkZGluZz17Mn1cbiAgICAgICAgaXRlbVxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRUaWNrZXRUeXBlfVxuICAgICAgICBqdXN0aWZ5PVwic3BhY2UtYmV0d2VlblwiXG4gICAgICA+XG4gICAgICAgIDxTdGFja1xuICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogXCJmbGV4LXN0YXJ0XCJcbiAgICAgICAgICB9fVxuICAgICAgICAgIGRpcmVjdGlvbj1cInJvd1wiXG4gICAgICAgID5cbiAgICAgICAgICB7cmVmdW5kUmVxdWVzdGVkICYmIGlzUmVmdW5kYWJsZSAmJiAoXG4gICAgICAgICAgICA8Q2hlY2tib3hcbiAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cInJlZnVuZCB0aWNrZXQgY2hlY2tib3hcIlxuICAgICAgICAgICAgICByb2xlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICBjaGVja2VkPXtpc1NlbGVjdGVkVG9SZWZ1bmR9XG4gICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gc2VsZWN0VG9SZWZ1bmQoZSwgdGlja2V0KX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKX1cbiAgICAgICAgICA8aDQ+e3RpY2tldC50aWNrZXRfdHlwZT8ubmFtZX08L2g0PlxuICAgICAgICA8L1N0YWNrPlxuICAgICAgPC9HcmlkPlxuICAgICAgPEdyaWQgeHM9ezR9IHBhZGRpbmc9ezJ9IGl0ZW0+XG4gICAgICAgIHsvKiBUbyBhZGQgYmFkZ2UgZmVhdHVyZXMgKi99XG4gICAgICA8L0dyaWQ+XG4gICAgICA8R3JpZCB4cz17MTJ9IHN4PXt7IHB4OiAyLCBwYjogMiB9fSBpdGVtPlxuICAgICAgICA8QXR0ZW5kZWVTdGF0dXNcbiAgICAgICAgICB0aWNrZXQ9e3RpY2tldH1cbiAgICAgICAgICBpc0V4dGVybmFsQXNzaWduZWRUaWNrZXQ9e19pc0V4dGVybmFsQXNzaWduZWRUaWNrZXR9XG4gICAgICAgIC8+XG4gICAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldE5vfT5cbiAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMudGlja2V0X25vXCIpfTp7XCIgXCJ9XG4gICAgICAgICAgPENvcHlUZXh0XG4gICAgICAgICAgICB0ZXh0PXt0aWNrZXQubnVtYmVyfVxuICAgICAgICAgICAgdG9vbHRpcFRleHQ9e3QoXCJ0aWNrZXRfc3RhdHVzLmNvcHlfdGlja2V0X251bWJlclwiKX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L0dyaWQ+XG4gICAgICA8R3JpZCBjb250YWluZXI+XG4gICAgICAgIDxHcmlkIGNvbnRhaW5lciBkaXJlY3Rpb249XCJyb3dcIiB4cz17MTJ9IGxnPXs2fSBhbGlnbkl0ZW1zPVwiY2VudGVyXCIgaXRlbT5cbiAgICAgICAgICA8VGlja2V0U3RhdHVzIHRpY2tldD17dGlja2V0fSAvPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDxHcmlkIHBhZGRpbmc9ezJ9IHhzPXsxMn0gbGc9ezZ9IGNvbnRhaW5lciBpdGVtPlxuICAgICAgICAgIDxHcmlkXG4gICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICBjb250YWluZXJcbiAgICAgICAgICAgIGFsaWduPVwiY2VudGVyXCJcbiAgICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICAgIGp1c3RpZnlDb250ZW50OiBcInNwYWNlLWJldHdlZW5cIlxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldEFjdGlvbkJ1dHRvbnN9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge3RpY2tldC5pc19hY3RpdmUgJiYgKFxuICAgICAgICAgICAgICA8VGlja2V0Q1RBc1xuICAgICAgICAgICAgICAgIGlzVW5hc3NpZ25lZD17aXNVbmFzc2lnbmVkfVxuICAgICAgICAgICAgICAgIGlzSW5jb21wbGV0ZT17aXNJbmNvbXBsZXRlfVxuICAgICAgICAgICAgICAgIGlzUmVhc3NpZ25hYmxlPXtcbiAgICAgICAgICAgICAgICAgIGlzUmVhc3NpZ25hYmxlICYmIGNhblJlYXNzaWduICYmICFfaXNFeHRlcm5hbEFzc2lnbmVkVGlja2V0XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG9uT3BlbkNsaWNrPXtoYW5kbGVPcGVuTW9kYWx9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgPC9HcmlkPlxuICAgICAgPFRpY2tldERldGFpbFxuICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgdGlja2V0SWQ9e3RpY2tldD8uaWR9XG4gICAgICAgIG9yZGVySWQ9e3RpY2tldD8ub3JkZXJfaWQgfHwgdGlja2V0Py5vcmRlcj8uaWR9XG4gICAgICAgIG93bmVySWQ9e3RpY2tldD8ub3duZXI/LmlkfVxuICAgICAgICBvcGVuPXttb2RhbE9wZW4gPT09IG1vZGFsVmlld3MuZGV0YWlsfVxuICAgICAgICBvbkNsb3NlPXtoYW5kbGVDbG9zZU1vZGFsfVxuICAgICAgLz5cbiAgICAgIHtpc1JlYXNzaWduYWJsZSAmJiBjYW5SZWFzc2lnbiAmJiAhX2lzRXh0ZXJuYWxBc3NpZ25lZFRpY2tldCAmJiAoXG4gICAgICAgIDw+XG4gICAgICAgICAgPFRpY2tldFJlYXNzaWduXG4gICAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICAgIHRpY2tldElkPXt0aWNrZXQ/LmlkfVxuICAgICAgICAgICAgb3JkZXJJZD17dGlja2V0Py5vcmRlcl9pZH1cbiAgICAgICAgICAgIG93bmVySWQ9e3RpY2tldD8ub3duZXI/LmlkfVxuICAgICAgICAgICAgb3Blbj17bW9kYWxPcGVuID09PSBtb2RhbFZpZXdzLnJlYXNzaWdufVxuICAgICAgICAgICAgb25DbG9zZT17aGFuZGxlQ2xvc2VNb2RhbH1cbiAgICAgICAgICAvPlxuICAgICAgICAgIDxUaWNrZXRBc3NpZ25cbiAgICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgICAgdGlja2V0SWQ9e3RpY2tldD8uaWR9XG4gICAgICAgICAgICBvcmRlcklkPXt0aWNrZXQ/Lm9yZGVyX2lkfVxuICAgICAgICAgICAgb3duZXJJZD17dGlja2V0Py5vd25lcj8uaWR9XG4gICAgICAgICAgICBvcGVuPXttb2RhbE9wZW4gPT09IG1vZGFsVmlld3MuYXNzaWdufVxuICAgICAgICAgICAgb25DbG9zZT17aGFuZGxlQ2xvc2VNb2RhbH1cbiAgICAgICAgICAvPlxuICAgICAgICA8Lz5cbiAgICAgICl9XG4gICAgPC9HcmlkPlxuICApO1xufTtcblxuT3JkZXJMaXN0VGlja2V0cy5wcm9wVHlwZXMgPSB7XG4gIHRpY2tldDogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBpZDogUHJvcFR5cGVzLm51bWJlcixcbiAgICBvcmRlcl9pZDogUHJvcFR5cGVzLm51bWJlcixcbiAgICBvd25lcjogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAgIGlkOiBQcm9wVHlwZXMubnVtYmVyLFxuICAgICAgZW1haWw6IFByb3BUeXBlcy5zdHJpbmdcbiAgICB9KSxcbiAgICBudW1iZXI6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgdG90YWxfcmVmdW5kZWRfYW1vdW50OiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIHRpY2tldF90eXBlOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgICAgbmFtZTogUHJvcFR5cGVzLnN0cmluZ1xuICAgIH0pLFxuICAgIGlzX2FjdGl2ZTogUHJvcFR5cGVzLmJvb2xcbiAgfSksXG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdCxcbiAgcmVmdW5kUmVxdWVzdGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgaXNTZWxlY3RlZFRvUmVmdW5kOiBQcm9wVHlwZXMuYm9vbCxcbiAgc2VsZWN0VG9SZWZ1bmQ6IFByb3BUeXBlcy5mdW5jLFxuICBpc0V4dGVybmFsQXNzaWduZWRUaWNrZXQ6IFByb3BUeXBlcy5ib29sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBPcmRlckxpc3RUaWNrZXRzO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBHcmlkLCBCb3gsIEJ1dHRvbiB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgU3RhY2sgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvU3RhY2tcIjtcbmltcG9ydCBUYWJzIGZyb20gXCJAbXVpL21hdGVyaWFsL1RhYnNcIjtcbmltcG9ydCBUYWIgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvVGFiXCI7XG5pbXBvcnQgT3JkZXJMaXN0SXRlbSBmcm9tIFwiLi9PcmRlckxpc3RJdGVtXCI7XG5pbXBvcnQgT3JkZXJTdW1tYXJ5IGZyb20gXCIuLi9PcmRlclN1bW1hcnlcIjtcbmltcG9ydCBSZWZ1bmRSZXF1ZXN0c01vZGFsIGZyb20gXCIuLi9SZWZ1bmRSZXF1ZXN0c1wiO1xuaW1wb3J0IEVycm9yTGFiZWwgZnJvbSBcIi4uL0xhYmVscy9FcnJvckxhYmVsXCI7XG5pbXBvcnQgeyBpc1RpY2tldFJlZnVuZGFibGUgfSBmcm9tIFwiLi4vLi4vdXRpbHMvdGlja2V0VXRpbHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCBSZWZ1bmREZXRhaWxzIGZyb20gXCIuLi9SZWZ1bmRSZXF1ZXN0cy9SZWZ1bmREZXRhaWxzXCI7XG5cbmNvbnN0IFRhYlBhbmVsID0gKHByb3BzKSA9PiB7XG4gIGNvbnN0IHsgY2hpbGRyZW4sIHZhbHVlLCBpbmRleCB9ID0gcHJvcHM7XG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgcm9sZT1cInRhYnBhbmVsXCJcbiAgICAgIGhpZGRlbj17dmFsdWUgIT09IGluZGV4fVxuICAgICAgaWQ9e2B0YWJwYW5lbC0ke2luZGV4fWB9XG4gICAgICBhcmlhLWxhYmVsbGVkYnk9e2B0YWItJHtpbmRleH1gfVxuICAgID5cbiAgICAgIHt2YWx1ZSA9PT0gaW5kZXggJiYgY2hpbGRyZW59XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5jb25zdCBPcmRlcnNMaXN0RGVza3RvcE1vYmlsZSA9ICh7XG4gIGlzTW9iaWxlLFxuICBzdW1taXQsXG4gIG9yZGVyLFxuICBkZXRhaWxzUmVxdWlyZWQsXG4gIG9uUGFnaW5hdGVDbGlja1xufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IFt2YWx1ZSwgc2V0VmFsdWVdID0gdXNlU3RhdGUoMCk7XG4gIGNvbnN0IGhhbmRsZUNoYW5nZSA9IChfLCBuZXdWYWx1ZSkgPT4ge1xuICAgIHNldFZhbHVlKG5ld1ZhbHVlKTtcbiAgfTtcbiAgY29uc3QgW3JlZnVuZFJlcXVlc3RlZCwgc2V0UmVmdW5kUmVxdWVzdGVkXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW3RpY2tldHNUb1JlZnVuZCwgc2V0VGlja2V0c1RvUmVmdW5kXSA9IHVzZVN0YXRlKFtdKTtcbiAgY29uc3QgW3N1Ym1pdFJlcXVlc3QsIHNldFN1Ym1pdFJlcXVlc3RdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbcmVmdW5kRGV0YWlsc09wZW4sIHNldFJlZnVuZERldGFpbHNPcGVuXSA9IHVzZVN0YXRlKGZhbHNlKTtcblxuICBjb25zdCBvblJlZnVuZENsaWNrID0gKCkgPT4ge1xuICAgIGlmICh0aWNrZXRzVG9SZWZ1bmQubGVuZ3RoID09PSAwKSB7XG4gICAgICBzZXRSZWZ1bmRSZXF1ZXN0ZWQodHJ1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNldFN1Ym1pdFJlcXVlc3QodHJ1ZSk7XG4gICAgfVxuICB9O1xuICBjb25zdCB1bnNlbGVjdFJlZnVuZFRpY2tldHMgPSAodGlja2V0KSA9PiB7XG4gICAgY29uc3QgZmlsdGVyU2VsZWN0ZWQgPSB0aWNrZXRzVG9SZWZ1bmQuZmlsdGVyKCh0KSA9PiB0LmlkICE9PSB0aWNrZXQuaWQpO1xuICAgIHNldFRpY2tldHNUb1JlZnVuZChmaWx0ZXJTZWxlY3RlZCk7XG4gIH07XG4gIGNvbnN0IHNlbGVjdFRvUmVmdW5kID0gKGUsIHRpY2tldCkgPT4ge1xuICAgIGNvbnN0IHsgY2hlY2tlZCB9ID0gZS50YXJnZXQ7XG4gICAgaWYgKGNoZWNrZWQpIHtcbiAgICAgIGNvbnN0IHNlbGVjdGVkVGlja2V0ID0gb3JkZXI/Lm1lbWJlclRpY2tldHM/LmZpbmQoXG4gICAgICAgICh0KSA9PiB0LmlkID09PSB0aWNrZXQuaWRcbiAgICAgICk7XG4gICAgICBzZXRUaWNrZXRzVG9SZWZ1bmQoWy4uLnRpY2tldHNUb1JlZnVuZCwgc2VsZWN0ZWRUaWNrZXRdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdW5zZWxlY3RSZWZ1bmRUaWNrZXRzKHRpY2tldCk7XG4gICAgfVxuICB9O1xuICBjb25zdCBjYW5jZWxUaWNrZXRzVG9SZWZ1bmQgPSAoKSA9PiB7XG4gICAgc2V0UmVmdW5kUmVxdWVzdGVkKGZhbHNlKTtcbiAgICBzZXRUaWNrZXRzVG9SZWZ1bmQoW10pO1xuICB9O1xuXG4gIGNvbnN0IHNlbGVjdEFsbFRpY2tldHMgPSAoKSA9PiB7XG4gICAgY29uc3QgcmVmdW5kYWJsZVRpY2tldHMgPSBvcmRlcj8ubWVtYmVyVGlja2V0cz8uZmlsdGVyKFxuICAgICAgKHRpY2tldCkgPT4gaXNUaWNrZXRSZWZ1bmRhYmxlKHRpY2tldCkgPT09IHRydWVcbiAgICApO1xuICAgIHNldFRpY2tldHNUb1JlZnVuZChyZWZ1bmRhYmxlVGlja2V0cyk7XG4gIH07XG5cbiAgY29uc3QgcmVzZXRBbGxSZWZ1bmRTdGF0dXNlcyA9ICgpID0+IHtcbiAgICBzZXRSZWZ1bmRSZXF1ZXN0ZWQoZmFsc2UpO1xuICAgIHNldFN1Ym1pdFJlcXVlc3QoZmFsc2UpO1xuICAgIHNldFRpY2tldHNUb1JlZnVuZChbXSk7XG4gIH07XG5cbiAgY29uc3QgbW9yZURldGFpbHMgPSAoKSA9PlxuICAgIGRldGFpbHNSZXF1aXJlZCAmJiAoXG4gICAgICA8RXJyb3JMYWJlbFxuICAgICAgICBtZXNzYWdlPXt0KFwidGlja2V0X3N0YXR1cy5zdGF0dXNfZGV0YWlsc19yZXF1aXJlZFwiKX1cbiAgICAgICAgY29sb3I9XCIjZmY5ODAwXCJcbiAgICAgICAgZGF0YVRlc3RJZD1cIm1vcmUtZGV0YWlscy1sYWJlbFwiXG4gICAgICAvPlxuICAgICk7XG5cbiAgcmV0dXJuIGlzTW9iaWxlID8gKFxuICAgIDxCb3hcbiAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldExpc3RDb250YWluZXJ9XG4gICAgICBkYXRhLXRlc3RpZD1cIm1vYmlsZS1vcmRlcnMtbGlzdC1jb250YWluZXJcIlxuICAgID5cbiAgICAgIDxCb3ggc3g9e3sgYm9yZGVyQ29sb3I6IFwiZGl2aWRlclwiLCBwYjogMiB9fT5cbiAgICAgICAgPFRhYnNcbiAgICAgICAgICB2YWx1ZT17dmFsdWV9XG4gICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX1cbiAgICAgICAgICB0ZXh0Q29sb3I9XCIjMDAwXCJcbiAgICAgICAgICBhcmlhLWxhYmVsPVwiVGlja2V0cyAmIFN1bW1hcnlcIlxuICAgICAgICAgIFRhYkluZGljYXRvclByb3BzPXt7XG4gICAgICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiBcIiMwMDBcIlxuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICA8VGFiIGxhYmVsPXt0KFwibGFiZWxzLnRpY2tldHNcIil9IGNsYXNzTmFtZT17c3R5bGVzLnRhYkJ1dHRvbnN9IC8+XG4gICAgICAgICAgPFRhYiBsYWJlbD17dChcImxhYmVscy5zdW1tYXJ5XCIpfSBjbGFzc05hbWU9e3N0eWxlcy50YWJCdXR0b25zfSAvPlxuICAgICAgICA8L1RhYnM+XG4gICAgICA8L0JveD5cbiAgICAgIHttb3JlRGV0YWlscygpfVxuICAgICAgPFRhYlBhbmVsIHZhbHVlPXt2YWx1ZX0gaW5kZXg9ezB9PlxuICAgICAgICA8T3JkZXJMaXN0SXRlbVxuICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgIG9yZGVyPXtvcmRlcn1cbiAgICAgICAgICBvblBhZ2luYXRlQ2xpY2s9e29uUGFnaW5hdGVDbGlja31cbiAgICAgICAgICByZWZ1bmRSZXF1ZXN0ZWQ9e3JlZnVuZFJlcXVlc3RlZH1cbiAgICAgICAgICB0aWNrZXRzVG9SZWZ1bmQ9e3RpY2tldHNUb1JlZnVuZH1cbiAgICAgICAgICBzZWxlY3RUb1JlZnVuZD17c2VsZWN0VG9SZWZ1bmR9XG4gICAgICAgICAgc3VibWl0UmVxdWVzdD17c3VibWl0UmVxdWVzdH1cbiAgICAgICAgICB1bnNlbGVjdFJlZnVuZFRpY2tldHM9e3Vuc2VsZWN0UmVmdW5kVGlja2V0c31cbiAgICAgICAgLz5cbiAgICAgIDwvVGFiUGFuZWw+XG4gICAgICA8VGFiUGFuZWwgdmFsdWU9e3ZhbHVlfSBpbmRleD17MX0+XG4gICAgICAgIDxPcmRlclN1bW1hcnlcbiAgICAgICAgICBvcmRlcj17b3JkZXJ9XG4gICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgb25SZWZ1bmRDbGljaz17b25SZWZ1bmRDbGlja31cbiAgICAgICAgICB0aWNrZXRzVG9SZWZ1bmQ9e3RpY2tldHNUb1JlZnVuZH1cbiAgICAgICAgICByZWZ1bmRSZXF1ZXN0ZWQ9e3JlZnVuZFJlcXVlc3RlZH1cbiAgICAgICAgICBzdWJtaXRSZXF1ZXN0PXtzdWJtaXRSZXF1ZXN0fVxuICAgICAgICAvPlxuICAgICAgPC9UYWJQYW5lbD5cbiAgICA8L0JveD5cbiAgKSA6IChcbiAgICA8PlxuICAgICAgPEdyaWQgaXRlbSBtZD17MTJ9PlxuICAgICAgICB7bW9yZURldGFpbHMoKX1cbiAgICAgIDwvR3JpZD5cbiAgICAgIHtyZWZ1bmRSZXF1ZXN0ZWQgJiYgKFxuICAgICAgICA8R3JpZCBpdGVtIG1kPXsxMn0+XG4gICAgICAgICAgPHNwYW4+e3QoXCJ0aWNrZXRfc3RhdHVzLnNlbGVjdF90aWNrZXRfcmVmdW5kXCIpfTwvc3Bhbj5cbiAgICAgICAgICA8U3RhY2tcbiAgICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICAgIGp1c3RpZnlDb250ZW50OiBcImZsZXgtc3RhcnRcIlxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIGFsaWduSXRlbXM9XCJjZW50ZXJcIlxuICAgICAgICAgICAgZGlyZWN0aW9uPVwicm93XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lZFwiXG4gICAgICAgICAgICAgIHNpemU9XCJtZWRpdW1cIlxuICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5yZWZ1bmRCdXR0b25zfVxuICAgICAgICAgICAgICBvbkNsaWNrPXtzZWxlY3RBbGxUaWNrZXRzfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMuc2VsZWN0X2FsbFwiKX1cbiAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICB2YXJpYW50PVwib3V0bGluZWRcIlxuICAgICAgICAgICAgICBzaXplPVwibWVkaXVtXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMucmVmdW5kQnV0dG9uc31cbiAgICAgICAgICAgICAgb25DbGljaz17Y2FuY2VsVGlja2V0c1RvUmVmdW5kfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMuc2VsZWN0X2NhbmNlbFwiKX1cbiAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgIDwvU3RhY2s+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICl9XG4gICAgICA8R3JpZFxuICAgICAgICBwYWRkaW5nPXsxfVxuICAgICAgICBpdGVtXG4gICAgICAgIG1kPXs3fVxuICAgICAgICBvcmRlcj17eyBtZDogMSB9fVxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRMaXN0Q29udGFpbmVyfVxuICAgICAgICBkYXRhLXRlc3RpZD1cImRlc2t0b3Atb3JkZXJzLWxpc3QtY29udGFpbmVyXCJcbiAgICAgID5cbiAgICAgICAgPE9yZGVyTGlzdEl0ZW1cbiAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICBvcmRlcj17b3JkZXJ9XG4gICAgICAgICAgb25QYWdpbmF0ZUNsaWNrPXtvblBhZ2luYXRlQ2xpY2t9XG4gICAgICAgICAgcmVmdW5kUmVxdWVzdGVkPXtyZWZ1bmRSZXF1ZXN0ZWR9XG4gICAgICAgICAgdGlja2V0c1RvUmVmdW5kPXt0aWNrZXRzVG9SZWZ1bmR9XG4gICAgICAgICAgc2VsZWN0VG9SZWZ1bmQ9e3NlbGVjdFRvUmVmdW5kfVxuICAgICAgICAgIHN1Ym1pdFJlcXVlc3Q9e3N1Ym1pdFJlcXVlc3R9XG4gICAgICAgICAgdW5zZWxlY3RSZWZ1bmRUaWNrZXRzPXt1bnNlbGVjdFJlZnVuZFRpY2tldHN9XG4gICAgICAgIC8+XG4gICAgICA8L0dyaWQ+XG4gICAgICA8R3JpZCBwYWRkaW5nPXsxfSBpdGVtIG1kPXs1fSBvcmRlcj17eyBtZDogMSB9fT5cbiAgICAgICAgPE9yZGVyU3VtbWFyeVxuICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgIG9yZGVyPXtvcmRlcn1cbiAgICAgICAgICBvblJlZnVuZENsaWNrPXtvblJlZnVuZENsaWNrfVxuICAgICAgICAgIHRpY2tldHNUb1JlZnVuZD17dGlja2V0c1RvUmVmdW5kfVxuICAgICAgICAgIHJlZnVuZFJlcXVlc3RlZD17cmVmdW5kUmVxdWVzdGVkfVxuICAgICAgICAgIHN1Ym1pdFJlcXVlc3Q9e3N1Ym1pdFJlcXVlc3R9XG4gICAgICAgICAgb25SZWZ1bmREZXRhaWxDbGljaz17KCkgPT4gc2V0UmVmdW5kRGV0YWlsc09wZW4odHJ1ZSl9XG4gICAgICAgIC8+XG4gICAgICA8L0dyaWQ+XG4gICAgICA8UmVmdW5kUmVxdWVzdHNNb2RhbFxuICAgICAgICB0aWNrZXRzPXt0aWNrZXRzVG9SZWZ1bmR9XG4gICAgICAgIG9wZW49e3N1Ym1pdFJlcXVlc3R9XG4gICAgICAgIG9uUmVtb3ZlU2VsZWN0ZWRSZWZ1bmRUaWNrZXRzPXt1bnNlbGVjdFJlZnVuZFRpY2tldHN9XG4gICAgICAgIG9uUmVmdW5kU3VjY2Vzc0Nsb3NlPXsoKSA9PiByZXNldEFsbFJlZnVuZFN0YXR1c2VzKCl9XG4gICAgICAgIG9uQ2xvc2VTbGlkZXI9eygpID0+IHNldFN1Ym1pdFJlcXVlc3QoZmFsc2UpfVxuICAgICAgLz5cbiAgICAgIDxSZWZ1bmREZXRhaWxzXG4gICAgICAgIHRpY2tldHM9e29yZGVyPy5tZW1iZXJUaWNrZXRzfVxuICAgICAgICBvcGVuPXtyZWZ1bmREZXRhaWxzT3Blbn1cbiAgICAgICAgb25DbG9zZVNsaWRlcj17KCkgPT4gc2V0UmVmdW5kRGV0YWlsc09wZW4oZmFsc2UpfVxuICAgICAgLz5cbiAgICA8Lz5cbiAgKTtcbn07XG5cbk9yZGVyc0xpc3REZXNrdG9wTW9iaWxlLnByb3BUeXBlcyA9IHtcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0LFxuICBvcmRlcjogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBtZW1iZXJUaWNrZXRzOiBQcm9wVHlwZXMuYXJyYXlPZihPYmplY3QpXG4gIH0pLFxuICBpc01vYmlsZTogUHJvcFR5cGVzLmJvb2wsXG4gIGRldGFpbHNSZXF1aXJlZDogUHJvcFR5cGVzLmJvb2wsXG4gIG9uUGFnaW5hdGVDbGljazogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE9yZGVyc0xpc3REZXNrdG9wTW9iaWxlO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCwgdXNlU2VsZWN0b3IsIHNoYWxsb3dFcXVhbCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgR3JpZCwgQm94LCBCdXR0b24gfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlVGhlbWUgfSBmcm9tIFwiQG11aS9tYXRlcmlhbC9zdHlsZXNcIjtcbmltcG9ydCB1c2VNZWRpYVF1ZXJ5IGZyb20gXCJAbXVpL21hdGVyaWFsL3VzZU1lZGlhUXVlcnlcIjtcbmltcG9ydCB7IGdldFRpY2tldHNCeU9yZGVyIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcbmltcG9ydCB7IGdldEZvcm1hdHRlZERhdGUgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcbmltcG9ydCB7IE9ORV9QQUdFX05FWFQgfSBmcm9tIFwiLi4vLi4vdXRpbHMvY29uc3RhbnRzXCI7XG5pbXBvcnQgT3JkZXJzTGlzdERlc2t0b3BNb2JpbGUgZnJvbSBcIi4vT3JkZXJzTGlzdERlc2t0b3BNb2JpbGVcIjtcbmltcG9ydCBDb3B5VGV4dCBmcm9tIFwiLi4vQ29weVRleHRcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgT3JkZXJzTGlzdCA9ICh7IHN1bW1pdCwgb3JkZXIgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcbiAgY29uc3QgeyB0aWNrZXRfcGVyX3BhZ2UgfSA9IHVzZVNlbGVjdG9yKFxuICAgIChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUgfHwge30sXG4gICAgc2hhbGxvd0VxdWFsXG4gICk7XG4gIGNvbnN0IHRoZW1lID0gdXNlVGhlbWUoKTtcbiAgY29uc3QgaXNNb2JpbGUgPSB1c2VNZWRpYVF1ZXJ5KHRoZW1lLmJyZWFrcG9pbnRzLmRvd24oXCJsZ1wiKSk7XG4gIGNvbnN0IFtpc01vYmlsZVZpZXdhYmxlLCBzZXRNb2JpbGVWaWV3YWJsZV0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IGRldGFpbHNSZXF1aXJlZCA9IG9yZGVyLm1lbWJlclRpY2tldHM/LmZpbmQoXG4gICAgKHRpY2tldCkgPT4gdGlja2V0Lm93bmVyPy5zdGF0dXMgPT09IFwiSW5jb21wbGV0ZVwiXG4gICk7XG5cbiAgY29uc3Qgb25QYWdpbmF0ZUNsaWNrID0gKCkgPT5cbiAgICBkaXNwYXRjaChcbiAgICAgIGdldFRpY2tldHNCeU9yZGVyKHtcbiAgICAgICAgb3JkZXJJZDogb3JkZXIuaWQsXG4gICAgICAgIHBhZ2U6IG9yZGVyLnRpY2tldHNfcGFnZV9jdXJyZW50ICsgT05FX1BBR0VfTkVYVCxcbiAgICAgICAgcGVyUGFnZTogdGlja2V0X3Blcl9wYWdlLFxuICAgICAgICBuZXh0OiB0cnVlXG4gICAgICB9KVxuICAgICk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPEJveFxuICAgICAgICBzeD17e1xuICAgICAgICAgIHBhZGRpbmc6IHtcbiAgICAgICAgICAgIHhzOiAyLFxuICAgICAgICAgICAgbWQ6IDEsXG4gICAgICAgICAgICBsZzogMFxuICAgICAgICAgIH1cbiAgICAgICAgfX1cbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJUaWNrZXRJbmZvQ29udGFpbmVyfVxuICAgICAgPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyVGlja2V0SW5mb31cbiAgICAgICAgICBkYXRhLXRlc3RpZD1cIm9yZGVyLXRpY2tldC1pbmZvLWNvbnRhaW5lclwiXG4gICAgICAgID5cbiAgICAgICAgICB7dChcIm9yZGVycy5wdXJjaGFzZWRcIil9OiB7Z2V0Rm9ybWF0dGVkRGF0ZShvcmRlci5jcmVhdGVkKX0gfHtcIiBcIn1cbiAgICAgICAgICB7dChcIm9yZGVyX3N1bW1hcnkub3JkZXJfbm9cIil9OntcIiBcIn1cbiAgICAgICAgICA8Q29weVRleHRcbiAgICAgICAgICAgIHRleHQ9e29yZGVyLm51bWJlcn1cbiAgICAgICAgICAgIHRvb2x0aXBUZXh0PXt0KFwib3JkZXJfc3VtbWFyeS5jb3B5X29yZGVyX251bWJlclwiKX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L3NwYW4+XG4gICAgICAgIHtpc01vYmlsZSAmJiAoXG4gICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgc3g9e3sgcGFkZGluZzogMCB9fVxuICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuYmxhY2tCdXR0b259XG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRNb2JpbGVWaWV3YWJsZSghaXNNb2JpbGVWaWV3YWJsZSl9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge2lzTW9iaWxlVmlld2FibGVcbiAgICAgICAgICAgICAgPyB0KFwidGlja2V0X3N0YXR1cy5oaWRlX3RpY2tldHNcIilcbiAgICAgICAgICAgICAgOiB0KFwidGlja2V0X3N0YXR1cy52aWV3X3RpY2tldHNcIil9XG4gICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICl9XG4gICAgICA8L0JveD5cbiAgICAgIDxHcmlkXG4gICAgICAgIGtleT17b3JkZXIuaWR9XG4gICAgICAgIGNvbnRhaW5lclxuICAgICAgICByb3dTcGFjaW5nPXsxfVxuICAgICAgICBjb2x1bW5TcGFjaW5nPXt7IHhzOiAxLCBzbTogMiwgbWQ6IDMgfX1cbiAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMub3JkZXJUaWNrZXRDb250YWluZXJ9ICR7XG4gICAgICAgICAgaXNNb2JpbGUgJiYgIWlzTW9iaWxlVmlld2FibGUgPyBzdHlsZXMuZGlzcGxheV9ub25lIDogXCJcIlxuICAgICAgICB9YH1cbiAgICAgICAgc3g9e3tcbiAgICAgICAgICBmbGV4RGlyZWN0aW9uOiB7XG4gICAgICAgICAgICBtZDogXCJyb3dcIixcbiAgICAgICAgICAgIGxnOiBcInJvd1wiXG4gICAgICAgICAgfSxcbiAgICAgICAgICBwYWRkaW5nOiB7XG4gICAgICAgICAgICB4czogMixcbiAgICAgICAgICAgIG1kOiAwLFxuICAgICAgICAgICAgbGc6IDBcbiAgICAgICAgICB9XG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIDxPcmRlcnNMaXN0RGVza3RvcE1vYmlsZVxuICAgICAgICAgIGlzTW9iaWxlPXtpc01vYmlsZX1cbiAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICBvcmRlcj17b3JkZXJ9XG4gICAgICAgICAgZGV0YWlsc1JlcXVpcmVkPXshIWRldGFpbHNSZXF1aXJlZH1cbiAgICAgICAgICBvblBhZ2luYXRlQ2xpY2s9e29uUGFnaW5hdGVDbGlja31cbiAgICAgICAgLz5cbiAgICAgIDwvR3JpZD5cbiAgICA8Lz5cbiAgKTtcbn07XG5cbk9yZGVyc0xpc3QucHJvcFR5cGVzID0ge1xuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIG9yZGVyOiBQcm9wVHlwZXMub2JqZWN0XG59O1xuXG5leHBvcnQgZGVmYXVsdCBPcmRlcnNMaXN0O1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZU1lbW8gfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCBSaWdodERyYXdlciBmcm9tIFwiLi4vUmlnaHREcmF3ZXJcIjtcbmltcG9ydCBSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXQgZnJvbSBcIi4vUmVmdW5kUmVxdWVzdGVkVGlja2V0XCI7XG5pbXBvcnQgeyBnZXRBbGxSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXRzIH0gZnJvbSBcIi4uLy4uL3V0aWxzL3RpY2tldFV0aWxzXCI7XG5cbmNvbnN0IFJlZnVuZERldGFpbHMgPSAoeyB0aWNrZXRzLCBvcGVuLCBvbkNsb3NlU2xpZGVyIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCByZXF1ZXN0ZWRUaWNrZXRzID0gdXNlTWVtbyhcbiAgICAoKSA9PiBnZXRBbGxSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXRzKHRpY2tldHMpLFxuICAgIFt0aWNrZXRzXVxuICApO1xuICBjb25zdCBjbG9zZVNsaWRlciA9ICgpID0+IHtcbiAgICBvbkNsb3NlU2xpZGVyKCk7XG4gIH07XG4gIHJldHVybiAoXG4gICAgPFJpZ2h0RHJhd2VyXG4gICAgICBpZD1cInJlZnVuZC1kZXRhaWxzXCJcbiAgICAgIG9wZW49e29wZW59XG4gICAgICBvbkNsb3NlPXtjbG9zZVNsaWRlcn1cbiAgICAgIHRpdGxlPXt0KFwib3JkZXJfc3VtbWFyeS5yZWZ1bmRfZGV0YWlsc1wiKX1cbiAgICA+XG4gICAgICB7cmVxdWVzdGVkVGlja2V0cz8ubWFwKCh0aWNrZXQpID0+IChcbiAgICAgICAgPFJlZnVuZFJlcXVlc3RlZFRpY2tldFxuICAgICAgICAgIGtleT17YHJlZnVuZF9yZXFfJHt0aWNrZXQ/LmlkfWB9XG4gICAgICAgICAgdGlja2V0PXt0aWNrZXR9XG4gICAgICAgICAgcmVmdW5kRGV0YWlsc1xuICAgICAgICAvPlxuICAgICAgKSl9XG4gICAgPC9SaWdodERyYXdlcj5cbiAgKTtcbn07XG5cblJlZnVuZERldGFpbHMucHJvcFR5cGVzID0ge1xuICB0aWNrZXRzOiBQcm9wVHlwZXMuYXJyYXlPZihPYmplY3QpLFxuICBvcGVuOiBQcm9wVHlwZXMuYm9vbCxcbiAgb25DbG9zZVNsaWRlcjogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFJlZnVuZERldGFpbHM7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBHcmlkIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBTdGFjayBmcm9tIFwiQG11aS9tYXRlcmlhbC9TdGFja1wiO1xuaW1wb3J0IERlbGV0ZU91dGxpbmVJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0RlbGV0ZU91dGxpbmVcIjtcbmltcG9ydCBBdHRlbmRlZVN0YXR1cyBmcm9tIFwiLi4vT3JkZXJzTGlzdC9BdHRlbmRlZVN0YXR1c1wiO1xuaW1wb3J0IFJlZnVuZFN0YXR1cyBmcm9tIFwiLi9SZWZ1bmRTdGF0dXNcIjtcbmltcG9ydCBDb3B5VGV4dCBmcm9tIFwiLi4vQ29weVRleHRcIjtcblxuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXQgPSAoeyB0aWNrZXQsIG9uUmVtb3ZlLCByZWZ1bmREZXRhaWxzIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuXG4gIHJldHVybiAoXG4gICAgPEdyaWRcbiAgICAgIGNvbnRhaW5lclxuICAgICAgY2xhc3NOYW1lPXtzdHlsZXMucmVmdW5kVGlja2V0Qm94Q29udGFpbmVyfVxuICAgICAgZGF0YS10ZXN0aWQ9XCJyZWZ1bmQtcmVxdWVzdGVkLXRpY2tldC1jb250YWluZXJcIlxuICAgID5cbiAgICAgIDxHcmlkIHhzPXsxMn0gcGFkZGluZz17Mn0gaXRlbSBqdXN0aWZ5PVwic3BhY2UtYmV0d2VlblwiPlxuICAgICAgICA8U3RhY2tcbiAgICAgICAgICBzeD17e1xuICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6IFwic3BhY2UtYmV0d2VlblwiXG4gICAgICAgICAgfX1cbiAgICAgICAgICBkaXJlY3Rpb249XCJyb3dcIlxuICAgICAgICA+XG4gICAgICAgICAgPGg0Pnt0aWNrZXQudGlja2V0X3R5cGU/Lm5hbWV9PC9oND5cbiAgICAgICAgICB7IXJlZnVuZERldGFpbHMgJiYgKFxuICAgICAgICAgICAgPERlbGV0ZU91dGxpbmVJY29uXG4gICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwicmVmdW5kLXJlbW92ZS1idXR0b25cIlxuICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5kZWxldGVJY29ufVxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBvblJlbW92ZSh0aWNrZXQpfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApfVxuICAgICAgICA8L1N0YWNrPlxuICAgICAgPC9HcmlkPlxuICAgICAgPEdyaWQgeHM9ezEyfSBwYWRkaW5nPXsyfSBpdGVtPlxuICAgICAgICA8QXR0ZW5kZWVTdGF0dXMgdGlja2V0PXt0aWNrZXR9IC8+XG4gICAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldE5vfT5cbiAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMudGlja2V0X25vXCIpfTp7XCIgXCJ9XG4gICAgICAgICAgPENvcHlUZXh0IHRleHQ9e3RpY2tldC5udW1iZXJ9IGhpZGVDb3B5IC8+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvR3JpZD5cbiAgICAgIHtyZWZ1bmREZXRhaWxzICYmIChcbiAgICAgICAgPEdyaWQgeHM9ezEyfSBwYWRkaW5nPXsyfSBpdGVtPlxuICAgICAgICAgIDxSZWZ1bmRTdGF0dXMgdGlja2V0PXt0aWNrZXR9IC8+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICl9XG4gICAgPC9HcmlkPlxuICApO1xufTtcblxuUmVmdW5kUmVxdWVzdGVkVGlja2V0LnByb3BUeXBlcyA9IHtcbiAgdGlja2V0OiBQcm9wVHlwZXMub2JqZWN0LFxuICBvblJlbW92ZTogUHJvcFR5cGVzLmZ1bmMsXG4gIHJlZnVuZERldGFpbHM6IFByb3BUeXBlcy5ib29sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXQ7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlTWVtbyB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IGdldFJlZnVuZFJlcXVlc3RlZFN0YXR1c0NvbG9yIH0gZnJvbSBcIi4uLy4uL3V0aWxzL3RpY2tldFV0aWxzXCI7XG5cbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgUmVmdW5kU3RhdHVzID0gKHsgdGlja2V0IH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBzdGF0dXNDb2xvciA9IHVzZU1lbW8oXG4gICAgKCkgPT4gZ2V0UmVmdW5kUmVxdWVzdGVkU3RhdHVzQ29sb3IodGlja2V0KSxcbiAgICBbdGlja2V0XVxuICApO1xuICByZXR1cm4gKFxuICAgIDxCdXR0b25cbiAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgYXJpYS1sYWJlbD1cInRpY2tldCByZWZ1bmQgc3RhdHVzIGxhYmVsXCJcbiAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLmJ1dHRvblBpbGx9ICR7c3R5bGVzW3N0YXR1c0NvbG9yXX1gfVxuICAgID5cbiAgICAgIHt0KGB0aWNrZXRfc3RhdHVzLnJlZnVuZF9yZXF1ZXN0XyR7c3RhdHVzQ29sb3J9YCl9XG4gICAgPC9CdXR0b24+XG4gICk7XG59O1xuXG5SZWZ1bmRTdGF0dXMucHJvcFR5cGVzID0ge1xuICB0aWNrZXQ6IFByb3BUeXBlcy5vYmplY3Rcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFJlZnVuZFN0YXR1cztcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2ggfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7IEJveCwgQnV0dG9uLCBTdHlsZWRFbmdpbmVQcm92aWRlciB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgQ2hlY2tDaXJjbGVJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0NoZWNrQ2lyY2xlXCI7XG5pbXBvcnQgUmlnaHREcmF3ZXIgZnJvbSBcIi4uL1JpZ2h0RHJhd2VyXCI7XG5pbXBvcnQgUmVmdW5kUmVxdWVzdGVkVGlja2V0IGZyb20gXCIuL1JlZnVuZFJlcXVlc3RlZFRpY2tldFwiO1xuaW1wb3J0IEVycm9yTGFiZWwgZnJvbSBcIi4uL0xhYmVscy9FcnJvckxhYmVsXCI7XG5pbXBvcnQgeyByZWZ1bmRCdWxrVGlja2V0cywgdXBkYXRlVGlja2V0c1JlZnVuZFJlcXVlc3RlZCB9IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5pbXBvcnQgeyBTVEVQX09ORSwgU1RFUF9UV08gfSBmcm9tIFwiLi4vLi4vdXRpbHMvY29uc3RhbnRzXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IFJlZnVuZFJlcXVlc3RzTW9kYWwgPSAoe1xuICB0aWNrZXRzLFxuICBvcGVuLFxuICBvblJlbW92ZVNlbGVjdGVkUmVmdW5kVGlja2V0cyxcbiAgb25SZWZ1bmRTdWNjZXNzQ2xvc2UsXG4gIG9uQ2xvc2VTbGlkZXJcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG4gIGNvbnN0IFtzdGVwLCBzZXRTdGVwXSA9IHVzZVN0YXRlKFNURVBfT05FKTtcbiAgY29uc3QgW2Vycm9yTXNnLCBzZXRFcnJvck1zZ10gPSB1c2VTdGF0ZShcIlwiKTtcbiAgY29uc3QgW3JlZnVuZFN1Y2Nlc3MsIHNldFJlZnVuZFN1Y2Nlc3NdID0gdXNlU3RhdGUoZmFsc2UpO1xuXG4gIGNvbnN0IGNsb3NlU2xpZGVyID0gKCkgPT4ge1xuICAgIHNldEVycm9yTXNnKFwiXCIpO1xuICAgIG9uQ2xvc2VTbGlkZXIoKTtcbiAgICBzZXRTdGVwKFNURVBfT05FKTtcbiAgICBpZiAocmVmdW5kU3VjY2Vzcykge1xuICAgICAgb25SZWZ1bmRTdWNjZXNzQ2xvc2UoKTsgLy8gaWYgdGhlIHJlZnVuZCBpcyBhIHN1Y2Nlc3MsIHRyaWdnZXIgYW5kIHJlLXJldHJpZXZlIHRpY2tldHMgYnkgb3JkZXJcbiAgICAgIHNldFJlZnVuZFN1Y2Nlc3MoZmFsc2UpO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCByZWZ1bmRUaWNrZXRzID0gYXN5bmMgKCkgPT4ge1xuICAgIGRpc3BhdGNoKHJlZnVuZEJ1bGtUaWNrZXRzKHsgdGlja2V0cyB9KSkudGhlbigocmVzKSA9PiB7XG4gICAgICBkaXNwYXRjaCh1cGRhdGVUaWNrZXRzUmVmdW5kUmVxdWVzdGVkKHJlcykpOyAvLyByZXR1cm5pbmcgd2hpY2ggdGlja2V0cyB3ZXJlIHN1Y2Nlc3NmdWxcbiAgICAgIGlmIChyZXM/Lmxlbmd0aCA9PT0gdGlja2V0cy5sZW5ndGgpIHtcbiAgICAgICAgc2V0U3RlcChTVEVQX1RXTyk7IC8vIHN1Y2Nlc3MsIGFsbCByZWZ1bmRzIHdlcmUgcmVxdWVzdGVkXG4gICAgICAgIHNldFJlZnVuZFN1Y2Nlc3ModHJ1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZXRFcnJvck1zZyh0KFwiZXJyb3JzLnJlZnVuZF91bnN1Y2Nlc3NmdWxcIikpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHNldEVycm9yTXNnKFwiXCIpO1xuICB9O1xuXG4gIGNvbnN0IHJlZnVuZFN0ZXBPbmUgPSAoKSA9PiAoXG4gICAgPD5cbiAgICAgIDxoMj57dChcImNvbmZpcm1fcG9wdXAucXVlc3Rpb25fdGV4dF9jYW5jZWxcIil9PC9oMj5cbiAgICAgIHtlcnJvck1zZyAmJiAoXG4gICAgICAgIDxFcnJvckxhYmVsXG4gICAgICAgICAgY2xhc3NOYW1lcz17c3R5bGVzLnJlZnVuZEVycm9yTXNnfVxuICAgICAgICAgIGNvbG9yPVwiI0ZGMDAwMFwiXG4gICAgICAgICAgZGF0YVRlc3RJZD1cImZhaWxlZC1yZWZ1bmQtbWVzc2FnZVwiXG4gICAgICAgICAgbWVzc2FnZT17ZXJyb3JNc2d9XG4gICAgICAgIC8+XG4gICAgICApfVxuICAgICAgPEJveD5cbiAgICAgICAge3RpY2tldHMubWFwKCh0aWNrZXQpID0+IChcbiAgICAgICAgICA8UmVmdW5kUmVxdWVzdGVkVGlja2V0XG4gICAgICAgICAgICBrZXk9e3RpY2tldC5pZH1cbiAgICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgICAgb25SZW1vdmU9e29uUmVtb3ZlU2VsZWN0ZWRSZWZ1bmRUaWNrZXRzfVxuICAgICAgICAgIC8+XG4gICAgICAgICkpfVxuICAgICAgPC9Cb3g+XG4gICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmFjdGlvbkJ1dHRvbnN9PlxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgYXJpYS1sYWJlbD1cInJlZnVuZC1jYW5jZWwtYnV0dG9uXCJcbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5jYW5jZWxCdXR0b259XG4gICAgICAgICAgb25DbGljaz17Y2xvc2VTbGlkZXJ9XG4gICAgICAgID5cbiAgICAgICAgICB7dChcImdlbmVyYWwuY2FuY2VsXCIpfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJyZWZ1bmQtY29udGludWUtYnV0dG9uXCJcbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5jb250aW51ZUJ1dHRvbn1cbiAgICAgICAgICBvbkNsaWNrPXtyZWZ1bmRUaWNrZXRzfVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJnZW5lcmFsLmNvbnRpbnVlXCIpfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgIDwvQm94PlxuICAgIDwvPlxuICApO1xuXG4gIGNvbnN0IHJlZnVuZFN0ZXBUd28gPSAoKSA9PiAoXG4gICAgPEJveFxuICAgICAgY2xhc3NOYW1lPXtzdHlsZXMucmVmdW5kU3VjY2Vzc2Z1bH1cbiAgICAgIGRhdGEtdGVzdGlkPVwicmVmdW5kLXJlcXVlc3Qtc3VjY2Vzc2Z1bFwiXG4gICAgPlxuICAgICAgPENoZWNrQ2lyY2xlSWNvbiBzeD17eyBjb2xvcjogXCIjNGNhZjUwXCIgfX0gLz5cbiAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzLnN1Y2Nlc3NNc2d9PlxuICAgICAgICB7dChcInRpY2tldHMucmVmdW5kX3JlcXVlc3Rfc3VjY2Vzc18xXCIpfVxuICAgICAgPC9zcGFuPlxuICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXMuc3VjY2Vzc01zZzJ9PlxuICAgICAgICB7dChcInRpY2tldHMucmVmdW5kX3JlcXVlc3Rfc3VjY2Vzc18yXCIpfVxuICAgICAgPC9zcGFuPlxuICAgICAgPEJ1dHRvblxuICAgICAgICBhcmlhLWxhYmVsPVwicmVmdW5kLWZpbmlzaC1idXR0b25cIlxuICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuY29udGludWVCdXR0b259XG4gICAgICAgIG9uQ2xpY2s9e2Nsb3NlU2xpZGVyfVxuICAgICAgPlxuICAgICAgICB7dChcImdlbmVyYWwuZmluaXNoXCIpfVxuICAgICAgPC9CdXR0b24+XG4gICAgPC9Cb3g+XG4gICk7XG5cbiAgY29uc3QgcmVuZGVyU3RlcHMgPSAoKSA9PiB7XG4gICAgc3dpdGNoIChzdGVwKSB7XG4gICAgICBjYXNlIFNURVBfT05FOlxuICAgICAgICByZXR1cm4gcmVmdW5kU3RlcE9uZSgpO1xuICAgICAgY2FzZSBTVEVQX1RXTzpcbiAgICAgICAgcmV0dXJuIHJlZnVuZFN0ZXBUd28oKTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiByZWZ1bmRTdGVwT25lKCk7XG4gICAgfVxuICB9O1xuICByZXR1cm4gKFxuICAgIDxTdHlsZWRFbmdpbmVQcm92aWRlciBpbmplY3RGaXJzdD5cbiAgICAgIDxSaWdodERyYXdlclxuICAgICAgICBpZD1cInJlZnVuZC1yZXF1ZXN0c1wiXG4gICAgICAgIG9wZW49e29wZW59XG4gICAgICAgIG9uQ2xvc2U9e2Nsb3NlU2xpZGVyfVxuICAgICAgICB0aXRsZT17dChcIm9yZGVyX3N1bW1hcnkucmVxdWVzdF9yZWZ1bmRcIil9XG4gICAgICAgIGRhdGEtdGVzdGlkPVwicmVmdW5kLXJlcXVlc3QtbW9kYWxcIlxuICAgICAgPlxuICAgICAgICB7cmVuZGVyU3RlcHMoKX1cbiAgICAgIDwvUmlnaHREcmF3ZXI+XG4gICAgPC9TdHlsZWRFbmdpbmVQcm92aWRlcj5cbiAgKTtcbn07XG5cblJlZnVuZFJlcXVlc3RzTW9kYWwucHJvcFR5cGVzID0ge1xuICB0aWNrZXRzOiBQcm9wVHlwZXMuYXJyYXlPZihPYmplY3QpLFxuICBvcGVuOiBQcm9wVHlwZXMuYm9vbCxcbiAgb25SZW1vdmVTZWxlY3RlZFJlZnVuZFRpY2tldHM6IFByb3BUeXBlcy5mdW5jLFxuICBvblJlZnVuZFN1Y2Nlc3NDbG9zZTogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uQ2xvc2VTbGlkZXI6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBSZWZ1bmRSZXF1ZXN0c01vZGFsO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgQm94LCBJY29uQnV0dG9uLCBUeXBvZ3JhcGh5LCBEcmF3ZXIgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgQ2xvc2UgYXMgQ2xvc2VJY29uIH0gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWxcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgUmlnaHREcmF3ZXIgPSAoeyBpZCwgdGl0bGUsIGNoaWxkcmVuLCBvcGVuLCBvbkNsb3NlLCBjbGFzc05hbWUgfSkgPT4gKFxuICA8RHJhd2VyXG4gICAgaWQ9e2lkfVxuICAgIG9wZW49e29wZW59XG4gICAgb25DbG9zZT17b25DbG9zZX1cbiAgICBhbmNob3I9XCJyaWdodFwiXG4gICAgTW9kYWxQcm9wcz17eyBrZWVwTW91bnRlZDogZmFsc2UgfX1cbiAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy53cmFwcGVyfSAke2NsYXNzTmFtZX1gfVxuICA+XG4gICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5oZWFkZXJ9PlxuICAgICAgPEljb25CdXR0b25cbiAgICAgICAgZGF0YS10ZXN0aWQ9XCJjbG9zZS1kcmF3ZXJcIlxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5jbG9zZUJ0bn1cbiAgICAgICAgb25DbGljaz17b25DbG9zZX1cbiAgICAgICAgc3g9e3sgZmxvYXQ6IFwicmlnaHRcIiB9fVxuICAgICAgICBmb250U2l6ZT1cImxhcmdlXCJcbiAgICAgID5cbiAgICAgICAgPENsb3NlSWNvbiAvPlxuICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImg1XCIgZ3V0dGVyQm90dG9tIGNsYXNzTmFtZT17c3R5bGVzLnRpdGxlfT5cbiAgICAgICAge3RpdGxlfVxuICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgIDwvQm94PlxuICAgIHtjaGlsZHJlbn1cbiAgPC9EcmF3ZXI+XG4pO1xuXG5SaWdodERyYXdlci5wcm9wVHlwZXMgPSB7XG4gIGlkOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIHRpdGxlOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuc3RyaW5nLCBQcm9wVHlwZXMubm9kZV0pLFxuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG4gIG9wZW46IFByb3BUeXBlcy5ib29sLFxuICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuYyxcbiAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nXG59O1xuXG5leHBvcnQgZGVmYXVsdCBSaWdodERyYXdlcjtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTcgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IFRleHRGaWVsZCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VGb3JtaWsgfSBmcm9tIFwiZm9ybWlrXCI7XG5pbXBvcnQgKiBhcyB5dXAgZnJvbSBcInl1cFwiO1xuXG5pbXBvcnQgRm9ybUZvb3RlciBmcm9tIFwiLi4vLi4vLi4vRm9ybUZvb3RlclwiO1xuXG5jb25zdCBBc3NpZ25Gb3JtID0gKHsgb25TdWJtaXQsIG9uQ2xvc2UsIHNhdmVMYWJlbCB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcblxuICBjb25zdCBmb3JtaWsgPSB1c2VGb3JtaWsoe1xuICAgIGluaXRpYWxWYWx1ZXM6IHtcbiAgICAgIG5ld19hdHRlbmRlZV9lbWFpbDogXCJcIixcbiAgICAgIHBlcnNvbmFsX21lc3NhZ2U6IFwiXCJcbiAgICB9LFxuICAgIHZhbGlkYXRpb25TY2hlbWE6IHl1cC5vYmplY3Qoe1xuICAgICAgbmV3X2F0dGVuZGVlX2VtYWlsOiB5dXBcbiAgICAgICAgLnN0cmluZyh0KFwidmFsaWRhdGlvbi5lbWFpbC5zdHJpbmdcIikpXG4gICAgICAgIC5lbWFpbCh0KFwidmFsaWRhdGlvbi5lbWFpbC5mb3JtYXRcIikpXG4gICAgICAgIC5yZXF1aXJlZCh0KFwidmFsaWRhdGlvbi5lbWFpbC5yZXF1aXJlZFwiKSksXG4gICAgICBwZXJzb25hbF9tZXNzYWdlOiB5dXAuc3RyaW5nKHQoXCJ2YWxpZGF0aW9uLnRleHQuc3RyaW5nXCIpKVxuICAgIH0pLFxuICAgIG9uU3VibWl0XG4gIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPGZvcm0gb25TdWJtaXQ9e2Zvcm1pay5oYW5kbGVTdWJtaXR9IG5vVmFsaWRhdGU+XG4gICAgICA8VGV4dEZpZWxkXG4gICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICBuYW1lPVwibmV3X2F0dGVuZGVlX2VtYWlsXCJcbiAgICAgICAgbGFiZWw9e3QoXCJ0aWNrZXRfcmVhc3NpZ24ubmV3X2F0dGVuZGVlX2VtYWlsXCIpfVxuICAgICAgICB2YWx1ZT17Zm9ybWlrLnZhbHVlcy5uZXdfYXR0ZW5kZWVfZW1haWx9XG4gICAgICAgIG9uQ2hhbmdlPXtmb3JtaWsuaGFuZGxlQ2hhbmdlfVxuICAgICAgICBvbkJsdXI9e2Zvcm1pay5oYW5kbGVCbHVyfVxuICAgICAgICBlcnJvcj17XG4gICAgICAgICAgZm9ybWlrLnRvdWNoZWQubmV3X2F0dGVuZGVlX2VtYWlsICYmXG4gICAgICAgICAgQm9vbGVhbihmb3JtaWsuZXJyb3JzLm5ld19hdHRlbmRlZV9lbWFpbClcbiAgICAgICAgfVxuICAgICAgICBoZWxwZXJUZXh0PXtcbiAgICAgICAgICBmb3JtaWsudG91Y2hlZC5uZXdfYXR0ZW5kZWVfZW1haWwgJiYgZm9ybWlrLmVycm9ycy5uZXdfYXR0ZW5kZWVfZW1haWxcbiAgICAgICAgfVxuICAgICAgICByZXF1aXJlZFxuICAgICAgLz5cbiAgICAgIDxUZXh0RmllbGRcbiAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgIG5hbWU9XCJwZXJzb25hbF9tZXNzYWdlXCJcbiAgICAgICAgbGFiZWw9e3QoXCJ0aWNrZXRfcmVhc3NpZ24ucGVyc29uYWxfbWVzc2FnZVwiKX1cbiAgICAgICAgdmFsdWU9e2Zvcm1pay52YWx1ZXMucGVyc29uYWxfbWVzc2FnZX1cbiAgICAgICAgbXVsdGlsaW5lXG4gICAgICAgIG1pblJvd3M9ezR9XG4gICAgICAgIG9uQ2hhbmdlPXtmb3JtaWsuaGFuZGxlQ2hhbmdlfVxuICAgICAgICBvbkJsdXI9e2Zvcm1pay5oYW5kbGVCbHVyfVxuICAgICAgICBlcnJvcj17XG4gICAgICAgICAgZm9ybWlrLnRvdWNoZWQucGVyc29uYWxfbWVzc2FnZSAmJlxuICAgICAgICAgIEJvb2xlYW4oZm9ybWlrLmVycm9ycy5wZXJzb25hbF9tZXNzYWdlKVxuICAgICAgICB9XG4gICAgICAgIGhlbHBlclRleHQ9e1xuICAgICAgICAgIGZvcm1pay50b3VjaGVkLnBlcnNvbmFsX21lc3NhZ2UgJiYgZm9ybWlrLmVycm9ycy5wZXJzb25hbF9tZXNzYWdlXG4gICAgICAgIH1cbiAgICAgIC8+XG4gICAgICA8Rm9ybUZvb3RlclxuICAgICAgICBzYXZlTGFiZWw9e3NhdmVMYWJlbCB8fCB0KFwidGlja2V0X3JlYXNzaWduLnNhdmVcIil9XG4gICAgICAgIGNhbmNlbExhYmVsPXt0KFwidGlja2V0X3JlYXNzaWduLmNhbmNlbFwiKX1cbiAgICAgICAgb25DbG9zZT17b25DbG9zZX1cbiAgICAgICAgZGlzYWJsZWQ9e2Zvcm1pay5pc1N1Ym1pdHRpbmd9XG4gICAgICAvPlxuICAgIDwvZm9ybT5cbiAgKTtcbn07XG5cbkFzc2lnbkZvcm0ucHJvcFR5cGVzID0ge1xuICBvblN1Ym1pdDogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgb25DbG9zZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgc2F2ZUxhYmVsOiBQcm9wVHlwZXMuc3RyaW5nXG59O1xuXG5leHBvcnQgZGVmYXVsdCBBc3NpZ25Gb3JtO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0LCB7IHVzZUNvbnRleHQsIHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoLCB1c2VTZWxlY3RvciB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQm94LCBCdXR0b24sIFR5cG9ncmFwaHksIERpdmlkZXIgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHtcbiAgYXNzaWduQXR0ZW5kZWUsXG4gIGdldEV4dHJhUXVlc3Rpb25zLFxuICBnZXRUaWNrZXQsXG4gIHNhdmVFeHRyYVF1ZXN0aW9uc1xufSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuaW1wb3J0IFJpZ2h0RHJhd2VyIGZyb20gXCIuLi9SaWdodERyYXdlclwiO1xuaW1wb3J0IEFzc2lnbkVRRm9ybSBmcm9tIFwiLi4vQXNzaWduRVFGb3JtXCI7XG5pbXBvcnQgQXNzaWduRm9ybSBmcm9tIFwiLi9jb21wb25lbnRzL0Fzc2lnbkZvcm1cIjtcbmltcG9ydCB7IHRyYW5zZm9ybUFud2Vyc0Zvcm1hdCB9IGZyb20gXCIuLi9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb21wb25lbnRzL3V0aWxzXCI7XG5pbXBvcnQgeyBNSUxMSVNFQ19UT19TRUMgfSBmcm9tIFwiLi4vLi4vdXRpbHMvY29uc3RhbnRzXCI7XG5pbXBvcnQgQ29weVRleHQgZnJvbSBcIi4uL0NvcHlUZXh0XCI7XG5pbXBvcnQgQ3VzdG9tRGlhbG9nQ29udGV4dCBmcm9tIFwiLi4vQ3VzdG9tRGlhbG9nL0NvbnRleHRcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgVGlja2V0QXNzaWduID0gKHtcbiAgc3VtbWl0LFxuICB0aWNrZXRJZCxcbiAgb3JkZXJJZCxcbiAgb3duZXJJZCxcbiAgb3BlbixcbiAgb25DbG9zZVxufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcbiAgY29uc3QgW3RpY2tldEFzc2lnbmVkLCBzZXRUaWNrZXRBc3NpZ25lZF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IHsgc2V0TWVzc2FnZSwgc2V0TWVzc2FnZUNhbGxiYWNrIH0gPSB1c2VDb250ZXh0KEN1c3RvbURpYWxvZ0NvbnRleHQpO1xuICBjb25zdCB7XG4gICAgY3VycmVudFRpY2tldDogdGlja2V0LFxuICAgIGV4dHJhUXVlc3Rpb25zLFxuICAgIHVzZXI6IHsgdXNlclByb2ZpbGUgfVxuICB9ID0gdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAodGlja2V0SWQgJiYgb3JkZXJJZCAmJiBvcGVuKSB7XG4gICAgICBkaXNwYXRjaChnZXRUaWNrZXQodGlja2V0SWQsIG9yZGVySWQpKTtcbiAgICB9XG4gIH0sIFt0aWNrZXRJZCwgb3JkZXJJZCwgb3Blbl0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKG93bmVySWQgJiYgb3Blbikge1xuICAgICAgZGlzcGF0Y2goZ2V0RXh0cmFRdWVzdGlvbnMob3duZXJJZCkpO1xuICAgIH1cbiAgfSwgW293bmVySWRdKTtcblxuICBjb25zdCBvbkFzc2lnblRvT3RoZXIgPSAodmFsKSA9PiB7XG4gICAgY29uc3QgeyBuZXdfYXR0ZW5kZWVfZW1haWwsIHBlcnNvbmFsX21lc3NhZ2UgfSA9IHZhbDtcbiAgICByZXR1cm4gZGlzcGF0Y2goXG4gICAgICBhc3NpZ25BdHRlbmRlZShvcmRlcklkLCB0aWNrZXRJZCwgbmV3X2F0dGVuZGVlX2VtYWlsLCBwZXJzb25hbF9tZXNzYWdlKVxuICAgICkudGhlbigoKSA9PiB7XG4gICAgICBzZXRUaWNrZXRBc3NpZ25lZCh0cnVlKTtcbiAgICB9KTtcbiAgfTtcblxuICBjb25zdCBvbkFzc2lnblRvTWUgPSAoKSA9PlxuICAgIGRpc3BhdGNoKGFzc2lnbkF0dGVuZGVlKG9yZGVySWQsIHRpY2tldElkLCB1c2VyUHJvZmlsZS5lbWFpbCkpLnRoZW4oKCkgPT4ge1xuICAgICAgc2V0VGlja2V0QXNzaWduZWQodHJ1ZSk7XG4gICAgfSk7XG5cbiAgY29uc3Qgb25DbG9zZUVRRm9ybSA9ICgpID0+IHtcbiAgICBzZXRUaWNrZXRBc3NpZ25lZChmYWxzZSk7XG4gICAgb25DbG9zZSgpO1xuICB9O1xuXG4gIGNvbnN0IG9uQ2xvc2VTYXZlTWVzc2FnZSA9ICgpID0+IHtcbiAgICBzZXRUaWNrZXRBc3NpZ25lZChmYWxzZSk7XG4gICAgc2V0VGltZW91dChvbkNsb3NlLCBNSUxMSVNFQ19UT19TRUMpO1xuICB9O1xuXG4gIGNvbnN0IG9uU2F2ZUVRID0gKHZhbCkgPT4ge1xuICAgIGNvbnN0IGFuc3dlcnMgPSB0cmFuc2Zvcm1BbndlcnNGb3JtYXQodmFsKTtcblxuICAgIHJldHVybiBkaXNwYXRjaChzYXZlRXh0cmFRdWVzdGlvbnModGlja2V0LCBhbnN3ZXJzKSlcbiAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgc2V0TWVzc2FnZSh7XG4gICAgICAgICAgdGl0bGU6IHQoXCJ0aWNrZXRfYXNzaWduLnNhdmluZ19zdWNjZXNzXCIpLFxuICAgICAgICAgIGJvZHk6IHQoXCJ0aWNrZXRfYXNzaWduLnNhdmluZ19zdWNjZXNzX2Rlc2NyaXB0aW9uXCIpXG4gICAgICAgIH0pO1xuICAgICAgICBzZXRNZXNzYWdlQ2FsbGJhY2sob25DbG9zZVNhdmVNZXNzYWdlKTtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZXJyKSA9PiB7XG4gICAgICAgIHNldE1lc3NhZ2Uoe1xuICAgICAgICAgIHRpdGxlOiB0KFwidGlja2V0X2Fzc2lnbi5zYXZpbmdfZXJyb3JcIiksXG4gICAgICAgICAgYm9keTogZXJyLnRvU3RyaW5nKClcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCgpO1xuICAgICAgfSk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8UmlnaHREcmF3ZXJcbiAgICAgIGlkPVwicmVhc3NpZ25EcmF3ZXJcIlxuICAgICAgdGl0bGU9e3QoXCJ0aWNrZXRfYXNzaWduLmFzc2lnbl90aWNrZXRcIil9XG4gICAgICBvcGVuPXtvcGVufVxuICAgICAgb25DbG9zZT17b25DbG9zZX1cbiAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldEFzc2lnbkNvbnRhaW5lcn1cbiAgICA+XG4gICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmFsaWduQ2VudGVyfT5cbiAgICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImJvZHkxXCIgZ3V0dGVyQm90dG9tIGNsYXNzTmFtZT17c3R5bGVzLnN1YnRpdGxlfT5cbiAgICAgICAgICB7dChcInRpY2tldF9hc3NpZ24ucHVyY2hhc2VkX2J5XCIpfSB7dGlja2V0Py5vcmRlcj8ub3duZXJfZW1haWx9XG4gICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImJvZHkxXCIgZ3V0dGVyQm90dG9tIGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyTm99PlxuICAgICAgICAgIDxDb3B5VGV4dFxuICAgICAgICAgICAgdGV4dD17dGlja2V0Py5vcmRlcj8ubnVtYmVyfVxuICAgICAgICAgICAgcmV2ZXJzZWRcbiAgICAgICAgICAgIHdpZHRoPXsyNTB9XG4gICAgICAgICAgICB0b29sdGlwVGV4dD17dChcIm9yZGVyX3N1bW1hcnkuY29weV9vcmRlcl9udW1iZXJcIil9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgPC9Cb3g+XG4gICAgICB7dGlja2V0ICYmICF0aWNrZXRBc3NpZ25lZCAmJiAoXG4gICAgICAgIDw+XG4gICAgICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5hbGlnbkNlbnRlcn0+XG4gICAgICAgICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiaDRcIiBndXR0ZXJCb3R0b20gY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0VHlwZX0+XG4gICAgICAgICAgICAgIHt0aWNrZXQ/LnR5cGU/Lm5hbWV9XG4gICAgICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmFzc2lnbkJ0bn1cbiAgICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgICAgICAgICAgdmFyaWFudD1cImNvbnRhaW5lZFwiXG4gICAgICAgICAgICAgIG9uQ2xpY2s9e29uQXNzaWduVG9NZX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfYXNzaWduLmFzc2lnbl90b19tZVwiKX1cbiAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgIDwvQm94PlxuICAgICAgICAgIDxEaXZpZGVyIHZhcmlhbnQ9XCJtaWRkbGVcIj4mbmJzcDsmbmJzcDtvciZuYnNwOyZuYnNwOzwvRGl2aWRlcj5cbiAgICAgICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmF0dGVuZGVlQ29udGFpbmVyfT5cbiAgICAgICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuYWxpZ25DZW50ZXJ9PlxuICAgICAgICAgICAgICA8VHlwb2dyYXBoeVxuICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJoNFwiXG4gICAgICAgICAgICAgICAgZ3V0dGVyQm90dG9tXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuYXR0ZW5kZWVJbmZvVGl0bGV9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7dChcInRpY2tldF9hc3NpZ24uYXNzaWduX3RvX3NvbWVvbmVfZWxzZVwiKX1cbiAgICAgICAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgICAgICAgICA8VHlwb2dyYXBoeVxuICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJib2R5MVwiXG4gICAgICAgICAgICAgICAgZ3V0dGVyQm90dG9tXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuYXR0ZW5kZWVJbmZvTm90ZX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt0KFwidGlja2V0X2Fzc2lnbi5lbnRlcl9lbWFpbF9ub3RlXCIpfVxuICAgICAgICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgIDxBc3NpZ25Gb3JtXG4gICAgICAgICAgICAgIG9uU3VibWl0PXtvbkFzc2lnblRvT3RoZXJ9XG4gICAgICAgICAgICAgIG9uQ2xvc2U9e29uQ2xvc2V9XG4gICAgICAgICAgICAgIHNhdmVMYWJlbD17dChcInRpY2tldF9hc3NpZ24uc2F2ZV9sYWJlbFwiKX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9Cb3g+XG4gICAgICAgIDwvPlxuICAgICAgKX1cbiAgICAgIHt0aWNrZXQgJiYgdGlja2V0QXNzaWduZWQgJiYgKFxuICAgICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmF0dGVuZGVlQ29udGFpbmVyfT5cbiAgICAgICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmFsaWduQ2VudGVyfT5cbiAgICAgICAgICAgIDxUeXBvZ3JhcGh5XG4gICAgICAgICAgICAgIHZhcmlhbnQ9XCJoNFwiXG4gICAgICAgICAgICAgIGd1dHRlckJvdHRvbVxuICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5hdHRlbmRlZUluZm9UaXRsZX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfYXNzaWduLmFzc2lnbl90b19zb21lb25lX2Vsc2VcIil9XG4gICAgICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICAgICAgICA8VHlwb2dyYXBoeVxuICAgICAgICAgICAgICB2YXJpYW50PVwiYm9keTFcIlxuICAgICAgICAgICAgICBndXR0ZXJCb3R0b21cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuYXR0ZW5kZWVJbmZvTm90ZX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfYXNzaWduLmVudGVyX2VtYWlsX25vdGVcIil9XG4gICAgICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgPEFzc2lnbkZvcm1cbiAgICAgICAgICAgIG9uU3VibWl0PXtvbkFzc2lnblRvT3RoZXJ9XG4gICAgICAgICAgICBvbkNsb3NlPXtvbkNsb3NlfVxuICAgICAgICAgICAgc2F2ZUxhYmVsPXt0KFwidGlja2V0X2Fzc2lnbi5zYXZlX2xhYmVsXCIpfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvQm94PlxuICAgICAgKX1cbiAgICAgIHt0aWNrZXQgJiYgdGlja2V0QXNzaWduZWQgJiYgKFxuICAgICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmF0dGVuZGVlQ29udGFpbmVyfT5cbiAgICAgICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmFsaWduQ2VudGVyfT5cbiAgICAgICAgICAgIDxUeXBvZ3JhcGh5XG4gICAgICAgICAgICAgIHZhcmlhbnQ9XCJoNFwiXG4gICAgICAgICAgICAgIGd1dHRlckJvdHRvbVxuICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5hdHRlbmRlZUluZm9UaXRsZX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfYXNzaWduLmFzc2lnbmVkX3RvXCIpfVxuICAgICAgICAgICAgICA8YnIgLz5cbiAgICAgICAgICAgICAge3RpY2tldD8ub3duZXI/LmVtYWlsfVxuICAgICAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgICAgICAgPFR5cG9ncmFwaHlcbiAgICAgICAgICAgICAgdmFyaWFudD1cImJvZHkxXCJcbiAgICAgICAgICAgICAgZ3V0dGVyQm90dG9tXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmF0dGVuZGVlSW5mb05vdGV9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt0KFwidGlja2V0X2Fzc2lnbi5jb21wbGV0ZV9pbmZvXCIpfVxuICAgICAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgICAgIDwvQm94PlxuICAgICAgICAgIDxBc3NpZ25FUUZvcm1cbiAgICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgICBleHRyYVF1ZXN0aW9ucz17ZXh0cmFRdWVzdGlvbnN9XG4gICAgICAgICAgICBvblN1Ym1pdD17b25TYXZlRVF9XG4gICAgICAgICAgICBvbkNsb3NlPXtvbkNsb3NlRVFGb3JtfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvQm94PlxuICAgICAgKX1cbiAgICA8L1JpZ2h0RHJhd2VyPlxuICApO1xufTtcblxuVGlja2V0QXNzaWduLnByb3BUeXBlcyA9IHtcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0LFxuICB0aWNrZXRJZDogUHJvcFR5cGVzLm51bWJlcixcbiAgb3JkZXJJZDogUHJvcFR5cGVzLm51bWJlcixcbiAgb3duZXJJZDogUHJvcFR5cGVzLm51bWJlcixcbiAgb3BlbjogUHJvcFR5cGVzLmJvb2wsXG4gIG9uQ2xvc2U6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBUaWNrZXRBc3NpZ247XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE3IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBUZXh0RmllbGQsIEF1dG9jb21wbGV0ZSwgVHlwb2dyYXBoeSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBxdWVyeVJlZ2lzdHJhdGlvbkNvbXBhbmllcyB9IGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL3F1ZXJ5LWFjdGlvbnNcIjtcbmltcG9ydCB7IFRJQ0tFVF9BVFRFTkRFRV9LRVlTIH0gZnJvbSBcIi4uLy4uL2NvbnN0YW50c1wiO1xuXG5jb25zdCBDb21wYW55RmllbGQgPSAoeyBmb3JtaWssIHN1bW1pdElkLCBpc1JlcXVpcmVkIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBbaW5wdXRWYWx1ZSwgc2V0SW5wdXRWYWx1ZV0gPSBSZWFjdC51c2VTdGF0ZShcIlwiKTtcbiAgY29uc3QgW29wdGlvbnMsIHNldE9wdGlvbnNdID0gUmVhY3QudXNlU3RhdGUoW10pO1xuICBjb25zdCB7IGVycm9ycywgdmFsdWVzLCB0b3VjaGVkLCBzZXRGaWVsZFRvdWNoZWQsIHNldEZpZWxkVmFsdWUgfSA9IGZvcm1paztcbiAgY29uc3QgbmFtZSA9IFRJQ0tFVF9BVFRFTkRFRV9LRVlTLmNvbXBhbnk7XG4gIGNvbnN0IHZhbHVlID0gdmFsdWVzW25hbWVdO1xuICBjb25zdCBlcnJvciA9IHRvdWNoZWRbbmFtZV0gJiYgQm9vbGVhbihlcnJvcnNbbmFtZV0pO1xuICBjb25zdCBoZWxwZXJUZXh0ID0gdG91Y2hlZFtuYW1lXSAmJiBlcnJvcnNbbmFtZV07XG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaW5wdXRWYWx1ZSA9PT0gXCJcIikge1xuICAgICAgc2V0T3B0aW9ucyh2YWx1ZSA/IFt2YWx1ZV0gOiBbXSk7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHF1ZXJ5UmVnaXN0cmF0aW9uQ29tcGFuaWVzKHN1bW1pdElkLCBpbnB1dFZhbHVlLCAocmVzdWx0cykgPT4ge1xuICAgICAgbGV0IG5ld09wdGlvbnMgPSBbXTtcblxuICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgIG5ld09wdGlvbnMgPSBbdmFsdWVdO1xuICAgICAgfVxuXG4gICAgICBpZiAocmVzdWx0cykge1xuICAgICAgICBuZXdPcHRpb25zID0gWy4uLm5ld09wdGlvbnMsIC4uLnJlc3VsdHNdO1xuICAgICAgfVxuXG4gICAgICBzZXRPcHRpb25zKG5ld09wdGlvbnMpO1xuICAgIH0pO1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH0sIFt2YWx1ZSwgaW5wdXRWYWx1ZV0pO1xuXG4gIHJldHVybiAoXG4gICAgPEF1dG9jb21wbGV0ZVxuICAgICAgbmFtZT17bmFtZX1cbiAgICAgIG9wdGlvbnM9e29wdGlvbnN9XG4gICAgICBhdXRvQ29tcGxldGVcbiAgICAgIGZyZWVTb2xvXG4gICAgICBpbmNsdWRlSW5wdXRJbkxpc3RcbiAgICAgIGZpbHRlclNlbGVjdGVkT3B0aW9uc1xuICAgICAgdmFsdWU9e3ZhbHVlfVxuICAgICAgb25CbHVyPXsoKSA9PiBzZXRGaWVsZFRvdWNoZWQobmFtZSwgdHJ1ZSwgdHJ1ZSl9XG4gICAgICBnZXRPcHRpb25MYWJlbD17KG9wdGlvbikgPT4ge1xuICAgICAgICAvLyBWYWx1ZSBzZWxlY3RlZCB3aXRoIGVudGVyLCByaWdodCBmcm9tIHRoZSBpbnB1dFxuICAgICAgICBpZiAodHlwZW9mIG9wdGlvbiA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgIHJldHVybiBvcHRpb247XG4gICAgICAgIH1cbiAgICAgICAgLy8gQWRkIFwieHh4XCIgb3B0aW9uIGNyZWF0ZWQgZHluYW1pY2FsbHlcbiAgICAgICAgaWYgKG9wdGlvbi5pbnB1dFZhbHVlKSB7XG4gICAgICAgICAgcmV0dXJuIG9wdGlvbi5pbnB1dFZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIC8vIFJlZ3VsYXIgb3B0aW9uXG4gICAgICAgIHJldHVybiBvcHRpb24ubmFtZTtcbiAgICAgIH19XG4gICAgICBvbkNoYW5nZT17KGV2ZW50LCBuZXdWYWx1ZSkgPT4ge1xuICAgICAgICBjb25zdCB0bXBWYWx1ZSA9IG5ld1ZhbHVlPy5pbnB1dFZhbHVlIHx8IG5ld1ZhbHVlO1xuICAgICAgICBzZXRPcHRpb25zKHRtcFZhbHVlID8gW3RtcFZhbHVlLCAuLi5vcHRpb25zXSA6IG9wdGlvbnMpO1xuICAgICAgICBzZXRGaWVsZFZhbHVlKG5hbWUsIHRtcFZhbHVlKTtcbiAgICAgIH19XG4gICAgICBvbklucHV0Q2hhbmdlPXsoZXZlbnQsIG5ld0lucHV0VmFsdWUpID0+IHtcbiAgICAgICAgc2V0SW5wdXRWYWx1ZShuZXdJbnB1dFZhbHVlKTtcbiAgICAgIH19XG4gICAgICBmaWx0ZXJPcHRpb25zPXsob3B0aW9ucywgcGFyYW1zKSA9PiB7XG4gICAgICAgIGNvbnN0IHsgaW5wdXRWYWx1ZSB9ID0gcGFyYW1zO1xuICAgICAgICBjb25zdCBmaWx0ZXJlZCA9IFsuLi5vcHRpb25zXTtcbiAgICAgICAgLy8gU3VnZ2VzdCB0aGUgY3JlYXRpb24gb2YgYSBuZXcgdmFsdWVcbiAgICAgICAgY29uc3QgaXNFeGlzdGluZyA9IG9wdGlvbnMuc29tZShcbiAgICAgICAgICAob3B0aW9uKSA9PiBpbnB1dFZhbHVlID09PSBvcHRpb24udGl0bGVcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKGlucHV0VmFsdWUgIT09IFwiXCIgJiYgIWlzRXhpc3RpbmcpIHtcbiAgICAgICAgICBmaWx0ZXJlZC5wdXNoKHtcbiAgICAgICAgICAgIGlucHV0VmFsdWUsXG4gICAgICAgICAgICBuYW1lOiBgU2VsZWN0IFwiJHtpbnB1dFZhbHVlfVwiYFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZpbHRlcmVkO1xuICAgICAgfX1cbiAgICAgIHJlbmRlcklucHV0PXsocGFyYW1zKSA9PiAoXG4gICAgICAgIDxUZXh0RmllbGRcbiAgICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvanN4LXByb3BzLW5vLXNwcmVhZGluZyAqL1xuICAgICAgICAgIHsuLi5wYXJhbXN9XG4gICAgICAgICAgbGFiZWw9e3QoXCJ0aWNrZXRfZGV0YWlsLmF0dGVuZGVlX2NvbXBhbnlcIil9XG4gICAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgICAgcmVxdWlyZWQ9e2lzUmVxdWlyZWR9XG4gICAgICAgICAgaGVscGVyVGV4dD17aGVscGVyVGV4dH1cbiAgICAgICAgICBlcnJvcj17ZXJyb3J9XG4gICAgICAgIC8+XG4gICAgICApfVxuICAgICAgcmVuZGVyT3B0aW9uPXsocHJvcHMsIG9wdGlvbikgPT4ge1xuICAgICAgICBjb25zdCB7IGtleSwgLi4ub3B0aW9uUHJvcHMgfSA9IHByb3BzO1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nXG4gICAgICAgICAgPGxpIGtleT17a2V5fSB7Li4ub3B0aW9uUHJvcHN9PlxuICAgICAgICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImJvZHkyXCIgc3g9e3sgY29sb3I6IFwidGV4dC5zZWNvbmRhcnlcIiB9fT5cbiAgICAgICAgICAgICAge29wdGlvbi5uYW1lfVxuICAgICAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgICAgIDwvbGk+XG4gICAgICAgICk7XG4gICAgICB9fVxuICAgIC8+XG4gICk7XG59O1xuXG5Db21wYW55RmllbGQucHJvcFR5cGVzID0ge1xuICBmb3JtaWs6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgc3VtbWl0SWQ6IFByb3BUeXBlcy5udW1iZXIuaXNSZXF1aXJlZFxufTtcblxuZXhwb3J0IGRlZmF1bHQgQ29tcGFueUZpZWxkO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHtcbiAgQm94LFxuICBDaGVja2JveCxcbiAgRm9ybUNvbnRyb2wsXG4gIEZvcm1Db250cm9sTGFiZWwsXG4gIEZvcm1IZWxwZXJUZXh0XG59IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgUmF3SFRNTCBmcm9tIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9jb21wb25lbnRzL3Jhdy1odG1sXCI7XG5pbXBvcnQgeyBUSUNLRVRfQVRURU5ERUVfS0VZUyB9IGZyb20gXCIuLi8uLi9jb25zdGFudHNcIjtcblxuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBSZWdpc3RyYXRpb25EaXNjbGFpbWVyID0gKHtcbiAgZGlzY2xhaW1lcixcbiAgZm9ybWlrLFxuICBpc0Rpc2FibGVkID0gZmFsc2UsXG4gIGlzUmVxdWlyZWQgPSB0cnVlXG59KSA9PiB7XG4gIGNvbnN0IG5hbWUgPSBUSUNLRVRfQVRURU5ERUVfS0VZUy5kaXNjbGFpbWVyQWNjZXB0ZWQ7XG4gIGNvbnN0IHsgZXJyb3JzLCB2YWx1ZXMsIHRvdWNoZWQsIGhhbmRsZUNoYW5nZSwgaGFuZGxlQmx1ciB9ID0gZm9ybWlrO1xuICBjb25zdCB2YWx1ZSA9IHZhbHVlc1tuYW1lXTtcbiAgY29uc3QgZXJyb3IgPSB0b3VjaGVkW25hbWVdICYmIEJvb2xlYW4oZXJyb3JzW25hbWVdKTtcbiAgY29uc3QgaGVscGVyVGV4dCA9IHRvdWNoZWRbbmFtZV0gJiYgZXJyb3JzW25hbWVdO1xuXG4gIHJldHVybiAoXG4gICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy53cmFwcGVyfT5cbiAgICAgIDxGb3JtQ29udHJvbCBmdWxsV2lkdGggZXJyb3I9e2Vycm9yfT5cbiAgICAgICAgPEZvcm1Db250cm9sTGFiZWxcbiAgICAgICAgICBjb250cm9sPXtcbiAgICAgICAgICAgIDxDaGVja2JveFxuICAgICAgICAgICAgICBuYW1lPXtuYW1lfVxuICAgICAgICAgICAgICBjaGVja2VkPXshIXZhbHVlfVxuICAgICAgICAgICAgICBsYWJlbD17PFJhd0hUTUw+e2Rpc2NsYWltZXJ9PC9SYXdIVE1MPn1cbiAgICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX1cbiAgICAgICAgICAgICAgb25CbHVyPXtoYW5kbGVCbHVyfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICB9XG4gICAgICAgICAgbGFiZWw9ezxSYXdIVE1MPntkaXNjbGFpbWVyfTwvUmF3SFRNTD59XG4gICAgICAgICAgZGlzYWJsZWQ9e2lzRGlzYWJsZWR9XG4gICAgICAgICAgcmVxdWlyZWQ9e2lzUmVxdWlyZWR9XG4gICAgICAgIC8+XG4gICAgICAgIHtlcnJvciAmJiA8Rm9ybUhlbHBlclRleHQ+e2hlbHBlclRleHQgPz8gXCIgXCJ9PC9Gb3JtSGVscGVyVGV4dD59XG4gICAgICA8L0Zvcm1Db250cm9sPlxuICAgIDwvQm94PlxuICApO1xufTtcblxuUmVnaXN0cmF0aW9uRGlzY2xhaW1lci5wcm9wVHlwZXMgPSB7XG4gIGRpc2NsYWltZXI6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgZm9ybWlrOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIGlzRGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICBpc1JlcXVpcmVkOiBQcm9wVHlwZXMuYm9vbFxufTtcblxuZXhwb3J0IGRlZmF1bHQgUmVnaXN0cmF0aW9uRGlzY2xhaW1lcjtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTcgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IFRleHRGaWVsZCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5cbmNvbnN0IFRpY2tldERlbGVnYXRpb25GaWVsZHMgPSAoeyBmb3JtaWsgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPFRleHRGaWVsZFxuICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgaWQ9XCJkZWxlZ2F0ZWRfZmlyc3RfbmFtZVwiXG4gICAgICAgIGxhYmVsPXt0KFwidGlja2V0X2RldGFpbC5maXJzdF9uYW1lXCIpfVxuICAgICAgICB2YWx1ZT17Zm9ybWlrLnZhbHVlcy5kZWxlZ2F0ZWRfZmlyc3RfbmFtZX1cbiAgICAgICAgb25DaGFuZ2U9e2Zvcm1pay5oYW5kbGVDaGFuZ2V9XG4gICAgICAgIG9uQmx1cj17Zm9ybWlrLmhhbmRsZUJsdXJ9XG4gICAgICAgIGVycm9yPXtcbiAgICAgICAgICBmb3JtaWsudG91Y2hlZC5kZWxlZ2F0ZWRfZmlyc3RfbmFtZSAmJlxuICAgICAgICAgIEJvb2xlYW4oZm9ybWlrLmVycm9ycy5kZWxlZ2F0ZWRfZmlyc3RfbmFtZSlcbiAgICAgICAgfVxuICAgICAgICBoZWxwZXJUZXh0PXtcbiAgICAgICAgICBmb3JtaWsudG91Y2hlZC5kZWxlZ2F0ZWRfZmlyc3RfbmFtZSAmJlxuICAgICAgICAgIGZvcm1pay5lcnJvcnMuZGVsZWdhdGVkX2ZpcnN0X25hbWVcbiAgICAgICAgfVxuICAgICAgLz5cbiAgICAgIDxUZXh0RmllbGRcbiAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgIGlkPVwiZGVsZWdhdGVkX2xhc3RfbmFtZVwiXG4gICAgICAgIGxhYmVsPXt0KFwidGlja2V0X2RldGFpbC5sYXN0X25hbWVcIil9XG4gICAgICAgIHZhbHVlPXtmb3JtaWsudmFsdWVzLmRlbGVnYXRlZF9sYXN0X25hbWV9XG4gICAgICAgIG9uQ2hhbmdlPXtmb3JtaWsuaGFuZGxlQ2hhbmdlfVxuICAgICAgICBvbkJsdXI9e2Zvcm1pay5oYW5kbGVCbHVyfVxuICAgICAgICBlcnJvcj17XG4gICAgICAgICAgZm9ybWlrLnRvdWNoZWQuZGVsZWdhdGVkX2xhc3RfbmFtZSAmJlxuICAgICAgICAgIEJvb2xlYW4oZm9ybWlrLmVycm9ycy5kZWxlZ2F0ZWRfbGFzdF9uYW1lKVxuICAgICAgICB9XG4gICAgICAgIGhlbHBlclRleHQ9e1xuICAgICAgICAgIGZvcm1pay50b3VjaGVkLmRlbGVnYXRlZF9sYXN0X25hbWUgJiZcbiAgICAgICAgICBmb3JtaWsuZXJyb3JzLmRlbGVnYXRlZF9sYXN0X25hbWVcbiAgICAgICAgfVxuICAgICAgLz5cbiAgICA8Lz5cbiAgKTtcbn07XG5cblRpY2tldERlbGVnYXRpb25GaWVsZHMucHJvcFR5cGVzID0ge1xuICBmb3JtaWs6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZFxufTtcblxuZXhwb3J0IGRlZmF1bHQgVGlja2V0RGVsZWdhdGlvbkZpZWxkcztcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTcgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEJveCwgVHlwb2dyYXBoeSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VGb3JtaWsgfSBmcm9tIFwiZm9ybWlrXCI7XG5pbXBvcnQgRXh0cmFRdWVzdGlvbnNGaWVsZHMgZnJvbSBcIi4uLy4uLy4uL0V4dHJhUXVlc3Rpb25zRmllbGRzXCI7XG5cbmltcG9ydCB7XG4gIGdldFR5cGVWYWx1ZSxcbiAgdG9TbHVnXG59IGZyb20gXCIuLi8uLi8uLi9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb21wb25lbnRzL3V0aWxzXCI7XG5cbmltcG9ydCBUaWNrZXREZWxlZ2F0aW9uRmllbGRzIGZyb20gXCIuLi9UaWNrZXREZWxlZ2F0aW9uRmllbGRzXCI7XG5pbXBvcnQgVGlja2V0T3duZXJGaWVsZHMgZnJvbSBcIi4uL1RpY2tldE93bmVyRmllbGRzXCI7XG5pbXBvcnQgUmVnaXN0cmF0aW9uRGlzY2xhaW1lciBmcm9tIFwiLi4vUmVnaXN0cmF0aW9uRGlzY2xhaW1lci9SZWdpc3RyYXRpb25EaXNjbGFpbWVyXCI7XG5pbXBvcnQgRm9ybUZvb3RlciBmcm9tIFwiLi4vLi4vLi4vRm9ybUZvb3RlclwiO1xuaW1wb3J0IHVzZVNjcm9sbFRvRXJyb3IgZnJvbSBcIi4uLy4uLy4uLy4uL2hvb2tzL3VzZVNjcm9sbFRvRXJyb3JcIjtcbmltcG9ydCB7XG4gIHBhcnNlQW5zd2VycyxcbiAgYnVpbGRWYWxpZGF0aW9uU2NoZW1hXG59IGZyb20gXCIuLi8uLi8uLi8uLi91dGlscy90aWNrZXRVdGlsc1wiO1xuXG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4uLy4uL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBUaWNrZXRGb3JtID0gKHtcbiAgdGlja2V0LFxuICBleHRyYVF1ZXN0aW9ucyxcbiAgc3VtbWl0LFxuICBjYW5FZGl0LFxuICBvblN1Ym1pdCxcbiAgb25DbG9zZVxufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IHRpY2tldE1hbmFnZXIgPSB0aWNrZXQ/Lm1hbmFnZXI7XG4gIC8qIERJU0FCTEUgREVMRUdBVElPTiBGVE0gKi9cbiAgY29uc3QgYWxsb3dzRGVsZWdhdGlvbiA9IHRpY2tldD8udGlja2V0X3R5cGU/LmFsbG93c190b19kZWxlZ2F0ZSAmJiBmYWxzZTtcbiAgY29uc3QgYW5zd2VycyA9IHRpY2tldD8ub3duZXI/LmV4dHJhX3F1ZXN0aW9ucy5yZWR1Y2UoKHJlcywgYW5zKSA9PiB7XG4gICAgY29uc3QgcXVlc3Rpb25TbHVnID0gdG9TbHVnKGFucy5xdWVzdGlvbi5uYW1lLCBhbnMucXVlc3Rpb24uaWQpO1xuICAgIHJlc1txdWVzdGlvblNsdWddID0gZ2V0VHlwZVZhbHVlKGFucy52YWx1ZSwgYW5zLnF1ZXN0aW9uLnR5cGUpO1xuICAgIHJldHVybiByZXM7XG4gIH0sIHt9KTtcblxuICBjb25zdCBmb3JtaWsgPSB1c2VGb3JtaWsoe1xuICAgIGluaXRpYWxWYWx1ZXM6IHBhcnNlQW5zd2VycyhcbiAgICAgIHRpY2tldC5vd25lcixcbiAgICAgIGV4dHJhUXVlc3Rpb25zLFxuICAgICAgYW5zd2VycyxcbiAgICAgIHRpY2tldE1hbmFnZXIsXG4gICAgICBhbGxvd3NEZWxlZ2F0aW9uLFxuICAgICAgdHJ1ZSxcbiAgICAgIHRydWVcbiAgICApLFxuICAgIHZhbGlkYXRpb25TY2hlbWE6IGJ1aWxkVmFsaWRhdGlvblNjaGVtYShcbiAgICAgIGV4dHJhUXVlc3Rpb25zLFxuICAgICAgdHJ1ZSxcbiAgICAgIGFsbG93c0RlbGVnYXRpb24sXG4gICAgICBzdW1taXQucmVnaXN0cmF0aW9uX2Rpc2NsYWltZXJfbWFuZGF0b3J5XG4gICAgKSxcbiAgICBvblN1Ym1pdDogKHZhbHVlcykgPT4ge1xuICAgICAgY29uc3QgcmVsZXZhbnRBbnN3ZXJzID0gcGFyc2VBbnN3ZXJzKFxuICAgICAgICB0aWNrZXQub3duZXIsXG4gICAgICAgIGV4dHJhUXVlc3Rpb25zLFxuICAgICAgICB2YWx1ZXMsXG4gICAgICAgIHRpY2tldE1hbmFnZXIsXG4gICAgICAgIGFsbG93c0RlbGVnYXRpb24sXG4gICAgICAgIHRydWUsXG4gICAgICAgIHRydWUsXG4gICAgICAgIHRydWVcbiAgICAgICk7XG5cbiAgICAgIHJldHVybiBvblN1Ym1pdChyZWxldmFudEFuc3dlcnMpO1xuICAgIH0sXG4gICAgZW5hYmxlUmVpbml0aWFsaXplOiB0cnVlXG4gIH0pO1xuXG4gIC8vIGNvbnNvbGUubG9nKFwiU1VNTUlUOiBcIiwgc3VtbWl0KTtcbiAgLy8gY29uc29sZS5sb2coXCJUSUNLRVQ6IFwiLCB0aWNrZXQpO1xuICAvLyBjb25zb2xlLmxvZyhcIlFVRVNUSVVPTnM6IFwiLCBleHRyYVF1ZXN0aW9ucyk7XG4gIC8vIGNvbnNvbGUubG9nKFwiQU5TV0VSUzogXCIsIGFuc3dlcnMpO1xuICAvLyBjb25zb2xlLmxvZyhcIkVSUk9SczogXCIsIGZvcm1pay5lcnJvcnMpO1xuICAvLyBjb25zb2xlLmxvZyhcIlZBTFVFUzogXCIsIGZvcm1pay52YWx1ZXMpO1xuICAvLyBjb25zb2xlLmxvZyhcIklOSVRJQUw6IFwiLCBmb3JtaWsuaW5pdGlhbFZhbHVlcyk7XG4gIC8vIGNvbnNvbGUubG9nKFwiVE9VQ0hFRDogXCIsIGZvcm1pay50b3VjaGVkKTtcblxuICAvLyBTQ1JPTEwgVE8gRVJST1JcbiAgdXNlU2Nyb2xsVG9FcnJvcihmb3JtaWssIFwiZGV0YWlsc0RyYXdlclwiKTtcblxuICByZXR1cm4gKFxuICAgIDxmb3JtIG9uU3VibWl0PXtmb3JtaWsuaGFuZGxlU3VibWl0fSBub1ZhbGlkYXRlPlxuICAgICAgPFRpY2tldE93bmVyRmllbGRzXG4gICAgICAgIGZvcm1paz17Zm9ybWlrfVxuICAgICAgICBvd25lcj17dGlja2V0Lm93bmVyfVxuICAgICAgICBzdW1taXRJZD17c3VtbWl0LmlkfVxuICAgICAgICBkaXNhYmxlZD17IWNhbkVkaXR9XG4gICAgICAvPlxuXG4gICAgICB7YWxsb3dzRGVsZWdhdGlvbiAmJiAoXG4gICAgICAgIDxCb3g+XG4gICAgICAgICAgPFR5cG9ncmFwaHlcbiAgICAgICAgICAgIHZhcmlhbnQ9XCJzdWJ0aXRsZTJcIlxuICAgICAgICAgICAgZ3V0dGVyQm90dG9tXG4gICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5kZWxlZ2F0ZWRUb31cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7dChcInRpY2tldF9kZXRhaWwuZGVsZWdhdGVkX3RvXCIpfVxuICAgICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgICA8VGlja2V0RGVsZWdhdGlvbkZpZWxkcyBmb3JtaWs9e2Zvcm1pa30gLz5cbiAgICAgICAgPC9Cb3g+XG4gICAgICApfVxuXG4gICAgICB7ZXh0cmFRdWVzdGlvbnM/Lmxlbmd0aCA+IDAgJiYgKFxuICAgICAgICA8Qm94PlxuICAgICAgICAgIDxoNiBjbGFzc05hbWU9e3N0eWxlcy5hZGRpdGlvbmFsRGV0YWlsc30+XG4gICAgICAgICAgICB7dChcInRpY2tldF9kZXRhaWwuYWRpdGlvbmFsX2RldGFpbHNcIil9XG4gICAgICAgICAgPC9oNj5cbiAgICAgICAgICA8RXh0cmFRdWVzdGlvbnNGaWVsZHNcbiAgICAgICAgICAgIGV4dHJhUXVlc3Rpb25zPXtleHRyYVF1ZXN0aW9uc31cbiAgICAgICAgICAgIGFsbG93RWRpdD17Y2FuRWRpdH1cbiAgICAgICAgICAgIGZvcm1paz17Zm9ybWlrfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvQm94PlxuICAgICAgKX1cblxuICAgICAge3N1bW1pdC5yZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9jb250ZW50ICYmIChcbiAgICAgICAgPFJlZ2lzdHJhdGlvbkRpc2NsYWltZXJcbiAgICAgICAgICBmb3JtaWs9e2Zvcm1pa31cbiAgICAgICAgICBkaXNjbGFpbWVyPXtzdW1taXQucmVnaXN0cmF0aW9uX2Rpc2NsYWltZXJfY29udGVudH1cbiAgICAgICAgICBpc1JlcXVpcmVkPXtzdW1taXQucmVnaXN0cmF0aW9uX2Rpc2NsYWltZXJfbWFuZGF0b3J5fVxuICAgICAgICAgIGlzRGlzYWJsZWQ9eyFjYW5FZGl0fVxuICAgICAgICAvPlxuICAgICAgKX1cbiAgICAgIDxGb3JtRm9vdGVyXG4gICAgICAgIHNhdmVMYWJlbD17dChcInRpY2tldF9kZXRhaWwuc2F2ZVwiKX1cbiAgICAgICAgY2FuY2VsTGFiZWw9e3QoXCJ0aWNrZXRfZGV0YWlsLmNhbmNlbFwiKX1cbiAgICAgICAgb25DbG9zZT17b25DbG9zZX1cbiAgICAgICAgZGlzYWJsZWQ9e2Zvcm1pay5pc1N1Ym1pdHRpbmd9XG4gICAgICAvPlxuICAgIDwvZm9ybT5cbiAgKTtcbn07XG5cblRpY2tldEZvcm0ucHJvcFR5cGVzID0ge1xuICB0aWNrZXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIGV4dHJhUXVlc3Rpb25zOiBQcm9wVHlwZXMuYXJyYXkuaXNSZXF1aXJlZCxcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIGNhbkVkaXQ6IFByb3BUeXBlcy5ib29sLFxuICBvblN1Ym1pdDogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgb25DbG9zZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZFxufTtcblxuZXhwb3J0IGRlZmF1bHQgVGlja2V0Rm9ybTtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTcgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IEJveCwgVGV4dEZpZWxkIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcblxuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHsgVElDS0VUX0FUVEVOREVFX0tFWVMgfSBmcm9tIFwiLi4vLi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgQ29tcGFueUZpZWxkIGZyb20gXCIuLi9Db21wYW55RmllbGRcIjtcblxuY29uc3QgVGlja2V0T3duZXJGaWVsZHMgPSAoeyBmb3JtaWssIHN1bW1pdElkLCBkaXNhYmxlZCB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgeyBlcnJvcnMsIHZhbHVlcywgdG91Y2hlZCwgaGFuZGxlQ2hhbmdlLCBoYW5kbGVCbHVyIH0gPSBmb3JtaWs7XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLndyYXBwZXJ9PlxuICAgICAgPFRleHRGaWVsZFxuICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgbmFtZT17VElDS0VUX0FUVEVOREVFX0tFWVMuZW1haWx9XG4gICAgICAgIGxhYmVsPXt0KFwidGlja2V0X2RldGFpbC5lbWFpbFwiKX1cbiAgICAgICAgZGlzYWJsZWRcbiAgICAgICAgdmFsdWU9e3ZhbHVlc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5lbWFpbF19XG4gICAgICAvPlxuICAgICAge1tUSUNLRVRfQVRURU5ERUVfS0VZUy5maXJzdE5hbWUsIFRJQ0tFVF9BVFRFTkRFRV9LRVlTLmxhc3ROYW1lXS5tYXAoXG4gICAgICAgIChuYW1lKSA9PiAoXG4gICAgICAgICAgPFRleHRGaWVsZFxuICAgICAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgICAgICBrZXk9e25hbWV9XG4gICAgICAgICAgICBuYW1lPXtuYW1lfVxuICAgICAgICAgICAgbGFiZWw9e3QoYHRpY2tldF9kZXRhaWwuJHtuYW1lfWApfVxuICAgICAgICAgICAgdmFsdWU9e3ZhbHVlc1tuYW1lXX1cbiAgICAgICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgICBvbkJsdXI9e2hhbmRsZUJsdXJ9XG4gICAgICAgICAgICBlcnJvcj17dG91Y2hlZFtuYW1lXSAmJiBCb29sZWFuKGVycm9yc1tuYW1lXSl9XG4gICAgICAgICAgICBoZWxwZXJUZXh0PXtmb3JtaWsudG91Y2hlZFtuYW1lXSAmJiBmb3JtaWsuZXJyb3JzW25hbWVdfVxuICAgICAgICAgICAgcmVxdWlyZWRcbiAgICAgICAgICAvPlxuICAgICAgICApXG4gICAgICApfVxuICAgICAgPENvbXBhbnlGaWVsZCBmb3JtaWs9e2Zvcm1pa30gc3VtbWl0SWQ9e3N1bW1pdElkfSBpc1JlcXVpcmVkIC8+XG4gICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmluZm9Ob3RlfT57dChcInRpY2tldF9kZXRhaWwuaW5mb19ub3RlXCIpfTwvQm94PlxuICAgIDwvQm94PlxuICApO1xufTtcblxuVGlja2V0T3duZXJGaWVsZHMucHJvcFR5cGVzID0ge1xuICBmb3JtaWs6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZFxufTtcblxuZXhwb3J0IGRlZmF1bHQgVGlja2V0T3duZXJGaWVsZHM7XG4iLCJleHBvcnQgY29uc3QgVElDS0VUX0FUVEVOREVFX0tFWVMgPSB7XG4gIGVtYWlsOiBcImF0dGVuZGVlX2VtYWlsXCIsXG4gIGZpcnN0TmFtZTogXCJhdHRlbmRlZV9maXJzdF9uYW1lXCIsXG4gIGxhc3ROYW1lOiBcImF0dGVuZGVlX2xhc3RfbmFtZVwiLFxuICBjb21wYW55OiBcImF0dGVuZGVlX2NvbXBhbnlcIixcbiAgZGlzY2xhaW1lckFjY2VwdGVkOiBcImRpc2NsYWltZXJfYWNjZXB0ZWRcIlxufTtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2gsIHVzZVNlbGVjdG9yIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgUVJDb2RlIGZyb20gXCJyZWFjdC1xci1jb2RlXCI7XG5pbXBvcnQgeyBCb3gsIEJ1dHRvbiwgRHJhd2VyLCBJY29uQnV0dG9uLCBUeXBvZ3JhcGh5IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7XG4gIENsb3NlIGFzIENsb3NlSWNvbixcbiAgRmlsZURvd25sb2FkT3V0bGluZWQgYXMgRG93bmxvYWRJY29uLFxuICBFbWFpbE91dGxpbmVkIGFzIEVtYWlsSWNvblxufSBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlVGlja2V0RGV0YWlscyB9IGZyb20gXCIuLi8uLi9ob29rcy91c2VUaWNrZXREZXRhaWxzXCI7XG5pbXBvcnQgQ29weVRleHQgZnJvbSBcIi4uL0NvcHlUZXh0XCI7XG5pbXBvcnQgdXNlR2V0VGlja2V0IGZyb20gXCIuLi8uLi9ob29rcy91c2VHZXRUaWNrZXRcIjtcbmltcG9ydCB7IHRyYW5zZm9ybUFud2Vyc0Zvcm1hdCB9IGZyb20gXCIuLi9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb21wb25lbnRzL3V0aWxzXCI7XG5pbXBvcnQgQ3VzdG9tRGlhbG9nIGZyb20gXCIuLi9DdXN0b21EaWFsb2dcIjtcbmltcG9ydCB7IE1JTExJU0VDX1RPX1NFQywgVFdPX0lURU0gfSBmcm9tIFwiLi4vLi4vdXRpbHMvY29uc3RhbnRzXCI7XG5pbXBvcnQgVGlja2V0Rm9ybSBmcm9tIFwiLi9jb21wb25lbnRzL1RpY2tldEZvcm1cIjtcbmltcG9ydCB7IGdldFRpY2tldFBERiwgc2F2ZVRpY2tldERldGFpbHMsIHJlc2VuZE5vdGlmaWNhdGlvbiB9IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5cbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgVGlja2V0RGV0YWlsID0gKHtcbiAgc3VtbWl0LFxuICB0aWNrZXRJZCxcbiAgb3JkZXJJZCxcbiAgb3duZXJJZCxcbiAgb3BlbixcbiAgb25DbG9zZVxufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcbiAgY29uc3Qge1xuICAgIHVzZXI6IHsgdXNlclByb2ZpbGUgfVxuICB9ID0gdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSk7XG4gIGNvbnN0IHsgdGlja2V0LCBleHRyYVF1ZXN0aW9ucyB9ID0gdXNlR2V0VGlja2V0KFxuICAgIHRpY2tldElkLFxuICAgIG9yZGVySWQsXG4gICAgb3duZXJJZCxcbiAgICBvcGVuXG4gICk7XG4gIGNvbnN0IFtzYXZlTWVzc2FnZSwgc2V0U2F2ZU1lc3NhZ2VdID0gdXNlU3RhdGUobnVsbCk7XG4gIGNvbnN0IFtzZW50Q29uZmlybWF0aW9uLCBzZXRTZW50Q29uZmlybWF0aW9uXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgaXNVc2VyT3JkZXJPd25lciA9IHRpY2tldD8ub3JkZXI/Lm93bmVyX2lkID09PSB1c2VyUHJvZmlsZT8uaWQ7XG4gIGNvbnN0IGlzVXNlclRpY2tldE93bmVyID0gdGlja2V0Py5vd25lcj8uZW1haWwgPT09IHVzZXJQcm9maWxlPy5lbWFpbDtcbiAgY29uc3QgY2FuRWRpdFRpY2tldERhdGEgPVxuICAgIChpc1VzZXJUaWNrZXRPd25lciB8fCBpc1VzZXJPcmRlck93bmVyKSAmJlxuICAgIHN1bW1pdC5hbGxvd191cGRhdGVfYXR0ZW5kZWVfZXh0cmFfcXVlc3Rpb25zO1xuICBjb25zdCB7IGlzQ29tcGxldGUgfSA9IHVzZVRpY2tldERldGFpbHModGlja2V0KTtcblxuICBjb25zdCBvblNhdmUgPSAodmFsKSA9PiB7XG4gICAgY29uc3QgYW5zd2VycyA9IHRyYW5zZm9ybUFud2Vyc0Zvcm1hdCh2YWwpO1xuXG4gICAgcmV0dXJuIGRpc3BhdGNoKHNhdmVUaWNrZXREZXRhaWxzKHRpY2tldCwgYW5zd2VycykpXG4gICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgIHNldFNhdmVNZXNzYWdlKHtcbiAgICAgICAgICB0aXRsZTogdChcInRpY2tldF9kZXRhaWwuc2F2aW5nX3N1Y2Nlc3NcIiksXG4gICAgICAgICAgZGVzY3JpcHRpb246IHQoXCJ0aWNrZXRfZGV0YWlsLnNhdmluZ19zdWNjZXNzX2Rlc2NyaXB0aW9uXCIpXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlcnIpID0+IHtcbiAgICAgICAgc2V0U2F2ZU1lc3NhZ2Uoe1xuICAgICAgICAgIHRpdGxlOiB0KFwidGlja2V0X2RldGFpbC5zYXZpbmdfZXJyb3JcIiksXG4gICAgICAgICAgZGVzY3JpcHRpb246IGVyci50b1N0cmluZygpXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoKTtcbiAgICAgIH0pO1xuICB9O1xuXG4gIGNvbnN0IG9uQ2xvc2VTYXZlTWVzc2FnZSA9ICgpID0+IHtcbiAgICBzZXRTYXZlTWVzc2FnZShudWxsKTtcbiAgICBzZXRUaW1lb3V0KG9uQ2xvc2UsIE1JTExJU0VDX1RPX1NFQyk7XG4gIH07XG5cbiAgY29uc3QgZG93bmxvYWRUaWNrZXRQZGYgPSAoKSA9PiB7XG4gICAgZGlzcGF0Y2goZ2V0VGlja2V0UERGKHRpY2tldCkpO1xuICB9O1xuXG4gIGNvbnN0IG9uU2VuZEVtYWlsID0gKCkgPT4ge1xuICAgIGRpc3BhdGNoKHJlc2VuZE5vdGlmaWNhdGlvbih0aWNrZXQpKS50aGVuKCgpID0+IHtcbiAgICAgIHNldFNlbnRDb25maXJtYXRpb24odHJ1ZSk7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgc2V0U2VudENvbmZpcm1hdGlvbihmYWxzZSk7XG4gICAgICB9LCBNSUxMSVNFQ19UT19TRUMgKiBUV09fSVRFTSk7XG4gICAgfSk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPERyYXdlclxuICAgICAgICBpZD1cImRldGFpbHNEcmF3ZXJcIlxuICAgICAgICBvcGVuPXtvcGVufVxuICAgICAgICBvbkNsb3NlPXtvbkNsb3NlfVxuICAgICAgICBhbmNob3I9XCJyaWdodFwiXG4gICAgICAgIE1vZGFsUHJvcHM9e3sga2VlcE1vdW50ZWQ6IGZhbHNlIH19XG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldERldGFpbENvbnRhaW5lcn1cbiAgICAgID5cbiAgICAgICAge3RpY2tldCAmJiBleHRyYVF1ZXN0aW9ucyAmJiAoXG4gICAgICAgICAgPD5cbiAgICAgICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuaGVhZGVyfT5cbiAgICAgICAgICAgICAgPEljb25CdXR0b25cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5jbG9zZUJ0bn1cbiAgICAgICAgICAgICAgICBvbkNsaWNrPXtvbkNsb3NlfVxuICAgICAgICAgICAgICAgIHN4PXt7IGZsb2F0OiBcInJpZ2h0XCIgfX1cbiAgICAgICAgICAgICAgICBmb250U2l6ZT1cImxhcmdlXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxDbG9zZUljb24gLz5cbiAgICAgICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICAgICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiaDRcIiBndXR0ZXJCb3R0b20gY2xhc3NOYW1lPXtzdHlsZXMudGl0bGV9PlxuICAgICAgICAgICAgICAgIHt0aWNrZXQ/LnRpY2tldF90eXBlPy5uYW1lfVxuICAgICAgICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICAgICAgICAgIDxUeXBvZ3JhcGh5XG4gICAgICAgICAgICAgICAgdmFyaWFudD1cImJvZHkyXCJcbiAgICAgICAgICAgICAgICBndXR0ZXJCb3R0b21cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5zdWJ0aXRsZX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt0KFwidGlja2V0X2RldGFpbC5wdXJjaGFzZWRfYnlcIil9IHt0aWNrZXQ/Lm93bmVyPy5lbWFpbH1cbiAgICAgICAgICAgICAgPC9UeXBvZ3JhcGh5PlxuXG4gICAgICAgICAgICAgIHtpc0NvbXBsZXRlICYmIChcbiAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5xckNvZGV9PlxuICAgICAgICAgICAgICAgICAgICA8UVJDb2RlXG4gICAgICAgICAgICAgICAgICAgICAgc2l6ZT17MjU2fVxuICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IFwiYXV0b1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWF4V2lkdGg6IFwiMTAwJVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IFwiMTAwJVwiXG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17dGlja2V0LnFyX2NvZGV9XG4gICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyNTYgMjU2XCJcbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPXtzdHlsZXMuc3RhdHVzfT57dChcInRpY2tldF9kZXRhaWwuc3RhdHVzXCIpfTwvcD5cbiAgICAgICAgICAgICAgICAgIDxUeXBvZ3JhcGh5XG4gICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJib2R5MlwiXG4gICAgICAgICAgICAgICAgICAgIGd1dHRlckJvdHRvbVxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5xck5vdGV9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHt0KFwidGlja2V0X2RldGFpbC5xcl9ub3RlXCIpfVxuICAgICAgICAgICAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICApfVxuXG4gICAgICAgICAgICAgIHshc3VtbWl0Py5pc192aXJ0dWFsICYmIGlzQ29tcGxldGUgJiYgKFxuICAgICAgICAgICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuYWN0aW9uQnV0dG9uc0NvbnRhaW5lcn0+XG4gICAgICAgICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmRvd25sb2FkQnRufVxuICAgICAgICAgICAgICAgICAgICB2YXJpYW50PVwiY29udGFpbmVkXCJcbiAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17ZG93bmxvYWRUaWNrZXRQZGZ9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxEb3dubG9hZEljb24gZm9udFNpemU9XCJsYXJnZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgIHt0KFwidGlja2V0X2RldGFpbC5kb3dubG9hZFwiKX1cbiAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5zZW5kQnRufSAke1xuICAgICAgICAgICAgICAgICAgICAgIHNlbnRDb25maXJtYXRpb24gPyBzdHlsZXMuc2VudCA6IFwiXCJcbiAgICAgICAgICAgICAgICAgICAgfWB9XG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e29uU2VuZEVtYWlsfVxuICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17c2VudENvbmZpcm1hdGlvbn1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPEVtYWlsSWNvbiBmb250U2l6ZT1cImxhcmdlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAge3NlbnRDb25maXJtYXRpb25cbiAgICAgICAgICAgICAgICAgICAgICA/IHQoXCJ0aWNrZXRfZGV0YWlsLnNlbnRcIilcbiAgICAgICAgICAgICAgICAgICAgICA6IHQoXCJ0aWNrZXRfZGV0YWlsLnNlbmRcIil9XG4gICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyTnVtYmVyfT5cbiAgICAgICAgICAgICAgICA8Q29weVRleHRcbiAgICAgICAgICAgICAgICAgIHRleHQ9e3RpY2tldD8ub3JkZXI/Lm51bWJlcn1cbiAgICAgICAgICAgICAgICAgIHJldmVyc2VkXG4gICAgICAgICAgICAgICAgICB3aWR0aD17MTUwfVxuICAgICAgICAgICAgICAgICAgdG9vbHRpcFRleHQ9e3QoXCJvcmRlcl9zdW1tYXJ5LmNvcHlfb3JkZXJfbnVtYmVyXCIpfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmF0dGVuZGVlQ29udGFpbmVyfT5cbiAgICAgICAgICAgICAgPFR5cG9ncmFwaHlcbiAgICAgICAgICAgICAgICB2YXJpYW50PVwiaDRcIlxuICAgICAgICAgICAgICAgIGd1dHRlckJvdHRvbVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmF0dGVuZGVlSW5mb1RpdGxlfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfZGV0YWlsLmF0dGVuZGVlX2luZm9ybWF0aW9uXCIpfVxuICAgICAgICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICAgICAgICAgIHt0aWNrZXQgJiYgKFxuICAgICAgICAgICAgICAgIDxUaWNrZXRGb3JtXG4gICAgICAgICAgICAgICAgICB0aWNrZXQ9e3RpY2tldH1cbiAgICAgICAgICAgICAgICAgIGV4dHJhUXVlc3Rpb25zPXtleHRyYVF1ZXN0aW9uc31cbiAgICAgICAgICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgICAgICAgICAgY2FuRWRpdD17Y2FuRWRpdFRpY2tldERhdGF9XG4gICAgICAgICAgICAgICAgICBvblN1Ym1pdD17b25TYXZlfVxuICAgICAgICAgICAgICAgICAgb25DbG9zZT17b25DbG9zZX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgPC8+XG4gICAgICAgICl9XG4gICAgICA8L0RyYXdlcj5cbiAgICAgIDxDdXN0b21EaWFsb2dcbiAgICAgICAgb3Blbj17ISFzYXZlTWVzc2FnZX1cbiAgICAgICAgb25DbG9zZT17b25DbG9zZVNhdmVNZXNzYWdlfVxuICAgICAgICB0aXRsZT17c2F2ZU1lc3NhZ2U/LnRpdGxlfVxuICAgICAgICBkZXNjcmlwdGlvbj17c2F2ZU1lc3NhZ2U/LmRlc2NyaXB0aW9ufVxuICAgICAgLz5cbiAgICA8Lz5cbiAgKTtcbn07XG5cblRpY2tldERldGFpbC5wcm9wVHlwZXMgPSB7XG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdCxcbiAgdGlja2V0SWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gIG9yZGVySWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gIG93bmVySWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gIG9uQ2xvc2U6IFByb3BUeXBlcy5mdW5jLFxuICBvcGVuOiBQcm9wVHlwZXMuYm9vbFxufTtcblxuZXhwb3J0IGRlZmF1bHQgVGlja2V0RGV0YWlsO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgVGV4dEZpZWxkIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZUZvcm1payB9IGZyb20gXCJmb3JtaWtcIjtcbmltcG9ydCAqIGFzIHl1cCBmcm9tIFwieXVwXCI7XG5cbmltcG9ydCBGb3JtRm9vdGVyIGZyb20gXCIuLi8uLi8uLi9Gb3JtRm9vdGVyXCI7XG5cbmNvbnN0IFJlYXNzaWduRm9ybSA9ICh7IG9uU3VibWl0LCBvbkNsb3NlIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuXG4gIGNvbnN0IGZvcm1payA9IHVzZUZvcm1payh7XG4gICAgaW5pdGlhbFZhbHVlczoge1xuICAgICAgbmV3X2F0dGVuZGVlX2VtYWlsOiBcIlwiLFxuICAgICAgcGVyc29uYWxfbWVzc2FnZTogXCJcIlxuICAgIH0sXG4gICAgdmFsaWRhdGlvblNjaGVtYTogeXVwLm9iamVjdCh7XG4gICAgICBuZXdfYXR0ZW5kZWVfZW1haWw6IHl1cFxuICAgICAgICAuc3RyaW5nKHQoXCJ2YWxpZGF0aW9uLmVtYWlsLnN0cmluZ1wiKSlcbiAgICAgICAgLmVtYWlsKHQoXCJ2YWxpZGF0aW9uLmVtYWlsLmZvcm1hdFwiKSlcbiAgICAgICAgLnJlcXVpcmVkKHQoXCJ2YWxpZGF0aW9uLmVtYWlsLnJlcXVpcmVkXCIpKSxcbiAgICAgIHBlcnNvbmFsX21lc3NhZ2U6IHl1cC5zdHJpbmcodChcInZhbGlkYXRpb24udGV4dC5zdHJpbmdcIikpXG4gICAgfSksXG4gICAgb25TdWJtaXRcbiAgfSk7XG5cbiAgcmV0dXJuIChcbiAgICA8Zm9ybSBvblN1Ym1pdD17Zm9ybWlrLmhhbmRsZVN1Ym1pdH0gbm9WYWxpZGF0ZT5cbiAgICAgIDxUZXh0RmllbGRcbiAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgIG5hbWU9XCJuZXdfYXR0ZW5kZWVfZW1haWxcIlxuICAgICAgICBsYWJlbD17dChcInRpY2tldF9yZWFzc2lnbi5uZXdfYXR0ZW5kZWVfZW1haWxcIil9XG4gICAgICAgIHZhbHVlPXtmb3JtaWsudmFsdWVzLm5ld19hdHRlbmRlZV9lbWFpbH1cbiAgICAgICAgb25DaGFuZ2U9e2Zvcm1pay5oYW5kbGVDaGFuZ2V9XG4gICAgICAgIG9uQmx1cj17Zm9ybWlrLmhhbmRsZUJsdXJ9XG4gICAgICAgIGVycm9yPXtcbiAgICAgICAgICBmb3JtaWsudG91Y2hlZC5uZXdfYXR0ZW5kZWVfZW1haWwgJiZcbiAgICAgICAgICBCb29sZWFuKGZvcm1pay5lcnJvcnMubmV3X2F0dGVuZGVlX2VtYWlsKVxuICAgICAgICB9XG4gICAgICAgIGhlbHBlclRleHQ9e1xuICAgICAgICAgIGZvcm1pay50b3VjaGVkLm5ld19hdHRlbmRlZV9lbWFpbCAmJiBmb3JtaWsuZXJyb3JzLm5ld19hdHRlbmRlZV9lbWFpbFxuICAgICAgICB9XG4gICAgICAgIHJlcXVpcmVkXG4gICAgICAvPlxuICAgICAgPFRleHRGaWVsZFxuICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgbmFtZT1cInBlcnNvbmFsX21lc3NhZ2VcIlxuICAgICAgICBsYWJlbD17dChcInRpY2tldF9yZWFzc2lnbi5wZXJzb25hbF9tZXNzYWdlXCIpfVxuICAgICAgICB2YWx1ZT17Zm9ybWlrLnZhbHVlcy5wZXJzb25hbF9tZXNzYWdlfVxuICAgICAgICBtdWx0aWxpbmVcbiAgICAgICAgbWluUm93cz17NH1cbiAgICAgICAgb25DaGFuZ2U9e2Zvcm1pay5oYW5kbGVDaGFuZ2V9XG4gICAgICAgIG9uQmx1cj17Zm9ybWlrLmhhbmRsZUJsdXJ9XG4gICAgICAgIGVycm9yPXtcbiAgICAgICAgICBmb3JtaWsudG91Y2hlZC5wZXJzb25hbF9tZXNzYWdlICYmXG4gICAgICAgICAgQm9vbGVhbihmb3JtaWsuZXJyb3JzLnBlcnNvbmFsX21lc3NhZ2UpXG4gICAgICAgIH1cbiAgICAgICAgaGVscGVyVGV4dD17XG4gICAgICAgICAgZm9ybWlrLnRvdWNoZWQucGVyc29uYWxfbWVzc2FnZSAmJiBmb3JtaWsuZXJyb3JzLnBlcnNvbmFsX21lc3NhZ2VcbiAgICAgICAgfVxuICAgICAgLz5cbiAgICAgIDxGb3JtRm9vdGVyXG4gICAgICAgIHNhdmVMYWJlbD17dChcInRpY2tldF9yZWFzc2lnbi5zYXZlXCIpfVxuICAgICAgICBjYW5jZWxMYWJlbD17dChcInRpY2tldF9yZWFzc2lnbi5jYW5jZWxcIil9XG4gICAgICAgIG9uQ2xvc2U9e29uQ2xvc2V9XG4gICAgICAgIGRpc2FibGVkPXtmb3JtaWsuaXNTdWJtaXR0aW5nfVxuICAgICAgLz5cbiAgICA8L2Zvcm0+XG4gICk7XG59O1xuXG5SZWFzc2lnbkZvcm0ucHJvcFR5cGVzID0ge1xuICBvblN1Ym1pdDogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgb25DbG9zZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZFxufTtcblxuZXhwb3J0IGRlZmF1bHQgUmVhc3NpZ25Gb3JtO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQm94LCBUeXBvZ3JhcGh5IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHJlYXNzaWduVGlja2V0LCBzYXZlRXh0cmFRdWVzdGlvbnMgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuaW1wb3J0IFJlYXNzaWduRm9ybSBmcm9tIFwiLi9jb21wb25lbnRzL1JlYXNzaWduRm9ybVwiO1xuaW1wb3J0IFJpZ2h0RHJhd2VyIGZyb20gXCIuLi9SaWdodERyYXdlclwiO1xuXG5pbXBvcnQgQXNzaWduRVFGb3JtIGZyb20gXCIuLi9Bc3NpZ25FUUZvcm1cIjtcbmltcG9ydCB7IHRyYW5zZm9ybUFud2Vyc0Zvcm1hdCB9IGZyb20gXCIuLi9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb21wb25lbnRzL3V0aWxzXCI7XG5pbXBvcnQgQ3VzdG9tRGlhbG9nIGZyb20gXCIuLi9DdXN0b21EaWFsb2dcIjtcbmltcG9ydCB1c2VHZXRUaWNrZXQgZnJvbSBcIi4uLy4uL2hvb2tzL3VzZUdldFRpY2tldFwiO1xuaW1wb3J0IHsgTUlMTElTRUNfVE9fU0VDIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2NvbnN0YW50c1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBUaWNrZXRSZWFzc2lnbiA9ICh7XG4gIHN1bW1pdCxcbiAgdGlja2V0SWQsXG4gIG9yZGVySWQsXG4gIG93bmVySWQsXG4gIG9wZW4sXG4gIG9uQ2xvc2Vcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG4gIGNvbnN0IFtzYXZlTWVzc2FnZSwgc2V0U2F2ZU1lc3NhZ2VdID0gdXNlU3RhdGUobnVsbCk7XG4gIGNvbnN0IFt0aWNrZXRSZWFzc2lnbmVkLCBzZXRUaWNrZXRSZWFzc2lnbmVkXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgeyB0aWNrZXQsIGV4dHJhUXVlc3Rpb25zIH0gPSB1c2VHZXRUaWNrZXQoXG4gICAgdGlja2V0SWQsXG4gICAgb3JkZXJJZCxcbiAgICBvd25lcklkLFxuICAgIG9wZW5cbiAgKTtcblxuICBjb25zdCBvblJlYXNzaWduID0gKHZhbCkgPT4ge1xuICAgIGNvbnN0IHsgbmV3X2F0dGVuZGVlX2VtYWlsLCBwZXJzb25hbF9tZXNzYWdlIH0gPSB2YWw7XG4gICAgcmV0dXJuIGRpc3BhdGNoKFxuICAgICAgcmVhc3NpZ25UaWNrZXQob3JkZXJJZCwgdGlja2V0SWQsIG5ld19hdHRlbmRlZV9lbWFpbCwgcGVyc29uYWxfbWVzc2FnZSlcbiAgICApLnRoZW4oKCkgPT4ge1xuICAgICAgc2V0VGlja2V0UmVhc3NpZ25lZCh0cnVlKTtcbiAgICB9KTtcbiAgfTtcblxuICBjb25zdCBvbkNsb3NlRVFGb3JtID0gKCkgPT4ge1xuICAgIHNldFRpY2tldFJlYXNzaWduZWQoZmFsc2UpO1xuICAgIG9uQ2xvc2UoKTtcbiAgfTtcblxuICBjb25zdCBvbkNsb3NlU2F2ZU1lc3NhZ2UgPSAoKSA9PiB7XG4gICAgc2V0U2F2ZU1lc3NhZ2UobnVsbCk7XG4gICAgc2V0VGlja2V0UmVhc3NpZ25lZChmYWxzZSk7XG4gICAgc2V0VGltZW91dChvbkNsb3NlLCBNSUxMSVNFQ19UT19TRUMpO1xuICB9O1xuXG4gIGNvbnN0IG9uU2F2ZUVRID0gKHZhbCkgPT4ge1xuICAgIGNvbnN0IGFuc3dlcnMgPSB0cmFuc2Zvcm1BbndlcnNGb3JtYXQodmFsKTtcblxuICAgIHJldHVybiBkaXNwYXRjaChzYXZlRXh0cmFRdWVzdGlvbnModGlja2V0LCBhbnN3ZXJzKSlcbiAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgc2V0U2F2ZU1lc3NhZ2Uoe1xuICAgICAgICAgIHRpdGxlOiB0KFwidGlja2V0X3JlYXNzaWduLnNhdmluZ19zdWNjZXNzXCIpLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiB0KFwidGlja2V0X3JlYXNzaWduLnNhdmluZ19zdWNjZXNzX2Rlc2NyaXB0aW9uXCIpXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlcnIpID0+IHtcbiAgICAgICAgc2V0U2F2ZU1lc3NhZ2Uoe1xuICAgICAgICAgIHRpdGxlOiB0KFwidGlja2V0X3JlYXNzaWduLnNhdmluZ19lcnJvclwiKSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogZXJyLnRvU3RyaW5nKClcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCgpO1xuICAgICAgfSk7XG4gIH07XG5cbiAgY29uc3QgZ2V0TGFiZWxzID0gKCkgPT4ge1xuICAgIGlmICh0aWNrZXRSZWFzc2lnbmVkKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0aXRsZTogdChcInRpY2tldF9yZWFzc2lnbi5yZWFzc2lnbl90aWNrZXRcIiksXG4gICAgICAgIHN1YnRpdGxlOiBgJHt0KFwidGlja2V0X3JlYXNzaWduLnJlYXNzaWduZWRfdG9cIil9ICR7XG4gICAgICAgICAgdGlja2V0Py5vd25lcj8uZW1haWxcbiAgICAgICAgfWAsXG4gICAgICAgIGhlYWRlck5vdGU6IHQoXCJ0aWNrZXRfcmVhc3NpZ24uY29tcGxldGVfaW5mb1wiKVxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgdGl0bGU6IHQoXCJ0aWNrZXRfcmVhc3NpZ24ucmVhc3NpZ25fdGlja2V0XCIpLFxuICAgICAgc3VidGl0bGU6IChcbiAgICAgICAgPD5cbiAgICAgICAgICB7dChcInRpY2tldF9yZWFzc2lnbi5hc3NpZ25lZF90b1wiKX1cbiAgICAgICAgICA8YnIgLz5cbiAgICAgICAgICB7dGlja2V0Py5vd25lcj8uZW1haWx9XG4gICAgICAgIDwvPlxuICAgICAgKSxcbiAgICAgIGhlYWRlck5vdGU6IHQoXCJ0aWNrZXRfcmVhc3NpZ24uZW50ZXJfZW1haWxfbm90ZVwiKVxuICAgIH07XG4gIH07XG5cbiAgY29uc3QgeyB0aXRsZSwgc3VidGl0bGUsIGhlYWRlck5vdGUgfSA9IGdldExhYmVscygpO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxSaWdodERyYXdlclxuICAgICAgICBpZD1cInJlYXNzaWduRHJhd2VyXCJcbiAgICAgICAgdGl0bGU9e3RpdGxlfVxuICAgICAgICBvcGVuPXtvcGVufVxuICAgICAgICBvbkNsb3NlPXtvbkNsb3NlfVxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRSZWFzc2lnbkNvbnRhaW5lcn1cbiAgICAgID5cbiAgICAgICAge3RpY2tldCAmJiBleHRyYVF1ZXN0aW9ucyAmJiAoXG4gICAgICAgICAgPD5cbiAgICAgICAgICAgIDxCb3g+XG4gICAgICAgICAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJoNFwiIGd1dHRlckJvdHRvbSBjbGFzc05hbWU9e3N0eWxlcy5zdWJ0aXRsZX0+XG4gICAgICAgICAgICAgICAge3N1YnRpdGxlfVxuICAgICAgICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICAgICAgICAgIDxUeXBvZ3JhcGh5XG4gICAgICAgICAgICAgICAgdmFyaWFudD1cImJvZHkxXCJcbiAgICAgICAgICAgICAgICBndXR0ZXJCb3R0b21cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5oZWFkZXJOb3RlfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge2hlYWRlck5vdGV9XG4gICAgICAgICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5hdHRlbmRlZUNvbnRhaW5lcn0+XG4gICAgICAgICAgICAgIDxUeXBvZ3JhcGh5XG4gICAgICAgICAgICAgICAgdmFyaWFudD1cImg0XCJcbiAgICAgICAgICAgICAgICBndXR0ZXJCb3R0b21cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5hdHRlbmRlZUluZm9UaXRsZX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt0aWNrZXQ/LnR5cGU/Lm5hbWV9XG4gICAgICAgICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgICAgICAge3RpY2tldCAmJiAhdGlja2V0UmVhc3NpZ25lZCAmJiAoXG4gICAgICAgICAgICAgICAgPFJlYXNzaWduRm9ybVxuICAgICAgICAgICAgICAgICAgdGlja2V0PXt0aWNrZXR9XG4gICAgICAgICAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICAgICAgICAgIG9uU3VibWl0PXtvblJlYXNzaWdufVxuICAgICAgICAgICAgICAgICAgb25DbG9zZT17b25DbG9zZX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICB7dGlja2V0ICYmIHRpY2tldFJlYXNzaWduZWQgJiYgKFxuICAgICAgICAgICAgICAgIDxBc3NpZ25FUUZvcm1cbiAgICAgICAgICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgICAgICAgICBleHRyYVF1ZXN0aW9ucz17ZXh0cmFRdWVzdGlvbnN9XG4gICAgICAgICAgICAgICAgICBvblN1Ym1pdD17b25TYXZlRVF9XG4gICAgICAgICAgICAgICAgICBvbkNsb3NlPXtvbkNsb3NlRVFGb3JtfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICA8Lz5cbiAgICAgICAgKX1cbiAgICAgIDwvUmlnaHREcmF3ZXI+XG4gICAgICA8Q3VzdG9tRGlhbG9nXG4gICAgICAgIG9wZW49eyEhc2F2ZU1lc3NhZ2V9XG4gICAgICAgIG9uQ2xvc2U9e29uQ2xvc2VTYXZlTWVzc2FnZX1cbiAgICAgICAgdGl0bGU9e3NhdmVNZXNzYWdlPy50aXRsZX1cbiAgICAgICAgZGVzY3JpcHRpb249e3NhdmVNZXNzYWdlPy5kZXNjcmlwdGlvbn1cbiAgICAgIC8+XG4gICAgPC8+XG4gICk7XG59O1xuXG5UaWNrZXRSZWFzc2lnbi5wcm9wVHlwZXMgPSB7XG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdCxcbiAgdGlja2V0SWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gIG9yZGVySWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gIG93bmVySWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gIG9wZW46IFByb3BUeXBlcy5ib29sLFxuICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgVGlja2V0UmVhc3NpZ247XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBDb250YWluZXIsIEJ1dHRvbiB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VUaWNrZXREZXRhaWxzIH0gZnJvbSBcIi4uLy4uL2hvb2tzL3VzZVRpY2tldERldGFpbHNcIjtcblxuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBUaWNrZXRTdGF0dXMgPSAoeyB0aWNrZXQgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IGlzQWN0aXZlID0gdGlja2V0LmlzX2FjdGl2ZTtcbiAgY29uc3QgcmVmdW5kUmVxdWVzdHMgPSB0aWNrZXQucmVmdW5kX3JlcXVlc3RzPy5maW5kKFxuICAgIChyKSA9PiByLnN0YXR1cyA9PT0gXCJSZXF1ZXN0ZWRcIlxuICApO1xuICBjb25zdCB7IGlzSW5jb21wbGV0ZSwgaXNVbmFzc2lnbmVkLCBpc0NvbXBsZXRlIH0gPSB1c2VUaWNrZXREZXRhaWxzKHRpY2tldCk7XG5cbiAgcmV0dXJuIChcbiAgICA8Q29udGFpbmVyIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldFN0YXR1c0NvbnRhaW5lcn0+XG4gICAgICB7aXNBY3RpdmUgPyAoXG4gICAgICAgIDw+XG4gICAgICAgICAge3JlZnVuZFJlcXVlc3RzICYmIChcbiAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJ0aWNrZXQgc3RhdHVzIHJlZnVuZCByZXF1ZXN0ZWRcIlxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5idXR0b25QaWxsfSAke3N0eWxlcy5idXR0b25SZWZ1bmRSZXF1ZXN0ZWR9YH1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnN0YXR1c19yZWZ1bmRfcmVxdWVzdGVkXCIpfVxuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgKX1cbiAgICAgICAgICB7aXNJbmNvbXBsZXRlICYmIChcbiAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJ0aWNrZXQgc3RhdHVzIGluY29tcGxldGVcIlxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5idXR0b25QaWxsfSAke3N0eWxlcy5idXR0b25JbmNvbXBsZXRlfWB9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5zdGF0dXNfaW5jb21wbGV0ZVwiKX1cbiAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICl9XG4gICAgICAgICAge2lzVW5hc3NpZ25lZCAmJiAoXG4gICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwidGlja2V0IHN0YXR1cyB1bmFzc2lnbmVkXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuYnV0dG9uUGlsbH0gJHtzdHlsZXMuYnV0dG9uVW5hc3NpZ25lZH1gfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMuc3RhdHVzX3VuYXNzaWduZWRcIil9XG4gICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICApfVxuICAgICAgICAgIHtpc0NvbXBsZXRlICYmIChcbiAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJ0aWNrZXQgc3RhdHVzIGNvbXBsZXRlXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuYnV0dG9uUGlsbH0gJHtzdHlsZXMuYnV0dG9uQ29tcGxldGV9YH1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnN0YXR1c19jb21wbGV0ZVwiKX1cbiAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvPlxuICAgICAgKSA6IChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJ0aWNrZXQgc3RhdHVzIGNhbmNlbGxlZFwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuYnV0dG9uUGlsbH0gJHtzdHlsZXMuYnV0dG9uQ2FuY2VsbGVkfWB9XG4gICAgICAgID5cbiAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMuc3RhdHVzX2NhbmNlbGxlZFwiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICApfVxuICAgIDwvQ29udGFpbmVyPlxuICApO1xufTtcblxuVGlja2V0U3RhdHVzLnByb3BUeXBlcyA9IHtcbiAgdGlja2V0OiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIG93bmVyOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgICAgc3RhdHVzOiBQcm9wVHlwZXMuc3RyaW5nXG4gICAgfSksXG4gICAgcmVmdW5kUmVxdWVzdHM6IFByb3BUeXBlcy5hcnJheU9mKE9iamVjdClcbiAgfSlcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFRpY2tldFN0YXR1cztcbiIsImltcG9ydCB7IHVzZUVmZmVjdCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2gsIHVzZVNlbGVjdG9yIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgeyBnZXRFeHRyYVF1ZXN0aW9ucywgZ2V0VGlja2V0IH0gZnJvbSBcIi4uL2FjdGlvbnNcIjtcblxuY29uc3QgdXNlR2V0VGlja2V0ID0gKHRpY2tldElkLCBvcmRlcklkLCBvd25lcklkLCBydW4pID0+IHtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHRpY2tldElkICYmIG9yZGVySWQgJiYgb3duZXJJZCAmJiBydW4pIHtcbiAgICAgIGRpc3BhdGNoKGdldFRpY2tldCh0aWNrZXRJZCwgb3JkZXJJZCkpO1xuICAgICAgZGlzcGF0Y2goZ2V0RXh0cmFRdWVzdGlvbnMob3duZXJJZCkpO1xuICAgIH1cbiAgfSwgW3RpY2tldElkLCBvcmRlcklkLCBvd25lcklkLCBydW5dKTtcblxuICBjb25zdCB7IGV4dHJhUXVlc3Rpb25zLCBjdXJyZW50VGlja2V0OiB0aWNrZXQgfSA9IHVzZVNlbGVjdG9yKFxuICAgIChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGVcbiAgKTtcblxuICByZXR1cm4geyB0aWNrZXQsIGV4dHJhUXVlc3Rpb25zIH07XG59O1xuXG5leHBvcnQgZGVmYXVsdCB1c2VHZXRUaWNrZXQ7XG4iLCJpbXBvcnQgeyB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcblxuLy8gU21vb3RoIHNjcm9sbGluZyBmdW5jdGlvbiB1c2luZyByZXF1ZXN0QW5pbWF0aW9uRnJhbWVcbmZ1bmN0aW9uIHNtb290aFNjcm9sbFRvKGNvbnRhaW5lciwgdGFyZ2V0U2Nyb2xsVG9wLCBkdXJhdGlvbikge1xuICBjb25zdCBzdGFydFNjcm9sbFRvcCA9IGNvbnRhaW5lci5zY3JvbGxUb3A7XG4gIGNvbnN0IGRpc3RhbmNlID0gdGFyZ2V0U2Nyb2xsVG9wIC0gc3RhcnRTY3JvbGxUb3A7XG4gIGxldCBzdGFydFRpbWUgPSBudWxsO1xuXG4gIGZ1bmN0aW9uIGFuaW1hdGlvblN0ZXAodGltZXN0YW1wKSB7XG4gICAgaWYgKCFzdGFydFRpbWUpIHN0YXJ0VGltZSA9IHRpbWVzdGFtcDtcbiAgICBjb25zdCBlbGFwc2VkID0gdGltZXN0YW1wIC0gc3RhcnRUaW1lO1xuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW1hZ2ljLW51bWJlcnNcbiAgICBjb25zdCBwcm9ncmVzcyA9IE1hdGgubWluKGVsYXBzZWQgLyBkdXJhdGlvbiwgMSk7XG4gICAgY29uc3QgZWFzZUluT3V0UXVhZCA9XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbWFnaWMtbnVtYmVyc1xuICAgICAgcHJvZ3Jlc3MgPCAwLjUgPyAyICogcHJvZ3Jlc3MgKiogMiA6IDEgLSAoLTIgKiBwcm9ncmVzcyArIDIpICoqIDIgLyAyO1xuXG4gICAgY29udGFpbmVyLnNjcm9sbFRvcCA9IHN0YXJ0U2Nyb2xsVG9wICsgZGlzdGFuY2UgKiBlYXNlSW5PdXRRdWFkO1xuXG4gICAgaWYgKGVsYXBzZWQgPCBkdXJhdGlvbikge1xuICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGFuaW1hdGlvblN0ZXApO1xuICAgIH1cbiAgfVxuXG4gIHJlcXVlc3RBbmltYXRpb25GcmFtZShhbmltYXRpb25TdGVwKTtcbn1cblxuY29uc3QgdXNlU2Nyb2xsVG9FcnJvciA9IChmb3JtaWssIGNvbnRhaW5lcklkKSA9PiB7XG4gIGNvbnN0IHsgZXJyb3JzLCBpc1ZhbGlkLCBpc1N1Ym1pdHRpbmcgfSA9IGZvcm1paztcbiAgY29uc3QgZXJyb3JBcnJheSA9IE9iamVjdC5rZXlzKGVycm9ycyk7XG4gIGNvbnN0IGVycm9yQ291bnQgPSBlcnJvckFycmF5Lmxlbmd0aDtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChpc1ZhbGlkIHx8IGVycm9yQ291bnQgPT09IDApIHJldHVybjtcblxuICAgIC8vIHNvcnQgZWxlbWVudHMgYnkgcG9zaXRpb25cbiAgICBjb25zdCBlbGVtZW50c1NvcnRlZCA9IGVycm9yQXJyYXlcbiAgICAgIC5yZWR1Y2UoKHJlc3VsdCwgZXJyb3IpID0+IHtcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYGlucHV0W25hbWU9JyR7ZXJyb3J9J11gKTtcbiAgICAgICAgaWYgKCFlbGVtZW50KSByZXR1cm4gcmVzdWx0O1xuXG4gICAgICAgIGNvbnN0IGVsUmVjdCA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIHJlc3VsdC5wdXNoKHsgZWxlbWVudCwgZXJyb3IsIHRvcDogZWxSZWN0LnRvcCB9KTtcblxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfSwgW10pXG4gICAgICAuc29ydCgoYSwgYikgPT4gYS50b3AgLSBiLnRvcCk7XG5cbiAgICBpZiAoZWxlbWVudHNTb3J0ZWQubGVuZ3RoID09PSAwKSByZXR1cm47XG5cbiAgICBjb25zdCBjb250YWluZXIgPSBkb2N1bWVudFxuICAgICAgLmdldEVsZW1lbnRCeUlkKGNvbnRhaW5lcklkKVxuICAgICAgLnF1ZXJ5U2VsZWN0b3IoXCIuTXVpRHJhd2VyLXBhcGVyXCIpO1xuICAgIGNvbnN0IHRhcmdldCA9IGVsZW1lbnRzU29ydGVkWzBdO1xuXG4gICAgaWYgKGNvbnRhaW5lcj8uY29udGFpbnModGFyZ2V0LmVsZW1lbnQpKSB7XG4gICAgICBjb25zdCBjb250YWluZXJSZWN0ID0gY29udGFpbmVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgICAvLyBDYWxjdWxhdGUgdGhlIG9mZnNldCBvZiB0aGUgdGFyZ2V0IGVsZW1lbnQgcmVsYXRpdmUgdG8gdGhlIGNvbnRhaW5lclxuICAgICAgY29uc3QgZWxlbU9mZmVzdCA9IDEwMDtcbiAgICAgIGNvbnN0IGFuaW1hdGlvbkR1cmF0aW9uID0gNTAwO1xuICAgICAgY29uc3Qgc2Nyb2xsVG9wID1cbiAgICAgICAgdGFyZ2V0LnRvcCAtIGNvbnRhaW5lclJlY3QudG9wICsgY29udGFpbmVyLnNjcm9sbFRvcCAtIGVsZW1PZmZlc3Q7XG5cbiAgICAgIC8vIFNjcm9sbCB0aGUgY29udGFpbmVyIHRvIHRoZSB0YXJnZXQgZWxlbWVudCdzIHBvc2l0aW9uXG4gICAgICBzbW9vdGhTY3JvbGxUbyhjb250YWluZXIsIHNjcm9sbFRvcCwgYW5pbWF0aW9uRHVyYXRpb24pOyAvLyA1MDBtcyBkdXJhdGlvblxuICAgIH1cbiAgfSwgW2lzU3VibWl0dGluZ10pO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgdXNlU2Nyb2xsVG9FcnJvcjtcbiIsImltcG9ydCB7IGlzVGlja2V0UmVmdW5kYWJsZSB9IGZyb20gXCIuLi91dGlscy90aWNrZXRVdGlsc1wiO1xuXG5leHBvcnQgY29uc3QgU1RBVFVTX0NPTVBMRVRFID0gXCJDb21wbGV0ZVwiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19JTkNPTVBMRVRFID0gXCJJbmNvbXBsZXRlXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX0NBTkNFTExFRCA9IFwiQ2FuY2VsbGVkXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX1VOQVNTSUdORUQgPSBcIlVuYXNzaWduZWRcIjtcblxuZXhwb3J0IGNvbnN0IHVzZVRpY2tldERldGFpbHMgPSAodGlja2V0KSA9PiB7XG4gIGNvbnN0IGdldFN0YXR1cyA9ICgpID0+IHtcbiAgICBpZiAoIXRpY2tldC5pc19hY3RpdmUpIHJldHVybiBTVEFUVVNfQ0FOQ0VMTEVEO1xuICAgIGlmICh0aWNrZXQub3duZXJfaWQgPT09IDApIHJldHVybiBTVEFUVVNfVU5BU1NJR05FRDtcbiAgICBpZiAoIXRpY2tldC5vd25lcj8uZmlyc3RfbmFtZSB8fCAhdGlja2V0Lm93bmVyPy5sYXN0X25hbWUpXG4gICAgICByZXR1cm4gU1RBVFVTX0lOQ09NUExFVEU7XG4gICAgcmV0dXJuIHRpY2tldC5vd25lci5zdGF0dXM7XG4gIH07XG5cbiAgaWYgKCF0aWNrZXQpIHJldHVybiB7fTtcblxuICBjb25zdCBzdGF0dXMgPSBnZXRTdGF0dXMoKTtcbiAgY29uc3QgaXNBY3RpdmUgPSB0aWNrZXQuaXNfYWN0aXZlICYmIHN0YXR1cyAhPT0gU1RBVFVTX0NBTkNFTExFRDtcbiAgY29uc3QgaXNSZWZ1bmRhYmxlID0gaXNUaWNrZXRSZWZ1bmRhYmxlKHRpY2tldCk7XG4gIGNvbnN0IGFsbG93c0RlbGVnYXRlID1cbiAgICAodGlja2V0Py50aWNrZXRfdHlwZT8uYWxsb3dzX3RvX2RlbGVnYXRlIHx8XG4gICAgICB0aWNrZXQ/LnByb21vX2NvZGU/LmFsbG93c190b19kZWxlZ2F0ZSkgJiZcbiAgICBzdGF0dXMgIT09IFNUQVRVU19VTkFTU0lHTkVEICYmXG4gICAgIXRpY2tldC5vd25lcj8ubWFuYWdlcj8uaWQgJiZcbiAgICAhdGlja2V0Lm93bmVyPy5tYW5hZ2VyX2lkO1xuICBjb25zdCBpc0NvbXBsZXRlID0gc3RhdHVzID09PSBTVEFUVVNfQ09NUExFVEU7XG4gIGNvbnN0IGlzVW5hc3NpZ25lZCA9IHN0YXR1cyA9PT0gU1RBVFVTX1VOQVNTSUdORUQ7XG4gIGNvbnN0IGlzSW5jb21wbGV0ZSA9IHN0YXR1cyA9PT0gU1RBVFVTX0lOQ09NUExFVEU7XG4gIGNvbnN0IGNhblJlYXNzaWduID1cbiAgICAhaXNVbmFzc2lnbmVkICYmXG4gICAgdGlja2V0LnRpY2tldF90eXBlPy5hbGxvd3NfdG9fcmVhc3NpZ24gJiZcbiAgICAoIXRpY2tldC5wcm9tb19jb2RlIHx8IHRpY2tldC5wcm9tb19jb2RlPy5hbGxvd3NfdG9fcmVhc3NpZ24pO1xuXG4gIHJldHVybiB7XG4gICAgc3RhdHVzLFxuICAgIGlzQ29tcGxldGUsXG4gICAgaXNVbmFzc2lnbmVkLFxuICAgIGlzSW5jb21wbGV0ZSxcbiAgICBpc0FjdGl2ZSxcbiAgICBpc1JlZnVuZGFibGUsXG4gICAgYWxsb3dzRGVsZWdhdGUsXG4gICAgY2FuUmVhc3NpZ25cbiAgfTtcbn07XG4iLCJpbXBvcnQgaTE4biBmcm9tIFwiaTE4bmV4dFwiO1xuaW1wb3J0IHsgaW5pdFJlYWN0STE4bmV4dCB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgTGFuZ3VhZ2VEZXRlY3RvciBmcm9tIFwiaTE4bmV4dC1icm93c2VyLWxhbmd1YWdlZGV0ZWN0b3JcIjtcbmltcG9ydCBlbiBmcm9tIFwiLi9sb2NhbGVzL2VuLmpzb25cIjtcbmltcG9ydCBlcyBmcm9tIFwiLi9sb2NhbGVzL2VzLmpzb25cIjtcblxuLy8gaW1wb3J0IEJhY2tlbmQgZnJvbSAnaTE4bmV4dC1odHRwLWJhY2tlbmQnO1xuLy8gZG9uJ3Qgd2FudCB0byB1c2UgdGhpcz9cbi8vIGhhdmUgYSBsb29rIGF0IHRoZSBRdWljayBzdGFydCBndWlkZVxuLy8gZm9yIHBhc3NpbmcgaW4gbG5nIGFuZCB0cmFuc2xhdGlvbnMgb24gaW5pdFxuXG5pMThuXG4gIC8vIGxvYWQgdHJhbnNsYXRpb24gdXNpbmcgaHR0cCAtPiBzZWUgL3B1YmxpYy9sb2NhbGVzIChpLmUuIGh0dHBzOi8vZ2l0aHViLmNvbS9pMThuZXh0L3JlYWN0LWkxOG5leHQvdHJlZS9tYXN0ZXIvZXhhbXBsZS9yZWFjdC9wdWJsaWMvbG9jYWxlcylcbiAgLy8gbGVhcm4gbW9yZTogaHR0cHM6Ly9naXRodWIuY29tL2kxOG5leHQvaTE4bmV4dC1odHRwLWJhY2tlbmRcbiAgLy8gd2FudCB5b3VyIHRyYW5zbGF0aW9ucyB0byBiZSBsb2FkZWQgZnJvbSBhIHByb2Zlc3Npb25hbCBDRE4/ID0+IGh0dHBzOi8vZ2l0aHViLmNvbS9sb2NpemUvcmVhY3QtdHV0b3JpYWwjc3RlcC0yLS0tdXNlLXRoZS1sb2NpemUtY2RuXG4gIC8vIC51c2UoQmFja2VuZClcbiAgLy8gZGV0ZWN0IHVzZXIgbGFuZ3VhZ2VcbiAgLy8gbGVhcm4gbW9yZTogaHR0cHM6Ly9naXRodWIuY29tL2kxOG5leHQvaTE4bmV4dC1icm93c2VyLWxhbmd1YWdlRGV0ZWN0b3JcbiAgLnVzZShMYW5ndWFnZURldGVjdG9yKVxuICAvLyBwYXNzIHRoZSBpMThuIGluc3RhbmNlIHRvIHJlYWN0LWkxOG5leHQuXG4gIC51c2UoaW5pdFJlYWN0STE4bmV4dClcbiAgLy8gaW5pdCBpMThuZXh0XG4gIC8vIGZvciBhbGwgb3B0aW9ucyByZWFkOiBodHRwczovL3d3dy5pMThuZXh0LmNvbS9vdmVydmlldy9jb25maWd1cmF0aW9uLW9wdGlvbnNcbiAgLmluaXQoe1xuICAgIGZhbGxiYWNrTG5nOiBcImVuXCIsXG4gICAgZGVidWc6IGZhbHNlLFxuICAgIHJlc291cmNlczoge1xuICAgICAgZW46IHsgdHJhbnNsYXRpb246IGVuIH0sXG4gICAgICBlczogeyB0cmFuc2xhdGlvbjogZXMgfVxuICAgIH0sXG4gICAgaW50ZXJwb2xhdGlvbjoge1xuICAgICAgZXNjYXBlVmFsdWU6IGZhbHNlIC8vIG5vdCBuZWVkZWQgZm9yIHJlYWN0IGFzIGl0IGVzY2FwZXMgYnkgZGVmYXVsdFxuICAgIH1cbiAgfSk7XG5cbmV4cG9ydCBkZWZhdWx0IGkxOG47XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuaW1wb3J0IHsgTE9HT1VUX1VTRVIgfSBmcm9tIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9zZWN1cml0eS9hY3Rpb25zXCI7XG5pbXBvcnQge1xuICBTVEFSVF9MT0FESU5HLFxuICBTVE9QX0xPQURJTkcsXG4gIFJFU0VUX0xPQURJTkdcbn0gZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvYWN0aW9uc1wiO1xuaW1wb3J0IHtcbiAgUkVTRVRfU1RBVEUsXG4gIFJFU0VUX0ZJTFRFUixcbiAgU0VUX1NUQVRFLFxuICBTRVRfVVNFUixcbiAgR0VUX1VTRVJfT1JERVJTLFxuICBHRVRfTVlfQVNTSUdORURfVElDS0VUUyxcbiAgR0VUX1RJQ0tFVFNfQllfT1JERVIsXG4gIFVQREFURV9USUNLRVRTX1JFRlVORF9SRVFVRVNURUQsXG4gIFJFQ0VJVkVfVElDS0VULFxuICBSRUNFSVZFX0VYVFJBX1FVRVNUSU9OUyxcbiAgVVBEQVRFX1RJQ0tFVCxcbiAgQVNTSUdOX1RJQ0tFVCxcbiAgUkVTRVRfQVBJX0VSUk9SLFxuICBTRVRfQVBJX0VSUk9SLFxuICBSRVNFVF9USUNLRVRcbn0gZnJvbSBcIi4vYWN0aW9uc1wiO1xuaW1wb3J0IHsgRklSU1RfUEFHRSB9IGZyb20gXCIuL3V0aWxzL2NvbnN0YW50c1wiO1xuXG5jb25zdCBERUZBVUxUX1NUQVRFID0ge1xuICBzdW1taXQ6IG51bGwsXG4gIHVzZXI6IHt9LFxuICB3aWRnZXRMb2FkaW5nOiBmYWxzZSxcbiAgbWVtYmVyT3JkZXJzOiBbXSxcbiAgdXNlclRpY2tldHM6IFtdLFxuICBleHRyYVF1ZXN0aW9uczogW10sXG4gIGN1cnJlbnRUaWNrZXQ6IG51bGwsXG4gIGVycm9yczoge30sXG4gIGxvYWRpbmc6IGZhbHNlLFxuICBpc09yZGVyTG9hZGluZzogZmFsc2UsXG4gIG9yZGVyc19jdXJyZW50X3BhZ2U6IDEsXG4gIG9yZGVyc19sYXN0X3BhZ2U6IDEsXG4gIG9yZGVyc19wZXJfcGFnZTogNSxcbiAgb3JkZXJzX3RvdGFsOiAwLFxuICB0aWNrZXRfY3VycmVudF9wYWdlOiAxLFxuICB0aWNrZXRfbGFzdF9wYWdlOiAxLFxuICB0aWNrZXRfcGVyX3BhZ2U6IDUsXG4gIHRpY2tldF90b3RhbDogMCxcbiAgdXNlcl90aWNrZXRzX3RvdGFsOiAwLFxuICB1c2VyX3RpY2tldHNfY3VycmVudF9wYWdlOiAwLFxuICB1c2VyX3RpY2tldHNfbGFzdF9wYWdlOiAwLFxuICBhcGlFcnJvcjogbnVsbFxufTtcblxuY29uc3QgV2lkZ2V0UmVkdWNlciA9IChzdGF0ZSA9IERFRkFVTFRfU1RBVEUsIHsgdHlwZSwgcGF5bG9hZCB9ID0ge30pID0+IHtcbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSBMT0dPVVRfVVNFUjpcbiAgICBjYXNlIFJFU0VUX1NUQVRFOlxuICAgICAgcmV0dXJuIERFRkFVTFRfU1RBVEU7XG4gICAgY2FzZSBTVEFSVF9MT0FESU5HOlxuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIGxvYWRpbmc6IHRydWUgfTtcbiAgICBjYXNlIFNUT1BfTE9BRElORzpcbiAgICBjYXNlIFJFU0VUX0xPQURJTkc6XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgbG9hZGluZzogZmFsc2UgfTtcbiAgICBjYXNlIFJFU0VUX0FQSV9FUlJPUjpcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBhcGlFcnJvcjogbnVsbCB9O1xuICAgIGNhc2UgUkVTRVRfRklMVEVSOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIG9yZGVyc19jdXJyZW50X3BhZ2U6IDEsXG4gICAgICAgIG9yZGVyc19sYXN0X3BhZ2U6IDFcbiAgICAgIH07XG4gICAgY2FzZSBTRVRfU1RBVEU6XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgLi4ucGF5bG9hZCB9O1xuICAgIGNhc2UgU0VUX0FQSV9FUlJPUjoge1xuICAgICAgY29uc3QgeyB0aXRsZSwgaHRtbDogYm9keSB9ID0gcGF5bG9hZDtcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBhcGlFcnJvcjogeyB0aXRsZSwgYm9keSB9IH07XG4gICAgfVxuICAgIGNhc2UgU0VUX1VTRVI6XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgdXNlcjogcGF5bG9hZCB9O1xuICAgIGNhc2UgR0VUX1VTRVJfT1JERVJTOiB7XG4gICAgICBjb25zdCB7IG1lbWJlck9yZGVycyB9ID0gc3RhdGU7XG4gICAgICBjb25zdCB7IGRhdGEsIHRvdGFsLCBjdXJyZW50X3BhZ2UsIGxhc3RfcGFnZSB9ID0gcGF5bG9hZC5yZXNwb25zZTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIG1lbWJlck9yZGVyczpcbiAgICAgICAgICBjdXJyZW50X3BhZ2UgPT09IEZJUlNUX1BBR0UgPyBkYXRhIDogWy4uLm1lbWJlck9yZGVycywgLi4uZGF0YV0sXG4gICAgICAgIG9yZGVyc190b3RhbDogdG90YWwsXG4gICAgICAgIG9yZGVyc19jdXJyZW50X3BhZ2U6IGN1cnJlbnRfcGFnZSxcbiAgICAgICAgb3JkZXJzX2xhc3RfcGFnZTogbGFzdF9wYWdlXG4gICAgICB9O1xuICAgIH1cbiAgICBjYXNlIEdFVF9NWV9BU1NJR05FRF9USUNLRVRTOiB7XG4gICAgICBjb25zdCB7IHVzZXJUaWNrZXRzIH0gPSBzdGF0ZTtcbiAgICAgIGNvbnN0IHsgZGF0YSwgdG90YWwsIGN1cnJlbnRfcGFnZSwgbGFzdF9wYWdlIH0gPSBwYXlsb2FkLnJlc3BvbnNlO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIHVzZXJUaWNrZXRzOlxuICAgICAgICAgIGN1cnJlbnRfcGFnZSA9PT0gRklSU1RfUEFHRSA/IGRhdGEgOiBbLi4udXNlclRpY2tldHMsIC4uLmRhdGFdLFxuICAgICAgICB1c2VyX3RpY2tldHNfdG90YWw6IHRvdGFsLFxuICAgICAgICB1c2VyX3RpY2tldHNfY3VycmVudF9wYWdlOiBjdXJyZW50X3BhZ2UsXG4gICAgICAgIHVzZXJfdGlja2V0c19sYXN0X3BhZ2U6IGxhc3RfcGFnZVxuICAgICAgfTtcbiAgICB9XG4gICAgY2FzZSBHRVRfVElDS0VUU19CWV9PUkRFUjoge1xuICAgICAgY29uc3QgeyBtZW1iZXJPcmRlcnMgfSA9IHN0YXRlO1xuICAgICAgY29uc3QgeyBkYXRhLCB0b3RhbCwgY3VycmVudF9wYWdlLCBsYXN0X3BhZ2UgfSA9IHBheWxvYWQucmVzcG9uc2U7XG4gICAgICBjb25zdCBmb3JtZXJPcmRlciA9IG1lbWJlck9yZGVycy5maW5kKChvKSA9PiBvLmlkID09PSBkYXRhWzBdPy5vcmRlcl9pZCk7XG5cbiAgICAgIGNvbnN0IHVwZGF0ZWRPcmRlciA9IHtcbiAgICAgICAgLi4uZm9ybWVyT3JkZXIsXG4gICAgICAgIG1lbWJlclRpY2tldHM6XG4gICAgICAgICAgY3VycmVudF9wYWdlID09PSBGSVJTVF9QQUdFXG4gICAgICAgICAgICA/IGRhdGFcbiAgICAgICAgICAgIDogWy4uLmZvcm1lck9yZGVyLm1lbWJlclRpY2tldHMsIC4uLmRhdGFdLFxuICAgICAgICB0aWNrZXRzX3BhZ2VfY3VycmVudDogY3VycmVudF9wYWdlLFxuICAgICAgICB0aWNrZXRzX3BhZ2VfbGFzdDogbGFzdF9wYWdlLFxuICAgICAgICB0aWNrZXRzX3RvdGFsOiB0b3RhbFxuICAgICAgfTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBtZW1iZXJPcmRlcnM6IG1lbWJlck9yZGVycy5tYXAoKG1vKSA9PlxuICAgICAgICAgIG1vLmlkID09PSB1cGRhdGVkT3JkZXIuaWQgPyB1cGRhdGVkT3JkZXIgOiBtb1xuICAgICAgICApXG4gICAgICB9O1xuICAgIH1cbiAgICBjYXNlIFVQREFURV9USUNLRVRTX1JFRlVORF9SRVFVRVNURUQ6IHtcbiAgICAgIGNvbnN0IHsgbWVtYmVyT3JkZXJzIH0gPSBzdGF0ZTtcbiAgICAgIGNvbnN0IHRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWQgPSBwYXlsb2FkO1xuICAgICAgY29uc3Qgb3JkZXIgPSBtZW1iZXJPcmRlcnMuZmluZChcbiAgICAgICAgKG8pID0+IG8uaWQgPT09IHRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWRbMF0/Lm9yZGVyX2lkXG4gICAgICApO1xuICAgICAgY29uc3QgdXBkYXRlZFRpY2tldHMgPSBvcmRlcj8ubWVtYmVyVGlja2V0cy5tYXAoXG4gICAgICAgICh0aWNrZXQpID0+XG4gICAgICAgICAgdGlja2V0c1JlZnVuZFJlcXVlc3RlZC5maW5kKCh0cnIpID0+IHRyci5pZCA9PT0gdGlja2V0LmlkKSB8fCB0aWNrZXRcbiAgICAgICk7XG4gICAgICBjb25zdCB1cGRhdGVkT3JkZXIgPSB7XG4gICAgICAgIC4uLm9yZGVyLFxuICAgICAgICBtZW1iZXJUaWNrZXRzOiB1cGRhdGVkVGlja2V0c1xuICAgICAgfTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBtZW1iZXJPcmRlcnM6IG1lbWJlck9yZGVycy5tYXAoKG1vKSA9PlxuICAgICAgICAgIG1vLmlkID09PSB1cGRhdGVkT3JkZXIuaWQgPyB1cGRhdGVkT3JkZXIgOiBtb1xuICAgICAgICApXG4gICAgICB9O1xuICAgIH1cbiAgICBjYXNlIFJFU0VUX1RJQ0tFVDoge1xuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIGN1cnJlbnRUaWNrZXQ6IG51bGwgfTtcbiAgICB9XG4gICAgY2FzZSBSRUNFSVZFX1RJQ0tFVDoge1xuICAgICAgY29uc3QgdGlja2V0ID0gcGF5bG9hZC5yZXNwb25zZTtcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBjdXJyZW50VGlja2V0OiB0aWNrZXQgfTtcbiAgICB9XG4gICAgY2FzZSBSRUNFSVZFX0VYVFJBX1FVRVNUSU9OUzoge1xuICAgICAgY29uc3QgeyBkYXRhIH0gPSBwYXlsb2FkLnJlc3BvbnNlO1xuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIGV4dHJhUXVlc3Rpb25zOiBkYXRhIH07XG4gICAgfVxuICAgIGNhc2UgVVBEQVRFX1RJQ0tFVDoge1xuICAgICAgY29uc3QgdGlja2V0RGF0YSA9IHBheWxvYWQucmVzcG9uc2U7XG4gICAgICBjb25zdCBuZXdPcmRlcnMgPSBzdGF0ZS5tZW1iZXJPcmRlcnMubWFwKChvcmRlcikgPT4ge1xuICAgICAgICBjb25zdCBuZXdUaWNrZXRzID0gb3JkZXIubWVtYmVyVGlja2V0cy5tYXAoKHRpY2tldCkgPT4ge1xuICAgICAgICAgIGlmICh0aWNrZXQuaWQgPT09IHRpY2tldERhdGEuaWQpIHtcbiAgICAgICAgICAgIHJldHVybiB0aWNrZXREYXRhO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gdGlja2V0O1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4geyAuLi5vcmRlciwgbWVtYmVyVGlja2V0czogbmV3VGlja2V0cyB9O1xuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBtZW1iZXJPcmRlcnM6IG5ld09yZGVycyB9O1xuICAgIH1cbiAgICBjYXNlIEFTU0lHTl9USUNLRVQ6IHtcbiAgICAgIGNvbnN0IHRpY2tldERhdGEgPSBwYXlsb2FkLnJlc3BvbnNlO1xuICAgICAgY29uc3QgbmV3T3JkZXJzID0gc3RhdGUubWVtYmVyT3JkZXJzLm1hcCgob3JkZXIpID0+IHtcbiAgICAgICAgY29uc3QgbmV3VGlja2V0cyA9IG9yZGVyLm1lbWJlclRpY2tldHMubWFwKCh0aWNrZXQpID0+IHtcbiAgICAgICAgICBpZiAodGlja2V0LmlkID09PSB0aWNrZXREYXRhLmlkKSB7XG4gICAgICAgICAgICByZXR1cm4gdGlja2V0RGF0YTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHRpY2tldDtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHsgLi4ub3JkZXIsIG1lbWJlclRpY2tldHM6IG5ld1RpY2tldHMgfTtcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgY3VycmVudFRpY2tldDogdGlja2V0RGF0YSwgbWVtYmVyT3JkZXJzOiBuZXdPcmRlcnMgfTtcbiAgICB9XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBzdGF0ZTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgV2lkZ2V0UmVkdWNlcjtcbiIsImltcG9ydCB7IHVzZU1lbW8gfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IGNvbmZpZ3VyZVN0b3JlIH0gZnJvbSBcIkByZWR1eGpzL3Rvb2xraXRcIjtcbmltcG9ydCB7XG4gIHBlcnNpc3RTdG9yZSxcbiAgcGVyc2lzdFJlZHVjZXIsXG4gIEZMVVNILFxuICBSRUhZRFJBVEUsXG4gIFBBVVNFLFxuICBQRVJTSVNULFxuICBQVVJHRSxcbiAgUkVHSVNURVJcbn0gZnJvbSBcInJlZHV4LXBlcnNpc3RcIjtcbmltcG9ydCBzdG9yYWdlIGZyb20gXCJyZWR1eC1wZXJzaXN0L2xpYi9zdG9yYWdlXCI7XG5pbXBvcnQgeyBjb21iaW5lUmVkdWNlcnMgfSBmcm9tIFwicmVkdXhcIjtcbmltcG9ydCBXaWRnZXRSZWR1Y2VyIGZyb20gXCIuL3JlZHVjZXJcIjtcblxuZXhwb3J0IGNvbnN0IGdldFN0b3JlID0gKHtcbiAgY2xpZW50SWQsXG4gIGxvZ2luVXJsLFxuICBzdW1taXQsXG4gIGFwaUJhc2VVcmwsXG4gIHVwZGF0ZVByb2ZpbGVcbn0pID0+IHtcbiAgLy8gdG8gYWRkIG90aGVyIHJlZHVjZXJzIGxhdGVyXG4gIGNvbnN0IHJlZHVjZXJzID0gY29tYmluZVJlZHVjZXJzKHtcbiAgICB3aWRnZXRTdGF0ZTogV2lkZ2V0UmVkdWNlclxuICB9KTtcblxuICBjb25zdCBzdG9yZSA9IGNvbmZpZ3VyZVN0b3JlKHtcbiAgICByZWR1Y2VyOiBwZXJzaXN0UmVkdWNlcihcbiAgICAgIHtcbiAgICAgICAga2V5OiBgcm9vdF9teV9vcmRlcnNfdGlja2V0c18ke2NsaWVudElkfWAsXG4gICAgICAgIHN0b3JhZ2VcbiAgICAgIH0sXG4gICAgICByZWR1Y2Vyc1xuICAgICksXG4gICAgbWlkZGxld2FyZTogKGdldERlZmF1bHRNaWRkbGV3YXJlKSA9PlxuICAgICAgZ2V0RGVmYXVsdE1pZGRsZXdhcmUoe1xuICAgICAgICB0aHVuazoge1xuICAgICAgICAgIGV4dHJhQXJndW1lbnQ6IHtcbiAgICAgICAgICAgIGNsaWVudElkLFxuICAgICAgICAgICAgYXBpQmFzZVVybCxcbiAgICAgICAgICAgIHN1bW1pdCxcbiAgICAgICAgICAgIGxvZ2luVXJsLFxuICAgICAgICAgICAgdXBkYXRlUHJvZmlsZVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgaW1tdXRhYmxlQ2hlY2s6IGZhbHNlLFxuICAgICAgICBzZXJpYWxpemFibGVDaGVjazoge1xuICAgICAgICAgIGlnbm9yZWRBY3Rpb25zOiBbRkxVU0gsIFJFSFlEUkFURSwgUEFVU0UsIFBFUlNJU1QsIFBVUkdFLCBSRUdJU1RFUl1cbiAgICAgICAgfVxuICAgICAgfSlcbiAgfSk7XG5cbiAgcmV0dXJuIHN0b3JlO1xufTtcblxuZXhwb3J0IGNvbnN0IHVzZUluaXRTdG9yZSA9IChjb25maWcpID0+IHtcbiAgY29uc3Qgc3RvcmUgPSB1c2VNZW1vKCgpID0+IGdldFN0b3JlKGNvbmZpZyksIFtdKTtcbiAgY29uc3QgcGVyc2lzdG9yID0gdXNlTWVtbygoKSA9PiBwZXJzaXN0U3RvcmUoc3RvcmUpLCBbc3RvcmVdKTtcblxuICByZXR1cm4ge1xuICAgIHN0b3JlLFxuICAgIHBlcnNpc3RvclxuICB9O1xufTtcbiIsImltcG9ydCB7XG4gIGluaXRMb2dPdXQsXG4gIGdldEFjY2Vzc1Rva2VuXG59IGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3NlY3VyaXR5L21ldGhvZHNcIjtcbmltcG9ydCAqIGFzIFNlbnRyeSBmcm9tIFwiQHNlbnRyeS9yZWFjdFwiO1xuXG5leHBvcnQgY29uc3QgZ2V0QWNjZXNzVG9rZW5TYWZlbHkgPSBhc3luYyAoKSA9PiB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGF3YWl0IGdldEFjY2Vzc1Rva2VuKCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBjb25zb2xlLmxvZyhcIm15LW9yZGVycy10aWNrZXRzLXdpZGdlOjogZ2V0QWNjZXNzVG9rZW5TYWZlbHkgZXJyb3I6IFwiLCBlKTtcbiAgICBTZW50cnkuY2FwdHVyZUV4Y2VwdGlvbihlKTtcbiAgICBpbml0TG9nT3V0KCk7XG4gICAgcmV0dXJuIFByb21pc2UucmVqZWN0KCk7XG4gIH1cbn07XG4iLCJleHBvcnQgY29uc3QgTEFTVF9IT1VSX09GXzI0X0hPVVIgPSAyMztcbmV4cG9ydCBjb25zdCBMQVNUX01JTlVURV9PRl9IT1VSID0gNTk7XG5leHBvcnQgY29uc3QgT05FX1BBR0VfTkVYVCA9IDE7XG5leHBvcnQgY29uc3QgTUlMTElTRUNfVE9fU0VDID0gMTAwMDtcbmV4cG9ydCBjb25zdCBPTkVfREFZID0gMTtcbmV4cG9ydCBjb25zdCBERUZBVUxUX0lURU1TX1BFUl9QQUdFID0gNTtcbmV4cG9ydCBjb25zdCBGSVJTVF9QQUdFID0gMTtcbmV4cG9ydCBjb25zdCBQQUdJTkFUSU9OX0RJU1BMQVlfQ09VTlQgPSA1O1xuZXhwb3J0IGNvbnN0IFNURVBfT05FID0gMTtcbmV4cG9ydCBjb25zdCBTVEVQX1RXTyA9IDI7XG5cbmV4cG9ydCBjb25zdCBTVEFUVVNfQ09NUExFVEUgPSBcIlNUQVRVU19DT01QTEVURVwiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19JTkNPTVBMRVRFID0gXCJTVEFUVVNfSU5DT01QTEVURVwiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19QRU5ESU5HID0gXCJTVEFUVVNfUEVORElOR1wiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19DQU5DRUxMRUQgPSBcIlNUQVRVU19DQU5DRUxMRURcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfRVJST1IgPSBcIlNUQVRVU19FUlJPUlwiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19QUk9DRVNTSU5HID0gXCJTVEFUVVNfUFJPQ0VTU0lOR1wiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19VTkFTU0lHTkVEID0gXCJTVEFUVVNfVU5BU1NJR05FRFwiO1xuXG5leHBvcnQgY29uc3QgU1RBVFVTX1JFRlVORF9QRU5ESU5HID0gXCJTVEFUVVNfUkVGVU5EX1BFTkRJTkdcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfUkVGVU5EX0FQUFJPVkVEID0gXCJTVEFUVVNfUkVGVU5EX0FQUFJPVkVEXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX1JFRlVORF9SRUpFQ1RFRCA9IFwiU1RBVFVTX1JFRlVORF9SRUpFQ1RFRFwiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19SRUZVTkRfUEVORElOR19MQyA9IFwiUmVxdWVzdGVkXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX1JFRlVORF9BUFBST1ZFRF9MQyA9IFwiQXBwcm92ZWRcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfUkVGVU5EX1JFSkVDVEVEX0xDID0gXCJSZWplY3RlZFwiO1xuXG5leHBvcnQgY29uc3QgSkVTVF9USU1FT1VUX0lOX01JTExJU0VDID0gMTAwMDA7XG5cbmV4cG9ydCBjb25zdCBPTkVfSVRFTSA9IDE7XG5leHBvcnQgY29uc3QgVFdPX0lURU0gPSAyO1xuZXhwb3J0IGNvbnN0IEZJVkVfSVRFTSA9IDU7XG5leHBvcnQgY29uc3QgU0lYX0lURU0gPSA2O1xuXG5leHBvcnQgY29uc3QgUFJPTUlTRV9CQVRDSF9MSU1JVCA9IDEwO1xuZXhwb3J0IGNvbnN0IEZJRlRZX1BFUl9QQUdFID0gNTA7XG5cbmV4cG9ydCBjb25zdCBFUlJPUl9DT0RFUyA9IHtcbiAgNDAxOiA0MDEsXG4gIDQwMzogNDAxLFxuICA0MTI6IDQwMSxcbiAgNTAwOiA1MDBcbn07XG4iLCJpbXBvcnQgbW9tZW50IGZyb20gXCJtb21lbnQtdGltZXpvbmVcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQge1xuICBMQVNUX0hPVVJfT0ZfMjRfSE9VUixcbiAgTEFTVF9NSU5VVEVfT0ZfSE9VUixcbiAgTUlMTElTRUNfVE9fU0VDXG59IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuXG5leHBvcnQgY29uc3QgZm9ybWF0Q3VycmVuY3kgPSAodmFsdWUsIHsgbG9jYWxlID0gXCJlbi1VU1wiLCAuLi5vcHRpb25zIH0pID0+IHtcbiAgY29uc3QgZGVmYXVsdE9wdGlvbnMgPSB7XG4gICAgY3VycmVuY3k6IFwiVVNEXCIsXG4gICAgbWluaW11bUZyYWN0aW9uRGlnaXRzOiAyLFxuICAgIG1heGltdW1GcmFjdGlvbkRpZ2l0czogMlxuICB9O1xuXG4gIGNvbnN0IGZvcm1hdHRlciA9IG5ldyBJbnRsLk51bWJlckZvcm1hdChsb2NhbGUsIHtcbiAgICBzdHlsZTogXCJjdXJyZW5jeVwiLFxuICAgIC4uLmRlZmF1bHRPcHRpb25zLFxuICAgIC4uLm9wdGlvbnNcbiAgfSk7XG5cbiAgcmV0dXJuIGZvcm1hdHRlci5mb3JtYXQodmFsdWUpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEZvcm1hdHRlZERhdGUgPSAoZGF0ZXRpbWUsIHRpbWVab25lKSA9PiB7XG4gIGlmICh0aW1lWm9uZSlcbiAgICByZXR1cm4gbW9tZW50XG4gICAgICAudHooZGF0ZXRpbWUgKiBNSUxMSVNFQ19UT19TRUMsIHRpbWVab25lKVxuICAgICAgLmZvcm1hdChcIk1NTU0gREQsIFlZWVlcIik7XG5cbiAgcmV0dXJuIG1vbWVudC51bml4KGRhdGV0aW1lKS5mb3JtYXQoXCJNTU1NIERELCBZWVlZXCIpO1xufTtcblxuZXhwb3J0IGNvbnN0IGNhbGN1bGF0ZU9yZGVyVG90YWxzID0gKHsgb3JkZXIsIHN1bW1pdCB9KSA9PiB7XG4gIGlmICghb3JkZXIgfHwgIXN1bW1pdCkgcmV0dXJuIHt9O1xuICBjb25zdCB0aWNrZXRzID0gb3JkZXI/Lm1lbWJlclRpY2tldHM7XG4gIGlmICghdGlja2V0cykgcmV0dXJuIHt9O1xuXG4gIGNvbnN0IHsgcmVmdW5kZWRfYW1vdW50LCBkaXNjb3VudF9hbW91bnQsIHRheGVzX2Ftb3VudCwgYW1vdW50IH0gPSBvcmRlcjtcbiAgY29uc3QgeyB0aWNrZXRfdHlwZXMgfSA9IHN1bW1pdDtcblxuICBjb25zdCB0aWNrZXRTdW1tYXJ5ID0gW107XG4gIGxldCBwdXJjaGFzZVRpY2tldFRvdGFsID0gMDtcblxuICBjb25zdCBjdXJyZW5jeU9iamVjdCA9IHsgY3VycmVuY3k6IG9yZGVyLmN1cnJlbmN5IH07XG5cbiAgT2JqZWN0LmtleXMob3JkZXIudGlja2V0c19leGNlcnB0X2J5X3RpY2tldF90eXBlKS5tYXAoKHRpY2tldCkgPT4ge1xuICAgIGNvbnN0IHRpY2tldFR5cGUgPSB0aWNrZXRfdHlwZXM/LmZpbmQoKHR0KSA9PiB0dC5uYW1lID09PSB0aWNrZXQpO1xuICAgIGlmICghdGlja2V0VHlwZSkgcmV0dXJuIG51bGw7XG4gICAgdGlja2V0U3VtbWFyeS5wdXNoKHtcbiAgICAgIHRpY2tldF90eXBlX2lkOiB0aWNrZXRUeXBlLmlkLFxuICAgICAgdGlja2V0X3R5cGU6IHRpY2tldFR5cGUsXG4gICAgICBuYW1lOiB0aWNrZXQsXG4gICAgICBxdHk6IG9yZGVyLnRpY2tldHNfZXhjZXJwdF9ieV90aWNrZXRfdHlwZVt0aWNrZXRdXG4gICAgfSk7XG4gICAgcHVyY2hhc2VUaWNrZXRUb3RhbCArPVxuICAgICAgdGlja2V0VHlwZS5jb3N0ICogb3JkZXIudGlja2V0c19leGNlcnB0X2J5X3RpY2tldF90eXBlW3RpY2tldF07XG5cbiAgICByZXR1cm4gdGlja2V0U3VtbWFyeTtcbiAgfSk7XG5cbiAgY29uc3QgcHVyY2hhc2VUb3RhbCA9IGZvcm1hdEN1cnJlbmN5KHB1cmNoYXNlVGlja2V0VG90YWwsIGN1cnJlbmN5T2JqZWN0KTtcblxuICBjb25zdCBkaXNjb3VudFRvdGFsID0gZm9ybWF0Q3VycmVuY3koZGlzY291bnRfYW1vdW50LCBjdXJyZW5jeU9iamVjdCk7XG4gIGNvbnN0IHJlZnVuZFRvdGFsID0gZm9ybWF0Q3VycmVuY3kocmVmdW5kZWRfYW1vdW50LCBjdXJyZW5jeU9iamVjdCk7XG4gIGNvbnN0IHRheGVzVG90YWwgPSBmb3JtYXRDdXJyZW5jeSh0YXhlc19hbW91bnQsIGN1cnJlbmN5T2JqZWN0KTtcbiAgY29uc3QgYW1vdW50VG90YWwgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob3JkZXIsIFwiYW1vdW50XCIpXG4gICAgPyBmb3JtYXRDdXJyZW5jeShhbW91bnQsIGN1cnJlbmN5T2JqZWN0KVxuICAgIDogZm9ybWF0Q3VycmVuY3kocHVyY2hhc2VUb3RhbCwgY3VycmVuY3lPYmplY3QpO1xuXG4gIHJldHVybiB7XG4gICAgZGlzY291bnRUb3RhbCxcbiAgICByZWZ1bmRUb3RhbCxcbiAgICB0YXhlc1RvdGFsLFxuICAgIGFtb3VudFRvdGFsLFxuICAgIHRpY2tldFN1bW1hcnlcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRPcmRlclRpY2tldHMgPSAobWVtYmVyT3JkZXJzLCBvcmRlcklkKSA9PiB7XG4gIGNvbnN0IG9yZGVycyA9IG1lbWJlck9yZGVycy5maWx0ZXIoKG8pID0+IG8uaWQgPT09IG9yZGVySWQpO1xuICByZXR1cm4gb3JkZXJzWzBdPy5tZW1iZXJUaWNrZXRzO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEVwb2NoTG93ZXJVcHBlckluU2Vjb25kcyA9ICh0cykgPT4ge1xuICBjb25zdCBsb3dlciA9IHRzLnNldEhvdXJzKDAsIDAsIDAsIDApIC8gTUlMTElTRUNfVE9fU0VDO1xuICBjb25zdCB1cHBlciA9XG4gICAgdHMuc2V0SG91cnMoTEFTVF9IT1VSX09GXzI0X0hPVVIsIExBU1RfTUlOVVRFX09GX0hPVVIsIDAsIDApIC9cbiAgICBNSUxMSVNFQ19UT19TRUM7XG4gIHJldHVybiB7XG4gICAgbG93ZXIsXG4gICAgdXBwZXJcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0Q3VycmVudFRpbWUgPSAoKSA9PlxuICBNYXRoLnJvdW5kKCtuZXcgRGF0ZSgpIC8gTUlMTElTRUNfVE9fU0VDKTtcblxuZXhwb3J0IGNvbnN0IGdldE5vdyA9ICgpID0+IChkaXNwYXRjaCwgZ2V0U3RhdGUpID0+IHtcbiAgY29uc3QgeyB0aW1lclN0YXRlIH0gPSBnZXRTdGF0ZSgpO1xuICByZXR1cm4gdGltZXJTdGF0ZT8ubm93VXRjID09IG51bGwgPyBkZWZhdWx0Q3VycmVudFRpbWUoKSA6IHRpbWVyU3RhdGU/Lm5vd1V0Yztcbn07XG5cbmV4cG9ydCBjb25zdCB1c2VOb3cgPSAoKSA9PiB7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcblxuICByZXR1cm4gZGlzcGF0Y2goZ2V0Tm93KCkpO1xufTtcbiIsImltcG9ydCBtb21lbnQgZnJvbSBcIm1vbWVudC10aW1lem9uZVwiO1xuaW1wb3J0IHsgTUlMTElTRUNfVE9fU0VDLCBPTkVfREFZIH0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgeyB1c2VOb3cgfSBmcm9tIFwiLlwiO1xuXG5leHBvcnQgY29uc3QgY2hlY2tTdW1taXRQYXN0ID0gKHN1bW1pdCwgbm93KSA9PiB7XG4gIGlmICghc3VtbWl0KSByZXR1cm4gbnVsbDtcblxuICBjb25zdCByZWFzc2lnbl9kYXRlID1cbiAgICBzdW1taXQ/LnJlYXNzaWduX3RpY2tldF90aWxsX2RhdGUgJiZcbiAgICBzdW1taXQucmVhc3NpZ25fdGlja2V0X3RpbGxfZGF0ZSA8IHN1bW1pdC5lbmRfZGF0ZVxuICAgICAgPyBzdW1taXQucmVhc3NpZ25fdGlja2V0X3RpbGxfZGF0ZVxuICAgICAgOiBzdW1taXQuZW5kX2RhdGU7XG5cbiAgcmV0dXJuIG5vdyA+IHJlYXNzaWduX2RhdGU7XG59O1xuXG5leHBvcnQgY29uc3QgY2hlY2tTdW1taXRTdGFydGVkID0gKHN1bW1pdCwgbm93KSA9PiB7XG4gIGlmICghc3VtbWl0KSByZXR1cm4gbnVsbDtcblxuICByZXR1cm4gc3VtbWl0LnN0YXJ0X2RhdGUgPCBub3c7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0U3VtbWl0RGF5c0RpZmYgPSAoc3VtbWl0KSA9PiB7XG4gIGlmICghc3VtbWl0KSByZXR1cm4gbnVsbDtcbiAgY29uc3Qgc3RhcnREYXkgPSBtb21lbnQoc3VtbWl0LnN0YXJ0X2RhdGUgKiBNSUxMSVNFQ19UT19TRUMpLnR6KFxuICAgIHN1bW1pdC50aW1lX3pvbmVfaWRcbiAgKTtcbiAgY29uc3QgZW5kRGF5ID0gbW9tZW50KHN1bW1pdC5lbmRfZGF0ZSAqIE1JTExJU0VDX1RPX1NFQykudHooXG4gICAgc3VtbWl0LnRpbWVfem9uZV9pZFxuICApO1xuICBjb25zdCBkYXlzID0gZW5kRGF5Py5kaWZmKHN0YXJ0RGF5LCBcImRheXNcIik7XG4gIHJldHVybiB7XG4gICAgc3RhcnREYXksXG4gICAgZW5kRGF5LFxuICAgIGRheXNcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRTdW1taXRGb3JtYXR0ZWREYXRlID0gKHN1bW1pdCkgPT4ge1xuICBpZiAoIXN1bW1pdCkgcmV0dXJuIG51bGw7XG4gIGNvbnN0IHsgc3RhcnREYXksIGVuZERheSwgZGF5cyB9ID0gZ2V0U3VtbWl0RGF5c0RpZmYoc3VtbWl0KTtcbiAgaWYgKCFzdGFydERheSB8fCAhZW5kRGF5KSByZXR1cm4gbnVsbDtcbiAgbGV0IGZvcm1hdFN0YXJ0RGF0ZSA9IFwiTU1NTSBERCwgWVlZWVwiO1xuICBsZXQgZm9ybWF0RW5kRGF0ZSA9IFwiTU1NTSBERCwgWVlZWVwiO1xuICBpZiAoc3RhcnREYXkueWVhcigpID09PSBlbmREYXkueWVhcigpKSBmb3JtYXRTdGFydERhdGUgPSBcIk1NTU0gRERcIjtcbiAgaWYgKHN0YXJ0RGF5Lm1vbnRoKCkgPT09IGVuZERheS5tb250aCgpKSBmb3JtYXRFbmREYXRlID0gXCJERCwgWVlZWVwiO1xuXG4gIGNvbnN0IHN0YXJ0RGF0ZSA9IHN0YXJ0RGF5LmZvcm1hdChmb3JtYXRTdGFydERhdGUpO1xuICBjb25zdCBlbmREYXRlID0gZW5kRGF5LmZvcm1hdChmb3JtYXRFbmREYXRlKTtcblxuICBpZiAoZGF5cyA+IE9ORV9EQVkpIHJldHVybiBgJHtzdGFydERhdGV9IC0gJHtlbmREYXRlfWA7XG5cbiAgcmV0dXJuIHN0YXJ0RGF0ZTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRTdW1taXRMb2NhdGlvbiA9IChzdW1taXQpID0+IHtcbiAgaWYgKCFzdW1taXQpIHJldHVybiBudWxsO1xuXG4gIGNvbnN0IGxvY2F0aW9uID0gc3VtbWl0LmxvY2F0aW9ucz8uZmluZChcbiAgICAobCkgPT4gbC5jbGFzc19uYW1lID09PSBcIlN1bW1pdFZlbnVlXCIgJiYgbC5pc19tYWluID09PSB0cnVlXG4gICk7XG5cbiAgaWYgKCFsb2NhdGlvbikgcmV0dXJuIG51bGw7XG5cbiAgcmV0dXJuIGAke2xvY2F0aW9uLmNpdHl9LCAke2xvY2F0aW9uLmNvdW50cnl9YDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRTdW1taXRSZWFzc2lnbkRhdGUgPSAoc3VtbWl0KSA9PiB7XG4gIGlmICghc3VtbWl0KSByZXR1cm4gbnVsbDtcblxuICByZXR1cm4gc3VtbWl0LnJlYXNzaWduX3RpY2tldF90aWxsX2RhdGUgJiZcbiAgICBzdW1taXQucmVhc3NpZ25fdGlja2V0X3RpbGxfZGF0ZSA8IHN1bW1pdC5lbmRfZGF0ZVxuICAgID8gc3VtbWl0LnJlYXNzaWduX3RpY2tldF90aWxsX2RhdGVcbiAgICA6IHN1bW1pdC5lbmRfZGF0ZTtcbn07XG5cbmV4cG9ydCBjb25zdCB1c2VTdW1taXREZXRhaWxzID0gKHsgc3VtbWl0IH0pID0+IHtcbiAgY29uc3Qgbm93ID0gdXNlTm93KCk7XG5cbiAgaWYgKCFzdW1taXQpIHJldHVybiB7fTtcblxuICBjb25zdCBsb2NhdGlvbiA9IGdldFN1bW1pdExvY2F0aW9uKHN1bW1pdCk7XG4gIGNvbnN0IGZvcm1hdHRlZERhdGUgPSBnZXRTdW1taXRGb3JtYXR0ZWREYXRlKHN1bW1pdCk7XG4gIGNvbnN0IHJlYXNzaWduRGF0ZSA9IGdldFN1bW1pdFJlYXNzaWduRGF0ZShzdW1taXQpO1xuICBjb25zdCBmb3JtYXR0ZWRSZWFzc2lnbkRhdGUgPSBtb21lbnQudHooXG4gICAgcmVhc3NpZ25EYXRlLFxuICAgIHN1bW1pdC50aW1lX3pvbmU/LnRpbWVfem9uZV9pZFxuICApO1xuICBjb25zdCBkYXlzVW50aWxSZWFzc2lnbkRlYWRsaW5lID0gZ2V0U3VtbWl0RGF5c0RpZmYoXG4gICAgbm93LFxuICAgIHJlYXNzaWduRGF0ZSxcbiAgICBzdW1taXQudGltZV96b25lPy5uYW1lXG4gICk7XG5cbiAgY29uc3QgaXNQYXN0ID0gY2hlY2tTdW1taXRQYXN0KHN1bW1pdCwgbm93KTtcbiAgY29uc3QgaXNTdGFydGVkID0gY2hlY2tTdW1taXRTdGFydGVkKHN1bW1pdCwgbm93KTtcbiAgY29uc3QgaXNSZWFzc2lnbmFibGUgPSByZWFzc2lnbkRhdGUgPiBub3c7XG5cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiBzdW1taXQ/Lm5hbWUsXG4gICAgbm93LFxuICAgIGxvY2F0aW9uLFxuICAgIGZvcm1hdHRlZERhdGUsXG4gICAgcmVhc3NpZ25EYXRlLFxuICAgIGZvcm1hdHRlZFJlYXNzaWduRGF0ZSxcbiAgICBkYXlzVW50aWxSZWFzc2lnbkRlYWRsaW5lLFxuICAgIGlzUGFzdCxcbiAgICBpc1N0YXJ0ZWQsXG4gICAgaXNSZWFzc2lnbmFibGVcbiAgfTtcbn07XG4iLCJpbXBvcnQgKiBhcyB5dXAgZnJvbSBcInl1cFwiO1xuaW1wb3J0IGkxOG4gZnJvbSBcIi4uL2kxOG5cIjtcbmltcG9ydCB7XG4gIFNUQVRVU19DQU5DRUxMRUQsXG4gIFNUQVRVU19DT01QTEVURSxcbiAgU1RBVFVTX0lOQ09NUExFVEUsXG4gIFNUQVRVU19VTkFTU0lHTkVELFxuICBTVEFUVVNfUkVGVU5EX1BFTkRJTkcsXG4gIFNUQVRVU19SRUZVTkRfQVBQUk9WRUQsXG4gIFNUQVRVU19SRUZVTkRfUkVKRUNURUQsXG4gIFNUQVRVU19SRUZVTkRfUEVORElOR19MQyxcbiAgU1RBVFVTX1JFRlVORF9BUFBST1ZFRF9MQyxcbiAgU1RBVFVTX1JFRlVORF9SRUpFQ1RFRF9MQ1xufSBmcm9tIFwiLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IFRJQ0tFVF9BVFRFTkRFRV9LRVlTIH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbnN0YW50c1wiO1xuaW1wb3J0IHtcbiAgY2hlY2tJZlZhbHVlTWF0Y2gsXG4gIGdldFR5cGVJbml0aWFsVmFsdWUsXG4gIHRvU2x1Z1xufSBmcm9tIFwiLi4vY29tcG9uZW50cy9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb21wb25lbnRzL3V0aWxzXCI7XG5pbXBvcnQge1xuICBRdWVzdGlvblR5cGVfQ2hlY2tib3gsXG4gIFF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3QsXG4gIFF1ZXN0aW9uVHlwZV9Db21ib0JveCxcbiAgUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveCxcbiAgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdFxufSBmcm9tIFwiLi4vY29tcG9uZW50cy9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb25zdGFudHNcIjtcblxuZXhwb3J0IGNvbnN0IHN0YXR1c0RhdGEgPSB7XG4gIFtTVEFUVVNfVU5BU1NJR05FRF06IHtcbiAgICB0eXBlOiBTVEFUVVNfVU5BU1NJR05FRCxcbiAgICB0ZXh0OiBpMThuLnQoXCJ0aWNrZXRfc3RhdHVzLnVuYXNzaWduZWRcIilcbiAgfSxcbiAgW1NUQVRVU19JTkNPTVBMRVRFXToge1xuICAgIHR5cGU6IFNUQVRVU19JTkNPTVBMRVRFLFxuICAgIHRleHQ6IGkxOG4udChcInRpY2tldF9zdGF0dXMuaW5jb21wbGV0ZVwiKVxuICB9LFxuICBbU1RBVFVTX0NPTVBMRVRFXToge1xuICAgIHR5cGU6IFNUQVRVU19DT01QTEVURSxcbiAgICB0ZXh0OiBpMThuLnQoXCJ0aWNrZXRfc3RhdHVzLmNvbXBsZXRlXCIpXG4gIH0sXG4gIFtTVEFUVVNfQ0FOQ0VMTEVEXToge1xuICAgIHR5cGU6IFNUQVRVU19DQU5DRUxMRUQsXG4gICAgdGV4dDogaTE4bi50KFwidGlja2V0X3N0YXR1cy5jYW5jZWxsZWRcIilcbiAgfVxufTtcbmV4cG9ydCBjb25zdCBnZXRUaWNrZXRTdGF0dXNLZXkgPSAodGlja2V0KSA9PiB7XG4gIGlmICghdGlja2V0LmlzX2FjdGl2ZSkgcmV0dXJuIFNUQVRVU19DQU5DRUxMRUQ7XG5cbiAgaWYgKHRpY2tldC5vd25lcl9pZCA9PT0gMCkgcmV0dXJuIFNUQVRVU19VTkFTU0lHTkVEO1xuXG4gIGlmICghdGlja2V0Lm93bmVyPy5maXJzdF9uYW1lIHx8ICF0aWNrZXQub3duZXI/Lmxhc3RfbmFtZSlcbiAgICByZXR1cm4gU1RBVFVTX0lOQ09NUExFVEU7XG5cbiAgaWYgKHRpY2tldC5vd25lciAmJiB0aWNrZXQub3duZXI/LnN0YXR1cyA9PT0gXCJJbmNvbXBsZXRlXCIpXG4gICAgcmV0dXJuIFNUQVRVU19JTkNPTVBMRVRFO1xuXG4gIGlmICh0aWNrZXQub3duZXIgJiYgdGlja2V0Lm93bmVyPy5zdGF0dXMgPT09IFwiQ29tcGxldGVcIilcbiAgICByZXR1cm4gU1RBVFVTX0NPTVBMRVRFO1xuXG4gIHJldHVybiBTVEFUVVNfSU5DT01QTEVURTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRUaWNrZXRTdGF0dXNEYXRhID0gKHRpY2tldCwgaXNTdW1taXRQYXN0KSA9PlxuICBzdGF0dXNEYXRhW2dldFRpY2tldFN0YXR1c0tleSh0aWNrZXQsIGlzU3VtbWl0UGFzdCldO1xuXG5leHBvcnQgY29uc3QgZ2V0VGlja2V0Um9sZSA9ICh0aWNrZXQpID0+IHtcbiAgaWYgKCF0aWNrZXQuYmFkZ2UpIHJldHVybiBudWxsO1xuXG4gIGNvbnN0IHsgZmVhdHVyZXMgfSA9IHRpY2tldC5iYWRnZTtcblxuICBpZiAoZmVhdHVyZXMubGVuZ3RoID4gMClcbiAgICByZXR1cm4gZmVhdHVyZXMubWFwKChmZWF0dXJlKSA9PiBmZWF0dXJlLm5hbWUpLmpvaW4oXCIsIFwiKTtcblxuICByZXR1cm4gbnVsbDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRUaWNrZXRUeXBlID0gKHRpY2tldCwgc3VtbWl0KSA9PlxuICBzdW1taXQudGlja2V0X3R5cGVzLmZpbmQoKHR5cGUpID0+IHR5cGUuaWQgPT09IHRpY2tldC50aWNrZXRfdHlwZV9pZCk7XG5cbmV4cG9ydCBjb25zdCBpc1RpY2tldFJlZnVuZGFibGUgPSAodGlja2V0KSA9PlxuICB0aWNrZXQ/LmZpbmFsX2Ftb3VudCA+IDAgJiZcbiAgdGlja2V0Py5maW5hbF9hbW91bnQgPiB0aWNrZXQ/LnJlZnVuZGVkX2Ftb3VudCAmJlxuICAhdGlja2V0Py5yZWZ1bmRfcmVxdWVzdHM/LnNvbWUoXG4gICAgKHJyKSA9PiByci5zdGF0dXMgPT09IFNUQVRVU19SRUZVTkRfUEVORElOR19MQ1xuICApO1xuXG5leHBvcnQgY29uc3QgdGlja2V0c1JlZnVuZGFibGUgPSAodGlja2V0cykgPT5cbiAgdGlja2V0cz8uZmlsdGVyKCh0aWNrZXQpID0+IGlzVGlja2V0UmVmdW5kYWJsZSh0aWNrZXQpKS5sZW5ndGggfHwgMDtcblxuZXhwb3J0IGNvbnN0IGdldFJlZnVuZGVkUmVxdWVzdGVkVGlja2V0cyA9ICh0aWNrZXRzKSA9PlxuICB0aWNrZXRzPy5maWx0ZXIoKHRpY2tldCkgPT5cbiAgICB0aWNrZXQucmVmdW5kX3JlcXVlc3RzPy5zb21lKChycikgPT4gcnIuc3RhdHVzID09PSBTVEFUVVNfUkVGVU5EX1BFTkRJTkdfTEMpXG4gICk7XG5leHBvcnQgY29uc3QgZ2V0QWxsUmVmdW5kUmVxdWVzdGVkVGlja2V0cyA9ICh0aWNrZXRzKSA9PiB7XG4gIGNvbnN0IGFsbFRpY2tldHMgPSBbXTtcbiAgdGlja2V0cz8ubWFwKCh0aWNrZXQpID0+IHtcbiAgICBpZiAoXG4gICAgICB0aWNrZXQucmVmdW5kX3JlcXVlc3RzPy5zb21lKFxuICAgICAgICAocnIpID0+IHJyLnN0YXR1cyA9PT0gU1RBVFVTX1JFRlVORF9QRU5ESU5HX0xDXG4gICAgICApIHx8XG4gICAgICB0aWNrZXQucmVmdW5kX3JlcXVlc3RzPy5zb21lKFxuICAgICAgICAocnIpID0+IHJyLnN0YXR1cyA9PT0gU1RBVFVTX1JFRlVORF9BUFBST1ZFRF9MQ1xuICAgICAgKSB8fFxuICAgICAgdGlja2V0LnJlZnVuZF9yZXF1ZXN0cz8uc29tZShcbiAgICAgICAgKHJyKSA9PiByci5zdGF0dXMgPT09IFNUQVRVU19SRUZVTkRfUkVKRUNURURfTENcbiAgICAgIClcbiAgICApIHtcbiAgICAgIGFsbFRpY2tldHMucHVzaCh0aWNrZXQpO1xuICAgIH1cbiAgICByZXR1cm4gdGlja2V0O1xuICB9KTtcbiAgcmV0dXJuIGFsbFRpY2tldHM7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0UmVmdW5kZWRSZXF1ZXN0ZWRTdGF0dXMgPSAodGlja2V0KSA9PiB7XG4gIGlmIChcbiAgICB0aWNrZXQucmVmdW5kX3JlcXVlc3RzPy5zb21lKChycikgPT4gcnIuc3RhdHVzID09PSBTVEFUVVNfUkVGVU5EX1BFTkRJTkdfTEMpXG4gIClcbiAgICByZXR1cm4gU1RBVFVTX1JFRlVORF9QRU5ESU5HO1xuICBpZiAoXG4gICAgdGlja2V0LnJlZnVuZF9yZXF1ZXN0cz8uc29tZShcbiAgICAgIChycikgPT4gcnIuc3RhdHVzID09PSBTVEFUVVNfUkVGVU5EX0FQUFJPVkVEX0xDXG4gICAgKVxuICApXG4gICAgcmV0dXJuIFNUQVRVU19SRUZVTkRfQVBQUk9WRUQ7XG4gIGlmIChcbiAgICB0aWNrZXQucmVmdW5kX3JlcXVlc3RzPy5zb21lKFxuICAgICAgKHJyKSA9PiByci5zdGF0dXMgPT09IFNUQVRVU19SRUZVTkRfUkVKRUNURURfTENcbiAgICApXG4gIClcbiAgICByZXR1cm4gU1RBVFVTX1JFRlVORF9SRUpFQ1RFRDtcbiAgcmV0dXJuIFNUQVRVU19SRUZVTkRfUEVORElORztcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRSZWZ1bmRSZXF1ZXN0ZWRTdGF0dXNDb2xvciA9ICh0aWNrZXQpID0+IHtcbiAgY29uc3Qgc3RhdHVzID0gZ2V0UmVmdW5kZWRSZXF1ZXN0ZWRTdGF0dXModGlja2V0KTtcbiAgbGV0IHN0YXR1c0NvbG9yID0gXCJcIjtcbiAgc3dpdGNoIChzdGF0dXMpIHtcbiAgICBjYXNlIFNUQVRVU19SRUZVTkRfUEVORElORzpcbiAgICAgIHN0YXR1c0NvbG9yID0gXCJwZW5kaW5nXCI7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFNUQVRVU19SRUZVTkRfQVBQUk9WRUQ6XG4gICAgICBzdGF0dXNDb2xvciA9IFwiYXBwcm92ZWRcIjtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgU1RBVFVTX1JFRlVORF9SRUpFQ1RFRDpcbiAgICAgIHN0YXR1c0NvbG9yID0gXCJyZWplY3RlZFwiO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIHN0YXR1c0NvbG9yID0gXCJwZW5kaW5nXCI7XG4gIH1cbiAgcmV0dXJuIHN0YXR1c0NvbG9yO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFR5cGVWYWxpZGF0aW9uID0gKHR5cGUsIG5hbWUsIGlzUmVxdWlyZWQpID0+IHtcbiAgbGV0IHNjaGVtYTtcbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ2hlY2tib3g6XG4gICAgICBzY2hlbWEgPSB5dXAuYm9vbCgpLm9uZU9mKFt0cnVlXSwgaTE4bi50KFwidmFsaWRhdGlvbi5jaGVja2JveC5yZXF1aXJlZFwiKSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbkxpc3Q6XG4gICAgICBzY2hlbWEgPSB5dXAuc3RyaW5nKGBFbnRlciAke25hbWV9YCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3Q6XG4gICAgICBzY2hlbWEgPSB5dXAuYXJyYXkoKS5vZih5dXAuc3RyaW5nKCkpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ291bnRyeUNvbWJvQm94OlxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NvbWJvQm94OlxuICAgICAgc2NoZW1hID0geXVwLnN0cmluZyhgRW50ZXIgJHtuYW1lfWApO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIHNjaGVtYSA9IHl1cC5zdHJpbmcoYEVudGVyICR7bmFtZX1gKTtcbiAgICAgIGJyZWFrO1xuICB9XG5cbiAgaWYgKGlzUmVxdWlyZWQpIHtcbiAgICBzY2hlbWEgPSBzY2hlbWEucmVxdWlyZWQoYCR7bmFtZX0gaXMgcmVxdWlyZWRgKTtcbiAgfVxuXG4gIHJldHVybiBzY2hlbWE7XG59O1xuXG5leHBvcnQgY29uc3QgcGFyc2VBbnN3ZXJzID0gKFxuICBvd25lcixcbiAgZXh0cmFRdWVzdGlvbnMsXG4gIGFuc3dlcnMsXG4gIG1hbmFnZXIsXG4gIGluY2x1ZGVEZWxlZ2F0aW9uLFxuICBpbmNsdWRlQXR0ZW5kZWVJbmZvLFxuICBpbmNsdWRlRGlzY2xhaW1lcixcbiAgb25seVJlbGV2YW50ID0gZmFsc2VcbikgPT4ge1xuICBjb25zdCBpbml0aWFsVmFsdWVzID0ge307XG5cbiAgaWYgKGluY2x1ZGVBdHRlbmRlZUluZm8pIHtcbiAgICBpbml0aWFsVmFsdWVzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmVtYWlsXSA9XG4gICAgICBhbnN3ZXJzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmVtYWlsXSB8fCBvd25lci5lbWFpbCB8fCBcIlwiO1xuICAgIGluaXRpYWxWYWx1ZXNbVElDS0VUX0FUVEVOREVFX0tFWVMuZmlyc3ROYW1lXSA9XG4gICAgICBhbnN3ZXJzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmZpcnN0TmFtZV0gfHwgb3duZXIuZmlyc3RfbmFtZSB8fCBcIlwiO1xuICAgIGluaXRpYWxWYWx1ZXNbVElDS0VUX0FUVEVOREVFX0tFWVMubGFzdE5hbWVdID1cbiAgICAgIGFuc3dlcnNbVElDS0VUX0FUVEVOREVFX0tFWVMubGFzdE5hbWVdIHx8IG93bmVyLmxhc3RfbmFtZSB8fCBcIlwiO1xuICAgIGluaXRpYWxWYWx1ZXNbVElDS0VUX0FUVEVOREVFX0tFWVMuY29tcGFueV0gPVxuICAgICAgYW5zd2Vyc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5jb21wYW55XSB8fCBvd25lci5jb21wYW55O1xuICB9XG5cbiAgaWYgKGluY2x1ZGVEaXNjbGFpbWVyKSB7XG4gICAgaW5pdGlhbFZhbHVlc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5kaXNjbGFpbWVyQWNjZXB0ZWRdID1cbiAgICAgIGFuc3dlcnNbVElDS0VUX0FUVEVOREVFX0tFWVMuZGlzY2xhaW1lckFjY2VwdGVkXSB8fFxuICAgICAgb3duZXIuZGlzY2xhaW1lcl9hY2NlcHRlZDtcbiAgfVxuXG4gIGlmIChpbmNsdWRlRGVsZWdhdGlvbikge1xuICAgIGluaXRpYWxWYWx1ZXMuZGVsZWdhdGVkX2ZpcnN0X25hbWUgPVxuICAgICAgYW5zd2Vycy5kZWxlZ2F0ZWRfZmlyc3RfbmFtZSB8fCBtYW5hZ2VyPy5maXJzdF9uYW1lIHx8IFwiXCI7XG4gICAgaW5pdGlhbFZhbHVlcy5kZWxlZ2F0ZWRfbGFzdF9uYW1lID1cbiAgICAgIGFuc3dlcnMuZGVsZWdhdGVkX2xhc3RfbmFtZSB8fCBtYW5hZ2VyPy5sYXN0X25hbWUgfHwgXCJcIjtcbiAgfVxuXG4gIGV4dHJhUXVlc3Rpb25zLmZvckVhY2goKHEpID0+IHtcbiAgICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcocS5uYW1lLCBxLmlkKTtcbiAgICBjb25zdCBhbnN3ZXIgPSBhbnN3ZXJzW3F1ZXN0aW9uU2x1Z107XG4gICAgaW5pdGlhbFZhbHVlc1txdWVzdGlvblNsdWddID0gYW5zd2VyIHx8IGdldFR5cGVJbml0aWFsVmFsdWUocSk7XG5cbiAgICBpZiAocS5zdWJfcXVlc3Rpb25fcnVsZXM/Lmxlbmd0aCA+IDApIHtcbiAgICAgIHEuc3ViX3F1ZXN0aW9uX3J1bGVzLmZvckVhY2goKHJ1bGUpID0+IHtcbiAgICAgICAgY29uc3Qgc3ViUXVlc3Rpb25TbHVnID0gdG9TbHVnKFxuICAgICAgICAgIHJ1bGUuc3ViX3F1ZXN0aW9uLm5hbWUsXG4gICAgICAgICAgcnVsZS5zdWJfcXVlc3Rpb24uaWRcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3Qgc3ViQW5zd2VyID0gYW5zd2Vyc1tzdWJRdWVzdGlvblNsdWddO1xuICAgICAgICBjb25zdCBtYXRjaCA9IGNoZWNrSWZWYWx1ZU1hdGNoKGFuc3dlciwgcnVsZS5hbnN3ZXJfdmFsdWVzKTtcblxuICAgICAgICBpZiAoIW9ubHlSZWxldmFudCB8fCBtYXRjaCkge1xuICAgICAgICAgIGluaXRpYWxWYWx1ZXNbc3ViUXVlc3Rpb25TbHVnXSA9XG4gICAgICAgICAgICBzdWJBbnN3ZXIgfHwgZ2V0VHlwZUluaXRpYWxWYWx1ZShydWxlLnN1Yl9xdWVzdGlvbik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIGluaXRpYWxWYWx1ZXM7XG59O1xuXG5leHBvcnQgY29uc3QgYnVpbGRWYWxpZGF0aW9uU2NoZW1hID0gKFxuICBleHRyYVF1ZXN0aW9ucyxcbiAgaW5jbHVkZUF0dGVuZGVlSW5mbyxcbiAgYWxsb3dzRGVsZWdhdGlvbixcbiAgZGlzY2xhaW1lck1hbmRhdG9yeVxuKSA9PiB7XG4gIGNvbnN0IHNjaGVtYSA9IHt9O1xuXG4gIGlmIChpbmNsdWRlQXR0ZW5kZWVJbmZvKSB7XG4gICAgc2NoZW1hW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmVtYWlsXSA9IHl1cFxuICAgICAgLnN0cmluZyhpMThuLnQoXCJ2YWxpZGF0aW9uLmVtYWlsLnN0cmluZ1wiKSlcbiAgICAgIC5lbWFpbChpMThuLnQoXCJ2YWxpZGF0aW9uLmVtYWlsLmZvcm1hdFwiKSlcbiAgICAgIC5yZXF1aXJlZChpMThuLnQoXCJ2YWxpZGF0aW9uLmVtYWlsLnJlcXVpcmVkXCIpKTtcbiAgICBzY2hlbWFbVElDS0VUX0FUVEVOREVFX0tFWVMuZmlyc3ROYW1lXSA9IHl1cFxuICAgICAgLnN0cmluZyhpMThuLnQoXCJ2YWxpZGF0aW9uLmZpcnN0X25hbWUuc3RyaW5nXCIpKVxuICAgICAgLnJlcXVpcmVkKGkxOG4udChcInZhbGlkYXRpb24uZmlyc3RfbmFtZS5yZXF1aXJlZFwiKSk7XG4gICAgc2NoZW1hW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmxhc3ROYW1lXSA9IHl1cFxuICAgICAgLnN0cmluZyhpMThuLnQoXCJ2YWxpZGF0aW9uLmxhc3RfbmFtZS5zdHJpbmdcIikpXG4gICAgICAucmVxdWlyZWQoaTE4bi50KFwidmFsaWRhdGlvbi5sYXN0X25hbWUucmVxdWlyZWRcIikpO1xuICAgIHNjaGVtYVtUSUNLRVRfQVRURU5ERUVfS0VZUy5jb21wYW55XSA9IHl1cC5sYXp5KCh2YWx1ZSkgPT5cbiAgICAgIHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIlxuICAgICAgICA/IHl1cFxuICAgICAgICAgICAgLm9iamVjdCgpXG4gICAgICAgICAgICAucmVxdWlyZWQoaTE4bi50KFwidmFsaWRhdGlvbi5jb21wYW55LnJlcXVpcmVkXCIpKVxuICAgICAgICAgICAgLnR5cGVFcnJvcihpMThuLnQoXCJ2YWxpZGF0aW9uLnJlcXVpcmVkX2ZpZWxkXCIpKVxuICAgICAgICA6IHl1cC5zdHJpbmcoKS5yZXF1aXJlZChpMThuLnQoXCJ2YWxpZGF0aW9uLmNvbXBhbnkucmVxdWlyZWRcIikpXG4gICAgKTtcbiAgfVxuXG4gIGlmIChkaXNjbGFpbWVyTWFuZGF0b3J5KSB7XG4gICAgc2NoZW1hW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmRpc2NsYWltZXJBY2NlcHRlZF0gPSB5dXBcbiAgICAgIC5ib29sKClcbiAgICAgIC5vbmVPZihbdHJ1ZV0sIGkxOG4udChcInZhbGlkYXRpb24uY2hlY2tib3gucmVxdWlyZWRcIikpO1xuICB9XG5cbiAgaWYgKGFsbG93c0RlbGVnYXRpb24pIHtcbiAgICBzY2hlbWEuZGVsZWdhdGVkX2ZpcnN0X25hbWUgPSB5dXBcbiAgICAgIC5zdHJpbmcoaTE4bi50KFwidmFsaWRhdGlvbi5maXJzdF9uYW1lLnN0cmluZ1wiKSlcbiAgICAgIC5yZXF1aXJlZChpMThuLnQoXCJ2YWxpZGF0aW9uLmZpcnN0X25hbWUucmVxdWlyZWRcIikpO1xuXG4gICAgc2NoZW1hLmRlbGVnYXRlZF9sYXN0X25hbWUgPSB5dXBcbiAgICAgIC5zdHJpbmcoaTE4bi50KFwidmFsaWRhdGlvbi5sYXN0X25hbWUuc3RyaW5nXCIpKVxuICAgICAgLnJlcXVpcmVkKGkxOG4udChcInZhbGlkYXRpb24ubGFzdF9uYW1lLnJlcXVpcmVkXCIpKTtcbiAgfVxuXG4gIGV4dHJhUXVlc3Rpb25zLmZvckVhY2goKHEpID0+IHtcbiAgICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcocS5uYW1lLCBxLmlkKTtcbiAgICBzY2hlbWFbcXVlc3Rpb25TbHVnXSA9IGdldFR5cGVWYWxpZGF0aW9uKHEudHlwZSwgcS5uYW1lLCBxLm1hbmRhdG9yeSk7XG5cbiAgICBpZiAocS5zdWJfcXVlc3Rpb25fcnVsZXM/Lmxlbmd0aCA+IDApIHtcbiAgICAgIHEuc3ViX3F1ZXN0aW9uX3J1bGVzLmZvckVhY2goKHJ1bGUpID0+IHtcbiAgICAgICAgY29uc3Qgc3ViUXVlc3Rpb24gPSBydWxlLnN1Yl9xdWVzdGlvbjtcbiAgICAgICAgY29uc3Qgc3ViUXVlc3Rpb25TbHVnID0gdG9TbHVnKHN1YlF1ZXN0aW9uLm5hbWUsIHN1YlF1ZXN0aW9uLmlkKTtcbiAgICAgICAgc2NoZW1hW3N1YlF1ZXN0aW9uU2x1Z10gPSBnZXRUeXBlVmFsaWRhdGlvbihcbiAgICAgICAgICBzdWJRdWVzdGlvbi50eXBlLFxuICAgICAgICAgIHN1YlF1ZXN0aW9uLm5hbWUsXG4gICAgICAgICAgZmFsc2VcbiAgICAgICAgKVxuICAgICAgICAgIC5udWxsYWJsZSgpXG4gICAgICAgICAgLndoZW4ocXVlc3Rpb25TbHVnLCB7XG4gICAgICAgICAgICBpczogKHF1ZXN0aW9uQW5zKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IG1hdGNoID0gY2hlY2tJZlZhbHVlTWF0Y2gocXVlc3Rpb25BbnMsIHJ1bGUuYW5zd2VyX3ZhbHVlcyk7XG4gICAgICAgICAgICAgIHJldHVybiBtYXRjaDtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0aGVuOiAoc2NoKSA9PiBzY2gucmVxdWlyZWQoaTE4bi50KFwidmFsaWRhdGlvbi5yZXF1aXJlZF9xdWVzdGlvblwiKSlcbiAgICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIHl1cC5vYmplY3Qoc2NoZW1hKTtcbn07XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiY29weUljb25fX19sSTNlUVwiO1xudmFyIF8yID0gXCJyZXZlcnNlZF9fX3pKem1EXCI7XG52YXIgXzMgPSBcInRydW5jYXRlZF9fX2pXU25VXCI7XG52YXIgXzQgPSBcIndyYXBwZXJfX19tVlBpUlwiO1xuZXhwb3J0IHsgXzEgYXMgXCJjb3B5SWNvblwiLCBfMiBhcyBcInJldmVyc2VkXCIsIF8zIGFzIFwidHJ1bmNhdGVkXCIsIF80IGFzIFwid3JhcHBlclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJNdWlPdXRsaW5lZElucHV0LW5vdGNoZWRPdXRsaW5lX19fUm9pbVJcIjtcbnZhciBfMiA9IFwiTXVpUGlja2Vyc0NhbGVuZGFySGVhZGVyLWxhYmVsQ29udGFpbmVyX19fb29JMFZcIjtcbnZhciBfMyA9IFwiY2FsZW5kYXJEaXNwbGF5X19faW1famhcIjtcbnZhciBfNCA9IFwiY29udGFpbmVyX19fTjNZNFhcIjtcbnZhciBfNSA9IFwiZGF0ZVBpY2tlckNvbnRhaW5lcl9fX0pXMmxPXCI7XG52YXIgXzYgPSBcImRhdGVwaWNrZXJDbG9zZV9fX1Y5Z0hDXCI7XG52YXIgXzcgPSBcImZpbHRlckNvbnRhaW5lcl9fX3JHcFlWXCI7XG52YXIgXzggPSBcImZpbHRlckRhdGVMYWJlbF9fX2lmRDRwXCI7XG52YXIgXzkgPSBcImZpbHRlckljb25fX19sMjFLSVwiO1xudmFyIF9hID0gXCJmaWx0ZXJMYWJlbF9fX19QMHduXCI7XG52YXIgX2IgPSBcImZpbHRlckxpc3RDb250YWluZXJfX19WbWRHcVwiO1xudmFyIF9jID0gXCJmaWx0ZXJOdW1BY3RpdmVfX19WdUhDSlwiO1xudmFyIF9kID0gXCJmaWx0ZXJTb3J0Q29udGFpbmVyX19fYXJCdlFcIjtcbnZhciBfZSA9IFwibGFiZWxfX195TkZ5alwiO1xudmFyIF9mID0gXCJzaG93RGF0ZVBpY2tlcl9fX1VwUWJwXCI7XG52YXIgXzEwID0gXCJzb3J0Q29udGFpbmVyX19fbFJzalVcIjtcbnZhciBfMTEgPSBcInNvcnRJY29uX19fZlZWNUtcIjtcbnZhciBfMTIgPSBcInNvcnRMYWJlbF9fX1VxTFRDXCI7XG52YXIgXzEzID0gXCJzb3J0TGlzdENvbnRhaW5lcl9fX2NtbkJEXCI7XG5leHBvcnQgeyBfMSBhcyBcIk11aU91dGxpbmVkSW5wdXQtbm90Y2hlZE91dGxpbmVcIiwgXzIgYXMgXCJNdWlQaWNrZXJzQ2FsZW5kYXJIZWFkZXItbGFiZWxDb250YWluZXJcIiwgXzMgYXMgXCJjYWxlbmRhckRpc3BsYXlcIiwgXzQgYXMgXCJjb250YWluZXJcIiwgXzUgYXMgXCJkYXRlUGlja2VyQ29udGFpbmVyXCIsIF82IGFzIFwiZGF0ZXBpY2tlckNsb3NlXCIsIF83IGFzIFwiZmlsdGVyQ29udGFpbmVyXCIsIF84IGFzIFwiZmlsdGVyRGF0ZUxhYmVsXCIsIF85IGFzIFwiZmlsdGVySWNvblwiLCBfYSBhcyBcImZpbHRlckxhYmVsXCIsIF9iIGFzIFwiZmlsdGVyTGlzdENvbnRhaW5lclwiLCBfYyBhcyBcImZpbHRlck51bUFjdGl2ZVwiLCBfZCBhcyBcImZpbHRlclNvcnRDb250YWluZXJcIiwgX2UgYXMgXCJsYWJlbFwiLCBfZiBhcyBcInNob3dEYXRlUGlja2VyXCIsIF8xMCBhcyBcInNvcnRDb250YWluZXJcIiwgXzExIGFzIFwic29ydEljb25cIiwgXzEyIGFzIFwic29ydExhYmVsXCIsIF8xMyBhcyBcInNvcnRMaXN0Q29udGFpbmVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImNhbmNlbEJ0bl9fX3FEZXhoXCI7XG52YXIgXzIgPSBcImZvb3Rlcl9fX1NONzB5XCI7XG52YXIgXzMgPSBcInNhdmVCdG5fX19uYlU2Y1wiO1xuZXhwb3J0IHsgXzEgYXMgXCJjYW5jZWxCdG5cIiwgXzIgYXMgXCJmb290ZXJcIiwgXzMgYXMgXCJzYXZlQnRuXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImVycm9yTGFiZWxfX19ub2N5WFwiO1xuZXhwb3J0IHsgXzEgYXMgXCJlcnJvckxhYmVsXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcIm9yZGVyRGV0YWlsc01tb3VudF9fX3Iza1JBXCI7XG52YXIgXzIgPSBcIm9yZGVyRGV0YWlsc1RpY2tldHNfX19tNElqS1wiO1xudmFyIF8zID0gXCJvcmRlclN1bW1hcnlCdXR0b25fX191eGpodFwiO1xudmFyIF80ID0gXCJvcmRlclN1bW1hcnlQdXJjaGFzZWRJbmZvX19fX1JCWEVcIjtcbnZhciBfNSA9IFwib3JkZXJTdW1tYXJ5VGFibGVfX19ZRG54VlwiO1xudmFyIF82ID0gXCJvcmRlclN1bW1hcnlXcmFwcGVyX19fUndJRVJcIjtcbnZhciBfNyA9IFwicmVmdW5kRGlzYWJsZWRfX19qdnJrM1wiO1xuZXhwb3J0IHsgXzEgYXMgXCJvcmRlckRldGFpbHNNbW91bnRcIiwgXzIgYXMgXCJvcmRlckRldGFpbHNUaWNrZXRzXCIsIF8zIGFzIFwib3JkZXJTdW1tYXJ5QnV0dG9uXCIsIF80IGFzIFwib3JkZXJTdW1tYXJ5UHVyY2hhc2VkSW5mb1wiLCBfNSBhcyBcIm9yZGVyU3VtbWFyeVRhYmxlXCIsIF82IGFzIFwib3JkZXJTdW1tYXJ5V3JhcHBlclwiLCBfNyBhcyBcInJlZnVuZERpc2FibGVkXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImFzc2lnblRpY2tldEJ1dHRvbl9fX3p6THNjXCI7XG52YXIgXzIgPSBcImFzc2lnblRvTWVUZXh0X19fWlBhZXhcIjtcbnZhciBfMyA9IFwiYXNzaWduZWRCeVRleHRfX19iTlo3elwiO1xudmFyIF80ID0gXCJhc3NpZ25lZFRvTWVEZXNfX19HakZrVlwiO1xudmFyIF81ID0gXCJibGFja0J1dHRvbl9fX2w5aGo5XCI7XG52YXIgXzYgPSBcImRpc3BsYXlfbm9uZV9fX0NxcEwzXCI7XG52YXIgXzcgPSBcImxhYmVsX19felhEV3pcIjtcbnZhciBfOCA9IFwib3JkZXJUaWNrZXRDb250YWluZXJfX19aSkx6a1wiO1xudmFyIF85ID0gXCJvcmRlclRpY2tldEluZm9fX19nZW1xQlwiO1xudmFyIF9hID0gXCJvcmRlclRpY2tldEluZm9Db250YWluZXJfX19fcDY2VlwiO1xudmFyIF9iID0gXCJvcmRlcldyYXBwZXJfX195REJBb1wiO1xudmFyIF9jID0gXCJyZWFzc2lnbkJ1dHRvbl9fX1Jvak01XCI7XG52YXIgX2QgPSBcInJlZnVuZEJ1dHRvbnNfX19qRGw0SFwiO1xudmFyIF9lID0gXCJ0YWJCdXR0b25zX19feFR5SkFcIjtcbnZhciBfZiA9IFwidGlja2V0QWN0aW9uQnV0dG9uc19fX3JwU01RXCI7XG52YXIgXzEwID0gXCJ0aWNrZXRMaXN0Q29udGFpbmVyX19fY2ZtcnJcIjtcbnZhciBfMTEgPSBcInRpY2tldE5vX19fYTJpTTlcIjtcbnZhciBfMTIgPSBcInRpY2tldE93bmVyRW1haWxfX19adDRPRVwiO1xudmFyIF8xMyA9IFwidGlja2V0VGlja2V0VHlwZV9fX1pxX2YwXCI7XG52YXIgXzE0ID0gXCJ2aWV3RmluaXNoVGlja2V0QnV0dG9uX19fSEY2SW1cIjtcbnZhciBfMTUgPSBcInZpZXdNb3JlQnV0dG9uX19fS18xelRcIjtcbmV4cG9ydCB7IF8xIGFzIFwiYXNzaWduVGlja2V0QnV0dG9uXCIsIF8yIGFzIFwiYXNzaWduVG9NZVRleHRcIiwgXzMgYXMgXCJhc3NpZ25lZEJ5VGV4dFwiLCBfNCBhcyBcImFzc2lnbmVkVG9NZURlc1wiLCBfNSBhcyBcImJsYWNrQnV0dG9uXCIsIF82IGFzIFwiZGlzcGxheV9ub25lXCIsIF83IGFzIFwibGFiZWxcIiwgXzggYXMgXCJvcmRlclRpY2tldENvbnRhaW5lclwiLCBfOSBhcyBcIm9yZGVyVGlja2V0SW5mb1wiLCBfYSBhcyBcIm9yZGVyVGlja2V0SW5mb0NvbnRhaW5lclwiLCBfYiBhcyBcIm9yZGVyV3JhcHBlclwiLCBfYyBhcyBcInJlYXNzaWduQnV0dG9uXCIsIF9kIGFzIFwicmVmdW5kQnV0dG9uc1wiLCBfZSBhcyBcInRhYkJ1dHRvbnNcIiwgX2YgYXMgXCJ0aWNrZXRBY3Rpb25CdXR0b25zXCIsIF8xMCBhcyBcInRpY2tldExpc3RDb250YWluZXJcIiwgXzExIGFzIFwidGlja2V0Tm9cIiwgXzEyIGFzIFwidGlja2V0T3duZXJFbWFpbFwiLCBfMTMgYXMgXCJ0aWNrZXRUaWNrZXRUeXBlXCIsIF8xNCBhcyBcInZpZXdGaW5pc2hUaWNrZXRCdXR0b25cIiwgXzE1IGFzIFwidmlld01vcmVCdXR0b25cIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiYWN0aW9uQnV0dG9uc19fX3U3bVBTXCI7XG52YXIgXzIgPSBcImFwcHJvdmVkX19fc3hFSldcIjtcbnZhciBfMyA9IFwiYnV0dG9uUGlsbF9fX0xlc2F6XCI7XG52YXIgXzQgPSBcImNhbmNlbEJ1dHRvbl9fX3lmaFliXCI7XG52YXIgXzUgPSBcImNvbnRpbnVlQnV0dG9uX19fTnlYM3NcIjtcbnZhciBfNiA9IFwiZGVsZXRlSWNvbl9fX0ZTd3llXCI7XG52YXIgXzcgPSBcInBlbmRpbmdfX19hRWJXd1wiO1xudmFyIF84ID0gXCJyZWZ1bmRFcnJvck1zZ19fX0FhaHpyXCI7XG52YXIgXzkgPSBcInJlZnVuZFN1Y2Nlc3NmdWxfX196ckRRWVwiO1xudmFyIF9hID0gXCJyZWZ1bmRUZXh0X19fYUVuTDlcIjtcbnZhciBfYiA9IFwicmVmdW5kVGlja2V0Qm94Q29udGFpbmVyX19feWE2MTNcIjtcbnZhciBfYyA9IFwicmVqZWN0ZWRfX19OSkU0WlwiO1xudmFyIF9kID0gXCJzdWNjZXNzTXNnX19fSHRNc2VcIjtcbnZhciBfZSA9IFwic3VjY2Vzc01zZzJfX19RNnpuYVwiO1xudmFyIF9mID0gXCJ0aWNrZXROb19fX19FQUQ0XCI7XG5leHBvcnQgeyBfMSBhcyBcImFjdGlvbkJ1dHRvbnNcIiwgXzIgYXMgXCJhcHByb3ZlZFwiLCBfMyBhcyBcImJ1dHRvblBpbGxcIiwgXzQgYXMgXCJjYW5jZWxCdXR0b25cIiwgXzUgYXMgXCJjb250aW51ZUJ1dHRvblwiLCBfNiBhcyBcImRlbGV0ZUljb25cIiwgXzcgYXMgXCJwZW5kaW5nXCIsIF84IGFzIFwicmVmdW5kRXJyb3JNc2dcIiwgXzkgYXMgXCJyZWZ1bmRTdWNjZXNzZnVsXCIsIF9hIGFzIFwicmVmdW5kVGV4dFwiLCBfYiBhcyBcInJlZnVuZFRpY2tldEJveENvbnRhaW5lclwiLCBfYyBhcyBcInJlamVjdGVkXCIsIF9kIGFzIFwic3VjY2Vzc01zZ1wiLCBfZSBhcyBcInN1Y2Nlc3NNc2cyXCIsIF9mIGFzIFwidGlja2V0Tm9cIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiY2xvc2VCdG5fX195U1FDT1wiO1xudmFyIF8yID0gXCJoZWFkZXJfX19mQlhHOVwiO1xudmFyIF8zID0gXCJ0aXRsZV9fX3R5WmVRXCI7XG52YXIgXzQgPSBcIndyYXBwZXJfX19ST0pHc1wiO1xuZXhwb3J0IHsgXzEgYXMgXCJjbG9zZUJ0blwiLCBfMiBhcyBcImhlYWRlclwiLCBfMyBhcyBcInRpdGxlXCIsIF80IGFzIFwid3JhcHBlclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJhbGlnbkNlbnRlcl9fX040RXZPXCI7XG52YXIgXzIgPSBcImFzc2lnbkJ0bl9fX0ZRSDNuXCI7XG52YXIgXzMgPSBcImF0dGVuZGVlQ29udGFpbmVyX19fZDNSR0NcIjtcbnZhciBfNCA9IFwiYXR0ZW5kZWVJbmZvTm90ZV9fX0tkMXk2XCI7XG52YXIgXzUgPSBcImF0dGVuZGVlSW5mb1RpdGxlX19fVDlVNXpcIjtcbnZhciBfNiA9IFwib3JkZXJOb19fX3lxUnI4XCI7XG52YXIgXzcgPSBcInN1YnRpdGxlX19fU3ZSbFVcIjtcbnZhciBfOCA9IFwidGlja2V0QXNzaWduQ29udGFpbmVyX19fZEo1dldcIjtcbnZhciBfOSA9IFwidGlja2V0VHlwZV9fX1lYd09KXCI7XG5leHBvcnQgeyBfMSBhcyBcImFsaWduQ2VudGVyXCIsIF8yIGFzIFwiYXNzaWduQnRuXCIsIF8zIGFzIFwiYXR0ZW5kZWVDb250YWluZXJcIiwgXzQgYXMgXCJhdHRlbmRlZUluZm9Ob3RlXCIsIF81IGFzIFwiYXR0ZW5kZWVJbmZvVGl0bGVcIiwgXzYgYXMgXCJvcmRlck5vXCIsIF83IGFzIFwic3VidGl0bGVcIiwgXzggYXMgXCJ0aWNrZXRBc3NpZ25Db250YWluZXJcIiwgXzkgYXMgXCJ0aWNrZXRUeXBlXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcIndyYXBwZXJfX19Fd09SelwiO1xuZXhwb3J0IHsgXzEgYXMgXCJ3cmFwcGVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImluZm9Ob3RlX19faTFYWTlcIjtcbnZhciBfMiA9IFwid3JhcHBlcl9fX01BdU5TXCI7XG5leHBvcnQgeyBfMSBhcyBcImluZm9Ob3RlXCIsIF8yIGFzIFwid3JhcHBlclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJhY3Rpb25CdXR0b25zQ29udGFpbmVyX19fQXV2cm5cIjtcbnZhciBfMiA9IFwiYWRkaXRpb25hbERldGFpbHNfX19tUDFpSlwiO1xudmFyIF8zID0gXCJhdHRlbmRlZUNvbnRhaW5lcl9fX1EwVlV6XCI7XG52YXIgXzQgPSBcImF0dGVuZGVlSW5mb1RpdGxlX19fTG1ybTRcIjtcbnZhciBfNSA9IFwiY2xvc2VCdG5fX19XTkpsRVwiO1xudmFyIF82ID0gXCJjb3B5QnRuX19fX3V0QTZcIjtcbnZhciBfNyA9IFwiZGVsZWdhdGVkVG9fX19TR1ZRSVwiO1xudmFyIF84ID0gXCJkb3dubG9hZEJ0bl9fX3FqWWh6XCI7XG52YXIgXzkgPSBcImhlYWRlcl9fX0F1Z256XCI7XG52YXIgX2EgPSBcIm9yZGVyTnVtYmVyX19fTDVRNWFcIjtcbnZhciBfYiA9IFwicXJDb2RlX19fZndxWnFcIjtcbnZhciBfYyA9IFwicXJOb3RlX19fR2M3S25cIjtcbnZhciBfZCA9IFwic2VuZEJ0bl9fX2tvV00yXCI7XG52YXIgX2UgPSBcInNlbnRfX19rNldLeFwiO1xudmFyIF9mID0gXCJzdGF0dXNfX19rd0M4eVwiO1xudmFyIF8xMCA9IFwic3VidGl0bGVfX195X051T1wiO1xudmFyIF8xMSA9IFwidGlja2V0RGV0YWlsQ29udGFpbmVyX19fYjJUTFJcIjtcbnZhciBfMTIgPSBcInRpdGxlX19fd1F6VU5cIjtcbmV4cG9ydCB7IF8xIGFzIFwiYWN0aW9uQnV0dG9uc0NvbnRhaW5lclwiLCBfMiBhcyBcImFkZGl0aW9uYWxEZXRhaWxzXCIsIF8zIGFzIFwiYXR0ZW5kZWVDb250YWluZXJcIiwgXzQgYXMgXCJhdHRlbmRlZUluZm9UaXRsZVwiLCBfNSBhcyBcImNsb3NlQnRuXCIsIF82IGFzIFwiY29weUJ0blwiLCBfNyBhcyBcImRlbGVnYXRlZFRvXCIsIF84IGFzIFwiZG93bmxvYWRCdG5cIiwgXzkgYXMgXCJoZWFkZXJcIiwgX2EgYXMgXCJvcmRlck51bWJlclwiLCBfYiBhcyBcInFyQ29kZVwiLCBfYyBhcyBcInFyTm90ZVwiLCBfZCBhcyBcInNlbmRCdG5cIiwgX2UgYXMgXCJzZW50XCIsIF9mIGFzIFwic3RhdHVzXCIsIF8xMCBhcyBcInN1YnRpdGxlXCIsIF8xMSBhcyBcInRpY2tldERldGFpbENvbnRhaW5lclwiLCBfMTIgYXMgXCJ0aXRsZVwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJhdHRlbmRlZUNvbnRhaW5lcl9fX2NIU010XCI7XG52YXIgXzIgPSBcImF0dGVuZGVlSW5mb1RpdGxlX19fSnNQbEdcIjtcbnZhciBfMyA9IFwiaGVhZGVyTm90ZV9fX2IybXJDXCI7XG52YXIgXzQgPSBcInN1YnRpdGxlX19fWVg2T0RcIjtcbnZhciBfNSA9IFwidGlja2V0UmVhc3NpZ25Db250YWluZXJfX19wRzliNFwiO1xuZXhwb3J0IHsgXzEgYXMgXCJhdHRlbmRlZUNvbnRhaW5lclwiLCBfMiBhcyBcImF0dGVuZGVlSW5mb1RpdGxlXCIsIF8zIGFzIFwiaGVhZGVyTm90ZVwiLCBfNCBhcyBcInN1YnRpdGxlXCIsIF81IGFzIFwidGlja2V0UmVhc3NpZ25Db250YWluZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiYnV0dG9uQ2FuY2VsbGVkX19fRXJsRFpcIjtcbnZhciBfMiA9IFwiYnV0dG9uQ29tcGxldGVfX19sbFdrWlwiO1xudmFyIF8zID0gXCJidXR0b25JbmNvbXBsZXRlX19fVG9sSGdcIjtcbnZhciBfNCA9IFwiYnV0dG9uUGlsbF9fX3pxMnRjXCI7XG52YXIgXzUgPSBcImJ1dHRvblJlZnVuZFJlcXVlc3RlZF9fX3BXdDMwXCI7XG52YXIgXzYgPSBcImJ1dHRvblVuYXNzaWduZWRfX19ZRGQ4WFwiO1xudmFyIF83ID0gXCJ0aWNrZXRTdGF0dXNDb250YWluZXJfX19xajZmYlwiO1xuZXhwb3J0IHsgXzEgYXMgXCJidXR0b25DYW5jZWxsZWRcIiwgXzIgYXMgXCJidXR0b25Db21wbGV0ZVwiLCBfMyBhcyBcImJ1dHRvbkluY29tcGxldGVcIiwgXzQgYXMgXCJidXR0b25QaWxsXCIsIF81IGFzIFwiYnV0dG9uUmVmdW5kUmVxdWVzdGVkXCIsIF82IGFzIFwiYnV0dG9uVW5hc3NpZ25lZFwiLCBfNyBhcyBcInRpY2tldFN0YXR1c0NvbnRhaW5lclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJub09yZGVyc0ZvdW5kX19fQW9nMnBcIjtcbnZhciBfMiA9IFwic3VtbWl0VGl0bGVEYXRlX19fWjE5UG1cIjtcbnZhciBfMyA9IFwid2lkZ2V0SGVhZGVyX19feVk1Z2VcIjtcbmV4cG9ydCB7IF8xIGFzIFwibm9PcmRlcnNGb3VuZFwiLCBfMiBhcyBcInN1bW1pdFRpdGxlRGF0ZVwiLCBfMyBhcyBcIndpZGdldEhlYWRlclwiIH1cbiIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHlcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9vYmplY3RXaXRob3V0UHJvcGVydGllc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ2hlY2tDaXJjbGVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbC9DbG9zZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsL0NvbnRlbnRDb3B5XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRGVsZXRlT3V0bGluZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsL0Vycm9yXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRmlsdGVyTGlzdFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsL0ltcG9ydEV4cG9ydFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsL1NlYXJjaFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvQ2hlY2tib3hcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9EaXZpZGVyXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvSW5wdXRCYXNlXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvU3RhY2tcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9UYWJcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9UYWJzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvc3R5bGVzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvdXNlTWVkaWFRdWVyeVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL3gtZGF0ZS1waWNrZXJzL0FkYXB0ZXJEYXlqc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL3gtZGF0ZS1waWNrZXJzL0RhdGVQaWNrZXJcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS94LWRhdGUtcGlja2Vycy9Mb2NhbGl6YXRpb25Qcm92aWRlclwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAcmVkdXhqcy90b29sa2l0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBzZW50cnkvcmVhY3RcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiZGF5anNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiZm9ybWlrXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImkxOG5leHRcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiaTE4bmV4dC1icm93c2VyLWxhbmd1YWdlZGV0ZWN0b3JcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiaWR0b2tlbi12ZXJpZmllclwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJtb21lbnQtdGltZXpvbmVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9jb21wb25lbnRzL3Jhdy1odG1sXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvc2VjdXJpdHkvYWN0aW9uc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3NlY3VyaXR5L21ldGhvZHNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9hY3Rpb25zXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvbWV0aG9kc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL3F1ZXJ5LWFjdGlvbnNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicC1saW1pdFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJwcm9wLXR5cGVzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0LWkxOG5leHRcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVhY3QtaW5maW5pdGUtc2Nyb2xsLWNvbXBvbmVudFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWFjdC1xci1jb2RlXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0LXJlZHV4XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0L2pzeC1ydW50aW1lXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlZHV4XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlZHV4LXBlcnNpc3RcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVkdXgtcGVyc2lzdC9pbnRlZ3JhdGlvbi9yZWFjdFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWR1eC1wZXJzaXN0L2xpYi9zdG9yYWdlXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInl1cFwiKTsiLCIvLyBUaGUgbW9kdWxlIGNhY2hlXG52YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XG5cbi8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG5mdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuXHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcblx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuXHR9XG5cdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG5cdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xuXHRcdC8vIG5vIG1vZHVsZS5pZCBuZWVkZWRcblx0XHQvLyBubyBtb2R1bGUubG9hZGVkIG5lZWRlZFxuXHRcdGV4cG9ydHM6IHt9XG5cdH07XG5cblx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG5cdF9fd2VicGFja19tb2R1bGVzX19bbW9kdWxlSWRdKG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG5cdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG5cdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbn1cblxuIiwiLy8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbl9fd2VicGFja19yZXF1aXJlX18ubiA9IChtb2R1bGUpID0+IHtcblx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG5cdFx0KCkgPT4gKG1vZHVsZVsnZGVmYXVsdCddKSA6XG5cdFx0KCkgPT4gKG1vZHVsZSk7XG5cdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsIHsgYTogZ2V0dGVyIH0pO1xuXHRyZXR1cm4gZ2V0dGVyO1xufTsiLCIvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9ucyBmb3IgaGFybW9ueSBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSAoZXhwb3J0cywgZGVmaW5pdGlvbikgPT4ge1xuXHRmb3IodmFyIGtleSBpbiBkZWZpbml0aW9uKSB7XG5cdFx0aWYoX193ZWJwYWNrX3JlcXVpcmVfXy5vKGRlZmluaXRpb24sIGtleSkgJiYgIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBrZXkpKSB7XG5cdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZGVmaW5pdGlvbltrZXldIH0pO1xuXHRcdH1cblx0fVxufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSAob2JqLCBwcm9wKSA9PiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCkpIiwiLy8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5yID0gKGV4cG9ydHMpID0+IHtcblx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG5cdH1cblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbn07IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cbmltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IFByb3ZpZGVyIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgeyBQZXJzaXN0R2F0ZSB9IGZyb20gXCJyZWR1eC1wZXJzaXN0L2ludGVncmF0aW9uL3JlYWN0XCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCb3gsIFN0eWxlZEVuZ2luZVByb3ZpZGVyIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZUluaXRTdG9yZSB9IGZyb20gXCIuL3N0b3JlXCI7XG5pbXBvcnQgTXlPcmRlcnNUaWNrZXRzIGZyb20gXCIuL2NvbXBvbmVudHMvTXlPcmRlcnNUaWNrZXRzXCI7XG5pbXBvcnQgQXNzaWduVG9NZSBmcm9tIFwiLi9jb21wb25lbnRzL09yZGVyc0xpc3QvQXNzaWduZWRUb01lXCI7XG5pbXBvcnQgeyBSRVNFVF9TVEFURSwgc2V0UmVkdWNlclN0YXRlIH0gZnJvbSBcIi4vYWN0aW9uc1wiO1xuXG5jb25zdCBNeU9yZGVyc015VGlja2V0c1dpZGdldCA9IChwcm9wcykgPT4ge1xuICBjb25zdCB7XG4gICAgbG9naW5VcmwsXG4gICAgc3VwcG9ydEVtYWlsLFxuICAgIHN1bW1pdCxcbiAgICBhcGlCYXNlVXJsLFxuICAgIHVzZXIsXG4gICAgY2xpZW50SWQsXG4gICAgdXBkYXRlUHJvZmlsZVxuICB9ID0gcHJvcHM7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcblxuICBjb25zdCB7IHN0b3JlLCBwZXJzaXN0b3IgfSA9IHVzZUluaXRTdG9yZSh7XG4gICAgbG9naW5VcmwsXG4gICAgc3VwcG9ydEVtYWlsLFxuICAgIHN1bW1pdCxcbiAgICB1c2VyLFxuICAgIGFwaUJhc2VVcmwsXG4gICAgY2xpZW50SWQsXG4gICAgdXBkYXRlUHJvZmlsZVxuICB9KTtcblxuICBjb25zdCBoYW5kbGVCZWZvcmVMaWZ0ID0gKCkgPT4ge1xuICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMod2luZG93LmxvY2F0aW9uLnNlYXJjaCk7XG4gICAgY29uc3QgZmx1c2ggPSBwYXJhbXMuaGFzKFwiZmx1c2hTdGF0ZVwiKTtcbiAgICBpZiAoZmx1c2gpIHN0b3JlLmRpc3BhdGNoKHsgdHlwZTogUkVTRVRfU1RBVEUsIHBheWxvYWQ6IG51bGwgfSk7XG4gIH07XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzdG9yZS5kaXNwYXRjaChzZXRSZWR1Y2VyU3RhdGUoc3VtbWl0LCB1c2VyKSk7XG4gIH0sIFtzdW1taXQsIHVzZXJdKTtcblxuICByZXR1cm4gKFxuICAgIDxQcm92aWRlciBzdG9yZT17c3RvcmV9PlxuICAgICAgPFBlcnNpc3RHYXRlXG4gICAgICAgIG9uQmVmb3JlTGlmdD17aGFuZGxlQmVmb3JlTGlmdH1cbiAgICAgICAgbG9hZGluZz17bnVsbH1cbiAgICAgICAgcGVyc2lzdG9yPXtwZXJzaXN0b3J9XG4gICAgICA+XG4gICAgICAgIDxTdHlsZWRFbmdpbmVQcm92aWRlciBpbmplY3RGaXJzdD5cbiAgICAgICAgICA8Qm94IHN4PXt7IHBhZGRpbmc6IHsgeHM6IDIsIG1kOiAwLCBsZzogMCB9IH19PlxuICAgICAgICAgICAgPGgzPnt0KFwib3JkZXJzLnRpdGxlXCIpfTwvaDM+XG4gICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgPE15T3JkZXJzVGlja2V0c1xuICAgICAgICAgICAgbG9naW5Vcmw9e2xvZ2luVXJsfVxuICAgICAgICAgICAgc3VwcG9ydEVtYWlsPXtzdXBwb3J0RW1haWx9XG4gICAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICAgIGFwaUJhc2VVcmw9e2FwaUJhc2VVcmx9XG4gICAgICAgICAgLz5cbiAgICAgICAgICA8QXNzaWduVG9NZSAvPlxuICAgICAgICA8L1N0eWxlZEVuZ2luZVByb3ZpZGVyPlxuICAgICAgPC9QZXJzaXN0R2F0ZT5cbiAgICA8L1Byb3ZpZGVyPlxuICApO1xufTtcblxuTXlPcmRlcnNNeVRpY2tldHNXaWRnZXQucHJvcFR5cGVzID0ge1xuICBsb2dpblVybDogUHJvcFR5cGVzLnN0cmluZyxcbiAgc3VwcG9ydEVtYWlsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIGFwaUJhc2VVcmw6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHVzZXI6IFByb3BUeXBlcy5vYmplY3QsXG4gIGNsaWVudElkOiBQcm9wVHlwZXMuc3RyaW5nLFxuICB1cGRhdGVQcm9maWxlOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgTXlPcmRlcnNNeVRpY2tldHNXaWRnZXQ7XG4iXSwibmFtZXMiOlsiYXV0aEVycm9ySGFuZGxlciIsImdldFJlcXVlc3QiLCJkZWxldGVSZXF1ZXN0IiwiY3JlYXRlQWN0aW9uIiwic3RvcExvYWRpbmciLCJzdGFydExvYWRpbmciLCJwdXRSZXF1ZXN0IiwicExpbWl0IiwiZ2V0SWRUb2tlbiIsIm9iamVjdFRvUXVlcnlTdHJpbmciLCJJZFRva2VuVmVyaWZpZXIiLCJpMThuIiwiZ2V0QWNjZXNzVG9rZW5TYWZlbHkiLCJGSVJTVF9QQUdFIiwiREVGQVVMVF9JVEVNU19QRVJfUEFHRSIsIlBST01JU0VfQkFUQ0hfTElNSVQiLCJGSUZUWV9QRVJfUEFHRSIsIkVSUk9SX0NPREVTIiwiUkVTRVRfU1RBVEUiLCJSRVNFVF9GSUxURVIiLCJSRVNFVF9BUElfRVJST1IiLCJTRVRfU1RBVEUiLCJTRVRfQVBJX0VSUk9SIiwiR0VUX1VTRVJfT1JERVJTIiwiUkVGVU5EX09SREVSIiwiU0VUX0FDVElWRV9PUkRFUl9JRCIsIkZJTFRFUl9VU0VSX09SREVSUyIsIkdFVF9NWV9BU1NJR05FRF9USUNLRVRTIiwiVVBEQVRFX1RJQ0tFVCIsIlJFU0VUX1RJQ0tFVCIsIlJFQ0VJVkVfVElDS0VUIiwiUkVNT1ZFX1RJQ0tFVF9BVFRFTkRFRSIsIkFTU0lHTl9USUNLRVQiLCJSRUZVTkRfVElDS0VUIiwiUkVTRU5EX05PVElGSUNBVElPTiIsIkdFVF9USUNLRVRTX0JZX09SREVSIiwiR0VUX1RJQ0tFVFNfQllfT1JERVJfRVJST1IiLCJHRVRfT1JERVJfVElDS0VUX0RFVEFJTFMiLCJHRVRfVElDS0VUX0RFVEFJTFMiLCJSRUNFSVZFX0VYVFJBX1FVRVNUSU9OUyIsIlRJQ0tFVF9BVFRFTkRFRV9LRVlTIiwiZW1haWwiLCJmaXJzdE5hbWUiLCJsYXN0TmFtZSIsImNvbXBhbnkiLCJkaXNjbGFpbWVyQWNjZXB0ZWQiLCJleHRyYVF1ZXN0aW9ucyIsIlVQREFURV9USUNLRVRTX1JFRlVORF9SRVFVRVNURUQiLCJTVEFSVF9MT0FESU5HX0lEUF9QUk9GSUxFIiwiU1RPUF9MT0FESU5HX0lEUF9QUk9GSUxFIiwiVVBEQVRFX0lEUF9QUk9GSUxFIiwiU0VUX1VTRVIiLCJTRVRfU1VNTUlUIiwiR0VUX01BSU5fRVhUUkFfUVVFU1RJT05TIiwiUkVDRUlWRV9NQVJLRVRJTkdfU0VUVElOR1MiLCJDTEVBUl9NQVJLRVRJTkdfU0VUVElOR1MiLCJyZXNldFN0YXRlIiwiZGlzcGF0Y2giLCJyZXNldEZpbHRlciIsInJlc2V0RXJyb3IiLCJzZXRSZWR1Y2VyU3RhdGUiLCJzdW1taXQiLCJ1c2VyIiwiRklMVEVSX1ZBUl9EQVRFIiwiRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVIiLCJwYXJzZUZpbHRlciIsImZpbHRlck9iaiIsImZpbHRlciIsInR5cGUiLCJwdXNoIiwiY29uY2F0IiwibmFtZSIsImxvd2VyIiwidXBwZXIiLCJ2YWx1ZSIsImdldFNvcnREaXJlY3Rpb24iLCJkaXJlY3Rpb24iLCJlcnJvckhhbmRsZXJOb3RpZnkiLCJwYXlsb2FkIiwiY2FsbGJhY2siLCJjdXN0b21BdXRoRXJyb3JIYW5kbGVyIiwiZXJyIiwicmVzIiwiY3VzdG9tRmV0Y2hFcnJvckhhbmRsZXIiLCJyZXNwb25zZSIsImNvZGUiLCJzdGF0dXMiLCJtc2ciLCJ0IiwiT2JqZWN0IiwiZW50cmllcyIsImVycm9ycyIsImZvckVhY2giLCJfcmVmIiwia2V5IiwiTnVtYmVyIiwiaXNOYU4iLCJzdGF0dXNUZXh0IiwidGl0bGUiLCJodG1sIiwiZ2V0VXNlck9yZGVycyIsIl9yZWYyIiwicGFnZSIsInBlclBhZ2UiLCJzb3J0IiwiZ2V0U3RhdGUiLCJfcmVmMyIsImFwaUJhc2VVcmwiLCJ3aWRnZXRTdGF0ZSIsImFjY2Vzc1Rva2VuIiwiY2F0Y2giLCJQcm9taXNlIiwicmVqZWN0IiwicGFyYW1zIiwiYWNjZXNzX3Rva2VuIiwib3JkZXIiLCJyZWxhdGlvbnMiLCJwZXJfcGFnZSIsImtleXMiLCJsZW5ndGgiLCJmaWx0ZXJzIiwiaWQiLCJ0aGVuIiwiZSIsInNldEFjdGl2ZU9yZGVySWQiLCJvcmRlcklkIiwic2V0VXNlciIsImdldFVzZXJUaWNrZXRzIiwiX3JlZjQiLCJfcmVmNSIsImZpZWxkcyIsImV4cGFuZCIsImpvaW4iLCJnZXRUaWNrZXRzQnlPcmRlciIsIl9yZWY2IiwiX3JlZjciLCJyZXNlbmROb3RpZmljYXRpb24iLCJ0aWNrZXQiLCJfcmVmOCIsIm1lc3NhZ2UiLCJvcmRlcl9pZCIsInJlZnVuZFRpY2tldCIsIl9yZWY5IiwiX3JlZjEwIiwicmVmdW5kQnVsa1RpY2tldHMiLCJfcmVmMTEiLCJ0aWNrZXRzIiwibGltaXQiLCJhbGxSZWZ1bmRUaWNrZXRDYWxscyIsIm1hcCIsImFsbCIsInN1Y2Nlc3NmdWxseVJlcXVlc3RlZCIsInIiLCJfciRyZXNwb25zZSIsInJlZnVuZF9yZXF1ZXN0cyIsInVwZGF0ZVRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWQiLCJ0aWNrZXRzUmVmdW5kUmVxdWVzdGVkIiwiZ2V0RXh0cmFRdWVzdGlvbnMiLCJhdHRlbmRlZUlkIiwiX3JlZjEyIiwiZW5kcG9pbnQiLCJnZXRUaWNrZXQiLCJ0aWNrZXRJZCIsIl9yZWYxMyIsImZpbmFsbHkiLCJub3JtYWxpemVUaWNrZXQiLCJlbnRpdHkiLCJub3JtYWxpemVkRW50aXR5IiwiX29iamVjdFNwcmVhZCIsImF0dGVuZGVlX2NvbXBhbnkiLCJhdHRlbmRlZV9jb21wYW55X2lkIiwicmVmcmVzaFByb2ZpbGUiLCJkYXRhIiwidGlja2V0T3duZXIiLCJfcmVmMTQiLCJfdGlja2V0T3duZXIkbWFuYWdlciIsInVwZGF0ZVByb2ZpbGUiLCJ1c2VyUHJvZmlsZSIsImF0dGVuZGVlX2VtYWlsIiwiYXR0ZW5kZWVfZmlyc3RfbmFtZSIsImF0dGVuZGVlX2xhc3RfbmFtZSIsImhhc01hbmFnZXIiLCJtYW5hZ2VyIiwibWFuYWdlcl9pZCIsIml0c01lIiwicHJvZmlsZUNoYW5nZWQiLCJmaXJzdF9uYW1lIiwibGFzdF9uYW1lIiwibmV3UHJvZmlsZSIsInNhdmVUaWNrZXREZXRhaWxzIiwiYW5zd2VycyIsIl9yZWYxNSIsImlkVG9rZW4iLCJ2ZXJpZmllciIsImp3dCIsImRlY29kZSIsImNvbnNvbGUiLCJsb2ciLCJvd25lciIsImFzc2lnbkF0dGVuZGVlIiwiYXJndW1lbnRzIiwidW5kZWZpbmVkIiwiX3JlZjE2IiwicmVhc3NpZ25UaWNrZXQiLCJfcmVmMTciLCJzYXZlRXh0cmFRdWVzdGlvbnMiLCJfcmVmMTgiLCJnZXRUaWNrZXRQREYiLCJfcmVmMTkiLCJxdWVyeVN0cmluZyIsImFwaVVybCIsImZldGNoIiwicmVzcG9uc2VUeXBlIiwiaGVhZGVycyIsIm9rIiwiYmxvYiIsInBkZiIsImxpbmsiLCJkb2N1bWVudCIsImNyZWF0ZUVsZW1lbnQiLCJ1cmwiLCJ3aW5kb3ciLCJVUkwiLCJjcmVhdGVPYmplY3RVUkwiLCJocmVmIiwiZG93bmxvYWQiLCJkaXNwYXRjaEV2ZW50IiwiTW91c2VFdmVudCIsIlJlYWN0IiwiUHJvcFR5cGVzIiwidXNlVHJhbnNsYXRpb24iLCJCb3giLCJ1c2VGb3JtaWsiLCJFeHRyYVF1ZXN0aW9uc0ZpZWxkcyIsIkZvcm1Gb290ZXIiLCJ1c2VTY3JvbGxUb0Vycm9yIiwiUmVnaXN0cmF0aW9uRGlzY2xhaW1lciIsImJ1aWxkVmFsaWRhdGlvblNjaGVtYSIsInBhcnNlQW5zd2VycyIsImpzeCIsIl9qc3giLCJqc3hzIiwiX2pzeHMiLCJBc3NpZ25FUUZvcm0iLCJvblN1Ym1pdCIsIm9uQ2xvc2UiLCJmb3JtaWsiLCJpbml0aWFsVmFsdWVzIiwidmFsaWRhdGlvblNjaGVtYSIsInJlZ2lzdHJhdGlvbl9kaXNjbGFpbWVyX21hbmRhdG9yeSIsInZhbHVlcyIsInJlbGV2YW50QW5zd2VycyIsImVuYWJsZVJlaW5pdGlhbGl6ZSIsImhhbmRsZVN1Ym1pdCIsIm5vVmFsaWRhdGUiLCJjaGlsZHJlbiIsInJlZ2lzdHJhdGlvbl9kaXNjbGFpbWVyX2NvbnRlbnQiLCJkaXNjbGFpbWVyIiwiaXNSZXF1aXJlZCIsInNhdmVMYWJlbCIsImNhbmNlbExhYmVsIiwiZGlzYWJsZWQiLCJpc1N1Ym1pdHRpbmciLCJwcm9wVHlwZXMiLCJvYmplY3QiLCJhcnJheSIsImZ1bmMiLCJDb250ZW50Q29weUljb24iLCJUb29sdGlwIiwiTUlMTElTRUNfVE9fU0VDIiwic3R5bGVzIiwiZGVmYXVsdFdpZHRoIiwiQ29weVRleHQiLCJ0ZXh0IiwidG9vbHRpcFRleHQiLCJoaWRlQ29weSIsInRydW5jYXRlZCIsInJldmVyc2VkIiwid2lkdGgiLCJ0b29sdGlwVGV4dFRvVXNlIiwidG9vbHRpcCIsInNldFRvb2x0aXAiLCJ1c2VTdGF0ZSIsImNsYXNzTmFtZXMiLCJoYW5kbGVDb3B5IiwibmF2aWdhdG9yIiwiY2xpcGJvYXJkIiwid3JpdGVUZXh0Iiwic2V0VGltZW91dCIsImNsYXNzTmFtZSIsIndyYXBwZXIiLCJzdHlsZSIsImNvcHlJY29uIiwib25DbGljayIsInN0cmluZyIsImJvb2wiLCJudW1iZXIiLCJjcmVhdGVDb250ZXh0IiwiZGVmYXVsdENvbnRleHRWYWx1ZSIsInNldE1lc3NhZ2UiLCJzZXRNZXNzYWdlQ2FsbGJhY2siLCJDdXN0b21EaWFsb2dDb250ZXh0IiwiRGlhbG9nIiwiRGlhbG9nQ29udGVudCIsIkRpYWxvZ0NvbnRlbnRUZXh0IiwiRGlhbG9nVGl0bGUiLCJDdXN0b21EaWFsb2ciLCJvcGVuIiwiYm9keSIsIlRoZW1lUHJvdmlkZXIiLCJjcmVhdGVUaGVtZSIsImRhcmtDb2xvciIsInJvb3QiLCJkb2N1bWVudEVsZW1lbnQiLCJnZXRDb21wdXRlZFN0eWxlIiwiZ2V0UHJvcGVydHlWYWx1ZSIsInRoZW1lIiwicGFsZXR0ZSIsInByaW1hcnkiLCJtYWluIiwiQ3VzdG9tVGhlbWUiLCJub2RlIiwiQ2hlY2tib3giLCJGb3JtQ29udHJvbCIsIkZvcm1Db250cm9sTGFiZWwiLCJGb3JtR3JvdXAiLCJGb3JtSGVscGVyVGV4dCIsIkZvcm1MYWJlbCIsImdldExhYmVsIiwidG9TbHVnIiwiQ2hlY2tib3hMaXN0UXVlc3Rpb25GaWVsZCIsIl9xdWVzdGlvbiR2YWx1ZXMiLCJxdWVzdGlvbiIsInF1ZXN0aW9uQ2xhc3NOYW1lIiwiaXNEaXNhYmxlZCIsIm9uQ2hhbmdlIiwic2V0RmllbGRWYWx1ZSIsImVycm9yIiwiaGVscGVyVGV4dCIsInJlc3QiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJfZXhjbHVkZWQiLCJxdWVzdGlvblNsdWciLCJxdWVzdGlvbkxhYmVsIiwibWFuZGF0b3J5IiwicXVlc3Rpb25NYXhWYWx1ZXMiLCJtYXhfc2VsZWN0ZWRfdmFsdWVzIiwicXVlc3Rpb25PcHRpb25zIiwidmFsIiwibGFiZWwiLCJ0b1N0cmluZyIsImhhbmRsZUNoZWNrYm94TGlzdENoYW5nZSIsImNoZWNrZWQiLCJjdXJyZW50QW5zIiwibWF4U2VsZWN0aW9uUmVhY2hlZCIsIm5ld1ZhbHVlIiwidiIsInJlcXVpcmVkIiwiZnVsbFdpZHRoIiwib3AiLCJjb250cm9sIiwiaW5jbHVkZXMiLCJldiIsInRhcmdldCIsIlJhd0hUTUwiLCJDaGVja2JveFF1ZXN0aW9uRmllbGQiLCJJbnB1dExhYmVsIiwiTWVudUl0ZW0iLCJTZWxlY3QiLCJEcm9wZG93blF1ZXN0aW9uRmllbGQiLCJsYWJlbElkIiwibWFyZ2luQm90dG9tIiwiUmFkaW8iLCJSYWRpb0dyb3VwIiwiUmFkaW9MaXN0UXVlc3Rpb25GaWVsZCIsIlRleHRGaWVsZCIsIlRleHRRdWVzdGlvbkZpZWxkIiwiUXVlc3Rpb25UeXBlX0NoZWNrYm94IiwiUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdCIsIlF1ZXN0aW9uVHlwZV9Db21ib0JveCIsIlF1ZXN0aW9uVHlwZV9Db3VudHJ5Q29tYm9Cb3giLCJRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0IiwiY2hlY2tSdWxlIiwicnVsZSIsImFuc3dlcl92YWx1ZXMiLCJBcnJheSIsImlzQXJyYXkiLCJhbnN3ZXJfdmFsdWVzX29wZXJhdG9yIiwiY2hlY2tWaXNpYmlsaXR5IiwicnVsZVJlc3VsdCIsInZpc2liaWxpdHkiLCJ2aXNpYmlsaXR5X2NvbmRpdGlvbiIsInF1ZXN0aW9uSWQiLCJ0ZXh0TEMiLCJ0b0xvd2VyQ2FzZSIsInJlcGxhY2UiLCJxIiwiX3EkbGFiZWwiLCJpc0Fuc3dlcmVkIiwiYW5zd2VyIiwiY2hlY2tJZlZhbHVlTWF0Y2giLCJjb21wYXJlVmFsIiwiYW5zd2VyQXJyYXkiLCJzb21lIiwiZ2V0VHlwZUluaXRpYWxWYWx1ZSIsImdldFR5cGVWYWx1ZSIsImFucyIsInNwbGl0IiwidHJhbnNmb3JtQW53ZXJzRm9ybWF0IiwiZGlzY2xhaW1lcl9hY2NlcHRlZCIsImV4dHJhX3F1ZXN0aW9ucyIsImZvcm1hdHRlZEVRIiwicXVlc3Rpb25faWQiLCJwYXJzZUludCIsInBvcCIsIlF1ZXN0aW9uVHlwZV9UZXh0IiwiUXVlc3Rpb25UeXBlX1RleHRBcmVhIiwiUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uIiwiZ2V0UXVlc3Rpb25GaWVsZENvbXBvbmVudCIsInF1ZXN0aW9uVHlwZSIsIkZyYWdtZW50IiwicmVhZE9ubHkiLCJhbGxvd0VkaXQiLCJyZW5kZXJSdWxlIiwicmVuZGVyUXVlc3Rpb24iLCJzdWJfcXVlc3Rpb24iLCJfcSRzdWJfcXVlc3Rpb25fcnVsZXMiLCJRdWVzdGlvbkZpZWxkQ29tcG9uZW50IiwiZm9ybWlrUHJvcHMiLCJoYW5kbGVDaGFuZ2UiLCJvbkJsdXIiLCJoYW5kbGVCbHVyIiwidG91Y2hlZCIsIkJvb2xlYW4iLCJzdWJfcXVlc3Rpb25fcnVsZXMiLCJTdGFjayIsImRheWpzIiwiQWRhcHRlckRheWpzIiwiTG9jYWxpemF0aW9uUHJvdmlkZXIiLCJEYXRlUGlja2VyIiwiQ2xvc2VJY29uIiwiZ2V0RXBvY2hMb3dlclVwcGVySW5TZWNvbmRzIiwiX0ZyYWdtZW50IiwiQmFzaWNEYXRlUGlja2VyIiwib25GaWx0ZXIiLCJvblJlc2V0Iiwibm93IiwiZGF0ZVZhbHVlIiwic2V0RGF0ZVZhbHVlIiwib25EYXRlQ2hhbmdlIiwiZGF0ZSIsIkRhdGUiLCIkZCIsIm9uUmVzZXRBY3Rpb24iLCJmaWx0ZXJEYXRlTGFiZWwiLCJhbGlnbkl0ZW1zIiwic3giLCJwdCIsInBiIiwiZGF0ZVBpY2tlckNvbnRhaW5lciIsImZvbnRTaXplIiwiZGF0ZXBpY2tlckNsb3NlIiwiZGF0ZUFkYXB0ZXIiLCJjYWxlbmRhckRpc3BsYXkiLCJ1c2VSZWYiLCJ1c2VFZmZlY3QiLCJGaWx0ZXJMaXN0SWNvbiIsIkZpbHRlciIsInNob3dGaWx0ZXJMaXN0Iiwic2V0U2hvd0ZpbHRlckxpc3QiLCJzaG93RGF0ZXBpY2tlciIsInNldFNob3dEYXRlcGlja2VyIiwiZmlsdGVyTnVtQWN0aXZlIiwic2V0RmlsdGVyTnVtQWN0aXZlIiwiZmlsdGVyUmVmIiwiaGFuZGxlRmlsdGVyQ2xpY2tPdXRzaWRlIiwiZXZlbnQiLCJjdXJyZW50IiwiY29udGFpbnMiLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsInRvZ2dsZSIsImZpbHRlckNvbnRhaW5lciIsInJlZiIsImZpbHRlckljb24iLCJmaWx0ZXJMYWJlbCIsImZpbHRlckxpc3RDb250YWluZXIiLCJjb250YWluZXIiLCJzaG93RGF0ZVBpY2tlciIsInN0eWxlZCIsIlNlYXJjaEljb24iLCJJbnB1dEJhc2UiLCJTZWFyY2hDb250YWluZXIiLCJwb3NpdGlvbiIsIm1hcmdpblJpZ2h0IiwibWFyZ2luTGVmdCIsImRpc3BsYXkiLCJTZWFyY2hJY29uV3JhcHBlciIsImhlaWdodCIsImp1c3RpZnlDb250ZW50IiwiU3R5bGVkSW5wdXRCYXNlIiwiY29sb3IiLCJib3JkZXJCb3R0b20iLCJwYWRkaW5nTGVmdCIsInBhZGRpbmdSaWdodCIsIkNsb3NlSWNvbldyYXBwZXIiLCJwYWRkaW5nIiwidG9wIiwicmlnaHQiLCJjdXJzb3IiLCJ6SW5kZXgiLCJTZWFyY2giLCJvblNlYXJjaCIsInNob3dDbG9zZSIsInNldFNob3dDbG9zZSIsInNlYXJjaFZhbHVlIiwic2V0U2VhcmNoVmFsdWUiLCJvbktleURvd24iLCJuYXRpdmVFdmVudCIsInJlc2V0U2VhcmNoIiwicGxhY2Vob2xkZXIiLCJpbnB1dFByb3BzIiwiQnV0dG9uIiwiSW1wb3J0RXhwb3J0SWNvbiIsIlNvcnQiLCJvblNvcnQiLCJzaG93U29ydCIsInNldFNob3dTb3J0Iiwic29ydFJlZiIsImhhbmRsZVNvcnRDbGlja091dHNpZGUiLCJzb3J0Q29udGFpbmVyIiwic29ydEljb24iLCJzb3J0TGFiZWwiLCJzb3J0TGlzdENvbnRhaW5lciIsIkdyaWQiLCJGaWx0ZXJTb3J0U2VhcmNoIiwianVzdGlmeSIsIml0ZW0iLCJ4cyIsImdhcCIsImZpbHRlclNvcnRDb250YWluZXIiLCJmb290ZXIiLCJjYW5jZWxCdG4iLCJzaXplIiwidmFyaWFudCIsInNhdmVCdG4iLCJFcnJvckljb24iLCJFcnJvckxhYmVsIiwiZGF0YVRlc3RJZCIsImVycm9yTGFiZWwiLCJCYWNrZHJvcCIsIkNpcmN1bGFyUHJvZ3Jlc3MiLCJMb2FkZXIiLCJkcmF3ZXIiLCJ1c2VEaXNwYXRjaCIsInVzZVNlbGVjdG9yIiwic2hhbGxvd0VxdWFsIiwiSW5maW5pdGVTY3JvbGwiLCJPcmRlcnNMaXN0IiwiZ2V0U3VtbWl0Rm9ybWF0dGVkRGF0ZSIsIk9ORV9QQUdFX05FWFQiLCJNeU9yZGVyc1RpY2tldHMiLCJtZXNzYWdlQ2FsbGJhY2siLCJtZW1iZXJPcmRlcnMiLCJsb2FkaW5nIiwib3JkZXJzX2N1cnJlbnRfcGFnZSIsIm9yZGVyc19sYXN0X3BhZ2UiLCJvcmRlcnNfcGVyX3BhZ2UiLCJvcmRlcnNfdG90YWwiLCJ0aWNrZXRfcGVyX3BhZ2UiLCJhcGlFcnJvciIsInN0YXRlIiwic2V0RmlsdGVyIiwic2V0U29ydCIsInJlc2V0QXBpRXJyb3IiLCJmZXRjaERhdGEiLCJjdXJyZW50X3BhZ2UiLCJ3aWRnZXRIZWFkZXIiLCJtZCIsImxnIiwic3VtbWl0VGl0bGVEYXRlIiwiUHJvdmlkZXIiLCJvdmVyZmxvdyIsIm1hcmdpbiIsImRhdGFMZW5ndGgiLCJuZXh0IiwiaGFzTW9yZSIsInNjcm9sbFRocmVzaG9sZCIsInNjcm9sbGFibGVUYXJnZXQiLCJub09yZGVyc0ZvdW5kIiwiRGl2aWRlciIsImNhbGN1bGF0ZU9yZGVyVG90YWxzIiwiZm9ybWF0Q3VycmVuY3kiLCJPcmRlclN1bW1hcnlUYWJsZSIsImRpc2NvdW50VG90YWwiLCJyZWZ1bmRUb3RhbCIsInRheGVzVG90YWwiLCJhbW91bnRUb3RhbCIsInRpY2tldFN1bW1hcnkiLCJodW5kcmVkIiwib3JkZXJTdW1tYXJ5VGFibGUiLCJ0aWNrZXRUb3RhbCIsInF0eSIsInRpY2tldF90eXBlIiwiY29zdCIsImFsaWduIiwiY3VycmVuY3kiLCJjcmVhdGVkIiwiZGlzY291bnRfYW1vdW50IiwidGF4ZXNfYW1vdW50Iiwic2hhcGUiLCJ1c2VOb3ciLCJ0aWNrZXRzUmVmdW5kYWJsZSIsIlJlZnVuZEVtYWlsU3VwcG9ydCIsInJlZnVuZFJlcXVlc3RlZCIsInRpY2tldHNUb1JlZnVuZCIsInN1Ym1pdFJlcXVlc3QiLCJvblJlZnVuZENsaWNrIiwib25SZWZ1bmREZXRhaWxDbGljayIsIm9uRW1haWxTdXBwb3J0Q2xpY2siLCJpc0luUmVmdW5kYWJsZVBlcmlvZCIsInJlZ2lzdHJhdGlvbl9hbGxvd2VkX3JlZnVuZF9yZXF1ZXN0X3RpbGxfZGF0ZSIsImF0TGVhc3RPbmVSZWZ1bmRhYmxlVGlja2V0IiwiaXNSZWZ1bmRhYmxlIiwicm9sZSIsIm9yZGVyU3VtbWFyeUJ1dHRvbiIsInJlZnVuZERpc2FibGVkIiwiYXJyYXlPZiIsIk9yZGVyU3VtbWFyeSIsIm9yZGVyU3VtbWFyeVdyYXBwZXIiLCJweCIsIm9yZGVyU3VtbWFyeVB1cmNoYXNlZEluZm8iLCJtZW1iZXJUaWNrZXRzIiwiT3JkZXJMaXN0VGlja2V0cyIsIkFzc2lnblRvTWUiLCJ1c2VyVGlja2V0cyIsInVzZXJfdGlja2V0c190b3RhbCIsInVzZXJfdGlja2V0c19jdXJyZW50X3BhZ2UiLCJ1c2VyX3RpY2tldHNfbGFzdF9wYWdlIiwib3JkZXJUaWNrZXRDb250YWluZXIiLCJhc3NpZ25Ub01lVGV4dCIsInRpY2tldExpc3RDb250YWluZXIiLCJpc1NlbGVjdGVkVG9SZWZ1bmQiLCJzZWxlY3RUb1JlZnVuZCIsImlzRXh0ZXJuYWxBc3NpZ25lZFRpY2tldCIsIkF0dGVuZGVlU3RhdHVzIiwiX3RpY2tldCRvd25lciIsIl90aWNrZXQkb3JkZXIiLCJfdGlja2V0JG9yZGVyMiIsIl90aWNrZXQkb3JkZXIzIiwidGlja2V0T3duZXJFbWFpbCIsIm93bmVyX2VtYWlsIiwiYXNzaWduZWRCeVRleHQiLCJvd25lcl9maXJzdF9uYW1lIiwib3duZXJfbGFzdF9uYW1lIiwiaXNfYWN0aXZlIiwiUEFHSU5BVElPTl9ESVNQTEFZX0NPVU5UIiwiT3JkZXJMaXN0SXRlbSIsIl9vcmRlciRtZW1iZXJUaWNrZXRzIiwiX29yZGVyJG1lbWJlclRpY2tldHMyIiwib25QYWdpbmF0ZUNsaWNrIiwiaXRlbXNUb0Rpc3BsYXkiLCJzZXRJdGVtc1RvRGlzcGxheSIsInNsaWNlZFRpY2tldHMiLCJzbGljZSIsIm9uVmlld01vcmUiLCJ0aWNrZXRzX3RvdGFsIiwib25WaWV3TGVzcyIsImZpbmQiLCJ2aWV3TW9yZUJ1dHRvbiIsIlRpY2tldFN0YXR1cyIsImdldFN1bW1pdFJlYXNzaWduRGF0ZSIsIlRpY2tldERldGFpbCIsInVzZVRpY2tldERldGFpbHMiLCJUaWNrZXRSZWFzc2lnbiIsIlRpY2tldEFzc2lnbiIsIm1vZGFsVmlld3MiLCJkZXRhaWwiLCJyZWFzc2lnbiIsImFzc2lnbiIsIlRpY2tldENUQXMiLCJpc0luY29tcGxldGUiLCJpc1VuYXNzaWduZWQiLCJpc1JlYXNzaWduYWJsZSIsIm9uT3BlbkNsaWNrIiwiYXNzaWduVGlja2V0QnV0dG9uIiwidmlld0ZpbmlzaFRpY2tldEJ1dHRvbiIsInJlYXNzaWduQnV0dG9uIiwiX3RpY2tldCR0aWNrZXRfdHlwZSIsIl90aWNrZXQkb3duZXIyIiwiX3RpY2tldCRvd25lcjMiLCJfaXNFeHRlcm5hbEFzc2lnbmVkVGlja2V0IiwiY2FuUmVhc3NpZ24iLCJtb2RhbE9wZW4iLCJzZXRNb2RhbE9wZW4iLCJyZWFzc2lnbkRhdGUiLCJoYW5kbGVDbG9zZU1vZGFsIiwiaGFuZGxlT3Blbk1vZGFsIiwidmlldyIsIm9yZGVyV3JhcHBlciIsInRpY2tldFRpY2tldFR5cGUiLCJ0aWNrZXRObyIsInRpY2tldEFjdGlvbkJ1dHRvbnMiLCJvd25lcklkIiwidG90YWxfcmVmdW5kZWRfYW1vdW50IiwiVGFicyIsIlRhYiIsIlJlZnVuZFJlcXVlc3RzTW9kYWwiLCJpc1RpY2tldFJlZnVuZGFibGUiLCJSZWZ1bmREZXRhaWxzIiwiVGFiUGFuZWwiLCJwcm9wcyIsImluZGV4IiwiaGlkZGVuIiwiT3JkZXJzTGlzdERlc2t0b3BNb2JpbGUiLCJpc01vYmlsZSIsImRldGFpbHNSZXF1aXJlZCIsInNldFZhbHVlIiwiXyIsInNldFJlZnVuZFJlcXVlc3RlZCIsInNldFRpY2tldHNUb1JlZnVuZCIsInNldFN1Ym1pdFJlcXVlc3QiLCJyZWZ1bmREZXRhaWxzT3BlbiIsInNldFJlZnVuZERldGFpbHNPcGVuIiwidW5zZWxlY3RSZWZ1bmRUaWNrZXRzIiwiZmlsdGVyU2VsZWN0ZWQiLCJzZWxlY3RlZFRpY2tldCIsImNhbmNlbFRpY2tldHNUb1JlZnVuZCIsInNlbGVjdEFsbFRpY2tldHMiLCJyZWZ1bmRhYmxlVGlja2V0cyIsInJlc2V0QWxsUmVmdW5kU3RhdHVzZXMiLCJtb3JlRGV0YWlscyIsImJvcmRlckNvbG9yIiwidGV4dENvbG9yIiwiVGFiSW5kaWNhdG9yUHJvcHMiLCJiYWNrZ3JvdW5kIiwidGFiQnV0dG9ucyIsInJlZnVuZEJ1dHRvbnMiLCJvblJlbW92ZVNlbGVjdGVkUmVmdW5kVGlja2V0cyIsIm9uUmVmdW5kU3VjY2Vzc0Nsb3NlIiwib25DbG9zZVNsaWRlciIsInVzZVRoZW1lIiwidXNlTWVkaWFRdWVyeSIsImdldEZvcm1hdHRlZERhdGUiLCJicmVha3BvaW50cyIsImRvd24iLCJpc01vYmlsZVZpZXdhYmxlIiwic2V0TW9iaWxlVmlld2FibGUiLCJ0aWNrZXRzX3BhZ2VfY3VycmVudCIsIm9yZGVyVGlja2V0SW5mb0NvbnRhaW5lciIsIm9yZGVyVGlja2V0SW5mbyIsImJsYWNrQnV0dG9uIiwicm93U3BhY2luZyIsImNvbHVtblNwYWNpbmciLCJzbSIsImRpc3BsYXlfbm9uZSIsImZsZXhEaXJlY3Rpb24iLCJ1c2VNZW1vIiwiUmlnaHREcmF3ZXIiLCJSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXQiLCJnZXRBbGxSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXRzIiwicmVxdWVzdGVkVGlja2V0cyIsImNsb3NlU2xpZGVyIiwicmVmdW5kRGV0YWlscyIsIkRlbGV0ZU91dGxpbmVJY29uIiwiUmVmdW5kU3RhdHVzIiwib25SZW1vdmUiLCJyZWZ1bmRUaWNrZXRCb3hDb250YWluZXIiLCJkZWxldGVJY29uIiwiZ2V0UmVmdW5kUmVxdWVzdGVkU3RhdHVzQ29sb3IiLCJzdGF0dXNDb2xvciIsImJ1dHRvblBpbGwiLCJTdHlsZWRFbmdpbmVQcm92aWRlciIsIkNoZWNrQ2lyY2xlSWNvbiIsIlNURVBfT05FIiwiU1RFUF9UV08iLCJzdGVwIiwic2V0U3RlcCIsImVycm9yTXNnIiwic2V0RXJyb3JNc2ciLCJyZWZ1bmRTdWNjZXNzIiwic2V0UmVmdW5kU3VjY2VzcyIsInJlZnVuZFRpY2tldHMiLCJyZWZ1bmRTdGVwT25lIiwicmVmdW5kRXJyb3JNc2ciLCJhY3Rpb25CdXR0b25zIiwiY2FuY2VsQnV0dG9uIiwiY29udGludWVCdXR0b24iLCJyZWZ1bmRTdGVwVHdvIiwicmVmdW5kU3VjY2Vzc2Z1bCIsInN1Y2Nlc3NNc2ciLCJzdWNjZXNzTXNnMiIsInJlbmRlclN0ZXBzIiwiaW5qZWN0Rmlyc3QiLCJJY29uQnV0dG9uIiwiVHlwb2dyYXBoeSIsIkRyYXdlciIsIkNsb3NlIiwiYW5jaG9yIiwiTW9kYWxQcm9wcyIsImtlZXBNb3VudGVkIiwiaGVhZGVyIiwiY2xvc2VCdG4iLCJmbG9hdCIsImd1dHRlckJvdHRvbSIsIm9uZU9mVHlwZSIsInl1cCIsIkFzc2lnbkZvcm0iLCJuZXdfYXR0ZW5kZWVfZW1haWwiLCJwZXJzb25hbF9tZXNzYWdlIiwibXVsdGlsaW5lIiwibWluUm93cyIsInVzZUNvbnRleHQiLCJfdGlja2V0JHR5cGUiLCJ0aWNrZXRBc3NpZ25lZCIsInNldFRpY2tldEFzc2lnbmVkIiwiY3VycmVudFRpY2tldCIsIm9uQXNzaWduVG9PdGhlciIsIm9uQXNzaWduVG9NZSIsIm9uQ2xvc2VFUUZvcm0iLCJvbkNsb3NlU2F2ZU1lc3NhZ2UiLCJvblNhdmVFUSIsInJlc29sdmUiLCJ0aWNrZXRBc3NpZ25Db250YWluZXIiLCJhbGlnbkNlbnRlciIsInN1YnRpdGxlIiwib3JkZXJObyIsInRpY2tldFR5cGUiLCJhc3NpZ25CdG4iLCJhdHRlbmRlZUNvbnRhaW5lciIsImF0dGVuZGVlSW5mb1RpdGxlIiwiYXR0ZW5kZWVJbmZvTm90ZSIsIkF1dG9jb21wbGV0ZSIsInF1ZXJ5UmVnaXN0cmF0aW9uQ29tcGFuaWVzIiwiQ29tcGFueUZpZWxkIiwic3VtbWl0SWQiLCJpbnB1dFZhbHVlIiwic2V0SW5wdXRWYWx1ZSIsIm9wdGlvbnMiLCJzZXRPcHRpb25zIiwic2V0RmllbGRUb3VjaGVkIiwicmVzdWx0cyIsIm5ld09wdGlvbnMiLCJhdXRvQ29tcGxldGUiLCJmcmVlU29sbyIsImluY2x1ZGVJbnB1dEluTGlzdCIsImZpbHRlclNlbGVjdGVkT3B0aW9ucyIsImdldE9wdGlvbkxhYmVsIiwib3B0aW9uIiwidG1wVmFsdWUiLCJvbklucHV0Q2hhbmdlIiwibmV3SW5wdXRWYWx1ZSIsImZpbHRlck9wdGlvbnMiLCJmaWx0ZXJlZCIsImlzRXhpc3RpbmciLCJyZW5kZXJJbnB1dCIsInJlbmRlck9wdGlvbiIsIm9wdGlvblByb3BzIiwiVGlja2V0RGVsZWdhdGlvbkZpZWxkcyIsImRlbGVnYXRlZF9maXJzdF9uYW1lIiwiZGVsZWdhdGVkX2xhc3RfbmFtZSIsIlRpY2tldE93bmVyRmllbGRzIiwiVGlja2V0Rm9ybSIsImNhbkVkaXQiLCJ0aWNrZXRNYW5hZ2VyIiwiYWxsb3dzRGVsZWdhdGlvbiIsImFsbG93c190b19kZWxlZ2F0ZSIsInJlZHVjZSIsImRlbGVnYXRlZFRvIiwiYWRkaXRpb25hbERldGFpbHMiLCJpbmZvTm90ZSIsIlFSQ29kZSIsIkZpbGVEb3dubG9hZE91dGxpbmVkIiwiRG93bmxvYWRJY29uIiwiRW1haWxPdXRsaW5lZCIsIkVtYWlsSWNvbiIsInVzZUdldFRpY2tldCIsIlRXT19JVEVNIiwic2F2ZU1lc3NhZ2UiLCJzZXRTYXZlTWVzc2FnZSIsInNlbnRDb25maXJtYXRpb24iLCJzZXRTZW50Q29uZmlybWF0aW9uIiwiaXNVc2VyT3JkZXJPd25lciIsIm93bmVyX2lkIiwiaXNVc2VyVGlja2V0T3duZXIiLCJjYW5FZGl0VGlja2V0RGF0YSIsImFsbG93X3VwZGF0ZV9hdHRlbmRlZV9leHRyYV9xdWVzdGlvbnMiLCJpc0NvbXBsZXRlIiwib25TYXZlIiwiZGVzY3JpcHRpb24iLCJkb3dubG9hZFRpY2tldFBkZiIsIm9uU2VuZEVtYWlsIiwidGlja2V0RGV0YWlsQ29udGFpbmVyIiwicXJDb2RlIiwibWF4V2lkdGgiLCJxcl9jb2RlIiwidmlld0JveCIsInFyTm90ZSIsImlzX3ZpcnR1YWwiLCJhY3Rpb25CdXR0b25zQ29udGFpbmVyIiwiZG93bmxvYWRCdG4iLCJzZW5kQnRuIiwic2VudCIsIm9yZGVyTnVtYmVyIiwiUmVhc3NpZ25Gb3JtIiwidGlja2V0UmVhc3NpZ25lZCIsInNldFRpY2tldFJlYXNzaWduZWQiLCJvblJlYXNzaWduIiwiZ2V0TGFiZWxzIiwiaGVhZGVyTm90ZSIsInRpY2tldFJlYXNzaWduQ29udGFpbmVyIiwiQ29udGFpbmVyIiwiX3RpY2tldCRyZWZ1bmRfcmVxdWVzIiwiaXNBY3RpdmUiLCJyZWZ1bmRSZXF1ZXN0cyIsInRpY2tldFN0YXR1c0NvbnRhaW5lciIsImJ1dHRvblJlZnVuZFJlcXVlc3RlZCIsImJ1dHRvbkluY29tcGxldGUiLCJidXR0b25VbmFzc2lnbmVkIiwiYnV0dG9uQ29tcGxldGUiLCJidXR0b25DYW5jZWxsZWQiLCJydW4iLCJzbW9vdGhTY3JvbGxUbyIsInRhcmdldFNjcm9sbFRvcCIsImR1cmF0aW9uIiwic3RhcnRTY3JvbGxUb3AiLCJzY3JvbGxUb3AiLCJkaXN0YW5jZSIsInN0YXJ0VGltZSIsImFuaW1hdGlvblN0ZXAiLCJ0aW1lc3RhbXAiLCJlbGFwc2VkIiwicHJvZ3Jlc3MiLCJNYXRoIiwibWluIiwiZWFzZUluT3V0UXVhZCIsInJlcXVlc3RBbmltYXRpb25GcmFtZSIsImNvbnRhaW5lcklkIiwiaXNWYWxpZCIsImVycm9yQXJyYXkiLCJlcnJvckNvdW50IiwiZWxlbWVudHNTb3J0ZWQiLCJyZXN1bHQiLCJlbGVtZW50IiwicXVlcnlTZWxlY3RvciIsImVsUmVjdCIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsImEiLCJiIiwiZ2V0RWxlbWVudEJ5SWQiLCJjb250YWluZXJSZWN0IiwiZWxlbU9mZmVzdCIsImFuaW1hdGlvbkR1cmF0aW9uIiwiU1RBVFVTX0NPTVBMRVRFIiwiU1RBVFVTX0lOQ09NUExFVEUiLCJTVEFUVVNfQ0FOQ0VMTEVEIiwiU1RBVFVTX1VOQVNTSUdORUQiLCJfdGlja2V0JHByb21vX2NvZGUiLCJfdGlja2V0JG93bmVyNCIsIl90aWNrZXQkdGlja2V0X3R5cGUyIiwiX3RpY2tldCRwcm9tb19jb2RlMiIsImdldFN0YXR1cyIsImFsbG93c0RlbGVnYXRlIiwicHJvbW9fY29kZSIsImFsbG93c190b19yZWFzc2lnbiIsImluaXRSZWFjdEkxOG5leHQiLCJMYW5ndWFnZURldGVjdG9yIiwiZW4iLCJlcyIsInVzZSIsImluaXQiLCJmYWxsYmFja0xuZyIsImRlYnVnIiwicmVzb3VyY2VzIiwidHJhbnNsYXRpb24iLCJpbnRlcnBvbGF0aW9uIiwiZXNjYXBlVmFsdWUiLCJMT0dPVVRfVVNFUiIsIlNUQVJUX0xPQURJTkciLCJTVE9QX0xPQURJTkciLCJSRVNFVF9MT0FESU5HIiwiREVGQVVMVF9TVEFURSIsIndpZGdldExvYWRpbmciLCJpc09yZGVyTG9hZGluZyIsInRpY2tldF9jdXJyZW50X3BhZ2UiLCJ0aWNrZXRfbGFzdF9wYWdlIiwidGlja2V0X3RvdGFsIiwiV2lkZ2V0UmVkdWNlciIsInRvdGFsIiwibGFzdF9wYWdlIiwiZm9ybWVyT3JkZXIiLCJvIiwiX2RhdGEkIiwidXBkYXRlZE9yZGVyIiwidGlja2V0c19wYWdlX2xhc3QiLCJtbyIsIl90aWNrZXRzUmVmdW5kUmVxdWVzdCIsInVwZGF0ZWRUaWNrZXRzIiwidHJyIiwidGlja2V0RGF0YSIsIm5ld09yZGVycyIsIm5ld1RpY2tldHMiLCJjb25maWd1cmVTdG9yZSIsInBlcnNpc3RTdG9yZSIsInBlcnNpc3RSZWR1Y2VyIiwiRkxVU0giLCJSRUhZRFJBVEUiLCJQQVVTRSIsIlBFUlNJU1QiLCJQVVJHRSIsIlJFR0lTVEVSIiwic3RvcmFnZSIsImNvbWJpbmVSZWR1Y2VycyIsImdldFN0b3JlIiwiY2xpZW50SWQiLCJsb2dpblVybCIsInJlZHVjZXJzIiwic3RvcmUiLCJyZWR1Y2VyIiwibWlkZGxld2FyZSIsImdldERlZmF1bHRNaWRkbGV3YXJlIiwidGh1bmsiLCJleHRyYUFyZ3VtZW50IiwiaW1tdXRhYmxlQ2hlY2siLCJzZXJpYWxpemFibGVDaGVjayIsImlnbm9yZWRBY3Rpb25zIiwidXNlSW5pdFN0b3JlIiwiY29uZmlnIiwicGVyc2lzdG9yIiwiaW5pdExvZ091dCIsImdldEFjY2Vzc1Rva2VuIiwiU2VudHJ5IiwiY2FwdHVyZUV4Y2VwdGlvbiIsIkxBU1RfSE9VUl9PRl8yNF9IT1VSIiwiTEFTVF9NSU5VVEVfT0ZfSE9VUiIsIk9ORV9EQVkiLCJTVEFUVVNfUEVORElORyIsIlNUQVRVU19FUlJPUiIsIlNUQVRVU19QUk9DRVNTSU5HIiwiU1RBVFVTX1JFRlVORF9QRU5ESU5HIiwiU1RBVFVTX1JFRlVORF9BUFBST1ZFRCIsIlNUQVRVU19SRUZVTkRfUkVKRUNURUQiLCJTVEFUVVNfUkVGVU5EX1BFTkRJTkdfTEMiLCJTVEFUVVNfUkVGVU5EX0FQUFJPVkVEX0xDIiwiU1RBVFVTX1JFRlVORF9SRUpFQ1RFRF9MQyIsIkpFU1RfVElNRU9VVF9JTl9NSUxMSVNFQyIsIk9ORV9JVEVNIiwiRklWRV9JVEVNIiwiU0lYX0lURU0iLCJtb21lbnQiLCJsb2NhbGUiLCJkZWZhdWx0T3B0aW9ucyIsIm1pbmltdW1GcmFjdGlvbkRpZ2l0cyIsIm1heGltdW1GcmFjdGlvbkRpZ2l0cyIsImZvcm1hdHRlciIsIkludGwiLCJOdW1iZXJGb3JtYXQiLCJmb3JtYXQiLCJkYXRldGltZSIsInRpbWVab25lIiwidHoiLCJ1bml4IiwicmVmdW5kZWRfYW1vdW50IiwiYW1vdW50IiwidGlja2V0X3R5cGVzIiwicHVyY2hhc2VUaWNrZXRUb3RhbCIsImN1cnJlbmN5T2JqZWN0IiwidGlja2V0c19leGNlcnB0X2J5X3RpY2tldF90eXBlIiwidHQiLCJ0aWNrZXRfdHlwZV9pZCIsInB1cmNoYXNlVG90YWwiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJnZXRPcmRlclRpY2tldHMiLCJfb3JkZXJzJCIsIm9yZGVycyIsInRzIiwic2V0SG91cnMiLCJkZWZhdWx0Q3VycmVudFRpbWUiLCJyb3VuZCIsImdldE5vdyIsInRpbWVyU3RhdGUiLCJub3dVdGMiLCJjaGVja1N1bW1pdFBhc3QiLCJyZWFzc2lnbl9kYXRlIiwicmVhc3NpZ25fdGlja2V0X3RpbGxfZGF0ZSIsImVuZF9kYXRlIiwiY2hlY2tTdW1taXRTdGFydGVkIiwic3RhcnRfZGF0ZSIsImdldFN1bW1pdERheXNEaWZmIiwic3RhcnREYXkiLCJ0aW1lX3pvbmVfaWQiLCJlbmREYXkiLCJkYXlzIiwiZGlmZiIsImZvcm1hdFN0YXJ0RGF0ZSIsImZvcm1hdEVuZERhdGUiLCJ5ZWFyIiwibW9udGgiLCJzdGFydERhdGUiLCJlbmREYXRlIiwiZ2V0U3VtbWl0TG9jYXRpb24iLCJfc3VtbWl0JGxvY2F0aW9ucyIsImxvY2F0aW9uIiwibG9jYXRpb25zIiwibCIsImNsYXNzX25hbWUiLCJpc19tYWluIiwiY2l0eSIsImNvdW50cnkiLCJ1c2VTdW1taXREZXRhaWxzIiwiX3N1bW1pdCR0aW1lX3pvbmUiLCJfc3VtbWl0JHRpbWVfem9uZTIiLCJmb3JtYXR0ZWREYXRlIiwiZm9ybWF0dGVkUmVhc3NpZ25EYXRlIiwidGltZV96b25lIiwiZGF5c1VudGlsUmVhc3NpZ25EZWFkbGluZSIsImlzUGFzdCIsImlzU3RhcnRlZCIsInN0YXR1c0RhdGEiLCJnZXRUaWNrZXRTdGF0dXNLZXkiLCJnZXRUaWNrZXRTdGF0dXNEYXRhIiwiaXNTdW1taXRQYXN0IiwiZ2V0VGlja2V0Um9sZSIsImJhZGdlIiwiZmVhdHVyZXMiLCJmZWF0dXJlIiwiZ2V0VGlja2V0VHlwZSIsImZpbmFsX2Ftb3VudCIsInJyIiwiZ2V0UmVmdW5kZWRSZXF1ZXN0ZWRUaWNrZXRzIiwiX3RpY2tldCRyZWZ1bmRfcmVxdWVzMiIsImFsbFRpY2tldHMiLCJfdGlja2V0JHJlZnVuZF9yZXF1ZXMzIiwiX3RpY2tldCRyZWZ1bmRfcmVxdWVzNCIsIl90aWNrZXQkcmVmdW5kX3JlcXVlczUiLCJnZXRSZWZ1bmRlZFJlcXVlc3RlZFN0YXR1cyIsIl90aWNrZXQkcmVmdW5kX3JlcXVlczYiLCJfdGlja2V0JHJlZnVuZF9yZXF1ZXM3IiwiX3RpY2tldCRyZWZ1bmRfcmVxdWVzOCIsImdldFR5cGVWYWxpZGF0aW9uIiwic2NoZW1hIiwib25lT2YiLCJvZiIsImluY2x1ZGVEZWxlZ2F0aW9uIiwiaW5jbHVkZUF0dGVuZGVlSW5mbyIsImluY2x1ZGVEaXNjbGFpbWVyIiwib25seVJlbGV2YW50Iiwic3ViUXVlc3Rpb25TbHVnIiwic3ViQW5zd2VyIiwibWF0Y2giLCJkaXNjbGFpbWVyTWFuZGF0b3J5IiwibGF6eSIsInR5cGVFcnJvciIsIl9xJHN1Yl9xdWVzdGlvbl9ydWxlczIiLCJzdWJRdWVzdGlvbiIsIm51bGxhYmxlIiwid2hlbiIsImlzIiwicXVlc3Rpb25BbnMiLCJzY2giLCJQZXJzaXN0R2F0ZSIsIk15T3JkZXJzTXlUaWNrZXRzV2lkZ2V0Iiwic3VwcG9ydEVtYWlsIiwiaGFuZGxlQmVmb3JlTGlmdCIsIlVSTFNlYXJjaFBhcmFtcyIsInNlYXJjaCIsImZsdXNoIiwiaGFzIiwib25CZWZvcmVMaWZ0Il0sInNvdXJjZVJvb3QiOiIifQ==