payload 2.23.1 → 2.24.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (78) hide show
  1. package/dist/admin/components/elements/Dropzone/index.d.ts +2 -1
  2. package/dist/admin/components/elements/Dropzone/index.d.ts.map +1 -1
  3. package/dist/admin/components/elements/Dropzone/index.js +15 -10
  4. package/dist/admin/components/elements/EditUpload/index.d.ts +12 -4
  5. package/dist/admin/components/elements/EditUpload/index.d.ts.map +1 -1
  6. package/dist/admin/components/elements/EditUpload/index.js +41 -40
  7. package/dist/admin/components/utilities/Auth/index.d.ts.map +1 -1
  8. package/dist/admin/components/utilities/Auth/index.js +64 -61
  9. package/dist/admin/components/utilities/Auth/types.d.ts +3 -1
  10. package/dist/admin/components/utilities/Auth/types.d.ts.map +1 -1
  11. package/dist/admin/components/utilities/Locale/index.d.ts.map +1 -1
  12. package/dist/admin/components/utilities/Locale/index.js +31 -20
  13. package/dist/admin/components/utilities/UploadEdits/index.d.ts +1 -0
  14. package/dist/admin/components/utilities/UploadEdits/index.d.ts.map +1 -1
  15. package/dist/admin/components/utilities/UploadEdits/index.js +6 -1
  16. package/dist/admin/components/views/Unauthorized/index.d.ts.map +1 -1
  17. package/dist/admin/components/views/Unauthorized/index.js +6 -4
  18. package/dist/admin/components/views/collections/Edit/Upload/index.d.ts.map +1 -1
  19. package/dist/admin/components/views/collections/Edit/Upload/index.js +120 -28
  20. package/dist/admin/components/views/collections/Edit/Upload/index.scss +6 -3
  21. package/dist/admin/components/views/collections/Edit/types.d.ts +0 -12
  22. package/dist/admin/components/views/collections/Edit/types.d.ts.map +1 -1
  23. package/dist/collections/config/types.d.ts.map +1 -1
  24. package/dist/collections/config/types.js +1 -1
  25. package/dist/exports/types.d.ts +1 -1
  26. package/dist/exports/types.d.ts.map +1 -1
  27. package/dist/exports/types.js +1 -1
  28. package/dist/fields/hooks/beforeValidate/promise.d.ts +2 -1
  29. package/dist/fields/hooks/beforeValidate/promise.d.ts.map +1 -1
  30. package/dist/fields/hooks/beforeValidate/promise.js +18 -6
  31. package/dist/fields/hooks/beforeValidate/traverseFields.d.ts +2 -1
  32. package/dist/fields/hooks/beforeValidate/traverseFields.d.ts.map +1 -1
  33. package/dist/fields/hooks/beforeValidate/traverseFields.js +18 -3
  34. package/dist/translations/ar.json +3 -1
  35. package/dist/translations/az.json +3 -1
  36. package/dist/translations/bg.json +3 -1
  37. package/dist/translations/cs.json +3 -1
  38. package/dist/translations/de.json +3 -1
  39. package/dist/translations/en.json +2 -0
  40. package/dist/translations/es.json +3 -1
  41. package/dist/translations/fa.json +3 -1
  42. package/dist/translations/fr.json +3 -1
  43. package/dist/translations/hr.json +3 -1
  44. package/dist/translations/hu.json +3 -1
  45. package/dist/translations/index.d.ts +60 -0
  46. package/dist/translations/index.d.ts.map +1 -1
  47. package/dist/translations/it.json +3 -1
  48. package/dist/translations/ja.json +3 -1
  49. package/dist/translations/ko.json +3 -1
  50. package/dist/translations/my.json +3 -1
  51. package/dist/translations/nb.json +3 -1
  52. package/dist/translations/nl.json +3 -1
  53. package/dist/translations/pl.json +3 -1
  54. package/dist/translations/pt.json +3 -1
  55. package/dist/translations/ro.json +3 -1
  56. package/dist/translations/rs-latin.json +3 -1
  57. package/dist/translations/rs.json +3 -1
  58. package/dist/translations/ru.json +3 -1
  59. package/dist/translations/sv.json +3 -1
  60. package/dist/translations/th.json +3 -1
  61. package/dist/translations/tr.json +3 -1
  62. package/dist/translations/translation-schema.json +6 -0
  63. package/dist/translations/ua.json +3 -1
  64. package/dist/translations/vi.json +3 -1
  65. package/dist/translations/zh-tw.json +3 -1
  66. package/dist/translations/zh.json +3 -1
  67. package/dist/uploads/cropImage.d.ts +15 -6
  68. package/dist/uploads/cropImage.d.ts.map +1 -1
  69. package/dist/uploads/cropImage.js +6 -6
  70. package/dist/uploads/generateFileData.d.ts.map +1 -1
  71. package/dist/uploads/generateFileData.js +9 -7
  72. package/dist/uploads/imageResizer.d.ts.map +1 -1
  73. package/dist/uploads/imageResizer.js +117 -84
  74. package/dist/uploads/types.d.ts +16 -10
  75. package/dist/uploads/types.d.ts.map +1 -1
  76. package/package.json +1 -1
  77. package/types.d.ts +1 -1
  78. package/types.js +1 -1
@@ -25,7 +25,6 @@ const _reacttoastify = require("react-toastify");
25
25
  const _api = require("../../../api");
26
26
  const _useDebounce = /*#__PURE__*/ _interop_require_default(require("../../../hooks/useDebounce"));
27
27
  const _Config = require("../Config");
28
- const _Locale = require("../Locale");
29
28
  function _interop_require_default(obj) {
30
29
  return obj && obj.__esModule ? obj : {
31
30
  default: obj
@@ -81,7 +80,6 @@ const AuthProvider = ({ children })=>{
81
80
  const [strategy, setStrategy] = (0, _react.useState)();
82
81
  const { pathname } = (0, _reactrouterdom.useLocation)();
83
82
  const { push } = (0, _reactrouterdom.useHistory)();
84
- const { code } = (0, _Locale.useLocale)();
85
83
  const config = (0, _Config.useConfig)();
86
84
  const { admin: { autoLogin, inactivityRoute: logoutInactivityRoute, user: userSlug }, routes: { admin, api }, serverURL } = config;
87
85
  const [permissions, setPermissions] = (0, _react.useState)();
@@ -89,7 +87,41 @@ const AuthProvider = ({ children })=>{
89
87
  const { closeAllModals, openModal } = (0, _modal.useModal)();
90
88
  const [lastLocationChange, setLastLocationChange] = (0, _react.useState)(0);
91
89
  const debouncedLocationChange = (0, _useDebounce.default)(lastLocationChange, 10000);
90
+ const userIDRef = _react.default.useRef();
92
91
  const id = user?.id;
92
+ const refreshPermissions = (0, _react.useCallback)(async ({ locale } = {})=>{
93
+ const params = {
94
+ locale
95
+ };
96
+ try {
97
+ const request = await _api.requests.get(`${serverURL}${api}/access${_qs.default.stringify(params, {
98
+ addQueryPrefix: true
99
+ })}`, {
100
+ headers: {
101
+ 'Accept-Language': i18n.language
102
+ }
103
+ });
104
+ if (request.status === 200) {
105
+ const json = await request.json();
106
+ setPermissions(json);
107
+ } else {
108
+ throw new Error(`Fetching permissions failed with status code ${request.status}`);
109
+ }
110
+ } catch (e) {
111
+ _reacttoastify.toast.error(`Refreshing permissions failed: ${e.message}`);
112
+ }
113
+ }, [
114
+ serverURL,
115
+ api,
116
+ i18n
117
+ ]);
118
+ const setActiveUser = _react.default.useCallback((user)=>{
119
+ setUser(user);
120
+ userIDRef.current = user?.id || null;
121
+ void refreshPermissions();
122
+ }, [
123
+ refreshPermissions
124
+ ]);
93
125
  const redirectToInactivityRoute = (0, _react.useCallback)(()=>{
94
126
  if (window.location.pathname.startsWith(admin)) {
95
127
  const redirectParam = `?redirect=${encodeURIComponent(window.location.pathname.replace(admin, ''))}`;
@@ -136,10 +168,10 @@ const AuthProvider = ({ children })=>{
136
168
  });
137
169
  if (request.status === 200) {
138
170
  const json = await request.json();
139
- setUser(json.user);
171
+ setActiveUser(json.user);
140
172
  setTokenAndExpiration(json);
141
173
  } else {
142
- setUser(null);
174
+ setActiveUser(null);
143
175
  redirectToInactivityRoute();
144
176
  }
145
177
  } catch (e) {
@@ -152,9 +184,10 @@ const AuthProvider = ({ children })=>{
152
184
  serverURL,
153
185
  api,
154
186
  userSlug,
155
- i18n,
156
- redirectToInactivityRoute,
157
- setTokenAndExpiration
187
+ i18n.language,
188
+ setActiveUser,
189
+ setTokenAndExpiration,
190
+ redirectToInactivityRoute
158
191
  ]);
159
192
  const refreshCookieAsync = (0, _react.useCallback)(async (skipSetUser)=>{
160
193
  try {
@@ -166,12 +199,12 @@ const AuthProvider = ({ children })=>{
166
199
  if (request.status === 200) {
167
200
  const json = await request.json();
168
201
  if (!skipSetUser) {
169
- setUser(json.user);
202
+ setActiveUser(json.user);
170
203
  setTokenAndExpiration(json);
171
204
  }
172
205
  return json.user;
173
206
  }
174
- setUser(null);
207
+ setActiveUser(null);
175
208
  redirectToInactivityRoute();
176
209
  return null;
177
210
  } catch (e) {
@@ -184,42 +217,19 @@ const AuthProvider = ({ children })=>{
184
217
  userSlug,
185
218
  i18n,
186
219
  redirectToInactivityRoute,
187
- setTokenAndExpiration
220
+ setTokenAndExpiration,
221
+ setActiveUser
188
222
  ]);
189
223
  const logOut = (0, _react.useCallback)(()=>{
190
- setUser(null);
224
+ setActiveUser(null);
191
225
  revokeTokenAndExpire();
192
- _api.requests.post(`${serverURL}${api}/${userSlug}/logout`);
226
+ void _api.requests.post(`${serverURL}${api}/${userSlug}/logout`);
193
227
  }, [
194
228
  serverURL,
195
229
  api,
196
230
  userSlug,
197
- revokeTokenAndExpire
198
- ]);
199
- const refreshPermissions = (0, _react.useCallback)(async ()=>{
200
- const params = {
201
- locale: code
202
- };
203
- try {
204
- const request = await _api.requests.get(`${serverURL}${api}/access?${_qs.default.stringify(params)}`, {
205
- headers: {
206
- 'Accept-Language': i18n.language
207
- }
208
- });
209
- if (request.status === 200) {
210
- const json = await request.json();
211
- setPermissions(json);
212
- } else {
213
- throw new Error(`Fetching permissions failed with status code ${request.status}`);
214
- }
215
- } catch (e) {
216
- _reacttoastify.toast.error(`Refreshing permissions failed: ${e.message}`);
217
- }
218
- }, [
219
- serverURL,
220
- api,
221
- i18n,
222
- code
231
+ revokeTokenAndExpire,
232
+ setActiveUser
223
233
  ]);
224
234
  const fetchFullUser = _react.default.useCallback(async ()=>{
225
235
  try {
@@ -231,7 +241,7 @@ const AuthProvider = ({ children })=>{
231
241
  if (request.status === 200) {
232
242
  const json = await request.json();
233
243
  if (json?.user) {
234
- setUser(json.user);
244
+ setActiveUser(json.user);
235
245
  if (json?.token) {
236
246
  setTokenAndExpiration(json);
237
247
  }
@@ -250,16 +260,16 @@ const AuthProvider = ({ children })=>{
250
260
  });
251
261
  if (autoLoginResult.status === 200) {
252
262
  const autoLoginJson = await autoLoginResult.json();
253
- setUser(autoLoginJson.user);
263
+ setActiveUser(autoLoginJson.user);
254
264
  if (autoLoginJson?.token) {
255
265
  setTokenAndExpiration(autoLoginJson);
256
266
  }
257
267
  } else {
258
- setUser(null);
268
+ setActiveUser(null);
259
269
  revokeTokenAndExpire();
260
270
  }
261
271
  } else {
262
- setUser(null);
272
+ setActiveUser(null);
263
273
  revokeTokenAndExpire();
264
274
  }
265
275
  }
@@ -273,13 +283,17 @@ const AuthProvider = ({ children })=>{
273
283
  i18n,
274
284
  autoLogin,
275
285
  setTokenAndExpiration,
276
- revokeTokenAndExpire
286
+ revokeTokenAndExpire,
287
+ setActiveUser
277
288
  ]);
278
289
  // On mount, get user and set
279
290
  (0, _react.useEffect)(()=>{
280
- fetchFullUser();
291
+ if (id === undefined || id !== userIDRef.current) {
292
+ void fetchFullUser();
293
+ }
281
294
  }, [
282
- fetchFullUser
295
+ fetchFullUser,
296
+ id
283
297
  ]);
284
298
  // When location changes, refresh cookie
285
299
  (0, _react.useEffect)(()=>{
@@ -296,18 +310,6 @@ const AuthProvider = ({ children })=>{
296
310
  }, [
297
311
  pathname
298
312
  ]);
299
- // When user changes, get new access
300
- (0, _react.useEffect)(()=>{
301
- if (id) {
302
- refreshPermissions();
303
- }
304
- }, [
305
- i18n,
306
- id,
307
- api,
308
- serverURL,
309
- refreshPermissions
310
- ]);
311
313
  (0, _react.useEffect)(()=>{
312
314
  let reminder;
313
315
  const now = Math.round(new Date().getTime() / 1000);
@@ -330,7 +332,7 @@ const AuthProvider = ({ children })=>{
330
332
  const remainingTime = typeof tokenExpiration === 'number' ? tokenExpiration - now : 0;
331
333
  if (remainingTime > 0) {
332
334
  forceLogOut = setTimeout(()=>{
333
- setUser(null);
335
+ setActiveUser(null);
334
336
  revokeTokenAndExpire();
335
337
  redirectToInactivityRoute();
336
338
  }, Math.max(Math.min(remainingTime * 1000, maxTimeoutTime), 0));
@@ -343,7 +345,8 @@ const AuthProvider = ({ children })=>{
343
345
  closeAllModals,
344
346
  i18n,
345
347
  redirectToInactivityRoute,
346
- revokeTokenAndExpire
348
+ revokeTokenAndExpire,
349
+ setActiveUser
347
350
  ]);
348
351
  return /*#__PURE__*/ _react.default.createElement(Context.Provider, {
349
352
  value: {
@@ -353,7 +356,7 @@ const AuthProvider = ({ children })=>{
353
356
  refreshCookie,
354
357
  refreshCookieAsync,
355
358
  refreshPermissions,
356
- setUser,
359
+ setUser: setActiveUser,
357
360
  strategy,
358
361
  token: tokenInMemory,
359
362
  tokenExpiration,
@@ -363,4 +366,4 @@ const AuthProvider = ({ children })=>{
363
366
  };
364
367
  const useAuth = ()=>(0, _react.useContext)(Context);
365
368
 
366
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hZG1pbi9jb21wb25lbnRzL3V0aWxpdGllcy9BdXRoL2luZGV4LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VNb2RhbCB9IGZyb20gJ0BmYWNlbGVzcy11aS9tb2RhbCdcbmltcG9ydCBxcyBmcm9tICdxcydcbmltcG9ydCBSZWFjdCwgeyBjcmVhdGVDb250ZXh0LCB1c2VDYWxsYmFjaywgdXNlQ29udGV4dCwgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tICdyZWFjdC1pMThuZXh0J1xuaW1wb3J0IHsgdXNlSGlzdG9yeSwgdXNlTG9jYXRpb24gfSBmcm9tICdyZWFjdC1yb3V0ZXItZG9tJ1xuaW1wb3J0IHsgdG9hc3QgfSBmcm9tICdyZWFjdC10b2FzdGlmeSdcblxuaW1wb3J0IHR5cGUgeyBQZXJtaXNzaW9ucywgVXNlciB9IGZyb20gJy4uLy4uLy4uLy4uL2F1dGgvdHlwZXMnXG5pbXBvcnQgdHlwZSB7IEF1dGhDb250ZXh0IH0gZnJvbSAnLi90eXBlcydcblxuaW1wb3J0IHsgcmVxdWVzdHMgfSBmcm9tICcuLi8uLi8uLi9hcGknXG5pbXBvcnQgdXNlRGVib3VuY2UgZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlRGVib3VuY2UnXG5pbXBvcnQgeyB1c2VDb25maWcgfSBmcm9tICcuLi9Db25maWcnXG5pbXBvcnQgeyB1c2VMb2NhbGUgfSBmcm9tICcuLi9Mb2NhbGUnXG5cbmNvbnN0IENvbnRleHQgPSBjcmVhdGVDb250ZXh0KHt9IGFzIEF1dGhDb250ZXh0KVxuXG5jb25zdCBtYXhUaW1lb3V0VGltZSA9IDIxNDc0ODM2NDdcblxuZXhwb3J0IGNvbnN0IEF1dGhQcm92aWRlcjogUmVhY3QuRkM8eyBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlIH0+ID0gKHsgY2hpbGRyZW4gfSkgPT4ge1xuICBjb25zdCBbdXNlciwgc2V0VXNlcl0gPSB1c2VTdGF0ZTxVc2VyIHwgbnVsbD4oKVxuICBjb25zdCBbdG9rZW5Jbk1lbW9yeSwgc2V0VG9rZW5Jbk1lbW9yeV0gPSB1c2VTdGF0ZTxzdHJpbmc+KClcbiAgY29uc3QgW3Rva2VuRXhwaXJhdGlvbiwgc2V0VG9rZW5FeHBpcmF0aW9uXSA9IHVzZVN0YXRlPG51bWJlcj4oKVxuICBjb25zdCBbc3RyYXRlZ3ksIHNldFN0cmF0ZWd5XSA9IHVzZVN0YXRlPHN0cmluZz4oKVxuICBjb25zdCB7IHBhdGhuYW1lIH0gPSB1c2VMb2NhdGlvbigpXG4gIGNvbnN0IHsgcHVzaCB9ID0gdXNlSGlzdG9yeSgpXG4gIGNvbnN0IHsgY29kZSB9ID0gdXNlTG9jYWxlKClcblxuICBjb25zdCBjb25maWcgPSB1c2VDb25maWcoKVxuXG4gIGNvbnN0IHtcbiAgICBhZG1pbjogeyBhdXRvTG9naW4sIGluYWN0aXZpdHlSb3V0ZTogbG9nb3V0SW5hY3Rpdml0eVJvdXRlLCB1c2VyOiB1c2VyU2x1ZyB9LFxuICAgIHJvdXRlczogeyBhZG1pbiwgYXBpIH0sXG4gICAgc2VydmVyVVJMLFxuICB9ID0gY29uZmlnXG5cbiAgY29uc3QgW3Blcm1pc3Npb25zLCBzZXRQZXJtaXNzaW9uc10gPSB1c2VTdGF0ZTxQZXJtaXNzaW9ucz4oKVxuXG4gIGNvbnN0IHsgaTE4biB9ID0gdXNlVHJhbnNsYXRpb24oKVxuICBjb25zdCB7IGNsb3NlQWxsTW9kYWxzLCBvcGVuTW9kYWwgfSA9IHVzZU1vZGFsKClcbiAgY29uc3QgW2xhc3RMb2NhdGlvbkNoYW5nZSwgc2V0TGFzdExvY2F0aW9uQ2hhbmdlXSA9IHVzZVN0YXRlKDApXG4gIGNvbnN0IGRlYm91bmNlZExvY2F0aW9uQ2hhbmdlID0gdXNlRGVib3VuY2UobGFzdExvY2F0aW9uQ2hhbmdlLCAxMDAwMClcblxuICBjb25zdCBpZCA9IHVzZXI/LmlkXG5cbiAgY29uc3QgcmVkaXJlY3RUb0luYWN0aXZpdHlSb3V0ZSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAod2luZG93LmxvY2F0aW9uLnBhdGhuYW1lLnN0YXJ0c1dpdGgoYWRtaW4pKSB7XG4gICAgICBjb25zdCByZWRpcmVjdFBhcmFtID0gYD9yZWRpcmVjdD0ke2VuY29kZVVSSUNvbXBvbmVudChcbiAgICAgICAgd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lLnJlcGxhY2UoYWRtaW4sICcnKSxcbiAgICAgICl9YFxuICAgICAgcHVzaChgJHthZG1pbn0ke2xvZ291dEluYWN0aXZpdHlSb3V0ZX0ke3JlZGlyZWN0UGFyYW19YClcbiAgICB9IGVsc2Uge1xuICAgICAgcHVzaChgJHthZG1pbn0ke2xvZ291dEluYWN0aXZpdHlSb3V0ZX1gKVxuICAgIH1cbiAgICBjbG9zZUFsbE1vZGFscygpXG4gIH0sIFtwdXNoLCBhZG1pbiwgbG9nb3V0SW5hY3Rpdml0eVJvdXRlLCBjbG9zZUFsbE1vZGFsc10pXG5cbiAgY29uc3QgcmV2b2tlVG9rZW5BbmRFeHBpcmUgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgc2V0VG9rZW5Jbk1lbW9yeSh1bmRlZmluZWQpXG4gICAgc2V0VG9rZW5FeHBpcmF0aW9uKHVuZGVmaW5lZClcbiAgICBzZXRTdHJhdGVneSh1bmRlZmluZWQpXG4gIH0sIFtdKVxuXG4gIGNvbnN0IHNldFRva2VuQW5kRXhwaXJhdGlvbiA9IHVzZUNhbGxiYWNrKFxuICAgIChqc29uKSA9PiB7XG4gICAgICBjb25zdCB0b2tlbiA9IGpzb24/LnRva2VuIHx8IGpzb24/LnJlZnJlc2hlZFRva2VuXG4gICAgICBpZiAodG9rZW4gJiYganNvbj8uZXhwKSB7XG4gICAgICAgIHNldFRva2VuSW5NZW1vcnkodG9rZW4pXG4gICAgICAgIHNldFRva2VuRXhwaXJhdGlvbihqc29uLmV4cClcbiAgICAgICAgaWYgKGpzb24uc3RyYXRlZ3kpIHtcbiAgICAgICAgICBzZXRTdHJhdGVneShqc29uLnN0cmF0ZWd5KVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXZva2VUb2tlbkFuZEV4cGlyZSgpXG4gICAgICB9XG4gICAgfSxcbiAgICBbcmV2b2tlVG9rZW5BbmRFeHBpcmVdLFxuICApXG5cbiAgY29uc3QgcmVmcmVzaENvb2tpZSA9IHVzZUNhbGxiYWNrKFxuICAgIChmb3JjZVJlZnJlc2g/OiBib29sZWFuKSA9PiB7XG4gICAgICBjb25zdCBub3cgPSBNYXRoLnJvdW5kKG5ldyBEYXRlKCkuZ2V0VGltZSgpIC8gMTAwMClcbiAgICAgIGNvbnN0IHJlbWFpbmluZ1RpbWUgPSAodHlwZW9mIHRva2VuRXhwaXJhdGlvbiA9PT0gJ251bWJlcicgPyB0b2tlbkV4cGlyYXRpb24gOiAwKSAtIG5vd1xuXG4gICAgICBpZiAoZm9yY2VSZWZyZXNoIHx8ICh0b2tlbkV4cGlyYXRpb24gJiYgcmVtYWluaW5nVGltZSA8IDEyMCkpIHtcbiAgICAgICAgc2V0VGltZW91dChhc3luYyAoKSA9PiB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHJlcXVlc3QgPSBhd2FpdCByZXF1ZXN0cy5wb3N0KGAke3NlcnZlclVSTH0ke2FwaX0vJHt1c2VyU2x1Z30vcmVmcmVzaC10b2tlbmAsIHtcbiAgICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgICdBY2NlcHQtTGFuZ3VhZ2UnOiBpMThuLmxhbmd1YWdlLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSlcblxuICAgICAgICAgICAgaWYgKHJlcXVlc3Quc3RhdHVzID09PSAyMDApIHtcbiAgICAgICAgICAgICAgY29uc3QganNvbiA9IGF3YWl0IHJlcXVlc3QuanNvbigpXG4gICAgICAgICAgICAgIHNldFVzZXIoanNvbi51c2VyKVxuICAgICAgICAgICAgICBzZXRUb2tlbkFuZEV4cGlyYXRpb24oanNvbilcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHNldFVzZXIobnVsbClcbiAgICAgICAgICAgICAgcmVkaXJlY3RUb0luYWN0aXZpdHlSb3V0ZSgpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgdG9hc3QuZXJyb3IoZS5tZXNzYWdlKVxuICAgICAgICAgIH1cbiAgICAgICAgfSwgMTAwMClcbiAgICAgIH1cbiAgICB9LFxuICAgIFtcbiAgICAgIHRva2VuRXhwaXJhdGlvbixcbiAgICAgIHNlcnZlclVSTCxcbiAgICAgIGFwaSxcbiAgICAgIHVzZXJTbHVnLFxuICAgICAgaTE4bixcbiAgICAgIHJlZGlyZWN0VG9JbmFjdGl2aXR5Um91dGUsXG4gICAgICBzZXRUb2tlbkFuZEV4cGlyYXRpb24sXG4gICAgXSxcbiAgKVxuXG4gIGNvbnN0IHJlZnJlc2hDb29raWVBc3luYyA9IHVzZUNhbGxiYWNrKFxuICAgIGFzeW5jIChza2lwU2V0VXNlcj86IGJvb2xlYW4pOiBQcm9taXNlPFVzZXI+ID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3QgPSBhd2FpdCByZXF1ZXN0cy5wb3N0KGAke3NlcnZlclVSTH0ke2FwaX0vJHt1c2VyU2x1Z30vcmVmcmVzaC10b2tlbmAsIHtcbiAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAnQWNjZXB0LUxhbmd1YWdlJzogaTE4bi5sYW5ndWFnZSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuXG4gICAgICAgIGlmIChyZXF1ZXN0LnN0YXR1cyA9PT0gMjAwKSB7XG4gICAgICAgICAgY29uc3QganNvbiA9IGF3YWl0IHJlcXVlc3QuanNvbigpXG4gICAgICAgICAgaWYgKCFza2lwU2V0VXNlcikge1xuICAgICAgICAgICAgc2V0VXNlcihqc29uLnVzZXIpXG4gICAgICAgICAgICBzZXRUb2tlbkFuZEV4cGlyYXRpb24oanNvbilcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGpzb24udXNlclxuICAgICAgICB9XG5cbiAgICAgICAgc2V0VXNlcihudWxsKVxuICAgICAgICByZWRpcmVjdFRvSW5hY3Rpdml0eVJvdXRlKClcbiAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgdG9hc3QuZXJyb3IoYFJlZnJlc2hpbmcgdG9rZW4gZmFpbGVkOiAke2UubWVzc2FnZX1gKVxuICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgfVxuICAgIH0sXG4gICAgW3NlcnZlclVSTCwgYXBpLCB1c2VyU2x1ZywgaTE4biwgcmVkaXJlY3RUb0luYWN0aXZpdHlSb3V0ZSwgc2V0VG9rZW5BbmRFeHBpcmF0aW9uXSxcbiAgKVxuXG4gIGNvbnN0IGxvZ091dCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBzZXRVc2VyKG51bGwpXG4gICAgcmV2b2tlVG9rZW5BbmRFeHBpcmUoKVxuICAgIHJlcXVlc3RzLnBvc3QoYCR7c2VydmVyVVJMfSR7YXBpfS8ke3VzZXJTbHVnfS9sb2dvdXRgKVxuICB9LCBbc2VydmVyVVJMLCBhcGksIHVzZXJTbHVnLCByZXZva2VUb2tlbkFuZEV4cGlyZV0pXG5cbiAgY29uc3QgcmVmcmVzaFBlcm1pc3Npb25zID0gdXNlQ2FsbGJhY2soYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGxvY2FsZTogY29kZSxcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlcXVlc3QgPSBhd2FpdCByZXF1ZXN0cy5nZXQoYCR7c2VydmVyVVJMfSR7YXBpfS9hY2Nlc3M/JHtxcy5zdHJpbmdpZnkocGFyYW1zKX1gLCB7XG4gICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAnQWNjZXB0LUxhbmd1YWdlJzogaTE4bi5sYW5ndWFnZSxcbiAgICAgICAgfSxcbiAgICAgIH0pXG5cbiAgICAgIGlmIChyZXF1ZXN0LnN0YXR1cyA9PT0gMjAwKSB7XG4gICAgICAgIGNvbnN0IGpzb246IFBlcm1pc3Npb25zID0gYXdhaXQgcmVxdWVzdC5qc29uKClcbiAgICAgICAgc2V0UGVybWlzc2lvbnMoanNvbilcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgRmV0Y2hpbmcgcGVybWlzc2lvbnMgZmFpbGVkIHdpdGggc3RhdHVzIGNvZGUgJHtyZXF1ZXN0LnN0YXR1c31gKVxuICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRvYXN0LmVycm9yKGBSZWZyZXNoaW5nIHBlcm1pc3Npb25zIGZhaWxlZDogJHtlLm1lc3NhZ2V9YClcbiAgICB9XG4gIH0sIFtzZXJ2ZXJVUkwsIGFwaSwgaTE4biwgY29kZV0pXG5cbiAgY29uc3QgZmV0Y2hGdWxsVXNlciA9IFJlYWN0LnVzZUNhbGxiYWNrKGFzeW5jICgpID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVxdWVzdCA9IGF3YWl0IHJlcXVlc3RzLmdldChgJHtzZXJ2ZXJVUkx9JHthcGl9LyR7dXNlclNsdWd9L21lYCwge1xuICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgJ0FjY2VwdC1MYW5ndWFnZSc6IGkxOG4ubGFuZ3VhZ2UsXG4gICAgICAgIH0sXG4gICAgICB9KVxuXG4gICAgICBpZiAocmVxdWVzdC5zdGF0dXMgPT09IDIwMCkge1xuICAgICAgICBjb25zdCBqc29uID0gYXdhaXQgcmVxdWVzdC5qc29uKClcblxuICAgICAgICBpZiAoanNvbj8udXNlcikge1xuICAgICAgICAgIHNldFVzZXIoanNvbi51c2VyKVxuICAgICAgICAgIGlmIChqc29uPy50b2tlbikge1xuICAgICAgICAgICAgc2V0VG9rZW5BbmRFeHBpcmF0aW9uKGpzb24pXG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGF1dG9Mb2dpbiAmJiBhdXRvTG9naW4ucHJlZmlsbE9ubHkgIT09IHRydWUpIHtcbiAgICAgICAgICAvLyBhdXRvIGxvZy1pbiB3aXRoIHRoZSBwcm92aWRlZCBhdXRvTG9naW4gY3JlZGVudGlhbHMuIFRoaXMgaXMgdXNlZCBpbiBkZXYgbW9kZVxuICAgICAgICAgIC8vIHNvIHlvdSBkb24ndCBoYXZlIHRvIGxvZyBpbiBvdmVyIGFuZCBvdmVyIGFnYWluXG4gICAgICAgICAgY29uc3QgYXV0b0xvZ2luUmVzdWx0ID0gYXdhaXQgcmVxdWVzdHMucG9zdChgJHtzZXJ2ZXJVUkx9JHthcGl9LyR7dXNlclNsdWd9L2xvZ2luYCwge1xuICAgICAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICBlbWFpbDogYXV0b0xvZ2luLmVtYWlsLFxuICAgICAgICAgICAgICBwYXNzd29yZDogYXV0b0xvZ2luLnBhc3N3b3JkLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAgICdBY2NlcHQtTGFuZ3VhZ2UnOiBpMThuLmxhbmd1YWdlLFxuICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9KVxuICAgICAgICAgIGlmIChhdXRvTG9naW5SZXN1bHQuc3RhdHVzID09PSAyMDApIHtcbiAgICAgICAgICAgIGNvbnN0IGF1dG9Mb2dpbkpzb24gPSBhd2FpdCBhdXRvTG9naW5SZXN1bHQuanNvbigpXG4gICAgICAgICAgICBzZXRVc2VyKGF1dG9Mb2dpbkpzb24udXNlcilcbiAgICAgICAgICAgIGlmIChhdXRvTG9naW5Kc29uPy50b2tlbikge1xuICAgICAgICAgICAgICBzZXRUb2tlbkFuZEV4cGlyYXRpb24oYXV0b0xvZ2luSnNvbilcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc2V0VXNlcihudWxsKVxuICAgICAgICAgICAgcmV2b2tlVG9rZW5BbmRFeHBpcmUoKVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzZXRVc2VyKG51bGwpXG4gICAgICAgICAgcmV2b2tlVG9rZW5BbmRFeHBpcmUoKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdG9hc3QuZXJyb3IoYEZldGNoaW5nIHVzZXIgZmFpbGVkOiAke2UubWVzc2FnZX1gKVxuICAgIH1cbiAgfSwgW3NlcnZlclVSTCwgYXBpLCB1c2VyU2x1ZywgaTE4biwgYXV0b0xvZ2luLCBzZXRUb2tlbkFuZEV4cGlyYXRpb24sIHJldm9rZVRva2VuQW5kRXhwaXJlXSlcblxuICAvLyBPbiBtb3VudCwgZ2V0IHVzZXIgYW5kIHNldFxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGZldGNoRnVsbFVzZXIoKVxuICB9LCBbZmV0Y2hGdWxsVXNlcl0pXG5cbiAgLy8gV2hlbiBsb2NhdGlvbiBjaGFuZ2VzLCByZWZyZXNoIGNvb2tpZVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChpZCkge1xuICAgICAgcmVmcmVzaENvb2tpZSgpXG4gICAgfVxuICB9LCBbZGVib3VuY2VkTG9jYXRpb25DaGFuZ2UsIHJlZnJlc2hDb29raWUsIGlkXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHNldExhc3RMb2NhdGlvbkNoYW5nZShEYXRlLm5vdygpKVxuICB9LCBbcGF0aG5hbWVdKVxuXG4gIC8vIFdoZW4gdXNlciBjaGFuZ2VzLCBnZXQgbmV3IGFjY2Vzc1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChpZCkge1xuICAgICAgcmVmcmVzaFBlcm1pc3Npb25zKClcbiAgICB9XG4gIH0sIFtpMThuLCBpZCwgYXBpLCBzZXJ2ZXJVUkwsIHJlZnJlc2hQZXJtaXNzaW9uc10pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBsZXQgcmVtaW5kZXI6IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+XG4gICAgY29uc3Qgbm93ID0gTWF0aC5yb3VuZChuZXcgRGF0ZSgpLmdldFRpbWUoKSAvIDEwMDApXG4gICAgY29uc3QgcmVtYWluaW5nVGltZSA9IHR5cGVvZiB0b2tlbkV4cGlyYXRpb24gPT09ICdudW1iZXInID8gdG9rZW5FeHBpcmF0aW9uIC0gbm93IDogMFxuXG4gICAgaWYgKHJlbWFpbmluZ1RpbWUgPiAwKSB7XG4gICAgICByZW1pbmRlciA9IHNldFRpbWVvdXQoXG4gICAgICAgICgpID0+IHtcbiAgICAgICAgICBvcGVuTW9kYWwoJ3N0YXktbG9nZ2VkLWluJylcbiAgICAgICAgfSxcbiAgICAgICAgTWF0aC5tYXgoTWF0aC5taW4oKHJlbWFpbmluZ1RpbWUgLSA2MCkgKiAxMDAwLCBtYXhUaW1lb3V0VGltZSkpLFxuICAgICAgKVxuICAgIH1cblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBpZiAocmVtaW5kZXIpIGNsZWFyVGltZW91dChyZW1pbmRlcilcbiAgICB9XG4gIH0sIFt0b2tlbkV4cGlyYXRpb24sIG9wZW5Nb2RhbF0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBsZXQgZm9yY2VMb2dPdXQ6IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+XG4gICAgY29uc3Qgbm93ID0gTWF0aC5yb3VuZChuZXcgRGF0ZSgpLmdldFRpbWUoKSAvIDEwMDApXG4gICAgY29uc3QgcmVtYWluaW5nVGltZSA9IHR5cGVvZiB0b2tlbkV4cGlyYXRpb24gPT09ICdudW1iZXInID8gdG9rZW5FeHBpcmF0aW9uIC0gbm93IDogMFxuXG4gICAgaWYgKHJlbWFpbmluZ1RpbWUgPiAwKSB7XG4gICAgICBmb3JjZUxvZ091dCA9IHNldFRpbWVvdXQoXG4gICAgICAgICgpID0+IHtcbiAgICAgICAgICBzZXRVc2VyKG51bGwpXG4gICAgICAgICAgcmV2b2tlVG9rZW5BbmRFeHBpcmUoKVxuICAgICAgICAgIHJlZGlyZWN0VG9JbmFjdGl2aXR5Um91dGUoKVxuICAgICAgICB9LFxuICAgICAgICBNYXRoLm1heChNYXRoLm1pbihyZW1haW5pbmdUaW1lICogMTAwMCwgbWF4VGltZW91dFRpbWUpLCAwKSxcbiAgICAgIClcbiAgICB9XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgaWYgKGZvcmNlTG9nT3V0KSBjbGVhclRpbWVvdXQoZm9yY2VMb2dPdXQpXG4gICAgfVxuICB9LCBbdG9rZW5FeHBpcmF0aW9uLCBjbG9zZUFsbE1vZGFscywgaTE4biwgcmVkaXJlY3RUb0luYWN0aXZpdHlSb3V0ZSwgcmV2b2tlVG9rZW5BbmRFeHBpcmVdKVxuXG4gIHJldHVybiAoXG4gICAgPENvbnRleHQuUHJvdmlkZXJcbiAgICAgIHZhbHVlPXt7XG4gICAgICAgIGZldGNoRnVsbFVzZXIsXG4gICAgICAgIGxvZ091dCxcbiAgICAgICAgcGVybWlzc2lvbnMsXG4gICAgICAgIHJlZnJlc2hDb29raWUsXG4gICAgICAgIHJlZnJlc2hDb29raWVBc3luYyxcbiAgICAgICAgcmVmcmVzaFBlcm1pc3Npb25zLFxuICAgICAgICBzZXRVc2VyLFxuICAgICAgICBzdHJhdGVneSxcbiAgICAgICAgdG9rZW46IHRva2VuSW5NZW1vcnksXG4gICAgICAgIHRva2VuRXhwaXJhdGlvbixcbiAgICAgICAgdXNlcixcbiAgICAgIH19XG4gICAgPlxuICAgICAge2NoaWxkcmVufVxuICAgIDwvQ29udGV4dC5Qcm92aWRlcj5cbiAgKVxufVxuXG5leHBvcnQgY29uc3QgdXNlQXV0aCA9IDxUID0gVXNlciw+KCk6IEF1dGhDb250ZXh0PFQ+ID0+IHVzZUNvbnRleHQoQ29udGV4dCkgYXMgQXV0aENvbnRleHQ8VD5cbiJdLCJuYW1lcyI6WyJBdXRoUHJvdmlkZXIiLCJ1c2VBdXRoIiwiQ29udGV4dCIsImNyZWF0ZUNvbnRleHQiLCJtYXhUaW1lb3V0VGltZSIsImNoaWxkcmVuIiwidXNlciIsInNldFVzZXIiLCJ1c2VTdGF0ZSIsInRva2VuSW5NZW1vcnkiLCJzZXRUb2tlbkluTWVtb3J5IiwidG9rZW5FeHBpcmF0aW9uIiwic2V0VG9rZW5FeHBpcmF0aW9uIiwic3RyYXRlZ3kiLCJzZXRTdHJhdGVneSIsInBhdGhuYW1lIiwidXNlTG9jYXRpb24iLCJwdXNoIiwidXNlSGlzdG9yeSIsImNvZGUiLCJ1c2VMb2NhbGUiLCJjb25maWciLCJ1c2VDb25maWciLCJhZG1pbiIsImF1dG9Mb2dpbiIsImluYWN0aXZpdHlSb3V0ZSIsImxvZ291dEluYWN0aXZpdHlSb3V0ZSIsInVzZXJTbHVnIiwicm91dGVzIiwiYXBpIiwic2VydmVyVVJMIiwicGVybWlzc2lvbnMiLCJzZXRQZXJtaXNzaW9ucyIsImkxOG4iLCJ1c2VUcmFuc2xhdGlvbiIsImNsb3NlQWxsTW9kYWxzIiwib3Blbk1vZGFsIiwidXNlTW9kYWwiLCJsYXN0TG9jYXRpb25DaGFuZ2UiLCJzZXRMYXN0TG9jYXRpb25DaGFuZ2UiLCJkZWJvdW5jZWRMb2NhdGlvbkNoYW5nZSIsInVzZURlYm91bmNlIiwiaWQiLCJyZWRpcmVjdFRvSW5hY3Rpdml0eVJvdXRlIiwidXNlQ2FsbGJhY2siLCJ3aW5kb3ciLCJsb2NhdGlvbiIsInN0YXJ0c1dpdGgiLCJyZWRpcmVjdFBhcmFtIiwiZW5jb2RlVVJJQ29tcG9uZW50IiwicmVwbGFjZSIsInJldm9rZVRva2VuQW5kRXhwaXJlIiwidW5kZWZpbmVkIiwic2V0VG9rZW5BbmRFeHBpcmF0aW9uIiwianNvbiIsInRva2VuIiwicmVmcmVzaGVkVG9rZW4iLCJleHAiLCJyZWZyZXNoQ29va2llIiwiZm9yY2VSZWZyZXNoIiwibm93IiwiTWF0aCIsInJvdW5kIiwiRGF0ZSIsImdldFRpbWUiLCJyZW1haW5pbmdUaW1lIiwic2V0VGltZW91dCIsInJlcXVlc3QiLCJyZXF1ZXN0cyIsInBvc3QiLCJoZWFkZXJzIiwibGFuZ3VhZ2UiLCJzdGF0dXMiLCJlIiwidG9hc3QiLCJlcnJvciIsIm1lc3NhZ2UiLCJyZWZyZXNoQ29va2llQXN5bmMiLCJza2lwU2V0VXNlciIsImxvZ091dCIsInJlZnJlc2hQZXJtaXNzaW9ucyIsInBhcmFtcyIsImxvY2FsZSIsImdldCIsInFzIiwic3RyaW5naWZ5IiwiRXJyb3IiLCJmZXRjaEZ1bGxVc2VyIiwiUmVhY3QiLCJwcmVmaWxsT25seSIsImF1dG9Mb2dpblJlc3VsdCIsImJvZHkiLCJKU09OIiwiZW1haWwiLCJwYXNzd29yZCIsImF1dG9Mb2dpbkpzb24iLCJ1c2VFZmZlY3QiLCJyZW1pbmRlciIsIm1heCIsIm1pbiIsImNsZWFyVGltZW91dCIsImZvcmNlTG9nT3V0IiwiUHJvdmlkZXIiLCJ2YWx1ZSIsInVzZUNvbnRleHQiXSwicmFuZ2VNYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztJQW1CYUEsWUFBWTtlQUFaQTs7SUFpU0FDLE9BQU87ZUFBUEE7Ozt1QkFwVFk7MkRBQ1Y7K0RBQ29FOzhCQUNwRDtnQ0FDUzsrQkFDbEI7cUJBS0c7b0VBQ0Q7d0JBQ0U7d0JBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRTFCLE1BQU1DLHdCQUFVQyxJQUFBQSxvQkFBYSxFQUFDLENBQUM7QUFFL0IsTUFBTUMsaUJBQWlCO0FBRWhCLE1BQU1KLGVBQXdELENBQUMsRUFBRUssUUFBUSxFQUFFO0lBQ2hGLE1BQU0sQ0FBQ0MsTUFBTUMsUUFBUSxHQUFHQyxJQUFBQSxlQUFRO0lBQ2hDLE1BQU0sQ0FBQ0MsZUFBZUMsaUJBQWlCLEdBQUdGLElBQUFBLGVBQVE7SUFDbEQsTUFBTSxDQUFDRyxpQkFBaUJDLG1CQUFtQixHQUFHSixJQUFBQSxlQUFRO0lBQ3RELE1BQU0sQ0FBQ0ssVUFBVUMsWUFBWSxHQUFHTixJQUFBQSxlQUFRO0lBQ3hDLE1BQU0sRUFBRU8sUUFBUSxFQUFFLEdBQUdDLElBQUFBLDJCQUFXO0lB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
369
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hZG1pbi9jb21wb25lbnRzL3V0aWxpdGllcy9BdXRoL2luZGV4LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VNb2RhbCB9IGZyb20gJ0BmYWNlbGVzcy11aS9tb2RhbCdcbmltcG9ydCBxcyBmcm9tICdxcydcbmltcG9ydCBSZWFjdCwgeyBjcmVhdGVDb250ZXh0LCB1c2VDYWxsYmFjaywgdXNlQ29udGV4dCwgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tICdyZWFjdC1pMThuZXh0J1xuaW1wb3J0IHsgdXNlSGlzdG9yeSwgdXNlTG9jYXRpb24gfSBmcm9tICdyZWFjdC1yb3V0ZXItZG9tJ1xuaW1wb3J0IHsgdG9hc3QgfSBmcm9tICdyZWFjdC10b2FzdGlmeSdcblxuaW1wb3J0IHR5cGUgeyBQZXJtaXNzaW9ucywgVXNlciB9IGZyb20gJy4uLy4uLy4uLy4uL2F1dGgvdHlwZXMnXG5pbXBvcnQgdHlwZSB7IEF1dGhDb250ZXh0IH0gZnJvbSAnLi90eXBlcydcblxuaW1wb3J0IHsgcmVxdWVzdHMgfSBmcm9tICcuLi8uLi8uLi9hcGknXG5pbXBvcnQgdXNlRGVib3VuY2UgZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlRGVib3VuY2UnXG5pbXBvcnQgeyB1c2VDb25maWcgfSBmcm9tICcuLi9Db25maWcnXG5cbmNvbnN0IENvbnRleHQgPSBjcmVhdGVDb250ZXh0KHt9IGFzIEF1dGhDb250ZXh0KVxuXG5jb25zdCBtYXhUaW1lb3V0VGltZSA9IDIxNDc0ODM2NDdcblxuZXhwb3J0IGNvbnN0IEF1dGhQcm92aWRlcjogUmVhY3QuRkM8eyBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlIH0+ID0gKHsgY2hpbGRyZW4gfSkgPT4ge1xuICBjb25zdCBbdXNlciwgc2V0VXNlcl0gPSB1c2VTdGF0ZTxVc2VyIHwgbnVsbD4oKVxuICBjb25zdCBbdG9rZW5Jbk1lbW9yeSwgc2V0VG9rZW5Jbk1lbW9yeV0gPSB1c2VTdGF0ZTxzdHJpbmc+KClcbiAgY29uc3QgW3Rva2VuRXhwaXJhdGlvbiwgc2V0VG9rZW5FeHBpcmF0aW9uXSA9IHVzZVN0YXRlPG51bWJlcj4oKVxuICBjb25zdCBbc3RyYXRlZ3ksIHNldFN0cmF0ZWd5XSA9IHVzZVN0YXRlPHN0cmluZz4oKVxuICBjb25zdCB7IHBhdGhuYW1lIH0gPSB1c2VMb2NhdGlvbigpXG4gIGNvbnN0IHsgcHVzaCB9ID0gdXNlSGlzdG9yeSgpXG5cbiAgY29uc3QgY29uZmlnID0gdXNlQ29uZmlnKClcblxuICBjb25zdCB7XG4gICAgYWRtaW46IHsgYXV0b0xvZ2luLCBpbmFjdGl2aXR5Um91dGU6IGxvZ291dEluYWN0aXZpdHlSb3V0ZSwgdXNlcjogdXNlclNsdWcgfSxcbiAgICByb3V0ZXM6IHsgYWRtaW4sIGFwaSB9LFxuICAgIHNlcnZlclVSTCxcbiAgfSA9IGNvbmZpZ1xuXG4gIGNvbnN0IFtwZXJtaXNzaW9ucywgc2V0UGVybWlzc2lvbnNdID0gdXNlU3RhdGU8UGVybWlzc2lvbnM+KClcblxuICBjb25zdCB7IGkxOG4gfSA9IHVzZVRyYW5zbGF0aW9uKClcbiAgY29uc3QgeyBjbG9zZUFsbE1vZGFscywgb3Blbk1vZGFsIH0gPSB1c2VNb2RhbCgpXG4gIGNvbnN0IFtsYXN0TG9jYXRpb25DaGFuZ2UsIHNldExhc3RMb2NhdGlvbkNoYW5nZV0gPSB1c2VTdGF0ZSgwKVxuICBjb25zdCBkZWJvdW5jZWRMb2NhdGlvbkNoYW5nZSA9IHVzZURlYm91bmNlKGxhc3RMb2NhdGlvbkNoYW5nZSwgMTAwMDApXG4gIGNvbnN0IHVzZXJJRFJlZiA9IFJlYWN0LnVzZVJlZjxudWxsIHwgbnVtYmVyIHwgc3RyaW5nPigpXG5cbiAgY29uc3QgaWQgPSB1c2VyPy5pZFxuXG4gIGNvbnN0IHJlZnJlc2hQZXJtaXNzaW9ucyA9IHVzZUNhbGxiYWNrKFxuICAgIGFzeW5jICh7IGxvY2FsZSB9OiB7IGxvY2FsZT86IHN0cmluZyB9ID0ge30pID0+IHtcbiAgICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgICAgbG9jYWxlLFxuICAgICAgfVxuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9IGF3YWl0IHJlcXVlc3RzLmdldChcbiAgICAgICAgICBgJHtzZXJ2ZXJVUkx9JHthcGl9L2FjY2VzcyR7cXMuc3RyaW5naWZ5KHBhcmFtcywgeyBhZGRRdWVyeVByZWZpeDogdHJ1ZSB9KX1gLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgJ0FjY2VwdC1MYW5ndWFnZSc6IGkxOG4ubGFuZ3VhZ2UsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIClcblxuICAgICAgICBpZiAocmVxdWVzdC5zdGF0dXMgPT09IDIwMCkge1xuICAgICAgICAgIGNvbnN0IGpzb246IFBlcm1pc3Npb25zID0gYXdhaXQgcmVxdWVzdC5qc29uKClcbiAgICAgICAgICBzZXRQZXJtaXNzaW9ucyhqc29uKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRmV0Y2hpbmcgcGVybWlzc2lvbnMgZmFpbGVkIHdpdGggc3RhdHVzIGNvZGUgJHtyZXF1ZXN0LnN0YXR1c31gKVxuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHRvYXN0LmVycm9yKGBSZWZyZXNoaW5nIHBlcm1pc3Npb25zIGZhaWxlZDogJHtlLm1lc3NhZ2V9YClcbiAgICAgIH1cbiAgICB9LFxuICAgIFtzZXJ2ZXJVUkwsIGFwaSwgaTE4bl0sXG4gIClcblxuICBjb25zdCBzZXRBY3RpdmVVc2VyID0gUmVhY3QudXNlQ2FsbGJhY2soXG4gICAgKHVzZXI6IFVzZXIgfCBudWxsKSA9PiB7XG4gICAgICBzZXRVc2VyKHVzZXIpXG4gICAgICB1c2VySURSZWYuY3VycmVudCA9IHVzZXI/LmlkIHx8IG51bGxcbiAgICAgIHZvaWQgcmVmcmVzaFBlcm1pc3Npb25zKClcbiAgICB9LFxuICAgIFtyZWZyZXNoUGVybWlzc2lvbnNdLFxuICApXG5cbiAgY29uc3QgcmVkaXJlY3RUb0luYWN0aXZpdHlSb3V0ZSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAod2luZG93LmxvY2F0aW9uLnBhdGhuYW1lLnN0YXJ0c1dpdGgoYWRtaW4pKSB7XG4gICAgICBjb25zdCByZWRpcmVjdFBhcmFtID0gYD9yZWRpcmVjdD0ke2VuY29kZVVSSUNvbXBvbmVudChcbiAgICAgICAgd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lLnJlcGxhY2UoYWRtaW4sICcnKSxcbiAgICAgICl9YFxuICAgICAgcHVzaChgJHthZG1pbn0ke2xvZ291dEluYWN0aXZpdHlSb3V0ZX0ke3JlZGlyZWN0UGFyYW19YClcbiAgICB9IGVsc2Uge1xuICAgICAgcHVzaChgJHthZG1pbn0ke2xvZ291dEluYWN0aXZpdHlSb3V0ZX1gKVxuICAgIH1cbiAgICBjbG9zZUFsbE1vZGFscygpXG4gIH0sIFtwdXNoLCBhZG1pbiwgbG9nb3V0SW5hY3Rpdml0eVJvdXRlLCBjbG9zZUFsbE1vZGFsc10pXG5cbiAgY29uc3QgcmV2b2tlVG9rZW5BbmRFeHBpcmUgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgc2V0VG9rZW5Jbk1lbW9yeSh1bmRlZmluZWQpXG4gICAgc2V0VG9rZW5FeHBpcmF0aW9uKHVuZGVmaW5lZClcbiAgICBzZXRTdHJhdGVneSh1bmRlZmluZWQpXG4gIH0sIFtdKVxuXG4gIGNvbnN0IHNldFRva2VuQW5kRXhwaXJhdGlvbiA9IHVzZUNhbGxiYWNrKFxuICAgIChqc29uKSA9PiB7XG4gICAgICBjb25zdCB0b2tlbiA9IGpzb24/LnRva2VuIHx8IGpzb24/LnJlZnJlc2hlZFRva2VuXG4gICAgICBpZiAodG9rZW4gJiYganNvbj8uZXhwKSB7XG4gICAgICAgIHNldFRva2VuSW5NZW1vcnkodG9rZW4pXG4gICAgICAgIHNldFRva2VuRXhwaXJhdGlvbihqc29uLmV4cClcbiAgICAgICAgaWYgKGpzb24uc3RyYXRlZ3kpIHtcbiAgICAgICAgICBzZXRTdHJhdGVneShqc29uLnN0cmF0ZWd5KVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXZva2VUb2tlbkFuZEV4cGlyZSgpXG4gICAgICB9XG4gICAgfSxcbiAgICBbcmV2b2tlVG9rZW5BbmRFeHBpcmVdLFxuICApXG5cbiAgY29uc3QgcmVmcmVzaENvb2tpZSA9IHVzZUNhbGxiYWNrKFxuICAgIChmb3JjZVJlZnJlc2g/OiBib29sZWFuKSA9PiB7XG4gICAgICBjb25zdCBub3cgPSBNYXRoLnJvdW5kKG5ldyBEYXRlKCkuZ2V0VGltZSgpIC8gMTAwMClcbiAgICAgIGNvbnN0IHJlbWFpbmluZ1RpbWUgPSAodHlwZW9mIHRva2VuRXhwaXJhdGlvbiA9PT0gJ251bWJlcicgPyB0b2tlbkV4cGlyYXRpb24gOiAwKSAtIG5vd1xuXG4gICAgICBpZiAoZm9yY2VSZWZyZXNoIHx8ICh0b2tlbkV4cGlyYXRpb24gJiYgcmVtYWluaW5nVGltZSA8IDEyMCkpIHtcbiAgICAgICAgc2V0VGltZW91dChhc3luYyAoKSA9PiB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHJlcXVlc3QgPSBhd2FpdCByZXF1ZXN0cy5wb3N0KGAke3NlcnZlclVSTH0ke2FwaX0vJHt1c2VyU2x1Z30vcmVmcmVzaC10b2tlbmAsIHtcbiAgICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgICdBY2NlcHQtTGFuZ3VhZ2UnOiBpMThuLmxhbmd1YWdlLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSlcblxuICAgICAgICAgICAgaWYgKHJlcXVlc3Quc3RhdHVzID09PSAyMDApIHtcbiAgICAgICAgICAgICAgY29uc3QganNvbiA9IGF3YWl0IHJlcXVlc3QuanNvbigpXG4gICAgICAgICAgICAgIHNldEFjdGl2ZVVzZXIoanNvbi51c2VyKVxuICAgICAgICAgICAgICBzZXRUb2tlbkFuZEV4cGlyYXRpb24oanNvbilcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHNldEFjdGl2ZVVzZXIobnVsbClcbiAgICAgICAgICAgICAgcmVkaXJlY3RUb0luYWN0aXZpdHlSb3V0ZSgpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgdG9hc3QuZXJyb3IoZS5tZXNzYWdlKVxuICAgICAgICAgIH1cbiAgICAgICAgfSwgMTAwMClcbiAgICAgIH1cbiAgICB9LFxuICAgIFtcbiAgICAgIHRva2VuRXhwaXJhdGlvbixcbiAgICAgIHNlcnZlclVSTCxcbiAgICAgIGFwaSxcbiAgICAgIHVzZXJTbHVnLFxuICAgICAgaTE4bi5sYW5ndWFnZSxcbiAgICAgIHNldEFjdGl2ZVVzZXIsXG4gICAgICBzZXRUb2tlbkFuZEV4cGlyYXRpb24sXG4gICAgICByZWRpcmVjdFRvSW5hY3Rpdml0eVJvdXRlLFxuICAgIF0sXG4gIClcblxuICBjb25zdCByZWZyZXNoQ29va2llQXN5bmMgPSB1c2VDYWxsYmFjayhcbiAgICBhc3luYyAoc2tpcFNldFVzZXI/OiBib29sZWFuKTogUHJvbWlzZTxVc2VyPiA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCByZXF1ZXN0ID0gYXdhaXQgcmVxdWVzdHMucG9zdChgJHtzZXJ2ZXJVUkx9JHthcGl9LyR7dXNlclNsdWd9L3JlZnJlc2gtdG9rZW5gLCB7XG4gICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgJ0FjY2VwdC1MYW5ndWFnZSc6IGkxOG4ubGFuZ3VhZ2UsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcblxuICAgICAgICBpZiAocmVxdWVzdC5zdGF0dXMgPT09IDIwMCkge1xuICAgICAgICAgIGNvbnN0IGpzb24gPSBhd2FpdCByZXF1ZXN0Lmpzb24oKVxuICAgICAgICAgIGlmICghc2tpcFNldFVzZXIpIHtcbiAgICAgICAgICAgIHNldEFjdGl2ZVVzZXIoanNvbi51c2VyKVxuICAgICAgICAgICAgc2V0VG9rZW5BbmRFeHBpcmF0aW9uKGpzb24pXG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBqc29uLnVzZXJcbiAgICAgICAgfVxuXG4gICAgICAgIHNldEFjdGl2ZVVzZXIobnVsbClcbiAgICAgICAgcmVkaXJlY3RUb0luYWN0aXZpdHlSb3V0ZSgpXG4gICAgICAgIHJldHVybiBudWxsXG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHRvYXN0LmVycm9yKGBSZWZyZXNoaW5nIHRva2VuIGZhaWxlZDogJHtlLm1lc3NhZ2V9YClcbiAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgIH1cbiAgICB9LFxuICAgIFtcbiAgICAgIHNlcnZlclVSTCxcbiAgICAgIGFwaSxcbiAgICAgIHVzZXJTbHVnLFxuICAgICAgaTE4bixcbiAgICAgIHJlZGlyZWN0VG9JbmFjdGl2aXR5Um91dGUsXG4gICAgICBzZXRUb2tlbkFuZEV4cGlyYXRpb24sXG4gICAgICBzZXRBY3RpdmVVc2VyLFxuICAgIF0sXG4gIClcblxuICBjb25zdCBsb2dPdXQgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgc2V0QWN0aXZlVXNlcihudWxsKVxuICAgIHJldm9rZVRva2VuQW5kRXhwaXJlKClcbiAgICB2b2lkIHJlcXVlc3RzLnBvc3QoYCR7c2VydmVyVVJMfSR7YXBpfS8ke3VzZXJTbHVnfS9sb2dvdXRgKVxuICB9LCBbc2VydmVyVVJMLCBhcGksIHVzZXJTbHVnLCByZXZva2VUb2tlbkFuZEV4cGlyZSwgc2V0QWN0aXZlVXNlcl0pXG5cbiAgY29uc3QgZmV0Y2hGdWxsVXNlciA9IFJlYWN0LnVzZUNhbGxiYWNrKGFzeW5jICgpID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVxdWVzdCA9IGF3YWl0IHJlcXVlc3RzLmdldChgJHtzZXJ2ZXJVUkx9JHthcGl9LyR7dXNlclNsdWd9L21lYCwge1xuICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgJ0FjY2VwdC1MYW5ndWFnZSc6IGkxOG4ubGFuZ3VhZ2UsXG4gICAgICAgIH0sXG4gICAgICB9KVxuXG4gICAgICBpZiAocmVxdWVzdC5zdGF0dXMgPT09IDIwMCkge1xuICAgICAgICBjb25zdCBqc29uID0gYXdhaXQgcmVxdWVzdC5qc29uKClcblxuICAgICAgICBpZiAoanNvbj8udXNlcikge1xuICAgICAgICAgIHNldEFjdGl2ZVVzZXIoanNvbi51c2VyKVxuICAgICAgICAgIGlmIChqc29uPy50b2tlbikge1xuICAgICAgICAgICAgc2V0VG9rZW5BbmRFeHBpcmF0aW9uKGpzb24pXG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGF1dG9Mb2dpbiAmJiBhdXRvTG9naW4ucHJlZmlsbE9ubHkgIT09IHRydWUpIHtcbiAgICAgICAgICAvLyBhdXRvIGxvZy1pbiB3aXRoIHRoZSBwcm92aWRlZCBhdXRvTG9naW4gY3JlZGVudGlhbHMuIFRoaXMgaXMgdXNlZCBpbiBkZXYgbW9kZVxuICAgICAgICAgIC8vIHNvIHlvdSBkb24ndCBoYXZlIHRvIGxvZyBpbiBvdmVyIGFuZCBvdmVyIGFnYWluXG4gICAgICAgICAgY29uc3QgYXV0b0xvZ2luUmVzdWx0ID0gYXdhaXQgcmVxdWVzdHMucG9zdChgJHtzZXJ2ZXJVUkx9JHthcGl9LyR7dXNlclNsdWd9L2xvZ2luYCwge1xuICAgICAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICBlbWFpbDogYXV0b0xvZ2luLmVtYWlsLFxuICAgICAgICAgICAgICBwYXNzd29yZDogYXV0b0xvZ2luLnBhc3N3b3JkLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAgICdBY2NlcHQtTGFuZ3VhZ2UnOiBpMThuLmxhbmd1YWdlLFxuICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9KVxuICAgICAgICAgIGlmIChhdXRvTG9naW5SZXN1bHQuc3RhdHVzID09PSAyMDApIHtcbiAgICAgICAgICAgIGNvbnN0IGF1dG9Mb2dpbkpzb24gPSBhd2FpdCBhdXRvTG9naW5SZXN1bHQuanNvbigpXG4gICAgICAgICAgICBzZXRBY3RpdmVVc2VyKGF1dG9Mb2dpbkpzb24udXNlcilcbiAgICAgICAgICAgIGlmIChhdXRvTG9naW5Kc29uPy50b2tlbikge1xuICAgICAgICAgICAgICBzZXRUb2tlbkFuZEV4cGlyYXRpb24oYXV0b0xvZ2luSnNvbilcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc2V0QWN0aXZlVXNlcihudWxsKVxuICAgICAgICAgICAgcmV2b2tlVG9rZW5BbmRFeHBpcmUoKVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzZXRBY3RpdmVVc2VyKG51bGwpXG4gICAgICAgICAgcmV2b2tlVG9rZW5BbmRFeHBpcmUoKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdG9hc3QuZXJyb3IoYEZldGNoaW5nIHVzZXIgZmFpbGVkOiAke2UubWVzc2FnZX1gKVxuICAgIH1cbiAgfSwgW1xuICAgIHNlcnZlclVSTCxcbiAgICBhcGksXG4gICAgdXNlclNsdWcsXG4gICAgaTE4bixcbiAgICBhdXRvTG9naW4sXG4gICAgc2V0VG9rZW5BbmRFeHBpcmF0aW9uLFxuICAgIHJldm9rZVRva2VuQW5kRXhwaXJlLFxuICAgIHNldEFjdGl2ZVVzZXIsXG4gIF0pXG5cbiAgLy8gT24gbW91bnQsIGdldCB1c2VyIGFuZCBzZXRcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaWQgPT09IHVuZGVmaW5lZCB8fCBpZCAhPT0gdXNlcklEUmVmLmN1cnJlbnQpIHtcbiAgICAgIHZvaWQgZmV0Y2hGdWxsVXNlcigpXG4gICAgfVxuICB9LCBbZmV0Y2hGdWxsVXNlciwgaWRdKVxuXG4gIC8vIFdoZW4gbG9jYXRpb24gY2hhbmdlcywgcmVmcmVzaCBjb29raWVcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaWQpIHtcbiAgICAgIHJlZnJlc2hDb29raWUoKVxuICAgIH1cbiAgfSwgW2RlYm91bmNlZExvY2F0aW9uQ2hhbmdlLCByZWZyZXNoQ29va2llLCBpZF0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRMYXN0TG9jYXRpb25DaGFuZ2UoRGF0ZS5ub3coKSlcbiAgfSwgW3BhdGhuYW1lXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGxldCByZW1pbmRlcjogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD5cbiAgICBjb25zdCBub3cgPSBNYXRoLnJvdW5kKG5ldyBEYXRlKCkuZ2V0VGltZSgpIC8gMTAwMClcbiAgICBjb25zdCByZW1haW5pbmdUaW1lID0gdHlwZW9mIHRva2VuRXhwaXJhdGlvbiA9PT0gJ251bWJlcicgPyB0b2tlbkV4cGlyYXRpb24gLSBub3cgOiAwXG5cbiAgICBpZiAocmVtYWluaW5nVGltZSA+IDApIHtcbiAgICAgIHJlbWluZGVyID0gc2V0VGltZW91dChcbiAgICAgICAgKCkgPT4ge1xuICAgICAgICAgIG9wZW5Nb2RhbCgnc3RheS1sb2dnZWQtaW4nKVxuICAgICAgICB9LFxuICAgICAgICBNYXRoLm1heChNYXRoLm1pbigocmVtYWluaW5nVGltZSAtIDYwKSAqIDEwMDAsIG1heFRpbWVvdXRUaW1lKSksXG4gICAgICApXG4gICAgfVxuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGlmIChyZW1pbmRlcikgY2xlYXJUaW1lb3V0KHJlbWluZGVyKVxuICAgIH1cbiAgfSwgW3Rva2VuRXhwaXJhdGlvbiwgb3Blbk1vZGFsXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGxldCBmb3JjZUxvZ091dDogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD5cbiAgICBjb25zdCBub3cgPSBNYXRoLnJvdW5kKG5ldyBEYXRlKCkuZ2V0VGltZSgpIC8gMTAwMClcbiAgICBjb25zdCByZW1haW5pbmdUaW1lID0gdHlwZW9mIHRva2VuRXhwaXJhdGlvbiA9PT0gJ251bWJlcicgPyB0b2tlbkV4cGlyYXRpb24gLSBub3cgOiAwXG5cbiAgICBpZiAocmVtYWluaW5nVGltZSA+IDApIHtcbiAgICAgIGZvcmNlTG9nT3V0ID0gc2V0VGltZW91dChcbiAgICAgICAgKCkgPT4ge1xuICAgICAgICAgIHNldEFjdGl2ZVVzZXIobnVsbClcbiAgICAgICAgICByZXZva2VUb2tlbkFuZEV4cGlyZSgpXG4gICAgICAgICAgcmVkaXJlY3RUb0luYWN0aXZpdHlSb3V0ZSgpXG4gICAgICAgIH0sXG4gICAgICAgIE1hdGgubWF4KE1hdGgubWluKHJlbWFpbmluZ1RpbWUgKiAxMDAwLCBtYXhUaW1lb3V0VGltZSksIDApLFxuICAgICAgKVxuICAgIH1cblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBpZiAoZm9yY2VMb2dPdXQpIGNsZWFyVGltZW91dChmb3JjZUxvZ091dClcbiAgICB9XG4gIH0sIFtcbiAgICB0b2tlbkV4cGlyYXRpb24sXG4gICAgY2xvc2VBbGxNb2RhbHMsXG4gICAgaTE4bixcbiAgICByZWRpcmVjdFRvSW5hY3Rpdml0eVJvdXRlLFxuICAgIHJldm9rZVRva2VuQW5kRXhwaXJlLFxuICAgIHNldEFjdGl2ZVVzZXIsXG4gIF0pXG5cbiAgcmV0dXJuIChcbiAgICA8Q29udGV4dC5Qcm92aWRlclxuICAgICAgdmFsdWU9e3tcbiAgICAgICAgZmV0Y2hGdWxsVXNlcixcbiAgICAgICAgbG9nT3V0LFxuICAgICAgICBwZXJtaXNzaW9ucyxcbiAgICAgICAgcmVmcmVzaENvb2tpZSxcbiAgICAgICAgcmVmcmVzaENvb2tpZUFzeW5jLFxuICAgICAgICByZWZyZXNoUGVybWlzc2lvbnMsXG4gICAgICAgIHNldFVzZXI6IHNldEFjdGl2ZVVzZXIsXG4gICAgICAgIHN0cmF0ZWd5LFxuICAgICAgICB0b2tlbjogdG9rZW5Jbk1lbW9yeSxcbiAgICAgICAgdG9rZW5FeHBpcmF0aW9uLFxuICAgICAgICB1c2VyLFxuICAgICAgfX1cbiAgICA+XG4gICAgICB7Y2hpbGRyZW59XG4gICAgPC9Db250ZXh0LlByb3ZpZGVyPlxuICApXG59XG5cbmV4cG9ydCBjb25zdCB1c2VBdXRoID0gPFQgPSBVc2VyLD4oKTogQXV0aENvbnRleHQ8VD4gPT4gdXNlQ29udGV4dChDb250ZXh0KSBhcyBBdXRoQ29udGV4dDxUPlxuIl0sIm5hbWVzIjpbIkF1dGhQcm92aWRlciIsInVzZUF1dGgiLCJDb250ZXh0IiwiY3JlYXRlQ29udGV4dCIsIm1heFRpbWVvdXRUaW1lIiwiY2hpbGRyZW4iLCJ1c2VyIiwic2V0VXNlciIsInVzZVN0YXRlIiwidG9rZW5Jbk1lbW9yeSIsInNldFRva2VuSW5NZW1vcnkiLCJ0b2tlbkV4cGlyYXRpb24iLCJzZXRUb2tlbkV4cGlyYXRpb24iLCJzdHJhdGVneSIsInNldFN0cmF0ZWd5IiwicGF0aG5hbWUiLCJ1c2VMb2NhdGlvbiIsInB1c2giLCJ1c2VIaXN0b3J5IiwiY29uZmlnIiwidXNlQ29uZmlnIiwiYWRtaW4iLCJhdXRvTG9naW4iLCJpbmFjdGl2aXR5Um91dGUiLCJsb2dvdXRJbmFjdGl2aXR5Um91dGUiLCJ1c2VyU2x1ZyIsInJvdXRlcyIsImFwaSIsInNlcnZlclVSTCIsInBlcm1pc3Npb25zIiwic2V0UGVybWlzc2lvbnMiLCJpMThuIiwidXNlVHJhbnNsYXRpb24iLCJjbG9zZUFsbE1vZGFscyIsIm9wZW5Nb2RhbCIsInVzZU1vZGFsIiwibGFzdExvY2F0aW9uQ2hhbmdlIiwic2V0TGFzdExvY2F0aW9uQ2hhbmdlIiwiZGVib3VuY2VkTG9jYXRpb25DaGFuZ2UiLCJ1c2VEZWJvdW5jZSIsInVzZXJJRFJlZiIsIlJlYWN0IiwidXNlUmVmIiwiaWQiLCJyZWZyZXNoUGVybWlzc2lvbnMiLCJ1c2VDYWxsYmFjayIsImxvY2FsZSIsInBhcmFtcyIsInJlcXVlc3QiLCJyZXF1ZXN0cyIsImdldCIsInFzIiwic3RyaW5naWZ5IiwiYWRkUXVlcnlQcmVmaXgiLCJoZWFkZXJzIiwibGFuZ3VhZ2UiLCJzdGF0dXMiLCJqc29uIiwiRXJyb3IiLCJlIiwidG9hc3QiLCJlcnJvciIsIm1lc3NhZ2UiLCJzZXRBY3RpdmVVc2VyIiwiY3VycmVudCIsInJlZGlyZWN0VG9JbmFjdGl2aXR5Um91dGUiLCJ3aW5kb3ciLCJsb2NhdGlvbiIsInN0YXJ0c1dpdGgiLCJyZWRpcmVjdFBhcmFtIiwiZW5jb2RlVVJJQ29tcG9uZW50IiwicmVwbGFjZSIsInJldm9rZVRva2VuQW5kRXhwaXJlIiwidW5kZWZpbmVkIiwic2V0VG9rZW5BbmRFeHBpcmF0aW9uIiwidG9rZW4iLCJyZWZyZXNoZWRUb2tlbiIsImV4cCIsInJlZnJlc2hDb29raWUiLCJmb3JjZVJlZnJlc2giLCJub3ciLCJNYXRoIiwicm91bmQiLCJEYXRlIiwiZ2V0VGltZSIsInJlbWFpbmluZ1RpbWUiLCJzZXRUaW1lb3V0IiwicG9zdCIsInJlZnJlc2hDb29raWVBc3luYyIsInNraXBTZXRVc2VyIiwibG9nT3V0IiwiZmV0Y2hGdWxsVXNlciIsInByZWZpbGxPbmx5IiwiYXV0b0xvZ2luUmVzdWx0IiwiYm9keSIsIkpTT04iLCJlbWFpbCIsInBhc3N3b3JkIiwiYXV0b0xvZ2luSnNvbiIsInVzZUVmZmVjdCIsInJlbWluZGVyIiwibWF4IiwibWluIiwiY2xlYXJUaW1lb3V0IiwiZm9yY2VMb2dPdXQiLCJQcm92aWRlciIsInZhbHVlIiwidXNlQ29udGV4dCJdLCJyYW5nZU1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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
@@ -5,7 +5,9 @@ export type AuthContext<T = User> = {
5
5
  permissions?: Permissions;
6
6
  refreshCookie: (forceRefresh?: boolean) => void;
7
7
  refreshCookieAsync: () => Promise<User>;
8
- refreshPermissions: () => Promise<void>;
8
+ refreshPermissions: ({ locale }?: {
9
+ locale?: string;
10
+ }) => Promise<void>;
9
11
  setUser: (user: T) => void;
10
12
  strategy?: string;
11
13
  token?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/admin/components/utilities/Auth/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAA;AAE/D,MAAM,MAAM,WAAW,CAAC,CAAC,GAAG,IAAI,IAAI;IAClC,aAAa,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAClC,MAAM,EAAE,MAAM,IAAI,CAAA;IAClB,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,aAAa,EAAE,CAAC,YAAY,CAAC,EAAE,OAAO,KAAK,IAAI,CAAA;IAC/C,kBAAkB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IACvC,kBAAkB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IACvC,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,CAAA;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAA;CAChB,CAAA"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/admin/components/utilities/Auth/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAA;AAE/D,MAAM,MAAM,WAAW,CAAC,CAAC,GAAG,IAAI,IAAI;IAClC,aAAa,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAClC,MAAM,EAAE,MAAM,IAAI,CAAA;IAClB,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,aAAa,EAAE,CAAC,YAAY,CAAC,EAAE,OAAO,KAAK,IAAI,CAAA;IAC/C,kBAAkB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IACvC,kBAAkB,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACvE,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,CAAA;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAA;CAChB,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/admin/components/utilities/Locale/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAyD,MAAM,OAAO,CAAA;AAE7E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAA;AAQtD,QAAA,MAAM,aAAa,uBAA8B,CAAA;AAEjD,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC;IAAE,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,CAkDnE,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,SAAS,QAAO,MAAmC,CAAA;AAEhE,eAAe,aAAa,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/admin/components/utilities/Locale/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAyD,MAAM,OAAO,CAAA;AAE7E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAA;AAQtD,QAAA,MAAM,aAAa,uBAA8B,CAAA;AAEjD,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC;IAAE,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,CA0DnE,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,SAAS,QAAO,MAAmC,CAAA;AAEhE,eAAe,aAAa,CAAA"}
@@ -69,47 +69,58 @@ function _interop_require_wildcard(obj, nodeInterop) {
69
69
  const LocaleContext = /*#__PURE__*/ (0, _react.createContext)({});
70
70
  const LocaleProvider = ({ children })=>{
71
71
  const { localization } = (0, _Config.useConfig)();
72
- const { user } = (0, _Auth.useAuth)();
72
+ const { refreshPermissions, user } = (0, _Auth.useAuth)();
73
73
  const defaultLocale = localization && localization.defaultLocale ? localization.defaultLocale : 'en';
74
74
  const searchParams = (0, _SearchParams.useSearchParams)();
75
75
  const [localeCode, setLocaleCode] = (0, _react.useState)(searchParams?.locale || defaultLocale);
76
76
  const [locale, setLocale] = (0, _react.useState)(localization && (0, _findLocaleFromCode.findLocaleFromCode)(localization, localeCode));
77
77
  const { getPreference, setPreference } = (0, _Preferences.usePreferences)();
78
78
  const localeFromParams = searchParams.locale;
79
+ const handleLocaleChange = _react.default.useCallback((newLocaleCode)=>{
80
+ if (!localization) return;
81
+ if (localization.localeCodes.indexOf(newLocaleCode) > -1) {
82
+ setLocaleCode(newLocaleCode);
83
+ setLocale((0, _findLocaleFromCode.findLocaleFromCode)(localization, newLocaleCode));
84
+ if (user) {
85
+ void setPreference('locale', newLocaleCode);
86
+ void refreshPermissions({
87
+ locale: newLocaleCode
88
+ });
89
+ }
90
+ }
91
+ }, [
92
+ localization,
93
+ setPreference,
94
+ user,
95
+ refreshPermissions
96
+ ]);
79
97
  (0, _react.useEffect)(()=>{
80
98
  if (!localization) {
81
99
  return;
82
100
  }
83
101
  // set locale from search param
84
102
  if (localeFromParams && localization.localeCodes.indexOf(localeFromParams) > -1) {
85
- setLocaleCode(localeFromParams);
86
- setLocale((0, _findLocaleFromCode.findLocaleFromCode)(localization, localeFromParams));
87
- if (user) setPreference('locale', localeFromParams);
103
+ handleLocaleChange(localeFromParams);
88
104
  return;
89
105
  }
90
- (async ()=>{
106
+ // set locale from preferences or default
107
+ const initializeLocale = async ()=>{
91
108
  let preferenceLocale;
92
- let isPreferenceInConfig;
93
109
  if (user) {
94
110
  preferenceLocale = await getPreference('locale');
95
- isPreferenceInConfig = preferenceLocale && localization.localeCodes.indexOf(preferenceLocale) > -1;
96
- if (isPreferenceInConfig) {
97
- setLocaleCode(preferenceLocale);
98
- setLocale((0, _findLocaleFromCode.findLocaleFromCode)(localization, preferenceLocale));
99
- return;
100
- }
101
- setPreference('locale', defaultLocale);
111
+ handleLocaleChange(preferenceLocale);
112
+ return;
102
113
  }
103
- setLocaleCode(defaultLocale);
104
- setLocale((0, _findLocaleFromCode.findLocaleFromCode)(localization, defaultLocale));
105
- })();
114
+ handleLocaleChange(defaultLocale);
115
+ };
116
+ void initializeLocale();
106
117
  }, [
107
118
  defaultLocale,
108
119
  getPreference,
120
+ handleLocaleChange,
109
121
  localeFromParams,
110
- setPreference,
111
- user,
112
- localization
122
+ localization,
123
+ user
113
124
  ]);
114
125
  return /*#__PURE__*/ _react.default.createElement(LocaleContext.Provider, {
115
126
  value: locale
@@ -118,4 +129,4 @@ const LocaleProvider = ({ children })=>{
118
129
  const useLocale = ()=>(0, _react.useContext)(LocaleContext);
119
130
  const _default = LocaleContext;
120
131
 
121
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hZG1pbi9jb21wb25lbnRzL3V0aWxpdGllcy9Mb2NhbGUvaW5kZXgudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyBjcmVhdGVDb250ZXh0LCB1c2VDb250ZXh0LCB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5cbmltcG9ydCB0eXBlIHsgTG9jYWxlIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29uZmlnL3R5cGVzJ1xuXG5pbXBvcnQgeyBmaW5kTG9jYWxlRnJvbUNvZGUgfSBmcm9tICcuLi8uLi8uLi8uLi91dGlsaXRpZXMvZmluZExvY2FsZUZyb21Db2RlJ1xuaW1wb3J0IHsgdXNlQXV0aCB9IGZyb20gJy4uL0F1dGgnXG5pbXBvcnQgeyB1c2VDb25maWcgfSBmcm9tICcuLi9Db25maWcnXG5pbXBvcnQgeyB1c2VQcmVmZXJlbmNlcyB9IGZyb20gJy4uL1ByZWZlcmVuY2VzJ1xuaW1wb3J0IHsgdXNlU2VhcmNoUGFyYW1zIH0gZnJvbSAnLi4vU2VhcmNoUGFyYW1zJ1xuXG5jb25zdCBMb2NhbGVDb250ZXh0ID0gY3JlYXRlQ29udGV4dCh7fSBhcyBMb2NhbGUpXG5cbmV4cG9ydCBjb25zdCBMb2NhbGVQcm92aWRlcjogUmVhY3QuRkM8eyBjaGlsZHJlbj86IFJlYWN0LlJlYWN0Tm9kZSB9PiA9ICh7IGNoaWxkcmVuIH0pID0+IHtcbiAgY29uc3QgeyBsb2NhbGl6YXRpb24gfSA9IHVzZUNvbmZpZygpXG5cbiAgY29uc3QgeyB1c2VyIH0gPSB1c2VBdXRoKClcbiAgY29uc3QgZGVmYXVsdExvY2FsZSA9XG4gICAgbG9jYWxpemF0aW9uICYmIGxvY2FsaXphdGlvbi5kZWZhdWx0TG9jYWxlID8gbG9jYWxpemF0aW9uLmRlZmF1bHRMb2NhbGUgOiAnZW4nXG4gIGNvbnN0IHNlYXJjaFBhcmFtcyA9IHVzZVNlYXJjaFBhcmFtcygpXG4gIGNvbnN0IFtsb2NhbGVDb2RlLCBzZXRMb2NhbGVDb2RlXSA9IHVzZVN0YXRlPHN0cmluZz4oXG4gICAgKHNlYXJjaFBhcmFtcz8ubG9jYWxlIGFzIHN0cmluZykgfHwgZGVmYXVsdExvY2FsZSxcbiAgKVxuICBjb25zdCBbbG9jYWxlLCBzZXRMb2NhbGVdID0gdXNlU3RhdGU8TG9jYWxlIHwgbnVsbD4oXG4gICAgbG9jYWxpemF0aW9uICYmIGZpbmRMb2NhbGVGcm9tQ29kZShsb2NhbGl6YXRpb24sIGxvY2FsZUNvZGUpLFxuICApXG4gIGNvbnN0IHsgZ2V0UHJlZmVyZW5jZSwgc2V0UHJlZmVyZW5jZSB9ID0gdXNlUHJlZmVyZW5jZXMoKVxuICBjb25zdCBsb2NhbGVGcm9tUGFyYW1zID0gc2VhcmNoUGFyYW1zLmxvY2FsZVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFsb2NhbGl6YXRpb24pIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIC8vIHNldCBsb2NhbGUgZnJvbSBzZWFyY2ggcGFyYW1cbiAgICBpZiAobG9jYWxlRnJvbVBhcmFtcyAmJiBsb2NhbGl6YXRpb24ubG9jYWxlQ29kZXMuaW5kZXhPZihsb2NhbGVGcm9tUGFyYW1zIGFzIHN0cmluZykgPiAtMSkge1xuICAgICAgc2V0TG9jYWxlQ29kZShsb2NhbGVGcm9tUGFyYW1zIGFzIHN0cmluZylcbiAgICAgIHNldExvY2FsZShmaW5kTG9jYWxlRnJvbUNvZGUobG9jYWxpemF0aW9uLCBsb2NhbGVGcm9tUGFyYW1zIGFzIHN0cmluZykpXG4gICAgICBpZiAodXNlcikgc2V0UHJlZmVyZW5jZSgnbG9jYWxlJywgbG9jYWxlRnJvbVBhcmFtcylcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIC8vIHNldCBsb2NhbGUgZnJvbSBwcmVmZXJlbmNlcyBvciBkZWZhdWx0XG4gICAgOyhhc3luYyAoKSA9PiB7XG4gICAgICBsZXQgcHJlZmVyZW5jZUxvY2FsZTogc3RyaW5nXG4gICAgICBsZXQgaXNQcmVmZXJlbmNlSW5Db25maWc6IGJvb2xlYW5cbiAgICAgIGlmICh1c2VyKSB7XG4gICAgICAgIHByZWZlcmVuY2VMb2NhbGUgPSBhd2FpdCBnZXRQcmVmZXJlbmNlPHN0cmluZz4oJ2xvY2FsZScpXG4gICAgICAgIGlzUHJlZmVyZW5jZUluQ29uZmlnID1cbiAgICAgICAgICBwcmVmZXJlbmNlTG9jYWxlICYmIGxvY2FsaXphdGlvbi5sb2NhbGVDb2Rlcy5pbmRleE9mKHByZWZlcmVuY2VMb2NhbGUpID4gLTFcbiAgICAgICAgaWYgKGlzUHJlZmVyZW5jZUluQ29uZmlnKSB7XG4gICAgICAgICAgc2V0TG9jYWxlQ29kZShwcmVmZXJlbmNlTG9jYWxlKVxuICAgICAgICAgIHNldExvY2FsZShmaW5kTG9jYWxlRnJvbUNvZGUobG9jYWxpemF0aW9uLCBwcmVmZXJlbmNlTG9jYWxlKSlcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuICAgICAgICBzZXRQcmVmZXJlbmNlKCdsb2NhbGUnLCBkZWZhdWx0TG9jYWxlKVxuICAgICAgfVxuICAgICAgc2V0TG9jYWxlQ29kZShkZWZhdWx0TG9jYWxlKVxuICAgICAgc2V0TG9jYWxlKGZpbmRMb2NhbGVGcm9tQ29kZShsb2NhbGl6YXRpb24sIGRlZmF1bHRMb2NhbGUpKVxuICAgIH0pKClcbiAgfSwgW2RlZmF1bHRMb2NhbGUsIGdldFByZWZlcmVuY2UsIGxvY2FsZUZyb21QYXJhbXMsIHNldFByZWZlcmVuY2UsIHVzZXIsIGxvY2FsaXphdGlvbl0pXG5cbiAgcmV0dXJuIDxMb2NhbGVDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXtsb2NhbGV9PntjaGlsZHJlbn08L0xvY2FsZUNvbnRleHQuUHJvdmlkZXI+XG59XG5cbi8qKlxuICogQSBob29rIHRoYXQgcmV0dXJucyB0aGUgY3VycmVudCBsb2NhbGUgb2JqZWN0LlxuICovXG5leHBvcnQgY29uc3QgdXNlTG9jYWxlID0gKCk6IExvY2FsZSA9PiB1c2VDb250ZXh0KExvY2FsZUNvbnRleHQpXG5cbmV4cG9ydCBkZWZhdWx0IExvY2FsZUNvbnRleHRcbiJdLCJuYW1lcyI6WyJMb2NhbGVQcm92aWRlciIsInVzZUxvY2FsZSIsIkxvY2FsZUNvbnRleHQiLCJjcmVhdGVDb250ZXh0IiwiY2hpbGRyZW4iLCJsb2NhbGl6YXRpb24iLCJ1c2VDb25maWciLCJ1c2VyIiwidXNlQXV0aCIsImRlZmF1bHRMb2NhbGUiLCJzZWFyY2hQYXJhbXMiLCJ1c2VTZWFyY2hQYXJhbXMiLCJsb2NhbGVDb2RlIiwic2V0TG9jYWxlQ29kZSIsInVzZVN0YXRlIiwibG9jYWxlIiwic2V0TG9jYWxlIiwiZmluZExvY2FsZUZyb21Db2RlIiwiZ2V0UHJlZmVyZW5jZSIsInNldFByZWZlcmVuY2UiLCJ1c2VQcmVmZXJlbmNlcyIsImxvY2FsZUZyb21QYXJhbXMiLCJ1c2VFZmZlY3QiLCJsb2NhbGVDb2RlcyIsImluZGV4T2YiLCJwcmVmZXJlbmNlTG9jYWxlIiwiaXNQcmVmZXJlbmNlSW5Db25maWciLCJQcm92aWRlciIsInZhbHVlIiwidXNlQ29udGV4dCJdLCJyYW5nZU1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztJQVlhQSxjQUFjO2VBQWRBOztJQXlEYixPQUE0QjtlQUE1Qjs7SUFGYUMsU0FBUztlQUFUQTs7OytEQW5FeUQ7b0NBSW5DO3NCQUNYO3dCQUNFOzZCQUNLOzhCQUNDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFaEMsTUFBTUMsOEJBQWdCQyxJQUFBQSxvQkFBYSxFQUFDLENBQUM7QUFFOUIsTUFBTUgsaUJBQTJELENBQUMsRUFBRUksUUFBUSxFQUFFO0lBQ25GLE1BQU0sRUFBRUMsWUFBWSxFQUFFLEdBQUdDLElBQUFBLGlCQUFTO0lBRWxDLE1BQU0sRUFBRUMsSUFBSSxFQUFFLEdBQUdDLElBQUFBLGFBQU87SUFDeEIsTUFBTUMsZ0JBQ0pKLGdCQUFnQkEsYUFBYUksYUFBYSxHQUFHSixhQUFhSSxhQUFhLEdBQUc7SUFDNUUsTUFBTUMsZUFBZUMsSUFBQUEsNkJBQWU7SUFDcEMsTUFBTSxDQUFDQyxZQUFZQyxjQUFjLEdBQUdDLElBQUFBLGVBQVEsRUFDMUMsQUFBQ0osY0FBY0ssVUFBcUJOO0lBRXRDLE1BQU0sQ0FBQ00sUUFBUUMsVUFBVSxHQUFHRixJQUFBQSxlQUFRLEVBQ2xDVCxnQkFBZ0JZLElBQUFBLHNDQUFrQixFQUFDWixjQUFjTztJQUVuRCxNQUFNLEVBQUVNLGFBQWEsRUFBRUMsYUFBYSxFQUFFLEdBQUdDLElBQUFBLDJCQUFjO0lBQ3ZELE1BQU1DLG1CQUFtQlgsYUFBYUssTUFBTTtJQUU1Q08sSUFBQUEsZ0JBQVMsRUFBQztRQUNSLElBQUksQ0FBQ2pCLGNBQWM7WUFDakI7UUFDRjtRQUVBLCtCQUErQjtRQUMvQixJQUFJZ0Isb0JBQW9CaEIsYUFBYWtCLFdBQVcsQ0FBQ0MsT0FBTyxDQUFDSCxvQkFBOEIsQ0FBQyxHQUFHO1lBQ3pGUixjQUFjUTtZQUNkTCxVQUFVQyxJQUFBQSxzQ0FBa0IsRUFBQ1osY0FBY2dCO1lBQzNDLElBQUlkLE1BQU1ZLGNBQWMsVUFBVUU7WUFDbEM7UUFDRjtRQUdFLENBQUE7WUFDQSxJQUFJSTtZQUNKLElBQUlDO1lBQ0osSUFBSW5CLE1BQU07Z0JBQ1JrQixtQkFBbUIsTUFBTVAsY0FBc0I7Z0JBQy9DUSx1QkFDRUQsb0JBQW9CcEIsYUFBYWtCLFdBQVcsQ0FBQ0MsT0FBTyxDQUFDQyxvQkFBb0IsQ0FBQztnQkFDNUUsSUFBSUMsc0JBQXNCO29CQUN4QmIsY0FBY1k7b0JBQ2RULFVBQVVDLElBQUFBLHNDQUFrQixFQUFDWixjQUFjb0I7b0JBQzNDO2dCQUNGO2dCQUNBTixjQUFjLFVBQVVWO1lBQzFCO1lBQ0FJLGNBQWNKO1lBQ2RPLFVBQVVDLElBQUFBLHNDQUFrQixFQUFDWixjQUFjSTtRQUM3QyxDQUFBO0lBQ0YsR0FBRztRQUFDQTtRQUFlUztRQUFlRztRQUFrQkY7UUFBZVo7UUFBTUY7S0FBYTtJQUV0RixxQkFBTyw2QkFBQ0gsY0FBY3lCLFFBQVE7UUFBQ0MsT0FBT2I7T0FBU1g7QUFDakQ7QUFLTyxNQUFNSCxZQUFZLElBQWM0QixJQUFBQSxpQkFBVSxFQUFDM0I7TUFFbEQsV0FBZUEifQ==
132
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hZG1pbi9jb21wb25lbnRzL3V0aWxpdGllcy9Mb2NhbGUvaW5kZXgudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyBjcmVhdGVDb250ZXh0LCB1c2VDb250ZXh0LCB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5cbmltcG9ydCB0eXBlIHsgTG9jYWxlIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29uZmlnL3R5cGVzJ1xuXG5pbXBvcnQgeyBmaW5kTG9jYWxlRnJvbUNvZGUgfSBmcm9tICcuLi8uLi8uLi8uLi91dGlsaXRpZXMvZmluZExvY2FsZUZyb21Db2RlJ1xuaW1wb3J0IHsgdXNlQXV0aCB9IGZyb20gJy4uL0F1dGgnXG5pbXBvcnQgeyB1c2VDb25maWcgfSBmcm9tICcuLi9Db25maWcnXG5pbXBvcnQgeyB1c2VQcmVmZXJlbmNlcyB9IGZyb20gJy4uL1ByZWZlcmVuY2VzJ1xuaW1wb3J0IHsgdXNlU2VhcmNoUGFyYW1zIH0gZnJvbSAnLi4vU2VhcmNoUGFyYW1zJ1xuXG5jb25zdCBMb2NhbGVDb250ZXh0ID0gY3JlYXRlQ29udGV4dCh7fSBhcyBMb2NhbGUpXG5cbmV4cG9ydCBjb25zdCBMb2NhbGVQcm92aWRlcjogUmVhY3QuRkM8eyBjaGlsZHJlbj86IFJlYWN0LlJlYWN0Tm9kZSB9PiA9ICh7IGNoaWxkcmVuIH0pID0+IHtcbiAgY29uc3QgeyBsb2NhbGl6YXRpb24gfSA9IHVzZUNvbmZpZygpXG5cbiAgY29uc3QgeyByZWZyZXNoUGVybWlzc2lvbnMsIHVzZXIgfSA9IHVzZUF1dGgoKVxuICBjb25zdCBkZWZhdWx0TG9jYWxlID1cbiAgICBsb2NhbGl6YXRpb24gJiYgbG9jYWxpemF0aW9uLmRlZmF1bHRMb2NhbGUgPyBsb2NhbGl6YXRpb24uZGVmYXVsdExvY2FsZSA6ICdlbidcbiAgY29uc3Qgc2VhcmNoUGFyYW1zID0gdXNlU2VhcmNoUGFyYW1zKClcbiAgY29uc3QgW2xvY2FsZUNvZGUsIHNldExvY2FsZUNvZGVdID0gdXNlU3RhdGU8c3RyaW5nPihcbiAgICAoc2VhcmNoUGFyYW1zPy5sb2NhbGUgYXMgc3RyaW5nKSB8fCBkZWZhdWx0TG9jYWxlLFxuICApXG4gIGNvbnN0IFtsb2NhbGUsIHNldExvY2FsZV0gPSB1c2VTdGF0ZTxMb2NhbGUgfCBudWxsPihcbiAgICBsb2NhbGl6YXRpb24gJiYgZmluZExvY2FsZUZyb21Db2RlKGxvY2FsaXphdGlvbiwgbG9jYWxlQ29kZSksXG4gIClcbiAgY29uc3QgeyBnZXRQcmVmZXJlbmNlLCBzZXRQcmVmZXJlbmNlIH0gPSB1c2VQcmVmZXJlbmNlcygpXG4gIGNvbnN0IGxvY2FsZUZyb21QYXJhbXMgPSBzZWFyY2hQYXJhbXMubG9jYWxlXG5cbiAgY29uc3QgaGFuZGxlTG9jYWxlQ2hhbmdlID0gUmVhY3QudXNlQ2FsbGJhY2soXG4gICAgKG5ld0xvY2FsZUNvZGU6IHN0cmluZykgPT4ge1xuICAgICAgaWYgKCFsb2NhbGl6YXRpb24pIHJldHVyblxuXG4gICAgICBpZiAobG9jYWxpemF0aW9uLmxvY2FsZUNvZGVzLmluZGV4T2YobmV3TG9jYWxlQ29kZSkgPiAtMSkge1xuICAgICAgICBzZXRMb2NhbGVDb2RlKG5ld0xvY2FsZUNvZGUpXG4gICAgICAgIHNldExvY2FsZShmaW5kTG9jYWxlRnJvbUNvZGUobG9jYWxpemF0aW9uLCBuZXdMb2NhbGVDb2RlKSlcbiAgICAgICAgaWYgKHVzZXIpIHtcbiAgICAgICAgICB2b2lkIHNldFByZWZlcmVuY2UoJ2xvY2FsZScsIG5ld0xvY2FsZUNvZGUpXG4gICAgICAgICAgdm9pZCByZWZyZXNoUGVybWlzc2lvbnMoeyBsb2NhbGU6IG5ld0xvY2FsZUNvZGUgfSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgW2xvY2FsaXphdGlvbiwgc2V0UHJlZmVyZW5jZSwgdXNlciwgcmVmcmVzaFBlcm1pc3Npb25zXSxcbiAgKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFsb2NhbGl6YXRpb24pIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIC8vIHNldCBsb2NhbGUgZnJvbSBzZWFyY2ggcGFyYW1cbiAgICBpZiAobG9jYWxlRnJvbVBhcmFtcyAmJiBsb2NhbGl6YXRpb24ubG9jYWxlQ29kZXMuaW5kZXhPZihsb2NhbGVGcm9tUGFyYW1zIGFzIHN0cmluZykgPiAtMSkge1xuICAgICAgaGFuZGxlTG9jYWxlQ2hhbmdlKGxvY2FsZUZyb21QYXJhbXMgYXMgc3RyaW5nKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgLy8gc2V0IGxvY2FsZSBmcm9tIHByZWZlcmVuY2VzIG9yIGRlZmF1bHRcbiAgICBjb25zdCBpbml0aWFsaXplTG9jYWxlID0gYXN5bmMgKCkgPT4ge1xuICAgICAgbGV0IHByZWZlcmVuY2VMb2NhbGU6IHN0cmluZ1xuICAgICAgaWYgKHVzZXIpIHtcbiAgICAgICAgcHJlZmVyZW5jZUxvY2FsZSA9IGF3YWl0IGdldFByZWZlcmVuY2U8c3RyaW5nPignbG9jYWxlJylcbiAgICAgICAgaGFuZGxlTG9jYWxlQ2hhbmdlKHByZWZlcmVuY2VMb2NhbGUpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgaGFuZGxlTG9jYWxlQ2hhbmdlKGRlZmF1bHRMb2NhbGUpXG4gICAgfVxuXG4gICAgdm9pZCBpbml0aWFsaXplTG9jYWxlKClcbiAgfSwgW2RlZmF1bHRMb2NhbGUsIGdldFByZWZlcmVuY2UsIGhhbmRsZUxvY2FsZUNoYW5nZSwgbG9jYWxlRnJvbVBhcmFtcywgbG9jYWxpemF0aW9uLCB1c2VyXSlcblxuICByZXR1cm4gPExvY2FsZUNvbnRleHQuUHJvdmlkZXIgdmFsdWU9e2xvY2FsZX0+e2NoaWxkcmVufTwvTG9jYWxlQ29udGV4dC5Qcm92aWRlcj5cbn1cblxuLyoqXG4gKiBBIGhvb2sgdGhhdCByZXR1cm5zIHRoZSBjdXJyZW50IGxvY2FsZSBvYmplY3QuXG4gKi9cbmV4cG9ydCBjb25zdCB1c2VMb2NhbGUgPSAoKTogTG9jYWxlID0+IHVzZUNvbnRleHQoTG9jYWxlQ29udGV4dClcblxuZXhwb3J0IGRlZmF1bHQgTG9jYWxlQ29udGV4dFxuIl0sIm5hbWVzIjpbIkxvY2FsZVByb3ZpZGVyIiwidXNlTG9jYWxlIiwiTG9jYWxlQ29udGV4dCIsImNyZWF0ZUNvbnRleHQiLCJjaGlsZHJlbiIsImxvY2FsaXphdGlvbiIsInVzZUNvbmZpZyIsInJlZnJlc2hQZXJtaXNzaW9ucyIsInVzZXIiLCJ1c2VBdXRoIiwiZGVmYXVsdExvY2FsZSIsInNlYXJjaFBhcmFtcyIsInVzZVNlYXJjaFBhcmFtcyIsImxvY2FsZUNvZGUiLCJzZXRMb2NhbGVDb2RlIiwidXNlU3RhdGUiLCJsb2NhbGUiLCJzZXRMb2NhbGUiLCJmaW5kTG9jYWxlRnJvbUNvZGUiLCJnZXRQcmVmZXJlbmNlIiwic2V0UHJlZmVyZW5jZSIsInVzZVByZWZlcmVuY2VzIiwibG9jYWxlRnJvbVBhcmFtcyIsImhhbmRsZUxvY2FsZUNoYW5nZSIsIlJlYWN0IiwidXNlQ2FsbGJhY2siLCJuZXdMb2NhbGVDb2RlIiwibG9jYWxlQ29kZXMiLCJpbmRleE9mIiwidXNlRWZmZWN0IiwiaW5pdGlhbGl6ZUxvY2FsZSIsInByZWZlcmVuY2VMb2NhbGUiLCJQcm92aWRlciIsInZhbHVlIiwidXNlQ29udGV4dCJdLCJyYW5nZU1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7IiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0lBWWFBLGNBQWM7ZUFBZEE7O0lBaUViLE9BQTRCO2VBQTVCOztJQUZhQyxTQUFTO2VBQVRBOzs7K0RBM0V5RDtvQ0FJbkM7c0JBQ1g7d0JBQ0U7NkJBQ0s7OEJBQ0M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVoQyxNQUFNQyw4QkFBZ0JDLElBQUFBLG9CQUFhLEVBQUMsQ0FBQztBQUU5QixNQUFNSCxpQkFBMkQsQ0FBQyxFQUFFSSxRQUFRLEVBQUU7SUFDbkYsTUFBTSxFQUFFQyxZQUFZLEVBQUUsR0FBR0MsSUFBQUEsaUJBQVM7SUFFbEMsTUFBTSxFQUFFQyxrQkFBa0IsRUFBRUMsSUFBSSxFQUFFLEdBQUdDLElBQUFBLGFBQU87SUFDNUMsTUFBTUMsZ0JBQ0pMLGdCQUFnQkEsYUFBYUssYUFBYSxHQUFHTCxhQUFhSyxhQUFhLEdBQUc7SUFDNUUsTUFBTUMsZUFBZUMsSUFBQUEsNkJBQWU7SUFDcEMsTUFBTSxDQUFDQyxZQUFZQyxjQUFjLEdBQUdDLElBQUFBLGVBQVEsRUFDMUMsQUFBQ0osY0FBY0ssVUFBcUJOO0lBRXRDLE1BQU0sQ0FBQ00sUUFBUUMsVUFBVSxHQUFHRixJQUFBQSxlQUFRLEVBQ2xDVixnQkFBZ0JhLElBQUFBLHNDQUFrQixFQUFDYixjQUFjUTtJQUVuRCxNQUFNLEVBQUVNLGFBQWEsRUFBRUMsYUFBYSxFQUFFLEdBQUdDLElBQUFBLDJCQUFjO0lBQ3ZELE1BQU1DLG1CQUFtQlgsYUFBYUssTUFBTTtJQUU1QyxNQUFNTyxxQkFBcUJDLGNBQUssQ0FBQ0MsV0FBVyxDQUMxQyxDQUFDQztRQUNDLElBQUksQ0FBQ3JCLGNBQWM7UUFFbkIsSUFBSUEsYUFBYXNCLFdBQVcsQ0FBQ0MsT0FBTyxDQUFDRixpQkFBaUIsQ0FBQyxHQUFHO1lBQ3hEWixjQUFjWTtZQUNkVCxVQUFVQyxJQUFBQSxzQ0FBa0IsRUFBQ2IsY0FBY3FCO1lBQzNDLElBQUlsQixNQUFNO2dCQUNSLEtBQUtZLGNBQWMsVUFBVU07Z0JBQzdCLEtBQUtuQixtQkFBbUI7b0JBQUVTLFFBQVFVO2dCQUFjO1lBQ2xEO1FBQ0Y7SUFDRixHQUNBO1FBQUNyQjtRQUFjZTtRQUFlWjtRQUFNRDtLQUFtQjtJQUd6RHNCLElBQUFBLGdCQUFTLEVBQUM7UUFDUixJQUFJLENBQUN4QixjQUFjO1lBQ2pCO1FBQ0Y7UUFFQSwrQkFBK0I7UUFDL0IsSUFBSWlCLG9CQUFvQmpCLGFBQWFzQixXQUFXLENBQUNDLE9BQU8sQ0FBQ04sb0JBQThCLENBQUMsR0FBRztZQUN6RkMsbUJBQW1CRDtZQUNuQjtRQUNGO1FBRUEseUNBQXlDO1FBQ3pDLE1BQU1RLG1CQUFtQjtZQUN2QixJQUFJQztZQUNKLElBQUl2QixNQUFNO2dCQUNSdUIsbUJBQW1CLE1BQU1aLGNBQXNCO2dCQUMvQ0ksbUJBQW1CUTtnQkFDbkI7WUFDRjtZQUNBUixtQkFBbUJiO1FBQ3JCO1FBRUEsS0FBS29CO0lBQ1AsR0FBRztRQUFDcEI7UUFBZVM7UUFBZUk7UUFBb0JEO1FBQWtCakI7UUFBY0c7S0FBSztJQUUzRixxQkFBTyw2QkFBQ04sY0FBYzhCLFFBQVE7UUFBQ0MsT0FBT2pCO09BQVNaO0FBQ2pEO0FBS08sTUFBTUgsWUFBWSxJQUFjaUMsSUFBQUEsaUJBQVUsRUFBQ2hDO01BRWxELFdBQWVBIn0=
@@ -1,6 +1,7 @@
1
1
  import React from 'react';
2
2
  import type { UploadEdits } from '../../../../uploads/types';
3
3
  export type UploadEditsContext = {
4
+ resetUploadEdits: () => void;
4
5
  updateUploadEdits: (edits: UploadEdits) => void;
5
6
  uploadEdits: UploadEdits;
6
7
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/admin/components/utilities/UploadEdits/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAA;AAE5D,MAAM,MAAM,kBAAkB,GAAG;IAC/B,iBAAiB,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAA;IAC/C,WAAW,EAAE,WAAW,CAAA;CACzB,CAAA;AAOD,eAAO,MAAM,mBAAmB;;uBAW/B,CAAA;AAED,eAAO,MAAM,cAAc,QAAO,kBAA+C,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/admin/components/utilities/UploadEdits/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAA;AAE5D,MAAM,MAAM,kBAAkB,GAAG;IAC/B,gBAAgB,EAAE,MAAM,IAAI,CAAA;IAC5B,iBAAiB,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAA;IAC/C,WAAW,EAAE,WAAW,CAAA;CACzB,CAAA;AAQD,eAAO,MAAM,mBAAmB;;uBAmB/B,CAAA;AAED,eAAO,MAAM,cAAc,QAAO,kBAA+C,CAAA"}
@@ -23,11 +23,15 @@ function _interop_require_default(obj) {
23
23
  };
24
24
  }
25
25
  const Context = /*#__PURE__*/ _react.default.createContext({
26
+ resetUploadEdits: undefined,
26
27
  updateUploadEdits: undefined,
27
28
  uploadEdits: undefined
28
29
  });
29
30
  const UploadEditsProvider = ({ children })=>{
30
31
  const [uploadEdits, setUploadEdits] = _react.default.useState(undefined);
32
+ const resetUploadEdits = ()=>{
33
+ setUploadEdits({});
34
+ };
31
35
  const updateUploadEdits = (edits)=>{
32
36
  setUploadEdits((prevEdits)=>({
33
37
  ...prevEdits || {},
@@ -36,6 +40,7 @@ const UploadEditsProvider = ({ children })=>{
36
40
  };
37
41
  return /*#__PURE__*/ _react.default.createElement(Context.Provider, {
38
42
  value: {
43
+ resetUploadEdits,
39
44
  updateUploadEdits,
40
45
  uploadEdits
41
46
  }
@@ -43,4 +48,4 @@ const UploadEditsProvider = ({ children })=>{
43
48
  };
44
49
  const useUploadEdits = ()=>_react.default.useContext(Context);
45
50
 
46
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hZG1pbi9jb21wb25lbnRzL3V0aWxpdGllcy9VcGxvYWRFZGl0cy9pbmRleC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuXG5pbXBvcnQgdHlwZSB7IFVwbG9hZEVkaXRzIH0gZnJvbSAnLi4vLi4vLi4vLi4vdXBsb2Fkcy90eXBlcydcblxuZXhwb3J0IHR5cGUgVXBsb2FkRWRpdHNDb250ZXh0ID0ge1xuICB1cGRhdGVVcGxvYWRFZGl0czogKGVkaXRzOiBVcGxvYWRFZGl0cykgPT4gdm9pZFxuICB1cGxvYWRFZGl0czogVXBsb2FkRWRpdHNcbn1cblxuY29uc3QgQ29udGV4dCA9IFJlYWN0LmNyZWF0ZUNvbnRleHQ8VXBsb2FkRWRpdHNDb250ZXh0Pih7XG4gIHVwZGF0ZVVwbG9hZEVkaXRzOiB1bmRlZmluZWQsXG4gIHVwbG9hZEVkaXRzOiB1bmRlZmluZWQsXG59KVxuXG5leHBvcnQgY29uc3QgVXBsb2FkRWRpdHNQcm92aWRlciA9ICh7IGNoaWxkcmVuIH0pID0+IHtcbiAgY29uc3QgW3VwbG9hZEVkaXRzLCBzZXRVcGxvYWRFZGl0c10gPSBSZWFjdC51c2VTdGF0ZTxVcGxvYWRFZGl0cz4odW5kZWZpbmVkKVxuXG4gIGNvbnN0IHVwZGF0ZVVwbG9hZEVkaXRzID0gKGVkaXRzOiBVcGxvYWRFZGl0cykgPT4ge1xuICAgIHNldFVwbG9hZEVkaXRzKChwcmV2RWRpdHMpID0+ICh7XG4gICAgICAuLi4ocHJldkVkaXRzIHx8IHt9KSxcbiAgICAgIC4uLihlZGl0cyB8fCB7fSksXG4gICAgfSkpXG4gIH1cblxuICByZXR1cm4gPENvbnRleHQuUHJvdmlkZXIgdmFsdWU9e3sgdXBkYXRlVXBsb2FkRWRpdHMsIHVwbG9hZEVkaXRzIH19PntjaGlsZHJlbn08L0NvbnRleHQuUHJvdmlkZXI+XG59XG5cbmV4cG9ydCBjb25zdCB1c2VVcGxvYWRFZGl0cyA9ICgpOiBVcGxvYWRFZGl0c0NvbnRleHQgPT4gUmVhY3QudXNlQ29udGV4dChDb250ZXh0KVxuIl0sIm5hbWVzIjpbIlVwbG9hZEVkaXRzUHJvdmlkZXIiLCJ1c2VVcGxvYWRFZGl0cyIsIkNvbnRleHQiLCJSZWFjdCIsImNyZWF0ZUNvbnRleHQiLCJ1cGRhdGVVcGxvYWRFZGl0cyIsInVuZGVmaW5lZCIsInVwbG9hZEVkaXRzIiwiY2hpbGRyZW4iLCJzZXRVcGxvYWRFZGl0cyIsInVzZVN0YXRlIiwiZWRpdHMiLCJwcmV2RWRpdHMiLCJQcm92aWRlciIsInZhbHVlIiwidXNlQ29udGV4dCJdLCJyYW5nZU1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztJQWNhQSxtQkFBbUI7ZUFBbkJBOztJQWFBQyxjQUFjO2VBQWRBOzs7OERBM0JLOzs7Ozs7QUFTbEIsTUFBTUMsd0JBQVVDLGNBQUssQ0FBQ0MsYUFBYSxDQUFxQjtJQUN0REMsbUJBQW1CQztJQUNuQkMsYUFBYUQ7QUFDZjtBQUVPLE1BQU1OLHNCQUFzQixDQUFDLEVBQUVRLFFBQVEsRUFBRTtJQUM5QyxNQUFNLENBQUNELGFBQWFFLGVBQWUsR0FBR04sY0FBSyxDQUFDTyxRQUFRLENBQWNKO0lBRWxFLE1BQU1ELG9CQUFvQixDQUFDTTtRQUN6QkYsZUFBZSxDQUFDRyxZQUFlLENBQUE7Z0JBQzdCLEdBQUlBLGFBQWEsQ0FBQyxDQUFDO2dCQUNuQixHQUFJRCxTQUFTLENBQUMsQ0FBQztZQUNqQixDQUFBO0lBQ0Y7SUFFQSxxQkFBTyw2QkFBQ1QsUUFBUVcsUUFBUTtRQUFDQyxPQUFPO1lBQUVUO1lBQW1CRTtRQUFZO09BQUlDO0FBQ3ZFO0FBRU8sTUFBTVAsaUJBQWlCLElBQTBCRSxjQUFLLENBQUNZLFVBQVUsQ0FBQ2IifQ==
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hZG1pbi9jb21wb25lbnRzL3V0aWxpdGllcy9VcGxvYWRFZGl0cy9pbmRleC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuXG5pbXBvcnQgdHlwZSB7IFVwbG9hZEVkaXRzIH0gZnJvbSAnLi4vLi4vLi4vLi4vdXBsb2Fkcy90eXBlcydcblxuZXhwb3J0IHR5cGUgVXBsb2FkRWRpdHNDb250ZXh0ID0ge1xuICByZXNldFVwbG9hZEVkaXRzOiAoKSA9PiB2b2lkXG4gIHVwZGF0ZVVwbG9hZEVkaXRzOiAoZWRpdHM6IFVwbG9hZEVkaXRzKSA9PiB2b2lkXG4gIHVwbG9hZEVkaXRzOiBVcGxvYWRFZGl0c1xufVxuXG5jb25zdCBDb250ZXh0ID0gUmVhY3QuY3JlYXRlQ29udGV4dDxVcGxvYWRFZGl0c0NvbnRleHQ+KHtcbiAgcmVzZXRVcGxvYWRFZGl0czogdW5kZWZpbmVkLFxuICB1cGRhdGVVcGxvYWRFZGl0czogdW5kZWZpbmVkLFxuICB1cGxvYWRFZGl0czogdW5kZWZpbmVkLFxufSlcblxuZXhwb3J0IGNvbnN0IFVwbG9hZEVkaXRzUHJvdmlkZXIgPSAoeyBjaGlsZHJlbiB9KSA9PiB7XG4gIGNvbnN0IFt1cGxvYWRFZGl0cywgc2V0VXBsb2FkRWRpdHNdID0gUmVhY3QudXNlU3RhdGU8VXBsb2FkRWRpdHM+KHVuZGVmaW5lZClcblxuICBjb25zdCByZXNldFVwbG9hZEVkaXRzID0gKCkgPT4ge1xuICAgIHNldFVwbG9hZEVkaXRzKHt9KVxuICB9XG5cbiAgY29uc3QgdXBkYXRlVXBsb2FkRWRpdHMgPSAoZWRpdHM6IFVwbG9hZEVkaXRzKSA9PiB7XG4gICAgc2V0VXBsb2FkRWRpdHMoKHByZXZFZGl0cykgPT4gKHtcbiAgICAgIC4uLihwcmV2RWRpdHMgfHwge30pLFxuICAgICAgLi4uKGVkaXRzIHx8IHt9KSxcbiAgICB9KSlcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPENvbnRleHQuUHJvdmlkZXIgdmFsdWU9e3sgcmVzZXRVcGxvYWRFZGl0cywgdXBkYXRlVXBsb2FkRWRpdHMsIHVwbG9hZEVkaXRzIH19PlxuICAgICAge2NoaWxkcmVufVxuICAgIDwvQ29udGV4dC5Qcm92aWRlcj5cbiAgKVxufVxuXG5leHBvcnQgY29uc3QgdXNlVXBsb2FkRWRpdHMgPSAoKTogVXBsb2FkRWRpdHNDb250ZXh0ID0+IFJlYWN0LnVzZUNvbnRleHQoQ29udGV4dClcbiJdLCJuYW1lcyI6WyJVcGxvYWRFZGl0c1Byb3ZpZGVyIiwidXNlVXBsb2FkRWRpdHMiLCJDb250ZXh0IiwiUmVhY3QiLCJjcmVhdGVDb250ZXh0IiwicmVzZXRVcGxvYWRFZGl0cyIsInVuZGVmaW5lZCIsInVwZGF0ZVVwbG9hZEVkaXRzIiwidXBsb2FkRWRpdHMiLCJjaGlsZHJlbiIsInNldFVwbG9hZEVkaXRzIiwidXNlU3RhdGUiLCJlZGl0cyIsInByZXZFZGl0cyIsIlByb3ZpZGVyIiwidmFsdWUiLCJ1c2VDb250ZXh0Il0sInJhbmdlTWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7SUFnQmFBLG1CQUFtQjtlQUFuQkE7O0lBcUJBQyxjQUFjO2VBQWRBOzs7OERBckNLOzs7Ozs7QUFVbEIsTUFBTUMsd0JBQVVDLGNBQUssQ0FBQ0MsYUFBYSxDQUFxQjtJQUN0REMsa0JBQWtCQztJQUNsQkMsbUJBQW1CRDtJQUNuQkUsYUFBYUY7QUFDZjtBQUVPLE1BQU1OLHNCQUFzQixDQUFDLEVBQUVTLFFBQVEsRUFBRTtJQUM5QyxNQUFNLENBQUNELGFBQWFFLGVBQWUsR0FBR1AsY0FBSyxDQUFDUSxRQUFRLENBQWNMO0lBRWxFLE1BQU1ELG1CQUFtQjtRQUN2QkssZUFBZSxDQUFDO0lBQ2xCO0lBRUEsTUFBTUgsb0JBQW9CLENBQUNLO1FBQ3pCRixlQUFlLENBQUNHLFlBQWUsQ0FBQTtnQkFDN0IsR0FBSUEsYUFBYSxDQUFDLENBQUM7Z0JBQ25CLEdBQUlELFNBQVMsQ0FBQyxDQUFDO1lBQ2pCLENBQUE7SUFDRjtJQUVBLHFCQUNFLDZCQUFDVixRQUFRWSxRQUFRO1FBQUNDLE9BQU87WUFBRVY7WUFBa0JFO1lBQW1CQztRQUFZO09BQ3pFQztBQUdQO0FBRU8sTUFBTVIsaUJBQWlCLElBQTBCRSxjQUFLLENBQUNhLFVBQVUsQ0FBQ2QifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/admin/components/views/Unauthorized/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAQzB,QAAA,MAAM,YAAY,EAAE,KAAK,CAAC,EAsBzB,CAAA;AAED,eAAe,YAAY,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/admin/components/views/Unauthorized/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AASzB,QAAA,MAAM,YAAY,EAAE,KAAK,CAAC,EAuBzB,CAAA;AAED,eAAe,YAAY,CAAA"}
@@ -12,6 +12,7 @@ const _react = /*#__PURE__*/ _interop_require_default(require("react"));
12
12
  const _reacti18next = require("react-i18next");
13
13
  const _Button = /*#__PURE__*/ _interop_require_default(require("../../elements/Button"));
14
14
  const _Minimal = /*#__PURE__*/ _interop_require_default(require("../../templates/Minimal"));
15
+ const _Auth = require("../../utilities/Auth");
15
16
  const _Config = require("../../utilities/Config");
16
17
  const _Meta = /*#__PURE__*/ _interop_require_default(require("../../utilities/Meta"));
17
18
  function _interop_require_default(obj) {
@@ -22,6 +23,7 @@ function _interop_require_default(obj) {
22
23
  const Unauthorized = ()=>{
23
24
  const { t } = (0, _reacti18next.useTranslation)('general');
24
25
  const config = (0, _Config.useConfig)();
26
+ const { user } = (0, _Auth.useAuth)();
25
27
  const { admin: { logoutRoute }, routes: { admin } } = config;
26
28
  return /*#__PURE__*/ _react.default.createElement(_Minimal.default, {
27
29
  className: "unauthorized"
@@ -29,11 +31,11 @@ const Unauthorized = ()=>{
29
31
  description: t('error:unauthorized'),
30
32
  keywords: t('error:unauthorized'),
31
33
  title: t('error:unauthorized')
32
- }), /*#__PURE__*/ _react.default.createElement("h2", null, t('error:unauthorized')), /*#__PURE__*/ _react.default.createElement("p", null, t('error:notAllowedToAccessPage')), /*#__PURE__*/ _react.default.createElement("br", null), /*#__PURE__*/ _react.default.createElement(_Button.default, {
34
+ }), /*#__PURE__*/ _react.default.createElement("h2", null, user ? t('general:unauthorized') : t('error:unauthorized')), /*#__PURE__*/ _react.default.createElement("p", null, t('error:notAllowedToAccessPage')), /*#__PURE__*/ _react.default.createElement("br", null), /*#__PURE__*/ _react.default.createElement(_Button.default, {
33
35
  el: "link",
34
- to: `${admin}${logoutRoute}`
35
- }, t('authentication:logOut')));
36
+ to: `${admin}${user ? '' : logoutRoute}`
37
+ }, user ? t('general:backToDashboard') : t('authentication:logOut')));
36
38
  };
37
39
  const _default = Unauthorized;
38
40
 
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hZG1pbi9jb21wb25lbnRzL3ZpZXdzL1VuYXV0aG9yaXplZC9pbmRleC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tICdyZWFjdC1pMThuZXh0J1xuXG5pbXBvcnQgQnV0dG9uIGZyb20gJy4uLy4uL2VsZW1lbnRzL0J1dHRvbidcbmltcG9ydCBNaW5pbWFsVGVtcGxhdGUgZnJvbSAnLi4vLi4vdGVtcGxhdGVzL01pbmltYWwnXG5pbXBvcnQgeyB1c2VDb25maWcgfSBmcm9tICcuLi8uLi91dGlsaXRpZXMvQ29uZmlnJ1xuaW1wb3J0IE1ldGEgZnJvbSAnLi4vLi4vdXRpbGl0aWVzL01ldGEnXG5cbmNvbnN0IFVuYXV0aG9yaXplZDogUmVhY3QuRkMgPSAoKSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oJ2dlbmVyYWwnKVxuICBjb25zdCBjb25maWcgPSB1c2VDb25maWcoKVxuICBjb25zdCB7XG4gICAgYWRtaW46IHsgbG9nb3V0Um91dGUgfSxcbiAgICByb3V0ZXM6IHsgYWRtaW4gfSxcbiAgfSA9IGNvbmZpZ1xuICByZXR1cm4gKFxuICAgIDxNaW5pbWFsVGVtcGxhdGUgY2xhc3NOYW1lPVwidW5hdXRob3JpemVkXCI+XG4gICAgICA8TWV0YVxuICAgICAgICBkZXNjcmlwdGlvbj17dCgnZXJyb3I6dW5hdXRob3JpemVkJyl9XG4gICAgICAgIGtleXdvcmRzPXt0KCdlcnJvcjp1bmF1dGhvcml6ZWQnKX1cbiAgICAgICAgdGl0bGU9e3QoJ2Vycm9yOnVuYXV0aG9yaXplZCcpfVxuICAgICAgLz5cbiAgICAgIDxoMj57dCgnZXJyb3I6dW5hdXRob3JpemVkJyl9PC9oMj5cbiAgICAgIDxwPnt0KCdlcnJvcjpub3RBbGxvd2VkVG9BY2Nlc3NQYWdlJyl9PC9wPlxuICAgICAgPGJyIC8+XG4gICAgICA8QnV0dG9uIGVsPVwibGlua1wiIHRvPXtgJHthZG1pbn0ke2xvZ291dFJvdXRlfWB9PlxuICAgICAgICB7dCgnYXV0aGVudGljYXRpb246bG9nT3V0Jyl9XG4gICAgICA8L0J1dHRvbj5cbiAgICA8L01pbmltYWxUZW1wbGF0ZT5cbiAgKVxufVxuXG5leHBvcnQgZGVmYXVsdCBVbmF1dGhvcml6ZWRcbiJdLCJuYW1lcyI6WyJVbmF1dGhvcml6ZWQiLCJ0IiwidXNlVHJhbnNsYXRpb24iLCJjb25maWciLCJ1c2VDb25maWciLCJhZG1pbiIsImxvZ291dFJvdXRlIiwicm91dGVzIiwiTWluaW1hbFRlbXBsYXRlIiwiY2xhc3NOYW1lIiwiTWV0YSIsImRlc2NyaXB0aW9uIiwia2V5d29yZHMiLCJ0aXRsZSIsImgyIiwicCIsImJyIiwiQnV0dG9uIiwiZWwiLCJ0byJdLCJyYW5nZU1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7IiwibWFwcGluZ3MiOiI7Ozs7K0JBZ0NBOzs7ZUFBQTs7OzhEQWhDa0I7OEJBQ2E7K0RBRVo7Z0VBQ1M7d0JBQ0Y7NkRBQ1Q7Ozs7OztBQUVqQixNQUFNQSxlQUF5QjtJQUM3QixNQUFNLEVBQUVDLENBQUMsRUFBRSxHQUFHQyxJQUFBQSw0QkFBYyxFQUFDO0lBQzdCLE1BQU1DLFNBQVNDLElBQUFBLGlCQUFTO0lBQ3hCLE1BQU0sRUFDSkMsT0FBTyxFQUFFQyxXQUFXLEVBQUUsRUFDdEJDLFFBQVEsRUFBRUYsS0FBSyxFQUFFLEVBQ2xCLEdBQUdGO0lBQ0oscUJBQ0UsNkJBQUNLLGdCQUFlO1FBQUNDLFdBQVU7cUJBQ3pCLDZCQUFDQyxhQUFJO1FBQ0hDLGFBQWFWLEVBQUU7UUFDZlcsVUFBVVgsRUFBRTtRQUNaWSxPQUFPWixFQUFFO3NCQUVYLDZCQUFDYSxZQUFJYixFQUFFLHNDQUNQLDZCQUFDYyxXQUFHZCxFQUFFLGdEQUNOLDZCQUFDZSwyQkFDRCw2QkFBQ0MsZUFBTTtRQUFDQyxJQUFHO1FBQU9DLElBQUksQ0FBQyxFQUFFZCxNQUFNLEVBQUVDLFlBQVksQ0FBQztPQUMzQ0wsRUFBRTtBQUlYO01BRUEsV0FBZUQifQ==
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hZG1pbi9jb21wb25lbnRzL3ZpZXdzL1VuYXV0aG9yaXplZC9pbmRleC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tICdyZWFjdC1pMThuZXh0J1xuXG5pbXBvcnQgQnV0dG9uIGZyb20gJy4uLy4uL2VsZW1lbnRzL0J1dHRvbidcbmltcG9ydCBNaW5pbWFsVGVtcGxhdGUgZnJvbSAnLi4vLi4vdGVtcGxhdGVzL01pbmltYWwnXG5pbXBvcnQgeyB1c2VBdXRoIH0gZnJvbSAnLi4vLi4vdXRpbGl0aWVzL0F1dGgnXG5pbXBvcnQgeyB1c2VDb25maWcgfSBmcm9tICcuLi8uLi91dGlsaXRpZXMvQ29uZmlnJ1xuaW1wb3J0IE1ldGEgZnJvbSAnLi4vLi4vdXRpbGl0aWVzL01ldGEnXG5cbmNvbnN0IFVuYXV0aG9yaXplZDogUmVhY3QuRkMgPSAoKSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oJ2dlbmVyYWwnKVxuICBjb25zdCBjb25maWcgPSB1c2VDb25maWcoKVxuICBjb25zdCB7IHVzZXIgfSA9IHVzZUF1dGgoKVxuICBjb25zdCB7XG4gICAgYWRtaW46IHsgbG9nb3V0Um91dGUgfSxcbiAgICByb3V0ZXM6IHsgYWRtaW4gfSxcbiAgfSA9IGNvbmZpZ1xuICByZXR1cm4gKFxuICAgIDxNaW5pbWFsVGVtcGxhdGUgY2xhc3NOYW1lPVwidW5hdXRob3JpemVkXCI+XG4gICAgICA8TWV0YVxuICAgICAgICBkZXNjcmlwdGlvbj17dCgnZXJyb3I6dW5hdXRob3JpemVkJyl9XG4gICAgICAgIGtleXdvcmRzPXt0KCdlcnJvcjp1bmF1dGhvcml6ZWQnKX1cbiAgICAgICAgdGl0bGU9e3QoJ2Vycm9yOnVuYXV0aG9yaXplZCcpfVxuICAgICAgLz5cbiAgICAgIDxoMj57dXNlciA/IHQoJ2dlbmVyYWw6dW5hdXRob3JpemVkJykgOiB0KCdlcnJvcjp1bmF1dGhvcml6ZWQnKX08L2gyPlxuICAgICAgPHA+e3QoJ2Vycm9yOm5vdEFsbG93ZWRUb0FjY2Vzc1BhZ2UnKX08L3A+XG4gICAgICA8YnIgLz5cbiAgICAgIDxCdXR0b24gZWw9XCJsaW5rXCIgdG89e2Ake2FkbWlufSR7dXNlciA/ICcnIDogbG9nb3V0Um91dGV9YH0+XG4gICAgICAgIHt1c2VyID8gdCgnZ2VuZXJhbDpiYWNrVG9EYXNoYm9hcmQnKSA6IHQoJ2F1dGhlbnRpY2F0aW9uOmxvZ091dCcpfVxuICAgICAgPC9CdXR0b24+XG4gICAgPC9NaW5pbWFsVGVtcGxhdGU+XG4gIClcbn1cblxuZXhwb3J0IGRlZmF1bHQgVW5hdXRob3JpemVkXG4iXSwibmFtZXMiOlsiVW5hdXRob3JpemVkIiwidCIsInVzZVRyYW5zbGF0aW9uIiwiY29uZmlnIiwidXNlQ29uZmlnIiwidXNlciIsInVzZUF1dGgiLCJhZG1pbiIsImxvZ291dFJvdXRlIiwicm91dGVzIiwiTWluaW1hbFRlbXBsYXRlIiwiY2xhc3NOYW1lIiwiTWV0YSIsImRlc2NyaXB0aW9uIiwia2V5d29yZHMiLCJ0aXRsZSIsImgyIiwicCIsImJyIiwiQnV0dG9uIiwiZWwiLCJ0byJdLCJyYW5nZU1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsiLCJtYXBwaW5ncyI6Ijs7OzsrQkFrQ0E7OztlQUFBOzs7OERBbENrQjs4QkFDYTsrREFFWjtnRUFDUztzQkFDSjt3QkFDRTs2REFDVDs7Ozs7O0FBRWpCLE1BQU1BLGVBQXlCO0lBQzdCLE1BQU0sRUFBRUMsQ0FBQyxFQUFFLEdBQUdDLElBQUFBLDRCQUFjLEVBQUM7SUFDN0IsTUFBTUMsU0FBU0MsSUFBQUEsaUJBQVM7SUFDeEIsTUFBTSxFQUFFQyxJQUFJLEVBQUUsR0FBR0MsSUFBQUEsYUFBTztJQUN4QixNQUFNLEVBQ0pDLE9BQU8sRUFBRUMsV0FBVyxFQUFFLEVBQ3RCQyxRQUFRLEVBQUVGLEtBQUssRUFBRSxFQUNsQixHQUFHSjtJQUNKLHFCQUNFLDZCQUFDTyxnQkFBZTtRQUFDQyxXQUFVO3FCQUN6Qiw2QkFBQ0MsYUFBSTtRQUNIQyxhQUFhWixFQUFFO1FBQ2ZhLFVBQVViLEVBQUU7UUFDWmMsT0FBT2QsRUFBRTtzQkFFWCw2QkFBQ2UsWUFBSVgsT0FBT0osRUFBRSwwQkFBMEJBLEVBQUUsc0NBQzFDLDZCQUFDZ0IsV0FBR2hCLEVBQUUsZ0RBQ04sNkJBQUNpQiwyQkFDRCw2QkFBQ0MsZUFBTTtRQUFDQyxJQUFHO1FBQU9DLElBQUksQ0FBQyxFQUFFZCxNQUFNLEVBQUVGLE9BQU8sS0FBS0csWUFBWSxDQUFDO09BQ3ZESCxPQUFPSixFQUFFLDZCQUE2QkEsRUFBRTtBQUlqRDtNQUVBLFdBQWVEIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../src/admin/components/views/collections/Edit/Upload/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA2C,MAAM,OAAO,CAAA;AAG/D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAepC,OAAO,cAAc,CAAA;AAGrB,eAAO,MAAM,cAAc,gBAAgB,CAAA;AAC3C,eAAO,MAAM,eAAe,kBAAkB,CAAA;AAU9C,eAAO,MAAM,aAAa;;;uBAgBzB,CAAA;AAED,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CA4JlC,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../src/admin/components/views/collections/Edit/Upload/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmD,MAAM,OAAO,CAAA;AAKvE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAiBpC,OAAO,cAAc,CAAA;AAGrB,eAAO,MAAM,cAAc,gBAAgB,CAAA;AAC3C,eAAO,MAAM,eAAe,kBAAkB,CAAA;AAU9C,eAAO,MAAM,aAAa;;;uBAgBzB,CAAA;AAED,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAmQlC,CAAA"}