@workflow/core 5.0.0-beta.33 → 5.0.0-beta.35
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/dist/runtime/helpers.d.ts +55 -0
- package/dist/runtime/helpers.d.ts.map +1 -1
- package/dist/runtime/helpers.js +86 -3
- package/dist/runtime/run-id-time.d.ts +9 -0
- package/dist/runtime/run-id-time.d.ts.map +1 -1
- package/dist/runtime/run-id-time.js +15 -4
- package/dist/runtime/start.d.ts.map +1 -1
- package/dist/runtime/start.js +38 -8
- package/dist/runtime/step-executor.d.ts +2 -0
- package/dist/runtime/step-executor.d.ts.map +1 -1
- package/dist/runtime/step-executor.js +65 -16
- package/dist/runtime/step-latency.d.ts +70 -4
- package/dist/runtime/step-latency.d.ts.map +1 -1
- package/dist/runtime/step-latency.js +59 -7
- package/dist/runtime/suspension-handler.d.ts +10 -1
- package/dist/runtime/suspension-handler.d.ts.map +1 -1
- package/dist/runtime/suspension-handler.js +21 -9
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +124 -10
- package/dist/serialization.d.ts.map +1 -1
- package/dist/serialization.js +93 -5
- package/dist/step/context-storage.d.ts +6 -0
- package/dist/step/context-storage.d.ts.map +1 -1
- package/dist/step/context-storage.js +1 -1
- package/dist/telemetry/semantic-conventions.d.ts +25 -0
- package/dist/telemetry/semantic-conventions.d.ts.map +1 -1
- package/dist/telemetry/semantic-conventions.js +22 -1
- package/dist/telemetry.d.ts.map +1 -1
- package/dist/telemetry.js +37 -2
- package/dist/version.d.ts +1 -1
- package/dist/version.js +2 -2
- package/docs/how-it-works/framework-integrations.mdx +1 -1
- package/package.json +5 -5
|
@@ -20,6 +20,12 @@ export type StepContext = {
|
|
|
20
20
|
workflowMetadata: WorkflowMetadata;
|
|
21
21
|
/** Deployment that owns the current workflow run, used for forwarded streams. */
|
|
22
22
|
workflowDeploymentId?: string;
|
|
23
|
+
/**
|
|
24
|
+
* Root run id of the current run's lineage (`$rootRunId`), so a nested
|
|
25
|
+
* `start()` inherits it without reloading the parent. Set by the runtime from
|
|
26
|
+
* the run it already has loaded.
|
|
27
|
+
*/
|
|
28
|
+
rootRunId?: string;
|
|
23
29
|
ops: Promise<void>[];
|
|
24
30
|
/**
|
|
25
31
|
* Operations that MUST be durably committed before the step's
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context-storage.d.ts","sourceRoot":"","sources":["../../src/step/context-storage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AACnE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAE3D;;;;;;;GAOG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,cAAc,CAAC,GAAG,CAAC,CAAC;IAC9B,KAAK,EAAE,oBAAoB,CAAC;CAC7B;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,YAAY,EAAE,YAAY,CAAC;IAC3B,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,iFAAiF;IACjF,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;IACrB;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,gBAAgB,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAClC,aAAa,CAAC,EAAE,SAAS,CAAC;IAC1B,SAAS,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IACxC;;;;;;;;OAQG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;CACpC,CAAC;AAoBF,eAAO,MAAM,cAAc,EAAE,iBAAiB,CAAC,WAAW,CAKjB,CAAC"}
|
|
1
|
+
{"version":3,"file":"context-storage.d.ts","sourceRoot":"","sources":["../../src/step/context-storage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AACnE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAE3D;;;;;;;GAOG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,cAAc,CAAC,GAAG,CAAC,CAAC;IAC9B,KAAK,EAAE,oBAAoB,CAAC;CAC7B;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,YAAY,EAAE,YAAY,CAAC;IAC3B,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,iFAAiF;IACjF,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;IACrB;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,gBAAgB,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAClC,aAAa,CAAC,EAAE,SAAS,CAAC;IAC1B,SAAS,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IACxC;;;;;;;;OAQG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;CACpC,CAAC;AAoBF,eAAO,MAAM,cAAc,EAAE,iBAAiB,CAAC,WAAW,CAKjB,CAAC"}
|
|
@@ -19,4 +19,4 @@ const CONTEXT_STORAGE_SYMBOL = Symbol.for('WORKFLOW_STEP_CONTEXT_STORAGE');
|
|
|
19
19
|
export const contextStorage = globalThis[CONTEXT_STORAGE_SYMBOL] ??
|
|
20
20
|
(globalThis[CONTEXT_STORAGE_SYMBOL] =
|
|
21
21
|
new AsyncLocalStorage());
|
|
22
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1zdG9yYWdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3N0ZXAvY29udGV4dC1zdG9yYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBeUVyRDs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFDSCxNQUFNLHNCQUFzQixHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsK0JBQStCLENBQUMsQ0FBQztBQUUzRSxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQ3ZCLFVBQWtCLENBQUMsc0JBQXNCLENBRTdCO0lBQ2QsQ0FBRSxVQUFrQixDQUFDLHNCQUFzQixDQUFDO1FBQzFDLElBQUksaUJBQWlCLEVBQWUsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXN5bmNMb2NhbFN0b3JhZ2UgfSBmcm9tICdub2RlOmFzeW5jX2hvb2tzJztcbmltcG9ydCB0eXBlIHsgQ3J5cHRvS2V5IH0gZnJvbSAnLi4vZW5jcnlwdGlvbi5qcyc7XG5pbXBvcnQgdHlwZSB7IEZsdXNoYWJsZVN0cmVhbVN0YXRlIH0gZnJvbSAnLi4vZmx1c2hhYmxlLXN0cmVhbS5qcyc7XG5pbXBvcnQgdHlwZSB7IFdvcmtmbG93TWV0YWRhdGEgfSBmcm9tICcuLi93b3JrZmxvdy9nZXQtd29ya2Zsb3ctbWV0YWRhdGEuanMnO1xuaW1wb3J0IHR5cGUgeyBTdGVwTWV0YWRhdGEgfSBmcm9tICcuL2dldC1zdGVwLW1ldGFkYXRhLmpzJztcblxuLyoqXG4gKiBQZXItc3RlcCBjYWNoZSBlbnRyeSBmb3IgYSBgKHJ1bklkLCBuYW1lc3BhY2UpYCB3cml0YWJsZSBzdHJlYW0uXG4gKlxuICogSG9sZHMgdGhlIHVzZXItZmFjaW5nIGBXcml0YWJsZVN0cmVhbWAgYW5kIHRoZSBzaGFyZWQgYEZsdXNoYWJsZVN0cmVhbVN0YXRlYFxuICogZHJpdmluZyB0aGUgYmFja2dyb3VuZCBwaXBlIHRvIHRoZSB3b3JrZmxvdyBzZXJ2ZXIuIFJlLXVzZWQgc28gcmVwZWF0IGNhbGxzXG4gKiB0byBgZ2V0V3JpdGFibGUoKWAgd2l0aGluIHRoZSBzYW1lIHN0ZXAgcmV0dXJuIHRoZSBzYW1lIGhhbmRsZSBpbnN0ZWFkIG9mXG4gKiBzcGF3bmluZyByYWNpbmcgcGlwZXMg4oCUIHNlZSBodHRwczovL2dpdGh1Yi5jb20vdmVyY2VsL3dvcmtmbG93L2lzc3Vlcy8yMDU4LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENhY2hlZFdyaXRhYmxlIHtcbiAgd3JpdGFibGU6IFdyaXRhYmxlU3RyZWFtPGFueT47XG4gIHN0YXRlOiBGbHVzaGFibGVTdHJlYW1TdGF0ZTtcbn1cblxuZXhwb3J0IHR5cGUgU3RlcENvbnRleHQgPSB7XG4gIHN0ZXBNZXRhZGF0YTogU3RlcE1ldGFkYXRhO1xuICB3b3JrZmxvd01ldGFkYXRhOiBXb3JrZmxvd01ldGFkYXRhO1xuICAvKiogRGVwbG95bWVudCB0aGF0IG93bnMgdGhlIGN1cnJlbnQgd29ya2Zsb3cgcnVuLCB1c2VkIGZvciBmb3J3YXJkZWQgc3RyZWFtcy4gKi9cbiAgd29ya2Zsb3dEZXBsb3ltZW50SWQ/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBSb290IHJ1biBpZCBvZiB0aGUgY3VycmVudCBydW4ncyBsaW5lYWdlIChgJHJvb3RSdW5JZGApLCBzbyBhIG5lc3RlZFxuICAgKiBgc3RhcnQoKWAgaW5oZXJpdHMgaXQgd2l0aG91dCByZWxvYWRpbmcgdGhlIHBhcmVudC4gU2V0IGJ5IHRoZSBydW50aW1lIGZyb21cbiAgICogdGhlIHJ1biBpdCBhbHJlYWR5IGhhcyBsb2FkZWQuXG4gICAqL1xuICByb290UnVuSWQ/OiBzdHJpbmc7XG4gIG9wczogUHJvbWlzZTx2b2lkPltdO1xuICAvKipcbiAgICogT3BlcmF0aW9ucyB0aGF0IE1VU1QgYmUgZHVyYWJseSBjb21taXR0ZWQgYmVmb3JlIHRoZSBzdGVwJ3NcbiAgICogYHN0ZXBfY29tcGxldGVkYC9gc3RlcF9mYWlsZWRgIGV2ZW50IGlzIHdyaXR0ZW4sIGJlY2F1c2UgdGhlIHdvcmtmbG93XG4gICAqIGNvbnRpbnVhdGlvbiB0cmlnZ2VyZWQgYnkgdGhhdCBldmVudCBkZXBlbmRzIG9uIHRoZW0uXG4gICAqXG4gICAqIFRoZSBjYW5vbmljYWwgY2FzZSBpcyBhIHN0ZXAtaW5pdGlhdGVkIGBBYm9ydENvbnRyb2xsZXIuYWJvcnQoKWA6IHRoZVxuICAgKiBkdXJhYmxlIGBob29rX3JlY2VpdmVkYCBldmVudCByZWNvcmRzIHRoZSBjYW5jZWxsYXRpb24gaW4gdGhlIHdvcmtmbG93J3NcbiAgICogZXZlbnQgbG9nLiBJZiBpdCBpcyBmbHVzaGVkIGluIHRoZSBiYWNrZ3JvdW5kIChsaWtlIGBvcHNgKSwgdGhlIHdvcmtmbG93XG4gICAqIGNvbnRpbnVhdGlvbiBlbnF1ZXVlZCBieSBgc3RlcF9jb21wbGV0ZWRgIGNhbiBydW4g4oCUIGFuZCBhZHZhbmNlIHBhc3QgdGhlXG4gICAqIGFib3J0LCBkaXNwYXRjaGluZyBhIGxhdGVyIHN0ZXAgd2l0aCBhIHN0YWxlLCBub24tYWJvcnRlZCBgc2lnbmFsYCDigJQgYmVmb3JlXG4gICAqIHRoZSBgaG9va19yZWNlaXZlZGAgZXZlbnQgZXhpc3RzLiBBd2FpdGluZyB0aGVzZSBpbmxpbmUgYmVmb3JlIGNvbXBsZXRpb25cbiAgICogZ3VhcmFudGVlcyB0aGUgYWJvcnQgaXMgb3JkZXJlZCBhaGVhZCBvZiBhbnkgY29udGludWF0aW9uIHRoYXQgb2JzZXJ2ZXMgdGhlXG4gICAqIHN0ZXAncyByZXN1bHQuIFVubGlrZSB0aGVzZSwgYG9wc2AgaG9sZHMgYmVzdC1lZmZvcnQgcmVhbC10aW1lIHN0cmVhbVxuICAgKiB3cml0ZXMgdGhhdCBzaG91bGQgZmlyZSBBU0FQIGFuZCBhcmUgaW50ZW50aW9uYWxseSBsZWZ0IGluIHRoZSBiYWNrZ3JvdW5kLlxuICAgKlxuICAgKiBDb250cmFjdDogcHJvZHVjZXJzIE1VU1QgTk9UIHB1c2ggYSBwcm9taXNlIHRoYXQgY2FuIHJlamVjdCDigJQgdGhlc2UgYXJlXG4gICAqIGF3YWl0ZWQgb25seSB0byBlbmZvcmNlIG9yZGVyaW5nLCBuZXZlciB0byBzdXJmYWNlIGFuIG91dGNvbWUuIEEgcmVqZWN0aW9uXG4gICAqIGhlcmUgd291bGQgcHJvcGFnYXRlIGFzIGFuIGluZnJhIGVycm9yIChxdWV1ZSByZS1kZWxpdmVyeSksIG5vdCB0aGVcbiAgICogdXNlci1jb2RlIGZhaWx1cmUgcGF0aCwgc28gZWFjaCBwcm9kdWNlciBzd2FsbG93cyBpdHMgb3duIGVycm9ycyAoc2VlXG4gICAqIGByZXZpdmVBYm9ydENvbnRyb2xsZXJgIGluIHNlcmlhbGl6YXRpb24udHMpLiBUaGUgYXdhaXQgc2l0ZXMgYWxzb1xuICAgKiBkZWZlbnNpdmVseSBgLmNhdGNoKClgIHNvIG9yZGVyaW5nIGlzIGFsbCB0aGlzIGJ1Y2tldCBjYW4gZXZlciBlbmZvcmNlLlxuICAgKlxuICAgKiBSZXF1aXJlZCAobm90IG9wdGlvbmFsKSBzbyBhIG5ldyBzdGVwLWNvbnRleHQgY29uc3RydWN0aW9uIHNpdGUgdGhhdFxuICAgKiBmb3JnZXRzIHRvIHdpcmUgaXQgZmFpbHMgYXQgY29tcGlsZSB0aW1lLCByYXRoZXIgdGhhbiBzaWxlbnRseSByZWdyZXNzaW5nXG4gICAqIHRoZSBvcmRlcmluZyBndWFyYW50ZWUgYmFjayB0byBiYWNrZ3JvdW5kLWZsdXNoIGJlaGF2aW9yLlxuICAgKi9cbiAgcHJlQ29tcGxldGlvbk9wczogUHJvbWlzZTx2b2lkPltdO1xuICBjbG9zdXJlVmFycz86IFJlY29yZDxzdHJpbmcsIGFueT47XG4gIGVuY3J5cHRpb25LZXk/OiBDcnlwdG9LZXk7XG4gIHdyaXRhYmxlcz86IE1hcDxzdHJpbmcsIENhY2hlZFdyaXRhYmxlPjtcbiAgLyoqXG4gICAqIFR1cmJvIG1vZGUgb25seTogYSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgb25jZSB0aGUgYmFja2dyb3VuZGVkXG4gICAqIGBydW5fc3RhcnRlZGAgaGFzIGxhbmRlZCAodGhlIHJ1biBleGlzdHMpLiBTZXQgd2hlbiB0aGUgc3RlcCBib2R5IHJ1bnNcbiAgICogb3B0aW1pc3RpY2FsbHkg4oCUIGJlZm9yZSBgcnVuX3N0YXJ0ZWRgL2BzdGVwX3N0YXJ0ZWRgIGFyZSBjb25maXJtZWQg4oCUIHNvIGFcbiAgICogZGlyZWN0IHN0ZXAtYm9keSB3b3JsZCB3cml0ZSAoZS5nLiBgc2V0QXR0cmlidXRlc2AsIHdoaWNoXG4gICAqIHJlc29sdmVzIHRvIGEgaG9zdC1zaWRlIGBhdHRyX3NldGAgY3JlYXRlKSBjYW4gZ2F0ZSBvbiBpdCBhbmQgbmV2ZXIgcmFjZVxuICAgKiBhaGVhZCBvZiB0aGUgcnVuJ3MgY3JlYXRpb24uIGB1bmRlZmluZWRgIG91dHNpZGUgdHVyYm8gYW5kIG9uIHRoZSBhd2FpdFxuICAgKiBwYXRoLCB3aGVyZSBgcnVuX3N0YXJ0ZWRgIHdhcyBhbHJlYWR5IGR1cmFibGUgYmVmb3JlIHRoZSBib2R5IHJhbi5cbiAgICovXG4gIHJ1blJlYWR5QmFycmllcj86IFByb21pc2U8dW5rbm93bj47XG59O1xuXG4vKipcbiAqIFByb2Nlc3Mtd2lkZSBzaW5nbGV0b24gQXN5bmNMb2NhbFN0b3JhZ2UgZm9yIHN0ZXAgZXhlY3V0aW9uIGNvbnRleHQuXG4gKlxuICogVXNlcyBgU3ltYm9sLmZvcigpYCBvbiBnbG9iYWxUaGlzIHRvIGd1YXJhbnRlZSBhIHNpbmdsZSBpbnN0YW5jZSBldmVuIHdoZW5cbiAqIGJ1bmRsZXJzIChlLmcuIFZlcmNlbCdzIHByb2R1Y3Rpb24gYnVuZGxlcikgY3JlYXRlIG11bHRpcGxlIGNvcGllcyBvZiB0aGlzXG4gKiBtb2R1bGUuIFdpdGhvdXQgdGhpcywgYGNvbnRleHRTdG9yYWdlLnJ1bigpYCBpbiB0aGUgc3RlcCBoYW5kbGVyIGFuZFxuICogYGNvbnRleHRTdG9yYWdlLmdldFN0b3JlKClgIGluIHVzZXIgY29kZSAodmlhIGdldFdvcmtmbG93TWV0YWRhdGEgL1xuICogZ2V0U3RlcE1ldGFkYXRhKSBjYW4gcmVmZXJlbmNlIGRpZmZlcmVudCBBc3luY0xvY2FsU3RvcmFnZSBpbnN0YW5jZXMsXG4gKiBjYXVzaW5nIHRoZSBzdG9yZSB0byBhcHBlYXIgZW1wdHkuXG4gKlxuICogTm90ZSB0aGF0IHdlIHdlcmUgdW5hYmxlIHRvIHJlcHJvZHVjZSB0aGlzIGlzc3VlLiBUaGlzIGlzIGEgZml4IGZvciB0aGUgb25seSBzeW50aGV0aWMgd2F5XG4gKiB3YXkgaW4gd2hpY2ggd2UgY291bGQgZ2V0IHRoZSBidWlsZGVyIHRvIGJyZWFrIHdpdGggdGhlIHJlcG9ydGVkIGVycm9yIG1lc3NhZ2UsIGFuZFxuICogc2VydmVzIGFzIGRlZmVuc2UtaW4tZGVwdGgsIHNpbmNlIHRoZSBjaGFuZ2UgaXMgb3RoZXJ3aXNlIHNhZmUuXG4gKlxuICogU2VlOiBodHRwczovL2dpdGh1Yi5jb20vdmVyY2VsL3dvcmtmbG93L2lzc3Vlcy8xNTc3XG4gKi9cbmNvbnN0IENPTlRFWFRfU1RPUkFHRV9TWU1CT0wgPSBTeW1ib2wuZm9yKCdXT1JLRkxPV19TVEVQX0NPTlRFWFRfU1RPUkFHRScpO1xuXG5leHBvcnQgY29uc3QgY29udGV4dFN0b3JhZ2U6IEFzeW5jTG9jYWxTdG9yYWdlPFN0ZXBDb250ZXh0PiA9XG4gICgoZ2xvYmFsVGhpcyBhcyBhbnkpW0NPTlRFWFRfU1RPUkFHRV9TWU1CT0xdIGFzXG4gICAgfCBBc3luY0xvY2FsU3RvcmFnZTxTdGVwQ29udGV4dD5cbiAgICB8IHVuZGVmaW5lZCkgPz9cbiAgKChnbG9iYWxUaGlzIGFzIGFueSlbQ09OVEVYVF9TVE9SQUdFX1NZTUJPTF0gPVxuICAgIG5ldyBBc3luY0xvY2FsU3RvcmFnZTxTdGVwQ29udGV4dD4oKSk7XG4iXX0=
|
|
@@ -181,6 +181,31 @@ export declare const StepTtfsMs: (value: number) => {
|
|
|
181
181
|
export declare const StepStsoMs: (value: number) => {
|
|
182
182
|
[k: string]: number;
|
|
183
183
|
};
|
|
184
|
+
/**
|
|
185
|
+
* Client-measured run_started-to-first-step latency in milliseconds: the
|
|
186
|
+
* `run_started` response landing (or, under turbo, the local run synthesis
|
|
187
|
+
* instant) → this step's start POST being issued. A sub-window of ttfs that
|
|
188
|
+
* isolates replay overhead from the run-creation queue hop. Only present on
|
|
189
|
+
* the run's first step execution when it qualified for measurement (see
|
|
190
|
+
* runtime/step-latency.ts).
|
|
191
|
+
*/
|
|
192
|
+
export declare const StepRsfsMs: (value: number) => {
|
|
193
|
+
[k: string]: number;
|
|
194
|
+
};
|
|
195
|
+
/**
|
|
196
|
+
* Client-measured synchronous workflow-function replay duration in
|
|
197
|
+
* milliseconds, excluding awaited network I/O, of only the FINAL replay pass
|
|
198
|
+
* within the rsfs window — the pass that reached and scheduled the first
|
|
199
|
+
* step. Not accumulated across earlier pre-first-step passes (e.g. a
|
|
200
|
+
* workflow-body `setAttributes()` detour replays more than once, and a
|
|
201
|
+
* redelivery omits earlier invocations' work entirely), so this must not be
|
|
202
|
+
* read as "the replay portion of rsfs" — step.rsfs_ms covers the whole
|
|
203
|
+
* window. Only present alongside step.rsfs_ms and only for the run's first
|
|
204
|
+
* step (see runtime/step-latency.ts).
|
|
205
|
+
*/
|
|
206
|
+
export declare const StepFinalSchedulingReplayMs: (value: number) => {
|
|
207
|
+
[k: string]: number;
|
|
208
|
+
};
|
|
184
209
|
/**
|
|
185
210
|
* Runtime startup-latency optimizations active for the ttfs/stso measurement
|
|
186
211
|
* (e.g. 'turbo', 'lazyStepStart', 'optimisticStart').
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"semantic-conventions.d.ts","sourceRoot":"","sources":["../../src/telemetry/semantic-conventions.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"semantic-conventions.d.ts","sourceRoot":"","sources":["../../src/telemetry/semantic-conventions.ts"],"names":[],"mappings":"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"}
|
|
@@ -128,6 +128,27 @@ export const StepTtfsMs = SemanticConvention('step.ttfs_ms');
|
|
|
128
128
|
* the two steps ran back-to-back.
|
|
129
129
|
*/
|
|
130
130
|
export const StepStsoMs = SemanticConvention('step.stso_ms');
|
|
131
|
+
/**
|
|
132
|
+
* Client-measured run_started-to-first-step latency in milliseconds: the
|
|
133
|
+
* `run_started` response landing (or, under turbo, the local run synthesis
|
|
134
|
+
* instant) → this step's start POST being issued. A sub-window of ttfs that
|
|
135
|
+
* isolates replay overhead from the run-creation queue hop. Only present on
|
|
136
|
+
* the run's first step execution when it qualified for measurement (see
|
|
137
|
+
* runtime/step-latency.ts).
|
|
138
|
+
*/
|
|
139
|
+
export const StepRsfsMs = SemanticConvention('step.rsfs_ms');
|
|
140
|
+
/**
|
|
141
|
+
* Client-measured synchronous workflow-function replay duration in
|
|
142
|
+
* milliseconds, excluding awaited network I/O, of only the FINAL replay pass
|
|
143
|
+
* within the rsfs window — the pass that reached and scheduled the first
|
|
144
|
+
* step. Not accumulated across earlier pre-first-step passes (e.g. a
|
|
145
|
+
* workflow-body `setAttributes()` detour replays more than once, and a
|
|
146
|
+
* redelivery omits earlier invocations' work entirely), so this must not be
|
|
147
|
+
* read as "the replay portion of rsfs" — step.rsfs_ms covers the whole
|
|
148
|
+
* window. Only present alongside step.rsfs_ms and only for the run's first
|
|
149
|
+
* step (see runtime/step-latency.ts).
|
|
150
|
+
*/
|
|
151
|
+
export const StepFinalSchedulingReplayMs = SemanticConvention('step.final_scheduling_replay_ms');
|
|
131
152
|
/**
|
|
132
153
|
* Runtime startup-latency optimizations active for the ttfs/stso measurement
|
|
133
154
|
* (e.g. 'turbo', 'lazyStepStart', 'optimisticStart').
|
|
@@ -246,4 +267,4 @@ export const RpcMethod = SemanticConvention('rpc.method');
|
|
|
246
267
|
export const ErrorRetryable = SemanticConvention('error.retryable');
|
|
247
268
|
/** Error category (workflow-specific: fatal, retryable, transient) */
|
|
248
269
|
export const ErrorCategory = SemanticConvention('error.category');
|
|
249
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VtYW50aWMtY29udmVudGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVsZW1ldHJ5L3NlbWFudGljLWNvbnZlbnRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUNHO0FBSUg7Ozs7R0FJRztBQUNILFNBQVMsa0JBQWtCLENBQUksR0FBRyxLQUFlO0lBQy9DLE9BQU8sQ0FBQyxLQUFRLEVBQUUsRUFBRSxDQUNsQixNQUFNLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBVSxDQUFDLENBQUMsQ0FBQztBQUNwRSxDQUFDO0FBRUQsc0JBQXNCO0FBRXRCLDhDQUE4QztBQUM5QyxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsa0JBQWtCLENBQVMsZUFBZSxDQUFDLENBQUM7QUFFeEUsb0RBQW9EO0FBQ3BELE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLGtCQUFrQixDQUVqRCxvQkFBb0IsQ0FBQyxDQUFDO0FBRXhCLDZEQUE2RDtBQUM3RCxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsa0JBQWtCLENBQVMsaUJBQWlCLENBQUMsQ0FBQztBQUUzRSx5Q0FBeUM7QUFDekMsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsa0JBQWtCLENBRWpELHFCQUFxQixDQUFDLENBQUM7QUFFekIscUVBQXFFO0FBQ3JFLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLGtCQUFrQixDQUNqRCxxQkFBcUIsQ0FDdEIsQ0FBQztBQUVGLDJEQUEyRDtBQUMzRCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxrQkFBa0IsQ0FDbkQsdUJBQXVCLENBQ3hCLENBQUM7QUFFRixpREFBaUQ7QUFDakQsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsa0JBQWtCLENBQ3RELDBCQUEwQixDQUMzQixDQUFDO0FBRUYsa0NBQWtDO0FBQ2xDLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLGtCQUFrQixDQUNsRCxzQkFBc0IsQ0FDdkIsQ0FBQztBQUVGLHNFQUFzRTtBQUN0RSxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRyxrQkFBa0IsQ0FDdkQsMkJBQTJCLENBQzVCLENBQUM7QUFFRiwrRUFBK0U7QUFDL0UsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsa0JBQWtCLENBQ2pELHFCQUFxQixDQUN0QixDQUFDO0FBRUYsOEVBQThFO0FBQzlFLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxrQkFBa0IsQ0FBVSxnQkFBZ0IsQ0FBQyxDQUFDO0FBRTNFLHFEQUFxRDtBQUNyRCxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxrQkFBa0IsQ0FDakQscUJBQXFCLENBQ3RCLENBQUM7QUFFRix3Q0FBd0M7QUFDeEMsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsa0JBQWtCLENBQ3BELHdCQUF3QixDQUN6QixDQUFDO0FBRUYsa0VBQWtFO0FBQ2xFLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLGtCQUFrQixDQUNqRCxxQkFBcUIsQ0FDdEIsQ0FBQztBQUVGLHdEQUF3RDtBQUN4RCxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxrQkFBa0IsQ0FDcEQsd0JBQXdCLENBQ3pCLENBQUM7QUFFRix3REFBd0Q7QUFDeEQsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsa0JBQWtCLENBQ3BELHdCQUF3QixDQUN6QixDQUFDO0FBRUYsd0RBQXdEO0FBQ3hELE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLGtCQUFrQixDQUNwRCx3QkFBd0IsQ0FDekIsQ0FBQztBQUVGOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FBRyxrQkFBa0IsQ0FDMUQsZ0RBQWdELENBQ2pELENBQUM7QUFFRjs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQUcsa0JBQWtCLENBQzFELGdEQUFnRCxDQUNqRCxDQUFDO0FBRUYsbUJBQW1CO0FBRW5CLCtDQUErQztBQUMvQyxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxrQkFBa0IsQ0FDakQscUJBQXFCLENBQ3RCLENBQUM7QUFFRiw4RUFBOEU7QUFDOUUsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQUcsa0JBQWtCLENBQzFELCtCQUErQixDQUNoQyxDQUFDO0FBRUYsb0VBQW9FO0FBQ3BFLE1BQU0sQ0FBQyxNQUFNLDRCQUE0QixHQUFHLGtCQUFrQixDQUM1RCxpQ0FBaUMsQ0FDbEMsQ0FBQztBQUVGLHdFQUF3RTtBQUN4RSxNQUFNLENBQUMsTUFBTSw0QkFBNEIsR0FBRyxrQkFBa0IsQ0FDNUQsa0NBQWtDLENBQ25DLENBQUM7QUFFRiwyRkFBMkY7QUFDM0YsTUFBTSxDQUFDLE1BQU0sNkJBQTZCLEdBQUcsa0JBQWtCLENBQzdELG9DQUFvQyxDQUNyQyxDQUFDO0FBRUYsa0JBQWtCO0FBRWxCLCtDQUErQztBQUMvQyxNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsa0JBQWtCLENBQVMsV0FBVyxDQUFDLENBQUM7QUFFaEUsOENBQThDO0FBQzlDLE1BQU0sQ0FBQyxNQUFNLE1BQU0sR0FBRyxrQkFBa0IsQ0FBUyxTQUFTLENBQUMsQ0FBQztBQUU1RCw4REFBOEQ7QUFDOUQsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLGtCQUFrQixDQUFTLGNBQWMsQ0FBQyxDQUFDO0FBRXRFLGlDQUFpQztBQUNqQyxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsa0JBQWtCLENBQWlCLGFBQWEsQ0FBQyxDQUFDO0FBRTVFLHNEQUFzRDtBQUN0RCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsa0JBQWtCLENBQVMsa0JBQWtCLENBQUMsQ0FBQztBQUU3RSxrRUFBa0U7QUFDbEUsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsa0JBQWtCLENBQ25ELHVCQUF1QixDQUN4QixDQUFDO0FBRUY7Ozs7O0dBS0c7QUFDSCxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsa0JBQWtCLENBQVMsY0FBYyxDQUFDLENBQUM7QUFFckU7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxrQkFBa0IsQ0FBUyxjQUFjLENBQUMsQ0FBQztBQUVyRTs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyxrQkFBa0IsQ0FDeEQsNEJBQTRCLENBQzdCLENBQUM7QUFFRixvREFBb0Q7QUFDcEQsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLGtCQUFrQixDQUFVLGNBQWMsQ0FBQyxDQUFDO0FBRXZFLHNDQUFzQztBQUN0QyxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQ3pCLGtCQUFrQixDQUFpQixrQkFBa0IsQ0FBQyxDQUFDO0FBRXpELHNEQUFzRDtBQUN0RCxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxrQkFBa0IsQ0FDbEQsc0JBQXNCLENBQ3ZCLENBQUM7QUFFRiw4QkFBOEI7QUFDOUIsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLGtCQUFrQixDQUFTLGtCQUFrQixDQUFDLENBQUM7QUFFN0UsaURBQWlEO0FBQ2pELE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxrQkFBa0IsQ0FBUyxpQkFBaUIsQ0FBQyxDQUFDO0FBRTNFLG9DQUFvQztBQUNwQyxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FDM0Isa0JBQWtCLENBQVMsb0JBQW9CLENBQUMsQ0FBQztBQUVuRCw4REFBOEQ7QUFDOUQsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLGtCQUFrQixDQUFVLGtCQUFrQixDQUFDLENBQUM7QUFFOUUscURBQXFEO0FBQ3JELE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLGtCQUFrQixDQUNsRCxzQkFBc0IsQ0FDdkIsQ0FBQztBQUVGLDBEQUEwRDtBQUMxRCxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRyxrQkFBa0IsQ0FDdkQsNEJBQTRCLENBQzdCLENBQUM7QUFFRiwwREFBMEQ7QUFDMUQsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsa0JBQWtCLENBQ2xELHVCQUF1QixDQUN4QixDQUFDO0FBRUYsbUVBQW1FO0FBQ25FLDhFQUE4RTtBQUU5RSxvRUFBb0U7QUFDcEUsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLGtCQUFrQixDQUFTLGtCQUFrQixDQUFDLENBQUM7QUFFOUUsOEVBQThFO0FBQzlFLE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLGtCQUFrQixDQUN4RCw0QkFBNEIsQ0FDN0IsQ0FBQztBQUVGLHlFQUF5RTtBQUN6RSxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxrQkFBa0IsQ0FDbEQsc0JBQXNCLENBQ3ZCLENBQUM7QUFFRiwrREFBK0Q7QUFDL0QsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsa0JBQWtCLENBRXRELDBCQUEwQixDQUFDLENBQUM7QUFFOUIsNEVBQTRFO0FBQzVFLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxrQkFBa0IsQ0FDL0MsNEJBQTRCLENBQzdCLENBQUM7QUFFRix3QkFBd0I7QUFFeEIsdURBQXVEO0FBQ3ZELE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxrQkFBa0IsQ0FBUyxlQUFlLENBQUMsQ0FBQztBQUV4RSxrQkFBa0I7QUFFbEIsd0NBQXdDO0FBQ3hDLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRyxrQkFBa0IsQ0FBUyxxQkFBcUIsQ0FBQyxDQUFDO0FBRTNFLDRDQUE0QztBQUM1QyxNQUFNLENBQUMsTUFBTSxNQUFNLEdBQUcsa0JBQWtCLENBQVMsa0JBQWtCLENBQUMsQ0FBQztBQUVyRSw0Q0FBNEM7QUFDNUMsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLGtCQUFrQixDQUFVLHFCQUFxQixDQUFDLENBQUM7QUFFNUUscUJBQXFCO0FBRXJCLDJDQUEyQztBQUMzQyxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyxrQkFBa0IsQ0FDeEQsNEJBQTRCLENBQzdCLENBQUM7QUFFRix3QkFBd0I7QUFFeEIsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsa0JBQWtCLENBQ3ZELDJCQUEyQixDQUM1QixDQUFDO0FBQ0YsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQUcsa0JBQWtCLENBQzNELGdDQUFnQyxDQUNqQyxDQUFDO0FBQ0YsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQUcsa0JBQWtCLENBQzNELGdDQUFnQyxDQUNqQyxDQUFDO0FBQ0YsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQUcsa0JBQWtCLENBQzNELGdDQUFnQyxDQUNqQyxDQUFDO0FBRUYsNERBQTREO0FBQzVELG9FQUFvRTtBQUVwRSwrREFBK0Q7QUFDL0QsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsa0JBQWtCLENBQ2pELHFCQUFxQixDQUN0QixDQUFDO0FBRUYsZ0VBQWdFO0FBQ2hFLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRyxrQkFBa0IsQ0FBUyxZQUFZLENBQUMsQ0FBQztBQUVsRSx3REFBd0Q7QUFDeEQsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLGtCQUFrQixDQUFTLFVBQVUsQ0FBQyxDQUFDO0FBRTlELHNEQUFzRDtBQUN0RCxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsa0JBQWtCLENBQVMsZ0JBQWdCLENBQUMsQ0FBQztBQUUxRSwrQ0FBK0M7QUFDL0MsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLGtCQUFrQixDQUFTLGFBQWEsQ0FBQyxDQUFDO0FBRXBFLDJFQUEyRTtBQUMzRSxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxrQkFBa0IsQ0FDdEQsMkJBQTJCLENBQzVCLENBQUM7QUFFRixnRUFBZ0U7QUFDaEUsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLGtCQUFrQixDQUFTLFlBQVksQ0FBQyxDQUFDO0FBRWxFLG1FQUFtRTtBQUVuRSwyREFBMkQ7QUFDM0QsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsa0JBQWtCLENBQ2hELDZCQUE2QixDQUM5QixDQUFDO0FBRUYsMkJBQTJCO0FBRTNCLHNFQUFzRTtBQUN0RSxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyxrQkFBa0IsQ0FDekQsOEJBQThCLENBQy9CLENBQUM7QUFFRix3REFBd0Q7QUFFeEQsaUVBQWlFO0FBQ2pFLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLGtCQUFrQixDQUN0RCxvQ0FBb0MsQ0FDckMsQ0FBQztBQUVGLDZEQUE2RDtBQUM3RCxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxrQkFBa0IsQ0FDcEQsa0NBQWtDLENBQ25DLENBQUM7QUFFRiwwREFBMEQ7QUFDMUQsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsa0JBQWtCLENBQ3BELGtDQUFrQyxDQUNuQyxDQUFDO0FBRUYsZ0VBQWdFO0FBQ2hFLEVBQUU7QUFDRiwyRUFBMkU7QUFDM0UsMkVBQTJFO0FBQzNFLHNFQUFzRTtBQUN0RSxxRUFBcUU7QUFFckUsOERBQThEO0FBQzlELE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLGtCQUFrQixDQUV0RCxrQ0FBa0MsQ0FBQyxDQUFDO0FBRXRDLHdFQUF3RTtBQUN4RSxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRyxrQkFBa0IsQ0FDdkQsbUNBQW1DLENBQ3BDLENBQUM7QUFFRixpRkFBaUY7QUFDakYsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsa0JBQWtCLENBQ2xELDhCQUE4QixDQUMvQixDQUFDO0FBRUYsc0VBQXNFO0FBQ3RFLE1BQU0sQ0FBQyxNQUFNLDhCQUE4QixHQUFHLGtCQUFrQixDQUM5RCwyQ0FBMkMsQ0FDNUMsQ0FBQztBQUVGLHVFQUF1RTtBQUN2RSxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyxrQkFBa0IsQ0FDeEQscUNBQXFDLENBQ3RDLENBQUM7QUFFRiwrRUFBK0U7QUFDL0UsTUFBTSxDQUFDLE1BQU0sNkJBQTZCLEdBQUcsa0JBQWtCLENBQzdELDBDQUEwQyxDQUMzQyxDQUFDO0FBRUYseUVBQXlFO0FBQ3pFLGtFQUFrRTtBQUVsRSx3RkFBd0Y7QUFDeEYsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLGtCQUFrQixDQUFTLGNBQWMsQ0FBQyxDQUFDO0FBRXRFLHdEQUF3RDtBQUN4RCxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUcsa0JBQWtCLENBQVMsWUFBWSxDQUFDLENBQUM7QUFFbEUsb0RBQW9EO0FBQ3BELE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxrQkFBa0IsQ0FBUyxhQUFhLENBQUMsQ0FBQztBQUVwRSxrREFBa0Q7QUFDbEQsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLGtCQUFrQixDQUFTLFlBQVksQ0FBQyxDQUFDO0FBRWxFLHFEQUFxRDtBQUNyRCxnRkFBZ0Y7QUFFaEYseURBQXlEO0FBQ3pELE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxrQkFBa0IsQ0FBVSxpQkFBaUIsQ0FBQyxDQUFDO0FBRTdFLHNFQUFzRTtBQUN0RSxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsa0JBQWtCLENBRTdDLGdCQUFnQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIE9wZW5UZWxlbWV0cnkgc2VtYW50aWMgY29udmVudGlvbnMgZm9yIFZlcmNlbCBXb3JrZmxvdyB0ZWxlbWV0cnkuXG4gKlxuICogVGhpcyBtb2R1bGUgcHJvdmlkZXMgc3RhbmRhcmRpemVkIHRlbGVtZXRyeSBhdHRyaWJ1dGVzIGZvbGxvd2luZyBPcGVuVGVsZW1ldHJ5IHNlbWFudGljIGNvbnZlbnRpb25zXG4gKiBmb3IgaW5zdHJ1bWVudGluZyB3b3JrZmxvdyBleGVjdXRpb24sIHN0ZXAgcHJvY2Vzc2luZywgYW5kIHJlbGF0ZWQgb3BlcmF0aW9ucy4gRWFjaCBleHBvcnRlZCBmdW5jdGlvblxuICogY3JlYXRlcyBhIHByb3Blcmx5IGZvcm1hdHRlZCBhdHRyaWJ1dGUgb2JqZWN0IHRoYXQgY2FuIGJlIHVzZWQgd2l0aCBPcGVuVGVsZW1ldHJ5IHNwYW5zLlxuICpcbiAqIFRoZSBzZW1hbnRpYyBjb252ZW50aW9ucyBhcmUgb3JnYW5pemVkIGludG8gc2V2ZXJhbCBjYXRlZ29yaWVzOlxuICogLSAqKldvcmtmbG93IGF0dHJpYnV0ZXMqKjogVHJhY2sgd29ya2Zsb3cgbGlmZWN5Y2xlLCBzdGF0dXMsIGFuZCBtZXRhZGF0YVxuICogLSAqKlN0ZXAgYXR0cmlidXRlcyoqOiBNb25pdG9yIGluZGl2aWR1YWwgc3RlcCBleGVjdXRpb24sIHJldHJpZXMsIGFuZCByZXN1bHRzXG4gKiAtICoqUXVldWUgYXR0cmlidXRlcyoqOiBJbnN0cnVtZW50IG1lc3NhZ2UgcXVldWUgb3BlcmF0aW9uc1xuICogLSAqKkRlcGxveW1lbnQgYXR0cmlidXRlcyoqOiBDYXB0dXJlIGRlcGxveW1lbnQgZW52aXJvbm1lbnQgaW5mb3JtYXRpb25cbiAqXG4gKiBBbGwgYXR0cmlidXRlIGZ1bmN0aW9ucyBhcmUgdHlwZS1zYWZlIGFuZCBsZXZlcmFnZSBleGlzdGluZyBiYWNrZW5kIHR5cGVzIHRvIGVuc3VyZVxuICogY29uc2lzdGVuY3kgYmV0d2VlbiB0ZWxlbWV0cnkgZGF0YSBhbmQgYWN0dWFsIHN5c3RlbSBzdGF0ZS5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogaW1wb3J0ICogYXMgQXR0cmlidXRlIGZyb20gJy4vdGVsZW1ldHJ5L3NlbWFudGljLWNvbnZlbnRpb25zLmpzJztcbiAqXG4gKiAvLyBTZXQgd29ya2Zsb3cgYXR0cmlidXRlcyBvbiBhIHNwYW5cbiAqIHNwYW4uc2V0QXR0cmlidXRlcyh7XG4gKiAgIC4uLkF0dHJpYnV0ZS5Xb3JrZmxvd05hbWUoJ215LXdvcmtmbG93JyksXG4gKiAgIC4uLkF0dHJpYnV0ZS5Xb3JrZmxvd09wZXJhdGlvbignc3RhcnQnKSxcbiAqICAgLi4uQXR0cmlidXRlLldvcmtmbG93UnVuU3RhdHVzKCdydW5uaW5nJyksXG4gKiB9KTtcbiAqXG4gKiAvLyBTZXQgc3RlcCBhdHRyaWJ1dGVzXG4gKiBzcGFuLnNldEF0dHJpYnV0ZXMoe1xuICogICAuLi5BdHRyaWJ1dGUuU3RlcE5hbWUoJ3Byb2Nlc3MtZGF0YScpLFxuICogICAuLi5BdHRyaWJ1dGUuU3RlcFN0YXR1cygnY29tcGxldGVkJyksXG4gKiAgIC4uLkF0dHJpYnV0ZS5TdGVwQXR0ZW1wdCgxKSxcbiAqIH0pO1xuICogYGBgXG4gKlxuICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9vcGVudGVsZW1ldHJ5LmlvL2RvY3Mvc3BlY3Mvc2VtY29udi99IE9wZW5UZWxlbWV0cnkgU2VtYW50aWMgQ29udmVudGlvbnNcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvblxuICovXG5cbmltcG9ydCB0eXBlIHsgTWVzc2FnZUlkLCBTdGVwLCBXb3JrZmxvd1J1biB9IGZyb20gJ0B3b3JrZmxvdy93b3JsZCc7XG5cbi8qKlxuICogQ3JlYXRlcyBhIHNlbWFudGljIGNvbnZlbnRpb24gZnVuY3Rpb24gdGhhdCByZXR1cm5zIGFuIGF0dHJpYnV0ZSBvYmplY3QuXG4gKiBAcGFyYW0gbmFtZSAtIFRoZSBhdHRyaWJ1dGUgbmFtZSBmb2xsb3dpbmcgT3BlblRlbGVtZXRyeSBzZW1hbnRpYyBjb252ZW50aW9uc1xuICogQHJldHVybnMgQSBmdW5jdGlvbiB0aGF0IHRha2VzIGEgdmFsdWUgYW5kIHJldHVybnMgYW4gYXR0cmlidXRlIG9iamVjdFxuICovXG5mdW5jdGlvbiBTZW1hbnRpY0NvbnZlbnRpb248VD4oLi4ubmFtZXM6IHN0cmluZ1tdKSB7XG4gIHJldHVybiAodmFsdWU6IFQpID0+XG4gICAgT2JqZWN0LmZyb21FbnRyaWVzKG5hbWVzLm1hcCgobmFtZSkgPT4gW25hbWUsIHZhbHVlXSBhcyBjb25zdCkpO1xufVxuXG4vLyBXb3JrZmxvdyBhdHRyaWJ1dGVzXG5cbi8qKiBUaGUgbmFtZSBvZiB0aGUgd29ya2Zsb3cgYmVpbmcgZXhlY3V0ZWQgKi9cbmV4cG9ydCBjb25zdCBXb3JrZmxvd05hbWUgPSBTZW1hbnRpY0NvbnZlbnRpb248c3RyaW5nPignd29ya2Zsb3cubmFtZScpO1xuXG4vKiogVGhlIG9wZXJhdGlvbiBiZWluZyBwZXJmb3JtZWQgb24gdGhlIHdvcmtmbG93ICovXG5leHBvcnQgY29uc3QgV29ya2Zsb3dPcGVyYXRpb24gPSBTZW1hbnRpY0NvbnZlbnRpb248XG4gICdzdGFydCcgfCAnZXhlY3V0ZScgfCAnZXhlY3V0ZV92MicgfCAncnVuJ1xuPignd29ya2Zsb3cub3BlcmF0aW9uJyk7XG5cbi8qKiBVbmlxdWUgaWRlbnRpZmllciBmb3IgYSBzcGVjaWZpYyB3b3JrZmxvdyBydW4gaW5zdGFuY2UgKi9cbmV4cG9ydCBjb25zdCBXb3JrZmxvd1J1bklkID0gU2VtYW50aWNDb252ZW50aW9uPHN0cmluZz4oJ3dvcmtmbG93LnJ1bi5pZCcpO1xuXG4vKiogQ3VycmVudCBzdGF0dXMgb2YgdGhlIHdvcmtmbG93IHJ1biAqL1xuZXhwb3J0IGNvbnN0IFdvcmtmbG93UnVuU3RhdHVzID0gU2VtYW50aWNDb252ZW50aW9uPFxuICBXb3JrZmxvd1J1blsnc3RhdHVzJ10gfCAnd29ya2Zsb3dfc3VzcGVuZGVkJ1xuPignd29ya2Zsb3cucnVuLnN0YXR1cycpO1xuXG4vKiogVGltZXN0YW1wIHdoZW4gdGhlIHdvcmtmbG93IGV4ZWN1dGlvbiBzdGFydGVkIChVbml4IHRpbWVzdGFtcCkgKi9cbmV4cG9ydCBjb25zdCBXb3JrZmxvd1N0YXJ0ZWRBdCA9IFNlbWFudGljQ29udmVudGlvbjxudW1iZXI+KFxuICAnd29ya2Zsb3cuc3RhcnRlZF9hdCdcbik7XG5cbi8qKiBOdW1iZXIgb2YgZXZlbnRzIHByb2Nlc3NlZCBkdXJpbmcgd29ya2Zsb3cgZXhlY3V0aW9uICovXG5leHBvcnQgY29uc3QgV29ya2Zsb3dFdmVudHNDb3VudCA9IFNlbWFudGljQ29udmVudGlvbjxudW1iZXI+KFxuICAnd29ya2Zsb3cuZXZlbnRzLmNvdW50J1xuKTtcblxuLyoqIE51bWJlciBvZiBhcmd1bWVudHMgcGFzc2VkIHRvIHRoZSB3b3JrZmxvdyAqL1xuZXhwb3J0IGNvbnN0IFdvcmtmbG93QXJndW1lbnRzQ291bnQgPSBTZW1hbnRpY0NvbnZlbnRpb248bnVtYmVyPihcbiAgJ3dvcmtmbG93LmFyZ3VtZW50cy5jb3VudCdcbik7XG5cbi8qKiBUeXBlIG9mIHRoZSB3b3JrZmxvdyByZXN1bHQgKi9cbmV4cG9ydCBjb25zdCBXb3JrZmxvd1Jlc3VsdFR5cGUgPSBTZW1hbnRpY0NvbnZlbnRpb248c3RyaW5nPihcbiAgJ3dvcmtmbG93LnJlc3VsdC50eXBlJ1xuKTtcblxuLyoqIFdoZXRoZXIgdHJhY2UgY29udGV4dCB3YXMgcHJvcGFnYXRlZCB0byB0aGlzIHdvcmtmbG93IGV4ZWN1dGlvbiAqL1xuZXhwb3J0IGNvbnN0IFdvcmtmbG93VHJhY2VQcm9wYWdhdGVkID0gU2VtYW50aWNDb252ZW50aW9uPGJvb2xlYW4+KFxuICAnd29ya2Zsb3cudHJhY2UucHJvcGFnYXRlZCdcbik7XG5cbi8qKiBBY3RpdmUgdHJhY2UtY29ycmVsYXRpb24gbW9kZSBmb3IgdGhpcyBpbnZvY2F0aW9uIChsaW5rZWQgb3IgY29udGludW91cykgKi9cbmV4cG9ydCBjb25zdCBXb3JrZmxvd1RyYWNlTW9kZSA9IFNlbWFudGljQ29udmVudGlvbjwnbGlua2VkJyB8ICdjb250aW51b3VzJz4oXG4gICd3b3JrZmxvdy50cmFjZS5tb2RlJ1xuKTtcblxuLyoqIFdoZXRoZXIgdGhpcyB3b3JrZmxvdyBpbnZvY2F0aW9uIGlzIHVzaW5nIHRoZSB0dXJibyBmaXJzdC1kZWxpdmVyeSBwYXRoICovXG5leHBvcnQgY29uc3QgV29ya2Zsb3dUdXJibyA9IFNlbWFudGljQ29udmVudGlvbjxib29sZWFuPignd29ya2Zsb3cudHVyYm8nKTtcblxuLyoqIE5hbWUgb2YgdGhlIGVycm9yIHRoYXQgY2F1c2VkIHdvcmtmbG93IGZhaWx1cmUgKi9cbmV4cG9ydCBjb25zdCBXb3JrZmxvd0Vycm9yTmFtZSA9IFNlbWFudGljQ29udmVudGlvbjxzdHJpbmc+KFxuICAnd29ya2Zsb3cuZXJyb3IubmFtZSdcbik7XG5cbi8qKiBFcnJvciBtZXNzYWdlIHdoZW4gd29ya2Zsb3cgZmFpbHMgKi9cbmV4cG9ydCBjb25zdCBXb3JrZmxvd0Vycm9yTWVzc2FnZSA9IFNlbWFudGljQ29udmVudGlvbjxzdHJpbmc+KFxuICAnd29ya2Zsb3cuZXJyb3IubWVzc2FnZSdcbik7XG5cbi8qKiBFcnJvciBjbGFzc2lmaWNhdGlvbiBjb2RlIChVU0VSX0VSUk9SLCBSVU5USU1FX0VSUk9SLCBldGMuKSAqL1xuZXhwb3J0IGNvbnN0IFdvcmtmbG93RXJyb3JDb2RlID0gU2VtYW50aWNDb252ZW50aW9uPHN0cmluZz4oXG4gICd3b3JrZmxvdy5lcnJvci5jb2RlJ1xuKTtcblxuLyoqIE51bWJlciBvZiBzdGVwcyBjcmVhdGVkIGR1cmluZyB3b3JrZmxvdyBleGVjdXRpb24gKi9cbmV4cG9ydCBjb25zdCBXb3JrZmxvd1N0ZXBzQ3JlYXRlZCA9IFNlbWFudGljQ29udmVudGlvbjxudW1iZXI+KFxuICAnd29ya2Zsb3cuc3RlcHMuY3JlYXRlZCdcbik7XG5cbi8qKiBOdW1iZXIgb2YgaG9va3MgY3JlYXRlZCBkdXJpbmcgd29ya2Zsb3cgZXhlY3V0aW9uICovXG5leHBvcnQgY29uc3QgV29ya2Zsb3dIb29rc0NyZWF0ZWQgPSBTZW1hbnRpY0NvbnZlbnRpb248bnVtYmVyPihcbiAgJ3dvcmtmbG93Lmhvb2tzLmNyZWF0ZWQnXG4pO1xuXG4vKiogTnVtYmVyIG9mIHdhaXRzIGNyZWF0ZWQgZHVyaW5nIHdvcmtmbG93IGV4ZWN1dGlvbiAqL1xuZXhwb3J0IGNvbnN0IFdvcmtmbG93V2FpdHNDcmVhdGVkID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oXG4gICd3b3JrZmxvdy53YWl0cy5jcmVhdGVkJ1xuKTtcblxuLyoqXG4gKiBOdW1iZXIgb2YgaW5saW5lLW93bmVkIHN0ZXBzIHRoaXMgaW52b2NhdGlvbiByZS1leGVjdXRlZCBiZWNhdXNlIGl0IGlzIGFcbiAqIHJlZGVsaXZlcnkgb2YgdGhlaXIgb3duaW5nIHF1ZXVlIG1lc3NhZ2UgKGNyYXNoIHJlY292ZXJ5IGZvciBpbmxpbmVcbiAqIHN0ZXBzIOKAlCBzZWUgdGhlIGlubGluZSBzdGVwIG93bmVyc2hpcCBjaGFuZ2Vsb2csIHdvcmtmbG93IzI3ODApLlxuICovXG5leHBvcnQgY29uc3QgV29ya2Zsb3dPd25lZFJlY292ZXJ5U3RlcHMgPSBTZW1hbnRpY0NvbnZlbnRpb248bnVtYmVyPihcbiAgJ3dvcmtmbG93LmlubGluZV9vd25lcnNoaXAub3duZWRfcmVjb3Zlcnlfc3RlcHMnXG4pO1xuXG4vKipcbiAqIE51bWJlciBvZiBwZW5kaW5nIHN0ZXBzIGZvciB3aGljaCB0aGlzIHJlcGxheSBzdXBwcmVzc2VkIHRoZSBpbW1lZGlhdGVcbiAqIHJlcXVldWUgKGFub3RoZXIgaW52b2NhdGlvbiBpbmxpbmUtb3ducyB0aGVtIHVuZGVyIGEgbGl2ZSBsZWFzZSkgYW5kXG4gKiBlbnN1cmVkIGEgZGVsYXllZCBiYWNrc3RvcCB3YWtlIGluc3RlYWQuXG4gKi9cbmV4cG9ydCBjb25zdCBXb3JrZmxvd0JhY2tzdG9wV2FrZXNBcm1lZCA9IFNlbWFudGljQ29udmVudGlvbjxudW1iZXI+KFxuICAnd29ya2Zsb3cuaW5saW5lX293bmVyc2hpcC5iYWNrc3RvcF93YWtlc19hcm1lZCdcbik7XG5cbi8vIFJvdXRlIGF0dHJpYnV0ZXNcblxuLyoqIFRoZSB3b3JrZmxvdyBydW50aW1lIHJvdXRlIGJlaW5nIGhhbmRsZWQgKi9cbmV4cG9ydCBjb25zdCBXb3JrZmxvd1JvdXRlVHlwZSA9IFNlbWFudGljQ29udmVudGlvbjwnZmxvdycgfCAnc3RlcCc+KFxuICAnd29ya2Zsb3cucm91dGUudHlwZSdcbik7XG5cbi8qKiBXaGV0aGVyIHRoaXMgcm91dGUgaW52b2NhdGlvbiByZXVzZWQgYW4gYWxyZWFkeS1jcmVhdGVkIHJlcXVlc3QgaGFuZGxlciAqL1xuZXhwb3J0IGNvbnN0IFdvcmtmbG93Um91dGVIYW5kbGVyQ2FjaGVkID0gU2VtYW50aWNDb252ZW50aW9uPGJvb2xlYW4+KFxuICAnd29ya2Zsb3cucm91dGUuaGFuZGxlcl9jYWNoZWQnXG4pO1xuXG4vKiogTnVtYmVyIG9mIHRpbWVzIHRoaXMgaW4tbWVtb3J5IHJvdXRlIGhhbmRsZXIgaGFzIGJlZW4gaW52b2tlZCAqL1xuZXhwb3J0IGNvbnN0IFdvcmtmbG93Um91dGVJbnZvY2F0aW9uQ291bnQgPSBTZW1hbnRpY0NvbnZlbnRpb248bnVtYmVyPihcbiAgJ3dvcmtmbG93LnJvdXRlLmludm9jYXRpb25fY291bnQnXG4pO1xuXG4vKiogVGltZSBzaW5jZSB0aGlzIHJvdXRlIGVudHJ5cG9pbnQgd2FzIGNvbnN0cnVjdGVkLCBpbiBtaWxsaXNlY29uZHMgKi9cbmV4cG9ydCBjb25zdCBXb3JrZmxvd1JvdXRlRW50cnlwb2ludEFnZU1zID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oXG4gICd3b3JrZmxvdy5yb3V0ZS5lbnRyeXBvaW50X2FnZV9tcydcbik7XG5cbi8qKiBUaW1lIHNwZW50IGV2YWx1YXRpbmcgdGhlIGdlbmVyYXRlZCByb3V0ZSBtb2R1bGUgYm9keSBiZWZvcmUgY3JlYXRpbmcgdGhlIGVudHJ5cG9pbnQgKi9cbmV4cG9ydCBjb25zdCBXb3JrZmxvd1JvdXRlTW9kdWxlQm9keUluaXRNcyA9IFNlbWFudGljQ29udmVudGlvbjxudW1iZXI+KFxuICAnd29ya2Zsb3cucm91dGUubW9kdWxlX2JvZHlfaW5pdF9tcydcbik7XG5cbi8vIFN0ZXAgYXR0cmlidXRlc1xuXG4vKiogTmFtZSBvZiB0aGUgc3RlcCBmdW5jdGlvbiBiZWluZyBleGVjdXRlZCAqL1xuZXhwb3J0IGNvbnN0IFN0ZXBOYW1lID0gU2VtYW50aWNDb252ZW50aW9uPHN0cmluZz4oJ3N0ZXAubmFtZScpO1xuXG4vKiogVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBzdGVwIGluc3RhbmNlICovXG5leHBvcnQgY29uc3QgU3RlcElkID0gU2VtYW50aWNDb252ZW50aW9uPHN0cmluZz4oJ3N0ZXAuaWQnKTtcblxuLyoqIEN1cnJlbnQgYXR0ZW1wdCBudW1iZXIgZm9yIHN0ZXAgZXhlY3V0aW9uIChzdGFydHMgYXQgMSkgKi9cbmV4cG9ydCBjb25zdCBTdGVwQXR0ZW1wdCA9IFNlbWFudGljQ29udmVudGlvbjxudW1iZXI+KCdzdGVwLmF0dGVtcHQnKTtcblxuLyoqIEN1cnJlbnQgc3RhdHVzIG9mIHRoZSBzdGVwICovXG5leHBvcnQgY29uc3QgU3RlcFN0YXR1cyA9IFNlbWFudGljQ29udmVudGlvbjxTdGVwWydzdGF0dXMnXT4oJ3N0ZXAuc3RhdHVzJyk7XG5cbi8qKiBNYXhpbXVtIG51bWJlciBvZiByZXRyaWVzIGFsbG93ZWQgZm9yIHRoaXMgc3RlcCAqL1xuZXhwb3J0IGNvbnN0IFN0ZXBNYXhSZXRyaWVzID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oJ3N0ZXAubWF4X3JldHJpZXMnKTtcblxuLyoqIFdoZXRoZXIgdHJhY2UgY29udGV4dCB3YXMgcHJvcGFnYXRlZCB0byB0aGlzIHN0ZXAgZXhlY3V0aW9uICovXG5leHBvcnQgY29uc3QgU3RlcFRyYWNlUHJvcGFnYXRlZCA9IFNlbWFudGljQ29udmVudGlvbjxib29sZWFuPihcbiAgJ3N0ZXAudHJhY2UucHJvcGFnYXRlZCdcbik7XG5cbi8qKlxuICogQ2xpZW50LW1lYXN1cmVkIHRpbWUtdG8tZmlyc3Qtc3RlcCBsYXRlbmN5IGluIG1pbGxpc2Vjb25kczogcnVuIGNyZWF0aW9uIOKGklxuICogdGhpcyBzdGVwJ3MgYm9keSBiZWdpbm5pbmcgdG8gZXhlY3V0ZSwgbWludXMgcHJlLXN0ZXAgaG9vay1jcmVhdGlvbiB0aW1lLlxuICogT25seSBwcmVzZW50IG9uIHRoZSBydW4ncyBmaXJzdCBzdGVwIGV4ZWN1dGlvbiB3aGVuIGl0IHF1YWxpZmllZCBmb3JcbiAqIG1lYXN1cmVtZW50IChzZWUgcnVudGltZS9zdGVwLWxhdGVuY3kudHMpLlxuICovXG5leHBvcnQgY29uc3QgU3RlcFR0ZnNNcyA9IFNlbWFudGljQ29udmVudGlvbjxudW1iZXI+KCdzdGVwLnR0ZnNfbXMnKTtcblxuLyoqXG4gKiBDbGllbnQtbWVhc3VyZWQgc3RlcC10by1zdGVwIG92ZXJoZWFkIGluIG1pbGxpc2Vjb25kczogdGhlIHByZXZpb3VzIHN0ZXAnc1xuICogdGVybWluYWwgZXZlbnQg4oaSIHRoaXMgc3RlcCdzIGJvZHkgYmVnaW5uaW5nIHRvIGV4ZWN1dGUuIE9ubHkgcHJlc2VudCB3aGVuXG4gKiB0aGUgdHdvIHN0ZXBzIHJhbiBiYWNrLXRvLWJhY2suXG4gKi9cbmV4cG9ydCBjb25zdCBTdGVwU3Rzb01zID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oJ3N0ZXAuc3Rzb19tcycpO1xuXG4vKipcbiAqIFJ1bnRpbWUgc3RhcnR1cC1sYXRlbmN5IG9wdGltaXphdGlvbnMgYWN0aXZlIGZvciB0aGUgdHRmcy9zdHNvIG1lYXN1cmVtZW50XG4gKiAoZS5nLiAndHVyYm8nLCAnbGF6eVN0ZXBTdGFydCcsICdvcHRpbWlzdGljU3RhcnQnKS5cbiAqL1xuZXhwb3J0IGNvbnN0IFN0ZXBMYXRlbmN5T3B0aW1pemF0aW9ucyA9IFNlbWFudGljQ29udmVudGlvbjxzdHJpbmdbXT4oXG4gICdzdGVwLmxhdGVuY3lfb3B0aW1pemF0aW9ucydcbik7XG5cbi8qKiBXaGV0aGVyIHRoZSBzdGVwIHdhcyBza2lwcGVkIGR1cmluZyBleGVjdXRpb24gKi9cbmV4cG9ydCBjb25zdCBTdGVwU2tpcHBlZCA9IFNlbWFudGljQ29udmVudGlvbjxib29sZWFuPignc3RlcC5za2lwcGVkJyk7XG5cbi8qKiBSZWFzb24gd2h5IHRoZSBzdGVwIHdhcyBza2lwcGVkICovXG5leHBvcnQgY29uc3QgU3RlcFNraXBSZWFzb24gPVxuICBTZW1hbnRpY0NvbnZlbnRpb248U3RlcFsnc3RhdHVzJ10+KCdzdGVwLnNraXBfcmVhc29uJyk7XG5cbi8qKiBOdW1iZXIgb2YgYXJndW1lbnRzIHBhc3NlZCB0byB0aGUgc3RlcCBmdW5jdGlvbiAqL1xuZXhwb3J0IGNvbnN0IFN0ZXBBcmd1bWVudHNDb3VudCA9IFNlbWFudGljQ29udmVudGlvbjxudW1iZXI+KFxuICAnc3RlcC5hcmd1bWVudHMuY291bnQnXG4pO1xuXG4vKiogVHlwZSBvZiB0aGUgc3RlcCByZXN1bHQgKi9cbmV4cG9ydCBjb25zdCBTdGVwUmVzdWx0VHlwZSA9IFNlbWFudGljQ29udmVudGlvbjxzdHJpbmc+KCdzdGVwLnJlc3VsdC50eXBlJyk7XG5cbi8qKiBOYW1lIG9mIHRoZSBlcnJvciB0aGF0IGNhdXNlZCBzdGVwIGZhaWx1cmUgKi9cbmV4cG9ydCBjb25zdCBTdGVwRXJyb3JOYW1lID0gU2VtYW50aWNDb252ZW50aW9uPHN0cmluZz4oJ3N0ZXAuZXJyb3IubmFtZScpO1xuXG4vKiogRXJyb3IgbWVzc2FnZSB3aGVuIHN0ZXAgZmFpbHMgKi9cbmV4cG9ydCBjb25zdCBTdGVwRXJyb3JNZXNzYWdlID1cbiAgU2VtYW50aWNDb252ZW50aW9uPHN0cmluZz4oJ3N0ZXAuZXJyb3IubWVzc2FnZScpO1xuXG4vKiogV2hldGhlciB0aGUgc3RlcCBmYWlsZWQgd2l0aCBhIGZhdGFsIGVycm9yIChubyByZXRyaWVzKSAqL1xuZXhwb3J0IGNvbnN0IFN0ZXBGYXRhbEVycm9yID0gU2VtYW50aWNDb252ZW50aW9uPGJvb2xlYW4+KCdzdGVwLmZhdGFsX2Vycm9yJyk7XG5cbi8qKiBXaGV0aGVyIGFsbCByZXRyeSBhdHRlbXB0cyBoYXZlIGJlZW4gZXhoYXVzdGVkICovXG5leHBvcnQgY29uc3QgU3RlcFJldHJ5RXhoYXVzdGVkID0gU2VtYW50aWNDb252ZW50aW9uPGJvb2xlYW4+KFxuICAnc3RlcC5yZXRyeS5leGhhdXN0ZWQnXG4pO1xuXG4vKiogTnVtYmVyIG9mIHNlY29uZHMgdG8gd2FpdCBiZWZvcmUgbmV4dCByZXRyeSBhdHRlbXB0ICovXG5leHBvcnQgY29uc3QgU3RlcFJldHJ5VGltZW91dFNlY29uZHMgPSBTZW1hbnRpY0NvbnZlbnRpb248bnVtYmVyPihcbiAgJ3N0ZXAucmV0cnkudGltZW91dF9zZWNvbmRzJ1xuKTtcblxuLyoqIFdoZXRoZXIgdGhlIHN0ZXAgd2lsbCBiZSByZXRyaWVkIGFmdGVyIHRoaXMgZmFpbHVyZSAqL1xuZXhwb3J0IGNvbnN0IFN0ZXBSZXRyeVdpbGxSZXRyeSA9IFNlbWFudGljQ29udmVudGlvbjxib29sZWFuPihcbiAgJ3N0ZXAucmV0cnkud2lsbF9yZXRyeSdcbik7XG5cbi8vIFF1ZXVlL01lc3NhZ2luZyBhdHRyaWJ1dGVzIC0gU3RhbmRhcmQgT1RFTCBtZXNzYWdpbmcgY29udmVudGlvbnNcbi8vIFNlZTogaHR0cHM6Ly9vcGVudGVsZW1ldHJ5LmlvL2RvY3Mvc3BlY3Mvc2VtY29udi9tZXNzYWdpbmcvbWVzc2FnaW5nLXNwYW5zL1xuXG4vKiogTWVzc2FnaW5nIHN5c3RlbSBpZGVudGlmaWVyIChzdGFuZGFyZCBPVEVMOiBtZXNzYWdpbmcuc3lzdGVtKSAqL1xuZXhwb3J0IGNvbnN0IE1lc3NhZ2luZ1N5c3RlbSA9IFNlbWFudGljQ29udmVudGlvbjxzdHJpbmc+KCdtZXNzYWdpbmcuc3lzdGVtJyk7XG5cbi8qKiBEZXN0aW5hdGlvbiBuYW1lL3F1ZXVlIG5hbWUgKHN0YW5kYXJkIE9URUw6IG1lc3NhZ2luZy5kZXN0aW5hdGlvbi5uYW1lKSAqL1xuZXhwb3J0IGNvbnN0IE1lc3NhZ2luZ0Rlc3RpbmF0aW9uTmFtZSA9IFNlbWFudGljQ29udmVudGlvbjxzdHJpbmc+KFxuICAnbWVzc2FnaW5nLmRlc3RpbmF0aW9uLm5hbWUnXG4pO1xuXG4vKiogVGhlIG1lc3NhZ2UgaWQgYmVpbmcgaGFuZGxlZCAoc3RhbmRhcmQgT1RFTDogbWVzc2FnaW5nLm1lc3NhZ2UuaWQpICovXG5leHBvcnQgY29uc3QgTWVzc2FnaW5nTWVzc2FnZUlkID0gU2VtYW50aWNDb252ZW50aW9uPE1lc3NhZ2VJZD4oXG4gICdtZXNzYWdpbmcubWVzc2FnZS5pZCdcbik7XG5cbi8qKiBPcGVyYXRpb24gdHlwZSAoc3RhbmRhcmQgT1RFTDogbWVzc2FnaW5nLm9wZXJhdGlvbi50eXBlKSAqL1xuZXhwb3J0IGNvbnN0IE1lc3NhZ2luZ09wZXJhdGlvblR5cGUgPSBTZW1hbnRpY0NvbnZlbnRpb248XG4gICdwdWJsaXNoJyB8ICdyZWNlaXZlJyB8ICdwcm9jZXNzJ1xuPignbWVzc2FnaW5nLm9wZXJhdGlvbi50eXBlJyk7XG5cbi8qKiBUaW1lIHRha2VuIHRvIGVucXVldWUgdGhlIG1lc3NhZ2UgaW4gbWlsbGlzZWNvbmRzICh3b3JrZmxvdy1zcGVjaWZpYykgKi9cbmV4cG9ydCBjb25zdCBRdWV1ZU92ZXJoZWFkTXMgPSBTZW1hbnRpY0NvbnZlbnRpb248bnVtYmVyPihcbiAgJ3dvcmtmbG93LnF1ZXVlLm92ZXJoZWFkX21zJ1xuKTtcblxuLy8gRGVwbG95bWVudCBhdHRyaWJ1dGVzXG5cbi8qKiBVbmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIGRlcGxveW1lbnQgZW52aXJvbm1lbnQgKi9cbmV4cG9ydCBjb25zdCBEZXBsb3ltZW50SWQgPSBTZW1hbnRpY0NvbnZlbnRpb248c3RyaW5nPignZGVwbG95bWVudC5pZCcpO1xuXG4vLyBIb29rIGF0dHJpYnV0ZXNcblxuLyoqIFRva2VuIGlkZW50aWZ5aW5nIGEgc3BlY2lmaWMgaG9vayAqL1xuZXhwb3J0IGNvbnN0IEhvb2tUb2tlbiA9IFNlbWFudGljQ29udmVudGlvbjxzdHJpbmc+KCd3b3JrZmxvdy5ob29rLnRva2VuJyk7XG5cbi8qKiBVbmlxdWUgaWRlbnRpZmllciBmb3IgYSBob29rIGluc3RhbmNlICovXG5leHBvcnQgY29uc3QgSG9va0lkID0gU2VtYW50aWNDb252ZW50aW9uPHN0cmluZz4oJ3dvcmtmbG93Lmhvb2suaWQnKTtcblxuLyoqIFdoZXRoZXIgYSBob29rIHdhcyBmb3VuZCBieSBpdHMgdG9rZW4gKi9cbmV4cG9ydCBjb25zdCBIb29rRm91bmQgPSBTZW1hbnRpY0NvbnZlbnRpb248Ym9vbGVhbj4oJ3dvcmtmbG93Lmhvb2suZm91bmQnKTtcblxuLy8gV2ViaG9vayBhdHRyaWJ1dGVzXG5cbi8qKiBOdW1iZXIgb2Ygd2ViaG9vayBoYW5kbGVycyB0cmlnZ2VyZWQgKi9cbmV4cG9ydCBjb25zdCBXZWJob29rSGFuZGxlcnNUcmlnZ2VyZWQgPSBTZW1hbnRpY0NvbnZlbnRpb248bnVtYmVyPihcbiAgJ3dlYmhvb2suaGFuZGxlcnMudHJpZ2dlcmVkJ1xuKTtcblxuLy8gU3VzcGVuc2lvbiBhdHRyaWJ1dGVzXG5cbmV4cG9ydCBjb25zdCBXb3JrZmxvd1N1c3BlbnNpb25TdGF0ZSA9IFNlbWFudGljQ29udmVudGlvbjwnc3VzcGVuZGVkJz4oXG4gICd3b3JrZmxvdy5zdXNwZW5zaW9uLnN0YXRlJ1xuKTtcbmV4cG9ydCBjb25zdCBXb3JrZmxvd1N1c3BlbnNpb25Ib29rQ291bnQgPSBTZW1hbnRpY0NvbnZlbnRpb248bnVtYmVyPihcbiAgJ3dvcmtmbG93LnN1c3BlbnNpb24uaG9va19jb3VudCdcbik7XG5leHBvcnQgY29uc3QgV29ya2Zsb3dTdXNwZW5zaW9uU3RlcENvdW50ID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oXG4gICd3b3JrZmxvdy5zdXNwZW5zaW9uLnN0ZXBfY291bnQnXG4pO1xuZXhwb3J0IGNvbnN0IFdvcmtmbG93U3VzcGVuc2lvbldhaXRDb3VudCA9IFNlbWFudGljQ29udmVudGlvbjxudW1iZXI+KFxuICAnd29ya2Zsb3cuc3VzcGVuc2lvbi53YWl0X2NvdW50J1xuKTtcblxuLy8gV29ybGQvU3RvcmFnZSBhdHRyaWJ1dGVzIC0gU3RhbmRhcmQgT1RFTCBIVFRQIGNvbnZlbnRpb25zXG4vLyBTZWU6IGh0dHBzOi8vb3BlbnRlbGVtZXRyeS5pby9kb2NzL3NwZWNzL3NlbWNvbnYvaHR0cC9odHRwLXNwYW5zL1xuXG4vKiogSFRUUCByZXF1ZXN0IG1ldGhvZCAoc3RhbmRhcmQgT1RFTDogaHR0cC5yZXF1ZXN0Lm1ldGhvZCkgKi9cbmV4cG9ydCBjb25zdCBIdHRwUmVxdWVzdE1ldGhvZCA9IFNlbWFudGljQ29udmVudGlvbjxzdHJpbmc+KFxuICAnaHR0cC5yZXF1ZXN0Lm1ldGhvZCdcbik7XG5cbi8qKiBSb3V0ZSBwYXR0ZXJuIGZvciB0aGUgcmVxdWVzdCAoc3RhbmRhcmQgT1RFTDogaHR0cC5yb3V0ZSkgKi9cbmV4cG9ydCBjb25zdCBIdHRwUm91dGUgPSBTZW1hbnRpY0NvbnZlbnRpb248c3RyaW5nPignaHR0cC5yb3V0ZScpO1xuXG4vKiogRnVsbCBVUkwgb2YgdGhlIHJlcXVlc3QgKHN0YW5kYXJkIE9URUw6IHVybC5mdWxsKSAqL1xuZXhwb3J0IGNvbnN0IFVybEZ1bGwgPSBTZW1hbnRpY0NvbnZlbnRpb248c3RyaW5nPigndXJsLmZ1bGwnKTtcblxuLyoqIFNlcnZlciBob3N0bmFtZSAoc3RhbmRhcmQgT1RFTDogc2VydmVyLmFkZHJlc3MpICovXG5leHBvcnQgY29uc3QgU2VydmVyQWRkcmVzcyA9IFNlbWFudGljQ29udmVudGlvbjxzdHJpbmc+KCdzZXJ2ZXIuYWRkcmVzcycpO1xuXG4vKiogU2VydmVyIHBvcnQgKHN0YW5kYXJkIE9URUw6IHNlcnZlci5wb3J0KSAqL1xuZXhwb3J0IGNvbnN0IFNlcnZlclBvcnQgPSBTZW1hbnRpY0NvbnZlbnRpb248bnVtYmVyPignc2VydmVyLnBvcnQnKTtcblxuLyoqIEhUVFAgcmVzcG9uc2Ugc3RhdHVzIGNvZGUgKHN0YW5kYXJkIE9URUw6IGh0dHAucmVzcG9uc2Uuc3RhdHVzX2NvZGUpICovXG5leHBvcnQgY29uc3QgSHR0cFJlc3BvbnNlU3RhdHVzQ29kZSA9IFNlbWFudGljQ29udmVudGlvbjxudW1iZXI+KFxuICAnaHR0cC5yZXNwb25zZS5zdGF0dXNfY29kZSdcbik7XG5cbi8qKiBFcnJvciB0eXBlIHdoZW4gcmVxdWVzdCBmYWlscyAoc3RhbmRhcmQgT1RFTDogZXJyb3IudHlwZSkgKi9cbmV4cG9ydCBjb25zdCBFcnJvclR5cGUgPSBTZW1hbnRpY0NvbnZlbnRpb248c3RyaW5nPignZXJyb3IudHlwZScpO1xuXG4vLyBXb3JsZC1zcGVjaWZpYyBjdXN0b20gYXR0cmlidXRlcyAoZm9yIHdvcmtmbG93LXNwZWNpZmljIGNvbnRleHQpXG5cbi8qKiBGb3JtYXQgdXNlZCBmb3IgcGFyc2luZyByZXNwb25zZSBib2R5IChjYm9yIG9yIGpzb24pICovXG5leHBvcnQgY29uc3QgV29ybGRQYXJzZUZvcm1hdCA9IFNlbWFudGljQ29udmVudGlvbjwnY2JvcicgfCAnanNvbic+KFxuICAnd29ya2Zsb3cud29ybGQucGFyc2UuZm9ybWF0J1xuKTtcblxuLy8gRXZlbnQgbG9hZGluZyBhdHRyaWJ1dGVzXG5cbi8qKiBOdW1iZXIgb2YgcGFnaW5hdGlvbiBwYWdlcyBsb2FkZWQgd2hlbiBmZXRjaGluZyB3b3JrZmxvdyBldmVudHMgKi9cbmV4cG9ydCBjb25zdCBXb3JrZmxvd0V2ZW50c1BhZ2VzTG9hZGVkID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oXG4gICd3b3JrZmxvdy5ldmVudHMucGFnZXNfbG9hZGVkJ1xuKTtcblxuLy8gUXVldWUgdGltaW5nIGJyZWFrZG93biBhdHRyaWJ1dGVzICh3b3JrZmxvdy1zcGVjaWZpYylcblxuLyoqIFRpbWUgc3BlbnQgZGVzZXJpYWxpemluZyB0aGUgcXVldWUgbWVzc2FnZSBpbiBtaWxsaXNlY29uZHMgKi9cbmV4cG9ydCBjb25zdCBRdWV1ZURlc2VyaWFsaXplVGltZU1zID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oXG4gICd3b3JrZmxvdy5xdWV1ZS5kZXNlcmlhbGl6ZV90aW1lX21zJ1xuKTtcblxuLyoqIFRpbWUgc3BlbnQgZXhlY3V0aW5nIHRoZSBoYW5kbGVyIGxvZ2ljIGluIG1pbGxpc2Vjb25kcyAqL1xuZXhwb3J0IGNvbnN0IFF1ZXVlRXhlY3V0aW9uVGltZU1zID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oXG4gICd3b3JrZmxvdy5xdWV1ZS5leGVjdXRpb25fdGltZV9tcydcbik7XG5cbi8qKiBUaW1lIHNwZW50IHNlcmlhbGl6aW5nIHRoZSByZXNwb25zZSBpbiBtaWxsaXNlY29uZHMgKi9cbmV4cG9ydCBjb25zdCBRdWV1ZVNlcmlhbGl6ZVRpbWVNcyA9IFNlbWFudGljQ29udmVudGlvbjxudW1iZXI+KFxuICAnd29ya2Zsb3cucXVldWUuc2VyaWFsaXplX3RpbWVfbXMnXG4pO1xuXG4vLyBQYXlsb2FkIGNvbXByZXNzaW9uIGF0dHJpYnV0ZXMgKGd6aXAgY29kZWMsIHNwZWNWZXJzaW9uID49IDUpXG4vL1xuLy8gU2l6ZXMgYXJlIG1lYXN1cmVkIGF0IHRoZSBjb21wcmVzc2lvbiBib3VuZGFyeTogYmVmb3JlIGVuY3J5cHRpb24gb24gdGhlXG4vLyB3cml0ZSBwYXRoIGFuZCBhZnRlciBkZWNyeXB0aW9uIG9uIHRoZSByZWFkIHBhdGguIFRoZXkgdGhlcmVmb3JlIHJlZmxlY3Rcbi8vIGNvbXByZXNzaW9uJ3MgZWZmZWN0LCBub3QgdGhlIGF0LXJlc3Qgc2l6ZSAod2hpY2ggYWxzbyBpbmNsdWRlcyB0aGVcbi8vIH4yOC1ieXRlIGBlbmNyYCBlbnZlbG9wZSBhbmQsIG9uIHNvbWUgYmFja2VuZHMsIGJhc2U2NCBleHBhbnNpb24pLlxuXG4vKiogV2hldGhlciB0aGlzIHNlcmlhbGl6ZS9kZXNlcmlhbGl6ZSB3YXMgYSB3cml0ZSBvciByZWFkLiAqL1xuZXhwb3J0IGNvbnN0IFNlcmlhbGl6YXRpb25PcGVyYXRpb24gPSBTZW1hbnRpY0NvbnZlbnRpb248XG4gICdzZXJpYWxpemUnIHwgJ2Rlc2VyaWFsaXplJ1xuPignd29ya2Zsb3cuc2VyaWFsaXphdGlvbi5vcGVyYXRpb24nKTtcblxuLyoqIFdoZXRoZXIgYSBjb21wcmVzc2lvbiBjb2RlYyB3YXMgYXBwbGllZCAod3JpdGUpIC8gcHJlc2VudCAocmVhZCkuICovXG5leHBvcnQgY29uc3QgU2VyaWFsaXphdGlvbkNvbXByZXNzZWQgPSBTZW1hbnRpY0NvbnZlbnRpb248Ym9vbGVhbj4oXG4gICd3b3JrZmxvdy5zZXJpYWxpemF0aW9uLmNvbXByZXNzZWQnXG4pO1xuXG4vKiogV2hpY2ggY29tcHJlc3Npb24gY29kZWMgYXBwbGllZCAvIHdhcyBwcmVzZW50IChgenN0ZGAsIGBnemlwYCwgb3IgYG5vbmVgKS4gKi9cbmV4cG9ydCBjb25zdCBTZXJpYWxpemF0aW9uQ29kZWMgPSBTZW1hbnRpY0NvbnZlbnRpb248J3pzdGQnIHwgJ2d6aXAnIHwgJ25vbmUnPihcbiAgJ3dvcmtmbG93LnNlcmlhbGl6YXRpb24uY29kZWMnXG4pO1xuXG4vKiogTG9naWNhbCAodW5jb21wcmVzc2VkLCBkZXZhbHVlLXByZWZpeGVkKSBwYXlsb2FkIHNpemUgaW4gYnl0ZXMuICovXG5leHBvcnQgY29uc3QgU2VyaWFsaXphdGlvblVuY29tcHJlc3NlZEJ5dGVzID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oXG4gICd3b3JrZmxvdy5zZXJpYWxpemF0aW9uLnVuY29tcHJlc3NlZF9ieXRlcydcbik7XG5cbi8qKiBTdG9yZWQgKHBvc3QtY29tcHJlc3Npb24sIHByZS1lbmNyeXB0aW9uKSBwYXlsb2FkIHNpemUgaW4gYnl0ZXMuICovXG5leHBvcnQgY29uc3QgU2VyaWFsaXphdGlvblN0b3JlZEJ5dGVzID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oXG4gICd3b3JrZmxvdy5zZXJpYWxpemF0aW9uLnN0b3JlZF9ieXRlcydcbik7XG5cbi8qKiBGcmFjdGlvbiBvZiBieXRlcyBzYXZlZCBieSBjb21wcmVzc2lvbiAoMC4uMSk7IHNldCBvbmx5IHdoZW4gY29tcHJlc3NlZC4gKi9cbmV4cG9ydCBjb25zdCBTZXJpYWxpemF0aW9uQ29tcHJlc3Npb25SYXRpbyA9IFNlbWFudGljQ29udmVudGlvbjxudW1iZXI+KFxuICAnd29ya2Zsb3cuc2VyaWFsaXphdGlvbi5jb21wcmVzc2lvbl9yYXRpbydcbik7XG5cbi8vIFJQQy9QZWVyIFNlcnZpY2UgYXR0cmlidXRlcyAtIEZvciBzZXJ2aWNlIG1hcHMgYW5kIGRlcGVuZGVuY3kgdHJhY2tpbmdcbi8vIFNlZTogaHR0cHM6Ly9vcGVudGVsZW1ldHJ5LmlvL2RvY3Mvc3BlY3Mvc2VtY29udi9ycGMvcnBjLXNwYW5zL1xuXG4vKiogVGhlIHJlbW90ZSBzZXJ2aWNlIG5hbWUgZm9yIERhdGFkb2cgc2VydmljZSBtYXBzIChEYXRhZG9nLXNwZWNpZmljOiBwZWVyLnNlcnZpY2UpICovXG5leHBvcnQgY29uc3QgUGVlclNlcnZpY2UgPSBTZW1hbnRpY0NvbnZlbnRpb248c3RyaW5nPigncGVlci5zZXJ2aWNlJyk7XG5cbi8qKiBSUEMgc3lzdGVtIGlkZW50aWZpZXIgKHN0YW5kYXJkIE9URUw6IHJwYy5zeXN0ZW0pICovXG5leHBvcnQgY29uc3QgUnBjU3lzdGVtID0gU2VtYW50aWNDb252ZW50aW9uPHN0cmluZz4oJ3JwYy5zeXN0ZW0nKTtcblxuLyoqIFJQQyBzZXJ2aWNlIG5hbWUgKHN0YW5kYXJkIE9URUw6IHJwYy5zZXJ2aWNlKSAqL1xuZXhwb3J0IGNvbnN0IFJwY1NlcnZpY2UgPSBTZW1hbnRpY0NvbnZlbnRpb248c3RyaW5nPigncnBjLnNlcnZpY2UnKTtcblxuLyoqIFJQQyBtZXRob2QgbmFtZSAoc3RhbmRhcmQgT1RFTDogcnBjLm1ldGhvZCkgKi9cbmV4cG9ydCBjb25zdCBScGNNZXRob2QgPSBTZW1hbnRpY0NvbnZlbnRpb248c3RyaW5nPigncnBjLm1ldGhvZCcpO1xuXG4vLyBFcnJvciBhdHRyaWJ1dGVzIC0gU3RhbmRhcmQgT1RFTCBlcnJvciBjb252ZW50aW9uc1xuLy8gU2VlOiBodHRwczovL29wZW50ZWxlbWV0cnkuaW8vZG9jcy9zcGVjcy9zZW1jb252L2V4Y2VwdGlvbnMvZXhjZXB0aW9ucy1zcGFucy9cblxuLyoqIFdoZXRoZXIgdGhlIGVycm9yIGlzIHJldHJ5YWJsZSAod29ya2Zsb3ctc3BlY2lmaWMpICovXG5leHBvcnQgY29uc3QgRXJyb3JSZXRyeWFibGUgPSBTZW1hbnRpY0NvbnZlbnRpb248Ym9vbGVhbj4oJ2Vycm9yLnJldHJ5YWJsZScpO1xuXG4vKiogRXJyb3IgY2F0ZWdvcnkgKHdvcmtmbG93LXNwZWNpZmljOiBmYXRhbCwgcmV0cnlhYmxlLCB0cmFuc2llbnQpICovXG5leHBvcnQgY29uc3QgRXJyb3JDYXRlZ29yeSA9IFNlbWFudGljQ29udmVudGlvbjxcbiAgJ2ZhdGFsJyB8ICdyZXRyeWFibGUnIHwgJ3RyYW5zaWVudCdcbj4oJ2Vycm9yLmNhdGVnb3J5Jyk7XG4iXX0=
|
|
270
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VtYW50aWMtY29udmVudGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVsZW1ldHJ5L3NlbWFudGljLWNvbnZlbnRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUNHO0FBSUg7Ozs7R0FJRztBQUNILFNBQVMsa0JBQWtCLENBQUksR0FBRyxLQUFlO0lBQy9DLE9BQU8sQ0FBQyxLQUFRLEVBQUUsRUFBRSxDQUNsQixNQUFNLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBVSxDQUFDLENBQUMsQ0FBQztBQUNwRSxDQUFDO0FBRUQsc0JBQXNCO0FBRXRCLDhDQUE4QztBQUM5QyxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsa0JBQWtCLENBQVMsZUFBZSxDQUFDLENBQUM7QUFFeEUsb0RBQW9EO0FBQ3BELE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLGtCQUFrQixDQUVqRCxvQkFBb0IsQ0FBQyxDQUFDO0FBRXhCLDZEQUE2RDtBQUM3RCxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsa0JBQWtCLENBQVMsaUJBQWlCLENBQUMsQ0FBQztBQUUzRSx5Q0FBeUM7QUFDekMsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsa0JBQWtCLENBRWpELHFCQUFxQixDQUFDLENBQUM7QUFFekIscUVBQXFFO0FBQ3JFLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLGtCQUFrQixDQUNqRCxxQkFBcUIsQ0FDdEIsQ0FBQztBQUVGLDJEQUEyRDtBQUMzRCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxrQkFBa0IsQ0FDbkQsdUJBQXVCLENBQ3hCLENBQUM7QUFFRixpREFBaUQ7QUFDakQsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsa0JBQWtC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LE1BQU0sNkJBQTZCLEdBQUcsa0JBQWtCLENBQzdELDBDQUEwQyxDQUMzQyxDQUFDO0FBRUYseUVBQXlFO0FBQ3pFLGtFQUFrRTtBQUVsRSx3RkFBd0Y7QUFDeEYsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLGtCQUFrQixDQUFTLGNBQWMsQ0FBQyxDQUFDO0FBRXRFLHdEQUF3RDtBQUN4RCxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUcsa0JBQWtCLENBQVMsWUFBWSxDQUFDLENBQUM7QUFFbEUsb0RBQW9EO0FBQ3BELE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxrQkFBa0IsQ0FBUyxhQUFhLENBQUMsQ0FBQztBQUVwRSxrREFBa0Q7QUFDbEQsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLGtCQUFrQixDQUFTLFlBQVksQ0FBQyxDQUFDO0FBRWxFLHFEQUFxRDtBQUNyRCxnRkFBZ0Y7QUFFaEYseURBQXlEO0FBQ3pELE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxrQkFBa0IsQ0FBVSxpQkFBaUIsQ0FBQyxDQUFDO0FBRTdFLHNFQUFzRTtBQUN0RSxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsa0JBQWtCLENBRTdDLGdCQUFnQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIE9wZW5UZWxlbWV0cnkgc2VtYW50aWMgY29udmVudGlvbnMgZm9yIFZlcmNlbCBXb3JrZmxvdyB0ZWxlbWV0cnkuXG4gKlxuICogVGhpcyBtb2R1bGUgcHJvdmlkZXMgc3RhbmRhcmRpemVkIHRlbGVtZXRyeSBhdHRyaWJ1dGVzIGZvbGxvd2luZyBPcGVuVGVsZW1ldHJ5IHNlbWFudGljIGNvbnZlbnRpb25zXG4gKiBmb3IgaW5zdHJ1bWVudGluZyB3b3JrZmxvdyBleGVjdXRpb24sIHN0ZXAgcHJvY2Vzc2luZywgYW5kIHJlbGF0ZWQgb3BlcmF0aW9ucy4gRWFjaCBleHBvcnRlZCBmdW5jdGlvblxuICogY3JlYXRlcyBhIHByb3Blcmx5IGZvcm1hdHRlZCBhdHRyaWJ1dGUgb2JqZWN0IHRoYXQgY2FuIGJlIHVzZWQgd2l0aCBPcGVuVGVsZW1ldHJ5IHNwYW5zLlxuICpcbiAqIFRoZSBzZW1hbnRpYyBjb252ZW50aW9ucyBhcmUgb3JnYW5pemVkIGludG8gc2V2ZXJhbCBjYXRlZ29yaWVzOlxuICogLSAqKldvcmtmbG93IGF0dHJpYnV0ZXMqKjogVHJhY2sgd29ya2Zsb3cgbGlmZWN5Y2xlLCBzdGF0dXMsIGFuZCBtZXRhZGF0YVxuICogLSAqKlN0ZXAgYXR0cmlidXRlcyoqOiBNb25pdG9yIGluZGl2aWR1YWwgc3RlcCBleGVjdXRpb24sIHJldHJpZXMsIGFuZCByZXN1bHRzXG4gKiAtICoqUXVldWUgYXR0cmlidXRlcyoqOiBJbnN0cnVtZW50IG1lc3NhZ2UgcXVldWUgb3BlcmF0aW9uc1xuICogLSAqKkRlcGxveW1lbnQgYXR0cmlidXRlcyoqOiBDYXB0dXJlIGRlcGxveW1lbnQgZW52aXJvbm1lbnQgaW5mb3JtYXRpb25cbiAqXG4gKiBBbGwgYXR0cmlidXRlIGZ1bmN0aW9ucyBhcmUgdHlwZS1zYWZlIGFuZCBsZXZlcmFnZSBleGlzdGluZyBiYWNrZW5kIHR5cGVzIHRvIGVuc3VyZVxuICogY29uc2lzdGVuY3kgYmV0d2VlbiB0ZWxlbWV0cnkgZGF0YSBhbmQgYWN0dWFsIHN5c3RlbSBzdGF0ZS5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogaW1wb3J0ICogYXMgQXR0cmlidXRlIGZyb20gJy4vdGVsZW1ldHJ5L3NlbWFudGljLWNvbnZlbnRpb25zLmpzJztcbiAqXG4gKiAvLyBTZXQgd29ya2Zsb3cgYXR0cmlidXRlcyBvbiBhIHNwYW5cbiAqIHNwYW4uc2V0QXR0cmlidXRlcyh7XG4gKiAgIC4uLkF0dHJpYnV0ZS5Xb3JrZmxvd05hbWUoJ215LXdvcmtmbG93JyksXG4gKiAgIC4uLkF0dHJpYnV0ZS5Xb3JrZmxvd09wZXJhdGlvbignc3RhcnQnKSxcbiAqICAgLi4uQXR0cmlidXRlLldvcmtmbG93UnVuU3RhdHVzKCdydW5uaW5nJyksXG4gKiB9KTtcbiAqXG4gKiAvLyBTZXQgc3RlcCBhdHRyaWJ1dGVzXG4gKiBzcGFuLnNldEF0dHJpYnV0ZXMoe1xuICogICAuLi5BdHRyaWJ1dGUuU3RlcE5hbWUoJ3Byb2Nlc3MtZGF0YScpLFxuICogICAuLi5BdHRyaWJ1dGUuU3RlcFN0YXR1cygnY29tcGxldGVkJyksXG4gKiAgIC4uLkF0dHJpYnV0ZS5TdGVwQXR0ZW1wdCgxKSxcbiAqIH0pO1xuICogYGBgXG4gKlxuICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9vcGVudGVsZW1ldHJ5LmlvL2RvY3Mvc3BlY3Mvc2VtY29udi99IE9wZW5UZWxlbWV0cnkgU2VtYW50aWMgQ29udmVudGlvbnNcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvblxuICovXG5cbmltcG9ydCB0eXBlIHsgTWVzc2FnZUlkLCBTdGVwLCBXb3JrZmxvd1J1biB9IGZyb20gJ0B3b3JrZmxvdy93b3JsZCc7XG5cbi8qKlxuICogQ3JlYXRlcyBhIHNlbWFudGljIGNvbnZlbnRpb24gZnVuY3Rpb24gdGhhdCByZXR1cm5zIGFuIGF0dHJpYnV0ZSBvYmplY3QuXG4gKiBAcGFyYW0gbmFtZSAtIFRoZSBhdHRyaWJ1dGUgbmFtZSBmb2xsb3dpbmcgT3BlblRlbGVtZXRyeSBzZW1hbnRpYyBjb252ZW50aW9uc1xuICogQHJldHVybnMgQSBmdW5jdGlvbiB0aGF0IHRha2VzIGEgdmFsdWUgYW5kIHJldHVybnMgYW4gYXR0cmlidXRlIG9iamVjdFxuICovXG5mdW5jdGlvbiBTZW1hbnRpY0NvbnZlbnRpb248VD4oLi4ubmFtZXM6IHN0cmluZ1tdKSB7XG4gIHJldHVybiAodmFsdWU6IFQpID0+XG4gICAgT2JqZWN0LmZyb21FbnRyaWVzKG5hbWVzLm1hcCgobmFtZSkgPT4gW25hbWUsIHZhbHVlXSBhcyBjb25zdCkpO1xufVxuXG4vLyBXb3JrZmxvdyBhdHRyaWJ1dGVzXG5cbi8qKiBUaGUgbmFtZSBvZiB0aGUgd29ya2Zsb3cgYmVpbmcgZXhlY3V0ZWQgKi9cbmV4cG9ydCBjb25zdCBXb3JrZmxvd05hbWUgPSBTZW1hbnRpY0NvbnZlbnRpb248c3RyaW5nPignd29ya2Zsb3cubmFtZScpO1xuXG4vKiogVGhlIG9wZXJhdGlvbiBiZWluZyBwZXJmb3JtZWQgb24gdGhlIHdvcmtmbG93ICovXG5leHBvcnQgY29uc3QgV29ya2Zsb3dPcGVyYXRpb24gPSBTZW1hbnRpY0NvbnZlbnRpb248XG4gICdzdGFydCcgfCAnZXhlY3V0ZScgfCAnZXhlY3V0ZV92MicgfCAncnVuJ1xuPignd29ya2Zsb3cub3BlcmF0aW9uJyk7XG5cbi8qKiBVbmlxdWUgaWRlbnRpZmllciBmb3IgYSBzcGVjaWZpYyB3b3JrZmxvdyBydW4gaW5zdGFuY2UgKi9cbmV4cG9ydCBjb25zdCBXb3JrZmxvd1J1bklkID0gU2VtYW50aWNDb252ZW50aW9uPHN0cmluZz4oJ3dvcmtmbG93LnJ1bi5pZCcpO1xuXG4vKiogQ3VycmVudCBzdGF0dXMgb2YgdGhlIHdvcmtmbG93IHJ1biAqL1xuZXhwb3J0IGNvbnN0IFdvcmtmbG93UnVuU3RhdHVzID0gU2VtYW50aWNDb252ZW50aW9uPFxuICBXb3JrZmxvd1J1blsnc3RhdHVzJ10gfCAnd29ya2Zsb3dfc3VzcGVuZGVkJ1xuPignd29ya2Zsb3cucnVuLnN0YXR1cycpO1xuXG4vKiogVGltZXN0YW1wIHdoZW4gdGhlIHdvcmtmbG93IGV4ZWN1dGlvbiBzdGFydGVkIChVbml4IHRpbWVzdGFtcCkgKi9cbmV4cG9ydCBjb25zdCBXb3JrZmxvd1N0YXJ0ZWRBdCA9IFNlbWFudGljQ29udmVudGlvbjxudW1iZXI+KFxuICAnd29ya2Zsb3cuc3RhcnRlZF9hdCdcbik7XG5cbi8qKiBOdW1iZXIgb2YgZXZlbnRzIHByb2Nlc3NlZCBkdXJpbmcgd29ya2Zsb3cgZXhlY3V0aW9uICovXG5leHBvcnQgY29uc3QgV29ya2Zsb3dFdmVudHNDb3VudCA9IFNlbWFudGljQ29udmVudGlvbjxudW1iZXI+KFxuICAnd29ya2Zsb3cuZXZlbnRzLmNvdW50J1xuKTtcblxuLyoqIE51bWJlciBvZiBhcmd1bWVudHMgcGFzc2VkIHRvIHRoZSB3b3JrZmxvdyAqL1xuZXhwb3J0IGNvbnN0IFdvcmtmbG93QXJndW1lbnRzQ291bnQgPSBTZW1hbnRpY0NvbnZlbnRpb248bnVtYmVyPihcbiAgJ3dvcmtmbG93LmFyZ3VtZW50cy5jb3VudCdcbik7XG5cbi8qKiBUeXBlIG9mIHRoZSB3b3JrZmxvdyByZXN1bHQgKi9cbmV4cG9ydCBjb25zdCBXb3JrZmxvd1Jlc3VsdFR5cGUgPSBTZW1hbnRpY0NvbnZlbnRpb248c3RyaW5nPihcbiAgJ3dvcmtmbG93LnJlc3VsdC50eXBlJ1xuKTtcblxuLyoqIFdoZXRoZXIgdHJhY2UgY29udGV4dCB3YXMgcHJvcGFnYXRlZCB0byB0aGlzIHdvcmtmbG93IGV4ZWN1dGlvbiAqL1xuZXhwb3J0IGNvbnN0IFdvcmtmbG93VHJhY2VQcm9wYWdhdGVkID0gU2VtYW50aWNDb252ZW50aW9uPGJvb2xlYW4+KFxuICAnd29ya2Zsb3cudHJhY2UucHJvcGFnYXRlZCdcbik7XG5cbi8qKiBBY3RpdmUgdHJhY2UtY29ycmVsYXRpb24gbW9kZSBmb3IgdGhpcyBpbnZvY2F0aW9uIChsaW5rZWQgb3IgY29udGludW91cykgKi9cbmV4cG9ydCBjb25zdCBXb3JrZmxvd1RyYWNlTW9kZSA9IFNlbWFudGljQ29udmVudGlvbjwnbGlua2VkJyB8ICdjb250aW51b3VzJz4oXG4gICd3b3JrZmxvdy50cmFjZS5tb2RlJ1xuKTtcblxuLyoqIFdoZXRoZXIgdGhpcyB3b3JrZmxvdyBpbnZvY2F0aW9uIGlzIHVzaW5nIHRoZSB0dXJibyBmaXJzdC1kZWxpdmVyeSBwYXRoICovXG5leHBvcnQgY29uc3QgV29ya2Zsb3dUdXJibyA9IFNlbWFudGljQ29udmVudGlvbjxib29sZWFuPignd29ya2Zsb3cudHVyYm8nKTtcblxuLyoqIE5hbWUgb2YgdGhlIGVycm9yIHRoYXQgY2F1c2VkIHdvcmtmbG93IGZhaWx1cmUgKi9cbmV4cG9ydCBjb25zdCBXb3JrZmxvd0Vycm9yTmFtZSA9IFNlbWFudGljQ29udmVudGlvbjxzdHJpbmc+KFxuICAnd29ya2Zsb3cuZXJyb3IubmFtZSdcbik7XG5cbi8qKiBFcnJvciBtZXNzYWdlIHdoZW4gd29ya2Zsb3cgZmFpbHMgKi9cbmV4cG9ydCBjb25zdCBXb3JrZmxvd0Vycm9yTWVzc2FnZSA9IFNlbWFudGljQ29udmVudGlvbjxzdHJpbmc+KFxuICAnd29ya2Zsb3cuZXJyb3IubWVzc2FnZSdcbik7XG5cbi8qKiBFcnJvciBjbGFzc2lmaWNhdGlvbiBjb2RlIChVU0VSX0VSUk9SLCBSVU5USU1FX0VSUk9SLCBldGMuKSAqL1xuZXhwb3J0IGNvbnN0IFdvcmtmbG93RXJyb3JDb2RlID0gU2VtYW50aWNDb252ZW50aW9uPHN0cmluZz4oXG4gICd3b3JrZmxvdy5lcnJvci5jb2RlJ1xuKTtcblxuLyoqIE51bWJlciBvZiBzdGVwcyBjcmVhdGVkIGR1cmluZyB3b3JrZmxvdyBleGVjdXRpb24gKi9cbmV4cG9ydCBjb25zdCBXb3JrZmxvd1N0ZXBzQ3JlYXRlZCA9IFNlbWFudGljQ29udmVudGlvbjxudW1iZXI+KFxuICAnd29ya2Zsb3cuc3RlcHMuY3JlYXRlZCdcbik7XG5cbi8qKiBOdW1iZXIgb2YgaG9va3MgY3JlYXRlZCBkdXJpbmcgd29ya2Zsb3cgZXhlY3V0aW9uICovXG5leHBvcnQgY29uc3QgV29ya2Zsb3dIb29rc0NyZWF0ZWQgPSBTZW1hbnRpY0NvbnZlbnRpb248bnVtYmVyPihcbiAgJ3dvcmtmbG93Lmhvb2tzLmNyZWF0ZWQnXG4pO1xuXG4vKiogTnVtYmVyIG9mIHdhaXRzIGNyZWF0ZWQgZHVyaW5nIHdvcmtmbG93IGV4ZWN1dGlvbiAqL1xuZXhwb3J0IGNvbnN0IFdvcmtmbG93V2FpdHNDcmVhdGVkID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oXG4gICd3b3JrZmxvdy53YWl0cy5jcmVhdGVkJ1xuKTtcblxuLyoqXG4gKiBOdW1iZXIgb2YgaW5saW5lLW93bmVkIHN0ZXBzIHRoaXMgaW52b2NhdGlvbiByZS1leGVjdXRlZCBiZWNhdXNlIGl0IGlzIGFcbiAqIHJlZGVsaXZlcnkgb2YgdGhlaXIgb3duaW5nIHF1ZXVlIG1lc3NhZ2UgKGNyYXNoIHJlY292ZXJ5IGZvciBpbmxpbmVcbiAqIHN0ZXBzIOKAlCBzZWUgdGhlIGlubGluZSBzdGVwIG93bmVyc2hpcCBjaGFuZ2Vsb2csIHdvcmtmbG93IzI3ODApLlxuICovXG5leHBvcnQgY29uc3QgV29ya2Zsb3dPd25lZFJlY292ZXJ5U3RlcHMgPSBTZW1hbnRpY0NvbnZlbnRpb248bnVtYmVyPihcbiAgJ3dvcmtmbG93LmlubGluZV9vd25lcnNoaXAub3duZWRfcmVjb3Zlcnlfc3RlcHMnXG4pO1xuXG4vKipcbiAqIE51bWJlciBvZiBwZW5kaW5nIHN0ZXBzIGZvciB3aGljaCB0aGlzIHJlcGxheSBzdXBwcmVzc2VkIHRoZSBpbW1lZGlhdGVcbiAqIHJlcXVldWUgKGFub3RoZXIgaW52b2NhdGlvbiBpbmxpbmUtb3ducyB0aGVtIHVuZGVyIGEgbGl2ZSBsZWFzZSkgYW5kXG4gKiBlbnN1cmVkIGEgZGVsYXllZCBiYWNrc3RvcCB3YWtlIGluc3RlYWQuXG4gKi9cbmV4cG9ydCBjb25zdCBXb3JrZmxvd0JhY2tzdG9wV2FrZXNBcm1lZCA9IFNlbWFudGljQ29udmVudGlvbjxudW1iZXI+KFxuICAnd29ya2Zsb3cuaW5saW5lX293bmVyc2hpcC5iYWNrc3RvcF93YWtlc19hcm1lZCdcbik7XG5cbi8vIFJvdXRlIGF0dHJpYnV0ZXNcblxuLyoqIFRoZSB3b3JrZmxvdyBydW50aW1lIHJvdXRlIGJlaW5nIGhhbmRsZWQgKi9cbmV4cG9ydCBjb25zdCBXb3JrZmxvd1JvdXRlVHlwZSA9IFNlbWFudGljQ29udmVudGlvbjwnZmxvdycgfCAnc3RlcCc+KFxuICAnd29ya2Zsb3cucm91dGUudHlwZSdcbik7XG5cbi8qKiBXaGV0aGVyIHRoaXMgcm91dGUgaW52b2NhdGlvbiByZXVzZWQgYW4gYWxyZWFkeS1jcmVhdGVkIHJlcXVlc3QgaGFuZGxlciAqL1xuZXhwb3J0IGNvbnN0IFdvcmtmbG93Um91dGVIYW5kbGVyQ2FjaGVkID0gU2VtYW50aWNDb252ZW50aW9uPGJvb2xlYW4+KFxuICAnd29ya2Zsb3cucm91dGUuaGFuZGxlcl9jYWNoZWQnXG4pO1xuXG4vKiogTnVtYmVyIG9mIHRpbWVzIHRoaXMgaW4tbWVtb3J5IHJvdXRlIGhhbmRsZXIgaGFzIGJlZW4gaW52b2tlZCAqL1xuZXhwb3J0IGNvbnN0IFdvcmtmbG93Um91dGVJbnZvY2F0aW9uQ291bnQgPSBTZW1hbnRpY0NvbnZlbnRpb248bnVtYmVyPihcbiAgJ3dvcmtmbG93LnJvdXRlLmludm9jYXRpb25fY291bnQnXG4pO1xuXG4vKiogVGltZSBzaW5jZSB0aGlzIHJvdXRlIGVudHJ5cG9pbnQgd2FzIGNvbnN0cnVjdGVkLCBpbiBtaWxsaXNlY29uZHMgKi9cbmV4cG9ydCBjb25zdCBXb3JrZmxvd1JvdXRlRW50cnlwb2ludEFnZU1zID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oXG4gICd3b3JrZmxvdy5yb3V0ZS5lbnRyeXBvaW50X2FnZV9tcydcbik7XG5cbi8qKiBUaW1lIHNwZW50IGV2YWx1YXRpbmcgdGhlIGdlbmVyYXRlZCByb3V0ZSBtb2R1bGUgYm9keSBiZWZvcmUgY3JlYXRpbmcgdGhlIGVudHJ5cG9pbnQgKi9cbmV4cG9ydCBjb25zdCBXb3JrZmxvd1JvdXRlTW9kdWxlQm9keUluaXRNcyA9IFNlbWFudGljQ29udmVudGlvbjxudW1iZXI+KFxuICAnd29ya2Zsb3cucm91dGUubW9kdWxlX2JvZHlfaW5pdF9tcydcbik7XG5cbi8vIFN0ZXAgYXR0cmlidXRlc1xuXG4vKiogTmFtZSBvZiB0aGUgc3RlcCBmdW5jdGlvbiBiZWluZyBleGVjdXRlZCAqL1xuZXhwb3J0IGNvbnN0IFN0ZXBOYW1lID0gU2VtYW50aWNDb252ZW50aW9uPHN0cmluZz4oJ3N0ZXAubmFtZScpO1xuXG4vKiogVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBzdGVwIGluc3RhbmNlICovXG5leHBvcnQgY29uc3QgU3RlcElkID0gU2VtYW50aWNDb252ZW50aW9uPHN0cmluZz4oJ3N0ZXAuaWQnKTtcblxuLyoqIEN1cnJlbnQgYXR0ZW1wdCBudW1iZXIgZm9yIHN0ZXAgZXhlY3V0aW9uIChzdGFydHMgYXQgMSkgKi9cbmV4cG9ydCBjb25zdCBTdGVwQXR0ZW1wdCA9IFNlbWFudGljQ29udmVudGlvbjxudW1iZXI+KCdzdGVwLmF0dGVtcHQnKTtcblxuLyoqIEN1cnJlbnQgc3RhdHVzIG9mIHRoZSBzdGVwICovXG5leHBvcnQgY29uc3QgU3RlcFN0YXR1cyA9IFNlbWFudGljQ29udmVudGlvbjxTdGVwWydzdGF0dXMnXT4oJ3N0ZXAuc3RhdHVzJyk7XG5cbi8qKiBNYXhpbXVtIG51bWJlciBvZiByZXRyaWVzIGFsbG93ZWQgZm9yIHRoaXMgc3RlcCAqL1xuZXhwb3J0IGNvbnN0IFN0ZXBNYXhSZXRyaWVzID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oJ3N0ZXAubWF4X3JldHJpZXMnKTtcblxuLyoqIFdoZXRoZXIgdHJhY2UgY29udGV4dCB3YXMgcHJvcGFnYXRlZCB0byB0aGlzIHN0ZXAgZXhlY3V0aW9uICovXG5leHBvcnQgY29uc3QgU3RlcFRyYWNlUHJvcGFnYXRlZCA9IFNlbWFudGljQ29udmVudGlvbjxib29sZWFuPihcbiAgJ3N0ZXAudHJhY2UucHJvcGFnYXRlZCdcbik7XG5cbi8qKlxuICogQ2xpZW50LW1lYXN1cmVkIHRpbWUtdG8tZmlyc3Qtc3RlcCBsYXRlbmN5IGluIG1pbGxpc2Vjb25kczogcnVuIGNyZWF0aW9uIOKGklxuICogdGhpcyBzdGVwJ3MgYm9keSBiZWdpbm5pbmcgdG8gZXhlY3V0ZSwgbWludXMgcHJlLXN0ZXAgaG9vay1jcmVhdGlvbiB0aW1lLlxuICogT25seSBwcmVzZW50IG9uIHRoZSBydW4ncyBmaXJzdCBzdGVwIGV4ZWN1dGlvbiB3aGVuIGl0IHF1YWxpZmllZCBmb3JcbiAqIG1lYXN1cmVtZW50IChzZWUgcnVudGltZS9zdGVwLWxhdGVuY3kudHMpLlxuICovXG5leHBvcnQgY29uc3QgU3RlcFR0ZnNNcyA9IFNlbWFudGljQ29udmVudGlvbjxudW1iZXI+KCdzdGVwLnR0ZnNfbXMnKTtcblxuLyoqXG4gKiBDbGllbnQtbWVhc3VyZWQgc3RlcC10by1zdGVwIG92ZXJoZWFkIGluIG1pbGxpc2Vjb25kczogdGhlIHByZXZpb3VzIHN0ZXAnc1xuICogdGVybWluYWwgZXZlbnQg4oaSIHRoaXMgc3RlcCdzIGJvZHkgYmVnaW5uaW5nIHRvIGV4ZWN1dGUuIE9ubHkgcHJlc2VudCB3aGVuXG4gKiB0aGUgdHdvIHN0ZXBzIHJhbiBiYWNrLXRvLWJhY2suXG4gKi9cbmV4cG9ydCBjb25zdCBTdGVwU3Rzb01zID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oJ3N0ZXAuc3Rzb19tcycpO1xuXG4vKipcbiAqIENsaWVudC1tZWFzdXJlZCBydW5fc3RhcnRlZC10by1maXJzdC1zdGVwIGxhdGVuY3kgaW4gbWlsbGlzZWNvbmRzOiB0aGVcbiAqIGBydW5fc3RhcnRlZGAgcmVzcG9uc2UgbGFuZGluZyAob3IsIHVuZGVyIHR1cmJvLCB0aGUgbG9jYWwgcnVuIHN5bnRoZXNpc1xuICogaW5zdGFudCkg4oaSIHRoaXMgc3RlcCdzIHN0YXJ0IFBPU1QgYmVpbmcgaXNzdWVkLiBBIHN1Yi13aW5kb3cgb2YgdHRmcyB0aGF0XG4gKiBpc29sYXRlcyByZXBsYXkgb3ZlcmhlYWQgZnJvbSB0aGUgcnVuLWNyZWF0aW9uIHF1ZXVlIGhvcC4gT25seSBwcmVzZW50IG9uXG4gKiB0aGUgcnVuJ3MgZmlyc3Qgc3RlcCBleGVjdXRpb24gd2hlbiBpdCBxdWFsaWZpZWQgZm9yIG1lYXN1cmVtZW50IChzZWVcbiAqIHJ1bnRpbWUvc3RlcC1sYXRlbmN5LnRzKS5cbiAqL1xuZXhwb3J0IGNvbnN0IFN0ZXBSc2ZzTXMgPSBTZW1hbnRpY0NvbnZlbnRpb248bnVtYmVyPignc3RlcC5yc2ZzX21zJyk7XG5cbi8qKlxuICogQ2xpZW50LW1lYXN1cmVkIHN5bmNocm9ub3VzIHdvcmtmbG93LWZ1bmN0aW9uIHJlcGxheSBkdXJhdGlvbiBpblxuICogbWlsbGlzZWNvbmRzLCBleGNsdWRpbmcgYXdhaXRlZCBuZXR3b3JrIEkvTywgb2Ygb25seSB0aGUgRklOQUwgcmVwbGF5IHBhc3NcbiAqIHdpdGhpbiB0aGUgcnNmcyB3aW5kb3cg4oCUIHRoZSBwYXNzIHRoYXQgcmVhY2hlZCBhbmQgc2NoZWR1bGVkIHRoZSBmaXJzdFxuICogc3RlcC4gTm90IGFjY3VtdWxhdGVkIGFjcm9zcyBlYXJsaWVyIHByZS1maXJzdC1zdGVwIHBhc3NlcyAoZS5nLiBhXG4gKiB3b3JrZmxvdy1ib2R5IGBzZXRBdHRyaWJ1dGVzKClgIGRldG91ciByZXBsYXlzIG1vcmUgdGhhbiBvbmNlLCBhbmQgYVxuICogcmVkZWxpdmVyeSBvbWl0cyBlYXJsaWVyIGludm9jYXRpb25zJyB3b3JrIGVudGlyZWx5KSwgc28gdGhpcyBtdXN0IG5vdCBiZVxuICogcmVhZCBhcyBcInRoZSByZXBsYXkgcG9ydGlvbiBvZiByc2ZzXCIg4oCUIHN0ZXAucnNmc19tcyBjb3ZlcnMgdGhlIHdob2xlXG4gKiB3aW5kb3cuIE9ubHkgcHJlc2VudCBhbG9uZ3NpZGUgc3RlcC5yc2ZzX21zIGFuZCBvbmx5IGZvciB0aGUgcnVuJ3MgZmlyc3RcbiAqIHN0ZXAgKHNlZSBydW50aW1lL3N0ZXAtbGF0ZW5jeS50cykuXG4gKi9cbmV4cG9ydCBjb25zdCBTdGVwRmluYWxTY2hlZHVsaW5nUmVwbGF5TXMgPSBTZW1hbnRpY0NvbnZlbnRpb248bnVtYmVyPihcbiAgJ3N0ZXAuZmluYWxfc2NoZWR1bGluZ19yZXBsYXlfbXMnXG4pO1xuXG4vKipcbiAqIFJ1bnRpbWUgc3RhcnR1cC1sYXRlbmN5IG9wdGltaXphdGlvbnMgYWN0aXZlIGZvciB0aGUgdHRmcy9zdHNvIG1lYXN1cmVtZW50XG4gKiAoZS5nLiAndHVyYm8nLCAnbGF6eVN0ZXBTdGFydCcsICdvcHRpbWlzdGljU3RhcnQnKS5cbiAqL1xuZXhwb3J0IGNvbnN0IFN0ZXBMYXRlbmN5T3B0aW1pemF0aW9ucyA9IFNlbWFudGljQ29udmVudGlvbjxzdHJpbmdbXT4oXG4gICdzdGVwLmxhdGVuY3lfb3B0aW1pemF0aW9ucydcbik7XG5cbi8qKiBXaGV0aGVyIHRoZSBzdGVwIHdhcyBza2lwcGVkIGR1cmluZyBleGVjdXRpb24gKi9cbmV4cG9ydCBjb25zdCBTdGVwU2tpcHBlZCA9IFNlbWFudGljQ29udmVudGlvbjxib29sZWFuPignc3RlcC5za2lwcGVkJyk7XG5cbi8qKiBSZWFzb24gd2h5IHRoZSBzdGVwIHdhcyBza2lwcGVkICovXG5leHBvcnQgY29uc3QgU3RlcFNraXBSZWFzb24gPVxuICBTZW1hbnRpY0NvbnZlbnRpb248U3RlcFsnc3RhdHVzJ10+KCdzdGVwLnNraXBfcmVhc29uJyk7XG5cbi8qKiBOdW1iZXIgb2YgYXJndW1lbnRzIHBhc3NlZCB0byB0aGUgc3RlcCBmdW5jdGlvbiAqL1xuZXhwb3J0IGNvbnN0IFN0ZXBBcmd1bWVudHNDb3VudCA9IFNlbWFudGljQ29udmVudGlvbjxudW1iZXI+KFxuICAnc3RlcC5hcmd1bWVudHMuY291bnQnXG4pO1xuXG4vKiogVHlwZSBvZiB0aGUgc3RlcCByZXN1bHQgKi9cbmV4cG9ydCBjb25zdCBTdGVwUmVzdWx0VHlwZSA9IFNlbWFudGljQ29udmVudGlvbjxzdHJpbmc+KCdzdGVwLnJlc3VsdC50eXBlJyk7XG5cbi8qKiBOYW1lIG9mIHRoZSBlcnJvciB0aGF0IGNhdXNlZCBzdGVwIGZhaWx1cmUgKi9cbmV4cG9ydCBjb25zdCBTdGVwRXJyb3JOYW1lID0gU2VtYW50aWNDb252ZW50aW9uPHN0cmluZz4oJ3N0ZXAuZXJyb3IubmFtZScpO1xuXG4vKiogRXJyb3IgbWVzc2FnZSB3aGVuIHN0ZXAgZmFpbHMgKi9cbmV4cG9ydCBjb25zdCBTdGVwRXJyb3JNZXNzYWdlID1cbiAgU2VtYW50aWNDb252ZW50aW9uPHN0cmluZz4oJ3N0ZXAuZXJyb3IubWVzc2FnZScpO1xuXG4vKiogV2hldGhlciB0aGUgc3RlcCBmYWlsZWQgd2l0aCBhIGZhdGFsIGVycm9yIChubyByZXRyaWVzKSAqL1xuZXhwb3J0IGNvbnN0IFN0ZXBGYXRhbEVycm9yID0gU2VtYW50aWNDb252ZW50aW9uPGJvb2xlYW4+KCdzdGVwLmZhdGFsX2Vycm9yJyk7XG5cbi8qKiBXaGV0aGVyIGFsbCByZXRyeSBhdHRlbXB0cyBoYXZlIGJlZW4gZXhoYXVzdGVkICovXG5leHBvcnQgY29uc3QgU3RlcFJldHJ5RXhoYXVzdGVkID0gU2VtYW50aWNDb252ZW50aW9uPGJvb2xlYW4+KFxuICAnc3RlcC5yZXRyeS5leGhhdXN0ZWQnXG4pO1xuXG4vKiogTnVtYmVyIG9mIHNlY29uZHMgdG8gd2FpdCBiZWZvcmUgbmV4dCByZXRyeSBhdHRlbXB0ICovXG5leHBvcnQgY29uc3QgU3RlcFJldHJ5VGltZW91dFNlY29uZHMgPSBTZW1hbnRpY0NvbnZlbnRpb248bnVtYmVyPihcbiAgJ3N0ZXAucmV0cnkudGltZW91dF9zZWNvbmRzJ1xuKTtcblxuLyoqIFdoZXRoZXIgdGhlIHN0ZXAgd2lsbCBiZSByZXRyaWVkIGFmdGVyIHRoaXMgZmFpbHVyZSAqL1xuZXhwb3J0IGNvbnN0IFN0ZXBSZXRyeVdpbGxSZXRyeSA9IFNlbWFudGljQ29udmVudGlvbjxib29sZWFuPihcbiAgJ3N0ZXAucmV0cnkud2lsbF9yZXRyeSdcbik7XG5cbi8vIFF1ZXVlL01lc3NhZ2luZyBhdHRyaWJ1dGVzIC0gU3RhbmRhcmQgT1RFTCBtZXNzYWdpbmcgY29udmVudGlvbnNcbi8vIFNlZTogaHR0cHM6Ly9vcGVudGVsZW1ldHJ5LmlvL2RvY3Mvc3BlY3Mvc2VtY29udi9tZXNzYWdpbmcvbWVzc2FnaW5nLXNwYW5zL1xuXG4vKiogTWVzc2FnaW5nIHN5c3RlbSBpZGVudGlmaWVyIChzdGFuZGFyZCBPVEVMOiBtZXNzYWdpbmcuc3lzdGVtKSAqL1xuZXhwb3J0IGNvbnN0IE1lc3NhZ2luZ1N5c3RlbSA9IFNlbWFudGljQ29udmVudGlvbjxzdHJpbmc+KCdtZXNzYWdpbmcuc3lzdGVtJyk7XG5cbi8qKiBEZXN0aW5hdGlvbiBuYW1lL3F1ZXVlIG5hbWUgKHN0YW5kYXJkIE9URUw6IG1lc3NhZ2luZy5kZXN0aW5hdGlvbi5uYW1lKSAqL1xuZXhwb3J0IGNvbnN0IE1lc3NhZ2luZ0Rlc3RpbmF0aW9uTmFtZSA9IFNlbWFudGljQ29udmVudGlvbjxzdHJpbmc+KFxuICAnbWVzc2FnaW5nLmRlc3RpbmF0aW9uLm5hbWUnXG4pO1xuXG4vKiogVGhlIG1lc3NhZ2UgaWQgYmVpbmcgaGFuZGxlZCAoc3RhbmRhcmQgT1RFTDogbWVzc2FnaW5nLm1lc3NhZ2UuaWQpICovXG5leHBvcnQgY29uc3QgTWVzc2FnaW5nTWVzc2FnZUlkID0gU2VtYW50aWNDb252ZW50aW9uPE1lc3NhZ2VJZD4oXG4gICdtZXNzYWdpbmcubWVzc2FnZS5pZCdcbik7XG5cbi8qKiBPcGVyYXRpb24gdHlwZSAoc3RhbmRhcmQgT1RFTDogbWVzc2FnaW5nLm9wZXJhdGlvbi50eXBlKSAqL1xuZXhwb3J0IGNvbnN0IE1lc3NhZ2luZ09wZXJhdGlvblR5cGUgPSBTZW1hbnRpY0NvbnZlbnRpb248XG4gICdwdWJsaXNoJyB8ICdyZWNlaXZlJyB8ICdwcm9jZXNzJ1xuPignbWVzc2FnaW5nLm9wZXJhdGlvbi50eXBlJyk7XG5cbi8qKiBUaW1lIHRha2VuIHRvIGVucXVldWUgdGhlIG1lc3NhZ2UgaW4gbWlsbGlzZWNvbmRzICh3b3JrZmxvdy1zcGVjaWZpYykgKi9cbmV4cG9ydCBjb25zdCBRdWV1ZU92ZXJoZWFkTXMgPSBTZW1hbnRpY0NvbnZlbnRpb248bnVtYmVyPihcbiAgJ3dvcmtmbG93LnF1ZXVlLm92ZXJoZWFkX21zJ1xuKTtcblxuLy8gRGVwbG95bWVudCBhdHRyaWJ1dGVzXG5cbi8qKiBVbmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIGRlcGxveW1lbnQgZW52aXJvbm1lbnQgKi9cbmV4cG9ydCBjb25zdCBEZXBsb3ltZW50SWQgPSBTZW1hbnRpY0NvbnZlbnRpb248c3RyaW5nPignZGVwbG95bWVudC5pZCcpO1xuXG4vLyBIb29rIGF0dHJpYnV0ZXNcblxuLyoqIFRva2VuIGlkZW50aWZ5aW5nIGEgc3BlY2lmaWMgaG9vayAqL1xuZXhwb3J0IGNvbnN0IEhvb2tUb2tlbiA9IFNlbWFudGljQ29udmVudGlvbjxzdHJpbmc+KCd3b3JrZmxvdy5ob29rLnRva2VuJyk7XG5cbi8qKiBVbmlxdWUgaWRlbnRpZmllciBmb3IgYSBob29rIGluc3RhbmNlICovXG5leHBvcnQgY29uc3QgSG9va0lkID0gU2VtYW50aWNDb252ZW50aW9uPHN0cmluZz4oJ3dvcmtmbG93Lmhvb2suaWQnKTtcblxuLyoqIFdoZXRoZXIgYSBob29rIHdhcyBmb3VuZCBieSBpdHMgdG9rZW4gKi9cbmV4cG9ydCBjb25zdCBIb29rRm91bmQgPSBTZW1hbnRpY0NvbnZlbnRpb248Ym9vbGVhbj4oJ3dvcmtmbG93Lmhvb2suZm91bmQnKTtcblxuLy8gV2ViaG9vayBhdHRyaWJ1dGVzXG5cbi8qKiBOdW1iZXIgb2Ygd2ViaG9vayBoYW5kbGVycyB0cmlnZ2VyZWQgKi9cbmV4cG9ydCBjb25zdCBXZWJob29rSGFuZGxlcnNUcmlnZ2VyZWQgPSBTZW1hbnRpY0NvbnZlbnRpb248bnVtYmVyPihcbiAgJ3dlYmhvb2suaGFuZGxlcnMudHJpZ2dlcmVkJ1xuKTtcblxuLy8gU3VzcGVuc2lvbiBhdHRyaWJ1dGVzXG5cbmV4cG9ydCBjb25zdCBXb3JrZmxvd1N1c3BlbnNpb25TdGF0ZSA9IFNlbWFudGljQ29udmVudGlvbjwnc3VzcGVuZGVkJz4oXG4gICd3b3JrZmxvdy5zdXNwZW5zaW9uLnN0YXRlJ1xuKTtcbmV4cG9ydCBjb25zdCBXb3JrZmxvd1N1c3BlbnNpb25Ib29rQ291bnQgPSBTZW1hbnRpY0NvbnZlbnRpb248bnVtYmVyPihcbiAgJ3dvcmtmbG93LnN1c3BlbnNpb24uaG9va19jb3VudCdcbik7XG5leHBvcnQgY29uc3QgV29ya2Zsb3dTdXNwZW5zaW9uU3RlcENvdW50ID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oXG4gICd3b3JrZmxvdy5zdXNwZW5zaW9uLnN0ZXBfY291bnQnXG4pO1xuZXhwb3J0IGNvbnN0IFdvcmtmbG93U3VzcGVuc2lvbldhaXRDb3VudCA9IFNlbWFudGljQ29udmVudGlvbjxudW1iZXI+KFxuICAnd29ya2Zsb3cuc3VzcGVuc2lvbi53YWl0X2NvdW50J1xuKTtcblxuLy8gV29ybGQvU3RvcmFnZSBhdHRyaWJ1dGVzIC0gU3RhbmRhcmQgT1RFTCBIVFRQIGNvbnZlbnRpb25zXG4vLyBTZWU6IGh0dHBzOi8vb3BlbnRlbGVtZXRyeS5pby9kb2NzL3NwZWNzL3NlbWNvbnYvaHR0cC9odHRwLXNwYW5zL1xuXG4vKiogSFRUUCByZXF1ZXN0IG1ldGhvZCAoc3RhbmRhcmQgT1RFTDogaHR0cC5yZXF1ZXN0Lm1ldGhvZCkgKi9cbmV4cG9ydCBjb25zdCBIdHRwUmVxdWVzdE1ldGhvZCA9IFNlbWFudGljQ29udmVudGlvbjxzdHJpbmc+KFxuICAnaHR0cC5yZXF1ZXN0Lm1ldGhvZCdcbik7XG5cbi8qKiBSb3V0ZSBwYXR0ZXJuIGZvciB0aGUgcmVxdWVzdCAoc3RhbmRhcmQgT1RFTDogaHR0cC5yb3V0ZSkgKi9cbmV4cG9ydCBjb25zdCBIdHRwUm91dGUgPSBTZW1hbnRpY0NvbnZlbnRpb248c3RyaW5nPignaHR0cC5yb3V0ZScpO1xuXG4vKiogRnVsbCBVUkwgb2YgdGhlIHJlcXVlc3QgKHN0YW5kYXJkIE9URUw6IHVybC5mdWxsKSAqL1xuZXhwb3J0IGNvbnN0IFVybEZ1bGwgPSBTZW1hbnRpY0NvbnZlbnRpb248c3RyaW5nPigndXJsLmZ1bGwnKTtcblxuLyoqIFNlcnZlciBob3N0bmFtZSAoc3RhbmRhcmQgT1RFTDogc2VydmVyLmFkZHJlc3MpICovXG5leHBvcnQgY29uc3QgU2VydmVyQWRkcmVzcyA9IFNlbWFudGljQ29udmVudGlvbjxzdHJpbmc+KCdzZXJ2ZXIuYWRkcmVzcycpO1xuXG4vKiogU2VydmVyIHBvcnQgKHN0YW5kYXJkIE9URUw6IHNlcnZlci5wb3J0KSAqL1xuZXhwb3J0IGNvbnN0IFNlcnZlclBvcnQgPSBTZW1hbnRpY0NvbnZlbnRpb248bnVtYmVyPignc2VydmVyLnBvcnQnKTtcblxuLyoqIEhUVFAgcmVzcG9uc2Ugc3RhdHVzIGNvZGUgKHN0YW5kYXJkIE9URUw6IGh0dHAucmVzcG9uc2Uuc3RhdHVzX2NvZGUpICovXG5leHBvcnQgY29uc3QgSHR0cFJlc3BvbnNlU3RhdHVzQ29kZSA9IFNlbWFudGljQ29udmVudGlvbjxudW1iZXI+KFxuICAnaHR0cC5yZXNwb25zZS5zdGF0dXNfY29kZSdcbik7XG5cbi8qKiBFcnJvciB0eXBlIHdoZW4gcmVxdWVzdCBmYWlscyAoc3RhbmRhcmQgT1RFTDogZXJyb3IudHlwZSkgKi9cbmV4cG9ydCBjb25zdCBFcnJvclR5cGUgPSBTZW1hbnRpY0NvbnZlbnRpb248c3RyaW5nPignZXJyb3IudHlwZScpO1xuXG4vLyBXb3JsZC1zcGVjaWZpYyBjdXN0b20gYXR0cmlidXRlcyAoZm9yIHdvcmtmbG93LXNwZWNpZmljIGNvbnRleHQpXG5cbi8qKiBGb3JtYXQgdXNlZCBmb3IgcGFyc2luZyByZXNwb25zZSBib2R5IChjYm9yIG9yIGpzb24pICovXG5leHBvcnQgY29uc3QgV29ybGRQYXJzZUZvcm1hdCA9IFNlbWFudGljQ29udmVudGlvbjwnY2JvcicgfCAnanNvbic+KFxuICAnd29ya2Zsb3cud29ybGQucGFyc2UuZm9ybWF0J1xuKTtcblxuLy8gRXZlbnQgbG9hZGluZyBhdHRyaWJ1dGVzXG5cbi8qKiBOdW1iZXIgb2YgcGFnaW5hdGlvbiBwYWdlcyBsb2FkZWQgd2hlbiBmZXRjaGluZyB3b3JrZmxvdyBldmVudHMgKi9cbmV4cG9ydCBjb25zdCBXb3JrZmxvd0V2ZW50c1BhZ2VzTG9hZGVkID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oXG4gICd3b3JrZmxvdy5ldmVudHMucGFnZXNfbG9hZGVkJ1xuKTtcblxuLy8gUXVldWUgdGltaW5nIGJyZWFrZG93biBhdHRyaWJ1dGVzICh3b3JrZmxvdy1zcGVjaWZpYylcblxuLyoqIFRpbWUgc3BlbnQgZGVzZXJpYWxpemluZyB0aGUgcXVldWUgbWVzc2FnZSBpbiBtaWxsaXNlY29uZHMgKi9cbmV4cG9ydCBjb25zdCBRdWV1ZURlc2VyaWFsaXplVGltZU1zID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oXG4gICd3b3JrZmxvdy5xdWV1ZS5kZXNlcmlhbGl6ZV90aW1lX21zJ1xuKTtcblxuLyoqIFRpbWUgc3BlbnQgZXhlY3V0aW5nIHRoZSBoYW5kbGVyIGxvZ2ljIGluIG1pbGxpc2Vjb25kcyAqL1xuZXhwb3J0IGNvbnN0IFF1ZXVlRXhlY3V0aW9uVGltZU1zID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oXG4gICd3b3JrZmxvdy5xdWV1ZS5leGVjdXRpb25fdGltZV9tcydcbik7XG5cbi8qKiBUaW1lIHNwZW50IHNlcmlhbGl6aW5nIHRoZSByZXNwb25zZSBpbiBtaWxsaXNlY29uZHMgKi9cbmV4cG9ydCBjb25zdCBRdWV1ZVNlcmlhbGl6ZVRpbWVNcyA9IFNlbWFudGljQ29udmVudGlvbjxudW1iZXI+KFxuICAnd29ya2Zsb3cucXVldWUuc2VyaWFsaXplX3RpbWVfbXMnXG4pO1xuXG4vLyBQYXlsb2FkIGNvbXByZXNzaW9uIGF0dHJpYnV0ZXMgKGd6aXAgY29kZWMsIHNwZWNWZXJzaW9uID49IDUpXG4vL1xuLy8gU2l6ZXMgYXJlIG1lYXN1cmVkIGF0IHRoZSBjb21wcmVzc2lvbiBib3VuZGFyeTogYmVmb3JlIGVuY3J5cHRpb24gb24gdGhlXG4vLyB3cml0ZSBwYXRoIGFuZCBhZnRlciBkZWNyeXB0aW9uIG9uIHRoZSByZWFkIHBhdGguIFRoZXkgdGhlcmVmb3JlIHJlZmxlY3Rcbi8vIGNvbXByZXNzaW9uJ3MgZWZmZWN0LCBub3QgdGhlIGF0LXJlc3Qgc2l6ZSAod2hpY2ggYWxzbyBpbmNsdWRlcyB0aGVcbi8vIH4yOC1ieXRlIGBlbmNyYCBlbnZlbG9wZSBhbmQsIG9uIHNvbWUgYmFja2VuZHMsIGJhc2U2NCBleHBhbnNpb24pLlxuXG4vKiogV2hldGhlciB0aGlzIHNlcmlhbGl6ZS9kZXNlcmlhbGl6ZSB3YXMgYSB3cml0ZSBvciByZWFkLiAqL1xuZXhwb3J0IGNvbnN0IFNlcmlhbGl6YXRpb25PcGVyYXRpb24gPSBTZW1hbnRpY0NvbnZlbnRpb248XG4gICdzZXJpYWxpemUnIHwgJ2Rlc2VyaWFsaXplJ1xuPignd29ya2Zsb3cuc2VyaWFsaXphdGlvbi5vcGVyYXRpb24nKTtcblxuLyoqIFdoZXRoZXIgYSBjb21wcmVzc2lvbiBjb2RlYyB3YXMgYXBwbGllZCAod3JpdGUpIC8gcHJlc2VudCAocmVhZCkuICovXG5leHBvcnQgY29uc3QgU2VyaWFsaXphdGlvbkNvbXByZXNzZWQgPSBTZW1hbnRpY0NvbnZlbnRpb248Ym9vbGVhbj4oXG4gICd3b3JrZmxvdy5zZXJpYWxpemF0aW9uLmNvbXByZXNzZWQnXG4pO1xuXG4vKiogV2hpY2ggY29tcHJlc3Npb24gY29kZWMgYXBwbGllZCAvIHdhcyBwcmVzZW50IChgenN0ZGAsIGBnemlwYCwgb3IgYG5vbmVgKS4gKi9cbmV4cG9ydCBjb25zdCBTZXJpYWxpemF0aW9uQ29kZWMgPSBTZW1hbnRpY0NvbnZlbnRpb248J3pzdGQnIHwgJ2d6aXAnIHwgJ25vbmUnPihcbiAgJ3dvcmtmbG93LnNlcmlhbGl6YXRpb24uY29kZWMnXG4pO1xuXG4vKiogTG9naWNhbCAodW5jb21wcmVzc2VkLCBkZXZhbHVlLXByZWZpeGVkKSBwYXlsb2FkIHNpemUgaW4gYnl0ZXMuICovXG5leHBvcnQgY29uc3QgU2VyaWFsaXphdGlvblVuY29tcHJlc3NlZEJ5dGVzID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oXG4gICd3b3JrZmxvdy5zZXJpYWxpemF0aW9uLnVuY29tcHJlc3NlZF9ieXRlcydcbik7XG5cbi8qKiBTdG9yZWQgKHBvc3QtY29tcHJlc3Npb24sIHByZS1lbmNyeXB0aW9uKSBwYXlsb2FkIHNpemUgaW4gYnl0ZXMuICovXG5leHBvcnQgY29uc3QgU2VyaWFsaXphdGlvblN0b3JlZEJ5dGVzID0gU2VtYW50aWNDb252ZW50aW9uPG51bWJlcj4oXG4gICd3b3JrZmxvdy5zZXJpYWxpemF0aW9uLnN0b3JlZF9ieXRlcydcbik7XG5cbi8qKiBGcmFjdGlvbiBvZiBieXRlcyBzYXZlZCBieSBjb21wcmVzc2lvbiAoMC4uMSk7IHNldCBvbmx5IHdoZW4gY29tcHJlc3NlZC4gKi9cbmV4cG9ydCBjb25zdCBTZXJpYWxpemF0aW9uQ29tcHJlc3Npb25SYXRpbyA9IFNlbWFudGljQ29udmVudGlvbjxudW1iZXI+KFxuICAnd29ya2Zsb3cuc2VyaWFsaXphdGlvbi5jb21wcmVzc2lvbl9yYXRpbydcbik7XG5cbi8vIFJQQy9QZWVyIFNlcnZpY2UgYXR0cmlidXRlcyAtIEZvciBzZXJ2aWNlIG1hcHMgYW5kIGRlcGVuZGVuY3kgdHJhY2tpbmdcbi8vIFNlZTogaHR0cHM6Ly9vcGVudGVsZW1ldHJ5LmlvL2RvY3Mvc3BlY3Mvc2VtY29udi9ycGMvcnBjLXNwYW5zL1xuXG4vKiogVGhlIHJlbW90ZSBzZXJ2aWNlIG5hbWUgZm9yIERhdGFkb2cgc2VydmljZSBtYXBzIChEYXRhZG9nLXNwZWNpZmljOiBwZWVyLnNlcnZpY2UpICovXG5leHBvcnQgY29uc3QgUGVlclNlcnZpY2UgPSBTZW1hbnRpY0NvbnZlbnRpb248c3RyaW5nPigncGVlci5zZXJ2aWNlJyk7XG5cbi8qKiBSUEMgc3lzdGVtIGlkZW50aWZpZXIgKHN0YW5kYXJkIE9URUw6IHJwYy5zeXN0ZW0pICovXG5leHBvcnQgY29uc3QgUnBjU3lzdGVtID0gU2VtYW50aWNDb252ZW50aW9uPHN0cmluZz4oJ3JwYy5zeXN0ZW0nKTtcblxuLyoqIFJQQyBzZXJ2aWNlIG5hbWUgKHN0YW5kYXJkIE9URUw6IHJwYy5zZXJ2aWNlKSAqL1xuZXhwb3J0IGNvbnN0IFJwY1NlcnZpY2UgPSBTZW1hbnRpY0NvbnZlbnRpb248c3RyaW5nPigncnBjLnNlcnZpY2UnKTtcblxuLyoqIFJQQyBtZXRob2QgbmFtZSAoc3RhbmRhcmQgT1RFTDogcnBjLm1ldGhvZCkgKi9cbmV4cG9ydCBjb25zdCBScGNNZXRob2QgPSBTZW1hbnRpY0NvbnZlbnRpb248c3RyaW5nPigncnBjLm1ldGhvZCcpO1xuXG4vLyBFcnJvciBhdHRyaWJ1dGVzIC0gU3RhbmRhcmQgT1RFTCBlcnJvciBjb252ZW50aW9uc1xuLy8gU2VlOiBodHRwczovL29wZW50ZWxlbWV0cnkuaW8vZG9jcy9zcGVjcy9zZW1jb252L2V4Y2VwdGlvbnMvZXhjZXB0aW9ucy1zcGFucy9cblxuLyoqIFdoZXRoZXIgdGhlIGVycm9yIGlzIHJldHJ5YWJsZSAod29ya2Zsb3ctc3BlY2lmaWMpICovXG5leHBvcnQgY29uc3QgRXJyb3JSZXRyeWFibGUgPSBTZW1hbnRpY0NvbnZlbnRpb248Ym9vbGVhbj4oJ2Vycm9yLnJldHJ5YWJsZScpO1xuXG4vKiogRXJyb3IgY2F0ZWdvcnkgKHdvcmtmbG93LXNwZWNpZmljOiBmYXRhbCwgcmV0cnlhYmxlLCB0cmFuc2llbnQpICovXG5leHBvcnQgY29uc3QgRXJyb3JDYXRlZ29yeSA9IFNlbWFudGljQ29udmVudGlvbjxcbiAgJ2ZhdGFsJyB8ICdyZXRyeWFibGUnIHwgJ3RyYW5zaWVudCdcbj4oJ2Vycm9yLmNhdGVnb3J5Jyk7XG4iXX0=
|
package/dist/telemetry.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"telemetry.d.ts","sourceRoot":"","sources":["../src/telemetry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,GAAG,MAAM,oBAAoB,CAAC;AAC/C,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAUtE;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,iBAAiB,GAAG,QAAQ,GAAG,YAAY,CAAC;AAKxD;;;;;GAKG;AACH,wBAAgB,oBAAoB,IAAI,iBAAiB,CAUxD;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,GAC1C,OAAO,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAEnC;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,iBAAiB,EAC5B,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,GAClD,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAIjC;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,wBAAwB,CAC5C,SAAS,EAAE,iBAAiB,EAC5B,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,GAClD,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,SAAS,CAAC,CAMjC;AAED;;;GAGG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAO7E;AAED;;;;GAIG;AACH,wBAAsB,uBAAuB,CAC3C,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,oCAMrC;AAED;;;;;GAKG;AACH,wBAAsB,gBAAgB,CAAC,CAAC,EACtC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,EAChD,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACnB,OAAO,CAAC,CAAC,CAAC,CAcZ;
|
|
1
|
+
{"version":3,"file":"telemetry.d.ts","sourceRoot":"","sources":["../src/telemetry.ts"],"names":[],"mappings":"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"}
|
package/dist/telemetry.js
CHANGED
|
@@ -132,8 +132,43 @@ const Tracer = once(async () => {
|
|
|
132
132
|
const api = await OtelApi.value;
|
|
133
133
|
if (!api)
|
|
134
134
|
return null;
|
|
135
|
-
|
|
135
|
+
const tracer = api.trace.getTracer('workflow');
|
|
136
|
+
logOtelDiagnosticOnce(api, tracer);
|
|
137
|
+
return tracer;
|
|
136
138
|
});
|
|
139
|
+
/**
|
|
140
|
+
* One-shot runtime diagnostic (DEBUG=workflow:* only), same shape as the one
|
|
141
|
+
* world-vercel emits tagged `world-vercel`: prints how this module instance
|
|
142
|
+
* of `@opentelemetry/api` sees the global registration, so a deployment's
|
|
143
|
+
* logs show the two packages' views side by side.
|
|
144
|
+
*/
|
|
145
|
+
let otelDiagLogged = false;
|
|
146
|
+
function logOtelDiagnosticOnce(otel, tracer) {
|
|
147
|
+
const debugEnabled = typeof process !== 'undefined' &&
|
|
148
|
+
typeof process.env.DEBUG === 'string' &&
|
|
149
|
+
(process.env.DEBUG.includes('workflow:') || process.env.DEBUG === '*');
|
|
150
|
+
if (otelDiagLogged || !debugEnabled)
|
|
151
|
+
return;
|
|
152
|
+
otelDiagLogged = true;
|
|
153
|
+
try {
|
|
154
|
+
const g = globalThis[Symbol.for('opentelemetry.js.api.1')];
|
|
155
|
+
const provider = otel.trace.getTracerProvider();
|
|
156
|
+
const delegate = provider.getDelegate?.() ?? provider;
|
|
157
|
+
const probe = tracer.startSpan('workflow.otel.probe.core');
|
|
158
|
+
console.warn('[workflow:otel-diag] core', JSON.stringify({
|
|
159
|
+
globalRegistrationVersion: g?.version ?? null,
|
|
160
|
+
providerCtor: provider?.constructor?.name ?? null,
|
|
161
|
+
delegateCtor: delegate?.constructor?.name ?? null,
|
|
162
|
+
tracerCtor: tracer?.constructor?.name ?? null,
|
|
163
|
+
probeCtor: probe?.constructor?.name ?? null,
|
|
164
|
+
probeRecording: probe.isRecording(),
|
|
165
|
+
}));
|
|
166
|
+
probe.end();
|
|
167
|
+
}
|
|
168
|
+
catch (error) {
|
|
169
|
+
console.warn('[workflow:otel-diag] core failed:', error instanceof Error ? error.message : error);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
137
172
|
export async function trace(spanName, ...args) {
|
|
138
173
|
const [tracer, otel] = await Promise.all([Tracer.value, OtelApi.value]);
|
|
139
174
|
const { fn, opts } = typeof args[0] === 'function'
|
|
@@ -299,4 +334,4 @@ export async function getWorkflowBaggage() {
|
|
|
299
334
|
workflowName: name,
|
|
300
335
|
};
|
|
301
336
|
}
|
|
302
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVsZW1ldHJ5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3RlbGVtZXRyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdkMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDNUMsT0FBTyxLQUFLLElBQUksTUFBTSxxQ0FBcUMsQ0FBQztBQW9CNUQseUVBQXlFO0FBQ3pFLE1BQU0sNEJBQTRCLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztBQUV2RDs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxvQkFBb0I7SUFDbEMsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQztJQUM5QyxJQUFJLEtBQUssS0FBSyxZQUFZO1FBQUUsT0FBTyxZQUFZLENBQUM7SUFDaEQsSUFBSSxLQUFLLElBQUksS0FBSyxLQUFLLFFBQVEsSUFBSSxDQUFDLDRCQUE0QixDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQzVFLDRCQUE0QixDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN4QyxhQUFhLENBQUMsSUFBSSxDQUNoQiwyQ0FBMkMsS0FBSyxpRUFBaUUsQ0FDbEgsQ0FBQztJQUNKLENBQUM7SUFDRCxPQUFPLFFBQVEsQ0FBQztBQUNsQixDQUFDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLG9CQUFvQixDQUNsQyxPQUEyQztJQUUzQyxPQUFPLE9BQU8sS0FBSyxTQUFTLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0FBQ2xFLENBQUM7QUFFRDs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sVUFBVSxtQkFBbUIsQ0FDakMsU0FBNEIsRUFDNUIsZUFB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LENBQUMsTUFBTSxFQUFFLEVBQ3JCLE9BQU8sQ0FDUixDQUFDO0lBRUYsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQzNELENBQUM7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLGtCQUFrQjtJQUd0QyxNQUFNLElBQUksR0FBRyxNQUFNLE9BQU8sQ0FBQyxLQUFLLENBQUM7SUFDakMsSUFBSSxDQUFDLElBQUk7UUFBRSxPQUFPLFNBQVMsQ0FBQztJQUU1QixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDbkUsSUFBSSxDQUFDLE9BQU87UUFBRSxPQUFPLFNBQVMsQ0FBQztJQUUvQixNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsS0FBSyxDQUFDO0lBQ3pELE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLEVBQUUsS0FBSyxDQUFDO0lBRXRELElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxJQUFJO1FBQUUsT0FBTyxTQUFTLENBQUM7SUFFdEMsT0FBTztRQUNMLGFBQWEsRUFBRSxLQUFLO1FBQ3BCLFlBQVksRUFBRSxJQUFJO0tBQ25CLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgKiBhcyBhcGkgZnJvbSAnQG9wZW50ZWxlbWV0cnkvYXBpJztcbmltcG9ydCB0eXBlIHsgU3BhbiwgU3BhbktpbmQsIFNwYW5PcHRpb25zIH0gZnJvbSAnQG9wZW50ZWxlbWV0cnkvYXBpJztcbmltcG9ydCB7IG9uY2UgfSBmcm9tICdAd29ya2Zsb3cvdXRpbHMnO1xuaW1wb3J0IHsgV29ya2Zsb3dTdXNwZW5zaW9uIH0gZnJvbSAnLi9nbG9iYWwuanMnO1xuaW1wb3J0IHsgcnVudGltZUxvZ2dlciB9IGZyb20gJy4vbG9nZ2VyLmpzJztcbmltcG9ydCAqIGFzIEF0dHIgZnJvbSAnLi90ZWxlbWV0cnkvc2VtYW50aWMtY29udmVudGlvbnMuanMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFRyYWNlIENvbnRleHQgUHJvcGFnYXRpb24gVXRpbGl0aWVzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBDb250cm9scyBob3cgd29ya2Zsb3cvc3RlcCBxdWV1ZS1oYW5kbGVyIHNwYW5zIHJlbGF0ZSB0byB0aGUgcnVuLW9yaWdpblxuICogdHJhY2UgY29udGV4dCBjYXJyaWVkIGluIHF1ZXVlIG1lc3NhZ2VzOlxuICpcbiAqIC0gYCdsaW5rZWQnYCAoZGVmYXVsdCk6IGVhY2ggaW52b2NhdGlvbiBzdGFydHMgYSBORVcgcm9vdCB0cmFjZTsgdGhlXG4gKiAgIHJ1bi1vcmlnaW4gY29udGV4dCAoYW5kIHRoZSBpbmNvbWluZyBkZWxpdmVyeSBjb250ZXh0KSBhcmUgYXR0YWNoZWQgYXNcbiAqICAgc3BhbiBsaW5rcy4gVGhpcyBrZWVwcyB0cmFjZXMgYm91bmRlZCBwZXIgaW52b2NhdGlvbiBpbnN0ZWFkIG9mXG4gKiAgIHN0aXRjaGluZyBhIGxvbmctbGl2ZWQgcnVuIGludG8gb25lIGdpYW50IHRyYWNlLlxuICogLSBgJ2NvbnRpbnVvdXMnYDogdGhlIHJlc3RvcmVkIHJ1bi1vcmlnaW4gY29udGV4dCBiZWNvbWVzIHRoZSBwYXJlbnQgb2ZcbiAqICAgdGhlIGludm9jYXRpb24gc3BhbiAobGVnYWN5IGJlaGF2aW9yKSwgcHJvZHVjaW5nIGEgc2luZ2xlIHRyYWNlIHRoYXRcbiAqICAgc3BhbnMgdGhlIGVudGlyZSBydW4uXG4gKi9cbmV4cG9ydCB0eXBlIFdvcmtmbG93VHJhY2VNb2RlID0gJ2xpbmtlZCcgfCAnY29udGludW91cyc7XG5cbi8qKiBVbnJlY29nbml6ZWQgYFdPUktGTE9XX1RSQUNFX01PREVgIHZhbHVlcyB3ZSBhbHJlYWR5IHdhcm5lZCBhYm91dC4gKi9cbmNvbnN0IHdhcm5lZFVucmVjb2duaXplZFRyYWNlTW9kZXMgPSBuZXcgU2V0PHN0cmluZz4oKTtcblxuLyoqXG4gKiBSZXNvbHZlcyB0aGUgYWN0aXZlIHRyYWNlIG1vZGUgZnJvbSB0aGUgYFdPUktGTE9XX1RSQUNFX01PREVgIGVudiB2YXIuXG4gKiBEZWZhdWx0cyB0byBgJ2xpbmtlZCdgOyBhbnkgdmFsdWUgb3RoZXIgdGhhbiBgJ2NvbnRpbnVvdXMnYCBzZWxlY3RzIGl0LlxuICogVW5yZWNvZ25pemVkIG5vbi1lbXB0eSB2YWx1ZXMgKGUuZy4gdHlwb3MgbGlrZSBgY29udGlub3VzYCkgZW1pdCBhXG4gKiBvbmUtdGltZSB3YXJuaW5nIHNvIHNpbGVudCBmYWxsYmFjayB0byBgbGlua2VkYCBpcyBhdCBsZWFzdCB2aXNpYmxlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0V29ya2Zsb3dUcmFjZU1vZGUoKTogV29ya2Zsb3dUcmFjZU1vZGUge1xuICBjb25zdCB2YWx1ZSA9IHByb2Nlc3MuZW52LldPUktGTE9XX1RSQUNFX01PREU7XG4gIGlmICh2YWx1ZSA9PT0gJ2NvbnRpbnVvdXMnKSByZXR1cm4gJ2NvbnRpbnVvdXMnO1xuICBpZiAodmFsdWUgJiYgdmFsdWUgIT09ICdsaW5rZWQnICYmICF3YXJuZWRVbnJlY29nbml6ZWRUcmFjZU1vZGVzLmhhcyh2YWx1ZSkpIHtcbiAgICB3YXJuZWRVbnJlY29nbml6ZWRUcmFjZU1vZGVzLmFkZCh2YWx1ZSk7XG4gICAgcnVudGltZUxvZ2dlci53YXJuKFxuICAgICAgYFVucmVjb2duaXplZCBXT1JLRkxPV19UUkFDRV9NT0RFIHZhbHVlIFwiJHt2YWx1ZX1cIjsgZXhwZWN0ZWQgXCJsaW5rZWRcIiBvciBcImNvbnRpbnVvdXNcIi4gRmFsbGluZyBiYWNrIHRvIFwibGlua2VkXCIuYFxuICAgICk7XG4gIH1cbiAgcmV0dXJuICdsaW5rZWQnO1xufVxuXG4vKipcbiAqIFJldHVybnMgd2hldGhlciBhIHNlcmlhbGl6ZWQgdHJhY2UgY2FycmllciBpcyB1c2FibGUsIGkuZS4gcHJlc2VudCBhbmRcbiAqIG5vbi1lbXB0eS4gYHNlcmlhbGl6ZVRyYWNlQ2FycmllcigpYCByZXR1cm5zIGB7fWAgd2hlbiBubyBPVEVMIFNESyBpc1xuICogcmVnaXN0ZXJlZCBvciBubyBzcGFuIGlzIGFjdGl2ZSwgYW5kIGBzdGFydCgpYCBhbHdheXMgYXR0YWNoZXMgdGhlXG4gKiBjYXJyaWVyIHRvIHRoZSBmaXJzdCBxdWV1ZSBtZXNzYWdlIOKAlCBzbyBhbiBlbXB0eSBjYXJyaWVyIG11c3QgYmUgdHJlYXRlZFxuICogdGhlIHNhbWUgYXMgYW4gYWJzZW50IG9uZSB3aGVyZXZlciB0aGUgdHJhY2UtbW9kZSBsb2dpYyBicmFuY2hlcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVXNhYmxlVHJhY2VDYXJyaWVyKFxuICBjYXJyaWVyOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHwgdW5kZWZpbmVkXG4pOiBjYXJyaWVyIGlzIFJlY29yZDxzdHJpbmcsIHN0cmluZz4ge1xuICByZXR1cm4gY2FycmllciAhPT0gdW5kZWZpbmVkICYmIE9iamVjdC5rZXlzKGNhcnJpZXIpLmxlbmd0aCA+IDA7XG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgdHJhY2UgY2FycmllciB0byBhdHRhY2ggdG8gbWVzc2FnZXMgdGhlIGN1cnJlbnQgaW52b2NhdGlvblxuICogZW5xdWV1ZXMuIEluIGBsaW5rZWRgIG1vZGUgdGhlIE9SSUdJTkFMIHJ1bi1vcmlnaW4gY2FycmllciBpcyBmb3J3YXJkZWRcbiAqIHVuY2hhbmdlZCAod2hlbiB1c2FibGUpIHNvIGV2ZXJ5IGZ1dHVyZSBpbnZvY2F0aW9uIGxpbmtzIGJhY2sgdG8gdGhlIHNhbWVcbiAqIG9yaWdpbjsgb3RoZXJ3aXNlIOKAlCBgY29udGludW91c2AgbW9kZSwgb3Igbm8gdXNhYmxlIGluY29taW5nIGNhcnJpZXIg4oCUXG4gKiB0aGUgY3VycmVudCAoYWN0aXZlKSBjb250ZXh0IGlzIHNlcmlhbGl6ZWQsIHNvIHRoZSB0cmFjZSBrZWVwcyBjaGFpbmluZ1xuICogKGNvbnRpbnVvdXMpIG9yIHRoZSBmaXJzdCBpbnN0cnVtZW50ZWQgaW52b2NhdGlvbiBiZWNvbWVzIHRoZSBkZS1mYWN0b1xuICogb3JpZ2luIChsaW5rZWQpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TmV4dFRyYWNlQ2FycmllcihcbiAgdHJhY2VNb2RlOiBXb3JrZmxvd1RyYWNlTW9kZSxcbiAgaW5jb21pbmdDYXJyaWVyOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHwgdW5kZWZpbmVkXG4pOiBQcm9taXNlPFJlY29yZDxzdHJpbmcsIHN0cmluZz4+IHtcbiAgcmV0dXJuIHRyYWNlTW9kZSA9PT0gJ2xpbmtlZCcgJiYgaXNVc2FibGVUcmFjZUNhcnJpZXIoaW5jb21pbmdDYXJyaWVyKVxuICAgID8gUHJvbWlzZS5yZXNvbHZlKGluY29taW5nQ2FycmllcilcbiAgICA6IHNlcmlhbGl6ZVRyYWNlQ2FycmllcigpO1xufVxuXG4vKipcbiAqIEJ1aWxkcyB0aGUgc3BhbiBsaW5rcyBmb3IgYSBxdWV1ZS1kZWxpdmVyZWQgaW52b2NhdGlvbiBzcGFuXG4gKiAoYHdvcmtmbG93LmV4ZWN1dGVgIC8gYHN0ZXAuZXhlY3V0ZWApOlxuICpcbiAqIC0gSW4gYGxpbmtlZGAgbW9kZSB0aGUgaW52b2NhdGlvbiBzcGFuIGlzIGEgQ0hJTEQgb2YgdGhlIGxvY2FsIGRlbGl2ZXJ5XG4gKiAgIChmbG93LXJvdXRlKSBjb250ZXh0LCBzbyB0aGUgb25seSBsaW5rIGlzIHRvIHRoZSBydW4tb3JpZ2luIGNvbnRleHRcbiAqICAgZnJvbSB0aGUgbWVzc2FnZSdzIHRyYWNlIGNhcnJpZXIg4oCUIGNvbm5lY3RpbmcgdGhpcyBib3VuZGVkIHBlci1pbnZvY2F0aW9uXG4gKiAgIHRyYWNlIGJhY2sgdG8gd2hlcmUgdGhlIHJ1biB3YXMgc3RhcnRlZC4gVGhlIHJ1bi1vcmlnaW4gY29udGV4dCBpcyBhXG4gKiAgIGxpbmssIG5ldmVyIGEgcGFyZW50LCBhbmQgcmUtZW5xdWV1ZXMgZm9yd2FyZCB0aGUgb3JpZ2luYWwgY2FycmllclxuICogICB1bmNoYW5nZWQsIHNvIHRoZSB3aG9sZSBydW4gaXMgbmV2ZXIgc3RpdGNoZWQgaW50byBvbmUgZ2lhbnQgdHJhY2UuXG4gKiAgIFRoZSBsaW5rIGlzIHNraXBwZWQgd2hlbiB0aGUgY2FycmllciBpcyBhYnNlbnQsIGVtcHR5LCBvciBpbnZhbGlkLlxuICogLSBJbiBgY29udGludW91c2AgbW9kZSB0aGUgcnVuLW9yaWdpbiBjb250ZXh0IGlzIHJlc3RvcmVkIGFzIHRoZSBwYXJlbnRcbiAqICAgaW5zdGVhZCwgYW5kIHRoZSBsaW5rIHBvaW50cyBhdCB0aGUgaW5jb21pbmcgZGVsaXZlcnkgY29udGV4dC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGJ1aWxkSW52b2NhdGlvblNwYW5MaW5rcyhcbiAgdHJhY2VNb2RlOiBXb3JrZmxvd1RyYWNlTW9kZSxcbiAgaW5jb21pbmdDYXJyaWVyOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHwgdW5kZWZpbmVkXG4pOiBQcm9taXNlPGFwaS5MaW5rW10gfCB1bmRlZmluZWQ+IHtcbiAgaWYgKHRyYWNlTW9kZSAhPT0gJ2xpbmtlZCcpIHJldHVybiBsaW5rVG9DdXJyZW50Q29udGV4dCgpO1xuICBjb25zdCBvcmlnaW5MaW5rID0gYXdhaXQgbGlua1RvVHJhY2VDYXJyaWVyKFxuICAgIGlzVXNhYmxlVHJhY2VDYXJyaWVyKGluY29taW5nQ2FycmllcikgPyBpbmNvbWluZ0NhcnJpZXIgOiB1bmRlZmluZWRcbiAgKTtcbiAgcmV0dXJuIG9yaWdpbkxpbmsgPyBbb3JpZ2luTGlua10gOiB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogU2VyaWFsaXplcyB0aGUgY3VycmVudCB0cmFjZSBjb250ZXh0IGludG8gYSBmb3JtYXQgdGhhdCBjYW4gYmUgcGFzc2VkIHRocm91Z2ggcXVldWVzXG4gKiBAcmV0dXJucyBBIHJlY29yZCBvZiBzdHJpbmdzIHJlcHJlc2VudGluZyB0aGUgdHJhY2UgY29udGV4dFxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc2VyaWFsaXplVHJhY2VDYXJyaWVyKCk6IFByb21pc2U8UmVjb3JkPHN0cmluZywgc3RyaW5nPj4ge1xuICBjb25zdCBvdGVsID0gYXdhaXQgT3RlbEFwaS52YWx1ZTtcbiAgaWYgKCFvdGVsKSByZXR1cm4ge307XG4gIGNvbnN0IGNhcnJpZXI6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcbiAgLy8gSW5qZWN0IHRoZSBjdXJyZW50IGNvbnRleHQgaW50byB0aGUgY2FycmllclxuICBvdGVsLnByb3BhZ2F0aW9uLmluamVjdChvdGVsLmNvbnRleHQuYWN0aXZlKCksIGNhcnJpZXIpO1xuICByZXR1cm4gY2Fycmllcjtcbn1cblxuLyoqXG4gKiBEZXNlcmlhbGl6ZXMgdHJhY2UgY29udGV4dCBhbmQgcmV0dXJucyBhIGNvbnRleHQgdGhhdCBjYW4gYmUgdXNlZCB0byBjb250aW51ZSB0aGUgdHJhY2VcbiAqIEBwYXJhbSB0cmFjZUNhcnJpZXIgVGhlIHNlcmlhbGl6ZWQgdHJhY2UgY29udGV4dFxuICogQHJldHVybnMgT3BlblRlbGVtZXRyeSBjb250ZXh0IHdpdGggdGhlIHJlc3RvcmVkIHRyYWNlXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBkZXNlcmlhbGl6ZVRyYWNlQ2FycmllcihcbiAgdHJhY2VDYXJyaWVyOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+XG4pIHtcbiAgY29uc3Qgb3RlbCA9IGF3YWl0IE90ZWxBcGkudmFsdWU7XG4gIGlmICghb3RlbCkgcmV0dXJuO1xuICAvLyBFeHRyYWN0IHRoZSBjb250ZXh0IGZyb20gdGhlIGNhcnJpZXJcbiAgcmV0dXJuIG90ZWwucHJvcGFnYXRpb24uZXh0cmFjdChvdGVsLmNvbnRleHQuYWN0aXZlKCksIHRyYWNlQ2Fycmllcik7XG59XG5cbi8qKlxuICogUnVucyBhIGZ1bmN0aW9uIHdpdGhpbiB0aGUgY29udGV4dCBvZiBhIGRlc2VyaWFsaXplZCB0cmFjZVxuICogQHBhcmFtIHRyYWNlQ2FycmllciBUaGUgc2VyaWFsaXplZCB0cmFjZSBjYXJyaWVyIChvcHRpb25hbClcbiAqIEBwYXJhbSBmbiBUaGUgZnVuY3Rpb24gdG8gcnVuIHdpdGhpbiB0aGUgdHJhY2UgY29udGV4dFxuICogQHJldHVybnMgVGhlIHJlc3VsdCBvZiB0aGUgZnVuY3Rpb25cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHdpdGhUcmFjZUNvbnRleHQ8VD4oXG4gIHRyYWNlQ2FycmllcjogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB8IHVuZGVmaW5lZCxcbiAgZm46ICgpID0+IFByb21pc2U8VD5cbik6IFByb21pc2U8VD4ge1xuICBpZiAoIXRyYWNlQ2Fycmllcikge1xuICAgIHJldHVybiBmbigpO1xuICB9XG5cbiAgY29uc3Qgb3RlbCA9IGF3YWl0IE90ZWxBcGkudmFsdWU7XG4gIGlmICghb3RlbCkgcmV0dXJuIGZuKCk7XG5cbiAgY29uc3QgZXh0cmFjdGVkQ29udGV4dCA9IGF3YWl0IGRlc2VyaWFsaXplVHJhY2VDYXJyaWVyKHRyYWNlQ2Fycmllcik7XG4gIGlmICghZXh0cmFjdGVkQ29udGV4dCkge1xuICAgIHJldHVybiBmbigpO1xuICB9XG5cbiAgcmV0dXJuIG90ZWwuY29udGV4dC53aXRoKGV4dHJhY3RlZENvbnRleHQsIGFzeW5jICgpID0+IGF3YWl0IGZuKCkpO1xufVxuXG5jb25zdCBPdGVsQXBpID0gb25jZShhc3luYyAoKSA9PiB7XG4gIC8vIGBAb3BlbnRlbGVtZXRyeS9hcGlgIGlzIGFuIG9wdGlvbmFsIHBlZXIgZGVwZW5kZW5jeS4gVGhlIHN0YXRpYyBzcGVjaWZpZXJcbiAgLy8gaXMgaW50ZW50aW9uYWw6IGVzYnVpbGQtYnVuZGxlZCB0YXJnZXRzICh0aGUgQ0xJJ3NcbiAgLy8gYHZlcmNlbC1idWlsZC1vdXRwdXQtYXBpYCBidWlsZCwgTml0cm8sIEFzdHJvKSBzaGlwIGEgc2VsZi1jb250YWluZWRcbiAgLy8gYnVuZGxlIHdpdGggbm8gbm9kZV9tb2R1bGVzLCBzbyB0aGUgcGFja2FnZSBtdXN0IGJlICppbmxpbmVkKiBhdCBidWlsZFxuICAvLyB0aW1lIGZvciBzcGFucyB0byB3b3JrIGF0IHJ1bnRpbWUg4oCUIGEgcnVudGltZS1idWlsdCBzcGVjaWZpZXIgaXMgb3BhcXVlIHRvXG4gIC8vIGVzYnVpbGQgYW5kIHdvdWxkIHNpbGVudGx5IGRpc2FibGUgdHJhY2luZyB0aGVyZS4gQnVuZGxlcnMgdGhhdCByZWplY3QgYW5cbiAgLy8gdW5yZXNvbHZhYmxlIHN0YXRpYyBgaW1wb3J0KClgIHdoZW4gdGhlIHBlZXIgaXNuJ3QgaW5zdGFsbGVkIChSb2xsdXAvVml0ZSxcbiAgLy8gZS5nLiBTdmVsdGVLaXQpIGluc3RlYWQgZXh0ZXJuYWxpemUgYEBvcGVudGVsZW1ldHJ5L2FwaWAgaW4gdGhlIHdvcmtmbG93XG4gIC8vIGZyYW1ld29yayBpbnRlZ3JhdGlvbiwgd2hpY2gga2VlcHMgdGhlIGJ1aWxkIGdyZWVuIGFuZCBzdGlsbCBsb2FkcyByZWFsXG4gIC8vIE9UZWwgd2hlbiB0aGUgcGVlciBpcyBwcmVzZW50LiBSdW50aW1lIHNlbWFudGljczogcHJlc2VudCDihpIgbG9hZGVkLCBhYnNlbnRcbiAgLy8g4oaSIGNhdWdodCBhbmQgdHJhY2luZyBkaXNhYmxlZC5cbiAgdHJ5IHtcbiAgICByZXR1cm4gYXdhaXQgaW1wb3J0KCdAb3BlbnRlbGVtZXRyeS9hcGknKTtcbiAgfSBjYXRjaCB7XG4gICAgcnVudGltZUxvZ2dlci5pbmZvKCdPcGVuVGVsZW1ldHJ5IG5vdCBhdmFpbGFibGUsIHRyYWNpbmcgd2lsbCBiZSBkaXNhYmxlZCcpO1xuICAgIHJldHVybiBudWxsO1xuICB9XG59KTtcblxuY29uc3QgVHJhY2VyID0gb25jZShhc3luYyAoKSA9PiB7XG4gIGNvbnN0IGFwaSA9IGF3YWl0IE90ZWxBcGkudmFsdWU7XG4gIGlmICghYXBpKSByZXR1cm4gbnVsbDtcbiAgcmV0dXJuIGFwaS50cmFjZS5nZXRUcmFjZXIoJ3dvcmtmbG93Jyk7XG59KTtcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHRyYWNlPFQ+KFxuICBzcGFuTmFtZTogc3RyaW5nLFxuICAuLi5hcmdzOlxuICAgIHwgW2ZuOiAoc3Bhbj86IFNwYW4pID0+IFByb21pc2U8VD5dXG4gICAgfCBbb3B0czogU3Bhbk9wdGlvbnMsIGZuOiAoc3Bhbj86IFNwYW4pID0+IFByb21pc2U8VD5dXG4pOiBQcm9taXNlPFQ+IHtcbiAgY29uc3QgW3RyYWNlciwgb3RlbF0gPSBhd2FpdCBQcm9taXNlLmFsbChbVHJhY2VyLnZhbHVlLCBPdGVsQXBpLnZhbHVlXSk7XG4gIGNvbnN0IHsgZm4sIG9wdHMgfSA9XG4gICAgdHlwZW9mIGFyZ3NbMF0gPT09ICdmdW5jdGlvbidcbiAgICAgID8geyBmbjogYXJnc1swXSwgb3B0czoge30gfVxuICAgICAgOiB7IGZuOiBhcmdzWzFdLCBvcHRzOiBhcmdzWzBdIH07XG4gIGlmICghZm4pIHRocm93IG5ldyBFcnJvcignRnVuY3Rpb24gdG8gdHJhY2UgbXVzdCBiZSBwcm92aWRlZCcpO1xuXG4gIGlmICghdHJhY2VyIHx8ICFvdGVsKSB7XG4gICAgcmV0dXJuIGF3YWl0IGZuKCk7XG4gIH1cblxuICByZXR1cm4gdHJhY2VyLnN0YXJ0QWN0aXZlU3BhbihzcGFuTmFtZSwgb3B0cywgYXN5bmMgKHNwYW4pID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZm4oc3Bhbik7XG4gICAgICBzcGFuLnNldFN0YXR1cyh7IGNvZGU6IG90ZWwuU3BhblN0YXR1c0NvZGUuT0sgfSk7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHNwYW4uc2V0U3RhdHVzKHtcbiAgICAgICAgY29kZTogb3RlbC5TcGFuU3RhdHVzQ29kZS5FUlJPUixcbiAgICAgICAgbWVzc2FnZTogKGUgYXMgRXJyb3IpLm1lc3NhZ2UsXG4gICAgICB9KTtcbiAgICAgIGFwcGx5V29ya2Zsb3dTdXNwZW5zaW9uVG9TcGFuKGUsIG90ZWwsIHNwYW4pO1xuICAgICAgdGhyb3cgZTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgc3Bhbi5lbmQoKTtcbiAgICB9XG4gIH0pO1xufVxuXG4vKipcbiAqIEVtaXQgYSBzcGFuIHdob3NlIHN0YXJ0IGlzIGJhY2stZGF0ZWQgdG8gYHN0YXJ0RXBvY2hNc2AgYW5kIHdob3NlIGVuZCBpcyBub3csXG4gKiBzbyBpdHMgZHVyYXRpb24gcmVmbGVjdHMgYW4gaW50ZXJ2YWwgb25seSBtZWFzdXJhYmxlIGF0IGl0cyBlbmQgKGUuZy5cbiAqIHRpbWUtdG8tZmlyc3QtY2h1bmssIGtub3duIHdoZW4gdGhlIGZpcnN0IGNodW5rIGFycml2ZXMpLiBVbmxpa2UgYHRyYWNlKClgLFxuICogdGhpcyByZWNvcmRzIGFuIGFscmVhZHktZWxhcHNlZCBzcGFuIGluIG9uZSBzaG90IHJhdGhlciB0aGFuIHdyYXBwaW5nIGFcbiAqIGNhbGxiYWNrLiBOby1vcCB3aGVuIE9wZW5UZWxlbWV0cnkgaXMgbm90IGF2YWlsYWJsZS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlY29yZEVsYXBzZWRTcGFuKFxuICBzcGFuTmFtZTogc3RyaW5nLFxuICBzdGFydEVwb2NoTXM6IG51bWJlcixcbiAgb3B0cz86IFNwYW5PcHRpb25zXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgdHJhY2VyID0gYXdhaXQgVHJhY2VyLnZhbHVlO1xuICBpZiAoIXRyYWNlcikgcmV0dXJuO1xuICB0cmFjZXIuc3RhcnRTcGFuKHNwYW5OYW1lLCB7IC4uLm9wdHMsIHN0YXJ0VGltZTogc3RhcnRFcG9jaE1zIH0pLmVuZCgpO1xufVxuXG4vKipcbiAqIEFwcGxpZXMgd29ya2Zsb3cgc3VzcGVuc2lvbiBhdHRyaWJ1dGVzIHRvIHRoZSBnaXZlbiBzcGFuIGlmIHRoZSBlcnJvciBpcyBhIFdvcmtmbG93U3VzcGVuc2lvblxuICogd2hpY2ggaXMgdGVjaG5pY2FsbHkgbm90IGFuIGVycm9yLCBidXQgYW4gYWxnZWJyYWljIGVmZmVjdCBpbmRpY2F0aW5nIHN1c3BlbnNpb24uXG4gKi9cbmZ1bmN0aW9uIGFwcGx5V29ya2Zsb3dTdXNwZW5zaW9uVG9TcGFuKFxuICBlcnJvcjogdW5rbm93bixcbiAgb3RlbDogdHlwZW9mIGFwaSxcbiAgc3BhbjogYXBpLlNwYW5cbikge1xuICBpZiAoIWVycm9yIHx8ICFXb3JrZmxvd1N1c3BlbnNpb24uaXMoZXJyb3IpKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgc3Bhbi5zZXRTdGF0dXMoeyBjb2RlOiBvdGVsLlNwYW5TdGF0dXNDb2RlLk9LIH0pO1xuICBzcGFuLnNldEF0dHJpYnV0ZXMoe1xuICAgIC4uLkF0dHIuV29ya2Zsb3dTdXNwZW5zaW9uU3RhdGUoJ3N1c3BlbmRlZCcpLFxuICAgIC4uLkF0dHIuV29ya2Zsb3dTdXNwZW5zaW9uU3RlcENvdW50KGVycm9yLnN0ZXBDb3VudCksXG4gICAgLi4uQXR0ci5Xb3JrZmxvd1N1c3BlbnNpb25Ib29rQ291bnQoZXJyb3IuaG9va0NvdW50KSxcbiAgICAuLi5BdHRyLldvcmtmbG93U3VzcGVuc2lvbldhaXRDb3VudChlcnJvci53YWl0Q291bnQpLFxuICB9KTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldFNwYW5Db250ZXh0Rm9yVHJhY2VDYXJyaWVyKFxuICBjYXJyaWVyOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+XG4pIHtcbiAgY29uc3QgW2Rlc2VyaWFsaXplZCwgb3RlbF0gPSBhd2FpdCBQcm9taXNlLmFsbChbXG4gICAgZGVzZXJpYWxpemVUcmFjZUNhcnJpZXIoY2FycmllciksXG4gICAgT3RlbEFwaS52YWx1ZSxcbiAgXSk7XG4gIGlmICghZGVzZXJpYWxpemVkIHx8ICFvdGVsKSByZXR1cm47XG4gIHJldHVybiBvdGVsLnRyYWNlLmdldFNwYW5Db250ZXh0KGRlc2VyaWFsaXplZCk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRBY3RpdmVTcGFuKCkge1xuICByZXR1cm4gYXdhaXQgd2l0aE90ZWwoKG90ZWwpID0+IG90ZWwudHJhY2UuZ2V0QWN0aXZlU3BhbigpKTtcbn1cblxuLyoqXG4gKiBXcmFwcyBhbGwgbWV0aG9kcyBvZiBhbiBvYmplY3Qgd2l0aCB0cmFjaW5nIHNwYW5zLlxuICogQHBhcmFtIHByZWZpeCAtIFByZWZpeCBmb3Igc3BhbiBuYW1lcyAoZS5nLiwgXCJXT1JMRC5ydW5zXCIpXG4gKiBAcGFyYW0gbyAtIE9iamVjdCB3aXRoIG1ldGhvZHMgdG8gaW5zdHJ1bWVudFxuICogQHJldHVybnMgSW5zdHJ1bWVudGVkIG9iamVjdCB3aXRoIHNhbWUgaW50ZXJmYWNlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbnN0cnVtZW50T2JqZWN0PFQgZXh0ZW5kcyBvYmplY3Q+KHByZWZpeDogc3RyaW5nLCBvOiBUKTogVCB7XG4gIGNvbnN0IGhhbmRsZXJzID0ge30gYXMgVDtcbiAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMobykgYXMgKGtleW9mIFQpW10pIHtcbiAgICBpZiAodHlwZW9mIG9ba2V5XSAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgaGFuZGxlcnNba2V5XSA9IG9ba2V5XTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgZiA9IG9ba2V5XTtcbiAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICAgIGhhbmRsZXJzW2tleV0gPSBhc3luYyAoLi4uYXJnczogYW55W10pID0+XG4gICAgICAgIHRyYWNlKGAke3ByZWZpeH0uJHtTdHJpbmcoa2V5KX1gLCB7fSwgKCkgPT4gZiguLi5hcmdzKSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBoYW5kbGVycztcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldFNwYW5LaW5kKGZpZWxkOiBrZXlvZiB0eXBlb2YgU3BhbktpbmQpIHtcbiAgcmV0dXJuIHdpdGhPdGVsKCh4KSA9PiB4LlNwYW5LaW5kW2ZpZWxkXSk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB3aXRoT3RlbDxUPihcbiAgZm46IChvdGVsOiB0eXBlb2YgYXBpKSA9PiBUXG4pOiBQcm9taXNlPEF3YWl0ZWQ8VD4gfCB1bmRlZmluZWQ+IHtcbiAgY29uc3Qgb3RlbCA9IGF3YWl0IE90ZWxBcGkudmFsdWU7XG4gIGlmICghb3RlbCkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgcmV0dXJuIGF3YWl0IGZuKG90ZWwpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbGlua1RvQ3VycmVudENvbnRleHQoKTogUHJvbWlzZTxbYXBpLkxpbmtdIHwgdW5kZWZpbmVkPiB7XG4gIHJldHVybiB3aXRoT3RlbCgob3RlbCk6IFthcGkuTGlua10gfCB1bmRlZmluZWQgPT4ge1xuICAgIGNvbnN0IGNvbnRleHQgPSBvdGVsLnRyYWNlLmdldEFjdGl2ZVNwYW4oKT8uc3BhbkNvbnRleHQoKTtcbiAgICBpZiAoIWNvbnRleHQpIHJldHVybjtcbiAgICByZXR1cm4gW3sgY29udGV4dCB9XTtcbiAgfSk7XG59XG5cbi8qKlxuICogQnVpbGRzIGEgc3BhbiBsaW5rIHBvaW50aW5nIGF0IHRoZSBzcGFuIGNvbnRleHQgZW1iZWRkZWQgaW4gYSBzZXJpYWxpemVkXG4gKiB0cmFjZSBjYXJyaWVyIChlLmcuIHRoZSBydW4tb3JpZ2luIGNvbnRleHQgZmxvd2luZyB0aHJvdWdoIHF1ZXVlXG4gKiBtZXNzYWdlcykuIFJldHVybnMgYHVuZGVmaW5lZGAgd2hlbiBPVEVMIGlzIHVuYXZhaWxhYmxlLCB0aGUgY2FycmllciBpc1xuICogYWJzZW50LCBvciBpdCBkb2VzIG5vdCBjb250YWluIGEgdmFsaWQgc3BhbiBjb250ZXh0LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbGlua1RvVHJhY2VDYXJyaWVyKFxuICBjYXJyaWVyOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHwgdW5kZWZpbmVkXG4pOiBQcm9taXNlPGFwaS5MaW5rIHwgdW5kZWZpbmVkPiB7XG4gIGlmICghY2FycmllcikgcmV0dXJuO1xuICBjb25zdCBbY29udGV4dCwgb3RlbF0gPSBhd2FpdCBQcm9taXNlLmFsbChbXG4gICAgZ2V0U3BhbkNvbnRleHRGb3JUcmFjZUNhcnJpZXIoY2FycmllciksXG4gICAgT3RlbEFwaS52YWx1ZSxcbiAgXSk7XG4gIGlmICghY29udGV4dCB8fCAhb3RlbCkgcmV0dXJuO1xuICBpZiAoIW90ZWwudHJhY2UuaXNTcGFuQ29udGV4dFZhbGlkKGNvbnRleHQpKSByZXR1cm47XG4gIHJldHVybiB7IGNvbnRleHQgfTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBCYWdnYWdlIFByb3BhZ2F0aW9uIFV0aWxpdGllc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogV29ya2Zsb3cgY29udGV4dCB0byBwcm9wYWdhdGUgdmlhIGJhZ2dhZ2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBXb3JrZmxvd0JhZ2dhZ2VDb250ZXh0IHtcbiAgd29ya2Zsb3dSdW5JZDogc3RyaW5nO1xuICB3b3JrZmxvd05hbWU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBTZXRzIHdvcmtmbG93IGNvbnRleHQgYXMgT1RFTCBiYWdnYWdlIGZvciBhdXRvbWF0aWMgcHJvcGFnYXRpb24uXG4gKiBCYWdnYWdlIGlzIHByb3BhZ2F0ZWQgYWNyb3NzIHNlcnZpY2UgYm91bmRhcmllcyB2aWEgSFRUUCBoZWFkZXJzLlxuICogQHBhcmFtIGNvbnRleHQgLSBXb3JrZmxvdyBjb250ZXh0IHRvIHNldCBhcyBiYWdnYWdlXG4gKiBAcmV0dXJucyBBIGZ1bmN0aW9uIHRvIHJ1biB3aXRoaW4gdGhlIGJhZ2dhZ2UgY29udGV4dFxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gd2l0aFdvcmtmbG93QmFnZ2FnZTxUPihcbiAgY29udGV4dDogV29ya2Zsb3dCYWdnYWdlQ29udGV4dCxcbiAgZm46ICgpID0+IFByb21pc2U8VD5cbik6IFByb21pc2U8VD4ge1xuICBjb25zdCBvdGVsID0gYXdhaXQgT3RlbEFwaS52YWx1ZTtcbiAgaWYgKCFvdGVsKSByZXR1cm4gZm4oKTtcblxuICAvLyBDcmVhdGUgYmFnZ2FnZSB3aXRoIHdvcmtmbG93IGNvbnRleHRcbiAgY29uc3QgYmFnZ2FnZSA9IG90ZWwucHJvcGFnYXRpb24uY3JlYXRlQmFnZ2FnZSh7XG4gICAgJ3dvcmtmbG93LnJ1bl9pZCc6IHsgdmFsdWU6IGNvbnRleHQud29ya2Zsb3dSdW5JZCB9LFxuICAgICd3b3JrZmxvdy5uYW1lJzogeyB2YWx1ZTogY29udGV4dC53b3JrZmxvd05hbWUgfSxcbiAgfSk7XG5cbiAgLy8gU2V0IGJhZ2dhZ2UgaW4gY29udGV4dCBhbmQgcnVuIGZ1bmN0aW9uXG4gIGNvbnN0IGNvbnRleHRXaXRoQmFnZ2FnZSA9IG90ZWwucHJvcGFnYXRpb24uc2V0QmFnZ2FnZShcbiAgICBvdGVsLmNvbnRleHQuYWN0aXZlKCksXG4gICAgYmFnZ2FnZVxuICApO1xuXG4gIHJldHVybiBvdGVsLmNvbnRleHQud2l0aChjb250ZXh0V2l0aEJhZ2dhZ2UsICgpID0+IGZuKCkpO1xufVxuXG4vKipcbiAqIFJldHJpZXZlcyB3b3JrZmxvdyBjb250ZXh0IGZyb20gT1RFTCBiYWdnYWdlLlxuICogQHJldHVybnMgV29ya2Zsb3cgY29udGV4dCBpZiBwcmVzZW50IGluIGJhZ2dhZ2UsIHVuZGVmaW5lZCBvdGhlcndpc2VcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldFdvcmtmbG93QmFnZ2FnZSgpOiBQcm9taXNlPFxuICBXb3JrZmxvd0JhZ2dhZ2VDb250ZXh0IHwgdW5kZWZpbmVkXG4+IHtcbiAgY29uc3Qgb3RlbCA9IGF3YWl0IE90ZWxBcGkudmFsdWU7XG4gIGlmICghb3RlbCkgcmV0dXJuIHVuZGVmaW5lZDtcblxuICBjb25zdCBiYWdnYWdlID0gb3RlbC5wcm9wYWdhdGlvbi5nZXRCYWdnYWdlKG90ZWwuY29udGV4dC5hY3RpdmUoKSk7XG4gIGlmICghYmFnZ2FnZSkgcmV0dXJuIHVuZGVmaW5lZDtcblxuICBjb25zdCBydW5JZCA9IGJhZ2dhZ2UuZ2V0RW50cnkoJ3dvcmtmbG93LnJ1bl9pZCcpPy52YWx1ZTtcbiAgY29uc3QgbmFtZSA9IGJhZ2dhZ2UuZ2V0RW50cnkoJ3dvcmtmbG93Lm5hbWUnKT8udmFsdWU7XG5cbiAgaWYgKCFydW5JZCB8fCAhbmFtZSkgcmV0dXJuIHVuZGVmaW5lZDtcblxuICByZXR1cm4ge1xuICAgIHdvcmtmbG93UnVuSWQ6IHJ1bklkLFxuICAgIHdvcmtmbG93TmFtZTogbmFtZSxcbiAgfTtcbn1cbiJdfQ==
|
|
337
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVsZW1ldHJ5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3RlbGVtZXRyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdkMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDNUMsT0FBTyxLQUFLLElBQUksTUFBTSxxQ0FBcUMsQ0FBQztBQW9CNUQseUVBQXlFO0FBQ3pFLE1BQU0sNEJBQTRCLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztBQUV2RDs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxvQkFBb0I7SUFDbEMsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQztJQUM5QyxJQUFJLEtBQUssS0FBSyxZQUFZO1FBQUUsT0FBTyxZQUFZLENBQUM7SUFDaEQsSUFBSSxLQUFLLElBQUksS0FBSyxLQUFLLFFBQVEsSUFBSSxDQUFDLDRCQUE0QixDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQzVFLDRCQUE0QixDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN4QyxhQUFhLENBQUMsSUFBSSxDQUNoQiwyQ0FBMkMsS0FBSyxpRUFBaUUsQ0FDbEgsQ0FBQztJQUNKLENBQUM7SUFDRCxPQUFPLFFBQVEsQ0FBQztBQUNsQixDQUFDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLG9CQUFvQixDQUNsQyxPQUEyQztJQUUzQyxPQUFPLE9BQU8sS0FBSyxTQUFTLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0FBQ2xFLENBQUM7QUFFRDs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sVUFBVSxtQkFBbUIsQ0FDakMsU0FBNEIsRUFDNUIsZUFB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QyxLQUFLLElBQUksQ0FBQyxJQUFJO1FBQUUsT0FBTyxTQUFTLENBQUM7SUFFdEMsT0FBTztRQUNMLGFBQWEsRUFBRSxLQUFLO1FBQ3BCLFlBQVksRUFBRSxJQUFJO0tBQ25CLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgKiBhcyBhcGkgZnJvbSAnQG9wZW50ZWxlbWV0cnkvYXBpJztcbmltcG9ydCB0eXBlIHsgU3BhbiwgU3BhbktpbmQsIFNwYW5PcHRpb25zIH0gZnJvbSAnQG9wZW50ZWxlbWV0cnkvYXBpJztcbmltcG9ydCB7IG9uY2UgfSBmcm9tICdAd29ya2Zsb3cvdXRpbHMnO1xuaW1wb3J0IHsgV29ya2Zsb3dTdXNwZW5zaW9uIH0gZnJvbSAnLi9nbG9iYWwuanMnO1xuaW1wb3J0IHsgcnVudGltZUxvZ2dlciB9IGZyb20gJy4vbG9nZ2VyLmpzJztcbmltcG9ydCAqIGFzIEF0dHIgZnJvbSAnLi90ZWxlbWV0cnkvc2VtYW50aWMtY29udmVudGlvbnMuanMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFRyYWNlIENvbnRleHQgUHJvcGFnYXRpb24gVXRpbGl0aWVzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBDb250cm9scyBob3cgd29ya2Zsb3cvc3RlcCBxdWV1ZS1oYW5kbGVyIHNwYW5zIHJlbGF0ZSB0byB0aGUgcnVuLW9yaWdpblxuICogdHJhY2UgY29udGV4dCBjYXJyaWVkIGluIHF1ZXVlIG1lc3NhZ2VzOlxuICpcbiAqIC0gYCdsaW5rZWQnYCAoZGVmYXVsdCk6IGVhY2ggaW52b2NhdGlvbiBzdGFydHMgYSBORVcgcm9vdCB0cmFjZTsgdGhlXG4gKiAgIHJ1bi1vcmlnaW4gY29udGV4dCAoYW5kIHRoZSBpbmNvbWluZyBkZWxpdmVyeSBjb250ZXh0KSBhcmUgYXR0YWNoZWQgYXNcbiAqICAgc3BhbiBsaW5rcy4gVGhpcyBrZWVwcyB0cmFjZXMgYm91bmRlZCBwZXIgaW52b2NhdGlvbiBpbnN0ZWFkIG9mXG4gKiAgIHN0aXRjaGluZyBhIGxvbmctbGl2ZWQgcnVuIGludG8gb25lIGdpYW50IHRyYWNlLlxuICogLSBgJ2NvbnRpbnVvdXMnYDogdGhlIHJlc3RvcmVkIHJ1bi1vcmlnaW4gY29udGV4dCBiZWNvbWVzIHRoZSBwYXJlbnQgb2ZcbiAqICAgdGhlIGludm9jYXRpb24gc3BhbiAobGVnYWN5IGJlaGF2aW9yKSwgcHJvZHVjaW5nIGEgc2luZ2xlIHRyYWNlIHRoYXRcbiAqICAgc3BhbnMgdGhlIGVudGlyZSBydW4uXG4gKi9cbmV4cG9ydCB0eXBlIFdvcmtmbG93VHJhY2VNb2RlID0gJ2xpbmtlZCcgfCAnY29udGludW91cyc7XG5cbi8qKiBVbnJlY29nbml6ZWQgYFdPUktGTE9XX1RSQUNFX01PREVgIHZhbHVlcyB3ZSBhbHJlYWR5IHdhcm5lZCBhYm91dC4gKi9cbmNvbnN0IHdhcm5lZFVucmVjb2duaXplZFRyYWNlTW9kZXMgPSBuZXcgU2V0PHN0cmluZz4oKTtcblxuLyoqXG4gKiBSZXNvbHZlcyB0aGUgYWN0aXZlIHRyYWNlIG1vZGUgZnJvbSB0aGUgYFdPUktGTE9XX1RSQUNFX01PREVgIGVudiB2YXIuXG4gKiBEZWZhdWx0cyB0byBgJ2xpbmtlZCdgOyBhbnkgdmFsdWUgb3RoZXIgdGhhbiBgJ2NvbnRpbnVvdXMnYCBzZWxlY3RzIGl0LlxuICogVW5yZWNvZ25pemVkIG5vbi1lbXB0eSB2YWx1ZXMgKGUuZy4gdHlwb3MgbGlrZSBgY29udGlub3VzYCkgZW1pdCBhXG4gKiBvbmUtdGltZSB3YXJuaW5nIHNvIHNpbGVudCBmYWxsYmFjayB0byBgbGlua2VkYCBpcyBhdCBsZWFzdCB2aXNpYmxlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0V29ya2Zsb3dUcmFjZU1vZGUoKTogV29ya2Zsb3dUcmFjZU1vZGUge1xuICBjb25zdCB2YWx1ZSA9IHByb2Nlc3MuZW52LldPUktGTE9XX1RSQUNFX01PREU7XG4gIGlmICh2YWx1ZSA9PT0gJ2NvbnRpbnVvdXMnKSByZXR1cm4gJ2NvbnRpbnVvdXMnO1xuICBpZiAodmFsdWUgJiYgdmFsdWUgIT09ICdsaW5rZWQnICYmICF3YXJuZWRVbnJlY29nbml6ZWRUcmFjZU1vZGVzLmhhcyh2YWx1ZSkpIHtcbiAgICB3YXJuZWRVbnJlY29nbml6ZWRUcmFjZU1vZGVzLmFkZCh2YWx1ZSk7XG4gICAgcnVudGltZUxvZ2dlci53YXJuKFxuICAgICAgYFVucmVjb2duaXplZCBXT1JLRkxPV19UUkFDRV9NT0RFIHZhbHVlIFwiJHt2YWx1ZX1cIjsgZXhwZWN0ZWQgXCJsaW5rZWRcIiBvciBcImNvbnRpbnVvdXNcIi4gRmFsbGluZyBiYWNrIHRvIFwibGlua2VkXCIuYFxuICAgICk7XG4gIH1cbiAgcmV0dXJuICdsaW5rZWQnO1xufVxuXG4vKipcbiAqIFJldHVybnMgd2hldGhlciBhIHNlcmlhbGl6ZWQgdHJhY2UgY2FycmllciBpcyB1c2FibGUsIGkuZS4gcHJlc2VudCBhbmRcbiAqIG5vbi1lbXB0eS4gYHNlcmlhbGl6ZVRyYWNlQ2FycmllcigpYCByZXR1cm5zIGB7fWAgd2hlbiBubyBPVEVMIFNESyBpc1xuICogcmVnaXN0ZXJlZCBvciBubyBzcGFuIGlzIGFjdGl2ZSwgYW5kIGBzdGFydCgpYCBhbHdheXMgYXR0YWNoZXMgdGhlXG4gKiBjYXJyaWVyIHRvIHRoZSBmaXJzdCBxdWV1ZSBtZXNzYWdlIOKAlCBzbyBhbiBlbXB0eSBjYXJyaWVyIG11c3QgYmUgdHJlYXRlZFxuICogdGhlIHNhbWUgYXMgYW4gYWJzZW50IG9uZSB3aGVyZXZlciB0aGUgdHJhY2UtbW9kZSBsb2dpYyBicmFuY2hlcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVXNhYmxlVHJhY2VDYXJyaWVyKFxuICBjYXJyaWVyOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHwgdW5kZWZpbmVkXG4pOiBjYXJyaWVyIGlzIFJlY29yZDxzdHJpbmcsIHN0cmluZz4ge1xuICByZXR1cm4gY2FycmllciAhPT0gdW5kZWZpbmVkICYmIE9iamVjdC5rZXlzKGNhcnJpZXIpLmxlbmd0aCA+IDA7XG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgdHJhY2UgY2FycmllciB0byBhdHRhY2ggdG8gbWVzc2FnZXMgdGhlIGN1cnJlbnQgaW52b2NhdGlvblxuICogZW5xdWV1ZXMuIEluIGBsaW5rZWRgIG1vZGUgdGhlIE9SSUdJTkFMIHJ1bi1vcmlnaW4gY2FycmllciBpcyBmb3J3YXJkZWRcbiAqIHVuY2hhbmdlZCAod2hlbiB1c2FibGUpIHNvIGV2ZXJ5IGZ1dHVyZSBpbnZvY2F0aW9uIGxpbmtzIGJhY2sgdG8gdGhlIHNhbWVcbiAqIG9yaWdpbjsgb3RoZXJ3aXNlIOKAlCBgY29udGludW91c2AgbW9kZSwgb3Igbm8gdXNhYmxlIGluY29taW5nIGNhcnJpZXIg4oCUXG4gKiB0aGUgY3VycmVudCAoYWN0aXZlKSBjb250ZXh0IGlzIHNlcmlhbGl6ZWQsIHNvIHRoZSB0cmFjZSBrZWVwcyBjaGFpbmluZ1xuICogKGNvbnRpbnVvdXMpIG9yIHRoZSBmaXJzdCBpbnN0cnVtZW50ZWQgaW52b2NhdGlvbiBiZWNvbWVzIHRoZSBkZS1mYWN0b1xuICogb3JpZ2luIChsaW5rZWQpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TmV4dFRyYWNlQ2FycmllcihcbiAgdHJhY2VNb2RlOiBXb3JrZmxvd1RyYWNlTW9kZSxcbiAgaW5jb21pbmdDYXJyaWVyOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHwgdW5kZWZpbmVkXG4pOiBQcm9taXNlPFJlY29yZDxzdHJpbmcsIHN0cmluZz4+IHtcbiAgcmV0dXJuIHRyYWNlTW9kZSA9PT0gJ2xpbmtlZCcgJiYgaXNVc2FibGVUcmFjZUNhcnJpZXIoaW5jb21pbmdDYXJyaWVyKVxuICAgID8gUHJvbWlzZS5yZXNvbHZlKGluY29taW5nQ2FycmllcilcbiAgICA6IHNlcmlhbGl6ZVRyYWNlQ2FycmllcigpO1xufVxuXG4vKipcbiAqIEJ1aWxkcyB0aGUgc3BhbiBsaW5rcyBmb3IgYSBxdWV1ZS1kZWxpdmVyZWQgaW52b2NhdGlvbiBzcGFuXG4gKiAoYHdvcmtmbG93LmV4ZWN1dGVgIC8gYHN0ZXAuZXhlY3V0ZWApOlxuICpcbiAqIC0gSW4gYGxpbmtlZGAgbW9kZSB0aGUgaW52b2NhdGlvbiBzcGFuIGlzIGEgQ0hJTEQgb2YgdGhlIGxvY2FsIGRlbGl2ZXJ5XG4gKiAgIChmbG93LXJvdXRlKSBjb250ZXh0LCBzbyB0aGUgb25seSBsaW5rIGlzIHRvIHRoZSBydW4tb3JpZ2luIGNvbnRleHRcbiAqICAgZnJvbSB0aGUgbWVzc2FnZSdzIHRyYWNlIGNhcnJpZXIg4oCUIGNvbm5lY3RpbmcgdGhpcyBib3VuZGVkIHBlci1pbnZvY2F0aW9uXG4gKiAgIHRyYWNlIGJhY2sgdG8gd2hlcmUgdGhlIHJ1biB3YXMgc3RhcnRlZC4gVGhlIHJ1bi1vcmlnaW4gY29udGV4dCBpcyBhXG4gKiAgIGxpbmssIG5ldmVyIGEgcGFyZW50LCBhbmQgcmUtZW5xdWV1ZXMgZm9yd2FyZCB0aGUgb3JpZ2luYWwgY2FycmllclxuICogICB1bmNoYW5nZWQsIHNvIHRoZSB3aG9sZSBydW4gaXMgbmV2ZXIgc3RpdGNoZWQgaW50byBvbmUgZ2lhbnQgdHJhY2UuXG4gKiAgIFRoZSBsaW5rIGlzIHNraXBwZWQgd2hlbiB0aGUgY2FycmllciBpcyBhYnNlbnQsIGVtcHR5LCBvciBpbnZhbGlkLlxuICogLSBJbiBgY29udGludW91c2AgbW9kZSB0aGUgcnVuLW9yaWdpbiBjb250ZXh0IGlzIHJlc3RvcmVkIGFzIHRoZSBwYXJlbnRcbiAqICAgaW5zdGVhZCwgYW5kIHRoZSBsaW5rIHBvaW50cyBhdCB0aGUgaW5jb21pbmcgZGVsaXZlcnkgY29udGV4dC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGJ1aWxkSW52b2NhdGlvblNwYW5MaW5rcyhcbiAgdHJhY2VNb2RlOiBXb3JrZmxvd1RyYWNlTW9kZSxcbiAgaW5jb21pbmdDYXJyaWVyOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHwgdW5kZWZpbmVkXG4pOiBQcm9taXNlPGFwaS5MaW5rW10gfCB1bmRlZmluZWQ+IHtcbiAgaWYgKHRyYWNlTW9kZSAhPT0gJ2xpbmtlZCcpIHJldHVybiBsaW5rVG9DdXJyZW50Q29udGV4dCgpO1xuICBjb25zdCBvcmlnaW5MaW5rID0gYXdhaXQgbGlua1RvVHJhY2VDYXJyaWVyKFxuICAgIGlzVXNhYmxlVHJhY2VDYXJyaWVyKGluY29taW5nQ2FycmllcikgPyBpbmNvbWluZ0NhcnJpZXIgOiB1bmRlZmluZWRcbiAgKTtcbiAgcmV0dXJuIG9yaWdpbkxpbmsgPyBbb3JpZ2luTGlua10gOiB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogU2VyaWFsaXplcyB0aGUgY3VycmVudCB0cmFjZSBjb250ZXh0IGludG8gYSBmb3JtYXQgdGhhdCBjYW4gYmUgcGFzc2VkIHRocm91Z2ggcXVldWVzXG4gKiBAcmV0dXJucyBBIHJlY29yZCBvZiBzdHJpbmdzIHJlcHJlc2VudGluZyB0aGUgdHJhY2UgY29udGV4dFxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc2VyaWFsaXplVHJhY2VDYXJyaWVyKCk6IFByb21pc2U8UmVjb3JkPHN0cmluZywgc3RyaW5nPj4ge1xuICBjb25zdCBvdGVsID0gYXdhaXQgT3RlbEFwaS52YWx1ZTtcbiAgaWYgKCFvdGVsKSByZXR1cm4ge307XG4gIGNvbnN0IGNhcnJpZXI6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcbiAgLy8gSW5qZWN0IHRoZSBjdXJyZW50IGNvbnRleHQgaW50byB0aGUgY2FycmllclxuICBvdGVsLnByb3BhZ2F0aW9uLmluamVjdChvdGVsLmNvbnRleHQuYWN0aXZlKCksIGNhcnJpZXIpO1xuICByZXR1cm4gY2Fycmllcjtcbn1cblxuLyoqXG4gKiBEZXNlcmlhbGl6ZXMgdHJhY2UgY29udGV4dCBhbmQgcmV0dXJucyBhIGNvbnRleHQgdGhhdCBjYW4gYmUgdXNlZCB0byBjb250aW51ZSB0aGUgdHJhY2VcbiAqIEBwYXJhbSB0cmFjZUNhcnJpZXIgVGhlIHNlcmlhbGl6ZWQgdHJhY2UgY29udGV4dFxuICogQHJldHVybnMgT3BlblRlbGVtZXRyeSBjb250ZXh0IHdpdGggdGhlIHJlc3RvcmVkIHRyYWNlXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBkZXNlcmlhbGl6ZVRyYWNlQ2FycmllcihcbiAgdHJhY2VDYXJyaWVyOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+XG4pIHtcbiAgY29uc3Qgb3RlbCA9IGF3YWl0IE90ZWxBcGkudmFsdWU7XG4gIGlmICghb3RlbCkgcmV0dXJuO1xuICAvLyBFeHRyYWN0IHRoZSBjb250ZXh0IGZyb20gdGhlIGNhcnJpZXJcbiAgcmV0dXJuIG90ZWwucHJvcGFnYXRpb24uZXh0cmFjdChvdGVsLmNvbnRleHQuYWN0aXZlKCksIHRyYWNlQ2Fycmllcik7XG59XG5cbi8qKlxuICogUnVucyBhIGZ1bmN0aW9uIHdpdGhpbiB0aGUgY29udGV4dCBvZiBhIGRlc2VyaWFsaXplZCB0cmFjZVxuICogQHBhcmFtIHRyYWNlQ2FycmllciBUaGUgc2VyaWFsaXplZCB0cmFjZSBjYXJyaWVyIChvcHRpb25hbClcbiAqIEBwYXJhbSBmbiBUaGUgZnVuY3Rpb24gdG8gcnVuIHdpdGhpbiB0aGUgdHJhY2UgY29udGV4dFxuICogQHJldHVybnMgVGhlIHJlc3VsdCBvZiB0aGUgZnVuY3Rpb25cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHdpdGhUcmFjZUNvbnRleHQ8VD4oXG4gIHRyYWNlQ2FycmllcjogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB8IHVuZGVmaW5lZCxcbiAgZm46ICgpID0+IFByb21pc2U8VD5cbik6IFByb21pc2U8VD4ge1xuICBpZiAoIXRyYWNlQ2Fycmllcikge1xuICAgIHJldHVybiBmbigpO1xuICB9XG5cbiAgY29uc3Qgb3RlbCA9IGF3YWl0IE90ZWxBcGkudmFsdWU7XG4gIGlmICghb3RlbCkgcmV0dXJuIGZuKCk7XG5cbiAgY29uc3QgZXh0cmFjdGVkQ29udGV4dCA9IGF3YWl0IGRlc2VyaWFsaXplVHJhY2VDYXJyaWVyKHRyYWNlQ2Fycmllcik7XG4gIGlmICghZXh0cmFjdGVkQ29udGV4dCkge1xuICAgIHJldHVybiBmbigpO1xuICB9XG5cbiAgcmV0dXJuIG90ZWwuY29udGV4dC53aXRoKGV4dHJhY3RlZENvbnRleHQsIGFzeW5jICgpID0+IGF3YWl0IGZuKCkpO1xufVxuXG5jb25zdCBPdGVsQXBpID0gb25jZShhc3luYyAoKSA9PiB7XG4gIC8vIGBAb3BlbnRlbGVtZXRyeS9hcGlgIGlzIGFuIG9wdGlvbmFsIHBlZXIgZGVwZW5kZW5jeS4gVGhlIHN0YXRpYyBzcGVjaWZpZXJcbiAgLy8gaXMgaW50ZW50aW9uYWw6IGVzYnVpbGQtYnVuZGxlZCB0YXJnZXRzICh0aGUgQ0xJJ3NcbiAgLy8gYHZlcmNlbC1idWlsZC1vdXRwdXQtYXBpYCBidWlsZCwgTml0cm8sIEFzdHJvKSBzaGlwIGEgc2VsZi1jb250YWluZWRcbiAgLy8gYnVuZGxlIHdpdGggbm8gbm9kZV9tb2R1bGVzLCBzbyB0aGUgcGFja2FnZSBtdXN0IGJlICppbmxpbmVkKiBhdCBidWlsZFxuICAvLyB0aW1lIGZvciBzcGFucyB0byB3b3JrIGF0IHJ1bnRpbWUg4oCUIGEgcnVudGltZS1idWlsdCBzcGVjaWZpZXIgaXMgb3BhcXVlIHRvXG4gIC8vIGVzYnVpbGQgYW5kIHdvdWxkIHNpbGVudGx5IGRpc2FibGUgdHJhY2luZyB0aGVyZS4gQnVuZGxlcnMgdGhhdCByZWplY3QgYW5cbiAgLy8gdW5yZXNvbHZhYmxlIHN0YXRpYyBgaW1wb3J0KClgIHdoZW4gdGhlIHBlZXIgaXNuJ3QgaW5zdGFsbGVkIChSb2xsdXAvVml0ZSxcbiAgLy8gZS5nLiBTdmVsdGVLaXQpIGluc3RlYWQgZXh0ZXJuYWxpemUgYEBvcGVudGVsZW1ldHJ5L2FwaWAgaW4gdGhlIHdvcmtmbG93XG4gIC8vIGZyYW1ld29yayBpbnRlZ3JhdGlvbiwgd2hpY2gga2VlcHMgdGhlIGJ1aWxkIGdyZWVuIGFuZCBzdGlsbCBsb2FkcyByZWFsXG4gIC8vIE9UZWwgd2hlbiB0aGUgcGVlciBpcyBwcmVzZW50LiBSdW50aW1lIHNlbWFudGljczogcHJlc2VudCDihpIgbG9hZGVkLCBhYnNlbnRcbiAgLy8g4oaSIGNhdWdodCBhbmQgdHJhY2luZyBkaXNhYmxlZC5cbiAgdHJ5IHtcbiAgICByZXR1cm4gYXdhaXQgaW1wb3J0KCdAb3BlbnRlbGVtZXRyeS9hcGknKTtcbiAgfSBjYXRjaCB7XG4gICAgcnVudGltZUxvZ2dlci5pbmZvKCdPcGVuVGVsZW1ldHJ5IG5vdCBhdmFpbGFibGUsIHRyYWNpbmcgd2lsbCBiZSBkaXNhYmxlZCcpO1xuICAgIHJldHVybiBudWxsO1xuICB9XG59KTtcblxuY29uc3QgVHJhY2VyID0gb25jZShhc3luYyAoKSA9PiB7XG4gIGNvbnN0IGFwaSA9IGF3YWl0IE90ZWxBcGkudmFsdWU7XG4gIGlmICghYXBpKSByZXR1cm4gbnVsbDtcbiAgY29uc3QgdHJhY2VyID0gYXBpLnRyYWNlLmdldFRyYWNlcignd29ya2Zsb3cnKTtcbiAgbG9nT3RlbERpYWdub3N0aWNPbmNlKGFwaSwgdHJhY2VyKTtcbiAgcmV0dXJuIHRyYWNlcjtcbn0pO1xuXG4vKipcbiAqIE9uZS1zaG90IHJ1bnRpbWUgZGlhZ25vc3RpYyAoREVCVUc9d29ya2Zsb3c6KiBvbmx5KSwgc2FtZSBzaGFwZSBhcyB0aGUgb25lXG4gKiB3b3JsZC12ZXJjZWwgZW1pdHMgdGFnZ2VkIGB3b3JsZC12ZXJjZWxgOiBwcmludHMgaG93IHRoaXMgbW9kdWxlIGluc3RhbmNlXG4gKiBvZiBgQG9wZW50ZWxlbWV0cnkvYXBpYCBzZWVzIHRoZSBnbG9iYWwgcmVnaXN0cmF0aW9uLCBzbyBhIGRlcGxveW1lbnQnc1xuICogbG9ncyBzaG93IHRoZSB0d28gcGFja2FnZXMnIHZpZXdzIHNpZGUgYnkgc2lkZS5cbiAqL1xubGV0IG90ZWxEaWFnTG9nZ2VkID0gZmFsc2U7XG5mdW5jdGlvbiBsb2dPdGVsRGlhZ25vc3RpY09uY2Uob3RlbDogdHlwZW9mIGFwaSwgdHJhY2VyOiBhcGkuVHJhY2VyKTogdm9pZCB7XG4gIGNvbnN0IGRlYnVnRW5hYmxlZCA9XG4gICAgdHlwZW9mIHByb2Nlc3MgIT09ICd1bmRlZmluZWQnICYmXG4gICAgdHlwZW9mIHByb2Nlc3MuZW52LkRFQlVHID09PSAnc3RyaW5nJyAmJlxuICAgIChwcm9jZXNzLmVudi5ERUJVRy5pbmNsdWRlcygnd29ya2Zsb3c6JykgfHwgcHJvY2Vzcy5lbnYuREVCVUcgPT09ICcqJyk7XG4gIGlmIChvdGVsRGlhZ0xvZ2dlZCB8fCAhZGVidWdFbmFibGVkKSByZXR1cm47XG4gIG90ZWxEaWFnTG9nZ2VkID0gdHJ1ZTtcbiAgdHJ5IHtcbiAgICBjb25zdCBnID0gKGdsb2JhbFRoaXMgYXMgUmVjb3JkPHN5bWJvbCwgdW5rbm93bj4pW1xuICAgICAgU3ltYm9sLmZvcignb3BlbnRlbGVtZXRyeS5qcy5hcGkuMScpXG4gICAgXSBhcyB7IHZlcnNpb24/OiBzdHJpbmcgfSB8IHVuZGVmaW5lZDtcbiAgICBjb25zdCBwcm92aWRlciA9IG90ZWwudHJhY2UuZ2V0VHJhY2VyUHJvdmlkZXIoKTtcbiAgICBjb25zdCBkZWxlZ2F0ZSA9XG4gICAgICAocHJvdmlkZXIgYXMgeyBnZXREZWxlZ2F0ZT86ICgpID0+IHVua25vd24gfSkuZ2V0RGVsZWdhdGU/LigpID8/IHByb3ZpZGVyO1xuICAgIGNvbnN0IHByb2JlID0gdHJhY2VyLnN0YXJ0U3Bhbignd29ya2Zsb3cub3RlbC5wcm9iZS5jb3JlJyk7XG4gICAgY29uc29sZS53YXJuKFxuICAgICAgJ1t3b3JrZmxvdzpvdGVsLWRpYWddIGNvcmUnLFxuICAgICAgSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICBnbG9iYWxSZWdpc3RyYXRpb25WZXJzaW9uOiBnPy52ZXJzaW9uID8/IG51bGwsXG4gICAgICAgIHByb3ZpZGVyQ3RvcjogcHJvdmlkZXI/LmNvbnN0cnVjdG9yPy5uYW1lID8/IG51bGwsXG4gICAgICAgIGRlbGVnYXRlQ3RvcjogKGRlbGVnYXRlIGFzIG9iamVjdCB8IG51bGwpPy5jb25zdHJ1Y3Rvcj8ubmFtZSA/PyBudWxsLFxuICAgICAgICB0cmFjZXJDdG9yOiB0cmFjZXI/LmNvbnN0cnVjdG9yPy5uYW1lID8/IG51bGwsXG4gICAgICAgIHByb2JlQ3RvcjogcHJvYmU/LmNvbnN0cnVjdG9yPy5uYW1lID8/IG51bGwsXG4gICAgICAgIHByb2JlUmVjb3JkaW5nOiBwcm9iZS5pc1JlY29yZGluZygpLFxuICAgICAgfSlcbiAgICApO1xuICAgIHByb2JlLmVuZCgpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUud2FybihcbiAgICAgICdbd29ya2Zsb3c6b3RlbC1kaWFnXSBjb3JlIGZhaWxlZDonLFxuICAgICAgZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBlcnJvclxuICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHRyYWNlPFQ+KFxuICBzcGFuTmFtZTogc3RyaW5nLFxuICAuLi5hcmdzOlxuICAgIHwgW2ZuOiAoc3Bhbj86IFNwYW4pID0+IFByb21pc2U8VD5dXG4gICAgfCBbb3B0czogU3Bhbk9wdGlvbnMsIGZuOiAoc3Bhbj86IFNwYW4pID0+IFByb21pc2U8VD5dXG4pOiBQcm9taXNlPFQ+IHtcbiAgY29uc3QgW3RyYWNlciwgb3RlbF0gPSBhd2FpdCBQcm9taXNlLmFsbChbVHJhY2VyLnZhbHVlLCBPdGVsQXBpLnZhbHVlXSk7XG4gIGNvbnN0IHsgZm4sIG9wdHMgfSA9XG4gICAgdHlwZW9mIGFyZ3NbMF0gPT09ICdmdW5jdGlvbidcbiAgICAgID8geyBmbjogYXJnc1swXSwgb3B0czoge30gfVxuICAgICAgOiB7IGZuOiBhcmdzWzFdLCBvcHRzOiBhcmdzWzBdIH07XG4gIGlmICghZm4pIHRocm93IG5ldyBFcnJvcignRnVuY3Rpb24gdG8gdHJhY2UgbXVzdCBiZSBwcm92aWRlZCcpO1xuXG4gIGlmICghdHJhY2VyIHx8ICFvdGVsKSB7XG4gICAgcmV0dXJuIGF3YWl0IGZuKCk7XG4gIH1cblxuICByZXR1cm4gdHJhY2VyLnN0YXJ0QWN0aXZlU3BhbihzcGFuTmFtZSwgb3B0cywgYXN5bmMgKHNwYW4pID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZm4oc3Bhbik7XG4gICAgICBzcGFuLnNldFN0YXR1cyh7IGNvZGU6IG90ZWwuU3BhblN0YXR1c0NvZGUuT0sgfSk7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHNwYW4uc2V0U3RhdHVzKHtcbiAgICAgICAgY29kZTogb3RlbC5TcGFuU3RhdHVzQ29kZS5FUlJPUixcbiAgICAgICAgbWVzc2FnZTogKGUgYXMgRXJyb3IpLm1lc3NhZ2UsXG4gICAgICB9KTtcbiAgICAgIGFwcGx5V29ya2Zsb3dTdXNwZW5zaW9uVG9TcGFuKGUsIG90ZWwsIHNwYW4pO1xuICAgICAgdGhyb3cgZTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgc3Bhbi5lbmQoKTtcbiAgICB9XG4gIH0pO1xufVxuXG4vKipcbiAqIEVtaXQgYSBzcGFuIHdob3NlIHN0YXJ0IGlzIGJhY2stZGF0ZWQgdG8gYHN0YXJ0RXBvY2hNc2AgYW5kIHdob3NlIGVuZCBpcyBub3csXG4gKiBzbyBpdHMgZHVyYXRpb24gcmVmbGVjdHMgYW4gaW50ZXJ2YWwgb25seSBtZWFzdXJhYmxlIGF0IGl0cyBlbmQgKGUuZy5cbiAqIHRpbWUtdG8tZmlyc3QtY2h1bmssIGtub3duIHdoZW4gdGhlIGZpcnN0IGNodW5rIGFycml2ZXMpLiBVbmxpa2UgYHRyYWNlKClgLFxuICogdGhpcyByZWNvcmRzIGFuIGFscmVhZHktZWxhcHNlZCBzcGFuIGluIG9uZSBzaG90IHJhdGhlciB0aGFuIHdyYXBwaW5nIGFcbiAqIGNhbGxiYWNrLiBOby1vcCB3aGVuIE9wZW5UZWxlbWV0cnkgaXMgbm90IGF2YWlsYWJsZS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlY29yZEVsYXBzZWRTcGFuKFxuICBzcGFuTmFtZTogc3RyaW5nLFxuICBzdGFydEVwb2NoTXM6IG51bWJlcixcbiAgb3B0cz86IFNwYW5PcHRpb25zXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgdHJhY2VyID0gYXdhaXQgVHJhY2VyLnZhbHVlO1xuICBpZiAoIXRyYWNlcikgcmV0dXJuO1xuICB0cmFjZXIuc3RhcnRTcGFuKHNwYW5OYW1lLCB7IC4uLm9wdHMsIHN0YXJ0VGltZTogc3RhcnRFcG9jaE1zIH0pLmVuZCgpO1xufVxuXG4vKipcbiAqIEFwcGxpZXMgd29ya2Zsb3cgc3VzcGVuc2lvbiBhdHRyaWJ1dGVzIHRvIHRoZSBnaXZlbiBzcGFuIGlmIHRoZSBlcnJvciBpcyBhIFdvcmtmbG93U3VzcGVuc2lvblxuICogd2hpY2ggaXMgdGVjaG5pY2FsbHkgbm90IGFuIGVycm9yLCBidXQgYW4gYWxnZWJyYWljIGVmZmVjdCBpbmRpY2F0aW5nIHN1c3BlbnNpb24uXG4gKi9cbmZ1bmN0aW9uIGFwcGx5V29ya2Zsb3dTdXNwZW5zaW9uVG9TcGFuKFxuICBlcnJvcjogdW5rbm93bixcbiAgb3RlbDogdHlwZW9mIGFwaSxcbiAgc3BhbjogYXBpLlNwYW5cbikge1xuICBpZiAoIWVycm9yIHx8ICFXb3JrZmxvd1N1c3BlbnNpb24uaXMoZXJyb3IpKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgc3Bhbi5zZXRTdGF0dXMoeyBjb2RlOiBvdGVsLlNwYW5TdGF0dXNDb2RlLk9LIH0pO1xuICBzcGFuLnNldEF0dHJpYnV0ZXMoe1xuICAgIC4uLkF0dHIuV29ya2Zsb3dTdXNwZW5zaW9uU3RhdGUoJ3N1c3BlbmRlZCcpLFxuICAgIC4uLkF0dHIuV29ya2Zsb3dTdXNwZW5zaW9uU3RlcENvdW50KGVycm9yLnN0ZXBDb3VudCksXG4gICAgLi4uQXR0ci5Xb3JrZmxvd1N1c3BlbnNpb25Ib29rQ291bnQoZXJyb3IuaG9va0NvdW50KSxcbiAgICAuLi5BdHRyLldvcmtmbG93U3VzcGVuc2lvbldhaXRDb3VudChlcnJvci53YWl0Q291bnQpLFxuICB9KTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldFNwYW5Db250ZXh0Rm9yVHJhY2VDYXJyaWVyKFxuICBjYXJyaWVyOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+XG4pIHtcbiAgY29uc3QgW2Rlc2VyaWFsaXplZCwgb3RlbF0gPSBhd2FpdCBQcm9taXNlLmFsbChbXG4gICAgZGVzZXJpYWxpemVUcmFjZUNhcnJpZXIoY2FycmllciksXG4gICAgT3RlbEFwaS52YWx1ZSxcbiAgXSk7XG4gIGlmICghZGVzZXJpYWxpemVkIHx8ICFvdGVsKSByZXR1cm47XG4gIHJldHVybiBvdGVsLnRyYWNlLmdldFNwYW5Db250ZXh0KGRlc2VyaWFsaXplZCk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRBY3RpdmVTcGFuKCkge1xuICByZXR1cm4gYXdhaXQgd2l0aE90ZWwoKG90ZWwpID0+IG90ZWwudHJhY2UuZ2V0QWN0aXZlU3BhbigpKTtcbn1cblxuLyoqXG4gKiBXcmFwcyBhbGwgbWV0aG9kcyBvZiBhbiBvYmplY3Qgd2l0aCB0cmFjaW5nIHNwYW5zLlxuICogQHBhcmFtIHByZWZpeCAtIFByZWZpeCBmb3Igc3BhbiBuYW1lcyAoZS5nLiwgXCJXT1JMRC5ydW5zXCIpXG4gKiBAcGFyYW0gbyAtIE9iamVjdCB3aXRoIG1ldGhvZHMgdG8gaW5zdHJ1bWVudFxuICogQHJldHVybnMgSW5zdHJ1bWVudGVkIG9iamVjdCB3aXRoIHNhbWUgaW50ZXJmYWNlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbnN0cnVtZW50T2JqZWN0PFQgZXh0ZW5kcyBvYmplY3Q+KHByZWZpeDogc3RyaW5nLCBvOiBUKTogVCB7XG4gIGNvbnN0IGhhbmRsZXJzID0ge30gYXMgVDtcbiAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMobykgYXMgKGtleW9mIFQpW10pIHtcbiAgICBpZiAodHlwZW9mIG9ba2V5XSAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgaGFuZGxlcnNba2V5XSA9IG9ba2V5XTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgZiA9IG9ba2V5XTtcbiAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICAgIGhhbmRsZXJzW2tleV0gPSBhc3luYyAoLi4uYXJnczogYW55W10pID0+XG4gICAgICAgIHRyYWNlKGAke3ByZWZpeH0uJHtTdHJpbmcoa2V5KX1gLCB7fSwgKCkgPT4gZiguLi5hcmdzKSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBoYW5kbGVycztcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldFNwYW5LaW5kKGZpZWxkOiBrZXlvZiB0eXBlb2YgU3BhbktpbmQpIHtcbiAgcmV0dXJuIHdpdGhPdGVsKCh4KSA9PiB4LlNwYW5LaW5kW2ZpZWxkXSk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB3aXRoT3RlbDxUPihcbiAgZm46IChvdGVsOiB0eXBlb2YgYXBpKSA9PiBUXG4pOiBQcm9taXNlPEF3YWl0ZWQ8VD4gfCB1bmRlZmluZWQ+IHtcbiAgY29uc3Qgb3RlbCA9IGF3YWl0IE90ZWxBcGkudmFsdWU7XG4gIGlmICghb3RlbCkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgcmV0dXJuIGF3YWl0IGZuKG90ZWwpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbGlua1RvQ3VycmVudENvbnRleHQoKTogUHJvbWlzZTxbYXBpLkxpbmtdIHwgdW5kZWZpbmVkPiB7XG4gIHJldHVybiB3aXRoT3RlbCgob3RlbCk6IFthcGkuTGlua10gfCB1bmRlZmluZWQgPT4ge1xuICAgIGNvbnN0IGNvbnRleHQgPSBvdGVsLnRyYWNlLmdldEFjdGl2ZVNwYW4oKT8uc3BhbkNvbnRleHQoKTtcbiAgICBpZiAoIWNvbnRleHQpIHJldHVybjtcbiAgICByZXR1cm4gW3sgY29udGV4dCB9XTtcbiAgfSk7XG59XG5cbi8qKlxuICogQnVpbGRzIGEgc3BhbiBsaW5rIHBvaW50aW5nIGF0IHRoZSBzcGFuIGNvbnRleHQgZW1iZWRkZWQgaW4gYSBzZXJpYWxpemVkXG4gKiB0cmFjZSBjYXJyaWVyIChlLmcuIHRoZSBydW4tb3JpZ2luIGNvbnRleHQgZmxvd2luZyB0aHJvdWdoIHF1ZXVlXG4gKiBtZXNzYWdlcykuIFJldHVybnMgYHVuZGVmaW5lZGAgd2hlbiBPVEVMIGlzIHVuYXZhaWxhYmxlLCB0aGUgY2FycmllciBpc1xuICogYWJzZW50LCBvciBpdCBkb2VzIG5vdCBjb250YWluIGEgdmFsaWQgc3BhbiBjb250ZXh0LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbGlua1RvVHJhY2VDYXJyaWVyKFxuICBjYXJyaWVyOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHwgdW5kZWZpbmVkXG4pOiBQcm9taXNlPGFwaS5MaW5rIHwgdW5kZWZpbmVkPiB7XG4gIGlmICghY2FycmllcikgcmV0dXJuO1xuICBjb25zdCBbY29udGV4dCwgb3RlbF0gPSBhd2FpdCBQcm9taXNlLmFsbChbXG4gICAgZ2V0U3BhbkNvbnRleHRGb3JUcmFjZUNhcnJpZXIoY2FycmllciksXG4gICAgT3RlbEFwaS52YWx1ZSxcbiAgXSk7XG4gIGlmICghY29udGV4dCB8fCAhb3RlbCkgcmV0dXJuO1xuICBpZiAoIW90ZWwudHJhY2UuaXNTcGFuQ29udGV4dFZhbGlkKGNvbnRleHQpKSByZXR1cm47XG4gIHJldHVybiB7IGNvbnRleHQgfTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBCYWdnYWdlIFByb3BhZ2F0aW9uIFV0aWxpdGllc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogV29ya2Zsb3cgY29udGV4dCB0byBwcm9wYWdhdGUgdmlhIGJhZ2dhZ2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBXb3JrZmxvd0JhZ2dhZ2VDb250ZXh0IHtcbiAgd29ya2Zsb3dSdW5JZDogc3RyaW5nO1xuICB3b3JrZmxvd05hbWU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBTZXRzIHdvcmtmbG93IGNvbnRleHQgYXMgT1RFTCBiYWdnYWdlIGZvciBhdXRvbWF0aWMgcHJvcGFnYXRpb24uXG4gKiBCYWdnYWdlIGlzIHByb3BhZ2F0ZWQgYWNyb3NzIHNlcnZpY2UgYm91bmRhcmllcyB2aWEgSFRUUCBoZWFkZXJzLlxuICogQHBhcmFtIGNvbnRleHQgLSBXb3JrZmxvdyBjb250ZXh0IHRvIHNldCBhcyBiYWdnYWdlXG4gKiBAcmV0dXJucyBBIGZ1bmN0aW9uIHRvIHJ1biB3aXRoaW4gdGhlIGJhZ2dhZ2UgY29udGV4dFxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gd2l0aFdvcmtmbG93QmFnZ2FnZTxUPihcbiAgY29udGV4dDogV29ya2Zsb3dCYWdnYWdlQ29udGV4dCxcbiAgZm46ICgpID0+IFByb21pc2U8VD5cbik6IFByb21pc2U8VD4ge1xuICBjb25zdCBvdGVsID0gYXdhaXQgT3RlbEFwaS52YWx1ZTtcbiAgaWYgKCFvdGVsKSByZXR1cm4gZm4oKTtcblxuICAvLyBDcmVhdGUgYmFnZ2FnZSB3aXRoIHdvcmtmbG93IGNvbnRleHRcbiAgY29uc3QgYmFnZ2FnZSA9IG90ZWwucHJvcGFnYXRpb24uY3JlYXRlQmFnZ2FnZSh7XG4gICAgJ3dvcmtmbG93LnJ1bl9pZCc6IHsgdmFsdWU6IGNvbnRleHQud29ya2Zsb3dSdW5JZCB9LFxuICAgICd3b3JrZmxvdy5uYW1lJzogeyB2YWx1ZTogY29udGV4dC53b3JrZmxvd05hbWUgfSxcbiAgfSk7XG5cbiAgLy8gU2V0IGJhZ2dhZ2UgaW4gY29udGV4dCBhbmQgcnVuIGZ1bmN0aW9uXG4gIGNvbnN0IGNvbnRleHRXaXRoQmFnZ2FnZSA9IG90ZWwucHJvcGFnYXRpb24uc2V0QmFnZ2FnZShcbiAgICBvdGVsLmNvbnRleHQuYWN0aXZlKCksXG4gICAgYmFnZ2FnZVxuICApO1xuXG4gIHJldHVybiBvdGVsLmNvbnRleHQud2l0aChjb250ZXh0V2l0aEJhZ2dhZ2UsICgpID0+IGZuKCkpO1xufVxuXG4vKipcbiAqIFJldHJpZXZlcyB3b3JrZmxvdyBjb250ZXh0IGZyb20gT1RFTCBiYWdnYWdlLlxuICogQHJldHVybnMgV29ya2Zsb3cgY29udGV4dCBpZiBwcmVzZW50IGluIGJhZ2dhZ2UsIHVuZGVmaW5lZCBvdGhlcndpc2VcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldFdvcmtmbG93QmFnZ2FnZSgpOiBQcm9taXNlPFxuICBXb3JrZmxvd0JhZ2dhZ2VDb250ZXh0IHwgdW5kZWZpbmVkXG4+IHtcbiAgY29uc3Qgb3RlbCA9IGF3YWl0IE90ZWxBcGkudmFsdWU7XG4gIGlmICghb3RlbCkgcmV0dXJuIHVuZGVmaW5lZDtcblxuICBjb25zdCBiYWdnYWdlID0gb3RlbC5wcm9wYWdhdGlvbi5nZXRCYWdnYWdlKG90ZWwuY29udGV4dC5hY3RpdmUoKSk7XG4gIGlmICghYmFnZ2FnZSkgcmV0dXJuIHVuZGVmaW5lZDtcblxuICBjb25zdCBydW5JZCA9IGJhZ2dhZ2UuZ2V0RW50cnkoJ3dvcmtmbG93LnJ1bl9pZCcpPy52YWx1ZTtcbiAgY29uc3QgbmFtZSA9IGJhZ2dhZ2UuZ2V0RW50cnkoJ3dvcmtmbG93Lm5hbWUnKT8udmFsdWU7XG5cbiAgaWYgKCFydW5JZCB8fCAhbmFtZSkgcmV0dXJuIHVuZGVmaW5lZDtcblxuICByZXR1cm4ge1xuICAgIHdvcmtmbG93UnVuSWQ6IHJ1bklkLFxuICAgIHdvcmtmbG93TmFtZTogbmFtZSxcbiAgfTtcbn1cbiJdfQ==
|
package/dist/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const version = "5.0.0-beta.
|
|
1
|
+
export declare const version = "5.0.0-beta.35";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/dist/version.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
// Generated by genversion.
|
|
2
|
-
export const version = '5.0.0-beta.
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
export const version = '5.0.0-beta.35';
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy92ZXJzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDJCQUEyQjtBQUMzQixNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsZUFBZSxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLy8gR2VuZXJhdGVkIGJ5IGdlbnZlcnNpb24uXG5leHBvcnQgY29uc3QgdmVyc2lvbiA9ICc1LjAuMC1iZXRhLjM1J1xuIl19
|
|
@@ -414,7 +414,7 @@ const flowTriggers = [getWorkflowQueueTrigger()];
|
|
|
414
414
|
const stepTriggers = [STEP_QUEUE_TRIGGER];
|
|
415
415
|
```
|
|
416
416
|
|
|
417
|
-
If your integration constructs the flow trigger object itself instead of calling `getWorkflowQueueTrigger()`, it must add `maxConcurrency: 1` to that trigger when sequential replays are enabled at build time (`WORKFLOW_SEQUENTIAL_REPLAYS=1
|
|
417
|
+
If your integration constructs the flow trigger object itself instead of calling `getWorkflowQueueTrigger()`, it must add `maxConcurrency: 1` to that trigger when sequential replays are enabled at build time (`WORKFLOW_SEQUENTIAL_REPLAYS=1` — the exported `isSequentialReplaysEnabled()` helper implements this check). The runtime half of the feature (per-run queue topics) activates from the environment variable alone — without the trigger half, those per-run topics are not serialized and the setting only adds queue-topic cardinality.
|
|
418
418
|
|
|
419
419
|
|
|
420
420
|
### Custom implementations
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@workflow/core",
|
|
3
|
-
"version": "5.0.0-beta.
|
|
3
|
+
"version": "5.0.0-beta.35",
|
|
4
4
|
"description": "Core runtime and engine for Workflow SDK",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -98,12 +98,12 @@
|
|
|
98
98
|
"semver": "7.7.4",
|
|
99
99
|
"ulid": "~3.0.1",
|
|
100
100
|
"zod": "~4.3.6",
|
|
101
|
-
"@workflow/errors": "5.0.0-beta.
|
|
101
|
+
"@workflow/errors": "5.0.0-beta.11",
|
|
102
102
|
"@workflow/serde": "5.0.0-beta.2",
|
|
103
103
|
"@workflow/utils": "5.0.0-beta.6",
|
|
104
|
-
"@workflow/world": "5.0.0-beta.
|
|
105
|
-
"@workflow/world-local": "5.0.0-beta.
|
|
106
|
-
"@workflow/world-vercel": "5.0.0-beta.
|
|
104
|
+
"@workflow/world": "5.0.0-beta.21",
|
|
105
|
+
"@workflow/world-local": "5.0.0-beta.29",
|
|
106
|
+
"@workflow/world-vercel": "5.0.0-beta.31"
|
|
107
107
|
},
|
|
108
108
|
"devDependencies": {
|
|
109
109
|
"@opentelemetry/api": "1.9.0",
|