@plumile/router 0.1.13 → 0.1.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (117) hide show
  1. package/README.md +43 -422
  2. package/lib/esm/builder.d.ts +5 -5
  3. package/lib/esm/builder.d.ts.map +1 -1
  4. package/lib/esm/builder.js +1 -1
  5. package/lib/esm/index.d.ts +0 -4
  6. package/lib/esm/index.d.ts.map +1 -1
  7. package/lib/esm/index.js +1 -5
  8. package/lib/esm/routing/Link.d.ts +3 -3
  9. package/lib/esm/routing/Link.d.ts.map +1 -1
  10. package/lib/esm/routing/Link.js +3 -8
  11. package/lib/esm/routing/RouteComponentWrapper.d.ts +6 -5
  12. package/lib/esm/routing/RouteComponentWrapper.d.ts.map +1 -1
  13. package/lib/esm/routing/RouteComponentWrapper.js +1 -1
  14. package/lib/esm/routing/RouterRenderer.d.ts.map +1 -1
  15. package/lib/esm/routing/RouterRenderer.js +1 -1
  16. package/lib/esm/routing/createRouter.d.ts +0 -1
  17. package/lib/esm/routing/createRouter.d.ts.map +1 -1
  18. package/lib/esm/routing/createRouter.js +434 -399
  19. package/lib/esm/routing/index.d.ts +2 -6
  20. package/lib/esm/routing/index.d.ts.map +1 -1
  21. package/lib/esm/routing/index.js +3 -7
  22. package/lib/esm/routing/useAllQuery.d.ts +7 -0
  23. package/lib/esm/routing/useAllQuery.d.ts.map +1 -0
  24. package/lib/esm/routing/useAllQuery.js +31 -0
  25. package/lib/esm/routing/useFilterDiagnostics.d.ts +2 -0
  26. package/lib/esm/routing/useFilterDiagnostics.d.ts.map +1 -0
  27. package/lib/esm/routing/useFilterDiagnostics.js +11 -0
  28. package/lib/esm/routing/useFilters.d.ts +16 -0
  29. package/lib/esm/routing/useFilters.d.ts.map +1 -0
  30. package/lib/esm/routing/useFilters.js +83 -0
  31. package/lib/esm/routing/useNavigate.d.ts +2 -9
  32. package/lib/esm/routing/useNavigate.d.ts.map +1 -1
  33. package/lib/esm/routing/useNavigate.js +1 -1
  34. package/lib/esm/routing/useQueryState.d.ts +1 -1
  35. package/lib/esm/routing/useQueryState.d.ts.map +1 -1
  36. package/lib/esm/routing/useQueryState.js +2 -2
  37. package/lib/esm/routing/useTypedQuery.js +1 -1
  38. package/lib/esm/tools/buildCombinedSearch.d.ts +11 -0
  39. package/lib/esm/tools/buildCombinedSearch.d.ts.map +1 -0
  40. package/lib/esm/tools/buildCombinedSearch.js +28 -0
  41. package/lib/esm/tools/buildSearch.d.ts +2 -8
  42. package/lib/esm/tools/buildSearch.d.ts.map +1 -1
  43. package/lib/esm/tools/buildSearch.js +12 -216
  44. package/lib/esm/tools.d.ts +1 -1
  45. package/lib/esm/tools.d.ts.map +1 -1
  46. package/lib/esm/tools.js +1 -1
  47. package/lib/esm/types.d.ts +25 -37
  48. package/lib/esm/types.d.ts.map +1 -1
  49. package/lib/esm/types.js +1 -1
  50. package/lib/tsconfig.esm.tsbuildinfo +1 -1
  51. package/lib/types/builder.d.ts +5 -5
  52. package/lib/types/builder.d.ts.map +1 -1
  53. package/lib/types/index.d.ts +0 -4
  54. package/lib/types/index.d.ts.map +1 -1
  55. package/lib/types/routing/Link.d.ts +3 -3
  56. package/lib/types/routing/Link.d.ts.map +1 -1
  57. package/lib/types/routing/RouteComponentWrapper.d.ts +6 -5
  58. package/lib/types/routing/RouteComponentWrapper.d.ts.map +1 -1
  59. package/lib/types/routing/RouterRenderer.d.ts.map +1 -1
  60. package/lib/types/routing/createRouter.d.ts +0 -1
  61. package/lib/types/routing/createRouter.d.ts.map +1 -1
  62. package/lib/types/routing/index.d.ts +2 -6
  63. package/lib/types/routing/index.d.ts.map +1 -1
  64. package/lib/types/routing/useAllQuery.d.ts +7 -0
  65. package/lib/types/routing/useAllQuery.d.ts.map +1 -0
  66. package/lib/types/routing/useFilterDiagnostics.d.ts +2 -0
  67. package/lib/types/routing/useFilterDiagnostics.d.ts.map +1 -0
  68. package/lib/types/routing/useFilters.d.ts +16 -0
  69. package/lib/types/routing/useFilters.d.ts.map +1 -0
  70. package/lib/types/routing/useNavigate.d.ts +2 -9
  71. package/lib/types/routing/useNavigate.d.ts.map +1 -1
  72. package/lib/types/routing/useQueryState.d.ts +1 -1
  73. package/lib/types/routing/useQueryState.d.ts.map +1 -1
  74. package/lib/types/tools/buildCombinedSearch.d.ts +11 -0
  75. package/lib/types/tools/buildCombinedSearch.d.ts.map +1 -0
  76. package/lib/types/tools/buildSearch.d.ts +2 -8
  77. package/lib/types/tools/buildSearch.d.ts.map +1 -1
  78. package/lib/types/tools.d.ts +1 -1
  79. package/lib/types/tools.d.ts.map +1 -1
  80. package/lib/types/types.d.ts +25 -37
  81. package/lib/types/types.d.ts.map +1 -1
  82. package/package.json +6 -5
  83. package/lib/esm/routing/devtools.d.ts +0 -20
  84. package/lib/esm/routing/devtools.d.ts.map +0 -1
  85. package/lib/esm/routing/devtools.js +0 -678
  86. package/lib/esm/routing/filters.d.ts +0 -97
  87. package/lib/esm/routing/filters.d.ts.map +0 -1
  88. package/lib/esm/routing/filters.js +0 -557
  89. package/lib/esm/routing/useActiveFilters.d.ts +0 -9
  90. package/lib/esm/routing/useActiveFilters.d.ts.map +0 -1
  91. package/lib/esm/routing/useActiveFilters.js +0 -38
  92. package/lib/esm/routing/useFilterState.d.ts +0 -10
  93. package/lib/esm/routing/useFilterState.d.ts.map +0 -1
  94. package/lib/esm/routing/useFilterState.js +0 -14
  95. package/lib/esm/routing/useNavigateWithQuery.d.ts +0 -15
  96. package/lib/esm/routing/useNavigateWithQuery.d.ts.map +0 -1
  97. package/lib/esm/routing/useNavigateWithQuery.js +0 -95
  98. package/lib/esm/routing/useQueryObject.d.ts +0 -18
  99. package/lib/esm/routing/useQueryObject.d.ts.map +0 -1
  100. package/lib/esm/routing/useQueryObject.js +0 -107
  101. package/lib/esm/routing/useStableRefEquality.d.ts +0 -5
  102. package/lib/esm/routing/useStableRefEquality.d.ts.map +0 -1
  103. package/lib/esm/routing/useStableRefEquality.js +0 -47
  104. package/lib/types/routing/devtools.d.ts +0 -20
  105. package/lib/types/routing/devtools.d.ts.map +0 -1
  106. package/lib/types/routing/filters.d.ts +0 -97
  107. package/lib/types/routing/filters.d.ts.map +0 -1
  108. package/lib/types/routing/useActiveFilters.d.ts +0 -9
  109. package/lib/types/routing/useActiveFilters.d.ts.map +0 -1
  110. package/lib/types/routing/useFilterState.d.ts +0 -10
  111. package/lib/types/routing/useFilterState.d.ts.map +0 -1
  112. package/lib/types/routing/useNavigateWithQuery.d.ts +0 -15
  113. package/lib/types/routing/useNavigateWithQuery.d.ts.map +0 -1
  114. package/lib/types/routing/useQueryObject.d.ts +0 -18
  115. package/lib/types/routing/useQueryObject.d.ts.map +0 -1
  116. package/lib/types/routing/useStableRefEquality.d.ts +0 -5
  117. package/lib/types/routing/useStableRefEquality.d.ts.map +0 -1
@@ -1,230 +1,26 @@
1
- import { buildFiltersQuery, OPERATOR_PRIORITY, } from '../routing/filters.js';
2
1
  function serializeValue(descriptor, value) {
3
2
  return descriptor.serialize(value);
4
3
  }
5
4
  export function buildSearch(query, schema, opts) {
6
- const hasFilters = opts !== undefined &&
7
- opts.filters !== undefined &&
8
- opts.filterSchema !== undefined;
9
- if (query == null && !hasFilters) {
5
+ if (query == null)
10
6
  return '';
11
- }
12
- const { omitDefaults = false, sortKeys = true, filters, filterSchema, omitEmptyFilters = true, pruneEmptyFilterOperators = true, } = opts ?? {};
13
- let workingQuery = {};
14
- if (query != null) {
15
- workingQuery = { ...query };
16
- }
17
- if (hasFilters && filterSchema !== undefined && filters !== undefined) {
18
- let emptySchema = false;
19
- if (filterSchema !== undefined && filterSchema !== null) {
20
- const inner = filterSchema
21
- .schema;
22
- let keys = [];
23
- if (inner !== undefined) {
24
- keys = Object.keys(inner);
25
- }
26
- if (keys.length === 0) {
27
- emptySchema = true;
28
- }
29
- }
30
- let effectiveFilters = filters;
31
- if (pruneEmptyFilterOperators) {
32
- const pruned = {};
33
- for (const [field, ops] of Object.entries(filters)) {
34
- if (ops != null && typeof ops === 'object') {
35
- const nextOps = {};
36
- for (const [op, value] of Object.entries(ops)) {
37
- if (value == null) {
38
- }
39
- else if (op === 'between') {
40
- if (Array.isArray(value)) {
41
- const clean = [];
42
- for (const t of value) {
43
- if (Array.isArray(t) && t.length === 2) {
44
- clean.push(t);
45
- }
46
- }
47
- if (clean.length > 0)
48
- nextOps[op] = clean;
49
- }
50
- }
51
- else if (Array.isArray(value)) {
52
- if (value.length > 0)
53
- nextOps[op] = value.slice();
54
- }
55
- else if (typeof value === 'boolean') {
56
- nextOps[op] = value;
57
- }
58
- }
59
- if (Object.keys(nextOps).length > 0) {
60
- pruned[field] = nextOps;
61
- }
62
- }
63
- }
64
- effectiveFilters = pruned;
65
- }
66
- if (!emptySchema) {
67
- workingQuery = buildFiltersQuery(filterSchema, workingQuery, effectiveFilters);
68
- }
69
- else {
70
- const flat = {};
71
- for (const [field, ops] of Object.entries(effectiveFilters)) {
72
- if (ops !== undefined && ops !== null && typeof ops === 'object') {
73
- for (const [op, value] of Object.entries(ops)) {
74
- if (value === undefined || value === null) {
75
- }
76
- else {
77
- const key = `${field}.${op}`;
78
- if (op === 'exists' && typeof value === 'boolean') {
79
- if (value) {
80
- flat[key] = 'true';
81
- }
82
- else {
83
- flat[key] = 'false';
84
- }
85
- }
86
- else if (op === 'between') {
87
- const ranges = value;
88
- for (const r of ranges) {
89
- if (Array.isArray(r) && r.length === 2) {
90
- const a = r[0];
91
- const b = r[1];
92
- const pair = [String(a), String(b)];
93
- const existing = flat[key];
94
- if (existing === undefined) {
95
- flat[key] = pair;
96
- }
97
- else if (Array.isArray(existing)) {
98
- flat[key] = [...existing, ...pair];
99
- }
100
- else {
101
- flat[key] = [existing, ...pair];
102
- }
103
- }
104
- }
105
- }
106
- else if (Array.isArray(value)) {
107
- for (const v of value) {
108
- const sv = String(v);
109
- const existing = flat[key];
110
- if (existing === undefined) {
111
- flat[key] = sv;
112
- }
113
- else if (Array.isArray(existing)) {
114
- existing.push(sv);
115
- }
116
- else {
117
- flat[key] = [existing, sv];
118
- }
119
- }
120
- }
121
- }
122
- }
123
- }
124
- }
125
- workingQuery = { ...workingQuery, ...flat };
126
- }
127
- if (omitEmptyFilters) {
128
- const next = {};
129
- for (const [k, v] of Object.entries(workingQuery)) {
130
- if (Array.isArray(v) && v.length === 0) {
131
- }
132
- else {
133
- next[k] = v;
134
- }
135
- }
136
- workingQuery = next;
137
- }
138
- }
139
- if (Object.keys(workingQuery).length === 0) {
140
- return '';
141
- }
142
- let keys = Object.keys(workingQuery);
7
+ const { omitDefaults = false, sortKeys = true } = opts ?? {};
8
+ let keys = Object.keys(query);
143
9
  if (sortKeys) {
144
10
  if (schema != null) {
145
11
  const schemaKeys = Object.keys(schema);
146
- const schemaOrdered = [];
12
+ const ordered = [];
147
13
  for (const sk of schemaKeys) {
148
- if (Object.prototype.hasOwnProperty.call(workingQuery, sk)) {
149
- schemaOrdered.push(sk);
150
- }
151
- }
152
- const filterKeys = [];
153
- const otherKeys = [];
154
- if (filterSchema != null) {
155
- const fsSchema = filterSchema.schema;
156
- const fieldSet = new Set(Object.keys(fsSchema));
157
- for (const k of keys) {
158
- if (!schemaKeys.includes(k)) {
159
- const dot = k.indexOf('.');
160
- if (dot > 0) {
161
- const field = k.slice(0, dot);
162
- if (fieldSet.has(field)) {
163
- filterKeys.push(k);
164
- }
165
- else {
166
- otherKeys.push(k);
167
- }
168
- }
169
- else {
170
- otherKeys.push(k);
171
- }
172
- }
14
+ if (Object.prototype.hasOwnProperty.call(query, sk)) {
15
+ ordered.push(sk);
173
16
  }
174
17
  }
175
- else {
176
- for (const k of keys) {
177
- if (!schemaKeys.includes(k))
178
- otherKeys.push(k);
179
- }
180
- }
181
- otherKeys.sort();
182
- const grouped = {};
183
- for (const fk of filterKeys) {
184
- const dot = fk.indexOf('.');
185
- let field = fk;
186
- if (dot > 0) {
187
- field = fk.slice(0, dot);
188
- }
189
- grouped[field] ??= [];
190
- {
191
- const existing = grouped[field];
192
- if (Array.isArray(existing)) {
193
- existing.push(fk);
194
- }
195
- }
196
- }
197
- const orderedFields = Object.keys(grouped).sort();
198
- const orderedFilterKeys = [];
199
- for (const field of orderedFields) {
200
- const ops = grouped[field];
201
- if (ops !== undefined) {
202
- ops.sort((a, b) => {
203
- const opA = a.slice(a.indexOf('.') + 1);
204
- const opB = b.slice(b.indexOf('.') + 1);
205
- const ia = OPERATOR_PRIORITY.indexOf(opA);
206
- const ib = OPERATOR_PRIORITY.indexOf(opB);
207
- let sa = ia;
208
- if (sa === -1)
209
- sa = 999;
210
- let sb = ib;
211
- if (sb === -1)
212
- sb = 999;
213
- if (sa < sb)
214
- return -1;
215
- if (sa > sb)
216
- return 1;
217
- if (opA < opB)
218
- return -1;
219
- if (opA > opB)
220
- return 1;
221
- return 0;
222
- });
223
- for (const ok of ops)
224
- orderedFilterKeys.push(ok);
18
+ for (const k of keys) {
19
+ if (!schemaKeys.includes(k)) {
20
+ ordered.push(k);
225
21
  }
226
22
  }
227
- keys = [...schemaOrdered, ...otherKeys, ...orderedFilterKeys];
23
+ keys = ordered;
228
24
  }
229
25
  else {
230
26
  keys.sort();
@@ -232,7 +28,7 @@ export function buildSearch(query, schema, opts) {
232
28
  }
233
29
  const parts = [];
234
30
  for (const key of keys) {
235
- const value = workingQuery[key];
31
+ const value = query[key];
236
32
  if (value == null) {
237
33
  }
238
34
  else {
@@ -261,4 +57,4 @@ export function buildSearch(query, schema, opts) {
261
57
  return '';
262
58
  return `?${parts.join('&')}`;
263
59
  }
264
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGRTZWFyY2guanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdG9vbHMvYnVpbGRTZWFyY2gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixpQkFBaUIsR0FHbEIsTUFBTSx1QkFBdUIsQ0FBQztBQUcvQixTQUFTLGNBQWMsQ0FDckIsVUFBZ0MsRUFDaEMsS0FBYztJQUVkLE9BQU8sVUFBVSxDQUFDLFNBQVMsQ0FBQyxLQUFZLENBQUMsQ0FBQztBQUM1QyxDQUFDO0FBMEJELE1BQU0sVUFBVSxXQUFXLENBQ3pCLEtBQXNDLEVBQ3RDLE1BQStCLEVBQy9CLElBQXlCO0lBRXpCLE1BQU0sVUFBVSxHQUNkLElBQUksS0FBSyxTQUFTO1FBQ2xCLElBQUksQ0FBQyxPQUFPLEtBQUssU0FBUztRQUMxQixJQUFJLENBQUMsWUFBWSxLQUFLLFNBQVMsQ0FBQztJQUNsQyxJQUFJLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNqQyxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFDRCxNQUFNLEVBQ0osWUFBWSxHQUFHLEtBQUssRUFDcEIsUUFBUSxHQUFHLElBQUksRUFDZixPQUFPLEVBQ1AsWUFBWSxFQUNaLGdCQUFnQixHQUFHLElBQUksRUFDdkIseUJBQXlCLEdBQUcsSUFBSSxHQUNqQyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7SUFDZixJQUFJLFlBQVksR0FBd0IsRUFBRSxDQUFDO0lBQzNDLElBQUksS0FBSyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ2xCLFlBQVksR0FBRyxFQUFFLEdBQUcsS0FBSyxFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUNELElBQUksVUFBVSxJQUFJLFlBQVksS0FBSyxTQUFTLElBQUksT0FBTyxLQUFLLFNBQVMsRUFBRSxDQUFDO1FBQ3RFLElBQUksV0FBVyxHQUFHLEtBQUssQ0FBQztRQUN4QixJQUFJLFlBQVksS0FB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QUNKLENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLEtBQUssQ0FBQyxJQUFJLENBQ1IsR0FBRyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUNsRSxDQUFDO1lBQ0osQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBQ0QsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUM7UUFBRSxPQUFPLEVBQUUsQ0FBQztJQUNsQyxPQUFPLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO0FBQy9CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFF1ZXJ5U2NoZW1hLCBRdWVyeURlc2NyaXB0b3IgfSBmcm9tICcuLi90eXBlcy5qcyc7XG5pbXBvcnQge1xuICBidWlsZEZpbHRlcnNRdWVyeSxcbiAgT1BFUkFUT1JfUFJJT1JJVFksXG4gIHR5cGUgRGVmaW5lZEZpbHRlclNjaGVtYSxcbiAgdHlwZSBJbmZlckZpbHRlcnMsXG59IGZyb20gJy4uL3JvdXRpbmcvZmlsdGVycy5qcyc7XG5cbi8qKiBTZXJpYWxpemUgYSBzaW5nbGUgdmFsdWUgd2l0aCBpdHMgZGVzY3JpcHRvciAqL1xuZnVuY3Rpb24gc2VyaWFsaXplVmFsdWUoXG4gIGRlc2NyaXB0b3I6IFF1ZXJ5RGVzY3JpcHRvcjxhbnk+LFxuICB2YWx1ZTogdW5rbm93bixcbik6IHN0cmluZ1tdIHtcbiAgcmV0dXJuIGRlc2NyaXB0b3Iuc2VyaWFsaXplKHZhbHVlIGFzIGFueSk7XG59XG5cbi8qKiBTZXJpYWxpemUgYSBxdWVyeSBvYmplY3QgdXNpbmcgYW4gb3B0aW9uYWwgc2NoZW1hICovXG5leHBvcnQgaW50ZXJmYWNlIEJ1aWxkU2VhcmNoT3B0aW9uczxcbiAgRiBleHRlbmRzIERlZmluZWRGaWx0ZXJTY2hlbWE8YW55PiB8IHVuZGVmaW5lZCA9IGFueSxcbj4ge1xuICBvbWl0RGVmYXVsdHM/OiBib29sZWFuO1xuICBzb3J0S2V5cz86IGJvb2xlYW47XG4gIC8qKiBTdHJ1Y3R1cmVkIGZpbHRlcnMgb2JqZWN0IChhbHJlYWR5IHBhcnNlZCkgdG8gbWVyZ2UgKi9cbiAgZmlsdGVycz86IEYgZXh0ZW5kcyBEZWZpbmVkRmlsdGVyU2NoZW1hPGFueT5cbiAgICA/IEluZmVyRmlsdGVyczxGWydzY2hlbWEnXT5cbiAgICA6IGFueTtcbiAgLyoqIEZpbHRlciBzY2hlbWEgd3JhcHBlciAocmVxdWlyZWQgaWYgZmlsdGVycyBwcm92aWRlZCkgKi9cbiAgZmlsdGVyU2NoZW1hPzogRjtcbiAgLyoqIFdoZW4gdHJ1ZSwgb21pdCBlbXB0eSBmaWx0ZXIgb3BlcmF0b3Igc2V0cyBlbnRpcmVseSAqL1xuICBvbWl0RW1wdHlGaWx0ZXJzPzogYm9vbGVhbjtcbiAgLyoqIFBydW5lIGVtcHR5IG9wZXJhdG9yIGFycmF5cyAvIGludmFsaWQgdHVwbGVzIHJlY3Vyc2l2ZWx5IGJlZm9yZSBzZXJpYWxpemF0aW9uIChkZWZhdWx0cyB0cnVlKSAqL1xuICBwcnVuZUVtcHR5RmlsdGVyT3BlcmF0b3JzPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBCdWlsZCBhIHNlYXJjaCBzdHJpbmcgZnJvbSAodHlwZWQpIHF1ZXJ5ICsgb3B0aW9uYWwgc3RydWN0dXJlZCBmaWx0ZXJzLlxuICogLSBBcHBsaWVzIG9taXREZWZhdWx0cyBmb3Igc2NoZW1hLWJhY2tlZCBxdWVyeSBrZXlzLlxuICogLSBTZXJpYWxpemVzIGZpbHRlcnMgdmlhIGJ1aWxkRmlsdGVyc1F1ZXJ5IHRoZW4gbWVyZ2VzLlxuICogLSBEZXRlcm1pbmlzdGljIGtleSBvcmRlcmluZyAoc2NoZW1hIG9yZGVyIHRoZW4gZXh0cmFzKSB3aGVuIHNvcnRLZXlzIGVuYWJsZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWlsZFNlYXJjaChcbiAgcXVlcnk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQsXG4gIHNjaGVtYTogUXVlcnlTY2hlbWEgfCB1bmRlZmluZWQsXG4gIG9wdHM/OiBCdWlsZFNlYXJjaE9wdGlvbnMsXG4pOiBzdHJpbmcge1xuICBjb25zdCBoYXNGaWx0ZXJzID1cbiAgICBvcHRzICE9PSB1bmRlZmluZWQgJiZcbiAgICBvcHRzLmZpbHRlcnMgIT09IHVuZGVmaW5lZCAmJlxuICAgIG9wdHMuZmlsdGVyU2NoZW1hICE9PSB1bmRlZmluZWQ7XG4gIGlmIChxdWVyeSA9PSBudWxsICYmICFoYXNGaWx0ZXJzKSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG4gIGNvbnN0IHtcbiAgICBvbWl0RGVmYXVsdHMgPSBmYWxzZSxcbiAgICBzb3J0S2V5cyA9IHRydWUsXG4gICAgZmlsdGVycyxcbiAgICBmaWx0ZXJTY2hlbWEsXG4gICAgb21pdEVtcHR5RmlsdGVycyA9IHRydWUsXG4gICAgcHJ1bmVFbXB0eUZpbHRlck9wZXJhdG9ycyA9IHRydWUsXG4gIH0gPSBvcHRzID8/IHt9O1xuICBsZXQgd29ya2luZ1F1ZXJ5OiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG4gIGlmIChxdWVyeSAhPSBudWxsKSB7XG4gICAgd29ya2luZ1F1ZXJ5ID0geyAuLi5xdWVyeSB9O1xuICB9XG4gIGlmIChoYXNGaWx0ZXJzICYmIGZpbHRlclNjaGVtYSAhPT0gdW5kZWZpbmVkICYmIGZpbHRlcnMgIT09IHVuZGVmaW5lZCkge1xuICAgIGxldCBlbXB0eVNjaGVtYSA9IGZhbHNlO1xuICAgIGlmIChmaWx0ZXJTY2hlbWEgIT09IHVuZGVmaW5lZCAmJiBmaWx0ZXJTY2hlbWEgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGlubmVyID0gKGZpbHRlclNjaGVtYSBhcyB7IHNjaGVtYT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+IH0pXG4gICAgICAgIC5zY2hlbWE7XG4gICAgICBsZXQga2V5czogc3RyaW5nW10gPSBbXTtcbiAgICAgIGlmIChpbm5lciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGtleXMgPSBPYmplY3Qua2V5cyhpbm5lcik7XG4gICAgICB9XG4gICAgICBpZiAoa2V5cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgZW1wdHlTY2hlbWEgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICBsZXQgZWZmZWN0aXZlRmlsdGVyczogYW55ID0gZmlsdGVycztcbiAgICBpZiAocHJ1bmVFbXB0eUZpbHRlck9wZXJhdG9ycykge1xuICAgICAgLy8gRGVlcCBjbG9uZSAmIHBydW5lIGVtcHR5IGFycmF5cyAvIGJldHdlZW4gdHVwbGVzIGxlbmd0aCE9MiAvIGV4aXN0cyB1bmRlZmluZWRcbiAgICAgIGNvbnN0IHBydW5lZDogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuICAgICAgZm9yIChjb25zdCBbZmllbGQsIG9wc10gb2YgT2JqZWN0LmVudHJpZXMoXG4gICAgICAgIGZpbHRlcnMgYXMgUmVjb3JkPHN0cmluZywgYW55PixcbiAgICAgICkpIHtcbiAgICAgICAgaWYgKG9wcyAhPSBudWxsICYmIHR5cGVvZiBvcHMgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgY29uc3QgbmV4dE9wczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuICAgICAgICAgIGZvciAoY29uc3QgW29wLCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMob3BzKSkge1xuICAgICAgICAgICAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICAgICAgICAgICAgLy8gc2tpcCBudWxsaXNoXG4gICAgICAgICAgICB9IGVsc2UgaWYgKG9wID09PSAnYmV0d2VlbicpIHtcbiAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY2xlYW46IFthbnksIGFueV1bXSA9IFtdO1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgdCBvZiB2YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodCkgJiYgdC5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgY2xlYW4ucHVzaCh0IGFzIFthbnksIGFueV0pO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoY2xlYW4ubGVuZ3RoID4gMCkgbmV4dE9wc1tvcF0gPSBjbGVhbjtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICAgICAgICBpZiAodmFsdWUubGVuZ3RoID4gMCkgbmV4dE9wc1tvcF0gPSB2YWx1ZS5zbGljZSgpO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdib29sZWFuJykge1xuICAgICAgICAgICAgICBuZXh0T3BzW29wXSA9IHZhbHVlOyAvLyBleGlzdHNcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKE9iamVjdC5rZXlzKG5leHRPcHMpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHBydW5lZFtmaWVsZF0gPSBuZXh0T3BzO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZWZmZWN0aXZlRmlsdGVycyA9IHBydW5lZDtcbiAgICB9XG4gICAgaWYgKCFlbXB0eVNjaGVtYSkge1xuICAgICAgd29ya2luZ1F1ZXJ5ID0gYnVpbGRGaWx0ZXJzUXVlcnkoXG4gICAgICAgIGZpbHRlclNjaGVtYSxcbiAgICAgICAgd29ya2luZ1F1ZXJ5LFxuICAgICAgICBlZmZlY3RpdmVGaWx0ZXJzIGFzIHVua25vd24gYXMgYW55LFxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gRmFsbGJhY2s6IGRpcmVjdCBmbGF0dGVuIGZpZWxkLm9wIGZvciBwcm92aWRlZCBvcGVyYXRvcnNcbiAgICAgIGNvbnN0IGZsYXQ6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcbiAgICAgIGZvciAoY29uc3QgW2ZpZWxkLCBvcHNdIG9mIE9iamVjdC5lbnRyaWVzKFxuICAgICAgICBlZmZlY3RpdmVGaWx0ZXJzIGFzIFJlY29yZDxzdHJpbmcsIGFueT4sXG4gICAgICApKSB7XG4gICAgICAgIGlmIChvcHMgIT09IHVuZGVmaW5lZCAmJiBvcHMgIT09IG51bGwgJiYgdHlwZW9mIG9wcyA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICBmb3IgKGNvbnN0IFtvcCwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKFxuICAgICAgICAgICAgb3BzIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICAgICAgICAgICkpIHtcbiAgICAgICAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBudWxsKSB7XG4gICAgICAgICAgICAgIC8vIHNraXAgbnVsbGlzaFxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgY29uc3Qga2V5ID0gYCR7ZmllbGR9LiR7b3B9YDtcbiAgICAgICAgICAgICAgaWYgKG9wID09PSAnZXhpc3RzJyAmJiB0eXBlb2YgdmFsdWUgPT09ICdib29sZWFuJykge1xuICAgICAgICAgICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgZmxhdFtrZXldID0gJ3RydWUnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICBmbGF0W2tleV0gPSAnZmFsc2UnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSBlbHNlIGlmIChvcCA9PT0gJ2JldHdlZW4nKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmFuZ2VzID0gdmFsdWUgYXMgdW5rbm93bltdO1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgciBvZiByYW5nZXMpIHtcbiAgICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHIpICYmIHIubGVuZ3RoID09PSAyKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGEgPSByWzBdO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBiID0gclsxXTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFpciA9IFtTdHJpbmcoYSksIFN0cmluZyhiKV07XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGV4aXN0aW5nID0gZmxhdFtrZXldO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZXhpc3RpbmcgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgIGZsYXRba2V5XSA9IHBhaXI7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShleGlzdGluZykpIHtcbiAgICAgICAgICAgICAgICAgICAgICBmbGF0W2tleV0gPSBbLi4uZXhpc3RpbmcsIC4uLnBhaXJdO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgIGZsYXRba2V5XSA9IFtleGlzdGluZywgLi4ucGFpcl07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHYgb2YgdmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IHN2ID0gU3RyaW5nKHYpO1xuICAgICAgICAgICAgICAgICAgY29uc3QgZXhpc3RpbmcgPSBmbGF0W2tleV07XG4gICAgICAgICAgICAgICAgICBpZiAoZXhpc3RpbmcgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICBmbGF0W2tleV0gPSBzdjtcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShleGlzdGluZykpIHtcbiAgICAgICAgICAgICAgICAgICAgZXhpc3RpbmcucHVzaChzdik7XG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBmbGF0W2tleV0gPSBbZXhpc3RpbmcsIHN2XTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHdvcmtpbmdRdWVyeSA9IHsgLi4ud29ya2luZ1F1ZXJ5LCAuLi5mbGF0IH07XG4gICAgfVxuICAgIGlmIChvbWl0RW1wdHlGaWx0ZXJzKSB7XG4gICAgICBjb25zdCBuZXh0OiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG4gICAgICBmb3IgKGNvbnN0IFtrLCB2XSBvZiBPYmplY3QuZW50cmllcyh3b3JraW5nUXVlcnkpKSB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHYpICYmIHYubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgLy8gc2tpcCBlbXB0eSBhcnJheSBmaWx0ZXIga2V5XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbmV4dFtrXSA9IHY7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHdvcmtpbmdRdWVyeSA9IG5leHQ7XG4gICAgfVxuICB9XG4gIGlmIChPYmplY3Qua2V5cyh3b3JraW5nUXVlcnkpLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiAnJztcbiAgfVxuICBsZXQga2V5cyA9IE9iamVjdC5rZXlzKHdvcmtpbmdRdWVyeSk7XG4gIGlmIChzb3J0S2V5cykge1xuICAgIGlmIChzY2hlbWEgIT0gbnVsbCkge1xuICAgICAgY29uc3Qgc2NoZW1hS2V5cyA9IE9iamVjdC5rZXlzKHNjaGVtYSk7XG4gICAgICBjb25zdCBzY2hlbWFPcmRlcmVkOiBzdHJpbmdbXSA9IFtdO1xuICAgICAgZm9yIChjb25zdCBzayBvZiBzY2hlbWFLZXlzKSB7XG4gICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwod29ya2luZ1F1ZXJ5LCBzaykpIHtcbiAgICAgICAgICBzY2hlbWFPcmRlcmVkLnB1c2goc2spO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBjb25zdCBmaWx0ZXJLZXlzOiBzdHJpbmdbXSA9IFtdO1xuICAgICAgY29uc3Qgb3RoZXJLZXlzOiBzdHJpbmdbXSA9IFtdO1xuICAgICAgaWYgKGZpbHRlclNjaGVtYSAhPSBudWxsKSB7XG4gICAgICAgIGNvbnN0IGZzU2NoZW1hOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IChcbiAgICAgICAgICBmaWx0ZXJTY2hlbWEgYXMge1xuICAgICAgICAgICAgc2NoZW1hOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgICAgICAgICB9XG4gICAgICAgICkuc2NoZW1hO1xuICAgICAgICBjb25zdCBmaWVsZFNldCA9IG5ldyBTZXQoT2JqZWN0LmtleXMoZnNTY2hlbWEpKTtcbiAgICAgICAgZm9yIChjb25zdCBrIG9mIGtleXMpIHtcbiAgICAgICAgICBpZiAoIXNjaGVtYUtleXMuaW5jbHVkZXMoaykpIHtcbiAgICAgICAgICAgIGNvbnN0IGRvdCA9IGsuaW5kZXhPZignLicpO1xuICAgICAgICAgICAgaWYgKGRvdCA+IDApIHtcbiAgICAgICAgICAgICAgY29uc3QgZmllbGQgPSBrLnNsaWNlKDAsIGRvdCk7XG4gICAgICAgICAgICAgIGlmIChmaWVsZFNldC5oYXMoZmllbGQpKSB7XG4gICAgICAgICAgICAgICAgZmlsdGVyS2V5cy5wdXNoKGspO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG90aGVyS2V5cy5wdXNoKGspO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBvdGhlcktleXMucHVzaChrKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZvciAoY29uc3QgayBvZiBrZXlzKSB7XG4gICAgICAgICAgaWYgKCFzY2hlbWFLZXlzLmluY2x1ZGVzKGspKSBvdGhlcktleXMucHVzaChrKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLy8gRGVkdXBsaWNhdGUgYWxyZWFkeSBhY2NvdW50ZWQgc2NoZW1hIGtleXMgZnJvbSBvdGhlcnNcbiAgICAgIC8vIE9yZGVyIG5vbi1maWx0ZXIgZXh0cmFzIGFscGhhYmV0aWNhbGx5XG4gICAgICBvdGhlcktleXMuc29ydCgpO1xuICAgICAgLy8gT25seSBpbXBsZW1lbnRlZCBvcmRlcmluZzogYWZ0ZXItcXVlcnlcbiAgICAgIGNvbnN0IGdyb3VwZWQ6IFJlY29yZDxzdHJpbmcsIHN0cmluZ1tdPiA9IHt9O1xuICAgICAgZm9yIChjb25zdCBmayBvZiBmaWx0ZXJLZXlzKSB7XG4gICAgICAgIGNvbnN0IGRvdCA9IGZrLmluZGV4T2YoJy4nKTtcbiAgICAgICAgbGV0IGZpZWxkID0gZms7XG4gICAgICAgIGlmIChkb3QgPiAwKSB7XG4gICAgICAgICAgZmllbGQgPSBmay5zbGljZSgwLCBkb3QpO1xuICAgICAgICB9XG4gICAgICAgIGdyb3VwZWRbZmllbGRdID8/PSBbXTtcbiAgICAgICAge1xuICAgICAgICAgIGNvbnN0IGV4aXN0aW5nID0gZ3JvdXBlZFtmaWVsZF07XG4gICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZXhpc3RpbmcpKSB7XG4gICAgICAgICAgICBleGlzdGluZy5wdXNoKGZrKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNvbnN0IG9yZGVyZWRGaWVsZHMgPSBPYmplY3Qua2V5cyhncm91cGVkKS5zb3J0KCk7XG4gICAgICBjb25zdCBvcmRlcmVkRmlsdGVyS2V5czogc3RyaW5nW10gPSBbXTtcbiAgICAgIGZvciAoY29uc3QgZmllbGQgb2Ygb3JkZXJlZEZpZWxkcykge1xuICAgICAgICBjb25zdCBvcHMgPSBncm91cGVkW2ZpZWxkXTtcbiAgICAgICAgaWYgKG9wcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgb3BzLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG9wQSA9IGEuc2xpY2UoYS5pbmRleE9mKCcuJykgKyAxKTtcbiAgICAgICAgICAgIGNvbnN0IG9wQiA9IGIuc2xpY2UoYi5pbmRleE9mKCcuJykgKyAxKTtcbiAgICAgICAgICAgIGNvbnN0IGlhID0gT1BFUkFUT1JfUFJJT1JJVFkuaW5kZXhPZihvcEEgYXMgYW55KTtcbiAgICAgICAgICAgIGNvbnN0IGliID0gT1BFUkFUT1JfUFJJT1JJVFkuaW5kZXhPZihvcEIgYXMgYW55KTtcbiAgICAgICAgICAgIGxldCBzYSA9IGlhO1xuICAgICAgICAgICAgaWYgKHNhID09PSAtMSkgc2EgPSA5OTk7XG4gICAgICAgICAgICBsZXQgc2IgPSBpYjtcbiAgICAgICAgICAgIGlmIChzYiA9PT0gLTEpIHNiID0gOTk5O1xuICAgICAgICAgICAgaWYgKHNhIDwgc2IpIHJldHVybiAtMTtcbiAgICAgICAgICAgIGlmIChzYSA+IHNiKSByZXR1cm4gMTtcbiAgICAgICAgICAgIGlmIChvcEEgPCBvcEIpIHJldHVybiAtMTtcbiAgICAgICAgICAgIGlmIChvcEEgPiBvcEIpIHJldHVybiAxO1xuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgZm9yIChjb25zdCBvayBvZiBvcHMpIG9yZGVyZWRGaWx0ZXJLZXlzLnB1c2gob2spO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBrZXlzID0gWy4uLnNjaGVtYU9yZGVyZWQsIC4uLm90aGVyS2V5cywgLi4ub3JkZXJlZEZpbHRlcktleXNdO1xuICAgIH0gZWxzZSB7XG4gICAgICBrZXlzLnNvcnQoKTtcbiAgICB9XG4gIH1cbiAgY29uc3QgcGFydHM6IHN0cmluZ1tdID0gW107XG4gIGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcbiAgICBjb25zdCB2YWx1ZSA9IHdvcmtpbmdRdWVyeVtrZXldO1xuICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICAvLyBza2lwIG51bGxpc2ggdmFsdWVzXG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBzY2hlbWE/LltrZXldO1xuICAgICAgaWYgKGRlc2NyaXB0b3IgIT0gbnVsbCkge1xuICAgICAgICBjb25zdCBpc0RlZmF1bHQgPVxuICAgICAgICAgIGRlc2NyaXB0b3IuaGFzRGVmYXVsdCAmJiB2YWx1ZSA9PT0gZGVzY3JpcHRvci5kZWZhdWx0VmFsdWU7XG4gICAgICAgIGNvbnN0IHNraXBEZWZhdWx0ID0gb21pdERlZmF1bHRzICYmIGlzRGVmYXVsdDtcbiAgICAgICAgaWYgKCFza2lwRGVmYXVsdCkge1xuICAgICAgICAgIGNvbnN0IHZhbHVlcyA9IHNlcmlhbGl6ZVZhbHVlKGRlc2NyaXB0b3IsIHZhbHVlKTtcbiAgICAgICAgICB2YWx1ZXMuZm9yRWFjaCgodikgPT4ge1xuICAgICAgICAgICAgcGFydHMucHVzaChcbiAgICAgICAgICAgICAgYCR7ZW5jb2RlVVJJQ29tcG9uZW50KGtleSl9PSR7ZW5jb2RlVVJJQ29tcG9uZW50KFN0cmluZyh2KSl9YCxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgdmFsdWUuZm9yRWFjaCgodikgPT4ge1xuICAgICAgICAgIHBhcnRzLnB1c2goXG4gICAgICAgICAgICBgJHtlbmNvZGVVUklDb21wb25lbnQoa2V5KX09JHtlbmNvZGVVUklDb21wb25lbnQoU3RyaW5nKHYpKX1gLFxuICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGFydHMucHVzaChcbiAgICAgICAgICBgJHtlbmNvZGVVUklDb21wb25lbnQoa2V5KX09JHtlbmNvZGVVUklDb21wb25lbnQoU3RyaW5nKHZhbHVlKSl9YCxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgaWYgKHBhcnRzLmxlbmd0aCA9PT0gMCkgcmV0dXJuICcnO1xuICByZXR1cm4gYD8ke3BhcnRzLmpvaW4oJyYnKX1gO1xufVxuIl19
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGRTZWFyY2guanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdG9vbHMvYnVpbGRTZWFyY2gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsU0FBUyxjQUFjLENBQ3JCLFVBQWdDLEVBQ2hDLEtBQWM7SUFFZCxPQUFPLFVBQVUsQ0FBQyxTQUFTLENBQUMsS0FBWSxDQUFDLENBQUM7QUFDNUMsQ0FBQztBQUdELE1BQU0sVUFBVSxXQUFXLENBQ3pCLEtBQXNDLEVBQ3RDLE1BQStCLEVBQy9CLElBQXFEO0lBRXJELElBQUksS0FBSyxJQUFJLElBQUk7UUFBRSxPQUFPLEVBQUUsQ0FBQztJQUM3QixNQUFNLEVBQUUsWUFBWSxHQUFHLEtBQUssRUFBRSxRQUFRLEdBQUcsSUFBSSxFQUFFLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztJQUM3RCxJQUFJLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzlCLElBQUksUUFBUSxFQUFFLENBQUM7UUFDYixJQUFJLE1BQU0sSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUVuQixNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3ZDLE1BQU0sT0FBTyxHQUFhLEVBQUUsQ0FBQztZQUM3QixLQUFLLE1BQU0sRUFBRSxJQUFJLFVBQVUsRUFBRSxDQUFDO2dCQUM1QixJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQztvQkFDcEQsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDbkIsQ0FBQztZQUNILENBQUM7WUFDRCxLQUFLLE1BQU0sQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDO2dCQUNyQixJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO29CQUM1QixPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNsQixDQUFDO1lBQ0gsQ0FBQztZQUNELElBQUksR0FBRyxPQUFPLENBQUM7UUFDakIsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDZCxDQUFDO0lBQ0gsQ0FBQztJQUNELE1BQU0sS0FBSyxHQUFhLEVBQUUsQ0FBQztJQUMzQixLQUFLLE1BQU0sR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ3ZCLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN6QixJQUFJLEtBQUssSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUVwQixDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sVUFBVSxHQUFHLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2pDLElBQUksVUFBVSxJQUFJLElBQUksRUFBRSxDQUFDO2dCQUN2QixNQUFNLFNBQVMsR0FDYixVQUFVLENBQUMsVUFBVSxJQUFJLEtBQUssS0FBSyxVQUFVLENBQUMsWUFBWSxDQUFDO2dCQUM3RCxNQUFNLFdBQVcsR0FBRyxZQUFZLElBQUksU0FBUyxDQUFDO2dCQUM5QyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7b0JBQ2pCLE1BQU0sTUFBTSxHQUFHLGNBQWMsQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLENBQUM7b0JBQ2pELE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTt3QkFDbkIsS0FBSyxDQUFDLElBQUksQ0FDUixHQUFHLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxJQUFJLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQzlELENBQUM7b0JBQ0osQ0FBQyxDQUFDLENBQUM7Z0JBQ0wsQ0FBQztZQUNILENBQUM7aUJBQU0sSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ2hDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtvQkFDbEIsS0FBSyxDQUFDLElBQUksQ0FDUixHQUFHLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxJQUFJLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQzlELENBQUM7Z0JBQ0osQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sS0FBSyxDQUFDLElBQUksQ0FDUixHQUFHLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxJQUFJLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQ2xFLENBQUM7WUFDSixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFDRCxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQztRQUFFLE9BQU8sRUFBRSxDQUFDO0lBQ2xDLE9BQU8sSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7QUFDL0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUXVlcnlTY2hlbWEsIFF1ZXJ5RGVzY3JpcHRvciB9IGZyb20gJy4uL3R5cGVzLmpzJztcblxuLyoqIFNlcmlhbGl6ZSBhIHNpbmdsZSB2YWx1ZSB3aXRoIGl0cyBkZXNjcmlwdG9yICovXG5mdW5jdGlvbiBzZXJpYWxpemVWYWx1ZShcbiAgZGVzY3JpcHRvcjogUXVlcnlEZXNjcmlwdG9yPGFueT4sXG4gIHZhbHVlOiB1bmtub3duLFxuKTogc3RyaW5nW10ge1xuICByZXR1cm4gZGVzY3JpcHRvci5zZXJpYWxpemUodmFsdWUgYXMgYW55KTtcbn1cblxuLyoqIFNlcmlhbGl6ZSBhIHF1ZXJ5IG9iamVjdCB1c2luZyBhbiBvcHRpb25hbCBzY2hlbWEgKi9cbmV4cG9ydCBmdW5jdGlvbiBidWlsZFNlYXJjaChcbiAgcXVlcnk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQsXG4gIHNjaGVtYTogUXVlcnlTY2hlbWEgfCB1bmRlZmluZWQsXG4gIG9wdHM/OiB7IG9taXREZWZhdWx0cz86IGJvb2xlYW47IHNvcnRLZXlzPzogYm9vbGVhbiB9LFxuKTogc3RyaW5nIHtcbiAgaWYgKHF1ZXJ5ID09IG51bGwpIHJldHVybiAnJztcbiAgY29uc3QgeyBvbWl0RGVmYXVsdHMgPSBmYWxzZSwgc29ydEtleXMgPSB0cnVlIH0gPSBvcHRzID8/IHt9O1xuICBsZXQga2V5cyA9IE9iamVjdC5rZXlzKHF1ZXJ5KTtcbiAgaWYgKHNvcnRLZXlzKSB7XG4gICAgaWYgKHNjaGVtYSAhPSBudWxsKSB7XG4gICAgICAvLyBPcmRlciBrZXlzIGJhc2VkIG9uIHNjaGVtYSBkZWNsYXJhdGlvbiBvcmRlciwgdGhlbiBhcHBlbmQgYW55IGV4dHJhIGtleXNcbiAgICAgIGNvbnN0IHNjaGVtYUtleXMgPSBPYmplY3Qua2V5cyhzY2hlbWEpO1xuICAgICAgY29uc3Qgb3JkZXJlZDogc3RyaW5nW10gPSBbXTtcbiAgICAgIGZvciAoY29uc3Qgc2sgb2Ygc2NoZW1hS2V5cykge1xuICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHF1ZXJ5LCBzaykpIHtcbiAgICAgICAgICBvcmRlcmVkLnB1c2goc2spO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBmb3IgKGNvbnN0IGsgb2Yga2V5cykge1xuICAgICAgICBpZiAoIXNjaGVtYUtleXMuaW5jbHVkZXMoaykpIHtcbiAgICAgICAgICBvcmRlcmVkLnB1c2goayk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGtleXMgPSBvcmRlcmVkO1xuICAgIH0gZWxzZSB7XG4gICAgICBrZXlzLnNvcnQoKTtcbiAgICB9XG4gIH1cbiAgY29uc3QgcGFydHM6IHN0cmluZ1tdID0gW107XG4gIGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcbiAgICBjb25zdCB2YWx1ZSA9IHF1ZXJ5W2tleV07XG4gICAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICAgIC8vIHNraXAgbnVsbGlzaCB2YWx1ZXNcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgZGVzY3JpcHRvciA9IHNjaGVtYT8uW2tleV07XG4gICAgICBpZiAoZGVzY3JpcHRvciAhPSBudWxsKSB7XG4gICAgICAgIGNvbnN0IGlzRGVmYXVsdCA9XG4gICAgICAgICAgZGVzY3JpcHRvci5oYXNEZWZhdWx0ICYmIHZhbHVlID09PSBkZXNjcmlwdG9yLmRlZmF1bHRWYWx1ZTtcbiAgICAgICAgY29uc3Qgc2tpcERlZmF1bHQgPSBvbWl0RGVmYXVsdHMgJiYgaXNEZWZhdWx0O1xuICAgICAgICBpZiAoIXNraXBEZWZhdWx0KSB7XG4gICAgICAgICAgY29uc3QgdmFsdWVzID0gc2VyaWFsaXplVmFsdWUoZGVzY3JpcHRvciwgdmFsdWUpO1xuICAgICAgICAgIHZhbHVlcy5mb3JFYWNoKCh2KSA9PiB7XG4gICAgICAgICAgICBwYXJ0cy5wdXNoKFxuICAgICAgICAgICAgICBgJHtlbmNvZGVVUklDb21wb25lbnQoa2V5KX09JHtlbmNvZGVVUklDb21wb25lbnQoU3RyaW5nKHYpKX1gLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICB2YWx1ZS5mb3JFYWNoKCh2KSA9PiB7XG4gICAgICAgICAgcGFydHMucHVzaChcbiAgICAgICAgICAgIGAke2VuY29kZVVSSUNvbXBvbmVudChrZXkpfT0ke2VuY29kZVVSSUNvbXBvbmVudChTdHJpbmcodikpfWAsXG4gICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwYXJ0cy5wdXNoKFxuICAgICAgICAgIGAke2VuY29kZVVSSUNvbXBvbmVudChrZXkpfT0ke2VuY29kZVVSSUNvbXBvbmVudChTdHJpbmcodmFsdWUpKX1gLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBpZiAocGFydHMubGVuZ3RoID09PSAwKSByZXR1cm4gJyc7XG4gIHJldHVybiBgPyR7cGFydHMuam9pbignJicpfWA7XG59XG4iXX0=
@@ -3,5 +3,5 @@ import type { PrepareResult, PreparedMatch, Route, RouterMatchedRoute } from './
3
3
  import type { FlatRoute } from './builder.js';
4
4
  export declare function getMatchedRoute<TParams extends ParamData>(routes: FlatRoute<TParams>[], location: Location): RouterMatchedRoute<TParams> | null;
5
5
  export declare function prepareMatch<TParams extends ParamData>(match: RouterMatchedRoute<TParams> | null, query?: Record<string, unknown>): PreparedMatch<TParams>;
6
- export declare function r<TPrepared extends PrepareResult, TVariables extends ParamData = ParamData, TQuery = unknown>(route: Route<TPrepared, TVariables, TQuery>): Route<TPrepared, TVariables, TQuery>;
6
+ export declare function r<TPrepared extends PrepareResult, TVariables extends ParamData = ParamData, TQuery extends Record<string, unknown> = Record<string, unknown>>(route: Route<TPrepared, TVariables, TQuery>): Route<TPrepared, TVariables, TQuery>;
7
7
  //# sourceMappingURL=tools.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEhD,OAAO,KAAK,EACV,aAAa,EACb,aAAa,EAEb,KAAK,EACL,kBAAkB,EACnB,MAAM,YAAY,CAAC;AAEpB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAW9C,wBAAgB,eAAe,CAAC,OAAO,SAAS,SAAS,EACvD,MAAM,EAAE,SAAS,CAAC,OAAO,CAAC,EAAE,EAC5B,QAAQ,EAAE,QAAQ,GACjB,kBAAkB,CAAC,OAAO,CAAC,GAAG,IAAI,CAepC;AAUD,wBAAgB,YAAY,CAAC,OAAO,SAAS,SAAS,EACpD,KAAK,EAAE,kBAAkB,CAAC,OAAO,CAAC,GAAG,IAAI,EACzC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,aAAa,CAAC,OAAO,CAAC,CA+CxB;AAmBD,wBAAgB,CAAC,CACf,SAAS,SAAS,aAAa,EAC/B,UAAU,SAAS,SAAS,GAAG,SAAS,EACxC,MAAM,GAAG,OAAO,EAEhB,KAAK,EAAE,KAAK,CAAC,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC,GAC1C,KAAK,CAAC,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC,CAEtC"}
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEhD,OAAO,KAAK,EACV,aAAa,EACb,aAAa,EAEb,KAAK,EACL,kBAAkB,EACnB,MAAM,YAAY,CAAC;AAEpB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAW9C,wBAAgB,eAAe,CAAC,OAAO,SAAS,SAAS,EACvD,MAAM,EAAE,SAAS,CAAC,OAAO,CAAC,EAAE,EAC5B,QAAQ,EAAE,QAAQ,GACjB,kBAAkB,CAAC,OAAO,CAAC,GAAG,IAAI,CAepC;AAUD,wBAAgB,YAAY,CAAC,OAAO,SAAS,SAAS,EACpD,KAAK,EAAE,kBAAkB,CAAC,OAAO,CAAC,GAAG,IAAI,EACzC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,aAAa,CAAC,OAAO,CAAC,CA+CxB;AAmBD,wBAAgB,CAAC,CACf,SAAS,SAAS,aAAa,EAC/B,UAAU,SAAS,SAAS,GAAG,SAAS,EACxC,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAEhE,KAAK,EAAE,KAAK,CAAC,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC,GAC1C,KAAK,CAAC,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC,CAEtC"}
package/lib/esm/tools.js CHANGED
@@ -56,4 +56,4 @@ export function prepareMatch(match, query) {
56
56
  export function r(route) {
57
57
  return route;
58
58
  }
59
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdG9vbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBcUJBLE1BQU0sVUFBVSxlQUFlLENBQzdCLE1BQTRCLEVBQzVCLFFBQWtCO0lBRWxCLEtBQUssTUFBTSxLQUFLLElBQUksTUFBTSxFQUFFLENBQUM7UUFDM0IsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDckQsSUFBSSxLQUFLLEtBQUssS0FBSyxFQUFFLENBQUM7WUFDcEIsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsR0FBRyxLQUFLLENBQUM7WUFDL0IsT0FBTztnQkFDTCxLQUFLO2dCQUNMLEtBQUs7Z0JBQ0wsSUFBSTtnQkFDSixNQUFNO2FBQ1AsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBVUQsTUFBTSxVQUFVLFlBQVksQ0FDMUIsS0FBeUMsRUFDekMsS0FBK0I7SUFFL0IsSUFBSSxLQUFLLElBQUksSUFBSSxFQUFFLENBQUM7UUFDbEIsT0FBTztZQUNMLEtBQUs7WUFDTCxNQUFNLEVBQUUsRUFBRTtTQUNYLENBQUM7SUFDSixDQUFDO0lBRUQsTUFBTSxZQUFZLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQztJQUVqQyxNQUFNLE1BQU0sR0FBeUIsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7UUFDcEUsTUFBTSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQztRQUV0RCxJQUFJLFNBQWtCLENBQUM7UUFDdkIsSUFBSSxRQUFtQyxDQUFDO1FBRXhDLElBQUksT0FBTyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ3BCLFFBQVEsR0FBRyxPQUFPLENBQUM7Z0JBQ2pCLEtBQUs7Z0JBQ0wsWUFBWTtnQkFDWixZQUFZO2dCQUVaLFNBQVMsRUFBRSxFQUFFLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRTtnQkFDOUIsS0FBSyxFQUFFLEtBQUssSUFBSSxFQUFFO2FBQ25CLENBQUMsQ0FBQztRQUNMLENBQUM7UUFFRCxJQUFJLFlBQVksSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUN6QixTQUFTLEdBQUcsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQy9CLElBQUksU0FBUyxJQUFJLElBQUksRUFBRSxDQUFDO2dCQUV0QixZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDdEIsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPO1lBQ0wsSUFBSTtZQUNKLFFBQVE7WUFDUixVQUFVLEVBQUUsWUFBWSxDQUFDLFVBQVUsSUFBSSxJQUFJO1lBQzNDLE1BQU07WUFDTixZQUFZO1NBQ2IsQ0FBQztJQUNKLENBQUMsQ0FBQyxDQUFDO0lBRUgsT0FBTztRQUNMLEtBQUs7UUFDTCxNQUFNO0tBQ1AsQ0FBQztBQUNKLENBQUM7QUFtQkQsTUFBTSxVQUFVLENBQUMsQ0FLZixLQUEyQztJQUUzQyxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFBhcmFtRGF0YSB9IGZyb20gJ3BhdGgtdG8tcmVnZXhwJztcblxuaW1wb3J0IHR5cGUge1xuICBQcmVwYXJlUmVzdWx0LFxuICBQcmVwYXJlZE1hdGNoLFxuICBQcmVwYXJlZE1hdGNoUm91dGUsXG4gIFJvdXRlLFxuICBSb3V0ZXJNYXRjaGVkUm91dGUsXG59IGZyb20gJy4vdHlwZXMuanMnO1xuXG5pbXBvcnQgdHlwZSB7IEZsYXRSb3V0ZSB9IGZyb20gJy4vYnVpbGRlci5qcyc7XG5cbi8qKlxuICogRmluZHMgdGhlIGZpcnN0IHJvdXRlIHRoYXQgbWF0Y2hlcyB0aGUgZ2l2ZW4gbG9jYXRpb24uXG4gKiBJdGVyYXRlcyB0aHJvdWdoIGFsbCByb3V0ZXMgYW5kIHJldHVybnMgdGhlIGZpcnN0IG1hdGNoIGZvdW5kLlxuICpcbiAqIEB0ZW1wbGF0ZSBUUGFyYW1zIC0gUm91dGUgcGFyYW1ldGVyIHR5cGVzIGV4dHJhY3RlZCBmcm9tIHRoZSBVUkwgcGF0aFxuICogQHBhcmFtIHJvdXRlcyAtIEFycmF5IG9mIGZsYXQgcm91dGVzIHRvIHNlYXJjaCB0aHJvdWdoXG4gKiBAcGFyYW0gbG9jYXRpb24gLSBCcm93c2VyIGxvY2F0aW9uIG9iamVjdCBjb250YWluaW5nIHBhdGhuYW1lIHRvIG1hdGNoXG4gKiBAcmV0dXJucyBUaGUgbWF0Y2hlZCByb3V0ZSB3aXRoIGV4dHJhY3RlZCBwYXJhbWV0ZXJzLCBvciBudWxsIGlmIG5vIG1hdGNoXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRNYXRjaGVkUm91dGU8VFBhcmFtcyBleHRlbmRzIFBhcmFtRGF0YT4oXG4gIHJvdXRlczogRmxhdFJvdXRlPFRQYXJhbXM+W10sXG4gIGxvY2F0aW9uOiBMb2NhdGlvbixcbik6IFJvdXRlck1hdGNoZWRSb3V0ZTxUUGFyYW1zPiB8IG51bGwge1xuICBmb3IgKGNvbnN0IHJvdXRlIG9mIHJvdXRlcykge1xuICAgIGNvbnN0IG1hdGNoID0gcm91dGUubWF0Y2hGdW5jdGlvbihsb2NhdGlvbi5wYXRobmFtZSk7XG4gICAgaWYgKG1hdGNoICE9PSBmYWxzZSkge1xuICAgICAgY29uc3QgeyBwYXRoLCBwYXJhbXMgfSA9IG1hdGNoO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbWF0Y2gsXG4gICAgICAgIHJvdXRlLFxuICAgICAgICBwYXRoLFxuICAgICAgICBwYXJhbXMsXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBudWxsO1xufVxuXG4vKipcbiAqIFByZXBhcmVzIGEgbWF0Y2hlZCByb3V0ZSBmb3IgcmVuZGVyaW5nIGJ5IGxvYWRpbmcgY29tcG9uZW50cyBhbmQgZXhlY3V0aW5nIHByZXBhcmUgZnVuY3Rpb25zLlxuICogVGhpcyBmdW5jdGlvbiBwcm9jZXNzZXMgdGhlIHJvdXRlIGhpZXJhcmNoeSBhbmQgbG9hZHMgYW55IHJlcXVpcmVkIGRhdGEgb3IgY29tcG9uZW50cy5cbiAqXG4gKiBAdGVtcGxhdGUgVFBhcmFtcyAtIFJvdXRlIHBhcmFtZXRlciB0eXBlcyBleHRyYWN0ZWQgZnJvbSB0aGUgVVJMIHBhdGhcbiAqIEBwYXJhbSBtYXRjaCAtIFRoZSBtYXRjaGVkIHJvdXRlIHRvIHByZXBhcmUsIG9yIG51bGwgaWYgbm8gcm91dGUgbWF0Y2hlZFxuICogQHJldHVybnMgUHJlcGFyZWQgbWF0Y2ggd2l0aCBsb2FkZWQgY29tcG9uZW50cyBhbmQgZGF0YSByZWFkeSBmb3IgcmVuZGVyaW5nXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcmVwYXJlTWF0Y2g8VFBhcmFtcyBleHRlbmRzIFBhcmFtRGF0YT4oXG4gIG1hdGNoOiBSb3V0ZXJNYXRjaGVkUm91dGU8VFBhcmFtcz4gfCBudWxsLFxuICBxdWVyeT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuKTogUHJlcGFyZWRNYXRjaDxUUGFyYW1zPiB7XG4gIGlmIChtYXRjaCA9PSBudWxsKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG1hdGNoLFxuICAgICAgcm91dGVzOiBbXSxcbiAgICB9O1xuICB9XG5cbiAgY29uc3QgbWF0Y2hlZFJvdXRlID0gbWF0Y2gucm91dGU7XG5cbiAgY29uc3Qgcm91dGVzOiBQcmVwYXJlZE1hdGNoUm91dGVbXSA9IG1hdGNoLnJvdXRlLnJvdXRlcy5tYXAoKHJvdXRlKSA9PiB7XG4gICAgY29uc3QgeyBwYXRoLCBwcmVwYXJlLCByZXNvdXJjZVBhZ2UsIHJlbmRlciB9ID0gcm91dGU7XG5cbiAgICBsZXQgQ29tcG9uZW50OiB1bmtub3duO1xuICAgIGxldCBwcmVwYXJlZDogUHJlcGFyZVJlc3VsdCB8IHVuZGVmaW5lZDtcblxuICAgIGlmIChwcmVwYXJlICE9IG51bGwpIHtcbiAgICAgIHByZXBhcmVkID0gcHJlcGFyZSh7XG4gICAgICAgIG1hdGNoLFxuICAgICAgICBtYXRjaGVkUm91dGUsXG4gICAgICAgIHJlc291cmNlUGFnZSxcbiAgICAgICAgLy8gRml4IE9iamVjdC5jcmVhdGUobnVsbCkgaXNzdWUgaW4gcGF0aC10by1yZWdleHBcbiAgICAgICAgdmFyaWFibGVzOiB7IC4uLm1hdGNoLnBhcmFtcyB9LFxuICAgICAgICBxdWVyeTogcXVlcnkgPz8ge30sXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAocmVzb3VyY2VQYWdlICE9IG51bGwpIHtcbiAgICAgIENvbXBvbmVudCA9IHJlc291cmNlUGFnZS5nZXQoKTtcbiAgICAgIGlmIChDb21wb25lbnQgPT0gbnVsbCkge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWZsb2F0aW5nLXByb21pc2VzXG4gICAgICAgIHJlc291cmNlUGFnZS5sb2FkKCk7IC8vIGVhZ2VybHkgbG9hZFxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgcGF0aCxcbiAgICAgIHByZXBhcmVkLFxuICAgICAgcmVkaXJlY3RUbzogbWF0Y2hlZFJvdXRlLnJlZGlyZWN0VG8gPz8gbnVsbCxcbiAgICAgIHJlbmRlcixcbiAgICAgIHJlc291cmNlUGFnZSxcbiAgICB9O1xuICB9KTtcblxuICByZXR1cm4ge1xuICAgIG1hdGNoLFxuICAgIHJvdXRlcyxcbiAgfTtcbn1cblxuLyoqXG4gKiBUeXBlIGhlbHBlciBmdW5jdGlvbiBmb3IgY3JlYXRpbmcgc3Ryb25nbHktdHlwZWQgcm91dGUgZGVmaW5pdGlvbnMuXG4gKiBUaGlzIGZ1bmN0aW9uIGRvZXNuJ3QgbW9kaWZ5IHRoZSByb3V0ZSwgaXQganVzdCBwcm92aWRlcyBUeXBlU2NyaXB0IHR5cGUgaW5mZXJlbmNlLlxuICpcbiAqIEB0ZW1wbGF0ZSBUUHJlcGFyZWQgLSBUaGUgdHlwZSBvZiBwcmVwYXJlZCBkYXRhIHJldHVybmVkIGJ5IHRoZSByb3V0ZSdzIHByZXBhcmUgZnVuY3Rpb25cbiAqIEB0ZW1wbGF0ZSBUVmFyaWFibGVzIC0gUm91dGUgcGFyYW1ldGVyIHR5cGVzIGV4dHJhY3RlZCBmcm9tIHRoZSBVUkwgcGF0aFxuICogQHBhcmFtIHJvdXRlIC0gVGhlIHJvdXRlIGNvbmZpZ3VyYXRpb24gdG8gdHlwZVxuICogQHJldHVybnMgVGhlIHNhbWUgcm91dGUgd2l0aCBwcm9wZXIgVHlwZVNjcmlwdCB0eXBlc1xuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCB1c2VyUm91dGUgPSByPHsgdXNlcjogVXNlciB9LCB7IGlkOiBzdHJpbmcgfT4oe1xuICogICBwYXRoOiAnL3VzZXJzLzppZCcsXG4gKiAgIHByZXBhcmU6ICh7IHZhcmlhYmxlcyB9KSA9PiBmZXRjaFVzZXIodmFyaWFibGVzLmlkKSxcbiAqIH0pO1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByPFxuICBUUHJlcGFyZWQgZXh0ZW5kcyBQcmVwYXJlUmVzdWx0LFxuICBUVmFyaWFibGVzIGV4dGVuZHMgUGFyYW1EYXRhID0gUGFyYW1EYXRhLFxuICBUUXVlcnkgPSB1bmtub3duLFxuPihcbiAgcm91dGU6IFJvdXRlPFRQcmVwYXJlZCwgVFZhcmlhYmxlcywgVFF1ZXJ5Pixcbik6IFJvdXRlPFRQcmVwYXJlZCwgVFZhcmlhYmxlcywgVFF1ZXJ5PiB7XG4gIHJldHVybiByb3V0ZTtcbn1cbiJdfQ==
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdG9vbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBcUJBLE1BQU0sVUFBVSxlQUFlLENBQzdCLE1BQTRCLEVBQzVCLFFBQWtCO0lBRWxCLEtBQUssTUFBTSxLQUFLLElBQUksTUFBTSxFQUFFLENBQUM7UUFDM0IsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDckQsSUFBSSxLQUFLLEtBQUssS0FBSyxFQUFFLENBQUM7WUFDcEIsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsR0FBRyxLQUFLLENBQUM7WUFDL0IsT0FBTztnQkFDTCxLQUFLO2dCQUNMLEtBQUs7Z0JBQ0wsSUFBSTtnQkFDSixNQUFNO2FBQ1AsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBVUQsTUFBTSxVQUFVLFlBQVksQ0FDMUIsS0FBeUMsRUFDekMsS0FBK0I7SUFFL0IsSUFBSSxLQUFLLElBQUksSUFBSSxFQUFFLENBQUM7UUFDbEIsT0FBTztZQUNMLEtBQUs7WUFDTCxNQUFNLEVBQUUsRUFBRTtTQUNYLENBQUM7SUFDSixDQUFDO0lBRUQsTUFBTSxZQUFZLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQztJQUVqQyxNQUFNLE1BQU0sR0FBeUIsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7UUFDcEUsTUFBTSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQztRQUV0RCxJQUFJLFNBQWtCLENBQUM7UUFDdkIsSUFBSSxRQUFtQyxDQUFDO1FBRXhDLElBQUksT0FBTyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ3BCLFFBQVEsR0FBRyxPQUFPLENBQUM7Z0JBQ2pCLEtBQUs7Z0JBQ0wsWUFBWTtnQkFDWixZQUFZO2dCQUVaLFNBQVMsRUFBRSxFQUFFLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRTtnQkFDOUIsS0FBSyxFQUFFLEtBQUssSUFBSSxFQUFFO2FBQ25CLENBQUMsQ0FBQztRQUNMLENBQUM7UUFFRCxJQUFJLFlBQVksSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUN6QixTQUFTLEdBQUcsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQy9CLElBQUksU0FBUyxJQUFJLElBQUksRUFBRSxDQUFDO2dCQUV0QixZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDdEIsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPO1lBQ0wsSUFBSTtZQUNKLFFBQVE7WUFDUixVQUFVLEVBQUUsWUFBWSxDQUFDLFVBQVUsSUFBSSxJQUFJO1lBQzNDLE1BQU07WUFDTixZQUFZO1NBQ2IsQ0FBQztJQUNKLENBQUMsQ0FBQyxDQUFDO0lBRUgsT0FBTztRQUNMLEtBQUs7UUFDTCxNQUFNO0tBQ1AsQ0FBQztBQUNKLENBQUM7QUFtQkQsTUFBTSxVQUFVLENBQUMsQ0FLZixLQUEyQztJQUUzQyxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFBhcmFtRGF0YSB9IGZyb20gJ3BhdGgtdG8tcmVnZXhwJztcblxuaW1wb3J0IHR5cGUge1xuICBQcmVwYXJlUmVzdWx0LFxuICBQcmVwYXJlZE1hdGNoLFxuICBQcmVwYXJlZE1hdGNoUm91dGUsXG4gIFJvdXRlLFxuICBSb3V0ZXJNYXRjaGVkUm91dGUsXG59IGZyb20gJy4vdHlwZXMuanMnO1xuXG5pbXBvcnQgdHlwZSB7IEZsYXRSb3V0ZSB9IGZyb20gJy4vYnVpbGRlci5qcyc7XG5cbi8qKlxuICogRmluZHMgdGhlIGZpcnN0IHJvdXRlIHRoYXQgbWF0Y2hlcyB0aGUgZ2l2ZW4gbG9jYXRpb24uXG4gKiBJdGVyYXRlcyB0aHJvdWdoIGFsbCByb3V0ZXMgYW5kIHJldHVybnMgdGhlIGZpcnN0IG1hdGNoIGZvdW5kLlxuICpcbiAqIEB0ZW1wbGF0ZSBUUGFyYW1zIC0gUm91dGUgcGFyYW1ldGVyIHR5cGVzIGV4dHJhY3RlZCBmcm9tIHRoZSBVUkwgcGF0aFxuICogQHBhcmFtIHJvdXRlcyAtIEFycmF5IG9mIGZsYXQgcm91dGVzIHRvIHNlYXJjaCB0aHJvdWdoXG4gKiBAcGFyYW0gbG9jYXRpb24gLSBCcm93c2VyIGxvY2F0aW9uIG9iamVjdCBjb250YWluaW5nIHBhdGhuYW1lIHRvIG1hdGNoXG4gKiBAcmV0dXJucyBUaGUgbWF0Y2hlZCByb3V0ZSB3aXRoIGV4dHJhY3RlZCBwYXJhbWV0ZXJzLCBvciBudWxsIGlmIG5vIG1hdGNoXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRNYXRjaGVkUm91dGU8VFBhcmFtcyBleHRlbmRzIFBhcmFtRGF0YT4oXG4gIHJvdXRlczogRmxhdFJvdXRlPFRQYXJhbXM+W10sXG4gIGxvY2F0aW9uOiBMb2NhdGlvbixcbik6IFJvdXRlck1hdGNoZWRSb3V0ZTxUUGFyYW1zPiB8IG51bGwge1xuICBmb3IgKGNvbnN0IHJvdXRlIG9mIHJvdXRlcykge1xuICAgIGNvbnN0IG1hdGNoID0gcm91dGUubWF0Y2hGdW5jdGlvbihsb2NhdGlvbi5wYXRobmFtZSk7XG4gICAgaWYgKG1hdGNoICE9PSBmYWxzZSkge1xuICAgICAgY29uc3QgeyBwYXRoLCBwYXJhbXMgfSA9IG1hdGNoO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbWF0Y2gsXG4gICAgICAgIHJvdXRlLFxuICAgICAgICBwYXRoLFxuICAgICAgICBwYXJhbXMsXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBudWxsO1xufVxuXG4vKipcbiAqIFByZXBhcmVzIGEgbWF0Y2hlZCByb3V0ZSBmb3IgcmVuZGVyaW5nIGJ5IGxvYWRpbmcgY29tcG9uZW50cyBhbmQgZXhlY3V0aW5nIHByZXBhcmUgZnVuY3Rpb25zLlxuICogVGhpcyBmdW5jdGlvbiBwcm9jZXNzZXMgdGhlIHJvdXRlIGhpZXJhcmNoeSBhbmQgbG9hZHMgYW55IHJlcXVpcmVkIGRhdGEgb3IgY29tcG9uZW50cy5cbiAqXG4gKiBAdGVtcGxhdGUgVFBhcmFtcyAtIFJvdXRlIHBhcmFtZXRlciB0eXBlcyBleHRyYWN0ZWQgZnJvbSB0aGUgVVJMIHBhdGhcbiAqIEBwYXJhbSBtYXRjaCAtIFRoZSBtYXRjaGVkIHJvdXRlIHRvIHByZXBhcmUsIG9yIG51bGwgaWYgbm8gcm91dGUgbWF0Y2hlZFxuICogQHJldHVybnMgUHJlcGFyZWQgbWF0Y2ggd2l0aCBsb2FkZWQgY29tcG9uZW50cyBhbmQgZGF0YSByZWFkeSBmb3IgcmVuZGVyaW5nXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcmVwYXJlTWF0Y2g8VFBhcmFtcyBleHRlbmRzIFBhcmFtRGF0YT4oXG4gIG1hdGNoOiBSb3V0ZXJNYXRjaGVkUm91dGU8VFBhcmFtcz4gfCBudWxsLFxuICBxdWVyeT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuKTogUHJlcGFyZWRNYXRjaDxUUGFyYW1zPiB7XG4gIGlmIChtYXRjaCA9PSBudWxsKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG1hdGNoLFxuICAgICAgcm91dGVzOiBbXSxcbiAgICB9O1xuICB9XG5cbiAgY29uc3QgbWF0Y2hlZFJvdXRlID0gbWF0Y2gucm91dGU7XG5cbiAgY29uc3Qgcm91dGVzOiBQcmVwYXJlZE1hdGNoUm91dGVbXSA9IG1hdGNoLnJvdXRlLnJvdXRlcy5tYXAoKHJvdXRlKSA9PiB7XG4gICAgY29uc3QgeyBwYXRoLCBwcmVwYXJlLCByZXNvdXJjZVBhZ2UsIHJlbmRlciB9ID0gcm91dGU7XG5cbiAgICBsZXQgQ29tcG9uZW50OiB1bmtub3duO1xuICAgIGxldCBwcmVwYXJlZDogUHJlcGFyZVJlc3VsdCB8IHVuZGVmaW5lZDtcblxuICAgIGlmIChwcmVwYXJlICE9IG51bGwpIHtcbiAgICAgIHByZXBhcmVkID0gcHJlcGFyZSh7XG4gICAgICAgIG1hdGNoLFxuICAgICAgICBtYXRjaGVkUm91dGUsXG4gICAgICAgIHJlc291cmNlUGFnZSxcbiAgICAgICAgLy8gRml4IE9iamVjdC5jcmVhdGUobnVsbCkgaXNzdWUgaW4gcGF0aC10by1yZWdleHBcbiAgICAgICAgdmFyaWFibGVzOiB7IC4uLm1hdGNoLnBhcmFtcyB9LFxuICAgICAgICBxdWVyeTogcXVlcnkgPz8ge30sXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAocmVzb3VyY2VQYWdlICE9IG51bGwpIHtcbiAgICAgIENvbXBvbmVudCA9IHJlc291cmNlUGFnZS5nZXQoKTtcbiAgICAgIGlmIChDb21wb25lbnQgPT0gbnVsbCkge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWZsb2F0aW5nLXByb21pc2VzXG4gICAgICAgIHJlc291cmNlUGFnZS5sb2FkKCk7IC8vIGVhZ2VybHkgbG9hZFxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgcGF0aCxcbiAgICAgIHByZXBhcmVkLFxuICAgICAgcmVkaXJlY3RUbzogbWF0Y2hlZFJvdXRlLnJlZGlyZWN0VG8gPz8gbnVsbCxcbiAgICAgIHJlbmRlcixcbiAgICAgIHJlc291cmNlUGFnZSxcbiAgICB9O1xuICB9KTtcblxuICByZXR1cm4ge1xuICAgIG1hdGNoLFxuICAgIHJvdXRlcyxcbiAgfTtcbn1cblxuLyoqXG4gKiBUeXBlIGhlbHBlciBmdW5jdGlvbiBmb3IgY3JlYXRpbmcgc3Ryb25nbHktdHlwZWQgcm91dGUgZGVmaW5pdGlvbnMuXG4gKiBUaGlzIGZ1bmN0aW9uIGRvZXNuJ3QgbW9kaWZ5IHRoZSByb3V0ZSwgaXQganVzdCBwcm92aWRlcyBUeXBlU2NyaXB0IHR5cGUgaW5mZXJlbmNlLlxuICpcbiAqIEB0ZW1wbGF0ZSBUUHJlcGFyZWQgLSBUaGUgdHlwZSBvZiBwcmVwYXJlZCBkYXRhIHJldHVybmVkIGJ5IHRoZSByb3V0ZSdzIHByZXBhcmUgZnVuY3Rpb25cbiAqIEB0ZW1wbGF0ZSBUVmFyaWFibGVzIC0gUm91dGUgcGFyYW1ldGVyIHR5cGVzIGV4dHJhY3RlZCBmcm9tIHRoZSBVUkwgcGF0aFxuICogQHBhcmFtIHJvdXRlIC0gVGhlIHJvdXRlIGNvbmZpZ3VyYXRpb24gdG8gdHlwZVxuICogQHJldHVybnMgVGhlIHNhbWUgcm91dGUgd2l0aCBwcm9wZXIgVHlwZVNjcmlwdCB0eXBlc1xuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCB1c2VyUm91dGUgPSByPHsgdXNlcjogVXNlciB9LCB7IGlkOiBzdHJpbmcgfT4oe1xuICogICBwYXRoOiAnL3VzZXJzLzppZCcsXG4gKiAgIHByZXBhcmU6ICh7IHZhcmlhYmxlcyB9KSA9PiBmZXRjaFVzZXIodmFyaWFibGVzLmlkKSxcbiAqIH0pO1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByPFxuICBUUHJlcGFyZWQgZXh0ZW5kcyBQcmVwYXJlUmVzdWx0LFxuICBUVmFyaWFibGVzIGV4dGVuZHMgUGFyYW1EYXRhID0gUGFyYW1EYXRhLFxuICBUUXVlcnkgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuPihcbiAgcm91dGU6IFJvdXRlPFRQcmVwYXJlZCwgVFZhcmlhYmxlcywgVFF1ZXJ5Pixcbik6IFJvdXRlPFRQcmVwYXJlZCwgVFZhcmlhYmxlcywgVFF1ZXJ5PiB7XG4gIHJldHVybiByb3V0ZTtcbn1cbiJdfQ==
@@ -1,4 +1,5 @@
1
1
  import type { ComponentType, ReactElement, ReactNode, JSX } from 'react';
2
+ import type { Schema as FilterSchema, InferFilters as InferFilterResult, Diagnostic as FilterDiagnostic } from '@plumile/filter-query';
2
3
  import type { Match, MatchFunction, ParamData } from 'path-to-regexp';
3
4
  import type { FlatRoute } from './builder.js';
4
5
  import type { ResourcePage } from './ResourcePage.js';
@@ -16,16 +17,16 @@ export type RouterMatchedRoute<TVariables extends ParamData> = {
16
17
  route: FlatRoute<TVariables>;
17
18
  };
18
19
  export type RouteReactComponent<TProps = Record<string, unknown>> = (props: TProps) => JSX.Element | null;
19
- export type RouteRenderOpts<TPrepared extends PrepareResult, TVariables extends ParamData = ParamData> = {
20
+ export type RouteRenderOpts<TPrepared extends PrepareResult, TVariables extends ParamData = ParamData, TQueryShape extends Record<string, unknown> = Record<string, unknown>> = {
20
21
  children: ReactNode;
21
22
  Component?: RouteReactComponent;
22
23
  prepared: TPrepared | undefined;
23
24
  preparedRoute: PreparedMatchRoute;
24
25
  route: FlatRoute<TVariables> | null;
25
26
  rawQuery: Record<string, string | string[]>;
26
- query: any;
27
+ query: TQueryShape;
27
28
  };
28
- export type RouteRender<TPrepared extends PrepareResult, TVariables extends ParamData = ParamData> = (opts: RouteRenderOpts<TPrepared, TVariables>) => ReactElement<any> | null;
29
+ export type RouteRender<TPrepared extends PrepareResult, TVariables extends ParamData = ParamData, TQueryShape extends Record<string, unknown> = Record<string, unknown>> = (opts: RouteRenderOpts<TPrepared, TVariables, TQueryShape>) => ReactElement | null;
29
30
  export type PreparedMatchRoute = {
30
31
  path?: string;
31
32
  prepared: PrepareResult | undefined;
@@ -44,7 +45,9 @@ export type RouteEntry<TVariables extends ParamData> = {
44
45
  forceRerender: boolean;
45
46
  rawSearch?: string;
46
47
  query: Record<string, string | string[]>;
47
- typedQuery?: any;
48
+ typedQuery?: Record<string, unknown>;
49
+ filters?: Record<string, unknown>;
50
+ filterDiagnostics?: FilterDiagnostic[];
48
51
  };
49
52
  export type QueryDescriptor<T> = {
50
53
  __type: T;
@@ -69,33 +72,30 @@ export type Redirect = {
69
72
  status?: RouterRedirectStatus;
70
73
  };
71
74
  export type PrepareResult = Record<string, any>;
72
- export type PrepareParams<TVariables extends ParamData, TQuery = any> = {
75
+ export type PrepareParams<TVariables extends ParamData, TQueryShape extends Record<string, unknown> = Record<string, unknown>> = {
73
76
  match: RouterMatchedRoute<TVariables>;
74
77
  matchedRoute: FlatRoute<TVariables>;
75
78
  resourcePage?: ResourcePage | null;
76
79
  variables: TVariables;
77
- query: TQuery;
80
+ query: TQueryShape;
78
81
  };
79
- export type RoutePrepare<TPrepared extends PrepareResult, TVariables extends ParamData = ParamData, TQuery = any> = (params: PrepareParams<TVariables, TQuery>) => TPrepared;
80
- export type Route<TPrepared extends PrepareResult, TVariables extends ParamData = ParamData, TQuery = any> = {
81
- children?: (Route<any, any> | Redirect)[];
82
+ export type RoutePrepare<TPrepared extends PrepareResult, TVariables extends ParamData = ParamData, TQueryShape extends Record<string, unknown> = Record<string, unknown>> = (params: PrepareParams<TVariables, TQueryShape>) => TPrepared;
83
+ export type Route<TPrepared extends PrepareResult, TVariables extends ParamData = ParamData, TQueryShape extends Record<string, unknown> = Record<string, unknown>> = {
84
+ children?: (Route<PrepareResult> | Redirect)[];
82
85
  resourcePage?: ResourcePage | null;
83
86
  path?: string;
84
- prepare?: RoutePrepare<TPrepared, TVariables, TQuery>;
85
- render?: RouteRender<TPrepared, TVariables>;
87
+ prepare?: RoutePrepare<TPrepared, TVariables, TQueryShape>;
88
+ render?: RouteRender<TPrepared, TVariables, TQueryShape>;
86
89
  query?: QuerySchema;
87
- filterSchema?: {
88
- __defined: true;
89
- schema: Record<string, any>;
90
- };
90
+ filterSchema?: FilterSchema;
91
91
  };
92
- export type RouteComponentProps<TVariables extends ParamData> = {
93
- children: ReactElement<any>;
94
- routerContext: RoutingContextType<TVariables>;
92
+ export type RouteComponentProps<TVariables extends ParamData, TQueryShape extends Record<string, unknown> = Record<string, unknown>> = {
93
+ children: ReactElement;
94
+ routerContext: RoutingContextType<TVariables, TQueryShape>;
95
95
  route: Route<any, any>;
96
96
  };
97
97
  export type SubscribeCallback<TVariables extends ParamData> = (nextEntry: RouteEntry<TVariables>) => void;
98
- export type RoutingContextType<TVariables extends ParamData> = {
98
+ export type RoutingContextType<TVariables extends ParamData, TQueryShape extends Record<string, unknown> = Record<string, unknown>> = {
99
99
  history: BrowserHistory;
100
100
  get: () => RouteEntry<TVariables>;
101
101
  preloadCode: (pathname: string) => void;
@@ -103,27 +103,15 @@ export type RoutingContextType<TVariables extends ParamData> = {
103
103
  subscribe: (callback: SubscribeCallback<TVariables>) => () => void;
104
104
  navigate: (opts: {
105
105
  pathname?: string;
106
- query?: Record<string, any>;
106
+ query?: TQueryShape;
107
+ filters?: Record<string, unknown>;
107
108
  replace?: boolean;
108
- filters?: Record<string, any>;
109
- filterSchema?: {
110
- __defined: true;
111
- schema: Record<string, any>;
112
- };
113
- batch?: boolean;
114
- immediate?: boolean;
115
109
  }) => void;
116
- resolveFilterSchema: (pathname: string) => {
117
- __defined: true;
118
- schema: Record<string, any>;
119
- } | undefined;
120
- currentMergedFilterSchema: () => {
121
- __defined: true;
122
- schema: Record<string, any>;
123
- } | undefined;
124
110
  };
125
111
  export type ResourcePageReturn = {
126
- default: ComponentType<any>;
127
- } | ComponentType<any>;
112
+ default: ComponentType<unknown>;
113
+ } | ComponentType<unknown>;
128
114
  export type ResourcePageLoader = () => Promise<ResourcePageReturn>;
115
+ export type InferFilters<S extends FilterSchema | undefined> = S extends FilterSchema ? InferFilterResult<S> : Record<string, never>;
116
+ export type { FilterSchema };
129
117
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
package/lib/esm/types.js CHANGED
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQ29tcG9uZW50VHlwZSwgUmVhY3RFbGVtZW50LCBSZWFjdE5vZGUsIEpTWCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB0eXBlIHsgTWF0Y2gsIE1hdGNoRnVuY3Rpb24sIFBhcmFtRGF0YSB9IGZyb20gJ3BhdGgtdG8tcmVnZXhwJztcblxuaW1wb3J0IHR5cGUgeyBGbGF0Um91dGUgfSBmcm9tICcuL2J1aWxkZXIuanMnO1xuaW1wb3J0IHR5cGUgeyBSZXNvdXJjZVBhZ2UgfSBmcm9tICcuL1Jlc291cmNlUGFnZS5qcyc7XG5pbXBvcnQgdHlwZSB7IEJyb3dzZXJIaXN0b3J5IH0gZnJvbSAnLi9oaXN0b3J5L2luZGV4LmpzJztcblxuLyoqXG4gKiBJbnB1dCB0eXBlIGZvciBjcmVhdGluZyBhIEZsYXRSb3V0ZSBpbnN0YW5jZS5cbiAqIEB0ZW1wbGF0ZSBUVmFyaWFibGVzIC0gUm91dGUgcGFyYW1ldGVyIHR5cGVzIGV4dHJhY3RlZCBmcm9tIHRoZSBVUkwgcGF0aFxuICovXG5leHBvcnQgdHlwZSBGbGF0Um91dGVJbnB1dDxUVmFyaWFibGVzIGV4dGVuZHMgUGFyYW1EYXRhPiA9IHtcbiAgLyoqIFRoZSBVUkwgcGF0aCBwYXR0ZXJuIGZvciB0aGlzIHJvdXRlICovXG4gIHBhdGg6IHN0cmluZztcbiAgLyoqIE9wdGlvbmFsIHJlZGlyZWN0IGRlc3RpbmF0aW9uIGlmIHRoaXMgcm91dGUgc2hvdWxkIHJlZGlyZWN0ICovXG4gIHJlZGlyZWN0VG8/OiBzdHJpbmc7XG4gIC8qKiBGdW5jdGlvbiB0byBtYXRjaCBVUkwgcGF0aHMgYWdhaW5zdCB0aGlzIHJvdXRlIHBhdHRlcm4gKi9cbiAgbWF0Y2hGdW5jdGlvbjogTWF0Y2hGdW5jdGlvbjxUVmFyaWFibGVzPjtcbiAgLyoqIE5lc3RlZCByb3V0ZXMgdGhhdCBzaG91bGQgYmUgcmVuZGVyZWQgd2l0aGluIHRoaXMgcm91dGUgKi9cbiAgcm91dGVzOiBSb3V0ZTxhbnksIGFueT5bXTtcbn07XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIG1hdGNoZWQgcm91dGUgd2l0aCBleHRyYWN0ZWQgcGFyYW1ldGVycyBhbmQgbWV0YWRhdGEuXG4gKiBAdGVtcGxhdGUgVFZhcmlhYmxlcyAtIFJvdXRlIHBhcmFtZXRlciB0eXBlcyBleHRyYWN0ZWQgZnJvbSB0aGUgVVJMIHBhdGhcbiAqL1xuZXhwb3J0IHR5cGUgUm91dGVyTWF0Y2hlZFJvdXRlPFRWYXJpYWJsZXMgZXh0ZW5kcyBQYXJhbURhdGE+ID0ge1xuICAvKiogVGhlIG1hdGNoIHJlc3VsdCBmcm9tIHBhdGgtdG8tcmVnZXhwICovXG4gIG1hdGNoOiBNYXRjaDxUVmFyaWFibGVzPjtcbiAgLyoqIEV4dHJhY3RlZCBwYXJhbWV0ZXJzIGZyb20gdGhlIFVSTCBwYXRoICovXG4gIHBhcmFtczogVFZhcmlhYmxlcztcbiAgLyoqIFRoZSBtYXRjaGVkIHBhdGggc3RyaW5nICovXG4gIHBhdGg6IHN0cmluZztcbiAgLyoqIFRoZSBmbGF0IHJvdXRlIHRoYXQgd2FzIG1hdGNoZWQgKi9cbiAgcm91dGU6IEZsYXRSb3V0ZTxUVmFyaWFibGVzPjtcbn07XG5cbi8qKlxuICogQSBSZWFjdCBjb21wb25lbnQgdGhhdCBjYW4gYmUgdXNlZCBhcyBhIHJvdXRlIGNvbXBvbmVudC5cbiAqIEB0ZW1wbGF0ZSBUUHJvcHMgLSBUaGUgcHJvcHMgdHlwZSBmb3IgdGhlIGNvbXBvbmVudFxuICovXG5leHBvcnQgdHlwZSBSb3V0ZVJlYWN0Q29tcG9uZW50PFRQcm9wcyA9IFJlY29yZDxzdHJpbmcsIHVua25vd24+PiA9IChcbiAgcHJvcHM6IFRQcm9wcyxcbikgPT4gSlNYLkVsZW1lbnQgfCBudWxsO1xuXG4vKipcbiAqIE9wdGlvbnMgcGFzc2VkIHRvIGEgcm91dGUgcmVuZGVyIGZ1bmN0aW9uLlxuICogQHRlbXBsYXRlIFRQcmVwYXJlZCAtIFRoZSB0eXBlIG9mIHByZXBhcmVkIGRhdGEgcmV0dXJuZWQgYnkgdGhlIHJvdXRlJ3MgcHJlcGFyZSBmdW5jdGlvblxuICogQHRlbXBsYXRlIFRWYXJpYWJsZXMgLSBSb3V0ZSBwYXJhbWV0ZXIgdHlwZXMgZXh0cmFjdGVkIGZyb20gdGhlIFVSTCBwYXRoXG4gKi9cbmV4cG9ydCB0eXBlIFJvdXRlUmVuZGVyT3B0czxcbiAgVFByZXBhcmVkIGV4dGVuZHMgUHJlcGFyZVJlc3VsdCxcbiAgVFZhcmlhYmxlcyBleHRlbmRzIFBhcmFtRGF0YSA9IFBhcmFtRGF0YSxcbj4gPSB7XG4gIC8qKiBDaGlsZCBjb21wb25lbnRzIHRvIHJlbmRlciB3aXRoaW4gdGhpcyByb3V0ZSAqL1xuICBjaGlsZHJlbjogUmVhY3ROb2RlO1xuICAvKiogT3B0aW9uYWwgY29tcG9uZW50IHRvIHJlbmRlciAoZnJvbSBSZXNvdXJjZVBhZ2UpICovXG4gIENvbXBvbmVudD86IFJvdXRlUmVhY3RDb21wb25lbnQ7XG4gIC8qKiBEYXRhIHByZXBhcmVkIGJ5IHRoZSByb3V0ZSdzIHByZXBhcmUgZnVuY3Rpb24gKi9cbiAgcHJlcGFyZWQ6IFRQcmVwYXJlZCB8IHVuZGVmaW5lZDtcbiAgLyoqIFRoZSBwcmVwYXJlZCByb3V0ZSB0aGF0IGlzIGJlaW5nIHJlbmRlcmVkICovXG4gIHByZXBhcmVkUm91dGU6IFByZXBhcmVkTWF0Y2hSb3V0ZTtcbiAgLyoqIFRoZSBtYXRjaGVkIHJvdXRlIG9yIG51bGwgaWYgbm8gbWF0Y2ggKi9cbiAgcm91dGU6IEZsYXRSb3V0ZTxUVmFyaWFibGVzPiB8IG51bGw7XG4gIC8qKiBSYXcgcXVlcnkgb2JqZWN0IChQaGFzZSAyIGdlbmVyaWMgcGFyc2luZykgKi9cbiAgcmF3UXVlcnk6IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IHN0cmluZ1tdPjtcbiAgLyoqIFR5cGVkIHF1ZXJ5IG9iamVjdCAoUGhhc2UgMykuIEZhbGxzIGJhY2sgdG8gcmF3UXVlcnkgaWYgbm8gc2NoZW1hICovXG4gIHF1ZXJ5OiBhbnk7XG59O1xuXG4vKipcbiAqIEZ1bmN0aW9uIHRvIHJlbmRlciBhIHJvdXRlIHdpdGggY3VzdG9tIGxvZ2ljLlxuICogQHRlbXBsYXRlIFRQcmVwYXJlZCAtIFRoZSB0eXBlIG9mIHByZXBhcmVkIGRhdGEgcmV0dXJuZWQgYnkgdGhlIHJvdXRlJ3MgcHJlcGFyZSBmdW5jdGlvblxuICogQHRlbXBsYXRlIFRWYXJpYWJsZXMgLSBSb3V0ZSBwYXJhbWV0ZXIgdHlwZXMgZXh0cmFjdGVkIGZyb20gdGhlIFVSTCBwYXRoXG4gKi9cbmV4cG9ydCB0eXBlIFJvdXRlUmVuZGVyPFxuICBUUHJlcGFyZWQgZXh0ZW5kcyBQcmVwYXJlUmVzdWx0LFxuICBUVmFyaWFibGVzIGV4dGVuZHMgUGFyYW1EYXRhID0gUGFyYW1EYXRhLFxuPiA9IChvcHRzOiBSb3V0ZVJlbmRlck9wdHM8VFByZXBhcmVkLCBUVmFyaWFibGVzPikgPT4gUmVhY3RFbGVtZW50PGFueT4gfCBudWxsO1xuXG4vKipcbiAqIEEgcm91dGUgdGhhdCBoYXMgYmVlbiBwcmVwYXJlZCBmb3IgcmVuZGVyaW5nIHdpdGggbG9hZGVkIGRhdGEgYW5kIGNvbXBvbmVudHMuXG4gKi9cbmV4cG9ydCB0eXBlIFByZXBhcmVkTWF0Y2hSb3V0ZSA9IHtcbiAgLyoqIFRoZSBwYXRoIHRoYXQgd2FzIG1hdGNoZWQgKi9cbiAgcGF0aD86IHN0cmluZztcbiAgLyoqIERhdGEgcHJlcGFyZWQgYnkgdGhlIHJvdXRlJ3MgcHJlcGFyZSBmdW5jdGlvbiAqL1xuICBwcmVwYXJlZDogUHJlcGFyZVJlc3VsdCB8IHVuZGVmaW5lZDtcbiAgLyoqIEN1c3RvbSByZW5kZXIgZnVuY3Rpb24gZm9yIHRoaXMgcm91dGUgKi9cbiAgcmVuZGVyPzogUm91dGVSZW5kZXI8YW55LCBhbnk+O1xuICAvKiogUmVkaXJlY3QgZGVzdGluYXRpb24gaWYgdGhpcyByb3V0ZSBzaG91bGQgcmVkaXJlY3QgKi9cbiAgcmVkaXJlY3RUbzogc3RyaW5nIHwgbnVsbDtcbiAgLyoqIFJlc291cmNlIHBhZ2UgZm9yIGxhenktbG9hZGVkIGNvbXBvbmVudHMgKi9cbiAgcmVzb3VyY2VQYWdlPzogUmVzb3VyY2VQYWdlIHwgbnVsbDtcbn07XG5cbi8qKlxuICogUmVzdWx0IG9mIHByZXBhcmluZyBhIG1hdGNoZWQgcm91dGUsIGluY2x1ZGluZyBhbGwgbmVzdGVkIHJvdXRlcy5cbiAqIEB0ZW1wbGF0ZSBUVmFyaWFibGVzIC0gUm91dGUgcGFyYW1ldGVyIHR5cGVzIGV4dHJhY3RlZCBmcm9tIHRoZSBVUkwgcGF0aFxuICovXG5leHBvcnQgdHlwZSBQcmVwYXJlZE1hdGNoPFRWYXJpYWJsZXMgZXh0ZW5kcyBQYXJhbURhdGE+ID0ge1xuICAvKiogVGhlIG1hdGNoZWQgcm91dGUgb3IgbnVsbCBpZiBubyBtYXRjaCAqL1xuICBtYXRjaDogUm91dGVyTWF0Y2hlZFJvdXRlPFRWYXJpYWJsZXM+IHwgbnVsbDtcbiAgLyoqIEFycmF5IG9mIHByZXBhcmVkIHJvdXRlcyBmb3IgcmVuZGVyaW5nICovXG4gIHJvdXRlczogUHJlcGFyZWRNYXRjaFJvdXRlW107XG59O1xuXG4vKipcbiAqIENvbXBsZXRlIHJvdXRlIGVudHJ5IHJlcHJlc2VudGluZyB0aGUgY3VycmVudCByb3V0ZXIgc3RhdGUuXG4gKiBAdGVtcGxhdGUgVFZhcmlhYmxlcyAtIFJvdXRlIHBhcmFtZXRlciB0eXBlcyBleHRyYWN0ZWQgZnJvbSB0aGUgVVJMIHBhdGhcbiAqL1xuZXhwb3J0IHR5cGUgUm91dGVFbnRyeTxUVmFyaWFibGVzIGV4dGVuZHMgUGFyYW1EYXRhPiA9IHtcbiAgLyoqIFRoZSBwcmVwYXJlZCBtYXRjaCB3aXRoIGxvYWRlZCBkYXRhIGFuZCBjb21wb25lbnRzICovXG4gIHByZXBhcmVkTWF0Y2g6IFByZXBhcmVkTWF0Y2g8VFZhcmlhYmxlcz47XG4gIC8qKiBDdXJyZW50IGJyb3dzZXIgbG9jYXRpb24gKi9cbiAgbG9jYXRpb246IExvY2F0aW9uO1xuICAvKiogVGhlIG1hdGNoZWQgcm91dGUgb3IgbnVsbCBpZiBubyBtYXRjaCAqL1xuICByb3V0ZTogUm91dGVyTWF0Y2hlZFJvdXRlPFRWYXJpYWJsZXM+IHwgbnVsbDtcbiAgLyoqIFdoZXRoZXIgdG8gZm9yY2UgYSByZS1yZW5kZXIgZXZlbiBpZiB0aGUgcGF0aCBoYXNuJ3QgY2hhbmdlZCAqL1xuICBmb3JjZVJlcmVuZGVyOiBib29sZWFuO1xuICAvKiogUmF3IHNlYXJjaCBzdHJpbmcgKHF1ZXJ5IHBhcnQpIG9mIHRoZSBsb2NhdGlvbiBmb3IgY2hhbmdlIGRldGVjdGlvbiAqL1xuICByYXdTZWFyY2g/OiBzdHJpbmc7XG4gIC8qKiBQYXJzZWQgcmF3IHF1ZXJ5IHBhcmFtZXRlcnMgKHZhbHVlcyBhZ2dyZWdhdGVkOyBkdXBsaWNhdGVzID0+IGFycmF5KSAqL1xuICBxdWVyeTogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgc3RyaW5nW10+O1xuICAvKiogVHlwZWQgcXVlcnkgZGVyaXZlZCBmcm9tIHNjaGVtYSBmb3IgdGhlIG1hdGNoZWQgcm91dGUgKFBoYXNlIDMpICovXG4gIHR5cGVkUXVlcnk/OiBhbnk7XG59O1xuXG4vKiogUXVlcnkgZGVzY3JpcHRvciBiYXNlIHNoYXBlICovXG5leHBvcnQgdHlwZSBRdWVyeURlc2NyaXB0b3I8VD4gPSB7XG4gIC8qKiBpbnRlcm5hbCBtYXJrZXIgZm9yIGluZmVyZW5jZSAqL1xuICBfX3R5cGU6IFQ7XG4gIC8qKiBwYXJzZSBhbiBhcnJheSBvZiBzdHJpbmcgdmFsdWVzIGludG8gVCB8IHVuZGVmaW5lZCAqL1xuICBwYXJzZTogKHZhbHVlczogc3RyaW5nW10pID0+IFQgfCB1bmRlZmluZWQ7XG4gIC8qKiBzZXJpYWxpemUgYSB2YWx1ZSBpbnRvIHN0cmluZyB2YWx1ZXMgKi9cbiAgc2VyaWFsaXplOiAodmFsdWU6IFQpID0+IHN0cmluZ1tdO1xuICBvcHRpb25hbD86IGJvb2xlYW47XG4gIGhhc0RlZmF1bHQ/OiBib29sZWFuO1xuICBkZWZhdWx0VmFsdWU/OiBUO1xufTtcblxuZXhwb3J0IHR5cGUgUXVlcnlTY2hlbWEgPSBSZWNvcmQ8c3RyaW5nLCBRdWVyeURlc2NyaXB0b3I8YW55Pj47XG5cbi8qKiBJbmZlciB0aGUgb3V0cHV0IHR5cGUgb2YgYSBzY2hlbWEgKi9cbmV4cG9ydCB0eXBlIEluZmVyUXVlcnk8UyBleHRlbmRzIFF1ZXJ5U2NoZW1hPiA9IHtcbiAgW0sgaW4ga2V5b2YgU106IFNbS10gZXh0ZW5kcyBRdWVyeURlc2NyaXB0b3I8aW5mZXIgTz5cbiAgICA/IFNbS11bJ29wdGlvbmFsJ10gZXh0ZW5kcyB0cnVlXG4gICAgICA/IFNbS11bJ2hhc0RlZmF1bHQnXSBleHRlbmRzIHRydWVcbiAgICAgICAgPyBPXG4gICAgICAgIDogTyB8IHVuZGVmaW5lZFxuICAgICAgOiBPXG4gICAgOiBuZXZlcjtcbn07XG5cbi8qKlxuICogSFRUUCBzdGF0dXMgY29kZXMgZm9yIHJlZGlyZWN0cy5cbiAqL1xuZXhwb3J0IHR5cGUgUm91dGVyUmVkaXJlY3RTdGF0dXMgPSAzMDEgfCAzMDI7XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIG1hdGNoZWQgcm91dGUgd2l0aCByZWdleCBtYXRjaCByZXN1bHQuXG4gKiBAdGVtcGxhdGUgVFZhcmlhYmxlcyAtIFJvdXRlIHBhcmFtZXRlciB0eXBlcyBleHRyYWN0ZWQgZnJvbSB0aGUgVVJMIHBhdGhcbiAqL1xuZXhwb3J0IHR5cGUgTWF0Y2hlZFJvdXRlPFRWYXJpYWJsZXMgZXh0ZW5kcyBQYXJhbURhdGE+ID0ge1xuICAvKiogVGhlIHJlZ2V4IG1hdGNoIHJlc3VsdCAqL1xuICBtYXRjaDogUmVnRXhwRXhlY0FycmF5O1xuICAvKiogVGhlIGZsYXQgcm91dGUgdGhhdCB3YXMgbWF0Y2hlZCAqL1xuICByb3V0ZTogRmxhdFJvdXRlPFRWYXJpYWJsZXM+O1xufTtcblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIGZvciBhIHJvdXRlIHJlZGlyZWN0LlxuICovXG5leHBvcnQgdHlwZSBSZWRpcmVjdCA9IHtcbiAgLyoqIE9wdGlvbmFsIHNvdXJjZSBwYXRoIHBhdHRlcm4gKi9cbiAgcGF0aD86IHN0cmluZztcbiAgLyoqIERlc3RpbmF0aW9uIHBhdGggZm9yIHRoZSByZWRpcmVjdCAqL1xuICB0bzogc3RyaW5nO1xuICAvKiogSFRUUCBzdGF0dXMgY29kZSBmb3IgdGhlIHJlZGlyZWN0ICovXG4gIHN0YXR1cz86IFJvdXRlclJlZGlyZWN0U3RhdHVzO1xufTtcblxuLyoqXG4gKiBCYXNlIHR5cGUgZm9yIGRhdGEgcHJlcGFyZWQgYnkgcm91dGUgcHJlcGFyZSBmdW5jdGlvbnMuXG4gKi9cbmV4cG9ydCB0eXBlIFByZXBhcmVSZXN1bHQgPSBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuXG4vKipcbiAqIFBhcmFtZXRlcnMgcGFzc2VkIHRvIGEgcm91dGUncyBwcmVwYXJlIGZ1bmN0aW9uLlxuICogQHRlbXBsYXRlIFRWYXJpYWJsZXMgLSBSb3V0ZSBwYXJhbWV0ZXIgdHlwZXMgZXh0cmFjdGVkIGZyb20gdGhlIFVSTCBwYXRoXG4gKi9cbmV4cG9ydCB0eXBlIFByZXBhcmVQYXJhbXM8VFZhcmlhYmxlcyBleHRlbmRzIFBhcmFtRGF0YSwgVFF1ZXJ5ID0gYW55PiA9IHtcbiAgLyoqIFRoZSBtYXRjaGVkIHJvdXRlIHdpdGggZXh0cmFjdGVkIHBhcmFtZXRlcnMgKi9cbiAgbWF0Y2g6IFJvdXRlck1hdGNoZWRSb3V0ZTxUVmFyaWFibGVzPjtcbiAgLyoqIFRoZSBmbGF0IHJvdXRlIHRoYXQgd2FzIG1hdGNoZWQgKi9cbiAgbWF0Y2hlZFJvdXRlOiBGbGF0Um91dGU8VFZhcmlhYmxlcz47XG4gIC8qKiBSZXNvdXJjZSBwYWdlIGZvciBsYXp5LWxvYWRlZCBjb21wb25lbnRzICovXG4gIHJlc291cmNlUGFnZT86IFJlc291cmNlUGFnZSB8IG51bGw7XG4gIC8qKiBFeHRyYWN0ZWQgVVJMIHBhcmFtZXRlcnMgKi9cbiAgdmFyaWFibGVzOiBUVmFyaWFibGVzO1xuICAvKiogVHlwZWQgcXVlcnkgb2JqZWN0ICovXG4gIHF1ZXJ5OiBUUXVlcnk7XG59O1xuXG4vKipcbiAqIEZ1bmN0aW9uIHRvIHByZXBhcmUgZGF0YSBmb3IgYSByb3V0ZSBiZWZvcmUgcmVuZGVyaW5nLlxuICogQHRlbXBsYXRlIFRQcmVwYXJlZCAtIFRoZSB0eXBlIG9mIGRhdGEgdGhpcyBmdW5jdGlvbiByZXR1cm5zXG4gKiBAdGVtcGxhdGUgVFZhcmlhYmxlcyAtIFJvdXRlIHBhcmFtZXRlciB0eXBlcyBleHRyYWN0ZWQgZnJvbSB0aGUgVVJMIHBhdGhcbiAqL1xuZXhwb3J0IHR5cGUgUm91dGVQcmVwYXJlPFxuICBUUHJlcGFyZWQgZXh0ZW5kcyBQcmVwYXJlUmVzdWx0LFxuICBUVmFyaWFibGVzIGV4dGVuZHMgUGFyYW1EYXRhID0gUGFyYW1EYXRhLFxuICBUUXVlcnkgPSBhbnksXG4+ID0gKHBhcmFtczogUHJlcGFyZVBhcmFtczxUVmFyaWFibGVzLCBUUXVlcnk+KSA9PiBUUHJlcGFyZWQ7XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBmb3IgYSBzaW5nbGUgcm91dGUgaW4gdGhlIHJvdXRlci5cbiAqIEB0ZW1wbGF0ZSBUUHJlcGFyZWQgLSBUaGUgdHlwZSBvZiBwcmVwYXJlZCBkYXRhIHJldHVybmVkIGJ5IHRoZSByb3V0ZSdzIHByZXBhcmUgZnVuY3Rpb25cbiAqIEB0ZW1wbGF0ZSBUVmFyaWFibGVzIC0gUm91dGUgcGFyYW1ldGVyIHR5cGVzIGV4dHJhY3RlZCBmcm9tIHRoZSBVUkwgcGF0aFxuICovXG5leHBvcnQgdHlwZSBSb3V0ZTxcbiAgVFByZXBhcmVkIGV4dGVuZHMgUHJlcGFyZVJlc3VsdCxcbiAgVFZhcmlhYmxlcyBleHRlbmRzIFBhcmFtRGF0YSA9IFBhcmFtRGF0YSxcbiAgVFF1ZXJ5ID0gYW55LFxuPiA9IHtcbiAgLyoqIE5lc3RlZCBjaGlsZCByb3V0ZXMgb3IgcmVkaXJlY3RzICovXG4gIGNoaWxkcmVuPzogKFJvdXRlPGFueSwgYW55PiB8IFJlZGlyZWN0KVtdO1xuICAvKiogUmVzb3VyY2UgcGFnZSBmb3IgbGF6eS1sb2FkZWQgY29tcG9uZW50cyAqL1xuICByZXNvdXJjZVBhZ2U/OiBSZXNvdXJjZVBhZ2UgfCBudWxsO1xuICAvKiogVVJMIHBhdGggcGF0dGVybiBmb3IgdGhpcyByb3V0ZSAqL1xuICBwYXRoPzogc3RyaW5nO1xuICAvKiogRnVuY3Rpb24gdG8gcHJlcGFyZSBkYXRhIGJlZm9yZSByZW5kZXJpbmcgKi9cbiAgcHJlcGFyZT86IFJvdXRlUHJlcGFyZTxUUHJlcGFyZWQsIFRWYXJpYWJsZXMsIFRRdWVyeT47XG4gIC8qKiBDdXN0b20gcmVuZGVyIGZ1bmN0aW9uIGZvciB0aGlzIHJvdXRlICovXG4gIHJlbmRlcj86IFJvdXRlUmVuZGVyPFRQcmVwYXJlZCwgVFZhcmlhYmxlcz47XG4gIC8qKiBPcHRpb25hbCBxdWVyeSBzY2hlbWEgZm9yIHR5cGVkIHBhcnNpbmcgKFBoYXNlIDMgYXR0YWNobWVudCkgKi9cbiAgcXVlcnk/OiBRdWVyeVNjaGVtYTtcbiAgLyoqIE9wdGlvbmFsIHJvdXRlLWxldmVsIGZpbHRlciBzY2hlbWEgKG1lcmdlZCB3aXRoIGFuY2VzdG9yczsgZGVlcGVzdCBvdmVycmlkZSBwZXIgZmllbGQpICovXG4gIGZpbHRlclNjaGVtYT86IHsgX19kZWZpbmVkOiB0cnVlOyBzY2hlbWE6IFJlY29yZDxzdHJpbmcsIGFueT4gfTtcbn07XG5cbi8qKlxuICogUHJvcHMgcGFzc2VkIHRvIFJvdXRlQ29tcG9uZW50IGluc3RhbmNlcy5cbiAqIEB0ZW1wbGF0ZSBUVmFyaWFibGVzIC0gUm91dGUgcGFyYW1ldGVyIHR5cGVzIGV4dHJhY3RlZCBmcm9tIHRoZSBVUkwgcGF0aFxuICovXG5leHBvcnQgdHlwZSBSb3V0ZUNvbXBvbmVudFByb3BzPFRWYXJpYWJsZXMgZXh0ZW5kcyBQYXJhbURhdGE+ID0ge1xuICAvKiogQ2hpbGQgY29tcG9uZW50cyB0byByZW5kZXIgKi9cbiAgY2hpbGRyZW46IFJlYWN0RWxlbWVudDxhbnk+O1xuICAvKiogUm91dGVyIGNvbnRleHQgY29udGFpbmluZyBuYXZpZ2F0aW9uIGFuZCBzdGF0ZSAqL1xuICByb3V0ZXJDb250ZXh0OiBSb3V0aW5nQ29udGV4dFR5cGU8VFZhcmlhYmxlcz47XG4gIC8qKiBUaGUgcm91dGUgY29uZmlndXJhdGlvbiAqL1xuICByb3V0ZTogUm91dGU8YW55LCBhbnk+O1xufTtcblxuLyoqXG4gKiBDYWxsYmFjayBmdW5jdGlvbiBmb3Igcm91dGUgY2hhbmdlcy5cbiAqIEB0ZW1wbGF0ZSBUVmFyaWFibGVzIC0gUm91dGUgcGFyYW1ldGVyIHR5cGVzIGV4dHJhY3RlZCBmcm9tIHRoZSBVUkwgcGF0aFxuICovXG5leHBvcnQgdHlwZSBTdWJzY3JpYmVDYWxsYmFjazxUVmFyaWFibGVzIGV4dGVuZHMgUGFyYW1EYXRhPiA9IChcbiAgbmV4dEVudHJ5OiBSb3V0ZUVudHJ5PFRWYXJpYWJsZXM+LFxuKSA9PiB2b2lkO1xuXG4vKipcbiAqIFJvdXRlciBjb250ZXh0IHR5cGUgdGhhdCBwcm92aWRlcyBuYXZpZ2F0aW9uIGFuZCBzdGF0ZSBtYW5hZ2VtZW50LlxuICogQHRlbXBsYXRlIFRWYXJpYWJsZXMgLSBSb3V0ZSBwYXJhbWV0ZXIgdHlwZXMgZXh0cmFjdGVkIGZyb20gdGhlIFVSTCBwYXRoXG4gKi9cbmV4cG9ydCB0eXBlIFJvdXRpbmdDb250ZXh0VHlwZTxUVmFyaWFibGVzIGV4dGVuZHMgUGFyYW1EYXRhPiA9IHtcbiAgLyoqIEJyb3dzZXIgaGlzdG9yeSBpbnN0YW5jZSBmb3IgbmF2aWdhdGlvbiAqL1xuICBoaXN0b3J5OiBCcm93c2VySGlzdG9yeTtcbiAgLyoqIEdldCB0aGUgY3VycmVudCByb3V0ZSBlbnRyeSAqL1xuICBnZXQ6ICgpID0+IFJvdXRlRW50cnk8VFZhcmlhYmxlcz47XG4gIC8qKiBQcmVsb2FkIGNvZGUgZm9yIGEgcm91dGUgd2l0aG91dCBzdG9yaW5nIHRoZSByZXN1bHQgKi9cbiAgcHJlbG9hZENvZGU6IChwYXRobmFtZTogc3RyaW5nKSA9PiB2b2lkO1xuICAvKiogUHJlbG9hZCBjb2RlIGFuZCBkYXRhIGZvciBhIHJvdXRlIHdpdGhvdXQgc3RvcmluZyB0aGUgcmVzdWx0ICovXG4gIHByZWxvYWQ6IChwYXRobmFtZTogc3RyaW5nKSA9PiB2b2lkO1xuICAvKiogU3Vic2NyaWJlIHRvIHJvdXRlIGNoYW5nZXMgKi9cbiAgc3Vic2NyaWJlOiAoY2FsbGJhY2s6IFN1YnNjcmliZUNhbGxiYWNrPFRWYXJpYWJsZXM+KSA9PiAoKSA9PiB2b2lkO1xuICAvKiogTmF2aWdhdGUgd2l0aCBvcHRpb25hbCBwYXRobmFtZSBhbmQgdHlwZWQvcmF3IHF1ZXJ5IG9iamVjdCAqL1xuICBuYXZpZ2F0ZTogKG9wdHM6IHtcbiAgICBwYXRobmFtZT86IHN0cmluZztcbiAgICBxdWVyeT86IFJlY29yZDxzdHJpbmcsIGFueT47XG4gICAgcmVwbGFjZT86IGJvb2xlYW47XG4gICAgLyoqIFN0cnVjdHVyZWQgZmlsdGVycyBzdGF0ZSB0byBtZXJnZSAobXVzdCBwcm92aWRlIGZpbHRlclNjaGVtYSB0b28pICovXG4gICAgZmlsdGVycz86IFJlY29yZDxzdHJpbmcsIGFueT47XG4gICAgLyoqIERlZmluZWQgZmlsdGVyIHNjaGVtYSB3cmFwcGVyIHVzZWQgdG8gc2VyaWFsaXplIHByb3ZpZGVkIGZpbHRlcnMgKi9cbiAgICBmaWx0ZXJTY2hlbWE/OiB7IF9fZGVmaW5lZDogdHJ1ZTsgc2NoZW1hOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IH07XG4gICAgLyoqIEVuYWJsZSBjb2FsZXNjaW5nIHdpdGggb3RoZXIgbmF2aWdhdGlvbnMgaW4gdGhlIHNhbWUgbWljcm90YXNrIChtYW51YWwgb3B04oCRaW4pICovXG4gICAgYmF0Y2g/OiBib29sZWFuO1xuICAgIC8qKiBGb3JjZSBpbW1lZGlhdGUgbmF2aWdhdGlvbiBldmVuIGlmIGF1dG9CYXRjaCBpcyBlbmFibGVkIGdsb2JhbGx5ICovXG4gICAgaW1tZWRpYXRlPzogYm9vbGVhbjtcbiAgfSkgPT4gdm9pZDtcbiAgLyoqIFJlc29sdmUgbWVyZ2VkIHJvdXRlLWxldmVsIGZpbHRlciBzY2hlbWEgZm9yIGEgKHBvc3NpYmx5IGN1cnJlbnQpIHBhdGhuYW1lICovXG4gIHJlc29sdmVGaWx0ZXJTY2hlbWE6IChcbiAgICBwYXRobmFtZTogc3RyaW5nLFxuICApID0+IHsgX19kZWZpbmVkOiB0cnVlOyBzY2hlbWE6IFJlY29yZDxzdHJpbmcsIGFueT4gfSB8IHVuZGVmaW5lZDtcbiAgLyoqIEdldCBtZXJnZWQgZmlsdGVyIHNjaGVtYSBmb3IgY3VycmVudCByb3V0ZSAodW5kZWZpbmVkIGlmIG5vbmUpICovXG4gIGN1cnJlbnRNZXJnZWRGaWx0ZXJTY2hlbWE6ICgpID0+XG4gICAgfCB7IF9fZGVmaW5lZDogdHJ1ZTsgc2NoZW1hOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IH1cbiAgICB8IHVuZGVmaW5lZDtcbn07XG5cbi8qKlxuICogUmV0dXJuIHR5cGUgZm9yIHJlc291cmNlIHBhZ2UgbG9hZGVycy5cbiAqL1xuZXhwb3J0IHR5cGUgUmVzb3VyY2VQYWdlUmV0dXJuID1cbiAgfCB7IGRlZmF1bHQ6IENvbXBvbmVudFR5cGU8YW55PiB9XG4gIHwgQ29tcG9uZW50VHlwZTxhbnk+O1xuXG4vKipcbiAqIEZ1bmN0aW9uIHRoYXQgbG9hZHMgYSByZXNvdXJjZSBwYWdlIGNvbXBvbmVudC5cbiAqL1xuZXhwb3J0IHR5cGUgUmVzb3VyY2VQYWdlTG9hZGVyID0gKCkgPT4gUHJvbWlzZTxSZXNvdXJjZVBhZ2VSZXR1cm4+O1xuIl19
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQ29tcG9uZW50VHlwZSwgUmVhY3RFbGVtZW50LCBSZWFjdE5vZGUsIEpTWCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB0eXBlIHtcbiAgU2NoZW1hIGFzIEZpbHRlclNjaGVtYSxcbiAgSW5mZXJGaWx0ZXJzIGFzIEluZmVyRmlsdGVyUmVzdWx0LFxuICBEaWFnbm9zdGljIGFzIEZpbHRlckRpYWdub3N0aWMsXG59IGZyb20gJ0BwbHVtaWxlL2ZpbHRlci1xdWVyeSc7XG5pbXBvcnQgdHlwZSB7IE1hdGNoLCBNYXRjaEZ1bmN0aW9uLCBQYXJhbURhdGEgfSBmcm9tICdwYXRoLXRvLXJlZ2V4cCc7XG5cbmltcG9ydCB0eXBlIHsgRmxhdFJvdXRlIH0gZnJvbSAnLi9idWlsZGVyLmpzJztcbmltcG9ydCB0eXBlIHsgUmVzb3VyY2VQYWdlIH0gZnJvbSAnLi9SZXNvdXJjZVBhZ2UuanMnO1xuaW1wb3J0IHR5cGUgeyBCcm93c2VySGlzdG9yeSB9IGZyb20gJy4vaGlzdG9yeS9pbmRleC5qcyc7XG5cbi8qKlxuICogSW5wdXQgdHlwZSBmb3IgY3JlYXRpbmcgYSBGbGF0Um91dGUgaW5zdGFuY2UuXG4gKiBAdGVtcGxhdGUgVFZhcmlhYmxlcyAtIFJvdXRlIHBhcmFtZXRlciB0eXBlcyBleHRyYWN0ZWQgZnJvbSB0aGUgVVJMIHBhdGhcbiAqL1xuZXhwb3J0IHR5cGUgRmxhdFJvdXRlSW5wdXQ8VFZhcmlhYmxlcyBleHRlbmRzIFBhcmFtRGF0YT4gPSB7XG4gIC8qKiBUaGUgVVJMIHBhdGggcGF0dGVybiBmb3IgdGhpcyByb3V0ZSAqL1xuICBwYXRoOiBzdHJpbmc7XG4gIC8qKiBPcHRpb25hbCByZWRpcmVjdCBkZXN0aW5hdGlvbiBpZiB0aGlzIHJvdXRlIHNob3VsZCByZWRpcmVjdCAqL1xuICByZWRpcmVjdFRvPzogc3RyaW5nO1xuICAvKiogRnVuY3Rpb24gdG8gbWF0Y2ggVVJMIHBhdGhzIGFnYWluc3QgdGhpcyByb3V0ZSBwYXR0ZXJuICovXG4gIG1hdGNoRnVuY3Rpb246IE1hdGNoRnVuY3Rpb248VFZhcmlhYmxlcz47XG4gIC8qKiBOZXN0ZWQgcm91dGVzIHRoYXQgc2hvdWxkIGJlIHJlbmRlcmVkIHdpdGhpbiB0aGlzIHJvdXRlICovXG4gIHJvdXRlczogUm91dGU8YW55LCBhbnk+W107XG59O1xuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBtYXRjaGVkIHJvdXRlIHdpdGggZXh0cmFjdGVkIHBhcmFtZXRlcnMgYW5kIG1ldGFkYXRhLlxuICogQHRlbXBsYXRlIFRWYXJpYWJsZXMgLSBSb3V0ZSBwYXJhbWV0ZXIgdHlwZXMgZXh0cmFjdGVkIGZyb20gdGhlIFVSTCBwYXRoXG4gKi9cbmV4cG9ydCB0eXBlIFJvdXRlck1hdGNoZWRSb3V0ZTxUVmFyaWFibGVzIGV4dGVuZHMgUGFyYW1EYXRhPiA9IHtcbiAgLyoqIFRoZSBtYXRjaCByZXN1bHQgZnJvbSBwYXRoLXRvLXJlZ2V4cCAqL1xuICBtYXRjaDogTWF0Y2g8VFZhcmlhYmxlcz47XG4gIC8qKiBFeHRyYWN0ZWQgcGFyYW1ldGVycyBmcm9tIHRoZSBVUkwgcGF0aCAqL1xuICBwYXJhbXM6IFRWYXJpYWJsZXM7XG4gIC8qKiBUaGUgbWF0Y2hlZCBwYXRoIHN0cmluZyAqL1xuICBwYXRoOiBzdHJpbmc7XG4gIC8qKiBUaGUgZmxhdCByb3V0ZSB0aGF0IHdhcyBtYXRjaGVkICovXG4gIHJvdXRlOiBGbGF0Um91dGU8VFZhcmlhYmxlcz47XG59O1xuXG4vKipcbiAqIEEgUmVhY3QgY29tcG9uZW50IHRoYXQgY2FuIGJlIHVzZWQgYXMgYSByb3V0ZSBjb21wb25lbnQuXG4gKiBAdGVtcGxhdGUgVFByb3BzIC0gVGhlIHByb3BzIHR5cGUgZm9yIHRoZSBjb21wb25lbnRcbiAqL1xuZXhwb3J0IHR5cGUgUm91dGVSZWFjdENvbXBvbmVudDxUUHJvcHMgPSBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4gPSAoXG4gIHByb3BzOiBUUHJvcHMsXG4pID0+IEpTWC5FbGVtZW50IHwgbnVsbDtcblxuLyoqXG4gKiBPcHRpb25zIHBhc3NlZCB0byBhIHJvdXRlIHJlbmRlciBmdW5jdGlvbi5cbiAqIEB0ZW1wbGF0ZSBUUHJlcGFyZWQgLSBUaGUgdHlwZSBvZiBwcmVwYXJlZCBkYXRhIHJldHVybmVkIGJ5IHRoZSByb3V0ZSdzIHByZXBhcmUgZnVuY3Rpb25cbiAqIEB0ZW1wbGF0ZSBUVmFyaWFibGVzIC0gUm91dGUgcGFyYW1ldGVyIHR5cGVzIGV4dHJhY3RlZCBmcm9tIHRoZSBVUkwgcGF0aFxuICovXG5leHBvcnQgdHlwZSBSb3V0ZVJlbmRlck9wdHM8XG4gIFRQcmVwYXJlZCBleHRlbmRzIFByZXBhcmVSZXN1bHQsXG4gIFRWYXJpYWJsZXMgZXh0ZW5kcyBQYXJhbURhdGEgPSBQYXJhbURhdGEsXG4gIFRRdWVyeVNoYXBlIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbj4gPSB7XG4gIC8qKiBDaGlsZCBjb21wb25lbnRzIHRvIHJlbmRlciB3aXRoaW4gdGhpcyByb3V0ZSAqL1xuICBjaGlsZHJlbjogUmVhY3ROb2RlO1xuICAvKiogT3B0aW9uYWwgY29tcG9uZW50IHRvIHJlbmRlciAoZnJvbSBSZXNvdXJjZVBhZ2UpICovXG4gIENvbXBvbmVudD86IFJvdXRlUmVhY3RDb21wb25lbnQ7XG4gIC8qKiBEYXRhIHByZXBhcmVkIGJ5IHRoZSByb3V0ZSdzIHByZXBhcmUgZnVuY3Rpb24gKi9cbiAgcHJlcGFyZWQ6IFRQcmVwYXJlZCB8IHVuZGVmaW5lZDtcbiAgLyoqIFRoZSBwcmVwYXJlZCByb3V0ZSB0aGF0IGlzIGJlaW5nIHJlbmRlcmVkICovXG4gIHByZXBhcmVkUm91dGU6IFByZXBhcmVkTWF0Y2hSb3V0ZTtcbiAgLyoqIFRoZSBtYXRjaGVkIHJvdXRlIG9yIG51bGwgaWYgbm8gbWF0Y2ggKi9cbiAgcm91dGU6IEZsYXRSb3V0ZTxUVmFyaWFibGVzPiB8IG51bGw7XG4gIC8qKiBSYXcgcXVlcnkgb2JqZWN0IChQaGFzZSAyIGdlbmVyaWMgcGFyc2luZykgKi9cbiAgcmF3UXVlcnk6IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IHN0cmluZ1tdPjtcbiAgLyoqIFR5cGVkIHF1ZXJ5IG9iamVjdCAoUGhhc2UgMykuIEZhbGxzIGJhY2sgdG8gcmF3UXVlcnkgaWYgbm8gc2NoZW1hICovXG4gIHF1ZXJ5OiBUUXVlcnlTaGFwZTtcbn07XG5cbi8qKlxuICogRnVuY3Rpb24gdG8gcmVuZGVyIGEgcm91dGUgd2l0aCBjdXN0b20gbG9naWMuXG4gKiBAdGVtcGxhdGUgVFByZXBhcmVkIC0gVGhlIHR5cGUgb2YgcHJlcGFyZWQgZGF0YSByZXR1cm5lZCBieSB0aGUgcm91dGUncyBwcmVwYXJlIGZ1bmN0aW9uXG4gKiBAdGVtcGxhdGUgVFZhcmlhYmxlcyAtIFJvdXRlIHBhcmFtZXRlciB0eXBlcyBleHRyYWN0ZWQgZnJvbSB0aGUgVVJMIHBhdGhcbiAqL1xuZXhwb3J0IHR5cGUgUm91dGVSZW5kZXI8XG4gIFRQcmVwYXJlZCBleHRlbmRzIFByZXBhcmVSZXN1bHQsXG4gIFRWYXJpYWJsZXMgZXh0ZW5kcyBQYXJhbURhdGEgPSBQYXJhbURhdGEsXG4gIFRRdWVyeVNoYXBlIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbj4gPSAoXG4gIG9wdHM6IFJvdXRlUmVuZGVyT3B0czxUUHJlcGFyZWQsIFRWYXJpYWJsZXMsIFRRdWVyeVNoYXBlPixcbikgPT4gUmVhY3RFbGVtZW50IHwgbnVsbDtcblxuLyoqXG4gKiBBIHJvdXRlIHRoYXQgaGFzIGJlZW4gcHJlcGFyZWQgZm9yIHJlbmRlcmluZyB3aXRoIGxvYWRlZCBkYXRhIGFuZCBjb21wb25lbnRzLlxuICovXG5leHBvcnQgdHlwZSBQcmVwYXJlZE1hdGNoUm91dGUgPSB7XG4gIC8qKiBUaGUgcGF0aCB0aGF0IHdhcyBtYXRjaGVkICovXG4gIHBhdGg/OiBzdHJpbmc7XG4gIC8qKiBEYXRhIHByZXBhcmVkIGJ5IHRoZSByb3V0ZSdzIHByZXBhcmUgZnVuY3Rpb24gKi9cbiAgcHJlcGFyZWQ6IFByZXBhcmVSZXN1bHQgfCB1bmRlZmluZWQ7XG4gIC8qKiBDdXN0b20gcmVuZGVyIGZ1bmN0aW9uIGZvciB0aGlzIHJvdXRlICovXG4gIHJlbmRlcj86IFJvdXRlUmVuZGVyPGFueSwgYW55PjtcbiAgLyoqIFJlZGlyZWN0IGRlc3RpbmF0aW9uIGlmIHRoaXMgcm91dGUgc2hvdWxkIHJlZGlyZWN0ICovXG4gIHJlZGlyZWN0VG86IHN0cmluZyB8IG51bGw7XG4gIC8qKiBSZXNvdXJjZSBwYWdlIGZvciBsYXp5LWxvYWRlZCBjb21wb25lbnRzICovXG4gIHJlc291cmNlUGFnZT86IFJlc291cmNlUGFnZSB8IG51bGw7XG59O1xuXG4vKipcbiAqIFJlc3VsdCBvZiBwcmVwYXJpbmcgYSBtYXRjaGVkIHJvdXRlLCBpbmNsdWRpbmcgYWxsIG5lc3RlZCByb3V0ZXMuXG4gKiBAdGVtcGxhdGUgVFZhcmlhYmxlcyAtIFJvdXRlIHBhcmFtZXRlciB0eXBlcyBleHRyYWN0ZWQgZnJvbSB0aGUgVVJMIHBhdGhcbiAqL1xuZXhwb3J0IHR5cGUgUHJlcGFyZWRNYXRjaDxUVmFyaWFibGVzIGV4dGVuZHMgUGFyYW1EYXRhPiA9IHtcbiAgLyoqIFRoZSBtYXRjaGVkIHJvdXRlIG9yIG51bGwgaWYgbm8gbWF0Y2ggKi9cbiAgbWF0Y2g6IFJvdXRlck1hdGNoZWRSb3V0ZTxUVmFyaWFibGVzPiB8IG51bGw7XG4gIC8qKiBBcnJheSBvZiBwcmVwYXJlZCByb3V0ZXMgZm9yIHJlbmRlcmluZyAqL1xuICByb3V0ZXM6IFByZXBhcmVkTWF0Y2hSb3V0ZVtdO1xufTtcblxuLyoqXG4gKiBDb21wbGV0ZSByb3V0ZSBlbnRyeSByZXByZXNlbnRpbmcgdGhlIGN1cnJlbnQgcm91dGVyIHN0YXRlLlxuICogQHRlbXBsYXRlIFRWYXJpYWJsZXMgLSBSb3V0ZSBwYXJhbWV0ZXIgdHlwZXMgZXh0cmFjdGVkIGZyb20gdGhlIFVSTCBwYXRoXG4gKi9cbmV4cG9ydCB0eXBlIFJvdXRlRW50cnk8VFZhcmlhYmxlcyBleHRlbmRzIFBhcmFtRGF0YT4gPSB7XG4gIC8qKiBUaGUgcHJlcGFyZWQgbWF0Y2ggd2l0aCBsb2FkZWQgZGF0YSBhbmQgY29tcG9uZW50cyAqL1xuICBwcmVwYXJlZE1hdGNoOiBQcmVwYXJlZE1hdGNoPFRWYXJpYWJsZXM+O1xuICAvKiogQ3VycmVudCBicm93c2VyIGxvY2F0aW9uICovXG4gIGxvY2F0aW9uOiBMb2NhdGlvbjtcbiAgLyoqIFRoZSBtYXRjaGVkIHJvdXRlIG9yIG51bGwgaWYgbm8gbWF0Y2ggKi9cbiAgcm91dGU6IFJvdXRlck1hdGNoZWRSb3V0ZTxUVmFyaWFibGVzPiB8IG51bGw7XG4gIC8qKiBXaGV0aGVyIHRvIGZvcmNlIGEgcmUtcmVuZGVyIGV2ZW4gaWYgdGhlIHBhdGggaGFzbid0IGNoYW5nZWQgKi9cbiAgZm9yY2VSZXJlbmRlcjogYm9vbGVhbjtcbiAgLyoqIFJhdyBzZWFyY2ggc3RyaW5nIChxdWVyeSBwYXJ0KSBvZiB0aGUgbG9jYXRpb24gZm9yIGNoYW5nZSBkZXRlY3Rpb24gKi9cbiAgcmF3U2VhcmNoPzogc3RyaW5nO1xuICAvKiogUGFyc2VkIHJhdyBxdWVyeSBwYXJhbWV0ZXJzICh2YWx1ZXMgYWdncmVnYXRlZDsgZHVwbGljYXRlcyA9PiBhcnJheSkgKi9cbiAgcXVlcnk6IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IHN0cmluZ1tdPjtcbiAgLyoqIFR5cGVkIHF1ZXJ5IGRlcml2ZWQgZnJvbSBzY2hlbWEgZm9yIHRoZSBtYXRjaGVkIHJvdXRlIChQaGFzZSAzKSAqL1xuICB0eXBlZFF1ZXJ5PzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIC8qKiBQYXJzZWQgZmlsdGVycyBvYmplY3QgZGVyaXZlZCBmcm9tIGZpbHRlclNjaGVtYSAoaWYgYW55KSAqL1xuICBmaWx0ZXJzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIC8qKiBEaWFnbm9zdGljcyBmcm9tIGZpbHRlciBwYXJzaW5nIChpZiBhbnkpICovXG4gIGZpbHRlckRpYWdub3N0aWNzPzogRmlsdGVyRGlhZ25vc3RpY1tdO1xufTtcblxuLyoqIFF1ZXJ5IGRlc2NyaXB0b3IgYmFzZSBzaGFwZSAqL1xuZXhwb3J0IHR5cGUgUXVlcnlEZXNjcmlwdG9yPFQ+ID0ge1xuICAvKiogaW50ZXJuYWwgbWFya2VyIGZvciBpbmZlcmVuY2UgKi9cbiAgX190eXBlOiBUO1xuICAvKiogcGFyc2UgYW4gYXJyYXkgb2Ygc3RyaW5nIHZhbHVlcyBpbnRvIFQgfCB1bmRlZmluZWQgKi9cbiAgcGFyc2U6ICh2YWx1ZXM6IHN0cmluZ1tdKSA9PiBUIHwgdW5kZWZpbmVkO1xuICAvKiogc2VyaWFsaXplIGEgdmFsdWUgaW50byBzdHJpbmcgdmFsdWVzICovXG4gIHNlcmlhbGl6ZTogKHZhbHVlOiBUKSA9PiBzdHJpbmdbXTtcbiAgb3B0aW9uYWw/OiBib29sZWFuO1xuICBoYXNEZWZhdWx0PzogYm9vbGVhbjtcbiAgZGVmYXVsdFZhbHVlPzogVDtcbn07XG5cbi8vIFVzaW5nIGFueSBoZXJlIGludGVudGlvbmFsbHkgdG8gcHJlc2VydmUgZmxleGlibGUgc2NoZW1hIGluZmVyZW5jZSBmb3IgZGl2ZXJzZSBmaWVsZCB0eXBlcy5cbi8vIERvd25zdHJlYW0gdXRpbGl0aWVzIChwYXJzZVR5cGVkUXVlcnkpIHJlbHkgb24gYmVpbmcgYWJsZSB0byBzcGVjaWZ5IGNvbmNyZXRlIFQgcGVyIGZpZWxkLlxuLy8gUmVwbGFjaW5nIHdpdGggdW5rbm93biBicmVha3MgYXNzaWduYWJpbGl0eSBvZiBjb25jcmV0ZSBkZXNjcmlwdG9yIHNlcmlhbGl6ZXJzLlxuZXhwb3J0IHR5cGUgUXVlcnlTY2hlbWEgPSBSZWNvcmQ8c3RyaW5nLCBRdWVyeURlc2NyaXB0b3I8YW55Pj47XG5cbi8qKiBJbmZlciB0aGUgb3V0cHV0IHR5cGUgb2YgYSBzY2hlbWEgKi9cbmV4cG9ydCB0eXBlIEluZmVyUXVlcnk8UyBleHRlbmRzIFF1ZXJ5U2NoZW1hPiA9IHtcbiAgW0sgaW4ga2V5b2YgU106IFNbS10gZXh0ZW5kcyBRdWVyeURlc2NyaXB0b3I8aW5mZXIgTz5cbiAgICA/IFNbS11bJ29wdGlvbmFsJ10gZXh0ZW5kcyB0cnVlXG4gICAgICA/IFNbS11bJ2hhc0RlZmF1bHQnXSBleHRlbmRzIHRydWVcbiAgICAgICAgPyBPXG4gICAgICAgIDogTyB8IHVuZGVmaW5lZFxuICAgICAgOiBPXG4gICAgOiBuZXZlcjtcbn07XG5cbi8qKlxuICogSFRUUCBzdGF0dXMgY29kZXMgZm9yIHJlZGlyZWN0cy5cbiAqL1xuZXhwb3J0IHR5cGUgUm91dGVyUmVkaXJlY3RTdGF0dXMgPSAzMDEgfCAzMDI7XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIG1hdGNoZWQgcm91dGUgd2l0aCByZWdleCBtYXRjaCByZXN1bHQuXG4gKiBAdGVtcGxhdGUgVFZhcmlhYmxlcyAtIFJvdXRlIHBhcmFtZXRlciB0eXBlcyBleHRyYWN0ZWQgZnJvbSB0aGUgVVJMIHBhdGhcbiAqL1xuZXhwb3J0IHR5cGUgTWF0Y2hlZFJvdXRlPFRWYXJpYWJsZXMgZXh0ZW5kcyBQYXJhbURhdGE+ID0ge1xuICAvKiogVGhlIHJlZ2V4IG1hdGNoIHJlc3VsdCAqL1xuICBtYXRjaDogUmVnRXhwRXhlY0FycmF5O1xuICAvKiogVGhlIGZsYXQgcm91dGUgdGhhdCB3YXMgbWF0Y2hlZCAqL1xuICByb3V0ZTogRmxhdFJvdXRlPFRWYXJpYWJsZXM+O1xufTtcblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIGZvciBhIHJvdXRlIHJlZGlyZWN0LlxuICovXG5leHBvcnQgdHlwZSBSZWRpcmVjdCA9IHtcbiAgLyoqIE9wdGlvbmFsIHNvdXJjZSBwYXRoIHBhdHRlcm4gKi9cbiAgcGF0aD86IHN0cmluZztcbiAgLyoqIERlc3RpbmF0aW9uIHBhdGggZm9yIHRoZSByZWRpcmVjdCAqL1xuICB0bzogc3RyaW5nO1xuICAvKiogSFRUUCBzdGF0dXMgY29kZSBmb3IgdGhlIHJlZGlyZWN0ICovXG4gIHN0YXR1cz86IFJvdXRlclJlZGlyZWN0U3RhdHVzO1xufTtcblxuLyoqXG4gKiBCYXNlIHR5cGUgZm9yIGRhdGEgcHJlcGFyZWQgYnkgcm91dGUgcHJlcGFyZSBmdW5jdGlvbnMuXG4gKi9cbi8vIFByZXBhcmVkIGRhdGEgY2FuIGJlIGFueSByZWNvcmQ7IHJldGFpbiBhbnkgdG8gYXZvaWQgb3Zlci1jb25zdHJhaW5pbmcgdXNlciBjb2RlLlxuZXhwb3J0IHR5cGUgUHJlcGFyZVJlc3VsdCA9IFJlY29yZDxzdHJpbmcsIGFueT47XG5cbi8qKlxuICogUGFyYW1ldGVycyBwYXNzZWQgdG8gYSByb3V0ZSdzIHByZXBhcmUgZnVuY3Rpb24uXG4gKiBAdGVtcGxhdGUgVFZhcmlhYmxlcyAtIFJvdXRlIHBhcmFtZXRlciB0eXBlcyBleHRyYWN0ZWQgZnJvbSB0aGUgVVJMIHBhdGhcbiAqL1xuZXhwb3J0IHR5cGUgUHJlcGFyZVBhcmFtczxcbiAgVFZhcmlhYmxlcyBleHRlbmRzIFBhcmFtRGF0YSxcbiAgVFF1ZXJ5U2hhcGUgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuPiA9IHtcbiAgLyoqIFRoZSBtYXRjaGVkIHJvdXRlIHdpdGggZXh0cmFjdGVkIHBhcmFtZXRlcnMgKi9cbiAgbWF0Y2g6IFJvdXRlck1hdGNoZWRSb3V0ZTxUVmFyaWFibGVzPjtcbiAgLyoqIFRoZSBmbGF0IHJvdXRlIHRoYXQgd2FzIG1hdGNoZWQgKi9cbiAgbWF0Y2hlZFJvdXRlOiBGbGF0Um91dGU8VFZhcmlhYmxlcz47XG4gIC8qKiBSZXNvdXJjZSBwYWdlIGZvciBsYXp5LWxvYWRlZCBjb21wb25lbnRzICovXG4gIHJlc291cmNlUGFnZT86IFJlc291cmNlUGFnZSB8IG51bGw7XG4gIC8qKiBFeHRyYWN0ZWQgVVJMIHBhcmFtZXRlcnMgKi9cbiAgdmFyaWFibGVzOiBUVmFyaWFibGVzO1xuICAvKiogVHlwZWQgcXVlcnkgb2JqZWN0ICovXG4gIHF1ZXJ5OiBUUXVlcnlTaGFwZTtcbn07XG5cbi8qKlxuICogRnVuY3Rpb24gdG8gcHJlcGFyZSBkYXRhIGZvciBhIHJvdXRlIGJlZm9yZSByZW5kZXJpbmcuXG4gKiBAdGVtcGxhdGUgVFByZXBhcmVkIC0gVGhlIHR5cGUgb2YgZGF0YSB0aGlzIGZ1bmN0aW9uIHJldHVybnNcbiAqIEB0ZW1wbGF0ZSBUVmFyaWFibGVzIC0gUm91dGUgcGFyYW1ldGVyIHR5cGVzIGV4dHJhY3RlZCBmcm9tIHRoZSBVUkwgcGF0aFxuICovXG5leHBvcnQgdHlwZSBSb3V0ZVByZXBhcmU8XG4gIFRQcmVwYXJlZCBleHRlbmRzIFByZXBhcmVSZXN1bHQsXG4gIFRWYXJpYWJsZXMgZXh0ZW5kcyBQYXJhbURhdGEgPSBQYXJhbURhdGEsXG4gIFRRdWVyeVNoYXBlIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbj4gPSAocGFyYW1zOiBQcmVwYXJlUGFyYW1zPFRWYXJpYWJsZXMsIFRRdWVyeVNoYXBlPikgPT4gVFByZXBhcmVkO1xuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gZm9yIGEgc2luZ2xlIHJvdXRlIGluIHRoZSByb3V0ZXIuXG4gKiBAdGVtcGxhdGUgVFByZXBhcmVkIC0gVGhlIHR5cGUgb2YgcHJlcGFyZWQgZGF0YSByZXR1cm5lZCBieSB0aGUgcm91dGUncyBwcmVwYXJlIGZ1bmN0aW9uXG4gKiBAdGVtcGxhdGUgVFZhcmlhYmxlcyAtIFJvdXRlIHBhcmFtZXRlciB0eXBlcyBleHRyYWN0ZWQgZnJvbSB0aGUgVVJMIHBhdGhcbiAqL1xuZXhwb3J0IHR5cGUgUm91dGU8XG4gIFRQcmVwYXJlZCBleHRlbmRzIFByZXBhcmVSZXN1bHQsXG4gIFRWYXJpYWJsZXMgZXh0ZW5kcyBQYXJhbURhdGEgPSBQYXJhbURhdGEsXG4gIFRRdWVyeVNoYXBlIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbj4gPSB7XG4gIC8qKiBOZXN0ZWQgY2hpbGQgcm91dGVzIG9yIHJlZGlyZWN0cyAqL1xuICBjaGlsZHJlbj86IChSb3V0ZTxQcmVwYXJlUmVzdWx0PiB8IFJlZGlyZWN0KVtdO1xuICAvKiogUmVzb3VyY2UgcGFnZSBmb3IgbGF6eS1sb2FkZWQgY29tcG9uZW50cyAqL1xuICByZXNvdXJjZVBhZ2U/OiBSZXNvdXJjZVBhZ2UgfCBudWxsO1xuICAvKiogVVJMIHBhdGggcGF0dGVybiBmb3IgdGhpcyByb3V0ZSAqL1xuICBwYXRoPzogc3RyaW5nO1xuICAvKiogRnVuY3Rpb24gdG8gcHJlcGFyZSBkYXRhIGJlZm9yZSByZW5kZXJpbmcgKi9cbiAgcHJlcGFyZT86IFJvdXRlUHJlcGFyZTxUUHJlcGFyZWQsIFRWYXJpYWJsZXMsIFRRdWVyeVNoYXBlPjtcbiAgLyoqIEN1c3RvbSByZW5kZXIgZnVuY3Rpb24gZm9yIHRoaXMgcm91dGUgKi9cbiAgcmVuZGVyPzogUm91dGVSZW5kZXI8VFByZXBhcmVkLCBUVmFyaWFibGVzLCBUUXVlcnlTaGFwZT47XG4gIC8qKiBPcHRpb25hbCBxdWVyeSBzY2hlbWEgZm9yIHR5cGVkIHBhcnNpbmcgKFBoYXNlIDMgYXR0YWNobWVudCkgKi9cbiAgcXVlcnk/OiBRdWVyeVNjaGVtYTtcbiAgLyoqIE9wdGlvbmFsIGZpbHRlciBzY2hlbWEgZm9yIGZpbHRlci1xdWVyeSBpbnRlZ3JhdGlvbiAqL1xuICBmaWx0ZXJTY2hlbWE/OiBGaWx0ZXJTY2hlbWE7XG59O1xuXG4vKipcbiAqIFByb3BzIHBhc3NlZCB0byBSb3V0ZUNvbXBvbmVudCBpbnN0YW5jZXMuXG4gKiBAdGVtcGxhdGUgVFZhcmlhYmxlcyAtIFJvdXRlIHBhcmFtZXRlciB0eXBlcyBleHRyYWN0ZWQgZnJvbSB0aGUgVVJMIHBhdGhcbiAqL1xuZXhwb3J0IHR5cGUgUm91dGVDb21wb25lbnRQcm9wczxcbiAgVFZhcmlhYmxlcyBleHRlbmRzIFBhcmFtRGF0YSxcbiAgVFF1ZXJ5U2hhcGUgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuPiA9IHtcbiAgLyoqIENoaWxkIGNvbXBvbmVudHMgdG8gcmVuZGVyICovXG4gIGNoaWxkcmVuOiBSZWFjdEVsZW1lbnQ7XG4gIC8qKiBSb3V0ZXIgY29udGV4dCBjb250YWluaW5nIG5hdmlnYXRpb24gYW5kIHN0YXRlICovXG4gIHJvdXRlckNvbnRleHQ6IFJvdXRpbmdDb250ZXh0VHlwZTxUVmFyaWFibGVzLCBUUXVlcnlTaGFwZT47XG4gIC8qKiBUaGUgcm91dGUgY29uZmlndXJhdGlvbiAqL1xuICByb3V0ZTogUm91dGU8YW55LCBhbnk+O1xufTtcblxuLyoqXG4gKiBDYWxsYmFjayBmdW5jdGlvbiBmb3Igcm91dGUgY2hhbmdlcy5cbiAqIEB0ZW1wbGF0ZSBUVmFyaWFibGVzIC0gUm91dGUgcGFyYW1ldGVyIHR5cGVzIGV4dHJhY3RlZCBmcm9tIHRoZSBVUkwgcGF0aFxuICovXG5leHBvcnQgdHlwZSBTdWJzY3JpYmVDYWxsYmFjazxUVmFyaWFibGVzIGV4dGVuZHMgUGFyYW1EYXRhPiA9IChcbiAgbmV4dEVudHJ5OiBSb3V0ZUVudHJ5PFRWYXJpYWJsZXM+LFxuKSA9PiB2b2lkO1xuXG4vKipcbiAqIFJvdXRlciBjb250ZXh0IHR5cGUgdGhhdCBwcm92aWRlcyBuYXZpZ2F0aW9uIGFuZCBzdGF0ZSBtYW5hZ2VtZW50LlxuICogQHRlbXBsYXRlIFRWYXJpYWJsZXMgLSBSb3V0ZSBwYXJhbWV0ZXIgdHlwZXMgZXh0cmFjdGVkIGZyb20gdGhlIFVSTCBwYXRoXG4gKi9cbmV4cG9ydCB0eXBlIFJvdXRpbmdDb250ZXh0VHlwZTxcbiAgVFZhcmlhYmxlcyBleHRlbmRzIFBhcmFtRGF0YSxcbiAgVFF1ZXJ5U2hhcGUgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuPiA9IHtcbiAgLyoqIEJyb3dzZXIgaGlzdG9yeSBpbnN0YW5jZSBmb3IgbmF2aWdhdGlvbiAqL1xuICBoaXN0b3J5OiBCcm93c2VySGlzdG9yeTtcbiAgLyoqIEdldCB0aGUgY3VycmVudCByb3V0ZSBlbnRyeSAqL1xuICBnZXQ6ICgpID0+IFJvdXRlRW50cnk8VFZhcmlhYmxlcz47XG4gIC8qKiBQcmVsb2FkIGNvZGUgZm9yIGEgcm91dGUgd2l0aG91dCBzdG9yaW5nIHRoZSByZXN1bHQgKi9cbiAgcHJlbG9hZENvZGU6IChwYXRobmFtZTogc3RyaW5nKSA9PiB2b2lkO1xuICAvKiogUHJlbG9hZCBjb2RlIGFuZCBkYXRhIGZvciBhIHJvdXRlIHdpdGhvdXQgc3RvcmluZyB0aGUgcmVzdWx0ICovXG4gIHByZWxvYWQ6IChwYXRobmFtZTogc3RyaW5nKSA9PiB2b2lkO1xuICAvKiogU3Vic2NyaWJlIHRvIHJvdXRlIGNoYW5nZXMgKi9cbiAgc3Vic2NyaWJlOiAoY2FsbGJhY2s6IFN1YnNjcmliZUNhbGxiYWNrPFRWYXJpYWJsZXM+KSA9PiAoKSA9PiB2b2lkO1xuICAvKiogTmF2aWdhdGUgd2l0aCBvcHRpb25hbCBwYXRobmFtZSBhbmQgdHlwZWQvcmF3IHF1ZXJ5IG9iamVjdCAqL1xuICBuYXZpZ2F0ZTogKG9wdHM6IHtcbiAgICBwYXRobmFtZT86IHN0cmluZztcbiAgICBxdWVyeT86IFRRdWVyeVNoYXBlO1xuICAgIC8qKiBPcHRpb25hbCBmaWx0ZXJzIG9iamVjdCB0byBzZXJpYWxpemUgdXNpbmcgdGhlIGFjdGl2ZSBmaWx0ZXJTY2hlbWEgKi9cbiAgICBmaWx0ZXJzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgcmVwbGFjZT86IGJvb2xlYW47XG4gIH0pID0+IHZvaWQ7XG59O1xuXG4vKipcbiAqIFJldHVybiB0eXBlIGZvciByZXNvdXJjZSBwYWdlIGxvYWRlcnMuXG4gKi9cbmV4cG9ydCB0eXBlIFJlc291cmNlUGFnZVJldHVybiA9XG4gIHwgeyBkZWZhdWx0OiBDb21wb25lbnRUeXBlPHVua25vd24+IH1cbiAgfCBDb21wb25lbnRUeXBlPHVua25vd24+O1xuXG4vKipcbiAqIEZ1bmN0aW9uIHRoYXQgbG9hZHMgYSByZXNvdXJjZSBwYWdlIGNvbXBvbmVudC5cbiAqL1xuZXhwb3J0IHR5cGUgUmVzb3VyY2VQYWdlTG9hZGVyID0gKCkgPT4gUHJvbWlzZTxSZXNvdXJjZVBhZ2VSZXR1cm4+O1xuXG4vKiogVXRpbGl0eTogaW5mZXIgZmlsdGVycyB0eXBlIGZvciBhIGdpdmVuIGZpbHRlciBzY2hlbWEgKi9cbmV4cG9ydCB0eXBlIEluZmVyRmlsdGVyczxTIGV4dGVuZHMgRmlsdGVyU2NoZW1hIHwgdW5kZWZpbmVkPiA9XG4gIFMgZXh0ZW5kcyBGaWx0ZXJTY2hlbWEgPyBJbmZlckZpbHRlclJlc3VsdDxTPiA6IFJlY29yZDxzdHJpbmcsIG5ldmVyPjtcblxuZXhwb3J0IHR5cGUgeyBGaWx0ZXJTY2hlbWEgfTtcbiJdfQ==