@warp-drive-mirror/ember 0.0.0-beta.9 → 0.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js.map +1 -1
- package/package.json +9 -9
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../node_modules/.pnpm/decorator-transforms@2.3.0_@babel+core@7.26.0/node_modules/decorator-transforms/dist/runtime-BPCpkOf1.js","../src/-private/request-state.ts","../src/-private/promise-state.ts","../src/-private/await.gts","../src/-private/request.gts"],"sourcesContent":["const deferred = /* @__PURE__ */ new WeakMap();\nfunction deferDecorator(proto, prop, desc) {\n let map = deferred.get(proto);\n if (!map) {\n map = /* @__PURE__ */ new Map();\n deferred.set(proto, map);\n }\n map.set(prop, desc);\n}\nfunction findDeferredDecorator(target, prop) {\n var _a;\n let cursor = target.prototype;\n while (cursor) {\n let desc = (_a = deferred.get(cursor)) == null ? void 0 : _a.get(prop);\n if (desc) {\n return desc;\n }\n cursor = cursor.prototype;\n }\n}\nfunction decorateFieldV1(target, prop, decorators, initializer) {\n return decorateFieldV2(target.prototype, prop, decorators, initializer);\n}\nfunction decorateFieldV2(prototype, prop, decorators, initializer) {\n let desc = {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n };\n if (initializer) {\n desc.initializer = initializer;\n }\n for (let decorator of decorators) {\n desc = decorator(prototype, prop, desc) || desc;\n }\n if (desc.initializer === void 0) {\n Object.defineProperty(prototype, prop, desc);\n } else {\n deferDecorator(prototype, prop, desc);\n }\n}\nfunction decorateMethodV1({ prototype }, prop, decorators) {\n return decorateMethodV2(prototype, prop, decorators);\n}\nfunction decorateMethodV2(prototype, prop, decorators) {\n const origDesc = Object.getOwnPropertyDescriptor(prototype, prop);\n let desc = { ...origDesc };\n for (let decorator of decorators) {\n desc = decorator(prototype, prop, desc) || desc;\n }\n if (desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(prototype) : void 0;\n desc.initializer = void 0;\n }\n Object.defineProperty(prototype, prop, desc);\n}\nfunction initializeDeferredDecorator(target, prop) {\n let desc = findDeferredDecorator(target.constructor, prop);\n if (desc) {\n Object.defineProperty(target, prop, {\n enumerable: desc.enumerable,\n configurable: desc.configurable,\n writable: desc.writable,\n value: desc.initializer ? desc.initializer.call(target) : void 0\n });\n }\n}\nfunction decorateClass(target, decorators) {\n return decorators.reduce(\n (accum, decorator) => decorator(accum) || accum,\n target\n );\n}\nfunction decoratePOJO(pojo, decorated) {\n for (let [type, prop, decorators] of decorated) {\n if (type === \"field\") {\n decoratePojoField(pojo, prop, decorators);\n } else {\n decorateMethodV2(pojo, prop, decorators);\n }\n }\n return pojo;\n}\nfunction decoratePojoField(pojo, prop, decorators) {\n let desc = {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: () => {\n var _a;\n return (_a = Object.getOwnPropertyDescriptor(pojo, prop)) == null ? void 0 : _a.value;\n }\n };\n for (let decorator of decorators) {\n desc = decorator(pojo, prop, desc) || desc;\n }\n if (desc.initializer) {\n desc.value = desc.initializer.call(pojo);\n delete desc.initializer;\n }\n Object.defineProperty(pojo, prop, desc);\n}\nconst runtime = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n c: decorateClass,\n f: decorateFieldV1,\n g: decorateFieldV2,\n i: initializeDeferredDecorator,\n m: decorateMethodV1,\n n: decorateMethodV2,\n p: decoratePOJO\n}, Symbol.toStringTag, { value: \"Module\" }));\nexport {\n decorateFieldV2 as a,\n decorateMethodV1 as b,\n decorateMethodV2 as c,\n decorateFieldV1 as d,\n decorateClass as e,\n decoratePOJO as f,\n initializeDeferredDecorator as i,\n runtime as r\n};\n//# sourceMappingURL=runtime-BPCpkOf1.js.map\n","import { tracked } from '@glimmer/tracking';\n\nimport type {\n Future,\n ImmutableRequestInfo,\n ResponseInfo,\n StructuredDocument,\n StructuredErrorDocument,\n} from '@ember-data-mirror/request';\nimport { getPromiseResult, setPromiseResult } from '@ember-data-mirror/request';\n\nconst RequestCache = new WeakMap<Future<unknown>, RequestState>();\n\nfunction isAbortError(error: unknown): boolean {\n return error instanceof DOMException && error.name === 'AbortError';\n}\n\nasync function watchStream(stream: ReadableStream<Uint8Array>, state: RequestLoadingState): Promise<void> {\n const reader = stream.getReader();\n let bytesLoaded = 0;\n let shouldForward = state._stream !== null && state._stream.readable.locked;\n let isForwarding = shouldForward;\n let writer = state._stream?.writable.getWriter();\n const buffer = [];\n\n state._isPending = false;\n state._isStarted = true;\n state._startTime = performance.now();\n\n // eslint-disable-next-line no-constant-condition\n while (true) {\n const { value, done } = await reader.read();\n if (done) {\n break;\n }\n bytesLoaded += value.byteLength;\n state._bytesLoaded = bytesLoaded;\n state._lastPacketTime = performance.now();\n\n shouldForward = shouldForward || (state._stream !== null && state._stream.readable.locked);\n\n if (shouldForward) {\n if (!isForwarding) {\n isForwarding = true;\n writer = state._stream!.writable.getWriter();\n for (const item of buffer) {\n await writer.ready;\n await writer.write(item);\n }\n buffer.length = 0;\n }\n await writer!.ready;\n await writer!.write(value);\n } else {\n buffer.push(value);\n }\n }\n\n // if we are still forwarding, we need to close the writer\n if (isForwarding) {\n await writer!.ready;\n await writer!.close();\n } else if (state._stream) {\n // if we are not forwarding, we need to cancel the stream\n await state._stream.readable.cancel('The Stream Has Already Ended');\n state._stream = null;\n }\n\n const endTime = performance.now();\n state._endTime = endTime;\n state._isComplete = true;\n state._isStarted = false;\n}\n\nexport class RequestLoadingState {\n _stream: TransformStream | null = null;\n _future: Future<unknown>;\n _triggered = false;\n _trigger() {\n if (this._triggered) {\n return;\n }\n this._triggered = true;\n const future = this._future;\n const promise: Promise<ReadableStream<Uint8Array> | null> & { sizeHint?: number } = future.getStream();\n if (promise.sizeHint) {\n this._sizeHint = promise.sizeHint;\n }\n this.promise = promise.then(\n (stream) => {\n if (!stream) {\n this._isPending = false;\n this._isComplete = true;\n return;\n }\n return watchStream(stream, this);\n },\n (error: Error) => {\n this._isPending = false;\n this._isStarted = false;\n if (isAbortError(error)) {\n this._isCancelled = true;\n this._isComplete = true;\n }\n this._isErrored = true;\n this._error = error;\n }\n );\n }\n\n promise: Promise<void> | null = null;\n @tracked _sizeHint = 0;\n @tracked _bytesLoaded = 0;\n\n @tracked _startTime = 0;\n @tracked _endTime = 0;\n @tracked _lastPacketTime = 0;\n\n @tracked _isPending = true;\n @tracked _isStarted = false;\n @tracked _isComplete = false;\n @tracked _isCancelled = false;\n @tracked _isErrored = false;\n @tracked _error: Error | null = null;\n\n get isPending(): boolean {\n this._trigger();\n return this._isPending;\n }\n\n get sizeHint(): number {\n this._trigger();\n return this._sizeHint;\n }\n\n get stream(): ReadableStream | null {\n this._trigger();\n if (!this._stream) {\n if (this._isComplete || this._isCancelled || this._isErrored) {\n return null;\n }\n this._stream = new TransformStream();\n }\n return this._stream.readable;\n }\n\n get isStarted(): boolean {\n this._trigger();\n return this._isStarted;\n }\n\n get bytesLoaded(): number {\n this._trigger();\n return this._bytesLoaded;\n }\n\n get startTime(): number {\n this._trigger();\n return this._startTime;\n }\n\n get endTime(): number {\n this._trigger();\n return this._endTime;\n }\n\n get lastPacketTime(): number {\n this._trigger();\n return this._lastPacketTime;\n }\n\n get isComplete(): boolean {\n this._trigger();\n return this._isComplete;\n }\n\n get isCancelled(): boolean {\n this._trigger();\n return this._isCancelled;\n }\n\n get isErrored(): boolean {\n this._trigger();\n return this._isErrored;\n }\n\n get error(): Error | null {\n this._trigger();\n return this._error;\n }\n\n get elapsedTime(): number {\n return (this.endTime || this.lastPacketTime) - this.startTime;\n }\n\n get completedRatio(): number {\n return this.sizeHint ? this.bytesLoaded / this.sizeHint : 0;\n }\n\n get remainingRatio(): number {\n return 1 - this.completedRatio;\n }\n\n get duration(): number {\n return this.endTime - this.startTime;\n }\n\n get speed(): number {\n // bytes per second\n return this.bytesLoaded / (this.elapsedTime / 1000);\n }\n\n constructor(future: Future<unknown>) {\n this._future = future;\n }\n\n abort = (): void => {\n this._future.abort();\n };\n}\n\nexport class RequestState<T = unknown, RT = unknown> {\n #request: Future<RT>;\n #loadingState: RequestLoadingState | null = null;\n\n @tracked result: RT | null = null;\n @tracked error: StructuredErrorDocument | null = null;\n @tracked isLoading = true;\n @tracked isSuccess = false;\n @tracked isError = false;\n @tracked request: ImmutableRequestInfo<T, RT> | null = null;\n @tracked response: Response | ResponseInfo | null = null;\n\n get isCancelled(): boolean {\n return this.isError && isAbortError(this.error);\n }\n\n get loadingState() {\n if (!this.#loadingState) {\n this.#loadingState = new RequestLoadingState(this.#request);\n }\n\n return this.#loadingState;\n }\n\n constructor(future: Future<RT>) {\n this.#request = future;\n const state = getPromiseResult<StructuredDocument<RT>, StructuredErrorDocument>(future);\n\n if (state) {\n this.request = state.result.request as ImmutableRequestInfo<T, RT>;\n this.response = state.result.response;\n this.isLoading = false;\n\n if (state.isError) {\n this.error = state.result;\n this.isError = true;\n } else {\n this.result = state.result.content!;\n this.isSuccess = true;\n }\n } else {\n void future.then(\n (result) => {\n setPromiseResult(future, { isError: false, result });\n this.result = result.content;\n this.isSuccess = true;\n this.isLoading = false;\n this.request = result.request as ImmutableRequestInfo<T, RT>;\n this.response = result.response;\n },\n (error: StructuredErrorDocument) => {\n setPromiseResult(future, { isError: true, result: error });\n this.error = error;\n this.isError = true;\n this.isLoading = false;\n this.request = error.request as ImmutableRequestInfo<T, RT>;\n this.response = error.response;\n }\n );\n }\n }\n}\n\nexport function getRequestState<RT, T>(future: Future<RT>): RequestState<T, RT> {\n let state = RequestCache.get(future) as RequestState<T, RT> | undefined;\n\n if (!state) {\n state = new RequestState(future);\n RequestCache.set(future, state);\n }\n\n return state;\n}\n","import { tracked } from '@glimmer/tracking';\n\nimport type { Awaitable } from '@ember-data-mirror/request';\nimport { getPromiseResult, setPromiseResult } from '@ember-data-mirror/request';\n\nconst PromiseCache = new WeakMap<Awaitable, PromiseState>();\n\nexport class PromiseState<T = unknown, E = unknown> {\n @tracked result: T | null = null;\n @tracked error: E | null = null;\n @tracked isPending = true;\n @tracked isSuccess = false;\n @tracked isError = false;\n\n constructor(promise: Promise<T> | Awaitable<T, E>) {\n const state = getPromiseResult<T, E>(promise);\n\n if (state) {\n if (state.isError) {\n this.error = state.result;\n this.isError = true;\n this.isPending = false;\n } else {\n this.result = state.result;\n this.isSuccess = true;\n this.isPending = false;\n }\n } else {\n void promise.then(\n (result) => {\n setPromiseResult(promise, { isError: false, result });\n this.result = result;\n this.isSuccess = true;\n this.isPending = false;\n },\n (error: E) => {\n setPromiseResult(promise, { isError: true, result: error });\n this.error = error;\n this.isError = true;\n this.isPending = false;\n }\n );\n }\n }\n}\n\nconst LegacyPromiseProxy = Symbol.for('LegacyPromiseProxy');\ntype LegacyAwaitable<T, E> = { promise: Promise<T> | Awaitable<T, E>; [LegacyPromiseProxy]: true };\n\nfunction isLegacyAwaitable<T, E>(promise: object): promise is LegacyAwaitable<T, E> {\n return LegacyPromiseProxy in promise && 'promise' in promise && promise[LegacyPromiseProxy] === true;\n}\n\nfunction getPromise<T, E>(promise: Promise<T> | Awaitable<T, E> | LegacyAwaitable<T, E>): Promise<T> | Awaitable<T, E> {\n return isLegacyAwaitable(promise) ? promise.promise : promise;\n}\n\nexport function getPromiseState<T = unknown, E = unknown>(promise: Promise<T> | Awaitable<T, E>): PromiseState<T, E> {\n const _promise = getPromise(promise);\n let state = PromiseCache.get(_promise) as PromiseState<T, E> | undefined;\n\n if (!state) {\n state = new PromiseState(_promise);\n PromiseCache.set(_promise, state);\n }\n\n return state;\n}\n","import { template as template_aea5df8d69954e6696a9862b31b103be } from \"@ember/template-compiler\";\nimport Component from '@glimmer/component';\nimport type { Awaitable } from '@ember-data-mirror/request';\nimport { getPromiseState } from './promise-state.ts';\nexport const and = (x: unknown, y: unknown)=>Boolean(x && y);\ninterface ThrowSignature<E = Error | string | object> {\n Args: {\n error: E;\n };\n}\nexport class Throw<T> extends Component<ThrowSignature<T>> {\n constructor(owner: unknown, args: ThrowSignature<T>['Args']){\n super(owner, args);\n // this error is opaque (user supplied) so we don't validate it\n // as an Error instance.\n // eslint-disable-next-line @typescript-eslint/no-throw-literal\n throw this.args.error;\n }\n static{\n template_aea5df8d69954e6696a9862b31b103be(``, {\n component: this,\n eval () {\n return eval(arguments[0]);\n }\n });\n }\n}\ninterface AwaitSignature<T, E = Error | string | object> {\n Args: {\n promise: Promise<T> | Awaitable<T, E>;\n };\n Blocks: {\n pending: [];\n error: [error: E];\n success: [value: T];\n };\n}\nexport class Await<T, E> extends Component<AwaitSignature<T, E>> {\n get state() {\n return getPromiseState<T, E>(this.args.promise);\n }\n get error() {\n return this.state.error as E;\n }\n get result() {\n return this.state.result as T;\n }\n static{\n template_aea5df8d69954e6696a9862b31b103be(`\n {{#if this.state.isPending}}\n {{yield to=\"pending\"}}\n {{else if (and this.state.isError (has-block \"error\"))}}\n {{yield this.error to=\"error\"}}\n {{else if this.state.isSuccess}}\n {{yield this.result to=\"success\"}}\n {{else}}\n <Throw @error={{this.error}} />\n {{/if}}\n `, {\n component: this,\n eval () {\n return eval(arguments[0]);\n }\n });\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RhdGEvZGF0YS9wYWNrYWdlcy9lbWJlci9zcmMvLXByaXZhdGUvYXdhaXQuZ3RzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBDb21wb25lbnQgZnJvbSAnQGdsaW1tZXIvY29tcG9uZW50JztcblxuaW1wb3J0IHR5cGUgeyBBd2FpdGFibGUgfSBmcm9tICdAZW1iZXItZGF0YS9yZXF1ZXN0JztcblxuaW1wb3J0IHsgZ2V0UHJvbWlzZVN0YXRlIH0gZnJvbSAnLi9wcm9taXNlLXN0YXRlLnRzJztcblxuZXhwb3J0IGNvbnN0IGFuZCA9ICh4OiB1bmtub3duLCB5OiB1bmtub3duKSA9PiBCb29sZWFuKHggJiYgeSk7XG5pbnRlcmZhY2UgVGhyb3dTaWduYXR1cmU8RSA9IEVycm9yIHwgc3RyaW5nIHwgb2JqZWN0PiB7XG4gIEFyZ3M6IHtcbiAgICBlcnJvcjogRTtcbiAgfTtcbn1cblxuZXhwb3J0IGNsYXNzIFRocm93PFQ-IGV4dGVuZHMgQ29tcG9uZW50PFRocm93U2lnbmF0dXJlPFQ-PiB7XG4gIGNvbnN0cnVjdG9yKG93bmVyOiB1bmtub3duLCBhcmdzOiBUaHJvd1NpZ25hdHVyZTxUPlsnQXJncyddKSB7XG4gICAgc3VwZXIob3duZXIsIGFyZ3MpO1xuICAgIC8vIHRoaXMgZXJyb3IgaXMgb3BhcXVlICh1c2VyIHN1cHBsaWVkKSBzbyB3ZSBkb24ndCB2YWxpZGF0ZSBpdFxuICAgIC8vIGFzIGFuIEVycm9yIGluc3RhbmNlLlxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdGhyb3ctbGl0ZXJhbFxuICAgIHRocm93IHRoaXMuYXJncy5lcnJvcjtcbiAgfVxuICA8dGVtcGxhdGU-PC90ZW1wbGF0ZT5cbn1cblxuaW50ZXJmYWNlIEF3YWl0U2lnbmF0dXJlPFQsIEUgPSBFcnJvciB8IHN0cmluZyB8IG9iamVjdD4ge1xuICBBcmdzOiB7XG4gICAgcHJvbWlzZTogUHJvbWlzZTxUPiB8IEF3YWl0YWJsZTxULCBFPjtcbiAgfTtcbiAgQmxvY2tzOiB7XG4gICAgcGVuZGluZzogW107XG4gICAgZXJyb3I6IFtlcnJvcjogRV07XG4gICAgc3VjY2VzczogW3ZhbHVlOiBUXTtcbiAgfTtcbn1cblxuZXhwb3J0IGNsYXNzIEF3YWl0PFQsIEU-IGV4dGVuZHMgQ29tcG9uZW50PEF3YWl0U2lnbmF0dXJlPFQsIEU-PiB7XG4gIGdldCBzdGF0ZSgpIHtcbiAgICByZXR1cm4gZ2V0UHJvbWlzZVN0YXRlPFQsIEU-KHRoaXMuYXJncy5wcm9taXNlKTtcbiAgfVxuXG4gIGdldCBlcnJvcigpIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZS5lcnJvciBhcyBFO1xuICB9XG5cbiAgZ2V0IHJlc3VsdCgpIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZS5yZXN1bHQgYXMgVDtcbiAgfVxuXG4gIDx0ZW1wbGF0ZT5cbiAgICB7eyNpZiB0aGlzLnN0YXRlLmlzUGVuZGluZ319XG4gICAgICB7e3lpZWxkIHRvPVwicGVuZGluZ1wifX1cbiAgICB7e2Vsc2UgaWYgKGFuZCB0aGlzLnN0YXRlLmlzRXJyb3IgKGhhcy1ibG9jayBcImVycm9yXCIpKX19XG4gICAgICB7e3lpZWxkIHRoaXMuZXJyb3IgdG89XCJlcnJvclwifX1cbiAgICB7e2Vsc2UgaWYgdGhpcy5zdGF0ZS5pc1N1Y2Nlc3N9fVxuICAgICAge3t5aWVsZCB0aGlzLnJlc3VsdCB0bz1cInN1Y2Nlc3NcIn19XG4gICAge3tlbHNlfX1cbiAgICAgIDxUaHJvdyBAZXJyb3I9e3t0aGlzLmVycm9yfX0gLz5cbiAgICB7ey9pZn19XG4gIDwvdGVtcGxhdGU-XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sZUFBZSxxQkFBcUI7QUFFM0MsY0FBYyxTQUFTLFFBQVEsc0JBQXNCO0FBRXJELFNBQVMsZUFBZSxRQUFRLHFCQUFxQjtBQUVyRCxPQUFPLE1BQU0sTUFBTSxDQUFDLEdBQUcsT0FBTyxFQUFFLEdBQUcsT0FBTyxHQUFLLFFBQVEsS0FBSyxHQUFHO1VBQ3JELGVBQWUsSUFBSSxRQUFRLE1BQU0sR0FBRyxNQUFNO0lBQ2xEO1FBQ0UsT0FBTzs7O0FBSVgsT0FBTyxNQUFNLE1BQU0sV0FBVyxVQUFVLGVBQWU7SUFDckQsWUFBWSxPQUFPLE9BQU8sRUFBRSxNQUFNLGVBQWUsR0FBRyxPQUFPLENBQUU7UUFDM0QsS0FBSyxDQUFDLE9BQU87UUFDYiwrREFBK0Q7UUFDL0Qsd0JBQXdCO1FBQ3hCLCtEQUErRDtRQUMvRCxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSztJQUN2QjtJQUNBLE1BQUE7UUFBQSwwQ0FBVSxDQUFBLENBQUEsRUFBQTtZQUFBLFdBQUEsSUFBVztZQUFYO2dCQUFBLE9BQUEsS0FBQSxTQUFBLENBQUEsRUFBVztZQUFEO1FBQUE7SUFBQSxDQUFWO0FBQ1o7VUFFVSxlQUFlLEdBQUcsSUFBSSxRQUFRLE1BQU0sR0FBRyxNQUFNO0lBQ3JEO1FBQ0UsU0FBUyxRQUFRLEtBQUssVUFBVSxHQUFHOztJQUVyQztRQUNFO1FBQ0EsUUFBUSxPQUFPO1FBQ2YsVUFBVSxPQUFPOzs7QUFJckIsT0FBTyxNQUFNLE1BQU0sR0FBRyxXQUFXLFVBQVUsZUFBZSxHQUFHO0lBQzNELElBQUksUUFBUTtRQUNWLE9BQU8sZ0JBQWdCLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU87SUFDaEQ7SUFFQSxJQUFJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxJQUFJO0lBQzdCO0lBRUEsSUFBSSxTQUFTO1FBQ1gsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sSUFBSTtJQUM5QjtJQUVBLE1BQUE7UUFBQSwwQ0FBVSxDQUFBOzs7Ozs7Ozs7O0VBVVYsQ0FBQSxFQUFBO1lBQUEsV0FBQSxJQUFXO1lBQVg7Z0JBQUEsT0FBQSxLQUFBLFNBQUEsQ0FBQSxFQUFXO1lBQUQ7UUFBQTtJQUFBLENBVkE7QUFXWiJ9","import { template as template_a252f098ac1f47e69f6e7f066e34f5e8 } from \"@ember/template-compiler\";\nimport { service } from '@ember/service';\nimport Component from '@glimmer/component';\nimport { cached, tracked } from '@glimmer/tracking';\nimport { importSync, macroCondition, moduleExists } from '@embroider/macros';\nimport type { Future, StructuredErrorDocument } from '@ember-data-mirror/request';\nimport type { StoreRequestInput } from '@ember-data-mirror/store';\nimport type Store from '@ember-data-mirror/store';\nimport { assert } from '@warp-drive-mirror/build-config/macros';\nimport type { StableDocumentIdentifier } from '@warp-drive-mirror/core-types/identifier.js';\nimport { EnableHydration, type RequestInfo } from '@warp-drive-mirror/core-types/request';\nimport { and, Throw } from './await.gts';\nimport type { RequestLoadingState, RequestState } from './request-state.ts';\nimport { getRequestState } from './request-state.ts';\nfunction notNull(x: null): never;\nfunction notNull<T>(x: T): Exclude<T, null>;\nfunction notNull<T>(x: T | null) {\n assert('Expected a non-null value, but got null', x !== null);\n return x;\n}\nconst not = (x: unknown)=>!x;\n// default to 30 seconds unavailable before we refresh\nconst DEFAULT_DEADLINE = 30_000;\nconst IdleBlockMissingError = new Error('No idle block provided for <Request> component, and no query or request was provided.');\nlet consume = service;\nif (macroCondition(moduleExists('ember-provide-consume-context'))) {\n const { consume: contextConsume } = importSync('ember-provide-consume-context') as {\n consume: typeof service;\n };\n consume = contextConsume;\n}\nfunction isNeverString(val: never): string {\n return val;\n}\ntype AutorefreshBehaviorType = 'online' | 'interval' | 'invalid';\ntype AutorefreshBehaviorCombos = true | AutorefreshBehaviorType | `${AutorefreshBehaviorType},${AutorefreshBehaviorType}` | `${AutorefreshBehaviorType},${AutorefreshBehaviorType},${AutorefreshBehaviorType}`;\ntype ContentFeatures<RT> = {\n isOnline: boolean;\n isHidden: boolean;\n isRefreshing: boolean;\n refresh: () => Promise<void>;\n reload: () => Promise<void>;\n abort?: () => void;\n latestRequest?: Future<RT>;\n};\ninterface RequestSignature<T, RT> {\n Args: {\n request?: Future<RT>;\n query?: StoreRequestInput<T, RT>;\n store?: Store;\n autorefresh?: AutorefreshBehaviorCombos;\n autorefreshThreshold?: number;\n autorefreshBehavior?: 'refresh' | 'reload' | 'policy';\n };\n Blocks: {\n idle: [];\n loading: [state: RequestLoadingState];\n cancelled: [error: StructuredErrorDocument, features: {\n isOnline: boolean;\n isHidden: boolean;\n retry: () => Promise<void>;\n }];\n error: [error: StructuredErrorDocument, features: {\n isOnline: boolean;\n isHidden: boolean;\n retry: () => Promise<void>;\n }];\n content: [value: RT, features: ContentFeatures<RT>];\n always: [state: RequestState<T, RT>];\n };\n}\n/**\n * The `<Request>` component is a powerful tool for managing data fetching and\n * state in your Ember application. It provides declarative reactive control-flow\n * for managing requests and state in your application.\n *\n * @typedoc\n */ export class Request<T, RT> extends Component<RequestSignature<T, RT>> {\n /**\n * The store instance to use for making requests. If contexts are available, this\n * will be the `store` on the context, else it will be the store service.\n *\n * @internal\n */ @consume('store')\n _store: Store;\n /**\n * Whether the browser reports that the network is online.\n *\n * @internal\n */ @tracked\n isOnline = true;\n /**\n * Whether the browser reports that the tab is hidden.\n *\n * @internal\n */ @tracked\n isHidden = true;\n /**\n * Whether the component is currently refreshing the request.\n *\n * @internal\n */ @tracked\n isRefreshing = false;\n /**\n * The most recent blocking request that was made, typically\n * the result of a reload.\n *\n * This will never be the original request passed as an arg to\n * the component.\n *\n * @internal\n */ @tracked\n _localRequest: Future<RT> | undefined;\n /**\n * The most recent request that was made, typically due to either a\n * reload or a refresh.\n *\n * This will never be the original request passed as an arg to\n * the component.\n *\n * @internal\n */ @tracked\n _latestRequest: Future<RT> | undefined;\n /**\n * The time at which the network was reported as offline.\n *\n * @internal\n */ unavailableStart: number | null;\n intervalStart: number | null;\n nextInterval: number | null;\n invalidated: boolean;\n isUpdating: boolean;\n /**\n * The event listener for network status changes,\n * cached to use the reference for removal.\n *\n * @internal\n */ onlineChanged: (event: Event) => void;\n /**\n * The event listener for visibility status changes,\n * cached to use the reference for removal.\n *\n * @internal\n */ backgroundChanged: (event: Event) => void;\n /**\n * The last request passed as an arg to the component,\n * cached for comparison.\n *\n * @internal\n */ _originalRequest: Future<RT> | undefined;\n /**\n * The last query passed as an arg to the component,\n * cached for comparison.\n *\n * @internal\n */ _originalQuery: StoreRequestInput<T, RT> | undefined;\n _subscription: object | null;\n _subscribedTo: object | null;\n constructor(owner: unknown, args: RequestSignature<T, RT>['Args']){\n super(owner, args);\n this._subscribedTo = null;\n this._subscription = null;\n this.intervalStart = null;\n this.invalidated = false;\n this.nextInterval = null;\n this.installListeners();\n void this.beginPolling();\n }\n async beginPolling() {\n // await the initial request\n try {\n await this.request;\n } catch {\n // ignore errors here, we just want to wait for the request to finish\n } finally{\n if (!this.isDestroyed) {\n void this.scheduleInterval();\n }\n }\n }\n @cached\n get isIdle() {\n const { request, query } = this.args;\n return Boolean(!request && !query);\n }\n @cached\n get autorefreshTypes(): Set<AutorefreshBehaviorType> {\n const { autorefresh } = this.args;\n let types: AutorefreshBehaviorType[];\n if (autorefresh === true) {\n types = [\n 'online',\n 'invalid'\n ];\n } else if (typeof autorefresh === 'string') {\n types = autorefresh.split(',') as AutorefreshBehaviorType[];\n } else {\n types = [];\n }\n return new Set(types);\n }\n // we only run this function on component creation\n // and when an update is triggered, so it does not\n // react to changes in the autorefreshThreshold\n // or autorefresh args.\n //\n // if we need to react to those changes, we can\n // use a modifier or internal component or some\n // such to trigger a re-run of this function.\n async scheduleInterval() {\n const { autorefreshThreshold } = this.args;\n const hasValidThreshold = typeof autorefreshThreshold === 'number' && autorefreshThreshold > 0;\n if (// dont schedule in SSR\n typeof window === 'undefined' || // dont schedule without a threshold\n !hasValidThreshold || // dont schedule if we weren't told to\n !this.autorefreshTypes.has('interval') || // dont schedule if we're already scheduled\n this.intervalStart !== null) {\n return;\n }\n // if we have a current request, wait for it to finish\n // before scheduling the next one\n if (this._latestRequest) {\n try {\n await this._latestRequest;\n } catch {\n // ignore errors here, we just want to wait for the request to finish\n }\n if (this.isDestroyed) {\n return;\n }\n }\n // setup the next interval\n this.intervalStart = Date.now();\n this.nextInterval = setTimeout(()=>{\n this.maybeUpdate();\n }, autorefreshThreshold);\n }\n clearInterval() {\n if (this.nextInterval) {\n clearTimeout(this.nextInterval);\n this.intervalStart = null;\n }\n }\n updateSubscriptions() {\n if (this.isIdle) {\n return;\n }\n const requestId = this._request.lid;\n // if we're already subscribed to this request, we don't need to do anything\n if (this._subscribedTo === requestId) {\n return;\n }\n // if we're subscribed to a different request, we need to unsubscribe\n this.removeSubscriptions();\n // if we have a request, we need to subscribe to it\n if (requestId) {\n this._subscribedTo = requestId;\n this._subscription = this.store.notifications.subscribe(requestId, (_id: StableDocumentIdentifier, op: 'invalidated' | 'state' | 'added' | 'updated' | 'removed')=>{\n // ignore subscription events that occur while our own component's request\n // is ocurring\n if (this.isUpdating) {\n return;\n }\n switch(op){\n case 'invalidated':\n {\n // if we're subscribed to invalidations, we need to update\n if (this.autorefreshTypes.has('invalid')) {\n this.invalidated = true;\n this.maybeUpdate();\n }\n break;\n }\n case 'state':\n {\n const latest = this.store.requestManager._deduped.get(requestId);\n const priority = latest?.priority;\n if (!priority) {\n this.isRefreshing = false;\n } else if (priority.blocking) {\n // TODO should we just treat this as refreshing?\n this.isRefreshing = false;\n this.maybeUpdate('policy', true);\n } else {\n this.isRefreshing = true;\n }\n }\n }\n });\n }\n }\n removeSubscriptions() {\n if (this._subscription) {\n this.store.notifications.unsubscribe(this._subscription);\n this._subscribedTo = null;\n this._subscription = null;\n }\n }\n /**\n * Install the event listeners for network and visibility changes.\n * This is only done in browser environments with a global `window`.\n *\n * @internal\n */ installListeners() {\n if (typeof window === 'undefined') {\n return;\n }\n this.isOnline = window.navigator.onLine;\n this.unavailableStart = this.isOnline ? null : Date.now();\n this.isHidden = document.visibilityState === 'hidden';\n this.onlineChanged = (event: Event)=>{\n this.isOnline = event.type === 'online';\n if (event.type === 'offline' && this.unavailableStart === null) {\n this.unavailableStart = Date.now();\n }\n this.maybeUpdate();\n };\n this.backgroundChanged = ()=>{\n const isHidden = document.visibilityState === 'hidden';\n this.isHidden = isHidden;\n if (isHidden && this.unavailableStart === null) {\n this.unavailableStart = Date.now();\n }\n this.maybeUpdate();\n };\n window.addEventListener('online', this.onlineChanged, {\n passive: true,\n capture: true\n });\n window.addEventListener('offline', this.onlineChanged, {\n passive: true,\n capture: true\n });\n document.addEventListener('visibilitychange', this.backgroundChanged, {\n passive: true,\n capture: true\n });\n }\n /**\n * If the network is online and the tab is visible, either reload or refresh the request\n * based on the component's configuration and the requested update mode.\n *\n * Valid modes are:\n *\n * - `'reload'`: Force a reload of the request.\n * - `'refresh'`: Refresh the request in the background.\n * - `'policy'`: Make the request, letting the store's configured CachePolicy decide whether to reload, refresh, or do nothing.\n * - `undefined`: Make the request using the component's autorefreshBehavior setting if the autorefreshThreshold has passed.\n *\n * @internal\n */ maybeUpdate(mode?: 'reload' | 'refresh' | 'policy' | 'invalidated', silent?: boolean): void {\n if (this.isIdle) {\n return;\n }\n const canAttempt = Boolean(this.isOnline && !this.isHidden && (mode || this.autorefreshTypes.size));\n if (!canAttempt) {\n if (!silent && mode && mode !== 'invalidated') {\n throw new Error(`Reload not available: the network is not online or the tab is hidden`);\n }\n return;\n }\n const { autorefreshTypes } = this;\n let shouldAttempt = this.invalidated || Boolean(mode);\n if (!shouldAttempt && autorefreshTypes.has('online')) {\n const { unavailableStart } = this;\n const { autorefreshThreshold } = this.args;\n const deadline = typeof autorefreshThreshold === 'number' ? autorefreshThreshold : DEFAULT_DEADLINE;\n shouldAttempt = Boolean(unavailableStart && Date.now() - unavailableStart > deadline);\n }\n if (!shouldAttempt && autorefreshTypes.has('interval')) {\n const { intervalStart } = this;\n const { autorefreshThreshold } = this.args;\n if (intervalStart && typeof autorefreshThreshold === 'number' && autorefreshThreshold > 0) {\n shouldAttempt = Boolean(Date.now() - intervalStart >= autorefreshThreshold);\n }\n }\n this.unavailableStart = null;\n this.invalidated = false;\n if (shouldAttempt) {\n this.clearInterval();\n const request = Object.assign({}, this.reqState.request as unknown as RequestInfo<T, RT>);\n const realMode = mode === 'invalidated' ? null : mode;\n const val = realMode ?? this.args.autorefreshBehavior ?? 'policy';\n switch(val){\n case 'reload':\n request.cacheOptions = Object.assign({}, request.cacheOptions, {\n reload: true\n });\n break;\n case 'refresh':\n request.cacheOptions = Object.assign({}, request.cacheOptions, {\n backgroundReload: true\n });\n break;\n case 'policy':\n break;\n default:\n throw new Error(`Invalid ${mode ? 'update mode' : '@autorefreshBehavior'} for <Request />: ${isNeverString(val)}`);\n }\n const wasStoreRequest = (request as {\n [EnableHydration]: boolean;\n })[EnableHydration] === true;\n assert(`Cannot supply a different store via context than was used to create the request`, !request.store || request.store === this.store);\n this.isUpdating = true;\n this._latestRequest = wasStoreRequest ? this.store.request(request) : this.store.requestManager.request(request);\n if (val !== 'refresh') {\n this._localRequest = this._latestRequest;\n }\n void this.scheduleInterval();\n void this._latestRequest.finally(()=>{\n this.isUpdating = false;\n });\n } else {\n // TODO probably want this\n // void this.scheduleInterval();\n }\n }\n /**\n * Retry the request, reloading it from the server.\n *\n * @internal\n */ retry = async ()=>{\n this.maybeUpdate('reload');\n await this._localRequest;\n };\n /**\n * Refresh the request, updating it in the background.\n *\n * @internal\n */ refresh = async ()=>{\n this.maybeUpdate('refresh');\n await this._latestRequest;\n };\n @cached\n get errorFeatures() {\n return {\n isHidden: this.isHidden,\n isOnline: this.isOnline,\n retry: this.retry\n };\n }\n @cached\n get contentFeatures() {\n const feat: ContentFeatures<RT> = {\n isHidden: this.isHidden,\n isOnline: this.isOnline,\n reload: this.retry,\n refresh: this.refresh,\n isRefreshing: this.isRefreshing,\n latestRequest: this._latestRequest\n };\n if (feat.isRefreshing) {\n feat.abort = ()=>{\n this._latestRequest?.abort();\n };\n }\n return feat;\n }\n willDestroy() {\n this.removeSubscriptions();\n if (typeof window === 'undefined') {\n return;\n }\n this.clearInterval();\n window.removeEventListener('online', this.onlineChanged, {\n passive: true,\n capture: true\n } as unknown as boolean);\n window.removeEventListener('offline', this.onlineChanged, {\n passive: true,\n capture: true\n } as unknown as boolean);\n document.removeEventListener('visibilitychange', this.backgroundChanged, {\n passive: true,\n capture: true\n } as unknown as boolean);\n }\n @cached\n get _request(): Future<RT> {\n const { request, query } = this.args;\n assert(`Cannot use both @request and @query args with the <Request> component`, !request || !query);\n const { _localRequest, _originalRequest, _originalQuery } = this;\n const isOriginalRequest = request === _originalRequest && query === _originalQuery;\n if (_localRequest && isOriginalRequest) {\n return _localRequest;\n }\n // update state checks for the next time\n this._originalQuery = query;\n this._originalRequest = request;\n if (request) {\n return request;\n }\n assert(`You must provide either @request or an @query arg with the <Request> component`, query);\n return this.store.request<RT, T>(query);\n }\n @cached\n get request(): Future<RT> {\n const request = this._request;\n this.updateSubscriptions();\n return request;\n }\n get store(): Store {\n const store = this.args.store || this._store;\n assert(moduleExists('ember-provide-consume-context') ? `No store was provided to the <Request> component. Either provide a store via the @store arg or via the context API provided by ember-provide-consume-context.` : `No store was provided to the <Request> component. Either provide a store via the @store arg or by registering a store service.`, store);\n return store;\n }\n get reqState() {\n return getRequestState<RT, T>(this.request);\n }\n get result() {\n return this.reqState.result as RT;\n }\n static{\n template_a252f098ac1f47e69f6e7f066e34f5e8(`\n {{#if (and this.isIdle (has-block \"idle\"))}}\n {{yield to=\"idle\"}}\n {{else if this.isIdle}}\n <Throw @error={{IdleBlockMissingError}} />\n {{else if this.reqState.isLoading}}\n {{yield this.reqState.loadingState to=\"loading\"}}\n {{else if (and this.reqState.isCancelled (has-block \"cancelled\"))}}\n {{yield (notNull this.reqState.error) this.errorFeatures to=\"cancelled\"}}\n {{else if (and this.reqState.isError (has-block \"error\"))}}\n {{yield (notNull this.reqState.error) this.errorFeatures to=\"error\"}}\n {{else if this.reqState.isSuccess}}\n {{yield this.result this.contentFeatures to=\"content\"}}\n {{else if (not this.reqState.isCancelled)}}\n <Throw @error={{(notNull this.reqState.error)}} />\n {{/if}}\n {{yield this.reqState to=\"always\"}}\n `, {\n component: this,\n eval () {\n return eval(arguments[0]);\n }\n });\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RhdGEvZGF0YS9wYWNrYWdlcy9lbWJlci9zcmMvLXByaXZhdGUvcmVxdWVzdC5ndHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgc2VydmljZSB9IGZyb20gJ0BlbWJlci9zZXJ2aWNlJztcbmltcG9ydCBDb21wb25lbnQgZnJvbSAnQGdsaW1tZXIvY29tcG9uZW50JztcbmltcG9ydCB7IGNhY2hlZCwgdHJhY2tlZCB9IGZyb20gJ0BnbGltbWVyL3RyYWNraW5nJztcblxuaW1wb3J0IHsgaW1wb3J0U3luYywgbWFjcm9Db25kaXRpb24sIG1vZHVsZUV4aXN0cyB9IGZyb20gJ0BlbWJyb2lkZXIvbWFjcm9zJztcblxuaW1wb3J0IHR5cGUgeyBGdXR1cmUsIFN0cnVjdHVyZWRFcnJvckRvY3VtZW50IH0gZnJvbSAnQGVtYmVyLWRhdGEvcmVxdWVzdCc7XG5pbXBvcnQgdHlwZSB7IFN0b3JlUmVxdWVzdElucHV0IH0gZnJvbSAnQGVtYmVyLWRhdGEvc3RvcmUnO1xuaW1wb3J0IHR5cGUgU3RvcmUgZnJvbSAnQGVtYmVyLWRhdGEvc3RvcmUnO1xuaW1wb3J0IHsgYXNzZXJ0IH0gZnJvbSAnQHdhcnAtZHJpdmUvYnVpbGQtY29uZmlnL21hY3Jvcyc7XG5pbXBvcnQgdHlwZSB7IFN0YWJsZURvY3VtZW50SWRlbnRpZmllciB9IGZyb20gJ0B3YXJwLWRyaXZlL2NvcmUtdHlwZXMvaWRlbnRpZmllci5qcyc7XG5pbXBvcnQgeyBFbmFibGVIeWRyYXRpb24sIHR5cGUgUmVxdWVzdEluZm8gfSBmcm9tICdAd2FycC1kcml2ZS9jb3JlLXR5cGVzL3JlcXVlc3QnO1xuXG5pbXBvcnQgeyBhbmQsIFRocm93IH0gZnJvbSAnLi9hd2FpdC5ndHMnO1xuaW1wb3J0IHR5cGUgeyBSZXF1ZXN0TG9hZGluZ1N0YXRlLCBSZXF1ZXN0U3RhdGUgfSBmcm9tICcuL3JlcXVlc3Qtc3RhdGUudHMnO1xuaW1wb3J0IHsgZ2V0UmVxdWVzdFN0YXRlIH0gZnJvbSAnLi9yZXF1ZXN0LXN0YXRlLnRzJztcblxuZnVuY3Rpb24gbm90TnVsbCh4OiBudWxsKTogbmV2ZXI7XG5mdW5jdGlvbiBub3ROdWxsPFQ-KHg6IFQpOiBFeGNsdWRlPFQsIG51bGw-O1xuZnVuY3Rpb24gbm90TnVsbDxUPih4OiBUIHwgbnVsbCkge1xuICBhc3NlcnQoJ0V4cGVjdGVkIGEgbm9uLW51bGwgdmFsdWUsIGJ1dCBnb3QgbnVsbCcsIHggIT09IG51bGwpO1xuICByZXR1cm4geDtcbn1cblxuY29uc3Qgbm90ID0gKHg6IHVua25vd24pID0-ICF4O1xuLy8gZGVmYXVsdCB0byAzMCBzZWNvbmRzIHVuYXZhaWxhYmxlIGJlZm9yZSB3ZSByZWZyZXNoXG5jb25zdCBERUZBVUxUX0RFQURMSU5FID0gMzBfMDAwO1xuY29uc3QgSWRsZUJsb2NrTWlzc2luZ0Vycm9yID0gbmV3IEVycm9yKFxuICAnTm8gaWRsZSBibG9jayBwcm92aWRlZCBmb3IgPFJlcXVlc3Q-IGNvbXBvbmVudCwgYW5kIG5vIHF1ZXJ5IG9yIHJlcXVlc3Qgd2FzIHByb3ZpZGVkLidcbik7XG5cbmxldCBjb25zdW1lID0gc2VydmljZTtcbmlmIChtYWNyb0NvbmRpdGlvbihtb2R1bGVFeGlzdHMoJ2VtYmVyLXByb3ZpZGUtY29uc3VtZS1jb250ZXh0JykpKSB7XG4gIGNvbnN0IHsgY29uc3VtZTogY29udGV4dENvbnN1bWUgfSA9IGltcG9ydFN5bmMoJ2VtYmVyLXByb3ZpZGUtY29uc3VtZS1jb250ZXh0JykgYXMgeyBjb25zdW1lOiB0eXBlb2Ygc2VydmljZSB9O1xuICBjb25zdW1lID0gY29udGV4dENvbnN1bWU7XG59XG5cbmZ1bmN0aW9uIGlzTmV2ZXJTdHJpbmcodmFsOiBuZXZlcik6IHN0cmluZyB7XG4gIHJldHVybiB2YWw7XG59XG5cbnR5cGUgQXV0b3JlZnJlc2hCZWhhdmlvclR5cGUgPSAnb25saW5lJyB8ICdpbnRlcnZhbCcgfCAnaW52YWxpZCc7XG50eXBlIEF1dG9yZWZyZXNoQmVoYXZpb3JDb21ib3MgPVxuICB8IHRydWVcbiAgfCBBdXRvcmVmcmVzaEJlaGF2aW9yVHlwZVxuICB8IGAke0F1dG9yZWZyZXNoQmVoYXZpb3JUeXBlfSwke0F1dG9yZWZyZXNoQmVoYXZpb3JUeXBlfWBcbiAgfCBgJHtBdXRvcmVmcmVzaEJlaGF2aW9yVHlwZX0sJHtBdXRvcmVmcmVzaEJlaGF2aW9yVHlwZX0sJHtBdXRvcmVmcmVzaEJlaGF2aW9yVHlwZX1gO1xuXG50eXBlIENvbnRlbnRGZWF0dXJlczxSVD4gPSB7XG4gIGlzT25saW5lOiBib29sZWFuO1xuICBpc0hpZGRlbjogYm9vbGVhbjtcbiAgaXNSZWZyZXNoaW5nOiBib29sZWFuO1xuICByZWZyZXNoOiAoKSA9PiBQcm9taXNlPHZvaWQ-O1xuICByZWxvYWQ6ICgpID0-IFByb21pc2U8dm9pZD47XG4gIGFib3J0PzogKCkgPT4gdm9pZDtcbiAgbGF0ZXN0UmVxdWVzdD86IEZ1dHVyZTxSVD47XG59O1xuXG5pbnRlcmZhY2UgUmVxdWVzdFNpZ25hdHVyZTxULCBSVD4ge1xuICBBcmdzOiB7XG4gICAgcmVxdWVzdD86IEZ1dHVyZTxSVD47XG4gICAgcXVlcnk_OiBTdG9yZVJlcXVlc3RJbnB1dDxULCBSVD47XG4gICAgc3RvcmU_OiBTdG9yZTtcbiAgICBhdXRvcmVmcmVzaD86IEF1dG9yZWZyZXNoQmVoYXZpb3JDb21ib3M7XG4gICAgYXV0b3JlZnJlc2hUaHJlc2hvbGQ_OiBudW1iZXI7XG4gICAgYXV0b3JlZnJlc2hCZWhhdmlvcj86ICdyZWZyZXNoJyB8ICdyZWxvYWQnIHwgJ3BvbGljeSc7XG4gIH07XG4gIEJsb2Nrczoge1xuICAgIGlkbGU6IFtdO1xuICAgIGxvYWRpbmc6IFtzdGF0ZTogUmVxdWVzdExvYWRpbmdTdGF0ZV07XG4gICAgY2FuY2VsbGVkOiBbXG4gICAgICBlcnJvcjogU3RydWN0dXJlZEVycm9yRG9jdW1lbnQsXG4gICAgICBmZWF0dXJlczogeyBpc09ubGluZTogYm9vbGVhbjsgaXNIaWRkZW46IGJvb2xlYW47IHJldHJ5OiAoKSA9PiBQcm9taXNlPHZvaWQ-IH0sXG4gICAgXTtcbiAgICBlcnJvcjogW1xuICAgICAgZXJyb3I6IFN0cnVjdHVyZWRFcnJvckRvY3VtZW50LFxuICAgICAgZmVhdHVyZXM6IHsgaXNPbmxpbmU6IGJvb2xlYW47IGlzSGlkZGVuOiBib29sZWFuOyByZXRyeTogKCkgPT4gUHJvbWlzZTx2b2lkPiB9LFxuICAgIF07XG4gICAgY29udGVudDogW3ZhbHVlOiBSVCwgZmVhdHVyZXM6IENvbnRlbnRGZWF0dXJlczxSVD5dO1xuICAgIGFsd2F5czogW3N0YXRlOiBSZXF1ZXN0U3RhdGU8VCwgUlQ-XTtcbiAgfTtcbn1cblxuLyoqXG4gKiBUaGUgYDxSZXF1ZXN0PmAgY29tcG9uZW50IGlzIGEgcG93ZXJmdWwgdG9vbCBmb3IgbWFuYWdpbmcgZGF0YSBmZXRjaGluZyBhbmRcbiAqIHN0YXRlIGluIHlvdXIgRW1iZXIgYXBwbGljYXRpb24uIEl0IHByb3ZpZGVzIGRlY2xhcmF0aXZlIHJlYWN0aXZlIGNvbnRyb2wtZmxvd1xuICogZm9yIG1hbmFnaW5nIHJlcXVlc3RzIGFuZCBzdGF0ZSBpbiB5b3VyIGFwcGxpY2F0aW9uLlxuICpcbiAqIEB0eXBlZG9jXG4gKi9cbmV4cG9ydCBjbGFzcyBSZXF1ZXN0PFQsIFJUPiBleHRlbmRzIENvbXBvbmVudDxSZXF1ZXN0U2lnbmF0dXJlPFQsIFJUPj4ge1xuICAvKipcbiAgICogVGhlIHN0b3JlIGluc3RhbmNlIHRvIHVzZSBmb3IgbWFraW5nIHJlcXVlc3RzLiBJZiBjb250ZXh0cyBhcmUgYXZhaWxhYmxlLCB0aGlzXG4gICAqIHdpbGwgYmUgdGhlIGBzdG9yZWAgb24gdGhlIGNvbnRleHQsIGVsc2UgaXQgd2lsbCBiZSB0aGUgc3RvcmUgc2VydmljZS5cbiAgICpcbiAgICogQGludGVybmFsXG4gICAqL1xuICBAY29uc3VtZSgnc3RvcmUnKSBkZWNsYXJlIF9zdG9yZTogU3RvcmU7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGJyb3dzZXIgcmVwb3J0cyB0aGF0IHRoZSBuZXR3b3JrIGlzIG9ubGluZS5cbiAgICpcbiAgICogQGludGVybmFsXG4gICAqL1xuICBAdHJhY2tlZCBpc09ubGluZSA9IHRydWU7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGJyb3dzZXIgcmVwb3J0cyB0aGF0IHRoZSB0YWIgaXMgaGlkZGVuLlxuICAgKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIEB0cmFja2VkIGlzSGlkZGVuID0gdHJ1ZTtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgY29tcG9uZW50IGlzIGN1cnJlbnRseSByZWZyZXNoaW5nIHRoZSByZXF1ZXN0LlxuICAgKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIEB0cmFja2VkIGlzUmVmcmVzaGluZyA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBUaGUgbW9zdCByZWNlbnQgYmxvY2tpbmcgcmVxdWVzdCB0aGF0IHdhcyBtYWRlLCB0eXBpY2FsbHlcbiAgICogdGhlIHJlc3VsdCBvZiBhIHJlbG9hZC5cbiAgICpcbiAgICogVGhpcyB3aWxsIG5ldmVyIGJlIHRoZSBvcmlnaW5hbCByZXF1ZXN0IHBhc3NlZCBhcyBhbiBhcmcgdG9cbiAgICogdGhlIGNvbXBvbmVudC5cbiAgICpcbiAgICogQGludGVybmFsXG4gICAqL1xuICBAdHJhY2tlZCBfbG9jYWxSZXF1ZXN0OiBGdXR1cmU8UlQ-IHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBUaGUgbW9zdCByZWNlbnQgcmVxdWVzdCB0aGF0IHdhcyBtYWRlLCB0eXBpY2FsbHkgZHVlIHRvIGVpdGhlciBhXG4gICAqIHJlbG9hZCBvciBhIHJlZnJlc2guXG4gICAqXG4gICAqIFRoaXMgd2lsbCBuZXZlciBiZSB0aGUgb3JpZ2luYWwgcmVxdWVzdCBwYXNzZWQgYXMgYW4gYXJnIHRvXG4gICAqIHRoZSBjb21wb25lbnQuXG4gICAqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgQHRyYWNrZWQgX2xhdGVzdFJlcXVlc3Q6IEZ1dHVyZTxSVD4gfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSB0aW1lIGF0IHdoaWNoIHRoZSBuZXR3b3JrIHdhcyByZXBvcnRlZCBhcyBvZmZsaW5lLlxuICAgKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGRlY2xhcmUgdW5hdmFpbGFibGVTdGFydDogbnVtYmVyIHwgbnVsbDtcbiAgZGVjbGFyZSBpbnRlcnZhbFN0YXJ0OiBudW1iZXIgfCBudWxsO1xuICBkZWNsYXJlIG5leHRJbnRlcnZhbDogbnVtYmVyIHwgbnVsbDtcbiAgZGVjbGFyZSBpbnZhbGlkYXRlZDogYm9vbGVhbjtcbiAgZGVjbGFyZSBpc1VwZGF0aW5nOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgZXZlbnQgbGlzdGVuZXIgZm9yIG5ldHdvcmsgc3RhdHVzIGNoYW5nZXMsXG4gICAqIGNhY2hlZCB0byB1c2UgdGhlIHJlZmVyZW5jZSBmb3IgcmVtb3ZhbC5cbiAgICpcbiAgICogQGludGVybmFsXG4gICAqL1xuICBkZWNsYXJlIG9ubGluZUNoYW5nZWQ6IChldmVudDogRXZlbnQpID0-IHZvaWQ7XG5cbiAgLyoqXG4gICAqIFRoZSBldmVudCBsaXN0ZW5lciBmb3IgdmlzaWJpbGl0eSBzdGF0dXMgY2hhbmdlcyxcbiAgICogY2FjaGVkIHRvIHVzZSB0aGUgcmVmZXJlbmNlIGZvciByZW1vdmFsLlxuICAgKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGRlY2xhcmUgYmFja2dyb3VuZENoYW5nZWQ6IChldmVudDogRXZlbnQpID0-IHZvaWQ7XG5cbiAgLyoqXG4gICAqIFRoZSBsYXN0IHJlcXVlc3QgcGFzc2VkIGFzIGFuIGFyZyB0byB0aGUgY29tcG9uZW50LFxuICAgKiBjYWNoZWQgZm9yIGNvbXBhcmlzb24uXG4gICAqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgZGVjbGFyZSBfb3JpZ2luYWxSZXF1ZXN0OiBGdXR1cmU8UlQ-IHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBUaGUgbGFzdCBxdWVyeSBwYXNzZWQgYXMgYW4gYXJnIHRvIHRoZSBjb21wb25lbnQsXG4gICAqIGNhY2hlZCBmb3IgY29tcGFyaXNvbi5cbiAgICpcbiAgICogQGludGVybmFsXG4gICAqL1xuICBkZWNsYXJlIF9vcmlnaW5hbFF1ZXJ5OiBTdG9yZVJlcXVlc3RJbnB1dDxULCBSVD4gfCB1bmRlZmluZWQ7XG5cbiAgZGVjbGFyZSBfc3Vic2NyaXB0aW9uOiBvYmplY3QgfCBudWxsO1xuICBkZWNsYXJlIF9zdWJzY3JpYmVkVG86IG9iamVjdCB8IG51bGw7XG5cbiAgY29uc3RydWN0b3Iob3duZXI6IHVua25vd24sIGFyZ3M6IFJlcXVlc3RTaWduYXR1cmU8VCwgUlQ-WydBcmdzJ10pIHtcbiAgICBzdXBlcihvd25lciwgYXJncyk7XG4gICAgdGhpcy5fc3Vic2NyaWJlZFRvID0gbnVsbDtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb24gPSBudWxsO1xuICAgIHRoaXMuaW50ZXJ2YWxTdGFydCA9IG51bGw7XG4gICAgdGhpcy5pbnZhbGlkYXRlZCA9IGZhbHNlO1xuICAgIHRoaXMubmV4dEludGVydmFsID0gbnVsbDtcblxuICAgIHRoaXMuaW5zdGFsbExpc3RlbmVycygpO1xuICAgIHZvaWQgdGhpcy5iZWdpblBvbGxpbmcoKTtcbiAgfVxuXG4gIGFzeW5jIGJlZ2luUG9sbGluZygpIHtcbiAgICAvLyBhd2FpdCB0aGUgaW5pdGlhbCByZXF1ZXN0XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMucmVxdWVzdDtcbiAgICB9IGNhdGNoIHtcbiAgICAgIC8vIGlnbm9yZSBlcnJvcnMgaGVyZSwgd2UganVzdCB3YW50IHRvIHdhaXQgZm9yIHRoZSByZXF1ZXN0IHRvIGZpbmlzaFxuICAgIH0gZmluYWxseSB7XG4gICAgICBpZiAoIXRoaXMuaXNEZXN0cm95ZWQpIHtcbiAgICAgICAgdm9pZCB0aGlzLnNjaGVkdWxlSW50ZXJ2YWwoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAY2FjaGVkXG4gIGdldCBpc0lkbGUoKSB7XG4gICAgY29uc3QgeyByZXF1ZXN0LCBxdWVyeSB9ID0gdGhpcy5hcmdzO1xuXG4gICAgcmV0dXJuIEJvb2xlYW4oIXJlcXVlc3QgJiYgIXF1ZXJ5KTtcbiAgfVxuXG4gIEBjYWNoZWRcbiAgZ2V0IGF1dG9yZWZyZXNoVHlwZXMoKTogU2V0PEF1dG9yZWZyZXNoQmVoYXZpb3JUeXBlPiB7XG4gICAgY29uc3QgeyBhdXRvcmVmcmVzaCB9ID0gdGhpcy5hcmdzO1xuICAgIGxldCB0eXBlczogQXV0b3JlZnJlc2hCZWhhdmlvclR5cGVbXTtcblxuICAgIGlmIChhdXRvcmVmcmVzaCA9PT0gdHJ1ZSkge1xuICAgICAgdHlwZXMgPSBbJ29ubGluZScsICdpbnZhbGlkJ107XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgYXV0b3JlZnJlc2ggPT09ICdzdHJpbmcnKSB7XG4gICAgICB0eXBlcyA9IGF1dG9yZWZyZXNoLnNwbGl0KCcsJykgYXMgQXV0b3JlZnJlc2hCZWhhdmlvclR5cGVbXTtcbiAgICB9IGVsc2Uge1xuICAgICAgdHlwZXMgPSBbXTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IFNldCh0eXBlcyk7XG4gIH1cblxuICAvLyB3ZSBvbmx5IHJ1biB0aGlzIGZ1bmN0aW9uIG9uIGNvbXBvbmVudCBjcmVhdGlvblxuICAvLyBhbmQgd2hlbiBhbiB1cGRhdGUgaXMgdHJpZ2dlcmVkLCBzbyBpdCBkb2VzIG5vdFxuICAvLyByZWFjdCB0byBjaGFuZ2VzIGluIHRoZSBhdXRvcmVmcmVzaFRocmVzaG9sZFxuICAvLyBvciBhdXRvcmVmcmVzaCBhcmdzLlxuICAvL1xuICAvLyBpZiB3ZSBuZWVkIHRvIHJlYWN0IHRvIHRob3NlIGNoYW5nZXMsIHdlIGNhblxuICAvLyB1c2UgYSBtb2RpZmllciBvciBpbnRlcm5hbCBjb21wb25lbnQgb3Igc29tZVxuICAvLyBzdWNoIHRvIHRyaWdnZXIgYSByZS1ydW4gb2YgdGhpcyBmdW5jdGlvbi5cbiAgYXN5bmMgc2NoZWR1bGVJbnRlcnZhbCgpIHtcbiAgICBjb25zdCB7IGF1dG9yZWZyZXNoVGhyZXNob2xkIH0gPSB0aGlzLmFyZ3M7XG4gICAgY29uc3QgaGFzVmFsaWRUaHJlc2hvbGQgPSB0eXBlb2YgYXV0b3JlZnJlc2hUaHJlc2hvbGQgPT09ICdudW1iZXInICYmIGF1dG9yZWZyZXNoVGhyZXNob2xkID4gMDtcbiAgICBpZiAoXG4gICAgICAvLyBkb250IHNjaGVkdWxlIGluIFNTUlxuICAgICAgdHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcgfHxcbiAgICAgIC8vIGRvbnQgc2NoZWR1bGUgd2l0aG91dCBhIHRocmVzaG9sZFxuICAgICAgIWhhc1ZhbGlkVGhyZXNob2xkIHx8XG4gICAgICAvLyBkb250IHNjaGVkdWxlIGlmIHdlIHdlcmVuJ3QgdG9sZCB0b1xuICAgICAgIXRoaXMuYXV0b3JlZnJlc2hUeXBlcy5oYXMoJ2ludGVydmFsJykgfHxcbiAgICAgIC8vIGRvbnQgc2NoZWR1bGUgaWYgd2UncmUgYWxyZWFkeSBzY2hlZHVsZWRcbiAgICAgIHRoaXMuaW50ZXJ2YWxTdGFydCAhPT0gbnVsbFxuICAgICkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIGlmIHdlIGhhdmUgYSBjdXJyZW50IHJlcXVlc3QsIHdhaXQgZm9yIGl0IHRvIGZpbmlzaFxuICAgIC8vIGJlZm9yZSBzY2hlZHVsaW5nIHRoZSBuZXh0IG9uZVxuICAgIGlmICh0aGlzLl9sYXRlc3RSZXF1ZXN0KSB7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCB0aGlzLl9sYXRlc3RSZXF1ZXN0O1xuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIC8vIGlnbm9yZSBlcnJvcnMgaGVyZSwgd2UganVzdCB3YW50IHRvIHdhaXQgZm9yIHRoZSByZXF1ZXN0IHRvIGZpbmlzaFxuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5pc0Rlc3Ryb3llZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gc2V0dXAgdGhlIG5leHQgaW50ZXJ2YWxcbiAgICB0aGlzLmludGVydmFsU3RhcnQgPSBEYXRlLm5vdygpO1xuICAgIHRoaXMubmV4dEludGVydmFsID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLm1heWJlVXBkYXRlKCk7XG4gICAgfSwgYXV0b3JlZnJlc2hUaHJlc2hvbGQpO1xuICB9XG5cbiAgY2xlYXJJbnRlcnZhbCgpIHtcbiAgICBpZiAodGhpcy5uZXh0SW50ZXJ2YWwpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLm5leHRJbnRlcnZhbCk7XG4gICAgICB0aGlzLmludGVydmFsU3RhcnQgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZVN1YnNjcmlwdGlvbnMoKSB7XG4gICAgaWYgKHRoaXMuaXNJZGxlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHJlcXVlc3RJZCA9IHRoaXMuX3JlcXVlc3QubGlkO1xuXG4gICAgLy8gaWYgd2UncmUgYWxyZWFkeSBzdWJzY3JpYmVkIHRvIHRoaXMgcmVxdWVzdCwgd2UgZG9uJ3QgbmVlZCB0byBkbyBhbnl0aGluZ1xuICAgIGlmICh0aGlzLl9zdWJzY3JpYmVkVG8gPT09IHJlcXVlc3RJZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIGlmIHdlJ3JlIHN1YnNjcmliZWQgdG8gYSBkaWZmZXJlbnQgcmVxdWVzdCwgd2UgbmVlZCB0byB1bnN1YnNjcmliZVxuICAgIHRoaXMucmVtb3ZlU3Vic2NyaXB0aW9ucygpO1xuXG4gICAgLy8gaWYgd2UgaGF2ZSBhIHJlcXVlc3QsIHdlIG5lZWQgdG8gc3Vic2NyaWJlIHRvIGl0XG4gICAgaWYgKHJlcXVlc3RJZCkge1xuICAgICAgdGhpcy5fc3Vic2NyaWJlZFRvID0gcmVxdWVzdElkO1xuICAgICAgdGhpcy5fc3Vic2NyaXB0aW9uID0gdGhpcy5zdG9yZS5ub3RpZmljYXRpb25zLnN1YnNjcmliZShcbiAgICAgICAgcmVxdWVzdElkLFxuICAgICAgICAoX2lkOiBTdGFibGVEb2N1bWVudElkZW50aWZpZXIsIG9wOiAnaW52YWxpZGF0ZWQnIHwgJ3N0YXRlJyB8ICdhZGRlZCcgfCAndXBkYXRlZCcgfCAncmVtb3ZlZCcpID0-IHtcbiAgICAgICAgICAvLyBpZ25vcmUgc3Vic2NyaXB0aW9uIGV2ZW50cyB0aGF0IG9jY3VyIHdoaWxlIG91ciBvd24gY29tcG9uZW50J3MgcmVxdWVzdFxuICAgICAgICAgIC8vIGlzIG9jdXJyaW5nXG4gICAgICAgICAgaWYgKHRoaXMuaXNVcGRhdGluZykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICBzd2l0Y2ggKG9wKSB7XG4gICAgICAgICAgICBjYXNlICdpbnZhbGlkYXRlZCc6IHtcbiAgICAgICAgICAgICAgLy8gaWYgd2UncmUgc3Vic2NyaWJlZCB0byBpbnZhbGlkYXRpb25zLCB3ZSBuZWVkIHRvIHVwZGF0ZVxuICAgICAgICAgICAgICBpZiAodGhpcy5hdXRvcmVmcmVzaFR5cGVzLmhhcygnaW52YWxpZCcpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pbnZhbGlkYXRlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5tYXliZVVwZGF0ZSgpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAnc3RhdGUnOiB7XG4gICAgICAgICAgICAgIGNvbnN0IGxhdGVzdCA9IHRoaXMuc3RvcmUucmVxdWVzdE1hbmFnZXIuX2RlZHVwZWQuZ2V0KHJlcXVlc3RJZCk7XG4gICAgICAgICAgICAgIGNvbnN0IHByaW9yaXR5ID0gbGF0ZXN0Py5wcmlvcml0eTtcbiAgICAgICAgICAgICAgaWYgKCFwcmlvcml0eSkge1xuICAgICAgICAgICAgICAgIHRoaXMuaXNSZWZyZXNoaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAocHJpb3JpdHkuYmxvY2tpbmcpIHtcbiAgICAgICAgICAgICAgICAvLyBUT0RPIHNob3VsZCB3ZSBqdXN0IHRyZWF0IHRoaXMgYXMgcmVmcmVzaGluZz9cbiAgICAgICAgICAgICAgICB0aGlzLmlzUmVmcmVzaGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMubWF5YmVVcGRhdGUoJ3BvbGljeScsIHRydWUpO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuaXNSZWZyZXNoaW5nID0gdHJ1ZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICByZW1vdmVTdWJzY3JpcHRpb25zKCkge1xuICAgIGlmICh0aGlzLl9zdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMuc3RvcmUubm90aWZpY2F0aW9ucy51bnN1YnNjcmliZSh0aGlzLl9zdWJzY3JpcHRpb24pO1xuICAgICAgdGhpcy5fc3Vic2NyaWJlZFRvID0gbnVsbDtcbiAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbiA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEluc3RhbGwgdGhlIGV2ZW50IGxpc3RlbmVycyBmb3IgbmV0d29yayBhbmQgdmlzaWJpbGl0eSBjaGFuZ2VzLlxuICAgKiBUaGlzIGlzIG9ubHkgZG9uZSBpbiBicm93c2VyIGVudmlyb25tZW50cyB3aXRoIGEgZ2xvYmFsIGB3aW5kb3dgLlxuICAgKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGluc3RhbGxMaXN0ZW5lcnMoKSB7XG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5pc09ubGluZSA9IHdpbmRvdy5uYXZpZ2F0b3Iub25MaW5lO1xuICAgIHRoaXMudW5hdmFpbGFibGVTdGFydCA9IHRoaXMuaXNPbmxpbmUgPyBudWxsIDogRGF0ZS5ub3coKTtcbiAgICB0aGlzLmlzSGlkZGVuID0gZG9jdW1lbnQudmlzaWJpbGl0eVN0YXRlID09PSAnaGlkZGVuJztcblxuICAgIHRoaXMub25saW5lQ2hhbmdlZCA9IChldmVudDogRXZlbnQpID0-IHtcbiAgICAgIHRoaXMuaXNPbmxpbmUgPSBldmVudC50eXBlID09PSAnb25saW5lJztcbiAgICAgIGlmIChldmVudC50eXBlID09PSAnb2ZmbGluZScgJiYgdGhpcy51bmF2YWlsYWJsZVN0YXJ0ID09PSBudWxsKSB7XG4gICAgICAgIHRoaXMudW5hdmFpbGFibGVTdGFydCA9IERhdGUubm93KCk7XG4gICAgICB9XG4gICAgICB0aGlzLm1heWJlVXBkYXRlKCk7XG4gICAgfTtcbiAgICB0aGlzLmJhY2tncm91bmRDaGFuZ2VkID0gKCkgPT4ge1xuICAgICAgY29uc3QgaXNIaWRkZW4gPSBkb2N1bWVudC52aXNpYmlsaXR5U3RhdGUgPT09ICdoaWRkZW4nO1xuICAgICAgdGhpcy5pc0hpZGRlbiA9IGlzSGlkZGVuO1xuXG4gICAgICBpZiAoaXNIaWRkZW4gJiYgdGhpcy51bmF2YWlsYWJsZVN0YXJ0ID09PSBudWxsKSB7XG4gICAgICAgIHRoaXMudW5hdmFpbGFibGVTdGFydCA9IERhdGUubm93KCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMubWF5YmVVcGRhdGUoKTtcbiAgICB9O1xuXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ29ubGluZScsIHRoaXMub25saW5lQ2hhbmdlZCwgeyBwYXNzaXZlOiB0cnVlLCBjYXB0dXJlOiB0cnVlIH0pO1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdvZmZsaW5lJywgdGhpcy5vbmxpbmVDaGFuZ2VkLCB7IHBhc3NpdmU6IHRydWUsIGNhcHR1cmU6IHRydWUgfSk7XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigndmlzaWJpbGl0eWNoYW5nZScsIHRoaXMuYmFja2dyb3VuZENoYW5nZWQsIHsgcGFzc2l2ZTogdHJ1ZSwgY2FwdHVyZTogdHJ1ZSB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJZiB0aGUgbmV0d29yayBpcyBvbmxpbmUgYW5kIHRoZSB0YWIgaXMgdmlzaWJsZSwgZWl0aGVyIHJlbG9hZCBvciByZWZyZXNoIHRoZSByZXF1ZXN0XG4gICAqIGJhc2VkIG9uIHRoZSBjb21wb25lbnQncyBjb25maWd1cmF0aW9uIGFuZCB0aGUgcmVxdWVzdGVkIHVwZGF0ZSBtb2RlLlxuICAgKlxuICAgKiBWYWxpZCBtb2RlcyBhcmU6XG4gICAqXG4gICAqIC0gYCdyZWxvYWQnYDogRm9yY2UgYSByZWxvYWQgb2YgdGhlIHJlcXVlc3QuXG4gICAqIC0gYCdyZWZyZXNoJ2A6IFJlZnJlc2ggdGhlIHJlcXVlc3QgaW4gdGhlIGJhY2tncm91bmQuXG4gICAqIC0gYCdwb2xpY3knYDogTWFrZSB0aGUgcmVxdWVzdCwgbGV0dGluZyB0aGUgc3RvcmUncyBjb25maWd1cmVkIENhY2hlUG9saWN5IGRlY2lkZSB3aGV0aGVyIHRvIHJlbG9hZCwgcmVmcmVzaCwgb3IgZG8gbm90aGluZy5cbiAgICogLSBgdW5kZWZpbmVkYDogTWFrZSB0aGUgcmVxdWVzdCB1c2luZyB0aGUgY29tcG9uZW50J3MgYXV0b3JlZnJlc2hCZWhhdmlvciBzZXR0aW5nIGlmIHRoZSBhdXRvcmVmcmVzaFRocmVzaG9sZCBoYXMgcGFzc2VkLlxuICAgKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIG1heWJlVXBkYXRlKG1vZGU_OiAncmVsb2FkJyB8ICdyZWZyZXNoJyB8ICdwb2xpY3knIHwgJ2ludmFsaWRhdGVkJywgc2lsZW50PzogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzSWRsZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBjYW5BdHRlbXB0ID0gQm9vbGVhbih0aGlzLmlzT25saW5lICYmICF0aGlzLmlzSGlkZGVuICYmIChtb2RlIHx8IHRoaXMuYXV0b3JlZnJlc2hUeXBlcy5zaXplKSk7XG5cbiAgICBpZiAoIWNhbkF0dGVtcHQpIHtcbiAgICAgIGlmICghc2lsZW50ICYmIG1vZGUgJiYgbW9kZSAhPT0gJ2ludmFsaWRhdGVkJykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFJlbG9hZCBub3QgYXZhaWxhYmxlOiB0aGUgbmV0d29yayBpcyBub3Qgb25saW5lIG9yIHRoZSB0YWIgaXMgaGlkZGVuYCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB7IGF1dG9yZWZyZXNoVHlwZXMgfSA9IHRoaXM7XG4gICAgbGV0IHNob3VsZEF0dGVtcHQgPSB0aGlzLmludmFsaWRhdGVkIHx8IEJvb2xlYW4obW9kZSk7XG5cbiAgICBpZiAoIXNob3VsZEF0dGVtcHQgJiYgYXV0b3JlZnJlc2hUeXBlcy5oYXMoJ29ubGluZScpKSB7XG4gICAgICBjb25zdCB7IHVuYXZhaWxhYmxlU3RhcnQgfSA9IHRoaXM7XG4gICAgICBjb25zdCB7IGF1dG9yZWZyZXNoVGhyZXNob2xkIH0gPSB0aGlzLmFyZ3M7XG4gICAgICBjb25zdCBkZWFkbGluZSA9IHR5cGVvZiBhdXRvcmVmcmVzaFRocmVzaG9sZCA9PT0gJ251bWJlcicgPyBhdXRvcmVmcmVzaFRocmVzaG9sZCA6IERFRkFVTFRfREVBRExJTkU7XG4gICAgICBzaG91bGRBdHRlbXB0ID0gQm9vbGVhbih1bmF2YWlsYWJsZVN0YXJ0ICYmIERhdGUubm93KCkgLSB1bmF2YWlsYWJsZVN0YXJ0ID4gZGVhZGxpbmUpO1xuICAgIH1cblxuICAgIGlmICghc2hvdWxkQXR0ZW1wdCAmJiBhdXRvcmVmcmVzaFR5cGVzLmhhcygnaW50ZXJ2YWwnKSkge1xuICAgICAgY29uc3QgeyBpbnRlcnZhbFN0YXJ0IH0gPSB0aGlzO1xuICAgICAgY29uc3QgeyBhdXRvcmVmcmVzaFRocmVzaG9sZCB9ID0gdGhpcy5hcmdzO1xuXG4gICAgICBpZiAoaW50ZXJ2YWxTdGFydCAmJiB0eXBlb2YgYXV0b3JlZnJlc2hUaHJlc2hvbGQgPT09ICdudW1iZXInICYmIGF1dG9yZWZyZXNoVGhyZXNob2xkID4gMCkge1xuICAgICAgICBzaG91bGRBdHRlbXB0ID0gQm9vbGVhbihEYXRlLm5vdygpIC0gaW50ZXJ2YWxTdGFydCA-PSBhdXRvcmVmcmVzaFRocmVzaG9sZCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy51bmF2YWlsYWJsZVN0YXJ0ID0gbnVsbDtcbiAgICB0aGlzLmludmFsaWRhdGVkID0gZmFsc2U7XG5cbiAgICBpZiAoc2hvdWxkQXR0ZW1wdCkge1xuICAgICAgdGhpcy5jbGVhckludGVydmFsKCk7XG4gICAgICBjb25zdCByZXF1ZXN0ID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5yZXFTdGF0ZS5yZXF1ZXN0IGFzIHVua25vd24gYXMgUmVxdWVzdEluZm88VCwgUlQ-KTtcbiAgICAgIGNvbnN0IHJlYWxNb2RlID0gbW9kZSA9PT0gJ2ludmFsaWRhdGVkJyA_IG51bGwgOiBtb2RlO1xuICAgICAgY29uc3QgdmFsID0gcmVhbE1vZGUgPz8gdGhpcy5hcmdzLmF1dG9yZWZyZXNoQmVoYXZpb3IgPz8gJ3BvbGljeSc7XG4gICAgICBzd2l0Y2ggKHZhbCkge1xuICAgICAgICBjYXNlICdyZWxvYWQnOlxuICAgICAgICAgIHJlcXVlc3QuY2FjaGVPcHRpb25zID0gT2JqZWN0LmFzc2lnbih7fSwgcmVxdWVzdC5jYWNoZU9wdGlvbnMsIHsgcmVsb2FkOiB0cnVlIH0pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdyZWZyZXNoJzpcbiAgICAgICAgICByZXF1ZXN0LmNhY2hlT3B0aW9ucyA9IE9iamVjdC5hc3NpZ24oe30sIHJlcXVlc3QuY2FjaGVPcHRpb25zLCB7IGJhY2tncm91bmRSZWxvYWQ6IHRydWUgfSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3BvbGljeSc6XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgYEludmFsaWQgJHttb2RlID8gJ3VwZGF0ZSBtb2RlJyA6ICdAYXV0b3JlZnJlc2hCZWhhdmlvcid9IGZvciA8UmVxdWVzdCAvPjogJHtpc05ldmVyU3RyaW5nKHZhbCl9YFxuICAgICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHdhc1N0b3JlUmVxdWVzdCA9IChyZXF1ZXN0IGFzIHsgW0VuYWJsZUh5ZHJhdGlvbl06IGJvb2xlYW4gfSlbRW5hYmxlSHlkcmF0aW9uXSA9PT0gdHJ1ZTtcbiAgICAgIGFzc2VydChcbiAgICAgICAgYENhbm5vdCBzdXBwbHkgYSBkaWZmZXJlbnQgc3RvcmUgdmlhIGNvbnRleHQgdGhhbiB3YXMgdXNlZCB0byBjcmVhdGUgdGhlIHJlcXVlc3RgLFxuICAgICAgICAhcmVxdWVzdC5zdG9yZSB8fCByZXF1ZXN0LnN0b3JlID09PSB0aGlzLnN0b3JlXG4gICAgICApO1xuXG4gICAgICB0aGlzLmlzVXBkYXRpbmcgPSB0cnVlO1xuICAgICAgdGhpcy5fbGF0ZXN0UmVxdWVzdCA9IHdhc1N0b3JlUmVxdWVzdCA_IHRoaXMuc3RvcmUucmVxdWVzdChyZXF1ZXN0KSA6IHRoaXMuc3RvcmUucmVxdWVzdE1hbmFnZXIucmVxdWVzdChyZXF1ZXN0KTtcblxuICAgICAgaWYgKHZhbCAhPT0gJ3JlZnJlc2gnKSB7XG4gICAgICAgIHRoaXMuX2xvY2FsUmVxdWVzdCA9IHRoaXMuX2xhdGVzdFJlcXVlc3Q7XG4gICAgICB9XG5cbiAgICAgIHZvaWQgdGhpcy5zY2hlZHVsZUludGVydmFsKCk7XG4gICAgICB2b2lkIHRoaXMuX2xhdGVzdFJlcXVlc3QuZmluYWxseSgoKSA9PiB7XG4gICAgICAgIHRoaXMuaXNVcGRhdGluZyA9IGZhbHNlO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFRPRE8gcHJvYmFibHkgd2FudCB0aGlzXG4gICAgICAvLyB2b2lkIHRoaXMuc2NoZWR1bGVJbnRlcnZhbCgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyeSB0aGUgcmVxdWVzdCwgcmVsb2FkaW5nIGl0IGZyb20gdGhlIHNlcnZlci5cbiAgICpcbiAgICogQGludGVybmFsXG4gICAqL1xuICByZXRyeSA9IGFzeW5jICgpID0-IHtcbiAgICB0aGlzLm1heWJlVXBkYXRlKCdyZWxvYWQnKTtcbiAgICBhd2FpdCB0aGlzLl9sb2NhbFJlcXVlc3Q7XG4gIH07XG5cbiAgLyoqXG4gICAqIFJlZnJlc2ggdGhlIHJlcXVlc3QsIHVwZGF0aW5nIGl0IGluIHRoZSBiYWNrZ3JvdW5kLlxuICAgKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHJlZnJlc2ggPSBhc3luYyAoKSA9PiB7XG4gICAgdGhpcy5tYXliZVVwZGF0ZSgncmVmcmVzaCcpO1xuICAgIGF3YWl0IHRoaXMuX2xhdGVzdFJlcXVlc3Q7XG4gIH07XG5cbiAgQGNhY2hlZFxuICBnZXQgZXJyb3JGZWF0dXJlcygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgaXNIaWRkZW46IHRoaXMuaXNIaWRkZW4sXG4gICAgICBpc09ubGluZTogdGhpcy5pc09ubGluZSxcbiAgICAgIHJldHJ5OiB0aGlzLnJldHJ5LFxuICAgIH07XG4gIH1cblxuICBAY2FjaGVkXG4gIGdldCBjb250ZW50RmVhdHVyZXMoKSB7XG4gICAgY29uc3QgZmVhdDogQ29udGVudEZlYXR1cmVzPFJUPiA9IHtcbiAgICAgIGlzSGlkZGVuOiB0aGlzLmlzSGlkZGVuLFxuICAgICAgaXNPbmxpbmU6IHRoaXMuaXNPbmxpbmUsXG4gICAgICByZWxvYWQ6IHRoaXMucmV0cnksXG4gICAgICByZWZyZXNoOiB0aGlzLnJlZnJlc2gsXG4gICAgICBpc1JlZnJlc2hpbmc6IHRoaXMuaXNSZWZyZXNoaW5nLFxuICAgICAgbGF0ZXN0UmVxdWVzdDogdGhpcy5fbGF0ZXN0UmVxdWVzdCxcbiAgICB9O1xuXG4gICAgaWYgKGZlYXQuaXNSZWZyZXNoaW5nKSB7XG4gICAgICBmZWF0LmFib3J0ID0gKCkgPT4ge1xuICAgICAgICB0aGlzLl9sYXRlc3RSZXF1ZXN0Py5hYm9ydCgpO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmVhdDtcbiAgfVxuXG4gIHdpbGxEZXN0cm95KCkge1xuICAgIHRoaXMucmVtb3ZlU3Vic2NyaXB0aW9ucygpO1xuXG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5jbGVhckludGVydmFsKCk7XG5cbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignb25saW5lJywgdGhpcy5vbmxpbmVDaGFuZ2VkLCB7IHBhc3NpdmU6IHRydWUsIGNhcHR1cmU6IHRydWUgfSBhcyB1bmtub3duIGFzIGJvb2xlYW4pO1xuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdvZmZsaW5lJywgdGhpcy5vbmxpbmVDaGFuZ2VkLCB7IHBhc3NpdmU6IHRydWUsIGNhcHR1cmU6IHRydWUgfSBhcyB1bmtub3duIGFzIGJvb2xlYW4pO1xuICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Zpc2liaWxpdHljaGFuZ2UnLCB0aGlzLmJhY2tncm91bmRDaGFuZ2VkLCB7XG4gICAgICBwYXNzaXZlOiB0cnVlLFxuICAgICAgY2FwdHVyZTogdHJ1ZSxcbiAgICB9IGFzIHVua25vd24gYXMgYm9vbGVhbik7XG4gIH1cblxuICBAY2FjaGVkXG4gIGdldCBfcmVxdWVzdCgpOiBGdXR1cmU8UlQ-IHtcbiAgICBjb25zdCB7IHJlcXVlc3QsIHF1ZXJ5IH0gPSB0aGlzLmFyZ3M7XG4gICAgYXNzZXJ0KGBDYW5ub3QgdXNlIGJvdGggQHJlcXVlc3QgYW5kIEBxdWVyeSBhcmdzIHdpdGggdGhlIDxSZXF1ZXN0PiBjb21wb25lbnRgLCAhcmVxdWVzdCB8fCAhcXVlcnkpO1xuICAgIGNvbnN0IHsgX2xvY2FsUmVxdWVzdCwgX29yaWdpbmFsUmVxdWVzdCwgX29yaWdpbmFsUXVlcnkgfSA9IHRoaXM7XG4gICAgY29uc3QgaXNPcmlnaW5hbFJlcXVlc3QgPSByZXF1ZXN0ID09PSBfb3JpZ2luYWxSZXF1ZXN0ICYmIHF1ZXJ5ID09PSBfb3JpZ2luYWxRdWVyeTtcblxuICAgIGlmIChfbG9jYWxSZXF1ZXN0ICYmIGlzT3JpZ2luYWxSZXF1ZXN0KSB7XG4gICAgICByZXR1cm4gX2xvY2FsUmVxdWVzdDtcbiAgICB9XG5cbiAgICAvLyB1cGRhdGUgc3RhdGUgY2hlY2tzIGZvciB0aGUgbmV4dCB0aW1lXG4gICAgdGhpcy5fb3JpZ2luYWxRdWVyeSA9IHF1ZXJ5O1xuICAgIHRoaXMuX29yaWdpbmFsUmVxdWVzdCA9IHJlcXVlc3Q7XG5cbiAgICBpZiAocmVxdWVzdCkge1xuICAgICAgcmV0dXJuIHJlcXVlc3Q7XG4gICAgfVxuICAgIGFzc2VydChgWW91IG11c3QgcHJvdmlkZSBlaXRoZXIgQHJlcXVlc3Qgb3IgYW4gQHF1ZXJ5IGFyZyB3aXRoIHRoZSA8UmVxdWVzdD4gY29tcG9uZW50YCwgcXVlcnkpO1xuICAgIHJldHVybiB0aGlzLnN0b3JlLnJlcXVlc3Q8UlQsIFQ-KHF1ZXJ5KTtcbiAgfVxuXG4gIEBjYWNoZWRcbiAgZ2V0IHJlcXVlc3QoKTogRnV0dXJlPFJUPiB7XG4gICAgY29uc3QgcmVxdWVzdCA9IHRoaXMuX3JlcXVlc3Q7XG4gICAgdGhpcy51cGRhdGVTdWJzY3JpcHRpb25zKCk7XG4gICAgcmV0dXJuIHJlcXVlc3Q7XG4gIH1cblxuICBnZXQgc3RvcmUoKTogU3RvcmUge1xuICAgIGNvbnN0IHN0b3JlID0gdGhpcy5hcmdzLnN0b3JlIHx8IHRoaXMuX3N0b3JlO1xuICAgIGFzc2VydChcbiAgICAgIG1vZHVsZUV4aXN0cygnZW1iZXItcHJvdmlkZS1jb25zdW1lLWNvbnRleHQnKVxuICAgICAgICA_IGBObyBzdG9yZSB3YXMgcHJvdmlkZWQgdG8gdGhlIDxSZXF1ZXN0PiBjb21wb25lbnQuIEVpdGhlciBwcm92aWRlIGEgc3RvcmUgdmlhIHRoZSBAc3RvcmUgYXJnIG9yIHZpYSB0aGUgY29udGV4dCBBUEkgcHJvdmlkZWQgYnkgZW1iZXItcHJvdmlkZS1jb25zdW1lLWNvbnRleHQuYFxuICAgICAgICA6IGBObyBzdG9yZSB3YXMgcHJvdmlkZWQgdG8gdGhlIDxSZXF1ZXN0PiBjb21wb25lbnQuIEVpdGhlciBwcm92aWRlIGEgc3RvcmUgdmlhIHRoZSBAc3RvcmUgYXJnIG9yIGJ5IHJlZ2lzdGVyaW5nIGEgc3RvcmUgc2VydmljZS5gLFxuICAgICAgc3RvcmVcbiAgICApO1xuICAgIHJldHVybiBzdG9yZTtcbiAgfVxuXG4gIGdldCByZXFTdGF0ZSgpIHtcbiAgICByZXR1cm4gZ2V0UmVxdWVzdFN0YXRlPFJULCBUPih0aGlzLnJlcXVlc3QpO1xuICB9XG5cbiAgZ2V0IHJlc3VsdCgpIHtcbiAgICByZXR1cm4gdGhpcy5yZXFTdGF0ZS5yZXN1bHQgYXMgUlQ7XG4gIH1cblxuICA8dGVtcGxhdGU-XG4gICAge3sjaWYgKGFuZCB0aGlzLmlzSWRsZSAoaGFzLWJsb2NrIFwiaWRsZVwiKSl9fVxuICAgICAge3t5aWVsZCB0bz1cImlkbGVcIn19XG4gICAge3tlbHNlIGlmIHRoaXMuaXNJZGxlfX1cbiAgICAgIDxUaHJvdyBAZXJyb3I9e3tJZGxlQmxvY2tNaXNzaW5nRXJyb3J9fSAvPlxuICAgIHt7ZWxzZSBpZiB0aGlzLnJlcVN0YXRlLmlzTG9hZGluZ319XG4gICAgICB7e3lpZWxkIHRoaXMucmVxU3RhdGUubG9hZGluZ1N0YXRlIHRvPVwibG9hZGluZ1wifX1cbiAgICB7e2Vsc2UgaWYgKGFuZCB0aGlzLnJlcVN0YXRlLmlzQ2FuY2VsbGVkIChoYXMtYmxvY2sgXCJjYW5jZWxsZWRcIikpfX1cbiAgICAgIHt7eWllbGQgKG5vdE51bGwgdGhpcy5yZXFTdGF0ZS5lcnJvcikgdGhpcy5lcnJvckZlYXR1cmVzIHRvPVwiY2FuY2VsbGVkXCJ9fVxuICAgIHt7ZWxzZSBpZiAoYW5kIHRoaXMucmVxU3RhdGUuaXNFcnJvciAoaGFzLWJsb2NrIFwiZXJyb3JcIikpfX1cbiAgICAgIHt7eWllbGQgKG5vdE51bGwgdGhpcy5yZXFTdGF0ZS5lcnJvcikgdGhpcy5lcnJvckZlYXR1cmVzIHRvPVwiZXJyb3JcIn19XG4gICAge3tlbHNlIGlmIHRoaXMucmVxU3RhdGUuaXNTdWNjZXNzfX1cbiAgICAgIHt7eWllbGQgdGhpcy5yZXN1bHQgdGhpcy5jb250ZW50RmVhdHVyZXMgdG89XCJjb250ZW50XCJ9fVxuICAgIHt7ZWxzZSBpZiAobm90IHRoaXMucmVxU3RhdGUuaXNDYW5jZWxsZWQpfX1cbiAgICAgIDxUaHJvdyBAZXJyb3I9e3sobm90TnVsbCB0aGlzLnJlcVN0YXRlLmVycm9yKX19IC8-XG4gICAge3svaWZ9fVxuICAgIHt7eWllbGQgdGhpcy5yZXFTdGF0ZSB0bz1cImFsd2F5c1wifX1cbiAgPC90ZW1wbGF0ZT5cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsU0FBUyxPQUFPLFFBQVEsaUJBQWlCO0FBQ3pDLE9BQU8sZUFBZSxxQkFBcUI7QUFDM0MsU0FBUyxNQUFNLEVBQUUsT0FBTyxRQUFRLG9CQUFvQjtBQUVwRCxTQUFTLFVBQVUsRUFBRSxjQUFjLEVBQUUsWUFBWSxRQUFRLG9CQUFvQjtBQUU3RSxjQUFjLE1BQU0sRUFBRSx1QkFBdUIsUUFBUSxzQkFBc0I7QUFDM0UsY0FBYyxpQkFBaUIsUUFBUSxvQkFBb0I7QUFDM0QsWUFBWSxXQUFXLG9CQUFvQjtBQUMzQyxTQUFTLE1BQU0sUUFBUSxrQ0FBa0M7QUFDekQsY0FBYyx3QkFBd0IsUUFBUSx1Q0FBdUM7QUFDckYsU0FBUyxlQUFlLEVBQUUsS0FBSyxXQUFXLFFBQVEsaUNBQWlDO0FBRW5GLFNBQVMsR0FBRyxFQUFFLEtBQUssUUFBUSxjQUFjO0FBQ3pDLGNBQWMsbUJBQW1CLEVBQUUsWUFBWSxRQUFRLHFCQUFxQjtBQUM1RSxTQUFTLGVBQWUsUUFBUSxxQkFBcUI7QUFFckQsU0FBUyxRQUFRLEdBQUcsSUFBSSxHQUFHLEtBQUs7QUFDaEMsU0FBUyxRQUFRLEdBQUcsR0FBRyxDQUFDLEdBQUcsUUFBUSxHQUFHLElBQUk7QUFDMUMsU0FBUyxRQUFRLEdBQUcsR0FBRyxJQUFJLElBQUk7SUFDN0IsT0FBTywyQ0FBMkMsTUFBTTtJQUN4RCxPQUFPO0FBQ1Q7QUFFQSxNQUFNLE1BQU0sQ0FBQyxHQUFHLE9BQU8sR0FBSyxDQUFDO0FBQzdCLHNEQUFzRDtBQUN0RCxNQUFNLG1CQUFtQjtBQUN6QixNQUFNLHdCQUF3QixJQUFJLE1BQ2hDO0FBR0YsSUFBSSxVQUFVO0FBQ2QsSUFBSSxlQUFlLGFBQWEsbUNBQW1DO0lBQ2pFLE1BQU0sRUFBRSxTQUFTLGNBQWMsRUFBRSxHQUFHLFdBQVc7UUFBc0MsZ0JBQWdCOztJQUNy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"],"names":["deferred","WeakMap","deferDecorator","proto","prop","desc","map","get","Map","set","findDeferredDecorator","target","_a","cursor","prototype","decorateFieldV2","decorators","initializer","configurable","enumerable","writable","decorator","Object","defineProperty","decorateMethodV2","origDesc","getOwnPropertyDescriptor","value","call","initializeDeferredDecorator","constructor","RequestCache","isAbortError","error","DOMException","name","watchStream","stream","state","reader","getReader","bytesLoaded","shouldForward","_stream","readable","locked","isForwarding","writer","getWriter","buffer","_isPending","_isStarted","_startTime","performance","now","done","read","byteLength","_bytesLoaded","_lastPacketTime","item","ready","write","length","push","close","cancel","endTime","_endTime","_isComplete","RequestLoadingState","_future","_triggered","_trigger","future","promise","getStream","sizeHint","_sizeHint","then","_isCancelled","_isErrored","_error","g","tracked","i","void 0","isPending","TransformStream","isStarted","startTime","lastPacketTime","isComplete","isCancelled","isErrored","elapsedTime","completedRatio","remainingRatio","duration","speed","abort","RequestState","isError","loadingState","getPromiseResult","request","result","response","isLoading","content","isSuccess","setPromiseResult","getRequestState","PromiseCache","PromiseState","LegacyPromiseProxy","Symbol","for","isLegacyAwaitable","getPromise","getPromiseState","_promise","and","x","y","Boolean","Throw","Component","owner","args","setComponentTemplate","precompileTemplate","strictMode","Await","scope","notNull","macroCondition","getGlobalConfig","WarpDrive","env","DEBUG","test","Error","not","DEFAULT_DEADLINE","IdleBlockMissingError","consume","service","moduleExists","contextConsume","importSync","isNeverString","val","Request","unavailableStart","intervalStart","nextInterval","invalidated","isUpdating","onlineChanged","backgroundChanged","_originalRequest","_originalQuery","_subscription","_subscribedTo","installListeners","beginPolling","isDestroyed","scheduleInterval","isIdle","query","n","cached","autorefreshTypes","autorefresh","types","split","Set","autorefreshThreshold","hasValidThreshold","window","has","_latestRequest","Date","setTimeout","maybeUpdate","clearInterval","clearTimeout","updateSubscriptions","requestId","_request","lid","removeSubscriptions","store","notifications","subscribe","_id","op","latest","requestManager","_deduped","priority","isRefreshing","blocking","unsubscribe","isOnline","navigator","onLine","isHidden","document","visibilityState","event","type","addEventListener","passive","capture","mode","silent","canAttempt","size","shouldAttempt","deadline","assign","reqState","realMode","autorefreshBehavior","cacheOptions","reload","backgroundReload","wasStoreRequest","EnableHydration","_localRequest","finally","retry","refresh","errorFeatures","contentFeatures","feat","latestRequest","willDestroy","removeEventListener","isOriginalRequest","_store"],"mappings":"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","x_google_ignoreList":[0]}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../node_modules/.pnpm/decorator-transforms@2.3.0_@babel+core@7.26.0/node_modules/decorator-transforms/dist/runtime-BPCpkOf1.js","../src/-private/request-state.ts","../src/-private/promise-state.ts","../src/-private/await.gts","../src/-private/request.gts"],"sourcesContent":["const deferred = /* @__PURE__ */ new WeakMap();\nfunction deferDecorator(proto, prop, desc) {\n let map = deferred.get(proto);\n if (!map) {\n map = /* @__PURE__ */ new Map();\n deferred.set(proto, map);\n }\n map.set(prop, desc);\n}\nfunction findDeferredDecorator(target, prop) {\n var _a;\n let cursor = target.prototype;\n while (cursor) {\n let desc = (_a = deferred.get(cursor)) == null ? void 0 : _a.get(prop);\n if (desc) {\n return desc;\n }\n cursor = cursor.prototype;\n }\n}\nfunction decorateFieldV1(target, prop, decorators, initializer) {\n return decorateFieldV2(target.prototype, prop, decorators, initializer);\n}\nfunction decorateFieldV2(prototype, prop, decorators, initializer) {\n let desc = {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n };\n if (initializer) {\n desc.initializer = initializer;\n }\n for (let decorator of decorators) {\n desc = decorator(prototype, prop, desc) || desc;\n }\n if (desc.initializer === void 0) {\n Object.defineProperty(prototype, prop, desc);\n } else {\n deferDecorator(prototype, prop, desc);\n }\n}\nfunction decorateMethodV1({ prototype }, prop, decorators) {\n return decorateMethodV2(prototype, prop, decorators);\n}\nfunction decorateMethodV2(prototype, prop, decorators) {\n const origDesc = Object.getOwnPropertyDescriptor(prototype, prop);\n let desc = { ...origDesc };\n for (let decorator of decorators) {\n desc = decorator(prototype, prop, desc) || desc;\n }\n if (desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(prototype) : void 0;\n desc.initializer = void 0;\n }\n Object.defineProperty(prototype, prop, desc);\n}\nfunction initializeDeferredDecorator(target, prop) {\n let desc = findDeferredDecorator(target.constructor, prop);\n if (desc) {\n Object.defineProperty(target, prop, {\n enumerable: desc.enumerable,\n configurable: desc.configurable,\n writable: desc.writable,\n value: desc.initializer ? desc.initializer.call(target) : void 0\n });\n }\n}\nfunction decorateClass(target, decorators) {\n return decorators.reduce(\n (accum, decorator) => decorator(accum) || accum,\n target\n );\n}\nfunction decoratePOJO(pojo, decorated) {\n for (let [type, prop, decorators] of decorated) {\n if (type === \"field\") {\n decoratePojoField(pojo, prop, decorators);\n } else {\n decorateMethodV2(pojo, prop, decorators);\n }\n }\n return pojo;\n}\nfunction decoratePojoField(pojo, prop, decorators) {\n let desc = {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: () => {\n var _a;\n return (_a = Object.getOwnPropertyDescriptor(pojo, prop)) == null ? void 0 : _a.value;\n }\n };\n for (let decorator of decorators) {\n desc = decorator(pojo, prop, desc) || desc;\n }\n if (desc.initializer) {\n desc.value = desc.initializer.call(pojo);\n delete desc.initializer;\n }\n Object.defineProperty(pojo, prop, desc);\n}\nconst runtime = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n c: decorateClass,\n f: decorateFieldV1,\n g: decorateFieldV2,\n i: initializeDeferredDecorator,\n m: decorateMethodV1,\n n: decorateMethodV2,\n p: decoratePOJO\n}, Symbol.toStringTag, { value: \"Module\" }));\nexport {\n decorateFieldV2 as a,\n decorateMethodV1 as b,\n decorateMethodV2 as c,\n decorateFieldV1 as d,\n decorateClass as e,\n decoratePOJO as f,\n initializeDeferredDecorator as i,\n runtime as r\n};\n//# sourceMappingURL=runtime-BPCpkOf1.js.map\n","import { tracked } from '@glimmer/tracking';\n\nimport type {\n Future,\n ImmutableRequestInfo,\n ResponseInfo,\n StructuredDocument,\n StructuredErrorDocument,\n} from '@ember-data-mirror/request';\nimport { getPromiseResult, setPromiseResult } from '@ember-data-mirror/request';\n\nconst RequestCache = new WeakMap<Future<unknown>, RequestState>();\n\nfunction isAbortError(error: unknown): boolean {\n return error instanceof DOMException && error.name === 'AbortError';\n}\n\nasync function watchStream(stream: ReadableStream<Uint8Array>, state: RequestLoadingState): Promise<void> {\n const reader = stream.getReader();\n let bytesLoaded = 0;\n let shouldForward = state._stream !== null && state._stream.readable.locked;\n let isForwarding = shouldForward;\n let writer = state._stream?.writable.getWriter();\n const buffer = [];\n\n state._isPending = false;\n state._isStarted = true;\n state._startTime = performance.now();\n\n // eslint-disable-next-line no-constant-condition\n while (true) {\n const { value, done } = await reader.read();\n if (done) {\n break;\n }\n bytesLoaded += value.byteLength;\n state._bytesLoaded = bytesLoaded;\n state._lastPacketTime = performance.now();\n\n shouldForward = shouldForward || (state._stream !== null && state._stream.readable.locked);\n\n if (shouldForward) {\n if (!isForwarding) {\n isForwarding = true;\n writer = state._stream!.writable.getWriter();\n for (const item of buffer) {\n await writer.ready;\n await writer.write(item);\n }\n buffer.length = 0;\n }\n await writer!.ready;\n await writer!.write(value);\n } else {\n buffer.push(value);\n }\n }\n\n // if we are still forwarding, we need to close the writer\n if (isForwarding) {\n await writer!.ready;\n await writer!.close();\n } else if (state._stream) {\n // if we are not forwarding, we need to cancel the stream\n await state._stream.readable.cancel('The Stream Has Already Ended');\n state._stream = null;\n }\n\n const endTime = performance.now();\n state._endTime = endTime;\n state._isComplete = true;\n state._isStarted = false;\n}\n\nexport class RequestLoadingState {\n _stream: TransformStream | null = null;\n _future: Future<unknown>;\n _triggered = false;\n _trigger() {\n if (this._triggered) {\n return;\n }\n this._triggered = true;\n const future = this._future;\n const promise: Promise<ReadableStream<Uint8Array> | null> & { sizeHint?: number } = future.getStream();\n if (promise.sizeHint) {\n this._sizeHint = promise.sizeHint;\n }\n this.promise = promise.then(\n (stream) => {\n if (!stream) {\n this._isPending = false;\n this._isComplete = true;\n return;\n }\n return watchStream(stream, this);\n },\n (error: Error) => {\n this._isPending = false;\n this._isStarted = false;\n if (isAbortError(error)) {\n this._isCancelled = true;\n this._isComplete = true;\n }\n this._isErrored = true;\n this._error = error;\n }\n );\n }\n\n promise: Promise<void> | null = null;\n @tracked _sizeHint = 0;\n @tracked _bytesLoaded = 0;\n\n @tracked _startTime = 0;\n @tracked _endTime = 0;\n @tracked _lastPacketTime = 0;\n\n @tracked _isPending = true;\n @tracked _isStarted = false;\n @tracked _isComplete = false;\n @tracked _isCancelled = false;\n @tracked _isErrored = false;\n @tracked _error: Error | null = null;\n\n get isPending(): boolean {\n this._trigger();\n return this._isPending;\n }\n\n get sizeHint(): number {\n this._trigger();\n return this._sizeHint;\n }\n\n get stream(): ReadableStream | null {\n this._trigger();\n if (!this._stream) {\n if (this._isComplete || this._isCancelled || this._isErrored) {\n return null;\n }\n this._stream = new TransformStream();\n }\n return this._stream.readable;\n }\n\n get isStarted(): boolean {\n this._trigger();\n return this._isStarted;\n }\n\n get bytesLoaded(): number {\n this._trigger();\n return this._bytesLoaded;\n }\n\n get startTime(): number {\n this._trigger();\n return this._startTime;\n }\n\n get endTime(): number {\n this._trigger();\n return this._endTime;\n }\n\n get lastPacketTime(): number {\n this._trigger();\n return this._lastPacketTime;\n }\n\n get isComplete(): boolean {\n this._trigger();\n return this._isComplete;\n }\n\n get isCancelled(): boolean {\n this._trigger();\n return this._isCancelled;\n }\n\n get isErrored(): boolean {\n this._trigger();\n return this._isErrored;\n }\n\n get error(): Error | null {\n this._trigger();\n return this._error;\n }\n\n get elapsedTime(): number {\n return (this.endTime || this.lastPacketTime) - this.startTime;\n }\n\n get completedRatio(): number {\n return this.sizeHint ? this.bytesLoaded / this.sizeHint : 0;\n }\n\n get remainingRatio(): number {\n return 1 - this.completedRatio;\n }\n\n get duration(): number {\n return this.endTime - this.startTime;\n }\n\n get speed(): number {\n // bytes per second\n return this.bytesLoaded / (this.elapsedTime / 1000);\n }\n\n constructor(future: Future<unknown>) {\n this._future = future;\n }\n\n abort = (): void => {\n this._future.abort();\n };\n}\n\nexport class RequestState<T = unknown, RT = unknown> {\n #request: Future<RT>;\n #loadingState: RequestLoadingState | null = null;\n\n @tracked result: RT | null = null;\n @tracked error: StructuredErrorDocument | null = null;\n @tracked isLoading = true;\n @tracked isSuccess = false;\n @tracked isError = false;\n @tracked request: ImmutableRequestInfo<T, RT> | null = null;\n @tracked response: Response | ResponseInfo | null = null;\n\n get isCancelled(): boolean {\n return this.isError && isAbortError(this.error);\n }\n\n get loadingState() {\n if (!this.#loadingState) {\n this.#loadingState = new RequestLoadingState(this.#request);\n }\n\n return this.#loadingState;\n }\n\n constructor(future: Future<RT>) {\n this.#request = future;\n const state = getPromiseResult<StructuredDocument<RT>, StructuredErrorDocument>(future);\n\n if (state) {\n this.request = state.result.request as ImmutableRequestInfo<T, RT>;\n this.response = state.result.response;\n this.isLoading = false;\n\n if (state.isError) {\n this.error = state.result;\n this.isError = true;\n } else {\n this.result = state.result.content!;\n this.isSuccess = true;\n }\n } else {\n void future.then(\n (result) => {\n setPromiseResult(future, { isError: false, result });\n this.result = result.content;\n this.isSuccess = true;\n this.isLoading = false;\n this.request = result.request as ImmutableRequestInfo<T, RT>;\n this.response = result.response;\n },\n (error: StructuredErrorDocument) => {\n setPromiseResult(future, { isError: true, result: error });\n this.error = error;\n this.isError = true;\n this.isLoading = false;\n this.request = error.request as ImmutableRequestInfo<T, RT>;\n this.response = error.response;\n }\n );\n }\n }\n}\n\nexport function getRequestState<RT, T>(future: Future<RT>): RequestState<T, RT> {\n let state = RequestCache.get(future) as RequestState<T, RT> | undefined;\n\n if (!state) {\n state = new RequestState(future);\n RequestCache.set(future, state);\n }\n\n return state;\n}\n","import { tracked } from '@glimmer/tracking';\n\nimport type { Awaitable } from '@ember-data-mirror/request';\nimport { getPromiseResult, setPromiseResult } from '@ember-data-mirror/request';\n\nconst PromiseCache = new WeakMap<Awaitable, PromiseState>();\n\nexport class PromiseState<T = unknown, E = unknown> {\n @tracked result: T | null = null;\n @tracked error: E | null = null;\n @tracked isPending = true;\n @tracked isSuccess = false;\n @tracked isError = false;\n\n constructor(promise: Promise<T> | Awaitable<T, E>) {\n const state = getPromiseResult<T, E>(promise);\n\n if (state) {\n if (state.isError) {\n this.error = state.result;\n this.isError = true;\n this.isPending = false;\n } else {\n this.result = state.result;\n this.isSuccess = true;\n this.isPending = false;\n }\n } else {\n void promise.then(\n (result) => {\n setPromiseResult(promise, { isError: false, result });\n this.result = result;\n this.isSuccess = true;\n this.isPending = false;\n },\n (error: E) => {\n setPromiseResult(promise, { isError: true, result: error });\n this.error = error;\n this.isError = true;\n this.isPending = false;\n }\n );\n }\n }\n}\n\nconst LegacyPromiseProxy = Symbol.for('LegacyPromiseProxy');\ntype LegacyAwaitable<T, E> = { promise: Promise<T> | Awaitable<T, E>; [LegacyPromiseProxy]: true };\n\nfunction isLegacyAwaitable<T, E>(promise: object): promise is LegacyAwaitable<T, E> {\n return LegacyPromiseProxy in promise && 'promise' in promise && promise[LegacyPromiseProxy] === true;\n}\n\nfunction getPromise<T, E>(promise: Promise<T> | Awaitable<T, E> | LegacyAwaitable<T, E>): Promise<T> | Awaitable<T, E> {\n return isLegacyAwaitable(promise) ? promise.promise : promise;\n}\n\nexport function getPromiseState<T = unknown, E = unknown>(promise: Promise<T> | Awaitable<T, E>): PromiseState<T, E> {\n const _promise = getPromise(promise);\n let state = PromiseCache.get(_promise) as PromiseState<T, E> | undefined;\n\n if (!state) {\n state = new PromiseState(_promise);\n PromiseCache.set(_promise, state);\n }\n\n return state;\n}\n","import { template as template_bdcd531f072142a3b443932fdbf904a8 } from \"@ember/template-compiler\";\nimport Component from '@glimmer/component';\nimport type { Awaitable } from '@ember-data-mirror/request';\nimport { getPromiseState } from './promise-state.ts';\nexport const and = (x: unknown, y: unknown)=>Boolean(x && y);\ninterface ThrowSignature<E = Error | string | object> {\n Args: {\n error: E;\n };\n}\nexport class Throw<T> extends Component<ThrowSignature<T>> {\n constructor(owner: unknown, args: ThrowSignature<T>['Args']){\n super(owner, args);\n // this error is opaque (user supplied) so we don't validate it\n // as an Error instance.\n // eslint-disable-next-line @typescript-eslint/no-throw-literal\n throw this.args.error;\n }\n static{\n template_bdcd531f072142a3b443932fdbf904a8(``, {\n component: this,\n eval () {\n return eval(arguments[0]);\n }\n });\n }\n}\ninterface AwaitSignature<T, E = Error | string | object> {\n Args: {\n promise: Promise<T> | Awaitable<T, E>;\n };\n Blocks: {\n pending: [];\n error: [error: E];\n success: [value: T];\n };\n}\nexport class Await<T, E> extends Component<AwaitSignature<T, E>> {\n get state() {\n return getPromiseState<T, E>(this.args.promise);\n }\n get error() {\n return this.state.error as E;\n }\n get result() {\n return this.state.result as T;\n }\n static{\n template_bdcd531f072142a3b443932fdbf904a8(`\n {{#if this.state.isPending}}\n {{yield to=\"pending\"}}\n {{else if (and this.state.isError (has-block \"error\"))}}\n {{yield this.error to=\"error\"}}\n {{else if this.state.isSuccess}}\n {{yield this.result to=\"success\"}}\n {{else}}\n <Throw @error={{this.error}} />\n {{/if}}\n `, {\n component: this,\n eval () {\n return eval(arguments[0]);\n }\n });\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RhdGEvZGF0YS9wYWNrYWdlcy9lbWJlci9zcmMvLXByaXZhdGUvYXdhaXQuZ3RzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBDb21wb25lbnQgZnJvbSAnQGdsaW1tZXIvY29tcG9uZW50JztcblxuaW1wb3J0IHR5cGUgeyBBd2FpdGFibGUgfSBmcm9tICdAZW1iZXItZGF0YS9yZXF1ZXN0JztcblxuaW1wb3J0IHsgZ2V0UHJvbWlzZVN0YXRlIH0gZnJvbSAnLi9wcm9taXNlLXN0YXRlLnRzJztcblxuZXhwb3J0IGNvbnN0IGFuZCA9ICh4OiB1bmtub3duLCB5OiB1bmtub3duKSA9PiBCb29sZWFuKHggJiYgeSk7XG5pbnRlcmZhY2UgVGhyb3dTaWduYXR1cmU8RSA9IEVycm9yIHwgc3RyaW5nIHwgb2JqZWN0PiB7XG4gIEFyZ3M6IHtcbiAgICBlcnJvcjogRTtcbiAgfTtcbn1cblxuZXhwb3J0IGNsYXNzIFRocm93PFQ-IGV4dGVuZHMgQ29tcG9uZW50PFRocm93U2lnbmF0dXJlPFQ-PiB7XG4gIGNvbnN0cnVjdG9yKG93bmVyOiB1bmtub3duLCBhcmdzOiBUaHJvd1NpZ25hdHVyZTxUPlsnQXJncyddKSB7XG4gICAgc3VwZXIob3duZXIsIGFyZ3MpO1xuICAgIC8vIHRoaXMgZXJyb3IgaXMgb3BhcXVlICh1c2VyIHN1cHBsaWVkKSBzbyB3ZSBkb24ndCB2YWxpZGF0ZSBpdFxuICAgIC8vIGFzIGFuIEVycm9yIGluc3RhbmNlLlxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdGhyb3ctbGl0ZXJhbFxuICAgIHRocm93IHRoaXMuYXJncy5lcnJvcjtcbiAgfVxuICA8dGVtcGxhdGU-PC90ZW1wbGF0ZT5cbn1cblxuaW50ZXJmYWNlIEF3YWl0U2lnbmF0dXJlPFQsIEUgPSBFcnJvciB8IHN0cmluZyB8IG9iamVjdD4ge1xuICBBcmdzOiB7XG4gICAgcHJvbWlzZTogUHJvbWlzZTxUPiB8IEF3YWl0YWJsZTxULCBFPjtcbiAgfTtcbiAgQmxvY2tzOiB7XG4gICAgcGVuZGluZzogW107XG4gICAgZXJyb3I6IFtlcnJvcjogRV07XG4gICAgc3VjY2VzczogW3ZhbHVlOiBUXTtcbiAgfTtcbn1cblxuZXhwb3J0IGNsYXNzIEF3YWl0PFQsIEU-IGV4dGVuZHMgQ29tcG9uZW50PEF3YWl0U2lnbmF0dXJlPFQsIEU-PiB7XG4gIGdldCBzdGF0ZSgpIHtcbiAgICByZXR1cm4gZ2V0UHJvbWlzZVN0YXRlPFQsIEU-KHRoaXMuYXJncy5wcm9taXNlKTtcbiAgfVxuXG4gIGdldCBlcnJvcigpIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZS5lcnJvciBhcyBFO1xuICB9XG5cbiAgZ2V0IHJlc3VsdCgpIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZS5yZXN1bHQgYXMgVDtcbiAgfVxuXG4gIDx0ZW1wbGF0ZT5cbiAgICB7eyNpZiB0aGlzLnN0YXRlLmlzUGVuZGluZ319XG4gICAgICB7e3lpZWxkIHRvPVwicGVuZGluZ1wifX1cbiAgICB7e2Vsc2UgaWYgKGFuZCB0aGlzLnN0YXRlLmlzRXJyb3IgKGhhcy1ibG9jayBcImVycm9yXCIpKX19XG4gICAgICB7e3lpZWxkIHRoaXMuZXJyb3IgdG89XCJlcnJvclwifX1cbiAgICB7e2Vsc2UgaWYgdGhpcy5zdGF0ZS5pc1N1Y2Nlc3N9fVxuICAgICAge3t5aWVsZCB0aGlzLnJlc3VsdCB0bz1cInN1Y2Nlc3NcIn19XG4gICAge3tlbHNlfX1cbiAgICAgIDxUaHJvdyBAZXJyb3I9e3t0aGlzLmVycm9yfX0gLz5cbiAgICB7ey9pZn19XG4gIDwvdGVtcGxhdGU-XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sZUFBZSxxQkFBcUI7QUFFM0MsY0FBYyxTQUFTLFFBQVEsc0JBQXNCO0FBRXJELFNBQVMsZUFBZSxRQUFRLHFCQUFxQjtBQUVyRCxPQUFPLE1BQU0sTUFBTSxDQUFDLEdBQUcsT0FBTyxFQUFFLEdBQUcsT0FBTyxHQUFLLFFBQVEsS0FBSyxHQUFHO1VBQ3JELGVBQWUsSUFBSSxRQUFRLE1BQU0sR0FBRyxNQUFNO0lBQ2xEO1FBQ0UsT0FBTzs7O0FBSVgsT0FBTyxNQUFNLE1BQU0sV0FBVyxVQUFVLGVBQWU7SUFDckQsWUFBWSxPQUFPLE9BQU8sRUFBRSxNQUFNLGVBQWUsR0FBRyxPQUFPLENBQUU7UUFDM0QsS0FBSyxDQUFDLE9BQU87UUFDYiwrREFBK0Q7UUFDL0Qsd0JBQXdCO1FBQ3hCLCtEQUErRDtRQUMvRCxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSztJQUN2QjtJQUNBLE1BQUE7UUFBQSwwQ0FBVSxDQUFBLENBQUEsRUFBQTtZQUFBLFdBQUEsSUFBVztZQUFYO2dCQUFBLE9BQUEsS0FBQSxTQUFBLENBQUEsRUFBVztZQUFEO1FBQUE7SUFBQSxDQUFWO0FBQ1o7VUFFVSxlQUFlLEdBQUcsSUFBSSxRQUFRLE1BQU0sR0FBRyxNQUFNO0lBQ3JEO1FBQ0UsU0FBUyxRQUFRLEtBQUssVUFBVSxHQUFHOztJQUVyQztRQUNFO1FBQ0EsUUFBUSxPQUFPO1FBQ2YsVUFBVSxPQUFPOzs7QUFJckIsT0FBTyxNQUFNLE1BQU0sR0FBRyxXQUFXLFVBQVUsZUFBZSxHQUFHO0lBQzNELElBQUksUUFBUTtRQUNWLE9BQU8sZ0JBQWdCLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU87SUFDaEQ7SUFFQSxJQUFJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxJQUFJO0lBQzdCO0lBRUEsSUFBSSxTQUFTO1FBQ1gsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sSUFBSTtJQUM5QjtJQUVBLE1BQUE7UUFBQSwwQ0FBVSxDQUFBOzs7Ozs7Ozs7O0VBVVYsQ0FBQSxFQUFBO1lBQUEsV0FBQSxJQUFXO1lBQVg7Z0JBQUEsT0FBQSxLQUFBLFNBQUEsQ0FBQSxFQUFXO1lBQUQ7UUFBQTtJQUFBLENBVkE7QUFXWiJ9","import { template as template_01b3a9c09f274749bb081882efaa2eb1 } from \"@ember/template-compiler\";\nimport { service } from '@ember/service';\nimport Component from '@glimmer/component';\nimport { cached, tracked } from '@glimmer/tracking';\nimport { importSync, macroCondition, moduleExists } from '@embroider/macros';\nimport type { Future, StructuredErrorDocument } from '@ember-data-mirror/request';\nimport type { StoreRequestInput } from '@ember-data-mirror/store';\nimport type Store from '@ember-data-mirror/store';\nimport { assert } from '@warp-drive-mirror/build-config/macros';\nimport type { StableDocumentIdentifier } from '@warp-drive-mirror/core-types/identifier.js';\nimport { EnableHydration, type RequestInfo } from '@warp-drive-mirror/core-types/request';\nimport { and, Throw } from './await.gts';\nimport type { RequestLoadingState, RequestState } from './request-state.ts';\nimport { getRequestState } from './request-state.ts';\nfunction notNull(x: null): never;\nfunction notNull<T>(x: T): Exclude<T, null>;\nfunction notNull<T>(x: T | null) {\n assert('Expected a non-null value, but got null', x !== null);\n return x;\n}\nconst not = (x: unknown)=>!x;\n// default to 30 seconds unavailable before we refresh\nconst DEFAULT_DEADLINE = 30_000;\nconst IdleBlockMissingError = new Error('No idle block provided for <Request> component, and no query or request was provided.');\nlet consume = service;\nif (macroCondition(moduleExists('ember-provide-consume-context'))) {\n const { consume: contextConsume } = importSync('ember-provide-consume-context') as {\n consume: typeof service;\n };\n consume = contextConsume;\n}\nfunction isNeverString(val: never): string {\n return val;\n}\ntype AutorefreshBehaviorType = 'online' | 'interval' | 'invalid';\ntype AutorefreshBehaviorCombos = true | AutorefreshBehaviorType | `${AutorefreshBehaviorType},${AutorefreshBehaviorType}` | `${AutorefreshBehaviorType},${AutorefreshBehaviorType},${AutorefreshBehaviorType}`;\ntype ContentFeatures<RT> = {\n isOnline: boolean;\n isHidden: boolean;\n isRefreshing: boolean;\n refresh: () => Promise<void>;\n reload: () => Promise<void>;\n abort?: () => void;\n latestRequest?: Future<RT>;\n};\ninterface RequestSignature<T, RT> {\n Args: {\n request?: Future<RT>;\n query?: StoreRequestInput<T, RT>;\n store?: Store;\n autorefresh?: AutorefreshBehaviorCombos;\n autorefreshThreshold?: number;\n autorefreshBehavior?: 'refresh' | 'reload' | 'policy';\n };\n Blocks: {\n idle: [];\n loading: [state: RequestLoadingState];\n cancelled: [error: StructuredErrorDocument, features: {\n isOnline: boolean;\n isHidden: boolean;\n retry: () => Promise<void>;\n }];\n error: [error: StructuredErrorDocument, features: {\n isOnline: boolean;\n isHidden: boolean;\n retry: () => Promise<void>;\n }];\n content: [value: RT, features: ContentFeatures<RT>];\n always: [state: RequestState<T, RT>];\n };\n}\n/**\n * The `<Request>` component is a powerful tool for managing data fetching and\n * state in your Ember application. It provides declarative reactive control-flow\n * for managing requests and state in your application.\n *\n * @typedoc\n */ export class Request<T, RT> extends Component<RequestSignature<T, RT>> {\n /**\n * The store instance to use for making requests. If contexts are available, this\n * will be the `store` on the context, else it will be the store service.\n *\n * @internal\n */ @consume('store')\n _store: Store;\n /**\n * Whether the browser reports that the network is online.\n *\n * @internal\n */ @tracked\n isOnline = true;\n /**\n * Whether the browser reports that the tab is hidden.\n *\n * @internal\n */ @tracked\n isHidden = true;\n /**\n * Whether the component is currently refreshing the request.\n *\n * @internal\n */ @tracked\n isRefreshing = false;\n /**\n * The most recent blocking request that was made, typically\n * the result of a reload.\n *\n * This will never be the original request passed as an arg to\n * the component.\n *\n * @internal\n */ @tracked\n _localRequest: Future<RT> | undefined;\n /**\n * The most recent request that was made, typically due to either a\n * reload or a refresh.\n *\n * This will never be the original request passed as an arg to\n * the component.\n *\n * @internal\n */ @tracked\n _latestRequest: Future<RT> | undefined;\n /**\n * The time at which the network was reported as offline.\n *\n * @internal\n */ unavailableStart: number | null;\n intervalStart: number | null;\n nextInterval: number | null;\n invalidated: boolean;\n isUpdating: boolean;\n /**\n * The event listener for network status changes,\n * cached to use the reference for removal.\n *\n * @internal\n */ onlineChanged: (event: Event) => void;\n /**\n * The event listener for visibility status changes,\n * cached to use the reference for removal.\n *\n * @internal\n */ backgroundChanged: (event: Event) => void;\n /**\n * The last request passed as an arg to the component,\n * cached for comparison.\n *\n * @internal\n */ _originalRequest: Future<RT> | undefined;\n /**\n * The last query passed as an arg to the component,\n * cached for comparison.\n *\n * @internal\n */ _originalQuery: StoreRequestInput<T, RT> | undefined;\n _subscription: object | null;\n _subscribedTo: object | null;\n constructor(owner: unknown, args: RequestSignature<T, RT>['Args']){\n super(owner, args);\n this._subscribedTo = null;\n this._subscription = null;\n this.intervalStart = null;\n this.invalidated = false;\n this.nextInterval = null;\n this.installListeners();\n void this.beginPolling();\n }\n async beginPolling() {\n // await the initial request\n try {\n await this.request;\n } catch {\n // ignore errors here, we just want to wait for the request to finish\n } finally{\n if (!this.isDestroyed) {\n void this.scheduleInterval();\n }\n }\n }\n @cached\n get isIdle() {\n const { request, query } = this.args;\n return Boolean(!request && !query);\n }\n @cached\n get autorefreshTypes(): Set<AutorefreshBehaviorType> {\n const { autorefresh } = this.args;\n let types: AutorefreshBehaviorType[];\n if (autorefresh === true) {\n types = [\n 'online',\n 'invalid'\n ];\n } else if (typeof autorefresh === 'string') {\n types = autorefresh.split(',') as AutorefreshBehaviorType[];\n } else {\n types = [];\n }\n return new Set(types);\n }\n // we only run this function on component creation\n // and when an update is triggered, so it does not\n // react to changes in the autorefreshThreshold\n // or autorefresh args.\n //\n // if we need to react to those changes, we can\n // use a modifier or internal component or some\n // such to trigger a re-run of this function.\n async scheduleInterval() {\n const { autorefreshThreshold } = this.args;\n const hasValidThreshold = typeof autorefreshThreshold === 'number' && autorefreshThreshold > 0;\n if (// dont schedule in SSR\n typeof window === 'undefined' || // dont schedule without a threshold\n !hasValidThreshold || // dont schedule if we weren't told to\n !this.autorefreshTypes.has('interval') || // dont schedule if we're already scheduled\n this.intervalStart !== null) {\n return;\n }\n // if we have a current request, wait for it to finish\n // before scheduling the next one\n if (this._latestRequest) {\n try {\n await this._latestRequest;\n } catch {\n // ignore errors here, we just want to wait for the request to finish\n }\n if (this.isDestroyed) {\n return;\n }\n }\n // setup the next interval\n this.intervalStart = Date.now();\n this.nextInterval = setTimeout(()=>{\n this.maybeUpdate();\n }, autorefreshThreshold);\n }\n clearInterval() {\n if (this.nextInterval) {\n clearTimeout(this.nextInterval);\n this.intervalStart = null;\n }\n }\n updateSubscriptions() {\n if (this.isIdle) {\n return;\n }\n const requestId = this._request.lid;\n // if we're already subscribed to this request, we don't need to do anything\n if (this._subscribedTo === requestId) {\n return;\n }\n // if we're subscribed to a different request, we need to unsubscribe\n this.removeSubscriptions();\n // if we have a request, we need to subscribe to it\n if (requestId) {\n this._subscribedTo = requestId;\n this._subscription = this.store.notifications.subscribe(requestId, (_id: StableDocumentIdentifier, op: 'invalidated' | 'state' | 'added' | 'updated' | 'removed')=>{\n // ignore subscription events that occur while our own component's request\n // is ocurring\n if (this.isUpdating) {\n return;\n }\n switch(op){\n case 'invalidated':\n {\n // if we're subscribed to invalidations, we need to update\n if (this.autorefreshTypes.has('invalid')) {\n this.invalidated = true;\n this.maybeUpdate();\n }\n break;\n }\n case 'state':\n {\n const latest = this.store.requestManager._deduped.get(requestId);\n const priority = latest?.priority;\n if (!priority) {\n this.isRefreshing = false;\n } else if (priority.blocking) {\n // TODO should we just treat this as refreshing?\n this.isRefreshing = false;\n this.maybeUpdate('policy', true);\n } else {\n this.isRefreshing = true;\n }\n }\n }\n });\n }\n }\n removeSubscriptions() {\n if (this._subscription) {\n this.store.notifications.unsubscribe(this._subscription);\n this._subscribedTo = null;\n this._subscription = null;\n }\n }\n /**\n * Install the event listeners for network and visibility changes.\n * This is only done in browser environments with a global `window`.\n *\n * @internal\n */ installListeners() {\n if (typeof window === 'undefined') {\n return;\n }\n this.isOnline = window.navigator.onLine;\n this.unavailableStart = this.isOnline ? null : Date.now();\n this.isHidden = document.visibilityState === 'hidden';\n this.onlineChanged = (event: Event)=>{\n this.isOnline = event.type === 'online';\n if (event.type === 'offline' && this.unavailableStart === null) {\n this.unavailableStart = Date.now();\n }\n this.maybeUpdate();\n };\n this.backgroundChanged = ()=>{\n const isHidden = document.visibilityState === 'hidden';\n this.isHidden = isHidden;\n if (isHidden && this.unavailableStart === null) {\n this.unavailableStart = Date.now();\n }\n this.maybeUpdate();\n };\n window.addEventListener('online', this.onlineChanged, {\n passive: true,\n capture: true\n });\n window.addEventListener('offline', this.onlineChanged, {\n passive: true,\n capture: true\n });\n document.addEventListener('visibilitychange', this.backgroundChanged, {\n passive: true,\n capture: true\n });\n }\n /**\n * If the network is online and the tab is visible, either reload or refresh the request\n * based on the component's configuration and the requested update mode.\n *\n * Valid modes are:\n *\n * - `'reload'`: Force a reload of the request.\n * - `'refresh'`: Refresh the request in the background.\n * - `'policy'`: Make the request, letting the store's configured CachePolicy decide whether to reload, refresh, or do nothing.\n * - `undefined`: Make the request using the component's autorefreshBehavior setting if the autorefreshThreshold has passed.\n *\n * @internal\n */ maybeUpdate(mode?: 'reload' | 'refresh' | 'policy' | 'invalidated', silent?: boolean): void {\n if (this.isIdle) {\n return;\n }\n const canAttempt = Boolean(this.isOnline && !this.isHidden && (mode || this.autorefreshTypes.size));\n if (!canAttempt) {\n if (!silent && mode && mode !== 'invalidated') {\n throw new Error(`Reload not available: the network is not online or the tab is hidden`);\n }\n return;\n }\n const { autorefreshTypes } = this;\n let shouldAttempt = this.invalidated || Boolean(mode);\n if (!shouldAttempt && autorefreshTypes.has('online')) {\n const { unavailableStart } = this;\n const { autorefreshThreshold } = this.args;\n const deadline = typeof autorefreshThreshold === 'number' ? autorefreshThreshold : DEFAULT_DEADLINE;\n shouldAttempt = Boolean(unavailableStart && Date.now() - unavailableStart > deadline);\n }\n if (!shouldAttempt && autorefreshTypes.has('interval')) {\n const { intervalStart } = this;\n const { autorefreshThreshold } = this.args;\n if (intervalStart && typeof autorefreshThreshold === 'number' && autorefreshThreshold > 0) {\n shouldAttempt = Boolean(Date.now() - intervalStart >= autorefreshThreshold);\n }\n }\n this.unavailableStart = null;\n this.invalidated = false;\n if (shouldAttempt) {\n this.clearInterval();\n const request = Object.assign({}, this.reqState.request as unknown as RequestInfo<T, RT>);\n const realMode = mode === 'invalidated' ? null : mode;\n const val = realMode ?? this.args.autorefreshBehavior ?? 'policy';\n switch(val){\n case 'reload':\n request.cacheOptions = Object.assign({}, request.cacheOptions, {\n reload: true\n });\n break;\n case 'refresh':\n request.cacheOptions = Object.assign({}, request.cacheOptions, {\n backgroundReload: true\n });\n break;\n case 'policy':\n break;\n default:\n throw new Error(`Invalid ${mode ? 'update mode' : '@autorefreshBehavior'} for <Request />: ${isNeverString(val)}`);\n }\n const wasStoreRequest = (request as {\n [EnableHydration]: boolean;\n })[EnableHydration] === true;\n assert(`Cannot supply a different store via context than was used to create the request`, !request.store || request.store === this.store);\n this.isUpdating = true;\n this._latestRequest = wasStoreRequest ? this.store.request(request) : this.store.requestManager.request(request);\n if (val !== 'refresh') {\n this._localRequest = this._latestRequest;\n }\n void this.scheduleInterval();\n void this._latestRequest.finally(()=>{\n this.isUpdating = false;\n });\n } else {\n // TODO probably want this\n // void this.scheduleInterval();\n }\n }\n /**\n * Retry the request, reloading it from the server.\n *\n * @internal\n */ retry = async ()=>{\n this.maybeUpdate('reload');\n await this._localRequest;\n };\n /**\n * Refresh the request, updating it in the background.\n *\n * @internal\n */ refresh = async ()=>{\n this.maybeUpdate('refresh');\n await this._latestRequest;\n };\n @cached\n get errorFeatures() {\n return {\n isHidden: this.isHidden,\n isOnline: this.isOnline,\n retry: this.retry\n };\n }\n @cached\n get contentFeatures() {\n const feat: ContentFeatures<RT> = {\n isHidden: this.isHidden,\n isOnline: this.isOnline,\n reload: this.retry,\n refresh: this.refresh,\n isRefreshing: this.isRefreshing,\n latestRequest: this._latestRequest\n };\n if (feat.isRefreshing) {\n feat.abort = ()=>{\n this._latestRequest?.abort();\n };\n }\n return feat;\n }\n willDestroy() {\n this.removeSubscriptions();\n if (typeof window === 'undefined') {\n return;\n }\n this.clearInterval();\n window.removeEventListener('online', this.onlineChanged, {\n passive: true,\n capture: true\n } as unknown as boolean);\n window.removeEventListener('offline', this.onlineChanged, {\n passive: true,\n capture: true\n } as unknown as boolean);\n document.removeEventListener('visibilitychange', this.backgroundChanged, {\n passive: true,\n capture: true\n } as unknown as boolean);\n }\n @cached\n get _request(): Future<RT> {\n const { request, query } = this.args;\n assert(`Cannot use both @request and @query args with the <Request> component`, !request || !query);\n const { _localRequest, _originalRequest, _originalQuery } = this;\n const isOriginalRequest = request === _originalRequest && query === _originalQuery;\n if (_localRequest && isOriginalRequest) {\n return _localRequest;\n }\n // update state checks for the next time\n this._originalQuery = query;\n this._originalRequest = request;\n if (request) {\n return request;\n }\n assert(`You must provide either @request or an @query arg with the <Request> component`, query);\n return this.store.request<RT, T>(query);\n }\n @cached\n get request(): Future<RT> {\n const request = this._request;\n this.updateSubscriptions();\n return request;\n }\n get store(): Store {\n const store = this.args.store || this._store;\n assert(moduleExists('ember-provide-consume-context') ? `No store was provided to the <Request> component. Either provide a store via the @store arg or via the context API provided by ember-provide-consume-context.` : `No store was provided to the <Request> component. Either provide a store via the @store arg or by registering a store service.`, store);\n return store;\n }\n get reqState() {\n return getRequestState<RT, T>(this.request);\n }\n get result() {\n return this.reqState.result as RT;\n }\n static{\n template_01b3a9c09f274749bb081882efaa2eb1(`\n {{#if (and this.isIdle (has-block \"idle\"))}}\n {{yield to=\"idle\"}}\n {{else if this.isIdle}}\n <Throw @error={{IdleBlockMissingError}} />\n {{else if this.reqState.isLoading}}\n {{yield this.reqState.loadingState to=\"loading\"}}\n {{else if (and this.reqState.isCancelled (has-block \"cancelled\"))}}\n {{yield (notNull this.reqState.error) this.errorFeatures to=\"cancelled\"}}\n {{else if (and this.reqState.isError (has-block \"error\"))}}\n {{yield (notNull this.reqState.error) this.errorFeatures to=\"error\"}}\n {{else if this.reqState.isSuccess}}\n {{yield this.result this.contentFeatures to=\"content\"}}\n {{else if (not this.reqState.isCancelled)}}\n <Throw @error={{(notNull this.reqState.error)}} />\n {{/if}}\n {{yield this.reqState to=\"always\"}}\n `, {\n component: this,\n eval () {\n return eval(arguments[0]);\n }\n });\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RhdGEvZGF0YS9wYWNrYWdlcy9lbWJlci9zcmMvLXByaXZhdGUvcmVxdWVzdC5ndHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgc2VydmljZSB9IGZyb20gJ0BlbWJlci9zZXJ2aWNlJztcbmltcG9ydCBDb21wb25lbnQgZnJvbSAnQGdsaW1tZXIvY29tcG9uZW50JztcbmltcG9ydCB7IGNhY2hlZCwgdHJhY2tlZCB9IGZyb20gJ0BnbGltbWVyL3RyYWNraW5nJztcblxuaW1wb3J0IHsgaW1wb3J0U3luYywgbWFjcm9Db25kaXRpb24sIG1vZHVsZUV4aXN0cyB9IGZyb20gJ0BlbWJyb2lkZXIvbWFjcm9zJztcblxuaW1wb3J0IHR5cGUgeyBGdXR1cmUsIFN0cnVjdHVyZWRFcnJvckRvY3VtZW50IH0gZnJvbSAnQGVtYmVyLWRhdGEvcmVxdWVzdCc7XG5pbXBvcnQgdHlwZSB7IFN0b3JlUmVxdWVzdElucHV0IH0gZnJvbSAnQGVtYmVyLWRhdGEvc3RvcmUnO1xuaW1wb3J0IHR5cGUgU3RvcmUgZnJvbSAnQGVtYmVyLWRhdGEvc3RvcmUnO1xuaW1wb3J0IHsgYXNzZXJ0IH0gZnJvbSAnQHdhcnAtZHJpdmUvYnVpbGQtY29uZmlnL21hY3Jvcyc7XG5pbXBvcnQgdHlwZSB7IFN0YWJsZURvY3VtZW50SWRlbnRpZmllciB9IGZyb20gJ0B3YXJwLWRyaXZlL2NvcmUtdHlwZXMvaWRlbnRpZmllci5qcyc7XG5pbXBvcnQgeyBFbmFibGVIeWRyYXRpb24sIHR5cGUgUmVxdWVzdEluZm8gfSBmcm9tICdAd2FycC1kcml2ZS9jb3JlLXR5cGVzL3JlcXVlc3QnO1xuXG5pbXBvcnQgeyBhbmQsIFRocm93IH0gZnJvbSAnLi9hd2FpdC5ndHMnO1xuaW1wb3J0IHR5cGUgeyBSZXF1ZXN0TG9hZGluZ1N0YXRlLCBSZXF1ZXN0U3RhdGUgfSBmcm9tICcuL3JlcXVlc3Qtc3RhdGUudHMnO1xuaW1wb3J0IHsgZ2V0UmVxdWVzdFN0YXRlIH0gZnJvbSAnLi9yZXF1ZXN0LXN0YXRlLnRzJztcblxuZnVuY3Rpb24gbm90TnVsbCh4OiBudWxsKTogbmV2ZXI7XG5mdW5jdGlvbiBub3ROdWxsPFQ-KHg6IFQpOiBFeGNsdWRlPFQsIG51bGw-O1xuZnVuY3Rpb24gbm90TnVsbDxUPih4OiBUIHwgbnVsbCkge1xuICBhc3NlcnQoJ0V4cGVjdGVkIGEgbm9uLW51bGwgdmFsdWUsIGJ1dCBnb3QgbnVsbCcsIHggIT09IG51bGwpO1xuICByZXR1cm4geDtcbn1cblxuY29uc3Qgbm90ID0gKHg6IHVua25vd24pID0-ICF4O1xuLy8gZGVmYXVsdCB0byAzMCBzZWNvbmRzIHVuYXZhaWxhYmxlIGJlZm9yZSB3ZSByZWZyZXNoXG5jb25zdCBERUZBVUxUX0RFQURMSU5FID0gMzBfMDAwO1xuY29uc3QgSWRsZUJsb2NrTWlzc2luZ0Vycm9yID0gbmV3IEVycm9yKFxuICAnTm8gaWRsZSBibG9jayBwcm92aWRlZCBmb3IgPFJlcXVlc3Q-IGNvbXBvbmVudCwgYW5kIG5vIHF1ZXJ5IG9yIHJlcXVlc3Qgd2FzIHByb3ZpZGVkLidcbik7XG5cbmxldCBjb25zdW1lID0gc2VydmljZTtcbmlmIChtYWNyb0NvbmRpdGlvbihtb2R1bGVFeGlzdHMoJ2VtYmVyLXByb3ZpZGUtY29uc3VtZS1jb250ZXh0JykpKSB7XG4gIGNvbnN0IHsgY29uc3VtZTogY29udGV4dENvbnN1bWUgfSA9IGltcG9ydFN5bmMoJ2VtYmVyLXByb3ZpZGUtY29uc3VtZS1jb250ZXh0JykgYXMgeyBjb25zdW1lOiB0eXBlb2Ygc2VydmljZSB9O1xuICBjb25zdW1lID0gY29udGV4dENvbnN1bWU7XG59XG5cbmZ1bmN0aW9uIGlzTmV2ZXJTdHJpbmcodmFsOiBuZXZlcik6IHN0cmluZyB7XG4gIHJldHVybiB2YWw7XG59XG5cbnR5cGUgQXV0b3JlZnJlc2hCZWhhdmlvclR5cGUgPSAnb25saW5lJyB8ICdpbnRlcnZhbCcgfCAnaW52YWxpZCc7XG50eXBlIEF1dG9yZWZyZXNoQmVoYXZpb3JDb21ib3MgPVxuICB8IHRydWVcbiAgfCBBdXRvcmVmcmVzaEJlaGF2aW9yVHlwZVxuICB8IGAke0F1dG9yZWZyZXNoQmVoYXZpb3JUeXBlfSwke0F1dG9yZWZyZXNoQmVoYXZpb3JUeXBlfWBcbiAgfCBgJHtBdXRvcmVmcmVzaEJlaGF2aW9yVHlwZX0sJHtBdXRvcmVmcmVzaEJlaGF2aW9yVHlwZX0sJHtBdXRvcmVmcmVzaEJlaGF2aW9yVHlwZX1gO1xuXG50eXBlIENvbnRlbnRGZWF0dXJlczxSVD4gPSB7XG4gIGlzT25saW5lOiBib29sZWFuO1xuICBpc0hpZGRlbjogYm9vbGVhbjtcbiAgaXNSZWZyZXNoaW5nOiBib29sZWFuO1xuICByZWZyZXNoOiAoKSA9PiBQcm9taXNlPHZvaWQ-O1xuICByZWxvYWQ6ICgpID0-IFByb21pc2U8dm9pZD47XG4gIGFib3J0PzogKCkgPT4gdm9pZDtcbiAgbGF0ZXN0UmVxdWVzdD86IEZ1dHVyZTxSVD47XG59O1xuXG5pbnRlcmZhY2UgUmVxdWVzdFNpZ25hdHVyZTxULCBSVD4ge1xuICBBcmdzOiB7XG4gICAgcmVxdWVzdD86IEZ1dHVyZTxSVD47XG4gICAgcXVlcnk_OiBTdG9yZVJlcXVlc3RJbnB1dDxULCBSVD47XG4gICAgc3RvcmU_OiBTdG9yZTtcbiAgICBhdXRvcmVmcmVzaD86IEF1dG9yZWZyZXNoQmVoYXZpb3JDb21ib3M7XG4gICAgYXV0b3JlZnJlc2hUaHJlc2hvbGQ_OiBudW1iZXI7XG4gICAgYXV0b3JlZnJlc2hCZWhhdmlvcj86ICdyZWZyZXNoJyB8ICdyZWxvYWQnIHwgJ3BvbGljeSc7XG4gIH07XG4gIEJsb2Nrczoge1xuICAgIGlkbGU6IFtdO1xuICAgIGxvYWRpbmc6IFtzdGF0ZTogUmVxdWVzdExvYWRpbmdTdGF0ZV07XG4gICAgY2FuY2VsbGVkOiBbXG4gICAgICBlcnJvcjogU3RydWN0dXJlZEVycm9yRG9jdW1lbnQsXG4gICAgICBmZWF0dXJlczogeyBpc09ubGluZTogYm9vbGVhbjsgaXNIaWRkZW46IGJvb2xlYW47IHJldHJ5OiAoKSA9PiBQcm9taXNlPHZvaWQ-IH0sXG4gICAgXTtcbiAgICBlcnJvcjogW1xuICAgICAgZXJyb3I6IFN0cnVjdHVyZWRFcnJvckRvY3VtZW50LFxuICAgICAgZmVhdHVyZXM6IHsgaXNPbmxpbmU6IGJvb2xlYW47IGlzSGlkZGVuOiBib29sZWFuOyByZXRyeTogKCkgPT4gUHJvbWlzZTx2b2lkPiB9LFxuICAgIF07XG4gICAgY29udGVudDogW3ZhbHVlOiBSVCwgZmVhdHVyZXM6IENvbnRlbnRGZWF0dXJlczxSVD5dO1xuICAgIGFsd2F5czogW3N0YXRlOiBSZXF1ZXN0U3RhdGU8VCwgUlQ-XTtcbiAgfTtcbn1cblxuLyoqXG4gKiBUaGUgYDxSZXF1ZXN0PmAgY29tcG9uZW50IGlzIGEgcG93ZXJmdWwgdG9vbCBmb3IgbWFuYWdpbmcgZGF0YSBmZXRjaGluZyBhbmRcbiAqIHN0YXRlIGluIHlvdXIgRW1iZXIgYXBwbGljYXRpb24uIEl0IHByb3ZpZGVzIGRlY2xhcmF0aXZlIHJlYWN0aXZlIGNvbnRyb2wtZmxvd1xuICogZm9yIG1hbmFnaW5nIHJlcXVlc3RzIGFuZCBzdGF0ZSBpbiB5b3VyIGFwcGxpY2F0aW9uLlxuICpcbiAqIEB0eXBlZG9jXG4gKi9cbmV4cG9ydCBjbGFzcyBSZXF1ZXN0PFQsIFJUPiBleHRlbmRzIENvbXBvbmVudDxSZXF1ZXN0U2lnbmF0dXJlPFQsIFJUPj4ge1xuICAvKipcbiAgICogVGhlIHN0b3JlIGluc3RhbmNlIHRvIHVzZSBmb3IgbWFraW5nIHJlcXVlc3RzLiBJZiBjb250ZXh0cyBhcmUgYXZhaWxhYmxlLCB0aGlzXG4gICAqIHdpbGwgYmUgdGhlIGBzdG9yZWAgb24gdGhlIGNvbnRleHQsIGVsc2UgaXQgd2lsbCBiZSB0aGUgc3RvcmUgc2VydmljZS5cbiAgICpcbiAgICogQGludGVybmFsXG4gICAqL1xuICBAY29uc3VtZSgnc3RvcmUnKSBkZWNsYXJlIF9zdG9yZTogU3RvcmU7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGJyb3dzZXIgcmVwb3J0cyB0aGF0IHRoZSBuZXR3b3JrIGlzIG9ubGluZS5cbiAgICpcbiAgICogQGludGVybmFsXG4gICAqL1xuICBAdHJhY2tlZCBpc09ubGluZSA9IHRydWU7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGJyb3dzZXIgcmVwb3J0cyB0aGF0IHRoZSB0YWIgaXMgaGlkZGVuLlxuICAgKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIEB0cmFja2VkIGlzSGlkZGVuID0gdHJ1ZTtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgY29tcG9uZW50IGlzIGN1cnJlbnRseSByZWZyZXNoaW5nIHRoZSByZXF1ZXN0LlxuICAgKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIEB0cmFja2VkIGlzUmVmcmVzaGluZyA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBUaGUgbW9zdCByZWNlbnQgYmxvY2tpbmcgcmVxdWVzdCB0aGF0IHdhcyBtYWRlLCB0eXBpY2FsbHlcbiAgICogdGhlIHJlc3VsdCBvZiBhIHJlbG9hZC5cbiAgICpcbiAgICogVGhpcyB3aWxsIG5ldmVyIGJlIHRoZSBvcmlnaW5hbCByZXF1ZXN0IHBhc3NlZCBhcyBhbiBhcmcgdG9cbiAgICogdGhlIGNvbXBvbmVudC5cbiAgICpcbiAgICogQGludGVybmFsXG4gICAqL1xuICBAdHJhY2tlZCBfbG9jYWxSZXF1ZXN0OiBGdXR1cmU8UlQ-IHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBUaGUgbW9zdCByZWNlbnQgcmVxdWVzdCB0aGF0IHdhcyBtYWRlLCB0eXBpY2FsbHkgZHVlIHRvIGVpdGhlciBhXG4gICAqIHJlbG9hZCBvciBhIHJlZnJlc2guXG4gICAqXG4gICAqIFRoaXMgd2lsbCBuZXZlciBiZSB0aGUgb3JpZ2luYWwgcmVxdWVzdCBwYXNzZWQgYXMgYW4gYXJnIHRvXG4gICAqIHRoZSBjb21wb25lbnQuXG4gICAqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgQHRyYWNrZWQgX2xhdGVzdFJlcXVlc3Q6IEZ1dHVyZTxSVD4gfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSB0aW1lIGF0IHdoaWNoIHRoZSBuZXR3b3JrIHdhcyByZXBvcnRlZCBhcyBvZmZsaW5lLlxuICAgKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGRlY2xhcmUgdW5hdmFpbGFibGVTdGFydDogbnVtYmVyIHwgbnVsbDtcbiAgZGVjbGFyZSBpbnRlcnZhbFN0YXJ0OiBudW1iZXIgfCBudWxsO1xuICBkZWNsYXJlIG5leHRJbnRlcnZhbDogbnVtYmVyIHwgbnVsbDtcbiAgZGVjbGFyZSBpbnZhbGlkYXRlZDogYm9vbGVhbjtcbiAgZGVjbGFyZSBpc1VwZGF0aW5nOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgZXZlbnQgbGlzdGVuZXIgZm9yIG5ldHdvcmsgc3RhdHVzIGNoYW5nZXMsXG4gICAqIGNhY2hlZCB0byB1c2UgdGhlIHJlZmVyZW5jZSBmb3IgcmVtb3ZhbC5cbiAgICpcbiAgICogQGludGVybmFsXG4gICAqL1xuICBkZWNsYXJlIG9ubGluZUNoYW5nZWQ6IChldmVudDogRXZlbnQpID0-IHZvaWQ7XG5cbiAgLyoqXG4gICAqIFRoZSBldmVudCBsaXN0ZW5lciBmb3IgdmlzaWJpbGl0eSBzdGF0dXMgY2hhbmdlcyxcbiAgICogY2FjaGVkIHRvIHVzZSB0aGUgcmVmZXJlbmNlIGZvciByZW1vdmFsLlxuICAgKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGRlY2xhcmUgYmFja2dyb3VuZENoYW5nZWQ6IChldmVudDogRXZlbnQpID0-IHZvaWQ7XG5cbiAgLyoqXG4gICAqIFRoZSBsYXN0IHJlcXVlc3QgcGFzc2VkIGFzIGFuIGFyZyB0byB0aGUgY29tcG9uZW50LFxuICAgKiBjYWNoZWQgZm9yIGNvbXBhcmlzb24uXG4gICAqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgZGVjbGFyZSBfb3JpZ2luYWxSZXF1ZXN0OiBGdXR1cmU8UlQ-IHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBUaGUgbGFzdCBxdWVyeSBwYXNzZWQgYXMgYW4gYXJnIHRvIHRoZSBjb21wb25lbnQsXG4gICAqIGNhY2hlZCBmb3IgY29tcGFyaXNvbi5cbiAgICpcbiAgICogQGludGVybmFsXG4gICAqL1xuICBkZWNsYXJlIF9vcmlnaW5hbFF1ZXJ5OiBTdG9yZVJlcXVlc3RJbnB1dDxULCBSVD4gfCB1bmRlZmluZWQ7XG5cbiAgZGVjbGFyZSBfc3Vic2NyaXB0aW9uOiBvYmplY3QgfCBudWxsO1xuICBkZWNsYXJlIF9zdWJzY3JpYmVkVG86IG9iamVjdCB8IG51bGw7XG5cbiAgY29uc3RydWN0b3Iob3duZXI6IHVua25vd24sIGFyZ3M6IFJlcXVlc3RTaWduYXR1cmU8VCwgUlQ-WydBcmdzJ10pIHtcbiAgICBzdXBlcihvd25lciwgYXJncyk7XG4gICAgdGhpcy5fc3Vic2NyaWJlZFRvID0gbnVsbDtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb24gPSBudWxsO1xuICAgIHRoaXMuaW50ZXJ2YWxTdGFydCA9IG51bGw7XG4gICAgdGhpcy5pbnZhbGlkYXRlZCA9IGZhbHNlO1xuICAgIHRoaXMubmV4dEludGVydmFsID0gbnVsbDtcblxuICAgIHRoaXMuaW5zdGFsbExpc3RlbmVycygpO1xuICAgIHZvaWQgdGhpcy5iZWdpblBvbGxpbmcoKTtcbiAgfVxuXG4gIGFzeW5jIGJlZ2luUG9sbGluZygpIHtcbiAgICAvLyBhd2FpdCB0aGUgaW5pdGlhbCByZXF1ZXN0XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMucmVxdWVzdDtcbiAgICB9IGNhdGNoIHtcbiAgICAgIC8vIGlnbm9yZSBlcnJvcnMgaGVyZSwgd2UganVzdCB3YW50IHRvIHdhaXQgZm9yIHRoZSByZXF1ZXN0IHRvIGZpbmlzaFxuICAgIH0gZmluYWxseSB7XG4gICAgICBpZiAoIXRoaXMuaXNEZXN0cm95ZWQpIHtcbiAgICAgICAgdm9pZCB0aGlzLnNjaGVkdWxlSW50ZXJ2YWwoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAY2FjaGVkXG4gIGdldCBpc0lkbGUoKSB7XG4gICAgY29uc3QgeyByZXF1ZXN0LCBxdWVyeSB9ID0gdGhpcy5hcmdzO1xuXG4gICAgcmV0dXJuIEJvb2xlYW4oIXJlcXVlc3QgJiYgIXF1ZXJ5KTtcbiAgfVxuXG4gIEBjYWNoZWRcbiAgZ2V0IGF1dG9yZWZyZXNoVHlwZXMoKTogU2V0PEF1dG9yZWZyZXNoQmVoYXZpb3JUeXBlPiB7XG4gICAgY29uc3QgeyBhdXRvcmVmcmVzaCB9ID0gdGhpcy5hcmdzO1xuICAgIGxldCB0eXBlczogQXV0b3JlZnJlc2hCZWhhdmlvclR5cGVbXTtcblxuICAgIGlmIChhdXRvcmVmcmVzaCA9PT0gdHJ1ZSkge1xuICAgICAgdHlwZXMgPSBbJ29ubGluZScsICdpbnZhbGlkJ107XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgYXV0b3JlZnJlc2ggPT09ICdzdHJpbmcnKSB7XG4gICAgICB0eXBlcyA9IGF1dG9yZWZyZXNoLnNwbGl0KCcsJykgYXMgQXV0b3JlZnJlc2hCZWhhdmlvclR5cGVbXTtcbiAgICB9IGVsc2Uge1xuICAgICAgdHlwZXMgPSBbXTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IFNldCh0eXBlcyk7XG4gIH1cblxuICAvLyB3ZSBvbmx5IHJ1biB0aGlzIGZ1bmN0aW9uIG9uIGNvbXBvbmVudCBjcmVhdGlvblxuICAvLyBhbmQgd2hlbiBhbiB1cGRhdGUgaXMgdHJpZ2dlcmVkLCBzbyBpdCBkb2VzIG5vdFxuICAvLyByZWFjdCB0byBjaGFuZ2VzIGluIHRoZSBhdXRvcmVmcmVzaFRocmVzaG9sZFxuICAvLyBvciBhdXRvcmVmcmVzaCBhcmdzLlxuICAvL1xuICAvLyBpZiB3ZSBuZWVkIHRvIHJlYWN0IHRvIHRob3NlIGNoYW5nZXMsIHdlIGNhblxuICAvLyB1c2UgYSBtb2RpZmllciBvciBpbnRlcm5hbCBjb21wb25lbnQgb3Igc29tZVxuICAvLyBzdWNoIHRvIHRyaWdnZXIgYSByZS1ydW4gb2YgdGhpcyBmdW5jdGlvbi5cbiAgYXN5bmMgc2NoZWR1bGVJbnRlcnZhbCgpIHtcbiAgICBjb25zdCB7IGF1dG9yZWZyZXNoVGhyZXNob2xkIH0gPSB0aGlzLmFyZ3M7XG4gICAgY29uc3QgaGFzVmFsaWRUaHJlc2hvbGQgPSB0eXBlb2YgYXV0b3JlZnJlc2hUaHJlc2hvbGQgPT09ICdudW1iZXInICYmIGF1dG9yZWZyZXNoVGhyZXNob2xkID4gMDtcbiAgICBpZiAoXG4gICAgICAvLyBkb250IHNjaGVkdWxlIGluIFNTUlxuICAgICAgdHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcgfHxcbiAgICAgIC8vIGRvbnQgc2NoZWR1bGUgd2l0aG91dCBhIHRocmVzaG9sZFxuICAgICAgIWhhc1ZhbGlkVGhyZXNob2xkIHx8XG4gICAgICAvLyBkb250IHNjaGVkdWxlIGlmIHdlIHdlcmVuJ3QgdG9sZCB0b1xuICAgICAgIXRoaXMuYXV0b3JlZnJlc2hUeXBlcy5oYXMoJ2ludGVydmFsJykgfHxcbiAgICAgIC8vIGRvbnQgc2NoZWR1bGUgaWYgd2UncmUgYWxyZWFkeSBzY2hlZHVsZWRcbiAgICAgIHRoaXMuaW50ZXJ2YWxTdGFydCAhPT0gbnVsbFxuICAgICkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIGlmIHdlIGhhdmUgYSBjdXJyZW50IHJlcXVlc3QsIHdhaXQgZm9yIGl0IHRvIGZpbmlzaFxuICAgIC8vIGJlZm9yZSBzY2hlZHVsaW5nIHRoZSBuZXh0IG9uZVxuICAgIGlmICh0aGlzLl9sYXRlc3RSZXF1ZXN0KSB7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCB0aGlzLl9sYXRlc3RSZXF1ZXN0O1xuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIC8vIGlnbm9yZSBlcnJvcnMgaGVyZSwgd2UganVzdCB3YW50IHRvIHdhaXQgZm9yIHRoZSByZXF1ZXN0IHRvIGZpbmlzaFxuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5pc0Rlc3Ryb3llZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gc2V0dXAgdGhlIG5leHQgaW50ZXJ2YWxcbiAgICB0aGlzLmludGVydmFsU3RhcnQgPSBEYXRlLm5vdygpO1xuICAgIHRoaXMubmV4dEludGVydmFsID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLm1heWJlVXBkYXRlKCk7XG4gICAgfSwgYXV0b3JlZnJlc2hUaHJlc2hvbGQpO1xuICB9XG5cbiAgY2xlYXJJbnRlcnZhbCgpIHtcbiAgICBpZiAodGhpcy5uZXh0SW50ZXJ2YWwpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLm5leHRJbnRlcnZhbCk7XG4gICAgICB0aGlzLmludGVydmFsU3RhcnQgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZVN1YnNjcmlwdGlvbnMoKSB7XG4gICAgaWYgKHRoaXMuaXNJZGxlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHJlcXVlc3RJZCA9IHRoaXMuX3JlcXVlc3QubGlkO1xuXG4gICAgLy8gaWYgd2UncmUgYWxyZWFkeSBzdWJzY3JpYmVkIHRvIHRoaXMgcmVxdWVzdCwgd2UgZG9uJ3QgbmVlZCB0byBkbyBhbnl0aGluZ1xuICAgIGlmICh0aGlzLl9zdWJzY3JpYmVkVG8gPT09IHJlcXVlc3RJZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIGlmIHdlJ3JlIHN1YnNjcmliZWQgdG8gYSBkaWZmZXJlbnQgcmVxdWVzdCwgd2UgbmVlZCB0byB1bnN1YnNjcmliZVxuICAgIHRoaXMucmVtb3ZlU3Vic2NyaXB0aW9ucygpO1xuXG4gICAgLy8gaWYgd2UgaGF2ZSBhIHJlcXVlc3QsIHdlIG5lZWQgdG8gc3Vic2NyaWJlIHRvIGl0XG4gICAgaWYgKHJlcXVlc3RJZCkge1xuICAgICAgdGhpcy5fc3Vic2NyaWJlZFRvID0gcmVxdWVzdElkO1xuICAgICAgdGhpcy5fc3Vic2NyaXB0aW9uID0gdGhpcy5zdG9yZS5ub3RpZmljYXRpb25zLnN1YnNjcmliZShcbiAgICAgICAgcmVxdWVzdElkLFxuICAgICAgICAoX2lkOiBTdGFibGVEb2N1bWVudElkZW50aWZpZXIsIG9wOiAnaW52YWxpZGF0ZWQnIHwgJ3N0YXRlJyB8ICdhZGRlZCcgfCAndXBkYXRlZCcgfCAncmVtb3ZlZCcpID0-IHtcbiAgICAgICAgICAvLyBpZ25vcmUgc3Vic2NyaXB0aW9uIGV2ZW50cyB0aGF0IG9jY3VyIHdoaWxlIG91ciBvd24gY29tcG9uZW50J3MgcmVxdWVzdFxuICAgICAgICAgIC8vIGlzIG9jdXJyaW5nXG4gICAgICAgICAgaWYgKHRoaXMuaXNVcGRhdGluZykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICBzd2l0Y2ggKG9wKSB7XG4gICAgICAgICAgICBjYXNlICdpbnZhbGlkYXRlZCc6IHtcbiAgICAgICAgICAgICAgLy8gaWYgd2UncmUgc3Vic2NyaWJlZCB0byBpbnZhbGlkYXRpb25zLCB3ZSBuZWVkIHRvIHVwZGF0ZVxuICAgICAgICAgICAgICBpZiAodGhpcy5hdXRvcmVmcmVzaFR5cGVzLmhhcygnaW52YWxpZCcpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pbnZhbGlkYXRlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5tYXliZVVwZGF0ZSgpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAnc3RhdGUnOiB7XG4gICAgICAgICAgICAgIGNvbnN0IGxhdGVzdCA9IHRoaXMuc3RvcmUucmVxdWVzdE1hbmFnZXIuX2RlZHVwZWQuZ2V0KHJlcXVlc3RJZCk7XG4gICAgICAgICAgICAgIGNvbnN0IHByaW9yaXR5ID0gbGF0ZXN0Py5wcmlvcml0eTtcbiAgICAgICAgICAgICAgaWYgKCFwcmlvcml0eSkge1xuICAgICAgICAgICAgICAgIHRoaXMuaXNSZWZyZXNoaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAocHJpb3JpdHkuYmxvY2tpbmcpIHtcbiAgICAgICAgICAgICAgICAvLyBUT0RPIHNob3VsZCB3ZSBqdXN0IHRyZWF0IHRoaXMgYXMgcmVmcmVzaGluZz9cbiAgICAgICAgICAgICAgICB0aGlzLmlzUmVmcmVzaGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMubWF5YmVVcGRhdGUoJ3BvbGljeScsIHRydWUpO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuaXNSZWZyZXNoaW5nID0gdHJ1ZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICByZW1vdmVTdWJzY3JpcHRpb25zKCkge1xuICAgIGlmICh0aGlzLl9zdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMuc3RvcmUubm90aWZpY2F0aW9ucy51bnN1YnNjcmliZSh0aGlzLl9zdWJzY3JpcHRpb24pO1xuICAgICAgdGhpcy5fc3Vic2NyaWJlZFRvID0gbnVsbDtcbiAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbiA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEluc3RhbGwgdGhlIGV2ZW50IGxpc3RlbmVycyBmb3IgbmV0d29yayBhbmQgdmlzaWJpbGl0eSBjaGFuZ2VzLlxuICAgKiBUaGlzIGlzIG9ubHkgZG9uZSBpbiBicm93c2VyIGVudmlyb25tZW50cyB3aXRoIGEgZ2xvYmFsIGB3aW5kb3dgLlxuICAgKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGluc3RhbGxMaXN0ZW5lcnMoKSB7XG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5pc09ubGluZSA9IHdpbmRvdy5uYXZpZ2F0b3Iub25MaW5lO1xuICAgIHRoaXMudW5hdmFpbGFibGVTdGFydCA9IHRoaXMuaXNPbmxpbmUgPyBudWxsIDogRGF0ZS5ub3coKTtcbiAgICB0aGlzLmlzSGlkZGVuID0gZG9jdW1lbnQudmlzaWJpbGl0eVN0YXRlID09PSAnaGlkZGVuJztcblxuICAgIHRoaXMub25saW5lQ2hhbmdlZCA9IChldmVudDogRXZlbnQpID0-IHtcbiAgICAgIHRoaXMuaXNPbmxpbmUgPSBldmVudC50eXBlID09PSAnb25saW5lJztcbiAgICAgIGlmIChldmVudC50eXBlID09PSAnb2ZmbGluZScgJiYgdGhpcy51bmF2YWlsYWJsZVN0YXJ0ID09PSBudWxsKSB7XG4gICAgICAgIHRoaXMudW5hdmFpbGFibGVTdGFydCA9IERhdGUubm93KCk7XG4gICAgICB9XG4gICAgICB0aGlzLm1heWJlVXBkYXRlKCk7XG4gICAgfTtcbiAgICB0aGlzLmJhY2tncm91bmRDaGFuZ2VkID0gKCkgPT4ge1xuICAgICAgY29uc3QgaXNIaWRkZW4gPSBkb2N1bWVudC52aXNpYmlsaXR5U3RhdGUgPT09ICdoaWRkZW4nO1xuICAgICAgdGhpcy5pc0hpZGRlbiA9IGlzSGlkZGVuO1xuXG4gICAgICBpZiAoaXNIaWRkZW4gJiYgdGhpcy51bmF2YWlsYWJsZVN0YXJ0ID09PSBudWxsKSB7XG4gICAgICAgIHRoaXMudW5hdmFpbGFibGVTdGFydCA9IERhdGUubm93KCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMubWF5YmVVcGRhdGUoKTtcbiAgICB9O1xuXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ29ubGluZScsIHRoaXMub25saW5lQ2hhbmdlZCwgeyBwYXNzaXZlOiB0cnVlLCBjYXB0dXJlOiB0cnVlIH0pO1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdvZmZsaW5lJywgdGhpcy5vbmxpbmVDaGFuZ2VkLCB7IHBhc3NpdmU6IHRydWUsIGNhcHR1cmU6IHRydWUgfSk7XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigndmlzaWJpbGl0eWNoYW5nZScsIHRoaXMuYmFja2dyb3VuZENoYW5nZWQsIHsgcGFzc2l2ZTogdHJ1ZSwgY2FwdHVyZTogdHJ1ZSB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJZiB0aGUgbmV0d29yayBpcyBvbmxpbmUgYW5kIHRoZSB0YWIgaXMgdmlzaWJsZSwgZWl0aGVyIHJlbG9hZCBvciByZWZyZXNoIHRoZSByZXF1ZXN0XG4gICAqIGJhc2VkIG9uIHRoZSBjb21wb25lbnQncyBjb25maWd1cmF0aW9uIGFuZCB0aGUgcmVxdWVzdGVkIHVwZGF0ZSBtb2RlLlxuICAgKlxuICAgKiBWYWxpZCBtb2RlcyBhcmU6XG4gICAqXG4gICAqIC0gYCdyZWxvYWQnYDogRm9yY2UgYSByZWxvYWQgb2YgdGhlIHJlcXVlc3QuXG4gICAqIC0gYCdyZWZyZXNoJ2A6IFJlZnJlc2ggdGhlIHJlcXVlc3QgaW4gdGhlIGJhY2tncm91bmQuXG4gICAqIC0gYCdwb2xpY3knYDogTWFrZSB0aGUgcmVxdWVzdCwgbGV0dGluZyB0aGUgc3RvcmUncyBjb25maWd1cmVkIENhY2hlUG9saWN5IGRlY2lkZSB3aGV0aGVyIHRvIHJlbG9hZCwgcmVmcmVzaCwgb3IgZG8gbm90aGluZy5cbiAgICogLSBgdW5kZWZpbmVkYDogTWFrZSB0aGUgcmVxdWVzdCB1c2luZyB0aGUgY29tcG9uZW50J3MgYXV0b3JlZnJlc2hCZWhhdmlvciBzZXR0aW5nIGlmIHRoZSBhdXRvcmVmcmVzaFRocmVzaG9sZCBoYXMgcGFzc2VkLlxuICAgKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIG1heWJlVXBkYXRlKG1vZGU_OiAncmVsb2FkJyB8ICdyZWZyZXNoJyB8ICdwb2xpY3knIHwgJ2ludmFsaWRhdGVkJywgc2lsZW50PzogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzSWRsZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBjYW5BdHRlbXB0ID0gQm9vbGVhbih0aGlzLmlzT25saW5lICYmICF0aGlzLmlzSGlkZGVuICYmIChtb2RlIHx8IHRoaXMuYXV0b3JlZnJlc2hUeXBlcy5zaXplKSk7XG5cbiAgICBpZiAoIWNhbkF0dGVtcHQpIHtcbiAgICAgIGlmICghc2lsZW50ICYmIG1vZGUgJiYgbW9kZSAhPT0gJ2ludmFsaWRhdGVkJykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFJlbG9hZCBub3QgYXZhaWxhYmxlOiB0aGUgbmV0d29yayBpcyBub3Qgb25saW5lIG9yIHRoZSB0YWIgaXMgaGlkZGVuYCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB7IGF1dG9yZWZyZXNoVHlwZXMgfSA9IHRoaXM7XG4gICAgbGV0IHNob3VsZEF0dGVtcHQgPSB0aGlzLmludmFsaWRhdGVkIHx8IEJvb2xlYW4obW9kZSk7XG5cbiAgICBpZiAoIXNob3VsZEF0dGVtcHQgJiYgYXV0b3JlZnJlc2hUeXBlcy5oYXMoJ29ubGluZScpKSB7XG4gICAgICBjb25zdCB7IHVuYXZhaWxhYmxlU3RhcnQgfSA9IHRoaXM7XG4gICAgICBjb25zdCB7IGF1dG9yZWZyZXNoVGhyZXNob2xkIH0gPSB0aGlzLmFyZ3M7XG4gICAgICBjb25zdCBkZWFkbGluZSA9IHR5cGVvZiBhdXRvcmVmcmVzaFRocmVzaG9sZCA9PT0gJ251bWJlcicgPyBhdXRvcmVmcmVzaFRocmVzaG9sZCA6IERFRkFVTFRfREVBRExJTkU7XG4gICAgICBzaG91bGRBdHRlbXB0ID0gQm9vbGVhbih1bmF2YWlsYWJsZVN0YXJ0ICYmIERhdGUubm93KCkgLSB1bmF2YWlsYWJsZVN0YXJ0ID4gZGVhZGxpbmUpO1xuICAgIH1cblxuICAgIGlmICghc2hvdWxkQXR0ZW1wdCAmJiBhdXRvcmVmcmVzaFR5cGVzLmhhcygnaW50ZXJ2YWwnKSkge1xuICAgICAgY29uc3QgeyBpbnRlcnZhbFN0YXJ0IH0gPSB0aGlzO1xuICAgICAgY29uc3QgeyBhdXRvcmVmcmVzaFRocmVzaG9sZCB9ID0gdGhpcy5hcmdzO1xuXG4gICAgICBpZiAoaW50ZXJ2YWxTdGFydCAmJiB0eXBlb2YgYXV0b3JlZnJlc2hUaHJlc2hvbGQgPT09ICdudW1iZXInICYmIGF1dG9yZWZyZXNoVGhyZXNob2xkID4gMCkge1xuICAgICAgICBzaG91bGRBdHRlbXB0ID0gQm9vbGVhbihEYXRlLm5vdygpIC0gaW50ZXJ2YWxTdGFydCA-PSBhdXRvcmVmcmVzaFRocmVzaG9sZCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy51bmF2YWlsYWJsZVN0YXJ0ID0gbnVsbDtcbiAgICB0aGlzLmludmFsaWRhdGVkID0gZmFsc2U7XG5cbiAgICBpZiAoc2hvdWxkQXR0ZW1wdCkge1xuICAgICAgdGhpcy5jbGVhckludGVydmFsKCk7XG4gICAgICBjb25zdCByZXF1ZXN0ID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5yZXFTdGF0ZS5yZXF1ZXN0IGFzIHVua25vd24gYXMgUmVxdWVzdEluZm88VCwgUlQ-KTtcbiAgICAgIGNvbnN0IHJlYWxNb2RlID0gbW9kZSA9PT0gJ2ludmFsaWRhdGVkJyA_IG51bGwgOiBtb2RlO1xuICAgICAgY29uc3QgdmFsID0gcmVhbE1vZGUgPz8gdGhpcy5hcmdzLmF1dG9yZWZyZXNoQmVoYXZpb3IgPz8gJ3BvbGljeSc7XG4gICAgICBzd2l0Y2ggKHZhbCkge1xuICAgICAgICBjYXNlICdyZWxvYWQnOlxuICAgICAgICAgIHJlcXVlc3QuY2FjaGVPcHRpb25zID0gT2JqZWN0LmFzc2lnbih7fSwgcmVxdWVzdC5jYWNoZU9wdGlvbnMsIHsgcmVsb2FkOiB0cnVlIH0pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdyZWZyZXNoJzpcbiAgICAgICAgICByZXF1ZXN0LmNhY2hlT3B0aW9ucyA9IE9iamVjdC5hc3NpZ24oe30sIHJlcXVlc3QuY2FjaGVPcHRpb25zLCB7IGJhY2tncm91bmRSZWxvYWQ6IHRydWUgfSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3BvbGljeSc6XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgYEludmFsaWQgJHttb2RlID8gJ3VwZGF0ZSBtb2RlJyA6ICdAYXV0b3JlZnJlc2hCZWhhdmlvcid9IGZvciA8UmVxdWVzdCAvPjogJHtpc05ldmVyU3RyaW5nKHZhbCl9YFxuICAgICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHdhc1N0b3JlUmVxdWVzdCA9IChyZXF1ZXN0IGFzIHsgW0VuYWJsZUh5ZHJhdGlvbl06IGJvb2xlYW4gfSlbRW5hYmxlSHlkcmF0aW9uXSA9PT0gdHJ1ZTtcbiAgICAgIGFzc2VydChcbiAgICAgICAgYENhbm5vdCBzdXBwbHkgYSBkaWZmZXJlbnQgc3RvcmUgdmlhIGNvbnRleHQgdGhhbiB3YXMgdXNlZCB0byBjcmVhdGUgdGhlIHJlcXVlc3RgLFxuICAgICAgICAhcmVxdWVzdC5zdG9yZSB8fCByZXF1ZXN0LnN0b3JlID09PSB0aGlzLnN0b3JlXG4gICAgICApO1xuXG4gICAgICB0aGlzLmlzVXBkYXRpbmcgPSB0cnVlO1xuICAgICAgdGhpcy5fbGF0ZXN0UmVxdWVzdCA9IHdhc1N0b3JlUmVxdWVzdCA_IHRoaXMuc3RvcmUucmVxdWVzdChyZXF1ZXN0KSA6IHRoaXMuc3RvcmUucmVxdWVzdE1hbmFnZXIucmVxdWVzdChyZXF1ZXN0KTtcblxuICAgICAgaWYgKHZhbCAhPT0gJ3JlZnJlc2gnKSB7XG4gICAgICAgIHRoaXMuX2xvY2FsUmVxdWVzdCA9IHRoaXMuX2xhdGVzdFJlcXVlc3Q7XG4gICAgICB9XG5cbiAgICAgIHZvaWQgdGhpcy5zY2hlZHVsZUludGVydmFsKCk7XG4gICAgICB2b2lkIHRoaXMuX2xhdGVzdFJlcXVlc3QuZmluYWxseSgoKSA9PiB7XG4gICAgICAgIHRoaXMuaXNVcGRhdGluZyA9IGZhbHNlO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFRPRE8gcHJvYmFibHkgd2FudCB0aGlzXG4gICAgICAvLyB2b2lkIHRoaXMuc2NoZWR1bGVJbnRlcnZhbCgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyeSB0aGUgcmVxdWVzdCwgcmVsb2FkaW5nIGl0IGZyb20gdGhlIHNlcnZlci5cbiAgICpcbiAgICogQGludGVybmFsXG4gICAqL1xuICByZXRyeSA9IGFzeW5jICgpID0-IHtcbiAgICB0aGlzLm1heWJlVXBkYXRlKCdyZWxvYWQnKTtcbiAgICBhd2FpdCB0aGlzLl9sb2NhbFJlcXVlc3Q7XG4gIH07XG5cbiAgLyoqXG4gICAqIFJlZnJlc2ggdGhlIHJlcXVlc3QsIHVwZGF0aW5nIGl0IGluIHRoZSBiYWNrZ3JvdW5kLlxuICAgKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHJlZnJlc2ggPSBhc3luYyAoKSA9PiB7XG4gICAgdGhpcy5tYXliZVVwZGF0ZSgncmVmcmVzaCcpO1xuICAgIGF3YWl0IHRoaXMuX2xhdGVzdFJlcXVlc3Q7XG4gIH07XG5cbiAgQGNhY2hlZFxuICBnZXQgZXJyb3JGZWF0dXJlcygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgaXNIaWRkZW46IHRoaXMuaXNIaWRkZW4sXG4gICAgICBpc09ubGluZTogdGhpcy5pc09ubGluZSxcbiAgICAgIHJldHJ5OiB0aGlzLnJldHJ5LFxuICAgIH07XG4gIH1cblxuICBAY2FjaGVkXG4gIGdldCBjb250ZW50RmVhdHVyZXMoKSB7XG4gICAgY29uc3QgZmVhdDogQ29udGVudEZlYXR1cmVzPFJUPiA9IHtcbiAgICAgIGlzSGlkZGVuOiB0aGlzLmlzSGlkZGVuLFxuICAgICAgaXNPbmxpbmU6IHRoaXMuaXNPbmxpbmUsXG4gICAgICByZWxvYWQ6IHRoaXMucmV0cnksXG4gICAgICByZWZyZXNoOiB0aGlzLnJlZnJlc2gsXG4gICAgICBpc1JlZnJlc2hpbmc6IHRoaXMuaXNSZWZyZXNoaW5nLFxuICAgICAgbGF0ZXN0UmVxdWVzdDogdGhpcy5fbGF0ZXN0UmVxdWVzdCxcbiAgICB9O1xuXG4gICAgaWYgKGZlYXQuaXNSZWZyZXNoaW5nKSB7XG4gICAgICBmZWF0LmFib3J0ID0gKCkgPT4ge1xuICAgICAgICB0aGlzLl9sYXRlc3RSZXF1ZXN0Py5hYm9ydCgpO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmVhdDtcbiAgfVxuXG4gIHdpbGxEZXN0cm95KCkge1xuICAgIHRoaXMucmVtb3ZlU3Vic2NyaXB0aW9ucygpO1xuXG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5jbGVhckludGVydmFsKCk7XG5cbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignb25saW5lJywgdGhpcy5vbmxpbmVDaGFuZ2VkLCB7IHBhc3NpdmU6IHRydWUsIGNhcHR1cmU6IHRydWUgfSBhcyB1bmtub3duIGFzIGJvb2xlYW4pO1xuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdvZmZsaW5lJywgdGhpcy5vbmxpbmVDaGFuZ2VkLCB7IHBhc3NpdmU6IHRydWUsIGNhcHR1cmU6IHRydWUgfSBhcyB1bmtub3duIGFzIGJvb2xlYW4pO1xuICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Zpc2liaWxpdHljaGFuZ2UnLCB0aGlzLmJhY2tncm91bmRDaGFuZ2VkLCB7XG4gICAgICBwYXNzaXZlOiB0cnVlLFxuICAgICAgY2FwdHVyZTogdHJ1ZSxcbiAgICB9IGFzIHVua25vd24gYXMgYm9vbGVhbik7XG4gIH1cblxuICBAY2FjaGVkXG4gIGdldCBfcmVxdWVzdCgpOiBGdXR1cmU8UlQ-IHtcbiAgICBjb25zdCB7IHJlcXVlc3QsIHF1ZXJ5IH0gPSB0aGlzLmFyZ3M7XG4gICAgYXNzZXJ0KGBDYW5ub3QgdXNlIGJvdGggQHJlcXVlc3QgYW5kIEBxdWVyeSBhcmdzIHdpdGggdGhlIDxSZXF1ZXN0PiBjb21wb25lbnRgLCAhcmVxdWVzdCB8fCAhcXVlcnkpO1xuICAgIGNvbnN0IHsgX2xvY2FsUmVxdWVzdCwgX29yaWdpbmFsUmVxdWVzdCwgX29yaWdpbmFsUXVlcnkgfSA9IHRoaXM7XG4gICAgY29uc3QgaXNPcmlnaW5hbFJlcXVlc3QgPSByZXF1ZXN0ID09PSBfb3JpZ2luYWxSZXF1ZXN0ICYmIHF1ZXJ5ID09PSBfb3JpZ2luYWxRdWVyeTtcblxuICAgIGlmIChfbG9jYWxSZXF1ZXN0ICYmIGlzT3JpZ2luYWxSZXF1ZXN0KSB7XG4gICAgICByZXR1cm4gX2xvY2FsUmVxdWVzdDtcbiAgICB9XG5cbiAgICAvLyB1cGRhdGUgc3RhdGUgY2hlY2tzIGZvciB0aGUgbmV4dCB0aW1lXG4gICAgdGhpcy5fb3JpZ2luYWxRdWVyeSA9IHF1ZXJ5O1xuICAgIHRoaXMuX29yaWdpbmFsUmVxdWVzdCA9IHJlcXVlc3Q7XG5cbiAgICBpZiAocmVxdWVzdCkge1xuICAgICAgcmV0dXJuIHJlcXVlc3Q7XG4gICAgfVxuICAgIGFzc2VydChgWW91IG11c3QgcHJvdmlkZSBlaXRoZXIgQHJlcXVlc3Qgb3IgYW4gQHF1ZXJ5IGFyZyB3aXRoIHRoZSA8UmVxdWVzdD4gY29tcG9uZW50YCwgcXVlcnkpO1xuICAgIHJldHVybiB0aGlzLnN0b3JlLnJlcXVlc3Q8UlQsIFQ-KHF1ZXJ5KTtcbiAgfVxuXG4gIEBjYWNoZWRcbiAgZ2V0IHJlcXVlc3QoKTogRnV0dXJlPFJUPiB7XG4gICAgY29uc3QgcmVxdWVzdCA9IHRoaXMuX3JlcXVlc3Q7XG4gICAgdGhpcy51cGRhdGVTdWJzY3JpcHRpb25zKCk7XG4gICAgcmV0dXJuIHJlcXVlc3Q7XG4gIH1cblxuICBnZXQgc3RvcmUoKTogU3RvcmUge1xuICAgIGNvbnN0IHN0b3JlID0gdGhpcy5hcmdzLnN0b3JlIHx8IHRoaXMuX3N0b3JlO1xuICAgIGFzc2VydChcbiAgICAgIG1vZHVsZUV4aXN0cygnZW1iZXItcHJvdmlkZS1jb25zdW1lLWNvbnRleHQnKVxuICAgICAgICA_IGBObyBzdG9yZSB3YXMgcHJvdmlkZWQgdG8gdGhlIDxSZXF1ZXN0PiBjb21wb25lbnQuIEVpdGhlciBwcm92aWRlIGEgc3RvcmUgdmlhIHRoZSBAc3RvcmUgYXJnIG9yIHZpYSB0aGUgY29udGV4dCBBUEkgcHJvdmlkZWQgYnkgZW1iZXItcHJvdmlkZS1jb25zdW1lLWNvbnRleHQuYFxuICAgICAgICA6IGBObyBzdG9yZSB3YXMgcHJvdmlkZWQgdG8gdGhlIDxSZXF1ZXN0PiBjb21wb25lbnQuIEVpdGhlciBwcm92aWRlIGEgc3RvcmUgdmlhIHRoZSBAc3RvcmUgYXJnIG9yIGJ5IHJlZ2lzdGVyaW5nIGEgc3RvcmUgc2VydmljZS5gLFxuICAgICAgc3RvcmVcbiAgICApO1xuICAgIHJldHVybiBzdG9yZTtcbiAgfVxuXG4gIGdldCByZXFTdGF0ZSgpIHtcbiAgICByZXR1cm4gZ2V0UmVxdWVzdFN0YXRlPFJULCBUPih0aGlzLnJlcXVlc3QpO1xuICB9XG5cbiAgZ2V0IHJlc3VsdCgpIHtcbiAgICByZXR1cm4gdGhpcy5yZXFTdGF0ZS5yZXN1bHQgYXMgUlQ7XG4gIH1cblxuICA8dGVtcGxhdGU-XG4gICAge3sjaWYgKGFuZCB0aGlzLmlzSWRsZSAoaGFzLWJsb2NrIFwiaWRsZVwiKSl9fVxuICAgICAge3t5aWVsZCB0bz1cImlkbGVcIn19XG4gICAge3tlbHNlIGlmIHRoaXMuaXNJZGxlfX1cbiAgICAgIDxUaHJvdyBAZXJyb3I9e3tJZGxlQmxvY2tNaXNzaW5nRXJyb3J9fSAvPlxuICAgIHt7ZWxzZSBpZiB0aGlzLnJlcVN0YXRlLmlzTG9hZGluZ319XG4gICAgICB7e3lpZWxkIHRoaXMucmVxU3RhdGUubG9hZGluZ1N0YXRlIHRvPVwibG9hZGluZ1wifX1cbiAgICB7e2Vsc2UgaWYgKGFuZCB0aGlzLnJlcVN0YXRlLmlzQ2FuY2VsbGVkIChoYXMtYmxvY2sgXCJjYW5jZWxsZWRcIikpfX1cbiAgICAgIHt7eWllbGQgKG5vdE51bGwgdGhpcy5yZXFTdGF0ZS5lcnJvcikgdGhpcy5lcnJvckZlYXR1cmVzIHRvPVwiY2FuY2VsbGVkXCJ9fVxuICAgIHt7ZWxzZSBpZiAoYW5kIHRoaXMucmVxU3RhdGUuaXNFcnJvciAoaGFzLWJsb2NrIFwiZXJyb3JcIikpfX1cbiAgICAgIHt7eWllbGQgKG5vdE51bGwgdGhpcy5yZXFTdGF0ZS5lcnJvcikgdGhpcy5lcnJvckZlYXR1cmVzIHRvPVwiZXJyb3JcIn19XG4gICAge3tlbHNlIGlmIHRoaXMucmVxU3RhdGUuaXNTdWNjZXNzfX1cbiAgICAgIHt7eWllbGQgdGhpcy5yZXN1bHQgdGhpcy5jb250ZW50RmVhdHVyZXMgdG89XCJjb250ZW50XCJ9fVxuICAgIHt7ZWxzZSBpZiAobm90IHRoaXMucmVxU3RhdGUuaXNDYW5jZWxsZWQpfX1cbiAgICAgIDxUaHJvdyBAZXJyb3I9e3sobm90TnVsbCB0aGlzLnJlcVN0YXRlLmVycm9yKX19IC8-XG4gICAge3svaWZ9fVxuICAgIHt7eWllbGQgdGhpcy5yZXFTdGF0ZSB0bz1cImFsd2F5c1wifX1cbiAgPC90ZW1wbGF0ZT5cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsU0FBUyxPQUFPLFFBQVEsaUJBQWlCO0FBQ3pDLE9BQU8sZUFBZSxxQkFBcUI7QUFDM0MsU0FBUyxNQUFNLEVBQUUsT0FBTyxRQUFRLG9CQUFvQjtBQUVwRCxTQUFTLFVBQVUsRUFBRSxjQUFjLEVBQUUsWUFBWSxRQUFRLG9CQUFvQjtBQUU3RSxjQUFjLE1BQU0sRUFBRSx1QkFBdUIsUUFBUSxzQkFBc0I7QUFDM0UsY0FBYyxpQkFBaUIsUUFBUSxvQkFBb0I7QUFDM0QsWUFBWSxXQUFXLG9CQUFvQjtBQUMzQyxTQUFTLE1BQU0sUUFBUSxrQ0FBa0M7QUFDekQsY0FBYyx3QkFBd0IsUUFBUSx1Q0FBdUM7QUFDckYsU0FBUyxlQUFlLEVBQUUsS0FBSyxXQUFXLFFBQVEsaUNBQWlDO0FBRW5GLFNBQVMsR0FBRyxFQUFFLEtBQUssUUFBUSxjQUFjO0FBQ3pDLGNBQWMsbUJBQW1CLEVBQUUsWUFBWSxRQUFRLHFCQUFxQjtBQUM1RSxTQUFTLGVBQWUsUUFBUSxxQkFBcUI7QUFFckQsU0FBUyxRQUFRLEdBQUcsSUFBSSxHQUFHLEtBQUs7QUFDaEMsU0FBUyxRQUFRLEdBQUcsR0FBRyxDQUFDLEdBQUcsUUFBUSxHQUFHLElBQUk7QUFDMUMsU0FBUyxRQUFRLEdBQUcsR0FBRyxJQUFJLElBQUk7SUFDN0IsT0FBTywyQ0FBMkMsTUFBTTtJQUN4RCxPQUFPO0FBQ1Q7QUFFQSxNQUFNLE1BQU0sQ0FBQyxHQUFHLE9BQU8sR0FBSyxDQUFDO0FBQzdCLHNEQUFzRDtBQUN0RCxNQUFNLG1CQUFtQjtBQUN6QixNQUFNLHdCQUF3QixJQUFJLE1BQ2hDO0FBR0YsSUFBSSxVQUFVO0FBQ2QsSUFBSSxlQUFlLGFBQWEsbUNBQW1DO0lBQ2pFLE1BQU0sRUFBRSxTQUFTLGNBQWMsRUFBRSxHQUFHLFdBQVc7UUFBc0MsZ0JBQWdCOztJQUNy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"],"names":["deferred","WeakMap","deferDecorator","proto","prop","desc","map","get","Map","set","findDeferredDecorator","target","_a","cursor","prototype","decorateFieldV2","decorators","initializer","configurable","enumerable","writable","decorator","Object","defineProperty","decorateMethodV2","origDesc","getOwnPropertyDescriptor","value","call","initializeDeferredDecorator","constructor","RequestCache","isAbortError","error","DOMException","name","watchStream","stream","state","reader","getReader","bytesLoaded","shouldForward","_stream","readable","locked","isForwarding","writer","getWriter","buffer","_isPending","_isStarted","_startTime","performance","now","done","read","byteLength","_bytesLoaded","_lastPacketTime","item","ready","write","length","push","close","cancel","endTime","_endTime","_isComplete","RequestLoadingState","_future","_triggered","_trigger","future","promise","getStream","sizeHint","_sizeHint","then","_isCancelled","_isErrored","_error","g","tracked","i","void 0","isPending","TransformStream","isStarted","startTime","lastPacketTime","isComplete","isCancelled","isErrored","elapsedTime","completedRatio","remainingRatio","duration","speed","abort","RequestState","isError","loadingState","getPromiseResult","request","result","response","isLoading","content","isSuccess","setPromiseResult","getRequestState","PromiseCache","PromiseState","LegacyPromiseProxy","Symbol","for","isLegacyAwaitable","getPromise","getPromiseState","_promise","and","x","y","Boolean","Throw","Component","owner","args","setComponentTemplate","precompileTemplate","strictMode","Await","scope","notNull","macroCondition","getGlobalConfig","WarpDrive","env","DEBUG","test","Error","not","DEFAULT_DEADLINE","IdleBlockMissingError","consume","service","moduleExists","contextConsume","importSync","isNeverString","val","Request","unavailableStart","intervalStart","nextInterval","invalidated","isUpdating","onlineChanged","backgroundChanged","_originalRequest","_originalQuery","_subscription","_subscribedTo","installListeners","beginPolling","isDestroyed","scheduleInterval","isIdle","query","n","cached","autorefreshTypes","autorefresh","types","split","Set","autorefreshThreshold","hasValidThreshold","window","has","_latestRequest","Date","setTimeout","maybeUpdate","clearInterval","clearTimeout","updateSubscriptions","requestId","_request","lid","removeSubscriptions","store","notifications","subscribe","_id","op","latest","requestManager","_deduped","priority","isRefreshing","blocking","unsubscribe","isOnline","navigator","onLine","isHidden","document","visibilityState","event","type","addEventListener","passive","capture","mode","silent","canAttempt","size","shouldAttempt","deadline","assign","reqState","realMode","autorefreshBehavior","cacheOptions","reload","backgroundReload","wasStoreRequest","EnableHydration","_localRequest","finally","retry","refresh","errorFeatures","contentFeatures","feat","latestRequest","willDestroy","removeEventListener","isOriginalRequest","_store"],"mappings":"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","x_google_ignoreList":[0]}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@warp-drive-mirror/ember",
|
|
3
3
|
"description": "Data bindings and utilities for Ember applications using WarpDrive",
|
|
4
|
-
"version": "0.0.0
|
|
4
|
+
"version": "0.0.0",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Chris Thoburn <runspired@users.noreply.github.com>",
|
|
7
7
|
"repository": {
|
|
@@ -39,14 +39,14 @@
|
|
|
39
39
|
"@ember-data-mirror/store": "^4.12.7 || > 5.3.3",
|
|
40
40
|
"@ember-data-mirror/request": "^4.12.7 || > 5.3.3",
|
|
41
41
|
"@ember-data-mirror/request-utils": "^4.12.7 || > 5.3.3",
|
|
42
|
-
"@warp-drive-mirror/core-types": "0.0.0
|
|
42
|
+
"@warp-drive-mirror/core-types": "0.0.0",
|
|
43
43
|
"ember-provide-consume-context": "^0.5.0",
|
|
44
44
|
"@ember-data-mirror/tracking": "^4.12.7 || > 5.3.3"
|
|
45
45
|
},
|
|
46
46
|
"dependencies": {
|
|
47
47
|
"@ember/test-waiters": "^3.1.0 || ^4.0.0",
|
|
48
48
|
"@embroider/macros": "^1.16.6",
|
|
49
|
-
"@warp-drive-mirror/build-config": "0.0.0
|
|
49
|
+
"@warp-drive-mirror/build-config": "0.0.0"
|
|
50
50
|
},
|
|
51
51
|
"dependenciesMeta": {
|
|
52
52
|
"@ember-data-mirror/store": {
|
|
@@ -88,13 +88,13 @@
|
|
|
88
88
|
"@glint/template": "1.5.0",
|
|
89
89
|
"decorator-transforms": "^2.2.2",
|
|
90
90
|
"@embroider/addon-dev": "^4.3.1",
|
|
91
|
-
"@ember-data-mirror/request": "5.
|
|
92
|
-
"@ember-data-mirror/request-utils": "5.
|
|
93
|
-
"@ember-data-mirror/store": "5.
|
|
94
|
-
"@ember-data-mirror/tracking": "5.
|
|
91
|
+
"@ember-data-mirror/request": "5.3.10",
|
|
92
|
+
"@ember-data-mirror/request-utils": "5.3.10",
|
|
93
|
+
"@ember-data-mirror/store": "5.3.10",
|
|
94
|
+
"@ember-data-mirror/tracking": "5.3.10",
|
|
95
95
|
"@ember/test-helpers": "4.0.4",
|
|
96
|
-
"@warp-drive-mirror/core-types": "0.0.0
|
|
97
|
-
"@warp-drive/internal-config": "5.
|
|
96
|
+
"@warp-drive-mirror/core-types": "0.0.0",
|
|
97
|
+
"@warp-drive/internal-config": "5.3.10",
|
|
98
98
|
"babel-plugin-ember-template-compilation": "^2.2.5",
|
|
99
99
|
"ember-template-imports": "^4.1.3",
|
|
100
100
|
"ember-source": "~5.12.0",
|