my-orders-tickets-widget 1.0.0-beta.6 → 1.0.0-beta.8

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 DELETED
@@ -1,3087 +0,0 @@
1
- (function webpackUniversalModuleDefinition(root, factory) {
2
- if(typeof exports === 'object' && typeof module === 'object')
3
- module.exports = factory();
4
- else if(typeof define === 'function' && define.amd)
5
- define("my-orders-tickets-widget", [], factory);
6
- else if(typeof exports === 'object')
7
- exports["my-orders-tickets-widget"] = factory();
8
- else
9
- root["my-orders-tickets-widget"] = factory();
10
- })(this, () => {
11
- return /******/ (() => { // webpackBootstrap
12
- /******/ "use strict";
13
- /******/ var __webpack_modules__ = ({
14
-
15
- /***/ "./src/actions.js":
16
- /*!************************!*\
17
- !*** ./src/actions.js ***!
18
- \************************/
19
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
20
-
21
- __webpack_require__.r(__webpack_exports__);
22
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
23
- /* harmony export */ ASSIGN_TICKET: () => (/* binding */ ASSIGN_TICKET),
24
- /* harmony export */ CLEAR_MARKETING_SETTINGS: () => (/* binding */ CLEAR_MARKETING_SETTINGS),
25
- /* harmony export */ FILTER_USER_ORDERS: () => (/* binding */ FILTER_USER_ORDERS),
26
- /* harmony export */ FILTER_VAR_DATE: () => (/* binding */ FILTER_VAR_DATE),
27
- /* harmony export */ FILTER_VAR_ORDER_NUMBER: () => (/* binding */ FILTER_VAR_ORDER_NUMBER),
28
- /* harmony export */ GET_MAIN_EXTRA_QUESTIONS: () => (/* binding */ GET_MAIN_EXTRA_QUESTIONS),
29
- /* harmony export */ GET_ORDER_TICKET_DETAILS: () => (/* binding */ GET_ORDER_TICKET_DETAILS),
30
- /* harmony export */ GET_TICKETS: () => (/* binding */ GET_TICKETS),
31
- /* harmony export */ GET_TICKETS_BY_ORDER: () => (/* binding */ GET_TICKETS_BY_ORDER),
32
- /* harmony export */ GET_TICKETS_BY_ORDER_ERROR: () => (/* binding */ GET_TICKETS_BY_ORDER_ERROR),
33
- /* harmony export */ GET_TICKET_DETAILS: () => (/* binding */ GET_TICKET_DETAILS),
34
- /* harmony export */ GET_USER_ORDERS: () => (/* binding */ GET_USER_ORDERS),
35
- /* harmony export */ RECEIVE_MARKETING_SETTINGS: () => (/* binding */ RECEIVE_MARKETING_SETTINGS),
36
- /* harmony export */ REFUND_ORDER: () => (/* binding */ REFUND_ORDER),
37
- /* harmony export */ REFUND_TICKET: () => (/* binding */ REFUND_TICKET),
38
- /* harmony export */ REMOVE_TICKET_ATTENDEE: () => (/* binding */ REMOVE_TICKET_ATTENDEE),
39
- /* harmony export */ RESEND_NOTIFICATION: () => (/* binding */ RESEND_NOTIFICATION),
40
- /* harmony export */ RESET_FILTER: () => (/* binding */ RESET_FILTER),
41
- /* harmony export */ RESET_STATE: () => (/* binding */ RESET_STATE),
42
- /* harmony export */ SET_ACTIVE_ORDER_ID: () => (/* binding */ SET_ACTIVE_ORDER_ID),
43
- /* harmony export */ SET_SUMMIT: () => (/* binding */ SET_SUMMIT),
44
- /* harmony export */ SET_USER: () => (/* binding */ SET_USER),
45
- /* harmony export */ START_LOADING_IDP_PROFILE: () => (/* binding */ START_LOADING_IDP_PROFILE),
46
- /* harmony export */ STOP_LOADING_IDP_PROFILE: () => (/* binding */ STOP_LOADING_IDP_PROFILE),
47
- /* harmony export */ TICKET_ATTENDEE_KEYS: () => (/* binding */ TICKET_ATTENDEE_KEYS),
48
- /* harmony export */ UPDATE_IDP_PROFILE: () => (/* binding */ UPDATE_IDP_PROFILE),
49
- /* harmony export */ getSortDirection: () => (/* binding */ getSortDirection),
50
- /* harmony export */ getTicketsByOrder: () => (/* binding */ getTicketsByOrder),
51
- /* harmony export */ getUserOrders: () => (/* binding */ getUserOrders),
52
- /* harmony export */ getUserTickets: () => (/* binding */ getUserTickets),
53
- /* harmony export */ parseFilter: () => (/* binding */ parseFilter),
54
- /* harmony export */ refundTicket: () => (/* binding */ refundTicket),
55
- /* harmony export */ resendNotification: () => (/* binding */ resendNotification),
56
- /* harmony export */ resetFilter: () => (/* binding */ resetFilter),
57
- /* harmony export */ resetState: () => (/* binding */ resetState),
58
- /* harmony export */ setActiveOrderId: () => (/* binding */ setActiveOrderId),
59
- /* harmony export */ setSummit: () => (/* binding */ setSummit),
60
- /* harmony export */ setUser: () => (/* binding */ setUser),
61
- /* harmony export */ updateProfile: () => (/* binding */ updateProfile)
62
- /* harmony export */ });
63
- /* harmony import */ var _utils_auth__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils/auth */ "./src/utils/auth.js");
64
- /* harmony import */ var openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! openstack-uicore-foundation/lib/utils/actions */ "openstack-uicore-foundation/lib/utils/actions");
65
- /* harmony import */ var openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_1__);
66
- /* harmony import */ var _utils_constants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./utils/constants */ "./src/utils/constants.js");
67
-
68
-
69
-
70
- const RESET_STATE = "RESET_STATE";
71
- const RESET_FILTER = "RESET_FILTER";
72
-
73
- // ORDERS CONSTS
74
- const GET_USER_ORDERS = "GET_ORDERS";
75
- const REFUND_ORDER = "REFUND_ORDER";
76
- const SET_ACTIVE_ORDER_ID = "SET_ACTIVE_ORDER_ID";
77
- const FILTER_USER_ORDERS = "FILTER_USER_ORDERS";
78
-
79
- // TICKETS CONSTS
80
- const GET_TICKETS = "GET_TICKETS";
81
- const ASSIGN_TICKET = "ASSIGN_TICKET";
82
- const REMOVE_TICKET_ATTENDEE = "REMOVE_TICKET_ATTENDEE";
83
- const REFUND_TICKET = "REFUND_TICKET";
84
- const RESEND_NOTIFICATION = "RESEND_NOTIFICATION";
85
- const GET_TICKETS_BY_ORDER = "GET_TICKETS_BY_ORDER";
86
- const GET_TICKETS_BY_ORDER_ERROR = "GET_TICKETS_BY_ORDER_ERROR";
87
- const GET_ORDER_TICKET_DETAILS = "GET_ORDER_TICKET_DETAILS";
88
- const GET_TICKET_DETAILS = "GET_TICKET_DETAILS";
89
- const TICKET_ATTENDEE_KEYS = {
90
- email: "attendee_email",
91
- firstName: "attendee_first_name",
92
- lastName: "attendee_last_name",
93
- company: "attendee_company",
94
- disclaimerAccepted: "disclaimer_accepted",
95
- extraQuestions: "extra_questions"
96
- };
97
-
98
- // USER CONTS
99
- const START_LOADING_IDP_PROFILE = "START_LOADING_IDP_PROFILE";
100
- const STOP_LOADING_IDP_PROFILE = "STOP_LOADING_IDP_PROFILE";
101
- const UPDATE_IDP_PROFILE = "UPDATE_IDP_PROFILE";
102
- const SET_USER = "SET_USER";
103
-
104
- // SUMMIT CONSTS
105
- const SET_SUMMIT = "SET_SUMMIT";
106
- const GET_MAIN_EXTRA_QUESTIONS = "GET_MAIN_EXTRA_QUESTIONS";
107
- const RECEIVE_MARKETING_SETTINGS = "RECEIVE_MARKETING_SETTINGS";
108
- const CLEAR_MARKETING_SETTINGS = "CLEAR_MARKETING_SETTINGS";
109
- const resetState = () => dispatch => {
110
- dispatch((0,openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_1__.createAction)(RESET_STATE)({}));
111
- };
112
- const resetFilter = () => dispatch => {
113
- dispatch((0,openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_1__.createAction)(RESET_FILTER)({}));
114
- };
115
-
116
- // FILTER / SORT CONSTANTS
117
- const FILTER_VAR_DATE = "FILTER_VAR_DATE";
118
- const FILTER_VAR_ORDER_NUMBER = "FILTER_VAR_ORDER_NUMBER";
119
-
120
- // FILTER/SORT ACTIONS
121
- const parseFilter = filterObj => {
122
- const filter = [];
123
- if (filterObj.type === FILTER_VAR_DATE) {
124
- filter.push(`${filterObj.name}[]${filterObj.lower}&&${filterObj.upper}`);
125
- }
126
- if (filterObj.type === FILTER_VAR_ORDER_NUMBER) {
127
- filter.push(`${filterObj.name}=@${filterObj.value}`);
128
- }
129
- return filter;
130
- };
131
- const getSortDirection = direction => direction === "asc" ? "+" : "-";
132
-
133
- // ORDERS ACTIONS
134
- const getUserOrders = _ref => {
135
- let {
136
- page = _utils_constants__WEBPACK_IMPORTED_MODULE_2__.FIRST_PAGE,
137
- perPage = _utils_constants__WEBPACK_IMPORTED_MODULE_2__.DEFAULT_ITEMS_PER_PAGE,
138
- filter = {},
139
- sort = {},
140
- next = false
141
- } = _ref;
142
- return async (dispatch, getState, _ref2) => {
143
- let {
144
- apiBaseUrl
145
- } = _ref2;
146
- const {
147
- widgetState: {
148
- summit
149
- }
150
- } = getState();
151
- const accessToken = await (0,_utils_auth__WEBPACK_IMPORTED_MODULE_0__.getAccessTokenSafely)().catch(() => Promise.reject());
152
- dispatch((0,openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_1__.startLoading)());
153
- const params = {
154
- access_token: accessToken,
155
- order: "-id",
156
- "filter[]": ["status==Paid"],
157
- relations: "none",
158
- page: next ? page + _utils_constants__WEBPACK_IMPORTED_MODULE_2__.ONE_PAGE_NEXT : page,
159
- per_page: perPage
160
- };
161
- if (Object.keys(filter).length > 0) {
162
- const filters = parseFilter(filter);
163
- params["filter[]"] = [...params["filter[]"], ...filters];
164
- }
165
- if (Object.keys(sort).length > 0) {
166
- params.order = `${getSortDirection(sort.direction)}${sort.name}`;
167
- }
168
- 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_USER_ORDERS), `${apiBaseUrl}/api/v1/summits/${summit.id}/orders/me`, openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_1__.authErrorHandler)(params)(dispatch).then(payload => {
169
- dispatch((0,openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_1__.stopLoading)());
170
- return payload;
171
- }).catch(e => {
172
- dispatch((0,openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_1__.stopLoading)());
173
- return e;
174
- });
175
- };
176
- };
177
- const setActiveOrderId = orderId => async dispatch => dispatch((0,openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_1__.createAction)(SET_ACTIVE_ORDER_ID)(orderId));
178
-
179
- // USER ACTIONS
180
- const setUser = user => dispatch => dispatch((0,openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_1__.createAction)(SET_USER)(user));
181
- const updateProfile = profile => async (dispatch, _ref3) => {
182
- let {
183
- idpBaseUrl
184
- } = _ref3;
185
- const accessToken = await (0,_utils_auth__WEBPACK_IMPORTED_MODULE_0__.getAccessTokenSafely)().catch(() => Promise.reject());
186
- dispatch((0,openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_1__.startLoading)());
187
- const params = {
188
- access_token: accessToken
189
- };
190
- dispatch((0,openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_1__.createAction)(START_LOADING_IDP_PROFILE)());
191
- return (0,openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_1__.putRequest)(null, (0,openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_1__.createAction)(UPDATE_IDP_PROFILE),
192
- // TODO: need IDP_BASE_URL
193
- `${idpBaseUrl}/api/v1/users/me`, profile, openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_1__.authErrorHandler)(params)(dispatch).then(payload => payload).catch(() => dispatch((0,openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_1__.createAction)(STOP_LOADING_IDP_PROFILE)()));
194
- };
195
-
196
- // TICKET ACTIONS
197
-
198
- const getUserTickets = _ref4 => {
199
- let {
200
- page = _utils_constants__WEBPACK_IMPORTED_MODULE_2__.FIRST_PAGE,
201
- perPage = _utils_constants__WEBPACK_IMPORTED_MODULE_2__.DEFAULT_ITEMS_PER_PAGE
202
- } = _ref4;
203
- return async (dispatch, getState, _ref5) => {
204
- let {
205
- apiBaseUrl
206
- } = _ref5;
207
- const {
208
- userState: {
209
- userProfile
210
- },
211
- summit
212
- } = getState();
213
- if (!summit) return Promise.reject();
214
- const accessToken = await (0,_utils_auth__WEBPACK_IMPORTED_MODULE_0__.getAccessTokenSafely)().catch(() => Promise.reject());
215
- if (!userProfile.id) return Promise.reject();
216
- dispatch((0,openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_1__.startLoading)());
217
- const params = {
218
- access_token: accessToken,
219
- filter: "status==Paid",
220
- expand: "order, owner, ticket_type",
221
- order: "-id",
222
- fields: "order.id,order.owner_first_name,order.owner_last_name,order.owner_email,owner.first_name,owner.last_name,owner.status",
223
- relations: "none",
224
- page,
225
- per_page: perPage
226
- };
227
- 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), `${apiBaseUrl}/api/v1/summits/${summit.id}/orders/all/tickets/me`, openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_1__.authErrorHandler)(params)(dispatch).then(() => {
228
- dispatch((0,openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_1__.stopLoading)());
229
- }).catch(e => {
230
- dispatch((0,openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_1__.stopLoading)());
231
- return e;
232
- });
233
- };
234
- };
235
- const getTicketsByOrder = _ref6 => {
236
- let {
237
- orderId,
238
- page = _utils_constants__WEBPACK_IMPORTED_MODULE_2__.FIRST_PAGE,
239
- perPage = _utils_constants__WEBPACK_IMPORTED_MODULE_2__.DEFAULT_ITEMS_PER_PAGE
240
- } = _ref6;
241
- return async (dispatch, getState, _ref7) => {
242
- let {
243
- apiBaseUrl
244
- } = _ref7;
245
- dispatch((0,openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_1__.startLoading)());
246
- const accessToken = await (0,_utils_auth__WEBPACK_IMPORTED_MODULE_0__.getAccessTokenSafely)().catch(() => Promise.reject());
247
- const params = {
248
- access_token: accessToken,
249
- expand: "refund_requests,owner,owner.extra_questions,badge,badge.features,ticket_type",
250
- order: "+id",
251
- page,
252
- per_page: perPage
253
- };
254
- 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_BY_ORDER), `${apiBaseUrl}/api/v1/summits/all/orders/${orderId}/tickets`, openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_1__.authErrorHandler)(params)(dispatch).then(payload => {
255
- dispatch((0,openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_1__.stopLoading)());
256
- return payload;
257
- }).catch(e => {
258
- dispatch((0,openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_1__.stopLoading)());
259
- dispatch((0,openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_1__.createAction)(GET_TICKETS_BY_ORDER_ERROR));
260
- return e;
261
- });
262
- };
263
- };
264
- const resendNotification = ticket => async (dispatch, _ref8) => {
265
- let {
266
- apiBaseUrl
267
- } = _ref8;
268
- const accessToken = await (0,_utils_auth__WEBPACK_IMPORTED_MODULE_0__.getAccessTokenSafely)().catch(() => Promise.reject());
269
- const {
270
- message
271
- } = ticket;
272
- dispatch((0,openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_1__.startLoading)());
273
- const orderId = ticket.order ? ticket.order.id : ticket.order_id;
274
- const params = {
275
- access_token: accessToken
276
- };
277
- return (0,openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_1__.putRequest)(null, (0,openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_1__.createAction)(RESEND_NOTIFICATION), `${apiBaseUrl}/api/v1/summits/all/orders/${orderId}/tickets/${ticket.id}/attendee/reinvite`, {
278
- message
279
- }, openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_1__.authErrorHandler)(params)(dispatch).then(() => {
280
- dispatch((0,openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_1__.stopLoading)());
281
- }).catch(e => {
282
- dispatch((0,openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_1__.stopLoading)());
283
- return e;
284
- });
285
- };
286
- const refundTicket = _ref9 => {
287
- let {
288
- ticket
289
- } = _ref9;
290
- return async (dispatch, getState, _ref10) => {
291
- let {
292
- apiBaseUrl
293
- } = _ref10;
294
- const accessToken = await (0,_utils_auth__WEBPACK_IMPORTED_MODULE_0__.getAccessTokenSafely)().catch(() => Promise.reject());
295
- dispatch((0,openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_1__.startLoading)());
296
- const {
297
- orderState: {
298
- current_page: orderPage
299
- },
300
- ticketState: {
301
- current_page: ticketPage
302
- }
303
- } = getState();
304
- const orderId = ticket.order ? ticket.order.id : ticket.order_id;
305
- const params = {
306
- access_token: accessToken
307
- };
308
- return (0,openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_1__.deleteRequest)(null, (0,openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_1__.createAction)(REFUND_TICKET), `${apiBaseUrl}/api/v1/summits/all/orders/${orderId}/tickets/${ticket.id}/refund`, {}, openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_1__.authErrorHandler)(params)(dispatch).then(payload => {
309
- dispatch((0,openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_1__.stopLoading)());
310
- if (ticket.order_id) {
311
- dispatch(getUserOrders({
312
- page: orderPage
313
- }));
314
- } else {
315
- dispatch(getUserTickets({
316
- page: ticketPage
317
- }));
318
- }
319
- return payload;
320
- }).catch(e => {
321
- dispatch((0,openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_1__.stopLoading)());
322
- throw e;
323
- });
324
- };
325
- };
326
-
327
- // SUMMIT ACTIONS
328
- const setSummit = summit => async dispatch => dispatch((0,openstack_uicore_foundation_lib_utils_actions__WEBPACK_IMPORTED_MODULE_1__.createAction)(SET_SUMMIT)(summit));
329
-
330
- /***/ }),
331
-
332
- /***/ "./src/components/FilterSortSearch/Datepicker.js":
333
- /*!*******************************************************!*\
334
- !*** ./src/components/FilterSortSearch/Datepicker.js ***!
335
- \*******************************************************/
336
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
337
-
338
- __webpack_require__.r(__webpack_exports__);
339
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
340
- /* harmony export */ "default": () => (/* binding */ BasicDatePicker)
341
- /* harmony export */ });
342
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
343
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
344
- /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ "prop-types");
345
- /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__);
346
- /* harmony import */ var _mui_material_Stack__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @mui/material/Stack */ "@mui/material/Stack");
347
- /* harmony import */ var _mui_material_Stack__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_mui_material_Stack__WEBPACK_IMPORTED_MODULE_2__);
348
- /* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react-i18next */ "react-i18next");
349
- /* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(react_i18next__WEBPACK_IMPORTED_MODULE_3__);
350
- /* harmony import */ var dayjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! dayjs */ "dayjs");
351
- /* harmony import */ var dayjs__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(dayjs__WEBPACK_IMPORTED_MODULE_4__);
352
- /* harmony import */ var _mui_x_date_pickers_AdapterDayjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @mui/x-date-pickers/AdapterDayjs */ "@mui/x-date-pickers/AdapterDayjs");
353
- /* harmony import */ var _mui_x_date_pickers_AdapterDayjs__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_mui_x_date_pickers_AdapterDayjs__WEBPACK_IMPORTED_MODULE_5__);
354
- /* harmony import */ var _mui_x_date_pickers_LocalizationProvider__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @mui/x-date-pickers/LocalizationProvider */ "@mui/x-date-pickers/LocalizationProvider");
355
- /* harmony import */ var _mui_x_date_pickers_LocalizationProvider__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_mui_x_date_pickers_LocalizationProvider__WEBPACK_IMPORTED_MODULE_6__);
356
- /* harmony import */ var _mui_x_date_pickers_DatePicker__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @mui/x-date-pickers/DatePicker */ "@mui/x-date-pickers/DatePicker");
357
- /* harmony import */ var _mui_x_date_pickers_DatePicker__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_mui_x_date_pickers_DatePicker__WEBPACK_IMPORTED_MODULE_7__);
358
- /* harmony import */ var _mui_icons_material_Close__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @mui/icons-material/Close */ "@mui/icons-material/Close");
359
- /* harmony import */ var _mui_icons_material_Close__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_mui_icons_material_Close__WEBPACK_IMPORTED_MODULE_8__);
360
- /* harmony import */ var _actions__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../actions */ "./src/actions.js");
361
- /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../utils */ "./src/utils/index.js");
362
- /* harmony import */ var _styles_module_scss__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./styles.module.scss */ "./src/components/FilterSortSearch/styles.module.scss");
363
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");
364
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__);
365
-
366
-
367
-
368
-
369
-
370
-
371
-
372
-
373
-
374
-
375
-
376
-
377
-
378
- function BasicDatePicker(_ref) {
379
- let {
380
- onFilter,
381
- onReset
382
- } = _ref;
383
- const {
384
- t
385
- } = (0,react_i18next__WEBPACK_IMPORTED_MODULE_3__.useTranslation)();
386
- const now = dayjs__WEBPACK_IMPORTED_MODULE_4___default()();
387
- const [dateValue, setDateValue] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(now);
388
- const onDateChange = val => {
389
- setDateValue(val);
390
- const date = new Date(val.$d);
391
- const {
392
- lower,
393
- upper
394
- } = (0,_utils__WEBPACK_IMPORTED_MODULE_10__.getEpochLowerUpperInSeconds)(date);
395
- onFilter({
396
- type: _actions__WEBPACK_IMPORTED_MODULE_9__.FILTER_VAR_DATE,
397
- name: "created",
398
- date,
399
- lower,
400
- upper
401
- });
402
- };
403
- const onResetAction = () => {
404
- onReset();
405
- setDateValue(now);
406
- };
407
- return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__.Fragment, {
408
- children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__.jsx)("div", {
409
- className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_11__.filterDateLabel,
410
- children: t("filter.purchased_on")
411
- }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__.jsxs)((_mui_material_Stack__WEBPACK_IMPORTED_MODULE_2___default()), {
412
- alignItems: "center",
413
- direction: "row",
414
- sx: {
415
- pt: 2,
416
- pb: 2
417
- },
418
- className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_11__.datePickerContainer,
419
- children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__.jsx)((_mui_icons_material_Close__WEBPACK_IMPORTED_MODULE_8___default()), {
420
- fontSize: "large",
421
- className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_11__.datepickerClose,
422
- onClick: onResetAction
423
- }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__.jsx)(_mui_x_date_pickers_LocalizationProvider__WEBPACK_IMPORTED_MODULE_6__.LocalizationProvider, {
424
- dateAdapter: _mui_x_date_pickers_AdapterDayjs__WEBPACK_IMPORTED_MODULE_5__.AdapterDayjs,
425
- children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__.jsx)(_mui_x_date_pickers_DatePicker__WEBPACK_IMPORTED_MODULE_7__.DatePicker, {
426
- className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_11__.calendarDisplay,
427
- onChange: onDateChange,
428
- value: dateValue
429
- })
430
- })]
431
- })]
432
- });
433
- }
434
- BasicDatePicker.propTypes = {
435
- onFilter: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().func),
436
- onReset: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().func)
437
- };
438
-
439
- /***/ }),
440
-
441
- /***/ "./src/components/FilterSortSearch/Filter.js":
442
- /*!***************************************************!*\
443
- !*** ./src/components/FilterSortSearch/Filter.js ***!
444
- \***************************************************/
445
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
446
-
447
- __webpack_require__.r(__webpack_exports__);
448
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
449
- /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
450
- /* harmony export */ });
451
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
452
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
453
- /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ "prop-types");
454
- /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__);
455
- /* harmony import */ var _mui_material_Stack__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @mui/material/Stack */ "@mui/material/Stack");
456
- /* harmony import */ var _mui_material_Stack__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_mui_material_Stack__WEBPACK_IMPORTED_MODULE_2__);
457
- /* harmony import */ var _mui_icons_material_FilterList__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @mui/icons-material/FilterList */ "@mui/icons-material/FilterList");
458
- /* harmony import */ var _mui_icons_material_FilterList__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_mui_icons_material_FilterList__WEBPACK_IMPORTED_MODULE_3__);
459
- /* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @mui/material */ "@mui/material");
460
- /* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_mui_material__WEBPACK_IMPORTED_MODULE_4__);
461
- /* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react-i18next */ "react-i18next");
462
- /* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(react_i18next__WEBPACK_IMPORTED_MODULE_5__);
463
- /* harmony import */ var _Datepicker__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./Datepicker */ "./src/components/FilterSortSearch/Datepicker.js");
464
- /* harmony import */ var _styles_module_scss__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./styles.module.scss */ "./src/components/FilterSortSearch/styles.module.scss");
465
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");
466
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__);
467
-
468
-
469
-
470
-
471
-
472
-
473
-
474
-
475
-
476
- function Filter(_ref) {
477
- let {
478
- onFilter,
479
- onReset
480
- } = _ref;
481
- const {
482
- t
483
- } = (0,react_i18next__WEBPACK_IMPORTED_MODULE_5__.useTranslation)();
484
- const [showFilterList, setShowFilterList] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);
485
- const [showDatepicker, setShowDatepicker] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);
486
- const [filterNumActive, setFilterNumActive] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);
487
- const filterRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);
488
- const handleFilterClickOutside = event => {
489
- if (filterRef.current && !filterRef.current.contains(event.target)) {
490
- if (showFilterList) {
491
- setShowFilterList(false);
492
- setShowDatepicker(false);
493
- }
494
- }
495
- };
496
- (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {
497
- document.addEventListener("click", handleFilterClickOutside, false);
498
- return () => {
499
- document.removeEventListener("click", handleFilterClickOutside, false);
500
- };
501
- }, [showFilterList]);
502
- const toggle = () => {
503
- setShowFilterList(!showFilterList);
504
- setShowDatepicker(!showDatepicker);
505
- };
506
- return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_4__.Box, {
507
- className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_7__.filterContainer,
508
- ref: filterRef,
509
- children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsxs)((_mui_material_Stack__WEBPACK_IMPORTED_MODULE_2___default()), {
510
- alignItems: "center",
511
- direction: "row",
512
- sx: {
513
- pt: 2,
514
- pb: 2
515
- },
516
- onClick: toggle,
517
- children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)((_mui_icons_material_FilterList__WEBPACK_IMPORTED_MODULE_3___default()), {
518
- fontSize: "large",
519
- className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_7__.filterIcon
520
- }), filterNumActive && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)("div", {
521
- className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_7__.filterNumActive,
522
- children: "1"
523
- }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)("span", {
524
- className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_7__.filterLabel,
525
- children: t("filter.filter")
526
- })]
527
- }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_4__.Box, {
528
- className: `${_styles_module_scss__WEBPACK_IMPORTED_MODULE_7__.filterListContainer} ${_styles_module_scss__WEBPACK_IMPORTED_MODULE_7__.container} ${showFilterList ? _styles_module_scss__WEBPACK_IMPORTED_MODULE_7__.showDatePicker : ""}`,
529
- children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(_Datepicker__WEBPACK_IMPORTED_MODULE_6__["default"], {
530
- onReset: () => {
531
- onReset();
532
- setFilterNumActive(false);
533
- toggle();
534
- },
535
- onFilter: filter => {
536
- onFilter(filter);
537
- setFilterNumActive(true);
538
- }
539
- })
540
- })]
541
- });
542
- }
543
- Filter.propTypes = {
544
- onFilter: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().func)
545
- };
546
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Filter);
547
-
548
- /***/ }),
549
-
550
- /***/ "./src/components/FilterSortSearch/Search.js":
551
- /*!***************************************************!*\
552
- !*** ./src/components/FilterSortSearch/Search.js ***!
553
- \***************************************************/
554
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
555
-
556
- __webpack_require__.r(__webpack_exports__);
557
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
558
- /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
559
- /* harmony export */ });
560
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
561
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
562
- /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ "prop-types");
563
- /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__);
564
- /* harmony import */ var _mui_material_styles__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @mui/material/styles */ "@mui/material/styles");
565
- /* harmony import */ var _mui_material_styles__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_mui_material_styles__WEBPACK_IMPORTED_MODULE_2__);
566
- /* harmony import */ var _mui_icons_material_Search__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @mui/icons-material/Search */ "@mui/icons-material/Search");
567
- /* harmony import */ var _mui_icons_material_Search__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_mui_icons_material_Search__WEBPACK_IMPORTED_MODULE_3__);
568
- /* harmony import */ var _mui_icons_material_Close__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @mui/icons-material/Close */ "@mui/icons-material/Close");
569
- /* harmony import */ var _mui_icons_material_Close__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_mui_icons_material_Close__WEBPACK_IMPORTED_MODULE_4__);
570
- /* harmony import */ var _mui_material_InputBase__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @mui/material/InputBase */ "@mui/material/InputBase");
571
- /* harmony import */ var _mui_material_InputBase__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_mui_material_InputBase__WEBPACK_IMPORTED_MODULE_5__);
572
- /* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @mui/material */ "@mui/material");
573
- /* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_mui_material__WEBPACK_IMPORTED_MODULE_6__);
574
- /* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! react-i18next */ "react-i18next");
575
- /* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(react_i18next__WEBPACK_IMPORTED_MODULE_7__);
576
- /* harmony import */ var _actions__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../actions */ "./src/actions.js");
577
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");
578
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__);
579
-
580
-
581
-
582
-
583
-
584
-
585
-
586
-
587
-
588
-
589
- const SearchContainer = (0,_mui_material_styles__WEBPACK_IMPORTED_MODULE_2__.styled)("div")(() => ({
590
- position: "relative",
591
- marginRight: "0",
592
- marginLeft: "0",
593
- width: "100%",
594
- display: "block"
595
- }));
596
- const SearchIconWrapper = (0,_mui_material_styles__WEBPACK_IMPORTED_MODULE_2__.styled)("div")(() => ({
597
- height: "100%",
598
- position: "absolute",
599
- display: "flex",
600
- alignItems: "center",
601
- justifyContent: "center"
602
- }));
603
- const StyledInputBase = (0,_mui_material_styles__WEBPACK_IMPORTED_MODULE_2__.styled)((_mui_material_InputBase__WEBPACK_IMPORTED_MODULE_5___default()))(() => ({
604
- color: "inherit",
605
- borderBottom: "1px solid rgba(0, 0, 0, 0.42)",
606
- paddingLeft: "25px",
607
- paddingRight: "25px",
608
- fontSize: "1em"
609
- }));
610
- const CloseIconWrapper = (0,_mui_material_styles__WEBPACK_IMPORTED_MODULE_2__.styled)((_mui_icons_material_Close__WEBPACK_IMPORTED_MODULE_4___default()))(() => ({
611
- padding: "2px",
612
- fontSize: "1.5em",
613
- height: "100%",
614
- position: "absolute",
615
- top: "0",
616
- right: "0",
617
- display: "flex",
618
- alignItems: "center",
619
- justifyContent: "center",
620
- cursor: "pointer",
621
- zIndex: "1000"
622
- }));
623
- function Search(_ref) {
624
- let {
625
- onSearch,
626
- onReset
627
- } = _ref;
628
- const {
629
- t
630
- } = (0,react_i18next__WEBPACK_IMPORTED_MODULE_7__.useTranslation)();
631
- const [showClose, setShowClose] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);
632
- const [searchValue, setSearchValue] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)("");
633
- const onKeyDown = event => {
634
- const {
635
- key,
636
- nativeEvent: {
637
- target: {
638
- value
639
- }
640
- }
641
- } = event;
642
- if (key === "Enter") {
643
- onSearch({
644
- value,
645
- name: "number",
646
- type: _actions__WEBPACK_IMPORTED_MODULE_8__.FILTER_VAR_ORDER_NUMBER
647
- });
648
- setShowClose(true);
649
- }
650
- };
651
- const resetSearch = () => {
652
- setSearchValue("");
653
- setShowClose(false);
654
- onReset();
655
- };
656
- return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_6__.Box, {
657
- children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxs)(SearchContainer, {
658
- children: [showClose && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(CloseIconWrapper, {
659
- onClick: resetSearch,
660
- children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)((_mui_icons_material_Close__WEBPACK_IMPORTED_MODULE_4___default()), {})
661
- }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(SearchIconWrapper, {
662
- children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)((_mui_icons_material_Search__WEBPACK_IMPORTED_MODULE_3___default()), {})
663
- }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(StyledInputBase, {
664
- placeholder: t("order_search.order_number"),
665
- inputProps: {
666
- "aria-label": "search"
667
- },
668
- value: searchValue,
669
- onChange: e => setSearchValue(e.target.value),
670
- onKeyDown: onKeyDown
671
- })]
672
- })
673
- });
674
- }
675
- Search.propTypes = {
676
- onSearch: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().func),
677
- onReset: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().func)
678
- };
679
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Search);
680
-
681
- /***/ }),
682
-
683
- /***/ "./src/components/FilterSortSearch/Sort.js":
684
- /*!*************************************************!*\
685
- !*** ./src/components/FilterSortSearch/Sort.js ***!
686
- \*************************************************/
687
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
688
-
689
- __webpack_require__.r(__webpack_exports__);
690
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
691
- /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
692
- /* harmony export */ });
693
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
694
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
695
- /* harmony import */ var _mui_material_Stack__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @mui/material/Stack */ "@mui/material/Stack");
696
- /* harmony import */ var _mui_material_Stack__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_mui_material_Stack__WEBPACK_IMPORTED_MODULE_1__);
697
- /* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @mui/material */ "@mui/material");
698
- /* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_mui_material__WEBPACK_IMPORTED_MODULE_2__);
699
- /* harmony import */ var _mui_icons_material_ImportExport__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @mui/icons-material/ImportExport */ "@mui/icons-material/ImportExport");
700
- /* harmony import */ var _mui_icons_material_ImportExport__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_mui_icons_material_ImportExport__WEBPACK_IMPORTED_MODULE_3__);
701
- /* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react-i18next */ "react-i18next");
702
- /* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(react_i18next__WEBPACK_IMPORTED_MODULE_4__);
703
- /* harmony import */ var _styles_module_scss__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./styles.module.scss */ "./src/components/FilterSortSearch/styles.module.scss");
704
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");
705
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__);
706
-
707
-
708
-
709
-
710
-
711
-
712
-
713
- function Sort(_ref) {
714
- let {
715
- onSort
716
- } = _ref;
717
- const {
718
- t
719
- } = (0,react_i18next__WEBPACK_IMPORTED_MODULE_4__.useTranslation)();
720
- const [showSort, setShowSort] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);
721
- const sortRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);
722
- const handleSortClickOutside = event => {
723
- if (sortRef.current && !sortRef.current.contains(event.target)) {
724
- setShowSort(false);
725
- }
726
- };
727
- (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {
728
- document.addEventListener("click", handleSortClickOutside, false);
729
- return () => {
730
- document.removeEventListener("click", handleSortClickOutside, false);
731
- };
732
- }, [showSort]);
733
- const toggle = () => {
734
- setShowSort(!showSort);
735
- };
736
- return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_2__.Box, {
737
- className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_5__.sortContainer,
738
- onClick: toggle,
739
- children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsxs)((_mui_material_Stack__WEBPACK_IMPORTED_MODULE_1___default()), {
740
- ref: sortRef,
741
- alignItems: "center",
742
- direction: "row",
743
- sx: {
744
- pt: 2,
745
- pb: 2
746
- },
747
- children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)((_mui_icons_material_ImportExport__WEBPACK_IMPORTED_MODULE_3___default()), {
748
- fontSize: "large",
749
- className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_5__.sortIcon
750
- }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)("span", {
751
- className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_5__.sortLabel,
752
- children: t("sort.sort")
753
- })]
754
- }), showSort && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_2__.Box, {
755
- className: `${_styles_module_scss__WEBPACK_IMPORTED_MODULE_5__.sortListContainer} ${_styles_module_scss__WEBPACK_IMPORTED_MODULE_5__.container}`,
756
- children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_2__.Button, {
757
- className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_5__.label,
758
- onClick: () => onSort("desc"),
759
- children: t("sort.new_first")
760
- }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_2__.Button, {
761
- className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_5__.label,
762
- onClick: () => onSort("asc"),
763
- children: t("sort.old_first")
764
- })]
765
- })]
766
- });
767
- }
768
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Sort);
769
-
770
- /***/ }),
771
-
772
- /***/ "./src/components/FilterSortSearch/index.js":
773
- /*!**************************************************!*\
774
- !*** ./src/components/FilterSortSearch/index.js ***!
775
- \**************************************************/
776
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
777
-
778
- __webpack_require__.r(__webpack_exports__);
779
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
780
- /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
781
- /* harmony export */ });
782
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
783
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
784
- /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ "prop-types");
785
- /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__);
786
- /* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @mui/material */ "@mui/material");
787
- /* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_mui_material__WEBPACK_IMPORTED_MODULE_2__);
788
- /* harmony import */ var _Filter__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Filter */ "./src/components/FilterSortSearch/Filter.js");
789
- /* harmony import */ var _Sort__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Sort */ "./src/components/FilterSortSearch/Sort.js");
790
- /* harmony import */ var _Search__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./Search */ "./src/components/FilterSortSearch/Search.js");
791
- /* harmony import */ var _styles_module_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./styles.module.scss */ "./src/components/FilterSortSearch/styles.module.scss");
792
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");
793
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__);
794
-
795
-
796
-
797
-
798
-
799
-
800
-
801
-
802
- function FilterSortSearch(_ref) {
803
- let {
804
- onFilter,
805
- onSort,
806
- onSearch,
807
- onReset
808
- } = _ref;
809
- return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_2__.Grid, {
810
- container: true,
811
- justify: "flex-end",
812
- alignItems: "center",
813
- children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_2__.Grid, {
814
- item: true,
815
- xs: 6,
816
- container: true,
817
- padding: 1,
818
- gap: 2,
819
- className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_6__.filterSortContainer,
820
- sx: {
821
- pt: 2,
822
- pb: 2
823
- },
824
- children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_2__.Grid, {
825
- item: true,
826
- children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_Filter__WEBPACK_IMPORTED_MODULE_3__["default"], {
827
- onFilter: onFilter,
828
- onReset: onReset
829
- })
830
- }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_2__.Grid, {
831
- item: true,
832
- children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_Sort__WEBPACK_IMPORTED_MODULE_4__["default"], {
833
- onSort: onSort
834
- })
835
- })]
836
- }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_2__.Grid, {
837
- item: true,
838
- xs: 6,
839
- container: true,
840
- justifyContent: "flex-end",
841
- children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_Search__WEBPACK_IMPORTED_MODULE_5__["default"], {
842
- onSearch: onSearch,
843
- onReset: onReset
844
- })
845
- })]
846
- });
847
- }
848
- FilterSortSearch.propTypes = {
849
- onFilter: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().func),
850
- onSort: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().func),
851
- onSearch: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().func),
852
- onReset: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().func)
853
- };
854
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (FilterSortSearch);
855
-
856
- /***/ }),
857
-
858
- /***/ "./src/components/MyOrdersTickets.js":
859
- /*!*******************************************!*\
860
- !*** ./src/components/MyOrdersTickets.js ***!
861
- \*******************************************/
862
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
863
-
864
- __webpack_require__.r(__webpack_exports__);
865
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
866
- /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
867
- /* harmony export */ });
868
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
869
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
870
- /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-redux */ "react-redux");
871
- /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react_redux__WEBPACK_IMPORTED_MODULE_1__);
872
- /* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react-i18next */ "react-i18next");
873
- /* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react_i18next__WEBPACK_IMPORTED_MODULE_2__);
874
- /* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @mui/material */ "@mui/material");
875
- /* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_mui_material__WEBPACK_IMPORTED_MODULE_3__);
876
- /* harmony import */ var react_infinite_scroll_component__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react-infinite-scroll-component */ "react-infinite-scroll-component");
877
- /* harmony import */ var react_infinite_scroll_component__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(react_infinite_scroll_component__WEBPACK_IMPORTED_MODULE_4__);
878
- /* harmony import */ var _FilterSortSearch__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./FilterSortSearch */ "./src/components/FilterSortSearch/index.js");
879
- /* harmony import */ var _OrdersList__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./OrdersList */ "./src/components/OrdersList/index.js");
880
- /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utils */ "./src/utils/index.js");
881
- /* harmony import */ var _actions__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../actions */ "./src/actions.js");
882
- /* harmony import */ var _styles_module_scss__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./styles.module.scss */ "./src/components/styles.module.scss");
883
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");
884
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__);
885
-
886
-
887
-
888
-
889
-
890
-
891
-
892
-
893
-
894
-
895
-
896
- function MyOrdersTickets() {
897
- const {
898
- t
899
- } = (0,react_i18next__WEBPACK_IMPORTED_MODULE_2__.useTranslation)();
900
- const dispatch = (0,react_redux__WEBPACK_IMPORTED_MODULE_1__.useDispatch)();
901
- const {
902
- summit,
903
- memberOrders,
904
- orders_current_page,
905
- orders_per_page,
906
- orders_total
907
- } = (0,react_redux__WEBPACK_IMPORTED_MODULE_1__.useSelector)(state => state.widgetState || {}, react_redux__WEBPACK_IMPORTED_MODULE_1__.shallowEqual);
908
- const [hasMore, setHasMore] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(true);
909
- const [searchNext, setSearchNext] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);
910
- const [filter, setFilter] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({});
911
- const [sort, setSort] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({});
912
- const onReset = () => {
913
- setSort({});
914
- setFilter({});
915
- setSearchNext(false);
916
- dispatch((0,_actions__WEBPACK_IMPORTED_MODULE_8__.resetFilter)());
917
- };
918
- const fetchData = async () => {
919
- dispatch((0,_actions__WEBPACK_IMPORTED_MODULE_8__.getUserOrders)({
920
- page: orders_current_page,
921
- perPage: orders_per_page,
922
- next: searchNext,
923
- filter,
924
- sort
925
- })).then(res => {
926
- if (res.response?.data?.length > orders_per_page && memberOrders.length === orders_total) setHasMore(false);
927
- });
928
- };
929
- (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {
930
- fetchData();
931
- }, [filter, sort, searchNext]);
932
- const onFilter = filter => {
933
- setSort({});
934
- setFilter(filter);
935
- };
936
- const onSort = direction => {
937
- setFilter({});
938
- setSort({
939
- direction,
940
- name: "created"
941
- });
942
- };
943
- return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.Fragment, {
944
- children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)(_FilterSortSearch__WEBPACK_IMPORTED_MODULE_5__["default"], {
945
- onFilter: onFilter,
946
- onSort: onSort,
947
- onSearch: onFilter,
948
- onReset: onReset
949
- }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Box, {
950
- className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_9__.widgetHeader,
951
- sx: {
952
- padding: {
953
- xs: 2,
954
- md: 0,
955
- lg: 0
956
- }
957
- },
958
- children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)("h2", {
959
- className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_9__.summitTitleDate,
960
- children: summit?.name
961
- }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)("h2", {
962
- className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_9__.summitTitleDate,
963
- children: (0,_utils__WEBPACK_IMPORTED_MODULE_7__.getSummitFormattedDate)(summit)
964
- })]
965
- }), memberOrders.length ? /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)((react_infinite_scroll_component__WEBPACK_IMPORTED_MODULE_4___default()), {
966
- dataLength: memberOrders.length,
967
- next: () => setSearchNext(true),
968
- hasMore: hasMore,
969
- scrollThreshold: 1,
970
- children: memberOrders?.map(order => /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)(_OrdersList__WEBPACK_IMPORTED_MODULE_6__["default"], {
971
- order: order,
972
- summit: summit
973
- }, order.id))
974
- }) : /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Box, {
975
- className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_9__.noOrdersFound,
976
- children: t("orders.no_orders")
977
- })]
978
- });
979
- }
980
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (MyOrdersTickets);
981
-
982
- /***/ }),
983
-
984
- /***/ "./src/components/OrderSummary/OrderSummaryTable.js":
985
- /*!**********************************************************!*\
986
- !*** ./src/components/OrderSummary/OrderSummaryTable.js ***!
987
- \**********************************************************/
988
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
989
-
990
- __webpack_require__.r(__webpack_exports__);
991
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
992
- /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
993
- /* harmony export */ });
994
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
995
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
996
- /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ "prop-types");
997
- /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__);
998
- /* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react-i18next */ "react-i18next");
999
- /* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react_i18next__WEBPACK_IMPORTED_MODULE_2__);
1000
- /* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @mui/material */ "@mui/material");
1001
- /* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_mui_material__WEBPACK_IMPORTED_MODULE_3__);
1002
- /* harmony import */ var _mui_material_Divider__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @mui/material/Divider */ "@mui/material/Divider");
1003
- /* harmony import */ var _mui_material_Divider__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_mui_material_Divider__WEBPACK_IMPORTED_MODULE_4__);
1004
- /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../utils */ "./src/utils/index.js");
1005
- /* harmony import */ var _styles_module_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./styles.module.scss */ "./src/components/OrderSummary/styles.module.scss");
1006
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");
1007
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__);
1008
-
1009
-
1010
-
1011
-
1012
-
1013
-
1014
-
1015
-
1016
- function OrderSummaryTable(_ref) {
1017
- let {
1018
- order,
1019
- summit,
1020
- tickets
1021
- } = _ref;
1022
- const {
1023
- t
1024
- } = (0,react_i18next__WEBPACK_IMPORTED_MODULE_2__.useTranslation)();
1025
- const {
1026
- discountTotal,
1027
- refundTotal,
1028
- taxesTotal,
1029
- amountTotal,
1030
- ticketSummary
1031
- } = (0,_utils__WEBPACK_IMPORTED_MODULE_5__.calculateOrderTotals)({
1032
- order,
1033
- summit,
1034
- tickets
1035
- });
1036
- const hundred = 100;
1037
- return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Box, {
1038
- className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_6__.orderSummaryTable,
1039
- children: [ticketSummary?.length > 0 && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.Fragment, {
1040
- children: ticketSummary.map(ticket => {
1041
- const ticketTotal = ticket.qty * (ticket.ticket_type.cost * hundred) / hundred;
1042
- return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Grid, {
1043
- container: true,
1044
- sx: {
1045
- pb: 1
1046
- },
1047
- children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Grid, {
1048
- xs: 8,
1049
- item: true,
1050
- children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxs)("span", {
1051
- children: ["x", ticket.qty, " ", ticket.ticket_type.name]
1052
- })
1053
- }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Grid, {
1054
- xs: 4,
1055
- item: true,
1056
- align: "right",
1057
- children: (0,_utils__WEBPACK_IMPORTED_MODULE_5__.formatCurrency)(ticketTotal, {
1058
- currency: order.currency
1059
- })
1060
- })]
1061
- }, `tixorder_${ticket.ticket_type.created}`);
1062
- })
1063
- }), order.discount_amount > 0 && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Grid, {
1064
- container: true,
1065
- sx: {
1066
- pb: 1
1067
- },
1068
- children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Grid, {
1069
- xs: 8,
1070
- item: true,
1071
- children: t("order_summary.discounts")
1072
- }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Grid, {
1073
- xs: 4,
1074
- item: true,
1075
- align: "right",
1076
- children: ["-", discountTotal]
1077
- })]
1078
- }), order.taxes_amount > 0 && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Grid, {
1079
- container: true,
1080
- sx: {
1081
- pb: 1
1082
- },
1083
- children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Grid, {
1084
- xs: 8,
1085
- item: true,
1086
- children: t("order_summary.taxes")
1087
- }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Grid, {
1088
- xs: 4,
1089
- item: true,
1090
- align: "right",
1091
- children: taxesTotal
1092
- })]
1093
- }), order.status === "Paid" && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Grid, {
1094
- container: true,
1095
- sx: {
1096
- pb: 1
1097
- },
1098
- children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Grid, {
1099
- xs: 8,
1100
- item: true,
1101
- children: t("order_summary.amount_paid")
1102
- }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Grid, {
1103
- xs: 4,
1104
- item: true,
1105
- align: "right",
1106
- children: ["-", amountTotal]
1107
- })]
1108
- }), refundTotal > 0 && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Grid, {
1109
- container: true,
1110
- sx: {
1111
- pb: 1
1112
- },
1113
- children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Grid, {
1114
- xs: 8,
1115
- item: true,
1116
- children: t("order_summary.refunds")
1117
- }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Grid, {
1118
- xs: 4,
1119
- item: true,
1120
- align: "right",
1121
- children: refundTotal
1122
- })]
1123
- }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)((_mui_material_Divider__WEBPACK_IMPORTED_MODULE_4___default()), {}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Grid, {
1124
- container: true,
1125
- sx: {
1126
- pt: 1,
1127
- pb: 1
1128
- },
1129
- children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Grid, {
1130
- xs: 8,
1131
- item: true,
1132
- children: t("order_summary.total")
1133
- }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Grid, {
1134
- xs: 4,
1135
- item: true,
1136
- align: "right",
1137
- children: order.status === "Paid" ? "$0.00" : amountTotal
1138
- })]
1139
- })]
1140
- });
1141
- }
1142
- OrderSummaryTable.propTypes = {
1143
- order: prop_types__WEBPACK_IMPORTED_MODULE_1___default().shape({
1144
- currency: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().string),
1145
- discount_amount: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().number),
1146
- taxes_amount: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().number),
1147
- status: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().string)
1148
- }),
1149
- summit: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().object),
1150
- tickets: prop_types__WEBPACK_IMPORTED_MODULE_1___default().arrayOf(Object)
1151
- };
1152
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (OrderSummaryTable);
1153
-
1154
- /***/ }),
1155
-
1156
- /***/ "./src/components/OrderSummary/RefundEmailSupport.js":
1157
- /*!***********************************************************!*\
1158
- !*** ./src/components/OrderSummary/RefundEmailSupport.js ***!
1159
- \***********************************************************/
1160
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1161
-
1162
- __webpack_require__.r(__webpack_exports__);
1163
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1164
- /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
1165
- /* harmony export */ });
1166
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
1167
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
1168
- /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ "prop-types");
1169
- /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__);
1170
- /* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react-i18next */ "react-i18next");
1171
- /* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react_i18next__WEBPACK_IMPORTED_MODULE_2__);
1172
- /* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @mui/material */ "@mui/material");
1173
- /* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_mui_material__WEBPACK_IMPORTED_MODULE_3__);
1174
- /* harmony import */ var _styles_module_scss__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./styles.module.scss */ "./src/components/OrderSummary/styles.module.scss");
1175
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");
1176
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__);
1177
-
1178
-
1179
-
1180
-
1181
-
1182
-
1183
- function RefundEmailSupport(_ref) {
1184
- let {
1185
- onRefundClick,
1186
- onRefundDetailClick,
1187
- onEmailSupportClick
1188
- } = _ref;
1189
- const {
1190
- t
1191
- } = (0,react_i18next__WEBPACK_IMPORTED_MODULE_2__.useTranslation)();
1192
- return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.Fragment, {
1193
- children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Button, {
1194
- className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_4__.orderSummaryButton,
1195
- variant: "outlined",
1196
- size: "large",
1197
- onClick: onRefundClick,
1198
- children: t("order_summary.request_refund")
1199
- }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Button, {
1200
- className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_4__.orderSummaryButton,
1201
- variant: "outlined",
1202
- size: "large",
1203
- onClick: onRefundDetailClick,
1204
- children: t("order_summary.refund_details")
1205
- }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Button, {
1206
- className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_4__.orderSummaryButton,
1207
- variant: "outlined",
1208
- size: "large",
1209
- onClick: onEmailSupportClick,
1210
- children: t("order_info.email_support")
1211
- })]
1212
- });
1213
- }
1214
- RefundEmailSupport.propTypes = {
1215
- onRefundClick: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().func),
1216
- onRefundDetailClick: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().func),
1217
- onEmailSupportClick: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().func)
1218
- };
1219
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (RefundEmailSupport);
1220
-
1221
- /***/ }),
1222
-
1223
- /***/ "./src/components/OrderSummary/index.js":
1224
- /*!**********************************************!*\
1225
- !*** ./src/components/OrderSummary/index.js ***!
1226
- \**********************************************/
1227
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1228
-
1229
- __webpack_require__.r(__webpack_exports__);
1230
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1231
- /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
1232
- /* harmony export */ });
1233
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
1234
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
1235
- /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ "prop-types");
1236
- /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__);
1237
- /* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @mui/material */ "@mui/material");
1238
- /* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_mui_material__WEBPACK_IMPORTED_MODULE_2__);
1239
- /* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react-i18next */ "react-i18next");
1240
- /* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(react_i18next__WEBPACK_IMPORTED_MODULE_3__);
1241
- /* harmony import */ var _OrderSummaryTable__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./OrderSummaryTable */ "./src/components/OrderSummary/OrderSummaryTable.js");
1242
- /* harmony import */ var _RefundEmailSupport__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./RefundEmailSupport */ "./src/components/OrderSummary/RefundEmailSupport.js");
1243
- /* harmony import */ var _styles_module_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./styles.module.scss */ "./src/components/OrderSummary/styles.module.scss");
1244
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");
1245
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__);
1246
-
1247
-
1248
-
1249
-
1250
-
1251
-
1252
-
1253
-
1254
- function OrderSummary(_ref) {
1255
- let {
1256
- order,
1257
- summit,
1258
- tickets
1259
- } = _ref;
1260
- const {
1261
- t
1262
- } = (0,react_i18next__WEBPACK_IMPORTED_MODULE_3__.useTranslation)();
1263
- return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.Fragment, {
1264
- children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_2__.Box, {
1265
- className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_6__.orderSummaryWrapper,
1266
- sx: {
1267
- pt: 4,
1268
- px: 4
1269
- },
1270
- children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)("h3", {
1271
- children: t("order_summary.order_summary")
1272
- }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_2__.Grid, {
1273
- container: true,
1274
- children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_2__.Grid, {
1275
- xs: 12,
1276
- className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_6__.orderSummaryPurchasedInfo,
1277
- sx: {
1278
- pb: 3
1279
- },
1280
- item: true,
1281
- children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_OrderSummaryTable__WEBPACK_IMPORTED_MODULE_4__["default"], {
1282
- order: order,
1283
- summit: summit,
1284
- tickets: tickets
1285
- })
1286
- })
1287
- })]
1288
- }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_2__.Box, {
1289
- xs: 12,
1290
- sx: {
1291
- pb: 3
1292
- },
1293
- children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_RefundEmailSupport__WEBPACK_IMPORTED_MODULE_5__["default"], {
1294
- onRefundClick: () => {},
1295
- onRefundDetailClick: () => {},
1296
- onEmailSupportClick: () => {}
1297
- })
1298
- })]
1299
- });
1300
- }
1301
- OrderSummary.propTypes = {
1302
- order: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().object),
1303
- summit: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().object),
1304
- tickets: prop_types__WEBPACK_IMPORTED_MODULE_1___default().arrayOf(Object)
1305
- };
1306
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (OrderSummary);
1307
-
1308
- /***/ }),
1309
-
1310
- /***/ "./src/components/OrdersList/OrderListItem.js":
1311
- /*!****************************************************!*\
1312
- !*** ./src/components/OrdersList/OrderListItem.js ***!
1313
- \****************************************************/
1314
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1315
-
1316
- __webpack_require__.r(__webpack_exports__);
1317
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1318
- /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
1319
- /* harmony export */ });
1320
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
1321
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
1322
- /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ "prop-types");
1323
- /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__);
1324
- /* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react-i18next */ "react-i18next");
1325
- /* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react_i18next__WEBPACK_IMPORTED_MODULE_2__);
1326
- /* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @mui/material */ "@mui/material");
1327
- /* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_mui_material__WEBPACK_IMPORTED_MODULE_3__);
1328
- /* harmony import */ var _OrderListTickets__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./OrderListTickets */ "./src/components/OrdersList/OrderListTickets.js");
1329
- /* harmony import */ var _utils_constants__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../utils/constants */ "./src/utils/constants.js");
1330
- /* harmony import */ var _styles_module_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./styles.module.scss */ "./src/components/OrdersList/styles.module.scss");
1331
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");
1332
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__);
1333
-
1334
-
1335
-
1336
-
1337
-
1338
-
1339
-
1340
-
1341
- function OrderListItem(_ref) {
1342
- let {
1343
- tickets,
1344
- total,
1345
- onPaginateClick,
1346
- summit
1347
- } = _ref;
1348
- const {
1349
- t
1350
- } = (0,react_i18next__WEBPACK_IMPORTED_MODULE_2__.useTranslation)();
1351
- const [itemsToDisplay, setItemsToDisplay] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(_utils_constants__WEBPACK_IMPORTED_MODULE_5__.PAGINATION_DISPLAY_COUNT);
1352
- const slicedTickets = tickets?.slice(0, itemsToDisplay);
1353
- const onViewMore = () => {
1354
- if (total > tickets.length) {
1355
- onPaginateClick();
1356
- }
1357
- setItemsToDisplay(itemsToDisplay + _utils_constants__WEBPACK_IMPORTED_MODULE_5__.PAGINATION_DISPLAY_COUNT);
1358
- };
1359
- const onViewLess = () => setItemsToDisplay(_utils_constants__WEBPACK_IMPORTED_MODULE_5__.PAGINATION_DISPLAY_COUNT);
1360
- return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.Fragment, {
1361
- children: [slicedTickets?.map(ticket => /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_OrderListTickets__WEBPACK_IMPORTED_MODULE_4__["default"], {
1362
- ticket: ticket,
1363
- summit: summit
1364
- }, ticket.id)), tickets?.length > itemsToDisplay ? /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Button, {
1365
- className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_6__.viewMoreButton,
1366
- onClick: onViewMore,
1367
- children: t("orders-tickets.view_more")
1368
- }) : "", slicedTickets?.length > _utils_constants__WEBPACK_IMPORTED_MODULE_5__.PAGINATION_DISPLAY_COUNT && slicedTickets?.length === total ? /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Button, {
1369
- className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_6__.viewMoreButton,
1370
- onClick: onViewLess,
1371
- children: t("orders-tickets.view_less")
1372
- }) : ""]
1373
- });
1374
- }
1375
- OrderListItem.propTypes = {
1376
- tickets: prop_types__WEBPACK_IMPORTED_MODULE_1___default().arrayOf(Object)
1377
- };
1378
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (OrderListItem);
1379
-
1380
- /***/ }),
1381
-
1382
- /***/ "./src/components/OrdersList/OrderListTickets.js":
1383
- /*!*******************************************************!*\
1384
- !*** ./src/components/OrdersList/OrderListTickets.js ***!
1385
- \*******************************************************/
1386
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1387
-
1388
- __webpack_require__.r(__webpack_exports__);
1389
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1390
- /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
1391
- /* harmony export */ });
1392
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
1393
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
1394
- /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ "prop-types");
1395
- /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__);
1396
- /* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react-i18next */ "react-i18next");
1397
- /* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react_i18next__WEBPACK_IMPORTED_MODULE_2__);
1398
- /* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @mui/material */ "@mui/material");
1399
- /* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_mui_material__WEBPACK_IMPORTED_MODULE_3__);
1400
- /* harmony import */ var _mui_material_Stack__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @mui/material/Stack */ "@mui/material/Stack");
1401
- /* harmony import */ var _mui_material_Stack__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_mui_material_Stack__WEBPACK_IMPORTED_MODULE_4__);
1402
- /* harmony import */ var _styles_module_scss__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./styles.module.scss */ "./src/components/OrdersList/styles.module.scss");
1403
- /* harmony import */ var _TicketStatus__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../TicketStatus */ "./src/components/TicketStatus/index.js");
1404
- /* harmony import */ var _OrderNumber__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./OrderNumber */ "./src/components/OrdersList/OrderNumber.js");
1405
- /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../utils */ "./src/utils/index.js");
1406
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");
1407
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__);
1408
-
1409
-
1410
-
1411
-
1412
-
1413
-
1414
-
1415
-
1416
-
1417
-
1418
- function OrderListTickets(_ref) {
1419
- let {
1420
- ticket,
1421
- summit
1422
- } = _ref;
1423
- const {
1424
- t
1425
- } = (0,react_i18next__WEBPACK_IMPORTED_MODULE_2__.useTranslation)();
1426
- const now = (0,_utils__WEBPACK_IMPORTED_MODULE_8__.useNow)();
1427
- const getActiveButtonActions = ticket => {
1428
- if (ticket.owner?.status === "Incomplete") {
1429
- return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Button, {
1430
- className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_5__.viewFinishTicketButton,
1431
- children: t("ticket_status.finish_ticket")
1432
- });
1433
- }
1434
- if (ticket.owner?.status === "Complete") {
1435
- return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Button, {
1436
- className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_5__.viewFinishTicketButton,
1437
- children: t("ticket_status.view_ticket")
1438
- });
1439
- }
1440
- return null;
1441
- };
1442
- const showReassignButton = () => {
1443
- const reassignDate = (0,_utils__WEBPACK_IMPORTED_MODULE_8__.getSummitReassignDate)(summit);
1444
- const isReassignable = reassignDate > now;
1445
- return isReassignable ? /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Button, {
1446
- className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_5__.reassignButton,
1447
- children: t("ticket_status.reassign_ticket")
1448
- }) : "";
1449
- };
1450
- return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Grid, {
1451
- className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_5__.orderWrapper,
1452
- container: true,
1453
- children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Grid, {
1454
- xs: 7,
1455
- padding: 2,
1456
- item: true,
1457
- className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_5__.ticketTicketType,
1458
- children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)("h4", {
1459
- children: ticket.ticket_type?.name
1460
- })
1461
- }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Grid, {
1462
- xs: 5,
1463
- padding: 2,
1464
- item: true
1465
- }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Grid, {
1466
- xs: 12,
1467
- sx: {
1468
- px: 2,
1469
- pb: 2
1470
- },
1471
- item: true,
1472
- children: [ticket.owner?.email ? /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.Fragment, {
1473
- children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Box, {
1474
- className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_5__.label,
1475
- children: [t("ticket_status.assigned_to"), ":"]
1476
- }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Box, {
1477
- className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_5__.ticketOwnerEmail,
1478
- children: ticket.owner?.email
1479
- })]
1480
- }) : ticket.is_active && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)("span", {
1481
- className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_5__.ticketOwnerEmail,
1482
- children: t("ticket_status.attendee_status_unassigned")
1483
- }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxs)("span", {
1484
- className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_5__.ticketNo,
1485
- children: [t("ticket_status.ticket_no"), ":", " ", /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_OrderNumber__WEBPACK_IMPORTED_MODULE_7__["default"], {
1486
- number: ticket.number,
1487
- copy: true,
1488
- truncated: true
1489
- })]
1490
- })]
1491
- }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Grid, {
1492
- container: true,
1493
- children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Grid, {
1494
- container: true,
1495
- direction: "row",
1496
- xs: 12,
1497
- lg: 6,
1498
- alignItems: "center",
1499
- item: true,
1500
- children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_TicketStatus__WEBPACK_IMPORTED_MODULE_6__["default"], {
1501
- ticket: ticket
1502
- })
1503
- }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Grid, {
1504
- padding: 2,
1505
- xs: 12,
1506
- lg: 6,
1507
- container: true,
1508
- item: true,
1509
- children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Grid, {
1510
- item: true,
1511
- container: true,
1512
- align: "center",
1513
- sx: {
1514
- justifyContent: "space-between"
1515
- },
1516
- className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_5__.ticketActionButtons,
1517
- children: ticket.is_active && (ticket.owner ? /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxs)((_mui_material_Stack__WEBPACK_IMPORTED_MODULE_4___default()), {
1518
- sx: {
1519
- justifyContent: "space-between",
1520
- width: "100%"
1521
- },
1522
- alignItems: "center",
1523
- direction: "row",
1524
- children: [getActiveButtonActions(ticket), showReassignButton()]
1525
- }) : /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Button, {
1526
- className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_5__.assignTicketButton,
1527
- children: t("ticket_status.assign_ticket")
1528
- }))
1529
- })
1530
- })]
1531
- })]
1532
- }, ticket.id);
1533
- }
1534
- OrderListTickets.propTypes = {
1535
- ticket: prop_types__WEBPACK_IMPORTED_MODULE_1___default().shape({
1536
- id: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().number),
1537
- owner: prop_types__WEBPACK_IMPORTED_MODULE_1___default().shape({
1538
- email: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().string)
1539
- }),
1540
- number: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().string),
1541
- total_refunded_amount: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().number),
1542
- ticket_type: prop_types__WEBPACK_IMPORTED_MODULE_1___default().shape({
1543
- name: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().string)
1544
- })
1545
- })
1546
- };
1547
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (OrderListTickets);
1548
-
1549
- /***/ }),
1550
-
1551
- /***/ "./src/components/OrdersList/OrderNumber.js":
1552
- /*!**************************************************!*\
1553
- !*** ./src/components/OrdersList/OrderNumber.js ***!
1554
- \**************************************************/
1555
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1556
-
1557
- __webpack_require__.r(__webpack_exports__);
1558
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1559
- /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
1560
- /* harmony export */ });
1561
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
1562
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
1563
- /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ "prop-types");
1564
- /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__);
1565
- /* harmony import */ var _mui_icons_material_ContentCopy__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @mui/icons-material/ContentCopy */ "@mui/icons-material/ContentCopy");
1566
- /* harmony import */ var _mui_icons_material_ContentCopy__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_mui_icons_material_ContentCopy__WEBPACK_IMPORTED_MODULE_2__);
1567
- /* harmony import */ var _styles_module_scss__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./styles.module.scss */ "./src/components/OrdersList/styles.module.scss");
1568
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");
1569
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__);
1570
-
1571
-
1572
-
1573
-
1574
-
1575
- function OrderNumber(_ref) {
1576
- let {
1577
- number,
1578
- copy = false,
1579
- truncated = false
1580
- } = _ref;
1581
- return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)("div", {
1582
- className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_3__.orderTicketNoContainer,
1583
- children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)("span", {
1584
- className: truncated && _styles_module_scss__WEBPACK_IMPORTED_MODULE_3__.orderTicketNumberTruncated,
1585
- children: number
1586
- }), copy && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)((_mui_icons_material_ContentCopy__WEBPACK_IMPORTED_MODULE_2___default()), {
1587
- className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_3__.copyIcon,
1588
- onClick: () => navigator.clipboard.writeText(number)
1589
- })]
1590
- });
1591
- }
1592
- OrderNumber.propTypes = {
1593
- number: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().string),
1594
- copy: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().bool)
1595
- };
1596
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (OrderNumber);
1597
-
1598
- /***/ }),
1599
-
1600
- /***/ "./src/components/OrdersList/OrdersListDesktopMobile.js":
1601
- /*!**************************************************************!*\
1602
- !*** ./src/components/OrdersList/OrdersListDesktopMobile.js ***!
1603
- \**************************************************************/
1604
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1605
-
1606
- __webpack_require__.r(__webpack_exports__);
1607
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1608
- /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
1609
- /* harmony export */ });
1610
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
1611
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
1612
- /* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-i18next */ "react-i18next");
1613
- /* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react_i18next__WEBPACK_IMPORTED_MODULE_1__);
1614
- /* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @mui/material */ "@mui/material");
1615
- /* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_mui_material__WEBPACK_IMPORTED_MODULE_2__);
1616
- /* harmony import */ var _mui_material_Tabs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @mui/material/Tabs */ "@mui/material/Tabs");
1617
- /* harmony import */ var _mui_material_Tabs__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_mui_material_Tabs__WEBPACK_IMPORTED_MODULE_3__);
1618
- /* harmony import */ var _mui_material_Tab__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @mui/material/Tab */ "@mui/material/Tab");
1619
- /* harmony import */ var _mui_material_Tab__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_mui_material_Tab__WEBPACK_IMPORTED_MODULE_4__);
1620
- /* harmony import */ var _mui_icons_material_Error__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @mui/icons-material/Error */ "@mui/icons-material/Error");
1621
- /* harmony import */ var _mui_icons_material_Error__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_mui_icons_material_Error__WEBPACK_IMPORTED_MODULE_5__);
1622
- /* harmony import */ var _OrderListItem__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./OrderListItem */ "./src/components/OrdersList/OrderListItem.js");
1623
- /* harmony import */ var _OrderSummary__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../OrderSummary */ "./src/components/OrderSummary/index.js");
1624
- /* harmony import */ var _styles_module_scss__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./styles.module.scss */ "./src/components/OrdersList/styles.module.scss");
1625
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");
1626
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__);
1627
-
1628
-
1629
-
1630
-
1631
-
1632
-
1633
-
1634
-
1635
-
1636
-
1637
- function TabPanel(props) {
1638
- const {
1639
- children,
1640
- value,
1641
- index
1642
- } = props;
1643
- return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)("div", {
1644
- role: "tabpanel",
1645
- hidden: value !== index,
1646
- id: `tabpanel-${index}`,
1647
- "aria-labelledby": `tab-${index}`,
1648
- children: value === index && children
1649
- });
1650
- }
1651
- function OrdersListDesktopMobile(_ref) {
1652
- let {
1653
- isMobile,
1654
- summit,
1655
- tickets,
1656
- order,
1657
- total,
1658
- detailsRequired,
1659
- onPaginateClick
1660
- } = _ref;
1661
- const {
1662
- t
1663
- } = (0,react_i18next__WEBPACK_IMPORTED_MODULE_1__.useTranslation)();
1664
- const [value, setValue] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(0);
1665
- const handleChange = (_, newValue) => {
1666
- setValue(newValue);
1667
- };
1668
- const moreDetails = () => detailsRequired && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxs)("span", {
1669
- className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_8__.detailsRequiredLabel,
1670
- children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)((_mui_icons_material_Error__WEBPACK_IMPORTED_MODULE_5___default()), {
1671
- sx: {
1672
- color: "#FF9800"
1673
- }
1674
- }), t("ticket_status.status_details_required")]
1675
- });
1676
- return isMobile ? /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_2__.Box, {
1677
- className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_8__.ticketListContainer,
1678
- children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_2__.Box, {
1679
- sx: {
1680
- borderColor: "divider",
1681
- pb: 2
1682
- },
1683
- children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxs)((_mui_material_Tabs__WEBPACK_IMPORTED_MODULE_3___default()), {
1684
- value: value,
1685
- onChange: handleChange,
1686
- textColor: "#000",
1687
- "aria-label": "Tickets & Summary",
1688
- TabIndicatorProps: {
1689
- style: {
1690
- background: "#000"
1691
- }
1692
- },
1693
- children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)((_mui_material_Tab__WEBPACK_IMPORTED_MODULE_4___default()), {
1694
- label: t("labels.tickets"),
1695
- className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_8__.tabButtons
1696
- }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)((_mui_material_Tab__WEBPACK_IMPORTED_MODULE_4___default()), {
1697
- label: t("labels.summary"),
1698
- className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_8__.tabButtons
1699
- })]
1700
- })
1701
- }), moreDetails(), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(TabPanel, {
1702
- value: value,
1703
- index: 0,
1704
- children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_OrderListItem__WEBPACK_IMPORTED_MODULE_6__["default"], {
1705
- order: order,
1706
- tickets: tickets,
1707
- total: total,
1708
- onPaginateClick: onPaginateClick,
1709
- summit: summit
1710
- })
1711
- }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(TabPanel, {
1712
- value: value,
1713
- index: 1,
1714
- children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_OrderSummary__WEBPACK_IMPORTED_MODULE_7__["default"], {
1715
- order: order,
1716
- summit: summit,
1717
- tickets: tickets
1718
- })
1719
- })]
1720
- }) : /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.Fragment, {
1721
- children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_2__.Grid, {
1722
- item: true,
1723
- md: 12,
1724
- children: moreDetails()
1725
- }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_2__.Grid, {
1726
- padding: 2,
1727
- item: true,
1728
- md: 7,
1729
- order: {
1730
- md: 1
1731
- },
1732
- className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_8__.ticketListContainer,
1733
- children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_OrderListItem__WEBPACK_IMPORTED_MODULE_6__["default"], {
1734
- order: order,
1735
- tickets: tickets,
1736
- total: total,
1737
- onPaginateClick: onPaginateClick,
1738
- summit: summit
1739
- })
1740
- }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_2__.Grid, {
1741
- padding: 2,
1742
- item: true,
1743
- md: 5,
1744
- order: {
1745
- md: 1
1746
- },
1747
- children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_OrderSummary__WEBPACK_IMPORTED_MODULE_7__["default"], {
1748
- order: order,
1749
- summit: summit,
1750
- tickets: tickets
1751
- })
1752
- })]
1753
- });
1754
- }
1755
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (OrdersListDesktopMobile);
1756
-
1757
- /***/ }),
1758
-
1759
- /***/ "./src/components/OrdersList/index.js":
1760
- /*!********************************************!*\
1761
- !*** ./src/components/OrdersList/index.js ***!
1762
- \********************************************/
1763
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1764
-
1765
- __webpack_require__.r(__webpack_exports__);
1766
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1767
- /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
1768
- /* harmony export */ });
1769
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
1770
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
1771
- /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ "prop-types");
1772
- /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__);
1773
- /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react-redux */ "react-redux");
1774
- /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react_redux__WEBPACK_IMPORTED_MODULE_2__);
1775
- /* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react-i18next */ "react-i18next");
1776
- /* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(react_i18next__WEBPACK_IMPORTED_MODULE_3__);
1777
- /* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @mui/material */ "@mui/material");
1778
- /* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_mui_material__WEBPACK_IMPORTED_MODULE_4__);
1779
- /* harmony import */ var _mui_material_styles__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @mui/material/styles */ "@mui/material/styles");
1780
- /* harmony import */ var _mui_material_styles__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_mui_material_styles__WEBPACK_IMPORTED_MODULE_5__);
1781
- /* harmony import */ var _mui_material_useMediaQuery__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @mui/material/useMediaQuery */ "@mui/material/useMediaQuery");
1782
- /* harmony import */ var _mui_material_useMediaQuery__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_mui_material_useMediaQuery__WEBPACK_IMPORTED_MODULE_6__);
1783
- /* harmony import */ var _actions__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../actions */ "./src/actions.js");
1784
- /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../utils */ "./src/utils/index.js");
1785
- /* harmony import */ var _utils_constants__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../utils/constants */ "./src/utils/constants.js");
1786
- /* harmony import */ var _OrderNumber__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./OrderNumber */ "./src/components/OrdersList/OrderNumber.js");
1787
- /* harmony import */ var _styles_module_scss__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./styles.module.scss */ "./src/components/OrdersList/styles.module.scss");
1788
- /* harmony import */ var _OrdersListDesktopMobile__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./OrdersListDesktopMobile */ "./src/components/OrdersList/OrdersListDesktopMobile.js");
1789
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");
1790
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__);
1791
-
1792
-
1793
-
1794
-
1795
-
1796
-
1797
-
1798
-
1799
-
1800
-
1801
-
1802
-
1803
-
1804
-
1805
- function OrdersList(props) {
1806
- const {
1807
- summit,
1808
- order
1809
- } = props;
1810
- const {
1811
- t
1812
- } = (0,react_i18next__WEBPACK_IMPORTED_MODULE_3__.useTranslation)();
1813
- const dispatch = (0,react_redux__WEBPACK_IMPORTED_MODULE_2__.useDispatch)();
1814
- const {
1815
- per_page,
1816
- last_page,
1817
- memberOrders
1818
- } = (0,react_redux__WEBPACK_IMPORTED_MODULE_2__.useSelector)(state => state.widgetState || {}, react_redux__WEBPACK_IMPORTED_MODULE_2__.shallowEqual);
1819
- const theme = (0,_mui_material_styles__WEBPACK_IMPORTED_MODULE_5__.useTheme)();
1820
- const isMobile = _mui_material_useMediaQuery__WEBPACK_IMPORTED_MODULE_6___default()(theme.breakpoints.down("lg"));
1821
- const [isMobileViewable, setMobileViewable] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);
1822
- const detailsRequired = order.memberTickets?.find(ticket => ticket.owner?.status === "Incomplete");
1823
- const fetchTicketsByOrder = async () => {
1824
- await dispatch((0,_actions__WEBPACK_IMPORTED_MODULE_7__.getTicketsByOrder)({
1825
- orderId: order.id,
1826
- current_page: last_page,
1827
- perPage: per_page
1828
- })).catch(e => {
1829
- console.log(e);
1830
- });
1831
- };
1832
- (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {
1833
- fetchTicketsByOrder();
1834
- }, []);
1835
- const onPaginateClick = () => dispatch((0,_actions__WEBPACK_IMPORTED_MODULE_7__.getTicketsByOrder)({
1836
- orderId: order.id,
1837
- page: order.tickets_page_current + _utils_constants__WEBPACK_IMPORTED_MODULE_9__.ONE_PAGE_NEXT,
1838
- perPage: per_page,
1839
- next: true
1840
- }));
1841
- return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.Fragment, {
1842
- children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_4__.Box, {
1843
- sx: {
1844
- padding: {
1845
- xs: 2,
1846
- md: 1,
1847
- lg: 0
1848
- }
1849
- },
1850
- className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_11__.orderTicketInfoContainer,
1851
- children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsxs)("span", {
1852
- className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_11__.orderTicketInfo,
1853
- children: [t("orders.purchased"), ": ", (0,_utils__WEBPACK_IMPORTED_MODULE_8__.getFormattedDate)(order.created), " |", " ", t("order_summary.order_no"), ":", " ", /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(_OrderNumber__WEBPACK_IMPORTED_MODULE_10__["default"], {
1854
- number: order.number,
1855
- copy: true,
1856
- truncated: true
1857
- })]
1858
- }), isMobile && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_4__.Button, {
1859
- sx: {
1860
- padding: 0
1861
- },
1862
- className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_11__.blackButton,
1863
- onClick: () => setMobileViewable(!isMobileViewable),
1864
- children: isMobileViewable ? t("ticket_status.hide_tickets") : t("ticket_status.view_tickets")
1865
- })]
1866
- }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_4__.Grid, {
1867
- container: true,
1868
- rowSpacing: 1,
1869
- columnSpacing: {
1870
- xs: 1,
1871
- sm: 2,
1872
- md: 3
1873
- },
1874
- className: `${_styles_module_scss__WEBPACK_IMPORTED_MODULE_11__.orderTicketContainer} ${isMobile && !isMobileViewable ? _styles_module_scss__WEBPACK_IMPORTED_MODULE_11__.display_none : ""}`,
1875
- sx: {
1876
- flexDirection: {
1877
- md: "row",
1878
- lg: "row"
1879
- },
1880
- padding: {
1881
- xs: 2,
1882
- md: 0,
1883
- lg: 0
1884
- }
1885
- },
1886
- children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(_OrdersListDesktopMobile__WEBPACK_IMPORTED_MODULE_12__["default"], {
1887
- isMobile: isMobile,
1888
- summit: summit,
1889
- order: order,
1890
- tickets: (0,_utils__WEBPACK_IMPORTED_MODULE_8__.getOrderTickets)(memberOrders, order.id),
1891
- total: order.tickets_total,
1892
- detailsRequired: detailsRequired,
1893
- onPaginateClick: onPaginateClick
1894
- })
1895
- }, order.id)]
1896
- });
1897
- }
1898
- OrdersList.propTypes = {
1899
- summit: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().object),
1900
- order: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().object)
1901
- };
1902
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (OrdersList);
1903
-
1904
- /***/ }),
1905
-
1906
- /***/ "./src/components/TicketStatus/index.js":
1907
- /*!**********************************************!*\
1908
- !*** ./src/components/TicketStatus/index.js ***!
1909
- \**********************************************/
1910
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1911
-
1912
- __webpack_require__.r(__webpack_exports__);
1913
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1914
- /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
1915
- /* harmony export */ });
1916
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
1917
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
1918
- /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ "prop-types");
1919
- /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__);
1920
- /* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react-i18next */ "react-i18next");
1921
- /* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react_i18next__WEBPACK_IMPORTED_MODULE_2__);
1922
- /* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @mui/material */ "@mui/material");
1923
- /* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_mui_material__WEBPACK_IMPORTED_MODULE_3__);
1924
- /* harmony import */ var _styles_module_scss__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./styles.module.scss */ "./src/components/TicketStatus/styles.module.scss");
1925
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");
1926
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__);
1927
-
1928
-
1929
-
1930
-
1931
-
1932
-
1933
- function TicketStatus(_ref) {
1934
- let {
1935
- ticket
1936
- } = _ref;
1937
- const {
1938
- t
1939
- } = (0,react_i18next__WEBPACK_IMPORTED_MODULE_2__.useTranslation)();
1940
- const isActive = ticket.is_active;
1941
- const refund_requests = ticket.refund_requests.find(r => r.status === "Requested");
1942
- const ticket_status_incomplete = ticket.owner?.status === "Incomplete";
1943
- const ticket_unassigned = ticket.owner_id === 0;
1944
- const ticket_complete = ticket.owner && ticket.owner?.status === "Complete";
1945
- return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Container, {
1946
- className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_4__.ticketStatusContainer,
1947
- children: isActive ? /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.Fragment, {
1948
- children: [refund_requests && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Button, {
1949
- className: `${_styles_module_scss__WEBPACK_IMPORTED_MODULE_4__.buttonPill} ${_styles_module_scss__WEBPACK_IMPORTED_MODULE_4__.buttonRefundRequested}`,
1950
- children: t("ticket_status.status_refund_requested")
1951
- }), ticket_status_incomplete && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Button, {
1952
- className: `${_styles_module_scss__WEBPACK_IMPORTED_MODULE_4__.buttonPill} ${_styles_module_scss__WEBPACK_IMPORTED_MODULE_4__.buttonIncomplete}`,
1953
- children: t("ticket_status.status_incomplete")
1954
- }), ticket_unassigned && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Button, {
1955
- className: `${_styles_module_scss__WEBPACK_IMPORTED_MODULE_4__.buttonPill} ${_styles_module_scss__WEBPACK_IMPORTED_MODULE_4__.buttonUnassigned}`,
1956
- children: t("ticket_status.status_unassigned")
1957
- }), ticket_complete && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Button, {
1958
- className: `${_styles_module_scss__WEBPACK_IMPORTED_MODULE_4__.buttonPill} ${_styles_module_scss__WEBPACK_IMPORTED_MODULE_4__.buttonComplete}`,
1959
- children: t("ticket_status.status_complete")
1960
- })]
1961
- }) : /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Button, {
1962
- className: `${_styles_module_scss__WEBPACK_IMPORTED_MODULE_4__.buttonPill} ${_styles_module_scss__WEBPACK_IMPORTED_MODULE_4__.buttonCancelled}`,
1963
- children: t("ticket_status.status_cancelled")
1964
- })
1965
- });
1966
- }
1967
- TicketStatus.propTypes = {
1968
- ticket: prop_types__WEBPACK_IMPORTED_MODULE_1___default().shape({
1969
- owner: prop_types__WEBPACK_IMPORTED_MODULE_1___default().shape({
1970
- status: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().string)
1971
- }),
1972
- refund_requests: prop_types__WEBPACK_IMPORTED_MODULE_1___default().arrayOf(Object)
1973
- })
1974
- };
1975
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (TicketStatus);
1976
-
1977
- /***/ }),
1978
-
1979
- /***/ "./src/reducer.js":
1980
- /*!************************!*\
1981
- !*** ./src/reducer.js ***!
1982
- \************************/
1983
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1984
-
1985
- __webpack_require__.r(__webpack_exports__);
1986
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1987
- /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
1988
- /* harmony export */ });
1989
- /* harmony import */ var openstack_uicore_foundation_lib_security_actions__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! openstack-uicore-foundation/lib/security/actions */ "openstack-uicore-foundation/lib/security/actions");
1990
- /* harmony import */ var openstack_uicore_foundation_lib_security_actions__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(openstack_uicore_foundation_lib_security_actions__WEBPACK_IMPORTED_MODULE_0__);
1991
- /* harmony import */ var _actions__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./actions */ "./src/actions.js");
1992
- /* harmony import */ var _utils_constants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./utils/constants */ "./src/utils/constants.js");
1993
- /**
1994
- * Copyright 2024 OpenStack Foundation
1995
- * Licensed under the Apache License, Version 2.0 (the "License");
1996
- * you may not use this file except in compliance with the License.
1997
- * You may obtain a copy of the License at
1998
- * http://www.apache.org/licenses/LICENSE-2.0
1999
- * Unless required by applicable law or agreed to in writing, software
2000
- * distributed under the License is distributed on an "AS IS" BASIS,
2001
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
2002
- * See the License for the specific language governing permissions and
2003
- * limitations under the License.
2004
- * */
2005
-
2006
-
2007
-
2008
- const DEFAULT_STATE = {
2009
- summit: null,
2010
- user: {},
2011
- widgetLoading: false,
2012
- memberOrders: [],
2013
- errors: {},
2014
- loading: false,
2015
- isOrderLoading: false,
2016
- orders_current_page: 1,
2017
- orders_last_page: 1,
2018
- orders_per_page: 5,
2019
- orders_total: 0,
2020
- ticket_current_page: 1,
2021
- ticket_last_page: 1,
2022
- ticket_per_page: 5,
2023
- ticket_total: 0
2024
- };
2025
- const WidgetReducer = function () {
2026
- let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : DEFAULT_STATE;
2027
- let {
2028
- type,
2029
- payload
2030
- } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
2031
- switch (type) {
2032
- case openstack_uicore_foundation_lib_security_actions__WEBPACK_IMPORTED_MODULE_0__.LOGOUT_USER:
2033
- case _actions__WEBPACK_IMPORTED_MODULE_1__.RESET_STATE:
2034
- return DEFAULT_STATE;
2035
- case _actions__WEBPACK_IMPORTED_MODULE_1__.RESET_FILTER:
2036
- return {
2037
- ...state,
2038
- orders_current_page: 1,
2039
- orders_last_page: 1
2040
- };
2041
- case _actions__WEBPACK_IMPORTED_MODULE_1__.SET_SUMMIT:
2042
- return {
2043
- ...state,
2044
- summit: payload
2045
- };
2046
- case _actions__WEBPACK_IMPORTED_MODULE_1__.SET_USER:
2047
- return {
2048
- ...state,
2049
- user: payload
2050
- };
2051
- case _actions__WEBPACK_IMPORTED_MODULE_1__.GET_USER_ORDERS:
2052
- {
2053
- const {
2054
- memberOrders
2055
- } = state;
2056
- const {
2057
- data,
2058
- total,
2059
- current_page
2060
- } = payload.response;
2061
- return {
2062
- ...state,
2063
- memberOrders: current_page === _utils_constants__WEBPACK_IMPORTED_MODULE_2__.FIRST_PAGE ? data : [...memberOrders, ...data],
2064
- orders_total: total,
2065
- orders_current_page: current_page
2066
- };
2067
- }
2068
- case _actions__WEBPACK_IMPORTED_MODULE_1__.GET_TICKETS_BY_ORDER:
2069
- {
2070
- const {
2071
- memberOrders
2072
- } = state;
2073
- const {
2074
- data,
2075
- total,
2076
- current_page,
2077
- last_page
2078
- } = payload.response;
2079
- const formerOrder = memberOrders.find(o => o.id === data[0]?.order_id);
2080
- const updatedOrder = {
2081
- ...formerOrder,
2082
- memberTickets: current_page === _utils_constants__WEBPACK_IMPORTED_MODULE_2__.FIRST_PAGE ? data : [...formerOrder.memberTickets, ...data],
2083
- tickets_page_current: current_page,
2084
- tickets_page_last: last_page,
2085
- tickets_total: total
2086
- };
2087
- return {
2088
- ...state,
2089
- memberOrders: memberOrders.map(mo => mo.id === updatedOrder.id ? updatedOrder : mo)
2090
- };
2091
- }
2092
- default:
2093
- return state;
2094
- }
2095
- };
2096
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (WidgetReducer);
2097
-
2098
- /***/ }),
2099
-
2100
- /***/ "./src/store.js":
2101
- /*!**********************!*\
2102
- !*** ./src/store.js ***!
2103
- \**********************/
2104
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2105
-
2106
- __webpack_require__.r(__webpack_exports__);
2107
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
2108
- /* harmony export */ getStore: () => (/* binding */ getStore),
2109
- /* harmony export */ useInitStore: () => (/* binding */ useInitStore)
2110
- /* harmony export */ });
2111
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
2112
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
2113
- /* harmony import */ var _reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @reduxjs/toolkit */ "@reduxjs/toolkit");
2114
- /* harmony import */ var _reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_1__);
2115
- /* harmony import */ var redux_persist__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! redux-persist */ "redux-persist");
2116
- /* harmony import */ var redux_persist__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(redux_persist__WEBPACK_IMPORTED_MODULE_2__);
2117
- /* harmony import */ var redux_persist_lib_storage__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! redux-persist/lib/storage */ "redux-persist/lib/storage");
2118
- /* harmony import */ var redux_persist_lib_storage__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(redux_persist_lib_storage__WEBPACK_IMPORTED_MODULE_3__);
2119
- /* harmony import */ var redux__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! redux */ "redux");
2120
- /* harmony import */ var redux__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(redux__WEBPACK_IMPORTED_MODULE_4__);
2121
- /* harmony import */ var _reducer__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./reducer */ "./src/reducer.js");
2122
-
2123
-
2124
-
2125
-
2126
-
2127
-
2128
- const getStore = _ref => {
2129
- let {
2130
- clientId,
2131
- loginUrl,
2132
- summit,
2133
- apiBaseUrl
2134
- } = _ref;
2135
- // to add other reducers later
2136
- const reducers = (0,redux__WEBPACK_IMPORTED_MODULE_4__.combineReducers)({
2137
- widgetState: _reducer__WEBPACK_IMPORTED_MODULE_5__["default"]
2138
- });
2139
- const store = (0,_reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_1__.configureStore)({
2140
- reducer: (0,redux_persist__WEBPACK_IMPORTED_MODULE_2__.persistReducer)({
2141
- key: `root_my_orders_tickets_${clientId}`,
2142
- storage: (redux_persist_lib_storage__WEBPACK_IMPORTED_MODULE_3___default())
2143
- }, reducers),
2144
- middleware: getDefaultMiddleware => getDefaultMiddleware({
2145
- thunk: {
2146
- extraArgument: {
2147
- clientId,
2148
- apiBaseUrl,
2149
- summit,
2150
- loginUrl
2151
- }
2152
- },
2153
- immutableCheck: false,
2154
- serializableCheck: {
2155
- ignoredActions: [redux_persist__WEBPACK_IMPORTED_MODULE_2__.FLUSH, redux_persist__WEBPACK_IMPORTED_MODULE_2__.REHYDRATE, redux_persist__WEBPACK_IMPORTED_MODULE_2__.PAUSE, redux_persist__WEBPACK_IMPORTED_MODULE_2__.PERSIST, redux_persist__WEBPACK_IMPORTED_MODULE_2__.PURGE, redux_persist__WEBPACK_IMPORTED_MODULE_2__.REGISTER]
2156
- }
2157
- })
2158
- });
2159
- return store;
2160
- };
2161
- const useInitStore = config => {
2162
- const store = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(() => getStore(config), []);
2163
- const persistor = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(() => (0,redux_persist__WEBPACK_IMPORTED_MODULE_2__.persistStore)(store), [store]);
2164
- return {
2165
- store,
2166
- persistor
2167
- };
2168
- };
2169
-
2170
- /***/ }),
2171
-
2172
- /***/ "./src/utils/auth.js":
2173
- /*!***************************!*\
2174
- !*** ./src/utils/auth.js ***!
2175
- \***************************/
2176
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2177
-
2178
- __webpack_require__.r(__webpack_exports__);
2179
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
2180
- /* harmony export */ getAccessTokenSafely: () => (/* binding */ getAccessTokenSafely)
2181
- /* harmony export */ });
2182
- /* harmony import */ var openstack_uicore_foundation_lib_security_methods__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! openstack-uicore-foundation/lib/security/methods */ "openstack-uicore-foundation/lib/security/methods");
2183
- /* harmony import */ var openstack_uicore_foundation_lib_security_methods__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(openstack_uicore_foundation_lib_security_methods__WEBPACK_IMPORTED_MODULE_0__);
2184
- /* harmony import */ var _sentry_react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @sentry/react */ "@sentry/react");
2185
- /* harmony import */ var _sentry_react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_sentry_react__WEBPACK_IMPORTED_MODULE_1__);
2186
-
2187
-
2188
- const getAccessTokenSafely = async () => {
2189
- try {
2190
- return await (0,openstack_uicore_foundation_lib_security_methods__WEBPACK_IMPORTED_MODULE_0__.getAccessToken)();
2191
- } catch (e) {
2192
- console.log("my-orders-tickets-widge:: getAccessTokenSafely error: ", e);
2193
- _sentry_react__WEBPACK_IMPORTED_MODULE_1__.captureException(e);
2194
- (0,openstack_uicore_foundation_lib_security_methods__WEBPACK_IMPORTED_MODULE_0__.initLogOut)();
2195
- return Promise.reject();
2196
- }
2197
- };
2198
-
2199
- /***/ }),
2200
-
2201
- /***/ "./src/utils/constants.js":
2202
- /*!********************************!*\
2203
- !*** ./src/utils/constants.js ***!
2204
- \********************************/
2205
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2206
-
2207
- __webpack_require__.r(__webpack_exports__);
2208
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
2209
- /* harmony export */ DEFAULT_ITEMS_PER_PAGE: () => (/* binding */ DEFAULT_ITEMS_PER_PAGE),
2210
- /* harmony export */ FIRST_PAGE: () => (/* binding */ FIRST_PAGE),
2211
- /* harmony export */ LAST_HOUR_OF_24_HOUR: () => (/* binding */ LAST_HOUR_OF_24_HOUR),
2212
- /* harmony export */ LAST_MINUTE_OF_HOUR: () => (/* binding */ LAST_MINUTE_OF_HOUR),
2213
- /* harmony export */ MILLISEC_TO_SEC: () => (/* binding */ MILLISEC_TO_SEC),
2214
- /* harmony export */ ONE_DAY: () => (/* binding */ ONE_DAY),
2215
- /* harmony export */ ONE_PAGE_NEXT: () => (/* binding */ ONE_PAGE_NEXT),
2216
- /* harmony export */ PAGINATION_DISPLAY_COUNT: () => (/* binding */ PAGINATION_DISPLAY_COUNT)
2217
- /* harmony export */ });
2218
- const LAST_HOUR_OF_24_HOUR = 23;
2219
- const LAST_MINUTE_OF_HOUR = 59;
2220
- const ONE_PAGE_NEXT = 1;
2221
- const MILLISEC_TO_SEC = 1000;
2222
- const ONE_DAY = 1;
2223
- const DEFAULT_ITEMS_PER_PAGE = 5;
2224
- const FIRST_PAGE = 1;
2225
- const PAGINATION_DISPLAY_COUNT = 3;
2226
-
2227
- /***/ }),
2228
-
2229
- /***/ "./src/utils/index.js":
2230
- /*!****************************!*\
2231
- !*** ./src/utils/index.js ***!
2232
- \****************************/
2233
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2234
-
2235
- __webpack_require__.r(__webpack_exports__);
2236
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
2237
- /* harmony export */ calculateOrderTotals: () => (/* binding */ calculateOrderTotals),
2238
- /* harmony export */ defaultCurrentTime: () => (/* binding */ defaultCurrentTime),
2239
- /* harmony export */ formatCurrency: () => (/* binding */ formatCurrency),
2240
- /* harmony export */ getEpochLowerUpperInSeconds: () => (/* binding */ getEpochLowerUpperInSeconds),
2241
- /* harmony export */ getFormattedDate: () => (/* binding */ getFormattedDate),
2242
- /* harmony export */ getNow: () => (/* binding */ getNow),
2243
- /* harmony export */ getOrderTickets: () => (/* binding */ getOrderTickets),
2244
- /* harmony export */ getSummitFormattedDate: () => (/* binding */ getSummitFormattedDate),
2245
- /* harmony export */ getSummitReassignDate: () => (/* binding */ getSummitReassignDate),
2246
- /* harmony export */ useNow: () => (/* binding */ useNow)
2247
- /* harmony export */ });
2248
- /* harmony import */ var moment_timezone__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! moment-timezone */ "moment-timezone");
2249
- /* harmony import */ var moment_timezone__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(moment_timezone__WEBPACK_IMPORTED_MODULE_0__);
2250
- /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-redux */ "react-redux");
2251
- /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react_redux__WEBPACK_IMPORTED_MODULE_1__);
2252
- /* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./constants */ "./src/utils/constants.js");
2253
-
2254
-
2255
-
2256
- const formatCurrency = (value, _ref) => {
2257
- let {
2258
- locale = "en-US",
2259
- ...options
2260
- } = _ref;
2261
- const defaultOptions = {
2262
- currency: "USD",
2263
- minimumFractionDigits: 2,
2264
- maximumFractionDigits: 2
2265
- };
2266
- const formatter = new Intl.NumberFormat(locale, {
2267
- style: "currency",
2268
- ...defaultOptions,
2269
- ...options
2270
- });
2271
- return formatter.format(value);
2272
- };
2273
- const getFormattedDate = (datetime, timeZone) => {
2274
- if (timeZone) return moment_timezone__WEBPACK_IMPORTED_MODULE_0___default().tz(datetime * _constants__WEBPACK_IMPORTED_MODULE_2__.MILLISEC_TO_SEC, timeZone).format("MMMM DD, YYYY");
2275
- return moment_timezone__WEBPACK_IMPORTED_MODULE_0___default().unix(datetime).format("MMMM DD, YYYY");
2276
- };
2277
- const getSummitFormattedDate = summit => {
2278
- if (!summit) return null;
2279
- const startDay = moment_timezone__WEBPACK_IMPORTED_MODULE_0___default()(summit.start_date * _constants__WEBPACK_IMPORTED_MODULE_2__.MILLISEC_TO_SEC).tz(summit.time_zone_id);
2280
- const endDay = moment_timezone__WEBPACK_IMPORTED_MODULE_0___default()(summit.end_date * _constants__WEBPACK_IMPORTED_MODULE_2__.MILLISEC_TO_SEC).tz(summit.time_zone_id);
2281
- const days = endDay.diff(startDay, "days");
2282
- let formatStartDate = "MMMM DD, YYYY";
2283
- let formatEndDate = "MMMM DD, YYYY";
2284
- if (startDay.year() === endDay.year()) formatStartDate = "MMMM DD";
2285
- if (startDay.month() === endDay.month()) formatEndDate = "DD, YYYY";
2286
- const startDate = startDay.format(formatStartDate);
2287
- const endDate = endDay.format(formatEndDate);
2288
- if (days > _constants__WEBPACK_IMPORTED_MODULE_2__.ONE_DAY) return `${startDate} - ${endDate}`;
2289
- return startDate;
2290
- };
2291
- const calculateOrderTotals = _ref2 => {
2292
- let {
2293
- order,
2294
- summit,
2295
- tickets
2296
- } = _ref2;
2297
- if (!order || !summit || !tickets) return {};
2298
- const {
2299
- refunded_amount,
2300
- discount_amount,
2301
- taxes_amount,
2302
- amount
2303
- } = order;
2304
- const {
2305
- ticket_types
2306
- } = summit;
2307
- const ticketSummary = [];
2308
- let purchaseTicketTotal = 0;
2309
- const currencyObject = {
2310
- currency: order.currency
2311
- };
2312
- Object.keys(order.tickets_excerpt_by_ticket_type).map(ticket => {
2313
- const ticketType = ticket_types.find(tt => tt.name === ticket);
2314
- ticketSummary.push({
2315
- ticket_type_id: ticketType.id,
2316
- ticket_type: ticketType,
2317
- name: ticket,
2318
- qty: order.tickets_excerpt_by_ticket_type[ticket]
2319
- });
2320
- purchaseTicketTotal += ticketType.cost * order.tickets_excerpt_by_ticket_type[ticket];
2321
- return ticketSummary;
2322
- });
2323
- const purchaseTotal = formatCurrency(purchaseTicketTotal, currencyObject);
2324
- const discountTotal = formatCurrency(discount_amount, currencyObject);
2325
- const refundTotal = formatCurrency(refunded_amount, currencyObject);
2326
- const taxesTotal = formatCurrency(taxes_amount, currencyObject);
2327
- const amountTotal = Object.prototype.hasOwnProperty.call(order, "amount") ? formatCurrency(amount, currencyObject) : formatCurrency(purchaseTotal, currencyObject);
2328
- return {
2329
- discountTotal,
2330
- refundTotal,
2331
- taxesTotal,
2332
- amountTotal,
2333
- ticketSummary
2334
- };
2335
- };
2336
- const getOrderTickets = (memberOrders, orderId) => {
2337
- const orders = memberOrders.filter(o => o.id === orderId);
2338
- return orders[0]?.memberTickets;
2339
- };
2340
- const getEpochLowerUpperInSeconds = ts => {
2341
- const lower = ts.setHours(0, 0, 0, 0) / _constants__WEBPACK_IMPORTED_MODULE_2__.MILLISEC_TO_SEC;
2342
- const upper = ts.setHours(_constants__WEBPACK_IMPORTED_MODULE_2__.LAST_HOUR_OF_24_HOUR, _constants__WEBPACK_IMPORTED_MODULE_2__.LAST_MINUTE_OF_HOUR, 0, 0) / _constants__WEBPACK_IMPORTED_MODULE_2__.MILLISEC_TO_SEC;
2343
- return {
2344
- lower,
2345
- upper
2346
- };
2347
- };
2348
- const getSummitReassignDate = summit => {
2349
- if (!summit) return null;
2350
- return summit.reassign_ticket_till_date && summit.reassign_ticket_till_date < summit.end_date ? summit.reassign_ticket_till_date : summit.end_date;
2351
- };
2352
- const defaultCurrentTime = () => Math.round(+new Date() / _constants__WEBPACK_IMPORTED_MODULE_2__.MILLISEC_TO_SEC);
2353
- const getNow = () => (dispatch, getState) => {
2354
- const {
2355
- timerState
2356
- } = getState();
2357
- return timerState?.nowUtc == null ? defaultCurrentTime() : timerState?.nowUtc;
2358
- };
2359
- const useNow = () => {
2360
- const dispatch = (0,react_redux__WEBPACK_IMPORTED_MODULE_1__.useDispatch)();
2361
- return dispatch(getNow());
2362
- };
2363
-
2364
- /***/ }),
2365
-
2366
- /***/ "./src/components/FilterSortSearch/styles.module.scss":
2367
- /*!************************************************************!*\
2368
- !*** ./src/components/FilterSortSearch/styles.module.scss ***!
2369
- \************************************************************/
2370
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2371
-
2372
- __webpack_require__.r(__webpack_exports__);
2373
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
2374
- /* harmony export */ "MuiOutlinedInput-notchedOutline": () => (/* binding */ _1),
2375
- /* harmony export */ "MuiPickersCalendarHeader-labelContainer": () => (/* binding */ _2),
2376
- /* harmony export */ calendarDisplay: () => (/* binding */ _3),
2377
- /* harmony export */ container: () => (/* binding */ _4),
2378
- /* harmony export */ datePickerContainer: () => (/* binding */ _5),
2379
- /* harmony export */ datepickerClose: () => (/* binding */ _6),
2380
- /* harmony export */ filterContainer: () => (/* binding */ _7),
2381
- /* harmony export */ filterDateLabel: () => (/* binding */ _8),
2382
- /* harmony export */ filterIcon: () => (/* binding */ _9),
2383
- /* harmony export */ filterLabel: () => (/* binding */ _a),
2384
- /* harmony export */ filterListContainer: () => (/* binding */ _b),
2385
- /* harmony export */ filterNumActive: () => (/* binding */ _c),
2386
- /* harmony export */ filterSortContainer: () => (/* binding */ _d),
2387
- /* harmony export */ label: () => (/* binding */ _e),
2388
- /* harmony export */ showDatePicker: () => (/* binding */ _f),
2389
- /* harmony export */ sortContainer: () => (/* binding */ _10),
2390
- /* harmony export */ sortIcon: () => (/* binding */ _11),
2391
- /* harmony export */ sortLabel: () => (/* binding */ _12),
2392
- /* harmony export */ sortListContainer: () => (/* binding */ _13)
2393
- /* harmony export */ });
2394
- // extracted by mini-css-extract-plugin
2395
- var _1 = "MuiOutlinedInput-notchedOutline___RoimR";
2396
- var _2 = "MuiPickersCalendarHeader-labelContainer___ooI0V";
2397
- var _3 = "calendarDisplay___im_jh";
2398
- var _4 = "container___N3Y4X";
2399
- var _5 = "datePickerContainer___JW2lO";
2400
- var _6 = "datepickerClose___V9gHC";
2401
- var _7 = "filterContainer___rGpYV";
2402
- var _8 = "filterDateLabel___ifD4p";
2403
- var _9 = "filterIcon___l21KI";
2404
- var _a = "filterLabel____P0wn";
2405
- var _b = "filterListContainer___VmdGq";
2406
- var _c = "filterNumActive___VuHCJ";
2407
- var _d = "filterSortContainer___arBvQ";
2408
- var _e = "label___yNFyj";
2409
- var _f = "showDatePicker___UpQbp";
2410
- var _10 = "sortContainer___lRsjU";
2411
- var _11 = "sortIcon___fVV5K";
2412
- var _12 = "sortLabel___UqLTC";
2413
- var _13 = "sortListContainer___cmnBD";
2414
-
2415
-
2416
-
2417
- /***/ }),
2418
-
2419
- /***/ "./src/components/OrderSummary/styles.module.scss":
2420
- /*!********************************************************!*\
2421
- !*** ./src/components/OrderSummary/styles.module.scss ***!
2422
- \********************************************************/
2423
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2424
-
2425
- __webpack_require__.r(__webpack_exports__);
2426
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
2427
- /* harmony export */ orderDetailsMmount: () => (/* binding */ _1),
2428
- /* harmony export */ orderDetailsTickets: () => (/* binding */ _2),
2429
- /* harmony export */ orderOrderNumber: () => (/* binding */ _3),
2430
- /* harmony export */ orderSummaryButton: () => (/* binding */ _4),
2431
- /* harmony export */ orderSummaryPurchasedInfo: () => (/* binding */ _5),
2432
- /* harmony export */ orderSummaryPurchasedNumber: () => (/* binding */ _6),
2433
- /* harmony export */ orderSummaryTable: () => (/* binding */ _7),
2434
- /* harmony export */ orderSummaryWrapper: () => (/* binding */ _8)
2435
- /* harmony export */ });
2436
- // extracted by mini-css-extract-plugin
2437
- var _1 = "orderDetailsMmount___r3kRA";
2438
- var _2 = "orderDetailsTickets___m4IjK";
2439
- var _3 = "orderOrderNumber___RqCbC";
2440
- var _4 = "orderSummaryButton___uxjht";
2441
- var _5 = "orderSummaryPurchasedInfo____RBXE";
2442
- var _6 = "orderSummaryPurchasedNumber___pqy_I";
2443
- var _7 = "orderSummaryTable___YDnxV";
2444
- var _8 = "orderSummaryWrapper___RwIER";
2445
-
2446
-
2447
-
2448
- /***/ }),
2449
-
2450
- /***/ "./src/components/OrdersList/styles.module.scss":
2451
- /*!******************************************************!*\
2452
- !*** ./src/components/OrdersList/styles.module.scss ***!
2453
- \******************************************************/
2454
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2455
-
2456
- __webpack_require__.r(__webpack_exports__);
2457
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
2458
- /* harmony export */ assignTicketButton: () => (/* binding */ _1),
2459
- /* harmony export */ blackButton: () => (/* binding */ _2),
2460
- /* harmony export */ copyIcon: () => (/* binding */ _3),
2461
- /* harmony export */ detailsRequiredLabel: () => (/* binding */ _4),
2462
- /* harmony export */ display_none: () => (/* binding */ _5),
2463
- /* harmony export */ label: () => (/* binding */ _6),
2464
- /* harmony export */ orderTicketContainer: () => (/* binding */ _7),
2465
- /* harmony export */ orderTicketInfo: () => (/* binding */ _8),
2466
- /* harmony export */ orderTicketInfoContainer: () => (/* binding */ _9),
2467
- /* harmony export */ orderTicketNoContainer: () => (/* binding */ _a),
2468
- /* harmony export */ orderTicketNumberTruncated: () => (/* binding */ _b),
2469
- /* harmony export */ orderWrapper: () => (/* binding */ _c),
2470
- /* harmony export */ reassignButton: () => (/* binding */ _d),
2471
- /* harmony export */ tabButtons: () => (/* binding */ _e),
2472
- /* harmony export */ ticketActionButtons: () => (/* binding */ _f),
2473
- /* harmony export */ ticketListContainer: () => (/* binding */ _10),
2474
- /* harmony export */ ticketNo: () => (/* binding */ _11),
2475
- /* harmony export */ ticketOwnerEmail: () => (/* binding */ _12),
2476
- /* harmony export */ ticketTicketType: () => (/* binding */ _13),
2477
- /* harmony export */ viewFinishTicketButton: () => (/* binding */ _14),
2478
- /* harmony export */ viewMoreButton: () => (/* binding */ _15)
2479
- /* harmony export */ });
2480
- // extracted by mini-css-extract-plugin
2481
- var _1 = "assignTicketButton___zzLsc";
2482
- var _2 = "blackButton___l9hj9";
2483
- var _3 = "copyIcon___NkHGO";
2484
- var _4 = "detailsRequiredLabel___Y2kor";
2485
- var _5 = "display_none___CqpL3";
2486
- var _6 = "label___zXDWz";
2487
- var _7 = "orderTicketContainer___ZJLzk";
2488
- var _8 = "orderTicketInfo___gemqB";
2489
- var _9 = "orderTicketInfoContainer____p66V";
2490
- var _a = "orderTicketNoContainer___vqohN";
2491
- var _b = "orderTicketNumberTruncated___HXmdw";
2492
- var _c = "orderWrapper___yDBAo";
2493
- var _d = "reassignButton___RojM5";
2494
- var _e = "tabButtons___xTyJA";
2495
- var _f = "ticketActionButtons___rpSMQ";
2496
- var _10 = "ticketListContainer___cfmrr";
2497
- var _11 = "ticketNo___a2iM9";
2498
- var _12 = "ticketOwnerEmail___Zt4OE";
2499
- var _13 = "ticketTicketType___Zq_f0";
2500
- var _14 = "viewFinishTicketButton___HF6Im";
2501
- var _15 = "viewMoreButton___K_1zT";
2502
-
2503
-
2504
-
2505
- /***/ }),
2506
-
2507
- /***/ "./src/components/TicketStatus/styles.module.scss":
2508
- /*!********************************************************!*\
2509
- !*** ./src/components/TicketStatus/styles.module.scss ***!
2510
- \********************************************************/
2511
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2512
-
2513
- __webpack_require__.r(__webpack_exports__);
2514
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
2515
- /* harmony export */ buttonCancelled: () => (/* binding */ _1),
2516
- /* harmony export */ buttonComplete: () => (/* binding */ _2),
2517
- /* harmony export */ buttonIncomplete: () => (/* binding */ _3),
2518
- /* harmony export */ buttonPill: () => (/* binding */ _4),
2519
- /* harmony export */ buttonRefundRequested: () => (/* binding */ _5),
2520
- /* harmony export */ buttonUnassigned: () => (/* binding */ _6),
2521
- /* harmony export */ ticketStatusContainer: () => (/* binding */ _7)
2522
- /* harmony export */ });
2523
- // extracted by mini-css-extract-plugin
2524
- var _1 = "buttonCancelled___ErlDZ";
2525
- var _2 = "buttonComplete___llWkZ";
2526
- var _3 = "buttonIncomplete___TolHg";
2527
- var _4 = "buttonPill___zq2tc";
2528
- var _5 = "buttonRefundRequested___pWt30";
2529
- var _6 = "buttonUnassigned___YDd8X";
2530
- var _7 = "ticketStatusContainer___qj6fb";
2531
-
2532
-
2533
-
2534
- /***/ }),
2535
-
2536
- /***/ "./src/components/styles.module.scss":
2537
- /*!*******************************************!*\
2538
- !*** ./src/components/styles.module.scss ***!
2539
- \*******************************************/
2540
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2541
-
2542
- __webpack_require__.r(__webpack_exports__);
2543
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
2544
- /* harmony export */ noOrdersFound: () => (/* binding */ _1),
2545
- /* harmony export */ summitTitleDate: () => (/* binding */ _2),
2546
- /* harmony export */ widgetHeader: () => (/* binding */ _3)
2547
- /* harmony export */ });
2548
- // extracted by mini-css-extract-plugin
2549
- var _1 = "noOrdersFound___Aog2p";
2550
- var _2 = "summitTitleDate___Z19Pm";
2551
- var _3 = "widgetHeader___yY5ge";
2552
-
2553
-
2554
-
2555
- /***/ }),
2556
-
2557
- /***/ "@mui/icons-material/Close":
2558
- /*!********************************************!*\
2559
- !*** external "@mui/icons-material/Close" ***!
2560
- \********************************************/
2561
- /***/ ((module) => {
2562
-
2563
- module.exports = require("@mui/icons-material/Close");
2564
-
2565
- /***/ }),
2566
-
2567
- /***/ "@mui/icons-material/ContentCopy":
2568
- /*!**************************************************!*\
2569
- !*** external "@mui/icons-material/ContentCopy" ***!
2570
- \**************************************************/
2571
- /***/ ((module) => {
2572
-
2573
- module.exports = require("@mui/icons-material/ContentCopy");
2574
-
2575
- /***/ }),
2576
-
2577
- /***/ "@mui/icons-material/Error":
2578
- /*!********************************************!*\
2579
- !*** external "@mui/icons-material/Error" ***!
2580
- \********************************************/
2581
- /***/ ((module) => {
2582
-
2583
- module.exports = require("@mui/icons-material/Error");
2584
-
2585
- /***/ }),
2586
-
2587
- /***/ "@mui/icons-material/FilterList":
2588
- /*!*************************************************!*\
2589
- !*** external "@mui/icons-material/FilterList" ***!
2590
- \*************************************************/
2591
- /***/ ((module) => {
2592
-
2593
- module.exports = require("@mui/icons-material/FilterList");
2594
-
2595
- /***/ }),
2596
-
2597
- /***/ "@mui/icons-material/ImportExport":
2598
- /*!***************************************************!*\
2599
- !*** external "@mui/icons-material/ImportExport" ***!
2600
- \***************************************************/
2601
- /***/ ((module) => {
2602
-
2603
- module.exports = require("@mui/icons-material/ImportExport");
2604
-
2605
- /***/ }),
2606
-
2607
- /***/ "@mui/icons-material/Search":
2608
- /*!*********************************************!*\
2609
- !*** external "@mui/icons-material/Search" ***!
2610
- \*********************************************/
2611
- /***/ ((module) => {
2612
-
2613
- module.exports = require("@mui/icons-material/Search");
2614
-
2615
- /***/ }),
2616
-
2617
- /***/ "@mui/material":
2618
- /*!********************************!*\
2619
- !*** external "@mui/material" ***!
2620
- \********************************/
2621
- /***/ ((module) => {
2622
-
2623
- module.exports = require("@mui/material");
2624
-
2625
- /***/ }),
2626
-
2627
- /***/ "@mui/material/Divider":
2628
- /*!****************************************!*\
2629
- !*** external "@mui/material/Divider" ***!
2630
- \****************************************/
2631
- /***/ ((module) => {
2632
-
2633
- module.exports = require("@mui/material/Divider");
2634
-
2635
- /***/ }),
2636
-
2637
- /***/ "@mui/material/InputBase":
2638
- /*!******************************************!*\
2639
- !*** external "@mui/material/InputBase" ***!
2640
- \******************************************/
2641
- /***/ ((module) => {
2642
-
2643
- module.exports = require("@mui/material/InputBase");
2644
-
2645
- /***/ }),
2646
-
2647
- /***/ "@mui/material/Stack":
2648
- /*!**************************************!*\
2649
- !*** external "@mui/material/Stack" ***!
2650
- \**************************************/
2651
- /***/ ((module) => {
2652
-
2653
- module.exports = require("@mui/material/Stack");
2654
-
2655
- /***/ }),
2656
-
2657
- /***/ "@mui/material/Tab":
2658
- /*!************************************!*\
2659
- !*** external "@mui/material/Tab" ***!
2660
- \************************************/
2661
- /***/ ((module) => {
2662
-
2663
- module.exports = require("@mui/material/Tab");
2664
-
2665
- /***/ }),
2666
-
2667
- /***/ "@mui/material/Tabs":
2668
- /*!*************************************!*\
2669
- !*** external "@mui/material/Tabs" ***!
2670
- \*************************************/
2671
- /***/ ((module) => {
2672
-
2673
- module.exports = require("@mui/material/Tabs");
2674
-
2675
- /***/ }),
2676
-
2677
- /***/ "@mui/material/styles":
2678
- /*!***************************************!*\
2679
- !*** external "@mui/material/styles" ***!
2680
- \***************************************/
2681
- /***/ ((module) => {
2682
-
2683
- module.exports = require("@mui/material/styles");
2684
-
2685
- /***/ }),
2686
-
2687
- /***/ "@mui/material/useMediaQuery":
2688
- /*!**********************************************!*\
2689
- !*** external "@mui/material/useMediaQuery" ***!
2690
- \**********************************************/
2691
- /***/ ((module) => {
2692
-
2693
- module.exports = require("@mui/material/useMediaQuery");
2694
-
2695
- /***/ }),
2696
-
2697
- /***/ "@mui/x-date-pickers/AdapterDayjs":
2698
- /*!***************************************************!*\
2699
- !*** external "@mui/x-date-pickers/AdapterDayjs" ***!
2700
- \***************************************************/
2701
- /***/ ((module) => {
2702
-
2703
- module.exports = require("@mui/x-date-pickers/AdapterDayjs");
2704
-
2705
- /***/ }),
2706
-
2707
- /***/ "@mui/x-date-pickers/DatePicker":
2708
- /*!*************************************************!*\
2709
- !*** external "@mui/x-date-pickers/DatePicker" ***!
2710
- \*************************************************/
2711
- /***/ ((module) => {
2712
-
2713
- module.exports = require("@mui/x-date-pickers/DatePicker");
2714
-
2715
- /***/ }),
2716
-
2717
- /***/ "@mui/x-date-pickers/LocalizationProvider":
2718
- /*!***********************************************************!*\
2719
- !*** external "@mui/x-date-pickers/LocalizationProvider" ***!
2720
- \***********************************************************/
2721
- /***/ ((module) => {
2722
-
2723
- module.exports = require("@mui/x-date-pickers/LocalizationProvider");
2724
-
2725
- /***/ }),
2726
-
2727
- /***/ "@reduxjs/toolkit":
2728
- /*!***********************************!*\
2729
- !*** external "@reduxjs/toolkit" ***!
2730
- \***********************************/
2731
- /***/ ((module) => {
2732
-
2733
- module.exports = require("@reduxjs/toolkit");
2734
-
2735
- /***/ }),
2736
-
2737
- /***/ "@sentry/react":
2738
- /*!********************************!*\
2739
- !*** external "@sentry/react" ***!
2740
- \********************************/
2741
- /***/ ((module) => {
2742
-
2743
- module.exports = require("@sentry/react");
2744
-
2745
- /***/ }),
2746
-
2747
- /***/ "dayjs":
2748
- /*!************************!*\
2749
- !*** external "dayjs" ***!
2750
- \************************/
2751
- /***/ ((module) => {
2752
-
2753
- module.exports = require("dayjs");
2754
-
2755
- /***/ }),
2756
-
2757
- /***/ "moment-timezone":
2758
- /*!**********************************!*\
2759
- !*** external "moment-timezone" ***!
2760
- \**********************************/
2761
- /***/ ((module) => {
2762
-
2763
- module.exports = require("moment-timezone");
2764
-
2765
- /***/ }),
2766
-
2767
- /***/ "openstack-uicore-foundation/lib/security/actions":
2768
- /*!*******************************************************************!*\
2769
- !*** external "openstack-uicore-foundation/lib/security/actions" ***!
2770
- \*******************************************************************/
2771
- /***/ ((module) => {
2772
-
2773
- module.exports = require("openstack-uicore-foundation/lib/security/actions");
2774
-
2775
- /***/ }),
2776
-
2777
- /***/ "openstack-uicore-foundation/lib/security/methods":
2778
- /*!*******************************************************************!*\
2779
- !*** external "openstack-uicore-foundation/lib/security/methods" ***!
2780
- \*******************************************************************/
2781
- /***/ ((module) => {
2782
-
2783
- module.exports = require("openstack-uicore-foundation/lib/security/methods");
2784
-
2785
- /***/ }),
2786
-
2787
- /***/ "openstack-uicore-foundation/lib/utils/actions":
2788
- /*!****************************************************************!*\
2789
- !*** external "openstack-uicore-foundation/lib/utils/actions" ***!
2790
- \****************************************************************/
2791
- /***/ ((module) => {
2792
-
2793
- module.exports = require("openstack-uicore-foundation/lib/utils/actions");
2794
-
2795
- /***/ }),
2796
-
2797
- /***/ "prop-types":
2798
- /*!*****************************!*\
2799
- !*** external "prop-types" ***!
2800
- \*****************************/
2801
- /***/ ((module) => {
2802
-
2803
- module.exports = require("prop-types");
2804
-
2805
- /***/ }),
2806
-
2807
- /***/ "react":
2808
- /*!************************!*\
2809
- !*** external "react" ***!
2810
- \************************/
2811
- /***/ ((module) => {
2812
-
2813
- module.exports = require("react");
2814
-
2815
- /***/ }),
2816
-
2817
- /***/ "react-i18next":
2818
- /*!********************************!*\
2819
- !*** external "react-i18next" ***!
2820
- \********************************/
2821
- /***/ ((module) => {
2822
-
2823
- module.exports = require("react-i18next");
2824
-
2825
- /***/ }),
2826
-
2827
- /***/ "react-infinite-scroll-component":
2828
- /*!**************************************************!*\
2829
- !*** external "react-infinite-scroll-component" ***!
2830
- \**************************************************/
2831
- /***/ ((module) => {
2832
-
2833
- module.exports = require("react-infinite-scroll-component");
2834
-
2835
- /***/ }),
2836
-
2837
- /***/ "react-redux":
2838
- /*!******************************!*\
2839
- !*** external "react-redux" ***!
2840
- \******************************/
2841
- /***/ ((module) => {
2842
-
2843
- module.exports = require("react-redux");
2844
-
2845
- /***/ }),
2846
-
2847
- /***/ "react/jsx-runtime":
2848
- /*!************************************!*\
2849
- !*** external "react/jsx-runtime" ***!
2850
- \************************************/
2851
- /***/ ((module) => {
2852
-
2853
- module.exports = require("react/jsx-runtime");
2854
-
2855
- /***/ }),
2856
-
2857
- /***/ "redux":
2858
- /*!************************!*\
2859
- !*** external "redux" ***!
2860
- \************************/
2861
- /***/ ((module) => {
2862
-
2863
- module.exports = require("redux");
2864
-
2865
- /***/ }),
2866
-
2867
- /***/ "redux-persist":
2868
- /*!********************************!*\
2869
- !*** external "redux-persist" ***!
2870
- \********************************/
2871
- /***/ ((module) => {
2872
-
2873
- module.exports = require("redux-persist");
2874
-
2875
- /***/ }),
2876
-
2877
- /***/ "redux-persist/integration/react":
2878
- /*!**************************************************!*\
2879
- !*** external "redux-persist/integration/react" ***!
2880
- \**************************************************/
2881
- /***/ ((module) => {
2882
-
2883
- module.exports = require("redux-persist/integration/react");
2884
-
2885
- /***/ }),
2886
-
2887
- /***/ "redux-persist/lib/storage":
2888
- /*!********************************************!*\
2889
- !*** external "redux-persist/lib/storage" ***!
2890
- \********************************************/
2891
- /***/ ((module) => {
2892
-
2893
- module.exports = require("redux-persist/lib/storage");
2894
-
2895
- /***/ })
2896
-
2897
- /******/ });
2898
- /************************************************************************/
2899
- /******/ // The module cache
2900
- /******/ var __webpack_module_cache__ = {};
2901
- /******/
2902
- /******/ // The require function
2903
- /******/ function __webpack_require__(moduleId) {
2904
- /******/ // Check if module is in cache
2905
- /******/ var cachedModule = __webpack_module_cache__[moduleId];
2906
- /******/ if (cachedModule !== undefined) {
2907
- /******/ return cachedModule.exports;
2908
- /******/ }
2909
- /******/ // Create a new module (and put it into the cache)
2910
- /******/ var module = __webpack_module_cache__[moduleId] = {
2911
- /******/ // no module.id needed
2912
- /******/ // no module.loaded needed
2913
- /******/ exports: {}
2914
- /******/ };
2915
- /******/
2916
- /******/ // Execute the module function
2917
- /******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
2918
- /******/
2919
- /******/ // Return the exports of the module
2920
- /******/ return module.exports;
2921
- /******/ }
2922
- /******/
2923
- /************************************************************************/
2924
- /******/ /* webpack/runtime/compat get default export */
2925
- /******/ (() => {
2926
- /******/ // getDefaultExport function for compatibility with non-harmony modules
2927
- /******/ __webpack_require__.n = (module) => {
2928
- /******/ var getter = module && module.__esModule ?
2929
- /******/ () => (module['default']) :
2930
- /******/ () => (module);
2931
- /******/ __webpack_require__.d(getter, { a: getter });
2932
- /******/ return getter;
2933
- /******/ };
2934
- /******/ })();
2935
- /******/
2936
- /******/ /* webpack/runtime/define property getters */
2937
- /******/ (() => {
2938
- /******/ // define getter functions for harmony exports
2939
- /******/ __webpack_require__.d = (exports, definition) => {
2940
- /******/ for(var key in definition) {
2941
- /******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
2942
- /******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
2943
- /******/ }
2944
- /******/ }
2945
- /******/ };
2946
- /******/ })();
2947
- /******/
2948
- /******/ /* webpack/runtime/hasOwnProperty shorthand */
2949
- /******/ (() => {
2950
- /******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
2951
- /******/ })();
2952
- /******/
2953
- /******/ /* webpack/runtime/make namespace object */
2954
- /******/ (() => {
2955
- /******/ // define __esModule on exports
2956
- /******/ __webpack_require__.r = (exports) => {
2957
- /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
2958
- /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2959
- /******/ }
2960
- /******/ Object.defineProperty(exports, '__esModule', { value: true });
2961
- /******/ };
2962
- /******/ })();
2963
- /******/
2964
- /************************************************************************/
2965
- var __webpack_exports__ = {};
2966
- /*!*****************************************!*\
2967
- !*** ./src/my-orders-tickets-widget.js ***!
2968
- \*****************************************/
2969
- __webpack_require__.r(__webpack_exports__);
2970
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
2971
- /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
2972
- /* harmony export */ });
2973
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
2974
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
2975
- /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ "prop-types");
2976
- /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__);
2977
- /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react-redux */ "react-redux");
2978
- /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react_redux__WEBPACK_IMPORTED_MODULE_2__);
2979
- /* harmony import */ var redux_persist_integration_react__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! redux-persist/integration/react */ "redux-persist/integration/react");
2980
- /* harmony import */ var redux_persist_integration_react__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(redux_persist_integration_react__WEBPACK_IMPORTED_MODULE_3__);
2981
- /* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react-i18next */ "react-i18next");
2982
- /* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(react_i18next__WEBPACK_IMPORTED_MODULE_4__);
2983
- /* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @mui/material */ "@mui/material");
2984
- /* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_mui_material__WEBPACK_IMPORTED_MODULE_5__);
2985
- /* harmony import */ var _store__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./store */ "./src/store.js");
2986
- /* harmony import */ var _components_MyOrdersTickets__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./components/MyOrdersTickets */ "./src/components/MyOrdersTickets.js");
2987
- /* harmony import */ var _actions__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./actions */ "./src/actions.js");
2988
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");
2989
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__);
2990
- /**
2991
- * Copyright 2024 OpenStack Foundation
2992
- * Licensed under the Apache License, Version 2.0 (the "License");
2993
- * you may not use this file except in compliance with the License.
2994
- * You may obtain a copy of the License at
2995
- * http://www.apache.org/licenses/LICENSE-2.0
2996
- * Unless required by applicable law or agreed to in writing, software
2997
- * distributed under the License is distributed on an "AS IS" BASIS,
2998
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
2999
- * See the License for the specific language governing permissions and
3000
- * limitations under the License.
3001
- * */
3002
-
3003
-
3004
-
3005
-
3006
-
3007
-
3008
-
3009
-
3010
-
3011
-
3012
- function MyOrdersMyTicketsWidget(props) {
3013
- const {
3014
- loginUrl,
3015
- supportEmail,
3016
- summit,
3017
- apiBaseUrl,
3018
- user,
3019
- clientId
3020
- } = props;
3021
- const {
3022
- t
3023
- } = (0,react_i18next__WEBPACK_IMPORTED_MODULE_4__.useTranslation)();
3024
- const {
3025
- store,
3026
- persistor
3027
- } = (0,_store__WEBPACK_IMPORTED_MODULE_6__.useInitStore)({
3028
- loginUrl,
3029
- supportEmail,
3030
- summit,
3031
- user,
3032
- apiBaseUrl,
3033
- clientId
3034
- });
3035
- const handleBeforeLift = () => {
3036
- const params = new URLSearchParams(window.location.search);
3037
- const flush = params.has("flushState");
3038
- if (flush) store.dispatch({
3039
- type: _actions__WEBPACK_IMPORTED_MODULE_8__.RESET_STATE,
3040
- payload: null
3041
- });
3042
- };
3043
- (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {
3044
- store.dispatch((0,_actions__WEBPACK_IMPORTED_MODULE_8__.setSummit)(summit));
3045
- }, [summit]);
3046
- (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {
3047
- store.dispatch((0,_actions__WEBPACK_IMPORTED_MODULE_8__.setUser)(user));
3048
- }, [user]);
3049
- return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(react_redux__WEBPACK_IMPORTED_MODULE_2__.Provider, {
3050
- store: store,
3051
- children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxs)(redux_persist_integration_react__WEBPACK_IMPORTED_MODULE_3__.PersistGate, {
3052
- onBeforeLift: handleBeforeLift,
3053
- loading: null,
3054
- persistor: persistor,
3055
- children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_5__.Box, {
3056
- sx: {
3057
- padding: {
3058
- xs: 2,
3059
- md: 0,
3060
- lg: 0
3061
- }
3062
- },
3063
- children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)("h3", {
3064
- children: t("orders.title")
3065
- })
3066
- }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_components_MyOrdersTickets__WEBPACK_IMPORTED_MODULE_7__["default"], {
3067
- loginUrl: loginUrl,
3068
- supportEmail: supportEmail,
3069
- summit: summit,
3070
- apiBaseUrl: apiBaseUrl
3071
- })]
3072
- })
3073
- });
3074
- }
3075
- MyOrdersMyTicketsWidget.propTypes = {
3076
- loginUrl: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().string),
3077
- supportEmail: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().string),
3078
- summit: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().object),
3079
- apiBaseUrl: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().string),
3080
- user: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().object)
3081
- };
3082
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (MyOrdersMyTicketsWidget);
3083
- /******/ return __webpack_exports__;
3084
- /******/ })()
3085
- ;
3086
- });
3087
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,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QztFQUVWLG9CQUNFMEMsc0RBQUEsQ0FBQzRZLGlEQUFRO0lBQUN0RSxLQUFLLEVBQUVBLEtBQU07SUFBQXBULFFBQUEsZUFDckJoQix1REFBQSxDQUFDMlksd0VBQVc7TUFDVlUsWUFBWSxFQUFFUCxnQkFBaUI7TUFDL0J6RyxPQUFPLEVBQUUsSUFBSztNQUNkMEMsU0FBUyxFQUFFQSxTQUFVO01BQUEvVCxRQUFBLGdCQUVyQmxCLHNEQUFBLENBQUNxQyw4Q0FBRztRQUFDZixFQUFFLEVBQUU7VUFBRTBELE9BQU8sRUFBRTtZQUFFa0MsRUFBRSxFQUFFLENBQUM7WUFBRTBCLEVBQUUsRUFBRSxDQUFDO1lBQUVDLEVBQUUsRUFBRTtVQUFFO1FBQUUsQ0FBRTtRQUFBM0gsUUFBQSxlQUM1Q2xCLHNEQUFBO1VBQUFrQixRQUFBLEVBQUtWLENBQUMsQ0FBQyxjQUFjO1FBQUMsQ0FBSztNQUFDLENBQ3pCLENBQUMsZUFDTlIsc0RBQUEsQ0FBQzJILG1FQUFlO1FBQ2R5TSxRQUFRLEVBQUVBLFFBQVM7UUFDbkIyRSxZQUFZLEVBQUVBLFlBQWE7UUFDM0I5YyxNQUFNLEVBQUVBLE1BQU87UUFDZkYsVUFBVSxFQUFFQTtNQUFXLENBQ3hCLENBQUM7SUFBQSxDQUNTO0VBQUMsQ0FDTixDQUFDO0FBRWY7QUFFQStjLHVCQUF1QixDQUFDOVcsU0FBUyxHQUFHO0VBQ2xDb1MsUUFBUSxFQUFFL1UsMERBQWdCO0VBQzFCMFosWUFBWSxFQUFFMVosMERBQWdCO0VBQzlCcEQsTUFBTSxFQUFFb0QsMERBQWdCO0VBQ3hCdEQsVUFBVSxFQUFFc0QsMERBQWdCO0VBQzVCL0IsSUFBSSxFQUFFK0IsMERBQWdCdUw7QUFDeEIsQ0FBQztBQUVELGlFQUFla08sdUJBQXVCLEUiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvd2VicGFjay91bml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9hY3Rpb25zLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlclNvcnRTZWFyY2gvRGF0ZXBpY2tlci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJTb3J0U2VhcmNoL0ZpbHRlci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJTb3J0U2VhcmNoL1NlYXJjaC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJTb3J0U2VhcmNoL1NvcnQuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVyU29ydFNlYXJjaC9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9NeU9yZGVyc1RpY2tldHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJTdW1tYXJ5L09yZGVyU3VtbWFyeVRhYmxlLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyU3VtbWFyeS9SZWZ1bmRFbWFpbFN1cHBvcnQuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJTdW1tYXJ5L2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyc0xpc3QvT3JkZXJMaXN0SXRlbS5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlcnNMaXN0L09yZGVyTGlzdFRpY2tldHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJzTGlzdC9PcmRlck51bWJlci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlcnNMaXN0L09yZGVyc0xpc3REZXNrdG9wTW9iaWxlLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyc0xpc3QvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0U3RhdHVzL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9yZWR1Y2VyLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9zdG9yZS5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvdXRpbHMvYXV0aC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvdXRpbHMvY29uc3RhbnRzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy91dGlscy9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJTb3J0U2VhcmNoL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlclN1bW1hcnkvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyc0xpc3Qvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldFN0YXR1cy9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ2xvc2VcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL0NvbnRlbnRDb3B5XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbC9FcnJvclwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRmlsdGVyTGlzdFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvSW1wb3J0RXhwb3J0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbC9TZWFyY2hcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9EaXZpZGVyXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9JbnB1dEJhc2VcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL1N0YWNrXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9UYWJcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL1RhYnNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL3N0eWxlc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvdXNlTWVkaWFRdWVyeVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkveC1kYXRlLXBpY2tlcnMvQWRhcHRlckRheWpzXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS94LWRhdGUtcGlja2Vycy9EYXRlUGlja2VyXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS94LWRhdGUtcGlja2Vycy9Mb2NhbGl6YXRpb25Qcm92aWRlclwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkByZWR1eGpzL3Rvb2xraXRcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAc2VudHJ5L3JlYWN0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiZGF5anNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJtb21lbnQtdGltZXpvbmVcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3NlY3VyaXR5L2FjdGlvbnNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3NlY3VyaXR5L21ldGhvZHNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL2FjdGlvbnNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJwcm9wLXR5cGVzXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVhY3RcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWFjdC1pMThuZXh0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVhY3QtaW5maW5pdGUtc2Nyb2xsLWNvbXBvbmVudFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlYWN0LXJlZHV4XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVhY3QvanN4LXJ1bnRpbWVcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWR1eFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlZHV4LXBlcnNpc3RcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWR1eC1wZXJzaXN0L2ludGVncmF0aW9uL3JlYWN0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVkdXgtcGVyc2lzdC9saWIvc3RvcmFnZVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC93ZWJwYWNrL2Jvb3RzdHJhcCIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvd2VicGFjay9ydW50aW1lL2NvbXBhdCBnZXQgZGVmYXVsdCBleHBvcnQiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L3dlYnBhY2svcnVudGltZS9kZWZpbmUgcHJvcGVydHkgZ2V0dGVycyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvd2VicGFjay9ydW50aW1lL2hhc093blByb3BlcnR5IHNob3J0aGFuZCIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvd2VicGFjay9ydW50aW1lL21ha2UgbmFtZXNwYWNlIG9iamVjdCIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbiB3ZWJwYWNrVW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbihyb290LCBmYWN0b3J5KSB7XG5cdGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0Jylcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkoKTtcblx0ZWxzZSBpZih0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpXG5cdFx0ZGVmaW5lKFwibXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0XCIsIFtdLCBmYWN0b3J5KTtcblx0ZWxzZSBpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcpXG5cdFx0ZXhwb3J0c1tcIm15LW9yZGVycy10aWNrZXRzLXdpZGdldFwiXSA9IGZhY3RvcnkoKTtcblx0ZWxzZVxuXHRcdHJvb3RbXCJteS1vcmRlcnMtdGlja2V0cy13aWRnZXRcIl0gPSBmYWN0b3J5KCk7XG59KSh0aGlzLCAoKSA9PiB7XG5yZXR1cm4gIiwiaW1wb3J0IHsgZ2V0QWNjZXNzVG9rZW5TYWZlbHkgfSBmcm9tIFwiLi91dGlscy9hdXRoXCI7XG5pbXBvcnQge1xuICBhdXRoRXJyb3JIYW5kbGVyLFxuICBnZXRSZXF1ZXN0LFxuICBkZWxldGVSZXF1ZXN0LFxuICBjcmVhdGVBY3Rpb24sXG4gIHN0b3BMb2FkaW5nLFxuICBzdGFydExvYWRpbmcsXG4gIHB1dFJlcXVlc3Rcbn0gZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvYWN0aW9uc1wiO1xuaW1wb3J0IHtcbiAgRklSU1RfUEFHRSxcbiAgREVGQVVMVF9JVEVNU19QRVJfUEFHRSxcbiAgT05FX1BBR0VfTkVYVFxufSBmcm9tIFwiLi91dGlscy9jb25zdGFudHNcIjtcblxuZXhwb3J0IGNvbnN0IFJFU0VUX1NUQVRFID0gXCJSRVNFVF9TVEFURVwiO1xuZXhwb3J0IGNvbnN0IFJFU0VUX0ZJTFRFUiA9IFwiUkVTRVRfRklMVEVSXCI7XG5cbi8vIE9SREVSUyBDT05TVFNcbmV4cG9ydCBjb25zdCBHRVRfVVNFUl9PUkRFUlMgPSBcIkdFVF9PUkRFUlNcIjtcbmV4cG9ydCBjb25zdCBSRUZVTkRfT1JERVIgPSBcIlJFRlVORF9PUkRFUlwiO1xuZXhwb3J0IGNvbnN0IFNFVF9BQ1RJVkVfT1JERVJfSUQgPSBcIlNFVF9BQ1RJVkVfT1JERVJfSURcIjtcbmV4cG9ydCBjb25zdCBGSUxURVJfVVNFUl9PUkRFUlMgPSBcIkZJTFRFUl9VU0VSX09SREVSU1wiO1xuXG4vLyBUSUNLRVRTIENPTlNUU1xuZXhwb3J0IGNvbnN0IEdFVF9USUNLRVRTID0gXCJHRVRfVElDS0VUU1wiO1xuZXhwb3J0IGNvbnN0IEFTU0lHTl9USUNLRVQgPSBcIkFTU0lHTl9USUNLRVRcIjtcbmV4cG9ydCBjb25zdCBSRU1PVkVfVElDS0VUX0FUVEVOREVFID0gXCJSRU1PVkVfVElDS0VUX0FUVEVOREVFXCI7XG5leHBvcnQgY29uc3QgUkVGVU5EX1RJQ0tFVCA9IFwiUkVGVU5EX1RJQ0tFVFwiO1xuZXhwb3J0IGNvbnN0IFJFU0VORF9OT1RJRklDQVRJT04gPSBcIlJFU0VORF9OT1RJRklDQVRJT05cIjtcbmV4cG9ydCBjb25zdCBHRVRfVElDS0VUU19CWV9PUkRFUiA9IFwiR0VUX1RJQ0tFVFNfQllfT1JERVJcIjtcbmV4cG9ydCBjb25zdCBHRVRfVElDS0VUU19CWV9PUkRFUl9FUlJPUiA9IFwiR0VUX1RJQ0tFVFNfQllfT1JERVJfRVJST1JcIjtcbmV4cG9ydCBjb25zdCBHRVRfT1JERVJfVElDS0VUX0RFVEFJTFMgPSBcIkdFVF9PUkRFUl9USUNLRVRfREVUQUlMU1wiO1xuZXhwb3J0IGNvbnN0IEdFVF9USUNLRVRfREVUQUlMUyA9IFwiR0VUX1RJQ0tFVF9ERVRBSUxTXCI7XG5leHBvcnQgY29uc3QgVElDS0VUX0FUVEVOREVFX0tFWVMgPSB7XG4gIGVtYWlsOiBcImF0dGVuZGVlX2VtYWlsXCIsXG4gIGZpcnN0TmFtZTogXCJhdHRlbmRlZV9maXJzdF9uYW1lXCIsXG4gIGxhc3ROYW1lOiBcImF0dGVuZGVlX2xhc3RfbmFtZVwiLFxuICBjb21wYW55OiBcImF0dGVuZGVlX2NvbXBhbnlcIixcbiAgZGlzY2xhaW1lckFjY2VwdGVkOiBcImRpc2NsYWltZXJfYWNjZXB0ZWRcIixcbiAgZXh0cmFRdWVzdGlvbnM6IFwiZXh0cmFfcXVlc3Rpb25zXCJcbn07XG5cbi8vIFVTRVIgQ09OVFNcbmV4cG9ydCBjb25zdCBTVEFSVF9MT0FESU5HX0lEUF9QUk9GSUxFID0gXCJTVEFSVF9MT0FESU5HX0lEUF9QUk9GSUxFXCI7XG5leHBvcnQgY29uc3QgU1RPUF9MT0FESU5HX0lEUF9QUk9GSUxFID0gXCJTVE9QX0xPQURJTkdfSURQX1BST0ZJTEVcIjtcbmV4cG9ydCBjb25zdCBVUERBVEVfSURQX1BST0ZJTEUgPSBcIlVQREFURV9JRFBfUFJPRklMRVwiO1xuZXhwb3J0IGNvbnN0IFNFVF9VU0VSID0gXCJTRVRfVVNFUlwiO1xuXG4vLyBTVU1NSVQgQ09OU1RTXG5leHBvcnQgY29uc3QgU0VUX1NVTU1JVCA9IFwiU0VUX1NVTU1JVFwiO1xuZXhwb3J0IGNvbnN0IEdFVF9NQUlOX0VYVFJBX1FVRVNUSU9OUyA9IFwiR0VUX01BSU5fRVhUUkFfUVVFU1RJT05TXCI7XG5leHBvcnQgY29uc3QgUkVDRUlWRV9NQVJLRVRJTkdfU0VUVElOR1MgPSBcIlJFQ0VJVkVfTUFSS0VUSU5HX1NFVFRJTkdTXCI7XG5leHBvcnQgY29uc3QgQ0xFQVJfTUFSS0VUSU5HX1NFVFRJTkdTID0gXCJDTEVBUl9NQVJLRVRJTkdfU0VUVElOR1NcIjtcblxuZXhwb3J0IGNvbnN0IHJlc2V0U3RhdGUgPSAoKSA9PiAoZGlzcGF0Y2gpID0+IHtcbiAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKFJFU0VUX1NUQVRFKSh7fSkpO1xufTtcblxuZXhwb3J0IGNvbnN0IHJlc2V0RmlsdGVyID0gKCkgPT4gKGRpc3BhdGNoKSA9PiB7XG4gIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihSRVNFVF9GSUxURVIpKHt9KSk7XG59O1xuXG4vLyBGSUxURVIgLyBTT1JUIENPTlNUQU5UU1xuZXhwb3J0IGNvbnN0IEZJTFRFUl9WQVJfREFURSA9IFwiRklMVEVSX1ZBUl9EQVRFXCI7XG5leHBvcnQgY29uc3QgRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVIgPSBcIkZJTFRFUl9WQVJfT1JERVJfTlVNQkVSXCI7XG5cbi8vIEZJTFRFUi9TT1JUIEFDVElPTlNcbmV4cG9ydCBjb25zdCBwYXJzZUZpbHRlciA9IChmaWx0ZXJPYmopID0+IHtcbiAgY29uc3QgZmlsdGVyID0gW107XG4gIGlmIChmaWx0ZXJPYmoudHlwZSA9PT0gRklMVEVSX1ZBUl9EQVRFKSB7XG4gICAgZmlsdGVyLnB1c2goYCR7ZmlsdGVyT2JqLm5hbWV9W10ke2ZpbHRlck9iai5sb3dlcn0mJiR7ZmlsdGVyT2JqLnVwcGVyfWApO1xuICB9XG4gIGlmIChmaWx0ZXJPYmoudHlwZSA9PT0gRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVIpIHtcbiAgICBmaWx0ZXIucHVzaChgJHtmaWx0ZXJPYmoubmFtZX09QCR7ZmlsdGVyT2JqLnZhbHVlfWApO1xuICB9XG4gIHJldHVybiBmaWx0ZXI7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0U29ydERpcmVjdGlvbiA9IChkaXJlY3Rpb24pID0+XG4gIGRpcmVjdGlvbiA9PT0gXCJhc2NcIiA/IFwiK1wiIDogXCItXCI7XG5cbi8vIE9SREVSUyBBQ1RJT05TXG5leHBvcnQgY29uc3QgZ2V0VXNlck9yZGVycyA9XG4gICh7XG4gICAgcGFnZSA9IEZJUlNUX1BBR0UsXG4gICAgcGVyUGFnZSA9IERFRkFVTFRfSVRFTVNfUEVSX1BBR0UsXG4gICAgZmlsdGVyID0ge30sXG4gICAgc29ydCA9IHt9LFxuICAgIG5leHQgPSBmYWxzZVxuICB9KSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIHdpZGdldFN0YXRlOiB7IHN1bW1pdCB9XG4gICAgfSA9IGdldFN0YXRlKCk7XG5cbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KClcbiAgICAgIC5jYXRjaCgoKSA9PiBQcm9taXNlLnJlamVjdCgpKTtcblxuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgb3JkZXI6IFwiLWlkXCIsXG4gICAgICBcImZpbHRlcltdXCI6IFtcInN0YXR1cz09UGFpZFwiXSxcbiAgICAgIHJlbGF0aW9uczogXCJub25lXCIsXG4gICAgICBwYWdlOiBuZXh0ID8gcGFnZSArIE9ORV9QQUdFX05FWFQgOiBwYWdlLFxuICAgICAgcGVyX3BhZ2U6IHBlclBhZ2VcbiAgICB9O1xuXG4gICAgaWYgKE9iamVjdC5rZXlzKGZpbHRlcikubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgZmlsdGVycyA9IHBhcnNlRmlsdGVyKGZpbHRlcik7XG4gICAgICBwYXJhbXNbXCJmaWx0ZXJbXVwiXSA9IFsuLi5wYXJhbXNbXCJmaWx0ZXJbXVwiXSwgLi4uZmlsdGVyc107XG4gICAgfVxuICAgIGlmIChPYmplY3Qua2V5cyhzb3J0KS5sZW5ndGggPiAwKSB7XG4gICAgICBwYXJhbXMub3JkZXIgPSBgJHtnZXRTb3J0RGlyZWN0aW9uKHNvcnQuZGlyZWN0aW9uKX0ke3NvcnQubmFtZX1gO1xuICAgIH1cblxuICAgIHJldHVybiBnZXRSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihHRVRfVVNFUl9PUkRFUlMpLFxuICAgICAgYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvJHtzdW1taXQuaWR9L29yZGVycy9tZWAsXG4gICAgICBhdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKVxuICAgICAgLnRoZW4oKHBheWxvYWQpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgcmV0dXJuIGU7XG4gICAgICB9KTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IHNldEFjdGl2ZU9yZGVySWQgPSAob3JkZXJJZCkgPT4gYXN5bmMgKGRpc3BhdGNoKSA9PlxuICBkaXNwYXRjaChjcmVhdGVBY3Rpb24oU0VUX0FDVElWRV9PUkRFUl9JRCkob3JkZXJJZCkpO1xuXG4vLyBVU0VSIEFDVElPTlNcbmV4cG9ydCBjb25zdCBzZXRVc2VyID0gKHVzZXIpID0+IChkaXNwYXRjaCkgPT5cbiAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKFNFVF9VU0VSKSh1c2VyKSk7XG5cbmV4cG9ydCBjb25zdCB1cGRhdGVQcm9maWxlID1cbiAgKHByb2ZpbGUpID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgeyBpZHBCYXNlVXJsIH0pID0+IHtcblxuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKVxuICAgICAgLmNhdGNoKCgpID0+IFByb21pc2UucmVqZWN0KCkpO1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlblxuICAgIH07XG5cbiAgICBkaXNwYXRjaChjcmVhdGVBY3Rpb24oU1RBUlRfTE9BRElOR19JRFBfUFJPRklMRSkoKSk7XG5cbiAgICByZXR1cm4gcHV0UmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oVVBEQVRFX0lEUF9QUk9GSUxFKSxcbiAgICAgIC8vIFRPRE86IG5lZWQgSURQX0JBU0VfVVJMXG4gICAgICBgJHtpZHBCYXNlVXJsfS9hcGkvdjEvdXNlcnMvbWVgLFxuICAgICAgcHJvZmlsZSxcbiAgICAgIGF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpXG4gICAgICAudGhlbigocGF5bG9hZCkgPT4gcGF5bG9hZClcbiAgICAgIC5jYXRjaCgoKSA9PiBkaXNwYXRjaChjcmVhdGVBY3Rpb24oU1RPUF9MT0FESU5HX0lEUF9QUk9GSUxFKSgpKSk7XG4gIH07XG5cbi8vIFRJQ0tFVCBBQ1RJT05TXG5cbmV4cG9ydCBjb25zdCBnZXRVc2VyVGlja2V0cyA9XG4gICh7IHBhZ2UgPSBGSVJTVF9QQUdFLCBwZXJQYWdlID0gREVGQVVMVF9JVEVNU19QRVJfUEFHRSB9KSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIHVzZXJTdGF0ZTogeyB1c2VyUHJvZmlsZSB9LFxuICAgICAgc3VtbWl0XG4gICAgfSA9IGdldFN0YXRlKCk7XG4gICAgaWYgKCFzdW1taXQpIHJldHVybiBQcm9taXNlLnJlamVjdCgpO1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKVxuICAgICAgLmNhdGNoKCgpID0+IFByb21pc2UucmVqZWN0KCkpO1xuXG4gICAgaWYgKCF1c2VyUHJvZmlsZS5pZCkgcmV0dXJuIFByb21pc2UucmVqZWN0KCk7XG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgICBmaWx0ZXI6IFwic3RhdHVzPT1QYWlkXCIsXG4gICAgICBleHBhbmQ6IFwib3JkZXIsIG93bmVyLCB0aWNrZXRfdHlwZVwiLFxuICAgICAgb3JkZXI6IFwiLWlkXCIsXG4gICAgICBmaWVsZHM6XG4gICAgICAgIFwib3JkZXIuaWQsb3JkZXIub3duZXJfZmlyc3RfbmFtZSxvcmRlci5vd25lcl9sYXN0X25hbWUsb3JkZXIub3duZXJfZW1haWwsb3duZXIuZmlyc3RfbmFtZSxvd25lci5sYXN0X25hbWUsb3duZXIuc3RhdHVzXCIsXG4gICAgICByZWxhdGlvbnM6IFwibm9uZVwiLFxuICAgICAgcGFnZSxcbiAgICAgIHBlcl9wYWdlOiBwZXJQYWdlXG4gICAgfTtcbiAgICByZXR1cm4gZ2V0UmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oR0VUX1RJQ0tFVFMpLFxuICAgICAgYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvJHtzdW1taXQuaWR9L29yZGVycy9hbGwvdGlja2V0cy9tZWAsXG4gICAgICBhdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKVxuICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIHJldHVybiBlO1xuICAgICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCBnZXRUaWNrZXRzQnlPcmRlciA9XG4gICh7IG9yZGVySWQsIHBhZ2UgPSBGSVJTVF9QQUdFLCBwZXJQYWdlID0gREVGQVVMVF9JVEVNU19QRVJfUEFHRSB9KSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KClcbiAgICAgIC5jYXRjaCgoKSA9PiBQcm9taXNlLnJlamVjdCgpKTtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgICBleHBhbmQ6XG4gICAgICAgIFwicmVmdW5kX3JlcXVlc3RzLG93bmVyLG93bmVyLmV4dHJhX3F1ZXN0aW9ucyxiYWRnZSxiYWRnZS5mZWF0dXJlcyx0aWNrZXRfdHlwZVwiLFxuICAgICAgb3JkZXI6IFwiK2lkXCIsXG4gICAgICBwYWdlLFxuICAgICAgcGVyX3BhZ2U6IHBlclBhZ2VcbiAgICB9O1xuICAgIHJldHVybiBnZXRSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihHRVRfVElDS0VUU19CWV9PUkRFUiksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy9hbGwvb3JkZXJzLyR7b3JkZXJJZH0vdGlja2V0c2AsXG4gICAgICBhdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKVxuICAgICAgLnRoZW4oKHBheWxvYWQpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKEdFVF9USUNLRVRTX0JZX09SREVSX0VSUk9SKSk7XG4gICAgICAgIHJldHVybiBlO1xuICAgICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCByZXNlbmROb3RpZmljYXRpb24gPVxuICAodGlja2V0KSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG5cbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KClcbiAgICAgIC5jYXRjaCgoKSA9PiBQcm9taXNlLnJlamVjdCgpKTtcblxuICAgIGNvbnN0IHsgbWVzc2FnZSB9ID0gdGlja2V0O1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuXG4gICAgY29uc3Qgb3JkZXJJZCA9IHRpY2tldC5vcmRlciA/IHRpY2tldC5vcmRlci5pZCA6IHRpY2tldC5vcmRlcl9pZDtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW5cbiAgICB9O1xuXG4gICAgcmV0dXJuIHB1dFJlcXVlc3QoXG4gICAgICBudWxsLFxuICAgICAgY3JlYXRlQWN0aW9uKFJFU0VORF9OT1RJRklDQVRJT04pLFxuICAgICAgYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvYWxsL29yZGVycy8ke29yZGVySWR9L3RpY2tldHMvJHt0aWNrZXQuaWR9L2F0dGVuZGVlL3JlaW52aXRlYCxcbiAgICAgIHsgbWVzc2FnZSB9LFxuICAgICAgYXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaClcbiAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICByZXR1cm4gZTtcbiAgICAgIH0pO1xuICB9O1xuXG5leHBvcnQgY29uc3QgcmVmdW5kVGlja2V0ID1cbiAgKHsgdGlja2V0IH0pID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG5cbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KClcbiAgICAgIC5jYXRjaCgoKSA9PiBQcm9taXNlLnJlamVjdCgpKTtcblxuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcblxuICAgIGNvbnN0IHtcbiAgICAgIG9yZGVyU3RhdGU6IHsgY3VycmVudF9wYWdlOiBvcmRlclBhZ2UgfSxcbiAgICAgIHRpY2tldFN0YXRlOiB7IGN1cnJlbnRfcGFnZTogdGlja2V0UGFnZSB9XG4gICAgfSA9IGdldFN0YXRlKCk7XG5cbiAgICBjb25zdCBvcmRlcklkID0gdGlja2V0Lm9yZGVyID8gdGlja2V0Lm9yZGVyLmlkIDogdGlja2V0Lm9yZGVyX2lkO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlblxuICAgIH07XG5cbiAgICByZXR1cm4gZGVsZXRlUmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oUkVGVU5EX1RJQ0tFVCksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy9hbGwvb3JkZXJzLyR7b3JkZXJJZH0vdGlja2V0cy8ke3RpY2tldC5pZH0vcmVmdW5kYCxcbiAgICAgIHt9LFxuICAgICAgYXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaClcbiAgICAgIC50aGVuKChwYXlsb2FkKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuXG4gICAgICAgIGlmICh0aWNrZXQub3JkZXJfaWQpIHtcbiAgICAgICAgICBkaXNwYXRjaChnZXRVc2VyT3JkZXJzKHsgcGFnZTogb3JkZXJQYWdlIH0pKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBkaXNwYXRjaChnZXRVc2VyVGlja2V0cyh7IHBhZ2U6IHRpY2tldFBhZ2UgfSkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgdGhyb3cgZTtcbiAgICAgIH0pO1xuICB9O1xuXG4vLyBTVU1NSVQgQUNUSU9OU1xuZXhwb3J0IGNvbnN0IHNldFN1bW1pdCA9IChzdW1taXQpID0+IGFzeW5jIChkaXNwYXRjaCkgPT5cbiAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKFNFVF9TVU1NSVQpKHN1bW1pdCkpO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgU3RhY2sgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvU3RhY2tcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCBkYXlqcyBmcm9tIFwiZGF5anNcIjtcbmltcG9ydCB7IEFkYXB0ZXJEYXlqcyB9IGZyb20gXCJAbXVpL3gtZGF0ZS1waWNrZXJzL0FkYXB0ZXJEYXlqc1wiO1xuaW1wb3J0IHsgTG9jYWxpemF0aW9uUHJvdmlkZXIgfSBmcm9tIFwiQG11aS94LWRhdGUtcGlja2Vycy9Mb2NhbGl6YXRpb25Qcm92aWRlclwiO1xuaW1wb3J0IHsgRGF0ZVBpY2tlciB9IGZyb20gXCJAbXVpL3gtZGF0ZS1waWNrZXJzL0RhdGVQaWNrZXJcIjtcbmltcG9ydCBDbG9zZUljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ2xvc2VcIjtcbmltcG9ydCB7IEZJTFRFUl9WQVJfREFURSB9IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5pbXBvcnQgeyBnZXRFcG9jaExvd2VyVXBwZXJJblNlY29uZHMgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gQmFzaWNEYXRlUGlja2VyKHsgb25GaWx0ZXIsIG9uUmVzZXQgfSkge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IG5vdyA9IGRheWpzKCk7XG4gIGNvbnN0IFtkYXRlVmFsdWUsIHNldERhdGVWYWx1ZV0gPSB1c2VTdGF0ZShub3cpO1xuICBjb25zdCBvbkRhdGVDaGFuZ2UgPSAodmFsKSA9PiB7XG4gICAgc2V0RGF0ZVZhbHVlKHZhbCk7XG4gICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKHZhbC4kZCk7XG4gICAgY29uc3QgeyBsb3dlciwgdXBwZXIgfSA9IGdldEVwb2NoTG93ZXJVcHBlckluU2Vjb25kcyhkYXRlKTtcbiAgICBvbkZpbHRlcih7XG4gICAgICB0eXBlOiBGSUxURVJfVkFSX0RBVEUsXG4gICAgICBuYW1lOiBcImNyZWF0ZWRcIixcbiAgICAgIGRhdGUsXG4gICAgICBsb3dlcixcbiAgICAgIHVwcGVyXG4gICAgfSk7XG4gIH07XG4gIGNvbnN0IG9uUmVzZXRBY3Rpb24gPSAoKSA9PiB7XG4gICAgb25SZXNldCgpO1xuICAgIHNldERhdGVWYWx1ZShub3cpO1xuICB9O1xuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLmZpbHRlckRhdGVMYWJlbH0+e3QoXCJmaWx0ZXIucHVyY2hhc2VkX29uXCIpfTwvZGl2PlxuICAgICAgPFN0YWNrXG4gICAgICAgIGFsaWduSXRlbXM9XCJjZW50ZXJcIlxuICAgICAgICBkaXJlY3Rpb249XCJyb3dcIlxuICAgICAgICBzeD17eyBwdDogMiwgcGI6IDIgfX1cbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuZGF0ZVBpY2tlckNvbnRhaW5lcn1cbiAgICAgID5cbiAgICAgICAgPENsb3NlSWNvblxuICAgICAgICAgIGZvbnRTaXplPVwibGFyZ2VcIlxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmRhdGVwaWNrZXJDbG9zZX1cbiAgICAgICAgICBvbkNsaWNrPXtvblJlc2V0QWN0aW9ufVxuICAgICAgICAvPlxuICAgICAgICA8TG9jYWxpemF0aW9uUHJvdmlkZXIgZGF0ZUFkYXB0ZXI9e0FkYXB0ZXJEYXlqc30+XG4gICAgICAgICAgPERhdGVQaWNrZXJcbiAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNhbGVuZGFyRGlzcGxheX1cbiAgICAgICAgICAgIG9uQ2hhbmdlPXtvbkRhdGVDaGFuZ2V9XG4gICAgICAgICAgICB2YWx1ZT17ZGF0ZVZhbHVlfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvTG9jYWxpemF0aW9uUHJvdmlkZXI+XG4gICAgICA8L1N0YWNrPlxuICAgIDwvPlxuICApO1xufVxuXG5CYXNpY0RhdGVQaWNrZXIucHJvcFR5cGVzID0ge1xuICBvbkZpbHRlcjogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uUmVzZXQ6IFByb3BUeXBlcy5mdW5jXG59O1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlLCB1c2VSZWYsIHVzZUVmZmVjdCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IFN0YWNrIGZyb20gXCJAbXVpL21hdGVyaWFsL1N0YWNrXCI7XG5pbXBvcnQgRmlsdGVyTGlzdEljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRmlsdGVyTGlzdFwiO1xuaW1wb3J0IHsgQm94IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCBCYXNpY0RhdGVQaWNrZXIgZnJvbSBcIi4vRGF0ZXBpY2tlclwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5mdW5jdGlvbiBGaWx0ZXIoeyBvbkZpbHRlciwgb25SZXNldCB9KSB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgW3Nob3dGaWx0ZXJMaXN0LCBzZXRTaG93RmlsdGVyTGlzdF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtzaG93RGF0ZXBpY2tlciwgc2V0U2hvd0RhdGVwaWNrZXJdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbZmlsdGVyTnVtQWN0aXZlLCBzZXRGaWx0ZXJOdW1BY3RpdmVdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBmaWx0ZXJSZWYgPSB1c2VSZWYobnVsbCk7XG4gIGNvbnN0IGhhbmRsZUZpbHRlckNsaWNrT3V0c2lkZSA9IChldmVudCkgPT4ge1xuICAgIGlmIChmaWx0ZXJSZWYuY3VycmVudCAmJiAhZmlsdGVyUmVmLmN1cnJlbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkge1xuICAgICAgaWYgKHNob3dGaWx0ZXJMaXN0KSB7XG4gICAgICAgIHNldFNob3dGaWx0ZXJMaXN0KGZhbHNlKTtcbiAgICAgICAgc2V0U2hvd0RhdGVwaWNrZXIoZmFsc2UpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgaGFuZGxlRmlsdGVyQ2xpY2tPdXRzaWRlLCBmYWxzZSk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBoYW5kbGVGaWx0ZXJDbGlja091dHNpZGUsIGZhbHNlKTtcbiAgICB9O1xuICB9LCBbc2hvd0ZpbHRlckxpc3RdKTtcblxuICBjb25zdCB0b2dnbGUgPSAoKSA9PiB7XG4gICAgc2V0U2hvd0ZpbHRlckxpc3QoIXNob3dGaWx0ZXJMaXN0KTtcbiAgICBzZXRTaG93RGF0ZXBpY2tlcighc2hvd0RhdGVwaWNrZXIpO1xuICB9O1xuICByZXR1cm4gKFxuICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuZmlsdGVyQ29udGFpbmVyfSByZWY9e2ZpbHRlclJlZn0+XG4gICAgICA8U3RhY2tcbiAgICAgICAgYWxpZ25JdGVtcz1cImNlbnRlclwiXG4gICAgICAgIGRpcmVjdGlvbj1cInJvd1wiXG4gICAgICAgIHN4PXt7IHB0OiAyLCBwYjogMiB9fVxuICAgICAgICBvbkNsaWNrPXt0b2dnbGV9XG4gICAgICA+XG4gICAgICAgIDxGaWx0ZXJMaXN0SWNvbiBmb250U2l6ZT1cImxhcmdlXCIgY2xhc3NOYW1lPXtzdHlsZXMuZmlsdGVySWNvbn0gLz5cbiAgICAgICAgey8qKiBjdXJyZW50bHkganVzdCBzaG93aW5nIFwiMVwiIGJlY2F1c2Ugd2UncmUgY3VycmVudGx5IG9ubHkgZmlsdGVyaW5nIG9uZSBjcml0ZXJpYSAtIGNyZWF0ZWQgZGF0ZSAqL31cbiAgICAgICAge2ZpbHRlck51bUFjdGl2ZSAmJiA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLmZpbHRlck51bUFjdGl2ZX0+MTwvZGl2Pn1cbiAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXMuZmlsdGVyTGFiZWx9Pnt0KFwiZmlsdGVyLmZpbHRlclwiKX08L3NwYW4+XG4gICAgICA8L1N0YWNrPlxuICAgICAgPEJveFxuICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5maWx0ZXJMaXN0Q29udGFpbmVyfSAke3N0eWxlcy5jb250YWluZXJ9ICR7XG4gICAgICAgICAgc2hvd0ZpbHRlckxpc3QgPyBzdHlsZXMuc2hvd0RhdGVQaWNrZXIgOiBcIlwiXG4gICAgICAgIH1gfVxuICAgICAgPlxuICAgICAgICA8QmFzaWNEYXRlUGlja2VyXG4gICAgICAgICAgb25SZXNldD17KCkgPT4ge1xuICAgICAgICAgICAgb25SZXNldCgpO1xuICAgICAgICAgICAgc2V0RmlsdGVyTnVtQWN0aXZlKGZhbHNlKTtcbiAgICAgICAgICAgIHRvZ2dsZSgpO1xuICAgICAgICAgIH19XG4gICAgICAgICAgb25GaWx0ZXI9eyhmaWx0ZXIpID0+IHtcbiAgICAgICAgICAgIG9uRmlsdGVyKGZpbHRlcik7XG4gICAgICAgICAgICBzZXRGaWx0ZXJOdW1BY3RpdmUodHJ1ZSk7XG4gICAgICAgICAgfX1cbiAgICAgICAgLz5cbiAgICAgIDwvQm94PlxuICAgIDwvQm94PlxuICApO1xufVxuXG5GaWx0ZXIucHJvcFR5cGVzID0ge1xuICBvbkZpbHRlcjogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEZpbHRlcjtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgc3R5bGVkIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWwvc3R5bGVzXCI7XG5pbXBvcnQgU2VhcmNoSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9TZWFyY2hcIjtcbmltcG9ydCBDbG9zZUljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ2xvc2VcIjtcbmltcG9ydCBJbnB1dEJhc2UgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvSW5wdXRCYXNlXCI7XG5pbXBvcnQgeyBCb3ggfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVIgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuXG5jb25zdCBTZWFyY2hDb250YWluZXIgPSBzdHlsZWQoXCJkaXZcIikoKCkgPT4gKHtcbiAgcG9zaXRpb246IFwicmVsYXRpdmVcIixcbiAgbWFyZ2luUmlnaHQ6IFwiMFwiLFxuICBtYXJnaW5MZWZ0OiBcIjBcIixcbiAgd2lkdGg6IFwiMTAwJVwiLFxuICBkaXNwbGF5OiBcImJsb2NrXCJcbn0pKTtcbmNvbnN0IFNlYXJjaEljb25XcmFwcGVyID0gc3R5bGVkKFwiZGl2XCIpKCgpID0+ICh7XG4gIGhlaWdodDogXCIxMDAlXCIsXG4gIHBvc2l0aW9uOiBcImFic29sdXRlXCIsXG4gIGRpc3BsYXk6IFwiZmxleFwiLFxuICBhbGlnbkl0ZW1zOiBcImNlbnRlclwiLFxuICBqdXN0aWZ5Q29udGVudDogXCJjZW50ZXJcIlxufSkpO1xuY29uc3QgU3R5bGVkSW5wdXRCYXNlID0gc3R5bGVkKElucHV0QmFzZSkoKCkgPT4gKHtcbiAgY29sb3I6IFwiaW5oZXJpdFwiLFxuICBib3JkZXJCb3R0b206IFwiMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC40MilcIixcbiAgcGFkZGluZ0xlZnQ6IFwiMjVweFwiLFxuICBwYWRkaW5nUmlnaHQ6IFwiMjVweFwiLFxuICBmb250U2l6ZTogXCIxZW1cIlxufSkpO1xuY29uc3QgQ2xvc2VJY29uV3JhcHBlciA9IHN0eWxlZChDbG9zZUljb24pKCgpID0+ICh7XG4gIHBhZGRpbmc6IFwiMnB4XCIsXG4gIGZvbnRTaXplOiBcIjEuNWVtXCIsXG4gIGhlaWdodDogXCIxMDAlXCIsXG4gIHBvc2l0aW9uOiBcImFic29sdXRlXCIsXG4gIHRvcDogXCIwXCIsXG4gIHJpZ2h0OiBcIjBcIixcbiAgZGlzcGxheTogXCJmbGV4XCIsXG4gIGFsaWduSXRlbXM6IFwiY2VudGVyXCIsXG4gIGp1c3RpZnlDb250ZW50OiBcImNlbnRlclwiLFxuICBjdXJzb3I6IFwicG9pbnRlclwiLFxuICB6SW5kZXg6IFwiMTAwMFwiXG59KSk7XG5cbmZ1bmN0aW9uIFNlYXJjaCh7IG9uU2VhcmNoLCBvblJlc2V0IH0pIHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBbc2hvd0Nsb3NlLCBzZXRTaG93Q2xvc2VdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbc2VhcmNoVmFsdWUsIHNldFNlYXJjaFZhbHVlXSA9IHVzZVN0YXRlKFwiXCIpO1xuICBjb25zdCBvbktleURvd24gPSAoZXZlbnQpID0+IHtcbiAgICBjb25zdCB7XG4gICAgICBrZXksXG4gICAgICBuYXRpdmVFdmVudDoge1xuICAgICAgICB0YXJnZXQ6IHsgdmFsdWUgfVxuICAgICAgfVxuICAgIH0gPSBldmVudDtcbiAgICBpZiAoa2V5ID09PSBcIkVudGVyXCIpIHtcbiAgICAgIG9uU2VhcmNoKHtcbiAgICAgICAgdmFsdWUsXG4gICAgICAgIG5hbWU6IFwibnVtYmVyXCIsXG4gICAgICAgIHR5cGU6IEZJTFRFUl9WQVJfT1JERVJfTlVNQkVSXG4gICAgICB9KTtcbiAgICAgIHNldFNob3dDbG9zZSh0cnVlKTtcbiAgICB9XG4gIH07XG4gIGNvbnN0IHJlc2V0U2VhcmNoID0gKCkgPT4ge1xuICAgIHNldFNlYXJjaFZhbHVlKFwiXCIpO1xuICAgIHNldFNob3dDbG9zZShmYWxzZSk7XG4gICAgb25SZXNldCgpO1xuICB9O1xuICByZXR1cm4gKFxuICAgIDxCb3g+XG4gICAgICA8U2VhcmNoQ29udGFpbmVyPlxuICAgICAgICB7c2hvd0Nsb3NlICYmIChcbiAgICAgICAgICA8Q2xvc2VJY29uV3JhcHBlciBvbkNsaWNrPXtyZXNldFNlYXJjaH0+XG4gICAgICAgICAgICA8Q2xvc2VJY29uIC8+XG4gICAgICAgICAgPC9DbG9zZUljb25XcmFwcGVyPlxuICAgICAgICApfVxuICAgICAgICA8U2VhcmNoSWNvbldyYXBwZXI+XG4gICAgICAgICAgPFNlYXJjaEljb24gLz5cbiAgICAgICAgPC9TZWFyY2hJY29uV3JhcHBlcj5cbiAgICAgICAgPFN0eWxlZElucHV0QmFzZVxuICAgICAgICAgIHBsYWNlaG9sZGVyPXt0KFwib3JkZXJfc2VhcmNoLm9yZGVyX251bWJlclwiKX1cbiAgICAgICAgICBpbnB1dFByb3BzPXt7IFwiYXJpYS1sYWJlbFwiOiBcInNlYXJjaFwiIH19XG4gICAgICAgICAgdmFsdWU9e3NlYXJjaFZhbHVlfVxuICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gc2V0U2VhcmNoVmFsdWUoZS50YXJnZXQudmFsdWUpfVxuICAgICAgICAgIG9uS2V5RG93bj17b25LZXlEb3dufVxuICAgICAgICAvPlxuICAgICAgPC9TZWFyY2hDb250YWluZXI+XG4gICAgPC9Cb3g+XG4gICk7XG59XG5cblNlYXJjaC5wcm9wVHlwZXMgPSB7XG4gIG9uU2VhcmNoOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25SZXNldDogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFNlYXJjaDtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSwgdXNlUmVmLCB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBTdGFjayBmcm9tIFwiQG11aS9tYXRlcmlhbC9TdGFja1wiO1xuaW1wb3J0IHsgQm94LCBCdXR0b24gfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IEltcG9ydEV4cG9ydEljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvSW1wb3J0RXhwb3J0XCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmZ1bmN0aW9uIFNvcnQoeyBvblNvcnQgfSkge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IFtzaG93U29ydCwgc2V0U2hvd1NvcnRdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBzb3J0UmVmID0gdXNlUmVmKG51bGwpO1xuICBjb25zdCBoYW5kbGVTb3J0Q2xpY2tPdXRzaWRlID0gKGV2ZW50KSA9PiB7XG4gICAgaWYgKHNvcnRSZWYuY3VycmVudCAmJiAhc29ydFJlZi5jdXJyZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpIHtcbiAgICAgIHNldFNob3dTb3J0KGZhbHNlKTtcbiAgICB9XG4gIH07XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGhhbmRsZVNvcnRDbGlja091dHNpZGUsIGZhbHNlKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGhhbmRsZVNvcnRDbGlja091dHNpZGUsIGZhbHNlKTtcbiAgICB9O1xuICB9LCBbc2hvd1NvcnRdKTtcblxuICBjb25zdCB0b2dnbGUgPSAoKSA9PiB7XG4gICAgc2V0U2hvd1NvcnQoIXNob3dTb3J0KTtcbiAgfTtcbiAgcmV0dXJuIChcbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLnNvcnRDb250YWluZXJ9IG9uQ2xpY2s9e3RvZ2dsZX0+XG4gICAgICA8U3RhY2tcbiAgICAgICAgcmVmPXtzb3J0UmVmfVxuICAgICAgICBhbGlnbkl0ZW1zPVwiY2VudGVyXCJcbiAgICAgICAgZGlyZWN0aW9uPVwicm93XCJcbiAgICAgICAgc3g9e3sgcHQ6IDIsIHBiOiAyIH19XG4gICAgICA+XG4gICAgICAgIDxJbXBvcnRFeHBvcnRJY29uIGZvbnRTaXplPVwibGFyZ2VcIiBjbGFzc05hbWU9e3N0eWxlcy5zb3J0SWNvbn0gLz5cbiAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXMuc29ydExhYmVsfT57dChcInNvcnQuc29ydFwiKX08L3NwYW4+XG4gICAgICA8L1N0YWNrPlxuICAgICAge3Nob3dTb3J0ICYmIChcbiAgICAgICAgPEJveCBjbGFzc05hbWU9e2Ake3N0eWxlcy5zb3J0TGlzdENvbnRhaW5lcn0gJHtzdHlsZXMuY29udGFpbmVyfWB9PlxuICAgICAgICAgIDxCdXR0b24gY2xhc3NOYW1lPXtzdHlsZXMubGFiZWx9IG9uQ2xpY2s9eygpID0+IG9uU29ydChcImRlc2NcIil9PlxuICAgICAgICAgICAge3QoXCJzb3J0Lm5ld19maXJzdFwiKX1cbiAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICA8QnV0dG9uIGNsYXNzTmFtZT17c3R5bGVzLmxhYmVsfSBvbkNsaWNrPXsoKSA9PiBvblNvcnQoXCJhc2NcIil9PlxuICAgICAgICAgICAge3QoXCJzb3J0Lm9sZF9maXJzdFwiKX1cbiAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgPC9Cb3g+XG4gICAgICApfVxuICAgIDwvQm94PlxuICApO1xufVxuXG5leHBvcnQgZGVmYXVsdCBTb3J0O1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgR3JpZCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgRmlsdGVyIGZyb20gXCIuL0ZpbHRlclwiO1xuaW1wb3J0IFNvcnQgZnJvbSBcIi4vU29ydFwiO1xuaW1wb3J0IFNlYXJjaCBmcm9tIFwiLi9TZWFyY2hcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuZnVuY3Rpb24gRmlsdGVyU29ydFNlYXJjaCh7IG9uRmlsdGVyLCBvblNvcnQsIG9uU2VhcmNoLCBvblJlc2V0IH0pIHtcbiAgcmV0dXJuIChcbiAgICA8R3JpZCBjb250YWluZXIganVzdGlmeT1cImZsZXgtZW5kXCIgYWxpZ25JdGVtcz1cImNlbnRlclwiPlxuICAgICAgPEdyaWRcbiAgICAgICAgaXRlbVxuICAgICAgICB4cz17Nn1cbiAgICAgICAgY29udGFpbmVyXG4gICAgICAgIHBhZGRpbmc9ezF9XG4gICAgICAgIGdhcD17Mn1cbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuZmlsdGVyU29ydENvbnRhaW5lcn1cbiAgICAgICAgc3g9e3sgcHQ6IDIsIHBiOiAyIH19XG4gICAgICA+XG4gICAgICAgIDxHcmlkIGl0ZW0+XG4gICAgICAgICAgPEZpbHRlciBvbkZpbHRlcj17b25GaWx0ZXJ9IG9uUmVzZXQ9e29uUmVzZXR9IC8+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICAgPEdyaWQgaXRlbT5cbiAgICAgICAgICA8U29ydCBvblNvcnQ9e29uU29ydH0gLz5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgPC9HcmlkPlxuICAgICAgPEdyaWQgaXRlbSB4cz17Nn0gY29udGFpbmVyIGp1c3RpZnlDb250ZW50PVwiZmxleC1lbmRcIj5cbiAgICAgICAgPFNlYXJjaCBvblNlYXJjaD17b25TZWFyY2h9IG9uUmVzZXQ9e29uUmVzZXR9IC8+XG4gICAgICA8L0dyaWQ+XG4gICAgPC9HcmlkPlxuICApO1xufVxuXG5GaWx0ZXJTb3J0U2VhcmNoLnByb3BUeXBlcyA9IHtcbiAgb25GaWx0ZXI6IFByb3BUeXBlcy5mdW5jLFxuICBvblNvcnQ6IFByb3BUeXBlcy5mdW5jLFxuICBvblNlYXJjaDogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uUmVzZXQ6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBGaWx0ZXJTb3J0U2VhcmNoO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoLCB1c2VTZWxlY3Rvciwgc2hhbGxvd0VxdWFsIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCb3ggfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IEluZmluaXRlU2Nyb2xsIGZyb20gXCJyZWFjdC1pbmZpbml0ZS1zY3JvbGwtY29tcG9uZW50XCI7XG5pbXBvcnQgRmlsdGVyU29ydFNlYXJjaCBmcm9tIFwiLi9GaWx0ZXJTb3J0U2VhcmNoXCI7XG5pbXBvcnQgT3JkZXJzTGlzdCBmcm9tIFwiLi9PcmRlcnNMaXN0XCI7XG5pbXBvcnQgeyBnZXRTdW1taXRGb3JtYXR0ZWREYXRlIH0gZnJvbSBcIi4uL3V0aWxzXCI7XG5pbXBvcnQgeyBnZXRVc2VyT3JkZXJzLCByZXNldEZpbHRlciB9IGZyb20gXCIuLi9hY3Rpb25zXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmZ1bmN0aW9uIE15T3JkZXJzVGlja2V0cygpIHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG4gIGNvbnN0IHtcbiAgICBzdW1taXQsXG4gICAgbWVtYmVyT3JkZXJzLFxuICAgIG9yZGVyc19jdXJyZW50X3BhZ2UsXG4gICAgb3JkZXJzX3Blcl9wYWdlLFxuICAgIG9yZGVyc190b3RhbFxuICB9ID0gdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSB8fCB7fSwgc2hhbGxvd0VxdWFsKTtcbiAgY29uc3QgW2hhc01vcmUsIHNldEhhc01vcmVdID0gdXNlU3RhdGUodHJ1ZSk7XG4gIGNvbnN0IFtzZWFyY2hOZXh0LCBzZXRTZWFyY2hOZXh0XSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW2ZpbHRlciwgc2V0RmlsdGVyXSA9IHVzZVN0YXRlKHt9KTtcbiAgY29uc3QgW3NvcnQsIHNldFNvcnRdID0gdXNlU3RhdGUoe30pO1xuXG4gIGNvbnN0IG9uUmVzZXQgPSAoKSA9PiB7XG4gICAgc2V0U29ydCh7fSk7XG4gICAgc2V0RmlsdGVyKHt9KTtcbiAgICBzZXRTZWFyY2hOZXh0KGZhbHNlKTtcbiAgICBkaXNwYXRjaChyZXNldEZpbHRlcigpKTtcbiAgfTtcblxuICBjb25zdCBmZXRjaERhdGEgPSBhc3luYyAoKSA9PiB7XG4gICAgZGlzcGF0Y2goXG4gICAgICBnZXRVc2VyT3JkZXJzKHtcbiAgICAgICAgcGFnZTogb3JkZXJzX2N1cnJlbnRfcGFnZSxcbiAgICAgICAgcGVyUGFnZTogb3JkZXJzX3Blcl9wYWdlLFxuICAgICAgICBuZXh0OiBzZWFyY2hOZXh0LFxuICAgICAgICBmaWx0ZXIsXG4gICAgICAgIHNvcnRcbiAgICAgIH0pXG4gICAgKS50aGVuKChyZXMpID0+IHtcbiAgICAgIGlmIChcbiAgICAgICAgcmVzLnJlc3BvbnNlPy5kYXRhPy5sZW5ndGggPiBvcmRlcnNfcGVyX3BhZ2UgJiZcbiAgICAgICAgbWVtYmVyT3JkZXJzLmxlbmd0aCA9PT0gb3JkZXJzX3RvdGFsXG4gICAgICApXG4gICAgICAgIHNldEhhc01vcmUoZmFsc2UpO1xuICAgIH0pO1xuICB9O1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGZldGNoRGF0YSgpO1xuICB9LCBbZmlsdGVyLCBzb3J0LCBzZWFyY2hOZXh0XSk7XG5cbiAgY29uc3Qgb25GaWx0ZXIgPSAoZmlsdGVyKSA9PiB7XG4gICAgc2V0U29ydCh7fSk7XG4gICAgc2V0RmlsdGVyKGZpbHRlcik7XG4gIH07XG4gIGNvbnN0IG9uU29ydCA9IChkaXJlY3Rpb24pID0+IHtcbiAgICBzZXRGaWx0ZXIoe30pO1xuICAgIHNldFNvcnQoeyBkaXJlY3Rpb24sIG5hbWU6IFwiY3JlYXRlZFwiIH0pO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxGaWx0ZXJTb3J0U2VhcmNoXG4gICAgICAgIG9uRmlsdGVyPXtvbkZpbHRlcn1cbiAgICAgICAgb25Tb3J0PXtvblNvcnR9XG4gICAgICAgIG9uU2VhcmNoPXtvbkZpbHRlcn1cbiAgICAgICAgb25SZXNldD17b25SZXNldH1cbiAgICAgIC8+XG4gICAgICA8Qm94XG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLndpZGdldEhlYWRlcn1cbiAgICAgICAgc3g9e3sgcGFkZGluZzogeyB4czogMiwgbWQ6IDAsIGxnOiAwIH0gfX1cbiAgICAgID5cbiAgICAgICAgPGgyIGNsYXNzTmFtZT17c3R5bGVzLnN1bW1pdFRpdGxlRGF0ZX0+e3N1bW1pdD8ubmFtZX08L2gyPlxuICAgICAgICA8aDIgY2xhc3NOYW1lPXtzdHlsZXMuc3VtbWl0VGl0bGVEYXRlfT5cbiAgICAgICAgICB7Z2V0U3VtbWl0Rm9ybWF0dGVkRGF0ZShzdW1taXQpfVxuICAgICAgICA8L2gyPlxuICAgICAgPC9Cb3g+XG4gICAgICB7bWVtYmVyT3JkZXJzLmxlbmd0aCA/IChcbiAgICAgICAgPEluZmluaXRlU2Nyb2xsXG4gICAgICAgICAgZGF0YUxlbmd0aD17bWVtYmVyT3JkZXJzLmxlbmd0aH1cbiAgICAgICAgICBuZXh0PXsoKSA9PiBzZXRTZWFyY2hOZXh0KHRydWUpfVxuICAgICAgICAgIGhhc01vcmU9e2hhc01vcmV9XG4gICAgICAgICAgc2Nyb2xsVGhyZXNob2xkPXsxfVxuICAgICAgICA+XG4gICAgICAgICAge21lbWJlck9yZGVycz8ubWFwKChvcmRlcikgPT4gKFxuICAgICAgICAgICAgPE9yZGVyc0xpc3Qga2V5PXtvcmRlci5pZH0gb3JkZXI9e29yZGVyfSBzdW1taXQ9e3N1bW1pdH0gLz5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9JbmZpbml0ZVNjcm9sbD5cbiAgICAgICkgOiAoXG4gICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMubm9PcmRlcnNGb3VuZH0+e3QoXCJvcmRlcnMubm9fb3JkZXJzXCIpfTwvQm94PlxuICAgICAgKX1cbiAgICA8Lz5cbiAgKTtcbn1cbmV4cG9ydCBkZWZhdWx0IE15T3JkZXJzVGlja2V0cztcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEdyaWQsIEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgRGl2aWRlciBmcm9tIFwiQG11aS9tYXRlcmlhbC9EaXZpZGVyXCI7XG5pbXBvcnQgeyBjYWxjdWxhdGVPcmRlclRvdGFscywgZm9ybWF0Q3VycmVuY3kgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuZnVuY3Rpb24gT3JkZXJTdW1tYXJ5VGFibGUoeyBvcmRlciwgc3VtbWl0LCB0aWNrZXRzIH0pIHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCB7IGRpc2NvdW50VG90YWwsIHJlZnVuZFRvdGFsLCB0YXhlc1RvdGFsLCBhbW91bnRUb3RhbCwgdGlja2V0U3VtbWFyeSB9ID1cbiAgICBjYWxjdWxhdGVPcmRlclRvdGFscyh7IG9yZGVyLCBzdW1taXQsIHRpY2tldHMgfSk7XG4gIGNvbnN0IGh1bmRyZWQgPSAxMDA7XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyU3VtbWFyeVRhYmxlfT5cbiAgICAgIHt0aWNrZXRTdW1tYXJ5Py5sZW5ndGggPiAwICYmIChcbiAgICAgICAgPD5cbiAgICAgICAgICB7dGlja2V0U3VtbWFyeS5tYXAoKHRpY2tldCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdGlja2V0VG90YWwgPVxuICAgICAgICAgICAgICAodGlja2V0LnF0eSAqICh0aWNrZXQudGlja2V0X3R5cGUuY29zdCAqIGh1bmRyZWQpKSAvIGh1bmRyZWQ7XG5cbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgIDxHcmlkXG4gICAgICAgICAgICAgICAgY29udGFpbmVyXG4gICAgICAgICAgICAgICAga2V5PXtgdGl4b3JkZXJfJHt0aWNrZXQudGlja2V0X3R5cGUuY3JlYXRlZH1gfVxuICAgICAgICAgICAgICAgIHN4PXt7IHBiOiAxIH19XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8R3JpZCB4cz17OH0gaXRlbT5cbiAgICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgICB4e3RpY2tldC5xdHl9IHt0aWNrZXQudGlja2V0X3R5cGUubmFtZX1cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgICAgICAgPEdyaWQgeHM9ezR9IGl0ZW0gYWxpZ249XCJyaWdodFwiPlxuICAgICAgICAgICAgICAgICAge2Zvcm1hdEN1cnJlbmN5KHRpY2tldFRvdGFsLCB7IGN1cnJlbmN5OiBvcmRlci5jdXJyZW5jeSB9KX1cbiAgICAgICAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSl9XG4gICAgICAgIDwvPlxuICAgICAgKX1cbiAgICAgIHtvcmRlci5kaXNjb3VudF9hbW91bnQgPiAwICYmIChcbiAgICAgICAgPEdyaWQgY29udGFpbmVyIHN4PXt7IHBiOiAxIH19PlxuICAgICAgICAgIDxHcmlkIHhzPXs4fSBpdGVtPlxuICAgICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5LmRpc2NvdW50c1wiKX1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgPEdyaWQgeHM9ezR9IGl0ZW0gYWxpZ249XCJyaWdodFwiPlxuICAgICAgICAgICAgLXtkaXNjb3VudFRvdGFsfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgKX1cbiAgICAgIHtvcmRlci50YXhlc19hbW91bnQgPiAwICYmIChcbiAgICAgICAgPEdyaWQgY29udGFpbmVyIHN4PXt7IHBiOiAxIH19PlxuICAgICAgICAgIDxHcmlkIHhzPXs4fSBpdGVtPlxuICAgICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5LnRheGVzXCIpfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICA8R3JpZCB4cz17NH0gaXRlbSBhbGlnbj1cInJpZ2h0XCI+XG4gICAgICAgICAgICB7dGF4ZXNUb3RhbH1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICl9XG4gICAgICB7b3JkZXIuc3RhdHVzID09PSBcIlBhaWRcIiAmJiAoXG4gICAgICAgIDxHcmlkIGNvbnRhaW5lciBzeD17eyBwYjogMSB9fT5cbiAgICAgICAgICA8R3JpZCB4cz17OH0gaXRlbT5cbiAgICAgICAgICAgIHt0KFwib3JkZXJfc3VtbWFyeS5hbW91bnRfcGFpZFwiKX1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgPEdyaWQgeHM9ezR9IGl0ZW0gYWxpZ249XCJyaWdodFwiPlxuICAgICAgICAgICAgLXthbW91bnRUb3RhbH1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICl9XG4gICAgICB7cmVmdW5kVG90YWwgPiAwICYmIChcbiAgICAgICAgPEdyaWQgY29udGFpbmVyIHN4PXt7IHBiOiAxIH19PlxuICAgICAgICAgIDxHcmlkIHhzPXs4fSBpdGVtPlxuICAgICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5LnJlZnVuZHNcIil9XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgIDxHcmlkIHhzPXs0fSBpdGVtIGFsaWduPVwicmlnaHRcIj5cbiAgICAgICAgICAgIHtyZWZ1bmRUb3RhbH1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICl9XG4gICAgICA8RGl2aWRlciAvPlxuICAgICAgPEdyaWQgY29udGFpbmVyIHN4PXt7IHB0OiAxLCBwYjogMSB9fT5cbiAgICAgICAgPEdyaWQgeHM9ezh9IGl0ZW0+XG4gICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5LnRvdGFsXCIpfVxuICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDxHcmlkIHhzPXs0fSBpdGVtIGFsaWduPVwicmlnaHRcIj5cbiAgICAgICAgICB7b3JkZXIuc3RhdHVzID09PSBcIlBhaWRcIiA/IFwiJDAuMDBcIiA6IGFtb3VudFRvdGFsfVxuICAgICAgICA8L0dyaWQ+XG4gICAgICA8L0dyaWQ+XG4gICAgPC9Cb3g+XG4gICk7XG59XG5cbk9yZGVyU3VtbWFyeVRhYmxlLnByb3BUeXBlcyA9IHtcbiAgb3JkZXI6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgY3VycmVuY3k6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgZGlzY291bnRfYW1vdW50OiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIHRheGVzX2Ftb3VudDogUHJvcFR5cGVzLm51bWJlcixcbiAgICBzdGF0dXM6IFByb3BUeXBlcy5zdHJpbmdcbiAgfSksXG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdCxcbiAgdGlja2V0czogUHJvcFR5cGVzLmFycmF5T2YoT2JqZWN0KVxufTtcblxuZXhwb3J0IGRlZmF1bHQgT3JkZXJTdW1tYXJ5VGFibGU7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5mdW5jdGlvbiBSZWZ1bmRFbWFpbFN1cHBvcnQoe1xuICBvblJlZnVuZENsaWNrLFxuICBvblJlZnVuZERldGFpbENsaWNrLFxuICBvbkVtYWlsU3VwcG9ydENsaWNrXG59KSB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPEJ1dHRvblxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5vcmRlclN1bW1hcnlCdXR0b259XG4gICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lZFwiXG4gICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgIG9uQ2xpY2s9e29uUmVmdW5kQ2xpY2t9XG4gICAgICA+XG4gICAgICAgIHt0KFwib3JkZXJfc3VtbWFyeS5yZXF1ZXN0X3JlZnVuZFwiKX1cbiAgICAgIDwvQnV0dG9uPlxuICAgICAgPEJ1dHRvblxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5vcmRlclN1bW1hcnlCdXR0b259XG4gICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lZFwiXG4gICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgIG9uQ2xpY2s9e29uUmVmdW5kRGV0YWlsQ2xpY2t9XG4gICAgICA+XG4gICAgICAgIHt0KFwib3JkZXJfc3VtbWFyeS5yZWZ1bmRfZGV0YWlsc1wiKX1cbiAgICAgIDwvQnV0dG9uPlxuICAgICAgPEJ1dHRvblxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5vcmRlclN1bW1hcnlCdXR0b259XG4gICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lZFwiXG4gICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgIG9uQ2xpY2s9e29uRW1haWxTdXBwb3J0Q2xpY2t9XG4gICAgICA+XG4gICAgICAgIHt0KFwib3JkZXJfaW5mby5lbWFpbF9zdXBwb3J0XCIpfVxuICAgICAgPC9CdXR0b24+XG4gICAgPC8+XG4gICk7XG59XG5cblJlZnVuZEVtYWlsU3VwcG9ydC5wcm9wVHlwZXMgPSB7XG4gIG9uUmVmdW5kQ2xpY2s6IFByb3BUeXBlcy5mdW5jLFxuICBvblJlZnVuZERldGFpbENsaWNrOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25FbWFpbFN1cHBvcnRDbGljazogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFJlZnVuZEVtYWlsU3VwcG9ydDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IEdyaWQsIEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgT3JkZXJTdW1tYXJ5VGFibGUgZnJvbSBcIi4vT3JkZXJTdW1tYXJ5VGFibGVcIjtcbmltcG9ydCBSZWZ1bmRFbWFpbFN1cHBvcnQgZnJvbSBcIi4vUmVmdW5kRW1haWxTdXBwb3J0XCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmZ1bmN0aW9uIE9yZGVyU3VtbWFyeSh7IG9yZGVyLCBzdW1taXQsIHRpY2tldHMgfSkge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJTdW1tYXJ5V3JhcHBlcn0gc3g9e3sgcHQ6IDQsIHB4OiA0IH19PlxuICAgICAgICA8aDM+e3QoXCJvcmRlcl9zdW1tYXJ5Lm9yZGVyX3N1bW1hcnlcIil9PC9oMz5cbiAgICAgICAgPEdyaWQgY29udGFpbmVyPlxuICAgICAgICAgIDxHcmlkXG4gICAgICAgICAgICB4cz17MTJ9XG4gICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5vcmRlclN1bW1hcnlQdXJjaGFzZWRJbmZvfVxuICAgICAgICAgICAgc3g9e3sgcGI6IDMgfX1cbiAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8T3JkZXJTdW1tYXJ5VGFibGVcbiAgICAgICAgICAgICAgb3JkZXI9e29yZGVyfVxuICAgICAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICAgICAgdGlja2V0cz17dGlja2V0c31cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICA8L0JveD5cbiAgICAgIDxCb3ggeHM9ezEyfSBzeD17eyBwYjogMyB9fT5cbiAgICAgICAgPFJlZnVuZEVtYWlsU3VwcG9ydFxuICAgICAgICAgIG9uUmVmdW5kQ2xpY2s9eygpID0+IHt9fVxuICAgICAgICAgIG9uUmVmdW5kRGV0YWlsQ2xpY2s9eygpID0+IHt9fVxuICAgICAgICAgIG9uRW1haWxTdXBwb3J0Q2xpY2s9eygpID0+IHt9fVxuICAgICAgICAvPlxuICAgICAgPC9Cb3g+XG4gICAgPC8+XG4gICk7XG59XG5cbk9yZGVyU3VtbWFyeS5wcm9wVHlwZXMgPSB7XG4gIG9yZGVyOiBQcm9wVHlwZXMub2JqZWN0LFxuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIHRpY2tldHM6IFByb3BUeXBlcy5hcnJheU9mKE9iamVjdClcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE9yZGVyU3VtbWFyeTtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBPcmRlckxpc3RUaWNrZXRzIGZyb20gXCIuL09yZGVyTGlzdFRpY2tldHNcIjtcbmltcG9ydCB7IFBBR0lOQVRJT05fRElTUExBWV9DT1VOVCB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuZnVuY3Rpb24gT3JkZXJMaXN0SXRlbSh7IHRpY2tldHMsIHRvdGFsLCBvblBhZ2luYXRlQ2xpY2ssIHN1bW1pdCB9KSB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgW2l0ZW1zVG9EaXNwbGF5LCBzZXRJdGVtc1RvRGlzcGxheV0gPSB1c2VTdGF0ZShcbiAgICBQQUdJTkFUSU9OX0RJU1BMQVlfQ09VTlRcbiAgKTtcbiAgY29uc3Qgc2xpY2VkVGlja2V0cyA9IHRpY2tldHM/LnNsaWNlKDAsIGl0ZW1zVG9EaXNwbGF5KTtcbiAgY29uc3Qgb25WaWV3TW9yZSA9ICgpID0+IHtcbiAgICBpZiAodG90YWwgPiB0aWNrZXRzLmxlbmd0aCkge1xuICAgICAgb25QYWdpbmF0ZUNsaWNrKCk7XG4gICAgfVxuICAgIHNldEl0ZW1zVG9EaXNwbGF5KGl0ZW1zVG9EaXNwbGF5ICsgUEFHSU5BVElPTl9ESVNQTEFZX0NPVU5UKTtcbiAgfTtcblxuICBjb25zdCBvblZpZXdMZXNzID0gKCkgPT4gc2V0SXRlbXNUb0Rpc3BsYXkoUEFHSU5BVElPTl9ESVNQTEFZX0NPVU5UKTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICB7c2xpY2VkVGlja2V0cz8ubWFwKCh0aWNrZXQpID0+IChcbiAgICAgICAgPE9yZGVyTGlzdFRpY2tldHMga2V5PXt0aWNrZXQuaWR9IHRpY2tldD17dGlja2V0fSBzdW1taXQ9e3N1bW1pdH0gLz5cbiAgICAgICkpfVxuICAgICAge3RpY2tldHM/Lmxlbmd0aCA+IGl0ZW1zVG9EaXNwbGF5ID8gKFxuICAgICAgICA8QnV0dG9uIGNsYXNzTmFtZT17c3R5bGVzLnZpZXdNb3JlQnV0dG9ufSBvbkNsaWNrPXtvblZpZXdNb3JlfT5cbiAgICAgICAgICB7dChcIm9yZGVycy10aWNrZXRzLnZpZXdfbW9yZVwiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICApIDogKFxuICAgICAgICBcIlwiXG4gICAgICApfVxuICAgICAge3NsaWNlZFRpY2tldHM/Lmxlbmd0aCA+IFBBR0lOQVRJT05fRElTUExBWV9DT1VOVCAmJlxuICAgICAgc2xpY2VkVGlja2V0cz8ubGVuZ3RoID09PSB0b3RhbCA/IChcbiAgICAgICAgPEJ1dHRvbiBjbGFzc05hbWU9e3N0eWxlcy52aWV3TW9yZUJ1dHRvbn0gb25DbGljaz17b25WaWV3TGVzc30+XG4gICAgICAgICAge3QoXCJvcmRlcnMtdGlja2V0cy52aWV3X2xlc3NcIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgKSA6IChcbiAgICAgICAgXCJcIlxuICAgICAgKX1cbiAgICA8Lz5cbiAgKTtcbn1cblxuT3JkZXJMaXN0SXRlbS5wcm9wVHlwZXMgPSB7XG4gIHRpY2tldHM6IFByb3BUeXBlcy5hcnJheU9mKE9iamVjdClcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE9yZGVyTGlzdEl0ZW07XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCb3gsIEdyaWQsIEJ1dHRvbiB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgU3RhY2sgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvU3RhY2tcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCBUaWNrZXRTdGF0dXMgZnJvbSBcIi4uL1RpY2tldFN0YXR1c1wiO1xuaW1wb3J0IE9yZGVyTnVtYmVyIGZyb20gXCIuL09yZGVyTnVtYmVyXCI7XG5pbXBvcnQgeyBnZXRTdW1taXRSZWFzc2lnbkRhdGUsIHVzZU5vdyB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xuXG5mdW5jdGlvbiBPcmRlckxpc3RUaWNrZXRzKHsgdGlja2V0LCBzdW1taXQgfSkge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IG5vdyA9IHVzZU5vdygpO1xuICBjb25zdCBnZXRBY3RpdmVCdXR0b25BY3Rpb25zID0gKHRpY2tldCkgPT4ge1xuICAgIGlmICh0aWNrZXQub3duZXI/LnN0YXR1cyA9PT0gXCJJbmNvbXBsZXRlXCIpIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxCdXR0b24gY2xhc3NOYW1lPXtzdHlsZXMudmlld0ZpbmlzaFRpY2tldEJ1dHRvbn0+XG4gICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLmZpbmlzaF90aWNrZXRcIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKHRpY2tldC5vd25lcj8uc3RhdHVzID09PSBcIkNvbXBsZXRlXCIpIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxCdXR0b24gY2xhc3NOYW1lPXtzdHlsZXMudmlld0ZpbmlzaFRpY2tldEJ1dHRvbn0+XG4gICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnZpZXdfdGlja2V0XCIpfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9O1xuICBjb25zdCBzaG93UmVhc3NpZ25CdXR0b24gPSAoKSA9PiB7XG4gICAgY29uc3QgcmVhc3NpZ25EYXRlID0gZ2V0U3VtbWl0UmVhc3NpZ25EYXRlKHN1bW1pdCk7XG4gICAgY29uc3QgaXNSZWFzc2lnbmFibGUgPSByZWFzc2lnbkRhdGUgPiBub3c7XG4gICAgcmV0dXJuIGlzUmVhc3NpZ25hYmxlID8gKFxuICAgICAgPEJ1dHRvbiBjbGFzc05hbWU9e3N0eWxlcy5yZWFzc2lnbkJ1dHRvbn0+XG4gICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5yZWFzc2lnbl90aWNrZXRcIil9XG4gICAgICA8L0J1dHRvbj5cbiAgICApIDogKFxuICAgICAgXCJcIlxuICAgICk7XG4gIH07XG4gIHJldHVybiAoXG4gICAgPEdyaWQga2V5PXt0aWNrZXQuaWR9IGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyV3JhcHBlcn0gY29udGFpbmVyPlxuICAgICAgPEdyaWQgeHM9ezd9IHBhZGRpbmc9ezJ9IGl0ZW0gY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0VGlja2V0VHlwZX0+XG4gICAgICAgIDxoND57dGlja2V0LnRpY2tldF90eXBlPy5uYW1lfTwvaDQ+XG4gICAgICA8L0dyaWQ+XG4gICAgICA8R3JpZCB4cz17NX0gcGFkZGluZz17Mn0gaXRlbT5cbiAgICAgICAgey8qIFRvIGFkZCBiYWRnZSBmZWF0dXJlcyAqL31cbiAgICAgIDwvR3JpZD5cbiAgICAgIDxHcmlkIHhzPXsxMn0gc3g9e3sgcHg6IDIsIHBiOiAyIH19IGl0ZW0+XG4gICAgICAgIHt0aWNrZXQub3duZXI/LmVtYWlsID8gKFxuICAgICAgICAgIDw+XG4gICAgICAgICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmxhYmVsfT5cbiAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLmFzc2lnbmVkX3RvXCIpfTpcbiAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRPd25lckVtYWlsfT57dGlja2V0Lm93bmVyPy5lbWFpbH08L0JveD5cbiAgICAgICAgICA8Lz5cbiAgICAgICAgKSA6IChcbiAgICAgICAgICB0aWNrZXQuaXNfYWN0aXZlICYmIChcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldE93bmVyRW1haWx9PlxuICAgICAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMuYXR0ZW5kZWVfc3RhdHVzX3VuYXNzaWduZWRcIil9XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgKVxuICAgICAgICApfVxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXROb30+XG4gICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnRpY2tldF9ub1wiKX06e1wiIFwifVxuICAgICAgICAgIDxPcmRlck51bWJlciBudW1iZXI9e3RpY2tldC5udW1iZXJ9IGNvcHkgdHJ1bmNhdGVkIC8+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvR3JpZD5cbiAgICAgIDxHcmlkIGNvbnRhaW5lcj5cbiAgICAgICAgPEdyaWQgY29udGFpbmVyIGRpcmVjdGlvbj1cInJvd1wiIHhzPXsxMn0gbGc9ezZ9IGFsaWduSXRlbXM9XCJjZW50ZXJcIiBpdGVtPlxuICAgICAgICAgIDxUaWNrZXRTdGF0dXMgdGlja2V0PXt0aWNrZXR9IC8+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICAgPEdyaWQgcGFkZGluZz17Mn0geHM9ezEyfSBsZz17Nn0gY29udGFpbmVyIGl0ZW0+XG4gICAgICAgICAgPEdyaWRcbiAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgIGNvbnRhaW5lclxuICAgICAgICAgICAgYWxpZ249XCJjZW50ZXJcIlxuICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6IFwic3BhY2UtYmV0d2VlblwiXG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0QWN0aW9uQnV0dG9uc31cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7dGlja2V0LmlzX2FjdGl2ZSAmJlxuICAgICAgICAgICAgICAodGlja2V0Lm93bmVyID8gKFxuICAgICAgICAgICAgICAgIDxTdGFja1xuICAgICAgICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6IFwic3BhY2UtYmV0d2VlblwiLFxuICAgICAgICAgICAgICAgICAgICB3aWR0aDogXCIxMDAlXCJcbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICBhbGlnbkl0ZW1zPVwiY2VudGVyXCJcbiAgICAgICAgICAgICAgICAgIGRpcmVjdGlvbj1cInJvd1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAge2dldEFjdGl2ZUJ1dHRvbkFjdGlvbnModGlja2V0KX1cbiAgICAgICAgICAgICAgICAgIHtzaG93UmVhc3NpZ25CdXR0b24oKX1cbiAgICAgICAgICAgICAgICA8L1N0YWNrPlxuICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgIDxCdXR0b24gY2xhc3NOYW1lPXtzdHlsZXMuYXNzaWduVGlja2V0QnV0dG9ufT5cbiAgICAgICAgICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5hc3NpZ25fdGlja2V0XCIpfVxuICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICApKX1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgIDwvR3JpZD5cbiAgICA8L0dyaWQ+XG4gICk7XG59XG5cbk9yZGVyTGlzdFRpY2tldHMucHJvcFR5cGVzID0ge1xuICB0aWNrZXQ6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgaWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgb3duZXI6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgICBlbWFpbDogUHJvcFR5cGVzLnN0cmluZ1xuICAgIH0pLFxuICAgIG51bWJlcjogUHJvcFR5cGVzLnN0cmluZyxcbiAgICB0b3RhbF9yZWZ1bmRlZF9hbW91bnQ6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgdGlja2V0X3R5cGU6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgICBuYW1lOiBQcm9wVHlwZXMuc3RyaW5nXG4gICAgfSlcbiAgfSlcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE9yZGVyTGlzdFRpY2tldHM7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgQ29udGVudENvcHlJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0NvbnRlbnRDb3B5XCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmZ1bmN0aW9uIE9yZGVyTnVtYmVyKHsgbnVtYmVyLCBjb3B5ID0gZmFsc2UsIHRydW5jYXRlZCA9IGZhbHNlIH0pIHtcbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyVGlja2V0Tm9Db250YWluZXJ9PlxuICAgICAgPHNwYW4gY2xhc3NOYW1lPXt0cnVuY2F0ZWQgJiYgc3R5bGVzLm9yZGVyVGlja2V0TnVtYmVyVHJ1bmNhdGVkfT5cbiAgICAgICAge251bWJlcn1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIHtjb3B5ICYmIChcbiAgICAgICAgPENvbnRlbnRDb3B5SWNvblxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNvcHlJY29ufVxuICAgICAgICAgIG9uQ2xpY2s9eygpID0+IG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KG51bWJlcil9XG4gICAgICAgIC8+XG4gICAgICApfVxuICAgIDwvZGl2PlxuICApO1xufVxuXG5PcmRlck51bWJlci5wcm9wVHlwZXMgPSB7XG4gIG51bWJlcjogUHJvcFR5cGVzLnN0cmluZyxcbiAgY29weTogUHJvcFR5cGVzLmJvb2xcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE9yZGVyTnVtYmVyO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBHcmlkLCBCb3ggfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IFRhYnMgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvVGFic1wiO1xuaW1wb3J0IFRhYiBmcm9tIFwiQG11aS9tYXRlcmlhbC9UYWJcIjtcbmltcG9ydCBFcnJvckljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRXJyb3JcIjtcbmltcG9ydCBPcmRlckxpc3RJdGVtIGZyb20gXCIuL09yZGVyTGlzdEl0ZW1cIjtcbmltcG9ydCBPcmRlclN1bW1hcnkgZnJvbSBcIi4uL09yZGVyU3VtbWFyeVwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5mdW5jdGlvbiBUYWJQYW5lbChwcm9wcykge1xuICBjb25zdCB7IGNoaWxkcmVuLCB2YWx1ZSwgaW5kZXggfSA9IHByb3BzO1xuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIHJvbGU9XCJ0YWJwYW5lbFwiXG4gICAgICBoaWRkZW49e3ZhbHVlICE9PSBpbmRleH1cbiAgICAgIGlkPXtgdGFicGFuZWwtJHtpbmRleH1gfVxuICAgICAgYXJpYS1sYWJlbGxlZGJ5PXtgdGFiLSR7aW5kZXh9YH1cbiAgICA+XG4gICAgICB7dmFsdWUgPT09IGluZGV4ICYmIGNoaWxkcmVufVxuICAgIDwvZGl2PlxuICApO1xufVxuXG5mdW5jdGlvbiBPcmRlcnNMaXN0RGVza3RvcE1vYmlsZSh7XG4gIGlzTW9iaWxlLFxuICBzdW1taXQsXG4gIHRpY2tldHMsXG4gIG9yZGVyLFxuICB0b3RhbCxcbiAgZGV0YWlsc1JlcXVpcmVkLFxuICBvblBhZ2luYXRlQ2xpY2tcbn0pIHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBbdmFsdWUsIHNldFZhbHVlXSA9IHVzZVN0YXRlKDApO1xuICBjb25zdCBoYW5kbGVDaGFuZ2UgPSAoXywgbmV3VmFsdWUpID0+IHtcbiAgICBzZXRWYWx1ZShuZXdWYWx1ZSk7XG4gIH07XG5cbiAgY29uc3QgbW9yZURldGFpbHMgPSAoKSA9PlxuICAgIGRldGFpbHNSZXF1aXJlZCAmJiAoXG4gICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlcy5kZXRhaWxzUmVxdWlyZWRMYWJlbH0+XG4gICAgICAgIDxFcnJvckljb24gc3g9e3sgY29sb3I6IFwiI0ZGOTgwMFwiIH19IC8+XG4gICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5zdGF0dXNfZGV0YWlsc19yZXF1aXJlZFwiKX1cbiAgICAgIDwvc3Bhbj5cbiAgICApO1xuXG4gIHJldHVybiBpc01vYmlsZSA/IChcbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldExpc3RDb250YWluZXJ9PlxuICAgICAgPEJveCBzeD17eyBib3JkZXJDb2xvcjogXCJkaXZpZGVyXCIsIHBiOiAyIH19PlxuICAgICAgICA8VGFic1xuICAgICAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlQ2hhbmdlfVxuICAgICAgICAgIHRleHRDb2xvcj1cIiMwMDBcIlxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJUaWNrZXRzICYgU3VtbWFyeVwiXG4gICAgICAgICAgVGFiSW5kaWNhdG9yUHJvcHM9e3tcbiAgICAgICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICAgIGJhY2tncm91bmQ6IFwiIzAwMFwiXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIDxUYWIgbGFiZWw9e3QoXCJsYWJlbHMudGlja2V0c1wiKX0gY2xhc3NOYW1lPXtzdHlsZXMudGFiQnV0dG9uc30gLz5cbiAgICAgICAgICA8VGFiIGxhYmVsPXt0KFwibGFiZWxzLnN1bW1hcnlcIil9IGNsYXNzTmFtZT17c3R5bGVzLnRhYkJ1dHRvbnN9IC8+XG4gICAgICAgIDwvVGFicz5cbiAgICAgIDwvQm94PlxuICAgICAge21vcmVEZXRhaWxzKCl9XG4gICAgICA8VGFiUGFuZWwgdmFsdWU9e3ZhbHVlfSBpbmRleD17MH0+XG4gICAgICAgIDxPcmRlckxpc3RJdGVtXG4gICAgICAgICAgb3JkZXI9e29yZGVyfVxuICAgICAgICAgIHRpY2tldHM9e3RpY2tldHN9XG4gICAgICAgICAgdG90YWw9e3RvdGFsfVxuICAgICAgICAgIG9uUGFnaW5hdGVDbGljaz17b25QYWdpbmF0ZUNsaWNrfVxuICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAvPlxuICAgICAgPC9UYWJQYW5lbD5cbiAgICAgIDxUYWJQYW5lbCB2YWx1ZT17dmFsdWV9IGluZGV4PXsxfT5cbiAgICAgICAgPE9yZGVyU3VtbWFyeSBvcmRlcj17b3JkZXJ9IHN1bW1pdD17c3VtbWl0fSB0aWNrZXRzPXt0aWNrZXRzfSAvPlxuICAgICAgPC9UYWJQYW5lbD5cbiAgICA8L0JveD5cbiAgKSA6IChcbiAgICA8PlxuICAgICAgPEdyaWQgaXRlbSBtZD17MTJ9PlxuICAgICAgICB7bW9yZURldGFpbHMoKX1cbiAgICAgIDwvR3JpZD5cbiAgICAgIDxHcmlkXG4gICAgICAgIHBhZGRpbmc9ezJ9XG4gICAgICAgIGl0ZW1cbiAgICAgICAgbWQ9ezd9XG4gICAgICAgIG9yZGVyPXt7IG1kOiAxIH19XG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldExpc3RDb250YWluZXJ9XG4gICAgICA+XG4gICAgICAgIDxPcmRlckxpc3RJdGVtXG4gICAgICAgICAgb3JkZXI9e29yZGVyfVxuICAgICAgICAgIHRpY2tldHM9e3RpY2tldHN9XG4gICAgICAgICAgdG90YWw9e3RvdGFsfVxuICAgICAgICAgIG9uUGFnaW5hdGVDbGljaz17b25QYWdpbmF0ZUNsaWNrfVxuICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAvPlxuICAgICAgPC9HcmlkPlxuICAgICAgPEdyaWQgcGFkZGluZz17Mn0gaXRlbSBtZD17NX0gb3JkZXI9e3sgbWQ6IDEgfX0+XG4gICAgICAgIDxPcmRlclN1bW1hcnkgb3JkZXI9e29yZGVyfSBzdW1taXQ9e3N1bW1pdH0gdGlja2V0cz17dGlja2V0c30gLz5cbiAgICAgIDwvR3JpZD5cbiAgICA8Lz5cbiAgKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgT3JkZXJzTGlzdERlc2t0b3BNb2JpbGU7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2gsIHVzZVNlbGVjdG9yLCBzaGFsbG93RXF1YWwgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEdyaWQsIEJveCwgQnV0dG9uIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZVRoZW1lIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWwvc3R5bGVzXCI7XG5pbXBvcnQgdXNlTWVkaWFRdWVyeSBmcm9tIFwiQG11aS9tYXRlcmlhbC91c2VNZWRpYVF1ZXJ5XCI7XG5pbXBvcnQgeyBnZXRUaWNrZXRzQnlPcmRlciB9IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5pbXBvcnQgeyBnZXRPcmRlclRpY2tldHMsIGdldEZvcm1hdHRlZERhdGUgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcbmltcG9ydCB7IE9ORV9QQUdFX05FWFQgfSBmcm9tIFwiLi4vLi4vdXRpbHMvY29uc3RhbnRzXCI7XG5pbXBvcnQgT3JkZXJOdW1iZXIgZnJvbSBcIi4vT3JkZXJOdW1iZXJcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCBPcmRlcnNMaXN0RGVza3RvcE1vYmlsZSBmcm9tIFwiLi9PcmRlcnNMaXN0RGVza3RvcE1vYmlsZVwiO1xuXG5mdW5jdGlvbiBPcmRlcnNMaXN0KHByb3BzKSB7XG4gIGNvbnN0IHsgc3VtbWl0LCBvcmRlciB9ID0gcHJvcHM7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuICBjb25zdCB7IHBlcl9wYWdlLCBsYXN0X3BhZ2UsIG1lbWJlck9yZGVycyB9ID0gdXNlU2VsZWN0b3IoXG4gICAgKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSB8fCB7fSxcbiAgICBzaGFsbG93RXF1YWxcbiAgKTtcbiAgY29uc3QgdGhlbWUgPSB1c2VUaGVtZSgpO1xuICBjb25zdCBpc01vYmlsZSA9IHVzZU1lZGlhUXVlcnkodGhlbWUuYnJlYWtwb2ludHMuZG93bihcImxnXCIpKTtcbiAgY29uc3QgW2lzTW9iaWxlVmlld2FibGUsIHNldE1vYmlsZVZpZXdhYmxlXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgZGV0YWlsc1JlcXVpcmVkID0gb3JkZXIubWVtYmVyVGlja2V0cz8uZmluZChcbiAgICAodGlja2V0KSA9PiB0aWNrZXQub3duZXI/LnN0YXR1cyA9PT0gXCJJbmNvbXBsZXRlXCJcbiAgKTtcbiAgY29uc3QgZmV0Y2hUaWNrZXRzQnlPcmRlciA9IGFzeW5jICgpID0+IHtcbiAgICBhd2FpdCBkaXNwYXRjaChcbiAgICAgIGdldFRpY2tldHNCeU9yZGVyKHtcbiAgICAgICAgb3JkZXJJZDogb3JkZXIuaWQsXG4gICAgICAgIGN1cnJlbnRfcGFnZTogbGFzdF9wYWdlLFxuICAgICAgICBwZXJQYWdlOiBwZXJfcGFnZVxuICAgICAgfSlcbiAgICApLmNhdGNoKChlKSA9PiB7XG4gICAgICBjb25zb2xlLmxvZyhlKTtcbiAgICB9KTtcbiAgfTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGZldGNoVGlja2V0c0J5T3JkZXIoKTtcbiAgfSwgW10pO1xuXG4gIGNvbnN0IG9uUGFnaW5hdGVDbGljayA9ICgpID0+XG4gICAgZGlzcGF0Y2goXG4gICAgICBnZXRUaWNrZXRzQnlPcmRlcih7XG4gICAgICAgIG9yZGVySWQ6IG9yZGVyLmlkLFxuICAgICAgICBwYWdlOiBvcmRlci50aWNrZXRzX3BhZ2VfY3VycmVudCArIE9ORV9QQUdFX05FWFQsXG4gICAgICAgIHBlclBhZ2U6IHBlcl9wYWdlLFxuICAgICAgICBuZXh0OiB0cnVlXG4gICAgICB9KVxuICAgICk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPEJveFxuICAgICAgICBzeD17e1xuICAgICAgICAgIHBhZGRpbmc6IHtcbiAgICAgICAgICAgIHhzOiAyLFxuICAgICAgICAgICAgbWQ6IDEsXG4gICAgICAgICAgICBsZzogMFxuICAgICAgICAgIH1cbiAgICAgICAgfX1cbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJUaWNrZXRJbmZvQ29udGFpbmVyfVxuICAgICAgPlxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlcy5vcmRlclRpY2tldEluZm99PlxuICAgICAgICAgIHt0KFwib3JkZXJzLnB1cmNoYXNlZFwiKX06IHtnZXRGb3JtYXR0ZWREYXRlKG9yZGVyLmNyZWF0ZWQpfSB8e1wiIFwifVxuICAgICAgICAgIHt0KFwib3JkZXJfc3VtbWFyeS5vcmRlcl9ub1wiKX06e1wiIFwifVxuICAgICAgICAgIDxPcmRlck51bWJlciBudW1iZXI9e29yZGVyLm51bWJlcn0gY29weSB0cnVuY2F0ZWQgLz5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICB7aXNNb2JpbGUgJiYgKFxuICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgIHN4PXt7IHBhZGRpbmc6IDAgfX1cbiAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmJsYWNrQnV0dG9ufVxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0TW9iaWxlVmlld2FibGUoIWlzTW9iaWxlVmlld2FibGUpfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtpc01vYmlsZVZpZXdhYmxlXG4gICAgICAgICAgICAgID8gdChcInRpY2tldF9zdGF0dXMuaGlkZV90aWNrZXRzXCIpXG4gICAgICAgICAgICAgIDogdChcInRpY2tldF9zdGF0dXMudmlld190aWNrZXRzXCIpfVxuICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICApfVxuICAgICAgPC9Cb3g+XG4gICAgICA8R3JpZFxuICAgICAgICBrZXk9e29yZGVyLmlkfVxuICAgICAgICBjb250YWluZXJcbiAgICAgICAgcm93U3BhY2luZz17MX1cbiAgICAgICAgY29sdW1uU3BhY2luZz17eyB4czogMSwgc206IDIsIG1kOiAzIH19XG4gICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLm9yZGVyVGlja2V0Q29udGFpbmVyfSAke1xuICAgICAgICAgIGlzTW9iaWxlICYmICFpc01vYmlsZVZpZXdhYmxlID8gc3R5bGVzLmRpc3BsYXlfbm9uZSA6IFwiXCJcbiAgICAgICAgfWB9XG4gICAgICAgIHN4PXt7XG4gICAgICAgICAgZmxleERpcmVjdGlvbjoge1xuICAgICAgICAgICAgbWQ6IFwicm93XCIsXG4gICAgICAgICAgICBsZzogXCJyb3dcIlxuICAgICAgICAgIH0sXG4gICAgICAgICAgcGFkZGluZzoge1xuICAgICAgICAgICAgeHM6IDIsXG4gICAgICAgICAgICBtZDogMCxcbiAgICAgICAgICAgIGxnOiAwXG4gICAgICAgICAgfVxuICAgICAgICB9fVxuICAgICAgPlxuICAgICAgICA8T3JkZXJzTGlzdERlc2t0b3BNb2JpbGVcbiAgICAgICAgICBpc01vYmlsZT17aXNNb2JpbGV9XG4gICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgb3JkZXI9e29yZGVyfVxuICAgICAgICAgIHRpY2tldHM9e2dldE9yZGVyVGlja2V0cyhtZW1iZXJPcmRlcnMsIG9yZGVyLmlkKX1cbiAgICAgICAgICB0b3RhbD17b3JkZXIudGlja2V0c190b3RhbH1cbiAgICAgICAgICBkZXRhaWxzUmVxdWlyZWQ9e2RldGFpbHNSZXF1aXJlZH1cbiAgICAgICAgICBvblBhZ2luYXRlQ2xpY2s9e29uUGFnaW5hdGVDbGlja31cbiAgICAgICAgLz5cbiAgICAgIDwvR3JpZD5cbiAgICA8Lz5cbiAgKTtcbn1cblxuT3JkZXJzTGlzdC5wcm9wVHlwZXMgPSB7XG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdCxcbiAgb3JkZXI6IFByb3BUeXBlcy5vYmplY3Rcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE9yZGVyc0xpc3Q7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBDb250YWluZXIsIEJ1dHRvbiB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmZ1bmN0aW9uIFRpY2tldFN0YXR1cyh7IHRpY2tldCB9KSB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgaXNBY3RpdmUgPSB0aWNrZXQuaXNfYWN0aXZlO1xuICBjb25zdCByZWZ1bmRfcmVxdWVzdHMgPSB0aWNrZXQucmVmdW5kX3JlcXVlc3RzLmZpbmQoXG4gICAgKHIpID0+IHIuc3RhdHVzID09PSBcIlJlcXVlc3RlZFwiXG4gICk7XG4gIGNvbnN0IHRpY2tldF9zdGF0dXNfaW5jb21wbGV0ZSA9IHRpY2tldC5vd25lcj8uc3RhdHVzID09PSBcIkluY29tcGxldGVcIjtcbiAgY29uc3QgdGlja2V0X3VuYXNzaWduZWQgPSB0aWNrZXQub3duZXJfaWQgPT09IDA7XG4gIGNvbnN0IHRpY2tldF9jb21wbGV0ZSA9IHRpY2tldC5vd25lciAmJiB0aWNrZXQub3duZXI/LnN0YXR1cyA9PT0gXCJDb21wbGV0ZVwiO1xuXG4gIHJldHVybiAoXG4gICAgPENvbnRhaW5lciBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRTdGF0dXNDb250YWluZXJ9PlxuICAgICAge2lzQWN0aXZlID8gKFxuICAgICAgICA8PlxuICAgICAgICAgIHtyZWZ1bmRfcmVxdWVzdHMgJiYgKFxuICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5idXR0b25QaWxsfSAke3N0eWxlcy5idXR0b25SZWZ1bmRSZXF1ZXN0ZWR9YH1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnN0YXR1c19yZWZ1bmRfcmVxdWVzdGVkXCIpfVxuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgKX1cbiAgICAgICAgICB7dGlja2V0X3N0YXR1c19pbmNvbXBsZXRlICYmIChcbiAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuYnV0dG9uUGlsbH0gJHtzdHlsZXMuYnV0dG9uSW5jb21wbGV0ZX1gfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMuc3RhdHVzX2luY29tcGxldGVcIil9XG4gICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICApfVxuICAgICAgICAgIHt0aWNrZXRfdW5hc3NpZ25lZCAmJiAoXG4gICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLmJ1dHRvblBpbGx9ICR7c3R5bGVzLmJ1dHRvblVuYXNzaWduZWR9YH1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnN0YXR1c191bmFzc2lnbmVkXCIpfVxuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgKX1cbiAgICAgICAgICB7dGlja2V0X2NvbXBsZXRlICYmIChcbiAgICAgICAgICAgIDxCdXR0b24gY2xhc3NOYW1lPXtgJHtzdHlsZXMuYnV0dG9uUGlsbH0gJHtzdHlsZXMuYnV0dG9uQ29tcGxldGV9YH0+XG4gICAgICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5zdGF0dXNfY29tcGxldGVcIil9XG4gICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICApfVxuICAgICAgICA8Lz5cbiAgICAgICkgOiAoXG4gICAgICAgIDxCdXR0b24gY2xhc3NOYW1lPXtgJHtzdHlsZXMuYnV0dG9uUGlsbH0gJHtzdHlsZXMuYnV0dG9uQ2FuY2VsbGVkfWB9PlxuICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5zdGF0dXNfY2FuY2VsbGVkXCIpfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgICl9XG4gICAgPC9Db250YWluZXI+XG4gICk7XG59XG5cblRpY2tldFN0YXR1cy5wcm9wVHlwZXMgPSB7XG4gIHRpY2tldDogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBvd25lcjogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAgIHN0YXR1czogUHJvcFR5cGVzLnN0cmluZ1xuICAgIH0pLFxuICAgIHJlZnVuZF9yZXF1ZXN0czogUHJvcFR5cGVzLmFycmF5T2YoT2JqZWN0KVxuICB9KVxufTtcblxuZXhwb3J0IGRlZmF1bHQgVGlja2V0U3RhdHVzO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cbmltcG9ydCB7IExPR09VVF9VU0VSIH0gZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvc2VjdXJpdHkvYWN0aW9uc1wiO1xuaW1wb3J0IHtcbiAgUkVTRVRfU1RBVEUsXG4gIFJFU0VUX0ZJTFRFUixcbiAgU0VUX1NVTU1JVCxcbiAgU0VUX1VTRVIsXG4gIEdFVF9VU0VSX09SREVSUyxcbiAgR0VUX1RJQ0tFVFNfQllfT1JERVJcbn0gZnJvbSBcIi4vYWN0aW9uc1wiO1xuaW1wb3J0IHsgRklSU1RfUEFHRSB9IGZyb20gXCIuL3V0aWxzL2NvbnN0YW50c1wiO1xuXG5jb25zdCBERUZBVUxUX1NUQVRFID0ge1xuICBzdW1taXQ6IG51bGwsXG4gIHVzZXI6IHt9LFxuICB3aWRnZXRMb2FkaW5nOiBmYWxzZSxcbiAgbWVtYmVyT3JkZXJzOiBbXSxcbiAgZXJyb3JzOiB7fSxcbiAgbG9hZGluZzogZmFsc2UsXG4gIGlzT3JkZXJMb2FkaW5nOiBmYWxzZSxcbiAgb3JkZXJzX2N1cnJlbnRfcGFnZTogMSxcbiAgb3JkZXJzX2xhc3RfcGFnZTogMSxcbiAgb3JkZXJzX3Blcl9wYWdlOiA1LFxuICBvcmRlcnNfdG90YWw6IDAsXG4gIHRpY2tldF9jdXJyZW50X3BhZ2U6IDEsXG4gIHRpY2tldF9sYXN0X3BhZ2U6IDEsXG4gIHRpY2tldF9wZXJfcGFnZTogNSxcbiAgdGlja2V0X3RvdGFsOiAwXG59O1xuXG5jb25zdCBXaWRnZXRSZWR1Y2VyID0gKHN0YXRlID0gREVGQVVMVF9TVEFURSwgeyB0eXBlLCBwYXlsb2FkIH0gPSB7fSkgPT4ge1xuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlIExPR09VVF9VU0VSOlxuICAgIGNhc2UgUkVTRVRfU1RBVEU6XG4gICAgICByZXR1cm4gREVGQVVMVF9TVEFURTtcbiAgICBjYXNlIFJFU0VUX0ZJTFRFUjpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBvcmRlcnNfY3VycmVudF9wYWdlOiAxLFxuICAgICAgICBvcmRlcnNfbGFzdF9wYWdlOiAxXG4gICAgICB9O1xuICAgIGNhc2UgU0VUX1NVTU1JVDpcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBzdW1taXQ6IHBheWxvYWQgfTtcbiAgICBjYXNlIFNFVF9VU0VSOlxuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIHVzZXI6IHBheWxvYWQgfTtcbiAgICBjYXNlIEdFVF9VU0VSX09SREVSUzoge1xuICAgICAgY29uc3QgeyBtZW1iZXJPcmRlcnMgfSA9IHN0YXRlO1xuICAgICAgY29uc3QgeyBkYXRhLCB0b3RhbCwgY3VycmVudF9wYWdlIH0gPSBwYXlsb2FkLnJlc3BvbnNlO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIG1lbWJlck9yZGVyczpcbiAgICAgICAgICBjdXJyZW50X3BhZ2UgPT09IEZJUlNUX1BBR0UgPyBkYXRhIDogWy4uLm1lbWJlck9yZGVycywgLi4uZGF0YV0sXG4gICAgICAgIG9yZGVyc190b3RhbDogdG90YWwsXG4gICAgICAgIG9yZGVyc19jdXJyZW50X3BhZ2U6IGN1cnJlbnRfcGFnZVxuICAgICAgfTtcbiAgICB9XG4gICAgY2FzZSBHRVRfVElDS0VUU19CWV9PUkRFUjoge1xuICAgICAgY29uc3QgeyBtZW1iZXJPcmRlcnMgfSA9IHN0YXRlO1xuICAgICAgY29uc3QgeyBkYXRhLCB0b3RhbCwgY3VycmVudF9wYWdlLCBsYXN0X3BhZ2UgfSA9IHBheWxvYWQucmVzcG9uc2U7XG4gICAgICBjb25zdCBmb3JtZXJPcmRlciA9IG1lbWJlck9yZGVycy5maW5kKChvKSA9PiBvLmlkID09PSBkYXRhWzBdPy5vcmRlcl9pZCk7XG4gICAgICBjb25zdCB1cGRhdGVkT3JkZXIgPSB7XG4gICAgICAgIC4uLmZvcm1lck9yZGVyLFxuICAgICAgICBtZW1iZXJUaWNrZXRzOlxuICAgICAgICAgIGN1cnJlbnRfcGFnZSA9PT0gRklSU1RfUEFHRVxuICAgICAgICAgICAgPyBkYXRhXG4gICAgICAgICAgICA6IFsuLi5mb3JtZXJPcmRlci5tZW1iZXJUaWNrZXRzLCAuLi5kYXRhXSxcbiAgICAgICAgdGlja2V0c19wYWdlX2N1cnJlbnQ6IGN1cnJlbnRfcGFnZSxcbiAgICAgICAgdGlja2V0c19wYWdlX2xhc3Q6IGxhc3RfcGFnZSxcbiAgICAgICAgdGlja2V0c190b3RhbDogdG90YWxcbiAgICAgIH07XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgbWVtYmVyT3JkZXJzOiBtZW1iZXJPcmRlcnMubWFwKChtbykgPT5cbiAgICAgICAgICBtby5pZCA9PT0gdXBkYXRlZE9yZGVyLmlkID8gdXBkYXRlZE9yZGVyIDogbW9cbiAgICAgICAgKVxuICAgICAgfTtcbiAgICB9XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBzdGF0ZTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgV2lkZ2V0UmVkdWNlcjtcbiIsImltcG9ydCB7IHVzZU1lbW8gfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IGNvbmZpZ3VyZVN0b3JlIH0gZnJvbSBcIkByZWR1eGpzL3Rvb2xraXRcIjtcbmltcG9ydCB7XG4gIHBlcnNpc3RTdG9yZSxcbiAgcGVyc2lzdFJlZHVjZXIsXG4gIEZMVVNILFxuICBSRUhZRFJBVEUsXG4gIFBBVVNFLFxuICBQRVJTSVNULFxuICBQVVJHRSxcbiAgUkVHSVNURVJcbn0gZnJvbSBcInJlZHV4LXBlcnNpc3RcIjtcbmltcG9ydCBzdG9yYWdlIGZyb20gXCJyZWR1eC1wZXJzaXN0L2xpYi9zdG9yYWdlXCI7XG5pbXBvcnQgeyBjb21iaW5lUmVkdWNlcnMgfSBmcm9tIFwicmVkdXhcIjtcbmltcG9ydCBXaWRnZXRSZWR1Y2VyIGZyb20gXCIuL3JlZHVjZXJcIjtcblxuZXhwb3J0IGNvbnN0IGdldFN0b3JlID0gKHsgY2xpZW50SWQsIGxvZ2luVXJsLCBzdW1taXQsIGFwaUJhc2VVcmwgfSkgPT4ge1xuICAvLyB0byBhZGQgb3RoZXIgcmVkdWNlcnMgbGF0ZXJcbiAgY29uc3QgcmVkdWNlcnMgPSBjb21iaW5lUmVkdWNlcnMoe1xuICAgIHdpZGdldFN0YXRlOiBXaWRnZXRSZWR1Y2VyXG4gIH0pO1xuXG4gIGNvbnN0IHN0b3JlID0gY29uZmlndXJlU3RvcmUoe1xuICAgIHJlZHVjZXI6IHBlcnNpc3RSZWR1Y2VyKFxuICAgICAge1xuICAgICAgICBrZXk6IGByb290X215X29yZGVyc190aWNrZXRzXyR7Y2xpZW50SWR9YCxcbiAgICAgICAgc3RvcmFnZVxuICAgICAgfSxcbiAgICAgIHJlZHVjZXJzXG4gICAgKSxcbiAgICBtaWRkbGV3YXJlOiAoZ2V0RGVmYXVsdE1pZGRsZXdhcmUpID0+XG4gICAgICBnZXREZWZhdWx0TWlkZGxld2FyZSh7XG4gICAgICAgIHRodW5rOiB7XG4gICAgICAgICAgZXh0cmFBcmd1bWVudDoge1xuICAgICAgICAgICAgY2xpZW50SWQsXG4gICAgICAgICAgICBhcGlCYXNlVXJsLFxuICAgICAgICAgICAgc3VtbWl0LFxuICAgICAgICAgICAgbG9naW5VcmxcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGltbXV0YWJsZUNoZWNrOiBmYWxzZSxcbiAgICAgICAgc2VyaWFsaXphYmxlQ2hlY2s6IHtcbiAgICAgICAgICBpZ25vcmVkQWN0aW9uczogW0ZMVVNILCBSRUhZRFJBVEUsIFBBVVNFLCBQRVJTSVNULCBQVVJHRSwgUkVHSVNURVJdXG4gICAgICAgIH1cbiAgICAgIH0pXG4gIH0pO1xuXG4gIHJldHVybiBzdG9yZTtcbn07XG5cbmV4cG9ydCBjb25zdCB1c2VJbml0U3RvcmUgPSAoY29uZmlnKSA9PiB7XG4gIGNvbnN0IHN0b3JlID0gdXNlTWVtbygoKSA9PiBnZXRTdG9yZShjb25maWcpLCBbXSk7XG4gIGNvbnN0IHBlcnNpc3RvciA9IHVzZU1lbW8oKCkgPT4gcGVyc2lzdFN0b3JlKHN0b3JlKSwgW3N0b3JlXSk7XG5cbiAgcmV0dXJuIHtcbiAgICBzdG9yZSxcbiAgICBwZXJzaXN0b3JcbiAgfTtcbn07XG4iLCJpbXBvcnQgeyBpbml0TG9nT3V0LCBnZXRBY2Nlc3NUb2tlbiB9IGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3NlY3VyaXR5L21ldGhvZHNcIjtcbmltcG9ydCAqIGFzIFNlbnRyeSBmcm9tIFwiQHNlbnRyeS9yZWFjdFwiO1xuXG5leHBvcnQgY29uc3QgZ2V0QWNjZXNzVG9rZW5TYWZlbHkgPSBhc3luYyAoKSA9PiB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGF3YWl0IGdldEFjY2Vzc1Rva2VuKCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBjb25zb2xlLmxvZyhcIm15LW9yZGVycy10aWNrZXRzLXdpZGdlOjogZ2V0QWNjZXNzVG9rZW5TYWZlbHkgZXJyb3I6IFwiLCBlKTtcbiAgICBTZW50cnkuY2FwdHVyZUV4Y2VwdGlvbihlKVxuICAgIGluaXRMb2dPdXQoKTtcbiAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoKTtcbiAgfVxufTtcbiIsImV4cG9ydCBjb25zdCBMQVNUX0hPVVJfT0ZfMjRfSE9VUiA9IDIzO1xuZXhwb3J0IGNvbnN0IExBU1RfTUlOVVRFX09GX0hPVVIgPSA1OTtcbmV4cG9ydCBjb25zdCBPTkVfUEFHRV9ORVhUID0gMTtcbmV4cG9ydCBjb25zdCBNSUxMSVNFQ19UT19TRUMgPSAxMDAwO1xuZXhwb3J0IGNvbnN0IE9ORV9EQVkgPSAxO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfSVRFTVNfUEVSX1BBR0UgPSA1O1xuZXhwb3J0IGNvbnN0IEZJUlNUX1BBR0UgPSAxO1xuZXhwb3J0IGNvbnN0IFBBR0lOQVRJT05fRElTUExBWV9DT1VOVCA9IDM7XG4iLCJpbXBvcnQgbW9tZW50IGZyb20gXCJtb21lbnQtdGltZXpvbmVcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQge1xuICBMQVNUX0hPVVJfT0ZfMjRfSE9VUixcbiAgTEFTVF9NSU5VVEVfT0ZfSE9VUixcbiAgTUlMTElTRUNfVE9fU0VDLFxuICBPTkVfREFZXG59IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuXG5leHBvcnQgY29uc3QgZm9ybWF0Q3VycmVuY3kgPSAodmFsdWUsIHsgbG9jYWxlID0gXCJlbi1VU1wiLCAuLi5vcHRpb25zIH0pID0+IHtcbiAgY29uc3QgZGVmYXVsdE9wdGlvbnMgPSB7XG4gICAgY3VycmVuY3k6IFwiVVNEXCIsXG4gICAgbWluaW11bUZyYWN0aW9uRGlnaXRzOiAyLFxuICAgIG1heGltdW1GcmFjdGlvbkRpZ2l0czogMlxuICB9O1xuXG4gIGNvbnN0IGZvcm1hdHRlciA9IG5ldyBJbnRsLk51bWJlckZvcm1hdChsb2NhbGUsIHtcbiAgICBzdHlsZTogXCJjdXJyZW5jeVwiLFxuICAgIC4uLmRlZmF1bHRPcHRpb25zLFxuICAgIC4uLm9wdGlvbnNcbiAgfSk7XG5cbiAgcmV0dXJuIGZvcm1hdHRlci5mb3JtYXQodmFsdWUpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEZvcm1hdHRlZERhdGUgPSAoZGF0ZXRpbWUsIHRpbWVab25lKSA9PiB7XG4gIGlmICh0aW1lWm9uZSlcbiAgICByZXR1cm4gbW9tZW50XG4gICAgICAudHooZGF0ZXRpbWUgKiBNSUxMSVNFQ19UT19TRUMsIHRpbWVab25lKVxuICAgICAgLmZvcm1hdChcIk1NTU0gREQsIFlZWVlcIik7XG5cbiAgcmV0dXJuIG1vbWVudC51bml4KGRhdGV0aW1lKS5mb3JtYXQoXCJNTU1NIERELCBZWVlZXCIpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFN1bW1pdEZvcm1hdHRlZERhdGUgPSAoc3VtbWl0KSA9PiB7XG4gIGlmICghc3VtbWl0KSByZXR1cm4gbnVsbDtcblxuICBjb25zdCBzdGFydERheSA9IG1vbWVudChzdW1taXQuc3RhcnRfZGF0ZSAqIE1JTExJU0VDX1RPX1NFQykudHooXG4gICAgc3VtbWl0LnRpbWVfem9uZV9pZFxuICApO1xuICBjb25zdCBlbmREYXkgPSBtb21lbnQoc3VtbWl0LmVuZF9kYXRlICogTUlMTElTRUNfVE9fU0VDKS50eihcbiAgICBzdW1taXQudGltZV96b25lX2lkXG4gICk7XG4gIGNvbnN0IGRheXMgPSBlbmREYXkuZGlmZihzdGFydERheSwgXCJkYXlzXCIpO1xuICBsZXQgZm9ybWF0U3RhcnREYXRlID0gXCJNTU1NIERELCBZWVlZXCI7XG4gIGxldCBmb3JtYXRFbmREYXRlID0gXCJNTU1NIERELCBZWVlZXCI7XG4gIGlmIChzdGFydERheS55ZWFyKCkgPT09IGVuZERheS55ZWFyKCkpIGZvcm1hdFN0YXJ0RGF0ZSA9IFwiTU1NTSBERFwiO1xuICBpZiAoc3RhcnREYXkubW9udGgoKSA9PT0gZW5kRGF5Lm1vbnRoKCkpIGZvcm1hdEVuZERhdGUgPSBcIkRELCBZWVlZXCI7XG5cbiAgY29uc3Qgc3RhcnREYXRlID0gc3RhcnREYXkuZm9ybWF0KGZvcm1hdFN0YXJ0RGF0ZSk7XG4gIGNvbnN0IGVuZERhdGUgPSBlbmREYXkuZm9ybWF0KGZvcm1hdEVuZERhdGUpO1xuXG4gIGlmIChkYXlzID4gT05FX0RBWSkgcmV0dXJuIGAke3N0YXJ0RGF0ZX0gLSAke2VuZERhdGV9YDtcblxuICByZXR1cm4gc3RhcnREYXRlO1xufTtcblxuZXhwb3J0IGNvbnN0IGNhbGN1bGF0ZU9yZGVyVG90YWxzID0gKHsgb3JkZXIsIHN1bW1pdCwgdGlja2V0cyB9KSA9PiB7XG4gIGlmICghb3JkZXIgfHwgIXN1bW1pdCB8fCAhdGlja2V0cykgcmV0dXJuIHt9O1xuXG4gIGNvbnN0IHsgcmVmdW5kZWRfYW1vdW50LCBkaXNjb3VudF9hbW91bnQsIHRheGVzX2Ftb3VudCwgYW1vdW50IH0gPSBvcmRlcjtcbiAgY29uc3QgeyB0aWNrZXRfdHlwZXMgfSA9IHN1bW1pdDtcblxuICBjb25zdCB0aWNrZXRTdW1tYXJ5ID0gW107XG4gIGxldCBwdXJjaGFzZVRpY2tldFRvdGFsID0gMDtcblxuICBjb25zdCBjdXJyZW5jeU9iamVjdCA9IHsgY3VycmVuY3k6IG9yZGVyLmN1cnJlbmN5IH07XG5cbiAgT2JqZWN0LmtleXMob3JkZXIudGlja2V0c19leGNlcnB0X2J5X3RpY2tldF90eXBlKS5tYXAoKHRpY2tldCkgPT4ge1xuICAgIGNvbnN0IHRpY2tldFR5cGUgPSB0aWNrZXRfdHlwZXMuZmluZCgodHQpID0+IHR0Lm5hbWUgPT09IHRpY2tldCk7XG4gICAgdGlja2V0U3VtbWFyeS5wdXNoKHtcbiAgICAgIHRpY2tldF90eXBlX2lkOiB0aWNrZXRUeXBlLmlkLFxuICAgICAgdGlja2V0X3R5cGU6IHRpY2tldFR5cGUsXG4gICAgICBuYW1lOiB0aWNrZXQsXG4gICAgICBxdHk6IG9yZGVyLnRpY2tldHNfZXhjZXJwdF9ieV90aWNrZXRfdHlwZVt0aWNrZXRdXG4gICAgfSk7XG4gICAgcHVyY2hhc2VUaWNrZXRUb3RhbCArPVxuICAgICAgdGlja2V0VHlwZS5jb3N0ICogb3JkZXIudGlja2V0c19leGNlcnB0X2J5X3RpY2tldF90eXBlW3RpY2tldF07XG5cbiAgICByZXR1cm4gdGlja2V0U3VtbWFyeTtcbiAgfSk7XG5cbiAgY29uc3QgcHVyY2hhc2VUb3RhbCA9IGZvcm1hdEN1cnJlbmN5KHB1cmNoYXNlVGlja2V0VG90YWwsIGN1cnJlbmN5T2JqZWN0KTtcblxuICBjb25zdCBkaXNjb3VudFRvdGFsID0gZm9ybWF0Q3VycmVuY3koZGlzY291bnRfYW1vdW50LCBjdXJyZW5jeU9iamVjdCk7XG4gIGNvbnN0IHJlZnVuZFRvdGFsID0gZm9ybWF0Q3VycmVuY3kocmVmdW5kZWRfYW1vdW50LCBjdXJyZW5jeU9iamVjdCk7XG4gIGNvbnN0IHRheGVzVG90YWwgPSBmb3JtYXRDdXJyZW5jeSh0YXhlc19hbW91bnQsIGN1cnJlbmN5T2JqZWN0KTtcbiAgY29uc3QgYW1vdW50VG90YWwgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob3JkZXIsIFwiYW1vdW50XCIpXG4gICAgPyBmb3JtYXRDdXJyZW5jeShhbW91bnQsIGN1cnJlbmN5T2JqZWN0KVxuICAgIDogZm9ybWF0Q3VycmVuY3kocHVyY2hhc2VUb3RhbCwgY3VycmVuY3lPYmplY3QpO1xuXG4gIHJldHVybiB7XG4gICAgZGlzY291bnRUb3RhbCxcbiAgICByZWZ1bmRUb3RhbCxcbiAgICB0YXhlc1RvdGFsLFxuICAgIGFtb3VudFRvdGFsLFxuICAgIHRpY2tldFN1bW1hcnlcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRPcmRlclRpY2tldHMgPSAobWVtYmVyT3JkZXJzLCBvcmRlcklkKSA9PiB7XG4gIGNvbnN0IG9yZGVycyA9IG1lbWJlck9yZGVycy5maWx0ZXIoKG8pID0+IG8uaWQgPT09IG9yZGVySWQpO1xuICByZXR1cm4gb3JkZXJzWzBdPy5tZW1iZXJUaWNrZXRzO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEVwb2NoTG93ZXJVcHBlckluU2Vjb25kcyA9ICh0cykgPT4ge1xuICBjb25zdCBsb3dlciA9IHRzLnNldEhvdXJzKDAsIDAsIDAsIDApIC8gTUlMTElTRUNfVE9fU0VDO1xuICBjb25zdCB1cHBlciA9XG4gICAgdHMuc2V0SG91cnMoTEFTVF9IT1VSX09GXzI0X0hPVVIsIExBU1RfTUlOVVRFX09GX0hPVVIsIDAsIDApIC9cbiAgICBNSUxMSVNFQ19UT19TRUM7XG4gIHJldHVybiB7XG4gICAgbG93ZXIsXG4gICAgdXBwZXJcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRTdW1taXRSZWFzc2lnbkRhdGUgPSAoc3VtbWl0KSA9PiB7XG4gIGlmICghc3VtbWl0KSByZXR1cm4gbnVsbDtcbiAgcmV0dXJuIHN1bW1pdC5yZWFzc2lnbl90aWNrZXRfdGlsbF9kYXRlICYmXG4gICAgc3VtbWl0LnJlYXNzaWduX3RpY2tldF90aWxsX2RhdGUgPCBzdW1taXQuZW5kX2RhdGVcbiAgICA/IHN1bW1pdC5yZWFzc2lnbl90aWNrZXRfdGlsbF9kYXRlXG4gICAgOiBzdW1taXQuZW5kX2RhdGU7XG59O1xuXG5leHBvcnQgY29uc3QgZGVmYXVsdEN1cnJlbnRUaW1lID0gKCkgPT5cbiAgTWF0aC5yb3VuZCgrbmV3IERhdGUoKSAvIE1JTExJU0VDX1RPX1NFQyk7XG5cbmV4cG9ydCBjb25zdCBnZXROb3cgPSAoKSA9PiAoZGlzcGF0Y2gsIGdldFN0YXRlKSA9PiB7XG4gIGNvbnN0IHsgdGltZXJTdGF0ZSB9ID0gZ2V0U3RhdGUoKTtcbiAgcmV0dXJuIHRpbWVyU3RhdGU/Lm5vd1V0YyA9PSBudWxsID8gZGVmYXVsdEN1cnJlbnRUaW1lKCkgOiB0aW1lclN0YXRlPy5ub3dVdGM7XG59O1xuXG5leHBvcnQgY29uc3QgdXNlTm93ID0gKCkgPT4ge1xuICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG5cbiAgcmV0dXJuIGRpc3BhdGNoKGdldE5vdygpKTtcbn07XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiTXVpT3V0bGluZWRJbnB1dC1ub3RjaGVkT3V0bGluZV9fX1JvaW1SXCI7XG52YXIgXzIgPSBcIk11aVBpY2tlcnNDYWxlbmRhckhlYWRlci1sYWJlbENvbnRhaW5lcl9fX29vSTBWXCI7XG52YXIgXzMgPSBcImNhbGVuZGFyRGlzcGxheV9fX2ltX2poXCI7XG52YXIgXzQgPSBcImNvbnRhaW5lcl9fX04zWTRYXCI7XG52YXIgXzUgPSBcImRhdGVQaWNrZXJDb250YWluZXJfX19KVzJsT1wiO1xudmFyIF82ID0gXCJkYXRlcGlja2VyQ2xvc2VfX19WOWdIQ1wiO1xudmFyIF83ID0gXCJmaWx0ZXJDb250YWluZXJfX19yR3BZVlwiO1xudmFyIF84ID0gXCJmaWx0ZXJEYXRlTGFiZWxfX19pZkQ0cFwiO1xudmFyIF85ID0gXCJmaWx0ZXJJY29uX19fbDIxS0lcIjtcbnZhciBfYSA9IFwiZmlsdGVyTGFiZWxfX19fUDB3blwiO1xudmFyIF9iID0gXCJmaWx0ZXJMaXN0Q29udGFpbmVyX19fVm1kR3FcIjtcbnZhciBfYyA9IFwiZmlsdGVyTnVtQWN0aXZlX19fVnVIQ0pcIjtcbnZhciBfZCA9IFwiZmlsdGVyU29ydENvbnRhaW5lcl9fX2FyQnZRXCI7XG52YXIgX2UgPSBcImxhYmVsX19feU5GeWpcIjtcbnZhciBfZiA9IFwic2hvd0RhdGVQaWNrZXJfX19VcFFicFwiO1xudmFyIF8xMCA9IFwic29ydENvbnRhaW5lcl9fX2xSc2pVXCI7XG52YXIgXzExID0gXCJzb3J0SWNvbl9fX2ZWVjVLXCI7XG52YXIgXzEyID0gXCJzb3J0TGFiZWxfX19VcUxUQ1wiO1xudmFyIF8xMyA9IFwic29ydExpc3RDb250YWluZXJfX19jbW5CRFwiO1xuZXhwb3J0IHsgXzEgYXMgXCJNdWlPdXRsaW5lZElucHV0LW5vdGNoZWRPdXRsaW5lXCIsIF8yIGFzIFwiTXVpUGlja2Vyc0NhbGVuZGFySGVhZGVyLWxhYmVsQ29udGFpbmVyXCIsIF8zIGFzIFwiY2FsZW5kYXJEaXNwbGF5XCIsIF80IGFzIFwiY29udGFpbmVyXCIsIF81IGFzIFwiZGF0ZVBpY2tlckNvbnRhaW5lclwiLCBfNiBhcyBcImRhdGVwaWNrZXJDbG9zZVwiLCBfNyBhcyBcImZpbHRlckNvbnRhaW5lclwiLCBfOCBhcyBcImZpbHRlckRhdGVMYWJlbFwiLCBfOSBhcyBcImZpbHRlckljb25cIiwgX2EgYXMgXCJmaWx0ZXJMYWJlbFwiLCBfYiBhcyBcImZpbHRlckxpc3RDb250YWluZXJcIiwgX2MgYXMgXCJmaWx0ZXJOdW1BY3RpdmVcIiwgX2QgYXMgXCJmaWx0ZXJTb3J0Q29udGFpbmVyXCIsIF9lIGFzIFwibGFiZWxcIiwgX2YgYXMgXCJzaG93RGF0ZVBpY2tlclwiLCBfMTAgYXMgXCJzb3J0Q29udGFpbmVyXCIsIF8xMSBhcyBcInNvcnRJY29uXCIsIF8xMiBhcyBcInNvcnRMYWJlbFwiLCBfMTMgYXMgXCJzb3J0TGlzdENvbnRhaW5lclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJvcmRlckRldGFpbHNNbW91bnRfX19yM2tSQVwiO1xudmFyIF8yID0gXCJvcmRlckRldGFpbHNUaWNrZXRzX19fbTRJaktcIjtcbnZhciBfMyA9IFwib3JkZXJPcmRlck51bWJlcl9fX1JxQ2JDXCI7XG52YXIgXzQgPSBcIm9yZGVyU3VtbWFyeUJ1dHRvbl9fX3V4amh0XCI7XG52YXIgXzUgPSBcIm9yZGVyU3VtbWFyeVB1cmNoYXNlZEluZm9fX19fUkJYRVwiO1xudmFyIF82ID0gXCJvcmRlclN1bW1hcnlQdXJjaGFzZWROdW1iZXJfX19wcXlfSVwiO1xudmFyIF83ID0gXCJvcmRlclN1bW1hcnlUYWJsZV9fX1lEbnhWXCI7XG52YXIgXzggPSBcIm9yZGVyU3VtbWFyeVdyYXBwZXJfX19Sd0lFUlwiO1xuZXhwb3J0IHsgXzEgYXMgXCJvcmRlckRldGFpbHNNbW91bnRcIiwgXzIgYXMgXCJvcmRlckRldGFpbHNUaWNrZXRzXCIsIF8zIGFzIFwib3JkZXJPcmRlck51bWJlclwiLCBfNCBhcyBcIm9yZGVyU3VtbWFyeUJ1dHRvblwiLCBfNSBhcyBcIm9yZGVyU3VtbWFyeVB1cmNoYXNlZEluZm9cIiwgXzYgYXMgXCJvcmRlclN1bW1hcnlQdXJjaGFzZWROdW1iZXJcIiwgXzcgYXMgXCJvcmRlclN1bW1hcnlUYWJsZVwiLCBfOCBhcyBcIm9yZGVyU3VtbWFyeVdyYXBwZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiYXNzaWduVGlja2V0QnV0dG9uX19fenpMc2NcIjtcbnZhciBfMiA9IFwiYmxhY2tCdXR0b25fX19sOWhqOVwiO1xudmFyIF8zID0gXCJjb3B5SWNvbl9fX05rSEdPXCI7XG52YXIgXzQgPSBcImRldGFpbHNSZXF1aXJlZExhYmVsX19fWTJrb3JcIjtcbnZhciBfNSA9IFwiZGlzcGxheV9ub25lX19fQ3FwTDNcIjtcbnZhciBfNiA9IFwibGFiZWxfX196WERXelwiO1xudmFyIF83ID0gXCJvcmRlclRpY2tldENvbnRhaW5lcl9fX1pKTHprXCI7XG52YXIgXzggPSBcIm9yZGVyVGlja2V0SW5mb19fX2dlbXFCXCI7XG52YXIgXzkgPSBcIm9yZGVyVGlja2V0SW5mb0NvbnRhaW5lcl9fX19wNjZWXCI7XG52YXIgX2EgPSBcIm9yZGVyVGlja2V0Tm9Db250YWluZXJfX192cW9oTlwiO1xudmFyIF9iID0gXCJvcmRlclRpY2tldE51bWJlclRydW5jYXRlZF9fX0hYbWR3XCI7XG52YXIgX2MgPSBcIm9yZGVyV3JhcHBlcl9fX3lEQkFvXCI7XG52YXIgX2QgPSBcInJlYXNzaWduQnV0dG9uX19fUm9qTTVcIjtcbnZhciBfZSA9IFwidGFiQnV0dG9uc19fX3hUeUpBXCI7XG52YXIgX2YgPSBcInRpY2tldEFjdGlvbkJ1dHRvbnNfX19ycFNNUVwiO1xudmFyIF8xMCA9IFwidGlja2V0TGlzdENvbnRhaW5lcl9fX2NmbXJyXCI7XG52YXIgXzExID0gXCJ0aWNrZXROb19fX2EyaU05XCI7XG52YXIgXzEyID0gXCJ0aWNrZXRPd25lckVtYWlsX19fWnQ0T0VcIjtcbnZhciBfMTMgPSBcInRpY2tldFRpY2tldFR5cGVfX19acV9mMFwiO1xudmFyIF8xNCA9IFwidmlld0ZpbmlzaFRpY2tldEJ1dHRvbl9fX0hGNkltXCI7XG52YXIgXzE1ID0gXCJ2aWV3TW9yZUJ1dHRvbl9fX0tfMXpUXCI7XG5leHBvcnQgeyBfMSBhcyBcImFzc2lnblRpY2tldEJ1dHRvblwiLCBfMiBhcyBcImJsYWNrQnV0dG9uXCIsIF8zIGFzIFwiY29weUljb25cIiwgXzQgYXMgXCJkZXRhaWxzUmVxdWlyZWRMYWJlbFwiLCBfNSBhcyBcImRpc3BsYXlfbm9uZVwiLCBfNiBhcyBcImxhYmVsXCIsIF83IGFzIFwib3JkZXJUaWNrZXRDb250YWluZXJcIiwgXzggYXMgXCJvcmRlclRpY2tldEluZm9cIiwgXzkgYXMgXCJvcmRlclRpY2tldEluZm9Db250YWluZXJcIiwgX2EgYXMgXCJvcmRlclRpY2tldE5vQ29udGFpbmVyXCIsIF9iIGFzIFwib3JkZXJUaWNrZXROdW1iZXJUcnVuY2F0ZWRcIiwgX2MgYXMgXCJvcmRlcldyYXBwZXJcIiwgX2QgYXMgXCJyZWFzc2lnbkJ1dHRvblwiLCBfZSBhcyBcInRhYkJ1dHRvbnNcIiwgX2YgYXMgXCJ0aWNrZXRBY3Rpb25CdXR0b25zXCIsIF8xMCBhcyBcInRpY2tldExpc3RDb250YWluZXJcIiwgXzExIGFzIFwidGlja2V0Tm9cIiwgXzEyIGFzIFwidGlja2V0T3duZXJFbWFpbFwiLCBfMTMgYXMgXCJ0aWNrZXRUaWNrZXRUeXBlXCIsIF8xNCBhcyBcInZpZXdGaW5pc2hUaWNrZXRCdXR0b25cIiwgXzE1IGFzIFwidmlld01vcmVCdXR0b25cIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiYnV0dG9uQ2FuY2VsbGVkX19fRXJsRFpcIjtcbnZhciBfMiA9IFwiYnV0dG9uQ29tcGxldGVfX19sbFdrWlwiO1xudmFyIF8zID0gXCJidXR0b25JbmNvbXBsZXRlX19fVG9sSGdcIjtcbnZhciBfNCA9IFwiYnV0dG9uUGlsbF9fX3pxMnRjXCI7XG52YXIgXzUgPSBcImJ1dHRvblJlZnVuZFJlcXVlc3RlZF9fX3BXdDMwXCI7XG52YXIgXzYgPSBcImJ1dHRvblVuYXNzaWduZWRfX19ZRGQ4WFwiO1xudmFyIF83ID0gXCJ0aWNrZXRTdGF0dXNDb250YWluZXJfX19xajZmYlwiO1xuZXhwb3J0IHsgXzEgYXMgXCJidXR0b25DYW5jZWxsZWRcIiwgXzIgYXMgXCJidXR0b25Db21wbGV0ZVwiLCBfMyBhcyBcImJ1dHRvbkluY29tcGxldGVcIiwgXzQgYXMgXCJidXR0b25QaWxsXCIsIF81IGFzIFwiYnV0dG9uUmVmdW5kUmVxdWVzdGVkXCIsIF82IGFzIFwiYnV0dG9uVW5hc3NpZ25lZFwiLCBfNyBhcyBcInRpY2tldFN0YXR1c0NvbnRhaW5lclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJub09yZGVyc0ZvdW5kX19fQW9nMnBcIjtcbnZhciBfMiA9IFwic3VtbWl0VGl0bGVEYXRlX19fWjE5UG1cIjtcbnZhciBfMyA9IFwid2lkZ2V0SGVhZGVyX19feVk1Z2VcIjtcbmV4cG9ydCB7IF8xIGFzIFwibm9PcmRlcnNGb3VuZFwiLCBfMiBhcyBcInN1bW1pdFRpdGxlRGF0ZVwiLCBfMyBhcyBcIndpZGdldEhlYWRlclwiIH1cbiIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ2xvc2VcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbC9Db250ZW50Q29weVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsL0Vycm9yXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRmlsdGVyTGlzdFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsL0ltcG9ydEV4cG9ydFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsL1NlYXJjaFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvRGl2aWRlclwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL0lucHV0QmFzZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL1N0YWNrXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvVGFiXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvVGFic1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL3N0eWxlc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL3VzZU1lZGlhUXVlcnlcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS94LWRhdGUtcGlja2Vycy9BZGFwdGVyRGF5anNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS94LWRhdGUtcGlja2Vycy9EYXRlUGlja2VyXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkveC1kYXRlLXBpY2tlcnMvTG9jYWxpemF0aW9uUHJvdmlkZXJcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQHJlZHV4anMvdG9vbGtpdFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAc2VudHJ5L3JlYWN0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImRheWpzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm1vbWVudC10aW1lem9uZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3NlY3VyaXR5L2FjdGlvbnNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9zZWN1cml0eS9tZXRob2RzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvYWN0aW9uc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJwcm9wLXR5cGVzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0LWkxOG5leHRcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVhY3QtaW5maW5pdGUtc2Nyb2xsLWNvbXBvbmVudFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWFjdC1yZWR1eFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWFjdC9qc3gtcnVudGltZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWR1eFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWR1eC1wZXJzaXN0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlZHV4LXBlcnNpc3QvaW50ZWdyYXRpb24vcmVhY3RcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVkdXgtcGVyc2lzdC9saWIvc3RvcmFnZVwiKTsiLCIvLyBUaGUgbW9kdWxlIGNhY2hlXG52YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XG5cbi8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG5mdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuXHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcblx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuXHR9XG5cdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG5cdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xuXHRcdC8vIG5vIG1vZHVsZS5pZCBuZWVkZWRcblx0XHQvLyBubyBtb2R1bGUubG9hZGVkIG5lZWRlZFxuXHRcdGV4cG9ydHM6IHt9XG5cdH07XG5cblx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG5cdF9fd2VicGFja19tb2R1bGVzX19bbW9kdWxlSWRdKG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG5cdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG5cdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbn1cblxuIiwiLy8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbl9fd2VicGFja19yZXF1aXJlX18ubiA9IChtb2R1bGUpID0+IHtcblx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG5cdFx0KCkgPT4gKG1vZHVsZVsnZGVmYXVsdCddKSA6XG5cdFx0KCkgPT4gKG1vZHVsZSk7XG5cdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsIHsgYTogZ2V0dGVyIH0pO1xuXHRyZXR1cm4gZ2V0dGVyO1xufTsiLCIvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9ucyBmb3IgaGFybW9ueSBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSAoZXhwb3J0cywgZGVmaW5pdGlvbikgPT4ge1xuXHRmb3IodmFyIGtleSBpbiBkZWZpbml0aW9uKSB7XG5cdFx0aWYoX193ZWJwYWNrX3JlcXVpcmVfXy5vKGRlZmluaXRpb24sIGtleSkgJiYgIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBrZXkpKSB7XG5cdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZGVmaW5pdGlvbltrZXldIH0pO1xuXHRcdH1cblx0fVxufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSAob2JqLCBwcm9wKSA9PiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCkpIiwiLy8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5yID0gKGV4cG9ydHMpID0+IHtcblx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG5cdH1cblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbn07IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cbmltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IFByb3ZpZGVyIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgeyBQZXJzaXN0R2F0ZSB9IGZyb20gXCJyZWR1eC1wZXJzaXN0L2ludGVncmF0aW9uL3JlYWN0XCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCb3ggfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlSW5pdFN0b3JlIH0gZnJvbSBcIi4vc3RvcmVcIjtcbmltcG9ydCBNeU9yZGVyc1RpY2tldHMgZnJvbSBcIi4vY29tcG9uZW50cy9NeU9yZGVyc1RpY2tldHNcIjtcbmltcG9ydCB7IFJFU0VUX1NUQVRFLCBzZXRTdW1taXQsIHNldFVzZXIgfSBmcm9tIFwiLi9hY3Rpb25zXCI7XG5cbmZ1bmN0aW9uIE15T3JkZXJzTXlUaWNrZXRzV2lkZ2V0KHByb3BzKSB7XG4gIGNvbnN0IHsgbG9naW5VcmwsIHN1cHBvcnRFbWFpbCwgc3VtbWl0LCBhcGlCYXNlVXJsLCB1c2VyLCBjbGllbnRJZCB9ID0gcHJvcHM7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcblxuICBjb25zdCB7IHN0b3JlLCBwZXJzaXN0b3IgfSA9IHVzZUluaXRTdG9yZSh7XG4gICAgbG9naW5VcmwsXG4gICAgc3VwcG9ydEVtYWlsLFxuICAgIHN1bW1pdCxcbiAgICB1c2VyLFxuICAgIGFwaUJhc2VVcmwsXG4gICAgY2xpZW50SWRcbiAgfSk7XG5cbiAgY29uc3QgaGFuZGxlQmVmb3JlTGlmdCA9ICgpID0+IHtcbiAgICBjb25zdCBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHdpbmRvdy5sb2NhdGlvbi5zZWFyY2gpO1xuICAgIGNvbnN0IGZsdXNoID0gcGFyYW1zLmhhcyhcImZsdXNoU3RhdGVcIik7XG4gICAgaWYgKGZsdXNoKSBzdG9yZS5kaXNwYXRjaCh7IHR5cGU6IFJFU0VUX1NUQVRFLCBwYXlsb2FkOiBudWxsIH0pO1xuICB9O1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc3RvcmUuZGlzcGF0Y2goc2V0U3VtbWl0KHN1bW1pdCkpO1xuICB9LCBbc3VtbWl0XSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzdG9yZS5kaXNwYXRjaChzZXRVc2VyKHVzZXIpKTtcbiAgfSwgW3VzZXJdKTtcblxuICByZXR1cm4gKFxuICAgIDxQcm92aWRlciBzdG9yZT17c3RvcmV9PlxuICAgICAgPFBlcnNpc3RHYXRlXG4gICAgICAgIG9uQmVmb3JlTGlmdD17aGFuZGxlQmVmb3JlTGlmdH1cbiAgICAgICAgbG9hZGluZz17bnVsbH1cbiAgICAgICAgcGVyc2lzdG9yPXtwZXJzaXN0b3J9XG4gICAgICA+XG4gICAgICAgIDxCb3ggc3g9e3sgcGFkZGluZzogeyB4czogMiwgbWQ6IDAsIGxnOiAwIH0gfX0+XG4gICAgICAgICAgPGgzPnt0KFwib3JkZXJzLnRpdGxlXCIpfTwvaDM+XG4gICAgICAgIDwvQm94PlxuICAgICAgICA8TXlPcmRlcnNUaWNrZXRzXG4gICAgICAgICAgbG9naW5Vcmw9e2xvZ2luVXJsfVxuICAgICAgICAgIHN1cHBvcnRFbWFpbD17c3VwcG9ydEVtYWlsfVxuICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgIGFwaUJhc2VVcmw9e2FwaUJhc2VVcmx9XG4gICAgICAgIC8+XG4gICAgICA8L1BlcnNpc3RHYXRlPlxuICAgIDwvUHJvdmlkZXI+XG4gICk7XG59XG5cbk15T3JkZXJzTXlUaWNrZXRzV2lkZ2V0LnByb3BUeXBlcyA9IHtcbiAgbG9naW5Vcmw6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHN1cHBvcnRFbWFpbDogUHJvcFR5cGVzLnN0cmluZyxcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0LFxuICBhcGlCYXNlVXJsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICB1c2VyOiBQcm9wVHlwZXMub2JqZWN0XG59O1xuXG5leHBvcnQgZGVmYXVsdCBNeU9yZGVyc015VGlja2V0c1dpZGdldDtcbiJdLCJuYW1lcyI6WyJnZXRBY2Nlc3NUb2tlblNhZmVseSIsImF1dGhFcnJvckhhbmRsZXIiLCJnZXRSZXF1ZXN0IiwiZGVsZXRlUmVxdWVzdCIsImNyZWF0ZUFjdGlvbiIsInN0b3BMb2FkaW5nIiwic3RhcnRMb2FkaW5nIiwicHV0UmVxdWVzdCIsIkZJUlNUX1BBR0UiLCJERUZBVUxUX0lURU1TX1BFUl9QQUdFIiwiT05FX1BBR0VfTkVYVCIsIlJFU0VUX1NUQVRFIiwiUkVTRVRfRklMVEVSIiwiR0VUX1VTRVJfT1JERVJTIiwiUkVGVU5EX09SREVSIiwiU0VUX0FDVElWRV9PUkRFUl9JRCIsIkZJTFRFUl9VU0VSX09SREVSUyIsIkdFVF9USUNLRVRTIiwiQVNTSUdOX1RJQ0tFVCIsIlJFTU9WRV9USUNLRVRfQVRURU5ERUUiLCJSRUZVTkRfVElDS0VUIiwiUkVTRU5EX05PVElGSUNBVElPTiIsIkdFVF9USUNLRVRTX0JZX09SREVSIiwiR0VUX1RJQ0tFVFNfQllfT1JERVJfRVJST1IiLCJHRVRfT1JERVJfVElDS0VUX0RFVEFJTFMiLCJHRVRfVElDS0VUX0RFVEFJTFMiLCJUSUNLRVRfQVRURU5ERUVfS0VZUyIsImVtYWlsIiwiZmlyc3ROYW1lIiwibGFzdE5hbWUiLCJjb21wYW55IiwiZGlzY2xhaW1lckFjY2VwdGVkIiwiZXh0cmFRdWVzdGlvbnMiLCJTVEFSVF9MT0FESU5HX0lEUF9QUk9GSUxFIiwiU1RPUF9MT0FESU5HX0lEUF9QUk9GSUxFIiwiVVBEQVRFX0lEUF9QUk9GSUxFIiwiU0VUX1VTRVIiLCJTRVRfU1VNTUlUIiwiR0VUX01BSU5fRVhUUkFfUVVFU1RJT05TIiwiUkVDRUlWRV9NQVJLRVRJTkdfU0VUVElOR1MiLCJDTEVBUl9NQVJLRVRJTkdfU0VUVElOR1MiLCJyZXNldFN0YXRlIiwiZGlzcGF0Y2giLCJyZXNldEZpbHRlciIsIkZJTFRFUl9WQVJfREFURSIsIkZJTFRFUl9WQVJfT1JERVJfTlVNQkVSIiwicGFyc2VGaWx0ZXIiLCJmaWx0ZXJPYmoiLCJmaWx0ZXIiLCJ0eXBlIiwicHVzaCIsIm5hbWUiLCJsb3dlciIsInVwcGVyIiwidmFsdWUiLCJnZXRTb3J0RGlyZWN0aW9uIiwiZGlyZWN0aW9uIiwiZ2V0VXNlck9yZGVycyIsIl9yZWYiLCJwYWdlIiwicGVyUGFnZSIsInNvcnQiLCJuZXh0IiwiZ2V0U3RhdGUiLCJfcmVmMiIsImFwaUJhc2VVcmwiLCJ3aWRnZXRTdGF0ZSIsInN1bW1pdCIsImFjY2Vzc1Rva2VuIiwiY2F0Y2giLCJQcm9taXNlIiwicmVqZWN0IiwicGFyYW1zIiwiYWNjZXNzX3Rva2VuIiwib3JkZXIiLCJyZWxhdGlvbnMiLCJwZXJfcGFnZSIsIk9iamVjdCIsImtleXMiLCJsZW5ndGgiLCJmaWx0ZXJzIiwiaWQiLCJ0aGVuIiwicGF5bG9hZCIsImUiLCJzZXRBY3RpdmVPcmRlcklkIiwib3JkZXJJZCIsInNldFVzZXIiLCJ1c2VyIiwidXBkYXRlUHJvZmlsZSIsInByb2ZpbGUiLCJfcmVmMyIsImlkcEJhc2VVcmwiLCJnZXRVc2VyVGlja2V0cyIsIl9yZWY0IiwiX3JlZjUiLCJ1c2VyU3RhdGUiLCJ1c2VyUHJvZmlsZSIsImV4cGFuZCIsImZpZWxkcyIsImdldFRpY2tldHNCeU9yZGVyIiwiX3JlZjYiLCJfcmVmNyIsInJlc2VuZE5vdGlmaWNhdGlvbiIsInRpY2tldCIsIl9yZWY4IiwibWVzc2FnZSIsIm9yZGVyX2lkIiwicmVmdW5kVGlja2V0IiwiX3JlZjkiLCJfcmVmMTAiLCJvcmRlclN0YXRlIiwiY3VycmVudF9wYWdlIiwib3JkZXJQYWdlIiwidGlja2V0U3RhdGUiLCJ0aWNrZXRQYWdlIiwic2V0U3VtbWl0IiwiUmVhY3QiLCJ1c2VTdGF0ZSIsIlByb3BUeXBlcyIsIlN0YWNrIiwidXNlVHJhbnNsYXRpb24iLCJkYXlqcyIsIkFkYXB0ZXJEYXlqcyIsIkxvY2FsaXphdGlvblByb3ZpZGVyIiwiRGF0ZVBpY2tlciIsIkNsb3NlSWNvbiIsImdldEVwb2NoTG93ZXJVcHBlckluU2Vjb25kcyIsInN0eWxlcyIsImpzeCIsIl9qc3giLCJqc3hzIiwiX2pzeHMiLCJGcmFnbWVudCIsIl9GcmFnbWVudCIsIkJhc2ljRGF0ZVBpY2tlciIsIm9uRmlsdGVyIiwib25SZXNldCIsInQiLCJub3ciLCJkYXRlVmFsdWUiLCJzZXREYXRlVmFsdWUiLCJvbkRhdGVDaGFuZ2UiLCJ2YWwiLCJkYXRlIiwiRGF0ZSIsIiRkIiwib25SZXNldEFjdGlvbiIsImNoaWxkcmVuIiwiY2xhc3NOYW1lIiwiZmlsdGVyRGF0ZUxhYmVsIiwiYWxpZ25JdGVtcyIsInN4IiwicHQiLCJwYiIsImRhdGVQaWNrZXJDb250YWluZXIiLCJmb250U2l6ZSIsImRhdGVwaWNrZXJDbG9zZSIsIm9uQ2xpY2siLCJkYXRlQWRhcHRlciIsImNhbGVuZGFyRGlzcGxheSIsIm9uQ2hhbmdlIiwicHJvcFR5cGVzIiwiZnVuYyIsInVzZVJlZiIsInVzZUVmZmVjdCIsIkZpbHRlckxpc3RJY29uIiwiQm94IiwiRmlsdGVyIiwic2hvd0ZpbHRlckxpc3QiLCJzZXRTaG93RmlsdGVyTGlzdCIsInNob3dEYXRlcGlja2VyIiwic2V0U2hvd0RhdGVwaWNrZXIiLCJmaWx0ZXJOdW1BY3RpdmUiLCJzZXRGaWx0ZXJOdW1BY3RpdmUiLCJmaWx0ZXJSZWYiLCJoYW5kbGVGaWx0ZXJDbGlja091dHNpZGUiLCJldmVudCIsImN1cnJlbnQiLCJjb250YWlucyIsInRhcmdldCIsImRvY3VtZW50IiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJ0b2dnbGUiLCJmaWx0ZXJDb250YWluZXIiLCJyZWYiLCJmaWx0ZXJJY29uIiwiZmlsdGVyTGFiZWwiLCJmaWx0ZXJMaXN0Q29udGFpbmVyIiwiY29udGFpbmVyIiwic2hvd0RhdGVQaWNrZXIiLCJzdHlsZWQiLCJTZWFyY2hJY29uIiwiSW5wdXRCYXNlIiwiU2VhcmNoQ29udGFpbmVyIiwicG9zaXRpb24iLCJtYXJnaW5SaWdodCIsIm1hcmdpbkxlZnQiLCJ3aWR0aCIsImRpc3BsYXkiLCJTZWFyY2hJY29uV3JhcHBlciIsImhlaWdodCIsImp1c3RpZnlDb250ZW50IiwiU3R5bGVkSW5wdXRCYXNlIiwiY29sb3IiLCJib3JkZXJCb3R0b20iLCJwYWRkaW5nTGVmdCIsInBhZGRpbmdSaWdodCIsIkNsb3NlSWNvbldyYXBwZXIiLCJwYWRkaW5nIiwidG9wIiwicmlnaHQiLCJjdXJzb3IiLCJ6SW5kZXgiLCJTZWFyY2giLCJvblNlYXJjaCIsInNob3dDbG9zZSIsInNldFNob3dDbG9zZSIsInNlYXJjaFZhbHVlIiwic2V0U2VhcmNoVmFsdWUiLCJvbktleURvd24iLCJrZXkiLCJuYXRpdmVFdmVudCIsInJlc2V0U2VhcmNoIiwicGxhY2Vob2xkZXIiLCJpbnB1dFByb3BzIiwiQnV0dG9uIiwiSW1wb3J0RXhwb3J0SWNvbiIsIlNvcnQiLCJvblNvcnQiLCJzaG93U29ydCIsInNldFNob3dTb3J0Iiwic29ydFJlZiIsImhhbmRsZVNvcnRDbGlja091dHNpZGUiLCJzb3J0Q29udGFpbmVyIiwic29ydEljb24iLCJzb3J0TGFiZWwiLCJzb3J0TGlzdENvbnRhaW5lciIsImxhYmVsIiwiR3JpZCIsIkZpbHRlclNvcnRTZWFyY2giLCJqdXN0aWZ5IiwiaXRlbSIsInhzIiwiZ2FwIiwiZmlsdGVyU29ydENvbnRhaW5lciIsInVzZURpc3BhdGNoIiwidXNlU2VsZWN0b3IiLCJzaGFsbG93RXF1YWwiLCJJbmZpbml0ZVNjcm9sbCIsIk9yZGVyc0xpc3QiLCJnZXRTdW1taXRGb3JtYXR0ZWREYXRlIiwiTXlPcmRlcnNUaWNrZXRzIiwibWVtYmVyT3JkZXJzIiwib3JkZXJzX2N1cnJlbnRfcGFnZSIsIm9yZGVyc19wZXJfcGFnZSIsIm9yZGVyc190b3RhbCIsInN0YXRlIiwiaGFzTW9yZSIsInNldEhhc01vcmUiLCJzZWFyY2hOZXh0Iiwic2V0U2VhcmNoTmV4dCIsInNldEZpbHRlciIsInNldFNvcnQiLCJmZXRjaERhdGEiLCJyZXMiLCJyZXNwb25zZSIsImRhdGEiLCJ3aWRnZXRIZWFkZXIiLCJtZCIsImxnIiwic3VtbWl0VGl0bGVEYXRlIiwiZGF0YUxlbmd0aCIsInNjcm9sbFRocmVzaG9sZCIsIm1hcCIsIm5vT3JkZXJzRm91bmQiLCJEaXZpZGVyIiwiY2FsY3VsYXRlT3JkZXJUb3RhbHMiLCJmb3JtYXRDdXJyZW5jeSIsIk9yZGVyU3VtbWFyeVRhYmxlIiwidGlja2V0cyIsImRpc2NvdW50VG90YWwiLCJyZWZ1bmRUb3RhbCIsInRheGVzVG90YWwiLCJhbW91bnRUb3RhbCIsInRpY2tldFN1bW1hcnkiLCJodW5kcmVkIiwib3JkZXJTdW1tYXJ5VGFibGUiLCJ0aWNrZXRUb3RhbCIsInF0eSIsInRpY2tldF90eXBlIiwiY29zdCIsImFsaWduIiwiY3VycmVuY3kiLCJjcmVhdGVkIiwiZGlzY291bnRfYW1vdW50IiwidGF4ZXNfYW1vdW50Iiwic3RhdHVzIiwic2hhcGUiLCJzdHJpbmciLCJudW1iZXIiLCJvYmplY3QiLCJhcnJheU9mIiwiUmVmdW5kRW1haWxTdXBwb3J0Iiwib25SZWZ1bmRDbGljayIsIm9uUmVmdW5kRGV0YWlsQ2xpY2siLCJvbkVtYWlsU3VwcG9ydENsaWNrIiwib3JkZXJTdW1tYXJ5QnV0dG9uIiwidmFyaWFudCIsInNpemUiLCJPcmRlclN1bW1hcnkiLCJvcmRlclN1bW1hcnlXcmFwcGVyIiwicHgiLCJvcmRlclN1bW1hcnlQdXJjaGFzZWRJbmZvIiwiT3JkZXJMaXN0VGlja2V0cyIsIlBBR0lOQVRJT05fRElTUExBWV9DT1VOVCIsIk9yZGVyTGlzdEl0ZW0iLCJ0b3RhbCIsIm9uUGFnaW5hdGVDbGljayIsIml0ZW1zVG9EaXNwbGF5Iiwic2V0SXRlbXNUb0Rpc3BsYXkiLCJzbGljZWRUaWNrZXRzIiwic2xpY2UiLCJvblZpZXdNb3JlIiwib25WaWV3TGVzcyIsInZpZXdNb3JlQnV0dG9uIiwiVGlja2V0U3RhdHVzIiwiT3JkZXJOdW1iZXIiLCJnZXRTdW1taXRSZWFzc2lnbkRhdGUiLCJ1c2VOb3ciLCJnZXRBY3RpdmVCdXR0b25BY3Rpb25zIiwib3duZXIiLCJ2aWV3RmluaXNoVGlja2V0QnV0dG9uIiwic2hvd1JlYXNzaWduQnV0dG9uIiwicmVhc3NpZ25EYXRlIiwiaXNSZWFzc2lnbmFibGUiLCJyZWFzc2lnbkJ1dHRvbiIsIm9yZGVyV3JhcHBlciIsInRpY2tldFRpY2tldFR5cGUiLCJ0aWNrZXRPd25lckVtYWlsIiwiaXNfYWN0aXZlIiwidGlja2V0Tm8iLCJjb3B5IiwidHJ1bmNhdGVkIiwidGlja2V0QWN0aW9uQnV0dG9ucyIsImFzc2lnblRpY2tldEJ1dHRvbiIsInRvdGFsX3JlZnVuZGVkX2Ftb3VudCIsIkNvbnRlbnRDb3B5SWNvbiIsIm9yZGVyVGlja2V0Tm9Db250YWluZXIiLCJvcmRlclRpY2tldE51bWJlclRydW5jYXRlZCIsImNvcHlJY29uIiwibmF2aWdhdG9yIiwiY2xpcGJvYXJkIiwid3JpdGVUZXh0IiwiYm9vbCIsIlRhYnMiLCJUYWIiLCJFcnJvckljb24iLCJUYWJQYW5lbCIsInByb3BzIiwiaW5kZXgiLCJyb2xlIiwiaGlkZGVuIiwiT3JkZXJzTGlzdERlc2t0b3BNb2JpbGUiLCJpc01vYmlsZSIsImRldGFpbHNSZXF1aXJlZCIsInNldFZhbHVlIiwiaGFuZGxlQ2hhbmdlIiwiXyIsIm5ld1ZhbHVlIiwibW9yZURldGFpbHMiLCJkZXRhaWxzUmVxdWlyZWRMYWJlbCIsInRpY2tldExpc3RDb250YWluZXIiLCJib3JkZXJDb2xvciIsInRleHRDb2xvciIsIlRhYkluZGljYXRvclByb3BzIiwic3R5bGUiLCJiYWNrZ3JvdW5kIiwidGFiQnV0dG9ucyIsInVzZVRoZW1lIiwidXNlTWVkaWFRdWVyeSIsImdldE9yZGVyVGlja2V0cyIsImdldEZvcm1hdHRlZERhdGUiLCJsYXN0X3BhZ2UiLCJ0aGVtZSIsImJyZWFrcG9pbnRzIiwiZG93biIsImlzTW9iaWxlVmlld2FibGUiLCJzZXRNb2JpbGVWaWV3YWJsZSIsIm1lbWJlclRpY2tldHMiLCJmaW5kIiwiZmV0Y2hUaWNrZXRzQnlPcmRlciIsImNvbnNvbGUiLCJsb2ciLCJ0aWNrZXRzX3BhZ2VfY3VycmVudCIsIm9yZGVyVGlja2V0SW5mb0NvbnRhaW5lciIsIm9yZGVyVGlja2V0SW5mbyIsImJsYWNrQnV0dG9uIiwicm93U3BhY2luZyIsImNvbHVtblNwYWNpbmciLCJzbSIsIm9yZGVyVGlja2V0Q29udGFpbmVyIiwiZGlzcGxheV9ub25lIiwiZmxleERpcmVjdGlvbiIsInRpY2tldHNfdG90YWwiLCJDb250YWluZXIiLCJpc0FjdGl2ZSIsInJlZnVuZF9yZXF1ZXN0cyIsInIiLCJ0aWNrZXRfc3RhdHVzX2luY29tcGxldGUiLCJ0aWNrZXRfdW5hc3NpZ25lZCIsIm93bmVyX2lkIiwidGlja2V0X2NvbXBsZXRlIiwidGlja2V0U3RhdHVzQ29udGFpbmVyIiwiYnV0dG9uUGlsbCIsImJ1dHRvblJlZnVuZFJlcXVlc3RlZCIsImJ1dHRvbkluY29tcGxldGUiLCJidXR0b25VbmFzc2lnbmVkIiwiYnV0dG9uQ29tcGxldGUiLCJidXR0b25DYW5jZWxsZWQiLCJMT0dPVVRfVVNFUiIsIkRFRkFVTFRfU1RBVEUiLCJ3aWRnZXRMb2FkaW5nIiwiZXJyb3JzIiwibG9hZGluZyIsImlzT3JkZXJMb2FkaW5nIiwib3JkZXJzX2xhc3RfcGFnZSIsInRpY2tldF9jdXJyZW50X3BhZ2UiLCJ0aWNrZXRfbGFzdF9wYWdlIiwidGlja2V0X3Blcl9wYWdlIiwidGlja2V0X3RvdGFsIiwiV2lkZ2V0UmVkdWNlciIsImFyZ3VtZW50cyIsInVuZGVmaW5lZCIsImZvcm1lck9yZGVyIiwibyIsInVwZGF0ZWRPcmRlciIsInRpY2tldHNfcGFnZV9sYXN0IiwibW8iLCJ1c2VNZW1vIiwiY29uZmlndXJlU3RvcmUiLCJwZXJzaXN0U3RvcmUiLCJwZXJzaXN0UmVkdWNlciIsIkZMVVNIIiwiUkVIWURSQVRFIiwiUEFVU0UiLCJQRVJTSVNUIiwiUFVSR0UiLCJSRUdJU1RFUiIsInN0b3JhZ2UiLCJjb21iaW5lUmVkdWNlcnMiLCJnZXRTdG9yZSIsImNsaWVudElkIiwibG9naW5VcmwiLCJyZWR1Y2VycyIsInN0b3JlIiwicmVkdWNlciIsIm1pZGRsZXdhcmUiLCJnZXREZWZhdWx0TWlkZGxld2FyZSIsInRodW5rIiwiZXh0cmFBcmd1bWVudCIsImltbXV0YWJsZUNoZWNrIiwic2VyaWFsaXphYmxlQ2hlY2siLCJpZ25vcmVkQWN0aW9ucyIsInVzZUluaXRTdG9yZSIsImNvbmZpZyIsInBlcnNpc3RvciIsImluaXRMb2dPdXQiLCJnZXRBY2Nlc3NUb2tlbiIsIlNlbnRyeSIsImNhcHR1cmVFeGNlcHRpb24iLCJMQVNUX0hPVVJfT0ZfMjRfSE9VUiIsIkxBU1RfTUlOVVRFX09GX0hPVVIiLCJNSUxMSVNFQ19UT19TRUMiLCJPTkVfREFZIiwibW9tZW50IiwibG9jYWxlIiwib3B0aW9ucyIsImRlZmF1bHRPcHRpb25zIiwibWluaW11bUZyYWN0aW9uRGlnaXRzIiwibWF4aW11bUZyYWN0aW9uRGlnaXRzIiwiZm9ybWF0dGVyIiwiSW50bCIsIk51bWJlckZvcm1hdCIsImZvcm1hdCIsImRhdGV0aW1lIiwidGltZVpvbmUiLCJ0eiIsInVuaXgiLCJzdGFydERheSIsInN0YXJ0X2RhdGUiLCJ0aW1lX3pvbmVfaWQiLCJlbmREYXkiLCJlbmRfZGF0ZSIsImRheXMiLCJkaWZmIiwiZm9ybWF0U3RhcnREYXRlIiwiZm9ybWF0RW5kRGF0ZSIsInllYXIiLCJtb250aCIsInN0YXJ0RGF0ZSIsImVuZERhdGUiLCJyZWZ1bmRlZF9hbW91bnQiLCJhbW91bnQiLCJ0aWNrZXRfdHlwZXMiLCJwdXJjaGFzZVRpY2tldFRvdGFsIiwiY3VycmVuY3lPYmplY3QiLCJ0aWNrZXRzX2V4Y2VycHRfYnlfdGlja2V0X3R5cGUiLCJ0aWNrZXRUeXBlIiwidHQiLCJ0aWNrZXRfdHlwZV9pZCIsInB1cmNoYXNlVG90YWwiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJvcmRlcnMiLCJ0cyIsInNldEhvdXJzIiwicmVhc3NpZ25fdGlja2V0X3RpbGxfZGF0ZSIsImRlZmF1bHRDdXJyZW50VGltZSIsIk1hdGgiLCJyb3VuZCIsImdldE5vdyIsInRpbWVyU3RhdGUiLCJub3dVdGMiLCJQcm92aWRlciIsIlBlcnNpc3RHYXRlIiwiTXlPcmRlcnNNeVRpY2tldHNXaWRnZXQiLCJzdXBwb3J0RW1haWwiLCJoYW5kbGVCZWZvcmVMaWZ0IiwiVVJMU2VhcmNoUGFyYW1zIiwid2luZG93IiwibG9jYXRpb24iLCJzZWFyY2giLCJmbHVzaCIsImhhcyIsIm9uQmVmb3JlTGlmdCJdLCJzb3VyY2VSb290IjoiIn0=