@decaf-ts/ui-decorators 0.5.9 → 0.5.11

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 (63) hide show
  1. package/LICENSE.md +21 -157
  2. package/README.md +422 -12
  3. package/dist/ui-decorators.cjs +609 -55
  4. package/dist/ui-decorators.esm.cjs +607 -56
  5. package/lib/esm/index.d.ts +7 -3
  6. package/lib/esm/index.js +8 -4
  7. package/lib/esm/model/Renderable.d.ts +15 -0
  8. package/lib/esm/model/Renderable.js +1 -1
  9. package/lib/esm/model/decorators.d.ts +93 -14
  10. package/lib/esm/model/decorators.js +102 -16
  11. package/lib/esm/model/index.d.ts +0 -4
  12. package/lib/esm/model/index.js +1 -5
  13. package/lib/esm/model/model.d.ts +156 -50
  14. package/lib/esm/model/model.js +1 -1
  15. package/lib/esm/model/overrides.d.ts +8 -0
  16. package/lib/esm/model/overrides.js +19 -1
  17. package/lib/esm/ui/Rendering.js +43 -8
  18. package/lib/esm/ui/constants.d.ts +149 -4
  19. package/lib/esm/ui/constants.js +150 -5
  20. package/lib/esm/ui/decorators.d.ts +229 -21
  21. package/lib/esm/ui/decorators.js +242 -25
  22. package/lib/esm/ui/errors.d.ts +28 -0
  23. package/lib/esm/ui/errors.js +29 -1
  24. package/lib/esm/ui/handlers.d.ts +17 -0
  25. package/lib/esm/ui/handlers.js +18 -0
  26. package/lib/esm/ui/index.d.ts +1 -4
  27. package/lib/esm/ui/index.js +2 -5
  28. package/lib/esm/ui/interfaces.d.ts +25 -0
  29. package/lib/esm/ui/interfaces.js +9 -1
  30. package/lib/esm/ui/types.d.ts +63 -5
  31. package/lib/esm/ui/types.js +9 -1
  32. package/lib/esm/ui/utils.d.ts +1 -1
  33. package/lib/esm/ui/utils.js +2 -2
  34. package/lib/index.cjs +8 -4
  35. package/lib/index.d.ts +7 -3
  36. package/lib/model/Renderable.cjs +1 -1
  37. package/lib/model/Renderable.d.ts +15 -0
  38. package/lib/model/decorators.cjs +103 -16
  39. package/lib/model/decorators.d.ts +93 -14
  40. package/lib/model/index.cjs +1 -5
  41. package/lib/model/index.d.ts +0 -4
  42. package/lib/model/model.cjs +1 -1
  43. package/lib/model/model.d.ts +156 -50
  44. package/lib/model/overrides.cjs +19 -1
  45. package/lib/model/overrides.d.ts +8 -0
  46. package/lib/ui/Rendering.cjs +43 -8
  47. package/lib/ui/constants.cjs +150 -5
  48. package/lib/ui/constants.d.ts +149 -4
  49. package/lib/ui/decorators.cjs +243 -25
  50. package/lib/ui/decorators.d.ts +229 -21
  51. package/lib/ui/errors.cjs +29 -1
  52. package/lib/ui/errors.d.ts +28 -0
  53. package/lib/ui/handlers.cjs +22 -0
  54. package/lib/ui/handlers.d.ts +17 -0
  55. package/lib/ui/index.cjs +2 -5
  56. package/lib/ui/index.d.ts +1 -4
  57. package/lib/ui/interfaces.cjs +9 -1
  58. package/lib/ui/interfaces.d.ts +25 -0
  59. package/lib/ui/types.cjs +9 -1
  60. package/lib/ui/types.d.ts +63 -5
  61. package/lib/ui/utils.cjs +2 -2
  62. package/lib/ui/utils.d.ts +1 -1
  63. package/package.json +2 -2
@@ -7,109 +7,215 @@ declare module "@decaf-ts/decorator-validation" {
7
7
  hasErrors(...exclusions: any[]): ModelErrorDefinition | undefined;
8
8
  hasErrors(previousVersion?: Model | any, ...exclusions: any[]): ModelErrorDefinition | undefined;
9
9
  /**
10
- * @summary Compare object equality recursively
11
- * @param {any} obj object to compare to
12
- * @param {string} [exceptions] property names to be excluded from the comparison
10
+ * @description Compares this model with another object for equality
11
+ * @summary Compare object equality recursively, checking all properties
12
+ * @param {any} obj - Object to compare to
13
+ * @param {...string} exceptions - Property names to be excluded from the comparison
14
+ * @return {boolean} True if objects are equal, false otherwise
13
15
  */
14
16
  equals(obj: any, ...exceptions: string[]): boolean;
15
17
  /**
18
+ * @description Converts the model to a serialized string representation
16
19
  * @summary Returns the serialized model according to the currently defined {@link Serializer}
20
+ * @return {string} Serialized representation of the model
17
21
  */
18
22
  serialize(): string;
19
23
  /**
20
- * @summary Override the implementation for js's 'toString()' which sucks...
24
+ * @description Provides a string representation of the model
25
+ * @summary Override the implementation for JavaScript's default toString() method
26
+ * @return {string} String representation of the model
21
27
  * @override
22
28
  */
23
29
  toString(): string;
24
30
  /**
25
- * @summary Defines a default implementation for object hash. Relies on a very basic implementation based on Java's string hash;
31
+ * @description Generates a hash code for the model
32
+ * @summary Defines a default implementation for object hash based on Java's string hash algorithm
33
+ * @return {string} Hash code for the model
26
34
  */
27
35
  hash(): string;
28
36
  /**
29
- * @summary Deserializes a Model
30
- * @param {string} str
31
- *
32
- * @param args
37
+ * @description Converts a serialized string back to a model instance
38
+ * @summary Deserializes a Model from its string representation
39
+ * @param {string} str - The serialized string to deserialize
40
+ * @return {any} The deserialized model instance
33
41
  * @throws {Error} If it fails to parse the string, or if it fails to build the model
34
42
  */
35
43
  static deserialize(str: string): any;
36
44
  /**
37
- * @summary Repopulates the Object properties with the ones from the new object
38
45
  * @description Iterates all common properties of obj (if existing) and self, and copies them onto self
39
- *
40
- * @param {T} self
41
- * @param {T | Record<string, any>} [obj]
42
- *
46
+ * @summary Repopulates the Object properties with the ones from the new object
47
+ * @template T - Type extending Model
48
+ * @param {T} self - The target model instance to update
49
+ * @param {T|Record<string, any>} [obj] - The source object to copy properties from
50
+ * @return {T} The updated model instance
43
51
  */
44
52
  static fromObject<T extends Model>(self: T, obj?: T | Record<string, any>): T;
45
53
  /**
46
- * @summary Repopulates the instance with the ones from the new Model Object
47
- * @description Iterates all common properties of obj (if existing) and self, and copies them onto self.
48
- * Is aware of nested Model Objects and rebuilds them also.
49
- * When List properties are decorated with {@link list}, they list items will also be rebuilt
50
- *
51
- * @param {T} self
52
- * @param {T | Record<string, any>} [obj]
53
- *
54
+ * @description Iterates all common properties of obj (if existing) and self, and copies them onto self. Is aware of nested Model Objects and rebuilds them also. When List properties are decorated with {@link list}, the list items will also be rebuilt
55
+ * @summary Repopulates the instance with properties from the new Model Object, handling nested models
56
+ * @template T - Type extending Model
57
+ * @param {T} self - The target model instance to update
58
+ * @param {T|Record<string, any>} [obj] - The source model or object to copy properties from
59
+ * @return {T} The updated model instance
54
60
  */
55
61
  static fromModel<T extends Model>(self: T, obj?: T | Record<string, any>): T;
56
62
  /**
57
- * @summary Sets the Global {@link ModelBuilderFunction}
58
- * @param {ModelBuilderFunction} [builder]
63
+ * @description Configures the global model builder function used for creating model instances
64
+ * @summary Sets the Global {@link ModelBuilderFunction} used for model construction
65
+ * @param {ModelBuilderFunction} [builder] - The builder function to set, or undefined to reset
66
+ * @return {void}
59
67
  */
60
68
  static setBuilder(builder?: ModelBuilderFunction): void;
61
69
  /**
62
- * @summary Retrieves the current global {@link ModelBuilderFunction}
70
+ * @description Returns the currently configured global model builder function
71
+ * @summary Retrieves the current global {@link ModelBuilderFunction} used for model construction
72
+ * @return {ModelBuilderFunction|undefined} The current builder function or undefined if not set
63
73
  */
64
74
  static getBuilder(): ModelBuilderFunction | undefined;
65
75
  /**
66
- * Returns the current {@link ModelRegistryManager}
67
- *
68
- * @return ModelRegistry, defaults to {@link ModelRegistryManager}
76
+ * @description Retrieves the current model registry instance
77
+ * @summary Returns the current {@link ModelRegistryManager} used for model registration
78
+ * @return {BuilderRegistry<any>} ModelRegistry instance, defaults to {@link ModelRegistryManager}
79
+ * @private
69
80
  */
70
81
  private static getRegistry;
71
82
  /**
72
- * Returns the current actingModelRegistry
73
- *
74
- * @param {BuilderRegistry} modelRegistry the new implementation of Registry
83
+ * @description Sets the model registry to be used for model registration and retrieval
84
+ * @summary Configures the current model registry implementation
85
+ * @param {BuilderRegistry<any>} modelRegistry - The new implementation of Registry to use
86
+ * @return {void}
75
87
  */
76
88
  static setRegistry(modelRegistry: BuilderRegistry<any>): void;
77
89
  /**
78
- * @summary register new Models
79
- * @param {any} constructor
80
- * @param {string} [name] when not defined, the name of the constructor will be used
81
- *
90
+ * @description Registers a model constructor with the model registry
91
+ * @summary Registers new Models for later retrieval and instantiation
92
+ * @template T - Type extending Model
93
+ * @param {ModelConstructor<T>} constructor - The model constructor to register
94
+ * @param {string} [name] - Optional name for registration, defaults to constructor name
95
+ * @return {void}
82
96
  * @see ModelRegistry
83
97
  */
84
98
  static register<T extends Model>(constructor: ModelConstructor<T>, name?: string): void;
85
99
  /**
86
- * @summary Gets a registered Model {@link ModelConstructor}
87
- * @param {string} name
88
- *
100
+ * @description Retrieves a previously registered model constructor by name
101
+ * @summary Gets a registered Model {@link ModelConstructor} from the registry
102
+ * @template T - Type extending Model
103
+ * @param {string} name - The name of the model to retrieve
104
+ * @return {ModelConstructor<T>|undefined} The model constructor or undefined if not found
89
105
  * @see ModelRegistry
90
106
  */
91
107
  static get<T extends Model>(name: string): ModelConstructor<T> | undefined;
92
108
  /**
93
- * @param {Record<string, any>} obj
94
- * @param {string} [clazz] when provided, it will attempt to find the matching constructor
95
- *
96
- * @throws Error If clazz is not found, or obj is not a {@link Model} meaning it has no {@link ModelKeys.ANCHOR} property
97
- *
109
+ * @description Creates a new model instance from a plain object
110
+ * @summary Builds a model instance using the registered constructor
111
+ * @template T - Type extending Model
112
+ * @param {Record<string, any>} [obj] - The source object to build from
113
+ * @param {string} [clazz] - Optional class name to find the matching constructor
114
+ * @return {T} The built model instance
115
+ * @throws {Error} If clazz is not found, or obj is not a {@link Model} meaning it has no {@link ModelKeys.ANCHOR} property
98
116
  * @see ModelRegistry
99
117
  */
100
118
  static build<T extends Model>(obj?: Record<string, any>, clazz?: string): T;
119
+ /**
120
+ * @description Retrieves metadata associated with a model instance
121
+ * @summary Gets the metadata attached to a model
122
+ * @template V - Type extending Model
123
+ * @param {V} model - The model instance to get metadata from
124
+ * @return {any} The model's metadata
125
+ */
101
126
  static getMetadata<V extends Model>(model: V): any;
127
+ /**
128
+ * @description Retrieves all attribute names defined on a model
129
+ * @summary Gets the list of attributes for a model class or instance
130
+ * @template V - Type extending Model
131
+ * @param {(Constructor<V>|V)} model - The model constructor or instance
132
+ * @return {string[]} Array of attribute names
133
+ */
102
134
  static getAttributes<V extends Model>(model: Constructor<V> | V): string[];
103
- static equals<V extends Model>(obj1: V, obj2: V, ...exceptions: any[]): boolean;
104
- static hasErrors<V extends Model>(model: V, ...exceptions: any[]): ModelErrorDefinition | undefined;
105
- static serialize<V extends Model>(model: V): any;
106
- static hash<V extends Model>(model: V): any;
107
135
  /**
108
- * @summary Builds the key to store as Metadata under Reflections
109
- * @description concatenates {@link ModelKeys#REFLECT} with the provided key
110
- * @param {string} str
136
+ * @description Compares two model instances for equality
137
+ * @summary Static method to check if two model instances are equal
138
+ * @template M - Type extending Model
139
+ * @param {M} obj1 - First model instance to compare
140
+ * @param {M} obj2 - Second model instance to compare
141
+ * @param {any[]} exceptions - Properties to exclude from comparison
142
+ * @return {boolean} True if models are equal, false otherwise
143
+ */
144
+ static equals<M extends Model>(obj1: M, obj2: M, ...exceptions: any[]): boolean;
145
+ /**
146
+ * @description Validates a model and checks for errors
147
+ * @summary Static method to validate a model instance
148
+ * @template M - Type extending Model
149
+ * @param {M} model - The model instance to validate
150
+ * @param {string[]} propsToIgnore - Properties to exclude from validation
151
+ * @return {ModelErrorDefinition|undefined} Error definition if validation fails, undefined otherwise
152
+ */
153
+ static hasErrors<M extends Model>(model: M, ...propsToIgnore: string[]): ModelErrorDefinition | undefined;
154
+ /**
155
+ * @description Serializes a model instance to a string
156
+ * @summary Static method to convert a model to its serialized form
157
+ * @template M - Type extending Model
158
+ * @param {M} model - The model instance to serialize
159
+ * @return {string} The serialized representation of the model
160
+ */
161
+ static serialize<M extends Model>(model: M): any;
162
+ /**
163
+ * @description Generates a hash code for a model instance
164
+ * @summary Static method to create a hash code for a model
165
+ * @template M - Type extending Model
166
+ * @param {M} model - The model instance to hash
167
+ * @return {string} The hash code for the model
168
+ */
169
+ static hash<M extends Model>(model: M): any;
170
+ /**
171
+ * @description Builds a metadata key for reflection
172
+ * @summary Concatenates the model reflection prefix with the provided key string
173
+ * @param {string} str - The key string to append to the reflection prefix
174
+ * @return {string} The complete metadata key
111
175
  */
112
176
  static key(str: string): string;
177
+ /**
178
+ * @description Determines if an object is a model instance or has model metadata
179
+ * @summary Checks whether a given object is either an instance of the Model class or
180
+ * has model metadata attached to it. This function is essential for serialization and
181
+ * deserialization processes, as it helps identify model objects that need special handling.
182
+ * It safely handles potential errors during metadata retrieval.
183
+ *
184
+ * @param {Record<string, any>} target - The object to check
185
+ * @return {boolean} True if the object is a model instance or has model metadata, false otherwise
186
+ *
187
+ * @example
188
+ * ```typescript
189
+ * // Check if an object is a model
190
+ * const user = new User({ name: "John" });
191
+ * const isUserModel = isModel(user); // true
192
+ *
193
+ * // Check a plain object
194
+ * const plainObject = { name: "John" };
195
+ * const isPlainObjectModel = isModel(plainObject); // false
196
+ * ```
197
+ */
198
+ static isModel(target: Record<string, any>): boolean;
199
+ /**
200
+ * @description Checks if a property of a model is itself a model or has a model type
201
+ * @summary Determines whether a specific property of a model instance is either a model instance
202
+ * or has a type that is registered as a model. This function is used for model serialization
203
+ * and deserialization to properly handle nested models.
204
+ * @template M extends {@link Model}
205
+ * @param {M} target - The model instance to check
206
+ * @param {string} attribute - The property name to check
207
+ * @return {boolean | string | undefined} Returns true if the property is a model instance,
208
+ * the model name if the property has a model type, or undefined if not a model
209
+ */
210
+ static isPropertyModel<M extends Model>(target: M, attribute: string): boolean | string | undefined;
211
+ /**
212
+ * @description Checks if a property of a model is itself a model or has a model type
213
+ * @summary Determines whether a specific property of a model instance is either a model instance
214
+ * or has a type that is registered as a model. This function is used for model serialization
215
+ * and deserialization to properly handle nested models.
216
+ * @template R the expected UI code according to each rendering engine
217
+ * @param {any[]} args - optional engine specific args
218
+ */
113
219
  render<R>(...args: any[]): R;
114
220
  }
115
221
  }
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbW9kZWwvbW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1vZGVsRXJyb3JEZWZpbml0aW9uIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0b3ItdmFsaWRhdGlvblwiO1xuaW1wb3J0IHtcbiAgQnVpbGRlclJlZ2lzdHJ5LFxuICBDb21wYXJhYmxlLFxuICBDb25zdHJ1Y3RvcixcbiAgSGFzaGFibGUsXG4gIE1vZGVsQXJnLFxuICBNb2RlbEJ1aWxkZXJGdW5jdGlvbixcbiAgTW9kZWxDb25zdHJ1Y3RvcixcbiAgU2VyaWFsaXphYmxlLFxuICBWYWxpZGF0YWJsZSxcbn0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0b3ItdmFsaWRhdGlvblwiO1xuaW1wb3J0IHsgUmVuZGVyYWJsZSB9IGZyb20gXCIuL1JlbmRlcmFibGVcIjtcblxuZGVjbGFyZSBtb2R1bGUgXCJAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb25cIiB7XG4gIC8vIEB0cy1leHBlY3QtZXJyb3IgaGFja3kgb3ZlcnJpZGVcbiAgZGVjbGFyZSBhYnN0cmFjdCBjbGFzcyBNb2RlbFxuICAgIGltcGxlbWVudHNcbiAgICAgIFZhbGlkYXRhYmxlLFxuICAgICAgU2VyaWFsaXphYmxlLFxuICAgICAgSGFzaGFibGUsXG4gICAgICBDb21wYXJhYmxlPE1vZGVsPixcbiAgICAgIFJlbmRlcmFibGVcbiAge1xuICAgIHByb3RlY3RlZCBjb25zdHJ1Y3Rvcihhcmc/OiBNb2RlbEFyZzxNb2RlbD4pO1xuXG4gICAgaGFzRXJyb3JzKC4uLmV4Y2x1c2lvbnM6IGFueVtdKTogTW9kZWxFcnJvckRlZmluaXRpb24gfCB1bmRlZmluZWQ7XG4gICAgaGFzRXJyb3JzKFxuICAgICAgcHJldmlvdXNWZXJzaW9uPzogTW9kZWwgfCBhbnksXG4gICAgICAuLi5leGNsdXNpb25zOiBhbnlbXVxuICAgICk6IE1vZGVsRXJyb3JEZWZpbml0aW9uIHwgdW5kZWZpbmVkO1xuXG4gICAgLyoqXG4gICAgICogQHN1bW1hcnkgQ29tcGFyZSBvYmplY3QgZXF1YWxpdHkgcmVjdXJzaXZlbHlcbiAgICAgKiBAcGFyYW0ge2FueX0gb2JqIG9iamVjdCB0byBjb21wYXJlIHRvXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtleGNlcHRpb25zXSBwcm9wZXJ0eSBuYW1lcyB0byBiZSBleGNsdWRlZCBmcm9tIHRoZSBjb21wYXJpc29uXG4gICAgICovXG4gICAgZXF1YWxzKG9iajogYW55LCAuLi5leGNlcHRpb25zOiBzdHJpbmdbXSk6IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogQHN1bW1hcnkgUmV0dXJucyB0aGUgc2VyaWFsaXplZCBtb2RlbCBhY2NvcmRpbmcgdG8gdGhlIGN1cnJlbnRseSBkZWZpbmVkIHtAbGluayBTZXJpYWxpemVyfVxuICAgICAqL1xuICAgIHNlcmlhbGl6ZSgpOiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogQHN1bW1hcnkgT3ZlcnJpZGUgdGhlIGltcGxlbWVudGF0aW9uIGZvciBqcydzICd0b1N0cmluZygpJyB3aGljaCBzdWNrcy4uLlxuICAgICAqIEBvdmVycmlkZVxuICAgICAqL1xuICAgIHRvU3RyaW5nKCk6IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBAc3VtbWFyeSBEZWZpbmVzIGEgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBmb3Igb2JqZWN0IGhhc2guIFJlbGllcyBvbiBhIHZlcnkgYmFzaWMgaW1wbGVtZW50YXRpb24gYmFzZWQgb24gSmF2YSdzIHN0cmluZyBoYXNoO1xuICAgICAqL1xuICAgIGhhc2goKTogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIEBzdW1tYXJ5IERlc2VyaWFsaXplcyBhIE1vZGVsXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHN0clxuICAgICAqXG4gICAgICogQHBhcmFtIGFyZ3NcbiAgICAgKiBAdGhyb3dzIHtFcnJvcn0gSWYgaXQgZmFpbHMgdG8gcGFyc2UgdGhlIHN0cmluZywgb3IgaWYgaXQgZmFpbHMgdG8gYnVpbGQgdGhlIG1vZGVsXG4gICAgICovXG4gICAgc3RhdGljIGRlc2VyaWFsaXplKHN0cjogc3RyaW5nKTogYW55O1xuICAgIC8qKlxuICAgICAqIEBzdW1tYXJ5IFJlcG9wdWxhdGVzIHRoZSBPYmplY3QgcHJvcGVydGllcyB3aXRoIHRoZSBvbmVzIGZyb20gdGhlIG5ldyBvYmplY3RcbiAgICAgKiBAZGVzY3JpcHRpb24gSXRlcmF0ZXMgYWxsIGNvbW1vbiBwcm9wZXJ0aWVzIG9mIG9iaiAoaWYgZXhpc3RpbmcpIGFuZCBzZWxmLCBhbmQgY29waWVzIHRoZW0gb250byBzZWxmXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge1R9IHNlbGZcbiAgICAgKiBAcGFyYW0ge1QgfCBSZWNvcmQ8c3RyaW5nLCBhbnk+fSBbb2JqXVxuICAgICAqXG4gICAgICovXG4gICAgc3RhdGljIGZyb21PYmplY3Q8VCBleHRlbmRzIE1vZGVsPihcbiAgICAgIHNlbGY6IFQsXG4gICAgICBvYmo/OiBUIHwgUmVjb3JkPHN0cmluZywgYW55PlxuICAgICk6IFQ7XG4gICAgLyoqXG4gICAgICogQHN1bW1hcnkgUmVwb3B1bGF0ZXMgdGhlIGluc3RhbmNlIHdpdGggdGhlIG9uZXMgZnJvbSB0aGUgbmV3IE1vZGVsIE9iamVjdFxuICAgICAqIEBkZXNjcmlwdGlvbiBJdGVyYXRlcyBhbGwgY29tbW9uIHByb3BlcnRpZXMgb2Ygb2JqIChpZiBleGlzdGluZykgYW5kIHNlbGYsIGFuZCBjb3BpZXMgdGhlbSBvbnRvIHNlbGYuXG4gICAgICogSXMgYXdhcmUgb2YgbmVzdGVkIE1vZGVsIE9iamVjdHMgYW5kIHJlYnVpbGRzIHRoZW0gYWxzby5cbiAgICAgKiBXaGVuIExpc3QgcHJvcGVydGllcyBhcmUgZGVjb3JhdGVkIHdpdGgge0BsaW5rIGxpc3R9LCB0aGV5IGxpc3QgaXRlbXMgd2lsbCBhbHNvIGJlIHJlYnVpbHRcbiAgICAgKlxuICAgICAqIEBwYXJhbSB7VH0gc2VsZlxuICAgICAqIEBwYXJhbSB7VCB8IFJlY29yZDxzdHJpbmcsIGFueT59IFtvYmpdXG4gICAgICpcbiAgICAgKi9cbiAgICBzdGF0aWMgZnJvbU1vZGVsPFQgZXh0ZW5kcyBNb2RlbD4oXG4gICAgICBzZWxmOiBULFxuICAgICAgb2JqPzogVCB8IFJlY29yZDxzdHJpbmcsIGFueT5cbiAgICApOiBUO1xuICAgIC8qKlxuICAgICAqIEBzdW1tYXJ5IFNldHMgdGhlIEdsb2JhbCB7QGxpbmsgTW9kZWxCdWlsZGVyRnVuY3Rpb259XG4gICAgICogQHBhcmFtIHtNb2RlbEJ1aWxkZXJGdW5jdGlvbn0gW2J1aWxkZXJdXG4gICAgICovXG4gICAgc3RhdGljIHNldEJ1aWxkZXIoYnVpbGRlcj86IE1vZGVsQnVpbGRlckZ1bmN0aW9uKTogdm9pZDtcbiAgICAvKipcbiAgICAgKiBAc3VtbWFyeSBSZXRyaWV2ZXMgdGhlIGN1cnJlbnQgZ2xvYmFsIHtAbGluayBNb2RlbEJ1aWxkZXJGdW5jdGlvbn1cbiAgICAgKi9cbiAgICBzdGF0aWMgZ2V0QnVpbGRlcigpOiBNb2RlbEJ1aWxkZXJGdW5jdGlvbiB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBjdXJyZW50IHtAbGluayBNb2RlbFJlZ2lzdHJ5TWFuYWdlcn1cbiAgICAgKlxuICAgICAqIEByZXR1cm4gTW9kZWxSZWdpc3RyeSwgZGVmYXVsdHMgdG8ge0BsaW5rIE1vZGVsUmVnaXN0cnlNYW5hZ2VyfVxuICAgICAqL1xuICAgIHByaXZhdGUgc3RhdGljIGdldFJlZ2lzdHJ5O1xuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGN1cnJlbnQgYWN0aW5nTW9kZWxSZWdpc3RyeVxuICAgICAqXG4gICAgICogQHBhcmFtIHtCdWlsZGVyUmVnaXN0cnl9IG1vZGVsUmVnaXN0cnkgdGhlIG5ldyBpbXBsZW1lbnRhdGlvbiBvZiBSZWdpc3RyeVxuICAgICAqL1xuICAgIHN0YXRpYyBzZXRSZWdpc3RyeShtb2RlbFJlZ2lzdHJ5OiBCdWlsZGVyUmVnaXN0cnk8YW55Pik6IHZvaWQ7XG4gICAgLyoqXG4gICAgICogQHN1bW1hcnkgcmVnaXN0ZXIgbmV3IE1vZGVsc1xuICAgICAqIEBwYXJhbSB7YW55fSBjb25zdHJ1Y3RvclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbbmFtZV0gd2hlbiBub3QgZGVmaW5lZCwgdGhlIG5hbWUgb2YgdGhlIGNvbnN0cnVjdG9yIHdpbGwgYmUgdXNlZFxuICAgICAqXG4gICAgICogQHNlZSBNb2RlbFJlZ2lzdHJ5XG4gICAgICovXG4gICAgc3RhdGljIHJlZ2lzdGVyPFQgZXh0ZW5kcyBNb2RlbD4oXG4gICAgICBjb25zdHJ1Y3RvcjogTW9kZWxDb25zdHJ1Y3RvcjxUPixcbiAgICAgIG5hbWU/OiBzdHJpbmdcbiAgICApOiB2b2lkO1xuICAgIC8qKlxuICAgICAqIEBzdW1tYXJ5IEdldHMgYSByZWdpc3RlcmVkIE1vZGVsIHtAbGluayBNb2RlbENvbnN0cnVjdG9yfVxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lXG4gICAgICpcbiAgICAgKiBAc2VlIE1vZGVsUmVnaXN0cnlcbiAgICAgKi9cbiAgICBzdGF0aWMgZ2V0PFQgZXh0ZW5kcyBNb2RlbD4obmFtZTogc3RyaW5nKTogTW9kZWxDb25zdHJ1Y3RvcjxUPiB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsIGFueT59IG9ialxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbY2xhenpdIHdoZW4gcHJvdmlkZWQsIGl0IHdpbGwgYXR0ZW1wdCB0byBmaW5kIHRoZSBtYXRjaGluZyBjb25zdHJ1Y3RvclxuICAgICAqXG4gICAgICogQHRocm93cyBFcnJvciBJZiBjbGF6eiBpcyBub3QgZm91bmQsIG9yIG9iaiBpcyBub3QgYSB7QGxpbmsgTW9kZWx9IG1lYW5pbmcgaXQgaGFzIG5vIHtAbGluayBNb2RlbEtleXMuQU5DSE9SfSBwcm9wZXJ0eVxuICAgICAqXG4gICAgICogQHNlZSBNb2RlbFJlZ2lzdHJ5XG4gICAgICovXG4gICAgc3RhdGljIGJ1aWxkPFQgZXh0ZW5kcyBNb2RlbD4ob2JqPzogUmVjb3JkPHN0cmluZywgYW55PiwgY2xheno/OiBzdHJpbmcpOiBUO1xuICAgIHN0YXRpYyBnZXRNZXRhZGF0YTxWIGV4dGVuZHMgTW9kZWw+KG1vZGVsOiBWKTogYW55O1xuICAgIHN0YXRpYyBnZXRBdHRyaWJ1dGVzPFYgZXh0ZW5kcyBNb2RlbD4obW9kZWw6IENvbnN0cnVjdG9yPFY+IHwgVik6IHN0cmluZ1tdO1xuICAgIHN0YXRpYyBlcXVhbHM8ViBleHRlbmRzIE1vZGVsPihcbiAgICAgIG9iajE6IFYsXG4gICAgICBvYmoyOiBWLFxuICAgICAgLi4uZXhjZXB0aW9uczogYW55W11cbiAgICApOiBib29sZWFuO1xuICAgIHN0YXRpYyBoYXNFcnJvcnM8ViBleHRlbmRzIE1vZGVsPihcbiAgICAgIG1vZGVsOiBWLFxuICAgICAgLi4uZXhjZXB0aW9uczogYW55W11cbiAgICApOiBNb2RlbEVycm9yRGVmaW5pdGlvbiB8IHVuZGVmaW5lZDtcbiAgICBzdGF0aWMgc2VyaWFsaXplPFYgZXh0ZW5kcyBNb2RlbD4obW9kZWw6IFYpOiBhbnk7XG4gICAgc3RhdGljIGhhc2g8ViBleHRlbmRzIE1vZGVsPihtb2RlbDogVik6IGFueTtcbiAgICAvKipcbiAgICAgKiBAc3VtbWFyeSBCdWlsZHMgdGhlIGtleSB0byBzdG9yZSBhcyBNZXRhZGF0YSB1bmRlciBSZWZsZWN0aW9uc1xuICAgICAqIEBkZXNjcmlwdGlvbiBjb25jYXRlbmF0ZXMge0BsaW5rIE1vZGVsS2V5cyNSRUZMRUNUfSB3aXRoIHRoZSBwcm92aWRlZCBrZXlcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gc3RyXG4gICAgICovXG4gICAgc3RhdGljIGtleShzdHI6IHN0cmluZyk6IHN0cmluZztcbiAgICByZW5kZXI8Uj4oLi4uYXJnczogYW55W10pOiBSO1xuICB9XG59XG4iXX0=
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbW9kZWwvbW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1vZGVsRXJyb3JEZWZpbml0aW9uIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0b3ItdmFsaWRhdGlvblwiO1xuaW1wb3J0IHtcbiAgQnVpbGRlclJlZ2lzdHJ5LFxuICBDb21wYXJhYmxlLFxuICBDb25zdHJ1Y3RvcixcbiAgSGFzaGFibGUsXG4gIE1vZGVsQXJnLFxuICBNb2RlbEJ1aWxkZXJGdW5jdGlvbixcbiAgTW9kZWxDb25zdHJ1Y3RvcixcbiAgU2VyaWFsaXphYmxlLFxuICBWYWxpZGF0YWJsZSxcbn0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0b3ItdmFsaWRhdGlvblwiO1xuaW1wb3J0IHsgUmVuZGVyYWJsZSB9IGZyb20gXCIuL1JlbmRlcmFibGVcIjtcblxuZGVjbGFyZSBtb2R1bGUgXCJAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb25cIiB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbiAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICBkZWNsYXJlIGFic3RyYWN0IGNsYXNzIE1vZGVsXG4gICAgaW1wbGVtZW50c1xuICAgICAgVmFsaWRhdGFibGUsXG4gICAgICBTZXJpYWxpemFibGUsXG4gICAgICBIYXNoYWJsZSxcbiAgICAgIENvbXBhcmFibGU8TW9kZWw+LFxuICAgICAgUmVuZGVyYWJsZVxuICB7XG4gICAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKGFyZz86IE1vZGVsQXJnPE1vZGVsPik7XG5cbiAgICBoYXNFcnJvcnMoLi4uZXhjbHVzaW9uczogYW55W10pOiBNb2RlbEVycm9yRGVmaW5pdGlvbiB8IHVuZGVmaW5lZDtcbiAgICBoYXNFcnJvcnMoXG4gICAgICBwcmV2aW91c1ZlcnNpb24/OiBNb2RlbCB8IGFueSxcbiAgICAgIC4uLmV4Y2x1c2lvbnM6IGFueVtdXG4gICAgKTogTW9kZWxFcnJvckRlZmluaXRpb24gfCB1bmRlZmluZWQ7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gQ29tcGFyZXMgdGhpcyBtb2RlbCB3aXRoIGFub3RoZXIgb2JqZWN0IGZvciBlcXVhbGl0eVxuICAgICAqIEBzdW1tYXJ5IENvbXBhcmUgb2JqZWN0IGVxdWFsaXR5IHJlY3Vyc2l2ZWx5LCBjaGVja2luZyBhbGwgcHJvcGVydGllc1xuICAgICAqIEBwYXJhbSB7YW55fSBvYmogLSBPYmplY3QgdG8gY29tcGFyZSB0b1xuICAgICAqIEBwYXJhbSB7Li4uc3RyaW5nfSBleGNlcHRpb25zIC0gUHJvcGVydHkgbmFtZXMgdG8gYmUgZXhjbHVkZWQgZnJvbSB0aGUgY29tcGFyaXNvblxuICAgICAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgb2JqZWN0cyBhcmUgZXF1YWwsIGZhbHNlIG90aGVyd2lzZVxuICAgICAqL1xuICAgIGVxdWFscyhvYmo6IGFueSwgLi4uZXhjZXB0aW9uczogc3RyaW5nW10pOiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIENvbnZlcnRzIHRoZSBtb2RlbCB0byBhIHNlcmlhbGl6ZWQgc3RyaW5nIHJlcHJlc2VudGF0aW9uXG4gICAgICogQHN1bW1hcnkgUmV0dXJucyB0aGUgc2VyaWFsaXplZCBtb2RlbCBhY2NvcmRpbmcgdG8gdGhlIGN1cnJlbnRseSBkZWZpbmVkIHtAbGluayBTZXJpYWxpemVyfVxuICAgICAqIEByZXR1cm4ge3N0cmluZ30gU2VyaWFsaXplZCByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWxcbiAgICAgKi9cbiAgICBzZXJpYWxpemUoKTogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFByb3ZpZGVzIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbFxuICAgICAqIEBzdW1tYXJ5IE92ZXJyaWRlIHRoZSBpbXBsZW1lbnRhdGlvbiBmb3IgSmF2YVNjcmlwdCdzIGRlZmF1bHQgdG9TdHJpbmcoKSBtZXRob2RcbiAgICAgKiBAcmV0dXJuIHtzdHJpbmd9IFN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWxcbiAgICAgKiBAb3ZlcnJpZGVcbiAgICAgKi9cbiAgICB0b1N0cmluZygpOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gR2VuZXJhdGVzIGEgaGFzaCBjb2RlIGZvciB0aGUgbW9kZWxcbiAgICAgKiBAc3VtbWFyeSBEZWZpbmVzIGEgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBmb3Igb2JqZWN0IGhhc2ggYmFzZWQgb24gSmF2YSdzIHN0cmluZyBoYXNoIGFsZ29yaXRobVxuICAgICAqIEByZXR1cm4ge3N0cmluZ30gSGFzaCBjb2RlIGZvciB0aGUgbW9kZWxcbiAgICAgKi9cbiAgICBoYXNoKCk6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBDb252ZXJ0cyBhIHNlcmlhbGl6ZWQgc3RyaW5nIGJhY2sgdG8gYSBtb2RlbCBpbnN0YW5jZVxuICAgICAqIEBzdW1tYXJ5IERlc2VyaWFsaXplcyBhIE1vZGVsIGZyb20gaXRzIHN0cmluZyByZXByZXNlbnRhdGlvblxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzdHIgLSBUaGUgc2VyaWFsaXplZCBzdHJpbmcgdG8gZGVzZXJpYWxpemVcbiAgICAgKiBAcmV0dXJuIHthbnl9IFRoZSBkZXNlcmlhbGl6ZWQgbW9kZWwgaW5zdGFuY2VcbiAgICAgKiBAdGhyb3dzIHtFcnJvcn0gSWYgaXQgZmFpbHMgdG8gcGFyc2UgdGhlIHN0cmluZywgb3IgaWYgaXQgZmFpbHMgdG8gYnVpbGQgdGhlIG1vZGVsXG4gICAgICovXG4gICAgc3RhdGljIGRlc2VyaWFsaXplKHN0cjogc3RyaW5nKTogYW55O1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEl0ZXJhdGVzIGFsbCBjb21tb24gcHJvcGVydGllcyBvZiBvYmogKGlmIGV4aXN0aW5nKSBhbmQgc2VsZiwgYW5kIGNvcGllcyB0aGVtIG9udG8gc2VsZlxuICAgICAqIEBzdW1tYXJ5IFJlcG9wdWxhdGVzIHRoZSBPYmplY3QgcHJvcGVydGllcyB3aXRoIHRoZSBvbmVzIGZyb20gdGhlIG5ldyBvYmplY3RcbiAgICAgKiBAdGVtcGxhdGUgVCAtIFR5cGUgZXh0ZW5kaW5nIE1vZGVsXG4gICAgICogQHBhcmFtIHtUfSBzZWxmIC0gVGhlIHRhcmdldCBtb2RlbCBpbnN0YW5jZSB0byB1cGRhdGVcbiAgICAgKiBAcGFyYW0ge1R8UmVjb3JkPHN0cmluZywgYW55Pn0gW29ial0gLSBUaGUgc291cmNlIG9iamVjdCB0byBjb3B5IHByb3BlcnRpZXMgZnJvbVxuICAgICAqIEByZXR1cm4ge1R9IFRoZSB1cGRhdGVkIG1vZGVsIGluc3RhbmNlXG4gICAgICovXG4gICAgc3RhdGljIGZyb21PYmplY3Q8VCBleHRlbmRzIE1vZGVsPihcbiAgICAgIHNlbGY6IFQsXG4gICAgICBvYmo/OiBUIHwgUmVjb3JkPHN0cmluZywgYW55PlxuICAgICk6IFQ7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gSXRlcmF0ZXMgYWxsIGNvbW1vbiBwcm9wZXJ0aWVzIG9mIG9iaiAoaWYgZXhpc3RpbmcpIGFuZCBzZWxmLCBhbmQgY29waWVzIHRoZW0gb250byBzZWxmLiBJcyBhd2FyZSBvZiBuZXN0ZWQgTW9kZWwgT2JqZWN0cyBhbmQgcmVidWlsZHMgdGhlbSBhbHNvLiBXaGVuIExpc3QgcHJvcGVydGllcyBhcmUgZGVjb3JhdGVkIHdpdGgge0BsaW5rIGxpc3R9LCB0aGUgbGlzdCBpdGVtcyB3aWxsIGFsc28gYmUgcmVidWlsdFxuICAgICAqIEBzdW1tYXJ5IFJlcG9wdWxhdGVzIHRoZSBpbnN0YW5jZSB3aXRoIHByb3BlcnRpZXMgZnJvbSB0aGUgbmV3IE1vZGVsIE9iamVjdCwgaGFuZGxpbmcgbmVzdGVkIG1vZGVsc1xuICAgICAqIEB0ZW1wbGF0ZSBUIC0gVHlwZSBleHRlbmRpbmcgTW9kZWxcbiAgICAgKiBAcGFyYW0ge1R9IHNlbGYgLSBUaGUgdGFyZ2V0IG1vZGVsIGluc3RhbmNlIHRvIHVwZGF0ZVxuICAgICAqIEBwYXJhbSB7VHxSZWNvcmQ8c3RyaW5nLCBhbnk+fSBbb2JqXSAtIFRoZSBzb3VyY2UgbW9kZWwgb3Igb2JqZWN0IHRvIGNvcHkgcHJvcGVydGllcyBmcm9tXG4gICAgICogQHJldHVybiB7VH0gVGhlIHVwZGF0ZWQgbW9kZWwgaW5zdGFuY2VcbiAgICAgKi9cbiAgICBzdGF0aWMgZnJvbU1vZGVsPFQgZXh0ZW5kcyBNb2RlbD4oXG4gICAgICBzZWxmOiBULFxuICAgICAgb2JqPzogVCB8IFJlY29yZDxzdHJpbmcsIGFueT5cbiAgICApOiBUO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIENvbmZpZ3VyZXMgdGhlIGdsb2JhbCBtb2RlbCBidWlsZGVyIGZ1bmN0aW9uIHVzZWQgZm9yIGNyZWF0aW5nIG1vZGVsIGluc3RhbmNlc1xuICAgICAqIEBzdW1tYXJ5IFNldHMgdGhlIEdsb2JhbCB7QGxpbmsgTW9kZWxCdWlsZGVyRnVuY3Rpb259IHVzZWQgZm9yIG1vZGVsIGNvbnN0cnVjdGlvblxuICAgICAqIEBwYXJhbSB7TW9kZWxCdWlsZGVyRnVuY3Rpb259IFtidWlsZGVyXSAtIFRoZSBidWlsZGVyIGZ1bmN0aW9uIHRvIHNldCwgb3IgdW5kZWZpbmVkIHRvIHJlc2V0XG4gICAgICogQHJldHVybiB7dm9pZH1cbiAgICAgKi9cbiAgICBzdGF0aWMgc2V0QnVpbGRlcihidWlsZGVyPzogTW9kZWxCdWlsZGVyRnVuY3Rpb24pOiB2b2lkO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFJldHVybnMgdGhlIGN1cnJlbnRseSBjb25maWd1cmVkIGdsb2JhbCBtb2RlbCBidWlsZGVyIGZ1bmN0aW9uXG4gICAgICogQHN1bW1hcnkgUmV0cmlldmVzIHRoZSBjdXJyZW50IGdsb2JhbCB7QGxpbmsgTW9kZWxCdWlsZGVyRnVuY3Rpb259IHVzZWQgZm9yIG1vZGVsIGNvbnN0cnVjdGlvblxuICAgICAqIEByZXR1cm4ge01vZGVsQnVpbGRlckZ1bmN0aW9ufHVuZGVmaW5lZH0gVGhlIGN1cnJlbnQgYnVpbGRlciBmdW5jdGlvbiBvciB1bmRlZmluZWQgaWYgbm90IHNldFxuICAgICAqL1xuICAgIHN0YXRpYyBnZXRCdWlsZGVyKCk6IE1vZGVsQnVpbGRlckZ1bmN0aW9uIHwgdW5kZWZpbmVkO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFJldHJpZXZlcyB0aGUgY3VycmVudCBtb2RlbCByZWdpc3RyeSBpbnN0YW5jZVxuICAgICAqIEBzdW1tYXJ5IFJldHVybnMgdGhlIGN1cnJlbnQge0BsaW5rIE1vZGVsUmVnaXN0cnlNYW5hZ2VyfSB1c2VkIGZvciBtb2RlbCByZWdpc3RyYXRpb25cbiAgICAgKiBAcmV0dXJuIHtCdWlsZGVyUmVnaXN0cnk8YW55Pn0gTW9kZWxSZWdpc3RyeSBpbnN0YW5jZSwgZGVmYXVsdHMgdG8ge0BsaW5rIE1vZGVsUmVnaXN0cnlNYW5hZ2VyfVxuICAgICAqIEBwcml2YXRlXG4gICAgICovXG4gICAgcHJpdmF0ZSBzdGF0aWMgZ2V0UmVnaXN0cnk7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gU2V0cyB0aGUgbW9kZWwgcmVnaXN0cnkgdG8gYmUgdXNlZCBmb3IgbW9kZWwgcmVnaXN0cmF0aW9uIGFuZCByZXRyaWV2YWxcbiAgICAgKiBAc3VtbWFyeSBDb25maWd1cmVzIHRoZSBjdXJyZW50IG1vZGVsIHJlZ2lzdHJ5IGltcGxlbWVudGF0aW9uXG4gICAgICogQHBhcmFtIHtCdWlsZGVyUmVnaXN0cnk8YW55Pn0gbW9kZWxSZWdpc3RyeSAtIFRoZSBuZXcgaW1wbGVtZW50YXRpb24gb2YgUmVnaXN0cnkgdG8gdXNlXG4gICAgICogQHJldHVybiB7dm9pZH1cbiAgICAgKi9cbiAgICBzdGF0aWMgc2V0UmVnaXN0cnkobW9kZWxSZWdpc3RyeTogQnVpbGRlclJlZ2lzdHJ5PGFueT4pOiB2b2lkO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFJlZ2lzdGVycyBhIG1vZGVsIGNvbnN0cnVjdG9yIHdpdGggdGhlIG1vZGVsIHJlZ2lzdHJ5XG4gICAgICogQHN1bW1hcnkgUmVnaXN0ZXJzIG5ldyBNb2RlbHMgZm9yIGxhdGVyIHJldHJpZXZhbCBhbmQgaW5zdGFudGlhdGlvblxuICAgICAqIEB0ZW1wbGF0ZSBUIC0gVHlwZSBleHRlbmRpbmcgTW9kZWxcbiAgICAgKiBAcGFyYW0ge01vZGVsQ29uc3RydWN0b3I8VD59IGNvbnN0cnVjdG9yIC0gVGhlIG1vZGVsIGNvbnN0cnVjdG9yIHRvIHJlZ2lzdGVyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtuYW1lXSAtIE9wdGlvbmFsIG5hbWUgZm9yIHJlZ2lzdHJhdGlvbiwgZGVmYXVsdHMgdG8gY29uc3RydWN0b3IgbmFtZVxuICAgICAqIEByZXR1cm4ge3ZvaWR9XG4gICAgICogQHNlZSBNb2RlbFJlZ2lzdHJ5XG4gICAgICovXG4gICAgc3RhdGljIHJlZ2lzdGVyPFQgZXh0ZW5kcyBNb2RlbD4oXG4gICAgICBjb25zdHJ1Y3RvcjogTW9kZWxDb25zdHJ1Y3RvcjxUPixcbiAgICAgIG5hbWU/OiBzdHJpbmdcbiAgICApOiB2b2lkO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFJldHJpZXZlcyBhIHByZXZpb3VzbHkgcmVnaXN0ZXJlZCBtb2RlbCBjb25zdHJ1Y3RvciBieSBuYW1lXG4gICAgICogQHN1bW1hcnkgR2V0cyBhIHJlZ2lzdGVyZWQgTW9kZWwge0BsaW5rIE1vZGVsQ29uc3RydWN0b3J9IGZyb20gdGhlIHJlZ2lzdHJ5XG4gICAgICogQHRlbXBsYXRlIFQgLSBUeXBlIGV4dGVuZGluZyBNb2RlbFxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIC0gVGhlIG5hbWUgb2YgdGhlIG1vZGVsIHRvIHJldHJpZXZlXG4gICAgICogQHJldHVybiB7TW9kZWxDb25zdHJ1Y3RvcjxUPnx1bmRlZmluZWR9IFRoZSBtb2RlbCBjb25zdHJ1Y3RvciBvciB1bmRlZmluZWQgaWYgbm90IGZvdW5kXG4gICAgICogQHNlZSBNb2RlbFJlZ2lzdHJ5XG4gICAgICovXG4gICAgc3RhdGljIGdldDxUIGV4dGVuZHMgTW9kZWw+KG5hbWU6IHN0cmluZyk6IE1vZGVsQ29uc3RydWN0b3I8VD4gfCB1bmRlZmluZWQ7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gQ3JlYXRlcyBhIG5ldyBtb2RlbCBpbnN0YW5jZSBmcm9tIGEgcGxhaW4gb2JqZWN0XG4gICAgICogQHN1bW1hcnkgQnVpbGRzIGEgbW9kZWwgaW5zdGFuY2UgdXNpbmcgdGhlIHJlZ2lzdGVyZWQgY29uc3RydWN0b3JcbiAgICAgKiBAdGVtcGxhdGUgVCAtIFR5cGUgZXh0ZW5kaW5nIE1vZGVsXG4gICAgICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCBhbnk+fSBbb2JqXSAtIFRoZSBzb3VyY2Ugb2JqZWN0IHRvIGJ1aWxkIGZyb21cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW2NsYXp6XSAtIE9wdGlvbmFsIGNsYXNzIG5hbWUgdG8gZmluZCB0aGUgbWF0Y2hpbmcgY29uc3RydWN0b3JcbiAgICAgKiBAcmV0dXJuIHtUfSBUaGUgYnVpbHQgbW9kZWwgaW5zdGFuY2VcbiAgICAgKiBAdGhyb3dzIHtFcnJvcn0gSWYgY2xhenogaXMgbm90IGZvdW5kLCBvciBvYmogaXMgbm90IGEge0BsaW5rIE1vZGVsfSBtZWFuaW5nIGl0IGhhcyBubyB7QGxpbmsgTW9kZWxLZXlzLkFOQ0hPUn0gcHJvcGVydHlcbiAgICAgKiBAc2VlIE1vZGVsUmVnaXN0cnlcbiAgICAgKi9cbiAgICBzdGF0aWMgYnVpbGQ8VCBleHRlbmRzIE1vZGVsPihvYmo/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+LCBjbGF6ej86IHN0cmluZyk6IFQ7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gUmV0cmlldmVzIG1ldGFkYXRhIGFzc29jaWF0ZWQgd2l0aCBhIG1vZGVsIGluc3RhbmNlXG4gICAgICogQHN1bW1hcnkgR2V0cyB0aGUgbWV0YWRhdGEgYXR0YWNoZWQgdG8gYSBtb2RlbFxuICAgICAqIEB0ZW1wbGF0ZSBWIC0gVHlwZSBleHRlbmRpbmcgTW9kZWxcbiAgICAgKiBAcGFyYW0ge1Z9IG1vZGVsIC0gVGhlIG1vZGVsIGluc3RhbmNlIHRvIGdldCBtZXRhZGF0YSBmcm9tXG4gICAgICogQHJldHVybiB7YW55fSBUaGUgbW9kZWwncyBtZXRhZGF0YVxuICAgICAqL1xuICAgIHN0YXRpYyBnZXRNZXRhZGF0YTxWIGV4dGVuZHMgTW9kZWw+KG1vZGVsOiBWKTogYW55O1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFJldHJpZXZlcyBhbGwgYXR0cmlidXRlIG5hbWVzIGRlZmluZWQgb24gYSBtb2RlbFxuICAgICAqIEBzdW1tYXJ5IEdldHMgdGhlIGxpc3Qgb2YgYXR0cmlidXRlcyBmb3IgYSBtb2RlbCBjbGFzcyBvciBpbnN0YW5jZVxuICAgICAqIEB0ZW1wbGF0ZSBWIC0gVHlwZSBleHRlbmRpbmcgTW9kZWxcbiAgICAgKiBAcGFyYW0geyhDb25zdHJ1Y3RvcjxWPnxWKX0gbW9kZWwgLSBUaGUgbW9kZWwgY29uc3RydWN0b3Igb3IgaW5zdGFuY2VcbiAgICAgKiBAcmV0dXJuIHtzdHJpbmdbXX0gQXJyYXkgb2YgYXR0cmlidXRlIG5hbWVzXG4gICAgICovXG4gICAgc3RhdGljIGdldEF0dHJpYnV0ZXM8ViBleHRlbmRzIE1vZGVsPihtb2RlbDogQ29uc3RydWN0b3I8Vj4gfCBWKTogc3RyaW5nW107XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gQ29tcGFyZXMgdHdvIG1vZGVsIGluc3RhbmNlcyBmb3IgZXF1YWxpdHlcbiAgICAgKiBAc3VtbWFyeSBTdGF0aWMgbWV0aG9kIHRvIGNoZWNrIGlmIHR3byBtb2RlbCBpbnN0YW5jZXMgYXJlIGVxdWFsXG4gICAgICogQHRlbXBsYXRlIE0gLSBUeXBlIGV4dGVuZGluZyBNb2RlbFxuICAgICAqIEBwYXJhbSB7TX0gb2JqMSAtIEZpcnN0IG1vZGVsIGluc3RhbmNlIHRvIGNvbXBhcmVcbiAgICAgKiBAcGFyYW0ge019IG9iajIgLSBTZWNvbmQgbW9kZWwgaW5zdGFuY2UgdG8gY29tcGFyZVxuICAgICAqIEBwYXJhbSB7YW55W119IGV4Y2VwdGlvbnMgLSBQcm9wZXJ0aWVzIHRvIGV4Y2x1ZGUgZnJvbSBjb21wYXJpc29uXG4gICAgICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiBtb2RlbHMgYXJlIGVxdWFsLCBmYWxzZSBvdGhlcndpc2VcbiAgICAgKi9cbiAgICBzdGF0aWMgZXF1YWxzPE0gZXh0ZW5kcyBNb2RlbD4oXG4gICAgICBvYmoxOiBNLFxuICAgICAgb2JqMjogTSxcbiAgICAgIC4uLmV4Y2VwdGlvbnM6IGFueVtdXG4gICAgKTogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBWYWxpZGF0ZXMgYSBtb2RlbCBhbmQgY2hlY2tzIGZvciBlcnJvcnNcbiAgICAgKiBAc3VtbWFyeSBTdGF0aWMgbWV0aG9kIHRvIHZhbGlkYXRlIGEgbW9kZWwgaW5zdGFuY2VcbiAgICAgKiBAdGVtcGxhdGUgTSAtIFR5cGUgZXh0ZW5kaW5nIE1vZGVsXG4gICAgICogQHBhcmFtIHtNfSBtb2RlbCAtIFRoZSBtb2RlbCBpbnN0YW5jZSB0byB2YWxpZGF0ZVxuICAgICAqIEBwYXJhbSB7c3RyaW5nW119IHByb3BzVG9JZ25vcmUgLSBQcm9wZXJ0aWVzIHRvIGV4Y2x1ZGUgZnJvbSB2YWxpZGF0aW9uXG4gICAgICogQHJldHVybiB7TW9kZWxFcnJvckRlZmluaXRpb258dW5kZWZpbmVkfSBFcnJvciBkZWZpbml0aW9uIGlmIHZhbGlkYXRpb24gZmFpbHMsIHVuZGVmaW5lZCBvdGhlcndpc2VcbiAgICAgKi9cbiAgICBzdGF0aWMgaGFzRXJyb3JzPE0gZXh0ZW5kcyBNb2RlbD4oXG4gICAgICBtb2RlbDogTSxcbiAgICAgIC4uLnByb3BzVG9JZ25vcmU6IHN0cmluZ1tdXG4gICAgKTogTW9kZWxFcnJvckRlZmluaXRpb24gfCB1bmRlZmluZWQ7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gU2VyaWFsaXplcyBhIG1vZGVsIGluc3RhbmNlIHRvIGEgc3RyaW5nXG4gICAgICogQHN1bW1hcnkgU3RhdGljIG1ldGhvZCB0byBjb252ZXJ0IGEgbW9kZWwgdG8gaXRzIHNlcmlhbGl6ZWQgZm9ybVxuICAgICAqIEB0ZW1wbGF0ZSBNIC0gVHlwZSBleHRlbmRpbmcgTW9kZWxcbiAgICAgKiBAcGFyYW0ge019IG1vZGVsIC0gVGhlIG1vZGVsIGluc3RhbmNlIHRvIHNlcmlhbGl6ZVxuICAgICAqIEByZXR1cm4ge3N0cmluZ30gVGhlIHNlcmlhbGl6ZWQgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsXG4gICAgICovXG4gICAgc3RhdGljIHNlcmlhbGl6ZTxNIGV4dGVuZHMgTW9kZWw+KG1vZGVsOiBNKTogYW55O1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEdlbmVyYXRlcyBhIGhhc2ggY29kZSBmb3IgYSBtb2RlbCBpbnN0YW5jZVxuICAgICAqIEBzdW1tYXJ5IFN0YXRpYyBtZXRob2QgdG8gY3JlYXRlIGEgaGFzaCBjb2RlIGZvciBhIG1vZGVsXG4gICAgICogQHRlbXBsYXRlIE0gLSBUeXBlIGV4dGVuZGluZyBNb2RlbFxuICAgICAqIEBwYXJhbSB7TX0gbW9kZWwgLSBUaGUgbW9kZWwgaW5zdGFuY2UgdG8gaGFzaFxuICAgICAqIEByZXR1cm4ge3N0cmluZ30gVGhlIGhhc2ggY29kZSBmb3IgdGhlIG1vZGVsXG4gICAgICovXG4gICAgc3RhdGljIGhhc2g8TSBleHRlbmRzIE1vZGVsPihtb2RlbDogTSk6IGFueTtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBCdWlsZHMgYSBtZXRhZGF0YSBrZXkgZm9yIHJlZmxlY3Rpb25cbiAgICAgKiBAc3VtbWFyeSBDb25jYXRlbmF0ZXMgdGhlIG1vZGVsIHJlZmxlY3Rpb24gcHJlZml4IHdpdGggdGhlIHByb3ZpZGVkIGtleSBzdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gc3RyIC0gVGhlIGtleSBzdHJpbmcgdG8gYXBwZW5kIHRvIHRoZSByZWZsZWN0aW9uIHByZWZpeFxuICAgICAqIEByZXR1cm4ge3N0cmluZ30gVGhlIGNvbXBsZXRlIG1ldGFkYXRhIGtleVxuICAgICAqL1xuICAgIHN0YXRpYyBrZXkoc3RyOiBzdHJpbmcpOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gRGV0ZXJtaW5lcyBpZiBhbiBvYmplY3QgaXMgYSBtb2RlbCBpbnN0YW5jZSBvciBoYXMgbW9kZWwgbWV0YWRhdGFcbiAgICAgKiBAc3VtbWFyeSBDaGVja3Mgd2hldGhlciBhIGdpdmVuIG9iamVjdCBpcyBlaXRoZXIgYW4gaW5zdGFuY2Ugb2YgdGhlIE1vZGVsIGNsYXNzIG9yXG4gICAgICogaGFzIG1vZGVsIG1ldGFkYXRhIGF0dGFjaGVkIHRvIGl0LiBUaGlzIGZ1bmN0aW9uIGlzIGVzc2VudGlhbCBmb3Igc2VyaWFsaXphdGlvbiBhbmRcbiAgICAgKiBkZXNlcmlhbGl6YXRpb24gcHJvY2Vzc2VzLCBhcyBpdCBoZWxwcyBpZGVudGlmeSBtb2RlbCBvYmplY3RzIHRoYXQgbmVlZCBzcGVjaWFsIGhhbmRsaW5nLlxuICAgICAqIEl0IHNhZmVseSBoYW5kbGVzIHBvdGVudGlhbCBlcnJvcnMgZHVyaW5nIG1ldGFkYXRhIHJldHJpZXZhbC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7UmVjb3JkPHN0cmluZywgYW55Pn0gdGFyZ2V0IC0gVGhlIG9iamVjdCB0byBjaGVja1xuICAgICAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgdGhlIG9iamVjdCBpcyBhIG1vZGVsIGluc3RhbmNlIG9yIGhhcyBtb2RlbCBtZXRhZGF0YSwgZmFsc2Ugb3RoZXJ3aXNlXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAvLyBDaGVjayBpZiBhbiBvYmplY3QgaXMgYSBtb2RlbFxuICAgICAqIGNvbnN0IHVzZXIgPSBuZXcgVXNlcih7IG5hbWU6IFwiSm9oblwiIH0pO1xuICAgICAqIGNvbnN0IGlzVXNlck1vZGVsID0gaXNNb2RlbCh1c2VyKTsgLy8gdHJ1ZVxuICAgICAqXG4gICAgICogLy8gQ2hlY2sgYSBwbGFpbiBvYmplY3RcbiAgICAgKiBjb25zdCBwbGFpbk9iamVjdCA9IHsgbmFtZTogXCJKb2huXCIgfTtcbiAgICAgKiBjb25zdCBpc1BsYWluT2JqZWN0TW9kZWwgPSBpc01vZGVsKHBsYWluT2JqZWN0KTsgLy8gZmFsc2VcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBzdGF0aWMgaXNNb2RlbCh0YXJnZXQ6IFJlY29yZDxzdHJpbmcsIGFueT4pOiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIENoZWNrcyBpZiBhIHByb3BlcnR5IG9mIGEgbW9kZWwgaXMgaXRzZWxmIGEgbW9kZWwgb3IgaGFzIGEgbW9kZWwgdHlwZVxuICAgICAqIEBzdW1tYXJ5IERldGVybWluZXMgd2hldGhlciBhIHNwZWNpZmljIHByb3BlcnR5IG9mIGEgbW9kZWwgaW5zdGFuY2UgaXMgZWl0aGVyIGEgbW9kZWwgaW5zdGFuY2VcbiAgICAgKiBvciBoYXMgYSB0eXBlIHRoYXQgaXMgcmVnaXN0ZXJlZCBhcyBhIG1vZGVsLiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgZm9yIG1vZGVsIHNlcmlhbGl6YXRpb25cbiAgICAgKiBhbmQgZGVzZXJpYWxpemF0aW9uIHRvIHByb3Blcmx5IGhhbmRsZSBuZXN0ZWQgbW9kZWxzLlxuICAgICAqIEB0ZW1wbGF0ZSBNIGV4dGVuZHMge0BsaW5rIE1vZGVsfVxuICAgICAqIEBwYXJhbSB7TX0gdGFyZ2V0IC0gVGhlIG1vZGVsIGluc3RhbmNlIHRvIGNoZWNrXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGF0dHJpYnV0ZSAtIFRoZSBwcm9wZXJ0eSBuYW1lIHRvIGNoZWNrXG4gICAgICogQHJldHVybiB7Ym9vbGVhbiB8IHN0cmluZyB8IHVuZGVmaW5lZH0gUmV0dXJucyB0cnVlIGlmIHRoZSBwcm9wZXJ0eSBpcyBhIG1vZGVsIGluc3RhbmNlLFxuICAgICAqIHRoZSBtb2RlbCBuYW1lIGlmIHRoZSBwcm9wZXJ0eSBoYXMgYSBtb2RlbCB0eXBlLCBvciB1bmRlZmluZWQgaWYgbm90IGEgbW9kZWxcbiAgICAgKi9cbiAgICBzdGF0aWMgaXNQcm9wZXJ0eU1vZGVsPE0gZXh0ZW5kcyBNb2RlbD4oXG4gICAgICB0YXJnZXQ6IE0sXG4gICAgICBhdHRyaWJ1dGU6IHN0cmluZ1xuICAgICk6IGJvb2xlYW4gfCBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gQ2hlY2tzIGlmIGEgcHJvcGVydHkgb2YgYSBtb2RlbCBpcyBpdHNlbGYgYSBtb2RlbCBvciBoYXMgYSBtb2RlbCB0eXBlXG4gICAgICogQHN1bW1hcnkgRGV0ZXJtaW5lcyB3aGV0aGVyIGEgc3BlY2lmaWMgcHJvcGVydHkgb2YgYSBtb2RlbCBpbnN0YW5jZSBpcyBlaXRoZXIgYSBtb2RlbCBpbnN0YW5jZVxuICAgICAqIG9yIGhhcyBhIHR5cGUgdGhhdCBpcyByZWdpc3RlcmVkIGFzIGEgbW9kZWwuIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCBmb3IgbW9kZWwgc2VyaWFsaXphdGlvblxuICAgICAqIGFuZCBkZXNlcmlhbGl6YXRpb24gdG8gcHJvcGVybHkgaGFuZGxlIG5lc3RlZCBtb2RlbHMuXG4gICAgICogQHRlbXBsYXRlIFIgdGhlIGV4cGVjdGVkIFVJIGNvZGUgYWNjb3JkaW5nIHRvIGVhY2ggcmVuZGVyaW5nIGVuZ2luZVxuICAgICAqIEBwYXJhbSB7YW55W119IGFyZ3MgLSBvcHRpb25hbCBlbmdpbmUgc3BlY2lmaWMgYXJnc1xuICAgICAqL1xuICAgIHJlbmRlcjxSPiguLi5hcmdzOiBhbnlbXSk6IFI7XG4gIH1cbn1cbiJdfQ==
@@ -1 +1,9 @@
1
+ /**
2
+ * @description Module that extends the Model prototype with rendering capabilities
3
+ * @summary Adds the render method to all Model instances from decorator-validation
4
+ * This module implements the Renderable interface for the Model class by adding a render method
5
+ * to its prototype. This allows any Model instance to be rendered using the RenderingEngine.
6
+ * @module model/overrides
7
+ * @memberOf module:ui-decorators/model
8
+ */
1
9
  export {};
@@ -1,6 +1,24 @@
1
+ /**
2
+ * @description Module that extends the Model prototype with rendering capabilities
3
+ * @summary Adds the render method to all Model instances from decorator-validation
4
+ * This module implements the Renderable interface for the Model class by adding a render method
5
+ * to its prototype. This allows any Model instance to be rendered using the RenderingEngine.
6
+ * @module model/overrides
7
+ * @memberOf module:ui-decorators/model
8
+ */
1
9
  import { Model } from "@decaf-ts/decorator-validation";
2
10
  import { RenderingEngine } from "../ui/Rendering";
11
+ /**
12
+ * @description Renders the model using the appropriate rendering engine
13
+ * @summary Delegates rendering to the RenderingEngine based on model metadata
14
+ * This method implements the render method from the Renderable interface for all Model instances.
15
+ * It uses the RenderingEngine to determine how to render the model based on its metadata.
16
+ *
17
+ * @template M Type of the model being rendered
18
+ * @param {any[]} args Additional arguments to pass to the rendering engine
19
+ * @return {any} The rendered output in the format determined by the rendering engine
20
+ */
3
21
  Model.prototype.render = function (...args) {
4
22
  return RenderingEngine.render(this, ...args);
5
23
  };
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcnJpZGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21vZGVsL292ZXJyaWRlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDdkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRWxELEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLFVBQW9DLEdBQUcsSUFBVztJQUN6RSxPQUFPLGVBQWUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7QUFDL0MsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTW9kZWwgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5pbXBvcnQgeyBSZW5kZXJpbmdFbmdpbmUgfSBmcm9tIFwiLi4vdWkvUmVuZGVyaW5nXCI7XG5cbk1vZGVsLnByb3RvdHlwZS5yZW5kZXIgPSBmdW5jdGlvbiA8TSBleHRlbmRzIE1vZGVsPih0aGlzOiBNLCAuLi5hcmdzOiBhbnlbXSkge1xuICByZXR1cm4gUmVuZGVyaW5nRW5naW5lLnJlbmRlcih0aGlzLCAuLi5hcmdzKTtcbn07XG4iXX0=
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcnJpZGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21vZGVsL292ZXJyaWRlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7OztHQU9HO0FBRUgsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVsRDs7Ozs7Ozs7O0dBU0c7QUFDSCxLQUFLLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxVQUFvQyxHQUFHLElBQVc7SUFDekUsT0FBTyxlQUFlLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO0FBQy9DLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGRlc2NyaXB0aW9uIE1vZHVsZSB0aGF0IGV4dGVuZHMgdGhlIE1vZGVsIHByb3RvdHlwZSB3aXRoIHJlbmRlcmluZyBjYXBhYmlsaXRpZXNcbiAqIEBzdW1tYXJ5IEFkZHMgdGhlIHJlbmRlciBtZXRob2QgdG8gYWxsIE1vZGVsIGluc3RhbmNlcyBmcm9tIGRlY29yYXRvci12YWxpZGF0aW9uXG4gKiBUaGlzIG1vZHVsZSBpbXBsZW1lbnRzIHRoZSBSZW5kZXJhYmxlIGludGVyZmFjZSBmb3IgdGhlIE1vZGVsIGNsYXNzIGJ5IGFkZGluZyBhIHJlbmRlciBtZXRob2RcbiAqIHRvIGl0cyBwcm90b3R5cGUuIFRoaXMgYWxsb3dzIGFueSBNb2RlbCBpbnN0YW5jZSB0byBiZSByZW5kZXJlZCB1c2luZyB0aGUgUmVuZGVyaW5nRW5naW5lLlxuICogQG1vZHVsZSBtb2RlbC9vdmVycmlkZXNcbiAqIEBtZW1iZXJPZiBtb2R1bGU6dWktZGVjb3JhdG9ycy9tb2RlbFxuICovXG5cbmltcG9ydCB7IE1vZGVsIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0b3ItdmFsaWRhdGlvblwiO1xuaW1wb3J0IHsgUmVuZGVyaW5nRW5naW5lIH0gZnJvbSBcIi4uL3VpL1JlbmRlcmluZ1wiO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBSZW5kZXJzIHRoZSBtb2RlbCB1c2luZyB0aGUgYXBwcm9wcmlhdGUgcmVuZGVyaW5nIGVuZ2luZVxuICogQHN1bW1hcnkgRGVsZWdhdGVzIHJlbmRlcmluZyB0byB0aGUgUmVuZGVyaW5nRW5naW5lIGJhc2VkIG9uIG1vZGVsIG1ldGFkYXRhXG4gKiBUaGlzIG1ldGhvZCBpbXBsZW1lbnRzIHRoZSByZW5kZXIgbWV0aG9kIGZyb20gdGhlIFJlbmRlcmFibGUgaW50ZXJmYWNlIGZvciBhbGwgTW9kZWwgaW5zdGFuY2VzLlxuICogSXQgdXNlcyB0aGUgUmVuZGVyaW5nRW5naW5lIHRvIGRldGVybWluZSBob3cgdG8gcmVuZGVyIHRoZSBtb2RlbCBiYXNlZCBvbiBpdHMgbWV0YWRhdGEuXG4gKlxuICogQHRlbXBsYXRlIE0gVHlwZSBvZiB0aGUgbW9kZWwgYmVpbmcgcmVuZGVyZWRcbiAqIEBwYXJhbSB7YW55W119IGFyZ3MgQWRkaXRpb25hbCBhcmd1bWVudHMgdG8gcGFzcyB0byB0aGUgcmVuZGVyaW5nIGVuZ2luZVxuICogQHJldHVybiB7YW55fSBUaGUgcmVuZGVyZWQgb3V0cHV0IGluIHRoZSBmb3JtYXQgZGV0ZXJtaW5lZCBieSB0aGUgcmVuZGVyaW5nIGVuZ2luZVxuICovXG5Nb2RlbC5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24gPE0gZXh0ZW5kcyBNb2RlbD4odGhpczogTSwgLi4uYXJnczogYW55W10pIHtcbiAgcmV0dXJuIFJlbmRlcmluZ0VuZ2luZS5yZW5kZXIodGhpcywgLi4uYXJncyk7XG59O1xuIl19