angular-odata 0.92.0 → 0.95.0

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 (196) hide show
  1. package/{esm2015/angular-odata.js → esm2020/angular-odata.mjs} +0 -0
  2. package/esm2020/lib/api.mjs +303 -0
  3. package/{esm2015/lib/cache/cache.js → esm2020/lib/cache/cache.mjs} +3 -3
  4. package/{esm2015/lib/cache/index.js → esm2020/lib/cache/index.mjs} +0 -0
  5. package/{esm2015/lib/cache/memory.js → esm2020/lib/cache/memory.mjs} +1 -1
  6. package/{esm2015/lib/cache/storage.js → esm2020/lib/cache/storage.mjs} +2 -2
  7. package/esm2020/lib/client.mjs +271 -0
  8. package/{esm2015/lib/constants.js → esm2020/lib/constants.mjs} +3 -1
  9. package/esm2020/lib/helper.mjs +268 -0
  10. package/{esm2015/lib/index.js → esm2020/lib/index.mjs} +0 -0
  11. package/esm2020/lib/models/collection.mjs +741 -0
  12. package/{esm2015/lib/models/index.js → esm2020/lib/models/index.mjs} +0 -0
  13. package/esm2020/lib/models/model.mjs +453 -0
  14. package/esm2020/lib/models/options.mjs +945 -0
  15. package/{esm2015/lib/module.js → esm2020/lib/module.mjs} +7 -7
  16. package/esm2020/lib/options.mjs +32 -0
  17. package/{esm2015/lib/resources/index.js → esm2020/lib/resources/index.mjs} +0 -0
  18. package/{esm2015/lib/resources/path/handlers.js → esm2020/lib/resources/path/handlers.mjs} +1 -1
  19. package/{esm2015/lib/resources/path/index.js → esm2020/lib/resources/path/index.mjs} +0 -0
  20. package/esm2020/lib/resources/path/segments.mjs +124 -0
  21. package/esm2020/lib/resources/query/builder.mjs +590 -0
  22. package/esm2020/lib/resources/query/expressions.mjs +207 -0
  23. package/esm2020/lib/resources/query/handlers.mjs +186 -0
  24. package/{esm2015/lib/resources/query/index.js → esm2020/lib/resources/query/index.mjs} +0 -0
  25. package/esm2020/lib/resources/query/options.mjs +103 -0
  26. package/esm2020/lib/resources/query/syntax.mjs +406 -0
  27. package/esm2020/lib/resources/request.mjs +167 -0
  28. package/esm2020/lib/resources/resource.mjs +326 -0
  29. package/esm2020/lib/resources/responses/annotations.mjs +119 -0
  30. package/{esm2015/lib/resources/responses/csdl/csdl-annotation.js → esm2020/lib/resources/responses/csdl/csdl-annotation.mjs} +0 -0
  31. package/{esm2015/lib/resources/responses/csdl/csdl-entity-container.js → esm2020/lib/resources/responses/csdl/csdl-entity-container.mjs} +0 -0
  32. package/{esm2015/lib/resources/responses/csdl/csdl-entity-set.js → esm2020/lib/resources/responses/csdl/csdl-entity-set.mjs} +0 -0
  33. package/{esm2015/lib/resources/responses/csdl/csdl-enum-type.js → esm2020/lib/resources/responses/csdl/csdl-enum-type.mjs} +0 -0
  34. package/{esm2015/lib/resources/responses/csdl/csdl-function-action.js → esm2020/lib/resources/responses/csdl/csdl-function-action.mjs} +0 -0
  35. package/{esm2015/lib/resources/responses/csdl/csdl-navigation-property-binding.js → esm2020/lib/resources/responses/csdl/csdl-navigation-property-binding.mjs} +0 -0
  36. package/{esm2015/lib/resources/responses/csdl/csdl-reference.js → esm2020/lib/resources/responses/csdl/csdl-reference.mjs} +0 -0
  37. package/{esm2015/lib/resources/responses/csdl/csdl-schema.js → esm2020/lib/resources/responses/csdl/csdl-schema.mjs} +0 -0
  38. package/{esm2015/lib/resources/responses/csdl/csdl-singleton.js → esm2020/lib/resources/responses/csdl/csdl-singleton.mjs} +0 -0
  39. package/{esm2015/lib/resources/responses/csdl/csdl-structural-property.js → esm2020/lib/resources/responses/csdl/csdl-structural-property.mjs} +0 -0
  40. package/{esm2015/lib/resources/responses/csdl/csdl-structured-type.js → esm2020/lib/resources/responses/csdl/csdl-structured-type.mjs} +0 -0
  41. package/{esm2015/lib/resources/responses/csdl/csdl-type-definition.js → esm2020/lib/resources/responses/csdl/csdl-type-definition.mjs} +0 -0
  42. package/{esm2015/lib/resources/responses/index.js → esm2020/lib/resources/responses/index.mjs} +0 -0
  43. package/esm2020/lib/resources/responses/metadata.mjs +547 -0
  44. package/{esm2015/lib/resources/responses/options.js → esm2020/lib/resources/responses/options.mjs} +0 -0
  45. package/{esm2015/lib/resources/responses/response.js → esm2020/lib/resources/responses/response.mjs} +0 -0
  46. package/{esm2015/lib/resources/responses/types.js → esm2020/lib/resources/responses/types.mjs} +0 -0
  47. package/esm2020/lib/resources/types/action.mjs +101 -0
  48. package/esm2020/lib/resources/types/batch.mjs +288 -0
  49. package/esm2020/lib/resources/types/count.mjs +27 -0
  50. package/esm2020/lib/resources/types/entity-set.mjs +94 -0
  51. package/esm2020/lib/resources/types/entity.mjs +106 -0
  52. package/esm2020/lib/resources/types/function.mjs +137 -0
  53. package/{esm2015/lib/resources/types/index.js → esm2020/lib/resources/types/index.mjs} +0 -0
  54. package/esm2020/lib/resources/types/media.mjs +41 -0
  55. package/esm2020/lib/resources/types/metadata.mjs +30 -0
  56. package/esm2020/lib/resources/types/navigation-property.mjs +226 -0
  57. package/esm2020/lib/resources/types/options.mjs +2 -0
  58. package/esm2020/lib/resources/types/property.mjs +183 -0
  59. package/esm2020/lib/resources/types/reference.mjs +85 -0
  60. package/esm2020/lib/resources/types/singleton.mjs +126 -0
  61. package/esm2020/lib/resources/types/value.mjs +41 -0
  62. package/esm2020/lib/schema/annotation.mjs +37 -0
  63. package/esm2020/lib/schema/callable.mjs +62 -0
  64. package/esm2020/lib/schema/element.mjs +51 -0
  65. package/esm2020/lib/schema/entity-container.mjs +9 -0
  66. package/esm2020/lib/schema/entity-set.mjs +9 -0
  67. package/esm2020/lib/schema/enum-type.mjs +71 -0
  68. package/{esm2015/lib/schema/index.js → esm2020/lib/schema/index.mjs} +0 -0
  69. package/esm2020/lib/schema/parsers/callable.mjs +113 -0
  70. package/{esm2015/lib/schema/parsers/edm.js → esm2020/lib/schema/parsers/edm.mjs} +2 -2
  71. package/esm2020/lib/schema/parsers/enum-type.mjs +107 -0
  72. package/{esm2015/lib/schema/parsers/index.js → esm2020/lib/schema/parsers/index.mjs} +0 -0
  73. package/esm2020/lib/schema/parsers/structured-type.mjs +412 -0
  74. package/esm2020/lib/schema/schema.mjs +61 -0
  75. package/esm2020/lib/schema/structured-type.mjs +198 -0
  76. package/esm2020/lib/services/base.mjs +29 -0
  77. package/esm2020/lib/services/entity-set.mjs +143 -0
  78. package/esm2020/lib/services/entity.mjs +12 -0
  79. package/{esm2015/lib/services/factory.js → esm2020/lib/services/factory.mjs} +3 -3
  80. package/{esm2015/lib/services/index.js → esm2020/lib/services/index.mjs} +0 -0
  81. package/{esm2015/lib/services/singleton.js → esm2020/lib/services/singleton.mjs} +1 -1
  82. package/{esm2015/lib/settings.js → esm2020/lib/settings.mjs} +1 -1
  83. package/{esm2015/lib/tokens.js → esm2020/lib/tokens.mjs} +0 -0
  84. package/esm2020/lib/types.mjs +37 -0
  85. package/{esm2015/lib/utils/arraybuffers.js → esm2020/lib/utils/arraybuffers.mjs} +0 -0
  86. package/{esm2015/lib/utils/dates.js → esm2020/lib/utils/dates.mjs} +0 -0
  87. package/{esm2015/lib/utils/durations.js → esm2020/lib/utils/durations.mjs} +0 -0
  88. package/{esm2015/lib/utils/enums.js → esm2020/lib/utils/enums.mjs} +0 -0
  89. package/{esm2015/lib/utils/http.js → esm2020/lib/utils/http.mjs} +0 -0
  90. package/{esm2015/lib/utils/index.js → esm2020/lib/utils/index.mjs} +0 -0
  91. package/{esm2015/lib/utils/objects.js → esm2020/lib/utils/objects.mjs} +0 -0
  92. package/esm2020/lib/utils/odata.mjs +22 -0
  93. package/{esm2015/lib/utils/strings.js → esm2020/lib/utils/strings.mjs} +0 -0
  94. package/{esm2015/lib/utils/types.js → esm2020/lib/utils/types.mjs} +0 -0
  95. package/{esm2015/lib/utils/urls.js → esm2020/lib/utils/urls.mjs} +0 -0
  96. package/{esm2015/public-api.js → esm2020/public-api.mjs} +0 -0
  97. package/fesm2015/{angular-odata.js → angular-odata.mjs} +849 -750
  98. package/fesm2015/angular-odata.mjs.map +1 -0
  99. package/fesm2020/angular-odata.mjs +10274 -0
  100. package/fesm2020/angular-odata.mjs.map +1 -0
  101. package/lib/api.d.ts +10 -10
  102. package/lib/cache/cache.d.ts +2 -2
  103. package/lib/cache/storage.d.ts +1 -1
  104. package/lib/client.d.ts +3 -3
  105. package/lib/constants.d.ts +1 -0
  106. package/lib/models/collection.d.ts +11 -19
  107. package/lib/models/model.d.ts +22 -18
  108. package/lib/models/options.d.ts +16 -21
  109. package/lib/module.d.ts +1 -1
  110. package/lib/options.d.ts +1 -0
  111. package/lib/resources/path/segments.d.ts +1 -1
  112. package/lib/resources/query/expressions.d.ts +37 -27
  113. package/lib/resources/query/handlers.d.ts +7 -11
  114. package/lib/resources/query/options.d.ts +2 -2
  115. package/lib/resources/query/syntax.d.ts +52 -54
  116. package/lib/resources/request.d.ts +1 -1
  117. package/lib/resources/resource.d.ts +25 -8
  118. package/lib/resources/types/action.d.ts +12 -19
  119. package/lib/resources/types/batch.d.ts +1 -3
  120. package/lib/resources/types/count.d.ts +5 -4
  121. package/lib/resources/types/entity-set.d.ts +11 -15
  122. package/lib/resources/types/entity.d.ts +12 -15
  123. package/lib/resources/types/function.d.ts +11 -18
  124. package/lib/resources/types/media.d.ts +6 -5
  125. package/lib/resources/types/metadata.d.ts +3 -5
  126. package/lib/resources/types/navigation-property.d.ts +15 -21
  127. package/lib/resources/types/property.d.ts +13 -19
  128. package/lib/resources/types/reference.d.ts +39 -6
  129. package/lib/resources/types/singleton.d.ts +12 -16
  130. package/lib/resources/types/value.d.ts +9 -5
  131. package/lib/schema/{base.d.ts → annotation.d.ts} +0 -0
  132. package/lib/schema/callable.d.ts +2 -18
  133. package/lib/schema/element.d.ts +39 -0
  134. package/lib/schema/entity-container.d.ts +2 -12
  135. package/lib/schema/entity-set.d.ts +2 -18
  136. package/lib/schema/enum-type.d.ts +2 -26
  137. package/lib/schema/parsers/enum-type.d.ts +4 -4
  138. package/lib/schema/parsers/structured-type.d.ts +4 -4
  139. package/lib/schema/schema.d.ts +2 -2
  140. package/lib/schema/structured-type.d.ts +8 -26
  141. package/lib/services/base.d.ts +2 -2
  142. package/lib/services/entity-set.d.ts +2 -2
  143. package/lib/services/entity.d.ts +1 -1
  144. package/lib/services/singleton.d.ts +2 -2
  145. package/lib/settings.d.ts +5 -5
  146. package/lib/types.d.ts +1 -0
  147. package/package.json +21 -8
  148. package/bundles/angular-odata.umd.js +0 -11861
  149. package/bundles/angular-odata.umd.js.map +0 -1
  150. package/esm2015/lib/api.js +0 -296
  151. package/esm2015/lib/client.js +0 -272
  152. package/esm2015/lib/helper.js +0 -268
  153. package/esm2015/lib/models/collection.js +0 -734
  154. package/esm2015/lib/models/model.js +0 -438
  155. package/esm2015/lib/models/options.js +0 -942
  156. package/esm2015/lib/options.js +0 -31
  157. package/esm2015/lib/resources/path/segments.js +0 -124
  158. package/esm2015/lib/resources/query/builder.js +0 -591
  159. package/esm2015/lib/resources/query/expressions.js +0 -194
  160. package/esm2015/lib/resources/query/handlers.js +0 -192
  161. package/esm2015/lib/resources/query/options.js +0 -103
  162. package/esm2015/lib/resources/query/syntax.js +0 -367
  163. package/esm2015/lib/resources/request.js +0 -168
  164. package/esm2015/lib/resources/resource.js +0 -243
  165. package/esm2015/lib/resources/responses/annotations.js +0 -121
  166. package/esm2015/lib/resources/responses/metadata.js +0 -548
  167. package/esm2015/lib/resources/types/action.js +0 -105
  168. package/esm2015/lib/resources/types/batch.js +0 -294
  169. package/esm2015/lib/resources/types/count.js +0 -33
  170. package/esm2015/lib/resources/types/entity-set.js +0 -101
  171. package/esm2015/lib/resources/types/entity.js +0 -137
  172. package/esm2015/lib/resources/types/function.js +0 -130
  173. package/esm2015/lib/resources/types/media.js +0 -47
  174. package/esm2015/lib/resources/types/metadata.js +0 -36
  175. package/esm2015/lib/resources/types/navigation-property.js +0 -205
  176. package/esm2015/lib/resources/types/options.js +0 -2
  177. package/esm2015/lib/resources/types/property.js +0 -151
  178. package/esm2015/lib/resources/types/reference.js +0 -74
  179. package/esm2015/lib/resources/types/singleton.js +0 -167
  180. package/esm2015/lib/resources/types/value.js +0 -35
  181. package/esm2015/lib/schema/base.js +0 -37
  182. package/esm2015/lib/schema/callable.js +0 -82
  183. package/esm2015/lib/schema/entity-container.js +0 -24
  184. package/esm2015/lib/schema/entity-set.js +0 -35
  185. package/esm2015/lib/schema/enum-type.js +0 -102
  186. package/esm2015/lib/schema/parsers/callable.js +0 -107
  187. package/esm2015/lib/schema/parsers/enum-type.js +0 -107
  188. package/esm2015/lib/schema/parsers/structured-type.js +0 -392
  189. package/esm2015/lib/schema/schema.js +0 -52
  190. package/esm2015/lib/schema/structured-type.js +0 -220
  191. package/esm2015/lib/services/base.js +0 -23
  192. package/esm2015/lib/services/entity-set.js +0 -146
  193. package/esm2015/lib/services/entity.js +0 -12
  194. package/esm2015/lib/types.js +0 -37
  195. package/esm2015/lib/utils/odata.js +0 -21
  196. package/fesm2015/angular-odata.js.map +0 -1
@@ -0,0 +1,198 @@
1
+ import { ODataSchemaElement } from './element';
2
+ import { ODataStructuredTypeParser, } from './parsers';
3
+ export class ODataStructuredType extends ODataSchemaElement {
4
+ constructor(config, schema) {
5
+ super(config, schema);
6
+ this.children = [];
7
+ this.base = config.base;
8
+ this.open = config.open || false;
9
+ this.parser = new ODataStructuredTypeParser(config, schema.namespace, schema.alias);
10
+ this.model = config.model;
11
+ this.collection = config.collection;
12
+ if (this.model !== undefined) {
13
+ const options = this.model.hasOwnProperty('options')
14
+ ? this.model.options
15
+ : { fields: {} };
16
+ this.model.buildMeta({ options, schema: this });
17
+ }
18
+ if (this.collection !== undefined) {
19
+ this.collection.model = this.model;
20
+ }
21
+ }
22
+ configure({ parserForType, findOptionsForType, }) {
23
+ if (this.base) {
24
+ const parent = this.api.findStructuredTypeForType(this.base);
25
+ parent.children.push(this);
26
+ this.parent = parent;
27
+ }
28
+ this.parser.configure({ parserForType, options: this.api.options });
29
+ if (this.model !== undefined && this.model.options !== null) {
30
+ this.model.meta.configure({
31
+ findOptionsForType,
32
+ options: this.api.options,
33
+ });
34
+ }
35
+ }
36
+ /**
37
+ * Returns a boolean indicating if the structured type is a sub type of the given type.
38
+ * @param type String representation of the type
39
+ * @returns True if the callable is type of the given type
40
+ */
41
+ isSubtypeOf(schema) {
42
+ return (super.isSubtypeOf(schema) ||
43
+ (this.parent !== undefined && this.parent.isSubtypeOf(schema)));
44
+ }
45
+ /**
46
+ * Returns a boolean indicating if the structured type has a simple key.
47
+ * @returns True if the structured type has a simple key
48
+ */
49
+ isSimpleKey() {
50
+ return this.keys().length === 1;
51
+ }
52
+ /**
53
+ * Returns a boolean indicating if the structured type has a compound key.
54
+ * @returns True if the structured type has a compound key.
55
+ */
56
+ isCompoundKey() {
57
+ return this.keys().length > 1;
58
+ }
59
+ /**
60
+ * Find the field parser for the given field name.
61
+ * @param name Name of the field
62
+ * @returns The field parser
63
+ */
64
+ findFieldByName(name) {
65
+ return this.fields({
66
+ include_parents: true,
67
+ include_navigation: true,
68
+ }).find((f) => f.name === name);
69
+ }
70
+ /**
71
+ * Find a parent schema of the structured type.
72
+ * @param predicate Function for evaluate the schemas in the hierarchy.
73
+ * @returns The schema that matches the predicate.
74
+ */
75
+ findParentSchema(predicate) {
76
+ if (predicate(this))
77
+ return this;
78
+ if (this.parent === undefined)
79
+ return undefined;
80
+ return this.parent.findParentSchema(predicate);
81
+ }
82
+ /**
83
+ * Find a parent schema of the structured type for the given field.
84
+ * @param field Field that belongs to the structured type
85
+ * @returns The schema of the field
86
+ */
87
+ findSchemaForField(field) {
88
+ return this.findParentSchema((p) => p
89
+ .fields({ include_parents: false, include_navigation: true })
90
+ .find((f) => f === field) !== undefined);
91
+ }
92
+ /**
93
+ * Returns all fields of the structured type.
94
+ * @param include_navigation Include navigation properties in the result.
95
+ * @param include_parents Include the parent types in the result.
96
+ * @returns All fields of the structured type.
97
+ */
98
+ fields({ include_navigation, include_parents, }) {
99
+ return [
100
+ ...(include_parents && this.parent !== undefined
101
+ ? this.parent.fields({ include_parents, include_navigation })
102
+ : []),
103
+ ...this.parser.fields.filter((field) => include_navigation || !field.navigation),
104
+ ];
105
+ }
106
+ /**
107
+ * Returns the keys of the structured type.
108
+ * @param include_parents Include the parent fields
109
+ * @returns The keys of the structured type
110
+ */
111
+ keys({ include_parents = true, } = {}) {
112
+ return [
113
+ ...(include_parents && this.parent !== undefined
114
+ ? this.parent.keys({ include_parents })
115
+ : []),
116
+ ...(this.parser.keys || []),
117
+ ];
118
+ }
119
+ /**
120
+ * Picks the fields from attributes.
121
+ * @param attrs
122
+ * @param include_parents Include the parent fields
123
+ * @param include_navigation Include the navigation fields
124
+ * @param include_etag Include the etag field
125
+ * @returns The picked fields
126
+ */
127
+ pick(attrs, { include_parents = true, include_navigation = false, include_etag = true, } = {}) {
128
+ const names = this.fields({ include_parents, include_navigation }).map((f) => f.name);
129
+ let values = Object.keys(attrs)
130
+ .filter((k) => names.indexOf(k) !== -1)
131
+ .reduce((acc, k) => Object.assign(acc, { [k]: attrs[k] }), {});
132
+ if (include_etag) {
133
+ const etag = this.api.options.helper.etag(attrs);
134
+ this.api.options.helper.etag(attrs, etag);
135
+ }
136
+ return values;
137
+ }
138
+ /**
139
+ * Deseialize the given value from the structured type.
140
+ * @param value Value to deserialize
141
+ * @param options Options for deserialization
142
+ * @returns Deserialized value
143
+ */
144
+ deserialize(value, options) {
145
+ return this.parser.deserialize(value, options);
146
+ }
147
+ /**
148
+ * Serialize the given value for the structured type.
149
+ * @param value Value to serialize
150
+ * @param options Options for serialization
151
+ * @returns Serialized value
152
+ */
153
+ serialize(value, options) {
154
+ return this.parser.serialize(value, options);
155
+ }
156
+ /**
157
+ * Encode the given value for the structured type.
158
+ * @param value Value to encode
159
+ * @param options Options for encoding
160
+ * @returns Encoded value
161
+ */
162
+ encode(value, options) {
163
+ return this.parser.encode(value, options);
164
+ }
165
+ /**
166
+ * Resolve the key of the structured type for the given value.
167
+ * @param attrs Attributes of the value
168
+ * @returns Resolved key
169
+ */
170
+ resolveKey(attrs) {
171
+ return this.parser.resolveKey(attrs);
172
+ }
173
+ /**
174
+ * Returns the defaults values for the structured type.
175
+ * @returns Default values for the structured type
176
+ */
177
+ defaults() {
178
+ return this.parser.defaults();
179
+ }
180
+ /**
181
+ * Convert the structured type to json schema
182
+ * @param options Options for json schema
183
+ * @returns Json Schema
184
+ */
185
+ toJsonSchema(options = {}) {
186
+ return this.parser.toJsonSchema(options);
187
+ }
188
+ /**
189
+ * Validate the given value against the structured type.
190
+ * @param attrs Attributes of the value
191
+ * @param method Method to use for the process validation
192
+ * @returns Object with the errors
193
+ */
194
+ validate(attrs, { method, navigation = false, } = {}) {
195
+ return this.parser.validate(attrs, { method, navigation });
196
+ }
197
+ }
198
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RydWN0dXJlZC10eXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1vZGF0YS9zcmMvbGliL3NjaGVtYS9zdHJ1Y3R1cmVkLXR5cGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQy9DLE9BQU8sRUFJTCx5QkFBeUIsR0FDMUIsTUFBTSxXQUFXLENBQUM7QUFHbkIsTUFBTSxPQUFPLG1CQUF1QixTQUFRLGtCQUFrQjtJQVM1RCxZQUFZLE1BQStCLEVBQUUsTUFBbUI7UUFDOUQsS0FBSyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztRQU54QixhQUFRLEdBQStCLEVBQUUsQ0FBQztRQU94QyxJQUFJLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUM7UUFDeEIsSUFBSSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQztRQUNqQyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUkseUJBQXlCLENBQ3pDLE1BQU0sRUFDTixNQUFNLENBQUMsU0FBUyxFQUNoQixNQUFNLENBQUMsS0FBSyxDQUNiLENBQUM7UUFDRixJQUFJLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxLQUEwQixDQUFDO1FBQy9DLElBQUksQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDLFVBQW9DLENBQUM7UUFDOUQsSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLFNBQVMsRUFBRTtZQUM1QixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUM7Z0JBQ2xELENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU87Z0JBQ3BCLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMs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T0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsUUFBUTtRQUNOLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFlBQVksQ0FBQyxVQUFnQyxFQUFFO1FBQzdDLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsUUFBUSxDQUNOLEtBQWlCLEVBQ2pCLEVBQ0UsTUFBTSxFQUNOLFVBQVUsR0FBRyxLQUFLLE1BSWhCLEVBQUU7UUFFTixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO0lBQzdELENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9EYXRhQ29sbGVjdGlvbiB9IGZyb20gJy4uL21vZGVscyc7XG5pbXBvcnQgeyBPRGF0YU1vZGVsIH0gZnJvbSAnLi4vbW9kZWxzL21vZGVsJztcbmltcG9ydCB7IE9wdGlvbnMsIFN0cnVjdHVyZWRUeXBlQ29uZmlnIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgT0RhdGFTY2hlbWFFbGVtZW50IH0gZnJvbSAnLi9lbGVtZW50JztcbmltcG9ydCB7XG4gIEpzb25TY2hlbWFPcHRpb25zLFxuICBPRGF0YUVudGl0eVR5cGVLZXksXG4gIE9EYXRhU3RydWN0dXJlZFR5cGVGaWVsZFBhcnNlcixcbiAgT0RhdGFTdHJ1Y3R1cmVkVHlwZVBhcnNlcixcbn0gZnJvbSAnLi9wYXJzZXJzJztcbmltcG9ydCB7IE9EYXRhU2NoZW1hIH0gZnJvbSAnLi9zY2hlbWEnO1xuXG5leHBvcnQgY2xhc3MgT0RhdGFTdHJ1Y3R1cmVkVHlwZTxUPiBleHRlbmRzIE9EYXRhU2NoZW1hRWxlbWVudCB7XG4gIGJhc2U/OiBzdHJpbmc7XG4gIG9wZW46IGJvb2xlYW47XG4gIHBhcmVudD86IE9EYXRhU3RydWN0dXJlZFR5cGU8YW55PjtcbiAgY2hpbGRyZW46IE9EYXRhU3RydWN0dXJlZFR5cGU8YW55PltdID0gW107XG4gIG1vZGVsPzogdHlwZW9mIE9EYXRhTW9kZWw7XG4gIGNvbGxlY3Rpb24/OiB0eXBlb2YgT0RhdGFDb2xsZWN0aW9uO1xuICBwYXJzZXI6IE9EYXRhU3RydWN0dXJlZFR5cGVQYXJzZXI8VD47XG5cbiAgY29uc3RydWN0b3IoY29uZmlnOiBTdHJ1Y3R1cmVkVHlwZUNvbmZpZzxUPiwgc2NoZW1hOiBPRGF0YVNjaGVtYSkge1xuICAgIHN1cGVyKGNvbmZpZywgc2NoZW1hKTtcbiAgICB0aGlzLmJhc2UgPSBjb25maWcuYmFzZTtcbiAgICB0aGlzLm9wZW4gPSBjb25maWcub3BlbiB8fCBmYWxzZTtcbiAgICB0aGlzLnBhcnNlciA9IG5ldyBPRGF0YVN0cnVjdHVyZWRUeXBlUGFyc2VyKFxuICAgICAgY29uZmlnLFxuICAgICAgc2NoZW1hLm5hbWVzcGFjZSxcbiAgICAgIHNjaGVtYS5hbGlhc1xuICAgICk7XG4gICAgdGhpcy5tb2RlbCA9IGNvbmZpZy5tb2RlbCBhcyB0eXBlb2YgT0RhdGFNb2RlbDtcbiAgICB0aGlzLmNvbGxlY3Rpb24gPSBjb25maWcuY29sbGVjdGlvbiBhcyB0eXBlb2YgT0RhdGFDb2xsZWN0aW9uO1xuICAgIGlmICh0aGlzLm1vZGVsICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLm1vZGVsLmhhc093blByb3BlcnR5KCdvcHRpb25zJylcbiAgICAgICAgPyB0aGlzLm1vZGVsLm9wdGlvbnNcbiAgICAgICAgOiB7IGZpZWxkczoge30gfTtcbiAgICAgIHRoaXMubW9kZWwuYnVpbGRNZXRhPFQ+KHsgb3B0aW9ucywgc2NoZW1hOiB0aGlzIH0pO1xuICAgIH1cbiAgICBpZiAodGhpcy5jb2xsZWN0aW9uICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuY29sbGVjdGlvbi5tb2RlbCA9IHRoaXMubW9kZWw7XG4gICAgfVxuICB9XG5cbiAgY29uZmlndXJlKHtcbiAgICBwYXJzZXJGb3JUeXBlLFxuICAgIGZpbmRPcHRpb25zRm9yVHlwZSxcbiAgfToge1xuICAgIHBhcnNlckZvclR5cGU6ICh0eXBlOiBzdHJpbmcpID0+IGFueTtcbiAgICBmaW5kT3B0aW9uc0ZvclR5cGU6ICh0eXBlOiBzdHJpbmcpID0+IGFueTtcbiAgfSkge1xuICAgIGlmICh0aGlzLmJhc2UpIHtcbiAgICAgIGNvbnN0IHBhcmVudCA9IHRoaXMuYXBpLmZpbmRTdHJ1Y3R1cmVkVHlwZUZvclR5cGUoXG4gICAgICAgIHRoaXMuYmFzZVxuICAgICAgKSBhcyBPRGF0YVN0cnVjdHVyZWRUeXBlPGFueT47XG4gICAgICBwYXJlbnQuY2hpbGRyZW4ucHVzaCh0aGlzKTtcbiAgICAgIHRoaXMucGFyZW50ID0gcGFyZW50O1xuICAgIH1cbiAgICB0aGlzLnBhcnNlci5jb25maWd1cmUoeyBwYXJzZXJGb3JUeXBlLCBvcHRpb25zOiB0aGlzLmFwaS5vcHRpb25zIH0pO1xuICAgIGlmICh0aGlzLm1vZGVsICE9PSB1bmRlZmluZWQgJiYgdGhpcy5tb2RlbC5vcHRpb25zICE9PSBudWxsKSB7XG4gICAgICB0aGlzLm1vZGVsLm1ldGEuY29uZmlndXJlKHtcbiAgICAgICAgZmluZE9wdGlvbnNGb3JUeXBlLFxuICAgICAgICBvcHRpb25zOiB0aGlzLmFwaS5vcHRpb25zLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBib29sZWFuIGluZGljYXRpbmcgaWYgdGhlIHN0cnVjdHVyZWQgdHlwZSBpcyBhIHN1YiB0eXBlIG9mIHRoZSBnaXZlbiB0eXBlLlxuICAgKiBAcGFyYW0gdHlwZSBTdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIHR5cGVcbiAgICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgY2FsbGFibGUgaXMgdHlwZSBvZiB0aGUgZ2l2ZW4gdHlwZVxuICAgKi9cbiAgb3ZlcnJpZGUgaXNTdWJ0eXBlT2Yoc2NoZW1hOiBPRGF0YVN0cnVjdHVyZWRUeXBlPGFueT4pOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgc3VwZXIuaXNTdWJ0eXBlT2Yoc2NoZW1hKSB8fFxuICAgICAgKHRoaXMucGFyZW50ICE9PSB1bmRlZmluZWQgJiYgdGhpcy5wYXJlbnQuaXNTdWJ0eXBlT2Yoc2NoZW1hKSlcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBib29sZWFuIGluZGljYXRpbmcgaWYgdGhlIHN0cnVjdHVyZWQgdHlwZSBoYXMgYSBzaW1wbGUga2V5LlxuICAgKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBzdHJ1Y3R1cmVkIHR5cGUgaGFzIGEgc2ltcGxlIGtleVxuICAgKi9cbiAgaXNTaW1wbGVLZXkoKSB7XG4gICAgcmV0dXJuIHRoaXMua2V5cygpLmxlbmd0aCA9PT0gMTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgYm9vbGVhbiBpbmRpY2F0aW5nIGlmIHRoZSBzdHJ1Y3R1cmVkIHR5cGUgaGFzIGEgY29tcG91bmQga2V5LlxuICAgKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBzdHJ1Y3R1cmVkIHR5cGUgaGFzIGEgY29tcG91bmQga2V5LlxuICAgKi9cbiAgaXNDb21wb3VuZEtleSgpIHtcbiAgICByZXR1cm4gdGhpcy5rZXlzKCkubGVuZ3RoID4gMTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGaW5kIHRoZSBmaWVsZCBwYXJzZXIgZm9yIHRoZSBnaXZlbiBmaWVsZCBuYW1lLlxuICAgKiBAcGFyYW0gbmFtZSBOYW1lIG9mIHRoZSBmaWVsZFxuICAgKiBAcmV0dXJucyBUaGUgZmllbGQgcGFyc2VyXG4gICAqL1xuICBmaW5kRmllbGRCeU5hbWU8Rj4obmFtZToga2V5b2YgVCkge1xuICAgIHJldHVybiB0aGlzLmZpZWxkcyh7XG4gICAgICBpbmNsdWRlX3BhcmVudHM6IHRydWUsXG4gICAgICBpbmNsdWRlX25hdmlnYXRpb246IHRydWUsXG4gICAgfSkuZmluZCgoZikgPT4gZi5uYW1lID09PSBuYW1lKSBhc1xuICAgICAgfCBPRGF0YVN0cnVjdHVyZWRUeXBlRmllbGRQYXJzZXI8Rj5cbiAgICAgIHwgdW5kZWZpbmVkO1xuICB9XG5cbiAgLyoqXG4gICAqIEZpbmQgYSBwYXJlbnQgc2NoZW1hIG9mIHRoZSBzdHJ1Y3R1cmVkIHR5cGUuXG4gICAqIEBwYXJhbSBwcmVkaWNhdGUgRnVuY3Rpb24gZm9yIGV2YWx1YXRlIHRoZSBzY2hlbWFzIGluIHRoZSBoaWVyYXJjaHkuXG4gICAqIEByZXR1cm5zIFRoZSBzY2hlbWEgdGhhdCBtYXRjaGVzIHRoZSBwcmVkaWNhdGUuXG4gICAqL1xuICBmaW5kUGFyZW50U2NoZW1hKFxuICAgIHByZWRpY2F0ZTogKHA6IE9EYXRhU3RydWN0dXJlZFR5cGU8YW55PikgPT4gYm9vbGVhblxuICApOiBPRGF0YVN0cnVjdHVyZWRUeXBlPGFueT4gfCB1bmRlZmluZWQge1xuICAgIGlmIChwcmVkaWNhdGUodGhpcykpIHJldHVybiB0aGlzIGFzIE9EYXRhU3RydWN0dXJlZFR5cGU8YW55PjtcbiAgICBpZiAodGhpcy5wYXJlbnQgPT09IHVuZGVmaW5lZCkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICByZXR1cm4gdGhpcy5wYXJlbnQuZmluZFBhcmVudFNjaGVtYShwcmVkaWNhdGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZpbmQgYSBwYXJlbnQgc2NoZW1hIG9mIHRoZSBzdHJ1Y3R1cmVkIHR5cGUgZm9yIHRoZSBnaXZlbiBmaWVsZC5cbiAgICogQHBhcmFtIGZpZWxkIEZpZWxkIHRoYXQgYmVsb25ncyB0byB0aGUgc3RydWN0dXJlZCB0eXBlXG4gICAqIEByZXR1cm5zIFRoZSBzY2hlbWEgb2YgdGhlIGZpZWxkXG4gICAqL1xuICBmaW5kU2NoZW1hRm9yRmllbGQ8RT4oZmllbGQ6IE9EYXRhU3RydWN0dXJlZFR5cGVGaWVsZFBhcnNlcjxhbnk+KSB7XG4gICAgcmV0dXJuIHRoaXMuZmluZFBhcmVudFNjaGVtYShcbiAgICAgIChwKSA9PlxuICAgICAgICBwXG4gICAgICAgICAgLmZpZWxkcyh7IGluY2x1ZGVfcGFyZW50czogZmFsc2UsIGluY2x1ZGVfbmF2aWdhdGlvbjogdHJ1ZSB9KVxuICAgICAgICAgIC5maW5kKChmKSA9PiBmID09PSBmaWVsZCkgIT09IHVuZGVmaW5lZFxuICAgICkgYXMgT0RhdGFTdHJ1Y3R1cmVkVHlwZTxFPjtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGFsbCBmaWVsZHMgb2YgdGhlIHN0cnVjdHVyZWQgdHlwZS5cbiAgICogQHBhcmFtIGluY2x1ZGVfbmF2aWdhdGlvbiBJbmNsdWRlIG5hdmlnYXRpb24gcHJvcGVydGllcyBpbiB0aGUgcmVzdWx0LlxuICAgKiBAcGFyYW0gaW5jbHVkZV9wYXJlbnRzIEluY2x1ZGUgdGhlIHBhcmVudCB0eXBlcyBpbiB0aGUgcmVzdWx0LlxuICAgKiBAcmV0dXJucyBBbGwgZmllbGRzIG9mIHRoZSBzdHJ1Y3R1cmVkIHR5cGUuXG4gICAqL1xuICBmaWVsZHMoe1xuICAgIGluY2x1ZGVfbmF2aWdhdGlvbixcbiAgICBpbmNsdWRlX3BhcmVudHMsXG4gIH06IHtcbiAgICBpbmNsdWRlX3BhcmVudHM6IGJvb2xlYW47XG4gICAgaW5jbHVkZV9uYXZpZ2F0aW9uOiBib29sZWFuO1xuICB9KTogT0RhdGFTdHJ1Y3R1cmVkVHlwZUZpZWxkUGFyc2VyPGFueT5bXSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIC4uLihpbmNsdWRlX3BhcmVudHMgJiYgdGhpcy5wYXJlbnQgIT09IHVuZGVmaW5lZFxuICAgICAgICA/IHRoaXMucGFyZW50LmZpZWxkcyh7IGluY2x1ZGVfcGFyZW50cywgaW5jbHVkZV9uYXZpZ2F0aW9uIH0pXG4gICAgICAgIDogW10pLFxuICAgICAgLi4udGhpcy5wYXJzZXIuZmllbGRzLmZpbHRlcihcbiAgICAgICAgKGZpZWxkKSA9PiBpbmNsdWRlX25hdmlnYXRpb24gfHwgIWZpZWxkLm5hdmlnYXRpb25cbiAgICAgICksXG4gICAgXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBrZXlzIG9mIHRoZSBzdHJ1Y3R1cmVkIHR5cGUuXG4gICAqIEBwYXJhbSBpbmNsdWRlX3BhcmVudHMgSW5jbHVkZSB0aGUgcGFyZW50IGZpZWxkc1xuICAgKiBAcmV0dXJucyBUaGUga2V5cyBvZiB0aGUgc3RydWN0dXJlZCB0eXBlXG4gICAqL1xuICBrZXlzKHtcbiAgICBpbmNsdWRlX3BhcmVudHMgPSB0cnVlLFxuICB9OiB7XG4gICAgaW5jbHVkZV9wYXJlbnRzPzogYm9vbGVhbjtcbiAgfSA9IHt9KTogT0RhdGFFbnRpdHlUeXBlS2V5W10ge1xuICAgIHJldHVybiBbXG4gICAgICAuLi4oaW5jbHVkZV9wYXJlbnRzICYmIHRoaXMucGFyZW50ICE9PSB1bmRlZmluZWRcbiAgICAgICAgPyB0aGlzLnBhcmVudC5rZXlzKHsgaW5jbHVkZV9wYXJlbnRzIH0pXG4gICAgICAgIDogW10pLFxuICAgICAgLi4uKHRoaXMucGFyc2VyLmtleXMgfHwgW10pLFxuICAgIF07XG4gIH1cblxuICAvKipcbiAgICogUGlja3MgdGhlIGZpZWxkcyBmcm9tIGF0dHJpYnV0ZXMuXG4gICAqIEBwYXJhbSBhdHRyc1xuICAgKiBAcGFyYW0gaW5jbHVkZV9wYXJlbnRzIEluY2x1ZGUgdGhlIHBhcmVudCBmaWVsZHNcbiAgICogQHBhcmFtIGluY2x1ZGVfbmF2aWdhdGlvbiBJbmNsdWRlIHRoZSBuYXZpZ2F0aW9uIGZpZWxkc1xuICAgKiBAcGFyYW0gaW5jbHVkZV9ldGFnIEluY2x1ZGUgdGhlIGV0YWcgZmllbGRcbiAgICogQHJldHVybnMgVGhlIHBpY2tlZCBmaWVsZHNcbiAgICovXG4gIHBpY2soXG4gICAgYXR0cnM6IHsgW25hbWU6IHN0cmluZ106IGFueSB9LFxuICAgIHtcbiAgICAgIGluY2x1ZGVfcGFyZW50cyA9IHRydWUsXG4gICAgICBpbmNsdWRlX25hdmlnYXRpb24gPSBmYWxzZSxcbiAgICAgIGluY2x1ZGVfZXRhZyA9IHRydWUsXG4gICAgfToge1xuICAgICAgaW5jbHVkZV9wYXJlbnRzPzogYm9vbGVhbjtcbiAgICAgIGluY2x1ZGVfbmF2aWdhdGlvbj86IGJvb2xlYW47XG4gICAgICBpbmNsdWRlX2V0YWc/OiBib29sZWFuO1xuICAgIH0gPSB7fVxuICApOiBQYXJ0aWFsPFQ+IHtcbiAgICBjb25zdCBuYW1lcyA9IHRoaXMuZmllbGRzKHsgaW5jbHVkZV9wYXJlbnRzLCBpbmNsdWRlX25hdmlnYXRpb24gfSkubWFwKFxuICAgICAgKGYpID0+IGYubmFtZVxuICAgICk7XG4gICAgbGV0IHZhbHVlcyA9IE9iamVjdC5rZXlzKGF0dHJzKVxuICAgICAgLmZpbHRlcigoaykgPT4gbmFtZXMuaW5kZXhPZihrKSAhPT0gLTEpXG4gICAgICAucmVkdWNlKChhY2MsIGspID0+IE9iamVjdC5hc3NpZ24oYWNjLCB7IFtrXTogYXR0cnNba10gfSksIHt9KTtcbiAgICBpZiAoaW5jbHVkZV9ldGFnKSB7XG4gICAgICBjb25zdCBldGFnID0gdGhpcy5hcGkub3B0aW9ucy5oZWxwZXIuZXRhZyhhdHRycyk7XG4gICAgICB0aGlzLmFwaS5vcHRpb25zLmhlbHBlci5ldGFnKGF0dHJzLCBldGFnKTtcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlcztcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXNlaWFsaXplIHRoZSBnaXZlbiB2YWx1ZSBmcm9tIHRoZSBzdHJ1Y3R1cmVkIHR5cGUuXG4gICAqIEBwYXJhbSB2YWx1ZSBWYWx1ZSB0byBkZXNlcmlhbGl6ZVxuICAgKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25zIGZvciBkZXNlcmlhbGl6YXRpb25cbiAgICogQHJldHVybnMgRGVzZXJpYWxpemVkIHZhbHVlXG4gICAqL1xuICBkZXNlcmlhbGl6ZSh2YWx1ZTogYW55LCBvcHRpb25zPzogT3B0aW9ucyk6IFQge1xuICAgIHJldHVybiB0aGlzLnBhcnNlci5kZXNlcmlhbGl6ZSh2YWx1ZSwgb3B0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICogU2VyaWFsaXplIHRoZSBnaXZlbiB2YWx1ZSBmb3IgdGhlIHN0cnVjdHVyZWQgdHlwZS5cbiAgICogQHBhcmFtIHZhbHVlIFZhbHVlIHRvIHNlcmlhbGl6ZVxuICAgKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25zIGZvciBzZXJpYWxpemF0aW9uXG4gICAqIEByZXR1cm5zIFNlcmlhbGl6ZWQgdmFsdWVcbiAgICovXG4gIHNlcmlhbGl6ZSh2YWx1ZTogVCwgb3B0aW9ucz86IE9wdGlvbnMpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLnBhcnNlci5zZXJpYWxpemUodmFsdWUsIG9wdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEVuY29kZSB0aGUgZ2l2ZW4gdmFsdWUgZm9yIHRoZSBzdHJ1Y3R1cmVkIHR5cGUuXG4gICAqIEBwYXJhbSB2YWx1ZSBWYWx1ZSB0byBlbmNvZGVcbiAgICogQHBhcmFtIG9wdGlvbnMgT3B0aW9ucyBmb3IgZW5jb2RpbmdcbiAgICogQHJldHVybnMgRW5jb2RlZCB2YWx1ZVxuICAgKi9cbiAgZW5jb2RlKHZhbHVlOiBULCBvcHRpb25zPzogT3B0aW9ucyk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMucGFyc2VyLmVuY29kZSh2YWx1ZSwgb3B0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICogUmVzb2x2ZSB0aGUga2V5IG9mIHRoZSBzdHJ1Y3R1cmVkIHR5cGUgZm9yIHRoZSBnaXZlbiB2YWx1ZS5cbiAgICogQHBhcmFtIGF0dHJzIEF0dHJpYnV0ZXMgb2YgdGhlIHZhbHVlXG4gICAqIEByZXR1cm5zIFJlc29sdmVkIGtleVxuICAgKi9cbiAgcmVzb2x2ZUtleShhdHRyczogVCB8IHsgW25hbWU6IHN0cmluZ106IGFueSB9KSB7XG4gICAgcmV0dXJuIHRoaXMucGFyc2VyLnJlc29sdmVLZXkoYXR0cnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGRlZmF1bHRzIHZhbHVlcyBmb3IgdGhlIHN0cnVjdHVyZWQgdHlwZS5cbiAgICogQHJldHVybnMgRGVmYXVsdCB2YWx1ZXMgZm9yIHRoZSBzdHJ1Y3R1cmVkIHR5cGVcbiAgICovXG4gIGRlZmF1bHRzKCkge1xuICAgIHJldHVybiB0aGlzLnBhcnNlci5kZWZhdWx0cygpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgdGhlIHN0cnVjdHVyZWQgdHlwZSB0byBqc29uIHNjaGVtYVxuICAgKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25zIGZvciBqc29uIHNjaGVtYVxuICAgKiBAcmV0dXJucyBKc29uIFNjaGVtYVxuICAgKi9cbiAgdG9Kc29uU2NoZW1hKG9wdGlvbnM6IEpzb25TY2hlbWFPcHRpb25zPFQ+ID0ge30pIHtcbiAgICByZXR1cm4gdGhpcy5wYXJzZXIudG9Kc29uU2NoZW1hKG9wdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlIHRoZSBnaXZlbiB2YWx1ZSBhZ2FpbnN0IHRoZSBzdHJ1Y3R1cmVkIHR5cGUuXG4gICAqIEBwYXJhbSBhdHRycyBBdHRyaWJ1dGVzIG9mIHRoZSB2YWx1ZVxuICAgKiBAcGFyYW0gbWV0aG9kIE1ldGhvZCB0byB1c2UgZm9yIHRoZSBwcm9jZXNzIHZhbGlkYXRpb25cbiAgICogQHJldHVybnMgT2JqZWN0IHdpdGggdGhlIGVycm9yc1xuICAgKi9cbiAgdmFsaWRhdGUoXG4gICAgYXR0cnM6IFBhcnRpYWw8VD4sXG4gICAge1xuICAgICAgbWV0aG9kLFxuICAgICAgbmF2aWdhdGlvbiA9IGZhbHNlLFxuICAgIH06IHtcbiAgICAgIG1ldGhvZD86ICdjcmVhdGUnIHwgJ3VwZGF0ZScgfCAnbW9kaWZ5JztcbiAgICAgIG5hdmlnYXRpb24/OiBib29sZWFuO1xuICAgIH0gPSB7fVxuICApIHtcbiAgICByZXR1cm4gdGhpcy5wYXJzZXIudmFsaWRhdGUoYXR0cnMsIHsgbWV0aG9kLCBuYXZpZ2F0aW9uIH0pO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,29 @@
1
+ export class ODataBaseService {
2
+ constructor(client, name, apiNameOrEntityType) {
3
+ this.client = client;
4
+ this.name = name;
5
+ this.apiNameOrEntityType = apiNameOrEntityType;
6
+ }
7
+ get api() {
8
+ return this.client.apiFor(this.apiNameOrEntityType);
9
+ }
10
+ callFunction(params, resource, responseType, options = {}) {
11
+ resource.query((q) => q.apply(options));
12
+ return resource.call(params, {
13
+ responseType: responseType,
14
+ ...options,
15
+ });
16
+ }
17
+ callAction(params, resource, responseType, options = {}) {
18
+ resource.query((q) => q.apply(options));
19
+ return resource.call(params, {
20
+ responseType: responseType,
21
+ ...options,
22
+ });
23
+ }
24
+ fetchNavigationProperty(resource, responseType, options = {}) {
25
+ resource.query((q) => q.apply(options));
26
+ return resource.fetch({ responseType: responseType, ...options });
27
+ }
28
+ }
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItb2RhdGEvc3JjL2xpYi9zZXJ2aWNlcy9iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVlBLE1BQU0sT0FBZ0IsZ0JBQWdCO0lBQ3BDLFlBQ1ksTUFBbUIsRUFDbkIsSUFBWSxFQUNaLG1CQUE0QjtRQUY1QixXQUFNLEdBQU4sTUFBTSxDQUFhO1FBQ25CLFNBQUksR0FBSixJQUFJLENBQVE7UUFDWix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQVM7SUFDckMsQ0FBQztJQUVKLElBQUksR0FBRztRQUNMLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFDdEQsQ0FBQztJQTBCUyxZQUFZLENBQ3BCLE1BQWdCLEVBQ2hCLFFBQXFDLEVBQ3JDLFlBQXlELEVBQ3pELFVBQXlDLEVBQUU7UUFFM0MsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQ3hDLE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDM0IsWUFBWSxFQUFFLFlBQW1CO1lBQ2pDLEdBQUcsT0FBTztTQUNYLENBQUMsQ0FBQztJQUNMLENBQUM7SUEwQlMsVUFBVSxDQUNsQixNQUFnQixFQUNoQixRQUFtQyxFQUNuQyxZQUF5RCxFQUN6RCxVQUF5QyxFQUFFO1FBRTNDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUN4QyxPQUFPLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQzNCLFlBQVksRUFBRSxZQUFtQjtZQUNqQyxHQUFHLE9BQU87U0FDWCxDQUFDLENBQUM7SUFDTCxDQUFDO0lBWVMsdUJBQXVCLENBQy9CLFFBQTRDLEVBQzVDLFlBQW1DLEVBQ25DLFVBQXlDLEVBQUU7UUFFM0MsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQ3hDLE9BQU8sUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLFlBQVksRUFBRSxZQUFtQixFQUFFLEdBQUcsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUMzRSxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBPRGF0YUNsaWVudCB9IGZyb20gJy4uL2NsaWVudCc7XG5pbXBvcnQge1xuICBPRGF0YUFjdGlvblJlc291cmNlLFxuICBPRGF0YUVudGl0aWVzLFxuICBPRGF0YUVudGl0eSxcbiAgT0RhdGFGdW5jdGlvblJlc291cmNlLFxuICBPRGF0YU5hdmlnYXRpb25Qcm9wZXJ0eVJlc291cmNlLFxuICBPRGF0YVByb3BlcnR5LFxuICBPRGF0YVF1ZXJ5QXJndW1lbnRzT3B0aW9ucyxcbn0gZnJvbSAnLi4vcmVzb3VyY2VzJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIE9EYXRhQmFzZVNlcnZpY2Uge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgY2xpZW50OiBPRGF0YUNsaWVudCxcbiAgICBwcm90ZWN0ZWQgbmFtZTogc3RyaW5nLFxuICAgIHByb3RlY3RlZCBhcGlOYW1lT3JFbnRpdHlUeXBlPzogc3RyaW5nXG4gICkge31cblxuICBnZXQgYXBpKCkge1xuICAgIHJldHVybiB0aGlzLmNsaWVudC5hcGlGb3IodGhpcy5hcGlOYW1lT3JFbnRpdHlUeXBlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBjYWxsRnVuY3Rpb248UCwgUj4oXG4gICAgcGFyYW1zOiBQIHwgbnVsbCxcbiAgICByZXNvdXJjZTogT0RhdGFGdW5jdGlvblJlc291cmNlPFAsIFI+LFxuICAgIHJlc3BvbnNlVHlwZTogJ2VudGl0eScsXG4gICAgb3B0aW9ucz86IE9EYXRhUXVlcnlBcmd1bWVudHNPcHRpb25zPFI+XG4gICk6IE9ic2VydmFibGU8T0RhdGFFbnRpdHk8Uj4+O1xuICBwcm90ZWN0ZWQgY2FsbEZ1bmN0aW9uPFAsIFI+KFxuICAgIHBhcmFtczogUCB8IG51bGwsXG4gICAgcmVzb3VyY2U6IE9EYXRhRnVuY3Rpb25SZXNvdXJjZTxQLCBSPixcbiAgICByZXNwb25zZVR5cGU6ICdlbnRpdGllcycsXG4gICAgb3B0aW9ucz86IE9EYXRhUXVlcnlBcmd1bWVudHNPcHRpb25zPFI+XG4gICk6IE9ic2VydmFibGU8T0RhdGFFbnRpdGllczxSPj47XG4gIHByb3RlY3RlZCBjYWxsRnVuY3Rpb248UCwgUj4oXG4gICAgcGFyYW1zOiBQIHwgbnVsbCxcbiAgICByZXNvdXJjZTogT0RhdGFGdW5jdGlvblJlc291cmNlPFAsIFI+LFxuICAgIHJlc3BvbnNlVHlwZTogJ3Byb3BlcnR5JyxcbiAgICBvcHRpb25zPzogT0RhdGFRdWVyeUFyZ3VtZW50c09wdGlvbnM8Uj5cbiAgKTogT2JzZXJ2YWJsZTxPRGF0YVByb3BlcnR5PFI+PjtcbiAgcHJvdGVjdGVkIGNhbGxGdW5jdGlvbjxQLCBSPihcbiAgICBwYXJhbXM6IFAgfCBudWxsLFxuICAgIHJlc291cmNlOiBPRGF0YUZ1bmN0aW9uUmVzb3VyY2U8UCwgUj4sXG4gICAgcmVzcG9uc2VUeXBlOiAnbm9uZScsXG4gICAgb3B0aW9ucz86IE9EYXRhUXVlcnlBcmd1bWVudHNPcHRpb25zPFI+XG4gICk6IE9ic2VydmFibGU8bnVsbD47XG4gIHByb3RlY3RlZCBjYWxsRnVuY3Rpb248UCwgUj4oXG4gICAgcGFyYW1zOiBQIHwgbnVsbCxcbiAgICByZXNvdXJjZTogT0RhdGFGdW5jdGlvblJlc291cmNlPFAsIFI+LFxuICAgIHJlc3BvbnNlVHlwZTogJ3Byb3BlcnR5JyB8ICdlbnRpdHknIHwgJ2VudGl0aWVzJyB8ICdub25lJyxcbiAgICBvcHRpb25zOiBPRGF0YVF1ZXJ5QXJndW1lbnRzT3B0aW9uczxSPiA9IHt9XG4gICk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmVzb3VyY2UucXVlcnkoKHEpID0+IHEuYXBwbHkob3B0aW9ucykpO1xuICAgIHJldHVybiByZXNvdXJjZS5jYWxsKHBhcmFtcywge1xuICAgICAgcmVzcG9uc2VUeXBlOiByZXNwb25zZVR5cGUgYXMgYW55LFxuICAgICAgLi4ub3B0aW9ucyxcbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBjYWxsQWN0aW9uPFAsIFI+KFxuICAgIHBhcmFtczogUCB8IG51bGwsXG4gICAgcmVzb3VyY2U6IE9EYXRhQWN0aW9uUmVzb3VyY2U8UCwgUj4sXG4gICAgcmVzcG9uc2VUeXBlOiAnZW50aXR5JyxcbiAgICBvcHRpb25zPzogT0RhdGFRdWVyeUFyZ3VtZW50c09wdGlvbnM8Uj5cbiAgKTogT2JzZXJ2YWJsZTxPRGF0YUVudGl0eTxSPj47XG4gIHByb3RlY3RlZCBjYWxsQWN0aW9uPFAsIFI+KFxuICAgIHBhcmFtczogUCB8IG51bGwsXG4gICAgcmVzb3VyY2U6IE9EYXRhQWN0aW9uUmVzb3VyY2U8UCwgUj4sXG4gICAgcmVzcG9uc2VUeXBlOiAnZW50aXRpZXMnLFxuICAgIG9wdGlvbnM/OiBPRGF0YVF1ZXJ5QXJndW1lbnRzT3B0aW9uczxSPlxuICApOiBPYnNlcnZhYmxlPE9EYXRhRW50aXRpZXM8Uj4+O1xuICBwcm90ZWN0ZWQgY2FsbEFjdGlvbjxQLCBSPihcbiAgICBwYXJhbXM6IFAgfCBudWxsLFxuICAgIHJlc291cmNlOiBPRGF0YUFjdGlvblJlc291cmNlPFAsIFI+LFxuICAgIHJlc3BvbnNlVHlwZTogJ3Byb3BlcnR5JyxcbiAgICBvcHRpb25zPzogT0RhdGFRdWVyeUFyZ3VtZW50c09wdGlvbnM8Uj5cbiAgKTogT2JzZXJ2YWJsZTxPRGF0YVByb3BlcnR5PFI+PjtcbiAgcHJvdGVjdGVkIGNhbGxBY3Rpb248UCwgUj4oXG4gICAgcGFyYW1zOiBQIHwgbnVsbCxcbiAgICByZXNvdXJjZTogT0RhdGFBY3Rpb25SZXNvdXJjZTxQLCBSPixcbiAgICByZXNwb25zZVR5cGU6ICdub25lJyxcbiAgICBvcHRpb25zPzogT0RhdGFRdWVyeUFyZ3VtZW50c09wdGlvbnM8Uj5cbiAgKTogT2JzZXJ2YWJsZTxudWxsPjtcbiAgcHJvdGVjdGVkIGNhbGxBY3Rpb248UCwgUj4oXG4gICAgcGFyYW1zOiBQIHwgbnVsbCxcbiAgICByZXNvdXJjZTogT0RhdGFBY3Rpb25SZXNvdXJjZTxQLCBSPixcbiAgICByZXNwb25zZVR5cGU6ICdwcm9wZXJ0eScgfCAnZW50aXR5JyB8ICdlbnRpdGllcycgfCAnbm9uZScsXG4gICAgb3B0aW9uczogT0RhdGFRdWVyeUFyZ3VtZW50c09wdGlvbnM8Uj4gPSB7fVxuICApOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJlc291cmNlLnF1ZXJ5KChxKSA9PiBxLmFwcGx5KG9wdGlvbnMpKTtcbiAgICByZXR1cm4gcmVzb3VyY2UuY2FsbChwYXJhbXMsIHtcbiAgICAgIHJlc3BvbnNlVHlwZTogcmVzcG9uc2VUeXBlIGFzIGFueSxcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZmV0Y2hOYXZpZ2F0aW9uUHJvcGVydHk8Uz4oXG4gICAgcmVzb3VyY2U6IE9EYXRhTmF2aWdhdGlvblByb3BlcnR5UmVzb3VyY2U8Uz4sXG4gICAgcmVzcG9uc2VUeXBlOiAnZW50aXR5JyxcbiAgICBvcHRpb25zPzogT0RhdGFRdWVyeUFyZ3VtZW50c09wdGlvbnM8Uz5cbiAgKTogT2JzZXJ2YWJsZTxPRGF0YUVudGl0eTxTPj47XG4gIHByb3RlY3RlZCBmZXRjaE5hdmlnYXRpb25Qcm9wZXJ0eTxTPihcbiAgICByZXNvdXJjZTogT0RhdGFOYXZpZ2F0aW9uUHJvcGVydHlSZXNvdXJjZTxTPixcbiAgICByZXNwb25zZVR5cGU6ICdlbnRpdGllcycsXG4gICAgb3B0aW9ucz86IE9EYXRhUXVlcnlBcmd1bWVudHNPcHRpb25zPFM+XG4gICk6IE9ic2VydmFibGU8T0RhdGFFbnRpdGllczxTPj47XG4gIHByb3RlY3RlZCBmZXRjaE5hdmlnYXRpb25Qcm9wZXJ0eTxTPihcbiAgICByZXNvdXJjZTogT0RhdGFOYXZpZ2F0aW9uUHJvcGVydHlSZXNvdXJjZTxTPixcbiAgICByZXNwb25zZVR5cGU6ICdlbnRpdHknIHwgJ2VudGl0aWVzJyxcbiAgICBvcHRpb25zOiBPRGF0YVF1ZXJ5QXJndW1lbnRzT3B0aW9uczxTPiA9IHt9XG4gICk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmVzb3VyY2UucXVlcnkoKHEpID0+IHEuYXBwbHkob3B0aW9ucykpO1xuICAgIHJldHVybiByZXNvdXJjZS5mZXRjaCh7IHJlc3BvbnNlVHlwZTogcmVzcG9uc2VUeXBlIGFzIGFueSwgLi4ub3B0aW9ucyB9KTtcbiAgfVxufVxuIl19
@@ -0,0 +1,143 @@
1
+ import { throwError } from 'rxjs';
2
+ import { catchError } from 'rxjs/operators';
3
+ import { ODataCollection } from '../models/collection';
4
+ import { ODataModel } from '../models/model';
5
+ import { ODataEntityService } from './entity';
6
+ export class ODataEntitySetService extends ODataEntityService {
7
+ /**
8
+ * Get the entity set resource for this service.
9
+ */
10
+ entities() {
11
+ return this.client.entitySet(this.name, this.apiNameOrEntityType);
12
+ }
13
+ /**
14
+ * Get the entity resource for this service.
15
+ * @param key The entity key.
16
+ */
17
+ entity(key) {
18
+ return this.entities().entity(key);
19
+ }
20
+ attach(model) {
21
+ if (model instanceof ODataModel) {
22
+ model.attach(this.entities().entity());
23
+ }
24
+ else if (model instanceof ODataCollection) {
25
+ model.attach(this.entities());
26
+ }
27
+ }
28
+ /**
29
+ * The schema for the entity set.
30
+ */
31
+ get entitySetSchema() {
32
+ return this.api.findEntitySetByName(this.name);
33
+ }
34
+ /**
35
+ * Get all entities from the entity set.
36
+ * @param options The options for the request.
37
+ */
38
+ fetchAll(options) {
39
+ return this.entities().fetchAll(options);
40
+ }
41
+ /**
42
+ * Get entities from the entity set.
43
+ * @param withCount Get the count of the entities.
44
+ * @param options The options for the request.
45
+ */
46
+ fetchMany(options) {
47
+ return this.entities().fetch(options);
48
+ }
49
+ /**
50
+ * Get an entity from the entity set.
51
+ * @param key The entity key.
52
+ * @param etag The etag for the entity.
53
+ * @param options The options for the request.
54
+ */
55
+ fetchOne(key, options) {
56
+ return this.entity(key).fetch(options);
57
+ }
58
+ /**
59
+ * Create an entity in the entity set.
60
+ * @param attrs The attributes for the entity.
61
+ * @param options The options for the request.
62
+ */
63
+ create(attrs, options) {
64
+ return this.entities().create(attrs, options);
65
+ }
66
+ /**
67
+ * Update an entity in the entity set.
68
+ * @param key The entity key.
69
+ * @param attrs The attributes for the entity.
70
+ * @param etag The etag for the entity.
71
+ * @param options The options for the request.
72
+ */
73
+ update(key, attrs, options) {
74
+ const res = this.entity(key);
75
+ if (!res.hasKey())
76
+ return throwError('Resource without key');
77
+ return res.update(attrs, options);
78
+ }
79
+ /**
80
+ * Patch an entity in the entity set.
81
+ * @param key The entity key.
82
+ * @param attrs The attributes for the entity.
83
+ * @param etag The etag for the entity.
84
+ * @param options The options for the request.
85
+ */
86
+ modify(key, attrs, options) {
87
+ const res = this.entity(key);
88
+ if (!res.hasKey())
89
+ return throwError('Resource without key');
90
+ return res.modify(attrs, options);
91
+ }
92
+ /**
93
+ * Delete an entity in the entity set.
94
+ * @param key The entity key.
95
+ * @param etag The etag for the entity.
96
+ * @param options The options for the request.
97
+ */
98
+ destroy(key, options) {
99
+ const res = this.entity(key);
100
+ if (!res.hasKey())
101
+ return throwError('Resource without key');
102
+ return res.destroy(options);
103
+ }
104
+ //#region Shortcuts
105
+ /**
106
+ * Get or create an entity in the entity set.
107
+ * @param key The entity key.
108
+ * @param attrs The attributes for the entity.
109
+ * @param etag The etag for the entity.
110
+ * @param options The options for the request.
111
+ */
112
+ fetchOrCreate(key, attrs, { etag, ...options } = {}) {
113
+ return this.fetchOne(key, { etag, ...options }).pipe(catchError((error) => {
114
+ if (error.status === 404)
115
+ return this.create(attrs, options);
116
+ else
117
+ return throwError(error);
118
+ }));
119
+ }
120
+ /**
121
+ * Save an entity in the entity set.
122
+ * @param attrs The attributes for the entity.
123
+ * @param method The method to use.
124
+ * @param etag The etag for the entity.
125
+ * @param options The options for the request.
126
+ */
127
+ save(attrs, { etag, method, ...options } = {}) {
128
+ let schema = this.structuredTypeSchema;
129
+ if (method === undefined && schema !== undefined && schema.isCompoundKey())
130
+ return throwError('Composite key require a specific method, use create/update/patch');
131
+ let key = schema && schema.resolveKey(attrs);
132
+ if (method === undefined)
133
+ method = key !== undefined ? 'update' : 'create';
134
+ if ((method === 'update' || method === 'modify') && key === undefined)
135
+ return throwError("Can't update/patch entity without key");
136
+ return method === 'create'
137
+ ? this.create(attrs, options)
138
+ : method === 'modify'
139
+ ? this.modify(key, attrs, { etag, ...options })
140
+ : this.update(key, attrs, { etag, ...options });
141
+ }
142
+ }
143
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LXNldC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItb2RhdGEvc3JjL2xpYi9zZXJ2aWNlcy9lbnRpdHktc2V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBYyxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDOUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFTN0MsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRTlDLE1BQU0sT0FBTyxxQkFBeUIsU0FBUSxrQkFBcUI7SUFDakU7O09BRUc7SUFDSSxRQUFRO1FBQ2IsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBSSxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFFRDs7O09BR0c7SUFDSSxNQUFNLENBQUMsR0FBa0I7UUFDOUIsT0FBTyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFRTSxNQUFNLENBQUMsS0FBVTtRQUN0QixJQUFJLEtBQUssWUFBWSxVQUFVLEVBQUU7WUFDL0IsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztTQUN4QzthQUFNLElBQUksS0FBSyxZQUFZLGVBQWUsRUFBRTtZQUMzQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1NBQy9CO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBSSxlQUFlO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVEOzs7T0FHRztJQUNJLFFBQVEsQ0FBQyxPQUFzQjtRQUNwQyxPQUFPLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxTQUFTLENBQ2QsT0FBZ0Q7UUFFaEQsT0FBTyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLFFBQVEsQ0FDYixHQUFpQixFQUNqQixPQUEwQztRQUUxQyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksTUFBTSxDQUNYLEtBQWlCLEVBQ2pCLE9BQXNCO1FBRXRCLE9BQU8sSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLE1BQU0sQ0FDWCxHQUFpQixFQUNqQixLQUFpQixFQUNqQixPQUEwQztRQUUxQyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzdCLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFO1lBQUUsT0FBTyxVQUFVLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUM3RCxPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxNQUFNLENBQ1gsR0FBaUIsRUFDakIsS0FBaUIsRUFDakIsT0FBMEM7UUFFMUMsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM3QixJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRTtZQUFFLE9BQU8sVUFBVSxDQUFDLHNCQUFzQixDQUFDLENBQUM7UUFDN0QsT0FBTyxHQUFHLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxPQUFPLENBQ1osR0FBaUIsRUFDakIsT0FBMEM7UUFFMUMsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM3QixJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRTtZQUFFLE9BQU8sVUFBVSxDQUFDLHNCQUFzQixDQUFDLENBQUM7UUFDN0QsT0FBTyxHQUFHLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRCxtQkFBbUI7SUFDbkI7Ozs7OztPQU1HO0lBQ0ksYUFBYSxDQUNsQixHQUFpQixFQUNqQixLQUFpQixFQUNqQixFQUFFLElBQUksRUFBRSxHQUFHLE9BQU8sS0FBdUMsRUFBRTtRQUUzRCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEVBQUUsSUFBSSxFQUFFLEdBQUcsT0FBTyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQ2xELFVBQVUsQ0FBQyxDQUFDLEtBQXdCLEVBQUUsRUFBRTtZQUN0QyxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssR0FBRztnQkFBRSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDOztnQkFDeEQsT0FBTyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEMsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxJQUFJLENBQ1QsS0FBaUIsRUFDakIsRUFDRSxJQUFJLEVBQ0osTUFBTSxFQUNOLEdBQUcsT0FBTyxLQUlPLEVBQUU7UUFFckIsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDO1FBQ3ZDLElBQUksTUFBTSxLQUFLLFNBQVMsSUFBSSxNQUFNLEtBQUssU0FBUyxJQUFJLE1BQU0sQ0FBQyxhQUFhLEVBQUU7WUFDeEUsT0FBTyxVQUFVLENBQ2Ysa0VBQWtFLENBQ25FLENBQUM7UUFDSixJQUFJLEdBQUcsR0FBRyxNQUFNLElBQUksTUFBTSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM3QyxJQUFJLE1BQU0sS0FBSyxTQUFTO1lBQUUsTUFBTSxHQUFHLEdBQUcsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO1FBQzNFLElBQUksQ0FBQyxNQUFNLEtBQUssUUFBUSxJQUFJLE1BQU0sS0FBSyxRQUFRLENBQUMsSUFBSSxHQUFHLEtBQUssU0FBUztZQUNuRSxPQUFPLFVBQVUsQ0FBQyx1Q0FBdUMsQ0FBQyxDQUFDO1FBQzdELE9BQU8sTUFBTSxLQUFLLFFBQVE7WUFDeEIsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQztZQUM3QixDQUFDLENBQUMsTUFBTSxLQUFLLFFBQVE7Z0JBQ3JCLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsR0FBRyxPQUFPLEVBQUUsQ0FBQztnQkFDL0MsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxHQUFHLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDcEQsQ0FBQztDQUVGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgT0RhdGFDb2xsZWN0aW9uIH0gZnJvbSAnLi4vbW9kZWxzL2NvbGxlY3Rpb24nO1xuaW1wb3J0IHsgT0RhdGFNb2RlbCB9IGZyb20gJy4uL21vZGVscy9tb2RlbCc7XG5pbXBvcnQge1xuICBFbnRpdHlLZXksXG4gIE9EYXRhRW50aXRpZXMsXG4gIE9EYXRhRW50aXR5LFxuICBPRGF0YUVudGl0eVJlc291cmNlLFxuICBPRGF0YUVudGl0eVNldFJlc291cmNlLFxuICBPRGF0YU9wdGlvbnMsXG59IGZyb20gJy4uL3Jlc291cmNlcyc7XG5pbXBvcnQgeyBPRGF0YUVudGl0eVNlcnZpY2UgfSBmcm9tICcuL2VudGl0eSc7XG5cbmV4cG9ydCBjbGFzcyBPRGF0YUVudGl0eVNldFNlcnZpY2U8VD4gZXh0ZW5kcyBPRGF0YUVudGl0eVNlcnZpY2U8VD4ge1xuICAvKipcbiAgICogR2V0IHRoZSBlbnRpdHkgc2V0IHJlc291cmNlIGZvciB0aGlzIHNlcnZpY2UuXG4gICAqL1xuICBwdWJsaWMgZW50aXRpZXMoKTogT0RhdGFFbnRpdHlTZXRSZXNvdXJjZTxUPiB7XG4gICAgcmV0dXJuIHRoaXMuY2xpZW50LmVudGl0eVNldDxUPih0aGlzLm5hbWUsIHRoaXMuYXBpTmFtZU9yRW50aXR5VHlwZSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBlbnRpdHkgcmVzb3VyY2UgZm9yIHRoaXMgc2VydmljZS5cbiAgICogQHBhcmFtIGtleSBUaGUgZW50aXR5IGtleS5cbiAgICovXG4gIHB1YmxpYyBlbnRpdHkoa2V5PzogRW50aXR5S2V5PFQ+KTogT0RhdGFFbnRpdHlSZXNvdXJjZTxUPiB7XG4gICAgcmV0dXJuIHRoaXMuZW50aXRpZXMoKS5lbnRpdHkoa2V5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBdHRhY2ggYW4gZXhpc3RpbmcgbW9kZWwgdG8gdGhpcyBzZXJ2aWNlLlxuICAgKiBAcGFyYW0gbW9kZWwgVGhlIG1vZGVsIHRvIGF0dGFjaC5cbiAgICovXG4gIHB1YmxpYyBhdHRhY2g8TSBleHRlbmRzIE9EYXRhTW9kZWw8VD4+KG1vZGVsOiBNKTogdm9pZDtcbiAgcHVibGljIGF0dGFjaDxDIGV4dGVuZHMgT0RhdGFDb2xsZWN0aW9uPFQsIE9EYXRhTW9kZWw8VD4+Pihtb2RlbDogQyk6IHZvaWQ7XG4gIHB1YmxpYyBhdHRhY2gobW9kZWw6IGFueSk6IHZvaWQge1xuICAgIGlmIChtb2RlbCBpbnN0YW5jZW9mIE9EYXRhTW9kZWwpIHtcbiAgICAgIG1vZGVsLmF0dGFjaCh0aGlzLmVudGl0aWVzKCkuZW50aXR5KCkpO1xuICAgIH0gZWxzZSBpZiAobW9kZWwgaW5zdGFuY2VvZiBPRGF0YUNvbGxlY3Rpb24pIHtcbiAgICAgIG1vZGVsLmF0dGFjaCh0aGlzLmVudGl0aWVzKCkpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgc2NoZW1hIGZvciB0aGUgZW50aXR5IHNldC5cbiAgICovXG4gIGdldCBlbnRpdHlTZXRTY2hlbWEoKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpLmZpbmRFbnRpdHlTZXRCeU5hbWUodGhpcy5uYW1lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYWxsIGVudGl0aWVzIGZyb20gdGhlIGVudGl0eSBzZXQuXG4gICAqIEBwYXJhbSBvcHRpb25zIFRoZSBvcHRpb25zIGZvciB0aGUgcmVxdWVzdC5cbiAgICovXG4gIHB1YmxpYyBmZXRjaEFsbChvcHRpb25zPzogT0RhdGFPcHRpb25zKTogT2JzZXJ2YWJsZTxUW10+IHtcbiAgICByZXR1cm4gdGhpcy5lbnRpdGllcygpLmZldGNoQWxsKG9wdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBlbnRpdGllcyBmcm9tIHRoZSBlbnRpdHkgc2V0LlxuICAgKiBAcGFyYW0gd2l0aENvdW50IEdldCB0aGUgY291bnQgb2YgdGhlIGVudGl0aWVzLlxuICAgKiBAcGFyYW0gb3B0aW9ucyBUaGUgb3B0aW9ucyBmb3IgdGhlIHJlcXVlc3QuXG4gICAqL1xuICBwdWJsaWMgZmV0Y2hNYW55KFxuICAgIG9wdGlvbnM/OiBPRGF0YU9wdGlvbnMgJiB7IHdpdGhDb3VudD86IGJvb2xlYW4gfVxuICApOiBPYnNlcnZhYmxlPE9EYXRhRW50aXRpZXM8VD4+IHtcbiAgICByZXR1cm4gdGhpcy5lbnRpdGllcygpLmZldGNoKG9wdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhbiBlbnRpdHkgZnJvbSB0aGUgZW50aXR5IHNldC5cbiAgICogQHBhcmFtIGtleSBUaGUgZW50aXR5IGtleS5cbiAgICogQHBhcmFtIGV0YWcgVGhlIGV0YWcgZm9yIHRoZSBlbnRpdHkuXG4gICAqIEBwYXJhbSBvcHRpb25zIFRoZSBvcHRpb25zIGZvciB0aGUgcmVxdWVzdC5cbiAgICovXG4gIHB1YmxpYyBmZXRjaE9uZShcbiAgICBrZXk6IEVudGl0eUtleTxUPixcbiAgICBvcHRpb25zPzogT0RhdGFPcHRpb25zICYgeyBldGFnPzogc3RyaW5nIH1cbiAgKTogT2JzZXJ2YWJsZTxPRGF0YUVudGl0eTxUPj4ge1xuICAgIHJldHVybiB0aGlzLmVudGl0eShrZXkpLmZldGNoKG9wdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhbiBlbnRpdHkgaW4gdGhlIGVudGl0eSBzZXQuXG4gICAqIEBwYXJhbSBhdHRycyBUaGUgYXR0cmlidXRlcyBmb3IgdGhlIGVudGl0eS5cbiAgICogQHBhcmFtIG9wdGlvbnMgVGhlIG9wdGlvbnMgZm9yIHRoZSByZXF1ZXN0LlxuICAgKi9cbiAgcHVibGljIGNyZWF0ZShcbiAgICBhdHRyczogUGFydGlhbDxUPixcbiAgICBvcHRpb25zPzogT0RhdGFPcHRpb25zXG4gICk6IE9ic2VydmFibGU8T0RhdGFFbnRpdHk8VD4+IHtcbiAgICByZXR1cm4gdGhpcy5lbnRpdGllcygpLmNyZWF0ZShhdHRycywgb3B0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIGFuIGVudGl0eSBpbiB0aGUgZW50aXR5IHNldC5cbiAgICogQHBhcmFtIGtleSBUaGUgZW50aXR5IGtleS5cbiAgICogQHBhcmFtIGF0dHJzIFRoZSBhdHRyaWJ1dGVzIGZvciB0aGUgZW50aXR5LlxuICAgKiBAcGFyYW0gZXRhZyBUaGUgZXRhZyBmb3IgdGhlIGVudGl0eS5cbiAgICogQHBhcmFtIG9wdGlvbnMgVGhlIG9wdGlvbnMgZm9yIHRoZSByZXF1ZXN0LlxuICAgKi9cbiAgcHVibGljIHVwZGF0ZShcbiAgICBrZXk6IEVudGl0eUtleTxUPixcbiAgICBhdHRyczogUGFydGlhbDxUPixcbiAgICBvcHRpb25zPzogT0RhdGFPcHRpb25zICYgeyBldGFnPzogc3RyaW5nIH1cbiAgKTogT2JzZXJ2YWJsZTxPRGF0YUVudGl0eTxUPj4ge1xuICAgIGNvbnN0IHJlcyA9IHRoaXMuZW50aXR5KGtleSk7XG4gICAgaWYgKCFyZXMuaGFzS2V5KCkpIHJldHVybiB0aHJvd0Vycm9yKCdSZXNvdXJjZSB3aXRob3V0IGtleScpO1xuICAgIHJldHVybiByZXMudXBkYXRlKGF0dHJzLCBvcHRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQYXRjaCBhbiBlbnRpdHkgaW4gdGhlIGVudGl0eSBzZXQuXG4gICAqIEBwYXJhbSBrZXkgVGhlIGVudGl0eSBrZXkuXG4gICAqIEBwYXJhbSBhdHRycyBUaGUgYXR0cmlidXRlcyBmb3IgdGhlIGVudGl0eS5cbiAgICogQHBhcmFtIGV0YWcgVGhlIGV0YWcgZm9yIHRoZSBlbnRpdHkuXG4gICAqIEBwYXJhbSBvcHRpb25zIFRoZSBvcHRpb25zIGZvciB0aGUgcmVxdWVzdC5cbiAgICovXG4gIHB1YmxpYyBtb2RpZnkoXG4gICAga2V5OiBFbnRpdHlLZXk8VD4sXG4gICAgYXR0cnM6IFBhcnRpYWw8VD4sXG4gICAgb3B0aW9ucz86IE9EYXRhT3B0aW9ucyAmIHsgZXRhZz86IHN0cmluZyB9XG4gICk6IE9ic2VydmFibGU8T0RhdGFFbnRpdHk8VD4+IHtcbiAgICBjb25zdCByZXMgPSB0aGlzLmVudGl0eShrZXkpO1xuICAgIGlmICghcmVzLmhhc0tleSgpKSByZXR1cm4gdGhyb3dFcnJvcignUmVzb3VyY2Ugd2l0aG91dCBrZXknKTtcbiAgICByZXR1cm4gcmVzLm1vZGlmeShhdHRycywgb3B0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICogRGVsZXRlIGFuIGVudGl0eSBpbiB0aGUgZW50aXR5IHNldC5cbiAgICogQHBhcmFtIGtleSBUaGUgZW50aXR5IGtleS5cbiAgICogQHBhcmFtIGV0YWcgVGhlIGV0YWcgZm9yIHRoZSBlbnRpdHkuXG4gICAqIEBwYXJhbSBvcHRpb25zIFRoZSBvcHRpb25zIGZvciB0aGUgcmVxdWVzdC5cbiAgICovXG4gIHB1YmxpYyBkZXN0cm95KFxuICAgIGtleTogRW50aXR5S2V5PFQ+LFxuICAgIG9wdGlvbnM/OiBPRGF0YU9wdGlvbnMgJiB7IGV0YWc/OiBzdHJpbmcgfVxuICApIHtcbiAgICBjb25zdCByZXMgPSB0aGlzLmVudGl0eShrZXkpO1xuICAgIGlmICghcmVzLmhhc0tleSgpKSByZXR1cm4gdGhyb3dFcnJvcignUmVzb3VyY2Ugd2l0aG91dCBrZXknKTtcbiAgICByZXR1cm4gcmVzLmRlc3Ryb3kob3B0aW9ucyk7XG4gIH1cblxuICAvLyNyZWdpb24gU2hvcnRjdXRzXG4gIC8qKlxuICAgKiBHZXQgb3IgY3JlYXRlIGFuIGVudGl0eSBpbiB0aGUgZW50aXR5IHNldC5cbiAgICogQHBhcmFtIGtleSBUaGUgZW50aXR5IGtleS5cbiAgICogQHBhcmFtIGF0dHJzIFRoZSBhdHRyaWJ1dGVzIGZvciB0aGUgZW50aXR5LlxuICAgKiBAcGFyYW0gZXRhZyBUaGUgZXRhZyBmb3IgdGhlIGVudGl0eS5cbiAgICogQHBhcmFtIG9wdGlvbnMgVGhlIG9wdGlvbnMgZm9yIHRoZSByZXF1ZXN0LlxuICAgKi9cbiAgcHVibGljIGZldGNoT3JDcmVhdGUoXG4gICAga2V5OiBFbnRpdHlLZXk8VD4sXG4gICAgYXR0cnM6IFBhcnRpYWw8VD4sXG4gICAgeyBldGFnLCAuLi5vcHRpb25zIH06IHsgZXRhZz86IHN0cmluZyB9ICYgT0RhdGFPcHRpb25zID0ge31cbiAgKTogT2JzZXJ2YWJsZTxPRGF0YUVudGl0eTxUPj4ge1xuICAgIHJldHVybiB0aGlzLmZldGNoT25lKGtleSwgeyBldGFnLCAuLi5vcHRpb25zIH0pLnBpcGUoXG4gICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHtcbiAgICAgICAgaWYgKGVycm9yLnN0YXR1cyA9PT0gNDA0KSByZXR1cm4gdGhpcy5jcmVhdGUoYXR0cnMsIG9wdGlvbnMpO1xuICAgICAgICBlbHNlIHJldHVybiB0aHJvd0Vycm9yKGVycm9yKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTYXZlIGFuIGVudGl0eSBpbiB0aGUgZW50aXR5IHNldC5cbiAgICogQHBhcmFtIGF0dHJzIFRoZSBhdHRyaWJ1dGVzIGZvciB0aGUgZW50aXR5LlxuICAgKiBAcGFyYW0gbWV0aG9kIFRoZSBtZXRob2QgdG8gdXNlLlxuICAgKiBAcGFyYW0gZXRhZyBUaGUgZXRhZyBmb3IgdGhlIGVudGl0eS5cbiAgICogQHBhcmFtIG9wdGlvbnMgVGhlIG9wdGlvbnMgZm9yIHRoZSByZXF1ZXN0LlxuICAgKi9cbiAgcHVibGljIHNhdmUoXG4gICAgYXR0cnM6IFBhcnRpYWw8VD4sXG4gICAge1xuICAgICAgZXRhZyxcbiAgICAgIG1ldGhvZCxcbiAgICAgIC4uLm9wdGlvbnNcbiAgICB9OiB7XG4gICAgICBldGFnPzogc3RyaW5nO1xuICAgICAgbWV0aG9kPzogJ2NyZWF0ZScgfCAndXBkYXRlJyB8ICdtb2RpZnknO1xuICAgIH0gJiBPRGF0YU9wdGlvbnMgPSB7fVxuICApIHtcbiAgICBsZXQgc2NoZW1hID0gdGhpcy5zdHJ1Y3R1cmVkVHlwZVNjaGVtYTtcbiAgICBpZiAobWV0aG9kID09PSB1bmRlZmluZWQgJiYgc2NoZW1hICE9PSB1bmRlZmluZWQgJiYgc2NoZW1hLmlzQ29tcG91bmRLZXkoKSlcbiAgICAgIHJldHVybiB0aHJvd0Vycm9yKFxuICAgICAgICAnQ29tcG9zaXRlIGtleSByZXF1aXJlIGEgc3BlY2lmaWMgbWV0aG9kLCB1c2UgY3JlYXRlL3VwZGF0ZS9wYXRjaCdcbiAgICAgICk7XG4gICAgbGV0IGtleSA9IHNjaGVtYSAmJiBzY2hlbWEucmVzb2x2ZUtleShhdHRycyk7XG4gICAgaWYgKG1ldGhvZCA9PT0gdW5kZWZpbmVkKSBtZXRob2QgPSBrZXkgIT09IHVuZGVmaW5lZCA/ICd1cGRhdGUnIDogJ2NyZWF0ZSc7XG4gICAgaWYgKChtZXRob2QgPT09ICd1cGRhdGUnIHx8IG1ldGhvZCA9PT0gJ21vZGlmeScpICYmIGtleSA9PT0gdW5kZWZpbmVkKVxuICAgICAgcmV0dXJuIHRocm93RXJyb3IoXCJDYW4ndCB1cGRhdGUvcGF0Y2ggZW50aXR5IHdpdGhvdXQga2V5XCIpO1xuICAgIHJldHVybiBtZXRob2QgPT09ICdjcmVhdGUnXG4gICAgICA/IHRoaXMuY3JlYXRlKGF0dHJzLCBvcHRpb25zKVxuICAgICAgOiBtZXRob2QgPT09ICdtb2RpZnknXG4gICAgICA/IHRoaXMubW9kaWZ5KGtleSwgYXR0cnMsIHsgZXRhZywgLi4ub3B0aW9ucyB9KVxuICAgICAgOiB0aGlzLnVwZGF0ZShrZXksIGF0dHJzLCB7IGV0YWcsIC4uLm9wdGlvbnMgfSk7XG4gIH1cbiAgLy8jZW5kcmVnaW9uXG59XG4iXX0=
@@ -0,0 +1,12 @@
1
+ import { ODataBaseService } from './base';
2
+ export class ODataEntityService extends ODataBaseService {
3
+ /**
4
+ * The schema for the structured type.
5
+ */
6
+ get structuredTypeSchema() {
7
+ return this.apiNameOrEntityType !== undefined
8
+ ? this.api.findStructuredTypeForType(this.apiNameOrEntityType)
9
+ : undefined;
10
+ }
11
+ }
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1vZGF0YS9zcmMvbGliL3NlcnZpY2VzL2VudGl0eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFFMUMsTUFBTSxPQUFnQixrQkFBc0IsU0FBUSxnQkFBZ0I7SUFJbEU7O09BRUc7SUFDSCxJQUFJLG9CQUFvQjtRQUN0QixPQUFPLElBQUksQ0FBQyxtQkFBbUIsS0FBSyxTQUFTO1lBQzNDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLHlCQUF5QixDQUFJLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztZQUNqRSxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ2hCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9EYXRhTW9kZWwgfSBmcm9tICcuLi9tb2RlbHMvbW9kZWwnO1xuaW1wb3J0IHsgRW50aXR5S2V5LCBPRGF0YVJlc291cmNlIH0gZnJvbSAnLi4vcmVzb3VyY2VzJztcbmltcG9ydCB7IE9EYXRhQmFzZVNlcnZpY2UgfSBmcm9tICcuL2Jhc2UnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgT0RhdGFFbnRpdHlTZXJ2aWNlPFQ+IGV4dGVuZHMgT0RhdGFCYXNlU2VydmljZSB7XG4gIHB1YmxpYyBhYnN0cmFjdCBlbnRpdHkoa2V5PzogRW50aXR5S2V5PFQ+KTogT0RhdGFSZXNvdXJjZTxUPjtcbiAgcHVibGljIGFic3RyYWN0IGF0dGFjaDxNIGV4dGVuZHMgT0RhdGFNb2RlbDxUPj4odmFsdWU6IE0pOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBUaGUgc2NoZW1hIGZvciB0aGUgc3RydWN0dXJlZCB0eXBlLlxuICAgKi9cbiAgZ2V0IHN0cnVjdHVyZWRUeXBlU2NoZW1hKCkge1xuICAgIHJldHVybiB0aGlzLmFwaU5hbWVPckVudGl0eVR5cGUgIT09IHVuZGVmaW5lZFxuICAgICAgPyB0aGlzLmFwaS5maW5kU3RydWN0dXJlZFR5cGVGb3JUeXBlPFQ+KHRoaXMuYXBpTmFtZU9yRW50aXR5VHlwZSlcbiAgICAgIDogdW5kZWZpbmVkO1xuICB9XG59XG4iXX0=
@@ -25,9 +25,9 @@ export class ODataServiceFactory {
25
25
  })(this.client, singletonName, apiNameOrEntityType);
26
26
  }
27
27
  }
28
- ODataServiceFactory.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.7", ngImport: i0, type: ODataServiceFactory, deps: [{ token: i1.ODataClient }], target: i0.ɵɵFactoryTarget.Injectable });
29
- ODataServiceFactory.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.7", ngImport: i0, type: ODataServiceFactory });
30
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.7", ngImport: i0, type: ODataServiceFactory, decorators: [{
28
+ ODataServiceFactory.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: ODataServiceFactory, deps: [{ token: i1.ODataClient }], target: i0.ɵɵFactoryTarget.Injectable });
29
+ ODataServiceFactory.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: ODataServiceFactory });
30
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: ODataServiceFactory, decorators: [{
31
31
  type: Injectable
32
32
  }], ctorParameters: function () { return [{ type: i1.ODataClient }]; } });
33
33
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItb2RhdGEvc3JjL2xpYi9zZXJ2aWNlcy9mYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3JELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7O0FBR3BELE1BQU0sT0FBTyxtQkFBbUI7SUFDOUIsWUFBc0IsTUFBbUI7UUFBbkIsV0FBTSxHQUFOLE1BQU0sQ0FBYTtJQUFHLENBQUM7SUFFN0M7Ozs7T0FJRztJQUNILFNBQVMsQ0FDUCxhQUFxQixFQUNyQixtQkFBNEI7UUFFNUIsT0FBTyxJQUFJLENBQUMsS0FBTSxTQUFRLHFCQUF3QjtTQUFHLENBQUMsQ0FDcEQsSUFBSSxDQUFDLE1BQU0sRUFDWCxhQUFhLEVBQ2IsbUJBQW1CLENBQ3BCLENBQUM7SUFDSixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsU0FBUyxDQUNQLGFBQXFCLEVBQ3JCLG1CQUE0QjtRQUU1QixPQUFPLElBQUksQ0FBQyxLQUFNLFNBQVEscUJBQXdCO1NBQUcsQ0FBQyxDQUNwRCxJQUFJLENBQUMsTUFBTSxFQUNYLGFBQWEsRUFDYixtQkFBbUIsQ0FDcEIsQ0FBQztJQUNKLENBQUM7O2dIQWhDVSxtQkFBbUI7b0hBQW5CLG1CQUFtQjsyRkFBbkIsbUJBQW1CO2tCQUQvQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT0RhdGFDbGllbnQgfSBmcm9tICcuLi9jbGllbnQnO1xuaW1wb3J0IHsgT0RhdGFFbnRpdHlTZXRTZXJ2aWNlIH0gZnJvbSAnLi9lbnRpdHktc2V0JztcbmltcG9ydCB7IE9EYXRhU2luZ2xldG9uU2VydmljZSB9IGZyb20gJy4vc2luZ2xldG9uJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE9EYXRhU2VydmljZUZhY3Rvcnkge1xuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgY2xpZW50OiBPRGF0YUNsaWVudCkge31cblxuICAvKipcbiAgICogRmFjdG9yeSBtZXRob2QgdG8gY3JlYXRlIGFuIGVudGl0eSBzZXQgc2VydmljZS5cbiAgICogQHBhcmFtIGVudGl0eVNldE5hbWUgTmFtZSBvZiB0aGUgZW50aXR5IHNldC5cbiAgICogQHBhcmFtIGFwaU5hbWVPckVudGl0eVR5cGUgTmFtZSBvZiB0aGUgQVBJIG9yIHRoZSB0eXBlIG9mIHRoZSBlbnRpdHkuXG4gICAqL1xuICBlbnRpdHlTZXQ8VD4oXG4gICAgZW50aXR5U2V0TmFtZTogc3RyaW5nLFxuICAgIGFwaU5hbWVPckVudGl0eVR5cGU/OiBzdHJpbmdcbiAgKTogT0RhdGFFbnRpdHlTZXRTZXJ2aWNlPFQ+IHtcbiAgICByZXR1cm4gbmV3IChjbGFzcyBleHRlbmRzIE9EYXRhRW50aXR5U2V0U2VydmljZTxUPiB7fSkoXG4gICAgICB0aGlzLmNsaWVudCxcbiAgICAgIGVudGl0eVNldE5hbWUsXG4gICAgICBhcGlOYW1lT3JFbnRpdHlUeXBlXG4gICAgKTtcbiAgfVxuXG4gIC8qKiBGYWN0b3J5IG1ldGhvZCB0byBjcmVhdGUgYSBzaW5nbGV0b24gc2VydmljZS5cbiAgICogQHBhcmFtIHNpbmdsZXRvbk5hbWUgTmFtZSBvZiB0aGUgc2luZ2xldG9uLlxuICAgKiBAcGFyYW0gYXBpTmFtZU9yRW50aXR5VHlwZSBOYW1lIG9mIHRoZSBBUEkgb3IgdGhlIHR5cGUgb2YgdGhlIGVudGl0eS5cbiAgICovXG4gIHNpbmdsZXRvbjxUPihcbiAgICBzaW5nbGV0b25OYW1lOiBzdHJpbmcsXG4gICAgYXBpTmFtZU9yRW50aXR5VHlwZT86IHN0cmluZ1xuICApOiBPRGF0YVNpbmdsZXRvblNlcnZpY2U8VD4ge1xuICAgIHJldHVybiBuZXcgKGNsYXNzIGV4dGVuZHMgT0RhdGFTaW5nbGV0b25TZXJ2aWNlPFQ+IHt9KShcbiAgICAgIHRoaXMuY2xpZW50LFxuICAgICAgc2luZ2xldG9uTmFtZSxcbiAgICAgIGFwaU5hbWVPckVudGl0eVR5cGVcbiAgICApO1xuICB9XG59XG4iXX0=
@@ -45,4 +45,4 @@ export class ODataSingletonService extends ODataEntityService {
45
45
  return res.modify(attrs, options);
46
46
  }
47
47
  }
48
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2luZ2xldG9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1vZGF0YS9zcmMvbGliL3NlcnZpY2VzL3NpbmdsZXRvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFJOUM7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLHFCQUF5QixTQUFRLGtCQUFxQjtJQUNqRTs7O09BR0c7SUFDSSxNQUFNO1FBQ1gsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFFRDs7O09BR0c7SUFDSSxNQUFNLENBQTBCLEtBQVE7UUFDN0MsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFJLGVBQWU7UUFDakIsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxNQUFNLENBQ1gsS0FBaUIsRUFDakIsT0FBMEM7UUFFMUMsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQzFCLE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksS0FBSyxDQUNWLEtBQWlCLEVBQ2pCLE9BQTBDO1FBRTFDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUMxQixPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3BDLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHtcbiAgT0RhdGFFbnRpdHksXG4gIE9EYXRhT3B0aW9ucyxcbiAgT0RhdGFTaW5nbGV0b25SZXNvdXJjZSxcbn0gZnJvbSAnLi4vcmVzb3VyY2VzJztcblxuaW1wb3J0IHsgT0RhdGFFbnRpdHlTZXJ2aWNlIH0gZnJvbSAnLi9lbnRpdHknO1xuaW1wb3J0IHR5cGUgeyBPRGF0YU1vZGVsIH0gZnJvbSAnLi4vbW9kZWxzL21vZGVsJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuLyoqXG4gKiBPRGF0YSBTaW5nbGV0b24gU2VydmljZVxuICogd3d3Lm9kYXRhLm9yZy9nZXR0aW5nLXN0YXJ0ZWQvYWR2YW5jZWQtdHV0b3JpYWwvI3NpbmdsZXRvblxuICovXG5leHBvcnQgY2xhc3MgT0RhdGFTaW5nbGV0b25TZXJ2aWNlPFQ+IGV4dGVuZHMgT0RhdGFFbnRpdHlTZXJ2aWNlPFQ+IHtcbiAgLyoqXG4gICAqIEdldCB0aGUgZW50aXR5IHJlc291cmNlIGZvciB0aGlzIHNlcnZpY2UuXG4gICAqIEBwYXJhbSBrZXkgVGhlIGVudGl0eSBrZXkuXG4gICAqL1xuICBwdWJsaWMgZW50aXR5KCk6IE9EYXRhU2luZ2xldG9uUmVzb3VyY2U8VD4ge1xuICAgIHJldHVybiB0aGlzLmNsaWVudC5zaW5nbGV0b24odGhpcy5uYW1lLCB0aGlzLmFwaU5hbWVPckVudGl0eVR5cGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEF0dGFjaCBhbiBleGlzdGluZyBtb2RlbCB0byB0aGlzIHNlcnZpY2UuXG4gICAqIEBwYXJhbSBtb2RlbCBUaGUgbW9kZWwgdG8gYXR0YWNoLlxuICAgKi9cbiAgcHVibGljIGF0dGFjaDxNIGV4dGVuZHMgT0RhdGFNb2RlbDxUPj4obW9kZWw6IE0pIHtcbiAgICBtb2RlbC5hdHRhY2godGhpcy5lbnRpdHkoKSk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHNjaGVtYSBmb3IgdGhlIHNpbmdsZXRvbi5cbiAgICovXG4gIGdldCBzaW5nbGV0b25TY2hlbWEoKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpLmZpbmRFbnRpdHlTZXRCeU5hbWUodGhpcy5uYW1lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgdGhlIHNpbmdsZXRvbiBlbnRpdHlcbiAgICogQHBhcmFtIGF0dHJzIFRoZSBhdHRyaWJ1dGVzIGZvciB0aGUgZW50aXR5LlxuICAgKiBAcGFyYW0gZXRhZyBUaGUgZXRhZyBmb3IgdGhlIGVudGl0eS5cbiAgICogQHBhcmFtIG9wdGlvbnMgVGhlIG9wdGlvbnMgZm9yIHRoZSByZXF1ZXN0LlxuICAgKi9cbiAgcHVibGljIHVwZGF0ZShcbiAgICBhdHRyczogUGFydGlhbDxUPixcbiAgICBvcHRpb25zPzogT0RhdGFPcHRpb25zICYgeyBldGFnPzogc3RyaW5nIH1cbiAgKTogT2JzZXJ2YWJsZTxPRGF0YUVudGl0eTxUPj4ge1xuICAgIGNvbnN0IHJlcyA9IHRoaXMuZW50aXR5KCk7XG4gICAgcmV0dXJuIHJlcy51cGRhdGUoYXR0cnMsIG9wdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFBhdGNoIHRoZSBzaW5nbGV0b24gZW50aXR5XG4gICAqIEBwYXJhbSBhdHRycyBUaGUgYXR0cmlidXRlcyBmb3IgdGhlIGVudGl0eS5cbiAgICogQHBhcmFtIGV0YWcgVGhlIGV0YWcgZm9yIHRoZSBlbnRpdHkuXG4gICAqIEBwYXJhbSBvcHRpb25zIFRoZSBvcHRpb25zIGZvciB0aGUgcmVxdWVzdC5cbiAgICovXG4gIHB1YmxpYyBwYXRjaChcbiAgICBhdHRyczogUGFydGlhbDxUPixcbiAgICBvcHRpb25zPzogT0RhdGFPcHRpb25zICYgeyBldGFnPzogc3RyaW5nIH1cbiAgKTogT2JzZXJ2YWJsZTxPRGF0YUVudGl0eTxUPj4ge1xuICAgIGNvbnN0IHJlcyA9IHRoaXMuZW50aXR5KCk7XG4gICAgcmV0dXJuIHJlcy5tb2RpZnkoYXR0cnMsIG9wdGlvbnMpO1xuICB9XG59XG4iXX0=
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2luZ2xldG9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1vZGF0YS9zcmMvbGliL3NlcnZpY2VzL3NpbmdsZXRvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFPQSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFOUM7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLHFCQUF5QixTQUFRLGtCQUFxQjtJQUNqRTs7O09BR0c7SUFDSSxNQUFNO1FBQ1gsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFFRDs7O09BR0c7SUFDSSxNQUFNLENBQTBCLEtBQVE7UUFDN0MsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFJLGVBQWU7UUFDakIsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxNQUFNLENBQ1gsS0FBaUIsRUFDakIsT0FBMEM7UUFFMUMsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQzFCLE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksS0FBSyxDQUNWLEtBQWlCLEVBQ2pCLE9BQTBDO1FBRTFDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUMxQixPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3BDLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB0eXBlIHsgT0RhdGFNb2RlbCB9IGZyb20gJy4uL21vZGVscy9tb2RlbCc7XG5pbXBvcnQgdHlwZSB7XG4gIE9EYXRhRW50aXR5LFxuICBPRGF0YU9wdGlvbnMsXG4gIE9EYXRhU2luZ2xldG9uUmVzb3VyY2UsXG59IGZyb20gJy4uL3Jlc291cmNlcyc7XG5pbXBvcnQgeyBPRGF0YUVudGl0eVNlcnZpY2UgfSBmcm9tICcuL2VudGl0eSc7XG5cbi8qKlxuICogT0RhdGEgU2luZ2xldG9uIFNlcnZpY2VcbiAqIHd3dy5vZGF0YS5vcmcvZ2V0dGluZy1zdGFydGVkL2FkdmFuY2VkLXR1dG9yaWFsLyNzaW5nbGV0b25cbiAqL1xuZXhwb3J0IGNsYXNzIE9EYXRhU2luZ2xldG9uU2VydmljZTxUPiBleHRlbmRzIE9EYXRhRW50aXR5U2VydmljZTxUPiB7XG4gIC8qKlxuICAgKiBHZXQgdGhlIGVudGl0eSByZXNvdXJjZSBmb3IgdGhpcyBzZXJ2aWNlLlxuICAgKiBAcGFyYW0ga2V5IFRoZSBlbnRpdHkga2V5LlxuICAgKi9cbiAgcHVibGljIGVudGl0eSgpOiBPRGF0YVNpbmdsZXRvblJlc291cmNlPFQ+IHtcbiAgICByZXR1cm4gdGhpcy5jbGllbnQuc2luZ2xldG9uKHRoaXMubmFtZSwgdGhpcy5hcGlOYW1lT3JFbnRpdHlUeXBlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBdHRhY2ggYW4gZXhpc3RpbmcgbW9kZWwgdG8gdGhpcyBzZXJ2aWNlLlxuICAgKiBAcGFyYW0gbW9kZWwgVGhlIG1vZGVsIHRvIGF0dGFjaC5cbiAgICovXG4gIHB1YmxpYyBhdHRhY2g8TSBleHRlbmRzIE9EYXRhTW9kZWw8VD4+KG1vZGVsOiBNKSB7XG4gICAgbW9kZWwuYXR0YWNoKHRoaXMuZW50aXR5KCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBzY2hlbWEgZm9yIHRoZSBzaW5nbGV0b24uXG4gICAqL1xuICBnZXQgc2luZ2xldG9uU2NoZW1hKCkge1xuICAgIHJldHVybiB0aGlzLmFwaS5maW5kRW50aXR5U2V0QnlOYW1lKHRoaXMubmFtZSk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIHRoZSBzaW5nbGV0b24gZW50aXR5XG4gICAqIEBwYXJhbSBhdHRycyBUaGUgYXR0cmlidXRlcyBmb3IgdGhlIGVudGl0eS5cbiAgICogQHBhcmFtIGV0YWcgVGhlIGV0YWcgZm9yIHRoZSBlbnRpdHkuXG4gICAqIEBwYXJhbSBvcHRpb25zIFRoZSBvcHRpb25zIGZvciB0aGUgcmVxdWVzdC5cbiAgICovXG4gIHB1YmxpYyB1cGRhdGUoXG4gICAgYXR0cnM6IFBhcnRpYWw8VD4sXG4gICAgb3B0aW9ucz86IE9EYXRhT3B0aW9ucyAmIHsgZXRhZz86IHN0cmluZyB9XG4gICk6IE9ic2VydmFibGU8T0RhdGFFbnRpdHk8VD4+IHtcbiAgICBjb25zdCByZXMgPSB0aGlzLmVudGl0eSgpO1xuICAgIHJldHVybiByZXMudXBkYXRlKGF0dHJzLCBvcHRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQYXRjaCB0aGUgc2luZ2xldG9uIGVudGl0eVxuICAgKiBAcGFyYW0gYXR0cnMgVGhlIGF0dHJpYnV0ZXMgZm9yIHRoZSBlbnRpdHkuXG4gICAqIEBwYXJhbSBldGFnIFRoZSBldGFnIGZvciB0aGUgZW50aXR5LlxuICAgKiBAcGFyYW0gb3B0aW9ucyBUaGUgb3B0aW9ucyBmb3IgdGhlIHJlcXVlc3QuXG4gICAqL1xuICBwdWJsaWMgcGF0Y2goXG4gICAgYXR0cnM6IFBhcnRpYWw8VD4sXG4gICAgb3B0aW9ucz86IE9EYXRhT3B0aW9ucyAmIHsgZXRhZz86IHN0cmluZyB9XG4gICk6IE9ic2VydmFibGU8T0RhdGFFbnRpdHk8VD4+IHtcbiAgICBjb25zdCByZXMgPSB0aGlzLmVudGl0eSgpO1xuICAgIHJldHVybiByZXMubW9kaWZ5KGF0dHJzLCBvcHRpb25zKTtcbiAgfVxufVxuIl19
@@ -201,4 +201,4 @@ export class ODataSettings {
201
201
  return values[0];
202
202
  }
203
203
  }
204
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZ3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLW9kYXRhL3NyYy9saWIvc2V0dGluZ3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBU0EsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUtqQyxNQUFNLE9BQU8sYUFBYTtJQUV4QixZQUFZLEdBQUcsT0FBb0I7UUFDakMsSUFBSSxDQUFDLElBQUksR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQzFELElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ3hCLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssU0FBUyxDQUFDO2dCQUM3QyxNQUFNLElBQUksS0FBSyxDQUFDLDBDQUEwQyxDQUFDLENBQUM7WUFDOUQsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDO2dCQUMvQyxNQUFNLElBQUksS0FBSyxDQUFDLDJDQUEyQyxDQUFDLENBQUM7U0FDaEU7UUFDRCxtREFBbUQ7UUFDbkQsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO1lBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO0lBQ3RFLENBQUM7SUFFRCxTQUFTLENBQUMsUUFFVDtRQUNDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FB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QUM7YUFDekMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNwQixJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQztZQUNyQixNQUFNLEtBQUssQ0FBQyx1QkFBdUIsSUFBSSxZQUFZLENBQUMsQ0FBQztRQUN2RCxJQUFJLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQztZQUNuQixNQUFNLEtBQUssQ0FBQyw4Q0FBOEMsQ0FBQyxDQUFDO1FBQzlELE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBOEIsQ0FBQztJQUNoRCxDQUFDO0NBRUYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBcGlDb25maWcsIFBhcnNlciB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHtcbiAgT0RhdGFDYWxsYWJsZSxcbiAgT0RhdGFFbnRpdHlTZXQsXG4gIE9EYXRhRW51bVR5cGUsXG4gIE9EYXRhU3RydWN0dXJlZFR5cGUsXG59IGZyb20gJy4vc2NoZW1hJztcbmltcG9ydCB7IE9EYXRhQ29sbGVjdGlvbiwgT0RhdGFNb2RlbCB9IGZyb20gJy4vbW9kZWxzJztcblxuaW1wb3J0IHsgT0RhdGFBcGkgfSBmcm9tICcuL2FwaSc7XG5pbXBvcnQgeyBPRGF0YUVudGl0eVNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2VudGl0eSc7XG5pbXBvcnQgeyBPRGF0YVJlcXVlc3QgfSBmcm9tICcuL3Jlc291cmNlcyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbmV4cG9ydCBjbGFzcyBPRGF0YVNldHRpbmdzIHtcbiAgYXBpczogT0RhdGFBcGlbXTtcbiAgY29uc3RydWN0b3IoLi4uY29uZmlnczogQXBpQ29uZmlnW10pIHtcbiAgICB0aGlzLmFwaXMgPSBjb25maWdzLm1hcCgoY29uZmlnKSA9PiBuZXcgT0RhdGFBcGkoY29uZmlnKSk7XG4gICAgaWYgKHRoaXMuYXBpcy5sZW5ndGggPiAxKSB7XG4gICAgICBpZiAodGhpcy5hcGlzLnNvbWUoKGMpID0+IGMubmFtZSA9PT0gdW5kZWZpbmVkKSlcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdNdWx0aXBsZSBBUElzOiBOZWVkcyBjb25maWd1cmF0aW9uIG5hbWVzJyk7XG4gICAgICBpZiAodGhpcy5hcGlzLmZpbHRlcigoYykgPT4gYy5kZWZhdWx0KS5sZW5ndGggPiAxKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ011bHRpcGxlIEFQSXM6IE5lZWRzIG9ubHkgb25lIGRlZmF1bHQgYXBpJyk7XG4gICAgfVxuICAgIC8vIElmIG5vdCBkZWZhdWx0IHNldHVwIGZpcnN0IGNvbmZpZyBhcyBkZWZhdWx0IGFwaVxuICAgIGlmICh0aGlzLmFwaXMuZXZlcnkoKGMpID0+ICFjLmRlZmF1bHQpKSB0aGlzLmFwaXNbMF0uZGVmYXVsdCA9IHRydWU7XG4gIH1cblxuICBjb25maWd1cmUoc2V0dGluZ3M6IHtcbiAgICByZXF1ZXN0ZXI/OiAocmVxdWVzdDogT0RhdGFSZXF1ZXN0PGFueT4pID0+IE9ic2VydmFibGU8YW55PjtcbiAgfSkge1xuICAgIHRoaXMuYXBpcy5mb3JFYWNoKChhcGkpID0+IGFwaS5jb25maWd1cmUoc2V0dGluZ3MpKTtcbiAgfVxuXG4gIHB1YmxpYyBkZWZhdWx0QXBpKCkge1xuICAgIHJldHVybiB0aGlzLmFwaXMuZmluZCgoYykgPT4gYy5kZWZhdWx0KSBhcyBPRGF0YUFwaTtcbiAgfVxuICBwdWJsaWMgZmluZEFwaUJ5TmFtZShuYW1lOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5hcGlzLmZpbmQoKGMpID0+IGMubmFtZSA9PT0gbmFtZSk7XG4gIH1cbiAgcHVibGljIGFwaUJ5TmFtZShuYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBhcGkgPSB0aGlzLmZpbmRBcGlCeU5hbWUobmFtZSk7XG4gICAgaWYgKGFwaSA9PT0gdW5kZWZpbmVkKSB0aHJvdyBuZXcgRXJyb3IoYE5vIEFQSSBmb3IgbmFtZTogJHtuYW1lfWApO1xuICAgIHJldHVybiBhcGk7XG4gIH1cbiAgcHVibGljIGZpbmRBcGlGb3JUeXBlcyh0eXBlczogc3RyaW5nW10pIHtcbiAgICByZXR1cm4gdGhpcy5hcGlzLmZpbmQoKGMpID0+XG4gICAgICBjLnNjaGVtYXMuc29tZSgocykgPT4gdHlwZXMuc29tZSgodHlwZSkgPT4gcy5pc05hbWVzcGFjZU9mKHR5cGUpKSlcbiAgICApO1xuICB9XG4gIHB1YmxpYyBmaW5kQXBpRm9yVHlwZSh0eXBlOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5maW5kQXBpRm9yVHlwZXMoW3R5cGVdKTtcbiAgfVxuICBwdWJsaWMgYXBpRm9yVHlwZSh0eXBlOiBzdHJpbmcpIHtcbiAgICBjb25zdCBhcGkgPSB0aGlzLmZpbmRBcGlGb3JUeXBlKHR5cGUpO1xuICAgIGlmIChhcGkgPT09IHVuZGVmaW5lZCkgdGhyb3cgbmV3IEVycm9yKGBObyBBUEkgZm9yIHR5cGU6ICR7dHlwZX1gKTtcbiAgICByZXR1cm4gYXBpO1xuICB9XG5cbiAgLy8jcmVnaW9uIENvbmZpZ3Mgc2hvcnRjdXRzXG4gIHB1YmxpYyBlbnVtVHlwZUZvclR5cGU8VD4odHlwZTogc3RyaW5nKSB7XG4gICAgbGV0IHZhbHVlcyA9IHRoaXMuYXBpc1xuICAgICAgLm1hcCgoYXBpKSA9PiBhcGkuZmluZEVudW1UeXBlRm9yVHlwZTxUPih0eXBlKSlcbiAgICAgIC5maWx0ZXIoKGUpID0+IGUpO1xuICAgIGlmICh2YWx1ZXMubGVuZ3RoID09PSAwKSB0aHJvdyBFcnJvcihgTm8gRW51bSBmb3IgdHlwZSAke3R5cGV9IHdhcyBmb3VuZGApO1xuICAgIGlmICh2YWx1ZXMubGVuZ3RoID4gMSlcbiAgICAgIHRocm93IEVycm9yKCdNdWx0aXBsZSBBUElzOiBNb3JlIHRoYW4gb25lIHZhbHVlIHdhcyBmb3VuZCcpO1xuICAgIHJldHVybiB2YWx1ZXNbMF0gYXMgT0RhdGFFbnVtVHlwZTxUPjtcbiAgfVxuXG4gIHB1YmxpYyBzdHJ1Y3R1cmVkVHlwZUZvclR5cGU8VD4odHlwZTogc3RyaW5nKSB7XG4gICAgbGV0IHZhbHVlcyA9IHRoaXMuYXBpc1xuICAgICAgLm1hcCgoYXBpKSA9PiBhcGkuZmluZFN0cnVjdHVyZWRUeXBlRm9yVHlwZTxUPih0eXBlKSlcbiAgICAgIC5maWx0ZXIoKGUpID0+IGUpO1xuICAgIGlmICh2YWx1ZXMubGVuZ3RoID09PSAwKVxuICAgICAgdGhyb3cgRXJyb3IoYE5vIFN0cnVjdHVyZWQgZm9yIHR5cGUgJHt0eXBlfSB3YXMgZm91bmRgKTtcbiAgICBpZiAodmFsdWVzLmxlbmd0aCA+IDEpXG4gICAgICB0aHJvdyBFcnJvcignTXVsdGlwbGUgQVBJczogTW9yZSB0aGFuIG9uZSB2YWx1ZSB3YXMgZm91bmQnKTtcbiAgICByZXR1cm4gdmFsdWVzWzBdIGFzIE9EYXRhU3RydWN0dXJlZFR5cGU8VD47XG4gIH1cblxuICBwdWJsaWMgY2FsbGFibGVGb3JUeXBlPFQ+KHR5cGU6IHN0cmluZywgYmluZGluZ1R5cGU/OiBzdHJpbmcpIHtcbiAgICBsZXQgdmFsdWVzID0gdGhpcy5hcGlzXG4gICAgICAubWFwKChhcGkpID0+IGFwaS5maW5kQ2FsbGFibGVGb3JUeXBlPFQ+KHR5cGUsIGJpbmRpbmdUeXBlKSlcbiAgICAgIC5maWx0ZXIoKGUpID0+IGUpO1xuICAgIGlmICh2YWx1ZXMubGVuZ3RoID09PSAwKVxuICAgICAgdGhyb3cgRXJyb3IoYE5vIENhbGxhYmxlIGZvciB0eXBlICR7dHlwZX0gd2FzIGZvdW5kYCk7XG4gICAgaWYgKHZhbHVlcy5sZW5ndGggPiAxKVxuICAgICAgdGhyb3cgRXJyb3IoJ011bHRpcGxlIEFQSXM6IE1vcmUgdGhhbiBvbmUgdmFsdWUgd2FzIGZvdW5kJyk7XG4gICAgcmV0dXJuIHZhbHVlc1swXSBhcyBPRGF0YUNhbGxhYmxlPFQ+O1xuICB9XG5cbiAgcHVibGljIGVudGl0eVNldEZvclR5cGUodHlwZTogc3RyaW5nKSB7XG4gICAgbGV0IHZhbHVlcyA9IHRoaXMuYXBpc1xuICAgICAgLm1hcCgoYXBpKSA9PiBhcGkuZmluZEVudGl0eVNldEZvclR5cGUodHlwZSkpXG4gICAgICAuZmlsdGVyKChlKSA9PiBlKTtcbiAgICBpZiAodmFsdWVzLmxlbmd0aCA9PT0gMClcbiAgICAgIHRocm93IEVycm9yKGBObyBFbnRpdHlTZXQgZm9yIHR5cGUgJHt0eXBlfSB3YXMgZm91bmRgKTtcbiAgICBpZiAodmFsdWVzLmxlbmd0aCA+IDEpXG4gICAgICB0aHJvdyBFcnJvcignTXVsdGlwbGUgQVBJczogTW9yZSB0aGFuIG9uZSB2YWx1ZSB3YXMgZm91bmQnKTtcbiAgICByZXR1cm4gdmFsdWVzWzBdIGFzIE9EYXRhRW50aXR5U2V0O1xuICB9XG5cbiAgcHVibGljIHBhcnNlckZvclR5cGU8VD4odHlwZTogc3RyaW5nKSB7XG4gICAgbGV0IHZhbHVlcyA9IHRoaXMuYXBpc1xuICAgICAgLm1hcCgoYXBpKSA9PiBhcGkucGFyc2VyRm9yVHlwZTxUPih0eXBlKSlcbiAgICAgIC5maWx0ZXIoKGUpID0+IGUpO1xuICAgIGlmICh2YWx1ZXMubGVuZ3RoID09PSAwKVxuICAgICAgdGhyb3cgRXJyb3IoYE5vIFBhcnNlciBmb3IgdHlwZSAke3R5cGV9IHdhcyBmb3VuZGApO1xuICAgIGlmICghdHlwZS5zdGFydHNXaXRoKCdFZG0uJykgJiYgdmFsdWVzLmxlbmd0aCA+IDEpXG4gICAgICB0aHJvdyBFcnJvcignTXVsdGlwbGUgQVBJczogTW9yZSB0aGFuIG9uZSB2YWx1ZSB3YXMgZm91bmQnKTtcbiAgICByZXR1cm4gdmFsdWVzWzBdIGFzIFBhcnNlcjxUPjtcbiAgfVxuXG4gIHB1YmxpYyBtb2RlbEZvclR5cGUodHlwZTogc3RyaW5nKSB7XG4gICAgbGV0IHZhbHVlcyA9IHRoaXMuYXBpc1xuICAgICAgLm1hcCgoYXBpKSA9PiBhcGkuZmluZE1vZGVsRm9yVHlwZSh0eXBlKSlcbiAgICAgIC5maWx0ZXIoKGUpID0+IGUpO1xuICAgIGlmICh2YWx1ZXMubGVuZ3RoID09PSAwKSB0aHJvdyBFcnJvcihgTm8gTW9kZWwgZm9yIHR5cGUgJHt0eXBlfSB3YXMgZm91bmRgKTtcbiAgICBpZiAodmFsdWVzLmxlbmd0aCA+IDEpXG4gICAgICB0aHJvdyBFcnJvcignTXVsdGlwbGUgQVBJczogTW9yZSB0aGFuIG9uZSB2YWx1ZSB3YXMgZm91bmQnKTtcbiAgICByZXR1cm4gdmFsdWVzWzBdIGFzIHR5cGVvZiBPRGF0YU1vZGVsO1xuICB9XG5cbiAgcHVibGljIGNvbGxlY3Rpb25Gb3JUeXBlKHR5cGU6IHN0cmluZykge1xuICAgIGxldCB2YWx1ZXMgPSB0aGlzLmFwaXNcbiAgICAgIC5tYXAoKGFwaSkgPT4gYXBpLmZpbmRDb2xsZWN0aW9uRm9yVHlwZSh0eXBlKSlcbiAgICAgIC5maWx0ZXIoKGUpID0+IGUpO1xuICAgIGlmICh2YWx1ZXMubGVuZ3RoID09PSAwKVxuICAgICAgdGhyb3cgRXJyb3IoYE5vIENvbGxlY3Rpb24gZm9yIHR5cGUgJHt0eXBlfSB3YXMgZm91bmRgKTtcbiAgICBpZiAodmFsdWVzLmxlbmd0aCA+IDEpXG4gICAgICB0aHJvdyBFcnJvcignTXVsdGlwbGUgQVBJczogTW9yZSB0aGFuIG9uZSB2YWx1ZSB3YXMgZm91bmQnKTtcbiAgICByZXR1cm4gdmFsdWVzWzBdIGFzIHR5cGVvZiBPRGF0YUNvbGxlY3Rpb247XG4gIH1cblxuICBwdWJsaWMgc2VydmljZUZvclR5cGUodHlwZTogc3RyaW5nKSB7XG4gICAgbGV0IHZhbHVlcyA9IHRoaXMuYXBpc1xuICAgICAgLm1hcCgoYXBpKSA9PiBhcGkuZmluZFNlcnZpY2VGb3JUeXBlKHR5cGUpKVxuICAgICAgLmZpbHRlcigoZSkgPT4gZSk7XG4gICAgaWYgKHZhbHVlcy5sZW5ndGggPT09IDApXG4gICAgICB0aHJvdyBFcnJvcihgTm8gU2VydmljZSBmb3IgdHlwZSAke3R5cGV9IHdhcyBmb3VuZGApO1xuICAgIGlmICh2YWx1ZXMubGVuZ3RoID4gMSlcbiAgICAgIHRocm93IEVycm9yKCdNdWx0aXBsZSBBUElzOiBNb3JlIHRoYW4gb25lIHZhbHVlIHdhcyBmb3VuZCcpO1xuICAgIHJldHVybiB2YWx1ZXNbMF0gYXMgdHlwZW9mIE9EYXRhRW50aXR5U2VydmljZTtcbiAgfVxuICBwdWJsaWMgc2VydmljZUZvckVudGl0eVR5cGUodHlwZTogc3RyaW5nKSB7XG4gICAgbGV0IHZhbHVlcyA9IHRoaXMuYXBpc1xuICAgICAgLm1hcCgoYXBpKSA9PiBhcGkuZmluZFNlcnZpY2VGb3JFbnRpdHlUeXBlKHR5cGUpKVxuICAgICAgLmZpbHRlcigoZSkgPT4gZSk7XG4gICAgaWYgKHZhbHVlcy5sZW5ndGggPT09IDApXG4gICAgICB0aHJvdyBFcnJvcihgTm8gU2VydmljZSBmb3IgdHlwZSAke3R5cGV9IHdhcyBmb3VuZGApO1xuICAgIGlmICh2YWx1ZXMubGVuZ3RoID4gMSlcbiAgICAgIHRocm93IEVycm9yKCdNdWx0aXBsZSBBUElzOiBNb3JlIHRoYW4gb25lIHZhbHVlIHdhcyBmb3VuZCcpO1xuICAgIHJldHVybiB2YWx1ZXNbMF0gYXMgdHlwZW9mIE9EYXRhRW50aXR5U2VydmljZTtcbiAgfVxuXG4gIHB1YmxpYyBlbnVtVHlwZUJ5TmFtZTxUPihuYW1lOiBzdHJpbmcpIHtcbiAgICBsZXQgdmFsdWVzID0gdGhpcy5hcGlzXG4gICAgICAubWFwKChhcGkpID0+IGFwaS5maW5kRW51bVR5cGVCeU5hbWU8VD4obmFtZSkpXG4gICAgICAuZmlsdGVyKChlKSA9PiBlKTtcbiAgICBpZiAodmFsdWVzLmxlbmd0aCA9PT0gMCkgdGhyb3cgRXJyb3IoYE5vIEVudW0gZm9yIG5hbWUgJHtuYW1lfSB3YXMgZm91bmRgKTtcbiAgICBpZiAodmFsdWVzLmxlbmd0aCA+IDEpXG4gICAgICB0aHJvdyBFcnJvcignTXVsdGlwbGUgQVBJczogTW9yZSB0aGFuIG9uZSB2YWx1ZSB3YXMgZm91bmQnKTtcbiAgICByZXR1cm4gdmFsdWVzWzBdIGFzIE9EYXRhRW51bVR5cGU8VD47XG4gIH1cblxuICBwdWJsaWMgc3RydWN0dXJlZFR5cGVCeU5hbWU8VD4obmFtZTogc3RyaW5nKSB7XG4gICAgbGV0IHZhbHVlcyA9IHRoaXMuYXBpc1xuICAgICAgLm1hcCgoYXBpKSA9PiBhcGkuZmluZFN0cnVjdHVyZWRUeXBlQnlOYW1lPFQ+KG5hbWUpKVxuICAgICAgLmZpbHRlcigoZSkgPT4gZSk7XG4gICAgaWYgKHZhbHVlcy5sZW5ndGggPT09IDApXG4gICAgICB0aHJvdyBFcnJvcihgTm8gU3RydWN0dXJlZCBmb3IgbmFtZSAke25hbWV9IHdhcyBmb3VuZGApO1xuICAgIGlmICh2YWx1ZXMubGVuZ3RoID4gMSlcbiAgICAgIHRocm93IEVycm9yKCdNdWx0aXBsZSBTdHJ1Y3R1cmVkOiBNb3JlIHRoYW4gb25lIHZhbHVlIHdhcyBmb3VuZCcpO1xuICAgIHJldHVybiB2YWx1ZXNbMF0gYXMgT0RhdGFTdHJ1Y3R1cmVkVHlwZTxUPjtcbiAgfVxuXG4gIHB1YmxpYyBjYWxsYWJsZUJ5TmFtZTxUPihuYW1lOiBzdHJpbmcsIGJpbmRpbmdUeXBlPzogc3RyaW5nKSB7XG4gICAgbGV0IHZhbHVlcyA9IHRoaXMuYXBpc1xuICAgICAgLm1hcCgoYXBpKSA9PiBhcGkuZmluZENhbGxhYmxlQnlOYW1lPFQ+KG5hbWUsIGJpbmRpbmdUeXBlKSlcbiAgICAgIC5maWx0ZXIoKGUpID0+IGUpO1xuICAgIGlmICh2YWx1ZXMubGVuZ3RoID09PSAwKVxuICAgICAgdGhyb3cgRXJyb3IoYE5vIENhbGxhYmxlIGZvciBuYW1lICR7bmFtZX0gd2FzIGZvdW5kYCk7XG4gICAgaWYgKHZhbHVlcy5sZW5ndGggPiAxKVxuICAgICAgdGhyb3cgRXJyb3IoJ011bHRpcGxlIENhbGxhYmxlOiBNb3JlIHRoYW4gb25lIHZhbHVlIHdhcyBmb3VuZCcpO1xuICAgIHJldHVybiB2YWx1ZXNbMF0gYXMgT0RhdGFDYWxsYWJsZTxUPjtcbiAgfVxuXG4gIHB1YmxpYyBlbnRpdHlTZXRCeU5hbWUobmFtZTogc3RyaW5nKSB7XG4gICAgbGV0IHZhbHVlcyA9IHRoaXMuYXBpc1xuICAgICAgLm1hcCgoYXBpKSA9PiBhcGkuZmluZEVudGl0eVNldEJ5TmFtZShuYW1lKSlcbiAgICAgIC5maWx0ZXIoKGUpID0+IGUpO1xuICAgIGlmICh2YWx1ZXMubGVuZ3RoID09PSAwKVxuICAgICAgdGhyb3cgRXJyb3IoYE5vIEVudGl0eVNldCBmb3IgbmFtZSAke25hbWV9IHdhcyBmb3VuZGApO1xuICAgIGlmICh2YWx1ZXMubGVuZ3RoID4gMSlcbiAgICAgIHRocm93IEVycm9yKCdNdWx0aXBsZSBFbnRpdHlTZXQ6IE1vcmUgdGhhbiBvbmUgdmFsdWUgd2FzIGZvdW5kJyk7XG4gICAgcmV0dXJuIHZhbHVlc1swXSBhcyBPRGF0YUVudGl0eVNldDtcbiAgfVxuXG4gIHB1YmxpYyBtb2RlbEJ5TmFtZShuYW1lOiBzdHJpbmcpIHtcbiAgICBsZXQgdmFsdWVzID0gdGhpcy5hcGlzXG4gICAgICAubWFwKChhcGkpID0+IGFwaS5maW5kTW9kZWxCeU5hbWUobmFtZSkpXG4gICAgICAuZmlsdGVyKChlKSA9PiBlKTtcbiAgICBpZiAodmFsdWVzLmxlbmd0aCA9PT0gMCkgdGhyb3cgRXJyb3IoYE5vIE1vZGVsIGZvciBuYW1lICR7bmFtZX0gd2FzIGZvdW5kYCk7XG4gICAgaWYgKHZhbHVlcy5sZW5ndGggPiAxKVxuICAgICAgdGhyb3cgRXJyb3IoJ011bHRpcGxlIEFQSXM6IE1vcmUgdGhhbiBvbmUgdmFsdWUgd2FzIGZvdW5kJyk7XG4gICAgcmV0dXJuIHZhbHVlc1swXSBhcyB0eXBlb2YgT0RhdGFNb2RlbDtcbiAgfVxuXG4gIHB1YmxpYyBjb2xsZWN0aW9uQnlOYW1lKG5hbWU6IHN0cmluZykge1xuICAgIGxldCB2YWx1ZXMgPSB0aGlzLmFwaXNcbiAgICAgIC5tYXAoKGFwaSkgPT4gYXBpLmZpbmRDb2xsZWN0aW9uQnlOYW1lKG5hbWUpKVxuICAgICAgLmZpbHRlcigoZSkgPT4gZSk7XG4gICAgaWYgKHZhbHVlcy5sZW5ndGggPT09IDApXG4gICAgICB0aHJvdyBFcnJvcihgTm8gQ29sbGVjdGlvbiBmb3IgbmFtZSAke25hbWV9IHdhcyBmb3VuZGApO1xuICAgIGlmICh2YWx1ZXMubGVuZ3RoID4gMSlcbiAgICAgIHRocm93IEVycm9yKCdNdWx0aXBsZSBBUElzOiBNb3JlIHRoYW4gb25lIHZhbHVlIHdhcyBmb3VuZCcpO1xuICAgIHJldHVybiB2YWx1ZXNbMF0gYXMgdHlwZW9mIE9EYXRhQ29sbGVjdGlvbjtcbiAgfVxuICBwdWJsaWMgc2VydmljZUJ5TmFtZShuYW1lOiBzdHJpbmcpIHtcbiAgICBsZXQgdmFsdWVzID0gdGhpcy5hcGlzXG4gICAgICAubWFwKChhcGkpID0+IGFwaS5maW5kU2VydmljZUJ5TmFtZShuYW1lKSlcbiAgICAgIC5maWx0ZXIoKGUpID0+IGUpO1xuICAgIGlmICh2YWx1ZXMubGVuZ3RoID09PSAwKVxuICAgICAgdGhyb3cgRXJyb3IoYE5vIFNlcnZpY2UgZm9yIG5hbWUgJHtuYW1lfSB3YXMgZm91bmRgKTtcbiAgICBpZiAodmFsdWVzLmxlbmd0aCA+IDEpXG4gICAgICB0aHJvdyBFcnJvcignTXVsdGlwbGUgQVBJczogTW9yZSB0aGFuIG9uZSB2YWx1ZSB3YXMgZm91bmQnKTtcbiAgICByZXR1cm4gdmFsdWVzWzBdIGFzIHR5cGVvZiBPRGF0YUVudGl0eVNlcnZpY2U7XG4gIH1cbiAgLy8jZW5kcmVnaW9uXG59XG4iXX0=
204
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZ3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLW9kYXRhL3NyYy9saWIvc2V0dGluZ3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQVlqQyxNQUFNLE9BQU8sYUFBYTtJQUV4QixZQUFZLEdBQUcsT0FBb0I7UUFDakMsSUFBSSxDQUFDLElBQUksR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQzFELElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ3hCLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssU0FBUyxDQUFDO2dCQUM3QyxNQUFNLElBQUksS0FBSyxDQUFDLDBDQUEwQyxDQUFDLENBQUM7WUFDOUQsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDO2dCQUMvQyxNQUFNLElBQUksS0FBSyxDQUFDLDJDQUEyQyxDQUFDLENBQUM7U0FDaEU7UUFDRCxtREFBbUQ7UUFDbkQsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO1lBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO0lBQ3RFLENBQUM7SUFFRCxTQUFTLENBQUMsUUFFVDtRQUNDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FB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QUM7YUFDekMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNwQixJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQztZQUNyQixNQUFNLEtBQUssQ0FBQyx1QkFBdUIsSUFBSSxZQUFZLENBQUMsQ0FBQztRQUN2RCxJQUFJLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQztZQUNuQixNQUFNLEtBQUssQ0FBQyw4Q0FBOEMsQ0FBQyxDQUFDO1FBQzlELE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBOEIsQ0FBQztJQUNoRCxDQUFDO0NBRUYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBPRGF0YUFwaSB9IGZyb20gJy4vYXBpJztcbmltcG9ydCB7IE9EYXRhQ29sbGVjdGlvbiwgT0RhdGFNb2RlbCB9IGZyb20gJy4vbW9kZWxzJztcbmltcG9ydCB7IE9EYXRhUmVxdWVzdCB9IGZyb20gJy4vcmVzb3VyY2VzJztcbmltcG9ydCB7XG4gIE9EYXRhQ2FsbGFibGUsXG4gIE9EYXRhRW50aXR5U2V0LFxuICBPRGF0YUVudW1UeXBlLFxuICBPRGF0YVN0cnVjdHVyZWRUeXBlLFxufSBmcm9tICcuL3NjaGVtYSc7XG5pbXBvcnQgeyBPRGF0YUVudGl0eVNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2VudGl0eSc7XG5pbXBvcnQgeyBBcGlDb25maWcsIFBhcnNlciB9IGZyb20gJy4vdHlwZXMnO1xuXG5leHBvcnQgY2xhc3MgT0RhdGFTZXR0aW5ncyB7XG4gIGFwaXM6IE9EYXRhQXBpW107XG4gIGNvbnN0cnVjdG9yKC4uLmNvbmZpZ3M6IEFwaUNvbmZpZ1tdKSB7XG4gICAgdGhpcy5hcGlzID0gY29uZmlncy5tYXAoKGNvbmZpZykgPT4gbmV3IE9EYXRhQXBpKGNvbmZpZykpO1xuICAgIGlmICh0aGlzLmFwaXMubGVuZ3RoID4gMSkge1xuICAgICAgaWYgKHRoaXMuYXBpcy5zb21lKChjKSA9PiBjLm5hbWUgPT09IHVuZGVmaW5lZCkpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcignTXVsdGlwbGUgQVBJczogTmVlZHMgY29uZmlndXJhdGlvbiBuYW1lcycpO1xuICAgICAgaWYgKHRoaXMuYXBpcy5maWx0ZXIoKGMpID0+IGMuZGVmYXVsdCkubGVuZ3RoID4gMSlcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdNdWx0aXBsZSBBUElzOiBOZWVkcyBvbmx5IG9uZSBkZWZhdWx0IGFwaScpO1xuICAgIH1cbiAgICAvLyBJZiBub3QgZGVmYXVsdCBzZXR1cCBmaXJzdCBjb25maWcgYXMgZGVmYXVsdCBhcGlcbiAgICBpZiAodGhpcy5hcGlzLmV2ZXJ5KChjKSA9PiAhYy5kZWZhdWx0KSkgdGhpcy5hcGlzWzBdLmRlZmF1bHQgPSB0cnVlO1xuICB9XG5cbiAgY29uZmlndXJlKHNldHRpbmdzOiB7XG4gICAgcmVxdWVzdGVyPzogKHJlcXVlc3Q6IE9EYXRhUmVxdWVzdDxhbnk+KSA9PiBPYnNlcnZhYmxlPGFueT47XG4gIH0pIHtcbiAgICB0aGlzLmFwaXMuZm9yRWFjaCgoYXBpKSA9PiBhcGkuY29uZmlndXJlKHNldHRpbmdzKSk7XG4gIH1cblxuICBwdWJsaWMgZGVmYXVsdEFwaSgpIHtcbiAgICByZXR1cm4gdGhpcy5hcGlzLmZpbmQoKGMpID0+IGMuZGVmYXVsdCkgYXMgT0RhdGFBcGk7XG4gIH1cbiAgcHVibGljIGZpbmRBcGlCeU5hbWUobmFtZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpcy5maW5kKChjKSA9PiBjLm5hbWUgPT09IG5hbWUpO1xuICB9XG4gIHB1YmxpYyBhcGlCeU5hbWUobmFtZTogc3RyaW5nKSB7XG4gICAgY29uc3QgYXBpID0gdGhpcy5maW5kQXBpQnlOYW1lKG5hbWUpO1xuICAgIGlmIChhcGkgPT09IHVuZGVmaW5lZCkgdGhyb3cgbmV3IEVycm9yKGBObyBBUEkgZm9yIG5hbWU6ICR7bmFtZX1gKTtcbiAgICByZXR1cm4gYXBpO1xuICB9XG4gIHB1YmxpYyBmaW5kQXBpRm9yVHlwZXModHlwZXM6IHN0cmluZ1tdKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpcy5maW5kKChjKSA9PlxuICAgICAgYy5zY2hlbWFzLnNvbWUoKHMpID0+IHR5cGVzLnNvbWUoKHR5cGUpID0+IHMuaXNOYW1lc3BhY2VPZih0eXBlKSkpXG4gICAgKTtcbiAgfVxuICBwdWJsaWMgZmluZEFwaUZvclR5cGUodHlwZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuZmluZEFwaUZvclR5cGVzKFt0eXBlXSk7XG4gIH1cbiAgcHVibGljIGFwaUZvclR5cGUodHlwZTogc3RyaW5nKSB7XG4gICAgY29uc3QgYXBpID0gdGhpcy5maW5kQXBpRm9yVHlwZSh0eXBlKTtcbiAgICBpZiAoYXBpID09PSB1bmRlZmluZWQpIHRocm93IG5ldyBFcnJvcihgTm8gQVBJIGZvciB0eXBlOiAke3R5cGV9YCk7XG4gICAgcmV0dXJuIGFwaTtcbiAgfVxuXG4gIC8vI3JlZ2lvbiBDb25maWdzIHNob3J0Y3V0c1xuICBwdWJsaWMgZW51bVR5cGVGb3JUeXBlPFQ+KHR5cGU6IHN0cmluZykge1xuICAgIGxldCB2YWx1ZXMgPSB0aGlzLmFwaXNcbiAgICAgIC5tYXAoKGFwaSkgPT4gYXBpLmZpbmRFbnVtVHlwZUZvclR5cGU8VD4odHlwZSkpXG4gICAgICAuZmlsdGVyKChlKSA9PiBlKTtcbiAgICBpZiAodmFsdWVzLmxlbmd0aCA9PT0gMCkgdGhyb3cgRXJyb3IoYE5vIEVudW0gZm9yIHR5cGUgJHt0eXBlfSB3YXMgZm91bmRgKTtcbiAgICBpZiAodmFsdWVzLmxlbmd0aCA+IDEpXG4gICAgICB0aHJvdyBFcnJvcignTXVsdGlwbGUgQVBJczogTW9yZSB0aGFuIG9uZSB2YWx1ZSB3YXMgZm91bmQnKTtcbiAgICByZXR1cm4gdmFsdWVzWzBdIGFzIE9EYXRhRW51bVR5cGU8VD47XG4gIH1cblxuICBwdWJsaWMgc3RydWN0dXJlZFR5cGVGb3JUeXBlPFQ+KHR5cGU6IHN0cmluZykge1xuICAgIGxldCB2YWx1ZXMgPSB0aGlzLmFwaXNcbiAgICAgIC5tYXAoKGFwaSkgPT4gYXBpLmZpbmRTdHJ1Y3R1cmVkVHlwZUZvclR5cGU8VD4odHlwZSkpXG4gICAgICAuZmlsdGVyKChlKSA9PiBlKTtcbiAgICBpZiAodmFsdWVzLmxlbmd0aCA9PT0gMClcbiAgICAgIHRocm93IEVycm9yKGBObyBTdHJ1Y3R1cmVkIGZvciB0eXBlICR7dHlwZX0gd2FzIGZvdW5kYCk7XG4gICAgaWYgKHZhbHVlcy5sZW5ndGggPiAxKVxuICAgICAgdGhyb3cgRXJyb3IoJ011bHRpcGxlIEFQSXM6IE1vcmUgdGhhbiBvbmUgdmFsdWUgd2FzIGZvdW5kJyk7XG4gICAgcmV0dXJuIHZhbHVlc1swXSBhcyBPRGF0YVN0cnVjdHVyZWRUeXBlPFQ+O1xuICB9XG5cbiAgcHVibGljIGNhbGxhYmxlRm9yVHlwZTxUPih0eXBlOiBzdHJpbmcsIGJpbmRpbmdUeXBlPzogc3RyaW5nKSB7XG4gICAgbGV0IHZhbHVlcyA9IHRoaXMuYXBpc1xuICAgICAgLm1hcCgoYXBpKSA9PiBhcGkuZmluZENhbGxhYmxlRm9yVHlwZTxUPih0eXBlLCBiaW5kaW5nVHlwZSkpXG4gICAgICAuZmlsdGVyKChlKSA9PiBlKTtcbiAgICBpZiAodmFsdWVzLmxlbmd0aCA9PT0gMClcbiAgICAgIHRocm93IEVycm9yKGBObyBDYWxsYWJsZSBmb3IgdHlwZSAke3R5cGV9IHdhcyBmb3VuZGApO1xuICAgIGlmICh2YWx1ZXMubGVuZ3RoID4gMSlcbiAgICAgIHRocm93IEVycm9yKCdNdWx0aXBsZSBBUElzOiBNb3JlIHRoYW4gb25lIHZhbHVlIHdhcyBmb3VuZCcpO1xuICAgIHJldHVybiB2YWx1ZXNbMF0gYXMgT0RhdGFDYWxsYWJsZTxUPjtcbiAgfVxuXG4gIHB1YmxpYyBlbnRpdHlTZXRGb3JUeXBlKHR5cGU6IHN0cmluZykge1xuICAgIGxldCB2YWx1ZXMgPSB0aGlzLmFwaXNcbiAgICAgIC5tYXAoKGFwaSkgPT4gYXBpLmZpbmRFbnRpdHlTZXRGb3JUeXBlKHR5cGUpKVxuICAgICAgLmZpbHRlcigoZSkgPT4gZSk7XG4gICAgaWYgKHZhbHVlcy5sZW5ndGggPT09IDApXG4gICAgICB0aHJvdyBFcnJvcihgTm8gRW50aXR5U2V0IGZvciB0eXBlICR7dHlwZX0gd2FzIGZvdW5kYCk7XG4gICAgaWYgKHZhbHVlcy5sZW5ndGggPiAxKVxuICAgICAgdGhyb3cgRXJyb3IoJ011bHRpcGxlIEFQSXM6IE1vcmUgdGhhbiBvbmUgdmFsdWUgd2FzIGZvdW5kJyk7XG4gICAgcmV0dXJuIHZhbHVlc1swXSBhcyBPRGF0YUVudGl0eVNldDtcbiAgfVxuXG4gIHB1YmxpYyBwYXJzZXJGb3JUeXBlPFQ+KHR5cGU6IHN0cmluZykge1xuICAgIGxldCB2YWx1ZXMgPSB0aGlzLmFwaXNcbiAgICAgIC5tYXAoKGFwaSkgPT4gYXBpLnBhcnNlckZvclR5cGU8VD4odHlwZSkpXG4gICAgICAuZmlsdGVyKChlKSA9PiBlKTtcbiAgICBpZiAodmFsdWVzLmxlbmd0aCA9PT0gMClcbiAgICAgIHRocm93IEVycm9yKGBObyBQYXJzZXIgZm9yIHR5cGUgJHt0eXBlfSB3YXMgZm91bmRgKTtcbiAgICBpZiAoIXR5cGUuc3RhcnRzV2l0aCgnRWRtLicpICYmIHZhbHVlcy5sZW5ndGggPiAxKVxuICAgICAgdGhyb3cgRXJyb3IoJ011bHRpcGxlIEFQSXM6IE1vcmUgdGhhbiBvbmUgdmFsdWUgd2FzIGZvdW5kJyk7XG4gICAgcmV0dXJuIHZhbHVlc1swXSBhcyBQYXJzZXI8VD47XG4gIH1cblxuICBwdWJsaWMgbW9kZWxGb3JUeXBlKHR5cGU6IHN0cmluZykge1xuICAgIGxldCB2YWx1ZXMgPSB0aGlzLmFwaXNcbiAgICAgIC5tYXAoKGFwaSkgPT4gYXBpLmZpbmRNb2RlbEZvclR5cGUodHlwZSkpXG4gICAgICAuZmlsdGVyKChlKSA9PiBlKTtcbiAgICBpZiAodmFsdWVzLmxlbmd0aCA9PT0gMCkgdGhyb3cgRXJyb3IoYE5vIE1vZGVsIGZvciB0eXBlICR7dHlwZX0gd2FzIGZvdW5kYCk7XG4gICAgaWYgKHZhbHVlcy5sZW5ndGggPiAxKVxuICAgICAgdGhyb3cgRXJyb3IoJ011bHRpcGxlIEFQSXM6IE1vcmUgdGhhbiBvbmUgdmFsdWUgd2FzIGZvdW5kJyk7XG4gICAgcmV0dXJuIHZhbHVlc1swXSBhcyB0eXBlb2YgT0RhdGFNb2RlbDtcbiAgfVxuXG4gIHB1YmxpYyBjb2xsZWN0aW9uRm9yVHlwZSh0eXBlOiBzdHJpbmcpIHtcbiAgICBsZXQgdmFsdWVzID0gdGhpcy5hcGlzXG4gICAgICAubWFwKChhcGkpID0+IGFwaS5maW5kQ29sbGVjdGlvbkZvclR5cGUodHlwZSkpXG4gICAgICAuZmlsdGVyKChlKSA9PiBlKTtcbiAgICBpZiAodmFsdWVzLmxlbmd0aCA9PT0gMClcbiAgICAgIHRocm93IEVycm9yKGBObyBDb2xsZWN0aW9uIGZvciB0eXBlICR7dHlwZX0gd2FzIGZvdW5kYCk7XG4gICAgaWYgKHZhbHVlcy5sZW5ndGggPiAxKVxuICAgICAgdGhyb3cgRXJyb3IoJ011bHRpcGxlIEFQSXM6IE1vcmUgdGhhbiBvbmUgdmFsdWUgd2FzIGZvdW5kJyk7XG4gICAgcmV0dXJuIHZhbHVlc1swXSBhcyB0eXBlb2YgT0RhdGFDb2xsZWN0aW9uO1xuICB9XG5cbiAgcHVibGljIHNlcnZpY2VGb3JUeXBlKHR5cGU6IHN0cmluZykge1xuICAgIGxldCB2YWx1ZXMgPSB0aGlzLmFwaXNcbiAgICAgIC5tYXAoKGFwaSkgPT4gYXBpLmZpbmRTZXJ2aWNlRm9yVHlwZSh0eXBlKSlcbiAgICAgIC5maWx0ZXIoKGUpID0+IGUpO1xuICAgIGlmICh2YWx1ZXMubGVuZ3RoID09PSAwKVxuICAgICAgdGhyb3cgRXJyb3IoYE5vIFNlcnZpY2UgZm9yIHR5cGUgJHt0eXBlfSB3YXMgZm91bmRgKTtcbiAgICBpZiAodmFsdWVzLmxlbmd0aCA+IDEpXG4gICAgICB0aHJvdyBFcnJvcignTXVsdGlwbGUgQVBJczogTW9yZSB0aGFuIG9uZSB2YWx1ZSB3YXMgZm91bmQnKTtcbiAgICByZXR1cm4gdmFsdWVzWzBdIGFzIHR5cGVvZiBPRGF0YUVudGl0eVNlcnZpY2U7XG4gIH1cbiAgcHVibGljIHNlcnZpY2VGb3JFbnRpdHlUeXBlKHR5cGU6IHN0cmluZykge1xuICAgIGxldCB2YWx1ZXMgPSB0aGlzLmFwaXNcbiAgICAgIC5tYXAoKGFwaSkgPT4gYXBpLmZpbmRTZXJ2aWNlRm9yRW50aXR5VHlwZSh0eXBlKSlcbiAgICAgIC5maWx0ZXIoKGUpID0+IGUpO1xuICAgIGlmICh2YWx1ZXMubGVuZ3RoID09PSAwKVxuICAgICAgdGhyb3cgRXJyb3IoYE5vIFNlcnZpY2UgZm9yIHR5cGUgJHt0eXBlfSB3YXMgZm91bmRgKTtcbiAgICBpZiAodmFsdWVzLmxlbmd0aCA+IDEpXG4gICAgICB0aHJvdyBFcnJvcignTXVsdGlwbGUgQVBJczogTW9yZSB0aGFuIG9uZSB2YWx1ZSB3YXMgZm91bmQnKTtcbiAgICByZXR1cm4gdmFsdWVzWzBdIGFzIHR5cGVvZiBPRGF0YUVudGl0eVNlcnZpY2U7XG4gIH1cblxuICBwdWJsaWMgZW51bVR5cGVCeU5hbWU8VD4obmFtZTogc3RyaW5nKSB7XG4gICAgbGV0IHZhbHVlcyA9IHRoaXMuYXBpc1xuICAgICAgLm1hcCgoYXBpKSA9PiBhcGkuZmluZEVudW1UeXBlQnlOYW1lPFQ+KG5hbWUpKVxuICAgICAgLmZpbHRlcigoZSkgPT4gZSk7XG4gICAgaWYgKHZhbHVlcy5sZW5ndGggPT09IDApIHRocm93IEVycm9yKGBObyBFbnVtIGZvciBuYW1lICR7bmFtZX0gd2FzIGZvdW5kYCk7XG4gICAgaWYgKHZhbHVlcy5sZW5ndGggPiAxKVxuICAgICAgdGhyb3cgRXJyb3IoJ011bHRpcGxlIEFQSXM6IE1vcmUgdGhhbiBvbmUgdmFsdWUgd2FzIGZvdW5kJyk7XG4gICAgcmV0dXJuIHZhbHVlc1swXSBhcyBPRGF0YUVudW1UeXBlPFQ+O1xuICB9XG5cbiAgcHVibGljIHN0cnVjdHVyZWRUeXBlQnlOYW1lPFQ+KG5hbWU6IHN0cmluZykge1xuICAgIGxldCB2YWx1ZXMgPSB0aGlzLmFwaXNcbiAgICAgIC5tYXAoKGFwaSkgPT4gYXBpLmZpbmRTdHJ1Y3R1cmVkVHlwZUJ5TmFtZTxUPihuYW1lKSlcbiAgICAgIC5maWx0ZXIoKGUpID0+IGUpO1xuICAgIGlmICh2YWx1ZXMubGVuZ3RoID09PSAwKVxuICAgICAgdGhyb3cgRXJyb3IoYE5vIFN0cnVjdHVyZWQgZm9yIG5hbWUgJHtuYW1lfSB3YXMgZm91bmRgKTtcbiAgICBpZiAodmFsdWVzLmxlbmd0aCA+IDEpXG4gICAgICB0aHJvdyBFcnJvcignTXVsdGlwbGUgU3RydWN0dXJlZDogTW9yZSB0aGFuIG9uZSB2YWx1ZSB3YXMgZm91bmQnKTtcbiAgICByZXR1cm4gdmFsdWVzWzBdIGFzIE9EYXRhU3RydWN0dXJlZFR5cGU8VD47XG4gIH1cblxuICBwdWJsaWMgY2FsbGFibGVCeU5hbWU8VD4obmFtZTogc3RyaW5nLCBiaW5kaW5nVHlwZT86IHN0cmluZykge1xuICAgIGxldCB2YWx1ZXMgPSB0aGlzLmFwaXNcbiAgICAgIC5tYXAoKGFwaSkgPT4gYXBpLmZpbmRDYWxsYWJsZUJ5TmFtZTxUPihuYW1lLCBiaW5kaW5nVHlwZSkpXG4gICAgICAuZmlsdGVyKChlKSA9PiBlKTtcbiAgICBpZiAodmFsdWVzLmxlbmd0aCA9PT0gMClcbiAgICAgIHRocm93IEVycm9yKGBObyBDYWxsYWJsZSBmb3IgbmFtZSAke25hbWV9IHdhcyBmb3VuZGApO1xuICAgIGlmICh2YWx1ZXMubGVuZ3RoID4gMSlcbiAgICAgIHRocm93IEVycm9yKCdNdWx0aXBsZSBDYWxsYWJsZTogTW9yZSB0aGFuIG9uZSB2YWx1ZSB3YXMgZm91bmQnKTtcbiAgICByZXR1cm4gdmFsdWVzWzBdIGFzIE9EYXRhQ2FsbGFibGU8VD47XG4gIH1cblxuICBwdWJsaWMgZW50aXR5U2V0QnlOYW1lKG5hbWU6IHN0cmluZykge1xuICAgIGxldCB2YWx1ZXMgPSB0aGlzLmFwaXNcbiAgICAgIC5tYXAoKGFwaSkgPT4gYXBpLmZpbmRFbnRpdHlTZXRCeU5hbWUobmFtZSkpXG4gICAgICAuZmlsdGVyKChlKSA9PiBlKTtcbiAgICBpZiAodmFsdWVzLmxlbmd0aCA9PT0gMClcbiAgICAgIHRocm93IEVycm9yKGBObyBFbnRpdHlTZXQgZm9yIG5hbWUgJHtuYW1lfSB3YXMgZm91bmRgKTtcbiAgICBpZiAodmFsdWVzLmxlbmd0aCA+IDEpXG4gICAgICB0aHJvdyBFcnJvcignTXVsdGlwbGUgRW50aXR5U2V0OiBNb3JlIHRoYW4gb25lIHZhbHVlIHdhcyBmb3VuZCcpO1xuICAgIHJldHVybiB2YWx1ZXNbMF0gYXMgT0RhdGFFbnRpdHlTZXQ7XG4gIH1cblxuICBwdWJsaWMgbW9kZWxCeU5hbWUobmFtZTogc3RyaW5nKSB7XG4gICAgbGV0IHZhbHVlcyA9IHRoaXMuYXBpc1xuICAgICAgLm1hcCgoYXBpKSA9PiBhcGkuZmluZE1vZGVsQnlOYW1lKG5hbWUpKVxuICAgICAgLmZpbHRlcigoZSkgPT4gZSk7XG4gICAgaWYgKHZhbHVlcy5sZW5ndGggPT09IDApIHRocm93IEVycm9yKGBObyBNb2RlbCBmb3IgbmFtZSAke25hbWV9IHdhcyBmb3VuZGApO1xuICAgIGlmICh2YWx1ZXMubGVuZ3RoID4gMSlcbiAgICAgIHRocm93IEVycm9yKCdNdWx0aXBsZSBBUElzOiBNb3JlIHRoYW4gb25lIHZhbHVlIHdhcyBmb3VuZCcpO1xuICAgIHJldHVybiB2YWx1ZXNbMF0gYXMgdHlwZW9mIE9EYXRhTW9kZWw7XG4gIH1cblxuICBwdWJsaWMgY29sbGVjdGlvbkJ5TmFtZShuYW1lOiBzdHJpbmcpIHtcbiAgICBsZXQgdmFsdWVzID0gdGhpcy5hcGlzXG4gICAgICAubWFwKChhcGkpID0+IGFwaS5maW5kQ29sbGVjdGlvbkJ5TmFtZShuYW1lKSlcbiAgICAgIC5maWx0ZXIoKGUpID0+IGUpO1xuICAgIGlmICh2YWx1ZXMubGVuZ3RoID09PSAwKVxuICAgICAgdGhyb3cgRXJyb3IoYE5vIENvbGxlY3Rpb24gZm9yIG5hbWUgJHtuYW1lfSB3YXMgZm91bmRgKTtcbiAgICBpZiAodmFsdWVzLmxlbmd0aCA+IDEpXG4gICAgICB0aHJvdyBFcnJvcignTXVsdGlwbGUgQVBJczogTW9yZSB0aGFuIG9uZSB2YWx1ZSB3YXMgZm91bmQnKTtcbiAgICByZXR1cm4gdmFsdWVzWzBdIGFzIHR5cGVvZiBPRGF0YUNvbGxlY3Rpb247XG4gIH1cbiAgcHVibGljIHNlcnZpY2VCeU5hbWUobmFtZTogc3RyaW5nKSB7XG4gICAgbGV0IHZhbHVlcyA9IHRoaXMuYXBpc1xuICAgICAgLm1hcCgoYXBpKSA9PiBhcGkuZmluZFNlcnZpY2VCeU5hbWUobmFtZSkpXG4gICAgICAuZmlsdGVyKChlKSA9PiBlKTtcbiAgICBpZiAodmFsdWVzLmxlbmd0aCA9PT0gMClcbiAgICAgIHRocm93IEVycm9yKGBObyBTZXJ2aWNlIGZvciBuYW1lICR7bmFtZX0gd2FzIGZvdW5kYCk7XG4gICAgaWYgKHZhbHVlcy5sZW5ndGggPiAxKVxuICAgICAgdGhyb3cgRXJyb3IoJ011bHRpcGxlIEFQSXM6IE1vcmUgdGhhbiBvbmUgdmFsdWUgd2FzIGZvdW5kJyk7XG4gICAgcmV0dXJuIHZhbHVlc1swXSBhcyB0eXBlb2YgT0RhdGFFbnRpdHlTZXJ2aWNlO1xuICB9XG4gIC8vI2VuZHJlZ2lvblxufVxuIl19