@gnwebsoft/ui 4.0.0 → 4.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/dist/chunk-BXF3QEBN.js +2181 -0
  2. package/dist/chunk-DS524L7W.cjs +467 -0
  3. package/dist/chunk-FYU2OIMD.js +15 -0
  4. package/dist/chunk-GHW77WIM.cjs +72 -0
  5. package/dist/chunk-GLN5JSFF.cjs +2181 -0
  6. package/dist/chunk-GVWCGJ3F.js +140 -0
  7. package/dist/chunk-LUW7V5GI.cjs +15 -0
  8. package/dist/chunk-M526GQZS.js +2490 -0
  9. package/dist/chunk-MULSVYFT.js +72 -0
  10. package/dist/chunk-MVPLBJRK.cjs +1 -1
  11. package/dist/chunk-PUQIPRL2.js +467 -0
  12. package/dist/chunk-QLQ6OH25.cjs +2490 -0
  13. package/dist/chunk-Y3QTSDLJ.cjs +140 -0
  14. package/dist/core/index.cjs +121 -0
  15. package/dist/core/index.js +121 -0
  16. package/dist/hooks/index.cjs +3 -3
  17. package/dist/hooks/index.js +1 -1
  18. package/dist/index.cjs +85 -7
  19. package/dist/index.js +147 -69
  20. package/dist/types/index.cjs +3 -3
  21. package/dist/types/index.js +1 -1
  22. package/dist/utils/index.cjs +4 -24
  23. package/dist/utils/index.js +6 -26
  24. package/dist/wrappers/index.cjs +7 -4
  25. package/dist/wrappers/index.js +21 -18
  26. package/package.json +22 -17
  27. package/dist/AsyncSelectPayload-B9-6l33R.d.cts +0 -10
  28. package/dist/AsyncSelectPayload-B9-6l33R.d.ts +0 -10
  29. package/dist/chunk-3OPVOWQK.js +0 -140
  30. package/dist/chunk-AEOF2TUF.cjs +0 -2273
  31. package/dist/chunk-ALHC7RLK.js +0 -575
  32. package/dist/chunk-BRRLB22L.js +0 -72
  33. package/dist/chunk-CHZU4PZB.js +0 -2273
  34. package/dist/chunk-EBRUE2WR.cjs +0 -493
  35. package/dist/chunk-HEHPKM4B.cjs +0 -140
  36. package/dist/chunk-K2EJ4YKO.cjs +0 -72
  37. package/dist/chunk-U6SDYCWF.js +0 -493
  38. package/dist/chunk-XY4U6A77.cjs +0 -575
  39. package/dist/components/index.cjs +0 -25
  40. package/dist/components/index.d.cts +0 -752
  41. package/dist/components/index.d.ts +0 -752
  42. package/dist/components/index.js +0 -25
  43. package/dist/enhanced-CDTkKUlj.d.ts +0 -134
  44. package/dist/enhanced-ZQoS03Cd.d.cts +0 -134
  45. package/dist/events-BcHVCLBz.d.cts +0 -77
  46. package/dist/events-BcHVCLBz.d.ts +0 -77
  47. package/dist/hooks/index.d.cts +0 -96
  48. package/dist/hooks/index.d.ts +0 -96
  49. package/dist/index.d.cts +0 -16
  50. package/dist/index.d.ts +0 -16
  51. package/dist/types/index.d.cts +0 -820
  52. package/dist/types/index.d.ts +0 -820
  53. package/dist/utils/index.d.cts +0 -683
  54. package/dist/utils/index.d.ts +0 -683
  55. package/dist/wrappers/index.d.cts +0 -1753
  56. package/dist/wrappers/index.d.ts +0 -1753
@@ -1,140 +0,0 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }// src/hooks/useTransform/index.ts
2
- function useTransform(options) {
3
- const value = typeof _optionalChain([options, 'access', _ => _.transform, 'optionalAccess', _2 => _2.input]) === "function" ? options.transform.input(options.value) : options.value;
4
- const onChange = (eventOrValue, value2) => {
5
- if (typeof _optionalChain([options, 'access', _3 => _3.transform, 'optionalAccess', _4 => _4.output]) === "function") {
6
- options.onChange(options.transform.output(eventOrValue, value2));
7
- } else {
8
- options.onChange(eventOrValue);
9
- }
10
- };
11
- return {
12
- value,
13
- onChange
14
- };
15
- }
16
-
17
- // src/hooks/useTransform/enhanced.ts
18
- var _react = require('react');
19
- var transformFactories = {
20
- number: () => ({
21
- input: (value) => {
22
- if (value == null) return "";
23
- return String(value);
24
- },
25
- output: (eventOrValue, _value) => {
26
- let rawValue;
27
- if (typeof eventOrValue === "object" && eventOrValue !== null && "target" in eventOrValue && typeof eventOrValue.target === "object" && eventOrValue.target !== null && "value" in eventOrValue.target) {
28
- rawValue = String(eventOrValue.target.value);
29
- } else {
30
- rawValue = String(eventOrValue);
31
- }
32
- if (rawValue === "") return null;
33
- const numValue = Number(rawValue);
34
- return isNaN(numValue) ? null : numValue;
35
- }
36
- }),
37
- text: () => ({
38
- input: (value) => {
39
- return _nullishCoalesce(value, () => ( ""));
40
- },
41
- output: (eventOrValue, _value) => {
42
- if (typeof eventOrValue === "object" && eventOrValue !== null && "target" in eventOrValue && typeof eventOrValue.target === "object" && eventOrValue.target !== null && "value" in eventOrValue.target) {
43
- return eventOrValue.target.value;
44
- }
45
- return eventOrValue;
46
- }
47
- }),
48
- select: () => ({
49
- input: (value) => {
50
- return _nullishCoalesce(value, () => ( ""));
51
- },
52
- output: (eventOrValue, value) => {
53
- if (value !== void 0) {
54
- return value;
55
- }
56
- if (typeof eventOrValue === "object" && eventOrValue !== null && "target" in eventOrValue && typeof eventOrValue.target === "object" && eventOrValue.target !== null && "value" in eventOrValue.target) {
57
- return eventOrValue.target.value;
58
- }
59
- return eventOrValue;
60
- }
61
- })
62
- };
63
- function getBuiltInTransform(fieldType) {
64
- switch (fieldType) {
65
- case "number":
66
- return transformFactories.number();
67
- case "text":
68
- return transformFactories.text();
69
- case "select":
70
- case "radio":
71
- return transformFactories.select();
72
- default:
73
- return void 0;
74
- }
75
- }
76
- function useEnhancedTransform(options) {
77
- const {
78
- value: fieldValue,
79
- onChange: fieldOnChange,
80
- transform,
81
- fieldType,
82
- defaultValue,
83
- enableWarnings
84
- } = options;
85
- const builtInTransform = _react.useMemo.call(void 0,
86
- () => fieldType ? getBuiltInTransform(fieldType) : void 0,
87
- [fieldType]
88
- );
89
- if (enableWarnings && process.env.NODE_ENV === "development") {
90
- if (transform && fieldType) {
91
- console.warn(
92
- "useEnhancedTransform: Both custom transform and fieldType provided. Custom transform will take precedence."
93
- );
94
- }
95
- }
96
- const transformedValue = _react.useMemo.call(void 0, () => {
97
- const inputTransform = _optionalChain([transform, 'optionalAccess', _5 => _5.input]) || _optionalChain([builtInTransform, 'optionalAccess', _6 => _6.input]);
98
- if (typeof inputTransform === "function") {
99
- return inputTransform(fieldValue);
100
- }
101
- if (fieldValue == null && defaultValue !== void 0) {
102
- return defaultValue;
103
- }
104
- return fieldValue;
105
- }, [fieldValue, _optionalChain([transform, 'optionalAccess', _7 => _7.input]), _optionalChain([builtInTransform, 'optionalAccess', _8 => _8.input]), defaultValue]);
106
- const enhancedOnChange = _react.useCallback.call(void 0,
107
- (eventOrValue, value) => {
108
- const outputTransform = _optionalChain([transform, 'optionalAccess', _9 => _9.output]) || _optionalChain([builtInTransform, 'optionalAccess', _10 => _10.output]);
109
- if (typeof outputTransform === "function") {
110
- try {
111
- const transformedValue2 = outputTransform(eventOrValue, value);
112
- fieldOnChange(transformedValue2);
113
- } catch (error) {
114
- if (enableWarnings && process.env.NODE_ENV === "development") {
115
- console.error("useEnhancedTransform: Error in output transformation:", error);
116
- }
117
- fieldOnChange(
118
- value !== void 0 ? value : eventOrValue
119
- );
120
- }
121
- } else {
122
- fieldOnChange(
123
- value !== void 0 ? value : eventOrValue
124
- );
125
- }
126
- },
127
- [fieldOnChange, _optionalChain([transform, 'optionalAccess', _11 => _11.output]), _optionalChain([builtInTransform, 'optionalAccess', _12 => _12.output]), enableWarnings]
128
- );
129
- return {
130
- value: transformedValue,
131
- onChange: enhancedOnChange
132
- };
133
- }
134
-
135
-
136
-
137
-
138
-
139
- exports.useTransform = useTransform; exports.transformFactories = transformFactories; exports.useEnhancedTransform = useEnhancedTransform;
140
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9idWlsZHMvbGlicy9HTldlYlNvZnQuVUkvcGFja2FnZXMvdWkvZGlzdC9jaHVuay1IRUhQS000Qi5janMiLCIuLi9zcmMvaG9va3MvdXNlVHJhbnNmb3JtL2luZGV4LnRzIiwiLi4vc3JjL2hvb2tzL3VzZVRyYW5zZm9ybS9lbmhhbmNlZC50cyJdLCJuYW1lcyI6WyJ2YWx1ZSIsInRyYW5zZm9ybWVkVmFsdWUiXSwibWFwcGluZ3MiOiJBQUFBO0FDNkdPLFNBQVMsWUFBQSxDQUtkLE9BQUEsRUFDaUQ7QUFDakQsRUFBQSxNQUFNLE1BQUEsRUFDSix1QkFBTyxPQUFBLG1CQUFRLFNBQUEsNkJBQVcsUUFBQSxJQUFVLFdBQUEsRUFDaEMsT0FBQSxDQUFRLFNBQUEsQ0FBVSxLQUFBLENBQU0sT0FBQSxDQUFRLEtBQUssRUFBQSxFQUNyQyxPQUFBLENBQVEsS0FBQTtBQUVkLEVBQUEsTUFBTSxTQUFBLEVBQVcsQ0FDZixZQUFBLEVBQ0FBLE1BQUFBLEVBQUFBLEdBQ1M7QUFDVCxJQUFBLEdBQUEsQ0FBSSx1QkFBTyxPQUFBLHFCQUFRLFNBQUEsNkJBQVcsU0FBQSxJQUFXLFVBQUEsRUFBWTtBQUNuRCxNQUFBLE9BQUEsQ0FBUSxRQUFBLENBQVMsT0FBQSxDQUFRLFNBQUEsQ0FBVSxNQUFBLENBQU8sWUFBQSxFQUFjQSxNQUFLLENBQUMsQ0FBQTtBQUFBLElBQ2hFLEVBQUEsS0FBTztBQUVMLE1BQUEsT0FBQSxDQUFRLFFBQUEsQ0FBUyxZQUE4QyxDQUFBO0FBQUEsSUFDakU7QUFBQSxFQUNGLENBQUE7QUFFQSxFQUFBLE9BQU87QUFBQSxJQUNMLEtBQUE7QUFBQSxJQUNBO0FBQUEsRUFDRixDQUFBO0FBQ0Y7QUQxSEE7QUFDQTtBRWhCQSw4QkFBcUM7QUFtRjlCLElBQU0sbUJBQUEsRUFBcUI7QUFBQSxFQUNoQyxNQUFBLEVBQVEsQ0FBQSxFQUFBLEdBQUEsQ0FBZ0Y7QUFBQSxJQUN0RixLQUFBLEVBQU8sQ0FBQyxLQUFBLEVBQUEsR0FBMEM7QUFDaEQsTUFB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QUEsTUFDRjtBQUFBLElBQ0YsQ0FBQTtBQUFBLElBQ0EsQ0FBQyxhQUFBLGtCQUFlLFNBQUEsK0JBQVcsUUFBQSxrQkFBUSxnQkFBQSwrQkFBa0IsUUFBQSxFQUFRLGNBQWM7QUFBQSxFQUM3RSxDQUFBO0FBRUEsRUFBQSxPQUFPO0FBQUEsSUFDTCxLQUFBLEVBQU8sZ0JBQUE7QUFBQSxJQUNQLFFBQUEsRUFBVTtBQUFBLEVBQ1osQ0FBQTtBQUNGO0FGM01BO0FBQ0E7QUFDRTtBQUNBO0FBQ0E7QUFDRiwwSUFBQyIsImZpbGUiOiIvYnVpbGRzL2xpYnMvR05XZWJTb2Z0LlVJL3BhY2thZ2VzL3VpL2Rpc3QvY2h1bmstSEVIUEtNNEIuY2pzIiwic291cmNlc0NvbnRlbnQiOltudWxsLCJpbXBvcnQgdHlwZSB7XG4gIEZpZWxkUGF0aCxcbiAgRmllbGRWYWx1ZXMsXG4gIFBhdGhWYWx1ZSxcbiAgVXNlQ29udHJvbGxlclJldHVybixcbn0gZnJvbSBcInJlYWN0LWhvb2stZm9ybVwiO1xuaW1wb3J0IHR5cGUgeyBFdmVudE9yVmFsdWUgfSBmcm9tIFwiLi4vLi4vdHlwZXMvZXZlbnRzXCI7XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgdGhlIHVzZVRyYW5zZm9ybSBob29rLlxuICpcbiAqIEB0ZW1wbGF0ZSBURmllbGRWYWx1ZXMgLSBUaGUgZm9ybSB2YWx1ZXMgdHlwZVxuICogQHRlbXBsYXRlIFROYW1lIC0gVGhlIGZpZWxkIG5hbWUgdHlwZVxuICogQHRlbXBsYXRlIFRWYWx1ZSAtIFRoZSB0cmFuc2Zvcm1lZCB2YWx1ZSB0eXBlXG4gKlxuICogQHB1YmxpY1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFVzZVRyYW5zZm9ybU9wdGlvbnM8XG4gIFRGaWVsZFZhbHVlcyBleHRlbmRzIEZpZWxkVmFsdWVzID0gRmllbGRWYWx1ZXMsXG4gIFROYW1lIGV4dGVuZHMgRmllbGRQYXRoPFRGaWVsZFZhbHVlcz4gPSBGaWVsZFBhdGg8VEZpZWxkVmFsdWVzPixcbiAgVFZhbHVlID0gdW5rbm93bixcbj4ge1xuICAvKiogVGhlIGN1cnJlbnQgZmllbGQgdmFsdWUgZnJvbSByZWFjdC1ob29rLWZvcm0gKi9cbiAgdmFsdWU6IFVzZUNvbnRyb2xsZXJSZXR1cm48VEZpZWxkVmFsdWVzLCBUTmFtZT5bXCJmaWVsZFwiXVtcInZhbHVlXCJdO1xuICAvKiogVGhlIG9uQ2hhbmdlIGhhbmRsZXIgZnJvbSByZWFjdC1ob29rLWZvcm0gKi9cbiAgb25DaGFuZ2U6IFVzZUNvbnRyb2xsZXJSZXR1cm48VEZpZWxkVmFsdWVzLCBUTmFtZT5bXCJmaWVsZFwiXVtcIm9uQ2hhbmdlXCJdO1xuICAvKiogT3B0aW9uYWwgdHJhbnNmb3JtYXRpb24gZnVuY3Rpb25zICovXG4gIHRyYW5zZm9ybT86IHtcbiAgICAvKipcbiAgICAgKiBUcmFuc2Zvcm0gdGhlIGZpZWxkIHZhbHVlIGZvciBkaXNwbGF5IGluIHRoZSBpbnB1dFxuICAgICAqIEBwYXJhbSB2YWx1ZSAtIFRoZSBjdXJyZW50IGZpZWxkIHZhbHVlXG4gICAgICogQHJldHVybnMgVGhlIHRyYW5zZm9ybWVkIHZhbHVlIHRvIGRpc3BsYXlcbiAgICAgKi9cbiAgICBpbnB1dD86ICh2YWx1ZTogUGF0aFZhbHVlPFRGaWVsZFZhbHVlcywgVE5hbWU+KSA9PiBUVmFsdWU7XG4gICAgLyoqXG4gICAgICogVHJhbnNmb3JtIHRoZSBpbnB1dCBldmVudCBiYWNrIHRvIHRoZSBmaWVsZCB2YWx1ZVxuICAgICAqIEBwYXJhbSBldmVudCAtIFRoZSBpbnB1dCBldmVudCBwYXJhbWV0ZXJzXG4gICAgICogQHJldHVybnMgVGhlIHRyYW5zZm9ybWVkIHZhbHVlIHRvIHN0b3JlIGluIHRoZSBmb3JtXG4gICAgICovXG4gICAgb3V0cHV0PzogKFxuICAgICAgZXZlbnRPclZhbHVlOiBFdmVudE9yVmFsdWU8UGF0aFZhbHVlPFRGaWVsZFZhbHVlcywgVE5hbWU+PixcbiAgICAgIHZhbHVlPzogUGF0aFZhbHVlPFRGaWVsZFZhbHVlcywgVE5hbWU+XG4gICAgKSA9PiBQYXRoVmFsdWU8VEZpZWxkVmFsdWVzLCBUTmFtZT47XG4gIH07XG59XG5cbi8qKlxuICogUmV0dXJuIHR5cGUgZm9yIHRoZSB1c2VUcmFuc2Zvcm0gaG9vay5cbiAqXG4gKiBAdGVtcGxhdGUgVEZpZWxkVmFsdWVzIC0gVGhlIGZvcm0gdmFsdWVzIHR5cGVcbiAqIEB0ZW1wbGF0ZSBUTmFtZSAtIFRoZSBmaWVsZCBuYW1lIHR5cGVcbiAqIEB0ZW1wbGF0ZSBUVmFsdWUgLSBUaGUgdHJhbnNmb3JtZWQgdmFsdWUgdHlwZVxuICpcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBVc2VUcmFuc2Zvcm1SZXR1cm48XG4gIFRGaWVsZFZhbHVlcyBleHRlbmRzIEZpZWxkVmFsdWVzID0gRmllbGRWYWx1ZXMsXG4gIFROYW1lIGV4dGVuZHMgRmllbGRQYXRoPFRGaWVsZFZhbHVlcz4gPSBGaWVsZFBhdGg8VEZpZWxkVmFsdWVzPixcbiAgVFZhbHVlID0gdW5rbm93bixcbj4ge1xuICAvKiogVGhlIHRyYW5zZm9ybWVkIHZhbHVlIHRvIGRpc3BsYXkgaW4gdGhlIGlucHV0ICovXG4gIHZhbHVlOiBUVmFsdWU7XG4gIC8qKiBUaGUgZW5oYW5jZWQgb25DaGFuZ2UgaGFuZGxlciB3aXRoIHRyYW5zZm9ybWF0aW9uIGFwcGxpZWQgKi9cbiAgb25DaGFuZ2U6IFVzZUNvbnRyb2xsZXJSZXR1cm48VEZpZWxkVmFsdWVzLCBUTmFtZT5bXCJmaWVsZFwiXVtcIm9uQ2hhbmdlXCJdO1xufVxuXG4vKipcbiAqIEEgaG9vayBmb3IgdHJhbnNmb3JtaW5nIGZvcm0gZmllbGQgdmFsdWVzIGJldHdlZW4gZGlzcGxheSBhbmQgc3RvcmFnZSBmb3JtYXRzLlxuICpcbiAqIFRoaXMgaG9vayBwcm92aWRlcyBhIHdheSB0byB0cmFuc2Zvcm0gdmFsdWVzIGFzIHRoZXkgZmxvdyBiZXR3ZWVuIHRoZSBmb3JtIGZpZWxkXG4gKiBhbmQgdGhlIGRpc3BsYXkgY29tcG9uZW50LiBJdCdzIHBhcnRpY3VsYXJseSB1c2VmdWwgZm9yIGZvcm1hdHRpbmcgZGF0YSBmb3IgZGlzcGxheVxuICogKGxpa2UgZGF0ZXMsIG51bWJlcnMsIG9yIGNvbXBsZXggb2JqZWN0cykgd2hpbGUgbWFpbnRhaW5pbmcgYSBkaWZmZXJlbnQgaW50ZXJuYWxcbiAqIHJlcHJlc2VudGF0aW9uIGluIHRoZSBmb3JtIHN0YXRlLlxuICpcbiAqIEBleGFtcGxlXG4gKiBUcmFuc2Zvcm0gYSBkYXRlIGZvciBkaXNwbGF5OlxuICogYGBgdHN4XG4gKiBjb25zdCB7IHZhbHVlLCBvbkNoYW5nZSB9ID0gdXNlVHJhbnNmb3JtKHtcbiAqICAgdmFsdWU6IGZpZWxkLnZhbHVlLFxuICogICBvbkNoYW5nZTogZmllbGQub25DaGFuZ2UsXG4gKiAgIHRyYW5zZm9ybToge1xuICogICAgIGlucHV0OiAoZGF0ZSkgPT4gZGF0ZSA/IGZvcm1hdChkYXRlLCAneXl5eS1NTS1kZCcpIDogJycsXG4gKiAgICAgb3V0cHV0OiAoZXZlbnQpID0+IG5ldyBEYXRlKGV2ZW50LnRhcmdldC52YWx1ZSlcbiAqICAgfVxuICogfSk7XG4gKiBgYGBcbiAqXG4gKiBAZXhhbXBsZVxuICogVHJhbnNmb3JtIG51bWJlcnMgd2l0aCBmb3JtYXR0aW5nOlxuICogYGBgdHN4XG4gKiBjb25zdCB7IHZhbHVlLCBvbkNoYW5nZSB9ID0gdXNlVHJhbnNmb3JtKHtcbiAqICAgdmFsdWU6IGZpZWxkLnZhbHVlLFxuICogICBvbkNoYW5nZTogZmllbGQub25DaGFuZ2UsXG4gKiAgIHRyYW5zZm9ybToge1xuICogICAgIGlucHV0OiAobnVtKSA9PiBudW0gPyBudW0udG9Mb2NhbGVTdHJpbmcoKSA6ICcnLFxuICogICAgIG91dHB1dDogKGV2ZW50KSA9PiBwYXJzZUZsb2F0KGV2ZW50LnRhcmdldC52YWx1ZS5yZXBsYWNlKC8sL2csICcnKSlcbiAqICAgfVxuICogfSk7XG4gKiBgYGBcbiAqXG4gKiBAdGVtcGxhdGUgVEZpZWxkVmFsdWVzIC0gVGhlIGZvcm0gdmFsdWVzIHR5cGVcbiAqIEB0ZW1wbGF0ZSBUTmFtZSAtIFRoZSBmaWVsZCBuYW1lIHR5cGVcbiAqIEB0ZW1wbGF0ZSBUVmFsdWUgLSBUaGUgdHJhbnNmb3JtZWQgdmFsdWUgdHlwZVxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gQ29uZmlndXJhdGlvbiBvcHRpb25zIGluY2x1ZGluZyB2YWx1ZSwgb25DaGFuZ2UsIGFuZCB0cmFuc2Zvcm0gZnVuY3Rpb25zXG4gKiBAcmV0dXJucyBPYmplY3Qgd2l0aCB0cmFuc2Zvcm1lZCB2YWx1ZSBhbmQgZW5oYW5jZWQgb25DaGFuZ2UgaGFuZGxlclxuICpcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVRyYW5zZm9ybTxcbiAgVEZpZWxkVmFsdWVzIGV4dGVuZHMgRmllbGRWYWx1ZXMgPSBGaWVsZFZhbHVlcyxcbiAgVE5hbWUgZXh0ZW5kcyBGaWVsZFBhdGg8VEZpZWxkVmFsdWVzPiA9IEZpZWxkUGF0aDxURmllbGRWYWx1ZXM+LFxuICBUVmFsdWUgPSB1bmtub3duLFxuPihcbiAgb3B0aW9uczogVXNlVHJhbnNmb3JtT3B0aW9uczxURmllbGRWYWx1ZXMsIFROYW1lLCBUVmFsdWU+XG4pOiBVc2VUcmFuc2Zvcm1SZXR1cm48VEZpZWxkVmFsdWVzLCBUTmFtZSwgVFZhbHVlPiB7XG4gIGNvbnN0IHZhbHVlID1cbiAgICB0eXBlb2Ygb3B0aW9ucy50cmFuc2Zvcm0/LmlucHV0ID09PSBcImZ1bmN0aW9uXCJcbiAgICAgID8gb3B0aW9ucy50cmFuc2Zvcm0uaW5wdXQob3B0aW9ucy52YWx1ZSlcbiAgICAgIDogb3B0aW9ucy52YWx1ZTtcblxuICBjb25zdCBvbkNoYW5nZSA9IChcbiAgICBldmVudE9yVmFsdWU6IEV2ZW50T3JWYWx1ZTxQYXRoVmFsdWU8VEZpZWxkVmFsdWVzLCBUTmFtZT4+LFxuICAgIHZhbHVlPzogUGF0aFZhbHVlPFRGaWVsZFZhbHVlcywgVE5hbWU+XG4gICk6IHZvaWQgPT4ge1xuICAgIGlmICh0eXBlb2Ygb3B0aW9ucy50cmFuc2Zvcm0/Lm91dHB1dCA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICBvcHRpb25zLm9uQ2hhbmdlKG9wdGlvbnMudHJhbnNmb3JtLm91dHB1dChldmVudE9yVmFsdWUsIHZhbHVlKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFBhc3MgdGhyb3VnaCB0aGUgZXZlbnQgb3IgdmFsdWUgZGlyZWN0bHlcbiAgICAgIG9wdGlvbnMub25DaGFuZ2UoZXZlbnRPclZhbHVlIGFzIFBhdGhWYWx1ZTxURmllbGRWYWx1ZXMsIFROYW1lPik7XG4gICAgfVxuICB9O1xuXG4gIHJldHVybiB7XG4gICAgdmFsdWUsXG4gICAgb25DaGFuZ2UsXG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IHVzZVRyYW5zZm9ybTtcbiIsImltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VNZW1vIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgdHlwZSB7IENoYW5nZUV2ZW50IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgdHlwZSB7XG4gIEZpZWxkUGF0aCxcbiAgRmllbGRWYWx1ZXMsXG4gIFBhdGhWYWx1ZSxcbiAgVXNlQ29udHJvbGxlclJldHVybixcbn0gZnJvbSBcInJlYWN0LWhvb2stZm9ybVwiO1xuaW1wb3J0IHR5cGUgeyBFdmVudE9yVmFsdWUsIElucHV0RWxlbWVudCB9IGZyb20gXCIuLi8uLi90eXBlcy9ldmVudHNcIjtcblxuLyoqXG4gKiBGaWVsZCB0eXBlcyBmb3IgYnVpbHQtaW4gdHJhbnNmb3JtYXRpb24gcGF0dGVybnNcbiAqL1xuZXhwb3J0IHR5cGUgRmllbGRUeXBlID0gJ3RleHQnIHwgJ251bWJlcicgfCAnZGF0ZScgfCAndGltZScgfCAnc2VsZWN0JyB8ICdyYWRpbyc7XG5cbi8qKlxuICogRW5oYW5jZWQgb3B0aW9ucyBmb3IgdGhlIHVzZVRyYW5zZm9ybSBob29rIHdpdGggcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uc1xuICogYW5kIGJ1aWx0LWluIGZpZWxkIHR5cGUgaGFuZGxpbmcuXG4gKlxuICogQHRlbXBsYXRlIFRGaWVsZFZhbHVlcyAtIFRoZSBmb3JtIHZhbHVlcyB0eXBlXG4gKiBAdGVtcGxhdGUgVE5hbWUgLSBUaGUgZmllbGQgbmFtZSB0eXBlXG4gKiBAdGVtcGxhdGUgVFZhbHVlIC0gVGhlIHRyYW5zZm9ybWVkIHZhbHVlIHR5cGVcbiAqXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRW5oYW5jZWRVc2VUcmFuc2Zvcm1PcHRpb25zPFxuICBURmllbGRWYWx1ZXMgZXh0ZW5kcyBGaWVsZFZhbHVlcyA9IEZpZWxkVmFsdWVzLFxuICBUTmFtZSBleHRlbmRzIEZpZWxkUGF0aDxURmllbGRWYWx1ZXM+ID0gRmllbGRQYXRoPFRGaWVsZFZhbHVlcz4sXG4gIFRWYWx1ZSA9IFBhdGhWYWx1ZTxURmllbGRWYWx1ZXMsIFROYW1lPixcbj4ge1xuICAvKiogVGhlIGN1cnJlbnQgZmllbGQgdmFsdWUgZnJvbSByZWFjdC1ob29rLWZvcm0gKi9cbiAgdmFsdWU6IFVzZUNvbnRyb2xsZXJSZXR1cm48VEZpZWxkVmFsdWVzLCBUTmFtZT5bXCJmaWVsZFwiXVtcInZhbHVlXCJdO1xuICAvKiogVGhlIG9uQ2hhbmdlIGhhbmRsZXIgZnJvbSByZWFjdC1ob29rLWZvcm0gKi9cbiAgb25DaGFuZ2U6IFVzZUNvbnRyb2xsZXJSZXR1cm48VEZpZWxkVmFsdWVzLCBUTmFtZT5bXCJmaWVsZFwiXVtcIm9uQ2hhbmdlXCJdO1xuICAvKiogT3B0aW9uYWwgdHJhbnNmb3JtYXRpb24gZnVuY3Rpb25zICovXG4gIHRyYW5zZm9ybT86IHtcbiAgICAvKipcbiAgICAgKiBUcmFuc2Zvcm0gdGhlIGZpZWxkIHZhbHVlIGZvciBkaXNwbGF5IGluIHRoZSBpbnB1dFxuICAgICAqIEBwYXJhbSB2YWx1ZSAtIFRoZSBjdXJyZW50IGZpZWxkIHZhbHVlXG4gICAgICogQHJldHVybnMgVGhlIHRyYW5zZm9ybWVkIHZhbHVlIHRvIGRpc3BsYXlcbiAgICAgKi9cbiAgICBpbnB1dD86ICh2YWx1ZTogUGF0aFZhbHVlPFRGaWVsZFZhbHVlcywgVE5hbWU+KSA9PiBUVmFsdWU7XG4gICAgLyoqXG4gICAgICogVHJhbnNmb3JtIHRoZSBpbnB1dCBldmVudCBiYWNrIHRvIHRoZSBmaWVsZCB2YWx1ZVxuICAgICAqIEBwYXJhbSBldmVudCAtIFRoZSBpbnB1dCBldmVudCBvciB2YWx1ZVxuICAgICAqIEByZXR1cm5zIFRoZSB0cmFuc2Zvcm1lZCB2YWx1ZSB0byBzdG9yZSBpbiB0aGUgZm9ybVxuICAgICAqL1xuICAgIG91dHB1dD86IChcbiAgICAgIGV2ZW50T3JWYWx1ZTogRXZlbnRPclZhbHVlPFBhdGhWYWx1ZTxURmllbGRWYWx1ZXMsIFROYW1lPj4sXG4gICAgICB2YWx1ZT86IFBhdGhWYWx1ZTxURmllbGRWYWx1ZXMsIFROYW1lPlxuICAgICkgPT4gUGF0aFZhbHVlPFRGaWVsZFZhbHVlcywgVE5hbWU+O1xuICB9O1xuICAvKiogQnVpbHQtaW4gZmllbGQgdHlwZSBmb3IgYXV0b21hdGljIHRyYW5zZm9ybWF0aW9uICovXG4gIGZpZWxkVHlwZT86IEZpZWxkVHlwZTtcbiAgLyoqIERlZmF1bHQgdmFsdWUgdG8gdXNlIHdoZW4gZmllbGQgdmFsdWUgaXMgbnVsbC91bmRlZmluZWQgKi9cbiAgZGVmYXVsdFZhbHVlPzogVFZhbHVlO1xuICAvKiogRW5hYmxlIGRldmVsb3BtZW50IHdhcm5pbmdzIGZvciBkZWJ1Z2dpbmcgKi9cbiAgZW5hYmxlV2FybmluZ3M/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIEVuaGFuY2VkIHJldHVybiB0eXBlIGZvciB0aGUgdXNlVHJhbnNmb3JtIGhvb2sgd2l0aCBzdGFibGUgcmVmZXJlbmNlc1xuICpcbiAqIEB0ZW1wbGF0ZSBURmllbGRWYWx1ZXMgLSBUaGUgZm9ybSB2YWx1ZXMgdHlwZVxuICogQHRlbXBsYXRlIFROYW1lIC0gVGhlIGZpZWxkIG5hbWUgdHlwZSAgXG4gKiBAdGVtcGxhdGUgVFZhbHVlIC0gVGhlIHRyYW5zZm9ybWVkIHZhbHVlIHR5cGVcbiAqXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRW5oYW5jZWRVc2VUcmFuc2Zvcm1SZXR1cm48XG4gIFRGaWVsZFZhbHVlcyBleHRlbmRzIEZpZWxkVmFsdWVzID0gRmllbGRWYWx1ZXMsXG4gIFROYW1lIGV4dGVuZHMgRmllbGRQYXRoPFRGaWVsZFZhbHVlcz4gPSBGaWVsZFBhdGg8VEZpZWxkVmFsdWVzPixcbiAgVFZhbHVlID0gUGF0aFZhbHVlPFRGaWVsZFZhbHVlcywgVE5hbWU+LFxuPiB7XG4gIC8qKiBUaGUgdHJhbnNmb3JtZWQgdmFsdWUgdG8gZGlzcGxheSBpbiB0aGUgaW5wdXQgKG1lbW9pemVkKSAqL1xuICB2YWx1ZTogVFZhbHVlO1xuICAvKiogVGhlIGVuaGFuY2VkIG9uQ2hhbmdlIGhhbmRsZXIgd2l0aCB0cmFuc2Zvcm1hdGlvbiBhcHBsaWVkIChtZW1vaXplZCkgKi9cbiAgb25DaGFuZ2U6IFVzZUNvbnRyb2xsZXJSZXR1cm48VEZpZWxkVmFsdWVzLCBUTmFtZT5bXCJmaWVsZFwiXVtcIm9uQ2hhbmdlXCJdO1xufVxuXG4vKipcbiAqIFRyYW5zZm9ybSBmYWN0b3JpZXMgZm9yIGNvbW1vbiBmaWVsZCB0eXBlc1xuICovXG5leHBvcnQgY29uc3QgdHJhbnNmb3JtRmFjdG9yaWVzID0ge1xuICBudW1iZXI6IDxURmllbGRWYWx1ZXMgZXh0ZW5kcyBGaWVsZFZhbHVlcywgVE5hbWUgZXh0ZW5kcyBGaWVsZFBhdGg8VEZpZWxkVmFsdWVzPj4oKSA9PiAoe1xuICAgIGlucHV0OiAodmFsdWU6IFBhdGhWYWx1ZTxURmllbGRWYWx1ZXMsIFROYW1lPikgPT4ge1xuICAgICAgaWYgKHZhbHVlID09IG51bGwpIHJldHVybiBcIlwiIGFzIHN0cmluZztcblxuICAgICAgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG4gICAgfSxcbiAgICBvdXRwdXQ6IChcbiAgICAgIGV2ZW50T3JWYWx1ZTogRXZlbnRPclZhbHVlPFBhdGhWYWx1ZTxURmllbGRWYWx1ZXMsIFROYW1lPj4sXG4gICAgICBfdmFsdWU/OiBQYXRoVmFsdWU8VEZpZWxkVmFsdWVzLCBUTmFtZT5cbiAgICApID0+IHtcbiAgICAgIGxldCByYXdWYWx1ZTogc3RyaW5nO1xuICAgICAgXG4gICAgICAvLyBFeHRyYWN0IHN0cmluZyB2YWx1ZSBmcm9tIGV2ZW50IG9yIGRpcmVjdCB2YWx1ZVxuICAgICAgaWYgKFxuICAgICAgICB0eXBlb2YgZXZlbnRPclZhbHVlID09PSAnb2JqZWN0JyAmJlxuICAgICAgICBldmVudE9yVmFsdWUgIT09IG51bGwgJiZcbiAgICAgICAgJ3RhcmdldCcgaW4gZXZlbnRPclZhbHVlICYmXG4gICAgICAgIHR5cGVvZiBldmVudE9yVmFsdWUudGFyZ2V0ID09PSAnb2JqZWN0JyAmJlxuICAgICAgICBldmVudE9yVmFsdWUudGFyZ2V0ICE9PSBudWxsICYmXG4gICAgICAgICd2YWx1ZScgaW4gZXZlbnRPclZhbHVlLnRhcmdldFxuICAgICAgKSB7XG4gICAgICAgIHJhd1ZhbHVlID0gU3RyaW5nKChldmVudE9yVmFsdWUudGFyZ2V0IGFzIHVua25vd24gYXMgeyB2YWx1ZTogdW5rbm93biB9KS52YWx1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByYXdWYWx1ZSA9IFN0cmluZyhldmVudE9yVmFsdWUpO1xuICAgICAgfVxuXG4gICAgICBpZiAocmF3VmFsdWUgPT09IFwiXCIpIHJldHVybiBudWxsIGFzIFBhdGhWYWx1ZTxURmllbGRWYWx1ZXMsIFROYW1lPjtcbiAgICAgIGNvbnN0IG51bVZhbHVlID0gTnVtYmVyKHJhd1ZhbHVlKTtcblxuICAgICAgcmV0dXJuIChpc05hTihudW1WYWx1ZSkgPyBudWxsIDogbnVtVmFsdWUpIGFzIFBhdGhWYWx1ZTxURmllbGRWYWx1ZXMsIFROYW1lPjtcbiAgICB9LFxuICB9KSxcblxuICB0ZXh0OiA8VEZpZWxkVmFsdWVzIGV4dGVuZHMgRmllbGRWYWx1ZXMsIFROYW1lIGV4dGVuZHMgRmllbGRQYXRoPFRGaWVsZFZhbHVlcz4+KCkgPT4gKHtcbiAgICBpbnB1dDogKHZhbHVlOiBQYXRoVmFsdWU8VEZpZWxkVmFsdWVzLCBUTmFtZT4pID0+IHtcbiAgICAgIHJldHVybiAodmFsdWUgPz8gXCJcIikgYXMgc3RyaW5nO1xuICAgIH0sXG4gICAgb3V0cHV0OiAoXG4gICAgICBldmVudE9yVmFsdWU6IEV2ZW50T3JWYWx1ZTxQYXRoVmFsdWU8VEZpZWxkVmFsdWVzLCBUTmFtZT4+LFxuICAgICAgX3ZhbHVlPzogUGF0aFZhbHVlPFRGaWVsZFZhbHVlcywgVE5hbWU+XG4gICAgKSA9PiB7XG4gICAgICAvLyBFeHRyYWN0IHN0cmluZyB2YWx1ZSBmcm9tIGV2ZW50IG9yIGRpcmVjdCB2YWx1ZVxuICAgICAgaWYgKFxuICAgICAgICB0eXBlb2YgZXZlbnRPclZhbHVlID09PSAnb2JqZWN0JyAmJlxuICAgICAgICBldmVudE9yVmFsdWUgIT09IG51bGwgJiZcbiAgICAgICAgJ3RhcmdldCcgaW4gZXZlbnRPclZhbHVlICYmXG4gICAgICAgIHR5cGVvZiBldmVudE9yVmFsdWUudGFyZ2V0ID09PSAnb2JqZWN0JyAmJlxuICAgICAgICBldmVudE9yVmFsdWUudGFyZ2V0ICE9PSBudWxsICYmXG4gICAgICAgICd2YWx1ZScgaW4gZXZlbnRPclZhbHVlLnRhcmdldFxuICAgICAgKSB7XG4gICAgICAgIHJldHVybiAoZXZlbnRPclZhbHVlLnRhcmdldCBhcyB1bmtub3duIGFzIHsgdmFsdWU6IFBhdGhWYWx1ZTxURmllbGRWYWx1ZXMsIFROYW1lPiB9KS52YWx1ZTtcbiAgICAgIH1cbiAgICAgIFxuICAgICAgcmV0dXJuIGV2ZW50T3JWYWx1ZSBhcyBQYXRoVmFsdWU8VEZpZWxkVmFsdWVzLCBUTmFtZT47XG4gICAgfSxcbiAgfSksXG5cbiAgc2VsZWN0OiA8VEZpZWxkVmFsdWVzIGV4dGVuZHMgRmllbGRWYWx1ZXMsIFROYW1lIGV4dGVuZHMgRmllbGRQYXRoPFRGaWVsZFZhbHVlcz4+KCkgPT4gKHtcbiAgICBpbnB1dDogKHZhbHVlOiBQYXRoVmFsdWU8VEZpZWxkVmFsdWVzLCBUTmFtZT4pID0+IHtcbiAgICAgIHJldHVybiB2YWx1ZSA/PyAoXCJcIiBhcyBzdHJpbmcpO1xuICAgIH0sXG4gICAgb3V0cHV0OiAoXG4gICAgICBldmVudE9yVmFsdWU6IEV2ZW50T3JWYWx1ZTxQYXRoVmFsdWU8VEZpZWxkVmFsdWVzLCBUTmFtZT4+LFxuICAgICAgdmFsdWU/OiBQYXRoVmFsdWU8VEZpZWxkVmFsdWVzLCBUTmFtZT5cbiAgICApID0+IHtcbiAgICAgIC8vIE1VSSBwYXR0ZXJuOiAoZXZlbnQsIHZhbHVlKSB3aGVyZSB2YWx1ZSBpcyB0aGUgYWN0dWFsIHNlbGVjdGVkIHZhbHVlXG4gICAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gdmFsdWUgYXMgUGF0aFZhbHVlPFRGaWVsZFZhbHVlcywgVE5hbWU+O1xuICAgICAgfVxuICAgICAgXG4gICAgICAvLyBTdGFuZGFyZCBldmVudCBwYXR0ZXJuOiBleHRyYWN0IGZyb20gZXZlbnQudGFyZ2V0LnZhbHVlXG4gICAgICBpZiAoXG4gICAgICAgIHR5cGVvZiBldmVudE9yVmFsdWUgPT09ICdvYmplY3QnICYmXG4gICAgICAgIGV2ZW50T3JWYWx1ZSAhPT0gbnVsbCAmJlxuICAgICAgICAndGFyZ2V0JyBpbiBldmVudE9yVmFsdWUgJiZcbiAgICAgICAgdHlwZW9mIGV2ZW50T3JWYWx1ZS50YXJnZXQgPT09ICdvYmplY3QnICYmXG4gICAgICAgIGV2ZW50T3JWYWx1ZS50YXJnZXQgIT09IG51bGwgJiZcbiAgICAgICAgJ3ZhbHVlJyBpbiBldmVudE9yVmFsdWUudGFyZ2V0XG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuIChldmVudE9yVmFsdWUudGFyZ2V0IGFzIHVua25vd24gYXMgeyB2YWx1ZTogUGF0aFZhbHVlPFRGaWVsZFZhbHVlcywgVE5hbWU+IH0pLnZhbHVlO1xuICAgICAgfVxuICAgICAgXG4gICAgICAvLyBEaXJlY3QgdmFsdWVcbiAgICAgIHJldHVybiBldmVudE9yVmFsdWUgYXMgUGF0aFZhbHVlPFRGaWVsZFZhbHVlcywgVE5hbWU+O1xuICAgIH0sXG4gIH0pLFxufSBhcyBjb25zdDs7XG5cbi8qKlxuICogR2V0IGJ1aWx0LWluIHRyYW5zZm9ybWF0aW9uIGZvciBhIGZpZWxkIHR5cGVcbiAqL1xuZnVuY3Rpb24gZ2V0QnVpbHRJblRyYW5zZm9ybTxcbiAgVEZpZWxkVmFsdWVzIGV4dGVuZHMgRmllbGRWYWx1ZXMsXG4gIFROYW1lIGV4dGVuZHMgRmllbGRQYXRoPFRGaWVsZFZhbHVlcz4sXG4+KGZpZWxkVHlwZT86IEZpZWxkVHlwZSkge1xuICBzd2l0Y2ggKGZpZWxkVHlwZSkge1xuICAgIGNhc2UgJ251bWJlcic6XG4gICAgICByZXR1cm4gdHJhbnNmb3JtRmFjdG9yaWVzLm51bWJlcjxURmllbGRWYWx1ZXMsIFROYW1lPigpO1xuICAgIGNhc2UgJ3RleHQnOlxuICAgICAgcmV0dXJuIHRyYW5zZm9ybUZhY3Rvcmllcy50ZXh0PFRGaWVsZFZhbHVlcywgVE5hbWU+KCk7XG4gICAgY2FzZSAnc2VsZWN0JzpcbiAgICBjYXNlICdyYWRpbyc6XG4gICAgICByZXR1cm4gdHJhbnNmb3JtRmFjdG9yaWVzLnNlbGVjdDxURmllbGRWYWx1ZXMsIFROYW1lPigpO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59XG5cbi8qKlxuICogQW4gZW5oYW5jZWQgaG9vayBmb3IgdHJhbnNmb3JtaW5nIGZvcm0gZmllbGQgdmFsdWVzIHdpdGggcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uc1xuICogYW5kIGJ1aWx0LWluIGZpZWxkIHR5cGUgaGFuZGxpbmcuXG4gKlxuICogVGhpcyBlbmhhbmNlZCB2ZXJzaW9uIHByb3ZpZGVzOlxuICogLSBQZXJmb3JtYW5jZSBvcHRpbWl6YXRpb25zIHdpdGggdXNlTWVtbyBhbmQgdXNlQ2FsbGJhY2tcbiAqIC0gQnVpbHQtaW4gdHJhbnNmb3JtYXRpb25zIGZvciBjb21tb24gZmllbGQgdHlwZXNcbiAqIC0gQmV0dGVyIFR5cGVTY3JpcHQgaW5mZXJlbmNlXG4gKiAtIERldmVsb3BtZW50IHdhcm5pbmdzXG4gKiAtIFN0YWJsZSByZWZlcmVuY2VzIHRvIHByZXZlbnQgdW5uZWNlc3NhcnkgcmUtcmVuZGVyc1xuICpcbiAqIEBleGFtcGxlXG4gKiBCYXNpYyB1c2FnZSB3aXRoIGJ1aWx0LWluIG51bWJlciBoYW5kbGluZzpcbiAqIGBgYHRzeFxuICogY29uc3QgeyB2YWx1ZSwgb25DaGFuZ2UgfSA9IHVzZUVuaGFuY2VkVHJhbnNmb3JtKHtcbiAqICAgdmFsdWU6IGZpZWxkLnZhbHVlLFxuICogICBvbkNoYW5nZTogZmllbGQub25DaGFuZ2UsXG4gKiAgIGZpZWxkVHlwZTogJ251bWJlcidcbiAqIH0pO1xuICogYGBgXG4gKlxuICogQGV4YW1wbGVcbiAqIEN1c3RvbSB0cmFuc2Zvcm1hdGlvbnMgKHNhbWUgYXMgb3JpZ2luYWwpOlxuICogYGBgdHN4XG4gKiBjb25zdCB7IHZhbHVlLCBvbkNoYW5nZSB9ID0gdXNlRW5oYW5jZWRUcmFuc2Zvcm0oe1xuICogICB2YWx1ZTogZmllbGQudmFsdWUsXG4gKiAgIG9uQ2hhbmdlOiBmaWVsZC5vbkNoYW5nZSxcbiAqICAgdHJhbnNmb3JtOiB7XG4gKiAgICAgaW5wdXQ6ICh2YWx1ZSkgPT4gdmFsdWU/LnRvU3RyaW5nKCkgfHwgJycsXG4gKiAgICAgb3V0cHV0OiAoZXZlbnQpID0+IHBhcnNlSW50KGV2ZW50LnRhcmdldC52YWx1ZSkgfHwgbnVsbFxuICogICB9XG4gKiB9KTtcbiAqIGBgYFxuICpcbiAqIEBleGFtcGxlXG4gKiBXaXRoIGRlZmF1bHQgdmFsdWUgYW5kIHdhcm5pbmdzOlxuICogYGBgdHN4XG4gKiBjb25zdCB7IHZhbHVlLCBvbkNoYW5nZSB9ID0gdXNlRW5oYW5jZWRUcmFuc2Zvcm0oe1xuICogICB2YWx1ZTogZmllbGQudmFsdWUsXG4gKiAgIG9uQ2hhbmdlOiBmaWVsZC5vbkNoYW5nZSxcbiAqICAgZmllbGRUeXBlOiAndGV4dCcsXG4gKiAgIGRlZmF1bHRWYWx1ZTogJycsXG4gKiAgIGVuYWJsZVdhcm5pbmdzOiBwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ2RldmVsb3BtZW50J1xuICogfSk7XG4gKiBgYGBcbiAqXG4gKiBAdGVtcGxhdGUgVEZpZWxkVmFsdWVzIC0gVGhlIGZvcm0gdmFsdWVzIHR5cGVcbiAqIEB0ZW1wbGF0ZSBUTmFtZSAtIFRoZSBmaWVsZCBuYW1lIHR5cGVcbiAqIEB0ZW1wbGF0ZSBUVmFsdWUgLSBUaGUgdHJhbnNmb3JtZWQgdmFsdWUgdHlwZVxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gQ29uZmlndXJhdGlvbiBvcHRpb25zIGluY2x1ZGluZyB2YWx1ZSwgb25DaGFuZ2UsIGFuZCB0cmFuc2Zvcm0gZnVuY3Rpb25zXG4gKiBAcmV0dXJucyBPYmplY3Qgd2l0aCB0cmFuc2Zvcm1lZCB2YWx1ZSBhbmQgZW5oYW5jZWQgb25DaGFuZ2UgaGFuZGxlciAoYm90aCBtZW1vaXplZClcbiAqXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VFbmhhbmNlZFRyYW5zZm9ybTxcbiAgVEZpZWxkVmFsdWVzIGV4dGVuZHMgRmllbGRWYWx1ZXMgPSBGaWVsZFZhbHVlcyxcbiAgVE5hbWUgZXh0ZW5kcyBGaWVsZFBhdGg8VEZpZWxkVmFsdWVzPiA9IEZpZWxkUGF0aDxURmllbGRWYWx1ZXM+LFxuICBUVmFsdWUgPSBQYXRoVmFsdWU8VEZpZWxkVmFsdWVzLCBUTmFtZT4sXG4+KFxuICBvcHRpb25zOiBFbmhhbmNlZFVzZVRyYW5zZm9ybU9wdGlvbnM8VEZpZWxkVmFsdWVzLCBUTmFtZSwgVFZhbHVlPlxuKTogRW5oYW5jZWRVc2VUcmFuc2Zvcm1SZXR1cm48VEZpZWxkVmFsdWVzLCBUTmFtZSwgVFZhbHVlPiB7XG4gIGNvbnN0IHsgXG4gICAgdmFsdWU6IGZpZWxkVmFsdWUsIFxuICAgIG9uQ2hhbmdlOiBmaWVsZE9uQ2hhbmdlLCBcbiAgICB0cmFuc2Zvcm0sIFxuICAgIGZpZWxkVHlwZSwgXG4gICAgZGVmYXVsdFZhbHVlLFxuICAgIGVuYWJsZVdhcm5pbmdzIFxuICB9ID0gb3B0aW9ucztcblxuICAvLyBHZXQgYnVpbHQtaW4gdHJhbnNmb3JtIGlmIGZpZWxkVHlwZSBpcyBzcGVjaWZpZWRcbiAgY29uc3QgYnVpbHRJblRyYW5zZm9ybSA9IHVzZU1lbW8oKCkgPT4gXG4gICAgZmllbGRUeXBlID8gZ2V0QnVpbHRJblRyYW5zZm9ybTxURmllbGRWYWx1ZXMsIFROYW1lPihmaWVsZFR5cGUpIDogdW5kZWZpbmVkLCBcbiAgICBbZmllbGRUeXBlXVxuICApO1xuXG4gIC8vIERldmVsb3BtZW50IHdhcm5pbmdzXG4gIGlmIChlbmFibGVXYXJuaW5ncyAmJiBwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ2RldmVsb3BtZW50Jykge1xuICAgIGlmICh0cmFuc2Zvcm0gJiYgZmllbGRUeXBlKSB7XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICd1c2VFbmhhbmNlZFRyYW5zZm9ybTogQm90aCBjdXN0b20gdHJhbnNmb3JtIGFuZCBmaWVsZFR5cGUgcHJvdmlkZWQuIEN1c3RvbSB0cmFuc2Zvcm0gd2lsbCB0YWtlIHByZWNlZGVuY2UuJ1xuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvLyBNZW1vaXplIHRoZSB0cmFuc2Zvcm1lZCBkaXNwbGF5IHZhbHVlXG4gIGNvbnN0IHRyYW5zZm9ybWVkVmFsdWUgPSB1c2VNZW1vKCgpOiBUVmFsdWUgPT4ge1xuICAgIGNvbnN0IGlucHV0VHJhbnNmb3JtID0gdHJhbnNmb3JtPy5pbnB1dCB8fCBidWlsdEluVHJhbnNmb3JtPy5pbnB1dDtcbiAgICBcbiAgICBpZiAodHlwZW9mIGlucHV0VHJhbnNmb3JtID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgIHJldHVybiBpbnB1dFRyYW5zZm9ybShmaWVsZFZhbHVlKSBhcyBUVmFsdWU7XG4gICAgfVxuICAgIFxuICAgIC8vIEZhbGxiYWNrIHdpdGggZGVmYXVsdCB2YWx1ZSBzdXBwb3J0XG4gICAgaWYgKGZpZWxkVmFsdWUgPT0gbnVsbCAmJiBkZWZhdWx0VmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTtcbiAgICB9XG4gICAgXG4gICAgcmV0dXJuIGZpZWxkVmFsdWUgYXMgVFZhbHVlO1xuICB9LCBbZmllbGRWYWx1ZSwgdHJhbnNmb3JtPy5pbnB1dCwgYnVpbHRJblRyYW5zZm9ybT8uaW5wdXQsIGRlZmF1bHRWYWx1ZV0pO1xuXG4gIC8vIE1lbW9pemUgdGhlIGVuaGFuY2VkIG9uQ2hhbmdlIGhhbmRsZXJcbiAgY29uc3QgZW5oYW5jZWRPbkNoYW5nZSA9IHVzZUNhbGxiYWNrKFxuICAgIChcbiAgICAgIGV2ZW50T3JWYWx1ZTogRXZlbnRPclZhbHVlPFBhdGhWYWx1ZTxURmllbGRWYWx1ZXMsIFROYW1lPj4sXG4gICAgICB2YWx1ZT86IFBhdGhWYWx1ZTxURmllbGRWYWx1ZXMsIFROYW1lPlxuICAgICkgPT4ge1xuICAgICAgY29uc3Qgb3V0cHV0VHJhbnNmb3JtID0gdHJhbnNmb3JtPy5vdXRwdXQgfHwgYnVpbHRJblRyYW5zZm9ybT8ub3V0cHV0O1xuICAgICAgXG4gICAgICBpZiAodHlwZW9mIG91dHB1dFRyYW5zZm9ybSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgLy8gSGFuZGxlIGJvdGggc2lnbmF0dXJlczogb2xkIChldmVudCBvbmx5KSBhbmQgbmV3IChldmVudCwgdmFsdWUpXG4gICAgICAgICAgY29uc3QgdHJhbnNmb3JtZWRWYWx1ZSA9IChvdXRwdXRUcmFuc2Zvcm0gYXMgKGU6IEV2ZW50T3JWYWx1ZTxQYXRoVmFsdWU8VEZpZWxkVmFsdWVzLCBUTmFtZT4+LCB2PzogUGF0aFZhbHVlPFRGaWVsZFZhbHVlcywgVE5hbWU+KSA9PiBQYXRoVmFsdWU8VEZpZWxkVmFsdWVzLCBUTmFtZT4pKGV2ZW50T3JWYWx1ZSwgdmFsdWUpO1xuXG4gICAgICAgICAgZmllbGRPbkNoYW5nZSh0cmFuc2Zvcm1lZFZhbHVlKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICBpZiAoZW5hYmxlV2FybmluZ3MgJiYgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdkZXZlbG9wbWVudCcpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ3VzZUVuaGFuY2VkVHJhbnNmb3JtOiBFcnJvciBpbiBvdXRwdXQgdHJhbnNmb3JtYXRpb246JywgZXJyb3IpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIEZhbGxiYWNrIHRvIGRpcmVjdCB2YWx1ZSBvciBmaXJzdCBhcmd1bWVudFxuICAgICAgICAgIGZpZWxkT25DaGFuZ2UoXG4gICAgICAgICAgICB2YWx1ZSAhPT0gdW5kZWZpbmVkIFxuICAgICAgICAgICAgICA/IHZhbHVlIFxuICAgICAgICAgICAgICA6IGV2ZW50T3JWYWx1ZSBhcyBQYXRoVmFsdWU8VEZpZWxkVmFsdWVzLCBUTmFtZT5cbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBObyB0cmFuc2Zvcm0sIHBhc3MgdGhyb3VnaCB0aGUgdmFsdWUgb3IgZXZlbnRcbiAgICAgICAgZmllbGRPbkNoYW5nZShcbiAgICAgICAgICB2YWx1ZSAhPT0gdW5kZWZpbmVkIFxuICAgICAgICAgICAgPyB2YWx1ZSBcbiAgICAgICAgICAgIDogZXZlbnRPclZhbHVlIGFzIFBhdGhWYWx1ZTxURmllbGRWYWx1ZXMsIFROYW1lPlxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0sXG4gICAgW2ZpZWxkT25DaGFuZ2UsIHRyYW5zZm9ybT8ub3V0cHV0LCBidWlsdEluVHJhbnNmb3JtPy5vdXRwdXQsIGVuYWJsZVdhcm5pbmdzXVxuICApO1xuXG4gIHJldHVybiB7XG4gICAgdmFsdWU6IHRyYW5zZm9ybWVkVmFsdWUsXG4gICAgb25DaGFuZ2U6IGVuaGFuY2VkT25DaGFuZ2UsXG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IHVzZUVuaGFuY2VkVHJhbnNmb3JtOyJdfQ==
@@ -1,72 +0,0 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } }// src/types/api.ts
2
- function isJsonObject(value) {
3
- return typeof value === "object" && value !== null && !Array.isArray(value) && !(value instanceof FormData);
4
- }
5
- function isJsonArray(value) {
6
- return Array.isArray(value);
7
- }
8
- function isFormData(value) {
9
- return value instanceof FormData;
10
- }
11
- function isRequestBody(value) {
12
- return isJsonObject(value) || isJsonArray(value) || isFormData(value);
13
- }
14
-
15
- // src/types/events.ts
16
- function isInputChangeEvent(value) {
17
- return typeof value === "object" && value !== null && "target" in value && typeof value.target === "object" && value.target !== null && "value" in value.target;
18
- }
19
- function isSelectChangeEvent(value) {
20
- return isInputChangeEvent(value);
21
- }
22
- function isFormChangeEvent(value) {
23
- return isInputChangeEvent(value) || isSelectChangeEvent(value);
24
- }
25
- function extractEventValue(eventOrValue, fallbackValue) {
26
- if (isFormChangeEvent(eventOrValue)) {
27
- return eventOrValue.target.value;
28
- }
29
- if (typeof eventOrValue === "object" && eventOrValue !== null && "target" in eventOrValue && typeof eventOrValue.target === "object" && eventOrValue.target !== null && "value" in eventOrValue.target) {
30
- return eventOrValue.target.value;
31
- }
32
- return _nullishCoalesce(eventOrValue, () => ( fallbackValue));
33
- }
34
- function createEventValueExtractor() {
35
- return (eventOrValue, directValue) => {
36
- if (directValue !== void 0) {
37
- return directValue;
38
- }
39
- return extractEventValue(eventOrValue);
40
- };
41
- }
42
-
43
- // src/types/utilities.ts
44
- function brand(value) {
45
- return value;
46
- }
47
- function typedKeys(obj) {
48
- return Object.keys(obj);
49
- }
50
- function typedEntries(obj) {
51
- return Object.entries(obj);
52
- }
53
- function typedValues(obj) {
54
- return Object.values(obj);
55
- }
56
-
57
-
58
-
59
-
60
-
61
-
62
-
63
-
64
-
65
-
66
-
67
-
68
-
69
-
70
-
71
- exports.isJsonObject = isJsonObject; exports.isJsonArray = isJsonArray; exports.isFormData = isFormData; exports.isRequestBody = isRequestBody; exports.isInputChangeEvent = isInputChangeEvent; exports.isSelectChangeEvent = isSelectChangeEvent; exports.isFormChangeEvent = isFormChangeEvent; exports.extractEventValue = extractEventValue; exports.createEventValueExtractor = createEventValueExtractor; exports.brand = brand; exports.typedKeys = typedKeys; exports.typedEntries = typedEntries; exports.typedValues = typedValues;
72
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9idWlsZHMvbGlicy9HTldlYlNvZnQuVUkvcGFja2FnZXMvdWkvZGlzdC9jaHVuay1LMkVKNFlLTy5janMiLCIuLi9zcmMvdHlwZXMvYXBpLnRzIiwiLi4vc3JjL3R5cGVzL2V2ZW50cy50cyIsIi4uL3NyYy90eXBlcy91dGlsaXRpZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUMrSE8sU0FBUyxZQUFBLENBQWEsS0FBQSxFQUFxQztBQUNoRSxFQUFBLE9BQ0UsT0FBTyxNQUFBLElBQVUsU0FBQSxHQUNqQixNQUFBLElBQVUsS0FBQSxHQUNWLENBQUMsS0FBQSxDQUFNLE9BQUEsQ0FBUSxLQUFLLEVBQUEsR0FDcEIsQ0FBQSxDQUFFLE1BQUEsV0FBaUIsUUFBQSxDQUFBO0FBRXZCO0FBS08sU0FBUyxXQUFBLENBQVksS0FBQSxFQUFvQztBQUM5RCxFQUFBLE9BQU8sS0FBQSxDQUFNLE9BQUEsQ0FBUSxLQUFLLENBQUE7QUFDNUI7QUFLTyxTQUFTLFVBQUEsQ0FBVyxLQUFBLEVBQW1DO0FBQzVELEVBQUEsT0FBTyxNQUFBLFdBQWlCLFFBQUE7QUFDMUI7QUFLTyxTQUFTLGFBQUEsQ0FBYyxLQUFBLEVBQXNDO0FBQ2xFLEVBQUEsT0FBTyxZQUFBLENBQWEsS0FBSyxFQUFBLEdBQUssV0FBQSxDQUFZLEtBQUssRUFBQSxHQUFLLFVBQUEsQ0FBVyxLQUFLLENBQUE7QUFDdEU7QUQ5SUE7QUFDQTtBRTZETyxTQUFTLGtCQUFBLENBQW1CLEtBQUEsRUFBMkM7QUFDNUUsRUFBQSxPQUNFLE9BQU8sTUFBQSxJQUFVLFNBQUEsR0FDakIsTUFBQSxJQUFVLEtBQUEsR0FDVixTQUFBLEdBQVksTUFBQSxHQUNaLE9BQVEsS0FBQSxDQUE4QixPQUFBLElBQVcsU0FBQSxHQUNoRCxLQUFBLENBQThCLE9BQUEsSUFBVyxLQUFBLEdBQzFDLFFBQUEsR0FBWSxLQUFBLENBQTBDLE1BQUE7QUFFMUQ7QUFLTyxTQUFTLG1CQUFBLENBQW9CLEtBQUEsRUFBNEM7QUFDOUUsRUFBQSxPQUFPLGtCQUFBLENBQW1CLEtBQUssQ0FBQTtBQUNqQztBQUtPLFNBQVMsaUJBQUEsQ0FBa0IsS0FBQSxFQUEwQztBQUMxRSxFQUFBLE9BQU8sa0JBQUEsQ0FBbUIsS0FBSyxFQUFBLEdBQUssbUJBQUEsQ0FBb0IsS0FBSyxDQUFBO0FBQy9EO0FBTU8sU0FBUyxpQkFBQSxDQUNkLFlBQUEsRUFDQSxhQUFBLEVBQ1E7QUFFUixFQUFBLEdBQUEsQ0FBSSxpQkFBQSxDQUFrQixZQUFZLENBQUEsRUFBRztBQUNuQyxJQUFBLE9BQU8sWUFBQSxDQUFhLE1BQUEsQ0FBTyxLQUFBO0FBQUEsRUFDN0I7QUFHQSxFQUFBLEdBQUEsQ0FDRSxPQUFPLGFBQUEsSUFBaUIsU0FBQSxHQUN4QixhQUFBLElBQWlCLEtBQUEsR0FDakIsU0FBQSxHQUFZLGFBQUEsR0FDWixPQUFPLFlBQUEsQ0FBYSxPQUFBLElBQVcsU0FBQSxHQUMvQixZQUFBLENBQWEsT0FBQSxJQUFXLEtBQUEsR0FDeEIsUUFBQSxHQUFXLFlBQUEsQ0FBYSxNQUFBLEVBQ3hCO0FBQ0EsSUFBQSxPQUFRLFlBQUEsQ0FBYSxNQUFBLENBQTZCLEtBQUE7QUFBQSxFQUNwRDtBQUdBLEVBQUEsd0JBQVEsWUFBQSxVQUFnQixlQUFBO0FBQzFCO0FBTU8sU0FBUyx5QkFBQSxDQUFBLEVBQThDO0FBQzVELEVBQUEsT0FBTyxDQUFDLFlBQUEsRUFBb0MsV0FBQSxFQUFBLEdBQWlDO0FBRTNFLElBQUEsR0FBQSxDQUFJLFlBQUEsSUFBZ0IsS0FBQSxDQUFBLEVBQVc7QUFDN0IsTUFBQSxPQUFPLFdBQUE7QUFBQSxJQUNUO0FBRUEsSUFBQSxPQUFPLGlCQUFBLENBQWtCLFlBQVksQ0FBQTtBQUFBLEVBQ3ZDLENBQUE7QUFDRjtBRnJHQTtBQUNBO0FHNFlPLFNBQVMsS0FBQSxDQUFnQyxLQUFBLEVBQTRCO0FBQzFFLEVBQUEsT0FBTyxLQUFBO0FBQ1Q7QUErQk8sU0FBUyxTQUFBLENBQ2QsR0FBQSxFQUNnQjtBQUNoQixFQUFBLE9BQU8sTUFBQSxDQUFPLElBQUEsQ0FBSyxHQUFHLENBQUE7QUFDeEI7QUFpQk8sU0FBUyxZQUFBLENBQ2QsR0FBQSxFQUM4QjtBQUM5QixFQUFBLE9BQU8sTUFBQSxDQUFPLE9BQUEsQ0FBUSxHQUFHLENBQUE7QUFDM0I7QUFpQk8sU0FBUyxXQUFBLENBQ2QsR0FBQSxFQUNtQjtBQUNuQixFQUFBLE9BQU8sTUFBQSxDQUFPLE1BQUEsQ0FBTyxHQUFHLENBQUE7QUFDMUI7QUg5Y0E7QUFDQTtBQUNFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0YsOGdCQUFDIiwiZmlsZSI6Ii9idWlsZHMvbGlicy9HTldlYlNvZnQuVUkvcGFja2FnZXMvdWkvZGlzdC9jaHVuay1LMkVKNFlLTy5janMiLCJzb3VyY2VzQ29udGVudCI6W251bGwsIi8qKlxuICogVHlwZS1zYWZlIEFQSSByZXF1ZXN0IGFuZCByZXNwb25zZSB1dGlsaXRpZXNcbiAqIEBtb2R1bGUgdHlwZXMvYXBpXG4gKi9cblxuLyoqXG4gKiBIVFRQIG1ldGhvZHMgc3VwcG9ydGVkIGJ5IHRoZSBBUElcbiAqL1xuZXhwb3J0IHR5cGUgSHR0cE1ldGhvZCA9ICdHRVQnIHwgJ1BPU1QnIHwgJ1BVVCcgfCAnREVMRVRFJyB8ICdQQVRDSCc7XG5cbi8qKlxuICogVmFsaWQgSlNPTiBwcmltaXRpdmUgdHlwZXMgdGhhdCBjYW4gYmUgc2VudCBpbiByZXF1ZXN0IGJvZGllc1xuICovXG5leHBvcnQgdHlwZSBKc29uUHJpbWl0aXZlID0gc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IG51bGw7XG5cbi8qKlxuICogVmFsaWQgSlNPTiB2YWx1ZXMgKHByaW1pdGl2ZXMsIG9iamVjdHMsIGFycmF5cylcbiAqL1xuZXhwb3J0IHR5cGUgSnNvblZhbHVlID1cbiAgfCBKc29uUHJpbWl0aXZlXG4gIHwgSnNvbk9iamVjdFxuICB8IEpzb25BcnJheTtcblxuLyoqXG4gKiBKU09OIG9iamVjdCB3aXRoIHN0cmluZyBrZXlzIGFuZCBKU09OIHZhbHVlc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEpzb25PYmplY3Qge1xuICBba2V5OiBzdHJpbmddOiBKc29uVmFsdWU7XG59XG5cbi8qKlxuICogSlNPTiBhcnJheSBjb250YWluaW5nIEpTT04gdmFsdWVzXG4gKi9cbmV4cG9ydCB0eXBlIEpzb25BcnJheSA9IEpzb25WYWx1ZVtdO1xuXG4vKipcbiAqIFR5cGUtc2FmZSByZXF1ZXN0IGJvZHkgLSBtdXN0IGJlIEpTT04tc2VyaWFsaXphYmxlXG4gKi9cbmV4cG9ydCB0eXBlIFJlcXVlc3RCb2R5ID0gSnNvbk9iamVjdCB8IEpzb25BcnJheSB8IEZvcm1EYXRhO1xuXG4vKipcbiAqIFN0YW5kYXJkIEhUVFAgaGVhZGVycyB3aXRoIGtub3duIGhlYWRlciBuYW1lc1xuICovXG5leHBvcnQgdHlwZSBIdHRwSGVhZGVycyA9IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgbWFraW5nIEhUVFAgcmVxdWVzdHMgKGJhc2VkIG9uIGZldGNoIEFQSSlcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXF1ZXN0T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBIVFRQIG1ldGhvZCBmb3IgdGhlIHJlcXVlc3RcbiAgICovXG4gIG1ldGhvZDogSHR0cE1ldGhvZDtcbiAgLyoqXG4gICAqIFJlcXVlc3QgaGVhZGVyc1xuICAgKi9cbiAgaGVhZGVycz86IEh0dHBIZWFkZXJzO1xuICAvKipcbiAgICogUmVxdWVzdCBib2R5IChzdHJpbmcgZm9yIEpTT04sIEZvcm1EYXRhIGZvciBmaWxlIHVwbG9hZHMpXG4gICAqL1xuICBib2R5Pzogc3RyaW5nIHwgRm9ybURhdGE7XG4gIC8qKlxuICAgKiBSZXF1ZXN0IGNyZWRlbnRpYWxzIG1vZGVcbiAgICovXG4gIGNyZWRlbnRpYWxzPzogUmVxdWVzdENyZWRlbnRpYWxzO1xuICAvKipcbiAgICogUmVxdWVzdCBtb2RlIChjb3JzLCBuby1jb3JzLCBzYW1lLW9yaWdpbilcbiAgICovXG4gIG1vZGU/OiBSZXF1ZXN0TW9kZTtcbiAgLyoqXG4gICAqIENhY2hlIG1vZGUgZm9yIHRoZSByZXF1ZXN0XG4gICAqL1xuICBjYWNoZT86IFJlcXVlc3RDYWNoZTtcbiAgLyoqXG4gICAqIFJlZGlyZWN0IG1vZGUgZm9yIHRoZSByZXF1ZXN0XG4gICAqL1xuICByZWRpcmVjdD86IFJlcXVlc3RSZWRpcmVjdDtcbiAgLyoqXG4gICAqIFJlZmVycmVyIHBvbGljeSBmb3IgdGhlIHJlcXVlc3RcbiAgICovXG4gIHJlZmVycmVyUG9saWN5PzogUmVmZXJyZXJQb2xpY3k7XG4gIC8qKlxuICAgKiBBYm9ydFNpZ25hbCBmb3IgcmVxdWVzdCBjYW5jZWxsYXRpb25cbiAgICovXG4gIHNpZ25hbD86IEFib3J0U2lnbmFsO1xufVxuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgQVBJIGNhbGxzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXBpQ2FsbE9wdGlvbnMge1xuICAvKipcbiAgICogQ3VzdG9tIGhlYWRlcnMgdG8gaW5jbHVkZSBpbiB0aGUgcmVxdWVzdFxuICAgKi9cbiAgaGVhZGVycz86IEh0dHBIZWFkZXJzO1xuICAvKipcbiAgICogV2hldGhlciB0byBpbmNsdWRlIGF1dGhlbnRpY2F0aW9uIHRva2VuXG4gICAqIEBkZWZhdWx0VmFsdWUgdHJ1ZVxuICAgKi9cbiAgaW5jbHVkZUF1dGg/OiBib29sZWFuO1xuICAvKipcbiAgICogQWJvcnRTaWduYWwgZm9yIHJlcXVlc3QgY2FuY2VsbGF0aW9uXG4gICAqL1xuICBzaWduYWw/OiBBYm9ydFNpZ25hbDtcbiAgLyoqXG4gICAqIEN1c3RvbSBiYXNlIFVSTCAob3ZlcnJpZGVzIGRlZmF1bHQpXG4gICAqL1xuICBiYXNlVXJsPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGZldGNoIG9wZXJhdGlvbnMgd2l0aCBhbnkgYWRkaXRpb25hbCBwYXJhbWV0ZXJzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmV0Y2hPcHRpb25zIGV4dGVuZHMgT21pdDxSZXF1ZXN0SW5pdCwgJ2JvZHknIHwgJ2hlYWRlcnMnPiB7XG4gIC8qKlxuICAgKiBSZXF1ZXN0IGhlYWRlcnNcbiAgICovXG4gIGhlYWRlcnM/OiBIdHRwSGVhZGVycztcbiAgLyoqXG4gICAqIFJlcXVlc3QgYm9keVxuICAgKi9cbiAgYm9keT86IFJlcXVlc3RCb2R5O1xufVxuXG4vKipcbiAqIFR5cGUgZ3VhcmQgdG8gY2hlY2sgaWYgYSB2YWx1ZSBpcyBhIHZhbGlkIEpTT04gb2JqZWN0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0pzb25PYmplY3QodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBKc29uT2JqZWN0IHtcbiAgcmV0dXJuIChcbiAgICB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmXG4gICAgdmFsdWUgIT09IG51bGwgJiZcbiAgICAhQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiZcbiAgICAhKHZhbHVlIGluc3RhbmNlb2YgRm9ybURhdGEpXG4gICk7XG59XG5cbi8qKlxuICogVHlwZSBndWFyZCB0byBjaGVjayBpZiBhIHZhbHVlIGlzIGEgdmFsaWQgSlNPTiBhcnJheVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNKc29uQXJyYXkodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBKc29uQXJyYXkge1xuICByZXR1cm4gQXJyYXkuaXNBcnJheSh2YWx1ZSk7XG59XG5cbi8qKlxuICogVHlwZSBndWFyZCB0byBjaGVjayBpZiBhIHZhbHVlIGlzIEZvcm1EYXRhXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0Zvcm1EYXRhKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgRm9ybURhdGEge1xuICByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBGb3JtRGF0YTtcbn1cblxuLyoqXG4gKiBUeXBlIGd1YXJkIHRvIGNoZWNrIGlmIGEgdmFsdWUgaXMgYSB2YWxpZCByZXF1ZXN0IGJvZHlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzUmVxdWVzdEJvZHkodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBSZXF1ZXN0Qm9keSB7XG4gIHJldHVybiBpc0pzb25PYmplY3QodmFsdWUpIHx8IGlzSnNvbkFycmF5KHZhbHVlKSB8fCBpc0Zvcm1EYXRhKHZhbHVlKTtcbn1cbiIsIi8qKlxuICogVHlwZS1zYWZlIERPTSBldmVudCBhbmQgaGFuZGxlciB1dGlsaXRpZXMgZm9yIGZvcm0gdHJhbnNmb3JtYXRpb25zXG4gKiBAbW9kdWxlIHR5cGVzL2V2ZW50c1xuICovXG5cbmltcG9ydCB0eXBlIHsgQ2hhbmdlRXZlbnQsIFN5bnRoZXRpY0V2ZW50IH0gZnJvbSBcInJlYWN0XCI7XG5cbi8qKlxuICogSFRNTCBpbnB1dCBlbGVtZW50cyB0aGF0IHN1cHBvcnQgdGhlIG9uQ2hhbmdlIGV2ZW50IHdpdGggYSB2YWx1ZVxuICovXG5leHBvcnQgdHlwZSBJbnB1dEVsZW1lbnQgPSBIVE1MSW5wdXRFbGVtZW50IHwgSFRNTFRleHRBcmVhRWxlbWVudDtcblxuLyoqXG4gKiBIVE1MIHNlbGVjdCBlbGVtZW50XG4gKi9cbmV4cG9ydCB0eXBlIEh0bWxTZWxlY3RFbGVtZW50ID0gSFRNTFNlbGVjdEVsZW1lbnQ7XG5cbi8qKlxuICogU3RhbmRhcmQgUmVhY3QgY2hhbmdlIGV2ZW50IGZvciBpbnB1dC90ZXh0YXJlYSBlbGVtZW50c1xuICovXG5leHBvcnQgdHlwZSBJbnB1dENoYW5nZUV2ZW50ID0gQ2hhbmdlRXZlbnQ8SW5wdXRFbGVtZW50PjtcblxuLyoqXG4gKiBTdGFuZGFyZCBSZWFjdCBjaGFuZ2UgZXZlbnQgZm9yIHNlbGVjdCBlbGVtZW50c1xuICovXG5leHBvcnQgdHlwZSBTZWxlY3RDaGFuZ2VFdmVudCA9IENoYW5nZUV2ZW50PEh0bWxTZWxlY3RFbGVtZW50PjtcblxuLyoqXG4gKiBVbmlvbiBvZiBhbGwgc3RhbmRhcmQgZm9ybSBjaGFuZ2UgZXZlbnRzXG4gKi9cbmV4cG9ydCB0eXBlIEZvcm1DaGFuZ2VFdmVudCA9IElucHV0Q2hhbmdlRXZlbnQgfCBTZWxlY3RDaGFuZ2VFdmVudDtcblxuLyoqXG4gKiBHZW5lcmljIHN5bnRoZXRpYyBldmVudCBmcm9tIFJlYWN0XG4gKi9cbmV4cG9ydCB0eXBlIEdlbmVyaWNTeW50aGV0aWNFdmVudCA9IFN5bnRoZXRpY0V2ZW50PEVsZW1lbnQ+O1xuXG4vKipcbiAqIFZhbHVlIGV4dHJhY3RlZCBmcm9tIGFuIGV2ZW50IG9yIHBhc3NlZCBkaXJlY3RseVxuICogVGhpcyBjb3ZlcnMgTVVJJ3MgcGF0dGVybiBvZiAoZXZlbnQsIHZhbHVlKSBjYWxsYmFja3NcbiAqL1xuZXhwb3J0IHR5cGUgRXZlbnRPclZhbHVlPFRWYWx1ZSA9IHVua25vd24+ID0gXG4gIHwgVFZhbHVlIFxuICB8IElucHV0Q2hhbmdlRXZlbnQgXG4gIHwgU2VsZWN0Q2hhbmdlRXZlbnRcbiAgfCBHZW5lcmljU3ludGhldGljRXZlbnQ7XG5cbi8qKlxuICogVHJhbnNmb3JtIG91dHB1dCBoYW5kbGVyIHRoYXQgYWNjZXB0cyB2YXJpb3VzIGV2ZW50IHBhdHRlcm5zXG4gKiBTdXBwb3J0czpcbiAqIC0gU3RhbmRhcmQgb25DaGFuZ2U6IChldmVudDogQ2hhbmdlRXZlbnQpID0+IHZvaWRcbiAqIC0gTVVJIG9uQ2hhbmdlOiAoZXZlbnQ6IENoYW5nZUV2ZW50LCB2YWx1ZTogVCkgPT4gdm9pZFxuICogLSBEaXJlY3QgdmFsdWU6ICh2YWx1ZTogVCkgPT4gdm9pZFxuICovXG5leHBvcnQgdHlwZSBUcmFuc2Zvcm1PdXRwdXRIYW5kbGVyPFRWYWx1ZSA9IHVua25vd24+ID0gKFxuICBldmVudE9yVmFsdWU6IEV2ZW50T3JWYWx1ZTxUVmFsdWU+LFxuICB2YWx1ZT86IFRWYWx1ZVxuKSA9PiBUVmFsdWU7XG5cbi8qKlxuICogVHJhbnNmb3JtIGlucHV0IGhhbmRsZXIgdGhhdCBjb252ZXJ0cyBhIHZhbHVlIHRvIGRpc3BsYXkgZm9ybWF0XG4gKi9cbmV4cG9ydCB0eXBlIFRyYW5zZm9ybUlucHV0SGFuZGxlcjxUSW5wdXQgPSB1bmtub3duLCBUT3V0cHV0ID0gdW5rbm93bj4gPSAoXG4gIHZhbHVlOiBUSW5wdXRcbikgPT4gVE91dHB1dDtcblxuLyoqXG4gKiBHZW5lcmljIGV2ZW50IGhhbmRsZXIgdGhhdCBhY2NlcHRzIHJlc3QgcGFyYW1ldGVyc1xuICogVXNlZCBmb3IgZmxleGliaWxpdHkgaW4gZXZlbnQgaGFuZGxpbmdcbiAqL1xuZXhwb3J0IHR5cGUgR2VuZXJpY0V2ZW50SGFuZGxlcjxUUmV0dXJuID0gdm9pZD4gPSAoLi4uYXJnczogdW5rbm93bltdKSA9PiBUUmV0dXJuO1xuXG4vKipcbiAqIFR5cGUgZ3VhcmQgdG8gY2hlY2sgaWYgYSB2YWx1ZSBpcyBhbiBJbnB1dENoYW5nZUV2ZW50XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0lucHV0Q2hhbmdlRXZlbnQodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBJbnB1dENoYW5nZUV2ZW50IHtcbiAgcmV0dXJuIChcbiAgICB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmXG4gICAgdmFsdWUgIT09IG51bGwgJiZcbiAgICAndGFyZ2V0JyBpbiB2YWx1ZSAmJlxuICAgIHR5cGVvZiAodmFsdWUgYXMgeyB0YXJnZXQ6IHVua25vd24gfSkudGFyZ2V0ID09PSAnb2JqZWN0JyAmJlxuICAgICh2YWx1ZSBhcyB7IHRhcmdldDogdW5rbm93biB9KS50YXJnZXQgIT09IG51bGwgJiZcbiAgICAndmFsdWUnIGluICh2YWx1ZSBhcyB7IHRhcmdldDogeyB2YWx1ZT86IHVua25vd24gfSB9KS50YXJnZXRcbiAgKTtcbn1cblxuLyoqXG4gKiBUeXBlIGd1YXJkIHRvIGNoZWNrIGlmIGEgdmFsdWUgaXMgYSBTZWxlY3RDaGFuZ2VFdmVudFxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNTZWxlY3RDaGFuZ2VFdmVudCh2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIFNlbGVjdENoYW5nZUV2ZW50IHtcbiAgcmV0dXJuIGlzSW5wdXRDaGFuZ2VFdmVudCh2YWx1ZSk7IC8vIFNhbWUgc3RydWN0dXJlLCBkaWZmZXJlbnQgZWxlbWVudCB0eXBlXG59XG5cbi8qKlxuICogVHlwZSBndWFyZCB0byBjaGVjayBpZiBhIHZhbHVlIGlzIGFueSBmb3JtIGNoYW5nZSBldmVudFxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNGb3JtQ2hhbmdlRXZlbnQodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBGb3JtQ2hhbmdlRXZlbnQge1xuICByZXR1cm4gaXNJbnB1dENoYW5nZUV2ZW50KHZhbHVlKSB8fCBpc1NlbGVjdENoYW5nZUV2ZW50KHZhbHVlKTtcbn1cblxuLyoqXG4gKiBFeHRyYWN0IHZhbHVlIGZyb20gZXZlbnQgb3IgcmV0dXJuIHRoZSB2YWx1ZSBkaXJlY3RseVxuICogSGFuZGxlcyB0aGUgY29tbW9uIHBhdHRlcm46IHZhbHVlID8/IGV2ZW50Py50YXJnZXQ/LnZhbHVlID8/IGV2ZW50XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBleHRyYWN0RXZlbnRWYWx1ZTxUVmFsdWUgPSB1bmtub3duPihcbiAgZXZlbnRPclZhbHVlOiBFdmVudE9yVmFsdWU8VFZhbHVlPixcbiAgZmFsbGJhY2tWYWx1ZT86IFRWYWx1ZVxuKTogVFZhbHVlIHtcbiAgLy8gSWYgaXQncyBhIGZvcm0gY2hhbmdlIGV2ZW50LCBleHRyYWN0IHRoZSB0YXJnZXQgdmFsdWVcbiAgaWYgKGlzRm9ybUNoYW5nZUV2ZW50KGV2ZW50T3JWYWx1ZSkpIHtcbiAgICByZXR1cm4gZXZlbnRPclZhbHVlLnRhcmdldC52YWx1ZSBhcyBUVmFsdWU7XG4gIH1cbiAgXG4gIC8vIElmIGl0IGhhcyBhIHRhcmdldC52YWx1ZSAoYnV0IGRpZG4ndCBtYXRjaCBhYm92ZSBndWFyZHMpLCB0cnkgdG8gZXh0cmFjdCBpdFxuICBpZiAoXG4gICAgdHlwZW9mIGV2ZW50T3JWYWx1ZSA9PT0gJ29iamVjdCcgJiZcbiAgICBldmVudE9yVmFsdWUgIT09IG51bGwgJiZcbiAgICAndGFyZ2V0JyBpbiBldmVudE9yVmFsdWUgJiZcbiAgICB0eXBlb2YgZXZlbnRPclZhbHVlLnRhcmdldCA9PT0gJ29iamVjdCcgJiZcbiAgICBldmVudE9yVmFsdWUudGFyZ2V0ICE9PSBudWxsICYmXG4gICAgJ3ZhbHVlJyBpbiBldmVudE9yVmFsdWUudGFyZ2V0XG4gICkge1xuICAgIHJldHVybiAoZXZlbnRPclZhbHVlLnRhcmdldCBhcyB7IHZhbHVlOiBUVmFsdWUgfSkudmFsdWU7XG4gIH1cbiAgXG4gIC8vIE90aGVyd2lzZSwgdHJlYXQgaXQgYXMgdGhlIHZhbHVlIGl0c2VsZlxuICByZXR1cm4gKGV2ZW50T3JWYWx1ZSA/PyBmYWxsYmFja1ZhbHVlKSBhcyBUVmFsdWU7XG59XG5cbi8qKlxuICogQ3JlYXRlIGEgc2FmZSBldmVudCB2YWx1ZSBleHRyYWN0b3Igd2l0aCB0eXBlIG5hcnJvd2luZ1xuICogVXNlZnVsIGZvciBNVUkgY29tcG9uZW50cyB0aGF0IHBhc3MgKGV2ZW50LCB2YWx1ZSkgcGF0dGVyblxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRXZlbnRWYWx1ZUV4dHJhY3RvcjxUVmFsdWUgPSB1bmtub3duPigpIHtcbiAgcmV0dXJuIChldmVudE9yVmFsdWU6IEV2ZW50T3JWYWx1ZTxUVmFsdWU+LCBkaXJlY3RWYWx1ZT86IFRWYWx1ZSk6IFRWYWx1ZSA9PiB7XG4gICAgLy8gSWYgYSBkaXJlY3QgdmFsdWUgaXMgcHJvdmlkZWQgKE1VSSBwYXR0ZXJuKSwgdXNlIGl0XG4gICAgaWYgKGRpcmVjdFZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBkaXJlY3RWYWx1ZTtcbiAgICB9XG4gICAgXG4gICAgcmV0dXJuIGV4dHJhY3RFdmVudFZhbHVlKGV2ZW50T3JWYWx1ZSk7XG4gIH07XG59XG4iLCIvKipcbiAqIFV0aWxpdHkgdHlwZXMgYW5kIHR5cGUgaGVscGVycyBmb3IgZW5oYW5jZWQgdHlwZSBzYWZldHlcbiAqIFxuICogQHBhY2thZ2VEb2N1bWVudGF0aW9uXG4gKi9cblxuLyoqXG4gKiBNYWtlcyBhbGwgcHJvcGVydGllcyBvZiBUIHJlcXVpcmVkIGFuZCBub24tbnVsbGFibGVcbiAqIFxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGludGVyZmFjZSBVc2VyIHtcbiAqICAgaWQ/OiBzdHJpbmc7XG4gKiAgIG5hbWU/OiBzdHJpbmcgfCBudWxsO1xuICogfVxuICogXG4gKiB0eXBlIFJlcXVpcmVkVXNlciA9IERlZXBSZXF1aXJlZDxVc2VyPjtcbiAqIC8vIHsgaWQ6IHN0cmluZzsgbmFtZTogc3RyaW5nIH1cbiAqIGBgYFxuICogXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCB0eXBlIERlZXBSZXF1aXJlZDxUPiA9IHtcbiAgW1AgaW4ga2V5b2YgVF0tPzogTm9uTnVsbGFibGU8VFtQXT47XG59O1xuXG4vKipcbiAqIE1ha2VzIGFsbCBwcm9wZXJ0aWVzIG9mIFQgb3B0aW9uYWxcbiAqIFxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGludGVyZmFjZSBVc2VyIHtcbiAqICAgaWQ6IHN0cmluZztcbiAqICAgbmFtZTogc3RyaW5nO1xuICogfVxuICogXG4gKiB0eXBlIFBhcnRpYWxVc2VyID0gRGVlcFBhcnRpYWw8VXNlcj47XG4gKiAvLyB7IGlkPzogc3RyaW5nOyBuYW1lPzogc3RyaW5nIH1cbiAqIGBgYFxuICogXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCB0eXBlIERlZXBQYXJ0aWFsPFQ+ID0ge1xuICBbUCBpbiBrZXlvZiBUXT86IFRbUF0gZXh0ZW5kcyBvYmplY3RcbiAgICA/IERlZXBQYXJ0aWFsPFRbUF0+XG4gICAgOiBUW1BdO1xufTtcblxuLyoqXG4gKiBNYWtlcyBhbGwgcHJvcGVydGllcyBvZiBUIHJlYWRvbmx5IGRlZXBseVxuICogXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogaW50ZXJmYWNlIFVzZXIge1xuICogICBpZDogc3RyaW5nO1xuICogICBwcm9maWxlOiB7XG4gKiAgICAgbmFtZTogc3RyaW5nO1xuICogICB9O1xuICogfVxuICogXG4gKiB0eXBlIFJlYWRvbmx5VXNlciA9IERlZXBSZWFkb25seTxVc2VyPjtcbiAqIC8vIHsgcmVhZG9ubHkgaWQ6IHN0cmluZzsgcmVhZG9ubHkgcHJvZmlsZTogeyByZWFkb25seSBuYW1lOiBzdHJpbmcgfSB9XG4gKiBgYGBcbiAqIFxuICogQHB1YmxpY1xuICovXG5leHBvcnQgdHlwZSBEZWVwUmVhZG9ubHk8VD4gPSB7XG4gIHJlYWRvbmx5IFtQIGluIGtleW9mIFRdOiBUW1BdIGV4dGVuZHMgb2JqZWN0XG4gICAgPyBEZWVwUmVhZG9ubHk8VFtQXT5cbiAgICA6IFRbUF07XG59O1xuXG4vKipcbiAqIEV4dHJhY3RzIGtleXMgZnJvbSBUIHRoYXQgYXJlIG5vdCB1bmRlZmluZWRcbiAqIFxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGludGVyZmFjZSBVc2VyIHtcbiAqICAgaWQ6IHN0cmluZztcbiAqICAgbmFtZT86IHN0cmluZztcbiAqICAgZW1haWw6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAqIH1cbiAqIFxuICogdHlwZSBSZXF1aXJlZEtleXMgPSBSZXF1aXJlZEtleXM8VXNlcj47XG4gKiAvLyAnaWQnXG4gKiBgYGBcbiAqIFxuICogQHB1YmxpY1xuICovXG5leHBvcnQgdHlwZSBSZXF1aXJlZEtleXM8VD4gPSB7XG4gIFtLIGluIGtleW9mIFRdLT86IHVuZGVmaW5lZCBleHRlbmRzIFRbS10gPyBuZXZlciA6IEs7XG59W2tleW9mIFRdO1xuXG4vKipcbiAqIEV4dHJhY3RzIGtleXMgZnJvbSBUIHRoYXQgY2FuIGJlIHVuZGVmaW5lZFxuICogXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogaW50ZXJmYWNlIFVzZXIge1xuICogICBpZDogc3RyaW5nO1xuICogICBuYW1lPzogc3RyaW5nO1xuICogICBlbWFpbDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICogfVxuICogXG4gKiB0eXBlIE9wdEtleXMgPSBPcHRpb25hbEtleXM8VXNlcj47XG4gKiAvLyAnbmFtZScgfCAnZW1haWwnXG4gKiBgYGBcbiAqIFxuICogQHB1YmxpY1xuICovXG5leHBvcnQgdHlwZSBPcHRpb25hbEtleXM8VD4gPSB7XG4gIFtLIGluIGtleW9mIFRdLT86IHVuZGVmaW5lZCBleHRlbmRzIFRbS10gPyBLIDogbmV2ZXI7XG59W2tleW9mIFRdO1xuXG4vKipcbiAqIE1ha2VzIHNwZWNpZmllZCBrZXlzIEsgb2YgdHlwZSBUIHJlcXVpcmVkXG4gKiBcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBpbnRlcmZhY2UgVXNlciB7XG4gKiAgIGlkPzogc3RyaW5nO1xuICogICBuYW1lPzogc3RyaW5nO1xuICogICBlbWFpbD86IHN0cmluZztcbiAqIH1cbiAqIFxuICogdHlwZSBVc2VyV2l0aElkID0gUmVxdWlyZUtleXM8VXNlciwgJ2lkJyB8ICdlbWFpbCc+O1xuICogLy8geyBpZDogc3RyaW5nOyBuYW1lPzogc3RyaW5nOyBlbWFpbDogc3RyaW5nIH1cbiAqIGBgYFxuICogXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCB0eXBlIFJlcXVpcmVLZXlzPFQsIEsgZXh0ZW5kcyBrZXlvZiBUPiA9IE9taXQ8VCwgSz4gJlxuICBSZXF1aXJlZDxQaWNrPFQsIEs+PjtcblxuLyoqXG4gKiBNYWtlcyBzcGVjaWZpZWQga2V5cyBLIG9mIHR5cGUgVCBvcHRpb25hbFxuICogXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogaW50ZXJmYWNlIFVzZXIge1xuICogICBpZDogc3RyaW5nO1xuICogICBuYW1lOiBzdHJpbmc7XG4gKiAgIGVtYWlsOiBzdHJpbmc7XG4gKiB9XG4gKiBcbiAqIHR5cGUgVXNlclVwZGF0ZSA9IFBhcnRpYWxLZXlzPFVzZXIsICduYW1lJyB8ICdlbWFpbCc+O1xuICogLy8geyBpZDogc3RyaW5nOyBuYW1lPzogc3RyaW5nOyBlbWFpbD86IHN0cmluZyB9XG4gKiBgYGBcbiAqIFxuICogQHB1YmxpY1xuICovXG5leHBvcnQgdHlwZSBQYXJ0aWFsS2V5czxULCBLIGV4dGVuZHMga2V5b2YgVD4gPSBPbWl0PFQsIEs+ICZcbiAgUGFydGlhbDxQaWNrPFQsIEs+PjtcblxuLyoqXG4gKiBFeGNsdWRlcyBrZXlzIEsgZnJvbSB0eXBlIFRcbiAqIFxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGludGVyZmFjZSBVc2VyIHtcbiAqICAgaWQ6IHN0cmluZztcbiAqICAgcGFzc3dvcmQ6IHN0cmluZztcbiAqICAgZW1haWw6IHN0cmluZztcbiAqIH1cbiAqIFxuICogdHlwZSBQdWJsaWNVc2VyID0gRXhjbHVkZUtleXM8VXNlciwgJ3Bhc3N3b3JkJz47XG4gKiAvLyB7IGlkOiBzdHJpbmc7IGVtYWlsOiBzdHJpbmcgfVxuICogYGBgXG4gKiBcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IHR5cGUgRXhjbHVkZUtleXM8VCwgSyBleHRlbmRzIGtleW9mIFQ+ID0gT21pdDxULCBLPjtcblxuLyoqXG4gKiBQaWNrcyBvbmx5IGtleXMgSyBmcm9tIHR5cGUgVFxuICogXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogaW50ZXJmYWNlIFVzZXIge1xuICogICBpZDogc3RyaW5nO1xuICogICBuYW1lOiBzdHJpbmc7XG4gKiAgIGVtYWlsOiBzdHJpbmc7XG4gKiB9XG4gKiBcbiAqIHR5cGUgVXNlckNyZWRlbnRpYWxzID0gUGlja0tleXM8VXNlciwgJ2VtYWlsJz47XG4gKiAvLyB7IGVtYWlsOiBzdHJpbmcgfVxuICogYGBgXG4gKiBcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IHR5cGUgUGlja0tleXM8VCwgSyBleHRlbmRzIGtleW9mIFQ+ID0gUGljazxULCBLPjtcblxuLyoqXG4gKiBFeHRyYWN0cyB0aGUgdmFsdWUgdHlwZSBmcm9tIGFuIGFycmF5IHR5cGVcbiAqIFxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIHR5cGUgU3RyaW5nQXJyYXkgPSBzdHJpbmdbXTtcbiAqIHR5cGUgSXRlbSA9IEFycmF5RWxlbWVudDxTdHJpbmdBcnJheT47XG4gKiAvLyBzdHJpbmdcbiAqIGBgYFxuICogXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCB0eXBlIEFycmF5RWxlbWVudDxUPiA9IFQgZXh0ZW5kcyByZWFkb25seSAoaW5mZXIgRSlbXSA/IEUgOiBuZXZlcjtcblxuLyoqXG4gKiBFeHRyYWN0cyB0aGUgcmV0dXJuIHR5cGUgb2YgYW4gYXN5bmMgZnVuY3Rpb25cbiAqIFxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGFzeW5jIGZ1bmN0aW9uIGdldFVzZXIoKTogUHJvbWlzZTxVc2VyPiB7XG4gKiAgIHJldHVybiB7IGlkOiAnMScsIG5hbWU6ICdKb2huJyB9O1xuICogfVxuICogXG4gKiB0eXBlIFVzZXIgPSBBc3luY1JldHVyblR5cGU8dHlwZW9mIGdldFVzZXI+O1xuICogLy8gVXNlclxuICogYGBgXG4gKiBcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IHR5cGUgQXN5bmNSZXR1cm5UeXBlPFQgZXh0ZW5kcyAoLi4uYXJnczogcmVhZG9ubHkgdW5rbm93bltdKSA9PiBQcm9taXNlPHVua25vd24+PiA9XG4gIFQgZXh0ZW5kcyAoLi4uYXJnczogcmVhZG9ubHkgdW5rbm93bltdKSA9PiBQcm9taXNlPGluZmVyIFI+ID8gUiA6IG5ldmVyO1xuXG4vKipcbiAqIE1ha2VzIGEgdHlwZSBudWxsYWJsZSAoYWRkcyBudWxsKVxuICogXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogdHlwZSBVc2VybmFtZSA9IHN0cmluZztcbiAqIHR5cGUgTnVsbGFibGVVc2VybmFtZSA9IE51bGxhYmxlPFVzZXJuYW1lPjtcbiAqIC8vIHN0cmluZyB8IG51bGxcbiAqIGBgYFxuICogXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCB0eXBlIE51bGxhYmxlPFQ+ID0gVCB8IG51bGw7XG5cbi8qKlxuICogTWFrZXMgYSB0eXBlIG9wdGlvbmFsIChhZGRzIHVuZGVmaW5lZClcbiAqIFxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIHR5cGUgVXNlcm5hbWUgPSBzdHJpbmc7XG4gKiB0eXBlIE9wdGlvbmFsVXNlcm5hbWUgPSBNYXliZTxVc2VybmFtZT47XG4gKiAvLyBzdHJpbmcgfCB1bmRlZmluZWRcbiAqIGBgYFxuICogXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCB0eXBlIE1heWJlPFQ+ID0gVCB8IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBNYWtlcyBhIHR5cGUgbnVsbGlzaCAoYWRkcyBudWxsIGFuZCB1bmRlZmluZWQpXG4gKiBcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiB0eXBlIFVzZXJuYW1lID0gc3RyaW5nO1xuICogdHlwZSBOdWxsaXNoVXNlcm5hbWUgPSBOdWxsaXNoPFVzZXJuYW1lPjtcbiAqIC8vIHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWRcbiAqIGBgYFxuICogXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCB0eXBlIE51bGxpc2g8VD4gPSBUIHwgbnVsbCB8IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBDcmVhdGVzIGEgdW5pb24gb2YgYWxsIHBvc3NpYmxlIHBhdGhzIHRocm91Z2ggYW4gb2JqZWN0IHR5cGVcbiAqIFxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGludGVyZmFjZSBVc2VyIHtcbiAqICAgcHJvZmlsZToge1xuICogICAgIG5hbWU6IHN0cmluZztcbiAqICAgICBhZGRyZXNzOiB7XG4gKiAgICAgICBjaXR5OiBzdHJpbmc7XG4gKiAgICAgfTtcbiAqICAgfTtcbiAqIH1cbiAqIFxuICogdHlwZSBQYXRocyA9IE9iamVjdFBhdGhzPFVzZXI+O1xuICogLy8gJ3Byb2ZpbGUnIHwgJ3Byb2ZpbGUubmFtZScgfCAncHJvZmlsZS5hZGRyZXNzJyB8ICdwcm9maWxlLmFkZHJlc3MuY2l0eSdcbiAqIGBgYFxuICogXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCB0eXBlIE9iamVjdFBhdGhzPFQ+ID0ge1xuICBbSyBpbiBrZXlvZiBUICYgc3RyaW5nXTogVFtLXSBleHRlbmRzIG9iamVjdFxuICAgID8gSyB8IGAke0t9LiR7T2JqZWN0UGF0aHM8VFtLXT59YFxuICAgIDogSztcbn1ba2V5b2YgVCAmIHN0cmluZ107XG5cbi8qKlxuICogTWVyZ2VzIHR3byB0eXBlcywgd2l0aCBwcm9wZXJ0aWVzIGZyb20gQiBvdmVycmlkaW5nIHRob3NlIGluIEFcbiAqIFxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGludGVyZmFjZSBBIHtcbiAqICAgaWQ6IG51bWJlcjtcbiAqICAgbmFtZTogc3RyaW5nO1xuICogfVxuICogXG4gKiBpbnRlcmZhY2UgQiB7XG4gKiAgIGlkOiBzdHJpbmc7XG4gKiAgIGVtYWlsOiBzdHJpbmc7XG4gKiB9XG4gKiBcbiAqIHR5cGUgTWVyZ2VkID0gTWVyZ2U8QSwgQj47XG4gKiAvLyB7IGlkOiBzdHJpbmc7IG5hbWU6IHN0cmluZzsgZW1haWw6IHN0cmluZyB9XG4gKiBgYGBcbiAqIFxuICogQHB1YmxpY1xuICovXG5leHBvcnQgdHlwZSBNZXJnZTxBLCBCPiA9IE9taXQ8QSwga2V5b2YgQj4gJiBCO1xuXG4vKipcbiAqIEVuc3VyZXMgYSB0eXBlIGlzIHNlcmlhbGl6YWJsZSAobm8gZnVuY3Rpb25zLCBzeW1ib2xzLCB1bmRlZmluZWQpXG4gKiBcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBpbnRlcmZhY2UgRGF0YSB7XG4gKiAgIGlkOiBzdHJpbmc7XG4gKiAgIGNhbGxiYWNrOiAoKSA9PiB2b2lkO1xuICogICB2YWx1ZTogbnVtYmVyO1xuICogfVxuICogXG4gKiB0eXBlIFNlcmlhbGl6YWJsZURhdGEgPSBTZXJpYWxpemFibGU8RGF0YT47XG4gKiAvLyB7IGlkOiBzdHJpbmc7IHZhbHVlOiBudW1iZXIgfVxuICogYGBgXG4gKiBcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IHR5cGUgU2VyaWFsaXphYmxlPFQ+ID0ge1xuICBbSyBpbiBrZXlvZiBUIGFzIFRbS10gZXh0ZW5kcyAoLi4uYXJnczogcmVhZG9ubHkgdW5rbm93bltdKSA9PiB1bmtub3duXG4gICAgPyBuZXZlclxuICAgIDogVFtLXSBleHRlbmRzIHN5bWJvbFxuICAgID8gbmV2ZXJcbiAgICA6IFRbS10gZXh0ZW5kcyB1bmRlZmluZWRcbiAgICA/IG5ldmVyXG4gICAgOiBLXTogVFtLXSBleHRlbmRzIG9iamVjdCA/IFNlcmlhbGl6YWJsZTxUW0tdPiA6IFRbS107XG59O1xuXG4vKipcbiAqIENvbnZlcnRzIGEgdW5pb24gdHlwZSB0byBhbiBpbnRlcnNlY3Rpb24gdHlwZVxuICogXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogdHlwZSBVbmlvbiA9IHsgYTogc3RyaW5nIH0gfCB7IGI6IG51bWJlciB9O1xuICogdHlwZSBJbnRlcnNlY3Rpb24gPSBVbmlvblRvSW50ZXJzZWN0aW9uPFVuaW9uPjtcbiAqIC8vIHsgYTogc3RyaW5nIH0gJiB7IGI6IG51bWJlciB9XG4gKiBgYGBcbiAqIFxuICogQHB1YmxpY1xuICovXG5leHBvcnQgdHlwZSBVbmlvblRvSW50ZXJzZWN0aW9uPFU+ID0gKFxuICBVIGV4dGVuZHMgdW5rbm93biA/IChrOiBVKSA9PiB2b2lkIDogbmV2ZXJcbikgZXh0ZW5kcyAoazogaW5mZXIgSSkgPT4gdm9pZFxuICA/IElcbiAgOiBuZXZlcjtcblxuLyoqXG4gKiBHZXRzIGFsbCBrZXlzIG9mIFQgd2hvc2UgdmFsdWVzIGV4dGVuZCBWXG4gKiBcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBpbnRlcmZhY2UgVXNlciB7XG4gKiAgIGlkOiBzdHJpbmc7XG4gKiAgIGFnZTogbnVtYmVyO1xuICogICBuYW1lOiBzdHJpbmc7XG4gKiAgIGFjdGl2ZTogYm9vbGVhbjtcbiAqIH1cbiAqIFxuICogdHlwZSBTdHJpbmdLZXlzID0gS2V5c09mVHlwZTxVc2VyLCBzdHJpbmc+O1xuICogLy8gJ2lkJyB8ICduYW1lJ1xuICogYGBgXG4gKiBcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IHR5cGUgS2V5c09mVHlwZTxULCBWPiA9IHtcbiAgW0sgaW4ga2V5b2YgVF06IFRbS10gZXh0ZW5kcyBWID8gSyA6IG5ldmVyO1xufVtrZXlvZiBUXTtcblxuLyoqXG4gKiBFbnN1cmVzIGEgdmFsdWUgaXMgZXhhY3RseSB0aGUgdHlwZSBUIChubyB3aWRlciB0eXBlcyBhbGxvd2VkKVxuICogXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgY29uZmlnOiBFeGFjdDx7IGRlYnVnOiBib29sZWFuIH0+ID0ge1xuICogICBkZWJ1ZzogdHJ1ZSxcbiAqICAgLy8gZXh0cmE6ICd2YWx1ZScgIC8vIOKdjCBFcnJvcjogZXh0cmEgcHJvcGVydHkgbm90IGFsbG93ZWRcbiAqIH07XG4gKiBgYGBcbiAqIFxuICogQHB1YmxpY1xuICovXG5leHBvcnQgdHlwZSBFeGFjdDxULCBTaGFwZSA9IFQ+ID0gVCBleHRlbmRzIFNoYXBlXG4gID8gRXhjbHVkZTxrZXlvZiBULCBrZXlvZiBTaGFwZT4gZXh0ZW5kcyBuZXZlclxuICAgID8gVFxuICAgIDogbmV2ZXJcbiAgOiBuZXZlcjtcblxuLyoqXG4gKiBDcmVhdGVzIGEgYnJhbmRlZCB0eXBlIGZvciBub21pbmFsIHR5cGluZ1xuICogVGhpcyBwcmV2ZW50cyBtaXhpbmcgdmFsdWVzIG9mIHRoZSBzYW1lIHByaW1pdGl2ZSB0eXBlXG4gKiBcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiB0eXBlIFVzZXJJZCA9IEJyYW5kPHN0cmluZywgJ1VzZXJJZCc+O1xuICogdHlwZSBQcm9kdWN0SWQgPSBCcmFuZDxzdHJpbmcsICdQcm9kdWN0SWQnPjtcbiAqIFxuICogY29uc3QgdXNlcklkOiBVc2VySWQgPSAnMTIzJyBhcyBVc2VySWQ7XG4gKiBjb25zdCBwcm9kdWN0SWQ6IFByb2R1Y3RJZCA9ICc0NTYnIGFzIFByb2R1Y3RJZDtcbiAqIFxuICogLy8g4p2MIFR5cGUgZXJyb3I6IFVzZXJJZCBpcyBub3QgYXNzaWduYWJsZSB0byBQcm9kdWN0SWRcbiAqIGNvbnN0IHRlc3Q6IFByb2R1Y3RJZCA9IHVzZXJJZDtcbiAqIGBgYFxuICogXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCB0eXBlIEJyYW5kPFQsIFRCcmFuZCBleHRlbmRzIHN0cmluZz4gPSBUICYge1xuICByZWFkb25seSBfX2JyYW5kOiBUQnJhbmQ7XG59O1xuXG4vKipcbiAqIEhlbHBlciB0byBjcmVhdGUgYSBicmFuZGVkIHZhbHVlXG4gKiBcbiAqIEBwYXJhbSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byBicmFuZFxuICogQHJldHVybnMgVGhlIHZhbHVlIGFzIGEgYnJhbmRlZCB0eXBlXG4gKiBcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiB0eXBlIFVzZXJJZCA9IEJyYW5kPHN0cmluZywgJ1VzZXJJZCc+O1xuICogY29uc3QgaWQgPSBicmFuZDxzdHJpbmcsICdVc2VySWQnPigndXNlci0xMjMnKTtcbiAqIC8vIGlkIGhhcyB0eXBlIFVzZXJJZFxuICogYGBgXG4gKiBcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJyYW5kPFQsIFRCcmFuZCBleHRlbmRzIHN0cmluZz4odmFsdWU6IFQpOiBCcmFuZDxULCBUQnJhbmQ+IHtcbiAgcmV0dXJuIHZhbHVlIGFzIEJyYW5kPFQsIFRCcmFuZD47XG59XG5cbi8qKlxuICogUmVtb3ZlcyBicmFuZGluZyBmcm9tIGEgYnJhbmRlZCB0eXBlXG4gKiBcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiB0eXBlIFVzZXJJZCA9IEJyYW5kPHN0cmluZywgJ1VzZXJJZCc+O1xuICogdHlwZSBQbGFpbklkID0gVW5icmFuZDxVc2VySWQ+O1xuICogLy8gc3RyaW5nXG4gKiBgYGBcbiAqIFxuICogQHB1YmxpY1xuICovXG5leHBvcnQgdHlwZSBVbmJyYW5kPFQ+ID0gVCBleHRlbmRzIGluZmVyIFUgJiB7IHJlYWRvbmx5IF9fYnJhbmQ6IHN0cmluZyB9ID8gVSA6IFQ7XG5cbi8qKlxuICogVHlwZS1zYWZlIE9iamVjdC5rZXlzIHRoYXQgcHJlc2VydmVzIGtleSB0eXBlc1xuICogXG4gKiBAcGFyYW0gb2JqIC0gVGhlIG9iamVjdCB0byBnZXQga2V5cyBmcm9tXG4gKiBAcmV0dXJucyBBcnJheSBvZiBrZXlzIHdpdGggcHJvcGVyIHR5cGVcbiAqIFxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IHVzZXIgPSB7IGlkOiAnMScsIG5hbWU6ICdKb2huJyB9IGFzIGNvbnN0O1xuICogY29uc3Qga2V5cyA9IHR5cGVkS2V5cyh1c2VyKTtcbiAqIC8vIGtleXMgaGFzIHR5cGU6ICgnaWQnIHwgJ25hbWUnKVtdXG4gKiBgYGBcbiAqIFxuICogQHB1YmxpY1xuICovXG5leHBvcnQgZnVuY3Rpb24gdHlwZWRLZXlzPFQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4oXG4gIG9iajogVFxuKTogQXJyYXk8a2V5b2YgVD4ge1xuICByZXR1cm4gT2JqZWN0LmtleXMob2JqKSBhcyBBcnJheTxrZXlvZiBUPjtcbn1cblxuLyoqXG4gKiBUeXBlLXNhZmUgT2JqZWN0LmVudHJpZXMgdGhhdCBwcmVzZXJ2ZXMga2V5IGFuZCB2YWx1ZSB0eXBlc1xuICogXG4gKiBAcGFyYW0gb2JqIC0gVGhlIG9iamVjdCB0byBnZXQgZW50cmllcyBmcm9tXG4gKiBAcmV0dXJucyBBcnJheSBvZiBba2V5LCB2YWx1ZV0gdHVwbGVzIHdpdGggcHJvcGVyIHR5cGVzXG4gKiBcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCB1c2VyID0geyBpZDogJzEnLCBhZ2U6IDMwIH0gYXMgY29uc3Q7XG4gKiBjb25zdCBlbnRyaWVzID0gdHlwZWRFbnRyaWVzKHVzZXIpO1xuICogLy8gZW50cmllcyBoYXMgdHlwZTogWydpZCcsICcxJ10gfCBbJ2FnZScsIDMwXVxuICogYGBgXG4gKiBcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHR5cGVkRW50cmllczxUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4+KFxuICBvYmo6IFRcbik6IEFycmF5PFtrZXlvZiBULCBUW2tleW9mIFRdXT4ge1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMob2JqKSBhcyBBcnJheTxba2V5b2YgVCwgVFtrZXlvZiBUXV0+O1xufVxuXG4vKipcbiAqIFR5cGUtc2FmZSBPYmplY3QudmFsdWVzIHRoYXQgcHJlc2VydmVzIHZhbHVlIHR5cGVzXG4gKiBcbiAqIEBwYXJhbSBvYmogLSBUaGUgb2JqZWN0IHRvIGdldCB2YWx1ZXMgZnJvbVxuICogQHJldHVybnMgQXJyYXkgb2YgdmFsdWVzIHdpdGggcHJvcGVyIHR5cGVcbiAqIFxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IHVzZXIgPSB7IGlkOiAnMScsIGFnZTogMzAgfTtcbiAqIGNvbnN0IHZhbHVlcyA9IHR5cGVkVmFsdWVzKHVzZXIpO1xuICogLy8gdmFsdWVzIGhhcyB0eXBlOiAoc3RyaW5nIHwgbnVtYmVyKVtdXG4gKiBgYGBcbiAqIFxuICogQHB1YmxpY1xuICovXG5leHBvcnQgZnVuY3Rpb24gdHlwZWRWYWx1ZXM8VCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+PihcbiAgb2JqOiBUXG4pOiBBcnJheTxUW2tleW9mIFRdPiB7XG4gIHJldHVybiBPYmplY3QudmFsdWVzKG9iaikgYXMgQXJyYXk8VFtrZXlvZiBUXT47XG59XG4iXX0=