@dbx-tools/appkit-mastra 0.9.131 → 0.9.136
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 +138 -104
- package/index.ts +3 -1
- package/lib/index.d.ts +3 -1
- package/lib/index.js +3 -2
- package/lib/src/config.d.ts +12 -17
- package/lib/src/config.js +5 -4
- package/lib/src/feedback-mode.d.ts +15 -0
- package/lib/src/feedback-mode.js +23 -0
- package/lib/src/genie-chat.d.ts +20 -13
- package/lib/src/genie-chat.js +202 -28
- package/lib/src/memory.js +4 -2
- package/lib/src/mlflow.d.ts +1 -14
- package/lib/src/mlflow.js +1 -25
- package/lib/src/model.d.ts +5 -3
- package/lib/src/model.js +7 -4
- package/lib/src/observability.js +6 -7
- package/lib/src/plugin.d.ts +16 -9
- package/lib/src/plugin.js +92 -28
- package/lib/src/server.d.ts +2 -3
- package/lib/src/server.js +5 -7
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/package.json +24 -16
- package/src/config.ts +16 -20
- package/src/feedback-mode.ts +35 -0
- package/src/genie-chat.ts +231 -31
- package/src/memory.ts +3 -1
- package/src/mlflow.ts +1 -27
- package/src/model.ts +12 -5
- package/src/observability.ts +5 -6
- package/src/plugin.ts +104 -30
- package/src/server.ts +4 -6
package/lib/index.d.ts
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
export declare const PACKAGE_IDENTIFIER = "@dbx-tools/appkit-mastra";
|
|
2
|
-
export declare const PACKAGE_VERSION = "0.9.
|
|
2
|
+
export declare const PACKAGE_VERSION = "0.9.136";
|
|
3
3
|
export * as agents from "./src/agents.ts";
|
|
4
4
|
export * as chart from "./src/chart.ts";
|
|
5
5
|
export * as chat from "./src/chat.ts";
|
|
6
6
|
export * as config from "./src/config.ts";
|
|
7
7
|
export * as defaults from "./src/defaults.ts";
|
|
8
8
|
export * as evaluation from "./src/evaluation.ts";
|
|
9
|
+
export * as feedbackMode from "./src/feedback-mode.ts";
|
|
9
10
|
export * as filesystems from "./src/filesystems.ts";
|
|
10
11
|
export * as genie from "./src/genie.ts";
|
|
11
12
|
export * as genieChat from "./src/genie-chat.ts";
|
|
@@ -41,6 +42,7 @@ export { MASTRA_USER_KEY, MASTRA_USER_NAME_KEY, MASTRA_USER_EMAIL_KEY, MASTRA_AU
|
|
|
41
42
|
export type { User, MastraMemoryConfig, MastraWorkspaceSkillsConfig, MastraCodeModeConfig, MastraMcpConfig, MastraPluginConfig } from "./src/config.ts";
|
|
42
43
|
export { modelCatalogueDefaults, genieSuggestionDefaults, genieConversationReadDefaults, genieConversationWriteDefaults, statementDataDefaults, chartFetchDefaults, feedbackWriteDefaults } from "./src/defaults.ts";
|
|
43
44
|
export type { MastraEvalDriverOptions } from "./src/evaluation.ts";
|
|
45
|
+
export type { FeedbackAvailability } from "./src/feedback-mode.ts";
|
|
44
46
|
export { MastraFileSystemAdapter, MountedCompositeFilesystem } from "./src/filesystems.ts";
|
|
45
47
|
export type { MastraFileSystemAdapterOptions } from "./src/filesystems.ts";
|
|
46
48
|
export { DEFAULT_GENIE_ALIAS, GENIE_INSTRUCTIONS } from "./src/genie.ts";
|
package/lib/index.js
CHANGED
|
@@ -2,13 +2,14 @@
|
|
|
2
2
|
// Regenerated from the exporting modules in ./src.
|
|
3
3
|
// Hand edits are overwritten on the next watch; this file is read-only.
|
|
4
4
|
export const PACKAGE_IDENTIFIER = "@dbx-tools/appkit-mastra";
|
|
5
|
-
export const PACKAGE_VERSION = "0.9.
|
|
5
|
+
export const PACKAGE_VERSION = "0.9.136";
|
|
6
6
|
export * as agents from "./src/agents.js";
|
|
7
7
|
export * as chart from "./src/chart.js";
|
|
8
8
|
export * as chat from "./src/chat.js";
|
|
9
9
|
export * as config from "./src/config.js";
|
|
10
10
|
export * as defaults from "./src/defaults.js";
|
|
11
11
|
export * as evaluation from "./src/evaluation.js";
|
|
12
|
+
export * as feedbackMode from "./src/feedback-mode.js";
|
|
12
13
|
export * as filesystems from "./src/filesystems.js";
|
|
13
14
|
export * as genie from "./src/genie.js";
|
|
14
15
|
export * as genieChat from "./src/genie-chat.js";
|
|
@@ -60,4 +61,4 @@ export { TITLE_INSTRUCTIONS } from "./src/summarize.js";
|
|
|
60
61
|
export { TRACE_IO_LIMIT, MLFLOW_SPAN_INPUTS_ATTR, MLFLOW_SPAN_OUTPUTS_ATTR, CHAT_MESSAGES_ATTR, CHAT_RESPONSE_ATTR, CHAT_IDENTITY_ATTR, CHAT_GENIE_USED_ATTR, MLFLOW_SPAN_TYPE_ATTR, GEN_AI_OPERATION_NAME_ATTR, MLFLOW_USER_ATTR, MLFLOW_SESSION_ATTR, MLFLOW_SPAN_TYPE_AGENT, MLFLOW_SPAN_TYPE_GENIE, AppMlflowTraceInfoSpanProcessor } from "./src/telemetry.js";
|
|
61
62
|
export { MLFLOW_TRACE_TAG_PREFIX, MLFLOW_AGENT_TAG, MLFLOW_GENIE_TAG, MLFLOW_OBO_AUTH_TAG, MLFLOW_SP_AUTH_TAG, MLFLOW_LOCAL_TAG, MLFLOW_AGENT_TAG_ATTR, MLFLOW_GENIE_TAG_ATTR, APPKIT_AGENT_TRACE_ROOT_ATTR, MLFLOW_OBO_AUTH_TAG_ATTR, MLFLOW_SP_AUTH_TAG_ATTR, MLFLOW_LOCAL_TAG_ATTR } from "./src/trace-attributes.js";
|
|
62
63
|
export { DEFAULT_DATABRICKS_WORKSPACE_PATHS } from "./src/workspaces.js";
|
|
63
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyQ0FBMkM7QUFDM0MsbURBQW1EO0FBQ25ELHdFQUF3RTtBQUV4RSxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRywwQkFBMEIsQ0FBQztBQUM3RCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsU0FBUyxDQUFDO0FBQ3pDLE9BQU8sS0FBSyxNQUFNLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxLQUFLLEtBQUssTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QyxPQUFPLEtBQUssSUFBSSxNQUFNLGVBQWUsQ0FBQztBQUN0QyxPQUFPLEtBQUssTUFBTSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sS0FBSyxRQUFRLE1BQU0sbUJBQW1CLENBQUM7QUFDOUMsT0FBTyxLQUFLLFVBQVUsTUFBTSxxQkFBcUIsQ0FBQztBQUNsRCxPQUFPLEtBQUssV0FBVyxNQUFNLHNCQUFzQixDQUFDO0FBQ3BELE9BQU8sS0FBSyxLQUFLLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEMsT0FBTyxLQUFLLFNBQVMsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRCxPQUFPLEtBQUssUUFBUSxNQUFNLG1CQUFtQixDQUFDO0FBQzlDLE9BQU8sS0FBSyxHQUFHLE1BQU0sY0FBYyxDQUFDO0FBQ3BDLE9BQU8sS0FBSyxNQUFNLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxLQUFLLE1BQU0sTUFBTSxpQkFBaUIsQ0FBQztBQUMxQyxPQUFPLEtBQUssS0FBSyxNQUFNLGdCQUFnQixDQUFDO0FBQ3hDLE9BQU8sS0FBSyxZQUFZLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxLQUFLLGFBQWEsTUFBTSx3QkFBd0IsQ0FBQztBQUN4RCxPQUFPLEtBQUssTUFBTSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sS0FBSyxVQUFVLE1BQU0scUJBQXFCLENBQUM7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QixDQUFDO0FBRXZELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUV4RCxPQUFPLEVBQUUsY0FBYyxFQUFFLHVCQUF1QixFQUFFLHdCQUF3QixFQUFFLGtCQUFrQixFQUFFLGtCQUFrQixFQUFFLGtCQUFrQixFQUFFLG9CQUFvQixFQUFFLHFCQUFxQixFQUFFLDBCQUEwQixFQUFFLGdCQUFnQixFQUFFLG1CQUFtQixFQUFFLHNCQUFzQixFQUFFLHNCQUFzQixFQUFFLCtCQUErQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFcFcsT0FBTyxFQUFFLHVCQUF1QixFQUFFLGdCQUFnQixFQUFFLGdCQUFnQixFQUFFLG1CQUFtQixFQUFFLGtCQUFrQixFQUFFLGdCQUFnQixFQUFFLHFCQUFxQixFQUFFLHFCQUFxQixFQUFFLDRCQUE0QixFQUFFLHdCQUF3QixFQUFFLHVCQUF1QixFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFelQsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0scUJBQXFCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBHRU5FUkFURUQgYnkgcHJvamVuIHdhdGNoIC0gRE8gTk9UIEVESVQuXG4vLyBSZWdlbmVyYXRlZCBmcm9tIHRoZSBleHBvcnRpbmcgbW9kdWxlcyBpbiAuL3NyYy5cbi8vIEhhbmQgZWRpdHMgYXJlIG92ZXJ3cml0dGVuIG9uIHRoZSBuZXh0IHdhdGNoOyB0aGlzIGZpbGUgaXMgcmVhZC1vbmx5LlxuXG5leHBvcnQgY29uc3QgUEFDS0FHRV9JREVOVElGSUVSID0gXCJAZGJ4LXRvb2xzL2FwcGtpdC1tYXN0cmFcIjtcbmV4cG9ydCBjb25zdCBQQUNLQUdFX1ZFUlNJT04gPSBcIjAuOS4xMzFcIjtcbmV4cG9ydCAqIGFzIGFnZW50cyBmcm9tIFwiLi9zcmMvYWdlbnRzLnRzXCI7XG5leHBvcnQgKiBhcyBjaGFydCBmcm9tIFwiLi9zcmMvY2hhcnQudHNcIjtcbmV4cG9ydCAqIGFzIGNoYXQgZnJvbSBcIi4vc3JjL2NoYXQudHNcIjtcbmV4cG9ydCAqIGFzIGNvbmZpZyBmcm9tIFwiLi9zcmMvY29uZmlnLnRzXCI7XG5leHBvcnQgKiBhcyBkZWZhdWx0cyBmcm9tIFwiLi9zcmMvZGVmYXVsdHMudHNcIjtcbmV4cG9ydCAqIGFzIGV2YWx1YXRpb24gZnJvbSBcIi4vc3JjL2V2YWx1YXRpb24udHNcIjtcbmV4cG9ydCAqIGFzIGZpbGVzeXN0ZW1zIGZyb20gXCIuL3NyYy9maWxlc3lzdGVtcy50c1wiO1xuZXhwb3J0ICogYXMgZ2VuaWUgZnJvbSBcIi4vc3JjL2dlbmllLnRzXCI7XG5leHBvcnQgKiBhcyBnZW5pZUNoYXQgZnJvbSBcIi4vc3JjL2dlbmllLWNoYXQudHNcIjtcbmV4cG9ydCAqIGFzIGlkZW50aXR5IGZyb20gXCIuL3NyYy9pZGVudGl0eS50c1wiO1xuZXhwb3J0ICogYXMgbWNwIGZyb20gXCIuL3NyYy9tY3AudHNcIjtcbmV4cG9ydCAqIGFzIG1lbW9yeSBmcm9tIFwiLi9zcmMvbWVtb3J5LnRzXCI7XG5leHBvcnQgKiBhcyBtbGZsb3cgZnJvbSBcIi4vc3JjL21sZmxvdy50c1wiO1xuZXhwb3J0ICogYXMgbW9kZWwgZnJvbSBcIi4vc3JjL21vZGVsLnRzXCI7XG5leHBvcnQgKiBhcyBtb250eVNhbmRib3ggZnJvbSBcIi4vc3JjL21vbnR5LXNhbmRib3gudHNcIjtcbmV4cG9ydCAqIGFzIG9ic2VydmFiaWxpdHkgZnJvbSBcIi4vc3JjL29ic2VydmFiaWxpdHkudHNcIjtcbmV4cG9ydCAqIGFzIHBsdWdpbiBmcm9tIFwiLi9zcmMvcGx1Z2luLnRzXCI7XG5leHBvcnQgKiBhcyBwcm9jZXNzb3JzIGZyb20gXCIuL3NyYy9wcm9jZXNzb3JzLnRzXCI7XG5leHBvcnQgKiBhcyByZW1vdGVTa2lsbHMgZnJvbSBcIi4vc3JjL3JlbW90ZS1za2lsbHMudHNcIjtcbmV4cG9ydCAqIGFzIHJlcXVlc3RDb250ZXh0IGZyb20gXCIuL3NyYy9yZXF1ZXN0LWNvbnRleHQudHNcIjtcbmV4cG9ydCAqIGFzIHJlc3QgZnJvbSBcIi4vc3JjL3Jlc3QudHNcIjtcbmV4cG9ydCAqIGFzIHNlcnZlciBmcm9tIFwiLi9zcmMvc2VydmVyLnRzXCI7XG5leHBvcnQgKiBhcyBzZXJ2aW5nIGZyb20gXCIuL3NyYy9zZXJ2aW5nLnRzXCI7XG5leHBvcnQgKiBhcyBza2lsbFBhdGhzIGZyb20gXCIuL3NyYy9za2lsbC1wYXRocy50c1wiO1xuZXhwb3J0ICogYXMgc3RhdGVtZW50IGZyb20gXCIuL3NyYy9zdGF0ZW1lbnQudHNcIjtcbmV4cG9ydCAqIGFzIHN0b3JhZ2VTY2hlbWEgZnJvbSBcIi4vc3JjL3N0b3JhZ2Utc2NoZW1hLnRzXCI7XG5leHBvcnQgKiBhcyBzdHlsZSBmcm9tIFwiLi9zcmMvc3R5bGUudHNcIjtcbmV4cG9ydCAqIGFzIHN1bW1hcml6ZSBmcm9tIFwiLi9zcmMvc3VtbWFyaXplLnRzXCI7XG5leHBvcnQgKiBhcyB0ZWxlbWV0cnkgZnJvbSBcIi4vc3JjL3RlbGVtZXRyeS50c1wiO1xuZXhwb3J0ICogYXMgdHJhY2VBdHRyaWJ1dGVzIGZyb20gXCIuL3NyYy90cmFjZS1hdHRyaWJ1dGVzLnRzXCI7XG5leHBvcnQgKiBhcyB2YWxpZGF0aW9uIGZyb20gXCIuL3NyYy92YWxpZGF0aW9uLnRzXCI7XG5leHBvcnQgKiBhcyB3b3Jrc3BhY2VzIGZyb20gXCIuL3NyYy93b3Jrc3BhY2VzLnRzXCI7XG5leHBvcnQgKiBhcyB3cml0ZXIgZnJvbSBcIi4vc3JjL3dyaXRlci50c1wiO1xuZXhwb3J0IHsgRkFMTEJBQ0tfQUdFTlRfSUQsIERFRkFVTFRfQUdFTlRfTUFYX1NURVBTLCBERUZBVUxUX1RPT0xfV09SS0ZMT1dfSU5TVFJVQ1RJT05TLCBDT0RFX01PREVfUk9VVElOR19JTlNUUlVDVElPTlMsIERFRkFVTFRfU1RZTEVfSU5TVFJVQ1RJT05TIH0gZnJvbSBcIi4vc3JjL2FnZW50cy50c1wiO1xuZXhwb3J0IHR5cGUgeyBNYXN0cmFUb29scywgQXBwS2l0VG9vbE9wdGlvbnMsIFRvb2xraXRPcHRpb25zLCBNYXN0cmFQbHVnaW5Ub29sa2l0UHJvdmlkZXIsIE1hc3RyYVBsdWdpbnMsIE1hc3RyYVRvb2xzRm4sIE1hc3RyYUFnZW50V29ya3NwYWNlUmVzb2x2ZXIsIE1hc3RyYUFnZW50RGVmaW5pdGlvbiwgQW55TWFzdHJhQWdlbnREZWZpbml0aW9uLCBNYXN0cmFTdG9yYWdlQ29uZmlnT3ZlcnJpZGUsIE1hc3RyYU1lbW9yeUNvbmZpZ092ZXJyaWRlLCBBZ2VudERlZmF1bHRNb2RlbCwgQnVpbHRBZ2VudHMsIE1hc3RyYU91dHB1dFByb2Nlc3NvckZhY3RvcnkgfSBmcm9tIFwiLi9zcmMvYWdlbnRzLnRzXCI7XG5leHBvcnQgeyBjaGFydFBsYW5TY2hlbWEsIGNoYXJ0UGxhbm5lclJlcXVlc3RTY2hlbWEsIGNoYXJ0VG9vbE91dHB1dFNjaGVtYSB9IGZyb20gXCIuL3NyYy9jaGFydC50c1wiO1xuZXhwb3J0IHR5cGUgeyBDaGFydFBsYW5uZXJSZXF1ZXN0LCBDaGFydFRvb2xPdXRwdXQsIFByZXBhcmVDaGFydE9wdGlvbnMsIEZldGNoQ2hhcnRPcHRpb25zIH0gZnJvbSBcIi4vc3JjL2NoYXJ0LnRzXCI7XG5leHBvcnQgeyBNQVNUUkFfVVNFUl9LRVksIE1BU1RSQV9VU0VSX05BTUVfS0VZLCBNQVNUUkFfVVNFUl9FTUFJTF9LRVksIE1BU1RSQV9BVVRIX01PREVfS0VZLCBNQVNUUkFfUkVRVUVTVF9JRF9LRVksIE1BU1RSQV9TQ09QRVNfS0VZLCBUUkFDRV9SRVFVRVNUX0NPTlRFWFRfS0VZUywgTUFTVFJBX0NPTkZJR19TQ0hFTUEgfSBmcm9tIFwiLi9zcmMvY29uZmlnLnRzXCI7XG5leHBvcnQgdHlwZSB7IFVzZXIsIE1hc3RyYU1lbW9yeUNvbmZpZywgTWFzdHJhV29ya3NwYWNlU2tpbGxzQ29uZmlnLCBNYXN0cmFDb2RlTW9kZUNvbmZpZywgTWFzdHJhTWNwQ29uZmlnLCBNYXN0cmFQbHVnaW5Db25maWcgfSBmcm9tIFwiLi9zcmMvY29uZmlnLnRzXCI7XG5leHBvcnQgeyBtb2RlbENhdGFsb2d1ZURlZmF1bHRzLCBnZW5pZVN1Z2dlc3Rpb25EZWZhdWx0cywgZ2VuaWVDb252ZXJzYXRpb25SZWFkRGVmYXVsdHMsIGdlbmllQ29udmVyc2F0aW9uV3JpdGVEZWZhdWx0cywgc3RhdGVtZW50RGF0YURlZmF1bHRzLCBjaGFydEZldGNoRGVmYXVsdHMsIGZlZWRiYWNrV3JpdGVEZWZhdWx0cyB9IGZyb20gXCIuL3NyYy9kZWZhdWx0cy50c1wiO1xuZXhwb3J0IHR5cGUgeyBNYXN0cmFFdmFsRHJpdmVyT3B0aW9ucyB9IGZyb20gXCIuL3NyYy9ldmFsdWF0aW9uLnRzXCI7XG5leHBvcnQgeyBNYXN0cmFGaWxlU3lzdGVtQWRhcHRlciwgTW91bnRlZENvbXBvc2l0ZUZpbGVzeXN0ZW0gfSBmcm9tIFwiLi9zcmMvZmlsZXN5c3RlbXMudHNcIjtcbmV4cG9ydCB0eXBlIHsgTWFzdHJhRmlsZVN5c3RlbUFkYXB0ZXJPcHRpb25zIH0gZnJvbSBcIi4vc3JjL2ZpbGVzeXN0ZW1zLnRzXCI7XG5leHBvcnQgeyBERUZBVUxUX0dFTklFX0FMSUFTLCBHRU5JRV9JTlNUUlVDVElPTlMgfSBmcm9tIFwiLi9zcmMvZ2VuaWUudHNcIjtcbmV4cG9ydCB0eXBlIHsgR2VuaWVTcGFjZUNvbmZpZywgR2VuaWVTcGFjZXNDb25maWcgfSBmcm9tIFwiLi9zcmMvZ2VuaWUudHNcIjtcbmV4cG9ydCB0eXBlIHsgR2VuaWVDaGF0U3BhY2UgfSBmcm9tIFwiLi9zcmMvZ2VuaWUtY2hhdC50c1wiO1xuZXhwb3J0IHsgSURFTlRJVFlfRU5WLCBJREVOVElUWV9NT0RFUywgREVGQVVMVF9JREVOVElUWV9NT0RFLCBVU0VSX0lEX0hFQURFUiwgVVNFUl9FTUFJTF9IRUFERVIsIHJlcXVlc3RVc2VySWQsIHJlcXVlc3RVc2VyRW1haWwsIHVzZVNlcnZpY2VQcmluY2lwYWwgfSBmcm9tIFwiLi9zcmMvaWRlbnRpdHkudHNcIjtcbmV4cG9ydCB0eXBlIHsgTWFzdHJhSWRlbnRpdHlNb2RlIH0gZnJvbSBcIi4vc3JjL2lkZW50aXR5LnRzXCI7XG5leHBvcnQgdHlwZSB7IFJlc29sdmVkTWNwIH0gZnJvbSBcIi4vc3JjL21jcC50c1wiO1xuZXhwb3J0IHsgTWVtb3J5QnVpbGRlciB9IGZyb20gXCIuL3NyYy9tZW1vcnkudHNcIjtcbmV4cG9ydCB7IEFnZW50VHJhY2VTcGFuUHJvY2Vzc29yIH0gZnJvbSBcIi4vc3JjL21sZmxvdy50c1wiO1xuZXhwb3J0IHR5cGUgeyBBcHBNbGZsb3dUcmFjZUluZm8sIExvZ0ZlZWRiYWNrUGFyYW1zIH0gZnJvbSBcIi4vc3JjL21sZmxvdy50c1wiO1xuZXhwb3J0IHsgUkVTUE9OU0VTX1BST1ZJREVSX09QVElPTlMgfSBmcm9tIFwiLi9zcmMvbW9kZWwudHNcIjtcbmV4cG9ydCB0eXBlIHsgQnVpbGRNb2RlbE92ZXJyaWRlcyB9IGZyb20gXCIuL3NyYy9tb2RlbC50c1wiO1xuZXhwb3J0IHsgTW9udHlTYW5kYm94IH0gZnJvbSBcIi4vc3JjL21vbnR5LXNhbmRib3gudHNcIjtcbmV4cG9ydCB0eXBlIHsgTW9udHlTYW5kYm94T3B0aW9ucyB9IGZyb20gXCIuL3NyYy9tb250eS1zYW5kYm94LnRzXCI7XG5leHBvcnQgdHlwZSB7IEJ1aWxkT2JzZXJ2YWJpbGl0eU9wdGlvbnMgfSBmcm9tIFwiLi9zcmMvb2JzZXJ2YWJpbGl0eS50c1wiO1xuZXhwb3J0IHsgTWFzdHJhUGx1Z2luLCBtYXN0cmEgfSBmcm9tIFwiLi9zcmMvcGx1Z2luLnRzXCI7XG5leHBvcnQgeyBzdHJpcFN0YWxlQ2hhcnRzUHJvY2Vzc29yIH0gZnJvbSBcIi4vc3JjL3Byb2Nlc3NvcnMudHNcIjtcbmV4cG9ydCB7IEFJVE9PTFNfU0tJTExTX01PVU5ULCBSRU1PVEVfU0tJTExTX01PVU5ULCBBSVRPT0xTX1JFRlJFU0hfVFRMX01TLCBBSVRPT0xTX1NPVVJDRSB9IGZyb20gXCIuL3NyYy9yZW1vdGUtc2tpbGxzLnRzXCI7XG5leHBvcnQgdHlwZSB7IEFpVG9vbHNTb3VyY2UsIFJlbW90ZVNraWxsU291cmNlT3B0aW9ucywgUmVtb3RlU2tpbGxTb3VyY2UsIFJlbW90ZVNraWxsc09wdGlvbiwgTG9jYWxTa2lsbERpcmVjdG9yeU1vdW50LCBNZW1vcnlTa2lsbE1vdW50LCBMb2NhbFNraWxsTW91bnQsIFByb3Zpc2lvblJlbW90ZVNraWxsc09wdGlvbnMsIFByb3Zpc2lvbmVkUmVtb3RlU2tpbGxzLCBSZW1vdGVTa2lsbENhY2hlRW50cnksIFJlbW90ZVNraWxsc01ldGFkYXRhIH0gZnJvbSBcIi4vc3JjL3JlbW90ZS1za2lsbHMudHNcIjtcbmV4cG9ydCB7IE1BU1RSQV9PUklHSU5fS0VZIH0gZnJvbSBcIi4vc3JjL3JlcXVlc3QtY29udGV4dC50c1wiO1xuZXhwb3J0IHR5cGUgeyBEYXRhYnJpY2tzRmV0Y2hJbml0IH0gZnJvbSBcIi4vc3JjL3Jlc3QudHNcIjtcbmV4cG9ydCB7IE1hc3RyYVNlcnZlciB9IGZyb20gXCIuL3NyYy9zZXJ2ZXIudHNcIjtcbmV4cG9ydCB0eXBlIHsgQXR0cmlidXRlZElkZW50aXR5LCBNYXN0cmFBcGlHYXRlT3B0aW9ucyB9IGZyb20gXCIuL3NyYy9zZXJ2ZXIudHNcIjtcbmV4cG9ydCB7IE1BU1RSQV9NT0RFTF9PVkVSUklERV9LRVksIE1BU1RSQV9SRVNPTFZFRF9NT0RFTF9LRVkgfSBmcm9tIFwiLi9zcmMvc2VydmluZy50c1wiO1xuZXhwb3J0IHR5cGUgeyBNb2RlbE92ZXJyaWRlUmVxdWVzdCB9IGZyb20gXCIuL3NyYy9zZXJ2aW5nLnRzXCI7XG5leHBvcnQgeyBPUkdBTklaQVRJT05fQVNTSVNUQU5UX1BBVEgsIE9SR0FOSVpBVElPTl9TS0lMTFNfUEFUSCB9IGZyb20gXCIuL3NyYy9za2lsbC1wYXRocy50c1wiO1xuZXhwb3J0IHsgU1RBVEVNRU5UX1JPV19DQVAgfSBmcm9tIFwiLi9zcmMvc3RhdGVtZW50LnRzXCI7XG5leHBvcnQgdHlwZSB7IFN0YXRlbWVudEVtYmVkRGF0YSB9IGZyb20gXCIuL3NyYy9zdGF0ZW1lbnQudHNcIjtcbmV4cG9ydCB7IFRZUE9HUkFQSFlfUlVMRSB9IGZyb20gXCIuL3NyYy9zdHlsZS50c1wiO1xuZXhwb3J0IHsgVElUTEVfSU5TVFJVQ1RJT05TIH0gZnJvbSBcIi4vc3JjL3N1bW1hcml6ZS50c1wiO1xuZXhwb3J0IHR5cGUgeyBTdW1tYXJpemVPcHRpb25zIH0gZnJvbSBcIi4vc3JjL3N1bW1hcml6ZS50c1wiO1xuZXhwb3J0IHsgVFJBQ0VfSU9fTElNSVQsIE1MRkxPV19TUEFOX0lOUFVUU19BVFRSLCBNTEZMT1dfU1BBTl9PVVRQVVRTX0FUVFIsIENIQVRfTUVTU0FHRVNfQVRUUiwgQ0hBVF9SRVNQT05TRV9BVFRSLCBDSEFUX0lERU5USVRZX0FUVFIsIENIQVRfR0VOSUVfVVNFRF9BVFRSLCBNTEZMT1dfU1BBTl9UWVBFX0FUVFIsIEdFTl9BSV9PUEVSQVRJT05fTkFNRV9BVFRSLCBNTEZMT1dfVVNFUl9BVFRSLCBNTEZMT1dfU0VTU0lPTl9BVFRSLCBNTEZMT1dfU1BBTl9UWVBFX0FHRU5ULCBNTEZMT1dfU1BBTl9UWVBFX0dFTklFLCBBcHBNbGZsb3dUcmFjZUluZm9TcGFuUHJvY2Vzc29yIH0gZnJvbSBcIi4vc3JjL3RlbGVtZXRyeS50c1wiO1xuZXhwb3J0IHR5cGUgeyBDaGF0VHVyblRlbGVtZXRyeU9wdGlvbnMsIENoYXRUcmFjZVRhZ1ZhbHVlIH0gZnJvbSBcIi4vc3JjL3RlbGVtZXRyeS50c1wiO1xuZXhwb3J0IHsgTUxGTE9XX1RSQUNFX1RBR19QUkVGSVgsIE1MRkxPV19BR0VOVF9UQUcsIE1MRkxPV19HRU5JRV9UQUcsIE1MRkxPV19PQk9fQVVUSF9UQUcsIE1MRkxPV19TUF9BVVRIX1RBRywgTUxGTE9XX0xPQ0FMX1RBRywgTUxGTE9XX0FHRU5UX1RBR19BVFRSLCBNTEZMT1dfR0VOSUVfVEFHX0FUVFIsIEFQUEtJVF9BR0VOVF9UUkFDRV9ST09UX0FUVFIsIE1MRkxPV19PQk9fQVVUSF9UQUdfQVRUUiwgTUxGTE9XX1NQX0FVVEhfVEFHX0FUVFIsIE1MRkxPV19MT0NBTF9UQUdfQVRUUiB9IGZyb20gXCIuL3NyYy90cmFjZS1hdHRyaWJ1dGVzLnRzXCI7XG5leHBvcnQgdHlwZSB7IFNjaGVtYUlzc3VlcyB9IGZyb20gXCIuL3NyYy92YWxpZGF0aW9uLnRzXCI7XG5leHBvcnQgeyBERUZBVUxUX0RBVEFCUklDS1NfV09SS1NQQUNFX1BBVEhTIH0gZnJvbSBcIi4vc3JjL3dvcmtzcGFjZXMudHNcIjtcbmV4cG9ydCB0eXBlIHsgRGF0YWJyaWNrc1dvcmtzcGFjZUNvbnRleHQsIERhdGFicmlja3NXb3Jrc3BhY2VQYXRoT3B0aW9ucywgRGF0YWJyaWNrc1dvcmtzcGFjZVBhdGgsIERhdGFicmlja3NXb3Jrc3BhY2VQYXRoVmFsdWUsIERhdGFicmlja3NXb3Jrc3BhY2VDYWNoZUZpbHRlciwgRGF0YWJyaWNrc1dvcmtzcGFjZUNhY2hlLCBXb3Jrc3BhY2VTYW5kYm94U2VsZWN0aW9uLCBEYXRhYnJpY2tzV29ya3NwYWNlT3B0aW9ucyB9IGZyb20gXCIuL3NyYy93b3Jrc3BhY2VzLnRzXCI7XG4iXX0=
|
|
64
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyQ0FBMkM7QUFDM0MsbURBQW1EO0FBQ25ELHdFQUF3RTtBQUV4RSxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRywwQkFBMEIsQ0FBQztBQUM3RCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsU0FBUyxDQUFDO0FBQ3pDLE9BQU8sS0FBSyxNQUFNLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxLQUFLLEtBQUssTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QyxPQUFPLEtBQUssSUFBSSxNQUFNLGVBQWUsQ0FBQztBQUN0QyxPQUFPLEtBQUssTUFBTSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sS0FBSyxRQUFRLE1BQU0sbUJBQW1CLENBQUM7QUFDOUMsT0FBTyxLQUFLLFVBQVUsTUFBTSxxQkFBcUIsQ0FBQztBQUNsRCxPQUFPLEtBQUssWUFBWSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sS0FBSyxXQUFXLE1BQU0sc0JBQXNCLENBQUM7QUFDcEQsT0FBTyxLQUFLLEtBQUssTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QyxPQUFPLEtBQUssU0FBUyxNQUFNLHFCQUFxQixDQUFDO0FBQ2pELE9BQU8sS0FBSyxRQUFRLE1BQU0sbUJBQW1CLENBQUM7QUFDOUMsT0FBTyxLQUFLLEdBQUcsTUFBTSxjQUFjLENBQUM7QUFDcEMsT0FBTyxLQUFLLE1BQU0sTUFBTSxpQkFBaUIsQ0FBQztBQUMxQyxPQUFPLEtBQUssTUFBTSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sS0FBSyxLQUFLLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEMsT0FBTyxLQUFLLFlBQVksTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEtBQUssYUFBYSxNQUFNLHdCQUF3QixDQUFDO0FBQ3hELE9BQU8sS0FBSyxNQUFNLE1BQU0saUJBQWlCLENBQUM7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QUFDN0YsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFdkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXhELE9BQU8sRUFBRSxjQUFjLEVBQUUsdUJBQXVCLEVBQUUsd0JBQXdCLEVBQUUsa0JBQWtCLEVBQUUsa0JBQWtCLEVBQUUsa0JBQWtCLEVBQUUsb0JBQW9CLEVBQUUscUJBQXFCLEVBQUUsMEJBQTBCLEVBQUUsZ0JBQWdCLEVBQUUsbUJBQW1CLEVBQUUsc0JBQXNCLEVBQUUsc0JBQXNCLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVwVyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsbUJBQW1CLEVBQUUsa0JBQWtCLEVBQUUsZ0JBQWdCLEVBQUUscUJBQXFCLEVBQUUscUJBQXFCLEVBQUUsNEJBQTRCLEVBQUUsd0JBQXdCLEVBQUUsdUJBQXVCLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUV6VCxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEdFTkVSQVRFRCBieSBwcm9qZW4gd2F0Y2ggLSBETyBOT1QgRURJVC5cbi8vIFJlZ2VuZXJhdGVkIGZyb20gdGhlIGV4cG9ydGluZyBtb2R1bGVzIGluIC4vc3JjLlxuLy8gSGFuZCBlZGl0cyBhcmUgb3ZlcndyaXR0ZW4gb24gdGhlIG5leHQgd2F0Y2g7IHRoaXMgZmlsZSBpcyByZWFkLW9ubHkuXG5cbmV4cG9ydCBjb25zdCBQQUNLQUdFX0lERU5USUZJRVIgPSBcIkBkYngtdG9vbHMvYXBwa2l0LW1hc3RyYVwiO1xuZXhwb3J0IGNvbnN0IFBBQ0tBR0VfVkVSU0lPTiA9IFwiMC45LjEzNlwiO1xuZXhwb3J0ICogYXMgYWdlbnRzIGZyb20gXCIuL3NyYy9hZ2VudHMudHNcIjtcbmV4cG9ydCAqIGFzIGNoYXJ0IGZyb20gXCIuL3NyYy9jaGFydC50c1wiO1xuZXhwb3J0ICogYXMgY2hhdCBmcm9tIFwiLi9zcmMvY2hhdC50c1wiO1xuZXhwb3J0ICogYXMgY29uZmlnIGZyb20gXCIuL3NyYy9jb25maWcudHNcIjtcbmV4cG9ydCAqIGFzIGRlZmF1bHRzIGZyb20gXCIuL3NyYy9kZWZhdWx0cy50c1wiO1xuZXhwb3J0ICogYXMgZXZhbHVhdGlvbiBmcm9tIFwiLi9zcmMvZXZhbHVhdGlvbi50c1wiO1xuZXhwb3J0ICogYXMgZmVlZGJhY2tNb2RlIGZyb20gXCIuL3NyYy9mZWVkYmFjay1tb2RlLnRzXCI7XG5leHBvcnQgKiBhcyBmaWxlc3lzdGVtcyBmcm9tIFwiLi9zcmMvZmlsZXN5c3RlbXMudHNcIjtcbmV4cG9ydCAqIGFzIGdlbmllIGZyb20gXCIuL3NyYy9nZW5pZS50c1wiO1xuZXhwb3J0ICogYXMgZ2VuaWVDaGF0IGZyb20gXCIuL3NyYy9nZW5pZS1jaGF0LnRzXCI7XG5leHBvcnQgKiBhcyBpZGVudGl0eSBmcm9tIFwiLi9zcmMvaWRlbnRpdHkudHNcIjtcbmV4cG9ydCAqIGFzIG1jcCBmcm9tIFwiLi9zcmMvbWNwLnRzXCI7XG5leHBvcnQgKiBhcyBtZW1vcnkgZnJvbSBcIi4vc3JjL21lbW9yeS50c1wiO1xuZXhwb3J0ICogYXMgbWxmbG93IGZyb20gXCIuL3NyYy9tbGZsb3cudHNcIjtcbmV4cG9ydCAqIGFzIG1vZGVsIGZyb20gXCIuL3NyYy9tb2RlbC50c1wiO1xuZXhwb3J0ICogYXMgbW9udHlTYW5kYm94IGZyb20gXCIuL3NyYy9tb250eS1zYW5kYm94LnRzXCI7XG5leHBvcnQgKiBhcyBvYnNlcnZhYmlsaXR5IGZyb20gXCIuL3NyYy9vYnNlcnZhYmlsaXR5LnRzXCI7XG5leHBvcnQgKiBhcyBwbHVnaW4gZnJvbSBcIi4vc3JjL3BsdWdpbi50c1wiO1xuZXhwb3J0ICogYXMgcHJvY2Vzc29ycyBmcm9tIFwiLi9zcmMvcHJvY2Vzc29ycy50c1wiO1xuZXhwb3J0ICogYXMgcmVtb3RlU2tpbGxzIGZyb20gXCIuL3NyYy9yZW1vdGUtc2tpbGxzLnRzXCI7XG5leHBvcnQgKiBhcyByZXF1ZXN0Q29udGV4dCBmcm9tIFwiLi9zcmMvcmVxdWVzdC1jb250ZXh0LnRzXCI7XG5leHBvcnQgKiBhcyByZXN0IGZyb20gXCIuL3NyYy9yZXN0LnRzXCI7XG5leHBvcnQgKiBhcyBzZXJ2ZXIgZnJvbSBcIi4vc3JjL3NlcnZlci50c1wiO1xuZXhwb3J0ICogYXMgc2VydmluZyBmcm9tIFwiLi9zcmMvc2VydmluZy50c1wiO1xuZXhwb3J0ICogYXMgc2tpbGxQYXRocyBmcm9tIFwiLi9zcmMvc2tpbGwtcGF0aHMudHNcIjtcbmV4cG9ydCAqIGFzIHN0YXRlbWVudCBmcm9tIFwiLi9zcmMvc3RhdGVtZW50LnRzXCI7XG5leHBvcnQgKiBhcyBzdG9yYWdlU2NoZW1hIGZyb20gXCIuL3NyYy9zdG9yYWdlLXNjaGVtYS50c1wiO1xuZXhwb3J0ICogYXMgc3R5bGUgZnJvbSBcIi4vc3JjL3N0eWxlLnRzXCI7XG5leHBvcnQgKiBhcyBzdW1tYXJpemUgZnJvbSBcIi4vc3JjL3N1bW1hcml6ZS50c1wiO1xuZXhwb3J0ICogYXMgdGVsZW1ldHJ5IGZyb20gXCIuL3NyYy90ZWxlbWV0cnkudHNcIjtcbmV4cG9ydCAqIGFzIHRyYWNlQXR0cmlidXRlcyBmcm9tIFwiLi9zcmMvdHJhY2UtYXR0cmlidXRlcy50c1wiO1xuZXhwb3J0ICogYXMgdmFsaWRhdGlvbiBmcm9tIFwiLi9zcmMvdmFsaWRhdGlvbi50c1wiO1xuZXhwb3J0ICogYXMgd29ya3NwYWNlcyBmcm9tIFwiLi9zcmMvd29ya3NwYWNlcy50c1wiO1xuZXhwb3J0ICogYXMgd3JpdGVyIGZyb20gXCIuL3NyYy93cml0ZXIudHNcIjtcbmV4cG9ydCB7IEZBTExCQUNLX0FHRU5UX0lELCBERUZBVUxUX0FHRU5UX01BWF9TVEVQUywgREVGQVVMVF9UT09MX1dPUktGTE9XX0lOU1RSVUNUSU9OUywgQ09ERV9NT0RFX1JPVVRJTkdfSU5TVFJVQ1RJT05TLCBERUZBVUxUX1NUWUxFX0lOU1RSVUNUSU9OUyB9IGZyb20gXCIuL3NyYy9hZ2VudHMudHNcIjtcbmV4cG9ydCB0eXBlIHsgTWFzdHJhVG9vbHMsIEFwcEtpdFRvb2xPcHRpb25zLCBUb29sa2l0T3B0aW9ucywgTWFzdHJhUGx1Z2luVG9vbGtpdFByb3ZpZGVyLCBNYXN0cmFQbHVnaW5zLCBNYXN0cmFUb29sc0ZuLCBNYXN0cmFBZ2VudFdvcmtzcGFjZVJlc29sdmVyLCBNYXN0cmFBZ2VudERlZmluaXRpb24sIEFueU1hc3RyYUFnZW50RGVmaW5pdGlvbiwgTWFzdHJhU3RvcmFnZUNvbmZpZ092ZXJyaWRlLCBNYXN0cmFNZW1vcnlDb25maWdPdmVycmlkZSwgQWdlbnREZWZhdWx0TW9kZWwsIEJ1aWx0QWdlbnRzLCBNYXN0cmFPdXRwdXRQcm9jZXNzb3JGYWN0b3J5IH0gZnJvbSBcIi4vc3JjL2FnZW50cy50c1wiO1xuZXhwb3J0IHsgY2hhcnRQbGFuU2NoZW1hLCBjaGFydFBsYW5uZXJSZXF1ZXN0U2NoZW1hLCBjaGFydFRvb2xPdXRwdXRTY2hlbWEgfSBmcm9tIFwiLi9zcmMvY2hhcnQudHNcIjtcbmV4cG9ydCB0eXBlIHsgQ2hhcnRQbGFubmVyUmVxdWVzdCwgQ2hhcnRUb29sT3V0cHV0LCBQcmVwYXJlQ2hhcnRPcHRpb25zLCBGZXRjaENoYXJ0T3B0aW9ucyB9IGZyb20gXCIuL3NyYy9jaGFydC50c1wiO1xuZXhwb3J0IHsgTUFTVFJBX1VTRVJfS0VZLCBNQVNUUkFfVVNFUl9OQU1FX0tFWSwgTUFTVFJBX1VTRVJfRU1BSUxfS0VZLCBNQVNUUkFfQVVUSF9NT0RFX0tFWSwgTUFTVFJBX1JFUVVFU1RfSURfS0VZLCBNQVNUUkFfU0NPUEVTX0tFWSwgVFJBQ0VfUkVRVUVTVF9DT05URVhUX0tFWVMsIE1BU1RSQV9DT05GSUdfU0NIRU1BIH0gZnJvbSBcIi4vc3JjL2NvbmZpZy50c1wiO1xuZXhwb3J0IHR5cGUgeyBVc2VyLCBNYXN0cmFNZW1vcnlDb25maWcsIE1hc3RyYVdvcmtzcGFjZVNraWxsc0NvbmZpZywgTWFzdHJhQ29kZU1vZGVDb25maWcsIE1hc3RyYU1jcENvbmZpZywgTWFzdHJhUGx1Z2luQ29uZmlnIH0gZnJvbSBcIi4vc3JjL2NvbmZpZy50c1wiO1xuZXhwb3J0IHsgbW9kZWxDYXRhbG9ndWVEZWZhdWx0cywgZ2VuaWVTdWdnZXN0aW9uRGVmYXVsdHMsIGdlbmllQ29udmVyc2F0aW9uUmVhZERlZmF1bHRzLCBnZW5pZUNvbnZlcnNhdGlvbldyaXRlRGVmYXVsdHMsIHN0YXRlbWVudERhdGFEZWZhdWx0cywgY2hhcnRGZXRjaERlZmF1bHRzLCBmZWVkYmFja1dyaXRlRGVmYXVsdHMgfSBmcm9tIFwiLi9zcmMvZGVmYXVsdHMudHNcIjtcbmV4cG9ydCB0eXBlIHsgTWFzdHJhRXZhbERyaXZlck9wdGlvbnMgfSBmcm9tIFwiLi9zcmMvZXZhbHVhdGlvbi50c1wiO1xuZXhwb3J0IHR5cGUgeyBGZWVkYmFja0F2YWlsYWJpbGl0eSB9IGZyb20gXCIuL3NyYy9mZWVkYmFjay1tb2RlLnRzXCI7XG5leHBvcnQgeyBNYXN0cmFGaWxlU3lzdGVtQWRhcHRlciwgTW91bnRlZENvbXBvc2l0ZUZpbGVzeXN0ZW0gfSBmcm9tIFwiLi9zcmMvZmlsZXN5c3RlbXMudHNcIjtcbmV4cG9ydCB0eXBlIHsgTWFzdHJhRmlsZVN5c3RlbUFkYXB0ZXJPcHRpb25zIH0gZnJvbSBcIi4vc3JjL2ZpbGVzeXN0ZW1zLnRzXCI7XG5leHBvcnQgeyBERUZBVUxUX0dFTklFX0FMSUFTLCBHRU5JRV9JTlNUUlVDVElPTlMgfSBmcm9tIFwiLi9zcmMvZ2VuaWUudHNcIjtcbmV4cG9ydCB0eXBlIHsgR2VuaWVTcGFjZUNvbmZpZywgR2VuaWVTcGFjZXNDb25maWcgfSBmcm9tIFwiLi9zcmMvZ2VuaWUudHNcIjtcbmV4cG9ydCB0eXBlIHsgR2VuaWVDaGF0U3BhY2UgfSBmcm9tIFwiLi9zcmMvZ2VuaWUtY2hhdC50c1wiO1xuZXhwb3J0IHsgSURFTlRJVFlfRU5WLCBJREVOVElUWV9NT0RFUywgREVGQVVMVF9JREVOVElUWV9NT0RFLCBVU0VSX0lEX0hFQURFUiwgVVNFUl9FTUFJTF9IRUFERVIsIHJlcXVlc3RVc2VySWQsIHJlcXVlc3RVc2VyRW1haWwsIHVzZVNlcnZpY2VQcmluY2lwYWwgfSBmcm9tIFwiLi9zcmMvaWRlbnRpdHkudHNcIjtcbmV4cG9ydCB0eXBlIHsgTWFzdHJhSWRlbnRpdHlNb2RlIH0gZnJvbSBcIi4vc3JjL2lkZW50aXR5LnRzXCI7XG5leHBvcnQgdHlwZSB7IFJlc29sdmVkTWNwIH0gZnJvbSBcIi4vc3JjL21jcC50c1wiO1xuZXhwb3J0IHsgTWVtb3J5QnVpbGRlciB9IGZyb20gXCIuL3NyYy9tZW1vcnkudHNcIjtcbmV4cG9ydCB7IEFnZW50VHJhY2VTcGFuUHJvY2Vzc29yIH0gZnJvbSBcIi4vc3JjL21sZmxvdy50c1wiO1xuZXhwb3J0IHR5cGUgeyBBcHBNbGZsb3dUcmFjZUluZm8sIExvZ0ZlZWRiYWNrUGFyYW1zIH0gZnJvbSBcIi4vc3JjL21sZmxvdy50c1wiO1xuZXhwb3J0IHsgUkVTUE9OU0VTX1BST1ZJREVSX09QVElPTlMgfSBmcm9tIFwiLi9zcmMvbW9kZWwudHNcIjtcbmV4cG9ydCB0eXBlIHsgQnVpbGRNb2RlbE92ZXJyaWRlcyB9IGZyb20gXCIuL3NyYy9tb2RlbC50c1wiO1xuZXhwb3J0IHsgTW9udHlTYW5kYm94IH0gZnJvbSBcIi4vc3JjL21vbnR5LXNhbmRib3gudHNcIjtcbmV4cG9ydCB0eXBlIHsgTW9udHlTYW5kYm94T3B0aW9ucyB9IGZyb20gXCIuL3NyYy9tb250eS1zYW5kYm94LnRzXCI7XG5leHBvcnQgdHlwZSB7IEJ1aWxkT2JzZXJ2YWJpbGl0eU9wdGlvbnMgfSBmcm9tIFwiLi9zcmMvb2JzZXJ2YWJpbGl0eS50c1wiO1xuZXhwb3J0IHsgTWFzdHJhUGx1Z2luLCBtYXN0cmEgfSBmcm9tIFwiLi9zcmMvcGx1Z2luLnRzXCI7XG5leHBvcnQgeyBzdHJpcFN0YWxlQ2hhcnRzUHJvY2Vzc29yIH0gZnJvbSBcIi4vc3JjL3Byb2Nlc3NvcnMudHNcIjtcbmV4cG9ydCB7IEFJVE9PTFNfU0tJTExTX01PVU5ULCBSRU1PVEVfU0tJTExTX01PVU5ULCBBSVRPT0xTX1JFRlJFU0hfVFRMX01TLCBBSVRPT0xTX1NPVVJDRSB9IGZyb20gXCIuL3NyYy9yZW1vdGUtc2tpbGxzLnRzXCI7XG5leHBvcnQgdHlwZSB7IEFpVG9vbHNTb3VyY2UsIFJlbW90ZVNraWxsU291cmNlT3B0aW9ucywgUmVtb3RlU2tpbGxTb3VyY2UsIFJlbW90ZVNraWxsc09wdGlvbiwgTG9jYWxTa2lsbERpcmVjdG9yeU1vdW50LCBNZW1vcnlTa2lsbE1vdW50LCBMb2NhbFNraWxsTW91bnQsIFByb3Zpc2lvblJlbW90ZVNraWxsc09wdGlvbnMsIFByb3Zpc2lvbmVkUmVtb3RlU2tpbGxzLCBSZW1vdGVTa2lsbENhY2hlRW50cnksIFJlbW90ZVNraWxsc01ldGFkYXRhIH0gZnJvbSBcIi4vc3JjL3JlbW90ZS1za2lsbHMudHNcIjtcbmV4cG9ydCB7IE1BU1RSQV9PUklHSU5fS0VZIH0gZnJvbSBcIi4vc3JjL3JlcXVlc3QtY29udGV4dC50c1wiO1xuZXhwb3J0IHR5cGUgeyBEYXRhYnJpY2tzRmV0Y2hJbml0IH0gZnJvbSBcIi4vc3JjL3Jlc3QudHNcIjtcbmV4cG9ydCB7IE1hc3RyYVNlcnZlciB9IGZyb20gXCIuL3NyYy9zZXJ2ZXIudHNcIjtcbmV4cG9ydCB0eXBlIHsgQXR0cmlidXRlZElkZW50aXR5LCBNYXN0cmFBcGlHYXRlT3B0aW9ucyB9IGZyb20gXCIuL3NyYy9zZXJ2ZXIudHNcIjtcbmV4cG9ydCB7IE1BU1RSQV9NT0RFTF9PVkVSUklERV9LRVksIE1BU1RSQV9SRVNPTFZFRF9NT0RFTF9LRVkgfSBmcm9tIFwiLi9zcmMvc2VydmluZy50c1wiO1xuZXhwb3J0IHR5cGUgeyBNb2RlbE92ZXJyaWRlUmVxdWVzdCB9IGZyb20gXCIuL3NyYy9zZXJ2aW5nLnRzXCI7XG5leHBvcnQgeyBPUkdBTklaQVRJT05fQVNTSVNUQU5UX1BBVEgsIE9SR0FOSVpBVElPTl9TS0lMTFNfUEFUSCB9IGZyb20gXCIuL3NyYy9za2lsbC1wYXRocy50c1wiO1xuZXhwb3J0IHsgU1RBVEVNRU5UX1JPV19DQVAgfSBmcm9tIFwiLi9zcmMvc3RhdGVtZW50LnRzXCI7XG5leHBvcnQgdHlwZSB7IFN0YXRlbWVudEVtYmVkRGF0YSB9IGZyb20gXCIuL3NyYy9zdGF0ZW1lbnQudHNcIjtcbmV4cG9ydCB7IFRZUE9HUkFQSFlfUlVMRSB9IGZyb20gXCIuL3NyYy9zdHlsZS50c1wiO1xuZXhwb3J0IHsgVElUTEVfSU5TVFJVQ1RJT05TIH0gZnJvbSBcIi4vc3JjL3N1bW1hcml6ZS50c1wiO1xuZXhwb3J0IHR5cGUgeyBTdW1tYXJpemVPcHRpb25zIH0gZnJvbSBcIi4vc3JjL3N1bW1hcml6ZS50c1wiO1xuZXhwb3J0IHsgVFJBQ0VfSU9fTElNSVQsIE1MRkxPV19TUEFOX0lOUFVUU19BVFRSLCBNTEZMT1dfU1BBTl9PVVRQVVRTX0FUVFIsIENIQVRfTUVTU0FHRVNfQVRUUiwgQ0hBVF9SRVNQT05TRV9BVFRSLCBDSEFUX0lERU5USVRZX0FUVFIsIENIQVRfR0VOSUVfVVNFRF9BVFRSLCBNTEZMT1dfU1BBTl9UWVBFX0FUVFIsIEdFTl9BSV9PUEVSQVRJT05fTkFNRV9BVFRSLCBNTEZMT1dfVVNFUl9BVFRSLCBNTEZMT1dfU0VTU0lPTl9BVFRSLCBNTEZMT1dfU1BBTl9UWVBFX0FHRU5ULCBNTEZMT1dfU1BBTl9UWVBFX0dFTklFLCBBcHBNbGZsb3dUcmFjZUluZm9TcGFuUHJvY2Vzc29yIH0gZnJvbSBcIi4vc3JjL3RlbGVtZXRyeS50c1wiO1xuZXhwb3J0IHR5cGUgeyBDaGF0VHVyblRlbGVtZXRyeU9wdGlvbnMsIENoYXRUcmFjZVRhZ1ZhbHVlIH0gZnJvbSBcIi4vc3JjL3RlbGVtZXRyeS50c1wiO1xuZXhwb3J0IHsgTUxGTE9XX1RSQUNFX1RBR19QUkVGSVgsIE1MRkxPV19BR0VOVF9UQUcsIE1MRkxPV19HRU5JRV9UQUcsIE1MRkxPV19PQk9fQVVUSF9UQUcsIE1MRkxPV19TUF9BVVRIX1RBRywgTUxGTE9XX0xPQ0FMX1RBRywgTUxGTE9XX0FHRU5UX1RBR19BVFRSLCBNTEZMT1dfR0VOSUVfVEFHX0FUVFIsIEFQUEtJVF9BR0VOVF9UUkFDRV9ST09UX0FUVFIsIE1MRkxPV19PQk9fQVVUSF9UQUdfQVRUUiwgTUxGTE9XX1NQX0FVVEhfVEFHX0FUVFIsIE1MRkxPV19MT0NBTF9UQUdfQVRUUiB9IGZyb20gXCIuL3NyYy90cmFjZS1hdHRyaWJ1dGVzLnRzXCI7XG5leHBvcnQgdHlwZSB7IFNjaGVtYUlzc3VlcyB9IGZyb20gXCIuL3NyYy92YWxpZGF0aW9uLnRzXCI7XG5leHBvcnQgeyBERUZBVUxUX0RBVEFCUklDS1NfV09SS1NQQUNFX1BBVEhTIH0gZnJvbSBcIi4vc3JjL3dvcmtzcGFjZXMudHNcIjtcbmV4cG9ydCB0eXBlIHsgRGF0YWJyaWNrc1dvcmtzcGFjZUNvbnRleHQsIERhdGFicmlja3NXb3Jrc3BhY2VQYXRoT3B0aW9ucywgRGF0YWJyaWNrc1dvcmtzcGFjZVBhdGgsIERhdGFicmlja3NXb3Jrc3BhY2VQYXRoVmFsdWUsIERhdGFicmlja3NXb3Jrc3BhY2VDYWNoZUZpbHRlciwgRGF0YWJyaWNrc1dvcmtzcGFjZUNhY2hlLCBXb3Jrc3BhY2VTYW5kYm94U2VsZWN0aW9uLCBEYXRhYnJpY2tzV29ya3NwYWNlT3B0aW9ucyB9IGZyb20gXCIuL3NyYy93b3Jrc3BhY2VzLnRzXCI7XG4iXX0=
|
package/lib/src/config.d.ts
CHANGED
|
@@ -16,8 +16,10 @@
|
|
|
16
16
|
import { type BasePluginConfig, type ConfigSchema } from "@databricks/appkit";
|
|
17
17
|
import { appkit } from "@dbx-tools/appkit";
|
|
18
18
|
import type { BrandContext } from "@dbx-tools/shared-core";
|
|
19
|
+
import type { FeedbackModeOption } from "@dbx-tools/shared-mastra/feedback";
|
|
19
20
|
import type { AgentConfig } from "@mastra/core/agent";
|
|
20
21
|
import type { RequestContext } from "@mastra/core/request-context";
|
|
22
|
+
import type { AnyWorkflow } from "@mastra/core/workflows";
|
|
21
23
|
import type { WorkspaceSandbox, WorkspaceSandboxResolver, WorkspaceToolsConfig } from "@mastra/core/workspace";
|
|
22
24
|
import type { PgVectorConfig, PostgresStoreConfig } from "@mastra/pg";
|
|
23
25
|
import type { AnyMastraAgentDefinition, MastraTools } from "./agents.ts";
|
|
@@ -270,6 +272,12 @@ export interface MastraPluginConfig extends BasePluginConfig {
|
|
|
270
272
|
* library; for per-agent tools set `agents[id].tools` instead.
|
|
271
273
|
*/
|
|
272
274
|
tools?: MastraTools;
|
|
275
|
+
/**
|
|
276
|
+
* Code-defined Mastra workflows registered on the hosted instance.
|
|
277
|
+
* Deferred sibling plugins may also register through the plugin export
|
|
278
|
+
* before the instance is built.
|
|
279
|
+
*/
|
|
280
|
+
workflows?: Record<string, AnyWorkflow>;
|
|
273
281
|
/**
|
|
274
282
|
* Agent id used when the client doesn't specify one (the bare,
|
|
275
283
|
* un-suffixed history / suggestions routes resolve to it).
|
|
@@ -464,24 +472,11 @@ export interface MastraPluginConfig extends BasePluginConfig {
|
|
|
464
472
|
*/
|
|
465
473
|
observability?: boolean;
|
|
466
474
|
/**
|
|
467
|
-
*
|
|
468
|
-
*
|
|
469
|
-
*
|
|
470
|
-
* - `undefined` (default, auto): enabled only when MLflow tracing is
|
|
471
|
-
* wired - an OTLP exporter endpoint is set and an MLflow experiment
|
|
472
|
-
* is named (the same signals the observability pipeline needs to
|
|
473
|
-
* ship traces to MLflow). Otherwise off, since there'd be no trace
|
|
474
|
-
* to attach feedback to.
|
|
475
|
-
* - `true`: force on. Requires `MLFLOW_EXPERIMENT_ID` or
|
|
476
|
-
* `MLFLOW_EXPERIMENT_NAME`; app startup fails when neither is configured.
|
|
477
|
-
* Use this when trace export is wired in a way the auto-probe does not
|
|
478
|
-
* recognize.
|
|
479
|
-
* - `false`: force off. No trace-id header, no feedback route, no UI.
|
|
480
|
-
*
|
|
481
|
-
* Feedback attaches to a turn's MLflow trace via the OpenTelemetry
|
|
482
|
-
* trace id the server stamps on each response; see `mlflow.ts`.
|
|
475
|
+
* Feedback destination. `auto` prefers Genie when Genie Agent Mode is
|
|
476
|
+
* available, otherwise MLflow when tracing is configured, otherwise none.
|
|
477
|
+
* Explicit `genie` or `mlflow` fails startup when unavailable.
|
|
483
478
|
*/
|
|
484
|
-
|
|
479
|
+
feedbackMode?: FeedbackModeOption;
|
|
485
480
|
/**
|
|
486
481
|
* Expose the plugin's agents (and optionally tools) as a Mastra MCP
|
|
487
482
|
* server so external MCP clients - Claude Desktop, Cursor, the Mastra
|
package/lib/src/config.js
CHANGED
|
@@ -227,9 +227,10 @@ export const MASTRA_CONFIG_SCHEMA = {
|
|
|
227
227
|
type: "boolean",
|
|
228
228
|
description: "Bridge Mastra spans into AppKit's OTel pipeline. Defaults to on only when OTEL_EXPORTER_OTLP_ENDPOINT or OTEL_EXPORTER_OTLP_TRACES_ENDPOINT is set.",
|
|
229
229
|
},
|
|
230
|
-
|
|
231
|
-
type: "
|
|
232
|
-
|
|
230
|
+
feedbackMode: {
|
|
231
|
+
type: "string",
|
|
232
|
+
enum: ["auto", "genie", "mlflow", "none"],
|
|
233
|
+
description: "Feedback destination. Auto prefers Genie in Genie Agent Mode, otherwise MLflow when configured, otherwise none. Explicit unavailable modes fail startup.",
|
|
233
234
|
},
|
|
234
235
|
mcp: {
|
|
235
236
|
type: ["boolean", "object"],
|
|
@@ -253,4 +254,4 @@ export const MASTRA_CONFIG_SCHEMA = {
|
|
|
253
254
|
},
|
|
254
255
|
},
|
|
255
256
|
};
|
|
256
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUVILE9BQU8sRUFBRSxtQkFBbUIsRUFBNEMsTUFBTSxvQkFBb0IsQ0FBQztBQUtuRyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQVU1RixPQUFPLEVBQUUsY0FBYyxFQUEyQixNQUFNLGVBQWUsQ0FBQztBQUd4RTs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLGNBQWMsQ0FBQztBQUU5Qzs7Ozs7R0FLRztBQUNILE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLGtCQUFrQixDQUFDO0FBQ3ZELDZFQUE2RTtBQUM3RSxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxtQkFBbUIsQ0FBQztBQUN6RCxrRkFBa0Y7QUFDbEYsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsa0JBQWtCLENBQUM7QUFFdkQ7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxtQkFBbUIsQ0FBQztBQUV6RDs7Ozs7R0FLRztBQUNILE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLGdCQUFnQixDQUFDO0FBRWxEOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFDSCxNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FBc0I7SUFDM0Qsc0JBQXNCO0lBQ3RCLG9CQUFvQjtJQUNwQixxQkFBcUI7SUFDckIsb0JBQW9CO0lBQ3BCLHFCQUFxQjtJQUNyQixvQkFBb0I7SUFDcEIsbUVBQW1FO0lBQ25FLGlFQUFpRTtJQUNqRSx3QkFBd0I7Q0FDekIsQ0FBQztBQVFGOzs7R0FHRztBQUNILE1BQU0sVUFBVSxzQkFBc0IsQ0FBQyxPQUFvQztJQUN6RSxPQUFPLFFBQVEsSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FB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TztRQUNELEtBQUssRUFBRTtZQUNMLElBQUksRUFBRSxRQUFRO1lBQ2QsV0FBVyxFQUNULDBJQUEwSTtTQUM3STtLQUNGO0NBQ0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUGx1Z2luIGNvbmZpZ3VyYXRpb24gdHlwZXMgYW5kIHNoYXJlZCBgUmVxdWVzdENvbnRleHRgIGtleXMuXG4gKlxuICogT3ducyB0aGUgdHlwZWQge0BsaW5rIE1hc3RyYVBsdWdpbkNvbmZpZ30gKHRoZSBwbHVnaW4ncyBzbGljZSBvZiBBcHBLaXRcbiAqIGNvbmZpZykgYW5kIHtAbGluayBNQVNUUkFfQ09ORklHX1NDSEVNQX0sIHRoZSBKU09OIFNjaGVtYSB0aGUgbWFuaWZlc3RcbiAqIHB1Ymxpc2hlcyBmb3IgaXQgc28gc2NhZmZvbGRpbmcgdG9vbHMgYW5kIGFnZW50cyBjYW4gcmVhZCB0aGUgb3B0aW9uIHNldC5cbiAqXG4gKiBQcmVjZWRlbmNlIHBlciBmaWVsZCBpcyBleHBsaWNpdCBwbHVnaW4gY29uZmlnLCB0aGVuIHRoZSBlbnZpcm9ubWVudFxuICogdmFyaWFibGUgbmFtZWQgb24gdGhlIGZpZWxkLCB0aGVuIGEgYnVpbHQtaW4gZGVmYXVsdC5cbiAqXG4gKiBLZXB0IGluIGEgbGVhZiBtb2R1bGUgc28gYHBsdWdpbi50c2AsIGBzZXJ2ZXIudHNgLCBgbW9kZWwudHNgLCBhbmRcbiAqIGBtZW1vcnkudHNgIGNhbiBpbXBvcnQgdGhlbSB3aXRob3V0IGNyZWF0aW5nIGEgY3ljbGUuXG4gKlxuICogQG1vZHVsZVxuICovXG5cbmltcG9ydCB7IGdldEV4ZWN1dGlvbkNvbnRleHQsIHR5cGUgQmFzZVBsdWdpbkNvbmZpZywgdHlwZSBDb25maWdTY2hlbWEgfSBmcm9tIFwiQGRhdGFicmlja3MvYXBwa2l0XCI7XG5pbXBvcnQgeyBhcHBraXQgfSBmcm9tIFwiQGRieC10b29scy9hcHBraXRcIjtcbmltcG9ydCB0eXBlIHsgQnJhbmRDb250ZXh0IH0gZnJvbSBcIkBkYngtdG9vbHMvc2hhcmVkLWNvcmVcIjtcbmltcG9ydCB0eXBlIHsgQWdlbnRDb25maWcgfSBmcm9tIFwiQG1hc3RyYS9jb3JlL2FnZW50XCI7XG5pbXBvcnQgdHlwZSB7IFJlcXVlc3RDb250ZXh0IH0gZnJvbSBcIkBtYXN0cmEvY29yZS9yZXF1ZXN0LWNvbnRleHRcIjtcbmltcG9ydCB7IE1BU1RSQV9SRVNPVVJDRV9JRF9LRVksIE1BU1RSQV9USFJFQURfSURfS0VZIH0gZnJvbSBcIkBtYXN0cmEvY29yZS9yZXF1ZXN0LWNvbnRleHRcIjtcbmltcG9ydCB0eXBlIHtcbiAgV29ya3NwYWNlU2FuZGJveCxcbiAgV29ya3NwYWNlU2FuZGJveFJlc29sdmVyLFxuICBXb3Jrc3BhY2VUb29sc0NvbmZpZyxcbn0gZnJvbSBcIkBtYXN0cmEvY29yZS93b3Jrc3BhY2VcIjtcbmltcG9ydCB0eXBlIHsgUGdWZWN0b3JDb25maWcsIFBvc3RncmVzU3RvcmVDb25maWcgfSBmcm9tIFwiQG1hc3RyYS9wZ1wiO1xuXG5pbXBvcnQgdHlwZSB7IEFueU1hc3RyYUFnZW50RGVmaW5pdGlvbiwgTWFzdHJhVG9vbHMgfSBmcm9tIFwiLi9hZ2VudHMudHNcIjtcbmltcG9ydCB0eXBlIHsgR2VuaWVTcGFjZXNDb25maWcgfSBmcm9tIFwiLi9nZW5pZS50c1wiO1xuaW1wb3J0IHsgSURFTlRJVFlfTU9ERVMsIHR5cGUgTWFzdHJhSWRlbnRpdHlNb2RlIH0gZnJvbSBcIi4vaWRlbnRpdHkudHNcIjtcbmltcG9ydCB0eXBlIHsgTG9jYWxTa2lsbE1vdW50LCBSZW1vdGVTa2lsbHNPcHRpb24gfSBmcm9tIFwiLi9yZW1vdGUtc2tpbGxzLnRzXCI7XG5cbi8qKlxuICogYFJlcXVlc3RDb250ZXh0YCBrZXkgdW5kZXIgd2hpY2gge0BsaW5rIE1hc3RyYVNlcnZlcn0gc3RvcmVzIHRoZVxuICogcmVzb2x2ZWQgQXBwS2l0IHVzZXIuIGBtb2RlbC50c2AgcmVhZHMgaXQgdG8gbWludCB1c2VyLXNjb3BlZFxuICogRGF0YWJyaWNrcyB0b2tlbnMuXG4gKi9cbmV4cG9ydCBjb25zdCBNQVNUUkFfVVNFUl9LRVkgPSBcIm1hc3RyYV9fdXNlclwiO1xuXG4vKipcbiAqIGBSZXF1ZXN0Q29udGV4dGAga2V5cyBmb3IgQXBwS2l0IHVzZXIgbWV0YWRhdGEgc3RhbXBlZCBieVxuICoge0BsaW5rIE1hc3RyYVNlcnZlcn0uIFN1cmZhY2VkIGFzIHRyYWNlIG1ldGFkYXRhIHZpYVxuICoge0BsaW5rIFRSQUNFX1JFUVVFU1RfQ09OVEVYVF9LRVlTfSBzbyB0cmFjZXMgYXJlIGZpbHRlcmFibGUgYnkgd2hvXG4gKiBpc3N1ZWQgdGhlIHJlcXVlc3Qgd2l0aG91dCBsZWFraW5nIHRoZSBmdWxsIHVzZXIgb2JqZWN0LlxuICovXG5leHBvcnQgY29uc3QgTUFTVFJBX1VTRVJfTkFNRV9LRVkgPSBcIm1hc3RyYV9fdXNlck5hbWVcIjtcbi8qKiBSZXF1ZXN0LWNvbnRleHQga2V5IGNvbnRhaW5pbmcgdGhlIGF1dGhlbnRpY2F0ZWQgdXNlcidzIGVtYWlsIGFkZHJlc3MuICovXG5leHBvcnQgY29uc3QgTUFTVFJBX1VTRVJfRU1BSUxfS0VZID0gXCJtYXN0cmFfX3VzZXJFbWFpbFwiO1xuLyoqIFJlcXVlc3QtY29udGV4dCBrZXkgaWRlbnRpZnlpbmcgdGhlIERhdGFicmlja3MgY3JlZGVudGlhbCB1c2VkIGJ5IHRoZSB0dXJuLiAqL1xuZXhwb3J0IGNvbnN0IE1BU1RSQV9BVVRIX01PREVfS0VZID0gXCJtYXN0cmFfX2F1dGhNb2RlXCI7XG5cbi8qKlxuICogYFJlcXVlc3RDb250ZXh0YCBrZXkgZm9yIHRoZSBwZXItSFRUUC1yZXF1ZXN0IGlkIHN0YW1wZWQgYnlcbiAqIHtAbGluayBNYXN0cmFTZXJ2ZXJ9LiBSZWFkcyBgWC1SZXF1ZXN0LUlkYCBmcm9tIHRoZSBpbmNvbWluZ1xuICogaGVhZGVycyB3aGVuIHByZXNlbnQgKHNvIGFuIHVwc3RyZWFtIGxvYWQgYmFsYW5jZXIgLyBBUEkgZ2F0ZXdheVxuICogY2FuIGtlZXAgaXRzIHRyYWNlIGNvcnJlbGF0aW9uKSwgZmFsbHMgYmFjayB0byBhIGZyZXNobHkgbWludGVkXG4gKiBVVUlELiBFY2hvZWQgYmFjayBvbiB0aGUgcmVzcG9uc2UgYW5kIHN1cmZhY2VkIG9uIGV2ZXJ5IHNwYW4gdmlhXG4gKiB7QGxpbmsgVFJBQ0VfUkVRVUVTVF9DT05URVhUX0tFWVN9IHNvIGxvZ3MgYW5kIHRyYWNlcyBzaGFyZSBhXG4gKiBqb2luIGtleS5cbiAqL1xuZXhwb3J0IGNvbnN0IE1BU1RSQV9SRVFVRVNUX0lEX0tFWSA9IFwibWFzdHJhX19yZXF1ZXN0SWRcIjtcblxuLyoqXG4gKiBgUmVxdWVzdENvbnRleHRgIGtleSBmb3IgT0F1dGggc2NvcGVzIHBhcnNlZCBmcm9tIHRoZSBmb3J3YXJkZWRcbiAqIGFjY2VzcyB0b2tlbiBieSB7QGxpbmsgTWFzdHJhU2VydmVyLmNvbmZpZ3VyZVJlcXVlc3RDb250ZXh0U2NvcGVzfS5cbiAqIFdvcmtzcGFjZSBtb3VudHMgdGhhdCB0b3VjaCBEYXRhYnJpY2tzIHdvcmtzcGFjZSBmaWxlcyByZXF1aXJlXG4gKiBgd29ya3NwYWNlYCBvciBgYWxsLWFwaXNgIGluIHRoaXMgbGlzdC5cbiAqL1xuZXhwb3J0IGNvbnN0IE1BU1RSQV9TQ09QRVNfS0VZID0gXCJtYXN0cmFfX3Njb3Blc1wiO1xuXG4vKipcbiAqIENhbm9uaWNhbCBsaXN0IG9mIGBSZXF1ZXN0Q29udGV4dGAga2V5cyB3ZSB3YW50IE1hc3RyYSB0byBleHRyYWN0XG4gKiBhcyBtZXRhZGF0YSBvbiBldmVyeSBvYnNlcnZhYmlsaXR5IHNwYW4gKGFnZW50IHJ1bnMsIG1vZGVsIGNhbGxzLFxuICogdG9vbCBpbnZvY2F0aW9ucywgd29ya2Zsb3cgc3RlcHMpLlxuICpcbiAqIE1pcnJvcnMge0BsaW5rIGh0dHBzOi8vbWFzdHJhLmFpL2RvY3Mvb2JzZXJ2YWJpbGl0eS90cmFjaW5nL292ZXJ2aWV3I2F1dG9tYXRpYy1tZXRhZGF0YS1mcm9tLXJlcXVlc3Rjb250ZXh0fTpcbiAqIHBhc3NlZCB2ZXJiYXRpbSBpbnRvIGBPYnNlcnZhYmlsaXR5LmNvbmZpZ3NbKl0ucmVxdWVzdENvbnRleHRLZXlzYCxcbiAqIHNvIGFueSBrZXkgbGlzdGVkIGhlcmUgaXMgcmVhZCBmcm9tIGBSZXF1ZXN0Q29udGV4dGAgYXQgdHJhY2VcbiAqIHN0YXJ0IGFuZCBhdHRhY2hlZCBhcyBzY2FsYXIgc3BhbiBtZXRhZGF0YS4gS2VlcCB0aGUgc2V0IHRvIHBsYWluXG4gKiBzY2FsYXJzIC0gbmV2ZXIgaW5jbHVkZSB7QGxpbmsgTUFTVFJBX1VTRVJfS0VZfSAoaXQgY2FycmllcyB0aGVcbiAqIGZ1bGwgQXBwS2l0IGV4ZWN1dGlvbiBjb250ZXh0IHdpdGggYSBgV29ya3NwYWNlQ2xpZW50YCByZWZlcmVuY2UpLlxuICpcbiAqIE9yZGVyIGlzIHB1cmVseSBjb3NtZXRpYzsgTWFzdHJhIGRlLWR1cGVzIGludGVybmFsbHkuXG4gKi9cbmV4cG9ydCBjb25zdCBUUkFDRV9SRVFVRVNUX0NPTlRFWFRfS0VZUzogcmVhZG9ubHkgc3RyaW5nW10gPSBbXG4gIE1BU1RSQV9SRVNPVVJDRV9JRF9LRVksXG4gIE1BU1RSQV9USFJFQURfSURfS0VZLFxuICBNQVNUUkFfUkVRVUVTVF9JRF9LRVksXG4gIE1BU1RSQV9VU0VSX05BTUVfS0VZLFxuICBNQVNUUkFfVVNFUl9FTUFJTF9LRVksXG4gIE1BU1RSQV9BVVRIX01PREVfS0VZLFxuICAvLyBNb2RlbCBvdmVycmlkZSBrZXkgaXMgb3duZWQgYnkgYHNlcnZpbmcudHNgOyBzcGVsbGVkIGlubGluZSBoZXJlXG4gIC8vIHNvIHRoaXMgbW9kdWxlIHN0YXlzIGxlYWYtbGV2ZWwgKG5vIGN5Y2xlcyB3aXRoIGBzZXJ2aW5nLnRzYCkuXG4gIFwibWFzdHJhX19tb2RlbF9vdmVycmlkZVwiLFxuXTtcblxuLyoqIEFwcEtpdCBleGVjdXRpb24gY29udGV4dCBwbHVzIHRoZSBjYW5vbmljYWwgdXNlciBpZC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVXNlciB7XG4gIGlkOiBzdHJpbmc7XG4gIGV4ZWN1dGlvbkNvbnRleHQ6IGFwcGtpdC5FeGVjdXRpb25Db250ZXh0TGlrZTtcbn1cblxuLyoqXG4gKiBDYW5vbmljYWwgaWRlbnRpdHkgZm9yIGFuIEFwcEtpdCBleGVjdXRpb24gY29udGV4dDogdGhlIE9CTyB1c2VyIGlkIG9uIGFcbiAqIHVzZXItc2NvcGVkIGNhbGwsIHRoZSBzZXJ2aWNlIHByaW5jaXBhbCBpZCBvdGhlcndpc2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBleGVjdXRpb25Db250ZXh0VXNlcklkKGNvbnRleHQ6IGFwcGtpdC5FeGVjdXRpb25Db250ZXh0TGlrZSk6IHN0cmluZyB7XG4gIHJldHVybiBcInVzZXJJZFwiIGluIGNvbnRleHQgPyBjb250ZXh0LnVzZXJJZCA6IGNvbnRleHQuc2VydmljZVVzZXJJZDtcbn1cblxuLyoqXG4gKiBXaG8gYSB0dXJuIGlzIEFUVFJJQlVURUQgdG8sIHdoaWNoIGlzIG5vdCBhbHdheXMgd2hvc2UgRGF0YWJyaWNrcyBjcmVkZW50aWFsXG4gKiBydW5zIGl0LiBBbiBPQk8gY29udGV4dCdzIG93biB1c2VyIGlkIGlzIGF1dGhvcml0YXRpdmUuIFVuZGVyIHRoZSBzZXJ2aWNlXG4gKiBwcmluY2lwYWwsIGV2ZXJ5IGNhbGxlciBzaGFyZXMgb25lIGNyZWRlbnRpYWwsIHNvIHRoZSBmb3J3YXJkZWQgdXNlciBpZCBpc1xuICogd2hhdCBrZWVwcyBtZW1vcnkgdGhyZWFkcyBhbmQgcGVyLXVzZXIgY2FjaGUgbmFtZXNwYWNlcyBkaXN0aW5jdDsgdGhlIHNlcnZpY2VcbiAqIHByaW5jaXBhbCBpZCBpcyB0aGUgZmxvb3Igd2hlbiBubyB1c2VyIHdhcyBmb3J3YXJkZWQuXG4gKlxuICogVGhpcyBydWxlIGhhcyB0byBiZSBpZGVudGljYWwgZXZlcnl3aGVyZSBhIGNhY2hlIGtleSBpcyBidWlsdCwgc28gYm90aCB0aGVcbiAqIHdyaXRlIHNpZGUgKHRoZSBgUmVxdWVzdENvbnRleHRgIHVzZXIgc3RhbXBlZCBieSBgc3RhbXBSZXF1ZXN0Q29udGV4dFVzZXJgKVxuICogYW5kIHRoZSByZWFkIHNpZGUgKHRoZSBwbHVnaW4ncyBvd24gQXBwS2l0IHJvdXRlcywgd2hpY2ggaGF2ZSBhIHJlcXVlc3QgYnV0XG4gKiBubyBgUmVxdWVzdENvbnRleHRgKSBkZXJpdmUgdGhlaXIga2V5IGZyb20gdGhpcyBvbmUgZnVuY3Rpb24uIFdoZW4gdGhlIHR3b1xuICogZGlzYWdyZWVkLCBhIGNoYXJ0IHdyaXR0ZW4gdW5kZXIgdGhlIGZvcndhcmRlZCB1c2VyIGlkIHdhcyByZWFkIGJhY2sgdW5kZXJcbiAqIHRoZSBzZXJ2aWNlIHByaW5jaXBhbCBpZCBhbmQgdGhlIGVtYmVkIHJvdXRlIGFuc3dlcmVkIDQwNCwgd2hpY2ggdGhlIGNoYXQgVUlcbiAqIHJlbmRlcnMgYXMgYW4gZXhwaXJlZCBjaGFydC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGF0dHJpYnV0ZWRVc2VySWQoXG4gIGV4ZWN1dGlvbkNvbnRleHQ6IGFwcGtpdC5FeGVjdXRpb25Db250ZXh0TGlrZSxcbiAgZm9yd2FyZGVkVXNlcklkPzogc3RyaW5nLFxuKTogc3RyaW5nIHtcbiAgaWYgKFwiaXNVc2VyQ29udGV4dFwiIGluIGV4ZWN1dGlvbkNvbnRleHQpIHJldHVybiBleGVjdXRpb25Db250ZXh0VXNlcklkKGV4ZWN1dGlvbkNvbnRleHQpO1xuICByZXR1cm4gZm9yd2FyZGVkVXNlcklkID8/IGV4ZWN1dGlvbkNvbnRleHRVc2VySWQoZXhlY3V0aW9uQ29udGV4dCk7XG59XG5cbi8qKlxuICogSWRlbnRpdHkgZXZlcnkgcGVyLXVzZXIgY2FjaGUgZW50cnkgaXMgbmFtZXNwYWNlZCB1bmRlciwgc28gYW4gT0JPIHJlc3VsdFxuICogY2Fubm90IGJlIHJlYWQgYmFjayBieSBhbm90aGVyIGNhbGxlci5cbiAqXG4gKiBQcmVmZXJzIHRoZSB7QGxpbmsgVXNlcn0gdGhhdCB7QGxpbmsgTWFzdHJhU2VydmVyfSBzdGFtcHMgb24gdGhlIHJlcXVlc3RcbiAqIGNvbnRleHQsIHdob3NlIGlkIGFscmVhZHkgZm9sbG93cyB7QGxpbmsgYXR0cmlidXRlZFVzZXJJZH0uIFRoZSBNQ1AgdHJhbnNwb3J0XG4gKiByb3V0ZXMgZG8gbm90IHRocmVhZCB0aGF0IGNvbnRleHQgaW50byB0b29sIGV4ZWN1dGlvbiwgc28gdGhvc2UgZmFsbCBiYWNrIHRvXG4gKiB0aGUgYW1iaWVudCBleGVjdXRpb24gY29udGV4dCAodGhlIGFjdGl2ZSBPQk8gc2NvcGUsIG9yIHRoZSBzZXJ2aWNlXG4gKiBwcmluY2lwYWwpLiBBIGNhbGxlciBob2xkaW5nIGFuIGV4cHJlc3MgcmVxdWVzdCBzaG91bGQgYnVpbGQgaXRzIGtleSBmcm9tXG4gKiB7QGxpbmsgYXR0cmlidXRlZFVzZXJJZH0gaW5zdGVhZCwgc28gdGhlIGZvcndhcmRlZCB1c2VyIGlzIG5vdCBsb3N0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZVVzZXJLZXkocmVxdWVzdENvbnRleHQ/OiBSZXF1ZXN0Q29udGV4dCk6IHN0cmluZyB7XG4gIGNvbnN0IHVzZXIgPSByZXF1ZXN0Q29udGV4dD8uZ2V0KE1BU1RSQV9VU0VSX0tFWSkgYXMgVXNlciB8IHVuZGVmaW5lZDtcbiAgcmV0dXJuIHVzZXI/LmlkID8/IGV4ZWN1dGlvbkNvbnRleHRVc2VySWQoZ2V0RXhlY3V0aW9uQ29udGV4dCgpKTtcbn1cblxuLyoqIFBnVmVjdG9yIGNvbmZpZyB3aXRoIGFuIG9wdGlvbmFsIE1hc3RyYSBzdG9yZSBpZC4gKi9cbmV4cG9ydCB0eXBlIE1hc3RyYU1lbW9yeUNvbmZpZyA9IFBnVmVjdG9yQ29uZmlnICYge1xuICBpZD86IHN0cmluZztcbn07XG5cbi8qKiBNYXN0cmEgbmF0aXZlIHdvcmtzcGFjZSBza2lsbC1zZWFyY2ggY29uZmlndXJhdGlvbi4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWFzdHJhV29ya3NwYWNlU2tpbGxzQ29uZmlnIHtcbiAgLyoqIE1heGltdW0gc2tpbGwgbWF0Y2hlcyByZXR1cm5lZCBieSBvbmUgc2VhcmNoLiBEZWZhdWx0cyB0byA1LiAqL1xuICB0b3BLPzogbnVtYmVyO1xuICAvKiogTWluaW11bSBCTTI1IHJlbGV2YW5jZSBzY29yZS4gRGVmYXVsdHMgdG8gMC4xLiAqL1xuICBtaW5TY29yZT86IG51bWJlcjtcbiAgLyoqIExvYWRlZC1za2lsbCB0aHJlYWQtc3RhdGUgVFRMIGluIG1pbGxpc2Vjb25kcy4gRGVmYXVsdHMgdG8gb25lIGhvdXIuICovXG4gIHR0bE1zPzogbnVtYmVyO1xufVxuXG4vKiogTmF0aXZlIE1hc3RyYSBDb2RlIE1vZGUgc2V0dGluZ3MgZm9yIHNhbmRib3hlZCBtdWx0aS10b29sIG9yY2hlc3RyYXRpb24uICovXG5leHBvcnQgaW50ZXJmYWNlIE1hc3RyYUNvZGVNb2RlQ29uZmlnIHtcbiAgLyoqIEdlbmVyYXRlZCBvcmNoZXN0cmF0aW9uIHRvb2wgaWQuIERlZmF1bHRzIHRvIGBleGVjdXRlX3R5cGVzY3JpcHRgLiAqL1xuICBpZD86IHN0cmluZztcbiAgLyoqIE1heGltdW0gb3JjaGVzdHJhdGlvbiBwcm9ncmFtIHJ1bnRpbWUgaW4gbWlsbGlzZWNvbmRzLiBEZWZhdWx0cyB0byAzMCBzZWNvbmRzLiAqL1xuICB0aW1lb3V0PzogbnVtYmVyO1xufVxuXG4vKipcbiAqIEZpbmUtZ3JhaW5lZCBjb250cm9sIGZvciB0aGUgb3B0aW9uYWwgTUNQIHNlcnZlciBleHBvc3VyZVxuICogKHtAbGluayBNYXN0cmFQbHVnaW5Db25maWcubWNwfSkuIEV2ZXJ5IGZpZWxkIGlzIG9wdGlvbmFsOyB0aGUgb2JqZWN0XG4gKiBmb3JtIG9ubHkgbmVlZHMgdG8gc2V0IHdoYXQgZGlmZmVycyBmcm9tIHRoZSBkZWZhdWx0cy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNYXN0cmFNY3BDb25maWcge1xuICAvKipcbiAgICogU2VydmVyIGlkIHVzZWQgaW4gdGhlIHJvdXRlIHBhdGggKGAvbWNwLzxzZXJ2ZXJJZD4vLi4uYCkgYW5kIGFzIHRoZVxuICAgKiBNQ1AgcmVnaXN0cnkgaWQuIERlZmF1bHRzIHRvIHRoZSBwbHVnaW4ncyByZWdpc3RlcmVkIG5hbWUuXG4gICAqL1xuICBzZXJ2ZXJJZD86IHN0cmluZztcbiAgLyoqIERpc3BsYXkgbmFtZSBhZHZlcnRpc2VkIG92ZXIgTUNQLiBEZWZhdWx0cyB0byBgXCI8ZGlzcGxheU5hbWU+IE1DUFwiYC4gKi9cbiAgbmFtZT86IHN0cmluZztcbiAgLyoqIFNlbWFudGljIHZlcnNpb24gYWR2ZXJ0aXNlZCBvdmVyIE1DUC4gRGVmYXVsdHMgdG8gYFwiMS4wLjBcImAuICovXG4gIHZlcnNpb24/OiBzdHJpbmc7XG4gIC8qKiBPcHRpb25hbCBodW1hbi1yZWFkYWJsZSBkZXNjcmlwdGlvbiBhZHZlcnRpc2VkIG92ZXIgTUNQLiAqL1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgLyoqXG4gICAqIEV4cG9zZSBldmVyeSByZWdpc3RlcmVkIGFnZW50IGFzIGFuIGBhc2tfPGFnZW50SWQ+YCBNQ1AgdG9vbC5cbiAgICogRGVmYXVsdHMgdG8gYHRydWVgIC0gdGhpcyBpcyB0aGUgXCJsZXZlcmFnZSB0aGUgTWFzdHJhIGFnZW50cyBvdmVyXG4gICAqIE1DUFwiIGJlaGF2aW9yIG1vc3QgY2FsbGVycyB3YW50LlxuICAgKi9cbiAgYWdlbnRzPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEFsc28gZXhwb3NlIHRoZSBwbHVnaW4ncyBhbWJpZW50IHRvb2xzICh0aGUgYnVpbHQtaW4gYHJlbmRlcl9kYXRhYFxuICAgKiBwbHVzIGFueXRoaW5nIGluIGBjb25maWcudG9vbHNgKSBhcyBNQ1AgdG9vbHMuIERlZmF1bHRzIHRvIGBmYWxzZWA6XG4gICAqIHRoZSBhbWJpZW50IHRvb2xzIGFzc3VtZSBhbiBpbi1wcm9jZXNzIGNoYXQgdHVybiAodGhleSBwdWJsaXNoXG4gICAqIHdyaXRlciBldmVudHMgdGhlIGNoYXQgVUkgY29uc3VtZXMpLCBzbyB0aGV5IGFyZW4ndCB1c2VmdWwgdG8gYVxuICAgKiBzdGFuZGFsb25lIE1DUCBjbGllbnQuIFR1cm4gdGhpcyBvbiBvbmx5IHdoZW4gdGhvc2UgdG9vbHMgYXJlIHNhZmVcbiAgICogdG8gY2FsbCBvdXQtb2YtYmFuZC5cbiAgICovXG4gIHRvb2xzPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEV4dHJhIHRvb2xzIHRvIGV4cG9zZSBvdmVyIE1DUCBiZXlvbmQgdGhlIGFnZW50IC8gYW1iaWVudCBzZXRzLlxuICAgKiBVc2UgdGhpcyBmb3IgdG9vbHMgd3JpdHRlbiBzcGVjaWZpY2FsbHkgZm9yIE1DUCBjb25zdW1lcnMuXG4gICAqL1xuICBleHRyYVRvb2xzPzogTWFzdHJhVG9vbHM7XG59XG5cbi8qKiBDb25maWd1cmF0aW9uIGFjY2VwdGVkIGJ5IHRoZSBNYXN0cmEgQXBwS2l0IHBsdWdpbi4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWFzdHJhUGx1Z2luQ29uZmlnIGV4dGVuZHMgQmFzZVBsdWdpbkNvbmZpZyB7XG4gIC8qKlxuICAgKiBSdW4gdHVybnMgdGhyb3VnaCBNYXN0cmEncyBldmVudGVkIGR1cmFibGUgYWdlbnQgc28gZXhlY3V0aW9uIGNvbnRpbnVlc1xuICAgKiBhZnRlciBhIGJyb3dzZXIgZGlzY29ubmVjdCBhbmQgY2FuIGJlIG9ic2VydmVkIGFnYWluIGJ5IHJ1biBpZC4gRGVmYXVsdHNcbiAgICogdG8gYHRydWVgLlxuICAgKi9cbiAgYmFja2dyb3VuZFR1cm5zPzogYm9vbGVhbjtcbiAgLyoqIEFJIFNESyBwcm92aWRlci1vcHRpb25zIG5hbWVzcGFjZS4gRGVmYXVsdHMgdG8gYFwib3BlbmFpXCJgOyBubyBlbnYgZmFsbGJhY2suICovXG4gIHByb3ZpZGVySWQ/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBQb3N0Z3Jlc1N0b3JlIGZvciBNYXN0cmEgdGhyZWFkcy9tZXNzYWdlcy4gYHRydWVgIGNhcHR1cmVzIHRoZVxuICAgKiBgbGFrZWJhc2VgIHBsdWdpbidzIGV4aXN0aW5nIHNlcnZpY2UtcHJpbmNpcGFsIHBvb2w7IGFuIG9iamVjdCBvcGVucyBhXG4gICAqIHNlcGFyYXRlbHkgY29uZmlndXJlZCBzdG9yZS5cbiAgICovXG4gIHN0b3JhZ2U/OiBib29sZWFuIHwgUG9zdGdyZXNTdG9yZUNvbmZpZztcbiAgLyoqXG4gICAqIFBnVmVjdG9yIHN0b3JlIGZvciBNYXN0cmEgbWVtb3J5IHJlY2FsbC4gYHRydWVgIGNhcHR1cmVzIHRoZVxuICAgKiBgbGFrZWJhc2VgIHBsdWdpbidzIGV4aXN0aW5nIHNlcnZpY2UtcHJpbmNpcGFsIHBvb2w7IGFuIG9iamVjdCBvcGVucyBhXG4gICAqIHNlcGFyYXRlbHkgY29uZmlndXJlZCBzdG9yZS5cbiAgICovXG4gIG1lbW9yeT86IGJvb2xlYW4gfCBNYXN0cmFNZW1vcnlDb25maWc7XG4gIC8qKlxuICAgKiBFeHBvc2UgZXhlY3V0YWJsZSB0b29scyBhdmFpbGFibGUgdG8gdGhlIGN1cnJlbnQgcmVxdWVzdCB0aHJvdWdoIG5hdGl2ZVxuICAgKiBNYXN0cmEgQ29kZSBNb2RlLiBEZWZhdWx0cyBvbiB3aGVuZXZlciB0aGUgcmVxdWVzdCBoYXMgZXhlY3V0YWJsZSB0b29scy5cbiAgICogVGhlIHBsdWdpbiBzZWxlY3RzIE1hc3RyYSdzIGlzb2xhdGVkLXZtIHRyYW5zcG9ydCBvbmNlIGR1cmluZyBzdGFydHVwIGFuZFxuICAgKiBmYWxscyBiYWNrIHRvIE1hc3RyYSBRdWlja0pTIHdoZW4gdGhlIG5hdGl2ZSB0cmFuc3BvcnQgaXMgdW5hdmFpbGFibGUuXG4gICAqIFRoZXNlIHRyYW5zcG9ydHMgZG8gbm90IGV4ZWN1dGUgdGhyb3VnaCB0aGUgd29ya3NwYWNlIGNvbW1hbmQgc2FuZGJveDtcbiAgICogU1NIIGlzIHVzZWQgb25seSB3aGVuIGFuIGV4cG9zZWQgU1NILWJhY2tlZCB0b29sIGlzIGNhbGxlZC4gU2V0IGBmYWxzZWAgdG9cbiAgICogb3B0IG91dC5cbiAgICovXG4gIGNvZGVNb2RlPzogYm9vbGVhbiB8IE1hc3RyYUNvZGVNb2RlQ29uZmlnO1xuICAvKipcbiAgICogU2FuZGJveCBmb3IgYXV0by1jcmVhdGVkIGFnZW50IHdvcmtzcGFjZXMuIERlZmF1bHRzIHRvIE1vbnR5LiBgZmFsc2VgXG4gICAqIGRpc2FibGVzIGNvbW1hbmQgZXhlY3V0aW9uOyBgdHJ1ZWAgb3IgYFwibW9udHlcImAgc2VsZWN0cyBNb250eTsgYW4gZXhwbGljaXRcbiAgICogTWFzdHJhIHNhbmRib3ggb3IgcmVzb2x2ZXIgc3VwcGxpZXMgYSByZW1vdGUgdHJhbnNwb3J0LiBBbiBhZ2VudCB3aXRoIGFuXG4gICAqIGV4cGxpY2l0IGN1c3RvbSBgd29ya3NwYWNlYCBrZWVwcyB0aGF0IHdvcmtzcGFjZSBhbmQgaXRzIHNhbmRib3guXG4gICAqL1xuICBzYW5kYm94PzogYm9vbGVhbiB8IFwibW9udHlcIiB8IFdvcmtzcGFjZVNhbmRib3ggfCBXb3Jrc3BhY2VTYW5kYm94UmVzb2x2ZXI7XG4gIC8qKiBBZGQgdXNlci1zY29wZWQgYC90bXBgIG9ubHkgd2hlbiBubyBjb25maWd1cmVkIHdvcmtzcGFjZSBwYXRoIG1vdW50cyB3cml0YWJsZS4gKi9cbiAgd29ya3NwYWNlRmFsbGJhY2tUb1RtcD86IGJvb2xlYW47XG4gIC8qKiBOYXRpdmUgTWFzdHJhIHdvcmtzcGFjZSB0b29sIGF2YWlsYWJpbGl0eSwgYXBwcm92YWwsIGFuZCBob29rIGNvbmZpZ3VyYXRpb24uICovXG4gIHdvcmtzcGFjZVRvb2xzPzogV29ya3NwYWNlVG9vbHNDb25maWc7XG4gIC8qKlxuICAgKiBVc2UgTWFzdHJhJ3MgbmF0aXZlIHdvcmtzcGFjZSBza2lsbCBtYW5hZ2VyLiBEZWZhdWx0cyB0byB0cnVlLiBQYXNzIGFuXG4gICAqIG9iamVjdCB0byB0dW5lIG9uLWRlbWFuZCBkaXNjb3ZlcnkgYW5kIGxvYWRlZC1za2lsbCBzdGF0ZS5cbiAgICovXG4gIHdvcmtzcGFjZVNraWxscz86IGJvb2xlYW4gfCBNYXN0cmFXb3Jrc3BhY2VTa2lsbHNDb25maWc7XG4gIC8qKlxuICAgKiBDb2RlLWRlZmluZWQgYWdlbnRzLiBBY2NlcHRzIHRocmVlIHNoYXBlcyBmb3IgY29udmVuaWVuY2U6XG4gICAqXG4gICAqIC0gKipSZWNvcmQqKjogYHsgYW5hbHlzdDogZGVmLCBoZWxwZXI6IGRlZiB9YCAtIGtleXMgYmVjb21lIHRoZVxuICAgKiAgIHJlZ2lzdGVyZWQgaWRzIGFuZCB0aGUgZmlyc3Qga2V5IGlzIHRoZSBkZWZhdWx0LlxuICAgKiAtICoqU2luZ2xlIGRlZmluaXRpb24qKjogYGRlZmAgLSByZWdpc3RlcmVkIHVuZGVyXG4gICAqICAgYHNsdWdpZnkoZGVmLm5hbWUpYCAob3IgYFwiZGVmYXVsdFwiYCB3aGVuIGBuYW1lYCBpcyBvbWl0dGVkKSBhbmRcbiAgICogICBhdXRvbWF0aWNhbGx5IG1hcmtlZCBhcyB0aGUgZGVmYXVsdCBhZ2VudC5cbiAgICogLSAqKkFycmF5Kio6IGBbZGVmMSwgZGVmMl1gIC0gZWFjaCByZWdpc3RlcmVkIHVuZGVyXG4gICAqICAgYHNsdWdpZnkoZGVmLm5hbWUpYCAob3IgYGFnZW50XyR7aX1gIHdoZW4gYG5hbWVgIGlzIG9taXR0ZWQpO1xuICAgKiAgIHRoZSBmaXJzdCBlbnRyeSBpcyB0aGUgZGVmYXVsdC5cbiAgICpcbiAgICogRWFjaCBlbnRyeSBiZWNvbWVzIGEgTWFzdHJhIGBBZ2VudGAgcmVhY2hhYmxlIGF0XG4gICAqIGAvYXBpLzxwbHVnaW4+L3JvdXRlL2NoYXQvPGlkPmAgKHRoZSBjaGF0IHJvdXRlIGFsc28gbWF0Y2hlc1xuICAgKiBgOmFnZW50SWRgKS4gV2hlbiBgYWdlbnRzYCBpcyBvbWl0dGVkIGVudGlyZWx5LCB0aGUgcGx1Z2luXG4gICAqIHJlZ2lzdGVycyBhIHNpbmdsZSBidWlsdC1pbiBgZGVmYXVsdGAgYW5hbHlzdCBzbyB0aGUgYmFyZVxuICAgKiBgbWFzdHJhKClgIGNhbGwgc3RpbGwgbW91bnRzIGEgd29ya2luZyBjaGF0IGVuZHBvaW50LlxuICAgKlxuICAgKiBAZXhhbXBsZSBTaW5nbGUtYWdlbnQgc2hvcnRoYW5kXG4gICAqIGBgYHRzXG4gICAqIG1hc3RyYSh7XG4gICAqICAgYWdlbnRzOiBjcmVhdGVBZ2VudCh7IGluc3RydWN0aW9uczogXCIuLi5cIiB9KSxcbiAgICogfSk7XG4gICAqIGBgYFxuICAgKlxuICAgKiBAZXhhbXBsZSBBcnJheVxuICAgKiBgYGB0c1xuICAgKiBtYXN0cmEoe1xuICAgKiAgIGFnZW50czogW1xuICAgKiAgICAgY3JlYXRlQWdlbnQoeyBuYW1lOiBcImFuYWx5c3RcIiwgaW5zdHJ1Y3Rpb25zOiBcIi4uLlwiIH0pLFxuICAgKiAgICAgY3JlYXRlQWdlbnQoeyBuYW1lOiBcImhlbHBlclwiLCBpbnN0cnVjdGlvbnM6IFwiLi4uXCIgfSksXG4gICAqICAgXSxcbiAgICogfSk7XG4gICAqIGBgYFxuICAgKlxuICAgKiBAZXhhbXBsZSBSZWNvcmQgKGV4cGxpY2l0IGlkcylcbiAgICogYGBgdHNcbiAgICogbWFzdHJhKHtcbiAgICogICBhZ2VudHM6IHtcbiAgICogICAgIGFuYWx5c3Q6IGNyZWF0ZUFnZW50KHsgaW5zdHJ1Y3Rpb25zOiBcIi4uLlwiIH0pLFxuICAgKiAgICAgaGVscGVyOiBjcmVhdGVBZ2VudCh7IGluc3RydWN0aW9uczogXCIuLi5cIiB9KSxcbiAgICogICB9LFxuICAgKiAgIGRlZmF1bHRBZ2VudDogXCJhbmFseXN0XCIsXG4gICAqIH0pO1xuICAgKiBgYGBcbiAgICovXG4gIGFnZW50cz86XG4gICAgfCBSZWNvcmQ8c3RyaW5nLCBBbnlNYXN0cmFBZ2VudERlZmluaXRpb24+XG4gICAgfCBBbnlNYXN0cmFBZ2VudERlZmluaXRpb25cbiAgICB8IEFueU1hc3RyYUFnZW50RGVmaW5pdGlvbltdO1xuICAvKipcbiAgICogQW1iaWVudCB0b29scyBzcHJlYWQgaW50byBldmVyeSByZWdpc3RlcmVkIGFnZW50J3MgdG9vbHMgcmVjb3JkO1xuICAgKiBwZXItYWdlbnQgdG9vbHMgd2luIG9uIGtleSBjb2xsaXNpb24uIFVzZSBmb3IgYSBzbWFsbCBzaGFyZWRcbiAgICogbGlicmFyeTsgZm9yIHBlci1hZ2VudCB0b29scyBzZXQgYGFnZW50c1tpZF0udG9vbHNgIGluc3RlYWQuXG4gICAqL1xuICB0b29scz86IE1hc3RyYVRvb2xzO1xuICAvKipcbiAgICogQWdlbnQgaWQgdXNlZCB3aGVuIHRoZSBjbGllbnQgZG9lc24ndCBzcGVjaWZ5IG9uZSAodGhlIGJhcmUsXG4gICAqIHVuLXN1ZmZpeGVkIGhpc3RvcnkgLyBzdWdnZXN0aW9ucyByb3V0ZXMgcmVzb2x2ZSB0byBpdCkuXG4gICAqIERlZmF1bHRzIHRvIHRoZSBmaXJzdCBrZXkgaW4gYGFnZW50c2AgKG9yIGBcImRlZmF1bHRcImAgd2hlblxuICAgKiBgYWdlbnRzYCBpcyBvbWl0dGVkKS4gTXVzdCBtYXRjaCBhbiBpZCBpbiBgYWdlbnRzYCB3aGVuIGJvdGggYXJlXG4gICAqIHNldDsgYSBtaXNtYXRjaCB0aHJvd3MgYXQgc2V0dXAgd2l0aCB0aGUgYXZhaWxhYmxlIGNhbmRpZGF0ZXMuXG4gICAqL1xuICBkZWZhdWx0QWdlbnQ/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBQbHVnaW4tbGV2ZWwgZGVmYXVsdCBtb2RlbCBhcHBsaWVkIHRvIGV2ZXJ5IGFnZW50IHRoYXQgb21pdHMgaXRzXG4gICAqIG93biBgbW9kZWxgLiBNaXJyb3JzIEFwcEtpdCdzIGBhZ2VudHMoeyBkZWZhdWx0TW9kZWwgfSlgLlxuICAgKlxuICAgKiAtIGBzdHJpbmdgOiBzaG9ydGhhbmQgZm9yIFwidXNlIHRoZSBPQk8gYXV0by1yZXNvbHZlciBidXQgc3dhcCB0aGVcbiAgICogICBgbW9kZWxJZGBcIiAoZS5nLiBgXCJkYXRhYnJpY2tzLWNsYXVkZS1zb25uZXQtNC02XCJgKS5cbiAgICogLSBBbnkgb3RoZXIgTWFzdHJhIGBEeW5hbWljQXJndW1lbnQ8TWFzdHJhTW9kZWxDb25maWc+YDogcGFzc2VkXG4gICAqICAgdGhyb3VnaCB2ZXJiYXRpbS4gVXNlIHRoaXMgd2hlbiB5b3UgbmVlZCBmdWxsIGNvbnRyb2wgb3ZlciBhdXRoXG4gICAqICAgb3IgYHByb3ZpZGVySWRgLlxuICAgKlxuICAgKiBSZXNvbHV0aW9uIG9yZGVyIHBlciBhZ2VudDogYGRlZi5tb2RlbGAg4oaSIGBkZWZhdWx0TW9kZWxgIOKGklxuICAgKiBgREFUQUJSSUNLU19TRVJWSU5HX0VORFBPSU5UX05BTUVgIOKGkiBidWlsdC1pbiBgL3NlcnZpbmctZW5kcG9pbnRzYFxuICAgKiByZXNvbHZlci5cbiAgICovXG4gIGRlZmF1bHRNb2RlbD86IEFnZW50Q29uZmlnW1wibW9kZWxcIl0gfCBzdHJpbmc7XG4gIC8qKlxuICAgKiBGdXp6eS1tYXRjaCBsb29zZSBtb2RlbCBuYW1lcyAoYFwiY2xhdWRlIHNvbm5ldFwiYCkgYWdhaW5zdCB0aGUgd29ya3NwYWNlJ3NcbiAgICogTW9kZWwgU2VydmluZyBlbmRwb2ludHMuIERlZmF1bHRzIHRvIGB0cnVlYDsgbm8gZW52IGZhbGxiYWNrLlxuICAgKlxuICAgKiBTZXQgYGZhbHNlYCB0byByZXF1aXJlIGV4YWN0IGVuZHBvaW50IG5hbWVzIGV2ZXJ5d2hlcmUuXG4gICAqL1xuICBtb2RlbEZ1enp5TWF0Y2g/OiBib29sZWFuO1xuICAvKipcbiAgICogRnVzZS5qcyBzY29yZSB0aHJlc2hvbGQgZm9yIHRoZSBmdXp6eSBtYXRjaGVyLCAwIChleGFjdCkgdG8gMSAoYW55dGhpbmcpLlxuICAgKiBEZWZhdWx0cyB0byBgMC40YDsgbm8gZW52IGZhbGxiYWNrLlxuICAgKlxuICAgKiBMb3dlciB2YWx1ZXMgcmVqZWN0IGxvb3NlIG1hdGNoZXM7IHJhaXNlIGl0IGlmIHlvdSBoYXZlIGEgc3ByYXdsaW5nXG4gICAqIGVuZHBvaW50IGNhdGFsb2d1ZSB3aXRoIHNpbWlsYXItbG9va2luZyBuYW1lcy5cbiAgICovXG4gIG1vZGVsRnV6enlUaHJlc2hvbGQ/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBUVEwgZm9yIHRoZSBpbi1tZW1vcnkgc2VydmluZy1lbmRwb2ludHMgbGlzdCBjYWNoZSwgaW4gbWlsbGlzZWNvbmRzLlxuICAgKiBEZWZhdWx0cyB0byA1IG1pbnV0ZXM7IG5vIGVudiBmYWxsYmFjay5cbiAgICpcbiAgICogVGhlIGNhY2hlIGlzIHBlciB3b3Jrc3BhY2UgaG9zdCBhbmQgc2hhcmVkIGFjcm9zcyB1c2VyczsgY29uY3VycmVudFxuICAgKiBjYWxsZXJzIGNvYWxlc2NlIG9uIGEgc2luZ2xlIGluLWZsaWdodCBmZXRjaC5cbiAgICovXG4gIG1vZGVsQ2FjaGVUdGxNcz86IG51bWJlcjtcbiAgLyoqXG4gICAqIExldCBjbGllbnRzIHBpY2sgdGhlIGJhY2tpbmcgZW5kcG9pbnQgcGVyIHJlcXVlc3QuIERlZmF1bHRzIHRvIGB0cnVlYDtcbiAgICogbm8gZW52IGZhbGxiYWNrLlxuICAgKlxuICAgKiBSZWFkcyB0aGUgYFgtTWFzdHJhLU1vZGVsYCBoZWFkZXIsIHRoZSBgP21vZGVsPWAgcXVlcnkgc3RyaW5nLCBvciBhXG4gICAqIGBtb2RlbGAgYm9keSBmaWVsZCwgaW4gdGhhdCBvcmRlci4gRGlzYWJsZSB3aGVuIHJ1bm5pbmcgbXVsdGktdGVuYW50XG4gICAqIHdoZXJlIHVudHJ1c3RlZCBjbGllbnRzIHNob3VsZG4ndCBjaG9vc2UgdGhlIGVuZHBvaW50LlxuICAgKi9cbiAgbW9kZWxPdmVycmlkZT86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBQcmlvcml0eS1vcmRlcmVkIGxpc3Qgb2YgZW5kcG9pbnQgbmFtZXMgdHJpZWQgKmZpcnN0KiB3aGVuIG5vXG4gICAqIGFnZW50IC8gcGx1Z2luIC8gZW52IC8gcmVxdWVzdC1vdmVycmlkZSBtb2RlbCBpZCBpcyBzZXQsIGFoZWFkIG9mXG4gICAqIHRoZSBkeW5hbWljIHNjb3JlLWNsYXNzaWZpZWQgY2F0YWxvZ3VlLiBUaGUgcmVzb2x2ZXIgcGlja3MgdGhlXG4gICAqIGZpcnN0IGlkIHRoYXQgaXMgYWN0dWFsbHkgcHJlc2VudCBpbiB0aGUgd29ya3NwYWNlJ3NcbiAgICogYC9zZXJ2aW5nLWVuZHBvaW50c2AgbGlzdGluZy5cbiAgICpcbiAgICogV2hlbiB1bnNldCwgcmVzb2x1dGlvbiBpcyBkcml2ZW4gYnkgdGhlIGxpdmUgRm91bmRhdGlvbiBNb2RlbCBBUElcbiAgICogYHF1YWxpdHlgIC8gYHNwZWVkYCAvIGBjb3N0YCBzY29yZXM6IGVuZHBvaW50cyBhcmUgY2xhc3NpZmllZCBpbnRvXG4gICAqIGNoYXQgY2xhc3NlcyAoYGNsYXNzaWZ5RW5kcG9pbnRzYCkgYW5kIHdhbGtlZCBiZXN0LWZpcnN0XG4gICAqIChDaGF0VGhpbmtpbmcgLT4gQ2hhdEJhbGFuY2VkIC0+IENoYXRGYXN0KS4gVGhlIGF1dG9tYXRpYyBkZWZhdWx0IGlzXG4gICAqIGxpdmUtb25seSBhbmQgZmFpbHMgd2hlbiBubyBtYXRjaGluZyBlbmRwb2ludCBpcyBjdXJyZW50bHkgYXZhaWxhYmxlLlxuICAgKiBTZXQgdGhpcyB0byBwaW4gYSByZWd1bGF0ZWQgd29ya3NwYWNlIHRvIGFuIGFwcHJvdmVkIHN1YnNldCwgb3IgdG8gcHV0XG4gICAqIGN1c3RvbSBlbmRwb2ludHMgaW4gZnJvbnQgb2YgdGhlIGF1dG8tY2xhc3NpZmllZCBjYXRhbG9ndWUuXG4gICAqL1xuICBkZWZhdWx0TW9kZWxGYWxsYmFja3M/OiByZWFkb25seSBzdHJpbmdbXTtcbiAgLyoqXG4gICAqIFdoZW4gYHRydWVgIChkZWZhdWx0KSwgZXZlcnkgYWdlbnQgZ2V0cyBhIGJ1aWx0LWluIGlucHV0XG4gICAqIHByb2Nlc3NvciB0aGF0IHN0cmlwcyBgY2hhcnRJZGAgZmllbGRzIGZyb20gcHJpb3IgYXNzaXN0YW50XG4gICAqIHRvb2wtaW52b2NhdGlvbiByZXN1bHRzIGJlZm9yZSB0aGV5IHJlYWNoIHRoZSBtb2RlbC4gVGhpc1xuICAgKiBwcmV2ZW50cyB0aGUgbW9kZWwgZnJvbSByZXVzaW5nIHR1cm4tc2NvcGVkIGNoYXJ0SWRzIGl0IHNlZXNcbiAgICogaW4gbWVtb3J5IHJlY2FsbCAod2hpY2ggd291bGQgbGVhdmUgYFtjaGFydDo8aWQ+XWAgbWFya2Vyc1xuICAgKiBwb2ludGluZyBhdCB3cml0ZXIgZXZlbnRzIHRoYXQgbm8gbG9uZ2VyIGV4aXN0KS5cbiAgICpcbiAgICogU2V0IHRvIGBmYWxzZWAgdG8gb3B0IG91dCAtIHVzZWZ1bCBpZiBhIG5vbi1kZWZhdWx0IGFnZW50XG4gICAqIG5lZWRzIGZ1bGwgdmlzaWJpbGl0eSBpbnRvIHByaW9yIGNoYXJ0SWRzIChlLmcuIGFuIGF1ZGl0XG4gICAqIGFnZW50IHJlYXNvbmluZyBhYm91dCBjaGFydCBsaW5lYWdlKS5cbiAgICovXG4gIHN0cmlwU3RhbGVDaGFydHM/OiBib29sZWFuO1xuICAvKipcbiAgICogU3R5bGUgZ3VhcmRyYWlscyBhcHBlbmRlZCB0byBldmVyeSBhZ2VudCdzIGBpbnN0cnVjdGlvbnNgIHRvIGN1cmJcbiAgICogY29tbW9uIExMTS1pc21zIChlbSBkYXNoZXMsIGVtb2ppcywgc3ljb3BoYW50aWMgb3BlbmVycywgdGhyb3dhd2F5XG4gICAqIGNsb3NlcnMsIGV4Y2Vzc2l2ZSBoZWRnaW5nKS5cbiAgICpcbiAgICogLSBgdW5kZWZpbmVkYCAoZGVmYXVsdCk6IHVzZSB0aGUgYnVpbHQtaW5cbiAgICogICBgREVGQVVMVF9TVFlMRV9JTlNUUlVDVElPTlNgIGZyb20gYGFnZW50cy50c2AuXG4gICAqIC0gYHN0cmluZ2A6IHJlcGxhY2UgdGhlIGRlZmF1bHQgd2l0aCB0aGUgc3VwcGxpZWQgYmxvY2suXG4gICAqIC0gYGZhbHNlYDogZGlzYWJsZSBlbnRpcmVseSAoYWdlbnRzIHNlZSBvbmx5IHRoZWlyIGJlc3Bva2VcbiAgICogICBgaW5zdHJ1Y3Rpb25zYCkuXG4gICAqXG4gICAqIEFwcGVuZGVkIChub3QgcHJlcGVuZGVkKSBzbyB0aGUgYWdlbnQncyByb2xlIGFuZCBydWxlcyBjb21lIGZpcnN0XG4gICAqIGFuZCB0aGUgc3R5bGUgYmxvY2sgbGVhbnMgb24gdGhlIG1vZGVsJ3MgcmVjZW5jeSBiaWFzLlxuICAgKi9cbiAgc3R5bGVJbnN0cnVjdGlvbnM/OiBzdHJpbmcgfCBmYWxzZTtcbiAgLyoqXG4gICAqIEdlbmllIHNwYWNlcyB0aGlzIHBsdWdpbidzIGFnZW50cyBjYW4gZGVsZWdhdGUgdG8uIE9uZSBNYXN0cmFcbiAgICogdG9vbCBpcyByZWdpc3RlcmVkIHBlciBhbGlhcyAoYGdlbmllYCBmb3IgdGhlIHdlbGwta25vd25cbiAgICogYGRlZmF1bHRgIGFsaWFzLCBgZ2VuaWVfPGFsaWFzPmAgb3RoZXJ3aXNlKS4gRWFjaCB0b29sIHNwaW5zXG4gICAqIHVwIGEgcGVyLXF1ZXN0aW9uIEdlbmllIHN1Yi1hZ2VudCB0aGF0IHJ1bnMgRGF0YWJyaWNrc1xuICAgKiBcImFnZW50IG1vZGVcIiBhZ2FpbnN0IHRoZSBzcGFjZSwgYnJvYWRjYXN0cyB3aXJlIGV2ZW50cyB0byB0aGVcbiAgICogVUksIGZldGNoZXMgc3RhdGVtZW50IHJvd3MgZm9yIG5vbi1lbXB0eSByZXN1bHRzLCBhbmQgcmV0dXJuc1xuICAgKiBhIGAoc3RyaW5nIHwgZGF0YSB8IGNoYXJ0KVtdYCBzdW1tYXJ5IHRoZSBob3N0IFVJIHJlbmRlcnNcbiAgICogaW5saW5lLlxuICAgKlxuICAgKiBFbnRyaWVzIGFjY2VwdCBlaXRoZXIgYSBmdWxsIHtAbGluayBHZW5pZVNwYWNlQ29uZmlnfSBvYmplY3RcbiAgICogb3IgYSBiYXJlIGBzcGFjZV9pZGAgc3RyaW5nIHdoZW4gbm8gZXh0cmFzIGFyZSBuZWVkZWQ6XG4gICAqXG4gICAqIGBgYHRzXG4gICAqIG1hc3RyYSh7XG4gICAqICAgZ2VuaWVTcGFjZXM6IHtcbiAgICogICAgIGRlZmF1bHQ6IFwiMDFlZjBkM2MwZTFiMWY0YThkMmMzZTRmNWE2YjdjOGRcIixcbiAgICogICAgIGZvcmVjYXN0czogeyBzcGFjZUlkOiBcIjAxZWYuLi5cIiwgaGludDogXCJ3ZWVrbHkgZGVtYW5kIGZvcmVjYXN0c1wiIH0sXG4gICAqICAgfSxcbiAgICogfSk7XG4gICAqIGBgYFxuICAgKlxuICAgKiBSZWFjaCB0aGUgc3BhY2VzIGZyb20gYW4gYWdlbnQncyBgdG9vbHMocGx1Z2lucylgIGNhbGxiYWNrIHZpYVxuICAgKiBgcGx1Z2lucy5nZW5pZT8udG9vbGtpdCgpYDsgdGhlIHJlc3VsdGluZyB0b29scyBhY2NlcHRcbiAgICogYHsgY29udGVudCwgY29udmVyc2F0aW9uSWQ/IH1gIGFuZCByZXR1cm4gYSBoeWRyYXRlZCBzdW1tYXJ5LlxuICAgKlxuICAgKiAqKkZhbGxiYWNrIGRpc2NvdmVyeSoqIChoaWdoZXN0IHByZWNlZGVuY2UgZmlyc3QpOiBpZiB0aGlzXG4gICAqIGZpZWxkIGlzIG9taXR0ZWQsIHRoZSBHZW5pZSBhZ2VudCBhbHNvIHBpY2tzIHVwIHNwYWNlcyBmcm9tXG4gICAqICgxKSB0aGUgQXBwS2l0IGBnZW5pZSh7IHNwYWNlczogeyAuLi4gfSB9KWAgcGx1Z2luIGluc3RhbmNlXG4gICAqIHdoZW4gcmVnaXN0ZXJlZCwgYW5kICgyKSB0aGUgYERBVEFCUklDS1NfR0VOSUVfU1BBQ0VfSURgXG4gICAqIGVudiB2YXIgKHJlZ2lzdGVyZWQgdW5kZXIgdGhlIGBkZWZhdWx0YCBhbGlhcykuIFRoaXMga2VlcHNcbiAgICogZXhpc3RpbmcgQXBwS2l0IGRlcGxveW1lbnRzIHdvcmtpbmcgd2l0aG91dCByZXN0YXRpbmcgdGhlXG4gICAqIHNwYWNlcyBjb25maWcgaW4gdHdvIHBsYWNlcy5cbiAgICovXG4gIGdlbmllU3BhY2VzPzogR2VuaWVTcGFjZXNDb25maWc7XG4gIC8qKlxuICAgKiBVc2UgdGhlIHN0cmVhbWluZyBHZW5pZSBBZ2VudCBNb2RlIEFQSSBmb3IgYGFza19nZW5pZWAuIERlZmF1bHRzIHRvIGB0cnVlYC5cbiAgICogU2V0IGBmYWxzZWAgdG8gZm9yY2UgdGhlIGxlZ2FjeSBDb252ZXJzYXRpb24gQVBJIHBvbGxpbmcgZHJpdmVyLiBBXG4gICAqIHByZS1zdHJlYW0gZmVhdHVyZS1kaXNhYmxlZCBvciBwcmV2aWV3LXRvZ2dsZSByZXNwb25zZSBmYWxscyBiYWNrXG4gICAqIGF1dG9tYXRpY2FsbHkuIERpcmVjdCBHZW5pZSBjaGF0IGFsd2F5cyByZXF1aXJlcyBBZ2VudCBNb2RlIGFuZCBpZ25vcmVzXG4gICAqIHRoaXMgb3B0aW9uLlxuICAgKi9cbiAgZ2VuaWVBZ2VudE1vZGU/OiBib29sZWFuO1xuICAvKipcbiAgICogVFRMIGZvciB0aGUgaW4tbWVtb3J5IEdlbmllIHNwYWNlIG1ldGFkYXRhIGNhY2hlLCBpblxuICAgKiBtaWxsaXNlY29uZHMuIERlZmF1bHRzIHRvIDUgbWludXRlcy4gVGhlIEdlbmllIGFnZW50IGNhbGxzXG4gICAqIGBjbGllbnQuZ2VuaWUuZ2V0U3BhY2UoLi4uKWAgb24gZXZlcnkgY29sZC1zdGFydCB0byBnZXQgdGhlXG4gICAqIHRpdGxlIC8gZGVzY3JpcHRpb24gLyB3YXJlaG91c2UgaWQ7IGNhY2hlZCByZXNwb25zZXMgc2tpcCB0aGVcbiAgICogcm91bmQtdHJpcCBhbmQgY29uY3VycmVudCBjYWxsZXJzIGNvYWxlc2NlIG9uIGEgc2luZ2xlXG4gICAqIGluLWZsaWdodCBmZXRjaC4gRHJvcCB0byBhIHNtYWxsZXIgdmFsdWUgd2hlbiBhbmFseXN0cyBhcmVcbiAgICogYWN0aXZlbHkgZWRpdGluZyBzcGFjZSBtZXRhZGF0YSBhbmQgeW91IHdhbnQgY2hhbmdlcyB2aXNpYmxlXG4gICAqIHdpdGhpbiBzZWNvbmRzOyByYWlzZSBpdCB0byBhbW9ydGlzZSB0aGUgcm91bmQtdHJpcCB3aGVuXG4gICAqIHNwYWNlIG1ldGFkYXRhIGlzIGVmZmVjdGl2ZWx5IGZyb3plbi5cbiAgICpcbiAgICogQmFja2VkIGJ5IEFwcEtpdCdzIGBDYWNoZU1hbmFnZXJgLCBzbyB0aGUgY2FjaGUgcGFydGljaXBhdGVzXG4gICAqIGluIHRlbGVtZXRyeSBzcGFucyAoYGNhY2hlLmdldE9yRXhlY3V0ZWApIGFuZCBiZW5lZml0cyBmcm9tXG4gICAqIExha2ViYXNlIHBlcnNpc3RlbmNlIHdoZW4gdGhlIGBsYWtlYmFzZWAgcGx1Z2luIGlzIHdpcmVkIHVwLlxuICAgKi9cbiAgZ2VuaWVTcGFjZUNhY2hlVHRsTXM/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBNYXhpbXVtIExMTSBzdGVwcyBlYWNoIGFnZW50IGdldHMgcGVyIHR1cm4uIE9uZSBzdGVwID0gb25lXG4gICAqIHJvdW5kLXRyaXAgdG8gdGhlIHVuZGVybHlpbmcgbW9kZWwgKGEgdG9vbCBjYWxsIGNvbnN1bWVzIGFcbiAgICogc3RlcCwgdGhlIGZpbmFsLXRleHQgcmVwbHkgY29uc3VtZXMgb25lIHRvbykuIEFwcGxpZXMgdG9cbiAgICogZXZlcnkgYWdlbnQgcmVnaXN0ZXJlZCB0aHJvdWdoIHtAbGluayBNYXN0cmFQbHVnaW5Db25maWcuYWdlbnRzfVxuICAgKiAtIHBlci1hZ2VudCBvdmVycmlkZXMgYXJlbid0IHN1cmZhY2VkIHlldCBiZWNhdXNlIHRoZSBzYW1lXG4gICAqIGNlaWxpbmcgaGFzIGJlZW4gc3VmZmljaWVudCBhY3Jvc3MgZXZlcnkgd29ya2xvYWQgd2UndmUgcnVuLlxuICAgKlxuICAgKiBEZWZhdWx0cyB0byB7QGxpbmsgREVGQVVMVF9BR0VOVF9NQVhfU1RFUFN9ICgyNSksIHNpemVkIHRvIGZpdFxuICAgKiBhIGRlY29tcG9zZWQgR2VuaWUgdHVybiAoZ3JvdW5kaW5nICsgc2V2ZXJhbCBgYXNrX2dlbmllYCBjYWxsc1xuICAgKiArIGBwcmVwYXJlX2NoYXJ0YCBwZXIgZGF0YXNldCArIHRoZSBmaW5hbC10ZXh0IHJlcGx5KSB3aXRoXG4gICAqIGhlYWRyb29tIGZvciB0aGUgbW9kZWwgdG8gY2hhaW4gYSBjb3VwbGUgb2YgZm9sbG93LXVwcyBiZWZvcmVcbiAgICogYW5zd2VyaW5nLiBNYXN0cmEncyBvd24gYGFnZW50LmdlbmVyYXRlYCBkZWZhdWx0IG9mIDUgd291bGRcbiAgICogY3V0IG11bHRpLXN0ZXAgb3JjaGVzdHJhdGlvbiBvZmYgYWZ0ZXIgMi0zIHRvb2wgY2FsbHMsIHNvXG4gICAqIGV4cGxpY2l0bHkgcmFpc2luZyB0aGUgY2VpbGluZyBoZXJlIGlzIHdoYXQgbGV0cyB0aGVcbiAgICogYWdlbnQtbW9kZSBsb29wIHBsYXkgb3V0LlxuICAgKlxuICAgKiBMb3dlciB3aGVuIGFuIHVudXN1YWxseSBzbG93IG9yIGV4cGVuc2l2ZSBtb2RlbCBtYWtlcyBsb25nXG4gICAqIHR1cm5zIHVuYWZmb3JkYWJsZTsgcmFpc2UgZm9yIGV4cGxvcmF0b3J5IHdvcmtsb2FkcyB0aGF0IG5lZWRcbiAgICogdG8gZHJpbGwgZGVlcCBpbnRvIGEgZGF0YXNldCB3aXRoaW4gYSBzaW5nbGUgdHVybi5cbiAgICovXG4gIGFnZW50TWF4U3RlcHM/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBXaXJlIE1hc3RyYSBzcGFucyBpbnRvIEFwcEtpdCdzIGdsb2JhbCBPVGVsIHBpcGVsaW5lIHZpYVxuICAgKiBgQG1hc3RyYS9vdGVsLWJyaWRnZWAuXG4gICAqXG4gICAqIC0gYHVuZGVmaW5lZGAgKGRlZmF1bHQsIGF1dG8pOiBvbiBvbmx5IHdoZW5cbiAgICogICBgT1RFTF9FWFBPUlRFUl9PVExQX0VORFBPSU5UYCBvclxuICAgKiAgIGBPVEVMX0VYUE9SVEVSX09UTFBfVFJBQ0VTX0VORFBPSU5UYCBpcyBzZXQuIFdoZW4gdW5zZXQsIHRoZVxuICAgKiAgIGJyaWRnZSBpcyBza2lwcGVkIHNvIE1hc3RyYSBkb2VzIG5vdCBsb2dcbiAgICogICBgW090ZWxCcmlkZ2VdIE5vIE9URUwgc3BhbiBmb3VuZGAgb24gdGhlIG5vb3AgdHJhY2VyLlxuICAgKiAtIGB0cnVlYDogZm9yY2Ugb24gZXZlbiB3aXRob3V0IGFuIE9UTFAgZW5kcG9pbnQuXG4gICAqIC0gYGZhbHNlYDogZm9yY2Ugb2ZmLlxuICAgKi9cbiAgb2JzZXJ2YWJpbGl0eT86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBMb2cgdXNlciBmZWVkYmFjayAodGh1bWJzIHVwL2Rvd24gKyBmcmVlZm9ybSBjb21tZW50cykgdG8gTUxmbG93IGFzXG4gICAqIHRyYWNlIGFzc2Vzc21lbnRzLCBhbmQgc3VyZmFjZSB0aGUgZmVlZGJhY2sgY29udHJvbHMgaW4gdGhlIGNoYXQgVUkuXG4gICAqXG4gICAqIC0gYHVuZGVmaW5lZGAgKGRlZmF1bHQsIGF1dG8pOiBlbmFibGVkIG9ubHkgd2hlbiBNTGZsb3cgdHJhY2luZyBpc1xuICAgKiAgIHdpcmVkIC0gYW4gT1RMUCBleHBvcnRlciBlbmRwb2ludCBpcyBzZXQgYW5kIGFuIE1MZmxvdyBleHBlcmltZW50XG4gICAqICAgaXMgbmFtZWQgKHRoZSBzYW1lIHNpZ25hbHMgdGhlIG9ic2VydmFiaWxpdHkgcGlwZWxpbmUgbmVlZHMgdG9cbiAgICogICBzaGlwIHRyYWNlcyB0byBNTGZsb3cpLiBPdGhlcndpc2Ugb2ZmLCBzaW5jZSB0aGVyZSdkIGJlIG5vIHRyYWNlXG4gICAqICAgdG8gYXR0YWNoIGZlZWRiYWNrIHRvLlxuICAgKiAtIGB0cnVlYDogZm9yY2Ugb24uIFJlcXVpcmVzIGBNTEZMT1dfRVhQRVJJTUVOVF9JRGAgb3JcbiAgICogICBgTUxGTE9XX0VYUEVSSU1FTlRfTkFNRWA7IGFwcCBzdGFydHVwIGZhaWxzIHdoZW4gbmVpdGhlciBpcyBjb25maWd1cmVkLlxuICAgKiAgIFVzZSB0aGlzIHdoZW4gdHJhY2UgZXhwb3J0IGlzIHdpcmVkIGluIGEgd2F5IHRoZSBhdXRvLXByb2JlIGRvZXMgbm90XG4gICAqICAgcmVjb2duaXplLlxuICAgKiAtIGBmYWxzZWA6IGZvcmNlIG9mZi4gTm8gdHJhY2UtaWQgaGVhZGVyLCBubyBmZWVkYmFjayByb3V0ZSwgbm8gVUkuXG4gICAqXG4gICAqIEZlZWRiYWNrIGF0dGFjaGVzIHRvIGEgdHVybidzIE1MZmxvdyB0cmFjZSB2aWEgdGhlIE9wZW5UZWxlbWV0cnlcbiAgICogdHJhY2UgaWQgdGhlIHNlcnZlciBzdGFtcHMgb24gZWFjaCByZXNwb25zZTsgc2VlIGBtbGZsb3cudHNgLlxuICAgKi9cbiAgZmVlZGJhY2s/OiBib29sZWFuO1xuICAvKipcbiAgICogRXhwb3NlIHRoZSBwbHVnaW4ncyBhZ2VudHMgKGFuZCBvcHRpb25hbGx5IHRvb2xzKSBhcyBhIE1hc3RyYSBNQ1BcbiAgICogc2VydmVyIHNvIGV4dGVybmFsIE1DUCBjbGllbnRzIC0gQ2xhdWRlIERlc2t0b3AsIEN1cnNvciwgdGhlIE1hc3RyYVxuICAgKiBwbGF5Z3JvdW5kLCBvciBhbm90aGVyIGFnZW50IC0gY2FuIGNhbGwgdGhlbSBvdmVyIHRoZSBzdGFuZGFyZCBNQ1BcbiAgICogdHJhbnNwb3J0cy4gRW5hYmxlZCBieSBkZWZhdWx0IChhZ2VudHMgb25seSk6IHdyYXBwaW5nIHRoZVxuICAgKiBhbHJlYWR5LXJlZ2lzdGVyZWQgYWdlbnRzIGNvc3RzIG5vdGhpbmcgZXh0cmEsIHNvIHRoZSBlbmRwb2ludCBpcyBvblxuICAgKiBvdXQgb2YgdGhlIGJveDsgb25seSB0aGUgYW1iaWVudCB0b29scyAod2hpY2ggYXNzdW1lIGFuIGluLXByb2Nlc3NcbiAgICogY2hhdCB0dXJuKSBzdGF5IG9mZiB1bmxlc3MgZXhwbGljaXRseSBvcHRlZCBpbi5cbiAgICpcbiAgICogLSBgdW5kZWZpbmVkYCAoZGVmYXVsdCkgLyBgdHJ1ZWA6IGV4cG9zZSBldmVyeSByZWdpc3RlcmVkIGFnZW50IGFzXG4gICAqICAgYW4gYGFza188YWdlbnRJZD5gIE1DUCB0b29sIHVuZGVyIGEgc2VydmVyIHdob3NlIGlkIGlzIHRoZSBwbHVnaW5cbiAgICogICBuYW1lLlxuICAgKiAtIGBmYWxzZWA6IG5vIE1DUCBlbmRwb2ludHMuXG4gICAqIC0ge0BsaW5rIE1hc3RyYU1jcENvbmZpZ306IGZpbmUtZ3JhaW5lZCBjb250cm9sIG92ZXIgdGhlIHNlcnZlciBpZCxcbiAgICogICBhZHZlcnRpc2VkIG1ldGFkYXRhLCBhbmQgd2hpY2ggYWdlbnRzIC8gdG9vbHMgYXJlIGV4cG9zZWQuXG4gICAqXG4gICAqIFdoZW4gZW5hYmxlZCwgdGhlIHN0b2NrIE1hc3RyYSBNQ1Agcm91dGVzIG1vdW50IHVuZGVyIHRoZSBwbHVnaW4nc1xuICAgKiBiYXNlIHBhdGggKG5vIGJlc3Bva2Ugcm91dGUgaXMgYWRkZWQgLSB0aGUgc2VydmVyIGlzIGhhbmRlZCB0byB0aGVcbiAgICogYE1hc3RyYWAgaW5zdGFuY2UgdmlhIGBtY3BTZXJ2ZXJzYCwgd2hpY2ggYEBtYXN0cmEvZXhwcmVzc2Agc2VydmVzKTpcbiAgICpcbiAgICogLSBTdHJlYW1hYmxlIEhUVFA6IGBQT1NUIC9hcGkvPHBsdWdpbj4vbWNwLzxzZXJ2ZXJJZD4vbWNwYFxuICAgKiAtIFNTRSAobGVnYWN5KTogICAgYEdFVCAgL2FwaS88cGx1Z2luPi9tY3AvPHNlcnZlcklkPi9zc2VgXG4gICAqICAgICAgICAgICAgICAgICAgICBgUE9TVCAvYXBpLzxwbHVnaW4+L21jcC88c2VydmVySWQ+L21lc3NhZ2VzYFxuICAgKlxuICAgKiBSZXF1ZXN0cyBydW4gdW5kZXIgdGhlIHNhbWUgQXBwS2l0IE9CTyBzY29wZSBhcyB0aGUgY2hhdCByb3V0ZXMsIHNvXG4gICAqIGFuIGFnZW50IGludm9rZWQgb3ZlciBNQ1AgcmVzb2x2ZXMgaXRzIG1vZGVsIGFuZCB0b29scyBhcyB0aGVcbiAgICogY2FsbGluZyB1c2VyLlxuICAgKi9cbiAgbWNwPzogYm9vbGVhbiB8IE1hc3RyYU1jcENvbmZpZztcbiAgLyoqXG4gICAqIEhvdyBtdWNoIG9mIHRoZSBzdG9jayBgQG1hc3RyYS9leHByZXNzYCBtYW5hZ2VtZW50IEFQSSBpcyByZWFjaGFibGVcbiAgICogdGhyb3VnaCB0aGUgcGx1Z2luIG1vdW50LiBgQG1hc3RyYS9leHByZXNzYCByZWdpc3RlcnMgaXRzIGZ1bGwgcm91dGVcbiAgICogdGFibGUgKGFnZW50IGluZmVyZW5jZSBwbHVzIGFkbWluIC8gbXV0YXRpbmcgcm91dGVzOiBkaXJlY3QgdG9vbFxuICAgKiBleGVjdXRpb24sIHdvcmtmbG93IGNvbnRyb2wsIHJhdyBtZW1vcnkgcmVhZC93cml0ZSwgdGVsZW1ldHJ5LCBsb2dzLFxuICAgKiBzY29yZXMpLiBBcHBLaXQgYWxyZWFkeSBhdXRoZW50aWNhdGVzIGV2ZXJ5IHJlcXVlc3QgYXMgdGhlIE9CTyB1c2VyLFxuICAgKiBidXQgbm90aGluZyB0aGVyZSByZXN0cmljdHMgKndoaWNoKiBvZiB0aG9zZSBvcGVyYXRpb25zIHRoZSBicm93c2VyXG4gICAqIGNsaWVudCBtYXkgaW52b2tlLlxuICAgKlxuICAgKiAtIGBcInNjb3BlZFwiYCAoZGVmYXVsdCk6IG9ubHkgdGhlIHJvdXRlcyB0aGUgY2hhdCBjbGllbnQgbGVnaXRpbWF0ZWx5XG4gICAqICAgbmVlZHMgYXJlIGRpc3BhdGNoZWQgdG8gTWFzdHJhIC0gYWdlbnQgaW5mZXJlbmNlXG4gICAqICAgKGBzdHJlYW1gIC8gYGdlbmVyYXRlYCAvIGBuZXR3b3JrYCksIHJlYWQtb25seSBhZ2VudCBtZXRhZGF0YSwgdGhpc1xuICAgKiAgIHBsdWdpbidzIG93biBPQk8tIGFuZCByZXNvdXJjZS1zY29wZWQgYC9yb3V0ZS8qYCByb3V0ZXMgKGhpc3RvcnkgL1xuICAgKiAgIHRocmVhZHMpLCBhbmQsIHdoZW4ge0BsaW5rIG1jcH0gaXMgZW5hYmxlZCwgdGhlIE1DUCB0cmFuc3BvcnQuXG4gICAqICAgRXZlcnl0aGluZyBlbHNlICh0b29sIGV4ZWN1dGlvbiwgd29ya2Zsb3cgY29udHJvbCwgcmF3IG1lbW9yeSxcbiAgICogICB0ZWxlbWV0cnksIGxvZ3MsIHNjb3JlcywgYW5kIG90aGVyIG11dGF0aW9ucykgaXMgcmVqZWN0ZWQgd2l0aFxuICAgKiAgIGA0MDNgIGJlZm9yZSBpdCByZWFjaGVzIE1hc3RyYS5cbiAgICogLSBgXCJmdWxsXCJgOiBkaXNwYXRjaCB0aGUgZW50aXJlIHN0b2NrIE1hc3RyYSBBUEkuIFVzZSBvbmx5IGZvciBhXG4gICAqICAgdHJ1c3RlZCBmaXJzdC1wYXJ0eSBjb25zb2xlIHRoYXQgZ2VudWluZWx5IG5lZWRzIHRoZSBtYW5hZ2VtZW50XG4gICAqICAgc3VyZmFjZS5cbiAgICovXG4gIGFwaUFjY2Vzcz86IFwic2NvcGVkXCIgfCBcImZ1bGxcIjtcbiAgLyoqXG4gICAqIFdoaWNoIERhdGFicmlja3MgaWRlbnRpdHkgdGhlIGFnZW50cycgd29ya3NwYWNlIGNhbGxzIHJ1biBhczogdGhlXG4gICAqIHNlcnZpbmctZW5kcG9pbnQgY2F0YWxvZ3VlIGJlaGluZCB0aGUgbW9kZWwgcGlja2VyLCBHZW5pZSBzdWdnZXN0aW9ucyxcbiAgICogYGFza19nZW5pZWAsIGFuZCB0aGUgU3RhdGVtZW50IEV4ZWN1dGlvbiBmZXRjaCBiZWhpbmQgYSBgW2RhdGE6PGlkPl1gXG4gICAqIGVtYmVkLiBGYWxscyBiYWNrIHRvIGBNQVNUUkFfR0VOSUVfSURFTlRJVFlgLCB0aGVuIGBcInVzZXJcImAuXG4gICAqXG4gICAqIE9uLWJlaGFsZi1vZiAoT0JPKSBhdXRoIHJlcXVpcmVzIHRoZSBjYWxsZXIgdG8gYmUgYSBtZW1iZXIgb2YgdGhlXG4gICAqIFdPUktTUEFDRSwgbm90IGp1c3Qgb2YgdGhlIERhdGFicmlja3MgYWNjb3VudC4gQW4gYXBwIHNoYXJlZCB3aXRoIGFuXG4gICAqIGFjY291bnQtbGV2ZWwgZ3JvdXAgY2FuIGJlIG9wZW5lZCBieSBzb21lb25lIHdob3NlIHRva2VuIGlzIHZhbGlkIGJ1dCB3aG9zZVxuICAgKiBldmVyeSB3b3Jrc3BhY2UgY2FsbCBmYWlscyB3aXRoIGBVbmF1dGhvcml6ZWQgYWNjZXNzIHRvIE9yZzogPGlkPmAgLSBhbmRcbiAgICogZ3JhbnRpbmcgd29ya3NwYWNlIG1lbWJlcnNoaXAgaXMgbm90IGFsd2F5cyBwb3NzaWJsZSwgc2luY2UgYSB3b3Jrc3BhY2VcbiAgICogY2FwcyBtZW1iZXJzaGlwIHdlbGwgYmVsb3cgdGhlIHNpemUgb2YgYSBsYXJnZSBhY2NvdW50J3MgdXNlciBncm91cC4gVGhlXG4gICAqIGFwcCdzIHNlcnZpY2UgcHJpbmNpcGFsIGFscmVhZHkgaG9sZHMgdGhlIGdyYW50cyB0aGUgYXBwIHdhcyBkZXBsb3llZCB3aXRoLlxuICAgKlxuICAgKiAtIGBcInVzZXJcImAgKGRlZmF1bHQpOiBhbHdheXMgT0JPLiBQZXItdXNlciBhdHRyaWJ1dGlvbiwgYW5kIEdlbmllIC8gVW5pdHlcbiAgICogICBDYXRhbG9nIHJvdyBmaWx0ZXJzIGFwcGx5IHBlciB1c2VyLiBDb3JyZWN0IHdoZW4gZXZlcnkgY2FsbGVyIGlzIGFcbiAgICogICB3b3Jrc3BhY2UgbWVtYmVyLlxuICAgKiAtIGBcInNlcnZpY2UtcHJpbmNpcGFsXCJgOiBhbHdheXMgdGhlIGFwcCBzZXJ2aWNlIHByaW5jaXBhbC4gTmVlZHMgbm8gT0JPXG4gICAqICAgc2NvcGVzIGFuZCB3b3JrcyBmb3IgYW55IGNhbGxlciB3aG8gY2FuIG9wZW4gdGhlIGFwcCwgYXQgdGhlIGNvc3Qgb2ZcbiAgICogICBwZXItdXNlciBhdHRyaWJ1dGlvbiBpbiBHZW5pZSAvIFVuaXR5IENhdGFsb2cuXG4gICAqIC0gYFwiYXV0b1wiYDogT0JPIHdoZW4gdGhlIHJlcXVlc3QgY2FycmllcyBhbiBPQk8gdG9rZW4sIHRoZSBzZXJ2aWNlIHByaW5jaXBhbFxuICAgKiAgIHdoZW4gaXQgZG9lcyBub3QuIEZvciBhbiBhcHAgc2VydmluZyBCT1RIIHRoZSBwbGF0Zm9ybSBmcm9udCBkb29yIGFuZCBhXG4gICAqICAgZG9vciB0aGF0IGhhcyBubyB0b2tlbiB0byBmb3J3YXJkIC0gYSBgQGRieC10b29scy90dW5uZWxgIGdhdGUsIGFcbiAgICogICBUZWFtcyBjaGFubmVsIC0gd2hlcmUgQXBwS2l0J3MgYGFzVXNlcmAgd291bGQgb3RoZXJ3aXNlIHRocm93XG4gICAqICAgYEF1dGhlbnRpY2F0aW9uRXJyb3JgIG91dHNpZGUgYE5PREVfRU5WPWRldmVsb3BtZW50YC5cbiAgICpcbiAgICogVGhlIHNlcnZpY2UtcHJpbmNpcGFsIHBhdGggY2hhbmdlcyBvbmx5IHRoZSBEYXRhYnJpY2tzIENSRURFTlRJQUwuIE1lbW9yeVxuICAgKiB0aHJlYWRzLCB0aGUgcGVyLXVzZXIgY2FjaGUgbmFtZXNwYWNlLCBhbmQgdHJhY2UgbWV0YWRhdGEgc3RpbGwga2V5IG9mZiB0aGVcbiAgICogZm9yd2FyZGVkIHVzZXIsIHNvIGNhbGxlcnMgc2hhcmluZyB0aGUgc2VydmljZSBwcmluY2lwYWwncyBkYXRhIGFjY2VzcyBrZWVwXG4gICAqIHNlcGFyYXRlIGNvbnZlcnNhdGlvbnMgYW5kIGNhbm5vdCByZWFkIGVhY2ggb3RoZXIncyB0aHJlYWRzIG9yIGNoYXJ0cy5cbiAgICogRGlyZWN0IEdlbmllIGNoYXQgZG9lcyBub3QgdXNlIHRoaXMgb3B0aW9uOiBpdHMgY29udmVyc2F0aW9ucyBhbmQgbWVzc2FnZXNcbiAgICogYWx3YXlzIHJ1biB1bmRlciBBcHBLaXQgT0JPIHNvIEdlbmllIHJlbWFpbnMgdGhlIHBlci11c2VyIHN0YXRlIG93bmVyLlxuICAgKlxuICAgKiBAZXhhbXBsZSBBbiBhcHAgYW55IGFjY291bnQgdXNlciBjYW4gb3BlblxuICAgKiBgYGB0c1xuICAgKiBtYXN0cmEoeyBnZW5pZUlkZW50aXR5OiBcInNlcnZpY2UtcHJpbmNpcGFsXCIsIGdlbmllU3BhY2VzOiB7IGRlZmF1bHQ6IHNwYWNlSWQgfSB9KTtcbiAgICogYGBgXG4gICAqXG4gICAqIEBleGFtcGxlIE9uZSBhcHAgYmVoaW5kIGJvdGggdGhlIGZyb250IGRvb3IgYW5kIGEgcHVibGljIHR1bm5lbFxuICAgKiBgYGB0c1xuICAgKiBtYXN0cmEoeyBnZW5pZUlkZW50aXR5OiBcImF1dG9cIiwgZ2VuaWVTcGFjZXM6IHsgZGVmYXVsdDogc3BhY2VJZCB9IH0pO1xuICAgKiBgYGBcbiAgICovXG4gIGdlbmllSWRlbnRpdHk/OiBNYXN0cmFJZGVudGl0eU1vZGU7XG4gIC8qKlxuICAgKiBPcHRpb25hbCBicmFuZCBjb250ZXh0IGFwcGxpZWQgdG8gY2hhcnRzIHByb2R1Y2VkIGJ5IHRoZSBidWlsdC1pblxuICAgKiBgcmVuZGVyX2RhdGFgIC8gYHByZXBhcmVfY2hhcnRgIHRvb2xzLiBXaGVuIHNldCwgdGhlIGNoYXJ0IHBsYW5uZXInc1xuICAgKiBFY2hhcnRzIG91dHB1dCBpcyB0aGVtZWQgd2l0aCB0aGUgYnJhbmQncyBwYWxldHRlIChzZXJpZXMgY29sb3JzIGRlcml2ZWRcbiAgICogZnJvbSBgY29sb3JzLnByaW1hcnlgIC8gYGNvbG9ycy5hY2NlbnRgKSBhbmQgc2FucyBmb250XG4gICAqIChgdHlwb2dyYXBoeS5zYW5zYCkgaW5zdGVhZCBvZiBFY2hhcnRzJyBkZWZhdWx0cy4gT21pdCBmb3IgdGhlIGRlZmF1bHRcbiAgICogRWNoYXJ0cyBsb29rLlxuICAgKlxuICAgKiBQYXNzIHRoZSBwb3J0YWJsZSB7QGxpbmsgQnJhbmRDb250ZXh0fSBzaGFyZWQgYWNyb3NzIHRoZSBVSSBhbmRcbiAgICogbGlicmFyaWVzIChlLmcuIGBicmFuZC5kZWZhdWx0QnJhbmRDb250ZXh0YCBmcm9tIGBAZGJ4LXRvb2xzL3NoYXJlZC1jb3JlYCxcbiAgICogb3IgYSBjdXN0b21lciBicmFuZCkgLSB0aGUgc2FtZSBvYmplY3QgdGhlIGVtYWlsIGFkZC1vbiBhbmQgdGhlIFVJXG4gICAqIGBCcmFuZFByb3ZpZGVyYCBjb25zdW1lLCBzbyBhIGhvc3QgdGhlbWVzIGNoYXJ0cywgZW1haWwsIGFuZCBVSSBmcm9tIG9uZVxuICAgKiBzb3VyY2UuXG4gICAqL1xuICBicmFuZD86IEJyYW5kQ29udGV4dDtcbiAgLyoqXG4gICAqIFJlbW90ZSBBZ2VudC1Ta2lsbCBzb3VyY2VzIG1hdGVyaWFsaXplZCBvbmNlIGF0IGFwcCBzdGFydHVwLiBBIHNpbmdsZVxuICAgKiBzb3VyY2UsIGEgbGlzdCwgb3IgYSBgeyBzb3VyY2VzLCBmYWlsT25FcnJvcj8sIC4uLiB9YCBiYWcuXG4gICAqXG4gICAqIEVhY2ggc291cmNlIGlzIGEgR2l0SHViIGBvd25lci9yZXBvYCwgYSBnaXQgLyBHaXRMYWIgVVJMLCBvciBhIGRpcmVjdFxuICAgKiBgU0tJTEwubWRgIC8gYXJjaGl2ZSBkb3dubG9hZCBVUkwuIFJlc29sdXRpb24gcHJlZmVycyB0aGUgT1BUSU9OQUwgYHNraWxsc2BcbiAgICogbnBtIENMSSAoYSBwZWVyIGRlcCkgd2hpY2ggaXMgY29waWVkIGludG8gYSB0ZW1wIGRpciBhbmQgdGhlbiBwZXJzaXN0ZWQ7XG4gICAqIHdpdGhvdXQgaXQsIGEgVVJMIHNvdXJjZSBpcyBmZXRjaGVkIGRpcmVjdGx5LiBBIHNvdXJjZSB0aGF0IHJlc29sdmVzXG4gICAqIHRocm91Z2ggbmVpdGhlciBmYWlscyBzdGFydHVwIHVubGVzcyBgZmFpbE9uRXJyb3I6IGZhbHNlYC5cbiAgICpcbiAgICogQUkgVG9vbHMgaXMgY2FjaGVkIGRhaWx5IHdpdGggYEBkYngtdG9vbHMvY2FjaGVgIGFuZCBzZXJ2ZWQgdG8gZXZlcnlcbiAgICogYXV0by1jcmVhdGVkIHdvcmtzcGFjZSBmcm9tIHRoZSBzaGFyZWQgYC8uZGF0YWJyaWNrcy9za2lsbHNgIG1lbW9yeSBtb3VudC5cbiAgICogT3RoZXIgc291cmNlcyBhcmUgd3JpdHRlbiB0byB0aGUgRGF0YWJyaWNrcyB1c2VyJ3MgQXNzaXN0YW50IHNraWxscyBmb2xkZXJcbiAgICogd2hlbiB3cml0YWJsZSwgd2l0aCBhIHJlYWQtb25seSBsb2NhbC1tZW1vcnkgZmFsbGJhY2suXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHRzXG4gICAqIG1hc3RyYSh7IHJlbW90ZVNraWxsczogXCJ2ZXJjZWwtbGFicy9hZ2VudC1za2lsbHNcIiB9KTtcbiAgICogbWFzdHJhKHtcbiAgICogICByZW1vdGVTa2lsbHM6IHtcbiAgICogICAgIHNvdXJjZXM6IFtcInZlcmNlbC1sYWJzL2FnZW50LXNraWxsc1wiLCBcImh0dHBzOi8vZXhhbXBsZS5jb20vc2tpbGwubWRcIl0sXG4gICAqICAgICBmYWlsT25FcnJvcjogZmFsc2UsXG4gICAqICAgfSxcbiAgICogfSk7XG4gICAqIGBgYFxuICAgKi9cbiAgcmVtb3RlU2tpbGxzPzogUmVtb3RlU2tpbGxzT3B0aW9uO1xuICAvKiogUmVhZC1vbmx5IGxvY2FsIHNraWxsIHRyZWVzIG1vdW50ZWQgZm9yIGZpbGVzLCBzZWFyY2hhYmxlIGJ5IHBhdGgsIGFuZCBwYXNzZWQgYXMgc3RhbmRhcmQgYWdlbnQtbGV2ZWwgc2tpbGxzLiAqL1xuICBsb2NhbFNraWxsTW91bnRzPzogTG9jYWxTa2lsbE1vdW50W107XG59XG5cbi8qKlxuICogSlNPTiBTY2hlbWEgcHVibGlzaGVkIG9uIHRoZSBtYW5pZmVzdCdzIGBjb25maWcuc2NoZW1hYCwgbWlycm9yaW5nIHRoZVxuICogZG9jdW1lbnRlZCBkZWZhdWx0cyBhbmQgZW52aXJvbm1lbnQgZmFsbGJhY2tzIG9mIHtAbGluayBNYXN0cmFQbHVnaW5Db25maWd9LlxuICpcbiAqIENvdmVycyB0aGUgSlNPTi1leHByZXNzaWJsZSBvcHRpb25zIG9ubHkuIGBhZ2VudHNgLCBgdG9vbHNgLCBhbmQgYVxuICogYGRlZmF1bHRNb2RlbGAgcGFzc2VkIGFzIGEgTWFzdHJhIGBEeW5hbWljQXJndW1lbnRgIGFyZSBjb2RlLWRlZmluZWRcbiAqIChmdW5jdGlvbnMgLyBjbGFzcyBpbnN0YW5jZXMpLCBzbyB0aGV5IGNhcnJ5IG5vIHNjaGVtYSBlbnRyeTsgdGhlXG4gKiBgZGVmYXVsdE1vZGVsYCBwcm9wZXJ0eSBiZWxvdyBkZXNjcmliZXMgaXRzIHN0cmluZyBmb3JtLlxuICovXG5leHBvcnQgY29uc3QgTUFTVFJBX0NPTkZJR19TQ0hFTUE6IENvbmZpZ1NjaGVtYSA9IHtcbiAgdHlwZTogXCJvYmplY3RcIixcbiAgcHJvcGVydGllczoge1xuICAgIGJhY2tncm91bmRUdXJuczoge1xuICAgICAgdHlwZTogXCJib29sZWFuXCIsXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgXCJSdW4gdHVybnMgdGhyb3VnaCBNYXN0cmEgZXZlbnRlZCBkdXJhYmxlIGV4ZWN1dGlvbiBzbyB0aGV5IGNvbnRpbnVlIGFmdGVyIGJyb3dzZXIgZGlzY29ubmVjdHMgYW5kIHJlbWFpbiByZWNvbm5lY3RhYmxlIGJ5IHJ1biBpZC4gRGVmYXVsdHMgdG8gdHJ1ZS5cIixcbiAgICB9LFxuICAgIHByb3ZpZGVySWQ6IHtcbiAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICBkZXNjcmlwdGlvbjogJ0FJIFNESyBwcm92aWRlci1vcHRpb25zIG5hbWVzcGFjZS4gRGVmYXVsdHMgdG8gXCJvcGVuYWlcIi4nLFxuICAgIH0sXG4gICAgcmVtb3RlU2tpbGxzOiB7XG4gICAgICB0eXBlOiBbXCJzdHJpbmdcIiwgXCJhcnJheVwiLCBcIm9iamVjdFwiXSxcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAnUmVtb3RlIEFnZW50LVNraWxsIHNvdXJjZXMgcHJvdmlzaW9uZWQgYXQgc3RhcnR1cCBhbmQgcGFzc2VkIHRocm91Z2ggTWFzdHJhIHN0YW5kYXJkIGFnZW50LWxldmVsIHNraWxsIHRvb2xzOiBcImFpdG9vbHNcIiBmb3IgRGF0YWJyaWNrc1xcJyBvd24gc2tpbGwgc2V0LCBhIEdpdEh1YiBvd25lci9yZXBvLCBhIGdpdC9HaXRMYWIgVVJMLCBvciBhIGRpcmVjdCBTS0lMTC5tZC9hcmNoaXZlIFVSTC4gU291cmNlcyByZXRhaW4gYSBwcm9jZXNzLW1lbW9yeSBjb3B5IGV2ZW4gd2hlbiBwZXJzaXN0ZWQgdG8gdGhlIERhdGFicmlja3MgdXNlciBBc3Npc3RhbnQgc2tpbGxzIGZvbGRlci4nLFxuICAgIH0sXG4gICAgc3RvcmFnZToge1xuICAgICAgdHlwZTogW1wiYm9vbGVhblwiLCBcIm9iamVjdFwiXSxcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICBcIlBvc3RncmVzU3RvcmUgZm9yIE1hc3RyYSB0aHJlYWRzIC8gbWVzc2FnZXMuIGB0cnVlYCBjYXB0dXJlcyB0aGUgYGxha2ViYXNlYCBwbHVnaW4ncyBleGlzdGluZyBzZXJ2aWNlLXByaW5jaXBhbCBwb29sOyBhbiBvYmplY3Qgb3BlbnMgYSBzZXBhcmF0ZWx5IGNvbmZpZ3VyZWQgc3RvcmUuIEF1dG8tZW5hYmxlZCB3aGVuIHRoZSBgbGFrZWJhc2VgIHBsdWdpbiBpcyByZWdpc3RlcmVkLlwiLFxuICAgIH0sXG4gICAgbWVtb3J5OiB7XG4gICAgICB0eXBlOiBbXCJib29sZWFuXCIsIFwib2JqZWN0XCJdLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIFwiUGdWZWN0b3Igc3RvcmUgZm9yIE1hc3RyYSBzZW1hbnRpYyByZWNhbGwuIGB0cnVlYCBjYXB0dXJlcyB0aGUgYGxha2ViYXNlYCBwbHVnaW4ncyBleGlzdGluZyBzZXJ2aWNlLXByaW5jaXBhbCBwb29sOyBhbiBvYmplY3Qgb3BlbnMgYSBzZXBhcmF0ZWx5IGNvbmZpZ3VyZWQgc3RvcmUuIEF1dG8tZW5hYmxlZCB3aGVuIHRoZSBgbGFrZWJhc2VgIHBsdWdpbiBpcyByZWdpc3RlcmVkLlwiLFxuICAgIH0sXG4gICAgY29kZU1vZGU6IHtcbiAgICAgIHR5cGU6IFtcImJvb2xlYW5cIiwgXCJvYmplY3RcIl0sXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgXCJFeHBvc2UgYWxsIGV4ZWN1dGFibGUgdG9vbHMgYXZhaWxhYmxlIHRvIHRoZSBjdXJyZW50IHJlcXVlc3QgdGhyb3VnaCBuYXRpdmUgTWFzdHJhIENvZGUgTW9kZSBmb3IgVHlwZVNjcmlwdCBiYXRjaGluZywgYWdncmVnYXRpb24sIGFuZCBhcml0aG1ldGljLiBUaGUgcGx1Z2luIHVzZXMgTWFzdHJhIGlzb2xhdGVkLXZtIHdpdGggdGhlIGV4aXN0aW5nIFF1aWNrSlMgZmFsbGJhY2s7IG5laXRoZXIgdHJhbnNwb3J0IHJ1bnMgdGhyb3VnaCB0aGUgd29ya3NwYWNlIGNvbW1hbmQgc2FuZGJveCwgc28gU1NIIGlzIHVzZWQgb25seSB3aGVuIGFuIFNTSC1iYWNrZWQgdG9vbCBpcyBjYWxsZWQuIEZhbHNlIGRpc2FibGVzIGl0LlwiLFxuICAgIH0sXG4gICAgc2FuZGJveDoge1xuICAgICAgdHlwZTogW1wiYm9vbGVhblwiLCBcInN0cmluZ1wiLCBcIm9iamVjdFwiXSxcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAnQ29tbWFuZCBzYW5kYm94IGZvciBhdXRvLWNyZWF0ZWQgYWdlbnQgd29ya3NwYWNlcy4gRGVmYXVsdHMgdG8gTW9udHkuIEZhbHNlIGRpc2FibGVzIGNvbW1hbmQgZXhlY3V0aW9uOyB0cnVlIG9yIFwibW9udHlcIiBzZWxlY3RzIE1vbnR5OyBhbiBleHBsaWNpdCBzYW5kYm94IG9yIHJlc29sdmVyIHN1cHBsaWVzIGFub3RoZXIgdHJhbnNwb3J0LicsXG4gICAgfSxcbiAgICB3b3Jrc3BhY2VGYWxsYmFja1RvVG1wOiB7XG4gICAgICB0eXBlOiBcImJvb2xlYW5cIixcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICBcIkFkZCB1c2VyLXNjb3BlZCAvdG1wIHRvIGF1dG8tY3JlYXRlZCBhZ2VudCB3b3Jrc3BhY2VzIG9ubHkgd2hlbiBubyBjb25maWd1cmVkIERhdGFicmlja3MgcGF0aCBtb3VudHMgd3JpdGFibGUuIERlZmF1bHRzIHRvIGZhbHNlLlwiLFxuICAgIH0sXG4gICAgd29ya3NwYWNlU2tpbGxzOiB7XG4gICAgICB0eXBlOiBbXCJib29sZWFuXCIsIFwib2JqZWN0XCJdLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIFwiVXNlIE1hc3RyYSdzIG5hdGl2ZSBvbi1kZW1hbmQgd29ya3NwYWNlIHNraWxsIHNlYXJjaCBhbmQgd3JpdGFibGUgc2tpbGwgc2F2ZXMuIERlZmF1bHRzIHRvIHRydWUuXCIsXG4gICAgfSxcbiAgICB3b3Jrc3BhY2VUb29sczoge1xuICAgICAgdHlwZTogXCJvYmplY3RcIixcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICBcIk5hdGl2ZSBNYXN0cmEgd29ya3NwYWNlIHRvb2wgY29uZmlndXJhdGlvbiBmb3IgYXZhaWxhYmlsaXR5LCBhcHByb3ZhbHMsIHJlYWQtYmVmb3JlLXdyaXRlLCBvdXRwdXQgbGltaXRzLCBhbmQgaG9va3MuXCIsXG4gICAgfSxcbiAgICBkZWZhdWx0QWdlbnQ6IHtcbiAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgXCJBZ2VudCBpZCB1c2VkIHdoZW4gdGhlIGNsaWVudCBuYW1lcyBub25lLiBEZWZhdWx0cyB0byB0aGUgZmlyc3QgcmVnaXN0ZXJlZCBhZ2VudCwgZWxzZSB0aGUgYnVpbHQtaW4gYGRlZmF1bHRgLlwiLFxuICAgIH0sXG4gICAgZGVmYXVsdE1vZGVsOiB7XG4gICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIFwiU2VydmluZyBlbmRwb2ludCBhcHBsaWVkIHRvIGV2ZXJ5IGFnZW50IHRoYXQgb21pdHMgaXRzIG93biBtb2RlbC4gRmFsbHMgYmFjayB0byBEQVRBQlJJQ0tTX1NFUlZJTkdfRU5EUE9JTlRfTkFNRSwgdGhlbiB0aGUgaGlnaGVzdC1yYW5rZWQgY3VycmVudGx5IGF2YWlsYWJsZSBjYXRhbG9ndWUgZW5kcG9pbnQuXCIsXG4gICAgfSxcbiAgICBkZWZhdWx0TW9kZWxGYWxsYmFja3M6IHtcbiAgICAgIHR5cGU6IFwiYXJyYXlcIixcbiAgICAgIGl0ZW1zOiB7IHR5cGU6IFwic3RyaW5nXCIgfSxcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICBcIlByaW9yaXR5LW9yZGVyZWQgZW5kcG9pbnQgbmFtZXMgdHJpZWQgYmVmb3JlIHRoZSBzY29yZS1jbGFzc2lmaWVkIGNhdGFsb2d1ZSB3aGVuIG5vdGhpbmcgZWxzZSBwaW5zIGEgbW9kZWwuXCIsXG4gICAgfSxcbiAgICBtb2RlbEZ1enp5TWF0Y2g6IHtcbiAgICAgIHR5cGU6IFwiYm9vbGVhblwiLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIFwiRnV6enktbWF0Y2ggbG9vc2UgbW9kZWwgbmFtZXMgYWdhaW5zdCB0aGUgd29ya3NwYWNlIGNhdGFsb2d1ZS4gRGVmYXVsdHMgdG8gdHJ1ZS5cIixcbiAgICB9LFxuICAgIG1vZGVsRnV6enlUaHJlc2hvbGQ6IHtcbiAgICAgIHR5cGU6IFwibnVtYmVyXCIsXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgXCJGdXNlLmpzIHNjb3JlIHRocmVzaG9sZCBmb3IgdGhlIGZ1enp5IG1hdGNoZXIsIDAgKGV4YWN0KSB0byAxIChhbnl0aGluZykuIERlZmF1bHRzIHRvIDAuNC5cIixcbiAgICB9LFxuICAgIG1vZGVsQ2FjaGVUdGxNczoge1xuICAgICAgdHlwZTogXCJudW1iZXJcIixcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICBcIlRUTCBpbiBtcyBmb3IgdGhlIHNlcnZpbmctZW5kcG9pbnRzIGxpc3QgY2FjaGUsIHBlciB3b3Jrc3BhY2UgaG9zdC4gRGVmYXVsdHMgdG8gNSBtaW51dGVzLlwiLFxuICAgIH0sXG4gICAgbW9kZWxPdmVycmlkZToge1xuICAgICAgdHlwZTogXCJib29sZWFuXCIsXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgXCJIb25vciBhIHBlci1yZXF1ZXN0IG1vZGVsIG92ZXJyaWRlIGZyb20gdGhlIFgtTWFzdHJhLU1vZGVsIGhlYWRlciwgP21vZGVsPSBxdWVyeSwgb3IgYSBgbW9kZWxgIGJvZHkgZmllbGQuIERlZmF1bHRzIHRvIHRydWUuXCIsXG4gICAgfSxcbiAgICBnZW5pZVNwYWNlczoge1xuICAgICAgdHlwZTogXCJvYmplY3RcIixcbiAgICAgIGFkZGl0aW9uYWxQcm9wZXJ0aWVzOiB7IHR5cGU6IFtcInN0cmluZ1wiLCBcIm9iamVjdFwiXSB9LFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIFwiR2VuaWUgc3BhY2VzIHRoZSBhZ2VudHMgY2FuIGRlbGVnYXRlIHRvLCBrZXllZCBieSBhbGlhcyAodGhlIHRvb2wtbmFtZSBzdWZmaXgpLiBFYWNoIHZhbHVlIGlzIGEgc3BhY2UgaWQgb3IgYHsgc3BhY2VJZCwgaGludCB9YC4gRmFsbHMgYmFjayB0byB0aGUgYGdlbmllYCBwbHVnaW4ncyBvd24gYHNwYWNlc2AgY29uZmlnLCB0aGVuIERBVEFCUklDS1NfR0VOSUVfU1BBQ0VfSUQgdW5kZXIgdGhlIGBkZWZhdWx0YCBhbGlhcy5cIixcbiAgICB9LFxuICAgIGdlbmllQWdlbnRNb2RlOiB7XG4gICAgICB0eXBlOiBcImJvb2xlYW5cIixcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICBcIlVzZSB0aGUgc3RyZWFtaW5nIEdlbmllIEFnZW50IE1vZGUgQVBJIGZvciBhZ2VudC1iYWNrZWQgYXNrX2dlbmllLiBEZWZhdWx0cyB0byB0cnVlOyBmYWxzZSBmb3JjZXMgbGVnYWN5IHBvbGxpbmcuIEZlYXR1cmUtZGlzYWJsZWQgb3IgcHJldmlldy10b2dnbGUgcmVzcG9uc2VzIGZhbGwgYmFjayBhdXRvbWF0aWNhbGx5IGJlZm9yZSBzdHJlYW1pbmcuIERpcmVjdCBHZW5pZSBjaGF0IGFsd2F5cyByZXF1aXJlcyBBZ2VudCBNb2RlLlwiLFxuICAgIH0sXG4gICAgZ2VuaWVTcGFjZUNhY2hlVHRsTXM6IHtcbiAgICAgIHR5cGU6IFwibnVtYmVyXCIsXG4gICAgICBkZXNjcmlwdGlvbjogXCJUVEwgaW4gbXMgZm9yIHRoZSBHZW5pZSBzcGFjZSBtZXRhZGF0YSBjYWNoZS4gRGVmYXVsdHMgdG8gNSBtaW51dGVzLlwiLFxuICAgIH0sXG4gICAgYWdlbnRNYXhTdGVwczoge1xuICAgICAgdHlwZTogXCJudW1iZXJcIixcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICBcIk1heGltdW0gTExNIHN0ZXBzIGVhY2ggYWdlbnQgZ2V0cyBwZXIgdHVybiAoYSB0b29sIGNhbGwgYW5kIHRoZSBmaW5hbCByZXBseSBlYWNoIGNvbnN1bWUgb25lKS4gRGVmYXVsdHMgdG8gMjUuXCIsXG4gICAgfSxcbiAgICBzdHJpcFN0YWxlQ2hhcnRzOiB7XG4gICAgICB0eXBlOiBcImJvb2xlYW5cIixcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICBcIlN0cmlwIGNoYXJ0SWRzIGZyb20gcmVjYWxsZWQgYXNzaXN0YW50IHRvb2wgcmVzdWx0cyBzbyB0aGUgbW9kZWwgY2Fubm90IHJldXNlIGEgdHVybi1zY29wZWQgY2hhcnQgbWFya2VyLiBEZWZhdWx0cyB0byB0cnVlLlwiLFxuICAgIH0sXG4gICAgc3R5bGVJbnN0cnVjdGlvbnM6IHtcbiAgICAgIHR5cGU6IFtcInN0cmluZ1wiLCBcImJvb2xlYW5cIl0sXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgXCJTdHlsZSBndWFyZHJhaWxzIGFwcGVuZGVkIHRvIGV2ZXJ5IGFnZW50J3MgaW5zdHJ1Y3Rpb25zLiBBIHN0cmluZyByZXBsYWNlcyB0aGUgYnVpbHQtaW4gYmxvY2ssIGBmYWxzZWAgZGlzYWJsZXMgaXQuXCIsXG4gICAgfSxcbiAgICBvYnNlcnZhYmlsaXR5OiB7XG4gICAgICB0eXBlOiBcImJvb2xlYW5cIixcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICBcIkJyaWRnZSBNYXN0cmEgc3BhbnMgaW50byBBcHBLaXQncyBPVGVsIHBpcGVsaW5lLiBEZWZhdWx0cyB0byBvbiBvbmx5IHdoZW4gT1RFTF9FWFBPUlRFUl9PVExQX0VORFBPSU5UIG9yIE9URUxfRVhQT1JURVJfT1RMUF9UUkFDRVNfRU5EUE9JTlQgaXMgc2V0LlwiLFxuICAgIH0sXG4gICAgZmVlZGJhY2s6IHtcbiAgICAgIHR5cGU6IFwiYm9vbGVhblwiLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIFwiTG9nIHRodW1icyAvIGNvbW1lbnQgYXNzZXNzbWVudHMgdG8gTUxmbG93IGFuZCBzdXJmYWNlIHRoZSBmZWVkYmFjayBjb250cm9scy4gRGVmYXVsdHMgdG8gb24gb25seSB3aGVuIGFuIE9UTFAgZW5kcG9pbnQgYW5kIE1MRkxPV19FWFBFUklNRU5UX0lEIG9yIE1MRkxPV19FWFBFUklNRU5UX05BTUUgYXJlIHNldC4gRXhwbGljaXQgdHJ1ZSBmYWlscyBzdGFydHVwIHVubGVzcyBhbiBleHBlcmltZW50IGlkIG9yIG5hbWUgaXMgY29uZmlndXJlZC5cIixcbiAgICB9LFxuICAgIG1jcDoge1xuICAgICAgdHlwZTogW1wiYm9vbGVhblwiLCBcIm9iamVjdFwiXSxcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICBcIkV4cG9zZSB0aGUgcmVnaXN0ZXJlZCBhZ2VudHMgb3ZlciBNQ1AuIERlZmF1bHRzIHRvIGFnZW50cy1vbmx5OyBhbiBvYmplY3QgdHVuZXMgdGhlIHNlcnZlciBpZCwgYWR2ZXJ0aXNlZCBtZXRhZGF0YSwgYW5kIHdoZXRoZXIgYW1iaWVudCB0b29scyBhcmUgZXhwb3NlZC5cIixcbiAgICB9LFxuICAgIGdlbmllSWRlbnRpdHk6IHtcbiAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAvLyBEZXJpdmVkIGZyb20gdGhlIHJlc29sdmVyJ3Mgb3duIGxpc3QsIHNvIGEgbW9kZSBjYW4gbmV2ZXIgYmUgYWNjZXB0ZWQgYXRcbiAgICAgIC8vIHJ1bnRpbWUgd2hpbGUgdGhlIHB1Ymxpc2hlZCBzY2hlbWEgKGFuZCB0aGUgVUkgYnVpbHQgZnJvbSBpdCkgb21pdHMgaXQuXG4gICAgICBlbnVtOiBbLi4uSURFTlRJVFlfTU9ERVNdLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICdXaGljaCBEYXRhYnJpY2tzIGlkZW50aXR5IGFnZW50LWJhY2tlZCB3b3Jrc3BhY2UgY2FsbHMgKHNlcnZpbmcgY2F0YWxvZ3VlLCBHZW5pZSwgc3RhdGVtZW50IGV4ZWN1dGlvbikgcnVuIGFzLiBEaXJlY3QgR2VuaWUgY2hhdCBhbHdheXMgdXNlcyBPQk8uIFwidXNlclwiIChkZWZhdWx0KSBpcyBhbHdheXMgT0JPLCBzbyBjYWxsZXJzIG11c3QgYmUgd29ya3NwYWNlIG1lbWJlcnM7IFwic2VydmljZS1wcmluY2lwYWxcIiBhbHdheXMgdXNlcyB0aGUgYXBwIHNlcnZpY2UgcHJpbmNpcGFsLCBzbyBhbnkgY2FsbGVyIHdobyBjYW4gb3BlbiB0aGUgYXBwIHdvcmtzLCBhdCB0aGUgY29zdCBvZiBwZXItdXNlciBhdHRyaWJ1dGlvbjsgXCJhdXRvXCIgdXNlcyBPQk8gd2hlbiB0aGUgcmVxdWVzdCBjYXJyaWVzIGFuIE9CTyB0b2tlbiBhbmQgdGhlIHNlcnZpY2UgcHJpbmNpcGFsIHdoZW4gaXQgZG9lcyBub3QsIGZvciBhbiBhcHAgdGhhdCBhbHNvIHNlcnZlcyBhIHR1bm5lbCBvciB3ZWJob29rIGRvb3IuIEZhbGxzIGJhY2sgdG8gTUFTVFJBX0dFTklFX0lERU5USVRZLicsXG4gICAgfSxcbiAgICBhcGlBY2Nlc3M6IHtcbiAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICBlbnVtOiBbXCJzY29wZWRcIiwgXCJmdWxsXCJdLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICdIb3cgbXVjaCBvZiB0aGUgc3RvY2sgQG1hc3RyYS9leHByZXNzIEFQSSBpcyByZWFjaGFibGUgdGhyb3VnaCB0aGUgbW91bnQuIFwic2NvcGVkXCIgKGRlZmF1bHQpIGFsbG93cyBhZ2VudCBpbmZlcmVuY2UsIHJlYWQtb25seSBhZ2VudCBtZXRhZGF0YSwgdGhpcyBwbHVnaW5cXCdzIG93biByb3V0ZXMsIGFuZCBNQ1A7IFwiZnVsbFwiIGRpc3BhdGNoZXMgdGhlIGVudGlyZSBtYW5hZ2VtZW50IHN1cmZhY2UuJyxcbiAgICB9LFxuICAgIGJyYW5kOiB7XG4gICAgICB0eXBlOiBcIm9iamVjdFwiLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIFwiUG9ydGFibGUgYnJhbmQgY29udGV4dCBhcHBsaWVkIHRvIGdlbmVyYXRlZCBjaGFydHMgKHNlcmllcyBwYWxldHRlIGZyb20gY29sb3JzLnByaW1hcnkgLyBjb2xvcnMuYWNjZW50LCBiYXNlIGZvbnQgZnJvbSB0eXBvZ3JhcGh5LnNhbnMpLlwiLFxuICAgIH0sXG4gIH0sXG59O1xuIl19
|
|
257
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUVILE9BQU8sRUFBRSxtQkFBbUIsRUFBNEMsTUFBTSxvQkFBb0IsQ0FBQztBQU1uRyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQVc1RixPQUFPLEVBQUUsY0FBYyxFQUEyQixNQUFNLGVBQWUsQ0FBQztBQUd4RTs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLGNBQWMsQ0FBQztBQUU5Qzs7Ozs7R0FLRztBQUNILE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLGtCQUFrQixDQUFDO0FBQ3ZELDZFQUE2RTtBQUM3RSxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxtQkFBbUIsQ0FBQztBQUN6RCxrRkFBa0Y7QUFDbEYsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsa0JBQWtCLENBQUM7QUFFdkQ7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxtQkFBbUIsQ0FBQztBQUV6RDs7Ozs7R0FLRztBQUNILE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLGdCQUFnQixDQUFDO0FBRWxEOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFDSCxNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FBc0I7SUFDM0Qsc0JBQXNCO0lBQ3RCLG9CQUFvQjtJQUNwQixxQkFBcUI7SUFDckIsb0JBQW9CO0lBQ3BCLHFCQUFxQjtJQUNyQixvQkFBb0I7SUFDcEIsbUVBQW1FO0lBQ25FLGlFQUFpRTtJQUNqRSx3QkFBd0I7Q0FDekIsQ0FBQztBQVFGOzs7R0FHRztBQUNILE1BQU0sVUFBVSxzQkFBc0IsQ0FBQyxPQUFvQztJQUN6RSxPQUFPLFFBQVEsSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FB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QUFJLEVBQUUsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDO1lBQ3hCLFdBQVcsRUFDVCxxT0FBcU87U0FDeE87UUFDRCxLQUFLLEVBQUU7WUFDTCxJQUFJLEVBQUUsUUFBUTtZQUNkLFdBQVcsRUFDVCwwSUFBMEk7U0FDN0k7S0FDRjtDQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFBsdWdpbiBjb25maWd1cmF0aW9uIHR5cGVzIGFuZCBzaGFyZWQgYFJlcXVlc3RDb250ZXh0YCBrZXlzLlxuICpcbiAqIE93bnMgdGhlIHR5cGVkIHtAbGluayBNYXN0cmFQbHVnaW5Db25maWd9ICh0aGUgcGx1Z2luJ3Mgc2xpY2Ugb2YgQXBwS2l0XG4gKiBjb25maWcpIGFuZCB7QGxpbmsgTUFTVFJBX0NPTkZJR19TQ0hFTUF9LCB0aGUgSlNPTiBTY2hlbWEgdGhlIG1hbmlmZXN0XG4gKiBwdWJsaXNoZXMgZm9yIGl0IHNvIHNjYWZmb2xkaW5nIHRvb2xzIGFuZCBhZ2VudHMgY2FuIHJlYWQgdGhlIG9wdGlvbiBzZXQuXG4gKlxuICogUHJlY2VkZW5jZSBwZXIgZmllbGQgaXMgZXhwbGljaXQgcGx1Z2luIGNvbmZpZywgdGhlbiB0aGUgZW52aXJvbm1lbnRcbiAqIHZhcmlhYmxlIG5hbWVkIG9uIHRoZSBmaWVsZCwgdGhlbiBhIGJ1aWx0LWluIGRlZmF1bHQuXG4gKlxuICogS2VwdCBpbiBhIGxlYWYgbW9kdWxlIHNvIGBwbHVnaW4udHNgLCBgc2VydmVyLnRzYCwgYG1vZGVsLnRzYCwgYW5kXG4gKiBgbWVtb3J5LnRzYCBjYW4gaW1wb3J0IHRoZW0gd2l0aG91dCBjcmVhdGluZyBhIGN5Y2xlLlxuICpcbiAqIEBtb2R1bGVcbiAqL1xuXG5pbXBvcnQgeyBnZXRFeGVjdXRpb25Db250ZXh0LCB0eXBlIEJhc2VQbHVnaW5Db25maWcsIHR5cGUgQ29uZmlnU2NoZW1hIH0gZnJvbSBcIkBkYXRhYnJpY2tzL2FwcGtpdFwiO1xuaW1wb3J0IHsgYXBwa2l0IH0gZnJvbSBcIkBkYngtdG9vbHMvYXBwa2l0XCI7XG5pbXBvcnQgdHlwZSB7IEJyYW5kQ29udGV4dCB9IGZyb20gXCJAZGJ4LXRvb2xzL3NoYXJlZC1jb3JlXCI7XG5pbXBvcnQgdHlwZSB7IEZlZWRiYWNrTW9kZU9wdGlvbiB9IGZyb20gXCJAZGJ4LXRvb2xzL3NoYXJlZC1tYXN0cmEvZmVlZGJhY2tcIjtcbmltcG9ydCB0eXBlIHsgQWdlbnRDb25maWcgfSBmcm9tIFwiQG1hc3RyYS9jb3JlL2FnZW50XCI7XG5pbXBvcnQgdHlwZSB7IFJlcXVlc3RDb250ZXh0IH0gZnJvbSBcIkBtYXN0cmEvY29yZS9yZXF1ZXN0LWNvbnRleHRcIjtcbmltcG9ydCB7IE1BU1RSQV9SRVNPVVJDRV9JRF9LRVksIE1BU1RSQV9USFJFQURfSURfS0VZIH0gZnJvbSBcIkBtYXN0cmEvY29yZS9yZXF1ZXN0LWNvbnRleHRcIjtcbmltcG9ydCB0eXBlIHsgQW55V29ya2Zsb3cgfSBmcm9tIFwiQG1hc3RyYS9jb3JlL3dvcmtmbG93c1wiO1xuaW1wb3J0IHR5cGUge1xuICBXb3Jrc3BhY2VTYW5kYm94LFxuICBXb3Jrc3BhY2VTYW5kYm94UmVzb2x2ZXIsXG4gIFdvcmtzcGFjZVRvb2xzQ29uZmlnLFxufSBmcm9tIFwiQG1hc3RyYS9jb3JlL3dvcmtzcGFjZVwiO1xuaW1wb3J0IHR5cGUgeyBQZ1ZlY3RvckNvbmZpZywgUG9zdGdyZXNTdG9yZUNvbmZpZyB9IGZyb20gXCJAbWFzdHJhL3BnXCI7XG5cbmltcG9ydCB0eXBlIHsgQW55TWFzdHJhQWdlbnREZWZpbml0aW9uLCBNYXN0cmFUb29scyB9IGZyb20gXCIuL2FnZW50cy50c1wiO1xuaW1wb3J0IHR5cGUgeyBHZW5pZVNwYWNlc0NvbmZpZyB9IGZyb20gXCIuL2dlbmllLnRzXCI7XG5pbXBvcnQgeyBJREVOVElUWV9NT0RFUywgdHlwZSBNYXN0cmFJZGVudGl0eU1vZGUgfSBmcm9tIFwiLi9pZGVudGl0eS50c1wiO1xuaW1wb3J0IHR5cGUgeyBMb2NhbFNraWxsTW91bnQsIFJlbW90ZVNraWxsc09wdGlvbiB9IGZyb20gXCIuL3JlbW90ZS1za2lsbHMudHNcIjtcblxuLyoqXG4gKiBgUmVxdWVzdENvbnRleHRgIGtleSB1bmRlciB3aGljaCB7QGxpbmsgTWFzdHJhU2VydmVyfSBzdG9yZXMgdGhlXG4gKiByZXNvbHZlZCBBcHBLaXQgdXNlci4gYG1vZGVsLnRzYCByZWFkcyBpdCB0byBtaW50IHVzZXItc2NvcGVkXG4gKiBEYXRhYnJpY2tzIHRva2Vucy5cbiAqL1xuZXhwb3J0IGNvbnN0IE1BU1RSQV9VU0VSX0tFWSA9IFwibWFzdHJhX191c2VyXCI7XG5cbi8qKlxuICogYFJlcXVlc3RDb250ZXh0YCBrZXlzIGZvciBBcHBLaXQgdXNlciBtZXRhZGF0YSBzdGFtcGVkIGJ5XG4gKiB7QGxpbmsgTWFzdHJhU2VydmVyfS4gU3VyZmFjZWQgYXMgdHJhY2UgbWV0YWRhdGEgdmlhXG4gKiB7QGxpbmsgVFJBQ0VfUkVRVUVTVF9DT05URVhUX0tFWVN9IHNvIHRyYWNlcyBhcmUgZmlsdGVyYWJsZSBieSB3aG9cbiAqIGlzc3VlZCB0aGUgcmVxdWVzdCB3aXRob3V0IGxlYWtpbmcgdGhlIGZ1bGwgdXNlciBvYmplY3QuXG4gKi9cbmV4cG9ydCBjb25zdCBNQVNUUkFfVVNFUl9OQU1FX0tFWSA9IFwibWFzdHJhX191c2VyTmFtZVwiO1xuLyoqIFJlcXVlc3QtY29udGV4dCBrZXkgY29udGFpbmluZyB0aGUgYXV0aGVudGljYXRlZCB1c2VyJ3MgZW1haWwgYWRkcmVzcy4gKi9cbmV4cG9ydCBjb25zdCBNQVNUUkFfVVNFUl9FTUFJTF9LRVkgPSBcIm1hc3RyYV9fdXNlckVtYWlsXCI7XG4vKiogUmVxdWVzdC1jb250ZXh0IGtleSBpZGVudGlmeWluZyB0aGUgRGF0YWJyaWNrcyBjcmVkZW50aWFsIHVzZWQgYnkgdGhlIHR1cm4uICovXG5leHBvcnQgY29uc3QgTUFTVFJBX0FVVEhfTU9ERV9LRVkgPSBcIm1hc3RyYV9fYXV0aE1vZGVcIjtcblxuLyoqXG4gKiBgUmVxdWVzdENvbnRleHRgIGtleSBmb3IgdGhlIHBlci1IVFRQLXJlcXVlc3QgaWQgc3RhbXBlZCBieVxuICoge0BsaW5rIE1hc3RyYVNlcnZlcn0uIFJlYWRzIGBYLVJlcXVlc3QtSWRgIGZyb20gdGhlIGluY29taW5nXG4gKiBoZWFkZXJzIHdoZW4gcHJlc2VudCAoc28gYW4gdXBzdHJlYW0gbG9hZCBiYWxhbmNlciAvIEFQSSBnYXRld2F5XG4gKiBjYW4ga2VlcCBpdHMgdHJhY2UgY29ycmVsYXRpb24pLCBmYWxscyBiYWNrIHRvIGEgZnJlc2hseSBtaW50ZWRcbiAqIFVVSUQuIEVjaG9lZCBiYWNrIG9uIHRoZSByZXNwb25zZSBhbmQgc3VyZmFjZWQgb24gZXZlcnkgc3BhbiB2aWFcbiAqIHtAbGluayBUUkFDRV9SRVFVRVNUX0NPTlRFWFRfS0VZU30gc28gbG9ncyBhbmQgdHJhY2VzIHNoYXJlIGFcbiAqIGpvaW4ga2V5LlxuICovXG5leHBvcnQgY29uc3QgTUFTVFJBX1JFUVVFU1RfSURfS0VZID0gXCJtYXN0cmFfX3JlcXVlc3RJZFwiO1xuXG4vKipcbiAqIGBSZXF1ZXN0Q29udGV4dGAga2V5IGZvciBPQXV0aCBzY29wZXMgcGFyc2VkIGZyb20gdGhlIGZvcndhcmRlZFxuICogYWNjZXNzIHRva2VuIGJ5IHtAbGluayBNYXN0cmFTZXJ2ZXIuY29uZmlndXJlUmVxdWVzdENvbnRleHRTY29wZXN9LlxuICogV29ya3NwYWNlIG1vdW50cyB0aGF0IHRvdWNoIERhdGFicmlja3Mgd29ya3NwYWNlIGZpbGVzIHJlcXVpcmVcbiAqIGB3b3Jrc3BhY2VgIG9yIGBhbGwtYXBpc2AgaW4gdGhpcyBsaXN0LlxuICovXG5leHBvcnQgY29uc3QgTUFTVFJBX1NDT1BFU19LRVkgPSBcIm1hc3RyYV9fc2NvcGVzXCI7XG5cbi8qKlxuICogQ2Fub25pY2FsIGxpc3Qgb2YgYFJlcXVlc3RDb250ZXh0YCBrZXlzIHdlIHdhbnQgTWFzdHJhIHRvIGV4dHJhY3RcbiAqIGFzIG1ldGFkYXRhIG9uIGV2ZXJ5IG9ic2VydmFiaWxpdHkgc3BhbiAoYWdlbnQgcnVucywgbW9kZWwgY2FsbHMsXG4gKiB0b29sIGludm9jYXRpb25zLCB3b3JrZmxvdyBzdGVwcykuXG4gKlxuICogTWlycm9ycyB7QGxpbmsgaHR0cHM6Ly9tYXN0cmEuYWkvZG9jcy9vYnNlcnZhYmlsaXR5L3RyYWNpbmcvb3ZlcnZpZXcjYXV0b21hdGljLW1ldGFkYXRhLWZyb20tcmVxdWVzdGNvbnRleHR9OlxuICogcGFzc2VkIHZlcmJhdGltIGludG8gYE9ic2VydmFiaWxpdHkuY29uZmlnc1sqXS5yZXF1ZXN0Q29udGV4dEtleXNgLFxuICogc28gYW55IGtleSBsaXN0ZWQgaGVyZSBpcyByZWFkIGZyb20gYFJlcXVlc3RDb250ZXh0YCBhdCB0cmFjZVxuICogc3RhcnQgYW5kIGF0dGFjaGVkIGFzIHNjYWxhciBzcGFuIG1ldGFkYXRhLiBLZWVwIHRoZSBzZXQgdG8gcGxhaW5cbiAqIHNjYWxhcnMgLSBuZXZlciBpbmNsdWRlIHtAbGluayBNQVNUUkFfVVNFUl9LRVl9IChpdCBjYXJyaWVzIHRoZVxuICogZnVsbCBBcHBLaXQgZXhlY3V0aW9uIGNvbnRleHQgd2l0aCBhIGBXb3Jrc3BhY2VDbGllbnRgIHJlZmVyZW5jZSkuXG4gKlxuICogT3JkZXIgaXMgcHVyZWx5IGNvc21ldGljOyBNYXN0cmEgZGUtZHVwZXMgaW50ZXJuYWxseS5cbiAqL1xuZXhwb3J0IGNvbnN0IFRSQUNFX1JFUVVFU1RfQ09OVEVYVF9LRVlTOiByZWFkb25seSBzdHJpbmdbXSA9IFtcbiAgTUFTVFJBX1JFU09VUkNFX0lEX0tFWSxcbiAgTUFTVFJBX1RIUkVBRF9JRF9LRVksXG4gIE1BU1RSQV9SRVFVRVNUX0lEX0tFWSxcbiAgTUFTVFJBX1VTRVJfTkFNRV9LRVksXG4gIE1BU1RSQV9VU0VSX0VNQUlMX0tFWSxcbiAgTUFTVFJBX0FVVEhfTU9ERV9LRVksXG4gIC8vIE1vZGVsIG92ZXJyaWRlIGtleSBpcyBvd25lZCBieSBgc2VydmluZy50c2A7IHNwZWxsZWQgaW5saW5lIGhlcmVcbiAgLy8gc28gdGhpcyBtb2R1bGUgc3RheXMgbGVhZi1sZXZlbCAobm8gY3ljbGVzIHdpdGggYHNlcnZpbmcudHNgKS5cbiAgXCJtYXN0cmFfX21vZGVsX292ZXJyaWRlXCIsXG5dO1xuXG4vKiogQXBwS2l0IGV4ZWN1dGlvbiBjb250ZXh0IHBsdXMgdGhlIGNhbm9uaWNhbCB1c2VyIGlkLiAqL1xuZXhwb3J0IGludGVyZmFjZSBVc2VyIHtcbiAgaWQ6IHN0cmluZztcbiAgZXhlY3V0aW9uQ29udGV4dDogYXBwa2l0LkV4ZWN1dGlvbkNvbnRleHRMaWtlO1xufVxuXG4vKipcbiAqIENhbm9uaWNhbCBpZGVudGl0eSBmb3IgYW4gQXBwS2l0IGV4ZWN1dGlvbiBjb250ZXh0OiB0aGUgT0JPIHVzZXIgaWQgb24gYVxuICogdXNlci1zY29wZWQgY2FsbCwgdGhlIHNlcnZpY2UgcHJpbmNpcGFsIGlkIG90aGVyd2lzZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV4ZWN1dGlvbkNvbnRleHRVc2VySWQoY29udGV4dDogYXBwa2l0LkV4ZWN1dGlvbkNvbnRleHRMaWtlKTogc3RyaW5nIHtcbiAgcmV0dXJuIFwidXNlcklkXCIgaW4gY29udGV4dCA/IGNvbnRleHQudXNlcklkIDogY29udGV4dC5zZXJ2aWNlVXNlcklkO1xufVxuXG4vKipcbiAqIFdobyBhIHR1cm4gaXMgQVRUUklCVVRFRCB0bywgd2hpY2ggaXMgbm90IGFsd2F5cyB3aG9zZSBEYXRhYnJpY2tzIGNyZWRlbnRpYWxcbiAqIHJ1bnMgaXQuIEFuIE9CTyBjb250ZXh0J3Mgb3duIHVzZXIgaWQgaXMgYXV0aG9yaXRhdGl2ZS4gVW5kZXIgdGhlIHNlcnZpY2VcbiAqIHByaW5jaXBhbCwgZXZlcnkgY2FsbGVyIHNoYXJlcyBvbmUgY3JlZGVudGlhbCwgc28gdGhlIGZvcndhcmRlZCB1c2VyIGlkIGlzXG4gKiB3aGF0IGtlZXBzIG1lbW9yeSB0aHJlYWRzIGFuZCBwZXItdXNlciBjYWNoZSBuYW1lc3BhY2VzIGRpc3RpbmN0OyB0aGUgc2VydmljZVxuICogcHJpbmNpcGFsIGlkIGlzIHRoZSBmbG9vciB3aGVuIG5vIHVzZXIgd2FzIGZvcndhcmRlZC5cbiAqXG4gKiBUaGlzIHJ1bGUgaGFzIHRvIGJlIGlkZW50aWNhbCBldmVyeXdoZXJlIGEgY2FjaGUga2V5IGlzIGJ1aWx0LCBzbyBib3RoIHRoZVxuICogd3JpdGUgc2lkZSAodGhlIGBSZXF1ZXN0Q29udGV4dGAgdXNlciBzdGFtcGVkIGJ5IGBzdGFtcFJlcXVlc3RDb250ZXh0VXNlcmApXG4gKiBhbmQgdGhlIHJlYWQgc2lkZSAodGhlIHBsdWdpbidzIG93biBBcHBLaXQgcm91dGVzLCB3aGljaCBoYXZlIGEgcmVxdWVzdCBidXRcbiAqIG5vIGBSZXF1ZXN0Q29udGV4dGApIGRlcml2ZSB0aGVpciBrZXkgZnJvbSB0aGlzIG9uZSBmdW5jdGlvbi4gV2hlbiB0aGUgdHdvXG4gKiBkaXNhZ3JlZWQsIGEgY2hhcnQgd3JpdHRlbiB1bmRlciB0aGUgZm9yd2FyZGVkIHVzZXIgaWQgd2FzIHJlYWQgYmFjayB1bmRlclxuICogdGhlIHNlcnZpY2UgcHJpbmNpcGFsIGlkIGFuZCB0aGUgZW1iZWQgcm91dGUgYW5zd2VyZWQgNDA0LCB3aGljaCB0aGUgY2hhdCBVSVxuICogcmVuZGVycyBhcyBhbiBleHBpcmVkIGNoYXJ0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXR0cmlidXRlZFVzZXJJZChcbiAgZXhlY3V0aW9uQ29udGV4dDogYXBwa2l0LkV4ZWN1dGlvbkNvbnRleHRMaWtlLFxuICBmb3J3YXJkZWRVc2VySWQ/OiBzdHJpbmcsXG4pOiBzdHJpbmcge1xuICBpZiAoXCJpc1VzZXJDb250ZXh0XCIgaW4gZXhlY3V0aW9uQ29udGV4dCkgcmV0dXJuIGV4ZWN1dGlvbkNvbnRleHRVc2VySWQoZXhlY3V0aW9uQ29udGV4dCk7XG4gIHJldHVybiBmb3J3YXJkZWRVc2VySWQgPz8gZXhlY3V0aW9uQ29udGV4dFVzZXJJZChleGVjdXRpb25Db250ZXh0KTtcbn1cblxuLyoqXG4gKiBJZGVudGl0eSBldmVyeSBwZXItdXNlciBjYWNoZSBlbnRyeSBpcyBuYW1lc3BhY2VkIHVuZGVyLCBzbyBhbiBPQk8gcmVzdWx0XG4gKiBjYW5ub3QgYmUgcmVhZCBiYWNrIGJ5IGFub3RoZXIgY2FsbGVyLlxuICpcbiAqIFByZWZlcnMgdGhlIHtAbGluayBVc2VyfSB0aGF0IHtAbGluayBNYXN0cmFTZXJ2ZXJ9IHN0YW1wcyBvbiB0aGUgcmVxdWVzdFxuICogY29udGV4dCwgd2hvc2UgaWQgYWxyZWFkeSBmb2xsb3dzIHtAbGluayBhdHRyaWJ1dGVkVXNlcklkfS4gVGhlIE1DUCB0cmFuc3BvcnRcbiAqIHJvdXRlcyBkbyBub3QgdGhyZWFkIHRoYXQgY29udGV4dCBpbnRvIHRvb2wgZXhlY3V0aW9uLCBzbyB0aG9zZSBmYWxsIGJhY2sgdG9cbiAqIHRoZSBhbWJpZW50IGV4ZWN1dGlvbiBjb250ZXh0ICh0aGUgYWN0aXZlIE9CTyBzY29wZSwgb3IgdGhlIHNlcnZpY2VcbiAqIHByaW5jaXBhbCkuIEEgY2FsbGVyIGhvbGRpbmcgYW4gZXhwcmVzcyByZXF1ZXN0IHNob3VsZCBidWlsZCBpdHMga2V5IGZyb21cbiAqIHtAbGluayBhdHRyaWJ1dGVkVXNlcklkfSBpbnN0ZWFkLCBzbyB0aGUgZm9yd2FyZGVkIHVzZXIgaXMgbm90IGxvc3QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlVXNlcktleShyZXF1ZXN0Q29udGV4dD86IFJlcXVlc3RDb250ZXh0KTogc3RyaW5nIHtcbiAgY29uc3QgdXNlciA9IHJlcXVlc3RDb250ZXh0Py5nZXQoTUFTVFJBX1VTRVJfS0VZKSBhcyBVc2VyIHwgdW5kZWZpbmVkO1xuICByZXR1cm4gdXNlcj8uaWQgPz8gZXhlY3V0aW9uQ29udGV4dFVzZXJJZChnZXRFeGVjdXRpb25Db250ZXh0KCkpO1xufVxuXG4vKiogUGdWZWN0b3IgY29uZmlnIHdpdGggYW4gb3B0aW9uYWwgTWFzdHJhIHN0b3JlIGlkLiAqL1xuZXhwb3J0IHR5cGUgTWFzdHJhTWVtb3J5Q29uZmlnID0gUGdWZWN0b3JDb25maWcgJiB7XG4gIGlkPzogc3RyaW5nO1xufTtcblxuLyoqIE1hc3RyYSBuYXRpdmUgd29ya3NwYWNlIHNraWxsLXNlYXJjaCBjb25maWd1cmF0aW9uLiAqL1xuZXhwb3J0IGludGVyZmFjZSBNYXN0cmFXb3Jrc3BhY2VTa2lsbHNDb25maWcge1xuICAvKiogTWF4aW11bSBza2lsbCBtYXRjaGVzIHJldHVybmVkIGJ5IG9uZSBzZWFyY2guIERlZmF1bHRzIHRvIDUuICovXG4gIHRvcEs/OiBudW1iZXI7XG4gIC8qKiBNaW5pbXVtIEJNMjUgcmVsZXZhbmNlIHNjb3JlLiBEZWZhdWx0cyB0byAwLjEuICovXG4gIG1pblNjb3JlPzogbnVtYmVyO1xuICAvKiogTG9hZGVkLXNraWxsIHRocmVhZC1zdGF0ZSBUVEwgaW4gbWlsbGlzZWNvbmRzLiBEZWZhdWx0cyB0byBvbmUgaG91ci4gKi9cbiAgdHRsTXM/OiBudW1iZXI7XG59XG5cbi8qKiBOYXRpdmUgTWFzdHJhIENvZGUgTW9kZSBzZXR0aW5ncyBmb3Igc2FuZGJveGVkIG11bHRpLXRvb2wgb3JjaGVzdHJhdGlvbi4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWFzdHJhQ29kZU1vZGVDb25maWcge1xuICAvKiogR2VuZXJhdGVkIG9yY2hlc3RyYXRpb24gdG9vbCBpZC4gRGVmYXVsdHMgdG8gYGV4ZWN1dGVfdHlwZXNjcmlwdGAuICovXG4gIGlkPzogc3RyaW5nO1xuICAvKiogTWF4aW11bSBvcmNoZXN0cmF0aW9uIHByb2dyYW0gcnVudGltZSBpbiBtaWxsaXNlY29uZHMuIERlZmF1bHRzIHRvIDMwIHNlY29uZHMuICovXG4gIHRpbWVvdXQ/OiBudW1iZXI7XG59XG5cbi8qKlxuICogRmluZS1ncmFpbmVkIGNvbnRyb2wgZm9yIHRoZSBvcHRpb25hbCBNQ1Agc2VydmVyIGV4cG9zdXJlXG4gKiAoe0BsaW5rIE1hc3RyYVBsdWdpbkNvbmZpZy5tY3B9KS4gRXZlcnkgZmllbGQgaXMgb3B0aW9uYWw7IHRoZSBvYmplY3RcbiAqIGZvcm0gb25seSBuZWVkcyB0byBzZXQgd2hhdCBkaWZmZXJzIGZyb20gdGhlIGRlZmF1bHRzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1hc3RyYU1jcENvbmZpZyB7XG4gIC8qKlxuICAgKiBTZXJ2ZXIgaWQgdXNlZCBpbiB0aGUgcm91dGUgcGF0aCAoYC9tY3AvPHNlcnZlcklkPi8uLi5gKSBhbmQgYXMgdGhlXG4gICAqIE1DUCByZWdpc3RyeSBpZC4gRGVmYXVsdHMgdG8gdGhlIHBsdWdpbidzIHJlZ2lzdGVyZWQgbmFtZS5cbiAgICovXG4gIHNlcnZlcklkPzogc3RyaW5nO1xuICAvKiogRGlzcGxheSBuYW1lIGFkdmVydGlzZWQgb3ZlciBNQ1AuIERlZmF1bHRzIHRvIGBcIjxkaXNwbGF5TmFtZT4gTUNQXCJgLiAqL1xuICBuYW1lPzogc3RyaW5nO1xuICAvKiogU2VtYW50aWMgdmVyc2lvbiBhZHZlcnRpc2VkIG92ZXIgTUNQLiBEZWZhdWx0cyB0byBgXCIxLjAuMFwiYC4gKi9cbiAgdmVyc2lvbj86IHN0cmluZztcbiAgLyoqIE9wdGlvbmFsIGh1bWFuLXJlYWRhYmxlIGRlc2NyaXB0aW9uIGFkdmVydGlzZWQgb3ZlciBNQ1AuICovXG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAvKipcbiAgICogRXhwb3NlIGV2ZXJ5IHJlZ2lzdGVyZWQgYWdlbnQgYXMgYW4gYGFza188YWdlbnRJZD5gIE1DUCB0b29sLlxuICAgKiBEZWZhdWx0cyB0byBgdHJ1ZWAgLSB0aGlzIGlzIHRoZSBcImxldmVyYWdlIHRoZSBNYXN0cmEgYWdlbnRzIG92ZXJcbiAgICogTUNQXCIgYmVoYXZpb3IgbW9zdCBjYWxsZXJzIHdhbnQuXG4gICAqL1xuICBhZ2VudHM/OiBib29sZWFuO1xuICAvKipcbiAgICogQWxzbyBleHBvc2UgdGhlIHBsdWdpbidzIGFtYmllbnQgdG9vbHMgKHRoZSBidWlsdC1pbiBgcmVuZGVyX2RhdGFgXG4gICAqIHBsdXMgYW55dGhpbmcgaW4gYGNvbmZpZy50b29sc2ApIGFzIE1DUCB0b29scy4gRGVmYXVsdHMgdG8gYGZhbHNlYDpcbiAgICogdGhlIGFtYmllbnQgdG9vbHMgYXNzdW1lIGFuIGluLXByb2Nlc3MgY2hhdCB0dXJuICh0aGV5IHB1Ymxpc2hcbiAgICogd3JpdGVyIGV2ZW50cyB0aGUgY2hhdCBVSSBjb25zdW1lcyksIHNvIHRoZXkgYXJlbid0IHVzZWZ1bCB0byBhXG4gICAqIHN0YW5kYWxvbmUgTUNQIGNsaWVudC4gVHVybiB0aGlzIG9uIG9ubHkgd2hlbiB0aG9zZSB0b29scyBhcmUgc2FmZVxuICAgKiB0byBjYWxsIG91dC1vZi1iYW5kLlxuICAgKi9cbiAgdG9vbHM/OiBib29sZWFuO1xuICAvKipcbiAgICogRXh0cmEgdG9vbHMgdG8gZXhwb3NlIG92ZXIgTUNQIGJleW9uZCB0aGUgYWdlbnQgLyBhbWJpZW50IHNldHMuXG4gICAqIFVzZSB0aGlzIGZvciB0b29scyB3cml0dGVuIHNwZWNpZmljYWxseSBmb3IgTUNQIGNvbnN1bWVycy5cbiAgICovXG4gIGV4dHJhVG9vbHM/OiBNYXN0cmFUb29scztcbn1cblxuLyoqIENvbmZpZ3VyYXRpb24gYWNjZXB0ZWQgYnkgdGhlIE1hc3RyYSBBcHBLaXQgcGx1Z2luLiAqL1xuZXhwb3J0IGludGVyZmFjZSBNYXN0cmFQbHVnaW5Db25maWcgZXh0ZW5kcyBCYXNlUGx1Z2luQ29uZmlnIHtcbiAgLyoqXG4gICAqIFJ1biB0dXJucyB0aHJvdWdoIE1hc3RyYSdzIGV2ZW50ZWQgZHVyYWJsZSBhZ2VudCBzbyBleGVjdXRpb24gY29udGludWVzXG4gICAqIGFmdGVyIGEgYnJvd3NlciBkaXNjb25uZWN0IGFuZCBjYW4gYmUgb2JzZXJ2ZWQgYWdhaW4gYnkgcnVuIGlkLiBEZWZhdWx0c1xuICAgKiB0byBgdHJ1ZWAuXG4gICAqL1xuICBiYWNrZ3JvdW5kVHVybnM/OiBib29sZWFuO1xuICAvKiogQUkgU0RLIHByb3ZpZGVyLW9wdGlvbnMgbmFtZXNwYWNlLiBEZWZhdWx0cyB0byBgXCJvcGVuYWlcImA7IG5vIGVudiBmYWxsYmFjay4gKi9cbiAgcHJvdmlkZXJJZD86IHN0cmluZztcbiAgLyoqXG4gICAqIFBvc3RncmVzU3RvcmUgZm9yIE1hc3RyYSB0aHJlYWRzL21lc3NhZ2VzLiBgdHJ1ZWAgY2FwdHVyZXMgdGhlXG4gICAqIGBsYWtlYmFzZWAgcGx1Z2luJ3MgZXhpc3Rpbmcgc2VydmljZS1wcmluY2lwYWwgcG9vbDsgYW4gb2JqZWN0IG9wZW5zIGFcbiAgICogc2VwYXJhdGVseSBjb25maWd1cmVkIHN0b3JlLlxuICAgKi9cbiAgc3RvcmFnZT86IGJvb2xlYW4gfCBQb3N0Z3Jlc1N0b3JlQ29uZmlnO1xuICAvKipcbiAgICogUGdWZWN0b3Igc3RvcmUgZm9yIE1hc3RyYSBtZW1vcnkgcmVjYWxsLiBgdHJ1ZWAgY2FwdHVyZXMgdGhlXG4gICAqIGBsYWtlYmFzZWAgcGx1Z2luJ3MgZXhpc3Rpbmcgc2VydmljZS1wcmluY2lwYWwgcG9vbDsgYW4gb2JqZWN0IG9wZW5zIGFcbiAgICogc2VwYXJhdGVseSBjb25maWd1cmVkIHN0b3JlLlxuICAgKi9cbiAgbWVtb3J5PzogYm9vbGVhbiB8IE1hc3RyYU1lbW9yeUNvbmZpZztcbiAgLyoqXG4gICAqIEV4cG9zZSBleGVjdXRhYmxlIHRvb2xzIGF2YWlsYWJsZSB0byB0aGUgY3VycmVudCByZXF1ZXN0IHRocm91Z2ggbmF0aXZlXG4gICAqIE1hc3RyYSBDb2RlIE1vZGUuIERlZmF1bHRzIG9uIHdoZW5ldmVyIHRoZSByZXF1ZXN0IGhhcyBleGVjdXRhYmxlIHRvb2xzLlxuICAgKiBUaGUgcGx1Z2luIHNlbGVjdHMgTWFzdHJhJ3MgaXNvbGF0ZWQtdm0gdHJhbnNwb3J0IG9uY2UgZHVyaW5nIHN0YXJ0dXAgYW5kXG4gICAqIGZhbGxzIGJhY2sgdG8gTWFzdHJhIFF1aWNrSlMgd2hlbiB0aGUgbmF0aXZlIHRyYW5zcG9ydCBpcyB1bmF2YWlsYWJsZS5cbiAgICogVGhlc2UgdHJhbnNwb3J0cyBkbyBub3QgZXhlY3V0ZSB0aHJvdWdoIHRoZSB3b3Jrc3BhY2UgY29tbWFuZCBzYW5kYm94O1xuICAgKiBTU0ggaXMgdXNlZCBvbmx5IHdoZW4gYW4gZXhwb3NlZCBTU0gtYmFja2VkIHRvb2wgaXMgY2FsbGVkLiBTZXQgYGZhbHNlYCB0b1xuICAgKiBvcHQgb3V0LlxuICAgKi9cbiAgY29kZU1vZGU/OiBib29sZWFuIHwgTWFzdHJhQ29kZU1vZGVDb25maWc7XG4gIC8qKlxuICAgKiBTYW5kYm94IGZvciBhdXRvLWNyZWF0ZWQgYWdlbnQgd29ya3NwYWNlcy4gRGVmYXVsdHMgdG8gTW9udHkuIGBmYWxzZWBcbiAgICogZGlzYWJsZXMgY29tbWFuZCBleGVjdXRpb247IGB0cnVlYCBvciBgXCJtb250eVwiYCBzZWxlY3RzIE1vbnR5OyBhbiBleHBsaWNpdFxuICAgKiBNYXN0cmEgc2FuZGJveCBvciByZXNvbHZlciBzdXBwbGllcyBhIHJlbW90ZSB0cmFuc3BvcnQuIEFuIGFnZW50IHdpdGggYW5cbiAgICogZXhwbGljaXQgY3VzdG9tIGB3b3Jrc3BhY2VgIGtlZXBzIHRoYXQgd29ya3NwYWNlIGFuZCBpdHMgc2FuZGJveC5cbiAgICovXG4gIHNhbmRib3g/OiBib29sZWFuIHwgXCJtb250eVwiIHwgV29ya3NwYWNlU2FuZGJveCB8IFdvcmtzcGFjZVNhbmRib3hSZXNvbHZlcjtcbiAgLyoqIEFkZCB1c2VyLXNjb3BlZCBgL3RtcGAgb25seSB3aGVuIG5vIGNvbmZpZ3VyZWQgd29ya3NwYWNlIHBhdGggbW91bnRzIHdyaXRhYmxlLiAqL1xuICB3b3Jrc3BhY2VGYWxsYmFja1RvVG1wPzogYm9vbGVhbjtcbiAgLyoqIE5hdGl2ZSBNYXN0cmEgd29ya3NwYWNlIHRvb2wgYXZhaWxhYmlsaXR5LCBhcHByb3ZhbCwgYW5kIGhvb2sgY29uZmlndXJhdGlvbi4gKi9cbiAgd29ya3NwYWNlVG9vbHM/OiBXb3Jrc3BhY2VUb29sc0NvbmZpZztcbiAgLyoqXG4gICAqIFVzZSBNYXN0cmEncyBuYXRpdmUgd29ya3NwYWNlIHNraWxsIG1hbmFnZXIuIERlZmF1bHRzIHRvIHRydWUuIFBhc3MgYW5cbiAgICogb2JqZWN0IHRvIHR1bmUgb24tZGVtYW5kIGRpc2NvdmVyeSBhbmQgbG9hZGVkLXNraWxsIHN0YXRlLlxuICAgKi9cbiAgd29ya3NwYWNlU2tpbGxzPzogYm9vbGVhbiB8IE1hc3RyYVdvcmtzcGFjZVNraWxsc0NvbmZpZztcbiAgLyoqXG4gICAqIENvZGUtZGVmaW5lZCBhZ2VudHMuIEFjY2VwdHMgdGhyZWUgc2hhcGVzIGZvciBjb252ZW5pZW5jZTpcbiAgICpcbiAgICogLSAqKlJlY29yZCoqOiBgeyBhbmFseXN0OiBkZWYsIGhlbHBlcjogZGVmIH1gIC0ga2V5cyBiZWNvbWUgdGhlXG4gICAqICAgcmVnaXN0ZXJlZCBpZHMgYW5kIHRoZSBmaXJzdCBrZXkgaXMgdGhlIGRlZmF1bHQuXG4gICAqIC0gKipTaW5nbGUgZGVmaW5pdGlvbioqOiBgZGVmYCAtIHJlZ2lzdGVyZWQgdW5kZXJcbiAgICogICBgc2x1Z2lmeShkZWYubmFtZSlgIChvciBgXCJkZWZhdWx0XCJgIHdoZW4gYG5hbWVgIGlzIG9taXR0ZWQpIGFuZFxuICAgKiAgIGF1dG9tYXRpY2FsbHkgbWFya2VkIGFzIHRoZSBkZWZhdWx0IGFnZW50LlxuICAgKiAtICoqQXJyYXkqKjogYFtkZWYxLCBkZWYyXWAgLSBlYWNoIHJlZ2lzdGVyZWQgdW5kZXJcbiAgICogICBgc2x1Z2lmeShkZWYubmFtZSlgIChvciBgYWdlbnRfJHtpfWAgd2hlbiBgbmFtZWAgaXMgb21pdHRlZCk7XG4gICAqICAgdGhlIGZpcnN0IGVudHJ5IGlzIHRoZSBkZWZhdWx0LlxuICAgKlxuICAgKiBFYWNoIGVudHJ5IGJlY29tZXMgYSBNYXN0cmEgYEFnZW50YCByZWFjaGFibGUgYXRcbiAgICogYC9hcGkvPHBsdWdpbj4vcm91dGUvY2hhdC88aWQ+YCAodGhlIGNoYXQgcm91dGUgYWxzbyBtYXRjaGVzXG4gICAqIGA6YWdlbnRJZGApLiBXaGVuIGBhZ2VudHNgIGlzIG9taXR0ZWQgZW50aXJlbHksIHRoZSBwbHVnaW5cbiAgICogcmVnaXN0ZXJzIGEgc2luZ2xlIGJ1aWx0LWluIGBkZWZhdWx0YCBhbmFseXN0IHNvIHRoZSBiYXJlXG4gICAqIGBtYXN0cmEoKWAgY2FsbCBzdGlsbCBtb3VudHMgYSB3b3JraW5nIGNoYXQgZW5kcG9pbnQuXG4gICAqXG4gICAqIEBleGFtcGxlIFNpbmdsZS1hZ2VudCBzaG9ydGhhbmRcbiAgICogYGBgdHNcbiAgICogbWFzdHJhKHtcbiAgICogICBhZ2VudHM6IGNyZWF0ZUFnZW50KHsgaW5zdHJ1Y3Rpb25zOiBcIi4uLlwiIH0pLFxuICAgKiB9KTtcbiAgICogYGBgXG4gICAqXG4gICAqIEBleGFtcGxlIEFycmF5XG4gICAqIGBgYHRzXG4gICAqIG1hc3RyYSh7XG4gICAqICAgYWdlbnRzOiBbXG4gICAqICAgICBjcmVhdGVBZ2VudCh7IG5hbWU6IFwiYW5hbHlzdFwiLCBpbnN0cnVjdGlvbnM6IFwiLi4uXCIgfSksXG4gICAqICAgICBjcmVhdGVBZ2VudCh7IG5hbWU6IFwiaGVscGVyXCIsIGluc3RydWN0aW9uczogXCIuLi5cIiB9KSxcbiAgICogICBdLFxuICAgKiB9KTtcbiAgICogYGBgXG4gICAqXG4gICAqIEBleGFtcGxlIFJlY29yZCAoZXhwbGljaXQgaWRzKVxuICAgKiBgYGB0c1xuICAgKiBtYXN0cmEoe1xuICAgKiAgIGFnZW50czoge1xuICAgKiAgICAgYW5hbHlzdDogY3JlYXRlQWdlbnQoeyBpbnN0cnVjdGlvbnM6IFwiLi4uXCIgfSksXG4gICAqICAgICBoZWxwZXI6IGNyZWF0ZUFnZW50KHsgaW5zdHJ1Y3Rpb25zOiBcIi4uLlwiIH0pLFxuICAgKiAgIH0sXG4gICAqICAgZGVmYXVsdEFnZW50OiBcImFuYWx5c3RcIixcbiAgICogfSk7XG4gICAqIGBgYFxuICAgKi9cbiAgYWdlbnRzPzpcbiAgICB8IFJlY29yZDxzdHJpbmcsIEFueU1hc3RyYUFnZW50RGVmaW5pdGlvbj5cbiAgICB8IEFueU1hc3RyYUFnZW50RGVmaW5pdGlvblxuICAgIHwgQW55TWFzdHJhQWdlbnREZWZpbml0aW9uW107XG4gIC8qKlxuICAgKiBBbWJpZW50IHRvb2xzIHNwcmVhZCBpbnRvIGV2ZXJ5IHJlZ2lzdGVyZWQgYWdlbnQncyB0b29scyByZWNvcmQ7XG4gICAqIHBlci1hZ2VudCB0b29scyB3aW4gb24ga2V5IGNvbGxpc2lvbi4gVXNlIGZvciBhIHNtYWxsIHNoYXJlZFxuICAgKiBsaWJyYXJ5OyBmb3IgcGVyLWFnZW50IHRvb2xzIHNldCBgYWdlbnRzW2lkXS50b29sc2AgaW5zdGVhZC5cbiAgICovXG4gIHRvb2xzPzogTWFzdHJhVG9vbHM7XG4gIC8qKlxuICAgKiBDb2RlLWRlZmluZWQgTWFzdHJhIHdvcmtmbG93cyByZWdpc3RlcmVkIG9uIHRoZSBob3N0ZWQgaW5zdGFuY2UuXG4gICAqIERlZmVycmVkIHNpYmxpbmcgcGx1Z2lucyBtYXkgYWxzbyByZWdpc3RlciB0aHJvdWdoIHRoZSBwbHVnaW4gZXhwb3J0XG4gICAqIGJlZm9yZSB0aGUgaW5zdGFuY2UgaXMgYnVpbHQuXG4gICAqL1xuICB3b3JrZmxvd3M/OiBSZWNvcmQ8c3RyaW5nLCBBbnlXb3JrZmxvdz47XG4gIC8qKlxuICAgKiBBZ2VudCBpZCB1c2VkIHdoZW4gdGhlIGNsaWVudCBkb2Vzbid0IHNwZWNpZnkgb25lICh0aGUgYmFyZSxcbiAgICogdW4tc3VmZml4ZWQgaGlzdG9yeSAvIHN1Z2dlc3Rpb25zIHJvdXRlcyByZXNvbHZlIHRvIGl0KS5cbiAgICogRGVmYXVsdHMgdG8gdGhlIGZpcnN0IGtleSBpbiBgYWdlbnRzYCAob3IgYFwiZGVmYXVsdFwiYCB3aGVuXG4gICAqIGBhZ2VudHNgIGlzIG9taXR0ZWQpLiBNdXN0IG1hdGNoIGFuIGlkIGluIGBhZ2VudHNgIHdoZW4gYm90aCBhcmVcbiAgICogc2V0OyBhIG1pc21hdGNoIHRocm93cyBhdCBzZXR1cCB3aXRoIHRoZSBhdmFpbGFibGUgY2FuZGlkYXRlcy5cbiAgICovXG4gIGRlZmF1bHRBZ2VudD86IHN0cmluZztcbiAgLyoqXG4gICAqIFBsdWdpbi1sZXZlbCBkZWZhdWx0IG1vZGVsIGFwcGxpZWQgdG8gZXZlcnkgYWdlbnQgdGhhdCBvbWl0cyBpdHNcbiAgICogb3duIGBtb2RlbGAuIE1pcnJvcnMgQXBwS2l0J3MgYGFnZW50cyh7IGRlZmF1bHRNb2RlbCB9KWAuXG4gICAqXG4gICAqIC0gYHN0cmluZ2A6IHNob3J0aGFuZCBmb3IgXCJ1c2UgdGhlIE9CTyBhdXRvLXJlc29sdmVyIGJ1dCBzd2FwIHRoZVxuICAgKiAgIGBtb2RlbElkYFwiIChlLmcuIGBcImRhdGFicmlja3MtY2xhdWRlLXNvbm5ldC00LTZcImApLlxuICAgKiAtIEFueSBvdGhlciBNYXN0cmEgYER5bmFtaWNBcmd1bWVudDxNYXN0cmFNb2RlbENvbmZpZz5gOiBwYXNzZWRcbiAgICogICB0aHJvdWdoIHZlcmJhdGltLiBVc2UgdGhpcyB3aGVuIHlvdSBuZWVkIGZ1bGwgY29udHJvbCBvdmVyIGF1dGhcbiAgICogICBvciBgcHJvdmlkZXJJZGAuXG4gICAqXG4gICAqIFJlc29sdXRpb24gb3JkZXIgcGVyIGFnZW50OiBgZGVmLm1vZGVsYCDihpIgYGRlZmF1bHRNb2RlbGAg4oaSXG4gICAqIGBEQVRBQlJJQ0tTX1NFUlZJTkdfRU5EUE9JTlRfTkFNRWAg4oaSIGJ1aWx0LWluIGAvc2VydmluZy1lbmRwb2ludHNgXG4gICAqIHJlc29sdmVyLlxuICAgKi9cbiAgZGVmYXVsdE1vZGVsPzogQWdlbnRDb25maWdbXCJtb2RlbFwiXSB8IHN0cmluZztcbiAgLyoqXG4gICAqIEZ1enp5LW1hdGNoIGxvb3NlIG1vZGVsIG5hbWVzIChgXCJjbGF1ZGUgc29ubmV0XCJgKSBhZ2FpbnN0IHRoZSB3b3Jrc3BhY2Unc1xuICAgKiBNb2RlbCBTZXJ2aW5nIGVuZHBvaW50cy4gRGVmYXVsdHMgdG8gYHRydWVgOyBubyBlbnYgZmFsbGJhY2suXG4gICAqXG4gICAqIFNldCBgZmFsc2VgIHRvIHJlcXVpcmUgZXhhY3QgZW5kcG9pbnQgbmFtZXMgZXZlcnl3aGVyZS5cbiAgICovXG4gIG1vZGVsRnV6enlNYXRjaD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBGdXNlLmpzIHNjb3JlIHRocmVzaG9sZCBmb3IgdGhlIGZ1enp5IG1hdGNoZXIsIDAgKGV4YWN0KSB0byAxIChhbnl0aGluZykuXG4gICAqIERlZmF1bHRzIHRvIGAwLjRgOyBubyBlbnYgZmFsbGJhY2suXG4gICAqXG4gICAqIExvd2VyIHZhbHVlcyByZWplY3QgbG9vc2UgbWF0Y2hlczsgcmFpc2UgaXQgaWYgeW91IGhhdmUgYSBzcHJhd2xpbmdcbiAgICogZW5kcG9pbnQgY2F0YWxvZ3VlIHdpdGggc2ltaWxhci1sb29raW5nIG5hbWVzLlxuICAgKi9cbiAgbW9kZWxGdXp6eVRocmVzaG9sZD86IG51bWJlcjtcbiAgLyoqXG4gICAqIFRUTCBmb3IgdGhlIGluLW1lbW9yeSBzZXJ2aW5nLWVuZHBvaW50cyBsaXN0IGNhY2hlLCBpbiBtaWxsaXNlY29uZHMuXG4gICAqIERlZmF1bHRzIHRvIDUgbWludXRlczsgbm8gZW52IGZhbGxiYWNrLlxuICAgKlxuICAgKiBUaGUgY2FjaGUgaXMgcGVyIHdvcmtzcGFjZSBob3N0IGFuZCBzaGFyZWQgYWNyb3NzIHVzZXJzOyBjb25jdXJyZW50XG4gICAqIGNhbGxlcnMgY29hbGVzY2Ugb24gYSBzaW5nbGUgaW4tZmxpZ2h0IGZldGNoLlxuICAgKi9cbiAgbW9kZWxDYWNoZVR0bE1zPzogbnVtYmVyO1xuICAvKipcbiAgICogTGV0IGNsaWVudHMgcGljayB0aGUgYmFja2luZyBlbmRwb2ludCBwZXIgcmVxdWVzdC4gRGVmYXVsdHMgdG8gYHRydWVgO1xuICAgKiBubyBlbnYgZmFsbGJhY2suXG4gICAqXG4gICAqIFJlYWRzIHRoZSBgWC1NYXN0cmEtTW9kZWxgIGhlYWRlciwgdGhlIGA/bW9kZWw9YCBxdWVyeSBzdHJpbmcsIG9yIGFcbiAgICogYG1vZGVsYCBib2R5IGZpZWxkLCBpbiB0aGF0IG9yZGVyLiBEaXNhYmxlIHdoZW4gcnVubmluZyBtdWx0aS10ZW5hbnRcbiAgICogd2hlcmUgdW50cnVzdGVkIGNsaWVudHMgc2hvdWxkbid0IGNob29zZSB0aGUgZW5kcG9pbnQuXG4gICAqL1xuICBtb2RlbE92ZXJyaWRlPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFByaW9yaXR5LW9yZGVyZWQgbGlzdCBvZiBlbmRwb2ludCBuYW1lcyB0cmllZCAqZmlyc3QqIHdoZW4gbm9cbiAgICogYWdlbnQgLyBwbHVnaW4gLyBlbnYgLyByZXF1ZXN0LW92ZXJyaWRlIG1vZGVsIGlkIGlzIHNldCwgYWhlYWQgb2ZcbiAgICogdGhlIGR5bmFtaWMgc2NvcmUtY2xhc3NpZmllZCBjYXRhbG9ndWUuIFRoZSByZXNvbHZlciBwaWNrcyB0aGVcbiAgICogZmlyc3QgaWQgdGhhdCBpcyBhY3R1YWxseSBwcmVzZW50IGluIHRoZSB3b3Jrc3BhY2Unc1xuICAgKiBgL3NlcnZpbmctZW5kcG9pbnRzYCBsaXN0aW5nLlxuICAgKlxuICAgKiBXaGVuIHVuc2V0LCByZXNvbHV0aW9uIGlzIGRyaXZlbiBieSB0aGUgbGl2ZSBGb3VuZGF0aW9uIE1vZGVsIEFQSVxuICAgKiBgcXVhbGl0eWAgLyBgc3BlZWRgIC8gYGNvc3RgIHNjb3JlczogZW5kcG9pbnRzIGFyZSBjbGFzc2lmaWVkIGludG9cbiAgICogY2hhdCBjbGFzc2VzIChgY2xhc3NpZnlFbmRwb2ludHNgKSBhbmQgd2Fsa2VkIGJlc3QtZmlyc3RcbiAgICogKENoYXRUaGlua2luZyAtPiBDaGF0QmFsYW5jZWQgLT4gQ2hhdEZhc3QpLiBUaGUgYXV0b21hdGljIGRlZmF1bHQgaXNcbiAgICogbGl2ZS1vbmx5IGFuZCBmYWlscyB3aGVuIG5vIG1hdGNoaW5nIGVuZHBvaW50IGlzIGN1cnJlbnRseSBhdmFpbGFibGUuXG4gICAqIFNldCB0aGlzIHRvIHBpbiBhIHJlZ3VsYXRlZCB3b3Jrc3BhY2UgdG8gYW4gYXBwcm92ZWQgc3Vic2V0LCBvciB0byBwdXRcbiAgICogY3VzdG9tIGVuZHBvaW50cyBpbiBmcm9udCBvZiB0aGUgYXV0by1jbGFzc2lmaWVkIGNhdGFsb2d1ZS5cbiAgICovXG4gIGRlZmF1bHRNb2RlbEZhbGxiYWNrcz86IHJlYWRvbmx5IHN0cmluZ1tdO1xuICAvKipcbiAgICogV2hlbiBgdHJ1ZWAgKGRlZmF1bHQpLCBldmVyeSBhZ2VudCBnZXRzIGEgYnVpbHQtaW4gaW5wdXRcbiAgICogcHJvY2Vzc29yIHRoYXQgc3RyaXBzIGBjaGFydElkYCBmaWVsZHMgZnJvbSBwcmlvciBhc3Npc3RhbnRcbiAgICogdG9vbC1pbnZvY2F0aW9uIHJlc3VsdHMgYmVmb3JlIHRoZXkgcmVhY2ggdGhlIG1vZGVsLiBUaGlzXG4gICAqIHByZXZlbnRzIHRoZSBtb2RlbCBmcm9tIHJldXNpbmcgdHVybi1zY29wZWQgY2hhcnRJZHMgaXQgc2Vlc1xuICAgKiBpbiBtZW1vcnkgcmVjYWxsICh3aGljaCB3b3VsZCBsZWF2ZSBgW2NoYXJ0OjxpZD5dYCBtYXJrZXJzXG4gICAqIHBvaW50aW5nIGF0IHdyaXRlciBldmVudHMgdGhhdCBubyBsb25nZXIgZXhpc3QpLlxuICAgKlxuICAgKiBTZXQgdG8gYGZhbHNlYCB0byBvcHQgb3V0IC0gdXNlZnVsIGlmIGEgbm9uLWRlZmF1bHQgYWdlbnRcbiAgICogbmVlZHMgZnVsbCB2aXNpYmlsaXR5IGludG8gcHJpb3IgY2hhcnRJZHMgKGUuZy4gYW4gYXVkaXRcbiAgICogYWdlbnQgcmVhc29uaW5nIGFib3V0IGNoYXJ0IGxpbmVhZ2UpLlxuICAgKi9cbiAgc3RyaXBTdGFsZUNoYXJ0cz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBTdHlsZSBndWFyZHJhaWxzIGFwcGVuZGVkIHRvIGV2ZXJ5IGFnZW50J3MgYGluc3RydWN0aW9uc2AgdG8gY3VyYlxuICAgKiBjb21tb24gTExNLWlzbXMgKGVtIGRhc2hlcywgZW1vamlzLCBzeWNvcGhhbnRpYyBvcGVuZXJzLCB0aHJvd2F3YXlcbiAgICogY2xvc2VycywgZXhjZXNzaXZlIGhlZGdpbmcpLlxuICAgKlxuICAgKiAtIGB1bmRlZmluZWRgIChkZWZhdWx0KTogdXNlIHRoZSBidWlsdC1pblxuICAgKiAgIGBERUZBVUxUX1NUWUxFX0lOU1RSVUNUSU9OU2AgZnJvbSBgYWdlbnRzLnRzYC5cbiAgICogLSBgc3RyaW5nYDogcmVwbGFjZSB0aGUgZGVmYXVsdCB3aXRoIHRoZSBzdXBwbGllZCBibG9jay5cbiAgICogLSBgZmFsc2VgOiBkaXNhYmxlIGVudGlyZWx5IChhZ2VudHMgc2VlIG9ubHkgdGhlaXIgYmVzcG9rZVxuICAgKiAgIGBpbnN0cnVjdGlvbnNgKS5cbiAgICpcbiAgICogQXBwZW5kZWQgKG5vdCBwcmVwZW5kZWQpIHNvIHRoZSBhZ2VudCdzIHJvbGUgYW5kIHJ1bGVzIGNvbWUgZmlyc3RcbiAgICogYW5kIHRoZSBzdHlsZSBibG9jayBsZWFucyBvbiB0aGUgbW9kZWwncyByZWNlbmN5IGJpYXMuXG4gICAqL1xuICBzdHlsZUluc3RydWN0aW9ucz86IHN0cmluZyB8IGZhbHNlO1xuICAvKipcbiAgICogR2VuaWUgc3BhY2VzIHRoaXMgcGx1Z2luJ3MgYWdlbnRzIGNhbiBkZWxlZ2F0ZSB0by4gT25lIE1hc3RyYVxuICAgKiB0b29sIGlzIHJlZ2lzdGVyZWQgcGVyIGFsaWFzIChgZ2VuaWVgIGZvciB0aGUgd2VsbC1rbm93blxuICAgKiBgZGVmYXVsdGAgYWxpYXMsIGBnZW5pZV88YWxpYXM+YCBvdGhlcndpc2UpLiBFYWNoIHRvb2wgc3BpbnNcbiAgICogdXAgYSBwZXItcXVlc3Rpb24gR2VuaWUgc3ViLWFnZW50IHRoYXQgcnVucyBEYXRhYnJpY2tzXG4gICAqIFwiYWdlbnQgbW9kZVwiIGFnYWluc3QgdGhlIHNwYWNlLCBicm9hZGNhc3RzIHdpcmUgZXZlbnRzIHRvIHRoZVxuICAgKiBVSSwgZmV0Y2hlcyBzdGF0ZW1lbnQgcm93cyBmb3Igbm9uLWVtcHR5IHJlc3VsdHMsIGFuZCByZXR1cm5zXG4gICAqIGEgYChzdHJpbmcgfCBkYXRhIHwgY2hhcnQpW11gIHN1bW1hcnkgdGhlIGhvc3QgVUkgcmVuZGVyc1xuICAgKiBpbmxpbmUuXG4gICAqXG4gICAqIEVudHJpZXMgYWNjZXB0IGVpdGhlciBhIGZ1bGwge0BsaW5rIEdlbmllU3BhY2VDb25maWd9IG9iamVjdFxuICAgKiBvciBhIGJhcmUgYHNwYWNlX2lkYCBzdHJpbmcgd2hlbiBubyBleHRyYXMgYXJlIG5lZWRlZDpcbiAgICpcbiAgICogYGBgdHNcbiAgICogbWFzdHJhKHtcbiAgICogICBnZW5pZVNwYWNlczoge1xuICAgKiAgICAgZGVmYXVsdDogXCIwMWVmMGQzYzBlMWIxZjRhOGQyYzNlNGY1YTZiN2M4ZFwiLFxuICAgKiAgICAgZm9yZWNhc3RzOiB7IHNwYWNlSWQ6IFwiMDFlZi4uLlwiLCBoaW50OiBcIndlZWtseSBkZW1hbmQgZm9yZWNhc3RzXCIgfSxcbiAgICogICB9LFxuICAgKiB9KTtcbiAgICogYGBgXG4gICAqXG4gICAqIFJlYWNoIHRoZSBzcGFjZXMgZnJvbSBhbiBhZ2VudCdzIGB0b29scyhwbHVnaW5zKWAgY2FsbGJhY2sgdmlhXG4gICAqIGBwbHVnaW5zLmdlbmllPy50b29sa2l0KClgOyB0aGUgcmVzdWx0aW5nIHRvb2xzIGFjY2VwdFxuICAgKiBgeyBjb250ZW50LCBjb252ZXJzYXRpb25JZD8gfWAgYW5kIHJldHVybiBhIGh5ZHJhdGVkIHN1bW1hcnkuXG4gICAqXG4gICAqICoqRmFsbGJhY2sgZGlzY292ZXJ5KiogKGhpZ2hlc3QgcHJlY2VkZW5jZSBmaXJzdCk6IGlmIHRoaXNcbiAgICogZmllbGQgaXMgb21pdHRlZCwgdGhlIEdlbmllIGFnZW50IGFsc28gcGlja3MgdXAgc3BhY2VzIGZyb21cbiAgICogKDEpIHRoZSBBcHBLaXQgYGdlbmllKHsgc3BhY2VzOiB7IC4uLiB9IH0pYCBwbHVnaW4gaW5zdGFuY2VcbiAgICogd2hlbiByZWdpc3RlcmVkLCBhbmQgKDIpIHRoZSBgREFUQUJSSUNLU19HRU5JRV9TUEFDRV9JRGBcbiAgICogZW52IHZhciAocmVnaXN0ZXJlZCB1bmRlciB0aGUgYGRlZmF1bHRgIGFsaWFzKS4gVGhpcyBrZWVwc1xuICAgKiBleGlzdGluZyBBcHBLaXQgZGVwbG95bWVudHMgd29ya2luZyB3aXRob3V0IHJlc3RhdGluZyB0aGVcbiAgICogc3BhY2VzIGNvbmZpZyBpbiB0d28gcGxhY2VzLlxuICAgKi9cbiAgZ2VuaWVTcGFjZXM/OiBHZW5pZVNwYWNlc0NvbmZpZztcbiAgLyoqXG4gICAqIFVzZSB0aGUgc3RyZWFtaW5nIEdlbmllIEFnZW50IE1vZGUgQVBJIGZvciBgYXNrX2dlbmllYC4gRGVmYXVsdHMgdG8gYHRydWVgLlxuICAgKiBTZXQgYGZhbHNlYCB0byBmb3JjZSB0aGUgbGVnYWN5IENvbnZlcnNhdGlvbiBBUEkgcG9sbGluZyBkcml2ZXIuIEFcbiAgICogcHJlLXN0cmVhbSBmZWF0dXJlLWRpc2FibGVkIG9yIHByZXZpZXctdG9nZ2xlIHJlc3BvbnNlIGZhbGxzIGJhY2tcbiAgICogYXV0b21hdGljYWxseS4gRGlyZWN0IEdlbmllIGNoYXQgYWx3YXlzIHJlcXVpcmVzIEFnZW50IE1vZGUgYW5kIGlnbm9yZXNcbiAgICogdGhpcyBvcHRpb24uXG4gICAqL1xuICBnZW5pZUFnZW50TW9kZT86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBUVEwgZm9yIHRoZSBpbi1tZW1vcnkgR2VuaWUgc3BhY2UgbWV0YWRhdGEgY2FjaGUsIGluXG4gICAqIG1pbGxpc2Vjb25kcy4gRGVmYXVsdHMgdG8gNSBtaW51dGVzLiBUaGUgR2VuaWUgYWdlbnQgY2FsbHNcbiAgICogYGNsaWVudC5nZW5pZS5nZXRTcGFjZSguLi4pYCBvbiBldmVyeSBjb2xkLXN0YXJ0IHRvIGdldCB0aGVcbiAgICogdGl0bGUgLyBkZXNjcmlwdGlvbiAvIHdhcmVob3VzZSBpZDsgY2FjaGVkIHJlc3BvbnNlcyBza2lwIHRoZVxuICAgKiByb3VuZC10cmlwIGFuZCBjb25jdXJyZW50IGNhbGxlcnMgY29hbGVzY2Ugb24gYSBzaW5nbGVcbiAgICogaW4tZmxpZ2h0IGZldGNoLiBEcm9wIHRvIGEgc21hbGxlciB2YWx1ZSB3aGVuIGFuYWx5c3RzIGFyZVxuICAgKiBhY3RpdmVseSBlZGl0aW5nIHNwYWNlIG1ldGFkYXRhIGFuZCB5b3Ugd2FudCBjaGFuZ2VzIHZpc2libGVcbiAgICogd2l0aGluIHNlY29uZHM7IHJhaXNlIGl0IHRvIGFtb3J0aXNlIHRoZSByb3VuZC10cmlwIHdoZW5cbiAgICogc3BhY2UgbWV0YWRhdGEgaXMgZWZmZWN0aXZlbHkgZnJvemVuLlxuICAgKlxuICAgKiBCYWNrZWQgYnkgQXBwS2l0J3MgYENhY2hlTWFuYWdlcmAsIHNvIHRoZSBjYWNoZSBwYXJ0aWNpcGF0ZXNcbiAgICogaW4gdGVsZW1ldHJ5IHNwYW5zIChgY2FjaGUuZ2V0T3JFeGVjdXRlYCkgYW5kIGJlbmVmaXRzIGZyb21cbiAgICogTGFrZWJhc2UgcGVyc2lzdGVuY2Ugd2hlbiB0aGUgYGxha2ViYXNlYCBwbHVnaW4gaXMgd2lyZWQgdXAuXG4gICAqL1xuICBnZW5pZVNwYWNlQ2FjaGVUdGxNcz86IG51bWJlcjtcbiAgLyoqXG4gICAqIE1heGltdW0gTExNIHN0ZXBzIGVhY2ggYWdlbnQgZ2V0cyBwZXIgdHVybi4gT25lIHN0ZXAgPSBvbmVcbiAgICogcm91bmQtdHJpcCB0byB0aGUgdW5kZXJseWluZyBtb2RlbCAoYSB0b29sIGNhbGwgY29uc3VtZXMgYVxuICAgKiBzdGVwLCB0aGUgZmluYWwtdGV4dCByZXBseSBjb25zdW1lcyBvbmUgdG9vKS4gQXBwbGllcyB0b1xuICAgKiBldmVyeSBhZ2VudCByZWdpc3RlcmVkIHRocm91Z2gge0BsaW5rIE1hc3RyYVBsdWdpbkNvbmZpZy5hZ2VudHN9XG4gICAqIC0gcGVyLWFnZW50IG92ZXJyaWRlcyBhcmVuJ3Qgc3VyZmFjZWQgeWV0IGJlY2F1c2UgdGhlIHNhbWVcbiAgICogY2VpbGluZyBoYXMgYmVlbiBzdWZmaWNpZW50IGFjcm9zcyBldmVyeSB3b3JrbG9hZCB3ZSd2ZSBydW4uXG4gICAqXG4gICAqIERlZmF1bHRzIHRvIHtAbGluayBERUZBVUxUX0FHRU5UX01BWF9TVEVQU30gKDI1KSwgc2l6ZWQgdG8gZml0XG4gICAqIGEgZGVjb21wb3NlZCBHZW5pZSB0dXJuIChncm91bmRpbmcgKyBzZXZlcmFsIGBhc2tfZ2VuaWVgIGNhbGxzXG4gICAqICsgYHByZXBhcmVfY2hhcnRgIHBlciBkYXRhc2V0ICsgdGhlIGZpbmFsLXRleHQgcmVwbHkpIHdpdGhcbiAgICogaGVhZHJvb20gZm9yIHRoZSBtb2RlbCB0byBjaGFpbiBhIGNvdXBsZSBvZiBmb2xsb3ctdXBzIGJlZm9yZVxuICAgKiBhbnN3ZXJpbmcuIE1hc3RyYSdzIG93biBgYWdlbnQuZ2VuZXJhdGVgIGRlZmF1bHQgb2YgNSB3b3VsZFxuICAgKiBjdXQgbXVsdGktc3RlcCBvcmNoZXN0cmF0aW9uIG9mZiBhZnRlciAyLTMgdG9vbCBjYWxscywgc29cbiAgICogZXhwbGljaXRseSByYWlzaW5nIHRoZSBjZWlsaW5nIGhlcmUgaXMgd2hhdCBsZXRzIHRoZVxuICAgKiBhZ2VudC1tb2RlIGxvb3AgcGxheSBvdXQuXG4gICAqXG4gICAqIExvd2VyIHdoZW4gYW4gdW51c3VhbGx5IHNsb3cgb3IgZXhwZW5zaXZlIG1vZGVsIG1ha2VzIGxvbmdcbiAgICogdHVybnMgdW5hZmZvcmRhYmxlOyByYWlzZSBmb3IgZXhwbG9yYXRvcnkgd29ya2xvYWRzIHRoYXQgbmVlZFxuICAgKiB0byBkcmlsbCBkZWVwIGludG8gYSBkYXRhc2V0IHdpdGhpbiBhIHNpbmdsZSB0dXJuLlxuICAgKi9cbiAgYWdlbnRNYXhTdGVwcz86IG51bWJlcjtcbiAgLyoqXG4gICAqIFdpcmUgTWFzdHJhIHNwYW5zIGludG8gQXBwS2l0J3MgZ2xvYmFsIE9UZWwgcGlwZWxpbmUgdmlhXG4gICAqIGBAbWFzdHJhL290ZWwtYnJpZGdlYC5cbiAgICpcbiAgICogLSBgdW5kZWZpbmVkYCAoZGVmYXVsdCwgYXV0byk6IG9uIG9ubHkgd2hlblxuICAgKiAgIGBPVEVMX0VYUE9SVEVSX09UTFBfRU5EUE9JTlRgIG9yXG4gICAqICAgYE9URUxfRVhQT1JURVJfT1RMUF9UUkFDRVNfRU5EUE9JTlRgIGlzIHNldC4gV2hlbiB1bnNldCwgdGhlXG4gICAqICAgYnJpZGdlIGlzIHNraXBwZWQgc28gTWFzdHJhIGRvZXMgbm90IGxvZ1xuICAgKiAgIGBbT3RlbEJyaWRnZV0gTm8gT1RFTCBzcGFuIGZvdW5kYCBvbiB0aGUgbm9vcCB0cmFjZXIuXG4gICAqIC0gYHRydWVgOiBmb3JjZSBvbiBldmVuIHdpdGhvdXQgYW4gT1RMUCBlbmRwb2ludC5cbiAgICogLSBgZmFsc2VgOiBmb3JjZSBvZmYuXG4gICAqL1xuICBvYnNlcnZhYmlsaXR5PzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEZlZWRiYWNrIGRlc3RpbmF0aW9uLiBgYXV0b2AgcHJlZmVycyBHZW5pZSB3aGVuIEdlbmllIEFnZW50IE1vZGUgaXNcbiAgICogYXZhaWxhYmxlLCBvdGhlcndpc2UgTUxmbG93IHdoZW4gdHJhY2luZyBpcyBjb25maWd1cmVkLCBvdGhlcndpc2Ugbm9uZS5cbiAgICogRXhwbGljaXQgYGdlbmllYCBvciBgbWxmbG93YCBmYWlscyBzdGFydHVwIHdoZW4gdW5hdmFpbGFibGUuXG4gICAqL1xuICBmZWVkYmFja01vZGU/OiBGZWVkYmFja01vZGVPcHRpb247XG4gIC8qKlxuICAgKiBFeHBvc2UgdGhlIHBsdWdpbidzIGFnZW50cyAoYW5kIG9wdGlvbmFsbHkgdG9vbHMpIGFzIGEgTWFzdHJhIE1DUFxuICAgKiBzZXJ2ZXIgc28gZXh0ZXJuYWwgTUNQIGNsaWVudHMgLSBDbGF1ZGUgRGVza3RvcCwgQ3Vyc29yLCB0aGUgTWFzdHJhXG4gICAqIHBsYXlncm91bmQsIG9yIGFub3RoZXIgYWdlbnQgLSBjYW4gY2FsbCB0aGVtIG92ZXIgdGhlIHN0YW5kYXJkIE1DUFxuICAgKiB0cmFuc3BvcnRzLiBFbmFibGVkIGJ5IGRlZmF1bHQgKGFnZW50cyBvbmx5KTogd3JhcHBpbmcgdGhlXG4gICAqIGFscmVhZHktcmVnaXN0ZXJlZCBhZ2VudHMgY29zdHMgbm90aGluZyBleHRyYSwgc28gdGhlIGVuZHBvaW50IGlzIG9uXG4gICAqIG91dCBvZiB0aGUgYm94OyBvbmx5IHRoZSBhbWJpZW50IHRvb2xzICh3aGljaCBhc3N1bWUgYW4gaW4tcHJvY2Vzc1xuICAgKiBjaGF0IHR1cm4pIHN0YXkgb2ZmIHVubGVzcyBleHBsaWNpdGx5IG9wdGVkIGluLlxuICAgKlxuICAgKiAtIGB1bmRlZmluZWRgIChkZWZhdWx0KSAvIGB0cnVlYDogZXhwb3NlIGV2ZXJ5IHJlZ2lzdGVyZWQgYWdlbnQgYXNcbiAgICogICBhbiBgYXNrXzxhZ2VudElkPmAgTUNQIHRvb2wgdW5kZXIgYSBzZXJ2ZXIgd2hvc2UgaWQgaXMgdGhlIHBsdWdpblxuICAgKiAgIG5hbWUuXG4gICAqIC0gYGZhbHNlYDogbm8gTUNQIGVuZHBvaW50cy5cbiAgICogLSB7QGxpbmsgTWFzdHJhTWNwQ29uZmlnfTogZmluZS1ncmFpbmVkIGNvbnRyb2wgb3ZlciB0aGUgc2VydmVyIGlkLFxuICAgKiAgIGFkdmVydGlzZWQgbWV0YWRhdGEsIGFuZCB3aGljaCBhZ2VudHMgLyB0b29scyBhcmUgZXhwb3NlZC5cbiAgICpcbiAgICogV2hlbiBlbmFibGVkLCB0aGUgc3RvY2sgTWFzdHJhIE1DUCByb3V0ZXMgbW91bnQgdW5kZXIgdGhlIHBsdWdpbidzXG4gICAqIGJhc2UgcGF0aCAobm8gYmVzcG9rZSByb3V0ZSBpcyBhZGRlZCAtIHRoZSBzZXJ2ZXIgaXMgaGFuZGVkIHRvIHRoZVxuICAgKiBgTWFzdHJhYCBpbnN0YW5jZSB2aWEgYG1jcFNlcnZlcnNgLCB3aGljaCBgQG1hc3RyYS9leHByZXNzYCBzZXJ2ZXMpOlxuICAgKlxuICAgKiAtIFN0cmVhbWFibGUgSFRUUDogYFBPU1QgL2FwaS88cGx1Z2luPi9tY3AvPHNlcnZlcklkPi9tY3BgXG4gICAqIC0gU1NFIChsZWdhY3kpOiAgICBgR0VUICAvYXBpLzxwbHVnaW4+L21jcC88c2VydmVySWQ+L3NzZWBcbiAgICogICAgICAgICAgICAgICAgICAgIGBQT1NUIC9hcGkvPHBsdWdpbj4vbWNwLzxzZXJ2ZXJJZD4vbWVzc2FnZXNgXG4gICAqXG4gICAqIFJlcXVlc3RzIHJ1biB1bmRlciB0aGUgc2FtZSBBcHBLaXQgT0JPIHNjb3BlIGFzIHRoZSBjaGF0IHJvdXRlcywgc29cbiAgICogYW4gYWdlbnQgaW52b2tlZCBvdmVyIE1DUCByZXNvbHZlcyBpdHMgbW9kZWwgYW5kIHRvb2xzIGFzIHRoZVxuICAgKiBjYWxsaW5nIHVzZXIuXG4gICAqL1xuICBtY3A/OiBib29sZWFuIHwgTWFzdHJhTWNwQ29uZmlnO1xuICAvKipcbiAgICogSG93IG11Y2ggb2YgdGhlIHN0b2NrIGBAbWFzdHJhL2V4cHJlc3NgIG1hbmFnZW1lbnQgQVBJIGlzIHJlYWNoYWJsZVxuICAgKiB0aHJvdWdoIHRoZSBwbHVnaW4gbW91bnQuIGBAbWFzdHJhL2V4cHJlc3NgIHJlZ2lzdGVycyBpdHMgZnVsbCByb3V0ZVxuICAgKiB0YWJsZSAoYWdlbnQgaW5mZXJlbmNlIHBsdXMgYWRtaW4gLyBtdXRhdGluZyByb3V0ZXM6IGRpcmVjdCB0b29sXG4gICAqIGV4ZWN1dGlvbiwgd29ya2Zsb3cgY29udHJvbCwgcmF3IG1lbW9yeSByZWFkL3dyaXRlLCB0ZWxlbWV0cnksIGxvZ3MsXG4gICAqIHNjb3JlcykuIEFwcEtpdCBhbHJlYWR5IGF1dGhlbnRpY2F0ZXMgZXZlcnkgcmVxdWVzdCBhcyB0aGUgT0JPIHVzZXIsXG4gICAqIGJ1dCBub3RoaW5nIHRoZXJlIHJlc3RyaWN0cyAqd2hpY2gqIG9mIHRob3NlIG9wZXJhdGlvbnMgdGhlIGJyb3dzZXJcbiAgICogY2xpZW50IG1heSBpbnZva2UuXG4gICAqXG4gICAqIC0gYFwic2NvcGVkXCJgIChkZWZhdWx0KTogb25seSB0aGUgcm91dGVzIHRoZSBjaGF0IGNsaWVudCBsZWdpdGltYXRlbHlcbiAgICogICBuZWVkcyBhcmUgZGlzcGF0Y2hlZCB0byBNYXN0cmEgLSBhZ2VudCBpbmZlcmVuY2VcbiAgICogICAoYHN0cmVhbWAgLyBgZ2VuZXJhdGVgIC8gYG5ldHdvcmtgKSwgcmVhZC1vbmx5IGFnZW50IG1ldGFkYXRhLCB0aGlzXG4gICAqICAgcGx1Z2luJ3Mgb3duIE9CTy0gYW5kIHJlc291cmNlLXNjb3BlZCBgL3JvdXRlLypgIHJvdXRlcyAoaGlzdG9yeSAvXG4gICAqICAgdGhyZWFkcyksIGFuZCwgd2hlbiB7QGxpbmsgbWNwfSBpcyBlbmFibGVkLCB0aGUgTUNQIHRyYW5zcG9ydC5cbiAgICogICBFdmVyeXRoaW5nIGVsc2UgKHRvb2wgZXhlY3V0aW9uLCB3b3JrZmxvdyBjb250cm9sLCByYXcgbWVtb3J5LFxuICAgKiAgIHRlbGVtZXRyeSwgbG9ncywgc2NvcmVzLCBhbmQgb3RoZXIgbXV0YXRpb25zKSBpcyByZWplY3RlZCB3aXRoXG4gICAqICAgYDQwM2AgYmVmb3JlIGl0IHJlYWNoZXMgTWFzdHJhLlxuICAgKiAtIGBcImZ1bGxcImA6IGRpc3BhdGNoIHRoZSBlbnRpcmUgc3RvY2sgTWFzdHJhIEFQSS4gVXNlIG9ubHkgZm9yIGFcbiAgICogICB0cnVzdGVkIGZpcnN0LXBhcnR5IGNvbnNvbGUgdGhhdCBnZW51aW5lbHkgbmVlZHMgdGhlIG1hbmFnZW1lbnRcbiAgICogICBzdXJmYWNlLlxuICAgKi9cbiAgYXBpQWNjZXNzPzogXCJzY29wZWRcIiB8IFwiZnVsbFwiO1xuICAvKipcbiAgICogV2hpY2ggRGF0YWJyaWNrcyBpZGVudGl0eSB0aGUgYWdlbnRzJyB3b3Jrc3BhY2UgY2FsbHMgcnVuIGFzOiB0aGVcbiAgICogc2VydmluZy1lbmRwb2ludCBjYXRhbG9ndWUgYmVoaW5kIHRoZSBtb2RlbCBwaWNrZXIsIEdlbmllIHN1Z2dlc3Rpb25zLFxuICAgKiBgYXNrX2dlbmllYCwgYW5kIHRoZSBTdGF0ZW1lbnQgRXhlY3V0aW9uIGZldGNoIGJlaGluZCBhIGBbZGF0YTo8aWQ+XWBcbiAgICogZW1iZWQuIEZhbGxzIGJhY2sgdG8gYE1BU1RSQV9HRU5JRV9JREVOVElUWWAsIHRoZW4gYFwidXNlclwiYC5cbiAgICpcbiAgICogT24tYmVoYWxmLW9mIChPQk8pIGF1dGggcmVxdWlyZXMgdGhlIGNhbGxlciB0byBiZSBhIG1lbWJlciBvZiB0aGVcbiAgICogV09SS1NQQUNFLCBub3QganVzdCBvZiB0aGUgRGF0YWJyaWNrcyBhY2NvdW50LiBBbiBhcHAgc2hhcmVkIHdpdGggYW5cbiAgICogYWNjb3VudC1sZXZlbCBncm91cCBjYW4gYmUgb3BlbmVkIGJ5IHNvbWVvbmUgd2hvc2UgdG9rZW4gaXMgdmFsaWQgYnV0IHdob3NlXG4gICAqIGV2ZXJ5IHdvcmtzcGFjZSBjYWxsIGZhaWxzIHdpdGggYFVuYXV0aG9yaXplZCBhY2Nlc3MgdG8gT3JnOiA8aWQ+YCAtIGFuZFxuICAgKiBncmFudGluZyB3b3Jrc3BhY2UgbWVtYmVyc2hpcCBpcyBub3QgYWx3YXlzIHBvc3NpYmxlLCBzaW5jZSBhIHdvcmtzcGFjZVxuICAgKiBjYXBzIG1lbWJlcnNoaXAgd2VsbCBiZWxvdyB0aGUgc2l6ZSBvZiBhIGxhcmdlIGFjY291bnQncyB1c2VyIGdyb3VwLiBUaGVcbiAgICogYXBwJ3Mgc2VydmljZSBwcmluY2lwYWwgYWxyZWFkeSBob2xkcyB0aGUgZ3JhbnRzIHRoZSBhcHAgd2FzIGRlcGxveWVkIHdpdGguXG4gICAqXG4gICAqIC0gYFwidXNlclwiYCAoZGVmYXVsdCk6IGFsd2F5cyBPQk8uIFBlci11c2VyIGF0dHJpYnV0aW9uLCBhbmQgR2VuaWUgLyBVbml0eVxuICAgKiAgIENhdGFsb2cgcm93IGZpbHRlcnMgYXBwbHkgcGVyIHVzZXIuIENvcnJlY3Qgd2hlbiBldmVyeSBjYWxsZXIgaXMgYVxuICAgKiAgIHdvcmtzcGFjZSBtZW1iZXIuXG4gICAqIC0gYFwic2VydmljZS1wcmluY2lwYWxcImA6IGFsd2F5cyB0aGUgYXBwIHNlcnZpY2UgcHJpbmNpcGFsLiBOZWVkcyBubyBPQk9cbiAgICogICBzY29wZXMgYW5kIHdvcmtzIGZvciBhbnkgY2FsbGVyIHdobyBjYW4gb3BlbiB0aGUgYXBwLCBhdCB0aGUgY29zdCBvZlxuICAgKiAgIHBlci11c2VyIGF0dHJpYnV0aW9uIGluIEdlbmllIC8gVW5pdHkgQ2F0YWxvZy5cbiAgICogLSBgXCJhdXRvXCJgOiBPQk8gd2hlbiB0aGUgcmVxdWVzdCBjYXJyaWVzIGFuIE9CTyB0b2tlbiwgdGhlIHNlcnZpY2UgcHJpbmNpcGFsXG4gICAqICAgd2hlbiBpdCBkb2VzIG5vdC4gRm9yIGFuIGFwcCBzZXJ2aW5nIEJPVEggdGhlIHBsYXRmb3JtIGZyb250IGRvb3IgYW5kIGFcbiAgICogICBkb29yIHRoYXQgaGFzIG5vIHRva2VuIHRvIGZvcndhcmQgLSBhIGBAZGJ4LXRvb2xzL3R1bm5lbGAgZ2F0ZSwgYVxuICAgKiAgIFRlYW1zIGNoYW5uZWwgLSB3aGVyZSBBcHBLaXQncyBgYXNVc2VyYCB3b3VsZCBvdGhlcndpc2UgdGhyb3dcbiAgICogICBgQXV0aGVudGljYXRpb25FcnJvcmAgb3V0c2lkZSBgTk9ERV9FTlY9ZGV2ZWxvcG1lbnRgLlxuICAgKlxuICAgKiBUaGUgc2VydmljZS1wcmluY2lwYWwgcGF0aCBjaGFuZ2VzIG9ubHkgdGhlIERhdGFicmlja3MgQ1JFREVOVElBTC4gTWVtb3J5XG4gICAqIHRocmVhZHMsIHRoZSBwZXItdXNlciBjYWNoZSBuYW1lc3BhY2UsIGFuZCB0cmFjZSBtZXRhZGF0YSBzdGlsbCBrZXkgb2ZmIHRoZVxuICAgKiBmb3J3YXJkZWQgdXNlciwgc28gY2FsbGVycyBzaGFyaW5nIHRoZSBzZXJ2aWNlIHByaW5jaXBhbCdzIGRhdGEgYWNjZXNzIGtlZXBcbiAgICogc2VwYXJhdGUgY29udmVyc2F0aW9ucyBhbmQgY2Fubm90IHJlYWQgZWFjaCBvdGhlcidzIHRocmVhZHMgb3IgY2hhcnRzLlxuICAgKiBEaXJlY3QgR2VuaWUgY2hhdCBkb2VzIG5vdCB1c2UgdGhpcyBvcHRpb246IGl0cyBjb252ZXJzYXRpb25zIGFuZCBtZXNzYWdlc1xuICAgKiBhbHdheXMgcnVuIHVuZGVyIEFwcEtpdCBPQk8gc28gR2VuaWUgcmVtYWlucyB0aGUgcGVyLXVzZXIgc3RhdGUgb3duZXIuXG4gICAqXG4gICAqIEBleGFtcGxlIEFuIGFwcCBhbnkgYWNjb3VudCB1c2VyIGNhbiBvcGVuXG4gICAqIGBgYHRzXG4gICAqIG1hc3RyYSh7IGdlbmllSWRlbnRpdHk6IFwic2VydmljZS1wcmluY2lwYWxcIiwgZ2VuaWVTcGFjZXM6IHsgZGVmYXVsdDogc3BhY2VJZCB9IH0pO1xuICAgKiBgYGBcbiAgICpcbiAgICogQGV4YW1wbGUgT25lIGFwcCBiZWhpbmQgYm90aCB0aGUgZnJvbnQgZG9vciBhbmQgYSBwdWJsaWMgdHVubmVsXG4gICAqIGBgYHRzXG4gICAqIG1hc3RyYSh7IGdlbmllSWRlbnRpdHk6IFwiYXV0b1wiLCBnZW5pZVNwYWNlczogeyBkZWZhdWx0OiBzcGFjZUlkIH0gfSk7XG4gICAqIGBgYFxuICAgKi9cbiAgZ2VuaWVJZGVudGl0eT86IE1hc3RyYUlkZW50aXR5TW9kZTtcbiAgLyoqXG4gICAqIE9wdGlvbmFsIGJyYW5kIGNvbnRleHQgYXBwbGllZCB0byBjaGFydHMgcHJvZHVjZWQgYnkgdGhlIGJ1aWx0LWluXG4gICAqIGByZW5kZXJfZGF0YWAgLyBgcHJlcGFyZV9jaGFydGAgdG9vbHMuIFdoZW4gc2V0LCB0aGUgY2hhcnQgcGxhbm5lcidzXG4gICAqIEVjaGFydHMgb3V0cHV0IGlzIHRoZW1lZCB3aXRoIHRoZSBicmFuZCdzIHBhbGV0dGUgKHNlcmllcyBjb2xvcnMgZGVyaXZlZFxuICAgKiBmcm9tIGBjb2xvcnMucHJpbWFyeWAgLyBgY29sb3JzLmFjY2VudGApIGFuZCBzYW5zIGZvbnRcbiAgICogKGB0eXBvZ3JhcGh5LnNhbnNgKSBpbnN0ZWFkIG9mIEVjaGFydHMnIGRlZmF1bHRzLiBPbWl0IGZvciB0aGUgZGVmYXVsdFxuICAgKiBFY2hhcnRzIGxvb2suXG4gICAqXG4gICAqIFBhc3MgdGhlIHBvcnRhYmxlIHtAbGluayBCcmFuZENvbnRleHR9IHNoYXJlZCBhY3Jvc3MgdGhlIFVJIGFuZFxuICAgKiBsaWJyYXJpZXMgKGUuZy4gYGJyYW5kLmRlZmF1bHRCcmFuZENvbnRleHRgIGZyb20gYEBkYngtdG9vbHMvc2hhcmVkLWNvcmVgLFxuICAgKiBvciBhIGN1c3RvbWVyIGJyYW5kKSAtIHRoZSBzYW1lIG9iamVjdCB0aGUgZW1haWwgYWRkLW9uIGFuZCB0aGUgVUlcbiAgICogYEJyYW5kUHJvdmlkZXJgIGNvbnN1bWUsIHNvIGEgaG9zdCB0aGVtZXMgY2hhcnRzLCBlbWFpbCwgYW5kIFVJIGZyb20gb25lXG4gICAqIHNvdXJjZS5cbiAgICovXG4gIGJyYW5kPzogQnJhbmRDb250ZXh0O1xuICAvKipcbiAgICogUmVtb3RlIEFnZW50LVNraWxsIHNvdXJjZXMgbWF0ZXJpYWxpemVkIG9uY2UgYXQgYXBwIHN0YXJ0dXAuIEEgc2luZ2xlXG4gICAqIHNvdXJjZSwgYSBsaXN0LCBvciBhIGB7IHNvdXJjZXMsIGZhaWxPbkVycm9yPywgLi4uIH1gIGJhZy5cbiAgICpcbiAgICogRWFjaCBzb3VyY2UgaXMgYSBHaXRIdWIgYG93bmVyL3JlcG9gLCBhIGdpdCAvIEdpdExhYiBVUkwsIG9yIGEgZGlyZWN0XG4gICAqIGBTS0lMTC5tZGAgLyBhcmNoaXZlIGRvd25sb2FkIFVSTC4gUmVzb2x1dGlvbiBwcmVmZXJzIHRoZSBPUFRJT05BTCBgc2tpbGxzYFxuICAgKiBucG0gQ0xJIChhIHBlZXIgZGVwKSB3aGljaCBpcyBjb3BpZWQgaW50byBhIHRlbXAgZGlyIGFuZCB0aGVuIHBlcnNpc3RlZDtcbiAgICogd2l0aG91dCBpdCwgYSBVUkwgc291cmNlIGlzIGZldGNoZWQgZGlyZWN0bHkuIEEgc291cmNlIHRoYXQgcmVzb2x2ZXNcbiAgICogdGhyb3VnaCBuZWl0aGVyIGZhaWxzIHN0YXJ0dXAgdW5sZXNzIGBmYWlsT25FcnJvcjogZmFsc2VgLlxuICAgKlxuICAgKiBBSSBUb29scyBpcyBjYWNoZWQgZGFpbHkgd2l0aCBgQGRieC10b29scy9jYWNoZWAgYW5kIHNlcnZlZCB0byBldmVyeVxuICAgKiBhdXRvLWNyZWF0ZWQgd29ya3NwYWNlIGZyb20gdGhlIHNoYXJlZCBgLy5kYXRhYnJpY2tzL3NraWxsc2AgbWVtb3J5IG1vdW50LlxuICAgKiBPdGhlciBzb3VyY2VzIGFyZSB3cml0dGVuIHRvIHRoZSBEYXRhYnJpY2tzIHVzZXIncyBBc3Npc3RhbnQgc2tpbGxzIGZvbGRlclxuICAgKiB3aGVuIHdyaXRhYmxlLCB3aXRoIGEgcmVhZC1vbmx5IGxvY2FsLW1lbW9yeSBmYWxsYmFjay5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHNcbiAgICogbWFzdHJhKHsgcmVtb3RlU2tpbGxzOiBcInZlcmNlbC1sYWJzL2FnZW50LXNraWxsc1wiIH0pO1xuICAgKiBtYXN0cmEoe1xuICAgKiAgIHJlbW90ZVNraWxsczoge1xuICAgKiAgICAgc291cmNlczogW1widmVyY2VsLWxhYnMvYWdlbnQtc2tpbGxzXCIsIFwiaHR0cHM6Ly9leGFtcGxlLmNvbS9za2lsbC5tZFwiXSxcbiAgICogICAgIGZhaWxPbkVycm9yOiBmYWxzZSxcbiAgICogICB9LFxuICAgKiB9KTtcbiAgICogYGBgXG4gICAqL1xuICByZW1vdGVTa2lsbHM/OiBSZW1vdGVTa2lsbHNPcHRpb247XG4gIC8qKiBSZWFkLW9ubHkgbG9jYWwgc2tpbGwgdHJlZXMgbW91bnRlZCBmb3IgZmlsZXMsIHNlYXJjaGFibGUgYnkgcGF0aCwgYW5kIHBhc3NlZCBhcyBzdGFuZGFyZCBhZ2VudC1sZXZlbCBza2lsbHMuICovXG4gIGxvY2FsU2tpbGxNb3VudHM/OiBMb2NhbFNraWxsTW91bnRbXTtcbn1cblxuLyoqXG4gKiBKU09OIFNjaGVtYSBwdWJsaXNoZWQgb24gdGhlIG1hbmlmZXN0J3MgYGNvbmZpZy5zY2hlbWFgLCBtaXJyb3JpbmcgdGhlXG4gKiBkb2N1bWVudGVkIGRlZmF1bHRzIGFuZCBlbnZpcm9ubWVudCBmYWxsYmFja3Mgb2Yge0BsaW5rIE1hc3RyYVBsdWdpbkNvbmZpZ30uXG4gKlxuICogQ292ZXJzIHRoZSBKU09OLWV4cHJlc3NpYmxlIG9wdGlvbnMgb25seS4gYGFnZW50c2AsIGB0b29sc2AsIGFuZCBhXG4gKiBgZGVmYXVsdE1vZGVsYCBwYXNzZWQgYXMgYSBNYXN0cmEgYER5bmFtaWNBcmd1bWVudGAgYXJlIGNvZGUtZGVmaW5lZFxuICogKGZ1bmN0aW9ucyAvIGNsYXNzIGluc3RhbmNlcyksIHNvIHRoZXkgY2Fycnkgbm8gc2NoZW1hIGVudHJ5OyB0aGVcbiAqIGBkZWZhdWx0TW9kZWxgIHByb3BlcnR5IGJlbG93IGRlc2NyaWJlcyBpdHMgc3RyaW5nIGZvcm0uXG4gKi9cbmV4cG9ydCBjb25zdCBNQVNUUkFfQ09ORklHX1NDSEVNQTogQ29uZmlnU2NoZW1hID0ge1xuICB0eXBlOiBcIm9iamVjdFwiLFxuICBwcm9wZXJ0aWVzOiB7XG4gICAgYmFja2dyb3VuZFR1cm5zOiB7XG4gICAgICB0eXBlOiBcImJvb2xlYW5cIixcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICBcIlJ1biB0dXJucyB0aHJvdWdoIE1hc3RyYSBldmVudGVkIGR1cmFibGUgZXhlY3V0aW9uIHNvIHRoZXkgY29udGludWUgYWZ0ZXIgYnJvd3NlciBkaXNjb25uZWN0cyBhbmQgcmVtYWluIHJlY29ubmVjdGFibGUgYnkgcnVuIGlkLiBEZWZhdWx0cyB0byB0cnVlLlwiLFxuICAgIH0sXG4gICAgcHJvdmlkZXJJZDoge1xuICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgIGRlc2NyaXB0aW9uOiAnQUkgU0RLIHByb3ZpZGVyLW9wdGlvbnMgbmFtZXNwYWNlLiBEZWZhdWx0cyB0byBcIm9wZW5haVwiLicsXG4gICAgfSxcbiAgICByZW1vdGVTa2lsbHM6IHtcbiAgICAgIHR5cGU6IFtcInN0cmluZ1wiLCBcImFycmF5XCIsIFwib2JqZWN0XCJdLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICdSZW1vdGUgQWdlbnQtU2tpbGwgc291cmNlcyBwcm92aXNpb25lZCBhdCBzdGFydHVwIGFuZCBwYXNzZWQgdGhyb3VnaCBNYXN0cmEgc3RhbmRhcmQgYWdlbnQtbGV2ZWwgc2tpbGwgdG9vbHM6IFwiYWl0b29sc1wiIGZvciBEYXRhYnJpY2tzXFwnIG93biBza2lsbCBzZXQsIGEgR2l0SHViIG93bmVyL3JlcG8sIGEgZ2l0L0dpdExhYiBVUkwsIG9yIGEgZGlyZWN0IFNLSUxMLm1kL2FyY2hpdmUgVVJMLiBTb3VyY2VzIHJldGFpbiBhIHByb2Nlc3MtbWVtb3J5IGNvcHkgZXZlbiB3aGVuIHBlcnNpc3RlZCB0byB0aGUgRGF0YWJyaWNrcyB1c2VyIEFzc2lzdGFudCBza2lsbHMgZm9sZGVyLicsXG4gICAgfSxcbiAgICBzdG9yYWdlOiB7XG4gICAgICB0eXBlOiBbXCJib29sZWFuXCIsIFwib2JqZWN0XCJdLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIFwiUG9zdGdyZXNTdG9yZSBmb3IgTWFzdHJhIHRocmVhZHMgLyBtZXNzYWdlcy4gYHRydWVgIGNhcHR1cmVzIHRoZSBgbGFrZWJhc2VgIHBsdWdpbidzIGV4aXN0aW5nIHNlcnZpY2UtcHJpbmNpcGFsIHBvb2w7IGFuIG9iamVjdCBvcGVucyBhIHNlcGFyYXRlbHkgY29uZmlndXJlZCBzdG9yZS4gQXV0by1lbmFibGVkIHdoZW4gdGhlIGBsYWtlYmFzZWAgcGx1Z2luIGlzIHJlZ2lzdGVyZWQuXCIsXG4gICAgfSxcbiAgICBtZW1vcnk6IHtcbiAgICAgIHR5cGU6IFtcImJvb2xlYW5cIiwgXCJvYmplY3RcIl0sXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgXCJQZ1ZlY3RvciBzdG9yZSBmb3IgTWFzdHJhIHNlbWFudGljIHJlY2FsbC4gYHRydWVgIGNhcHR1cmVzIHRoZSBgbGFrZWJhc2VgIHBsdWdpbidzIGV4aXN0aW5nIHNlcnZpY2UtcHJpbmNpcGFsIHBvb2w7IGFuIG9iamVjdCBvcGVucyBhIHNlcGFyYXRlbHkgY29uZmlndXJlZCBzdG9yZS4gQXV0by1lbmFibGVkIHdoZW4gdGhlIGBsYWtlYmFzZWAgcGx1Z2luIGlzIHJlZ2lzdGVyZWQuXCIsXG4gICAgfSxcbiAgICBjb2RlTW9kZToge1xuICAgICAgdHlwZTogW1wiYm9vbGVhblwiLCBcIm9iamVjdFwiXSxcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICBcIkV4cG9zZSBhbGwgZXhlY3V0YWJsZSB0b29scyBhdmFpbGFibGUgdG8gdGhlIGN1cnJlbnQgcmVxdWVzdCB0aHJvdWdoIG5hdGl2ZSBNYXN0cmEgQ29kZSBNb2RlIGZvciBUeXBlU2NyaXB0IGJhdGNoaW5nLCBhZ2dyZWdhdGlvbiwgYW5kIGFyaXRobWV0aWMuIFRoZSBwbHVnaW4gdXNlcyBNYXN0cmEgaXNvbGF0ZWQtdm0gd2l0aCB0aGUgZXhpc3RpbmcgUXVpY2tKUyBmYWxsYmFjazsgbmVpdGhlciB0cmFuc3BvcnQgcnVucyB0aHJvdWdoIHRoZSB3b3Jrc3BhY2UgY29tbWFuZCBzYW5kYm94LCBzbyBTU0ggaXMgdXNlZCBvbmx5IHdoZW4gYW4gU1NILWJhY2tlZCB0b29sIGlzIGNhbGxlZC4gRmFsc2UgZGlzYWJsZXMgaXQuXCIsXG4gICAgfSxcbiAgICBzYW5kYm94OiB7XG4gICAgICB0eXBlOiBbXCJib29sZWFuXCIsIFwic3RyaW5nXCIsIFwib2JqZWN0XCJdLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICdDb21tYW5kIHNhbmRib3ggZm9yIGF1dG8tY3JlYXRlZCBhZ2VudCB3b3Jrc3BhY2VzLiBEZWZhdWx0cyB0byBNb250eS4gRmFsc2UgZGlzYWJsZXMgY29tbWFuZCBleGVjdXRpb247IHRydWUgb3IgXCJtb250eVwiIHNlbGVjdHMgTW9udHk7IGFuIGV4cGxpY2l0IHNhbmRib3ggb3IgcmVzb2x2ZXIgc3VwcGxpZXMgYW5vdGhlciB0cmFuc3BvcnQuJyxcbiAgICB9LFxuICAgIHdvcmtzcGFjZUZhbGxiYWNrVG9UbXA6IHtcbiAgICAgIHR5cGU6IFwiYm9vbGVhblwiLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIFwiQWRkIHVzZXItc2NvcGVkIC90bXAgdG8gYXV0by1jcmVhdGVkIGFnZW50IHdvcmtzcGFjZXMgb25seSB3aGVuIG5vIGNvbmZpZ3VyZWQgRGF0YWJyaWNrcyBwYXRoIG1vdW50cyB3cml0YWJsZS4gRGVmYXVsdHMgdG8gZmFsc2UuXCIsXG4gICAgfSxcbiAgICB3b3Jrc3BhY2VTa2lsbHM6IHtcbiAgICAgIHR5cGU6IFtcImJvb2xlYW5cIiwgXCJvYmplY3RcIl0sXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgXCJVc2UgTWFzdHJhJ3MgbmF0aXZlIG9uLWRlbWFuZCB3b3Jrc3BhY2Ugc2tpbGwgc2VhcmNoIGFuZCB3cml0YWJsZSBza2lsbCBzYXZlcy4gRGVmYXVsdHMgdG8gdHJ1ZS5cIixcbiAgICB9LFxuICAgIHdvcmtzcGFjZVRvb2xzOiB7XG4gICAgICB0eXBlOiBcIm9iamVjdFwiLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIFwiTmF0aXZlIE1hc3RyYSB3b3Jrc3BhY2UgdG9vbCBjb25maWd1cmF0aW9uIGZvciBhdmFpbGFiaWxpdHksIGFwcHJvdmFscywgcmVhZC1iZWZvcmUtd3JpdGUsIG91dHB1dCBsaW1pdHMsIGFuZCBob29rcy5cIixcbiAgICB9LFxuICAgIGRlZmF1bHRBZ2VudDoge1xuICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICBcIkFnZW50IGlkIHVzZWQgd2hlbiB0aGUgY2xpZW50IG5hbWVzIG5vbmUuIERlZmF1bHRzIHRvIHRoZSBmaXJzdCByZWdpc3RlcmVkIGFnZW50LCBlbHNlIHRoZSBidWlsdC1pbiBgZGVmYXVsdGAuXCIsXG4gICAgfSxcbiAgICBkZWZhdWx0TW9kZWw6IHtcbiAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgXCJTZXJ2aW5nIGVuZHBvaW50IGFwcGxpZWQgdG8gZXZlcnkgYWdlbnQgdGhhdCBvbWl0cyBpdHMgb3duIG1vZGVsLiBGYWxscyBiYWNrIHRvIERBVEFCUklDS1NfU0VSVklOR19FTkRQT0lOVF9OQU1FLCB0aGVuIHRoZSBoaWdoZXN0LXJhbmtlZCBjdXJyZW50bHkgYXZhaWxhYmxlIGNhdGFsb2d1ZSBlbmRwb2ludC5cIixcbiAgICB9LFxuICAgIGRlZmF1bHRNb2RlbEZhbGxiYWNrczoge1xuICAgICAgdHlwZTogXCJhcnJheVwiLFxuICAgICAgaXRlbXM6IHsgdHlwZTogXCJzdHJpbmdcIiB9LFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIFwiUHJpb3JpdHktb3JkZXJlZCBlbmRwb2ludCBuYW1lcyB0cmllZCBiZWZvcmUgdGhlIHNjb3JlLWNsYXNzaWZpZWQgY2F0YWxvZ3VlIHdoZW4gbm90aGluZyBlbHNlIHBpbnMgYSBtb2RlbC5cIixcbiAgICB9LFxuICAgIG1vZGVsRnV6enlNYXRjaDoge1xuICAgICAgdHlwZTogXCJib29sZWFuXCIsXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgXCJGdXp6eS1tYXRjaCBsb29zZSBtb2RlbCBuYW1lcyBhZ2FpbnN0IHRoZSB3b3Jrc3BhY2UgY2F0YWxvZ3VlLiBEZWZhdWx0cyB0byB0cnVlLlwiLFxuICAgIH0sXG4gICAgbW9kZWxGdXp6eVRocmVzaG9sZDoge1xuICAgICAgdHlwZTogXCJudW1iZXJcIixcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICBcIkZ1c2UuanMgc2NvcmUgdGhyZXNob2xkIGZvciB0aGUgZnV6enkgbWF0Y2hlciwgMCAoZXhhY3QpIHRvIDEgKGFueXRoaW5nKS4gRGVmYXVsdHMgdG8gMC40LlwiLFxuICAgIH0sXG4gICAgbW9kZWxDYWNoZVR0bE1zOiB7XG4gICAgICB0eXBlOiBcIm51bWJlclwiLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIFwiVFRMIGluIG1zIGZvciB0aGUgc2VydmluZy1lbmRwb2ludHMgbGlzdCBjYWNoZSwgcGVyIHdvcmtzcGFjZSBob3N0LiBEZWZhdWx0cyB0byA1IG1pbnV0ZXMuXCIsXG4gICAgfSxcbiAgICBtb2RlbE92ZXJyaWRlOiB7XG4gICAgICB0eXBlOiBcImJvb2xlYW5cIixcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICBcIkhvbm9yIGEgcGVyLXJlcXVlc3QgbW9kZWwgb3ZlcnJpZGUgZnJvbSB0aGUgWC1NYXN0cmEtTW9kZWwgaGVhZGVyLCA/bW9kZWw9IHF1ZXJ5LCBvciBhIGBtb2RlbGAgYm9keSBmaWVsZC4gRGVmYXVsdHMgdG8gdHJ1ZS5cIixcbiAgICB9LFxuICAgIGdlbmllU3BhY2VzOiB7XG4gICAgICB0eXBlOiBcIm9iamVjdFwiLFxuICAgICAgYWRkaXRpb25hbFByb3BlcnRpZXM6IHsgdHlwZTogW1wic3RyaW5nXCIsIFwib2JqZWN0XCJdIH0sXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgXCJHZW5pZSBzcGFjZXMgdGhlIGFnZW50cyBjYW4gZGVsZWdhdGUgdG8sIGtleWVkIGJ5IGFsaWFzICh0aGUgdG9vbC1uYW1lIHN1ZmZpeCkuIEVhY2ggdmFsdWUgaXMgYSBzcGFjZSBpZCBvciBgeyBzcGFjZUlkLCBoaW50IH1gLiBGYWxscyBiYWNrIHRvIHRoZSBgZ2VuaWVgIHBsdWdpbidzIG93biBgc3BhY2VzYCBjb25maWcsIHRoZW4gREFUQUJSSUNLU19HRU5JRV9TUEFDRV9JRCB1bmRlciB0aGUgYGRlZmF1bHRgIGFsaWFzLlwiLFxuICAgIH0sXG4gICAgZ2VuaWVBZ2VudE1vZGU6IHtcbiAgICAgIHR5cGU6IFwiYm9vbGVhblwiLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIFwiVXNlIHRoZSBzdHJlYW1pbmcgR2VuaWUgQWdlbnQgTW9kZSBBUEkgZm9yIGFnZW50LWJhY2tlZCBhc2tfZ2VuaWUuIERlZmF1bHRzIHRvIHRydWU7IGZhbHNlIGZvcmNlcyBsZWdhY3kgcG9sbGluZy4gRmVhdHVyZS1kaXNhYmxlZCBvciBwcmV2aWV3LXRvZ2dsZSByZXNwb25zZXMgZmFsbCBiYWNrIGF1dG9tYXRpY2FsbHkgYmVmb3JlIHN0cmVhbWluZy4gRGlyZWN0IEdlbmllIGNoYXQgYWx3YXlzIHJlcXVpcmVzIEFnZW50IE1vZGUuXCIsXG4gICAgfSxcbiAgICBnZW5pZVNwYWNlQ2FjaGVUdGxNczoge1xuICAgICAgdHlwZTogXCJudW1iZXJcIixcbiAgICAgIGRlc2NyaXB0aW9uOiBcIlRUTCBpbiBtcyBmb3IgdGhlIEdlbmllIHNwYWNlIG1ldGFkYXRhIGNhY2hlLiBEZWZhdWx0cyB0byA1IG1pbnV0ZXMuXCIsXG4gICAgfSxcbiAgICBhZ2VudE1heFN0ZXBzOiB7XG4gICAgICB0eXBlOiBcIm51bWJlclwiLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIFwiTWF4aW11bSBMTE0gc3RlcHMgZWFjaCBhZ2VudCBnZXRzIHBlciB0dXJuIChhIHRvb2wgY2FsbCBhbmQgdGhlIGZpbmFsIHJlcGx5IGVhY2ggY29uc3VtZSBvbmUpLiBEZWZhdWx0cyB0byAyNS5cIixcbiAgICB9LFxuICAgIHN0cmlwU3RhbGVDaGFydHM6IHtcbiAgICAgIHR5cGU6IFwiYm9vbGVhblwiLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIFwiU3RyaXAgY2hhcnRJZHMgZnJvbSByZWNhbGxlZCBhc3Npc3RhbnQgdG9vbCByZXN1bHRzIHNvIHRoZSBtb2RlbCBjYW5ub3QgcmV1c2UgYSB0dXJuLXNjb3BlZCBjaGFydCBtYXJrZXIuIERlZmF1bHRzIHRvIHRydWUuXCIsXG4gICAgfSxcbiAgICBzdHlsZUluc3RydWN0aW9uczoge1xuICAgICAgdHlwZTogW1wic3RyaW5nXCIsIFwiYm9vbGVhblwiXSxcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICBcIlN0eWxlIGd1YXJkcmFpbHMgYXBwZW5kZWQgdG8gZXZlcnkgYWdlbnQncyBpbnN0cnVjdGlvbnMuIEEgc3RyaW5nIHJlcGxhY2VzIHRoZSBidWlsdC1pbiBibG9jaywgYGZhbHNlYCBkaXNhYmxlcyBpdC5cIixcbiAgICB9LFxuICAgIG9ic2VydmFiaWxpdHk6IHtcbiAgICAgIHR5cGU6IFwiYm9vbGVhblwiLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIFwiQnJpZGdlIE1hc3RyYSBzcGFucyBpbnRvIEFwcEtpdCdzIE9UZWwgcGlwZWxpbmUuIERlZmF1bHRzIHRvIG9uIG9ubHkgd2hlbiBPVEVMX0VYUE9SVEVSX09UTFBfRU5EUE9JTlQgb3IgT1RFTF9FWFBPUlRFUl9PVExQX1RSQUNFU19FTkRQT0lOVCBpcyBzZXQuXCIsXG4gICAgfSxcbiAgICBmZWVkYmFja01vZGU6IHtcbiAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICBlbnVtOiBbXCJhdXRvXCIsIFwiZ2VuaWVcIiwgXCJtbGZsb3dcIiwgXCJub25lXCJdLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIFwiRmVlZGJhY2sgZGVzdGluYXRpb24uIEF1dG8gcHJlZmVycyBHZW5pZSBpbiBHZW5pZSBBZ2VudCBNb2RlLCBvdGhlcndpc2UgTUxmbG93IHdoZW4gY29uZmlndXJlZCwgb3RoZXJ3aXNlIG5vbmUuIEV4cGxpY2l0IHVuYXZhaWxhYmxlIG1vZGVzIGZhaWwgc3RhcnR1cC5cIixcbiAgICB9LFxuICAgIG1jcDoge1xuICAgICAgdHlwZTogW1wiYm9vbGVhblwiLCBcIm9iamVjdFwiXSxcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICBcIkV4cG9zZSB0aGUgcmVnaXN0ZXJlZCBhZ2VudHMgb3ZlciBNQ1AuIERlZmF1bHRzIHRvIGFnZW50cy1vbmx5OyBhbiBvYmplY3QgdHVuZXMgdGhlIHNlcnZlciBpZCwgYWR2ZXJ0aXNlZCBtZXRhZGF0YSwgYW5kIHdoZXRoZXIgYW1iaWVudCB0b29scyBhcmUgZXhwb3NlZC5cIixcbiAgICB9LFxuICAgIGdlbmllSWRlbnRpdHk6IHtcbiAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAvLyBEZXJpdmVkIGZyb20gdGhlIHJlc29sdmVyJ3Mgb3duIGxpc3QsIHNvIGEgbW9kZSBjYW4gbmV2ZXIgYmUgYWNjZXB0ZWQgYXRcbiAgICAgIC8vIHJ1bnRpbWUgd2hpbGUgdGhlIHB1Ymxpc2hlZCBzY2hlbWEgKGFuZCB0aGUgVUkgYnVpbHQgZnJvbSBpdCkgb21pdHMgaXQuXG4gICAgICBlbnVtOiBbLi4uSURFTlRJVFlfTU9ERVNdLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICdXaGljaCBEYXRhYnJpY2tzIGlkZW50aXR5IGFnZW50LWJhY2tlZCB3b3Jrc3BhY2UgY2FsbHMgKHNlcnZpbmcgY2F0YWxvZ3VlLCBHZW5pZSwgc3RhdGVtZW50IGV4ZWN1dGlvbikgcnVuIGFzLiBEaXJlY3QgR2VuaWUgY2hhdCBhbHdheXMgdXNlcyBPQk8uIFwidXNlclwiIChkZWZhdWx0KSBpcyBhbHdheXMgT0JPLCBzbyBjYWxsZXJzIG11c3QgYmUgd29ya3NwYWNlIG1lbWJlcnM7IFwic2VydmljZS1wcmluY2lwYWxcIiBhbHdheXMgdXNlcyB0aGUgYXBwIHNlcnZpY2UgcHJpbmNpcGFsLCBzbyBhbnkgY2FsbGVyIHdobyBjYW4gb3BlbiB0aGUgYXBwIHdvcmtzLCBhdCB0aGUgY29zdCBvZiBwZXItdXNlciBhdHRyaWJ1dGlvbjsgXCJhdXRvXCIgdXNlcyBPQk8gd2hlbiB0aGUgcmVxdWVzdCBjYXJyaWVzIGFuIE9CTyB0b2tlbiBhbmQgdGhlIHNlcnZpY2UgcHJpbmNpcGFsIHdoZW4gaXQgZG9lcyBub3QsIGZvciBhbiBhcHAgdGhhdCBhbHNvIHNlcnZlcyBhIHR1bm5lbCBvciB3ZWJob29rIGRvb3IuIEZhbGxzIGJhY2sgdG8gTUFTVFJBX0dFTklFX0lERU5USVRZLicsXG4gICAgfSxcbiAgICBhcGlBY2Nlc3M6IHtcbiAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICBlbnVtOiBbXCJzY29wZWRcIiwgXCJmdWxsXCJdLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICdIb3cgbXVjaCBvZiB0aGUgc3RvY2sgQG1hc3RyYS9leHByZXNzIEFQSSBpcyByZWFjaGFibGUgdGhyb3VnaCB0aGUgbW91bnQuIFwic2NvcGVkXCIgKGRlZmF1bHQpIGFsbG93cyBhZ2VudCBpbmZlcmVuY2UsIHJlYWQtb25seSBhZ2VudCBtZXRhZGF0YSwgdGhpcyBwbHVnaW5cXCdzIG93biByb3V0ZXMsIGFuZCBNQ1A7IFwiZnVsbFwiIGRpc3BhdGNoZXMgdGhlIGVudGlyZSBtYW5hZ2VtZW50IHN1cmZhY2UuJyxcbiAgICB9LFxuICAgIGJyYW5kOiB7XG4gICAgICB0eXBlOiBcIm9iamVjdFwiLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIFwiUG9ydGFibGUgYnJhbmQgY29udGV4dCBhcHBsaWVkIHRvIGdlbmVyYXRlZCBjaGFydHMgKHNlcmllcyBwYWxldHRlIGZyb20gY29sb3JzLnByaW1hcnkgLyBjb2xvcnMuYWNjZW50LCBiYXNlIGZvbnQgZnJvbSB0eXBvZ3JhcGh5LnNhbnMpLlwiLFxuICAgIH0sXG4gIH0sXG59O1xuIl19
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Feedback destination resolution.
|
|
3
|
+
*
|
|
4
|
+
* @module
|
|
5
|
+
*/
|
|
6
|
+
import type { FeedbackMode, FeedbackModeOption } from "@dbx-tools/shared-mastra/feedback";
|
|
7
|
+
/** Runtime availability used by automatic feedback selection. */
|
|
8
|
+
export interface FeedbackAvailability {
|
|
9
|
+
/** Genie Agent Mode has at least one configured space. */
|
|
10
|
+
genie: boolean;
|
|
11
|
+
/** MLflow tracing has a configured experiment and exporter. */
|
|
12
|
+
mlflow: boolean;
|
|
13
|
+
}
|
|
14
|
+
/** Resolve auto feedback or fail an explicitly unavailable destination. */
|
|
15
|
+
export declare function resolveFeedbackMode(configured: FeedbackModeOption | undefined, availability: FeedbackAvailability): FeedbackMode;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Feedback destination resolution.
|
|
3
|
+
*
|
|
4
|
+
* @module
|
|
5
|
+
*/
|
|
6
|
+
import { ConfigurationError } from "@databricks/appkit";
|
|
7
|
+
/** Resolve auto feedback or fail an explicitly unavailable destination. */
|
|
8
|
+
export function resolveFeedbackMode(configured, availability) {
|
|
9
|
+
const mode = configured ?? "auto";
|
|
10
|
+
if (mode === "none")
|
|
11
|
+
return "none";
|
|
12
|
+
if (mode === "auto") {
|
|
13
|
+
if (availability.genie)
|
|
14
|
+
return "genie";
|
|
15
|
+
if (availability.mlflow)
|
|
16
|
+
return "mlflow";
|
|
17
|
+
return "none";
|
|
18
|
+
}
|
|
19
|
+
if (availability[mode])
|
|
20
|
+
return mode;
|
|
21
|
+
throw new ConfigurationError(`mastra: feedbackMode "${mode}" is unavailable in this configuration`, { context: { feedbackMode: mode } });
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVlZGJhY2stbW9kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9mZWVkYmFjay1tb2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7O0dBSUc7QUFFSCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQVd4RCwyRUFBMkU7QUFDM0UsTUFBTSxVQUFVLG1CQUFtQixDQUNqQyxVQUEwQyxFQUMxQyxZQUFrQztJQUVsQyxNQUFNLElBQUksR0FBRyxVQUFVLElBQUksTUFBTSxDQUFDO0lBQ2xDLElBQUksSUFBSSxLQUFLLE1BQU07UUFBRSxPQUFPLE1BQU0sQ0FBQztJQUNuQyxJQUFJLElBQUksS0FBSyxNQUFNLEVBQUUsQ0FBQztRQUNwQixJQUFJLFlBQVksQ0FBQyxLQUFLO1lBQUUsT0FBTyxPQUFPLENBQUM7UUFDdkMsSUFBSSxZQUFZLENBQUMsTUFBTTtZQUFFLE9BQU8sUUFBUSxDQUFDO1FBQ3pDLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFDRCxJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUM7UUFBRSxPQUFPLElBQUksQ0FBQztJQUNwQyxNQUFNLElBQUksa0JBQWtCLENBQzFCLHlCQUF5QixJQUFJLHdDQUF3QyxFQUNyRSxFQUFFLE9BQU8sRUFBRSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUNwQyxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogRmVlZGJhY2sgZGVzdGluYXRpb24gcmVzb2x1dGlvbi5cbiAqXG4gKiBAbW9kdWxlXG4gKi9cblxuaW1wb3J0IHsgQ29uZmlndXJhdGlvbkVycm9yIH0gZnJvbSBcIkBkYXRhYnJpY2tzL2FwcGtpdFwiO1xuaW1wb3J0IHR5cGUgeyBGZWVkYmFja01vZGUsIEZlZWRiYWNrTW9kZU9wdGlvbiB9IGZyb20gXCJAZGJ4LXRvb2xzL3NoYXJlZC1tYXN0cmEvZmVlZGJhY2tcIjtcblxuLyoqIFJ1bnRpbWUgYXZhaWxhYmlsaXR5IHVzZWQgYnkgYXV0b21hdGljIGZlZWRiYWNrIHNlbGVjdGlvbi4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmVlZGJhY2tBdmFpbGFiaWxpdHkge1xuICAvKiogR2VuaWUgQWdlbnQgTW9kZSBoYXMgYXQgbGVhc3Qgb25lIGNvbmZpZ3VyZWQgc3BhY2UuICovXG4gIGdlbmllOiBib29sZWFuO1xuICAvKiogTUxmbG93IHRyYWNpbmcgaGFzIGEgY29uZmlndXJlZCBleHBlcmltZW50IGFuZCBleHBvcnRlci4gKi9cbiAgbWxmbG93OiBib29sZWFuO1xufVxuXG4vKiogUmVzb2x2ZSBhdXRvIGZlZWRiYWNrIG9yIGZhaWwgYW4gZXhwbGljaXRseSB1bmF2YWlsYWJsZSBkZXN0aW5hdGlvbi4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlRmVlZGJhY2tNb2RlKFxuICBjb25maWd1cmVkOiBGZWVkYmFja01vZGVPcHRpb24gfCB1bmRlZmluZWQsXG4gIGF2YWlsYWJpbGl0eTogRmVlZGJhY2tBdmFpbGFiaWxpdHksXG4pOiBGZWVkYmFja01vZGUge1xuICBjb25zdCBtb2RlID0gY29uZmlndXJlZCA/PyBcImF1dG9cIjtcbiAgaWYgKG1vZGUgPT09IFwibm9uZVwiKSByZXR1cm4gXCJub25lXCI7XG4gIGlmIChtb2RlID09PSBcImF1dG9cIikge1xuICAgIGlmIChhdmFpbGFiaWxpdHkuZ2VuaWUpIHJldHVybiBcImdlbmllXCI7XG4gICAgaWYgKGF2YWlsYWJpbGl0eS5tbGZsb3cpIHJldHVybiBcIm1sZmxvd1wiO1xuICAgIHJldHVybiBcIm5vbmVcIjtcbiAgfVxuICBpZiAoYXZhaWxhYmlsaXR5W21vZGVdKSByZXR1cm4gbW9kZTtcbiAgdGhyb3cgbmV3IENvbmZpZ3VyYXRpb25FcnJvcihcbiAgICBgbWFzdHJhOiBmZWVkYmFja01vZGUgXCIke21vZGV9XCIgaXMgdW5hdmFpbGFibGUgaW4gdGhpcyBjb25maWd1cmF0aW9uYCxcbiAgICB7IGNvbnRleHQ6IHsgZmVlZGJhY2tNb2RlOiBtb2RlIH0gfSxcbiAgKTtcbn1cbiJdfQ==
|
package/lib/src/genie-chat.d.ts
CHANGED
|
@@ -1,19 +1,21 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Direct Genie chat over the Mastra chat wire.
|
|
3
3
|
*
|
|
4
|
-
* Serves one Genie space as a chat without an
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
4
|
+
* Serves one Genie space as a chat without an outer model. Genie owns
|
|
5
|
+
* conversation state; optional Mastra Memory contributes resource-scoped
|
|
6
|
+
* semantic recall and receives completed turns. Each turn is projected onto
|
|
7
|
+
* the same AI SDK UI chunks an agent turn produces when it calls `ask_genie`
|
|
8
|
+
* (a native tool part, `data-genie-progress` events, and the answer text), so
|
|
9
|
+
* the Mastra chat UI renders pills, thoughts, suggestions, and embeds
|
|
10
|
+
* identically for both.
|
|
11
11
|
*
|
|
12
12
|
* @module
|
|
13
13
|
*/
|
|
14
14
|
import type { WorkspaceClient } from "@databricks/appkit";
|
|
15
15
|
import { type GenieMessage } from "@dbx-tools/shared-genie";
|
|
16
16
|
import { type GenieChatRequest, type GenieThread } from "@dbx-tools/shared-mastra";
|
|
17
|
+
import type { MastraMemory } from "@mastra/core/memory";
|
|
18
|
+
import { type RequestContext } from "@mastra/core/request-context";
|
|
17
19
|
import { type UIMessage, type UIMessageChunk } from "ai";
|
|
18
20
|
/** One configured Genie space addressed by the direct chat routes. */
|
|
19
21
|
export interface GenieChatSpace {
|
|
@@ -23,14 +25,17 @@ export interface GenieChatSpace {
|
|
|
23
25
|
spaceId: string;
|
|
24
26
|
}
|
|
25
27
|
/**
|
|
26
|
-
* Compose the visible answer for one terminal Genie message
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
* dropped because either embed
|
|
28
|
+
* Compose the visible answer for one terminal Genie message. Agent Mode puts an
|
|
29
|
+
* empty `output_text` part with `metadata.viz.attachment_id` wherever a native
|
|
30
|
+
* visualization belongs, so those placeholders become AppKit visualization
|
|
31
|
+
* markers in the same prose position. Query outputs without an inline
|
|
32
|
+
* placeholder are appended after the narrative as data or visualization embeds.
|
|
33
|
+
* Agent Mode's Markdown copy of a query result is dropped because either embed
|
|
34
|
+
* renders the same rows.
|
|
32
35
|
*/
|
|
33
36
|
export declare function genieAnswerText(message: GenieMessage): string;
|
|
37
|
+
/** Recover the original user question from a context-augmented Genie input. */
|
|
38
|
+
export declare function visibleGenieQuestion(content: string): string;
|
|
34
39
|
/**
|
|
35
40
|
* Project one persisted Genie message onto the user question and the assistant
|
|
36
41
|
* answer the chat transcript renders. The assistant owns an `ask_genie` tool
|
|
@@ -63,6 +68,8 @@ export declare function genieChatStream(options: {
|
|
|
63
68
|
client: WorkspaceClient;
|
|
64
69
|
space: GenieChatSpace;
|
|
65
70
|
request: GenieChatRequest;
|
|
71
|
+
memory?: MastraMemory;
|
|
72
|
+
requestContext?: RequestContext;
|
|
66
73
|
signal?: AbortSignal;
|
|
67
74
|
}): ReadableStream<UIMessageChunk>;
|
|
68
75
|
/** Delete one Genie conversation owned by the caller. */
|