@dbx-tools/shared-mastra 0.9.40 → 0.9.43

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/index.ts CHANGED
@@ -3,7 +3,7 @@
3
3
  // Hand edits are overwritten on the next watch; this file is read-only.
4
4
 
5
5
  export const PACKAGE_IDENTIFIER = "@dbx-tools/shared-mastra";
6
- export const PACKAGE_VERSION = "0.9.40";
6
+ export const PACKAGE_VERSION = "0.9.43";
7
7
  export * as feedback from "./src/feedback.ts";
8
8
  export * as markers from "./src/markers.ts";
9
9
  export * as override from "./src/override.ts";
package/lib/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  export declare const PACKAGE_IDENTIFIER = "@dbx-tools/shared-mastra";
2
- export declare const PACKAGE_VERSION = "0.9.40";
2
+ export declare const PACKAGE_VERSION = "0.9.43";
3
3
  export * as feedback from "./src/feedback.ts";
4
4
  export * as markers from "./src/markers.ts";
5
5
  export * as override from "./src/override.ts";
package/lib/index.js CHANGED
@@ -2,7 +2,7 @@
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/shared-mastra";
5
- export const PACKAGE_VERSION = "0.9.40";
5
+ export const PACKAGE_VERSION = "0.9.43";
6
6
  export * as feedback from "./src/feedback.js";
7
7
  export * as markers from "./src/markers.js";
8
8
  export * as override from "./src/override.js";
@@ -14,4 +14,4 @@ export { MODEL_OVERRIDE_HEADER, MODEL_OVERRIDE_QUERY, MODEL_OVERRIDE_BODY_FIELDS
14
14
  export { MASTRA_ROUTES } from "./src/routes.js";
15
15
  export { THREAD_ID_HEADER, THREAD_ID_QUERY } from "./src/thread.js";
16
16
  export { MastraClientConfigSchema, DefaultModelResponseSchema, ServingEndpointsResponseSchema, MastraSuggestionsResponseSchema, ChartTypeSchema, ChartResultSchema, ChartSchema, StatementDataSchema, StartedEventSchema, AskGenieDoneEventSchema, MastraGenieErrorEventSchema, SummaryEventSchema, GenieAgentEventSchema, GenieWriterEventSchema, GENIE_PROGRESS_PART_TYPE, GenieProgressPartDataSchema, GenieDatasetDataSchema, GenieDatasetChartSchema, GenieDatasetSchema, GenieSummaryItemSchema, GenieAgentResultSchema } from "./src/wire.js";
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyQ0FBMkM7QUFDM0MsbURBQW1EO0FBQ25ELHdFQUF3RTtBQUV4RSxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRywwQkFBMEIsQ0FBQztBQUM3RCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsUUFBUSxDQUFDO0FBQ3hDLE9BQU8sS0FBSyxRQUFRLE1BQU0sbUJBQW1CLENBQUM7QUFDOUMsT0FBTyxLQUFLLE9BQU8sTUFBTSxrQkFBa0IsQ0FBQztBQUM1QyxPQUFPLEtBQUssUUFBUSxNQUFNLG1CQUFtQixDQUFDO0FBQzlDLE9BQU8sS0FBSyxNQUFNLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxLQUFLLE1BQU0sTUFBTSxpQkFBaUIsQ0FBQztBQUMxQyxPQUFPLEtBQUssSUFBSSxNQUFNLGVBQWUsQ0FBQztBQUN0QyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUscUJBQXFCLEVBQUUsb0JBQW9CLEVBQUUseUJBQXlCLEVBQUUsMkJBQTJCLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUc5TCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsb0JBQW9CLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM1RyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDaEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGVBQWUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSwwQkFBMEIsRUFBRSw4QkFBOEIsRUFBRSwrQkFBK0IsRUFBRSxlQUFlLEVBQUUsaUJBQWlCLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLGtCQUFrQixFQUFFLHVCQUF1QixFQUFFLDJCQUEyQixFQUFFLGtCQUFrQixFQUFFLHFCQUFxQixFQUFFLHNCQUFzQixFQUFFLHdCQUF3QixFQUFFLDJCQUEyQixFQUFFLHNCQUFzQixFQUFFLHVCQUF1QixFQUFFLGtCQUFrQixFQUFFLHNCQUFzQixFQUFFLHNCQUFzQixFQUFFLE1BQU0sZUFBZSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gR0VORVJBVEVEIGJ5IHByb2plbiB3YXRjaCAtIERPIE5PVCBFRElULlxuLy8gUmVnZW5lcmF0ZWQgZnJvbSB0aGUgZXhwb3J0aW5nIG1vZHVsZXMgaW4gLi9zcmMuXG4vLyBIYW5kIGVkaXRzIGFyZSBvdmVyd3JpdHRlbiBvbiB0aGUgbmV4dCB3YXRjaDsgdGhpcyBmaWxlIGlzIHJlYWQtb25seS5cblxuZXhwb3J0IGNvbnN0IFBBQ0tBR0VfSURFTlRJRklFUiA9IFwiQGRieC10b29scy9zaGFyZWQtbWFzdHJhXCI7XG5leHBvcnQgY29uc3QgUEFDS0FHRV9WRVJTSU9OID0gXCIwLjkuNDBcIjtcbmV4cG9ydCAqIGFzIGZlZWRiYWNrIGZyb20gXCIuL3NyYy9mZWVkYmFjay50c1wiO1xuZXhwb3J0ICogYXMgbWFya2VycyBmcm9tIFwiLi9zcmMvbWFya2Vycy50c1wiO1xuZXhwb3J0ICogYXMgb3ZlcnJpZGUgZnJvbSBcIi4vc3JjL292ZXJyaWRlLnRzXCI7XG5leHBvcnQgKiBhcyByb3V0ZXMgZnJvbSBcIi4vc3JjL3JvdXRlcy50c1wiO1xuZXhwb3J0ICogYXMgdGhyZWFkIGZyb20gXCIuL3NyYy90aHJlYWQudHNcIjtcbmV4cG9ydCAqIGFzIHdpcmUgZnJvbSBcIi4vc3JjL3dpcmUudHNcIjtcbmV4cG9ydCB7IE1MRkxPV19UUkFDRV9JRF9IRUFERVIsIERFRkFVTFRfRkVFREJBQ0tfTkFNRSwgREVGQVVMVF9DT01NRU5UX05BTUUsIE1hc3RyYUZlZWRiYWNrVmFsdWVTY2hlbWEsIE1hc3RyYUZlZWRiYWNrUmVxdWVzdFNjaGVtYSwgTWFzdHJhRmVlZGJhY2tSZXNwb25zZVNjaGVtYSB9IGZyb20gXCIuL3NyYy9mZWVkYmFjay50c1wiO1xuZXhwb3J0IHR5cGUgeyBNYXN0cmFGZWVkYmFja1ZhbHVlLCBNYXN0cmFGZWVkYmFja1JlcXVlc3QsIE1hc3RyYUZlZWRiYWNrUmVzcG9uc2UgfSBmcm9tIFwiLi9zcmMvZmVlZGJhY2sudHNcIjtcbmV4cG9ydCB0eXBlIHsgTWFya2VyVHlwZSwgUGFyc2VkTWFya2VyIH0gZnJvbSBcIi4vc3JjL21hcmtlcnMudHNcIjtcbmV4cG9ydCB7IE1PREVMX09WRVJSSURFX0hFQURFUiwgTU9ERUxfT1ZFUlJJREVfUVVFUlksIE1PREVMX09WRVJSSURFX0JPRFlfRklFTERTIH0gZnJvbSBcIi4vc3JjL292ZXJyaWRlLnRzXCI7XG5leHBvcnQgeyBNQVNUUkFfUk9VVEVTIH0gZnJvbSBcIi4vc3JjL3JvdXRlcy50c1wiO1xuZXhwb3J0IHsgVEhSRUFEX0lEX0hFQURFUiwgVEhSRUFEX0lEX1FVRVJZIH0gZnJvbSBcIi4vc3JjL3RocmVhZC50c1wiO1xuZXhwb3J0IHsgTWFzdHJhQ2xpZW50Q29uZmlnU2NoZW1hLCBEZWZhdWx0TW9kZWxSZXNwb25zZVNjaGVtYSwgU2VydmluZ0VuZHBvaW50c1Jlc3BvbnNlU2NoZW1hLCBNYXN0cmFTdWdnZXN0aW9uc1Jlc3BvbnNlU2NoZW1hLCBDaGFydFR5cGVTY2hlbWEsIENoYXJ0UmVzdWx0U2NoZW1hLCBDaGFydFNjaGVtYSwgU3RhdGVtZW50RGF0YVNjaGVtYSwgU3RhcnRlZEV2ZW50U2NoZW1hLCBBc2tHZW5pZURvbmVFdmVudFNjaGVtYSwgTWFzdHJhR2VuaWVFcnJvckV2ZW50U2NoZW1hLCBTdW1tYXJ5RXZlbnRTY2hlbWEsIEdlbmllQWdlbnRFdmVudFNjaGVtYSwgR2VuaWVXcml0ZXJFdmVudFNjaGVtYSwgR0VOSUVfUFJPR1JFU1NfUEFSVF9UWVBFLCBHZW5pZVByb2dyZXNzUGFydERhdGFTY2hlbWEsIEdlbmllRGF0YXNldERhdGFTY2hlbWEsIEdlbmllRGF0YXNldENoYXJ0U2NoZW1hLCBHZW5pZURhdGFzZXRTY2hlbWEsIEdlbmllU3VtbWFyeUl0ZW1TY2hlbWEsIEdlbmllQWdlbnRSZXN1bHRTY2hlbWEgfSBmcm9tIFwiLi9zcmMvd2lyZS50c1wiO1xuZXhwb3J0IHR5cGUgeyBNYXN0cmFDbGllbnRDb25maWcsIERlZmF1bHRNb2RlbFJlc3BvbnNlLCBTZXJ2aW5nRW5kcG9pbnRzUmVzcG9uc2UsIE1hc3RyYVN1Z2dlc3Rpb25zUmVzcG9uc2UsIENoYXJ0VHlwZSwgQ2hhcnRSZXN1bHQsIENoYXJ0LCBTdGF0ZW1lbnREYXRhLCBTdGFydGVkRXZlbnQsIEFza0dlbmllRG9uZUV2ZW50LCBNYXN0cmFHZW5pZUVycm9yRXZlbnQsIFN1bW1hcnlFdmVudCwgR2VuaWVBZ2VudEV2ZW50LCBHZW5pZVdyaXRlckV2ZW50LCBHZW5pZVdyaXRlckV2ZW50VHlwZSwgR2VuaWVQcm9ncmVzc1BhcnREYXRhLCBHZW5pZURhdGFzZXREYXRhLCBHZW5pZURhdGFzZXRDaGFydCwgR2VuaWVEYXRhc2V0LCBHZW5pZVN1bW1hcnlJdGVtLCBHZW5pZVN1bW1hcnlJdGVtVHlwZSwgR2VuaWVBZ2VudFJlc3VsdCB9IGZyb20gXCIuL3NyYy93aXJlLnRzXCI7XG4iXX0=
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyQ0FBMkM7QUFDM0MsbURBQW1EO0FBQ25ELHdFQUF3RTtBQUV4RSxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRywwQkFBMEIsQ0FBQztBQUM3RCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsUUFBUSxDQUFDO0FBQ3hDLE9BQU8sS0FBSyxRQUFRLE1BQU0sbUJBQW1CLENBQUM7QUFDOUMsT0FBTyxLQUFLLE9BQU8sTUFBTSxrQkFBa0IsQ0FBQztBQUM1QyxPQUFPLEtBQUssUUFBUSxNQUFNLG1CQUFtQixDQUFDO0FBQzlDLE9BQU8sS0FBSyxNQUFNLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxLQUFLLE1BQU0sTUFBTSxpQkFBaUIsQ0FBQztBQUMxQyxPQUFPLEtBQUssSUFBSSxNQUFNLGVBQWUsQ0FBQztBQUN0QyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUscUJBQXFCLEVBQUUsb0JBQW9CLEVBQUUseUJBQXlCLEVBQUUsMkJBQTJCLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUc5TCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsb0JBQW9CLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM1RyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDaEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGVBQWUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSwwQkFBMEIsRUFBRSw4QkFBOEIsRUFBRSwrQkFBK0IsRUFBRSxlQUFlLEVBQUUsaUJBQWlCLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLGtCQUFrQixFQUFFLHVCQUF1QixFQUFFLDJCQUEyQixFQUFFLGtCQUFrQixFQUFFLHFCQUFxQixFQUFFLHNCQUFzQixFQUFFLHdCQUF3QixFQUFFLDJCQUEyQixFQUFFLHNCQUFzQixFQUFFLHVCQUF1QixFQUFFLGtCQUFrQixFQUFFLHNCQUFzQixFQUFFLHNCQUFzQixFQUFFLE1BQU0sZUFBZSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gR0VORVJBVEVEIGJ5IHByb2plbiB3YXRjaCAtIERPIE5PVCBFRElULlxuLy8gUmVnZW5lcmF0ZWQgZnJvbSB0aGUgZXhwb3J0aW5nIG1vZHVsZXMgaW4gLi9zcmMuXG4vLyBIYW5kIGVkaXRzIGFyZSBvdmVyd3JpdHRlbiBvbiB0aGUgbmV4dCB3YXRjaDsgdGhpcyBmaWxlIGlzIHJlYWQtb25seS5cblxuZXhwb3J0IGNvbnN0IFBBQ0tBR0VfSURFTlRJRklFUiA9IFwiQGRieC10b29scy9zaGFyZWQtbWFzdHJhXCI7XG5leHBvcnQgY29uc3QgUEFDS0FHRV9WRVJTSU9OID0gXCIwLjkuNDNcIjtcbmV4cG9ydCAqIGFzIGZlZWRiYWNrIGZyb20gXCIuL3NyYy9mZWVkYmFjay50c1wiO1xuZXhwb3J0ICogYXMgbWFya2VycyBmcm9tIFwiLi9zcmMvbWFya2Vycy50c1wiO1xuZXhwb3J0ICogYXMgb3ZlcnJpZGUgZnJvbSBcIi4vc3JjL292ZXJyaWRlLnRzXCI7XG5leHBvcnQgKiBhcyByb3V0ZXMgZnJvbSBcIi4vc3JjL3JvdXRlcy50c1wiO1xuZXhwb3J0ICogYXMgdGhyZWFkIGZyb20gXCIuL3NyYy90aHJlYWQudHNcIjtcbmV4cG9ydCAqIGFzIHdpcmUgZnJvbSBcIi4vc3JjL3dpcmUudHNcIjtcbmV4cG9ydCB7IE1MRkxPV19UUkFDRV9JRF9IRUFERVIsIERFRkFVTFRfRkVFREJBQ0tfTkFNRSwgREVGQVVMVF9DT01NRU5UX05BTUUsIE1hc3RyYUZlZWRiYWNrVmFsdWVTY2hlbWEsIE1hc3RyYUZlZWRiYWNrUmVxdWVzdFNjaGVtYSwgTWFzdHJhRmVlZGJhY2tSZXNwb25zZVNjaGVtYSB9IGZyb20gXCIuL3NyYy9mZWVkYmFjay50c1wiO1xuZXhwb3J0IHR5cGUgeyBNYXN0cmFGZWVkYmFja1ZhbHVlLCBNYXN0cmFGZWVkYmFja1JlcXVlc3QsIE1hc3RyYUZlZWRiYWNrUmVzcG9uc2UgfSBmcm9tIFwiLi9zcmMvZmVlZGJhY2sudHNcIjtcbmV4cG9ydCB0eXBlIHsgTWFya2VyVHlwZSwgUGFyc2VkTWFya2VyIH0gZnJvbSBcIi4vc3JjL21hcmtlcnMudHNcIjtcbmV4cG9ydCB7IE1PREVMX09WRVJSSURFX0hFQURFUiwgTU9ERUxfT1ZFUlJJREVfUVVFUlksIE1PREVMX09WRVJSSURFX0JPRFlfRklFTERTIH0gZnJvbSBcIi4vc3JjL292ZXJyaWRlLnRzXCI7XG5leHBvcnQgeyBNQVNUUkFfUk9VVEVTIH0gZnJvbSBcIi4vc3JjL3JvdXRlcy50c1wiO1xuZXhwb3J0IHsgVEhSRUFEX0lEX0hFQURFUiwgVEhSRUFEX0lEX1FVRVJZIH0gZnJvbSBcIi4vc3JjL3RocmVhZC50c1wiO1xuZXhwb3J0IHsgTWFzdHJhQ2xpZW50Q29uZmlnU2NoZW1hLCBEZWZhdWx0TW9kZWxSZXNwb25zZVNjaGVtYSwgU2VydmluZ0VuZHBvaW50c1Jlc3BvbnNlU2NoZW1hLCBNYXN0cmFTdWdnZXN0aW9uc1Jlc3BvbnNlU2NoZW1hLCBDaGFydFR5cGVTY2hlbWEsIENoYXJ0UmVzdWx0U2NoZW1hLCBDaGFydFNjaGVtYSwgU3RhdGVtZW50RGF0YVNjaGVtYSwgU3RhcnRlZEV2ZW50U2NoZW1hLCBBc2tHZW5pZURvbmVFdmVudFNjaGVtYSwgTWFzdHJhR2VuaWVFcnJvckV2ZW50U2NoZW1hLCBTdW1tYXJ5RXZlbnRTY2hlbWEsIEdlbmllQWdlbnRFdmVudFNjaGVtYSwgR2VuaWVXcml0ZXJFdmVudFNjaGVtYSwgR0VOSUVfUFJPR1JFU1NfUEFSVF9UWVBFLCBHZW5pZVByb2dyZXNzUGFydERhdGFTY2hlbWEsIEdlbmllRGF0YXNldERhdGFTY2hlbWEsIEdlbmllRGF0YXNldENoYXJ0U2NoZW1hLCBHZW5pZURhdGFzZXRTY2hlbWEsIEdlbmllU3VtbWFyeUl0ZW1TY2hlbWEsIEdlbmllQWdlbnRSZXN1bHRTY2hlbWEgfSBmcm9tIFwiLi9zcmMvd2lyZS50c1wiO1xuZXhwb3J0IHR5cGUgeyBNYXN0cmFDbGllbnRDb25maWcsIERlZmF1bHRNb2RlbFJlc3BvbnNlLCBTZXJ2aW5nRW5kcG9pbnRzUmVzcG9uc2UsIE1hc3RyYVN1Z2dlc3Rpb25zUmVzcG9uc2UsIENoYXJ0VHlwZSwgQ2hhcnRSZXN1bHQsIENoYXJ0LCBTdGF0ZW1lbnREYXRhLCBTdGFydGVkRXZlbnQsIEFza0dlbmllRG9uZUV2ZW50LCBNYXN0cmFHZW5pZUVycm9yRXZlbnQsIFN1bW1hcnlFdmVudCwgR2VuaWVBZ2VudEV2ZW50LCBHZW5pZVdyaXRlckV2ZW50LCBHZW5pZVdyaXRlckV2ZW50VHlwZSwgR2VuaWVQcm9ncmVzc1BhcnREYXRhLCBHZW5pZURhdGFzZXREYXRhLCBHZW5pZURhdGFzZXRDaGFydCwgR2VuaWVEYXRhc2V0LCBHZW5pZVN1bW1hcnlJdGVtLCBHZW5pZVN1bW1hcnlJdGVtVHlwZSwgR2VuaWVBZ2VudFJlc3VsdCB9IGZyb20gXCIuL3NyYy93aXJlLnRzXCI7XG4iXX0=
package/lib/src/wire.d.ts CHANGED
@@ -30,7 +30,6 @@
30
30
  *
31
31
  * @module
32
32
  */
33
- import { genieModel } from "@dbx-tools/shared-genie";
34
33
  import { z } from "zod";
35
34
  /**
36
35
  * JSON-safe descriptor published by the Mastra plugin's
@@ -111,10 +110,23 @@ export declare const ServingEndpointsResponseSchema: z.ZodObject<{
111
110
  speed: z.ZodOptional<z.ZodNumber>;
112
111
  cost: z.ZodOptional<z.ZodNumber>;
113
112
  }, z.core.$strip>>;
114
- class: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<"chat-thinking">, z.ZodLiteral<"chat-balanced">, z.ZodLiteral<"chat-fast">, z.ZodLiteral<"embedding">]>>;
113
+ class: z.ZodOptional<z.ZodEnum<{
114
+ "chat-thinking": "chat-thinking";
115
+ "chat-balanced": "chat-balanced";
116
+ "chat-fast": "chat-fast";
117
+ embedding: "embedding";
118
+ }>>;
115
119
  serviceNames: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
116
120
  modelServiceName: z.ZodOptional<z.ZodString>;
117
- reasoningEfforts: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodLiteral<"none">, z.ZodLiteral<"minimal">, z.ZodLiteral<"low">, z.ZodLiteral<"medium">, z.ZodLiteral<"high">, z.ZodLiteral<"xhigh">, z.ZodLiteral<"max">]>>>;
121
+ reasoningEfforts: z.ZodOptional<z.ZodArray<z.ZodEnum<{
122
+ none: "none";
123
+ minimal: "minimal";
124
+ low: "low";
125
+ medium: "medium";
126
+ high: "high";
127
+ xhigh: "xhigh";
128
+ max: "max";
129
+ }>>>;
118
130
  status: z.ZodOptional<z.ZodObject<{
119
131
  deprecated: z.ZodDefault<z.ZodBoolean>;
120
132
  }, z.core.$strip>>;
@@ -396,17 +408,17 @@ export declare const GenieWriterEventSchema: z.ZodUnion<readonly [z.ZodDiscrimin
396
408
  statement_id: z.ZodOptional<z.ZodString>;
397
409
  title: z.ZodOptional<z.ZodString>;
398
410
  thoughts: z.ZodOptional<z.ZodArray<z.ZodObject<{
399
- thought_type: z.ZodCustom<genieModel.GenieThoughtType, genieModel.GenieThoughtType>;
411
+ thought_type: z.ZodString;
400
412
  content: z.ZodString;
401
413
  }, z.core.$strip>>>;
402
414
  }, z.core.$strip>>;
403
415
  text: z.ZodOptional<z.ZodObject<{
404
416
  content: z.ZodOptional<z.ZodString>;
405
417
  id: z.ZodOptional<z.ZodString>;
406
- purpose: z.ZodOptional<z.ZodCustom<genieModel.GenieTextAttachmentPurpose, genieModel.GenieTextAttachmentPurpose>>;
418
+ purpose: z.ZodOptional<z.ZodString>;
407
419
  metadata: z.ZodOptional<z.ZodUnknown>;
408
420
  }, z.core.$strip>>;
409
- attachment_type: z.ZodOptional<z.ZodCustom<genieModel.AttachmentType, genieModel.AttachmentType>>;
421
+ attachment_type: z.ZodOptional<z.ZodString>;
410
422
  }, z.core.$strip>>>;
411
423
  auto_regenerate_count: z.ZodOptional<z.ZodNumber>;
412
424
  }, z.core.$strip>;
@@ -424,7 +436,7 @@ export declare const GenieWriterEventSchema: z.ZodUnion<readonly [z.ZodDiscrimin
424
436
  attachment_id: z.ZodOptional<z.ZodString>;
425
437
  type: z.ZodLiteral<"attachment">;
426
438
  index: z.ZodNumber;
427
- attachment_type: z.ZodCustom<genieModel.AttachmentType, genieModel.AttachmentType>;
439
+ attachment_type: z.ZodString;
428
440
  }, z.core.$strip>, z.ZodObject<{
429
441
  space_id: z.ZodString;
430
442
  conversation_id: z.ZodOptional<z.ZodString>;
@@ -432,7 +444,7 @@ export declare const GenieWriterEventSchema: z.ZodUnion<readonly [z.ZodDiscrimin
432
444
  attachment_id: z.ZodOptional<z.ZodString>;
433
445
  type: z.ZodLiteral<"thinking">;
434
446
  text: z.ZodString;
435
- thought_type: z.ZodCustom<genieModel.GenieThoughtType, genieModel.GenieThoughtType>;
447
+ thought_type: z.ZodString;
436
448
  }, z.core.$strip>, z.ZodObject<{
437
449
  space_id: z.ZodString;
438
450
  conversation_id: z.ZodOptional<z.ZodString>;
@@ -527,17 +539,17 @@ export declare const GenieWriterEventSchema: z.ZodUnion<readonly [z.ZodDiscrimin
527
539
  statement_id: z.ZodOptional<z.ZodString>;
528
540
  title: z.ZodOptional<z.ZodString>;
529
541
  thoughts: z.ZodOptional<z.ZodArray<z.ZodObject<{
530
- thought_type: z.ZodCustom<genieModel.GenieThoughtType, genieModel.GenieThoughtType>;
542
+ thought_type: z.ZodString;
531
543
  content: z.ZodString;
532
544
  }, z.core.$strip>>>;
533
545
  }, z.core.$strip>>;
534
546
  text: z.ZodOptional<z.ZodObject<{
535
547
  content: z.ZodOptional<z.ZodString>;
536
548
  id: z.ZodOptional<z.ZodString>;
537
- purpose: z.ZodOptional<z.ZodCustom<genieModel.GenieTextAttachmentPurpose, genieModel.GenieTextAttachmentPurpose>>;
549
+ purpose: z.ZodOptional<z.ZodString>;
538
550
  metadata: z.ZodOptional<z.ZodUnknown>;
539
551
  }, z.core.$strip>>;
540
- attachment_type: z.ZodOptional<z.ZodCustom<genieModel.AttachmentType, genieModel.AttachmentType>>;
552
+ attachment_type: z.ZodOptional<z.ZodString>;
541
553
  }, z.core.$strip>>>;
542
554
  auto_regenerate_count: z.ZodOptional<z.ZodNumber>;
543
555
  }, z.core.$strip>;
@@ -636,17 +648,17 @@ export declare const GenieProgressPartDataSchema: z.ZodObject<{
636
648
  statement_id: z.ZodOptional<z.ZodString>;
637
649
  title: z.ZodOptional<z.ZodString>;
638
650
  thoughts: z.ZodOptional<z.ZodArray<z.ZodObject<{
639
- thought_type: z.ZodCustom<genieModel.GenieThoughtType, genieModel.GenieThoughtType>;
651
+ thought_type: z.ZodString;
640
652
  content: z.ZodString;
641
653
  }, z.core.$strip>>>;
642
654
  }, z.core.$strip>>;
643
655
  text: z.ZodOptional<z.ZodObject<{
644
656
  content: z.ZodOptional<z.ZodString>;
645
657
  id: z.ZodOptional<z.ZodString>;
646
- purpose: z.ZodOptional<z.ZodCustom<genieModel.GenieTextAttachmentPurpose, genieModel.GenieTextAttachmentPurpose>>;
658
+ purpose: z.ZodOptional<z.ZodString>;
647
659
  metadata: z.ZodOptional<z.ZodUnknown>;
648
660
  }, z.core.$strip>>;
649
- attachment_type: z.ZodOptional<z.ZodCustom<genieModel.AttachmentType, genieModel.AttachmentType>>;
661
+ attachment_type: z.ZodOptional<z.ZodString>;
650
662
  }, z.core.$strip>>>;
651
663
  auto_regenerate_count: z.ZodOptional<z.ZodNumber>;
652
664
  }, z.core.$strip>;
@@ -664,7 +676,7 @@ export declare const GenieProgressPartDataSchema: z.ZodObject<{
664
676
  attachment_id: z.ZodOptional<z.ZodString>;
665
677
  type: z.ZodLiteral<"attachment">;
666
678
  index: z.ZodNumber;
667
- attachment_type: z.ZodCustom<genieModel.AttachmentType, genieModel.AttachmentType>;
679
+ attachment_type: z.ZodString;
668
680
  }, z.core.$strip>, z.ZodObject<{
669
681
  space_id: z.ZodString;
670
682
  conversation_id: z.ZodOptional<z.ZodString>;
@@ -672,7 +684,7 @@ export declare const GenieProgressPartDataSchema: z.ZodObject<{
672
684
  attachment_id: z.ZodOptional<z.ZodString>;
673
685
  type: z.ZodLiteral<"thinking">;
674
686
  text: z.ZodString;
675
- thought_type: z.ZodCustom<genieModel.GenieThoughtType, genieModel.GenieThoughtType>;
687
+ thought_type: z.ZodString;
676
688
  }, z.core.$strip>, z.ZodObject<{
677
689
  space_id: z.ZodString;
678
690
  conversation_id: z.ZodOptional<z.ZodString>;
@@ -767,17 +779,17 @@ export declare const GenieProgressPartDataSchema: z.ZodObject<{
767
779
  statement_id: z.ZodOptional<z.ZodString>;
768
780
  title: z.ZodOptional<z.ZodString>;
769
781
  thoughts: z.ZodOptional<z.ZodArray<z.ZodObject<{
770
- thought_type: z.ZodCustom<genieModel.GenieThoughtType, genieModel.GenieThoughtType>;
782
+ thought_type: z.ZodString;
771
783
  content: z.ZodString;
772
784
  }, z.core.$strip>>>;
773
785
  }, z.core.$strip>>;
774
786
  text: z.ZodOptional<z.ZodObject<{
775
787
  content: z.ZodOptional<z.ZodString>;
776
788
  id: z.ZodOptional<z.ZodString>;
777
- purpose: z.ZodOptional<z.ZodCustom<genieModel.GenieTextAttachmentPurpose, genieModel.GenieTextAttachmentPurpose>>;
789
+ purpose: z.ZodOptional<z.ZodString>;
778
790
  metadata: z.ZodOptional<z.ZodUnknown>;
779
791
  }, z.core.$strip>>;
780
- attachment_type: z.ZodOptional<z.ZodCustom<genieModel.AttachmentType, genieModel.AttachmentType>>;
792
+ attachment_type: z.ZodOptional<z.ZodString>;
781
793
  }, z.core.$strip>>>;
782
794
  auto_regenerate_count: z.ZodOptional<z.ZodNumber>;
783
795
  }, z.core.$strip>;
package/lib/src/wire.js CHANGED
@@ -242,20 +242,15 @@ export const StatementDataSchema = z.object({
242
242
  export const StartedEventSchema = z.object({
243
243
  type: z.literal("started"),
244
244
  spaceId: z.string(),
245
- /**
246
- * Genie conversation id, populated only when this `started`
247
- * event corresponds to a follow-up turn on an existing
248
- * conversation. Absent on the first turn.
249
- */
250
- conversationId: z.string().optional(),
251
- /**
252
- * Genie message id, populated only after the first wire
253
- * `message` event lands. Absent on the immediate-on-invoke
254
- * emit.
255
- */
256
- messageId: z.string().optional(),
257
- /** Question the Genie agent sent to Genie. */
258
- content: z.string(),
245
+ conversationId: z
246
+ .string()
247
+ .optional()
248
+ .describe("Existing Genie conversation id for a follow-up turn. Absent on the first turn."),
249
+ messageId: z
250
+ .string()
251
+ .optional()
252
+ .describe("Genie message id once the first wire message event has arrived."),
253
+ content: z.string().describe("Question the Genie agent sent to Genie."),
259
254
  });
260
255
  /**
261
256
  * Mastra-only lifecycle event: one `ask_genie` invocation
@@ -269,18 +264,13 @@ export const AskGenieDoneEventSchema = z.object({
269
264
  spaceId: z.string(),
270
265
  conversationId: z.string().optional(),
271
266
  messageId: z.string().optional(),
272
- /** Genie's natural-language answer for the turn, if any. */
273
- answer: z.string().optional(),
274
- /** Statement ids for any non-empty result sets this turn produced. */
275
- statementIds: z.array(z.string()),
276
- /**
277
- * Terminal wire status (`COMPLETED` / `FAILED` / `CANCELLED`).
278
- * Mirrors the source `result` event's status so subscribers
279
- * can react to ask-level completion without re-walking history.
280
- * Treated as `z.custom<MessageStatus>` because the SDK is the
281
- * source of truth for the enum values.
282
- */
283
- status: z.custom((v) => typeof v === "string"),
267
+ answer: z.string().optional().describe("Genie's natural-language answer for the turn."),
268
+ statementIds: z
269
+ .array(z.string())
270
+ .describe("Statement ids for non-empty result sets produced by this turn."),
271
+ status: z
272
+ .custom((value) => typeof value === "string")
273
+ .describe("Terminal Genie wire status mirrored from the source result event."),
284
274
  });
285
275
  /**
286
276
  * Mastra-only error event: terminal Genie agent / transport
@@ -314,16 +304,13 @@ export const MastraGenieErrorEventSchema = z.object({
314
304
  export const SummaryEventSchema = z.object({
315
305
  type: z.literal("summary"),
316
306
  spaceId: z.string(),
317
- /** Total number of items in the agent's structured summary. */
318
- items: z.number().int().nonnegative(),
319
- /** Count of `text` / prose items in the summary. */
320
- textItems: z.number().int().nonnegative(),
321
- /**
322
- * Count of `data` items the wrapper will hydrate into charts.
323
- * The host UI can use this to seed N chart skeletons before
324
- * the per-chart events arrive.
325
- */
326
- dataItems: z.number().int().nonnegative(),
307
+ items: z.number().int().nonnegative().describe("Total items in the agent's structured summary."),
308
+ textItems: z.number().int().nonnegative().describe("Text and prose items in the summary."),
309
+ dataItems: z
310
+ .number()
311
+ .int()
312
+ .nonnegative()
313
+ .describe("Data items the wrapper will hydrate into charts."),
327
314
  });
328
315
  /**
329
316
  * Mastra-only event union. Each variant uses the same flat
@@ -451,4 +438,4 @@ export const GenieAgentResultSchema = z.object({
451
438
  summary: z.array(GenieSummaryItemSchema),
452
439
  error: z.string().optional(),
453
440
  });
454
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy93aXJlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBK0JHO0FBRUgsT0FBTyxFQUFFLFVBQVUsRUFBMkMsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDaEQsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLEtBQUssQ0FBQztBQUV4Qiw2RUFBNkU7QUFFN0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQThCRztBQUNILE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDL0MsUUFBUSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUU7SUFDcEIsWUFBWSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUU7SUFDeEIsTUFBTSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQzNCLGVBQWUsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztJQUMzQyxtQkFBbUIsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztDQUNoRCxDQUFDLENBQUM7QUFJSDs7Ozs7Ozs7OztHQVVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUNqRCxPQUFPLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRTtJQUNuQixLQUFLLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUM1QixXQUFXLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtDQUNuQyxDQUFDLENBQUM7QUFJSCwrRUFBK0U7QUFFL0U7Ozs7OztHQU1H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RSxDQUFDLENBQUMsS0FBSyxDQUFDLHNCQUFzQixDQUFDO0lBQ3hDLEtBQUssRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0NBQzdCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogV2lyZS1mb3JtYXQgY29udHJhY3QgZm9yIGBAZGJ4LXRvb2xzL2FwcGtpdC1tYXN0cmFgOiB0aGVcbiAqIGRlcGVuZGVuY3ktZnJlZSB6b2Qgc2NoZW1hcyArIGluZmVycmVkIHR5cGVzIGV2ZXJ5IGNvbnN1bWVyICh0aGVcbiAqIFJlYWN0IGNsaWVudCwgYnJvd3NlciBidW5kbGVzLCB0aGUgc2VydmVyIHBsdWdpbikgc2hhcmVzLlxuICpcbiAqIEtlcHQgZnJlZSBvZiBgcGdgLCBgZmFzdGVtYmVkYCwgYW5kIHRoZSBNYXN0cmEgcnVudGltZSBzbyB0aGVcbiAqIGNsaWVudCBjYW4gaW1wb3J0IHRoZXNlIHNjaGVtYXMgd2l0aG91dCBkcmFnZ2luZyBpbiBzZXJ2ZXItb25seVxuICogZGVwZW5kZW5jaWVzLiBUaHJlZSBsYXllcnMgbGl2ZSBoZXJlOlxuICpcbiAqICAgMS4gVGhlIGRlc2NyaXB0b3IgcHVibGlzaGVkIGJ5IGBNYXN0cmFQbHVnaW4uY2xpZW50Q29uZmlnKClgXG4gKiAgICAgIHBsdXMgdGhlIFJFU1QgcGF5bG9hZHMgaXRzIHJvdXRlcyByZXR1cm4gKG1vZGVscywgaGlzdG9yeSxcbiAqICAgICAgc3VnZ2VzdGlvbnMsIGNoYXJ0IGVtYmVkcywgc3RhdGVtZW50IGRhdGEpLiBUaGUgc2VydmVyXG4gKiAgICAgIGRlcml2ZXMgZXZlcnkgcGF0aCBmcm9tIHRoZSBwbHVnaW4gbW91bnQgYW5kIHB1Ymxpc2hlcyB0aGVcbiAqICAgICAgcmVzb2x2ZWQgcGF0aHMgc28gdGhlIGNsaWVudCBjb21wb3NlcyBVUkxzIHdpdGhvdXRcbiAqICAgICAgaGFyZC1jb2RpbmcgYC9hcGkvbWFzdHJhYCAtIHJlbmFtZSB0aGUgcGx1Z2luIGFuZCB0aGUgY2xpZW50XG4gKiAgICAgIGtlZXBzIHdvcmtpbmcuXG4gKiAgIDIuIFRoZSBgY3R4LndyaXRlcmAgZXZlbnQgdm9jYWJ1bGFyeTogdGhlIHdpcmUtZGVyaXZlZFxuICogICAgICB7QGxpbmsgR2VuaWVDaGF0RXZlbnR9cyBmcm9tIGBAZGJ4LXRvb2xzL2dlbmllLXNoYXJlZGAgcGx1c1xuICogICAgICB0aGUgTWFzdHJhLW9ubHkgYWdlbnQgbGlmZWN5Y2xlIGV2ZW50cywgdW5pZmllZCBhc1xuICogICAgICB7QGxpbmsgR2VuaWVXcml0ZXJFdmVudH0gc28gc3Vic2NyaWJlcnMgbmFycm93IGJvdGggaGFsdmVzXG4gKiAgICAgIHdpdGggYSBzaW5nbGUgYHN3aXRjaCAoZXZlbnQudHlwZSlgLlxuICogICAzLiBUaGUgR2VuaWUgYWdlbnQncyB3b3JrZmxvdyBvdXRwdXQgc2hhcGVzXG4gKiAgICAgICh7QGxpbmsgR2VuaWVBZ2VudFJlc3VsdH0gYW5kIGl0cyBzdW1tYXJ5IC8gZGF0YXNldCBpdGVtcykuXG4gKlxuICogVGhlIHJvdXRlIHNlZ21lbnRzIGxpdmUgaW4gdGhlIHNpYmxpbmcgYHJvdXRlcy50c2BcbiAqICh7QGxpbmsgTUFTVFJBX1JPVVRFU30pIGFuZCB0aGUgZW1iZWQtbWFya2VyIGdyYW1tYXIgaW4gYG1hcmtlcnMudHNgLFxuICogc28gdGhpcyBmaWxlIHN0YXlzIHB1cmVseSBkZWNsYXJhdGl2ZSAoc2NoZW1hcyArIGluZmVycmVkIHR5cGVzKS5cbiAqIFRoZSBicm93c2VyIGNsaWVudCB0aGF0IGRyaXZlcyB0aGVzZSByb3V0ZXMgKGBNYXN0cmFQbHVnaW5DbGllbnRgKVxuICogc2hpcHMgZnJvbSBgQGRieC10b29scy91aS1tYXN0cmFgLlxuICpcbiAqIEBtb2R1bGVcbiAqL1xuXG5pbXBvcnQgeyBnZW5pZU1vZGVsLCB0eXBlIEdlbmllQ2hhdEV2ZW50LCB0eXBlIE1lc3NhZ2VTdGF0dXMgfSBmcm9tIFwiQGRieC10b29scy9zaGFyZWQtZ2VuaWVcIjtcbmltcG9ydCB7IG1vZGVsIH0gZnJvbSBcIkBkYngtdG9vbHMvc2hhcmVkLW1vZGVsXCI7XG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiO1xuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIGNsaWVudCBjb25maWcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG4vKipcbiAqIEpTT04tc2FmZSBkZXNjcmlwdG9yIHB1Ymxpc2hlZCBieSB0aGUgTWFzdHJhIHBsdWdpbidzXG4gKiBgY2xpZW50Q29uZmlnKClgLlxuICpcbiAqIE9ubHkgdGhlIGlycmVkdWNpYmxlIGRhdGEgbGl2ZXMgaGVyZTogYGJhc2VQYXRoYCAodGhlIG9uZSBwYXRoIHRoZVxuICogY2xpZW50IGNhbid0IG90aGVyd2lzZSBrbm93LCBzaW5jZSBpdCBlbmNvZGVzIHRoZSBwbHVnaW4ncyBtb3VudFxuICogbmFtZSkgcGx1cyB0aGUgcnVudGltZSBhZ2VudCByb3N0ZXIuIEV2ZXJ5IGNvbmNyZXRlIGVuZHBvaW50IFVSTCBpc1xuICogZGVyaXZlZCBmcm9tIGBiYXNlUGF0aGAgYnkgdGhlIGJyb3dzZXIgY2xpZW50XG4gKiAoYE1hc3RyYVBsdWdpbkNsaWVudGApIHVzaW5nIHRoZSBzaGFyZWQge0BsaW5rIE1BU1RSQV9ST1VURVN9XG4gKiBzZWdtZW50cywgc28gdGhlcmUncyBub3RoaW5nIHRvIHB1Ymxpc2ggcGVyLXJvdXRlLlxuICpcbiAqIEZpZWxkczpcbiAqICAgLSBgYmFzZVBhdGhgOiBwbHVnaW4gbW91bnQgcGF0aC4gQWx3YXlzIGAvYXBpLzxwbHVnaW5OYW1lPmAuIEZlZWRcbiAqICAgICBpdCB0byBgbmV3IE1hc3RyYVBsdWdpbkNsaWVudChjb25maWcpYCAoZnJvbVxuICogICAgIGBAZGJ4LXRvb2xzL3VpLW1hc3RyYWApIHRvIGdldCBhIHR5cGVkIGNsaWVudCBvdmVyIGV2ZXJ5XG4gKiAgICAgcm91dGUgcGx1cyB0aGUgc3RhbmRhcmQgYWdlbnQgc3RyZWFtLlxuICogICAtIGBkZWZhdWx0QWdlbnRgOiBhZ2VudCBpZCB0aGUgY2xpZW50IGNvbnZlcnNlcyB3aXRoIHdoZW4gaXRcbiAqICAgICBkb2Vzbid0IG5hbWUgb25lLlxuICogICAtIGBhZ2VudHNgOiBldmVyeSByZWdpc3RlcmVkIGFnZW50IGlkIGluIHJlZ2lzdHJhdGlvbiBvcmRlci5cbiAqICAgLSBgZmVlZGJhY2tFbmFibGVkYDogd2hldGhlciB0aGUgc2VydmVyIGNhbiBsb2cgdXNlciBmZWVkYmFjayB0b1xuICogICAgIE1MZmxvdyAoTUxmbG93IHRyYWNpbmcgaXMgY29uZmlndXJlZCkuIERyaXZlcyB3aGV0aGVyIHRoZSBjaGF0IFVJXG4gKiAgICAgc3VyZmFjZXMgdGh1bWJzIC8gY29tbWVudCBjb250cm9scy4gRGVmYXVsdHMgdG8gYGZhbHNlYCBzbyBhXG4gKiAgICAgY29uZmlnIHB1Ymxpc2hlZCBieSBhbiBvbGRlciBzZXJ2ZXIgKHdpdGhvdXQgdGhlIGZpZWxkKSBwYXJzZXNcbiAqICAgICBjbGVhbmx5IHRvIFwib2ZmXCIuXG4gKiAgIC0gYGNoYXRBbHdheXNBdmFpbGFibGVgOiB3aGV0aGVyIHRoZSBhZ2VudHMnIERhdGFicmlja3MgY2FsbHMgcnVuIGFzIHRoZVxuICogICAgIGFwcCBzZXJ2aWNlIHByaW5jaXBhbCByYXRoZXIgdGhhbiBvbi1iZWhhbGYtb2YgdGhlIHNpZ25lZC1pbiB1c2VyLiBXaGVuXG4gKiAgICAgYHRydWVgIHRoZSBjaGF0IHdvcmtzIGZvciBhbnkgY2FsbGVyIHdobyBjYW4gb3BlbiB0aGUgYXBwLCBzbyBhIFVJIHRoYXRcbiAqICAgICBoaWRlcyBjaGF0IHdoZW4gdGhlIE9CTyB0b2tlbiBpcyBhYnNlbnQgc2hvdWxkIHNob3cgaXQgYW55d2F5LiBEZWZhdWx0c1xuICogICAgIHRvIGBmYWxzZWAgKHRoZSBPQk8gLyBgXCJ1c2VyXCJgIGlkZW50aXR5IG1vZGUpLCBzbyBhbiBvbGRlciBzZXJ2ZXIgd2l0aG91dFxuICogICAgIHRoZSBmaWVsZCBrZWVwcyB0aGUgT0JPLWdhdGVkIGJlaGF2aW9yLlxuICovXG5leHBvcnQgY29uc3QgTWFzdHJhQ2xpZW50Q29uZmlnU2NoZW1hID0gei5vYmplY3Qoe1xuICBiYXNlUGF0aDogei5zdHJpbmcoKSxcbiAgZGVmYXVsdEFnZW50OiB6LnN0cmluZygpLFxuICBhZ2VudHM6IHouYXJyYXkoei5zdHJpbmcoKSksXG4gIGZlZWRiYWNrRW5hYmxlZDogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gIGNoYXRBbHdheXNBdmFpbGFibGU6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxufSk7XG4vKiogQnJvd3Nlci1zYWZlIE1hc3RyYSBwbHVnaW4gZGVzY3JpcHRvciB1c2VkIHRvIGNvbnN0cnVjdCByb3V0ZSBhbmQgc3RyZWFtIGNsaWVudHMuICovXG5leHBvcnQgdHlwZSBNYXN0cmFDbGllbnRDb25maWcgPSB6LmluZmVyPHR5cGVvZiBNYXN0cmFDbGllbnRDb25maWdTY2hlbWE+O1xuXG4vKipcbiAqIEpTT04gcGF5bG9hZCByZXR1cm5lZCBieSBgR0VUICR7YmFzZVBhdGh9L2RlZmF1bHQtbW9kZWxbP2FnZW50SWQ9XWAuIFRoZVxuICogc3RhdGljIGRlZmF1bHQgbW9kZWwgdGhlIGFnZW50IHJlc29sdmVzIHRvIHdoZW4gdGhlIGNsaWVudCBwaW5zIG5vIG1vZGVsLFxuICogYXMgYm90aCB0aGUgcmF3IHNlcnZpbmctZW5kcG9pbnQgYG1vZGVsYCBpZCBhbmQgYSBgZGlzcGxheU5hbWVgICh0aGVcbiAqIGh1bWFuaXplZCBsYWJlbCB0aGUgcGlja2VyIHNob3dzKS4gQm90aCBhcmUgYG51bGxgIHdoZW4gdGhlIGFnZW50IGRlY2lkZXNcbiAqIGl0cyBtb2RlbCBkeW5hbWljYWxseSBhdCBjYWxsIHRpbWUgKG5vdGhpbmcgc3RhdGljIHRvIGFkdmVydGlzZSkuIExldHMgdGhlXG4gKiBwaWNrZXIgbGFiZWwgaXRzIGRlZmF1bHQgb3B0aW9uIFdJVEhPVVQgd2FpdGluZyBvbiB0aGUgYC9tb2RlbHNgIGNhdGFsb2d1ZSxcbiAqIHNvIGl0IG5ldmVyIGZsYXNoZXMgYSByYXcgaWQgb24gbG9hZC4gS2VwdCBvZmYgdGhlIHN0YXRpYyBib290c3RyYXBcbiAqIGBjbGllbnRDb25maWdgIG9uIHB1cnBvc2U6IGl0IGlzIHBlci1hZ2VudCBhbmQgY2FuIGJlIGR5bmFtaWMsIHNvIGl0IGlzXG4gKiBmZXRjaGVkIGxpa2UgYC9tb2RlbHNgLlxuICovXG5leHBvcnQgY29uc3QgRGVmYXVsdE1vZGVsUmVzcG9uc2VTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIGFnZW50SWQ6IHouc3RyaW5nKCksXG4gIG1vZGVsOiB6LnN0cmluZygpLm51bGxhYmxlKCksXG4gIGRpc3BsYXlOYW1lOiB6LnN0cmluZygpLm51bGxhYmxlKCksXG59KTtcbi8qKiBSZXNwb25zZSBpZGVudGlmeWluZyB0aGUgbW9kZWwgY3VycmVudGx5IHNlbGVjdGVkIGFzIHRoZSBwbHVnaW4gZGVmYXVsdC4gKi9cbmV4cG9ydCB0eXBlIERlZmF1bHRNb2RlbFJlc3BvbnNlID0gei5pbmZlcjx0eXBlb2YgRGVmYXVsdE1vZGVsUmVzcG9uc2VTY2hlbWE+O1xuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIG1vZGVsIGNhdGFsb2d1ZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbi8qKlxuICogSlNPTiBwYXlsb2FkIHJldHVybmVkIGJ5IGBHRVQgJHtiYXNlUGF0aH0vbW9kZWxzYC4gV3JhcHMgdGhlIHNoYXJlZFxuICoge0BsaW5rIG1vZGVsLlNlcnZpbmdFbmRwb2ludFN1bW1hcnlTY2hlbWF9IChyZS1leHBvcnRlZCBmcm9tXG4gKiBgQGRieC10b29scy9zaGFyZWQtbW9kZWxgKSBzbyB0aGUgY2F0YWxvZ3VlXG4gKiBkZXNjcmlwdG9yIGhhcyBhIHNpbmdsZSBkZWZpbml0aW9uIHRoZSBjbGllbnQsIHNlcnZlciwgYW5kIHRoZVxuICogc3RhbmRhbG9uZSBgQGRieC10b29scy9tb2RlbGAgdG9vbGtpdCBhbGwgYWdyZWUgb24uXG4gKi9cbmV4cG9ydCBjb25zdCBTZXJ2aW5nRW5kcG9pbnRzUmVzcG9uc2VTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIGVuZHBvaW50czogei5hcnJheShtb2RlbC5TZXJ2aW5nRW5kcG9pbnRTdW1tYXJ5U2NoZW1hKSxcbn0pO1xuLyoqIEF2YWlsYWJsZSBEYXRhYnJpY2tzIHNlcnZpbmcgZW5kcG9pbnRzIHJldHVybmVkIGJ5IHRoZSBNYXN0cmEgbW9kZWwgcm91dGUuICovXG5leHBvcnQgdHlwZSBTZXJ2aW5nRW5kcG9pbnRzUmVzcG9uc2UgPSB6LmluZmVyPHR5cGVvZiBTZXJ2aW5nRW5kcG9pbnRzUmVzcG9uc2VTY2hlbWE+O1xuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gc3VnZ2VzdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbi8qKlxuICogSlNPTiBwYXlsb2FkIHJldHVybmVkIGJ5IGBHRVQgJHtiYXNlUGF0aH0vc3VnZ2VzdGlvbnNgLlxuICpcbiAqIENhcnJpZXMgdGhlIGN1cmF0ZWQgc3RhcnRlciBxdWVzdGlvbnMgZm9yIGFuIGFnZW50J3MgR2VuaWUgc3BhY2UgLVxuICogdGhlIGBzYW1wbGVfcXVlc3Rpb25zYCBhbiBhdXRob3IgY29uZmlndXJlZCBvbiB0aGUgc3BhY2UsIHN1cmZhY2VkXG4gKiBhcyBvbmUtdGFwIHByb21wdHMgb24gdGhlIGNoYXQncyBlbXB0eSBzdGF0ZS4gYHF1ZXN0aW9uc2AgaXMgZW1wdHlcbiAqIHdoZW4gdGhlIGFnZW50IGhhcyBubyBHZW5pZSBzcGFjZSAob3IgdGhlIHNwYWNlIGRlZmluZXMgbm9uZSksIHNvXG4gKiB0aGUgY2xpZW50IHJlbmRlcnMgbm90aGluZyBpbiB0aGF0IGNhc2UgcmF0aGVyIHRoYW4gZmFsbGluZyBiYWNrIHRvXG4gKiBidWlsdC1pbiBleGFtcGxlIHByb21wdHMuXG4gKi9cbmV4cG9ydCBjb25zdCBNYXN0cmFTdWdnZXN0aW9uc1Jlc3BvbnNlU2NoZW1hID0gei5vYmplY3Qoe1xuICBxdWVzdGlvbnM6IHouYXJyYXkoei5zdHJpbmcoKSksXG59KTtcbi8qKiBGb2xsb3ctdXAgcHJvbXB0cyBzdWdnZXN0ZWQgZm9yIHRoZSBjdXJyZW50IGFnZW50IGFuZCB0aHJlYWQgY29udGV4dC4gKi9cbmV4cG9ydCB0eXBlIE1hc3RyYVN1Z2dlc3Rpb25zUmVzcG9uc2UgPSB6LmluZmVyPHR5cGVvZiBNYXN0cmFTdWdnZXN0aW9uc1Jlc3BvbnNlU2NoZW1hPjtcblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIGNoYXJ0cyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuLyoqXG4gKiBBbGxvd2VkIGNoYXJ0IHR5cGVzIHRoZSBwbGFubmVyIGNhbiBwaWNrLiBEZWZpbmVkIGFzIGFcbiAqIGRpc2NyaW1pbmF0ZWQgbGl0ZXJhbCB1bmlvbiBzbyBlYWNoIHZhcmlhbnQgY2FycmllcyBpdHMgb3duXG4gKiBgLmRlc2NyaWJlKClgIGNsYXVzZSAtIHRoZSBzZXJ2ZXItc2lkZSBwbGFubmVyJ3MgcHJvbXB0XG4gKiBmb3JtYXR0ZXIgd2Fsa3MgYC5vcHRpb25zYCB0byBpbmxpbmUgdGhlIGRlc2NyaXB0aW9ucyBpbnRvIHRoZVxuICogbW9kZWwgaW5zdHJ1Y3Rpb25zLCBrZWVwaW5nIHRoZSBwcm9tcHQgaW4gbG9jay1zdGVwIHdpdGggdGhlXG4gKiBzY2hlbWEgYnkgY29uc3RydWN0aW9uLiBUaGUgcnVudGltZSB0eXBlIGlzIHRoZSBwbGFpbiBzdHJpbmdcbiAqIHVuaW9uIChgXCJiYXJcIiB8IFwibGluZVwiIHwgLi4uYCksIHNvIGNvbnN1bWVycyB0aGF0IGp1c3QgbmVlZCBhXG4gKiBkaXNjcmltaW5hdG9yIHZhbHVlIGJlaGF2ZSB0aGUgc2FtZSBhcyBpZiBpdCB3ZXJlIGFcbiAqIGB6LmVudW0oWy4uLl0pYC5cbiAqL1xuZXhwb3J0IGNvbnN0IENoYXJ0VHlwZVNjaGVtYSA9IHpcbiAgLnVuaW9uKFtcbiAgICB6XG4gICAgICAubGl0ZXJhbChcImJhclwiKVxuICAgICAgLmRlc2NyaWJlKFxuICAgICAgICBcImNvbXBhcmluZyBhIG51bWVyaWMgdmFsdWUgYWNyb3NzIGEgc21hbGwvbWVkaXVtIHNldCBvZiBkaXNjcmV0ZSBjYXRlZ29yaWVzICh0b3AtTiwgcmFua2luZywgZ3JvdXAtYnkpXCIsXG4gICAgICApLFxuICAgIHpcbiAgICAgIC5saXRlcmFsKFwiaG9yaXpvbnRhbEJhclwiKVxuICAgICAgLmRlc2NyaWJlKFxuICAgICAgICBcInNhbWUgYXMgYmFyIGJ1dCBjYXRlZ29yaWVzIG9uIHRoZSB5LWF4aXMgLSBwcmVmZXIgd2hlbiBjYXRlZ29yeSBsYWJlbHMgYXJlIGxvbmcgb3IgdGhlcmUgYXJlIG1hbnkgY2F0ZWdvcmllc1wiLFxuICAgICAgKSxcbiAgICB6XG4gICAgICAubGl0ZXJhbChcImxpbmVcIilcbiAgICAgIC5kZXNjcmliZShcbiAgICAgICAgXCJvcmRlcmVkLWF4aXMgdHJlbmQgKHRpbWUgc2VyaWVzLCBzZXF1ZW5jZSwgcmFuaykgd2hlcmUgdGhlIHgtYXhpcyBoYXMgbmF0dXJhbCBvcmRlclwiLFxuICAgICAgKSxcbiAgICB6LmxpdGVyYWwoXCJhcmVhXCIpLmRlc2NyaWJlKFwic3RhY2tlZC10cmVuZCBlbXBoYXNpcyAtIGN1bXVsYXRpdmUgb3IgY29tcG9zaXRpb24gb3ZlciB0aW1lXCIpLFxuICAgIHpcbiAgICAgIC5saXRlcmFsKFwiY29tYm9cIilcbiAgICAgIC5kZXNjcmliZShcbiAgICAgICAgXCJtaXhlZCBiYXIgKyBsaW5lIChvciBhcmVhKSBzZXJpZXMgb24gc2hhcmVkIGNhdGVnb3JpZXMgLSBlLmcuIHZvbHVtZSBiYXJzIHdpdGggYSByYXRlL3RyZW5kIGxpbmU7IHNldCBlYWNoIHNlcmllcycgYHR5cGVgXCIsXG4gICAgICApLFxuICAgIHpcbiAgICAgIC5saXRlcmFsKFwid2F0ZXJmYWxsXCIpXG4gICAgICAuZGVzY3JpYmUoXG4gICAgICAgIFwiYnJpZGdlIC8gcnVubmluZy10b3RhbCBvZiBzaWduZWQgc3RlcCB2YWx1ZXMgKHN0YXJ0IC0+IGRlbHRhcyAtPiBlbmQpIGFjcm9zcyBvcmRlcmVkIGNhdGVnb3JpZXNcIixcbiAgICAgICksXG4gICAgelxuICAgICAgLmxpdGVyYWwoXCJzY2F0dGVyXCIpXG4gICAgICAuZGVzY3JpYmUoXCJ0d28tbnVtZXJpYy1heGlzIGNvcnJlbGF0aW9ucyBiZXR3ZWVuIGZpZWxkcyAoZS5nLiBwcmljZSB2cy4gcXVhbnRpdHkpXCIpLFxuICAgIHpcbiAgICAgIC5saXRlcmFsKFwiaGVhdG1hcFwiKVxuICAgICAgLmRlc2NyaWJlKFxuICAgICAgICBcIm1hdHJpeCBpbnRlbnNpdHkgYWNyb3NzIHR3byBjYXRlZ29yeSBheGVzIC0geCBsYWJlbHMgaW4gYGNhdGVnb3JpZXNgLCBvbmUgc2VyaWVzIHBlciBtYXRyaXggcm93IGhvbGRpbmcgdGhhdCByb3cncyB2YWx1ZXNcIixcbiAgICAgICksXG4gICAgelxuICAgICAgLmxpdGVyYWwoXCJyYWRhclwiKVxuICAgICAgLmRlc2NyaWJlKFxuICAgICAgICBcIm11bHRpLWRpbWVuc2lvbiBjb21wYXJpc29uIGFjcm9zcyBhIGZpeGVkIHNldCBvZiBheGVzIChvbmUgaW5kaWNhdG9yIHBlciBjYXRlZ29yeSwgb25lIG9yIG1vcmUgc2VyaWVzIG9mIHZhbHVlcylcIixcbiAgICAgICksXG4gICAgei5saXRlcmFsKFwicGllXCIpLmRlc2NyaWJlKFwicGFydHMtb2YtYS13aG9sZSB3aGVuIDItNyBjYXRlZ29yaWVzIHN1bSB0byBhIG1lYW5pbmdmdWwgdG90YWxcIiksXG4gICAgelxuICAgICAgLmxpdGVyYWwoXCJmdW5uZWxcIilcbiAgICAgIC5kZXNjcmliZShcbiAgICAgICAgXCJvcmRlcmVkIHN0YWdlcyB0aGF0IHNocmluayAoY29udmVyc2lvbiwgcGlwZWxpbmUsIGF0dHJpdGlvbikgLSBge25hbWUsIHZhbHVlfWAgc2xpY2VzXCIsXG4gICAgICApLFxuICAgIHpcbiAgICAgIC5saXRlcmFsKFwidHJlZW1hcFwiKVxuICAgICAgLmRlc2NyaWJlKFxuICAgICAgICBcInBhcnRzLW9mLWEtd2hvbGUgYXMgbmVzdGVkIHJlY3RhbmdsZXMgd2hlbiB0aGVyZSBhcmUgbW9yZSB0aGFuIH43IGNhdGVnb3JpZXMgb3IgYSBmbGF0IGhpZXJhcmNoeSBvZiBge25hbWUsIHZhbHVlfWAgc2xpY2VzXCIsXG4gICAgICApLFxuICAgIHpcbiAgICAgIC5saXRlcmFsKFwiY3VzdG9tXCIpXG4gICAgICAuZGVzY3JpYmUoXG4gICAgICAgIFwiZXNjYXBlIGhhdGNoIGZvciBhIGNoYXJ0IG5vbmUgb2YgdGhlIGFib3ZlIGNhbiBleHByZXNzIChzYW5rZXksIGJveHBsb3QsIGNhbmRsZXN0aWNrLCBzdW5idXJzdCwgZ2F1Z2UsIG5ldHdvcmsgZ3JhcGgsIGNhbGVuZGFyLCBwYXJhbGxlbCwgLi4uKSAtIGhhbmQtd3JpdGUgdGhlIGNvbXBsZXRlIEVjaGFydHMgb3B0aW9uIGluc3RlYWQgb2YgYSBwbGFuXCIsXG4gICAgICApLFxuICBdKVxuICAuZGVzY3JpYmUoXCJUaGUgY2hhcnQgc2hhcGUgdGhhdCBiZXN0IG1hdGNoZXMgdGhlIGRhdGEgYW5kIGludGVudC5cIik7XG4vKiogU3VwcG9ydGVkIGNoYXJ0IGZhbWlseSBzZWxlY3RlZCBieSB0aGUgc2VydmVyLXNpZGUgY2hhcnQgcGxhbm5lci4gKi9cbmV4cG9ydCB0eXBlIENoYXJ0VHlwZSA9IHouaW5mZXI8dHlwZW9mIENoYXJ0VHlwZVNjaGVtYT47XG5cbi8qKlxuICogUmVzb2x2ZWQgY2hhcnQgcGxhbiBhIHNldHRsZWQgY2hhcnQgZW50cnkgY2FycmllcyBvbiBpdHNcbiAqIGByZXN1bHRgIGZpZWxkLiBgb3B0aW9uYCBpcyB0aGUgZnVsbCBFY2hhcnRzIHNwZWM7IHBhc3NcbiAqIHN0cmFpZ2h0IGludG8gYDxSZWFjdEVDaGFydHMgb3B0aW9uPXsuLi59PmAuXG4gKi9cbmV4cG9ydCBjb25zdCBDaGFydFJlc3VsdFNjaGVtYSA9IHoub2JqZWN0KHtcbiAgY2hhcnRUeXBlOiBDaGFydFR5cGVTY2hlbWEsXG4gIG9wdGlvbjogelxuICAgIC5yZWNvcmQoei5zdHJpbmcoKSwgei51bmtub3duKCkpXG4gICAgLmRlc2NyaWJlKFxuICAgICAgXCJGdWxseS1yZXNvbHZlZCBFY2hhcnRzIGBFQ2hhcnRzT3B0aW9uYCBKU09OIGZvciB0aGlzIGNoYXJ0IC0gZHJvcCBkaXJlY3RseSBpbnRvIGFuIEVjaGFydHMgaW5zdGFuY2UgKG9yIGA8UmVhY3RFQ2hhcnRzIG9wdGlvbj17Li4ufSAvPmApIHdpdGhvdXQgZnVydGhlciBwcm9jZXNzaW5nLiBJbmNsdWRlcyB0aXRsZSAvIHRvb2x0aXAgLyBsZWdlbmQgLyBncmlkIC8gYXhpcyAvIHNlcmllcyBkZWZhdWx0cyBhbHJlYWR5IG1lcmdlZCBpbi5cIixcbiAgICApLFxufSk7XG4vKiogUmVuZGVyLXJlYWR5IGNoYXJ0IHBsYW4gc3RvcmVkIGJlaGluZCBhIGNoYXJ0IGVtYmVkIGlkZW50aWZpZXIuICovXG5leHBvcnQgdHlwZSBDaGFydFJlc3VsdCA9IHouaW5mZXI8dHlwZW9mIENoYXJ0UmVzdWx0U2NoZW1hPjtcblxuLyoqXG4gKiBXaXJlLWZvcm1hdCBBTkQgc2VydmVyLXNpZGUgY2FjaGUgc2hhcGUgZm9yIGEgY2hhcnQgZW50cnkuXG4gKiBUaHJlZSBsaWZlY3ljbGUgc3RhdGVzIGluZmVycmVkIGZyb20gdGhlIHR3byBvcHRpb25hbCBmaWVsZHNcbiAqIChubyBkaXNjcmltaW5hdG9yIG5lZWRlZCk6XG4gKlxuICogICAtIGByZXN1bHRgIHNldCAgICAgICAgICAgICAgICAgICAgLT4gY2hhcnQgaXMgcmVhZHkgdG8gcmVuZGVyXG4gKiAgIC0gYGVycm9yYCBzZXQgICAgICAgICAgICAgICAgICAgICAtPiBwbGFubmVyIC8gZGF0YSBmZXRjaCBmYWlsZWRcbiAqICAgLSBib3RoIGByZXN1bHRgIGFuZCBgZXJyb3JgIHVuc2V0IC0+IHN0aWxsIHByb2Nlc3NpbmdcbiAqXG4gKiBgb3B0aW9uYCBpcyB0eXBlZCBhcyBhIGdlbmVyaWMgcmVjb3JkIHNvIHRoaXMgcGFja2FnZSBzdGF5c1xuICogZGVwZW5kZW5jeS1mcmVlIG9mIGBlY2hhcnRzYC4gVGhlIHNlcnZlciAoYGNoYXJ0LnRzYCkgaW1wb3J0c1xuICogdGhpcyBzY2hlbWEgZGlyZWN0bHk7IHRoZSBkZW1vIGNsaWVudCBwb2xscyB0aGVcbiAqIGAvZW1iZWQvY2hhcnQvOmlkYCByb3V0ZSBhbmQgcGFyc2VzIHJlc3BvbnNlcyBhZ2FpbnN0IGl0LlxuICovXG5leHBvcnQgY29uc3QgQ2hhcnRTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIGNoYXJ0SWQ6IHpcbiAgICAuc3RyaW5nKClcbiAgICAuZGVzY3JpYmUoXG4gICAgICBcIk9wYXF1ZSBpZCBtaW50ZWQgYnkgdGhlIGNoYXJ0IHN1YnN5c3RlbS4gRW1iZWQgdmVyYmF0aW0gYXMgYFtjaGFydDo8Y2hhcnRJZD5dYCBpbiBhZ2VudCBwcm9zZTsgdGhlIGhvc3QgVUkgcmVzb2x2ZXMgaXQgYWdhaW5zdCB0aGlzIGNhY2hlIGVudHJ5LlwiLFxuICAgICksXG4gIGVycm9yOiB6XG4gICAgLnN0cmluZygpXG4gICAgLm9wdGlvbmFsKClcbiAgICAuZGVzY3JpYmUoXG4gICAgICBcIkVycm9yIG1lc3NhZ2Ugd2hlbiB0aGUgY2hhcnQgZmFpbGVkIChkYXRhIGZldGNoIGVycm9yLCBwbGFubmVyIGVycm9yLCBlbXB0eSBkYXRhc2V0KS4gTXV0dWFsbHkgZXhjbHVzaXZlIHdpdGggYHJlc3VsdGA7IGFic2VudCBvbiBzdWNjZXNzIGFuZCB3aGlsZSBwcm9jZXNzaW5nLlwiLFxuICAgICksXG4gIHJlc3VsdDogQ2hhcnRSZXN1bHRTY2hlbWEub3B0aW9uYWwoKS5kZXNjcmliZShcbiAgICBcIlJlc29sdmVkIGNoYXJ0IHBsYW4uIEFic2VudCB3aGlsZSBwcm9jZXNzaW5nIGFuZCB3aGVuIHRoZSBydW4gZXJyb3JlZC5cIixcbiAgKSxcbn0pO1xuLyoqIFBvbGxhYmxlIGNoYXJ0LWNhY2hlIGVudHJ5IHJlcHJlc2VudGluZyBwZW5kaW5nLCBzdWNjZXNzZnVsLCBvciBmYWlsZWQgcGxhbm5pbmcuICovXG5leHBvcnQgdHlwZSBDaGFydCA9IHouaW5mZXI8dHlwZW9mIENoYXJ0U2NoZW1hPjtcblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBzdGF0ZW1lbnRzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuLyoqXG4gKiBXaXJlLWZvcm1hdCBwYXlsb2FkIHJldHVybmVkIGJ5IGBHRVQgJHtiYXNlUGF0aH0vZW1iZWQvZGF0YS86aWRgLlxuICpcbiAqIE1pcnJvcnMgdGhlIGFnZW50LXNpZGUgYGdldF9zdGF0ZW1lbnRgIHRvb2wncyBvdXRwdXQgc28gdGhlXG4gKiBob3N0IFVJIGFuZCB0aGUgTExNIHNlZSB0aGUgZXhhY3Qgc2FtZSBzaGFwZSBmb3IgdGhlIHNhbWVcbiAqIHN0YXRlbWVudDsgdGhlIHJvdXRlIGlzIHdoYXQgcmVzb2x2ZXMgYFtkYXRhOjxzdGF0ZW1lbnRfaWQ+XWBcbiAqIG1hcmtlcnMgdGhlIGFnZW50IGVtYmVkcyBpbiBwcm9zZS5cbiAqXG4gKiBGaWVsZHM6XG4gKiAgIC0gYGNvbHVtbnNgOiBjb2x1bW4gbmFtZXMgaW4gZGVjbGFyYXRpb24gb3JkZXIuXG4gKiAgIC0gYHJvd3NgOiByb3cgcmVjb3JkcyBrZXllZCBieSBjb2x1bW4gbmFtZS4gQ2VsbCB2YWx1ZXMgYXJlXG4gKiAgICAgZWl0aGVyIGNvZXJjZWQgbnVtYmVycyBvciB0aGUgb3JpZ2luYWwgc3RyaW5ncyAoR2VuaWUgL1xuICogICAgIFN0YXRlbWVudCBFeGVjdXRpb24gcmV0dXJucyBldmVyeSBjZWxsIGFzIGBzdHJpbmcgfCBudWxsYDtcbiAqICAgICBudW1lcmljLWxvb2tpbmcgY2VsbHMgYXJlIGNvZXJjZWQgc2VydmVyLXNpZGUgc28gdGhlIFVJXG4gKiAgICAgY2FuIGZvcm1hdCB3aXRoIGB0YWJ1bGFyLW51bXNgIHdpdGhvdXQgcmUtcGFyc2luZykuXG4gKiAgIC0gYHJvd0NvdW50YDogdG90YWwgcm93IGNvdW50IHVwc3RyZWFtIChpbmRlcGVuZGVudCBvZiB0aGVcbiAqICAgICBgbGltaXRgIGNhcCkuIENvbXBhcmUgYWdhaW5zdCBgcm93cy5sZW5ndGhgIHRvIGRldGVjdFxuICogICAgIHRydW5jYXRpb24gLSBgdHJ1bmNhdGVkYCBpcyB0aGUgcHJlY29tcHV0ZWQgZmxhZy5cbiAqICAgLSBgdHJ1bmNhdGVkYDogYHRydWVgIHdoZW4gdGhlIHNlcnZlciBjbGlwcGVkIHJvd3MgdG8gaG9ub3JcbiAqICAgICB0aGUgcm91dGUncyByb3cgY2FwOyB0aGUgVUkgc2hvdWxkIHN1cmZhY2UgYSBcInNob3dpbmcgTiBvZlxuICogICAgIE0gcm93c1wiIGFmZm9yZGFuY2UgaW4gdGhhdCBjYXNlLlxuICovXG5leHBvcnQgY29uc3QgU3RhdGVtZW50RGF0YVNjaGVtYSA9IHoub2JqZWN0KHtcbiAgY29sdW1uczogei5hcnJheSh6LnN0cmluZygpKSxcbiAgcm93czogei5hcnJheSh6LnJlY29yZCh6LnN0cmluZygpLCB6LnVua25vd24oKSkpLFxuICByb3dDb3VudDogei5udW1iZXIoKSxcbiAgdHJ1bmNhdGVkOiB6LmJvb2xlYW4oKSxcbn0pO1xuLyoqIFRhYnVsYXIgc3RhdGVtZW50IHBheWxvYWQgcmVzb2x2ZWQgZnJvbSBhIGBbZGF0YTo8c3RhdGVtZW50X2lkPl1gIGVtYmVkIG1hcmtlci4gKi9cbmV4cG9ydCB0eXBlIFN0YXRlbWVudERhdGEgPSB6LmluZmVyPHR5cGVvZiBTdGF0ZW1lbnREYXRhU2NoZW1hPjtcblxuLyogLS0tLS0tLS0tLS0tLS0tLSBtYXN0cmEtb25seSBnZW5pZS1hZ2VudCBldmVudHMgLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG4vKipcbiAqIE1hc3RyYS1vbmx5IGxpZmVjeWNsZSBldmVudDogdGhlIEdlbmllIHRvb2wgaW52b2NhdGlvbiBzdGFydGVkLlxuICogRW1pdHRlZCBpbW1lZGlhdGVseSB3aGVuIHRoZSBjYWxsaW5nIGFnZW50IGludm9rZXMgdGhlIEdlbmllXG4gKiB0b29sLCBiZWZvcmUgYW55IGlubmVyIGFnZW50IC8gd2lyZSBhY3Rpdml0eSwgc28gdGhlIFVJIGNhblxuICogcG9wIGEgXCJUaGlua2luZy4uLlwiIHBpbGwgdGhlIGluc3RhbnQgdGhlIG1vZGVsIGRlY2lkZXMgdG9cbiAqIGRlbGVnYXRlLiBgY29udmVyc2F0aW9uSWRgIC8gYG1lc3NhZ2VJZGAgYXJlIGFic2VudCBvbiB0aGlzXG4gKiBmaXJzdCBlbWl0IChubyBHZW5pZSByb3VuZC10cmlwIHlldCkuIEZpZWxkIG5hbWVzIGFyZVxuICogY2FtZWxDYXNlICh2cyB0aGUgc25ha2VfY2FzZSB3aXJlIGV2ZW50cykgdG8gbWlycm9yIHRoZVxuICogR2VuaWUgYWdlbnQncyBvd24gaW50ZXJuYWwgZGF0YSBwbHVtYmluZy5cbiAqL1xuZXhwb3J0IGNvbnN0IFN0YXJ0ZWRFdmVudFNjaGVtYSA9IHoub2JqZWN0KHtcbiAgdHlwZTogei5saXRlcmFsKFwic3RhcnRlZFwiKSxcbiAgc3BhY2VJZDogei5zdHJpbmcoKSxcbiAgLyoqXG4gICAqIEdlbmllIGNvbnZlcnNhdGlvbiBpZCwgcG9wdWxhdGVkIG9ubHkgd2hlbiB0aGlzIGBzdGFydGVkYFxuICAgKiBldmVudCBjb3JyZXNwb25kcyB0byBhIGZvbGxvdy11cCB0dXJuIG9uIGFuIGV4aXN0aW5nXG4gICAqIGNvbnZlcnNhdGlvbi4gQWJzZW50IG9uIHRoZSBmaXJzdCB0dXJuLlxuICAgKi9cbiAgY29udmVyc2F0aW9uSWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgLyoqXG4gICAqIEdlbmllIG1lc3NhZ2UgaWQsIHBvcHVsYXRlZCBvbmx5IGFmdGVyIHRoZSBmaXJzdCB3aXJlXG4gICAqIGBtZXNzYWdlYCBldmVudCBsYW5kcy4gQWJzZW50IG9uIHRoZSBpbW1lZGlhdGUtb24taW52b2tlXG4gICAqIGVtaXQuXG4gICAqL1xuICBtZXNzYWdlSWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgLyoqIFF1ZXN0aW9uIHRoZSBHZW5pZSBhZ2VudCBzZW50IHRvIEdlbmllLiAqL1xuICBjb250ZW50OiB6LnN0cmluZygpLFxufSk7XG4vKiogSW1tZWRpYXRlIGxpZmVjeWNsZSBldmVudCBlbWl0dGVkIHdoZW4gYW4gYGFza19nZW5pZWAgaW52b2NhdGlvbiBiZWdpbnMuICovXG5leHBvcnQgdHlwZSBTdGFydGVkRXZlbnQgPSB6LmluZmVyPHR5cGVvZiBTdGFydGVkRXZlbnRTY2hlbWE+O1xuXG4vKipcbiAqIE1hc3RyYS1vbmx5IGxpZmVjeWNsZSBldmVudDogb25lIGBhc2tfZ2VuaWVgIGludm9jYXRpb25cbiAqIGZpbmlzaGVkLiBDYXJyaWVzIHRoZSBoeWRyYXRlZCBgc3RhdGVtZW50SWRzYCAocm93cyBhcmUgZmV0Y2hlZFxuICogdmlhIGBnZXRTdGF0ZW1lbnRgIHNlcGFyYXRlbHkpIGFuZCBHZW5pZSdzIGZpbmFsIHByb3NlIGFuc3dlclxuICogc28gdGhlIFVJIGNhbiBtb3ZlIGZyb20gXCJ0aGlua2luZ1wiIHRvIFwiYW5zd2VyZWRcIiB3aXRob3V0XG4gKiB3YWl0aW5nIGZvciB0aGUgR2VuaWUgYWdlbnQncyB3aG9sZSByZWFzb25pbmcgbG9vcCB0byBlbmQuXG4gKi9cbmV4cG9ydCBjb25zdCBBc2tHZW5pZURvbmVFdmVudFNjaGVtYSA9IHoub2JqZWN0KHtcbiAgdHlwZTogei5saXRlcmFsKFwiYXNrX2dlbmllX2RvbmVcIiksXG4gIHNwYWNlSWQ6IHouc3RyaW5nKCksXG4gIGNvbnZlcnNhdGlvbklkOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIG1lc3NhZ2VJZDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAvKiogR2VuaWUncyBuYXR1cmFsLWxhbmd1YWdlIGFuc3dlciBmb3IgdGhlIHR1cm4sIGlmIGFueS4gKi9cbiAgYW5zd2VyOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIC8qKiBTdGF0ZW1lbnQgaWRzIGZvciBhbnkgbm9uLWVtcHR5IHJlc3VsdCBzZXRzIHRoaXMgdHVybiBwcm9kdWNlZC4gKi9cbiAgc3RhdGVtZW50SWRzOiB6LmFycmF5KHouc3RyaW5nKCkpLFxuICAvKipcbiAgICogVGVybWluYWwgd2lyZSBzdGF0dXMgKGBDT01QTEVURURgIC8gYEZBSUxFRGAgLyBgQ0FOQ0VMTEVEYCkuXG4gICAqIE1pcnJvcnMgdGhlIHNvdXJjZSBgcmVzdWx0YCBldmVudCdzIHN0YXR1cyBzbyBzdWJzY3JpYmVyc1xuICAgKiBjYW4gcmVhY3QgdG8gYXNrLWxldmVsIGNvbXBsZXRpb24gd2l0aG91dCByZS13YWxraW5nIGhpc3RvcnkuXG4gICAqIFRyZWF0ZWQgYXMgYHouY3VzdG9tPE1lc3NhZ2VTdGF0dXM+YCBiZWNhdXNlIHRoZSBTREsgaXMgdGhlXG4gICAqIHNvdXJjZSBvZiB0cnV0aCBmb3IgdGhlIGVudW0gdmFsdWVzLlxuICAgKi9cbiAgc3RhdHVzOiB6LmN1c3RvbTxNZXNzYWdlU3RhdHVzPigodikgPT4gdHlwZW9mIHYgPT09IFwic3RyaW5nXCIpLFxufSk7XG4vKiogQ29tcGxldGlvbiBldmVudCBmb3Igb25lIGBhc2tfZ2VuaWVgIGludm9jYXRpb24sIGluY2x1ZGluZyBpdHMgdGVybWluYWwgc3RhdHVzLiAqL1xuZXhwb3J0IHR5cGUgQXNrR2VuaWVEb25lRXZlbnQgPSB6LmluZmVyPHR5cGVvZiBBc2tHZW5pZURvbmVFdmVudFNjaGVtYT47XG5cbi8qKlxuICogTWFzdHJhLW9ubHkgZXJyb3IgZXZlbnQ6IHRlcm1pbmFsIEdlbmllIGFnZW50IC8gdHJhbnNwb3J0XG4gKiBlcnJvci4gR2VuaWUncyBvd24gYEZBSUxFRGAgLyBgQ0FOQ0VMTEVEYCBjb21lIHRocm91Z2ggdGhlXG4gKiB3aXJlJ3MgYHJlc3VsdGAgZXZlbnQgLSB0aGlzIHZhcmlhbnQgaXMgZm9yIGZhaWx1cmVzIHRoZSB3aXJlXG4gKiBjYW4ndCByZXByZXNlbnQgKG5ldHdvcmssIEdlbmllIGFnZW50IGNyYXNoLCBwbGFubmVyIGVycm9yLFxuICogZXRjLikgcGx1cyBhIFVJLWZyaWVuZGx5IG1pcnJvciBvZiBgcmVzdWx0YCB3aGVuIHRoZSBzdGF0dXMgaXNcbiAqIG5vbi1gQ09NUExFVEVEYC5cbiAqL1xuZXhwb3J0IGNvbnN0IE1hc3RyYUdlbmllRXJyb3JFdmVudFNjaGVtYSA9IHoub2JqZWN0KHtcbiAgdHlwZTogei5saXRlcmFsKFwiZXJyb3JcIiksXG4gIHNwYWNlSWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgY29udmVyc2F0aW9uSWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgbWVzc2FnZUlkOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIGVycm9yOiB6LnN0cmluZygpLFxufSk7XG4vKiogTWFzdHJhLXNpZGUgZmFpbHVyZSBldmVudCBmb3IgZXJyb3JzIG91dHNpZGUgR2VuaWUncyBub3JtYWwgdGVybWluYWwgcmVzdWx0LiAqL1xuZXhwb3J0IHR5cGUgTWFzdHJhR2VuaWVFcnJvckV2ZW50ID0gei5pbmZlcjx0eXBlb2YgTWFzdHJhR2VuaWVFcnJvckV2ZW50U2NoZW1hPjtcblxuLyoqXG4gKiBNYXN0cmEtb25seSBsaWZlY3ljbGUgZXZlbnQ6IHRoZSBpbm5lciBHZW5pZSBhZ2VudCdzXG4gKiBzdHJ1Y3R1cmVkLW91dHB1dCBjb2VyY2lvbiBoYXMgbGFuZGVkLiBGaXJlcyBvbmNlIHBlciBHZW5pZVxuICogdG9vbCBpbnZvY2F0aW9uLCBBRlRFUiBgYWdlbnQuZ2VuZXJhdGUoLi4uKWAgY29tcGxldGVzIChpLmUuXG4gKiB0aGUgaW5uZXIgbG9vcCArIE1hc3RyYSdzIHN0cnVjdHVyaW5nIHBhc3MgaGF2ZSBib3RoXG4gKiBmaW5pc2hlZCkgYW5kIEJFRk9SRSB0aGUgd3JhcHBlciBoeWRyYXRlcyBlYWNoIGBkYXRhYCBpdGVtXG4gKiB3aXRoIGEgY2hhcnQuIFNpZ25hbHMgdG8gdGhlIGhvc3QgVUkgdGhhdCB0aGUgYWdlbnQgaGFzXG4gKiBzdG9wcGVkIHJlYXNvbmluZyBhbmQgaXMgbW92aW5nIGludG8gY2hhcnQgZ2VuZXJhdGlvbi5cbiAqXG4gKiBUaGUgc3RydWN0dXJpbmcgcGFzcyBpdHNlbGYgaXMgb3BhcXVlIChpdCBydW5zIGluc2lkZVxuICogTWFzdHJhJ3MgYGFnZW50LmdlbmVyYXRlKC4uLilgIHRvZ2V0aGVyIHdpdGggdGhlIHRvb2wgbG9vcClcbiAqIHNvIHRoaXMgaXMgdGhlIGVhcmxpZXN0IGhvb2sgd2UgY2FuIG9mZmVyOyB3ZSBjYW4ndCBmaXJlIGFcbiAqIFwic3VtbWFyeSBzdGFydGVkXCIgZXZlbnQgdGhlIHdheSB3ZSBmaXJlIGBzdGFydGVkYC5cbiAqL1xuZXhwb3J0IGNvbnN0IFN1bW1hcnlFdmVudFNjaGVtYSA9IHoub2JqZWN0KHtcbiAgdHlwZTogei5saXRlcmFsKFwic3VtbWFyeVwiKSxcbiAgc3BhY2VJZDogei5zdHJpbmcoKSxcbiAgLyoqIFRvdGFsIG51bWJlciBvZiBpdGVtcyBpbiB0aGUgYWdlbnQncyBzdHJ1Y3R1cmVkIHN1bW1hcnkuICovXG4gIGl0ZW1zOiB6Lm51bWJlcigpLmludCgpLm5vbm5lZ2F0aXZlKCksXG4gIC8qKiBDb3VudCBvZiBgdGV4dGAgLyBwcm9zZSBpdGVtcyBpbiB0aGUgc3VtbWFyeS4gKi9cbiAgdGV4dEl0ZW1zOiB6Lm51bWJlcigpLmludCgpLm5vbm5lZ2F0aXZlKCksXG4gIC8qKlxuICAgKiBDb3VudCBvZiBgZGF0YWAgaXRlbXMgdGhlIHdyYXBwZXIgd2lsbCBoeWRyYXRlIGludG8gY2hhcnRzLlxuICAgKiBUaGUgaG9zdCBVSSBjYW4gdXNlIHRoaXMgdG8gc2VlZCBOIGNoYXJ0IHNrZWxldG9ucyBiZWZvcmVcbiAgICogdGhlIHBlci1jaGFydCBldmVudHMgYXJyaXZlLlxuICAgKi9cbiAgZGF0YUl0ZW1zOiB6Lm51bWJlcigpLmludCgpLm5vbm5lZ2F0aXZlKCksXG59KTtcbi8qKiBMaWZlY3ljbGUgZXZlbnQgZW1pdHRlZCBiZWZvcmUgc3VtbWFyeSBkYXRhIGl0ZW1zIGFyZSBoeWRyYXRlZCBpbnRvIGNoYXJ0cy4gKi9cbmV4cG9ydCB0eXBlIFN1bW1hcnlFdmVudCA9IHouaW5mZXI8dHlwZW9mIFN1bW1hcnlFdmVudFNjaGVtYT47XG5cbi8qKlxuICogTWFzdHJhLW9ubHkgZXZlbnQgdW5pb24uIEVhY2ggdmFyaWFudCB1c2VzIHRoZSBzYW1lIGZsYXRcbiAqIGB7dHlwZSwgLi4uZmllbGRzfWAgc2hhcGUgYXMge0BsaW5rIEdlbmllQ2hhdEV2ZW50fSBzb1xuICogc3Vic2NyaWJlcnMgdW5pb24gYm90aCB3aXRoIGEgc2luZ2xlIGBzd2l0Y2ggKGV2ZW50LnR5cGUpYC5cbiAqL1xuZXhwb3J0IGNvbnN0IEdlbmllQWdlbnRFdmVudFNjaGVtYSA9IHouZGlzY3JpbWluYXRlZFVuaW9uKFwidHlwZVwiLCBbXG4gIFN0YXJ0ZWRFdmVudFNjaGVtYSxcbiAgQXNrR2VuaWVEb25lRXZlbnRTY2hlbWEsXG4gIE1hc3RyYUdlbmllRXJyb3JFdmVudFNjaGVtYSxcbiAgU3VtbWFyeUV2ZW50U2NoZW1hLFxuXSk7XG4vKiogTWFzdHJhLW93bmVkIGxpZmVjeWNsZSBldmVudHMgbGF5ZXJlZCBvbiB0b3Agb2YgR2VuaWUncyB3aXJlIGV2ZW50IHN0cmVhbS4gKi9cbmV4cG9ydCB0eXBlIEdlbmllQWdlbnRFdmVudCA9IHouaW5mZXI8dHlwZW9mIEdlbmllQWdlbnRFdmVudFNjaGVtYT47XG5cbi8qKlxuICogVGhlIHVuaWZpZWQgd3JpdGVyLWV2ZW50IHZvY2FidWxhcnkgc3Vic2NyaWJlcnMgc2VlIG9uXG4gKiBgY3R4LndyaXRlcmA6IHRoZSB3aXJlLWRlcml2ZWQge0BsaW5rIEdlbmllQ2hhdEV2ZW50fSB1bmlvblxuICogKipwbHVzKiogTWFzdHJhLW9ubHkgZXZlbnRzIGZyb20ge0BsaW5rIEdlbmllQWdlbnRFdmVudH0uIEVhY2hcbiAqIHZhcmlhbnQgaXMgYSBmbGF0IGB7dHlwZSwgLi4uZmllbGRzfWAgb2JqZWN0OyBjb25zdW1lcnMgbmFycm93XG4gKiBvbiBgdHlwZWAgYW5kIHJlYWQgZmllbGRzIGlubGluZSAtIHRoZXJlIGlzIG5vIHBheWxvYWQgd3JhcHBlclxuICogYW5kIG5vIHdyaXRlci1ib3VuZGFyeSB0cmFuc2xhdG9yLlxuICpcbiAqIENvbXBvc2VkIHZpYSBgei51bmlvbmAgKG5vdCBgei5kaXNjcmltaW5hdGVkVW5pb25gKSBiZWNhdXNlXG4gKiBib3RoIGhhbHZlcyBhcmUgdGhlbXNlbHZlcyBkaXNjcmltaW5hdGVkIHVuaW9ucyBvbiB0aGUgc2FtZVxuICogYHR5cGVgIGtleS5cbiAqL1xuZXhwb3J0IGNvbnN0IEdlbmllV3JpdGVyRXZlbnRTY2hlbWEgPSB6LnVuaW9uKFtcbiAgZ2VuaWVNb2RlbC5HZW5pZUNoYXRFdmVudFNjaGVtYSxcbiAgR2VuaWVBZ2VudEV2ZW50U2NoZW1hLFxuXSk7XG4vKiogQ29tcGxldGUgZXZlbnQgdm9jYWJ1bGFyeSB3cml0dGVuIGJ5IHRoZSBNYXN0cmEgR2VuaWUgaW50ZWdyYXRpb24uICovXG5leHBvcnQgdHlwZSBHZW5pZVdyaXRlckV2ZW50ID0gei5pbmZlcjx0eXBlb2YgR2VuaWVXcml0ZXJFdmVudFNjaGVtYT47XG5cbi8qKiBEaXNjcmltaW5hdG9yIHR5cGUgZm9yIHtAbGluayBHZW5pZVdyaXRlckV2ZW50fS4gKi9cbmV4cG9ydCB0eXBlIEdlbmllV3JpdGVyRXZlbnRUeXBlID0gR2VuaWVXcml0ZXJFdmVudFtcInR5cGVcIl07XG5cbi8qKiBOYXRpdmUgQUkgU0RLIGN1c3RvbSBkYXRhLXBhcnQgdHlwZSBjYXJyeWluZyBvbmUgR2VuaWUgcHJvZ3Jlc3MgZXZlbnQuICovXG5leHBvcnQgY29uc3QgR0VOSUVfUFJPR1JFU1NfUEFSVF9UWVBFID0gXCJkYXRhLWdlbmllLXByb2dyZXNzXCIgYXMgY29uc3Q7XG5cbi8qKlxuICogRGF0YSBhdHRhY2hlZCB0byB7QGxpbmsgR0VOSUVfUFJPR1JFU1NfUEFSVF9UWVBFfS4gYHRvb2xDYWxsSWRgIGFzc29jaWF0ZXNcbiAqIHByb2dyZXNzIHdpdGggdGhlIG5hdGl2ZSB0b29sIHBhcnQgdGhhdCBvd25zIHRoZSByZXF1ZXN0IGFuZCByZXN1bHQuXG4gKi9cbmV4cG9ydCBjb25zdCBHZW5pZVByb2dyZXNzUGFydERhdGFTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIHRvb2xDYWxsSWQ6IHouc3RyaW5nKCksXG4gIGV2ZW50OiBHZW5pZVdyaXRlckV2ZW50U2NoZW1hLFxufSk7XG4vKiogVmFsaWRhdGVkIHBheWxvYWQgY2FycmllZCBieSBhIG5hdGl2ZSBHZW5pZSBwcm9ncmVzcyBkYXRhIHBhcnQuICovXG5leHBvcnQgdHlwZSBHZW5pZVByb2dyZXNzUGFydERhdGEgPSB6LmluZmVyPHR5cGVvZiBHZW5pZVByb2dyZXNzUGFydERhdGFTY2hlbWE+O1xuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHN1bW1hcnkgKyBkYXRhc2V0IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG4vKipcbiAqIFRhYnVsYXIgcGF5bG9hZCBlbWJlZGRlZCBpbiBldmVyeSB7QGxpbmsgR2VuaWVTdW1tYXJ5SXRlbX1cbiAqIGB2aXN1YWxpemVgIGRhdGFzZXQuIEFsd2F5cyBwcmVzZW50OiBoeWRyYXRlZCBieSB0aGUgd29ya2Zsb3cnc1xuICogYWdlbnQgc3RlcCBiZWZvcmUgdGhlIGZpbmFsaXplIHN0ZXAgcnVucywgc28gY29uc3VtZXJzIGNhbiByZW5kZXJcbiAqIGEgdGFibGUgZmFsbGJhY2sgcmVnYXJkbGVzcyBvZiBjaGFydC1wbGFubmVyIG91dGNvbWUuXG4gKlxuICogRmllbGRzOlxuICogICAtIGBjb2x1bW5zYDogY29sdW1uIG5hbWVzIGluIGRpc3BsYXkgb3JkZXIuXG4gKiAgIC0gYHJvd3NgOiB0YWJ1bGFyIHJvd3Mga2V5ZWQgYnkgY29sdW1uIG5hbWUuXG4gKiAgIC0gYHJvd0NvdW50YDogdG90YWwgcm93IGNvdW50IEdlbmllIHJlcG9ydGVkIChtYXkgZXhjZWVkXG4gKiAgICAgYHJvd3MubGVuZ3RoYCB3aGVuIHRoZSBzdGF0ZW1lbnQgd2FzIHRydW5jYXRlZCkuXG4gKi9cbmV4cG9ydCBjb25zdCBHZW5pZURhdGFzZXREYXRhU2NoZW1hID0gei5vYmplY3Qoe1xuICBjb2x1bW5zOiB6LmFycmF5KHouc3RyaW5nKCkpLFxuICByb3dzOiB6LmFycmF5KHoucmVjb3JkKHouc3RyaW5nKCksIHoudW5rbm93bigpKSksXG4gIHJvd0NvdW50OiB6Lm51bWJlcigpLFxufSk7XG4vKiogSHlkcmF0ZWQgdGFidWxhciBkYXRhIHRoYXQgYWx3YXlzIGJhY2tzIGEgR2VuaWUgdmlzdWFsaXphdGlvbiBpdGVtLiAqL1xuZXhwb3J0IHR5cGUgR2VuaWVEYXRhc2V0RGF0YSA9IHouaW5mZXI8dHlwZW9mIEdlbmllRGF0YXNldERhdGFTY2hlbWE+O1xuXG4vKipcbiAqIFNsaW0gY2hhcnQgcmVmZXJlbmNlIGF0dGFjaGVkIHRvIGEgdmlzdWFsaXplIGRhdGFzZXQuIE9ubHlcbiAqIHByZXNlbnQgd2hlbiBwbGFubmluZyBzdWNjZWVkZWQuXG4gKlxuICogYG9wdGlvbmAgaXMgaW50ZW50aW9uYWxseSBOT1QgaW5jbHVkZWQuIFRoZSByZXNvbHZlZCBFY2hhcnRzXG4gKiBzcGVjIGxpdmVzIG9mZi1iYW5kIGluIHRoZSBjaGFydCBjYWNoZTogdGhlIGhvc3QgVUkgZmV0Y2hlcyBpdFxuICogYnkgYGNoYXJ0SWRgIGZyb20gdGhlIHBsdWdpbidzIGVtYmVkIHJvdXRlIChkZXJpdmVkIGZyb21cbiAqIGBiYXNlUGF0aGAgKyB7QGxpbmsgTUFTVFJBX1JPVVRFU30uZW1iZWQsIGkuZS4gYC9lbWJlZC9jaGFydC86aWRgO1xuICogc2VlIHtAbGluayBDaGFydH0pLiBFbWJlZGRpbmcgdGhlIGZ1bGwgc3BlYyBpbmxpbmUgd291bGRcbiAqIGluZmxhdGUgZXZlcnkgZGF0YXNldCBieSBzZXZlcmFsIEtCIHBlciBjaGFydCBhbmQgcm91bmQtdHJpcFxuICogdGhyb3VnaCB0aGUgTExNIGNvbnRleHQgZm9yIHplcm8gYmVuZWZpdCAodGhlIG1vZGVsIG9ubHkgbmVlZHNcbiAqIHRoZSBgY2hhcnRJZGAgdG8gcGxhY2UgYSBgW2NoYXJ0OjxjaGFydElkPl1gIG1hcmtlciBpbiBpdHNcbiAqIHJlcGx5KS5cbiAqL1xuZXhwb3J0IGNvbnN0IEdlbmllRGF0YXNldENoYXJ0U2NoZW1hID0gei5vYmplY3Qoe1xuICBjaGFydElkOiB6LnN0cmluZygpLFxuICBjaGFydFR5cGU6IENoYXJ0VHlwZVNjaGVtYSxcbn0pO1xuLyoqIExpZ2h0d2VpZ2h0IHJlZmVyZW5jZSB0byBhIGNoYXJ0IHBsYW4gc3RvcmVkIGluIHRoZSBNYXN0cmEgY2hhcnQgY2FjaGUuICovXG5leHBvcnQgdHlwZSBHZW5pZURhdGFzZXRDaGFydCA9IHouaW5mZXI8dHlwZW9mIEdlbmllRGF0YXNldENoYXJ0U2NoZW1hPjtcblxuLyoqXG4gKiBEYXRhc2V0IGJ1bmRsZSBhdHRhY2hlZCB0byBhIHtAbGluayBHZW5pZVN1bW1hcnlJdGVtfSBgdmlzdWFsaXplYFxuICogaXRlbS4gYGRhdGFgIGlzIGFsd2F5cyBwb3B1bGF0ZWQ7IGBjaGFydGAgaXMgYmVzdC1lZmZvcnQgYW5kXG4gKiBhYnNlbnQgd2hlbiB0aGUgd29ya2Zsb3cncyBjaGFydC1wbGFubmVyIGZhaWxlZCAodGltZW91dCxcbiAqIG1hbGZvcm1lZCBwbGFuLCBhYm9ydCkgc28gdGhlIGhvc3QgVUkgY2FuIHN0aWxsIHJlbmRlciB0aGVcbiAqIHVuZGVybHlpbmcgdGFibGUuXG4gKi9cbmV4cG9ydCBjb25zdCBHZW5pZURhdGFzZXRTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIGRhdGE6IEdlbmllRGF0YXNldERhdGFTY2hlbWEsXG4gIGNoYXJ0OiBHZW5pZURhdGFzZXRDaGFydFNjaGVtYS5vcHRpb25hbCgpLFxufSk7XG4vKiogVmlzdWFsaXphdGlvbiBkYXRhc2V0IHdpdGggcmVxdWlyZWQgdGFibGUgZGF0YSBhbmQgYW4gb3B0aW9uYWwgcGxhbm5lZCBjaGFydC4gKi9cbmV4cG9ydCB0eXBlIEdlbmllRGF0YXNldCA9IHouaW5mZXI8dHlwZW9mIEdlbmllRGF0YXNldFNjaGVtYT47XG5cbi8qKlxuICogT25lIGl0ZW0gaW5zaWRlIHRoZSBHZW5pZSB3b3JrZmxvdydzIGZpbmFsIHN1bW1hcnkuIFRoZVxuICogd29ya2Zsb3cgcHJvZHVjZXMgYSBtaXhlZCBzZXF1ZW5jZSBvZjpcbiAqXG4gKiAgIC0gYHN0cmluZ2A6IGEgbWFya2Rvd24gcGFyYWdyYXBoIChpbnRlcnByZXRhdGlvbiwgY2FsbG91dHMsXG4gKiAgICAgdHJhbnNpdGlvbnMgYmV0d2VlbiBkYXRhIGJsb2NrcykuXG4gKiAgIC0gYHZpc3VhbGl6ZWA6IGEgcmVxdWVzdCBmcm9tIHRoZSBhZ2VudCBzdGVwIHRvIHZpc3VhbGl6ZSBhXG4gKiAgICAgc3BlY2lmaWMgR2VuaWUgc3RhdGVtZW50IGF0IHRoaXMgcG9zaXRpb24gaW4gdGhlIHByb3NlLlxuICogICAgIFRoZSBmaW5hbGl6ZSBzdGVwIGh5ZHJhdGVzIGBkYXRhc2V0LmRhdGFgIChyb3dzIGZyb20gdGhlXG4gKiAgICAgbWF0Y2hpbmcgYHN0YXRlbWVudElkYCkgYW5kIGF0dGFjaGVzIGBkYXRhc2V0LmNoYXJ0YCBhZnRlclxuICogICAgIHJ1bm5pbmcgdGhlIGNoYXJ0LXBsYW5uZXIuIFRoZSBhZ2VudCBORVZFUiBwaWNrcyB0aGUgY2hhcnRcbiAqICAgICB0eXBlIC0gaXQgb25seSBtYXJrcyB3aGVyZSBhIHZpc3VhbGl6YXRpb24gYmVsb25ncy5cbiAqXG4gKiBUaGUgaG9zdCBVSSB3YWxrcyB0aGUgYXJyYXkgaW4gZGlzcGxheSBvcmRlciB0byBjb21wb3NlIHRoZVxuICogZmluYWwgYXNzaXN0YW50IG1lc3NhZ2UuXG4gKi9cbmV4cG9ydCBjb25zdCBHZW5pZVN1bW1hcnlJdGVtU2NoZW1hID0gei5kaXNjcmltaW5hdGVkVW5pb24oXCJ0eXBlXCIsIFtcbiAgei5vYmplY3Qoe1xuICAgIHR5cGU6IHoubGl0ZXJhbChcInN0cmluZ1wiKSxcbiAgICB0ZXh0OiB6LnN0cmluZygpLFxuICB9KSxcbiAgei5vYmplY3Qoe1xuICAgIHR5cGU6IHoubGl0ZXJhbChcInZpc3VhbGl6ZVwiKSxcbiAgICBzdGF0ZW1lbnRJZDogei5zdHJpbmcoKSxcbiAgICB0aXRsZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIGRlc2NyaXB0aW9uOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgZGF0YXNldDogR2VuaWVEYXRhc2V0U2NoZW1hLFxuICB9KSxcbl0pO1xuLyoqIE9yZGVyZWQgcHJvc2Ugb3IgdmlzdWFsaXphdGlvbiBpdGVtIGluIHRoZSBHZW5pZSBhZ2VudCdzIGZpbmFsIHN1bW1hcnkuICovXG5leHBvcnQgdHlwZSBHZW5pZVN1bW1hcnlJdGVtID0gei5pbmZlcjx0eXBlb2YgR2VuaWVTdW1tYXJ5SXRlbVNjaGVtYT47XG5cbi8qKiBEaXNjcmltaW5hdG9yIHR5cGUgZm9yIHtAbGluayBHZW5pZVN1bW1hcnlJdGVtfS4gKi9cbmV4cG9ydCB0eXBlIEdlbmllU3VtbWFyeUl0ZW1UeXBlID0gR2VuaWVTdW1tYXJ5SXRlbVtcInR5cGVcIl07XG5cbi8qKlxuICogVGhlIEdlbmllIGFnZW50J3MgZmluYWwgb3V0cHV0IHNoYXBlIC0gd2hhdCB0aGUgY2FsbGluZyBhZ2VudCdzXG4gKiBHZW5pZSB0b29sIHJldHVybnMgdG8gdGhlIGNhbGxpbmcgTExNLiBUaGUgYHN1bW1hcnlgIGFycmF5IGlzXG4gKiB0aGUgdXNlci1mYWNpbmcgcmVuZGVyYWJsZTsgYGNvbnZlcnNhdGlvbklkYCBsZXRzIHRoZSBjYWxsaW5nXG4gKiBhZ2VudCAob3IgdGhlIFVJKSBmb2xsb3cgdXAgaW4gdGhlIHNhbWUgR2VuaWUgdGhyZWFkIG9uIHRoZVxuICogbmV4dCB0dXJuLlxuICovXG5leHBvcnQgY29uc3QgR2VuaWVBZ2VudFJlc3VsdFNjaGVtYSA9IHoub2JqZWN0KHtcbiAgc3BhY2VJZDogei5zdHJpbmcoKSxcbiAgY29udmVyc2F0aW9uSWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgc3VtbWFyeTogei5hcnJheShHZW5pZVN1bW1hcnlJdGVtU2NoZW1hKSxcbiAgZXJyb3I6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbn0pO1xuLyoqIEZpbmFsIHJlbmRlcmFibGUgb3V0cHV0IHJldHVybmVkIGJ5IHRoZSBHZW5pZSBhZ2VudCB0b29sIHRvIGl0cyBjYWxsZXIuICovXG5leHBvcnQgdHlwZSBHZW5pZUFnZW50UmVzdWx0ID0gei5pbmZlcjx0eXBlb2YgR2VuaWVBZ2VudFJlc3VsdFNjaGVtYT47XG4iXX0=
441
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy93aXJlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBK0JHO0FBRUgsT0FBTyxFQUFFLFVBQVUsRUFBMkMsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDaEQsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLEtBQUssQ0FBQztBQUV4Qiw2RUFBNkU7QUFFN0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQThCRztBQUNILE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDL0MsUUFBUSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUU7SUFDcEIsWUFBWSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUU7SUFDeEIsTUFBTSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQzNCLGVBQWUsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztJQUMzQyxtQkFBbUIsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztDQUNoRCxDQUFDLENBQUM7QUFJSDs7Ozs7Ozs7OztHQVVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUNqRCxPQUFPLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRTtJQUNuQixLQUFLLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUM1QixXQUFXLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtDQUNuQyxDQUFDLENBQUM7QUFJSCwrRUFBK0U7QUFFL0U7Ozs7OztHQU1H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R0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQzdDLE9BQU8sRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFO0lBQ25CLGNBQWMsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQ3JDLE9BQU8sRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLHNCQUFzQixDQUFDO0lBQ3hDLEtBQUssRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0NBQzdCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogV2lyZS1mb3JtYXQgY29udHJhY3QgZm9yIGBAZGJ4LXRvb2xzL2FwcGtpdC1tYXN0cmFgOiB0aGVcbiAqIGRlcGVuZGVuY3ktZnJlZSB6b2Qgc2NoZW1hcyArIGluZmVycmVkIHR5cGVzIGV2ZXJ5IGNvbnN1bWVyICh0aGVcbiAqIFJlYWN0IGNsaWVudCwgYnJvd3NlciBidW5kbGVzLCB0aGUgc2VydmVyIHBsdWdpbikgc2hhcmVzLlxuICpcbiAqIEtlcHQgZnJlZSBvZiBgcGdgLCBgZmFzdGVtYmVkYCwgYW5kIHRoZSBNYXN0cmEgcnVudGltZSBzbyB0aGVcbiAqIGNsaWVudCBjYW4gaW1wb3J0IHRoZXNlIHNjaGVtYXMgd2l0aG91dCBkcmFnZ2luZyBpbiBzZXJ2ZXItb25seVxuICogZGVwZW5kZW5jaWVzLiBUaHJlZSBsYXllcnMgbGl2ZSBoZXJlOlxuICpcbiAqICAgMS4gVGhlIGRlc2NyaXB0b3IgcHVibGlzaGVkIGJ5IGBNYXN0cmFQbHVnaW4uY2xpZW50Q29uZmlnKClgXG4gKiAgICAgIHBsdXMgdGhlIFJFU1QgcGF5bG9hZHMgaXRzIHJvdXRlcyByZXR1cm4gKG1vZGVscywgaGlzdG9yeSxcbiAqICAgICAgc3VnZ2VzdGlvbnMsIGNoYXJ0IGVtYmVkcywgc3RhdGVtZW50IGRhdGEpLiBUaGUgc2VydmVyXG4gKiAgICAgIGRlcml2ZXMgZXZlcnkgcGF0aCBmcm9tIHRoZSBwbHVnaW4gbW91bnQgYW5kIHB1Ymxpc2hlcyB0aGVcbiAqICAgICAgcmVzb2x2ZWQgcGF0aHMgc28gdGhlIGNsaWVudCBjb21wb3NlcyBVUkxzIHdpdGhvdXRcbiAqICAgICAgaGFyZC1jb2RpbmcgYC9hcGkvbWFzdHJhYCAtIHJlbmFtZSB0aGUgcGx1Z2luIGFuZCB0aGUgY2xpZW50XG4gKiAgICAgIGtlZXBzIHdvcmtpbmcuXG4gKiAgIDIuIFRoZSBgY3R4LndyaXRlcmAgZXZlbnQgdm9jYWJ1bGFyeTogdGhlIHdpcmUtZGVyaXZlZFxuICogICAgICB7QGxpbmsgR2VuaWVDaGF0RXZlbnR9cyBmcm9tIGBAZGJ4LXRvb2xzL2dlbmllLXNoYXJlZGAgcGx1c1xuICogICAgICB0aGUgTWFzdHJhLW9ubHkgYWdlbnQgbGlmZWN5Y2xlIGV2ZW50cywgdW5pZmllZCBhc1xuICogICAgICB7QGxpbmsgR2VuaWVXcml0ZXJFdmVudH0gc28gc3Vic2NyaWJlcnMgbmFycm93IGJvdGggaGFsdmVzXG4gKiAgICAgIHdpdGggYSBzaW5nbGUgYHN3aXRjaCAoZXZlbnQudHlwZSlgLlxuICogICAzLiBUaGUgR2VuaWUgYWdlbnQncyB3b3JrZmxvdyBvdXRwdXQgc2hhcGVzXG4gKiAgICAgICh7QGxpbmsgR2VuaWVBZ2VudFJlc3VsdH0gYW5kIGl0cyBzdW1tYXJ5IC8gZGF0YXNldCBpdGVtcykuXG4gKlxuICogVGhlIHJvdXRlIHNlZ21lbnRzIGxpdmUgaW4gdGhlIHNpYmxpbmcgYHJvdXRlcy50c2BcbiAqICh7QGxpbmsgTUFTVFJBX1JPVVRFU30pIGFuZCB0aGUgZW1iZWQtbWFya2VyIGdyYW1tYXIgaW4gYG1hcmtlcnMudHNgLFxuICogc28gdGhpcyBmaWxlIHN0YXlzIHB1cmVseSBkZWNsYXJhdGl2ZSAoc2NoZW1hcyArIGluZmVycmVkIHR5cGVzKS5cbiAqIFRoZSBicm93c2VyIGNsaWVudCB0aGF0IGRyaXZlcyB0aGVzZSByb3V0ZXMgKGBNYXN0cmFQbHVnaW5DbGllbnRgKVxuICogc2hpcHMgZnJvbSBgQGRieC10b29scy91aS1tYXN0cmFgLlxuICpcbiAqIEBtb2R1bGVcbiAqL1xuXG5pbXBvcnQgeyBnZW5pZU1vZGVsLCB0eXBlIEdlbmllQ2hhdEV2ZW50LCB0eXBlIE1lc3NhZ2VTdGF0dXMgfSBmcm9tIFwiQGRieC10b29scy9zaGFyZWQtZ2VuaWVcIjtcbmltcG9ydCB7IG1vZGVsIH0gZnJvbSBcIkBkYngtdG9vbHMvc2hhcmVkLW1vZGVsXCI7XG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiO1xuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIGNsaWVudCBjb25maWcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG4vKipcbiAqIEpTT04tc2FmZSBkZXNjcmlwdG9yIHB1Ymxpc2hlZCBieSB0aGUgTWFzdHJhIHBsdWdpbidzXG4gKiBgY2xpZW50Q29uZmlnKClgLlxuICpcbiAqIE9ubHkgdGhlIGlycmVkdWNpYmxlIGRhdGEgbGl2ZXMgaGVyZTogYGJhc2VQYXRoYCAodGhlIG9uZSBwYXRoIHRoZVxuICogY2xpZW50IGNhbid0IG90aGVyd2lzZSBrbm93LCBzaW5jZSBpdCBlbmNvZGVzIHRoZSBwbHVnaW4ncyBtb3VudFxuICogbmFtZSkgcGx1cyB0aGUgcnVudGltZSBhZ2VudCByb3N0ZXIuIEV2ZXJ5IGNvbmNyZXRlIGVuZHBvaW50IFVSTCBpc1xuICogZGVyaXZlZCBmcm9tIGBiYXNlUGF0aGAgYnkgdGhlIGJyb3dzZXIgY2xpZW50XG4gKiAoYE1hc3RyYVBsdWdpbkNsaWVudGApIHVzaW5nIHRoZSBzaGFyZWQge0BsaW5rIE1BU1RSQV9ST1VURVN9XG4gKiBzZWdtZW50cywgc28gdGhlcmUncyBub3RoaW5nIHRvIHB1Ymxpc2ggcGVyLXJvdXRlLlxuICpcbiAqIEZpZWxkczpcbiAqICAgLSBgYmFzZVBhdGhgOiBwbHVnaW4gbW91bnQgcGF0aC4gQWx3YXlzIGAvYXBpLzxwbHVnaW5OYW1lPmAuIEZlZWRcbiAqICAgICBpdCB0byBgbmV3IE1hc3RyYVBsdWdpbkNsaWVudChjb25maWcpYCAoZnJvbVxuICogICAgIGBAZGJ4LXRvb2xzL3VpLW1hc3RyYWApIHRvIGdldCBhIHR5cGVkIGNsaWVudCBvdmVyIGV2ZXJ5XG4gKiAgICAgcm91dGUgcGx1cyB0aGUgc3RhbmRhcmQgYWdlbnQgc3RyZWFtLlxuICogICAtIGBkZWZhdWx0QWdlbnRgOiBhZ2VudCBpZCB0aGUgY2xpZW50IGNvbnZlcnNlcyB3aXRoIHdoZW4gaXRcbiAqICAgICBkb2Vzbid0IG5hbWUgb25lLlxuICogICAtIGBhZ2VudHNgOiBldmVyeSByZWdpc3RlcmVkIGFnZW50IGlkIGluIHJlZ2lzdHJhdGlvbiBvcmRlci5cbiAqICAgLSBgZmVlZGJhY2tFbmFibGVkYDogd2hldGhlciB0aGUgc2VydmVyIGNhbiBsb2cgdXNlciBmZWVkYmFjayB0b1xuICogICAgIE1MZmxvdyAoTUxmbG93IHRyYWNpbmcgaXMgY29uZmlndXJlZCkuIERyaXZlcyB3aGV0aGVyIHRoZSBjaGF0IFVJXG4gKiAgICAgc3VyZmFjZXMgdGh1bWJzIC8gY29tbWVudCBjb250cm9scy4gRGVmYXVsdHMgdG8gYGZhbHNlYCBzbyBhXG4gKiAgICAgY29uZmlnIHB1Ymxpc2hlZCBieSBhbiBvbGRlciBzZXJ2ZXIgKHdpdGhvdXQgdGhlIGZpZWxkKSBwYXJzZXNcbiAqICAgICBjbGVhbmx5IHRvIFwib2ZmXCIuXG4gKiAgIC0gYGNoYXRBbHdheXNBdmFpbGFibGVgOiB3aGV0aGVyIHRoZSBhZ2VudHMnIERhdGFicmlja3MgY2FsbHMgcnVuIGFzIHRoZVxuICogICAgIGFwcCBzZXJ2aWNlIHByaW5jaXBhbCByYXRoZXIgdGhhbiBvbi1iZWhhbGYtb2YgdGhlIHNpZ25lZC1pbiB1c2VyLiBXaGVuXG4gKiAgICAgYHRydWVgIHRoZSBjaGF0IHdvcmtzIGZvciBhbnkgY2FsbGVyIHdobyBjYW4gb3BlbiB0aGUgYXBwLCBzbyBhIFVJIHRoYXRcbiAqICAgICBoaWRlcyBjaGF0IHdoZW4gdGhlIE9CTyB0b2tlbiBpcyBhYnNlbnQgc2hvdWxkIHNob3cgaXQgYW55d2F5LiBEZWZhdWx0c1xuICogICAgIHRvIGBmYWxzZWAgKHRoZSBPQk8gLyBgXCJ1c2VyXCJgIGlkZW50aXR5IG1vZGUpLCBzbyBhbiBvbGRlciBzZXJ2ZXIgd2l0aG91dFxuICogICAgIHRoZSBmaWVsZCBrZWVwcyB0aGUgT0JPLWdhdGVkIGJlaGF2aW9yLlxuICovXG5leHBvcnQgY29uc3QgTWFzdHJhQ2xpZW50Q29uZmlnU2NoZW1hID0gei5vYmplY3Qoe1xuICBiYXNlUGF0aDogei5zdHJpbmcoKSxcbiAgZGVmYXVsdEFnZW50OiB6LnN0cmluZygpLFxuICBhZ2VudHM6IHouYXJyYXkoei5zdHJpbmcoKSksXG4gIGZlZWRiYWNrRW5hYmxlZDogei5ib29sZWFuKCkuZGVmYXVsdChmYWxzZSksXG4gIGNoYXRBbHdheXNBdmFpbGFibGU6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLFxufSk7XG4vKiogQnJvd3Nlci1zYWZlIE1hc3RyYSBwbHVnaW4gZGVzY3JpcHRvciB1c2VkIHRvIGNvbnN0cnVjdCByb3V0ZSBhbmQgc3RyZWFtIGNsaWVudHMuICovXG5leHBvcnQgdHlwZSBNYXN0cmFDbGllbnRDb25maWcgPSB6LmluZmVyPHR5cGVvZiBNYXN0cmFDbGllbnRDb25maWdTY2hlbWE+O1xuXG4vKipcbiAqIEpTT04gcGF5bG9hZCByZXR1cm5lZCBieSBgR0VUICR7YmFzZVBhdGh9L2RlZmF1bHQtbW9kZWxbP2FnZW50SWQ9XWAuIFRoZVxuICogc3RhdGljIGRlZmF1bHQgbW9kZWwgdGhlIGFnZW50IHJlc29sdmVzIHRvIHdoZW4gdGhlIGNsaWVudCBwaW5zIG5vIG1vZGVsLFxuICogYXMgYm90aCB0aGUgcmF3IHNlcnZpbmctZW5kcG9pbnQgYG1vZGVsYCBpZCBhbmQgYSBgZGlzcGxheU5hbWVgICh0aGVcbiAqIGh1bWFuaXplZCBsYWJlbCB0aGUgcGlja2VyIHNob3dzKS4gQm90aCBhcmUgYG51bGxgIHdoZW4gdGhlIGFnZW50IGRlY2lkZXNcbiAqIGl0cyBtb2RlbCBkeW5hbWljYWxseSBhdCBjYWxsIHRpbWUgKG5vdGhpbmcgc3RhdGljIHRvIGFkdmVydGlzZSkuIExldHMgdGhlXG4gKiBwaWNrZXIgbGFiZWwgaXRzIGRlZmF1bHQgb3B0aW9uIFdJVEhPVVQgd2FpdGluZyBvbiB0aGUgYC9tb2RlbHNgIGNhdGFsb2d1ZSxcbiAqIHNvIGl0IG5ldmVyIGZsYXNoZXMgYSByYXcgaWQgb24gbG9hZC4gS2VwdCBvZmYgdGhlIHN0YXRpYyBib290c3RyYXBcbiAqIGBjbGllbnRDb25maWdgIG9uIHB1cnBvc2U6IGl0IGlzIHBlci1hZ2VudCBhbmQgY2FuIGJlIGR5bmFtaWMsIHNvIGl0IGlzXG4gKiBmZXRjaGVkIGxpa2UgYC9tb2RlbHNgLlxuICovXG5leHBvcnQgY29uc3QgRGVmYXVsdE1vZGVsUmVzcG9uc2VTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIGFnZW50SWQ6IHouc3RyaW5nKCksXG4gIG1vZGVsOiB6LnN0cmluZygpLm51bGxhYmxlKCksXG4gIGRpc3BsYXlOYW1lOiB6LnN0cmluZygpLm51bGxhYmxlKCksXG59KTtcbi8qKiBSZXNwb25zZSBpZGVudGlmeWluZyB0aGUgbW9kZWwgY3VycmVudGx5IHNlbGVjdGVkIGFzIHRoZSBwbHVnaW4gZGVmYXVsdC4gKi9cbmV4cG9ydCB0eXBlIERlZmF1bHRNb2RlbFJlc3BvbnNlID0gei5pbmZlcjx0eXBlb2YgRGVmYXVsdE1vZGVsUmVzcG9uc2VTY2hlbWE+O1xuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIG1vZGVsIGNhdGFsb2d1ZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbi8qKlxuICogSlNPTiBwYXlsb2FkIHJldHVybmVkIGJ5IGBHRVQgJHtiYXNlUGF0aH0vbW9kZWxzYC4gV3JhcHMgdGhlIHNoYXJlZFxuICoge0BsaW5rIG1vZGVsLlNlcnZpbmdFbmRwb2ludFN1bW1hcnlTY2hlbWF9IChyZS1leHBvcnRlZCBmcm9tXG4gKiBgQGRieC10b29scy9zaGFyZWQtbW9kZWxgKSBzbyB0aGUgY2F0YWxvZ3VlXG4gKiBkZXNjcmlwdG9yIGhhcyBhIHNpbmdsZSBkZWZpbml0aW9uIHRoZSBjbGllbnQsIHNlcnZlciwgYW5kIHRoZVxuICogc3RhbmRhbG9uZSBgQGRieC10b29scy9tb2RlbGAgdG9vbGtpdCBhbGwgYWdyZWUgb24uXG4gKi9cbmV4cG9ydCBjb25zdCBTZXJ2aW5nRW5kcG9pbnRzUmVzcG9uc2VTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIGVuZHBvaW50czogei5hcnJheShtb2RlbC5TZXJ2aW5nRW5kcG9pbnRTdW1tYXJ5U2NoZW1hKSxcbn0pO1xuLyoqIEF2YWlsYWJsZSBEYXRhYnJpY2tzIHNlcnZpbmcgZW5kcG9pbnRzIHJldHVybmVkIGJ5IHRoZSBNYXN0cmEgbW9kZWwgcm91dGUuICovXG5leHBvcnQgdHlwZSBTZXJ2aW5nRW5kcG9pbnRzUmVzcG9uc2UgPSB6LmluZmVyPHR5cGVvZiBTZXJ2aW5nRW5kcG9pbnRzUmVzcG9uc2VTY2hlbWE+O1xuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gc3VnZ2VzdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbi8qKlxuICogSlNPTiBwYXlsb2FkIHJldHVybmVkIGJ5IGBHRVQgJHtiYXNlUGF0aH0vc3VnZ2VzdGlvbnNgLlxuICpcbiAqIENhcnJpZXMgdGhlIGN1cmF0ZWQgc3RhcnRlciBxdWVzdGlvbnMgZm9yIGFuIGFnZW50J3MgR2VuaWUgc3BhY2UgLVxuICogdGhlIGBzYW1wbGVfcXVlc3Rpb25zYCBhbiBhdXRob3IgY29uZmlndXJlZCBvbiB0aGUgc3BhY2UsIHN1cmZhY2VkXG4gKiBhcyBvbmUtdGFwIHByb21wdHMgb24gdGhlIGNoYXQncyBlbXB0eSBzdGF0ZS4gYHF1ZXN0aW9uc2AgaXMgZW1wdHlcbiAqIHdoZW4gdGhlIGFnZW50IGhhcyBubyBHZW5pZSBzcGFjZSAob3IgdGhlIHNwYWNlIGRlZmluZXMgbm9uZSksIHNvXG4gKiB0aGUgY2xpZW50IHJlbmRlcnMgbm90aGluZyBpbiB0aGF0IGNhc2UgcmF0aGVyIHRoYW4gZmFsbGluZyBiYWNrIHRvXG4gKiBidWlsdC1pbiBleGFtcGxlIHByb21wdHMuXG4gKi9cbmV4cG9ydCBjb25zdCBNYXN0cmFTdWdnZXN0aW9uc1Jlc3BvbnNlU2NoZW1hID0gei5vYmplY3Qoe1xuICBxdWVzdGlvbnM6IHouYXJyYXkoei5zdHJpbmcoKSksXG59KTtcbi8qKiBGb2xsb3ctdXAgcHJvbXB0cyBzdWdnZXN0ZWQgZm9yIHRoZSBjdXJyZW50IGFnZW50IGFuZCB0aHJlYWQgY29udGV4dC4gKi9cbmV4cG9ydCB0eXBlIE1hc3RyYVN1Z2dlc3Rpb25zUmVzcG9uc2UgPSB6LmluZmVyPHR5cGVvZiBNYXN0cmFTdWdnZXN0aW9uc1Jlc3BvbnNlU2NoZW1hPjtcblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIGNoYXJ0cyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuLyoqXG4gKiBBbGxvd2VkIGNoYXJ0IHR5cGVzIHRoZSBwbGFubmVyIGNhbiBwaWNrLiBEZWZpbmVkIGFzIGFcbiAqIGRpc2NyaW1pbmF0ZWQgbGl0ZXJhbCB1bmlvbiBzbyBlYWNoIHZhcmlhbnQgY2FycmllcyBpdHMgb3duXG4gKiBgLmRlc2NyaWJlKClgIGNsYXVzZSAtIHRoZSBzZXJ2ZXItc2lkZSBwbGFubmVyJ3MgcHJvbXB0XG4gKiBmb3JtYXR0ZXIgd2Fsa3MgYC5vcHRpb25zYCB0byBpbmxpbmUgdGhlIGRlc2NyaXB0aW9ucyBpbnRvIHRoZVxuICogbW9kZWwgaW5zdHJ1Y3Rpb25zLCBrZWVwaW5nIHRoZSBwcm9tcHQgaW4gbG9jay1zdGVwIHdpdGggdGhlXG4gKiBzY2hlbWEgYnkgY29uc3RydWN0aW9uLiBUaGUgcnVudGltZSB0eXBlIGlzIHRoZSBwbGFpbiBzdHJpbmdcbiAqIHVuaW9uIChgXCJiYXJcIiB8IFwibGluZVwiIHwgLi4uYCksIHNvIGNvbnN1bWVycyB0aGF0IGp1c3QgbmVlZCBhXG4gKiBkaXNjcmltaW5hdG9yIHZhbHVlIGJlaGF2ZSB0aGUgc2FtZSBhcyBpZiBpdCB3ZXJlIGFcbiAqIGB6LmVudW0oWy4uLl0pYC5cbiAqL1xuZXhwb3J0IGNvbnN0IENoYXJ0VHlwZVNjaGVtYSA9IHpcbiAgLnVuaW9uKFtcbiAgICB6XG4gICAgICAubGl0ZXJhbChcImJhclwiKVxuICAgICAgLmRlc2NyaWJlKFxuICAgICAgICBcImNvbXBhcmluZyBhIG51bWVyaWMgdmFsdWUgYWNyb3NzIGEgc21hbGwvbWVkaXVtIHNldCBvZiBkaXNjcmV0ZSBjYXRlZ29yaWVzICh0b3AtTiwgcmFua2luZywgZ3JvdXAtYnkpXCIsXG4gICAgICApLFxuICAgIHpcbiAgICAgIC5saXRlcmFsKFwiaG9yaXpvbnRhbEJhclwiKVxuICAgICAgLmRlc2NyaWJlKFxuICAgICAgICBcInNhbWUgYXMgYmFyIGJ1dCBjYXRlZ29yaWVzIG9uIHRoZSB5LWF4aXMgLSBwcmVmZXIgd2hlbiBjYXRlZ29yeSBsYWJlbHMgYXJlIGxvbmcgb3IgdGhlcmUgYXJlIG1hbnkgY2F0ZWdvcmllc1wiLFxuICAgICAgKSxcbiAgICB6XG4gICAgICAubGl0ZXJhbChcImxpbmVcIilcbiAgICAgIC5kZXNjcmliZShcbiAgICAgICAgXCJvcmRlcmVkLWF4aXMgdHJlbmQgKHRpbWUgc2VyaWVzLCBzZXF1ZW5jZSwgcmFuaykgd2hlcmUgdGhlIHgtYXhpcyBoYXMgbmF0dXJhbCBvcmRlclwiLFxuICAgICAgKSxcbiAgICB6LmxpdGVyYWwoXCJhcmVhXCIpLmRlc2NyaWJlKFwic3RhY2tlZC10cmVuZCBlbXBoYXNpcyAtIGN1bXVsYXRpdmUgb3IgY29tcG9zaXRpb24gb3ZlciB0aW1lXCIpLFxuICAgIHpcbiAgICAgIC5saXRlcmFsKFwiY29tYm9cIilcbiAgICAgIC5kZXNjcmliZShcbiAgICAgICAgXCJtaXhlZCBiYXIgKyBsaW5lIChvciBhcmVhKSBzZXJpZXMgb24gc2hhcmVkIGNhdGVnb3JpZXMgLSBlLmcuIHZvbHVtZSBiYXJzIHdpdGggYSByYXRlL3RyZW5kIGxpbmU7IHNldCBlYWNoIHNlcmllcycgYHR5cGVgXCIsXG4gICAgICApLFxuICAgIHpcbiAgICAgIC5saXRlcmFsKFwid2F0ZXJmYWxsXCIpXG4gICAgICAuZGVzY3JpYmUoXG4gICAgICAgIFwiYnJpZGdlIC8gcnVubmluZy10b3RhbCBvZiBzaWduZWQgc3RlcCB2YWx1ZXMgKHN0YXJ0IC0+IGRlbHRhcyAtPiBlbmQpIGFjcm9zcyBvcmRlcmVkIGNhdGVnb3JpZXNcIixcbiAgICAgICksXG4gICAgelxuICAgICAgLmxpdGVyYWwoXCJzY2F0dGVyXCIpXG4gICAgICAuZGVzY3JpYmUoXCJ0d28tbnVtZXJpYy1heGlzIGNvcnJlbGF0aW9ucyBiZXR3ZWVuIGZpZWxkcyAoZS5nLiBwcmljZSB2cy4gcXVhbnRpdHkpXCIpLFxuICAgIHpcbiAgICAgIC5saXRlcmFsKFwiaGVhdG1hcFwiKVxuICAgICAgLmRlc2NyaWJlKFxuICAgICAgICBcIm1hdHJpeCBpbnRlbnNpdHkgYWNyb3NzIHR3byBjYXRlZ29yeSBheGVzIC0geCBsYWJlbHMgaW4gYGNhdGVnb3JpZXNgLCBvbmUgc2VyaWVzIHBlciBtYXRyaXggcm93IGhvbGRpbmcgdGhhdCByb3cncyB2YWx1ZXNcIixcbiAgICAgICksXG4gICAgelxuICAgICAgLmxpdGVyYWwoXCJyYWRhclwiKVxuICAgICAgLmRlc2NyaWJlKFxuICAgICAgICBcIm11bHRpLWRpbWVuc2lvbiBjb21wYXJpc29uIGFjcm9zcyBhIGZpeGVkIHNldCBvZiBheGVzIChvbmUgaW5kaWNhdG9yIHBlciBjYXRlZ29yeSwgb25lIG9yIG1vcmUgc2VyaWVzIG9mIHZhbHVlcylcIixcbiAgICAgICksXG4gICAgei5saXRlcmFsKFwicGllXCIpLmRlc2NyaWJlKFwicGFydHMtb2YtYS13aG9sZSB3aGVuIDItNyBjYXRlZ29yaWVzIHN1bSB0byBhIG1lYW5pbmdmdWwgdG90YWxcIiksXG4gICAgelxuICAgICAgLmxpdGVyYWwoXCJmdW5uZWxcIilcbiAgICAgIC5kZXNjcmliZShcbiAgICAgICAgXCJvcmRlcmVkIHN0YWdlcyB0aGF0IHNocmluayAoY29udmVyc2lvbiwgcGlwZWxpbmUsIGF0dHJpdGlvbikgLSBge25hbWUsIHZhbHVlfWAgc2xpY2VzXCIsXG4gICAgICApLFxuICAgIHpcbiAgICAgIC5saXRlcmFsKFwidHJlZW1hcFwiKVxuICAgICAgLmRlc2NyaWJlKFxuICAgICAgICBcInBhcnRzLW9mLWEtd2hvbGUgYXMgbmVzdGVkIHJlY3RhbmdsZXMgd2hlbiB0aGVyZSBhcmUgbW9yZSB0aGFuIH43IGNhdGVnb3JpZXMgb3IgYSBmbGF0IGhpZXJhcmNoeSBvZiBge25hbWUsIHZhbHVlfWAgc2xpY2VzXCIsXG4gICAgICApLFxuICAgIHpcbiAgICAgIC5saXRlcmFsKFwiY3VzdG9tXCIpXG4gICAgICAuZGVzY3JpYmUoXG4gICAgICAgIFwiZXNjYXBlIGhhdGNoIGZvciBhIGNoYXJ0IG5vbmUgb2YgdGhlIGFib3ZlIGNhbiBleHByZXNzIChzYW5rZXksIGJveHBsb3QsIGNhbmRsZXN0aWNrLCBzdW5idXJzdCwgZ2F1Z2UsIG5ldHdvcmsgZ3JhcGgsIGNhbGVuZGFyLCBwYXJhbGxlbCwgLi4uKSAtIGhhbmQtd3JpdGUgdGhlIGNvbXBsZXRlIEVjaGFydHMgb3B0aW9uIGluc3RlYWQgb2YgYSBwbGFuXCIsXG4gICAgICApLFxuICBdKVxuICAuZGVzY3JpYmUoXCJUaGUgY2hhcnQgc2hhcGUgdGhhdCBiZXN0IG1hdGNoZXMgdGhlIGRhdGEgYW5kIGludGVudC5cIik7XG4vKiogU3VwcG9ydGVkIGNoYXJ0IGZhbWlseSBzZWxlY3RlZCBieSB0aGUgc2VydmVyLXNpZGUgY2hhcnQgcGxhbm5lci4gKi9cbmV4cG9ydCB0eXBlIENoYXJ0VHlwZSA9IHouaW5mZXI8dHlwZW9mIENoYXJ0VHlwZVNjaGVtYT47XG5cbi8qKlxuICogUmVzb2x2ZWQgY2hhcnQgcGxhbiBhIHNldHRsZWQgY2hhcnQgZW50cnkgY2FycmllcyBvbiBpdHNcbiAqIGByZXN1bHRgIGZpZWxkLiBgb3B0aW9uYCBpcyB0aGUgZnVsbCBFY2hhcnRzIHNwZWM7IHBhc3NcbiAqIHN0cmFpZ2h0IGludG8gYDxSZWFjdEVDaGFydHMgb3B0aW9uPXsuLi59PmAuXG4gKi9cbmV4cG9ydCBjb25zdCBDaGFydFJlc3VsdFNjaGVtYSA9IHoub2JqZWN0KHtcbiAgY2hhcnRUeXBlOiBDaGFydFR5cGVTY2hlbWEsXG4gIG9wdGlvbjogelxuICAgIC5yZWNvcmQoei5zdHJpbmcoKSwgei51bmtub3duKCkpXG4gICAgLmRlc2NyaWJlKFxuICAgICAgXCJGdWxseS1yZXNvbHZlZCBFY2hhcnRzIGBFQ2hhcnRzT3B0aW9uYCBKU09OIGZvciB0aGlzIGNoYXJ0IC0gZHJvcCBkaXJlY3RseSBpbnRvIGFuIEVjaGFydHMgaW5zdGFuY2UgKG9yIGA8UmVhY3RFQ2hhcnRzIG9wdGlvbj17Li4ufSAvPmApIHdpdGhvdXQgZnVydGhlciBwcm9jZXNzaW5nLiBJbmNsdWRlcyB0aXRsZSAvIHRvb2x0aXAgLyBsZWdlbmQgLyBncmlkIC8gYXhpcyAvIHNlcmllcyBkZWZhdWx0cyBhbHJlYWR5IG1lcmdlZCBpbi5cIixcbiAgICApLFxufSk7XG4vKiogUmVuZGVyLXJlYWR5IGNoYXJ0IHBsYW4gc3RvcmVkIGJlaGluZCBhIGNoYXJ0IGVtYmVkIGlkZW50aWZpZXIuICovXG5leHBvcnQgdHlwZSBDaGFydFJlc3VsdCA9IHouaW5mZXI8dHlwZW9mIENoYXJ0UmVzdWx0U2NoZW1hPjtcblxuLyoqXG4gKiBXaXJlLWZvcm1hdCBBTkQgc2VydmVyLXNpZGUgY2FjaGUgc2hhcGUgZm9yIGEgY2hhcnQgZW50cnkuXG4gKiBUaHJlZSBsaWZlY3ljbGUgc3RhdGVzIGluZmVycmVkIGZyb20gdGhlIHR3byBvcHRpb25hbCBmaWVsZHNcbiAqIChubyBkaXNjcmltaW5hdG9yIG5lZWRlZCk6XG4gKlxuICogICAtIGByZXN1bHRgIHNldCAgICAgICAgICAgICAgICAgICAgLT4gY2hhcnQgaXMgcmVhZHkgdG8gcmVuZGVyXG4gKiAgIC0gYGVycm9yYCBzZXQgICAgICAgICAgICAgICAgICAgICAtPiBwbGFubmVyIC8gZGF0YSBmZXRjaCBmYWlsZWRcbiAqICAgLSBib3RoIGByZXN1bHRgIGFuZCBgZXJyb3JgIHVuc2V0IC0+IHN0aWxsIHByb2Nlc3NpbmdcbiAqXG4gKiBgb3B0aW9uYCBpcyB0eXBlZCBhcyBhIGdlbmVyaWMgcmVjb3JkIHNvIHRoaXMgcGFja2FnZSBzdGF5c1xuICogZGVwZW5kZW5jeS1mcmVlIG9mIGBlY2hhcnRzYC4gVGhlIHNlcnZlciAoYGNoYXJ0LnRzYCkgaW1wb3J0c1xuICogdGhpcyBzY2hlbWEgZGlyZWN0bHk7IHRoZSBkZW1vIGNsaWVudCBwb2xscyB0aGVcbiAqIGAvZW1iZWQvY2hhcnQvOmlkYCByb3V0ZSBhbmQgcGFyc2VzIHJlc3BvbnNlcyBhZ2FpbnN0IGl0LlxuICovXG5leHBvcnQgY29uc3QgQ2hhcnRTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIGNoYXJ0SWQ6IHpcbiAgICAuc3RyaW5nKClcbiAgICAuZGVzY3JpYmUoXG4gICAgICBcIk9wYXF1ZSBpZCBtaW50ZWQgYnkgdGhlIGNoYXJ0IHN1YnN5c3RlbS4gRW1iZWQgdmVyYmF0aW0gYXMgYFtjaGFydDo8Y2hhcnRJZD5dYCBpbiBhZ2VudCBwcm9zZTsgdGhlIGhvc3QgVUkgcmVzb2x2ZXMgaXQgYWdhaW5zdCB0aGlzIGNhY2hlIGVudHJ5LlwiLFxuICAgICksXG4gIGVycm9yOiB6XG4gICAgLnN0cmluZygpXG4gICAgLm9wdGlvbmFsKClcbiAgICAuZGVzY3JpYmUoXG4gICAgICBcIkVycm9yIG1lc3NhZ2Ugd2hlbiB0aGUgY2hhcnQgZmFpbGVkIChkYXRhIGZldGNoIGVycm9yLCBwbGFubmVyIGVycm9yLCBlbXB0eSBkYXRhc2V0KS4gTXV0dWFsbHkgZXhjbHVzaXZlIHdpdGggYHJlc3VsdGA7IGFic2VudCBvbiBzdWNjZXNzIGFuZCB3aGlsZSBwcm9jZXNzaW5nLlwiLFxuICAgICksXG4gIHJlc3VsdDogQ2hhcnRSZXN1bHRTY2hlbWEub3B0aW9uYWwoKS5kZXNjcmliZShcbiAgICBcIlJlc29sdmVkIGNoYXJ0IHBsYW4uIEFic2VudCB3aGlsZSBwcm9jZXNzaW5nIGFuZCB3aGVuIHRoZSBydW4gZXJyb3JlZC5cIixcbiAgKSxcbn0pO1xuLyoqIFBvbGxhYmxlIGNoYXJ0LWNhY2hlIGVudHJ5IHJlcHJlc2VudGluZyBwZW5kaW5nLCBzdWNjZXNzZnVsLCBvciBmYWlsZWQgcGxhbm5pbmcuICovXG5leHBvcnQgdHlwZSBDaGFydCA9IHouaW5mZXI8dHlwZW9mIENoYXJ0U2NoZW1hPjtcblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBzdGF0ZW1lbnRzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuLyoqXG4gKiBXaXJlLWZvcm1hdCBwYXlsb2FkIHJldHVybmVkIGJ5IGBHRVQgJHtiYXNlUGF0aH0vZW1iZWQvZGF0YS86aWRgLlxuICpcbiAqIE1pcnJvcnMgdGhlIGFnZW50LXNpZGUgYGdldF9zdGF0ZW1lbnRgIHRvb2wncyBvdXRwdXQgc28gdGhlXG4gKiBob3N0IFVJIGFuZCB0aGUgTExNIHNlZSB0aGUgZXhhY3Qgc2FtZSBzaGFwZSBmb3IgdGhlIHNhbWVcbiAqIHN0YXRlbWVudDsgdGhlIHJvdXRlIGlzIHdoYXQgcmVzb2x2ZXMgYFtkYXRhOjxzdGF0ZW1lbnRfaWQ+XWBcbiAqIG1hcmtlcnMgdGhlIGFnZW50IGVtYmVkcyBpbiBwcm9zZS5cbiAqXG4gKiBGaWVsZHM6XG4gKiAgIC0gYGNvbHVtbnNgOiBjb2x1bW4gbmFtZXMgaW4gZGVjbGFyYXRpb24gb3JkZXIuXG4gKiAgIC0gYHJvd3NgOiByb3cgcmVjb3JkcyBrZXllZCBieSBjb2x1bW4gbmFtZS4gQ2VsbCB2YWx1ZXMgYXJlXG4gKiAgICAgZWl0aGVyIGNvZXJjZWQgbnVtYmVycyBvciB0aGUgb3JpZ2luYWwgc3RyaW5ncyAoR2VuaWUgL1xuICogICAgIFN0YXRlbWVudCBFeGVjdXRpb24gcmV0dXJucyBldmVyeSBjZWxsIGFzIGBzdHJpbmcgfCBudWxsYDtcbiAqICAgICBudW1lcmljLWxvb2tpbmcgY2VsbHMgYXJlIGNvZXJjZWQgc2VydmVyLXNpZGUgc28gdGhlIFVJXG4gKiAgICAgY2FuIGZvcm1hdCB3aXRoIGB0YWJ1bGFyLW51bXNgIHdpdGhvdXQgcmUtcGFyc2luZykuXG4gKiAgIC0gYHJvd0NvdW50YDogdG90YWwgcm93IGNvdW50IHVwc3RyZWFtIChpbmRlcGVuZGVudCBvZiB0aGVcbiAqICAgICBgbGltaXRgIGNhcCkuIENvbXBhcmUgYWdhaW5zdCBgcm93cy5sZW5ndGhgIHRvIGRldGVjdFxuICogICAgIHRydW5jYXRpb24gLSBgdHJ1bmNhdGVkYCBpcyB0aGUgcHJlY29tcHV0ZWQgZmxhZy5cbiAqICAgLSBgdHJ1bmNhdGVkYDogYHRydWVgIHdoZW4gdGhlIHNlcnZlciBjbGlwcGVkIHJvd3MgdG8gaG9ub3JcbiAqICAgICB0aGUgcm91dGUncyByb3cgY2FwOyB0aGUgVUkgc2hvdWxkIHN1cmZhY2UgYSBcInNob3dpbmcgTiBvZlxuICogICAgIE0gcm93c1wiIGFmZm9yZGFuY2UgaW4gdGhhdCBjYXNlLlxuICovXG5leHBvcnQgY29uc3QgU3RhdGVtZW50RGF0YVNjaGVtYSA9IHoub2JqZWN0KHtcbiAgY29sdW1uczogei5hcnJheSh6LnN0cmluZygpKSxcbiAgcm93czogei5hcnJheSh6LnJlY29yZCh6LnN0cmluZygpLCB6LnVua25vd24oKSkpLFxuICByb3dDb3VudDogei5udW1iZXIoKSxcbiAgdHJ1bmNhdGVkOiB6LmJvb2xlYW4oKSxcbn0pO1xuLyoqIFRhYnVsYXIgc3RhdGVtZW50IHBheWxvYWQgcmVzb2x2ZWQgZnJvbSBhIGBbZGF0YTo8c3RhdGVtZW50X2lkPl1gIGVtYmVkIG1hcmtlci4gKi9cbmV4cG9ydCB0eXBlIFN0YXRlbWVudERhdGEgPSB6LmluZmVyPHR5cGVvZiBTdGF0ZW1lbnREYXRhU2NoZW1hPjtcblxuLyogLS0tLS0tLS0tLS0tLS0tLSBtYXN0cmEtb25seSBnZW5pZS1hZ2VudCBldmVudHMgLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG4vKipcbiAqIE1hc3RyYS1vbmx5IGxpZmVjeWNsZSBldmVudDogdGhlIEdlbmllIHRvb2wgaW52b2NhdGlvbiBzdGFydGVkLlxuICogRW1pdHRlZCBpbW1lZGlhdGVseSB3aGVuIHRoZSBjYWxsaW5nIGFnZW50IGludm9rZXMgdGhlIEdlbmllXG4gKiB0b29sLCBiZWZvcmUgYW55IGlubmVyIGFnZW50IC8gd2lyZSBhY3Rpdml0eSwgc28gdGhlIFVJIGNhblxuICogcG9wIGEgXCJUaGlua2luZy4uLlwiIHBpbGwgdGhlIGluc3RhbnQgdGhlIG1vZGVsIGRlY2lkZXMgdG9cbiAqIGRlbGVnYXRlLiBgY29udmVyc2F0aW9uSWRgIC8gYG1lc3NhZ2VJZGAgYXJlIGFic2VudCBvbiB0aGlzXG4gKiBmaXJzdCBlbWl0IChubyBHZW5pZSByb3VuZC10cmlwIHlldCkuIEZpZWxkIG5hbWVzIGFyZVxuICogY2FtZWxDYXNlICh2cyB0aGUgc25ha2VfY2FzZSB3aXJlIGV2ZW50cykgdG8gbWlycm9yIHRoZVxuICogR2VuaWUgYWdlbnQncyBvd24gaW50ZXJuYWwgZGF0YSBwbHVtYmluZy5cbiAqL1xuZXhwb3J0IGNvbnN0IFN0YXJ0ZWRFdmVudFNjaGVtYSA9IHoub2JqZWN0KHtcbiAgdHlwZTogei5saXRlcmFsKFwic3RhcnRlZFwiKSxcbiAgc3BhY2VJZDogei5zdHJpbmcoKSxcbiAgY29udmVyc2F0aW9uSWQ6IHpcbiAgICAuc3RyaW5nKClcbiAgICAub3B0aW9uYWwoKVxuICAgIC5kZXNjcmliZShcIkV4aXN0aW5nIEdlbmllIGNvbnZlcnNhdGlvbiBpZCBmb3IgYSBmb2xsb3ctdXAgdHVybi4gQWJzZW50IG9uIHRoZSBmaXJzdCB0dXJuLlwiKSxcbiAgbWVzc2FnZUlkOiB6XG4gICAgLnN0cmluZygpXG4gICAgLm9wdGlvbmFsKClcbiAgICAuZGVzY3JpYmUoXCJHZW5pZSBtZXNzYWdlIGlkIG9uY2UgdGhlIGZpcnN0IHdpcmUgbWVzc2FnZSBldmVudCBoYXMgYXJyaXZlZC5cIiksXG4gIGNvbnRlbnQ6IHouc3RyaW5nKCkuZGVzY3JpYmUoXCJRdWVzdGlvbiB0aGUgR2VuaWUgYWdlbnQgc2VudCB0byBHZW5pZS5cIiksXG59KTtcbi8qKiBJbW1lZGlhdGUgbGlmZWN5Y2xlIGV2ZW50IGVtaXR0ZWQgd2hlbiBhbiBgYXNrX2dlbmllYCBpbnZvY2F0aW9uIGJlZ2lucy4gKi9cbmV4cG9ydCB0eXBlIFN0YXJ0ZWRFdmVudCA9IHouaW5mZXI8dHlwZW9mIFN0YXJ0ZWRFdmVudFNjaGVtYT47XG5cbi8qKlxuICogTWFzdHJhLW9ubHkgbGlmZWN5Y2xlIGV2ZW50OiBvbmUgYGFza19nZW5pZWAgaW52b2NhdGlvblxuICogZmluaXNoZWQuIENhcnJpZXMgdGhlIGh5ZHJhdGVkIGBzdGF0ZW1lbnRJZHNgIChyb3dzIGFyZSBmZXRjaGVkXG4gKiB2aWEgYGdldFN0YXRlbWVudGAgc2VwYXJhdGVseSkgYW5kIEdlbmllJ3MgZmluYWwgcHJvc2UgYW5zd2VyXG4gKiBzbyB0aGUgVUkgY2FuIG1vdmUgZnJvbSBcInRoaW5raW5nXCIgdG8gXCJhbnN3ZXJlZFwiIHdpdGhvdXRcbiAqIHdhaXRpbmcgZm9yIHRoZSBHZW5pZSBhZ2VudCdzIHdob2xlIHJlYXNvbmluZyBsb29wIHRvIGVuZC5cbiAqL1xuZXhwb3J0IGNvbnN0IEFza0dlbmllRG9uZUV2ZW50U2NoZW1hID0gei5vYmplY3Qoe1xuICB0eXBlOiB6LmxpdGVyYWwoXCJhc2tfZ2VuaWVfZG9uZVwiKSxcbiAgc3BhY2VJZDogei5zdHJpbmcoKSxcbiAgY29udmVyc2F0aW9uSWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgbWVzc2FnZUlkOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIGFuc3dlcjogei5zdHJpbmcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiR2VuaWUncyBuYXR1cmFsLWxhbmd1YWdlIGFuc3dlciBmb3IgdGhlIHR1cm4uXCIpLFxuICBzdGF0ZW1lbnRJZHM6IHpcbiAgICAuYXJyYXkoei5zdHJpbmcoKSlcbiAgICAuZGVzY3JpYmUoXCJTdGF0ZW1lbnQgaWRzIGZvciBub24tZW1wdHkgcmVzdWx0IHNldHMgcHJvZHVjZWQgYnkgdGhpcyB0dXJuLlwiKSxcbiAgc3RhdHVzOiB6XG4gICAgLmN1c3RvbTxNZXNzYWdlU3RhdHVzPigodmFsdWUpID0+IHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIilcbiAgICAuZGVzY3JpYmUoXCJUZXJtaW5hbCBHZW5pZSB3aXJlIHN0YXR1cyBtaXJyb3JlZCBmcm9tIHRoZSBzb3VyY2UgcmVzdWx0IGV2ZW50LlwiKSxcbn0pO1xuLyoqIENvbXBsZXRpb24gZXZlbnQgZm9yIG9uZSBgYXNrX2dlbmllYCBpbnZvY2F0aW9uLCBpbmNsdWRpbmcgaXRzIHRlcm1pbmFsIHN0YXR1cy4gKi9cbmV4cG9ydCB0eXBlIEFza0dlbmllRG9uZUV2ZW50ID0gei5pbmZlcjx0eXBlb2YgQXNrR2VuaWVEb25lRXZlbnRTY2hlbWE+O1xuXG4vKipcbiAqIE1hc3RyYS1vbmx5IGVycm9yIGV2ZW50OiB0ZXJtaW5hbCBHZW5pZSBhZ2VudCAvIHRyYW5zcG9ydFxuICogZXJyb3IuIEdlbmllJ3Mgb3duIGBGQUlMRURgIC8gYENBTkNFTExFRGAgY29tZSB0aHJvdWdoIHRoZVxuICogd2lyZSdzIGByZXN1bHRgIGV2ZW50IC0gdGhpcyB2YXJpYW50IGlzIGZvciBmYWlsdXJlcyB0aGUgd2lyZVxuICogY2FuJ3QgcmVwcmVzZW50IChuZXR3b3JrLCBHZW5pZSBhZ2VudCBjcmFzaCwgcGxhbm5lciBlcnJvcixcbiAqIGV0Yy4pIHBsdXMgYSBVSS1mcmllbmRseSBtaXJyb3Igb2YgYHJlc3VsdGAgd2hlbiB0aGUgc3RhdHVzIGlzXG4gKiBub24tYENPTVBMRVRFRGAuXG4gKi9cbmV4cG9ydCBjb25zdCBNYXN0cmFHZW5pZUVycm9yRXZlbnRTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIHR5cGU6IHoubGl0ZXJhbChcImVycm9yXCIpLFxuICBzcGFjZUlkOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIGNvbnZlcnNhdGlvbklkOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIG1lc3NhZ2VJZDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBlcnJvcjogei5zdHJpbmcoKSxcbn0pO1xuLyoqIE1hc3RyYS1zaWRlIGZhaWx1cmUgZXZlbnQgZm9yIGVycm9ycyBvdXRzaWRlIEdlbmllJ3Mgbm9ybWFsIHRlcm1pbmFsIHJlc3VsdC4gKi9cbmV4cG9ydCB0eXBlIE1hc3RyYUdlbmllRXJyb3JFdmVudCA9IHouaW5mZXI8dHlwZW9mIE1hc3RyYUdlbmllRXJyb3JFdmVudFNjaGVtYT47XG5cbi8qKlxuICogTWFzdHJhLW9ubHkgbGlmZWN5Y2xlIGV2ZW50OiB0aGUgaW5uZXIgR2VuaWUgYWdlbnQnc1xuICogc3RydWN0dXJlZC1vdXRwdXQgY29lcmNpb24gaGFzIGxhbmRlZC4gRmlyZXMgb25jZSBwZXIgR2VuaWVcbiAqIHRvb2wgaW52b2NhdGlvbiwgQUZURVIgYGFnZW50LmdlbmVyYXRlKC4uLilgIGNvbXBsZXRlcyAoaS5lLlxuICogdGhlIGlubmVyIGxvb3AgKyBNYXN0cmEncyBzdHJ1Y3R1cmluZyBwYXNzIGhhdmUgYm90aFxuICogZmluaXNoZWQpIGFuZCBCRUZPUkUgdGhlIHdyYXBwZXIgaHlkcmF0ZXMgZWFjaCBgZGF0YWAgaXRlbVxuICogd2l0aCBhIGNoYXJ0LiBTaWduYWxzIHRvIHRoZSBob3N0IFVJIHRoYXQgdGhlIGFnZW50IGhhc1xuICogc3RvcHBlZCByZWFzb25pbmcgYW5kIGlzIG1vdmluZyBpbnRvIGNoYXJ0IGdlbmVyYXRpb24uXG4gKlxuICogVGhlIHN0cnVjdHVyaW5nIHBhc3MgaXRzZWxmIGlzIG9wYXF1ZSAoaXQgcnVucyBpbnNpZGVcbiAqIE1hc3RyYSdzIGBhZ2VudC5nZW5lcmF0ZSguLi4pYCB0b2dldGhlciB3aXRoIHRoZSB0b29sIGxvb3ApXG4gKiBzbyB0aGlzIGlzIHRoZSBlYXJsaWVzdCBob29rIHdlIGNhbiBvZmZlcjsgd2UgY2FuJ3QgZmlyZSBhXG4gKiBcInN1bW1hcnkgc3RhcnRlZFwiIGV2ZW50IHRoZSB3YXkgd2UgZmlyZSBgc3RhcnRlZGAuXG4gKi9cbmV4cG9ydCBjb25zdCBTdW1tYXJ5RXZlbnRTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIHR5cGU6IHoubGl0ZXJhbChcInN1bW1hcnlcIiksXG4gIHNwYWNlSWQ6IHouc3RyaW5nKCksXG4gIGl0ZW1zOiB6Lm51bWJlcigpLmludCgpLm5vbm5lZ2F0aXZlKCkuZGVzY3JpYmUoXCJUb3RhbCBpdGVtcyBpbiB0aGUgYWdlbnQncyBzdHJ1Y3R1cmVkIHN1bW1hcnkuXCIpLFxuICB0ZXh0SXRlbXM6IHoubnVtYmVyKCkuaW50KCkubm9ubmVnYXRpdmUoKS5kZXNjcmliZShcIlRleHQgYW5kIHByb3NlIGl0ZW1zIGluIHRoZSBzdW1tYXJ5LlwiKSxcbiAgZGF0YUl0ZW1zOiB6XG4gICAgLm51bWJlcigpXG4gICAgLmludCgpXG4gICAgLm5vbm5lZ2F0aXZlKClcbiAgICAuZGVzY3JpYmUoXCJEYXRhIGl0ZW1zIHRoZSB3cmFwcGVyIHdpbGwgaHlkcmF0ZSBpbnRvIGNoYXJ0cy5cIiksXG59KTtcbi8qKiBMaWZlY3ljbGUgZXZlbnQgZW1pdHRlZCBiZWZvcmUgc3VtbWFyeSBkYXRhIGl0ZW1zIGFyZSBoeWRyYXRlZCBpbnRvIGNoYXJ0cy4gKi9cbmV4cG9ydCB0eXBlIFN1bW1hcnlFdmVudCA9IHouaW5mZXI8dHlwZW9mIFN1bW1hcnlFdmVudFNjaGVtYT47XG5cbi8qKlxuICogTWFzdHJhLW9ubHkgZXZlbnQgdW5pb24uIEVhY2ggdmFyaWFudCB1c2VzIHRoZSBzYW1lIGZsYXRcbiAqIGB7dHlwZSwgLi4uZmllbGRzfWAgc2hhcGUgYXMge0BsaW5rIEdlbmllQ2hhdEV2ZW50fSBzb1xuICogc3Vic2NyaWJlcnMgdW5pb24gYm90aCB3aXRoIGEgc2luZ2xlIGBzd2l0Y2ggKGV2ZW50LnR5cGUpYC5cbiAqL1xuZXhwb3J0IGNvbnN0IEdlbmllQWdlbnRFdmVudFNjaGVtYSA9IHouZGlzY3JpbWluYXRlZFVuaW9uKFwidHlwZVwiLCBbXG4gIFN0YXJ0ZWRFdmVudFNjaGVtYSxcbiAgQXNrR2VuaWVEb25lRXZlbnRTY2hlbWEsXG4gIE1hc3RyYUdlbmllRXJyb3JFdmVudFNjaGVtYSxcbiAgU3VtbWFyeUV2ZW50U2NoZW1hLFxuXSk7XG4vKiogTWFzdHJhLW93bmVkIGxpZmVjeWNsZSBldmVudHMgbGF5ZXJlZCBvbiB0b3Agb2YgR2VuaWUncyB3aXJlIGV2ZW50IHN0cmVhbS4gKi9cbmV4cG9ydCB0eXBlIEdlbmllQWdlbnRFdmVudCA9IHouaW5mZXI8dHlwZW9mIEdlbmllQWdlbnRFdmVudFNjaGVtYT47XG5cbi8qKlxuICogVGhlIHVuaWZpZWQgd3JpdGVyLWV2ZW50IHZvY2FidWxhcnkgc3Vic2NyaWJlcnMgc2VlIG9uXG4gKiBgY3R4LndyaXRlcmA6IHRoZSB3aXJlLWRlcml2ZWQge0BsaW5rIEdlbmllQ2hhdEV2ZW50fSB1bmlvblxuICogKipwbHVzKiogTWFzdHJhLW9ubHkgZXZlbnRzIGZyb20ge0BsaW5rIEdlbmllQWdlbnRFdmVudH0uIEVhY2hcbiAqIHZhcmlhbnQgaXMgYSBmbGF0IGB7dHlwZSwgLi4uZmllbGRzfWAgb2JqZWN0OyBjb25zdW1lcnMgbmFycm93XG4gKiBvbiBgdHlwZWAgYW5kIHJlYWQgZmllbGRzIGlubGluZSAtIHRoZXJlIGlzIG5vIHBheWxvYWQgd3JhcHBlclxuICogYW5kIG5vIHdyaXRlci1ib3VuZGFyeSB0cmFuc2xhdG9yLlxuICpcbiAqIENvbXBvc2VkIHZpYSBgei51bmlvbmAgKG5vdCBgei5kaXNjcmltaW5hdGVkVW5pb25gKSBiZWNhdXNlXG4gKiBib3RoIGhhbHZlcyBhcmUgdGhlbXNlbHZlcyBkaXNjcmltaW5hdGVkIHVuaW9ucyBvbiB0aGUgc2FtZVxuICogYHR5cGVgIGtleS5cbiAqL1xuZXhwb3J0IGNvbnN0IEdlbmllV3JpdGVyRXZlbnRTY2hlbWEgPSB6LnVuaW9uKFtcbiAgZ2VuaWVNb2RlbC5HZW5pZUNoYXRFdmVudFNjaGVtYSxcbiAgR2VuaWVBZ2VudEV2ZW50U2NoZW1hLFxuXSk7XG4vKiogQ29tcGxldGUgZXZlbnQgdm9jYWJ1bGFyeSB3cml0dGVuIGJ5IHRoZSBNYXN0cmEgR2VuaWUgaW50ZWdyYXRpb24uICovXG5leHBvcnQgdHlwZSBHZW5pZVdyaXRlckV2ZW50ID0gei5pbmZlcjx0eXBlb2YgR2VuaWVXcml0ZXJFdmVudFNjaGVtYT47XG5cbi8qKiBEaXNjcmltaW5hdG9yIHR5cGUgZm9yIHtAbGluayBHZW5pZVdyaXRlckV2ZW50fS4gKi9cbmV4cG9ydCB0eXBlIEdlbmllV3JpdGVyRXZlbnRUeXBlID0gR2VuaWVXcml0ZXJFdmVudFtcInR5cGVcIl07XG5cbi8qKiBOYXRpdmUgQUkgU0RLIGN1c3RvbSBkYXRhLXBhcnQgdHlwZSBjYXJyeWluZyBvbmUgR2VuaWUgcHJvZ3Jlc3MgZXZlbnQuICovXG5leHBvcnQgY29uc3QgR0VOSUVfUFJPR1JFU1NfUEFSVF9UWVBFID0gXCJkYXRhLWdlbmllLXByb2dyZXNzXCIgYXMgY29uc3Q7XG5cbi8qKlxuICogRGF0YSBhdHRhY2hlZCB0byB7QGxpbmsgR0VOSUVfUFJPR1JFU1NfUEFSVF9UWVBFfS4gYHRvb2xDYWxsSWRgIGFzc29jaWF0ZXNcbiAqIHByb2dyZXNzIHdpdGggdGhlIG5hdGl2ZSB0b29sIHBhcnQgdGhhdCBvd25zIHRoZSByZXF1ZXN0IGFuZCByZXN1bHQuXG4gKi9cbmV4cG9ydCBjb25zdCBHZW5pZVByb2dyZXNzUGFydERhdGFTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIHRvb2xDYWxsSWQ6IHouc3RyaW5nKCksXG4gIGV2ZW50OiBHZW5pZVdyaXRlckV2ZW50U2NoZW1hLFxufSk7XG4vKiogVmFsaWRhdGVkIHBheWxvYWQgY2FycmllZCBieSBhIG5hdGl2ZSBHZW5pZSBwcm9ncmVzcyBkYXRhIHBhcnQuICovXG5leHBvcnQgdHlwZSBHZW5pZVByb2dyZXNzUGFydERhdGEgPSB6LmluZmVyPHR5cGVvZiBHZW5pZVByb2dyZXNzUGFydERhdGFTY2hlbWE+O1xuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHN1bW1hcnkgKyBkYXRhc2V0IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG4vKipcbiAqIFRhYnVsYXIgcGF5bG9hZCBlbWJlZGRlZCBpbiBldmVyeSB7QGxpbmsgR2VuaWVTdW1tYXJ5SXRlbX1cbiAqIGB2aXN1YWxpemVgIGRhdGFzZXQuIEFsd2F5cyBwcmVzZW50OiBoeWRyYXRlZCBieSB0aGUgd29ya2Zsb3cnc1xuICogYWdlbnQgc3RlcCBiZWZvcmUgdGhlIGZpbmFsaXplIHN0ZXAgcnVucywgc28gY29uc3VtZXJzIGNhbiByZW5kZXJcbiAqIGEgdGFibGUgZmFsbGJhY2sgcmVnYXJkbGVzcyBvZiBjaGFydC1wbGFubmVyIG91dGNvbWUuXG4gKlxuICogRmllbGRzOlxuICogICAtIGBjb2x1bW5zYDogY29sdW1uIG5hbWVzIGluIGRpc3BsYXkgb3JkZXIuXG4gKiAgIC0gYHJvd3NgOiB0YWJ1bGFyIHJvd3Mga2V5ZWQgYnkgY29sdW1uIG5hbWUuXG4gKiAgIC0gYHJvd0NvdW50YDogdG90YWwgcm93IGNvdW50IEdlbmllIHJlcG9ydGVkIChtYXkgZXhjZWVkXG4gKiAgICAgYHJvd3MubGVuZ3RoYCB3aGVuIHRoZSBzdGF0ZW1lbnQgd2FzIHRydW5jYXRlZCkuXG4gKi9cbmV4cG9ydCBjb25zdCBHZW5pZURhdGFzZXREYXRhU2NoZW1hID0gei5vYmplY3Qoe1xuICBjb2x1bW5zOiB6LmFycmF5KHouc3RyaW5nKCkpLFxuICByb3dzOiB6LmFycmF5KHoucmVjb3JkKHouc3RyaW5nKCksIHoudW5rbm93bigpKSksXG4gIHJvd0NvdW50OiB6Lm51bWJlcigpLFxufSk7XG4vKiogSHlkcmF0ZWQgdGFidWxhciBkYXRhIHRoYXQgYWx3YXlzIGJhY2tzIGEgR2VuaWUgdmlzdWFsaXphdGlvbiBpdGVtLiAqL1xuZXhwb3J0IHR5cGUgR2VuaWVEYXRhc2V0RGF0YSA9IHouaW5mZXI8dHlwZW9mIEdlbmllRGF0YXNldERhdGFTY2hlbWE+O1xuXG4vKipcbiAqIFNsaW0gY2hhcnQgcmVmZXJlbmNlIGF0dGFjaGVkIHRvIGEgdmlzdWFsaXplIGRhdGFzZXQuIE9ubHlcbiAqIHByZXNlbnQgd2hlbiBwbGFubmluZyBzdWNjZWVkZWQuXG4gKlxuICogYG9wdGlvbmAgaXMgaW50ZW50aW9uYWxseSBOT1QgaW5jbHVkZWQuIFRoZSByZXNvbHZlZCBFY2hhcnRzXG4gKiBzcGVjIGxpdmVzIG9mZi1iYW5kIGluIHRoZSBjaGFydCBjYWNoZTogdGhlIGhvc3QgVUkgZmV0Y2hlcyBpdFxuICogYnkgYGNoYXJ0SWRgIGZyb20gdGhlIHBsdWdpbidzIGVtYmVkIHJvdXRlIChkZXJpdmVkIGZyb21cbiAqIGBiYXNlUGF0aGAgKyB7QGxpbmsgTUFTVFJBX1JPVVRFU30uZW1iZWQsIGkuZS4gYC9lbWJlZC9jaGFydC86aWRgO1xuICogc2VlIHtAbGluayBDaGFydH0pLiBFbWJlZGRpbmcgdGhlIGZ1bGwgc3BlYyBpbmxpbmUgd291bGRcbiAqIGluZmxhdGUgZXZlcnkgZGF0YXNldCBieSBzZXZlcmFsIEtCIHBlciBjaGFydCBhbmQgcm91bmQtdHJpcFxuICogdGhyb3VnaCB0aGUgTExNIGNvbnRleHQgZm9yIHplcm8gYmVuZWZpdCAodGhlIG1vZGVsIG9ubHkgbmVlZHNcbiAqIHRoZSBgY2hhcnRJZGAgdG8gcGxhY2UgYSBgW2NoYXJ0OjxjaGFydElkPl1gIG1hcmtlciBpbiBpdHNcbiAqIHJlcGx5KS5cbiAqL1xuZXhwb3J0IGNvbnN0IEdlbmllRGF0YXNldENoYXJ0U2NoZW1hID0gei5vYmplY3Qoe1xuICBjaGFydElkOiB6LnN0cmluZygpLFxuICBjaGFydFR5cGU6IENoYXJ0VHlwZVNjaGVtYSxcbn0pO1xuLyoqIExpZ2h0d2VpZ2h0IHJlZmVyZW5jZSB0byBhIGNoYXJ0IHBsYW4gc3RvcmVkIGluIHRoZSBNYXN0cmEgY2hhcnQgY2FjaGUuICovXG5leHBvcnQgdHlwZSBHZW5pZURhdGFzZXRDaGFydCA9IHouaW5mZXI8dHlwZW9mIEdlbmllRGF0YXNldENoYXJ0U2NoZW1hPjtcblxuLyoqXG4gKiBEYXRhc2V0IGJ1bmRsZSBhdHRhY2hlZCB0byBhIHtAbGluayBHZW5pZVN1bW1hcnlJdGVtfSBgdmlzdWFsaXplYFxuICogaXRlbS4gYGRhdGFgIGlzIGFsd2F5cyBwb3B1bGF0ZWQ7IGBjaGFydGAgaXMgYmVzdC1lZmZvcnQgYW5kXG4gKiBhYnNlbnQgd2hlbiB0aGUgd29ya2Zsb3cncyBjaGFydC1wbGFubmVyIGZhaWxlZCAodGltZW91dCxcbiAqIG1hbGZvcm1lZCBwbGFuLCBhYm9ydCkgc28gdGhlIGhvc3QgVUkgY2FuIHN0aWxsIHJlbmRlciB0aGVcbiAqIHVuZGVybHlpbmcgdGFibGUuXG4gKi9cbmV4cG9ydCBjb25zdCBHZW5pZURhdGFzZXRTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIGRhdGE6IEdlbmllRGF0YXNldERhdGFTY2hlbWEsXG4gIGNoYXJ0OiBHZW5pZURhdGFzZXRDaGFydFNjaGVtYS5vcHRpb25hbCgpLFxufSk7XG4vKiogVmlzdWFsaXphdGlvbiBkYXRhc2V0IHdpdGggcmVxdWlyZWQgdGFibGUgZGF0YSBhbmQgYW4gb3B0aW9uYWwgcGxhbm5lZCBjaGFydC4gKi9cbmV4cG9ydCB0eXBlIEdlbmllRGF0YXNldCA9IHouaW5mZXI8dHlwZW9mIEdlbmllRGF0YXNldFNjaGVtYT47XG5cbi8qKlxuICogT25lIGl0ZW0gaW5zaWRlIHRoZSBHZW5pZSB3b3JrZmxvdydzIGZpbmFsIHN1bW1hcnkuIFRoZVxuICogd29ya2Zsb3cgcHJvZHVjZXMgYSBtaXhlZCBzZXF1ZW5jZSBvZjpcbiAqXG4gKiAgIC0gYHN0cmluZ2A6IGEgbWFya2Rvd24gcGFyYWdyYXBoIChpbnRlcnByZXRhdGlvbiwgY2FsbG91dHMsXG4gKiAgICAgdHJhbnNpdGlvbnMgYmV0d2VlbiBkYXRhIGJsb2NrcykuXG4gKiAgIC0gYHZpc3VhbGl6ZWA6IGEgcmVxdWVzdCBmcm9tIHRoZSBhZ2VudCBzdGVwIHRvIHZpc3VhbGl6ZSBhXG4gKiAgICAgc3BlY2lmaWMgR2VuaWUgc3RhdGVtZW50IGF0IHRoaXMgcG9zaXRpb24gaW4gdGhlIHByb3NlLlxuICogICAgIFRoZSBmaW5hbGl6ZSBzdGVwIGh5ZHJhdGVzIGBkYXRhc2V0LmRhdGFgIChyb3dzIGZyb20gdGhlXG4gKiAgICAgbWF0Y2hpbmcgYHN0YXRlbWVudElkYCkgYW5kIGF0dGFjaGVzIGBkYXRhc2V0LmNoYXJ0YCBhZnRlclxuICogICAgIHJ1bm5pbmcgdGhlIGNoYXJ0LXBsYW5uZXIuIFRoZSBhZ2VudCBORVZFUiBwaWNrcyB0aGUgY2hhcnRcbiAqICAgICB0eXBlIC0gaXQgb25seSBtYXJrcyB3aGVyZSBhIHZpc3VhbGl6YXRpb24gYmVsb25ncy5cbiAqXG4gKiBUaGUgaG9zdCBVSSB3YWxrcyB0aGUgYXJyYXkgaW4gZGlzcGxheSBvcmRlciB0byBjb21wb3NlIHRoZVxuICogZmluYWwgYXNzaXN0YW50IG1lc3NhZ2UuXG4gKi9cbmV4cG9ydCBjb25zdCBHZW5pZVN1bW1hcnlJdGVtU2NoZW1hID0gei5kaXNjcmltaW5hdGVkVW5pb24oXCJ0eXBlXCIsIFtcbiAgei5vYmplY3Qoe1xuICAgIHR5cGU6IHoubGl0ZXJhbChcInN0cmluZ1wiKSxcbiAgICB0ZXh0OiB6LnN0cmluZygpLFxuICB9KSxcbiAgei5vYmplY3Qoe1xuICAgIHR5cGU6IHoubGl0ZXJhbChcInZpc3VhbGl6ZVwiKSxcbiAgICBzdGF0ZW1lbnRJZDogei5zdHJpbmcoKSxcbiAgICB0aXRsZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIGRlc2NyaXB0aW9uOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgZGF0YXNldDogR2VuaWVEYXRhc2V0U2NoZW1hLFxuICB9KSxcbl0pO1xuLyoqIE9yZGVyZWQgcHJvc2Ugb3IgdmlzdWFsaXphdGlvbiBpdGVtIGluIHRoZSBHZW5pZSBhZ2VudCdzIGZpbmFsIHN1bW1hcnkuICovXG5leHBvcnQgdHlwZSBHZW5pZVN1bW1hcnlJdGVtID0gei5pbmZlcjx0eXBlb2YgR2VuaWVTdW1tYXJ5SXRlbVNjaGVtYT47XG5cbi8qKiBEaXNjcmltaW5hdG9yIHR5cGUgZm9yIHtAbGluayBHZW5pZVN1bW1hcnlJdGVtfS4gKi9cbmV4cG9ydCB0eXBlIEdlbmllU3VtbWFyeUl0ZW1UeXBlID0gR2VuaWVTdW1tYXJ5SXRlbVtcInR5cGVcIl07XG5cbi8qKlxuICogVGhlIEdlbmllIGFnZW50J3MgZmluYWwgb3V0cHV0IHNoYXBlIC0gd2hhdCB0aGUgY2FsbGluZyBhZ2VudCdzXG4gKiBHZW5pZSB0b29sIHJldHVybnMgdG8gdGhlIGNhbGxpbmcgTExNLiBUaGUgYHN1bW1hcnlgIGFycmF5IGlzXG4gKiB0aGUgdXNlci1mYWNpbmcgcmVuZGVyYWJsZTsgYGNvbnZlcnNhdGlvbklkYCBsZXRzIHRoZSBjYWxsaW5nXG4gKiBhZ2VudCAob3IgdGhlIFVJKSBmb2xsb3cgdXAgaW4gdGhlIHNhbWUgR2VuaWUgdGhyZWFkIG9uIHRoZVxuICogbmV4dCB0dXJuLlxuICovXG5leHBvcnQgY29uc3QgR2VuaWVBZ2VudFJlc3VsdFNjaGVtYSA9IHoub2JqZWN0KHtcbiAgc3BhY2VJZDogei5zdHJpbmcoKSxcbiAgY29udmVyc2F0aW9uSWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgc3VtbWFyeTogei5hcnJheShHZW5pZVN1bW1hcnlJdGVtU2NoZW1hKSxcbiAgZXJyb3I6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbn0pO1xuLyoqIEZpbmFsIHJlbmRlcmFibGUgb3V0cHV0IHJldHVybmVkIGJ5IHRoZSBHZW5pZSBhZ2VudCB0b29sIHRvIGl0cyBjYWxsZXIuICovXG5leHBvcnQgdHlwZSBHZW5pZUFnZW50UmVzdWx0ID0gei5pbmZlcjx0eXBlb2YgR2VuaWVBZ2VudFJlc3VsdFNjaGVtYT47XG4iXX0=
package/package.json CHANGED
@@ -22,8 +22,8 @@
22
22
  "typescript": "^5.9.3"
23
23
  },
24
24
  "dependencies": {
25
- "@dbx-tools/shared-genie": "^0.9.40",
26
- "@dbx-tools/shared-model": "^0.9.40",
25
+ "@dbx-tools/shared-genie": "^0.9.43",
26
+ "@dbx-tools/shared-model": "^0.9.43",
27
27
  "zod": "4.3.6"
28
28
  },
29
29
  "main": "./lib/index.js",
@@ -64,7 +64,7 @@
64
64
  "./package.json": "./package.json"
65
65
  }
66
66
  },
67
- "version": "0.9.40",
67
+ "version": "0.9.43",
68
68
  "types": "./lib/index.d.ts",
69
69
  "dbxToolsConfig": {
70
70
  "tags": [
package/src/wire.ts CHANGED
@@ -302,20 +302,15 @@ export type StatementData = z.infer<typeof StatementDataSchema>;
302
302
  export const StartedEventSchema = z.object({
303
303
  type: z.literal("started"),
304
304
  spaceId: z.string(),
305
- /**
306
- * Genie conversation id, populated only when this `started`
307
- * event corresponds to a follow-up turn on an existing
308
- * conversation. Absent on the first turn.
309
- */
310
- conversationId: z.string().optional(),
311
- /**
312
- * Genie message id, populated only after the first wire
313
- * `message` event lands. Absent on the immediate-on-invoke
314
- * emit.
315
- */
316
- messageId: z.string().optional(),
317
- /** Question the Genie agent sent to Genie. */
318
- content: z.string(),
305
+ conversationId: z
306
+ .string()
307
+ .optional()
308
+ .describe("Existing Genie conversation id for a follow-up turn. Absent on the first turn."),
309
+ messageId: z
310
+ .string()
311
+ .optional()
312
+ .describe("Genie message id once the first wire message event has arrived."),
313
+ content: z.string().describe("Question the Genie agent sent to Genie."),
319
314
  });
320
315
  /** Immediate lifecycle event emitted when an `ask_genie` invocation begins. */
321
316
  export type StartedEvent = z.infer<typeof StartedEventSchema>;
@@ -332,18 +327,13 @@ export const AskGenieDoneEventSchema = z.object({
332
327
  spaceId: z.string(),
333
328
  conversationId: z.string().optional(),
334
329
  messageId: z.string().optional(),
335
- /** Genie's natural-language answer for the turn, if any. */
336
- answer: z.string().optional(),
337
- /** Statement ids for any non-empty result sets this turn produced. */
338
- statementIds: z.array(z.string()),
339
- /**
340
- * Terminal wire status (`COMPLETED` / `FAILED` / `CANCELLED`).
341
- * Mirrors the source `result` event's status so subscribers
342
- * can react to ask-level completion without re-walking history.
343
- * Treated as `z.custom<MessageStatus>` because the SDK is the
344
- * source of truth for the enum values.
345
- */
346
- status: z.custom<MessageStatus>((v) => typeof v === "string"),
330
+ answer: z.string().optional().describe("Genie's natural-language answer for the turn."),
331
+ statementIds: z
332
+ .array(z.string())
333
+ .describe("Statement ids for non-empty result sets produced by this turn."),
334
+ status: z
335
+ .custom<MessageStatus>((value) => typeof value === "string")
336
+ .describe("Terminal Genie wire status mirrored from the source result event."),
347
337
  });
348
338
  /** Completion event for one `ask_genie` invocation, including its terminal status. */
349
339
  export type AskGenieDoneEvent = z.infer<typeof AskGenieDoneEventSchema>;
@@ -383,16 +373,13 @@ export type MastraGenieErrorEvent = z.infer<typeof MastraGenieErrorEventSchema>;
383
373
  export const SummaryEventSchema = z.object({
384
374
  type: z.literal("summary"),
385
375
  spaceId: z.string(),
386
- /** Total number of items in the agent's structured summary. */
387
- items: z.number().int().nonnegative(),
388
- /** Count of `text` / prose items in the summary. */
389
- textItems: z.number().int().nonnegative(),
390
- /**
391
- * Count of `data` items the wrapper will hydrate into charts.
392
- * The host UI can use this to seed N chart skeletons before
393
- * the per-chart events arrive.
394
- */
395
- dataItems: z.number().int().nonnegative(),
376
+ items: z.number().int().nonnegative().describe("Total items in the agent's structured summary."),
377
+ textItems: z.number().int().nonnegative().describe("Text and prose items in the summary."),
378
+ dataItems: z
379
+ .number()
380
+ .int()
381
+ .nonnegative()
382
+ .describe("Data items the wrapper will hydrate into charts."),
396
383
  });
397
384
  /** Lifecycle event emitted before summary data items are hydrated into charts. */
398
385
  export type SummaryEvent = z.infer<typeof SummaryEventSchema>;