@secrecy/lib 1.0.0-dev.17 → 1.0.0-dev.20

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.
package/lib/BaseClient.js CHANGED
@@ -2,15 +2,15 @@ import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
2
2
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
3
3
  import _regeneratorRuntime from "@babel/runtime/regenerator";
4
4
 
5
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
5
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
6
6
 
7
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
7
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
8
8
 
9
9
  import { serialize } from "bson";
10
10
  import { getLink } from "@secrecy/lib-utils";
11
11
  import { usersCache } from "./cache.js";
12
12
  import { getStorage } from "./client/storage.js";
13
- import { Selectors } from "./zeus/index.js";
13
+ import { Selector } from "./zeus/index.js";
14
14
  import { createThunder } from "./ZeusThunder.js";
15
15
 
16
16
  function internalToPaymentInfos(p) {
@@ -45,7 +45,7 @@ export function isValidPlan(planCode) {
45
45
  }
46
46
 
47
47
  var getUserSelector = function getUserSelector(userId, withPublicKey) {
48
- var _Selectors$query = Selectors.query({
48
+ var _Selector = Selector("Query")({
49
49
  user: [{
50
50
  userId: userId
51
51
  }, {
@@ -61,7 +61,7 @@ var getUserSelector = function getUserSelector(userId, withPublicKey) {
61
61
  lastLogin: true
62
62
  }]
63
63
  }),
64
- user = _Selectors$query.user;
64
+ user = _Selector.user;
65
65
 
66
66
  return user;
67
67
  };
@@ -72,7 +72,7 @@ function getUser(_x) {
72
72
 
73
73
  function _getUser() {
74
74
  _getUser = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee27(params) {
75
- var selector, _yield$params$client$, user;
75
+ var selector, _yield$params$client, user;
76
76
 
77
77
  return _regeneratorRuntime.wrap(function _callee27$(_context27) {
78
78
  while (1) {
@@ -80,13 +80,13 @@ function _getUser() {
80
80
  case 0:
81
81
  selector = getUserSelector(params.userId, params.withPublicKey);
82
82
  _context27.next = 3;
83
- return params.client.query({
83
+ return params.client("query")({
84
84
  user: selector
85
85
  });
86
86
 
87
87
  case 3:
88
- _yield$params$client$ = _context27.sent;
89
- user = _yield$params$client$.user;
88
+ _yield$params$client = _context27.sent;
89
+ user = _yield$params$client.user;
90
90
 
91
91
  if (user) {
92
92
  _context27.next = 7;
@@ -129,7 +129,7 @@ export var BaseClient = /*#__PURE__*/function () {
129
129
  switch (_context.prev = _context.next) {
130
130
  case 0:
131
131
  _context.next = 2;
132
- return this.client.query({
132
+ return this.client("query")({
133
133
  user: [{}, {
134
134
  sessions: {
135
135
  id: true,
@@ -218,7 +218,7 @@ export var BaseClient = /*#__PURE__*/function () {
218
218
 
219
219
  _context2.prev = 1;
220
220
  _context2.next = 4;
221
- return this.client.mutation({
221
+ return this.client("mutation")({
222
222
  logout: [{
223
223
  sessionId: sessionId
224
224
  }, true]
@@ -350,7 +350,7 @@ export var BaseClient = /*#__PURE__*/function () {
350
350
 
351
351
  _proto.updateProfile = /*#__PURE__*/function () {
352
352
  var _updateProfile = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee6(_ref) {
353
- var firstname, lastname, lang, _yield$this$client$mu, updateProfile;
353
+ var firstname, lastname, lang, _yield$this$client, updateProfile;
354
354
 
355
355
  return _regeneratorRuntime.wrap(function _callee6$(_context6) {
356
356
  while (1) {
@@ -358,7 +358,7 @@ export var BaseClient = /*#__PURE__*/function () {
358
358
  case 0:
359
359
  firstname = _ref.firstname, lastname = _ref.lastname, lang = _ref.lang;
360
360
  _context6.next = 3;
361
- return this.client.mutation({
361
+ return this.client("mutation")({
362
362
  updateProfile: [{
363
363
  firstname: firstname,
364
364
  lastname: lastname,
@@ -377,8 +377,8 @@ export var BaseClient = /*#__PURE__*/function () {
377
377
  });
378
378
 
379
379
  case 3:
380
- _yield$this$client$mu = _context6.sent;
381
- updateProfile = _yield$this$client$mu.updateProfile;
380
+ _yield$this$client = _context6.sent;
381
+ updateProfile = _yield$this$client.updateProfile;
382
382
 
383
383
  if (updateProfile) {
384
384
  _context6.next = 7;
@@ -417,7 +417,7 @@ export var BaseClient = /*#__PURE__*/function () {
417
417
  switch (_context7.prev = _context7.next) {
418
418
  case 0:
419
419
  _context7.next = 2;
420
- return BaseClient._getBaseClient(env, sessionId).query({
420
+ return BaseClient._getBaseClient(env, sessionId)("query")({
421
421
  plans: {
422
422
  kind: true,
423
423
  codes: true,
@@ -473,14 +473,14 @@ export var BaseClient = /*#__PURE__*/function () {
473
473
 
474
474
  _proto.pay = /*#__PURE__*/function () {
475
475
  var _pay = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee8(planCode, input, autoRenew) {
476
- var _yield$this$client$mu2, pay;
476
+ var _yield$this$client2, pay;
477
477
 
478
478
  return _regeneratorRuntime.wrap(function _callee8$(_context8) {
479
479
  while (1) {
480
480
  switch (_context8.prev = _context8.next) {
481
481
  case 0:
482
482
  _context8.next = 2;
483
- return this.client.mutation({
483
+ return this.client("mutation")({
484
484
  pay: [{
485
485
  input: input,
486
486
  planCode: planCode,
@@ -489,8 +489,8 @@ export var BaseClient = /*#__PURE__*/function () {
489
489
  });
490
490
 
491
491
  case 2:
492
- _yield$this$client$mu2 = _context8.sent;
493
- pay = _yield$this$client$mu2.pay;
492
+ _yield$this$client2 = _context8.sent;
493
+ pay = _yield$this$client2.pay;
494
494
  return _context8.abrupt("return", pay != null ? pay : false);
495
495
 
496
496
  case 5:
@@ -510,20 +510,20 @@ export var BaseClient = /*#__PURE__*/function () {
510
510
 
511
511
  _proto.cancelPayment = /*#__PURE__*/function () {
512
512
  var _cancelPayment = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee9() {
513
- var _yield$this$client$mu3, cancelPayment;
513
+ var _yield$this$client3, cancelPayment;
514
514
 
515
515
  return _regeneratorRuntime.wrap(function _callee9$(_context9) {
516
516
  while (1) {
517
517
  switch (_context9.prev = _context9.next) {
518
518
  case 0:
519
519
  _context9.next = 2;
520
- return this.client.mutation({
520
+ return this.client("mutation")({
521
521
  cancelPayment: true
522
522
  });
523
523
 
524
524
  case 2:
525
- _yield$this$client$mu3 = _context9.sent;
526
- cancelPayment = _yield$this$client$mu3.cancelPayment;
525
+ _yield$this$client3 = _context9.sent;
526
+ cancelPayment = _yield$this$client3.cancelPayment;
527
527
  return _context9.abrupt("return", cancelPayment != null ? cancelPayment : false);
528
528
 
529
529
  case 5:
@@ -543,14 +543,14 @@ export var BaseClient = /*#__PURE__*/function () {
543
543
 
544
544
  _proto.paymentInfos = /*#__PURE__*/function () {
545
545
  var _paymentInfos = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee10() {
546
- var _yield$this$client$qu, paymentInfos;
546
+ var _yield$this$client4, paymentInfos;
547
547
 
548
548
  return _regeneratorRuntime.wrap(function _callee10$(_context10) {
549
549
  while (1) {
550
550
  switch (_context10.prev = _context10.next) {
551
551
  case 0:
552
552
  _context10.next = 2;
553
- return this.client.query({
553
+ return this.client("query")({
554
554
  paymentInfos: {
555
555
  hostedUrl: true,
556
556
  currentSubscription: {
@@ -584,8 +584,8 @@ export var BaseClient = /*#__PURE__*/function () {
584
584
  });
585
585
 
586
586
  case 2:
587
- _yield$this$client$qu = _context10.sent;
588
- paymentInfos = _yield$this$client$qu.paymentInfos;
587
+ _yield$this$client4 = _context10.sent;
588
+ paymentInfos = _yield$this$client4.paymentInfos;
589
589
 
590
590
  if (paymentInfos) {
591
591
  _context10.next = 6;
@@ -614,14 +614,14 @@ export var BaseClient = /*#__PURE__*/function () {
614
614
 
615
615
  _proto.limits = /*#__PURE__*/function () {
616
616
  var _limits = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee11() {
617
- var _yield$this$client$qu2, limits, cloud, mail;
617
+ var _yield$this$client5, limits, cloud, mail;
618
618
 
619
619
  return _regeneratorRuntime.wrap(function _callee11$(_context11) {
620
620
  while (1) {
621
621
  switch (_context11.prev = _context11.next) {
622
622
  case 0:
623
623
  _context11.next = 2;
624
- return this.client.query({
624
+ return this.client("query")({
625
625
  limits: {
626
626
  cloud: {
627
627
  size: true,
@@ -651,8 +651,8 @@ export var BaseClient = /*#__PURE__*/function () {
651
651
  });
652
652
 
653
653
  case 2:
654
- _yield$this$client$qu2 = _context11.sent;
655
- limits = _yield$this$client$qu2.limits;
654
+ _yield$this$client5 = _context11.sent;
655
+ limits = _yield$this$client5.limits;
656
656
 
657
657
  if (limits) {
658
658
  _context11.next = 6;
@@ -709,14 +709,14 @@ export var BaseClient = /*#__PURE__*/function () {
709
709
  var _godFatherAndChildren = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee12() {
710
710
  var _user$godFather;
711
711
 
712
- var _yield$this$client$qu3, user;
712
+ var _yield$this$client6, user;
713
713
 
714
714
  return _regeneratorRuntime.wrap(function _callee12$(_context12) {
715
715
  while (1) {
716
716
  switch (_context12.prev = _context12.next) {
717
717
  case 0:
718
718
  _context12.next = 2;
719
- return this.client.query({
719
+ return this.client("query")({
720
720
  user: [{}, {
721
721
  godChildren: {
722
722
  id: true,
@@ -736,8 +736,8 @@ export var BaseClient = /*#__PURE__*/function () {
736
736
  });
737
737
 
738
738
  case 2:
739
- _yield$this$client$qu3 = _context12.sent;
740
- user = _yield$this$client$qu3.user;
739
+ _yield$this$client6 = _context12.sent;
740
+ user = _yield$this$client6.user;
741
741
 
742
742
  if (user) {
743
743
  _context12.next = 6;
@@ -776,7 +776,7 @@ export var BaseClient = /*#__PURE__*/function () {
776
776
  case 0:
777
777
  appCode = _ref2.appCode, config = _ref2.config, env = _ref2.env, sessionId = _ref2.sessionId;
778
778
  _context13.next = 3;
779
- return BaseClient._getBaseClient(env, sessionId).mutation({
779
+ return BaseClient._getBaseClient(env, sessionId)("mutation")({
780
780
  dbConfig: [{
781
781
  appCode: appCode,
782
782
  config: JSON.stringify(config)
@@ -812,7 +812,7 @@ export var BaseClient = /*#__PURE__*/function () {
812
812
  switch (_context14.prev = _context14.next) {
813
813
  case 0:
814
814
  _context14.next = 2;
815
- return BaseClient._getBaseClient(env, sessionId).query({
815
+ return BaseClient._getBaseClient(env, sessionId)("query")({
816
816
  dbConfig: [{
817
817
  appCode: appCode
818
818
  }, true]
@@ -848,7 +848,7 @@ export var BaseClient = /*#__PURE__*/function () {
848
848
  case 0:
849
849
  lang = _ref3.lang, env = _ref3.env, sessionId = _ref3.sessionId;
850
850
  _context15.next = 3;
851
- return BaseClient._getBaseClient(env, sessionId).query({
851
+ return BaseClient._getBaseClient(env, sessionId)("query")({
852
852
  faq: [{
853
853
  lang: lang
854
854
  }, {
@@ -888,7 +888,7 @@ export var BaseClient = /*#__PURE__*/function () {
888
888
  case 0:
889
889
  env = _ref4.env, lang = _ref4.lang, sessionId = _ref4.sessionId;
890
890
  _context16.next = 3;
891
- return BaseClient._getBaseClient(env, sessionId).query({
891
+ return BaseClient._getBaseClient(env, sessionId)("query")({
892
892
  blog: [{
893
893
  lang: lang
894
894
  }, {
@@ -931,14 +931,14 @@ export var BaseClient = /*#__PURE__*/function () {
931
931
 
932
932
  _proto.reportUser = /*#__PURE__*/function () {
933
933
  var _reportUser = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee17(reportedUserId, customMessage) {
934
- var _yield$this$client$mu4, sendReport;
934
+ var _yield$this$client7, sendReport;
935
935
 
936
936
  return _regeneratorRuntime.wrap(function _callee17$(_context17) {
937
937
  while (1) {
938
938
  switch (_context17.prev = _context17.next) {
939
939
  case 0:
940
940
  _context17.next = 2;
941
- return this.client.mutation({
941
+ return this.client("mutation")({
942
942
  sendReport: [{
943
943
  reportedUserId: reportedUserId,
944
944
  customMessage: customMessage
@@ -961,8 +961,8 @@ export var BaseClient = /*#__PURE__*/function () {
961
961
  });
962
962
 
963
963
  case 2:
964
- _yield$this$client$mu4 = _context17.sent;
965
- sendReport = _yield$this$client$mu4.sendReport;
964
+ _yield$this$client7 = _context17.sent;
965
+ sendReport = _yield$this$client7.sendReport;
966
966
  return _context17.abrupt("return", sendReport);
967
967
 
968
968
  case 5:
@@ -990,7 +990,7 @@ export var BaseClient = /*#__PURE__*/function () {
990
990
  case 0:
991
991
  sessionId = _ref5.sessionId, userId = _ref5.userId, env = _ref5.env;
992
992
  _context18.next = 3;
993
- return BaseClient._getBaseClient(env, sessionId).mutation({
993
+ return BaseClient._getBaseClient(env, sessionId)("mutation")({
994
994
  deleteUser: [{
995
995
  userId: userId
996
996
  }, true]
@@ -1018,7 +1018,7 @@ export var BaseClient = /*#__PURE__*/function () {
1018
1018
 
1019
1019
  _proto.dbGet = /*#__PURE__*/function () {
1020
1020
  var _dbGet = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee19(_ref6) {
1021
- var field, userId, _yield$this$client$qu4, dbGet;
1021
+ var field, userId, _yield$this$client8, dbGet;
1022
1022
 
1023
1023
  return _regeneratorRuntime.wrap(function _callee19$(_context19) {
1024
1024
  while (1) {
@@ -1026,7 +1026,7 @@ export var BaseClient = /*#__PURE__*/function () {
1026
1026
  case 0:
1027
1027
  field = _ref6.field, userId = _ref6.userId;
1028
1028
  _context19.next = 3;
1029
- return this.client.query({
1029
+ return this.client("query")({
1030
1030
  dbGet: [{
1031
1031
  field: field,
1032
1032
  userId: userId
@@ -1034,8 +1034,8 @@ export var BaseClient = /*#__PURE__*/function () {
1034
1034
  });
1035
1035
 
1036
1036
  case 3:
1037
- _yield$this$client$qu4 = _context19.sent;
1038
- dbGet = _yield$this$client$qu4.dbGet;
1037
+ _yield$this$client8 = _context19.sent;
1038
+ dbGet = _yield$this$client8.dbGet;
1039
1039
  return _context19.abrupt("return", dbGet.res);
1040
1040
 
1041
1041
  case 6:
@@ -1055,7 +1055,7 @@ export var BaseClient = /*#__PURE__*/function () {
1055
1055
 
1056
1056
  _proto.dbSet = /*#__PURE__*/function () {
1057
1057
  var _dbSet = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee20(_ref7) {
1058
- var value, userId, _yield$this$client$mu5, dbSet;
1058
+ var value, userId, _yield$this$client9, dbSet;
1059
1059
 
1060
1060
  return _regeneratorRuntime.wrap(function _callee20$(_context20) {
1061
1061
  while (1) {
@@ -1072,7 +1072,7 @@ export var BaseClient = /*#__PURE__*/function () {
1072
1072
 
1073
1073
  case 3:
1074
1074
  _context20.next = 5;
1075
- return this.client.mutation({
1075
+ return this.client("mutation")({
1076
1076
  dbSet: [{
1077
1077
  userId: userId,
1078
1078
  value: serialize(value).toString("base64")
@@ -1080,8 +1080,8 @@ export var BaseClient = /*#__PURE__*/function () {
1080
1080
  });
1081
1081
 
1082
1082
  case 5:
1083
- _yield$this$client$mu5 = _context20.sent;
1084
- dbSet = _yield$this$client$mu5.dbSet;
1083
+ _yield$this$client9 = _context20.sent;
1084
+ dbSet = _yield$this$client9.dbSet;
1085
1085
  return _context20.abrupt("return", dbSet.res);
1086
1086
 
1087
1087
  case 8:
@@ -1101,7 +1101,7 @@ export var BaseClient = /*#__PURE__*/function () {
1101
1101
 
1102
1102
  _proto.dbSearch = /*#__PURE__*/function () {
1103
1103
  var _dbSearch = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee21(_ref8) {
1104
- var search, field, _yield$this$client$qu5, dbSearch;
1104
+ var search, field, _yield$this$client10, dbSearch;
1105
1105
 
1106
1106
  return _regeneratorRuntime.wrap(function _callee21$(_context21) {
1107
1107
  while (1) {
@@ -1109,7 +1109,7 @@ export var BaseClient = /*#__PURE__*/function () {
1109
1109
  case 0:
1110
1110
  search = _ref8.search, field = _ref8.field;
1111
1111
  _context21.next = 3;
1112
- return this.client.query({
1112
+ return this.client("query")({
1113
1113
  dbSearch: [{
1114
1114
  search: search,
1115
1115
  field: field
@@ -1117,8 +1117,8 @@ export var BaseClient = /*#__PURE__*/function () {
1117
1117
  });
1118
1118
 
1119
1119
  case 3:
1120
- _yield$this$client$qu5 = _context21.sent;
1121
- dbSearch = _yield$this$client$qu5.dbSearch;
1120
+ _yield$this$client10 = _context21.sent;
1121
+ dbSearch = _yield$this$client10.dbSearch;
1122
1122
  return _context21.abrupt("return", dbSearch);
1123
1123
 
1124
1124
  case 6:
@@ -1138,7 +1138,7 @@ export var BaseClient = /*#__PURE__*/function () {
1138
1138
 
1139
1139
  _proto.deleteFolder = /*#__PURE__*/function () {
1140
1140
  var _deleteFolder = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee22(_ref9) {
1141
- var id, _yield$this$client$mu6, deleteFolder;
1141
+ var id, _yield$this$client11, deleteFolder;
1142
1142
 
1143
1143
  return _regeneratorRuntime.wrap(function _callee22$(_context22) {
1144
1144
  while (1) {
@@ -1146,15 +1146,15 @@ export var BaseClient = /*#__PURE__*/function () {
1146
1146
  case 0:
1147
1147
  id = _ref9.id;
1148
1148
  _context22.next = 3;
1149
- return this.client.mutation({
1149
+ return this.client("mutation")({
1150
1150
  deleteFolder: [{
1151
1151
  id: id
1152
1152
  }, true]
1153
1153
  });
1154
1154
 
1155
1155
  case 3:
1156
- _yield$this$client$mu6 = _context22.sent;
1157
- deleteFolder = _yield$this$client$mu6.deleteFolder;
1156
+ _yield$this$client11 = _context22.sent;
1157
+ deleteFolder = _yield$this$client11.deleteFolder;
1158
1158
  return _context22.abrupt("return", deleteFolder != null ? deleteFolder : false);
1159
1159
 
1160
1160
  case 6:
@@ -1174,7 +1174,7 @@ export var BaseClient = /*#__PURE__*/function () {
1174
1174
 
1175
1175
  _proto.moveFolders = /*#__PURE__*/function () {
1176
1176
  var _moveFolders = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee23(_ref10) {
1177
- var foldersId, parentFolderId, _yield$this$client$mu7, moveFolders;
1177
+ var foldersId, parentFolderId, _yield$this$client12, moveFolders;
1178
1178
 
1179
1179
  return _regeneratorRuntime.wrap(function _callee23$(_context23) {
1180
1180
  while (1) {
@@ -1182,7 +1182,7 @@ export var BaseClient = /*#__PURE__*/function () {
1182
1182
  case 0:
1183
1183
  foldersId = _ref10.foldersId, parentFolderId = _ref10.parentFolderId;
1184
1184
  _context23.next = 3;
1185
- return this.client.mutation({
1185
+ return this.client("mutation")({
1186
1186
  moveFolders: [{
1187
1187
  foldersId: foldersId,
1188
1188
  parentFolderId: parentFolderId
@@ -1190,8 +1190,8 @@ export var BaseClient = /*#__PURE__*/function () {
1190
1190
  });
1191
1191
 
1192
1192
  case 3:
1193
- _yield$this$client$mu7 = _context23.sent;
1194
- moveFolders = _yield$this$client$mu7.moveFolders;
1193
+ _yield$this$client12 = _context23.sent;
1194
+ moveFolders = _yield$this$client12.moveFolders;
1195
1195
  return _context23.abrupt("return", moveFolders != null ? moveFolders : false);
1196
1196
 
1197
1197
  case 6:
@@ -1211,7 +1211,7 @@ export var BaseClient = /*#__PURE__*/function () {
1211
1211
 
1212
1212
  _proto.moveFiles = /*#__PURE__*/function () {
1213
1213
  var _moveFiles = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee24(_ref11) {
1214
- var filesId, parentFolderId, _yield$this$client$mu8, moveFiles;
1214
+ var filesId, parentFolderId, _yield$this$client13, moveFiles;
1215
1215
 
1216
1216
  return _regeneratorRuntime.wrap(function _callee24$(_context24) {
1217
1217
  while (1) {
@@ -1219,7 +1219,7 @@ export var BaseClient = /*#__PURE__*/function () {
1219
1219
  case 0:
1220
1220
  filesId = _ref11.filesId, parentFolderId = _ref11.parentFolderId;
1221
1221
  _context24.next = 3;
1222
- return this.client.mutation({
1222
+ return this.client("mutation")({
1223
1223
  moveFiles: [{
1224
1224
  filesId: filesId,
1225
1225
  parentFolderId: parentFolderId
@@ -1227,8 +1227,8 @@ export var BaseClient = /*#__PURE__*/function () {
1227
1227
  });
1228
1228
 
1229
1229
  case 3:
1230
- _yield$this$client$mu8 = _context24.sent;
1231
- moveFiles = _yield$this$client$mu8.moveFiles;
1230
+ _yield$this$client13 = _context24.sent;
1231
+ moveFiles = _yield$this$client13.moveFiles;
1232
1232
  return _context24.abrupt("return", moveFiles != null ? moveFiles : false);
1233
1233
 
1234
1234
  case 6:
@@ -1248,7 +1248,7 @@ export var BaseClient = /*#__PURE__*/function () {
1248
1248
 
1249
1249
  _proto.folderSize = /*#__PURE__*/function () {
1250
1250
  var _folderSize = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee25(_ref12) {
1251
- var folderId, _yield$this$client$qu6, folderSize;
1251
+ var folderId, _yield$this$client14, folderSize;
1252
1252
 
1253
1253
  return _regeneratorRuntime.wrap(function _callee25$(_context25) {
1254
1254
  while (1) {
@@ -1256,7 +1256,7 @@ export var BaseClient = /*#__PURE__*/function () {
1256
1256
  case 0:
1257
1257
  folderId = _ref12.folderId;
1258
1258
  _context25.next = 3;
1259
- return this.client.query({
1259
+ return this.client("query")({
1260
1260
  folderSize: [{
1261
1261
  folderId: folderId
1262
1262
  }, {
@@ -1266,8 +1266,8 @@ export var BaseClient = /*#__PURE__*/function () {
1266
1266
  });
1267
1267
 
1268
1268
  case 3:
1269
- _yield$this$client$qu6 = _context25.sent;
1270
- folderSize = _yield$this$client$qu6.folderSize;
1269
+ _yield$this$client14 = _context25.sent;
1270
+ folderSize = _yield$this$client14.folderSize;
1271
1271
 
1272
1272
  if (folderSize) {
1273
1273
  _context25.next = 7;
@@ -1373,4 +1373,4 @@ BaseClient.getBaseUrl = function (env, graphcdn) {
1373
1373
  BaseClient._getBaseClient = function (env, session) {
1374
1374
  return createThunder(BaseClient.getBaseUrl(env), session);
1375
1375
  };
1376
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9CYXNlQ2xpZW50LnRzIl0sIm5hbWVzIjpbInNlcmlhbGl6ZSIsImdldExpbmsiLCJ1c2Vyc0NhY2hlIiwiZ2V0U3RvcmFnZSIsIlNlbGVjdG9ycyIsImNyZWF0ZVRodW5kZXIiLCJpbnRlcm5hbFRvUGF5bWVudEluZm9zIiwicCIsImN1cnJlbnRTdWJzY3JpcHRpb24iLCJzdGF0ZSIsImNvbGxlY3Rpb25NZXRob2QiLCJhY3RpdmF0ZWRBdCIsIkRhdGUiLCJjcmVhdGVkQXQiLCJ1cGRhdGVkQXQiLCJ0cmlhbEVuZHNBdCIsInRyaWFsU3RhcnRlZEF0IiwicGF1c2VkQXQiLCJjdXJyZW50UGVyaW9kRW5kc0F0IiwiY3VycmVudFBlcmlvZFN0YXJ0ZWRBdCIsImNhbmNlbGVkQXQiLCJleHBpcmVzQXQiLCJpbnZvaWNlcyIsIm1hcCIsImkiLCJkYXRlIiwiZHVlIiwic3RhdHVzIiwicGxhbnNDb2RlcyIsImlzVmFsaWRQbGFuIiwicGxhbkNvZGUiLCJpbmNsdWRlcyIsImdldFVzZXJTZWxlY3RvciIsInVzZXJJZCIsIndpdGhQdWJsaWNLZXkiLCJxdWVyeSIsInVzZXIiLCJpZCIsImZpcnN0bmFtZSIsImxhc3RuYW1lIiwibGFuZyIsInB1YmxpY0tleSIsInVuZGVmaW5lZCIsImVtYWlsIiwicGhvbmUiLCJyb2xlIiwiZGVsZXRlZEF0IiwibGFzdExvZ2luIiwiZ2V0VXNlciIsInBhcmFtcyIsInNlbGVjdG9yIiwiY2xpZW50IiwiQmFzZUNsaWVudCIsInNlc3Npb24iLCJlbnYiLCJzZXNzaW9uSWQiLCJfZ2V0QmFzZUNsaWVudCIsInNlc3Npb25zIiwibGFzdEFjdGl2aXR5IiwidXNlckFnZW50IiwiaXAiLCJjaXR5IiwiY291bnRyeSIsImFwcFNlc3Npb25zIiwidXNlckFwcCIsImFwcCIsIm5hbWUiLCJkYXRhIiwicyIsImEiLCJsb2dvdXQiLCJsb2NhbCIsImp3dCIsImNsZWFyIiwidXNlckFwcEtleXMiLCJ1c2VyQXBwU2Vzc2lvbiIsIm11dGF0aW9uIiwibWUiLCJzZXQiLCJ1cGRhdGVQcm9maWxlIiwiRXJyb3IiLCJwbGFucyIsImtpbmQiLCJjb2RlcyIsImxpbWl0cyIsImRvd25sb2FkQmFuZHdpZHRoIiwiZG93bmxvYWRDb3VudCIsImhhcmRGaWxlQ291bnQiLCJoYXJkRmlsZVNpemUiLCJwZXJGaWxlU2l6ZSIsInVwbG9hZEJhbmR3aWR0aCIsInVwbG9hZENvdW50IiwicmVjZWl2ZWRNYWlscyIsImNvdW50IiwiZmlsZUNvdW50IiwiZmlsZVNpemUiLCJoYXJkQ291bnQiLCJzZW50TWFpbHMiLCJwYXkiLCJpbnB1dCIsImF1dG9SZW5ldyIsImNhbmNlbFBheW1lbnQiLCJwYXltZW50SW5mb3MiLCJob3N0ZWRVcmwiLCJhdXRvcmVuZXciLCJwbGFuIiwidG90YWwiLCJwZGYiLCJjdXJyZW5jeSIsImNsb3VkIiwic2l6ZSIsIm1heFNpemUiLCJtYXhDb3VudCIsIm1haWwiLCJyZWNlaXZlZCIsIm1heEZpbGVDb3VudCIsIm1heEZpbGVTaXplIiwic2VudCIsIkJpZ0ludCIsImdvZEZhdGhlckFuZENoaWxkcmVuIiwiZ29kQ2hpbGRyZW4iLCJnb2RGYXRoZXIiLCJ1cGRhdGVBcHBEQkNvbmZpZyIsImFwcENvZGUiLCJjb25maWciLCJkYkNvbmZpZyIsIkpTT04iLCJzdHJpbmdpZnkiLCJnZXRBcHBEQkNvbmZpZyIsImdldEZBUSIsImZhcSIsImFuc3dlciIsIm9yZGVyIiwicXVlc3Rpb24iLCJnZXRCbG9nIiwiYmxvZyIsImJsb2dJZCIsImF1dGhvciIsImJvZHkiLCJpbWFnZSIsImltYWdlQWx0Iiwic3VtbWFyeSIsInRpdGxlIiwiYiIsInJlcG9ydFVzZXIiLCJyZXBvcnRlZFVzZXJJZCIsImN1c3RvbU1lc3NhZ2UiLCJzZW5kUmVwb3J0IiwicmVwb3J0ZWRVc2VyIiwiZGVsZXRlVXNlciIsImRiR2V0IiwiZmllbGQiLCJyZXMiLCJkYlNldCIsInZhbHVlIiwidG9TdHJpbmciLCJkYlNlYXJjaCIsInNlYXJjaCIsImRlbGV0ZUZvbGRlciIsIm1vdmVGb2xkZXJzIiwiZm9sZGVyc0lkIiwicGFyZW50Rm9sZGVySWQiLCJtb3ZlRmlsZXMiLCJmaWxlc0lkIiwiZm9sZGVyU2l6ZSIsImZvbGRlcklkIiwic2l6ZUJlZm9yZSIsImdldFNwb25zb3JzaGlwTGluayIsImJhY2tVcmwiLCJwYXRoIiwiYnRvYSIsImdldEJhc2VVcmwiLCJncmFwaGNkbiIsInByb2Nlc3MiLCJOT0RFX0VOViJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFFQSxTQUFTQSxTQUFULFFBQTBCLE1BQTFCO0FBQ0EsU0FBU0MsT0FBVCxRQUF3QixvQkFBeEI7QUFDQSxTQUFTQyxVQUFULFFBQTJCLFlBQTNCO0FBR0EsU0FBU0MsVUFBVCxRQUEyQixxQkFBM0I7QUFRQSxTQUFTQyxTQUFULFFBQTBCLGlCQUExQjtBQUNBLFNBQVNDLGFBQVQsUUFBOEIsa0JBQTlCOztBQXlLQSxTQUFTQyxzQkFBVCxDQUFnQ0MsQ0FBaEMsRUFBdUU7QUFDckUseUNBQ0tBLENBREw7QUFFRUMsSUFBQUEsbUJBQW1CLGtDQUNkRCxDQUFDLENBQUNDLG1CQURZO0FBRWpCQyxNQUFBQSxLQUFLLEVBQUVGLENBQUMsQ0FBQ0MsbUJBQUYsQ0FBc0JDLEtBRlo7QUFHakJDLE1BQUFBLGdCQUFnQixFQUFFSCxDQUFDLENBQUNDLG1CQUFGLENBQ2ZFLGdCQUpjO0FBS2pCQyxNQUFBQSxXQUFXLEVBQUVKLENBQUMsQ0FBQ0MsbUJBQUYsQ0FBc0JHLFdBQXRCLEdBQ1QsSUFBSUMsSUFBSixDQUFTTCxDQUFDLENBQUNDLG1CQUFGLENBQXNCRyxXQUEvQixDQURTLEdBRVQsSUFQYTtBQVFqQkUsTUFBQUEsU0FBUyxFQUFFTixDQUFDLENBQUNDLG1CQUFGLENBQXNCSyxTQUF0QixHQUNQLElBQUlELElBQUosQ0FBU0wsQ0FBQyxDQUFDQyxtQkFBRixDQUFzQkssU0FBL0IsQ0FETyxHQUVQLElBVmE7QUFXakJDLE1BQUFBLFNBQVMsRUFBRVAsQ0FBQyxDQUFDQyxtQkFBRixDQUFzQk0sU0FBdEIsR0FDUCxJQUFJ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QSxNQURYc0gsUUFDVztBQURYQSxJQUFBQSxRQUNXLEdBREEsSUFDQTtBQUFBOztBQUNYLE1BQUlDLE9BQU8sQ0FBQ3ZILEdBQVIsQ0FBWXdILFFBQVosS0FBeUIsTUFBN0IsRUFBcUM7QUFDbkMsV0FBTywrQkFBUDtBQUNEOztBQUVELFVBQVF4SCxHQUFSO0FBQ0UsU0FBSyxNQUFMO0FBQ0UsYUFBT3NILFFBQVEsR0FDWCw4QkFEVyxHQUVYLGdDQUZKOztBQUdGLFNBQUssU0FBTDtBQUNFLGFBQU8sd0NBQVA7O0FBQ0YsU0FBSyxLQUFMO0FBQ0E7QUFDRSxhQUFPLG9DQUFQO0FBVEo7QUFXRCxDOztBQXBCVXhILFUsQ0FzQmFJLGMsR0FBaUIsVUFDdkNGLEdBRHVDLEVBRXZDRCxPQUZ1QztBQUFBLFNBSXZDaEQsYUFBYSxDQUFDK0MsVUFBVSxDQUFDdUgsVUFBWCxDQUFzQnJILEdBQXRCLENBQUQsRUFBNkJELE9BQTdCLENBSjBCO0FBQUEsQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRG93bmxvYWRQcm9ncmVzcyBhcyBETFByb2dyZXNzIH0gZnJvbSBcImt5XCI7XG5pbXBvcnQgdHlwZSB7IERvY3VtZW50IH0gZnJvbSBcImJzb25cIjtcbmltcG9ydCB7IHNlcmlhbGl6ZSB9IGZyb20gXCJic29uXCI7XG5pbXBvcnQgeyBnZXRMaW5rIH0gZnJvbSBcIkBzZWNyZWN5L2xpYi11dGlsc1wiO1xuaW1wb3J0IHsgdXNlcnNDYWNoZSB9IGZyb20gXCIuL2NhY2hlLmpzXCI7XG5pbXBvcnQgdHlwZSB7IFVzZXJTZXNzaW9uIH0gZnJvbSBcIi4vY2xpZW50L3R5cGVzL2luZGV4LmpzXCI7XG5pbXBvcnQgdHlwZSB7IFNlY3JlY3lFbnYgfSBmcm9tIFwiLi9jbGllbnQvaGVscGVycy5qc1wiO1xuaW1wb3J0IHsgZ2V0U3RvcmFnZSB9IGZyb20gXCIuL2NsaWVudC9zdG9yYWdlLmpzXCI7XG5pbXBvcnQgdHlwZSB7XG4gIExhbmcsXG4gIFBheUlucHV0VHlwZSxcbiAgUGxhbktpbmQsXG4gIFRodW5kZXIsXG4gIFVzZXJSb2xlXG59IGZyb20gXCIuL3pldXMvaW5kZXguanNcIjtcbmltcG9ydCB7IFNlbGVjdG9ycyB9IGZyb20gXCIuL3pldXMvaW5kZXguanNcIjtcbmltcG9ydCB7IGNyZWF0ZVRodW5kZXIgfSBmcm9tIFwiLi9aZXVzVGh1bmRlci5qc1wiO1xuXG5leHBvcnQgdHlwZSBEb3dubG9hZFByb2dyZXNzID0gRExQcm9ncmVzcztcblxuZXhwb3J0IHR5cGUgUGF5SW5wdXQgPSB7XG4gIHR5cGU6IFBheUlucHV0VHlwZTtcbiAgdG9rZW46IHN0cmluZztcbiAgZmlyc3ROYW1lOiBzdHJpbmc7XG4gIGxhc3ROYW1lOiBzdHJpbmc7XG4gIHN0cmVldDogc3RyaW5nO1xuICBwb3N0YWxDb2RlOiBzdHJpbmc7XG4gIGNpdHk6IHN0cmluZztcbiAgY291bnRyeTogc3RyaW5nO1xuICBtb250aDogc3RyaW5nO1xuICB5ZWFyOiBzdHJpbmc7XG4gIGN2djogc3RyaW5nO1xuICBudW1iZXI6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIE1haWxMaW1pdHMgPSB7XG4gIGNvdW50Pzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBmaWxlQ291bnQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGZpbGVTaXplPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBoYXJkQ291bnQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGhhcmRGaWxlQ291bnQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGhhcmRGaWxlU2l6ZT86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcGVyRmlsZVNpemU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59O1xuXG5leHBvcnQgdHlwZSBMaW1pdHMgPSB7XG4gIGRvd25sb2FkQmFuZHdpZHRoPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBkb3dubG9hZENvdW50Pzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBoYXJkRmlsZUNvdW50Pzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBoYXJkRmlsZVNpemU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHBlckZpbGVTaXplPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICByZWNlaXZlZE1haWxzOiBNYWlsTGltaXRzO1xuICBzZW50TWFpbHM6IE1haWxMaW1pdHM7XG4gIHVwbG9hZEJhbmR3aWR0aD86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgdXBsb2FkQ291bnQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59O1xuXG5leHBvcnQgdHlwZSBHb2RVc2VyID0ge1xuICBpZDogc3RyaW5nO1xuICBmaXJzdG5hbWU6IHN0cmluZztcbiAgbGFzdG5hbWU6IHN0cmluZztcbiAgZW1haWw6IHN0cmluZztcbiAgcGhvbmU6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIEdvZEZhdGhlckFuZENoaWxkcmVuID0ge1xuICBnb2RGYXRoZXI6IEdvZFVzZXIgfCBudWxsO1xuICBnb2RDaGlsZHJlbjogR29kVXNlcltdO1xufTtcblxuZXhwb3J0IHR5cGUgUGxhbiA9IHtcbiAgY29kZXM6IHN0cmluZ1tdO1xuICBraW5kOiBQbGFuS2luZDtcbiAgbGltaXRzOiBMaW1pdHM7XG59O1xuXG5leHBvcnQgdHlwZSBTdWJzY3JpcHRpb25TdGF0ZSA9XG4gIHwgXCJhY3RpdmVcIlxuICB8IFwiY2FuY2VsZWRcIlxuICB8IFwicGF1c2VkXCJcbiAgfCBcImV4cGlyZWRcIlxuICB8IFwiZnV0dXJlXCJcbiAgfCBcImluX3RyaWFsXCJcbiAgfCBcImxpdmVcIlxuICB8IFwicGFzdF9kdWVcIjtcblxuZXhwb3J0IHR5cGUgU3Vic2NyaXB0aW9uQ29sbGVjdGlvbk1ldGhvZCA9IFwiYXV0b21hdGljXCIgfCBcIm1hbnVhbFwiO1xuXG50eXBlIEludGVybmFsU3Vic2NyaXB0aW9uID0ge1xuICBhdXRvcmVuZXc6IGJvb2xlYW47XG4gIGFjdGl2YXRlZEF0Pzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgY3VycmVudFBlcmlvZEVuZHNBdD86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIGN1cnJlbnRQZXJpb2RTdGFydGVkQXQ/OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xuICBjYW5jZWxlZEF0Pzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgY3JlYXRlZEF0Pzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgZXhwaXJlc0F0Pzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgcGF1c2VkQXQ/OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xuICB0cmlhbEVuZHNBdD86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIHRyaWFsU3RhcnRlZEF0Pzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgdXBkYXRlZEF0Pzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgY29sbGVjdGlvbk1ldGhvZDogc3RyaW5nO1xuICBzdGF0ZTogc3RyaW5nO1xuICBwbGFuPzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgcGxhbkNvZGU/OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xuICB0b3RhbD86IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWQ7XG59O1xuXG50eXBlIFJlY3VybHlJbnZvaWNlU3RhdHVzID1cbiAgfCBcInBlbmRpbmdcIlxuICB8IFwicGFpZFwiXG4gIHwgXCJmYWlsZWRcIlxuICB8IFwicGFzdF9kdWVcIlxuICB8IFwib3BlblwiXG4gIHwgXCJjbG9zZWRcIlxuICB8IFwidm9pZGVkXCJcbiAgfCBcInByb2Nlc3NpbmdcIjtcblxudHlwZSBJbnRlcm5hbFJlY3VybHlJbnZvaWNlcyA9IHtcbiAgcGRmOiBzdHJpbmc7XG4gIGRhdGU6IHN0cmluZztcbiAgZHVlOiBzdHJpbmc7XG4gIHN0YXR1czogc3RyaW5nO1xuICB0b3RhbDogbnVtYmVyO1xuICBuYW1lOiBzdHJpbmc7XG4gIGN1cnJlbmN5OiBzdHJpbmc7XG59O1xuXG50eXBlIEludGVybmFsUGF5bWVudEluZm9zID0ge1xuICBob3N0ZWRVcmw6IHN0cmluZztcbiAgY3VycmVudFN1YnNjcmlwdGlvbjogSW50ZXJuYWxTdWJzY3JpcHRpb247XG4gIGludm9pY2VzOiBJbnRlcm5hbFJlY3VybHlJbnZvaWNlc1tdO1xufTtcblxuZXhwb3J0IHR5cGUgU3Vic2NyaXB0aW9uID0ge1xuICBhdXRvcmVuZXc6IGJvb2xlYW47XG4gIGFjdGl2YXRlZEF0PzogRGF0ZSB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIGN1cnJlbnRQZXJpb2RFbmRzQXQ/OiBEYXRlIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgY3VycmVudFBlcmlvZFN0YXJ0ZWRBdD86IERhdGUgfCBudWxsIHwgdW5kZWZpbmVkO1xuICBjYW5jZWxlZEF0PzogRGF0ZSB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIGNyZWF0ZWRBdD86IERhdGUgfCBudWxsIHwgdW5kZWZpbmVkO1xuICBleHBpcmVzQXQ/OiBEYXRlIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgcGF1c2VkQXQ/OiBEYXRlIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgdHJpYWxFbmRzQXQ/OiBEYXRlIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgdHJpYWxTdGFydGVkQXQ/OiBEYXRlIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgdXBkYXRlZEF0PzogRGF0ZSB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIGNvbGxlY3Rpb25NZXRob2Q6IFN1YnNjcmlwdGlvbkNvbGxlY3Rpb25NZXRob2Q7XG4gIHN0YXRlOiBTdWJzY3JpcHRpb25TdGF0ZTtcbiAgcGxhbj86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIHBsYW5Db2RlPzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgdG90YWw/OiBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkO1xufTtcblxuZXhwb3J0IHR5cGUgUmVjdXJseUludm9pY2VzID0ge1xuICBwZGY6IHN0cmluZztcbiAgZGF0ZTogRGF0ZTtcbiAgZHVlOiBEYXRlO1xuICBzdGF0dXM6IFJlY3VybHlJbnZvaWNlU3RhdHVzO1xuICB0b3RhbDogbnVtYmVyO1xuICBuYW1lOiBzdHJpbmc7XG4gIGN1cnJlbmN5OiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBQYXltZW50SW5mb3MgPSB7XG4gIGhvc3RlZFVybDogc3RyaW5nO1xuICBjdXJyZW50U3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIGludm9pY2VzOiBSZWN1cmx5SW52b2ljZXNbXTtcbn07XG5cbmV4cG9ydCB0eXBlIFNlbmRSZXBvcnQgPSB7XG4gIGlkOiBzdHJpbmc7XG4gIHVzZXI6IHtcbiAgICBpZDogc3RyaW5nO1xuICAgIGZpcnN0bmFtZTogc3RyaW5nO1xuICAgIGxhc3RuYW1lOiBzdHJpbmc7XG4gICAgZW1haWw6IHN0cmluZztcbiAgfTtcbiAgcmVwb3J0ZWRVc2VyOiB7XG4gICAgaWQ6IHN0cmluZztcbiAgICBmaXJzdG5hbWU6IHN0cmluZztcbiAgICBsYXN0bmFtZTogc3RyaW5nO1xuICAgIGVtYWlsOiBzdHJpbmc7XG4gIH07XG4gIGN1c3RvbU1lc3NhZ2U/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59O1xuXG5mdW5jdGlvbiBpbnRlcm5hbFRvUGF5bWVudEluZm9zKHA6IEludGVybmFsUGF5bWVudEluZm9zKTogUGF5bWVudEluZm9zIHtcbiAgcmV0dXJuIHtcbiAgICAuLi5wLFxuICAgIGN1cnJlbnRTdWJzY3JpcHRpb246IHtcbiAgICAgIC4uLnAuY3VycmVudFN1YnNjcmlwdGlvbixcbiAgICAgIHN0YXRlOiBwLmN1cnJlbnRTdWJzY3JpcHRpb24uc3RhdGUgYXMgU3Vic2NyaXB0aW9uU3RhdGUsXG4gICAgICBjb2xsZWN0aW9uTWV0aG9kOiBwLmN1cnJlbnRTdWJzY3JpcHRpb25cbiAgICAgICAgLmNvbGxlY3Rpb25NZXRob2QgYXMgU3Vic2NyaXB0aW9uQ29sbGVjdGlvbk1ldGhvZCxcbiAgICAgIGFjdGl2YXRlZEF0OiBwLmN1cnJlbnRTdWJzY3JpcHRpb24uYWN0aXZhdGVkQXRcbiAgICAgICAgPyBuZXcgRGF0ZShwLmN1cnJlbnRTdWJzY3JpcHRpb24uYWN0aXZhdGVkQXQpXG4gICAgICAgIDogbnVsbCxcbiAgICAgIGNyZWF0ZWRBdDogcC5jdXJyZW50U3Vic2NyaXB0aW9uLmNyZWF0ZWRBdFxuICAgICAgICA/IG5ldyBEYXRlKHAuY3VycmVudFN1YnNjcmlwdGlvbi5jcmVhdGVkQXQpXG4gICAgICAgIDogbnVsbCxcbiAgICAgIHVwZGF0ZWRBdDogcC5jdXJyZW50U3Vic2NyaXB0aW9uLnVwZGF0ZWRBdFxuICAgICAgICA/IG5ldyBEYXRlKHAuY3VycmVudFN1YnNjcmlwdGlvbi51cGRhdGVkQXQpXG4gICAgICAgIDogbnVsbCxcbiAgICAgIHRyaWFsRW5kc0F0OiBwLmN1cnJlbnRTdWJzY3JpcHRpb24udHJpYWxFbmRzQXRcbiAgICAgICAgPyBuZXcgRGF0ZShwLmN1cnJlbnRTdWJzY3JpcHRpb24udHJpYWxFbmRzQXQpXG4gICAgICAgIDogbnVsbCxcbiAgICAgIHRyaWFsU3RhcnRlZEF0OiBwLmN1cnJlbnRTdWJzY3JpcHRpb24udHJpYWxTdGFydGVkQXRcbiAgICAgICAgPyBuZXcgRGF0ZShwLmN1cnJlbnRTdWJzY3JpcHRpb24udHJpYWxTdGFydGVkQXQpXG4gICAgICAgIDogbnVsbCxcbiAgICAgIHBhdXNlZEF0OiBwLmN1cnJlbnRTdWJzY3JpcHRpb24ucGF1c2VkQXRcbiAgICAgICAgPyBuZXcgRGF0ZShwLmN1cnJlbnRTdWJzY3JpcHRpb24ucGF1c2VkQXQpXG4gICAgICAgIDogbnVsbCxcbiAgICAgIGN1cnJlbnRQZXJpb2RFbmRzQXQ6IHAuY3VycmVudFN1YnNjcmlwdGlvbi5jdXJyZW50UGVyaW9kRW5kc0F0XG4gICAgICAgID8gbmV3IERhdGUocC5jdXJyZW50U3Vic2NyaXB0aW9uLmN1cnJlbnRQZXJpb2RFbmRzQXQpXG4gICAgICAgIDogbnVsbCxcbiAgICAgIGN1cnJlbnRQZXJpb2RTdGFydGVkQXQ6IHAuY3VycmVudFN1YnNjcmlwdGlvbi5jdXJyZW50UGVyaW9kU3RhcnRlZEF0XG4gICAgICAgID8gbmV3IERhdGUocC5jdXJyZW50U3Vic2NyaXB0aW9uLmN1cnJlbnRQZXJpb2RTdGFydGVkQXQpXG4gICAgICAgIDogbnVsbCxcbiAgICAgIGNhbmNlbGVkQXQ6IHAuY3VycmVudFN1YnNjcmlwdGlvbi5jYW5jZWxlZEF0XG4gICAgICAgID8gbmV3IERhdGUocC5jdXJyZW50U3Vic2NyaXB0aW9uLmNhbmNlbGVkQXQpXG4gICAgICAgIDogbnVsbCxcbiAgICAgIGV4cGlyZXNBdDogcC5jdXJyZW50U3Vic2NyaXB0aW9uLmV4cGlyZXNBdFxuICAgICAgICA/IG5ldyBEYXRlKHAuY3VycmVudFN1YnNjcmlwdGlvbi5leHBpcmVzQXQpXG4gICAgICAgIDogbnVsbFxuICAgIH0sXG4gICAgaW52b2ljZXM6IHAuaW52b2ljZXMubWFwKGkgPT4gKHtcbiAgICAgIC4uLmksXG4gICAgICBkYXRlOiBuZXcgRGF0ZShpLmRhdGUpLFxuICAgICAgZHVlOiBuZXcgRGF0ZShpLmR1ZSksXG4gICAgICBzdGF0dXM6IGkuc3RhdHVzIGFzIFJlY3VybHlJbnZvaWNlU3RhdHVzXG4gICAgfSkpXG4gIH07XG59XG5cbmNvbnN0IHBsYW5zQ29kZXMgPSBbXG4gIFwiYmFzaWNfbW9udGhcIixcbiAgXCJhZHZhbmNlZF9tb250aFwiLFxuICBcInByb19tb250aFwiLFxuICBcImJhc2ljX3llYXJcIixcbiAgXCJhZHZhbmNlZF95ZWFyXCIsXG4gIFwicHJvX3llYXJcIlxuXSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgU2VjcmVjeVBsYW5zQ29kZXMgPSB0eXBlb2YgcGxhbnNDb2Rlc1tudW1iZXJdO1xuXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZFBsYW4ocGxhbkNvZGU6IHN0cmluZyk6IHBsYW5Db2RlIGlzIFNlY3JlY3lQbGFuc0NvZGVzIHtcbiAgcmV0dXJuIHBsYW5zQ29kZXMuaW5jbHVkZXMocGxhbkNvZGUgYXMgU2VjcmVjeVBsYW5zQ29kZXMpO1xufVxuXG5leHBvcnQgdHlwZSBVc2VyRGF0YTxcbiAgVCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0gUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbj4gPSB7XG4gIGlzU3VwZXJ1c2VyOiBib29sZWFuO1xuICBpc1NlYXJjaGFibGU6IGJvb2xlYW47XG59ICYgVDtcblxuZXhwb3J0IHR5cGUgRm9sZGVyU2l6ZSA9IHsgc2l6ZTogYmlnaW50OyBzaXplQmVmb3JlOiBiaWdpbnQgfTtcblxuY29uc3QgZ2V0VXNlclNlbGVjdG9yID0gKFxuICB1c2VySWQ6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQsXG4gIHdpdGhQdWJsaWNLZXk6IGJvb2xlYW4gfCB1bmRlZmluZWRcbikgPT4ge1xuICBjb25zdCB7IHVzZXIgfSA9IFNlbGVjdG9ycy5xdWVyeSh7XG4gICAgdXNlcjogW1xuICAgICAgeyB1c2VySWQgfSxcbiAgICAgIHtcbiAgICAgICAgaWQ6IHRydWUsXG4gICAgICAgIGZpcnN0bmFtZTogdHJ1ZSxcbiAgICAgICAgbGFzdG5hbWU6IHRydWUsXG4gICAgICAgIGxhbmc6IHRydWUsXG4gICAgICAgIHB1YmxpY0tleTogd2l0aFB1YmxpY0tleSA/IHRydWUgOiB1bmRlZmluZWQsXG4gICAgICAgIGVtYWlsOiB0cnVlLFxuICAgICAgICBwaG9uZTogdHJ1ZSxcbiAgICAgICAgcm9sZTogdHJ1ZSxcbiAgICAgICAgZGVsZXRlZEF0OiB0cnVlLFxuICAgICAgICBsYXN0TG9naW46IHRydWVcbiAgICAgIH1cbiAgICBdXG4gIH0pO1xuICByZXR1cm4gdXNlcjtcbn07XG5cbmV4cG9ydCB0eXBlIEFwcERCQ29uZmlnRmllbGQgPSB7XG4gIG5hbWU6IHN0cmluZztcbiAgdHlwZTogXCJzdHJpbmdcIiB8IFwibnVtYmVyXCIgfCBcImJvb2xlYW5cIiB8IFwib2JqZWN0XCI7XG4gIGlzQXJyYXk/OiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICBpc051bGxhYmxlPzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgaXNFZGl0YWJsZT86IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gIGlzS2V5PzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgZGVmYXVsdD86IHVua25vd247XG59O1xuXG5leHBvcnQgdHlwZSBBcHBEQkNvbmZpZyA9IHtcbiAgZmllbGRzOiBBcHBEQkNvbmZpZ0ZpZWxkW107XG59O1xuXG5leHBvcnQgdHlwZSBGYXFJdGVtID0ge1xuICBvcmRlcjogbnVtYmVyO1xuICBxdWVzdGlvbjogc3RyaW5nO1xuICBhbnN3ZXI6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIEJsb2dJdGVtID0ge1xuICBpZDogc3RyaW5nO1xuICBibG9nSWQ6IHN0cmluZztcbiAgb3JkZXI6IG51bWJlcjtcbiAgYXV0aG9yOiBzdHJpbmc7XG4gIGJvZHk6IHN0cmluZztcbiAgZGF0ZTogRGF0ZTtcbiAgaW1hZ2U6IHN0cmluZztcbiAgaW1hZ2VBbHQ6IHN0cmluZztcbiAgc3VtbWFyeTogc3RyaW5nO1xuICB0aXRsZTogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgVXNlckJhc2UgPSB7XG4gIGVtYWlsOiBzdHJpbmc7XG4gIHBob25lOiBzdHJpbmc7XG4gIGxhc3RuYW1lOiBzdHJpbmc7XG4gIHJvbGU6IFVzZXJSb2xlO1xuICBmaXJzdG5hbWU6IHN0cmluZztcbiAgaWQ6IHN0cmluZztcbiAgZGVsZXRlZEF0OiBEYXRlIHwgbnVsbDtcbiAgbGFzdExvZ2luOiBEYXRlO1xuICBsYW5nOiBMYW5nO1xufTtcblxudHlwZSBXaXRoUHVibGljS2V5ID0geyB3aXRoUHVibGljS2V5PzogYm9vbGVhbiB9O1xuXG5leHBvcnQgdHlwZSBVc2VyPFQgZXh0ZW5kcyBXaXRoUHVibGljS2V5ID0gV2l0aFB1YmxpY0tleT4gPSBUIGV4dGVuZHMge1xuICB3aXRoUHVibGljS2V5OiB0cnVlO1xufVxuICA/IFVzZXJCYXNlICYgeyBwdWJsaWNLZXk6IHN0cmluZyB9XG4gIDogVXNlckJhc2U7XG5cbnR5cGUgQ2xhc3NHZXRVc2VyUGFyYW1zID0gV2l0aFB1YmxpY0tleSAmIHtcbiAgdXNlcklkPzogc3RyaW5nO1xufTtcbnR5cGUgR2V0VXNlclBhcmFtcyA9IENsYXNzR2V0VXNlclBhcmFtcyAmIHtcbiAgY2xpZW50OiBSZXR1cm5UeXBlPHR5cGVvZiBUaHVuZGVyPjtcbn07XG5cbnR5cGUgU3RhdGljR2V0VXNlclBhcmFtcyA9IENsYXNzR2V0VXNlclBhcmFtcyAmIHtcbiAgZW52OiBTZWNyZWN5RW52O1xufTtcblxuYXN5bmMgZnVuY3Rpb24gZ2V0VXNlcjxVIGV4dGVuZHMgV2l0aFB1YmxpY0tleT4oXG4gIHBhcmFtczogR2V0VXNlclBhcmFtc1xuKTogUHJvbWlzZTxVc2VyPFU+IHwgbnVsbD4ge1xuICBjb25zdCBzZWxlY3RvciA9IGdldFVzZXJTZWxlY3RvcihwYXJhbXMudXNlcklkLCBwYXJhbXMud2l0aFB1YmxpY0tleSk7XG4gIGNvbnN0IHsgdXNlciB9ID0gYXdhaXQgcGFyYW1zLmNsaWVudC5xdWVyeSh7XG4gICAgdXNlcjogc2VsZWN0b3JcbiAgfSk7XG5cbiAgaWYgKCF1c2VyKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIC4uLnVzZXIsXG4gICAgbGFzdExvZ2luOiBuZXcgRGF0ZSh1c2VyLmxhc3RMb2dpbiksXG4gICAgZGVsZXRlZEF0OiB1c2VyLmRlbGV0ZWRBdCA/IG5ldyBEYXRlKHVzZXIuZGVsZXRlZEF0KSA6IG51bGxcbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgQ2xvdWRMaW1pdHMgPSB7XG4gIGNvdW50OiBiaWdpbnQ7XG4gIG1heENvdW50OiBiaWdpbnQgfCBudWxsO1xuICBzaXplOiBiaWdpbnQ7XG4gIG1heFNpemU6IGJpZ2ludCB8IG51bGw7XG59O1xuXG5leHBvcnQgdHlwZSBNYWlsTGltaXRzVmFsdWVzID0ge1xuICBjb3VudDogYmlnaW50O1xuICBtYXhDb3VudDogYmlnaW50IHwgbnVsbDtcbiAgZmlsZVNpemU6IGJpZ2ludDtcbiAgbWF4RmlsZVNpemU6IGJpZ2ludCB8IG51bGw7XG4gIGZpbGVDb3VudDogYmlnaW50O1xuICBtYXhGaWxlQ291bnQ6IGJpZ2ludCB8IG51bGw7XG59O1xuXG5leHBvcnQgdHlwZSBRdWVyeUxpbWl0cyA9IHtcbiAgY2xvdWQ6IENsb3VkTGltaXRzO1xuICBtYWlsOiB7XG4gICAgc2VudDogTWFpbExpbWl0c1ZhbHVlcztcbiAgICByZWNlaXZlZDogTWFpbExpbWl0c1ZhbHVlcztcbiAgfTtcbn07XG5cbmV4cG9ydCBjbGFzcyBCYXNlQ2xpZW50IHtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBnZXRCYXNlVXJsID0gKFxuICAgIGVudjogU2VjcmVjeUVudiA9IFwicHJvZFwiLFxuICAgIGdyYXBoY2RuID0gdHJ1ZVxuICApOiBzdHJpbmcgPT4ge1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJ0ZXN0XCIpIHtcbiAgICAgIHJldHVybiBcImh0dHA6Ly9sb2NhbGhvc3Q6NDAwMC9ncmFwaHFsXCI7XG4gICAgfVxuXG4gICAgc3dpdGNoIChlbnYpIHtcbiAgICAgIGNhc2UgXCJwcm9kXCI6XG4gICAgICAgIHJldHVybiBncmFwaGNkblxuICAgICAgICAgID8gXCJodHRwczovL3NlY3JlY3kuZ3JhcGhjZG4uYXBwXCJcbiAgICAgICAgICA6IFwiaHR0cHM6Ly9hcGkuc2VjcmVjeS5tZS9ncmFwaHFsXCI7XG4gICAgICBjYXNlIFwic3RhZ2luZ1wiOlxuICAgICAgICByZXR1cm4gXCJodHRwczovL2FwaS5zdGFnaW5nLnNlY3JlY3kubWUvZ3JhcGhxbFwiO1xuICAgICAgY2FzZSBcImRldlwiOlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIFwiaHR0cHM6Ly9hcGkuZGV2LnNlY3JlY3kubWUvZ3JhcGhxbFwiO1xuICAgIH1cbiAgfTtcblxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfZ2V0QmFzZUNsaWVudCA9IChcbiAgICBlbnY6IFNlY3JlY3lFbnYsXG4gICAgc2Vzc2lvbj86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWRcbiAgKTogUmV0dXJuVHlwZTx0eXBlb2YgVGh1bmRlcj4gPT5cbiAgICBjcmVhdGVUaHVuZGVyKEJhc2VDbGllbnQuZ2V0QmFzZVVybChlbnYpLCBzZXNzaW9uKTtcblxuICBwcm90ZWN0ZWQgY2xpZW50OiBSZXR1cm5UeXBlPHR5cGVvZiBUaHVuZGVyPjtcblxuICBwdWJsaWMgc2Vzc2lvbklkOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3Ioc2Vzc2lvbjogc3RyaW5nLCBlbnY6IFNlY3JlY3lFbnYpIHtcbiAgICB0aGlzLnNlc3Npb25JZCA9IHNlc3Npb247XG4gICAgdGhpcy5jbGllbnQgPSBCYXNlQ2xpZW50Ll9nZXRCYXNlQ2xpZW50KGVudiwgc2Vzc2lvbik7XG4gIH1cblxuICBhc3luYyBzZXNzaW9ucygpOiBQcm9taXNlPFVzZXJTZXNzaW9uW10+IHtcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5jbGllbnQucXVlcnkoe1xuICAgICAgdXNlcjogW1xuICAgICAgICB7fSxcbiAgICAgICAge1xuICAgICAgICAgIHNlc3Npb25zOiB7XG4gICAgICAgICAgICBpZDogdHJ1ZSxcbiAgICAgICAgICAgIGxhc3RBY3Rpdml0eTogdHJ1ZSxcbiAgICAgICAgICAgIHVzZXJBZ2VudDogdHJ1ZSxcbiAgICAgICAgICAgIGlwOiB0cnVlLFxuICAgICAgICAgICAgY2l0eTogdHJ1ZSxcbiAgICAgICAgICAgIGNvdW50cnk6IHRydWUsXG4gICAgICAgICAgICBhcHBTZXNzaW9uczoge1xuICAgICAgICAgICAgICBpZDogdHJ1ZSxcbiAgICAgICAgICAgICAgbGFzdEFjdGl2aXR5OiB0cnVlLFxuICAgICAgICAgICAgICB1c2VyQWdlbnQ6IHRydWUsXG4gICAgICAgICAgICAgIGlwOiB0cnVlLFxuICAgICAgICAgICAgICBjaXR5OiB0cnVlLFxuICAgICAgICAgICAgICBjb3VudHJ5OiB0cnVlLFxuICAgICAgICAgICAgICB1c2VyQXBwOiB7XG4gICAgICAgICAgICAgICAgYXBwOiB7XG4gICAgICAgICAgICAgICAgICBuYW1lOiB0cnVlXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICBdXG4gICAgfSk7XG5cbiAgICBjb25zdCBzZXNzaW9uczogVXNlclNlc3Npb25bXSA9XG4gICAgICBkYXRhLnVzZXI/LnNlc3Npb25zLm1hcChzID0+ICh7XG4gICAgICAgIGlkOiBzLmlkLFxuICAgICAgICBpcDogcy5pcCxcbiAgICAgICAgY2l0eTogcy5jaXR5LFxuICAgICAgICBjb3VudHJ5OiBzLmNvdW50cnksXG4gICAgICAgIGxhc3RBY3Rpdml0eTogcy5sYXN0QWN0aXZpdHkgPyBuZXcgRGF0ZShzLmxhc3RBY3Rpdml0eSkgOiB1bmRlZmluZWQsXG4gICAgICAgIHVzZXJBZ2VudDogcy51c2VyQWdlbnQsXG4gICAgICAgIGFwcFNlc3Npb25zOiBzLmFwcFNlc3Npb25zLm1hcChhID0+ICh7XG4gICAgICAgICAgaWQ6IGEuaWQsXG4gICAgICAgICAgaXA6IGEuaXAsXG4gICAgICAgICAgY2l0eTogYS5jaXR5LFxuICAgICAgICAgIGNvdW50cnk6IGEuY291bnRyeSxcbiAgICAgICAgICBsYXN0QWN0aXZpdHk6IGEubGFzdEFjdGl2aXR5ID8gbmV3IERhdGUoYS5sYXN0QWN0aXZpdHkpIDogdW5kZWZpbmVkLFxuICAgICAgICAgIHVzZXJBZ2VudDogYS51c2VyQWdlbnQsXG4gICAgICAgICAgYXBwOiBhLnVzZXJBcHA/LmFwcC5uYW1lID8/IFwiXCJcbiAgICAgICAgfSkpXG4gICAgICB9KSkgPz8gW107XG5cbiAgICByZXR1cm4gc2Vzc2lvbnM7XG4gIH1cblxuICBhc3luYyBsb2dvdXQoc2Vzc2lvbklkPzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghc2Vzc2lvbklkKSB7XG4gICAgICBjb25zdCBsb2NhbCA9IGdldFN0b3JhZ2UoZmFsc2UpO1xuICAgICAgY29uc3Qgc2Vzc2lvbiA9IGdldFN0b3JhZ2UodHJ1ZSk7XG4gICAgICBsb2NhbC5qd3QuY2xlYXIoKTtcbiAgICAgIGxvY2FsLnVzZXJBcHBLZXlzLmNsZWFyKCk7XG4gICAgICBsb2NhbC51c2VyQXBwU2Vzc2lvbi5jbGVhcigpO1xuICAgICAgc2Vzc2lvbi5qd3QuY2xlYXIoKTtcbiAgICAgIHNlc3Npb24udXNlckFwcEtleXMuY2xlYXIoKTtcbiAgICAgIHNlc3Npb24udXNlckFwcFNlc3Npb24uY2xlYXIoKTtcbiAgICAgIHVzZXJzQ2FjaGUuY2xlYXIoKTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMuY2xpZW50Lm11dGF0aW9uKHtcbiAgICAgICAgbG9nb3V0OiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgc2Vzc2lvbklkXG4gICAgICAgICAgfSxcbiAgICAgICAgICB0cnVlXG4gICAgICAgIF1cbiAgICAgIH0pO1xuICAgIH0gY2F0Y2gge1xuICAgICAgLy9cbiAgICB9XG4gIH1cblxuICBhc3luYyBtZTxUIGV4dGVuZHMgV2l0aFB1YmxpY0tleSA9IFdpdGhQdWJsaWNLZXk+KFxuICAgIHBhcmFtcz86IFRcbiAgKTogUHJvbWlzZTxVc2VyPFQ+IHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLnVzZXIocGFyYW1zIHx8ICh7IHdpdGhQdWJsaWNLZXk6IHRydWUgfSBhcyBUKSk7XG4gIH1cblxuICBzdGF0aWMgYXN5bmMgdXNlcjxUIGV4dGVuZHMgU3RhdGljR2V0VXNlclBhcmFtcz4oXG4gICAgcGFyYW1zOiBULFxuICAgIHNlc3Npb25JZD86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWRcbiAgKTogUHJvbWlzZTxVc2VyPFQ+IHwgbnVsbD4ge1xuICAgIGNvbnN0IHVzZXIgPSBhd2FpdCBnZXRVc2VyPFQ+KHtcbiAgICAgIGNsaWVudDogdGhpcy5fZ2V0QmFzZUNsaWVudChwYXJhbXMuZW52LCBzZXNzaW9uSWQpLFxuICAgICAgdXNlcklkOiBwYXJhbXMudXNlcklkLFxuICAgICAgd2l0aFB1YmxpY0tleTogcGFyYW1zLndpdGhQdWJsaWNLZXlcbiAgICB9KTtcblxuICAgIGlmICh1c2VyKSB7XG4gICAgICB1c2Vyc0NhY2hlLnNldCh1c2VyLmlkLCB1c2VyKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdXNlcjtcbiAgfVxuXG4gIGFzeW5jIHVzZXI8VCBleHRlbmRzIENsYXNzR2V0VXNlclBhcmFtcz4ocGFyYW1zOiBUKTogUHJvbWlzZTxVc2VyPFQ+IHwgbnVsbD4ge1xuICAgIGNvbnN0IHVzZXIgPSBhd2FpdCBnZXRVc2VyPFQ+KHtcbiAgICAgIGNsaWVudDogdGhpcy5jbGllbnQsXG4gICAgICB1c2VySWQ6IHBhcmFtcy51c2VySWQsXG4gICAgICB3aXRoUHVibGljS2V5OiBwYXJhbXMud2l0aFB1YmxpY0tleVxuICAgIH0pO1xuXG4gICAgaWYgKHVzZXIpIHtcbiAgICAgIHVzZXJzQ2FjaGUuc2V0KHVzZXIuaWQsIHVzZXIpO1xuICAgIH1cblxuICAgIHJldHVybiB1c2VyO1xuICB9XG5cbiAgYXN5bmMgdXBkYXRlUHJvZmlsZSh7XG4gICAgZmlyc3RuYW1lLFxuICAgIGxhc3RuYW1lLFxuICAgIGxhbmdcbiAgfToge1xuICAgIGZpcnN0bmFtZTogc3RyaW5nIHwgbnVsbDtcbiAgICBsYXN0bmFtZTogc3RyaW5nIHwgbnVsbDtcbiAgICBsYW5nOiBMYW5nIHwgbnVsbDtcbiAgfSk6IFByb21pc2U8VXNlcj4ge1xuICAgIGNvbnN0IHsgdXBkYXRlUHJvZmlsZSB9ID0gYXdhaXQgdGhpcy5jbGllbnQubXV0YXRpb24oe1xuICAgICAgdXBkYXRlUHJvZmlsZTogW1xuICAgICAgICB7XG4gICAgICAgICAgZmlyc3RuYW1lLFxuICAgICAgICAgIGxhc3RuYW1lLFxuICAgICAgICAgIGxhbmdcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGlkOiB0cnVlLFxuICAgICAgICAgIGZpcnN0bmFtZTogdHJ1ZSxcbiAgICAgICAgICBsYXN0bmFtZTogdHJ1ZSxcbiAgICAgICAgICBsYW5nOiB0cnVlLFxuICAgICAgICAgIGVtYWlsOiB0cnVlLFxuICAgICAgICAgIHBob25lOiB0cnVlLFxuICAgICAgICAgIHJvbGU6IHRydWUsXG4gICAgICAgICAgZGVsZXRlZEF0OiB0cnVlLFxuICAgICAgICAgIGxhc3RMb2dpbjogdHJ1ZVxuICAgICAgICB9XG4gICAgICBdXG4gICAgfSk7XG5cbiAgICBpZiAoIXVwZGF0ZVByb2ZpbGUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIlNob3VsZCBub3QgaGFwcGVuXCIpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAuLi51cGRhdGVQcm9maWxlLFxuICAgICAgbGFzdExvZ2luOiBuZXcgRGF0ZSh1cGRhdGVQcm9maWxlLmxhc3RMb2dpbiksXG4gICAgICBkZWxldGVkQXQ6IHVwZGF0ZVByb2ZpbGUuZGVsZXRlZEF0XG4gICAgICAgID8gbmV3IERhdGUodXBkYXRlUHJvZmlsZS5kZWxldGVkQXQpXG4gICAgICAgIDogbnVsbFxuICAgIH07XG4gIH1cblxuICBzdGF0aWMgYXN5bmMgcGxhbnMoXG4gICAgZW52OiBTZWNyZWN5RW52LFxuICAgIHNlc3Npb25JZD86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWRcbiAgKTogUHJvbWlzZTxQbGFuW10+IHtcbiAgICBjb25zdCB7IHBsYW5zIH0gPSBhd2FpdCBCYXNlQ2xpZW50Ll9nZXRCYXNlQ2xpZW50KGVudiwgc2Vzc2lvbklkKS5xdWVyeSh7XG4gICAgICBwbGFuczoge1xuICAgICAgICBraW5kOiB0cnVlLFxuICAgICAgICBjb2RlczogdHJ1ZSxcbiAgICAgICAgbGltaXRzOiB7XG4gICAgICAgICAgZG93bmxvYWRCYW5kd2lkdGg6IHRydWUsXG4gICAgICAgICAgZG93bmxvYWRDb3VudDogdHJ1ZSxcbiAgICAgICAgICBoYXJkRmlsZUNvdW50OiB0cnVlLFxuICAgICAgICAgIGhhcmRGaWxlU2l6ZTogdHJ1ZSxcbiAgICAgICAgICBwZXJGaWxlU2l6ZTogdHJ1ZSxcbiAgICAgICAgICB1cGxvYWRCYW5kd2lkdGg6IHRydWUsXG4gICAgICAgICAgdXBsb2FkQ291bnQ6IHRydWUsXG4gICAgICAgICAgcmVjZWl2ZWRNYWlsczoge1xuICAgICAgICAgICAgY291bnQ6IHRydWUsXG4gICAgICAgICAgICBmaWxlQ291bnQ6IHRydWUsXG4gICAgICAgICAgICBmaWxlU2l6ZTogdHJ1ZSxcbiAgICAgICAgICAgIGhhcmRDb3VudDogdHJ1ZSxcbiAgICAgICAgICAgIGhhcmRGaWxlQ291bnQ6IHRydWUsXG4gICAgICAgICAgICBoYXJkRmlsZVNpemU6IHRydWUsXG4gICAgICAgICAgICBwZXJGaWxlU2l6ZTogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VudE1haWxzOiB7XG4gICAgICAgICAgICBjb3VudDogdHJ1ZSxcbiAgICAgICAgICAgIGZpbGVDb3VudDogdHJ1ZSxcbiAgICAgICAgICAgIGZpbGVTaXplOiB0cnVlLFxuICAgICAgICAgICAgaGFyZENvdW50OiB0cnVlLFxuICAgICAgICAgICAgaGFyZEZpbGVDb3VudDogdHJ1ZSxcbiAgICAgICAgICAgIGhhcmRGaWxlU2l6ZTogdHJ1ZSxcbiAgICAgICAgICAgIHBlckZpbGVTaXplOiB0cnVlXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gcGxhbnM7XG4gIH1cblxuICBhc3luYyBwYXkoXG4gICAgcGxhbkNvZGU6IFNlY3JlY3lQbGFuc0NvZGVzLFxuICAgIGlucHV0OiBQYXlJbnB1dCxcbiAgICBhdXRvUmVuZXc/OiBib29sZWFuIHwgbnVsbCB8IHVuZGVmaW5lZFxuICApOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCB7IHBheSB9ID0gYXdhaXQgdGhpcy5jbGllbnQubXV0YXRpb24oe1xuICAgICAgcGF5OiBbXG4gICAgICAgIHtcbiAgICAgICAgICBpbnB1dCxcbiAgICAgICAgICBwbGFuQ29kZSxcbiAgICAgICAgICBhdXRvUmVuZXdcbiAgICAgICAgfSxcbiAgICAgICAgdHJ1ZVxuICAgICAgXVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHBheSA/PyBmYWxzZTtcbiAgfVxuXG4gIGFzeW5jIGNhbmNlbFBheW1lbnQoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgeyBjYW5jZWxQYXltZW50IH0gPSBhd2FpdCB0aGlzLmNsaWVudC5tdXRhdGlvbih7XG4gICAgICBjYW5jZWxQYXltZW50OiB0cnVlXG4gICAgfSk7XG5cbiAgICByZXR1cm4gY2FuY2VsUGF5bWVudCA/PyBmYWxzZTtcbiAgfVxuXG4gIGFzeW5jIHBheW1lbnRJbmZvcygpOiBQcm9taXNlPFBheW1lbnRJbmZvcyB8IG51bGw+IHtcbiAgICBjb25zdCB7IHBheW1lbnRJbmZvcyB9ID0gYXdhaXQgdGhpcy5jbGllbnQucXVlcnkoe1xuICAgICAgcGF5bWVudEluZm9zOiB7XG4gICAgICAgIGhvc3RlZFVybDogdHJ1ZSxcbiAgICAgICAgY3VycmVudFN1YnNjcmlwdGlvbjoge1xuICAgICAgICAgIGF1dG9yZW5ldzogdHJ1ZSxcbiAgICAgICAgICBhY3RpdmF0ZWRBdDogdHJ1ZSxcbiAgICAgICAgICBjdXJyZW50UGVyaW9kRW5kc0F0OiB0cnVlLFxuICAgICAgICAgIGN1cnJlbnRQZXJpb2RTdGFydGVkQXQ6IHRydWUsXG4gICAgICAgICAgY2FuY2VsZWRBdDogdHJ1ZSxcbiAgICAgICAgICBjcmVhdGVkQXQ6IHRydWUsXG4gICAgICAgICAgZXhwaXJlc0F0OiB0cnVlLFxuICAgICAgICAgIHBhdXNlZEF0OiB0cnVlLFxuICAgICAgICAgIHRyaWFsRW5kc0F0OiB0cnVlLFxuICAgICAgICAgIHRyaWFsU3RhcnRlZEF0OiB0cnVlLFxuICAgICAgICAgIHVwZGF0ZWRBdDogdHJ1ZSxcbiAgICAgICAgICBzdGF0ZTogdHJ1ZSxcbiAgICAgICAgICBjb2xsZWN0aW9uTWV0aG9kOiB0cnVlLFxuICAgICAgICAgIHBsYW46IHRydWUsXG4gICAgICAgICAgcGxhbkNvZGU6IHRydWUsXG5cbiAgICAgICAgICB0b3RhbDogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBpbnZvaWNlczoge1xuICAgICAgICAgIHBkZjogdHJ1ZSxcbiAgICAgICAgICBkYXRlOiB0cnVlLFxuICAgICAgICAgIGR1ZTogdHJ1ZSxcbiAgICAgICAgICBzdGF0dXM6IHRydWUsXG4gICAgICAgICAgdG90YWw6IHRydWUsXG4gICAgICAgICAgbmFtZTogdHJ1ZSxcbiAgICAgICAgICBjdXJyZW5jeTogdHJ1ZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAoIXBheW1lbnRJbmZvcykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIGludGVybmFsVG9QYXltZW50SW5mb3MocGF5bWVudEluZm9zKTtcbiAgfVxuXG4gIGFzeW5jIGxpbWl0cygpOiBQcm9taXNlPFF1ZXJ5TGltaXRzIHwgbnVsbD4ge1xuICAgIGNvbnN0IHsgbGltaXRzIH0gPSBhd2FpdCB0aGlzLmNsaWVudC5xdWVyeSh7XG4gICAgICBsaW1pdHM6IHtcbiAgICAgICAgY2xvdWQ6IHtcbiAgICAgICAgICBzaXplOiB0cnVlLFxuICAgICAgICAgIG1heFNpemU6IHRydWUsXG4gICAgICAgICAgY291bnQ6IHRydWUsXG4gICAgICAgICAgbWF4Q291bnQ6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgbWFpbDoge1xuICAgICAgICAgIHJlY2VpdmVkOiB7XG4gICAgICAgICAgICBjb3VudDogdHJ1ZSxcbiAgICAgICAgICAgIG1heENvdW50OiB0cnVlLFxuICAgICAgICAgICAgZmlsZUNvdW50OiB0cnVlLFxuICAgICAgICAgICAgbWF4RmlsZUNvdW50OiB0cnVlLFxuICAgICAgICAgICAgZmlsZVNpemU6IHRydWUsXG4gICAgICAgICAgICBtYXhGaWxlU2l6ZTogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VudDoge1xuICAgICAgICAgICAgY291bnQ6IHRydWUsXG4gICAgICAgICAgICBtYXhDb3VudDogdHJ1ZSxcbiAgICAgICAgICAgIGZpbGVDb3VudDogdHJ1ZSxcbiAgICAgICAgICAgIG1heEZpbGVDb3VudDogdHJ1ZSxcbiAgICAgICAgICAgIGZpbGVTaXplOiB0cnVlLFxuICAgICAgICAgICAgbWF4RmlsZVNpemU6IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmICghbGltaXRzKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCB7IGNsb3VkLCBtYWlsIH0gPSBsaW1pdHM7XG5cbiAgICByZXR1cm4ge1xuICAgICAgY2xvdWQ6IHtcbiAgICAgICAgY291bnQ6IEJpZ0ludChjbG91ZC5jb3VudCksXG4gICAgICAgIHNpemU6IEJpZ0ludChjbG91ZC5zaXplKSxcbiAgICAgICAgbWF4Q291bnQ6IGNsb3VkLm1heENvdW50ID8gQmlnSW50KGNsb3VkLm1heENvdW50KSA6IG51bGwsXG4gICAgICAgIG1heFNpemU6IGNsb3VkLm1heFNpemUgPyBCaWdJbnQoY2xvdWQubWF4U2l6ZSkgOiBudWxsXG4gICAgICB9LFxuICAgICAgbWFpbDoge1xuICAgICAgICByZWNlaXZlZDoge1xuICAgICAgICAgIGNvdW50OiBCaWdJbnQobWFpbC5yZWNlaXZlZC5jb3VudCksXG4gICAgICAgICAgbWF4Q291bnQ6IG1haWwucmVjZWl2ZWQubWF4Q291bnRcbiAgICAgICAgICAgID8gQmlnSW50KG1haWwucmVjZWl2ZWQubWF4Q291bnQpXG4gICAgICAgICAgICA6IG51bGwsXG4gICAgICAgICAgZmlsZUNvdW50OiBCaWdJbnQobWFpbC5yZWNlaXZlZC5maWxlQ291bnQpLFxuICAgICAgICAgIG1heEZpbGVDb3VudDogbWFpbC5yZWNlaXZlZC5tYXhGaWxlQ291bnRcbiAgICAgICAgICAgID8gQmlnSW50KG1haWwucmVjZWl2ZWQubWF4RmlsZUNvdW50KVxuICAgICAgICAgICAgOiBudWxsLFxuICAgICAgICAgIGZpbGVTaXplOiBCaWdJbnQobWFpbC5yZWNlaXZlZC5maWxlU2l6ZSksXG4gICAgICAgICAgbWF4RmlsZVNpemU6IG1haWwucmVjZWl2ZWQubWF4RmlsZVNpemVcbiAgICAgICAgICAgID8gQmlnSW50KG1haWwucmVjZWl2ZWQubWF4RmlsZVNpemUpXG4gICAgICAgICAgICA6IG51bGxcbiAgICAgICAgfSxcbiAgICAgICAgc2VudDoge1xuICAgICAgICAgIGNvdW50OiBCaWdJbnQobWFpbC5zZW50LmNvdW50KSxcbiAgICAgICAgICBtYXhDb3VudDogbWFpbC5zZW50Lm1heENvdW50ID8gQmlnSW50KG1haWwuc2VudC5tYXhDb3VudCkgOiBudWxsLFxuICAgICAgICAgIGZpbGVDb3VudDogQmlnSW50KG1haWwuc2VudC5maWxlQ291bnQpLFxuICAgICAgICAgIG1heEZpbGVDb3VudDogbWFpbC5zZW50Lm1heEZpbGVDb3VudFxuICAgICAgICAgICAgPyBCaWdJbnQobWFpbC5zZW50Lm1heEZpbGVDb3VudClcbiAgICAgICAgICAgIDogbnVsbCxcbiAgICAgICAgICBmaWxlU2l6ZTogQmlnSW50KG1haWwuc2VudC5maWxlU2l6ZSksXG4gICAgICAgICAgbWF4RmlsZVNpemU6IG1haWwuc2VudC5tYXhGaWxlU2l6ZVxuICAgICAgICAgICAgPyBCaWdJbnQobWFpbC5zZW50Lm1heEZpbGVTaXplKVxuICAgICAgICAgICAgOiBudWxsXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgYXN5bmMgZ29kRmF0aGVyQW5kQ2hpbGRyZW4oKTogUHJvbWlzZTxHb2RGYXRoZXJBbmRDaGlsZHJlbiB8IG51bGw+IHtcbiAgICBjb25zdCB7IHVzZXIgfSA9IGF3YWl0IHRoaXMuY2xpZW50LnF1ZXJ5KHtcbiAgICAgIHVzZXI6IFtcbiAgICAgICAge30sXG4gICAgICAgIHtcbiAgICAgICAgICBnb2RDaGlsZHJlbjoge1xuICAgICAgICAgICAgaWQ6IHRydWUsXG4gICAgICAgICAgICBmaXJzdG5hbWU6IHRydWUsXG4gICAgICAgICAgICBsYXN0bmFtZTogdHJ1ZSxcbiAgICAgICAgICAgIGVtYWlsOiB0cnVlLFxuICAgICAgICAgICAgcGhvbmU6IHRydWVcbiAgICAgICAgICB9LFxuICAgICAgICAgIGdvZEZhdGhlcjoge1xuICAgICAgICAgICAgaWQ6IHRydWUsXG4gICAgICAgICAgICBmaXJzdG5hbWU6IHRydWUsXG4gICAgICAgICAgICBsYXN0bmFtZTogdHJ1ZSxcbiAgICAgICAgICAgIGVtYWlsOiB0cnVlLFxuICAgICAgICAgICAgcGhvbmU6IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9KTtcblxuICAgIGlmICghdXNlcikge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnVzZXIsXG4gICAgICBnb2RGYXRoZXI6IHVzZXIuZ29kRmF0aGVyID8/IG51bGxcbiAgICB9O1xuICB9XG5cbiAgc3RhdGljIGFzeW5jIHVwZGF0ZUFwcERCQ29uZmlnKHtcbiAgICBhcHBDb2RlLFxuICAgIGNvbmZpZyxcbiAgICBlbnYsXG4gICAgc2Vzc2lvbklkXG4gIH06IHtcbiAgICBhcHBDb2RlOiBzdHJpbmc7XG4gICAgY29uZmlnOiBBcHBEQkNvbmZpZztcbiAgICBlbnY6IFNlY3JlY3lFbnY7XG4gICAgc2Vzc2lvbklkPzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgfSk6IFByb21pc2U8QXBwREJDb25maWc+IHtcbiAgICBjb25zdCB7IGRiQ29uZmlnIH0gPSBhd2FpdCBCYXNlQ2xpZW50Ll9nZXRCYXNlQ2xpZW50KFxuICAgICAgZW52LFxuICAgICAgc2Vzc2lvbklkXG4gICAgKS5tdXRhdGlvbih7XG4gICAgICBkYkNvbmZpZzogW1xuICAgICAgICB7XG4gICAgICAgICAgYXBwQ29kZSxcbiAgICAgICAgICBjb25maWc6IEpTT04uc3RyaW5naWZ5KGNvbmZpZylcbiAgICAgICAgfSxcbiAgICAgICAgdHJ1ZVxuICAgICAgXVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGRiQ29uZmlnO1xuICB9XG5cbiAgc3RhdGljIGFzeW5jIGdldEFwcERCQ29uZmlnKFxuICAgIGFwcENvZGU6IHN0cmluZyxcbiAgICBlbnY6IFNlY3JlY3lFbnYsXG4gICAgc2Vzc2lvbklkPzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZFxuICApOiBQcm9taXNlPEFwcERCQ29uZmlnPiB7XG4gICAgY29uc3QgeyBkYkNvbmZpZyB9ID0gYXdhaXQgQmFzZUNsaWVudC5fZ2V0QmFzZUNsaWVudChlbnYsIHNlc3Npb25JZCkucXVlcnkoe1xuICAgICAgZGJDb25maWc6IFtcbiAgICAgICAge1xuICAgICAgICAgIGFwcENvZGVcbiAgICAgICAgfSxcbiAgICAgICAgdHJ1ZVxuICAgICAgXVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGRiQ29uZmlnO1xuICB9XG5cbiAgc3RhdGljIGFzeW5jIGdldEZBUSh7XG4gICAgbGFuZyxcbiAgICBlbnYsXG4gICAgc2Vzc2lvbklkXG4gIH06IHtcbiAgICBsYW5nPzogTGFuZztcbiAgICBlbnY6IFNlY3JlY3lFbnY7XG4gICAgc2Vzc2lvbklkPzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgfSk6IFByb21pc2U8RmFxSXRlbVtdPiB7XG4gICAgY29uc3QgeyBmYXEgfSA9IGF3YWl0IEJhc2VDbGllbnQuX2dldEJhc2VDbGllbnQoZW52LCBzZXNzaW9uSWQpLnF1ZXJ5KHtcbiAgICAgIGZhcTogW1xuICAgICAgICB7XG4gICAgICAgICAgbGFuZ1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgYW5zd2VyOiB0cnVlLFxuICAgICAgICAgIG9yZGVyOiB0cnVlLFxuICAgICAgICAgIHF1ZXN0aW9uOiB0cnVlXG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9KTtcblxuICAgIHJldHVybiBmYXE7XG4gIH1cblxuICBzdGF0aWMgYXN5bmMgZ2V0QmxvZyh7XG4gICAgZW52LFxuICAgIGxhbmcsXG4gICAgc2Vzc2lvbklkXG4gIH06IHtcbiAgICBlbnY6IFNlY3JlY3lFbnY7XG4gICAgbGFuZz86IExhbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xuICAgIHNlc3Npb25JZD86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIH0pOiBQcm9taXNlPEJsb2dJdGVtW10+IHtcbiAgICBjb25zdCB7IGJsb2cgfSA9IGF3YWl0IEJhc2VDbGllbnQuX2dldEJhc2VDbGllbnQoZW52LCBzZXNzaW9uSWQpLnF1ZXJ5KHtcbiAgICAgIGJsb2c6IFtcbiAgICAgICAge1xuICAgICAgICAgIGxhbmdcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGlkOiB0cnVlLFxuICAgICAgICAgIGJsb2dJZDogdHJ1ZSxcbiAgICAgICAgICBhdXRob3I6IHRydWUsXG4gICAgICAgICAgYm9keTogdHJ1ZSxcbiAgICAgICAgICBkYXRlOiB0cnVlLFxuICAgICAgICAgIGltYWdlOiB0cnVlLFxuICAgICAgICAgIGltYWdlQWx0OiB0cnVlLFxuICAgICAgICAgIHN1bW1hcnk6IHRydWUsXG4gICAgICAgICAgdGl0bGU6IHRydWUsXG4gICAgICAgICAgb3JkZXI6IHRydWVcbiAgICAgICAgfVxuICAgICAgXVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGJsb2cubWFwKGIgPT4gKHsgLi4uYiwgZGF0ZTogbmV3IERhdGUoYi5kYXRlKSB9KSk7XG4gIH1cblxuICBhc3luYyByZXBvcnRVc2VyKFxuICAgIHJlcG9ydGVkVXNlcklkOiBzdHJpbmcsXG4gICAgY3VzdG9tTWVzc2FnZT86IHN0cmluZ1xuICApOiBQcm9taXNlPFNlbmRSZXBvcnQgfCB1bmRlZmluZWQ+IHtcbiAgICBjb25zdCB7IHNlbmRSZXBvcnQgfSA9IGF3YWl0IHRoaXMuY2xpZW50Lm11dGF0aW9uKHtcbiAgICAgIHNlbmRSZXBvcnQ6IFtcbiAgICAgICAge1xuICAgICAgICAgIHJlcG9ydGVkVXNlcklkLFxuICAgICAgICAgIGN1c3RvbU1lc3NhZ2VcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGlkOiB0cnVlLFxuICAgICAgICAgIGN1c3RvbU1lc3NhZ2U6IHRydWUsXG4gICAgICAgICAgdXNlcjoge1xuICAgICAgICAgICAgaWQ6IHRydWUsXG4gICAgICAgICAgICBmaXJzdG5hbWU6IHRydWUsXG4gICAgICAgICAgICBsYXN0bmFtZTogdHJ1ZSxcbiAgICAgICAgICAgIGVtYWlsOiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXBvcnRlZFVzZXI6IHtcbiAgICAgICAgICAgIGlkOiB0cnVlLFxuICAgICAgICAgICAgZmlyc3RuYW1lOiB0cnVlLFxuICAgICAgICAgICAgbGFzdG5hbWU6IHRydWUsXG4gICAgICAgICAgICBlbWFpbDogdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgXVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHNlbmRSZXBvcnQ7XG4gIH1cblxuICBzdGF0aWMgYXN5bmMgZGVsZXRlVXNlcih7XG4gICAgc2Vzc2lvbklkLFxuICAgIHVzZXJJZCxcbiAgICBlbnZcbiAgfToge1xuICAgIHNlc3Npb25JZDogc3RyaW5nO1xuICAgIHVzZXJJZD86IHN0cmluZztcbiAgICBlbnY6IFNlY3JlY3lFbnY7XG4gIH0pOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCB7IGRlbGV0ZVVzZXIgfSA9IGF3YWl0IEJhc2VDbGllbnQuX2dldEJhc2VDbGllbnQoXG4gICAgICBlbnYsXG4gICAgICBzZXNzaW9uSWRcbiAgICApLm11dGF0aW9uKHtcbiAgICAgIGRlbGV0ZVVzZXI6IFtcbiAgICAgICAge1xuICAgICAgICAgIHVzZXJJZFxuICAgICAgICB9LFxuICAgICAgICB0cnVlXG4gICAgICBdXG4gICAgfSk7XG5cbiAgICByZXR1cm4gZGVsZXRlVXNlciA/PyBmYWxzZTtcbiAgfVxuXG4gIGFzeW5jIGRiR2V0PFU+KHtcbiAgICBmaWVsZCxcbiAgICB1c2VySWRcbiAgfToge1xuICAgIGZpZWxkOiBzdHJpbmc7XG4gICAgdXNlcklkPzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgfSk6IFByb21pc2U8VT4ge1xuICAgIGNvbnN0IHsgZGJHZXQgfSA9IGF3YWl0IHRoaXMuY2xpZW50LnF1ZXJ5KHtcbiAgICAgIGRiR2V0OiBbXG4gICAgICAgIHtcbiAgICAgICAgICBmaWVsZCxcbiAgICAgICAgICB1c2VySWRcbiAgICAgICAgfSxcbiAgICAgICAgdHJ1ZVxuICAgICAgXVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGRiR2V0LnJlcztcbiAgfVxuXG4gIGFzeW5jIGRiU2V0PFQgZXh0ZW5kcyBVc2VyRGF0YSwgVSBleHRlbmRzIERvY3VtZW50Pih7XG4gICAgdmFsdWUsXG4gICAgdXNlcklkXG4gIH06IHtcbiAgICB2YWx1ZTogVTtcbiAgICB1c2VySWQ/OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xuICB9KTogUHJvbWlzZTxUPiB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gXCJvYmplY3RcIikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgdmFsdWUgc2hvdWxkIGJlIGFuIG9iamVjdCBpbmNsdWRpbmcgZmllbGRzIHlvdSB3YW50IHRvIHVwZGF0ZS5gXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IHsgZGJTZXQgfSA9IGF3YWl0IHRoaXMuY2xpZW50Lm11dGF0aW9uKHtcbiAgICAgIGRiU2V0OiBbXG4gICAgICAgIHtcbiAgICAgICAgICB1c2VySWQsXG4gICAgICAgICAgdmFsdWU6IHNlcmlhbGl6ZSh2YWx1ZSkudG9TdHJpbmcoXCJiYXNlNjRcIilcbiAgICAgICAgfSxcbiAgICAgICAgdHJ1ZVxuICAgICAgXVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGRiU2V0LnJlcztcbiAgfVxuXG4gIGFzeW5jIGRiU2VhcmNoPFQ+KHtcbiAgICBzZWFyY2gsXG4gICAgZmllbGRcbiAgfToge1xuICAgIGZpZWxkOiBzdHJpbmc7XG4gICAgc2VhcmNoOiBzdHJpbmc7XG4gIH0pOiBQcm9taXNlPFRbXT4ge1xuICAgIGNvbnN0IHsgZGJTZWFyY2ggfSA9IGF3YWl0IHRoaXMuY2xpZW50LnF1ZXJ5KHtcbiAgICAgIGRiU2VhcmNoOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBzZWFyY2gsXG4gICAgICAgICAgZmllbGRcbiAgICAgICAgfSxcbiAgICAgICAgdHJ1ZVxuICAgICAgXVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGRiU2VhcmNoO1xuICB9XG5cbiAgYXN5bmMgZGVsZXRlRm9sZGVyKHsgaWQgfTogeyBpZDogc3RyaW5nIH0pOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCB7IGRlbGV0ZUZvbGRlciB9ID0gYXdhaXQgdGhpcy5jbGllbnQubXV0YXRpb24oe1xuICAgICAgZGVsZXRlRm9sZGVyOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBpZFxuICAgICAgICB9LFxuICAgICAgICB0cnVlXG4gICAgICBdXG4gICAgfSk7XG5cbiAgICByZXR1cm4gZGVsZXRlRm9sZGVyID8/IGZhbHNlO1xuICB9XG5cbiAgYXN5bmMgbW92ZUZvbGRlcnMoe1xuICAgIGZvbGRlcnNJZCxcbiAgICBwYXJlbnRGb2xkZXJJZFxuICB9OiB7XG4gICAgZm9sZGVyc0lkOiBzdHJpbmdbXTtcbiAgICBwYXJlbnRGb2xkZXJJZD86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIH0pOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCB7IG1vdmVGb2xkZXJzIH0gPSBhd2FpdCB0aGlzLmNsaWVudC5tdXRhdGlvbih7XG4gICAgICBtb3ZlRm9sZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgZm9sZGVyc0lkLFxuICAgICAgICAgIHBhcmVudEZvbGRlcklkXG4gICAgICAgIH0sXG4gICAgICAgIHRydWVcbiAgICAgIF1cbiAgICB9KTtcblxuICAgIHJldHVybiBtb3ZlRm9sZGVycyA/PyBmYWxzZTtcbiAgfVxuXG4gIGFzeW5jIG1vdmVGaWxlcyh7XG4gICAgZmlsZXNJZCxcbiAgICBwYXJlbnRGb2xkZXJJZFxuICB9OiB7XG4gICAgZmlsZXNJZDogc3RyaW5nW107XG4gICAgcGFyZW50Rm9sZGVySWQ/OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xuICB9KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgeyBtb3ZlRmlsZXMgfSA9IGF3YWl0IHRoaXMuY2xpZW50Lm11dGF0aW9uKHtcbiAgICAgIG1vdmVGaWxlczogW1xuICAgICAgICB7XG4gICAgICAgICAgZmlsZXNJZCxcbiAgICAgICAgICBwYXJlbnRGb2xkZXJJZFxuICAgICAgICB9LFxuICAgICAgICB0cnVlXG4gICAgICBdXG4gICAgfSk7XG5cbiAgICByZXR1cm4gbW92ZUZpbGVzID8/IGZhbHNlO1xuICB9XG5cbiAgYXN5bmMgZm9sZGVyU2l6ZSh7XG4gICAgZm9sZGVySWRcbiAgfToge1xuICAgIGZvbGRlcklkPzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgfSk6IFByb21pc2U8Rm9sZGVyU2l6ZSB8IG51bGw+IHtcbiAgICBjb25zdCB7IGZvbGRlclNpemUgfSA9IGF3YWl0IHRoaXMuY2xpZW50LnF1ZXJ5KHtcbiAgICAgIGZvbGRlclNpemU6IFtcbiAgICAgICAge1xuICAgICAgICAgIGZvbGRlcklkXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBzaXplOiB0cnVlLFxuICAgICAgICAgIHNpemVCZWZvcmU6IHRydWVcbiAgICAgICAgfVxuICAgICAgXVxuICAgIH0pO1xuXG4gICAgaWYgKCFmb2xkZXJTaXplKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgc2l6ZTogQmlnSW50KGZvbGRlclNpemUuc2l6ZSksXG4gICAgICBzaXplQmVmb3JlOiBCaWdJbnQoZm9sZGVyU2l6ZS5zaXplQmVmb3JlKVxuICAgIH07XG4gIH1cblxuICBhc3luYyBnZXRTcG9uc29yc2hpcExpbmsoe1xuICAgIGJhY2tVcmxcbiAgfToge1xuICAgIGJhY2tVcmw6IHN0cmluZztcbiAgfSk6IFByb21pc2U8c3RyaW5nIHwgbnVsbD4ge1xuICAgIGNvbnN0IG1lID0gYXdhaXQgdGhpcy5tZSh7IHdpdGhQdWJsaWNLZXk6IGZhbHNlIH0pO1xuXG4gICAgaWYgKCFtZSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIGdldExpbmsoe1xuICAgICAgYXBwOiBcImF1dGhcIixcbiAgICAgIHBhdGg6IGAvc2lnbi11cD9nZj0ke2J0b2EobWUuZW1haWwpfSZhdT0ke2J0b2EoYmFja1VybCl9YFxuICAgIH0pO1xuICB9XG59XG4iXX0=
1376
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9CYXNlQ2xpZW50LnRzIl0sIm5hbWVzIjpbInNlcmlhbGl6ZSIsImdldExpbmsiLCJ1c2Vyc0NhY2hlIiwiZ2V0U3RvcmFnZSIsIlNlbGVjdG9yIiwiY3JlYXRlVGh1bmRlciIsImludGVybmFsVG9QYXltZW50SW5mb3MiLCJwIiwiY3VycmVudFN1YnNjcmlwdGlvbiIsInN0YXRlIiwiY29sbGVjdGlvbk1ldGhvZCIsImFjdGl2YXRlZEF0IiwiRGF0ZSIsImNyZWF0ZWRBdCIsInVwZGF0ZWRBdCIsInRyaWFsRW5kc0F0IiwidHJpYWxTdGFydGVkQXQiLCJwYXVzZWRBdCIsImN1cnJlbnRQZXJpb2RFbmRzQXQiLCJjdXJyZW50UGVyaW9kU3RhcnRlZEF0IiwiY2FuY2VsZWRBdCIsImV4cGlyZXNBdCIsImludm9pY2VzIiwibWFwIiwiaSIsImRhdGUiLCJkdWUiLCJzdGF0dXMiLCJwbGFuc0NvZGVzIiwiaXNWYWxpZFBsYW4iLCJwbGFuQ29kZSIsImluY2x1ZGVzIiwiZ2V0VXNlclNlbGVjdG9yIiwidXNlcklkIiwid2l0aFB1YmxpY0tleSIsInVzZXIiLCJpZCIsImZpcnN0bmFtZSIsImxhc3RuYW1lIiwibGFuZyIsInB1YmxpY0tleSIsInVuZGVmaW5lZCIsImVtYWlsIiwicGhvbmUiLCJyb2xlIiwiZGVsZXRlZEF0IiwibGFzdExvZ2luIiwiZ2V0VXNlciIsInBhcmFtcyIsInNlbGVjdG9yIiwiY2xpZW50IiwiQmFzZUNsaWVudCIsInNlc3Npb24iLCJlbnYiLCJzZXNzaW9uSWQiLCJfZ2V0QmFzZUNsaWVudCIsInNlc3Npb25zIiwibGFzdEFjdGl2aXR5IiwidXNlckFnZW50IiwiaXAiLCJjaXR5IiwiY291bnRyeSIsImFwcFNlc3Npb25zIiwidXNlckFwcCIsImFwcCIsIm5hbWUiLCJkYXRhIiwicyIsImEiLCJsb2dvdXQiLCJsb2NhbCIsImp3dCIsImNsZWFyIiwidXNlckFwcEtleXMiLCJ1c2VyQXBwU2Vzc2lvbiIsIm1lIiwic2V0IiwidXBkYXRlUHJvZmlsZSIsIkVycm9yIiwicGxhbnMiLCJraW5kIiwiY29kZXMiLCJsaW1pdHMiLCJkb3dubG9hZEJhbmR3aWR0aCIsImRvd25sb2FkQ291bnQiLCJoYXJkRmlsZUNvdW50IiwiaGFyZEZpbGVTaXplIiwicGVyRmlsZVNpemUiLCJ1cGxvYWRCYW5kd2lkdGgiLCJ1cGxvYWRDb3VudCIsInJlY2VpdmVkTWFpbHMiLCJjb3VudCIsImZpbGVDb3VudCIsImZpbGVTaXplIiwiaGFyZENvdW50Iiwic2VudE1haWxzIiwicGF5IiwiaW5wdXQiLCJhdXRvUmVuZXciLCJjYW5jZWxQYXltZW50IiwicGF5bWVudEluZm9zIiwiaG9zdGVkVXJsIiwiYXV0b3JlbmV3IiwicGxhbiIsInRvdGFsIiwicGRmIiwiY3VycmVuY3kiLCJjbG91ZCIsInNpemUiLCJtYXhTaXplIiwibWF4Q291bnQiLCJtYWlsIiwicmVjZWl2ZWQiLCJtYXhGaWxlQ291bnQiLCJtYXhGaWxlU2l6ZSIsInNlbnQiLCJCaWdJbnQiLCJnb2RGYXRoZXJBbmRDaGlsZHJlbiIsImdvZENoaWxkcmVuIiwiZ29kRmF0aGVyIiwidXBkYXRlQXBwREJDb25maWciLCJhcHBDb2RlIiwiY29uZmlnIiwiZGJDb25maWciLCJKU09OIiwic3RyaW5naWZ5IiwiZ2V0QXBwREJDb25maWciLCJnZXRGQVEiLCJmYXEiLCJhbnN3ZXIiLCJvcmRlciIsInF1ZXN0aW9uIiwiZ2V0QmxvZyIsImJsb2ciLCJibG9nSWQiLCJhdXRob3IiLCJib2R5IiwiaW1hZ2UiLCJpbWFnZUFsdCIsInN1bW1hcnkiLCJ0aXRsZSIsImIiLCJyZXBvcnRVc2VyIiwicmVwb3J0ZWRVc2VySWQiLCJjdXN0b21NZXNzYWdlIiwic2VuZFJlcG9ydCIsInJlcG9ydGVkVXNlciIsImRlbGV0ZVVzZXIiLCJkYkdldCIsImZpZWxkIiwicmVzIiwiZGJTZXQiLCJ2YWx1ZSIsInRvU3RyaW5nIiwiZGJTZWFyY2giLCJzZWFyY2giLCJkZWxldGVGb2xkZXIiLCJtb3ZlRm9sZGVycyIsImZvbGRlcnNJZCIsInBhcmVudEZvbGRlcklkIiwibW92ZUZpbGVzIiwiZmlsZXNJZCIsImZvbGRlclNpemUiLCJmb2xkZXJJZCIsInNpemVCZWZvcmUiLCJnZXRTcG9uc29yc2hpcExpbmsiLCJiYWNrVXJsIiwicGF0aCIsImJ0b2EiLCJnZXRCYXNlVXJsIiwiZ3JhcGhjZG4iLCJwcm9jZXNzIiwiTk9ERV9FTlYiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBRUEsU0FBU0EsU0FBVCxRQUEwQixNQUExQjtBQUNBLFNBQVNDLE9BQVQsUUFBd0Isb0JBQXhCO0FBQ0EsU0FBU0MsVUFBVCxRQUEyQixZQUEzQjtBQUdBLFNBQVNDLFVBQVQsUUFBMkIscUJBQTNCO0FBUUEsU0FBU0MsUUFBVCxRQUF5QixpQkFBekI7QUFDQSxTQUFTQyxhQUFULFFBQThCLGtCQUE5Qjs7QUF5S0EsU0FBU0Msc0JBQVQsQ0FBZ0NDLENBQWhDLEVBQXVFO0FBQ3JFLHlDQUNLQSxDQURMO0FBRUVDLElBQUFBLG1CQUFtQixrQ0FDZEQsQ0FBQyxDQUFDQyxtQkFEWTtBQUVqQkMsTUFBQUEsS0FBSyxFQUFFRixDQUFDLENBQUNDLG1CQUFGLENBQXNCQyxLQUZaO0FBR2pCQyxNQUFBQSxnQkFBZ0IsRUFBRUgsQ0FBQyxDQUFDQyxtQkFBRixDQUNmRSxnQkFKYztBQUtqQkMsTUFBQUEsV0FBVyxFQUFFSixDQUFDLENBQUNDLG1CQUFGLENBQXNCRyxXQUF0QixHQUNULElBQUlDLElBQUosQ0FBU0wsQ0FBQyxDQUFDQyxtQkFBRixDQUFzQkcsV0FBL0IsQ0FEUyxHQUVULElBUGE7QUFRakJFLE1BQUFBLFNBQVMsRUFBRU4sQ0FBQyxDQUFDQyxtQkFBRixDQUFzQkssU0FBdEIsR0FDUCxJQUFJRCxJQUFKLENBQVNMLENBQUMsQ0FBQ0MsbUJBQUYsQ0FBc0JLLFNBQS9CLENBRE8sR0FFUCxJQVZhO0FBV2pCQyxNQUFBQSxTQUFTLEVBQUVQLENBQUMsQ0FBQ0MsbUJBQUYsQ0FBc0JNLFNBQXRCLEdBQ1AsSUFBSUYsSUFBSixDQUFTTCxDQUFDLENB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QUFSLENBQVl1SCxRQUFaLEtBQXlCLE1BQTdCLEVBQXFDO0FBQ25DLFdBQU8sK0JBQVA7QUFDRDs7QUFFRCxVQUFRdkgsR0FBUjtBQUNFLFNBQUssTUFBTDtBQUNFLGFBQU9xSCxRQUFRLEdBQ1gsOEJBRFcsR0FFWCxnQ0FGSjs7QUFHRixTQUFLLFNBQUw7QUFDRSxhQUFPLHdDQUFQOztBQUNGLFNBQUssS0FBTDtBQUNBO0FBQ0UsYUFBTyxvQ0FBUDtBQVRKO0FBV0QsQzs7QUFwQlV2SCxVLENBc0JhSSxjLEdBQWlCLFVBQ3ZDRixHQUR1QyxFQUV2Q0QsT0FGdUM7QUFBQSxTQUl2Qy9DLGFBQWEsQ0FBQzhDLFVBQVUsQ0FBQ3NILFVBQVgsQ0FBc0JwSCxHQUF0QixDQUFELEVBQTZCRCxPQUE3QixDQUowQjtBQUFBLEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IERvd25sb2FkUHJvZ3Jlc3MgYXMgRExQcm9ncmVzcyB9IGZyb20gXCJreVwiO1xuaW1wb3J0IHR5cGUgeyBEb2N1bWVudCB9IGZyb20gXCJic29uXCI7XG5pbXBvcnQgeyBzZXJpYWxpemUgfSBmcm9tIFwiYnNvblwiO1xuaW1wb3J0IHsgZ2V0TGluayB9IGZyb20gXCJAc2VjcmVjeS9saWItdXRpbHNcIjtcbmltcG9ydCB7IHVzZXJzQ2FjaGUgfSBmcm9tIFwiLi9jYWNoZS5qc1wiO1xuaW1wb3J0IHR5cGUgeyBVc2VyU2Vzc2lvbiB9IGZyb20gXCIuL2NsaWVudC90eXBlcy9pbmRleC5qc1wiO1xuaW1wb3J0IHR5cGUgeyBTZWNyZWN5RW52IH0gZnJvbSBcIi4vY2xpZW50L2hlbHBlcnMuanNcIjtcbmltcG9ydCB7IGdldFN0b3JhZ2UgfSBmcm9tIFwiLi9jbGllbnQvc3RvcmFnZS5qc1wiO1xuaW1wb3J0IHR5cGUge1xuICBMYW5nLFxuICBQYXlJbnB1dFR5cGUsXG4gIFBsYW5LaW5kLFxuICBUaHVuZGVyLFxuICBVc2VyUm9sZVxufSBmcm9tIFwiLi96ZXVzL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBTZWxlY3RvciB9IGZyb20gXCIuL3pldXMvaW5kZXguanNcIjtcbmltcG9ydCB7IGNyZWF0ZVRodW5kZXIgfSBmcm9tIFwiLi9aZXVzVGh1bmRlci5qc1wiO1xuXG5leHBvcnQgdHlwZSBEb3dubG9hZFByb2dyZXNzID0gRExQcm9ncmVzcztcblxuZXhwb3J0IHR5cGUgUGF5SW5wdXQgPSB7XG4gIHR5cGU6IFBheUlucHV0VHlwZTtcbiAgdG9rZW46IHN0cmluZztcbiAgZmlyc3ROYW1lOiBzdHJpbmc7XG4gIGxhc3ROYW1lOiBzdHJpbmc7XG4gIHN0cmVldDogc3RyaW5nO1xuICBwb3N0YWxDb2RlOiBzdHJpbmc7XG4gIGNpdHk6IHN0cmluZztcbiAgY291bnRyeTogc3RyaW5nO1xuICBtb250aDogc3RyaW5nO1xuICB5ZWFyOiBzdHJpbmc7XG4gIGN2djogc3RyaW5nO1xuICBudW1iZXI6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIE1haWxMaW1pdHMgPSB7XG4gIGNvdW50Pzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBmaWxlQ291bnQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGZpbGVTaXplPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBoYXJkQ291bnQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGhhcmRGaWxlQ291bnQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGhhcmRGaWxlU2l6ZT86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcGVyRmlsZVNpemU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59O1xuXG5leHBvcnQgdHlwZSBMaW1pdHMgPSB7XG4gIGRvd25sb2FkQmFuZHdpZHRoPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBkb3dubG9hZENvdW50Pzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBoYXJkRmlsZUNvdW50Pzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBoYXJkRmlsZVNpemU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHBlckZpbGVTaXplPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICByZWNlaXZlZE1haWxzOiBNYWlsTGltaXRzO1xuICBzZW50TWFpbHM6IE1haWxMaW1pdHM7XG4gIHVwbG9hZEJhbmR3aWR0aD86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgdXBsb2FkQ291bnQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59O1xuXG5leHBvcnQgdHlwZSBHb2RVc2VyID0ge1xuICBpZDogc3RyaW5nO1xuICBmaXJzdG5hbWU6IHN0cmluZztcbiAgbGFzdG5hbWU6IHN0cmluZztcbiAgZW1haWw6IHN0cmluZztcbiAgcGhvbmU6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIEdvZEZhdGhlckFuZENoaWxkcmVuID0ge1xuICBnb2RGYXRoZXI6IEdvZFVzZXIgfCBudWxsO1xuICBnb2RDaGlsZHJlbjogR29kVXNlcltdO1xufTtcblxuZXhwb3J0IHR5cGUgUGxhbiA9IHtcbiAgY29kZXM6IHN0cmluZ1tdO1xuICBraW5kOiBQbGFuS2luZDtcbiAgbGltaXRzOiBMaW1pdHM7XG59O1xuXG5leHBvcnQgdHlwZSBTdWJzY3JpcHRpb25TdGF0ZSA9XG4gIHwgXCJhY3RpdmVcIlxuICB8IFwiY2FuY2VsZWRcIlxuICB8IFwicGF1c2VkXCJcbiAgfCBcImV4cGlyZWRcIlxuICB8IFwiZnV0dXJlXCJcbiAgfCBcImluX3RyaWFsXCJcbiAgfCBcImxpdmVcIlxuICB8IFwicGFzdF9kdWVcIjtcblxuZXhwb3J0IHR5cGUgU3Vic2NyaXB0aW9uQ29sbGVjdGlvbk1ldGhvZCA9IFwiYXV0b21hdGljXCIgfCBcIm1hbnVhbFwiO1xuXG50eXBlIEludGVybmFsU3Vic2NyaXB0aW9uID0ge1xuICBhdXRvcmVuZXc6IGJvb2xlYW47XG4gIGFjdGl2YXRlZEF0Pzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgY3VycmVudFBlcmlvZEVuZHNBdD86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIGN1cnJlbnRQZXJpb2RTdGFydGVkQXQ/OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xuICBjYW5jZWxlZEF0Pzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgY3JlYXRlZEF0Pzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgZXhwaXJlc0F0Pzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgcGF1c2VkQXQ/OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xuICB0cmlhbEVuZHNBdD86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIHRyaWFsU3RhcnRlZEF0Pzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgdXBkYXRlZEF0Pzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgY29sbGVjdGlvbk1ldGhvZDogc3RyaW5nO1xuICBzdGF0ZTogc3RyaW5nO1xuICBwbGFuPzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgcGxhbkNvZGU/OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xuICB0b3RhbD86IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWQ7XG59O1xuXG50eXBlIFJlY3VybHlJbnZvaWNlU3RhdHVzID1cbiAgfCBcInBlbmRpbmdcIlxuICB8IFwicGFpZFwiXG4gIHwgXCJmYWlsZWRcIlxuICB8IFwicGFzdF9kdWVcIlxuICB8IFwib3BlblwiXG4gIHwgXCJjbG9zZWRcIlxuICB8IFwidm9pZGVkXCJcbiAgfCBcInByb2Nlc3NpbmdcIjtcblxudHlwZSBJbnRlcm5hbFJlY3VybHlJbnZvaWNlcyA9IHtcbiAgcGRmOiBzdHJpbmc7XG4gIGRhdGU6IHN0cmluZztcbiAgZHVlOiBzdHJpbmc7XG4gIHN0YXR1czogc3RyaW5nO1xuICB0b3RhbDogbnVtYmVyO1xuICBuYW1lOiBzdHJpbmc7XG4gIGN1cnJlbmN5OiBzdHJpbmc7XG59O1xuXG50eXBlIEludGVybmFsUGF5bWVudEluZm9zID0ge1xuICBob3N0ZWRVcmw6IHN0cmluZztcbiAgY3VycmVudFN1YnNjcmlwdGlvbjogSW50ZXJuYWxTdWJzY3JpcHRpb247XG4gIGludm9pY2VzOiBJbnRlcm5hbFJlY3VybHlJbnZvaWNlc1tdO1xufTtcblxuZXhwb3J0IHR5cGUgU3Vic2NyaXB0aW9uID0ge1xuICBhdXRvcmVuZXc6IGJvb2xlYW47XG4gIGFjdGl2YXRlZEF0PzogRGF0ZSB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIGN1cnJlbnRQZXJpb2RFbmRzQXQ/OiBEYXRlIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgY3VycmVudFBlcmlvZFN0YXJ0ZWRBdD86IERhdGUgfCBudWxsIHwgdW5kZWZpbmVkO1xuICBjYW5jZWxlZEF0PzogRGF0ZSB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIGNyZWF0ZWRBdD86IERhdGUgfCBudWxsIHwgdW5kZWZpbmVkO1xuICBleHBpcmVzQXQ/OiBEYXRlIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgcGF1c2VkQXQ/OiBEYXRlIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgdHJpYWxFbmRzQXQ/OiBEYXRlIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgdHJpYWxTdGFydGVkQXQ/OiBEYXRlIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgdXBkYXRlZEF0PzogRGF0ZSB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIGNvbGxlY3Rpb25NZXRob2Q6IFN1YnNjcmlwdGlvbkNvbGxlY3Rpb25NZXRob2Q7XG4gIHN0YXRlOiBTdWJzY3JpcHRpb25TdGF0ZTtcbiAgcGxhbj86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIHBsYW5Db2RlPzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgdG90YWw/OiBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkO1xufTtcblxuZXhwb3J0IHR5cGUgUmVjdXJseUludm9pY2VzID0ge1xuICBwZGY6IHN0cmluZztcbiAgZGF0ZTogRGF0ZTtcbiAgZHVlOiBEYXRlO1xuICBzdGF0dXM6IFJlY3VybHlJbnZvaWNlU3RhdHVzO1xuICB0b3RhbDogbnVtYmVyO1xuICBuYW1lOiBzdHJpbmc7XG4gIGN1cnJlbmN5OiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBQYXltZW50SW5mb3MgPSB7XG4gIGhvc3RlZFVybDogc3RyaW5nO1xuICBjdXJyZW50U3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIGludm9pY2VzOiBSZWN1cmx5SW52b2ljZXNbXTtcbn07XG5cbmV4cG9ydCB0eXBlIFNlbmRSZXBvcnQgPSB7XG4gIGlkOiBzdHJpbmc7XG4gIHVzZXI6IHtcbiAgICBpZDogc3RyaW5nO1xuICAgIGZpcnN0bmFtZTogc3RyaW5nO1xuICAgIGxhc3RuYW1lOiBzdHJpbmc7XG4gICAgZW1haWw6IHN0cmluZztcbiAgfTtcbiAgcmVwb3J0ZWRVc2VyOiB7XG4gICAgaWQ6IHN0cmluZztcbiAgICBmaXJzdG5hbWU6IHN0cmluZztcbiAgICBsYXN0bmFtZTogc3RyaW5nO1xuICAgIGVtYWlsOiBzdHJpbmc7XG4gIH07XG4gIGN1c3RvbU1lc3NhZ2U/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59O1xuXG5mdW5jdGlvbiBpbnRlcm5hbFRvUGF5bWVudEluZm9zKHA6IEludGVybmFsUGF5bWVudEluZm9zKTogUGF5bWVudEluZm9zIHtcbiAgcmV0dXJuIHtcbiAgICAuLi5wLFxuICAgIGN1cnJlbnRTdWJzY3JpcHRpb246IHtcbiAgICAgIC4uLnAuY3VycmVudFN1YnNjcmlwdGlvbixcbiAgICAgIHN0YXRlOiBwLmN1cnJlbnRTdWJzY3JpcHRpb24uc3RhdGUgYXMgU3Vic2NyaXB0aW9uU3RhdGUsXG4gICAgICBjb2xsZWN0aW9uTWV0aG9kOiBwLmN1cnJlbnRTdWJzY3JpcHRpb25cbiAgICAgICAgLmNvbGxlY3Rpb25NZXRob2QgYXMgU3Vic2NyaXB0aW9uQ29sbGVjdGlvbk1ldGhvZCxcbiAgICAgIGFjdGl2YXRlZEF0OiBwLmN1cnJlbnRTdWJzY3JpcHRpb24uYWN0aXZhdGVkQXRcbiAgICAgICAgPyBuZXcgRGF0ZShwLmN1cnJlbnRTdWJzY3JpcHRpb24uYWN0aXZhdGVkQXQpXG4gICAgICAgIDogbnVsbCxcbiAgICAgIGNyZWF0ZWRBdDogcC5jdXJyZW50U3Vic2NyaXB0aW9uLmNyZWF0ZWRBdFxuICAgICAgICA/IG5ldyBEYXRlKHAuY3VycmVudFN1YnNjcmlwdGlvbi5jcmVhdGVkQXQpXG4gICAgICAgIDogbnVsbCxcbiAgICAgIHVwZGF0ZWRBdDogcC5jdXJyZW50U3Vic2NyaXB0aW9uLnVwZGF0ZWRBdFxuICAgICAgICA/IG5ldyBEYXRlKHAuY3VycmVudFN1YnNjcmlwdGlvbi51cGRhdGVkQXQpXG4gICAgICAgIDogbnVsbCxcbiAgICAgIHRyaWFsRW5kc0F0OiBwLmN1cnJlbnRTdWJzY3JpcHRpb24udHJpYWxFbmRzQXRcbiAgICAgICAgPyBuZXcgRGF0ZShwLmN1cnJlbnRTdWJzY3JpcHRpb24udHJpYWxFbmRzQXQpXG4gICAgICAgIDogbnVsbCxcbiAgICAgIHRyaWFsU3RhcnRlZEF0OiBwLmN1cnJlbnRTdWJzY3JpcHRpb24udHJpYWxTdGFydGVkQXRcbiAgICAgICAgPyBuZXcgRGF0ZShwLmN1cnJlbnRTdWJzY3JpcHRpb24udHJpYWxTdGFydGVkQXQpXG4gICAgICAgIDogbnVsbCxcbiAgICAgIHBhdXNlZEF0OiBwLmN1cnJlbnRTdWJzY3JpcHRpb24ucGF1c2VkQXRcbiAgICAgICAgPyBuZXcgRGF0ZShwLmN1cnJlbnRTdWJzY3JpcHRpb24ucGF1c2VkQXQpXG4gICAgICAgIDogbnVsbCxcbiAgICAgIGN1cnJlbnRQZXJpb2RFbmRzQXQ6IHAuY3VycmVudFN1YnNjcmlwdGlvbi5jdXJyZW50UGVyaW9kRW5kc0F0XG4gICAgICAgID8gbmV3IERhdGUocC5jdXJyZW50U3Vic2NyaXB0aW9uLmN1cnJlbnRQZXJpb2RFbmRzQXQpXG4gICAgICAgIDogbnVsbCxcbiAgICAgIGN1cnJlbnRQZXJpb2RTdGFydGVkQXQ6IHAuY3VycmVudFN1YnNjcmlwdGlvbi5jdXJyZW50UGVyaW9kU3RhcnRlZEF0XG4gICAgICAgID8gbmV3IERhdGUocC5jdXJyZW50U3Vic2NyaXB0aW9uLmN1cnJlbnRQZXJpb2RTdGFydGVkQXQpXG4gICAgICAgIDogbnVsbCxcbiAgICAgIGNhbmNlbGVkQXQ6IHAuY3VycmVudFN1YnNjcmlwdGlvbi5jYW5jZWxlZEF0XG4gICAgICAgID8gbmV3IERhdGUocC5jdXJyZW50U3Vic2NyaXB0aW9uLmNhbmNlbGVkQXQpXG4gICAgICAgIDogbnVsbCxcbiAgICAgIGV4cGlyZXNBdDogcC5jdXJyZW50U3Vic2NyaXB0aW9uLmV4cGlyZXNBdFxuICAgICAgICA/IG5ldyBEYXRlKHAuY3VycmVudFN1YnNjcmlwdGlvbi5leHBpcmVzQXQpXG4gICAgICAgIDogbnVsbFxuICAgIH0sXG4gICAgaW52b2ljZXM6IHAuaW52b2ljZXMubWFwKGkgPT4gKHtcbiAgICAgIC4uLmksXG4gICAgICBkYXRlOiBuZXcgRGF0ZShpLmRhdGUpLFxuICAgICAgZHVlOiBuZXcgRGF0ZShpLmR1ZSksXG4gICAgICBzdGF0dXM6IGkuc3RhdHVzIGFzIFJlY3VybHlJbnZvaWNlU3RhdHVzXG4gICAgfSkpXG4gIH07XG59XG5cbmNvbnN0IHBsYW5zQ29kZXMgPSBbXG4gIFwiYmFzaWNfbW9udGhcIixcbiAgXCJhZHZhbmNlZF9tb250aFwiLFxuICBcInByb19tb250aFwiLFxuICBcImJhc2ljX3llYXJcIixcbiAgXCJhZHZhbmNlZF95ZWFyXCIsXG4gIFwicHJvX3llYXJcIlxuXSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgU2VjcmVjeVBsYW5zQ29kZXMgPSB0eXBlb2YgcGxhbnNDb2Rlc1tudW1iZXJdO1xuXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZFBsYW4ocGxhbkNvZGU6IHN0cmluZyk6IHBsYW5Db2RlIGlzIFNlY3JlY3lQbGFuc0NvZGVzIHtcbiAgcmV0dXJuIHBsYW5zQ29kZXMuaW5jbHVkZXMocGxhbkNvZGUgYXMgU2VjcmVjeVBsYW5zQ29kZXMpO1xufVxuXG5leHBvcnQgdHlwZSBVc2VyRGF0YTxcbiAgVCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0gUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbj4gPSB7XG4gIGlzU3VwZXJ1c2VyOiBib29sZWFuO1xuICBpc1NlYXJjaGFibGU6IGJvb2xlYW47XG59ICYgVDtcblxuZXhwb3J0IHR5cGUgRm9sZGVyU2l6ZSA9IHsgc2l6ZTogYmlnaW50OyBzaXplQmVmb3JlOiBiaWdpbnQgfTtcblxuY29uc3QgZ2V0VXNlclNlbGVjdG9yID0gKFxuICB1c2VySWQ6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQsXG4gIHdpdGhQdWJsaWNLZXk6IGJvb2xlYW4gfCB1bmRlZmluZWRcbikgPT4ge1xuICBjb25zdCB7IHVzZXIgfSA9IFNlbGVjdG9yKFwiUXVlcnlcIikoe1xuICAgIHVzZXI6IFtcbiAgICAgIHsgdXNlcklkIH0sXG4gICAgICB7XG4gICAgICAgIGlkOiB0cnVlLFxuICAgICAgICBmaXJzdG5hbWU6IHRydWUsXG4gICAgICAgIGxhc3RuYW1lOiB0cnVlLFxuICAgICAgICBsYW5nOiB0cnVlLFxuICAgICAgICBwdWJsaWNLZXk6IHdpdGhQdWJsaWNLZXkgPyB0cnVlIDogdW5kZWZpbmVkLFxuICAgICAgICBlbWFpbDogdHJ1ZSxcbiAgICAgICAgcGhvbmU6IHRydWUsXG4gICAgICAgIHJvbGU6IHRydWUsXG4gICAgICAgIGRlbGV0ZWRBdDogdHJ1ZSxcbiAgICAgICAgbGFzdExvZ2luOiB0cnVlXG4gICAgICB9XG4gICAgXVxuICB9KTtcbiAgcmV0dXJuIHVzZXI7XG59O1xuXG5leHBvcnQgdHlwZSBBcHBEQkNvbmZpZ0ZpZWxkID0ge1xuICBuYW1lOiBzdHJpbmc7XG4gIHR5cGU6IFwic3RyaW5nXCIgfCBcIm51bWJlclwiIHwgXCJib29sZWFuXCIgfCBcIm9iamVjdFwiO1xuICBpc0FycmF5PzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgaXNOdWxsYWJsZT86IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gIGlzRWRpdGFibGU/OiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICBpc0tleT86IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gIGRlZmF1bHQ/OiB1bmtub3duO1xufTtcblxuZXhwb3J0IHR5cGUgQXBwREJDb25maWcgPSB7XG4gIGZpZWxkczogQXBwREJDb25maWdGaWVsZFtdO1xufTtcblxuZXhwb3J0IHR5cGUgRmFxSXRlbSA9IHtcbiAgb3JkZXI6IG51bWJlcjtcbiAgcXVlc3Rpb246IHN0cmluZztcbiAgYW5zd2VyOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBCbG9nSXRlbSA9IHtcbiAgaWQ6IHN0cmluZztcbiAgYmxvZ0lkOiBzdHJpbmc7XG4gIG9yZGVyOiBudW1iZXI7XG4gIGF1dGhvcjogc3RyaW5nO1xuICBib2R5OiBzdHJpbmc7XG4gIGRhdGU6IERhdGU7XG4gIGltYWdlOiBzdHJpbmc7XG4gIGltYWdlQWx0OiBzdHJpbmc7XG4gIHN1bW1hcnk6IHN0cmluZztcbiAgdGl0bGU6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIFVzZXJCYXNlID0ge1xuICBlbWFpbDogc3RyaW5nO1xuICBwaG9uZTogc3RyaW5nO1xuICBsYXN0bmFtZTogc3RyaW5nO1xuICByb2xlOiBVc2VyUm9sZTtcbiAgZmlyc3RuYW1lOiBzdHJpbmc7XG4gIGlkOiBzdHJpbmc7XG4gIGRlbGV0ZWRBdDogRGF0ZSB8IG51bGw7XG4gIGxhc3RMb2dpbjogRGF0ZTtcbiAgbGFuZzogTGFuZztcbn07XG5cbnR5cGUgV2l0aFB1YmxpY0tleSA9IHsgd2l0aFB1YmxpY0tleT86IGJvb2xlYW4gfTtcblxuZXhwb3J0IHR5cGUgVXNlcjxUIGV4dGVuZHMgV2l0aFB1YmxpY0tleSA9IFdpdGhQdWJsaWNLZXk+ID0gVCBleHRlbmRzIHtcbiAgd2l0aFB1YmxpY0tleTogdHJ1ZTtcbn1cbiAgPyBVc2VyQmFzZSAmIHsgcHVibGljS2V5OiBzdHJpbmcgfVxuICA6IFVzZXJCYXNlO1xuXG50eXBlIENsYXNzR2V0VXNlclBhcmFtcyA9IFdpdGhQdWJsaWNLZXkgJiB7XG4gIHVzZXJJZD86IHN0cmluZztcbn07XG50eXBlIEdldFVzZXJQYXJhbXMgPSBDbGFzc0dldFVzZXJQYXJhbXMgJiB7XG4gIGNsaWVudDogUmV0dXJuVHlwZTx0eXBlb2YgVGh1bmRlcj47XG59O1xuXG50eXBlIFN0YXRpY0dldFVzZXJQYXJhbXMgPSBDbGFzc0dldFVzZXJQYXJhbXMgJiB7XG4gIGVudjogU2VjcmVjeUVudjtcbn07XG5cbmFzeW5jIGZ1bmN0aW9uIGdldFVzZXI8VSBleHRlbmRzIFdpdGhQdWJsaWNLZXk+KFxuICBwYXJhbXM6IEdldFVzZXJQYXJhbXNcbik6IFByb21pc2U8VXNlcjxVPiB8IG51bGw+IHtcbiAgY29uc3Qgc2VsZWN0b3IgPSBnZXRVc2VyU2VsZWN0b3IocGFyYW1zLnVzZXJJZCwgcGFyYW1zLndpdGhQdWJsaWNLZXkpO1xuICBjb25zdCB7IHVzZXIgfSA9IGF3YWl0IHBhcmFtcy5jbGllbnQoXCJxdWVyeVwiKSh7XG4gICAgdXNlcjogc2VsZWN0b3JcbiAgfSk7XG5cbiAgaWYgKCF1c2VyKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIC4uLnVzZXIsXG4gICAgbGFzdExvZ2luOiBuZXcgRGF0ZSh1c2VyLmxhc3RMb2dpbiksXG4gICAgZGVsZXRlZEF0OiB1c2VyLmRlbGV0ZWRBdCA/IG5ldyBEYXRlKHVzZXIuZGVsZXRlZEF0KSA6IG51bGxcbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgQ2xvdWRMaW1pdHMgPSB7XG4gIGNvdW50OiBiaWdpbnQ7XG4gIG1heENvdW50OiBiaWdpbnQgfCBudWxsO1xuICBzaXplOiBiaWdpbnQ7XG4gIG1heFNpemU6IGJpZ2ludCB8IG51bGw7XG59O1xuXG5leHBvcnQgdHlwZSBNYWlsTGltaXRzVmFsdWVzID0ge1xuICBjb3VudDogYmlnaW50O1xuICBtYXhDb3VudDogYmlnaW50IHwgbnVsbDtcbiAgZmlsZVNpemU6IGJpZ2ludDtcbiAgbWF4RmlsZVNpemU6IGJpZ2ludCB8IG51bGw7XG4gIGZpbGVDb3VudDogYmlnaW50O1xuICBtYXhGaWxlQ291bnQ6IGJpZ2ludCB8IG51bGw7XG59O1xuXG5leHBvcnQgdHlwZSBRdWVyeUxpbWl0cyA9IHtcbiAgY2xvdWQ6IENsb3VkTGltaXRzO1xuICBtYWlsOiB7XG4gICAgc2VudDogTWFpbExpbWl0c1ZhbHVlcztcbiAgICByZWNlaXZlZDogTWFpbExpbWl0c1ZhbHVlcztcbiAgfTtcbn07XG5cbmV4cG9ydCBjbGFzcyBCYXNlQ2xpZW50IHtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBnZXRCYXNlVXJsID0gKFxuICAgIGVudjogU2VjcmVjeUVudiA9IFwicHJvZFwiLFxuICAgIGdyYXBoY2RuID0gdHJ1ZVxuICApOiBzdHJpbmcgPT4ge1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJ0ZXN0XCIpIHtcbiAgICAgIHJldHVybiBcImh0dHA6Ly9sb2NhbGhvc3Q6NDAwMC9ncmFwaHFsXCI7XG4gICAgfVxuXG4gICAgc3dpdGNoIChlbnYpIHtcbiAgICAgIGNhc2UgXCJwcm9kXCI6XG4gICAgICAgIHJldHVybiBncmFwaGNkblxuICAgICAgICAgID8gXCJodHRwczovL3NlY3JlY3kuZ3JhcGhjZG4uYXBwXCJcbiAgICAgICAgICA6IFwiaHR0cHM6Ly9hcGkuc2VjcmVjeS5tZS9ncmFwaHFsXCI7XG4gICAgICBjYXNlIFwic3RhZ2luZ1wiOlxuICAgICAgICByZXR1cm4gXCJodHRwczovL2FwaS5zdGFnaW5nLnNlY3JlY3kubWUvZ3JhcGhxbFwiO1xuICAgICAgY2FzZSBcImRldlwiOlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIFwiaHR0cHM6Ly9hcGkuZGV2LnNlY3JlY3kubWUvZ3JhcGhxbFwiO1xuICAgIH1cbiAgfTtcblxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfZ2V0QmFzZUNsaWVudCA9IChcbiAgICBlbnY6IFNlY3JlY3lFbnYsXG4gICAgc2Vzc2lvbj86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWRcbiAgKTogUmV0dXJuVHlwZTx0eXBlb2YgVGh1bmRlcj4gPT5cbiAgICBjcmVhdGVUaHVuZGVyKEJhc2VDbGllbnQuZ2V0QmFzZVVybChlbnYpLCBzZXNzaW9uKTtcblxuICBwcm90ZWN0ZWQgY2xpZW50OiBSZXR1cm5UeXBlPHR5cGVvZiBUaHVuZGVyPjtcblxuICBwdWJsaWMgc2Vzc2lvbklkOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3Ioc2Vzc2lvbjogc3RyaW5nLCBlbnY6IFNlY3JlY3lFbnYpIHtcbiAgICB0aGlzLnNlc3Npb25JZCA9IHNlc3Npb247XG4gICAgdGhpcy5jbGllbnQgPSBCYXNlQ2xpZW50Ll9nZXRCYXNlQ2xpZW50KGVudiwgc2Vzc2lvbik7XG4gIH1cblxuICBhc3luYyBzZXNzaW9ucygpOiBQcm9taXNlPFVzZXJTZXNzaW9uW10+IHtcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5jbGllbnQoXCJxdWVyeVwiKSh7XG4gICAgICB1c2VyOiBbXG4gICAgICAgIHt9LFxuICAgICAgICB7XG4gICAgICAgICAgc2Vzc2lvbnM6IHtcbiAgICAgICAgICAgIGlkOiB0cnVlLFxuICAgICAgICAgICAgbGFzdEFjdGl2aXR5OiB0cnVlLFxuICAgICAgICAgICAgdXNlckFnZW50OiB0cnVlLFxuICAgICAgICAgICAgaXA6IHRydWUsXG4gICAgICAgICAgICBjaXR5OiB0cnVlLFxuICAgICAgICAgICAgY291bnRyeTogdHJ1ZSxcbiAgICAgICAgICAgIGFwcFNlc3Npb25zOiB7XG4gICAgICAgICAgICAgIGlkOiB0cnVlLFxuICAgICAgICAgICAgICBsYXN0QWN0aXZpdHk6IHRydWUsXG4gICAgICAgICAgICAgIHVzZXJBZ2VudDogdHJ1ZSxcbiAgICAgICAgICAgICAgaXA6IHRydWUsXG4gICAgICAgICAgICAgIGNpdHk6IHRydWUsXG4gICAgICAgICAgICAgIGNvdW50cnk6IHRydWUsXG4gICAgICAgICAgICAgIHVzZXJBcHA6IHtcbiAgICAgICAgICAgICAgICBhcHA6IHtcbiAgICAgICAgICAgICAgICAgIG5hbWU6IHRydWVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9KTtcblxuICAgIGNvbnN0IHNlc3Npb25zOiBVc2VyU2Vzc2lvbltdID1cbiAgICAgIGRhdGEudXNlcj8uc2Vzc2lvbnMubWFwKHMgPT4gKHtcbiAgICAgICAgaWQ6IHMuaWQsXG4gICAgICAgIGlwOiBzLmlwLFxuICAgICAgICBjaXR5OiBzLmNpdHksXG4gICAgICAgIGNvdW50cnk6IHMuY291bnRyeSxcbiAgICAgICAgbGFzdEFjdGl2aXR5OiBzLmxhc3RBY3Rpdml0eSA/IG5ldyBEYXRlKHMubGFzdEFjdGl2aXR5KSA6IHVuZGVmaW5lZCxcbiAgICAgICAgdXNlckFnZW50OiBzLnVzZXJBZ2VudCxcbiAgICAgICAgYXBwU2Vzc2lvbnM6IHMuYXBwU2Vzc2lvbnMubWFwKGEgPT4gKHtcbiAgICAgICAgICBpZDogYS5pZCxcbiAgICAgICAgICBpcDogYS5pcCxcbiAgICAgICAgICBjaXR5OiBhLmNpdHksXG4gICAgICAgICAgY291bnRyeTogYS5jb3VudHJ5LFxuICAgICAgICAgIGxhc3RBY3Rpdml0eTogYS5sYXN0QWN0aXZpdHkgPyBuZXcgRGF0ZShhLmxhc3RBY3Rpdml0eSkgOiB1bmRlZmluZWQsXG4gICAgICAgICAgdXNlckFnZW50OiBhLnVzZXJBZ2VudCxcbiAgICAgICAgICBhcHA6IGEudXNlckFwcD8uYXBwLm5hbWUgPz8gXCJcIlxuICAgICAgICB9KSlcbiAgICAgIH0pKSA/PyBbXTtcblxuICAgIHJldHVybiBzZXNzaW9ucztcbiAgfVxuXG4gIGFzeW5jIGxvZ291dChzZXNzaW9uSWQ/OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCFzZXNzaW9uSWQpIHtcbiAgICAgIGNvbnN0IGxvY2FsID0gZ2V0U3RvcmFnZShmYWxzZSk7XG4gICAgICBjb25zdCBzZXNzaW9uID0gZ2V0U3RvcmFnZSh0cnVlKTtcbiAgICAgIGxvY2FsLmp3dC5jbGVhcigpO1xuICAgICAgbG9jYWwudXNlckFwcEtleXMuY2xlYXIoKTtcbiAgICAgIGxvY2FsLnVzZXJBcHBTZXNzaW9uLmNsZWFyKCk7XG4gICAgICBzZXNzaW9uLmp3dC5jbGVhcigpO1xuICAgICAgc2Vzc2lvbi51c2VyQXBwS2V5cy5jbGVhcigpO1xuICAgICAgc2Vzc2lvbi51c2VyQXBwU2Vzc2lvbi5jbGVhcigpO1xuICAgICAgdXNlcnNDYWNoZS5jbGVhcigpO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5jbGllbnQoXCJtdXRhdGlvblwiKSh7XG4gICAgICAgIGxvZ291dDogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHNlc3Npb25JZFxuICAgICAgICAgIH0sXG4gICAgICAgICAgdHJ1ZVxuICAgICAgICBdXG4gICAgICB9KTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIC8vXG4gICAgfVxuICB9XG5cbiAgYXN5bmMgbWU8VCBleHRlbmRzIFdpdGhQdWJsaWNLZXkgPSBXaXRoUHVibGljS2V5PihcbiAgICBwYXJhbXM/OiBUXG4gICk6IFByb21pc2U8VXNlcjxUPiB8IG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy51c2VyKHBhcmFtcyB8fCAoeyB3aXRoUHVibGljS2V5OiB0cnVlIH0gYXMgVCkpO1xuICB9XG5cbiAgc3RhdGljIGFzeW5jIHVzZXI8VCBleHRlbmRzIFN0YXRpY0dldFVzZXJQYXJhbXM+KFxuICAgIHBhcmFtczogVCxcbiAgICBzZXNzaW9uSWQ/OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkXG4gICk6IFByb21pc2U8VXNlcjxUPiB8IG51bGw+IHtcbiAgICBjb25zdCB1c2VyID0gYXdhaXQgZ2V0VXNlcjxUPih7XG4gICAgICBjbGllbnQ6IHRoaXMuX2dldEJhc2VDbGllbnQocGFyYW1zLmVudiwgc2Vzc2lvbklkKSxcbiAgICAgIHVzZXJJZDogcGFyYW1zLnVzZXJJZCxcbiAgICAgIHdpdGhQdWJsaWNLZXk6IHBhcmFtcy53aXRoUHVibGljS2V5XG4gICAgfSk7XG5cbiAgICBpZiAodXNlcikge1xuICAgICAgdXNlcnNDYWNoZS5zZXQodXNlci5pZCwgdXNlcik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHVzZXI7XG4gIH1cblxuICBhc3luYyB1c2VyPFQgZXh0ZW5kcyBDbGFzc0dldFVzZXJQYXJhbXM+KHBhcmFtczogVCk6IFByb21pc2U8VXNlcjxUPiB8IG51bGw+IHtcbiAgICBjb25zdCB1c2VyID0gYXdhaXQgZ2V0VXNlcjxUPih7XG4gICAgICBjbGllbnQ6IHRoaXMuY2xpZW50LFxuICAgICAgdXNlcklkOiBwYXJhbXMudXNlcklkLFxuICAgICAgd2l0aFB1YmxpY0tleTogcGFyYW1zLndpdGhQdWJsaWNLZXlcbiAgICB9KTtcblxuICAgIGlmICh1c2VyKSB7XG4gICAgICB1c2Vyc0NhY2hlLnNldCh1c2VyLmlkLCB1c2VyKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdXNlcjtcbiAgfVxuXG4gIGFzeW5jIHVwZGF0ZVByb2ZpbGUoe1xuICAgIGZpcnN0bmFtZSxcbiAgICBsYXN0bmFtZSxcbiAgICBsYW5nXG4gIH06IHtcbiAgICBmaXJzdG5hbWU6IHN0cmluZyB8IG51bGw7XG4gICAgbGFzdG5hbWU6IHN0cmluZyB8IG51bGw7XG4gICAgbGFuZzogTGFuZyB8IG51bGw7XG4gIH0pOiBQcm9taXNlPFVzZXI+IHtcbiAgICBjb25zdCB7IHVwZGF0ZVByb2ZpbGUgfSA9IGF3YWl0IHRoaXMuY2xpZW50KFwibXV0YXRpb25cIikoe1xuICAgICAgdXBkYXRlUHJvZmlsZTogW1xuICAgICAgICB7XG4gICAgICAgICAgZmlyc3RuYW1lLFxuICAgICAgICAgIGxhc3RuYW1lLFxuICAgICAgICAgIGxhbmdcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGlkOiB0cnVlLFxuICAgICAgICAgIGZpcnN0bmFtZTogdHJ1ZSxcbiAgICAgICAgICBsYXN0bmFtZTogdHJ1ZSxcbiAgICAgICAgICBsYW5nOiB0cnVlLFxuICAgICAgICAgIGVtYWlsOiB0cnVlLFxuICAgICAgICAgIHBob25lOiB0cnVlLFxuICAgICAgICAgIHJvbGU6IHRydWUsXG4gICAgICAgICAgZGVsZXRlZEF0OiB0cnVlLFxuICAgICAgICAgIGxhc3RMb2dpbjogdHJ1ZVxuICAgICAgICB9XG4gICAgICBdXG4gICAgfSk7XG5cbiAgICBpZiAoIXVwZGF0ZVByb2ZpbGUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIlNob3VsZCBub3QgaGFwcGVuXCIpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAuLi51cGRhdGVQcm9maWxlLFxuICAgICAgbGFzdExvZ2luOiBuZXcgRGF0ZSh1cGRhdGVQcm9maWxlLmxhc3RMb2dpbiksXG4gICAgICBkZWxldGVkQXQ6IHVwZGF0ZVByb2ZpbGUuZGVsZXRlZEF0XG4gICAgICAgID8gbmV3IERhdGUodXBkYXRlUHJvZmlsZS5kZWxldGVkQXQpXG4gICAgICAgIDogbnVsbFxuICAgIH07XG4gIH1cblxuICBzdGF0aWMgYXN5bmMgcGxhbnMoXG4gICAgZW52OiBTZWNyZWN5RW52LFxuICAgIHNlc3Npb25JZD86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWRcbiAgKTogUHJvbWlzZTxQbGFuW10+IHtcbiAgICBjb25zdCB7IHBsYW5zIH0gPSBhd2FpdCBCYXNlQ2xpZW50Ll9nZXRCYXNlQ2xpZW50KGVudiwgc2Vzc2lvbklkKShcInF1ZXJ5XCIpKHtcbiAgICAgIHBsYW5zOiB7XG4gICAgICAgIGtpbmQ6IHRydWUsXG4gICAgICAgIGNvZGVzOiB0cnVlLFxuICAgICAgICBsaW1pdHM6IHtcbiAgICAgICAgICBkb3dubG9hZEJhbmR3aWR0aDogdHJ1ZSxcbiAgICAgICAgICBkb3dubG9hZENvdW50OiB0cnVlLFxuICAgICAgICAgIGhhcmRGaWxlQ291bnQ6IHRydWUsXG4gICAgICAgICAgaGFyZEZpbGVTaXplOiB0cnVlLFxuICAgICAgICAgIHBlckZpbGVTaXplOiB0cnVlLFxuICAgICAgICAgIHVwbG9hZEJhbmR3aWR0aDogdHJ1ZSxcbiAgICAgICAgICB1cGxvYWRDb3VudDogdHJ1ZSxcbiAgICAgICAgICByZWNlaXZlZE1haWxzOiB7XG4gICAgICAgICAgICBjb3VudDogdHJ1ZSxcbiAgICAgICAgICAgIGZpbGVDb3VudDogdHJ1ZSxcbiAgICAgICAgICAgIGZpbGVTaXplOiB0cnVlLFxuICAgICAgICAgICAgaGFyZENvdW50OiB0cnVlLFxuICAgICAgICAgICAgaGFyZEZpbGVDb3VudDogdHJ1ZSxcbiAgICAgICAgICAgIGhhcmRGaWxlU2l6ZTogdHJ1ZSxcbiAgICAgICAgICAgIHBlckZpbGVTaXplOiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZW50TWFpbHM6IHtcbiAgICAgICAgICAgIGNvdW50OiB0cnVlLFxuICAgICAgICAgICAgZmlsZUNvdW50OiB0cnVlLFxuICAgICAgICAgICAgZmlsZVNpemU6IHRydWUsXG4gICAgICAgICAgICBoYXJkQ291bnQ6IHRydWUsXG4gICAgICAgICAgICBoYXJkRmlsZUNvdW50OiB0cnVlLFxuICAgICAgICAgICAgaGFyZEZpbGVTaXplOiB0cnVlLFxuICAgICAgICAgICAgcGVyRmlsZVNpemU6IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBwbGFucztcbiAgfVxuXG4gIGFzeW5jIHBheShcbiAgICBwbGFuQ29kZTogU2VjcmVjeVBsYW5zQ29kZXMsXG4gICAgaW5wdXQ6IFBheUlucHV0LFxuICAgIGF1dG9SZW5ldz86IGJvb2xlYW4gfCBudWxsIHwgdW5kZWZpbmVkXG4gICk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IHsgcGF5IH0gPSBhd2FpdCB0aGlzLmNsaWVudChcIm11dGF0aW9uXCIpKHtcbiAgICAgIHBheTogW1xuICAgICAgICB7XG4gICAgICAgICAgaW5wdXQsXG4gICAgICAgICAgcGxhbkNvZGUsXG4gICAgICAgICAgYXV0b1JlbmV3XG4gICAgICAgIH0sXG4gICAgICAgIHRydWVcbiAgICAgIF1cbiAgICB9KTtcblxuICAgIHJldHVybiBwYXkgPz8gZmFsc2U7XG4gIH1cblxuICBhc3luYyBjYW5jZWxQYXltZW50KCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IHsgY2FuY2VsUGF5bWVudCB9ID0gYXdhaXQgdGhpcy5jbGllbnQoXCJtdXRhdGlvblwiKSh7XG4gICAgICBjYW5jZWxQYXltZW50OiB0cnVlXG4gICAgfSk7XG5cbiAgICByZXR1cm4gY2FuY2VsUGF5bWVudCA/PyBmYWxzZTtcbiAgfVxuXG4gIGFzeW5jIHBheW1lbnRJbmZvcygpOiBQcm9taXNlPFBheW1lbnRJbmZvcyB8IG51bGw+IHtcbiAgICBjb25zdCB7IHBheW1lbnRJbmZvcyB9ID0gYXdhaXQgdGhpcy5jbGllbnQoXCJxdWVyeVwiKSh7XG4gICAgICBwYXltZW50SW5mb3M6IHtcbiAgICAgICAgaG9zdGVkVXJsOiB0cnVlLFxuICAgICAgICBjdXJyZW50U3Vic2NyaXB0aW9uOiB7XG4gICAgICAgICAgYXV0b3JlbmV3OiB0cnVlLFxuICAgICAgICAgIGFjdGl2YXRlZEF0OiB0cnVlLFxuICAgICAgICAgIGN1cnJlbnRQZXJpb2RFbmRzQXQ6IHRydWUsXG4gICAgICAgICAgY3VycmVudFBlcmlvZFN0YXJ0ZWRBdDogdHJ1ZSxcbiAgICAgICAgICBjYW5jZWxlZEF0OiB0cnVlLFxuICAgICAgICAgIGNyZWF0ZWRBdDogdHJ1ZSxcbiAgICAgICAgICBleHBpcmVzQXQ6IHRydWUsXG4gICAgICAgICAgcGF1c2VkQXQ6IHRydWUsXG4gICAgICAgICAgdHJpYWxFbmRzQXQ6IHRydWUsXG4gICAgICAgICAgdHJpYWxTdGFydGVkQXQ6IHRydWUsXG4gICAgICAgICAgdXBkYXRlZEF0OiB0cnVlLFxuICAgICAgICAgIHN0YXRlOiB0cnVlLFxuICAgICAgICAgIGNvbGxlY3Rpb25NZXRob2Q6IHRydWUsXG4gICAgICAgICAgcGxhbjogdHJ1ZSxcbiAgICAgICAgICBwbGFuQ29kZTogdHJ1ZSxcblxuICAgICAgICAgIHRvdGFsOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIGludm9pY2VzOiB7XG4gICAgICAgICAgcGRmOiB0cnVlLFxuICAgICAgICAgIGRhdGU6IHRydWUsXG4gICAgICAgICAgZHVlOiB0cnVlLFxuICAgICAgICAgIHN0YXR1czogdHJ1ZSxcbiAgICAgICAgICB0b3RhbDogdHJ1ZSxcbiAgICAgICAgICBuYW1lOiB0cnVlLFxuICAgICAgICAgIGN1cnJlbmN5OiB0cnVlXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmICghcGF5bWVudEluZm9zKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gaW50ZXJuYWxUb1BheW1lbnRJbmZvcyhwYXltZW50SW5mb3MpO1xuICB9XG5cbiAgYXN5bmMgbGltaXRzKCk6IFByb21pc2U8UXVlcnlMaW1pdHMgfCBudWxsPiB7XG4gICAgY29uc3QgeyBsaW1pdHMgfSA9IGF3YWl0IHRoaXMuY2xpZW50KFwicXVlcnlcIikoe1xuICAgICAgbGltaXRzOiB7XG4gICAgICAgIGNsb3VkOiB7XG4gICAgICAgICAgc2l6ZTogdHJ1ZSxcbiAgICAgICAgICBtYXhTaXplOiB0cnVlLFxuICAgICAgICAgIGNvdW50OiB0cnVlLFxuICAgICAgICAgIG1heENvdW50OiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIG1haWw6IHtcbiAgICAgICAgICByZWNlaXZlZDoge1xuICAgICAgICAgICAgY291bnQ6IHRydWUsXG4gICAgICAgICAgICBtYXhDb3VudDogdHJ1ZSxcbiAgICAgICAgICAgIGZpbGVDb3VudDogdHJ1ZSxcbiAgICAgICAgICAgIG1heEZpbGVDb3VudDogdHJ1ZSxcbiAgICAgICAgICAgIGZpbGVTaXplOiB0cnVlLFxuICAgICAgICAgICAgbWF4RmlsZVNpemU6IHRydWVcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbnQ6IHtcbiAgICAgICAgICAgIGNvdW50OiB0cnVlLFxuICAgICAgICAgICAgbWF4Q291bnQ6IHRydWUsXG4gICAgICAgICAgICBmaWxlQ291bnQ6IHRydWUsXG4gICAgICAgICAgICBtYXhGaWxlQ291bnQ6IHRydWUsXG4gICAgICAgICAgICBmaWxlU2l6ZTogdHJ1ZSxcbiAgICAgICAgICAgIG1heEZpbGVTaXplOiB0cnVlXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAoIWxpbWl0cykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3QgeyBjbG91ZCwgbWFpbCB9ID0gbGltaXRzO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGNsb3VkOiB7XG4gICAgICAgIGNvdW50OiBCaWdJbnQoY2xvdWQuY291bnQpLFxuICAgICAgICBzaXplOiBCaWdJbnQoY2xvdWQuc2l6ZSksXG4gICAgICAgIG1heENvdW50OiBjbG91ZC5tYXhDb3VudCA/IEJpZ0ludChjbG91ZC5tYXhDb3VudCkgOiBudWxsLFxuICAgICAgICBtYXhTaXplOiBjbG91ZC5tYXhTaXplID8gQmlnSW50KGNsb3VkLm1heFNpemUpIDogbnVsbFxuICAgICAgfSxcbiAgICAgIG1haWw6IHtcbiAgICAgICAgcmVjZWl2ZWQ6IHtcbiAgICAgICAgICBjb3VudDogQmlnSW50KG1haWwucmVjZWl2ZWQuY291bnQpLFxuICAgICAgICAgIG1heENvdW50OiBtYWlsLnJlY2VpdmVkLm1heENvdW50XG4gICAgICAgICAgICA/IEJpZ0ludChtYWlsLnJlY2VpdmVkLm1heENvdW50KVxuICAgICAgICAgICAgOiBudWxsLFxuICAgICAgICAgIGZpbGVDb3VudDogQmlnSW50KG1haWwucmVjZWl2ZWQuZmlsZUNvdW50KSxcbiAgICAgICAgICBtYXhGaWxlQ291bnQ6IG1haWwucmVjZWl2ZWQubWF4RmlsZUNvdW50XG4gICAgICAgICAgICA/IEJpZ0ludChtYWlsLnJlY2VpdmVkLm1heEZpbGVDb3VudClcbiAgICAgICAgICAgIDogbnVsbCxcbiAgICAgICAgICBmaWxlU2l6ZTogQmlnSW50KG1haWwucmVjZWl2ZWQuZmlsZVNpemUpLFxuICAgICAgICAgIG1heEZpbGVTaXplOiBtYWlsLnJlY2VpdmVkLm1heEZpbGVTaXplXG4gICAgICAgICAgICA/IEJpZ0ludChtYWlsLnJlY2VpdmVkLm1heEZpbGVTaXplKVxuICAgICAgICAgICAgOiBudWxsXG4gICAgICAgIH0sXG4gICAgICAgIHNlbnQ6IHtcbiAgICAgICAgICBjb3VudDogQmlnSW50KG1haWwuc2VudC5jb3VudCksXG4gICAgICAgICAgbWF4Q291bnQ6IG1haWwuc2VudC5tYXhDb3VudCA/IEJpZ0ludChtYWlsLnNlbnQubWF4Q291bnQpIDogbnVsbCxcbiAgICAgICAgICBmaWxlQ291bnQ6IEJpZ0ludChtYWlsLnNlbnQuZmlsZUNvdW50KSxcbiAgICAgICAgICBtYXhGaWxlQ291bnQ6IG1haWwuc2VudC5tYXhGaWxlQ291bnRcbiAgICAgICAgICAgID8gQmlnSW50KG1haWwuc2VudC5tYXhGaWxlQ291bnQpXG4gICAgICAgICAgICA6IG51bGwsXG4gICAgICAgICAgZmlsZVNpemU6IEJpZ0ludChtYWlsLnNlbnQuZmlsZVNpemUpLFxuICAgICAgICAgIG1heEZpbGVTaXplOiBtYWlsLnNlbnQubWF4RmlsZVNpemVcbiAgICAgICAgICAgID8gQmlnSW50KG1haWwuc2VudC5tYXhGaWxlU2l6ZSlcbiAgICAgICAgICAgIDogbnVsbFxuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIGFzeW5jIGdvZEZhdGhlckFuZENoaWxkcmVuKCk6IFByb21pc2U8R29kRmF0aGVyQW5kQ2hpbGRyZW4gfCBudWxsPiB7XG4gICAgY29uc3QgeyB1c2VyIH0gPSBhd2FpdCB0aGlzLmNsaWVudChcInF1ZXJ5XCIpKHtcbiAgICAgIHVzZXI6IFtcbiAgICAgICAge30sXG4gICAgICAgIHtcbiAgICAgICAgICBnb2RDaGlsZHJlbjoge1xuICAgICAgICAgICAgaWQ6IHRydWUsXG4gICAgICAgICAgICBmaXJzdG5hbWU6IHRydWUsXG4gICAgICAgICAgICBsYXN0bmFtZTogdHJ1ZSxcbiAgICAgICAgICAgIGVtYWlsOiB0cnVlLFxuICAgICAgICAgICAgcGhvbmU6IHRydWVcbiAgICAgICAgICB9LFxuICAgICAgICAgIGdvZEZhdGhlcjoge1xuICAgICAgICAgICAgaWQ6IHRydWUsXG4gICAgICAgICAgICBmaXJzdG5hbWU6IHRydWUsXG4gICAgICAgICAgICBsYXN0bmFtZTogdHJ1ZSxcbiAgICAgICAgICAgIGVtYWlsOiB0cnVlLFxuICAgICAgICAgICAgcGhvbmU6IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9KTtcblxuICAgIGlmICghdXNlcikge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnVzZXIsXG4gICAgICBnb2RGYXRoZXI6IHVzZXIuZ29kRmF0aGVyID8/IG51bGxcbiAgICB9O1xuICB9XG5cbiAgc3RhdGljIGFzeW5jIHVwZGF0ZUFwcERCQ29uZmlnKHtcbiAgICBhcHBDb2RlLFxuICAgIGNvbmZpZyxcbiAgICBlbnYsXG4gICAgc2Vzc2lvbklkXG4gIH06IHtcbiAgICBhcHBDb2RlOiBzdHJpbmc7XG4gICAgY29uZmlnOiBBcHBEQkNvbmZpZztcbiAgICBlbnY6IFNlY3JlY3lFbnY7XG4gICAgc2Vzc2lvbklkPzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgfSk6IFByb21pc2U8QXBwREJDb25maWc+IHtcbiAgICBjb25zdCB7IGRiQ29uZmlnIH0gPSBhd2FpdCBCYXNlQ2xpZW50Ll9nZXRCYXNlQ2xpZW50KFxuICAgICAgZW52LFxuICAgICAgc2Vzc2lvbklkXG4gICAgKShcIm11dGF0aW9uXCIpKHtcbiAgICAgIGRiQ29uZmlnOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBhcHBDb2RlLFxuICAgICAgICAgIGNvbmZpZzogSlNPTi5zdHJpbmdpZnkoY29uZmlnKVxuICAgICAgICB9LFxuICAgICAgICB0cnVlXG4gICAgICBdXG4gICAgfSk7XG5cbiAgICByZXR1cm4gZGJDb25maWc7XG4gIH1cblxuICBzdGF0aWMgYXN5bmMgZ2V0QXBwREJDb25maWcoXG4gICAgYXBwQ29kZTogc3RyaW5nLFxuICAgIGVudjogU2VjcmVjeUVudixcbiAgICBzZXNzaW9uSWQ/OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkXG4gICk6IFByb21pc2U8QXBwREJDb25maWc+IHtcbiAgICBjb25zdCB7IGRiQ29uZmlnIH0gPSBhd2FpdCBCYXNlQ2xpZW50Ll9nZXRCYXNlQ2xpZW50KFxuICAgICAgZW52LFxuICAgICAgc2Vzc2lvbklkXG4gICAgKShcInF1ZXJ5XCIpKHtcbiAgICAgIGRiQ29uZmlnOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBhcHBDb2RlXG4gICAgICAgIH0sXG4gICAgICAgIHRydWVcbiAgICAgIF1cbiAgICB9KTtcblxuICAgIHJldHVybiBkYkNvbmZpZztcbiAgfVxuXG4gIHN0YXRpYyBhc3luYyBnZXRGQVEoe1xuICAgIGxhbmcsXG4gICAgZW52LFxuICAgIHNlc3Npb25JZFxuICB9OiB7XG4gICAgbGFuZz86IExhbmc7XG4gICAgZW52OiBTZWNyZWN5RW52O1xuICAgIHNlc3Npb25JZD86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIH0pOiBQcm9taXNlPEZhcUl0ZW1bXT4ge1xuICAgIGNvbnN0IHsgZmFxIH0gPSBhd2FpdCBCYXNlQ2xpZW50Ll9nZXRCYXNlQ2xpZW50KGVudiwgc2Vzc2lvbklkKShcInF1ZXJ5XCIpKHtcbiAgICAgIGZhcTogW1xuICAgICAgICB7XG4gICAgICAgICAgbGFuZ1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgYW5zd2VyOiB0cnVlLFxuICAgICAgICAgIG9yZGVyOiB0cnVlLFxuICAgICAgICAgIHF1ZXN0aW9uOiB0cnVlXG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9KTtcblxuICAgIHJldHVybiBmYXE7XG4gIH1cblxuICBzdGF0aWMgYXN5bmMgZ2V0QmxvZyh7XG4gICAgZW52LFxuICAgIGxhbmcsXG4gICAgc2Vzc2lvbklkXG4gIH06IHtcbiAgICBlbnY6IFNlY3JlY3lFbnY7XG4gICAgbGFuZz86IExhbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xuICAgIHNlc3Npb25JZD86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIH0pOiBQcm9taXNlPEJsb2dJdGVtW10+IHtcbiAgICBjb25zdCB7IGJsb2cgfSA9IGF3YWl0IEJhc2VDbGllbnQuX2dldEJhc2VDbGllbnQoZW52LCBzZXNzaW9uSWQpKFwicXVlcnlcIikoe1xuICAgICAgYmxvZzogW1xuICAgICAgICB7XG4gICAgICAgICAgbGFuZ1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgaWQ6IHRydWUsXG4gICAgICAgICAgYmxvZ0lkOiB0cnVlLFxuICAgICAgICAgIGF1dGhvcjogdHJ1ZSxcbiAgICAgICAgICBib2R5OiB0cnVlLFxuICAgICAgICAgIGRhdGU6IHRydWUsXG4gICAgICAgICAgaW1hZ2U6IHRydWUsXG4gICAgICAgICAgaW1hZ2VBbHQ6IHRydWUsXG4gICAgICAgICAgc3VtbWFyeTogdHJ1ZSxcbiAgICAgICAgICB0aXRsZTogdHJ1ZSxcbiAgICAgICAgICBvcmRlcjogdHJ1ZVxuICAgICAgICB9XG4gICAgICBdXG4gICAgfSk7XG5cbiAgICByZXR1cm4gYmxvZy5tYXAoYiA9PiAoeyAuLi5iLCBkYXRlOiBuZXcgRGF0ZShiLmRhdGUpIH0pKTtcbiAgfVxuXG4gIGFzeW5jIHJlcG9ydFVzZXIoXG4gICAgcmVwb3J0ZWRVc2VySWQ6IHN0cmluZyxcbiAgICBjdXN0b21NZXNzYWdlPzogc3RyaW5nXG4gICk6IFByb21pc2U8U2VuZFJlcG9ydCB8IHVuZGVmaW5lZD4ge1xuICAgIGNvbnN0IHsgc2VuZFJlcG9ydCB9ID0gYXdhaXQgdGhpcy5jbGllbnQoXCJtdXRhdGlvblwiKSh7XG4gICAgICBzZW5kUmVwb3J0OiBbXG4gICAgICAgIHtcbiAgICAgICAgICByZXBvcnRlZFVzZXJJZCxcbiAgICAgICAgICBjdXN0b21NZXNzYWdlXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBpZDogdHJ1ZSxcbiAgICAgICAgICBjdXN0b21NZXNzYWdlOiB0cnVlLFxuICAgICAgICAgIHVzZXI6IHtcbiAgICAgICAgICAgIGlkOiB0cnVlLFxuICAgICAgICAgICAgZmlyc3RuYW1lOiB0cnVlLFxuICAgICAgICAgICAgbGFzdG5hbWU6IHRydWUsXG4gICAgICAgICAgICBlbWFpbDogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgcmVwb3J0ZWRVc2VyOiB7XG4gICAgICAgICAgICBpZDogdHJ1ZSxcbiAgICAgICAgICAgIGZpcnN0bmFtZTogdHJ1ZSxcbiAgICAgICAgICAgIGxhc3RuYW1lOiB0cnVlLFxuICAgICAgICAgICAgZW1haWw6IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9KTtcblxuICAgIHJldHVybiBzZW5kUmVwb3J0O1xuICB9XG5cbiAgc3RhdGljIGFzeW5jIGRlbGV0ZVVzZXIoe1xuICAgIHNlc3Npb25JZCxcbiAgICB1c2VySWQsXG4gICAgZW52XG4gIH06IHtcbiAgICBzZXNzaW9uSWQ6IHN0cmluZztcbiAgICB1c2VySWQ/OiBzdHJpbmc7XG4gICAgZW52OiBTZWNyZWN5RW52O1xuICB9KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgeyBkZWxldGVVc2VyIH0gPSBhd2FpdCBCYXNlQ2xpZW50Ll9nZXRCYXNlQ2xpZW50KFxuICAgICAgZW52LFxuICAgICAgc2Vzc2lvbklkXG4gICAgKShcIm11dGF0aW9uXCIpKHtcbiAgICAgIGRlbGV0ZVVzZXI6IFtcbiAgICAgICAge1xuICAgICAgICAgIHVzZXJJZFxuICAgICAgICB9LFxuICAgICAgICB0cnVlXG4gICAgICBdXG4gICAgfSk7XG5cbiAgICByZXR1cm4gZGVsZXRlVXNlciA/PyBmYWxzZTtcbiAgfVxuXG4gIGFzeW5jIGRiR2V0PFU+KHtcbiAgICBmaWVsZCxcbiAgICB1c2VySWRcbiAgfToge1xuICAgIGZpZWxkOiBzdHJpbmc7XG4gICAgdXNlcklkPzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgfSk6IFByb21pc2U8VT4ge1xuICAgIGNvbnN0IHsgZGJHZXQgfSA9IGF3YWl0IHRoaXMuY2xpZW50KFwicXVlcnlcIikoe1xuICAgICAgZGJHZXQ6IFtcbiAgICAgICAge1xuICAgICAgICAgIGZpZWxkLFxuICAgICAgICAgIHVzZXJJZFxuICAgICAgICB9LFxuICAgICAgICB0cnVlXG4gICAgICBdXG4gICAgfSk7XG5cbiAgICByZXR1cm4gZGJHZXQucmVzO1xuICB9XG5cbiAgYXN5bmMgZGJTZXQ8VCBleHRlbmRzIFVzZXJEYXRhLCBVIGV4dGVuZHMgRG9jdW1lbnQ+KHtcbiAgICB2YWx1ZSxcbiAgICB1c2VySWRcbiAgfToge1xuICAgIHZhbHVlOiBVO1xuICAgIHVzZXJJZD86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIH0pOiBQcm9taXNlPFQ+IHtcbiAgICBpZiAodHlwZW9mIHZhbHVlICE9PSBcIm9iamVjdFwiKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGB2YWx1ZSBzaG91bGQgYmUgYW4gb2JqZWN0IGluY2x1ZGluZyBmaWVsZHMgeW91IHdhbnQgdG8gdXBkYXRlLmBcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgeyBkYlNldCB9ID0gYXdhaXQgdGhpcy5jbGllbnQoXCJtdXRhdGlvblwiKSh7XG4gICAgICBkYlNldDogW1xuICAgICAgICB7XG4gICAgICAgICAgdXNlcklkLFxuICAgICAgICAgIHZhbHVlOiBzZXJpYWxpemUodmFsdWUpLnRvU3RyaW5nKFwiYmFzZTY0XCIpXG4gICAgICAgIH0sXG4gICAgICAgIHRydWVcbiAgICAgIF1cbiAgICB9KTtcblxuICAgIHJldHVybiBkYlNldC5yZXM7XG4gIH1cblxuICBhc3luYyBkYlNlYXJjaDxUPih7XG4gICAgc2VhcmNoLFxuICAgIGZpZWxkXG4gIH06IHtcbiAgICBmaWVsZDogc3RyaW5nO1xuICAgIHNlYXJjaDogc3RyaW5nO1xuICB9KTogUHJvbWlzZTxUW10+IHtcbiAgICBjb25zdCB7IGRiU2VhcmNoIH0gPSBhd2FpdCB0aGlzLmNsaWVudChcInF1ZXJ5XCIpKHtcbiAgICAgIGRiU2VhcmNoOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBzZWFyY2gsXG4gICAgICAgICAgZmllbGRcbiAgICAgICAgfSxcbiAgICAgICAgdHJ1ZVxuICAgICAgXVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGRiU2VhcmNoO1xuICB9XG5cbiAgYXN5bmMgZGVsZXRlRm9sZGVyKHsgaWQgfTogeyBpZDogc3RyaW5nIH0pOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCB7IGRlbGV0ZUZvbGRlciB9ID0gYXdhaXQgdGhpcy5jbGllbnQoXCJtdXRhdGlvblwiKSh7XG4gICAgICBkZWxldGVGb2xkZXI6IFtcbiAgICAgICAge1xuICAgICAgICAgIGlkXG4gICAgICAgIH0sXG4gICAgICAgIHRydWVcbiAgICAgIF1cbiAgICB9KTtcblxuICAgIHJldHVybiBkZWxldGVGb2xkZXIgPz8gZmFsc2U7XG4gIH1cblxuICBhc3luYyBtb3ZlRm9sZGVycyh7XG4gICAgZm9sZGVyc0lkLFxuICAgIHBhcmVudEZvbGRlcklkXG4gIH06IHtcbiAgICBmb2xkZXJzSWQ6IHN0cmluZ1tdO1xuICAgIHBhcmVudEZvbGRlcklkPzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgfSk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IHsgbW92ZUZvbGRlcnMgfSA9IGF3YWl0IHRoaXMuY2xpZW50KFwibXV0YXRpb25cIikoe1xuICAgICAgbW92ZUZvbGRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGZvbGRlcnNJZCxcbiAgICAgICAgICBwYXJlbnRGb2xkZXJJZFxuICAgICAgICB9LFxuICAgICAgICB0cnVlXG4gICAgICBdXG4gICAgfSk7XG5cbiAgICByZXR1cm4gbW92ZUZvbGRlcnMgPz8gZmFsc2U7XG4gIH1cblxuICBhc3luYyBtb3ZlRmlsZXMoe1xuICAgIGZpbGVzSWQsXG4gICAgcGFyZW50Rm9sZGVySWRcbiAgfToge1xuICAgIGZpbGVzSWQ6IHN0cmluZ1tdO1xuICAgIHBhcmVudEZvbGRlcklkPzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgfSk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IHsgbW92ZUZpbGVzIH0gPSBhd2FpdCB0aGlzLmNsaWVudChcIm11dGF0aW9uXCIpKHtcbiAgICAgIG1vdmVGaWxlczogW1xuICAgICAgICB7XG4gICAgICAgICAgZmlsZXNJZCxcbiAgICAgICAgICBwYXJlbnRGb2xkZXJJZFxuICAgICAgICB9LFxuICAgICAgICB0cnVlXG4gICAgICBdXG4gICAgfSk7XG5cbiAgICByZXR1cm4gbW92ZUZpbGVzID8/IGZhbHNlO1xuICB9XG5cbiAgYXN5bmMgZm9sZGVyU2l6ZSh7XG4gICAgZm9sZGVySWRcbiAgfToge1xuICAgIGZvbGRlcklkPzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgfSk6IFByb21pc2U8Rm9sZGVyU2l6ZSB8IG51bGw+IHtcbiAgICBjb25zdCB7IGZvbGRlclNpemUgfSA9IGF3YWl0IHRoaXMuY2xpZW50KFwicXVlcnlcIikoe1xuICAgICAgZm9sZGVyU2l6ZTogW1xuICAgICAgICB7XG4gICAgICAgICAgZm9sZGVySWRcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHNpemU6IHRydWUsXG4gICAgICAgICAgc2l6ZUJlZm9yZTogdHJ1ZVxuICAgICAgICB9XG4gICAgICBdXG4gICAgfSk7XG5cbiAgICBpZiAoIWZvbGRlclNpemUpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBzaXplOiBCaWdJbnQoZm9sZGVyU2l6ZS5zaXplKSxcbiAgICAgIHNpemVCZWZvcmU6IEJpZ0ludChmb2xkZXJTaXplLnNpemVCZWZvcmUpXG4gICAgfTtcbiAgfVxuXG4gIGFzeW5jIGdldFNwb25zb3JzaGlwTGluayh7XG4gICAgYmFja1VybFxuICB9OiB7XG4gICAgYmFja1VybDogc3RyaW5nO1xuICB9KTogUHJvbWlzZTxzdHJpbmcgfCBudWxsPiB7XG4gICAgY29uc3QgbWUgPSBhd2FpdCB0aGlzLm1lKHsgd2l0aFB1YmxpY0tleTogZmFsc2UgfSk7XG5cbiAgICBpZiAoIW1lKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gZ2V0TGluayh7XG4gICAgICBhcHA6IFwiYXV0aFwiLFxuICAgICAgcGF0aDogYC9zaWduLXVwP2dmPSR7YnRvYShtZS5lbWFpbCl9JmF1PSR7YnRvYShiYWNrVXJsKX1gXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==