openstack-uicore-foundation 4.0.98 → 4.0.99

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.
Files changed (95) hide show
  1. package/lib/components/ajaxloader.js +1 -184
  2. package/lib/components/attendance-tracker.js +1 -1992
  3. package/lib/components/bulk-actions-selector.js +1 -194
  4. package/lib/components/circle-button.js +1 -223
  5. package/lib/components/clock.js +1 -678
  6. package/lib/components/exclusive-wrapper.js +1 -151
  7. package/lib/components/extra-questions.js +1 -1902
  8. package/lib/components/form-validation.js +1 -190
  9. package/lib/components/forms/rsvp-form.js +1 -940
  10. package/lib/components/forms/simple-form.js +1 -708
  11. package/lib/components/free-text-search.js +1 -2042
  12. package/lib/components/google-map.js +1 -576
  13. package/lib/components/index.js +1 -12840
  14. package/lib/components/inputs/access-levels-input.js +1 -2306
  15. package/lib/components/inputs/action-dropdown.js +1 -219
  16. package/lib/components/inputs/checkbox-list.js +1 -339
  17. package/lib/components/inputs/company-input.js +1 -2341
  18. package/lib/components/inputs/country-dropdown.js +1 -2399
  19. package/lib/components/inputs/country-input.js +1 -2302
  20. package/lib/components/inputs/datetimepicker.js +1 -314
  21. package/lib/components/inputs/dropdown.js +1 -259
  22. package/lib/components/inputs/editor-input.js +1 -270
  23. package/lib/components/inputs/event-input.js +1 -2280
  24. package/lib/components/inputs/free-multi-text-input.js +1 -252
  25. package/lib/components/inputs/group-input.js +1 -2275
  26. package/lib/components/inputs/grouped-dropdown.js +1 -244
  27. package/lib/components/inputs/language-input.js +1 -2307
  28. package/lib/components/inputs/member-input.js +1 -2302
  29. package/lib/components/inputs/operator-input.js +1 -328
  30. package/lib/components/inputs/organization-input.js +1 -2325
  31. package/lib/components/inputs/promocode-input.js +1 -2310
  32. package/lib/components/inputs/radio-list.js +1 -297
  33. package/lib/components/inputs/registration-company-input.js +1 -2470
  34. package/lib/components/inputs/speaker-input.js +1 -2336
  35. package/lib/components/inputs/sponsor-input.js +1 -2284
  36. package/lib/components/inputs/stepped-select.js +1 -197
  37. package/lib/components/inputs/summit-days-select.js +1 -162
  38. package/lib/components/inputs/summit-input.js +1 -2282
  39. package/lib/components/inputs/summit-venues-select.js +1 -172
  40. package/lib/components/inputs/tag-input.js +1 -2352
  41. package/lib/components/inputs/text-input.js +1 -202
  42. package/lib/components/inputs/textarea-input.js +1 -181
  43. package/lib/components/inputs/ticket-types-input.js +1 -2338
  44. package/lib/components/inputs/upload-input-v2.js +1 -834
  45. package/lib/components/inputs/upload-input.js +1 -391
  46. package/lib/components/progressive-img.js +1 -289
  47. package/lib/components/raw-html.js +1 -125
  48. package/lib/components/schedule-builder-constants.js +1 -81
  49. package/lib/components/schedule-builder-view.js +1 -1684
  50. package/lib/components/sections/panel.js +1 -156
  51. package/lib/components/simple-link-list.js +1 -790
  52. package/lib/components/sponsored-project-input.js +1 -2281
  53. package/lib/components/summit-dropdown.js +1 -214
  54. package/lib/components/table-editable.js +1 -895
  55. package/lib/components/table-selectable.js +1 -552
  56. package/lib/components/table-sortable.js +1 -657
  57. package/lib/components/table.js +1 -510
  58. package/lib/components/video-stream.js +1 -226
  59. package/lib/css/components/bulk-actions-selector.css +1 -16
  60. package/lib/css/components/circle-button.css +1 -24
  61. package/lib/css/components/extra-questions.css +1 -29
  62. package/lib/css/components/form-validation.css +1 -29
  63. package/lib/css/components/free-text-search.css +1 -29
  64. package/lib/css/components/index.css +2 -1354
  65. package/lib/css/components/inputs/action-dropdown.css +1 -46
  66. package/lib/css/components/inputs/datetimepicker.css +1 -208
  67. package/lib/css/components/inputs/grouped-dropdown.css +1 -25
  68. package/lib/css/components/inputs/stepped-select.css +1 -12
  69. package/lib/css/components/inputs/upload-input-v2.css +1 -106
  70. package/lib/css/components/inputs/upload-input.css +1 -43
  71. package/lib/css/components/progressive-img.css +1 -16
  72. package/lib/css/components/schedule-builder-view.css +1 -230
  73. package/lib/css/components/simple-link-list.css +1 -189
  74. package/lib/css/components/summit-dropdown.css +1 -35
  75. package/lib/css/components/table-editable.css +1 -145
  76. package/lib/css/components/table-selectable.css +1 -147
  77. package/lib/css/components/table-sortable.css +1 -150
  78. package/lib/css/components/table.css +1 -147
  79. package/lib/i18n.js +1 -449
  80. package/lib/models/index.js +1 -238
  81. package/lib/models/summit-event.js +1 -210
  82. package/lib/security/abstract-auth-callback-route.js +1 -2114
  83. package/lib/security/actions.js +1 -1818
  84. package/lib/security/constants.js +1 -71
  85. package/lib/security/methods.js +1 -1818
  86. package/lib/security/reducers.js +1 -1961
  87. package/lib/security/session-checker.js +1 -2179
  88. package/lib/utils/actions.js +1 -1818
  89. package/lib/utils/fragment-parser.js +1 -207
  90. package/lib/utils/methods.js +1 -369
  91. package/lib/utils/query-actions.js +1 -2154
  92. package/lib/utils/questions-set.js +1 -609
  93. package/lib/utils/reducers.js +1 -1874
  94. package/lib/utils/use-fit-text.js +1 -178
  95. package/package.json +1 -1
@@ -1,895 +1 @@
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("openstack-uicore-foundation", [], factory);
6
- else if(typeof exports === 'object')
7
- exports["openstack-uicore-foundation"] = factory();
8
- else
9
- root["openstack-uicore-foundation"] = factory();
10
- })(this, () => {
11
- return /******/ (() => { // webpackBootstrap
12
- /******/ "use strict";
13
- /******/ var __webpack_modules__ = ({
14
-
15
- /***/ "./src/components/table-editable/EditableActionsTableCell.js":
16
- /*!*******************************************************************!*\
17
- !*** ./src/components/table-editable/EditableActionsTableCell.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 */ "default": () => (/* binding */ EditableActionsTableCell)
24
- /* harmony export */ });
25
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
26
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
27
-
28
- class EditableActionsTableCell extends (react__WEBPACK_IMPORTED_MODULE_0___default().Component) {
29
- constructor(props) {
30
- super(props);
31
- this.state = {
32
- is_editing: false
33
- };
34
- }
35
-
36
- onDelete(id, ev) {
37
- ev.preventDefault();
38
- ev.stopPropagation();
39
- this.props.actions.delete(id);
40
- }
41
-
42
- onSave(id, ev) {
43
- ev.preventDefault();
44
- ev.stopPropagation();
45
- this.setState({
46
- is_editing: false
47
- });
48
- this.props.actions.save(id);
49
- }
50
-
51
- onEdit(id, ev) {
52
- ev.preventDefault();
53
- ev.stopPropagation();
54
- this.setState({
55
- is_editing: true
56
- });
57
- this.props.actions.edit(id);
58
- }
59
-
60
- onCancel(id, ev) {
61
- ev.preventDefault();
62
- ev.stopPropagation();
63
- this.setState({
64
- is_editing: false
65
- });
66
- this.props.actions.cancel(id);
67
- }
68
-
69
- render() {
70
- let {
71
- actions,
72
- id
73
- } = this.props;
74
-
75
- if (this.state.is_editing) {
76
- return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("td", {
77
- className: "actions"
78
- }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("a", {
79
- href: "",
80
- onClick: this.onSave.bind(this, id),
81
- "data-tip": "save"
82
- }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("i", {
83
- className: "fa fa-floppy-o"
84
- })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("a", {
85
- href: "",
86
- onClick: this.onCancel.bind(this, id),
87
- "data-tip": "cancel"
88
- }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("i", {
89
- className: "fa fa-times"
90
- })));
91
- } else {
92
- return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("td", {
93
- className: "actions"
94
- }, 'edit' in actions && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("a", {
95
- href: "",
96
- onClick: this.onEdit.bind(this, id),
97
- "data-tip": "edit"
98
- }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("i", {
99
- className: "fa fa-pencil-square-o"
100
- })), 'delete' in actions && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("a", {
101
- href: "",
102
- onClick: this.onDelete.bind(this, id),
103
- "data-tip": "delete"
104
- }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("i", {
105
- className: "fa fa-trash-o delete-icon"
106
- })));
107
- }
108
- }
109
-
110
- }
111
- ;
112
-
113
- /***/ }),
114
-
115
- /***/ "./src/components/table-editable/EditableTableCell.js":
116
- /*!************************************************************!*\
117
- !*** ./src/components/table-editable/EditableTableCell.js ***!
118
- \************************************************************/
119
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
120
-
121
- __webpack_require__.r(__webpack_exports__);
122
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
123
- /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
124
- /* harmony export */ });
125
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
126
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
127
-
128
-
129
- const EditableTableCell = props => {
130
- if (props.is_edit) {
131
- return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("td", null, !props.shouldUseTextArea && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("input", {
132
- type: "text",
133
- className: "form-control",
134
- defaultValue: props.children,
135
- name: props.name,
136
- id: props.id,
137
- onChange: props.handleChange
138
- }), props.shouldUseTextArea && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("textarea", {
139
- className: "form-control",
140
- defaultValue: props.children,
141
- name: props.name,
142
- id: props.id,
143
- onChange: props.handleChange
144
- }));
145
- } else {
146
- return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("td", null, props.children);
147
- }
148
- };
149
-
150
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (EditableTableCell);
151
-
152
- /***/ }),
153
-
154
- /***/ "./src/components/table-editable/EditableTableHeading.js":
155
- /*!***************************************************************!*\
156
- !*** ./src/components/table-editable/EditableTableHeading.js ***!
157
- \***************************************************************/
158
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
159
-
160
- __webpack_require__.r(__webpack_exports__);
161
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
162
- /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
163
- /* harmony export */ });
164
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
165
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
166
-
167
-
168
- class EditableTableHeading extends (react__WEBPACK_IMPORTED_MODULE_0___default().Component) {
169
- constructor(props) {
170
- super(props);
171
- }
172
-
173
- render() {
174
- return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("th", {
175
- width: this.props.width
176
- }, this.props.children);
177
- }
178
-
179
- }
180
-
181
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (EditableTableHeading);
182
-
183
- /***/ }),
184
-
185
- /***/ "./src/components/table-editable/EditableTableRow.js":
186
- /*!***********************************************************!*\
187
- !*** ./src/components/table-editable/EditableTableRow.js ***!
188
- \***********************************************************/
189
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
190
-
191
- __webpack_require__.r(__webpack_exports__);
192
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
193
- /* harmony export */ "default": () => (/* binding */ EditableTableRow)
194
- /* harmony export */ });
195
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
196
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
197
-
198
- class EditableTableRow extends (react__WEBPACK_IMPORTED_MODULE_0___default().Component) {
199
- render() {
200
- const {
201
- children,
202
- even,
203
- id
204
- } = this.props;
205
- return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("tr", {
206
- id: id,
207
- role: "row",
208
- className: even ? 'even' : 'odd'
209
- }, children);
210
- }
211
-
212
- }
213
-
214
- /***/ }),
215
-
216
- /***/ "./src/utils/methods.js":
217
- /*!******************************!*\
218
- !*** ./src/utils/methods.js ***!
219
- \******************************/
220
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
221
-
222
- __webpack_require__.r(__webpack_exports__);
223
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
224
- /* harmony export */ "arraysEqual": () => (/* binding */ arraysEqual),
225
- /* harmony export */ "base64URLEncode": () => (/* binding */ base64URLEncode),
226
- /* harmony export */ "buildAPIBaseUrl": () => (/* binding */ buildAPIBaseUrl),
227
- /* harmony export */ "epochToMoment": () => (/* binding */ epochToMoment),
228
- /* harmony export */ "epochToMomentTimeZone": () => (/* binding */ epochToMomentTimeZone),
229
- /* harmony export */ "findElementPos": () => (/* binding */ findElementPos),
230
- /* harmony export */ "formatEpoch": () => (/* binding */ formatEpoch),
231
- /* harmony export */ "getAllowedUserGroups": () => (/* binding */ getAllowedUserGroups),
232
- /* harmony export */ "getAuthCallback": () => (/* binding */ getAuthCallback),
233
- /* harmony export */ "getBackURL": () => (/* binding */ getBackURL),
234
- /* harmony export */ "getCurrentHref": () => (/* binding */ getCurrentHref),
235
- /* harmony export */ "getCurrentLocation": () => (/* binding */ getCurrentLocation),
236
- /* harmony export */ "getCurrentPathName": () => (/* binding */ getCurrentPathName),
237
- /* harmony export */ "getCurrentUserLanguage": () => (/* binding */ getCurrentUserLanguage),
238
- /* harmony export */ "getFromLocalStorage": () => (/* binding */ getFromLocalStorage),
239
- /* harmony export */ "getOrigin": () => (/* binding */ getOrigin),
240
- /* harmony export */ "getTimeServiceUrl": () => (/* binding */ getTimeServiceUrl),
241
- /* harmony export */ "hasErrors": () => (/* binding */ hasErrors),
242
- /* harmony export */ "isClearingSessionState": () => (/* binding */ isClearingSessionState),
243
- /* harmony export */ "isEmpty": () => (/* binding */ isEmpty),
244
- /* harmony export */ "objectToQueryString": () => (/* binding */ objectToQueryString),
245
- /* harmony export */ "putOnLocalStorage": () => (/* binding */ putOnLocalStorage),
246
- /* harmony export */ "removeFromLocalStorage": () => (/* binding */ removeFromLocalStorage),
247
- /* harmony export */ "retryPromise": () => (/* binding */ retryPromise),
248
- /* harmony export */ "scrollToError": () => (/* binding */ scrollToError),
249
- /* harmony export */ "setSessionClearingState": () => (/* binding */ setSessionClearingState),
250
- /* harmony export */ "shallowEqual": () => (/* binding */ shallowEqual),
251
- /* harmony export */ "toSlug": () => (/* binding */ toSlug)
252
- /* harmony export */ });
253
- /* harmony import */ var moment_timezone__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! moment-timezone */ "moment-timezone");
254
- /* harmony import */ var moment_timezone__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(moment_timezone__WEBPACK_IMPORTED_MODULE_0__);
255
- /* harmony import */ var urijs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! urijs */ "urijs");
256
- /* harmony import */ var urijs__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(urijs__WEBPACK_IMPORTED_MODULE_1__);
257
- /**
258
- * Copyright 2018 OpenStack Foundation
259
- * Licensed under the Apache License, Version 2.0 (the "License");
260
- * you may not use this file except in compliance with the License.
261
- * You may obtain a copy of the License at
262
- * http://www.apache.org/licenses/LICENSE-2.0
263
- * Unless required by applicable law or agreed to in writing, software
264
- * distributed under the License is distributed on an "AS IS" BASIS,
265
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
266
- * See the License for the specific language governing permissions and
267
- * limitations under the License.
268
- **/
269
-
270
-
271
- const findElementPos = obj => {
272
- var curtop = -70;
273
-
274
- if (obj.offsetParent) {
275
- do {
276
- curtop += obj.offsetTop;
277
- } while (obj = obj.offsetParent);
278
-
279
- return [curtop];
280
- }
281
- };
282
- const epochToMoment = atime => {
283
- if (!atime) return atime;
284
- atime = atime * 1000;
285
- return moment_timezone__WEBPACK_IMPORTED_MODULE_0___default()(atime);
286
- };
287
- const epochToMomentTimeZone = (atime, time_zone) => {
288
- if (!atime) return atime;
289
- atime = atime * 1000;
290
- return moment_timezone__WEBPACK_IMPORTED_MODULE_0___default()(atime).tz(time_zone);
291
- };
292
- const formatEpoch = (atime, format = 'M/D/YYYY h:mm a') => {
293
- if (!atime) return atime;
294
- return epochToMoment(atime).format(format);
295
- };
296
- const objectToQueryString = obj => {
297
- var str = "";
298
-
299
- for (var key in obj) {
300
- if (str != "") {
301
- str += "&";
302
- }
303
-
304
- str += key + "=" + encodeURIComponent(obj[key]);
305
- }
306
-
307
- return str;
308
- };
309
- const getBackURL = () => {
310
- let url = urijs__WEBPACK_IMPORTED_MODULE_1___default()(window.location.href);
311
- let query = url.search(true);
312
- let fragment = url.fragment();
313
- let backUrl = query.hasOwnProperty('BackUrl') ? query['BackUrl'] : null;
314
-
315
- if (fragment != null && fragment != '') {
316
- backUrl += `#${fragment}`;
317
- }
318
-
319
- return backUrl;
320
- };
321
- const toSlug = text => {
322
- text = text.toLowerCase();
323
- return text.replace(/[^a-zA-Z0-9]+/g, '_');
324
- };
325
- const getAuthCallback = () => {
326
- if (typeof window !== 'undefined') {
327
- return `${window.location.origin}/auth/callback`;
328
- }
329
-
330
- return null;
331
- };
332
- const getCurrentLocation = () => {
333
- let location = '';
334
-
335
- if (typeof window !== 'undefined') {
336
- location = window.location; // check if we are on iframe
337
-
338
- if (window.top) location = window.top.location;
339
- }
340
-
341
- return location;
342
- };
343
- const getOrigin = () => {
344
- if (typeof window !== 'undefined') {
345
- return window.location.origin;
346
- }
347
-
348
- return null;
349
- };
350
- const getCurrentPathName = () => {
351
- if (typeof window !== 'undefined') {
352
- return window.location.pathname;
353
- }
354
-
355
- return null;
356
- };
357
- const getCurrentHref = () => {
358
- if (typeof window !== 'undefined') {
359
- return window.location.href;
360
- }
361
-
362
- return null;
363
- };
364
- const getAllowedUserGroups = () => {
365
- if (typeof window !== 'undefined') {
366
- return window.ALLOWED_USER_GROUPS || '';
367
- }
368
-
369
- return null;
370
- };
371
- const buildAPIBaseUrl = relativeUrl => {
372
- if (typeof window !== 'undefined') {
373
- return `${window.API_BASE_URL}${relativeUrl}`;
374
- }
375
-
376
- return null``;
377
- };
378
- const putOnLocalStorage = (key, value) => {
379
- if (typeof window !== 'undefined') {
380
- window.localStorage.setItem(key, value);
381
- }
382
- };
383
- const getFromLocalStorage = (key, removeIt) => {
384
- if (typeof window !== 'undefined') {
385
- let val = window.localStorage.getItem(key);
386
-
387
- if (removeIt) {
388
- console.log(`getFromLocalStorage removing key ${key}`);
389
- removeFromLocalStorage(key);
390
- }
391
-
392
- return val;
393
- }
394
-
395
- return null;
396
- };
397
- const removeFromLocalStorage = key => {
398
- if (typeof window !== 'undefined') {
399
- window.localStorage.removeItem(key);
400
- }
401
- };
402
- const isClearingSessionState = () => {
403
- if (typeof window !== 'undefined') {
404
- return window.clearing_session_state;
405
- }
406
-
407
- return false;
408
- };
409
- const setSessionClearingState = val => {
410
- if (typeof window !== 'undefined') {
411
- window.clearing_session_state = val;
412
- }
413
- };
414
- const getCurrentUserLanguage = () => {
415
- let language = 'en';
416
-
417
- if (typeof navigator !== 'undefined') {
418
- language = navigator.languages && navigator.languages[0] || navigator.language || navigator.userLanguage;
419
- }
420
-
421
- return language;
422
- };
423
- const scrollToError = errors => {
424
- if (Object.keys(errors).length > 0) {
425
- const firstError = Object.keys(errors)[0];
426
- const firstNode = document.getElementById(firstError);
427
- if (firstNode) window.scrollTo(0, findElementPos(firstNode));
428
- }
429
- };
430
- const hasErrors = (field, errors) => {
431
- if (field in errors) {
432
- return errors[field];
433
- }
434
-
435
- return '';
436
- };
437
- const shallowEqual = (object1, object2) => {
438
- const keys1 = Object.keys(object1);
439
- const keys2 = Object.keys(object2);
440
-
441
- if (keys1.length !== keys2.length) {
442
- return false;
443
- }
444
-
445
- for (let key of keys1) {
446
- if (object1[key] !== object2[key]) {
447
- return false;
448
- }
449
- }
450
-
451
- return true;
452
- };
453
- const arraysEqual = (a1, a2) => a1.length === a2.length && a1.every((o, idx) => shallowEqual(o, a2[idx]));
454
- const isEmpty = obj => {
455
- return Object.keys(obj).length === 0;
456
- };
457
- const base64URLEncode = str => {
458
- return str.toString('base64').replace(/\+/g, '-').replace(/\//g, '_').replace(/=/g, '');
459
- };
460
- const retryPromise = async (cb, maxNumberOfRetries = 3) => {
461
- for (let i = 0; i < maxNumberOfRetries; i++) {
462
- if (await cb()) {
463
- return true;
464
- }
465
- }
466
-
467
- return false;
468
- };
469
- const getTimeServiceUrl = () => {
470
- if (typeof window !== 'undefined') {
471
- return window.TIMEINTERVALSINCE1970_API_URL || process.env.TIMEINTERVALSINCE1970_API_URL;
472
- }
473
-
474
- return null;
475
- };
476
-
477
- /***/ }),
478
-
479
- /***/ "./src/components/table-editable/editable-table.css":
480
- /*!**********************************************************!*\
481
- !*** ./src/components/table-editable/editable-table.css ***!
482
- \**********************************************************/
483
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
484
-
485
- __webpack_require__.r(__webpack_exports__);
486
- // extracted by mini-css-extract-plugin
487
-
488
-
489
- /***/ }),
490
-
491
- /***/ "@babel/runtime/helpers/defineProperty":
492
- /*!********************************************************!*\
493
- !*** external "@babel/runtime/helpers/defineProperty" ***!
494
- \********************************************************/
495
- /***/ ((module) => {
496
-
497
- module.exports = require("@babel/runtime/helpers/defineProperty");
498
-
499
- /***/ }),
500
-
501
- /***/ "i18n-react/dist/i18n-react":
502
- /*!*********************************************!*\
503
- !*** external "i18n-react/dist/i18n-react" ***!
504
- \*********************************************/
505
- /***/ ((module) => {
506
-
507
- module.exports = require("i18n-react/dist/i18n-react");
508
-
509
- /***/ }),
510
-
511
- /***/ "moment-timezone":
512
- /*!**********************************!*\
513
- !*** external "moment-timezone" ***!
514
- \**********************************/
515
- /***/ ((module) => {
516
-
517
- module.exports = require("moment-timezone");
518
-
519
- /***/ }),
520
-
521
- /***/ "react":
522
- /*!************************!*\
523
- !*** external "react" ***!
524
- \************************/
525
- /***/ ((module) => {
526
-
527
- module.exports = require("react");
528
-
529
- /***/ }),
530
-
531
- /***/ "react-tooltip":
532
- /*!********************************!*\
533
- !*** external "react-tooltip" ***!
534
- \********************************/
535
- /***/ ((module) => {
536
-
537
- module.exports = require("react-tooltip");
538
-
539
- /***/ }),
540
-
541
- /***/ "sweetalert2":
542
- /*!******************************!*\
543
- !*** external "sweetalert2" ***!
544
- \******************************/
545
- /***/ ((module) => {
546
-
547
- module.exports = require("sweetalert2");
548
-
549
- /***/ }),
550
-
551
- /***/ "urijs":
552
- /*!************************!*\
553
- !*** external "urijs" ***!
554
- \************************/
555
- /***/ ((module) => {
556
-
557
- module.exports = require("urijs");
558
-
559
- /***/ })
560
-
561
- /******/ });
562
- /************************************************************************/
563
- /******/ // The module cache
564
- /******/ var __webpack_module_cache__ = {};
565
- /******/
566
- /******/ // The require function
567
- /******/ function __webpack_require__(moduleId) {
568
- /******/ // Check if module is in cache
569
- /******/ var cachedModule = __webpack_module_cache__[moduleId];
570
- /******/ if (cachedModule !== undefined) {
571
- /******/ return cachedModule.exports;
572
- /******/ }
573
- /******/ // Create a new module (and put it into the cache)
574
- /******/ var module = __webpack_module_cache__[moduleId] = {
575
- /******/ // no module.id needed
576
- /******/ // no module.loaded needed
577
- /******/ exports: {}
578
- /******/ };
579
- /******/
580
- /******/ // Execute the module function
581
- /******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
582
- /******/
583
- /******/ // Return the exports of the module
584
- /******/ return module.exports;
585
- /******/ }
586
- /******/
587
- /************************************************************************/
588
- /******/ /* webpack/runtime/compat get default export */
589
- /******/ (() => {
590
- /******/ // getDefaultExport function for compatibility with non-harmony modules
591
- /******/ __webpack_require__.n = (module) => {
592
- /******/ var getter = module && module.__esModule ?
593
- /******/ () => (module['default']) :
594
- /******/ () => (module);
595
- /******/ __webpack_require__.d(getter, { a: getter });
596
- /******/ return getter;
597
- /******/ };
598
- /******/ })();
599
- /******/
600
- /******/ /* webpack/runtime/define property getters */
601
- /******/ (() => {
602
- /******/ // define getter functions for harmony exports
603
- /******/ __webpack_require__.d = (exports, definition) => {
604
- /******/ for(var key in definition) {
605
- /******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
606
- /******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
607
- /******/ }
608
- /******/ }
609
- /******/ };
610
- /******/ })();
611
- /******/
612
- /******/ /* webpack/runtime/hasOwnProperty shorthand */
613
- /******/ (() => {
614
- /******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
615
- /******/ })();
616
- /******/
617
- /******/ /* webpack/runtime/make namespace object */
618
- /******/ (() => {
619
- /******/ // define __esModule on exports
620
- /******/ __webpack_require__.r = (exports) => {
621
- /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
622
- /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
623
- /******/ }
624
- /******/ Object.defineProperty(exports, '__esModule', { value: true });
625
- /******/ };
626
- /******/ })();
627
- /******/
628
- /************************************************************************/
629
- var __webpack_exports__ = {};
630
- // This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the chunk.
631
- (() => {
632
- /*!********************************************************!*\
633
- !*** ./src/components/table-editable/EditableTable.js ***!
634
- \********************************************************/
635
- __webpack_require__.r(__webpack_exports__);
636
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
637
- /* harmony export */ "default": () => (/* binding */ EditableTable)
638
- /* harmony export */ });
639
- /* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "@babel/runtime/helpers/defineProperty");
640
- /* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__);
641
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "react");
642
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);
643
- /* harmony import */ var _EditableTableHeading__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./EditableTableHeading */ "./src/components/table-editable/EditableTableHeading.js");
644
- /* harmony import */ var _EditableTableCell__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./EditableTableCell */ "./src/components/table-editable/EditableTableCell.js");
645
- /* harmony import */ var _EditableActionsTableCell__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./EditableActionsTableCell */ "./src/components/table-editable/EditableActionsTableCell.js");
646
- /* harmony import */ var _EditableTableRow__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./EditableTableRow */ "./src/components/table-editable/EditableTableRow.js");
647
- /* harmony import */ var sweetalert2__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! sweetalert2 */ "sweetalert2");
648
- /* harmony import */ var sweetalert2__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(sweetalert2__WEBPACK_IMPORTED_MODULE_6__);
649
- /* harmony import */ var i18n_react_dist_i18n_react__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! i18n-react/dist/i18n-react */ "i18n-react/dist/i18n-react");
650
- /* harmony import */ var i18n_react_dist_i18n_react__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(i18n_react_dist_i18n_react__WEBPACK_IMPORTED_MODULE_7__);
651
- /* harmony import */ var _editable_table_css__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./editable-table.css */ "./src/components/table-editable/editable-table.css");
652
- /* harmony import */ var react_tooltip__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! react-tooltip */ "react-tooltip");
653
- /* harmony import */ var react_tooltip__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(react_tooltip__WEBPACK_IMPORTED_MODULE_9__);
654
- /* harmony import */ var _utils_methods__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../utils/methods */ "./src/utils/methods.js");
655
-
656
-
657
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
658
-
659
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
660
-
661
-
662
-
663
-
664
-
665
-
666
-
667
-
668
-
669
-
670
-
671
- const defaults = {
672
- colWidth: ''
673
- };
674
-
675
- const createRow = (row, columns, actions, shouldUseTextArea) => {
676
- var action_buttons = '';
677
- var cells = columns.map((col, i) => {
678
- return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement(_EditableTableCell__WEBPACK_IMPORTED_MODULE_3__["default"], {
679
- shouldUseTextArea: shouldUseTextArea,
680
- key: row['id'] + '_field' + i,
681
- name: col.columnKey,
682
- id: row.id,
683
- is_edit: row.is_edit,
684
- handleChange: actions.handleChange
685
- }, row[col.columnKey]);
686
- });
687
-
688
- if (actions) {
689
- cells.push( /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement(_EditableActionsTableCell__WEBPACK_IMPORTED_MODULE_4__["default"], {
690
- key: 'actions_' + row['id'],
691
- id: row['id'],
692
- actions: actions
693
- }));
694
- }
695
-
696
- return cells;
697
- };
698
-
699
- const createNewRow = (columns, new_row, addNew, handleChange, shouldUseTextArea) => {
700
- var cells = columns.map((col, i) => {
701
- let cell_value = typeof new_row[col.columnKey] !== 'undefined' ? new_row[col.columnKey] : '';
702
- return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement("td", {
703
- key: 'new_row_' + i
704
- }, shouldUseTextArea && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement("textarea", {
705
- className: "form-control",
706
- id: 'new_' + col.columnKey,
707
- name: col.columnKey,
708
- onChange: handleChange,
709
- value: cell_value
710
- }), !shouldUseTextArea && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement("input", {
711
- className: "form-control",
712
- id: 'new_' + col.columnKey,
713
- name: col.columnKey,
714
- onChange: handleChange,
715
- value: cell_value
716
- }));
717
- });
718
- cells.push( /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement("td", {
719
- key: "add_new"
720
- }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement("button", {
721
- className: "btn btn-default",
722
- onClick: addNew
723
- }, " Add ")));
724
- return cells;
725
- };
726
-
727
- class EditableTable extends (react__WEBPACK_IMPORTED_MODULE_1___default().Component) {
728
- constructor(props) {
729
- super(props);
730
- this.state = {
731
- rows: props.data,
732
- new_row: {}
733
- }; // we store the delete and save functions in props cause we need to extend them
734
-
735
- this.onSave = props.options.actions.save.onClick;
736
- this.actions = _objectSpread({}, props.options.actions);
737
- this.actions.edit = this.editRow.bind(this);
738
- this.actions.save = this.saveRow.bind(this);
739
- this.actions.delete = this.deleteClick.bind(this);
740
- this.actions.handleChange = this.onChangeCell.bind(this);
741
- this.actions.cancel = this.editRowCancel.bind(this);
742
- this.saveNewRow = this.saveNewRow.bind(this);
743
- this.handleNewChange = this.onChangeNewCell.bind(this);
744
- }
745
-
746
- componentDidUpdate(prevProps, prevState, snapshot) {
747
- if (!(0,_utils_methods__WEBPACK_IMPORTED_MODULE_10__.shallowEqual)(this.props.data, prevProps.data)) {
748
- this.setState({
749
- rows: this.props.data
750
- });
751
- }
752
- }
753
-
754
- saveRow(id, ev) {
755
- const {
756
- rows
757
- } = this.state;
758
- let row = rows.find(r => r.id == id);
759
- row.is_edit = false;
760
- this.editing_row = null;
761
- this.setState({
762
- rows: rows
763
- });
764
- this.onSave(row);
765
- }
766
-
767
- deleteClick(id) {
768
- let onDelete = this.props.options.actions.delete.onClick;
769
- let noAlert = this.props.options.hasOwnProperty('noAlert');
770
-
771
- if (noAlert) {
772
- onDelete(id);
773
- } else {
774
- sweetalert2__WEBPACK_IMPORTED_MODULE_6___default().fire({
775
- title: i18n_react_dist_i18n_react__WEBPACK_IMPORTED_MODULE_7___default().translate("general.are_you_sure"),
776
- text: i18n_react_dist_i18n_react__WEBPACK_IMPORTED_MODULE_7___default().translate("general.remove_warning"),
777
- type: "warning",
778
- showCancelButton: true,
779
- confirmButtonColor: "#DD6B55",
780
- confirmButtonText: i18n_react_dist_i18n_react__WEBPACK_IMPORTED_MODULE_7___default().translate("general.yes_delete")
781
- }).then(function (result) {
782
- if (result.value) {
783
- onDelete(id);
784
- }
785
- });
786
- }
787
- }
788
-
789
- editRow(id, ev) {
790
- const {
791
- rows
792
- } = this.state;
793
- let row = rows.find(r => r.id == id); //save editing row for cancel
794
-
795
- this.editing_row = _objectSpread({}, row);
796
- row.is_edit = true;
797
- this.setState({
798
- rows: rows
799
- });
800
- }
801
-
802
- editRowCancel(id, ev) {
803
- const {
804
- rows
805
- } = this.state;
806
- rows.forEach(r => {
807
- r.is_edit = false;
808
- });
809
- let rowIdx = rows.findIndex(r => r.id == id);
810
- rows[rowIdx] = this.editing_row;
811
- this.setState({
812
- rows: rows
813
- });
814
- }
815
-
816
- onChangeCell(ev) {
817
- const {
818
- rows
819
- } = this.state;
820
- let field = ev.target;
821
- let row = rows.find(r => r.id == field.id);
822
- row[field.name] = field.value;
823
- this.setState({
824
- rows: rows
825
- });
826
- }
827
-
828
- onChangeNewCell(ev) {
829
- const {
830
- new_row
831
- } = this.state;
832
- let field = ev.target;
833
- new_row[field.name] = field.value;
834
- this.setState({
835
- new_row: new_row
836
- });
837
- }
838
-
839
- saveNewRow(ev) {
840
- const {
841
- new_row
842
- } = this.state;
843
- ev.preventDefault();
844
- this.onSave(new_row);
845
- this.setState({
846
- new_row: {}
847
- });
848
- }
849
-
850
- render() {
851
- let {
852
- options,
853
- columns
854
- } = this.props;
855
- let tableClass = options.hasOwnProperty('className') ? options.className : '';
856
- let textArea = this.props.hasOwnProperty("textArea");
857
- return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement("div", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement("table", {
858
- className: "table table-striped table-bordered editableTable " + tableClass
859
- }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement("thead", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement("tr", null, columns.map((col, i) => {
860
- let colWidth = col.width ? col.width : defaults.colWidth;
861
- return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement(_EditableTableHeading__WEBPACK_IMPORTED_MODULE_2__["default"], {
862
- width: colWidth,
863
- key: 'heading_' + i
864
- }, col.value);
865
- }), this.actions && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement(_EditableTableHeading__WEBPACK_IMPORTED_MODULE_2__["default"], {
866
- key: "actions_heading"
867
- }, "Actions"))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement("tbody", null, columns.length > 0 && this.state.rows.map((row, i) => {
868
- if (Array.isArray(row) && row.length !== columns.length) {
869
- console.warn(`Data at row ${i} is ${row.length}. It should be ${columns.length}.`);
870
- return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement("tr", null);
871
- }
872
-
873
- return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement(_EditableTableRow__WEBPACK_IMPORTED_MODULE_5__["default"], {
874
- even: i % 2 === 0,
875
- key: 'row_' + row.id,
876
- id: row.id
877
- }, createRow(row, columns, this.actions, textArea));
878
- }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement(_EditableTableRow__WEBPACK_IMPORTED_MODULE_5__["default"], {
879
- even: 0,
880
- id: "new_row",
881
- key: "new_row"
882
- }, createNewRow(columns, this.state.new_row, this.saveNewRow, this.handleNewChange, textArea)))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement((react_tooltip__WEBPACK_IMPORTED_MODULE_9___default()), {
883
- delayShow: 10
884
- }));
885
- }
886
-
887
- }
888
- ;
889
- })();
890
-
891
- /******/ return __webpack_exports__;
892
- /******/ })()
893
- ;
894
- });
895
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50cy90YWJsZS1lZGl0YWJsZS5qcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0QsTzs7Ozs7Ozs7Ozs7Ozs7OztBQ1ZBO0FBRWUsTUFBTUMsd0JBQU4sU0FBdUNELHdEQUF2QyxDQUF1RDtFQUVsRUcsV0FBVyxDQUFDQyxLQUFELEVBQVE7SUFDZixNQUFNQSxLQUFOO0lBRUEsS0FBS0MsS0FBTCxHQUFhO01BQ1RDLFVBQVUsRUFBRTtJQURILENBQWI7RUFJSDs7RUFFREMsUUFBUSxDQUFDQyxFQUFELEVBQUtDLEVBQUwsRUFBUztJQUNiQSxFQUFFLENBQUNDLGNBQUg7SUFDQUQsRUFBRSxDQUFDRSxlQUFIO0lBRUEsS0FBS1AsS0FBTCxDQUFXUSxPQUFYLENBQW1CQyxNQUFuQixDQUEwQkwsRUFBMUI7RUFDSDs7RUFFRE0sTUFBTSxDQUFDTixFQUFELEVBQUtDLEVBQUwsRUFBUztJQUNYQSxFQUFFLENBQUNDLGNBQUg7SUFDQUQsRUFBRSxDQUFDRSxlQUFIO0lBRUEsS0FBS0ksUUFBTCxDQUFjO01BQ1ZULFVBQVUsRUFBRTtJQURGLENBQWQ7SUFJQSxLQUFLRixLQUFMLENBQVdRLE9BQVgsQ0FBbUJJLElBQW5CLENBQXdCUixFQUF4QjtFQUNIOztFQUVEUyxNQUFNLENBQUNULEVBQUQsRUFBS0MsRUFBTCxFQUFTO0lBQ1hBLEVBQUUsQ0FBQ0MsY0FBSDtJQUNBRCxFQUFFLENBQUNFLGVBQUg7SUFFQSxLQUFLSSxRQUFMLENBQWM7TUFDVlQsVUFBVSxFQUFFO0lBREYsQ0FBZDtJQUlBLEtBQUtGLEtBQUwsQ0FBV1EsT0FBWCxDQUFtQk0sSUFBbkIsQ0FBd0JWLEVBQXhCO0VBQ0g7O0VBRURXLFFBQVEsQ0FBQ1gsRUFBRCxFQUFLQyxFQUFMLEVBQVM7SUFDYkEsRUFBRSxDQUFDQyxjQUFIO0lBQ0FELEVBQUUsQ0FBQ0UsZUFBSDtJQUVBLEtBQUtJLFFBQUwsQ0FBYztNQUNWVCxVQUFVLEVBQUU7SUFERixDQUFkO0lBSUEsS0FBS0YsS0FBTCxDQUFXUSxPQUFYLENBQW1CUSxNQUFuQixDQUEwQlosRUFBMUI7RUFDSDs7RUFFRGEsTUFBTSxHQUFHO0lBQ0wsSUFBSTtNQUFDVCxPQUFEO01BQVVKO0lBQVYsSUFBZ0IsS0FBS0osS0FBekI7O0lBRUEsSUFBSSxLQUFLQyxLQUFMLENBQVdDLFVBQWYsRUFBMkI7TUFDdkIsb0JBQ0k7UUFBSSxTQUFTLEVBQUM7TUFBZCxnQkFDSTtRQUFHLElBQUksRUFBQyxFQUFSO1FBQVcsT0FBTyxFQUFFLEtBQUtRLE1BQUwsQ0FBWVEsSUFBWixDQUFpQixJQUFqQixFQUFzQmQsRUFBdEIsQ0FBcEI7UUFBK0MsWUFBUztNQUF4RCxnQkFDSTtRQUFHLFNBQVMsRUFBQztNQUFiLEVBREosQ0FESixlQUlJO1FBQUcsSUFBSSxFQUFDLEVBQVI7UUFBVyxPQUFPLEVBQUUsS0FBS1csUUFBTCxDQUFjRyxJQUFkLENBQW1CLElBQW5CLEVBQXdCZCxFQUF4QixDQUFwQjtRQUFpRCxZQUFTO01BQTFELGdCQUNJO1FBQUcsU0FBUyxFQUFDO01BQWIsRUFESixDQUpKLENBREo7SUFVSCxDQVhELE1BV087TUFDSCxvQkFDSTtRQUFJLFNBQVMsRUFBQztNQUFkLEdBQ0ssVUFBVUksT0FBVixpQkFDRztRQUFHLElBQUksRUFBQyxFQUFSO1FBQVcsT0FBTyxFQUFFLEtBQUtLLE1BQUwsQ0FBWUssSUFBWixDQUFpQixJQUFqQixFQUFzQmQsRUFBdEIsQ0FBcEI7UUFBK0MsWUFBUztNQUF4RCxnQkFDSTtRQUFHLFNBQVMsRUFBQztNQUFiLEVBREosQ0FGUixFQU1LLFlBQVlJLE9BQVosaUJBQ0c7UUFBRyxJQUFJLEVBQUMsRUFBUjtRQUFXLE9BQU8sRUFBRSxLQUFLTCxRQUFMLENBQWNlLElBQWQsQ0FBbUIsSUFBbkIsRUFBd0JkLEVBQXhCLENBQXBCO1FBQWlELFlBQVM7TUFBMUQsZ0JBQ0k7UUFBRyxTQUFTLEVBQUM7TUFBYixFQURKLENBUFIsQ0FESjtJQWNIO0VBQ0o7O0FBakZpRTtBQWtGckU7Ozs7Ozs7Ozs7Ozs7Ozs7QUNwRkQ7O0FBRUEsTUFBTWUsaUJBQWlCLEdBQUluQixLQUFELElBQVc7RUFFakMsSUFBSUEsS0FBSyxDQUFDb0IsT0FBVixFQUFtQjtJQUNmLG9CQUNJLHVFQUNLLENBQUNwQixLQUFLLENBQUNxQixpQkFBUCxpQkFDRztNQUFPLElBQUksRUFBQyxNQUFaO01BQW1CLFNBQVMsRUFBQyxjQUE3QjtNQUE0QyxZQUFZLEVBQUVyQixLQUFLLENBQUNzQixRQUFoRTtNQUEwRSxJQUFJLEVBQUV0QixLQUFLLENBQUN1QixJQUF0RjtNQUE0RixFQUFFLEVBQUV2QixLQUFLLENBQUNJLEVBQXRHO01BQTBHLFFBQVEsRUFBRUosS0FBSyxDQUFDd0I7SUFBMUgsRUFGUixFQUlLeEIsS0FBSyxDQUFDcUIsaUJBQU4saUJBQ0c7TUFBVSxTQUFTLEVBQUMsY0FBcEI7TUFBbUMsWUFBWSxFQUFFckIsS0FBSyxDQUFDc0IsUUFBdkQ7TUFBaUUsSUFBSSxFQUFFdEIsS0FBSyxDQUFDdUIsSUFBN0U7TUFBbUYsRUFBRSxFQUFFdkIsS0FBSyxDQUFDSSxFQUE3RjtNQUFpRyxRQUFRLEVBQUVKLEtBQUssQ0FBQ3dCO0lBQWpILEVBTFIsQ0FESjtFQVVILENBWEQsTUFXTztJQUNILG9CQUNJLHVFQUFLeEIsS0FBSyxDQUFDc0IsUUFBWCxDQURKO0VBR0g7QUFFSixDQW5CRDs7QUFxQkEsaUVBQWVILGlCQUFmOzs7Ozs7Ozs7Ozs7Ozs7O0FDdkJBOztBQUVBLE1BQU1NLG9CQUFOLFNBQW1DN0Isd0RBQW5DLENBQW1EO0VBRS9DRyxXQUFXLENBQUVDLEtBQUYsRUFBUztJQUNoQixNQUFNQSxLQUFOO0VBQ0g7O0VBRURpQixNQUFNLEdBQUk7SUFDTixvQkFDSTtNQUFJLEtBQUssRUFBRSxLQUFLakIsS0FBTCxDQUFXMEI7SUFBdEIsR0FDUyxLQUFLMUIsS0FBTCxDQUFXc0IsUUFEcEIsQ0FESjtFQUtIOztBQVo4Qzs7QUFnQm5ELGlFQUFlRyxvQkFBZjs7Ozs7Ozs7Ozs7Ozs7OztBQ2xCQTtBQUVlLE1BQU1FLGdCQUFOLFNBQStCL0Isd0RBQS9CLENBQStDO0VBRTFEcUIsTUFBTSxHQUFHO0lBQ0wsTUFBTTtNQUFFSyxRQUFGO01BQVlNLElBQVo7TUFBa0J4QjtJQUFsQixJQUF5QixLQUFLSixLQUFwQztJQUVBLG9CQUNJO01BQUksRUFBRSxFQUFFSSxFQUFSO01BQVksSUFBSSxFQUFDLEtBQWpCO01BQXVCLFNBQVMsRUFBRXdCLElBQUksR0FBRyxNQUFILEdBQVk7SUFBbEQsR0FDS04sUUFETCxDQURKO0VBS0g7O0FBVnlEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNGOUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVPLE1BQU1TLGNBQWMsR0FBSUMsR0FBRCxJQUFTO0VBQ25DLElBQUlDLE1BQU0sR0FBRyxDQUFDLEVBQWQ7O0VBQ0EsSUFBSUQsR0FBRyxDQUFDRSxZQUFSLEVBQXNCO0lBQ2xCLEdBQUc7TUFDQ0QsTUFBTSxJQUFJRCxHQUFHLENBQUNHLFNBQWQ7SUFDSCxDQUZELFFBRVNILEdBQUcsR0FBR0EsR0FBRyxDQUFDRSxZQUZuQjs7SUFHQSxPQUFPLENBQUNELE1BQUQsQ0FBUDtFQUNIO0FBQ0osQ0FSTTtBQVVBLE1BQU1HLGFBQWEsR0FBSUMsS0FBRCxJQUFXO0VBQ3BDLElBQUcsQ0FBQ0EsS0FBSixFQUFXLE9BQU9BLEtBQVA7RUFDWEEsS0FBSyxHQUFHQSxLQUFLLEdBQUcsSUFBaEI7RUFDQSxPQUFPUixzREFBTSxDQUFDUSxLQUFELENBQWI7QUFDSCxDQUpNO0FBTUEsTUFBTUMscUJBQXFCLEdBQUcsQ0FBQ0QsS0FBRCxFQUFRRSxTQUFSLEtBQXNCO0VBQ3ZELElBQUcsQ0FBQ0YsS0FBSixFQUFXLE9BQU9BLEtBQVA7RUFDWEEsS0FBSyxHQUFHQSxLQUFLLEdBQUcsSUFBaEI7RUFDQSxPQUFPUixzREFBTSxDQUFDUSxLQUFELENBQU4sQ0FBY0csRUFBZCxDQUFpQkQsU0FBakIsQ0FBUDtBQUNILENBSk07QUFNQSxNQUFNRSxXQUFXLEdBQUcsQ0FBQ0osS0FBRCxFQUFRSyxNQUFNLEdBQUcsaUJBQWpCLEtBQXVDO0VBQzlELElBQUcsQ0FBQ0wsS0FBSixFQUFXLE9BQU9BLEtBQVA7RUFDWCxPQUFPRCxhQUFhLENBQUNDLEtBQUQsQ0FBYixDQUFxQkssTUFBckIsQ0FBNEJBLE1BQTVCLENBQVA7QUFDSCxDQUhNO0FBS0EsTUFBTUMsbUJBQW1CLEdBQUlYLEdBQUQsSUFBUztFQUN4QyxJQUFJWSxHQUFHLEdBQUcsRUFBVjs7RUFDQSxLQUFLLElBQUlDLEdBQVQsSUFBZ0JiLEdBQWhCLEVBQXFCO0lBQ2pCLElBQUlZLEdBQUcsSUFBSSxFQUFYLEVBQWU7TUFDWEEsR0FBRyxJQUFJLEdBQVA7SUFDSDs7SUFDREEsR0FBRyxJQUFJQyxHQUFHLEdBQUcsR0FBTixHQUFZQyxrQkFBa0IsQ0FBQ2QsR0FBRyxDQUFDYSxHQUFELENBQUosQ0FBckM7RUFDSDs7RUFFRCxPQUFPRCxHQUFQO0FBQ0gsQ0FWTTtBQVlBLE1BQU1HLFVBQVUsR0FBRyxNQUFNO0VBQzVCLElBQUlDLEdBQUcsR0FBUWxCLDRDQUFHLENBQUNtQixNQUFNLENBQUNDLFFBQVAsQ0FBZ0JDLElBQWpCLENBQWxCO0VBQ0EsSUFBSUMsS0FBSyxHQUFNSixHQUFHLENBQUNLLE1BQUosQ0FBVyxJQUFYLENBQWY7RUFDQSxJQUFJQyxRQUFRLEdBQUdOLEdBQUcsQ0FBQ00sUUFBSixFQUFmO0VBQ0EsSUFBSUMsT0FBTyxHQUFJSCxLQUFLLENBQUNJLGNBQU4sQ0FBcUIsU0FBckIsSUFBa0NKLEtBQUssQ0FBQyxTQUFELENBQXZDLEdBQXFELElBQXBFOztFQUNBLElBQUdFLFFBQVEsSUFBSSxJQUFaLElBQW9CQSxRQUFRLElBQUksRUFBbkMsRUFBc0M7SUFDbENDLE9BQU8sSUFBSyxJQUFHRCxRQUFTLEVBQXhCO0VBQ0g7O0VBQ0QsT0FBT0MsT0FBUDtBQUNILENBVE07QUFXQSxNQUFNRSxNQUFNLEdBQUlDLElBQUQsSUFBUztFQUMzQkEsSUFBSSxHQUFHQSxJQUFJLENBQUNDLFdBQUwsRUFBUDtFQUNBLE9BQU9ELElBQUksQ0FBQ0UsT0FBTCxDQUFhLGdCQUFiLEVBQThCLEdBQTlCLENBQVA7QUFDSCxDQUhNO0FBS0EsTUFBTUMsZUFBZSxHQUFHLE1BQU07RUFDakMsSUFBRyxPQUFPWixNQUFQLEtBQWtCLFdBQXJCLEVBQWtDO0lBQzlCLE9BQVEsR0FBRUEsTUFBTSxDQUFDQyxRQUFQLENBQWdCWSxNQUFPLGdCQUFqQztFQUNIOztFQUNELE9BQU8sSUFBUDtBQUNILENBTE07QUFPQSxNQUFNQyxrQkFBa0IsR0FBRyxNQUFNO0VBQ3BDLElBQUliLFFBQVEsR0FBRyxFQUFmOztFQUNBLElBQUcsT0FBT0QsTUFBUCxLQUFrQixXQUFyQixFQUFrQztJQUM5QkMsUUFBUSxHQUFHRCxNQUFNLENBQUNDLFFBQWxCLENBRDhCLENBRTlCOztJQUNBLElBQUlELE1BQU0sQ0FBQ2UsR0FBWCxFQUNJZCxRQUFRLEdBQUdELE1BQU0sQ0FBQ2UsR0FBUCxDQUFXZCxRQUF0QjtFQUNQOztFQUNELE9BQU9BLFFBQVA7QUFDSCxDQVRNO0FBV0EsTUFBTWUsU0FBUyxHQUFHLE1BQU07RUFDM0IsSUFBRyxPQUFPaEIsTUFBUCxLQUFrQixXQUFyQixFQUFrQztJQUM5QixPQUFPQSxNQUFNLENBQUNDLFFBQVAsQ0FBZ0JZLE1BQXZCO0VBQ0g7O0VBQ0QsT0FBTyxJQUFQO0FBQ0gsQ0FMTTtBQU9BLE1BQU1JLGtCQUFrQixHQUFHLE1BQU07RUFDcEMsSUFBRyxPQUFPakIsTUFBUCxLQUFrQixXQUFyQixFQUFrQztJQUMvQixPQUFPQSxNQUFNLENBQUNDLFFBQVAsQ0FBZ0JpQixRQUF2QjtFQUNGOztFQUNELE9BQU8sSUFBUDtBQUNILENBTE07QUFPQSxNQUFNQyxjQUFjLEdBQUcsTUFBTTtFQUNoQyxJQUFHLE9BQU9uQixNQUFQLEtBQWtCLFdBQXJCLEVBQWtDO0lBQzlCLE9BQU9BLE1BQU0sQ0FBQ0MsUUFBUCxDQUFnQkMsSUFBdkI7RUFDSDs7RUFDRCxPQUFPLElBQVA7QUFDSCxDQUxNO0FBT0EsTUFBTWtCLG9CQUFvQixHQUFHLE1BQU07RUFDdEMsSUFBRyxPQUFPcEIsTUFBUCxLQUFrQixXQUFyQixFQUFrQztJQUM5QixPQUFPQSxNQUFNLENBQUNxQixtQkFBUCxJQUE4QixFQUFyQztFQUNIOztFQUNELE9BQU8sSUFBUDtBQUNILENBTE07QUFPQSxNQUFNQyxlQUFlLEdBQUlDLFdBQUQsSUFBaUI7RUFDNUMsSUFBRyxPQUFPdkIsTUFBUCxLQUFrQixXQUFyQixFQUFpQztJQUM3QixPQUFRLEdBQUVBLE1BQU0sQ0FBQ3dCLFlBQWEsR0FBRUQsV0FBWSxFQUE1QztFQUNIOztFQUNELE9BQU8sSUFBSyxFQUFaO0FBQ0gsQ0FMTTtBQU9BLE1BQU1FLGlCQUFpQixHQUFHLENBQUM3QixHQUFELEVBQU04QixLQUFOLEtBQWdCO0VBQzdDLElBQUcsT0FBTzFCLE1BQVAsS0FBa0IsV0FBckIsRUFBa0M7SUFDOUJBLE1BQU0sQ0FBQzJCLFlBQVAsQ0FBb0JDLE9BQXBCLENBQTRCaEMsR0FBNUIsRUFBaUM4QixLQUFqQztFQUNIO0FBQ0osQ0FKTTtBQU1BLE1BQU1HLG1CQUFtQixHQUFHLENBQUNqQyxHQUFELEVBQU1rQyxRQUFOLEtBQW1CO0VBQ2xELElBQUcsT0FBTzlCLE1BQVAsS0FBa0IsV0FBckIsRUFBa0M7SUFDOUIsSUFBSStCLEdBQUcsR0FBRy9CLE1BQU0sQ0FBQzJCLFlBQVAsQ0FBb0JLLE9BQXBCLENBQTRCcEMsR0FBNUIsQ0FBVjs7SUFDQSxJQUFHa0MsUUFBSCxFQUFZO01BQ1JHLE9BQU8sQ0FBQ0MsR0FBUixDQUFhLG9DQUFtQ3RDLEdBQUksRUFBcEQ7TUFDQXVDLHNCQUFzQixDQUFDdkMsR0FBRCxDQUF0QjtJQUNIOztJQUNELE9BQU9tQyxHQUFQO0VBQ0g7O0VBQ0QsT0FBTyxJQUFQO0FBQ0gsQ0FWTTtBQVlBLE1BQU1JLHNCQUFzQixHQUFJdkMsR0FBRCxJQUFTO0VBQzNDLElBQUcsT0FBT0ksTUFBUCxLQUFrQixXQUFyQixFQUFrQztJQUM5QkEsTUFBTSxDQUFDMkIsWUFBUCxDQUFvQlMsVUFBcEIsQ0FBK0J4QyxHQUEvQjtFQUNIO0FBQ0osQ0FKTTtBQU1BLE1BQU15QyxzQkFBc0IsR0FBRyxNQUFNO0VBQ3hDLElBQUcsT0FBT3JDLE1BQVAsS0FBa0IsV0FBckIsRUFBa0M7SUFDOUIsT0FBT0EsTUFBTSxDQUFDc0Msc0JBQWQ7RUFDSDs7RUFDRCxPQUFPLEtBQVA7QUFDSCxDQUxNO0FBT0EsTUFBTUMsdUJBQXVCLEdBQUlSLEdBQUQsSUFBUztFQUM1QyxJQUFHLE9BQU8vQixNQUFQLEtBQWtCLFdBQXJCLEVBQWtDO0lBQzlCQSxNQUFNLENBQUNzQyxzQkFBUCxHQUFnQ1AsR0FBaEM7RUFDSDtBQUNKLENBSk07QUFNQSxNQUFNUyxzQkFBc0IsR0FBRyxNQUFNO0VBQ3hDLElBQUlDLFFBQVEsR0FBRyxJQUFmOztFQUNBLElBQUcsT0FBT0MsU0FBUCxLQUFxQixXQUF4QixFQUFxQztJQUNqQ0QsUUFBUSxHQUFJQyxTQUFTLENBQUNDLFNBQVYsSUFBdUJELFNBQVMsQ0FBQ0MsU0FBVixDQUFvQixDQUFwQixDQUF4QixJQUFtREQsU0FBUyxDQUFDRCxRQUE3RCxJQUF5RUMsU0FBUyxDQUFDRSxZQUE5RjtFQUNIOztFQUNELE9BQU9ILFFBQVA7QUFDSCxDQU5NO0FBUUEsTUFBTUksYUFBYSxHQUFJQyxNQUFELElBQVk7RUFDckMsSUFBR0MsTUFBTSxDQUFDQyxJQUFQLENBQVlGLE1BQVosRUFBb0JHLE1BQXBCLEdBQTZCLENBQWhDLEVBQW1DO0lBQy9CLE1BQU1DLFVBQVUsR0FBR0gsTUFBTSxDQUFDQyxJQUFQLENBQVlGLE1BQVosRUFBb0IsQ0FBcEIsQ0FBbkI7SUFDQSxNQUFNSyxTQUFTLEdBQUdDLFFBQVEsQ0FBQ0MsY0FBVCxDQUF3QkgsVUFBeEIsQ0FBbEI7SUFDQSxJQUFJQyxTQUFKLEVBQWVuRCxNQUFNLENBQUNzRCxRQUFQLENBQWdCLENBQWhCLEVBQW1CeEUsY0FBYyxDQUFDcUUsU0FBRCxDQUFqQztFQUNsQjtBQUNKLENBTk07QUFRQSxNQUFNSSxTQUFTLEdBQUcsQ0FBQ0MsS0FBRCxFQUFRVixNQUFSLEtBQW1CO0VBQ3hDLElBQUdVLEtBQUssSUFBSVYsTUFBWixFQUFvQjtJQUNoQixPQUFPQSxNQUFNLENBQUNVLEtBQUQsQ0FBYjtFQUNIOztFQUNELE9BQU8sRUFBUDtBQUNILENBTE07QUFPQSxNQUFNQyxZQUFZLEdBQUcsQ0FBQ0MsT0FBRCxFQUFVQyxPQUFWLEtBQXNCO0VBQzlDLE1BQU1DLEtBQUssR0FBR2IsTUFBTSxDQUFDQyxJQUFQLENBQVlVLE9BQVosQ0FBZDtFQUNBLE1BQU1HLEtBQUssR0FBR2QsTUFBTSxDQUFDQyxJQUFQLENBQVlXLE9BQVosQ0FBZDs7RUFFQSxJQUFJQyxLQUFLLENBQUNYLE1BQU4sS0FBaUJZLEtBQUssQ0FBQ1osTUFBM0IsRUFBbUM7SUFDL0IsT0FBTyxLQUFQO0VBQ0g7O0VBRUQsS0FBSyxJQUFJckQsR0FBVCxJQUFnQmdFLEtBQWhCLEVBQXVCO0lBQ25CLElBQUlGLE9BQU8sQ0FBQzlELEdBQUQsQ0FBUCxLQUFpQitELE9BQU8sQ0FBQy9ELEdBQUQsQ0FBNUIsRUFBbUM7TUFDL0IsT0FBTyxLQUFQO0lBQ0g7RUFDSjs7RUFFRCxPQUFPLElBQVA7QUFDSCxDQWZNO0FBaUJBLE1BQU1rRSxXQUFXLEdBQUcsQ0FBQ0MsRUFBRCxFQUFLQyxFQUFMLEtBQ3ZCRCxFQUFFLENBQUNkLE1BQUgsS0FBY2UsRUFBRSxDQUFDZixNQUFqQixJQUEyQmMsRUFBRSxDQUFDRSxLQUFILENBQVMsQ0FBQ0MsQ0FBRCxFQUFJQyxHQUFKLEtBQVlWLFlBQVksQ0FBQ1MsQ0FBRCxFQUFJRixFQUFFLENBQUNHLEdBQUQsQ0FBTixDQUFqQyxDQUR4QjtBQUdBLE1BQU1DLE9BQU8sR0FBSXJGLEdBQUQsSUFBUztFQUM1QixPQUFPZ0UsTUFBTSxDQUFDQyxJQUFQLENBQVlqRSxHQUFaLEVBQWlCa0UsTUFBakIsS0FBNEIsQ0FBbkM7QUFDSCxDQUZNO0FBS0EsTUFBTW9CLGVBQWUsR0FBSTFFLEdBQUQsSUFBUztFQUNwQyxPQUFPQSxHQUFHLENBQ0wyRSxRQURFLENBQ08sUUFEUCxFQUVGM0QsT0FGRSxDQUVNLEtBRk4sRUFFYSxHQUZiLEVBR0ZBLE9BSEUsQ0FHTSxLQUhOLEVBR2EsR0FIYixFQUlGQSxPQUpFLENBSU0sSUFKTixFQUlZLEVBSlosQ0FBUDtBQUtILENBTk07QUFRQSxNQUFNNEQsWUFBWSxHQUFHLE9BQ3hCQyxFQUR3QixFQUV4QkMsa0JBQWtCLEdBQUcsQ0FGRyxLQUd2QjtFQUNELEtBQUssSUFBSUMsQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBR0Qsa0JBQXBCLEVBQXdDQyxDQUFDLEVBQXpDLEVBQTZDO0lBQ3pDLElBQUksTUFBTUYsRUFBRSxFQUFaLEVBQWdCO01BQ1osT0FBTyxJQUFQO0lBQ0g7RUFDSjs7RUFFRCxPQUFPLEtBQVA7QUFDSCxDQVhNO0FBYUEsTUFBTUcsaUJBQWlCLEdBQUcsTUFBTTtFQUNuQyxJQUFHLE9BQU8zRSxNQUFQLEtBQWtCLFdBQXJCLEVBQWtDO0lBQzlCLE9BQU9BLE1BQU0sQ0FBQzRFLDZCQUFQLElBQXdDQyxPQUFPLENBQUNDLEdBQVIsQ0FBWUYsNkJBQTNEO0VBQ0g7O0VBQ0QsT0FBTyxJQUFQO0FBQ0gsQ0FMTTs7Ozs7Ozs7Ozs7QUN0T1A7Ozs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7OztVQ0FBO1VBQ0E7O1VBRUE7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7O1VBRUE7VUFDQTs7VUFFQTtVQUNBO1VBQ0E7Ozs7O1dDdEJBO1dBQ0E7V0FDQTtXQUNBO1dBQ0E7V0FDQSxpQ0FBaUMsV0FBVztXQUM1QztXQUNBOzs7OztXQ1BBO1dBQ0E7V0FDQTtXQUNBO1dBQ0EseUNBQXlDLHdDQUF3QztXQUNqRjtXQUNBO1dBQ0E7Ozs7O1dDUEE7Ozs7O1dDQUE7V0FDQTtXQUNBO1dBQ0EsdURBQXVELGlCQUFpQjtXQUN4RTtXQUNBLGdEQUFnRCxhQUFhO1dBQzdEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNOQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBLE1BQU1NLFFBQVEsR0FBRztFQUNiQyxRQUFRLEVBQUU7QUFERyxDQUFqQjs7QUFJQSxNQUFNQyxTQUFTLEdBQUcsQ0FBQ0MsR0FBRCxFQUFNQyxPQUFOLEVBQWUvSCxPQUFmLEVBQXdCYSxpQkFBeEIsS0FBOEM7RUFFNUQsSUFBSW1ILGNBQWMsR0FBRyxFQUFyQjtFQUNBLElBQUlDLEtBQUssR0FBR0YsT0FBTyxDQUFDRyxHQUFSLENBQVksQ0FBQ0MsR0FBRCxFQUFLaEIsQ0FBTCxLQUFXO0lBQy9CLG9CQUNJLDJEQUFDLDBEQUFEO01BQW1CLGlCQUFpQixFQUFFdEcsaUJBQXRDO01BQXlELEdBQUcsRUFBRWlILEdBQUcsQ0FBQyxJQUFELENBQUgsR0FBWSxRQUFaLEdBQXVCWCxDQUFyRjtNQUF3RixJQUFJLEVBQUVnQixHQUFHLENBQUNDLFNBQWxHO01BQTZHLEVBQUUsRUFBRU4sR0FBRyxDQUFDbEksRUFBckg7TUFBeUgsT0FBTyxFQUFFa0ksR0FBRyxDQUFDbEgsT0FBdEk7TUFBK0ksWUFBWSxFQUFFWixPQUFPLENBQUNnQjtJQUFySyxHQUNLOEcsR0FBRyxDQUFDSyxHQUFHLENBQUNDLFNBQUwsQ0FEUixDQURKO0VBS0gsQ0FOVyxDQUFaOztFQVFBLElBQUlwSSxPQUFKLEVBQWE7SUFDVGlJLEtBQUssQ0FBQ0ksSUFBTixlQUFXLDJEQUFDLGlFQUFEO01BQTBCLEdBQUcsRUFBRSxhQUFhUCxHQUFHLENBQUMsSUFBRCxDQUEvQztNQUF1RCxFQUFFLEVBQUVBLEdBQUcsQ0FBQyxJQUFELENBQTlEO01BQXNFLE9BQU8sRUFBRTlIO0lBQS9FLEVBQVg7RUFDSDs7RUFFRCxPQUFPaUksS0FBUDtBQUNILENBaEJEOztBQWtCQSxNQUFNSyxZQUFZLEdBQUcsQ0FBQ1AsT0FBRCxFQUFVUSxPQUFWLEVBQW1CQyxNQUFuQixFQUEyQnhILFlBQTNCLEVBQXlDSCxpQkFBekMsS0FBK0Q7RUFFaEYsSUFBSW9ILEtBQUssR0FBR0YsT0FBTyxDQUFDRyxHQUFSLENBQVksQ0FBQ0MsR0FBRCxFQUFLaEIsQ0FBTCxLQUFXO0lBQy9CLElBQUlzQixVQUFVLEdBQUksT0FBT0YsT0FBTyxDQUFDSixHQUFHLENBQUNDLFNBQUwsQ0FBZCxLQUFrQyxXQUFuQyxHQUFrREcsT0FBTyxDQUFDSixHQUFHLENBQUNDLFNBQUwsQ0FBekQsR0FBMkUsRUFBNUY7SUFDQSxvQkFDSTtNQUFJLEdBQUcsRUFBRSxhQUFhakI7SUFBdEIsR0FDS3RHLGlCQUFpQixpQkFDZDtNQUFVLFNBQVMsRUFBQyxjQUFwQjtNQUFtQyxFQUFFLEVBQUUsU0FBU3NILEdBQUcsQ0FBQ0MsU0FBcEQ7TUFBK0QsSUFBSSxFQUFFRCxHQUFHLENBQUNDLFNBQXpFO01BQW9GLFFBQVEsRUFBRXBILFlBQTlGO01BQ08sS0FBSyxFQUFFeUg7SUFEZCxFQUZSLEVBS0ssQ0FBQzVILGlCQUFELGlCQUNHO01BQU8sU0FBUyxFQUFDLGNBQWpCO01BQWdDLEVBQUUsRUFBRSxTQUFTc0gsR0FBRyxDQUFDQyxTQUFqRDtNQUE0RCxJQUFJLEVBQUVELEdBQUcsQ0FBQ0MsU0FBdEU7TUFBaUYsUUFBUSxFQUFFcEgsWUFBM0Y7TUFDTyxLQUFLLEVBQUV5SDtJQURkLEVBTlIsQ0FESjtFQVlILENBZFcsQ0FBWjtFQWdCQVIsS0FBSyxDQUFDSSxJQUFOLGVBQ0k7SUFBSSxHQUFHLEVBQUM7RUFBUixnQkFDSTtJQUFRLFNBQVMsRUFBQyxpQkFBbEI7SUFBb0MsT0FBTyxFQUFFRztFQUE3QyxXQURKLENBREo7RUFNQSxPQUFPUCxLQUFQO0FBQ0gsQ0F6QkQ7O0FBNEJlLE1BQU1TLGFBQU4sU0FBNEJ0Six3REFBNUIsQ0FBNEM7RUFFdkRHLFdBQVcsQ0FBQ0MsS0FBRCxFQUFRO0lBQ2YsTUFBTUEsS0FBTjtJQUVBLEtBQUtDLEtBQUwsR0FBYTtNQUNUa0osSUFBSSxFQUFFbkosS0FBSyxDQUFDb0osSUFESDtNQUVUTCxPQUFPLEVBQUU7SUFGQSxDQUFiLENBSGUsQ0FRZjs7SUFDQSxLQUFLckksTUFBTCxHQUFjVixLQUFLLENBQUNxSixPQUFOLENBQWM3SSxPQUFkLENBQXNCSSxJQUF0QixDQUEyQjBJLE9BQXpDO0lBRUEsS0FBSzlJLE9BQUwscUJBQW1CUixLQUFLLENBQUNxSixPQUFOLENBQWM3SSxPQUFqQztJQUNBLEtBQUtBLE9BQUwsQ0FBYU0sSUFBYixHQUFvQixLQUFLeUksT0FBTCxDQUFhckksSUFBYixDQUFrQixJQUFsQixDQUFwQjtJQUNBLEtBQUtWLE9BQUwsQ0FBYUksSUFBYixHQUFvQixLQUFLNEksT0FBTCxDQUFhdEksSUFBYixDQUFrQixJQUFsQixDQUFwQjtJQUNBLEtBQUtWLE9BQUwsQ0FBYUMsTUFBYixHQUFzQixLQUFLZ0osV0FBTCxDQUFpQnZJLElBQWpCLENBQXNCLElBQXRCLENBQXRCO0lBQ0EsS0FBS1YsT0FBTCxDQUFhZ0IsWUFBYixHQUE0QixLQUFLa0ksWUFBTCxDQUFrQnhJLElBQWxCLENBQXVCLElBQXZCLENBQTVCO0lBQ0EsS0FBS1YsT0FBTCxDQUFhUSxNQUFiLEdBQXNCLEtBQUsySSxhQUFMLENBQW1CekksSUFBbkIsQ0FBd0IsSUFBeEIsQ0FBdEI7SUFFQSxLQUFLMEksVUFBTCxHQUFrQixLQUFLQSxVQUFMLENBQWdCMUksSUFBaEIsQ0FBcUIsSUFBckIsQ0FBbEI7SUFDQSxLQUFLMkksZUFBTCxHQUF1QixLQUFLQyxlQUFMLENBQXFCNUksSUFBckIsQ0FBMEIsSUFBMUIsQ0FBdkI7RUFDSDs7RUFFRDZJLGtCQUFrQixDQUFDQyxTQUFELEVBQVlDLFNBQVosRUFBdUJDLFFBQXZCLEVBQWlDO0lBQy9DLElBQUcsQ0FBQ3hELDZEQUFZLENBQUMsS0FBSzFHLEtBQUwsQ0FBV29KLElBQVosRUFBa0JZLFNBQVMsQ0FBQ1osSUFBNUIsQ0FBaEIsRUFBbUQ7TUFDL0MsS0FBS3pJLFFBQUwsQ0FBYztRQUFDd0ksSUFBSSxFQUFFLEtBQUtuSixLQUFMLENBQVdvSjtNQUFsQixDQUFkO0lBQ0g7RUFDSjs7RUFFREksT0FBTyxDQUFDcEosRUFBRCxFQUFLQyxFQUFMLEVBQVM7SUFDWixNQUFNO01BQUU4STtJQUFGLElBQVcsS0FBS2xKLEtBQXRCO0lBQ0EsSUFBSXFJLEdBQUcsR0FBR2EsSUFBSSxDQUFDZ0IsSUFBTCxDQUFVQyxDQUFDLElBQUlBLENBQUMsQ0FBQ2hLLEVBQUYsSUFBUUEsRUFBdkIsQ0FBVjtJQUNBa0ksR0FBRyxDQUFDbEgsT0FBSixHQUFjLEtBQWQ7SUFFQSxLQUFLaUosV0FBTCxHQUFtQixJQUFuQjtJQUVBLEtBQUsxSixRQUFMLENBQWM7TUFDVndJLElBQUksRUFBRUE7SUFESSxDQUFkO0lBSUEsS0FBS3pJLE1BQUwsQ0FBWTRILEdBQVo7RUFDSDs7RUFFRG1CLFdBQVcsQ0FBQ3JKLEVBQUQsRUFBSztJQUNaLElBQUlELFFBQVEsR0FBRyxLQUFLSCxLQUFMLENBQVdxSixPQUFYLENBQW1CN0ksT0FBbkIsQ0FBMkJDLE1BQTNCLENBQWtDNkksT0FBakQ7SUFDQSxJQUFJZ0IsT0FBTyxHQUFHLEtBQUt0SyxLQUFMLENBQVdxSixPQUFYLENBQW1CN0YsY0FBbkIsQ0FBa0MsU0FBbEMsQ0FBZDs7SUFFQSxJQUFJOEcsT0FBSixFQUFhO01BQ1RuSyxRQUFRLENBQUNDLEVBQUQsQ0FBUjtJQUNILENBRkQsTUFFTztNQUNINEgsdURBQUEsQ0FBVTtRQUNOd0MsS0FBSyxFQUFFdkMsMkVBQUEsQ0FBWSxzQkFBWixDQUREO1FBRU52RSxJQUFJLEVBQUV1RSwyRUFBQSxDQUFZLHdCQUFaLENBRkE7UUFHTnlDLElBQUksRUFBRSxTQUhBO1FBSU5DLGdCQUFnQixFQUFFLElBSlo7UUFLTkMsa0JBQWtCLEVBQUUsU0FMZDtRQU1OQyxpQkFBaUIsRUFBRTVDLDJFQUFBLENBQVksb0JBQVo7TUFOYixDQUFWLEVBT0c2QyxJQVBILENBT1EsVUFBU0MsTUFBVCxFQUFnQjtRQUNwQixJQUFJQSxNQUFNLENBQUNwRyxLQUFYLEVBQWtCO1VBQ2R4RSxRQUFRLENBQUNDLEVBQUQsQ0FBUjtRQUNIO01BQ0osQ0FYRDtJQVlIO0VBQ0o7O0VBRURtSixPQUFPLENBQUNuSixFQUFELEVBQUtDLEVBQUwsRUFBUztJQUNaLE1BQU07TUFBRThJO0lBQUYsSUFBVyxLQUFLbEosS0FBdEI7SUFDQSxJQUFJcUksR0FBRyxHQUFHYSxJQUFJLENBQUNnQixJQUFMLENBQVVDLENBQUMsSUFBSUEsQ0FBQyxDQUFDaEssRUFBRixJQUFRQSxFQUF2QixDQUFWLENBRlksQ0FJWjs7SUFDQSxLQUFLaUssV0FBTCxxQkFBdUIvQixHQUF2QjtJQUVBQSxHQUFHLENBQUNsSCxPQUFKLEdBQWMsSUFBZDtJQUVBLEtBQUtULFFBQUwsQ0FBYztNQUNWd0ksSUFBSSxFQUFFQTtJQURJLENBQWQ7RUFHSDs7RUFFRFEsYUFBYSxDQUFDdkosRUFBRCxFQUFLQyxFQUFMLEVBQVM7SUFDbEIsTUFBTTtNQUFFOEk7SUFBRixJQUFXLEtBQUtsSixLQUF0QjtJQUNBa0osSUFBSSxDQUFDNkIsT0FBTCxDQUFhWixDQUFDLElBQUk7TUFDZEEsQ0FBQyxDQUFDaEosT0FBRixHQUFZLEtBQVo7SUFDSCxDQUZEO0lBSUEsSUFBSTZKLE1BQU0sR0FBRzlCLElBQUksQ0FBQytCLFNBQUwsQ0FBZWQsQ0FBQyxJQUFJQSxDQUFDLENBQUNoSyxFQUFGLElBQVFBLEVBQTVCLENBQWI7SUFFQStJLElBQUksQ0FBQzhCLE1BQUQsQ0FBSixHQUFlLEtBQUtaLFdBQXBCO0lBRUEsS0FBSzFKLFFBQUwsQ0FBYztNQUNWd0ksSUFBSSxFQUFFQTtJQURJLENBQWQ7RUFHSDs7RUFFRE8sWUFBWSxDQUFDckosRUFBRCxFQUFLO0lBQ2IsTUFBTTtNQUFFOEk7SUFBRixJQUFXLEtBQUtsSixLQUF0QjtJQUNBLElBQUl3RyxLQUFLLEdBQUdwRyxFQUFFLENBQUM4SyxNQUFmO0lBQ0EsSUFBSTdDLEdBQUcsR0FBR2EsSUFBSSxDQUFDZ0IsSUFBTCxDQUFVQyxDQUFDLElBQUlBLENBQUMsQ0FBQ2hLLEVBQUYsSUFBUXFHLEtBQUssQ0FBQ3JHLEVBQTdCLENBQVY7SUFFQWtJLEdBQUcsQ0FBQzdCLEtBQUssQ0FBQ2xGLElBQVAsQ0FBSCxHQUFrQmtGLEtBQUssQ0FBQzlCLEtBQXhCO0lBRUEsS0FBS2hFLFFBQUwsQ0FBYztNQUNWd0ksSUFBSSxFQUFFQTtJQURJLENBQWQ7RUFHSDs7RUFFRFcsZUFBZSxDQUFDekosRUFBRCxFQUFLO0lBQ2hCLE1BQU07TUFBQzBJO0lBQUQsSUFBWSxLQUFLOUksS0FBdkI7SUFDQSxJQUFJd0csS0FBSyxHQUFHcEcsRUFBRSxDQUFDOEssTUFBZjtJQUVBcEMsT0FBTyxDQUFDdEMsS0FBSyxDQUFDbEYsSUFBUCxDQUFQLEdBQXNCa0YsS0FBSyxDQUFDOUIsS0FBNUI7SUFFQSxLQUFLaEUsUUFBTCxDQUFjO01BQ1ZvSSxPQUFPLEVBQUVBO0lBREMsQ0FBZDtFQUdIOztFQUVEYSxVQUFVLENBQUN2SixFQUFELEVBQUs7SUFDWCxNQUFNO01BQUMwSTtJQUFELElBQVksS0FBSzlJLEtBQXZCO0lBQ0FJLEVBQUUsQ0FBQ0MsY0FBSDtJQUVBLEtBQUtJLE1BQUwsQ0FBWXFJLE9BQVo7SUFFQSxLQUFLcEksUUFBTCxDQUFjO01BQ1ZvSSxPQUFPLEVBQUU7SUFEQyxDQUFkO0VBR0g7O0VBRUQ5SCxNQUFNLEdBQUc7SUFDTCxJQUFJO01BQUNvSSxPQUFEO01BQVVkO0lBQVYsSUFBc0IsS0FBS3ZJLEtBQS9CO0lBQ0EsSUFBSW9MLFVBQVUsR0FBRy9CLE9BQU8sQ0FBQzdGLGNBQVIsQ0FBdUIsV0FBdkIsSUFBc0M2RixPQUFPLENBQUNnQyxTQUE5QyxHQUEwRCxFQUEzRTtJQUNBLElBQUlDLFFBQVEsR0FBRyxLQUFLdEwsS0FBTCxDQUFXd0QsY0FBWCxDQUEwQixVQUExQixDQUFmO0lBQ0Esb0JBQ0kscUZBQ0k7TUFBTyxTQUFTLEVBQUUsc0RBQXNENEg7SUFBeEUsZ0JBQ0ksdUZBQ0ksdUVBQ0s3QyxPQUFPLENBQUNHLEdBQVIsQ0FBWSxDQUFDQyxHQUFELEVBQUtoQixDQUFMLEtBQVc7TUFDcEIsSUFBSVMsUUFBUSxHQUFJTyxHQUFHLENBQUNqSCxLQUFMLEdBQWNpSCxHQUFHLENBQUNqSCxLQUFsQixHQUEwQnlHLFFBQVEsQ0FBQ0MsUUFBbEQ7TUFDQSxvQkFDSSwyREFBQyw2REFBRDtRQUFzQixLQUFLLEVBQUVBLFFBQTdCO1FBQXVDLEdBQUcsRUFBRSxhQUFhVDtNQUF6RCxHQUNLZ0IsR0FBRyxDQUFDaEUsS0FEVCxDQURKO0lBS0gsQ0FQQSxDQURMLEVBU0ssS0FBS25FLE9BQUwsaUJBQ0csMkRBQUMsNkRBQUQ7TUFBc0IsR0FBRyxFQUFDO0lBQTFCLGFBVlIsQ0FESixDQURKLGVBa0JJLDBFQUNLK0gsT0FBTyxDQUFDckMsTUFBUixHQUFpQixDQUFqQixJQUFzQixLQUFLakcsS0FBTCxDQUFXa0osSUFBWCxDQUFnQlQsR0FBaEIsQ0FBb0IsQ0FBQ0osR0FBRCxFQUFLWCxDQUFMLEtBQVc7TUFDbEQsSUFBRzRELEtBQUssQ0FBQ0MsT0FBTixDQUFjbEQsR0FBZCxLQUFzQkEsR0FBRyxDQUFDcEMsTUFBSixLQUFlcUMsT0FBTyxDQUFDckMsTUFBaEQsRUFBd0Q7UUFDcERoQixPQUFPLENBQUN1RyxJQUFSLENBQWMsZUFBYzlELENBQUUsT0FBTVcsR0FBRyxDQUFDcEMsTUFBTyxrQkFBaUJxQyxPQUFPLENBQUNyQyxNQUFPLEdBQS9FO1FBQ0Esb0JBQU8sc0VBQVA7TUFDSDs7TUFDRCxvQkFDSSwyREFBQyx5REFBRDtRQUFrQixJQUFJLEVBQUV5QixDQUFDLEdBQUMsQ0FBRixLQUFRLENBQWhDO1FBQW1DLEdBQUcsRUFBRSxTQUFTVyxHQUFHLENBQUNsSSxFQUFyRDtRQUF5RCxFQUFFLEVBQUVrSSxHQUFHLENBQUNsSTtNQUFqRSxHQUNLaUksU0FBUyxDQUFDQyxHQUFELEVBQU1DLE9BQU4sRUFBZSxLQUFLL0gsT0FBcEIsRUFBNkI4SyxRQUE3QixDQURkLENBREo7SUFNSCxDQVhzQixDQUQzQixlQWFJLDJEQUFDLHlEQUFEO01BQWtCLElBQUksRUFBRSxDQUF4QjtNQUEyQixFQUFFLEVBQUMsU0FBOUI7TUFBd0MsR0FBRyxFQUFDO0lBQTVDLEdBQ0t4QyxZQUFZLENBQUNQLE9BQUQsRUFBVSxLQUFLdEksS0FBTCxDQUFXOEksT0FBckIsRUFBOEIsS0FBS2EsVUFBbkMsRUFBK0MsS0FBS0MsZUFBcEQsRUFBcUV5QixRQUFyRSxDQURqQixDQWJKLENBbEJKLENBREosZUFxQ0ksMkRBQUMsc0RBQUQ7TUFBYyxTQUFTLEVBQUU7SUFBekIsRUFyQ0osQ0FESjtFQXlDSDs7QUE5S3NEO0FBK0sxRCxDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vb3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL3dlYnBhY2svdW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbiIsIndlYnBhY2s6Ly9vcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vLi9zcmMvY29tcG9uZW50cy90YWJsZS1lZGl0YWJsZS9FZGl0YWJsZUFjdGlvbnNUYWJsZUNlbGwuanMiLCJ3ZWJwYWNrOi8vb3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uLy4vc3JjL2NvbXBvbmVudHMvdGFibGUtZWRpdGFibGUvRWRpdGFibGVUYWJsZUNlbGwuanMiLCJ3ZWJwYWNrOi8vb3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uLy4vc3JjL2NvbXBvbmVudHMvdGFibGUtZWRpdGFibGUvRWRpdGFibGVUYWJsZUhlYWRpbmcuanMiLCJ3ZWJwYWNrOi8vb3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uLy4vc3JjL2NvbXBvbmVudHMvdGFibGUtZWRpdGFibGUvRWRpdGFibGVUYWJsZVJvdy5qcyIsIndlYnBhY2s6Ly9vcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vLi9zcmMvdXRpbHMvbWV0aG9kcy5qcyIsIndlYnBhY2s6Ly9vcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vLi9zcmMvY29tcG9uZW50cy90YWJsZS1lZGl0YWJsZS9lZGl0YWJsZS10YWJsZS5jc3M/N2UwYyIsIndlYnBhY2s6Ly9vcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vZXh0ZXJuYWwgY29tbW9uanMgXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2RlZmluZVByb3BlcnR5XCIiLCJ3ZWJwYWNrOi8vb3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2V4dGVybmFsIGNvbW1vbmpzIFwiaTE4bi1yZWFjdC9kaXN0L2kxOG4tcmVhY3RcIiIsIndlYnBhY2s6Ly9vcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vZXh0ZXJuYWwgY29tbW9uanMgXCJtb21lbnQtdGltZXpvbmVcIiIsIndlYnBhY2s6Ly9vcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vZXh0ZXJuYWwgY29tbW9uanMgXCJyZWFjdFwiIiwid2VicGFjazovL29wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9leHRlcm5hbCBjb21tb25qcyBcInJlYWN0LXRvb2x0aXBcIiIsIndlYnBhY2s6Ly9vcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vZXh0ZXJuYWwgY29tbW9uanMgXCJzd2VldGFsZXJ0MlwiIiwid2VicGFjazovL29wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9leHRlcm5hbCBjb21tb25qcyBcInVyaWpzXCIiLCJ3ZWJwYWNrOi8vb3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL3dlYnBhY2svYm9vdHN0cmFwIiwid2VicGFjazovL29wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi93ZWJwYWNrL3J1bnRpbWUvY29tcGF0IGdldCBkZWZhdWx0IGV4cG9ydCIsIndlYnBhY2s6Ly9vcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vd2VicGFjay9ydW50aW1lL2RlZmluZSBwcm9wZXJ0eSBnZXR0ZXJzIiwid2VicGFjazovL29wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi93ZWJwYWNrL3J1bnRpbWUvaGFzT3duUHJvcGVydHkgc2hvcnRoYW5kIiwid2VicGFjazovL29wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi93ZWJwYWNrL3J1bnRpbWUvbWFrZSBuYW1lc3BhY2Ugb2JqZWN0Iiwid2VicGFjazovL29wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi8uL3NyYy9jb21wb25lbnRzL3RhYmxlLWVkaXRhYmxlL0VkaXRhYmxlVGFibGUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uIHdlYnBhY2tVbml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uKHJvb3QsIGZhY3RvcnkpIHtcblx0aWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnKVxuXHRcdG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeSgpO1xuXHRlbHNlIGlmKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZClcblx0XHRkZWZpbmUoXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb25cIiwgW10sIGZhY3RvcnkpO1xuXHRlbHNlIGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0Jylcblx0XHRleHBvcnRzW1wib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uXCJdID0gZmFjdG9yeSgpO1xuXHRlbHNlXG5cdFx0cm9vdFtcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvblwiXSA9IGZhY3RvcnkoKTtcbn0pKHRoaXMsICgpID0+IHtcbnJldHVybiAiLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBFZGl0YWJsZUFjdGlvbnNUYWJsZUNlbGwgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuXG4gICAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICAgICAgc3VwZXIocHJvcHMpO1xuXG4gICAgICAgIHRoaXMuc3RhdGUgPSB7XG4gICAgICAgICAgICBpc19lZGl0aW5nOiBmYWxzZVxuICAgICAgICB9XG5cbiAgICB9XG5cbiAgICBvbkRlbGV0ZShpZCwgZXYpIHtcbiAgICAgICAgZXYucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZXYuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICAgICAgdGhpcy5wcm9wcy5hY3Rpb25zLmRlbGV0ZShpZCk7XG4gICAgfVxuXG4gICAgb25TYXZlKGlkLCBldikge1xuICAgICAgICBldi5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBldi5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICAgIGlzX2VkaXRpbmc6IGZhbHNlXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMucHJvcHMuYWN0aW9ucy5zYXZlKGlkKTtcbiAgICB9XG5cbiAgICBvbkVkaXQoaWQsIGV2KSB7XG4gICAgICAgIGV2LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGV2LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgICAgaXNfZWRpdGluZzogdHJ1ZVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLnByb3BzLmFjdGlvbnMuZWRpdChpZCk7XG4gICAgfVxuXG4gICAgb25DYW5jZWwoaWQsIGV2KSB7XG4gICAgICAgIGV2LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGV2LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgICAgaXNfZWRpdGluZzogZmFsc2VcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5wcm9wcy5hY3Rpb25zLmNhbmNlbChpZCk7XG4gICAgfVxuXG4gICAgcmVuZGVyKCkge1xuICAgICAgICBsZXQge2FjdGlvbnMsIGlkfSA9IHRoaXMucHJvcHM7XG5cbiAgICAgICAgaWYgKHRoaXMuc3RhdGUuaXNfZWRpdGluZykge1xuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICA8dGQgY2xhc3NOYW1lPVwiYWN0aW9uc1wiPlxuICAgICAgICAgICAgICAgICAgICA8YSBocmVmPVwiXCIgb25DbGljaz17dGhpcy5vblNhdmUuYmluZCh0aGlzLGlkKX0gZGF0YS10aXA9XCJzYXZlXCIgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3NOYW1lPVwiZmEgZmEtZmxvcHB5LW9cIj48L2k+XG4gICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj1cIlwiIG9uQ2xpY2s9e3RoaXMub25DYW5jZWwuYmluZCh0aGlzLGlkKX0gZGF0YS10aXA9XCJjYW5jZWxcIiA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzc05hbWU9XCJmYSBmYS10aW1lc1wiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICA8dGQgY2xhc3NOYW1lPVwiYWN0aW9uc1wiPlxuICAgICAgICAgICAgICAgICAgICB7J2VkaXQnIGluIGFjdGlvbnMgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9XCJcIiBvbkNsaWNrPXt0aGlzLm9uRWRpdC5iaW5kKHRoaXMsaWQpfSBkYXRhLXRpcD1cImVkaXRcIiA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3NOYW1lPVwiZmEgZmEtcGVuY2lsLXNxdWFyZS1vXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHsnZGVsZXRlJyBpbiBhY3Rpb25zICYmXG4gICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPVwiXCIgb25DbGljaz17dGhpcy5vbkRlbGV0ZS5iaW5kKHRoaXMsaWQpfSBkYXRhLXRpcD1cImRlbGV0ZVwiID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzc05hbWU9XCJmYSBmYS10cmFzaC1vIGRlbGV0ZS1pY29uXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9XG59O1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcblxuY29uc3QgRWRpdGFibGVUYWJsZUNlbGwgPSAocHJvcHMpID0+IHtcblxuICAgIGlmIChwcm9wcy5pc19lZGl0KSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgeyFwcm9wcy5zaG91bGRVc2VUZXh0QXJlYSAmJlxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzc05hbWU9XCJmb3JtLWNvbnRyb2xcIiBkZWZhdWx0VmFsdWU9e3Byb3BzLmNoaWxkcmVufSBuYW1lPXtwcm9wcy5uYW1lfSBpZD17cHJvcHMuaWR9IG9uQ2hhbmdlPXtwcm9wcy5oYW5kbGVDaGFuZ2V9Lz5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAge3Byb3BzLnNob3VsZFVzZVRleHRBcmVhICYmXG4gICAgICAgICAgICAgICAgICAgIDx0ZXh0YXJlYSBjbGFzc05hbWU9XCJmb3JtLWNvbnRyb2xcIiBkZWZhdWx0VmFsdWU9e3Byb3BzLmNoaWxkcmVufSBuYW1lPXtwcm9wcy5uYW1lfSBpZD17cHJvcHMuaWR9IG9uQ2hhbmdlPXtwcm9wcy5oYW5kbGVDaGFuZ2V9Lz5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L3RkPlxuICAgICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8dGQ+e3Byb3BzLmNoaWxkcmVufTwvdGQ+XG4gICAgICAgICk7XG4gICAgfVxuXG59O1xuXG5leHBvcnQgZGVmYXVsdCBFZGl0YWJsZVRhYmxlQ2VsbDsiLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuXG5jbGFzcyBFZGl0YWJsZVRhYmxlSGVhZGluZyBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG5cbiAgICBjb25zdHJ1Y3RvciAocHJvcHMpIHtcbiAgICAgICAgc3VwZXIocHJvcHMpO1xuICAgIH1cblxuICAgIHJlbmRlciAoKSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8dGggd2lkdGg9e3RoaXMucHJvcHMud2lkdGh9PlxuICAgICAgICAgICAgICAgICAgICB7dGhpcy5wcm9wcy5jaGlsZHJlbn1cbiAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICk7XG4gICAgfVxuXG59XG5cbmV4cG9ydCBkZWZhdWx0IEVkaXRhYmxlVGFibGVIZWFkaW5nOyIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVkaXRhYmxlVGFibGVSb3cgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuXG4gICAgcmVuZGVyKCkge1xuICAgICAgICBjb25zdCB7IGNoaWxkcmVuLCBldmVuLCBpZCB9ID0gdGhpcy5wcm9wcztcblxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPHRyIGlkPXtpZH0gcm9sZT1cInJvd1wiIGNsYXNzTmFtZT17ZXZlbiA/ICdldmVuJyA6ICdvZGQnfT5cbiAgICAgICAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgICAgICA8L3RyPlxuICAgICAgICApO1xuICAgIH1cbn1cbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTggT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqKi9cblxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQtdGltZXpvbmUnO1xuaW1wb3J0IFVSSSBmcm9tIFwidXJpanNcIjtcblxuZXhwb3J0IGNvbnN0IGZpbmRFbGVtZW50UG9zID0gKG9iaikgPT4ge1xuICAgIHZhciBjdXJ0b3AgPSAtNzA7XG4gICAgaWYgKG9iai5vZmZzZXRQYXJlbnQpIHtcbiAgICAgICAgZG8ge1xuICAgICAgICAgICAgY3VydG9wICs9IG9iai5vZmZzZXRUb3A7XG4gICAgICAgIH0gd2hpbGUgKG9iaiA9IG9iai5vZmZzZXRQYXJlbnQpO1xuICAgICAgICByZXR1cm4gW2N1cnRvcF07XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGVwb2NoVG9Nb21lbnQgPSAoYXRpbWUpID0+IHtcbiAgICBpZighYXRpbWUpIHJldHVybiBhdGltZTtcbiAgICBhdGltZSA9IGF0aW1lICogMTAwMDtcbiAgICByZXR1cm4gbW9tZW50KGF0aW1lKTtcbn07XG5cbmV4cG9ydCBjb25zdCBlcG9jaFRvTW9tZW50VGltZVpvbmUgPSAoYXRpbWUsIHRpbWVfem9uZSkgPT4ge1xuICAgIGlmKCFhdGltZSkgcmV0dXJuIGF0aW1lO1xuICAgIGF0aW1lID0gYXRpbWUgKiAxMDAwO1xuICAgIHJldHVybiBtb21lbnQoYXRpbWUpLnR6KHRpbWVfem9uZSk7XG59O1xuXG5leHBvcnQgY29uc3QgZm9ybWF0RXBvY2ggPSAoYXRpbWUsIGZvcm1hdCA9ICdNL0QvWVlZWSBoOm1tIGEnKSA9PiB7XG4gICAgaWYoIWF0aW1lKSByZXR1cm4gYXRpbWU7XG4gICAgcmV0dXJuIGVwb2NoVG9Nb21lbnQoYXRpbWUpLmZvcm1hdChmb3JtYXQpO1xufTtcblxuZXhwb3J0IGNvbnN0IG9iamVjdFRvUXVlcnlTdHJpbmcgPSAob2JqKSA9PiB7XG4gICAgdmFyIHN0ciA9IFwiXCI7XG4gICAgZm9yICh2YXIga2V5IGluIG9iaikge1xuICAgICAgICBpZiAoc3RyICE9IFwiXCIpIHtcbiAgICAgICAgICAgIHN0ciArPSBcIiZcIjtcbiAgICAgICAgfVxuICAgICAgICBzdHIgKz0ga2V5ICsgXCI9XCIgKyBlbmNvZGVVUklDb21wb25lbnQob2JqW2tleV0pO1xuICAgIH1cblxuICAgIHJldHVybiBzdHI7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0QmFja1VSTCA9ICgpID0+IHtcbiAgICBsZXQgdXJsICAgICAgPSBVUkkod2luZG93LmxvY2F0aW9uLmhyZWYpO1xuICAgIGxldCBxdWVyeSAgICA9IHVybC5zZWFyY2godHJ1ZSk7XG4gICAgbGV0IGZyYWdtZW50ID0gdXJsLmZyYWdtZW50KCk7XG4gICAgbGV0IGJhY2tVcmwgID0gcXVlcnkuaGFzT3duUHJvcGVydHkoJ0JhY2tVcmwnKSA/IHF1ZXJ5WydCYWNrVXJsJ10gOiBudWxsO1xuICAgIGlmKGZyYWdtZW50ICE9IG51bGwgJiYgZnJhZ21lbnQgIT0gJycpe1xuICAgICAgICBiYWNrVXJsICs9IGAjJHtmcmFnbWVudH1gO1xuICAgIH1cbiAgICByZXR1cm4gYmFja1VybDtcbn07XG5cbmV4cG9ydCBjb25zdCB0b1NsdWcgPSAodGV4dCkgPT57XG4gICAgdGV4dCA9IHRleHQudG9Mb3dlckNhc2UoKTtcbiAgICByZXR1cm4gdGV4dC5yZXBsYWNlKC9bXmEtekEtWjAtOV0rL2csJ18nKTtcbn1cblxuZXhwb3J0IGNvbnN0IGdldEF1dGhDYWxsYmFjayA9ICgpID0+IHtcbiAgICBpZih0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICByZXR1cm4gYCR7d2luZG93LmxvY2F0aW9uLm9yaWdpbn0vYXV0aC9jYWxsYmFja2A7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEN1cnJlbnRMb2NhdGlvbiA9ICgpID0+IHtcbiAgICBsZXQgbG9jYXRpb24gPSAnJztcbiAgICBpZih0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICBsb2NhdGlvbiA9IHdpbmRvdy5sb2NhdGlvbjtcbiAgICAgICAgLy8gY2hlY2sgaWYgd2UgYXJlIG9uIGlmcmFtZVxuICAgICAgICBpZiAod2luZG93LnRvcClcbiAgICAgICAgICAgIGxvY2F0aW9uID0gd2luZG93LnRvcC5sb2NhdGlvbjtcbiAgICB9XG4gICAgcmV0dXJuIGxvY2F0aW9uO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldE9yaWdpbiA9ICgpID0+IHtcbiAgICBpZih0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICByZXR1cm4gd2luZG93LmxvY2F0aW9uLm9yaWdpbjtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Q3VycmVudFBhdGhOYW1lID0gKCkgPT4ge1xuICAgIGlmKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgcmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Q3VycmVudEhyZWYgPSAoKSA9PiB7XG4gICAgaWYodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgcmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5ocmVmO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRBbGxvd2VkVXNlckdyb3VwcyA9ICgpID0+IHtcbiAgICBpZih0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICByZXR1cm4gd2luZG93LkFMTE9XRURfVVNFUl9HUk9VUFMgfHwgJyc7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xufTtcblxuZXhwb3J0IGNvbnN0IGJ1aWxkQVBJQmFzZVVybCA9IChyZWxhdGl2ZVVybCkgPT4ge1xuICAgIGlmKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKXtcbiAgICAgICAgcmV0dXJuIGAke3dpbmRvdy5BUElfQkFTRV9VUkx9JHtyZWxhdGl2ZVVybH1gO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbGBgO1xufTtcblxuZXhwb3J0IGNvbnN0IHB1dE9uTG9jYWxTdG9yYWdlID0gKGtleSwgdmFsdWUpID0+IHtcbiAgICBpZih0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnNldEl0ZW0oa2V5LCB2YWx1ZSk7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGdldEZyb21Mb2NhbFN0b3JhZ2UgPSAoa2V5LCByZW1vdmVJdCkgPT4ge1xuICAgIGlmKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIGxldCB2YWwgPSB3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0oa2V5KTtcbiAgICAgICAgaWYocmVtb3ZlSXQpe1xuICAgICAgICAgICAgY29uc29sZS5sb2coYGdldEZyb21Mb2NhbFN0b3JhZ2UgcmVtb3Zpbmcga2V5ICR7a2V5fWApO1xuICAgICAgICAgICAgcmVtb3ZlRnJvbUxvY2FsU3RvcmFnZShrZXkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2YWw7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xufTtcblxuZXhwb3J0IGNvbnN0IHJlbW92ZUZyb21Mb2NhbFN0b3JhZ2UgPSAoa2V5KSA9PiB7XG4gICAgaWYodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgd2luZG93LmxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKGtleSk7XG4gICAgfVxufVxuXG5leHBvcnQgY29uc3QgaXNDbGVhcmluZ1Nlc3Npb25TdGF0ZSA9ICgpID0+IHtcbiAgICBpZih0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICByZXR1cm4gd2luZG93LmNsZWFyaW5nX3Nlc3Npb25fc3RhdGU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbn07XG5cbmV4cG9ydCBjb25zdCBzZXRTZXNzaW9uQ2xlYXJpbmdTdGF0ZSA9ICh2YWwpID0+IHtcbiAgICBpZih0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICB3aW5kb3cuY2xlYXJpbmdfc2Vzc2lvbl9zdGF0ZSA9IHZhbDtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Q3VycmVudFVzZXJMYW5ndWFnZSA9ICgpID0+IHtcbiAgICBsZXQgbGFuZ3VhZ2UgPSAnZW4nO1xuICAgIGlmKHR5cGVvZiBuYXZpZ2F0b3IgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIGxhbmd1YWdlID0gKG5hdmlnYXRvci5sYW5ndWFnZXMgJiYgbmF2aWdhdG9yLmxhbmd1YWdlc1swXSkgfHwgbmF2aWdhdG9yLmxhbmd1YWdlIHx8IG5hdmlnYXRvci51c2VyTGFuZ3VhZ2U7XG4gICAgfVxuICAgIHJldHVybiBsYW5ndWFnZTtcbn07XG5cbmV4cG9ydCBjb25zdCBzY3JvbGxUb0Vycm9yID0gKGVycm9ycykgPT4ge1xuICAgIGlmKE9iamVjdC5rZXlzKGVycm9ycykubGVuZ3RoID4gMCkge1xuICAgICAgICBjb25zdCBmaXJzdEVycm9yID0gT2JqZWN0LmtleXMoZXJyb3JzKVswXTtcbiAgICAgICAgY29uc3QgZmlyc3ROb2RlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZmlyc3RFcnJvcik7XG4gICAgICAgIGlmIChmaXJzdE5vZGUpIHdpbmRvdy5zY3JvbGxUbygwLCBmaW5kRWxlbWVudFBvcyhmaXJzdE5vZGUpKTtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgaGFzRXJyb3JzID0gKGZpZWxkLCBlcnJvcnMpID0+IHtcbiAgICBpZihmaWVsZCBpbiBlcnJvcnMpIHtcbiAgICAgICAgcmV0dXJuIGVycm9yc1tmaWVsZF07XG4gICAgfVxuICAgIHJldHVybiAnJztcbn07XG5cbmV4cG9ydCBjb25zdCBzaGFsbG93RXF1YWwgPSAob2JqZWN0MSwgb2JqZWN0MikgPT4ge1xuICAgIGNvbnN0IGtleXMxID0gT2JqZWN0LmtleXMob2JqZWN0MSk7XG4gICAgY29uc3Qga2V5czIgPSBPYmplY3Qua2V5cyhvYmplY3QyKTtcblxuICAgIGlmIChrZXlzMS5sZW5ndGggIT09IGtleXMyLmxlbmd0aCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgZm9yIChsZXQga2V5IG9mIGtleXMxKSB7XG4gICAgICAgIGlmIChvYmplY3QxW2tleV0gIT09IG9iamVjdDJba2V5XSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG59O1xuXG5leHBvcnQgY29uc3QgYXJyYXlzRXF1YWwgPSAoYTEsIGEyKSA9PlxuICAgIGExLmxlbmd0aCA9PT0gYTIubGVuZ3RoICYmIGExLmV2ZXJ5KChvLCBpZHgpID0+IHNoYWxsb3dFcXVhbChvLCBhMltpZHhdKSk7XG5cbmV4cG9ydCBjb25zdCBpc0VtcHR5ID0gKG9iaikgPT4ge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyhvYmopLmxlbmd0aCA9PT0gMDtcbn07XG5cblxuZXhwb3J0IGNvbnN0IGJhc2U2NFVSTEVuY29kZSA9IChzdHIpID0+IHtcbiAgICByZXR1cm4gc3RyXG4gICAgICAgIC50b1N0cmluZygnYmFzZTY0JylcbiAgICAgICAgLnJlcGxhY2UoL1xcKy9nLCAnLScpXG4gICAgICAgIC5yZXBsYWNlKC9cXC8vZywgJ18nKVxuICAgICAgICAucmVwbGFjZSgvPS9nLCAnJylcbn1cblxuZXhwb3J0IGNvbnN0IHJldHJ5UHJvbWlzZSA9IGFzeW5jIChcbiAgICBjYixcbiAgICBtYXhOdW1iZXJPZlJldHJpZXMgPSAzXG4pID0+IHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1heE51bWJlck9mUmV0cmllczsgaSsrKSB7XG4gICAgICAgIGlmIChhd2FpdCBjYigpKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbn1cblxuZXhwb3J0IGNvbnN0IGdldFRpbWVTZXJ2aWNlVXJsID0gKCkgPT4ge1xuICAgIGlmKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIHJldHVybiB3aW5kb3cuVElNRUlOVEVSVkFMU0lOQ0UxOTcwX0FQSV9VUkwgfHwgcHJvY2Vzcy5lbnYuVElNRUlOVEVSVkFMU0lOQ0UxOTcwX0FQSV9VUkw7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xufTtcbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxuZXhwb3J0IHt9OyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHlcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiaTE4bi1yZWFjdC9kaXN0L2kxOG4tcmVhY3RcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwibW9tZW50LXRpbWV6b25lXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0LXRvb2x0aXBcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwic3dlZXRhbGVydDJcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwidXJpanNcIik7IiwiLy8gVGhlIG1vZHVsZSBjYWNoZVxudmFyIF9fd2VicGFja19tb2R1bGVfY2FjaGVfXyA9IHt9O1xuXG4vLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcblx0dmFyIGNhY2hlZE1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF07XG5cdGlmIChjYWNoZWRNb2R1bGUgIT09IHVuZGVmaW5lZCkge1xuXHRcdHJldHVybiBjYWNoZWRNb2R1bGUuZXhwb3J0cztcblx0fVxuXHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuXHR2YXIgbW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXSA9IHtcblx0XHQvLyBubyBtb2R1bGUuaWQgbmVlZGVkXG5cdFx0Ly8gbm8gbW9kdWxlLmxvYWRlZCBuZWVkZWRcblx0XHRleHBvcnRzOiB7fVxuXHR9O1xuXG5cdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuXHRfX3dlYnBhY2tfbW9kdWxlc19fW21vZHVsZUlkXShtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuXHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuXHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG59XG5cbiIsIi8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSAobW9kdWxlKSA9PiB7XG5cdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuXHRcdCgpID0+IChtb2R1bGVbJ2RlZmF1bHQnXSkgOlxuXHRcdCgpID0+IChtb2R1bGUpO1xuXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCB7IGE6IGdldHRlciB9KTtcblx0cmV0dXJuIGdldHRlcjtcbn07IiwiLy8gZGVmaW5lIGdldHRlciBmdW5jdGlvbnMgZm9yIGhhcm1vbnkgZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5kID0gKGV4cG9ydHMsIGRlZmluaXRpb24pID0+IHtcblx0Zm9yKHZhciBrZXkgaW4gZGVmaW5pdGlvbikge1xuXHRcdGlmKF9fd2VicGFja19yZXF1aXJlX18ubyhkZWZpbml0aW9uLCBrZXkpICYmICFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywga2V5KSkge1xuXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGRlZmluaXRpb25ba2V5XSB9KTtcblx0XHR9XG5cdH1cbn07IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5vID0gKG9iaiwgcHJvcCkgPT4gKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3ApKSIsIi8vIGRlZmluZSBfX2VzTW9kdWxlIG9uIGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uciA9IChleHBvcnRzKSA9PiB7XG5cdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuXHR9XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG59OyIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgRWRpdGFibGVUYWJsZUhlYWRpbmcgZnJvbSAnLi9FZGl0YWJsZVRhYmxlSGVhZGluZyc7XG5pbXBvcnQgRWRpdGFibGVUYWJsZUNlbGwgZnJvbSAnLi9FZGl0YWJsZVRhYmxlQ2VsbCc7XG5pbXBvcnQgRWRpdGFibGVBY3Rpb25zVGFibGVDZWxsIGZyb20gJy4vRWRpdGFibGVBY3Rpb25zVGFibGVDZWxsJztcbmltcG9ydCBFZGl0YWJsZVRhYmxlUm93IGZyb20gJy4vRWRpdGFibGVUYWJsZVJvdyc7XG5pbXBvcnQgU3dhbCBmcm9tIFwic3dlZXRhbGVydDJcIjtcbmltcG9ydCBUIGZyb20gXCJpMThuLXJlYWN0L2Rpc3QvaTE4bi1yZWFjdFwiO1xuaW1wb3J0ICcuL2VkaXRhYmxlLXRhYmxlLmNzcyc7XG5pbXBvcnQgUmVhY3RUb29sdGlwIGZyb20gXCJyZWFjdC10b29sdGlwXCI7XG5pbXBvcnQgeyBzaGFsbG93RXF1YWwgfSBmcm9tICcuLi8uLi91dGlscy9tZXRob2RzJ1xuXG5jb25zdCBkZWZhdWx0cyA9IHtcbiAgICBjb2xXaWR0aDogJydcbn07XG5cbmNvbnN0IGNyZWF0ZVJvdyA9IChyb3csIGNvbHVtbnMsIGFjdGlvbnMsIHNob3VsZFVzZVRleHRBcmVhKSA9PiB7XG5cbiAgICB2YXIgYWN0aW9uX2J1dHRvbnMgPSAnJztcbiAgICB2YXIgY2VsbHMgPSBjb2x1bW5zLm1hcCgoY29sLGkpID0+IHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxFZGl0YWJsZVRhYmxlQ2VsbCBzaG91bGRVc2VUZXh0QXJlYT17c2hvdWxkVXNlVGV4dEFyZWF9IGtleT17cm93WydpZCddICsgJ19maWVsZCcgKyBpfSBuYW1lPXtjb2wuY29sdW1uS2V5fSBpZD17cm93LmlkfSBpc19lZGl0PXtyb3cuaXNfZWRpdH0gaGFuZGxlQ2hhbmdlPXthY3Rpb25zLmhhbmRsZUNoYW5nZX0+XG4gICAgICAgICAgICAgICAge3Jvd1tjb2wuY29sdW1uS2V5XX1cbiAgICAgICAgICAgIDwvRWRpdGFibGVUYWJsZUNlbGw+XG4gICAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpZiAoYWN0aW9ucykge1xuICAgICAgICBjZWxscy5wdXNoKDxFZGl0YWJsZUFjdGlvbnNUYWJsZUNlbGwga2V5PXsnYWN0aW9uc18nICsgcm93WydpZCddfSBpZD17cm93WydpZCddfSBhY3Rpb25zPXthY3Rpb25zfS8+KTtcbiAgICB9XG5cbiAgICByZXR1cm4gY2VsbHM7XG59O1xuXG5jb25zdCBjcmVhdGVOZXdSb3cgPSAoY29sdW1ucywgbmV3X3JvdywgYWRkTmV3LCBoYW5kbGVDaGFuZ2UsIHNob3VsZFVzZVRleHRBcmVhKSA9PiB7XG5cbiAgICB2YXIgY2VsbHMgPSBjb2x1bW5zLm1hcCgoY29sLGkpID0+IHtcbiAgICAgICAgbGV0IGNlbGxfdmFsdWUgPSAodHlwZW9mIG5ld19yb3dbY29sLmNvbHVtbktleV0gIT09ICd1bmRlZmluZWQnKSA/IG5ld19yb3dbY29sLmNvbHVtbktleV0gOiAnJztcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDx0ZCBrZXk9eyduZXdfcm93XycgKyBpfT5cbiAgICAgICAgICAgICAgICB7c2hvdWxkVXNlVGV4dEFyZWEgJiZcbiAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhIGNsYXNzTmFtZT1cImZvcm0tY29udHJvbFwiIGlkPXsnbmV3XycgKyBjb2wuY29sdW1uS2V5fSBuYW1lPXtjb2wuY29sdW1uS2V5fSBvbkNoYW5nZT17aGFuZGxlQ2hhbmdlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2NlbGxfdmFsdWV9Lz5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgeyFzaG91bGRVc2VUZXh0QXJlYSAmJlxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3NOYW1lPVwiZm9ybS1jb250cm9sXCIgaWQ9eyduZXdfJyArIGNvbC5jb2x1bW5LZXl9IG5hbWU9e2NvbC5jb2x1bW5LZXl9IG9uQ2hhbmdlPXtoYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17Y2VsbF92YWx1ZX0vPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICk7XG4gICAgfSk7XG5cbiAgICBjZWxscy5wdXNoKFxuICAgICAgICA8dGQga2V5PSdhZGRfbmV3Jz5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3NOYW1lPVwiYnRuIGJ0bi1kZWZhdWx0XCIgb25DbGljaz17YWRkTmV3fT4gQWRkIDwvYnV0dG9uPlxuICAgICAgICA8L3RkPlxuICAgICk7XG5cbiAgICByZXR1cm4gY2VsbHM7XG59O1xuXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVkaXRhYmxlVGFibGUgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuXG4gICAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICAgICAgc3VwZXIocHJvcHMpO1xuXG4gICAgICAgIHRoaXMuc3RhdGUgPSB7XG4gICAgICAgICAgICByb3dzOiBwcm9wcy5kYXRhLFxuICAgICAgICAgICAgbmV3X3Jvdzoge31cbiAgICAgICAgfTtcblxuICAgICAgICAvLyB3ZSBzdG9yZSB0aGUgZGVsZXRlIGFuZCBzYXZlIGZ1bmN0aW9ucyBpbiBwcm9wcyBjYXVzZSB3ZSBuZWVkIHRvIGV4dGVuZCB0aGVtXG4gICAgICAgIHRoaXMub25TYXZlID0gcHJvcHMub3B0aW9ucy5hY3Rpb25zLnNhdmUub25DbGljaztcblxuICAgICAgICB0aGlzLmFjdGlvbnMgPSB7Li4ucHJvcHMub3B0aW9ucy5hY3Rpb25zfTtcbiAgICAgICAgdGhpcy5hY3Rpb25zLmVkaXQgPSB0aGlzLmVkaXRSb3cuYmluZCh0aGlzKTtcbiAgICAgICAgdGhpcy5hY3Rpb25zLnNhdmUgPSB0aGlzLnNhdmVSb3cuYmluZCh0aGlzKTtcbiAgICAgICAgdGhpcy5hY3Rpb25zLmRlbGV0ZSA9IHRoaXMuZGVsZXRlQ2xpY2suYmluZCh0aGlzKTtcbiAgICAgICAgdGhpcy5hY3Rpb25zLmhhbmRsZUNoYW5nZSA9IHRoaXMub25DaGFuZ2VDZWxsLmJpbmQodGhpcyk7XG4gICAgICAgIHRoaXMuYWN0aW9ucy5jYW5jZWwgPSB0aGlzLmVkaXRSb3dDYW5jZWwuYmluZCh0aGlzKTtcblxuICAgICAgICB0aGlzLnNhdmVOZXdSb3cgPSB0aGlzLnNhdmVOZXdSb3cuYmluZCh0aGlzKTtcbiAgICAgICAgdGhpcy5oYW5kbGVOZXdDaGFuZ2UgPSB0aGlzLm9uQ2hhbmdlTmV3Q2VsbC5iaW5kKHRoaXMpO1xuICAgIH1cblxuICAgIGNvbXBvbmVudERpZFVwZGF0ZShwcmV2UHJvcHMsIHByZXZTdGF0ZSwgc25hcHNob3QpIHtcbiAgICAgICAgaWYoIXNoYWxsb3dFcXVhbCh0aGlzLnByb3BzLmRhdGEsIHByZXZQcm9wcy5kYXRhKSkge1xuICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7cm93czogdGhpcy5wcm9wcy5kYXRhfSlcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNhdmVSb3coaWQsIGV2KSB7XG4gICAgICAgIGNvbnN0IHsgcm93cyB9ID0gdGhpcy5zdGF0ZTtcbiAgICAgICAgbGV0IHJvdyA9IHJvd3MuZmluZChyID0+IHIuaWQgPT0gaWQpO1xuICAgICAgICByb3cuaXNfZWRpdCA9IGZhbHNlO1xuXG4gICAgICAgIHRoaXMuZWRpdGluZ19yb3cgPSBudWxsO1xuXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgICAgcm93czogcm93c1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLm9uU2F2ZShyb3cpO1xuICAgIH1cblxuICAgIGRlbGV0ZUNsaWNrKGlkKSB7XG4gICAgICAgIGxldCBvbkRlbGV0ZSA9IHRoaXMucHJvcHMub3B0aW9ucy5hY3Rpb25zLmRlbGV0ZS5vbkNsaWNrO1xuICAgICAgICBsZXQgbm9BbGVydCA9IHRoaXMucHJvcHMub3B0aW9ucy5oYXNPd25Qcm9wZXJ0eSgnbm9BbGVydCcpO1xuXG4gICAgICAgIGlmIChub0FsZXJ0KSB7XG4gICAgICAgICAgICBvbkRlbGV0ZShpZCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBTd2FsLmZpcmUoe1xuICAgICAgICAgICAgICAgIHRpdGxlOiBULnRyYW5zbGF0ZShcImdlbmVyYWwuYXJlX3lvdV9zdXJlXCIpLFxuICAgICAgICAgICAgICAgIHRleHQ6IFQudHJhbnNsYXRlKFwiZ2VuZXJhbC5yZW1vdmVfd2FybmluZ1wiKSxcbiAgICAgICAgICAgICAgICB0eXBlOiBcIndhcm5pbmdcIixcbiAgICAgICAgICAgICAgICBzaG93Q2FuY2VsQnV0dG9uOiB0cnVlLFxuICAgICAgICAgICAgICAgIGNvbmZpcm1CdXR0b25Db2xvcjogXCIjREQ2QjU1XCIsXG4gICAgICAgICAgICAgICAgY29uZmlybUJ1dHRvblRleHQ6IFQudHJhbnNsYXRlKFwiZ2VuZXJhbC55ZXNfZGVsZXRlXCIpXG4gICAgICAgICAgICB9KS50aGVuKGZ1bmN0aW9uKHJlc3VsdCl7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3VsdC52YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICBvbkRlbGV0ZShpZCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBlZGl0Um93KGlkLCBldikge1xuICAgICAgICBjb25zdCB7IHJvd3MgfSA9IHRoaXMuc3RhdGU7XG4gICAgICAgIGxldCByb3cgPSByb3dzLmZpbmQociA9PiByLmlkID09IGlkKTtcblxuICAgICAgICAvL3NhdmUgZWRpdGluZyByb3cgZm9yIGNhbmNlbFxuICAgICAgICB0aGlzLmVkaXRpbmdfcm93ID0gey4uLnJvd307XG5cbiAgICAgICAgcm93LmlzX2VkaXQgPSB0cnVlO1xuXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgICAgcm93czogcm93c1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBlZGl0Um93Q2FuY2VsKGlkLCBldikge1xuICAgICAgICBjb25zdCB7IHJvd3MgfSA9IHRoaXMuc3RhdGU7XG4gICAgICAgIHJvd3MuZm9yRWFjaChyID0+IHtcbiAgICAgICAgICAgIHIuaXNfZWRpdCA9IGZhbHNlO1xuICAgICAgICB9KTtcblxuICAgICAgICBsZXQgcm93SWR4ID0gcm93cy5maW5kSW5kZXgociA9PiByLmlkID09IGlkKTtcblxuICAgICAgICByb3dzW3Jvd0lkeF0gPSB0aGlzLmVkaXRpbmdfcm93O1xuXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgICAgcm93czogcm93c1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvbkNoYW5nZUNlbGwoZXYpIHtcbiAgICAgICAgY29uc3QgeyByb3dzIH0gPSB0aGlzLnN0YXRlO1xuICAgICAgICBsZXQgZmllbGQgPSBldi50YXJnZXQ7XG4gICAgICAgIGxldCByb3cgPSByb3dzLmZpbmQociA9PiByLmlkID09IGZpZWxkLmlkKTtcblxuICAgICAgICByb3dbZmllbGQubmFtZV0gPSBmaWVsZC52YWx1ZTtcblxuICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICAgIHJvd3M6IHJvd3NcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb25DaGFuZ2VOZXdDZWxsKGV2KSB7XG4gICAgICAgIGNvbnN0IHtuZXdfcm93fSA9IHRoaXMuc3RhdGU7XG4gICAgICAgIGxldCBmaWVsZCA9IGV2LnRhcmdldDtcblxuICAgICAgICBuZXdfcm93W2ZpZWxkLm5hbWVdID0gZmllbGQudmFsdWU7XG5cbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgICBuZXdfcm93OiBuZXdfcm93XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHNhdmVOZXdSb3coZXYpIHtcbiAgICAgICAgY29uc3Qge25ld19yb3d9ID0gdGhpcy5zdGF0ZTtcbiAgICAgICAgZXYucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgICB0aGlzLm9uU2F2ZShuZXdfcm93KTtcblxuICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICAgIG5ld19yb3c6IHt9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHJlbmRlcigpIHtcbiAgICAgICAgbGV0IHtvcHRpb25zLCBjb2x1bW5zIH0gPSB0aGlzLnByb3BzO1xuICAgICAgICBsZXQgdGFibGVDbGFzcyA9IG9wdGlvbnMuaGFzT3duUHJvcGVydHkoJ2NsYXNzTmFtZScpID8gb3B0aW9ucy5jbGFzc05hbWUgOiAnJztcbiAgICAgICAgbGV0IHRleHRBcmVhID0gdGhpcy5wcm9wcy5oYXNPd25Qcm9wZXJ0eShcInRleHRBcmVhXCIpO1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3NOYW1lPXtcInRhYmxlIHRhYmxlLXN0cmlwZWQgdGFibGUtYm9yZGVyZWQgZWRpdGFibGVUYWJsZSBcIiArIHRhYmxlQ2xhc3N9PlxuICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2NvbHVtbnMubWFwKChjb2wsaSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgY29sV2lkdGggPSAoY29sLndpZHRoKSA/IGNvbC53aWR0aCA6IGRlZmF1bHRzLmNvbFdpZHRoO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEVkaXRhYmxlVGFibGVIZWFkaW5nIHdpZHRoPXtjb2xXaWR0aH0ga2V5PXsnaGVhZGluZ18nICsgaX0gPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtjb2wudmFsdWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0VkaXRhYmxlVGFibGVIZWFkaW5nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt0aGlzLmFjdGlvbnMgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEVkaXRhYmxlVGFibGVIZWFkaW5nIGtleT0nYWN0aW9uc19oZWFkaW5nJyA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBY3Rpb25zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvRWRpdGFibGVUYWJsZUhlYWRpbmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgICAgPC90aGVhZD5cbiAgICAgICAgICAgICAgICAgICAgPHRib2R5PlxuICAgICAgICAgICAgICAgICAgICAgICAge2NvbHVtbnMubGVuZ3RoID4gMCAmJiB0aGlzLnN0YXRlLnJvd3MubWFwKChyb3csaSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKEFycmF5LmlzQXJyYXkocm93KSAmJiByb3cubGVuZ3RoICE9PSBjb2x1bW5zLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oYERhdGEgYXQgcm93ICR7aX0gaXMgJHtyb3cubGVuZ3RofS4gSXQgc2hvdWxkIGJlICR7Y29sdW1ucy5sZW5ndGh9LmApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gPHRyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxFZGl0YWJsZVRhYmxlUm93IGV2ZW49e2klMiA9PT0gMH0ga2V5PXsncm93XycgKyByb3cuaWR9IGlkPXtyb3cuaWR9ID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtjcmVhdGVSb3cocm93LCBjb2x1bW5zLCB0aGlzLmFjdGlvbnMsIHRleHRBcmVhKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9FZGl0YWJsZVRhYmxlUm93PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgPEVkaXRhYmxlVGFibGVSb3cgZXZlbj17MH0gaWQ9J25ld19yb3cnIGtleT0nbmV3X3Jvdyc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2NyZWF0ZU5ld1Jvdyhjb2x1bW5zLCB0aGlzLnN0YXRlLm5ld19yb3csIHRoaXMuc2F2ZU5ld1JvdywgdGhpcy5oYW5kbGVOZXdDaGFuZ2UsIHRleHRBcmVhKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvRWRpdGFibGVUYWJsZVJvdz5cbiAgICAgICAgICAgICAgICAgICAgPC90Ym9keT5cbiAgICAgICAgICAgICAgICA8L3RhYmxlPlxuICAgICAgICAgICAgICAgIDxSZWFjdFRvb2x0aXAgZGVsYXlTaG93PXsxMH0gLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICApO1xuICAgIH1cbn07XG4iXSwibmFtZXMiOlsiUmVhY3QiLCJFZGl0YWJsZUFjdGlvbnNUYWJsZUNlbGwiLCJDb21wb25lbnQiLCJjb25zdHJ1Y3RvciIsInByb3BzIiwic3RhdGUiLCJpc19lZGl0aW5nIiwib25EZWxldGUiLCJpZCIsImV2IiwicHJldmVudERlZmF1bHQiLCJzdG9wUHJvcGFnYXRpb24iLCJhY3Rpb25zIiwiZGVsZXRlIiwib25TYXZlIiwic2V0U3RhdGUiLCJzYXZlIiwib25FZGl0IiwiZWRpdCIsIm9uQ2FuY2VsIiwiY2FuY2VsIiwicmVuZGVyIiwiYmluZCIsIkVkaXRhYmxlVGFibGVDZWxsIiwiaXNfZWRpdCIsInNob3VsZFVzZVRleHRBcmVhIiwiY2hpbGRyZW4iLCJuYW1lIiwiaGFuZGxlQ2hhbmdlIiwiRWRpdGFibGVUYWJsZUhlYWRpbmciLCJ3aWR0aCIsIkVkaXRhYmxlVGFibGVSb3ciLCJldmVuIiwibW9tZW50IiwiVVJJIiwiZmluZEVsZW1lbnRQb3MiLCJvYmoiLCJjdXJ0b3AiLCJvZmZzZXRQYXJlbnQiLCJvZmZzZXRUb3AiLCJlcG9jaFRvTW9tZW50IiwiYXRpbWUiLCJlcG9jaFRvTW9tZW50VGltZVpvbmUiLCJ0aW1lX3pvbmUiLCJ0eiIsImZvcm1hdEVwb2NoIiwiZm9ybWF0Iiwib2JqZWN0VG9RdWVyeVN0cmluZyIsInN0ciIsImtleSIsImVuY29kZVVSSUNvbXBvbmVudCIsImdldEJhY2tVUkwiLCJ1cmwiLCJ3aW5kb3ciLCJsb2NhdGlvbiIsImhyZWYiLCJxdWVyeSIsInNlYXJjaCIsImZyYWdtZW50IiwiYmFja1VybCIsImhhc093blByb3BlcnR5IiwidG9TbHVnIiwidGV4dCIsInRvTG93ZXJDYXNlIiwicmVwbGFjZSIsImdldEF1dGhDYWxsYmFjayIsIm9yaWdpbiIsImdldEN1cnJlbnRMb2NhdGlvbiIsInRvcCIsImdldE9yaWdpbiIsImdldEN1cnJlbnRQYXRoTmFtZSIsInBhdGhuYW1lIiwiZ2V0Q3VycmVudEhyZWYiLCJnZXRBbGxvd2VkVXNlckdyb3VwcyIsIkFMTE9XRURfVVNFUl9HUk9VUFMiLCJidWlsZEFQSUJhc2VVcmwiLCJyZWxhdGl2ZVVybCIsIkFQSV9CQVNFX1VSTCIsInB1dE9uTG9jYWxTdG9yYWdlIiwidmFsdWUiLCJsb2NhbFN0b3JhZ2UiLCJzZXRJdGVtIiwiZ2V0RnJvbUxvY2FsU3RvcmFnZSIsInJlbW92ZUl0IiwidmFsIiwiZ2V0SXRlbSIsImNvbnNvbGUiLCJsb2ciLCJyZW1vdmVGcm9tTG9jYWxTdG9yYWdlIiwicmVtb3ZlSXRlbSIsImlzQ2xlYXJpbmdTZXNzaW9uU3RhdGUiLCJjbGVhcmluZ19zZXNzaW9uX3N0YXRlIiwic2V0U2Vzc2lvbkNsZWFyaW5nU3RhdGUiLCJnZXRDdXJyZW50VXNlckxhbmd1YWdlIiwibGFuZ3VhZ2UiLCJuYXZpZ2F0b3IiLCJsYW5ndWFnZXMiLCJ1c2VyTGFuZ3VhZ2UiLCJzY3JvbGxUb0Vycm9yIiwiZXJyb3JzIiwiT2JqZWN0Iiwia2V5cyIsImxlbmd0aCIsImZpcnN0RXJyb3IiLCJmaXJzdE5vZGUiLCJkb2N1bWVudCIsImdldEVsZW1lbnRCeUlkIiwic2Nyb2xsVG8iLCJoYXNFcnJvcnMiLCJmaWVsZCIsInNoYWxsb3dFcXVhbCIsIm9iamVjdDEiLCJvYmplY3QyIiwia2V5czEiLCJrZXlzMiIsImFycmF5c0VxdWFsIiwiYTEiLCJhMiIsImV2ZXJ5IiwibyIsImlkeCIsImlzRW1wdHkiLCJiYXNlNjRVUkxFbmNvZGUiLCJ0b1N0cmluZyIsInJldHJ5UHJvbWlzZSIsImNiIiwibWF4TnVtYmVyT2ZSZXRyaWVzIiwiaSIsImdldFRpbWVTZXJ2aWNlVXJsIiwiVElNRUlOVEVSVkFMU0lOQ0UxOTcwX0FQSV9VUkwiLCJwcm9jZXNzIiwiZW52IiwiU3dhbCIsIlQiLCJSZWFjdFRvb2x0aXAiLCJkZWZhdWx0cyIsImNvbFdpZHRoIiwiY3JlYXRlUm93Iiwicm93IiwiY29sdW1ucyIsImFjdGlvbl9idXR0b25zIiwiY2VsbHMiLCJtYXAiLCJjb2wiLCJjb2x1bW5LZXkiLCJwdXNoIiwiY3JlYXRlTmV3Um93IiwibmV3X3JvdyIsImFkZE5ldyIsImNlbGxfdmFsdWUiLCJFZGl0YWJsZVRhYmxlIiwicm93cyIsImRhdGEiLCJvcHRpb25zIiwib25DbGljayIsImVkaXRSb3ciLCJzYXZlUm93IiwiZGVsZXRlQ2xpY2siLCJvbkNoYW5nZUNlbGwiLCJlZGl0Um93Q2FuY2VsIiwic2F2ZU5ld1JvdyIsImhhbmRsZU5ld0NoYW5nZSIsIm9uQ2hhbmdlTmV3Q2VsbCIsImNvbXBvbmVudERpZFVwZGF0ZSIsInByZXZQcm9wcyIsInByZXZTdGF0ZSIsInNuYXBzaG90IiwiZmluZCIsInIiLCJlZGl0aW5nX3JvdyIsIm5vQWxlcnQiLCJmaXJlIiwidGl0bGUiLCJ0cmFuc2xhdGUiLCJ0eXBlIiwic2hvd0NhbmNlbEJ1dHRvbiIsImNvbmZpcm1CdXR0b25Db2xvciIsImNvbmZpcm1CdXR0b25UZXh0IiwidGhlbiIsInJlc3VsdCIsImZvckVhY2giLCJyb3dJZHgiLCJmaW5kSW5kZXgiLCJ0YXJnZXQiLCJ0YWJsZUNsYXNzIiwiY2xhc3NOYW1lIiwidGV4dEFyZWEiLCJBcnJheSIsImlzQXJyYXkiLCJ3YXJuIl0sInNvdXJjZVJvb3QiOiIifQ==
1
+ !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define("openstack-uicore-foundation",[],t):"object"==typeof exports?exports["openstack-uicore-foundation"]=t():e["openstack-uicore-foundation"]=t()}(this,(()=>(()=>{"use strict";var e={6793:(e,t,n)=>{n.d(t,{shallowEqual:()=>a});n(8362),n(6530);const a=(e,t)=>{const n=Object.keys(e),a=Object.keys(t);if(n.length!==a.length)return!1;for(let a of n)if(e[a]!==t[a])return!1;return!0}},8779:e=>{e.exports=require("@babel/runtime/helpers/defineProperty")},4656:e=>{e.exports=require("i18n-react/dist/i18n-react")},8362:e=>{e.exports=require("moment-timezone")},6689:e=>{e.exports=require("react")},2076:e=>{e.exports=require("react-tooltip")},271:e=>{e.exports=require("sweetalert2")},6530:e=>{e.exports=require("urijs")}},t={};function n(a){var s=t[a];if(void 0!==s)return s.exports;var r=t[a]={exports:{}};return e[a](r,r.exports,n),r.exports}(()=>{n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t}})(),(()=>{n.d=(e,t)=>{for(var a in t)n.o(t,a)&&!n.o(e,a)&&Object.defineProperty(e,a,{enumerable:!0,get:t[a]})}})(),(()=>{n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t)})(),(()=>{n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}})();var a={};return(()=>{n.r(a),n.d(a,{default:()=>E});var e=n(8779),t=n.n(e),s=n(6689),r=n.n(s);class i extends r().Component{constructor(e){super(e)}render(){return r().createElement("th",{width:this.props.width},this.props.children)}}const o=i,l=e=>e.is_edit?r().createElement("td",null,!e.shouldUseTextArea&&r().createElement("input",{type:"text",className:"form-control",defaultValue:e.children,name:e.name,id:e.id,onChange:e.handleChange}),e.shouldUseTextArea&&r().createElement("textarea",{className:"form-control",defaultValue:e.children,name:e.name,id:e.id,onChange:e.handleChange})):r().createElement("td",null,e.children);class c extends r().Component{constructor(e){super(e),this.state={is_editing:!1}}onDelete(e,t){t.preventDefault(),t.stopPropagation(),this.props.actions.delete(e)}onSave(e,t){t.preventDefault(),t.stopPropagation(),this.setState({is_editing:!1}),this.props.actions.save(e)}onEdit(e,t){t.preventDefault(),t.stopPropagation(),this.setState({is_editing:!0}),this.props.actions.edit(e)}onCancel(e,t){t.preventDefault(),t.stopPropagation(),this.setState({is_editing:!1}),this.props.actions.cancel(e)}render(){let{actions:e,id:t}=this.props;return this.state.is_editing?r().createElement("td",{className:"actions"},r().createElement("a",{href:"",onClick:this.onSave.bind(this,t),"data-tip":"save"},r().createElement("i",{className:"fa fa-floppy-o"})),r().createElement("a",{href:"",onClick:this.onCancel.bind(this,t),"data-tip":"cancel"},r().createElement("i",{className:"fa fa-times"}))):r().createElement("td",{className:"actions"},"edit"in e&&r().createElement("a",{href:"",onClick:this.onEdit.bind(this,t),"data-tip":"edit"},r().createElement("i",{className:"fa fa-pencil-square-o"})),"delete"in e&&r().createElement("a",{href:"",onClick:this.onDelete.bind(this,t),"data-tip":"delete"},r().createElement("i",{className:"fa fa-trash-o delete-icon"})))}}class d extends r().Component{render(){const{children:e,even:t,id:n}=this.props;return r().createElement("tr",{id:n,role:"row",className:t?"even":"odd"},e)}}var h=n(271),p=n.n(h),u=n(4656),m=n.n(u),w=n(2076),f=n.n(w),g=n(6793);function y(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function b(e){for(var n=1;n<arguments.length;n++){var a=null!=arguments[n]?arguments[n]:{};n%2?y(Object(a),!0).forEach((function(n){t()(e,n,a[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):y(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}const v="";class E extends r().Component{constructor(e){super(e),this.state={rows:e.data,new_row:{}},this.onSave=e.options.actions.save.onClick,this.actions=b({},e.options.actions),this.actions.edit=this.editRow.bind(this),this.actions.save=this.saveRow.bind(this),this.actions.delete=this.deleteClick.bind(this),this.actions.handleChange=this.onChangeCell.bind(this),this.actions.cancel=this.editRowCancel.bind(this),this.saveNewRow=this.saveNewRow.bind(this),this.handleNewChange=this.onChangeNewCell.bind(this)}componentDidUpdate(e,t,n){(0,g.shallowEqual)(this.props.data,e.data)||this.setState({rows:this.props.data})}saveRow(e,t){const{rows:n}=this.state;let a=n.find((t=>t.id==e));a.is_edit=!1,this.editing_row=null,this.setState({rows:n}),this.onSave(a)}deleteClick(e){let t=this.props.options.actions.delete.onClick;this.props.options.hasOwnProperty("noAlert")?t(e):p().fire({title:m().translate("general.are_you_sure"),text:m().translate("general.remove_warning"),type:"warning",showCancelButton:!0,confirmButtonColor:"#DD6B55",confirmButtonText:m().translate("general.yes_delete")}).then((function(n){n.value&&t(e)}))}editRow(e,t){const{rows:n}=this.state;let a=n.find((t=>t.id==e));this.editing_row=b({},a),a.is_edit=!0,this.setState({rows:n})}editRowCancel(e,t){const{rows:n}=this.state;n.forEach((e=>{e.is_edit=!1}));let a=n.findIndex((t=>t.id==e));n[a]=this.editing_row,this.setState({rows:n})}onChangeCell(e){const{rows:t}=this.state;let n=e.target;t.find((e=>e.id==n.id))[n.name]=n.value,this.setState({rows:t})}onChangeNewCell(e){const{new_row:t}=this.state;let n=e.target;t[n.name]=n.value,this.setState({new_row:t})}saveNewRow(e){const{new_row:t}=this.state;e.preventDefault(),this.onSave(t),this.setState({new_row:{}})}render(){let{options:e,columns:t}=this.props,n=e.hasOwnProperty("className")?e.className:"",a=this.props.hasOwnProperty("textArea");return r().createElement("div",null,r().createElement("table",{className:"table table-striped table-bordered editableTable "+n},r().createElement("thead",null,r().createElement("tr",null,t.map(((e,t)=>{let n=e.width?e.width:v;return r().createElement(o,{width:n,key:"heading_"+t},e.value)})),this.actions&&r().createElement(o,{key:"actions_heading"},"Actions"))),r().createElement("tbody",null,t.length>0&&this.state.rows.map(((e,n)=>Array.isArray(e)&&e.length!==t.length?(console.warn(`Data at row ${n} is ${e.length}. It should be ${t.length}.`),r().createElement("tr",null)):r().createElement(d,{even:n%2==0,key:"row_"+e.id,id:e.id},((e,t,n,a)=>{var s=t.map(((t,s)=>r().createElement(l,{shouldUseTextArea:a,key:e.id+"_field"+s,name:t.columnKey,id:e.id,is_edit:e.is_edit,handleChange:n.handleChange},e[t.columnKey])));return n&&s.push(r().createElement(c,{key:"actions_"+e.id,id:e.id,actions:n})),s})(e,t,this.actions,a)))),r().createElement(d,{even:0,id:"new_row",key:"new_row"},((e,t,n,a,s)=>{var i=e.map(((e,n)=>{let i=void 0!==t[e.columnKey]?t[e.columnKey]:"";return r().createElement("td",{key:"new_row_"+n},s&&r().createElement("textarea",{className:"form-control",id:"new_"+e.columnKey,name:e.columnKey,onChange:a,value:i}),!s&&r().createElement("input",{className:"form-control",id:"new_"+e.columnKey,name:e.columnKey,onChange:a,value:i}))}));return i.push(r().createElement("td",{key:"add_new"},r().createElement("button",{className:"btn btn-default",onClick:n}," Add "))),i})(t,this.state.new_row,this.saveNewRow,this.handleNewChange,a)))),r().createElement(f(),{delayShow:10}))}}})(),a})()));