single-scripture-rcl 3.4.29 → 3.4.31

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.
@@ -53,14 +53,13 @@ import "core-js/modules/es.object.get-prototype-of.js";
53
53
  import "core-js/modules/es.object.set-prototype-of.js";
54
54
  import "core-js/modules/es.array.reverse.js";
55
55
  // @ts-ignore
56
- import { useEffect, useState } from 'react';
56
+ import { useEffect, useRef, useState } from 'react';
57
57
  import { core } from 'scripture-resources-rcl';
58
58
  import { CONTENT_NOT_FOUND_ERROR, ERROR_STATE, INITIALIZED_STATE, INVALID_MANIFEST_ERROR, LOADING_STATE, MANIFEST_NOT_LOADED_ERROR, SCRIPTURE_NOT_LOADED_ERROR } from 'translation-helps-rcl';
59
- import useDeepCompareEffect from 'use-deep-compare-effect';
60
59
  import { getVerses } from 'bible-reference-range';
61
60
  import { isEqual } from '@react-hookz/deep-equal';
62
61
  import { AlignmentHelpers, UsfmFileConversionHelpers } from 'word-aligner-rcl';
63
- import { delay, fetchBibleBookCore, verseObjectsHaveWords } from '../utils';
62
+ import { fetchBibleBookCore, verseObjectsHaveWords } from '../utils';
64
63
  import { cleanupVerseObjects, getBookNameFromUsfmFileName, getResourceLink, parseResourceLink } from '../utils/ScriptureSettings';
65
64
  import { BookFetchParams, BookObjectsType, ScriptureResourceType, ScriptureReferenceType, ServerConfigType, VerseObjectsType, VerseReferencesType } from '../types';
66
65
  import { parseResourceManifest } from './parseResourceManifest';
@@ -129,11 +128,11 @@ export function useScripture(_ref2) {
129
128
  resourceLink_ = _ref2.resourceLink,
130
129
  _ref2$wholeBook = _ref2.wholeBook,
131
130
  wholeBook = _ref2$wholeBook === void 0 ? false : _ref2$wholeBook;
131
+ var fetching = useRef(false);
132
132
  var _useState = useState({
133
133
  bibleUsfm: null,
134
134
  bookObjects: null,
135
135
  fetchCount: 0,
136
- fetched: false,
137
136
  fetchedBook: '',
138
137
  fetchParams: null,
139
138
  ignoreSha: null,
@@ -168,14 +167,12 @@ export function useScripture(_ref2) {
168
167
  var bibleUsfm = _state.bibleUsfm,
169
168
  bookObjects = _state.bookObjects,
170
169
  fetchCount = _state.fetchCount,
171
- fetched = _state.fetched,
172
170
  fetchedBook = _state.fetchedBook,
173
171
  fetchParams = _state.fetchParams,
174
172
  ignoreSha = _state.ignoreSha,
175
173
  initialized = _state.initialized,
176
174
  resourceState = _state.resourceState,
177
175
  versesForRef = _state.versesForRef;
178
- var fetchedResources = resourceState === null || resourceState === void 0 ? void 0 : resourceState.fetchedResources;
179
176
  function setState(newState) {
180
177
  setState_(function (prevState) {
181
178
  return _objectSpread(_objectSpread({}, prevState), newState);
@@ -217,6 +214,10 @@ export function useScripture(_ref2) {
217
214
  resourceLink: resourceLink
218
215
  };
219
216
  if (!isEqual(newFetchParams, fetchParams)) {
217
+ console.log("useScripture - parameters changed", {
218
+ newFetchParams: newFetchParams,
219
+ fetchParams: fetchParams
220
+ });
220
221
  setState({
221
222
  fetchParams: newFetchParams,
222
223
  fetched: false,
@@ -245,26 +246,35 @@ export function useScripture(_ref2) {
245
246
  _resourceState$resour2,
246
247
  _fetchCount,
247
248
  response,
249
+ fetchedResources,
248
250
  _args = arguments;
249
251
  return _regeneratorRuntime().wrap(function _callee$(_context) {
250
252
  while (1) switch (_context.prev = _context.next) {
251
253
  case 0:
252
254
  ignoreSha = _args.length > 1 && _args[1] !== undefined ? _args[1] : null;
253
255
  _context.prev = 1;
256
+ if (!fetching.current) {
257
+ _context.next = 5;
258
+ break;
259
+ }
260
+ console.log("useScripture.fetchBook() - already fetching", fetchParams);
261
+ return _context.abrupt("return");
262
+ case 5:
254
263
  fetchLink = "".concat(fetchParams === null || fetchParams === void 0 ? void 0 : fetchParams.resourceLink, "/").concat(fetchParams === null || fetchParams === void 0 || (_fetchParams$referenc2 = fetchParams.reference) === null || _fetchParams$referenc2 === void 0 ? void 0 : _fetchParams$referenc2.bookId);
255
264
  if (!ignoreSha) {
256
- _context.next = 8;
265
+ _context.next = 11;
257
266
  break;
258
267
  }
259
268
  fetchedShaMatchesIgnoreSha = ignoreSha === (resourceState === null || resourceState === void 0 ? void 0 : resourceState.sha); // we will reload if ignoreSha given and it matches current sha
260
269
  if (!(fetchLink === (resourceState === null || resourceState === void 0 || (_resourceState$resour = resourceState.resource) === null || _resourceState$resour === void 0 ? void 0 : _resourceState$resour.resourceLink) && !fetchedShaMatchesIgnoreSha)) {
261
- _context.next = 8;
270
+ _context.next = 11;
262
271
  break;
263
272
  }
264
273
  // see if we already fetched this
265
274
  console.log("useScripture.fetchBook() - Already fetching resourceLink ".concat(resourceState === null || resourceState === void 0 || (_resourceState$resour2 = resourceState.resource) === null || _resourceState$resour2 === void 0 ? void 0 : _resourceState$resour2.resourceLink, " and ignoreSha=").concat(ignoreSha), fetchParams);
266
275
  return _context.abrupt("return");
267
- case 8:
276
+ case 11:
277
+ fetching.current = true; // block other fetches while running
268
278
  _fetchCount = fetchCount + 1;
269
279
  console.log("useScripture.fetchBook() - FETCHING bible ".concat(resource_ === null || resource_ === void 0 ? void 0 : resource_.projectId, " resourceLink is now ").concat(fetchParams === null || fetchParams === void 0 ? void 0 : fetchParams.resourceLink, " and ignoreSha=").concat(ignoreSha), fetchParams);
270
280
  setState({
@@ -275,12 +285,12 @@ export function useScripture(_ref2) {
275
285
  loadingResource: true
276
286
  }
277
287
  });
278
- _context.next = 13;
288
+ _context.next = 17;
279
289
  return fetchBibleBookCore(fetchParams);
280
- case 13:
290
+ case 17:
281
291
  response = _context.sent;
282
292
  if (!(!response || response !== null && response !== void 0 && response.error)) {
283
- _context.next = 18;
293
+ _context.next = 23;
284
294
  break;
285
295
  }
286
296
  console.log("useScripture.warn() -Error FETCHING bible ".concat(resource_ === null || resource_ === void 0 ? void 0 : resource_.projectId), response);
@@ -290,22 +300,19 @@ export function useScripture(_ref2) {
290
300
  response: response
291
301
  }
292
302
  });
303
+ fetching.current = false;
293
304
  return _context.abrupt("return");
294
- case 18:
305
+ case 23:
295
306
  console.log("useScripture.fetchBook() - LOADED bible book ".concat(resource_ === null || resource_ === void 0 ? void 0 : resource_.projectId, " resourceLink is now ").concat(fetchParams === null || fetchParams === void 0 ? void 0 : fetchParams.resourceLink, "}"), fetchParams);
296
- setState({
297
- resourceState: {
298
- loadingResource: false,
299
- fetchedResources: _objectSpread(_objectSpread({}, response), {}, {
300
- fetchCount: _fetchCount,
301
- reference: fetchParams === null || fetchParams === void 0 ? void 0 : fetchParams.reference
302
- })
303
- }
307
+ fetchedResources = _objectSpread(_objectSpread({}, response), {}, {
308
+ fetchCount: _fetchCount,
309
+ reference: fetchParams === null || fetchParams === void 0 ? void 0 : fetchParams.reference
304
310
  });
305
- _context.next = 26;
311
+ validateResponse(fetchedResources, fetchParams);
312
+ _context.next = 33;
306
313
  break;
307
- case 22:
308
- _context.prev = 22;
314
+ case 28:
315
+ _context.prev = 28;
309
316
  _context.t0 = _context["catch"](1);
310
317
  console.error("useScripture.fetchBook() - hard error loading resource", fetchParams, _context.t0);
311
318
  setState({
@@ -314,11 +321,12 @@ export function useScripture(_ref2) {
314
321
  resource: null
315
322
  }
316
323
  });
317
- case 26:
324
+ fetching.current = false;
325
+ case 33:
318
326
  case "end":
319
327
  return _context.stop();
320
328
  }
321
- }, _callee, null, [[1, 22]]);
329
+ }, _callee, null, [[1, 28]]);
322
330
  }));
323
331
  return _fetchBook.apply(this, arguments);
324
332
  }
@@ -329,7 +337,7 @@ export function useScripture(_ref2) {
329
337
  /**
330
338
  * make sure last fetch response is for current book/branch
331
339
  */
332
- function validateResponse() {
340
+ function validateResponse(fetchedResources, fetchParams) {
333
341
  var _fetchedBook$toLowerC;
334
342
  var isSameBook = false;
335
343
  // @ts-ignore
@@ -386,25 +394,15 @@ export function useScripture(_ref2) {
386
394
  sha: sha,
387
395
  url: url
388
396
  },
397
+ unprocessed: false,
389
398
  versesForRef: _versesForRef2
390
399
  };
391
400
  setState(newState);
401
+ fetching.current = false;
392
402
  }
393
403
  }
394
- useDeepCompareEffect(function () {
395
- // validate response to make sure from latest request
396
- if (readyForFetch && fetchedResources) {
397
- if (!fetched && (fetchedResources === null || fetchedResources === void 0 ? void 0 : fetchedResources.fetchCount) === fetchCount) {
398
- delay(500).then(function () {
399
- validateResponse();
400
- });
401
- }
402
- }
403
- }, [{
404
- readyForFetch: readyForFetch,
405
- fetchedResources: fetchedResources
406
- }]);
407
404
  var resource = resourceState === null || resourceState === void 0 ? void 0 : resourceState.resource;
405
+ var unprocessed = resourceState === null || resourceState === void 0 ? void 0 : resourceState.unprocessed;
408
406
  var _parseResourceManifes = parseResourceManifest(resource),
409
407
  title = _parseResourceManifes.title,
410
408
  version = _parseResourceManifes.version;
@@ -413,7 +411,7 @@ export function useScripture(_ref2) {
413
411
  var scriptureNotLoadedError = !(resourceState !== null && resourceState !== void 0 && resourceState.bookObjects);
414
412
  var manifestNotFoundError = !(resource !== null && resource !== void 0 && resource.manifest);
415
413
  var invalidManifestError = !title || !version || !languageId;
416
- var error = readyForFetch && initialized && !loading && (contentNotFoundError || scriptureNotLoadedError || manifestNotFoundError || invalidManifestError);
414
+ var error = readyForFetch && initialized && !loading && !unprocessed && (contentNotFoundError || scriptureNotLoadedError || manifestNotFoundError || invalidManifestError);
417
415
  var resourceStatus = (_resourceStatus = {}, _defineProperty(_resourceStatus, LOADING_STATE, loading), _defineProperty(_resourceStatus, CONTENT_NOT_FOUND_ERROR, contentNotFoundError), _defineProperty(_resourceStatus, SCRIPTURE_NOT_LOADED_ERROR, scriptureNotLoadedError), _defineProperty(_resourceStatus, MANIFEST_NOT_LOADED_ERROR, manifestNotFoundError), _defineProperty(_resourceStatus, INVALID_MANIFEST_ERROR, invalidManifestError), _defineProperty(_resourceStatus, ERROR_STATE, error), _defineProperty(_resourceStatus, INITIALIZED_STATE, initialized), _resourceStatus);
418
416
  useEffect(function () {
419
417
  if (!readyForFetch) {
@@ -600,4 +598,4 @@ export function useScripture(_ref2) {
600
598
  versesForRef: versesForRef
601
599
  };
602
600
  }
603
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVnZW5lcmF0b3JSdW50aW1lIiwiZSIsInQiLCJyIiwiT2JqZWN0IiwicHJvdG90eXBlIiwibiIsImhhc093blByb3BlcnR5IiwibyIsImRlZmluZVByb3BlcnR5IiwidmFsdWUiLCJpIiwiU3ltYm9sIiwiYSIsIml0ZXJhdG9yIiwiYyIsImFzeW5jSXRlcmF0b3IiLCJ1IiwidG9TdHJpbmdUYWciLCJkZWZpbmUiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJ3cmFwIiwiR2VuZXJhdG9yIiwiY3JlYXRlIiwiQ29udGV4dCIsIm1ha2VJbnZva2VNZXRob2QiLCJ0cnlDYXRjaCIsInR5cGUiLCJhcmciLCJjYWxsIiwiaCIsImwiLCJmIiwicyIsInkiLCJHZW5lcmF0b3JGdW5jdGlvbiIsIkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlIiwicCIsImQiLCJnZXRQcm90b3R5cGVPZiIsInYiLCJ2YWx1ZXMiLCJnIiwiZGVmaW5lSXRlcmF0b3JNZXRob2RzIiwiZm9yRWFjaCIsIl9pbnZva2UiLCJBc3luY0l0ZXJhdG9yIiwiaW52b2tlIiwiX3R5cGVvZiIsInJlc29sdmUiLCJfX2F3YWl0IiwidGhlbiIsImNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnIiwiRXJyb3IiLCJkb25lIiwibWV0aG9kIiwiZGVsZWdhdGUiLCJtYXliZUludm9rZURlbGVnYXRlIiwic2VudCIsIl9zZW50IiwiZGlzcGF0Y2hFeGNlcHRpb24iLCJhYnJ1cHQiLCJUeXBlRXJyb3IiLCJyZXN1bHROYW1lIiwibmV4dCIsIm5leHRMb2MiLCJwdXNoVHJ5RW50cnkiLCJ0cnlMb2MiLCJjYXRjaExvYyIsImZpbmFsbHlMb2MiLCJhZnRlckxvYyIsInRyeUVudHJpZXMiLCJwdXNoIiwicmVzZXRUcnlFbnRyeSIsImNvbXBsZXRpb24iLCJyZXNldCIsImlzTmFOIiwibGVuZ3RoIiwiZGlzcGxheU5hbWUiLCJpc0dlbmVyYXRvckZ1bmN0aW9uIiwiY29uc3RydWN0b3IiLCJuYW1lIiwibWFyayIsInNldFByb3RvdHlwZU9mIiwiX19wcm90b19fIiwiYXdyYXAiLCJhc3luYyIsIlByb21pc2UiLCJrZXlzIiwicmV2ZXJzZSIsInBvcCIsInByZXYiLCJjaGFyQXQiLCJzbGljZSIsInN0b3AiLCJydmFsIiwiaGFuZGxlIiwiY29tcGxldGUiLCJmaW5pc2giLCJfY2F0Y2giLCJkZWxlZ2F0ZVlpZWxkIiwiX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIiLCJhbGxvd0FycmF5TGlrZSIsIml0IiwiQXJyYXkiLCJpc0FycmF5IiwiX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IiwiRiIsIl9lIiwibm9ybWFsQ29tcGxldGlvbiIsImRpZEVyciIsImVyciIsInN0ZXAiLCJfZTIiLCJhc3luY0dlbmVyYXRvclN0ZXAiLCJnZW4iLCJyZWplY3QiLCJfbmV4dCIsIl90aHJvdyIsImtleSIsImluZm8iLCJlcnJvciIsIl9hc3luY1RvR2VuZXJhdG9yIiwiZm4iLCJzZWxmIiwiYXJncyIsImFyZ3VtZW50cyIsImFwcGx5IiwidW5kZWZpbmVkIiwib3duS2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsIl9vYmplY3RTcHJlYWQiLCJfZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsIm9iaiIsIl90b1Byb3BlcnR5S2V5IiwiX3RvUHJpbWl0aXZlIiwiU3RyaW5nIiwiaW5wdXQiLCJoaW50IiwicHJpbSIsInRvUHJpbWl0aXZlIiwicmVzIiwiTnVtYmVyIiwiX3NsaWNlZFRvQXJyYXkiLCJhcnIiLCJfYXJyYXlXaXRoSG9sZXMiLCJfaXRlcmFibGVUb0FycmF5TGltaXQiLCJfbm9uSXRlcmFibGVSZXN0IiwibWluTGVuIiwiX2FycmF5TGlrZVRvQXJyYXkiLCJ0b1N0cmluZyIsImZyb20iLCJ0ZXN0IiwibGVuIiwiYXJyMiIsInVzZUVmZmVjdCIsInVzZVN0YXRlIiwiY29yZSIsIkNPTlRFTlRfTk9UX0ZPVU5EX0VSUk9SIiwiRVJST1JfU1RBVEUiLCJJTklUSUFMSVpFRF9TVEFURSIsIklOVkFMSURfTUFOSUZFU1RfRVJST1IiLCJMT0FESU5HX1NUQVRFIiwiTUFOSUZFU1RfTk9UX0xPQURFRF9FUlJPUiIsIlNDUklQVFVSRV9OT1RfTE9BREVEX0VSUk9SIiwidXNlRGVlcENvbXBhcmVFZmZlY3QiLCJnZXRWZXJzZXMiLCJpc0VxdWFsIiwiQWxpZ25tZW50SGVscGVycyIsIlVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMiLCJkZWxheSIsImZldGNoQmlibGVCb29rQ29yZSIsInZlcnNlT2JqZWN0c0hhdmVXb3JkcyIsImNsZWFudXBWZXJzZU9iamVjdHMiLCJnZXRCb29rTmFtZUZyb21Vc2ZtRmlsZU5hbWUiLCJnZXRSZXNvdXJjZUxpbmsiLCJwYXJzZVJlc291cmNlTGluayIsIkJvb2tGZXRjaFBhcmFtcyIsIkJvb2tPYmplY3RzVHlwZSIsIlNjcmlwdHVyZVJlc291cmNlVHlwZSIsIlNjcmlwdHVyZVJlZmVyZW5jZVR5cGUiLCJTZXJ2ZXJDb25maWdUeXBlIiwiVmVyc2VPYmplY3RzVHlwZSIsIlZlcnNlUmVmZXJlbmNlc1R5cGUiLCJwYXJzZVJlc291cmNlTWFuaWZlc3QiLCJnZXRCcmFuY2hOYW1lIiwicmVzb3VyY2VMaW5rIiwiYnJhbmNoIiwicGFydHMiLCJzcGxpdCIsIl9wYXJ0cyIsImdldFZlcnNlc0ZvclJlZlN0ciIsInJlZlN0ciIsImJvb2tPYmplY3RzIiwibGFuZ3VhZ2VJZCIsInZlcnNlcyIsImNoYXB0ZXJzIiwibWFwIiwidmVyc2UiLCJfdmVyc2UkdmVyc2VEYXRhIiwidmVyc2VEYXRhIiwidmVyc2VPYmplY3RzIiwidmVyc2VPYmplY3RzXyIsIm9jY3VycmVuY2VJbmplY3RWZXJzZU9iamVjdHMiLCJnZXRWZXJzZXNGb3JSZWYiLCJyZWZlcmVuY2UiLCJjb25jYXQiLCJjaGFwdGVyIiwidXNlU2NyaXB0dXJlIiwiX3JlZjIiLCJfcmVzb3VyY2VTdGF0dXMiLCJfZmV0Y2hQYXJhbXMkcmVmZXJlbmMiLCJjb25maWciLCJyZWFkeUZvckZldGNoIiwicmVzb3VyY2VfIiwicmVzb3VyY2UiLCJyZXNvdXJjZUxpbmtfIiwiX3JlZjIkd2hvbGVCb29rIiwid2hvbGVCb29rIiwiX3VzZVN0YXRlIiwiYmlibGVVc2ZtIiwiZmV0Y2hDb3VudCIsImZldGNoZWQiLCJmZXRjaGVkQm9vayIsImZldGNoUGFyYW1zIiwiaWdub3JlU2hhIiwiaW5pdGlhbGl6ZWQiLCJyZXNvdXJjZVN0YXRlIiwiY29udGVudCIsImZldGNoUmVzcG9uc2UiLCJmZXRjaGVkUmVzb3VyY2VzIiwibG9hZGluZ1Jlc291cmNlIiwibG9hZGluZ0NvbnRlbnQiLCJzaGEiLCJ1cmwiLCJ2ZXJzZXNGb3JSZWYiLCJfdXNlU3RhdGUyIiwic3RhdGUiLCJzZXRTdGF0ZV8iLCJfcmVmMyIsIm93bmVyIiwiX3JlZjMkYnJhbmNoIiwiX3JlZjMkcmVmIiwicmVmIiwiX3JlZjQiLCJib29rSWQiLCJfc3RhdGUiLCJzZXRTdGF0ZSIsIm5ld1N0YXRlIiwicHJldlN0YXRlIiwiaW5pdGlhdGVCb29rRmV0Y2giLCJjb25zb2xlIiwibG9nIiwiY3JlYXRlTGluayIsInJlZl8iLCJyZXNvdXJjZUlkIiwicHJvamVjdElkIiwiYm9va1JlZiIsIm5ld0ZldGNoUGFyYW1zIiwiZmV0Y2hCb29rIiwiX3giLCJfZmV0Y2hCb29rIiwiX2NhbGxlZSIsIl9mZXRjaFBhcmFtcyRyZWZlcmVuYzIiLCJmZXRjaExpbmsiLCJfcmVzb3VyY2VTdGF0ZSRyZXNvdXIiLCJmZXRjaGVkU2hhTWF0Y2hlc0lnbm9yZVNoYSIsIl9yZXNvdXJjZVN0YXRlJHJlc291cjIiLCJfZmV0Y2hDb3VudCIsInJlc3BvbnNlIiwiX2FyZ3MiLCJfY2FsbGVlJCIsIl9jb250ZXh0IiwidDAiLCJ2YWxpZGF0ZVJlc3BvbnNlIiwiX2ZldGNoZWRCb29rJHRvTG93ZXJDIiwiaXNTYW1lQm9vayIsImV4cGVjdGVkQm9va0lkIiwidG9Mb3dlckNhc2UiLCJpbmNsdWRlcyIsImZldGNoZWRCcmFuY2giLCJmZXRjaGluZ0JyYW5jaCIsIndhcm4iLCJiaWJsZVVzZm1fIiwiZ2V0VmVyc2VzRm9yUmVmXyIsIl9wYXJzZVJlc291cmNlTWFuaWZlcyIsInRpdGxlIiwidmVyc2lvbiIsImxvYWRpbmciLCJjb250ZW50Tm90Rm91bmRFcnJvciIsInNjcmlwdHVyZU5vdExvYWRlZEVycm9yIiwibWFuaWZlc3ROb3RGb3VuZEVycm9yIiwibWFuaWZlc3QiLCJpbnZhbGlkTWFuaWZlc3RFcnJvciIsInJlc291cmNlU3RhdHVzIiwiaW50aWFsaXplZCIsIl9nZXRWZXJzZXNGb3JSZWYiLCJjb250ZW50XyIsInVwZGF0ZVZlcnNlIiwiYm9va09iamVjdHNfIiwiX2Jvb2tPYmplY3RzIiwibmV3VmVyc2VzRm9yUmVmIiwiX25ld1ZlcnNlc0ZvclJlZiIsImluaXRpYWxWZXJzZU9iamVjdHMiLCJfaXRlcmF0b3IiLCJfc3RlcCIsInZvIiwidmVyc2VUZXh0IiwiZ2V0VXNmbUZvclZlcnNlQ29udGVudCIsIl9BbGlnbm1lbnRIZWxwZXJzJHVwZCIsInVwZGF0ZUFsaWdubWVudHNUb1RhcmdldFZlcnNlIiwidGFyZ2V0VmVyc2VPYmplY3RzIiwicmVsb2FkUmVzb3VyY2UiLCJfZmV0Y2hQYXJhbXMiLCJfcGFyc2VSZXNvdXJjZUxpbmsiLCJfcmVmIiwiX3Jlc291cmNlTGluayIsImN1cnJlbnRCb29rUmVmIiwiZmV0Y2hlZEJvb2tTYW1lIiwiX3ZlcnNlc0ZvclJlZiJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ob29rcy91c2VTY3JpcHR1cmUudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1pZ25vcmVcbmltcG9ydCB7XG4gIHVzZUVmZmVjdCxcbiAgdXNlU3RhdGUsXG59IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgY29yZSB9IGZyb20gJ3NjcmlwdHVyZS1yZXNvdXJjZXMtcmNsJ1xuaW1wb3J0IHtcbiAgQ09OVEVOVF9OT1RfRk9VTkRfRVJST1IsXG4gIEVSUk9SX1NUQVRFLFxuICBJTklUSUFMSVpFRF9TVEFURSxcbiAgSU5WQUxJRF9NQU5JRkVTVF9FUlJPUixcbiAgTE9BRElOR19TVEFURSxcbiAgTUFOSUZFU1RfTk9UX0xPQURFRF9FUlJPUixcbiAgU0NSSVBUVVJFX05PVF9MT0FERURfRVJST1IsXG59IGZyb20gJ3RyYW5zbGF0aW9uLWhlbHBzLXJjbCdcbmltcG9ydCB1c2VEZWVwQ29tcGFyZUVmZmVjdCBmcm9tICd1c2UtZGVlcC1jb21wYXJlLWVmZmVjdCdcbmltcG9ydCB7IGdldFZlcnNlcyB9IGZyb20gJ2JpYmxlLXJlZmVyZW5jZS1yYW5nZSdcbmltcG9ydCB7IGlzRXF1YWwgfSBmcm9tICdAcmVhY3QtaG9va3ovZGVlcC1lcXVhbCdcbmltcG9ydCB7IEFsaWdubWVudEhlbHBlcnMsIFVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMgfSBmcm9tICd3b3JkLWFsaWduZXItcmNsJ1xuaW1wb3J0IHtcbiAgZGVsYXksXG4gIGZldGNoQmlibGVCb29rQ29yZSxcbiAgdmVyc2VPYmplY3RzSGF2ZVdvcmRzLFxufSBmcm9tICcuLi91dGlscydcbmltcG9ydCB7XG4gIGNsZWFudXBWZXJzZU9iamVjdHMsXG4gIGdldEJvb2tOYW1lRnJvbVVzZm1GaWxlTmFtZSxcbiAgZ2V0UmVzb3VyY2VMaW5rLFxuICBwYXJzZVJlc291cmNlTGluayxcbn0gZnJvbSAnLi4vdXRpbHMvU2NyaXB0dXJlU2V0dGluZ3MnXG5pbXBvcnQge1xuICBCb29rRmV0Y2hQYXJhbXMsXG4gIEJvb2tPYmplY3RzVHlwZSxcbiAgU2NyaXB0dXJlUmVzb3VyY2VUeXBlLFxuICBTY3JpcHR1cmVSZWZlcmVuY2VUeXBlLFxuICBTZXJ2ZXJDb25maWdUeXBlLFxuICBWZXJzZU9iamVjdHNUeXBlLFxuICBWZXJzZVJlZmVyZW5jZXNUeXBlLFxufSBmcm9tICcuLi90eXBlcydcbmltcG9ydCB7IHBhcnNlUmVzb3VyY2VNYW5pZmVzdCB9IGZyb20gJy4vcGFyc2VSZXNvdXJjZU1hbmlmZXN0J1xuXG5pbnRlcmZhY2UgUHJvcHMge1xuICAvKiogcmVmZXJlbmNlIGZvciBzY3JpcHR1cmUgKiovXG4gIHJlZmVyZW5jZTogU2NyaXB0dXJlUmVmZXJlbmNlVHlwZTtcbiAgLyoqIHdoZXJlIHRvIGdldCBkYXRhICoqL1xuICBjb25maWc6IFNlcnZlckNvbmZpZ1R5cGU7XG4gIC8qKiBvcHRpb25hbCBkaXJlY3QgcGF0aCB0byBiaWJsZSByZXNvdXJjZSwgaW4gZm9ybWF0ICR7b3duZXJ9LyR7bGFuZ3VhZ2VJZH0vJHtwcm9qZWN0SWR9LyR7YnJhbmNofSAqKi9cbiAgcmVzb3VyY2VMaW5rOiBzdHJpbmd8dW5kZWZpbmVkO1xuICAvKiogb3B0aW9uYWwgcmVzb3VyY2Ugb2JqZWN0IHRvIHVzZSB0byBidWlsZCByZXNvdXJjZUxpbmsgKiovXG4gIHJlc291cmNlOiBTY3JpcHR1cmVSZXNvdXJjZVR5cGV8dW5kZWZpbmVkO1xuICAvKiogaWYgdHJ1ZSB0aGVuIGZldGNoIHRoZSBlbnRpcmUgYm9vayAqL1xuICB3aG9sZUJvb2s6IGJvb2xlYW47XG4gIC8qKiBpZiB0cnVlIHRoZW4gc2V0dGluZ3MgYXJlIHJlYWR5IGZvciBmZXRjaGluZyBkYXRhICovXG4gIHJlYWR5Rm9yRmV0Y2g6IGJvb2xlYW47XG59XG5cbi8qKlxuICogZXh0cmFjdCBicmFuY2ggZnJvbSByZXNvdXJjZSBsaW5rXG4gKiBAcGFyYW0gcmVzb3VyY2VMaW5rXG4gKi9cbmZ1bmN0aW9uIGdldEJyYW5jaE5hbWUocmVzb3VyY2VMaW5rOiBzdHJpbmcpIHtcbiAgbGV0IGJyYW5jaCA9IG51bGxcbiAgcmVzb3VyY2VMaW5rID0gcmVzb3VyY2VMaW5rIHx8ICcnXG4gIGNvbnN0IHBhcnRzID0gcmVzb3VyY2VMaW5rLnNwbGl0KCc/cmVmPScpXG5cbiAgaWYgKHBhcnRzLmxlbmd0aCA+IDEpIHsgLy8gaWYgcmVmIHBhcmFtZXRlciBmb3VuZCwgZ2V0IGJyYW5jaCBuYW1lIGFmdGVyXG4gICAgYnJhbmNoID0gcGFydHM/LlsxXVxuICB9IGVsc2UgeyAvLyBmYWxsIGJhY2sgdG8gdXNpbmcgdXNlUnNyYyBmb3JtYXQgc3VjaCBhcyBcInVuZm9sZGluZ1dvcmQvZW4vdXN0L21hc3RlclwiXG4gICAgY29uc3QgX3BhcnRzID0gcmVzb3VyY2VMaW5rLnNwbGl0KCcvJylcbiAgICBicmFuY2ggPSBfcGFydHM/LlszXVxuICB9XG4gIHJldHVybiBicmFuY2hcbn1cblxuLyoqXG4gKiBnZXQgdGhlIHZlcnNlIG9iamVjdHMgZm9yIHRoZSByZWZlcmVuY2Ugc3RyaW5nXG4gKiBAcGFyYW0ge3N0cmluZ30gcmVmU3RyIC0gaW4gZm9ybWF0IDxjaGFwdGVyPjo8dmVyc2U+XG4gKiBAcGFyYW0ge29iamVjdH0gYm9va09iamVjdHMgLSBwYXJzZWQgdXNmbSBmb3IgYm9va1xuICogQHBhcmFtIHtzdHJpbmd9IGxhbmd1YWdlSWRcbiAqIEByZXR1cm4ge2FycmF5fG51bGx9IC0gb2YgdmVyc2VPYmplY3RzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRWZXJzZXNGb3JSZWZTdHIocmVmU3RyLCBib29rT2JqZWN0cywgbGFuZ3VhZ2VJZCk6IFZlcnNlUmVmZXJlbmNlc1R5cGUge1xuICBpZiAoYm9va09iamVjdHMpIHtcbiAgICBsZXQgdmVyc2VzID0gZ2V0VmVyc2VzKGJvb2tPYmplY3RzLmNoYXB0ZXJzLCByZWZTdHIpXG5cbiAgICBpZiAobGFuZ3VhZ2VJZCA9PT0gJ2VsLXgta29pbmUnIHx8IGxhbmd1YWdlSWQgPT09ICdoYm8nKSB7XG4gICAgICB2ZXJzZXMgPSB2ZXJzZXMubWFwKHZlcnNlID0+IHtcbiAgICAgICAgaWYgKCB2ZXJzZT8udmVyc2VEYXRhPy52ZXJzZU9iamVjdHMpIHtcbiAgICAgICAgICBsZXQgdmVyc2VPYmplY3RzXyA9IGNvcmUub2NjdXJyZW5jZUluamVjdFZlcnNlT2JqZWN0cyggdmVyc2UudmVyc2VEYXRhLnZlcnNlT2JqZWN0cylcbiAgICAgICAgICB2ZXJzZU9iamVjdHNfID0gY2xlYW51cFZlcnNlT2JqZWN0cyh2ZXJzZU9iamVjdHNfKVxuICAgICAgICAgIHZlcnNlLnZlcnNlRGF0YS52ZXJzZU9iamVjdHMgPSB2ZXJzZU9iamVjdHNfXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZlcnNlXG4gICAgICB9KVxuICAgIH1cblxuICAgIHJldHVybiB2ZXJzZXNcbiAgfVxuICByZXR1cm4gbnVsbFxufVxuXG4vKipcbiAqIGdldCB0aGUgdmVyc2Ugb2JqZWN0cyBmb3IgdGhlIHJlZmVyZW5jZSBvYmplY3RcbiAqIEBwYXJhbSB7U2NyaXB0dXJlUmVmZXJlbmNlVHlwZX0gcmVmZXJlbmNlXG4gKiBAcGFyYW0ge29iamVjdH0gYm9va09iamVjdHMgLSBwYXJzZWQgdXNmbSBmb3IgYm9va1xuICogQHBhcmFtIHtzdHJpbmd9IGxhbmd1YWdlSWRcbiAqIEByZXR1cm4ge2FycmF5fG51bGx9IC0gb2YgdmVyc2VPYmplY3RzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRWZXJzZXNGb3JSZWYocmVmZXJlbmNlLCBib29rT2JqZWN0cywgbGFuZ3VhZ2VJZCk6IFZlcnNlUmVmZXJlbmNlc1R5cGUge1xuICBjb25zdCByZWZTdHIgPSBgJHtyZWZlcmVuY2UuY2hhcHRlcn06JHtyZWZlcmVuY2UudmVyc2V9YFxuICByZXR1cm4gZ2V0VmVyc2VzRm9yUmVmU3RyKHJlZlN0ciwgYm9va09iamVjdHMsIGxhbmd1YWdlSWQpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VTY3JpcHR1cmUoeyAvLyBob29rIGZvciBmZXRjaGluZyBzY3JpcHR1cmVcbiAgY29uZmlnLFxuICByZWFkeUZvckZldGNoLFxuICByZWZlcmVuY2UsXG4gIHJlc291cmNlOiByZXNvdXJjZV8sXG4gIHJlc291cmNlTGluazogcmVzb3VyY2VMaW5rXyxcbiAgd2hvbGVCb29rID0gZmFsc2UsXG59IDogUHJvcHMpIHtcbiAgdHlwZSBTdGF0ZVR5cGVzID0ge1xuICAgIGJpYmxlVXNmbTogc3RyaW5nLFxuICAgIGJvb2tPYmplY3RzOiBCb29rT2JqZWN0c1R5cGUsXG4gICAgZmV0Y2hDb3VudDogbnVtYmVyLFxuICAgIGZldGNoZWQ6IGJvb2xlYW4sXG4gICAgZmV0Y2hlZEJvb2s6IHN0cmluZyxcbiAgICBmZXRjaFBhcmFtczogQm9va0ZldGNoUGFyYW1zfG51bGwsXG4gICAgaWdub3JlU2hhOiBzdHJpbmd8bnVsbCxcbiAgICBpbml0aWFsaXplZDogYm9vbGVhbixcbiAgICByZXNvdXJjZVN0YXRlOiB7XG4gICAgICBiaWJsZVVzZm06IHN0cmluZyxcbiAgICAgIGJvb2tPYmplY3RzOiBCb29rT2JqZWN0c1R5cGUsXG4gICAgICBjb250ZW50OiB7fSxcbiAgICAgIGZldGNoUmVzcG9uc2U6IHt9LFxuICAgICAgZmV0Y2hlZFJlc291cmNlczoge1xuICAgICAgICBiaWJsZVVzZm06IHN0cmluZyxcbiAgICAgICAgYm9va09iamVjdHM6IEJvb2tPYmplY3RzVHlwZSxcbiAgICAgICAgZmV0Y2hDb3VudDogbnVtYmVyLFxuICAgICAgICBuYW1lOiBzdHJpbmcsXG4gICAgICAgIHNoYTogc3RyaW5nLFxuICAgICAgICB1cmw6IHN0cmluZyxcbiAgICAgIH0sXG4gICAgICBsb2FkaW5nUmVzb3VyY2U6IGJvb2xlYW4sXG4gICAgICBsb2FkaW5nQ29udGVudDogYm9vbGVhbixcbiAgICAgIHJlc291cmNlOiB7XG4gICAgICAgIG5hbWU6IHN0cmluZyxcbiAgICAgICAgbWFuaWZlc3Q6IHt9LFxuICAgICAgICByZXNvdXJjZUxpbms6IHt9XG4gICAgICB9LFxuICAgICAgc2hhOiBzdHJpbmcsXG4gICAgICB1cmw6IHN0cmluZyxcbiAgICB9LFxuICAgIHZlcnNlc0ZvclJlZjogYW55W10sXG4gIH1cblxuICBjb25zdCBbc3RhdGUsIHNldFN0YXRlX10gPSB1c2VTdGF0ZSh7XG4gICAgYmlibGVVc2ZtOiBudWxsLFxuICAgIGJvb2tPYmplY3RzOiBudWxsLFxuICAgIGZldGNoQ291bnQ6IDAsXG4gICAgZmV0Y2hlZDogZmFsc2UsXG4gICAgZmV0Y2hlZEJvb2s6ICcnLFxuICAgIGZldGNoUGFyYW1zOiBudWxsLFxuICAgIGlnbm9yZVNoYTogbnVsbCxcbiAgICBpbml0aWFsaXplZDogZmFsc2UsXG4gICAgcmVzb3VyY2VTdGF0ZToge1xuICAgICAgYm9va09iamVjdHM6IG51bGwsXG4gICAgICBiaWJsZVVzZm06IG51bGwsXG4gICAgICBjb250ZW50OiBudWxsLFxuICAgICAgZmV0Y2hSZXNwb25zZTogbnVsbCxcbiAgICAgIGZldGNoZWRSZXNvdXJjZXM6IG51bGwsXG4gICAgICBsb2FkaW5nUmVzb3VyY2U6IGZhbHNlLFxuICAgICAgbG9hZGluZ0NvbnRlbnQ6IGZhbHNlLFxuICAgICAgcmVzb3VyY2U6IG51bGwsXG4gICAgICBzaGE6IG51bGwsXG4gICAgICB1cmw6IG51bGwsXG4gICAgfSxcbiAgICB2ZXJzZXNGb3JSZWY6IFtdLFxuICB9KVxuXG4gIGNvbnN0IHtcbiAgICBvd25lcixcbiAgICBsYW5ndWFnZUlkLFxuICAgIGJyYW5jaCA9ICdtYXN0ZXInLFxuICAgIHJlZiA9IG51bGwsXG4gIH0gPSByZXNvdXJjZV8gfHwge31cblxuICBjb25zdCB7IGJvb2tJZCB9ID0gcmVmZXJlbmNlIHx8IHt9XG5cbiAgY29uc3QgX3N0YXRlOiBTdGF0ZVR5cGVzID0gc3RhdGUgLy8gVHJpY2t5OiB3b3JrLWFyb3VuZCBmb3IgYnVnIHRoYXQgc3RhbmRhcmQgdHlwZXNjcmlwdCB0eXBlIGNhc3RpbmcgZG9lcyBub3Qgd29yayBpbiAudHN4IGZpbGVzXG4gIGNvbnN0IHtcbiAgICBiaWJsZVVzZm0sXG4gICAgYm9va09iamVjdHMsXG4gICAgZmV0Y2hDb3VudCxcbiAgICBmZXRjaGVkLFxuICAgIGZldGNoZWRCb29rLFxuICAgIGZldGNoUGFyYW1zLFxuICAgIGlnbm9yZVNoYSxcbiAgICBpbml0aWFsaXplZCxcbiAgICByZXNvdXJjZVN0YXRlLFxuICAgIHZlcnNlc0ZvclJlZixcbiAgfSA9IF9zdGF0ZVxuICBjb25zdCBmZXRjaGVkUmVzb3VyY2VzID0gcmVzb3VyY2VTdGF0ZT8uZmV0Y2hlZFJlc291cmNlc1xuXG4gIGZ1bmN0aW9uIHNldFN0YXRlKG5ld1N0YXRlKSB7XG4gICAgc2V0U3RhdGVfKHByZXZTdGF0ZSA9PiAoeyAuLi5wcmV2U3RhdGUsIC4uLm5ld1N0YXRlIH0pKVxuICB9XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAocmVhZHlGb3JGZXRjaCkge1xuICAgICAgaW5pdGlhdGVCb29rRmV0Y2goKVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGluaXRpYXRlQm9va0ZldGNoKCkge1xuICAgICAgY29uc29sZS5sb2coYHVzZVNjcmlwdHVyZSAtIHJlYWR5Rm9yRmV0Y2ggdHJ1ZSwgaW5pdGlhbGl6aW5nYClcbiAgICAgIGxldCByZXNvdXJjZUxpbmsgPSByZWFkeUZvckZldGNoICYmIHJlc291cmNlTGlua19cblxuICAgICAgaWYgKHJlc291cmNlXykge1xuICAgICAgICAvLyBjaGVjayBpZiByZXNvdXJjZUxpbmtfIGRvZXMgbm90IGV4aXN0IG9yIGluIGNhc2UgcmVmIGhhcyBiZWVuIHVwZGF0ZWRcbiAgICAgICAgY29uc3QgY3JlYXRlTGluayA9ICFyZXNvdXJjZUxpbmtfIHx8IChyZWYgJiYgKHJlZiAhPT0gYnJhbmNoKSlcblxuICAgICAgICBpZiAoY3JlYXRlTGluaykge1xuICAgICAgICAgIGNvbnN0IHJlZl8gPSByZWYgfHwgYnJhbmNoXG5cbiAgICAgICAgICByZXNvdXJjZUxpbmsgPSBnZXRSZXNvdXJjZUxpbmsoe1xuICAgICAgICAgICAgb3duZXIsXG4gICAgICAgICAgICBsYW5ndWFnZUlkLFxuICAgICAgICAgICAgcmVzb3VyY2VJZDogcmVzb3VyY2VfPy5wcm9qZWN0SWQsXG4gICAgICAgICAgICByZWY6IHJlZl8sXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjb25zdCBib29rUmVmID0geyAuLi5yZWZlcmVuY2UgfVxuXG4gICAgICBpZiAod2hvbGVCb29rKSB7XG4gICAgICAgIGRlbGV0ZSBib29rUmVmLmNoYXB0ZXIgLy8gcmVtb3ZlIHRoZSBjaGFwdGVyIGFuZCB2ZXJzZSBzbyB0aGUgd2hvbGUgYm9vayBpcyBmZXRjaGVkXG4gICAgICAgIGRlbGV0ZSBib29rUmVmLnZlcnNlXG4gICAgICB9XG5cbiAgICAgIGlmIChyZXNvdXJjZUxpbmsgIT09IGZldGNoUGFyYW1zPy5yZXNvdXJjZUxpbmspIHtcbiAgICAgICAgY29uc29sZS5sb2coYHVzZVNjcmlwdHVyZSAtIGZvciAke3Jlc291cmNlXz8ucHJvamVjdElkfSByZXNvdXJjZUxpbmsgaXMgbm93ICR7cmVzb3VyY2VMaW5rfSBhbmQgcmVzb3VyY2VMaW5rXz0ke3Jlc291cmNlTGlua199YClcbiAgICAgIH0gZWxzZSBpZiAoYm9va1JlZiAhPT0gZmV0Y2hQYXJhbXM/LnJlZmVyZW5jZSkge1xuICAgICAgICBjb25zb2xlLmxvZyhgdXNlU2NyaXB0dXJlIC0gYm9vayBjaGFuZ2VkIHRvICR7cmVzb3VyY2VfPy5wcm9qZWN0SWR9IHJlc291cmNlTGluayBpcyBub3cgJHtyZXNvdXJjZUxpbmt9YClcbiAgICAgIH1cblxuICAgICAgY29uc3QgbmV3RmV0Y2hQYXJhbXMgPSB7XG4gICAgICAgIGNvbmZpZyxcbiAgICAgICAgcmVmZXJlbmNlOiBib29rUmVmLFxuICAgICAgICByZXNvdXJjZUxpbmssXG4gICAgICB9XG5cbiAgICAgIGlmICghaXNFcXVhbChuZXdGZXRjaFBhcmFtcywgZmV0Y2hQYXJhbXMpKSB7XG4gICAgICAgIHNldFN0YXRlKHtcbiAgICAgICAgICBmZXRjaFBhcmFtczogbmV3RmV0Y2hQYXJhbXMsXG4gICAgICAgICAgZmV0Y2hlZDogZmFsc2UsXG4gICAgICAgICAgaW5pdGlhbGl6ZWQ6IHRydWUsXG4gICAgICAgIH0pXG5cbiAgICAgICAgZmV0Y2hCb29rKG5ld0ZldGNoUGFyYW1zKVxuICAgICAgfVxuICAgIH1cbiAgfSwgW1xuICAgIHJlYWR5Rm9yRmV0Y2gsXG4gICAgb3duZXIsXG4gICAgbGFuZ3VhZ2VJZCxcbiAgICBib29rSWQsXG4gICAgYnJhbmNoLFxuICAgIHJlZixcbiAgXSlcblxuICAvKipcbiAgICogZG8gYSBmZXRjaCBvZiBtYW5pZmVzdCBhbmQgYm9vayBvZiB0aGUgYmlibGUgc3BlY2lmaWVkIGluIGZldGNoUGFyYW1zXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBmZXRjaFBhcmFtc1xuICAgKiBAcGFyYW0ge3N0cmluZ30gaWdub3JlU2hhIC0gb3B0aW9uYWwgcHJldmlvdXMgc2hhIC0gaWdub3JlIHJlc3BvbnNlcyB0aGF0IGNhbWUgYmFjayBmb3IgdGhpcyBwcmV2aW91cyBib29rIGNvbW1pdFxuICAgKi9cbiAgYXN5bmMgZnVuY3Rpb24gZmV0Y2hCb29rKGZldGNoUGFyYW1zOiBCb29rRmV0Y2hQYXJhbXMsIGlnbm9yZVNoYSA9IG51bGwpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgZmV0Y2hMaW5rID0gYCR7ZmV0Y2hQYXJhbXM/LnJlc291cmNlTGlua30vJHtmZXRjaFBhcmFtcz8ucmVmZXJlbmNlPy5ib29rSWR9YFxuXG4gICAgICBpZiAoaWdub3JlU2hhKSB7XG4gICAgICAgIGNvbnN0IGZldGNoZWRTaGFNYXRjaGVzSWdub3JlU2hhID0gaWdub3JlU2hhID09PSByZXNvdXJjZVN0YXRlPy5zaGEgLy8gd2Ugd2lsbCByZWxvYWQgaWYgaWdub3JlU2hhIGdpdmVuIGFuZCBpdCBtYXRjaGVzIGN1cnJlbnQgc2hhXG5cbiAgICAgICAgaWYgKChmZXRjaExpbmsgPT09IHJlc291cmNlU3RhdGU/LnJlc291cmNlPy5yZXNvdXJjZUxpbmspICYmICFmZXRjaGVkU2hhTWF0Y2hlc0lnbm9yZVNoYSkgeyAvLyBzZWUgaWYgd2UgYWxyZWFkeSBmZXRjaGVkIHRoaXNcbiAgICAgICAgICBjb25zb2xlLmxvZyhgdXNlU2NyaXB0dXJlLmZldGNoQm9vaygpIC0gQWxyZWFkeSBmZXRjaGluZyByZXNvdXJjZUxpbmsgJHtyZXNvdXJjZVN0YXRlPy5yZXNvdXJjZT8ucmVzb3VyY2VMaW5rfSBhbmQgaWdub3JlU2hhPSR7aWdub3JlU2hhfWAsIGZldGNoUGFyYW1zKVxuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IF9mZXRjaENvdW50ID0gZmV0Y2hDb3VudCArIDFcbiAgICAgIGNvbnNvbGUubG9nKGB1c2VTY3JpcHR1cmUuZmV0Y2hCb29rKCkgLSBGRVRDSElORyBiaWJsZSAke3Jlc291cmNlXz8ucHJvamVjdElkfSByZXNvdXJjZUxpbmsgaXMgbm93ICR7ZmV0Y2hQYXJhbXM/LnJlc291cmNlTGlua30gYW5kIGlnbm9yZVNoYT0ke2lnbm9yZVNoYX1gLCBmZXRjaFBhcmFtcylcbiAgICAgIHNldFN0YXRlKHtcbiAgICAgICAgZmV0Y2hDb3VudDogX2ZldGNoQ291bnQsXG4gICAgICAgIGZldGNoZWQ6IGZhbHNlLFxuICAgICAgICBpZ25vcmVTaGEsXG4gICAgICAgIHJlc291cmNlU3RhdGU6IHsgbG9hZGluZ1Jlc291cmNlOiB0cnVlIH0sXG4gICAgICB9KVxuXG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoQmlibGVCb29rQ29yZShmZXRjaFBhcmFtcylcblxuICAgICAgaWYgKCFyZXNwb25zZSB8fCByZXNwb25zZT8uZXJyb3IpIHtcbiAgICAgICAgY29uc29sZS5sb2coYHVzZVNjcmlwdHVyZS53YXJuKCkgLUVycm9yIEZFVENISU5HIGJpYmxlICR7cmVzb3VyY2VfPy5wcm9qZWN0SWR9YCwgcmVzcG9uc2UpXG4gICAgICAgIHNldFN0YXRlKHtcbiAgICAgICAgICByZXNvdXJjZVN0YXRlOiB7XG4gICAgICAgICAgICBsb2FkaW5nUmVzb3VyY2U6IGZhbHNlLFxuICAgICAgICAgICAgcmVzcG9uc2UsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGNvbnNvbGUubG9nKGB1c2VTY3JpcHR1cmUuZmV0Y2hCb29rKCkgLSBMT0FERUQgYmlibGUgYm9vayAke3Jlc291cmNlXz8ucHJvamVjdElkfSByZXNvdXJjZUxpbmsgaXMgbm93ICR7ZmV0Y2hQYXJhbXM/LnJlc291cmNlTGlua319YCwgZmV0Y2hQYXJhbXMpXG4gICAgICBzZXRTdGF0ZShcbiAgICAgICAge1xuICAgICAgICAgIHJlc291cmNlU3RhdGU6IHtcbiAgICAgICAgICAgIGxvYWRpbmdSZXNvdXJjZTogZmFsc2UsXG4gICAgICAgICAgICBmZXRjaGVkUmVzb3VyY2VzOiB7XG4gICAgICAgICAgICAgIC4uLnJlc3BvbnNlLFxuICAgICAgICAgICAgICBmZXRjaENvdW50OiBfZmV0Y2hDb3VudCxcbiAgICAgICAgICAgICAgcmVmZXJlbmNlOiBmZXRjaFBhcmFtcz8ucmVmZXJlbmNlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgKVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYHVzZVNjcmlwdHVyZS5mZXRjaEJvb2soKSAtIGhhcmQgZXJyb3IgbG9hZGluZyByZXNvdXJjZWAsIGZldGNoUGFyYW1zLCBlIClcbiAgICAgIHNldFN0YXRlKHtcbiAgICAgICAgcmVzb3VyY2VTdGF0ZToge1xuICAgICAgICAgIGxvYWRpbmdSZXNvdXJjZTogZmFsc2UsXG4gICAgICAgICAgcmVzb3VyY2U6IG51bGwsXG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc29sZS5sb2coYHVzZVNjcmlwdHVyZSAtIGZvciAke3Jlc291cmNlXz8ucHJvamVjdElkfSByZWFkeUZvckZldGNoIGlzIG5vdyAke3JlYWR5Rm9yRmV0Y2h9YClcbiAgfSwgW3JlYWR5Rm9yRmV0Y2hdKVxuXG4gIC8qKlxuICAgKiBtYWtlIHN1cmUgbGFzdCBmZXRjaCByZXNwb25zZSBpcyBmb3IgY3VycmVudCBib29rL2JyYW5jaFxuICAgKi9cbiAgZnVuY3Rpb24gdmFsaWRhdGVSZXNwb25zZSgpIHtcbiAgICBsZXQgaXNTYW1lQm9vayA9IGZhbHNlXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGNvbnN0IGV4cGVjdGVkQm9va0lkID0gYm9va0lkIHx8ICd6enonXG4gICAgY29uc3QgZmV0Y2hlZEJvb2sgPSBnZXRCb29rTmFtZUZyb21Vc2ZtRmlsZU5hbWUoZmV0Y2hlZFJlc291cmNlcz8ubmFtZSlcbiAgICBjb25zb2xlLmxvZyhgdXNlU2NyaXB0dXJlLnZhbGlkYXRlUmVzcG9uc2UoKSAtIEN1cnJlbnQgYm9va0lkIGlzICR7Ym9va0lkfSBhbmQgc2VlaW5nICR7ZmV0Y2hlZEJvb2t9IGluIFVTRk1gKVxuICAgIGlzU2FtZUJvb2sgPSBmZXRjaGVkQm9vaz8udG9Mb3dlckNhc2UoKT8uaW5jbHVkZXMoYm9va0lkKVxuXG4gICAgY29uc3Qgc2hhID0gZmV0Y2hlZFJlc291cmNlcz8uc2hhIHx8IG51bGxcbiAgICBjb25zdCB1cmwgPSBmZXRjaGVkUmVzb3VyY2VzPy51cmwgfHwgbnVsbFxuXG4gICAgaWYgKGlzU2FtZUJvb2spIHsgLy8gYWxzbyBtYWtlIHN1cmUgaXQgaXMgdGhlIHNhbWUgYnJhbmNoXG4gICAgICBjb25zdCBmZXRjaGVkQnJhbmNoID0gZ2V0QnJhbmNoTmFtZSh1cmwpXG4gICAgICBjb25zdCBmZXRjaGluZ0JyYW5jaCA9IGdldEJyYW5jaE5hbWUoZmV0Y2hQYXJhbXM/LnJlc291cmNlTGluaylcblxuICAgICAgaWYgKGZldGNoZWRCcmFuY2ggIT09IGZldGNoaW5nQnJhbmNoKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGB1c2VTY3JpcHR1cmUudmFsaWRhdGVSZXNwb25zZSgpIGludmFsaWQgYnJhbmNoLCBleHBlY3RlZCBicmFuY2ggaXMgJHtmZXRjaGluZ0JyYW5jaH0sIGJ1dCBmZXRjaGVkQnJhbmNoIGlzICR7ZmV0Y2hlZEJyYW5jaH1gLCB7IHNoYSwgdXJsIH0pXG4gICAgICAgIGlzU2FtZUJvb2sgPSBmYWxzZVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmxvZyhgdXNlU2NyaXB0dXJlLnZhbGlkYXRlUmVzcG9uc2UoKSAtICBpbnZhbGlkIGJvb2ssIGV4cGVjdGVkQm9va0lkIGlzICR7ZXhwZWN0ZWRCb29rSWR9LCBidXQgcmVjZWl2ZWQgYm9vayBuYW1lICR7ZmV0Y2hlZEJvb2t9YCwgeyBzaGEsIHVybCB9KVxuICAgIH1cblxuICAgIGlmIChpZ25vcmVTaGEgPT09IHNoYSkge1xuICAgICAgY29uc29sZS53YXJuKGB1c2VTY3JpcHR1cmUudmFsaWRhdGVSZXNwb25zZSgpIC0gdGhlIHNoYSBpcyB0aGUgc2FtZSBhcyB0aGUgaWdub3JlIHNoYSAke3NoYX1gLCB7IHNoYSwgdXJsIH0pXG4gICAgICBpc1NhbWVCb29rID0gZmFsc2VcbiAgICB9XG5cbiAgICBpZiAoaXNTYW1lQm9vaykge1xuICAgICAgY29uc3QgYmlibGVVc2ZtXyA9IGZldGNoZWRSZXNvdXJjZXM/LmJpYmxlVXNmbVxuICAgICAgY29uc3QgYm9va09iamVjdHMgPSBmZXRjaGVkUmVzb3VyY2VzPy5ib29rT2JqZWN0c1xuICAgICAgY29uc3QgdmVyc2VzRm9yUmVmID0gZ2V0VmVyc2VzRm9yUmVmXyhib29rT2JqZWN0cylcblxuICAgICAgY29uc29sZS5sb2coYHVzZVNjcmlwdHVyZS52YWxpZGF0ZVJlc3BvbnNlKCkgLSBjb3JyZWN0IGJvb2ssIGV4cGVjdGVkQm9va0lkIGlzICR7ZXhwZWN0ZWRCb29rSWR9YCwgeyBzaGEsIHVybCB9KVxuICAgICAgY29uc3QgbmV3U3RhdGUgPSB7XG4gICAgICAgIGJpYmxlVXNmbTogYmlibGVVc2ZtXyxcbiAgICAgICAgYm9va09iamVjdHMsXG4gICAgICAgIGZldGNoZWQ6IHRydWUsXG4gICAgICAgIGZldGNoZWRCb29rOiBleHBlY3RlZEJvb2tJZCxcbiAgICAgICAgaWdub3JlU2hhOiBudWxsLFxuICAgICAgICByZXNvdXJjZVN0YXRlOiB7XG4gICAgICAgICAgYm9va09iamVjdHMsXG4gICAgICAgICAgYmlibGVVc2ZtOiBiaWJsZVVzZm1fLFxuICAgICAgICAgIGxvYWRpbmdSZXNvdXJjZTogZmFsc2UsXG4gICAgICAgICAgbG9hZGluZ0NvbnRlbnQ6IGZhbHNlLFxuICAgICAgICAgIHJlc291cmNlOiBmZXRjaGVkUmVzb3VyY2VzLFxuICAgICAgICAgIHNoYSxcbiAgICAgICAgICB1cmwsXG4gICAgICAgIH0sXG4gICAgICAgIHZlcnNlc0ZvclJlZixcbiAgICAgIH1cblxuICAgICAgc2V0U3RhdGUobmV3U3RhdGUpXG4gICAgfVxuICB9XG5cbiAgdXNlRGVlcENvbXBhcmVFZmZlY3QoKCkgPT4geyAvLyB2YWxpZGF0ZSByZXNwb25zZSB0byBtYWtlIHN1cmUgZnJvbSBsYXRlc3QgcmVxdWVzdFxuICAgIGlmIChyZWFkeUZvckZldGNoICYmIGZldGNoZWRSZXNvdXJjZXMpIHtcbiAgICAgIGlmICghZmV0Y2hlZCAmJiBmZXRjaGVkUmVzb3VyY2VzPy5mZXRjaENvdW50ID09PSBmZXRjaENvdW50KSB7XG4gICAgICAgIGRlbGF5KDUwMCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgdmFsaWRhdGVSZXNwb25zZSgpXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfVxuICB9LCBbeyByZWFkeUZvckZldGNoLCBmZXRjaGVkUmVzb3VyY2VzIH1dKVxuXG4gIGNvbnN0IHJlc291cmNlID0gcmVzb3VyY2VTdGF0ZT8ucmVzb3VyY2VcbiAgY29uc3QgeyB0aXRsZSwgdmVyc2lvbiB9ID0gcGFyc2VSZXNvdXJjZU1hbmlmZXN0KHJlc291cmNlKVxuICBjb25zdCBsb2FkaW5nID0gcmVzb3VyY2VTdGF0ZT8ubG9hZGluZ1Jlc291cmNlIHx8IHJlc291cmNlU3RhdGU/LmxvYWRpbmdDb250ZW50IHx8ICFyZWFkeUZvckZldGNoXG4gIGNvbnN0IGNvbnRlbnROb3RGb3VuZEVycm9yID0gIXJlc291cmNlU3RhdGU/LmJpYmxlVXNmbVxuICBjb25zdCBzY3JpcHR1cmVOb3RMb2FkZWRFcnJvciA9ICFyZXNvdXJjZVN0YXRlPy5ib29rT2JqZWN0c1xuICBjb25zdCBtYW5pZmVzdE5vdEZvdW5kRXJyb3IgPSAhcmVzb3VyY2U/Lm1hbmlmZXN0XG4gIGNvbnN0IGludmFsaWRNYW5pZmVzdEVycm9yID0gIXRpdGxlIHx8ICF2ZXJzaW9uIHx8ICFsYW5ndWFnZUlkXG4gIGNvbnN0IGVycm9yID0gcmVhZHlGb3JGZXRjaCAmJiBpbml0aWFsaXplZCAmJiAhbG9hZGluZyAmJlxuICAgIChjb250ZW50Tm90Rm91bmRFcnJvciB8fCBzY3JpcHR1cmVOb3RMb2FkZWRFcnJvciB8fCBtYW5pZmVzdE5vdEZvdW5kRXJyb3IgfHwgaW52YWxpZE1hbmlmZXN0RXJyb3IpXG4gIGNvbnN0IHJlc291cmNlU3RhdHVzID0ge1xuICAgIFtMT0FESU5HX1NUQVRFXTogbG9hZGluZyxcbiAgICBbQ09OVEVOVF9OT1RfRk9VTkRfRVJST1JdOiBjb250ZW50Tm90Rm91bmRFcnJvcixcbiAgICBbU0NSSVBUVVJFX05PVF9MT0FERURfRVJST1JdOiBzY3JpcHR1cmVOb3RMb2FkZWRFcnJvcixcbiAgICBbTUFOSUZFU1RfTk9UX0xPQURFRF9FUlJPUl06IG1hbmlmZXN0Tm90Rm91bmRFcnJvcixcbiAgICBbSU5WQUxJRF9NQU5JRkVTVF9FUlJPUl06IGludmFsaWRNYW5pZmVzdEVycm9yLFxuICAgIFtFUlJPUl9TVEFURV06IGVycm9yLFxuICAgIFtJTklUSUFMSVpFRF9TVEFURV06IGluaXRpYWxpemVkLFxuICB9XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIXJlYWR5Rm9yRmV0Y2gpIHtcbiAgICAgIGlmIChpbml0aWFsaXplZCkge1xuICAgICAgICBzZXRTdGF0ZSh7IGludGlhbGl6ZWQ6IGZhbHNlIH0pXG4gICAgICB9XG4gICAgfSBlbHNlIGlmICghaW5pdGlhbGl6ZWQpIHtcbiAgICAgIGlmIChsb2FkaW5nKSB7IC8vIG9uY2UgZmlyc3QgbG9hZCBoYXMgYmVndW4sIHdlIGFyZSBpbml0aWFsaXplZFxuICAgICAgICBzZXRTdGF0ZSh7IGludGlhbGl6ZWQ6IHRydWUgfSlcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtsb2FkaW5nLCByZWFkeUZvckZldGNoXSlcblxuICAvKipcbiAgICogZ2V0IHZlcnNlcyBmb3IgcmVmXG4gICAqIEBwYXJhbSB7c3RyaW5nfSByZWZTdHJcbiAgICogQHBhcmFtIHtvYmplY3R9IGNvbnRlbnRfXG4gICAqL1xuICBmdW5jdGlvbiBfZ2V0VmVyc2VzRm9yUmVmKHJlZlN0ciwgY29udGVudF8gPSBib29rT2JqZWN0cyk6IFZlcnNlUmVmZXJlbmNlc1R5cGUge1xuICAgIGlmIChjb250ZW50Xykge1xuICAgICAgcmV0dXJuIGdldFZlcnNlc0ZvclJlZlN0cihyZWZTdHIsIGNvbnRlbnRfLCBsYW5ndWFnZUlkKVxuICAgIH1cbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgLyoqXG4gICAqIHVwZGF0ZSB2ZXJzZSBkYXRhIGZvciBjdXJyZW50IGJvb2tcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNoYXB0ZXJcbiAgICogQHBhcmFtIHtzdHJpbmd9IHZlcnNlXG4gICAqIEBwYXJhbSB7b2JqZWN0fSB2ZXJzZURhdGFcbiAgICovXG4gIGZ1bmN0aW9uIHVwZGF0ZVZlcnNlKGNoYXB0ZXIsIHZlcnNlLCB2ZXJzZURhdGEpIHtcbiAgICBpZiAoYm9va09iamVjdHMpIHtcbiAgICAgIGNvbnN0IGJvb2tPYmplY3RzXyA9IHsgLi4uYm9va09iamVjdHMgfSAvLyBzaGFsbG93IGNvcHlcblxuICAgICAgaWYgKGJvb2tPYmplY3RzXz8uY2hhcHRlcnMpIHtcbiAgICAgICAgYm9va09iamVjdHNfLmNoYXB0ZXJzID0geyAuLi5ib29rT2JqZWN0c18uY2hhcHRlcnMgfSAvLyBzaGFsbG93IGNvcHkgY2hhcHRlcnNcblxuICAgICAgICBpZiAoYm9va09iamVjdHNfLmNoYXB0ZXJzW2NoYXB0ZXJdKSB7XG4gICAgICAgICAgYm9va09iamVjdHNfLmNoYXB0ZXJzW2NoYXB0ZXJdID0geyAuLi5ib29rT2JqZWN0c18uY2hhcHRlcnNbY2hhcHRlcl0gfSAvLyBzaGFsbG93IGNvcHkgdmVyc2VzXG4gICAgICAgICAgYm9va09iamVjdHNfLmNoYXB0ZXJzW2NoYXB0ZXJdW3ZlcnNlXSA9IHZlcnNlRGF0YVxuICAgICAgICAgIHNldFN0YXRlKHsgYm9va09iamVjdHM6IGJvb2tPYmplY3RzXyB9KVxuICAgICAgICAgIHJldHVybiBib29rT2JqZWN0c19cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgLyoqXG4gICAqIGdldCB0aGUgdmVyc2VzIGZvciBjdXJyZW50IHJlZmVyZW5jZSBvciByZWZlcmVuY2UgcmFuZ2VcbiAgICogQHBhcmFtIHtCb29rT2JqZWN0c1R5cGV9IF9ib29rT2JqZWN0c1xuICAgKi9cbiAgZnVuY3Rpb24gZ2V0VmVyc2VzRm9yUmVmXyhfYm9va09iamVjdHM6IEJvb2tPYmplY3RzVHlwZSA9IGJvb2tPYmplY3RzKTogVmVyc2VPYmplY3RzVHlwZSB7XG4gICAgbGV0IG5ld1ZlcnNlc0ZvclJlZiA9IFtdXG5cbiAgICBpZiAoX2Jvb2tPYmplY3RzKSB7XG4gICAgICBuZXdWZXJzZXNGb3JSZWYgPSBnZXRWZXJzZXNGb3JSZWYocmVmZXJlbmNlLCBfYm9va09iamVjdHMsIGxhbmd1YWdlSWQpXG5cbiAgICAgIGlmIChyZWZlcmVuY2U/LnZlcnNlID09PSAnZnJvbnQnKSB7IC8vIHNwZWNpYWwgaGFuZGxpbmcgZm9yIGZyb250IG1hdHRlclxuICAgICAgICBjb25zdCB2ZXJzZURhdGEgPSBuZXdWZXJzZXNGb3JSZWY/LlswXT8udmVyc2VEYXRhXG4gICAgICAgIGNvbnN0IGluaXRpYWxWZXJzZU9iamVjdHMgPSB2ZXJzZURhdGE/LnZlcnNlT2JqZWN0c1xuXG4gICAgICAgIGlmIChpbml0aWFsVmVyc2VPYmplY3RzICYmICF2ZXJzZU9iamVjdHNIYXZlV29yZHMoaW5pdGlhbFZlcnNlT2JqZWN0cykpIHtcbiAgICAgICAgICBmb3IgKGNvbnN0IHZvIG9mIGluaXRpYWxWZXJzZU9iamVjdHMpIHtcbiAgICAgICAgICAgIGlmICh2b1sndGFnJ10gPT09ICdkJykgeyAvLyBjaGVjayBmb3IgZGVzY3JpcHRpdmUgdGl0bGVcbiAgICAgICAgICAgICAgLy8gcmVwYXJzZSBzbyBkZXNjcmlwdGl2ZSB0aXRsZSB0ZXh0IGlzIGJyb2tlbiBpbnRvIGFsaWduLWFibGUgd29yZHNcbiAgICAgICAgICAgICAgbGV0IHZlcnNlVGV4dCA9IFVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMuZ2V0VXNmbUZvclZlcnNlQ29udGVudCh7IHZlcnNlT2JqZWN0czogaW5pdGlhbFZlcnNlT2JqZWN0cyB9KVxuICAgICAgICAgICAgICBjb25zdCB7IHRhcmdldFZlcnNlT2JqZWN0cyB9ID0gQWxpZ25tZW50SGVscGVycy51cGRhdGVBbGlnbm1lbnRzVG9UYXJnZXRWZXJzZShpbml0aWFsVmVyc2VPYmplY3RzLCB2ZXJzZVRleHQpXG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKHRhcmdldFZlcnNlT2JqZWN0cylcbiAgICAgICAgICAgICAgdmVyc2VEYXRhLnZlcnNlT2JqZWN0cyA9IHRhcmdldFZlcnNlT2JqZWN0cyAvLyByZXBsYWNlIHZlcnNlT2JqZWN0cyB3aXRoIGFsaWduLWFibGUgY29udGVudFxuICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIG5ld1ZlcnNlc0ZvclJlZlxuICAgIH1cblxuICAgIHJldHVybiBudWxsXG4gIH1cblxuICAvKipcbiAgICogZm9yY2UgcmVsb2FkIG9mIHJlc291cmNlXG4gICAqIEBwYXJhbSB7c3RyaW5nfHVuZGVmaW5lZH0gaWdub3JlU2hhIC0gb3B0aW9uYWwgc2hhIHRvIGlnbm9yZVxuICAgKiBAcGFyYW0ge3N0cmluZ3x1bmRlZmluZWR9IHJlZiAtIG9wdGlvbmFsIHJlZmVyZW5jZSB0byBmZXRjaFxuICAgKi9cbiAgZnVuY3Rpb24gcmVsb2FkUmVzb3VyY2UoaWdub3JlU2hhID0gbnVsbCwgcmVmID0gbnVsbCkge1xuICAgIGNvbnNvbGUubG9nKGB1c2VTY3JpcHR1cmUucmVsb2FkUmVzb3VyY2UoKSBpZ25vcmVTaGE6ICR7aWdub3JlU2hhfWAgKVxuICAgIGNvbnN0IF9mZXRjaFBhcmFtczogQm9va0ZldGNoUGFyYW1zID0geyAuLi5mZXRjaFBhcmFtcyB9XG5cbiAgICBpZiAocmVmICYmIGZldGNoUGFyYW1zPy5yZXNvdXJjZUxpbmspIHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgb3duZXIsXG4gICAgICAgIGxhbmd1YWdlSWQsXG4gICAgICAgIHJlc291cmNlSWQsXG4gICAgICAgIHJlZjogX3JlZixcbiAgICAgIH0gPSBwYXJzZVJlc291cmNlTGluayhmZXRjaFBhcmFtcy5yZXNvdXJjZUxpbmspXG5cbiAgICAgIGlmIChyZWYgIT09IF9yZWYpIHsgLy8gaWYgcmVmIGNoYW5nZWQsIHVwZGF0ZSByZXNvdXJjZWxpbmtcbiAgICAgICAgY29uc3QgX3Jlc291cmNlTGluayA9IGdldFJlc291cmNlTGluayh7XG4gICAgICAgICAgb3duZXIsXG4gICAgICAgICAgbGFuZ3VhZ2VJZCxcbiAgICAgICAgICByZXNvdXJjZUlkLFxuICAgICAgICAgIHJlZixcbiAgICAgICAgfSlcbiAgICAgICAgY29uc29sZS5sb2coYHVzZVNjcmlwdHVyZS5yZWxvYWRSZXNvdXJjZSgpIG9sZCByZWYgaXMgZGlmZmVyZW50ICR7X3JlZn0sIHN3aXRjaGluZyB0byBsb2FkIHJlZjogJHtyZWZ9LCBuZXcgcmVzb3VyY2VMaW5rOiAke19yZXNvdXJjZUxpbmt9YCApXG4gICAgICAgIF9mZXRjaFBhcmFtcy5yZXNvdXJjZUxpbmsgPSBfcmVzb3VyY2VMaW5rXG4gICAgICB9XG4gICAgfVxuICAgIGZldGNoQm9vayhfZmV0Y2hQYXJhbXMsIGlnbm9yZVNoYSlcbiAgfVxuXG4gIC8vIEB0cy1pZ25vcmVcbiAgY29uc3QgY3VycmVudEJvb2tSZWYgPSBmZXRjaFBhcmFtcz8ucmVmZXJlbmNlPy5ib29rSWRcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChjdXJyZW50Qm9va1JlZikge1xuICAgICAgY29uc29sZS5sb2coYHVzZVNjcmlwdHVyZSBmZXRjaGVkIGJvb2sgY2hhbmdlZCB0byAke2N1cnJlbnRCb29rUmVmfSwgJHtyZXNvdXJjZUxpbmtffWAsIGZldGNoUGFyYW1zIClcbiAgICAgIHNldFN0YXRlKHsgYm9va09iamVjdHM6IG51bGwsIGJpYmxlVXNmbTogbnVsbCB9KVxuICAgIH1cbiAgICAvLyBAdHMtaWdub3JlXG4gIH0sIFtjdXJyZW50Qm9va1JlZl0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zb2xlLmxvZyhgdXNlU2NyaXB0dXJlIGJvb2sgcmVmIGNoYW5nZWQgdG8gJHtib29rSWR9LCAke3Jlc291cmNlTGlua199YClcbiAgICAvLyBAdHMtaWdub3JlXG4gIH0sIFtib29rSWRdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgZXhwZWN0ZWRCb29rSWQgPSBib29rSWQgfHwgJydcbiAgICBjb25zdCBmZXRjaGVkQm9va1NhbWUgPSBmZXRjaGVkQm9vayAmJiAoZmV0Y2hlZEJvb2sgPT09IGV4cGVjdGVkQm9va0lkKVxuICAgIGxldCBfdmVyc2VzRm9yUmVmID0gW11cblxuICAgIGlmICghZmV0Y2hlZEJvb2tTYW1lKSB7XG4gICAgICAvLyBpZiAoZXhwZWN0ZWRCb29rSWQgJiYgZmV0Y2hlZEJvb2spIHtcbiAgICAgIC8vICAgY29uc29sZS5sb2coYHVzZVNjcmlwdHVyZSBleHBlY3RlZCBib29rICR7ZXhwZWN0ZWRCb29rSWR9IGJ1dCBmZXRjaGVkIGJvb2sgd2FzICR7ZmV0Y2hlZEJvb2t9IC0gY2xlYXJpbmdgKVxuICAgICAgLy8gfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBfYm9va09iamVjdHMgPSBmZXRjaGVkQm9va1NhbWUgPyBib29rT2JqZWN0cyA6IG51bGxcbiAgICAgIF92ZXJzZXNGb3JSZWYgPSBnZXRWZXJzZXNGb3JSZWZfKF9ib29rT2JqZWN0cylcbiAgICAgIC8vIGNvbnNvbGUubG9nKGB1c2VTY3JpcHR1cmUgX2Jvb2tPYmplY3RzIGlzICR7ISFfYm9va09iamVjdHN9IGFuZCBib29rcyBhcmUgdGhlIHNhbWUgJHtmZXRjaGVkQm9va31gLCB7IGNvbnRlbnQsIGZldGNoUGFyYW1zIH0pXG4gICAgfVxuXG4gICAgaWYgKCFpc0VxdWFsKF92ZXJzZXNGb3JSZWYsIHZlcnNlc0ZvclJlZikpIHtcbiAgICAgIHNldFN0YXRlKHsgdmVyc2VzRm9yUmVmOiBfdmVyc2VzRm9yUmVmIH0pXG4gICAgfVxuICB9LCBbcmVmZXJlbmNlXSlcblxuICByZXR1cm4ge1xuICAgIGJpYmxlVXNmbSxcbiAgICBib29rT2JqZWN0cyxcbiAgICBnZXRWZXJzZXNGb3JSZWY6IF9nZXRWZXJzZXNGb3JSZWYsXG4gICAgcmVmZXJlbmNlOiBmZXRjaFBhcmFtcz8ucmVmZXJlbmNlLFxuICAgIHJlbG9hZFJlc291cmNlLFxuICAgIHJlc291cmNlTGluazogZmV0Y2hQYXJhbXM/LnJlc291cmNlTGluayxcbiAgICByZXNvdXJjZVN0YXRlLCAvLyBzdGF0ZSBpbmZvcm1hdGlvbiBmb3IgbGF0ZXN0IGZldGNoZWQgcmVzb3VyY2VcbiAgICByZXNvdXJjZVN0YXR1cywgLy8gc3RhdHVzIGZsYWdzIGZvciBmZXRjaGVkIHJlc291cmNlXG4gICAgdGl0bGUsXG4gICAgdXBkYXRlVmVyc2UsXG4gICAgdmVyc2lvbixcbiAgICB2ZXJzZXNGb3JSZWYsXG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6IjsrQ0FDQSxxSkFBQUEsbUJBQUEsWUFBQUEsb0JBQUEsV0FBQUMsQ0FBQSxTQUFBQyxDQUFBLEVBQUFELENBQUEsT0FBQUUsQ0FBQSxHQUFBQyxNQUFBLENBQUFDLFNBQUEsRUFBQUMsQ0FBQSxHQUFBSCxDQUFBLENBQUFJLGNBQUEsRUFBQUMsQ0FBQSxHQUFBSixNQUFBLENBQUFLLGNBQUEsY0FBQVAsQ0FBQSxFQUFBRCxDQUFBLEVBQUFFLENBQUEsSUFBQUQsQ0FBQSxDQUFBRCxDQUFBLElBQUFFLENBQUEs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
601
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVnZW5lcmF0b3JSdW50aW1lIiwiZSIsInQiLCJyIiwiT2JqZWN0IiwicHJvdG90eXBlIiwibiIsImhhc093blByb3BlcnR5IiwibyIsImRlZmluZVByb3BlcnR5IiwidmFsdWUiLCJpIiwiU3ltYm9sIiwiYSIsIml0ZXJhdG9yIiwiYyIsImFzeW5jSXRlcmF0b3IiLCJ1IiwidG9TdHJpbmdUYWciLCJkZWZpbmUiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJ3cmFwIiwiR2VuZXJhdG9yIiwiY3JlYXRlIiwiQ29udGV4dCIsIm1ha2VJbnZva2VNZXRob2QiLCJ0cnlDYXRjaCIsInR5cGUiLCJhcmciLCJjYWxsIiwiaCIsImwiLCJmIiwicyIsInkiLCJHZW5lcmF0b3JGdW5jdGlvbiIsIkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlIiwicCIsImQiLCJnZXRQcm90b3R5cGVPZiIsInYiLCJ2YWx1ZXMiLCJnIiwiZGVmaW5lSXRlcmF0b3JNZXRob2RzIiwiZm9yRWFjaCIsIl9pbnZva2UiLCJBc3luY0l0ZXJhdG9yIiwiaW52b2tlIiwiX3R5cGVvZiIsInJlc29sdmUiLCJfX2F3YWl0IiwidGhlbiIsImNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnIiwiRXJyb3IiLCJkb25lIiwibWV0aG9kIiwiZGVsZWdhdGUiLCJtYXliZUludm9rZURlbGVnYXRlIiwic2VudCIsIl9zZW50IiwiZGlzcGF0Y2hFeGNlcHRpb24iLCJhYnJ1cHQiLCJUeXBlRXJyb3IiLCJyZXN1bHROYW1lIiwibmV4dCIsIm5leHRMb2MiLCJwdXNoVHJ5RW50cnkiLCJ0cnlMb2MiLCJjYXRjaExvYyIsImZpbmFsbHlMb2MiLCJhZnRlckxvYyIsInRyeUVudHJpZXMiLCJwdXNoIiwicmVzZXRUcnlFbnRyeSIsImNvbXBsZXRpb24iLCJyZXNldCIsImlzTmFOIiwibGVuZ3RoIiwiZGlzcGxheU5hbWUiLCJpc0dlbmVyYXRvckZ1bmN0aW9uIiwiY29uc3RydWN0b3IiLCJuYW1lIiwibWFyayIsInNldFByb3RvdHlwZU9mIiwiX19wcm90b19fIiwiYXdyYXAiLCJhc3luYyIsIlByb21pc2UiLCJrZXlzIiwicmV2ZXJzZSIsInBvcCIsInByZXYiLCJjaGFyQXQiLCJzbGljZSIsInN0b3AiLCJydmFsIiwiaGFuZGxlIiwiY29tcGxldGUiLCJmaW5pc2giLCJfY2F0Y2giLCJkZWxlZ2F0ZVlpZWxkIiwiX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIiLCJhbGxvd0FycmF5TGlrZSIsIml0IiwiQXJyYXkiLCJpc0FycmF5IiwiX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IiwiRiIsIl9lIiwibm9ybWFsQ29tcGxldGlvbiIsImRpZEVyciIsImVyciIsInN0ZXAiLCJfZTIiLCJhc3luY0dlbmVyYXRvclN0ZXAiLCJnZW4iLCJyZWplY3QiLCJfbmV4dCIsIl90aHJvdyIsImtleSIsImluZm8iLCJlcnJvciIsIl9hc3luY1RvR2VuZXJhdG9yIiwiZm4iLCJzZWxmIiwiYXJncyIsImFyZ3VtZW50cyIsImFwcGx5IiwidW5kZWZpbmVkIiwib3duS2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsIl9vYmplY3RTcHJlYWQiLCJfZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsIm9iaiIsIl90b1Byb3BlcnR5S2V5IiwiX3RvUHJpbWl0aXZlIiwiU3RyaW5nIiwiaW5wdXQiLCJoaW50IiwicHJpbSIsInRvUHJpbWl0aXZlIiwicmVzIiwiTnVtYmVyIiwiX3NsaWNlZFRvQXJyYXkiLCJhcnIiLCJfYXJyYXlXaXRoSG9sZXMiLCJfaXRlcmFibGVUb0FycmF5TGltaXQiLCJfbm9uSXRlcmFibGVSZXN0IiwibWluTGVuIiwiX2FycmF5TGlrZVRvQXJyYXkiLCJ0b1N0cmluZyIsImZyb20iLCJ0ZXN0IiwibGVuIiwiYXJyMiIsInVzZUVmZmVjdCIsInVzZVJlZiIsInVzZVN0YXRlIiwiY29yZSIsIkNPTlRFTlRfTk9UX0ZPVU5EX0VSUk9SIiwiRVJST1JfU1RBVEUiLCJJTklUSUFMSVpFRF9TVEFURSIsIklOVkFMSURfTUFOSUZFU1RfRVJST1IiLCJMT0FESU5HX1NUQVRFIiwiTUFOSUZFU1RfTk9UX0xPQURFRF9FUlJPUiIsIlNDUklQVFVSRV9OT1RfTE9BREVEX0VSUk9SIiwiZ2V0VmVyc2VzIiwiaXNFcXVhbCIsIkFsaWdubWVudEhlbHBlcnMiLCJVc2ZtRmlsZUNvbnZlcnNpb25IZWxwZXJzIiwiZmV0Y2hCaWJsZUJvb2tDb3JlIiwidmVyc2VPYmplY3RzSGF2ZVdvcmRzIiwiY2xlYW51cFZlcnNlT2JqZWN0cyIsImdldEJvb2tOYW1lRnJvbVVzZm1GaWxlTmFtZSIsImdldFJlc291cmNlTGluayIsInBhcnNlUmVzb3VyY2VMaW5rIiwiQm9va0ZldGNoUGFyYW1zIiwiQm9va09iamVjdHNUeXBlIiwiU2NyaXB0dXJlUmVzb3VyY2VUeXBlIiwiU2NyaXB0dXJlUmVmZXJlbmNlVHlwZSIsIlNlcnZlckNvbmZpZ1R5cGUiLCJWZXJzZU9iamVjdHNUeXBlIiwiVmVyc2VSZWZlcmVuY2VzVHlwZSIsInBhcnNlUmVzb3VyY2VNYW5pZmVzdCIsImdldEJyYW5jaE5hbWUiLCJyZXNvdXJjZUxpbmsiLCJicmFuY2giLCJwYXJ0cyIsInNwbGl0IiwiX3BhcnRzIiwiZ2V0VmVyc2VzRm9yUmVmU3RyIiwicmVmU3RyIiwiYm9va09iamVjdHMiLCJsYW5ndWFnZUlkIiwidmVyc2VzIiwiY2hhcHRlcnMiLCJtYXAiLCJ2ZXJzZSIsIl92ZXJzZSR2ZXJzZURhdGEiLCJ2ZXJzZURhdGEiLCJ2ZXJzZU9iamVjdHMiLCJ2ZXJzZU9iamVjdHNfIiwib2NjdXJyZW5jZUluamVjdFZlcnNlT2JqZWN0cyIsImdldFZlcnNlc0ZvclJlZiIsInJlZmVyZW5jZSIsImNvbmNhdCIsImNoYXB0ZXIiLCJ1c2VTY3JpcHR1cmUiLCJfcmVmMiIsIl9yZXNvdXJjZVN0YXR1cyIsIl9mZXRjaFBhcmFtcyRyZWZlcmVuYyIsImNvbmZpZyIsInJlYWR5Rm9yRmV0Y2giLCJyZXNvdXJjZV8iLCJyZXNvdXJjZSIsInJlc291cmNlTGlua18iLCJfcmVmMiR3aG9sZUJvb2siLCJ3aG9sZUJvb2siLCJmZXRjaGluZyIsIl91c2VTdGF0ZSIsImJpYmxlVXNmbSIsImZldGNoQ291bnQiLCJmZXRjaGVkQm9vayIsImZldGNoUGFyYW1zIiwiaWdub3JlU2hhIiwiaW5pdGlhbGl6ZWQiLCJyZXNvdXJjZVN0YXRlIiwiY29udGVudCIsImZldGNoUmVzcG9uc2UiLCJmZXRjaGVkUmVzb3VyY2VzIiwibG9hZGluZ1Jlc291cmNlIiwibG9hZGluZ0NvbnRlbnQiLCJzaGEiLCJ1cmwiLCJ2ZXJzZXNGb3JSZWYiLCJfdXNlU3RhdGUyIiwic3RhdGUiLCJzZXRTdGF0ZV8iLCJfcmVmMyIsIm93bmVyIiwiX3JlZjMkYnJhbmNoIiwiX3JlZjMkcmVmIiwicmVmIiwiX3JlZjQiLCJib29rSWQiLCJfc3RhdGUiLCJzZXRTdGF0ZSIsIm5ld1N0YXRlIiwicHJldlN0YXRlIiwiaW5pdGlhdGVCb29rRmV0Y2giLCJjb25zb2xlIiwibG9nIiwiY3JlYXRlTGluayIsInJlZl8iLCJyZXNvdXJjZUlkIiwicHJvamVjdElkIiwiYm9va1JlZiIsIm5ld0ZldGNoUGFyYW1zIiwiZmV0Y2hlZCIsImZldGNoQm9vayIsIl94IiwiX2ZldGNoQm9vayIsIl9jYWxsZWUiLCJfZmV0Y2hQYXJhbXMkcmVmZXJlbmMyIiwiZmV0Y2hMaW5rIiwiX3Jlc291cmNlU3RhdGUkcmVzb3VyIiwiZmV0Y2hlZFNoYU1hdGNoZXNJZ25vcmVTaGEiLCJfcmVzb3VyY2VTdGF0ZSRyZXNvdXIyIiwiX2ZldGNoQ291bnQiLCJyZXNwb25zZSIsIl9hcmdzIiwiX2NhbGxlZSQiLCJfY29udGV4dCIsImN1cnJlbnQiLCJ2YWxpZGF0ZVJlc3BvbnNlIiwidDAiLCJfZmV0Y2hlZEJvb2skdG9Mb3dlckMiLCJpc1NhbWVCb29rIiwiZXhwZWN0ZWRCb29rSWQiLCJ0b0xvd2VyQ2FzZSIsImluY2x1ZGVzIiwiZmV0Y2hlZEJyYW5jaCIsImZldGNoaW5nQnJhbmNoIiwid2FybiIsImJpYmxlVXNmbV8iLCJnZXRWZXJzZXNGb3JSZWZfIiwidW5wcm9jZXNzZWQiLCJfcGFyc2VSZXNvdXJjZU1hbmlmZXMiLCJ0aXRsZSIsInZlcnNpb24iLCJsb2FkaW5nIiwiY29udGVudE5vdEZvdW5kRXJyb3IiLCJzY3JpcHR1cmVOb3RMb2FkZWRFcnJvciIsIm1hbmlmZXN0Tm90Rm91bmRFcnJvciIsIm1hbmlmZXN0IiwiaW52YWxpZE1hbmlmZXN0RXJyb3IiLCJyZXNvdXJjZVN0YXR1cyIsImludGlhbGl6ZWQiLCJfZ2V0VmVyc2VzRm9yUmVmIiwiY29udGVudF8iLCJ1cGRhdGVWZXJzZSIsImJvb2tPYmplY3RzXyIsIl9ib29rT2JqZWN0cyIsIm5ld1ZlcnNlc0ZvclJlZiIsIl9uZXdWZXJzZXNGb3JSZWYiLCJpbml0aWFsVmVyc2VPYmplY3RzIiwiX2l0ZXJhdG9yIiwiX3N0ZXAiLCJ2byIsInZlcnNlVGV4dCIsImdldFVzZm1Gb3JWZXJzZUNvbnRlbnQiLCJfQWxpZ25tZW50SGVscGVycyR1cGQiLCJ1cGRhdGVBbGlnbm1lbnRzVG9UYXJnZXRWZXJzZSIsInRhcmdldFZlcnNlT2JqZWN0cyIsInJlbG9hZFJlc291cmNlIiwiX2ZldGNoUGFyYW1zIiwiX3BhcnNlUmVzb3VyY2VMaW5rIiwiX3JlZiIsIl9yZXNvdXJjZUxpbmsiLCJjdXJyZW50Qm9va1JlZiIsImZldGNoZWRCb29rU2FtZSIsIl92ZXJzZXNGb3JSZWYiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvaG9va3MvdXNlU2NyaXB0dXJlLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtaWdub3JlXG5pbXBvcnQge1xuICB1c2VFZmZlY3QsXG4gIHVzZVJlZixcbiAgdXNlU3RhdGUsXG59IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgY29yZSB9IGZyb20gJ3NjcmlwdHVyZS1yZXNvdXJjZXMtcmNsJ1xuaW1wb3J0IHtcbiAgQ09OVEVOVF9OT1RfRk9VTkRfRVJST1IsXG4gIEVSUk9SX1NUQVRFLFxuICBJTklUSUFMSVpFRF9TVEFURSxcbiAgSU5WQUxJRF9NQU5JRkVTVF9FUlJPUixcbiAgTE9BRElOR19TVEFURSxcbiAgTUFOSUZFU1RfTk9UX0xPQURFRF9FUlJPUixcbiAgU0NSSVBUVVJFX05PVF9MT0FERURfRVJST1IsXG59IGZyb20gJ3RyYW5zbGF0aW9uLWhlbHBzLXJjbCdcbmltcG9ydCB7IGdldFZlcnNlcyB9IGZyb20gJ2JpYmxlLXJlZmVyZW5jZS1yYW5nZSdcbmltcG9ydCB7IGlzRXF1YWwgfSBmcm9tICdAcmVhY3QtaG9va3ovZGVlcC1lcXVhbCdcbmltcG9ydCB7IEFsaWdubWVudEhlbHBlcnMsIFVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMgfSBmcm9tICd3b3JkLWFsaWduZXItcmNsJ1xuaW1wb3J0IHtcbiAgZmV0Y2hCaWJsZUJvb2tDb3JlLFxuICB2ZXJzZU9iamVjdHNIYXZlV29yZHMsXG59IGZyb20gJy4uL3V0aWxzJ1xuaW1wb3J0IHtcbiAgY2xlYW51cFZlcnNlT2JqZWN0cyxcbiAgZ2V0Qm9va05hbWVGcm9tVXNmbUZpbGVOYW1lLFxuICBnZXRSZXNvdXJjZUxpbmssXG4gIHBhcnNlUmVzb3VyY2VMaW5rLFxufSBmcm9tICcuLi91dGlscy9TY3JpcHR1cmVTZXR0aW5ncydcbmltcG9ydCB7XG4gIEJvb2tGZXRjaFBhcmFtcyxcbiAgQm9va09iamVjdHNUeXBlLFxuICBTY3JpcHR1cmVSZXNvdXJjZVR5cGUsXG4gIFNjcmlwdHVyZVJlZmVyZW5jZVR5cGUsXG4gIFNlcnZlckNvbmZpZ1R5cGUsXG4gIFZlcnNlT2JqZWN0c1R5cGUsXG4gIFZlcnNlUmVmZXJlbmNlc1R5cGUsXG59IGZyb20gJy4uL3R5cGVzJ1xuaW1wb3J0IHsgcGFyc2VSZXNvdXJjZU1hbmlmZXN0IH0gZnJvbSAnLi9wYXJzZVJlc291cmNlTWFuaWZlc3QnXG5cbmludGVyZmFjZSBQcm9wcyB7XG4gIC8qKiByZWZlcmVuY2UgZm9yIHNjcmlwdHVyZSAqKi9cbiAgcmVmZXJlbmNlOiBTY3JpcHR1cmVSZWZlcmVuY2VUeXBlO1xuICAvKiogd2hlcmUgdG8gZ2V0IGRhdGEgKiovXG4gIGNvbmZpZzogU2VydmVyQ29uZmlnVHlwZTtcbiAgLyoqIG9wdGlvbmFsIGRpcmVjdCBwYXRoIHRvIGJpYmxlIHJlc291cmNlLCBpbiBmb3JtYXQgJHtvd25lcn0vJHtsYW5ndWFnZUlkfS8ke3Byb2plY3RJZH0vJHticmFuY2h9ICoqL1xuICByZXNvdXJjZUxpbms6IHN0cmluZ3x1bmRlZmluZWQ7XG4gIC8qKiBvcHRpb25hbCByZXNvdXJjZSBvYmplY3QgdG8gdXNlIHRvIGJ1aWxkIHJlc291cmNlTGluayAqKi9cbiAgcmVzb3VyY2U6IFNjcmlwdHVyZVJlc291cmNlVHlwZXx1bmRlZmluZWQ7XG4gIC8qKiBpZiB0cnVlIHRoZW4gZmV0Y2ggdGhlIGVudGlyZSBib29rICovXG4gIHdob2xlQm9vazogYm9vbGVhbjtcbiAgLyoqIGlmIHRydWUgdGhlbiBzZXR0aW5ncyBhcmUgcmVhZHkgZm9yIGZldGNoaW5nIGRhdGEgKi9cbiAgcmVhZHlGb3JGZXRjaDogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBleHRyYWN0IGJyYW5jaCBmcm9tIHJlc291cmNlIGxpbmtcbiAqIEBwYXJhbSByZXNvdXJjZUxpbmtcbiAqL1xuZnVuY3Rpb24gZ2V0QnJhbmNoTmFtZShyZXNvdXJjZUxpbms6IHN0cmluZykge1xuICBsZXQgYnJhbmNoID0gbnVsbFxuICByZXNvdXJjZUxpbmsgPSByZXNvdXJjZUxpbmsgfHwgJydcbiAgY29uc3QgcGFydHMgPSByZXNvdXJjZUxpbmsuc3BsaXQoJz9yZWY9JylcblxuICBpZiAocGFydHMubGVuZ3RoID4gMSkgeyAvLyBpZiByZWYgcGFyYW1ldGVyIGZvdW5kLCBnZXQgYnJhbmNoIG5hbWUgYWZ0ZXJcbiAgICBicmFuY2ggPSBwYXJ0cz8uWzFdXG4gIH0gZWxzZSB7IC8vIGZhbGwgYmFjayB0byB1c2luZyB1c2VSc3JjIGZvcm1hdCBzdWNoIGFzIFwidW5mb2xkaW5nV29yZC9lbi91c3QvbWFzdGVyXCJcbiAgICBjb25zdCBfcGFydHMgPSByZXNvdXJjZUxpbmsuc3BsaXQoJy8nKVxuICAgIGJyYW5jaCA9IF9wYXJ0cz8uWzNdXG4gIH1cbiAgcmV0dXJuIGJyYW5jaFxufVxuXG4vKipcbiAqIGdldCB0aGUgdmVyc2Ugb2JqZWN0cyBmb3IgdGhlIHJlZmVyZW5jZSBzdHJpbmdcbiAqIEBwYXJhbSB7c3RyaW5nfSByZWZTdHIgLSBpbiBmb3JtYXQgPGNoYXB0ZXI+Ojx2ZXJzZT5cbiAqIEBwYXJhbSB7b2JqZWN0fSBib29rT2JqZWN0cyAtIHBhcnNlZCB1c2ZtIGZvciBib29rXG4gKiBAcGFyYW0ge3N0cmluZ30gbGFuZ3VhZ2VJZFxuICogQHJldHVybiB7YXJyYXl8bnVsbH0gLSBvZiB2ZXJzZU9iamVjdHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFZlcnNlc0ZvclJlZlN0cihyZWZTdHIsIGJvb2tPYmplY3RzLCBsYW5ndWFnZUlkKTogVmVyc2VSZWZlcmVuY2VzVHlwZSB7XG4gIGlmIChib29rT2JqZWN0cykge1xuICAgIGxldCB2ZXJzZXMgPSBnZXRWZXJzZXMoYm9va09iamVjdHMuY2hhcHRlcnMsIHJlZlN0cilcblxuICAgIGlmIChsYW5ndWFnZUlkID09PSAnZWwteC1rb2luZScgfHwgbGFuZ3VhZ2VJZCA9PT0gJ2hibycpIHtcbiAgICAgIHZlcnNlcyA9IHZlcnNlcy5tYXAodmVyc2UgPT4ge1xuICAgICAgICBpZiAoIHZlcnNlPy52ZXJzZURhdGE/LnZlcnNlT2JqZWN0cykge1xuICAgICAgICAgIGxldCB2ZXJzZU9iamVjdHNfID0gY29yZS5vY2N1cnJlbmNlSW5qZWN0VmVyc2VPYmplY3RzKCB2ZXJzZS52ZXJzZURhdGEudmVyc2VPYmplY3RzKVxuICAgICAgICAgIHZlcnNlT2JqZWN0c18gPSBjbGVhbnVwVmVyc2VPYmplY3RzKHZlcnNlT2JqZWN0c18pXG4gICAgICAgICAgdmVyc2UudmVyc2VEYXRhLnZlcnNlT2JqZWN0cyA9IHZlcnNlT2JqZWN0c19cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmVyc2VcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgcmV0dXJuIHZlcnNlc1xuICB9XG4gIHJldHVybiBudWxsXG59XG5cbi8qKlxuICogZ2V0IHRoZSB2ZXJzZSBvYmplY3RzIGZvciB0aGUgcmVmZXJlbmNlIG9iamVjdFxuICogQHBhcmFtIHtTY3JpcHR1cmVSZWZlcmVuY2VUeXBlfSByZWZlcmVuY2VcbiAqIEBwYXJhbSB7b2JqZWN0fSBib29rT2JqZWN0cyAtIHBhcnNlZCB1c2ZtIGZvciBib29rXG4gKiBAcGFyYW0ge3N0cmluZ30gbGFuZ3VhZ2VJZFxuICogQHJldHVybiB7YXJyYXl8bnVsbH0gLSBvZiB2ZXJzZU9iamVjdHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFZlcnNlc0ZvclJlZihyZWZlcmVuY2UsIGJvb2tPYmplY3RzLCBsYW5ndWFnZUlkKTogVmVyc2VSZWZlcmVuY2VzVHlwZSB7XG4gIGNvbnN0IHJlZlN0ciA9IGAke3JlZmVyZW5jZS5jaGFwdGVyfToke3JlZmVyZW5jZS52ZXJzZX1gXG4gIHJldHVybiBnZXRWZXJzZXNGb3JSZWZTdHIocmVmU3RyLCBib29rT2JqZWN0cywgbGFuZ3VhZ2VJZClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVzZVNjcmlwdHVyZSh7IC8vIGhvb2sgZm9yIGZldGNoaW5nIHNjcmlwdHVyZVxuICBjb25maWcsXG4gIHJlYWR5Rm9yRmV0Y2gsXG4gIHJlZmVyZW5jZSxcbiAgcmVzb3VyY2U6IHJlc291cmNlXyxcbiAgcmVzb3VyY2VMaW5rOiByZXNvdXJjZUxpbmtfLFxuICB3aG9sZUJvb2sgPSBmYWxzZSxcbn0gOiBQcm9wcykge1xuICB0eXBlIFN0YXRlVHlwZXMgPSB7XG4gICAgYmlibGVVc2ZtOiBzdHJpbmcsXG4gICAgYm9va09iamVjdHM6IEJvb2tPYmplY3RzVHlwZSxcbiAgICBmZXRjaENvdW50OiBudW1iZXIsXG4gICAgZmV0Y2hlZEJvb2s6IHN0cmluZyxcbiAgICBmZXRjaFBhcmFtczogQm9va0ZldGNoUGFyYW1zfG51bGwsXG4gICAgaWdub3JlU2hhOiBzdHJpbmd8bnVsbCxcbiAgICBpbml0aWFsaXplZDogYm9vbGVhbixcbiAgICByZXNvdXJjZVN0YXRlOiB7XG4gICAgICB1bnByb2Nlc3NlZD86IGJvb2xlYW4sXG4gICAgICBiaWJsZVVzZm06IHN0cmluZyxcbiAgICAgIGJvb2tPYmplY3RzOiBCb29rT2JqZWN0c1R5cGUsXG4gICAgICBjb250ZW50OiB7fSxcbiAgICAgIGZldGNoUmVzcG9uc2U6IHt9LFxuICAgICAgZmV0Y2hlZFJlc291cmNlczoge1xuICAgICAgICBiaWJsZVVzZm06IHN0cmluZyxcbiAgICAgICAgYm9va09iamVjdHM6IEJvb2tPYmplY3RzVHlwZSxcbiAgICAgICAgZmV0Y2hDb3VudDogbnVtYmVyLFxuICAgICAgICBuYW1lOiBzdHJpbmcsXG4gICAgICAgIHNoYTogc3RyaW5nLFxuICAgICAgICB1cmw6IHN0cmluZyxcbiAgICAgIH0sXG4gICAgICBsb2FkaW5nUmVzb3VyY2U6IGJvb2xlYW4sXG4gICAgICBsb2FkaW5nQ29udGVudDogYm9vbGVhbixcbiAgICAgIHJlc291cmNlOiB7XG4gICAgICAgIG5hbWU6IHN0cmluZyxcbiAgICAgICAgbWFuaWZlc3Q6IHt9LFxuICAgICAgICByZXNvdXJjZUxpbms6IHt9XG4gICAgICB9LFxuICAgICAgc2hhOiBzdHJpbmcsXG4gICAgICB1cmw6IHN0cmluZyxcbiAgICB9LFxuICAgIHZlcnNlc0ZvclJlZjogYW55W10sXG4gIH1cblxuICBjb25zdCBmZXRjaGluZyA9IHVzZVJlZihmYWxzZSlcblxuICBjb25zdCBbc3RhdGUsIHNldFN0YXRlX10gPSB1c2VTdGF0ZSh7XG4gICAgYmlibGVVc2ZtOiBudWxsLFxuICAgIGJvb2tPYmplY3RzOiBudWxsLFxuICAgIGZldGNoQ291bnQ6IDAsXG4gICAgZmV0Y2hlZEJvb2s6ICcnLFxuICAgIGZldGNoUGFyYW1zOiBudWxsLFxuICAgIGlnbm9yZVNoYTogbnVsbCxcbiAgICBpbml0aWFsaXplZDogZmFsc2UsXG4gICAgcmVzb3VyY2VTdGF0ZToge1xuICAgICAgYm9va09iamVjdHM6IG51bGwsXG4gICAgICBiaWJsZVVzZm06IG51bGwsXG4gICAgICBjb250ZW50OiBudWxsLFxuICAgICAgZmV0Y2hSZXNwb25zZTogbnVsbCxcbiAgICAgIGZldGNoZWRSZXNvdXJjZXM6IG51bGwsXG4gICAgICBsb2FkaW5nUmVzb3VyY2U6IGZhbHNlLFxuICAgICAgbG9hZGluZ0NvbnRlbnQ6IGZhbHNlLFxuICAgICAgcmVzb3VyY2U6IG51bGwsXG4gICAgICBzaGE6IG51bGwsXG4gICAgICB1cmw6IG51bGwsXG4gICAgfSxcbiAgICB2ZXJzZXNGb3JSZWY6IFtdLFxuICB9KVxuXG4gIGNvbnN0IHtcbiAgICBvd25lcixcbiAgICBsYW5ndWFnZUlkLFxuICAgIGJyYW5jaCA9ICdtYXN0ZXInLFxuICAgIHJlZiA9IG51bGwsXG4gIH0gPSByZXNvdXJjZV8gfHwge31cblxuICBjb25zdCB7IGJvb2tJZCB9ID0gcmVmZXJlbmNlIHx8IHt9XG5cbiAgY29uc3QgX3N0YXRlOiBTdGF0ZVR5cGVzID0gc3RhdGUgLy8gVHJpY2t5OiB3b3JrLWFyb3VuZCBmb3IgYnVnIHRoYXQgc3RhbmRhcmQgdHlwZXNjcmlwdCB0eXBlIGNhc3RpbmcgZG9lcyBub3Qgd29yayBpbiAudHN4IGZpbGVzXG4gIGNvbnN0IHtcbiAgICBiaWJsZVVzZm0sXG4gICAgYm9va09iamVjdHMsXG4gICAgZmV0Y2hDb3VudCxcbiAgICBmZXRjaGVkQm9vayxcbiAgICBmZXRjaFBhcmFtcyxcbiAgICBpZ25vcmVTaGEsXG4gICAgaW5pdGlhbGl6ZWQsXG4gICAgcmVzb3VyY2VTdGF0ZSxcbiAgICB2ZXJzZXNGb3JSZWYsXG4gIH0gPSBfc3RhdGVcblxuICBmdW5jdGlvbiBzZXRTdGF0ZShuZXdTdGF0ZSkge1xuICAgIHNldFN0YXRlXyhwcmV2U3RhdGUgPT4gKHsgLi4ucHJldlN0YXRlLCAuLi5uZXdTdGF0ZSB9KSlcbiAgfVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHJlYWR5Rm9yRmV0Y2gpIHtcbiAgICAgIGluaXRpYXRlQm9va0ZldGNoKClcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpbml0aWF0ZUJvb2tGZXRjaCgpIHtcbiAgICAgIGNvbnNvbGUubG9nKGB1c2VTY3JpcHR1cmUgLSByZWFkeUZvckZldGNoIHRydWUsIGluaXRpYWxpemluZ2ApXG4gICAgICBsZXQgcmVzb3VyY2VMaW5rID0gcmVhZHlGb3JGZXRjaCAmJiByZXNvdXJjZUxpbmtfXG5cbiAgICAgIGlmIChyZXNvdXJjZV8pIHtcbiAgICAgICAgLy8gY2hlY2sgaWYgcmVzb3VyY2VMaW5rXyBkb2VzIG5vdCBleGlzdCBvciBpbiBjYXNlIHJlZiBoYXMgYmVlbiB1cGRhdGVkXG4gICAgICAgIGNvbnN0IGNyZWF0ZUxpbmsgPSAhcmVzb3VyY2VMaW5rXyB8fCAocmVmICYmIChyZWYgIT09IGJyYW5jaCkpXG5cbiAgICAgICAgaWYgKGNyZWF0ZUxpbmspIHtcbiAgICAgICAgICBjb25zdCByZWZfID0gcmVmIHx8IGJyYW5jaFxuXG4gICAgICAgICAgcmVzb3VyY2VMaW5rID0gZ2V0UmVzb3VyY2VMaW5rKHtcbiAgICAgICAgICAgIG93bmVyLFxuICAgICAgICAgICAgbGFuZ3VhZ2VJZCxcbiAgICAgICAgICAgIHJlc291cmNlSWQ6IHJlc291cmNlXz8ucHJvamVjdElkLFxuICAgICAgICAgICAgcmVmOiByZWZfLFxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY29uc3QgYm9va1JlZiA9IHsgLi4ucmVmZXJlbmNlIH1cblxuICAgICAgaWYgKHdob2xlQm9vaykge1xuICAgICAgICBkZWxldGUgYm9va1JlZi5jaGFwdGVyIC8vIHJlbW92ZSB0aGUgY2hhcHRlciBhbmQgdmVyc2Ugc28gdGhlIHdob2xlIGJvb2sgaXMgZmV0Y2hlZFxuICAgICAgICBkZWxldGUgYm9va1JlZi52ZXJzZVxuICAgICAgfVxuXG4gICAgICBpZiAocmVzb3VyY2VMaW5rICE9PSBmZXRjaFBhcmFtcz8ucmVzb3VyY2VMaW5rKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGB1c2VTY3JpcHR1cmUgLSBmb3IgJHtyZXNvdXJjZV8/LnByb2plY3RJZH0gcmVzb3VyY2VMaW5rIGlzIG5vdyAke3Jlc291cmNlTGlua30gYW5kIHJlc291cmNlTGlua189JHtyZXNvdXJjZUxpbmtffWApXG4gICAgICB9IGVsc2UgaWYgKGJvb2tSZWYgIT09IGZldGNoUGFyYW1zPy5yZWZlcmVuY2UpIHtcbiAgICAgICAgY29uc29sZS5sb2coYHVzZVNjcmlwdHVyZSAtIGJvb2sgY2hhbmdlZCB0byAke3Jlc291cmNlXz8ucHJvamVjdElkfSByZXNvdXJjZUxpbmsgaXMgbm93ICR7cmVzb3VyY2VMaW5rfWApXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG5ld0ZldGNoUGFyYW1zID0ge1xuICAgICAgICBjb25maWcsXG4gICAgICAgIHJlZmVyZW5jZTogYm9va1JlZixcbiAgICAgICAgcmVzb3VyY2VMaW5rLFxuICAgICAgfVxuXG4gICAgICBpZiAoIWlzRXF1YWwobmV3RmV0Y2hQYXJhbXMsIGZldGNoUGFyYW1zKSkge1xuICAgICAgICBjb25zb2xlLmxvZyhgdXNlU2NyaXB0dXJlIC0gcGFyYW1ldGVycyBjaGFuZ2VkYCwgeyBuZXdGZXRjaFBhcmFtcywgZmV0Y2hQYXJhbXMgfSlcbiAgICAgICAgc2V0U3RhdGUoe1xuICAgICAgICAgIGZldGNoUGFyYW1zOiBuZXdGZXRjaFBhcmFtcyxcbiAgICAgICAgICBmZXRjaGVkOiBmYWxzZSxcbiAgICAgICAgICBpbml0aWFsaXplZDogdHJ1ZSxcbiAgICAgICAgfSlcblxuICAgICAgICBmZXRjaEJvb2sobmV3RmV0Y2hQYXJhbXMpXG4gICAgICB9XG4gICAgfVxuICB9LCBbXG4gICAgcmVhZHlGb3JGZXRjaCxcbiAgICBvd25lcixcbiAgICBsYW5ndWFnZUlkLFxuICAgIGJvb2tJZCxcbiAgICBicmFuY2gsXG4gICAgcmVmLFxuICBdKVxuXG4gIC8qKlxuICAgKiBkbyBhIGZldGNoIG9mIG1hbmlmZXN0IGFuZCBib29rIG9mIHRoZSBiaWJsZSBzcGVjaWZpZWQgaW4gZmV0Y2hQYXJhbXNcbiAgICogQHBhcmFtIHtvYmplY3R9IGZldGNoUGFyYW1zXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBpZ25vcmVTaGEgLSBvcHRpb25hbCBwcmV2aW91cyBzaGEgLSBpZ25vcmUgcmVzcG9uc2VzIHRoYXQgY2FtZSBiYWNrIGZvciB0aGlzIHByZXZpb3VzIGJvb2sgY29tbWl0XG4gICAqL1xuICBhc3luYyBmdW5jdGlvbiBmZXRjaEJvb2soZmV0Y2hQYXJhbXM6IEJvb2tGZXRjaFBhcmFtcywgaWdub3JlU2hhID0gbnVsbCkge1xuICAgIHRyeSB7XG4gICAgICBpZiAoZmV0Y2hpbmcuY3VycmVudCkge1xuICAgICAgICBjb25zb2xlLmxvZyhgdXNlU2NyaXB0dXJlLmZldGNoQm9vaygpIC0gYWxyZWFkeSBmZXRjaGluZ2AsIGZldGNoUGFyYW1zKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgY29uc3QgZmV0Y2hMaW5rID0gYCR7ZmV0Y2hQYXJhbXM/LnJlc291cmNlTGlua30vJHtmZXRjaFBhcmFtcz8ucmVmZXJlbmNlPy5ib29rSWR9YFxuXG4gICAgICBpZiAoaWdub3JlU2hhKSB7XG4gICAgICAgIGNvbnN0IGZldGNoZWRTaGFNYXRjaGVzSWdub3JlU2hhID0gaWdub3JlU2hhID09PSByZXNvdXJjZVN0YXRlPy5zaGEgLy8gd2Ugd2lsbCByZWxvYWQgaWYgaWdub3JlU2hhIGdpdmVuIGFuZCBpdCBtYXRjaGVzIGN1cnJlbnQgc2hhXG5cbiAgICAgICAgaWYgKChmZXRjaExpbmsgPT09IHJlc291cmNlU3RhdGU/LnJlc291cmNlPy5yZXNvdXJjZUxpbmspICYmICFmZXRjaGVkU2hhTWF0Y2hlc0lnbm9yZVNoYSkgeyAvLyBzZWUgaWYgd2UgYWxyZWFkeSBmZXRjaGVkIHRoaXNcbiAgICAgICAgICBjb25zb2xlLmxvZyhgdXNlU2NyaXB0dXJlLmZldGNoQm9vaygpIC0gQWxyZWFkeSBmZXRjaGluZyByZXNvdXJjZUxpbmsgJHtyZXNvdXJjZVN0YXRlPy5yZXNvdXJjZT8ucmVzb3VyY2VMaW5rfSBhbmQgaWdub3JlU2hhPSR7aWdub3JlU2hhfWAsIGZldGNoUGFyYW1zKVxuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGZldGNoaW5nLmN1cnJlbnQgPSB0cnVlIC8vIGJsb2NrIG90aGVyIGZldGNoZXMgd2hpbGUgcnVubmluZ1xuICAgICAgY29uc3QgX2ZldGNoQ291bnQgPSBmZXRjaENvdW50ICsgMVxuICAgICAgY29uc29sZS5sb2coYHVzZVNjcmlwdHVyZS5mZXRjaEJvb2soKSAtIEZFVENISU5HIGJpYmxlICR7cmVzb3VyY2VfPy5wcm9qZWN0SWR9IHJlc291cmNlTGluayBpcyBub3cgJHtmZXRjaFBhcmFtcz8ucmVzb3VyY2VMaW5rfSBhbmQgaWdub3JlU2hhPSR7aWdub3JlU2hhfWAsIGZldGNoUGFyYW1zKVxuICAgICAgc2V0U3RhdGUoe1xuICAgICAgICBmZXRjaENvdW50OiBfZmV0Y2hDb3VudCxcbiAgICAgICAgZmV0Y2hlZDogZmFsc2UsXG4gICAgICAgIGlnbm9yZVNoYSxcbiAgICAgICAgcmVzb3VyY2VTdGF0ZTogeyBsb2FkaW5nUmVzb3VyY2U6IHRydWUgfSxcbiAgICAgIH0pXG5cbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2hCaWJsZUJvb2tDb3JlKGZldGNoUGFyYW1zKVxuXG4gICAgICBpZiAoIXJlc3BvbnNlIHx8IHJlc3BvbnNlPy5lcnJvcikge1xuICAgICAgICBjb25zb2xlLmxvZyhgdXNlU2NyaXB0dXJlLndhcm4oKSAtRXJyb3IgRkVUQ0hJTkcgYmlibGUgJHtyZXNvdXJjZV8/LnByb2plY3RJZH1gLCByZXNwb25zZSlcbiAgICAgICAgc2V0U3RhdGUoe1xuICAgICAgICAgIHJlc291cmNlU3RhdGU6IHtcbiAgICAgICAgICAgIGxvYWRpbmdSZXNvdXJjZTogZmFsc2UsXG4gICAgICAgICAgICByZXNwb25zZSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICBmZXRjaGluZy5jdXJyZW50ID0gZmFsc2VcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGNvbnNvbGUubG9nKGB1c2VTY3JpcHR1cmUuZmV0Y2hCb29rKCkgLSBMT0FERUQgYmlibGUgYm9vayAke3Jlc291cmNlXz8ucHJvamVjdElkfSByZXNvdXJjZUxpbmsgaXMgbm93ICR7ZmV0Y2hQYXJhbXM/LnJlc291cmNlTGlua319YCwgZmV0Y2hQYXJhbXMpXG5cbiAgICAgIGNvbnN0IGZldGNoZWRSZXNvdXJjZXMgPSB7XG4gICAgICAgIC4uLnJlc3BvbnNlLFxuICAgICAgICBmZXRjaENvdW50OiBfZmV0Y2hDb3VudCxcbiAgICAgICAgcmVmZXJlbmNlOiBmZXRjaFBhcmFtcz8ucmVmZXJlbmNlLFxuICAgICAgfVxuXG4gICAgICB2YWxpZGF0ZVJlc3BvbnNlKGZldGNoZWRSZXNvdXJjZXMsIGZldGNoUGFyYW1zKVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYHVzZVNjcmlwdHVyZS5mZXRjaEJvb2soKSAtIGhhcmQgZXJyb3IgbG9hZGluZyByZXNvdXJjZWAsIGZldGNoUGFyYW1zLCBlIClcbiAgICAgIHNldFN0YXRlKHtcbiAgICAgICAgcmVzb3VyY2VTdGF0ZToge1xuICAgICAgICAgIGxvYWRpbmdSZXNvdXJjZTogZmFsc2UsXG4gICAgICAgICAgcmVzb3VyY2U6IG51bGwsXG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgICAgZmV0Y2hpbmcuY3VycmVudCA9IGZhbHNlXG4gICAgfVxuICB9XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zb2xlLmxvZyhgdXNlU2NyaXB0dXJlIC0gZm9yICR7cmVzb3VyY2VfPy5wcm9qZWN0SWR9IHJlYWR5Rm9yRmV0Y2ggaXMgbm93ICR7cmVhZHlGb3JGZXRjaH1gKVxuICB9LCBbcmVhZHlGb3JGZXRjaF0pXG5cbiAgLyoqXG4gICAqIG1ha2Ugc3VyZSBsYXN0IGZldGNoIHJlc3BvbnNlIGlzIGZvciBjdXJyZW50IGJvb2svYnJhbmNoXG4gICAqL1xuICBmdW5jdGlvbiB2YWxpZGF0ZVJlc3BvbnNlKGZldGNoZWRSZXNvdXJjZXMsIGZldGNoUGFyYW1zOiBCb29rRmV0Y2hQYXJhbXMpIHtcbiAgICBsZXQgaXNTYW1lQm9vayA9IGZhbHNlXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGNvbnN0IGV4cGVjdGVkQm9va0lkID0gYm9va0lkIHx8ICd6enonXG4gICAgY29uc3QgZmV0Y2hlZEJvb2sgPSBnZXRCb29rTmFtZUZyb21Vc2ZtRmlsZU5hbWUoZmV0Y2hlZFJlc291cmNlcz8ubmFtZSlcbiAgICBjb25zb2xlLmxvZyhgdXNlU2NyaXB0dXJlLnZhbGlkYXRlUmVzcG9uc2UoKSAtIEN1cnJlbnQgYm9va0lkIGlzICR7Ym9va0lkfSBhbmQgc2VlaW5nICR7ZmV0Y2hlZEJvb2t9IGluIFVTRk1gKVxuICAgIGlzU2FtZUJvb2sgPSBmZXRjaGVkQm9vaz8udG9Mb3dlckNhc2UoKT8uaW5jbHVkZXMoYm9va0lkKVxuXG4gICAgY29uc3Qgc2hhID0gZmV0Y2hlZFJlc291cmNlcz8uc2hhIHx8IG51bGxcbiAgICBjb25zdCB1cmwgPSBmZXRjaGVkUmVzb3VyY2VzPy51cmwgfHwgbnVsbFxuXG4gICAgaWYgKGlzU2FtZUJvb2spIHsgLy8gYWxzbyBtYWtlIHN1cmUgaXQgaXMgdGhlIHNhbWUgYnJhbmNoXG4gICAgICBjb25zdCBmZXRjaGVkQnJhbmNoID0gZ2V0QnJhbmNoTmFtZSh1cmwpXG4gICAgICBjb25zdCBmZXRjaGluZ0JyYW5jaCA9IGdldEJyYW5jaE5hbWUoZmV0Y2hQYXJhbXM/LnJlc291cmNlTGluaylcblxuICAgICAgaWYgKGZldGNoZWRCcmFuY2ggIT09IGZldGNoaW5nQnJhbmNoKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGB1c2VTY3JpcHR1cmUudmFsaWRhdGVSZXNwb25zZSgpIGludmFsaWQgYnJhbmNoLCBleHBlY3RlZCBicmFuY2ggaXMgJHtmZXRjaGluZ0JyYW5jaH0sIGJ1dCBmZXRjaGVkQnJhbmNoIGlzICR7ZmV0Y2hlZEJyYW5jaH1gLCB7IHNoYSwgdXJsIH0pXG4gICAgICAgIGlzU2FtZUJvb2sgPSBmYWxzZVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmxvZyhgdXNlU2NyaXB0dXJlLnZhbGlkYXRlUmVzcG9uc2UoKSAtICBpbnZhbGlkIGJvb2ssIGV4cGVjdGVkQm9va0lkIGlzICR7ZXhwZWN0ZWRCb29rSWR9LCBidXQgcmVjZWl2ZWQgYm9vayBuYW1lICR7ZmV0Y2hlZEJvb2t9YCwgeyBzaGEsIHVybCB9KVxuICAgIH1cblxuICAgIGlmIChpZ25vcmVTaGEgPT09IHNoYSkge1xuICAgICAgY29uc29sZS53YXJuKGB1c2VTY3JpcHR1cmUudmFsaWRhdGVSZXNwb25zZSgpIC0gdGhlIHNoYSBpcyB0aGUgc2FtZSBhcyB0aGUgaWdub3JlIHNoYSAke3NoYX1gLCB7IHNoYSwgdXJsIH0pXG4gICAgICBpc1NhbWVCb29rID0gZmFsc2VcbiAgICB9XG5cbiAgICBpZiAoaXNTYW1lQm9vaykge1xuICAgICAgY29uc3QgYmlibGVVc2ZtXyA9IGZldGNoZWRSZXNvdXJjZXM/LmJpYmxlVXNmbVxuICAgICAgY29uc3QgYm9va09iamVjdHMgPSBmZXRjaGVkUmVzb3VyY2VzPy5ib29rT2JqZWN0c1xuICAgICAgY29uc3QgdmVyc2VzRm9yUmVmID0gZ2V0VmVyc2VzRm9yUmVmXyhib29rT2JqZWN0cylcblxuICAgICAgY29uc29sZS5sb2coYHVzZVNjcmlwdHVyZS52YWxpZGF0ZVJlc3BvbnNlKCkgLSBjb3JyZWN0IGJvb2ssIGV4cGVjdGVkQm9va0lkIGlzICR7ZXhwZWN0ZWRCb29rSWR9YCwgeyBzaGEsIHVybCB9KVxuICAgICAgY29uc3QgbmV3U3RhdGUgPSB7XG4gICAgICAgIGJpYmxlVXNmbTogYmlibGVVc2ZtXyxcbiAgICAgICAgYm9va09iamVjdHMsXG4gICAgICAgIGZldGNoZWQ6IHRydWUsXG4gICAgICAgIGZldGNoZWRCb29rOiBleHBlY3RlZEJvb2tJZCxcbiAgICAgICAgaWdub3JlU2hhOiBudWxsLFxuICAgICAgICByZXNvdXJjZVN0YXRlOiB7XG4gICAgICAgICAgYm9va09iamVjdHMsXG4gICAgICAgICAgYmlibGVVc2ZtOiBiaWJsZVVzZm1fLFxuICAgICAgICAgIGxvYWRpbmdSZXNvdXJjZTogZmFsc2UsXG4gICAgICAgICAgbG9hZGluZ0NvbnRlbnQ6IGZhbHNlLFxuICAgICAgICAgIHJlc291cmNlOiBmZXRjaGVkUmVzb3VyY2VzLFxuICAgICAgICAgIHNoYSxcbiAgICAgICAgICB1cmwsXG4gICAgICAgIH0sXG4gICAgICAgIHVucHJvY2Vzc2VkOiBmYWxzZSxcbiAgICAgICAgdmVyc2VzRm9yUmVmLFxuICAgICAgfVxuXG4gICAgICBzZXRTdGF0ZShuZXdTdGF0ZSlcbiAgICAgIGZldGNoaW5nLmN1cnJlbnQgPSBmYWxzZVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHJlc291cmNlID0gcmVzb3VyY2VTdGF0ZT8ucmVzb3VyY2VcbiAgY29uc3QgdW5wcm9jZXNzZWQgPSByZXNvdXJjZVN0YXRlPy51bnByb2Nlc3NlZFxuICBjb25zdCB7IHRpdGxlLCB2ZXJzaW9uIH0gPSBwYXJzZVJlc291cmNlTWFuaWZlc3QocmVzb3VyY2UpXG4gIGNvbnN0IGxvYWRpbmcgPSByZXNvdXJjZVN0YXRlPy5sb2FkaW5nUmVzb3VyY2UgfHwgcmVzb3VyY2VTdGF0ZT8ubG9hZGluZ0NvbnRlbnQgfHwgIXJlYWR5Rm9yRmV0Y2hcbiAgY29uc3QgY29udGVudE5vdEZvdW5kRXJyb3IgPSAhcmVzb3VyY2VTdGF0ZT8uYmlibGVVc2ZtXG4gIGNvbnN0IHNjcmlwdHVyZU5vdExvYWRlZEVycm9yID0gIXJlc291cmNlU3RhdGU/LmJvb2tPYmplY3RzXG4gIGNvbnN0IG1hbmlmZXN0Tm90Rm91bmRFcnJvciA9ICFyZXNvdXJjZT8ubWFuaWZlc3RcbiAgY29uc3QgaW52YWxpZE1hbmlmZXN0RXJyb3IgPSAhdGl0bGUgfHwgIXZlcnNpb24gfHwgIWxhbmd1YWdlSWRcbiAgY29uc3QgZXJyb3IgPSByZWFkeUZvckZldGNoICYmIGluaXRpYWxpemVkICYmICFsb2FkaW5nICYmICF1bnByb2Nlc3NlZCAmJlxuICAgIChjb250ZW50Tm90Rm91bmRFcnJvciB8fCBzY3JpcHR1cmVOb3RMb2FkZWRFcnJvciB8fCBtYW5pZmVzdE5vdEZvdW5kRXJyb3IgfHwgaW52YWxpZE1hbmlmZXN0RXJyb3IpXG4gIGNvbnN0IHJlc291cmNlU3RhdHVzID0ge1xuICAgIFtMT0FESU5HX1NUQVRFXTogbG9hZGluZyxcbiAgICBbQ09OVEVOVF9OT1RfRk9VTkRfRVJST1JdOiBjb250ZW50Tm90Rm91bmRFcnJvcixcbiAgICBbU0NSSVBUVVJFX05PVF9MT0FERURfRVJST1JdOiBzY3JpcHR1cmVOb3RMb2FkZWRFcnJvcixcbiAgICBbTUFOSUZFU1RfTk9UX0xPQURFRF9FUlJPUl06IG1hbmlmZXN0Tm90Rm91bmRFcnJvcixcbiAgICBbSU5WQUxJRF9NQU5JRkVTVF9FUlJPUl06IGludmFsaWRNYW5pZmVzdEVycm9yLFxuICAgIFtFUlJPUl9TVEFURV06IGVycm9yLFxuICAgIFtJTklUSUFMSVpFRF9TVEFURV06IGluaXRpYWxpemVkLFxuICB9XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIXJlYWR5Rm9yRmV0Y2gpIHtcbiAgICAgIGlmIChpbml0aWFsaXplZCkge1xuICAgICAgICBzZXRTdGF0ZSh7IGludGlhbGl6ZWQ6IGZhbHNlIH0pXG4gICAgICB9XG4gICAgfSBlbHNlIGlmICghaW5pdGlhbGl6ZWQpIHtcbiAgICAgIGlmIChsb2FkaW5nKSB7IC8vIG9uY2UgZmlyc3QgbG9hZCBoYXMgYmVndW4sIHdlIGFyZSBpbml0aWFsaXplZFxuICAgICAgICBzZXRTdGF0ZSh7IGludGlhbGl6ZWQ6IHRydWUgfSlcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtsb2FkaW5nLCByZWFkeUZvckZldGNoXSlcblxuICAvKipcbiAgICogZ2V0IHZlcnNlcyBmb3IgcmVmXG4gICAqIEBwYXJhbSB7c3RyaW5nfSByZWZTdHJcbiAgICogQHBhcmFtIHtvYmplY3R9IGNvbnRlbnRfXG4gICAqL1xuICBmdW5jdGlvbiBfZ2V0VmVyc2VzRm9yUmVmKHJlZlN0ciwgY29udGVudF8gPSBib29rT2JqZWN0cyk6IFZlcnNlUmVmZXJlbmNlc1R5cGUge1xuICAgIGlmIChjb250ZW50Xykge1xuICAgICAgcmV0dXJuIGdldFZlcnNlc0ZvclJlZlN0cihyZWZTdHIsIGNvbnRlbnRfLCBsYW5ndWFnZUlkKVxuICAgIH1cbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgLyoqXG4gICAqIHVwZGF0ZSB2ZXJzZSBkYXRhIGZvciBjdXJyZW50IGJvb2tcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNoYXB0ZXJcbiAgICogQHBhcmFtIHtzdHJpbmd9IHZlcnNlXG4gICAqIEBwYXJhbSB7b2JqZWN0fSB2ZXJzZURhdGFcbiAgICovXG4gIGZ1bmN0aW9uIHVwZGF0ZVZlcnNlKGNoYXB0ZXIsIHZlcnNlLCB2ZXJzZURhdGEpIHtcbiAgICBpZiAoYm9va09iamVjdHMpIHtcbiAgICAgIGNvbnN0IGJvb2tPYmplY3RzXyA9IHsgLi4uYm9va09iamVjdHMgfSAvLyBzaGFsbG93IGNvcHlcblxuICAgICAgaWYgKGJvb2tPYmplY3RzXz8uY2hhcHRlcnMpIHtcbiAgICAgICAgYm9va09iamVjdHNfLmNoYXB0ZXJzID0geyAuLi5ib29rT2JqZWN0c18uY2hhcHRlcnMgfSAvLyBzaGFsbG93IGNvcHkgY2hhcHRlcnNcblxuICAgICAgICBpZiAoYm9va09iamVjdHNfLmNoYXB0ZXJzW2NoYXB0ZXJdKSB7XG4gICAgICAgICAgYm9va09iamVjdHNfLmNoYXB0ZXJzW2NoYXB0ZXJdID0geyAuLi5ib29rT2JqZWN0c18uY2hhcHRlcnNbY2hhcHRlcl0gfSAvLyBzaGFsbG93IGNvcHkgdmVyc2VzXG4gICAgICAgICAgYm9va09iamVjdHNfLmNoYXB0ZXJzW2NoYXB0ZXJdW3ZlcnNlXSA9IHZlcnNlRGF0YVxuICAgICAgICAgIHNldFN0YXRlKHsgYm9va09iamVjdHM6IGJvb2tPYmplY3RzXyB9KVxuICAgICAgICAgIHJldHVybiBib29rT2JqZWN0c19cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgLyoqXG4gICAqIGdldCB0aGUgdmVyc2VzIGZvciBjdXJyZW50IHJlZmVyZW5jZSBvciByZWZlcmVuY2UgcmFuZ2VcbiAgICogQHBhcmFtIHtCb29rT2JqZWN0c1R5cGV9IF9ib29rT2JqZWN0c1xuICAgKi9cbiAgZnVuY3Rpb24gZ2V0VmVyc2VzRm9yUmVmXyhfYm9va09iamVjdHM6IEJvb2tPYmplY3RzVHlwZSA9IGJvb2tPYmplY3RzKTogVmVyc2VPYmplY3RzVHlwZSB7XG4gICAgbGV0IG5ld1ZlcnNlc0ZvclJlZiA9IFtdXG5cbiAgICBpZiAoX2Jvb2tPYmplY3RzKSB7XG4gICAgICBuZXdWZXJzZXNGb3JSZWYgPSBnZXRWZXJzZXNGb3JSZWYocmVmZXJlbmNlLCBfYm9va09iamVjdHMsIGxhbmd1YWdlSWQpXG5cbiAgICAgIGlmIChyZWZlcmVuY2U/LnZlcnNlID09PSAnZnJvbnQnKSB7IC8vIHNwZWNpYWwgaGFuZGxpbmcgZm9yIGZyb250IG1hdHRlclxuICAgICAgICBjb25zdCB2ZXJzZURhdGEgPSBuZXdWZXJzZXNGb3JSZWY/LlswXT8udmVyc2VEYXRhXG4gICAgICAgIGNvbnN0IGluaXRpYWxWZXJzZU9iamVjdHMgPSB2ZXJzZURhdGE/LnZlcnNlT2JqZWN0c1xuXG4gICAgICAgIGlmIChpbml0aWFsVmVyc2VPYmplY3RzICYmICF2ZXJzZU9iamVjdHNIYXZlV29yZHMoaW5pdGlhbFZlcnNlT2JqZWN0cykpIHtcbiAgICAgICAgICBmb3IgKGNvbnN0IHZvIG9mIGluaXRpYWxWZXJzZU9iamVjdHMpIHtcbiAgICAgICAgICAgIGlmICh2b1sndGFnJ10gPT09ICdkJykgeyAvLyBjaGVjayBmb3IgZGVzY3JpcHRpdmUgdGl0bGVcbiAgICAgICAgICAgICAgLy8gcmVwYXJzZSBzbyBkZXNjcmlwdGl2ZSB0aXRsZSB0ZXh0IGlzIGJyb2tlbiBpbnRvIGFsaWduLWFibGUgd29yZHNcbiAgICAgICAgICAgICAgbGV0IHZlcnNlVGV4dCA9IFVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMuZ2V0VXNmbUZvclZlcnNlQ29udGVudCh7IHZlcnNlT2JqZWN0czogaW5pdGlhbFZlcnNlT2JqZWN0cyB9KVxuICAgICAgICAgICAgICBjb25zdCB7IHRhcmdldFZlcnNlT2JqZWN0cyB9ID0gQWxpZ25tZW50SGVscGVycy51cGRhdGVBbGlnbm1lbnRzVG9UYXJnZXRWZXJzZShpbml0aWFsVmVyc2VPYmplY3RzLCB2ZXJzZVRleHQpXG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKHRhcmdldFZlcnNlT2JqZWN0cylcbiAgICAgICAgICAgICAgdmVyc2VEYXRhLnZlcnNlT2JqZWN0cyA9IHRhcmdldFZlcnNlT2JqZWN0cyAvLyByZXBsYWNlIHZlcnNlT2JqZWN0cyB3aXRoIGFsaWduLWFibGUgY29udGVudFxuICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIG5ld1ZlcnNlc0ZvclJlZlxuICAgIH1cblxuICAgIHJldHVybiBudWxsXG4gIH1cblxuICAvKipcbiAgICogZm9yY2UgcmVsb2FkIG9mIHJlc291cmNlXG4gICAqIEBwYXJhbSB7c3RyaW5nfHVuZGVmaW5lZH0gaWdub3JlU2hhIC0gb3B0aW9uYWwgc2hhIHRvIGlnbm9yZVxuICAgKiBAcGFyYW0ge3N0cmluZ3x1bmRlZmluZWR9IHJlZiAtIG9wdGlvbmFsIHJlZmVyZW5jZSB0byBmZXRjaFxuICAgKi9cbiAgZnVuY3Rpb24gcmVsb2FkUmVzb3VyY2UoaWdub3JlU2hhID0gbnVsbCwgcmVmID0gbnVsbCkge1xuICAgIGNvbnNvbGUubG9nKGB1c2VTY3JpcHR1cmUucmVsb2FkUmVzb3VyY2UoKSBpZ25vcmVTaGE6ICR7aWdub3JlU2hhfWAgKVxuICAgIGNvbnN0IF9mZXRjaFBhcmFtczogQm9va0ZldGNoUGFyYW1zID0geyAuLi5mZXRjaFBhcmFtcyB9XG5cbiAgICBpZiAocmVmICYmIGZldGNoUGFyYW1zPy5yZXNvdXJjZUxpbmspIHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgb3duZXIsXG4gICAgICAgIGxhbmd1YWdlSWQsXG4gICAgICAgIHJlc291cmNlSWQsXG4gICAgICAgIHJlZjogX3JlZixcbiAgICAgIH0gPSBwYXJzZVJlc291cmNlTGluayhmZXRjaFBhcmFtcy5yZXNvdXJjZUxpbmspXG5cbiAgICAgIGlmIChyZWYgIT09IF9yZWYpIHsgLy8gaWYgcmVmIGNoYW5nZWQsIHVwZGF0ZSByZXNvdXJjZWxpbmtcbiAgICAgICAgY29uc3QgX3Jlc291cmNlTGluayA9IGdldFJlc291cmNlTGluayh7XG4gICAgICAgICAgb3duZXIsXG4gICAgICAgICAgbGFuZ3VhZ2VJZCxcbiAgICAgICAgICByZXNvdXJjZUlkLFxuICAgICAgICAgIHJlZixcbiAgICAgICAgfSlcbiAgICAgICAgY29uc29sZS5sb2coYHVzZVNjcmlwdHVyZS5yZWxvYWRSZXNvdXJjZSgpIG9sZCByZWYgaXMgZGlmZmVyZW50ICR7X3JlZn0sIHN3aXRjaGluZyB0byBsb2FkIHJlZjogJHtyZWZ9LCBuZXcgcmVzb3VyY2VMaW5rOiAke19yZXNvdXJjZUxpbmt9YCApXG4gICAgICAgIF9mZXRjaFBhcmFtcy5yZXNvdXJjZUxpbmsgPSBfcmVzb3VyY2VMaW5rXG4gICAgICB9XG4gICAgfVxuICAgIGZldGNoQm9vayhfZmV0Y2hQYXJhbXMsIGlnbm9yZVNoYSlcbiAgfVxuXG4gIC8vIEB0cy1pZ25vcmVcbiAgY29uc3QgY3VycmVudEJvb2tSZWYgPSBmZXRjaFBhcmFtcz8ucmVmZXJlbmNlPy5ib29rSWRcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChjdXJyZW50Qm9va1JlZikge1xuICAgICAgY29uc29sZS5sb2coYHVzZVNjcmlwdHVyZSBmZXRjaGVkIGJvb2sgY2hhbmdlZCB0byAke2N1cnJlbnRCb29rUmVmfSwgJHtyZXNvdXJjZUxpbmtffWAsIGZldGNoUGFyYW1zIClcbiAgICAgIHNldFN0YXRlKHsgYm9va09iamVjdHM6IG51bGwsIGJpYmxlVXNmbTogbnVsbCB9KVxuICAgIH1cbiAgICAvLyBAdHMtaWdub3JlXG4gIH0sIFtjdXJyZW50Qm9va1JlZl0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zb2xlLmxvZyhgdXNlU2NyaXB0dXJlIGJvb2sgcmVmIGNoYW5nZWQgdG8gJHtib29rSWR9LCAke3Jlc291cmNlTGlua199YClcbiAgICAvLyBAdHMtaWdub3JlXG4gIH0sIFtib29rSWRdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgZXhwZWN0ZWRCb29rSWQgPSBib29rSWQgfHwgJydcbiAgICBjb25zdCBmZXRjaGVkQm9va1NhbWUgPSBmZXRjaGVkQm9vayAmJiAoZmV0Y2hlZEJvb2sgPT09IGV4cGVjdGVkQm9va0lkKVxuICAgIGxldCBfdmVyc2VzRm9yUmVmID0gW11cblxuICAgIGlmICghZmV0Y2hlZEJvb2tTYW1lKSB7XG4gICAgICAvLyBpZiAoZXhwZWN0ZWRCb29rSWQgJiYgZmV0Y2hlZEJvb2spIHtcbiAgICAgIC8vICAgY29uc29sZS5sb2coYHVzZVNjcmlwdHVyZSBleHBlY3RlZCBib29rICR7ZXhwZWN0ZWRCb29rSWR9IGJ1dCBmZXRjaGVkIGJvb2sgd2FzICR7ZmV0Y2hlZEJvb2t9IC0gY2xlYXJpbmdgKVxuICAgICAgLy8gfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBfYm9va09iamVjdHMgPSBmZXRjaGVkQm9va1NhbWUgPyBib29rT2JqZWN0cyA6IG51bGxcbiAgICAgIF92ZXJzZXNGb3JSZWYgPSBnZXRWZXJzZXNGb3JSZWZfKF9ib29rT2JqZWN0cylcbiAgICAgIC8vIGNvbnNvbGUubG9nKGB1c2VTY3JpcHR1cmUgX2Jvb2tPYmplY3RzIGlzICR7ISFfYm9va09iamVjdHN9IGFuZCBib29rcyBhcmUgdGhlIHNhbWUgJHtmZXRjaGVkQm9va31gLCB7IGNvbnRlbnQsIGZldGNoUGFyYW1zIH0pXG4gICAgfVxuXG4gICAgaWYgKCFpc0VxdWFsKF92ZXJzZXNGb3JSZWYsIHZlcnNlc0ZvclJlZikpIHtcbiAgICAgIHNldFN0YXRlKHsgdmVyc2VzRm9yUmVmOiBfdmVyc2VzRm9yUmVmIH0pXG4gICAgfVxuICB9LCBbcmVmZXJlbmNlXSlcblxuICByZXR1cm4ge1xuICAgIGJpYmxlVXNmbSxcbiAgICBib29rT2JqZWN0cyxcbiAgICBnZXRWZXJzZXNGb3JSZWY6IF9nZXRWZXJzZXNGb3JSZWYsXG4gICAgcmVmZXJlbmNlOiBmZXRjaFBhcmFtcz8ucmVmZXJlbmNlLFxuICAgIHJlbG9hZFJlc291cmNlLFxuICAgIHJlc291cmNlTGluazogZmV0Y2hQYXJhbXM/LnJlc291cmNlTGluayxcbiAgICByZXNvdXJjZVN0YXRlLCAvLyBzdGF0ZSBpbmZvcm1hdGlvbiBmb3IgbGF0ZXN0IGZldGNoZWQgcmVzb3VyY2VcbiAgICByZXNvdXJjZVN0YXR1cywgLy8gc3RhdHVzIGZsYWdzIGZvciBmZXRjaGVkIHJlc291cmNlXG4gICAgdGl0bGUsXG4gICAgdXBkYXRlVmVyc2UsXG4gICAgdmVyc2lvbixcbiAgICB2ZXJzZXNGb3JSZWYsXG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6IjsrQ0FDQSxxSkFBQUEsbUJBQUEsWUFBQUEsb0JBQUEsV0FBQUMsQ0FBQSxTQUFBQyxDQUFBLEVBQUFELENBQUEsT0FBQUUsQ0FBQSxHQUFBQyxNQUFBLENBQUFDLFNBQUEsRUFBQUMsQ0FBQSxHQUFBSCxDQUFBLENBQUFJLGNBQUEsRUFBQUMsQ0FBQSxHQUFBSixNQUFBLENBQUFLLGNBQUEsY0FBQVAsQ0FBQSxFQUFBRCxDQUFBLEVBQUFFLENBQUEsSUFBQUQsQ0FBQSxDQUFBRCxDQUFBLElBQUFF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