single-scripture-rcl 3.4.14-beta.9 → 3.4.15-beta.17

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.
@@ -1,8 +1,8 @@
1
1
  function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
2
2
  function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator["return"] && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, "catch": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; }
3
- function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
4
3
  function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
5
4
  function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
5
+ function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
6
6
  function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
7
7
  function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
8
8
  function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
@@ -81,7 +81,7 @@ import { isEqual } from '@react-hookz/deep-equal';
81
81
  import { getVerses } from 'bible-reference-range';
82
82
  import { ScripturePane, ScriptureSelector } from '..';
83
83
  import { useScriptureSettings } from '../../hooks/useScriptureSettings';
84
- import { cleanupVerseObjects, fixOccurrence, getBookNameFromUsfmFileName, getResourceLink, getResourceMessage, getScriptureVersionSettings, isOriginalBible } from '../../utils/ScriptureSettings';
84
+ import { cleanupVerseObjects, fetchBook, fixOccurrence, getBookNameFromUsfmFileName, getResourceLink, getResourceMessage, getScriptureVersionSettings, isOriginalBible } from '../../utils/ScriptureSettings';
85
85
  import { delay } from '../../utils/delay';
86
86
  import { areMapsTheSame } from '../../utils/maps';
87
87
  import { Title } from '../ScripturePane/styled';
@@ -214,6 +214,7 @@ export default function ScriptureCard(_ref2) {
214
214
  saveClicked: false,
215
215
  saveContent: null,
216
216
  saveDiffPatch: false,
217
+ saveFullBibleContent: null,
217
218
  selections: new Map(),
218
219
  showAlignmentPopup: false,
219
220
  startSave: false,
@@ -238,6 +239,7 @@ export default function ScriptureCard(_ref2) {
238
239
  saveClicked = state.saveClicked,
239
240
  saveContent = state.saveContent,
240
241
  saveDiffPatch = state.saveDiffPatch,
242
+ saveFullBibleContent = state.saveFullBibleContent,
241
243
  selections = state.selections,
242
244
  showAlignmentPopup = state.showAlignmentPopup,
243
245
  startSave = state.startSave,
@@ -671,81 +673,141 @@ export default function ScriptureCard(_ref2) {
671
673
  onSaveEditPatch = _useEdit.onSaveEditPatch;
672
674
  React.useEffect(function () {
673
675
  // when we get a save saveError
674
- if (saveError && isSaveError) {
676
+ if (saveError && isSaveError && !startSave) {
677
+ // if error then show after save completes, since we may retry
675
678
  console.log("save error", saveError);
676
679
  onResourceError && onResourceError(null, false, null, "Error saving ".concat(languageId_, "_").concat(resourceId, " ").concat(saveError), true);
677
680
  }
678
- }, [saveError, isSaveError]);
681
+ }, [saveError, isSaveError, startSave]);
679
682
  React.useEffect(function () {
680
683
  // when startSave goes true, save edits to user branch and then clear startSave
684
+ function _saveSuccesful() {
685
+ console.log("saveChangesToCloud() - save scripture edits success");
686
+ setCardsSaving(function (prevCardsSaving) {
687
+ return prevCardsSaving.filter(function (cardId) {
688
+ return cardId !== cardResourceId;
689
+ });
690
+ });
691
+ setState({
692
+ startSave: false
693
+ });
694
+ var unsavedCardIndices = Object.keys(unsavedChangesList);
695
+ if (unsavedCardIndices !== null && unsavedCardIndices !== void 0 && unsavedCardIndices.length) {
696
+ var _iterator = _createForOfIteratorHelper(unsavedCardIndices),
697
+ _step;
698
+ try {
699
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
700
+ var cardIndex = _step.value;
701
+ var clearChanges = unsavedChangesList[cardIndex].clearChanges;
702
+ clearChanges && clearChanges();
703
+ }
704
+ } catch (err) {
705
+ _iterator.e(err);
706
+ } finally {
707
+ _iterator.f();
708
+ }
709
+ }
710
+ console.info('saveChangesToCloud() - Reloading resource');
711
+ setState({
712
+ startSave: false,
713
+ readyForFetch: true,
714
+ saveFullBibleContent: null,
715
+ saveContent: null,
716
+ ref: userEditBranchName
717
+ });
718
+ delay(100).then(function () {
719
+ setCardsSaving(function (prevCardsSaving) {
720
+ return prevCardsSaving.filter(function (cardId) {
721
+ return cardId !== cardResourceId;
722
+ });
723
+ });
724
+ scriptureConfig === null || scriptureConfig === void 0 || scriptureConfig.reloadResource(sha, userEditBranchName);
725
+ });
726
+ return true;
727
+ }
681
728
  var _saveEdit = /*#__PURE__*/function () {
682
729
  var _ref4 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
683
- var saveFunction;
730
+ var uploadFunction, success, error, results, _saveContent, fileSha, savedBibleUsfm, editedBibleUsfm, upToDate, diffPatch;
684
731
  return _regeneratorRuntime().wrap(function _callee$(_context) {
685
732
  while (1) switch (_context.prev = _context.next) {
686
733
  case 0:
687
734
  // begin uploading new USFM
688
735
  console.info("saveChangesToCloud() - Using sha: ".concat(sha));
689
- saveFunction = onSaveEdit;
736
+ uploadFunction = onSaveEdit;
690
737
  if (saveDiffPatch) {
691
- saveFunction = onSaveEditPatch; // if we are sending up a diffpatch, we will use this method
738
+ uploadFunction = onSaveEditPatch; // if we are sending up a diffpatch, we will use this method
692
739
  }
693
740
  _context.next = 5;
694
- return saveFunction(userEditBranchName).then(function (success) {
695
- // push change to server
696
- if (success) {
697
- console.log("saveChangesToCloud() - save scripture edits success");
698
- setCardsSaving(function (prevCardsSaving) {
699
- return prevCardsSaving.filter(function (cardId) {
700
- return cardId !== cardResourceId;
701
- });
702
- });
703
- setState({
704
- startSave: false
705
- });
706
- var unsavedCardIndices = Object.keys(unsavedChangesList);
707
- if (unsavedCardIndices !== null && unsavedCardIndices !== void 0 && unsavedCardIndices.length) {
708
- var _iterator = _createForOfIteratorHelper(unsavedCardIndices),
709
- _step;
710
- try {
711
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
712
- var cardIndex = _step.value;
713
- var clearChanges = unsavedChangesList[cardIndex].clearChanges;
714
- clearChanges && clearChanges();
715
- }
716
- } catch (err) {
717
- _iterator.e(err);
718
- } finally {
719
- _iterator.f();
720
- }
721
- }
722
- console.info('saveChangesToCloud() - Reloading resource');
723
- setState({
724
- startSave: false,
725
- readyForFetch: true,
726
- ref: userEditBranchName
727
- });
728
- delay(100).then(function () {
729
- setCardsSaving(function (prevCardsSaving) {
730
- return prevCardsSaving.filter(function (cardId) {
731
- return cardId !== cardResourceId;
732
- });
733
- });
734
- scriptureConfig === null || scriptureConfig === void 0 || scriptureConfig.reloadResource(sha, userEditBranchName);
735
- });
736
- } else {
737
- console.error('saveChangesToCloud() - saving changed scripture failed');
738
- setCardsSaving(function (prevCardsSaving) {
739
- return prevCardsSaving.filter(function (cardId) {
740
- return cardId !== cardResourceId;
741
- });
742
- });
743
- setState({
744
- startSave: false
745
- });
746
- }
747
- });
741
+ return uploadFunction(userEditBranchName);
748
742
  case 5:
743
+ success = _context.sent;
744
+ // push change to server
745
+ error = success ? null : 'saving changed scripture failed';
746
+ if (success) {
747
+ _context.next = 32;
748
+ break;
749
+ }
750
+ console.error('saveChangesToCloud() - saving changed scripture failed, retrying');
751
+ _context.next = 11;
752
+ return delay(100);
753
+ case 11:
754
+ _context.next = 13;
755
+ return fetchBook(server, httpConfig, scriptureConfig === null || scriptureConfig === void 0 ? void 0 : scriptureConfig.resource, scriptureConfig === null || scriptureConfig === void 0 ? void 0 : scriptureConfig.reference);
756
+ case 13:
757
+ results = _context.sent;
758
+ error = results === null || results === void 0 ? void 0 : results.error;
759
+ _saveContent = saveContent;
760
+ fileSha = null;
761
+ savedBibleUsfm = results === null || results === void 0 ? void 0 : results.bibleUsfm;
762
+ editedBibleUsfm = saveFullBibleContent === null || saveFullBibleContent === void 0 ? void 0 : saveFullBibleContent["new"];
763
+ upToDate = savedBibleUsfm === editedBibleUsfm; // check if changed
764
+ if (error) {
765
+ _context.next = 32;
766
+ break;
767
+ }
768
+ if (!upToDate) {
769
+ _context.next = 25;
770
+ break;
771
+ }
772
+ success = true;
773
+ _context.next = 32;
774
+ break;
775
+ case 25:
776
+ if (saveDiffPatch) {
777
+ // regenerate the patch against the latest content
778
+ diffPatch = getPatch(saveFullBibleContent === null || saveFullBibleContent === void 0 ? void 0 : saveFullBibleContent.filename, savedBibleUsfm, editedBibleUsfm, false);
779
+ _saveContent = diffPatch;
780
+ fileSha = results === null || results === void 0 ? void 0 : results.sha;
781
+ }
782
+ _context.next = 28;
783
+ return delay(100);
784
+ case 28:
785
+ _context.next = 30;
786
+ return uploadFunction(userEditBranchName, _saveContent, fileSha);
787
+ case 30:
788
+ success = _context.sent;
789
+ // push change to server
790
+ if (!success) {
791
+ error = 'saving changed scripture failed on second attempt';
792
+ }
793
+ case 32:
794
+ if (!(!error && success)) {
795
+ _context.next = 34;
796
+ break;
797
+ }
798
+ return _context.abrupt("return", _saveSuccesful());
799
+ case 34:
800
+ console.error("saveChangesToCloud() - ".concat(error || 'unknown save error'));
801
+ setCardsSaving(function (prevCardsSaving) {
802
+ return prevCardsSaving.filter(function (cardId) {
803
+ return cardId !== cardResourceId;
804
+ });
805
+ });
806
+ setState({
807
+ startSave: false
808
+ });
809
+ return _context.abrupt("return", false);
810
+ case 38:
749
811
  case "end":
750
812
  return _context.stop();
751
813
  }
@@ -813,12 +875,12 @@ export default function ScriptureCard(_ref2) {
813
875
  }
814
876
  function _getReadyForSave() {
815
877
  _getReadyForSave = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {
816
- var createEditBranch, branch, unsavedCardIndices, bibleUsfm_, bibleUsfm, mergeFail, _cardNum, _iterator2, _step2, cardIndex, _unsavedChangesList$_, getChanges, _state, newUsfm, _getChanges, _ref5, updatedVerseObjects, _saveDiffPatch, newBookJson, _iterator3, _step3, _cardIndex, _cardNum2, _unsavedChangesList$_2, _getChanges2, _state2, _newUsfm, _getChanges3, newVerseText, _ref6, _updatedVerseObjects, targetVerseObjects_, _AlignmentHelpers$upd, targetVerseObjects, _scriptureConfig$reso11, filename, diffPatch;
878
+ var createEditBranch, branch, unsavedCardIndices, bibleUsfmInitial, bibleUsfmNew, mergeFail, _cardNum, _iterator2, _step2, cardIndex, _unsavedChangesList$_, getChanges, _state, newUsfm, _getChanges, _ref5, updatedVerseObjects, _saveDiffPatch, _saveFullBibleContent, _saveContent, newBookJson, _iterator3, _step3, _cardIndex, _cardNum2, _unsavedChangesList$_2, _getChanges2, _state2, _newUsfm, _getChanges3, newVerseText, _ref6, _updatedVerseObjects, targetVerseObjects_, _AlignmentHelpers$upd, targetVerseObjects, _scriptureConfig$reso11, filename, diffPatch;
817
879
  return _regeneratorRuntime().wrap(function _callee2$(_context2) {
818
880
  while (1) switch (_context2.prev = _context2.next) {
819
881
  case 0:
820
882
  if (!saveClicked) {
821
- _context2.next = 71;
883
+ _context2.next = 74;
822
884
  break;
823
885
  }
824
886
  createEditBranch = !_usingUserBranch;
@@ -872,13 +934,13 @@ export default function ScriptureCard(_ref2) {
872
934
  console.log("saveChangesToCloud - getting verse changes");
873
935
  unsavedCardIndices = Object.keys(unsavedChangesList);
874
936
  if (!(unsavedCardIndices !== null && unsavedCardIndices !== void 0 && unsavedCardIndices.length)) {
875
- _context2.next = 71;
937
+ _context2.next = 74;
876
938
  break;
877
939
  }
878
- bibleUsfm_ = getCurrentBook(scriptureConfig, bookId); // get original USFM
879
- bibleUsfm = bibleUsfm_; // make a copy to edit
940
+ bibleUsfmInitial = getCurrentBook(scriptureConfig, bookId); // get original USFM
941
+ bibleUsfmNew = bibleUsfmInitial; // make a copy to edit
880
942
  mergeFail = false;
881
- if (!bibleUsfm_) {
943
+ if (!bibleUsfmInitial) {
882
944
  _context2.next = 53;
883
945
  break;
884
946
  }
@@ -900,15 +962,15 @@ export default function ScriptureCard(_ref2) {
900
962
  }
901
963
  newUsfm = void 0;
902
964
  _getChanges = getChanges(_state), _ref5 = _getChanges.ref, updatedVerseObjects = _getChanges.updatedVerseObjects;
903
- if (updatedVerseObjects && bibleUsfm) {
965
+ if (updatedVerseObjects && bibleUsfmNew) {
904
966
  // just replace verse
905
- newUsfm = mergeVerseObjectsIntoBibleUsfm(bibleUsfm, _ref5, updatedVerseObjects, _cardNum);
967
+ newUsfm = mergeVerseObjectsIntoBibleUsfm(bibleUsfmNew, _ref5, updatedVerseObjects, _cardNum);
906
968
  }
907
969
  if (!newUsfm) {
908
970
  _context2.next = 41;
909
971
  break;
910
972
  }
911
- bibleUsfm = newUsfm;
973
+ bibleUsfmNew = newUsfm;
912
974
  _context2.next = 43;
913
975
  break;
914
976
  case 41:
@@ -930,8 +992,10 @@ export default function ScriptureCard(_ref2) {
930
992
  return _context2.finish(50);
931
993
  case 53:
932
994
  _saveDiffPatch = false; // if true then we will send up a diffpatch instead of the whole book
995
+ _saveFullBibleContent = null;
996
+ _saveContent = bibleUsfmNew;
933
997
  if (!mergeFail) {
934
- _context2.next = 61;
998
+ _context2.next = 63;
935
999
  break;
936
1000
  }
937
1001
  // if we failed to merge, fallback to brute force verse objects to USFM
@@ -966,20 +1030,20 @@ export default function ScriptureCard(_ref2) {
966
1030
  } finally {
967
1031
  _iterator3.f();
968
1032
  }
969
- bibleUsfm = usfmjs.toUSFM(newBookJson, {
1033
+ _saveContent = usfmjs.toUSFM(newBookJson, {
970
1034
  forcedNewLines: true
971
1035
  });
972
- _context2.next = 70;
1036
+ _context2.next = 73;
973
1037
  break;
974
- case 61:
1038
+ case 63:
975
1039
  // if only changed a few verses, we will just make a diffpatch instead of sending the whole book
976
1040
  filename = scriptureConfig === null || scriptureConfig === void 0 || (_scriptureConfig$reso11 = scriptureConfig.resourceState) === null || _scriptureConfig$reso11 === void 0 || (_scriptureConfig$reso11 = _scriptureConfig$reso11.resource) === null || _scriptureConfig$reso11 === void 0 ? void 0 : _scriptureConfig$reso11.name; // Like "57-TIT.usfm"
977
- if (!(filename && bibleUsfm && bibleUsfm_)) {
978
- _context2.next = 70;
1041
+ if (!(filename && bibleUsfmNew && bibleUsfmInitial)) {
1042
+ _context2.next = 73;
979
1043
  break;
980
1044
  }
981
- if (!(bibleUsfm_ === bibleUsfm)) {
982
- _context2.next = 67;
1045
+ if (!(bibleUsfmInitial === bibleUsfmNew)) {
1046
+ _context2.next = 69;
983
1047
  break;
984
1048
  }
985
1049
  // if no data change, then skip save because DCS crashes on an empty patch
@@ -988,20 +1052,27 @@ export default function ScriptureCard(_ref2) {
988
1052
  saveClicked: false
989
1053
  });
990
1054
  return _context2.abrupt("return");
991
- case 67:
992
- diffPatch = getPatch(filename, bibleUsfm_, bibleUsfm, false);
993
- bibleUsfm_ = diffPatch; // replace whole book with patch data (much shorter)
1055
+ case 69:
1056
+ diffPatch = getPatch(filename, bibleUsfmInitial, bibleUsfmNew, false);
994
1057
  _saveDiffPatch = true;
995
- case 70:
996
- if (bibleUsfm) {
997
- console.log("saveChangesToCloud() - saving new USFM: ".concat(bibleUsfm.substring(0, 100), "..."));
1058
+ _saveContent = diffPatch; // replace whole book content with just patch data (much faster uploads)
1059
+ _saveFullBibleContent = {
1060
+ // keep track of patch data in case we need to retry save
1061
+ filename: filename,
1062
+ initial: bibleUsfmInitial,
1063
+ "new": bibleUsfmNew
1064
+ };
1065
+ case 73:
1066
+ if (bibleUsfmNew) {
1067
+ console.log("saveChangesToCloud() - saving new USFM: ".concat(bibleUsfmNew.substring(0, 100), "..."));
998
1068
  setCardsSaving(function (prevCardsSaving) {
999
1069
  return [].concat(_toConsumableArray(prevCardsSaving), [cardResourceId]);
1000
1070
  });
1001
1071
  setState({
1002
- saveContent: bibleUsfm_,
1072
+ saveContent: _saveContent,
1003
1073
  saveClicked: false,
1004
1074
  saveDiffPatch: _saveDiffPatch,
1075
+ saveFullBibleContent: _saveFullBibleContent,
1005
1076
  startSave: true
1006
1077
  });
1007
1078
  } else {
@@ -1011,7 +1082,7 @@ export default function ScriptureCard(_ref2) {
1011
1082
  saveClicked: false
1012
1083
  });
1013
1084
  }
1014
- case 71:
1085
+ case 74:
1015
1086
  case "end":
1016
1087
  return _context2.stop();
1017
1088
  }
@@ -1432,4 +1503,4 @@ ScriptureCard.propTypes = {
1432
1503
  /** use method for using local storage specific for user */
1433
1504
  useUserLocalStorage: PropTypes.func.isRequired
1434
1505
  };
1435
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVnZW5lcmF0b3JSdW50aW1lIiwiZSIsInQiLCJyIiwiT2JqZWN0IiwicHJvdG90eXBlIiwibiIsImhhc093blByb3BlcnR5IiwibyIsImRlZmluZVByb3BlcnR5IiwidmFsdWUiLCJpIiwiU3ltYm9sIiwiYSIsIml0ZXJhdG9yIiwiYyIsImFzeW5jSXRlcmF0b3IiLCJ1IiwidG9TdHJpbmdUYWciLCJkZWZpbmUiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJ3cmFwIiwiR2VuZXJhdG9yIiwiY3JlYXRlIiwiQ29udGV4dCIsIm1ha2VJbnZva2VNZXRob2QiLCJ0cnlDYXRjaCIsInR5cGUiLCJhcmciLCJjYWxsIiwiaCIsImwiLCJmIiwicyIsInkiLCJHZW5lcmF0b3JGdW5jdGlvbiIsIkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlIiwicCIsImQiLCJnZXRQcm90b3R5cGVPZiIsInYiLCJ2YWx1ZXMiLCJnIiwiZGVmaW5lSXRlcmF0b3JNZXRob2RzIiwiZm9yRWFjaCIsIl9pbnZva2UiLCJBc3luY0l0ZXJhdG9yIiwiaW52b2tlIiwiX3R5cGVvZiIsInJlc29sdmUiLCJfX2F3YWl0IiwidGhlbiIsImNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnIiwiRXJyb3IiLCJkb25lIiwibWV0aG9kIiwiZGVsZWdhdGUiLCJtYXliZUludm9rZURlbGVnYXRlIiwic2VudCIsIl9zZW50IiwiZGlzcGF0Y2hFeGNlcHRpb24iLCJhYnJ1cHQiLCJUeXBlRXJyb3IiLCJyZXN1bHROYW1lIiwibmV4dCIsIm5leHRMb2MiLCJwdXNoVHJ5RW50cnkiLCJ0cnlMb2MiLCJjYXRjaExvYyIsImZpbmFsbHlMb2MiLCJhZnRlckxvYyIsInRyeUVudHJpZXMiLCJwdXNoIiwicmVzZXRUcnlFbnRyeSIsImNvbXBsZXRpb24iLCJyZXNldCIsImlzTmFOIiwibGVuZ3RoIiwiZGlzcGxheU5hbWUiLCJpc0dlbmVyYXRvckZ1bmN0aW9uIiwiY29uc3RydWN0b3IiLCJuYW1lIiwibWFyayIsInNldFByb3RvdHlwZU9mIiwiX19wcm90b19fIiwiYXdyYXAiLCJhc3luYyIsIlByb21pc2UiLCJrZXlzIiwicmV2ZXJzZSIsInBvcCIsInByZXYiLCJjaGFyQXQiLCJzbGljZSIsInN0b3AiLCJydmFsIiwiaGFuZGxlIiwiY29tcGxldGUiLCJmaW5pc2giLCJfY2F0Y2giLCJkZWxlZ2F0ZVlpZWxkIiwiX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIiLCJhbGxvd0FycmF5TGlrZSIsIml0IiwiQXJyYXkiLCJpc0FycmF5IiwiX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IiwiRiIsIl9lIiwibm9ybWFsQ29tcGxldGlvbiIsImRpZEVyciIsImVyciIsInN0ZXAiLCJfZTIiLCJhc3luY0dlbmVyYXRvclN0ZXAiLCJnZW4iLCJyZWplY3QiLCJfbmV4dCIsIl90aHJvdyIsImtleSIsImluZm8iLCJlcnJvciIsIl9hc3luY1RvR2VuZXJhdG9yIiwiZm4iLCJzZWxmIiwiYXJncyIsImFyZ3VtZW50cyIsImFwcGx5IiwidW5kZWZpbmVkIiwiX2V4dGVuZHMiLCJhc3NpZ24iLCJiaW5kIiwidGFyZ2V0Iiwic291cmNlIiwiX3RvQ29uc3VtYWJsZUFycmF5IiwiYXJyIiwiX2FycmF5V2l0aG91dEhvbGVzIiwiX2l0ZXJhYmxlVG9BcnJheSIsIl9ub25JdGVyYWJsZVNwcmVhZCIsIml0ZXIiLCJmcm9tIiwiX2FycmF5TGlrZVRvQXJyYXkiLCJvd25LZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiX29iamVjdFNwcmVhZCIsIl9kZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwib2JqIiwiX3RvUHJvcGVydHlLZXkiLCJfdG9QcmltaXRpdmUiLCJTdHJpbmciLCJpbnB1dCIsImhpbnQiLCJwcmltIiwidG9QcmltaXRpdmUiLCJyZXMiLCJOdW1iZXIiLCJfc2xpY2VkVG9BcnJheSIsIl9hcnJheVdpdGhIb2xlcyIsIl9pdGVyYWJsZVRvQXJyYXlMaW1pdCIsIl9ub25JdGVyYWJsZVJlc3QiLCJtaW5MZW4iLCJ0b1N0cmluZyIsInRlc3QiLCJsZW4iLCJhcnIyIiwiUmVhY3QiLCJQcm9wVHlwZXMiLCJjb3JlIiwiU2VsZWN0aW9uc0NvbnRleHRQcm92aWRlciIsInVzZm1qcyIsInVzZUVkaXQiLCJJY29uQnV0dG9uIiwiUnhMaW5rMiIsIlJ4TGlua0JyZWFrMiIsIkNhcmQiLCJFcnJvckRpYWxvZyIsIkVSUk9SX1NUQVRFIiwiTUFOSUZFU1RfTk9UX0xPQURFRF9FUlJPUiIsIlVwZGF0ZUJyYW5jaEJ1dHRvbiIsInVzZUJyYW5jaE1lcmdlciIsInVzZUNhcmRTdGF0ZSIsInVzZUNvbnRlbnRVcGRhdGVQcm9wcyIsInVzZU1hc3Rlck1lcmdlUHJvcHMiLCJ1c2VVc2VyQnJhbmNoIiwiZ2V0UXVvdGVNYXRjaGVzSW5Cb29rUmVmIiwiQWxpZ25tZW50SGVscGVycyIsIlVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMiLCJpc0VxdWFsIiwiZ2V0VmVyc2VzIiwiU2NyaXB0dXJlUGFuZSIsIlNjcmlwdHVyZVNlbGVjdG9yIiwidXNlU2NyaXB0dXJlU2V0dGluZ3MiLCJjbGVhbnVwVmVyc2VPYmplY3RzIiwiZml4T2NjdXJyZW5jZSIsImdldEJvb2tOYW1lRnJvbVVzZm1GaWxlTmFtZSIsImdldFJlc291cmNlTGluayIsImdldFJlc291cmNlTWVzc2FnZSIsImdldFNjcmlwdHVyZVZlcnNpb25TZXR0aW5ncyIsImlzT3JpZ2luYWxCaWJsZSIsImRlbGF5IiwiYXJlTWFwc1RoZVNhbWUiLCJUaXRsZSIsIk5UX09SSUdfTEFORyIsIk9SSUdJTkFMX1NPVVJDRSIsIk9UX09SSUdfTEFORyIsIlZlcnNlU2VsZWN0b3JQb3B1cCIsImdldFBhdGNoIiwiS0VZX0ZPTlRfU0laRV9CQVNFIiwibGFiZWwiLCJzdHlsZSIsIm1hcmdpblRvcCIsIndpZHRoIiwiY29tcGFyZU9iamVjdCIsInZlcnNlUmVmIiwiX3ZlcnNlRGF0YSR2ZXJzZU9iamVjIiwiX3JlZiIsImNoYXB0ZXIiLCJ2ZXJzZSIsInZlcnNlRGF0YSIsInZlcnNlT2JqZWN0cyIsIkpTT04iLCJzdHJpbmdpZnkiLCJhcmVWZXJzZXNTYW1lIiwidmVyc2VzRm9yUmVmMSIsInZlcnNlc0ZvclJlZjIiLCJhcmVTYW1lIiwidmVyc2UxIiwidmVyc2UyIiwiZ2V0Q3VycmVudEJvb2siLCJzY3JpcHR1cmVDb25maWciLCJib29rSWQiLCJfc2NyaXB0dXJlQ29uZmlnJHJlc28iLCJfc2NyaXB0dXJlQ29uZmlnJHJlc28yIiwiX2Jvb2tOYW1lJHRvTG93ZXJDYXNlIiwibGF0ZXN0QmlibGUiLCJyZXNvdXJjZVN0YXRlIiwicmVzb3VyY2UiLCJwcm9qZWN0SWQiLCJmaWxlbmFtZSIsImlzQm9va1ZhbGlkIiwiYm9va05hbWUiLCJ0b0xvd2VyQ2FzZSIsImluY2x1ZGVzIiwiY29uc29sZSIsIndhcm4iLCJjb25jYXQiLCJiaWJsZVVzZm0iLCJTY3JpcHR1cmVDYXJkIiwiX3JlZjIiLCJfc2NyaXB0dXJlQ29uZmlnJHJlc28zIiwiX3NjcmlwdHVyZUNvbmZpZyRyZXNvNCIsIl9zY3JpcHR1cmVDb25maWckcmVzbzUiLCJfc2NyaXB0dXJlQ29uZmlnJHJlc282IiwiX3NjcmlwdHVyZUNvbmZpZyRyZXNvNyIsIl9hdXRoZW50aWNhdGlvbiR0b2tlbiIsIl9zY3JpcHR1cmVDb25maWckcmVzbzkiLCJfc2NyaXB0dXJlQ29uZmlnJHJlc28xMCIsIl9odHRwQ29uZmlnIiwiX2h0dHBDb25maWcyIiwiX2F1dGhlbnRpY2F0aW9uJHVzZXIiLCJfdmVyc2VzRm9yUmVmMyIsIl92ZXJzZXNGb3JSZWY0IiwiYXBwUmVmIiwiYXV0aGVudGljYXRpb24iLCJib29rSW5kZXgiLCJjYXJkTnVtIiwiY2xhc3NlcyIsImRpc2FibGVXb3JkUG9wb3ZlciIsImdldExhbmd1YWdlIiwiZ2V0TGV4aWNvbkRhdGEiLCJncmVla1JlcG9VcmwiLCJoZWJyZXdSZXBvVXJsIiwiaHR0cENvbmZpZyIsImlkIiwiaXNOVCIsImxvZ2dlZEluVXNlciIsIm9uTWluaW1pemUiLCJvblJlc291cmNlRXJyb3IiLCJvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzIiwicmVmZXJlbmNlIiwiX3JlZjIkcmVzb3VyY2UiLCJvd25lciIsImxhbmd1YWdlSWQiLCJyZXNvdXJjZUlkIiwib3JpZ2luYWxMYW5ndWFnZU93bmVyIiwicmVzb3VyY2VMaW5rIiwic2VsZWN0ZWRRdW90ZSIsInNlcnZlciIsInNldENhcmRzTG9hZGluZ01lcmdlIiwic2V0Q2FyZHNMb2FkaW5nVXBkYXRlIiwic2V0Q2FyZHNTYXZpbmciLCJzZXRTYXZlZENoYW5nZXMiLCJzZXRXb3JkQWxpZ25lclN0YXR1cyIsInRyYW5zbGF0ZSIsInRpdGxlIiwidXNlVXNlckxvY2FsU3RvcmFnZSIsInVwZGF0ZU1lcmdlU3RhdGUiLCJfUmVhY3QkdXNlU3RhdGUiLCJ1c2VTdGF0ZSIsImNoZWNrRm9yRWRpdEJyYW5jaCIsImN1cnJlbnRSZWZlcmVuY2UiLCJlZGl0QnJhbmNoUmVhZHkiLCJoYXZlVW5zYXZlZENoYW5nZXMiLCJsYXN0U2VsZWN0ZWRRdW90ZSIsInJlYWR5Rm9yRmV0Y2giLCJyZWYiLCJzYXZlQ2xpY2tlZCIsInNhdmVDb250ZW50Iiwic2F2ZURpZmZQYXRjaCIsInNlbGVjdGlvbnMiLCJNYXAiLCJzaG93QWxpZ25tZW50UG9wdXAiLCJzdGFydFNhdmUiLCJ1cmxFcnJvciIsInVzaW5nVXNlckJyYW5jaCIsInVuc2F2ZWRDaGFuZ2VzTGlzdCIsInZlcnNlc0FsaWdubWVudFN0YXR1cyIsInZlcnNlc0ZvclJlZiIsInZlcnNlT2JqZWN0c01hcCIsInZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQiLCJfUmVhY3QkdXNlU3RhdGUyIiwic3RhdGUiLCJzZXRTdGF0ZV8iLCJfdXNlVXNlckxvY2FsU3RvcmFnZSIsIl91c2VVc2VyTG9jYWxTdG9yYWdlMiIsImZvbnRTaXplIiwic2V0Rm9udFNpemUiLCJpc05UXyIsInNldFN0YXRlIiwibmV3U3RhdGUiLCJwcmV2U3RhdGUiLCJjYWNoZSIsIm1heEFnZSIsIm5vQ2FjaGUiLCJfdXNlU2NyaXB0dXJlU2V0dGluZ3MiLCJzZXRVcmxFcnJvciIsIndob2xlQm9vayIsImlzTmV3VGVzdGFtZW50Iiwic2V0U2NyaXB0dXJlIiwic2NyaXB0dXJlU2V0dGluZ3MiLCJzY3JpcHR1cmVWZXJzaW9uSGlzdCIsImZldGNoZWRSZXNvdXJjZSIsInJlcG8iLCJyZWZlcmVuY2VfIiwidXNpbmdPcmlnaW5hbEJpYmxlIiwiY2FyZFJlc291cmNlSWQiLCJyZWZfIiwiY2FuVXNlRWRpdEJyYW5jaCIsIl91c2VVc2VyQnJhbmNoIiwiY2FyZElkIiwiX3VzZVVzZXJCcmFuY2gkc3RhdGUiLCJicmFuY2hEZXRlcm1pbmVkIiwidXNlckVkaXRCcmFuY2hOYW1lIiwiX3VzaW5nVXNlckJyYW5jaCIsIndvcmtpbmdSZXNvdXJjZUJyYW5jaCIsIl91c2VVc2VyQnJhbmNoJGFjdGlvbiIsImFjdGlvbnMiLCJzdGFydEVkaXRCcmFuY2giLCJzdGFydEVkaXQiLCJmaW5pc2hFZGl0IiwiX3VzZUJyYW5jaE1lcmdlciIsInVzZXJCcmFuY2giLCJ0b2tlbmlkIiwidG9rZW4iLCJzaGExIiwiX3VzZUJyYW5jaE1lcmdlciRzdGF0IiwibWVyZ2VUb01hc3RlciIsIm1lcmdlU3RhdHVzIiwibWVyZ2VGcm9tTWFzdGVyIiwidXBkYXRlU3RhdHVzIiwidXBkYXRlQnV0dG9uUHJvcHMiLCJpc1NhdmluZyIsIm9uVXBkYXRlIiwicmVsb2FkUmVzb3VyY2UiLCJjYWxsVXBkYXRlVXNlckJyYW5jaCIsImlzRXJyb3JEaWFsb2dPcGVuIiwib25DbG9zZUVycm9yRGlhbG9nIiwiaXNVcGRhdGVMb2FkaW5nIiwiaXNMb2FkaW5nIiwiZGlhbG9nTWVzc2FnZSIsImRpYWxvZ1RpdGxlIiwiZGlhbG9nTGluayIsImRpYWxvZ0xpbmtUb29sdGlwIiwib25NZXJnZSIsImxvZyIsIl91c2VNYXN0ZXJNZXJnZVByb3BzIiwiaXNNZXJnZUxvYWRpbmciLCJjYWxsTWVyZ2VVc2VyQnJhbmNoIiwidXNlRWZmZWN0IiwicHJldkNhcmRzTG9hZGluZyIsIndvcmtpbmdSZWYiLCJzY3JpcHR1cmVUaXRsZSIsIl9zY3JpcHR1cmVDb25maWckcmVzbzgiLCJyZXNvdXJjZVN0YXR1cyIsIm1lc3NhZ2UiLCJpc0FjY2Vzc0Vycm9yIiwidmVyc2lvbiIsInVwZGF0ZVRpdGxlIiwiZ2V0U2NyaXB0dXJlU2VsZWN0b3IiLCJzY3JpcHR1cmVTZWxlY3Rpb25Db25maWciLCJjcmVhdGVFbGVtZW50IiwiZXJyb3JNZXNzYWdlIiwib25NZW51Q2xvc2UiLCJsYW5ndWFnZUlkXyIsImxhbmd1YWdlIiwiZGlyZWN0aW9uIiwiX3JlZmVyZW5jZSIsImlzSGVicmV3IiwiZm9udEZhY3RvciIsInNjYWxlZEZvbnRTaXplIiwiaXRlbXMiLCJfdXNlQ2FyZFN0YXRlIiwiX3VzZUNhcmRTdGF0ZSRzdGF0ZSIsImhlYWRlcnMiLCJmaWx0ZXJzIiwiaXRlbUluZGV4IiwibWFya2Rvd25WaWV3IiwiX3VzZUNhcmRTdGF0ZSRhY3Rpb25zIiwic2V0RmlsdGVycyIsInNldEl0ZW1JbmRleCIsInNldE1hcmtkb3duVmlldyIsInJlZlN0eWxlIiwidXNlTWVtbyIsImZvbnRGYW1pbHkiLCJNYXRoIiwicm91bmQiLCJjb250ZW50U3R5bGUiLCJzY3JpcHR1cmVMYWJlbCIsImRpc2FibGVXb3JkUG9wb3Zlcl8iLCJlbmFibGVFZGl0IiwiZW5hYmxlQWxpZ25tZW50Iiwib3JpZ2luYWxSZXBvVXJsIiwic2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZyIsImN1cnJlbnRWZXJzZVJlZiIsIl9zZXRTYXZlZENoYW5nZXMiLCJzb3VyY2VMYW5ndWFnZSIsInRhcmdldExhbmd1YWdlIiwiY3VycmVudEluZGV4Iiwic2F2ZWQiLCJfcmVmMyIsIl9yZWYzJGdldENoYW5nZXMiLCJnZXRDaGFuZ2VzIiwiX3JlZjMkY2xlYXJDaGFuZ2VzIiwiY2xlYXJDaGFuZ2VzIiwiX3JlZjMkc3RhdGUiLCJfdW5zYXZlZENoYW5nZXNMaXN0IiwiX2hhdmVVbnNhdmVkQ2hhbmdlcyIsImZpbmRSZWZJbkFycmF5IiwiZmluZEl0ZW0iLCJjaHVua3MiLCJyZWZMZW4iLCJpbmRleCIsImZpbmRJbmRleCIsImNodW5rIiwiaWR4Iiwic3Vic3RyaW5nIiwibmV4dENoYXIiLCJnZXRCb29rTmFtZSIsIl9zY3JpcHR1cmVDb25maWckcmVmZSIsImJvb2tDYXBzIiwidG9VcHBlckNhc2UiLCJmaWxlcGF0aCIsInNoYSIsIl91c2VFZGl0IiwiY29udGVudCIsImNvbmZpZyIsImRvbnRDcmVhdGVCcmFuY2giLCJ0aW1lb3V0Iiwic2VydmVyVGltZU91dCIsImF1dGhvciIsImVtYWlsIiwidXNlciIsImJyYW5jaCIsInNhdmVFcnJvciIsImlzU2F2ZUVycm9yIiwiaXNFcnJvciIsIm9uU2F2ZUVkaXQiLCJvblNhdmVFZGl0UGF0Y2giLCJfc2F2ZUVkaXQiLCJfcmVmNCIsIl9jYWxsZWUiLCJzYXZlRnVuY3Rpb24iLCJfY2FsbGVlJCIsIl9jb250ZXh0Iiwic3VjY2VzcyIsInByZXZDYXJkc1NhdmluZyIsInVuc2F2ZWRDYXJkSW5kaWNlcyIsIl9pdGVyYXRvciIsIl9zdGVwIiwiY2FyZEluZGV4IiwibWVyZ2VWZXJzZU9iamVjdHNJbnRvQmlibGVVc2ZtIiwidXBkYXRlZFZlcnNlT2JqZWN0cyIsIm5ld1VzZm0iLCJjaGFwdGVyQ2h1bmtzIiwic3BsaXQiLCJjaGFwdGVySW5kZXgiLCJjdXJyZW50Q2hhcHRlciIsInZlcnNlQ2h1bmtzIiwidmVyc2VJbmRleCIsImZyb250TWF0dGVyIiwibmV3VmVyc2VVc2ZtIiwiY29udmVydFZlcnNlRGF0YVRvVVNGTSIsIm9sZFZlcnNlIiwicHJlZml4TGVuIiwiaW5kZXhPZiIsInZlcnNlTnVtTGVuIiwibmV3Q2hhcHRlciIsImpvaW4iLCJnZXRSZWFkeUZvclNhdmUiLCJfZ2V0UmVhZHlGb3JTYXZlIiwiX2NhbGxlZTIiLCJjcmVhdGVFZGl0QnJhbmNoIiwiYmlibGVVc2ZtXyIsIm1lcmdlRmFpbCIsIl9jYXJkTnVtIiwiX2l0ZXJhdG9yMiIsIl9zdGVwMiIsIl91bnNhdmVkQ2hhbmdlc0xpc3QkXyIsIl9zdGF0ZSIsIl9nZXRDaGFuZ2VzIiwiX3JlZjUiLCJfc2F2ZURpZmZQYXRjaCIsIm5ld0Jvb2tKc29uIiwiX2l0ZXJhdG9yMyIsIl9zdGVwMyIsIl9jYXJkSW5kZXgiLCJfY2FyZE51bTIiLCJfdW5zYXZlZENoYW5nZXNMaXN0JF8yIiwiX2dldENoYW5nZXMyIiwiX3N0YXRlMiIsIl9uZXdVc2ZtIiwiX2dldENoYW5nZXMzIiwibmV3VmVyc2VUZXh0IiwiX3JlZjYiLCJfdXBkYXRlZFZlcnNlT2JqZWN0cyIsInRhcmdldFZlcnNlT2JqZWN0c18iLCJfQWxpZ25tZW50SGVscGVycyR1cGQiLCJ0YXJnZXRWZXJzZU9iamVjdHMiLCJfc2NyaXB0dXJlQ29uZmlnJHJlc28xMSIsImRpZmZQYXRjaCIsIl9jYWxsZWUyJCIsIl9jb250ZXh0MiIsInBhcnNlSW50IiwidDAiLCJ1cGRhdGVBbGlnbm1lbnRzVG9UYXJnZXRWZXJzZSIsInVwZGF0ZVZlcnNlIiwidG9VU0ZNIiwiZm9yY2VkTmV3TGluZXMiLCJfcmVmNyIsIl92ZXJzZXNGb3JSZWYiLCJuZXdTZWxlY3Rpb25zIiwidXBkYXRlU2VsZWN0aW9ucyIsIl9tYXAiLCJvcmlnaW5hbEJvb2tJZCIsImJvb2tWZXJzZU9iamVjdCIsImNoYXB0ZXJzIiwibmV3U2VsZWN0ZWRRdW90ZSIsInF1b3RlIiwiX3NlbGVjdGVkUXVvdGUkcmVmZXJlMyIsIm9yaWdpbmFsVmVyc2VzIiwic3Vic3RpdHV0ZSIsInN0YXJ0VmVyc2UiLCJsYXN0VmVyc2UiLCJfdmVyc2UiLCJ2ZXJzZXMiLCJfaXRlcmF0b3I0IiwiX3N0ZXA0IiwidmVyc2VJdGVtIiwidm8iLCJfYm9va1ZlcnNlT2JqZWN0JF9jaGEiLCJzZXQiLCJfc2VsZWN0ZWRRdW90ZSRyZWZlcmUiLCJfc2VsZWN0ZWRRdW90ZSRyZWZlcmUyIiwic3ViUmVmIiwicXVvdGVNYXRjaGVzIiwiYm9va09iamVjdCIsIm9jY3VycmVuY2UiLCJzaXplIiwid29yZHMiLCJfa2V5IiwibWFwIiwid29yZCIsInRleHQiLCJub3JtYWxpemVTdHJpbmciLCJib29rc05vdFNhbWUiLCJ1cGRhdGVWZXJzZXNBbGlnbm1lbnRTdGF0dXMiLCJhbGlnbmVkIiwiX3ZlcnNlc0ZvclJlZjIiLCJfcmVmOCIsInJlbmRlcmVkU2NyaXB0dXJlUGFuZXMiLCJfY3VycmVudFZlcnNlRGF0YSIsIl9jdXJyZW50VmVyc2VEYXRhJHZlciIsImluaXRpYWxWZXJzZU9iamVjdHMiLCJfcmVmOSIsIl9zY3JpcHR1cmVBbGlnbm1lbnRFZGl0Q29uZmlnIiwiaXNWZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50IiwiZGV0ZXJtaW5pbmdCcmFuY2giLCJvbkFsaWdubWVudEZpbmlzaCIsInNhdmluZyIsImhhbmRsZUFsaWduQnV0dG9uQ2xpY2siLCJvblJlbmRlclRvb2xiYXIiLCJfcmVmMTAiLCJuZXdJdGVtcyIsImFsbFZlcnNlc0FsaWduZWQiLCJldmVyeSIsImFsaWduU3RhdHVzIiwiYWxpZ25JY29uIiwiYWxpZ25CdXR0b25UZXh0IiwiY29sb3IiLCJvbkNsaWNrIiwiY3Vyc29yIiwiRnJhZ21lbnQiLCJvcGVuIiwib25DbG9zZSIsImxpbmsiLCJsaW5rVG9vbHRpcCIsIm9uU2VsZWN0aW9ucyIsInNldHRpbmdzVGl0bGUiLCJnZXRDdXN0b21Db21wb25lbnQiLCJoaWRlTWFya2Rvd25Ub2dnbGUiLCJlZGl0YWJsZSIsIm9uVmVyc2VTZWxlY3QiLCJwcm9wVHlwZXMiLCJzdHJpbmciLCJpc1JlcXVpcmVkIiwib2JqZWN0IiwibnVtYmVyIiwiYm9vbCIsImZ1bmMiLCJzaGFwZSIsIm9uZU9mVHlwZSIsImFueSIsInNldEFyZVJlc291cmNlc0xvYWRpbmciLCJzZXRBcmVSZXNvdXJjZXNTYXZpbmciXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9TY3JpcHR1cmVDYXJkL1NjcmlwdHVyZUNhcmQudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0ICogYXMgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnXG5pbXBvcnQgeyBjb3JlLCBTZWxlY3Rpb25zQ29udGV4dFByb3ZpZGVyIH0gZnJvbSAnc2NyaXB0dXJlLXJlc291cmNlcy1yY2wnXG5pbXBvcnQgdXNmbWpzIGZyb20gJ3VzZm0tanMnXG5pbXBvcnQgeyB1c2VFZGl0IH0gZnJvbSAnZ2l0ZWEtcmVhY3QtdG9vbGtpdCdcbmltcG9ydCB7IEljb25CdXR0b24gfSBmcm9tICdAbXVpL21hdGVyaWFsJ1xuaW1wb3J0IHsgUnhMaW5rMiwgUnhMaW5rQnJlYWsyIH0gZnJvbSAncmVhY3QtaWNvbnMvcngnXG5pbXBvcnQge1xuICBDYXJkLFxuICBFcnJvckRpYWxvZyxcbiAgRVJST1JfU1RBVEUsXG4gIE1BTklGRVNUX05PVF9MT0FERURfRVJST1IsXG4gIFVwZGF0ZUJyYW5jaEJ1dHRvbixcbiAgdXNlQnJhbmNoTWVyZ2VyLFxuICB1c2VDYXJkU3RhdGUsXG4gIHVzZUNvbnRlbnRVcGRhdGVQcm9wcyxcbiAgdXNlTWFzdGVyTWVyZ2VQcm9wcyxcbiAgdXNlVXNlckJyYW5jaCxcbn0gZnJvbSAndHJhbnNsYXRpb24taGVscHMtcmNsJ1xuLy8gQHRzLWlnbm9yZVxuaW1wb3J0IHsgZ2V0UXVvdGVNYXRjaGVzSW5Cb29rUmVmIH0gZnJvbSAndXctcXVvdGUtaGVscGVycydcbmltcG9ydCB7IEFsaWdubWVudEhlbHBlcnMsIFVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMgfSBmcm9tICd3b3JkLWFsaWduZXItcmNsJ1xuaW1wb3J0IHsgaXNFcXVhbCB9IGZyb20gJ0ByZWFjdC1ob29rei9kZWVwLWVxdWFsJ1xuaW1wb3J0IHsgZ2V0VmVyc2VzIH0gZnJvbSAnYmlibGUtcmVmZXJlbmNlLXJhbmdlJ1xuaW1wb3J0IHsgU2NyaXB0dXJlUGFuZSwgU2NyaXB0dXJlU2VsZWN0b3IgfSBmcm9tICcuLidcbmltcG9ydCB7IHVzZVNjcmlwdHVyZVNldHRpbmdzIH0gZnJvbSAnLi4vLi4vaG9va3MvdXNlU2NyaXB0dXJlU2V0dGluZ3MnXG5pbXBvcnQge1xuICBjbGVhbnVwVmVyc2VPYmplY3RzLFxuICBmaXhPY2N1cnJlbmNlLFxuICBnZXRCb29rTmFtZUZyb21Vc2ZtRmlsZU5hbWUsXG4gIGdldFJlc291cmNlTGluayxcbiAgZ2V0UmVzb3VyY2VNZXNzYWdlLFxuICBnZXRTY3JpcHR1cmVWZXJzaW9uU2V0dGluZ3MsXG4gIGlzT3JpZ2luYWxCaWJsZSxcbn0gZnJvbSAnLi4vLi4vdXRpbHMvU2NyaXB0dXJlU2V0dGluZ3MnXG5pbXBvcnQgeyBkZWxheSB9IGZyb20gJy4uLy4uL3V0aWxzL2RlbGF5J1xuaW1wb3J0IHsgYXJlTWFwc1RoZVNhbWUgfSBmcm9tICcuLi8uLi91dGlscy9tYXBzJ1xuaW1wb3J0IHsgVGl0bGUgfSBmcm9tICcuLi9TY3JpcHR1cmVQYW5lL3N0eWxlZCdcbmltcG9ydCB7XG4gIE5UX09SSUdfTEFORyxcbiAgT1JJR0lOQUxfU09VUkNFLFxuICBPVF9PUklHX0xBTkcsXG59IGZyb20gJy4uLy4uL3V0aWxzJ1xuaW1wb3J0IHsgVmVyc2VTZWxlY3RvclBvcHVwIH0gZnJvbSAnLi4vVmVyc2VTZWxlY3RvclBvcHVwJ1xuaW1wb3J0IHsgZ2V0UGF0Y2ggfSBmcm9tICcuLi8uLi91dGlscy9maWxlcydcblxuY29uc3QgS0VZX0ZPTlRfU0laRV9CQVNFID0gJ3NjcmlwdHVyZVBhbmVGb250U2l6ZV8nXG5jb25zdCBsYWJlbCA9ICdWZXJzaW9uJ1xuY29uc3Qgc3R5bGUgPSB7IG1hcmdpblRvcDogJzE2cHgnLCB3aWR0aDogJzUwMHB4JyB9XG5cbi8qKlxuICogY3JlYXRlIGEgc2hvcnQgY29tcGFyaXNvbiB2ZXJzZSByZWYgb2JqZWN0IHdpdGhvdXQgYWxsIHRoZSB2ZXJzZURhdGFcbiAqIEBwYXJhbSB2ZXJzZVJlZlxuICovXG5mdW5jdGlvbiBjb21wYXJlT2JqZWN0KHZlcnNlUmVmKSB7XG4gIGNvbnN0IHtcbiAgICBjaGFwdGVyLFxuICAgIHZlcnNlLFxuICAgIHZlcnNlRGF0YSxcbiAgfSA9IHZlcnNlUmVmIHx8IHt9XG4gIGNvbnN0IHZlcnNlT2JqZWN0cyA9IHZlcnNlRGF0YT8udmVyc2VPYmplY3RzPy5sZW5ndGggPyBKU09OLnN0cmluZ2lmeSh2ZXJzZURhdGEudmVyc2VPYmplY3RzKSA6ICcnXG4gIHJldHVybiB7XG4gICAgY2hhcHRlcixcbiAgICB2ZXJzZSxcbiAgICB2ZXJzZU9iamVjdHMsXG4gIH1cbn1cblxuLyoqXG4gKiBjb21wYXJlIHR3byB2ZXJzZSByZWZzIHRvIHNlZSBpZiB0aGV5IGFyZSBzdWJzdGFudGlhbGx5IHNpbWlsYXJcbiAqIEBwYXJhbSB2ZXJzZXNGb3JSZWYxXG4gKiBAcGFyYW0gdmVyc2VzRm9yUmVmMlxuICovXG5mdW5jdGlvbiBhcmVWZXJzZXNTYW1lKHZlcnNlc0ZvclJlZjE6IGFueVtdLCB2ZXJzZXNGb3JSZWYyOiBhbnlbXSkge1xuICB2ZXJzZXNGb3JSZWYxID0gdmVyc2VzRm9yUmVmMSB8fCBbXVxuICB2ZXJzZXNGb3JSZWYyID0gdmVyc2VzRm9yUmVmMiB8fCBbXVxuICBsZXQgYXJlU2FtZSA9IGZhbHNlXG5cbiAgaWYgKHZlcnNlc0ZvclJlZjEubGVuZ3RoID09PSB2ZXJzZXNGb3JSZWYyLmxlbmd0aCkge1xuICAgIGFyZVNhbWUgPSB0cnVlXG5cbiAgICBmb3IgKGxldCBpID0gMCwgbD0gdmVyc2VzRm9yUmVmMS5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgIGNvbnN0IHZlcnNlMSA9IGNvbXBhcmVPYmplY3QodmVyc2VzRm9yUmVmMVtpXSlcbiAgICAgIGNvbnN0IHZlcnNlMiA9IGNvbXBhcmVPYmplY3QodmVyc2VzRm9yUmVmMltpXSlcbiAgICAgIGFyZVNhbWUgPSBpc0VxdWFsKHZlcnNlMSwgdmVyc2UyKVxuXG4gICAgICBpZiAoIWFyZVNhbWUpIHtcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gYXJlU2FtZVxufVxuXG4vKipcbiAqIGdldCB0aGUgVVNGTSBmb3IgYm9va0lkIGZyb20gc2NyaXB0dXJlQ29uZmlnLlxuICogQHBhcmFtIHtvYmplY3R9IHNjcmlwdHVyZUNvbmZpZ1xuICogQHBhcmFtIHtzdHJpbmd9IGJvb2tJZFxuICovXG5leHBvcnQgY29uc3QgZ2V0Q3VycmVudEJvb2sgPSAoc2NyaXB0dXJlQ29uZmlnLCBib29rSWQpID0+IHtcbiAgY29uc3QgbGF0ZXN0QmlibGUgPSBzY3JpcHR1cmVDb25maWc/LnJlc291cmNlU3RhdGU/LnJlc291cmNlPy5wcm9qZWN0SWRcbiAgY29uc3QgZmlsZW5hbWUgPSBzY3JpcHR1cmVDb25maWc/LnJlc291cmNlU3RhdGU/LnJlc291cmNlPy5uYW1lIC8vIExpa2UgXCI1Ny1USVQudXNmbVwiXG4gIGxldCBpc0Jvb2tWYWxpZCA9IGZhbHNlXG4gIGNvbnN0IGJvb2tOYW1lID0gZ2V0Qm9va05hbWVGcm9tVXNmbUZpbGVOYW1lKGZpbGVuYW1lKVxuICBpc0Jvb2tWYWxpZCA9IGJvb2tOYW1lPy50b0xvd2VyQ2FzZSgpPy5pbmNsdWRlcyhib29rSWQpXG4gIGlmICghaXNCb29rVmFsaWQpIHtcbiAgICBjb25zb2xlLndhcm4oYEN1cnJlbnQgYm9va0lkIGlzICR7Ym9va0lkfSBhbmQgVVNGTSBmaWxlIGlzICR7ZmlsZW5hbWV9YClcbiAgfVxuICBpZiAobGF0ZXN0QmlibGU/LnRvTG93ZXJDYXNlKCkgIT09IGJvb2tJZCkge1xuICAgIGNvbnNvbGUud2FybihgQ3VycmVudCBib29rSWQgaXMgJHtib29rSWR9IGJ1dCBmZXRjaGVkIHByb2plY3RJZCBpcyAke2xhdGVzdEJpYmxlfWApXG4gICAgaXNCb29rVmFsaWQgPSBmYWxzZVxuICB9XG4gIGlmIChpc0Jvb2tWYWxpZCkge1xuICAgIGNvbnN0IGJpYmxlVXNmbSA9IHNjcmlwdHVyZUNvbmZpZz8uYmlibGVVc2ZtO1xuICAgIGlmIChiaWJsZVVzZm0pIHtcbiAgICAgIHJldHVybiBiaWJsZVVzZm1cbiAgICB9XG4gICAgY29uc29sZS5lcnJvcihgZ2V0Q3VycmVudEJvb2soKSAtIEJpYmxlIFVTRk0gbWlzc2luZ2ApXG4gIH1cbiAgY29uc29sZS5lcnJvcihgZ2V0Q3VycmVudEJvb2soKSAtIEV4cGVjdGVkICR7Ym9va0lkfSBidXQgZ290IGZpbGUgJHtmaWxlbmFtZX1gKVxuICByZXR1cm4gbnVsbFxufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBTY3JpcHR1cmVDYXJkKHtcbiAgYXBwUmVmLFxuICBhdXRoZW50aWNhdGlvbixcbiAgYm9va0luZGV4LFxuICBjYXJkTnVtLFxuICBjbGFzc2VzLFxuICBkaXNhYmxlV29yZFBvcG92ZXIsXG4gIGdldExhbmd1YWdlLFxuICBnZXRMZXhpY29uRGF0YSxcbiAgZ3JlZWtSZXBvVXJsLFxuICBoZWJyZXdSZXBvVXJsLFxuICBodHRwQ29uZmlnLFxuICBpZCxcbiAgaXNOVCxcbiAgbG9nZ2VkSW5Vc2VyLFxuICBvbk1pbmltaXplLFxuICBvblJlc291cmNlRXJyb3IsXG4gIG9yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHMsXG4gIHJlZmVyZW5jZSxcbiAgcmVzb3VyY2U6IHtcbiAgICBvd25lcixcbiAgICBsYW5ndWFnZUlkLFxuICAgIHJlc291cmNlSWQsXG4gICAgb3JpZ2luYWxMYW5ndWFnZU93bmVyLFxuICB9LFxuICByZXNvdXJjZUxpbmssXG4gIHNlbGVjdGVkUXVvdGUsXG4gIHNlcnZlcixcbiAgc2V0Q2FyZHNMb2FkaW5nTWVyZ2UsXG4gIHNldENhcmRzTG9hZGluZ1VwZGF0ZSxcbiAgc2V0Q2FyZHNTYXZpbmcsXG4gIHNldFNhdmVkQ2hhbmdlcyxcbiAgc2V0V29yZEFsaWduZXJTdGF0dXMsXG4gIHRyYW5zbGF0ZSxcbiAgdGl0bGUsXG4gIHVzZVVzZXJMb2NhbFN0b3JhZ2UsXG4gIHVwZGF0ZU1lcmdlU3RhdGUsXG59KSB7XG4gIGNvbnN0IGJvb2tJZCA9IHJlZmVyZW5jZT8ucHJvamVjdElkXG4gIGNvbnN0IFtzdGF0ZSwgc2V0U3RhdGVfXSA9IFJlYWN0LnVzZVN0YXRlKHtcbiAgICBjaGVja0ZvckVkaXRCcmFuY2g6IDAsXG4gICAgY3VycmVudFJlZmVyZW5jZTogbnVsbCxcbiAgICBlZGl0QnJhbmNoUmVhZHk6IGZhbHNlLFxuICAgIGhhdmVVbnNhdmVkQ2hhbmdlczogZmFsc2UsXG4gICAgbGFzdFNlbGVjdGVkUXVvdGU6IG51bGwsXG4gICAgcmVhZHlGb3JGZXRjaDogZmFsc2UsXG4gICAgcmVmOiBhcHBSZWYsXG4gICAgc2F2ZUNsaWNrZWQ6IGZhbHNlLFxuICAgIHNhdmVDb250ZW50OiBudWxsLFxuICAgIHNhdmVEaWZmUGF0Y2g6IGZhbHNlLFxuICAgIHNlbGVjdGlvbnM6IG5ldyBNYXAoKSxcbiAgICBzaG93QWxpZ25tZW50UG9wdXA6IGZhbHNlLFxuICAgIHN0YXJ0U2F2ZTogZmFsc2UsXG4gICAgdXJsRXJyb3I6IG51bGwsXG4gICAgdXNpbmdVc2VyQnJhbmNoOiBmYWxzZSxcbiAgICB1bnNhdmVkQ2hhbmdlc0xpc3Q6IHt9LFxuICAgIHZlcnNlc0FsaWdubWVudFN0YXR1czogbnVsbCxcbiAgICB2ZXJzZXNGb3JSZWY6IG51bGwsXG4gICAgdmVyc2VPYmplY3RzTWFwOiBuZXcgTWFwKCksXG4gICAgdmVyc2VTZWxlY3RlZEZvckFsaWdubWVudDogbnVsbCxcbiAgfSlcbiAgY29uc3Qge1xuICAgIGNoZWNrRm9yRWRpdEJyYW5jaCxcbiAgICBjdXJyZW50UmVmZXJlbmNlLFxuICAgIGVkaXRCcmFuY2hSZWFkeSxcbiAgICBoYXZlVW5zYXZlZENoYW5nZXMsXG4gICAgbGFzdFNlbGVjdGVkUXVvdGUsXG4gICAgcmVhZHlGb3JGZXRjaCxcbiAgICByZWYsXG4gICAgc2F2ZUNsaWNrZWQsXG4gICAgc2F2ZUNvbnRlbnQsXG4gICAgc2F2ZURpZmZQYXRjaCxcbiAgICBzZWxlY3Rpb25zLFxuICAgIHNob3dBbGlnbm1lbnRQb3B1cCxcbiAgICBzdGFydFNhdmUsXG4gICAgdXJsRXJyb3IsXG4gICAgdXNpbmdVc2VyQnJhbmNoLFxuICAgIHVuc2F2ZWRDaGFuZ2VzTGlzdCxcbiAgICB2ZXJzZU9iamVjdHNNYXAsXG4gICAgdmVyc2VTZWxlY3RlZEZvckFsaWdubWVudCxcbiAgICB2ZXJzZXNBbGlnbm1lbnRTdGF0dXMsXG4gICAgdmVyc2VzRm9yUmVmLFxuICB9ID0gc3RhdGVcblxuICBjb25zdCBbZm9udFNpemUsIHNldEZvbnRTaXplXSA9IHVzZVVzZXJMb2NhbFN0b3JhZ2UoS0VZX0ZPTlRfU0laRV9CQVNFICsgY2FyZE51bSwgMTAwKVxuICBjb25zdCBpc05UXyA9IGlzTlQoYm9va0lkKVxuXG4gIGZ1bmN0aW9uIHNldFN0YXRlKG5ld1N0YXRlKSB7XG4gICAgc2V0U3RhdGVfKHByZXZTdGF0ZSA9PiAoeyAuLi5wcmV2U3RhdGUsIC4uLm5ld1N0YXRlIH0pKVxuICB9XG5cbiAgaHR0cENvbmZpZyA9IHtcbiAgICAuLi5odHRwQ29uZmlnLFxuICAgIGNhY2hlOiB7IG1heEFnZTogMCB9LFxuICAgIG5vQ2FjaGU6IHRydWUsXG4gIH0gLy8gZGlzYWJsZSBodHRwIGNhY2hpbmdcblxuICBjb25zdCB7XG4gICAgaXNOZXdUZXN0YW1lbnQsXG4gICAgc2NyaXB0dXJlQ29uZmlnLFxuICAgIHNldFNjcmlwdHVyZSxcbiAgICBzY3JpcHR1cmVTZXR0aW5ncyxcbiAgICBzY3JpcHR1cmVWZXJzaW9uSGlzdCxcbiAgfSA9IHVzZVNjcmlwdHVyZVNldHRpbmdzKHtcbiAgICBhcHBSZWY6IHJlZixcbiAgICBjYXJkTnVtLFxuICAgIGRpc2FibGVXb3JkUG9wb3ZlcixcbiAgICBncmVla1JlcG9VcmwsXG4gICAgaGVicmV3UmVwb1VybCxcbiAgICBodHRwQ29uZmlnLFxuICAgIGlzTlQsXG4gICAgbGFuZ3VhZ2VJZCxcbiAgICBvcmlnaW5hbExhbmd1YWdlT3duZXIsXG4gICAgb3duZXIsXG4gICAgcmVhZHlGb3JGZXRjaCxcbiAgICByZWZlcmVuY2U6IGN1cnJlbnRSZWZlcmVuY2UgfHwgcmVmZXJlbmNlLFxuICAgIHJlc291cmNlSWQsXG4gICAgcmVzb3VyY2VMaW5rLFxuICAgIHNldFVybEVycm9yOiAoZXJyb3IpID0+IHNldFN0YXRlKHsgdXJsRXJyb3I6IGVycm9yIH0pLFxuICAgIHNlcnZlcixcbiAgICB0aXRsZSxcbiAgICB1c2VVc2VyTG9jYWxTdG9yYWdlLFxuICAgIHdob2xlQm9vazogdHJ1ZSxcbiAgfSlcblxuICBjb25zdCBmZXRjaGVkUmVzb3VyY2UgPSBzY3JpcHR1cmVDb25maWc/LnJlc291cmNlU3RhdGVcbiAgLy8gQHRzLWlnbm9yZVxuICBjb25zdCByZXBvID0gYCR7c2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZT8ubGFuZ3VhZ2VJZH1fJHtzY3JpcHR1cmVDb25maWc/LnJlc291cmNlPy5wcm9qZWN0SWR9YFxuICBjb25zdCByZWZlcmVuY2VfID0gc2NyaXB0dXJlQ29uZmlnPy5yZWZlcmVuY2UgfHwgbnVsbFxuICBjb25zdCB1c2luZ09yaWdpbmFsQmlibGUgPSBpc09yaWdpbmFsQmlibGUoc2NyaXB0dXJlQ29uZmlnWydyZXNvdXJjZSddPy5wcm9qZWN0SWQpXG5cblxuICAvLyBAdHMtaWdub3JlXG4gIGNvbnN0IGNhcmRSZXNvdXJjZUlkID0gc2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZT8ucHJvamVjdElkIHx8IHJlc291cmNlSWRcbiAgLy8gQHRzLWlnbm9yZVxuICBsZXQgcmVmXyA9IHNjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2U/LnJlZiB8fCBhcHBSZWZcbiAgY29uc3QgY2FuVXNlRWRpdEJyYW5jaCA9ICEhKGxvZ2dlZEluVXNlciAmJiBhdXRoZW50aWNhdGlvbiAmJiAocmVzb3VyY2VJZCAhPT0gT1JJR0lOQUxfU09VUkNFKSAmJiAvLyBUUklDS1kgaWYgbm90IG9yaWdpbmFsIGxhbmd1YWdlIGFuZCB3ZSBoYXZlIGxvZ2luIGRhdGEsIHRoZW4gd2UgY2FuIHVzZSB0aGUgZWRpdCBicmFuY2hcbiAgICAoKHJlZl8gPT09ICdtYXN0ZXInKSB8fCAocmVmXy5pbmNsdWRlcyhsb2dnZWRJblVzZXIpKSkpIC8vIGFsc28gbWFrZSBzdXJlIG5vdCBhIHZlcnNpb24gdGFnXG5cbiAgY29uc3Qge1xuICAgIHN0YXRlOiB7XG4gICAgICBicmFuY2hEZXRlcm1pbmVkLFxuICAgICAgdXNlckVkaXRCcmFuY2hOYW1lLFxuICAgICAgdXNpbmdVc2VyQnJhbmNoOiBfdXNpbmdVc2VyQnJhbmNoLFxuICAgICAgd29ya2luZ1Jlc291cmNlQnJhbmNoLFxuICAgIH0sXG4gICAgYWN0aW9uczoge1xuICAgICAgc3RhcnRFZGl0OiBzdGFydEVkaXRCcmFuY2gsXG4gICAgICBmaW5pc2hFZGl0LFxuICAgIH0sXG4gIH0gPSB1c2VVc2VyQnJhbmNoKHtcbiAgICBhcHBSZWYsXG4gICAgYXV0aGVudGljYXRpb246IGNhblVzZUVkaXRCcmFuY2ggPyBhdXRoZW50aWNhdGlvbiA6IG51bGwsXG4gICAgYm9va0lkLFxuICAgIGNhcmRJZDogaWQsXG4gICAgY2FyZFJlc291cmNlSWQsXG4gICAgY2hlY2tGb3JFZGl0QnJhbmNoLFxuICAgIGxhbmd1YWdlSWQsXG4gICAgbG9nZ2VkSW5Vc2VyOiBjYW5Vc2VFZGl0QnJhbmNoID8gbG9nZ2VkSW5Vc2VyIDogbnVsbCxcbiAgICBvd25lcixcbiAgICBvblJlc291cmNlRXJyb3IsXG4gICAgc2VydmVyLFxuICAgIHVzZVVzZXJMb2NhbFN0b3JhZ2UsXG4gIH0pXG5cbiAgY29uc3QgX3VzZUJyYW5jaE1lcmdlciA9IHVzZUJyYW5jaE1lcmdlcih7IHNlcnZlciwgb3duZXIsIHJlcG8sIHVzZXJCcmFuY2g6IHVzZXJFZGl0QnJhbmNoTmFtZSwgdG9rZW5pZDogYXV0aGVudGljYXRpb24/LnRva2VuPy5zaGExIH0pXG4gIGNvbnN0IHtcbiAgICBzdGF0ZToge1xuICAgICAgbWVyZ2VTdGF0dXM6IG1lcmdlVG9NYXN0ZXIsXG4gICAgICB1cGRhdGVTdGF0dXM6IG1lcmdlRnJvbU1hc3RlcixcbiAgICB9LFxuICB9ID0gX3VzZUJyYW5jaE1lcmdlclxuXG4gIGNvbnN0IHVwZGF0ZUJ1dHRvblByb3BzID0gdXNlQ29udGVudFVwZGF0ZVByb3BzKHtcbiAgICBpc1NhdmluZzogc3RhcnRTYXZlLFxuICAgIHVzZUJyYW5jaE1lcmdlcjogX3VzZUJyYW5jaE1lcmdlcixcbiAgICBvblVwZGF0ZTogKCkgPT4ge1xuICAgICAgZGVsYXkoNTAwKS50aGVuKCgpID0+IHNjcmlwdHVyZUNvbmZpZz8ucmVsb2FkUmVzb3VyY2UoKSlcbiAgICB9LFxuICB9KVxuXG4gIGNvbnN0IHtcbiAgICBjYWxsVXBkYXRlVXNlckJyYW5jaCxcbiAgICBpc0Vycm9yRGlhbG9nT3BlbixcbiAgICBvbkNsb3NlRXJyb3JEaWFsb2csXG4gICAgaXNMb2FkaW5nOiBpc1VwZGF0ZUxvYWRpbmcsXG4gICAgZGlhbG9nTWVzc2FnZSxcbiAgICBkaWFsb2dUaXRsZSxcbiAgICBkaWFsb2dMaW5rLFxuICAgIGRpYWxvZ0xpbmtUb29sdGlwLFxuICB9ID0gdXBkYXRlQnV0dG9uUHJvcHNcblxuICBjb25zdCBvbk1lcmdlID0gKCkgPT4ge1xuICAgIGZpbmlzaEVkaXQoKVxuICAgIGNvbnNvbGUubG9nKGBvbk1lcmdlKCkgc3dpdGNoaW5nIGJhY2sgdG8gbWFzdGVyIGFmdGVyIG1lcmdlIGFwcFJlZjpgLCBhcHBSZWYpXG4gICAgc2V0U3RhdGUoe1xuICAgICAgcmVhZHlGb3JGZXRjaDogZmFsc2UsXG4gICAgICByZWY6IGFwcFJlZixcbiAgICB9KVxuICAgIGRlbGF5KDUwMCkudGhlbigoKSA9PiB7XG4gICAgICBzZXRTdGF0ZSh7XG4gICAgICAgIGNoZWNrRm9yRWRpdEJyYW5jaDogY2hlY2tGb3JFZGl0QnJhbmNoICsgMSwgLy8gdHJpZ2dlciByZWNoZWNrIG9mIHVzZXIgYnJhbmNoIHdoaWNoIHdpbGwgc3dpdGNoIHRoZSBicmFuY2ggYmFjayB0byBtYXN0ZXJcbiAgICAgICAgcmVhZHlGb3JGZXRjaDogZmFsc2UsXG4gICAgICB9KVxuICAgIH0pXG4gIH1cblxuICBjb25zdCB7IGlzTG9hZGluZzogaXNNZXJnZUxvYWRpbmcsIGNhbGxNZXJnZVVzZXJCcmFuY2ggfSA9IHVzZU1hc3Rlck1lcmdlUHJvcHMoe1xuICAgIGlzU2F2aW5nOiBzdGFydFNhdmUsXG4gICAgdXNlQnJhbmNoTWVyZ2VyOiBfdXNlQnJhbmNoTWVyZ2VyLFxuICAgIG9uTWVyZ2UsXG4gIH0pXG5cbiAgLy8gU2luY2Ugb3JpZ2luYWwgdGV4dCAoR3JlZWsvSGVicmV3KSBzaG91bGQgbm90IGJlIGVkaXRlZCwgZG8gbm90IGluY2x1ZGVcbiAgLy8gdGhlbSBpbiBtZXJnZSBzdGF0ZSBzaW5jZSB1c2VyIHdpbGwgbm90IG1lcmdlL3B1c2ggY2hhbmdlcy5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoY2FyZFJlc291cmNlSWQgJiYgIXVzaW5nT3JpZ2luYWxCaWJsZSkge1xuICAgICAgdXBkYXRlTWVyZ2VTdGF0ZSAmJiB1cGRhdGVNZXJnZVN0YXRlKFxuICAgICAgICBjYXJkUmVzb3VyY2VJZCxcbiAgICAgICAgc2NyaXB0dXJlQ29uZmlnLnRpdGxlLFxuICAgICAgICBtZXJnZUZyb21NYXN0ZXIsXG4gICAgICAgIG1lcmdlVG9NYXN0ZXIsXG4gICAgICAgIGNhbGxVcGRhdGVVc2VyQnJhbmNoLFxuICAgICAgICBjYWxsTWVyZ2VVc2VyQnJhbmNoLFxuICAgICAgKVxuICAgIH1cbiAgfSxbY2FyZFJlc291cmNlSWQsIHNjcmlwdHVyZUNvbmZpZy50aXRsZSwgbWVyZ2VGcm9tTWFzdGVyLCBtZXJnZVRvTWFzdGVyXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChpc1VwZGF0ZUxvYWRpbmcpIHtcbiAgICAgIHNldENhcmRzTG9hZGluZ1VwZGF0ZT8uKHByZXZDYXJkc0xvYWRpbmcgPT4gWy4uLnByZXZDYXJkc0xvYWRpbmcsIGNhcmRSZXNvdXJjZUlkXSlcbiAgICB9IGVsc2Uge1xuICAgICAgc2V0Q2FyZHNMb2FkaW5nVXBkYXRlPy4ocHJldkNhcmRzTG9hZGluZyA9PiBwcmV2Q2FyZHNMb2FkaW5nLmZpbHRlcihjYXJkSWQgPT4gY2FyZElkICE9PSBjYXJkUmVzb3VyY2VJZCkpXG4gICAgfVxuICB9LCBbaXNVcGRhdGVMb2FkaW5nXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChpc01lcmdlTG9hZGluZykge1xuICAgICAgc2V0Q2FyZHNMb2FkaW5nTWVyZ2U/LihwcmV2Q2FyZHNMb2FkaW5nID0+IFsuLi5wcmV2Q2FyZHNMb2FkaW5nLCBjYXJkUmVzb3VyY2VJZF0pXG4gICAgfSBlbHNlIHtcbiAgICAgIHNldENhcmRzTG9hZGluZ01lcmdlPy4ocHJldkNhcmRzTG9hZGluZyA9PiBwcmV2Q2FyZHNMb2FkaW5nLmZpbHRlcihjYXJkSWQgPT4gY2FyZElkICE9PSBjYXJkUmVzb3VyY2VJZCkpXG4gICAgfVxuICB9LCBbaXNNZXJnZUxvYWRpbmddKVxuXG4gIGNvbnN0IHdvcmtpbmdSZWYgPSBjYW5Vc2VFZGl0QnJhbmNoID8gd29ya2luZ1Jlc291cmNlQnJhbmNoIDogYXBwUmVmXG4gIGxldCBzY3JpcHR1cmVUaXRsZVxuXG4gIGlmICghY2FuVXNlRWRpdEJyYW5jaCAmJiAhcmVhZHlGb3JGZXRjaCkgeyAvLyBpZiBiaWJsZSBub3QgZWxpZ2libGUgZm9yIHVzZXIgYnJhbmNoLCBtYWtlIHN1cmUgaXQncyByZWFkeVxuICAgIHNldFN0YXRlKHsgcmVhZHlGb3JGZXRjaDogdHJ1ZSB9KVxuICB9XG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zb2xlLmxvZyhgU2NyaXB0dXJlQ2FyZCBib29rIGNoYW5nZWRgLCB7IGJvb2tJZCwgb3duZXIsIGxhbmd1YWdlSWQsIHJlc291cmNlSWQgfSlcblxuICAgIGlmIChjYW5Vc2VFZGl0QnJhbmNoKSB7IC8vIGlmIGJpYmxlIGVsaWdpYmxlIGZvciB1c2VyIGJyYW5jaCwgcmVmcmVzaCBpdFxuICAgICAgc2V0U3RhdGUoeyByZWFkeUZvckZldGNoOiBmYWxzZSwgY2hlY2tGb3JFZGl0QnJhbmNoOiBjaGVja0ZvckVkaXRCcmFuY2ggKyAxIH0pXG4gICAgfVxuICB9LCBbYm9va0lkLCBvd25lciwgbGFuZ3VhZ2VJZCwgcmVzb3VyY2VJZF0pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWlzRXF1YWwocmVmZXJlbmNlLCBjdXJyZW50UmVmZXJlbmNlKSkge1xuICAgICAgLy8gY29uc29sZS5sb2coYFNjcmlwdHVyZUNhcmQgcmVmZXJlbmNlIGNoYW5nZWRgLCByZWZlcmVuY2UpXG4gICAgICBzZXRTdGF0ZSh7IGN1cnJlbnRSZWZlcmVuY2U6IHJlZmVyZW5jZSB9KVxuICAgIH1cbiAgfSwgW3JlZmVyZW5jZV0pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHsgLy8gd2FpdGluZyBmb3IgYnJhbmNoIGZldGNoIHRvIGNvbXBsZXRlXG4gICAgaWYgKCFyZWFkeUZvckZldGNoICYmIGJyYW5jaERldGVybWluZWQgKSB7XG4gICAgICBjb25zb2xlLmxvZyhgU2NyaXB0dXJlQ2FyZCBicmFuY2hEZXRlcm1pbmVkIGlzICR7YnJhbmNoRGV0ZXJtaW5lZH0gYW5kIHdvcmtpbmdSZWYgaXMgJHt3b3JraW5nUmVmfWApXG4gICAgICBzZXRTdGF0ZSh7IHJlYWR5Rm9yRmV0Y2g6IHRydWUsIHJlZjogd29ya2luZ1JlZiB9KVxuICAgIH1cbiAgfSwgW2JyYW5jaERldGVybWluZWRdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7IC8vIHNlbGVjdCBjb3JyZWN0IHdvcmtpbmcgcmVmIC0gY291bGQgYmUgbWFzdGVyLCB1c2VyIGJyYW5jaCwgb3IgcmVsZWFzZVxuICAgIGlmIChfdXNpbmdVc2VyQnJhbmNoICE9PSB1c2luZ1VzZXJCcmFuY2gpIHtcbiAgICAgIHNldFN0YXRlKHsgdXNpbmdVc2VyQnJhbmNoOiBfdXNpbmdVc2VyQnJhbmNoIH0pXG4gICAgfVxuICB9LCBbX3VzaW5nVXNlckJyYW5jaCwgdXNpbmdVc2VyQnJhbmNoXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4geyAvLyB1cGRhdGUgZGlzcGxheSBzdGF0dXMgaWYgZXJyb3JcbiAgICBjb25zdCBlcnJvciA9IHNjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2VTdGF0dXM/LltFUlJPUl9TVEFURV1cblxuICAgIGlmIChlcnJvcikgeyAvLyBpZiBlcnJvciB3YXMgZm91bmQgZG8gY2FsbGJhY2tcbiAgICAgIGNvbnN0IHJlc291cmNlU3RhdHVzID0gc2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZVN0YXR1c1xuICAgICAgY29uc3QgcmVzb3VyY2VMaW5rID0gZ2V0UmVzb3VyY2VMaW5rKHNjcmlwdHVyZUNvbmZpZylcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSBnZXRSZXNvdXJjZU1lc3NhZ2UocmVzb3VyY2VTdGF0dXMsIHNlcnZlciwgcmVzb3VyY2VMaW5rLCBpc05UXylcbiAgICAgIGNvbnN0IGlzQWNjZXNzRXJyb3IgPSByZXNvdXJjZVN0YXR1c1tNQU5JRkVTVF9OT1RfTE9BREVEX0VSUk9SXVxuICAgICAgb25SZXNvdXJjZUVycm9yICYmIG9uUmVzb3VyY2VFcnJvcihtZXNzYWdlLCBpc0FjY2Vzc0Vycm9yLCByZXNvdXJjZVN0YXR1cylcbiAgICB9XG4gIH0sIFtzY3JpcHR1cmVDb25maWc/LnJlc291cmNlU3RhdHVzPy5bRVJST1JfU1RBVEVdXSlcblxuICBpZiAoc2NyaXB0dXJlQ29uZmlnLnRpdGxlICYmIHNjcmlwdHVyZUNvbmZpZy52ZXJzaW9uKSB7XG4gICAgc2NyaXB0dXJlVGl0bGUgPSBgJHtzY3JpcHR1cmVDb25maWcudGl0bGV9IHYke3NjcmlwdHVyZUNvbmZpZy52ZXJzaW9ufWBcbiAgICBzY3JpcHR1cmVWZXJzaW9uSGlzdC51cGRhdGVUaXRsZShzY3JpcHR1cmVDb25maWcucmVzb3VyY2VMaW5rLCBzY3JpcHR1cmVUaXRsZSlcbiAgfSBlbHNlIHtcbiAgICBzY3JpcHR1cmVUaXRsZSA9IGBUaXRsZSBtaXNzaW5nIGZyb20gcHJvamVjdCBtYW5pZmVzdGBcbiAgfVxuXG4gIC8qKiBEeW5hbWljYWxseSBjcmVhdGVzIHRoZSBzY3JpcHR1cmUgc2VsZWN0aW9uIGRyb3Bkb3duIHRvIGJlIGluc2VydGVkIGludG8gY2FyZCBzZXR0aW5ncyAqL1xuICBmdW5jdGlvbiBnZXRTY3JpcHR1cmVTZWxlY3RvcigpIHtcbiAgICBjb25zdCBzY3JpcHR1cmVTZWxlY3Rpb25Db25maWcgPSBnZXRTY3JpcHR1cmVWZXJzaW9uU2V0dGluZ3Moe1xuICAgICAgbGFiZWwsXG4gICAgICByZXNvdXJjZUxpbms6IHNjcmlwdHVyZUNvbmZpZy5yZXNvdXJjZUxpbmssXG4gICAgICBzZXRTY3JpcHR1cmUsXG4gICAgICBzY3JpcHR1cmVWZXJzaW9uSGlzdCxcbiAgICB9KVxuXG4gICAgcmV0dXJuIDxTY3JpcHR1cmVTZWxlY3RvciB7Li4uc2NyaXB0dXJlU2VsZWN0aW9uQ29uZmlnfSBzdHlsZT17c3R5bGV9IGVycm9yTWVzc2FnZT17dXJsRXJyb3J9IC8+XG4gIH1cblxuICBmdW5jdGlvbiBvbk1lbnVDbG9zZSgpIHtcbiAgICAvLyBjb25zb2xlLmxvZyhgb25NZW51Q2xvc2UoKWApXG4gICAgc2V0U3RhdGUoeyB1cmxFcnJvcjogbnVsbCB9KVxuICB9XG5cbiAgLy8gQHRzLWlnbm9yZVxuICBjb25zdCBsYW5ndWFnZUlkXyA9IHNjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2U/Lmxhbmd1YWdlSWRcbiAgY29uc3QgbGFuZ3VhZ2UgPSBnZXRMYW5ndWFnZSh7IGxhbmd1YWdlSWQ6IGxhbmd1YWdlSWRfIH0pXG4gIGNvbnN0IGRpcmVjdGlvbiA9IChsYW5ndWFnZT8uZGlyZWN0aW9uKSB8fCAnbHRyJ1xuICBjb25zdCBfcmVmZXJlbmNlID0gY3VycmVudFJlZmVyZW5jZSB8fCByZWZlcmVuY2VcblxuICBjb25zdCBpc0hlYnJldyA9IChsYW5ndWFnZUlkXyA9PT0gJ2hibycpXG4gIGNvbnN0IGZvbnRGYWN0b3IgPSBpc0hlYnJldyA/IDEuNCA6IDEgLy8gd2UgYXV0b21hdGljYWxseSBzY2FsZSB1cCBmb250IHNpemUgZm9yIEhlYnJld1xuICBjb25zdCBzY2FsZWRGb250U2l6ZSA9IGZvbnRTaXplICogZm9udEZhY3RvclxuXG4gIGNvbnN0IGl0ZW1zID0gbnVsbFxuICBjb25zdCB7XG4gICAgc3RhdGU6IHtcbiAgICAgIGhlYWRlcnMsIGZpbHRlcnMsIGl0ZW1JbmRleCwgbWFya2Rvd25WaWV3LFxuICAgIH0sXG4gICAgYWN0aW9uczoge1xuICAgICAgc2V0RmlsdGVycywgc2V0SXRlbUluZGV4LCBzZXRNYXJrZG93blZpZXcsXG4gICAgfSxcbiAgfSA9IHVzZUNhcmRTdGF0ZSh7IGl0ZW1zIH0pXG5cbiAgY29uc3QgcmVmU3R5bGUgPSBSZWFjdC51c2VNZW1vKCgpID0+ICh7XG4gICAgZm9udEZhbWlseTogJ05vdG8gU2FucycsXG4gICAgZm9udFNpemU6IGAke01hdGgucm91bmQoc2NhbGVkRm9udFNpemUgKiAwLjkpfSVgLFxuICB9KSwgW3NjYWxlZEZvbnRTaXplXSlcblxuICBjb25zdCBjb250ZW50U3R5bGUgPSBSZWFjdC51c2VNZW1vKCgpID0+ICh7XG4gICAgZm9udEZhbWlseTogJ05vdG8gU2FucycsXG4gICAgZm9udFNpemU6IGAke3NjYWxlZEZvbnRTaXplfSVgLFxuICB9KSwgW3NjYWxlZEZvbnRTaXplXSlcblxuICBjb25zdCBzY3JpcHR1cmVMYWJlbCA9IDxUaXRsZT57c2NyaXB0dXJlVGl0bGV9PC9UaXRsZT5cbiAgbGV0IGRpc2FibGVXb3JkUG9wb3Zlcl8gPSBkaXNhYmxlV29yZFBvcG92ZXJcblxuICBpZiAoZGlzYWJsZVdvcmRQb3BvdmVyID09PSB1bmRlZmluZWQpIHsgLy8gaWYgbm90IHNwZWNpZmllZCwgdGhlbiBkZXRlcm1pbmUgaWYgb3JpZ2luYWwgbGFuZ3VhZ2UgcmVzb3VyY2VcbiAgICBkaXNhYmxlV29yZFBvcG92ZXJfID0gIXVzaW5nT3JpZ2luYWxCaWJsZVxuICB9XG5cbiAgY29uc3QgZW5hYmxlRWRpdCA9ICF1c2luZ09yaWdpbmFsQmlibGVcbiAgY29uc3QgZW5hYmxlQWxpZ25tZW50ID0gIXVzaW5nT3JpZ2luYWxCaWJsZVxuICBjb25zdCBvcmlnaW5hbFJlcG9VcmwgPSBpc05ld1Rlc3RhbWVudCA/IGdyZWVrUmVwb1VybCA6IGhlYnJld1JlcG9VcmxcbiAgY29uc3Qgc2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZyA9IHtcbiAgICBhdXRoZW50aWNhdGlvbjogY2FuVXNlRWRpdEJyYW5jaCA/IGF1dGhlbnRpY2F0aW9uIDogbnVsbCxcbiAgICBib29rSW5kZXgsXG4gICAgY3VycmVudFZlcnNlUmVmOiBfcmVmZXJlbmNlLFxuICAgIGVuYWJsZUVkaXQsXG4gICAgZW5hYmxlQWxpZ25tZW50LFxuICAgIGh0dHBDb25maWcsXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGlzTmV3VGVzdGFtZW50LFxuICAgIGxvZ2dlZEluVXNlcjogY2FuVXNlRWRpdEJyYW5jaCA/IGxvZ2dlZEluVXNlciA6IG51bGwsXG4gICAgb3JpZ2luYWxMYW5ndWFnZU93bmVyLFxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBvcmlnaW5hbFJlcG9VcmwsXG4gICAgc2NyaXB0dXJlQ29uZmlnLFxuICAgIHNjcmlwdHVyZVNldHRpbmdzLFxuICAgIHN0YXJ0RWRpdEJyYW5jaCxcbiAgICBzZXRTYXZlZENoYW5nZXM6IF9zZXRTYXZlZENoYW5nZXMsXG4gICAgc291cmNlTGFuZ3VhZ2U6IGlzTlRfID8gTlRfT1JJR19MQU5HIDogT1RfT1JJR19MQU5HLFxuICAgIHRhcmdldExhbmd1YWdlOiBsYW5ndWFnZSxcbiAgICB0aXRsZTogc2NyaXB0dXJlVGl0bGUsXG4gICAgd29ya2luZ1Jlc291cmNlQnJhbmNoOiByZWYsXG4gIH1cblxuICAvKipcbiAgICogdGhpcyBnZXRzIGNhbGxlZCB3aGVuZXZlciBhIHNjcmlwdHVyZSBwYW5lIGhhcyBhIGNoYW5nZSBpbiBzYXZlIHN0YXRlXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBjdXJyZW50SW5kZXhcbiAgICogQHBhcmFtIHtib29sZWFufSBzYXZlZFxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBnZXRDaGFuZ2VzIC0gd2lsbCBiZSBjYWxsZWQgd2hlbmV2ZXIgdXNlciBjbGlja3Mgc2F2ZSBidXR0b25cbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gY2xlYXJDaGFuZ2VzIC0gd2lsbCBiZSBjYWxsZWQgd2hlbmV2ZXIgc2F2ZSBoYXMgY29tcGxldGVkXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBzdGF0ZSAtIGN1cnJlbnQgc3RhdGUgb2Ygd29yZCBhbGlnbm1lbnQvZWRpdFxuICAgKi9cbiAgZnVuY3Rpb24gX3NldFNhdmVkQ2hhbmdlcyhjdXJyZW50SW5kZXgsIHNhdmVkLCB7IGdldENoYW5nZXMgPSBudWxsLCBjbGVhckNoYW5nZXMgPSBudWxsLCBzdGF0ZSA9IG51bGwgfSkge1xuICAgIGNvbnN0IF91bnNhdmVkQ2hhbmdlc0xpc3QgPSB7IC4uLnVuc2F2ZWRDaGFuZ2VzTGlzdCB9XG5cbiAgICBpZiAoc2F2ZWQpIHtcbiAgICAgIGlmIChfdW5zYXZlZENoYW5nZXNMaXN0Lmhhc093blByb3BlcnR5KGN1cnJlbnRJbmRleCkpIHtcbiAgICAgICAgZGVsZXRlIF91bnNhdmVkQ2hhbmdlc0xpc3RbY3VycmVudEluZGV4XVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBfdW5zYXZlZENoYW5nZXNMaXN0W2N1cnJlbnRJbmRleF0gPSB7IGdldENoYW5nZXMsIGNsZWFyQ2hhbmdlcywgc3RhdGUgfSAvLyB1cGRhdGUgd2l0aCBsYXRlc3RcbiAgICB9XG5cbiAgICBjb25zdCBfaGF2ZVVuc2F2ZWRDaGFuZ2VzID0gISFPYmplY3Qua2V5cyhfdW5zYXZlZENoYW5nZXNMaXN0KS5sZW5ndGhcblxuICAgIGlmIChoYXZlVW5zYXZlZENoYW5nZXMgIT0gX2hhdmVVbnNhdmVkQ2hhbmdlcykge1xuICAgICAgc2V0U2F2ZWRDaGFuZ2VzICYmIHNldFNhdmVkQ2hhbmdlcyhyZXNvdXJjZUlkLCAhX2hhdmVVbnNhdmVkQ2hhbmdlcylcbiAgICAgIHNldFN0YXRlKHsgaGF2ZVVuc2F2ZWRDaGFuZ2VzOiBfaGF2ZVVuc2F2ZWRDaGFuZ2VzIH0pXG4gICAgfVxuXG4gICAgaWYgKCFpc0VxdWFsKF91bnNhdmVkQ2hhbmdlc0xpc3QsIHVuc2F2ZWRDaGFuZ2VzTGlzdCkpIHtcbiAgICAgIHNldFN0YXRlKHsgdW5zYXZlZENoYW5nZXNMaXN0OiBfdW5zYXZlZENoYW5nZXNMaXN0IH0pXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIHNlYXJjaCBjaGFwdGVyIG9yIHZlcnNlIGNodW5rIHRvIGxpbmUgdGhhdCBzdGFydHMgd2l0aCBmaW5kSXRlbVxuICAgKiBAcGFyYW0ge251bWJlcnxzdHJpbmd9IGZpbmRJdGVtXG4gICAqIEBwYXJhbSB7c3RyaW5nW119IGNodW5rc1xuICAgKi9cbiAgZnVuY3Rpb24gZmluZFJlZkluQXJyYXkoZmluZEl0ZW0sIGNodW5rcykge1xuICAgIGNvbnN0IHJlZl8gPSBmaW5kSXRlbSArICcnXG4gICAgY29uc3QgcmVmTGVuID0gcmVmXy5sZW5ndGhcbiAgICBjb25zdCBpbmRleCA9IGNodW5rcy5maW5kSW5kZXgoKGNodW5rLCBpZHgpID0+IHtcbiAgICAgIGlmIChpZHggPiAwKSB7XG4gICAgICAgIGlmIChjaHVuay5zdWJzdHJpbmcoMCwgcmVmTGVuKSA9PT0gcmVmXykge1xuICAgICAgICAgIGNvbnN0IG5leHRDaGFyID0gY2h1bmtbcmVmTGVuXVxuXG4gICAgICAgICAgaWYgKChuZXh0Q2hhciA+ICc5JykgfHwgKG5leHRDaGFyIDwgJzAnKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH0pXG4gICAgcmV0dXJuIGluZGV4XG4gIH1cblxuICBmdW5jdGlvbiBnZXRCb29rTmFtZSgpIHtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3QgYm9va0NhcHMgPSBzY3JpcHR1cmVDb25maWc/LnJlZmVyZW5jZT8ucHJvamVjdElkID8gc2NyaXB0dXJlQ29uZmlnLnJlZmVyZW5jZS5wcm9qZWN0SWQudG9VcHBlckNhc2UoKSA6ICcnXG4gICAgcmV0dXJuIGAke2Jvb2tJbmRleH0tJHtib29rQ2Fwc30udXNmbWBcbiAgfVxuXG4gIGNvbnN0IGZpbGVwYXRoID0gZ2V0Qm9va05hbWUoKVxuICBjb25zdCBzaGEgPSBmZXRjaGVkUmVzb3VyY2U/LnNoYVxuXG4gIC8vIGtlZXAgdHJhY2sgb2YgdmVyc2UgZWRpdCBzdGF0ZVxuICBjb25zdCB7XG4gICAgZXJyb3I6IHNhdmVFcnJvcixcbiAgICBpc0Vycm9yOiBpc1NhdmVFcnJvcixcbiAgICBvblNhdmVFZGl0LFxuICAgIG9uU2F2ZUVkaXRQYXRjaCxcbiAgfSA9IHVzZUVkaXQoe1xuICAgIHNoYSxcbiAgICBvd25lcixcbiAgICBjb250ZW50OiBzYXZlQ29udGVudCxcbiAgICBjb25maWc6IHtcbiAgICAgIGNhY2hlOiB7IG1heEFnZTogMCB9LFxuICAgICAgLi4uYXV0aGVudGljYXRpb24/LmNvbmZpZyxcbiAgICAgIGRvbnRDcmVhdGVCcmFuY2g6IHRydWUsXG4gICAgICB0b2tlbjogYXV0aGVudGljYXRpb24/LnRva2VuLFxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgdGltZW91dDogaHR0cENvbmZpZz8uc2VydmVyVGltZU91dCB8fCBodHRwQ29uZmlnPy50aW1lb3V0IHx8IDEwMDAwLFxuICAgICAgc2VydmVyLFxuICAgIH0sXG4gICAgYXV0aG9yOiBsb2dnZWRJblVzZXIsXG4gICAgZW1haWw6IGF1dGhlbnRpY2F0aW9uPy51c2VyPy5lbWFpbCxcbiAgICB0b2tlbjogYXV0aGVudGljYXRpb24/LnRva2VuLFxuICAgIGJyYW5jaDogd29ya2luZ1Jlc291cmNlQnJhbmNoLFxuICAgIGZpbGVwYXRoLFxuICAgIHJlcG8sXG4gIH0pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHsgLy8gd2hlbiB3ZSBnZXQgYSBzYXZlIHNhdmVFcnJvclxuICAgIGlmIChzYXZlRXJyb3IgJiYgaXNTYXZlRXJyb3IpIHtcbiAgICAgIGNvbnNvbGUubG9nKGBzYXZlIGVycm9yYCwgc2F2ZUVycm9yKVxuICAgICAgb25SZXNvdXJjZUVycm9yICYmIG9uUmVzb3VyY2VFcnJvcihudWxsLCBmYWxzZSwgbnVsbCwgYEVycm9yIHNhdmluZyAke2xhbmd1YWdlSWRffV8ke3Jlc291cmNlSWR9ICR7c2F2ZUVycm9yfWAsIHRydWUpXG4gICAgfVxuICB9LCBbc2F2ZUVycm9yLCBpc1NhdmVFcnJvcl0pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHsgLy8gd2hlbiBzdGFydFNhdmUgZ29lcyB0cnVlLCBzYXZlIGVkaXRzIHRvIHVzZXIgYnJhbmNoIGFuZCB0aGVuIGNsZWFyIHN0YXJ0U2F2ZVxuICAgIGNvbnN0IF9zYXZlRWRpdCA9IGFzeW5jICgpID0+IHsgLy8gYmVnaW4gdXBsb2FkaW5nIG5ldyBVU0ZNXG4gICAgICBjb25zb2xlLmluZm8oYHNhdmVDaGFuZ2VzVG9DbG91ZCgpIC0gVXNpbmcgc2hhOiAke3NoYX1gKVxuICAgICAgbGV0IHNhdmVGdW5jdGlvbiA9IG9uU2F2ZUVkaXRcbiAgICAgIGlmIChzYXZlRGlmZlBhdGNoKSB7XG4gICAgICAgIHNhdmVGdW5jdGlvbiA9IG9uU2F2ZUVkaXRQYXRjaCAvLyBpZiB3ZSBhcmUgc2VuZGluZyB1cCBhIGRpZmZwYXRjaCwgd2Ugd2lsbCB1c2UgdGhpcyBtZXRob2RcbiAgICAgIH1cbiAgICAgIGF3YWl0IHNhdmVGdW5jdGlvbih1c2VyRWRpdEJyYW5jaE5hbWUpLnRoZW4oKHN1Y2Nlc3MpID0+IHsgLy8gcHVzaCBjaGFuZ2UgdG8gc2VydmVyXG4gICAgICAgIGlmIChzdWNjZXNzKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCgpIC0gc2F2ZSBzY3JpcHR1cmUgZWRpdHMgc3VjY2Vzc2ApXG4gICAgICAgICAgc2V0Q2FyZHNTYXZpbmcocHJldkNhcmRzU2F2aW5nID0+IHByZXZDYXJkc1NhdmluZy5maWx0ZXIoY2FyZElkID0+IGNhcmRJZCAhPT0gY2FyZFJlc291cmNlSWQpKVxuICAgICAgICAgIHNldFN0YXRlKHtcbiAgICAgICAgICAgIHN0YXJ0U2F2ZTogZmFsc2UsXG4gICAgICAgICAgfSlcblxuICAgICAgICAgIGNvbnN0IHVuc2F2ZWRDYXJkSW5kaWNlcyA9IE9iamVjdC5rZXlzKHVuc2F2ZWRDaGFuZ2VzTGlzdClcblxuICAgICAgICAgIGlmICh1bnNhdmVkQ2FyZEluZGljZXM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgZm9yIChjb25zdCBjYXJkSW5kZXggb2YgdW5zYXZlZENhcmRJbmRpY2VzKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHsgY2xlYXJDaGFuZ2VzIH0gPSB1bnNhdmVkQ2hhbmdlc0xpc3RbY2FyZEluZGV4XVxuICAgICAgICAgICAgICBjbGVhckNoYW5nZXMgJiYgY2xlYXJDaGFuZ2VzKClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zb2xlLmluZm8oJ3NhdmVDaGFuZ2VzVG9DbG91ZCgpIC0gUmVsb2FkaW5nIHJlc291cmNlJylcbiAgICAgICAgICBzZXRTdGF0ZSh7XG4gICAgICAgICAgICBzdGFydFNhdmU6IGZhbHNlLFxuICAgICAgICAgICAgcmVhZHlGb3JGZXRjaDogdHJ1ZSxcbiAgICAgICAgICAgIHJlZjogdXNlckVkaXRCcmFuY2hOYW1lLFxuICAgICAgICAgIH0pXG4gICAgICAgICAgZGVsYXkoMTAwKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgIHNldENhcmRzU2F2aW5nKHByZXZDYXJkc1NhdmluZyA9PiBwcmV2Q2FyZHNTYXZpbmcuZmlsdGVyKGNhcmRJZCA9PiBjYXJkSWQgIT09IGNhcmRSZXNvdXJjZUlkKSlcbiAgICAgICAgICAgIHNjcmlwdHVyZUNvbmZpZz8ucmVsb2FkUmVzb3VyY2Uoc2hhLCB1c2VyRWRpdEJyYW5jaE5hbWUpXG4gICAgICAgICAgfSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdzYXZlQ2hhbmdlc1RvQ2xvdWQoKSAtIHNhdmluZyBjaGFuZ2VkIHNjcmlwdHVyZSBmYWlsZWQnKVxuICAgICAgICAgIHNldENhcmRzU2F2aW5nKHByZXZDYXJkc1NhdmluZyA9PiBwcmV2Q2FyZHNTYXZpbmcuZmlsdGVyKGNhcmRJZCA9PiBjYXJkSWQgIT09IGNhcmRSZXNvdXJjZUlkKSlcbiAgICAgICAgICBzZXRTdGF0ZSh7IHN0YXJ0U2F2ZTogZmFsc2UgfSlcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG5cbiAgICBpZiAoc3RhcnRTYXZlKSB7XG4gICAgICBpZiAoIWVkaXRCcmFuY2hSZWFkeSkge1xuICAgICAgICAvLyBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkIC0gZWRpdCBicmFuY2ggbm90IHlldCBjcmVhdGVkYClcbiAgICAgIH0gZWxzZSBpZiAoIXNoYSkge1xuICAgICAgICAvLyBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkIC0gc2F2ZSBzaGEgbm90IHlldCByZWFkeWApXG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkIC0gY2FsbGluZyBfc2F2ZUVkaXQoKWApXG4gICAgICAgIHNldENhcmRzU2F2aW5nKHByZXZDYXJkc1NhdmluZyA9PiBbLi4ucHJldkNhcmRzU2F2aW5nLCBjYXJkUmVzb3VyY2VJZF0pXG4gICAgICAgIF9zYXZlRWRpdCgpXG4gICAgICB9XG4gICAgfVxuICB9LCBbc3RhcnRTYXZlLCBlZGl0QnJhbmNoUmVhZHksIHNoYV0pXG5cbiAgLyoqXG4gICAqIGNvbnZlcnQgdXBkYXRlZFZlcnNlT2JqZWN0cyB0byBVU0ZNIGFuZCBtZXJnZSBpbnRvIHRoZSBiaWJsZVVzZm1cbiAgICogQHBhcmFtIHtzdHJpbmd9IGJpYmxlVXNmbSAtIFVTRk0gb2YgYmlibGVcbiAgICogQHBhcmFtIHtvYmplY3R9IHJlZiAtIHJlZmVyZW5jZSBvZiB2ZXJzZSB0byBtZXJnZSBpblxuICAgKiBAcGFyYW0ge29iamVjdFtdfSB1cGRhdGVkVmVyc2VPYmplY3RzIC0gbmV3IHZlcnNlIGluIHZlcnNlT2JqZWN0IGZvcm1hdFxuICAgKiBAcGFyYW0ge251bWJlcn0gY2FyZE51bVxuICAgKi9cbiAgZnVuY3Rpb24gbWVyZ2VWZXJzZU9iamVjdHNJbnRvQmlibGVVc2ZtKGJpYmxlVXNmbSwgcmVmLCB1cGRhdGVkVmVyc2VPYmplY3RzLCBjYXJkTnVtOiBudW1iZXIpIHtcbiAgICBsZXQgbmV3VXNmbVxuICAgIGNvbnN0IGNoYXB0ZXJDaHVua3MgPSBiaWJsZVVzZm0/LnNwbGl0KCdcXFxcYyAnKVxuICAgIGNvbnN0IGNoYXB0ZXJJbmRleCA9IGZpbmRSZWZJbkFycmF5KHJlZj8uY2hhcHRlciwgY2hhcHRlckNodW5rcylcblxuICAgIGlmIChjaGFwdGVySW5kZXggPj0gMCkge1xuICAgICAgY29uc3QgY3VycmVudENoYXB0ZXIgPSBjaGFwdGVyQ2h1bmtzW2NoYXB0ZXJJbmRleF1cbiAgICAgIGxldCB2ZXJzZUNodW5rcyA9IGN1cnJlbnRDaGFwdGVyLnNwbGl0KCdcXFxcdiAnKVxuICAgICAgY29uc3QgdmVyc2VJbmRleCA9IGZpbmRSZWZJbkFycmF5KHJlZj8udmVyc2UsIHZlcnNlQ2h1bmtzKVxuICAgICAgY29uc3QgZnJvbnRNYXR0ZXIgPSByZWY/LnZlcnNlID09PSAnZnJvbnQnXG5cbiAgICAgIGlmIChmcm9udE1hdHRlciB8fCB2ZXJzZUluZGV4ID49IDApIHtcbiAgICAgICAgY29uc3QgbmV3VmVyc2VVc2ZtID0gVXNmbUZpbGVDb252ZXJzaW9uSGVscGVycy5jb252ZXJ0VmVyc2VEYXRhVG9VU0ZNKHVwZGF0ZWRWZXJzZU9iamVjdHMpXG4gICAgICAgIGNvbnNvbGUubG9nKGBzYXZlQ2hhbmdlc1RvQ2xvdWQoKSAtIG5ldyBVU0ZNIGZvciBjYXJkICR7Y2FyZE51bX0sIHZlcnNlICR7cmVmPy52ZXJzZX06fSAtICR7bmV3VmVyc2VVc2ZtLnN1YnN0cmluZygwLCAxMDApfWApXG4gICAgICAgIGlmIChmcm9udE1hdHRlcikgeyAvLyBmcm9udCBtYXR0ZXIgZ29lcyBiZWZvcmUgZmlyc3QgdmVyc2VcbiAgICAgICAgICBjb25zdCBvbGRWZXJzZSA9IHZlcnNlQ2h1bmtzWzBdXG4gICAgICAgICAgY29uc3QgcHJlZml4TGVuID0gb2xkVmVyc2UuaW5kZXhPZignXFxuJykgLy8gY2hhcmFjdGVycyBiZWZvcmUgdGhlIGZyb250IG1hdHRlciB0ZXh0XG4gICAgICAgICAgdmVyc2VDaHVua3NbMF0gPSBvbGRWZXJzZS5zdWJzdHJpbmcoMCwgcHJlZml4TGVuICsgMSkgKyBuZXdWZXJzZVVzZm1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBvbGRWZXJzZSA9IHZlcnNlQ2h1bmtzW3ZlcnNlSW5kZXhdXG4gICAgICAgICAgY29uc3QgdmVyc2VOdW1MZW4gPSAocmVmPy52ZXJzZSArICcnKS5sZW5ndGggLy8gY2hhcmFjdGVycyBiZWZvcmUgdGhlIHZlcnNlIHRleHRcbiAgICAgICAgICB2ZXJzZUNodW5rc1t2ZXJzZUluZGV4XSA9IG9sZFZlcnNlLnN1YnN0cmluZygwLCB2ZXJzZU51bUxlbiArIDEpICsgbmV3VmVyc2VVc2ZtXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbmV3Q2hhcHRlciA9IHZlcnNlQ2h1bmtzLmpvaW4oJ1xcXFx2ICcpXG4gICAgICAgIGNoYXB0ZXJDaHVua3NbY2hhcHRlckluZGV4XSA9IG5ld0NoYXB0ZXJcbiAgICAgICAgbmV3VXNmbSA9IGNoYXB0ZXJDaHVua3Muam9pbignXFxcXGMgJylcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG5ld1VzZm1cbiAgfVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7IC8vIGZvciBlYWNoIHVuc2F2ZWQgY2hhbmdlLCBjYWxsIGludG8gc2NyaXB0dXJlUGFuZSB0byBnZXQgbGF0ZXN0IGNoYW5nZXMgZm9yIHZlcnNlIHRvIHNhdmVcbiAgICBhc3luYyBmdW5jdGlvbiBnZXRSZWFkeUZvclNhdmUoKSB7XG4gICAgICBpZiAoc2F2ZUNsaWNrZWQpIHtcbiAgICAgICAgbGV0IGNyZWF0ZUVkaXRCcmFuY2ggPSAhX3VzaW5nVXNlckJyYW5jaFxuXG4gICAgICAgIGlmICghY3JlYXRlRWRpdEJyYW5jaCkgeyAvLyBpZiBhbHJlYWR5IHVzaW5nIHRoZSB1c2VyIGJyYW5jaFxuICAgICAgICAgIGlmICh3b3JraW5nUmVzb3VyY2VCcmFuY2ggIT09IHVzZXJFZGl0QnJhbmNoTmFtZSkge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKGBzYXZlQ2hhbmdlc1RvQ2xvdWQgLSBzdGF0ZSBjb25mbGljdCAtIHNob3VsZCBiZSBpbiB1c2VyIGJyYW5jaCAke3VzZXJFZGl0QnJhbmNoTmFtZX0sIGJ1dCBhY3R1YWxseSB1c2luZyAke3dvcmtpbmdSZXNvdXJjZUJyYW5jaH1gKVxuICAgICAgICAgICAgY3JlYXRlRWRpdEJyYW5jaCA9IHRydWVcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCAtIGFscmVhZHkgdXNpbmcgZWRpdCBicmFuY2g6ICR7d29ya2luZ1Jlc291cmNlQnJhbmNofWApXG4gICAgICAgICAgICBzZXRTdGF0ZSh7IGVkaXRCcmFuY2hSZWFkeTogdHJ1ZSB9KVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjcmVhdGVFZGl0QnJhbmNoKSB7IC8vIGlmIG5vdCB5ZXQgdXNpbmcgdGhlIHVzZXIgYnJhbmNoLCBjcmVhdGUgaXRcbiAgICAgICAgICBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkIC0gY3JlYXRpbmcgZWRpdCBicmFuY2hgKVxuICAgICAgICAgIHNldFN0YXRlKHtcbiAgICAgICAgICAgIGVkaXRCcmFuY2hSZWFkeTogZmFsc2UsXG4gICAgICAgICAgICByZWFkeUZvckZldGNoOiBmYWxzZSxcbiAgICAgICAgICAgIHNoYTogbnVsbCxcbiAgICAgICAgICB9KSAvLyB3ZSB3aWxsIG5lZWQgYSBuZXcgc2hhIGZvciBib29rL2JyYW5jaFxuXG4gICAgICAgICAgY29uc3QgYnJhbmNoID0gYXdhaXQgc3RhcnRFZGl0QnJhbmNoKClcblxuICAgICAgICAgIGlmIChicmFuY2gpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBzYXZlQ2hhbmdlc1RvQ2xvdWQgLSBlZGl0IGJyYW5jaCBjcmVhdGVkYClcbiAgICAgICAgICAgIHNldFN0YXRlKHtcbiAgICAgICAgICAgICAgZWRpdEJyYW5jaFJlYWR5OiB0cnVlLFxuICAgICAgICAgICAgICByZWFkeUZvckZldGNoOiB0cnVlLFxuICAgICAgICAgICAgICByZWY6IGJyYW5jaCxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ3NhdmVDaGFuZ2VzVG9DbG91ZCgpIC0gZXJyb3IgY3JlYXRpbmcgZWRpdCBicmFuY2gnKVxuICAgICAgICAgICAgb25SZXNvdXJjZUVycm9yICYmIG9uUmVzb3VyY2VFcnJvcihudWxsLCBmYWxzZSwgbnVsbCwgYEVycm9yIGNyZWF0aW5nIGVkaXQgYnJhbmNoICR7bGFuZ3VhZ2VJZF99XyR7cmVzb3VyY2VJZH1gLCB0cnVlKVxuICAgICAgICAgICAgc2V0U3RhdGUoeyBzYXZlQ2xpY2tlZDogZmFsc2UgfSlcbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnNvbGUubG9nKGBzYXZlQ2hhbmdlc1RvQ2xvdWQgLSBnZXR0aW5nIHZlcnNlIGNoYW5nZXNgKVxuICAgICAgICBjb25zdCB1bnNhdmVkQ2FyZEluZGljZXMgPSBPYmplY3Qua2V5cyh1bnNhdmVkQ2hhbmdlc0xpc3QpXG5cbiAgICAgICAgaWYgKHVuc2F2ZWRDYXJkSW5kaWNlcz8ubGVuZ3RoKSB7XG4gICAgICAgICAgbGV0IGJpYmxlVXNmbV8gPSBnZXRDdXJyZW50Qm9vayhzY3JpcHR1cmVDb25maWcsIGJvb2tJZCkgLy8gZ2V0IG9yaWdpbmFsIFVTRk1cbiAgICAgICAgICBsZXQgYmlibGVVc2ZtID0gYmlibGVVc2ZtXyAvLyBtYWtlIGEgY29weSB0byBlZGl0XG4gICAgICAgICAgbGV0IG1lcmdlRmFpbCA9IGZhbHNlXG5cbiAgICAgICAgICBpZiAoYmlibGVVc2ZtXykge1xuICAgICAgICAgICAgbGV0IGNhcmROdW0gPSAwXG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgY2FyZEluZGV4IG9mIHVuc2F2ZWRDYXJkSW5kaWNlcykge1xuICAgICAgICAgICAgICBjYXJkTnVtID0gcGFyc2VJbnQoY2FyZEluZGV4KVxuICAgICAgICAgICAgICBjb25zdCB7IGdldENoYW5nZXMsIHN0YXRlIH0gPSB1bnNhdmVkQ2hhbmdlc0xpc3RbY2FyZE51bV1cblxuICAgICAgICAgICAgICBpZiAoZ2V0Q2hhbmdlcykge1xuICAgICAgICAgICAgICAgIGxldCBuZXdVc2ZtXG4gICAgICAgICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgICAgICAgcmVmLFxuICAgICAgICAgICAgICAgICAgdXBkYXRlZFZlcnNlT2JqZWN0cyxcbiAgICAgICAgICAgICAgICB9ID0gZ2V0Q2hhbmdlcyhzdGF0ZSlcblxuICAgICAgICAgICAgICAgIGlmICh1cGRhdGVkVmVyc2VPYmplY3RzICYmIGJpYmxlVXNmbSkgeyAvLyBqdXN0IHJlcGxhY2UgdmVyc2VcbiAgICAgICAgICAgICAgICAgIG5ld1VzZm0gPSBtZXJnZVZlcnNlT2JqZWN0c0ludG9CaWJsZVVzZm0oYmlibGVVc2ZtLCByZWYsIHVwZGF0ZWRWZXJzZU9iamVjdHMsIGNhcmROdW0pXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKG5ld1VzZm0pIHtcbiAgICAgICAgICAgICAgICAgIGJpYmxlVXNmbSA9IG5ld1VzZm1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgbWVyZ2VGYWlsID0gdHJ1ZVxuICAgICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBsZXQgc2F2ZURpZmZQYXRjaCA9IGZhbHNlIC8vIGlmIHRydWUgdGhlbiB3ZSB3aWxsIHNlbmQgdXAgYSBkaWZmcGF0Y2ggaW5zdGVhZCBvZiB0aGUgd2hvbGUgYm9va1xuXG4gICAgICAgICAgaWYgKG1lcmdlRmFpbCkgeyAvLyBpZiB3ZSBmYWlsZWQgdG8gbWVyZ2UsIGZhbGxiYWNrIHRvIGJydXRlIGZvcmNlIHZlcnNlIG9iamVjdHMgdG8gVVNGTVxuICAgICAgICAgICAgY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCgke2NhcmROdW19KSAtIHZlcnNlIG5vdCBmb3VuZCwgZmFsbGluZyBiYWNrIHRvIGluc2VydGluZyB2ZXJzZSBvYmplY3RgKVxuICAgICAgICAgICAgbGV0IG5ld0Jvb2tKc29uXG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgY2FyZEluZGV4IG9mIHVuc2F2ZWRDYXJkSW5kaWNlcykge1xuICAgICAgICAgICAgICBjb25zdCBjYXJkTnVtID0gcGFyc2VJbnQoY2FyZEluZGV4KVxuICAgICAgICAgICAgICBjb25zdCB7IGdldENoYW5nZXMsIHN0YXRlIH0gPSB1bnNhdmVkQ2hhbmdlc0xpc3RbY2FyZE51bV1cblxuICAgICAgICAgICAgICBpZiAoZ2V0Q2hhbmdlcykge1xuICAgICAgICAgICAgICAgIGxldCBuZXdVc2ZtXG4gICAgICAgICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgICAgICAgbmV3VmVyc2VUZXh0LFxuICAgICAgICAgICAgICAgICAgcmVmLFxuICAgICAgICAgICAgICAgICAgdXBkYXRlZFZlcnNlT2JqZWN0cyxcbiAgICAgICAgICAgICAgICB9ID0gZ2V0Q2hhbmdlcyhzdGF0ZSlcblxuICAgICAgICAgICAgICAgIGlmICh1cGRhdGVkVmVyc2VPYmplY3RzICYmICFuZXdVc2ZtKSB7XG4gICAgICAgICAgICAgICAgICBsZXQgdGFyZ2V0VmVyc2VPYmplY3RzXyA9IG51bGxcblxuICAgICAgICAgICAgICAgICAgaWYgKHJlZikge1xuICAgICAgICAgICAgICAgICAgICBpZiAobmV3VmVyc2VUZXh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgY29uc3QgeyB0YXJnZXRWZXJzZU9iamVjdHMgfSA9IEFsaWdubWVudEhlbHBlcnMudXBkYXRlQWxpZ25tZW50c1RvVGFyZ2V0VmVyc2UodXBkYXRlZFZlcnNlT2JqZWN0cywgbmV3VmVyc2VUZXh0KVxuICAgICAgICAgICAgICAgICAgICAgIHRhcmdldFZlcnNlT2JqZWN0c18gPSB0YXJnZXRWZXJzZU9iamVjdHNcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRWZXJzZU9iamVjdHNfID0gdXBkYXRlZFZlcnNlT2JqZWN0c1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIG5ld0Jvb2tKc29uID0gdGFyZ2V0VmVyc2VPYmplY3RzXyAmJiBzY3JpcHR1cmVDb25maWc/LnVwZGF0ZVZlcnNlKHJlZi5jaGFwdGVyLCByZWYudmVyc2UsIHt2ZXJzZU9iamVjdHM6IHRhcmdldFZlcnNlT2JqZWN0c199KVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBiaWJsZVVzZm0gPSB1c2ZtanMudG9VU0ZNKG5ld0Jvb2tKc29uLCB7IGZvcmNlZE5ld0xpbmVzOiB0cnVlIH0pXG4gICAgICAgICAgfSBlbHNlIHsgLy8gaWYgb25seSBjaGFuZ2VkIGEgZmV3IHZlcnNlcywgd2Ugd2lsbCBqdXN0IG1ha2UgYSBkaWZmcGF0Y2ggaW5zdGVhZCBvZiBzZW5kaW5nIHRoZSB3aG9sZSBib29rXG4gICAgICAgICAgICBjb25zdCBmaWxlbmFtZSA9IHNjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2VTdGF0ZT8ucmVzb3VyY2U/Lm5hbWUgLy8gTGlrZSBcIjU3LVRJVC51c2ZtXCJcbiAgICAgICAgICAgIGlmIChmaWxlbmFtZSAmJiBiaWJsZVVzZm0gJiYgYmlibGVVc2ZtXykgeyAvLyBtYWtlIHN1cmUgd2UgaGF2ZSBldmVyeXRoaW5nIG5lZWRlZCB0byBtYWtlIGEgcGF0Y2hcbiAgICAgICAgICAgICAgaWYgKGJpYmxlVXNmbV8gPT09IGJpYmxlVXNmbSkgeyAvLyBpZiBubyBkYXRhIGNoYW5nZSwgdGhlbiBza2lwIHNhdmUgYmVjYXVzZSBEQ1MgY3Jhc2hlcyBvbiBhbiBlbXB0eSBwYXRjaFxuICAgICAgICAgICAgICAgIGNvbnNvbGUud2Fybihgc2F2ZUNoYW5nZXNUb0Nsb3VkKCkgLSB0aGVyZSBpcyBub3RoaW5nIHRvIHNhdmUsIHNraXBwaW5nYClcbiAgICAgICAgICAgICAgICBzZXRTdGF0ZSh7IHNhdmVDbGlja2VkOiBmYWxzZSB9KVxuICAgICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IGRpZmZQYXRjaCA9IGdldFBhdGNoKGZpbGVuYW1lLCBiaWJsZVVzZm1fLCBiaWJsZVVzZm0sIGZhbHNlKVxuICAgICAgICAgICAgICBiaWJsZVVzZm1fID0gZGlmZlBhdGNoIC8vIHJlcGxhY2Ugd2hvbGUgYm9vayB3aXRoIHBhdGNoIGRhdGEgKG11Y2ggc2hvcnRlcilcbiAgICAgICAgICAgICAgc2F2ZURpZmZQYXRjaCA9IHRydWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoYmlibGVVc2ZtKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkKCkgLSBzYXZpbmcgbmV3IFVTRk06ICR7YmlibGVVc2ZtLnN1YnN0cmluZygwLCAxMDApfS4uLmApXG4gICAgICAgICAgICBzZXRDYXJkc1NhdmluZyhwcmV2Q2FyZHNTYXZpbmcgPT4gWy4uLnByZXZDYXJkc1NhdmluZywgY2FyZFJlc291cmNlSWRdKVxuICAgICAgICAgICAgc2V0U3RhdGUoe1xuICAgICAgICAgICAgICBzYXZlQ29udGVudDogYmlibGVVc2ZtXyxcbiAgICAgICAgICAgICAgc2F2ZUNsaWNrZWQ6IGZhbHNlLFxuICAgICAgICAgICAgICBzYXZlRGlmZlBhdGNoLFxuICAgICAgICAgICAgICBzdGFydFNhdmU6IHRydWUsXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGBzYXZlQ2hhbmdlc1RvQ2xvdWQoKSAtIEVycm9yIHJldHJpZXZpbmcgdGhlIGNvcnJlY3QgYm9vayBkYXRhOiBpbmNvcnJlY3QgYm9vayAke2xhbmd1YWdlSWRffV8ke3Jlc291cmNlSWR9YClcbiAgICAgICAgICAgIG9uUmVzb3VyY2VFcnJvciAmJiBvblJlc291cmNlRXJyb3IobnVsbCwgZmFsc2UsIG51bGwsIGBFcnJvciByZXRyaWV2aW5nIHRoZSBjb3JyZWN0IGJvb2sgZGF0YSAke2xhbmd1YWdlSWRffV8ke3Jlc291cmNlSWR9YCwgdHJ1ZSlcbiAgICAgICAgICAgIHNldFN0YXRlKHsgc2F2ZUNsaWNrZWQ6IGZhbHNlIH0pXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgZ2V0UmVhZHlGb3JTYXZlKClcbiAgfSwgW3NhdmVDbGlja2VkXSlcblxuICAvLyBAdHMtaWdub3JlXG4gIGNvbnN0IHsgY2hhcHRlciB9ID0gX3JlZmVyZW5jZSB8fCB7fVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgX3ZlcnNlc0ZvclJlZiA9IHNjcmlwdHVyZUNvbmZpZz8udmVyc2VzRm9yUmVmXG4gICAgbGV0IG5ld1NlbGVjdGlvbnMgPSBuZXcgTWFwKClcbiAgICBsZXQgdXBkYXRlU2VsZWN0aW9ucyA9IGZhbHNlXG4gICAgY29uc3QgX21hcCA9IG5ld1NlbGVjdGlvbnNcbiAgICBjb25zdCBvcmlnaW5hbEJvb2tJZCA9IG9yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHM/LmJvb2tJZFxuICAgIGNvbnN0IGJvb2tWZXJzZU9iamVjdCA9IG9yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHM/LmNoYXB0ZXJzXG4gICAgbGV0IG5ld1NlbGVjdGVkUXVvdGUgPSBudWxsXG5cbiAgICAvLyBpZiB3ZSBoYXZlIGV2ZXJ5dGhpbmcgd2UgbmVlZCB0byBjYWxjdWxhdGUgc2VsZWN0aW9uc1xuICAgIGlmIChfdmVyc2VzRm9yUmVmPy5sZW5ndGggJiZcbiAgICAgIGJvb2tWZXJzZU9iamVjdCAmJlxuICAgICAgKGJvb2tJZCA9PT0gb3JpZ2luYWxCb29rSWQpICYmXG4gICAgICBib29rVmVyc2VPYmplY3RbY2hhcHRlcl0gJiYgLy8gd2UgbmVlZCB0byBoYXZlIGRhdGEgZm9yIGNoYXB0ZXJcbiAgICAgIHNlbGVjdGVkUXVvdGU/LnF1b3RlXG4gICAgKSB7XG4gICAgICAvLyBpZiBxdW90ZSBpcyBkaWZmZXJlbnQgdGhhbiBsYXN0XG4gICAgICBpZiAoIWlzRXF1YWwobGFzdFNlbGVjdGVkUXVvdGUsIHNlbGVjdGVkUXVvdGUpIHx8XG4gICAgICAgICFpc0VxdWFsKHZlcnNlc0ZvclJlZiwgX3ZlcnNlc0ZvclJlZikpIHtcbiAgICAgICAgY29uc3Qgb3JpZ2luYWxWZXJzZXMgPSB7fVxuICAgICAgICBjb25zdCBzdWJzdGl0dXRlID0ge30gLy8ga2VlcCB0cmFjayBvZiB2ZXJzZSBzdWJzdGl0dXRpb25zXG4gICAgICAgIGxldCBzdGFydFZlcnNlID0gX3ZlcnNlc0ZvclJlZlswXS52ZXJzZVxuXG4gICAgICAgIGlmICh0eXBlb2Ygc3RhcnRWZXJzZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBzdGFydFZlcnNlID0gcGFyc2VJbnQoc3RhcnRWZXJzZSlcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBsYXN0VmVyc2UgPSBzdGFydFZlcnNlXG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDAsIGwgPSBfdmVyc2VzRm9yUmVmLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgICAgIGNvbnN0IHZlcnNlUmVmID0gX3ZlcnNlc0ZvclJlZltpXVxuICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIGNoYXB0ZXIsXG4gICAgICAgICAgICB2ZXJzZSxcbiAgICAgICAgICB9ID0gdmVyc2VSZWZcbiAgICAgICAgICAvLyBUUklDS1kgLSB3ZSByZW1hcCB2ZXJzZXMgaW4gcmVmZXJlbmNlIHJhbmdlIHRvIGEgbGluZWFyIHNlcmllcyBvZiB2ZXJzZXMgc28gdmVyc2Ugc3BhbnMgZG9uJ3QgY2hva2UgZ2V0UXVvdGVNYXRjaGVzSW5Cb29rUmVmXG4gICAgICAgICAgbGV0IF92ZXJzZSA9IHN0YXJ0VmVyc2UgKyBpXG4gICAgICAgICAgbGFzdFZlcnNlID0gX3ZlcnNlXG4gICAgICAgICAgc3Vic3RpdHV0ZVtgJHtjaGFwdGVyfToke192ZXJzZX1gXSA9IGAke2NoYXB0ZXJ9OiR7dmVyc2V9YFxuXG4gICAgICAgICAgaWYgKCFvcmlnaW5hbFZlcnNlc1tjaGFwdGVyXSkge1xuICAgICAgICAgICAgb3JpZ2luYWxWZXJzZXNbY2hhcHRlcl0gPSB7fVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGxldCB2ZXJzZU9iamVjdHMgPSBbXVxuXG4gICAgICAgICAgaWYgKCh0eXBlb2YgdmVyc2UgPT09ICdzdHJpbmcnKSAmJiAodmVyc2UuaW5jbHVkZXMoJy0nKSkpIHtcbiAgICAgICAgICAgIGNvbnN0IHZlcnNlcyA9IGdldFZlcnNlcyhib29rVmVyc2VPYmplY3QsIGAke2NoYXB0ZXJ9OiR7dmVyc2V9YClcblxuICAgICAgICAgICAgZm9yIChjb25zdCB2ZXJzZUl0ZW0gb2YgdmVyc2VzKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHZvID0gdmVyc2VJdGVtLnZlcnNlRGF0YS52ZXJzZU9iamVjdHNcbiAgICAgICAgICAgICAgdmVyc2VPYmplY3RzID0gdmVyc2VPYmplY3RzLmNvbmNhdCh2bylcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdmVyc2VPYmplY3RzID0gYm9va1ZlcnNlT2JqZWN0W2NoYXB0ZXJdW3ZlcnNlXT8udmVyc2VPYmplY3RzXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHZlcnNlT2JqZWN0cykge1xuICAgICAgICAgICAgdmVyc2VPYmplY3RzID0gY2xlYW51cFZlcnNlT2JqZWN0cyh2ZXJzZU9iamVjdHMpXG4gICAgICAgICAgICBvcmlnaW5hbFZlcnNlc1tjaGFwdGVyXVtfdmVyc2VdID0geyB2ZXJzZU9iamVjdHMgfVxuICAgICAgICAgICAgX21hcC5zZXQoYCR7Y2hhcHRlcn06JHt2ZXJzZX1gLCB2ZXJzZU9iamVjdHMpXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gY3JlYXRlIG5ldyByZWZlcmVuY2UgcmFuZ2UgZm9yIG5ldyBsaW5lYXIgdmVyc2UgcmFuZ2VcbiAgICAgICAgY29uc3QgW2NoYXB0ZXJdID0gc2VsZWN0ZWRRdW90ZT8ucmVmZXJlbmNlPy5zcGxpdCgnOicpXG4gICAgICAgIGxldCBzdWJSZWYgPSBgJHtjaGFwdGVyfToke3N0YXJ0VmVyc2V9YFxuXG4gICAgICAgIGlmIChsYXN0VmVyc2UgIT0gc3RhcnRWZXJzZSkge1xuICAgICAgICAgIHN1YlJlZiArPSBgLSR7bGFzdFZlcnNlfWBcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHF1b3RlTWF0Y2hlcyA9IGdldFF1b3RlTWF0Y2hlc0luQm9va1JlZih7XG4gICAgICAgICAgYm9va09iamVjdDogb3JpZ2luYWxWZXJzZXMsXG4gICAgICAgICAgcmVmOiBzdWJSZWYsXG4gICAgICAgICAgcXVvdGU6IHNlbGVjdGVkUXVvdGU/LnF1b3RlLFxuICAgICAgICAgIG9jY3VycmVuY2U6IHNlbGVjdGVkUXVvdGU/Lm9jY3VycmVuY2UsXG4gICAgICAgIH0pXG5cbiAgICAgICAgY29uc3Qgc2VsZWN0aW9ucyA9IG5ldyBNYXAoKVxuXG4gICAgICAgIGlmIChxdW90ZU1hdGNoZXM/LnNpemUpIHtcbiAgICAgICAgICBxdW90ZU1hdGNoZXMuZm9yRWFjaCgod29yZHMsIGtleSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgX2tleSA9IHN1YnN0aXR1dGVba2V5XVxuXG4gICAgICAgICAgICBzZWxlY3Rpb25zLnNldChfa2V5LCB3b3Jkcy5tYXAod29yZCA9PiAoXG4gICAgICAgICAgICAgIHsgLi4ud29yZCwgdGV4dDogY29yZS5ub3JtYWxpemVTdHJpbmcod29yZC50ZXh0KSB9XG4gICAgICAgICAgICApKSlcbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICAgIG5ld1NlbGVjdGlvbnMgPSBzZWxlY3Rpb25zXG4gICAgICAgIG5ld1NlbGVjdGVkUXVvdGUgPSBzZWxlY3RlZFF1b3RlXG4gICAgICAgIHVwZGF0ZVNlbGVjdGlvbnMgPSB0cnVlXG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgbmV3U3RhdGU6IGFueSA9IHt9XG5cbiAgICAvLyB1cGRhdGUgc3RhdGVzIHRoYXQgaGF2ZSBjaGFuZ2VkXG4gICAgaWYgKCFhcmVNYXBzVGhlU2FtZSh2ZXJzZU9iamVjdHNNYXAsIF9tYXApKSB7XG4gICAgICBuZXdTdGF0ZS52ZXJzZU9iamVjdHNNYXAgPSBfbWFwXG4gICAgfVxuXG4gICAgY29uc3QgYm9va3NOb3RTYW1lID0gcmVmZXJlbmNlPy5wcm9qZWN0SWQgIT09IGN1cnJlbnRSZWZlcmVuY2U/LnByb2plY3RJZFxuXG4gICAgaWYgKGJvb2tzTm90U2FtZSB8fCAhYXJlVmVyc2VzU2FtZSh2ZXJzZXNGb3JSZWYsIF92ZXJzZXNGb3JSZWYpKSB7XG4gICAgICBuZXdTdGF0ZS52ZXJzZXNGb3JSZWYgPSBfdmVyc2VzRm9yUmVmXG4gICAgICBuZXdTdGF0ZS5sYXN0U2VsZWN0ZWRRdW90ZSA9IG5ld1NlbGVjdGVkUXVvdGVcbiAgICAgIG5ld1N0YXRlLnNlbGVjdGlvbnMgPSBuZXdTZWxlY3Rpb25zXG4gICAgfVxuXG4gICAgaWYgKG5ld1NlbGVjdGVkUXVvdGUpIHtcbiAgICAgIG5ld1N0YXRlLmxhc3RTZWxlY3RlZFF1b3RlID0gbmV3U2VsZWN0ZWRRdW90ZVxuICAgIH1cblxuICAgIGlmICh1cGRhdGVTZWxlY3Rpb25zKSB7XG4gICAgICBpZiAoIWFyZU1hcHNUaGVTYW1lKHNlbGVjdGlvbnMgfHwgKG5ldyBNYXAoKSksIG5ld1NlbGVjdGlvbnMpKSB7XG4gICAgICAgIG5ld1N0YXRlLnNlbGVjdGlvbnMgPSBuZXdTZWxlY3Rpb25zXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKE9iamVjdC5rZXlzKG5ld1N0YXRlKS5sZW5ndGgpIHtcbiAgICAgIHNldFN0YXRlKG5ld1N0YXRlKVxuICAgIH1cbiAgfSwgW1xuICAgIG93bmVyLFxuICAgIHJlc291cmNlSWQsXG4gICAgYm9va0lkLFxuICAgIGxhbmd1YWdlSWRfLFxuICAgIHNjcmlwdHVyZUNvbmZpZz8udmVyc2VzRm9yUmVmLFxuICAgIG9yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHMsXG4gICAgc2VsZWN0ZWRRdW90ZSxcbiAgXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4geyAvLyBjbGVhciBzZXR0aW5ncyBvbiB2ZXJzZSBjaGFuZ2VcbiAgICBzZXRTdGF0ZSh7XG4gICAgICB2ZXJzZXNBbGlnbm1lbnRTdGF0dXM6IG51bGwsXG4gICAgICB1bnNhdmVkQ2hhbmdlc0xpc3Q6IHt9LFxuICAgICAgaGF2ZVVuc2F2ZWRDaGFuZ2VzOiBmYWxzZSxcbiAgICB9KVxuICB9LCBbX3JlZmVyZW5jZV0pXG5cbiAgY29uc3QgdXBkYXRlVmVyc2VzQWxpZ25tZW50U3RhdHVzID0gKHJlZmVyZW5jZSwgYWxpZ25lZCkgPT4ge1xuICAgIHNldFN0YXRlXyhwcmV2U3RhdGUgPT4gKHtcbiAgICAgIC4uLnByZXZTdGF0ZSxcbiAgICAgIHZlcnNlc0FsaWdubWVudFN0YXR1czogeyAuLi5wcmV2U3RhdGUudmVyc2VzQWxpZ25tZW50U3RhdHVzLCBbYCR7cmVmZXJlbmNlLmNoYXB0ZXJ9OiR7cmVmZXJlbmNlLnZlcnNlfWBdOiBhbGlnbmVkIH0sXG4gICAgfSkpXG4gIH1cblxuICBsZXQgX3ZlcnNlc0ZvclJlZiA9IHNjcmlwdHVyZUNvbmZpZz8udmVyc2VzRm9yUmVmXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoX3ZlcnNlc0ZvclJlZj8ubGVuZ3RoKSB7XG4gICAgICBjb25zdCB7IHJlZmVyZW5jZSwgcmVzb3VyY2VMaW5rIH0gPSBzY3JpcHR1cmVDb25maWcgfHwge31cbiAgICAgIGNvbnNvbGUubG9nKGBTY3JpcHR1cmVDYXJkLl92ZXJzZXNGb3JSZWYgY2hhbmdlZGAsIHsgcmVmZXJlbmNlLCByZXNvdXJjZUxpbmsgfSlcbiAgICB9XG4gIH0sIFtfdmVyc2VzRm9yUmVmXSlcblxuICBpZiAoIV92ZXJzZXNGb3JSZWY/Lmxlbmd0aCkgeyAvLyBpZiBlbXB0eSBvZiByZWZlcmVuY2VzLCBjcmVhdGUgc2luZ2xlIGVtcHR5IHJlZmVyZW5jZVxuICAgIF92ZXJzZXNGb3JSZWYgPSBbeyAuLi5yZWZlcmVuY2UgfV1cbiAgfVxuXG4gIGNvbnN0IHJlbmRlcmVkU2NyaXB0dXJlUGFuZXMgPSBfdmVyc2VzRm9yUmVmPy5tYXAoKF9jdXJyZW50VmVyc2VEYXRhLCBpbmRleCkgPT4ge1xuICAgIGNvbnN0IGluaXRpYWxWZXJzZU9iamVjdHMgPSBfY3VycmVudFZlcnNlRGF0YT8udmVyc2VEYXRhPy52ZXJzZU9iamVjdHMgfHwgW11cbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3QgeyBjaGFwdGVyLCB2ZXJzZSB9ID0gX2N1cnJlbnRWZXJzZURhdGEgfHwge31cbiAgICBjb25zdCBwcm9qZWN0SWQgPSBjdXJyZW50UmVmZXJlbmNlPy5wcm9qZWN0SWQgfHwgcmVmZXJlbmNlPy5wcm9qZWN0SWRcbiAgICBjb25zdCBfcmVmZXJlbmNlID0ge1xuICAgICAgLi4uX3ZlcnNlc0ZvclJlZixcbiAgICAgIGNoYXB0ZXIsXG4gICAgICBwcm9qZWN0SWQsXG4gICAgICB2ZXJzZSxcbiAgICB9XG4gICAgY29uc3QgX3NjcmlwdHVyZUFsaWdubWVudEVkaXRDb25maWcgPSB7XG4gICAgICAuLi5zY3JpcHR1cmVBbGlnbm1lbnRFZGl0Q29uZmlnLFxuICAgICAgY3VycmVudEluZGV4OiBpbmRleCxcbiAgICAgIGluaXRpYWxWZXJzZU9iamVjdHMsXG4gICAgICByZWZlcmVuY2U6IF9yZWZlcmVuY2UsXG4gICAgICBpc05ld1Rlc3RhbWVudCxcbiAgICB9XG5cbiAgICBsZXQgaXNWZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50ID0gZmFsc2VcblxuICAgIGlmICh2ZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50KSB7XG4gICAgICBpc1ZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQgPSB2ZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50LmNoYXB0ZXIgPT0gY2hhcHRlciAmJiB2ZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50LnZlcnNlID09IHZlcnNlXG4gICAgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxTY3JpcHR1cmVQYW5lXG4gICAgICAgIHsuLi5zY3JpcHR1cmVDb25maWd9XG4gICAgICAgIGNvbnRlbnRTdHlsZT17Y29udGVudFN0eWxlfVxuICAgICAgICBjdXJyZW50SW5kZXg9e2luZGV4fVxuICAgICAgICBkZXRlcm1pbmluZ0JyYW5jaD17IXJlYWR5Rm9yRmV0Y2h9XG4gICAgICAgIGRpcmVjdGlvbj17ZGlyZWN0aW9ufVxuICAgICAgICBkaXNhYmxlV29yZFBvcG92ZXI9e2Rpc2FibGVXb3JkUG9wb3Zlcl99XG4gICAgICAgIGZvbnRTaXplPXtmb250U2l6ZX1cbiAgICAgICAgZ2V0TGV4aWNvbkRhdGE9e2dldExleGljb25EYXRhfVxuICAgICAgICBpc05UPXtpc05UX31cbiAgICAgICAgaXNWZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50PXtpc1ZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnR9XG4gICAgICAgIGtleT17aW5kZXh9XG4gICAgICAgIG9uQWxpZ25tZW50RmluaXNoPXsoKSA9PiBzZXRTdGF0ZSh7IHZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQ6IG51bGwgfSl9XG4gICAgICAgIG9yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHM9e29yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHN9XG4gICAgICAgIHJlZlN0eWxlPXtyZWZTdHlsZX1cbiAgICAgICAgcmVmZXJlbmNlPXtfcmVmZXJlbmNlfVxuICAgICAgICBzYXZpbmc9e3N0YXJ0U2F2ZX1cbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICBzY3JpcHR1cmVBbGlnbm1lbnRFZGl0Q29uZmlnPXtfc2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZ31cbiAgICAgICAgc2V0V29yZEFsaWduZXJTdGF0dXM9e3NldFdvcmRBbGlnbmVyU3RhdHVzfVxuICAgICAgICBzZXJ2ZXI9e3NlcnZlcn1cbiAgICAgICAgdHJhbnNsYXRlPXt0cmFuc2xhdGV9XG4gICAgICAgIHVwZGF0ZVZlcnNlc0FsaWdubWVudFN0YXR1cz17dXBkYXRlVmVyc2VzQWxpZ25tZW50U3RhdHVzfVxuICAgICAgLz5cbiAgICApXG4gIH0pXG5cbiAgY29uc3QgaGFuZGxlQWxpZ25CdXR0b25DbGljayA9ICgpID0+IHtcbiAgICBpZiAodmVyc2VzRm9yUmVmPy5sZW5ndGggPiAxKSB7XG4gICAgICBzZXRTdGF0ZSh7IHNob3dBbGlnbm1lbnRQb3B1cDogdHJ1ZSB9KVxuICAgIH0gZWxzZSBpZiAodmVyc2VzRm9yUmVmPy5sZW5ndGggPT09IDEpIHtcbiAgICAgIHNldFN0YXRlKHsgdmVyc2VTZWxlY3RlZEZvckFsaWdubWVudDogdmVyc2VzRm9yUmVmWzBdIH0pXG4gICAgfVxuICB9XG5cbiAgY29uc3Qgb25SZW5kZXJUb29sYmFyID0gKHsgaXRlbXMgfSkgPT4ge1xuICAgIGNvbnN0IG5ld0l0ZW1zID0gWy4uLml0ZW1zXVxuXG4gICAgbGV0IGFsbFZlcnNlc0FsaWduZWQgPSBmYWxzZVxuXG4gICAgLy8gQ2hlY2sgaWYgYWxsIHZhbHVlcyBpbiB2ZXJzZXNBbGlnbm1lbnRTdGF0dXMgYXJlIHRydWVcbiAgICBpZiAodmVyc2VzQWxpZ25tZW50U3RhdHVzKSB7XG4gICAgICBhbGxWZXJzZXNBbGlnbmVkID0gT2JqZWN0LnZhbHVlcyh2ZXJzZXNBbGlnbm1lbnRTdGF0dXMpLmV2ZXJ5KGFsaWduU3RhdHVzID0+IGFsaWduU3RhdHVzID09PSB0cnVlKVxuICAgIH1cblxuICAgIGxldCBhbGlnbkljb24gPSBudWxsXG4gICAgbGV0IGFsaWduQnV0dG9uVGV4dCA9ICcnXG5cbiAgICBpZiAoYWxsVmVyc2VzQWxpZ25lZCkge1xuICAgICAgYWxpZ25JY29uID0gPFJ4TGluazIgaWQ9e2B2YWxpZF9pY29uXyR7cmVzb3VyY2VJZH1gfSBjb2xvcj0nI0JCQicgLz5cbiAgICAgIGFsaWduQnV0dG9uVGV4dCA9ICdBbGlnbm1lbnQgaXMgVmFsaWQnXG4gICAgfSBlbHNlIHtcbiAgICAgIGFsaWduSWNvbiA9IDxSeExpbmtCcmVhazIgaWQ9e2BpbnZhbGlkX2FsaWdubWVudF9pY29uXyR7cmVzb3VyY2VJZH1gfSBjb2xvcj0nIzAwMCcgLz5cbiAgICAgIGFsaWduQnV0dG9uVGV4dCA9ICdBbGlnbm1lbnQgaXMgSW52YWxpZCdcbiAgICB9XG5cbiAgICBpZiAoc2V0V29yZEFsaWduZXJTdGF0dXMgJiYgcmVzb3VyY2VJZCAhPT0gJ09SSUdJTkFMX1NPVVJDRScpIHtcbiAgICAgIG5ld0l0ZW1zLnB1c2goXG4gICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgaWQ9e2BhbGlnbm1lbnRfaWNvbl8ke3Jlc291cmNlSWR9YH1cbiAgICAgICAgICBrZXk9J2NoZWNraW5nLWJ1dHRvbidcbiAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVBbGlnbkJ1dHRvbkNsaWNrfVxuICAgICAgICAgIHRpdGxlPXthbGlnbkJ1dHRvblRleHR9XG4gICAgICAgICAgYXJpYS1sYWJlbD17YWxpZ25CdXR0b25UZXh0fVxuICAgICAgICAgIHN0eWxlPXt7IGN1cnNvcjogJ3BvaW50ZXInIH19XG4gICAgICAgID5cbiAgICAgICAgICB7YWxpZ25JY29ufVxuICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICApXG4gICAgfVxuXG4gICAgLy8gT25seSBzaG93IHRoZSB1cGRhdGUgZnJvbSBtYWluIGJ1dHRvbiBpZiBzY3JpcHR1cmUgaXMgbm90IG9yaWdpbmFsIHRleHQuXG4gICAgIXVzaW5nT3JpZ2luYWxCaWJsZSAmJiBuZXdJdGVtcy5wdXNoKFxuICAgICAgPD5cbiAgICAgICAgPFVwZGF0ZUJyYW5jaEJ1dHRvbiB7Li4udXBkYXRlQnV0dG9uUHJvcHN9IGlzTG9hZGluZz17aXNVcGRhdGVMb2FkaW5nIHx8IHN0YXJ0U2F2ZX0vPlxuICAgICAgICA8RXJyb3JEaWFsb2cgdGl0bGU9e2RpYWxvZ1RpdGxlfSBjb250ZW50PXtkaWFsb2dNZXNzYWdlfSBvcGVuPXtpc0Vycm9yRGlhbG9nT3Blbn0gb25DbG9zZT17b25DbG9zZUVycm9yRGlhbG9nfSBpc0xvYWRpbmc9eyBpc1VwZGF0ZUxvYWRpbmcgfHwgc3RhcnRTYXZlIH0gbGluaz17ZGlhbG9nTGlua30gbGlua1Rvb2x0aXA9e2RpYWxvZ0xpbmtUb29sdGlwfSAvPlxuICAgICAgPC8+XG4gICAgKVxuXG4gICAgcmV0dXJuIG5ld0l0ZW1zXG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxTZWxlY3Rpb25zQ29udGV4dFByb3ZpZGVyXG4gICAgICBzZWxlY3Rpb25zPXtzZWxlY3Rpb25zfVxuICAgICAgb25TZWxlY3Rpb25zPXtuZXdTZWxlY3Rpb25zID0+IHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coJ29uU2VsZWN0aW9ucycsIG5ld1NlbGVjdGlvbnMpXG4gICAgICB9fVxuICAgICAgcXVvdGU9e3NlbGVjdGVkUXVvdGU/LnF1b3RlfVxuICAgICAgb2NjdXJyZW5jZT17Zml4T2NjdXJyZW5jZShzZWxlY3RlZFF1b3RlPy5vY2N1cnJlbmNlKX1cbiAgICAgIHZlcnNlT2JqZWN0c01hcD17dmVyc2VPYmplY3RzTWFwfVxuICAgID5cbiAgICAgIDxDYXJkXG4gICAgICAgIGlkPXtgc2NyaXB0dXJlX2NhcmRfJHtjYXJkTnVtfWB9XG4gICAgICAgIHRpdGxlPXtzY3JpcHR1cmVMYWJlbH1cbiAgICAgICAgc2V0dGluZ3NUaXRsZT17c2NyaXB0dXJlVGl0bGUgKyAnIFNldHRpbmdzJ31cbiAgICAgICAgaXRlbXM9e2l0ZW1zfVxuICAgICAgICBjbGFzc2VzPXtjbGFzc2VzfVxuICAgICAgICBoZWFkZXJzPXtoZWFkZXJzfVxuICAgICAgICBmaWx0ZXJzPXtmaWx0ZXJzfVxuICAgICAgICBmb250U2l6ZT17Zm9udFNpemV9XG4gICAgICAgIGl0ZW1JbmRleD17aXRlbUluZGV4fVxuICAgICAgICBzZXRGaWx0ZXJzPXtzZXRGaWx0ZXJzfVxuICAgICAgICBzZXRGb250U2l6ZT17c2V0Rm9udFNpemV9XG4gICAgICAgIHNldEl0ZW1JbmRleD17c2V0SXRlbUluZGV4fVxuICAgICAgICBtYXJrZG93blZpZXc9e21hcmtkb3duVmlld31cbiAgICAgICAgc2V0TWFya2Rvd25WaWV3PXtzZXRNYXJrZG93blZpZXd9XG4gICAgICAgIGdldEN1c3RvbUNvbXBvbmVudD17Z2V0U2NyaXB0dXJlU2VsZWN0b3J9XG4gICAgICAgIGhpZGVNYXJrZG93blRvZ2dsZVxuICAgICAgICBvbk1lbnVDbG9zZT17b25NZW51Q2xvc2V9XG4gICAgICAgIG9uTWluaW1pemU9e29uTWluaW1pemUgPyAoKSA9PiBvbk1pbmltaXplKGlkLCBzY3JpcHR1cmVUaXRsZSkgOiBudWxsfVxuICAgICAgICBlZGl0YWJsZT17ZW5hYmxlRWRpdCB8fCBlbmFibGVBbGlnbm1lbnR9XG4gICAgICAgIHNhdmVkPXtzdGFydFNhdmUgfHwgIWhhdmVVbnNhdmVkQ2hhbmdlc31cbiAgICAgICAgb25TYXZlRWRpdD17KCkgPT4gc2V0U3RhdGUoeyBzYXZlQ2xpY2tlZDogdHJ1ZSB9KX1cbiAgICAgICAgb25SZW5kZXJUb29sYmFyPXtvblJlbmRlclRvb2xiYXJ9XG4gICAgICA+XG4gICAgICAgIDxkaXYgaWQ9XCJzY3JpcHR1cmUtcGFuZS1saXN0XCI+XG4gICAgICAgICAge3JlbmRlcmVkU2NyaXB0dXJlUGFuZXN9XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9DYXJkPlxuICAgICAgPFZlcnNlU2VsZWN0b3JQb3B1cFxuICAgICAgICByZXNvdXJjZUlkPXtyZXNvdXJjZUlkfVxuICAgICAgICBvcGVuPXtzaG93QWxpZ25tZW50UG9wdXB9XG4gICAgICAgIG9uQ2xvc2U9eygpID0+IHNldFN0YXRlKHsgc2hvd0FsaWdubWVudFBvcHVwOiBmYWxzZSB9KX1cbiAgICAgICAgdmVyc2VzRm9yUmVmPXt2ZXJzZXNGb3JSZWZ9XG4gICAgICAgIHZlcnNlc0FsaWdubWVudFN0YXR1cz17dmVyc2VzQWxpZ25tZW50U3RhdHVzfVxuICAgICAgICBvblZlcnNlU2VsZWN0PXsodmVyc2UpID0+IHNldFN0YXRlKHtcbiAgICAgICAgICB2ZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50OiB2ZXJzZSxcbiAgICAgICAgICBzaG93QWxpZ25tZW50UG9wdXA6IGZhbHNlLFxuICAgICAgICB9KX1cbiAgICAgIC8+XG4gICAgPC9TZWxlY3Rpb25zQ29udGV4dFByb3ZpZGVyPlxuICApXG59XG5cblNjcmlwdHVyZUNhcmQucHJvcFR5cGVzID0ge1xuICAvKiogcmVwbyBicmFuY2ggb3IgdGFnIHN1Y2ggYXMgbWFzdGVyICovXG4gIGFwcFJlZjogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAvKiogYXV0aGVudGljYXRpb24gaW5mbyAqL1xuICBhdXRoZW50aWNhdGlvbjogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqIGluZGV4IGZvciBjdXJyZW50IGJvb2sgKGUuZy4gJzAxJyBmb3IgJ2dlbicpKi9cbiAgYm9va0luZGV4OiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKiogc2NyaXB0dXJlIGNhcmQgbnVtYmVyICgwIHRvIDIgZm9yIGV4YW1wbGUpICovXG4gIGNhcmROdW06IFByb3BUeXBlcy5udW1iZXIuaXNSZXF1aXJlZCxcbiAgLyoqIENTUyBjbGFzc2VzICovXG4gIGNsYXNzZXM6IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKiBpZiB0cnVlIHRoZW4gd29yZCBkYXRhIGhvdmVyIGlzIHNob3duICovXG4gIGRpc2FibGVXb3JkUG9wb3ZlcjogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKiBnZXQgbGFuZ3VhZ2UgZGV0YWlscyAqL1xuICBnZXRMYW5ndWFnZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgLyoqIGZ1bmN0aW9uIHRvIGdldCBsYXRlc3QgbGV4aWNvbiBkYXRhICovXG4gIGdldExleGljb25EYXRhOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIG9wdGlvbmFsIHVybCBmb3IgZ3JlZWsgcmVwbyAqL1xuICBncmVla1JlcG9Vcmw6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKiBvcHRpb25hbCB1cmwgZm9yIGhlYnJldyByZXBvICovXG4gIGhlYnJld1JlcG9Vcmw6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKiBvcHRpb25hbCBodHRwIHRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzIGZvciBmZXRjaGluZyByZXNvdXJjZXMsIGRlZmF1bHQgaXMgMCAodmVyeSBsb25nIHdhaXQpICovXG4gIGh0dHBDb25maWc6IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKiBodG1sIGlkZW50aWZpZXIgdG8gdXNlIGZvciBjYXJkICovXG4gIGlkOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKiogbWV0aG9kIHRvIGRldGVybWluZSBpZiBOVCBvciBPVCAqL1xuICBpc05UOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAvKiogdXNlci1uYW1lICovXG4gIGxvZ2dlZEluVXNlcjogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqIGZ1bmN0aW9uIHRvIG1pbmltaXplIHRoZSBjYXJkIChvcHRpb25hbCkgKi9cbiAgb25NaW5pbWl6ZTogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKiBvcHRpb25hbCBjYWxsYmFjayBpZiBlcnJvciBsb2FkaW5nIHJlc291cmNlLCBwYXJhbWV0ZXIgcmV0dXJuZWQgYXJlOlxuICAgKiAgICAoe3N0cmluZ30gZXJyb3JNZXNzYWdlLCB7Ym9vbGVhbn0gaXNBY2Nlc3NFcnJvciwge29iamVjdH0gcmVzb3VyY2VTdGF0dXMpXG4gICAqICAgICAgLSBpc0FjY2Vzc0Vycm9yIC0gaXMgdHJ1ZSBpZiB0aGlzIHdhcyBhbiBlcnJvciB0cnlpbmcgdG8gYWNjZXNzIGZpbGVcbiAgICogICAgICAtIHJlc291cmNlU3RhdHVzIC0gaXMgb2JqZWN0IGNvbnRhaW5pbmcgZGV0YWlscyBhYm91dCBwcm9ibGVtcyBmZXRjaGluZyByZXNvdXJjZSAqL1xuICBvblJlc291cmNlRXJyb3I6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogdGhlIG9yaWdpbmFsIHNjcmlwdHVyZSBib29rT2JqZWN0cyBmb3IgY3VycmVudCBib29rICovXG4gIG9yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHM6IFByb3BUeXBlcy5vYmplY3QsXG4gIHJlZmVyZW5jZTogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAvKiogcHJvamVjdElkIChib29rSUQpIHRvIHVzZSAqL1xuICAgIHByb2plY3RJZDogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgIC8qKiBjdXJyZW50IGNoYXB0ZXIgbnVtYmVyICovXG4gICAgY2hhcHRlcjogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLm51bWJlciwgUHJvcFR5cGVzLnN0cmluZ10pLmlzUmVxdWlyZWQsXG4gICAgLyoqIGN1cnJlbnQgdmVyc2UgbnVtYmVyICovXG4gICAgdmVyc2U6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5udW1iZXIsIFByb3BUeXBlcy5zdHJpbmddKS5pc1JlcXVpcmVkLFxuICB9KSxcbiAgLyoqIHJlc291cmNlIG9iamVjdCAqL1xuICByZXNvdXJjZTogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAvKiogcmVzb3VyY2UgbGFuZ3VhZ2UgdG8gdXNlICovXG4gICAgbGFuZ3VhZ2VJZDogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgIC8qKiByZXBvIG93bmVyIHN1Y2ggYXMgdW5mb2xkaW5nV29yZCAqL1xuICAgIG93bmVyOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gICAgLyoqIHJlc291cmNlSWQgdG8gdXNlIChlLmcuIHVnbnQpICovXG4gICAgcmVzb3VyY2VJZDogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgIC8qKiByZXBvIG93bmVyIGZvciBvcmlnaW5hbCBsYW5ndWFnZXMgc3VjaCBhcyB1bmZvbGRpbmdXb3JkICovXG4gICAgb3JpZ2luYWxMYW5ndWFnZU93bmVyOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIH0pLFxuICAvKiogcmVzb3VyY2VMaW5rICovXG4gIHJlc291cmNlTGluazogUHJvcFR5cGVzLmFueSxcbiAgLyoqVGhpcyBpcyBjdXJyZW50bHkgc2VsZWN0ZWQgcXVvdGUgKi9cbiAgc2VsZWN0ZWRRdW90ZTogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqIHNlcnZlciAoZS5nLiAnaHR0cHM6Ly9naXQuZG9vcjQzLm9yZycpICovXG4gIHNlcnZlcjogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAvKiogY2FsbGJhY2sgdG8gdXBkYXRlIGxvYWRpbmcgc3RhdGUgKi9cbiAgc2V0QXJlUmVzb3VyY2VzTG9hZGluZzogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKiBjYWxsYmFjayB0byB1cGRhdGUgc2F2aW5nIHN0YXRlKi9cbiAgc2V0QXJlUmVzb3VyY2VzU2F2aW5nOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIGNhbGxiYWNrIHRvIHJlcG9ydCBjYXJkIG1lcmdlIHN0YXR1cyAqL1xuICBzZXRDYXJkc0xvYWRpbmdNZXJnZTogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKiBjYWxsYmFjayB0byByZXBvcnQgY2FyZCB1cGRhdGUgc3RhdHVzICovXG4gIHNldENhcmRzTG9hZGluZ1VwZGF0ZTogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKiBjYWxsYmFjayB0byByZXBvcnQgY2FyZCBzYXZpbmcgc3RhdHVzICovXG4gIHNldENhcmRzU2F2aW5nOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIGZ1bmN0aW9uIHRvIHNldCBzdGF0ZSBpbiBhcHAgdGhhdCB0aGVyZSBhcmUgdW5zYXZlZCBjaGFuZ2VzICovXG4gIHNldFNhdmVkQ2hhbmdlczogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKiBjYWxsYmFjayB0byB1cGRhdGUgd29yZCBhbGlnbmVyIHN0YXRlICovXG4gIHNldFdvcmRBbGlnbmVyU3RhdHVzOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIHRpdGxlIGZvciBzY3JpcHR1cmUgY2FyZCAqL1xuICB0aXRsZTogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAvKiogb3B0aW9uYWwgZnVuY3Rpb24gZm9yIGxvY2FsaXphdGlvbiAqL1xuICB0cmFuc2xhdGU6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogY2FsbGJhY2sgdG8gdXBkYXRlIHRoZSBjYXJkJ3MgbWVyZ2Ugc3RhdGUgaW4gYXBwICovXG4gIHVwZGF0ZU1lcmdlU3RhdGU6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogdXNlIG1ldGhvZCBmb3IgdXNpbmcgbG9jYWwgc3RvcmFnZSBzcGVjaWZpYyBmb3IgdXNlciAqL1xuICB1c2VVc2VyTG9jYWxTdG9yYWdlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxufVxuIl0sIm1hcHBpbmdzIjoiOytDQUNBLHFKQUFBQSxtQkFBQSxZQUFBQSxvQkFBQSxXQUFBQyxDQUFBLFNBQUFDLENBQUEsRUFBQUQsQ0FBQSxPQUFBRSxDQUFBLEdBQUFDLE1BQUEsQ0FBQUMsU0FBQSxFQUFBQyxDQUFBLEdBQUFILENBQUEsQ0FBQUksY0FBQSxFQUFBQyxDQUFBLEdBQUFKLE1BQUEsQ0FBQUssY0FBQSxjQUFBUCxDQUFBLEVBQUFELENBQUEsRUFBQUUsQ0FBQSxJQUFBRCxDQUFBLENBQUFELENBQUEsSUFBQUUsQ0FBQSxDQUFBTyxLQUFBLEtBQUFDLENBQUEsd0JBQUFDLE1BQUEsR0FBQUEsTUFBQSxPQUFBQyxDQUFBLEdBQUFGLENBQUEsQ0FBQUcsUUFBQSxrQkFBQUMsQ0FBQSxHQUFBSixDQUFBLENBQUFLLGFBQUEsdUJBQUFDLENBQUEsR0FBQU4sQ0FBQSxDQUFBTyxXQUFBLDhCQUFBQyxPQUFBakIsQ0FBQSxFQUFBRCxDQUFBLEVBQUFFLENBQUEsV0FBQUMsTUFBQSxDQUFBSyxjQUFBLENBQUFQLENBQUEsRUFBQUQsQ0FBQSxJQUFBUyxLQUFBLEVBQUFQLENBQUEsRUFBQWlCLFVBQUEsTUFBQUMsWUFBQSxNQUFBQyxRQUFBLFNBQUFwQixDQUFBLENBQUFELENBQUEsV0FBQWtCLE1BQUEsbUJBQUFqQixDQUFBLElBQUFpQixNQUFBLFlBQUFBLE9BQUFqQixDQUFBLEVBQUFELENBQUEsRUFBQUUsQ0FBQSxXQUFBRCxDQUFBLENBQUFELENBQUEsSUFBQUUsQ0FBQSxnQkFBQW9CLEtBQUFyQixDQUFBLEVBQUFELENBQUEsRUFBQUUsQ0FBQSxFQUFBRyxDQUFBLFFBQUFLLENBQUEsR0FBQVYsQ0FBQSxJQUFBQSxDQUFBLENBQUFJLFNBQUEsWUFBQW1CLFNBQUEsR0FBQXZCLENBQUEsR0FBQXVCLFNBQUEsRUFBQVgsQ0FBQSxHQUFBVCxNQUFBLENBQUFxQixNQUFBLENBQUFkLENBQUEsQ0FBQU4sU0FBQSxHQUFBVSxDQUFBLE9BQUFXLE9BQUEsQ0FBQXBCLENBQUEsZ0JBQUFFLENBQUEsQ0FBQUssQ0FBQSxlQUFBSCxLQUFBLEVBQUFpQixnQkFBQSxDQUFBekIsQ0FBQSxFQUFBQyxDQUFBLEVBQUFZLENBQUEsTUFBQUYsQ0FBQSxhQUFBZSxTQUFBMUIsQ0FBQSxFQUFBRCxDQUFBLEVBQUFFLENBQUEsbUJBQUEwQixJQUFBLFlBQUFDLEdBQUEsRUFBQTVCLENBQUEsQ0FBQTZCLElBQUEsQ0FBQTlCLENBQUEsRUFBQUUsQ0FBQSxjQUFBRCxDQUFBLGFBQUEyQixJQUFBLFdBQUFDLEdBQUEsRUFBQTVCLENBQUEsUUFBQUQsQ0FBQSxDQUFBc0IsSUFBQSxHQUFBQSxJQUFBLE1BQUFTLENBQUEscUJBQUFDLENBQUEscUJBQUFDLENBQUEsZ0JBQUFDLENBQUEsZ0JBQUFDLENBQUEsZ0JBQUFaLFVBQUEsY0FBQWEsa0JBQUEsY0FBQUMsMkJBQUEsU0FBQUMsQ0FBQSxPQUFBcEIsTUFBQSxDQUFBb0IsQ0FBQSxFQUFBMUIsQ0FBQSxxQ0FBQTJCLENBQUEsR0FBQXBDLE1BQUEsQ0FBQXFDLGNBQUEsRUFBQUMsQ0FBQSxHQUFBRixDQUFBLElBQUFBLENBQUEsQ0FBQUEsQ0FBQSxDQUFBRyxNQUFBLFFBQUFELENBQUEsSUFBQUEsQ0FBQSxLQUFBdkMsQ0FBQSxJQUFBRyxDQUFBLENBQUF5QixJQUFBLENBQUFXLENBQUEsRUFBQTdCLENBQUEsTUFBQTBCLENBQUEsR0FBQUcsQ0FBQSxPQUFBRSxDQUFBLEdBQUFOLDBCQUFBLENBQUFqQyxTQUFBLEdBQUFtQixTQUFBLENBQUFuQixTQUFBLEdBQUFELE1BQUEsQ0FBQXFCLE1BQUEsQ0FBQWMsQ0FBQSxZQUFBTSxzQkFBQTNDLENBQUEsZ0NBQUE0QyxPQUFBLFdBQUE3QyxDQUFBLElBQUFrQixNQUFBLENBQUFqQixDQUFBLEVBQUFELENBQUEsWUFBQUMsQ0FBQSxnQkFBQTZDLE9BQUEsQ0FBQTlDLENBQUEsRUFBQUMsQ0FBQSxzQkFBQThDLGNBQUE5QyxDQUFBLEVBQUFELENBQUEsYUFBQWdELE9BQUE5QyxDQUFBLEVBQUFLLENBQUEsRUFBQUcsQ0FBQSxFQUFBRSxDQUFBLFFBQUFFLENBQUEsR0FBQWEsUUFBQSxDQUFBMUIsQ0FBQSxDQUFBQyxDQUFBLEdBQUFELENBQUEsRUFBQU0sQ0FBQSxtQkFBQU8sQ0FBQSxDQUFBYyxJQUFBLFFBQUFaLENBQUEsR0FBQUYsQ0FBQSxDQUFBZSxHQUFBLEVBQUFFLENBQUEsR0FBQWYsQ0FBQSxDQUFBUCxLQUFBLFNBQUFzQixDQUFBLGdCQUFBa0IsT0FBQSxDQUFBbEIsQ0FBQSxLQUFBMUIsQ0FBQSxDQUFBeUIsSUFBQSxDQUFBQyxDQUFBLGVBQUEvQixDQUFBLENBQUFrRCxPQUFBLENBQUFuQixDQUFBLENBQUFvQixPQUFBLEVBQUFDLElBQUEsV0FBQW5ELENBQUEsSUFBQStDLE1BQUEsU0FBQS9DLENBQUEsRUFBQVMsQ0FBQSxFQUFBRSxDQUFBLGdCQUFBWCxDQUFBLElBQUErQyxNQUFBLFVBQUEvQyxDQUFBLEVBQUFTLENBQUEsRUFBQUUsQ0FBQSxRQUFBWixDQUFBLENBQUFrRCxPQUFBLENBQUFuQixDQUFBLEVBQUFxQixJQUFBLFdBQUFuRCxDQUFBLElBQUFlLENBQUEsQ0FBQVAsS0FBQSxHQUFBUixDQUFBLEVBQUFTLENBQUEsQ0FBQU0sQ0FBQSxnQkFBQWYsQ0FBQSxXQUFBK0MsTUFBQSxVQUFBL0MsQ0FBQSxFQUFBUyxDQUFBLEVBQUFFLENBQUEsU0FBQUEsQ0FBQSxDQUFBRSxDQUFBLENBQUFlLEdBQUEsU0FBQTNCLENBQUEsRUFBQUssQ0FBQSxvQkFBQUUsS0FBQSxXQUFBQSxNQUFBUixDQUFBLEVBQUFJLENBQUEsYUFBQWdELDJCQUFBLGVBQUFyRCxDQUFBLFdBQUFBLENBQUEsRUFBQUUsQ0FBQSxJQUFBOEMsTUFBQSxDQUFBL0MsQ0FBQSxFQUFBSSxDQUFBLEVBQUFMLENBQUEsRUFBQUUsQ0FBQSxnQkFBQUEsQ0FBQSxHQUFBQSxDQUFBLEdBQUFBLENBQUEsQ0FBQWtELElBQUEsQ0FBQUMsMEJBQUEsRUFBQUEsMEJBQUEsSUFBQUEsMEJBQUEscUJBQUEzQixpQkFBQTFCLENBQUEsRUFBQUUsQ0FBQSxFQUFBRyxDQUFBLFFBQUFFLENBQUEsR0FBQXdCLENBQUEsbUJBQUFyQixDQUFBLEVBQUFFLENBQUEsUUFBQUwsQ0FBQSxLQUFBMEIsQ0FBQSxZQUFBcUIsS0FBQSxzQ0FBQS9DLENBQUEsS0FBQTJCLENBQUEsb0JBQUF4QixDQUFBLFFBQUFFLENBQUEsV0FBQUgsS0FBQSxFQUFBUixDQUFBLEVBQUFzRCxJQUFBLGVBQUFsRCxDQUFBLENBQUFtRCxNQUFBLEdBQUE5QyxDQUFBLEVBQUFMLENBQUEsQ0FBQXdCLEdBQUEsR0FBQWpCLENBQUEsVUFBQUUsQ0FBQSxHQUFBVCxDQUFBLENBQUFvRCxRQUFBLE1BQUEzQyxDQUFBLFFBQUFFLENBQUEsR0FBQTBDLG1CQUFBLENBQUE1QyxDQUFBLEVBQUFULENBQUEsT0FBQVcsQ0FBQSxRQUFBQSxDQUFBLEtBQUFtQixDQUFBLG1CQUFBbkIsQ0FBQSxxQkFBQVgsQ0FBQSxDQUFBbUQsTUFBQSxFQUFBbkQsQ0FBQSxDQUFBc0QsSUFBQSxHQUFBdEQsQ0FBQSxDQUFBdUQsS0FBQSxHQUFBdkQsQ0FBQSxDQUFBd0IsR0FBQSxzQkFBQXhCLENBQUEsQ0FBQW1ELE1BQUEsUUFBQWpELENBQUEsS0FBQXdCLENBQUEsUUFBQXhCLENBQUEsR0FBQTJCLENBQUEsRUFBQTdCLENBQUEsQ0FBQXdCLEdBQUEsRUFBQXhCLENBQUEsQ0FBQXdELGlCQUFBLENBQUF4RCxDQUFBLENBQUF3QixHQUFBLHVCQUFBeEIsQ0FBQSxDQUFBbUQsTUFBQSxJQUFBbkQsQ0FBQSxDQUFBeUQsTUFBQSxXQUFBekQsQ0FBQSxDQUFBd0IsR0FBQSxHQUFBdEIsQ0FBQSxHQUFBMEIsQ0FBQSxNQUFBSyxDQUFBLEdBQUFYLFFBQUEsQ0FBQTNCLENBQUEsRUFBQUUsQ0FBQSxFQUFBRyxDQUFBLG9CQUFBaUMsQ0FBQSxDQUFBVixJQUFBLFFBQUFyQixDQUFBLEdBQUFGLENBQUEsQ0FBQWtELElBQUEsR0FBQXJCLENBQUEsR0FBQUYsQ0FBQSxFQUFBTSxDQUFBLENBQUFULEdBQUEsS0FBQU0sQ0FBQSxxQkFBQTFCLEtBQUEsRUFBQTZCLENBQUEsQ0FBQVQsR0FBQSxFQUFBMEIsSUFBQSxFQUFBbEQsQ0FBQSxDQUFBa0QsSUFBQSxrQkFBQWpCLENBQUEsQ0FBQVYsSUFBQSxLQUFBckIsQ0FBQSxHQUFBMkIsQ0FBQSxFQUFBN0IsQ0FBQSxDQUFBbUQsTUFBQSxZQUFBbkQsQ0FBQSxDQUFBd0IsR0FBQSxHQUFBUyxDQUFBLENBQUFULEdBQUEsbUJBQUE2QixvQkFBQTFELENBQUEsRUFBQUUsQ0FBQSxRQUFBRyxDQUFBLEdBQUFILENBQUEsQ0FBQXNELE1BQUEsRUFBQWpELENBQUEsR0FBQVAsQ0FBQSxDQUFBYSxRQUFBLENBQUFSLENBQUEsT0FBQUUsQ0FBQSxLQUFBTixDQUFBLFNBQUFDLENBQUEsQ0FBQXVELFFBQUEscUJBQUFwRCxDQUFBLElBQUFMLENBQUEsQ0FBQWEsUUFBQSxlQUFBWCxDQUFBLENBQUFzRCxNQUFBLGFBQUF0RCxDQUFBLENBQUEyQixHQUFBLEdBQUE1QixDQUFBLEVBQUF5RCxtQkFBQSxDQUFBMUQsQ0FBQSxFQUFBRSxDQUFBLGVBQUFBLENBQUEsQ0FBQXNELE1BQUEsa0JBQUFuRCxDQUFBLEtBQUFILENBQUEsQ0FBQXNELE1BQUEsWUFBQXRELENBQUEsQ0FBQTJCLEdBQUEsT0FBQWtDLFNBQUEsdUNBQUExRCxDQUFBLGlCQUFBOEIsQ0FBQSxNQUFBekIsQ0FBQSxHQUFBaUIsUUFBQSxDQUFBcEIsQ0FBQSxFQUFBUCxDQUFBLENBQUFhLFFBQUEsRUFBQVgsQ0FBQSxDQUFBMkIsR0FBQSxtQkFBQW5CLENBQUEsQ0FBQWtCLElBQUEsU0FBQTFCLENBQUEsQ0FBQXNELE1BQUEsWUFBQXRELENBQUEsQ0FBQTJCLEdBQUEsR0FBQW5CLENBQUEsQ0FBQW1CLEdBQUEsRUFBQTNCLENBQUEsQ0FBQXVELFFBQUEsU0FBQXRCLENBQUEsTUFBQXZCLENBQUEsR0FBQUYsQ0FBQSxDQUFBbUIsR0FBQSxTQUFBakIsQ0FBQSxHQUFBQSxDQUFBLENBQUEyQyxJQUFBLElBQUFyRCxDQUFBLENBQUFGLENBQUEsQ0FBQWdFLFVBQUEsSUFBQXBELENBQUEsQ0FBQUgsS0FBQSxFQUFBUCxDQUFBLENBQUErRCxJQUFBLEdBQUFqRSxDQUFBLENBQUFrRSxPQUFBLGVBQUFoRSxDQUFBLENBQUFzRCxNQUFBLEtBQUF0RCxDQUFBLENBQUFzRCxNQUFBLFdBQUF0RCxDQUFBLENBQUEyQixHQUFBLEdBQUE1QixDQUFBLEdBQUFDLENBQUEsQ0FBQXVELFFBQUEsU0FBQXRCLENBQUEsSUFBQXZCLENBQUEsSUFBQVYsQ0FBQSxDQUFBc0QsTUFBQSxZQUFBdEQsQ0FBQSxDQUFBMkIsR0FBQSxPQUFBa0MsU0FBQSxzQ0FBQTdELENBQUEsQ0FBQXVELFFBQUEsU0FBQXRCLENBQUEsY0FBQWdDLGFBQUFsRSxDQUFBLFFBQUFELENBQUEsS0FBQW9FLE1BQUEsRUFBQW5FLENBQUEsWUFBQUEsQ0FBQSxLQUFBRCxDQUFBLENBQUFxRSxRQUFBLEdBQUFwRSxDQUFBLFdBQUFBLENBQUEsS0FBQUQsQ0FBQSxDQUFBc0UsVUFBQSxHQUFBckUsQ0FBQSxLQUFBRCxDQUFBLENBQUF1RSxRQUFBLEdBQUF0RSxDQUFBLFdBQUF1RSxVQUFBLENBQUFDLElBQUEsQ0FBQXpFLENBQUEsY0FBQTBFLGNBQUF6RSxDQUFBLFFBQUFELENBQUEsR0FBQUMsQ0FBQSxDQUFBMEUsVUFBQSxRQUFBM0UsQ0FBQSxDQUFBNEIsSUFBQSxvQkFBQTVCLENBQUEsQ0FBQTZCLEdBQUEsRUFBQTVCLENBQUEsQ0FBQTBFLFVBQUEsR0FBQTNFLENBQUEsYUFBQXlCLFFBQUF4QixDQUFBLFNBQUF1RSxVQUFBLE1BQUFKLE1BQUEsYUFBQW5FLENBQUEsQ0FBQTRDLE9BQUEsQ0FBQXNCLFlBQUEsY0FBQVMsS0FBQSxpQkFBQWxDLE9BQUExQyxDQUFBLFFBQUFBLENBQUEsV0FBQUEsQ0FBQSxRQUFBRSxDQUFBLEdBQUFGLENBQUEsQ0FBQVksQ0FBQSxPQUFBVixDQUFBLFNBQUFBLENBQUEsQ0FBQTRCLElBQUEsQ0FBQTlCLENBQUEsNEJBQUFBLENBQUEsQ0FBQWlFLElBQUEsU0FBQWpFLENBQUEsT0FBQTZFLEtBQUEsQ0FBQTdFLENBQUEsQ0FBQThFLE1BQUEsU0FBQXZFLENBQUEsT0FBQUcsQ0FBQSxZQUFBdUQsS0FBQSxhQUFBMUQsQ0FBQSxHQUFBUCxDQUFBLENBQUE4RSxNQUFBLE9BQUF6RSxDQUFBLENBQUF5QixJQUFBLENBQUE5QixDQUFBLEVBQUFPLENBQUEsVUFBQTBELElBQUEsQ0FBQXhELEtBQUEsR0FBQVQsQ0FBQSxDQUFBTyxDQUFBLEdBQUEwRCxJQUFBLENBQUFWLElBQUEsT0FBQVUsSUFBQSxTQUFBQSxJQUFBLENBQUF4RCxLQUFBLEdBQUFSLENBQUEsRUFBQWdFLElBQUEsQ0FBQVYsSUFBQSxPQUFBVSxJQUFBLFlBQUF2RCxDQUFBLENBQUF1RCxJQUFBLEdBQUF2RCxDQUFBLGdCQUFBcUQsU0FBQSxDQUFBZCxPQUFBLENBQUFqRCxDQUFBLGtDQUFBb0MsaUJBQUEsQ0FBQWhDLFNBQUEsR0FBQWlDLDBCQUFBLEVBQUE5QixDQUFBLENBQUFvQyxDQUFBLG1CQUFBbEMsS0FBQSxFQUFBNEIsMEJBQUEsRUFBQWpCLFlBQUEsU0FBQWIsQ0FBQSxDQUFBOEIsMEJBQUEsbUJBQUE1QixLQUFBLEVBQUEyQixpQkFBQSxFQUFBaEIsWUFBQSxTQUFBZ0IsaUJBQUEsQ0FBQTJDLFdBQUEsR0FBQTdELE1BQUEsQ0FBQW1CLDBCQUFBLEVBQUFyQixDQUFBLHdCQUFBaEIsQ0FBQSxDQUFBZ0YsbUJBQUEsYUFBQS9FLENBQUEsUUFBQUQsQ0FBQSx3QkFBQUMsQ0FBQSxJQUFBQSxDQUFBLENBQUFnRixXQUFBLFdBQUFqRixDQUFBLEtBQUFBLENBQUEsS0FBQW9DLGlCQUFBLDZCQUFBcEMsQ0FBQSxDQUFBK0UsV0FBQSxJQUFBL0UsQ0FBQSxDQUFBa0YsSUFBQSxPQUFBbEYsQ0FBQSxDQUFBbUYsSUFBQSxhQUFBbEYsQ0FBQSxXQUFBRSxNQUFBLENBQUFpRixjQUFBLEdBQUFqRixNQUFBLENBQUFpRixjQUFBLENBQUFuRixDQUFBLEVBQUFvQywwQkFBQSxLQUFBcEMsQ0FBQSxDQUFBb0YsU0FBQSxHQUFBaEQsMEJBQUEsRUFBQW5CLE1BQUEsQ0FBQWpCLENBQUEsRUFBQWUsQ0FBQSx5QkFBQWYsQ0FBQSxDQUFBRyxTQUFBLEdBQUFELE1BQUEsQ0FBQXFCLE1BQUEsQ0FBQW1CLENBQUEsR0FBQTFDLENBQUEsS0FBQUQsQ0FBQSxDQUFBc0YsS0FBQSxhQUFBckYsQ0FBQSxhQUFBa0QsT0FBQSxFQUFBbEQsQ0FBQSxPQUFBMkMscUJBQUEsQ0FBQUcsYUFBQSxDQUFBM0MsU0FBQSxHQUFBYyxNQUFBLENBQUE2QixhQUFBLENBQUEzQyxTQUFBLEVBQUFVLENBQUEsaUNBQUFkLENBQUEsQ0FBQStDLGFBQUEsR0FBQUEsYUFBQSxFQUFBL0MsQ0FBQSxDQUFBdUYsS0FBQSxhQUFBdEYsQ0FBQSxFQUFBQyxDQUFBLEVBQUFHLENBQUEsRUFBQUUsQ0FBQSxFQUFBRyxDQUFBLGVBQUFBLENBQUEsS0FBQUEsQ0FBQSxHQUFBOEUsT0FBQSxPQUFBNUUsQ0FBQSxPQUFBbUMsYUFBQSxDQUFBekIsSUFBQSxDQUFBckIsQ0FBQSxFQUFBQyxDQUFBLEVBQUFHLENBQUEsRUFBQUUsQ0FBQSxHQUFBRyxDQUFBLFVBQUFWLENBQUEsQ0FBQWdGLG1CQUFBLENBQUE5RSxDQUFBLElBQUFVLENBQUEsR0FBQUEsQ0FBQSxDQUFBcUQsSUFBQSxHQUFBYixJQUFBLFdBQUFuRCxDQUFBLFdBQUFBLENBQUEsQ0FBQXNELElBQUEsR0FBQXRELENBQUEsQ0FBQVEsS0FBQSxHQUFBRyxDQUFBLENBQUFxRCxJQUFBLFdBQUFyQixxQkFBQSxDQUFBRCxDQUFBLEdBQUF6QixNQUFBLENBQUF5QixDQUFBLEVBQUEzQixDQUFBLGdCQUFBRSxNQUFBLENBQUF5QixDQUFBLEVBQUEvQixDQUFBLGlDQUFBTSxNQUFBLENBQUF5QixDQUFBLDZEQUFBM0MsQ0FBQSxDQUFBeUYsSUFBQSxhQUFBeEYsQ0FBQSxRQUFBRCxDQUFBLEdBQUFHLE1BQUEsQ0FBQUYsQ0FBQSxHQUFBQyxDQUFBLGdCQUFBRyxDQUFBLElBQUFMLENBQUEsRUFBQUUsQ0FBQSxDQUFBdUUsSUFBQSxDQUFBcEUsQ0FBQSxVQUFBSCxDQUFBLENBQUF3RixPQUFBLGFBQUF6QixLQUFBLFdBQUEvRCxDQUFBLENBQUE0RSxNQUFBLFNBQUE3RSxDQUFBLEdBQUFDLENBQUEsQ0FBQXlGLEdBQUEsUUFBQTFGLENBQUEsSUFBQUQsQ0FBQSxTQUFBaUUsSUFBQSxDQUFBeEQsS0FBQSxHQUFBUixDQUFBLEVBQUFnRSxJQUFBLENBQUFWLElBQUEsT0FBQVUsSUFBQSxXQUFBQSxJQUFBLENBQUFWLElBQUEsT0FBQVUsSUFBQSxRQUFBakUsQ0FBQSxDQUFBMEMsTUFBQSxHQUFBQSxNQUFBLEVBQUFqQixPQUFBLENBQUFyQixTQUFBLEtBQUE2RSxXQUFBLEVBQUF4RCxPQUFBLEVBQUFtRCxLQUFBLFdBQUFBLE1BQUE1RSxDQUFBLGFBQUE0RixJQUFBLFdBQUEzQixJQUFBLFdBQUFOLElBQUEsUUFBQUMsS0FBQSxHQUFBM0QsQ0FBQSxPQUFBc0QsSUFBQSxZQUFBRSxRQUFBLGNBQUFELE1BQUEsZ0JBQUEzQixHQUFBLEdBQUE1QixDQUFBLE9BQUF1RSxVQUFBLENBQUEzQixPQUFBLENBQUE2QixhQUFBLElBQUExRSxDQUFBLFdBQUFFLENBQUEsa0JBQUFBLENBQUEsQ0FBQTJGLE1BQUEsT0FBQXhGLENBQUEsQ0FBQXlCLElBQUEsT0FBQTVCLENBQUEsTUFBQTJFLEtBQUEsRUFBQTNFLENBQUEsQ0FBQTRGLEtBQUEsY0FBQTVGLENBQUEsSUFBQUQsQ0FBQSxNQUFBOEYsSUFBQSxXQUFBQSxLQUFBLFNBQUF4QyxJQUFBLFdBQUF0RCxDQUFBLFFBQUF1RSxVQUFBLElBQUFHLFVBQUEsa0JBQUExRSxDQUFBLENBQUEyQixJQUFBLFFBQUEzQixDQUFBLENBQUE0QixHQUFBLGNBQUFtRSxJQUFBLEtBQUFuQyxpQkFBQSxXQUFBQSxrQkFBQTdELENBQUEsYUFBQXVELElBQUEsUUFBQXZELENBQUEsTUFBQUUsQ0FBQSxrQkFBQStGLE9BQUE1RixDQUFBLEVBQUFFLENBQUEsV0FBQUssQ0FBQSxDQUFBZ0IsSUFBQSxZQUFBaEIsQ0FBQSxDQUFBaUIsR0FBQSxHQUFBN0IsQ0FBQSxFQUFBRSxDQUFBLENBQUErRCxJQUFBLEdBQUE1RCxDQUFBLEVBQUFFLENBQUEsS0FBQUwsQ0FBQSxDQUFBc0QsTUFBQSxXQUFBdEQsQ0FBQSxDQUFBMkIsR0FBQSxHQUFBNUIsQ0FBQSxLQUFBTSxDQUFBLGFBQUFBLENBQUEsUUFBQWlFLFVBQUEsQ0FBQU0sTUFBQSxNQUFBdkUsQ0FBQSxTQUFBQSxDQUFBLFFBQUFHLENBQUEsUUFBQThELFVBQUEsQ0FBQWpFLENBQUEsR0FBQUssQ0FBQSxHQUFBRixDQUFBLENBQUFpRSxVQUFBLGlCQUFBakUsQ0FBQSxDQUFBMEQsTUFBQSxTQUFBNkIsTUFBQSxhQUFBdkYsQ0FBQSxDQUFBMEQsTUFBQSxTQUFBd0IsSUFBQSxRQUFBOUUsQ0FBQSxHQUFBVCxDQUFBLENBQUF5QixJQUFBLENBQUFwQixDQUFBLGVBQUFNLENBQUEsR0FBQVgsQ0FBQSxDQUFBeUIsSUFBQSxDQUFBcEIsQ0FBQSxxQkFBQUksQ0FBQSxJQUFBRSxDQUFBLGFBQUE0RSxJQUFBLEdBQUFsRixDQUFBLENBQUEyRCxRQUFBLFNBQUE0QixNQUFBLENBQUF2RixDQUFBLENBQUEyRCxRQUFBLGdCQUFBdUIsSUFBQSxHQUFBbEYsQ0FBQSxDQUFBNEQsVUFBQSxTQUFBMkIsTUFBQSxDQUFBdkYsQ0FBQSxDQUFBNEQsVUFBQSxjQUFBeEQsQ0FBQSxhQUFBOEUsSUFBQSxHQUFBbEYsQ0FBQSxDQUFBMkQsUUFBQSxTQUFBNEIsTUFBQSxDQUFBdkYsQ0FBQSxDQUFBMkQsUUFBQSxxQkFBQXJELENBQUEsWUFBQXNDLEtBQUEscURBQUFzQyxJQUFBLEdBQUFsRixDQUFBLENBQUE0RCxVQUFBLFNBQUEyQixNQUFBLENBQUF2RixDQUFBLENBQUE0RCxVQUFBLFlBQUFSLE1BQUEsV0FBQUEsT0FBQTdELENBQUEsRUFBQUQsQ0FBQSxhQUFBRSxDQUFBLFFBQUFzRSxVQUFBLENBQUFNLE1BQUEsTUFBQTVFLENBQUEsU0FBQUEsQ0FBQSxRQUFBSyxDQUFBLFFBQUFpRSxVQUFBLENBQUF0RSxDQUFBLE9BQUFLLENBQUEsQ0FBQTZELE1BQUEsU0FBQXdCLElBQUEsSUFBQXZGLENBQUEsQ0FBQXlCLElBQUEsQ0FBQXZCLENBQUEsd0JBQUFxRixJQUFBLEdBQUFyRixDQUFBLENBQUErRCxVQUFBLFFBQUE1RCxDQUFBLEdBQUFILENBQUEsYUFBQUcsQ0FBQSxpQkFBQVQsQ0FBQSxtQkFBQUEsQ0FBQSxLQUFBUyxDQUFBLENBQUEwRCxNQUFBLElBQUFwRSxDQUFBLElBQUFBLENBQUEsSUFBQVUsQ0FBQSxDQUFBNEQsVUFBQSxLQUFBNUQsQ0FBQSxjQUFBRSxDQUFBLEdBQUFGLENBQUEsR0FBQUEsQ0FBQSxDQUFBaUUsVUFBQSxjQUFBL0QsQ0FBQSxDQUFBZ0IsSUFBQSxHQUFBM0IsQ0FBQSxFQUFBVyxDQUFBLENBQUFpQixHQUFBLEdBQUE3QixDQUFBLEVBQUFVLENBQUEsU0FBQThDLE1BQUEsZ0JBQUFTLElBQUEsR0FBQXZELENBQUEsQ0FBQTRELFVBQUEsRUFBQW5DLENBQUEsU0FBQStELFFBQUEsQ0FBQXRGLENBQUEsTUFBQXNGLFFBQUEsV0FBQUEsU0FBQWpHLENBQUEsRUFBQUQsQ0FBQSxvQkFBQUMsQ0FBQSxDQUFBMkIsSUFBQSxRQUFBM0IsQ0FBQSxDQUFBNEIsR0FBQSxxQkFBQTVCLENBQUEsQ0FBQTJCLElBQUEsbUJBQUEzQixDQUFBLENBQUEyQixJQUFBLFFBQUFxQyxJQUFBLEdBQUFoRSxDQUFBLENBQUE0QixHQUFBLGdCQUFBNUIsQ0FBQSxDQUFBMkIsSUFBQSxTQUFBb0UsSUFBQSxRQUFBbkUsR0FBQSxHQUFBNUIsQ0FBQSxDQUFBNEIsR0FBQSxPQUFBMkIsTUFBQSxrQkFBQVMsSUFBQSx5QkFBQWhFLENBQUEsQ0FBQTJCLElBQUEsSUFBQTVCLENBQUEsVUFBQWlFLElBQUEsR0FBQWpFLENBQUEsR0FBQW1DLENBQUEsS0FBQWdFLE1BQUEsV0FBQUEsT0FBQWxHLENBQUEsYUFBQUQsQ0FBQSxRQUFBd0UsVUFBQSxDQUFBTSxNQUFBLE1BQUE5RSxDQUFBLFNBQUFBLENBQUEsUUFBQUUsQ0FBQSxRQUFBc0UsVUFBQSxDQUFBeEUsQ0FBQSxPQUFBRSxDQUFBLENBQUFvRSxVQUFBLEtBQUFyRSxDQUFBLGNBQUFpRyxRQUFBLENBQUFoRyxDQUFBLENBQUF5RSxVQUFBLEVBQUF6RSxDQUFBLENBQUFxRSxRQUFBLEdBQUFHLGFBQUEsQ0FBQXhFLENBQUEsR0FBQWlDLENBQUEseUJBQUFpRSxPQUFBbkcsQ0FBQSxhQUFBRCxDQUFBLFFBQUF3RSxVQUFBLENBQUFNLE1BQUEsTUFBQTlFLENBQUEsU0FBQUEsQ0FBQSxRQUFBRSxDQUFBLFFBQUFzRSxVQUFBLENBQUF4RSxDQUFBLE9BQUFFLENBQUEsQ0FBQWtFLE1BQUEsS0FBQW5FLENBQUEsUUFBQUksQ0FBQSxHQUFBSCxDQUFBLENBQUF5RSxVQUFBLGtCQUFBdEUsQ0FBQSxDQUFBdUIsSUFBQSxRQUFBckIsQ0FBQSxHQUFBRixDQUFBLENBQUF3QixHQUFBLEVBQUE2QyxhQUFBLENBQUF4RSxDQUFBLFlBQUFLLENBQUEsZ0JBQUErQyxLQUFBLDhCQUFBK0MsYUFBQSxXQUFBQSxjQUFBckcsQ0FBQSxFQUFBRSxDQUFBLEVBQUFHLENBQUEsZ0JBQUFvRCxRQUFBLEtBQUE1QyxRQUFBLEVBQUE2QixNQUFBLENBQUExQyxDQUFBLEdBQUFnRSxVQUFBLEVBQUE5RCxDQUFBLEVBQUFnRSxPQUFBLEVBQUE3RCxDQUFBLG9CQUFBbUQsTUFBQSxVQUFBM0IsR0FBQSxHQUFBNUIsQ0FBQSxHQUFBa0MsQ0FBQSxPQUFBbkMsQ0FBQTtBQUFBLFNBQUFzRywyQkFBQS9GLENBQUEsRUFBQWdHLGNBQUEsUUFBQUMsRUFBQSxVQUFBN0YsTUFBQSxvQkFBQUosQ0FBQSxDQUFBSSxNQUFBLENBQUFFLFFBQUEsS0FBQU4sQ0FBQSxxQkFBQWlHLEVBQUEsUUFBQUMsS0FBQSxDQUFBQyxPQUFBLENBQUFuRyxDQUFBLE1BQUFpRyxFQUFBLEdBQUFHLDJCQUFBLENBQUFwRyxDQUFBLE1BQUFnRyxjQUFBLElBQUFoRyxDQUFBLFdBQUFBLENBQUEsQ0FBQXVFLE1BQUEscUJBQUEwQixFQUFBLEVBQUFqRyxDQUFBLEdBQUFpRyxFQUFBLE1BQUE5RixDQUFBLFVBQUFrRyxDQUFBLFlBQUFBLEVBQUEsZUFBQTFFLENBQUEsRUFBQTBFLENBQUEsRUFBQXZHLENBQUEsV0FBQUEsRUFBQSxRQUFBSyxDQUFBLElBQUFILENBQUEsQ0FBQXVFLE1BQUEsV0FBQXZCLElBQUEsbUJBQUFBLElBQUEsU0FBQTlDLEtBQUEsRUFBQUYsQ0FBQSxDQUFBRyxDQUFBLFVBQUFWLENBQUEsV0FBQUEsRUFBQTZHLEVBQUEsVUFBQUEsRUFBQSxLQUFBNUUsQ0FBQSxFQUFBMkUsQ0FBQSxnQkFBQTdDLFNBQUEsaUpBQUErQyxnQkFBQSxTQUFBQyxNQUFBLFVBQUFDLEdBQUEsV0FBQTlFLENBQUEsV0FBQUEsRUFBQSxJQUFBc0UsRUFBQSxHQUFBQSxFQUFBLENBQUExRSxJQUFBLENBQUF2QixDQUFBLE1BQUFGLENBQUEsV0FBQUEsRUFBQSxRQUFBNEcsSUFBQSxHQUFBVCxFQUFBLENBQUF2QyxJQUFBLElBQUE2QyxnQkFBQSxHQUFBRyxJQUFBLENBQUExRCxJQUFBLFNBQUEwRCxJQUFBLEtBQUFqSCxDQUFBLFdBQUFBLEVBQUFrSCxHQUFBLElBQUFILE1BQUEsU0FBQUMsR0FBQSxHQUFBRSxHQUFBLEtBQUFqRixDQUFBLFdBQUFBLEVBQUEsZUFBQTZFLGdCQUFBLElBQUFOLEVBQUEsb0JBQUFBLEVBQUEsOEJBQUFPLE1BQUEsUUFBQUMsR0FBQTtBQUFBLFNBQUFHLG1CQUFBQyxHQUFBLEVBQUFsRSxPQUFBLEVBQUFtRSxNQUFBLEVBQUFDLEtBQUEsRUFBQUMsTUFBQSxFQUFBQyxHQUFBLEVBQUEzRixHQUFBLGNBQUE0RixJQUFBLEdBQUFMLEdBQUEsQ0FBQUksR0FBQSxFQUFBM0YsR0FBQSxPQUFBcEIsS0FBQSxHQUFBZ0gsSUFBQSxDQUFBaEgsS0FBQSxXQUFBaUgsS0FBQSxJQUFBTCxNQUFBLENBQUFLLEtBQUEsaUJBQUFELElBQUEsQ0FBQWxFLElBQUEsSUFBQUwsT0FBQSxDQUFBekMsS0FBQSxZQUFBK0UsT0FBQSxDQUFBdEMsT0FBQSxDQUFBekMsS0FBQSxFQUFBMkMsSUFBQSxDQUFBa0UsS0FBQSxFQUFBQyxNQUFBO0FBQUEsU0FBQUksa0JBQUFDLEVBQUEsNkJBQUFDLElBQUEsU0FBQUMsSUFBQSxHQUFBQyxTQUFBLGFBQUF2QyxPQUFBLFdBQUF0QyxPQUFBLEVBQUFtRSxNQUFBLFFBQUFELEdBQUEsR0FBQVEsRUFBQSxDQUFBSSxLQUFBLENBQUFILElBQUEsRUFBQUMsSUFBQSxZQUFBUixNQUFBN0csS0FBQSxJQUFBMEcsa0JBQUEsQ0FBQUMsR0FBQSxFQUFBbEUsT0FBQSxFQUFBbUUsTUFBQSxFQUFBQyxLQUFBLEVBQUFDLE1BQUEsVUFBQTlHLEtBQUEsY0FBQThHLE9BQUFQLEdBQUEsSUFBQUcsa0JBQUEsQ0FBQUMsR0FBQSxFQUFBbEUsT0FBQSxFQUFBbUUsTUFBQSxFQUFBQyxLQUFBLEVBQUFDLE1BQUEsV0FBQVAsR0FBQSxLQUFBTSxLQUFBLENBQUFXLFNBQUE7QUFBQSxTQUFBQyxTQUFBLElBQUFBLFFBQUEsR0FBQS9ILE1BQUEsQ0FBQWdJLE1BQUEsR0FBQWhJLE1BQUEsQ0FBQWdJLE1BQUEsQ0FBQUMsSUFBQSxlQUFBQyxNQUFBLGFBQUEzSCxDQUFBLE1BQUFBLENBQUEsR0FBQXFILFNBQUEsQ0FBQWpELE1BQUEsRUFBQXBFLENBQUEsVUFBQTRILE1BQUEsR0FBQVAsU0FBQSxDQUFBckgsQ0FBQSxZQUFBOEcsR0FBQSxJQUFBYyxNQUFBLFFBQUFuSSxNQUFBLENBQUFDLFNBQUEsQ0FBQUUsY0FBQSxDQUFBd0IsSUFBQSxDQUFBd0csTUFBQSxFQUFBZCxHQUFBLEtBQUFhLE1BQUEsQ0FBQWIsR0FBQSxJQUFBYyxNQUFBLENBQUFkLEdBQUEsZ0JBQUFhLE1BQUEsWUFBQUgsUUFBQSxDQUFBRixLQUFBLE9BQUFELFNBQUE7QUFBQSxTQUFBUSxtQkFBQUMsR0FBQSxXQUFBQyxrQkFBQSxDQUFBRCxHQUFBLEtBQUFFLGdCQUFBLENBQUFGLEdBQUEsS0FBQTdCLDJCQUFBLENBQUE2QixHQUFBLEtBQUFHLGtCQUFBO0FBQUEsU0FBQUEsbUJBQUEsY0FBQTVFLFNBQUE7QUFBQSxTQUFBMkUsaUJBQUFFLElBQUEsZUFBQWpJLE1BQUEsb0JBQUFpSSxJQUFBLENBQUFqSSxNQUFBLENBQUFFLFFBQUEsYUFBQStILElBQUEsK0JBQUFuQyxLQUFBLENBQUFvQyxJQUFBLENBQUFELElBQUE7QUFBQSxTQUFBSCxtQkFBQUQsR0FBQSxRQUFBL0IsS0FBQSxDQUFBQyxPQUFBLENBQUE4QixHQUFBLFVBQUFNLGlCQUFBLENBQUFOLEdBQUE7QUFBQSxTQUFBTyxRQUFBL0ksQ0FBQSxFQUFBRSxDQUFBLFFBQUFELENBQUEsR0FBQUUsTUFBQSxDQUFBc0YsSUFBQSxDQUFBekYsQ0FBQSxPQUFBRyxNQUFBLENBQUE2SSxxQkFBQSxRQUFBekksQ0FBQSxHQUFBSixNQUFBLENBQUE2SSxxQkFBQSxDQUFBaEosQ0FBQSxHQUFBRSxDQUFBLEtBQUFLLENBQUEsR0FBQUEsQ0FBQSxDQUFBMEksTUFBQSxXQUFBL0ksQ0FBQSxXQUFBQyxNQUFBLENBQUErSSx3QkFBQSxDQUFBbEosQ0FBQSxFQUFBRSxDQUFBLEVBQUFpQixVQUFBLE9BQUFsQixDQUFBLENBQUF3RSxJQUFBLENBQUF1RCxLQUFBLENBQUEvSCxDQUFBLEVBQUFNLENBQUEsWUFBQU4sQ0FBQTtBQUFBLFNBQUFrSixjQUFBbkosQ0FBQSxhQUFBRSxDQUFBLE1BQUFBLENBQUEsR0FBQTZILFNBQUEsQ0FBQWpELE1BQUEsRUFBQTVFLENBQUEsVUFBQUQsQ0FBQSxXQUFBOEgsU0FBQSxDQUFBN0gsQ0FBQSxJQUFBNkgsU0FBQSxDQUFBN0gsQ0FBQSxRQUFBQSxDQUFBLE9BQUE2SSxPQUFBLENBQUE1SSxNQUFBLENBQUFGLENBQUEsT0FBQTRDLE9BQUEsV0FBQTNDLENBQUEsSUFBQWtKLGVBQUEsQ0FBQXBKLENBQUEsRUFBQUUsQ0FBQSxFQUFBRCxDQUFBLENBQUFDLENBQUEsU0FBQUMsTUFBQSxDQUFBa0oseUJBQUEsR0FBQWxKLE1BQUEsQ0FBQW1KLGdCQUFBLENBQUF0SixDQUFBLEVBQUFHLE1BQUEsQ0FBQWtKLHlCQUFBLENBQUFwSixDQUFBLEtBQUE4SSxPQUFBLENBQUE1SSxNQUFBLENBQUFGLENBQUEsR0FBQTRDLE9BQUEsV0FBQTNDLENBQUEsSUFBQUMsTUFBQSxDQUFBSyxjQUFBLENBQUFSLENBQUEsRUFBQUUsQ0FBQSxFQUFBQyxNQUFBLENBQUErSSx3QkFBQSxDQUFBakosQ0FBQSxFQUFBQyxDQUFBLGlCQUFBRixDQUFBO0FBQUEsU0FBQW9KLGdCQUFBRyxHQUFBLEVBQUEvQixHQUFBLEVBQUEvRyxLQUFBLElBQUErRyxHQUFBLEdBQUFnQyxjQUFBLENBQUFoQyxHQUFBLE9BQUFBLEdBQUEsSUFBQStCLEdBQUEsSUFBQXBKLE1BQUEsQ0FBQUssY0FBQSxDQUFBK0ksR0FBQSxFQUFBL0IsR0FBQSxJQUFBL0csS0FBQSxFQUFBQSxLQUFBLEVBQUFVLFVBQUEsUUFBQUMsWUFBQSxRQUFBQyxRQUFBLG9CQUFBa0ksR0FBQSxDQUFBL0IsR0FBQSxJQUFBL0csS0FBQSxXQUFBOEksR0FBQTtBQUFBLFNBQUFDLGVBQUEzSCxHQUFBLFFBQUEyRixHQUFBLEdBQUFpQyxZQUFBLENBQUE1SCxHQUFBLG9CQUFBb0IsT0FBQSxDQUFBdUUsR0FBQSxpQkFBQUEsR0FBQSxHQUFBa0MsTUFBQSxDQUFBbEMsR0FBQTtBQUFBLFNBQUFpQyxhQUFBRSxLQUFBLEVBQUFDLElBQUEsUUFBQTNHLE9BQUEsQ0FBQTBHLEtBQUEsa0JBQUFBLEtBQUEsa0JBQUFBLEtBQUEsTUFBQUUsSUFBQSxHQUFBRixLQUFBLENBQUFoSixNQUFBLENBQUFtSixXQUFBLE9BQUFELElBQUEsS0FBQTVCLFNBQUEsUUFBQThCLEdBQUEsR0FBQUYsSUFBQSxDQUFBL0gsSUFBQSxDQUFBNkgsS0FBQSxFQUFBQyxJQUFBLG9CQUFBM0csT0FBQSxDQUFBOEcsR0FBQSx1QkFBQUEsR0FBQSxZQUFBaEcsU0FBQSw0REFBQTZGLElBQUEsZ0JBQUFGLE1BQUEsR0FBQU0sTUFBQSxFQUFBTCxLQUFBO0FBQUEsU0FBQU0sZUFBQXpCLEdBQUEsRUFBQTlILENBQUEsV0FBQXdKLGVBQUEsQ0FBQTFCLEdBQUEsS0FBQTJCLHFCQUFBLENBQUEzQixHQUFBLEVBQUE5SCxDQUFBLEtBQUFpRywyQkFBQSxDQUFBNkIsR0FBQSxFQUFBOUgsQ0FBQSxLQUFBMEosZ0JBQUE7QUFBQSxTQUFBQSxpQkFBQSxjQUFBckcsU0FBQTtBQUFBLFNBQUE0Qyw0QkFBQXBHLENBQUEsRUFBQThKLE1BQUEsU0FBQTlKLENBQUEscUJBQUFBLENBQUEsc0JBQUF1SSxpQkFBQSxDQUFBdkksQ0FBQSxFQUFBOEosTUFBQSxPQUFBaEssQ0FBQSxHQUFBRixNQUFBLENBQUFDLFNBQUEsQ0FBQWtLLFFBQUEsQ0FBQXhJLElBQUEsQ0FBQXZCLENBQUEsRUFBQXVGLEtBQUEsYUFBQXpGLENBQUEsaUJBQUFFLENBQUEsQ0FBQTBFLFdBQUEsRUFBQTVFLENBQUEsR0FBQUUsQ0FBQSxDQUFBMEUsV0FBQSxDQUFBQyxJQUFBLE1BQUE3RSxDQUFBLGNBQUFBLENBQUEsbUJBQUFvRyxLQUFBLENBQUFvQyxJQUFBLENBQUF0SSxDQUFBLE9BQUFGLENBQUEsK0RBQUFrSyxJQUFBLENBQUFsSyxDQUFBLFVBQUF5SSxpQkFBQSxDQUFBdkksQ0FBQSxFQUFBOEosTUFBQTtBQUFBLFNBQUF2QixrQkFBQU4sR0FBQSxFQUFBZ0MsR0FBQSxRQUFBQSxHQUFBLFlBQUFBLEdBQUEsR0FBQWhDLEdBQUEsQ0FBQTFELE1BQUEsRUFBQTBGLEdBQUEsR0FBQWhDLEdBQUEsQ0FBQTFELE1BQUEsV0FBQXBFLENBQUEsTUFBQStKLElBQUEsT0FBQWhFLEtBQUEsQ0FBQStELEdBQUEsR0FBQTlKLENBQUEsR0FBQThKLEdBQUEsRUFBQTlKLENBQUEsSUFBQStKLElBQUEsQ0FBQS9KLENBQUEsSUFBQThILEdBQUEsQ0FBQTlILENBQUEsVUFBQStKLElBQUE7QUFBQSxTQUFBTixzQkFBQWpLLENBQUEsRUFBQThCLENBQUEsUUFBQS9CLENBQUEsV0FBQUMsQ0FBQSxnQ0FBQVMsTUFBQSxJQUFBVCxDQUFBLENBQUFTLE1BQUEsQ0FBQUUsUUFBQSxLQUFBWCxDQUFBLDRCQUFBRCxDQUFBLFFBQUFELENBQUEsRUFBQUssQ0FBQSxFQUFBSyxDQUFBLEVBQUFNLENBQUEsRUFBQUosQ0FBQSxPQUFBcUIsQ0FBQSxPQUFBMUIsQ0FBQSxpQkFBQUcsQ0FBQSxJQUFBVCxDQUFBLEdBQUFBLENBQUEsQ0FBQTZCLElBQUEsQ0FBQTVCLENBQUEsR0FBQStELElBQUEsUUFBQWpDLENBQUEsUUFBQTdCLE1BQUEsQ0FBQUYsQ0FBQSxNQUFBQSxDQUFBLFVBQUFnQyxDQUFBLHVCQUFBQSxDQUFBLElBQUFqQyxDQUFBLEdBQUFVLENBQUEsQ0FBQW9CLElBQUEsQ0FBQTdCLENBQUEsR0FBQXNELElBQUEsTUFBQTNDLENBQUEsQ0FBQTZELElBQUEsQ0FBQXpFLENBQUEsQ0FBQVMsS0FBQSxHQUFBRyxDQUFBLENBQUFrRSxNQUFBLEtBQUE5QyxDQUFBLEdBQUFDLENBQUEsaUJBQUEvQixDQUFBLElBQUFLLENBQUEsT0FBQUYsQ0FBQSxHQUFBSCxDQUFBLHlCQUFBK0IsQ0FBQSxZQUFBaEMsQ0FBQSxlQUFBZSxDQUFBLEdBQUFmLENBQUEsY0FBQUUsTUFBQSxDQUFBYSxDQUFBLE1BQUFBLENBQUEsMkJBQUFULENBQUEsUUFBQUYsQ0FBQSxhQUFBTyxDQUFBO0FBQUEsU0FBQXNKLGdCQUFBMUIsR0FBQSxRQUFBL0IsS0FBQSxDQUFBQyxPQUFBLENBQUE4QixHQUFBLFVBQUFBLEdBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBREEsT0FBTyxLQUFLa0MsS0FBSyxNQUFNLE9BQU87QUFDOUIsT0FBTyxLQUFLQyxTQUFTLE1BQU0sWUFBWTtBQUN2QyxTQUFTQyxJQUFJLEVBQUVDLHlCQUF5QixRQUFRLHlCQUF5QjtBQUN6RSxPQUFPQyxNQUFNLE1BQU0sU0FBUztBQUM1QixTQUFTQyxPQUFPLFFBQVEscUJBQXFCO0FBQzdDLFNBQVNDLFVBQVUsUUFBUSxlQUFlO0FBQzFDLFNBQVNDLE9BQU8sRUFBRUMsWUFBWSxRQUFRLGdCQUFnQjtBQUN0RCxTQUNFQyxJQUFJLEVBQ0pDLFdBQVcsRUFDWEMsV0FBVyxFQUNYQyx5QkFBeUIsRUFDekJDLGtCQUFrQixFQUNsQkMsZUFBZSxFQUNmQyxZQUFZLEVBQ1pDLHFCQUFxQixFQUNyQkMsbUJBQW1CLEVBQ25CQyxhQUFhLFFBQ1IsdUJBQXVCO0FBQzlCO0FBQ0EsU0FBU0Msd0JBQXdCLFFBQVEsa0JBQWtCO0FBQzNELFNBQVNDLGdCQUFnQixFQUFFQyx5QkFBeUIsUUFBUSxrQkFBa0I7QUFDOUUsU0FBU0MsT0FBTyxRQUFRLHlCQUF5QjtBQUNqRCxTQUFTQyxTQUFTLFFBQVEsdUJBQXVCO0FBQ2pELFNBQVNDLGFBQWEsRUFBRUMsaUJBQWlCLFFBQVEsSUFBSTtBQUNyRCxTQUFTQyxvQkFBb0IsUUFBUSxrQ0FBa0M7QUFDdkUsU0FDRUMsbUJBQW1CLEVBQ25CQyxhQUFhLEVBQ2JDLDJCQUEyQixFQUMzQkMsZUFBZSxFQUNmQyxrQkFBa0IsRUFDbEJDLDJCQUEyQixFQUMzQkMsZUFBZSxRQUNWLCtCQUErQjtBQUN0QyxTQUFTQyxLQUFLLFFBQVEsbUJBQW1CO0FBQ3pDLFNBQVNDLGNBQWMsUUFBUSxrQkFBa0I7QUFDakQsU0FBU0MsS0FBSyxRQUFRLHlCQUF5QjtBQUMvQyxTQUNFQyxZQUFZLEVBQ1pDLGVBQWUsRUFDZkMsWUFBWSxRQUNQLGFBQWE7QUFDcEIsU0FBU0Msa0JBQWtCLFFBQVEsdUJBQXVCO0FBQzFELFNBQVNDLFFBQVEsUUFBUSxtQkFBbUI7QUFFNUMsSUFBTUMsa0JBQWtCLEdBQUcsd0JBQXdCO0FBQ25ELElBQU1DLEtBQUssR0FBRyxTQUFTO0FBQ3ZCLElBQU1DLEtBQUssR0FBRztFQUFFQyxTQUFTLEVBQUUsTUFBTTtFQUFFQyxLQUFLLEVBQUU7QUFBUSxDQUFDOztBQUVuRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVNDLGFBQWFBLENBQUNDLFFBQVEsRUFBRTtFQUFBLElBQUFDLHFCQUFBO0VBQy9CLElBQUFDLElBQUEsR0FJSUYsUUFBUSxJQUFJLENBQUMsQ0FBQztJQUhoQkcsT0FBTyxHQUFBRCxJQUFBLENBQVBDLE9BQU87SUFDUEMsS0FBSyxHQUFBRixJQUFBLENBQUxFLEtBQUs7SUFDTEMsU0FBUyxHQUFBSCxJQUFBLENBQVRHLFNBQVM7RUFFWCxJQUFNQyxZQUFZLEdBQUdELFNBQVMsYUFBVEEsU0FBUyxnQkFBQUoscUJBQUEsR0FBVEksU0FBUyxDQUFFQyxZQUFZLGNBQUFMLHFCQUFBLGVBQXZCQSxxQkFBQSxDQUF5QjdJLE1BQU0sR0FBR21KLElBQUksQ0FBQ0MsU0FBUyxDQUFDSCxTQUFTLENBQUNDLFlBQVksQ0FBQyxHQUFHLEVBQUU7RUFDbEcsT0FBTztJQUNMSCxPQUFPLEVBQVBBLE9BQU87SUFDUEMsS0FBSyxFQUFMQSxLQUFLO0lBQ0xFLFlBQVksRUFBWkE7RUFDRixDQUFDO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVNHLGFBQWFBLENBQUNDLGFBQW9CLEVBQUVDLGFBQW9CLEVBQUU7RUFDakVELGFBQWEsR0FBR0EsYUFBYSxJQUFJLEVBQUU7RUFDbkNDLGFBQWEsR0FBR0EsYUFBYSxJQUFJLEVBQUU7RUFDbkMsSUFBSUMsT0FBTyxHQUFHLEtBQUs7RUFFbkIsSUFBSUYsYUFBYSxDQUFDdEosTUFBTSxLQUFLdUosYUFBYSxDQUFDdkosTUFBTSxFQUFFO0lBQ2pEd0osT0FBTyxHQUFHLElBQUk7SUFFZCxLQUFLLElBQUk1TixDQUFDLEdBQUcsQ0FBQyxFQUFFc0IsQ0FBQyxHQUFFb00sYUFBYSxDQUFDdEosTUFBTSxFQUFFcEUsQ0FBQyxHQUFHc0IsQ0FBQyxFQUFFdEIsQ0FBQyxFQUFFLEVBQUU7TUFDbkQsSUFBTTZOLE1BQU0sR0FBR2QsYUFBYSxDQUFDVyxhQUFhLENBQUMxTixDQUFDLENBQUMsQ0FBQztNQUM5QyxJQUFNOE4sTUFBTSxHQUFHZixhQUFhLENBQUNZLGFBQWEsQ0FBQzNOLENBQUMsQ0FBQyxDQUFDO01BQzlDNE4sT0FBTyxHQUFHdEMsT0FBTyxDQUFDdUMsTUFBTSxFQUFFQyxNQUFNLENBQUM7TUFFakMsSUFBSSxDQUFDRixPQUFPLEVBQUU7UUFDWjtNQUNGO0lBQ0Y7RUFDRjtFQUVBLE9BQU9BLE9BQU87QUFDaEI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU8sSUFBTUcsY0FBYyxHQUFHLFNBQWpCQSxjQUFjQSxDQUFJQyxlQUFlLEVBQUVDLE1BQU0sRUFBSztFQUFBLElBQUFDLHFCQUFBLEVBQUFDLHNCQUFBLEVBQUFDLHFCQUFBO0VBQ3pELElBQU1DLFdBQVcsR0FBR0wsZUFBZSxhQUFmQSxlQUFlLGdCQUFBRSxxQkFBQSxHQUFmRixlQUFlLENBQUVNLGFBQWEsY0FBQUoscUJBQUEsZ0JBQUFBLHFCQUFBLEdBQTlCQSxxQkFBQSxDQUFnQ0ssUUFBUSxjQUFBTCxxQkFBQSx1QkFBeENBLHFCQUFBLENBQTBDTSxTQUFTO0VBQ3ZFLElBQU1DLFFBQVEsR0FBR1QsZUFBZSxhQUFmQSxlQUFlLGdCQUFBRyxzQkFBQSxHQUFmSCxlQUFlLENBQUVNLGFBQWEsY0FBQUgsc0JBQUEsZ0JBQUFBLHNCQUFBLEdBQTlCQSxzQkFBQSxDQUFnQ0ksUUFBUSxjQUFBSixzQkFBQSx1QkFBeENBLHNCQUFBLENBQTBDM0osSUFBSSxFQUFDO0VBQ2hFLElBQUlrSyxXQUFXLEdBQUcsS0FBSztFQUN2QixJQUFNQyxRQUFRLEdBQUc5QywyQkFBMkIsQ0FBQzRDLFFBQVEsQ0FBQztFQUN0REMsV0FBVyxHQUFHQyxRQUFRLGFBQVJBLFFBQVEsZ0JBQUFQLHFCQUFBLEdBQVJPLFFBQVEsQ0FBRUMsV0FBVyxDQUFDLENBQUMsY0FBQVIscUJBQUEsdUJBQXZCQSxxQkFBQSxDQUF5QlMsUUFBUSxDQUFDWixNQUFNLENBQUM7RUFDdkQsSUFBSSxDQUFDUyxXQUFXLEVBQUU7SUFDaEJJLE9BQU8sQ0FBQ0MsSUFBSSxzQkFBQUMsTUFBQSxDQUFzQmYsTUFBTSx3QkFBQWUsTUFBQSxDQUFxQlAsUUFBUSxDQUFFLENBQUM7RUFDMUU7RUFDQSxJQUFJLENBQUFKLFdBQVcsYUFBWEEsV0FBVyx1QkFBWEEsV0FBVyxDQUFFTyxXQUFXLENBQUMsQ0FBQyxNQUFLWCxNQUFNLEVBQUU7SUFDekNhLE9BQU8sQ0FBQ0MsSUFBSSxzQkFBQUMsTUFBQSxDQUFzQmYsTUFBTSxnQ0FBQWUsTUFBQSxDQUE2QlgsV0FBVyxDQUFFLENBQUM7SUFDbkZLLFdBQVcsR0FBRyxLQUFLO0VBQ3JCO0VBQ0EsSUFBSUEsV0FBVyxFQUFFO0lBQ2YsSUFBTU8sU0FBUyxHQUFHakIsZUFBZSxhQUFmQSxlQUFlLHVCQUFmQSxlQUFlLENBQUVpQixTQUFTO0lBQzVDLElBQUlBLFNBQVMsRUFBRTtNQUNiLE9BQU9BLFNBQVM7SUFDbEI7SUFDQUgsT0FBTyxDQUFDOUgsS0FBSyx3Q0FBd0MsQ0FBQztFQUN4RDtFQUNBOEgsT0FBTyxDQUFDOUgsS0FBSyxnQ0FBQWdJLE1BQUEsQ0FBZ0NmLE1BQU0sb0JBQUFlLE1BQUEsQ0FBaUJQLFFBQVEsQ0FBRSxDQUFDO0VBQy9FLE9BQU8sSUFBSTtBQUNiLENBQUM7QUFFRCxlQUFlLFNBQVNTLGFBQWFBLENBQUFDLEtBQUEsRUFxQ2xDO0VBQUEsSUFBQUMsc0JBQUEsRUFBQUMsc0JBQUEsRUFBQUMsc0JBQUEsRUFBQUMsc0JBQUEsRUFBQUMsc0JBQUEsRUFBQUMscUJBQUEsRUFBQUMsc0JBQUEsRUFBQUMsdUJBQUEsRUFBQUMsV0FBQSxFQUFBQyxZQUFBLEVBQUFDLG9CQUFBLEVBQUFDLGNBQUEsRUFBQUMsY0FBQTtFQUFBLElBcENEQyxNQUFNLEdBQUFkLEtBQUEsQ0FBTmMsTUFBTTtJQUNOQyxjQUFjLEdBQUFmLEtBQUEsQ0FBZGUsY0FBYztJQUNkQyxTQUFTLEdBQUFoQixLQUFBLENBQVRnQixTQUFTO0lBQ1RDLE9BQU8sR0FBQWpCLEtBQUEsQ0FBUGlCLE9BQU87SUFDUEMsT0FBTyxHQUFBbEIsS0FBQSxDQUFQa0IsT0FBTztJQUNQQyxrQkFBa0IsR0FBQW5CLEtBQUEsQ0FBbEJtQixrQkFBa0I7SUFDbEJDLFdBQVcsR0FBQXBCLEtBQUEsQ0FBWG9CLFdBQVc7SUFDWEMsY0FBYyxHQUFBckIsS0FBQSxDQUFkcUIsY0FBYztJQUNkQyxZQUFZLEdBQUF0QixLQUFBLENBQVpzQixZQUFZO0lBQ1pDLGFBQWEsR0FBQXZCLEtBQUEsQ0FBYnVCLGFBQWE7SUFDYkMsVUFBVSxHQUFBeEIsS0FBQSxDQUFWd0IsVUFBVTtJQUNWQyxFQUFFLEdBQUF6QixLQUFBLENBQUZ5QixFQUFFO0lBQ0ZDLElBQUksR0FBQTFCLEtBQUEsQ0FBSjBCLElBQUk7SUFDSkMsWUFBWSxHQUFBM0IsS0FBQSxDQUFaMkIsWUFBWTtJQUNaQyxVQUFVLEdBQUE1QixLQUFBLENBQVY0QixVQUFVO0lBQ1ZDLGVBQWUsR0FBQTdCLEtBQUEsQ0FBZjZCLGVBQWU7SUFDZkMsNEJBQTRCLEdBQUE5QixLQUFBLENBQTVCOEIsNEJBQTRCO0lBQzVCQyxTQUFTLEdBQUEvQixLQUFBLENBQVQrQixTQUFTO0lBQUFDLGNBQUEsR0FBQWhDLEtBQUEsQ0FDVFosUUFBUTtJQUNONkMsS0FBSyxHQUFBRCxjQUFBLENBQUxDLEtBQUs7SUFDTEMsVUFBVSxHQUFBRixjQUFBLENBQVZFLFVBQVU7SUFDVkMsVUFBVSxHQUFBSCxjQUFBLENBQVZHLFVBQVU7SUFDVkMscUJBQXFCLEdBQUFKLGNBQUEsQ0FBckJJLHFCQUFxQjtJQUV2QkMsWUFBWSxHQUFBckMsS0FBQSxDQUFacUMsWUFBWTtJQUNaQyxhQUFhLEdBQUF0QyxLQUFBLENBQWJzQyxhQUFhO0lBQ2JDLE1BQU0sR0FBQXZDLEtBQUEsQ0FBTnVDLE1BQU07SUFDTkMsb0JBQW9CLEdBQUF4QyxLQUFBLENBQXBCd0Msb0JBQW9CO0lBQ3BCQyxxQkFBcUIsR0FBQXpDLEtBQUEsQ0FBckJ5QyxxQkFBcUI7SUFDckJDLGNBQWMsR0FBQTFDLEtBQUEsQ0FBZDBDLGNBQWM7SUFDZEMsZUFBZSxHQUFBM0MsS0FBQSxDQUFmMkMsZUFBZTtJQUNmQyxvQkFBb0IsR0FBQTVDLEtBQUEsQ0FBcEI0QyxvQkFBb0I7SUFDcEJDLFNBQVMsR0FBQTdDLEtBQUEsQ0FBVDZDLFNBQVM7SUFDVEMsS0FBSyxHQUFBOUMsS0FBQSxDQUFMOEMsS0FBSztJQUNMQyxtQkFBbUIsR0FBQS9DLEtBQUEsQ0FBbkIrQyxtQkFBbUI7SUFDbkJDLGdCQUFnQixHQUFBaEQsS0FBQSxDQUFoQmdELGdCQUFnQjtFQUVoQixJQUFNbEUsTUFBTSxHQUFHaUQsU0FBUyxhQUFUQSxTQUFTLHVCQUFUQSxTQUFTLENBQUUxQyxTQUFTO0VBQ25DLElBQUE0RCxlQUFBLEdBQTJCcEksS0FBSyxDQUFDcUksUUFBUSxDQUFDO01BQ3hDQyxrQkFBa0IsRUFBRSxDQUFDO01BQ3JCQyxnQkFBZ0IsRUFBRSxJQUFJO01BQ3RCQyxlQUFlLEVBQUUsS0FBSztNQUN0QkMsa0JBQWtCLEVBQUUsS0FBSztNQUN6QkMsaUJBQWlCLEVBQUUsSUFBSTtNQUN2QkMsYUFBYSxFQUFFLEtBQUs7TUFDcEJDLEdBQUcsRUFBRTNDLE1BQU07TUFDWDRDLFdBQVcsRUFBRSxLQUFLO01BQ2xCQyxXQUFXLEVBQUUsSUFBSTtNQUNqQkMsYUFBYSxFQUFFLEtBQUs7TUFDcEJDLFVBQVUsRUFBRSxJQUFJQyxHQUFHLENBQUMsQ0FBQztNQUNyQkMsa0JBQWtCLEVBQUUsS0FBSztNQUN6QkMsU0FBUyxFQUFFLEtBQUs7TUFDaEJDLFFBQVEsRUFBRSxJQUFJO01BQ2RDLGVBQWUsRUFBRSxLQUFLO01BQ3RCQyxrQkFBa0IsRUFBRSxDQUFDLENBQUM7TUFDdEJDLHFCQUFxQixFQUFFLElBQUk7TUFDM0JDLFlBQVksRUFBRSxJQUFJO01BQ2xCQyxlQUFlLEVBQUUsSUFBSVIsR0FBRyxDQUFDLENBQUM7TUFDMUJTLHlCQUF5QixFQUFFO0lBQzdCLENBQUMsQ0FBQztJQUFBQyxnQkFBQSxHQUFBcEssY0FBQSxDQUFBNkksZUFBQTtJQXJCS3dCLEtBQUssR0FBQUQsZ0JBQUE7SUFBRUUsU0FBUyxHQUFBRixnQkFBQTtFQXNCdkIsSUFDRXJCLGtCQUFrQixHQW9CaEJzQixLQUFLLENBcEJQdEIsa0JBQWtCO0lBQ2xCQyxnQkFBZ0IsR0FtQmRxQixLQUFLLENBbkJQckIsZ0JBQWdCO0lBQ2hCQyxlQUFlLEdBa0Jib0IsS0FBSyxDQWxCUHBCLGVBQWU7SUFDZkMsa0JBQWtCLEdBaUJoQm1CLEtBQUssQ0FqQlBuQixrQkFBa0I7SUFDbEJDLGlCQUFpQixHQWdCZmtCLEtBQUssQ0FoQlBsQixpQkFBaUI7SUFDakJDLGFBQWEsR0FlWGlCLEtBQUssQ0FmUGpCLGFBQWE7SUFDYkMsR0FBRyxHQWNEZ0IsS0FBSyxDQWRQaEIsR0FBRztJQUNIQyxXQUFXLEdBYVRlLEtBQUssQ0FiUGYsV0FBVztJQUNYQyxXQUFXLEdBWVRjLEtBQUssQ0FaUGQsV0FBVztJQUNYQyxhQUFhLEdBV1hhLEtBQUssQ0FYUGIsYUFBYTtJQUNiQyxVQUFVLEdBVVJZLEtBQUssQ0FWUFosVUFBVTtJQUNWRSxrQkFBa0IsR0FTaEJVLEtBQUssQ0FUUFYsa0JBQWtCO0lBQ2xCQyxTQUFTLEdBUVBTLEtBQUssQ0FSUFQsU0FBUztJQUNUQyxRQUFRLEdBT05RLEtBQUssQ0FQUFIsUUFBUTtJQUNSQyxlQUFlLEdBTWJPLEtBQUssQ0FOUFAsZUFBZTtJQUNmQyxrQkFBa0IsR0FLaEJNLEtBQUssQ0FMUE4sa0JBQWtCO0lBQ2xCRyxlQUFlLEdBSWJHLEtBQUssQ0FKUEgsZUFBZTtJQUNmQyx5QkFBeUIsR0FHdkJFLEtBQUssQ0FIUEYseUJBQXlCO0lBQ3pCSCxxQkFBcUIsR0FFbkJLLEtBQUssQ0FGUEwscUJBQXFCO0lBQ3JCQyxZQUFZLEdBQ1ZJLEtBQUssQ0FEUEosWUFBWTtFQUdkLElBQUFNLG9CQUFBLEdBQWdDNUIsbUJBQW1CLENBQUN4RixrQkFBa0IsR0FBRzBELE9BQU8sRUFBRSxHQUFHLENBQUM7SUFBQTJELHFCQUFBLEdBQUF4SyxjQUFBLENBQUF1SyxvQkFBQTtJQUEvRUUsUUFBUSxHQUFBRCxxQkFBQTtJQUFFRSxXQUFXLEdBQUFGLHFCQUFBO0VBQzVCLElBQU1HLEtBQUssR0FBR3JELElBQUksQ0FBQzVDLE1BQU0sQ0FBQztFQUUxQixTQUFTa0csUUFBUUEsQ0FBQ0MsUUFBUSxFQUFFO0lBQzFCUCxTQUFTLENBQUMsVUFBQVEsU0FBUztNQUFBLE9BQUE1TCxhQUFBLENBQUFBLGFBQUEsS0FBVTRMLFNBQVMsR0FBS0QsUUFBUTtJQUFBLENBQUcsQ0FBQztFQUN6RDtFQUVBekQsVUFBVSxHQUFBbEksYUFBQSxDQUFBQSxhQUFBLEtBQ0xrSSxVQUFVO0lBQ2IyRCxLQUFLLEVBQUU7TUFBRUMsTUFBTSxFQUFFO0lBQUUsQ0FBQztJQUNwQkMsT0FBTyxFQUFFO0VBQUksRUFDZCxFQUFDOztFQUVGLElBQUFDLHFCQUFBLEdBTUkvSSxvQkFBb0IsQ0FBQztNQUN2QnVFLE1BQU0sRUFBRTJDLEdBQUc7TUFDWHhDLE9BQU8sRUFBUEEsT0FBTztNQUNQRSxrQkFBa0IsRUFBbEJBLGtCQUFrQjtNQUNsQkcsWUFBWSxFQUFaQSxZQUFZO01BQ1pDLGFBQWEsRUFBYkEsYUFBYTtNQUNiQyxVQUFVLEVBQVZBLFVBQVU7TUFDVkUsSUFBSSxFQUFKQSxJQUFJO01BQ0pRLFVBQVUsRUFBVkEsVUFBVTtNQUNWRSxxQkFBcUIsRUFBckJBLHFCQUFxQjtNQUNyQkgsS0FBSyxFQUFMQSxLQUFLO01BQ0x1QixhQUFhLEVBQWJBLGFBQWE7TUFDYnpCLFNBQVMsRUFBRXFCLGdCQUFnQixJQUFJckIsU0FBUztNQUN4Q0ksVUFBVSxFQUFWQSxVQUFVO01BQ1ZFLFlBQVksRUFBWkEsWUFBWTtNQUNaa0QsV0FBVyxFQUFFLFNBQUFBLFlBQUMxTixLQUFLO1FBQUEsT0FBS21OLFFBQVEsQ0FBQztVQUFFZixRQUFRLEVBQUVwTTtRQUFNLENBQUMsQ0FBQztNQUFBO01BQ3JEMEssTUFBTSxFQUFOQSxNQUFNO01BQ05PLEtBQUssRUFBTEEsS0FBSztNQUNMQyxtQkFBbUIsRUFBbkJBLG1CQUFtQjtNQUNuQnlDLFNBQVMsRUFBRTtJQUNiLENBQUMsQ0FBQztJQXpCQUMsY0FBYyxHQUFBSCxxQkFBQSxDQUFkRyxjQUFjO0lBQ2Q1RyxlQUFlLEdBQUF5RyxxQkFBQSxDQUFmekcsZUFBZTtJQUNmNkcsWUFBWSxHQUFBSixxQkFBQSxDQUFaSSxZQUFZO0lBQ1pDLGlCQUFpQixHQUFBTCxxQkFBQSxDQUFqQkssaUJBQWlCO0lBQ2pCQyxvQkFBb0IsR0FBQU4scUJBQUEsQ0FBcEJNLG9CQUFvQjtFQXVCdEIsSUFBTUMsZUFBZSxHQUFHaEgsZUFBZSxhQUFmQSxlQUFlLHVCQUFmQSxlQUFlLENBQUVNLGFBQWE7RUFDdEQ7RUFDQSxJQUFNMkcsSUFBSSxNQUFBakcsTUFBQSxDQUFNaEIsZUFBZSxhQUFmQSxlQUFlLGdCQUFBb0Isc0JBQUEsR0FBZnBCLGVBQWUsQ0FBRU8sUUFBUSxjQUFBYSxzQkFBQSx1QkFBekJBLHNCQUFBLENBQTJCaUMsVUFBVSxPQUFBckMsTUFBQSxDQUFJaEIsZUFBZSxhQUFmQSxlQUFlLGdCQUFBcUIsc0JBQUEsR0FBZnJCLGVBQWUsQ0FBRU8sUUFBUSxjQUFBYyxzQkFBQSx1QkFBekJBLHNCQUFBLENBQTJCYixTQUFTLENBQUU7RUFDL0YsSUFBTTBHLFVBQVUsR0FBRyxDQUFBbEgsZUFBZSxhQUFmQSxlQUFlLHVCQUFmQSxlQUFlLENBQUVrRCxTQUFTLEtBQUksSUFBSTtFQUNyRCxJQUFNaUUsa0JBQWtCLEdBQUdsSixlQUFlLEVBQUFxRCxzQkFBQSxHQUFDdEIsZUFBZSxDQUFDLFVBQVUsQ0FBQyxjQUFBc0Isc0JBQUEsdUJBQTNCQSxzQkFBQSxDQUE2QmQsU0FBUyxDQUFDOztFQUdsRjtFQUNBLElBQU00RyxjQUFjLEdBQUcsQ0FBQXBILGVBQWUsYUFBZkEsZUFBZSxnQkFBQXVCLHNCQUFBLEdBQWZ2QixlQUFlLENBQUVPLFFBQVEsY0FBQWdCLHNCQUFBLHVCQUF6QkEsc0JBQUEsQ0FBMkJmLFNBQVMsS0FBSThDLFVBQVU7RUFDekU7RUFDQSxJQUFJK0QsSUFBSSxHQUFHLENBQUFySCxlQUFlLGFBQWZBLGVBQWUsZ0JBQUF3QixzQkFBQSxHQUFmeEIsZUFBZSxDQUFFTyxRQUFRLGNBQUFpQixzQkFBQSx1QkFBekJBLHNCQUFBLENBQTJCb0QsR0FBRyxLQUFJM0MsTUFBTTtFQUNuRCxJQUFNcUYsZ0JBQWdCLEdBQUcsQ0FBQyxFQUFFeEUsWUFBWSxJQUFJWixjQUFjLElBQUtvQixVQUFVLEtBQUtoRixlQUFnQjtFQUFJO0VBQzlGK0ksSUFBSSxLQUFLLFFBQVEsSUFBTUEsSUFBSSxDQUFDeEcsUUFBUSxDQUFDaUMsWUFBWSxDQUFFLENBQUMsQ0FBQyxFQUFDOztFQUUxRCxJQUFBeUUsY0FBQSxHQVdJckssYUFBYSxDQUFDO01BQ2hCK0UsTUFBTSxFQUFOQSxNQUFNO01BQ05DLGNBQWMsRUFBRW9GLGdCQUFnQixHQUFHcEYsY0FBYyxHQUFHLElBQUk7TUFDeERqQyxNQUFNLEVBQU5BLE1BQU07TUFDTnVILE1BQU0sRUFBRTVFLEVBQUU7TUFDVndFLGNBQWMsRUFBZEEsY0FBYztNQUNkOUMsa0JBQWtCLEVBQWxCQSxrQkFBa0I7TUFDbEJqQixVQUFVLEVBQVZBLFVBQVU7TUFDVlAsWUFBWSxFQUFFd0UsZ0JBQWdCLEdBQUd4RSxZQUFZLEdBQUcsSUFBSTtNQUNwRE0sS0FBSyxFQUFMQSxLQUFLO01BQ0xKLGVBQWUsRUFBZkEsZUFBZTtNQUNmVSxNQUFNLEVBQU5BLE1BQU07TUFDTlEsbUJBQW1CLEVBQW5CQTtJQUNGLENBQUMsQ0FBQztJQUFBdUQsb0JBQUEsR0FBQUYsY0FBQSxDQXZCQTNCLEtBQUs7SUFDSDhCLGdCQUFnQixHQUFBRCxvQkFBQSxDQUFoQkMsZ0JBQWdCO0lBQ2hCQyxrQkFBa0IsR0FBQUYsb0JBQUEsQ0FBbEJFLGtCQUFrQjtJQUNEQyxnQkFBZ0IsR0FBQUgsb0JBQUEsQ0FBakNwQyxlQUFlO0lBQ2Z3QyxxQkFBcUIsR0FBQUosb0JBQUEsQ0FBckJJLHFCQUFxQjtJQUFBQyxxQkFBQSxHQUFBUCxjQUFBLENBRXZCUSxPQUFPO0lBQ01DLGVBQWUsR0FBQUYscUJBQUEsQ0FBMUJHLFNBQVM7SUFDVEMsVUFBVSxHQUFBSixxQkFBQSxDQUFWSSxVQUFVO0VBaUJkLElBQU1DLGdCQUFnQixHQUFHckwsZUFBZSxDQUFDO0lBQUU0RyxNQUFNLEVBQU5BLE1BQU07SUFBRU4sS0FBSyxFQUFMQSxLQUFLO0lBQUU2RCxJQUFJLEVBQUpBLElBQUk7SUFBRW1CLFVBQVUsRUFBRVQsa0JBQWtCO0lBQUVVLE9BQU8sRUFBRW5HLGNBQWMsYUFBZEEsY0FBYyxnQkFBQVQscUJBQUEsR0FBZFMsY0FBYyxDQUFFb0csS0FBSyxjQUFBN0cscUJBQUEsdUJBQXJCQSxxQkFBQSxDQUF1QjhHO0VBQUssQ0FBQyxDQUFDO0VBQ3ZJLElBQUFDLHFCQUFBLEdBS0lMLGdCQUFnQixDQUpsQnZDLEtBQUs7SUFDVTZDLGFBQWEsR0FBQUQscUJBQUEsQ0FBMUJFLFdBQVc7SUFDR0MsZUFBZSxHQUFBSCxxQkFBQSxDQUE3QkksWUFBWTtFQUloQixJQUFNQyxpQkFBaUIsR0FBRzdMLHFCQUFxQixDQUFDO0lBQzlDOEwsUUFBUSxFQUFFM0QsU0FBUztJQUNuQnJJLGVBQWUsRUFBRXFMLGdCQUFnQjtJQUNqQ1ksUUFBUSxFQUFFLFNBQUFBLFNBQUEsRUFBTTtNQUNkN0ssS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDeEosSUFBSSxDQUFDO1FBQUEsT0FBTXNMLGVBQWUsYUFBZkEsZUFBZSx1QkFBZkEsZUFBZSxDQUFFZ0osY0FBYyxDQUFDLENBQUM7TUFBQSxFQUFDO0lBQzFEO0VBQ0YsQ0FBQyxDQUFDO0VBRUYsSUFDRUMsb0JBQW9CLEdBUWxCSixpQkFBaUIsQ0FSbkJJLG9CQUFvQjtJQUNwQkMsaUJBQWlCLEdBT2ZMLGlCQUFpQixDQVBuQkssaUJBQWlCO0lBQ2pCQyxrQkFBa0IsR0FNaEJOLGlCQUFpQixDQU5uQk0sa0JBQWtCO0lBQ1BDLGVBQWUsR0FLeEJQLGlCQUFpQixDQUxuQlEsU0FBUztJQUNUQyxhQUFhLEdBSVhULGlCQUFpQixDQUpuQlMsYUFBYTtJQUNiQyxXQUFXLEdBR1RWLGlCQUFpQixDQUhuQlUsV0FBVztJQUNYQyxVQUFVLEdBRVJYLGlCQUFpQixDQUZuQlcsVUFBVTtJQUNWQyxpQkFBaUIsR0FDZlosaUJBQWlCLENBRG5CWSxpQkFBaUI7RUFHbkIsSUFBTUMsT0FBTyxHQUFHLFNBQVZBLE9BQU9BLENBQUEsRUFBUztJQUNwQnhCLFVBQVUsQ0FBQyxDQUFDO0lBQ1pwSCxPQUFPLENBQUM2SSxHQUFHLDJEQUEyRDFILE1BQU0sQ0FBQztJQUM3RWtFLFFBQVEsQ0FBQztNQUNQeEIsYUFBYSxFQUFFLEtBQUs7TUFDcEJDLEdBQUcsRUFBRTNDO0lBQ1AsQ0FBQyxDQUFDO0lBQ0YvRCxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUN4SixJQUFJLENBQUMsWUFBTTtNQUNwQnlSLFFBQVEsQ0FBQztRQUNQN0Isa0JBQWtCLEVBQUVBLGtCQUFrQixHQUFHLENBQUM7UUFBRTtRQUM1Q0ssYUFBYSxFQUFFO01BQ2pCLENBQUMsQ0FBQztJQUNKLENBQUMsQ0FBQztFQUNKLENBQUM7RUFFRCxJQUFBaUYsb0JBQUEsR0FBMkQzTSxtQkFBbUIsQ0FBQztNQUM3RTZMLFFBQVEsRUFBRTNELFNBQVM7TUFDbkJySSxlQUFlLEVBQUVxTCxnQkFBZ0I7TUFDakN1QixPQUFPLEVBQVBBO0lBQ0YsQ0FBQyxDQUFDO0lBSmlCRyxjQUFjLEdBQUFELG9CQUFBLENBQXpCUCxTQUFTO0lBQWtCUyxtQkFBbUIsR0FBQUYsb0JBQUEsQ0FBbkJFLG1CQUFtQjs7RUFNdEQ7RUFDQTtFQUNBOU4sS0FBSyxDQUFDK04sU0FBUyxDQUFDLFlBQU07SUFDcEIsSUFBSTNDLGNBQWMsSUFBSSxDQUFDRCxrQkFBa0IsRUFBRTtNQUN6Q2hELGdCQUFnQixJQUFJQSxnQkFBZ0IsQ0FDbENpRCxjQUFjLEVBQ2RwSCxlQUFlLENBQUNpRSxLQUFLLEVBQ3JCMEUsZUFBZSxFQUNmRixhQUFhLEVBQ2JRLG9CQUFvQixFQUNwQmEsbUJBQ0YsQ0FBQztJQUNIO0VBQ0YsQ0FBQyxFQUFDLENBQUMxQyxjQUFjLEVBQUVwSCxlQUFlLENBQUNpRSxLQUFLLEVBQUUwRSxlQUFlLEVBQUVGLGFBQWEsQ0FBQyxDQUFDO0VBRTFFek0sS0FBSyxDQUFDK04sU0FBUyxDQUFDLFlBQU07SUFDcEIsSUFBSVgsZUFBZSxFQUFFO01BQ25CeEYscUJBQXFCLGFBQXJCQSxxQkFBcUIsZUFBckJBLHFCQUFxQixDQUFHLFVBQUFvRyxnQkFBZ0I7UUFBQSxVQUFBaEosTUFBQSxDQUFBbkgsa0JBQUEsQ0FBUW1RLGdCQUFnQixJQUFFNUMsY0FBYztNQUFBLENBQUMsQ0FBQztJQUNwRixDQUFDLE1BQU07TUFDTHhELHFCQUFxQixhQUFyQkEscUJBQXFCLGVBQXJCQSxxQkFBcUIsQ0FBRyxVQUFBb0csZ0JBQWdCO1FBQUEsT0FBSUEsZ0JBQWdCLENBQUN6UCxNQUFNLENBQUMsVUFBQWlOLE1BQU07VUFBQSxPQUFJQSxNQUFNLEtBQUtKLGNBQWM7UUFBQSxFQUFDO01BQUEsRUFBQztJQUMzRztFQUNGLENBQUMsRUFBRSxDQUFDZ0MsZUFBZSxDQUFDLENBQUM7RUFFckJwTixLQUFLLENBQUMrTixTQUFTLENBQUMsWUFBTTtJQUNwQixJQUFJRixjQUFjLEVBQUU7TUFDbEJsRyxvQkFBb0IsYUFBcEJBLG9CQUFvQixlQUFwQkEsb0JBQW9CLENBQUcsVUFBQXFHLGdCQUFnQjtRQUFBLFVBQUFoSixNQUFBLENBQUFuSCxrQkFBQSxDQUFRbVEsZ0JBQWdCLElBQUU1QyxjQUFjO01BQUEsQ0FBQyxDQUFDO0lBQ25GLENBQUMsTUFBTTtNQUNMekQsb0JBQW9CLGFBQXBCQSxvQkFBb0IsZUFBcEJBLG9CQUFvQixDQUFHLFVBQUFxRyxnQkFBZ0I7UUFBQSxPQUFJQSxnQkFBZ0IsQ0FBQ3pQLE1BQU0sQ0FBQyxVQUFBaU4sTUFBTTtVQUFBLE9BQUlBLE1BQU0sS0FBS0osY0FBYztRQUFBLEVBQUM7TUFBQSxFQUFDO0lBQzFHO0VBQ0YsQ0FBQyxFQUFFLENBQUN5QyxjQUFjLENBQUMsQ0FBQztFQUVwQixJQUFNSSxVQUFVLEdBQUczQyxnQkFBZ0IsR0FBR08scUJBQXFCLEdBQUc1RixNQUFNO0VBQ3BFLElBQUlpSSxjQUFjO0VBRWxCLElBQUksQ0FBQzVDLGdCQUFnQixJQUFJLENBQUMzQyxhQUFhLEVBQUU7SUFBRTtJQUN6Q3dCLFFBQVEsQ0FBQztNQUFFeEIsYUFBYSxFQUFFO0lBQUssQ0FBQyxDQUFDO0VBQ25DO0VBRUEzSSxLQUFLLENBQUMrTixTQUFTLENBQUMsWUFBTTtJQUNwQmpKLE9BQU8sQ0FBQzZJLEdBQUcsK0JBQStCO01BQUUxSixNQUFNLEVBQU5BLE1BQU07TUFBRW1ELEtBQUssRUFBTEEsS0FBSztNQUFFQyxVQUFVLEVBQVZBLFVBQVU7TUFBRUMsVUFBVSxFQUFWQTtJQUFXLENBQUMsQ0FBQztJQUVwRixJQUFJZ0UsZ0JBQWdCLEVBQUU7TUFBRTtNQUN0Qm5CLFFBQVEsQ0FBQztRQUFFeEIsYUFBYSxFQUFFLEtBQUs7UUFBRUwsa0JBQWtCLEVBQUVBLGtCQUFrQixHQUFHO01BQUUsQ0FBQyxDQUFDO0lBQ2hGO0VBQ0YsQ0FBQyxFQUFFLENBQUNyRSxNQUFNLEVBQUVtRCxLQUFLLEVBQUVDLFVBQVUsRUFBRUMsVUFBVSxDQUFDLENBQUM7RUFFM0N0SCxLQUFLLENBQUMrTixTQUFTLENBQUMsWUFBTTtJQUNwQixJQUFJLENBQUN6TSxPQUFPLENBQUM0RixTQUFTLEVBQUVxQixnQkFBZ0IsQ0FBQyxFQUFFO01BQ3pDO01BQ0E0QixRQUFRLENBQUM7UUFBRTVCLGdCQUFnQixFQUFFckI7TUFBVSxDQUFDLENBQUM7SUFDM0M7RUFDRixDQUFDLEVBQUUsQ0FBQ0EsU0FBUyxDQUFDLENBQUM7RUFFZmxILEtBQUssQ0FBQytOLFNBQVMsQ0FBQyxZQUFNO0lBQUU7SUFDdEIsSUFBSSxDQUFDcEYsYUFBYSxJQUFJK0MsZ0JBQWdCLEVBQUc7TUFDdkM1RyxPQUFPLENBQUM2SSxHQUFHLHNDQUFBM0ksTUFBQSxDQUFzQzBHLGdCQUFnQix5QkFBQTFHLE1BQUEsQ0FBc0JpSixVQUFVLENBQUUsQ0FBQztNQUNwRzlELFFBQVEsQ0FBQztRQUFFeEIsYUFBYSxFQUFFLElBQUk7UUFBRUMsR0FBRyxFQUFFcUY7TUFBVyxDQUFDLENBQUM7SUFDcEQ7RUFDRixDQUFDLEVBQUUsQ0FBQ3ZDLGdCQUFnQixDQUFDLENBQUM7RUFFdEIxTCxLQUFLLENBQUMrTixTQUFTLENBQUMsWUFBTTtJQUFFO0lBQ3RCLElBQUluQyxnQkFBZ0IsS0FBS3ZDLGVBQWUsRUFBRTtNQUN4Q2MsUUFBUSxDQUFDO1FBQUVkLGVBQWUsRUFBRXVDO01BQWlCLENBQUMsQ0FBQztJQUNqRDtFQUNGLENBQUMsRUFBRSxDQUFDQSxnQkFBZ0IsRUFBRXZDLGVBQWUsQ0FBQyxDQUFDO0VBRXZDckosS0FBSyxDQUFDK04sU0FBUyxDQUFDLFlBQU07SUFBQSxJQUFBSSxzQkFBQTtJQUFFO0lBQ3RCLElBQU1uUixLQUFLLEdBQUdnSCxlQUFlLGFBQWZBLGVBQWUsZ0JBQUFtSyxzQkFBQSxHQUFmbkssZUFBZSxDQUFFb0ssY0FBYyxjQUFBRCxzQkFBQSx1QkFBL0JBLHNCQUFBLENBQWtDeE4sV0FBVyxDQUFDO0lBRTVELElBQUkzRCxLQUFLLEVBQUU7TUFBRTtNQUNYLElBQU1vUixjQUFjLEdBQUdwSyxlQUFlLGFBQWZBLGVBQWUsdUJBQWZBLGVBQWUsQ0FBRW9LLGNBQWM7TUFDdEQsSUFBTTVHLGFBQVksR0FBRzFGLGVBQWUsQ0FBQ2tDLGVBQWUsQ0FBQztNQUNyRCxJQUFNcUssT0FBTyxHQUFHdE0sa0JBQWtCLENBQUNxTSxjQUFjLEVBQUUxRyxNQUFNLEVBQUVGLGFBQVksRUFBRTBDLEtBQUssQ0FBQztNQUMvRSxJQUFNb0UsYUFBYSxHQUFHRixjQUFjLENBQUN4Tix5QkFBeUIsQ0FBQztNQUMvRG9HLGVBQWUsSUFBSUEsZUFBZSxDQUFDcUgsT0FBTyxFQUFFQyxhQUFhLEVBQUVGLGNBQWMsQ0FBQztJQUM1RTtFQUNGLENBQUMsRUFBRSxDQUFDcEssZUFBZSxhQUFmQSxlQUFlLGdCQUFBMEIsc0JBQUEsR0FBZjFCLGVBQWUsQ0FBRW9LLGNBQWMsY0FBQTFJLHNCQUFBLHVCQUEvQkEsc0JBQUEsQ0FBa0MvRSxXQUFXLENBQUMsQ0FBQyxDQUFDO0VBRXBELElBQUlxRCxlQUFlLENBQUNpRSxLQUFLLElBQUlqRSxlQUFlLENBQUN1SyxPQUFPLEVBQUU7SUFDcERMLGNBQWMsTUFBQWxKLE1BQUEsQ0FBTWhCLGVBQWUsQ0FBQ2lFLEtBQUssUUFBQWpELE1BQUEsQ0FBS2hCLGVBQWUsQ0FBQ3VLLE9BQU8sQ0FBRTtJQUN2RXhELG9CQUFvQixDQUFDeUQsV0FBVyxDQUFDeEssZUFBZSxDQUFDd0QsWUFBWSxFQUFFMEcsY0FBYyxDQUFDO0VBQ2hGLENBQUMsTUFBTTtJQUNMQSxjQUFjLHdDQUF3QztFQUN4RDs7RUFFQTtFQUNBLFNBQVNPLG9CQUFvQkEsQ0FBQSxFQUFHO0lBQzlCLElBQU1DLHdCQUF3QixHQUFHMU0sMkJBQTJCLENBQUM7TUFDM0RXLEtBQUssRUFBTEEsS0FBSztNQUNMNkUsWUFBWSxFQUFFeEQsZUFBZSxDQUFDd0QsWUFBWTtNQUMxQ3FELFlBQVksRUFBWkEsWUFBWTtNQUNaRSxvQkFBb0IsRUFBcEJBO0lBQ0YsQ0FBQyxDQUFDO0lBRUYsb0JBQU8vSyxLQUFBLENBQUEyTyxhQUFBLENBQUNsTixpQkFBaUIsRUFBQWpFLFFBQUEsS0FBS2tSLHdCQUF3QjtNQUFFOUwsS0FBSyxFQUFFQSxLQUFNO01BQUNnTSxZQUFZLEVBQUV4RjtJQUFTLEVBQUUsQ0FBQztFQUNsRztFQUVBLFNBQVN5RixXQUFXQSxDQUFBLEVBQUc7SUFDckI7SUFDQTFFLFFBQVEsQ0FBQztNQUFFZixRQUFRLEVBQUU7SUFBSyxDQUFDLENBQUM7RUFDOUI7O0VBRUE7RUFDQSxJQUFNMEYsV0FBVyxHQUFHOUssZUFBZSxhQUFmQSxlQUFlLGdCQUFBMkIsdUJBQUEsR0FBZjNCLGVBQWUsQ0FBRU8sUUFBUSxjQUFBb0IsdUJBQUEsdUJBQXpCQSx1QkFBQSxDQUEyQjBCLFVBQVU7RUFDekQsSUFBTTBILFFBQVEsR0FBR3hJLFdBQVcsQ0FBQztJQUFFYyxVQUFVLEVBQUV5SDtFQUFZLENBQUMsQ0FBQztFQUN6RCxJQUFNRSxTQUFTLEdBQUcsQ0FBQ0QsUUFBUSxhQUFSQSxRQUFRLHVCQUFSQSxRQUFRLENBQUVDLFNBQVMsS0FBSyxLQUFLO0VBQ2hELElBQU1DLFVBQVUsR0FBRzFHLGdCQUFnQixJQUFJckIsU0FBUztFQUVoRCxJQUFNZ0ksUUFBUSxHQUFJSixXQUFXLEtBQUssS0FBTTtFQUN4QyxJQUFNSyxVQUFVLEdBQUdELFFBQVEsR0FBRyxHQUFHLEdBQUcsQ0FBQyxFQUFDO0VBQ3RDLElBQU1FLGNBQWMsR0FBR3BGLFFBQVEsR0FBR21GLFVBQVU7RUFFNUMsSUFBTUUsS0FBSyxHQUFHLElBQUk7RUFDbEIsSUFBQUMsYUFBQSxHQU9Jdk8sWUFBWSxDQUFDO01BQUVzTyxLQUFLLEVBQUxBO0lBQU0sQ0FBQyxDQUFDO0lBQUFFLG1CQUFBLEdBQUFELGFBQUEsQ0FOekIxRixLQUFLO0lBQ0g0RixPQUFPLEdBQUFELG1CQUFBLENBQVBDLE9BQU87SUFBRUMsT0FBTyxHQUFBRixtQkFBQSxDQUFQRSxPQUFPO0lBQUVDLFNBQVMsR0FBQUgsbUJBQUEsQ0FBVEcsU0FBUztJQUFFQyxZQUFZLEdBQUFKLG1CQUFBLENBQVpJLFlBQVk7SUFBQUMscUJBQUEsR0FBQU4sYUFBQSxDQUUzQ3ZELE9BQU87SUFDTDhELFVBQVUsR0FBQUQscUJBQUEsQ0FBVkMsVUFBVTtJQUFFQyxZQUFZLEdBQUFGLHFCQUFBLENBQVpFLFlBQVk7SUFBRUMsZUFBZSxHQUFBSCxxQkFBQSxDQUFmRyxlQUFlO0VBSTdDLElBQU1DLFFBQVEsR0FBR2hRLEtBQUssQ0FBQ2lRLE9BQU8sQ0FBQztJQUFBLE9BQU87TUFDcENDLFVBQVUsRUFBRSxXQUFXO01BQ3ZCbEcsUUFBUSxLQUFBaEYsTUFBQSxDQUFLbUwsSUFBSSxDQUFDQyxLQUFLLENBQUNoQixjQUFjLEdBQUcsR0FBRyxDQUFDO0lBQy9DLENBQUM7RUFBQSxDQUFDLEVBQUUsQ0FBQ0EsY0FBYyxDQUFDLENBQUM7RUFFckIsSUFBTWlCLFlBQVksR0FBR3JRLEtBQUssQ0FBQ2lRLE9BQU8sQ0FBQztJQUFBLE9BQU87TUFDeENDLFVBQVUsRUFBRSxXQUFXO01BQ3ZCbEcsUUFBUSxLQUFBaEYsTUFBQSxDQUFLb0ssY0FBYztJQUM3QixDQUFDO0VBQUEsQ0FBQyxFQUFFLENBQUNBLGNBQWMsQ0FBQyxDQUFDO0VBRXJCLElBQU1rQixjQUFjLGdCQUFHdFEsS0FBQSxDQUFBMk8sYUFBQSxDQUFDdk0sS0FBSyxRQUFFOEwsY0FBc0IsQ0FBQztFQUN0RCxJQUFJcUMsbUJBQW1CLEdBQUdqSyxrQkFBa0I7RUFFNUMsSUFBSUEsa0JBQWtCLEtBQUsvSSxTQUFTLEVBQUU7SUFBRTtJQUN0Q2dULG1CQUFtQixHQUFHLENBQUNwRixrQkFBa0I7RUFDM0M7RUFFQSxJQUFNcUYsVUFBVSxHQUFHLENBQUNyRixrQkFBa0I7RUFDdEMsSUFBTXNGLGVBQWUsR0FBRyxDQUFDdEYsa0JBQWtCO0VBQzNDLElBQU11RixlQUFlLEdBQUc5RixjQUFjLEdBQUduRSxZQUFZLEdBQUdDLGFBQWE7RUFDckUsSUFBTWlLLDRCQUE0QixHQUFHO0lBQ25DekssY0FBYyxFQUFFb0YsZ0JBQWdCLEdBQUdwRixjQUFjLEdBQUcsSUFBSTtJQUN4REMsU0FBUyxFQUFUQSxTQUFTO0lBQ1R5SyxlQUFlLEVBQUUzQixVQUFVO0lBQzNCdUIsVUFBVSxFQUFWQSxVQUFVO0lBQ1ZDLGVBQWUsRUFBZkEsZUFBZTtJQUNmOUosVUFBVSxFQUFWQSxVQUFVO0lBQ1Y7SUFDQWlFLGNBQWMsRUFBZEEsY0FBYztJQUNkOUQsWUFBWSxFQUFFd0UsZ0JBQWdCLEdBQUd4RSxZQUFZLEdBQUcsSUFBSTtJQUNwRFMscUJBQXFCLEVBQXJCQSxxQkFBcUI7SUFDckI7SUFDQW1KLGVBQWUsRUFBZkEsZUFBZTtJQUNmMU0sZUFBZSxFQUFmQSxlQUFlO0lBQ2Y4RyxpQkFBaUIsRUFBakJBLGlCQUFpQjtJQUNqQmtCLGVBQWUsRUFBZkEsZUFBZTtJQUNmbEUsZUFBZSxFQUFFK0ksZ0JBQWdCO0lBQ2pDQyxjQUFjLEVBQUU1RyxLQUFLLEdBQUc3SCxZQUFZLEdBQUdFLFlBQVk7SUFDbkR3TyxjQUFjLEVBQUVoQyxRQUFRO0lBQ3hCOUcsS0FBSyxFQUFFaUcsY0FBYztJQUNyQnJDLHFCQUFxQixFQUFFakQ7RUFDekIsQ0FBQzs7RUFFRDtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBQ0UsU0FBU2lJLGdCQUFnQkEsQ0FBQ0csWUFBWSxFQUFFQyxLQUFLLEVBQUFDLEtBQUEsRUFBNEQ7SUFBQSxJQUFBQyxnQkFBQSxHQUFBRCxLQUFBLENBQXhERSxVQUFVO01BQVZBLFVBQVUsR0FBQUQsZ0JBQUEsY0FBRyxJQUFJLEdBQUFBLGdCQUFBO01BQUFFLGtCQUFBLEdBQUFILEtBQUEsQ0FBRUksWUFBWTtNQUFaQSxZQUFZLEdBQUFELGtCQUFBLGNBQUcsSUFBSSxHQUFBQSxrQkFBQTtNQUFBRSxXQUFBLEdBQUFMLEtBQUEsQ0FBRXRILEtBQUs7TUFBTEEsS0FBSyxHQUFBMkgsV0FBQSxjQUFHLElBQUksR0FBQUEsV0FBQTtJQUNuRyxJQUFNQyxtQkFBbUIsR0FBQS9TLGFBQUEsS0FBUTZLLGtCQUFrQixDQUFFO0lBRXJELElBQUkySCxLQUFLLEVBQUU7TUFDVCxJQUFJTyxtQkFBbUIsQ0FBQzViLGNBQWMsQ0FBQ29iLFlBQVksQ0FBQyxFQUFFO1FBQ3BELE9BQU9RLG1CQUFtQixDQUFDUixZQUFZLENBQUM7TUFDMUM7SUFDRixDQUFDLE1BQU07TUFDTFEsbUJBQW1CLENBQUNSLFlBQVksQ0FBQyxHQUFHO1FBQUVJLFVBQVUsRUFBVkEsVUFBVTtRQUFFRSxZQUFZLEVBQVpBLFlBQVk7UUFBRTFILEtBQUssRUFBTEE7TUFBTSxDQUFDLEVBQUM7SUFDMUU7O0lBRUEsSUFBTTZILG1CQUFtQixHQUFHLENBQUMsQ0FBQ2hjLE1BQU0sQ0FBQ3NGLElBQUksQ0FBQ3lXLG1CQUFtQixDQUFDLENBQUNwWCxNQUFNO0lBRXJFLElBQUlxTyxrQkFBa0IsSUFBSWdKLG1CQUFtQixFQUFFO01BQzdDM0osZUFBZSxJQUFJQSxlQUFlLENBQUNSLFVBQVUsRUFBRSxDQUFDbUssbUJBQW1CLENBQUM7TUFDcEV0SCxRQUFRLENBQUM7UUFBRTFCLGtCQUFrQixFQUFFZ0o7TUFBb0IsQ0FBQyxDQUFDO0lBQ3ZEO0lBRUEsSUFBSSxDQUFDblEsT0FBTyxDQUFDa1EsbUJBQW1CLEVBQUVsSSxrQkFBa0IsQ0FBQyxFQUFFO01BQ3JEYSxRQUFRLENBQUM7UUFBRWIsa0JBQWtCLEVBQUVrSTtNQUFvQixDQUFDLENBQUM7SUFDdkQ7RUFDRjs7RUFFQTtBQUNGO0FBQ0E7QUFDQTtBQUNBO0VBQ0UsU0FBU0UsY0FBY0EsQ0FBQ0MsUUFBUSxFQUFFQyxNQUFNLEVBQUU7SUFDeEMsSUFBTXZHLElBQUksR0FBR3NHLFFBQVEsR0FBRyxFQUFFO0lBQzFCLElBQU1FLE1BQU0sR0FBR3hHLElBQUksQ0FBQ2pSLE1BQU07SUFDMUIsSUFBTTBYLEtBQUssR0FBR0YsTUFBTSxDQUFDRyxTQUFTLENBQUMsVUFBQ0MsS0FBSyxFQUFFQyxHQUFHLEVBQUs7TUFDN0MsSUFBSUEsR0FBRyxHQUFHLENBQUMsRUFBRTtRQUNYLElBQUlELEtBQUssQ0FBQ0UsU0FBUyxDQUFDLENBQUMsRUFBRUwsTUFBTSxDQUFDLEtBQUt4RyxJQUFJLEVBQUU7VUFDdkMsSUFBTThHLFFBQVEsR0FBR0gsS0FBSyxDQUFDSCxNQUFNLENBQUM7VUFFOUIsSUFBS00sUUFBUSxHQUFHLEdBQUcsSUFBTUEsUUFBUSxHQUFHLEdBQUksRUFBRTtZQUN4QyxPQUFPLElBQUk7VUFDYjtRQUNGO01BQ0Y7TUFDQSxPQUFPLEtBQUs7SUFDZCxDQUFDLENBQUM7SUFDRixPQUFPTCxLQUFLO0VBQ2Q7RUFFQSxTQUFTTSxXQUFXQSxDQUFBLEVBQUc7SUFBQSxJQUFBQyxxQkFBQTtJQUNyQjtJQUNBLElBQU1DLFFBQVEsR0FBR3RPLGVBQWUsYUFBZkEsZUFBZSxnQkFBQXFPLHFCQUFBLEdBQWZyTyxlQUFlLENBQUVrRCxTQUFTLGNBQUFtTCxxQkFBQSxlQUExQkEscUJBQUEsQ0FBNEI3TixTQUFTLEdBQUdSLGVBQWUsQ0FBQ2tELFNBQVMsQ0FBQzFDLFNBQVMsQ0FBQytOLFdBQVcsQ0FBQyxDQUFDLEdBQUcsRUFBRTtJQUMvRyxVQUFBdk4sTUFBQSxDQUFVbUIsU0FBUyxPQUFBbkIsTUFBQSxDQUFJc04sUUFBUTtFQUNqQztFQUVBLElBQU1FLFFBQVEsR0FBR0osV0FBVyxDQUFDLENBQUM7RUFDOUIsSUFBTUssR0FBRyxHQUFHekgsZUFBZSxhQUFmQSxlQUFlLHVCQUFmQSxlQUFlLENBQUV5SCxHQUFHOztFQUVoQztFQUNBLElBQUFDLFFBQUEsR0FLSXJTLE9BQU8sQ0FBQztNQUNWb1MsR0FBRyxFQUFIQSxHQUFHO01BQ0hyTCxLQUFLLEVBQUxBLEtBQUs7TUFDTHVMLE9BQU8sRUFBRTdKLFdBQVc7TUFDcEI4SixNQUFNLEVBQUFuVSxhQUFBLENBQUFBLGFBQUE7UUFDSjZMLEtBQUssRUFBRTtVQUFFQyxNQUFNLEVBQUU7UUFBRTtNQUFDLEdBQ2pCckUsY0FBYyxhQUFkQSxjQUFjLHVCQUFkQSxjQUFjLENBQUUwTSxNQUFNO1FBQ3pCQyxnQkFBZ0IsRUFBRSxJQUFJO1FBQ3RCdkcsS0FBSyxFQUFFcEcsY0FBYyxhQUFkQSxjQUFjLHVCQUFkQSxjQUFjLENBQUVvRyxLQUFLO1FBQzVCO1FBQ0F3RyxPQUFPLEVBQUUsRUFBQWxOLFdBQUEsR0FBQWUsVUFBVSxjQUFBZixXQUFBLHVCQUFWQSxXQUFBLENBQVltTixhQUFhLE9BQUFsTixZQUFBLEdBQUljLFVBQVUsY0FBQWQsWUFBQSx1QkFBVkEsWUFBQSxDQUFZaU4sT0FBTyxLQUFJLEtBQUs7UUFDbEVwTCxNQUFNLEVBQU5BO01BQU0sRUFDUDtNQUNEc0wsTUFBTSxFQUFFbE0sWUFBWTtNQUNwQm1NLEtBQUssRUFBRS9NLGNBQWMsYUFBZEEsY0FBYyxnQkFBQUosb0JBQUEsR0FBZEksY0FBYyxDQUFFZ04sSUFBSSxjQUFBcE4sb0JBQUEsdUJBQXBCQSxvQkFBQSxDQUFzQm1OLEtBQUs7TUFDbEMzRyxLQUFLLEVBQUVwRyxjQUFjLGFBQWRBLGNBQWMsdUJBQWRBLGNBQWMsQ0FBRW9HLEtBQUs7TUFDNUI2RyxNQUFNLEVBQUV0SCxxQkFBcUI7TUFDN0IyRyxRQUFRLEVBQVJBLFFBQVE7TUFDUnZILElBQUksRUFBSkE7SUFDRixDQUFDLENBQUM7SUF2Qk9tSSxTQUFTLEdBQUFWLFFBQUEsQ0FBaEIxVixLQUFLO0lBQ0lxVyxXQUFXLEdBQUFYLFFBQUEsQ0FBcEJZLE9BQU87SUFDUEMsVUFBVSxHQUFBYixRQUFBLENBQVZhLFVBQVU7SUFDVkMsZUFBZSxHQUFBZCxRQUFBLENBQWZjLGVBQWU7RUFzQmpCeFQsS0FBSyxDQUFDK04sU0FBUyxDQUFDLFlBQU07SUFBRTtJQUN0QixJQUFJcUYsU0FBUyxJQUFJQyxXQUFXLEVBQUU7TUFDNUJ2TyxPQUFPLENBQUM2SSxHQUFHLGVBQWV5RixTQUFTLENBQUM7TUFDcENwTSxlQUFlLElBQUlBLGVBQWUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksa0JBQUFoQyxNQUFBLENBQWtCOEosV0FBVyxPQUFBOUosTUFBQSxDQUFJc0MsVUFBVSxPQUFBdEMsTUFBQSxDQUFJb08sU0FBUyxHQUFJLElBQUksQ0FBQztJQUN2SDtFQUNGLENBQUMsRUFBRSxDQUFDQSxTQUFTLEVBQUVDLFdBQVcsQ0FBQyxDQUFDO0VBRTVCclQsS0FBSyxDQUFDK04sU0FBUyxDQUFDLFlBQU07SUFBRTtJQUN0QixJQUFNMEYsU0FBUztNQUFBLElBQUFDLEtBQUEsR0FBQXpXLGlCQUFBLGVBQUE1SCxtQkFBQSxHQUFBb0YsSUFBQSxDQUFHLFNBQUFrWixRQUFBO1FBQUEsSUFBQUMsWUFBQTtRQUFBLE9BQUF2ZSxtQkFBQSxHQUFBdUIsSUFBQSxVQUFBaWQsU0FBQUMsUUFBQTtVQUFBLGtCQUFBQSxRQUFBLENBQUE1WSxJQUFBLEdBQUE0WSxRQUFBLENBQUF2YSxJQUFBO1lBQUE7Y0FBYztjQUM5QnVMLE9BQU8sQ0FBQy9ILElBQUksc0NBQUFpSSxNQUFBLENBQXNDeU4sR0FBRyxDQUFFLENBQUM7Y0FDcERtQixZQUFZLEdBQUdMLFVBQVU7Y0FDN0IsSUFBSXhLLGFBQWEsRUFBRTtnQkFDakI2SyxZQUFZLEdBQUdKLGVBQWUsRUFBQztjQUNqQztjQUFDTSxRQUFBLENBQUF2YSxJQUFBO2NBQUEsT0FDS3FhLFlBQVksQ0FBQ2pJLGtCQUFrQixDQUFDLENBQUNqVCxJQUFJLENBQUMsVUFBQ3FiLE9BQU8sRUFBSztnQkFBRTtnQkFDekQsSUFBSUEsT0FBTyxFQUFFO2tCQUNYalAsT0FBTyxDQUFDNkksR0FBRyxzREFBc0QsQ0FBQztrQkFDbEU5RixjQUFjLENBQUMsVUFBQW1NLGVBQWU7b0JBQUEsT0FBSUEsZUFBZSxDQUFDelYsTUFBTSxDQUFDLFVBQUFpTixNQUFNO3NCQUFBLE9BQUlBLE1BQU0sS0FBS0osY0FBYztvQkFBQSxFQUFDO2tCQUFBLEVBQUM7a0JBQzlGakIsUUFBUSxDQUFDO29CQUNQaEIsU0FBUyxFQUFFO2tCQUNiLENBQUMsQ0FBQztrQkFFRixJQUFNOEssa0JBQWtCLEdBQUd4ZSxNQUFNLENBQUNzRixJQUFJLENBQUN1TyxrQkFBa0IsQ0FBQztrQkFFMUQsSUFBSTJLLGtCQUFrQixhQUFsQkEsa0JBQWtCLGVBQWxCQSxrQkFBa0IsQ0FBRTdaLE1BQU0sRUFBRTtvQkFBQSxJQUFBOFosU0FBQSxHQUFBdFksMEJBQUEsQ0FDTnFZLGtCQUFrQjtzQkFBQUUsS0FBQTtvQkFBQTtzQkFBMUMsS0FBQUQsU0FBQSxDQUFBMWMsQ0FBQSxNQUFBMmMsS0FBQSxHQUFBRCxTQUFBLENBQUF2ZSxDQUFBLElBQUFrRCxJQUFBLEdBQTRDO3dCQUFBLElBQWpDdWIsU0FBUyxHQUFBRCxLQUFBLENBQUFwZSxLQUFBO3dCQUNsQixJQUFRdWIsWUFBWSxHQUFLaEksa0JBQWtCLENBQUM4SyxTQUFTLENBQUMsQ0FBOUM5QyxZQUFZO3dCQUNwQkEsWUFBWSxJQUFJQSxZQUFZLENBQUMsQ0FBQztzQkFDaEM7b0JBQUMsU0FBQWhWLEdBQUE7c0JBQUE0WCxTQUFBLENBQUE1ZSxDQUFBLENBQUFnSCxHQUFBO29CQUFBO3NCQUFBNFgsU0FBQSxDQUFBM2MsQ0FBQTtvQkFBQTtrQkFDSDtrQkFFQXVOLE9BQU8sQ0FBQy9ILElBQUksQ0FBQywyQ0FBMkMsQ0FBQztrQkFDekRvTixRQUFRLENBQUM7b0JBQ1BoQixTQUFTLEVBQUUsS0FBSztvQkFDaEJSLGFBQWEsRUFBRSxJQUFJO29CQUNuQkMsR0FBRyxFQUFFK0M7a0JBQ1AsQ0FBQyxDQUFDO2tCQUNGekosS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDeEosSUFBSSxDQUFDLFlBQU07b0JBQ3BCbVAsY0FBYyxDQUFDLFVBQUFtTSxlQUFlO3NCQUFBLE9BQUlBLGVBQWUsQ0FBQ3pWLE1BQU0sQ0FBQyxVQUFBaU4sTUFBTTt3QkFBQSxPQUFJQSxNQUFNLEtBQUtKLGNBQWM7c0JBQUEsRUFBQztvQkFBQSxFQUFDO29CQUM5RnBILGVBQWUsYUFBZkEsZUFBZSxlQUFmQSxlQUFlLENBQUVnSixjQUFjLENBQUN5RixHQUFHLEVBQUU5RyxrQkFBa0IsQ0FBQztrQkFDMUQsQ0FBQyxDQUFDO2dCQUNKLENBQUMsTUFBTTtrQkFDTDdHLE9BQU8sQ0FBQzlILEtBQUssQ0FBQyx3REFBd0QsQ0FBQztrQkFDdkU2SyxjQUFjLENBQUMsVUFBQW1NLGVBQWU7b0JBQUEsT0FBSUEsZUFBZSxDQUFDelYsTUFBTSxDQUFDLFVBQUFpTixNQUFNO3NCQUFBLE9BQUlBLE1BQU0sS0FBS0osY0FBYztvQkFBQSxFQUFDO2tCQUFBLEVBQUM7a0JBQzlGakIsUUFBUSxDQUFDO29CQUFFaEIsU0FBUyxFQUFFO2tCQUFNLENBQUMsQ0FBQztnQkFDaEM7Y0FDRixDQUFDLENBQUM7WUFBQTtZQUFBO2NBQUEsT0FBQTJLLFFBQUEsQ0FBQXpZLElBQUE7VUFBQTtRQUFBLEdBQUFzWSxPQUFBO01BQUEsQ0FDSDtNQUFBLGdCQXZDS0YsU0FBU0EsQ0FBQTtRQUFBLE9BQUFDLEtBQUEsQ0FBQXBXLEtBQUEsT0FBQUQsU0FBQTtNQUFBO0lBQUEsR0F1Q2Q7SUFFRCxJQUFJOEwsU0FBUyxFQUFFO01BQ2IsSUFBSSxDQUFDWCxlQUFlLEVBQUU7UUFDcEI7TUFBQSxDQUNELE1BQU0sSUFBSSxDQUFDaUssR0FBRyxFQUFFO1FBQ2Y7TUFBQSxDQUNELE1BQU07UUFDTDtRQUNBNUssY0FBYyxDQUFDLFVBQUFtTSxlQUFlO1VBQUEsVUFBQWhQLE1BQUEsQ0FBQW5ILGtCQUFBLENBQVFtVyxlQUFlLElBQUU1SSxjQUFjO1FBQUEsQ0FBQyxDQUFDO1FBQ3ZFcUksU0FBUyxDQUFDLENBQUM7TUFDYjtJQUNGO0VBQ0YsQ0FBQyxFQUFFLENBQUN0SyxTQUFTLEVBQUVYLGVBQWUsRUFBRWlLLEdBQUcsQ0FBQyxDQUFDOztFQUVyQztBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUNFLFNBQVM0Qiw4QkFBOEJBLENBQUNwUCxTQUFTLEVBQUUyRCxHQUFHLEVBQUUwTCxtQkFBbUIsRUFBRWxPLE9BQWUsRUFBRTtJQUM1RixJQUFJbU8sT0FBTztJQUNYLElBQU1DLGFBQWEsR0FBR3ZQLFNBQVMsYUFBVEEsU0FBUyx1QkFBVEEsU0FBUyxDQUFFd1AsS0FBSyxDQUFDLE1BQU0sQ0FBQztJQUM5QyxJQUFNQyxZQUFZLEdBQUdoRCxjQUFjLENBQUM5SSxHQUFHLGFBQUhBLEdBQUcsdUJBQUhBLEdBQUcsQ0FBRXpGLE9BQU8sRUFBRXFSLGFBQWEsQ0FBQztJQUVoRSxJQUFJRSxZQUFZLElBQUksQ0FBQyxFQUFFO01BQ3JCLElBQU1DLGNBQWMsR0FBR0gsYUFBYSxDQUFDRSxZQUFZLENBQUM7TUFDbEQsSUFBSUUsV0FBVyxHQUFHRCxjQUFjLENBQUNGLEtBQUssQ0FBQyxNQUFNLENBQUM7TUFDOUMsSUFBTUksVUFBVSxHQUFHbkQsY0FBYyxDQUFDOUksR0FBRyxhQUFIQSxHQUFHLHVCQUFIQSxHQUFHLENBQUV4RixLQUFLLEVBQUV3UixXQUFXLENBQUM7TUFDMUQsSUFBTUUsV0FBVyxHQUFHLENBQUFsTSxHQUFHLGFBQUhBLEdBQUcsdUJBQUhBLEdBQUcsQ0FBRXhGLEtBQUssTUFBSyxPQUFPO01BRTFDLElBQUkwUixXQUFXLElBQUlELFVBQVUsSUFBSSxDQUFDLEVBQUU7UUFDbEMsSUFBTUUsWUFBWSxHQUFHMVQseUJBQXlCLENBQUMyVCxzQkFBc0IsQ0FBQ1YsbUJBQW1CLENBQUM7UUFDMUZ4UCxPQUFPLENBQUM2SSxHQUFHLDZDQUFBM0ksTUFBQSxDQUE2Q29CLE9BQU8sY0FBQXBCLE1BQUEsQ0FBVzRELEdBQUcsYUFBSEEsR0FBRyx1QkFBSEEsR0FBRyxDQUFFeEYsS0FBSyxXQUFBNEIsTUFBQSxDQUFRK1AsWUFBWSxDQUFDN0MsU0FBUyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBRSxDQUFDO1FBQzdILElBQUk0QyxXQUFXLEVBQUU7VUFBRTtVQUNqQixJQUFNRyxRQUFRLEdBQUdMLFdBQVcsQ0FBQyxDQUFDLENBQUM7VUFDL0IsSUFBTU0sU0FBUyxHQUFHRCxRQUFRLENBQUNFLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBQztVQUN6Q1AsV0FBVyxDQUFDLENBQUMsQ0FBQyxHQUFHSyxRQUFRLENBQUMvQyxTQUFTLENBQUMsQ0FBQyxFQUFFZ0QsU0FBUyxHQUFHLENBQUMsQ0FBQyxHQUFHSCxZQUFZO1FBQ3RFLENBQUMsTUFBTTtVQUNMLElBQU1FLFNBQVEsR0FBR0wsV0FBVyxDQUFDQyxVQUFVLENBQUM7VUFDeEMsSUFBTU8sV0FBVyxHQUFHLENBQUMsQ0FBQXhNLEdBQUcsYUFBSEEsR0FBRyx1QkFBSEEsR0FBRyxDQUFFeEYsS0FBSyxJQUFHLEVBQUUsRUFBRWhKLE1BQU0sRUFBQztVQUM3Q3dhLFdBQVcsQ0FBQ0MsVUFBVSxDQUFDLEdBQUdJLFNBQVEsQ0FBQy9DLFNBQVMsQ0FBQyxDQUFDLEVBQUVrRCxXQUFXLEdBQUcsQ0FBQyxDQUFDLEdBQUdMLFlBQVk7UUFDakY7UUFDQSxJQUFNTSxVQUFVLEdBQUdULFdBQVcsQ0FBQ1UsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUMzQ2QsYUFBYSxDQUFDRSxZQUFZLENBQUMsR0FBR1csVUFBVTtRQUN4Q2QsT0FBTyxHQUFHQyxhQUFhLENBQUNjLElBQUksQ0FBQyxNQUFNLENBQUM7TUFDdEM7SUFDRjtJQUNBLE9BQU9mLE9BQU87RUFDaEI7RUFFQXZVLEtBQUssQ0FBQytOLFNBQVMsQ0FBQyxZQUFNO0lBQUU7SUFBQSxTQUNQd0gsZUFBZUEsQ0FBQTtNQUFBLE9BQUFDLGdCQUFBLENBQUFsWSxLQUFBLE9BQUFELFNBQUE7SUFBQTtJQUFBLFNBQUFtWSxpQkFBQTtNQUFBQSxnQkFBQSxHQUFBdlksaUJBQUEsZUFBQTVILG1CQUFBLEdBQUFvRixJQUFBLENBQTlCLFNBQUFnYixTQUFBO1FBQUEsSUFBQUMsZ0JBQUEsRUFBQXZDLE1BQUEsRUFBQWMsa0JBQUEsRUFBQTBCLFVBQUEsRUFBQTFRLFNBQUEsRUFBQTJRLFNBQUEsRUFBQUMsUUFBQSxFQUFBQyxVQUFBLEVBQUFDLE1BQUEsRUFBQTNCLFNBQUEsRUFBQTRCLHFCQUFBLEVBQUE1RSxVQUFBLEVBQUE2RSxNQUFBLEVBQUExQixPQUFBLEVBQUEyQixXQUFBLEVBQUFDLEtBQUEsRUFBQTdCLG1CQUFBLEVBQUE4QixjQUFBLEVBQUFDLFdBQUEsRUFBQUMsVUFBQSxFQUFBQyxNQUFBLEVBQUFDLFVBQUEsRUFBQUMsU0FBQSxFQUFBQyxzQkFBQSxFQUFBQyxZQUFBLEVBQUFDLE9BQUEsRUFBQUMsUUFBQSxFQUFBQyxZQUFBLEVBQUFDLFlBQUEsRUFBQUMsS0FBQSxFQUFBQyxvQkFBQSxFQUFBQyxtQkFBQSxFQUFBQyxxQkFBQSxFQUFBQyxrQkFBQSxFQUFBQyx1QkFBQSxFQUFBNVMsUUFBQSxFQUFBNlMsU0FBQTtRQUFBLE9BQUFqaUIsbUJBQUEsR0FBQXVCLElBQUEsVUFBQTJnQixVQUFBQyxTQUFBO1VBQUEsa0JBQUFBLFNBQUEsQ0FBQXRjLElBQUEsR0FBQXNjLFNBQUEsQ0FBQWplLElBQUE7WUFBQTtjQUFBLEtBQ01zUCxXQUFXO2dCQUFBMk8sU0FBQSxDQUFBamUsSUFBQTtnQkFBQTtjQUFBO2NBQ1RtYyxnQkFBZ0IsR0FBRyxDQUFDOUosZ0JBQWdCO2NBRXhDLElBQUksQ0FBQzhKLGdCQUFnQixFQUFFO2dCQUFFO2dCQUN2QixJQUFJN0oscUJBQXFCLEtBQUtGLGtCQUFrQixFQUFFO2tCQUNoRDdHLE9BQU8sQ0FBQ0MsSUFBSSxtRUFBQUMsTUFBQSxDQUFtRTJHLGtCQUFrQiwyQkFBQTNHLE1BQUEsQ0FBd0I2RyxxQkFBcUIsQ0FBRSxDQUFDO2tCQUNqSjZKLGdCQUFnQixHQUFHLElBQUk7Z0JBQ3pCLENBQUMsTUFBTTtrQkFDTDVRLE9BQU8sQ0FBQzZJLEdBQUcsb0RBQUEzSSxNQUFBLENBQW9ENkcscUJBQXFCLENBQUUsQ0FBQztrQkFDdkYxQixRQUFRLENBQUM7b0JBQUUzQixlQUFlLEVBQUU7a0JBQUssQ0FBQyxDQUFDO2dCQUNyQztjQUNGO2NBQUMsS0FFR2tOLGdCQUFnQjtnQkFBQThCLFNBQUEsQ0FBQWplLElBQUE7Z0JBQUE7Y0FBQTtjQUFJO2NBQ3RCdUwsT0FBTyxDQUFDNkksR0FBRyw0Q0FBNEMsQ0FBQztjQUN4RHhELFFBQVEsQ0FBQztnQkFDUDNCLGVBQWUsRUFBRSxLQUFLO2dCQUN0QkcsYUFBYSxFQUFFLEtBQUs7Z0JBQ3BCOEosR0FBRyxFQUFFO2NBQ1AsQ0FBQyxDQUFDLEVBQUM7Y0FBQStFLFNBQUEsQ0FBQWplLElBQUE7Y0FBQSxPQUVrQnlTLGVBQWUsQ0FBQyxDQUFDO1lBQUE7Y0FBaENtSCxNQUFNLEdBQUFxRSxTQUFBLENBQUF2ZSxJQUFBO2NBQUEsS0FFUmthLE1BQU07Z0JBQUFxRSxTQUFBLENBQUFqZSxJQUFBO2dCQUFBO2NBQUE7Y0FDUnVMLE9BQU8sQ0FBQzZJLEdBQUcsMkNBQTJDLENBQUM7Y0FDdkR4RCxRQUFRLENBQUM7Z0JBQ1AzQixlQUFlLEVBQUUsSUFBSTtnQkFDckJHLGFBQWEsRUFBRSxJQUFJO2dCQUNuQkMsR0FBRyxFQUFFdUs7Y0FDUCxDQUFDLENBQUM7Y0FBQXFFLFNBQUEsQ0FBQWplLElBQUE7Y0FBQTtZQUFBO2NBRUZ1TCxPQUFPLENBQUM5SCxLQUFLLENBQUMsbURBQW1ELENBQUM7Y0FDbEVnSyxlQUFlLElBQUlBLGVBQWUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksZ0NBQUFoQyxNQUFBLENBQWdDOEosV0FBVyxPQUFBOUosTUFBQSxDQUFJc0MsVUFBVSxHQUFJLElBQUksQ0FBQztjQUN0SDZDLFFBQVEsQ0FBQztnQkFBRXRCLFdBQVcsRUFBRTtjQUFNLENBQUMsQ0FBQztjQUFBLE9BQUEyTyxTQUFBLENBQUFwZSxNQUFBO1lBQUE7Y0FLcEMwTCxPQUFPLENBQUM2SSxHQUFHLDZDQUE2QyxDQUFDO2NBQ25Ec0csa0JBQWtCLEdBQUd4ZSxNQUFNLENBQUNzRixJQUFJLENBQUN1TyxrQkFBa0IsQ0FBQztjQUFBLE1BRXREMkssa0JBQWtCLGFBQWxCQSxrQkFBa0IsZUFBbEJBLGtCQUFrQixDQUFFN1osTUFBTTtnQkFBQW9kLFNBQUEsQ0FBQWplLElBQUE7Z0JBQUE7Y0FBQTtjQUN4Qm9jLFVBQVUsR0FBRzVSLGNBQWMsQ0FBQ0MsZUFBZSxFQUFFQyxNQUFNLENBQUMsRUFBQztjQUNyRGdCLFNBQVMsR0FBRzBRLFVBQVUsRUFBQztjQUN2QkMsU0FBUyxHQUFHLEtBQUs7Y0FBQSxLQUVqQkQsVUFBVTtnQkFBQTZCLFNBQUEsQ0FBQWplLElBQUE7Z0JBQUE7Y0FBQTtjQUNSNk0sUUFBTyxHQUFHLENBQUM7Y0FBQTBQLFVBQUEsR0FBQWxhLDBCQUFBLENBRVNxWSxrQkFBa0I7Y0FBQXVELFNBQUEsQ0FBQXRjLElBQUE7Y0FBQTRhLFVBQUEsQ0FBQXRlLENBQUE7WUFBQTtjQUFBLEtBQUF1ZSxNQUFBLEdBQUFELFVBQUEsQ0FBQW5nQixDQUFBLElBQUFrRCxJQUFBO2dCQUFBMmUsU0FBQSxDQUFBamUsSUFBQTtnQkFBQTtjQUFBO2NBQS9CNmEsU0FBUyxHQUFBMkIsTUFBQSxDQUFBaGdCLEtBQUE7Y0FDbEJxUSxRQUFPLEdBQUdxUixRQUFRLENBQUNyRCxTQUFTLENBQUM7Y0FBQTRCLHFCQUFBLEdBQ0MxTSxrQkFBa0IsQ0FBQ2xELFFBQU8sQ0FBQyxFQUFqRGdMLFVBQVUsR0FBQTRFLHFCQUFBLENBQVY1RSxVQUFVLEVBQUV4SCxNQUFLLEdBQUFvTSxxQkFBQSxDQUFMcE0sS0FBSztjQUFBLEtBRXJCd0gsVUFBVTtnQkFBQW9HLFNBQUEsQ0FBQWplLElBQUE7Z0JBQUE7Y0FBQTtjQUNSZ2IsT0FBTztjQUFBMkIsV0FBQSxHQUlQOUUsVUFBVSxDQUFDeEgsTUFBSyxDQUFDLEVBRm5CaEIsS0FBRyxHQUFBc04sV0FBQSxDQUFIdE4sR0FBRyxFQUNIMEwsbUJBQW1CLEdBQUE0QixXQUFBLENBQW5CNUIsbUJBQW1CO2NBR3JCLElBQUlBLG1CQUFtQixJQUFJclAsU0FBUyxFQUFFO2dCQUFFO2dCQUN0Q3NQLE9BQU8sR0FBR0YsOEJBQThCLENBQUNwUCxTQUFTLEVBQUUyRCxLQUFHLEVBQUUwTCxtQkFBbUIsRUFBRWxPLFFBQU8sQ0FBQztjQUN4RjtjQUFDLEtBRUdtTyxPQUFPO2dCQUFBaUQsU0FBQSxDQUFBamUsSUFBQTtnQkFBQTtjQUFBO2NBQ1QwTCxTQUFTLEdBQUdzUCxPQUFPO2NBQUFpRCxTQUFBLENBQUFqZSxJQUFBO2NBQUE7WUFBQTtjQUVuQnFjLFNBQVMsR0FBRyxJQUFJO2NBQUEsT0FBQTRCLFNBQUEsQ0FBQXBlLE1BQUE7WUFBQTtjQUFBb2UsU0FBQSxDQUFBamUsSUFBQTtjQUFBO1lBQUE7Y0FBQWllLFNBQUEsQ0FBQWplLElBQUE7Y0FBQTtZQUFBO2NBQUFpZSxTQUFBLENBQUF0YyxJQUFBO2NBQUFzYyxTQUFBLENBQUFFLEVBQUEsR0FBQUYsU0FBQTtjQUFBMUIsVUFBQSxDQUFBeGdCLENBQUEsQ0FBQWtpQixTQUFBLENBQUFFLEVBQUE7WUFBQTtjQUFBRixTQUFBLENBQUF0YyxJQUFBO2NBQUE0YSxVQUFBLENBQUF2ZSxDQUFBO2NBQUEsT0FBQWlnQixTQUFBLENBQUEvYixNQUFBO1lBQUE7Y0FPcEJzTixjQUFhLEdBQUcsS0FBSyxFQUFDO2NBQUEsS0FFdEI2TSxTQUFTO2dCQUFBNEIsU0FBQSxDQUFBamUsSUFBQTtnQkFBQTtjQUFBO2NBQUk7Y0FDZnVMLE9BQU8sQ0FBQzZJLEdBQUcsdUJBQUEzSSxNQUFBLENBQXVCb0IsT0FBTyxnRUFBNkQsQ0FBQztjQUFBa1EsVUFBQSxHQUFBMWEsMEJBQUEsQ0FHL0VxWSxrQkFBa0I7Y0FBQTtnQkFBMUMsS0FBQXFDLFVBQUEsQ0FBQTllLENBQUEsTUFBQStlLE1BQUEsR0FBQUQsVUFBQSxDQUFBM2dCLENBQUEsSUFBQWtELElBQUEsR0FBNEM7a0JBQWpDdWIsVUFBUyxHQUFBbUMsTUFBQSxDQUFBeGdCLEtBQUE7a0JBQ1pxUSxTQUFPLEdBQUdxUixRQUFRLENBQUNyRCxVQUFTLENBQUM7a0JBQUFzQyxzQkFBQSxHQUNMcE4sa0JBQWtCLENBQUNsRCxTQUFPLENBQUMsRUFBakRnTCxZQUFVLEdBQUFzRixzQkFBQSxDQUFWdEYsVUFBVSxFQUFFeEgsT0FBSyxHQUFBOE0sc0JBQUEsQ0FBTDlNLEtBQUs7a0JBRXpCLElBQUl3SCxZQUFVLEVBQUU7b0JBQ1ZtRCxRQUFPO29CQUFBdUMsWUFBQSxHQUtQMUYsWUFBVSxDQUFDeEgsT0FBSyxDQUFDLEVBSG5CbU4sWUFBWSxHQUFBRCxZQUFBLENBQVpDLFlBQVksRUFDWm5PLEtBQUcsR0FBQWtPLFlBQUEsQ0FBSGxPLEdBQUcsRUFDSDBMLG9CQUFtQixHQUFBd0MsWUFBQSxDQUFuQnhDLG1CQUFtQjtvQkFHckIsSUFBSUEsb0JBQW1CLElBQUksQ0FBQ0MsUUFBTyxFQUFFO3NCQUMvQjJDLG1CQUFtQixHQUFHLElBQUk7c0JBRTlCLElBQUl0TyxLQUFHLEVBQUU7d0JBQ1AsSUFBSW1PLFlBQVksRUFBRTswQkFBQUkscUJBQUEsR0FDZS9WLGdCQUFnQixDQUFDdVcsNkJBQTZCLENBQUNyRCxvQkFBbUIsRUFBRXlDLFlBQVksQ0FBQyxFQUF4R0ssa0JBQWtCLEdBQUFELHFCQUFBLENBQWxCQyxrQkFBa0I7MEJBQzFCRixtQkFBbUIsR0FBR0Usa0JBQWtCO3dCQUMxQyxDQUFDLE1BQU07MEJBQ0xGLG1CQUFtQixHQUFHNUMsb0JBQW1CO3dCQUMzQzt3QkFDQStCLFdBQVcsR0FBR2EsbUJBQW1CLEtBQUlsVCxlQUFlLGFBQWZBLGVBQWUsdUJBQWZBLGVBQWUsQ0FBRTRULFdBQVcsQ0FBQ2hQLEtBQUcsQ0FBQ3pGLE9BQU8sRUFBRXlGLEtBQUcsQ0FBQ3hGLEtBQUssRUFBRTswQkFBQ0UsWUFBWSxFQUFFNFQ7d0JBQW1CLENBQUMsQ0FBQztzQkFDaEk7b0JBQ0Y7a0JBQ0Y7Z0JBQ0Y7Y0FBQyxTQUFBNWEsR0FBQTtnQkFBQWdhLFVBQUEsQ0FBQWhoQixDQUFBLENBQUFnSCxHQUFBO2NBQUE7Z0JBQUFnYSxVQUFBLENBQUEvZSxDQUFBO2NBQUE7Y0FFRDBOLFNBQVMsR0FBRzdFLE1BQU0sQ0FBQ3lYLE1BQU0sQ0FBQ3hCLFdBQVcsRUFBRTtnQkFBRXlCLGNBQWMsRUFBRTtjQUFLLENBQUMsQ0FBQztjQUFBTixTQUFBLENBQUFqZSxJQUFBO2NBQUE7WUFBQTtjQUN6RDtjQUNEa0wsUUFBUSxHQUFHVCxlQUFlLGFBQWZBLGVBQWUsZ0JBQUFxVCx1QkFBQSxHQUFmclQsZUFBZSxDQUFFTSxhQUFhLGNBQUErUyx1QkFBQSxnQkFBQUEsdUJBQUEsR0FBOUJBLHVCQUFBLENBQWdDOVMsUUFBUSxjQUFBOFMsdUJBQUEsdUJBQXhDQSx1QkFBQSxDQUEwQzdjLElBQUksRUFBQztjQUFBLE1BQzVEaUssUUFBUSxJQUFJUSxTQUFTLElBQUkwUSxVQUFVO2dCQUFBNkIsU0FBQSxDQUFBamUsSUFBQTtnQkFBQTtjQUFBO2NBQUEsTUFDakNvYyxVQUFVLEtBQUsxUSxTQUFTO2dCQUFBdVMsU0FBQSxDQUFBamUsSUFBQTtnQkFBQTtjQUFBO2NBQUk7Y0FDOUJ1TCxPQUFPLENBQUNDLElBQUksNERBQTRELENBQUM7Y0FDekVvRixRQUFRLENBQUM7Z0JBQUV0QixXQUFXLEVBQUU7Y0FBTSxDQUFDLENBQUM7Y0FBQSxPQUFBMk8sU0FBQSxDQUFBcGUsTUFBQTtZQUFBO2NBRzVCa2UsU0FBUyxHQUFHN1UsUUFBUSxDQUFDZ0MsUUFBUSxFQUFFa1IsVUFBVSxFQUFFMVEsU0FBUyxFQUFFLEtBQUssQ0FBQztjQUNsRTBRLFVBQVUsR0FBRzJCLFNBQVMsRUFBQztjQUN2QnZPLGNBQWEsR0FBRyxJQUFJO1lBQUE7Y0FJeEIsSUFBSTlELFNBQVMsRUFBRTtnQkFDYkgsT0FBTyxDQUFDNkksR0FBRyw0Q0FBQTNJLE1BQUEsQ0FBNENDLFNBQVMsQ0FBQ2lOLFNBQVMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLFFBQUssQ0FBQztnQkFDeEZySyxjQUFjLENBQUMsVUFBQW1NLGVBQWU7a0JBQUEsVUFBQWhQLE1BQUEsQ0FBQW5ILGtCQUFBLENBQVFtVyxlQUFlLElBQUU1SSxjQUFjO2dCQUFBLENBQUMsQ0FBQztnQkFDdkVqQixRQUFRLENBQUM7a0JBQ1ByQixXQUFXLEVBQUU2TSxVQUFVO2tCQUN2QjlNLFdBQVcsRUFBRSxLQUFLO2tCQUNsQkUsYUFBYSxFQUFiQSxjQUFhO2tCQUNiSSxTQUFTLEVBQUU7Z0JBQ2IsQ0FBQyxDQUFDO2NBQ0osQ0FBQyxNQUFNO2dCQUNMckUsT0FBTyxDQUFDOUgsS0FBSyxrRkFBQWdJLE1BQUEsQ0FBa0Y4SixXQUFXLE9BQUE5SixNQUFBLENBQUlzQyxVQUFVLENBQUUsQ0FBQztnQkFDM0hOLGVBQWUsSUFBSUEsZUFBZSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSw0Q0FBQWhDLE1BQUEsQ0FBNEM4SixXQUFXLE9BQUE5SixNQUFBLENBQUlzQyxVQUFVLEdBQUksSUFBSSxDQUFDO2dCQUNsSTZDLFFBQVEsQ0FBQztrQkFBRXRCLFdBQVcsRUFBRTtnQkFBTSxDQUFDLENBQUM7Y0FDbEM7WUFBQztZQUFBO2NBQUEsT0FBQTJPLFNBQUEsQ0FBQW5jLElBQUE7VUFBQTtRQUFBLEdBQUFvYSxRQUFBO01BQUEsQ0FHTjtNQUFBLE9BQUFELGdCQUFBLENBQUFsWSxLQUFBLE9BQUFELFNBQUE7SUFBQTtJQUVEa1ksZUFBZSxDQUFDLENBQUM7RUFDbkIsQ0FBQyxFQUFFLENBQUMxTSxXQUFXLENBQUMsQ0FBQzs7RUFFakI7RUFDQSxJQUFBa1AsS0FBQSxHQUFvQjlJLFVBQVUsSUFBSSxDQUFDLENBQUM7SUFBNUI5TCxPQUFPLEdBQUE0VSxLQUFBLENBQVA1VSxPQUFPO0VBRWZuRCxLQUFLLENBQUMrTixTQUFTLENBQUMsWUFBTTtJQUNwQixJQUFNaUssYUFBYSxHQUFHaFUsZUFBZSxhQUFmQSxlQUFlLHVCQUFmQSxlQUFlLENBQUV3RixZQUFZO0lBQ25ELElBQUl5TyxhQUFhLEdBQUcsSUFBSWhQLEdBQUcsQ0FBQyxDQUFDO0lBQzdCLElBQUlpUCxnQkFBZ0IsR0FBRyxLQUFLO0lBQzVCLElBQU1DLElBQUksR0FBR0YsYUFBYTtJQUMxQixJQUFNRyxjQUFjLEdBQUduUiw0QkFBNEIsYUFBNUJBLDRCQUE0Qix1QkFBNUJBLDRCQUE0QixDQUFFaEQsTUFBTTtJQUMzRCxJQUFNb1UsZUFBZSxHQUFHcFIsNEJBQTRCLGFBQTVCQSw0QkFBNEIsdUJBQTVCQSw0QkFBNEIsQ0FBRXFSLFFBQVE7SUFDOUQsSUFBSUMsZ0JBQWdCLEdBQUcsSUFBSTs7SUFFM0I7SUFDQSxJQUFJUCxhQUFhLGFBQWJBLGFBQWEsZUFBYkEsYUFBYSxDQUFFNWQsTUFBTSxJQUN2QmllLGVBQWUsSUFDZHBVLE1BQU0sS0FBS21VLGNBQWUsSUFDM0JDLGVBQWUsQ0FBQ2xWLE9BQU8sQ0FBQyxJQUFJO0lBQzVCc0UsYUFBYSxhQUFiQSxhQUFhLGVBQWJBLGFBQWEsQ0FBRStRLEtBQUssRUFDcEI7TUFDQTtNQUNBLElBQUksQ0FBQ2xYLE9BQU8sQ0FBQ29ILGlCQUFpQixFQUFFakIsYUFBYSxDQUFDLElBQzVDLENBQUNuRyxPQUFPLENBQUNrSSxZQUFZLEVBQUV3TyxhQUFhLENBQUMsRUFBRTtRQUFBLElBQUFTLHNCQUFBO1FBQ3ZDLElBQU1DLGNBQWMsR0FBRyxDQUFDLENBQUM7UUFDekIsSUFBTUMsVUFBVSxHQUFHLENBQUMsQ0FBQyxFQUFDO1FBQ3RCLElBQUlDLFVBQVUsR0FBR1osYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDNVUsS0FBSztRQUV2QyxJQUFJLE9BQU93VixVQUFVLEtBQUssUUFBUSxFQUFFO1VBQ2xDQSxVQUFVLEdBQUduQixRQUFRLENBQUNtQixVQUFVLENBQUM7UUFDbkM7UUFFQSxJQUFJQyxTQUFTLEdBQUdELFVBQVU7UUFFMUIsS0FBSyxJQUFJNWlCLENBQUMsR0FBRyxDQUFDLEVBQUVzQixDQUFDLEdBQUcwZ0IsYUFBYSxDQUFDNWQsTUFBTSxFQUFFcEUsQ0FBQyxHQUFHc0IsQ0FBQyxFQUFFdEIsQ0FBQyxFQUFFLEVBQUU7VUFDcEQsSUFBTWdOLFFBQVEsR0FBR2dWLGFBQWEsQ0FBQ2hpQixDQUFDLENBQUM7VUFDakMsSUFDRW1OLFFBQU8sR0FFTEgsUUFBUSxDQUZWRyxPQUFPO1lBQ1BDLEtBQUssR0FDSEosUUFBUSxDQURWSSxLQUFLO1VBRVA7VUFDQSxJQUFJMFYsTUFBTSxHQUFHRixVQUFVLEdBQUc1aUIsQ0FBQztVQUMzQjZpQixTQUFTLEdBQUdDLE1BQU07VUFDbEJILFVBQVUsSUFBQTNULE1BQUEsQ0FBSTdCLFFBQU8sT0FBQTZCLE1BQUEsQ0FBSThULE1BQU0sRUFBRyxNQUFBOVQsTUFBQSxDQUFNN0IsUUFBTyxPQUFBNkIsTUFBQSxDQUFJNUIsS0FBSyxDQUFFO1VBRTFELElBQUksQ0FBQ3NWLGNBQWMsQ0FBQ3ZWLFFBQU8sQ0FBQyxFQUFFO1lBQzVCdVYsY0FBYyxDQUFDdlYsUUFBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1VBQzlCO1VBRUEsSUFBSUcsWUFBWSxHQUFHLEVBQUU7VUFFckIsSUFBSyxPQUFPRixLQUFLLEtBQUssUUFBUSxJQUFNQSxLQUFLLENBQUN5QixRQUFRLENBQUMsR0FBRyxDQUFFLEVBQUU7WUFDeEQsSUFBTWtVLE1BQU0sR0FBR3hYLFNBQVMsQ0FBQzhXLGVBQWUsS0FBQXJULE1BQUEsQ0FBSzdCLFFBQU8sT0FBQTZCLE1BQUEsQ0FBSTVCLEtBQUssQ0FBRSxDQUFDO1lBQUEsSUFBQTRWLFVBQUEsR0FBQXBkLDBCQUFBLENBRXhDbWQsTUFBTTtjQUFBRSxNQUFBO1lBQUE7Y0FBOUIsS0FBQUQsVUFBQSxDQUFBeGhCLENBQUEsTUFBQXloQixNQUFBLEdBQUFELFVBQUEsQ0FBQXJqQixDQUFBLElBQUFrRCxJQUFBLEdBQWdDO2dCQUFBLElBQXJCcWdCLFNBQVMsR0FBQUQsTUFBQSxDQUFBbGpCLEtBQUE7Z0JBQ2xCLElBQU1vakIsRUFBRSxHQUFHRCxTQUFTLENBQUM3VixTQUFTLENBQUNDLFlBQVk7Z0JBQzNDQSxZQUFZLEdBQUdBLFlBQVksQ0FBQzBCLE1BQU0sQ0FBQ21VLEVBQUUsQ0FBQztjQUN4QztZQUFDLFNBQUE3YyxHQUFBO2NBQUEwYyxVQUFBLENBQUExakIsQ0FBQSxDQUFBZ0gsR0FBQTtZQUFBO2NBQUEwYyxVQUFBLENBQUF6aEIsQ0FBQTtZQUFBO1VBQ0gsQ0FBQyxNQUFNO1lBQUEsSUFBQTZoQixxQkFBQTtZQUNMOVYsWUFBWSxJQUFBOFYscUJBQUEsR0FBR2YsZUFBZSxDQUFDbFYsUUFBTyxDQUFDLENBQUNDLEtBQUssQ0FBQyxjQUFBZ1cscUJBQUEsdUJBQS9CQSxxQkFBQSxDQUFpQzlWLFlBQVk7VUFDOUQ7VUFFQSxJQUFJQSxZQUFZLEVBQUU7WUFDaEJBLFlBQVksR0FBRzNCLG1CQUFtQixDQUFDMkIsWUFBWSxDQUFDO1lBQ2hEb1YsY0FBYyxDQUFDdlYsUUFBTyxDQUFDLENBQUMyVixNQUFNLENBQUMsR0FBRztjQUFFeFYsWUFBWSxFQUFaQTtZQUFhLENBQUM7WUFDbEQ2VSxJQUFJLENBQUNrQixHQUFHLElBQUFyVSxNQUFBLENBQUk3QixRQUFPLE9BQUE2QixNQUFBLENBQUk1QixLQUFLLEdBQUlFLFlBQVksQ0FBQztVQUMvQztRQUNGOztRQUVBO1FBQ0EsSUFBQWdXLHFCQUFBLEdBQWtCN1IsYUFBYSxhQUFiQSxhQUFhLGdCQUFBZ1Isc0JBQUEsR0FBYmhSLGFBQWEsQ0FBRVAsU0FBUyxjQUFBdVIsc0JBQUEsdUJBQXhCQSxzQkFBQSxDQUEwQmhFLEtBQUssQ0FBQyxHQUFHLENBQUM7VUFBQThFLHNCQUFBLEdBQUFoYSxjQUFBLENBQUErWixxQkFBQTtVQUEvQ25XLFNBQU8sR0FBQW9XLHNCQUFBO1FBQ2QsSUFBSUMsTUFBTSxNQUFBeFUsTUFBQSxDQUFNN0IsU0FBTyxPQUFBNkIsTUFBQSxDQUFJNFQsVUFBVSxDQUFFO1FBRXZDLElBQUlDLFNBQVMsSUFBSUQsVUFBVSxFQUFFO1VBQzNCWSxNQUFNLFFBQUF4VSxNQUFBLENBQVE2VCxTQUFTLENBQUU7UUFDM0I7UUFFQSxJQUFNWSxZQUFZLEdBQUd0WSx3QkFBd0IsQ0FBQztVQUM1Q3VZLFVBQVUsRUFBRWhCLGNBQWM7VUFDMUI5UCxHQUFHLEVBQUU0USxNQUFNO1VBQ1hoQixLQUFLLEVBQUUvUSxhQUFhLGFBQWJBLGFBQWEsdUJBQWJBLGFBQWEsQ0FBRStRLEtBQUs7VUFDM0JtQixVQUFVLEVBQUVsUyxhQUFhLGFBQWJBLGFBQWEsdUJBQWJBLGFBQWEsQ0FBRWtTO1FBQzdCLENBQUMsQ0FBQztRQUVGLElBQU0zUSxXQUFVLEdBQUcsSUFBSUMsR0FBRyxDQUFDLENBQUM7UUFFNUIsSUFBSXdRLFlBQVksYUFBWkEsWUFBWSxlQUFaQSxZQUFZLENBQUVHLElBQUksRUFBRTtVQUN0QkgsWUFBWSxDQUFDdGhCLE9BQU8sQ0FBQyxVQUFDMGhCLEtBQUssRUFBRS9jLEdBQUcsRUFBSztZQUNuQyxJQUFNZ2QsSUFBSSxHQUFHbkIsVUFBVSxDQUFDN2IsR0FBRyxDQUFDO1lBRTVCa00sV0FBVSxDQUFDcVEsR0FBRyxDQUFDUyxJQUFJLEVBQUVELEtBQUssQ0FBQ0UsR0FBRyxDQUFDLFVBQUFDLElBQUk7Y0FBQSxPQUFBdmIsYUFBQSxDQUFBQSxhQUFBLEtBQzVCdWIsSUFBSTtnQkFBRUMsSUFBSSxFQUFFL1osSUFBSSxDQUFDZ2EsZUFBZSxDQUFDRixJQUFJLENBQUNDLElBQUk7Y0FBQztZQUFBLENBQ2pELENBQUMsQ0FBQztVQUNMLENBQUMsQ0FBQztRQUNKO1FBQ0FoQyxhQUFhLEdBQUdqUCxXQUFVO1FBQzFCdVAsZ0JBQWdCLEdBQUc5USxhQUFhO1FBQ2hDeVEsZ0JBQWdCLEdBQUcsSUFBSTtNQUN6QjtJQUNGO0lBRUEsSUFBTTlOLFFBQWEsR0FBRyxDQUFDLENBQUM7O0lBRXhCO0lBQ0EsSUFBSSxDQUFDakksY0FBYyxDQUFDc0gsZUFBZSxFQUFFME8sSUFBSSxDQUFDLEVBQUU7TUFDMUMvTixRQUFRLENBQUNYLGVBQWUsR0FBRzBPLElBQUk7SUFDakM7SUFFQSxJQUFNZ0MsWUFBWSxHQUFHLENBQUFqVCxTQUFTLGFBQVRBLFNBQVMsdUJBQVRBLFNBQVMsQ0FBRTFDLFNBQVMsT0FBSytELGdCQUFnQixhQUFoQkEsZ0JBQWdCLHVCQUFoQkEsZ0JBQWdCLENBQUUvRCxTQUFTO0lBRXpFLElBQUkyVixZQUFZLElBQUksQ0FBQzFXLGFBQWEsQ0FBQytGLFlBQVksRUFBRXdPLGFBQWEsQ0FBQyxFQUFFO01BQy9ENU4sUUFBUSxDQUFDWixZQUFZLEdBQUd3TyxhQUFhO01BQ3JDNU4sUUFBUSxDQUFDMUIsaUJBQWlCLEdBQUc2UCxnQkFBZ0I7TUFDN0NuTyxRQUFRLENBQUNwQixVQUFVLEdBQUdpUCxhQUFhO0lBQ3JDO0lBRUEsSUFBSU0sZ0JBQWdCLEVBQUU7TUFDcEJuTyxRQUFRLENBQUMxQixpQkFBaUIsR0FBRzZQLGdCQUFnQjtJQUMvQztJQUVBLElBQUlMLGdCQUFnQixFQUFFO01BQ3BCLElBQUksQ0FBQy9WLGNBQWMsQ0FBQzZHLFVBQVUsSUFBSyxJQUFJQyxHQUFHLENBQUMsQ0FBRSxFQUFFZ1AsYUFBYSxDQUFDLEVBQUU7UUFDN0Q3TixRQUFRLENBQUNwQixVQUFVLEdBQUdpUCxhQUFhO01BQ3JDO0lBQ0Y7SUFFQSxJQUFJeGlCLE1BQU0sQ0FBQ3NGLElBQUksQ0FBQ3FQLFFBQVEsQ0FBQyxDQUFDaFEsTUFBTSxFQUFFO01BQ2hDK1AsUUFBUSxDQUFDQyxRQUFRLENBQUM7SUFDcEI7RUFDRixDQUFDLEVBQUUsQ0FDRGhELEtBQUssRUFDTEUsVUFBVSxFQUNWckQsTUFBTSxFQUNONkssV0FBVyxFQUNYOUssZUFBZSxhQUFmQSxlQUFlLHVCQUFmQSxlQUFlLENBQUV3RixZQUFZLEVBQzdCdkMsNEJBQTRCLEVBQzVCUSxhQUFhLENBQ2QsQ0FBQztFQUVGekgsS0FBSyxDQUFDK04sU0FBUyxDQUFDLFlBQU07SUFBRTtJQUN0QjVELFFBQVEsQ0FBQztNQUNQWixxQkFBcUIsRUFBRSxJQUFJO01BQzNCRCxrQkFBa0IsRUFBRSxDQUFDLENBQUM7TUFDdEJiLGtCQUFrQixFQUFFO0lBQ3RCLENBQUMsQ0FBQztFQUNKLENBQUMsRUFBRSxDQUFDd0csVUFBVSxDQUFDLENBQUM7RUFFaEIsSUFBTW1MLDJCQUEyQixHQUFHLFNBQTlCQSwyQkFBMkJBLENBQUlsVCxTQUFTLEVBQUVtVCxPQUFPLEVBQUs7SUFDMUR4USxTQUFTLENBQUMsVUFBQVEsU0FBUztNQUFBLE9BQUE1TCxhQUFBLENBQUFBLGFBQUEsS0FDZDRMLFNBQVM7UUFDWmQscUJBQXFCLEVBQUE5SyxhQUFBLENBQUFBLGFBQUEsS0FBTzRMLFNBQVMsQ0FBQ2QscUJBQXFCLE9BQUE3SyxlQUFBLFFBQUFzRyxNQUFBLENBQU1rQyxTQUFTLENBQUMvRCxPQUFPLE9BQUE2QixNQUFBLENBQUlrQyxTQUFTLENBQUM5RCxLQUFLLEdBQUtpWCxPQUFPO01BQUU7SUFBQSxDQUNuSCxDQUFDO0VBQ0wsQ0FBQztFQUVELElBQUlyQyxhQUFhLEdBQUdoVSxlQUFlLGFBQWZBLGVBQWUsdUJBQWZBLGVBQWUsQ0FBRXdGLFlBQVk7RUFFakR4SixLQUFLLENBQUMrTixTQUFTLENBQUMsWUFBTTtJQUFBLElBQUF1TSxjQUFBO0lBQ3BCLEtBQUFBLGNBQUEsR0FBSXRDLGFBQWEsY0FBQXNDLGNBQUEsZUFBYkEsY0FBQSxDQUFlbGdCLE1BQU0sRUFBRTtNQUN6QixJQUFBbWdCLEtBQUEsR0FBb0N2VyxlQUFlLElBQUksQ0FBQyxDQUFDO1FBQWpEa0QsV0FBUyxHQUFBcVQsS0FBQSxDQUFUclQsU0FBUztRQUFFTSxjQUFZLEdBQUErUyxLQUFBLENBQVovUyxZQUFZO01BQy9CMUMsT0FBTyxDQUFDNkksR0FBRyx3Q0FBd0M7UUFBRXpHLFNBQVMsRUFBVEEsV0FBUztRQUFFTSxZQUFZLEVBQVpBO01BQWEsQ0FBQyxDQUFDO0lBQ2pGO0VBQ0YsQ0FBQyxFQUFFLENBQUN3USxhQUFhLENBQUMsQ0FBQztFQUVuQixJQUFJLEdBQUFqUyxjQUFBLEdBQUNpUyxhQUFhLGNBQUFqUyxjQUFBLGVBQWJBLGNBQUEsQ0FBZTNMLE1BQU0sR0FBRTtJQUFFO0lBQzVCNGQsYUFBYSxHQUFHLENBQUF2WixhQUFBLEtBQU15SSxTQUFTLEVBQUc7RUFDcEM7RUFFQSxJQUFNc1Qsc0JBQXNCLElBQUF4VSxjQUFBLEdBQUdnUyxhQUFhLGNBQUFoUyxjQUFBLHVCQUFiQSxjQUFBLENBQWUrVCxHQUFHLENBQUMsVUFBQ1UsaUJBQWlCLEVBQUUzSSxLQUFLLEVBQUs7SUFBQSxJQUFBNEkscUJBQUE7SUFDOUUsSUFBTUMsbUJBQW1CLEdBQUcsQ0FBQUYsaUJBQWlCLGFBQWpCQSxpQkFBaUIsZ0JBQUFDLHFCQUFBLEdBQWpCRCxpQkFBaUIsQ0FBRXBYLFNBQVMsY0FBQXFYLHFCQUFBLHVCQUE1QkEscUJBQUEsQ0FBOEJwWCxZQUFZLEtBQUksRUFBRTtJQUM1RTtJQUNBLElBQUFzWCxLQUFBLEdBQTJCSCxpQkFBaUIsSUFBSSxDQUFDLENBQUM7TUFBMUN0WCxPQUFPLEdBQUF5WCxLQUFBLENBQVB6WCxPQUFPO01BQUVDLEtBQUssR0FBQXdYLEtBQUEsQ0FBTHhYLEtBQUs7SUFDdEIsSUFBTW9CLFNBQVMsR0FBRyxDQUFBK0QsZ0JBQWdCLGFBQWhCQSxnQkFBZ0IsdUJBQWhCQSxnQkFBZ0IsQ0FBRS9ELFNBQVMsTUFBSTBDLFNBQVMsYUFBVEEsU0FBUyx1QkFBVEEsU0FBUyxDQUFFMUMsU0FBUztJQUNyRSxJQUFNeUssVUFBVSxHQUFBeFEsYUFBQSxDQUFBQSxhQUFBLEtBQ1h1WixhQUFhO01BQ2hCN1UsT0FBTyxFQUFQQSxPQUFPO01BQ1BxQixTQUFTLEVBQVRBLFNBQVM7TUFDVHBCLEtBQUssRUFBTEE7SUFBSyxFQUNOO0lBQ0QsSUFBTXlYLDZCQUE2QixHQUFBcGMsYUFBQSxDQUFBQSxhQUFBLEtBQzlCa1MsNEJBQTRCO01BQy9CSyxZQUFZLEVBQUVjLEtBQUs7TUFDbkI2SSxtQkFBbUIsRUFBbkJBLG1CQUFtQjtNQUNuQnpULFNBQVMsRUFBRStILFVBQVU7TUFDckJyRSxjQUFjLEVBQWRBO0lBQWMsRUFDZjtJQUVELElBQUlrUSwyQkFBMkIsR0FBRyxLQUFLO0lBRXZDLElBQUlwUix5QkFBeUIsRUFBRTtNQUM3Qm9SLDJCQUEyQixHQUFHcFIseUJBQXlCLENBQUN2RyxPQUFPLElBQUlBLE9BQU8sSUFBSXVHLHlCQUF5QixDQUFDdEcsS0FBSyxJQUFJQSxLQUFLO0lBQ3hIO0lBRUEsb0JBQ0VwRCxLQUFBLENBQUEyTyxhQUFBLENBQUNuTixhQUFhLEVBQUFoRSxRQUFBLEtBQ1J3RyxlQUFlO01BQ25CcU0sWUFBWSxFQUFFQSxZQUFhO01BQzNCVyxZQUFZLEVBQUVjLEtBQU07TUFDcEJpSixpQkFBaUIsRUFBRSxDQUFDcFMsYUFBYztNQUNsQ3FHLFNBQVMsRUFBRUEsU0FBVTtNQUNyQjFJLGtCQUFrQixFQUFFaUssbUJBQW9CO01BQ3hDdkcsUUFBUSxFQUFFQSxRQUFTO01BQ25CeEQsY0FBYyxFQUFFQSxjQUFlO01BQy9CSyxJQUFJLEVBQUVxRCxLQUFNO01BQ1o0USwyQkFBMkIsRUFBRUEsMkJBQTRCO01BQ3pEaGUsR0FBRyxFQUFFZ1YsS0FBTTtNQUNYa0osaUJBQWlCLEVBQUUsU0FBQUEsa0JBQUE7UUFBQSxPQUFNN1EsUUFBUSxDQUFDO1VBQUVULHlCQUF5QixFQUFFO1FBQUssQ0FBQyxDQUFDO01BQUEsQ0FBQztNQUN2RXpDLDRCQUE0QixFQUFFQSw0QkFBNkI7TUFDM0QrSSxRQUFRLEVBQUVBLFFBQVM7TUFDbkI5SSxTQUFTLEVBQUUrSCxVQUFXO01BQ3RCZ00sTUFBTSxFQUFFOVI7TUFDUjtNQUFBO01BQ0F3SCw0QkFBNEIsRUFBRWtLLDZCQUE4QjtNQUM1RDlTLG9CQUFvQixFQUFFQSxvQkFBcUI7TUFDM0NMLE1BQU0sRUFBRUEsTUFBTztNQUNmTSxTQUFTLEVBQUVBLFNBQVU7TUFDckJvUywyQkFBMkIsRUFBRUE7SUFBNEIsRUFDMUQsQ0FBQztFQUVOLENBQUMsQ0FBQztFQUVGLElBQU1jLHNCQUFzQixHQUFHLFNBQXpCQSxzQkFBc0JBLENBQUEsRUFBUztJQUNuQyxJQUFJLENBQUExUixZQUFZLGFBQVpBLFlBQVksdUJBQVpBLFlBQVksQ0FBRXBQLE1BQU0sSUFBRyxDQUFDLEVBQUU7TUFDNUIrUCxRQUFRLENBQUM7UUFBRWpCLGtCQUFrQixFQUFFO01BQUssQ0FBQyxDQUFDO0lBQ3hDLENBQUMsTUFBTSxJQUFJLENBQUFNLFlBQVksYUFBWkEsWUFBWSx1QkFBWkEsWUFBWSxDQUFFcFAsTUFBTSxNQUFLLENBQUMsRUFBRTtNQUNyQytQLFFBQVEsQ0FBQztRQUFFVCx5QkFBeUIsRUFBRUYsWUFBWSxDQUFDLENBQUM7TUFBRSxDQUFDLENBQUM7SUFDMUQ7RUFDRixDQUFDO0VBRUQsSUFBTTJSLGVBQWUsR0FBRyxTQUFsQkEsZUFBZUEsQ0FBQUMsTUFBQSxFQUFrQjtJQUFBLElBQVovTCxLQUFLLEdBQUErTCxNQUFBLENBQUwvTCxLQUFLO0lBQzlCLElBQU1nTSxRQUFRLEdBQUF4ZCxrQkFBQSxDQUFPd1IsS0FBSyxDQUFDO0lBRTNCLElBQUlpTSxnQkFBZ0IsR0FBRyxLQUFLOztJQUU1QjtJQUNBLElBQUkvUixxQkFBcUIsRUFBRTtNQUN6QitSLGdCQUFnQixHQUFHN2xCLE1BQU0sQ0FBQ3VDLE1BQU0sQ0FBQ3VSLHFCQUFxQixDQUFDLENBQUNnUyxLQUFLLENBQUMsVUFBQUMsV0FBVztRQUFBLE9BQUlBLFdBQVcsS0FBSyxJQUFJO01BQUEsRUFBQztJQUNwRztJQUVBLElBQUlDLFNBQVMsR0FBRyxJQUFJO0lBQ3BCLElBQUlDLGVBQWUsR0FBRyxFQUFFO0lBRXhCLElBQUlKLGdCQUFnQixFQUFFO01BQ3BCRyxTQUFTLGdCQUFHemIsS0FBQSxDQUFBMk8sYUFBQSxDQUFDcE8sT0FBTztRQUFDcUcsRUFBRSxnQkFBQTVCLE1BQUEsQ0FBZ0JzQyxVQUFVLENBQUc7UUFBQ3FVLEtBQUssRUFBQztNQUFNLENBQUUsQ0FBQztNQUNwRUQsZUFBZSxHQUFHLG9CQUFvQjtJQUN4QyxDQUFDLE1BQU07TUFDTEQsU0FBUyxnQkFBR3piLEtBQUEsQ0FBQTJPLGFBQUEsQ0FBQ25PLFlBQVk7UUFBQ29HLEVBQUUsNEJBQUE1QixNQUFBLENBQTRCc0MsVUFBVSxDQUFHO1FBQUNxVSxLQUFLLEVBQUM7TUFBTSxDQUFFLENBQUM7TUFDckZELGVBQWUsR0FBRyxzQkFBc0I7SUFDMUM7SUFFQSxJQUFJM1Qsb0JBQW9CLElBQUlULFVBQVUsS0FBSyxpQkFBaUIsRUFBRTtNQUM1RCtULFFBQVEsQ0FBQ3RoQixJQUFJLGVBQ1hpRyxLQUFBLENBQUEyTyxhQUFBLENBQUNyTyxVQUFVO1FBQ1RzRyxFQUFFLG9CQUFBNUIsTUFBQSxDQUFvQnNDLFVBQVUsQ0FBRztRQUNuQ3hLLEdBQUcsRUFBQyxpQkFBaUI7UUFDckI4ZSxPQUFPLEVBQUVWLHNCQUF1QjtRQUNoQ2pULEtBQUssRUFBRXlULGVBQWdCO1FBQ3ZCLGNBQVlBLGVBQWdCO1FBQzVCOVksS0FBSyxFQUFFO1VBQUVpWixNQUFNLEVBQUU7UUFBVTtNQUFFLEdBRTVCSixTQUNTLENBQ2QsQ0FBQztJQUNIOztJQUVBO0lBQ0EsQ0FBQ3RRLGtCQUFrQixJQUFJa1EsUUFBUSxDQUFDdGhCLElBQUksZUFDbENpRyxLQUFBLENBQUEyTyxhQUFBLENBQUEzTyxLQUFBLENBQUE4YixRQUFBLHFCQUNFOWIsS0FBQSxDQUFBMk8sYUFBQSxDQUFDOU4sa0JBQWtCLEVBQUFyRCxRQUFBLEtBQUtxUCxpQkFBaUI7TUFBRVEsU0FBUyxFQUFFRCxlQUFlLElBQUlqRTtJQUFVLEVBQUMsQ0FBQyxlQUNyRm5KLEtBQUEsQ0FBQTJPLGFBQUEsQ0FBQ2pPLFdBQVc7TUFBQ3VILEtBQUssRUFBRXNGLFdBQVk7TUFBQ29GLE9BQU8sRUFBRXJGLGFBQWM7TUFBQ3lPLElBQUksRUFBRTdPLGlCQUFrQjtNQUFDOE8sT0FBTyxFQUFFN08sa0JBQW1CO01BQUNFLFNBQVMsRUFBR0QsZUFBZSxJQUFJakUsU0FBVztNQUFDOFMsSUFBSSxFQUFFek8sVUFBVztNQUFDME8sV0FBVyxFQUFFek87SUFBa0IsQ0FBRSxDQUM3TSxDQUNKLENBQUM7SUFFRCxPQUFPNE4sUUFBUTtFQUNqQixDQUFDO0VBRUQsb0JBQ0VyYixLQUFBLENBQUEyTyxhQUFBLENBQUN4Tyx5QkFBeUI7SUFDeEI2SSxVQUFVLEVBQUVBLFVBQVc7SUFDdkJtVCxZQUFZLEVBQUUsU0FBQUEsYUFBQWxFLGFBQWEsRUFBSTtNQUM3QjtJQUFBLENBQ0E7SUFDRk8sS0FBSyxFQUFFL1EsYUFBYSxhQUFiQSxhQUFhLHVCQUFiQSxhQUFhLENBQUUrUSxLQUFNO0lBQzVCbUIsVUFBVSxFQUFFL1gsYUFBYSxDQUFDNkYsYUFBYSxhQUFiQSxhQUFhLHVCQUFiQSxhQUFhLENBQUVrUyxVQUFVLENBQUU7SUFDckRsUSxlQUFlLEVBQUVBO0VBQWdCLGdCQUVqQ3pKLEtBQUEsQ0FBQTJPLGFBQUEsQ0FBQ2xPLElBQUk7SUFDSG1HLEVBQUUsb0JBQUE1QixNQUFBLENBQW9Cb0IsT0FBTyxDQUFHO0lBQ2hDNkIsS0FBSyxFQUFFcUksY0FBZTtJQUN0QjhMLGFBQWEsRUFBRWxPLGNBQWMsR0FBRyxXQUFZO0lBQzVDbUIsS0FBSyxFQUFFQSxLQUFNO0lBQ2JoSixPQUFPLEVBQUVBLE9BQVE7SUFDakJtSixPQUFPLEVBQUVBLE9BQVE7SUFDakJDLE9BQU8sRUFBRUEsT0FBUTtJQUNqQnpGLFFBQVEsRUFBRUEsUUFBUztJQUNuQjBGLFNBQVMsRUFBRUEsU0FBVTtJQUNyQkcsVUFBVSxFQUFFQSxVQUFXO0lBQ3ZCNUYsV0FBVyxFQUFFQSxXQUFZO0lBQ3pCNkYsWUFBWSxFQUFFQSxZQUFhO0lBQzNCSCxZQUFZLEVBQUVBLFlBQWE7SUFDM0JJLGVBQWUsRUFBRUEsZUFBZ0I7SUFDakNzTSxrQkFBa0IsRUFBRTVOLG9CQUFxQjtJQUN6QzZOLGtCQUFrQjtJQUNsQnpOLFdBQVcsRUFBRUEsV0FBWTtJQUN6QjlILFVBQVUsRUFBRUEsVUFBVSxHQUFHO01BQUEsT0FBTUEsVUFBVSxDQUFDSCxFQUFFLEVBQUVzSCxjQUFjLENBQUM7SUFBQSxJQUFHLElBQUs7SUFDckVxTyxRQUFRLEVBQUUvTCxVQUFVLElBQUlDLGVBQWdCO0lBQ3hDUSxLQUFLLEVBQUU5SCxTQUFTLElBQUksQ0FBQ1Ysa0JBQW1CO0lBQ3hDOEssVUFBVSxFQUFFLFNBQUFBLFdBQUE7TUFBQSxPQUFNcEosUUFBUSxDQUFDO1FBQUV0QixXQUFXLEVBQUU7TUFBSyxDQUFDLENBQUM7SUFBQSxDQUFDO0lBQ2xEc1MsZUFBZSxFQUFFQTtFQUFnQixnQkFFakNuYixLQUFBLENBQUEyTyxhQUFBO0lBQUsvSCxFQUFFLEVBQUM7RUFBcUIsR0FDMUI0VCxzQkFDRSxDQUNELENBQUMsZUFDUHhhLEtBQUEsQ0FBQTJPLGFBQUEsQ0FBQ25NLGtCQUFrQjtJQUNqQjhFLFVBQVUsRUFBRUEsVUFBVztJQUN2QnlVLElBQUksRUFBRTdTLGtCQUFtQjtJQUN6QjhTLE9BQU8sRUFBRSxTQUFBQSxRQUFBO01BQUEsT0FBTTdSLFFBQVEsQ0FBQztRQUFFakIsa0JBQWtCLEVBQUU7TUFBTSxDQUFDLENBQUM7SUFBQSxDQUFDO0lBQ3ZETSxZQUFZLEVBQUVBLFlBQWE7SUFDM0JELHFCQUFxQixFQUFFQSxxQkFBc0I7SUFDN0NpVCxhQUFhLEVBQUUsU0FBQUEsY0FBQ3BaLEtBQUs7TUFBQSxPQUFLK0csUUFBUSxDQUFDO1FBQ2pDVCx5QkFBeUIsRUFBRXRHLEtBQUs7UUFDaEM4RixrQkFBa0IsRUFBRTtNQUN0QixDQUFDLENBQUM7SUFBQTtFQUFDLENBQ0osQ0FDd0IsQ0FBQztBQUVoQztBQUVBaEUsYUFBYSxDQUFDdVgsU0FBUyxHQUFHO0VBQ3hCO0VBQ0F4VyxNQUFNLEVBQUVoRyxTQUFTLENBQUN5YyxNQUFNLENBQUNDLFVBQVU7RUFDbkM7RUFDQXpXLGNBQWMsRUFBRWpHLFNBQVMsQ0FBQzJjLE1BQU07RUFDaEM7RUFDQXpXLFNBQVMsRUFBRWxHLFNBQVMsQ0FBQ3ljLE1BQU07RUFDM0I7RUFDQXRXLE9BQU8sRUFBRW5HLFNBQVMsQ0FBQzRjLE1BQU0sQ0FBQ0YsVUFBVTtFQUNwQztFQUNBdFcsT0FBTyxFQUFFcEcsU0FBUyxDQUFDMmMsTUFBTTtFQUN6QjtFQUNBdFcsa0JBQWtCLEVBQUVyRyxTQUFTLENBQUM2YyxJQUFJO0VBQ2xDO0VBQ0F2VyxXQUFXLEVBQUV0RyxTQUFTLENBQUM4YyxJQUFJLENBQUNKLFVBQVU7RUFDdEM7RUFDQW5XLGNBQWMsRUFBRXZHLFNBQVMsQ0FBQzhjLElBQUk7RUFDOUI7RUFDQXRXLFlBQVksRUFBRXhHLFNBQVMsQ0FBQ3ljLE1BQU07RUFDOUI7RUFDQWhXLGFBQWEsRUFBRXpHLFNBQVMsQ0FBQ3ljLE1BQU07RUFDL0I7RUFDQS9WLFVBQVUsRUFBRTFHLFNBQVMsQ0FBQzJjLE1BQU07RUFDNUI7RUFDQWhXLEVBQUUsRUFBRTNHLFNBQVMsQ0FBQ3ljLE1BQU07RUFDcEI7RUFDQTdWLElBQUksRUFBRTVHLFNBQVMsQ0FBQzhjLElBQUksQ0FBQ0osVUFBVTtFQUMvQjtFQUNBN1YsWUFBWSxFQUFFN0csU0FBUyxDQUFDeWMsTUFBTTtFQUM5QjtFQUNBM1YsVUFBVSxFQUFFOUcsU0FBUyxDQUFDOGMsSUFBSTtFQUMxQjtBQUNGO0FBQ0E7QUFDQTtFQUNFL1YsZUFBZSxFQUFFL0csU0FBUyxDQUFDOGMsSUFBSTtFQUMvQjtFQUNBOVYsNEJBQTRCLEVBQUVoSCxTQUFTLENBQUMyYyxNQUFNO0VBQzlDMVYsU0FBUyxFQUFFakgsU0FBUyxDQUFDK2MsS0FBSyxDQUFDO0lBQ3pCO0lBQ0F4WSxTQUFTLEVBQUV2RSxTQUFTLENBQUN5YyxNQUFNLENBQUNDLFVBQVU7SUFDdEM7SUFDQXhaLE9BQU8sRUFBRWxELFNBQVMsQ0FBQ2dkLFNBQVMsQ0FBQyxDQUFDaGQsU0FBUyxDQUFDNGMsTUFBTSxFQUFFNWMsU0FBUyxDQUFDeWMsTUFBTSxDQUFDLENBQUMsQ0FBQ0MsVUFBVTtJQUM3RTtJQUNBdlosS0FBSyxFQUFFbkQsU0FBUyxDQUFDZ2QsU0FBUyxDQUFDLENBQUNoZCxTQUFTLENBQUM0YyxNQUFNLEVBQUU1YyxTQUFTLENBQUN5YyxNQUFNLENBQUMsQ0FBQyxDQUFDQztFQUNuRSxDQUFDLENBQUM7RUFDRjtFQUNBcFksUUFBUSxFQUFFdEUsU0FBUyxDQUFDK2MsS0FBSyxDQUFDO0lBQ3hCO0lBQ0EzVixVQUFVLEVBQUVwSCxTQUFTLENBQUN5YyxNQUFNLENBQUNDLFVBQVU7SUFDdkM7SUFDQXZWLEtBQUssRUFBRW5ILFNBQVMsQ0FBQ3ljLE1BQU0sQ0FBQ0MsVUFBVTtJQUNsQztJQUNBclYsVUFBVSxFQUFFckgsU0FBUyxDQUFDeWMsTUFBTSxDQUFDQyxVQUFVO0lBQ3ZDO0lBQ0FwVixxQkFBcUIsRUFBRXRILFNBQVMsQ0FBQ3ljLE1BQU0sQ0FBQ0M7RUFDMUMsQ0FBQyxDQUFDO0VBQ0Y7RUFDQW5WLFlBQVksRUFBRXZILFNBQVMsQ0FBQ2lkLEdBQUc7RUFDM0I7RUFDQXpWLGFBQWEsRUFBRXhILFNBQVMsQ0FBQzJjLE1BQU07RUFDL0I7RUFDQWxWLE1BQU0sRUFBRXpILFNBQVMsQ0FBQ3ljLE1BQU0sQ0FBQ0MsVUFBVTtFQUNuQztFQUNBUSxzQkFBc0IsRUFBRWxkLFNBQVMsQ0FBQzhjLElBQUk7RUFDdEM7RUFDQUsscUJBQXFCLEVBQUVuZCxTQUFTLENBQUM4YyxJQUFJO0VBQ3JDO0VBQ0FwVixvQkFBb0IsRUFBRTFILFNBQVMsQ0FBQzhjLElBQUk7RUFDcEM7RUFDQW5WLHFCQUFxQixFQUFFM0gsU0FBUyxDQUFDOGMsSUFBSTtFQUNyQztFQUNBbFYsY0FBYyxFQUFFNUgsU0FBUyxDQUFDOGMsSUFBSTtFQUM5QjtFQUNBalYsZUFBZSxFQUFFN0gsU0FBUyxDQUFDOGMsSUFBSTtFQUMvQjtFQUNBaFYsb0JBQW9CLEVBQUU5SCxTQUFTLENBQUM4YyxJQUFJO0VBQ3BDO0VBQ0E5VSxLQUFLLEVBQUVoSSxTQUFTLENBQUN5YyxNQUFNLENBQUNDLFVBQVU7RUFDbEM7RUFDQTNVLFNBQVMsRUFBRS9ILFNBQVMsQ0FBQzhjLElBQUk7RUFDekI7RUFDQTVVLGdCQUFnQixFQUFFbEksU0FBUyxDQUFDOGMsSUFBSTtFQUNoQztFQUNBN1UsbUJBQW1CLEVBQUVqSSxTQUFTLENBQUM4YyxJQUFJLENBQUNKO0FBQ3RDLENBQUMifQ==
1506
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVnZW5lcmF0b3JSdW50aW1lIiwiZSIsInQiLCJyIiwiT2JqZWN0IiwicHJvdG90eXBlIiwibiIsImhhc093blByb3BlcnR5IiwibyIsImRlZmluZVByb3BlcnR5IiwidmFsdWUiLCJpIiwiU3ltYm9sIiwiYSIsIml0ZXJhdG9yIiwiYyIsImFzeW5jSXRlcmF0b3IiLCJ1IiwidG9TdHJpbmdUYWciLCJkZWZpbmUiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJ3cmFwIiwiR2VuZXJhdG9yIiwiY3JlYXRlIiwiQ29udGV4dCIsIm1ha2VJbnZva2VNZXRob2QiLCJ0cnlDYXRjaCIsInR5cGUiLCJhcmciLCJjYWxsIiwiaCIsImwiLCJmIiwicyIsInkiLCJHZW5lcmF0b3JGdW5jdGlvbiIsIkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlIiwicCIsImQiLCJnZXRQcm90b3R5cGVPZiIsInYiLCJ2YWx1ZXMiLCJnIiwiZGVmaW5lSXRlcmF0b3JNZXRob2RzIiwiZm9yRWFjaCIsIl9pbnZva2UiLCJBc3luY0l0ZXJhdG9yIiwiaW52b2tlIiwiX3R5cGVvZiIsInJlc29sdmUiLCJfX2F3YWl0IiwidGhlbiIsImNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnIiwiRXJyb3IiLCJkb25lIiwibWV0aG9kIiwiZGVsZWdhdGUiLCJtYXliZUludm9rZURlbGVnYXRlIiwic2VudCIsIl9zZW50IiwiZGlzcGF0Y2hFeGNlcHRpb24iLCJhYnJ1cHQiLCJUeXBlRXJyb3IiLCJyZXN1bHROYW1lIiwibmV4dCIsIm5leHRMb2MiLCJwdXNoVHJ5RW50cnkiLCJ0cnlMb2MiLCJjYXRjaExvYyIsImZpbmFsbHlMb2MiLCJhZnRlckxvYyIsInRyeUVudHJpZXMiLCJwdXNoIiwicmVzZXRUcnlFbnRyeSIsImNvbXBsZXRpb24iLCJyZXNldCIsImlzTmFOIiwibGVuZ3RoIiwiZGlzcGxheU5hbWUiLCJpc0dlbmVyYXRvckZ1bmN0aW9uIiwiY29uc3RydWN0b3IiLCJuYW1lIiwibWFyayIsInNldFByb3RvdHlwZU9mIiwiX19wcm90b19fIiwiYXdyYXAiLCJhc3luYyIsIlByb21pc2UiLCJrZXlzIiwicmV2ZXJzZSIsInBvcCIsInByZXYiLCJjaGFyQXQiLCJzbGljZSIsInN0b3AiLCJydmFsIiwiaGFuZGxlIiwiY29tcGxldGUiLCJmaW5pc2giLCJfY2F0Y2giLCJkZWxlZ2F0ZVlpZWxkIiwiYXN5bmNHZW5lcmF0b3JTdGVwIiwiZ2VuIiwicmVqZWN0IiwiX25leHQiLCJfdGhyb3ciLCJrZXkiLCJpbmZvIiwiZXJyb3IiLCJfYXN5bmNUb0dlbmVyYXRvciIsImZuIiwic2VsZiIsImFyZ3MiLCJhcmd1bWVudHMiLCJhcHBseSIsImVyciIsInVuZGVmaW5lZCIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwiYWxsb3dBcnJheUxpa2UiLCJpdCIsIkFycmF5IiwiaXNBcnJheSIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsIkYiLCJfZSIsIm5vcm1hbENvbXBsZXRpb24iLCJkaWRFcnIiLCJzdGVwIiwiX2UyIiwiX2V4dGVuZHMiLCJhc3NpZ24iLCJiaW5kIiwidGFyZ2V0Iiwic291cmNlIiwiX3RvQ29uc3VtYWJsZUFycmF5IiwiYXJyIiwiX2FycmF5V2l0aG91dEhvbGVzIiwiX2l0ZXJhYmxlVG9BcnJheSIsIl9ub25JdGVyYWJsZVNwcmVhZCIsIml0ZXIiLCJmcm9tIiwiX2FycmF5TGlrZVRvQXJyYXkiLCJvd25LZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiX29iamVjdFNwcmVhZCIsIl9kZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwib2JqIiwiX3RvUHJvcGVydHlLZXkiLCJfdG9QcmltaXRpdmUiLCJTdHJpbmciLCJpbnB1dCIsImhpbnQiLCJwcmltIiwidG9QcmltaXRpdmUiLCJyZXMiLCJOdW1iZXIiLCJfc2xpY2VkVG9BcnJheSIsIl9hcnJheVdpdGhIb2xlcyIsIl9pdGVyYWJsZVRvQXJyYXlMaW1pdCIsIl9ub25JdGVyYWJsZVJlc3QiLCJtaW5MZW4iLCJ0b1N0cmluZyIsInRlc3QiLCJsZW4iLCJhcnIyIiwiUmVhY3QiLCJQcm9wVHlwZXMiLCJjb3JlIiwiU2VsZWN0aW9uc0NvbnRleHRQcm92aWRlciIsInVzZm1qcyIsInVzZUVkaXQiLCJJY29uQnV0dG9uIiwiUnhMaW5rMiIsIlJ4TGlua0JyZWFrMiIsIkNhcmQiLCJFcnJvckRpYWxvZyIsIkVSUk9SX1NUQVRFIiwiTUFOSUZFU1RfTk9UX0xPQURFRF9FUlJPUiIsIlVwZGF0ZUJyYW5jaEJ1dHRvbiIsInVzZUJyYW5jaE1lcmdlciIsInVzZUNhcmRTdGF0ZSIsInVzZUNvbnRlbnRVcGRhdGVQcm9wcyIsInVzZU1hc3Rlck1lcmdlUHJvcHMiLCJ1c2VVc2VyQnJhbmNoIiwiZ2V0UXVvdGVNYXRjaGVzSW5Cb29rUmVmIiwiQWxpZ25tZW50SGVscGVycyIsIlVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMiLCJpc0VxdWFsIiwiZ2V0VmVyc2VzIiwiU2NyaXB0dXJlUGFuZSIsIlNjcmlwdHVyZVNlbGVjdG9yIiwidXNlU2NyaXB0dXJlU2V0dGluZ3MiLCJjbGVhbnVwVmVyc2VPYmplY3RzIiwiZmV0Y2hCb29rIiwiZml4T2NjdXJyZW5jZSIsImdldEJvb2tOYW1lRnJvbVVzZm1GaWxlTmFtZSIsImdldFJlc291cmNlTGluayIsImdldFJlc291cmNlTWVzc2FnZSIsImdldFNjcmlwdHVyZVZlcnNpb25TZXR0aW5ncyIsImlzT3JpZ2luYWxCaWJsZSIsImRlbGF5IiwiYXJlTWFwc1RoZVNhbWUiLCJUaXRsZSIsIk5UX09SSUdfTEFORyIsIk9SSUdJTkFMX1NPVVJDRSIsIk9UX09SSUdfTEFORyIsIlZlcnNlU2VsZWN0b3JQb3B1cCIsImdldFBhdGNoIiwiS0VZX0ZPTlRfU0laRV9CQVNFIiwibGFiZWwiLCJzdHlsZSIsIm1hcmdpblRvcCIsIndpZHRoIiwiY29tcGFyZU9iamVjdCIsInZlcnNlUmVmIiwiX3ZlcnNlRGF0YSR2ZXJzZU9iamVjIiwiX3JlZiIsImNoYXB0ZXIiLCJ2ZXJzZSIsInZlcnNlRGF0YSIsInZlcnNlT2JqZWN0cyIsIkpTT04iLCJzdHJpbmdpZnkiLCJhcmVWZXJzZXNTYW1lIiwidmVyc2VzRm9yUmVmMSIsInZlcnNlc0ZvclJlZjIiLCJhcmVTYW1lIiwidmVyc2UxIiwidmVyc2UyIiwiZ2V0Q3VycmVudEJvb2siLCJzY3JpcHR1cmVDb25maWciLCJib29rSWQiLCJfc2NyaXB0dXJlQ29uZmlnJHJlc28iLCJfc2NyaXB0dXJlQ29uZmlnJHJlc28yIiwiX2Jvb2tOYW1lJHRvTG93ZXJDYXNlIiwibGF0ZXN0QmlibGUiLCJyZXNvdXJjZVN0YXRlIiwicmVzb3VyY2UiLCJwcm9qZWN0SWQiLCJmaWxlbmFtZSIsImlzQm9va1ZhbGlkIiwiYm9va05hbWUiLCJ0b0xvd2VyQ2FzZSIsImluY2x1ZGVzIiwiY29uc29sZSIsIndhcm4iLCJjb25jYXQiLCJiaWJsZVVzZm0iLCJTY3JpcHR1cmVDYXJkIiwiX3JlZjIiLCJfc2NyaXB0dXJlQ29uZmlnJHJlc28zIiwiX3NjcmlwdHVyZUNvbmZpZyRyZXNvNCIsIl9zY3JpcHR1cmVDb25maWckcmVzbzUiLCJfc2NyaXB0dXJlQ29uZmlnJHJlc282IiwiX3NjcmlwdHVyZUNvbmZpZyRyZXNvNyIsIl9hdXRoZW50aWNhdGlvbiR0b2tlbiIsIl9zY3JpcHR1cmVDb25maWckcmVzbzkiLCJfc2NyaXB0dXJlQ29uZmlnJHJlc28xMCIsIl9odHRwQ29uZmlnIiwiX2h0dHBDb25maWcyIiwiX2F1dGhlbnRpY2F0aW9uJHVzZXIiLCJfdmVyc2VzRm9yUmVmMyIsIl92ZXJzZXNGb3JSZWY0IiwiYXBwUmVmIiwiYXV0aGVudGljYXRpb24iLCJib29rSW5kZXgiLCJjYXJkTnVtIiwiY2xhc3NlcyIsImRpc2FibGVXb3JkUG9wb3ZlciIsImdldExhbmd1YWdlIiwiZ2V0TGV4aWNvbkRhdGEiLCJncmVla1JlcG9VcmwiLCJoZWJyZXdSZXBvVXJsIiwiaHR0cENvbmZpZyIsImlkIiwiaXNOVCIsImxvZ2dlZEluVXNlciIsIm9uTWluaW1pemUiLCJvblJlc291cmNlRXJyb3IiLCJvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzIiwicmVmZXJlbmNlIiwiX3JlZjIkcmVzb3VyY2UiLCJvd25lciIsImxhbmd1YWdlSWQiLCJyZXNvdXJjZUlkIiwib3JpZ2luYWxMYW5ndWFnZU93bmVyIiwicmVzb3VyY2VMaW5rIiwic2VsZWN0ZWRRdW90ZSIsInNlcnZlciIsInNldENhcmRzTG9hZGluZ01lcmdlIiwic2V0Q2FyZHNMb2FkaW5nVXBkYXRlIiwic2V0Q2FyZHNTYXZpbmciLCJzZXRTYXZlZENoYW5nZXMiLCJzZXRXb3JkQWxpZ25lclN0YXR1cyIsInRyYW5zbGF0ZSIsInRpdGxlIiwidXNlVXNlckxvY2FsU3RvcmFnZSIsInVwZGF0ZU1lcmdlU3RhdGUiLCJfUmVhY3QkdXNlU3RhdGUiLCJ1c2VTdGF0ZSIsImNoZWNrRm9yRWRpdEJyYW5jaCIsImN1cnJlbnRSZWZlcmVuY2UiLCJlZGl0QnJhbmNoUmVhZHkiLCJoYXZlVW5zYXZlZENoYW5nZXMiLCJsYXN0U2VsZWN0ZWRRdW90ZSIsInJlYWR5Rm9yRmV0Y2giLCJyZWYiLCJzYXZlQ2xpY2tlZCIsInNhdmVDb250ZW50Iiwic2F2ZURpZmZQYXRjaCIsInNhdmVGdWxsQmlibGVDb250ZW50Iiwic2VsZWN0aW9ucyIsIk1hcCIsInNob3dBbGlnbm1lbnRQb3B1cCIsInN0YXJ0U2F2ZSIsInVybEVycm9yIiwidXNpbmdVc2VyQnJhbmNoIiwidW5zYXZlZENoYW5nZXNMaXN0IiwidmVyc2VzQWxpZ25tZW50U3RhdHVzIiwidmVyc2VzRm9yUmVmIiwidmVyc2VPYmplY3RzTWFwIiwidmVyc2VTZWxlY3RlZEZvckFsaWdubWVudCIsIl9SZWFjdCR1c2VTdGF0ZTIiLCJzdGF0ZSIsInNldFN0YXRlXyIsIl91c2VVc2VyTG9jYWxTdG9yYWdlIiwiX3VzZVVzZXJMb2NhbFN0b3JhZ2UyIiwiZm9udFNpemUiLCJzZXRGb250U2l6ZSIsImlzTlRfIiwic2V0U3RhdGUiLCJuZXdTdGF0ZSIsInByZXZTdGF0ZSIsImNhY2hlIiwibWF4QWdlIiwibm9DYWNoZSIsIl91c2VTY3JpcHR1cmVTZXR0aW5ncyIsInNldFVybEVycm9yIiwid2hvbGVCb29rIiwiaXNOZXdUZXN0YW1lbnQiLCJzZXRTY3JpcHR1cmUiLCJzY3JpcHR1cmVTZXR0aW5ncyIsInNjcmlwdHVyZVZlcnNpb25IaXN0IiwiZmV0Y2hlZFJlc291cmNlIiwicmVwbyIsInJlZmVyZW5jZV8iLCJ1c2luZ09yaWdpbmFsQmlibGUiLCJjYXJkUmVzb3VyY2VJZCIsInJlZl8iLCJjYW5Vc2VFZGl0QnJhbmNoIiwiX3VzZVVzZXJCcmFuY2giLCJjYXJkSWQiLCJfdXNlVXNlckJyYW5jaCRzdGF0ZSIsImJyYW5jaERldGVybWluZWQiLCJ1c2VyRWRpdEJyYW5jaE5hbWUiLCJfdXNpbmdVc2VyQnJhbmNoIiwid29ya2luZ1Jlc291cmNlQnJhbmNoIiwiX3VzZVVzZXJCcmFuY2gkYWN0aW9uIiwiYWN0aW9ucyIsInN0YXJ0RWRpdEJyYW5jaCIsInN0YXJ0RWRpdCIsImZpbmlzaEVkaXQiLCJfdXNlQnJhbmNoTWVyZ2VyIiwidXNlckJyYW5jaCIsInRva2VuaWQiLCJ0b2tlbiIsInNoYTEiLCJfdXNlQnJhbmNoTWVyZ2VyJHN0YXQiLCJtZXJnZVRvTWFzdGVyIiwibWVyZ2VTdGF0dXMiLCJtZXJnZUZyb21NYXN0ZXIiLCJ1cGRhdGVTdGF0dXMiLCJ1cGRhdGVCdXR0b25Qcm9wcyIsImlzU2F2aW5nIiwib25VcGRhdGUiLCJyZWxvYWRSZXNvdXJjZSIsImNhbGxVcGRhdGVVc2VyQnJhbmNoIiwiaXNFcnJvckRpYWxvZ09wZW4iLCJvbkNsb3NlRXJyb3JEaWFsb2ciLCJpc1VwZGF0ZUxvYWRpbmciLCJpc0xvYWRpbmciLCJkaWFsb2dNZXNzYWdlIiwiZGlhbG9nVGl0bGUiLCJkaWFsb2dMaW5rIiwiZGlhbG9nTGlua1Rvb2x0aXAiLCJvbk1lcmdlIiwibG9nIiwiX3VzZU1hc3Rlck1lcmdlUHJvcHMiLCJpc01lcmdlTG9hZGluZyIsImNhbGxNZXJnZVVzZXJCcmFuY2giLCJ1c2VFZmZlY3QiLCJwcmV2Q2FyZHNMb2FkaW5nIiwid29ya2luZ1JlZiIsInNjcmlwdHVyZVRpdGxlIiwiX3NjcmlwdHVyZUNvbmZpZyRyZXNvOCIsInJlc291cmNlU3RhdHVzIiwibWVzc2FnZSIsImlzQWNjZXNzRXJyb3IiLCJ2ZXJzaW9uIiwidXBkYXRlVGl0bGUiLCJnZXRTY3JpcHR1cmVTZWxlY3RvciIsInNjcmlwdHVyZVNlbGVjdGlvbkNvbmZpZyIsImNyZWF0ZUVsZW1lbnQiLCJlcnJvck1lc3NhZ2UiLCJvbk1lbnVDbG9zZSIsImxhbmd1YWdlSWRfIiwibGFuZ3VhZ2UiLCJkaXJlY3Rpb24iLCJfcmVmZXJlbmNlIiwiaXNIZWJyZXciLCJmb250RmFjdG9yIiwic2NhbGVkRm9udFNpemUiLCJpdGVtcyIsIl91c2VDYXJkU3RhdGUiLCJfdXNlQ2FyZFN0YXRlJHN0YXRlIiwiaGVhZGVycyIsImZpbHRlcnMiLCJpdGVtSW5kZXgiLCJtYXJrZG93blZpZXciLCJfdXNlQ2FyZFN0YXRlJGFjdGlvbnMiLCJzZXRGaWx0ZXJzIiwic2V0SXRlbUluZGV4Iiwic2V0TWFya2Rvd25WaWV3IiwicmVmU3R5bGUiLCJ1c2VNZW1vIiwiZm9udEZhbWlseSIsIk1hdGgiLCJyb3VuZCIsImNvbnRlbnRTdHlsZSIsInNjcmlwdHVyZUxhYmVsIiwiZGlzYWJsZVdvcmRQb3BvdmVyXyIsImVuYWJsZUVkaXQiLCJlbmFibGVBbGlnbm1lbnQiLCJvcmlnaW5hbFJlcG9VcmwiLCJzY3JpcHR1cmVBbGlnbm1lbnRFZGl0Q29uZmlnIiwiY3VycmVudFZlcnNlUmVmIiwiX3NldFNhdmVkQ2hhbmdlcyIsInNvdXJjZUxhbmd1YWdlIiwidGFyZ2V0TGFuZ3VhZ2UiLCJjdXJyZW50SW5kZXgiLCJzYXZlZCIsIl9yZWYzIiwiX3JlZjMkZ2V0Q2hhbmdlcyIsImdldENoYW5nZXMiLCJfcmVmMyRjbGVhckNoYW5nZXMiLCJjbGVhckNoYW5nZXMiLCJfcmVmMyRzdGF0ZSIsIl91bnNhdmVkQ2hhbmdlc0xpc3QiLCJfaGF2ZVVuc2F2ZWRDaGFuZ2VzIiwiZmluZFJlZkluQXJyYXkiLCJmaW5kSXRlbSIsImNodW5rcyIsInJlZkxlbiIsImluZGV4IiwiZmluZEluZGV4IiwiY2h1bmsiLCJpZHgiLCJzdWJzdHJpbmciLCJuZXh0Q2hhciIsImdldEJvb2tOYW1lIiwiX3NjcmlwdHVyZUNvbmZpZyRyZWZlIiwiYm9va0NhcHMiLCJ0b1VwcGVyQ2FzZSIsImZpbGVwYXRoIiwic2hhIiwiX3VzZUVkaXQiLCJjb250ZW50IiwiY29uZmlnIiwiZG9udENyZWF0ZUJyYW5jaCIsInRpbWVvdXQiLCJzZXJ2ZXJUaW1lT3V0IiwiYXV0aG9yIiwiZW1haWwiLCJ1c2VyIiwiYnJhbmNoIiwic2F2ZUVycm9yIiwiaXNTYXZlRXJyb3IiLCJpc0Vycm9yIiwib25TYXZlRWRpdCIsIm9uU2F2ZUVkaXRQYXRjaCIsIl9zYXZlU3VjY2VzZnVsIiwicHJldkNhcmRzU2F2aW5nIiwidW5zYXZlZENhcmRJbmRpY2VzIiwiX2l0ZXJhdG9yIiwiX3N0ZXAiLCJjYXJkSW5kZXgiLCJfc2F2ZUVkaXQiLCJfcmVmNCIsIl9jYWxsZWUiLCJ1cGxvYWRGdW5jdGlvbiIsInN1Y2Nlc3MiLCJyZXN1bHRzIiwiX3NhdmVDb250ZW50IiwiZmlsZVNoYSIsInNhdmVkQmlibGVVc2ZtIiwiZWRpdGVkQmlibGVVc2ZtIiwidXBUb0RhdGUiLCJkaWZmUGF0Y2giLCJfY2FsbGVlJCIsIl9jb250ZXh0IiwibWVyZ2VWZXJzZU9iamVjdHNJbnRvQmlibGVVc2ZtIiwidXBkYXRlZFZlcnNlT2JqZWN0cyIsIm5ld1VzZm0iLCJjaGFwdGVyQ2h1bmtzIiwic3BsaXQiLCJjaGFwdGVySW5kZXgiLCJjdXJyZW50Q2hhcHRlciIsInZlcnNlQ2h1bmtzIiwidmVyc2VJbmRleCIsImZyb250TWF0dGVyIiwibmV3VmVyc2VVc2ZtIiwiY29udmVydFZlcnNlRGF0YVRvVVNGTSIsIm9sZFZlcnNlIiwicHJlZml4TGVuIiwiaW5kZXhPZiIsInZlcnNlTnVtTGVuIiwibmV3Q2hhcHRlciIsImpvaW4iLCJnZXRSZWFkeUZvclNhdmUiLCJfZ2V0UmVhZHlGb3JTYXZlIiwiX2NhbGxlZTIiLCJjcmVhdGVFZGl0QnJhbmNoIiwiYmlibGVVc2ZtSW5pdGlhbCIsImJpYmxlVXNmbU5ldyIsIm1lcmdlRmFpbCIsIl9jYXJkTnVtIiwiX2l0ZXJhdG9yMiIsIl9zdGVwMiIsIl91bnNhdmVkQ2hhbmdlc0xpc3QkXyIsIl9zdGF0ZSIsIl9nZXRDaGFuZ2VzIiwiX3JlZjUiLCJfc2F2ZURpZmZQYXRjaCIsIl9zYXZlRnVsbEJpYmxlQ29udGVudCIsIm5ld0Jvb2tKc29uIiwiX2l0ZXJhdG9yMyIsIl9zdGVwMyIsIl9jYXJkSW5kZXgiLCJfY2FyZE51bTIiLCJfdW5zYXZlZENoYW5nZXNMaXN0JF8yIiwiX2dldENoYW5nZXMyIiwiX3N0YXRlMiIsIl9uZXdVc2ZtIiwiX2dldENoYW5nZXMzIiwibmV3VmVyc2VUZXh0IiwiX3JlZjYiLCJfdXBkYXRlZFZlcnNlT2JqZWN0cyIsInRhcmdldFZlcnNlT2JqZWN0c18iLCJfQWxpZ25tZW50SGVscGVycyR1cGQiLCJ0YXJnZXRWZXJzZU9iamVjdHMiLCJfc2NyaXB0dXJlQ29uZmlnJHJlc28xMSIsIl9jYWxsZWUyJCIsIl9jb250ZXh0MiIsInBhcnNlSW50IiwidDAiLCJ1cGRhdGVBbGlnbm1lbnRzVG9UYXJnZXRWZXJzZSIsInVwZGF0ZVZlcnNlIiwidG9VU0ZNIiwiZm9yY2VkTmV3TGluZXMiLCJpbml0aWFsIiwiX3JlZjciLCJfdmVyc2VzRm9yUmVmIiwibmV3U2VsZWN0aW9ucyIsInVwZGF0ZVNlbGVjdGlvbnMiLCJfbWFwIiwib3JpZ2luYWxCb29rSWQiLCJib29rVmVyc2VPYmplY3QiLCJjaGFwdGVycyIsIm5ld1NlbGVjdGVkUXVvdGUiLCJxdW90ZSIsIl9zZWxlY3RlZFF1b3RlJHJlZmVyZTMiLCJvcmlnaW5hbFZlcnNlcyIsInN1YnN0aXR1dGUiLCJzdGFydFZlcnNlIiwibGFzdFZlcnNlIiwiX3ZlcnNlIiwidmVyc2VzIiwiX2l0ZXJhdG9yNCIsIl9zdGVwNCIsInZlcnNlSXRlbSIsInZvIiwiX2Jvb2tWZXJzZU9iamVjdCRfY2hhIiwic2V0IiwiX3NlbGVjdGVkUXVvdGUkcmVmZXJlIiwiX3NlbGVjdGVkUXVvdGUkcmVmZXJlMiIsInN1YlJlZiIsInF1b3RlTWF0Y2hlcyIsImJvb2tPYmplY3QiLCJvY2N1cnJlbmNlIiwic2l6ZSIsIndvcmRzIiwiX2tleSIsIm1hcCIsIndvcmQiLCJ0ZXh0Iiwibm9ybWFsaXplU3RyaW5nIiwiYm9va3NOb3RTYW1lIiwidXBkYXRlVmVyc2VzQWxpZ25tZW50U3RhdHVzIiwiYWxpZ25lZCIsIl92ZXJzZXNGb3JSZWYyIiwiX3JlZjgiLCJyZW5kZXJlZFNjcmlwdHVyZVBhbmVzIiwiX2N1cnJlbnRWZXJzZURhdGEiLCJfY3VycmVudFZlcnNlRGF0YSR2ZXIiLCJpbml0aWFsVmVyc2VPYmplY3RzIiwiX3JlZjkiLCJfc2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZyIsImlzVmVyc2VTZWxlY3RlZEZvckFsaWdubWVudCIsImRldGVybWluaW5nQnJhbmNoIiwib25BbGlnbm1lbnRGaW5pc2giLCJzYXZpbmciLCJoYW5kbGVBbGlnbkJ1dHRvbkNsaWNrIiwib25SZW5kZXJUb29sYmFyIiwiX3JlZjEwIiwibmV3SXRlbXMiLCJhbGxWZXJzZXNBbGlnbmVkIiwiZXZlcnkiLCJhbGlnblN0YXR1cyIsImFsaWduSWNvbiIsImFsaWduQnV0dG9uVGV4dCIsImNvbG9yIiwib25DbGljayIsImN1cnNvciIsIkZyYWdtZW50Iiwib3BlbiIsIm9uQ2xvc2UiLCJsaW5rIiwibGlua1Rvb2x0aXAiLCJvblNlbGVjdGlvbnMiLCJzZXR0aW5nc1RpdGxlIiwiZ2V0Q3VzdG9tQ29tcG9uZW50IiwiaGlkZU1hcmtkb3duVG9nZ2xlIiwiZWRpdGFibGUiLCJvblZlcnNlU2VsZWN0IiwicHJvcFR5cGVzIiwic3RyaW5nIiwiaXNSZXF1aXJlZCIsIm9iamVjdCIsIm51bWJlciIsImJvb2wiLCJmdW5jIiwic2hhcGUiLCJvbmVPZlR5cGUiLCJhbnkiLCJzZXRBcmVSZXNvdXJjZXNMb2FkaW5nIiwic2V0QXJlUmVzb3VyY2VzU2F2aW5nIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvU2NyaXB0dXJlQ2FyZC9TY3JpcHR1cmVDYXJkLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCAqIGFzIFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJ1xuaW1wb3J0IHsgY29yZSwgU2VsZWN0aW9uc0NvbnRleHRQcm92aWRlciB9IGZyb20gJ3NjcmlwdHVyZS1yZXNvdXJjZXMtcmNsJ1xuaW1wb3J0IHVzZm1qcyBmcm9tICd1c2ZtLWpzJ1xuaW1wb3J0IHsgdXNlRWRpdCB9IGZyb20gJ2dpdGVhLXJlYWN0LXRvb2xraXQnXG5pbXBvcnQgeyBJY29uQnV0dG9uIH0gZnJvbSAnQG11aS9tYXRlcmlhbCdcbmltcG9ydCB7IFJ4TGluazIsIFJ4TGlua0JyZWFrMiB9IGZyb20gJ3JlYWN0LWljb25zL3J4J1xuaW1wb3J0IHtcbiAgQ2FyZCxcbiAgRXJyb3JEaWFsb2csXG4gIEVSUk9SX1NUQVRFLFxuICBNQU5JRkVTVF9OT1RfTE9BREVEX0VSUk9SLFxuICBVcGRhdGVCcmFuY2hCdXR0b24sXG4gIHVzZUJyYW5jaE1lcmdlcixcbiAgdXNlQ2FyZFN0YXRlLFxuICB1c2VDb250ZW50VXBkYXRlUHJvcHMsXG4gIHVzZU1hc3Rlck1lcmdlUHJvcHMsXG4gIHVzZVVzZXJCcmFuY2gsXG59IGZyb20gJ3RyYW5zbGF0aW9uLWhlbHBzLXJjbCdcbi8vIEB0cy1pZ25vcmVcbmltcG9ydCB7IGdldFF1b3RlTWF0Y2hlc0luQm9va1JlZiB9IGZyb20gJ3V3LXF1b3RlLWhlbHBlcnMnXG5pbXBvcnQgeyBBbGlnbm1lbnRIZWxwZXJzLCBVc2ZtRmlsZUNvbnZlcnNpb25IZWxwZXJzIH0gZnJvbSAnd29yZC1hbGlnbmVyLXJjbCdcbmltcG9ydCB7IGlzRXF1YWwgfSBmcm9tICdAcmVhY3QtaG9va3ovZGVlcC1lcXVhbCdcbmltcG9ydCB7IGdldFZlcnNlcyB9IGZyb20gJ2JpYmxlLXJlZmVyZW5jZS1yYW5nZSdcbmltcG9ydCB7IFNjcmlwdHVyZVBhbmUsIFNjcmlwdHVyZVNlbGVjdG9yIH0gZnJvbSAnLi4nXG5pbXBvcnQgeyB1c2VTY3JpcHR1cmVTZXR0aW5ncyB9IGZyb20gJy4uLy4uL2hvb2tzL3VzZVNjcmlwdHVyZVNldHRpbmdzJ1xuaW1wb3J0IHtcbiAgY2xlYW51cFZlcnNlT2JqZWN0cyxcbiAgZmV0Y2hCb29rLFxuICBmaXhPY2N1cnJlbmNlLFxuICBnZXRCb29rTmFtZUZyb21Vc2ZtRmlsZU5hbWUsXG4gIGdldFJlc291cmNlTGluayxcbiAgZ2V0UmVzb3VyY2VNZXNzYWdlLFxuICBnZXRTY3JpcHR1cmVWZXJzaW9uU2V0dGluZ3MsXG4gIGlzT3JpZ2luYWxCaWJsZSxcbn0gZnJvbSAnLi4vLi4vdXRpbHMvU2NyaXB0dXJlU2V0dGluZ3MnXG5pbXBvcnQgeyBkZWxheSB9IGZyb20gJy4uLy4uL3V0aWxzL2RlbGF5J1xuaW1wb3J0IHsgYXJlTWFwc1RoZVNhbWUgfSBmcm9tICcuLi8uLi91dGlscy9tYXBzJ1xuaW1wb3J0IHsgVGl0bGUgfSBmcm9tICcuLi9TY3JpcHR1cmVQYW5lL3N0eWxlZCdcbmltcG9ydCB7XG4gIE5UX09SSUdfTEFORyxcbiAgT1JJR0lOQUxfU09VUkNFLFxuICBPVF9PUklHX0xBTkcsXG59IGZyb20gJy4uLy4uL3V0aWxzJ1xuaW1wb3J0IHsgVmVyc2VTZWxlY3RvclBvcHVwIH0gZnJvbSAnLi4vVmVyc2VTZWxlY3RvclBvcHVwJ1xuaW1wb3J0IHsgZ2V0UGF0Y2ggfSBmcm9tICcuLi8uLi91dGlscy9maWxlcydcblxuY29uc3QgS0VZX0ZPTlRfU0laRV9CQVNFID0gJ3NjcmlwdHVyZVBhbmVGb250U2l6ZV8nXG5jb25zdCBsYWJlbCA9ICdWZXJzaW9uJ1xuY29uc3Qgc3R5bGUgPSB7IG1hcmdpblRvcDogJzE2cHgnLCB3aWR0aDogJzUwMHB4JyB9XG5cbi8qKlxuICogY3JlYXRlIGEgc2hvcnQgY29tcGFyaXNvbiB2ZXJzZSByZWYgb2JqZWN0IHdpdGhvdXQgYWxsIHRoZSB2ZXJzZURhdGFcbiAqIEBwYXJhbSB2ZXJzZVJlZlxuICovXG5mdW5jdGlvbiBjb21wYXJlT2JqZWN0KHZlcnNlUmVmKSB7XG4gIGNvbnN0IHtcbiAgICBjaGFwdGVyLFxuICAgIHZlcnNlLFxuICAgIHZlcnNlRGF0YSxcbiAgfSA9IHZlcnNlUmVmIHx8IHt9XG4gIGNvbnN0IHZlcnNlT2JqZWN0cyA9IHZlcnNlRGF0YT8udmVyc2VPYmplY3RzPy5sZW5ndGggPyBKU09OLnN0cmluZ2lmeSh2ZXJzZURhdGEudmVyc2VPYmplY3RzKSA6ICcnXG4gIHJldHVybiB7XG4gICAgY2hhcHRlcixcbiAgICB2ZXJzZSxcbiAgICB2ZXJzZU9iamVjdHMsXG4gIH1cbn1cblxuLyoqXG4gKiBjb21wYXJlIHR3byB2ZXJzZSByZWZzIHRvIHNlZSBpZiB0aGV5IGFyZSBzdWJzdGFudGlhbGx5IHNpbWlsYXJcbiAqIEBwYXJhbSB2ZXJzZXNGb3JSZWYxXG4gKiBAcGFyYW0gdmVyc2VzRm9yUmVmMlxuICovXG5mdW5jdGlvbiBhcmVWZXJzZXNTYW1lKHZlcnNlc0ZvclJlZjE6IGFueVtdLCB2ZXJzZXNGb3JSZWYyOiBhbnlbXSkge1xuICB2ZXJzZXNGb3JSZWYxID0gdmVyc2VzRm9yUmVmMSB8fCBbXVxuICB2ZXJzZXNGb3JSZWYyID0gdmVyc2VzRm9yUmVmMiB8fCBbXVxuICBsZXQgYXJlU2FtZSA9IGZhbHNlXG5cbiAgaWYgKHZlcnNlc0ZvclJlZjEubGVuZ3RoID09PSB2ZXJzZXNGb3JSZWYyLmxlbmd0aCkge1xuICAgIGFyZVNhbWUgPSB0cnVlXG5cbiAgICBmb3IgKGxldCBpID0gMCwgbD0gdmVyc2VzRm9yUmVmMS5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgIGNvbnN0IHZlcnNlMSA9IGNvbXBhcmVPYmplY3QodmVyc2VzRm9yUmVmMVtpXSlcbiAgICAgIGNvbnN0IHZlcnNlMiA9IGNvbXBhcmVPYmplY3QodmVyc2VzRm9yUmVmMltpXSlcbiAgICAgIGFyZVNhbWUgPSBpc0VxdWFsKHZlcnNlMSwgdmVyc2UyKVxuXG4gICAgICBpZiAoIWFyZVNhbWUpIHtcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gYXJlU2FtZVxufVxuXG4vKipcbiAqIGdldCB0aGUgVVNGTSBmb3IgYm9va0lkIGZyb20gc2NyaXB0dXJlQ29uZmlnLlxuICogQHBhcmFtIHtvYmplY3R9IHNjcmlwdHVyZUNvbmZpZ1xuICogQHBhcmFtIHtzdHJpbmd9IGJvb2tJZFxuICovXG5leHBvcnQgY29uc3QgZ2V0Q3VycmVudEJvb2sgPSAoc2NyaXB0dXJlQ29uZmlnLCBib29rSWQpID0+IHtcbiAgY29uc3QgbGF0ZXN0QmlibGUgPSBzY3JpcHR1cmVDb25maWc/LnJlc291cmNlU3RhdGU/LnJlc291cmNlPy5wcm9qZWN0SWRcbiAgY29uc3QgZmlsZW5hbWUgPSBzY3JpcHR1cmVDb25maWc/LnJlc291cmNlU3RhdGU/LnJlc291cmNlPy5uYW1lIC8vIExpa2UgXCI1Ny1USVQudXNmbVwiXG4gIGxldCBpc0Jvb2tWYWxpZCA9IGZhbHNlXG4gIGNvbnN0IGJvb2tOYW1lID0gZ2V0Qm9va05hbWVGcm9tVXNmbUZpbGVOYW1lKGZpbGVuYW1lKVxuICBpc0Jvb2tWYWxpZCA9IGJvb2tOYW1lPy50b0xvd2VyQ2FzZSgpPy5pbmNsdWRlcyhib29rSWQpXG4gIGlmICghaXNCb29rVmFsaWQpIHtcbiAgICBjb25zb2xlLndhcm4oYEN1cnJlbnQgYm9va0lkIGlzICR7Ym9va0lkfSBhbmQgVVNGTSBmaWxlIGlzICR7ZmlsZW5hbWV9YClcbiAgfVxuICBpZiAobGF0ZXN0QmlibGU/LnRvTG93ZXJDYXNlKCkgIT09IGJvb2tJZCkge1xuICAgIGNvbnNvbGUud2FybihgQ3VycmVudCBib29rSWQgaXMgJHtib29rSWR9IGJ1dCBmZXRjaGVkIHByb2plY3RJZCBpcyAke2xhdGVzdEJpYmxlfWApXG4gICAgaXNCb29rVmFsaWQgPSBmYWxzZVxuICB9XG4gIGlmIChpc0Jvb2tWYWxpZCkge1xuICAgIGNvbnN0IGJpYmxlVXNmbSA9IHNjcmlwdHVyZUNvbmZpZz8uYmlibGVVc2ZtO1xuICAgIGlmIChiaWJsZVVzZm0pIHtcbiAgICAgIHJldHVybiBiaWJsZVVzZm1cbiAgICB9XG4gICAgY29uc29sZS5lcnJvcihgZ2V0Q3VycmVudEJvb2soKSAtIEJpYmxlIFVTRk0gbWlzc2luZ2ApXG4gIH1cbiAgY29uc29sZS5lcnJvcihgZ2V0Q3VycmVudEJvb2soKSAtIEV4cGVjdGVkICR7Ym9va0lkfSBidXQgZ290IGZpbGUgJHtmaWxlbmFtZX1gKVxuICByZXR1cm4gbnVsbFxufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBTY3JpcHR1cmVDYXJkKHtcbiAgYXBwUmVmLFxuICBhdXRoZW50aWNhdGlvbixcbiAgYm9va0luZGV4LFxuICBjYXJkTnVtLFxuICBjbGFzc2VzLFxuICBkaXNhYmxlV29yZFBvcG92ZXIsXG4gIGdldExhbmd1YWdlLFxuICBnZXRMZXhpY29uRGF0YSxcbiAgZ3JlZWtSZXBvVXJsLFxuICBoZWJyZXdSZXBvVXJsLFxuICBodHRwQ29uZmlnLFxuICBpZCxcbiAgaXNOVCxcbiAgbG9nZ2VkSW5Vc2VyLFxuICBvbk1pbmltaXplLFxuICBvblJlc291cmNlRXJyb3IsXG4gIG9yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHMsXG4gIHJlZmVyZW5jZSxcbiAgcmVzb3VyY2U6IHtcbiAgICBvd25lcixcbiAgICBsYW5ndWFnZUlkLFxuICAgIHJlc291cmNlSWQsXG4gICAgb3JpZ2luYWxMYW5ndWFnZU93bmVyLFxuICB9LFxuICByZXNvdXJjZUxpbmssXG4gIHNlbGVjdGVkUXVvdGUsXG4gIHNlcnZlcixcbiAgc2V0Q2FyZHNMb2FkaW5nTWVyZ2UsXG4gIHNldENhcmRzTG9hZGluZ1VwZGF0ZSxcbiAgc2V0Q2FyZHNTYXZpbmcsXG4gIHNldFNhdmVkQ2hhbmdlcyxcbiAgc2V0V29yZEFsaWduZXJTdGF0dXMsXG4gIHRyYW5zbGF0ZSxcbiAgdGl0bGUsXG4gIHVzZVVzZXJMb2NhbFN0b3JhZ2UsXG4gIHVwZGF0ZU1lcmdlU3RhdGUsXG59KSB7XG4gIGNvbnN0IGJvb2tJZCA9IHJlZmVyZW5jZT8ucHJvamVjdElkXG4gIGNvbnN0IFtzdGF0ZSwgc2V0U3RhdGVfXSA9IFJlYWN0LnVzZVN0YXRlKHtcbiAgICBjaGVja0ZvckVkaXRCcmFuY2g6IDAsXG4gICAgY3VycmVudFJlZmVyZW5jZTogbnVsbCxcbiAgICBlZGl0QnJhbmNoUmVhZHk6IGZhbHNlLFxuICAgIGhhdmVVbnNhdmVkQ2hhbmdlczogZmFsc2UsXG4gICAgbGFzdFNlbGVjdGVkUXVvdGU6IG51bGwsXG4gICAgcmVhZHlGb3JGZXRjaDogZmFsc2UsXG4gICAgcmVmOiBhcHBSZWYsXG4gICAgc2F2ZUNsaWNrZWQ6IGZhbHNlLFxuICAgIHNhdmVDb250ZW50OiBudWxsLFxuICAgIHNhdmVEaWZmUGF0Y2g6IGZhbHNlLFxuICAgIHNhdmVGdWxsQmlibGVDb250ZW50OiBudWxsLFxuICAgIHNlbGVjdGlvbnM6IG5ldyBNYXAoKSxcbiAgICBzaG93QWxpZ25tZW50UG9wdXA6IGZhbHNlLFxuICAgIHN0YXJ0U2F2ZTogZmFsc2UsXG4gICAgdXJsRXJyb3I6IG51bGwsXG4gICAgdXNpbmdVc2VyQnJhbmNoOiBmYWxzZSxcbiAgICB1bnNhdmVkQ2hhbmdlc0xpc3Q6IHt9LFxuICAgIHZlcnNlc0FsaWdubWVudFN0YXR1czogbnVsbCxcbiAgICB2ZXJzZXNGb3JSZWY6IG51bGwsXG4gICAgdmVyc2VPYmplY3RzTWFwOiBuZXcgTWFwKCksXG4gICAgdmVyc2VTZWxlY3RlZEZvckFsaWdubWVudDogbnVsbCxcbiAgfSlcbiAgY29uc3Qge1xuICAgIGNoZWNrRm9yRWRpdEJyYW5jaCxcbiAgICBjdXJyZW50UmVmZXJlbmNlLFxuICAgIGVkaXRCcmFuY2hSZWFkeSxcbiAgICBoYXZlVW5zYXZlZENoYW5nZXMsXG4gICAgbGFzdFNlbGVjdGVkUXVvdGUsXG4gICAgcmVhZHlGb3JGZXRjaCxcbiAgICByZWYsXG4gICAgc2F2ZUNsaWNrZWQsXG4gICAgc2F2ZUNvbnRlbnQsXG4gICAgc2F2ZURpZmZQYXRjaCxcbiAgICBzYXZlRnVsbEJpYmxlQ29udGVudCxcbiAgICBzZWxlY3Rpb25zLFxuICAgIHNob3dBbGlnbm1lbnRQb3B1cCxcbiAgICBzdGFydFNhdmUsXG4gICAgdXJsRXJyb3IsXG4gICAgdXNpbmdVc2VyQnJhbmNoLFxuICAgIHVuc2F2ZWRDaGFuZ2VzTGlzdCxcbiAgICB2ZXJzZU9iamVjdHNNYXAsXG4gICAgdmVyc2VTZWxlY3RlZEZvckFsaWdubWVudCxcbiAgICB2ZXJzZXNBbGlnbm1lbnRTdGF0dXMsXG4gICAgdmVyc2VzRm9yUmVmLFxuICB9ID0gc3RhdGVcblxuICBjb25zdCBbZm9udFNpemUsIHNldEZvbnRTaXplXSA9IHVzZVVzZXJMb2NhbFN0b3JhZ2UoS0VZX0ZPTlRfU0laRV9CQVNFICsgY2FyZE51bSwgMTAwKVxuICBjb25zdCBpc05UXyA9IGlzTlQoYm9va0lkKVxuXG4gIGZ1bmN0aW9uIHNldFN0YXRlKG5ld1N0YXRlKSB7XG4gICAgc2V0U3RhdGVfKHByZXZTdGF0ZSA9PiAoeyAuLi5wcmV2U3RhdGUsIC4uLm5ld1N0YXRlIH0pKVxuICB9XG5cbiAgaHR0cENvbmZpZyA9IHtcbiAgICAuLi5odHRwQ29uZmlnLFxuICAgIGNhY2hlOiB7IG1heEFnZTogMCB9LFxuICAgIG5vQ2FjaGU6IHRydWUsXG4gIH0gLy8gZGlzYWJsZSBodHRwIGNhY2hpbmdcblxuICBjb25zdCB7XG4gICAgaXNOZXdUZXN0YW1lbnQsXG4gICAgc2NyaXB0dXJlQ29uZmlnLFxuICAgIHNldFNjcmlwdHVyZSxcbiAgICBzY3JpcHR1cmVTZXR0aW5ncyxcbiAgICBzY3JpcHR1cmVWZXJzaW9uSGlzdCxcbiAgfSA9IHVzZVNjcmlwdHVyZVNldHRpbmdzKHtcbiAgICBhcHBSZWY6IHJlZixcbiAgICBjYXJkTnVtLFxuICAgIGRpc2FibGVXb3JkUG9wb3ZlcixcbiAgICBncmVla1JlcG9VcmwsXG4gICAgaGVicmV3UmVwb1VybCxcbiAgICBodHRwQ29uZmlnLFxuICAgIGlzTlQsXG4gICAgbGFuZ3VhZ2VJZCxcbiAgICBvcmlnaW5hbExhbmd1YWdlT3duZXIsXG4gICAgb3duZXIsXG4gICAgcmVhZHlGb3JGZXRjaCxcbiAgICByZWZlcmVuY2U6IGN1cnJlbnRSZWZlcmVuY2UgfHwgcmVmZXJlbmNlLFxuICAgIHJlc291cmNlSWQsXG4gICAgcmVzb3VyY2VMaW5rLFxuICAgIHNldFVybEVycm9yOiAoZXJyb3IpID0+IHNldFN0YXRlKHsgdXJsRXJyb3I6IGVycm9yIH0pLFxuICAgIHNlcnZlcixcbiAgICB0aXRsZSxcbiAgICB1c2VVc2VyTG9jYWxTdG9yYWdlLFxuICAgIHdob2xlQm9vazogdHJ1ZSxcbiAgfSlcblxuICBjb25zdCBmZXRjaGVkUmVzb3VyY2UgPSBzY3JpcHR1cmVDb25maWc/LnJlc291cmNlU3RhdGVcbiAgLy8gQHRzLWlnbm9yZVxuICBjb25zdCByZXBvID0gYCR7c2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZT8ubGFuZ3VhZ2VJZH1fJHtzY3JpcHR1cmVDb25maWc/LnJlc291cmNlPy5wcm9qZWN0SWR9YFxuICBjb25zdCByZWZlcmVuY2VfID0gc2NyaXB0dXJlQ29uZmlnPy5yZWZlcmVuY2UgfHwgbnVsbFxuICBjb25zdCB1c2luZ09yaWdpbmFsQmlibGUgPSBpc09yaWdpbmFsQmlibGUoc2NyaXB0dXJlQ29uZmlnWydyZXNvdXJjZSddPy5wcm9qZWN0SWQpXG5cblxuICAvLyBAdHMtaWdub3JlXG4gIGNvbnN0IGNhcmRSZXNvdXJjZUlkID0gc2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZT8ucHJvamVjdElkIHx8IHJlc291cmNlSWRcbiAgLy8gQHRzLWlnbm9yZVxuICBsZXQgcmVmXyA9IHNjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2U/LnJlZiB8fCBhcHBSZWZcbiAgY29uc3QgY2FuVXNlRWRpdEJyYW5jaCA9ICEhKGxvZ2dlZEluVXNlciAmJiBhdXRoZW50aWNhdGlvbiAmJiAocmVzb3VyY2VJZCAhPT0gT1JJR0lOQUxfU09VUkNFKSAmJiAvLyBUUklDS1kgaWYgbm90IG9yaWdpbmFsIGxhbmd1YWdlIGFuZCB3ZSBoYXZlIGxvZ2luIGRhdGEsIHRoZW4gd2UgY2FuIHVzZSB0aGUgZWRpdCBicmFuY2hcbiAgICAoKHJlZl8gPT09ICdtYXN0ZXInKSB8fCAocmVmXy5pbmNsdWRlcyhsb2dnZWRJblVzZXIpKSkpIC8vIGFsc28gbWFrZSBzdXJlIG5vdCBhIHZlcnNpb24gdGFnXG5cbiAgY29uc3Qge1xuICAgIHN0YXRlOiB7XG4gICAgICBicmFuY2hEZXRlcm1pbmVkLFxuICAgICAgdXNlckVkaXRCcmFuY2hOYW1lLFxuICAgICAgdXNpbmdVc2VyQnJhbmNoOiBfdXNpbmdVc2VyQnJhbmNoLFxuICAgICAgd29ya2luZ1Jlc291cmNlQnJhbmNoLFxuICAgIH0sXG4gICAgYWN0aW9uczoge1xuICAgICAgc3RhcnRFZGl0OiBzdGFydEVkaXRCcmFuY2gsXG4gICAgICBmaW5pc2hFZGl0LFxuICAgIH0sXG4gIH0gPSB1c2VVc2VyQnJhbmNoKHtcbiAgICBhcHBSZWYsXG4gICAgYXV0aGVudGljYXRpb246IGNhblVzZUVkaXRCcmFuY2ggPyBhdXRoZW50aWNhdGlvbiA6IG51bGwsXG4gICAgYm9va0lkLFxuICAgIGNhcmRJZDogaWQsXG4gICAgY2FyZFJlc291cmNlSWQsXG4gICAgY2hlY2tGb3JFZGl0QnJhbmNoLFxuICAgIGxhbmd1YWdlSWQsXG4gICAgbG9nZ2VkSW5Vc2VyOiBjYW5Vc2VFZGl0QnJhbmNoID8gbG9nZ2VkSW5Vc2VyIDogbnVsbCxcbiAgICBvd25lcixcbiAgICBvblJlc291cmNlRXJyb3IsXG4gICAgc2VydmVyLFxuICAgIHVzZVVzZXJMb2NhbFN0b3JhZ2UsXG4gIH0pXG5cbiAgY29uc3QgX3VzZUJyYW5jaE1lcmdlciA9IHVzZUJyYW5jaE1lcmdlcih7IHNlcnZlciwgb3duZXIsIHJlcG8sIHVzZXJCcmFuY2g6IHVzZXJFZGl0QnJhbmNoTmFtZSwgdG9rZW5pZDogYXV0aGVudGljYXRpb24/LnRva2VuPy5zaGExIH0pXG4gIGNvbnN0IHtcbiAgICBzdGF0ZToge1xuICAgICAgbWVyZ2VTdGF0dXM6IG1lcmdlVG9NYXN0ZXIsXG4gICAgICB1cGRhdGVTdGF0dXM6IG1lcmdlRnJvbU1hc3RlcixcbiAgICB9LFxuICB9ID0gX3VzZUJyYW5jaE1lcmdlclxuXG4gIGNvbnN0IHVwZGF0ZUJ1dHRvblByb3BzID0gdXNlQ29udGVudFVwZGF0ZVByb3BzKHtcbiAgICBpc1NhdmluZzogc3RhcnRTYXZlLFxuICAgIHVzZUJyYW5jaE1lcmdlcjogX3VzZUJyYW5jaE1lcmdlcixcbiAgICBvblVwZGF0ZTogKCkgPT4ge1xuICAgICAgZGVsYXkoNTAwKS50aGVuKCgpID0+IHNjcmlwdHVyZUNvbmZpZz8ucmVsb2FkUmVzb3VyY2UoKSlcbiAgICB9LFxuICB9KVxuXG4gIGNvbnN0IHtcbiAgICBjYWxsVXBkYXRlVXNlckJyYW5jaCxcbiAgICBpc0Vycm9yRGlhbG9nT3BlbixcbiAgICBvbkNsb3NlRXJyb3JEaWFsb2csXG4gICAgaXNMb2FkaW5nOiBpc1VwZGF0ZUxvYWRpbmcsXG4gICAgZGlhbG9nTWVzc2FnZSxcbiAgICBkaWFsb2dUaXRsZSxcbiAgICBkaWFsb2dMaW5rLFxuICAgIGRpYWxvZ0xpbmtUb29sdGlwLFxuICB9ID0gdXBkYXRlQnV0dG9uUHJvcHNcblxuICBjb25zdCBvbk1lcmdlID0gKCkgPT4ge1xuICAgIGZpbmlzaEVkaXQoKVxuICAgIGNvbnNvbGUubG9nKGBvbk1lcmdlKCkgc3dpdGNoaW5nIGJhY2sgdG8gbWFzdGVyIGFmdGVyIG1lcmdlIGFwcFJlZjpgLCBhcHBSZWYpXG4gICAgc2V0U3RhdGUoe1xuICAgICAgcmVhZHlGb3JGZXRjaDogZmFsc2UsXG4gICAgICByZWY6IGFwcFJlZixcbiAgICB9KVxuICAgIGRlbGF5KDUwMCkudGhlbigoKSA9PiB7XG4gICAgICBzZXRTdGF0ZSh7XG4gICAgICAgIGNoZWNrRm9yRWRpdEJyYW5jaDogY2hlY2tGb3JFZGl0QnJhbmNoICsgMSwgLy8gdHJpZ2dlciByZWNoZWNrIG9mIHVzZXIgYnJhbmNoIHdoaWNoIHdpbGwgc3dpdGNoIHRoZSBicmFuY2ggYmFjayB0byBtYXN0ZXJcbiAgICAgICAgcmVhZHlGb3JGZXRjaDogZmFsc2UsXG4gICAgICB9KVxuICAgIH0pXG4gIH1cblxuICBjb25zdCB7IGlzTG9hZGluZzogaXNNZXJnZUxvYWRpbmcsIGNhbGxNZXJnZVVzZXJCcmFuY2ggfSA9IHVzZU1hc3Rlck1lcmdlUHJvcHMoe1xuICAgIGlzU2F2aW5nOiBzdGFydFNhdmUsXG4gICAgdXNlQnJhbmNoTWVyZ2VyOiBfdXNlQnJhbmNoTWVyZ2VyLFxuICAgIG9uTWVyZ2UsXG4gIH0pXG5cbiAgLy8gU2luY2Ugb3JpZ2luYWwgdGV4dCAoR3JlZWsvSGVicmV3KSBzaG91bGQgbm90IGJlIGVkaXRlZCwgZG8gbm90IGluY2x1ZGVcbiAgLy8gdGhlbSBpbiBtZXJnZSBzdGF0ZSBzaW5jZSB1c2VyIHdpbGwgbm90IG1lcmdlL3B1c2ggY2hhbmdlcy5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoY2FyZFJlc291cmNlSWQgJiYgIXVzaW5nT3JpZ2luYWxCaWJsZSkge1xuICAgICAgdXBkYXRlTWVyZ2VTdGF0ZSAmJiB1cGRhdGVNZXJnZVN0YXRlKFxuICAgICAgICBjYXJkUmVzb3VyY2VJZCxcbiAgICAgICAgc2NyaXB0dXJlQ29uZmlnLnRpdGxlLFxuICAgICAgICBtZXJnZUZyb21NYXN0ZXIsXG4gICAgICAgIG1lcmdlVG9NYXN0ZXIsXG4gICAgICAgIGNhbGxVcGRhdGVVc2VyQnJhbmNoLFxuICAgICAgICBjYWxsTWVyZ2VVc2VyQnJhbmNoLFxuICAgICAgKVxuICAgIH1cbiAgfSxbY2FyZFJlc291cmNlSWQsIHNjcmlwdHVyZUNvbmZpZy50aXRsZSwgbWVyZ2VGcm9tTWFzdGVyLCBtZXJnZVRvTWFzdGVyXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChpc1VwZGF0ZUxvYWRpbmcpIHtcbiAgICAgIHNldENhcmRzTG9hZGluZ1VwZGF0ZT8uKHByZXZDYXJkc0xvYWRpbmcgPT4gWy4uLnByZXZDYXJkc0xvYWRpbmcsIGNhcmRSZXNvdXJjZUlkXSlcbiAgICB9IGVsc2Uge1xuICAgICAgc2V0Q2FyZHNMb2FkaW5nVXBkYXRlPy4ocHJldkNhcmRzTG9hZGluZyA9PiBwcmV2Q2FyZHNMb2FkaW5nLmZpbHRlcihjYXJkSWQgPT4gY2FyZElkICE9PSBjYXJkUmVzb3VyY2VJZCkpXG4gICAgfVxuICB9LCBbaXNVcGRhdGVMb2FkaW5nXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChpc01lcmdlTG9hZGluZykge1xuICAgICAgc2V0Q2FyZHNMb2FkaW5nTWVyZ2U/LihwcmV2Q2FyZHNMb2FkaW5nID0+IFsuLi5wcmV2Q2FyZHNMb2FkaW5nLCBjYXJkUmVzb3VyY2VJZF0pXG4gICAgfSBlbHNlIHtcbiAgICAgIHNldENhcmRzTG9hZGluZ01lcmdlPy4ocHJldkNhcmRzTG9hZGluZyA9PiBwcmV2Q2FyZHNMb2FkaW5nLmZpbHRlcihjYXJkSWQgPT4gY2FyZElkICE9PSBjYXJkUmVzb3VyY2VJZCkpXG4gICAgfVxuICB9LCBbaXNNZXJnZUxvYWRpbmddKVxuXG4gIGNvbnN0IHdvcmtpbmdSZWYgPSBjYW5Vc2VFZGl0QnJhbmNoID8gd29ya2luZ1Jlc291cmNlQnJhbmNoIDogYXBwUmVmXG4gIGxldCBzY3JpcHR1cmVUaXRsZVxuXG4gIGlmICghY2FuVXNlRWRpdEJyYW5jaCAmJiAhcmVhZHlGb3JGZXRjaCkgeyAvLyBpZiBiaWJsZSBub3QgZWxpZ2libGUgZm9yIHVzZXIgYnJhbmNoLCBtYWtlIHN1cmUgaXQncyByZWFkeVxuICAgIHNldFN0YXRlKHsgcmVhZHlGb3JGZXRjaDogdHJ1ZSB9KVxuICB9XG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zb2xlLmxvZyhgU2NyaXB0dXJlQ2FyZCBib29rIGNoYW5nZWRgLCB7IGJvb2tJZCwgb3duZXIsIGxhbmd1YWdlSWQsIHJlc291cmNlSWQgfSlcblxuICAgIGlmIChjYW5Vc2VFZGl0QnJhbmNoKSB7IC8vIGlmIGJpYmxlIGVsaWdpYmxlIGZvciB1c2VyIGJyYW5jaCwgcmVmcmVzaCBpdFxuICAgICAgc2V0U3RhdGUoeyByZWFkeUZvckZldGNoOiBmYWxzZSwgY2hlY2tGb3JFZGl0QnJhbmNoOiBjaGVja0ZvckVkaXRCcmFuY2ggKyAxIH0pXG4gICAgfVxuICB9LCBbYm9va0lkLCBvd25lciwgbGFuZ3VhZ2VJZCwgcmVzb3VyY2VJZF0pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWlzRXF1YWwocmVmZXJlbmNlLCBjdXJyZW50UmVmZXJlbmNlKSkge1xuICAgICAgLy8gY29uc29sZS5sb2coYFNjcmlwdHVyZUNhcmQgcmVmZXJlbmNlIGNoYW5nZWRgLCByZWZlcmVuY2UpXG4gICAgICBzZXRTdGF0ZSh7IGN1cnJlbnRSZWZlcmVuY2U6IHJlZmVyZW5jZSB9KVxuICAgIH1cbiAgfSwgW3JlZmVyZW5jZV0pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHsgLy8gd2FpdGluZyBmb3IgYnJhbmNoIGZldGNoIHRvIGNvbXBsZXRlXG4gICAgaWYgKCFyZWFkeUZvckZldGNoICYmIGJyYW5jaERldGVybWluZWQgKSB7XG4gICAgICBjb25zb2xlLmxvZyhgU2NyaXB0dXJlQ2FyZCBicmFuY2hEZXRlcm1pbmVkIGlzICR7YnJhbmNoRGV0ZXJtaW5lZH0gYW5kIHdvcmtpbmdSZWYgaXMgJHt3b3JraW5nUmVmfWApXG4gICAgICBzZXRTdGF0ZSh7IHJlYWR5Rm9yRmV0Y2g6IHRydWUsIHJlZjogd29ya2luZ1JlZiB9KVxuICAgIH1cbiAgfSwgW2JyYW5jaERldGVybWluZWRdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7IC8vIHNlbGVjdCBjb3JyZWN0IHdvcmtpbmcgcmVmIC0gY291bGQgYmUgbWFzdGVyLCB1c2VyIGJyYW5jaCwgb3IgcmVsZWFzZVxuICAgIGlmIChfdXNpbmdVc2VyQnJhbmNoICE9PSB1c2luZ1VzZXJCcmFuY2gpIHtcbiAgICAgIHNldFN0YXRlKHsgdXNpbmdVc2VyQnJhbmNoOiBfdXNpbmdVc2VyQnJhbmNoIH0pXG4gICAgfVxuICB9LCBbX3VzaW5nVXNlckJyYW5jaCwgdXNpbmdVc2VyQnJhbmNoXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4geyAvLyB1cGRhdGUgZGlzcGxheSBzdGF0dXMgaWYgZXJyb3JcbiAgICBjb25zdCBlcnJvciA9IHNjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2VTdGF0dXM/LltFUlJPUl9TVEFURV1cblxuICAgIGlmIChlcnJvcikgeyAvLyBpZiBlcnJvciB3YXMgZm91bmQgZG8gY2FsbGJhY2tcbiAgICAgIGNvbnN0IHJlc291cmNlU3RhdHVzID0gc2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZVN0YXR1c1xuICAgICAgY29uc3QgcmVzb3VyY2VMaW5rID0gZ2V0UmVzb3VyY2VMaW5rKHNjcmlwdHVyZUNvbmZpZylcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSBnZXRSZXNvdXJjZU1lc3NhZ2UocmVzb3VyY2VTdGF0dXMsIHNlcnZlciwgcmVzb3VyY2VMaW5rLCBpc05UXylcbiAgICAgIGNvbnN0IGlzQWNjZXNzRXJyb3IgPSByZXNvdXJjZVN0YXR1c1tNQU5JRkVTVF9OT1RfTE9BREVEX0VSUk9SXVxuICAgICAgb25SZXNvdXJjZUVycm9yICYmIG9uUmVzb3VyY2VFcnJvcihtZXNzYWdlLCBpc0FjY2Vzc0Vycm9yLCByZXNvdXJjZVN0YXR1cylcbiAgICB9XG4gIH0sIFtzY3JpcHR1cmVDb25maWc/LnJlc291cmNlU3RhdHVzPy5bRVJST1JfU1RBVEVdXSlcblxuICBpZiAoc2NyaXB0dXJlQ29uZmlnLnRpdGxlICYmIHNjcmlwdHVyZUNvbmZpZy52ZXJzaW9uKSB7XG4gICAgc2NyaXB0dXJlVGl0bGUgPSBgJHtzY3JpcHR1cmVDb25maWcudGl0bGV9IHYke3NjcmlwdHVyZUNvbmZpZy52ZXJzaW9ufWBcbiAgICBzY3JpcHR1cmVWZXJzaW9uSGlzdC51cGRhdGVUaXRsZShzY3JpcHR1cmVDb25maWcucmVzb3VyY2VMaW5rLCBzY3JpcHR1cmVUaXRsZSlcbiAgfSBlbHNlIHtcbiAgICBzY3JpcHR1cmVUaXRsZSA9IGBUaXRsZSBtaXNzaW5nIGZyb20gcHJvamVjdCBtYW5pZmVzdGBcbiAgfVxuXG4gIC8qKiBEeW5hbWljYWxseSBjcmVhdGVzIHRoZSBzY3JpcHR1cmUgc2VsZWN0aW9uIGRyb3Bkb3duIHRvIGJlIGluc2VydGVkIGludG8gY2FyZCBzZXR0aW5ncyAqL1xuICBmdW5jdGlvbiBnZXRTY3JpcHR1cmVTZWxlY3RvcigpIHtcbiAgICBjb25zdCBzY3JpcHR1cmVTZWxlY3Rpb25Db25maWcgPSBnZXRTY3JpcHR1cmVWZXJzaW9uU2V0dGluZ3Moe1xuICAgICAgbGFiZWwsXG4gICAgICByZXNvdXJjZUxpbms6IHNjcmlwdHVyZUNvbmZpZy5yZXNvdXJjZUxpbmssXG4gICAgICBzZXRTY3JpcHR1cmUsXG4gICAgICBzY3JpcHR1cmVWZXJzaW9uSGlzdCxcbiAgICB9KVxuXG4gICAgcmV0dXJuIDxTY3JpcHR1cmVTZWxlY3RvciB7Li4uc2NyaXB0dXJlU2VsZWN0aW9uQ29uZmlnfSBzdHlsZT17c3R5bGV9IGVycm9yTWVzc2FnZT17dXJsRXJyb3J9IC8+XG4gIH1cblxuICBmdW5jdGlvbiBvbk1lbnVDbG9zZSgpIHtcbiAgICAvLyBjb25zb2xlLmxvZyhgb25NZW51Q2xvc2UoKWApXG4gICAgc2V0U3RhdGUoeyB1cmxFcnJvcjogbnVsbCB9KVxuICB9XG5cbiAgLy8gQHRzLWlnbm9yZVxuICBjb25zdCBsYW5ndWFnZUlkXyA9IHNjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2U/Lmxhbmd1YWdlSWRcbiAgY29uc3QgbGFuZ3VhZ2UgPSBnZXRMYW5ndWFnZSh7IGxhbmd1YWdlSWQ6IGxhbmd1YWdlSWRfIH0pXG4gIGNvbnN0IGRpcmVjdGlvbiA9IChsYW5ndWFnZT8uZGlyZWN0aW9uKSB8fCAnbHRyJ1xuICBjb25zdCBfcmVmZXJlbmNlID0gY3VycmVudFJlZmVyZW5jZSB8fCByZWZlcmVuY2VcblxuICBjb25zdCBpc0hlYnJldyA9IChsYW5ndWFnZUlkXyA9PT0gJ2hibycpXG4gIGNvbnN0IGZvbnRGYWN0b3IgPSBpc0hlYnJldyA/IDEuNCA6IDEgLy8gd2UgYXV0b21hdGljYWxseSBzY2FsZSB1cCBmb250IHNpemUgZm9yIEhlYnJld1xuICBjb25zdCBzY2FsZWRGb250U2l6ZSA9IGZvbnRTaXplICogZm9udEZhY3RvclxuXG4gIGNvbnN0IGl0ZW1zID0gbnVsbFxuICBjb25zdCB7XG4gICAgc3RhdGU6IHtcbiAgICAgIGhlYWRlcnMsIGZpbHRlcnMsIGl0ZW1JbmRleCwgbWFya2Rvd25WaWV3LFxuICAgIH0sXG4gICAgYWN0aW9uczoge1xuICAgICAgc2V0RmlsdGVycywgc2V0SXRlbUluZGV4LCBzZXRNYXJrZG93blZpZXcsXG4gICAgfSxcbiAgfSA9IHVzZUNhcmRTdGF0ZSh7IGl0ZW1zIH0pXG5cbiAgY29uc3QgcmVmU3R5bGUgPSBSZWFjdC51c2VNZW1vKCgpID0+ICh7XG4gICAgZm9udEZhbWlseTogJ05vdG8gU2FucycsXG4gICAgZm9udFNpemU6IGAke01hdGgucm91bmQoc2NhbGVkRm9udFNpemUgKiAwLjkpfSVgLFxuICB9KSwgW3NjYWxlZEZvbnRTaXplXSlcblxuICBjb25zdCBjb250ZW50U3R5bGUgPSBSZWFjdC51c2VNZW1vKCgpID0+ICh7XG4gICAgZm9udEZhbWlseTogJ05vdG8gU2FucycsXG4gICAgZm9udFNpemU6IGAke3NjYWxlZEZvbnRTaXplfSVgLFxuICB9KSwgW3NjYWxlZEZvbnRTaXplXSlcblxuICBjb25zdCBzY3JpcHR1cmVMYWJlbCA9IDxUaXRsZT57c2NyaXB0dXJlVGl0bGV9PC9UaXRsZT5cbiAgbGV0IGRpc2FibGVXb3JkUG9wb3Zlcl8gPSBkaXNhYmxlV29yZFBvcG92ZXJcblxuICBpZiAoZGlzYWJsZVdvcmRQb3BvdmVyID09PSB1bmRlZmluZWQpIHsgLy8gaWYgbm90IHNwZWNpZmllZCwgdGhlbiBkZXRlcm1pbmUgaWYgb3JpZ2luYWwgbGFuZ3VhZ2UgcmVzb3VyY2VcbiAgICBkaXNhYmxlV29yZFBvcG92ZXJfID0gIXVzaW5nT3JpZ2luYWxCaWJsZVxuICB9XG5cbiAgY29uc3QgZW5hYmxlRWRpdCA9ICF1c2luZ09yaWdpbmFsQmlibGVcbiAgY29uc3QgZW5hYmxlQWxpZ25tZW50ID0gIXVzaW5nT3JpZ2luYWxCaWJsZVxuICBjb25zdCBvcmlnaW5hbFJlcG9VcmwgPSBpc05ld1Rlc3RhbWVudCA/IGdyZWVrUmVwb1VybCA6IGhlYnJld1JlcG9VcmxcbiAgY29uc3Qgc2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZyA9IHtcbiAgICBhdXRoZW50aWNhdGlvbjogY2FuVXNlRWRpdEJyYW5jaCA/IGF1dGhlbnRpY2F0aW9uIDogbnVsbCxcbiAgICBib29rSW5kZXgsXG4gICAgY3VycmVudFZlcnNlUmVmOiBfcmVmZXJlbmNlLFxuICAgIGVuYWJsZUVkaXQsXG4gICAgZW5hYmxlQWxpZ25tZW50LFxuICAgIGh0dHBDb25maWcsXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGlzTmV3VGVzdGFtZW50LFxuICAgIGxvZ2dlZEluVXNlcjogY2FuVXNlRWRpdEJyYW5jaCA/IGxvZ2dlZEluVXNlciA6IG51bGwsXG4gICAgb3JpZ2luYWxMYW5ndWFnZU93bmVyLFxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBvcmlnaW5hbFJlcG9VcmwsXG4gICAgc2NyaXB0dXJlQ29uZmlnLFxuICAgIHNjcmlwdHVyZVNldHRpbmdzLFxuICAgIHN0YXJ0RWRpdEJyYW5jaCxcbiAgICBzZXRTYXZlZENoYW5nZXM6IF9zZXRTYXZlZENoYW5nZXMsXG4gICAgc291cmNlTGFuZ3VhZ2U6IGlzTlRfID8gTlRfT1JJR19MQU5HIDogT1RfT1JJR19MQU5HLFxuICAgIHRhcmdldExhbmd1YWdlOiBsYW5ndWFnZSxcbiAgICB0aXRsZTogc2NyaXB0dXJlVGl0bGUsXG4gICAgd29ya2luZ1Jlc291cmNlQnJhbmNoOiByZWYsXG4gIH1cblxuICAvKipcbiAgICogdGhpcyBnZXRzIGNhbGxlZCB3aGVuZXZlciBhIHNjcmlwdHVyZSBwYW5lIGhhcyBhIGNoYW5nZSBpbiBzYXZlIHN0YXRlXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBjdXJyZW50SW5kZXhcbiAgICogQHBhcmFtIHtib29sZWFufSBzYXZlZFxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBnZXRDaGFuZ2VzIC0gd2lsbCBiZSBjYWxsZWQgd2hlbmV2ZXIgdXNlciBjbGlja3Mgc2F2ZSBidXR0b25cbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gY2xlYXJDaGFuZ2VzIC0gd2lsbCBiZSBjYWxsZWQgd2hlbmV2ZXIgc2F2ZSBoYXMgY29tcGxldGVkXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBzdGF0ZSAtIGN1cnJlbnQgc3RhdGUgb2Ygd29yZCBhbGlnbm1lbnQvZWRpdFxuICAgKi9cbiAgZnVuY3Rpb24gX3NldFNhdmVkQ2hhbmdlcyhjdXJyZW50SW5kZXgsIHNhdmVkLCB7IGdldENoYW5nZXMgPSBudWxsLCBjbGVhckNoYW5nZXMgPSBudWxsLCBzdGF0ZSA9IG51bGwgfSkge1xuICAgIGNvbnN0IF91bnNhdmVkQ2hhbmdlc0xpc3QgPSB7IC4uLnVuc2F2ZWRDaGFuZ2VzTGlzdCB9XG5cbiAgICBpZiAoc2F2ZWQpIHtcbiAgICAgIGlmIChfdW5zYXZlZENoYW5nZXNMaXN0Lmhhc093blByb3BlcnR5KGN1cnJlbnRJbmRleCkpIHtcbiAgICAgICAgZGVsZXRlIF91bnNhdmVkQ2hhbmdlc0xpc3RbY3VycmVudEluZGV4XVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBfdW5zYXZlZENoYW5nZXNMaXN0W2N1cnJlbnRJbmRleF0gPSB7IGdldENoYW5nZXMsIGNsZWFyQ2hhbmdlcywgc3RhdGUgfSAvLyB1cGRhdGUgd2l0aCBsYXRlc3RcbiAgICB9XG5cbiAgICBjb25zdCBfaGF2ZVVuc2F2ZWRDaGFuZ2VzID0gISFPYmplY3Qua2V5cyhfdW5zYXZlZENoYW5nZXNMaXN0KS5sZW5ndGhcblxuICAgIGlmIChoYXZlVW5zYXZlZENoYW5nZXMgIT0gX2hhdmVVbnNhdmVkQ2hhbmdlcykge1xuICAgICAgc2V0U2F2ZWRDaGFuZ2VzICYmIHNldFNhdmVkQ2hhbmdlcyhyZXNvdXJjZUlkLCAhX2hhdmVVbnNhdmVkQ2hhbmdlcylcbiAgICAgIHNldFN0YXRlKHsgaGF2ZVVuc2F2ZWRDaGFuZ2VzOiBfaGF2ZVVuc2F2ZWRDaGFuZ2VzIH0pXG4gICAgfVxuXG4gICAgaWYgKCFpc0VxdWFsKF91bnNhdmVkQ2hhbmdlc0xpc3QsIHVuc2F2ZWRDaGFuZ2VzTGlzdCkpIHtcbiAgICAgIHNldFN0YXRlKHsgdW5zYXZlZENoYW5nZXNMaXN0OiBfdW5zYXZlZENoYW5nZXNMaXN0IH0pXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIHNlYXJjaCBjaGFwdGVyIG9yIHZlcnNlIGNodW5rIHRvIGxpbmUgdGhhdCBzdGFydHMgd2l0aCBmaW5kSXRlbVxuICAgKiBAcGFyYW0ge251bWJlcnxzdHJpbmd9IGZpbmRJdGVtXG4gICAqIEBwYXJhbSB7c3RyaW5nW119IGNodW5rc1xuICAgKi9cbiAgZnVuY3Rpb24gZmluZFJlZkluQXJyYXkoZmluZEl0ZW0sIGNodW5rcykge1xuICAgIGNvbnN0IHJlZl8gPSBmaW5kSXRlbSArICcnXG4gICAgY29uc3QgcmVmTGVuID0gcmVmXy5sZW5ndGhcbiAgICBjb25zdCBpbmRleCA9IGNodW5rcy5maW5kSW5kZXgoKGNodW5rLCBpZHgpID0+IHtcbiAgICAgIGlmIChpZHggPiAwKSB7XG4gICAgICAgIGlmIChjaHVuay5zdWJzdHJpbmcoMCwgcmVmTGVuKSA9PT0gcmVmXykge1xuICAgICAgICAgIGNvbnN0IG5leHRDaGFyID0gY2h1bmtbcmVmTGVuXVxuXG4gICAgICAgICAgaWYgKChuZXh0Q2hhciA+ICc5JykgfHwgKG5leHRDaGFyIDwgJzAnKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH0pXG4gICAgcmV0dXJuIGluZGV4XG4gIH1cblxuICBmdW5jdGlvbiBnZXRCb29rTmFtZSgpIHtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3QgYm9va0NhcHMgPSBzY3JpcHR1cmVDb25maWc/LnJlZmVyZW5jZT8ucHJvamVjdElkID8gc2NyaXB0dXJlQ29uZmlnLnJlZmVyZW5jZS5wcm9qZWN0SWQudG9VcHBlckNhc2UoKSA6ICcnXG4gICAgcmV0dXJuIGAke2Jvb2tJbmRleH0tJHtib29rQ2Fwc30udXNmbWBcbiAgfVxuXG4gIGNvbnN0IGZpbGVwYXRoID0gZ2V0Qm9va05hbWUoKVxuICBjb25zdCBzaGEgPSBmZXRjaGVkUmVzb3VyY2U/LnNoYVxuXG4gIC8vIGtlZXAgdHJhY2sgb2YgdmVyc2UgZWRpdCBzdGF0ZVxuICBjb25zdCB7XG4gICAgZXJyb3I6IHNhdmVFcnJvcixcbiAgICBpc0Vycm9yOiBpc1NhdmVFcnJvcixcbiAgICBvblNhdmVFZGl0LFxuICAgIG9uU2F2ZUVkaXRQYXRjaCxcbiAgfSA9IHVzZUVkaXQoe1xuICAgIHNoYSxcbiAgICBvd25lcixcbiAgICBjb250ZW50OiBzYXZlQ29udGVudCxcbiAgICBjb25maWc6IHtcbiAgICAgIGNhY2hlOiB7IG1heEFnZTogMCB9LFxuICAgICAgLi4uYXV0aGVudGljYXRpb24/LmNvbmZpZyxcbiAgICAgIGRvbnRDcmVhdGVCcmFuY2g6IHRydWUsXG4gICAgICB0b2tlbjogYXV0aGVudGljYXRpb24/LnRva2VuLFxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgdGltZW91dDogaHR0cENvbmZpZz8uc2VydmVyVGltZU91dCB8fCBodHRwQ29uZmlnPy50aW1lb3V0IHx8IDEwMDAwLFxuICAgICAgc2VydmVyLFxuICAgIH0sXG4gICAgYXV0aG9yOiBsb2dnZWRJblVzZXIsXG4gICAgZW1haWw6IGF1dGhlbnRpY2F0aW9uPy51c2VyPy5lbWFpbCxcbiAgICB0b2tlbjogYXV0aGVudGljYXRpb24/LnRva2VuLFxuICAgIGJyYW5jaDogd29ya2luZ1Jlc291cmNlQnJhbmNoLFxuICAgIGZpbGVwYXRoLFxuICAgIHJlcG8sXG4gIH0pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHsgLy8gd2hlbiB3ZSBnZXQgYSBzYXZlIHNhdmVFcnJvclxuICAgIGlmIChzYXZlRXJyb3IgJiYgaXNTYXZlRXJyb3IgJiYgIXN0YXJ0U2F2ZSkgeyAvLyBpZiBlcnJvciB0aGVuIHNob3cgYWZ0ZXIgc2F2ZSBjb21wbGV0ZXMsIHNpbmNlIHdlIG1heSByZXRyeVxuICAgICAgY29uc29sZS5sb2coYHNhdmUgZXJyb3JgLCBzYXZlRXJyb3IpXG4gICAgICBvblJlc291cmNlRXJyb3IgJiYgb25SZXNvdXJjZUVycm9yKG51bGwsIGZhbHNlLCBudWxsLCBgRXJyb3Igc2F2aW5nICR7bGFuZ3VhZ2VJZF99XyR7cmVzb3VyY2VJZH0gJHtzYXZlRXJyb3J9YCwgdHJ1ZSlcbiAgICB9XG4gIH0sIFtzYXZlRXJyb3IsIGlzU2F2ZUVycm9yLCBzdGFydFNhdmVdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7IC8vIHdoZW4gc3RhcnRTYXZlIGdvZXMgdHJ1ZSwgc2F2ZSBlZGl0cyB0byB1c2VyIGJyYW5jaCBhbmQgdGhlbiBjbGVhciBzdGFydFNhdmVcbiAgICBmdW5jdGlvbiBfc2F2ZVN1Y2Nlc2Z1bCgpIHtcbiAgICAgIGNvbnNvbGUubG9nKGBzYXZlQ2hhbmdlc1RvQ2xvdWQoKSAtIHNhdmUgc2NyaXB0dXJlIGVkaXRzIHN1Y2Nlc3NgKVxuICAgICAgc2V0Q2FyZHNTYXZpbmcocHJldkNhcmRzU2F2aW5nID0+IHByZXZDYXJkc1NhdmluZy5maWx0ZXIoY2FyZElkID0+IGNhcmRJZCAhPT0gY2FyZFJlc291cmNlSWQpKVxuICAgICAgc2V0U3RhdGUoe1xuICAgICAgICBzdGFydFNhdmU6IGZhbHNlLFxuICAgICAgfSlcblxuICAgICAgY29uc3QgdW5zYXZlZENhcmRJbmRpY2VzID0gT2JqZWN0LmtleXModW5zYXZlZENoYW5nZXNMaXN0KVxuXG4gICAgICBpZiAodW5zYXZlZENhcmRJbmRpY2VzPy5sZW5ndGgpIHtcbiAgICAgICAgZm9yIChjb25zdCBjYXJkSW5kZXggb2YgdW5zYXZlZENhcmRJbmRpY2VzKSB7XG4gICAgICAgICAgY29uc3Qge2NsZWFyQ2hhbmdlc30gPSB1bnNhdmVkQ2hhbmdlc0xpc3RbY2FyZEluZGV4XVxuICAgICAgICAgIGNsZWFyQ2hhbmdlcyAmJiBjbGVhckNoYW5nZXMoKVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNvbnNvbGUuaW5mbygnc2F2ZUNoYW5nZXNUb0Nsb3VkKCkgLSBSZWxvYWRpbmcgcmVzb3VyY2UnKVxuICAgICAgc2V0U3RhdGUoe1xuICAgICAgICBzdGFydFNhdmU6IGZhbHNlLFxuICAgICAgICByZWFkeUZvckZldGNoOiB0cnVlLFxuICAgICAgICBzYXZlRnVsbEJpYmxlQ29udGVudDogbnVsbCxcbiAgICAgICAgc2F2ZUNvbnRlbnQ6IG51bGwsXG4gICAgICAgIHJlZjogdXNlckVkaXRCcmFuY2hOYW1lLFxuICAgICAgfSlcbiAgICAgIGRlbGF5KDEwMCkudGhlbigoKSA9PiB7XG4gICAgICAgIHNldENhcmRzU2F2aW5nKHByZXZDYXJkc1NhdmluZyA9PiBwcmV2Q2FyZHNTYXZpbmcuZmlsdGVyKGNhcmRJZCA9PiBjYXJkSWQgIT09IGNhcmRSZXNvdXJjZUlkKSlcbiAgICAgICAgc2NyaXB0dXJlQ29uZmlnPy5yZWxvYWRSZXNvdXJjZShzaGEsIHVzZXJFZGl0QnJhbmNoTmFtZSlcbiAgICAgIH0pXG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cblxuICAgIGNvbnN0IF9zYXZlRWRpdCA9IGFzeW5jICgpID0+IHsgLy8gYmVnaW4gdXBsb2FkaW5nIG5ldyBVU0ZNXG4gICAgICBjb25zb2xlLmluZm8oYHNhdmVDaGFuZ2VzVG9DbG91ZCgpIC0gVXNpbmcgc2hhOiAke3NoYX1gKVxuICAgICAgbGV0IHVwbG9hZEZ1bmN0aW9uID0gb25TYXZlRWRpdFxuICAgICAgaWYgKHNhdmVEaWZmUGF0Y2gpIHtcbiAgICAgICAgdXBsb2FkRnVuY3Rpb24gPSBvblNhdmVFZGl0UGF0Y2ggLy8gaWYgd2UgYXJlIHNlbmRpbmcgdXAgYSBkaWZmcGF0Y2gsIHdlIHdpbGwgdXNlIHRoaXMgbWV0aG9kXG4gICAgICB9XG4gICAgICBsZXQgc3VjY2VzcyA9IGF3YWl0IHVwbG9hZEZ1bmN0aW9uKHVzZXJFZGl0QnJhbmNoTmFtZSkvLyBwdXNoIGNoYW5nZSB0byBzZXJ2ZXJcbiAgICAgIGxldCBlcnJvciA9IHN1Y2Nlc3MgPyBudWxsIDogJ3NhdmluZyBjaGFuZ2VkIHNjcmlwdHVyZSBmYWlsZWQnXG5cbiAgICAgIGlmICghc3VjY2Vzcykge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdzYXZlQ2hhbmdlc1RvQ2xvdWQoKSAtIHNhdmluZyBjaGFuZ2VkIHNjcmlwdHVyZSBmYWlsZWQsIHJldHJ5aW5nJylcbiAgICAgICAgYXdhaXQgZGVsYXkoMTAwKVxuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIGNvbnN0IHJlc3VsdHMgPSBhd2FpdCBmZXRjaEJvb2soc2VydmVyLCBodHRwQ29uZmlnLCBzY3JpcHR1cmVDb25maWc/LnJlc291cmNlLCBzY3JpcHR1cmVDb25maWc/LnJlZmVyZW5jZSlcbiAgICAgICAgZXJyb3IgPSByZXN1bHRzPy5lcnJvclxuICAgICAgICBsZXQgX3NhdmVDb250ZW50ID0gc2F2ZUNvbnRlbnRcbiAgICAgICAgbGV0IGZpbGVTaGEgPSBudWxsXG4gICAgICAgIGNvbnN0IHNhdmVkQmlibGVVc2ZtID0gcmVzdWx0cz8uYmlibGVVc2ZtXG4gICAgICAgIGNvbnN0IGVkaXRlZEJpYmxlVXNmbSA9IHNhdmVGdWxsQmlibGVDb250ZW50Py5uZXdcbiAgICAgICAgbGV0IHVwVG9EYXRlID0gc2F2ZWRCaWJsZVVzZm0gPT09IGVkaXRlZEJpYmxlVXNmbSAvLyBjaGVjayBpZiBjaGFuZ2VkXG5cbiAgICAgICAgaWYgKCFlcnJvcikge1xuICAgICAgICAgIGlmICh1cFRvRGF0ZSkge1xuICAgICAgICAgICAgc3VjY2VzcyA9IHRydWVcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHNhdmVEaWZmUGF0Y2gpIHtcbiAgICAgICAgICAgICAgLy8gcmVnZW5lcmF0ZSB0aGUgcGF0Y2ggYWdhaW5zdCB0aGUgbGF0ZXN0IGNvbnRlbnRcbiAgICAgICAgICAgICAgY29uc3QgZGlmZlBhdGNoID0gZ2V0UGF0Y2goc2F2ZUZ1bGxCaWJsZUNvbnRlbnQ/LmZpbGVuYW1lLCBzYXZlZEJpYmxlVXNmbSwgZWRpdGVkQmlibGVVc2ZtLCBmYWxzZSlcbiAgICAgICAgICAgICAgX3NhdmVDb250ZW50ID0gZGlmZlBhdGNoXG4gICAgICAgICAgICAgIGZpbGVTaGEgPSByZXN1bHRzPy5zaGFcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYXdhaXQgZGVsYXkoMTAwKVxuICAgICAgICAgICAgc3VjY2VzcyA9IGF3YWl0IHVwbG9hZEZ1bmN0aW9uKHVzZXJFZGl0QnJhbmNoTmFtZSwgX3NhdmVDb250ZW50LCBmaWxlU2hhKSAvLyBwdXNoIGNoYW5nZSB0byBzZXJ2ZXJcbiAgICAgICAgICAgIGlmICghc3VjY2Vzcykge1xuICAgICAgICAgICAgICBlcnJvciA9ICdzYXZpbmcgY2hhbmdlZCBzY3JpcHR1cmUgZmFpbGVkIG9uIHNlY29uZCBhdHRlbXB0J1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoIWVycm9yICYmIHN1Y2Nlc3MpIHsgLy8gaWYgbm8gZXJyb3IgbWVzc2FnZSBhbmQgc2F2ZSB3YXMgYSBzdWNjZXNzXG4gICAgICAgIHJldHVybiBfc2F2ZVN1Y2Nlc2Z1bCgpIC8vIG5vdGhpbmcgdG8gZG9cbiAgICAgIH1cblxuICAgICAgY29uc29sZS5lcnJvcihgc2F2ZUNoYW5nZXNUb0Nsb3VkKCkgLSAke2Vycm9yIHx8ICd1bmtub3duIHNhdmUgZXJyb3InfWApXG4gICAgICBzZXRDYXJkc1NhdmluZyhwcmV2Q2FyZHNTYXZpbmcgPT4gcHJldkNhcmRzU2F2aW5nLmZpbHRlcihjYXJkSWQgPT4gY2FyZElkICE9PSBjYXJkUmVzb3VyY2VJZCkpXG4gICAgICBzZXRTdGF0ZSh7c3RhcnRTYXZlOiBmYWxzZX0pXG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG5cbiAgICBpZiAoc3RhcnRTYXZlKSB7XG4gICAgICBpZiAoIWVkaXRCcmFuY2hSZWFkeSkge1xuICAgICAgICAvLyBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkIC0gZWRpdCBicmFuY2ggbm90IHlldCBjcmVhdGVkYClcbiAgICAgIH0gZWxzZSBpZiAoIXNoYSkge1xuICAgICAgICAvLyBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkIC0gc2F2ZSBzaGEgbm90IHlldCByZWFkeWApXG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkIC0gY2FsbGluZyBfc2F2ZUVkaXQoKWApXG4gICAgICAgIHNldENhcmRzU2F2aW5nKHByZXZDYXJkc1NhdmluZyA9PiBbLi4ucHJldkNhcmRzU2F2aW5nLCBjYXJkUmVzb3VyY2VJZF0pXG4gICAgICAgIF9zYXZlRWRpdCgpXG4gICAgICB9XG4gICAgfVxuICB9LCBbc3RhcnRTYXZlLCBlZGl0QnJhbmNoUmVhZHksIHNoYV0pXG5cbiAgLyoqXG4gICAqIGNvbnZlcnQgdXBkYXRlZFZlcnNlT2JqZWN0cyB0byBVU0ZNIGFuZCBtZXJnZSBpbnRvIHRoZSBiaWJsZVVzZm1cbiAgICogQHBhcmFtIHtzdHJpbmd9IGJpYmxlVXNmbSAtIFVTRk0gb2YgYmlibGVcbiAgICogQHBhcmFtIHtvYmplY3R9IHJlZiAtIHJlZmVyZW5jZSBvZiB2ZXJzZSB0byBtZXJnZSBpblxuICAgKiBAcGFyYW0ge29iamVjdFtdfSB1cGRhdGVkVmVyc2VPYmplY3RzIC0gbmV3IHZlcnNlIGluIHZlcnNlT2JqZWN0IGZvcm1hdFxuICAgKiBAcGFyYW0ge251bWJlcn0gY2FyZE51bVxuICAgKi9cbiAgZnVuY3Rpb24gbWVyZ2VWZXJzZU9iamVjdHNJbnRvQmlibGVVc2ZtKGJpYmxlVXNmbSwgcmVmLCB1cGRhdGVkVmVyc2VPYmplY3RzLCBjYXJkTnVtOiBudW1iZXIpIHtcbiAgICBsZXQgbmV3VXNmbVxuICAgIGNvbnN0IGNoYXB0ZXJDaHVua3MgPSBiaWJsZVVzZm0/LnNwbGl0KCdcXFxcYyAnKVxuICAgIGNvbnN0IGNoYXB0ZXJJbmRleCA9IGZpbmRSZWZJbkFycmF5KHJlZj8uY2hhcHRlciwgY2hhcHRlckNodW5rcylcblxuICAgIGlmIChjaGFwdGVySW5kZXggPj0gMCkge1xuICAgICAgY29uc3QgY3VycmVudENoYXB0ZXIgPSBjaGFwdGVyQ2h1bmtzW2NoYXB0ZXJJbmRleF1cbiAgICAgIGxldCB2ZXJzZUNodW5rcyA9IGN1cnJlbnRDaGFwdGVyLnNwbGl0KCdcXFxcdiAnKVxuICAgICAgY29uc3QgdmVyc2VJbmRleCA9IGZpbmRSZWZJbkFycmF5KHJlZj8udmVyc2UsIHZlcnNlQ2h1bmtzKVxuICAgICAgY29uc3QgZnJvbnRNYXR0ZXIgPSByZWY/LnZlcnNlID09PSAnZnJvbnQnXG5cbiAgICAgIGlmIChmcm9udE1hdHRlciB8fCB2ZXJzZUluZGV4ID49IDApIHtcbiAgICAgICAgY29uc3QgbmV3VmVyc2VVc2ZtID0gVXNmbUZpbGVDb252ZXJzaW9uSGVscGVycy5jb252ZXJ0VmVyc2VEYXRhVG9VU0ZNKHVwZGF0ZWRWZXJzZU9iamVjdHMpXG4gICAgICAgIGNvbnNvbGUubG9nKGBzYXZlQ2hhbmdlc1RvQ2xvdWQoKSAtIG5ldyBVU0ZNIGZvciBjYXJkICR7Y2FyZE51bX0sIHZlcnNlICR7cmVmPy52ZXJzZX06fSAtICR7bmV3VmVyc2VVc2ZtLnN1YnN0cmluZygwLCAxMDApfWApXG4gICAgICAgIGlmIChmcm9udE1hdHRlcikgeyAvLyBmcm9udCBtYXR0ZXIgZ29lcyBiZWZvcmUgZmlyc3QgdmVyc2VcbiAgICAgICAgICBjb25zdCBvbGRWZXJzZSA9IHZlcnNlQ2h1bmtzWzBdXG4gICAgICAgICAgY29uc3QgcHJlZml4TGVuID0gb2xkVmVyc2UuaW5kZXhPZignXFxuJykgLy8gY2hhcmFjdGVycyBiZWZvcmUgdGhlIGZyb250IG1hdHRlciB0ZXh0XG4gICAgICAgICAgdmVyc2VDaHVua3NbMF0gPSBvbGRWZXJzZS5zdWJzdHJpbmcoMCwgcHJlZml4TGVuICsgMSkgKyBuZXdWZXJzZVVzZm1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBvbGRWZXJzZSA9IHZlcnNlQ2h1bmtzW3ZlcnNlSW5kZXhdXG4gICAgICAgICAgY29uc3QgdmVyc2VOdW1MZW4gPSAocmVmPy52ZXJzZSArICcnKS5sZW5ndGggLy8gY2hhcmFjdGVycyBiZWZvcmUgdGhlIHZlcnNlIHRleHRcbiAgICAgICAgICB2ZXJzZUNodW5rc1t2ZXJzZUluZGV4XSA9IG9sZFZlcnNlLnN1YnN0cmluZygwLCB2ZXJzZU51bUxlbiArIDEpICsgbmV3VmVyc2VVc2ZtXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbmV3Q2hhcHRlciA9IHZlcnNlQ2h1bmtzLmpvaW4oJ1xcXFx2ICcpXG4gICAgICAgIGNoYXB0ZXJDaHVua3NbY2hhcHRlckluZGV4XSA9IG5ld0NoYXB0ZXJcbiAgICAgICAgbmV3VXNmbSA9IGNoYXB0ZXJDaHVua3Muam9pbignXFxcXGMgJylcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG5ld1VzZm1cbiAgfVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7IC8vIGZvciBlYWNoIHVuc2F2ZWQgY2hhbmdlLCBjYWxsIGludG8gc2NyaXB0dXJlUGFuZSB0byBnZXQgbGF0ZXN0IGNoYW5nZXMgZm9yIHZlcnNlIHRvIHNhdmVcbiAgICBhc3luYyBmdW5jdGlvbiBnZXRSZWFkeUZvclNhdmUoKSB7XG4gICAgICBpZiAoc2F2ZUNsaWNrZWQpIHtcbiAgICAgICAgbGV0IGNyZWF0ZUVkaXRCcmFuY2ggPSAhX3VzaW5nVXNlckJyYW5jaFxuXG4gICAgICAgIGlmICghY3JlYXRlRWRpdEJyYW5jaCkgeyAvLyBpZiBhbHJlYWR5IHVzaW5nIHRoZSB1c2VyIGJyYW5jaFxuICAgICAgICAgIGlmICh3b3JraW5nUmVzb3VyY2VCcmFuY2ggIT09IHVzZXJFZGl0QnJhbmNoTmFtZSkge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKGBzYXZlQ2hhbmdlc1RvQ2xvdWQgLSBzdGF0ZSBjb25mbGljdCAtIHNob3VsZCBiZSBpbiB1c2VyIGJyYW5jaCAke3VzZXJFZGl0QnJhbmNoTmFtZX0sIGJ1dCBhY3R1YWxseSB1c2luZyAke3dvcmtpbmdSZXNvdXJjZUJyYW5jaH1gKVxuICAgICAgICAgICAgY3JlYXRlRWRpdEJyYW5jaCA9IHRydWVcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCAtIGFscmVhZHkgdXNpbmcgZWRpdCBicmFuY2g6ICR7d29ya2luZ1Jlc291cmNlQnJhbmNofWApXG4gICAgICAgICAgICBzZXRTdGF0ZSh7IGVkaXRCcmFuY2hSZWFkeTogdHJ1ZSB9KVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjcmVhdGVFZGl0QnJhbmNoKSB7IC8vIGlmIG5vdCB5ZXQgdXNpbmcgdGhlIHVzZXIgYnJhbmNoLCBjcmVhdGUgaXRcbiAgICAgICAgICBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkIC0gY3JlYXRpbmcgZWRpdCBicmFuY2hgKVxuICAgICAgICAgIHNldFN0YXRlKHtcbiAgICAgICAgICAgIGVkaXRCcmFuY2hSZWFkeTogZmFsc2UsXG4gICAgICAgICAgICByZWFkeUZvckZldGNoOiBmYWxzZSxcbiAgICAgICAgICAgIHNoYTogbnVsbCxcbiAgICAgICAgICB9KSAvLyB3ZSB3aWxsIG5lZWQgYSBuZXcgc2hhIGZvciBib29rL2JyYW5jaFxuXG4gICAgICAgICAgY29uc3QgYnJhbmNoID0gYXdhaXQgc3RhcnRFZGl0QnJhbmNoKClcblxuICAgICAgICAgIGlmIChicmFuY2gpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBzYXZlQ2hhbmdlc1RvQ2xvdWQgLSBlZGl0IGJyYW5jaCBjcmVhdGVkYClcbiAgICAgICAgICAgIHNldFN0YXRlKHtcbiAgICAgICAgICAgICAgZWRpdEJyYW5jaFJlYWR5OiB0cnVlLFxuICAgICAgICAgICAgICByZWFkeUZvckZldGNoOiB0cnVlLFxuICAgICAgICAgICAgICByZWY6IGJyYW5jaCxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ3NhdmVDaGFuZ2VzVG9DbG91ZCgpIC0gZXJyb3IgY3JlYXRpbmcgZWRpdCBicmFuY2gnKVxuICAgICAgICAgICAgb25SZXNvdXJjZUVycm9yICYmIG9uUmVzb3VyY2VFcnJvcihudWxsLCBmYWxzZSwgbnVsbCwgYEVycm9yIGNyZWF0aW5nIGVkaXQgYnJhbmNoICR7bGFuZ3VhZ2VJZF99XyR7cmVzb3VyY2VJZH1gLCB0cnVlKVxuICAgICAgICAgICAgc2V0U3RhdGUoeyBzYXZlQ2xpY2tlZDogZmFsc2UgfSlcbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnNvbGUubG9nKGBzYXZlQ2hhbmdlc1RvQ2xvdWQgLSBnZXR0aW5nIHZlcnNlIGNoYW5nZXNgKVxuICAgICAgICBjb25zdCB1bnNhdmVkQ2FyZEluZGljZXMgPSBPYmplY3Qua2V5cyh1bnNhdmVkQ2hhbmdlc0xpc3QpXG5cbiAgICAgICAgaWYgKHVuc2F2ZWRDYXJkSW5kaWNlcz8ubGVuZ3RoKSB7XG4gICAgICAgICAgbGV0IGJpYmxlVXNmbUluaXRpYWwgPSBnZXRDdXJyZW50Qm9vayhzY3JpcHR1cmVDb25maWcsIGJvb2tJZCkgLy8gZ2V0IG9yaWdpbmFsIFVTRk1cbiAgICAgICAgICBsZXQgYmlibGVVc2ZtTmV3ID0gYmlibGVVc2ZtSW5pdGlhbCAvLyBtYWtlIGEgY29weSB0byBlZGl0XG4gICAgICAgICAgbGV0IG1lcmdlRmFpbCA9IGZhbHNlXG5cbiAgICAgICAgICBpZiAoYmlibGVVc2ZtSW5pdGlhbCkge1xuICAgICAgICAgICAgbGV0IGNhcmROdW0gPSAwXG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgY2FyZEluZGV4IG9mIHVuc2F2ZWRDYXJkSW5kaWNlcykge1xuICAgICAgICAgICAgICBjYXJkTnVtID0gcGFyc2VJbnQoY2FyZEluZGV4KVxuICAgICAgICAgICAgICBjb25zdCB7IGdldENoYW5nZXMsIHN0YXRlIH0gPSB1bnNhdmVkQ2hhbmdlc0xpc3RbY2FyZE51bV1cblxuICAgICAgICAgICAgICBpZiAoZ2V0Q2hhbmdlcykge1xuICAgICAgICAgICAgICAgIGxldCBuZXdVc2ZtXG4gICAgICAgICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgICAgICAgcmVmLFxuICAgICAgICAgICAgICAgICAgdXBkYXRlZFZlcnNlT2JqZWN0cyxcbiAgICAgICAgICAgICAgICB9ID0gZ2V0Q2hhbmdlcyhzdGF0ZSlcblxuICAgICAgICAgICAgICAgIGlmICh1cGRhdGVkVmVyc2VPYmplY3RzICYmIGJpYmxlVXNmbU5ldykgeyAvLyBqdXN0IHJlcGxhY2UgdmVyc2VcbiAgICAgICAgICAgICAgICAgIG5ld1VzZm0gPSBtZXJnZVZlcnNlT2JqZWN0c0ludG9CaWJsZVVzZm0oYmlibGVVc2ZtTmV3LCByZWYsIHVwZGF0ZWRWZXJzZU9iamVjdHMsIGNhcmROdW0pXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKG5ld1VzZm0pIHtcbiAgICAgICAgICAgICAgICAgIGJpYmxlVXNmbU5ldyA9IG5ld1VzZm1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgbWVyZ2VGYWlsID0gdHJ1ZVxuICAgICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBsZXQgc2F2ZURpZmZQYXRjaCA9IGZhbHNlIC8vIGlmIHRydWUgdGhlbiB3ZSB3aWxsIHNlbmQgdXAgYSBkaWZmcGF0Y2ggaW5zdGVhZCBvZiB0aGUgd2hvbGUgYm9va1xuICAgICAgICAgIGxldCBfc2F2ZUZ1bGxCaWJsZUNvbnRlbnQgPSBudWxsXG4gICAgICAgICAgbGV0IF9zYXZlQ29udGVudCA9IGJpYmxlVXNmbU5ld1xuXG4gICAgICAgICAgaWYgKG1lcmdlRmFpbCkgeyAvLyBpZiB3ZSBmYWlsZWQgdG8gbWVyZ2UsIGZhbGxiYWNrIHRvIGJydXRlIGZvcmNlIHZlcnNlIG9iamVjdHMgdG8gVVNGTVxuICAgICAgICAgICAgY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCgke2NhcmROdW19KSAtIHZlcnNlIG5vdCBmb3VuZCwgZmFsbGluZyBiYWNrIHRvIGluc2VydGluZyB2ZXJzZSBvYmplY3RgKVxuICAgICAgICAgICAgbGV0IG5ld0Jvb2tKc29uXG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgY2FyZEluZGV4IG9mIHVuc2F2ZWRDYXJkSW5kaWNlcykge1xuICAgICAgICAgICAgICBjb25zdCBjYXJkTnVtID0gcGFyc2VJbnQoY2FyZEluZGV4KVxuICAgICAgICAgICAgICBjb25zdCB7IGdldENoYW5nZXMsIHN0YXRlIH0gPSB1bnNhdmVkQ2hhbmdlc0xpc3RbY2FyZE51bV1cblxuICAgICAgICAgICAgICBpZiAoZ2V0Q2hhbmdlcykge1xuICAgICAgICAgICAgICAgIGxldCBuZXdVc2ZtXG4gICAgICAgICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgICAgICAgbmV3VmVyc2VUZXh0LFxuICAgICAgICAgICAgICAgICAgcmVmLFxuICAgICAgICAgICAgICAgICAgdXBkYXRlZFZlcnNlT2JqZWN0cyxcbiAgICAgICAgICAgICAgICB9ID0gZ2V0Q2hhbmdlcyhzdGF0ZSlcblxuICAgICAgICAgICAgICAgIGlmICh1cGRhdGVkVmVyc2VPYmplY3RzICYmICFuZXdVc2ZtKSB7XG4gICAgICAgICAgICAgICAgICBsZXQgdGFyZ2V0VmVyc2VPYmplY3RzXyA9IG51bGxcblxuICAgICAgICAgICAgICAgICAgaWYgKHJlZikge1xuICAgICAgICAgICAgICAgICAgICBpZiAobmV3VmVyc2VUZXh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgY29uc3QgeyB0YXJnZXRWZXJzZU9iamVjdHMgfSA9IEFsaWdubWVudEhlbHBlcnMudXBkYXRlQWxpZ25tZW50c1RvVGFyZ2V0VmVyc2UodXBkYXRlZFZlcnNlT2JqZWN0cywgbmV3VmVyc2VUZXh0KVxuICAgICAgICAgICAgICAgICAgICAgIHRhcmdldFZlcnNlT2JqZWN0c18gPSB0YXJnZXRWZXJzZU9iamVjdHNcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRWZXJzZU9iamVjdHNfID0gdXBkYXRlZFZlcnNlT2JqZWN0c1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIG5ld0Jvb2tKc29uID0gdGFyZ2V0VmVyc2VPYmplY3RzXyAmJiBzY3JpcHR1cmVDb25maWc/LnVwZGF0ZVZlcnNlKHJlZi5jaGFwdGVyLCByZWYudmVyc2UsIHt2ZXJzZU9iamVjdHM6IHRhcmdldFZlcnNlT2JqZWN0c199KVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBfc2F2ZUNvbnRlbnQgPSB1c2ZtanMudG9VU0ZNKG5ld0Jvb2tKc29uLCB7IGZvcmNlZE5ld0xpbmVzOiB0cnVlIH0pXG4gICAgICAgICAgfSBlbHNlIHsgLy8gaWYgb25seSBjaGFuZ2VkIGEgZmV3IHZlcnNlcywgd2Ugd2lsbCBqdXN0IG1ha2UgYSBkaWZmcGF0Y2ggaW5zdGVhZCBvZiBzZW5kaW5nIHRoZSB3aG9sZSBib29rXG4gICAgICAgICAgICBjb25zdCBmaWxlbmFtZSA9IHNjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2VTdGF0ZT8ucmVzb3VyY2U/Lm5hbWUgLy8gTGlrZSBcIjU3LVRJVC51c2ZtXCJcbiAgICAgICAgICAgIGlmIChmaWxlbmFtZSAmJiBiaWJsZVVzZm1OZXcgJiYgYmlibGVVc2ZtSW5pdGlhbCkgeyAvLyBtYWtlIHN1cmUgd2UgaGF2ZSBldmVyeXRoaW5nIG5lZWRlZCB0byBtYWtlIGEgcGF0Y2hcbiAgICAgICAgICAgICAgaWYgKGJpYmxlVXNmbUluaXRpYWwgPT09IGJpYmxlVXNmbU5ldykgeyAvLyBpZiBubyBkYXRhIGNoYW5nZSwgdGhlbiBza2lwIHNhdmUgYmVjYXVzZSBEQ1MgY3Jhc2hlcyBvbiBhbiBlbXB0eSBwYXRjaFxuICAgICAgICAgICAgICAgIGNvbnNvbGUud2Fybihgc2F2ZUNoYW5nZXNUb0Nsb3VkKCkgLSB0aGVyZSBpcyBub3RoaW5nIHRvIHNhdmUsIHNraXBwaW5nYClcbiAgICAgICAgICAgICAgICBzZXRTdGF0ZSh7IHNhdmVDbGlja2VkOiBmYWxzZSB9KVxuICAgICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IGRpZmZQYXRjaCA9IGdldFBhdGNoKGZpbGVuYW1lLCBiaWJsZVVzZm1Jbml0aWFsLCBiaWJsZVVzZm1OZXcsIGZhbHNlKVxuICAgICAgICAgICAgICBzYXZlRGlmZlBhdGNoID0gdHJ1ZVxuICAgICAgICAgICAgICBfc2F2ZUNvbnRlbnQgPSBkaWZmUGF0Y2ggLy8gcmVwbGFjZSB3aG9sZSBib29rIGNvbnRlbnQgd2l0aCBqdXN0IHBhdGNoIGRhdGEgKG11Y2ggZmFzdGVyIHVwbG9hZHMpXG4gICAgICAgICAgICAgIF9zYXZlRnVsbEJpYmxlQ29udGVudCA9IHsgIC8vIGtlZXAgdHJhY2sgb2YgcGF0Y2ggZGF0YSBpbiBjYXNlIHdlIG5lZWQgdG8gcmV0cnkgc2F2ZVxuICAgICAgICAgICAgICAgIGZpbGVuYW1lLFxuICAgICAgICAgICAgICAgIGluaXRpYWw6IGJpYmxlVXNmbUluaXRpYWwsXG4gICAgICAgICAgICAgICAgbmV3OiBiaWJsZVVzZm1OZXcsXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoYmlibGVVc2ZtTmV3KSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkKCkgLSBzYXZpbmcgbmV3IFVTRk06ICR7YmlibGVVc2ZtTmV3LnN1YnN0cmluZygwLCAxMDApfS4uLmApXG4gICAgICAgICAgICBzZXRDYXJkc1NhdmluZyhwcmV2Q2FyZHNTYXZpbmcgPT4gWy4uLnByZXZDYXJkc1NhdmluZywgY2FyZFJlc291cmNlSWRdKVxuICAgICAgICAgICAgc2V0U3RhdGUoe1xuICAgICAgICAgICAgICBzYXZlQ29udGVudDogX3NhdmVDb250ZW50LFxuICAgICAgICAgICAgICBzYXZlQ2xpY2tlZDogZmFsc2UsXG4gICAgICAgICAgICAgIHNhdmVEaWZmUGF0Y2gsXG4gICAgICAgICAgICAgIHNhdmVGdWxsQmlibGVDb250ZW50OiBfc2F2ZUZ1bGxCaWJsZUNvbnRlbnQsXG4gICAgICAgICAgICAgIHN0YXJ0U2F2ZTogdHJ1ZSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYHNhdmVDaGFuZ2VzVG9DbG91ZCgpIC0gRXJyb3IgcmV0cmlldmluZyB0aGUgY29ycmVjdCBib29rIGRhdGE6IGluY29ycmVjdCBib29rICR7bGFuZ3VhZ2VJZF99XyR7cmVzb3VyY2VJZH1gKVxuICAgICAgICAgICAgb25SZXNvdXJjZUVycm9yICYmIG9uUmVzb3VyY2VFcnJvcihudWxsLCBmYWxzZSwgbnVsbCwgYEVycm9yIHJldHJpZXZpbmcgdGhlIGNvcnJlY3QgYm9vayBkYXRhICR7bGFuZ3VhZ2VJZF99XyR7cmVzb3VyY2VJZH1gLCB0cnVlKVxuICAgICAgICAgICAgc2V0U3RhdGUoeyBzYXZlQ2xpY2tlZDogZmFsc2UgfSlcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRSZWFkeUZvclNhdmUoKVxuICB9LCBbc2F2ZUNsaWNrZWRdKVxuXG4gIC8vIEB0cy1pZ25vcmVcbiAgY29uc3QgeyBjaGFwdGVyIH0gPSBfcmVmZXJlbmNlIHx8IHt9XG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBfdmVyc2VzRm9yUmVmID0gc2NyaXB0dXJlQ29uZmlnPy52ZXJzZXNGb3JSZWZcbiAgICBsZXQgbmV3U2VsZWN0aW9ucyA9IG5ldyBNYXAoKVxuICAgIGxldCB1cGRhdGVTZWxlY3Rpb25zID0gZmFsc2VcbiAgICBjb25zdCBfbWFwID0gbmV3U2VsZWN0aW9uc1xuICAgIGNvbnN0IG9yaWdpbmFsQm9va0lkID0gb3JpZ2luYWxTY3JpcHR1cmVCb29rT2JqZWN0cz8uYm9va0lkXG4gICAgY29uc3QgYm9va1ZlcnNlT2JqZWN0ID0gb3JpZ2luYWxTY3JpcHR1cmVCb29rT2JqZWN0cz8uY2hhcHRlcnNcbiAgICBsZXQgbmV3U2VsZWN0ZWRRdW90ZSA9IG51bGxcblxuICAgIC8vIGlmIHdlIGhhdmUgZXZlcnl0aGluZyB3ZSBuZWVkIHRvIGNhbGN1bGF0ZSBzZWxlY3Rpb25zXG4gICAgaWYgKF92ZXJzZXNGb3JSZWY/Lmxlbmd0aCAmJlxuICAgICAgYm9va1ZlcnNlT2JqZWN0ICYmXG4gICAgICAoYm9va0lkID09PSBvcmlnaW5hbEJvb2tJZCkgJiZcbiAgICAgIGJvb2tWZXJzZU9iamVjdFtjaGFwdGVyXSAmJiAvLyB3ZSBuZWVkIHRvIGhhdmUgZGF0YSBmb3IgY2hhcHRlclxuICAgICAgc2VsZWN0ZWRRdW90ZT8ucXVvdGVcbiAgICApIHtcbiAgICAgIC8vIGlmIHF1b3RlIGlzIGRpZmZlcmVudCB0aGFuIGxhc3RcbiAgICAgIGlmICghaXNFcXVhbChsYXN0U2VsZWN0ZWRRdW90ZSwgc2VsZWN0ZWRRdW90ZSkgfHxcbiAgICAgICAgIWlzRXF1YWwodmVyc2VzRm9yUmVmLCBfdmVyc2VzRm9yUmVmKSkge1xuICAgICAgICBjb25zdCBvcmlnaW5hbFZlcnNlcyA9IHt9XG4gICAgICAgIGNvbnN0IHN1YnN0aXR1dGUgPSB7fSAvLyBrZWVwIHRyYWNrIG9mIHZlcnNlIHN1YnN0aXR1dGlvbnNcbiAgICAgICAgbGV0IHN0YXJ0VmVyc2UgPSBfdmVyc2VzRm9yUmVmWzBdLnZlcnNlXG5cbiAgICAgICAgaWYgKHR5cGVvZiBzdGFydFZlcnNlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIHN0YXJ0VmVyc2UgPSBwYXJzZUludChzdGFydFZlcnNlKVxuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGxhc3RWZXJzZSA9IHN0YXJ0VmVyc2VcblxuICAgICAgICBmb3IgKGxldCBpID0gMCwgbCA9IF92ZXJzZXNGb3JSZWYubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgICAgY29uc3QgdmVyc2VSZWYgPSBfdmVyc2VzRm9yUmVmW2ldXG4gICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgY2hhcHRlcixcbiAgICAgICAgICAgIHZlcnNlLFxuICAgICAgICAgIH0gPSB2ZXJzZVJlZlxuICAgICAgICAgIC8vIFRSSUNLWSAtIHdlIHJlbWFwIHZlcnNlcyBpbiByZWZlcmVuY2UgcmFuZ2UgdG8gYSBsaW5lYXIgc2VyaWVzIG9mIHZlcnNlcyBzbyB2ZXJzZSBzcGFucyBkb24ndCBjaG9rZSBnZXRRdW90ZU1hdGNoZXNJbkJvb2tSZWZcbiAgICAgICAgICBsZXQgX3ZlcnNlID0gc3RhcnRWZXJzZSArIGlcbiAgICAgICAgICBsYXN0VmVyc2UgPSBfdmVyc2VcbiAgICAgICAgICBzdWJzdGl0dXRlW2Ake2NoYXB0ZXJ9OiR7X3ZlcnNlfWBdID0gYCR7Y2hhcHRlcn06JHt2ZXJzZX1gXG5cbiAgICAgICAgICBpZiAoIW9yaWdpbmFsVmVyc2VzW2NoYXB0ZXJdKSB7XG4gICAgICAgICAgICBvcmlnaW5hbFZlcnNlc1tjaGFwdGVyXSA9IHt9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbGV0IHZlcnNlT2JqZWN0cyA9IFtdXG5cbiAgICAgICAgICBpZiAoKHR5cGVvZiB2ZXJzZSA9PT0gJ3N0cmluZycpICYmICh2ZXJzZS5pbmNsdWRlcygnLScpKSkge1xuICAgICAgICAgICAgY29uc3QgdmVyc2VzID0gZ2V0VmVyc2VzKGJvb2tWZXJzZU9iamVjdCwgYCR7Y2hhcHRlcn06JHt2ZXJzZX1gKVxuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHZlcnNlSXRlbSBvZiB2ZXJzZXMpIHtcbiAgICAgICAgICAgICAgY29uc3Qgdm8gPSB2ZXJzZUl0ZW0udmVyc2VEYXRhLnZlcnNlT2JqZWN0c1xuICAgICAgICAgICAgICB2ZXJzZU9iamVjdHMgPSB2ZXJzZU9iamVjdHMuY29uY2F0KHZvKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB2ZXJzZU9iamVjdHMgPSBib29rVmVyc2VPYmplY3RbY2hhcHRlcl1bdmVyc2VdPy52ZXJzZU9iamVjdHNcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAodmVyc2VPYmplY3RzKSB7XG4gICAgICAgICAgICB2ZXJzZU9iamVjdHMgPSBjbGVhbnVwVmVyc2VPYmplY3RzKHZlcnNlT2JqZWN0cylcbiAgICAgICAgICAgIG9yaWdpbmFsVmVyc2VzW2NoYXB0ZXJdW192ZXJzZV0gPSB7IHZlcnNlT2JqZWN0cyB9XG4gICAgICAgICAgICBfbWFwLnNldChgJHtjaGFwdGVyfToke3ZlcnNlfWAsIHZlcnNlT2JqZWN0cylcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBjcmVhdGUgbmV3IHJlZmVyZW5jZSByYW5nZSBmb3IgbmV3IGxpbmVhciB2ZXJzZSByYW5nZVxuICAgICAgICBjb25zdCBbY2hhcHRlcl0gPSBzZWxlY3RlZFF1b3RlPy5yZWZlcmVuY2U/LnNwbGl0KCc6JylcbiAgICAgICAgbGV0IHN1YlJlZiA9IGAke2NoYXB0ZXJ9OiR7c3RhcnRWZXJzZX1gXG5cbiAgICAgICAgaWYgKGxhc3RWZXJzZSAhPSBzdGFydFZlcnNlKSB7XG4gICAgICAgICAgc3ViUmVmICs9IGAtJHtsYXN0VmVyc2V9YFxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcXVvdGVNYXRjaGVzID0gZ2V0UXVvdGVNYXRjaGVzSW5Cb29rUmVmKHtcbiAgICAgICAgICBib29rT2JqZWN0OiBvcmlnaW5hbFZlcnNlcyxcbiAgICAgICAgICByZWY6IHN1YlJlZixcbiAgICAgICAgICBxdW90ZTogc2VsZWN0ZWRRdW90ZT8ucXVvdGUsXG4gICAgICAgICAgb2NjdXJyZW5jZTogc2VsZWN0ZWRRdW90ZT8ub2NjdXJyZW5jZSxcbiAgICAgICAgfSlcblxuICAgICAgICBjb25zdCBzZWxlY3Rpb25zID0gbmV3IE1hcCgpXG5cbiAgICAgICAgaWYgKHF1b3RlTWF0Y2hlcz8uc2l6ZSkge1xuICAgICAgICAgIHF1b3RlTWF0Y2hlcy5mb3JFYWNoKCh3b3Jkcywga2V5KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBfa2V5ID0gc3Vic3RpdHV0ZVtrZXldXG5cbiAgICAgICAgICAgIHNlbGVjdGlvbnMuc2V0KF9rZXksIHdvcmRzLm1hcCh3b3JkID0+IChcbiAgICAgICAgICAgICAgeyAuLi53b3JkLCB0ZXh0OiBjb3JlLm5vcm1hbGl6ZVN0cmluZyh3b3JkLnRleHQpIH1cbiAgICAgICAgICAgICkpKVxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgICAgbmV3U2VsZWN0aW9ucyA9IHNlbGVjdGlvbnNcbiAgICAgICAgbmV3U2VsZWN0ZWRRdW90ZSA9IHNlbGVjdGVkUXVvdGVcbiAgICAgICAgdXBkYXRlU2VsZWN0aW9ucyA9IHRydWVcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBuZXdTdGF0ZTogYW55ID0ge31cblxuICAgIC8vIHVwZGF0ZSBzdGF0ZXMgdGhhdCBoYXZlIGNoYW5nZWRcbiAgICBpZiAoIWFyZU1hcHNUaGVTYW1lKHZlcnNlT2JqZWN0c01hcCwgX21hcCkpIHtcbiAgICAgIG5ld1N0YXRlLnZlcnNlT2JqZWN0c01hcCA9IF9tYXBcbiAgICB9XG5cbiAgICBjb25zdCBib29rc05vdFNhbWUgPSByZWZlcmVuY2U/LnByb2plY3RJZCAhPT0gY3VycmVudFJlZmVyZW5jZT8ucHJvamVjdElkXG5cbiAgICBpZiAoYm9va3NOb3RTYW1lIHx8ICFhcmVWZXJzZXNTYW1lKHZlcnNlc0ZvclJlZiwgX3ZlcnNlc0ZvclJlZikpIHtcbiAgICAgIG5ld1N0YXRlLnZlcnNlc0ZvclJlZiA9IF92ZXJzZXNGb3JSZWZcbiAgICAgIG5ld1N0YXRlLmxhc3RTZWxlY3RlZFF1b3RlID0gbmV3U2VsZWN0ZWRRdW90ZVxuICAgICAgbmV3U3RhdGUuc2VsZWN0aW9ucyA9IG5ld1NlbGVjdGlvbnNcbiAgICB9XG5cbiAgICBpZiAobmV3U2VsZWN0ZWRRdW90ZSkge1xuICAgICAgbmV3U3RhdGUubGFzdFNlbGVjdGVkUXVvdGUgPSBuZXdTZWxlY3RlZFF1b3RlXG4gICAgfVxuXG4gICAgaWYgKHVwZGF0ZVNlbGVjdGlvbnMpIHtcbiAgICAgIGlmICghYXJlTWFwc1RoZVNhbWUoc2VsZWN0aW9ucyB8fCAobmV3IE1hcCgpKSwgbmV3U2VsZWN0aW9ucykpIHtcbiAgICAgICAgbmV3U3RhdGUuc2VsZWN0aW9ucyA9IG5ld1NlbGVjdGlvbnNcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoT2JqZWN0LmtleXMobmV3U3RhdGUpLmxlbmd0aCkge1xuICAgICAgc2V0U3RhdGUobmV3U3RhdGUpXG4gICAgfVxuICB9LCBbXG4gICAgb3duZXIsXG4gICAgcmVzb3VyY2VJZCxcbiAgICBib29rSWQsXG4gICAgbGFuZ3VhZ2VJZF8sXG4gICAgc2NyaXB0dXJlQ29uZmlnPy52ZXJzZXNGb3JSZWYsXG4gICAgb3JpZ2luYWxTY3JpcHR1cmVCb29rT2JqZWN0cyxcbiAgICBzZWxlY3RlZFF1b3RlLFxuICBdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7IC8vIGNsZWFyIHNldHRpbmdzIG9uIHZlcnNlIGNoYW5nZVxuICAgIHNldFN0YXRlKHtcbiAgICAgIHZlcnNlc0FsaWdubWVudFN0YXR1czogbnVsbCxcbiAgICAgIHVuc2F2ZWRDaGFuZ2VzTGlzdDoge30sXG4gICAgICBoYXZlVW5zYXZlZENoYW5nZXM6IGZhbHNlLFxuICAgIH0pXG4gIH0sIFtfcmVmZXJlbmNlXSlcblxuICBjb25zdCB1cGRhdGVWZXJzZXNBbGlnbm1lbnRTdGF0dXMgPSAocmVmZXJlbmNlLCBhbGlnbmVkKSA9PiB7XG4gICAgc2V0U3RhdGVfKHByZXZTdGF0ZSA9PiAoe1xuICAgICAgLi4ucHJldlN0YXRlLFxuICAgICAgdmVyc2VzQWxpZ25tZW50U3RhdHVzOiB7IC4uLnByZXZTdGF0ZS52ZXJzZXNBbGlnbm1lbnRTdGF0dXMsIFtgJHtyZWZlcmVuY2UuY2hhcHRlcn06JHtyZWZlcmVuY2UudmVyc2V9YF06IGFsaWduZWQgfSxcbiAgICB9KSlcbiAgfVxuXG4gIGxldCBfdmVyc2VzRm9yUmVmID0gc2NyaXB0dXJlQ29uZmlnPy52ZXJzZXNGb3JSZWZcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChfdmVyc2VzRm9yUmVmPy5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IHsgcmVmZXJlbmNlLCByZXNvdXJjZUxpbmsgfSA9IHNjcmlwdHVyZUNvbmZpZyB8fCB7fVxuICAgICAgY29uc29sZS5sb2coYFNjcmlwdHVyZUNhcmQuX3ZlcnNlc0ZvclJlZiBjaGFuZ2VkYCwgeyByZWZlcmVuY2UsIHJlc291cmNlTGluayB9KVxuICAgIH1cbiAgfSwgW192ZXJzZXNGb3JSZWZdKVxuXG4gIGlmICghX3ZlcnNlc0ZvclJlZj8ubGVuZ3RoKSB7IC8vIGlmIGVtcHR5IG9mIHJlZmVyZW5jZXMsIGNyZWF0ZSBzaW5nbGUgZW1wdHkgcmVmZXJlbmNlXG4gICAgX3ZlcnNlc0ZvclJlZiA9IFt7IC4uLnJlZmVyZW5jZSB9XVxuICB9XG5cbiAgY29uc3QgcmVuZGVyZWRTY3JpcHR1cmVQYW5lcyA9IF92ZXJzZXNGb3JSZWY/Lm1hcCgoX2N1cnJlbnRWZXJzZURhdGEsIGluZGV4KSA9PiB7XG4gICAgY29uc3QgaW5pdGlhbFZlcnNlT2JqZWN0cyA9IF9jdXJyZW50VmVyc2VEYXRhPy52ZXJzZURhdGE/LnZlcnNlT2JqZWN0cyB8fCBbXVxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBjb25zdCB7IGNoYXB0ZXIsIHZlcnNlIH0gPSBfY3VycmVudFZlcnNlRGF0YSB8fCB7fVxuICAgIGNvbnN0IHByb2plY3RJZCA9IGN1cnJlbnRSZWZlcmVuY2U/LnByb2plY3RJZCB8fCByZWZlcmVuY2U/LnByb2plY3RJZFxuICAgIGNvbnN0IF9yZWZlcmVuY2UgPSB7XG4gICAgICAuLi5fdmVyc2VzRm9yUmVmLFxuICAgICAgY2hhcHRlcixcbiAgICAgIHByb2plY3RJZCxcbiAgICAgIHZlcnNlLFxuICAgIH1cbiAgICBjb25zdCBfc2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZyA9IHtcbiAgICAgIC4uLnNjcmlwdHVyZUFsaWdubWVudEVkaXRDb25maWcsXG4gICAgICBjdXJyZW50SW5kZXg6IGluZGV4LFxuICAgICAgaW5pdGlhbFZlcnNlT2JqZWN0cyxcbiAgICAgIHJlZmVyZW5jZTogX3JlZmVyZW5jZSxcbiAgICAgIGlzTmV3VGVzdGFtZW50LFxuICAgIH1cblxuICAgIGxldCBpc1ZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQgPSBmYWxzZVxuXG4gICAgaWYgKHZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQpIHtcbiAgICAgIGlzVmVyc2VTZWxlY3RlZEZvckFsaWdubWVudCA9IHZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQuY2hhcHRlciA9PSBjaGFwdGVyICYmIHZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQudmVyc2UgPT0gdmVyc2VcbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgPFNjcmlwdHVyZVBhbmVcbiAgICAgICAgey4uLnNjcmlwdHVyZUNvbmZpZ31cbiAgICAgICAgY29udGVudFN0eWxlPXtjb250ZW50U3R5bGV9XG4gICAgICAgIGN1cnJlbnRJbmRleD17aW5kZXh9XG4gICAgICAgIGRldGVybWluaW5nQnJhbmNoPXshcmVhZHlGb3JGZXRjaH1cbiAgICAgICAgZGlyZWN0aW9uPXtkaXJlY3Rpb259XG4gICAgICAgIGRpc2FibGVXb3JkUG9wb3Zlcj17ZGlzYWJsZVdvcmRQb3BvdmVyX31cbiAgICAgICAgZm9udFNpemU9e2ZvbnRTaXplfVxuICAgICAgICBnZXRMZXhpY29uRGF0YT17Z2V0TGV4aWNvbkRhdGF9XG4gICAgICAgIGlzTlQ9e2lzTlRffVxuICAgICAgICBpc1ZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQ9e2lzVmVyc2VTZWxlY3RlZEZvckFsaWdubWVudH1cbiAgICAgICAga2V5PXtpbmRleH1cbiAgICAgICAgb25BbGlnbm1lbnRGaW5pc2g9eygpID0+IHNldFN0YXRlKHsgdmVyc2VTZWxlY3RlZEZvckFsaWdubWVudDogbnVsbCB9KX1cbiAgICAgICAgb3JpZ2luYWxTY3JpcHR1cmVCb29rT2JqZWN0cz17b3JpZ2luYWxTY3JpcHR1cmVCb29rT2JqZWN0c31cbiAgICAgICAgcmVmU3R5bGU9e3JlZlN0eWxlfVxuICAgICAgICByZWZlcmVuY2U9e19yZWZlcmVuY2V9XG4gICAgICAgIHNhdmluZz17c3RhcnRTYXZlfVxuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIHNjcmlwdHVyZUFsaWdubWVudEVkaXRDb25maWc9e19zY3JpcHR1cmVBbGlnbm1lbnRFZGl0Q29uZmlnfVxuICAgICAgICBzZXRXb3JkQWxpZ25lclN0YXR1cz17c2V0V29yZEFsaWduZXJTdGF0dXN9XG4gICAgICAgIHNlcnZlcj17c2VydmVyfVxuICAgICAgICB0cmFuc2xhdGU9e3RyYW5zbGF0ZX1cbiAgICAgICAgdXBkYXRlVmVyc2VzQWxpZ25tZW50U3RhdHVzPXt1cGRhdGVWZXJzZXNBbGlnbm1lbnRTdGF0dXN9XG4gICAgICAvPlxuICAgIClcbiAgfSlcblxuICBjb25zdCBoYW5kbGVBbGlnbkJ1dHRvbkNsaWNrID0gKCkgPT4ge1xuICAgIGlmICh2ZXJzZXNGb3JSZWY/Lmxlbmd0aCA+IDEpIHtcbiAgICAgIHNldFN0YXRlKHsgc2hvd0FsaWdubWVudFBvcHVwOiB0cnVlIH0pXG4gICAgfSBlbHNlIGlmICh2ZXJzZXNGb3JSZWY/Lmxlbmd0aCA9PT0gMSkge1xuICAgICAgc2V0U3RhdGUoeyB2ZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50OiB2ZXJzZXNGb3JSZWZbMF0gfSlcbiAgICB9XG4gIH1cblxuICBjb25zdCBvblJlbmRlclRvb2xiYXIgPSAoeyBpdGVtcyB9KSA9PiB7XG4gICAgY29uc3QgbmV3SXRlbXMgPSBbLi4uaXRlbXNdXG5cbiAgICBsZXQgYWxsVmVyc2VzQWxpZ25lZCA9IGZhbHNlXG5cbiAgICAvLyBDaGVjayBpZiBhbGwgdmFsdWVzIGluIHZlcnNlc0FsaWdubWVudFN0YXR1cyBhcmUgdHJ1ZVxuICAgIGlmICh2ZXJzZXNBbGlnbm1lbnRTdGF0dXMpIHtcbiAgICAgIGFsbFZlcnNlc0FsaWduZWQgPSBPYmplY3QudmFsdWVzKHZlcnNlc0FsaWdubWVudFN0YXR1cykuZXZlcnkoYWxpZ25TdGF0dXMgPT4gYWxpZ25TdGF0dXMgPT09IHRydWUpXG4gICAgfVxuXG4gICAgbGV0IGFsaWduSWNvbiA9IG51bGxcbiAgICBsZXQgYWxpZ25CdXR0b25UZXh0ID0gJydcblxuICAgIGlmIChhbGxWZXJzZXNBbGlnbmVkKSB7XG4gICAgICBhbGlnbkljb24gPSA8UnhMaW5rMiBpZD17YHZhbGlkX2ljb25fJHtyZXNvdXJjZUlkfWB9IGNvbG9yPScjQkJCJyAvPlxuICAgICAgYWxpZ25CdXR0b25UZXh0ID0gJ0FsaWdubWVudCBpcyBWYWxpZCdcbiAgICB9IGVsc2Uge1xuICAgICAgYWxpZ25JY29uID0gPFJ4TGlua0JyZWFrMiBpZD17YGludmFsaWRfYWxpZ25tZW50X2ljb25fJHtyZXNvdXJjZUlkfWB9IGNvbG9yPScjMDAwJyAvPlxuICAgICAgYWxpZ25CdXR0b25UZXh0ID0gJ0FsaWdubWVudCBpcyBJbnZhbGlkJ1xuICAgIH1cblxuICAgIGlmIChzZXRXb3JkQWxpZ25lclN0YXR1cyAmJiByZXNvdXJjZUlkICE9PSAnT1JJR0lOQUxfU09VUkNFJykge1xuICAgICAgbmV3SXRlbXMucHVzaChcbiAgICAgICAgPEljb25CdXR0b25cbiAgICAgICAgICBpZD17YGFsaWdubWVudF9pY29uXyR7cmVzb3VyY2VJZH1gfVxuICAgICAgICAgIGtleT0nY2hlY2tpbmctYnV0dG9uJ1xuICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZUFsaWduQnV0dG9uQ2xpY2t9XG4gICAgICAgICAgdGl0bGU9e2FsaWduQnV0dG9uVGV4dH1cbiAgICAgICAgICBhcmlhLWxhYmVsPXthbGlnbkJ1dHRvblRleHR9XG4gICAgICAgICAgc3R5bGU9e3sgY3Vyc29yOiAncG9pbnRlcicgfX1cbiAgICAgICAgPlxuICAgICAgICAgIHthbGlnbkljb259XG4gICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgIClcbiAgICB9XG5cbiAgICAvLyBPbmx5IHNob3cgdGhlIHVwZGF0ZSBmcm9tIG1haW4gYnV0dG9uIGlmIHNjcmlwdHVyZSBpcyBub3Qgb3JpZ2luYWwgdGV4dC5cbiAgICAhdXNpbmdPcmlnaW5hbEJpYmxlICYmIG5ld0l0ZW1zLnB1c2goXG4gICAgICA8PlxuICAgICAgICA8VXBkYXRlQnJhbmNoQnV0dG9uIHsuLi51cGRhdGVCdXR0b25Qcm9wc30gaXNMb2FkaW5nPXtpc1VwZGF0ZUxvYWRpbmcgfHwgc3RhcnRTYXZlfS8+XG4gICAgICAgIDxFcnJvckRpYWxvZyB0aXRsZT17ZGlhbG9nVGl0bGV9IGNvbnRlbnQ9e2RpYWxvZ01lc3NhZ2V9IG9wZW49e2lzRXJyb3JEaWFsb2dPcGVufSBvbkNsb3NlPXtvbkNsb3NlRXJyb3JEaWFsb2d9IGlzTG9hZGluZz17IGlzVXBkYXRlTG9hZGluZyB8fCBzdGFydFNhdmUgfSBsaW5rPXtkaWFsb2dMaW5rfSBsaW5rVG9vbHRpcD17ZGlhbG9nTGlua1Rvb2x0aXB9IC8+XG4gICAgICA8Lz5cbiAgICApXG5cbiAgICByZXR1cm4gbmV3SXRlbXNcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPFNlbGVjdGlvbnNDb250ZXh0UHJvdmlkZXJcbiAgICAgIHNlbGVjdGlvbnM9e3NlbGVjdGlvbnN9XG4gICAgICBvblNlbGVjdGlvbnM9e25ld1NlbGVjdGlvbnMgPT4ge1xuICAgICAgICAvLyBjb25zb2xlLmxvZygnb25TZWxlY3Rpb25zJywgbmV3U2VsZWN0aW9ucylcbiAgICAgIH19XG4gICAgICBxdW90ZT17c2VsZWN0ZWRRdW90ZT8ucXVvdGV9XG4gICAgICBvY2N1cnJlbmNlPXtmaXhPY2N1cnJlbmNlKHNlbGVjdGVkUXVvdGU/Lm9jY3VycmVuY2UpfVxuICAgICAgdmVyc2VPYmplY3RzTWFwPXt2ZXJzZU9iamVjdHNNYXB9XG4gICAgPlxuICAgICAgPENhcmRcbiAgICAgICAgaWQ9e2BzY3JpcHR1cmVfY2FyZF8ke2NhcmROdW19YH1cbiAgICAgICAgdGl0bGU9e3NjcmlwdHVyZUxhYmVsfVxuICAgICAgICBzZXR0aW5nc1RpdGxlPXtzY3JpcHR1cmVUaXRsZSArICcgU2V0dGluZ3MnfVxuICAgICAgICBpdGVtcz17aXRlbXN9XG4gICAgICAgIGNsYXNzZXM9e2NsYXNzZXN9XG4gICAgICAgIGhlYWRlcnM9e2hlYWRlcnN9XG4gICAgICAgIGZpbHRlcnM9e2ZpbHRlcnN9XG4gICAgICAgIGZvbnRTaXplPXtmb250U2l6ZX1cbiAgICAgICAgaXRlbUluZGV4PXtpdGVtSW5kZXh9XG4gICAgICAgIHNldEZpbHRlcnM9e3NldEZpbHRlcnN9XG4gICAgICAgIHNldEZvbnRTaXplPXtzZXRGb250U2l6ZX1cbiAgICAgICAgc2V0SXRlbUluZGV4PXtzZXRJdGVtSW5kZXh9XG4gICAgICAgIG1hcmtkb3duVmlldz17bWFya2Rvd25WaWV3fVxuICAgICAgICBzZXRNYXJrZG93blZpZXc9e3NldE1hcmtkb3duVmlld31cbiAgICAgICAgZ2V0Q3VzdG9tQ29tcG9uZW50PXtnZXRTY3JpcHR1cmVTZWxlY3Rvcn1cbiAgICAgICAgaGlkZU1hcmtkb3duVG9nZ2xlXG4gICAgICAgIG9uTWVudUNsb3NlPXtvbk1lbnVDbG9zZX1cbiAgICAgICAgb25NaW5pbWl6ZT17b25NaW5pbWl6ZSA/ICgpID0+IG9uTWluaW1pemUoaWQsIHNjcmlwdHVyZVRpdGxlKSA6IG51bGx9XG4gICAgICAgIGVkaXRhYmxlPXtlbmFibGVFZGl0IHx8IGVuYWJsZUFsaWdubWVudH1cbiAgICAgICAgc2F2ZWQ9e3N0YXJ0U2F2ZSB8fCAhaGF2ZVVuc2F2ZWRDaGFuZ2VzfVxuICAgICAgICBvblNhdmVFZGl0PXsoKSA9PiBzZXRTdGF0ZSh7IHNhdmVDbGlja2VkOiB0cnVlIH0pfVxuICAgICAgICBvblJlbmRlclRvb2xiYXI9e29uUmVuZGVyVG9vbGJhcn1cbiAgICAgID5cbiAgICAgICAgPGRpdiBpZD1cInNjcmlwdHVyZS1wYW5lLWxpc3RcIj5cbiAgICAgICAgICB7cmVuZGVyZWRTY3JpcHR1cmVQYW5lc31cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L0NhcmQ+XG4gICAgICA8VmVyc2VTZWxlY3RvclBvcHVwXG4gICAgICAgIHJlc291cmNlSWQ9e3Jlc291cmNlSWR9XG4gICAgICAgIG9wZW49e3Nob3dBbGlnbm1lbnRQb3B1cH1cbiAgICAgICAgb25DbG9zZT17KCkgPT4gc2V0U3RhdGUoeyBzaG93QWxpZ25tZW50UG9wdXA6IGZhbHNlIH0pfVxuICAgICAgICB2ZXJzZXNGb3JSZWY9e3ZlcnNlc0ZvclJlZn1cbiAgICAgICAgdmVyc2VzQWxpZ25tZW50U3RhdHVzPXt2ZXJzZXNBbGlnbm1lbnRTdGF0dXN9XG4gICAgICAgIG9uVmVyc2VTZWxlY3Q9eyh2ZXJzZSkgPT4gc2V0U3RhdGUoe1xuICAgICAgICAgIHZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQ6IHZlcnNlLFxuICAgICAgICAgIHNob3dBbGlnbm1lbnRQb3B1cDogZmFsc2UsXG4gICAgICAgIH0pfVxuICAgICAgLz5cbiAgICA8L1NlbGVjdGlvbnNDb250ZXh0UHJvdmlkZXI+XG4gIClcbn1cblxuU2NyaXB0dXJlQ2FyZC5wcm9wVHlwZXMgPSB7XG4gIC8qKiByZXBvIGJyYW5jaCBvciB0YWcgc3VjaCBhcyBtYXN0ZXIgKi9cbiAgYXBwUmVmOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIC8qKiBhdXRoZW50aWNhdGlvbiBpbmZvICovXG4gIGF1dGhlbnRpY2F0aW9uOiBQcm9wVHlwZXMub2JqZWN0LFxuICAvKiogaW5kZXggZm9yIGN1cnJlbnQgYm9vayAoZS5nLiAnMDEnIGZvciAnZ2VuJykqL1xuICBib29rSW5kZXg6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKiBzY3JpcHR1cmUgY2FyZCBudW1iZXIgKDAgdG8gMiBmb3IgZXhhbXBsZSkgKi9cbiAgY2FyZE51bTogUHJvcFR5cGVzLm51bWJlci5pc1JlcXVpcmVkLFxuICAvKiogQ1NTIGNsYXNzZXMgKi9cbiAgY2xhc3NlczogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqIGlmIHRydWUgdGhlbiB3b3JkIGRhdGEgaG92ZXIgaXMgc2hvd24gKi9cbiAgZGlzYWJsZVdvcmRQb3BvdmVyOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqIGdldCBsYW5ndWFnZSBkZXRhaWxzICovXG4gIGdldExhbmd1YWdlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAvKiogZnVuY3Rpb24gdG8gZ2V0IGxhdGVzdCBsZXhpY29uIGRhdGEgKi9cbiAgZ2V0TGV4aWNvbkRhdGE6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogb3B0aW9uYWwgdXJsIGZvciBncmVlayByZXBvICovXG4gIGdyZWVrUmVwb1VybDogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqIG9wdGlvbmFsIHVybCBmb3IgaGVicmV3IHJlcG8gKi9cbiAgaGVicmV3UmVwb1VybDogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqIG9wdGlvbmFsIGh0dHAgdGltZW91dCBpbiBtaWxsaXNlY29uZHMgZm9yIGZldGNoaW5nIHJlc291cmNlcywgZGVmYXVsdCBpcyAwICh2ZXJ5IGxvbmcgd2FpdCkgKi9cbiAgaHR0cENvbmZpZzogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqIGh0bWwgaWRlbnRpZmllciB0byB1c2UgZm9yIGNhcmQgKi9cbiAgaWQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKiBtZXRob2QgdG8gZGV0ZXJtaW5lIGlmIE5UIG9yIE9UICovXG4gIGlzTlQ6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIC8qKiB1c2VyLW5hbWUgKi9cbiAgbG9nZ2VkSW5Vc2VyOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKiogZnVuY3Rpb24gdG8gbWluaW1pemUgdGhlIGNhcmQgKG9wdGlvbmFsKSAqL1xuICBvbk1pbmltaXplOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIG9wdGlvbmFsIGNhbGxiYWNrIGlmIGVycm9yIGxvYWRpbmcgcmVzb3VyY2UsIHBhcmFtZXRlciByZXR1cm5lZCBhcmU6XG4gICAqICAgICh7c3RyaW5nfSBlcnJvck1lc3NhZ2UsIHtib29sZWFufSBpc0FjY2Vzc0Vycm9yLCB7b2JqZWN0fSByZXNvdXJjZVN0YXR1cylcbiAgICogICAgICAtIGlzQWNjZXNzRXJyb3IgLSBpcyB0cnVlIGlmIHRoaXMgd2FzIGFuIGVycm9yIHRyeWluZyB0byBhY2Nlc3MgZmlsZVxuICAgKiAgICAgIC0gcmVzb3VyY2VTdGF0dXMgLSBpcyBvYmplY3QgY29udGFpbmluZyBkZXRhaWxzIGFib3V0IHByb2JsZW1zIGZldGNoaW5nIHJlc291cmNlICovXG4gIG9uUmVzb3VyY2VFcnJvcjogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKiB0aGUgb3JpZ2luYWwgc2NyaXB0dXJlIGJvb2tPYmplY3RzIGZvciBjdXJyZW50IGJvb2sgKi9cbiAgb3JpZ2luYWxTY3JpcHR1cmVCb29rT2JqZWN0czogUHJvcFR5cGVzLm9iamVjdCxcbiAgcmVmZXJlbmNlOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIC8qKiBwcm9qZWN0SWQgKGJvb2tJRCkgdG8gdXNlICovXG4gICAgcHJvamVjdElkOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gICAgLyoqIGN1cnJlbnQgY2hhcHRlciBudW1iZXIgKi9cbiAgICBjaGFwdGVyOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMubnVtYmVyLCBQcm9wVHlwZXMuc3RyaW5nXSkuaXNSZXF1aXJlZCxcbiAgICAvKiogY3VycmVudCB2ZXJzZSBudW1iZXIgKi9cbiAgICB2ZXJzZTogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLm51bWJlciwgUHJvcFR5cGVzLnN0cmluZ10pLmlzUmVxdWlyZWQsXG4gIH0pLFxuICAvKiogcmVzb3VyY2Ugb2JqZWN0ICovXG4gIHJlc291cmNlOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIC8qKiByZXNvdXJjZSBsYW5ndWFnZSB0byB1c2UgKi9cbiAgICBsYW5ndWFnZUlkOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gICAgLyoqIHJlcG8gb3duZXIgc3VjaCBhcyB1bmZvbGRpbmdXb3JkICovXG4gICAgb3duZXI6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgICAvKiogcmVzb3VyY2VJZCB0byB1c2UgKGUuZy4gdWdudCkgKi9cbiAgICByZXNvdXJjZUlkOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gICAgLyoqIHJlcG8gb3duZXIgZm9yIG9yaWdpbmFsIGxhbmd1YWdlcyBzdWNoIGFzIHVuZm9sZGluZ1dvcmQgKi9cbiAgICBvcmlnaW5hbExhbmd1YWdlT3duZXI6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgfSksXG4gIC8qKiByZXNvdXJjZUxpbmsgKi9cbiAgcmVzb3VyY2VMaW5rOiBQcm9wVHlwZXMuYW55LFxuICAvKipUaGlzIGlzIGN1cnJlbnRseSBzZWxlY3RlZCBxdW90ZSAqL1xuICBzZWxlY3RlZFF1b3RlOiBQcm9wVHlwZXMub2JqZWN0LFxuICAvKiogc2VydmVyIChlLmcuICdodHRwczovL2dpdC5kb29yNDMub3JnJykgKi9cbiAgc2VydmVyOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIC8qKiBjYWxsYmFjayB0byB1cGRhdGUgbG9hZGluZyBzdGF0ZSAqL1xuICBzZXRBcmVSZXNvdXJjZXNMb2FkaW5nOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIGNhbGxiYWNrIHRvIHVwZGF0ZSBzYXZpbmcgc3RhdGUqL1xuICBzZXRBcmVSZXNvdXJjZXNTYXZpbmc6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogY2FsbGJhY2sgdG8gcmVwb3J0IGNhcmQgbWVyZ2Ugc3RhdHVzICovXG4gIHNldENhcmRzTG9hZGluZ01lcmdlOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIGNhbGxiYWNrIHRvIHJlcG9ydCBjYXJkIHVwZGF0ZSBzdGF0dXMgKi9cbiAgc2V0Q2FyZHNMb2FkaW5nVXBkYXRlOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIGNhbGxiYWNrIHRvIHJlcG9ydCBjYXJkIHNhdmluZyBzdGF0dXMgKi9cbiAgc2V0Q2FyZHNTYXZpbmc6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogZnVuY3Rpb24gdG8gc2V0IHN0YXRlIGluIGFwcCB0aGF0IHRoZXJlIGFyZSB1bnNhdmVkIGNoYW5nZXMgKi9cbiAgc2V0U2F2ZWRDaGFuZ2VzOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIGNhbGxiYWNrIHRvIHVwZGF0ZSB3b3JkIGFsaWduZXIgc3RhdGUgKi9cbiAgc2V0V29yZEFsaWduZXJTdGF0dXM6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogdGl0bGUgZm9yIHNjcmlwdHVyZSBjYXJkICovXG4gIHRpdGxlOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIC8qKiBvcHRpb25hbCBmdW5jdGlvbiBmb3IgbG9jYWxpemF0aW9uICovXG4gIHRyYW5zbGF0ZTogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKiBjYWxsYmFjayB0byB1cGRhdGUgdGhlIGNhcmQncyBtZXJnZSBzdGF0ZSBpbiBhcHAgKi9cbiAgdXBkYXRlTWVyZ2VTdGF0ZTogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKiB1c2UgbWV0aG9kIGZvciB1c2luZyBsb2NhbCBzdG9yYWdlIHNwZWNpZmljIGZvciB1c2VyICovXG4gIHVzZVVzZXJMb2NhbFN0b3JhZ2U6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG59XG4iXSwibWFwcGluZ3MiOiI7K0NBQ0EscUpBQUFBLG1CQUFBLFlBQUFBLG9CQUFBLFdBQUFDLENBQUEsU0FBQUMsQ0FBQSxFQUFBRCxDQUFBLE9BQUFFLENBQUEsR0FBQUMsTUFBQSxDQUFBQyxTQUFBLEVBQUFDLENBQUEsR0FBQUgsQ0FBQSxDQUFBSSxjQUFBLEVBQUFDLENBQUEsR0FBQUosTUFBQSxDQUFBSyxjQUFBLGNBQUFQLENBQUEsRUFBQUQsQ0FBQSxFQUFBRSxDQUFBLElBQUFELENBQUEsQ0FBQUQsQ0FBQSxJQUFBRSxDQUFBLENBQUFPLEtBQUEsS0FBQUMsQ0FBQSx3QkFBQUMsTUFBQSxHQUFBQSxNQUFBLE9BQUFDLENBQUEsR0FBQUYsQ0FBQSxDQUFBRyxRQUFBLGtCQUFBQyxDQUFBLEdBQUFKLENBQUEsQ0FBQUssYUFBQSx1QkFBQUMsQ0FBQSxHQUFBTixDQUFBLENBQUFPLFdBQUEsOEJBQUFDLE9BQUFqQixDQUFBLEVBQUFELENBQUEsRUFBQUUsQ0FBQSxXQUFBQyxNQUFBLENBQUFLLGNBQUEsQ0FBQVAsQ0FBQSxFQUFBRCxDQUFBLElBQUFTLEtBQUEsRUFBQVAsQ0FBQSxFQUFBaUIsVUFBQSxNQUFBQyxZQUFBLE1BQUFDLFFBQUEsU0FBQXBCLENBQUEsQ0FBQUQsQ0FBQSxXQUFBa0IsTUFBQSxtQkFBQWpCLENBQUEsSUFBQWlCLE1BQUEsWUFBQUEsT0FBQWpCLENBQUEsRUFBQUQsQ0FBQSxFQUFBRSxDQUFBLFdBQUFELENBQUEsQ0FBQUQsQ0FBQSxJQUFBRSxDQUFBLGdCQUFBb0IsS0FBQXJCLENBQUEsRUFBQUQsQ0FBQSxFQUFBRSxDQUFBLEVB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