@tricoteuses/assemblee 1.2.1 → 1.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/lib/api.d.ts +1 -0
  2. package/lib/api.js +2 -1
  3. package/lib/api.mjs +2 -1
  4. package/lib/bugs/acteur-00010/plugin.test.js +3 -3
  5. package/lib/bugs/acteur-00010.js +3 -3
  6. package/lib/bugs/agenda-00002/plugin.test.js +3 -3
  7. package/lib/bugs/agenda-00002.js +3 -3
  8. package/lib/bugs/agenda-00008/plugin.test.js +3 -3
  9. package/lib/bugs/agenda-00008.js +3 -3
  10. package/lib/bugs/agenda-00011/plugin.test.js +3 -3
  11. package/lib/bugs/agenda-00011.js +3 -3
  12. package/lib/bugs.js +3 -3
  13. package/lib/cleaners/acteurs.js +2 -2
  14. package/lib/cleaners/organes.js +2 -2
  15. package/lib/cleaners/reunions.js +2 -2
  16. package/lib/cleaners/xml.js +2 -2
  17. package/lib/datasets.js +3 -3
  18. package/lib/dossiers_legislatifs.js +3 -3
  19. package/lib/file_systems.js +3 -3
  20. package/lib/inserters.js +8 -1
  21. package/lib/inserters.mjs +8 -1
  22. package/lib/loaders.js +3 -3
  23. package/lib/parsers/documents.js +3 -3
  24. package/lib/parsers/recherche_amendements.js +11 -11
  25. package/lib/raw_types/acteurs_et_organes.d.ts +1 -0
  26. package/lib/raw_types/acteurs_et_organes.js +6 -2
  27. package/lib/raw_types/acteurs_et_organes.mjs +5 -1
  28. package/lib/raw_types/agendas.js +1 -1
  29. package/lib/raw_types/amendements.js +1 -1
  30. package/lib/raw_types/debats.js +1 -1
  31. package/lib/raw_types/dossiers_legislatifs.js +2 -2
  32. package/lib/raw_types/questions.js +1 -1
  33. package/lib/raw_types/scrutins.js +1 -1
  34. package/lib/scripts/bugs_helper.js +5 -5
  35. package/lib/scripts/clean_reorganized_data.js +4 -4
  36. package/lib/scripts/document_dossiers_legislatifs.js +7 -5
  37. package/lib/scripts/document_dossiers_legislatifs.mjs +4 -2
  38. package/lib/scripts/raw_types_from_amendements.js +3 -3
  39. package/lib/scripts/reorganize_data.js +4 -4
  40. package/lib/scripts/retrieve_deputes_photos.js +8 -8
  41. package/lib/scripts/retrieve_documents.js +6 -6
  42. package/lib/scripts/retrieve_open_data.js +3 -3
  43. package/lib/scripts/retrieve_pending_amendments.js +6 -6
  44. package/lib/scripts/retrieve_senateurs_photos.js +8 -8
  45. package/lib/scripts/retrieve_textes_lois.js +5 -5
  46. package/lib/scripts/validate_json.js +3 -3
  47. package/lib/shared_types/codes_actes.js +3 -3
  48. package/lib/types/acteurs_et_organes.d.ts +2 -0
  49. package/lib/types/acteurs_et_organes.js +6 -2
  50. package/lib/types/acteurs_et_organes.mjs +5 -1
  51. package/lib/types/agendas.js +1 -1
  52. package/lib/types/amendements.js +1 -1
  53. package/lib/types/debats.js +1 -1
  54. package/lib/types/dossiers_legislatifs.js +2 -2
  55. package/lib/types/questions.js +1 -1
  56. package/lib/types/scrutins.js +1 -1
  57. package/lib/urls.js +3 -3
  58. package/package.json +6 -6
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
 
3
- function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
3
+ 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); }
4
4
  require("core-js/modules/es.array.slice.js");
5
5
  require("core-js/modules/es.date.to-string.js");
6
6
  require("core-js/modules/es.symbol.js");
@@ -41,10 +41,11 @@ var _commandLineArgs = _interopRequireDefault(require("command-line-args"));
41
41
  var _commandLineUsage = _interopRequireDefault(require("command-line-usage"));
42
42
  var _assert = _interopRequireDefault(require("assert"));
43
43
  var _file_systems = require("../file_systems");
44
+ var _class2;
44
45
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
45
46
  function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
46
47
  function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
47
- function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i["return"] && (_r = _i["return"](), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
48
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
48
49
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
49
50
  function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
50
51
  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."); }
@@ -63,7 +64,7 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Cons
63
64
  function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
64
65
  function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
65
66
  function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
66
- 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(_e2) { throw _e2; }, 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(_e3) { didErr = true; err = _e3; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
67
+ 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; } } }; }
67
68
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
68
69
  function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
69
70
  function parseArgs(argv) {
@@ -207,8 +208,9 @@ var LectureMapping = /*#__PURE__*/function () {
207
208
  }]);
208
209
  return LectureMapping;
209
210
  }();
211
+ _class2 = LectureMapping;
210
212
  _defineProperty(LectureMapping, "codes_lecture", ["AN1", "SN1", "ANNLEC", "SNNLEC", "ANLDEF", "AN2", "SN2", "SN3"]);
211
- _defineProperty(LectureMapping, "codes_lecture_regexp", new RegExp("^(?:" + LectureMapping.codes_lecture.join("|") + ")(-.*)?$"));
213
+ _defineProperty(LectureMapping, "codes_lecture_regexp", new RegExp("^(?:" + _class2.codes_lecture.join("|") + ")(-.*)?$"));
212
214
  var LectureMapper = /*#__PURE__*/function () {
213
215
  function LectureMapper() {
214
216
  _classCallCheck(this, LectureMapper);
@@ -654,4 +656,4 @@ function main(argv) {
654
656
 
655
657
  /* istanbul ignore if */
656
658
  if (process.argv[1].endsWith("document_dossiers_legislatifs.ts")) process.exit(main(process.argv));
657
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29tbWFuZExpbmVBcmdzIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfY29tbWFuZExpbmVVc2FnZSIsIl9hc3NlcnQiLCJfZmlsZV9zeXN0ZW1zIiwib2JqIiwiX19lc01vZHVsZSIsIl9zbGljZWRUb0FycmF5IiwiYXJyIiwiaSIsIl9hcnJheVdpdGhIb2xlcyIsIl9pdGVyYWJsZVRvQXJyYXlMaW1pdCIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsIl9ub25JdGVyYWJsZVJlc3QiLCJUeXBlRXJyb3IiLCJfaSIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiX3MiLCJfZSIsIl94IiwiX3IiLCJfYXJyIiwiX24iLCJfZCIsImNhbGwiLCJuZXh0IiwiT2JqZWN0IiwiZG9uZSIsInB1c2giLCJ2YWx1ZSIsImxlbmd0aCIsImVyciIsIkFycmF5IiwiaXNBcnJheSIsIl90b0NvbnN1bWFibGVBcnJheSIsIl9hcnJheVdpdGhvdXRIb2xlcyIsIl9pdGVyYWJsZVRvQXJyYXkiLCJfbm9uSXRlcmFibGVTcHJlYWQiLCJpdGVyIiwiZnJvbSIsIl9hcnJheUxpa2VUb0FycmF5IiwiX2luaGVyaXRzIiwic3ViQ2xhc3MiLCJzdXBlckNsYXNzIiwicHJvdG90eXBlIiwiY3JlYXRlIiwiY29uc3RydWN0b3IiLCJ3cml0YWJsZSIsImNvbmZpZ3VyYWJsZSIsImRlZmluZVByb3BlcnR5IiwiX3NldFByb3RvdHlwZU9mIiwibyIsInAiLCJzZXRQcm90b3R5cGVPZiIsImJpbmQiLCJfX3Byb3RvX18iLCJfY3JlYXRlU3VwZXIiLCJEZXJpdmVkIiwiaGFzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCIsIl9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QiLCJfY3JlYXRlU3VwZXJJbnRlcm5hbCIsIlN1cGVyIiwiX2dldFByb3RvdHlwZU9mIiwicmVzdWx0IiwiTmV3VGFyZ2V0IiwiUmVmbGVjdCIsImNvbnN0cnVjdCIsImFyZ3VtZW50cyIsImFwcGx5IiwiX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4iLCJzZWxmIiwiX3R5cGVvZiIsIl9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQiLCJSZWZlcmVuY2VFcnJvciIsInNoYW0iLCJQcm94eSIsIkJvb2xlYW4iLCJ2YWx1ZU9mIiwiZSIsImdldFByb3RvdHlwZU9mIiwiX2RlZmluZVByb3BlcnRpZXMiLCJ0YXJnZXQiLCJwcm9wcyIsImRlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwiX3RvUHJvcGVydHlLZXkiLCJrZXkiLCJfY3JlYXRlQ2xhc3MiLCJDb25zdHJ1Y3RvciIsInByb3RvUHJvcHMiLCJzdGF0aWNQcm9wcyIsIl9jbGFzc0NhbGxDaGVjayIsImluc3RhbmNlIiwiX2RlZmluZVByb3BlcnR5IiwiYXJnIiwiX3RvUHJpbWl0aXZlIiwiU3RyaW5nIiwiaW5wdXQiLCJoaW50IiwicHJpbSIsInRvUHJpbWl0aXZlIiwidW5kZWZpbmVkIiwicmVzIiwiTnVtYmVyIiwiX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIiLCJhbGxvd0FycmF5TGlrZSIsIml0IiwiRiIsInMiLCJuIiwiX2UyIiwiZiIsIm5vcm1hbENvbXBsZXRpb24iLCJkaWRFcnIiLCJzdGVwIiwiX2UzIiwibWluTGVuIiwidG9TdHJpbmciLCJzbGljZSIsIm5hbWUiLCJ0ZXN0IiwibGVuIiwiYXJyMiIsInBhcnNlQXJncyIsImFyZ3YiLCJvcHRpb25zRGVmaW5pdGlvbnMiLCJkZXNjcmlwdGlvbiIsImRlZmF1bHRPcHRpb24iLCJtdWx0aXBsZSIsInR5cGUiLCJzZWN0aW9ucyIsImhlYWRlciIsImNvbnRlbnQiLCJvcHRpb25MaXN0Iiwib3B0aW9ucyIsImNvbW1hbmRMaW5lQXJncyIsImNvbnNvbGUiLCJlcnJvciIsImhlbHAiLCJ1c2FnZSIsImNvbW1hbmRMaW5lVXNhZ2UiLCJ3YXJuIiwiZXFTZXQiLCJhcyIsImJzIiwic2l6ZSIsIl9pdGVyYXRvciIsIl9zdGVwIiwiYSIsImhhcyIsIkNvZGUyUGF0dGVybiIsInBhdHRlcm4iLCJjaGlsZHJlbiIsIl9wYXR0ZXJuXyIsIl9tYXRjaF9jb3VudF8iLCJhc3NpZ24iLCJDb2RlMlBhdHRlcm5Db21Gb25kIiwiX0NvZGUyUGF0dGVybiIsIl9zdXBlciIsIkxlY3R1cmVNYXBwaW5nIiwiU2V0IiwiYWRkIiwiYWN0ZSIsImNvZGVzIiwiY29kZUFjdGUiLCJnZXRUeXBlIiwibGliZWxsZUFjdGUiLCJub21DYW5vbmlxdWUiLCJsaWJlbGxlIiwicmVtYXAiLCJ0eXBlcyIsIm1lcmdlQ29kZXMiLCJfQXJyYXkkZnJvbSIsImMiLCJwcmludEFuY2hvcnMiLCJfaTIiLCJfQXJyYXkkZnJvbTIiLCJjb2RlIiwibG9nIiwiY29uY2F0IiwiZ2V0Q29kZXMiLCJqb2luIiwiaXNMZWN0dXJlIiwibWF0Y2giLCJjb2Rlc19sZWN0dXJlX3JlZ2V4cCIsIkVycm9yIiwibWFwIiwicmVwbGFjZSIsImdldENvZGVBY3RlIiwiUmVnRXhwIiwiY29kZXNfbGVjdHVyZSIsIkxlY3R1cmVNYXBwZXIiLCJtYXBwaW5nIiwiY29sbGVjdCIsImxlY3R1cmVzIiwiQWN0ZXNEb2N1bWVudGF0aW9uIiwic2FuaXR5Q2hlY2tzIiwidmVyYm9zZSIsImxlY3R1cmUiLCJDTVAiLCJDQyIsIlBST00iLCJBTjIxIiwiQU5MVU5JIiwiUsOpc29sdXRpb24iLCJBTjIwIiwiRVUiLCJJbW11bml0w6kiLCJwcm9jZWR1cmVzIiwiY29kZTJwYXR0ZXJuIiwid2Fsa0ZpbGVzIiwiZGF0YSIsImFjdGlvbiIsIl9pdGVyYXRvcjIiLCJnZXRGaWxlcyIsIl9zdGVwMiIsImZpbGUiLCJkb3NzaWVyIiwibG9hZCIsInByb2NlZHVyZSIsInJlbWFwUHJvY2VkdXJlIiwicHJvY2VkdXJlUGFybGVtZW50YWlyZSIsImFjdGVzTGVnaXNsYXRpZnMiLCJjb2xsZWN0RmlsZXMiLCJfdGhpcyIsIl9hY3RlcyIsIl9jMnAiLCJfcGFyZW50IiwicHJvY2Vzc0ZpbGVzIiwiX3RoaXMyIiwiYWN0ZXMiLCJjMnAiLCJwYXJlbnQiLCJtZXJnZSIsInZhbGlkYXRlIiwicmVtYXBBY3RlcyIsInJlc3VsdHMiLCJfaXRlcmF0b3IzIiwiX3N0ZXAzIiwibGVjdHVyZU1hcHBlciIsImNvbGxlY3RBY3RlcyIsIl9pdGVyYXRvcjQiLCJfc3RlcDQiLCJtZXJnZV9wcm9jZWR1cmVzIiwiTWFwIiwicmVtYXBwZWRQcm9jZWR1cmVzIiwiZ2V0Iiwib3JkZXJlZENvZGVzIiwib3JkZXJlZCIsIngiLCJhc3NlcnQiLCJ2YWxpZGF0ZUNocm9ub2xvZ3kiLCJzZXF1ZW5jZSIsIm1lcmdlQWN0ZSIsInNob3J0Q29kZSIsInhzaVR5cGUiLCJsIiwiX2l0ZXJhdG9yNSIsIl9zdGVwNSIsIl9pdGVyYXRvcjYiLCJfc3RlcDYiLCJ2YWxpZGF0ZUxldmVsIiwicGF0aCIsIl9pMyIsImVudHJpZXMiLCJfYXJyJF9pIiwicHJpbnRFbnRyeSIsImVudHJ5IiwidGl0bGUiLCJ1bmRlcmxpbmUiLCJhZGRBbmNob3JzIiwiYW5jaG9yc1ByaW50ZWQiLCJhbmNob3JzIiwicmVuYW1lQ01QIiwic3RhcnRzV2l0aCIsImVuZHNXaXRoIiwicHJpbnRMZXZlbCIsImtleXMiLCJfaXRlcmF0b3I3IiwiX3N0ZXA3Iiwic3Vic3RyaW5nIiwicHJpbnRDb2RlcyIsIl9pNCIsIl9PYmplY3Qka2V5cyIsInByaW50QW5jaG9yc0luZGV4IiwiX2k1IiwiX0FycmF5JGZyb20zIiwiZ2V0QWdncmVnYXRlZCIsInJlbWFwcGVkIiwicHJpbnQiLCJfaTYiLCJfYXJyMiIsIl9hcnIyJF9pIiwiYWdncmVnYXRlZCIsIm1haW4iLCJkb2MiLCJwcm9jZXNzIiwiZXhpdCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JpcHRzL2RvY3VtZW50X2Rvc3NpZXJzX2xlZ2lzbGF0aWZzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjb21tYW5kTGluZUFyZ3MgZnJvbSBcImNvbW1hbmQtbGluZS1hcmdzXCJcbmltcG9ydCBjb21tYW5kTGluZVVzYWdlIGZyb20gXCJjb21tYW5kLWxpbmUtdXNhZ2VcIlxuaW1wb3J0IGFzc2VydCBmcm9tIFwiYXNzZXJ0XCJcbmltcG9ydCB7IGxvYWQsIGdldEZpbGVzIH0gZnJvbSBcIi4uL2ZpbGVfc3lzdGVtc1wiXG5cbmZ1bmN0aW9uIHBhcnNlQXJncyhhcmd2OiBzdHJpbmdbXSk6IGFueSB7XG4gIGNvbnN0IG9wdGlvbnNEZWZpbml0aW9ucyA9IFtcbiAgICB7XG4gICAgICBkZXNjcmlwdGlvbjogXCJwYXRobmFtZSB0byBhIEpTT04gZmlsZSBvciBhIGdsb2IgcGF0dGVybiB0byBKU09OIGZpbGVzXCIsXG4gICAgICBkZWZhdWx0T3B0aW9uOiB0cnVlLFxuICAgICAgbXVsdGlwbGU6IHRydWUsXG4gICAgICBuYW1lOiBcImRhdGFcIixcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6IFwibm8tc2FuaXR5LWNoZWNrc1wiLFxuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlc2NyaXB0aW9uOiBcIkRvIG5vdCBwZXJmb3JtIHNhbml0eSBjaGVja3MuXCIsXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiBcInZlcmJvc2VcIixcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZXNjcmlwdGlvbjogXCJpbmNyZWFzZSB2ZXJib3NpdHlcIixcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6IFwiaGVscFwiLFxuICAgICAgZGVzY3JpcHRpb246IFwiUHJpbnQgdGhpcyB1c2FnZSBndWlkZS5cIixcbiAgICB9LFxuICBdXG4gIGNvbnN0IHNlY3Rpb25zID0gW1xuICAgIHtcbiAgICAgIGhlYWRlcjogXCJBaWRlIMOgIGxhIGRvY3VtZW50YXRpb24gZHUgZG9zc2llciBsw6lnaXNsYXRpZlwiLFxuICAgICAgY29udGVudDogXCJHw6luw6hyZSB1bmUgaGnDqXJhcmNoaWUgZGVzIGFjdGVzIGzDqWdpc2xhdGlmc1wiLFxuICAgIH0sXG4gICAge1xuICAgICAgaGVhZGVyOiBcIk9wdGlvbnNcIixcbiAgICAgIG9wdGlvbkxpc3Q6IG9wdGlvbnNEZWZpbml0aW9ucyxcbiAgICB9LFxuICBdXG4gIGNvbnN0IG9wdGlvbnMgPSBjb21tYW5kTGluZUFyZ3Mob3B0aW9uc0RlZmluaXRpb25zLCB7XG4gICAgYXJndjogYXJndixcbiAgfSlcbiAgaWYgKCEoXCJoZWxwXCIgaW4gb3B0aW9ucykgJiYgIShcImRhdGFcIiBpbiBvcHRpb25zKSkge1xuICAgIGNvbnNvbGUuZXJyb3IoXCItLWRhdGEgaXMgbWFuZGF0b3J5XCIpXG4gICAgb3B0aW9ucy5oZWxwID0gdHJ1ZVxuICB9XG4gIGlmIChcImhlbHBcIiBpbiBvcHRpb25zKSB7XG4gICAgY29uc3QgdXNhZ2UgPSBjb21tYW5kTGluZVVzYWdlKHNlY3Rpb25zKVxuICAgIGNvbnNvbGUud2Fybih1c2FnZSlcbiAgICByZXR1cm4gbnVsbFxuICB9XG4gIHJldHVybiBvcHRpb25zXG59XG5cbmZ1bmN0aW9uIGVxU2V0KGFzOiBTZXQ8c3RyaW5nPiwgYnM6IFNldDxzdHJpbmc+KTogYm9vbGVhbiB7XG4gIGlmIChhcy5zaXplICE9PSBicy5zaXplKSByZXR1cm4gZmFsc2VcbiAgZm9yICh2YXIgYSBvZiBhcykgaWYgKCFicy5oYXMoYSkpIHJldHVybiBmYWxzZVxuICByZXR1cm4gdHJ1ZVxufVxuXG5jbGFzcyBDb2RlMlBhdHRlcm4ge1xuICBfcGF0dGVybl86IGFueVxuICBfbWF0Y2hfY291bnRfOiBudW1iZXJcbiAgY29uc3RydWN0b3IocGF0dGVybjogYW55LCBjaGlsZHJlbjogYW55KSB7XG4gICAgdGhpcy5fcGF0dGVybl8gPSBwYXR0ZXJuXG4gICAgdGhpcy5fbWF0Y2hfY291bnRfID0gMFxuICAgIE9iamVjdC5hc3NpZ24odGhpcywgY2hpbGRyZW4pXG4gIH1cbn1cblxuY2xhc3MgQ29kZTJQYXR0ZXJuQ29tRm9uZCBleHRlbmRzIENvZGUyUGF0dGVybiB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKFwiXi9TQUlTSUUvKC9OT01JTi8pKigvUkVVTklPTi8pKigvUkFQUE9SVC8pKiRcIiwge30pXG4gIH1cbn1cblxuY2xhc3MgTGVjdHVyZU1hcHBpbmcge1xuICBsaWJlbGxlOiBhbnkgPSB7fVxuICBjb2RlczogYW55ID0gbmV3IFNldCgpXG5cbiAgc3RhdGljIGNvZGVzX2xlY3R1cmU6IHN0cmluZ1tdID0gW1xuICAgIFwiQU4xXCIsXG4gICAgXCJTTjFcIixcbiAgICBcIkFOTkxFQ1wiLFxuICAgIFwiU05OTEVDXCIsXG4gICAgXCJBTkxERUZcIixcbiAgICBcIkFOMlwiLFxuICAgIFwiU04yXCIsXG4gICAgXCJTTjNcIixcbiAgXVxuICBzdGF0aWMgY29kZXNfbGVjdHVyZV9yZWdleHA6IGFueSA9IG5ldyBSZWdFeHAoXG4gICAgXCJeKD86XCIgKyBMZWN0dXJlTWFwcGluZy5jb2Rlc19sZWN0dXJlLmpvaW4oXCJ8XCIpICsgXCIpKC0uKik/JFwiLFxuICApXG5cbiAgc3RhdGljIGlzTGVjdHVyZShhY3RlOiBhbnkpIHtcbiAgICByZXR1cm4gYWN0ZS5jb2RlQWN0ZS5tYXRjaChMZWN0dXJlTWFwcGluZy5jb2Rlc19sZWN0dXJlX3JlZ2V4cClcbiAgfVxuXG4gIHN0YXRpYyBnZXRUeXBlKGFjdGU6IGFueSkge1xuICAgIGlmIChhY3RlLmNvZGVBY3RlLm1hdGNoKC9eQU4vKSkgcmV0dXJuIFwiQU5cIlxuICAgIGVsc2UgaWYgKGFjdGUuY29kZUFjdGUubWF0Y2goL15TTi8pKSByZXR1cm4gXCJTTlwiXG4gICAgZWxzZSB0aHJvdyBFcnJvcihgJHthY3RlLmNvZGVBY3RlfSBkb2VzIG5vdCBzdGFydCB3aXRoIEFOIG9yIFNOYClcbiAgfVxuXG4gIHN0YXRpYyBtYXAoY29kZUFjdGU6IGFueSkge1xuICAgIHJldHVybiBjb2RlQWN0ZS5yZXBsYWNlKExlY3R1cmVNYXBwaW5nLmNvZGVzX2xlY3R1cmVfcmVnZXhwLCBgbGVjdHVyZSQxYClcbiAgfVxuXG4gIHN0YXRpYyBnZXRDb2RlQWN0ZShhY3RlOiBhbnkpIHtcbiAgICBpZiAoIUxlY3R1cmVNYXBwaW5nLmlzTGVjdHVyZShhY3RlKSkgcmV0dXJuXG5cbiAgICByZXR1cm4gTGVjdHVyZU1hcHBpbmcubWFwKGFjdGUuY29kZUFjdGUpXG4gIH1cblxuICBhZGQoYWN0ZTogYW55KSB7XG4gICAgdGhpcy5jb2Rlcy5hZGQoYWN0ZS5jb2RlQWN0ZSlcblxuICAgIGNvbnN0IHR5cGUgPSBMZWN0dXJlTWFwcGluZy5nZXRUeXBlKGFjdGUpXG5cbiAgICBpZiAoIShhY3RlLmxpYmVsbGVBY3RlLm5vbUNhbm9uaXF1ZSBpbiB0aGlzLmxpYmVsbGUpKVxuICAgICAgdGhpcy5saWJlbGxlW2FjdGUubGliZWxsZUFjdGUubm9tQ2Fub25pcXVlXSA9IG5ldyBTZXQoKVxuICAgIHRoaXMubGliZWxsZVthY3RlLmxpYmVsbGVBY3RlLm5vbUNhbm9uaXF1ZV0uYWRkKHR5cGUpXG4gIH1cblxuICByZW1hcChhY3RlOiBhbnksIGNvZGVBY3RlOiBzdHJpbmcpIHtcbiAgICBhY3RlLmNvZGVBY3RlID0gY29kZUFjdGVcblxuICAgIGxldCB0eXBlcyA9IHRoaXMubGliZWxsZVthY3RlLmxpYmVsbGVBY3RlLm5vbUNhbm9uaXF1ZV1cbiAgICBpZiAoISh0eXBlcy5oYXMoXCJTTlwiKSAmJiB0eXBlcy5oYXMoXCJBTlwiKSkpIHtcbiAgICAgIGlmICh0eXBlcy5oYXMoXCJTTlwiKSkgYWN0ZS5saWJlbGxlQWN0ZS5ub21DYW5vbmlxdWUgKz0gXCIgKFPDqW5hdClcIlxuICAgICAgZWxzZSBpZiAodHlwZXMuaGFzKFwiQU5cIikpXG4gICAgICAgIGFjdGUubGliZWxsZUFjdGUubm9tQ2Fub25pcXVlICs9IFwiIChBc3NlbWJsw6llIE5hdGlvbmFsZSlcIlxuICAgIH1cbiAgfVxuXG4gIG1lcmdlQ29kZXMoY29kZXM6IGFueSkge1xuICAgIGZvciAoY29uc3QgYyBvZiBBcnJheS5mcm9tKHRoaXMuY29kZXMpKSBjb2Rlcy5hZGQoYylcbiAgfVxuXG4gIHByaW50QW5jaG9ycygpIHtcbiAgICBmb3IgKGNvbnN0IGNvZGUgb2YgQXJyYXkuZnJvbSh0aGlzLmNvZGVzKSkgY29uc29sZS5sb2coYC4uIF8ke2NvZGV9OmApXG4gIH1cblxuICBnZXRDb2RlcygpIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLmNvZGVzKS5qb2luKFwiLFwiKVxuICB9XG59XG5cbmNsYXNzIExlY3R1cmVNYXBwZXIge1xuICBtYXBwaW5nOiBhbnkgPSB7fVxuXG4gIGhhcyhjb2RlQWN0ZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGNvZGVBY3RlIGluIHRoaXMubWFwcGluZ1xuICB9XG5cbiAgY29sbGVjdChhY3RlOiBhbnkpIHtcbiAgICBjb25zdCBjb2RlQWN0ZSA9IExlY3R1cmVNYXBwaW5nLmdldENvZGVBY3RlKGFjdGUpXG4gICAgaWYgKGNvZGVBY3RlICE9IHVuZGVmaW5lZCkge1xuICAgICAgbGV0IGxlY3R1cmVzID0gdGhpcy5tYXBwaW5nXG4gICAgICBpZiAoIShjb2RlQWN0ZSBpbiBsZWN0dXJlcykpIGxlY3R1cmVzW2NvZGVBY3RlXSA9IG5ldyBMZWN0dXJlTWFwcGluZygpXG4gICAgICBsZWN0dXJlc1tjb2RlQWN0ZV0uYWRkKGFjdGUpXG4gICAgfVxuICB9XG5cbiAgcmVtYXAoYWN0ZTogYW55KSB7XG4gICAgY29uc3QgY29kZUFjdGUgPSBMZWN0dXJlTWFwcGluZy5nZXRDb2RlQWN0ZShhY3RlKVxuICAgIGlmIChjb2RlQWN0ZSAhPSB1bmRlZmluZWQpIHRoaXMubWFwcGluZ1tjb2RlQWN0ZV0ucmVtYXAoYWN0ZSwgY29kZUFjdGUpXG4gIH1cblxuICBtZXJnZUNvZGVzKGNvZGVzOiBhbnksIGNvZGVBY3RlOiBzdHJpbmcpIHtcbiAgICB0aGlzLm1hcHBpbmdbY29kZUFjdGVdLm1lcmdlQ29kZXMoY29kZXMpXG4gIH1cblxuICBwcmludEFuY2hvcnMoY29kZUFjdGU6IHN0cmluZykge1xuICAgIHRoaXMubWFwcGluZ1tjb2RlQWN0ZV0ucHJpbnRBbmNob3JzKClcbiAgfVxuXG4gIGdldENvZGVzKGNvZGVBY3RlOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5tYXBwaW5nW2NvZGVBY3RlXS5nZXRDb2RlcygpXG4gIH1cbn1cblxuY2xhc3MgQWN0ZXNEb2N1bWVudGF0aW9uIHtcbiAgdmVyYm9zZTogYm9vbGVhblxuICBzYW5pdHlDaGVja3M6IGJvb2xlYW5cbiAgbGVjdHVyZU1hcHBlcjogYW55ID0gbmV3IExlY3R1cmVNYXBwZXIoKVxuICByZW1hcHBlZFByb2NlZHVyZXM6IGFueSA9IHt9XG4gIGFuY2hvcnNQcmludGVkOiBhbnkgPSB7fVxuICBhbmNob3JzOiBhbnkgPSBuZXcgU2V0KClcbiAgY29kZXM6IGFueSA9IHt9XG4gIHByb2NlZHVyZXM6IGFueSA9IG51bGxcbiAgY29kZTJwYXR0ZXJuOiBhbnkgPSBuZXcgQ29kZTJQYXR0ZXJuKG51bGwsIHtcbiAgICBcIlByb2PDqWR1cmUgbMOpZ2lzbGF0aXZlXCI6IG5ldyBDb2RlMlBhdHRlcm4oXG4gICAgICBcIl4oKCgvbGVjdHVyZS8pKyl8KCgvbGVjdHVyZS8pKy9DTVAvKC9sZWN0dXJlLykqKSkoL0NDLyk/KC9QUk9NLyk/KC9BTi1BUFBMSS8pPyRcIixcbiAgICAgIHtcbiAgICAgICAgbGVjdHVyZTogbmV3IENvZGUyUGF0dGVybihcbiAgICAgICAgICBcIl4oL0RFUE9ULyk/KC9EUFRMRVRUUkVDVC8pPygvRVRJLyk/KC9BVkNFLyk/KC9ER1ZULyk/KC9BQ0lOLyk/KC9NT1RJT04vKSooL1BST0NBQ0MvKT8oL0NPTS8pPygoL0RFQkFUUy8pKyk/KC9SVFJJTkkvKT8kXCIsXG4gICAgICAgICAge1xuICAgICAgICAgICAgXCJsZWN0dXJlLUNPTVwiOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvRk9ORC98L0FWSVMvKSskXCIsIHtcbiAgICAgICAgICAgICAgXCJsZWN0dXJlLUNPTS1GT05EXCI6IG5ldyBDb2RlMlBhdHRlcm5Db21Gb25kKCksXG4gICAgICAgICAgICAgIFwibGVjdHVyZS1DT00tQVZJU1wiOiBuZXcgQ29kZTJQYXR0ZXJuQ29tRm9uZCgpLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBcImxlY3R1cmUtREVCQVRTXCI6IG5ldyBDb2RlMlBhdHRlcm4oXG4gICAgICAgICAgICAgIFwiXigvU0VBTkNFLykqKCgvTU9USU9OLyk/KC9NT1RJT04tVk9URS8pKyk/KC9ERUMvKT8kXCIsXG4gICAgICAgICAgICAgIHt9LFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICB9LFxuICAgICAgICApLFxuICAgICAgICBDTVA6IG5ldyBDb2RlMlBhdHRlcm4oXG4gICAgICAgICAgXCJeKC9ERVBPVC98L1NBSVNJRS8pezEsMn0oL0NPTS8pPygvREVDLyk/KC9ERUJBVFMtQU4vL0RFQkFUUy1TTi8pP1wiLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIFwiQ01QLUNPTVwiOiBuZXcgQ29kZTJQYXR0ZXJuKFxuICAgICAgICAgICAgICBcIl4oL05PTUlOLyk/KC9SQVBQT1JULUFOL3wvUkFQUE9SVC1TTi8pezJ9JFwiLFxuICAgICAgICAgICAgICB7fSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBcIkNNUC1ERUJBVFMtQU5cIjogbmV3IENvZGUyUGF0dGVybihcIl4oL1NFQU5DRS8pKigvREVDLyk/JFwiLCB7fSksXG4gICAgICAgICAgICBcIkNNUC1ERUJBVFMtU05cIjogbmV3IENvZGUyUGF0dGVybihcIl4oL1NFQU5DRS8pKigvREVDLyk/JFwiLCB7fSksXG4gICAgICAgICAgfSxcbiAgICAgICAgKSxcbiAgICAgICAgQ0M6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9TQUlTSUUvKSsoL0NPTkNMVVNJT04vKT8kXCIsIHt9KSxcbiAgICAgICAgUFJPTTogbmV3IENvZGUyUGF0dGVybihcIl4oL1BVQi8pPyRcIiwge30pLFxuICAgICAgICBcIkFOLUFQUExJXCI6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9SQVBQT1JULyk/JFwiLCB7fSksXG4gICAgICB9LFxuICAgICksXG4gICAgXCJBbGxvY3V0aW9uIGR1IFByw6lzaWRlbnQgZGUgbCdBc3NlbWJsw6llIG5hdGlvbmFsZVwiOiBuZXcgQ29kZTJQYXR0ZXJuKFxuICAgICAgXCJeL0FOMjEvJFwiLFxuICAgICAge1xuICAgICAgICBBTjIxOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvQVBBTi8pPyRcIiwge30pLFxuICAgICAgfSxcbiAgICApLFxuICAgIFwiUsOpc29sdXRpb24gQXJ0aWNsZSAzNC0xXCI6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9BTkxVTkkvKT8kXCIsIHtcbiAgICAgIEFOTFVOSTogbmV3IENvZGUyUGF0dGVybihcIl4oL0RFUE9ULyk/KC9ERUJBVFMvKT8oL1JUUklOSS8pPyRcIiwge1xuICAgICAgICBcIkFOTFVOSS1ERUJBVFNcIjogbmV3IENvZGUyUGF0dGVybihcIl4oL1NFQU5DRS8pKygvREVDLyk/JFwiLCB7fSksXG4gICAgICB9KSxcbiAgICB9KSxcbiAgICBSw6lzb2x1dGlvbjogbmV3IENvZGUyUGF0dGVybihcIl4oL0FOTFVOSS8pPygvQ0MvKT8kXCIsIHtcbiAgICAgIEFOTFVOSTogbmV3IENvZGUyUGF0dGVybihcIl4oL0RFUE9ULyk/KC9DT00vKT8oL0RFQkFUUy98L1JUUklOSS8pPyRcIiwge1xuICAgICAgICBcIkFOTFVOSS1DT01cIjogbmV3IENvZGUyUGF0dGVybihcIl4oL0NBRS8pPygvRk9ORC8pPyRcIiwge1xuICAgICAgICAgIFwiQU5MVU5JLUNPTS1GT05EXCI6IG5ldyBDb2RlMlBhdHRlcm5Db21Gb25kKCksXG4gICAgICAgICAgXCJBTkxVTkktQ09NLUNBRVwiOiBuZXcgQ29kZTJQYXR0ZXJuKFxuICAgICAgICAgICAgXCJeKC9TQUlTSUUvKT8oL05PTUlOLyk/KC9SRVVOSU9OLyk/KC9SQVBQT1JULyk/KC9ERUMvKT8kXCIsXG4gICAgICAgICAgICB7fSxcbiAgICAgICAgICApLFxuICAgICAgICB9KSxcbiAgICAgICAgXCJBTkxVTkktREVCQVRTXCI6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9TRUFOQ0UvKSooL0RFQy8pPyRcIiwge30pLFxuICAgICAgfSksXG4gICAgICBDQzogbmV3IENvZGUyUGF0dGVybihcIl4oL1NBSVNJRS8pPygvQ09OQ0xVU0lPTi8pPyRcIiwge30pLFxuICAgIH0pLFxuICAgIFwiUmFwcG9ydCBkJ2luZm9ybWF0aW9uIHNhbnMgbWlzc2lvblwiOiBuZXcgQ29kZTJQYXR0ZXJuKFxuICAgICAgXCJeKC9BTjIwLyk/KC9FVS8pPyRcIixcbiAgICAgIHtcbiAgICAgICAgQU4yMDogbmV3IENvZGUyUGF0dGVybihcIl4oL1JBUFBPUlQvKT8kXCIsIHt9KSxcbiAgICAgICAgRVU6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9ERUMvKSskXCIsIHt9KSxcbiAgICAgIH0sXG4gICAgKSxcbiAgICBcIk1pc3Npb24gZCdpbmZvcm1hdGlvblwiOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvQU4yMC8pPyRcIiwge1xuICAgICAgQU4yMDogbmV3IENvZGUyUGF0dGVybihcIl4oL01JU0lORi8pPyRcIiwge1xuICAgICAgICBcIkFOMjAtTUlTSU5GXCI6IG5ldyBDb2RlMlBhdHRlcm4oXG4gICAgICAgICAgXCJeKC9DUkVBLyk/KC9OT01JTi8pPygvUkFQUE9SVC8pPyRcIixcbiAgICAgICAgICB7fSxcbiAgICAgICAgKSxcbiAgICAgIH0pLFxuICAgIH0pLFxuICAgIFwiQ29tbWlzc2lvbiBkJ2VucXXDqnRlXCI6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9BTjIwLyk/JFwiLCB7XG4gICAgICBBTjIwOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvQ09NRU5RLyk/JFwiLCB7XG4gICAgICAgIFwiQU4yMC1DT01FTlFcIjogbmV3IENvZGUyUGF0dGVybihcbiAgICAgICAgICBcIl4oL0NSRUEvKT8oL05PTUlOLyk/KC9SQVBQT1JULyk/JFwiLFxuICAgICAgICAgIHt9LFxuICAgICAgICApLFxuICAgICAgfSksXG4gICAgfSksXG4gICAgXCJFbmdhZ2VtZW50IGRlIGxhIHJlc3BvbnNhYmlsaXTDqSBnb3V2ZXJuZW1lbnRhbGVcIjogbmV3IENvZGUyUGF0dGVybihcbiAgICAgIFwiXi9BTjIxLyRcIixcbiAgICAgIHtcbiAgICAgICAgQU4yMTogbmV3IENvZGUyUGF0dGVybihcIl4oKCgvTU9USU9OLykqL0RFQkFUUy8pfCgvREdWVC8pKXsxLDJ9JFwiLCB7XG4gICAgICAgICAgXCJBTjIxLURFQkFUU1wiOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvU0VBTkNFLykqKC9NT1RJT04tVk9URS8pKiRcIiwge30pLFxuICAgICAgICB9KSxcbiAgICAgIH0sXG4gICAgKSxcbiAgICBcIk1vdGlvbiByw6lmw6lyZW5kYWlyZVwiOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvbGVjdHVyZS8pKyRcIiwge1xuICAgICAgbGVjdHVyZTogbmV3IENvZGUyUGF0dGVybihcIl4oL0RFUE9ULyk/KC9DT00vKT8oL0RFQkFUUy8pPyRcIiwge1xuICAgICAgICBcImxlY3R1cmUtQ09NXCI6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9GT05ELyk/JFwiLCB7XG4gICAgICAgICAgXCJsZWN0dXJlLUNPTS1GT05EXCI6IG5ldyBDb2RlMlBhdHRlcm4oXG4gICAgICAgICAgICBcIl4oL1NBSVNJRS8pPygvTk9NSU4vKSooL1JBUFBPUlQvKSokXCIsXG4gICAgICAgICAgICB7fSxcbiAgICAgICAgICApLFxuICAgICAgICB9KSxcbiAgICAgICAgXCJsZWN0dXJlLURFQkFUU1wiOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvREVDLyk/JFwiLCB7fSksXG4gICAgICB9KSxcbiAgICB9KSxcbiAgICBJbW11bml0w6k6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9BTkxVTkkvKSskXCIsIHtcbiAgICAgIEFOTFVOSTogbmV3IENvZGUyUGF0dGVybihcIl4oL0RFUE9ULyk/KC9DT00vKT8oL0RFQkFUUy8pPygvUlRSSU5JLyk/JFwiLCB7XG4gICAgICAgIFwiQU5MVU5JLUNPTVwiOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvRk9ORC8pPyRcIiwge1xuICAgICAgICAgIFwiQU5MVU5JLUNPTS1GT05EXCI6IG5ldyBDb2RlMlBhdHRlcm4oXG4gICAgICAgICAgICBcIl4oL1NBSVNJRS8pPygvTk9NSU4vKSooL1JBUFBPUlQvKSokXCIsXG4gICAgICAgICAgICB7fSxcbiAgICAgICAgICApLFxuICAgICAgICB9KSxcbiAgICAgICAgXCJBTkxVTkktREVCQVRTXCI6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9TRUFOQ0UvKT8oL0RFQy8pJFwiLCB7fSksXG4gICAgICB9KSxcbiAgICB9KSxcbiAgICBcIlJlc3BvbnNhYmlsaXTDqSBww6luYWxlIGR1IHByw6lzaWRlbnQgZGUgbGEgcsOpcHVibGlxdWVcIjogbmV3IENvZGUyUGF0dGVybihcbiAgICAgIFwiXi9sZWN0dXJlLyRcIixcbiAgICAgIHtcbiAgICAgICAgbGVjdHVyZTogbmV3IENvZGUyUGF0dGVybihcIl4oL0RFUE9ULyk/KC9SRUNCVVJFQVUvKT8kXCIsIHt9KSxcbiAgICAgIH0sXG4gICAgKSxcbiAgICBcIlByb3Bvc2l0aW9uIGRlIGxvaSBwcsOpc2VudMOpZSBlbiBhcHBsaWNhdGlvbiBkZSBsJ2FydGljbGUgMTEgZGUgbGEgQ29uc3RpdHV0aW9uXCI6XG4gICAgICBuZXcgQ29kZTJQYXR0ZXJuKFwiXi9sZWN0dXJlLyRcIiwge1xuICAgICAgICBsZWN0dXJlOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvREVQT1QvKT8kXCIsIHt9KSxcbiAgICAgIH0pLFxuICB9KVxuXG4gIGNvbnN0cnVjdG9yKHNhbml0eUNoZWNrczogYm9vbGVhbiwgdmVyYm9zZTogYm9vbGVhbiA9IGZhbHNlKSB7XG4gICAgdGhpcy52ZXJib3NlID0gdmVyYm9zZVxuICAgIHRoaXMuc2FuaXR5Q2hlY2tzID0gc2FuaXR5Q2hlY2tzXG4gICAgdGhpcy5wcm9jZWR1cmVzID0ge31cbiAgICB0aGlzLmNvZGUycGF0dGVybi5fbWF0Y2hfY291bnRfKytcbiAgfVxuXG4gIHdhbGtGaWxlcyhkYXRhOiBzdHJpbmdbXSwgYWN0aW9uOiBhbnkpIHtcbiAgICBmb3IgKGNvbnN0IGZpbGUgb2YgZ2V0RmlsZXMoZGF0YSkpIHtcbiAgICAgIGNvbnN0IGRvc3NpZXIgPSBsb2FkKGZpbGUpXG4gICAgICBsZXQgcHJvY2VkdXJlOiBzdHJpbmcgPSB0aGlzLnJlbWFwUHJvY2VkdXJlKFxuICAgICAgICBkb3NzaWVyLnByb2NlZHVyZVBhcmxlbWVudGFpcmUubGliZWxsZSxcbiAgICAgIClcbiAgICAgIGlmICghKHByb2NlZHVyZSBpbiB0aGlzLnByb2NlZHVyZXMpKSB0aGlzLnByb2NlZHVyZXNbcHJvY2VkdXJlXSA9IHt9XG4gICAgICBhY3Rpb24oXG4gICAgICAgIHRoaXMucHJvY2VkdXJlc1twcm9jZWR1cmVdLFxuICAgICAgICBkb3NzaWVyLmFjdGVzTGVnaXNsYXRpZnMsXG4gICAgICAgIHRoaXMuY29kZTJwYXR0ZXJuW3Byb2NlZHVyZV0sXG4gICAgICAgIG51bGwsXG4gICAgICApXG4gICAgfVxuICB9XG5cbiAgY29sbGVjdEZpbGVzKGRhdGE6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy53YWxrRmlsZXMoXG4gICAgICBkYXRhLFxuICAgICAgKF9hY3RlczogYW55LCBhY3Rlc0xlZ2lzbGF0aWZzOiBhbnksIF9jMnA6IGFueSwgX3BhcmVudDogc3RyaW5nKSA9PiB7XG4gICAgICAgIHRoaXMuY29sbGVjdChhY3Rlc0xlZ2lzbGF0aWZzKVxuICAgICAgfSxcbiAgICApXG4gIH1cblxuICBwcm9jZXNzRmlsZXMoZGF0YTogc3RyaW5nW10pIHtcbiAgICB0aGlzLndhbGtGaWxlcyhcbiAgICAgIGRhdGEsXG4gICAgICAoYWN0ZXM6IGFueSwgYWN0ZXNMZWdpc2xhdGlmczogYW55LCBjMnA6IGFueSwgcGFyZW50OiBzdHJpbmcpID0+IHtcbiAgICAgICAgdGhpcy5tZXJnZShhY3RlcywgYWN0ZXNMZWdpc2xhdGlmcywgYzJwLCBwYXJlbnQpXG4gICAgICB9LFxuICAgIClcbiAgICBpZiAodGhpcy5zYW5pdHlDaGVja3MpIHRoaXMudmFsaWRhdGUoKVxuICB9XG5cbiAgcmVtYXBBY3RlcyhhY3RlczogYW55KTogYW55IHtcbiAgICBsZXQgcmVzdWx0cyA9IFtdXG4gICAgZm9yIChjb25zdCBhY3RlIG9mIGFjdGVzKSB7XG4gICAgICB0aGlzLmxlY3R1cmVNYXBwZXIucmVtYXAoYWN0ZSlcblxuICAgICAgLy8gQ0MtU0FJU0lFLSBzdWZmaXggZG9lcyBub3QgaW1wbHkgYSBoaWVyYXJjaHlcbiAgICAgIGFjdGUuY29kZUFjdGUgPSBhY3RlLmNvZGVBY3RlLnJlcGxhY2UoL15DQy1TQUlTSUUuKi8sIFwiQ0MtU0FJU0lFXCIpXG5cbiAgICAgIHJlc3VsdHMucHVzaChhY3RlKVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0c1xuICB9XG5cbiAgY29sbGVjdEFjdGVzKGFjdGVzOiBhbnkpOiBhbnkge1xuICAgIGxldCByZXN1bHRzID0gW11cbiAgICBmb3IgKGNvbnN0IGFjdGUgb2YgYWN0ZXMpIHtcbiAgICAgIHRoaXMubGVjdHVyZU1hcHBlci5jb2xsZWN0KGFjdGUpXG5cbiAgICAgIHJlc3VsdHMucHVzaChhY3RlKVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0c1xuICB9XG5cbiAgcmVtYXBQcm9jZWR1cmUocHJvY2VkdXJlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IG1lcmdlX3Byb2NlZHVyZXM6IE1hcDxzdHJpbmcsIGFueT4gPSBuZXcgTWFwKFtcbiAgICAgIFtcIlByb3Bvc2l0aW9uIGRlIGxvaSBvcmRpbmFpcmVcIiwgXCJQcm9jw6lkdXJlIGzDqWdpc2xhdGl2ZVwiXSxcbiAgICAgIFtcIlByb2pldCBkZSBsb2kgb3JkaW5haXJlXCIsIFwiUHJvY8OpZHVyZSBsw6lnaXNsYXRpdmVcIl0sXG4gICAgICBbXG4gICAgICAgIFwiUHJvamV0IGRlIHJhdGlmaWNhdGlvbiBkZXMgdHJhaXTDqXMgZXQgY29udmVudGlvbnNcIixcbiAgICAgICAgXCJQcm9jw6lkdXJlIGzDqWdpc2xhdGl2ZVwiLFxuICAgICAgXSxcbiAgICAgIFtcIlByb2pldCBvdSBwcm9wb3NpdGlvbiBkZSBsb2kgb3JnYW5pcXVlXCIsIFwiUHJvY8OpZHVyZSBsw6lnaXNsYXRpdmVcIl0sXG4gICAgICBbXG4gICAgICAgIFwiUHJvamV0IG91IHByb3Bvc2l0aW9uIGRlIGxvaSBjb25zdGl0dXRpb25uZWxsZVwiLFxuICAgICAgICBcIlByb2PDqWR1cmUgbMOpZ2lzbGF0aXZlXCIsXG4gICAgICBdLFxuICAgICAgW1wiUHJvamV0IGRlIGxvaSBkZSBmaW5hbmNlcyBkZSBsJ2FubsOpZVwiLCBcIlByb2PDqWR1cmUgbMOpZ2lzbGF0aXZlXCJdLFxuICAgICAgW1wiUHJvamV0IGRlIGxvaSBkZSBmaW5hbmNlcyByZWN0aWZpY2F0aXZlXCIsIFwiUHJvY8OpZHVyZSBsw6lnaXNsYXRpdmVcIl0sXG4gICAgICBbXG4gICAgICAgIFwiUHJvamV0IGRlIGxvaSBkZSBmaW5hbmNlbWVudCBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIixcbiAgICAgICAgXCJQcm9jw6lkdXJlIGzDqWdpc2xhdGl2ZVwiLFxuICAgICAgXSxcbiAgICBdKVxuICAgIGlmIChtZXJnZV9wcm9jZWR1cmVzLmhhcyhwcm9jZWR1cmUpKSB7XG4gICAgICB0aGlzLnJlbWFwcGVkUHJvY2VkdXJlc1twcm9jZWR1cmVdID0gbnVsbFxuICAgICAgcmV0dXJuIG1lcmdlX3Byb2NlZHVyZXMuZ2V0KHByb2NlZHVyZSlcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHByb2NlZHVyZVxuICAgIH1cbiAgfVxuXG4gIC8vIHJldHVybiB0aGUgY29kZUFjdGVzIGluIHRoZSBzYW1lIG9yZGVyIHRoZXkgYXBwZWFyIGluIHRoZSByZWdleHBcbiAgb3JkZXJlZENvZGVzKGNvZGVzOiBhbnksIGMycDogYW55LCBwYXJlbnQ6IHN0cmluZyk6IFNldDxzdHJpbmc+IHtcbiAgICBjb2RlcyA9IG5ldyBTZXQoY29kZXMpXG4gICAgaWYgKCF0aGlzLnNhbml0eUNoZWNrcykgcmV0dXJuIGNvZGVzXG4gICAgbGV0IG9yZGVyZWQgPSBjMnBbXCJfcGF0dGVybl9cIl0ubWF0Y2gobmV3IFJlZ0V4cChcIi8uKj8vXCIsIFwiZ1wiKSlcbiAgICBvcmRlcmVkID0gb3JkZXJlZC5tYXAoKHg6IHN0cmluZykgPT4geC5yZXBsYWNlKG5ldyBSZWdFeHAoXCIvKC4qKS9cIiksIFwiJDFcIikpXG4gICAgaWYgKHBhcmVudCAhPSBudWxsKSBvcmRlcmVkID0gb3JkZXJlZC5tYXAoKHg6IHN0cmluZykgPT4gYCR7cGFyZW50fS0ke3h9YClcbiAgICBvcmRlcmVkID0gbmV3IFNldChvcmRlcmVkKVxuICAgIGFzc2VydChlcVNldChvcmRlcmVkLCBjb2RlcyksIGAke1suLi5vcmRlcmVkXX0gIT0gJHtbLi4uY29kZXNdfWApXG4gICAgcmV0dXJuIG9yZGVyZWRcbiAgfVxuXG4gIHZhbGlkYXRlQ2hyb25vbG9neShhY3Rlc0xlZ2lzbGF0aWZzOiBhbnksIGMycDogYW55LCBwYXJlbnQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IHBhdHRlcm4gPSBjMnBbXCJfcGF0dGVybl9cIl1cbiAgICBjb25zdCBzZXF1ZW5jZSA9IGFjdGVzTGVnaXNsYXRpZnNcbiAgICAgIC5tYXAoKHg6IGFueSkgPT4gYC8ke3guY29kZUFjdGV9L2AucmVwbGFjZShgLyR7cGFyZW50fS1gLCBcIi9cIikpXG4gICAgICAuam9pbihcIlwiKVxuICAgIGFzc2VydChcbiAgICAgIHNlcXVlbmNlLm1hdGNoKG5ldyBSZWdFeHAocGF0dGVybikpLFxuICAgICAgYCR7cGF0dGVybn0gZG9lcyBub3QgbWF0Y2ggJHtzZXF1ZW5jZX1gLFxuICAgIClcbiAgICBjMnAuX21hdGNoX2NvdW50XysrXG4gIH1cblxuICBtZXJnZUFjdGUoYWN0ZXM6IGFueSwgYWN0ZTogYW55LCBjMnA6IGFueSwgcGFyZW50OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBsZXQgY29kZTogc3RyaW5nID0gYWN0ZS5jb2RlQWN0ZVxuICAgIGxldCBzaG9ydENvZGU6IHN0cmluZyA9IGNvZGUucmVwbGFjZShuZXcgUmVnRXhwKGBeJHtwYXJlbnR9LWApLCBcIlwiKVxuICAgIHNob3J0Q29kZSA9IHNob3J0Q29kZS5yZXBsYWNlKC8tKEFOfFNOKSQvLCBcIlwiKVxuICAgIHRoaXMuY29kZXNbc2hvcnRDb2RlXSA9IG51bGxcbiAgICBsZXQgbmFtZTogc3RyaW5nID0gYWN0ZS5saWJlbGxlQWN0ZS5ub21DYW5vbmlxdWVcbiAgICBpZiAoIShjb2RlIGluIGFjdGVzKSkge1xuICAgICAgYWN0ZXNbY29kZV0gPSB7XG4gICAgICAgIHR5cGU6IGFjdGUueHNpVHlwZSxcbiAgICAgICAgbmFtZTogbmV3IFNldChbbmFtZV0pLFxuICAgICAgICBzaG9ydENvZGU6IHNob3J0Q29kZSxcbiAgICAgICAgYWN0ZXM6IHt9LFxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBhY3Rlc1tjb2RlXS5uYW1lLmFkZChuYW1lKVxuICAgIH1cbiAgICBpZiAoXCJhY3Rlc0xlZ2lzbGF0aWZzXCIgaW4gYWN0ZSlcbiAgICAgIHRoaXMubWVyZ2UoYWN0ZXNbY29kZV0uYWN0ZXMsIGFjdGUuYWN0ZXNMZWdpc2xhdGlmcywgYzJwW2NvZGVdLCBjb2RlKVxuICB9XG5cbiAgbWVyZ2UoYWN0ZXM6IGFueSwgYWN0ZXNMZWdpc2xhdGlmczogYW55LCBjMnA6IGFueSwgcGFyZW50OiBhbnkpOiB2b2lkIHtcbiAgICBjb25zdCBsID0gdGhpcy5yZW1hcEFjdGVzKGFjdGVzTGVnaXNsYXRpZnMpXG4gICAgdGhpcy52YWxpZGF0ZUNocm9ub2xvZ3kobCwgYzJwLCBwYXJlbnQpXG4gICAgZm9yIChjb25zdCBhY3RlIG9mIGwpIHRoaXMubWVyZ2VBY3RlKGFjdGVzLCBhY3RlLCBjMnAsIHBhcmVudClcbiAgfVxuXG4gIGNvbGxlY3QoYWN0ZXNMZWdpc2xhdGlmczogYW55KTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBhY3RlIG9mIHRoaXMuY29sbGVjdEFjdGVzKGFjdGVzTGVnaXNsYXRpZnMpKVxuICAgICAgaWYgKFwiYWN0ZXNMZWdpc2xhdGlmc1wiIGluIGFjdGUpIHRoaXMuY29sbGVjdChhY3RlLmFjdGVzTGVnaXNsYXRpZnMpXG4gIH1cblxuICB2YWxpZGF0ZUxldmVsKGMycDogYW55LCBwYXRoOiBhbnkpIHtcbiAgICBhc3NlcnQoYzJwLl9tYXRjaF9jb3VudF8gPiAwLCBgJHtwYXRofSBpcyBuZXZlciB1c2VkYClcbiAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhjMnApIGFzIFtzdHJpbmcsIGFueV1bXSkge1xuICAgICAgaWYgKHZhbHVlICE9IG51bGwgJiYgdmFsdWUuY29uc3RydWN0b3IubmFtZSA9PSBcIkNvZGUyUGF0dGVyblwiKVxuICAgICAgICB0aGlzLnZhbGlkYXRlTGV2ZWwodmFsdWUsIHBhdGguY29uY2F0KFtrZXldKSlcbiAgICB9XG4gIH1cblxuICB2YWxpZGF0ZSgpIHtcbiAgICB0aGlzLnZhbGlkYXRlTGV2ZWwodGhpcy5jb2RlMnBhdHRlcm4sIFtdKVxuICB9XG5cbiAgcHJpbnRFbnRyeShzZWN0aW9uczogc3RyaW5nLCBlbnRyeTogc3RyaW5nLCBjb2Rlczogc3RyaW5nKSB7XG4gICAgY29uc3QgdGl0bGUgPSBgXFxgJHtlbnRyeX1cXGBfX2BcbiAgICBjb25zb2xlLmxvZyh0aXRsZSlcbiAgICBjb25zdCB1bmRlcmxpbmUgPSBuZXcgQXJyYXkodGl0bGUubGVuZ3RoICsgMSkuam9pbihzZWN0aW9uc1swXSlcbiAgICBjb25zb2xlLmxvZyh1bmRlcmxpbmUpXG4gICAgY29uc29sZS5sb2coY29kZXMpXG4gIH1cblxuICBhZGRBbmNob3JzKGtleTogc3RyaW5nKSB7XG4gICAgaWYgKGtleSBpbiB0aGlzLmFuY2hvcnNQcmludGVkKSByZXR1cm5cbiAgICBpZiAodGhpcy5sZWN0dXJlTWFwcGVyLmhhcyhrZXkpKVxuICAgICAgdGhpcy5sZWN0dXJlTWFwcGVyLm1lcmdlQ29kZXModGhpcy5hbmNob3JzLCBrZXkpXG4gICAgZWxzZSB0aGlzLmFuY2hvcnMuYWRkKGtleSlcbiAgfVxuXG4gIHByaW50QW5jaG9ycyhrZXk6IHN0cmluZykge1xuICAgIGlmIChrZXkgaW4gdGhpcy5hbmNob3JzUHJpbnRlZCkgcmV0dXJuXG4gICAgdGhpcy5hbmNob3JzUHJpbnRlZFtrZXldID0gbnVsbFxuICAgIGlmICh0aGlzLmxlY3R1cmVNYXBwZXIuaGFzKGtleSkpIHRoaXMubGVjdHVyZU1hcHBlci5wcmludEFuY2hvcnMoa2V5KVxuICAgIGVsc2UgY29uc29sZS5sb2coYC4uIF8ke2tleX06YClcbiAgfVxuXG4gIGdldENvZGVzKGtleTogc3RyaW5nLCBzaG9ydENvZGU6IHN0cmluZykge1xuICAgIGlmIChrZXkgaW4gdGhpcy5hbmNob3JzUHJpbnRlZCkgcmV0dXJuIGBjZiBcXFxcKiR7c2hvcnRDb2RlfVxcXFwqYFxuICAgIGlmICh0aGlzLmxlY3R1cmVNYXBwZXIuaGFzKGtleSkpIHJldHVybiB0aGlzLmxlY3R1cmVNYXBwZXIuZ2V0Q29kZXMoa2V5KVxuICAgIGVsc2UgcmV0dXJuIGtleVxuICB9XG5cbiAgcmVuYW1lQ01QKGtleTogc3RyaW5nLCBuYW1lOiBzdHJpbmcpIHtcbiAgICBpZiAoa2V5LnN0YXJ0c1dpdGgoXCJDTVBcIikpIHtcbiAgICAgIGlmIChrZXkuZW5kc1dpdGgoXCItU05cIikpIHJldHVybiBgJHtuYW1lfSAoU8OpbmF0KWBcbiAgICAgIGVsc2UgaWYgKGtleS5lbmRzV2l0aChcIi1BTlwiKSkgcmV0dXJuIGAke25hbWV9IChBc3NlbWJsw6llIE5hdGlvbmFsZSlgXG4gICAgICBlbHNlIHJldHVybiBuYW1lXG4gICAgfSBlbHNlIHJldHVybiBuYW1lXG4gIH1cblxuICBwcmludExldmVsKGFjdGVzOiBhbnksIHNlY3Rpb25zOiBzdHJpbmcsIGMycDogYW55LCBwYXJlbnQ6IGFueSkge1xuICAgIGNvbnN0IGtleXM6IFNldDxzdHJpbmc+ID0gdGhpcy5vcmRlcmVkQ29kZXMoT2JqZWN0LmtleXMoYWN0ZXMpLCBjMnAsIHBhcmVudClcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzKSB7XG4gICAgICBjb25zdCB2YWx1ZSA9IGFjdGVzW2tleV1cbiAgICAgIGxldCBuYW1lID0gQXJyYXkuZnJvbSh2YWx1ZS5uYW1lKS5qb2luKFwiLCBcIilcbiAgICAgIG5hbWUgPSB0aGlzLnJlbmFtZUNNUChrZXksIG5hbWUpXG4gICAgICBjb25zdCBjb2RlcyA9IHRoaXMuZ2V0Q29kZXMoa2V5LCB2YWx1ZS5zaG9ydENvZGUpXG4gICAgICB0aGlzLmFkZEFuY2hvcnMoa2V5KVxuICAgICAgdGhpcy5wcmludEFuY2hvcnMoa2V5KVxuICAgICAgY29uc29sZS5sb2coXCJcIilcbiAgICAgIHRoaXMucHJpbnRFbnRyeShzZWN0aW9ucywgYCR7bmFtZX0gPCR7dmFsdWUuc2hvcnRDb2RlfVRPQ18+YCwgY29kZXMpXG4gICAgICBjb25zb2xlLmxvZyhcIlwiKVxuICAgICAgaWYgKE9iamVjdC5rZXlzKHZhbHVlLmFjdGVzKS5sZW5ndGggPiAwKVxuICAgICAgICB0aGlzLnByaW50TGV2ZWwodmFsdWUuYWN0ZXMsIHNlY3Rpb25zLnN1YnN0cmluZygxKSwgYzJwW2tleV0sIGtleSlcbiAgICB9XG4gIH1cblxuICBwcmludENvZGVzKCkge1xuICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHRoaXMuY29kZXMpKVxuICAgICAgY29uc29sZS5sb2coYC4uIF8ke2tleX1UT0M6IGh0dHA6Ly9gKVxuICB9XG5cbiAgcHJpbnRBbmNob3JzSW5kZXgoKSB7XG4gICAgZm9yIChjb25zdCBjb2RlIG9mIEFycmF5LmZyb20odGhpcy5hbmNob3JzKSlcbiAgICAgIGNvbnNvbGUubG9nKGAqIDpyZWY6XFxgJHtjb2RlfSA8JHtjb2RlfT5cXGBgKVxuICB9XG5cbiAgZ2V0QWdncmVnYXRlZChwcm9jZWR1cmU6IHN0cmluZykge1xuICAgIGlmIChwcm9jZWR1cmUgPT0gXCJQcm9jw6lkdXJlIGzDqWdpc2xhdGl2ZVwiKSB7XG4gICAgICBjb25zdCByZW1hcHBlZCA9IE9iamVjdC5rZXlzKHRoaXMucmVtYXBwZWRQcm9jZWR1cmVzKS5qb2luKFwiLCBcIilcbiAgICAgIHJldHVybiBgIChhZ3LDqWdhdGlvbiBkZSAke3JlbWFwcGVkfSlgXG4gICAgfSBlbHNlIHJldHVybiBcIlwiXG4gIH1cblxuICBwcmludCgpOiB2b2lkIHtcbiAgICB0aGlzLmFuY2hvcnNQcmludGVkID0ge31cbiAgICBmb3IgKGNvbnN0IFtrZXksIGFjdGVzXSBvZiBPYmplY3QuZW50cmllcyh0aGlzLnByb2NlZHVyZXMpIGFzIFtcbiAgICAgIHN0cmluZyxcbiAgICAgIGFueSxcbiAgICBdW10pIHtcbiAgICAgIGNvbnN0IGNvZGUgPSBrZXkucmVwbGFjZSgvICsvZywgXCJfXCIpXG4gICAgICB0aGlzLmNvZGVzW2NvZGVdID0gbnVsbFxuICAgICAgY29uc3QgYWdncmVnYXRlZCA9IHRoaXMuZ2V0QWdncmVnYXRlZChrZXkpXG4gICAgICBjb25zdCB0aXRsZSA9IGBcXGAke2tleX0gPCR7Y29kZX1UT0NfPlxcYF9fJHthZ2dyZWdhdGVkfWBcbiAgICAgIGNvbnNvbGUubG9nKHRpdGxlKVxuICAgICAgY29uc3QgdW5kZXJsaW5lID0gbmV3IEFycmF5KHRpdGxlLmxlbmd0aCArIDEpLmpvaW4oXCI9XCIpXG4gICAgICBjb25zb2xlLmxvZyh1bmRlcmxpbmUpXG4gICAgICB0aGlzLnByaW50TGV2ZWwoYWN0ZXMsIFwiLX4uJ1wiLCB0aGlzLmNvZGUycGF0dGVybltrZXldLCBudWxsKVxuICAgIH1cbiAgICB0aGlzLnByaW50Q29kZXMoKVxuICAgIHRoaXMucHJpbnRBbmNob3JzSW5kZXgoKVxuICB9XG59XG5cbmZ1bmN0aW9uIG1haW4oYXJndjogYW55KTogbnVtYmVyIHtcbiAgY29uc3Qgb3B0aW9ucyA9IHBhcnNlQXJncyhhcmd2KVxuICBpZiAob3B0aW9ucyA9PT0gbnVsbCkgcmV0dXJuIDFcbiAgbGV0IGRvYyA9IG5ldyBBY3Rlc0RvY3VtZW50YXRpb24oXG4gICAgIW9wdGlvbnNbXCJuby1zYW5pdHktY2hlY2tzXCJdLFxuICAgIG9wdGlvbnMudmVyYm9zZSxcbiAgKVxuICBkb2MuY29sbGVjdEZpbGVzKG9wdGlvbnMuZGF0YSlcbiAgZG9jLnByb2Nlc3NGaWxlcyhvcHRpb25zLmRhdGEpXG4gIGRvYy5wcmludCgpXG4gIHJldHVybiAwXG59XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuaWYgKHByb2Nlc3MuYXJndlsxXS5lbmRzV2l0aChcImRvY3VtZW50X2Rvc3NpZXJzX2xlZ2lzbGF0aWZzLnRzXCIpKVxuICBwcm9jZXNzLmV4aXQobWFpbihwcm9jZXNzLmFyZ3YpKVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxJQUFBQSxnQkFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsaUJBQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFFLE9BQUEsR0FBQUgsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFHLGFBQUEsR0FBQUgsT0FBQTtBQUFnRCxTQUFBRCx1QkFBQUssR0FBQSxXQUFBQSxHQUFBLElBQUFBLEdBQUEsQ0FBQUMsVUFBQSxHQUFBRCxHQUFBLGdCQUFBQSxHQUFBO0FBQUEsU0FBQUUsZUFBQUMsR0FBQSxFQUFBQyxDQUFBLFdBQUFDLGVBQUEsQ0FBQUYsR0FBQSxLQUFBRyxxQkFBQSxDQUFBSCxHQUFBLEVBQUFDLENBQUEsS0FBQUcsMkJBQUEsQ0FBQUosR0FBQSxFQUFBQyxDQUFBLEtBQUFJLGdCQUFBO0FBQUEsU0FBQUEsaUJBQUEsY0FBQUMsU0FBQTtBQUFBLFNBQUFILHNCQUFBSCxHQUFBLEVBQUFDLENBQUEsUUFBQU0sRUFBQSxXQUFBUCxHQUFBLGdDQUFBUSxNQUFBLElBQUFSLEdBQUEsQ0FBQVEsTUFBQSxDQUFBQyxRQUFBLEtBQUFULEdBQUEsNEJBQUFPLEVBQUEsUUFBQUcsRUFBQSxFQUFBQyxFQUFBLEVBQUFDLEVBQUEsRUFBQUMsRUFBQSxFQUFBQyxJQUFBLE9BQUFDLEVBQUEsT0FBQUMsRUFBQSxpQkFBQUosRUFBQSxJQUFBTCxFQUFBLEdBQUFBLEVBQUEsQ0FBQVUsSUFBQSxDQUFB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
659
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29tbWFuZExpbmVBcmdzIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfY29tbWFuZExpbmVVc2FnZSIsIl9hc3NlcnQiLCJfZmlsZV9zeXN0ZW1zIiwiX2NsYXNzMiIsIm9iaiIsIl9fZXNNb2R1bGUiLCJfc2xpY2VkVG9BcnJheSIsImFyciIsImkiLCJfYXJyYXlXaXRoSG9sZXMiLCJfaXRlcmFibGVUb0FycmF5TGltaXQiLCJfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkiLCJfbm9uSXRlcmFibGVSZXN0IiwiVHlwZUVycm9yIiwiciIsImwiLCJ0IiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJlIiwibiIsInUiLCJhIiwiZiIsIm8iLCJjYWxsIiwibmV4dCIsIk9iamVjdCIsImRvbmUiLCJwdXNoIiwidmFsdWUiLCJsZW5ndGgiLCJBcnJheSIsImlzQXJyYXkiLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJfYXJyYXlXaXRob3V0SG9sZXMiLCJfaXRlcmFibGVUb0FycmF5IiwiX25vbkl0ZXJhYmxlU3ByZWFkIiwiaXRlciIsImZyb20iLCJfYXJyYXlMaWtlVG9BcnJheSIsIl9pbmhlcml0cyIsInN1YkNsYXNzIiwic3VwZXJDbGFzcyIsInByb3RvdHlwZSIsImNyZWF0ZSIsImNvbnN0cnVjdG9yIiwid3JpdGFibGUiLCJjb25maWd1cmFibGUiLCJkZWZpbmVQcm9wZXJ0eSIsIl9zZXRQcm90b3R5cGVPZiIsInAiLCJzZXRQcm90b3R5cGVPZiIsImJpbmQiLCJfX3Byb3RvX18iLCJfY3JlYXRlU3VwZXIiLCJEZXJpdmVkIiwiaGFzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCIsIl9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QiLCJfY3JlYXRlU3VwZXJJbnRlcm5hbCIsIlN1cGVyIiwiX2dldFByb3RvdHlwZU9mIiwicmVzdWx0IiwiTmV3VGFyZ2V0IiwiUmVmbGVjdCIsImNvbnN0cnVjdCIsImFyZ3VtZW50cyIsImFwcGx5IiwiX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4iLCJzZWxmIiwiX3R5cGVvZiIsIl9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQiLCJSZWZlcmVuY2VFcnJvciIsInNoYW0iLCJQcm94eSIsIkJvb2xlYW4iLCJ2YWx1ZU9mIiwiZ2V0UHJvdG90eXBlT2YiLCJfZGVmaW5lUHJvcGVydGllcyIsInRhcmdldCIsInByb3BzIiwiZGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJfdG9Qcm9wZXJ0eUtleSIsImtleSIsIl9jcmVhdGVDbGFzcyIsIkNvbnN0cnVjdG9yIiwicHJvdG9Qcm9wcyIsInN0YXRpY1Byb3BzIiwiX2NsYXNzQ2FsbENoZWNrIiwiaW5zdGFuY2UiLCJfZGVmaW5lUHJvcGVydHkiLCJhcmciLCJfdG9QcmltaXRpdmUiLCJTdHJpbmciLCJpbnB1dCIsImhpbnQiLCJwcmltIiwidG9QcmltaXRpdmUiLCJ1bmRlZmluZWQiLCJyZXMiLCJOdW1iZXIiLCJfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlciIsImFsbG93QXJyYXlMaWtlIiwiaXQiLCJGIiwicyIsIl9lIiwibm9ybWFsQ29tcGxldGlvbiIsImRpZEVyciIsImVyciIsInN0ZXAiLCJfZTIiLCJtaW5MZW4iLCJ0b1N0cmluZyIsInNsaWNlIiwibmFtZSIsInRlc3QiLCJsZW4iLCJhcnIyIiwicGFyc2VBcmdzIiwiYXJndiIsIm9wdGlvbnNEZWZpbml0aW9ucyIsImRlc2NyaXB0aW9uIiwiZGVmYXVsdE9wdGlvbiIsIm11bHRpcGxlIiwidHlwZSIsInNlY3Rpb25zIiwiaGVhZGVyIiwiY29udGVudCIsIm9wdGlvbkxpc3QiLCJvcHRpb25zIiwiY29tbWFuZExpbmVBcmdzIiwiY29uc29sZSIsImVycm9yIiwiaGVscCIsInVzYWdlIiwiY29tbWFuZExpbmVVc2FnZSIsIndhcm4iLCJlcVNldCIsImFzIiwiYnMiLCJzaXplIiwiX2l0ZXJhdG9yIiwiX3N0ZXAiLCJoYXMiLCJDb2RlMlBhdHRlcm4iLCJwYXR0ZXJuIiwiY2hpbGRyZW4iLCJfcGF0dGVybl8iLCJfbWF0Y2hfY291bnRfIiwiYXNzaWduIiwiQ29kZTJQYXR0ZXJuQ29tRm9uZCIsIl9Db2RlMlBhdHRlcm4iLCJfc3VwZXIiLCJMZWN0dXJlTWFwcGluZyIsIlNldCIsImFkZCIsImFjdGUiLCJjb2RlcyIsImNvZGVBY3RlIiwiZ2V0VHlwZSIsImxpYmVsbGVBY3RlIiwibm9tQ2Fub25pcXVlIiwibGliZWxsZSIsInJlbWFwIiwidHlwZXMiLCJtZXJnZUNvZGVzIiwiX2kiLCJfQXJyYXkkZnJvbSIsImMiLCJwcmludEFuY2hvcnMiLCJfaTIiLCJfQXJyYXkkZnJvbTIiLCJjb2RlIiwibG9nIiwiY29uY2F0IiwiZ2V0Q29kZXMiLCJqb2luIiwiaXNMZWN0dXJlIiwibWF0Y2giLCJjb2Rlc19sZWN0dXJlX3JlZ2V4cCIsIkVycm9yIiwibWFwIiwicmVwbGFjZSIsImdldENvZGVBY3RlIiwiUmVnRXhwIiwiY29kZXNfbGVjdHVyZSIsIkxlY3R1cmVNYXBwZXIiLCJtYXBwaW5nIiwiY29sbGVjdCIsImxlY3R1cmVzIiwiQWN0ZXNEb2N1bWVudGF0aW9uIiwic2FuaXR5Q2hlY2tzIiwidmVyYm9zZSIsImxlY3R1cmUiLCJDTVAiLCJDQyIsIlBST00iLCJBTjIxIiwiQU5MVU5JIiwiUsOpc29sdXRpb24iLCJBTjIwIiwiRVUiLCJJbW11bml0w6kiLCJwcm9jZWR1cmVzIiwiY29kZTJwYXR0ZXJuIiwid2Fsa0ZpbGVzIiwiZGF0YSIsImFjdGlvbiIsIl9pdGVyYXRvcjIiLCJnZXRGaWxlcyIsIl9zdGVwMiIsImZpbGUiLCJkb3NzaWVyIiwibG9hZCIsInByb2NlZHVyZSIsInJlbWFwUHJvY2VkdXJlIiwicHJvY2VkdXJlUGFybGVtZW50YWlyZSIsImFjdGVzTGVnaXNsYXRpZnMiLCJjb2xsZWN0RmlsZXMiLCJfdGhpcyIsIl9hY3RlcyIsIl9jMnAiLCJfcGFyZW50IiwicHJvY2Vzc0ZpbGVzIiwiX3RoaXMyIiwiYWN0ZXMiLCJjMnAiLCJwYXJlbnQiLCJtZXJnZSIsInZhbGlkYXRlIiwicmVtYXBBY3RlcyIsInJlc3VsdHMiLCJfaXRlcmF0b3IzIiwiX3N0ZXAzIiwibGVjdHVyZU1hcHBlciIsImNvbGxlY3RBY3RlcyIsIl9pdGVyYXRvcjQiLCJfc3RlcDQiLCJtZXJnZV9wcm9jZWR1cmVzIiwiTWFwIiwicmVtYXBwZWRQcm9jZWR1cmVzIiwiZ2V0Iiwib3JkZXJlZENvZGVzIiwib3JkZXJlZCIsIngiLCJhc3NlcnQiLCJ2YWxpZGF0ZUNocm9ub2xvZ3kiLCJzZXF1ZW5jZSIsIm1lcmdlQWN0ZSIsInNob3J0Q29kZSIsInhzaVR5cGUiLCJfaXRlcmF0b3I1IiwiX3N0ZXA1IiwiX2l0ZXJhdG9yNiIsIl9zdGVwNiIsInZhbGlkYXRlTGV2ZWwiLCJwYXRoIiwiX2kzIiwiX2FyciIsImVudHJpZXMiLCJfYXJyJF9pIiwicHJpbnRFbnRyeSIsImVudHJ5IiwidGl0bGUiLCJ1bmRlcmxpbmUiLCJhZGRBbmNob3JzIiwiYW5jaG9yc1ByaW50ZWQiLCJhbmNob3JzIiwicmVuYW1lQ01QIiwic3RhcnRzV2l0aCIsImVuZHNXaXRoIiwicHJpbnRMZXZlbCIsImtleXMiLCJfaXRlcmF0b3I3IiwiX3N0ZXA3Iiwic3Vic3RyaW5nIiwicHJpbnRDb2RlcyIsIl9pNCIsIl9PYmplY3Qka2V5cyIsInByaW50QW5jaG9yc0luZGV4IiwiX2k1IiwiX0FycmF5JGZyb20zIiwiZ2V0QWdncmVnYXRlZCIsInJlbWFwcGVkIiwicHJpbnQiLCJfaTYiLCJfYXJyMiIsIl9hcnIyJF9pIiwiYWdncmVnYXRlZCIsIm1haW4iLCJkb2MiLCJwcm9jZXNzIiwiZXhpdCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JpcHRzL2RvY3VtZW50X2Rvc3NpZXJzX2xlZ2lzbGF0aWZzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjb21tYW5kTGluZUFyZ3MgZnJvbSBcImNvbW1hbmQtbGluZS1hcmdzXCJcbmltcG9ydCBjb21tYW5kTGluZVVzYWdlIGZyb20gXCJjb21tYW5kLWxpbmUtdXNhZ2VcIlxuaW1wb3J0IGFzc2VydCBmcm9tIFwiYXNzZXJ0XCJcbmltcG9ydCB7IGxvYWQsIGdldEZpbGVzIH0gZnJvbSBcIi4uL2ZpbGVfc3lzdGVtc1wiXG5cbmZ1bmN0aW9uIHBhcnNlQXJncyhhcmd2OiBzdHJpbmdbXSk6IGFueSB7XG4gIGNvbnN0IG9wdGlvbnNEZWZpbml0aW9ucyA9IFtcbiAgICB7XG4gICAgICBkZXNjcmlwdGlvbjogXCJwYXRobmFtZSB0byBhIEpTT04gZmlsZSBvciBhIGdsb2IgcGF0dGVybiB0byBKU09OIGZpbGVzXCIsXG4gICAgICBkZWZhdWx0T3B0aW9uOiB0cnVlLFxuICAgICAgbXVsdGlwbGU6IHRydWUsXG4gICAgICBuYW1lOiBcImRhdGFcIixcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6IFwibm8tc2FuaXR5LWNoZWNrc1wiLFxuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlc2NyaXB0aW9uOiBcIkRvIG5vdCBwZXJmb3JtIHNhbml0eSBjaGVja3MuXCIsXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiBcInZlcmJvc2VcIixcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZXNjcmlwdGlvbjogXCJpbmNyZWFzZSB2ZXJib3NpdHlcIixcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6IFwiaGVscFwiLFxuICAgICAgZGVzY3JpcHRpb246IFwiUHJpbnQgdGhpcyB1c2FnZSBndWlkZS5cIixcbiAgICB9LFxuICBdXG4gIGNvbnN0IHNlY3Rpb25zID0gW1xuICAgIHtcbiAgICAgIGhlYWRlcjogXCJBaWRlIMOgIGxhIGRvY3VtZW50YXRpb24gZHUgZG9zc2llciBsw6lnaXNsYXRpZlwiLFxuICAgICAgY29udGVudDogXCJHw6luw6hyZSB1bmUgaGnDqXJhcmNoaWUgZGVzIGFjdGVzIGzDqWdpc2xhdGlmc1wiLFxuICAgIH0sXG4gICAge1xuICAgICAgaGVhZGVyOiBcIk9wdGlvbnNcIixcbiAgICAgIG9wdGlvbkxpc3Q6IG9wdGlvbnNEZWZpbml0aW9ucyxcbiAgICB9LFxuICBdXG4gIGNvbnN0IG9wdGlvbnMgPSBjb21tYW5kTGluZUFyZ3Mob3B0aW9uc0RlZmluaXRpb25zLCB7XG4gICAgYXJndjogYXJndixcbiAgfSlcbiAgaWYgKCEoXCJoZWxwXCIgaW4gb3B0aW9ucykgJiYgIShcImRhdGFcIiBpbiBvcHRpb25zKSkge1xuICAgIGNvbnNvbGUuZXJyb3IoXCItLWRhdGEgaXMgbWFuZGF0b3J5XCIpXG4gICAgb3B0aW9ucy5oZWxwID0gdHJ1ZVxuICB9XG4gIGlmIChcImhlbHBcIiBpbiBvcHRpb25zKSB7XG4gICAgY29uc3QgdXNhZ2UgPSBjb21tYW5kTGluZVVzYWdlKHNlY3Rpb25zKVxuICAgIGNvbnNvbGUud2Fybih1c2FnZSlcbiAgICByZXR1cm4gbnVsbFxuICB9XG4gIHJldHVybiBvcHRpb25zXG59XG5cbmZ1bmN0aW9uIGVxU2V0KGFzOiBTZXQ8c3RyaW5nPiwgYnM6IFNldDxzdHJpbmc+KTogYm9vbGVhbiB7XG4gIGlmIChhcy5zaXplICE9PSBicy5zaXplKSByZXR1cm4gZmFsc2VcbiAgZm9yICh2YXIgYSBvZiBhcykgaWYgKCFicy5oYXMoYSkpIHJldHVybiBmYWxzZVxuICByZXR1cm4gdHJ1ZVxufVxuXG5jbGFzcyBDb2RlMlBhdHRlcm4ge1xuICBfcGF0dGVybl86IGFueVxuICBfbWF0Y2hfY291bnRfOiBudW1iZXJcbiAgY29uc3RydWN0b3IocGF0dGVybjogYW55LCBjaGlsZHJlbjogYW55KSB7XG4gICAgdGhpcy5fcGF0dGVybl8gPSBwYXR0ZXJuXG4gICAgdGhpcy5fbWF0Y2hfY291bnRfID0gMFxuICAgIE9iamVjdC5hc3NpZ24odGhpcywgY2hpbGRyZW4pXG4gIH1cbn1cblxuY2xhc3MgQ29kZTJQYXR0ZXJuQ29tRm9uZCBleHRlbmRzIENvZGUyUGF0dGVybiB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKFwiXi9TQUlTSUUvKC9OT01JTi8pKigvUkVVTklPTi8pKigvUkFQUE9SVC8pKiRcIiwge30pXG4gIH1cbn1cblxuY2xhc3MgTGVjdHVyZU1hcHBpbmcge1xuICBsaWJlbGxlOiBhbnkgPSB7fVxuICBjb2RlczogYW55ID0gbmV3IFNldCgpXG5cbiAgc3RhdGljIGNvZGVzX2xlY3R1cmU6IHN0cmluZ1tdID0gW1xuICAgIFwiQU4xXCIsXG4gICAgXCJTTjFcIixcbiAgICBcIkFOTkxFQ1wiLFxuICAgIFwiU05OTEVDXCIsXG4gICAgXCJBTkxERUZcIixcbiAgICBcIkFOMlwiLFxuICAgIFwiU04yXCIsXG4gICAgXCJTTjNcIixcbiAgXVxuICBzdGF0aWMgY29kZXNfbGVjdHVyZV9yZWdleHA6IGFueSA9IG5ldyBSZWdFeHAoXG4gICAgXCJeKD86XCIgKyBMZWN0dXJlTWFwcGluZy5jb2Rlc19sZWN0dXJlLmpvaW4oXCJ8XCIpICsgXCIpKC0uKik/JFwiLFxuICApXG5cbiAgc3RhdGljIGlzTGVjdHVyZShhY3RlOiBhbnkpIHtcbiAgICByZXR1cm4gYWN0ZS5jb2RlQWN0ZS5tYXRjaChMZWN0dXJlTWFwcGluZy5jb2Rlc19sZWN0dXJlX3JlZ2V4cClcbiAgfVxuXG4gIHN0YXRpYyBnZXRUeXBlKGFjdGU6IGFueSkge1xuICAgIGlmIChhY3RlLmNvZGVBY3RlLm1hdGNoKC9eQU4vKSkgcmV0dXJuIFwiQU5cIlxuICAgIGVsc2UgaWYgKGFjdGUuY29kZUFjdGUubWF0Y2goL15TTi8pKSByZXR1cm4gXCJTTlwiXG4gICAgZWxzZSB0aHJvdyBFcnJvcihgJHthY3RlLmNvZGVBY3RlfSBkb2VzIG5vdCBzdGFydCB3aXRoIEFOIG9yIFNOYClcbiAgfVxuXG4gIHN0YXRpYyBtYXAoY29kZUFjdGU6IGFueSkge1xuICAgIHJldHVybiBjb2RlQWN0ZS5yZXBsYWNlKExlY3R1cmVNYXBwaW5nLmNvZGVzX2xlY3R1cmVfcmVnZXhwLCBgbGVjdHVyZSQxYClcbiAgfVxuXG4gIHN0YXRpYyBnZXRDb2RlQWN0ZShhY3RlOiBhbnkpIHtcbiAgICBpZiAoIUxlY3R1cmVNYXBwaW5nLmlzTGVjdHVyZShhY3RlKSkgcmV0dXJuXG5cbiAgICByZXR1cm4gTGVjdHVyZU1hcHBpbmcubWFwKGFjdGUuY29kZUFjdGUpXG4gIH1cblxuICBhZGQoYWN0ZTogYW55KSB7XG4gICAgdGhpcy5jb2Rlcy5hZGQoYWN0ZS5jb2RlQWN0ZSlcblxuICAgIGNvbnN0IHR5cGUgPSBMZWN0dXJlTWFwcGluZy5nZXRUeXBlKGFjdGUpXG5cbiAgICBpZiAoIShhY3RlLmxpYmVsbGVBY3RlLm5vbUNhbm9uaXF1ZSBpbiB0aGlzLmxpYmVsbGUpKVxuICAgICAgdGhpcy5saWJlbGxlW2FjdGUubGliZWxsZUFjdGUubm9tQ2Fub25pcXVlXSA9IG5ldyBTZXQoKVxuICAgIHRoaXMubGliZWxsZVthY3RlLmxpYmVsbGVBY3RlLm5vbUNhbm9uaXF1ZV0uYWRkKHR5cGUpXG4gIH1cblxuICByZW1hcChhY3RlOiBhbnksIGNvZGVBY3RlOiBzdHJpbmcpIHtcbiAgICBhY3RlLmNvZGVBY3RlID0gY29kZUFjdGVcblxuICAgIGxldCB0eXBlcyA9IHRoaXMubGliZWxsZVthY3RlLmxpYmVsbGVBY3RlLm5vbUNhbm9uaXF1ZV1cbiAgICBpZiAoISh0eXBlcy5oYXMoXCJTTlwiKSAmJiB0eXBlcy5oYXMoXCJBTlwiKSkpIHtcbiAgICAgIGlmICh0eXBlcy5oYXMoXCJTTlwiKSkgYWN0ZS5saWJlbGxlQWN0ZS5ub21DYW5vbmlxdWUgKz0gXCIgKFPDqW5hdClcIlxuICAgICAgZWxzZSBpZiAodHlwZXMuaGFzKFwiQU5cIikpXG4gICAgICAgIGFjdGUubGliZWxsZUFjdGUubm9tQ2Fub25pcXVlICs9IFwiIChBc3NlbWJsw6llIE5hdGlvbmFsZSlcIlxuICAgIH1cbiAgfVxuXG4gIG1lcmdlQ29kZXMoY29kZXM6IGFueSkge1xuICAgIGZvciAoY29uc3QgYyBvZiBBcnJheS5mcm9tKHRoaXMuY29kZXMpKSBjb2Rlcy5hZGQoYylcbiAgfVxuXG4gIHByaW50QW5jaG9ycygpIHtcbiAgICBmb3IgKGNvbnN0IGNvZGUgb2YgQXJyYXkuZnJvbSh0aGlzLmNvZGVzKSkgY29uc29sZS5sb2coYC4uIF8ke2NvZGV9OmApXG4gIH1cblxuICBnZXRDb2RlcygpIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLmNvZGVzKS5qb2luKFwiLFwiKVxuICB9XG59XG5cbmNsYXNzIExlY3R1cmVNYXBwZXIge1xuICBtYXBwaW5nOiBhbnkgPSB7fVxuXG4gIGhhcyhjb2RlQWN0ZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGNvZGVBY3RlIGluIHRoaXMubWFwcGluZ1xuICB9XG5cbiAgY29sbGVjdChhY3RlOiBhbnkpIHtcbiAgICBjb25zdCBjb2RlQWN0ZSA9IExlY3R1cmVNYXBwaW5nLmdldENvZGVBY3RlKGFjdGUpXG4gICAgaWYgKGNvZGVBY3RlICE9IHVuZGVmaW5lZCkge1xuICAgICAgbGV0IGxlY3R1cmVzID0gdGhpcy5tYXBwaW5nXG4gICAgICBpZiAoIShjb2RlQWN0ZSBpbiBsZWN0dXJlcykpIGxlY3R1cmVzW2NvZGVBY3RlXSA9IG5ldyBMZWN0dXJlTWFwcGluZygpXG4gICAgICBsZWN0dXJlc1tjb2RlQWN0ZV0uYWRkKGFjdGUpXG4gICAgfVxuICB9XG5cbiAgcmVtYXAoYWN0ZTogYW55KSB7XG4gICAgY29uc3QgY29kZUFjdGUgPSBMZWN0dXJlTWFwcGluZy5nZXRDb2RlQWN0ZShhY3RlKVxuICAgIGlmIChjb2RlQWN0ZSAhPSB1bmRlZmluZWQpIHRoaXMubWFwcGluZ1tjb2RlQWN0ZV0ucmVtYXAoYWN0ZSwgY29kZUFjdGUpXG4gIH1cblxuICBtZXJnZUNvZGVzKGNvZGVzOiBhbnksIGNvZGVBY3RlOiBzdHJpbmcpIHtcbiAgICB0aGlzLm1hcHBpbmdbY29kZUFjdGVdLm1lcmdlQ29kZXMoY29kZXMpXG4gIH1cblxuICBwcmludEFuY2hvcnMoY29kZUFjdGU6IHN0cmluZykge1xuICAgIHRoaXMubWFwcGluZ1tjb2RlQWN0ZV0ucHJpbnRBbmNob3JzKClcbiAgfVxuXG4gIGdldENvZGVzKGNvZGVBY3RlOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5tYXBwaW5nW2NvZGVBY3RlXS5nZXRDb2RlcygpXG4gIH1cbn1cblxuY2xhc3MgQWN0ZXNEb2N1bWVudGF0aW9uIHtcbiAgdmVyYm9zZTogYm9vbGVhblxuICBzYW5pdHlDaGVja3M6IGJvb2xlYW5cbiAgbGVjdHVyZU1hcHBlcjogYW55ID0gbmV3IExlY3R1cmVNYXBwZXIoKVxuICByZW1hcHBlZFByb2NlZHVyZXM6IGFueSA9IHt9XG4gIGFuY2hvcnNQcmludGVkOiBhbnkgPSB7fVxuICBhbmNob3JzOiBhbnkgPSBuZXcgU2V0KClcbiAgY29kZXM6IGFueSA9IHt9XG4gIHByb2NlZHVyZXM6IGFueSA9IG51bGxcbiAgY29kZTJwYXR0ZXJuOiBhbnkgPSBuZXcgQ29kZTJQYXR0ZXJuKG51bGwsIHtcbiAgICBcIlByb2PDqWR1cmUgbMOpZ2lzbGF0aXZlXCI6IG5ldyBDb2RlMlBhdHRlcm4oXG4gICAgICBcIl4oKCgvbGVjdHVyZS8pKyl8KCgvbGVjdHVyZS8pKy9DTVAvKC9sZWN0dXJlLykqKSkoL0NDLyk/KC9QUk9NLyk/KC9BTi1BUFBMSS8pPyRcIixcbiAgICAgIHtcbiAgICAgICAgbGVjdHVyZTogbmV3IENvZGUyUGF0dGVybihcbiAgICAgICAgICBcIl4oL0RFUE9ULyk/KC9EUFRMRVRUUkVDVC8pPygvRVRJLyk/KC9BVkNFLyk/KC9ER1ZULyk/KC9BQ0lOLyk/KC9NT1RJT04vKSooL1BST0NBQ0MvKT8oL0NPTS8pPygoL0RFQkFUUy8pKyk/KC9SVFJJTkkvKT8kXCIsXG4gICAgICAgICAge1xuICAgICAgICAgICAgXCJsZWN0dXJlLUNPTVwiOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvRk9ORC98L0FWSVMvKSskXCIsIHtcbiAgICAgICAgICAgICAgXCJsZWN0dXJlLUNPTS1GT05EXCI6IG5ldyBDb2RlMlBhdHRlcm5Db21Gb25kKCksXG4gICAgICAgICAgICAgIFwibGVjdHVyZS1DT00tQVZJU1wiOiBuZXcgQ29kZTJQYXR0ZXJuQ29tRm9uZCgpLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBcImxlY3R1cmUtREVCQVRTXCI6IG5ldyBDb2RlMlBhdHRlcm4oXG4gICAgICAgICAgICAgIFwiXigvU0VBTkNFLykqKCgvTU9USU9OLyk/KC9NT1RJT04tVk9URS8pKyk/KC9ERUMvKT8kXCIsXG4gICAgICAgICAgICAgIHt9LFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICB9LFxuICAgICAgICApLFxuICAgICAgICBDTVA6IG5ldyBDb2RlMlBhdHRlcm4oXG4gICAgICAgICAgXCJeKC9ERVBPVC98L1NBSVNJRS8pezEsMn0oL0NPTS8pPygvREVDLyk/KC9ERUJBVFMtQU4vL0RFQkFUUy1TTi8pP1wiLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIFwiQ01QLUNPTVwiOiBuZXcgQ29kZTJQYXR0ZXJuKFxuICAgICAgICAgICAgICBcIl4oL05PTUlOLyk/KC9SQVBQT1JULUFOL3wvUkFQUE9SVC1TTi8pezJ9JFwiLFxuICAgICAgICAgICAgICB7fSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBcIkNNUC1ERUJBVFMtQU5cIjogbmV3IENvZGUyUGF0dGVybihcIl4oL1NFQU5DRS8pKigvREVDLyk/JFwiLCB7fSksXG4gICAgICAgICAgICBcIkNNUC1ERUJBVFMtU05cIjogbmV3IENvZGUyUGF0dGVybihcIl4oL1NFQU5DRS8pKigvREVDLyk/JFwiLCB7fSksXG4gICAgICAgICAgfSxcbiAgICAgICAgKSxcbiAgICAgICAgQ0M6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9TQUlTSUUvKSsoL0NPTkNMVVNJT04vKT8kXCIsIHt9KSxcbiAgICAgICAgUFJPTTogbmV3IENvZGUyUGF0dGVybihcIl4oL1BVQi8pPyRcIiwge30pLFxuICAgICAgICBcIkFOLUFQUExJXCI6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9SQVBQT1JULyk/JFwiLCB7fSksXG4gICAgICB9LFxuICAgICksXG4gICAgXCJBbGxvY3V0aW9uIGR1IFByw6lzaWRlbnQgZGUgbCdBc3NlbWJsw6llIG5hdGlvbmFsZVwiOiBuZXcgQ29kZTJQYXR0ZXJuKFxuICAgICAgXCJeL0FOMjEvJFwiLFxuICAgICAge1xuICAgICAgICBBTjIxOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvQVBBTi8pPyRcIiwge30pLFxuICAgICAgfSxcbiAgICApLFxuICAgIFwiUsOpc29sdXRpb24gQXJ0aWNsZSAzNC0xXCI6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9BTkxVTkkvKT8kXCIsIHtcbiAgICAgIEFOTFVOSTogbmV3IENvZGUyUGF0dGVybihcIl4oL0RFUE9ULyk/KC9ERUJBVFMvKT8oL1JUUklOSS8pPyRcIiwge1xuICAgICAgICBcIkFOTFVOSS1ERUJBVFNcIjogbmV3IENvZGUyUGF0dGVybihcIl4oL1NFQU5DRS8pKygvREVDLyk/JFwiLCB7fSksXG4gICAgICB9KSxcbiAgICB9KSxcbiAgICBSw6lzb2x1dGlvbjogbmV3IENvZGUyUGF0dGVybihcIl4oL0FOTFVOSS8pPygvQ0MvKT8kXCIsIHtcbiAgICAgIEFOTFVOSTogbmV3IENvZGUyUGF0dGVybihcIl4oL0RFUE9ULyk/KC9DT00vKT8oL0RFQkFUUy98L1JUUklOSS8pPyRcIiwge1xuICAgICAgICBcIkFOTFVOSS1DT01cIjogbmV3IENvZGUyUGF0dGVybihcIl4oL0NBRS8pPygvRk9ORC8pPyRcIiwge1xuICAgICAgICAgIFwiQU5MVU5JLUNPTS1GT05EXCI6IG5ldyBDb2RlMlBhdHRlcm5Db21Gb25kKCksXG4gICAgICAgICAgXCJBTkxVTkktQ09NLUNBRVwiOiBuZXcgQ29kZTJQYXR0ZXJuKFxuICAgICAgICAgICAgXCJeKC9TQUlTSUUvKT8oL05PTUlOLyk/KC9SRVVOSU9OLyk/KC9SQVBQT1JULyk/KC9ERUMvKT8kXCIsXG4gICAgICAgICAgICB7fSxcbiAgICAgICAgICApLFxuICAgICAgICB9KSxcbiAgICAgICAgXCJBTkxVTkktREVCQVRTXCI6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9TRUFOQ0UvKSooL0RFQy8pPyRcIiwge30pLFxuICAgICAgfSksXG4gICAgICBDQzogbmV3IENvZGUyUGF0dGVybihcIl4oL1NBSVNJRS8pPygvQ09OQ0xVU0lPTi8pPyRcIiwge30pLFxuICAgIH0pLFxuICAgIFwiUmFwcG9ydCBkJ2luZm9ybWF0aW9uIHNhbnMgbWlzc2lvblwiOiBuZXcgQ29kZTJQYXR0ZXJuKFxuICAgICAgXCJeKC9BTjIwLyk/KC9FVS8pPyRcIixcbiAgICAgIHtcbiAgICAgICAgQU4yMDogbmV3IENvZGUyUGF0dGVybihcIl4oL1JBUFBPUlQvKT8kXCIsIHt9KSxcbiAgICAgICAgRVU6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9ERUMvKSskXCIsIHt9KSxcbiAgICAgIH0sXG4gICAgKSxcbiAgICBcIk1pc3Npb24gZCdpbmZvcm1hdGlvblwiOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvQU4yMC8pPyRcIiwge1xuICAgICAgQU4yMDogbmV3IENvZGUyUGF0dGVybihcIl4oL01JU0lORi8pPyRcIiwge1xuICAgICAgICBcIkFOMjAtTUlTSU5GXCI6IG5ldyBDb2RlMlBhdHRlcm4oXG4gICAgICAgICAgXCJeKC9DUkVBLyk/KC9OT01JTi8pPygvUkFQUE9SVC8pPyRcIixcbiAgICAgICAgICB7fSxcbiAgICAgICAgKSxcbiAgICAgIH0pLFxuICAgIH0pLFxuICAgIFwiQ29tbWlzc2lvbiBkJ2VucXXDqnRlXCI6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9BTjIwLyk/JFwiLCB7XG4gICAgICBBTjIwOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvQ09NRU5RLyk/JFwiLCB7XG4gICAgICAgIFwiQU4yMC1DT01FTlFcIjogbmV3IENvZGUyUGF0dGVybihcbiAgICAgICAgICBcIl4oL0NSRUEvKT8oL05PTUlOLyk/KC9SQVBQT1JULyk/JFwiLFxuICAgICAgICAgIHt9LFxuICAgICAgICApLFxuICAgICAgfSksXG4gICAgfSksXG4gICAgXCJFbmdhZ2VtZW50IGRlIGxhIHJlc3BvbnNhYmlsaXTDqSBnb3V2ZXJuZW1lbnRhbGVcIjogbmV3IENvZGUyUGF0dGVybihcbiAgICAgIFwiXi9BTjIxLyRcIixcbiAgICAgIHtcbiAgICAgICAgQU4yMTogbmV3IENvZGUyUGF0dGVybihcIl4oKCgvTU9USU9OLykqL0RFQkFUUy8pfCgvREdWVC8pKXsxLDJ9JFwiLCB7XG4gICAgICAgICAgXCJBTjIxLURFQkFUU1wiOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvU0VBTkNFLykqKC9NT1RJT04tVk9URS8pKiRcIiwge30pLFxuICAgICAgICB9KSxcbiAgICAgIH0sXG4gICAgKSxcbiAgICBcIk1vdGlvbiByw6lmw6lyZW5kYWlyZVwiOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvbGVjdHVyZS8pKyRcIiwge1xuICAgICAgbGVjdHVyZTogbmV3IENvZGUyUGF0dGVybihcIl4oL0RFUE9ULyk/KC9DT00vKT8oL0RFQkFUUy8pPyRcIiwge1xuICAgICAgICBcImxlY3R1cmUtQ09NXCI6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9GT05ELyk/JFwiLCB7XG4gICAgICAgICAgXCJsZWN0dXJlLUNPTS1GT05EXCI6IG5ldyBDb2RlMlBhdHRlcm4oXG4gICAgICAgICAgICBcIl4oL1NBSVNJRS8pPygvTk9NSU4vKSooL1JBUFBPUlQvKSokXCIsXG4gICAgICAgICAgICB7fSxcbiAgICAgICAgICApLFxuICAgICAgICB9KSxcbiAgICAgICAgXCJsZWN0dXJlLURFQkFUU1wiOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvREVDLyk/JFwiLCB7fSksXG4gICAgICB9KSxcbiAgICB9KSxcbiAgICBJbW11bml0w6k6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9BTkxVTkkvKSskXCIsIHtcbiAgICAgIEFOTFVOSTogbmV3IENvZGUyUGF0dGVybihcIl4oL0RFUE9ULyk/KC9DT00vKT8oL0RFQkFUUy8pPygvUlRSSU5JLyk/JFwiLCB7XG4gICAgICAgIFwiQU5MVU5JLUNPTVwiOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvRk9ORC8pPyRcIiwge1xuICAgICAgICAgIFwiQU5MVU5JLUNPTS1GT05EXCI6IG5ldyBDb2RlMlBhdHRlcm4oXG4gICAgICAgICAgICBcIl4oL1NBSVNJRS8pPygvTk9NSU4vKSooL1JBUFBPUlQvKSokXCIsXG4gICAgICAgICAgICB7fSxcbiAgICAgICAgICApLFxuICAgICAgICB9KSxcbiAgICAgICAgXCJBTkxVTkktREVCQVRTXCI6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9TRUFOQ0UvKT8oL0RFQy8pJFwiLCB7fSksXG4gICAgICB9KSxcbiAgICB9KSxcbiAgICBcIlJlc3BvbnNhYmlsaXTDqSBww6luYWxlIGR1IHByw6lzaWRlbnQgZGUgbGEgcsOpcHVibGlxdWVcIjogbmV3IENvZGUyUGF0dGVybihcbiAgICAgIFwiXi9sZWN0dXJlLyRcIixcbiAgICAgIHtcbiAgICAgICAgbGVjdHVyZTogbmV3IENvZGUyUGF0dGVybihcIl4oL0RFUE9ULyk/KC9SRUNCVVJFQVUvKT8kXCIsIHt9KSxcbiAgICAgIH0sXG4gICAgKSxcbiAgICBcIlByb3Bvc2l0aW9uIGRlIGxvaSBwcsOpc2VudMOpZSBlbiBhcHBsaWNhdGlvbiBkZSBsJ2FydGljbGUgMTEgZGUgbGEgQ29uc3RpdHV0aW9uXCI6XG4gICAgICBuZXcgQ29kZTJQYXR0ZXJuKFwiXi9sZWN0dXJlLyRcIiwge1xuICAgICAgICBsZWN0dXJlOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvREVQT1QvKT8kXCIsIHt9KSxcbiAgICAgIH0pLFxuICB9KVxuXG4gIGNvbnN0cnVjdG9yKHNhbml0eUNoZWNrczogYm9vbGVhbiwgdmVyYm9zZTogYm9vbGVhbiA9IGZhbHNlKSB7XG4gICAgdGhpcy52ZXJib3NlID0gdmVyYm9zZVxuICAgIHRoaXMuc2FuaXR5Q2hlY2tzID0gc2FuaXR5Q2hlY2tzXG4gICAgdGhpcy5wcm9jZWR1cmVzID0ge31cbiAgICB0aGlzLmNvZGUycGF0dGVybi5fbWF0Y2hfY291bnRfKytcbiAgfVxuXG4gIHdhbGtGaWxlcyhkYXRhOiBzdHJpbmdbXSwgYWN0aW9uOiBhbnkpIHtcbiAgICBmb3IgKGNvbnN0IGZpbGUgb2YgZ2V0RmlsZXMoZGF0YSkpIHtcbiAgICAgIGNvbnN0IGRvc3NpZXIgPSBsb2FkKGZpbGUpXG4gICAgICBsZXQgcHJvY2VkdXJlOiBzdHJpbmcgPSB0aGlzLnJlbWFwUHJvY2VkdXJlKFxuICAgICAgICBkb3NzaWVyLnByb2NlZHVyZVBhcmxlbWVudGFpcmUubGliZWxsZSxcbiAgICAgIClcbiAgICAgIGlmICghKHByb2NlZHVyZSBpbiB0aGlzLnByb2NlZHVyZXMpKSB0aGlzLnByb2NlZHVyZXNbcHJvY2VkdXJlXSA9IHt9XG4gICAgICBhY3Rpb24oXG4gICAgICAgIHRoaXMucHJvY2VkdXJlc1twcm9jZWR1cmVdLFxuICAgICAgICBkb3NzaWVyLmFjdGVzTGVnaXNsYXRpZnMsXG4gICAgICAgIHRoaXMuY29kZTJwYXR0ZXJuW3Byb2NlZHVyZV0sXG4gICAgICAgIG51bGwsXG4gICAgICApXG4gICAgfVxuICB9XG5cbiAgY29sbGVjdEZpbGVzKGRhdGE6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy53YWxrRmlsZXMoXG4gICAgICBkYXRhLFxuICAgICAgKF9hY3RlczogYW55LCBhY3Rlc0xlZ2lzbGF0aWZzOiBhbnksIF9jMnA6IGFueSwgX3BhcmVudDogc3RyaW5nKSA9PiB7XG4gICAgICAgIHRoaXMuY29sbGVjdChhY3Rlc0xlZ2lzbGF0aWZzKVxuICAgICAgfSxcbiAgICApXG4gIH1cblxuICBwcm9jZXNzRmlsZXMoZGF0YTogc3RyaW5nW10pIHtcbiAgICB0aGlzLndhbGtGaWxlcyhcbiAgICAgIGRhdGEsXG4gICAgICAoYWN0ZXM6IGFueSwgYWN0ZXNMZWdpc2xhdGlmczogYW55LCBjMnA6IGFueSwgcGFyZW50OiBzdHJpbmcpID0+IHtcbiAgICAgICAgdGhpcy5tZXJnZShhY3RlcywgYWN0ZXNMZWdpc2xhdGlmcywgYzJwLCBwYXJlbnQpXG4gICAgICB9LFxuICAgIClcbiAgICBpZiAodGhpcy5zYW5pdHlDaGVja3MpIHRoaXMudmFsaWRhdGUoKVxuICB9XG5cbiAgcmVtYXBBY3RlcyhhY3RlczogYW55KTogYW55IHtcbiAgICBsZXQgcmVzdWx0cyA9IFtdXG4gICAgZm9yIChjb25zdCBhY3RlIG9mIGFjdGVzKSB7XG4gICAgICB0aGlzLmxlY3R1cmVNYXBwZXIucmVtYXAoYWN0ZSlcblxuICAgICAgLy8gQ0MtU0FJU0lFLSBzdWZmaXggZG9lcyBub3QgaW1wbHkgYSBoaWVyYXJjaHlcbiAgICAgIGFjdGUuY29kZUFjdGUgPSBhY3RlLmNvZGVBY3RlLnJlcGxhY2UoL15DQy1TQUlTSUUuKi8sIFwiQ0MtU0FJU0lFXCIpXG5cbiAgICAgIHJlc3VsdHMucHVzaChhY3RlKVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0c1xuICB9XG5cbiAgY29sbGVjdEFjdGVzKGFjdGVzOiBhbnkpOiBhbnkge1xuICAgIGxldCByZXN1bHRzID0gW11cbiAgICBmb3IgKGNvbnN0IGFjdGUgb2YgYWN0ZXMpIHtcbiAgICAgIHRoaXMubGVjdHVyZU1hcHBlci5jb2xsZWN0KGFjdGUpXG5cbiAgICAgIHJlc3VsdHMucHVzaChhY3RlKVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0c1xuICB9XG5cbiAgcmVtYXBQcm9jZWR1cmUocHJvY2VkdXJlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IG1lcmdlX3Byb2NlZHVyZXM6IE1hcDxzdHJpbmcsIGFueT4gPSBuZXcgTWFwKFtcbiAgICAgIFtcIlByb3Bvc2l0aW9uIGRlIGxvaSBvcmRpbmFpcmVcIiwgXCJQcm9jw6lkdXJlIGzDqWdpc2xhdGl2ZVwiXSxcbiAgICAgIFtcIlByb2pldCBkZSBsb2kgb3JkaW5haXJlXCIsIFwiUHJvY8OpZHVyZSBsw6lnaXNsYXRpdmVcIl0sXG4gICAgICBbXG4gICAgICAgIFwiUHJvamV0IGRlIHJhdGlmaWNhdGlvbiBkZXMgdHJhaXTDqXMgZXQgY29udmVudGlvbnNcIixcbiAgICAgICAgXCJQcm9jw6lkdXJlIGzDqWdpc2xhdGl2ZVwiLFxuICAgICAgXSxcbiAgICAgIFtcIlByb2pldCBvdSBwcm9wb3NpdGlvbiBkZSBsb2kgb3JnYW5pcXVlXCIsIFwiUHJvY8OpZHVyZSBsw6lnaXNsYXRpdmVcIl0sXG4gICAgICBbXG4gICAgICAgIFwiUHJvamV0IG91IHByb3Bvc2l0aW9uIGRlIGxvaSBjb25zdGl0dXRpb25uZWxsZVwiLFxuICAgICAgICBcIlByb2PDqWR1cmUgbMOpZ2lzbGF0aXZlXCIsXG4gICAgICBdLFxuICAgICAgW1wiUHJvamV0IGRlIGxvaSBkZSBmaW5hbmNlcyBkZSBsJ2FubsOpZVwiLCBcIlByb2PDqWR1cmUgbMOpZ2lzbGF0aXZlXCJdLFxuICAgICAgW1wiUHJvamV0IGRlIGxvaSBkZSBmaW5hbmNlcyByZWN0aWZpY2F0aXZlXCIsIFwiUHJvY8OpZHVyZSBsw6lnaXNsYXRpdmVcIl0sXG4gICAgICBbXG4gICAgICAgIFwiUHJvamV0IGRlIGxvaSBkZSBmaW5hbmNlbWVudCBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIixcbiAgICAgICAgXCJQcm9jw6lkdXJlIGzDqWdpc2xhdGl2ZVwiLFxuICAgICAgXSxcbiAgICBdKVxuICAgIGlmIChtZXJnZV9wcm9jZWR1cmVzLmhhcyhwcm9jZWR1cmUpKSB7XG4gICAgICB0aGlzLnJlbWFwcGVkUHJvY2VkdXJlc1twcm9jZWR1cmVdID0gbnVsbFxuICAgICAgcmV0dXJuIG1lcmdlX3Byb2NlZHVyZXMuZ2V0KHByb2NlZHVyZSlcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHByb2NlZHVyZVxuICAgIH1cbiAgfVxuXG4gIC8vIHJldHVybiB0aGUgY29kZUFjdGVzIGluIHRoZSBzYW1lIG9yZGVyIHRoZXkgYXBwZWFyIGluIHRoZSByZWdleHBcbiAgb3JkZXJlZENvZGVzKGNvZGVzOiBhbnksIGMycDogYW55LCBwYXJlbnQ6IHN0cmluZyk6IFNldDxzdHJpbmc+IHtcbiAgICBjb2RlcyA9IG5ldyBTZXQoY29kZXMpXG4gICAgaWYgKCF0aGlzLnNhbml0eUNoZWNrcykgcmV0dXJuIGNvZGVzXG4gICAgbGV0IG9yZGVyZWQgPSBjMnBbXCJfcGF0dGVybl9cIl0ubWF0Y2gobmV3IFJlZ0V4cChcIi8uKj8vXCIsIFwiZ1wiKSlcbiAgICBvcmRlcmVkID0gb3JkZXJlZC5tYXAoKHg6IHN0cmluZykgPT4geC5yZXBsYWNlKG5ldyBSZWdFeHAoXCIvKC4qKS9cIiksIFwiJDFcIikpXG4gICAgaWYgKHBhcmVudCAhPSBudWxsKSBvcmRlcmVkID0gb3JkZXJlZC5tYXAoKHg6IHN0cmluZykgPT4gYCR7cGFyZW50fS0ke3h9YClcbiAgICBvcmRlcmVkID0gbmV3IFNldChvcmRlcmVkKVxuICAgIGFzc2VydChlcVNldChvcmRlcmVkLCBjb2RlcyksIGAke1suLi5vcmRlcmVkXX0gIT0gJHtbLi4uY29kZXNdfWApXG4gICAgcmV0dXJuIG9yZGVyZWRcbiAgfVxuXG4gIHZhbGlkYXRlQ2hyb25vbG9neShhY3Rlc0xlZ2lzbGF0aWZzOiBhbnksIGMycDogYW55LCBwYXJlbnQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IHBhdHRlcm4gPSBjMnBbXCJfcGF0dGVybl9cIl1cbiAgICBjb25zdCBzZXF1ZW5jZSA9IGFjdGVzTGVnaXNsYXRpZnNcbiAgICAgIC5tYXAoKHg6IGFueSkgPT4gYC8ke3guY29kZUFjdGV9L2AucmVwbGFjZShgLyR7cGFyZW50fS1gLCBcIi9cIikpXG4gICAgICAuam9pbihcIlwiKVxuICAgIGFzc2VydChcbiAgICAgIHNlcXVlbmNlLm1hdGNoKG5ldyBSZWdFeHAocGF0dGVybikpLFxuICAgICAgYCR7cGF0dGVybn0gZG9lcyBub3QgbWF0Y2ggJHtzZXF1ZW5jZX1gLFxuICAgIClcbiAgICBjMnAuX21hdGNoX2NvdW50XysrXG4gIH1cblxuICBtZXJnZUFjdGUoYWN0ZXM6IGFueSwgYWN0ZTogYW55LCBjMnA6IGFueSwgcGFyZW50OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBsZXQgY29kZTogc3RyaW5nID0gYWN0ZS5jb2RlQWN0ZVxuICAgIGxldCBzaG9ydENvZGU6IHN0cmluZyA9IGNvZGUucmVwbGFjZShuZXcgUmVnRXhwKGBeJHtwYXJlbnR9LWApLCBcIlwiKVxuICAgIHNob3J0Q29kZSA9IHNob3J0Q29kZS5yZXBsYWNlKC8tKEFOfFNOKSQvLCBcIlwiKVxuICAgIHRoaXMuY29kZXNbc2hvcnRDb2RlXSA9IG51bGxcbiAgICBsZXQgbmFtZTogc3RyaW5nID0gYWN0ZS5saWJlbGxlQWN0ZS5ub21DYW5vbmlxdWVcbiAgICBpZiAoIShjb2RlIGluIGFjdGVzKSkge1xuICAgICAgYWN0ZXNbY29kZV0gPSB7XG4gICAgICAgIHR5cGU6IGFjdGUueHNpVHlwZSxcbiAgICAgICAgbmFtZTogbmV3IFNldChbbmFtZV0pLFxuICAgICAgICBzaG9ydENvZGU6IHNob3J0Q29kZSxcbiAgICAgICAgYWN0ZXM6IHt9LFxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBhY3Rlc1tjb2RlXS5uYW1lLmFkZChuYW1lKVxuICAgIH1cbiAgICBpZiAoXCJhY3Rlc0xlZ2lzbGF0aWZzXCIgaW4gYWN0ZSlcbiAgICAgIHRoaXMubWVyZ2UoYWN0ZXNbY29kZV0uYWN0ZXMsIGFjdGUuYWN0ZXNMZWdpc2xhdGlmcywgYzJwW2NvZGVdLCBjb2RlKVxuICB9XG5cbiAgbWVyZ2UoYWN0ZXM6IGFueSwgYWN0ZXNMZWdpc2xhdGlmczogYW55LCBjMnA6IGFueSwgcGFyZW50OiBhbnkpOiB2b2lkIHtcbiAgICBjb25zdCBsID0gdGhpcy5yZW1hcEFjdGVzKGFjdGVzTGVnaXNsYXRpZnMpXG4gICAgdGhpcy52YWxpZGF0ZUNocm9ub2xvZ3kobCwgYzJwLCBwYXJlbnQpXG4gICAgZm9yIChjb25zdCBhY3RlIG9mIGwpIHRoaXMubWVyZ2VBY3RlKGFjdGVzLCBhY3RlLCBjMnAsIHBhcmVudClcbiAgfVxuXG4gIGNvbGxlY3QoYWN0ZXNMZWdpc2xhdGlmczogYW55KTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBhY3RlIG9mIHRoaXMuY29sbGVjdEFjdGVzKGFjdGVzTGVnaXNsYXRpZnMpKVxuICAgICAgaWYgKFwiYWN0ZXNMZWdpc2xhdGlmc1wiIGluIGFjdGUpIHRoaXMuY29sbGVjdChhY3RlLmFjdGVzTGVnaXNsYXRpZnMpXG4gIH1cblxuICB2YWxpZGF0ZUxldmVsKGMycDogYW55LCBwYXRoOiBhbnkpIHtcbiAgICBhc3NlcnQoYzJwLl9tYXRjaF9jb3VudF8gPiAwLCBgJHtwYXRofSBpcyBuZXZlciB1c2VkYClcbiAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhjMnApIGFzIFtzdHJpbmcsIGFueV1bXSkge1xuICAgICAgaWYgKHZhbHVlICE9IG51bGwgJiYgdmFsdWUuY29uc3RydWN0b3IubmFtZSA9PSBcIkNvZGUyUGF0dGVyblwiKVxuICAgICAgICB0aGlzLnZhbGlkYXRlTGV2ZWwodmFsdWUsIHBhdGguY29uY2F0KFtrZXldKSlcbiAgICB9XG4gIH1cblxuICB2YWxpZGF0ZSgpIHtcbiAgICB0aGlzLnZhbGlkYXRlTGV2ZWwodGhpcy5jb2RlMnBhdHRlcm4sIFtdKVxuICB9XG5cbiAgcHJpbnRFbnRyeShzZWN0aW9uczogc3RyaW5nLCBlbnRyeTogc3RyaW5nLCBjb2Rlczogc3RyaW5nKSB7XG4gICAgY29uc3QgdGl0bGUgPSBgXFxgJHtlbnRyeX1cXGBfX2BcbiAgICBjb25zb2xlLmxvZyh0aXRsZSlcbiAgICBjb25zdCB1bmRlcmxpbmUgPSBuZXcgQXJyYXkodGl0bGUubGVuZ3RoICsgMSkuam9pbihzZWN0aW9uc1swXSlcbiAgICBjb25zb2xlLmxvZyh1bmRlcmxpbmUpXG4gICAgY29uc29sZS5sb2coY29kZXMpXG4gIH1cblxuICBhZGRBbmNob3JzKGtleTogc3RyaW5nKSB7XG4gICAgaWYgKGtleSBpbiB0aGlzLmFuY2hvcnNQcmludGVkKSByZXR1cm5cbiAgICBpZiAodGhpcy5sZWN0dXJlTWFwcGVyLmhhcyhrZXkpKVxuICAgICAgdGhpcy5sZWN0dXJlTWFwcGVyLm1lcmdlQ29kZXModGhpcy5hbmNob3JzLCBrZXkpXG4gICAgZWxzZSB0aGlzLmFuY2hvcnMuYWRkKGtleSlcbiAgfVxuXG4gIHByaW50QW5jaG9ycyhrZXk6IHN0cmluZykge1xuICAgIGlmIChrZXkgaW4gdGhpcy5hbmNob3JzUHJpbnRlZCkgcmV0dXJuXG4gICAgdGhpcy5hbmNob3JzUHJpbnRlZFtrZXldID0gbnVsbFxuICAgIGlmICh0aGlzLmxlY3R1cmVNYXBwZXIuaGFzKGtleSkpIHRoaXMubGVjdHVyZU1hcHBlci5wcmludEFuY2hvcnMoa2V5KVxuICAgIGVsc2UgY29uc29sZS5sb2coYC4uIF8ke2tleX06YClcbiAgfVxuXG4gIGdldENvZGVzKGtleTogc3RyaW5nLCBzaG9ydENvZGU6IHN0cmluZykge1xuICAgIGlmIChrZXkgaW4gdGhpcy5hbmNob3JzUHJpbnRlZCkgcmV0dXJuIGBjZiBcXFxcKiR7c2hvcnRDb2RlfVxcXFwqYFxuICAgIGlmICh0aGlzLmxlY3R1cmVNYXBwZXIuaGFzKGtleSkpIHJldHVybiB0aGlzLmxlY3R1cmVNYXBwZXIuZ2V0Q29kZXMoa2V5KVxuICAgIGVsc2UgcmV0dXJuIGtleVxuICB9XG5cbiAgcmVuYW1lQ01QKGtleTogc3RyaW5nLCBuYW1lOiBzdHJpbmcpIHtcbiAgICBpZiAoa2V5LnN0YXJ0c1dpdGgoXCJDTVBcIikpIHtcbiAgICAgIGlmIChrZXkuZW5kc1dpdGgoXCItU05cIikpIHJldHVybiBgJHtuYW1lfSAoU8OpbmF0KWBcbiAgICAgIGVsc2UgaWYgKGtleS5lbmRzV2l0aChcIi1BTlwiKSkgcmV0dXJuIGAke25hbWV9IChBc3NlbWJsw6llIE5hdGlvbmFsZSlgXG4gICAgICBlbHNlIHJldHVybiBuYW1lXG4gICAgfSBlbHNlIHJldHVybiBuYW1lXG4gIH1cblxuICBwcmludExldmVsKGFjdGVzOiBhbnksIHNlY3Rpb25zOiBzdHJpbmcsIGMycDogYW55LCBwYXJlbnQ6IGFueSkge1xuICAgIGNvbnN0IGtleXM6IFNldDxzdHJpbmc+ID0gdGhpcy5vcmRlcmVkQ29kZXMoT2JqZWN0LmtleXMoYWN0ZXMpLCBjMnAsIHBhcmVudClcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzKSB7XG4gICAgICBjb25zdCB2YWx1ZSA9IGFjdGVzW2tleV1cbiAgICAgIGxldCBuYW1lID0gQXJyYXkuZnJvbSh2YWx1ZS5uYW1lKS5qb2luKFwiLCBcIilcbiAgICAgIG5hbWUgPSB0aGlzLnJlbmFtZUNNUChrZXksIG5hbWUpXG4gICAgICBjb25zdCBjb2RlcyA9IHRoaXMuZ2V0Q29kZXMoa2V5LCB2YWx1ZS5zaG9ydENvZGUpXG4gICAgICB0aGlzLmFkZEFuY2hvcnMoa2V5KVxuICAgICAgdGhpcy5wcmludEFuY2hvcnMoa2V5KVxuICAgICAgY29uc29sZS5sb2coXCJcIilcbiAgICAgIHRoaXMucHJpbnRFbnRyeShzZWN0aW9ucywgYCR7bmFtZX0gPCR7dmFsdWUuc2hvcnRDb2RlfVRPQ18+YCwgY29kZXMpXG4gICAgICBjb25zb2xlLmxvZyhcIlwiKVxuICAgICAgaWYgKE9iamVjdC5rZXlzKHZhbHVlLmFjdGVzKS5sZW5ndGggPiAwKVxuICAgICAgICB0aGlzLnByaW50TGV2ZWwodmFsdWUuYWN0ZXMsIHNlY3Rpb25zLnN1YnN0cmluZygxKSwgYzJwW2tleV0sIGtleSlcbiAgICB9XG4gIH1cblxuICBwcmludENvZGVzKCkge1xuICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHRoaXMuY29kZXMpKVxuICAgICAgY29uc29sZS5sb2coYC4uIF8ke2tleX1UT0M6IGh0dHA6Ly9gKVxuICB9XG5cbiAgcHJpbnRBbmNob3JzSW5kZXgoKSB7XG4gICAgZm9yIChjb25zdCBjb2RlIG9mIEFycmF5LmZyb20odGhpcy5hbmNob3JzKSlcbiAgICAgIGNvbnNvbGUubG9nKGAqIDpyZWY6XFxgJHtjb2RlfSA8JHtjb2RlfT5cXGBgKVxuICB9XG5cbiAgZ2V0QWdncmVnYXRlZChwcm9jZWR1cmU6IHN0cmluZykge1xuICAgIGlmIChwcm9jZWR1cmUgPT0gXCJQcm9jw6lkdXJlIGzDqWdpc2xhdGl2ZVwiKSB7XG4gICAgICBjb25zdCByZW1hcHBlZCA9IE9iamVjdC5rZXlzKHRoaXMucmVtYXBwZWRQcm9jZWR1cmVzKS5qb2luKFwiLCBcIilcbiAgICAgIHJldHVybiBgIChhZ3LDqWdhdGlvbiBkZSAke3JlbWFwcGVkfSlgXG4gICAgfSBlbHNlIHJldHVybiBcIlwiXG4gIH1cblxuICBwcmludCgpOiB2b2lkIHtcbiAgICB0aGlzLmFuY2hvcnNQcmludGVkID0ge31cbiAgICBmb3IgKGNvbnN0IFtrZXksIGFjdGVzXSBvZiBPYmplY3QuZW50cmllcyh0aGlzLnByb2NlZHVyZXMpIGFzIFtcbiAgICAgIHN0cmluZyxcbiAgICAgIGFueSxcbiAgICBdW10pIHtcbiAgICAgIGNvbnN0IGNvZGUgPSBrZXkucmVwbGFjZSgvICsvZywgXCJfXCIpXG4gICAgICB0aGlzLmNvZGVzW2NvZGVdID0gbnVsbFxuICAgICAgY29uc3QgYWdncmVnYXRlZCA9IHRoaXMuZ2V0QWdncmVnYXRlZChrZXkpXG4gICAgICBjb25zdCB0aXRsZSA9IGBcXGAke2tleX0gPCR7Y29kZX1UT0NfPlxcYF9fJHthZ2dyZWdhdGVkfWBcbiAgICAgIGNvbnNvbGUubG9nKHRpdGxlKVxuICAgICAgY29uc3QgdW5kZXJsaW5lID0gbmV3IEFycmF5KHRpdGxlLmxlbmd0aCArIDEpLmpvaW4oXCI9XCIpXG4gICAgICBjb25zb2xlLmxvZyh1bmRlcmxpbmUpXG4gICAgICB0aGlzLnByaW50TGV2ZWwoYWN0ZXMsIFwiLX4uJ1wiLCB0aGlzLmNvZGUycGF0dGVybltrZXldLCBudWxsKVxuICAgIH1cbiAgICB0aGlzLnByaW50Q29kZXMoKVxuICAgIHRoaXMucHJpbnRBbmNob3JzSW5kZXgoKVxuICB9XG59XG5cbmZ1bmN0aW9uIG1haW4oYXJndjogYW55KTogbnVtYmVyIHtcbiAgY29uc3Qgb3B0aW9ucyA9IHBhcnNlQXJncyhhcmd2KVxuICBpZiAob3B0aW9ucyA9PT0gbnVsbCkgcmV0dXJuIDFcbiAgbGV0IGRvYyA9IG5ldyBBY3Rlc0RvY3VtZW50YXRpb24oXG4gICAgIW9wdGlvbnNbXCJuby1zYW5pdHktY2hlY2tzXCJdLFxuICAgIG9wdGlvbnMudmVyYm9zZSxcbiAgKVxuICBkb2MuY29sbGVjdEZpbGVzKG9wdGlvbnMuZGF0YSlcbiAgZG9jLnByb2Nlc3NGaWxlcyhvcHRpb25zLmRhdGEpXG4gIGRvYy5wcmludCgpXG4gIHJldHVybiAwXG59XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuaWYgKHByb2Nlc3MuYXJndlsxXS5lbmRzV2l0aChcImRvY3VtZW50X2Rvc3NpZXJzX2xlZ2lzbGF0aWZzLnRzXCIpKVxuICBwcm9jZXNzLmV4aXQobWFpbihwcm9jZXNzLmFyZ3YpKVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxJQUFBQSxnQkFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsaUJBQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFFLE9BQUEsR0FBQUgsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFHLGFBQUEsR0FBQUgsT0FBQTtBQUFnRCxJQUFBSSxPQUFBO0FBQUEsU0FBQUwsdUJBQUFNLEdBQUEsV0FBQUEsR0FBQSxJQUFBQSxHQUFBLENBQUFDLFVBQUEsR0FBQUQsR0FBQSxnQkFBQUEsR0FBQTtBQUFBLFNBQUFFLGVBQUFDLEdBQUEsRUFBQUMsQ0FBQSxXQUFBQyxlQUFBLENBQUFGLEdBQUEsS0FBQUcscUJBQUEsQ0FBQUgsR0FBQSxFQUFBQyxDQUFBLEtBQUFHLDJCQUFBLENBQUFKLEdBQUEsRUFBQUMsQ0FBQSxLQUFBSSxnQkFBQTtBQUFBLFNBQUFBLGlCQUFBLGNBQUFDLFNBQUE7QUFBQSxTQUFBSCxzQkFBQUksQ0FBQSxFQUFBQyxDQUFBLFFBQUFDLENBQUEsV0FBQUYsQ0FBQSxnQ0FBQUcsTUFBQSxJQUFBSCxDQUFBLENBQUFHLE1BQUEsQ0FBQUMsUUFBQSxLQUFBSixDQUFBLDRCQUFBRSxDQUFBLFFBQUFHLENBQUEsRUFBQUMsQ0FBQSxFQUFBWixDQUFBLEVBQUFhLENBQUEsRUFBQUMsQ0FBQSxPQUFBQyxDQUFBLE9BQUFDLENBQUEsaUJBQUFoQixDQUFBLElBQUFRLENBQUEsR0FBQUEsQ0FBQSxDQUFBUyxJ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