velocious 1.0.701 → 1.0.703
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -0
- package/build/background-jobs/pooled-runner-shutdown.js +1 -0
- package/build/background-jobs/types.js +2 -2
- package/build/background-jobs/worker.js +128 -2
- package/build/configuration-types.js +73 -2
- package/build/configuration.js +67 -4
- package/build/frontend-model-resource/base-resource.js +150 -2
- package/build/frontend-models/resource-definition.js +47 -0
- package/build/src/background-jobs/pooled-runner-shutdown.d.ts.map +1 -1
- package/build/src/background-jobs/pooled-runner-shutdown.js +2 -1
- package/build/src/background-jobs/types.d.ts +4 -4
- package/build/src/background-jobs/types.d.ts.map +1 -1
- package/build/src/background-jobs/types.js +3 -3
- package/build/src/background-jobs/worker.d.ts +90 -1
- package/build/src/background-jobs/worker.d.ts.map +1 -1
- package/build/src/background-jobs/worker.js +132 -3
- package/build/src/configuration-types.d.ts +171 -5
- package/build/src/configuration-types.d.ts.map +1 -1
- package/build/src/configuration-types.js +68 -3
- package/build/src/configuration.d.ts +11 -2
- package/build/src/configuration.d.ts.map +1 -1
- package/build/src/configuration.js +67 -5
- package/build/src/frontend-model-resource/base-resource.d.ts +76 -3
- package/build/src/frontend-model-resource/base-resource.d.ts.map +1 -1
- package/build/src/frontend-model-resource/base-resource.js +127 -3
- package/build/src/frontend-models/resource-definition.d.ts.map +1 -1
- package/build/src/frontend-models/resource-definition.js +43 -1
- package/build/src/sync/local-mutation-log.d.ts +6 -3
- package/build/src/sync/local-mutation-log.d.ts.map +1 -1
- package/build/src/sync/local-mutation-log.js +11 -4
- package/build/src/sync/peer-mutation-bundle.d.ts +26 -0
- package/build/src/sync/peer-mutation-bundle.d.ts.map +1 -1
- package/build/src/sync/peer-mutation-bundle.js +7 -1
- package/build/src/sync/sync-api-client.d.ts +3 -1
- package/build/src/sync/sync-api-client.d.ts.map +1 -1
- package/build/src/sync/sync-api-client.js +46 -8
- package/build/src/sync/sync-client-types.d.ts +24 -12
- package/build/src/sync/sync-client-types.d.ts.map +1 -1
- package/build/src/sync/sync-client-types.js +7 -5
- package/build/src/sync/sync-client.d.ts +101 -0
- package/build/src/sync/sync-client.d.ts.map +1 -1
- package/build/src/sync/sync-client.js +236 -24
- package/build/src/sync/sync-offline-session.d.ts +328 -0
- package/build/src/sync/sync-offline-session.d.ts.map +1 -0
- package/build/src/sync/sync-offline-session.js +617 -0
- package/build/src/sync/sync-resource-base.d.ts +26 -28
- package/build/src/sync/sync-resource-base.d.ts.map +1 -1
- package/build/src/sync/sync-resource-base.js +11 -45
- package/build/sync/local-mutation-log.js +10 -3
- package/build/sync/peer-mutation-bundle.js +6 -0
- package/build/sync/sync-api-client.js +53 -7
- package/build/sync/sync-client-types.js +6 -4
- package/build/sync/sync-client.js +264 -21
- package/build/sync/sync-offline-session.js +713 -0
- package/build/sync/sync-resource-base.js +10 -53
- package/package.json +1 -1
- package/src/background-jobs/pooled-runner-shutdown.js +1 -0
- package/src/background-jobs/types.js +2 -2
- package/src/background-jobs/worker.js +128 -2
- package/src/configuration-types.js +73 -2
- package/src/configuration.js +67 -4
- package/src/frontend-model-resource/base-resource.js +150 -2
- package/src/frontend-models/resource-definition.js +47 -0
- package/src/sync/local-mutation-log.js +10 -3
- package/src/sync/peer-mutation-bundle.js +6 -0
- package/src/sync/sync-api-client.js +53 -7
- package/src/sync/sync-client-types.js +6 -4
- package/src/sync/sync-client.js +264 -21
- package/src/sync/sync-offline-session.js +713 -0
- package/src/sync/sync-resource-base.js +10 -53
|
@@ -29,6 +29,7 @@ import VelociousError from "../velocious-error.js"
|
|
|
29
29
|
* applyFrontendModelPagination: (args: {pagination: FrontendModelResourcePagination, query: import("../database/query/model-class-query.js").default<typeof import("../database/record/index.js").default>}) => void,
|
|
30
30
|
* applyFrontendModelSearch: (args: {query: import("../database/query/model-class-query.js").default<typeof import("../database/record/index.js").default>, search: FrontendModelResourceSearch}) => void,
|
|
31
31
|
* applyFrontendModelSort: (args: {query: import("../database/query/model-class-query.js").default<typeof import("../database/record/index.js").default>, sort: FrontendModelResourceSort}) => void,
|
|
32
|
+
* ensureFrontendModelJoinPath: (args: {path: string[], query: import("../database/query/model-class-query.js").default<typeof import("../database/record/index.js").default>}) => void,
|
|
32
33
|
* frontendModelAbilityAction: (action: FrontendModelResourceAction) => string,
|
|
33
34
|
* frontendModelAbilityAuthorizedQuery: (action: FrontendModelResourceAction, options?: FrontendModelResourceAuthorizedQueryOptions) => import("../database/query/model-class-query.js").default<typeof import("../database/record/index.js").default>,
|
|
34
35
|
* frontendModelAuthorizedQuery: (action: FrontendModelResourceAction, options?: FrontendModelResourceAuthorizedQueryOptions) => import("../database/query/model-class-query.js").default<typeof import("../database/record/index.js").default>,
|
|
@@ -195,6 +196,9 @@ export function frontendModelResourceInternalConstructor(ResourceClass) {
|
|
|
195
196
|
return /** @type {FrontendModelResourceInternalConstructor<typeof import("../database/record/index.js").default, typeof import("../database/record/index.js").default>} */ (/** @type {unknown} */ (ResourceClass))
|
|
196
197
|
}
|
|
197
198
|
|
|
199
|
+
const QUICK_SEARCH_COLUMN = "quickSearch"
|
|
200
|
+
|
|
201
|
+
|
|
198
202
|
/**
|
|
199
203
|
* Base class for backend frontend-model resources.
|
|
200
204
|
* @template {FrontendModelResourceModelClass} [TModelClass=typeof import("../database/record/index.js").default]
|
|
@@ -235,6 +239,23 @@ export default class FrontendModelBaseResource extends AuthorizationBaseResource
|
|
|
235
239
|
/** @type {ReturnType<typeof JSON.parse>} */
|
|
236
240
|
static SharedResource = undefined
|
|
237
241
|
|
|
242
|
+
/**
|
|
243
|
+
* Declarative quick-search text columns. When declared, an index search on
|
|
244
|
+
* the pseudo-column `quickSearch` expands to an OR of LIKE conditions over
|
|
245
|
+
* these columns instead of hitting the controller default. Each entry is a
|
|
246
|
+
* root-table column name or a `{path, column}` pair for a joined
|
|
247
|
+
* relationship path.
|
|
248
|
+
* @type {Array<import("../configuration-types.js").FrontendModelQuickSearchColumn | string> | null | undefined} */
|
|
249
|
+
static quickSearchColumns = undefined
|
|
250
|
+
|
|
251
|
+
/**
|
|
252
|
+
* Declarative quick-search numeric columns. When the trimmed quick-search
|
|
253
|
+
* value is a safe non-negative integer, each declared column also gets an
|
|
254
|
+
* exact `=` condition ORed into the quick-search predicate. Same entry shape
|
|
255
|
+
* as {@link FrontendModelBaseResource.quickSearchColumns}.
|
|
256
|
+
* @type {Array<import("../configuration-types.js").FrontendModelQuickSearchColumn | string> | null | undefined} */
|
|
257
|
+
static quickSearchNumericColumns = undefined
|
|
258
|
+
|
|
238
259
|
/**
|
|
239
260
|
* Declarative writable-attribute permit list (camelCase attribute names)
|
|
240
261
|
* used as the default {@link FrontendModelBaseResource#permittedParams} and
|
|
@@ -282,7 +303,7 @@ export default class FrontendModelBaseResource extends AuthorizationBaseResource
|
|
|
282
303
|
/**
|
|
283
304
|
* Reads a static resource config value from the environment resource first,
|
|
284
305
|
* then from the shared resource.
|
|
285
|
-
* @param {"abilities" | "attachments" | "attributes" | "builtInCollectionCommands" | "builtInMemberCommands" | "collectionCommands" | "commands" | "memberCommands" | "modelName" | "primaryKey" | "relationships" | "server" | "sync" | "translatedAttributes" | "writableAttributes"} name - Static config property name.
|
|
306
|
+
* @param {"abilities" | "attachments" | "attributes" | "builtInCollectionCommands" | "builtInMemberCommands" | "collectionCommands" | "commands" | "memberCommands" | "modelName" | "primaryKey" | "quickSearchColumns" | "quickSearchNumericColumns" | "relationships" | "server" | "sync" | "translatedAttributes" | "writableAttributes"} name - Static config property name.
|
|
286
307
|
* @returns {ReturnType<typeof JSON.parse>} - Resolved config value.
|
|
287
308
|
*/
|
|
288
309
|
static sharedResourceStaticValue(name) {
|
|
@@ -459,6 +480,8 @@ export default class FrontendModelBaseResource extends AuthorizationBaseResource
|
|
|
459
480
|
const memberCommands = this.sharedResourceStaticValue("memberCommands")
|
|
460
481
|
const modelName = this.sharedResourceStaticValue("modelName")
|
|
461
482
|
const primaryKey = this.sharedResourceStaticValue("primaryKey")
|
|
483
|
+
const quickSearchColumns = this.sharedResourceStaticValue("quickSearchColumns")
|
|
484
|
+
const quickSearchNumericColumns = this.sharedResourceStaticValue("quickSearchNumericColumns")
|
|
462
485
|
const relationships = this.sharedResourceStaticValue("relationships")
|
|
463
486
|
const server = this.sharedResourceStaticValue("server")
|
|
464
487
|
const sync = this.sharedResourceStaticValue("sync")
|
|
@@ -476,6 +499,8 @@ export default class FrontendModelBaseResource extends AuthorizationBaseResource
|
|
|
476
499
|
if (memberCommands) config.memberCommands = /** @type {string[]} */ (memberCommands)
|
|
477
500
|
if (modelName) config.modelName = /** @type {string} */ (modelName)
|
|
478
501
|
if (primaryKey) config.primaryKey = /** @type {string | string[]} */ (primaryKey)
|
|
502
|
+
if (quickSearchColumns !== undefined) config.quickSearchColumns = /** @type {Array<import("../configuration-types.js").FrontendModelQuickSearchColumn | string>} */ (quickSearchColumns)
|
|
503
|
+
if (quickSearchNumericColumns !== undefined) config.quickSearchNumericColumns = /** @type {Array<import("../configuration-types.js").FrontendModelQuickSearchColumn | string>} */ (quickSearchNumericColumns)
|
|
479
504
|
if (relationships) config.relationships = /** @type {string[]} */ (relationships)
|
|
480
505
|
if (server) config.server = /** @type {import("../configuration-types.js").FrontendModelResourceServerConfiguration} */ (server)
|
|
481
506
|
if (sync !== undefined) config.sync = /** @type {import("../configuration-types.js").FrontendModelResourceSyncConfiguration | boolean} */ (sync)
|
|
@@ -949,7 +974,8 @@ export default class FrontendModelBaseResource extends AuthorizationBaseResource
|
|
|
949
974
|
}
|
|
950
975
|
|
|
951
976
|
/**
|
|
952
|
-
* Applies frontend-model index search
|
|
977
|
+
* Applies frontend-model index searches, expanding a declared quick search
|
|
978
|
+
* before falling back to the controller default.
|
|
953
979
|
* @param {object} args - Search args.
|
|
954
980
|
* @param {FrontendModelResourceController} args.controller - Controller handling the query.
|
|
955
981
|
* @param {FrontendModelResourceAnyQuery} args.query - Query instance.
|
|
@@ -957,9 +983,118 @@ export default class FrontendModelBaseResource extends AuthorizationBaseResource
|
|
|
957
983
|
* @returns {void}
|
|
958
984
|
*/
|
|
959
985
|
applyFrontendModelIndexSearch({controller, query, search}) {
|
|
986
|
+
if (this.applyQuickSearch({controller, query, search})) return
|
|
987
|
+
|
|
960
988
|
controller.applyFrontendModelSearch({query, search})
|
|
961
989
|
}
|
|
962
990
|
|
|
991
|
+
/**
|
|
992
|
+
* Expands a `quickSearch` pseudo-column search into an OR of LIKE conditions
|
|
993
|
+
* over the declared {@link FrontendModelBaseResource.quickSearchColumns}, plus
|
|
994
|
+
* exact `=` conditions over {@link FrontendModelBaseResource.quickSearchNumericColumns}
|
|
995
|
+
* when the trimmed value is a safe non-negative integer.
|
|
996
|
+
* @param {object} args - Search args.
|
|
997
|
+
* @param {FrontendModelResourceController} args.controller - Controller handling the query.
|
|
998
|
+
* @param {FrontendModelResourceAnyQuery} args.query - Query to filter.
|
|
999
|
+
* @param {FrontendModelResourceSearch} args.search - Search payload.
|
|
1000
|
+
* @returns {boolean} - Whether the search was handled as a quick search.
|
|
1001
|
+
*/
|
|
1002
|
+
applyQuickSearch({controller, query, search}) {
|
|
1003
|
+
const quickSearchColumns = this.quickSearchColumnDefinitions()
|
|
1004
|
+
|
|
1005
|
+
if (!quickSearchColumns || quickSearchColumns.length === 0) return false
|
|
1006
|
+
if (search.path.length > 0 || search.column !== QUICK_SEARCH_COLUMN) return false
|
|
1007
|
+
|
|
1008
|
+
if (search.operator !== "like") {
|
|
1009
|
+
throw VelociousError.safe(`${this.quickSearchErrorLabel()} must use the like operator.`, {code: this.quickSearchErrorCode()})
|
|
1010
|
+
}
|
|
1011
|
+
|
|
1012
|
+
if (typeof search.value !== "string") {
|
|
1013
|
+
throw VelociousError.safe(`${this.quickSearchErrorLabel()} must be a string.`, {code: this.quickSearchErrorCode()})
|
|
1014
|
+
}
|
|
1015
|
+
|
|
1016
|
+
const trimmedValue = search.value.trim()
|
|
1017
|
+
|
|
1018
|
+
if (!trimmedValue) return true
|
|
1019
|
+
|
|
1020
|
+
const conditions = quickSearchColumns.map((column) => (
|
|
1021
|
+
`${this.quickSearchColumnSql({column, controller, query})} LIKE ${query.driver.quote(`%${trimmedValue}%`)}`
|
|
1022
|
+
))
|
|
1023
|
+
const numericSearchValue = quickSearchNumericValue(trimmedValue)
|
|
1024
|
+
|
|
1025
|
+
if (numericSearchValue !== null) {
|
|
1026
|
+
const quickSearchNumericColumns = this.quickSearchNumericColumnDefinitions() || []
|
|
1027
|
+
|
|
1028
|
+
for (const column of quickSearchNumericColumns) {
|
|
1029
|
+
conditions.push(`${this.quickSearchColumnSql({column, controller, query})} = ${query.driver.quote(numericSearchValue)}`)
|
|
1030
|
+
}
|
|
1031
|
+
}
|
|
1032
|
+
|
|
1033
|
+
query.where(`(${conditions.join(" OR ")})`)
|
|
1034
|
+
|
|
1035
|
+
return true
|
|
1036
|
+
}
|
|
1037
|
+
|
|
1038
|
+
/**
|
|
1039
|
+
* Resolves the declared quick-search text columns through the shared resource.
|
|
1040
|
+
* @returns {Array<import("../configuration-types.js").FrontendModelQuickSearchColumn | string> | null | undefined} - Declared columns.
|
|
1041
|
+
*/
|
|
1042
|
+
quickSearchColumnDefinitions() {
|
|
1043
|
+
const ResourceClass = /** @type {typeof FrontendModelBaseResource} */ (this.constructor)
|
|
1044
|
+
|
|
1045
|
+
return /** @type {Array<import("../configuration-types.js").FrontendModelQuickSearchColumn | string> | null | undefined} */ (ResourceClass.sharedResourceStaticValue("quickSearchColumns"))
|
|
1046
|
+
}
|
|
1047
|
+
|
|
1048
|
+
/**
|
|
1049
|
+
* Resolves the declared quick-search numeric columns through the shared resource.
|
|
1050
|
+
* @returns {Array<import("../configuration-types.js").FrontendModelQuickSearchColumn | string> | null | undefined} - Declared columns.
|
|
1051
|
+
*/
|
|
1052
|
+
quickSearchNumericColumnDefinitions() {
|
|
1053
|
+
const ResourceClass = /** @type {typeof FrontendModelBaseResource} */ (this.constructor)
|
|
1054
|
+
|
|
1055
|
+
return /** @type {Array<import("../configuration-types.js").FrontendModelQuickSearchColumn | string> | null | undefined} */ (ResourceClass.sharedResourceStaticValue("quickSearchNumericColumns"))
|
|
1056
|
+
}
|
|
1057
|
+
|
|
1058
|
+
/**
|
|
1059
|
+
* Builds the quoted SQL reference for one quick-search column, adding the
|
|
1060
|
+
* relationship join when the column sits on a joined path.
|
|
1061
|
+
* @param {object} args - Column args.
|
|
1062
|
+
* @param {import("../configuration-types.js").FrontendModelQuickSearchColumn | string} args.column - Column declaration.
|
|
1063
|
+
* @param {FrontendModelResourceController} args.controller - Controller handling the query.
|
|
1064
|
+
* @param {FrontendModelResourceAnyQuery} args.query - Query being filtered.
|
|
1065
|
+
* @returns {string} - Quoted SQL column reference.
|
|
1066
|
+
*/
|
|
1067
|
+
quickSearchColumnSql({column, controller, query}) {
|
|
1068
|
+
const columnConfig = typeof column === "string" ? {column} : column
|
|
1069
|
+
const path = columnConfig.path || []
|
|
1070
|
+
|
|
1071
|
+
if (path.length > 0) {
|
|
1072
|
+
controller.ensureFrontendModelJoinPath({path, query})
|
|
1073
|
+
}
|
|
1074
|
+
|
|
1075
|
+
const tableReference = query.getTableReferenceForJoin(...path)
|
|
1076
|
+
|
|
1077
|
+
return `${query.driver.quoteTable(tableReference)}.${query.driver.quoteColumn(columnConfig.column)}`
|
|
1078
|
+
}
|
|
1079
|
+
|
|
1080
|
+
/**
|
|
1081
|
+
* Human-readable label used in invalid quick-search payload errors. Owners
|
|
1082
|
+
* with an established public error contract may override this.
|
|
1083
|
+
* @returns {string} - Error label.
|
|
1084
|
+
*/
|
|
1085
|
+
quickSearchErrorLabel() {
|
|
1086
|
+
return "Quick search"
|
|
1087
|
+
}
|
|
1088
|
+
|
|
1089
|
+
/**
|
|
1090
|
+
* Error code used for invalid quick-search payload errors. Owners with an
|
|
1091
|
+
* established public error contract may override this.
|
|
1092
|
+
* @returns {string} - Error code.
|
|
1093
|
+
*/
|
|
1094
|
+
quickSearchErrorCode() {
|
|
1095
|
+
return "invalid-quick-search"
|
|
1096
|
+
}
|
|
1097
|
+
|
|
963
1098
|
/**
|
|
964
1099
|
* Applies frontend-model index sort.
|
|
965
1100
|
* @param {object} args - Sort args.
|
|
@@ -2125,3 +2260,16 @@ function filterWritableFrontendModelAttributes(
|
|
|
2125
2260
|
|
|
2126
2261
|
return writableAttributes
|
|
2127
2262
|
}
|
|
2263
|
+
|
|
2264
|
+
/**
|
|
2265
|
+
* Parses a trimmed quick-search value as a safe non-negative integer.
|
|
2266
|
+
* @param {string} searchValue - Trimmed quick-search value.
|
|
2267
|
+
* @returns {number | null} - Numeric search value, or null when not numeric.
|
|
2268
|
+
*/
|
|
2269
|
+
function quickSearchNumericValue(searchValue) {
|
|
2270
|
+
if (!/^[0-9]+$/u.test(searchValue)) return null
|
|
2271
|
+
|
|
2272
|
+
const numericValue = Number.parseInt(searchValue, 10)
|
|
2273
|
+
|
|
2274
|
+
return Number.isSafeInteger(numericValue) ? numericValue : null
|
|
2275
|
+
}
|
|
@@ -27,6 +27,7 @@ const RESOURCE_STATIC_CONFIG_KEYS = new Set([
|
|
|
27
27
|
"ModelClass",
|
|
28
28
|
"primaryKey",
|
|
29
29
|
"quickSearchColumns",
|
|
30
|
+
"quickSearchNumericColumns",
|
|
30
31
|
"relationships",
|
|
31
32
|
"ReplayServiceClass",
|
|
32
33
|
"server",
|
|
@@ -168,6 +169,8 @@ function normalizeFrontendModelResourceConfiguration(resourceConfiguration) {
|
|
|
168
169
|
"memberCommands",
|
|
169
170
|
"modelName",
|
|
170
171
|
"primaryKey",
|
|
172
|
+
"quickSearchColumns",
|
|
173
|
+
"quickSearchNumericColumns",
|
|
171
174
|
"relationships",
|
|
172
175
|
"server",
|
|
173
176
|
"sync"
|
|
@@ -180,6 +183,8 @@ function normalizeFrontendModelResourceConfiguration(resourceConfiguration) {
|
|
|
180
183
|
|
|
181
184
|
const normalizedCommands = normalizeFrontendModelResourceCommands(resourceConfiguration)
|
|
182
185
|
const sync = normalizeFrontendModelResourceSync(resourceConfiguration)
|
|
186
|
+
const quickSearchColumns = normalizeFrontendModelQuickSearchColumns(resourceConfiguration.quickSearchColumns, "quickSearchColumns")
|
|
187
|
+
const quickSearchNumericColumns = normalizeFrontendModelQuickSearchColumns(resourceConfiguration.quickSearchNumericColumns, "quickSearchNumericColumns")
|
|
183
188
|
|
|
184
189
|
return {
|
|
185
190
|
...resourceConfiguration,
|
|
@@ -192,6 +197,8 @@ function normalizeFrontendModelResourceConfiguration(resourceConfiguration) {
|
|
|
192
197
|
// generator uses it to type each custom command method.
|
|
193
198
|
commandMetadata: normalizedCommands.commandMetadata,
|
|
194
199
|
memberCommands: normalizedCommands.memberCommands,
|
|
200
|
+
quickSearchColumns,
|
|
201
|
+
quickSearchNumericColumns,
|
|
195
202
|
sync
|
|
196
203
|
}
|
|
197
204
|
}
|
|
@@ -518,6 +525,46 @@ function normalizeSyncOperations(operations) {
|
|
|
518
525
|
return [...new Set(normalized)].sort()
|
|
519
526
|
}
|
|
520
527
|
|
|
528
|
+
/**
|
|
529
|
+
* Normalizes declarative quick-search column entries into a stable list.
|
|
530
|
+
* Each entry is a plain column-name string or a `{path, column}` object whose
|
|
531
|
+
* path is a relationship path from the root model.
|
|
532
|
+
* @param {unknown} columns - Raw quick-search column declarations.
|
|
533
|
+
* @param {string} label - Config key label for error messages.
|
|
534
|
+
* @returns {Array<import("../configuration-types.js").FrontendModelQuickSearchColumn> | null} - Normalized columns, or null when undeclared.
|
|
535
|
+
*/
|
|
536
|
+
function normalizeFrontendModelQuickSearchColumns(columns, label) {
|
|
537
|
+
if (columns === undefined || columns === null) return null
|
|
538
|
+
|
|
539
|
+
if (!Array.isArray(columns)) throw new Error(`Resource ${label} must be an array of column names or {path, column} objects.`)
|
|
540
|
+
|
|
541
|
+
return columns.map((entry) => {
|
|
542
|
+
if (typeof entry === "string") {
|
|
543
|
+
if (entry.length < 1) throw new Error(`Resource ${label} entries must be non-empty column names.`)
|
|
544
|
+
|
|
545
|
+
return {column: entry}
|
|
546
|
+
}
|
|
547
|
+
|
|
548
|
+
if (!entry || typeof entry !== "object" || Array.isArray(entry)) {
|
|
549
|
+
throw new Error(`Resource ${label} entries must be column names or {path, column} objects, got: ${JSON.stringify(entry)}`)
|
|
550
|
+
}
|
|
551
|
+
|
|
552
|
+
const entryRecord = /** @type {Record<string, unknown>} */ (entry)
|
|
553
|
+
const column = entryRecord.column
|
|
554
|
+
const path = entryRecord.path
|
|
555
|
+
|
|
556
|
+
if (typeof column !== "string" || column.length < 1) throw new Error(`Resource ${label} entries require a non-empty column name.`)
|
|
557
|
+
|
|
558
|
+
if (path === undefined || path === null) return {column}
|
|
559
|
+
|
|
560
|
+
if (!Array.isArray(path) || path.some((pathSegment) => typeof pathSegment !== "string" || pathSegment.length < 1)) {
|
|
561
|
+
throw new Error(`Resource ${label} entry paths must be arrays of non-empty relationship names.`)
|
|
562
|
+
}
|
|
563
|
+
|
|
564
|
+
return {column, path: [...path]}
|
|
565
|
+
})
|
|
566
|
+
}
|
|
567
|
+
|
|
521
568
|
/**
|
|
522
569
|
* Builds a deterministic policy hash.
|
|
523
570
|
* @param {unknown} value - Hash input.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pooled-runner-shutdown.d.ts","sourceRoot":"","sources":["../../../src/background-jobs/pooled-runner-shutdown.js"],"names":[],"mappings":"AAIA,2FAA2F;AAC3F,eAAO,MAAM,mCAAmC,MAAM,CAAA;AAEtD,wEAAwE;AACxE,eAAO,MAAM,6BAA6B,EAD/B,SAAS,OAAO,YAAY,EAAE,yBAAyB,
|
|
1
|
+
{"version":3,"file":"pooled-runner-shutdown.d.ts","sourceRoot":"","sources":["../../../src/background-jobs/pooled-runner-shutdown.js"],"names":[],"mappings":"AAIA,2FAA2F;AAC3F,eAAO,MAAM,mCAAmC,MAAM,CAAA;AAEtD,wEAAwE;AACxE,eAAO,MAAM,6BAA6B,EAD/B,SAAS,OAAO,YAAY,EAAE,yBAAyB,EAahE,CAAA;AAEF;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,KAAK,EAHtC,UAAU,CAAC,OAAO,IAAI,CAAC,KAAK,CAGU,GAFpC,KAAK,IAAI,OAAO,YAAY,EAAE,yBAAyB,CAMnE;AAED;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,KAAK,EAHtC,UAAU,CAAC,OAAO,IAAI,CAAC,KAAK,CAGU,GAFpC,KAAK,IAAI,OAAO,oBAAoB,EAAE,YAAY,CAAC,YAAY,CAAC,CAI5E;AAED;;;;GAIG;AACH,wBAAgB,iCAAiC,CAAC,MAAM,EAH7C,QAAQ,CAAC,MAAM,CAG8B,GAF3C;IAAC,cAAc,EAAE,MAAM,EAAE,CAAC;IAAC,4BAA4B,EAAE,MAAM,CAAA;CAAC,CAU5E"}
|
|
@@ -7,6 +7,7 @@ export const POOLED_CHILD_SHUTDOWN_REASONS = Object.freeze([
|
|
|
7
7
|
"parent_retire_drained",
|
|
8
8
|
"job_timeout",
|
|
9
9
|
"worker_stop",
|
|
10
|
+
"child_silence",
|
|
10
11
|
"signal_sigterm",
|
|
11
12
|
"signal_sigint",
|
|
12
13
|
"signal_sigkill",
|
|
@@ -46,4 +47,4 @@ export function boundedPooledRunnerInflightJobIds(jobIds) {
|
|
|
46
47
|
inflightJobIdsTruncatedCount: sortedJobIds.length - inflightJobIds.length
|
|
47
48
|
};
|
|
48
49
|
}
|
|
49
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9vbGVkLXJ1bm5lci1zaHV0ZG93bi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iYWNrZ3JvdW5kLWpvYnMvcG9vbGVkLXJ1bm5lci1zaHV0ZG93bi5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBRVosT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFNBQVMsQ0FBQTtBQUVuQywyRkFBMkY7QUFDM0YsTUFBTSxDQUFDLE1BQU0sbUNBQW1DLEdBQUcsR0FBRyxDQUFBO0FBRXRELHdFQUF3RTtBQUN4RSxNQUFNLENBQUMsTUFBTSw2QkFBNkIsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO0lBQ3pELHVCQUF1QjtJQUN2QixhQUFhO0lBQ2IsYUFBYTtJQUNiLGVBQWU7SUFDZixnQkFBZ0I7SUFDaEIsZUFBZTtJQUNmLGdCQUFnQjtJQUNoQixjQUFjO0lBQ2QsZ0JBQWdCO0lBQ2hCLGVBQWU7SUFDZixpQkFBaUI7Q0FDbEIsQ0FBQyxDQUFBO0FBRUY7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSwyQkFBMkIsQ0FBQyxLQUFLO0lBQy9DLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUTtRQUFFLE9BQU8sS0FBSyxDQUFBO0lBRTNDLE9BQU8sNkJBQTZCLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLEtBQUssS0FBSyxDQUFDLENBQUE7QUFDekUsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsMkJBQTJCLENBQUMsS0FBSztJQUMvQyxPQUFPLEtBQUssS0FBSyxJQUFJLElBQUksQ0FBQyxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUE7QUFDakcsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsaUNBQWlDLENBQUMsTUFBTTtJQUN0RCxNQUFNLFlBQVksR0FBRyxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUE7SUFDMUYsTUFBTSxjQUFjLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsbUNBQW1DLENBQUMsQ0FBQTtJQUVqRixPQUFPO1FBQ0wsY0FBYztRQUNkLDRCQUE0QixFQUFFLFlBQVksQ0FBQyxNQUFNLEdBQUcsY0FBYyxDQUFDLE1BQU07S0FDMUUsQ0FBQTtBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcblxuaW1wb3J0IHsgY29uc3RhbnRzIH0gZnJvbSBcIm5vZGU6b3NcIlxuXG4vKiogTWF4aW11bSBqb2IgaWRzIGNvcGllZCBpbnRvIGEgcG9vbGVkLWNoaWxkIHNodXRkb3duIG9ic2VydmF0aW9uIG9yIGZhaWx1cmUgc25hcHNob3QuICovXG5leHBvcnQgY29uc3QgUE9PTEVEX1JVTk5FUl9JTkZMSUdIVF9KT0JfSURfTElNSVQgPSAxMDBcblxuLyoqIEB0eXBlIHtyZWFkb25seSBpbXBvcnQoXCIuL3R5cGVzLmpzXCIpLlBvb2xlZENoaWxkU2h1dGRvd25SZWFzb25bXX0gKi9cbmV4cG9ydCBjb25zdCBQT09MRURfQ0hJTERfU0hVVERPV05fUkVBU09OUyA9IE9iamVjdC5mcmVlemUoW1xuICBcInBhcmVudF9yZXRpcmVfZHJhaW5lZFwiLFxuICBcImpvYl90aW1lb3V0XCIsXG4gIFwid29ya2VyX3N0b3BcIixcbiAgXCJjaGlsZF9zaWxlbmNlXCIsXG4gIFwic2lnbmFsX3NpZ3Rlcm1cIixcbiAgXCJzaWduYWxfc2lnaW50XCIsXG4gIFwic2lnbmFsX3NpZ2tpbGxcIixcbiAgXCJzaWduYWxfb3RoZXJcIixcbiAgXCJpcGNfZGlzY29ubmVjdFwiLFxuICBcInByb2Nlc3NfZXJyb3JcIixcbiAgXCJ1bmV4cGVjdGVkX2V4aXRcIlxuXSlcblxuLyoqXG4gKiBDaGVja3Mgb25lIGR5bmFtaWMgSVBDIHJlYXNvbiBhZ2FpbnN0IHRoZSBjb21wbGV0ZSBzaHV0ZG93biBjb250cmFjdC5cbiAqIEBwYXJhbSB7UmV0dXJuVHlwZTx0eXBlb2YgSlNPTi5wYXJzZT59IHZhbHVlIC0gQ2FuZGlkYXRlIHNodXRkb3duIHJlYXNvbi5cbiAqIEByZXR1cm5zIHt2YWx1ZSBpcyBpbXBvcnQoXCIuL3R5cGVzLmpzXCIpLlBvb2xlZENoaWxkU2h1dGRvd25SZWFzb259IC0gV2hldGhlciB0aGUgdmFsdWUgaXMgYSBrbm93biByZWFzb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1Bvb2xlZENoaWxkU2h1dGRvd25SZWFzb24odmFsdWUpIHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gXCJzdHJpbmdcIikgcmV0dXJuIGZhbHNlXG5cbiAgcmV0dXJuIFBPT0xFRF9DSElMRF9TSFVURE9XTl9SRUFTT05TLnNvbWUoKHJlYXNvbikgPT4gcmVhc29uID09PSB2YWx1ZSlcbn1cblxuLyoqXG4gKiBDaGVja3Mgb25lIGR5bmFtaWMgSVBDIHZhbHVlIGFnYWluc3QgTm9kZSdzIG5hbWVkIHByb2Nlc3Mgc2lnbmFscy5cbiAqIEBwYXJhbSB7UmV0dXJuVHlwZTx0eXBlb2YgSlNPTi5wYXJzZT59IHZhbHVlIC0gQ2FuZGlkYXRlIHNpZ25hbC5cbiAqIEByZXR1cm5zIHt2YWx1ZSBpcyBpbXBvcnQoXCJub2RlOmNoaWxkX3Byb2Nlc3NcIikuQ2hpbGRQcm9jZXNzW1wic2lnbmFsQ29kZVwiXX0gLSBXaGV0aGVyIHRoZSB2YWx1ZSBpcyBudWxsIG9yIGEgbmFtZWQgc2lnbmFsLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNQb29sZWRDaGlsZFNodXRkb3duU2lnbmFsKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSA9PT0gbnVsbCB8fCAodHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiICYmIE9iamVjdC5oYXNPd24oY29uc3RhbnRzLnNpZ25hbHMsIHZhbHVlKSlcbn1cblxuLyoqXG4gKiBTb3J0cywgZGVkdXBsaWNhdGVzLCBhbmQgYm91bmRzIGpvYiBpZHMgYmVmb3JlIHRoZXkgY3Jvc3MgSVBDL3JlcG9ydCBib3VuZGFyaWVzLlxuICogQHBhcmFtIHtJdGVyYWJsZTxzdHJpbmc+fSBqb2JJZHMgLSBJbi1mbGlnaHQgZHVyYWJsZSBqb2IgaWRzLlxuICogQHJldHVybnMge3tpbmZsaWdodEpvYklkczogc3RyaW5nW10sIGluZmxpZ2h0Sm9iSWRzVHJ1bmNhdGVkQ291bnQ6IG51bWJlcn19IC0gQm91bmRlZCBzbmFwc2hvdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJvdW5kZWRQb29sZWRSdW5uZXJJbmZsaWdodEpvYklkcyhqb2JJZHMpIHtcbiAgY29uc3Qgc29ydGVkSm9iSWRzID0gWy4uLm5ldyBTZXQoam9iSWRzKV0uc29ydCgobGVmdCwgcmlnaHQpID0+IGxlZnQubG9jYWxlQ29tcGFyZShyaWdodCkpXG4gIGNvbnN0IGluZmxpZ2h0Sm9iSWRzID0gc29ydGVkSm9iSWRzLnNsaWNlKDAsIFBPT0xFRF9SVU5ORVJfSU5GTElHSFRfSk9CX0lEX0xJTUlUKVxuXG4gIHJldHVybiB7XG4gICAgaW5mbGlnaHRKb2JJZHMsXG4gICAgaW5mbGlnaHRKb2JJZHNUcnVuY2F0ZWRDb3VudDogc29ydGVkSm9iSWRzLmxlbmd0aCAtIGluZmxpZ2h0Sm9iSWRzLmxlbmd0aFxuICB9XG59XG4iXX0=
|
|
@@ -5,9 +5,9 @@ export type BackgroundJobsGenerationRejectionReason = "missing-generation" | "un
|
|
|
5
5
|
export type BackgroundJobActiveStatus = "queued" | "handed_off";
|
|
6
6
|
export type BackgroundJobTerminalStatus = "cancelled" | "completed" | "failed" | "orphaned";
|
|
7
7
|
export type BackgroundJobStatus = BackgroundJobActiveStatus | BackgroundJobTerminalStatus;
|
|
8
|
-
export type PooledRunnerFailureOrigin = "exit" | "process-error" | "ipc-send";
|
|
8
|
+
export type PooledRunnerFailureOrigin = "exit" | "process-error" | "ipc-send" | "child-silence";
|
|
9
9
|
export type PooledRunnerLifecycleState = "starting" | "running" | "retiring";
|
|
10
|
-
export type PooledChildShutdownReason = "parent_retire_drained" | "job_timeout" | "worker_stop" | "signal_sigterm" | "signal_sigint" | "signal_sigkill" | "signal_other" | "ipc_disconnect" | "process_error" | "unexpected_exit";
|
|
10
|
+
export type PooledChildShutdownReason = "parent_retire_drained" | "job_timeout" | "worker_stop" | "child_silence" | "signal_sigterm" | "signal_sigint" | "signal_sigkill" | "signal_other" | "ipc_disconnect" | "process_error" | "unexpected_exit";
|
|
11
11
|
export type PooledRunnerTerminationReason = "unexpected" | "job-timeout" | "worker-shutdown-timeout";
|
|
12
12
|
export type BackgroundJobsWorkerLifecycleState = "running" | "retiring" | "stopping";
|
|
13
13
|
export type BackgroundJobProducerProof = {
|
|
@@ -881,9 +881,9 @@ export type BackgroundJobSocketMessage = BackgroundJobHelloMessage | BackgroundJ
|
|
|
881
881
|
/** @typedef {"queued" | "handed_off"} BackgroundJobActiveStatus */
|
|
882
882
|
/** @typedef {"cancelled" | "completed" | "failed" | "orphaned"} BackgroundJobTerminalStatus */
|
|
883
883
|
/** @typedef {BackgroundJobActiveStatus | BackgroundJobTerminalStatus} BackgroundJobStatus */
|
|
884
|
-
/** @typedef {"exit" | "process-error" | "ipc-send"} PooledRunnerFailureOrigin */
|
|
884
|
+
/** @typedef {"exit" | "process-error" | "ipc-send" | "child-silence"} PooledRunnerFailureOrigin */
|
|
885
885
|
/** @typedef {"starting" | "running" | "retiring"} PooledRunnerLifecycleState */
|
|
886
|
-
/** @typedef {"parent_retire_drained" | "job_timeout" | "worker_stop" | "signal_sigterm" | "signal_sigint" | "signal_sigkill" | "signal_other" | "ipc_disconnect" | "process_error" | "unexpected_exit"} PooledChildShutdownReason */
|
|
886
|
+
/** @typedef {"parent_retire_drained" | "job_timeout" | "worker_stop" | "child_silence" | "signal_sigterm" | "signal_sigint" | "signal_sigkill" | "signal_other" | "ipc_disconnect" | "process_error" | "unexpected_exit"} PooledChildShutdownReason */
|
|
887
887
|
/**
|
|
888
888
|
* @deprecated Use PooledChildShutdownReason for exact shutdown provenance.
|
|
889
889
|
* @typedef {"unexpected" | "job-timeout" | "worker-shutdown-timeout"} PooledRunnerTerminationReason
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/background-jobs/types.js"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/background-jobs/types.js"],"names":[],"mappings":"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"}
|
|
@@ -8,9 +8,9 @@
|
|
|
8
8
|
/** @typedef {"queued" | "handed_off"} BackgroundJobActiveStatus */
|
|
9
9
|
/** @typedef {"cancelled" | "completed" | "failed" | "orphaned"} BackgroundJobTerminalStatus */
|
|
10
10
|
/** @typedef {BackgroundJobActiveStatus | BackgroundJobTerminalStatus} BackgroundJobStatus */
|
|
11
|
-
/** @typedef {"exit" | "process-error" | "ipc-send"} PooledRunnerFailureOrigin */
|
|
11
|
+
/** @typedef {"exit" | "process-error" | "ipc-send" | "child-silence"} PooledRunnerFailureOrigin */
|
|
12
12
|
/** @typedef {"starting" | "running" | "retiring"} PooledRunnerLifecycleState */
|
|
13
|
-
/** @typedef {"parent_retire_drained" | "job_timeout" | "worker_stop" | "signal_sigterm" | "signal_sigint" | "signal_sigkill" | "signal_other" | "ipc_disconnect" | "process_error" | "unexpected_exit"} PooledChildShutdownReason */
|
|
13
|
+
/** @typedef {"parent_retire_drained" | "job_timeout" | "worker_stop" | "child_silence" | "signal_sigterm" | "signal_sigint" | "signal_sigkill" | "signal_other" | "ipc_disconnect" | "process_error" | "unexpected_exit"} PooledChildShutdownReason */
|
|
14
14
|
/**
|
|
15
15
|
* @deprecated Use PooledChildShutdownReason for exact shutdown provenance.
|
|
16
16
|
* @typedef {"unexpected" | "job-timeout" | "worker-shutdown-timeout"} PooledRunnerTerminationReason
|
|
@@ -303,4 +303,4 @@
|
|
|
303
303
|
* @typedef {BackgroundJobHelloMessage | BackgroundJobGenerationAcceptedMessage | BackgroundJobGenerationRejectedMessage | BackgroundJobReadyMessage | BackgroundJobDrainingMessage | BackgroundJobHeartbeatMessage | BackgroundJobEnqueueMessage | BackgroundJobEnqueuedMessage | BackgroundJobEnqueueErrorMessage | BackgroundJobReplaceScheduledMessage | BackgroundJobScheduleReplacedMessage | BackgroundJobReplaceScheduledErrorMessage | BackgroundJobCancelScheduledMessage | BackgroundJobScheduleCancelledMessage | BackgroundJobCancelScheduledErrorMessage | BackgroundJobGetScheduledMessage | BackgroundJobScheduledMessage | BackgroundJobGetScheduledErrorMessage | BackgroundJobWakeScheduledMessage | BackgroundJobScheduleWokenMessage | BackgroundJobWakeScheduledErrorMessage | BackgroundJobJobMessage | BackgroundJobAcceptedMessage | BackgroundJobCompleteMessage | BackgroundJobFailedMessage | BackgroundJobRescheduleMessage | BackgroundJobUpdatedMessage | BackgroundJobUpdateErrorMessage} BackgroundJobSocketMessage
|
|
304
304
|
*/
|
|
305
305
|
export const nothing = {};
|
|
306
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYmFja2dyb3VuZC1qb2JzL3R5cGVzLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVk7QUFFWjs7R0FFRztBQUNILHlGQUF5RjtBQUN6RixpSUFBaUk7QUFDakksNk5BQTZOO0FBQzdOLG1FQUFtRTtBQUNuRSwrRkFBK0Y7QUFDL0YsNkZBQTZGO0FBQzdGLGlGQUFpRjtBQUNqRixnRkFBZ0Y7QUFDaEYscU9BQXFPO0FBQ3JPOzs7R0FHRztBQUNILHdGQUF3RjtBQUN4Rjs7Ozs7Ozs7R0FRRztBQUNIOzs7Ozs7O0dBT0c7QUFDSDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMkJHO0FBQ0g7Ozs7Ozs7Ozs7R0FVRztBQUNIOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FxQkc7QUFDSDs7Ozs7R0FLRztBQUNIOzs7OztHQUtHO0FBQ0g7Ozs7O0dBS0c7QUFDSDs7Ozs7OztHQU9HO0FBQ0g7Ozs7Ozs7Ozs7OztHQVlHO0FBQ0g7OztHQUdHO0FBQ0g7Ozs7Ozs7R0FPRztBQUNIOzs7OztHQUtHO0FBQ0g7Ozs7OztHQU1HO0FBQ0g7Ozs7O0dBS0c7QUFDSDs7Ozs7Ozs7Ozs7R0FXRztBQUNIOzs7Ozs7Ozs7R0FTRztBQUNIOzs7Ozs7O0dBT0c7QUFDSDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E2Qkc7QUFDSDs7R0FFRztBQUNIOzs7OztHQUtHO0FBQ0g7O0dBRUc7QUFDSDs7OztHQUlHO0FBQ0g7Ozs7R0FJRztBQUNIOztHQUVHO0FBQ0g7Ozs7R0FJRztBQUNIOzs7Ozs7Ozs7OztHQVdHO0FBQ0g7O0dBRUc7QUFDSDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E2Qkc7QUFDSDs7R0FFRztBQUVILE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcblxuLyoqXG4gKiBAdHlwZWRlZiB7XCJpbmxpbmVcIiB8IFwiZm9ya2VkXCIgfCBcInBvb2xlZFwiIHwgXCJzcGF3bmVkXCJ9IEJhY2tncm91bmRKb2JFeGVjdXRpb25Nb2RlXG4gKi9cbi8qKiBAdHlwZWRlZiB7XCJjYW5kaWRhdGVcIiB8IFwiYWN0aXZlXCIgfCBcInJldGlyZWRcIn0gQmFja2dyb3VuZEpvYnNHZW5lcmF0aW9uSW5pdGlhbFN0YXRlICovXG4vKiogQHR5cGVkZWYge1wic3RhcnRpbmdcIiB8IFwiY2FuZGlkYXRlXCIgfCBcImFjdGl2ZVwiIHwgXCJyZXRpcmluZ1wiIHwgXCJyZXRpcmVkXCIgfCBcInN0b3BwZWRcIn0gQmFja2dyb3VuZEpvYnNHZW5lcmF0aW9uTGlmZWN5Y2xlU3RhdGUgKi9cbi8qKiBAdHlwZWRlZiB7XCJtaXNzaW5nLWdlbmVyYXRpb25cIiB8IFwidW5leHBlY3RlZC1nZW5lcmF0aW9uXCIgfCBcIm1hbGZvcm1lZC1nZW5lcmF0aW9uXCIgfCBcImdlbmVyYXRpb24tbWlzbWF0Y2hcIiB8IFwid29ya2VyLWFkbWlzc2lvbi1yZXRpcmVkXCIgfCBcIndvcmtlci1oYXMtbm8tcmVjb3ZlcmFibGUtaGFuZG9mZnNcIn0gQmFja2dyb3VuZEpvYnNHZW5lcmF0aW9uUmVqZWN0aW9uUmVhc29uICovXG4vKiogQHR5cGVkZWYge1wicXVldWVkXCIgfCBcImhhbmRlZF9vZmZcIn0gQmFja2dyb3VuZEpvYkFjdGl2ZVN0YXR1cyAqL1xuLyoqIEB0eXBlZGVmIHtcImNhbmNlbGxlZFwiIHwgXCJjb21wbGV0ZWRcIiB8IFwiZmFpbGVkXCIgfCBcIm9ycGhhbmVkXCJ9IEJhY2tncm91bmRKb2JUZXJtaW5hbFN0YXR1cyAqL1xuLyoqIEB0eXBlZGVmIHtCYWNrZ3JvdW5kSm9iQWN0aXZlU3RhdHVzIHwgQmFja2dyb3VuZEpvYlRlcm1pbmFsU3RhdHVzfSBCYWNrZ3JvdW5kSm9iU3RhdHVzICovXG4vKiogQHR5cGVkZWYge1wiZXhpdFwiIHwgXCJwcm9jZXNzLWVycm9yXCIgfCBcImlwYy1zZW5kXCJ9IFBvb2xlZFJ1bm5lckZhaWx1cmVPcmlnaW4gKi9cbi8qKiBAdHlwZWRlZiB7XCJzdGFydGluZ1wiIHwgXCJydW5uaW5nXCIgfCBcInJldGlyaW5nXCJ9IFBvb2xlZFJ1bm5lckxpZmVjeWNsZVN0YXRlICovXG4vKiogQHR5cGVkZWYge1wicGFyZW50X3JldGlyZV9kcmFpbmVkXCIgfCBcImpvYl90aW1lb3V0XCIgfCBcIndvcmtlcl9zdG9wXCIgfCBcInNpZ25hbF9zaWd0ZXJtXCIgfCBcInNpZ25hbF9zaWdpbnRcIiB8IFwic2lnbmFsX3NpZ2tpbGxcIiB8IFwic2lnbmFsX290aGVyXCIgfCBcImlwY19kaXNjb25uZWN0XCIgfCBcInByb2Nlc3NfZXJyb3JcIiB8IFwidW5leHBlY3RlZF9leGl0XCJ9IFBvb2xlZENoaWxkU2h1dGRvd25SZWFzb24gKi9cbi8qKlxuICogQGRlcHJlY2F0ZWQgVXNlIFBvb2xlZENoaWxkU2h1dGRvd25SZWFzb24gZm9yIGV4YWN0IHNodXRkb3duIHByb3ZlbmFuY2UuXG4gKiBAdHlwZWRlZiB7XCJ1bmV4cGVjdGVkXCIgfCBcImpvYi10aW1lb3V0XCIgfCBcIndvcmtlci1zaHV0ZG93bi10aW1lb3V0XCJ9IFBvb2xlZFJ1bm5lclRlcm1pbmF0aW9uUmVhc29uXG4gKi9cbi8qKiBAdHlwZWRlZiB7XCJydW5uaW5nXCIgfCBcInJldGlyaW5nXCIgfCBcInN0b3BwaW5nXCJ9IEJhY2tncm91bmRKb2JzV29ya2VyTGlmZWN5Y2xlU3RhdGUgKi9cbi8qKlxuICogRXhhY3QgZHVyYWJsZSBoYW5kb2ZmIG93bmVyc2hpcCBjYXJyaWVkIGJ5IGFuIGV4ZWN1dGluZyBqb2Igd2hlbiBpdCBwcm9kdWNlc1xuICogZm9sbG93LXVwIHdvcmsuXG4gKiBAdHlwZWRlZiB7b2JqZWN0fSBCYWNrZ3JvdW5kSm9iUHJvZHVjZXJQcm9vZlxuICogQHByb3BlcnR5IHtzdHJpbmd9IGpvYklkIC0gUHJvZHVjaW5nIGpvYiBpZC5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBoYW5kb2ZmSWQgLSBQcm9kdWNpbmcgaGFuZG9mZiBsZWFzZSBpZC5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSB3b3JrZXJJZCAtIFdvcmtlciBpZGVudGl0eSBwZXJzaXN0ZWQgd2l0aCB0aGUgaGFuZG9mZi5cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBoYW5kZWRPZmZBdE1zIC0gRHVyYWJsZSBoYW5kb2ZmIHRpbWVzdGFtcC5cbiAqL1xuLyoqXG4gKiBAdHlwZWRlZiB7b2JqZWN0fSBQb29sZWRSdW5uZXJBY3RpdmVKb2JcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nIHwgbnVsbH0gaGFuZG9mZklkIC0gRHVyYWJsZSBoYW5kb2ZmIGxlYXNlIGlkLlxuICogQHByb3BlcnR5IHtudW1iZXIgfCBudWxsfSBoYW5kZWRPZmZBdE1zIC0gRHVyYWJsZSBoYW5kb2ZmIHRpbWVzdGFtcC5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBqb2JJZCAtIER1cmFibGUgYmFja2dyb3VuZCBqb2IgaWQuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gam9iTmFtZSAtIFJlZ2lzdGVyZWQgam9iIGNsYXNzIG5hbWUuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gd29ya2VySWQgLSBXb3JrZXIgaWRlbnRpdHkgcGVyc2lzdGVkIHdpdGggdGhlIGhhbmRvZmYuXG4gKi9cbi8qKlxuICogT25lIHByb2Nlc3MtZmFpbHVyZSBzbmFwc2hvdCBzaGFyZWQgYnkgZXZlcnkgam9iIGxvc3Qgd2l0aCBhIHBvb2xlZCBjaGlsZC5cbiAqIEB0eXBlZGVmIHtvYmplY3R9IFBvb2xlZFJ1bm5lckZhaWx1cmVcbiAqIEBwcm9wZXJ0eSB7UG9vbGVkUnVubmVyQWN0aXZlSm9iW119IGFjdGl2ZUpvYnMgLSBKb2JzIHRoYXQgd2VyZSBpbiBmbGlnaHQgd2hlbiB0aGUgY2hpbGQgZmFpbGVkLCBvcmRlcmVkIGJ5IGpvYiBpZC5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nIHwgbnVsbH0gY2hpbGRJbnN0YW5jZUlkIC0gU3RhYmxlIHBvb2xlZC1jaGlsZCBpZGVudGl0eSB3aGVuIGl0cyBzdGFydHVwIG9yIHNodXRkb3duIG9ic2VydmF0aW9uIGFycml2ZWQuXG4gKiBAcHJvcGVydHkge251bWJlciB8IG51bGx9IGV4aXRDb2RlIC0gQ2hpbGQgZXhpdCBjb2RlLCBvciBudWxsIGZvciBzaWduYWwvcHJvY2VzcyBlcnJvcnMuXG4gKiBAcHJvcGVydHkge3N0cmluZyB8IG51bGx9IGdlbmVyYXRpb25JZCAtIFJlbGVhc2UgZ2VuZXJhdGlvbiBpZGVudGl0eSwgb3IgbnVsbCBpbiBsZWdhY3kgbW9kZS5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nW119IGluZmxpZ2h0Sm9iSWRzIC0gQm91bmRlZCBqb2IgaWRzIGluIGZsaWdodCB3aGVuIGZhaWx1cmUgaGFuZGxpbmcgc3RhcnRlZC5cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBpbmZsaWdodEpvYklkc1RydW5jYXRlZENvdW50IC0gSW4tZmxpZ2h0IGlkcyBvbWl0dGVkIGZyb20gdGhlIGJvdW5kZWQgc25hcHNob3QuXG4gKiBAcHJvcGVydHkge2Jvb2xlYW4gfCBudWxsfSBvb21LaWxsZWQgLSBGYWxzZSB3aGVuIHRoZSBvYnNlcnZlZCBleGl0IHJ1bGVzIE9PTSBvdXQ7IG51bGwgd2hlbiBhbiB1bmV4cGVjdGVkIFNJR0tJTEwgY2Fubm90IGJlIGRpc3Rpbmd1aXNoZWQgZnJvbSBhbiBPT00ga2lsbCB3aXRob3V0IHN1cGVydmlzb3Iva2VybmVsIGV2aWRlbmNlLlxuICogQHByb3BlcnR5IHtQb29sZWRSdW5uZXJGYWlsdXJlT3JpZ2lufSBvcmlnaW4gLSBXb3JrZXIgb2JzZXJ2YXRpb24gdGhhdCBpbml0aWF0ZWQgZmFpbHVyZSBoYW5kbGluZy5cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBydW5uZXJBZ2VNcyAtIENoaWxkIGFnZSB3aGVuIGZhaWx1cmUgaGFuZGxpbmcgc3RhcnRlZC5cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBydW5uZXJDcmVhdGVkQXRNcyAtIENoaWxkIGNyZWF0aW9uIHRpbWVzdGFtcC5cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gcnVubmVyRGV0YWNoZWQgLSBXaGV0aGVyIHRoZSBydW5uZXIgb3duZWQgYSBkZXRhY2hlZCBwcm9jZXNzIGdyb3VwLlxuICogQHByb3BlcnR5IHtudW1iZXJ9IHJ1bm5lckpvYnNSdW4gLSBQcmV2aW91c2x5IGFja25vd2xlZGdlZCBqb2JzIGhhbmRsZWQgYnkgdGhlIGNoaWxkLlxuICogQHByb3BlcnR5IHtQb29sZWRSdW5uZXJMaWZlY3ljbGVTdGF0ZX0gcnVubmVyTGlmZWN5Y2xlIC0gQ2hpbGQgbGlmZWN5Y2xlIGltbWVkaWF0ZWx5IGJlZm9yZSByZWNvdmVyeS5cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyIHwgbnVsbH0gcnVubmVyUGlkIC0gQ2hpbGQgcHJvY2VzcyBpZCB3aGVuIGF2YWlsYWJsZS5cbiAqIEBwcm9wZXJ0eSB7aW1wb3J0KFwibm9kZTpjaGlsZF9wcm9jZXNzXCIpLkNoaWxkUHJvY2Vzc1tcInNpZ25hbENvZGVcIl19IHNpZ25hbCAtIENoaWxkIHRlcm1pbmF0aW9uIHNpZ25hbCB3aGVuIGF2YWlsYWJsZS5cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyIHwgbnVsbH0gc2h1dGRvd25PYnNlcnZlZEF0TXMgLSBUaW1lIHRoZSBjaGlsZCBvciBwYXJlbnQgb2JzZXJ2ZWQgc2h1dGRvd24gYmVnaW5uaW5nLlxuICogQHByb3BlcnR5IHtudW1iZXIgfCBudWxsfSBzaHV0ZG93blJlcXVlc3RlZEF0TXMgLSBFeGFjdCBwYXJlbnQgcmVxdWVzdCB0aW1lc3RhbXAsIG9yIG51bGwgZm9yIGV4dGVybmFsL3VucmVxdWVzdGVkIHNodXRkb3duLlxuICogQHByb3BlcnR5IHtQb29sZWRDaGlsZFNodXRkb3duUmVhc29ufSBzaHV0ZG93blJlYXNvbiAtIEV4YWN0IHJlY29yZGVkIHBhcmVudCByZXF1ZXN0IG9yIG9ic2VydmVkIGNoaWxkIHNodXRkb3duIGNhdXNlLlxuICogQHByb3BlcnR5IHtpbXBvcnQoXCJub2RlOmNoaWxkX3Byb2Nlc3NcIikuQ2hpbGRQcm9jZXNzW1wic2lnbmFsQ29kZVwiXX0gc2h1dGRvd25TaWduYWwgLSBQYXJlbnQtcmVxdWVzdGVkIG9yIGNoaWxkLW9ic2VydmVkIHNodXRkb3duIHNpZ25hbCB3aGVuIGF2YWlsYWJsZS5cbiAqIEBwcm9wZXJ0eSB7UG9vbGVkUnVubmVyVGVybWluYXRpb25SZWFzb259IHRlcm1pbmF0aW9uUmVhc29uIC0gRGVwcmVjYXRlZCBjb21wYXRpYmlsaXR5IGNhdGVnb3J5OyB1c2Ugc2h1dGRvd25SZWFzb24gZm9yIGV4YWN0IHByb3ZlbmFuY2UuXG4gKiBAcHJvcGVydHkge3N0cmluZyB8IG51bGx9IHRpbWVvdXRKb2JJZCAtIEpvYiB3aG9zZSB0aW1lb3V0IGluaXRpYXRlZCBjaGlsZCB0ZXJtaW5hdGlvbiwgb3IgbnVsbC5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSB3b3JrZXJJZCAtIFN0YWJsZSBnZW5lcmF0aW9uLXF1YWxpZmllZCB3b3JrZXIgaWQuXG4gKiBAcHJvcGVydHkge0JhY2tncm91bmRKb2JzV29ya2VyTGlmZWN5Y2xlU3RhdGV9IHdvcmtlckxpZmVjeWNsZSAtIFBhcmVudCB3b3JrZXIgbGlmZWN5Y2xlIGltbWVkaWF0ZWx5IGJlZm9yZSByZWNvdmVyeS5cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSB3b3JrZXJQaWQgLSBQYXJlbnQgd29ya2VyIHByb2Nlc3MgaWQuXG4gKi9cbi8qKlxuICogQmVzdC1lZmZvcnQgb2JzZXJ2YXRpb24gc2VudCBiZWZvcmUgYSBwb29sZWQgY2hpbGQgY2xvc2VzIGl0cyByZXNvdXJjZXMuXG4gKiBAdHlwZWRlZiB7b2JqZWN0fSBQb29sZWRDaGlsZFNodXRkb3duT2JzZXJ2YXRpb25cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBjaGlsZEluc3RhbmNlSWQgLSBTdGFibGUgcG9vbGVkLWNoaWxkIGlkZW50aXR5LlxuICogQHByb3BlcnR5IHtzdHJpbmdbXX0gaW5mbGlnaHRKb2JJZHMgLSBCb3VuZGVkIGluLWZsaWdodCBkdXJhYmxlIGpvYiBpZHMuXG4gKiBAcHJvcGVydHkge251bWJlcn0gaW5mbGlnaHRKb2JJZHNUcnVuY2F0ZWRDb3VudCAtIEluLWZsaWdodCBpZHMgb21pdHRlZCBmcm9tIHRoZSBib3VuZGVkIHNuYXBzaG90LlxuICogQHByb3BlcnR5IHtQb29sZWRDaGlsZFNodXRkb3duUmVhc29ufSByZWFzb24gLSBTaHV0ZG93biByZWFzb24gb2JzZXJ2ZWQgYnkgdGhlIGNoaWxkLlxuICogQHByb3BlcnR5IHtudW1iZXJ9IHNodXRkb3duT2JzZXJ2ZWRBdE1zIC0gQ2hpbGQgb2JzZXJ2YXRpb24gdGltZXN0YW1wLlxuICogQHByb3BlcnR5IHtudW1iZXIgfCBudWxsfSBzaHV0ZG93blJlcXVlc3RlZEF0TXMgLSBQYXJlbnQgcmVxdWVzdCB0aW1lc3RhbXAgd2hlbiBzdXBwbGllZCBvdmVyIElQQy5cbiAqIEBwcm9wZXJ0eSB7aW1wb3J0KFwibm9kZTpjaGlsZF9wcm9jZXNzXCIpLkNoaWxkUHJvY2Vzc1tcInNpZ25hbENvZGVcIl19IHNpZ25hbCAtIFJlcXVlc3RlZCBvciBvYnNlcnZlZCBzaWduYWwgd2hlbiBhdmFpbGFibGUuXG4gKi9cbi8qKlxuICogQm91bmRlZCBwb29sZWQtY2hpbGQgbWVtb3J5IG9ic2VydmF0aW9uIHNlbnQgb3ZlciB0aGUgY2hpbGQgSVBDIGNoYW5uZWwuXG4gKiBUaGUgcG9vbGVkIGNoaWxkJ3Mgc3RkaW8gaXMgaWdub3JlZCBieSB0aGUgd29ya2VyIGZvcmssIHNvIHRoaXMgb2JzZXJ2YXRpb25cbiAqIChzZW50IHBlcmlvZGljYWxseSB3aGlsZSBqb2JzIHJ1biwgcGx1cyBvbiBkZW1hbmQpIGlzIGhvdyBhIG1lbW9yeSBwcm9ibGVtXG4gKiBpbiBhIHJ1bm5pbmcgY2hpbGQgbmFtZXMgaXRzZWxmLiBgaGVhcFN0YXRpc3RpY3NgIGFuZCBgbWVtb3J5VXNhZ2VgXG4gKiBkaXN0aW5ndWlzaCBWOC1oZWFwIGdyb3d0aCBmcm9tIGV4dGVybmFsL2FycmF5LWJ1ZmZlciAobmF0aXZlIHJlc291cmNlKVxuICogZ3Jvd3RoOyBgYWN0aXZlSm9iSWRzYCB0aWVzIHRoZSBzYW1wbGUgdG8gdGhlIHdvcmsgdGhhdCB3YXMgaW4gZmxpZ2h0LlxuICogQHR5cGVkZWYge29iamVjdH0gUG9vbGVkQ2hpbGRNZW1vcnlPYnNlcnZhdGlvblxuICogQHByb3BlcnR5IHtzdHJpbmdbXX0gYWN0aXZlSm9iSWRzIC0gSW4tZmxpZ2h0IGpvYiBpZHMsIGJvdW5kZWQuXG4gKiBAcHJvcGVydHkge251bWJlcn0gYWN0aXZlSm9iSWRzVHJ1bmNhdGVkQ291bnQgLSBJbi1mbGlnaHQgam9iIGlkcyBvbWl0dGVkIGJ5IHRoZSBib3VuZC5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBjaGlsZEluc3RhbmNlSWQgLSBTdGFibGUgaWRlbnRpdHkgcmVwb3J0ZWQgYnkgdGhlIGNoaWxkLlxuICogQHByb3BlcnR5IHtudW1iZXJ9IGNoaWxkUGlkIC0gQ2hpbGQgcHJvY2VzcyBpZC5cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBjaGlsZFVwdGltZU1zIC0gQ2hpbGQgcHJvY2VzcyB1cHRpbWUgaW4gbXMuXG4gKiBAcHJvcGVydHkge1JldHVyblR5cGU8dHlwZW9mIGltcG9ydChcIm5vZGU6djhcIikuZ2V0SGVhcFN0YXRpc3RpY3M+fSBoZWFwU3RhdGlzdGljcyAtIFY4IGhlYXAtc3RhdCBicmVha2Rvd24gYXQgdGhlIHNhbXBsZS5cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBqb2JDb3VudCAtIEluLWZsaWdodCBqb2IgY291bnQuXG4gKiBAcHJvcGVydHkge1JldHVyblR5cGU8dHlwZW9mIGltcG9ydChcIm5vZGU6cHJvY2Vzc1wiKS5tZW1vcnlVc2FnZT59IG1lbW9yeVVzYWdlIC0gUHJvY2VzcyBtZW1vcnkgYnJlYWtkb3duIGF0IHRoZSBzYW1wbGUuXG4gKiBAcHJvcGVydHkge251bWJlcn0gb2JzZXJ2ZWRBdE1zIC0gRXBvY2ggbXMgdGhlIGNoaWxkIHNhbXBsZWQuXG4gKiBAcHJvcGVydHkge251bWJlcn0gcGVha1Jzc0J5dGVzIC0gQ2hpbGQtcmVwb3J0ZWQgcGVhayBSU1MgKGtlcm5lbCBgVm1IV01gIGhpZ2gtd2F0ZXIgbWFyaykgaW4gYnl0ZXMsIG1vbm90b25pYyBmb3IgdGhlIGNoaWxkJ3MgbGlmZS5cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSByc3NCeXRlcyAtIFJlc2lkZW50IHNldCBzaXplIGluIGJ5dGVzIGF0IHRoZSBzYW1wbGUuXG4gKiBAcHJvcGVydHkge1wicG9vbGVkLWNoaWxkLW1lbW9yeVwifSB0eXBlIC0gRGlzY3JpbWluYXRvci5cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSB1cHRpbWVNcyAtIFByb2Nlc3MgdXB0aW1lIGluIG1zLlxuICovXG4vKipcbiAqIEB0eXBlZGVmIHtvYmplY3R9IExvY2FsQmFja2dyb3VuZEpvYnNDbG9ja1xuICogQHByb3BlcnR5IHsoKSA9PiBudW1iZXJ9IG5vdyAtIEN1cnJlbnQgZXBvY2ggbWlsbGlzZWNvbmRzLlxuICogQHByb3BlcnR5IHsoY2FsbGJhY2s6ICgpID0+IHZvaWQsIGRlbGF5TXM6IG51bWJlcikgPT4gUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4gfCBudW1iZXJ9IHNldFRpbWVvdXQgLSBBcm1zIGEgdGltZXIuXG4gKiBAcHJvcGVydHkgeyh0aW1lcklkOiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PiB8IG51bWJlcikgPT4gdm9pZH0gY2xlYXJUaW1lb3V0IC0gQ2xlYXJzIGEgdGltZXIuXG4gKi9cbi8qKlxuICogQHR5cGVkZWYge29iamVjdH0gUmVzb2x2ZWRCYWNrZ3JvdW5kSm9iQ29uY3VycmVuY3lcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBjb25jdXJyZW5jeUtleSAtIER1cmFibGUgY2FwIGlkZW50aXR5LlxuICogQHByb3BlcnR5IHtudW1iZXJ9IG1heENvbmN1cnJlbmN5IC0gUG9zaXRpdmUgY2FwLlxuICogQHByb3BlcnR5IHtib29sZWFufSBxdWV1ZURlcml2ZWQgLSBXaGV0aGVyIHF1ZXVlIGNvbmZpZ3VyYXRpb24gb3ducyB0aGUgY2FwLlxuICovXG4vKipcbiAqIEB0eXBlZGVmIHtvYmplY3R9IEJhY2tncm91bmRKb2JDb25jdXJyZW5jeVJlcGFpclxuICogQHByb3BlcnR5IHtudW1iZXJ9IGFjdGl2ZUNvdW50IC0gRXhhY3QgaGFuZGVkLW9mZiBqb2IgY291bnQgcGVyc2lzdGVkIGJ5IHRoZSByZXBhaXIuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gY29uY3VycmVuY3lLZXkgLSBEdXJhYmxlIGNhcCBpZGVudGl0eS5cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBwcmV2aW91c0FjdGl2ZUNvdW50IC0gUGVyc2lzdGVkIGNvdW50IHJlcGxhY2VkIGJ5IHRoZSByZXBhaXIuXG4gKi9cbi8qKlxuICogQHR5cGVkZWYge29iamVjdH0gQmFja2dyb3VuZEpvYkNvbmN1cnJlbmN5UmVjb25jaWxpYXRpb25cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBjYW5kaWRhdGVDb3VudCAtIFNuYXBzaG90IG1pc21hdGNoZXMgcmVjaGVja2VkIHVuZGVyIHRoZWlyIGNvdW50ZXIgbG9ja3MuXG4gKiBAcHJvcGVydHkge251bWJlcn0gY2hlY2tlZENvdW50IC0gQWN0aXZlIG9yIG5vbnplcm8gZHVyYWJsZSBjb3VudGVycyBjb21wYXJlZCBpbiB0aGUgaW5pdGlhbCBzbmFwc2hvdC5cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSByZXBhaXJlZENvdW50IC0gQ291bnRlcnMgd2hvc2UgcGVyc2lzdGVkIHZhbHVlcyB3ZXJlIGNoYW5nZWQuXG4gKiBAcHJvcGVydHkge0JhY2tncm91bmRKb2JDb25jdXJyZW5jeVJlcGFpcltdfSByZXBhaXJzIC0gQm91bmRlZCBkZXRlcm1pbmlzdGljIHNhbXBsZSBvZiBhcHBsaWVkIHJlcGFpcnMuXG4gKiBAcHJvcGVydHkge251bWJlcn0gcmVwYWlyc1RydW5jYXRlZENvdW50IC0gQXBwbGllZCByZXBhaXJzIG9taXR0ZWQgZnJvbSB0aGUgc2FtcGxlLlxuICovXG4vKipcbiAqIEB0eXBlZGVmIHtvYmplY3R9IFByZXBhcmVkTG9jYWxCYWNrZ3JvdW5kSm9iXG4gKiBAcHJvcGVydHkge3N0cmluZ30gYXJnc0RpZ2VzdCAtIEZpeGVkLXdpZHRoIGRpZ2VzdCBvZiB0aGUgc2VyaWFsaXplZCBhcmd1bWVudHMuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gYXJnc0pzb24gLSBTZXJpYWxpemVkIGFyZ3VtZW50cy5cbiAqIEBwcm9wZXJ0eSB7UmVzb2x2ZWRCYWNrZ3JvdW5kSm9iQ29uY3VycmVuY3kgfCBudWxsfSBjb25jdXJyZW5jeSAtIFJlc29sdmVkIGNvbmN1cnJlbmN5LlxuICogQHByb3BlcnR5IHtudW1iZXJ9IGNyZWF0ZWRBdE1zIC0gQ3JlYXRpb24gdGltZXN0YW1wLlxuICogQHByb3BlcnR5IHtcImlubGluZVwifSBleGVjdXRpb25Nb2RlIC0gTG9jYWwgaW4tcHJvY2VzcyBleGVjdXRpb24gbW9kZS5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBqb2JJZCAtIER1cmFibGUgaWQuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gam9iTmFtZSAtIFJlZ2lzdGVyZWQgbmFtZS5cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBtYXhSZXRyaWVzIC0gUmV0cnkgY2FwLlxuICogQHByb3BlcnR5IHtzdHJpbmd9IHF1ZXVlIC0gUXVldWUgbmFtZS5cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBzY2hlZHVsZWRBdE1zIC0gRWxpZ2liaWxpdHkgdGltZXN0YW1wLlxuICovXG4vKipcbiAqIEB0eXBlZGVmIHtvYmplY3R9IEJhY2tncm91bmRKb2JzSGVhbHRoXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IHJlYWR5IC0gV2hldGhlciB0aGUgYWRhcHRlciBjYW4gYWNjZXB0IGFuZCBwcm9jZXNzIHdvcmsuXG4gKi9cbi8qKlxuICogQHR5cGVkZWYge29iamVjdH0gQmFja2dyb3VuZEpvYnNQcm9kdWNlclxuICogQHByb3BlcnR5IHsoYXJnczoge2pvYk5hbWU6IHN0cmluZywgYXJnczogQXJyYXk8UmV0dXJuVHlwZTx0eXBlb2YgSlNPTi5wYXJzZT4+LCBvcHRpb25zPzogQmFja2dyb3VuZEpvYk9wdGlvbnMsIHByb2R1Y2VySW52b2NhdGlvbklkPzogc3RyaW5nLCBwcm9kdWNlclByb29mPzogQmFja2dyb3VuZEpvYlByb2R1Y2VyUHJvb2Z9KSA9PiBQcm9taXNlPHN0cmluZz59IGVucXVldWUgLSBFbnF1ZXVlcyBhIGpvYi5cbiAqIEBwcm9wZXJ0eSB7KGFyZ3M6IHtzY2hlZHVsZUtleTogc3RyaW5nLCBqb2JOYW1lOiBzdHJpbmcsIGFyZ3M6IEFycmF5PFJldHVyblR5cGU8dHlwZW9mIEpTT04ucGFyc2U+Piwgb3B0aW9ucz86IEJhY2tncm91bmRKb2JPcHRpb25zfSkgPT4gUHJvbWlzZTxCYWNrZ3JvdW5kSm9iUmVwbGFjZW1lbnRSZXN1bHQ+fSByZXBsYWNlU2NoZWR1bGVkIC0gUmVwbGFjZXMgYSBzdGFibGUgc2NoZWR1bGUuXG4gKiBAcHJvcGVydHkgeyhhcmdzOiB7c2NoZWR1bGVLZXk6IHN0cmluZ30pID0+IFByb21pc2U8QmFja2dyb3VuZEpvYkNhbmNlbGxhdGlvblJlc3VsdD59IGNhbmNlbFNjaGVkdWxlZCAtIENhbmNlbHMgYSBzdGFibGUgc2NoZWR1bGUuXG4gKiBAcHJvcGVydHkgeyhhcmdzOiB7c2NoZWR1bGVLZXk6IHN0cmluZywgaW5jbHVkZUxhdGVzdFRlcm1pbmFsPzogYm9vbGVhbn0pID0+IFByb21pc2U8QmFja2dyb3VuZEpvYlNjaGVkdWxlZExvb2t1cFJlc3VsdD59IGdldFNjaGVkdWxlZEpvYiAtIFJlYWRzIHN0YWJsZSBzY2hlZHVsZSBvd25lcnNoaXAgYW5kIGhpc3RvcnkuXG4gKiBAcHJvcGVydHkgeyhhcmdzOiB7c2NoZWR1bGVLZXk6IHN0cmluZ30pID0+IFByb21pc2U8QmFja2dyb3VuZEpvYldha2VSZXN1bHQ+fSB3YWtlU2NoZWR1bGVkIC0gRXhwZWRpdGVzIGEgc3RhYmxlIHNjaGVkdWxlIG93bmVyLlxuICovXG4vKipcbiAqIEB0eXBlZGVmIHtvYmplY3R9IEJhY2tncm91bmRKb2JIYW5kb2ZmXG4gKiBAcHJvcGVydHkge3N0cmluZ30gaGFuZG9mZklkIC0gVW5pcXVlIGhhbmRvZmYgbGVhc2UgaWQuXG4gKiBAcHJvcGVydHkge251bWJlcn0gaGFuZGVkT2ZmQXRNcyAtIFRpbWUgaGFuZGVkIHRvIGEgd29ya2VyIGluIG1zLlxuICogQHByb3BlcnR5IHtCYWNrZ3JvdW5kSm9iUm93fSBbam9iXSAtIEV4YWN0IGNvbW1pdHRlZCBqb2Igc25hcHNob3Qgd2hlbiB0aGUgYWRhcHRlciBjaGFuZ2VzIGRpc3BhdGNoIGRhdGEgZHVyaW5nIHRoZSBjbGFpbS5cbiAqL1xuLyoqXG4gKiBAdHlwZWRlZiB7b2JqZWN0fSBCYWNrZ3JvdW5kSm9iSGFuZG9mZlNuYXBzaG90XG4gKiBAcHJvcGVydHkge3N0cmluZ30gam9iSWQgLSBKb2IgaG9sZGluZyB0aGUgbGVhc2UuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gaGFuZG9mZklkIC0gRXhhY3QgZHVyYWJsZSBsZWFzZSBpZC5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSB3b3JrZXJJZCAtIFN0YWJsZSB3b3JrZXIgaWQgdGhhdCByZWNlaXZlZCB0aGUgbGVhc2UuXG4gKiBAcHJvcGVydHkge251bWJlcn0gaGFuZGVkT2ZmQXRNcyAtIFRpbWUgaGFuZGVkIHRvIHRoZSB3b3JrZXIgaW4gbXMuXG4gKi9cbi8qKlxuICogQHR5cGVkZWYge29iamVjdH0gQmFja2dyb3VuZEpvYkhhbmRvZmZSZXF1ZXN0XG4gKiBAcHJvcGVydHkge3N0cmluZ30gam9iSWQgLSBKb2IgdG8gY2xhaW0uXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW2hhbmRvZmZJZF0gLSBFeGFjdCBjYWxsZXItc2VsZWN0ZWQgbGVhc2UgaWQuIEFkYXB0ZXJzIG11c3QgcGVyc2lzdCBhbmQgcmV0dXJuIHRoaXMgaWQgd2hlbiBzdXBwbGllZDsgYnVpbHQtaW4gYWRhcHRlcnMgZ2VuZXJhdGUgb25lIHdoZW4gb21pdHRlZCBmb3IgbGVnYWN5IGRpcmVjdCBjYWxsZXJzLlxuICogQHByb3BlcnR5IHtzdHJpbmd9IFt3b3JrZXJJZF0gLSBXb3JrZXIgY2xhaW1pbmcgdGhlIGpvYi5cbiAqL1xuLyoqXG4gKiBAdHlwZWRlZiB7b2JqZWN0fSBCYWNrZ3JvdW5kSm9iT3B0aW9uc1xuICogQHByb3BlcnR5IHtCYWNrZ3JvdW5kSm9iRXhlY3V0aW9uTW9kZX0gW2V4ZWN1dGlvbk1vZGVdIC0gSG93IHRoZSBqb2Igc2hvdWxkIHJ1bi4gTm9kZSBkZWZhdWx0cyB0byBgXCJwb29sZWRcImAgKGEgd2FybSwgcmV1c2VkIGxvY2FsIHJ1bm5lciBwcm9jZXNzKS4gQnJvd3Nlci9FeHBvIGxvY2FsIGRpc3BhdGNoIGRlZmF1bHRzIHRvIGFuZCBvbmx5IGFjY2VwdHMgYFwiaW5saW5lXCJgLiBgXCJmb3JrZWRcImAgcnVucyBhIE5vZGUgam9iIGluIGEgZnJlc2ggYGNoaWxkX3Byb2Nlc3MuZm9yaygpYCBjaGlsZCwgYW5kIGBcInNwYXduZWRcImAgaW4gYSBkZXRhY2hlZCBDTEkgcnVubmVyLlxuICogQHByb3BlcnR5IHtudW1iZXJ9IFttYXhSZXRyaWVzXSAtIE1heCByZXRyaWVzIGZvciBhIGZhaWxlZCBqb2IgYmVmb3JlIGl0IGlzIG1hcmtlZCBmYWlsZWQuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW3F1ZXVlXSAtIFF1ZXVlIG5hbWUuIERlZmF1bHRzIHRvIGBcImRlZmF1bHRcImAuIFdoZW4gdGhlIHF1ZXVlIGhhcyBhIGNvbmZpZ3VyZWQgY2FwIGluIGBiYWNrZ3JvdW5kSm9icy5xdWV1ZXNgLCB0aGF0IGNhcCBpcyBlbmZvcmNlZCBjbHVzdGVyLXdpZGUuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW2NvbmN1cnJlbmN5S2V5XSAtIE9wYXF1ZSBub24tZW1wdHkga2V5IHVzZWQgdG8gc2hhcmUgYSBjb25jdXJyZW5jeSBjYXAuIE92ZXJyaWRlcyBhbnkgcXVldWUtZGVyaXZlZCBjYXAuXG4gKiBAcHJvcGVydHkge251bWJlcn0gW21heENvbmN1cnJlbmN5XSAtIFBvc2l0aXZlIGludGVnZXIgY2FwOyBtdXN0IGJlIHBhaXJlZCB3aXRoIGBjb25jdXJyZW5jeUtleWAuXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IFtkZWR1cGxpY2F0ZVdoaWxlUXVldWVkXSAtIFdoZW4gdHJ1ZSwgc2tpcCB0aGUgZW5xdWV1ZSBpZiBhbiBpZGVudGljYWwgc3RpbGwtcXVldWVkIGpvYiAoc2FtZSBqb2IgbmFtZSwgYXJncyBhbmQgcXVldWUpIGlzIHNjaGVkdWxlZCBubyBsYXRlciB0aGFuIHRoaXMgZW5xdWV1ZSwgcmV0dXJuaW5nIHRoZSBlYXJsaWVzdCBtYXRjaGluZyBqb2IncyBpZC4gQSBmdXR1cmUgcmV0cnkgZG9lcyBub3Qgc3VwcHJlc3MgZWFybGllciB3b3JrLiBEZWR1cGxpY2F0aW9uIGlzIGluZGVwZW5kZW50IG9mIGBjb25jdXJyZW5jeUtleWAsIHNvIHRoZSBqb2Iga2VlcHMgaXRzIG5vcm1hbCAoZS5nLiBxdWV1ZS1kZXJpdmVkKSBjb25jdXJyZW5jeSBjYXAuIEtlZXBzIGFuIGludGVydmFsLXNjaGVkdWxlZCByZWN1cnJpbmcgam9iIChlLmcuIHJldGVudGlvbiBwcnVuaW5nKSBmcm9tIHBpbGluZyB1cCByZWR1bmRhbnQgcXVldWVkIHJvd3Mgd2hlbiBpdCBydW5zIHNsb3dlciB0aGFuIGl0cyBpbnRlcnZhbCBvciBubyB3b3JrZXIgaXMgZnJlZS5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbaWRlbXBvdGVuY3lLZXldIC0gRHVyYWJsZSBlbnF1ZXVlIGlkZW50aXR5IHNjb3BlZCB0byB0aGUgcmVzb2x2ZWQgam9iIGNsYXNzIG5hbWUgYW5kIHF1ZXVlLiBFeGFjdCByZXBsYXkgcmV0dXJucyB0aGUgb3JpZ2luYWwgam9iIGlkIGFjcm9zcyBldmVyeSBzdGF0ZSBhbmQgYWZ0ZXIgam9iIHBydW5pbmc7IHJldXNlIHdpdGggZGlmZmVyZW50IGNhbm9uaWNhbCBhcmd1bWVudHMgb3IgYmVoYXZpb3ItYWZmZWN0aW5nIG9wdGlvbnMgZmFpbHMuIE93bmVyc2hpcCBpcyBpbmRlcGVuZGVudCBvZiBgZGVkdXBsaWNhdGVXaGlsZVF1ZXVlZGAgYW5kIGlzIHJldGFpbmVkIHVudGlsIGFuIGV4cGxpY2l0IGZ1dHVyZSByZXRlbnRpb24gcG9saWN5IHJlbW92ZXMgaXQuXG4gKiBAcHJvcGVydHkge251bWJlcn0gW3NjaGVkdWxlZEF0TXNdIC0gRXBvY2ggdGltZXN0YW1wIGluIG1pbGxpc2Vjb25kcyB3aGVuIHRoZSBqb2IgYmVjb21lcyBlbGlnaWJsZSBmb3IgZGlzcGF0Y2guIERlZmF1bHRzIHRvIGVucXVldWUgdGltZS5cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBbdGltZW91dE1zXSAtIFBlci1qb2Igd2FsbC1jbG9jayB0aW1lb3V0IGZvciBmb3JrZWQgYW5kIHBvb2xlZCBleGVjdXRpb24uIEEgcG9zaXRpdmUgaW50ZWdlciB1cCB0byAyLDE0Nyw0ODMsNjQ3IG92ZXJyaWRlcyB0aGUgd29ya2VyLWxldmVsIGBqb2JUaW1lb3V0TXNgOyBhIG5vbi1wb3NpdGl2ZSBmaW5pdGUgdmFsdWUgZGlzYWJsZXMgdGhlIHRpbWVvdXQgZm9yIHRoaXMgam9iLlxuICovXG4vKipcbiAqIEB0eXBlZGVmIHtvYmplY3R9IEJhY2tncm91bmRKb2JQYXlsb2FkXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW2lkXSAtIEpvYiBpZC5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBqb2JOYW1lIC0gSm9iIGNsYXNzIG5hbWUuXG4gKiBAcHJvcGVydHkge0FycmF5PFJldHVyblR5cGU8dHlwZW9mIEpTT04ucGFyc2U+Pn0gW2FyZ3NdIC0gU2VyaWFsaXplZCBqb2IgYXJndW1lbnRzLlxuICogQHByb3BlcnR5IHtzdHJpbmd9IFtoYW5kb2ZmSWRdIC0gVW5pcXVlIGhhbmRvZmYgbGVhc2UgaWQuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW3dvcmtlcklkXSAtIFdvcmtlciBpZCBoYW5kbGluZyB0aGUgam9iLlxuICogQHByb3BlcnR5IHtudW1iZXJ9IFtoYW5kZWRPZmZBdE1zXSAtIFRpbWUgaGFuZGVkIHRvIGEgd29ya2VyIGluIG1zLlxuICogQHByb3BlcnR5IHtCYWNrZ3JvdW5kSm9iT3B0aW9uc30gW29wdGlvbnNdIC0gUnVudGltZSBvcHRpb25zLlxuICovXG4vKipcbiAqIEB0eXBlZGVmIHtvYmplY3R9IEJhY2tncm91bmRKb2JDb250ZXh0XG4gKiBAcHJvcGVydHkge3R5cGVvZiBpbXBvcnQoXCIuL3BsYXRmb3JtLWpvYi5qc1wiKS5kZWZhdWx0fSBqb2JDbGFzcyAtIENvbmNyZXRlIGpvYiBjbGFzcy5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBqb2JOYW1lIC0gUmVnaXN0ZXJlZCBqb2IgbmFtZS5cbiAqIEBwcm9wZXJ0eSB7QXJyYXk8UmV0dXJuVHlwZTx0eXBlb2YgSlNPTi5wYXJzZT4+fSBhcmdzIC0gU2VyaWFsaXplZCBqb2IgYXJndW1lbnRzLlxuICogQHByb3BlcnR5IHtCYWNrZ3JvdW5kSm9iT3B0aW9uc30gb3B0aW9ucyAtIFJlc29sdmVkIGVucXVldWUvcnVudGltZSBvcHRpb25zLlxuICogQHByb3BlcnR5IHtCYWNrZ3JvdW5kSm9iUGF5bG9hZH0gW3BheWxvYWRdIC0gQ29tcGxldGUgcGVyc2lzdGVkIHJ1bm5lciBwYXlsb2FkIHdoZW4gdGhlIGpvYiBpcyBwZXJmb3JtaW5nLlxuICovXG4vKipcbiAqIEB0eXBlZGVmIHtvYmplY3R9IEJhY2tncm91bmRKb2JSb3dcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBpZCAtIEpvYiBpZC5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBqb2JOYW1lIC0gSm9iIGNsYXNzIG5hbWUuXG4gKiBAcHJvcGVydHkge0FycmF5PFJldHVyblR5cGU8dHlwZW9mIEpTT04ucGFyc2U+Pn0gYXJncyAtIFNlcmlhbGl6ZWQgam9iIGFyZ3VtZW50cy5cbiAqIEBwcm9wZXJ0eSB7QmFja2dyb3VuZEpvYkV4ZWN1dGlvbk1vZGV9IGV4ZWN1dGlvbk1vZGUgLSBIb3cgdGhlIGpvYiBzaG91bGQgcnVuLlxuICogQHByb3BlcnR5IHtzdHJpbmd9IHF1ZXVlIC0gUXVldWUgbmFtZSAoZGVmYXVsdHMgdG8gYFwiZGVmYXVsdFwiYCkuXG4gKiBAcHJvcGVydHkge3N0cmluZyB8IG51bGx9IHNjaGVkdWxlS2V5IC0gU3RhYmxlIGxvZ2ljYWwgc2NoZWR1bGUga2V5IHJldGFpbmVkIGZvciBoaXN0b3J5LlxuICogQHByb3BlcnR5IHtudW1iZXIgfCBudWxsfSBzY2hlZHVsZU9yZGVyIC0gVHJhbnNhY3Rpb24tYXNzaWduZWQgbW9ub3RvbmljIG93bmVyc2hpcCBvcmRlciBmb3IgdGhpcyBzY2hlZHVsZSBrZXk7IE5vZGUgcHJlc2VydmVzIGl0cyBoaWdoLXdhdGVyIG1hcmsgYWNyb3NzIHRlcm1pbmFsLWhpc3RvcnkgcHJ1bmluZy4gTnVsbCBmb3IgbGVnYWN5L25vbi1zY2hlZHVsZWQgcm93cy5cbiAqIEBwcm9wZXJ0eSB7QmFja2dyb3VuZEpvYlN0YXR1c30gc3RhdHVzIC0gQ3VycmVudCBqb2Igc3RhdHVzLlxuICogQHByb3BlcnR5IHtudW1iZXIgfCBudWxsfSBhdHRlbXB0cyAtIEZhaWx1cmUgYXR0ZW1wdHMgY291bnQuXG4gKiBAcHJvcGVydHkge251bWJlciB8IG51bGx9IG1heFJldHJpZXMgLSBNYXggcmV0cnkgYXR0ZW1wdHMuXG4gKiBAcHJvcGVydHkge251bWJlciB8IG51bGx9IHNjaGVkdWxlZEF0TXMgLSBOZXh0IHNjaGVkdWxlZCB0aW1lIGluIG1zLlxuICogQHByb3BlcnR5IHtudW1iZXIgfCBudWxsfSBjcmVhdGVkQXRNcyAtIENyZWF0aW9uIHRpbWUgaW4gbXMuXG4gKiBAcHJvcGVydHkge251bWJlciB8IG51bGx9IGhhbmRlZE9mZkF0TXMgLSBUaW1lIGhhbmRlZCB0byB3b3JrZXIgaW4gbXMuXG4gKiBAcHJvcGVydHkge3N0cmluZyB8IG51bGx9IGhhbmRvZmZJZCAtIFVuaXF1ZSBsYXRlc3QgaGFuZG9mZiBsZWFzZSBpZC5cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyIHwgbnVsbH0gY29tcGxldGVkQXRNcyAtIENvbXBsZXRpb24gdGltZSBpbiBtcy5cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyIHwgbnVsbH0gZmFpbGVkQXRNcyAtIEZhaWx1cmUgdGltZSBpbiBtcy5cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyIHwgbnVsbH0gb3JwaGFuZWRBdE1zIC0gT3JwaGFuZWQgdGltZSBpbiBtcy5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nIHwgbnVsbH0gd29ya2VySWQgLSBXb3JrZXIgaWQgaGFuZGxpbmcgdGhlIGpvYi5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nIHwgbnVsbH0gbGFzdEVycm9yIC0gTGFzdCBmYWlsdXJlIG1lc3NhZ2UuXG4gKiBAcHJvcGVydHkge3N0cmluZyB8IG51bGx9IGNvbmN1cnJlbmN5S2V5IC0gRHVyYWJsZSBjb25jdXJyZW5jeSBrZXkuXG4gKiBAcHJvcGVydHkge251bWJlciB8IG51bGx9IG1heENvbmN1cnJlbmN5IC0gRHVyYWJsZSBwZXIta2V5IGNhcC5cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyIHwgbnVsbH0gdGltZW91dE1zIC0gUGVyLWpvYiB3YWxsLWNsb2NrIHRpbWVvdXQgb3ZlcnJpZGUsIG9yIG51bGwgd2hlbiBvbWl0dGVkLlxuICogQHByb3BlcnR5IHtudW1iZXIgfCBudWxsfSBjaGlsZFJlY2VpdmVkQXRNcyAtIEVwb2NoIG1zIHdoZW4gdGhlIGV4ZWN1dGluZyBwb29sZWQgY2hpbGQncyBldmVudCBsb29wIHByb2Nlc3NlZCB0aGUgam9iIG1lc3NhZ2UsIG9yIG51bGwgd2hlbiBubyBydW5uZXIgYWNjZXB0ZWQgaXQgeWV0LlxuICogQHByb3BlcnR5IHtudW1iZXIgfCBudWxsfSBjaGlsZFN0YXJ0ZWRBdE1zIC0gRXBvY2ggbXMgd2hlbiB0aGUgam9iJ3MgcGVyZm9ybSBzdGFydGVkIGluIHRoZSBwb29sZWQgY2hpbGQsIG9yIG51bGwgd2hlbiBpdCBuZXZlciBzdGFydGVkLlxuICogQHByb3BlcnR5IHtzdHJpbmcgfCBudWxsfSBjaGlsZEluc3RhbmNlSWQgLSBTdGFibGUgaWRlbnRpdHkgb2YgdGhlIHBvb2xlZCBjaGlsZCBwcm9jZXNzIHRoYXQgYWNjZXB0ZWQgdGhlIGpvYiwgb3IgbnVsbC5cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyIHwgbnVsbH0gY2hpbGRQaWQgLSBPUyBwaWQgb2YgdGhlIHBvb2xlZCBjaGlsZCBwcm9jZXNzIHRoYXQgYWNjZXB0ZWQgdGhlIGpvYiwgb3IgbnVsbC5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nIHwgbnVsbH0gcnVubmVySG9zdG5hbWUgLSBIb3N0bmFtZSByZXBvcnRlZCBieSB0aGUgcG9vbGVkIGNoaWxkIHByb2Nlc3MgdGhhdCBhY2NlcHRlZCB0aGUgam9iLCBvciBudWxsLlxuICovXG4vKipcbiAqIEB0eXBlZGVmIHtcInF1ZXVlZFwiIHwgXCJoYW5kZWRfb2ZmXCIgfCBudWxsfSBCYWNrZ3JvdW5kSm9iUmVwbGFjZW1lbnRQcmV2aW91c1N0YXR1c1xuICovXG4vKipcbiAqIEB0eXBlZGVmIHtvYmplY3R9IEJhY2tncm91bmRKb2JSZXBsYWNlbWVudFJlc3VsdFxuICogQHByb3BlcnR5IHtzdHJpbmd9IGpvYklkIC0gTmV3bHkgcXVldWVkIGpvYiBpZC5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nIHwgbnVsbH0gcHJldmlvdXNKb2JJZCAtIFByZXZpb3VzIGFjdGl2ZSBvd25lcidzIGpvYiBpZC5cbiAqIEBwcm9wZXJ0eSB7QmFja2dyb3VuZEpvYlJlcGxhY2VtZW50UHJldmlvdXNTdGF0dXN9IHByZXZpb3VzU3RhdHVzIC0gUHJldmlvdXMgb3duZXIncyBvYnNlcnZlZCBzdGF0ZS5cbiAqL1xuLyoqXG4gKiBAdHlwZWRlZiB7XCJjYW5jZWxsZWRcIiB8IFwiaGFuZGVkX29mZlwiIHwgXCJub3RfZm91bmRcIn0gQmFja2dyb3VuZEpvYkNhbmNlbGxhdGlvbk91dGNvbWVcbiAqL1xuLyoqXG4gKiBAdHlwZWRlZiB7b2JqZWN0fSBCYWNrZ3JvdW5kSm9iQ2FuY2VsbGF0aW9uUmVzdWx0XG4gKiBAcHJvcGVydHkge3N0cmluZyB8IG51bGx9IGpvYklkIC0gRGV0YWNoZWQgb3duZXIncyBqb2IgaWQsIHdoZW4gb25lIHdhcyBhY3RpdmUuXG4gKiBAcHJvcGVydHkge0JhY2tncm91bmRKb2JDYW5jZWxsYXRpb25PdXRjb21lfSBvdXRjb21lIC0gVHJ1dGhmdWwgYmVzdC1lZmZvcnQgb3V0Y29tZS5cbiAqL1xuLyoqXG4gKiBAdHlwZWRlZiB7b2JqZWN0fSBCYWNrZ3JvdW5kSm9iU2NoZWR1bGVkTG9va3VwUmVzdWx0XG4gKiBAcHJvcGVydHkge0JhY2tncm91bmRKb2JSb3cgfCBudWxsfSBjdXJyZW50Sm9iIC0gQ3VycmVudCBxdWV1ZWQgb3IgaGFuZGVkLW9mZiBvd25lci5cbiAqIEBwcm9wZXJ0eSB7QmFja2dyb3VuZEpvYlJvdyB8IG51bGx9IGxhdGVzdFRlcm1pbmFsSm9iIC0gTGF0ZXN0IHRlcm1pbmFsIGhpc3Rvcnkgd2hlbiByZXF1ZXN0ZWQuXG4gKi9cbi8qKlxuICogQHR5cGVkZWYge1wid29rZW5cIiB8IFwiYWxyZWFkeV9kdWVcIiB8IFwiaGFuZGVkX29mZlwiIHwgXCJub3RfZm91bmRcIn0gQmFja2dyb3VuZEpvYldha2VPdXRjb21lXG4gKi9cbi8qKlxuICogQHR5cGVkZWYge29iamVjdH0gQmFja2dyb3VuZEpvYldha2VSZXN1bHRcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nIHwgbnVsbH0gam9iSWQgLSBDdXJyZW50IG93bmVyJ3MgZHVyYWJsZSBqb2IgaWQsIHdoZW4gZm91bmQuXG4gKiBAcHJvcGVydHkge0JhY2tncm91bmRKb2JXYWtlT3V0Y29tZX0gb3V0Y29tZSAtIEV4YWN0IHdha2Ugb3V0Y29tZS5cbiAqL1xuLyoqXG4gKiBAdHlwZWRlZiB7b2JqZWN0fSBCYWNrZ3JvdW5kSm9iRmFpbHVyZUV2ZW50XG4gKiBAcHJvcGVydHkge0JhY2tncm91bmRKb2JSb3d9IGpvYiAtIFVwZGF0ZWQgam9iIHJvdyBhZnRlciBmYWlsdXJlIGhhbmRsaW5nLlxuICogQHByb3BlcnR5IHtSZXR1cm5UeXBlPHR5cGVvZiBKU09OLnBhcnNlPn0gZXJyb3IgLSBGYWlsdXJlIGVycm9yLlxuICogQHByb3BlcnR5IHtudW1iZXIgfCBudWxsfSBhdHRlbXB0cyAtIFVwZGF0ZWQgZmFpbHVyZSBhdHRlbXB0cyBjb3VudC5cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gdGVybWluYWwgLSBXaGV0aGVyIHRoaXMgZmFpbHVyZSBlbmRlZCB0aGUgam9iLlxuICogQHByb3BlcnR5IHtib29sZWFufSB3aWxsUmV0cnkgLSBXaGV0aGVyIHRoZSBqb2Igd2FzIHJldHVybmVkIHRvIHRoZSBxdWV1ZS5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nIHwgdW5kZWZpbmVkfSBoYW5kb2ZmSWQgLSBIYW5kb2ZmIGxlYXNlIGlkIGZyb20gdGhlIHdvcmtlciByZXBvcnQuXG4gKiBAcHJvcGVydHkge251bWJlciB8IHVuZGVmaW5lZH0gaGFuZGVkT2ZmQXRNcyAtIEhhbmRvZmYgdGltZXN0YW1wIGZyb20gdGhlIHdvcmtlciByZXBvcnQuXG4gKiBAcHJvcGVydHkge3N0cmluZyB8IHVuZGVmaW5lZH0gd29ya2VySWQgLSBXb3JrZXIgaWQgZnJvbSB0aGUgd29ya2VyIHJlcG9ydC5cbiAqIEBwcm9wZXJ0eSB7UG9vbGVkUnVubmVyRmFpbHVyZSB8IHVuZGVmaW5lZH0gcnVubmVyRmFpbHVyZSAtIFNoYXJlZCBwb29sZWQtY2hpbGQgcHJvY2VzcyBmYWlsdXJlIHByb3ZlbmFuY2UuXG4gKi9cbi8qKlxuICogQHR5cGVkZWYge1wid29ya2VyXCIgfCBcImNsaWVudFwiIHwgXCJyZXBvcnRlclwifSBCYWNrZ3JvdW5kSm9iU29ja2V0Um9sZVxuICovXG4vKipcbiAqIEB0eXBlZGVmIHt7dHlwZTogXCJoZWxsb1wiLCByb2xlOiBCYWNrZ3JvdW5kSm9iU29ja2V0Um9sZSwgZ2VuZXJhdGlvbklkPzogc3RyaW5nLCBzdXBwb3J0c0hhbmRvZmZJZFJlcG9ydGluZz86IGJvb2xlYW4sIHN1cHBvcnRzSGVhcnRiZWF0PzogYm9vbGVhbiwgc3VwcG9ydHNQb29sZWQ/OiBib29sZWFuLCB3b3JrZXJJZD86IHN0cmluZ319IEJhY2tncm91bmRKb2JIZWxsb01lc3NhZ2VcbiAqIEB0eXBlZGVmIHt7dHlwZTogXCJnZW5lcmF0aW9uLWFjY2VwdGVkXCIsIGdlbmVyYXRpb25JZDogc3RyaW5nLCBsaWZlY3ljbGVTdGF0ZTogQmFja2dyb3VuZEpvYnNHZW5lcmF0aW9uTGlmZWN5Y2xlU3RhdGV9fSBCYWNrZ3JvdW5kSm9iR2VuZXJhdGlvbkFjY2VwdGVkTWVzc2FnZVxuICogQHR5cGVkZWYge3t0eXBlOiBcImdlbmVyYXRpb24tcmVqZWN0ZWRcIiwgcmVhc29uOiBCYWNrZ3JvdW5kSm9ic0dlbmVyYXRpb25SZWplY3Rpb25SZWFzb259fSBCYWNrZ3JvdW5kSm9iR2VuZXJhdGlvblJlamVjdGVkTWVzc2FnZVxuICogQHR5cGVkZWYge3t0eXBlOiBcInJlYWR5XCIsIGFjY2VwdHNGb3JrZWQ/OiBib29sZWFuLCBhY2NlcHRzSW5saW5lPzogYm9vbGVhbiwgYWNjZXB0c1Bvb2xlZD86IGJvb2xlYW4sIGFjY2VwdHNTcGF3bmVkPzogYm9vbGVhbiwgYXZhaWxhYmxlUG9vbGVkU2xvdHM/OiBudW1iZXJ9fSBCYWNrZ3JvdW5kSm9iUmVhZHlNZXNzYWdlXG4gKiBAdHlwZWRlZiB7e3R5cGU6IFwiZHJhaW5pbmdcIn19IEJhY2tncm91bmRKb2JEcmFpbmluZ01lc3NhZ2VcbiAqIEB0eXBlZGVmIHt7dHlwZTogXCJoZWFydGJlYXRcIiwgd29ya2VySWQ/OiBzdHJpbmd9fSBCYWNrZ3JvdW5kSm9iSGVhcnRiZWF0TWVzc2FnZVxuICogQHR5cGVkZWYge3t0eXBlOiBcImVucXVldWVcIiwgam9iTmFtZTogc3RyaW5nLCBhcmdzPzogQXJyYXk8UmV0dXJuVHlwZTx0eXBlb2YgSlNPTi5wYXJzZT4+LCBvcHRpb25zPzogQmFja2dyb3VuZEpvYk9wdGlvbnMsIHByb2R1Y2VySW52b2NhdGlvbklkPzogc3RyaW5nLCBwcm9kdWNlclByb29mPzogQmFja2dyb3VuZEpvYlByb2R1Y2VyUHJvb2Z9fSBCYWNrZ3JvdW5kSm9iRW5xdWV1ZU1lc3NhZ2VcbiAqIEB0eXBlZGVmIHt7dHlwZTogXCJlbnF1ZXVlZFwiLCBqb2JJZDogc3RyaW5nfX0gQmFja2dyb3VuZEpvYkVucXVldWVkTWVzc2FnZVxuICogQHR5cGVkZWYge3t0eXBlOiBcImVucXVldWUtZXJyb3JcIiwgZXJyb3I/OiBzdHJpbmd9fSBCYWNrZ3JvdW5kSm9iRW5xdWV1ZUVycm9yTWVzc2FnZVxuICogQHR5cGVkZWYge3t0eXBlOiBcInJlcGxhY2Utc2NoZWR1bGVkXCIsIHNjaGVkdWxlS2V5OiBzdHJpbmcsIGpvYk5hbWU6IHN0cmluZywgYXJncz86IEFycmF5PFJldHVyblR5cGU8dHlwZW9mIEpTT04ucGFyc2U+Piwgb3B0aW9ucz86IEJhY2tncm91bmRKb2JPcHRpb25zfX0gQmFja2dyb3VuZEpvYlJlcGxhY2VTY2hlZHVsZWRNZXNzYWdlXG4gKiBAdHlwZWRlZiB7e3R5cGU6IFwic2NoZWR1bGUtcmVwbGFjZWRcIiwgam9iSWQ6IHN0cmluZywgcHJldmlvdXNKb2JJZDogc3RyaW5nIHwgbnVsbCwgcHJldmlvdXNTdGF0dXM6IEJhY2tncm91bmRKb2JSZXBsYWNlbWVudFByZXZpb3VzU3RhdHVzfX0gQmFja2dyb3VuZEpvYlNjaGVkdWxlUmVwbGFjZWRNZXNzYWdlXG4gKiBAdHlwZWRlZiB7e3R5cGU6IFwicmVwbGFjZS1zY2hlZHVsZWQtZXJyb3JcIiwgZXJyb3I/OiBzdHJpbmd9fSBCYWNrZ3JvdW5kSm9iUmVwbGFjZVNjaGVkdWxlZEVycm9yTWVzc2FnZVxuICogQHR5cGVkZWYge3t0eXBlOiBcImNhbmNlbC1zY2hlZHVsZWRcIiwgc2NoZWR1bGVLZXk6IHN0cmluZ319IEJhY2tncm91bmRKb2JDYW5jZWxTY2hlZHVsZWRNZXNzYWdlXG4gKiBAdHlwZWRlZiB7e3R5cGU6IFwic2NoZWR1bGUtY2FuY2VsbGVkXCIsIGpvYklkOiBzdHJpbmcgfCBudWxsLCBvdXRjb21lOiBCYWNrZ3JvdW5kSm9iQ2FuY2VsbGF0aW9uT3V0Y29tZX19IEJhY2tncm91bmRKb2JTY2hlZHVsZUNhbmNlbGxlZE1lc3NhZ2VcbiAqIEB0eXBlZGVmIHt7dHlwZTogXCJjYW5jZWwtc2NoZWR1bGVkLWVycm9yXCIsIGVycm9yPzogc3RyaW5nfX0gQmFja2dyb3VuZEpvYkNhbmNlbFNjaGVkdWxlZEVycm9yTWVzc2FnZVxuICogQHR5cGVkZWYge3t0eXBlOiBcImdldC1zY2hlZHVsZWQtam9iXCIsIHNjaGVkdWxlS2V5OiBzdHJpbmcsIGluY2x1ZGVMYXRlc3RUZXJtaW5hbD86IGJvb2xlYW59fSBCYWNrZ3JvdW5kSm9iR2V0U2NoZWR1bGVkTWVzc2FnZVxuICogQHR5cGVkZWYge3t0eXBlOiBcInNjaGVkdWxlZC1qb2JcIiwgY3VycmVudEpvYjogQmFja2dyb3VuZEpvYlJvdyB8IG51bGwsIGxhdGVzdFRlcm1pbmFsSm9iOiBCYWNrZ3JvdW5kSm9iUm93IHwgbnVsbH19IEJhY2tncm91bmRKb2JTY2hlZHVsZWRNZXNzYWdlXG4gKiBAdHlwZWRlZiB7e3R5cGU6IFwiZ2V0LXNjaGVkdWxlZC1qb2ItZXJyb3JcIiwgZXJyb3I/OiBzdHJpbmd9fSBCYWNrZ3JvdW5kSm9iR2V0U2NoZWR1bGVkRXJyb3JNZXNzYWdlXG4gKiBAdHlwZWRlZiB7e3R5cGU6IFwid2FrZS1zY2hlZHVsZWRcIiwgc2NoZWR1bGVLZXk6IHN0cmluZ319IEJhY2tncm91bmRKb2JXYWtlU2NoZWR1bGVkTWVzc2FnZVxuICogQHR5cGVkZWYge3t0eXBlOiBcInNjaGVkdWxlLXdva2VuXCIsIGpvYklkOiBzdHJpbmcgfCBudWxsLCBvdXRjb21lOiBCYWNrZ3JvdW5kSm9iV2FrZU91dGNvbWV9fSBCYWNrZ3JvdW5kSm9iU2NoZWR1bGVXb2tlbk1lc3NhZ2VcbiAqIEB0eXBlZGVmIHt7dHlwZTogXCJ3YWtlLXNjaGVkdWxlZC1lcnJvclwiLCBlcnJvcj86IHN0cmluZ319IEJhY2tncm91bmRKb2JXYWtlU2NoZWR1bGVkRXJyb3JNZXNzYWdlXG4gKiBAdHlwZWRlZiB7e3R5cGU6IFwiam9iXCIsIHBheWxvYWQ6IEJhY2tncm91bmRKb2JQYXlsb2FkfX0gQmFja2dyb3VuZEpvYkpvYk1lc3NhZ2VcbiAqIEB0eXBlZGVmIHt7dHlwZTogXCJqb2ItYWNjZXB0ZWRcIiwgam9iSWQ6IHN0cmluZywgaGFuZG9mZklkPzogc3RyaW5nLCB3b3JrZXJJZD86IHN0cmluZywgaGFuZGVkT2ZmQXRNcz86IG51bWJlciwgcmVjZWl2ZWRBdE1zPzogbnVtYmVyLCBzdGFydGVkQXRNcz86IG51bWJlciwgY2hpbGRJbnN0YW5jZUlkPzogc3RyaW5nLCBjaGlsZFBpZD86IG51bWJlciwgcnVubmVySG9zdG5hbWU/OiBzdHJpbmd9fSBCYWNrZ3JvdW5kSm9iQWNjZXB0ZWRNZXNzYWdlXG4gKiBAdHlwZWRlZiB7e3R5cGU6IFwiam9iLWNvbXBsZXRlXCIsIGpvYklkOiBzdHJpbmcsIGhhbmRvZmZJZD86IHN0cmluZywgd29ya2VySWQ/OiBzdHJpbmcsIGhhbmRlZE9mZkF0TXM/OiBudW1iZXJ9fSBCYWNrZ3JvdW5kSm9iQ29tcGxldGVNZXNzYWdlXG4gKiBAdHlwZWRlZiB7e3R5cGU6IFwiam9iLWZhaWxlZFwiLCBqb2JJZDogc3RyaW5nLCBlcnJvcj86IFJldHVyblR5cGU8dHlwZW9mIEpTT04ucGFyc2U+LCBoYW5kb2ZmSWQ/OiBzdHJpbmcsIHdvcmtlcklkPzogc3RyaW5nLCBoYW5kZWRPZmZBdE1zPzogbnVtYmVyLCBydW5uZXJGYWlsdXJlPzogUG9vbGVkUnVubmVyRmFpbHVyZX19IEJhY2tncm91bmRKb2JGYWlsZWRNZXNzYWdlXG4gKiBAdHlwZWRlZiB7e3R5cGU6IFwiam9iLXJlc2NoZWR1bGVcIiwgam9iSWQ6IHN0cmluZywgZGVsYXlNczogbnVtYmVyLCBoYW5kb2ZmSWQ/OiBzdHJpbmcsIHdvcmtlcklkPzogc3RyaW5nLCBoYW5kZWRPZmZBdE1zPzogbnVtYmVyfX0gQmFja2dyb3VuZEpvYlJlc2NoZWR1bGVNZXNzYWdlXG4gKiBAdHlwZWRlZiB7e3R5cGU6IFwiam9iLXVwZGF0ZWRcIiwgam9iSWQ6IHN0cmluZ319IEJhY2tncm91bmRKb2JVcGRhdGVkTWVzc2FnZVxuICogQHR5cGVkZWYge3t0eXBlOiBcImpvYi11cGRhdGUtZXJyb3JcIiwgam9iSWQ6IHN0cmluZywgZXJyb3I/OiBzdHJpbmd9fSBCYWNrZ3JvdW5kSm9iVXBkYXRlRXJyb3JNZXNzYWdlXG4gKi9cbi8qKlxuICogQHR5cGVkZWYge0JhY2tncm91bmRKb2JIZWxsb01lc3NhZ2UgfCBCYWNrZ3JvdW5kSm9iR2VuZXJhdGlvbkFjY2VwdGVkTWVzc2FnZSB8IEJhY2tncm91bmRKb2JHZW5lcmF0aW9uUmVqZWN0ZWRNZXNzYWdlIHwgQmFja2dyb3VuZEpvYlJlYWR5TWVzc2FnZSB8IEJhY2tncm91bmRKb2JEcmFpbmluZ01lc3NhZ2UgfCBCYWNrZ3JvdW5kSm9iSGVhcnRiZWF0TWVzc2FnZSB8IEJhY2tncm91bmRKb2JFbnF1ZXVlTWVzc2FnZSB8IEJhY2tncm91bmRKb2JFbnF1ZXVlZE1lc3NhZ2UgfCBCYWNrZ3JvdW5kSm9iRW5xdWV1ZUVycm9yTWVzc2FnZSB8IEJhY2tncm91bmRKb2JSZXBsYWNlU2NoZWR1bGVkTWVzc2FnZSB8IEJhY2tncm91bmRKb2JTY2hlZHVsZVJlcGxhY2VkTWVzc2FnZSB8IEJhY2tncm91bmRKb2JSZXBsYWNlU2NoZWR1bGVkRXJyb3JNZXNzYWdlIHwgQmFja2dyb3VuZEpvYkNhbmNlbFNjaGVkdWxlZE1lc3NhZ2UgfCBCYWNrZ3JvdW5kSm9iU2NoZWR1bGVDYW5jZWxsZWRNZXNzYWdlIHwgQmFja2dyb3VuZEpvYkNhbmNlbFNjaGVkdWxlZEVycm9yTWVzc2FnZSB8IEJhY2tncm91bmRKb2JHZXRTY2hlZHVsZWRNZXNzYWdlIHwgQmFja2dyb3VuZEpvYlNjaGVkdWxlZE1lc3NhZ2UgfCBCYWNrZ3JvdW5kSm9iR2V0U2NoZWR1bGVkRXJyb3JNZXNzYWdlIHwgQmFja2dyb3VuZEpvYldha2VTY2hlZHVsZWRNZXNzYWdlIHwgQmFja2dyb3VuZEpvYlNjaGVkdWxlV29rZW5NZXNzYWdlIHwgQmFja2dyb3VuZEpvYldha2VTY2hlZHVsZWRFcnJvck1lc3NhZ2UgfCBCYWNrZ3JvdW5kSm9iSm9iTWVzc2FnZSB8IEJhY2tncm91bmRKb2JBY2NlcHRlZE1lc3NhZ2UgfCBCYWNrZ3JvdW5kSm9iQ29tcGxldGVNZXNzYWdlIHwgQmFja2dyb3VuZEpvYkZhaWxlZE1lc3NhZ2UgfCBCYWNrZ3JvdW5kSm9iUmVzY2hlZHVsZU1lc3NhZ2UgfCBCYWNrZ3JvdW5kSm9iVXBkYXRlZE1lc3NhZ2UgfCBCYWNrZ3JvdW5kSm9iVXBkYXRlRXJyb3JNZXNzYWdlfSBCYWNrZ3JvdW5kSm9iU29ja2V0TWVzc2FnZVxuICovXG5cbmV4cG9ydCBjb25zdCBub3RoaW5nID0ge31cbiJdfQ==
|
|
306
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYmFja2dyb3VuZC1qb2JzL3R5cGVzLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVk7QUFFWjs7R0FFRztBQUNILHlGQUF5RjtBQUN6RixpSUFBaUk7QUFDakksNk5BQTZOO0FBQzdOLG1FQUFtRTtBQUNuRSwrRkFBK0Y7QUFDL0YsNkZBQTZGO0FBQzdGLG1HQUFtRztBQUNuRyxnRkFBZ0Y7QUFDaEYsdVBBQXVQO0FBQ3ZQOzs7R0FHRztBQUNILHdGQUF3RjtBQUN4Rjs7Ozs7Ozs7R0FRRztBQUNIOzs7Ozs7O0dBT0c7QUFDSDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMkJHO0FBQ0g7Ozs7Ozs7Ozs7R0FVRztBQUNIOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FxQkc7QUFDSDs7Ozs7R0FLRztBQUNIOzs7OztHQUtHO0FBQ0g7Ozs7O0dBS0c7QUFDSDs7Ozs7OztHQU9HO0FBQ0g7Ozs7Ozs7Ozs7OztHQVlHO0FBQ0g7OztHQUdHO0FBQ0g7Ozs7Ozs7R0FPRztBQUNIOzs7OztHQUtHO0FBQ0g7Ozs7OztHQU1HO0FBQ0g7Ozs7O0dBS0c7QUFDSDs7Ozs7Ozs7Ozs7R0FXRztBQUNIOzs7Ozs7Ozs7R0FTRztBQUNIOzs7Ozs7O0dBT0c7QUFDSDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E2Qkc7QUFDSDs7R0FFRztBQUNIOzs7OztHQUtHO0FBQ0g7O0dBRUc7QUFDSDs7OztHQUlHO0FBQ0g7Ozs7R0FJRztBQUNIOztHQUVHO0FBQ0g7Ozs7R0FJRztBQUNIOzs7Ozs7Ozs7OztHQVdHO0FBQ0g7O0dBRUc7QUFDSDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E2Qkc7QUFDSDs7R0FFRztBQUVILE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcblxuLyoqXG4gKiBAdHlwZWRlZiB7XCJpbmxpbmVcIiB8IFwiZm9ya2VkXCIgfCBcInBvb2xlZFwiIHwgXCJzcGF3bmVkXCJ9IEJhY2tncm91bmRKb2JFeGVjdXRpb25Nb2RlXG4gKi9cbi8qKiBAdHlwZWRlZiB7XCJjYW5kaWRhdGVcIiB8IFwiYWN0aXZlXCIgfCBcInJldGlyZWRcIn0gQmFja2dyb3VuZEpvYnNHZW5lcmF0aW9uSW5pdGlhbFN0YXRlICovXG4vKiogQHR5cGVkZWYge1wic3RhcnRpbmdcIiB8IFwiY2FuZGlkYXRlXCIgfCBcImFjdGl2ZVwiIHwgXCJyZXRpcmluZ1wiIHwgXCJyZXRpcmVkXCIgfCBcInN0b3BwZWRcIn0gQmFja2dyb3VuZEpvYnNHZW5lcmF0aW9uTGlmZWN5Y2xlU3RhdGUgKi9cbi8qKiBAdHlwZWRlZiB7XCJtaXNzaW5nLWdlbmVyYXRpb25cIiB8IFwidW5leHBlY3RlZC1nZW5lcmF0aW9uXCIgfCBcIm1hbGZvcm1lZC1nZW5lcmF0aW9uXCIgfCBcImdlbmVyYXRpb24tbWlzbWF0Y2hcIiB8IFwid29ya2VyLWFkbWlzc2lvbi1yZXRpcmVkXCIgfCBcIndvcmtlci1oYXMtbm8tcmVjb3ZlcmFibGUtaGFuZG9mZnNcIn0gQmFja2dyb3VuZEpvYnNHZW5lcmF0aW9uUmVqZWN0aW9uUmVhc29uICovXG4vKiogQHR5cGVkZWYge1wicXVldWVkXCIgfCBcImhhbmRlZF9vZmZcIn0gQmFja2dyb3VuZEpvYkFjdGl2ZVN0YXR1cyAqL1xuLyoqIEB0eXBlZGVmIHtcImNhbmNlbGxlZFwiIHwgXCJjb21wbGV0ZWRcIiB8IFwiZmFpbGVkXCIgfCBcIm9ycGhhbmVkXCJ9IEJhY2tncm91bmRKb2JUZXJtaW5hbFN0YXR1cyAqL1xuLyoqIEB0eXBlZGVmIHtCYWNrZ3JvdW5kSm9iQWN0aXZlU3RhdHVzIHwgQmFja2dyb3VuZEpvYlRlcm1pbmFsU3RhdHVzfSBCYWNrZ3JvdW5kSm9iU3RhdHVzICovXG4vKiogQHR5cGVkZWYge1wiZXhpdFwiIHwgXCJwcm9jZXNzLWVycm9yXCIgfCBcImlwYy1zZW5kXCIgfCBcImNoaWxkLXNpbGVuY2VcIn0gUG9vbGVkUnVubmVyRmFpbHVyZU9yaWdpbiAqL1xuLyoqIEB0eXBlZGVmIHtcInN0YXJ0aW5nXCIgfCBcInJ1bm5pbmdcIiB8IFwicmV0aXJpbmdcIn0gUG9vbGVkUnVubmVyTGlmZWN5Y2xlU3RhdGUgKi9cbi8qKiBAdHlwZWRlZiB7XCJwYXJlbnRfcmV0aXJlX2RyYWluZWRcIiB8IFwiam9iX3RpbWVvdXRcIiB8IFwid29ya2VyX3N0b3BcIiB8IFwiY2hpbGRfc2lsZW5jZVwiIHwgXCJzaWduYWxfc2lndGVybVwiIHwgXCJzaWduYWxfc2lnaW50XCIgfCBcInNpZ25hbF9zaWdraWxsXCIgfCBcInNpZ25hbF9vdGhlclwiIHwgXCJpcGNfZGlzY29ubmVjdFwiIHwgXCJwcm9jZXNzX2Vycm9yXCIgfCBcInVuZXhwZWN0ZWRfZXhpdFwifSBQb29sZWRDaGlsZFNodXRkb3duUmVhc29uICovXG4vKipcbiAqIEBkZXByZWNhdGVkIFVzZSBQb29sZWRDaGlsZFNodXRkb3duUmVhc29uIGZvciBleGFjdCBzaHV0ZG93biBwcm92ZW5hbmNlLlxuICogQHR5cGVkZWYge1widW5leHBlY3RlZFwiIHwgXCJqb2ItdGltZW91dFwiIHwgXCJ3b3JrZXItc2h1dGRvd24tdGltZW91dFwifSBQb29sZWRSdW5uZXJUZXJtaW5hdGlvblJlYXNvblxuICovXG4vKiogQHR5cGVkZWYge1wicnVubmluZ1wiIHwgXCJyZXRpcmluZ1wiIHwgXCJzdG9wcGluZ1wifSBCYWNrZ3JvdW5kSm9ic1dvcmtlckxpZmVjeWNsZVN0YXRlICovXG4vKipcbiAqIEV4YWN0IGR1cmFibGUgaGFuZG9mZiBvd25lcnNoaXAgY2FycmllZCBieSBhbiBleGVjdXRpbmcgam9iIHdoZW4gaXQgcHJvZHVjZXNcbiAqIGZvbGxvdy11cCB3b3JrLlxuICogQHR5cGVkZWYge29iamVjdH0gQmFja2dyb3VuZEpvYlByb2R1Y2VyUHJvb2ZcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBqb2JJZCAtIFByb2R1Y2luZyBqb2IgaWQuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gaGFuZG9mZklkIC0gUHJvZHVjaW5nIGhhbmRvZmYgbGVhc2UgaWQuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gd29ya2VySWQgLSBXb3JrZXIgaWRlbnRpdHkgcGVyc2lzdGVkIHdpdGggdGhlIGhhbmRvZmYuXG4gKiBAcHJvcGVydHkge251bWJlcn0gaGFuZGVkT2ZmQXRNcyAtIER1cmFibGUgaGFuZG9mZiB0aW1lc3RhbXAuXG4gKi9cbi8qKlxuICogQHR5cGVkZWYge29iamVjdH0gUG9vbGVkUnVubmVyQWN0aXZlSm9iXG4gKiBAcHJvcGVydHkge3N0cmluZyB8IG51bGx9IGhhbmRvZmZJZCAtIER1cmFibGUgaGFuZG9mZiBsZWFzZSBpZC5cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyIHwgbnVsbH0gaGFuZGVkT2ZmQXRNcyAtIER1cmFibGUgaGFuZG9mZiB0aW1lc3RhbXAuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gam9iSWQgLSBEdXJhYmxlIGJhY2tncm91bmQgam9iIGlkLlxuICogQHByb3BlcnR5IHtzdHJpbmd9IGpvYk5hbWUgLSBSZWdpc3RlcmVkIGpvYiBjbGFzcyBuYW1lLlxuICogQHByb3BlcnR5IHtzdHJpbmd9IHdvcmtlcklkIC0gV29ya2VyIGlkZW50aXR5IHBlcnNpc3RlZCB3aXRoIHRoZSBoYW5kb2ZmLlxuICovXG4vKipcbiAqIE9uZSBwcm9jZXNzLWZhaWx1cmUgc25hcHNob3Qgc2hhcmVkIGJ5IGV2ZXJ5IGpvYiBsb3N0IHdpdGggYSBwb29sZWQgY2hpbGQuXG4gKiBAdHlwZWRlZiB7b2JqZWN0fSBQb29sZWRSdW5uZXJGYWlsdXJlXG4gKiBAcHJvcGVydHkge1Bvb2xlZFJ1bm5lckFjdGl2ZUpvYltdfSBhY3RpdmVKb2JzIC0gSm9icyB0aGF0IHdlcmUgaW4gZmxpZ2h0IHdoZW4gdGhlIGNoaWxkIGZhaWxlZCwgb3JkZXJlZCBieSBqb2IgaWQuXG4gKiBAcHJvcGVydHkge3N0cmluZyB8IG51bGx9IGNoaWxkSW5zdGFuY2VJZCAtIFN0YWJsZSBwb29sZWQtY2hpbGQgaWRlbnRpdHkgd2hlbiBpdHMgc3RhcnR1cCBvciBzaHV0ZG93biBvYnNlcnZhdGlvbiBhcnJpdmVkLlxuICogQHByb3BlcnR5IHtudW1iZXIgfCBudWxsfSBleGl0Q29kZSAtIENoaWxkIGV4aXQgY29kZSwgb3IgbnVsbCBmb3Igc2lnbmFsL3Byb2Nlc3MgZXJyb3JzLlxuICogQHByb3BlcnR5IHtzdHJpbmcgfCBudWxsfSBnZW5lcmF0aW9uSWQgLSBSZWxlYXNlIGdlbmVyYXRpb24gaWRlbnRpdHksIG9yIG51bGwgaW4gbGVnYWN5IG1vZGUuXG4gKiBAcHJvcGVydHkge3N0cmluZ1tdfSBpbmZsaWdodEpvYklkcyAtIEJvdW5kZWQgam9iIGlkcyBpbiBmbGlnaHQgd2hlbiBmYWlsdXJlIGhhbmRsaW5nIHN0YXJ0ZWQuXG4gKiBAcHJvcGVydHkge251bWJlcn0gaW5mbGlnaHRKb2JJZHNUcnVuY2F0ZWRDb3VudCAtIEluLWZsaWdodCBpZHMgb21pdHRlZCBmcm9tIHRoZSBib3VuZGVkIHNuYXBzaG90LlxuICogQHByb3BlcnR5IHtib29sZWFuIHwgbnVsbH0gb29tS2lsbGVkIC0gRmFsc2Ugd2hlbiB0aGUgb2JzZXJ2ZWQgZXhpdCBydWxlcyBPT00gb3V0OyBudWxsIHdoZW4gYW4gdW5leHBlY3RlZCBTSUdLSUxMIGNhbm5vdCBiZSBkaXN0aW5ndWlzaGVkIGZyb20gYW4gT09NIGtpbGwgd2l0aG91dCBzdXBlcnZpc29yL2tlcm5lbCBldmlkZW5jZS5cbiAqIEBwcm9wZXJ0eSB7UG9vbGVkUnVubmVyRmFpbHVyZU9yaWdpbn0gb3JpZ2luIC0gV29ya2VyIG9ic2VydmF0aW9uIHRoYXQgaW5pdGlhdGVkIGZhaWx1cmUgaGFuZGxpbmcuXG4gKiBAcHJvcGVydHkge251bWJlcn0gcnVubmVyQWdlTXMgLSBDaGlsZCBhZ2Ugd2hlbiBmYWlsdXJlIGhhbmRsaW5nIHN0YXJ0ZWQuXG4gKiBAcHJvcGVydHkge251bWJlcn0gcnVubmVyQ3JlYXRlZEF0TXMgLSBDaGlsZCBjcmVhdGlvbiB0aW1lc3RhbXAuXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IHJ1bm5lckRldGFjaGVkIC0gV2hldGhlciB0aGUgcnVubmVyIG93bmVkIGEgZGV0YWNoZWQgcHJvY2VzcyBncm91cC5cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBydW5uZXJKb2JzUnVuIC0gUHJldmlvdXNseSBhY2tub3dsZWRnZWQgam9icyBoYW5kbGVkIGJ5IHRoZSBjaGlsZC5cbiAqIEBwcm9wZXJ0eSB7UG9vbGVkUnVubmVyTGlmZWN5Y2xlU3RhdGV9IHJ1bm5lckxpZmVjeWNsZSAtIENoaWxkIGxpZmVjeWNsZSBpbW1lZGlhdGVseSBiZWZvcmUgcmVjb3ZlcnkuXG4gKiBAcHJvcGVydHkge251bWJlciB8IG51bGx9IHJ1bm5lclBpZCAtIENoaWxkIHByb2Nlc3MgaWQgd2hlbiBhdmFpbGFibGUuXG4gKiBAcHJvcGVydHkge2ltcG9ydChcIm5vZGU6Y2hpbGRfcHJvY2Vzc1wiKS5DaGlsZFByb2Nlc3NbXCJzaWduYWxDb2RlXCJdfSBzaWduYWwgLSBDaGlsZCB0ZXJtaW5hdGlvbiBzaWduYWwgd2hlbiBhdmFpbGFibGUuXG4gKiBAcHJvcGVydHkge251bWJlciB8IG51bGx9IHNodXRkb3duT2JzZXJ2ZWRBdE1zIC0gVGltZSB0aGUgY2hpbGQgb3IgcGFyZW50IG9ic2VydmVkIHNodXRkb3duIGJlZ2lubmluZy5cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyIHwgbnVsbH0gc2h1dGRvd25SZXF1ZXN0ZWRBdE1zIC0gRXhhY3QgcGFyZW50IHJlcXVlc3QgdGltZXN0YW1wLCBvciBudWxsIGZvciBleHRlcm5hbC91bnJlcXVlc3RlZCBzaHV0ZG93bi5cbiAqIEBwcm9wZXJ0eSB7UG9vbGVkQ2hpbGRTaHV0ZG93blJlYXNvbn0gc2h1dGRvd25SZWFzb24gLSBFeGFjdCByZWNvcmRlZCBwYXJlbnQgcmVxdWVzdCBvciBvYnNlcnZlZCBjaGlsZCBzaHV0ZG93biBjYXVzZS5cbiAqIEBwcm9wZXJ0eSB7aW1wb3J0KFwibm9kZTpjaGlsZF9wcm9jZXNzXCIpLkNoaWxkUHJvY2Vzc1tcInNpZ25hbENvZGVcIl19IHNodXRkb3duU2lnbmFsIC0gUGFyZW50LXJlcXVlc3RlZCBvciBjaGlsZC1vYnNlcnZlZCBzaHV0ZG93biBzaWduYWwgd2hlbiBhdmFpbGFibGUuXG4gKiBAcHJvcGVydHkge1Bvb2xlZFJ1bm5lclRlcm1pbmF0aW9uUmVhc29ufSB0ZXJtaW5hdGlvblJlYXNvbiAtIERlcHJlY2F0ZWQgY29tcGF0aWJpbGl0eSBjYXRlZ29yeTsgdXNlIHNodXRkb3duUmVhc29uIGZvciBleGFjdCBwcm92ZW5hbmNlLlxuICogQHByb3BlcnR5IHtzdHJpbmcgfCBudWxsfSB0aW1lb3V0Sm9iSWQgLSBKb2Igd2hvc2UgdGltZW91dCBpbml0aWF0ZWQgY2hpbGQgdGVybWluYXRpb24sIG9yIG51bGwuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gd29ya2VySWQgLSBTdGFibGUgZ2VuZXJhdGlvbi1xdWFsaWZpZWQgd29ya2VyIGlkLlxuICogQHByb3BlcnR5IHtCYWNrZ3JvdW5kSm9ic1dvcmtlckxpZmVjeWNsZVN0YXRlfSB3b3JrZXJMaWZlY3ljbGUgLSBQYXJlbnQgd29ya2VyIGxpZmVjeWNsZSBpbW1lZGlhdGVseSBiZWZvcmUgcmVjb3ZlcnkuXG4gKiBAcHJvcGVydHkge251bWJlcn0gd29ya2VyUGlkIC0gUGFyZW50IHdvcmtlciBwcm9jZXNzIGlkLlxuICovXG4vKipcbiAqIEJlc3QtZWZmb3J0IG9ic2VydmF0aW9uIHNlbnQgYmVmb3JlIGEgcG9vbGVkIGNoaWxkIGNsb3NlcyBpdHMgcmVzb3VyY2VzLlxuICogQHR5cGVkZWYge29iamVjdH0gUG9vbGVkQ2hpbGRTaHV0ZG93bk9ic2VydmF0aW9uXG4gKiBAcHJvcGVydHkge3N0cmluZ30gY2hpbGRJbnN0YW5jZUlkIC0gU3RhYmxlIHBvb2xlZC1jaGlsZCBpZGVudGl0eS5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nW119IGluZmxpZ2h0Sm9iSWRzIC0gQm91bmRlZCBpbi1mbGlnaHQgZHVyYWJsZSBqb2IgaWRzLlxuICogQHByb3BlcnR5IHtudW1iZXJ9IGluZmxpZ2h0Sm9iSWRzVHJ1bmNhdGVkQ291bnQgLSBJbi1mbGlnaHQgaWRzIG9taXR0ZWQgZnJvbSB0aGUgYm91bmRlZCBzbmFwc2hvdC5cbiAqIEBwcm9wZXJ0eSB7UG9vbGVkQ2hpbGRTaHV0ZG93blJlYXNvbn0gcmVhc29uIC0gU2h1dGRvd24gcmVhc29uIG9ic2VydmVkIGJ5IHRoZSBjaGlsZC5cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBzaHV0ZG93bk9ic2VydmVkQXRNcyAtIENoaWxkIG9ic2VydmF0aW9uIHRpbWVzdGFtcC5cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyIHwgbnVsbH0gc2h1dGRvd25SZXF1ZXN0ZWRBdE1zIC0gUGFyZW50IHJlcXVlc3QgdGltZXN0YW1wIHdoZW4gc3VwcGxpZWQgb3ZlciBJUEMuXG4gKiBAcHJvcGVydHkge2ltcG9ydChcIm5vZGU6Y2hpbGRfcHJvY2Vzc1wiKS5DaGlsZFByb2Nlc3NbXCJzaWduYWxDb2RlXCJdfSBzaWduYWwgLSBSZXF1ZXN0ZWQgb3Igb2JzZXJ2ZWQgc2lnbmFsIHdoZW4gYXZhaWxhYmxlLlxuICovXG4vKipcbiAqIEJvdW5kZWQgcG9vbGVkLWNoaWxkIG1lbW9yeSBvYnNlcnZhdGlvbiBzZW50IG92ZXIgdGhlIGNoaWxkIElQQyBjaGFubmVsLlxuICogVGhlIHBvb2xlZCBjaGlsZCdzIHN0ZGlvIGlzIGlnbm9yZWQgYnkgdGhlIHdvcmtlciBmb3JrLCBzbyB0aGlzIG9ic2VydmF0aW9uXG4gKiAoc2VudCBwZXJpb2RpY2FsbHkgd2hpbGUgam9icyBydW4sIHBsdXMgb24gZGVtYW5kKSBpcyBob3cgYSBtZW1vcnkgcHJvYmxlbVxuICogaW4gYSBydW5uaW5nIGNoaWxkIG5hbWVzIGl0c2VsZi4gYGhlYXBTdGF0aXN0aWNzYCBhbmQgYG1lbW9yeVVzYWdlYFxuICogZGlzdGluZ3Vpc2ggVjgtaGVhcCBncm93dGggZnJvbSBleHRlcm5hbC9hcnJheS1idWZmZXIgKG5hdGl2ZSByZXNvdXJjZSlcbiAqIGdyb3d0aDsgYGFjdGl2ZUpvYklkc2AgdGllcyB0aGUgc2FtcGxlIHRvIHRoZSB3b3JrIHRoYXQgd2FzIGluIGZsaWdodC5cbiAqIEB0eXBlZGVmIHtvYmplY3R9IFBvb2xlZENoaWxkTWVtb3J5T2JzZXJ2YXRpb25cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nW119IGFjdGl2ZUpvYklkcyAtIEluLWZsaWdodCBqb2IgaWRzLCBib3VuZGVkLlxuICogQHByb3BlcnR5IHtudW1iZXJ9IGFjdGl2ZUpvYklkc1RydW5jYXRlZENvdW50IC0gSW4tZmxpZ2h0IGpvYiBpZHMgb21pdHRlZCBieSB0aGUgYm91bmQuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gY2hpbGRJbnN0YW5jZUlkIC0gU3RhYmxlIGlkZW50aXR5IHJlcG9ydGVkIGJ5IHRoZSBjaGlsZC5cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBjaGlsZFBpZCAtIENoaWxkIHByb2Nlc3MgaWQuXG4gKiBAcHJvcGVydHkge251bWJlcn0gY2hpbGRVcHRpbWVNcyAtIENoaWxkIHByb2Nlc3MgdXB0aW1lIGluIG1zLlxuICogQHByb3BlcnR5IHtSZXR1cm5UeXBlPHR5cGVvZiBpbXBvcnQoXCJub2RlOnY4XCIpLmdldEhlYXBTdGF0aXN0aWNzPn0gaGVhcFN0YXRpc3RpY3MgLSBWOCBoZWFwLXN0YXQgYnJlYWtkb3duIGF0IHRoZSBzYW1wbGUuXG4gKiBAcHJvcGVydHkge251bWJlcn0gam9iQ291bnQgLSBJbi1mbGlnaHQgam9iIGNvdW50LlxuICogQHByb3BlcnR5IHtSZXR1cm5UeXBlPHR5cGVvZiBpbXBvcnQoXCJub2RlOnByb2Nlc3NcIikubWVtb3J5VXNhZ2U+fSBtZW1vcnlVc2FnZSAtIFByb2Nlc3MgbWVtb3J5IGJyZWFrZG93biBhdCB0aGUgc2FtcGxlLlxuICogQHByb3BlcnR5IHtudW1iZXJ9IG9ic2VydmVkQXRNcyAtIEVwb2NoIG1zIHRoZSBjaGlsZCBzYW1wbGVkLlxuICogQHByb3BlcnR5IHtudW1iZXJ9IHBlYWtSc3NCeXRlcyAtIENoaWxkLXJlcG9ydGVkIHBlYWsgUlNTIChrZXJuZWwgYFZtSFdNYCBoaWdoLXdhdGVyIG1hcmspIGluIGJ5dGVzLCBtb25vdG9uaWMgZm9yIHRoZSBjaGlsZCdzIGxpZmUuXG4gKiBAcHJvcGVydHkge251bWJlcn0gcnNzQnl0ZXMgLSBSZXNpZGVudCBzZXQgc2l6ZSBpbiBieXRlcyBhdCB0aGUgc2FtcGxlLlxuICogQHByb3BlcnR5IHtcInBvb2xlZC1jaGlsZC1tZW1vcnlcIn0gdHlwZSAtIERpc2NyaW1pbmF0b3IuXG4gKiBAcHJvcGVydHkge251bWJlcn0gdXB0aW1lTXMgLSBQcm9jZXNzIHVwdGltZSBpbiBtcy5cbiAqL1xuLyoqXG4gKiBAdHlwZWRlZiB7b2JqZWN0fSBMb2NhbEJhY2tncm91bmRKb2JzQ2xvY2tcbiAqIEBwcm9wZXJ0eSB7KCkgPT4gbnVtYmVyfSBub3cgLSBDdXJyZW50IGVwb2NoIG1pbGxpc2Vjb25kcy5cbiAqIEBwcm9wZXJ0eSB7KGNhbGxiYWNrOiAoKSA9PiB2b2lkLCBkZWxheU1zOiBudW1iZXIpID0+IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+IHwgbnVtYmVyfSBzZXRUaW1lb3V0IC0gQXJtcyBhIHRpbWVyLlxuICogQHByb3BlcnR5IHsodGltZXJJZDogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4gfCBudW1iZXIpID0+IHZvaWR9IGNsZWFyVGltZW91dCAtIENsZWFycyBhIHRpbWVyLlxuICovXG4vKipcbiAqIEB0eXBlZGVmIHtvYmplY3R9IFJlc29sdmVkQmFja2dyb3VuZEpvYkNvbmN1cnJlbmN5XG4gKiBAcHJvcGVydHkge3N0cmluZ30gY29uY3VycmVuY3lLZXkgLSBEdXJhYmxlIGNhcCBpZGVudGl0eS5cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBtYXhDb25jdXJyZW5jeSAtIFBvc2l0aXZlIGNhcC5cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gcXVldWVEZXJpdmVkIC0gV2hldGhlciBxdWV1ZSBjb25maWd1cmF0aW9uIG93bnMgdGhlIGNhcC5cbiAqL1xuLyoqXG4gKiBAdHlwZWRlZiB7b2JqZWN0fSBCYWNrZ3JvdW5kSm9iQ29uY3VycmVuY3lSZXBhaXJcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBhY3RpdmVDb3VudCAtIEV4YWN0IGhhbmRlZC1vZmYgam9iIGNvdW50IHBlcnNpc3RlZCBieSB0aGUgcmVwYWlyLlxuICogQHByb3BlcnR5IHtzdHJpbmd9IGNvbmN1cnJlbmN5S2V5IC0gRHVyYWJsZSBjYXAgaWRlbnRpdHkuXG4gKiBAcHJvcGVydHkge251bWJlcn0gcHJldmlvdXNBY3RpdmVDb3VudCAtIFBlcnNpc3RlZCBjb3VudCByZXBsYWNlZCBieSB0aGUgcmVwYWlyLlxuICovXG4vKipcbiAqIEB0eXBlZGVmIHtvYmplY3R9IEJhY2tncm91bmRKb2JDb25jdXJyZW5jeVJlY29uY2lsaWF0aW9uXG4gKiBAcHJvcGVydHkge251bWJlcn0gY2FuZGlkYXRlQ291bnQgLSBTbmFwc2hvdCBtaXNtYXRjaGVzIHJlY2hlY2tlZCB1bmRlciB0aGVpciBjb3VudGVyIGxvY2tzLlxuICogQHByb3BlcnR5IHtudW1iZXJ9IGNoZWNrZWRDb3VudCAtIEFjdGl2ZSBvciBub256ZXJvIGR1cmFibGUgY291bnRlcnMgY29tcGFyZWQgaW4gdGhlIGluaXRpYWwgc25hcHNob3QuXG4gKiBAcHJvcGVydHkge251bWJlcn0gcmVwYWlyZWRDb3VudCAtIENvdW50ZXJzIHdob3NlIHBlcnNpc3RlZCB2YWx1ZXMgd2VyZSBjaGFuZ2VkLlxuICogQHByb3BlcnR5IHtCYWNrZ3JvdW5kSm9iQ29uY3VycmVuY3lSZXBhaXJbXX0gcmVwYWlycyAtIEJvdW5kZWQgZGV0ZXJtaW5pc3RpYyBzYW1wbGUgb2YgYXBwbGllZCByZXBhaXJzLlxuICogQHByb3BlcnR5IHtudW1iZXJ9IHJlcGFpcnNUcnVuY2F0ZWRDb3VudCAtIEFwcGxpZWQgcmVwYWlycyBvbWl0dGVkIGZyb20gdGhlIHNhbXBsZS5cbiAqL1xuLyoqXG4gKiBAdHlwZWRlZiB7b2JqZWN0fSBQcmVwYXJlZExvY2FsQmFja2dyb3VuZEpvYlxuICogQHByb3BlcnR5IHtzdHJpbmd9IGFyZ3NEaWdlc3QgLSBGaXhlZC13aWR0aCBkaWdlc3Qgb2YgdGhlIHNlcmlhbGl6ZWQgYXJndW1lbnRzLlxuICogQHByb3BlcnR5IHtzdHJpbmd9IGFyZ3NKc29uIC0gU2VyaWFsaXplZCBhcmd1bWVudHMuXG4gKiBAcHJvcGVydHkge1Jlc29sdmVkQmFja2dyb3VuZEpvYkNvbmN1cnJlbmN5IHwgbnVsbH0gY29uY3VycmVuY3kgLSBSZXNvbHZlZCBjb25jdXJyZW5jeS5cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBjcmVhdGVkQXRNcyAtIENyZWF0aW9uIHRpbWVzdGFtcC5cbiAqIEBwcm9wZXJ0eSB7XCJpbmxpbmVcIn0gZXhlY3V0aW9uTW9kZSAtIExvY2FsIGluLXByb2Nlc3MgZXhlY3V0aW9uIG1vZGUuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gam9iSWQgLSBEdXJhYmxlIGlkLlxuICogQHByb3BlcnR5IHtzdHJpbmd9IGpvYk5hbWUgLSBSZWdpc3RlcmVkIG5hbWUuXG4gKiBAcHJvcGVydHkge251bWJlcn0gbWF4UmV0cmllcyAtIFJldHJ5IGNhcC5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBxdWV1ZSAtIFF1ZXVlIG5hbWUuXG4gKiBAcHJvcGVydHkge251bWJlcn0gc2NoZWR1bGVkQXRNcyAtIEVsaWdpYmlsaXR5IHRpbWVzdGFtcC5cbiAqL1xuLyoqXG4gKiBAdHlwZWRlZiB7b2JqZWN0fSBCYWNrZ3JvdW5kSm9ic0hlYWx0aFxuICogQHByb3BlcnR5IHtib29sZWFufSByZWFkeSAtIFdoZXRoZXIgdGhlIGFkYXB0ZXIgY2FuIGFjY2VwdCBhbmQgcHJvY2VzcyB3b3JrLlxuICovXG4vKipcbiAqIEB0eXBlZGVmIHtvYmplY3R9IEJhY2tncm91bmRKb2JzUHJvZHVjZXJcbiAqIEBwcm9wZXJ0eSB7KGFyZ3M6IHtqb2JOYW1lOiBzdHJpbmcsIGFyZ3M6IEFycmF5PFJldHVyblR5cGU8dHlwZW9mIEpTT04ucGFyc2U+Piwgb3B0aW9ucz86IEJhY2tncm91bmRKb2JPcHRpb25zLCBwcm9kdWNlckludm9jYXRpb25JZD86IHN0cmluZywgcHJvZHVjZXJQcm9vZj86IEJhY2tncm91bmRKb2JQcm9kdWNlclByb29mfSkgPT4gUHJvbWlzZTxzdHJpbmc+fSBlbnF1ZXVlIC0gRW5xdWV1ZXMgYSBqb2IuXG4gKiBAcHJvcGVydHkgeyhhcmdzOiB7c2NoZWR1bGVLZXk6IHN0cmluZywgam9iTmFtZTogc3RyaW5nLCBhcmdzOiBBcnJheTxSZXR1cm5UeXBlPHR5cGVvZiBKU09OLnBhcnNlPj4sIG9wdGlvbnM/OiBCYWNrZ3JvdW5kSm9iT3B0aW9uc30pID0+IFByb21pc2U8QmFja2dyb3VuZEpvYlJlcGxhY2VtZW50UmVzdWx0Pn0gcmVwbGFjZVNjaGVkdWxlZCAtIFJlcGxhY2VzIGEgc3RhYmxlIHNjaGVkdWxlLlxuICogQHByb3BlcnR5IHsoYXJnczoge3NjaGVkdWxlS2V5OiBzdHJpbmd9KSA9PiBQcm9taXNlPEJhY2tncm91bmRKb2JDYW5jZWxsYXRpb25SZXN1bHQ+fSBjYW5jZWxTY2hlZHVsZWQgLSBDYW5jZWxzIGEgc3RhYmxlIHNjaGVkdWxlLlxuICogQHByb3BlcnR5IHsoYXJnczoge3NjaGVkdWxlS2V5OiBzdHJpbmcsIGluY2x1ZGVMYXRlc3RUZXJtaW5hbD86IGJvb2xlYW59KSA9PiBQcm9taXNlPEJhY2tncm91bmRKb2JTY2hlZHVsZWRMb29rdXBSZXN1bHQ+fSBnZXRTY2hlZHVsZWRKb2IgLSBSZWFkcyBzdGFibGUgc2NoZWR1bGUgb3duZXJzaGlwIGFuZCBoaXN0b3J5LlxuICogQHByb3BlcnR5IHsoYXJnczoge3NjaGVkdWxlS2V5OiBzdHJpbmd9KSA9PiBQcm9taXNlPEJhY2tncm91bmRKb2JXYWtlUmVzdWx0Pn0gd2FrZVNjaGVkdWxlZCAtIEV4cGVkaXRlcyBhIHN0YWJsZSBzY2hlZHVsZSBvd25lci5cbiAqL1xuLyoqXG4gKiBAdHlwZWRlZiB7b2JqZWN0fSBCYWNrZ3JvdW5kSm9iSGFuZG9mZlxuICogQHByb3BlcnR5IHtzdHJpbmd9IGhhbmRvZmZJZCAtIFVuaXF1ZSBoYW5kb2ZmIGxlYXNlIGlkLlxuICogQHByb3BlcnR5IHtudW1iZXJ9IGhhbmRlZE9mZkF0TXMgLSBUaW1lIGhhbmRlZCB0byBhIHdvcmtlciBpbiBtcy5cbiAqIEBwcm9wZXJ0eSB7QmFja2dyb3VuZEpvYlJvd30gW2pvYl0gLSBFeGFjdCBjb21taXR0ZWQgam9iIHNuYXBzaG90IHdoZW4gdGhlIGFkYXB0ZXIgY2hhbmdlcyBkaXNwYXRjaCBkYXRhIGR1cmluZyB0aGUgY2xhaW0uXG4gKi9cbi8qKlxuICogQHR5cGVkZWYge29iamVjdH0gQmFja2dyb3VuZEpvYkhhbmRvZmZTbmFwc2hvdFxuICogQHByb3BlcnR5IHtzdHJpbmd9IGpvYklkIC0gSm9iIGhvbGRpbmcgdGhlIGxlYXNlLlxuICogQHByb3BlcnR5IHtzdHJpbmd9IGhhbmRvZmZJZCAtIEV4YWN0IGR1cmFibGUgbGVhc2UgaWQuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gd29ya2VySWQgLSBTdGFibGUgd29ya2VyIGlkIHRoYXQgcmVjZWl2ZWQgdGhlIGxlYXNlLlxuICogQHByb3BlcnR5IHtudW1iZXJ9IGhhbmRlZE9mZkF0TXMgLSBUaW1lIGhhbmRlZCB0byB0aGUgd29ya2VyIGluIG1zLlxuICovXG4vKipcbiAqIEB0eXBlZGVmIHtvYmplY3R9IEJhY2tncm91bmRKb2JIYW5kb2ZmUmVxdWVzdFxuICogQHByb3BlcnR5IHtzdHJpbmd9IGpvYklkIC0gSm9iIHRvIGNsYWltLlxuICogQHByb3BlcnR5IHtzdHJpbmd9IFtoYW5kb2ZmSWRdIC0gRXhhY3QgY2FsbGVyLXNlbGVjdGVkIGxlYXNlIGlkLiBBZGFwdGVycyBtdXN0IHBlcnNpc3QgYW5kIHJldHVybiB0aGlzIGlkIHdoZW4gc3VwcGxpZWQ7IGJ1aWx0LWluIGFkYXB0ZXJzIGdlbmVyYXRlIG9uZSB3aGVuIG9taXR0ZWQgZm9yIGxlZ2FjeSBkaXJlY3QgY2FsbGVycy5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbd29ya2VySWRdIC0gV29ya2VyIGNsYWltaW5nIHRoZSBqb2IuXG4gKi9cbi8qKlxuICogQHR5cGVkZWYge29iamVjdH0gQmFja2dyb3VuZEpvYk9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7QmFja2dyb3VuZEpvYkV4ZWN1dGlvbk1vZGV9IFtleGVjdXRpb25Nb2RlXSAtIEhvdyB0aGUgam9iIHNob3VsZCBydW4uIE5vZGUgZGVmYXVsdHMgdG8gYFwicG9vbGVkXCJgIChhIHdhcm0sIHJldXNlZCBsb2NhbCBydW5uZXIgcHJvY2VzcykuIEJyb3dzZXIvRXhwbyBsb2NhbCBkaXNwYXRjaCBkZWZhdWx0cyB0byBhbmQgb25seSBhY2NlcHRzIGBcImlubGluZVwiYC4gYFwiZm9ya2VkXCJgIHJ1bnMgYSBOb2RlIGpvYiBpbiBhIGZyZXNoIGBjaGlsZF9wcm9jZXNzLmZvcmsoKWAgY2hpbGQsIGFuZCBgXCJzcGF3bmVkXCJgIGluIGEgZGV0YWNoZWQgQ0xJIHJ1bm5lci5cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBbbWF4UmV0cmllc10gLSBNYXggcmV0cmllcyBmb3IgYSBmYWlsZWQgam9iIGJlZm9yZSBpdCBpcyBtYXJrZWQgZmFpbGVkLlxuICogQHByb3BlcnR5IHtzdHJpbmd9IFtxdWV1ZV0gLSBRdWV1ZSBuYW1lLiBEZWZhdWx0cyB0byBgXCJkZWZhdWx0XCJgLiBXaGVuIHRoZSBxdWV1ZSBoYXMgYSBjb25maWd1cmVkIGNhcCBpbiBgYmFja2dyb3VuZEpvYnMucXVldWVzYCwgdGhhdCBjYXAgaXMgZW5mb3JjZWQgY2x1c3Rlci13aWRlLlxuICogQHByb3BlcnR5IHtzdHJpbmd9IFtjb25jdXJyZW5jeUtleV0gLSBPcGFxdWUgbm9uLWVtcHR5IGtleSB1c2VkIHRvIHNoYXJlIGEgY29uY3VycmVuY3kgY2FwLiBPdmVycmlkZXMgYW55IHF1ZXVlLWRlcml2ZWQgY2FwLlxuICogQHByb3BlcnR5IHtudW1iZXJ9IFttYXhDb25jdXJyZW5jeV0gLSBQb3NpdGl2ZSBpbnRlZ2VyIGNhcDsgbXVzdCBiZSBwYWlyZWQgd2l0aCBgY29uY3VycmVuY3lLZXlgLlxuICogQHByb3BlcnR5IHtib29sZWFufSBbZGVkdXBsaWNhdGVXaGlsZVF1ZXVlZF0gLSBXaGVuIHRydWUsIHNraXAgdGhlIGVucXVldWUgaWYgYW4gaWRlbnRpY2FsIHN0aWxsLXF1ZXVlZCBqb2IgKHNhbWUgam9iIG5hbWUsIGFyZ3MgYW5kIHF1ZXVlKSBpcyBzY2hlZHVsZWQgbm8gbGF0ZXIgdGhhbiB0aGlzIGVucXVldWUsIHJldHVybmluZyB0aGUgZWFybGllc3QgbWF0Y2hpbmcgam9iJ3MgaWQuIEEgZnV0dXJlIHJldHJ5IGRvZXMgbm90IHN1cHByZXNzIGVhcmxpZXIgd29yay4gRGVkdXBsaWNhdGlvbiBpcyBpbmRlcGVuZGVudCBvZiBgY29uY3VycmVuY3lLZXlgLCBzbyB0aGUgam9iIGtlZXBzIGl0cyBub3JtYWwgKGUuZy4gcXVldWUtZGVyaXZlZCkgY29uY3VycmVuY3kgY2FwLiBLZWVwcyBhbiBpbnRlcnZhbC1zY2hlZHVsZWQgcmVjdXJyaW5nIGpvYiAoZS5nLiByZXRlbnRpb24gcHJ1bmluZykgZnJvbSBwaWxpbmcgdXAgcmVkdW5kYW50IHF1ZXVlZCByb3dzIHdoZW4gaXQgcnVucyBzbG93ZXIgdGhhbiBpdHMgaW50ZXJ2YWwgb3Igbm8gd29ya2VyIGlzIGZyZWUuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW2lkZW1wb3RlbmN5S2V5XSAtIER1cmFibGUgZW5xdWV1ZSBpZGVudGl0eSBzY29wZWQgdG8gdGhlIHJlc29sdmVkIGpvYiBjbGFzcyBuYW1lIGFuZCBxdWV1ZS4gRXhhY3QgcmVwbGF5IHJldHVybnMgdGhlIG9yaWdpbmFsIGpvYiBpZCBhY3Jvc3MgZXZlcnkgc3RhdGUgYW5kIGFmdGVyIGpvYiBwcnVuaW5nOyByZXVzZSB3aXRoIGRpZmZlcmVudCBjYW5vbmljYWwgYXJndW1lbnRzIG9yIGJlaGF2aW9yLWFmZmVjdGluZyBvcHRpb25zIGZhaWxzLiBPd25lcnNoaXAgaXMgaW5kZXBlbmRlbnQgb2YgYGRlZHVwbGljYXRlV2hpbGVRdWV1ZWRgIGFuZCBpcyByZXRhaW5lZCB1bnRpbCBhbiBleHBsaWNpdCBmdXR1cmUgcmV0ZW50aW9uIHBvbGljeSByZW1vdmVzIGl0LlxuICogQHByb3BlcnR5IHtudW1iZXJ9IFtzY2hlZHVsZWRBdE1zXSAtIEVwb2NoIHRpbWVzdGFtcCBpbiBtaWxsaXNlY29uZHMgd2hlbiB0aGUgam9iIGJlY29tZXMgZWxpZ2libGUgZm9yIGRpc3BhdGNoLiBEZWZhdWx0cyB0byBlbnF1ZXVlIHRpbWUuXG4gKiBAcHJvcGVydHkge251bWJlcn0gW3RpbWVvdXRNc10gLSBQZXItam9iIHdhbGwtY2xvY2sgdGltZW91dCBmb3IgZm9ya2VkIGFuZCBwb29sZWQgZXhlY3V0aW9uLiBBIHBvc2l0aXZlIGludGVnZXIgdXAgdG8gMiwxNDcsNDgzLDY0NyBvdmVycmlkZXMgdGhlIHdvcmtlci1sZXZlbCBgam9iVGltZW91dE1zYDsgYSBub24tcG9zaXRpdmUgZmluaXRlIHZhbHVlIGRpc2FibGVzIHRoZSB0aW1lb3V0IGZvciB0aGlzIGpvYi5cbiAqL1xuLyoqXG4gKiBAdHlwZWRlZiB7b2JqZWN0fSBCYWNrZ3JvdW5kSm9iUGF5bG9hZFxuICogQHByb3BlcnR5IHtzdHJpbmd9IFtpZF0gLSBKb2IgaWQuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gam9iTmFtZSAtIEpvYiBjbGFzcyBuYW1lLlxuICogQHByb3BlcnR5IHtBcnJheTxSZXR1cm5UeXBlPHR5cGVvZiBKU09OLnBhcnNlPj59IFthcmdzXSAtIFNlcmlhbGl6ZWQgam9iIGFyZ3VtZW50cy5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbaGFuZG9mZklkXSAtIFVuaXF1ZSBoYW5kb2ZmIGxlYXNlIGlkLlxuICogQHByb3BlcnR5IHtzdHJpbmd9IFt3b3JrZXJJZF0gLSBXb3JrZXIgaWQgaGFuZGxpbmcgdGhlIGpvYi5cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBbaGFuZGVkT2ZmQXRNc10gLSBUaW1lIGhhbmRlZCB0byBhIHdvcmtlciBpbiBtcy5cbiAqIEBwcm9wZXJ0eSB7QmFja2dyb3VuZEpvYk9wdGlvbnN9IFtvcHRpb25zXSAtIFJ1bnRpbWUgb3B0aW9ucy5cbiAqL1xuLyoqXG4gKiBAdHlwZWRlZiB7b2JqZWN0fSBCYWNrZ3JvdW5kSm9iQ29udGV4dFxuICogQHByb3BlcnR5IHt0eXBlb2YgaW1wb3J0KFwiLi9wbGF0Zm9ybS1qb2IuanNcIikuZGVmYXVsdH0gam9iQ2xhc3MgLSBDb25jcmV0ZSBqb2IgY2xhc3MuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gam9iTmFtZSAtIFJlZ2lzdGVyZWQgam9iIG5hbWUuXG4gKiBAcHJvcGVydHkge0FycmF5PFJldHVyblR5cGU8dHlwZW9mIEpTT04ucGFyc2U+Pn0gYXJncyAtIFNlcmlhbGl6ZWQgam9iIGFyZ3VtZW50cy5cbiAqIEBwcm9wZXJ0eSB7QmFja2dyb3VuZEpvYk9wdGlvbnN9IG9wdGlvbnMgLSBSZXNvbHZlZCBlbnF1ZXVlL3J1bnRpbWUgb3B0aW9ucy5cbiAqIEBwcm9wZXJ0eSB7QmFja2dyb3VuZEpvYlBheWxvYWR9IFtwYXlsb2FkXSAtIENvbXBsZXRlIHBlcnNpc3RlZCBydW5uZXIgcGF5bG9hZCB3aGVuIHRoZSBqb2IgaXMgcGVyZm9ybWluZy5cbiAqL1xuLyoqXG4gKiBAdHlwZWRlZiB7b2JqZWN0fSBCYWNrZ3JvdW5kSm9iUm93XG4gKiBAcHJvcGVydHkge3N0cmluZ30gaWQgLSBKb2IgaWQuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gam9iTmFtZSAtIEpvYiBjbGFzcyBuYW1lLlxuICogQHByb3BlcnR5IHtBcnJheTxSZXR1cm5UeXBlPHR5cGVvZiBKU09OLnBhcnNlPj59IGFyZ3MgLSBTZXJpYWxpemVkIGpvYiBhcmd1bWVudHMuXG4gKiBAcHJvcGVydHkge0JhY2tncm91bmRKb2JFeGVjdXRpb25Nb2RlfSBleGVjdXRpb25Nb2RlIC0gSG93IHRoZSBqb2Igc2hvdWxkIHJ1bi5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBxdWV1ZSAtIFF1ZXVlIG5hbWUgKGRlZmF1bHRzIHRvIGBcImRlZmF1bHRcImApLlxuICogQHByb3BlcnR5IHtzdHJpbmcgfCBudWxsfSBzY2hlZHVsZUtleSAtIFN0YWJsZSBsb2dpY2FsIHNjaGVkdWxlIGtleSByZXRhaW5lZCBmb3IgaGlzdG9yeS5cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyIHwgbnVsbH0gc2NoZWR1bGVPcmRlciAtIFRyYW5zYWN0aW9uLWFzc2lnbmVkIG1vbm90b25pYyBvd25lcnNoaXAgb3JkZXIgZm9yIHRoaXMgc2NoZWR1bGUga2V5OyBOb2RlIHByZXNlcnZlcyBpdHMgaGlnaC13YXRlciBtYXJrIGFjcm9zcyB0ZXJtaW5hbC1oaXN0b3J5IHBydW5pbmcuIE51bGwgZm9yIGxlZ2FjeS9ub24tc2NoZWR1bGVkIHJvd3MuXG4gKiBAcHJvcGVydHkge0JhY2tncm91bmRKb2JTdGF0dXN9IHN0YXR1cyAtIEN1cnJlbnQgam9iIHN0YXR1cy5cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyIHwgbnVsbH0gYXR0ZW1wdHMgLSBGYWlsdXJlIGF0dGVtcHRzIGNvdW50LlxuICogQHByb3BlcnR5IHtudW1iZXIgfCBudWxsfSBtYXhSZXRyaWVzIC0gTWF4IHJldHJ5IGF0dGVtcHRzLlxuICogQHByb3BlcnR5IHtudW1iZXIgfCBudWxsfSBzY2hlZHVsZWRBdE1zIC0gTmV4dCBzY2hlZHVsZWQgdGltZSBpbiBtcy5cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyIHwgbnVsbH0gY3JlYXRlZEF0TXMgLSBDcmVhdGlvbiB0aW1lIGluIG1zLlxuICogQHByb3BlcnR5IHtudW1iZXIgfCBudWxsfSBoYW5kZWRPZmZBdE1zIC0gVGltZSBoYW5kZWQgdG8gd29ya2VyIGluIG1zLlxuICogQHByb3BlcnR5IHtzdHJpbmcgfCBudWxsfSBoYW5kb2ZmSWQgLSBVbmlxdWUgbGF0ZXN0IGhhbmRvZmYgbGVhc2UgaWQuXG4gKiBAcHJvcGVydHkge251bWJlciB8IG51bGx9IGNvbXBsZXRlZEF0TXMgLSBDb21wbGV0aW9uIHRpbWUgaW4gbXMuXG4gKiBAcHJvcGVydHkge251bWJlciB8IG51bGx9IGZhaWxlZEF0TXMgLSBGYWlsdXJlIHRpbWUgaW4gbXMuXG4gKiBAcHJvcGVydHkge251bWJlciB8IG51bGx9IG9ycGhhbmVkQXRNcyAtIE9ycGhhbmVkIHRpbWUgaW4gbXMuXG4gKiBAcHJvcGVydHkge3N0cmluZyB8IG51bGx9IHdvcmtlcklkIC0gV29ya2VyIGlkIGhhbmRsaW5nIHRoZSBqb2IuXG4gKiBAcHJvcGVydHkge3N0cmluZyB8IG51bGx9IGxhc3RFcnJvciAtIExhc3QgZmFpbHVyZSBtZXNzYWdlLlxuICogQHByb3BlcnR5IHtzdHJpbmcgfCBudWxsfSBjb25jdXJyZW5jeUtleSAtIER1cmFibGUgY29uY3VycmVuY3kga2V5LlxuICogQHByb3BlcnR5IHtudW1iZXIgfCBudWxsfSBtYXhDb25jdXJyZW5jeSAtIER1cmFibGUgcGVyLWtleSBjYXAuXG4gKiBAcHJvcGVydHkge251bWJlciB8IG51bGx9IHRpbWVvdXRNcyAtIFBlci1qb2Igd2FsbC1jbG9jayB0aW1lb3V0IG92ZXJyaWRlLCBvciBudWxsIHdoZW4gb21pdHRlZC5cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyIHwgbnVsbH0gY2hpbGRSZWNlaXZlZEF0TXMgLSBFcG9jaCBtcyB3aGVuIHRoZSBleGVjdXRpbmcgcG9vbGVkIGNoaWxkJ3MgZXZlbnQgbG9vcCBwcm9jZXNzZWQgdGhlIGpvYiBtZXNzYWdlLCBvciBudWxsIHdoZW4gbm8gcnVubmVyIGFjY2VwdGVkIGl0IHlldC5cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyIHwgbnVsbH0gY2hpbGRTdGFydGVkQXRNcyAtIEVwb2NoIG1zIHdoZW4gdGhlIGpvYidzIHBlcmZvcm0gc3RhcnRlZCBpbiB0aGUgcG9vbGVkIGNoaWxkLCBvciBudWxsIHdoZW4gaXQgbmV2ZXIgc3RhcnRlZC5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nIHwgbnVsbH0gY2hpbGRJbnN0YW5jZUlkIC0gU3RhYmxlIGlkZW50aXR5IG9mIHRoZSBwb29sZWQgY2hpbGQgcHJvY2VzcyB0aGF0IGFjY2VwdGVkIHRoZSBqb2IsIG9yIG51bGwuXG4gKiBAcHJvcGVydHkge251bWJlciB8IG51bGx9IGNoaWxkUGlkIC0gT1MgcGlkIG9mIHRoZSBwb29sZWQgY2hpbGQgcHJvY2VzcyB0aGF0IGFjY2VwdGVkIHRoZSBqb2IsIG9yIG51bGwuXG4gKiBAcHJvcGVydHkge3N0cmluZyB8IG51bGx9IHJ1bm5lckhvc3RuYW1lIC0gSG9zdG5hbWUgcmVwb3J0ZWQgYnkgdGhlIHBvb2xlZCBjaGlsZCBwcm9jZXNzIHRoYXQgYWNjZXB0ZWQgdGhlIGpvYiwgb3IgbnVsbC5cbiAqL1xuLyoqXG4gKiBAdHlwZWRlZiB7XCJxdWV1ZWRcIiB8IFwiaGFuZGVkX29mZlwiIHwgbnVsbH0gQmFja2dyb3VuZEpvYlJlcGxhY2VtZW50UHJldmlvdXNTdGF0dXNcbiAqL1xuLyoqXG4gKiBAdHlwZWRlZiB7b2JqZWN0fSBCYWNrZ3JvdW5kSm9iUmVwbGFjZW1lbnRSZXN1bHRcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBqb2JJZCAtIE5ld2x5IHF1ZXVlZCBqb2IgaWQuXG4gKiBAcHJvcGVydHkge3N0cmluZyB8IG51bGx9IHByZXZpb3VzSm9iSWQgLSBQcmV2aW91cyBhY3RpdmUgb3duZXIncyBqb2IgaWQuXG4gKiBAcHJvcGVydHkge0JhY2tncm91bmRKb2JSZXBsYWNlbWVudFByZXZpb3VzU3RhdHVzfSBwcmV2aW91c1N0YXR1cyAtIFByZXZpb3VzIG93bmVyJ3Mgb2JzZXJ2ZWQgc3RhdGUuXG4gKi9cbi8qKlxuICogQHR5cGVkZWYge1wiY2FuY2VsbGVkXCIgfCBcImhhbmRlZF9vZmZcIiB8IFwibm90X2ZvdW5kXCJ9IEJhY2tncm91bmRKb2JDYW5jZWxsYXRpb25PdXRjb21lXG4gKi9cbi8qKlxuICogQHR5cGVkZWYge29iamVjdH0gQmFja2dyb3VuZEpvYkNhbmNlbGxhdGlvblJlc3VsdFxuICogQHByb3BlcnR5IHtzdHJpbmcgfCBudWxsfSBqb2JJZCAtIERldGFjaGVkIG93bmVyJ3Mgam9iIGlkLCB3aGVuIG9uZSB3YXMgYWN0aXZlLlxuICogQHByb3BlcnR5IHtCYWNrZ3JvdW5kSm9iQ2FuY2VsbGF0aW9uT3V0Y29tZX0gb3V0Y29tZSAtIFRydXRoZnVsIGJlc3QtZWZmb3J0IG91dGNvbWUuXG4gKi9cbi8qKlxuICogQHR5cGVkZWYge29iamVjdH0gQmFja2dyb3VuZEpvYlNjaGVkdWxlZExvb2t1cFJlc3VsdFxuICogQHByb3BlcnR5IHtCYWNrZ3JvdW5kSm9iUm93IHwgbnVsbH0gY3VycmVudEpvYiAtIEN1cnJlbnQgcXVldWVkIG9yIGhhbmRlZC1vZmYgb3duZXIuXG4gKiBAcHJvcGVydHkge0JhY2tncm91bmRKb2JSb3cgfCBudWxsfSBsYXRlc3RUZXJtaW5hbEpvYiAtIExhdGVzdCB0ZXJtaW5hbCBoaXN0b3J5IHdoZW4gcmVxdWVzdGVkLlxuICovXG4vKipcbiAqIEB0eXBlZGVmIHtcIndva2VuXCIgfCBcImFscmVhZHlfZHVlXCIgfCBcImhhbmRlZF9vZmZcIiB8IFwibm90X2ZvdW5kXCJ9IEJhY2tncm91bmRKb2JXYWtlT3V0Y29tZVxuICovXG4vKipcbiAqIEB0eXBlZGVmIHtvYmplY3R9IEJhY2tncm91bmRKb2JXYWtlUmVzdWx0XG4gKiBAcHJvcGVydHkge3N0cmluZyB8IG51bGx9IGpvYklkIC0gQ3VycmVudCBvd25lcidzIGR1cmFibGUgam9iIGlkLCB3aGVuIGZvdW5kLlxuICogQHByb3BlcnR5IHtCYWNrZ3JvdW5kSm9iV2FrZU91dGNvbWV9IG91dGNvbWUgLSBFeGFjdCB3YWtlIG91dGNvbWUuXG4gKi9cbi8qKlxuICogQHR5cGVkZWYge29iamVjdH0gQmFja2dyb3VuZEpvYkZhaWx1cmVFdmVudFxuICogQHByb3BlcnR5IHtCYWNrZ3JvdW5kSm9iUm93fSBqb2IgLSBVcGRhdGVkIGpvYiByb3cgYWZ0ZXIgZmFpbHVyZSBoYW5kbGluZy5cbiAqIEBwcm9wZXJ0eSB7UmV0dXJuVHlwZTx0eXBlb2YgSlNPTi5wYXJzZT59IGVycm9yIC0gRmFpbHVyZSBlcnJvci5cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyIHwgbnVsbH0gYXR0ZW1wdHMgLSBVcGRhdGVkIGZhaWx1cmUgYXR0ZW1wdHMgY291bnQuXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IHRlcm1pbmFsIC0gV2hldGhlciB0aGlzIGZhaWx1cmUgZW5kZWQgdGhlIGpvYi5cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gd2lsbFJldHJ5IC0gV2hldGhlciB0aGUgam9iIHdhcyByZXR1cm5lZCB0byB0aGUgcXVldWUuXG4gKiBAcHJvcGVydHkge3N0cmluZyB8IHVuZGVmaW5lZH0gaGFuZG9mZklkIC0gSGFuZG9mZiBsZWFzZSBpZCBmcm9tIHRoZSB3b3JrZXIgcmVwb3J0LlxuICogQHByb3BlcnR5IHtudW1iZXIgfCB1bmRlZmluZWR9IGhhbmRlZE9mZkF0TXMgLSBIYW5kb2ZmIHRpbWVzdGFtcCBmcm9tIHRoZSB3b3JrZXIgcmVwb3J0LlxuICogQHByb3BlcnR5IHtzdHJpbmcgfCB1bmRlZmluZWR9IHdvcmtlcklkIC0gV29ya2VyIGlkIGZyb20gdGhlIHdvcmtlciByZXBvcnQuXG4gKiBAcHJvcGVydHkge1Bvb2xlZFJ1bm5lckZhaWx1cmUgfCB1bmRlZmluZWR9IHJ1bm5lckZhaWx1cmUgLSBTaGFyZWQgcG9vbGVkLWNoaWxkIHByb2Nlc3MgZmFpbHVyZSBwcm92ZW5hbmNlLlxuICovXG4vKipcbiAqIEB0eXBlZGVmIHtcIndvcmtlclwiIHwgXCJjbGllbnRcIiB8IFwicmVwb3J0ZXJcIn0gQmFja2dyb3VuZEpvYlNvY2tldFJvbGVcbiAqL1xuLyoqXG4gKiBAdHlwZWRlZiB7e3R5cGU6IFwiaGVsbG9cIiwgcm9sZTogQmFja2dyb3VuZEpvYlNvY2tldFJvbGUsIGdlbmVyYXRpb25JZD86IHN0cmluZywgc3VwcG9ydHNIYW5kb2ZmSWRSZXBvcnRpbmc/OiBib29sZWFuLCBzdXBwb3J0c0hlYXJ0YmVhdD86IGJvb2xlYW4sIHN1cHBvcnRzUG9vbGVkPzogYm9vbGVhbiwgd29ya2VySWQ/OiBzdHJpbmd9fSBCYWNrZ3JvdW5kSm9iSGVsbG9NZXNzYWdlXG4gKiBAdHlwZWRlZiB7e3R5cGU6IFwiZ2VuZXJhdGlvbi1hY2NlcHRlZFwiLCBnZW5lcmF0aW9uSWQ6IHN0cmluZywgbGlmZWN5Y2xlU3RhdGU6IEJhY2tncm91bmRKb2JzR2VuZXJhdGlvbkxpZmVjeWNsZVN0YXRlfX0gQmFja2dyb3VuZEpvYkdlbmVyYXRpb25BY2NlcHRlZE1lc3NhZ2VcbiAqIEB0eXBlZGVmIHt7dHlwZTogXCJnZW5lcmF0aW9uLXJlamVjdGVkXCIsIHJlYXNvbjogQmFja2dyb3VuZEpvYnNHZW5lcmF0aW9uUmVqZWN0aW9uUmVhc29ufX0gQmFja2dyb3VuZEpvYkdlbmVyYXRpb25SZWplY3RlZE1lc3NhZ2VcbiAqIEB0eXBlZGVmIHt7dHlwZTogXCJyZWFkeVwiLCBhY2NlcHRzRm9ya2VkPzogYm9vbGVhbiwgYWNjZXB0c0lubGluZT86IGJvb2xlYW4sIGFjY2VwdHNQb29sZWQ/OiBib29sZWFuLCBhY2NlcHRzU3Bhd25lZD86IGJvb2xlYW4sIGF2YWlsYWJsZVBvb2xlZFNsb3RzPzogbnVtYmVyfX0gQmFja2dyb3VuZEpvYlJlYWR5TWVzc2FnZVxuICogQHR5cGVkZWYge3t0eXBlOiBcImRyYWluaW5nXCJ9fSBCYWNrZ3JvdW5kSm9iRHJhaW5pbmdNZXNzYWdlXG4gKiBAdHlwZWRlZiB7e3R5cGU6IFwiaGVhcnRiZWF0XCIsIHdvcmtlcklkPzogc3RyaW5nfX0gQmFja2dyb3VuZEpvYkhlYXJ0YmVhdE1lc3NhZ2VcbiAqIEB0eXBlZGVmIHt7dHlwZTogXCJlbnF1ZXVlXCIsIGpvYk5hbWU6IHN0cmluZywgYXJncz86IEFycmF5PFJldHVyblR5cGU8dHlwZW9mIEpTT04ucGFyc2U+Piwgb3B0aW9ucz86IEJhY2tncm91bmRKb2JPcHRpb25zLCBwcm9kdWNlckludm9jYXRpb25JZD86IHN0cmluZywgcHJvZHVjZXJQcm9vZj86IEJhY2tncm91bmRKb2JQcm9kdWNlclByb29mfX0gQmFja2dyb3VuZEpvYkVucXVldWVNZXNzYWdlXG4gKiBAdHlwZWRlZiB7e3R5cGU6IFwiZW5xdWV1ZWRcIiwgam9iSWQ6IHN0cmluZ319IEJhY2tncm91bmRKb2JFbnF1ZXVlZE1lc3NhZ2VcbiAqIEB0eXBlZGVmIHt7dHlwZTogXCJlbnF1ZXVlLWVycm9yXCIsIGVycm9yPzogc3RyaW5nfX0gQmFja2dyb3VuZEpvYkVucXVldWVFcnJvck1lc3NhZ2VcbiAqIEB0eXBlZGVmIHt7dHlwZTogXCJyZXBsYWNlLXNjaGVkdWxlZFwiLCBzY2hlZHVsZUtleTogc3RyaW5nLCBqb2JOYW1lOiBzdHJpbmcsIGFyZ3M/OiBBcnJheTxSZXR1cm5UeXBlPHR5cGVvZiBKU09OLnBhcnNlPj4sIG9wdGlvbnM/OiBCYWNrZ3JvdW5kSm9iT3B0aW9uc319IEJhY2tncm91bmRKb2JSZXBsYWNlU2NoZWR1bGVkTWVzc2FnZVxuICogQHR5cGVkZWYge3t0eXBlOiBcInNjaGVkdWxlLXJlcGxhY2VkXCIsIGpvYklkOiBzdHJpbmcsIHByZXZpb3VzSm9iSWQ6IHN0cmluZyB8IG51bGwsIHByZXZpb3VzU3RhdHVzOiBCYWNrZ3JvdW5kSm9iUmVwbGFjZW1lbnRQcmV2aW91c1N0YXR1c319IEJhY2tncm91bmRKb2JTY2hlZHVsZVJlcGxhY2VkTWVzc2FnZVxuICogQHR5cGVkZWYge3t0eXBlOiBcInJlcGxhY2Utc2NoZWR1bGVkLWVycm9yXCIsIGVycm9yPzogc3RyaW5nfX0gQmFja2dyb3VuZEpvYlJlcGxhY2VTY2hlZHVsZWRFcnJvck1lc3NhZ2VcbiAqIEB0eXBlZGVmIHt7dHlwZTogXCJjYW5jZWwtc2NoZWR1bGVkXCIsIHNjaGVkdWxlS2V5OiBzdHJpbmd9fSBCYWNrZ3JvdW5kSm9iQ2FuY2VsU2NoZWR1bGVkTWVzc2FnZVxuICogQHR5cGVkZWYge3t0eXBlOiBcInNjaGVkdWxlLWNhbmNlbGxlZFwiLCBqb2JJZDogc3RyaW5nIHwgbnVsbCwgb3V0Y29tZTogQmFja2dyb3VuZEpvYkNhbmNlbGxhdGlvbk91dGNvbWV9fSBCYWNrZ3JvdW5kSm9iU2NoZWR1bGVDYW5jZWxsZWRNZXNzYWdlXG4gKiBAdHlwZWRlZiB7e3R5cGU6IFwiY2FuY2VsLXNjaGVkdWxlZC1lcnJvclwiLCBlcnJvcj86IHN0cmluZ319IEJhY2tncm91bmRKb2JDYW5jZWxTY2hlZHVsZWRFcnJvck1lc3NhZ2VcbiAqIEB0eXBlZGVmIHt7dHlwZTogXCJnZXQtc2NoZWR1bGVkLWpvYlwiLCBzY2hlZHVsZUtleTogc3RyaW5nLCBpbmNsdWRlTGF0ZXN0VGVybWluYWw/OiBib29sZWFufX0gQmFja2dyb3VuZEpvYkdldFNjaGVkdWxlZE1lc3NhZ2VcbiAqIEB0eXBlZGVmIHt7dHlwZTogXCJzY2hlZHVsZWQtam9iXCIsIGN1cnJlbnRKb2I6IEJhY2tncm91bmRKb2JSb3cgfCBudWxsLCBsYXRlc3RUZXJtaW5hbEpvYjogQmFja2dyb3VuZEpvYlJvdyB8IG51bGx9fSBCYWNrZ3JvdW5kSm9iU2NoZWR1bGVkTWVzc2FnZVxuICogQHR5cGVkZWYge3t0eXBlOiBcImdldC1zY2hlZHVsZWQtam9iLWVycm9yXCIsIGVycm9yPzogc3RyaW5nfX0gQmFja2dyb3VuZEpvYkdldFNjaGVkdWxlZEVycm9yTWVzc2FnZVxuICogQHR5cGVkZWYge3t0eXBlOiBcIndha2Utc2NoZWR1bGVkXCIsIHNjaGVkdWxlS2V5OiBzdHJpbmd9fSBCYWNrZ3JvdW5kSm9iV2FrZVNjaGVkdWxlZE1lc3NhZ2VcbiAqIEB0eXBlZGVmIHt7dHlwZTogXCJzY2hlZHVsZS13b2tlblwiLCBqb2JJZDogc3RyaW5nIHwgbnVsbCwgb3V0Y29tZTogQmFja2dyb3VuZEpvYldha2VPdXRjb21lfX0gQmFja2dyb3VuZEpvYlNjaGVkdWxlV29rZW5NZXNzYWdlXG4gKiBAdHlwZWRlZiB7e3R5cGU6IFwid2FrZS1zY2hlZHVsZWQtZXJyb3JcIiwgZXJyb3I/OiBzdHJpbmd9fSBCYWNrZ3JvdW5kSm9iV2FrZVNjaGVkdWxlZEVycm9yTWVzc2FnZVxuICogQHR5cGVkZWYge3t0eXBlOiBcImpvYlwiLCBwYXlsb2FkOiBCYWNrZ3JvdW5kSm9iUGF5bG9hZH19IEJhY2tncm91bmRKb2JKb2JNZXNzYWdlXG4gKiBAdHlwZWRlZiB7e3R5cGU6IFwiam9iLWFjY2VwdGVkXCIsIGpvYklkOiBzdHJpbmcsIGhhbmRvZmZJZD86IHN0cmluZywgd29ya2VySWQ/OiBzdHJpbmcsIGhhbmRlZE9mZkF0TXM/OiBudW1iZXIsIHJlY2VpdmVkQXRNcz86IG51bWJlciwgc3RhcnRlZEF0TXM/OiBudW1iZXIsIGNoaWxkSW5zdGFuY2VJZD86IHN0cmluZywgY2hpbGRQaWQ/OiBudW1iZXIsIHJ1bm5lckhvc3RuYW1lPzogc3RyaW5nfX0gQmFja2dyb3VuZEpvYkFjY2VwdGVkTWVzc2FnZVxuICogQHR5cGVkZWYge3t0eXBlOiBcImpvYi1jb21wbGV0ZVwiLCBqb2JJZDogc3RyaW5nLCBoYW5kb2ZmSWQ/OiBzdHJpbmcsIHdvcmtlcklkPzogc3RyaW5nLCBoYW5kZWRPZmZBdE1zPzogbnVtYmVyfX0gQmFja2dyb3VuZEpvYkNvbXBsZXRlTWVzc2FnZVxuICogQHR5cGVkZWYge3t0eXBlOiBcImpvYi1mYWlsZWRcIiwgam9iSWQ6IHN0cmluZywgZXJyb3I/OiBSZXR1cm5UeXBlPHR5cGVvZiBKU09OLnBhcnNlPiwgaGFuZG9mZklkPzogc3RyaW5nLCB3b3JrZXJJZD86IHN0cmluZywgaGFuZGVkT2ZmQXRNcz86IG51bWJlciwgcnVubmVyRmFpbHVyZT86IFBvb2xlZFJ1bm5lckZhaWx1cmV9fSBCYWNrZ3JvdW5kSm9iRmFpbGVkTWVzc2FnZVxuICogQHR5cGVkZWYge3t0eXBlOiBcImpvYi1yZXNjaGVkdWxlXCIsIGpvYklkOiBzdHJpbmcsIGRlbGF5TXM6IG51bWJlciwgaGFuZG9mZklkPzogc3RyaW5nLCB3b3JrZXJJZD86IHN0cmluZywgaGFuZGVkT2ZmQXRNcz86IG51bWJlcn19IEJhY2tncm91bmRKb2JSZXNjaGVkdWxlTWVzc2FnZVxuICogQHR5cGVkZWYge3t0eXBlOiBcImpvYi11cGRhdGVkXCIsIGpvYklkOiBzdHJpbmd9fSBCYWNrZ3JvdW5kSm9iVXBkYXRlZE1lc3NhZ2VcbiAqIEB0eXBlZGVmIHt7dHlwZTogXCJqb2ItdXBkYXRlLWVycm9yXCIsIGpvYklkOiBzdHJpbmcsIGVycm9yPzogc3RyaW5nfX0gQmFja2dyb3VuZEpvYlVwZGF0ZUVycm9yTWVzc2FnZVxuICovXG4vKipcbiAqIEB0eXBlZGVmIHtCYWNrZ3JvdW5kSm9iSGVsbG9NZXNzYWdlIHwgQmFja2dyb3VuZEpvYkdlbmVyYXRpb25BY2NlcHRlZE1lc3NhZ2UgfCBCYWNrZ3JvdW5kSm9iR2VuZXJhdGlvblJlamVjdGVkTWVzc2FnZSB8IEJhY2tncm91bmRKb2JSZWFkeU1lc3NhZ2UgfCBCYWNrZ3JvdW5kSm9iRHJhaW5pbmdNZXNzYWdlIHwgQmFja2dyb3VuZEpvYkhlYXJ0YmVhdE1lc3NhZ2UgfCBCYWNrZ3JvdW5kSm9iRW5xdWV1ZU1lc3NhZ2UgfCBCYWNrZ3JvdW5kSm9iRW5xdWV1ZWRNZXNzYWdlIHwgQmFja2dyb3VuZEpvYkVucXVldWVFcnJvck1lc3NhZ2UgfCBCYWNrZ3JvdW5kSm9iUmVwbGFjZVNjaGVkdWxlZE1lc3NhZ2UgfCBCYWNrZ3JvdW5kSm9iU2NoZWR1bGVSZXBsYWNlZE1lc3NhZ2UgfCBCYWNrZ3JvdW5kSm9iUmVwbGFjZVNjaGVkdWxlZEVycm9yTWVzc2FnZSB8IEJhY2tncm91bmRKb2JDYW5jZWxTY2hlZHVsZWRNZXNzYWdlIHwgQmFja2dyb3VuZEpvYlNjaGVkdWxlQ2FuY2VsbGVkTWVzc2FnZSB8IEJhY2tncm91bmRKb2JDYW5jZWxTY2hlZHVsZWRFcnJvck1lc3NhZ2UgfCBCYWNrZ3JvdW5kSm9iR2V0U2NoZWR1bGVkTWVzc2FnZSB8IEJhY2tncm91bmRKb2JTY2hlZHVsZWRNZXNzYWdlIHwgQmFja2dyb3VuZEpvYkdldFNjaGVkdWxlZEVycm9yTWVzc2FnZSB8IEJhY2tncm91bmRKb2JXYWtlU2NoZWR1bGVkTWVzc2FnZSB8IEJhY2tncm91bmRKb2JTY2hlZHVsZVdva2VuTWVzc2FnZSB8IEJhY2tncm91bmRKb2JXYWtlU2NoZWR1bGVkRXJyb3JNZXNzYWdlIHwgQmFja2dyb3VuZEpvYkpvYk1lc3NhZ2UgfCBCYWNrZ3JvdW5kSm9iQWNjZXB0ZWRNZXNzYWdlIHwgQmFja2dyb3VuZEpvYkNvbXBsZXRlTWVzc2FnZSB8IEJhY2tncm91bmRKb2JGYWlsZWRNZXNzYWdlIHwgQmFja2dyb3VuZEpvYlJlc2NoZWR1bGVNZXNzYWdlIHwgQmFja2dyb3VuZEpvYlVwZGF0ZWRNZXNzYWdlIHwgQmFja2dyb3VuZEpvYlVwZGF0ZUVycm9yTWVzc2FnZX0gQmFja2dyb3VuZEpvYlNvY2tldE1lc3NhZ2VcbiAqL1xuXG5leHBvcnQgY29uc3Qgbm90aGluZyA9IHt9XG4iXX0=
|