@dbx-tools/appkit-web-search 0.4.1 → 0.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/index.ts CHANGED
@@ -2,35 +2,35 @@
2
2
  // Regenerated from the exporting modules in ./src.
3
3
  // Hand edits are overwritten on the next watch; this file is read-only.
4
4
 
5
- export * as allowlist from "./src/allowlist";
6
- export * as config from "./src/config";
7
- export * as defaults from "./src/defaults";
8
- export * as fetch from "./src/fetch";
9
- export * as htmlText from "./src/html-text";
10
- export * as plugin from "./src/plugin";
11
- export * as provider from "./src/provider";
12
- export * as runtime from "./src/runtime";
13
- export * as schema from "./src/schema";
14
- export * as scrape from "./src/scrape";
15
- export * as search from "./src/search";
16
- export * as tool from "./src/tool";
17
- export { normalizeUrlPattern, parseAllowedUrls, toUrlAllowList, assertUrlAllowed } from "./src/allowlist";
18
- export type { UrlAllowList } from "./src/allowlist";
19
- export { MODEL_ENV, SERVING_ENDPOINT_ENV, DEFAULT_MODEL_FALLBACKS, DEFAULT_MAX_CITATIONS, DEFAULT_FETCH_MAX_LENGTH, DEFAULT_TIMEOUT_MS, WEB_SEARCH_CONFIG_SCHEMA, toApprovalPolicy, resolveWebSearchConfig, approvalMatches } from "./src/config";
20
- export type { ApprovalGate, ApprovalPolicy, UrlPolicyMode, ModelSource, WebSearchPluginConfig, ResolvedWebSearchConfig } from "./src/config";
21
- export { SEARCH_CACHE_TTL_SECONDS, FETCH_CACHE_TTL_SECONDS, SERVING_RETRY_ATTEMPTS, WEB_RETRY_ATTEMPTS, webSearchExecuteDefaults, webFetchExecuteDefaults, scrapeSearchExecuteDefaults, toCallSettings } from "./src/defaults";
22
- export type { WebSearchExecuteConfig, WebSearchExecutionSettings } from "./src/defaults";
23
- export { runWebFetch } from "./src/fetch";
24
- export { decodeHtmlEntities, htmlFragmentToText, htmlToText } from "./src/html-text";
25
- export { WebSearchPlugin, webSearch } from "./src/plugin";
26
- export { WEB_SEARCH_PROVIDERS, detectWebSearchProvider, supportsWebSearch, webSearchToolSpec } from "./src/provider";
27
- export type { WebSearchProvider, WebSearchProviderSpec } from "./src/provider";
28
- export { getWebSearchRuntime, setWebSearchExecutor, resetWebSearchRuntime, executeRead } from "./src/runtime";
29
- export type { WebSearchExecutor, WebSearchRuntime } from "./src/runtime";
30
- export { WEB_SEARCH_TOOL_DESCRIPTION, WEB_FETCH_TOOL_DESCRIPTION, webSearchRequestSchema, webSearchCitationSchema, webSearchResultSchema, webFetchRequestSchema, webFetchResultSchema } from "./src/schema";
31
- export type { WebSearchRequest, WebSearchCitation, WebSearchResult, WebFetchRequest, WebFetchResult } from "./src/schema";
32
- export { runScrapeSearch } from "./src/scrape";
33
- export { resolveWebSearchContext, runWebSearch } from "./src/search";
34
- export type { WebSearchContext } from "./src/search";
35
- export { webSearchTool, webFetchTool } from "./src/tool";
36
- export type { WebSearchToolOptions } from "./src/tool";
5
+ export * as allowlist from "./src/allowlist.ts";
6
+ export * as config from "./src/config.ts";
7
+ export * as defaults from "./src/defaults.ts";
8
+ export * as fetch from "./src/fetch.ts";
9
+ export * as htmlText from "./src/html-text.ts";
10
+ export * as plugin from "./src/plugin.ts";
11
+ export * as provider from "./src/provider.ts";
12
+ export * as runtime from "./src/runtime.ts";
13
+ export * as schema from "./src/schema.ts";
14
+ export * as scrape from "./src/scrape.ts";
15
+ export * as search from "./src/search.ts";
16
+ export * as tool from "./src/tool.ts";
17
+ export { normalizeUrlPattern, parseAllowedUrls, toUrlAllowList, assertUrlAllowed } from "./src/allowlist.ts";
18
+ export type { UrlAllowList } from "./src/allowlist.ts";
19
+ export { MODEL_ENV, SERVING_ENDPOINT_ENV, DEFAULT_MODEL_FALLBACKS, DEFAULT_MAX_CITATIONS, DEFAULT_FETCH_MAX_LENGTH, DEFAULT_TIMEOUT_MS, WEB_SEARCH_CONFIG_SCHEMA, toApprovalPolicy, resolveWebSearchConfig, approvalMatches } from "./src/config.ts";
20
+ export type { ApprovalGate, ApprovalPolicy, UrlPolicyMode, ModelSource, WebSearchPluginConfig, ResolvedWebSearchConfig } from "./src/config.ts";
21
+ export { SEARCH_CACHE_TTL_SECONDS, FETCH_CACHE_TTL_SECONDS, SERVING_RETRY_ATTEMPTS, WEB_RETRY_ATTEMPTS, webSearchExecuteDefaults, webFetchExecuteDefaults, scrapeSearchExecuteDefaults, toCallSettings } from "./src/defaults.ts";
22
+ export type { WebSearchExecuteConfig, WebSearchExecutionSettings } from "./src/defaults.ts";
23
+ export { runWebFetch } from "./src/fetch.ts";
24
+ export { decodeHtmlEntities, htmlFragmentToText, htmlToText } from "./src/html-text.ts";
25
+ export { WebSearchPlugin, webSearch } from "./src/plugin.ts";
26
+ export { WEB_SEARCH_PROVIDERS, detectWebSearchProvider, supportsWebSearch, webSearchToolSpec } from "./src/provider.ts";
27
+ export type { WebSearchProvider, WebSearchProviderSpec } from "./src/provider.ts";
28
+ export { getWebSearchRuntime, setWebSearchExecutor, resetWebSearchRuntime, executeRead } from "./src/runtime.ts";
29
+ export type { WebSearchExecutor, WebSearchRuntime } from "./src/runtime.ts";
30
+ export { WEB_SEARCH_TOOL_DESCRIPTION, WEB_FETCH_TOOL_DESCRIPTION, webSearchRequestSchema, webSearchCitationSchema, webSearchResultSchema, webFetchRequestSchema, webFetchResultSchema } from "./src/schema.ts";
31
+ export type { WebSearchRequest, WebSearchCitation, WebSearchResult, WebFetchRequest, WebFetchResult } from "./src/schema.ts";
32
+ export { runScrapeSearch } from "./src/scrape.ts";
33
+ export { resolveWebSearchContext, runWebSearch } from "./src/search.ts";
34
+ export type { WebSearchContext } from "./src/search.ts";
35
+ export { webSearchTool, webFetchTool } from "./src/tool.ts";
36
+ export type { WebSearchToolOptions } from "./src/tool.ts";
package/lib/index.d.ts CHANGED
@@ -1,32 +1,32 @@
1
- export * as allowlist from "./src/allowlist.js";
2
- export * as config from "./src/config.js";
3
- export * as defaults from "./src/defaults.js";
4
- export * as fetch from "./src/fetch.js";
5
- export * as htmlText from "./src/html-text.js";
6
- export * as plugin from "./src/plugin.js";
7
- export * as provider from "./src/provider.js";
8
- export * as runtime from "./src/runtime.js";
9
- export * as schema from "./src/schema.js";
10
- export * as scrape from "./src/scrape.js";
11
- export * as search from "./src/search.js";
12
- export * as tool from "./src/tool.js";
13
- export { normalizeUrlPattern, parseAllowedUrls, toUrlAllowList, assertUrlAllowed } from "./src/allowlist.js";
14
- export type { UrlAllowList } from "./src/allowlist.js";
15
- export { MODEL_ENV, SERVING_ENDPOINT_ENV, DEFAULT_MODEL_FALLBACKS, DEFAULT_MAX_CITATIONS, DEFAULT_FETCH_MAX_LENGTH, DEFAULT_TIMEOUT_MS, WEB_SEARCH_CONFIG_SCHEMA, toApprovalPolicy, resolveWebSearchConfig, approvalMatches } from "./src/config.js";
16
- export type { ApprovalGate, ApprovalPolicy, UrlPolicyMode, ModelSource, WebSearchPluginConfig, ResolvedWebSearchConfig } from "./src/config.js";
17
- export { SEARCH_CACHE_TTL_SECONDS, FETCH_CACHE_TTL_SECONDS, SERVING_RETRY_ATTEMPTS, WEB_RETRY_ATTEMPTS, webSearchExecuteDefaults, webFetchExecuteDefaults, scrapeSearchExecuteDefaults, toCallSettings } from "./src/defaults.js";
18
- export type { WebSearchExecuteConfig, WebSearchExecutionSettings } from "./src/defaults.js";
19
- export { runWebFetch } from "./src/fetch.js";
20
- export { decodeHtmlEntities, htmlFragmentToText, htmlToText } from "./src/html-text.js";
21
- export { WebSearchPlugin, webSearch } from "./src/plugin.js";
22
- export { WEB_SEARCH_PROVIDERS, detectWebSearchProvider, supportsWebSearch, webSearchToolSpec } from "./src/provider.js";
23
- export type { WebSearchProvider, WebSearchProviderSpec } from "./src/provider.js";
24
- export { getWebSearchRuntime, setWebSearchExecutor, resetWebSearchRuntime, executeRead } from "./src/runtime.js";
25
- export type { WebSearchExecutor, WebSearchRuntime } from "./src/runtime.js";
26
- export { WEB_SEARCH_TOOL_DESCRIPTION, WEB_FETCH_TOOL_DESCRIPTION, webSearchRequestSchema, webSearchCitationSchema, webSearchResultSchema, webFetchRequestSchema, webFetchResultSchema } from "./src/schema.js";
27
- export type { WebSearchRequest, WebSearchCitation, WebSearchResult, WebFetchRequest, WebFetchResult } from "./src/schema.js";
28
- export { runScrapeSearch } from "./src/scrape.js";
29
- export { resolveWebSearchContext, runWebSearch } from "./src/search.js";
30
- export type { WebSearchContext } from "./src/search.js";
31
- export { webSearchTool, webFetchTool } from "./src/tool.js";
32
- export type { WebSearchToolOptions } from "./src/tool.js";
1
+ export * as allowlist from "./src/allowlist.ts";
2
+ export * as config from "./src/config.ts";
3
+ export * as defaults from "./src/defaults.ts";
4
+ export * as fetch from "./src/fetch.ts";
5
+ export * as htmlText from "./src/html-text.ts";
6
+ export * as plugin from "./src/plugin.ts";
7
+ export * as provider from "./src/provider.ts";
8
+ export * as runtime from "./src/runtime.ts";
9
+ export * as schema from "./src/schema.ts";
10
+ export * as scrape from "./src/scrape.ts";
11
+ export * as search from "./src/search.ts";
12
+ export * as tool from "./src/tool.ts";
13
+ export { normalizeUrlPattern, parseAllowedUrls, toUrlAllowList, assertUrlAllowed } from "./src/allowlist.ts";
14
+ export type { UrlAllowList } from "./src/allowlist.ts";
15
+ export { MODEL_ENV, SERVING_ENDPOINT_ENV, DEFAULT_MODEL_FALLBACKS, DEFAULT_MAX_CITATIONS, DEFAULT_FETCH_MAX_LENGTH, DEFAULT_TIMEOUT_MS, WEB_SEARCH_CONFIG_SCHEMA, toApprovalPolicy, resolveWebSearchConfig, approvalMatches } from "./src/config.ts";
16
+ export type { ApprovalGate, ApprovalPolicy, UrlPolicyMode, ModelSource, WebSearchPluginConfig, ResolvedWebSearchConfig } from "./src/config.ts";
17
+ export { SEARCH_CACHE_TTL_SECONDS, FETCH_CACHE_TTL_SECONDS, SERVING_RETRY_ATTEMPTS, WEB_RETRY_ATTEMPTS, webSearchExecuteDefaults, webFetchExecuteDefaults, scrapeSearchExecuteDefaults, toCallSettings } from "./src/defaults.ts";
18
+ export type { WebSearchExecuteConfig, WebSearchExecutionSettings } from "./src/defaults.ts";
19
+ export { runWebFetch } from "./src/fetch.ts";
20
+ export { decodeHtmlEntities, htmlFragmentToText, htmlToText } from "./src/html-text.ts";
21
+ export { WebSearchPlugin, webSearch } from "./src/plugin.ts";
22
+ export { WEB_SEARCH_PROVIDERS, detectWebSearchProvider, supportsWebSearch, webSearchToolSpec } from "./src/provider.ts";
23
+ export type { WebSearchProvider, WebSearchProviderSpec } from "./src/provider.ts";
24
+ export { getWebSearchRuntime, setWebSearchExecutor, resetWebSearchRuntime, executeRead } from "./src/runtime.ts";
25
+ export type { WebSearchExecutor, WebSearchRuntime } from "./src/runtime.ts";
26
+ export { WEB_SEARCH_TOOL_DESCRIPTION, WEB_FETCH_TOOL_DESCRIPTION, webSearchRequestSchema, webSearchCitationSchema, webSearchResultSchema, webFetchRequestSchema, webFetchResultSchema } from "./src/schema.ts";
27
+ export type { WebSearchRequest, WebSearchCitation, WebSearchResult, WebFetchRequest, WebFetchResult } from "./src/schema.ts";
28
+ export { runScrapeSearch } from "./src/scrape.ts";
29
+ export { resolveWebSearchContext, runWebSearch } from "./src/search.ts";
30
+ export type { WebSearchContext } from "./src/search.ts";
31
+ export { webSearchTool, webFetchTool } from "./src/tool.ts";
32
+ export type { WebSearchToolOptions } from "./src/tool.ts";
package/lib/index.js CHANGED
@@ -25,4 +25,4 @@ export { WEB_SEARCH_TOOL_DESCRIPTION, WEB_FETCH_TOOL_DESCRIPTION, webSearchReque
25
25
  export { runScrapeSearch } from "./src/scrape.js";
26
26
  export { resolveWebSearchContext, runWebSearch } from "./src/search.js";
27
27
  export { webSearchTool, webFetchTool } from "./src/tool.js";
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyQ0FBMkM7QUFDM0MsbURBQW1EO0FBQ25ELHdFQUF3RTtBQUV4RSxPQUFPLEtBQUssU0FBUyxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sS0FBSyxNQUFNLE1BQU0sY0FBYyxDQUFDO0FBQ3ZDLE9BQU8sS0FBSyxRQUFRLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxLQUFLLEtBQUssTUFBTSxhQUFhLENBQUM7QUFDckMsT0FBTyxLQUFLLFFBQVEsTUFBTSxpQkFBaUIsQ0FBQztBQUM1QyxPQUFPLEtBQUssTUFBTSxNQUFNLGNBQWMsQ0FBQztBQUN2QyxPQUFPLEtBQUssUUFBUSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sS0FBSyxPQUFPLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sS0FBSyxNQUFNLE1BQU0sY0FBYyxDQUFDO0FBQ3ZDLE9BQU8sS0FBSyxNQUFNLE1BQU0sY0FBYyxDQUFDO0FBQ3ZDLE9BQU8sS0FBSyxNQUFNLE1BQU0sY0FBYyxDQUFDO0FBQ3ZDLE9BQU8sS0FBSyxJQUFJLE1BQU0sWUFBWSxDQUFDO0FBQ25DLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxnQkFBZ0IsRUFBRSxjQUFjLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUxRyxPQUFPLEVBQUUsU0FBUyxFQUFFLG9CQUFvQixFQUFFLHVCQUF1QixFQUFFLHFCQUFxQixFQUFFLHdCQUF3QixFQUFFLGtCQUFrQixFQUFFLHdCQUF3QixFQUFFLGdCQUFnQixFQUFFLHNCQUFzQixFQUFFLGVBQWUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUVsUCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsdUJBQXVCLEVBQUUsc0JBQXNCLEVBQUUsa0JBQWtCLEVBQUUsd0JBQXdCLEVBQUUsdUJBQXVCLEVBQUUsMkJBQTJCLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFL04sT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMxQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsa0JBQWtCLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDckYsT0FBTyxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDMUQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLHVCQUF1QixFQUFFLGlCQUFpQixFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFckgsT0FBTyxFQUFFLG1CQUFtQixFQUFFLG9CQUFvQixFQUFFLHFCQUFxQixFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU5RyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsMEJBQTBCLEVBQUUsc0JBQXNCLEVBQUUsdUJBQXVCLEVBQUUscUJBQXFCLEVBQUUscUJBQXFCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFNU0sT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMvQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsWUFBWSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRXJFLE9BQU8sRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLE1BQU0sWUFBWSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gR0VORVJBVEVEIGJ5IHByb2plbiB3YXRjaCAtIERPIE5PVCBFRElULlxuLy8gUmVnZW5lcmF0ZWQgZnJvbSB0aGUgZXhwb3J0aW5nIG1vZHVsZXMgaW4gLi9zcmMuXG4vLyBIYW5kIGVkaXRzIGFyZSBvdmVyd3JpdHRlbiBvbiB0aGUgbmV4dCB3YXRjaDsgdGhpcyBmaWxlIGlzIHJlYWQtb25seS5cblxuZXhwb3J0ICogYXMgYWxsb3dsaXN0IGZyb20gXCIuL3NyYy9hbGxvd2xpc3RcIjtcbmV4cG9ydCAqIGFzIGNvbmZpZyBmcm9tIFwiLi9zcmMvY29uZmlnXCI7XG5leHBvcnQgKiBhcyBkZWZhdWx0cyBmcm9tIFwiLi9zcmMvZGVmYXVsdHNcIjtcbmV4cG9ydCAqIGFzIGZldGNoIGZyb20gXCIuL3NyYy9mZXRjaFwiO1xuZXhwb3J0ICogYXMgaHRtbFRleHQgZnJvbSBcIi4vc3JjL2h0bWwtdGV4dFwiO1xuZXhwb3J0ICogYXMgcGx1Z2luIGZyb20gXCIuL3NyYy9wbHVnaW5cIjtcbmV4cG9ydCAqIGFzIHByb3ZpZGVyIGZyb20gXCIuL3NyYy9wcm92aWRlclwiO1xuZXhwb3J0ICogYXMgcnVudGltZSBmcm9tIFwiLi9zcmMvcnVudGltZVwiO1xuZXhwb3J0ICogYXMgc2NoZW1hIGZyb20gXCIuL3NyYy9zY2hlbWFcIjtcbmV4cG9ydCAqIGFzIHNjcmFwZSBmcm9tIFwiLi9zcmMvc2NyYXBlXCI7XG5leHBvcnQgKiBhcyBzZWFyY2ggZnJvbSBcIi4vc3JjL3NlYXJjaFwiO1xuZXhwb3J0ICogYXMgdG9vbCBmcm9tIFwiLi9zcmMvdG9vbFwiO1xuZXhwb3J0IHsgbm9ybWFsaXplVXJsUGF0dGVybiwgcGFyc2VBbGxvd2VkVXJscywgdG9VcmxBbGxvd0xpc3QsIGFzc2VydFVybEFsbG93ZWQgfSBmcm9tIFwiLi9zcmMvYWxsb3dsaXN0XCI7XG5leHBvcnQgdHlwZSB7IFVybEFsbG93TGlzdCB9IGZyb20gXCIuL3NyYy9hbGxvd2xpc3RcIjtcbmV4cG9ydCB7IE1PREVMX0VOViwgU0VSVklOR19FTkRQT0lOVF9FTlYsIERFRkFVTFRfTU9ERUxfRkFMTEJBQ0tTLCBERUZBVUxUX01BWF9DSVRBVElPTlMsIERFRkFVTFRfRkVUQ0hfTUFYX0xFTkdUSCwgREVGQVVMVF9USU1FT1VUX01TLCBXRUJfU0VBUkNIX0NPTkZJR19TQ0hFTUEsIHRvQXBwcm92YWxQb2xpY3ksIHJlc29sdmVXZWJTZWFyY2hDb25maWcsIGFwcHJvdmFsTWF0Y2hlcyB9IGZyb20gXCIuL3NyYy9jb25maWdcIjtcbmV4cG9ydCB0eXBlIHsgQXBwcm92YWxHYXRlLCBBcHByb3ZhbFBvbGljeSwgVXJsUG9saWN5TW9kZSwgTW9kZWxTb3VyY2UsIFdlYlNlYXJjaFBsdWdpbkNvbmZpZywgUmVzb2x2ZWRXZWJTZWFyY2hDb25maWcgfSBmcm9tIFwiLi9zcmMvY29uZmlnXCI7XG5leHBvcnQgeyBTRUFSQ0hfQ0FDSEVfVFRMX1NFQ09ORFMsIEZFVENIX0NBQ0hFX1RUTF9TRUNPTkRTLCBTRVJWSU5HX1JFVFJZX0FUVEVNUFRTLCBXRUJfUkVUUllfQVRURU1QVFMsIHdlYlNlYXJjaEV4ZWN1dGVEZWZhdWx0cywgd2ViRmV0Y2hFeGVjdXRlRGVmYXVsdHMsIHNjcmFwZVNlYXJjaEV4ZWN1dGVEZWZhdWx0cywgdG9DYWxsU2V0dGluZ3MgfSBmcm9tIFwiLi9zcmMvZGVmYXVsdHNcIjtcbmV4cG9ydCB0eXBlIHsgV2ViU2VhcmNoRXhlY3V0ZUNvbmZpZywgV2ViU2VhcmNoRXhlY3V0aW9uU2V0dGluZ3MgfSBmcm9tIFwiLi9zcmMvZGVmYXVsdHNcIjtcbmV4cG9ydCB7IHJ1bldlYkZldGNoIH0gZnJvbSBcIi4vc3JjL2ZldGNoXCI7XG5leHBvcnQgeyBkZWNvZGVIdG1sRW50aXRpZXMsIGh0bWxGcmFnbWVudFRvVGV4dCwgaHRtbFRvVGV4dCB9IGZyb20gXCIuL3NyYy9odG1sLXRleHRcIjtcbmV4cG9ydCB7IFdlYlNlYXJjaFBsdWdpbiwgd2ViU2VhcmNoIH0gZnJvbSBcIi4vc3JjL3BsdWdpblwiO1xuZXhwb3J0IHsgV0VCX1NFQVJDSF9QUk9WSURFUlMsIGRldGVjdFdlYlNlYXJjaFByb3ZpZGVyLCBzdXBwb3J0c1dlYlNlYXJjaCwgd2ViU2VhcmNoVG9vbFNwZWMgfSBmcm9tIFwiLi9zcmMvcHJvdmlkZXJcIjtcbmV4cG9ydCB0eXBlIHsgV2ViU2VhcmNoUHJvdmlkZXIsIFdlYlNlYXJjaFByb3ZpZGVyU3BlYyB9IGZyb20gXCIuL3NyYy9wcm92aWRlclwiO1xuZXhwb3J0IHsgZ2V0V2ViU2VhcmNoUnVudGltZSwgc2V0V2ViU2VhcmNoRXhlY3V0b3IsIHJlc2V0V2ViU2VhcmNoUnVudGltZSwgZXhlY3V0ZVJlYWQgfSBmcm9tIFwiLi9zcmMvcnVudGltZVwiO1xuZXhwb3J0IHR5cGUgeyBXZWJTZWFyY2hFeGVjdXRvciwgV2ViU2VhcmNoUnVudGltZSB9IGZyb20gXCIuL3NyYy9ydW50aW1lXCI7XG5leHBvcnQgeyBXRUJfU0VBUkNIX1RPT0xfREVTQ1JJUFRJT04sIFdFQl9GRVRDSF9UT09MX0RFU0NSSVBUSU9OLCB3ZWJTZWFyY2hSZXF1ZXN0U2NoZW1hLCB3ZWJTZWFyY2hDaXRhdGlvblNjaGVtYSwgd2ViU2VhcmNoUmVzdWx0U2NoZW1hLCB3ZWJGZXRjaFJlcXVlc3RTY2hlbWEsIHdlYkZldGNoUmVzdWx0U2NoZW1hIH0gZnJvbSBcIi4vc3JjL3NjaGVtYVwiO1xuZXhwb3J0IHR5cGUgeyBXZWJTZWFyY2hSZXF1ZXN0LCBXZWJTZWFyY2hDaXRhdGlvbiwgV2ViU2VhcmNoUmVzdWx0LCBXZWJGZXRjaFJlcXVlc3QsIFdlYkZldGNoUmVzdWx0IH0gZnJvbSBcIi4vc3JjL3NjaGVtYVwiO1xuZXhwb3J0IHsgcnVuU2NyYXBlU2VhcmNoIH0gZnJvbSBcIi4vc3JjL3NjcmFwZVwiO1xuZXhwb3J0IHsgcmVzb2x2ZVdlYlNlYXJjaENvbnRleHQsIHJ1bldlYlNlYXJjaCB9IGZyb20gXCIuL3NyYy9zZWFyY2hcIjtcbmV4cG9ydCB0eXBlIHsgV2ViU2VhcmNoQ29udGV4dCB9IGZyb20gXCIuL3NyYy9zZWFyY2hcIjtcbmV4cG9ydCB7IHdlYlNlYXJjaFRvb2wsIHdlYkZldGNoVG9vbCB9IGZyb20gXCIuL3NyYy90b29sXCI7XG5leHBvcnQgdHlwZSB7IFdlYlNlYXJjaFRvb2xPcHRpb25zIH0gZnJvbSBcIi4vc3JjL3Rvb2xcIjtcbiJdfQ==
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyQ0FBMkM7QUFDM0MsbURBQW1EO0FBQ25ELHdFQUF3RTtBQUV4RSxPQUFPLEtBQUssU0FBUyxNQUFNLG9CQUFvQixDQUFDO0FBQ2hELE9BQU8sS0FBSyxNQUFNLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxLQUFLLFFBQVEsTUFBTSxtQkFBbUIsQ0FBQztBQUM5QyxPQUFPLEtBQUssS0FBSyxNQUFNLGdCQUFnQixDQUFDO0FBQ3hDLE9BQU8sS0FBSyxRQUFRLE1BQU0sb0JBQW9CLENBQUM7QUFDL0MsT0FBTyxLQUFLLE1BQU0sTUFBTSxpQkFBaUIsQ0FBQztBQUMxQyxPQUFPLEtBQUssUUFBUSxNQUFNLG1CQUFtQixDQUFDO0FBQzlDLE9BQU8sS0FBSyxPQUFPLE1BQU0sa0JBQWtCLENBQUM7QUFDNUMsT0FBTyxLQUFLLE1BQU0sTUFBTSxpQkFBaUIsQ0FBQztBQUMxQyxPQUFPLEtBQUssTUFBTSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sS0FBSyxNQUFNLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxLQUFLLElBQUksTUFBTSxlQUFlLENBQUM7QUFDdEMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGdCQUFnQixFQUFFLGNBQWMsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRTdHLE9BQU8sRUFBRSxTQUFTLEVBQUUsb0JBQW9CLEVBQUUsdUJBQXVCLEVBQUUscUJBQXFCLEVBQUUsd0JBQXdCLEVBQUUsa0JBQWtCLEVBQUUsd0JBQXdCLEVBQUUsZ0JBQWdCLEVBQUUsc0JBQXNCLEVBQUUsZUFBZSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFclAsT0FBTyxFQUFFLHdCQUF3QixFQUFFLHVCQUF1QixFQUFFLHNCQUFzQixFQUFFLGtCQUFrQixFQUFFLHdCQUF3QixFQUFFLHVCQUF1QixFQUFFLDJCQUEyQixFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRWxPLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsa0JBQWtCLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDeEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsdUJBQXVCLEVBQUUsaUJBQWlCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUV4SCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsb0JBQW9CLEVBQUUscUJBQXFCLEVBQUUsV0FBVyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFakgsT0FBTyxFQUFFLDJCQUEyQixFQUFFLDBCQUEwQixFQUFFLHNCQUFzQixFQUFFLHVCQUF1QixFQUFFLHFCQUFxQixFQUFFLHFCQUFxQixFQUFFLG9CQUFvQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFL00sT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2xELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUV4RSxPQUFPLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEdFTkVSQVRFRCBieSBwcm9qZW4gd2F0Y2ggLSBETyBOT1QgRURJVC5cbi8vIFJlZ2VuZXJhdGVkIGZyb20gdGhlIGV4cG9ydGluZyBtb2R1bGVzIGluIC4vc3JjLlxuLy8gSGFuZCBlZGl0cyBhcmUgb3ZlcndyaXR0ZW4gb24gdGhlIG5leHQgd2F0Y2g7IHRoaXMgZmlsZSBpcyByZWFkLW9ubHkuXG5cbmV4cG9ydCAqIGFzIGFsbG93bGlzdCBmcm9tIFwiLi9zcmMvYWxsb3dsaXN0LnRzXCI7XG5leHBvcnQgKiBhcyBjb25maWcgZnJvbSBcIi4vc3JjL2NvbmZpZy50c1wiO1xuZXhwb3J0ICogYXMgZGVmYXVsdHMgZnJvbSBcIi4vc3JjL2RlZmF1bHRzLnRzXCI7XG5leHBvcnQgKiBhcyBmZXRjaCBmcm9tIFwiLi9zcmMvZmV0Y2gudHNcIjtcbmV4cG9ydCAqIGFzIGh0bWxUZXh0IGZyb20gXCIuL3NyYy9odG1sLXRleHQudHNcIjtcbmV4cG9ydCAqIGFzIHBsdWdpbiBmcm9tIFwiLi9zcmMvcGx1Z2luLnRzXCI7XG5leHBvcnQgKiBhcyBwcm92aWRlciBmcm9tIFwiLi9zcmMvcHJvdmlkZXIudHNcIjtcbmV4cG9ydCAqIGFzIHJ1bnRpbWUgZnJvbSBcIi4vc3JjL3J1bnRpbWUudHNcIjtcbmV4cG9ydCAqIGFzIHNjaGVtYSBmcm9tIFwiLi9zcmMvc2NoZW1hLnRzXCI7XG5leHBvcnQgKiBhcyBzY3JhcGUgZnJvbSBcIi4vc3JjL3NjcmFwZS50c1wiO1xuZXhwb3J0ICogYXMgc2VhcmNoIGZyb20gXCIuL3NyYy9zZWFyY2gudHNcIjtcbmV4cG9ydCAqIGFzIHRvb2wgZnJvbSBcIi4vc3JjL3Rvb2wudHNcIjtcbmV4cG9ydCB7IG5vcm1hbGl6ZVVybFBhdHRlcm4sIHBhcnNlQWxsb3dlZFVybHMsIHRvVXJsQWxsb3dMaXN0LCBhc3NlcnRVcmxBbGxvd2VkIH0gZnJvbSBcIi4vc3JjL2FsbG93bGlzdC50c1wiO1xuZXhwb3J0IHR5cGUgeyBVcmxBbGxvd0xpc3QgfSBmcm9tIFwiLi9zcmMvYWxsb3dsaXN0LnRzXCI7XG5leHBvcnQgeyBNT0RFTF9FTlYsIFNFUlZJTkdfRU5EUE9JTlRfRU5WLCBERUZBVUxUX01PREVMX0ZBTExCQUNLUywgREVGQVVMVF9NQVhfQ0lUQVRJT05TLCBERUZBVUxUX0ZFVENIX01BWF9MRU5HVEgsIERFRkFVTFRfVElNRU9VVF9NUywgV0VCX1NFQVJDSF9DT05GSUdfU0NIRU1BLCB0b0FwcHJvdmFsUG9saWN5LCByZXNvbHZlV2ViU2VhcmNoQ29uZmlnLCBhcHByb3ZhbE1hdGNoZXMgfSBmcm9tIFwiLi9zcmMvY29uZmlnLnRzXCI7XG5leHBvcnQgdHlwZSB7IEFwcHJvdmFsR2F0ZSwgQXBwcm92YWxQb2xpY3ksIFVybFBvbGljeU1vZGUsIE1vZGVsU291cmNlLCBXZWJTZWFyY2hQbHVnaW5Db25maWcsIFJlc29sdmVkV2ViU2VhcmNoQ29uZmlnIH0gZnJvbSBcIi4vc3JjL2NvbmZpZy50c1wiO1xuZXhwb3J0IHsgU0VBUkNIX0NBQ0hFX1RUTF9TRUNPTkRTLCBGRVRDSF9DQUNIRV9UVExfU0VDT05EUywgU0VSVklOR19SRVRSWV9BVFRFTVBUUywgV0VCX1JFVFJZX0FUVEVNUFRTLCB3ZWJTZWFyY2hFeGVjdXRlRGVmYXVsdHMsIHdlYkZldGNoRXhlY3V0ZURlZmF1bHRzLCBzY3JhcGVTZWFyY2hFeGVjdXRlRGVmYXVsdHMsIHRvQ2FsbFNldHRpbmdzIH0gZnJvbSBcIi4vc3JjL2RlZmF1bHRzLnRzXCI7XG5leHBvcnQgdHlwZSB7IFdlYlNlYXJjaEV4ZWN1dGVDb25maWcsIFdlYlNlYXJjaEV4ZWN1dGlvblNldHRpbmdzIH0gZnJvbSBcIi4vc3JjL2RlZmF1bHRzLnRzXCI7XG5leHBvcnQgeyBydW5XZWJGZXRjaCB9IGZyb20gXCIuL3NyYy9mZXRjaC50c1wiO1xuZXhwb3J0IHsgZGVjb2RlSHRtbEVudGl0aWVzLCBodG1sRnJhZ21lbnRUb1RleHQsIGh0bWxUb1RleHQgfSBmcm9tIFwiLi9zcmMvaHRtbC10ZXh0LnRzXCI7XG5leHBvcnQgeyBXZWJTZWFyY2hQbHVnaW4sIHdlYlNlYXJjaCB9IGZyb20gXCIuL3NyYy9wbHVnaW4udHNcIjtcbmV4cG9ydCB7IFdFQl9TRUFSQ0hfUFJPVklERVJTLCBkZXRlY3RXZWJTZWFyY2hQcm92aWRlciwgc3VwcG9ydHNXZWJTZWFyY2gsIHdlYlNlYXJjaFRvb2xTcGVjIH0gZnJvbSBcIi4vc3JjL3Byb3ZpZGVyLnRzXCI7XG5leHBvcnQgdHlwZSB7IFdlYlNlYXJjaFByb3ZpZGVyLCBXZWJTZWFyY2hQcm92aWRlclNwZWMgfSBmcm9tIFwiLi9zcmMvcHJvdmlkZXIudHNcIjtcbmV4cG9ydCB7IGdldFdlYlNlYXJjaFJ1bnRpbWUsIHNldFdlYlNlYXJjaEV4ZWN1dG9yLCByZXNldFdlYlNlYXJjaFJ1bnRpbWUsIGV4ZWN1dGVSZWFkIH0gZnJvbSBcIi4vc3JjL3J1bnRpbWUudHNcIjtcbmV4cG9ydCB0eXBlIHsgV2ViU2VhcmNoRXhlY3V0b3IsIFdlYlNlYXJjaFJ1bnRpbWUgfSBmcm9tIFwiLi9zcmMvcnVudGltZS50c1wiO1xuZXhwb3J0IHsgV0VCX1NFQVJDSF9UT09MX0RFU0NSSVBUSU9OLCBXRUJfRkVUQ0hfVE9PTF9ERVNDUklQVElPTiwgd2ViU2VhcmNoUmVxdWVzdFNjaGVtYSwgd2ViU2VhcmNoQ2l0YXRpb25TY2hlbWEsIHdlYlNlYXJjaFJlc3VsdFNjaGVtYSwgd2ViRmV0Y2hSZXF1ZXN0U2NoZW1hLCB3ZWJGZXRjaFJlc3VsdFNjaGVtYSB9IGZyb20gXCIuL3NyYy9zY2hlbWEudHNcIjtcbmV4cG9ydCB0eXBlIHsgV2ViU2VhcmNoUmVxdWVzdCwgV2ViU2VhcmNoQ2l0YXRpb24sIFdlYlNlYXJjaFJlc3VsdCwgV2ViRmV0Y2hSZXF1ZXN0LCBXZWJGZXRjaFJlc3VsdCB9IGZyb20gXCIuL3NyYy9zY2hlbWEudHNcIjtcbmV4cG9ydCB7IHJ1blNjcmFwZVNlYXJjaCB9IGZyb20gXCIuL3NyYy9zY3JhcGUudHNcIjtcbmV4cG9ydCB7IHJlc29sdmVXZWJTZWFyY2hDb250ZXh0LCBydW5XZWJTZWFyY2ggfSBmcm9tIFwiLi9zcmMvc2VhcmNoLnRzXCI7XG5leHBvcnQgdHlwZSB7IFdlYlNlYXJjaENvbnRleHQgfSBmcm9tIFwiLi9zcmMvc2VhcmNoLnRzXCI7XG5leHBvcnQgeyB3ZWJTZWFyY2hUb29sLCB3ZWJGZXRjaFRvb2wgfSBmcm9tIFwiLi9zcmMvdG9vbC50c1wiO1xuZXhwb3J0IHR5cGUgeyBXZWJTZWFyY2hUb29sT3B0aW9ucyB9IGZyb20gXCIuL3NyYy90b29sLnRzXCI7XG4iXX0=
@@ -46,7 +46,7 @@
46
46
  import { type BasePluginConfig } from "@databricks/appkit";
47
47
  import { type OneOrMany } from "@dbx-tools/shared-core";
48
48
  import type { JSONSchema7 } from "json-schema";
49
- import { type UrlAllowList } from "./allowlist.js";
49
+ import { type UrlAllowList } from "./allowlist.ts";
50
50
  /**
51
51
  * A URL-pattern gate for per-tool approval. `true` gates every call; a
52
52
  * pattern (or list of patterns, in the {@link OneOrMany} shape used across
package/lib/src/config.js CHANGED
@@ -266,4 +266,4 @@ export function approvalMatches(gate, urls) {
266
266
  const list = toUrlAllowList(policy.patterns);
267
267
  return urls.some((url) => list.allows(url));
268
268
  }
269
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E0Q0c7QUFFSCxPQUFPLEVBQUUsa0JBQWtCLEVBQXlCLE1BQU0sb0JBQW9CLENBQUM7QUFDL0UsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFrQixNQUFNLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUU5RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsY0FBYyxFQUFxQixNQUFNLGFBQWEsQ0FBQztBQTZCbEYseURBQXlEO0FBQ3pELE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRyxrQkFBa0IsQ0FBQztBQUU1QywrRUFBK0U7QUFDL0UsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsa0NBQWtDLENBQUM7QUFLdkU7Ozs7OztHQU1HO0FBQ0gsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQXNCO0lBQ3hELHlCQUF5QjtJQUN6QiwyQkFBMkI7SUFDM0Isa0JBQWtCO0lBQ2xCLHVCQUF1QjtDQUN4QixDQUFDO0FBRUYsNEVBQTRFO0FBQzVFLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLEVBQUUsQ0FBQztBQUV4QyxvRUFBb0U7QUFDcEUsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsTUFBTSxDQUFDO0FBRS9DLG1FQUFtRTtBQUNuRSxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxNQUFNLENBQUM7QUFrSHpDLCtEQUErRDtBQUMvRCxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBZ0I7SUFDbkQsSUFBSSxFQUFFLFFBQVE7SUFDZCxVQUFVLEVBQUU7UUFDVixLQUFLLEVBQUU7WUFDTCxJQUFJLEVBQUUsUUFBUTtZQUNkLFdBQVcsRUFDVCw4SUFBOEk7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Q0FBQyxDQUFDO0FBQzlDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvbmZpZ3VyYXRpb24gZm9yIHRoZSB3ZWItc2VhcmNoIHBsdWdpbjogdGhlIHR5cGVkXG4gKiB7QGxpbmsgV2ViU2VhcmNoUGx1Z2luQ29uZmlnfSAodGhlIHBsdWdpbidzIHNsaWNlIG9mIEFwcEtpdCBjb25maWcpLCB0aGVcbiAqIEpTT04gU2NoZW1hIHRoZSBtYW5pZmVzdCBwdWJsaXNoZXMgZm9yIGl0LCBhbmQge0BsaW5rIHJlc29sdmVXZWJTZWFyY2hDb25maWd9XG4gKiB3aGljaCBsYXllcnMgdGhhdCBjb25maWcgb3ZlciBlbnZpcm9ubWVudCBkZWZhdWx0cyBpbnRvIHRoZSBjb25jcmV0ZVxuICoge0BsaW5rIFJlc29sdmVkV2ViU2VhcmNoQ29uZmlnfSB0aGUgcnVudGltZSArIHRvb2xzIHJlYWQuXG4gKlxuICogYHdlYl9zZWFyY2hgIHJ1bnMgb24gdGhlIERhdGFicmlja3MgTW9kZWwgU2VydmluZyBuYXRpdmUgd2ViLXNlYXJjaCB0b29sXG4gKiAoc2VlIGBwcm92aWRlci50c2AgLyBgc2VhcmNoLnRzYCksIHNvIHRoZSBrZXkga25vYiBpcyB3aGljaCB3ZWItc2VhcmNoLVxuICogY2FwYWJsZSBtb2RlbCB0byB1c2UuIEl0IHJlc29sdmVzIGluZGVwZW5kZW50bHkgb2YgdGhlIGNhbGxpbmcgYWdlbnQncyBjaGF0XG4gKiBtb2RlbDogYG1vZGVsYCAoYSBuYW1lLCBsb29zZSBuYW1lLCBvciBjYXBhYmlsaXR5IGNsYXNzKSBpcyBmdXp6eS1tYXRjaGVkXG4gKiBhZ2FpbnN0IHRoZSB3b3Jrc3BhY2UgY2F0YWxvZ3VlLCBhbmQgd2hlbiBub3RoaW5nIGlzIHBpbm5lZCB0aGVcbiAqIHtAbGluayBXZWJTZWFyY2hQbHVnaW5Db25maWcubW9kZWxGYWxsYmFja3N9IG9yZGVyIChHZW1pbmksIHRoZW4gR1BULCB0aGVuIGFcbiAqIHJlcG8gZmxvb3IpIHBpY2tzIHRoZSBmaXJzdCB3ZWItc2VhcmNoLWNhcGFibGUgZW5kcG9pbnQgdGhhdCBleGlzdHMuXG4gKlxuICogV2hpY2ggZW5kcG9pbnQgaWQgaXMgdXNlZCBmb2xsb3dzIHRoZSBzdGFuZGFyZCBwcmVjZWRlbmNlIC0gZXhwbGljaXQgcGx1Z2luXG4gKiBjb25maWcsIHRoZW4gZW52aXJvbm1lbnQsIHRoZW4gYSBkZWZhdWx0IC0gd2l0aCB0d28gZW52aXJvbm1lbnQgc291cmNlczpcbiAqXG4gKiAgIDEuIGBtb2RlbGAgaW4gcGx1Z2luIGNvbmZpZztcbiAqICAgMi4gYFdFQl9TRUFSQ0hfTU9ERUxgLCB0aGUgZGVkaWNhdGVkIG92ZXJyaWRlLCBzbyBhIGRlcGxveW1lbnQgY2FuIHBvaW50XG4gKiAgICAgIHdlYiBzZWFyY2ggYXQgYSBkaWZmZXJlbnQgZW5kcG9pbnQgdGhhbiB0aGUgYWdlbnQncyBjaGF0IG1vZGVsO1xuICogICAzLiBgREFUQUJSSUNLU19TRVJWSU5HX0VORFBPSU5UX05BTUVgLCBBcHBLaXQncyBzdGFuZGFyZCBuYW1lIGZvciBhXG4gKiAgICAgIE1vZGVsIFNlcnZpbmcgYmluZGluZywgaG9ub3JlZCBzbyB0aGUgcmVzb3VyY2UgZGVjbGFyZWQgaW4gdGhlIG1hbmlmZXN0XG4gKiAgICAgIHdpcmVzIHRoaXMgcGx1Z2luIHVwIGxpa2UgYW55IG90aGVyLiBCZWNhdXNlIHRoYXQgYmluZGluZyBpcyBzaGFyZWRcbiAqICAgICAgd2l0aCB3aGF0ZXZlciBlbHNlIHRoZSBhcHAgc2VydmVzLCBpdCBpcyB0cmVhdGVkIGFzIGEgcHJlZmVyZW5jZTogYW5cbiAqICAgICAgZW5kcG9pbnQgdGhhdCBjYW5ub3QgcnVuIHRoZSBuYXRpdmUgd2ViLXNlYXJjaCB0b29sIGlzIHNraXBwZWQgaW5cbiAqICAgICAgZmF2b3Igb2Yge0BsaW5rIFdlYlNlYXJjaFBsdWdpbkNvbmZpZy5tb2RlbEZhbGxiYWNrc30gcmF0aGVyIHRoYW5cbiAqICAgICAgZmFpbGluZyB0aGUgY2FsbC4gQSBwaW4gZnJvbSAoMSkgb3IgKDIpIGlzIGV4cGxpY2l0IGFuZCBET0VTIGZhaWw7XG4gKiAgIDQuIG90aGVyd2lzZSB0aGUgZmFsbGJhY2sgb3JkZXIsIHJlc29sdmVkIGFnYWluc3QgdGhlIGxpdmUgY2F0YWxvZ3VlLlxuICpcbiAqIFdoaWNoIG1vZGVsIHdpbnMgaXMgZGVjaWRlZCBsYXppbHksIGF0IGNhbGwgdGltZSwgYWdhaW5zdCB0aGUgbGl2ZVxuICogY2F0YWxvZ3VlLiBSZXNvbHV0aW9uIGhlcmUgaXMgZWFnZXIgYWJvdXQgZXZlcnl0aGluZyBlbHNlIGFuZCBmYWlscyBsb3VkbHlcbiAqIG9uIGEgY29udHJhZGljdGlvbjogYW4gdW5wYXJzZWFibGUgYFdFQl9TRUFSQ0hfVE9PTFNgLCBhbiB1bmtub3duXG4gKiB7QGxpbmsgVXJsUG9saWN5TW9kZX0sIG9yIGEgVVJMIHBvbGljeSB0aGF0IGRpc2FncmVlcyB3aXRoIHRoZSBhbGxvdy1saXN0IGl0XG4gKiB3YXMgZ2l2ZW4uXG4gKlxuICogRW52IGZhbGxiYWNrczogYFdFQl9TRUFSQ0hfTU9ERUxgLCBgREFUQUJSSUNLU19TRVJWSU5HX0VORFBPSU5UX05BTUVgLFxuICogYFdFQl9TRUFSQ0hfTU9ERUxfRkFMTEJBQ0tTYCwgYFdFQl9TRUFSQ0hfVE9PTFNgIChKU09OKSxcbiAqIGBXRUJfU0VBUkNIX1VSTF9QT0xJQ1lgLCBgV0VCX1NFQVJDSF9BTExPV0VEX1VSTFNgLFxuICogYFdFQl9TRUFSQ0hfTUFYX0NJVEFUSU9OU2AsIGBXRUJfU0VBUkNIX0ZFVENIX01BWF9MRU5HVEhgLFxuICogYFdFQl9TRUFSQ0hfVElNRU9VVF9NU2AsIGBXRUJfU0VBUkNIX1NDUkFQRV9GQUxMQkFDS2AsIGBXRUJfU0VBUkNIX0ZVWlpZYCxcbiAqIGBXRUJfU0VBUkNIX0ZVWlpZX1RIUkVTSE9MRGAuXG4gKlxuICogQG1vZHVsZVxuICovXG5cbmltcG9ydCB7IENvbmZpZ3VyYXRpb25FcnJvciwgdHlwZSBCYXNlUGx1Z2luQ29uZmlnIH0gZnJvbSBcIkBkYXRhYnJpY2tzL2FwcGtpdFwiO1xuaW1wb3J0IHsgc2VydmluZyB9IGZyb20gXCJAZGJ4LXRvb2xzL21vZGVsXCI7XG5pbXBvcnQgeyBqc29uLCBvYmplY3QsIHR5cGUgT25lT3JNYW55LCBzdHJpbmcgfSBmcm9tIFwiQGRieC10b29scy9zaGFyZWQtY29yZVwiO1xuaW1wb3J0IHR5cGUgeyBKU09OU2NoZW1hNyB9IGZyb20gXCJqc29uLXNjaGVtYVwiO1xuaW1wb3J0IHsgcGFyc2VBbGxvd2VkVXJscywgdG9VcmxBbGxvd0xpc3QsIHR5cGUgVXJsQWxsb3dMaXN0IH0gZnJvbSBcIi4vYWxsb3dsaXN0XCI7XG5cbi8qKlxuICogQSBVUkwtcGF0dGVybiBnYXRlIGZvciBwZXItdG9vbCBhcHByb3ZhbC4gYHRydWVgIGdhdGVzIGV2ZXJ5IGNhbGw7IGFcbiAqIHBhdHRlcm4gKG9yIGxpc3Qgb2YgcGF0dGVybnMsIGluIHRoZSB7QGxpbmsgT25lT3JNYW55fSBzaGFwZSB1c2VkIGFjcm9zc1xuICogdGhlIHJlcG8pIGdhdGVzIG9ubHkgY2FsbHMgd2hvc2UgVVJMIG1hdGNoZXMuIFBhdHRlcm5zIHVzZSB0aGUgc2FtZSBnbG9iXG4gKiBzeW50YXggYXMgdGhlIGFsbG93LWxpc3QgKHNlZSBgYWxsb3dsaXN0LnRzYCkuIE9taXQgLyBgZmFsc2VgIGZvciBub1xuICogYXBwcm92YWwuIE5vcm1hbGl6ZWQgdG8gYW4ge0BsaW5rIEFwcHJvdmFsUG9saWN5fSBiZWZvcmUgdXNlLlxuICovXG5leHBvcnQgdHlwZSBBcHByb3ZhbEdhdGUgPSBib29sZWFuIHwgT25lT3JNYW55PHN0cmluZz4gfCBzdHJpbmc7XG5cbi8qKlxuICogVGhlIG5vcm1hbGl6ZWQgZm9ybSBvZiBhbiB7QGxpbmsgQXBwcm92YWxHYXRlfTogd2hpY2ggY2FsbHMgcGF1c2UgZm9yIGFcbiAqIGh1bWFuLiBgXCJub25lXCJgIHJ1bnMgZXZlcnkgY2FsbCBzdHJhaWdodCB0aHJvdWdoLCBgXCJhbHdheXNcImAgZ2F0ZXMgYWxsIG9mXG4gKiB0aGVtLCBhbmQgYFwidXJsc1wiYCBnYXRlcyBvbmx5IGNhbGxzIHdob3NlIFVSTCBtYXRjaGVzIG9uZSBvZiBgcGF0dGVybnNgLlxuICovXG5leHBvcnQgdHlwZSBBcHByb3ZhbFBvbGljeSA9XG4gIHwgeyByZWFkb25seSBtb2RlOiBcIm5vbmVcIiB9XG4gIHwgeyByZWFkb25seSBtb2RlOiBcImFsd2F5c1wiIH1cbiAgfCB7IHJlYWRvbmx5IG1vZGU6IFwidXJsc1wiOyByZWFkb25seSBwYXR0ZXJuczogcmVhZG9ubHkgc3RyaW5nW10gfTtcblxuLyoqXG4gKiBXaGljaCBVUkxzIHRoZSB0b29scyBtYXkgcmVhY2guIGBcImFsbG93bGlzdFwiYCBwZXJtaXRzIG9ubHkgdGhlIGNvbmZpZ3VyZWRcbiAqIGVudHJpZXM7IGBcInVucmVzdHJpY3RlZFwiYCBuYW1lcyB0aGUgcGVybWlzc2l2ZSBtb2RlIGV4cGxpY2l0bHksIHNvIGFuXG4gKiB1bnJlc3RyaWN0ZWQgZGVwbG95bWVudCBpcyBhIHN0YXRlZCBjaG9pY2UgdmlzaWJsZSBpbiB0aGUgYm9vdCBsb2cgcmF0aGVyXG4gKiB0aGFuIGFuIGVtcHR5IGxpc3Qgbm9ib2R5IG5vdGljZWQuXG4gKi9cbmV4cG9ydCB0eXBlIFVybFBvbGljeU1vZGUgPSBcInVucmVzdHJpY3RlZFwiIHwgXCJhbGxvd2xpc3RcIjtcblxuLyoqIERlZGljYXRlZCBvdmVycmlkZSBmb3IgdGhlIHdlYi1zZWFyY2ggZW5kcG9pbnQgaWQuICovXG5leHBvcnQgY29uc3QgTU9ERUxfRU5WID0gXCJXRUJfU0VBUkNIX01PREVMXCI7XG5cbi8qKiBBcHBLaXQncyBzdGFuZGFyZCBlbnZpcm9ubWVudCBuYW1lIGZvciBhIE1vZGVsIFNlcnZpbmcgZW5kcG9pbnQgYmluZGluZy4gKi9cbmV4cG9ydCBjb25zdCBTRVJWSU5HX0VORFBPSU5UX0VOViA9IFwiREFUQUJSSUNLU19TRVJWSU5HX0VORFBPSU5UX05BTUVcIjtcblxuLyoqIFdoZXJlIHRoZSBwaW5uZWQgd2ViLXNlYXJjaCBlbmRwb2ludCBpZCBjYW1lIGZyb20sIG9yIGBcIm5vbmVcImAgd2hlbiB1bnBpbm5lZC4gKi9cbmV4cG9ydCB0eXBlIE1vZGVsU291cmNlID0gXCJjb25maWdcIiB8IHR5cGVvZiBNT0RFTF9FTlYgfCB0eXBlb2YgU0VSVklOR19FTkRQT0lOVF9FTlYgfCBcIm5vbmVcIjtcblxuLyoqXG4gKiBEZWZhdWx0IHdlYi1zZWFyY2ggbW9kZWwgcHJlZmVyZW5jZSwgdHJpZWQgaW4gb3JkZXIgd2hlbiBubyBtb2RlbCBpc1xuICogcGlubmVkLiBHZW1pbmkgZmlyc3QsIHRoZW4gR1BUIC0gYm90aCBzdXBwb3J0IHRoZSBuYXRpdmUgd2ViLXNlYXJjaCB0b29sO1xuICogYSB3b3Jrc3BhY2UgdHlwaWNhbGx5IGhhcyBhdCBsZWFzdCBvbmUuIEVhY2ggaXMgZnV6enktbWF0Y2hlZCBhZ2FpbnN0IHRoZVxuICogbGl2ZSBjYXRhbG9ndWUsIHNvIGEgY2xvc2UgdmFyaWFudCAoZS5nLiBgZGF0YWJyaWNrcy1nZW1pbmktMy0xLXByb2ApIGlzXG4gKiBwaWNrZWQgd2hlbiB0aGUgZXhhY3QgaWQgaXNuJ3QgcHJlc2VudC5cbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfTU9ERUxfRkFMTEJBQ0tTOiByZWFkb25seSBzdHJpbmdbXSA9IFtcbiAgXCJkYXRhYnJpY2tzLWdlbWluaS0zLXByb1wiLFxuICBcImRhdGFicmlja3MtZ2VtaW5pLTItNS1wcm9cIixcbiAgXCJkYXRhYnJpY2tzLWdwdC01XCIsXG4gIFwiZGF0YWJyaWNrcy1ncHQtNS1taW5pXCIsXG5dO1xuXG4vKiogRGVmYXVsdCBjYXAgb24gdGhlIG51bWJlciBvZiBjaXRhdGlvbnMgcmV0dXJuZWQgZnJvbSBhIHNpbmdsZSBzZWFyY2guICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9NQVhfQ0lUQVRJT05TID0gMTA7XG5cbi8qKiBEZWZhdWx0IGNhcCBvbiBjaGFyYWN0ZXJzIHJldHVybmVkIGZyb20gYSBzaW5nbGUgYHdlYl9mZXRjaGAuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9GRVRDSF9NQVhfTEVOR1RIID0gNTBfMDAwO1xuXG4vKiogRGVmYXVsdCBwZXItcmVxdWVzdCBuZXR3b3JrIHRpbWVvdXQgKG1zKSBmb3Igc2VhcmNoICsgZmV0Y2guICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9USU1FT1VUX01TID0gMzBfMDAwO1xuXG4vKiogQXBwS2l0IGNvbmZpZyBhY2NlcHRlZCBieSB0aGUgd2ViLXNlYXJjaCBwbHVnaW4uICovXG5leHBvcnQgaW50ZXJmYWNlIFdlYlNlYXJjaFBsdWdpbkNvbmZpZyBleHRlbmRzIEJhc2VQbHVnaW5Db25maWcge1xuICAvKipcbiAgICogVGhlIHdlYi1zZWFyY2ggbW9kZWwgdG8gdXNlIGJ5IGRlZmF1bHQ6IGEgRGF0YWJyaWNrcyBzZXJ2aW5nIGVuZHBvaW50XG4gICAqIG5hbWUgKGBcImRhdGFicmlja3MtZ2VtaW5pLTMtcHJvXCJgKSwgYSBsb29zZSBuYW1lIChgXCJnZW1pbmlcImAsIGBcImdwdFwiYCksXG4gICAqIG9yIGEgY2FwYWJpbGl0eSBjbGFzcy4gRnV6enktbWF0Y2hlZCBhZ2FpbnN0IHRoZSBsaXZlIGNhdGFsb2d1ZS4gRmFsbHNcbiAgICogYmFjayB0byBgV0VCX1NFQVJDSF9NT0RFTGAsIHRoZW4gYERBVEFCUklDS1NfU0VSVklOR19FTkRQT0lOVF9OQU1FYCwgdGhlblxuICAgKiB0aGUge0BsaW5rIG1vZGVsRmFsbGJhY2tzfSBvcmRlci4gQ2hvc2VuIGluZGVwZW5kZW50bHkgb2YgdGhlIGNhbGxpbmdcbiAgICogYWdlbnQncyBjaGF0IG1vZGVsLlxuICAgKi9cbiAgbW9kZWw/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBQcmlvcml0eS1vcmRlcmVkIHdlYi1zZWFyY2ggbW9kZWwgY2FuZGlkYXRlcyB0cmllZCB3aGVuIHtAbGluayBtb2RlbH0gaXNcbiAgICogdW5zZXQsIGVhY2ggZnV6enktbWF0Y2hlZCBhbmQgY2hlY2tlZCBmb3Igd2ViLXNlYXJjaCBzdXBwb3J0LiBGYWxscyBiYWNrXG4gICAqIHRvIGBXRUJfU0VBUkNIX01PREVMX0ZBTExCQUNLU2AgKGNvbW1hL3NwYWNlLXNlcGFyYXRlZCksIHRoZW5cbiAgICoge0BsaW5rIERFRkFVTFRfTU9ERUxfRkFMTEJBQ0tTfSAoR2VtaW5pLCB0aGVuIEdQVCkuXG4gICAqL1xuICBtb2RlbEZhbGxiYWNrcz86IHN0cmluZyB8IHN0cmluZ1tdO1xuICAvKipcbiAgICogUHJvdmlkZXIgLT4gdG9vbC1zcGVjIG92ZXJyaWRlIG1hcCwgbWVyZ2VkIG92ZXIgdGhlIGJ1aWx0LWluXG4gICAqIHtAbGluayBXRUJfU0VBUkNIX1BST1ZJREVSU30gZGVmYXVsdHMuIEtleWVkIGJ5IHByb3ZpZGVyIGZhbWlseVxuICAgKiAoYFwib3BlbmFpXCJgLCBgXCJnZW1pbmlcImApOyBlYWNoIHZhbHVlIG1heSBvdmVycmlkZSB0aGUgYHRvb2xgIGVudHJ5XG4gICAqIGFuZC9vciB0aGUgYGFwaWAgc3VyZmFjZS4gVXNlIHRvIGNoYW5nZSB0aGUgdG9vbCBzaGFwZSBhcyB0aGUgcGxhdGZvcm1cbiAgICogZXZvbHZlcyB3aXRob3V0IGEgY29kZSBjaGFuZ2UuIEZhbGxzIGJhY2sgdG8gYFdFQl9TRUFSQ0hfVE9PTFNgIHBhcnNlZCBhc1xuICAgKiBKU09OLiBUaGlzIGlzIHRoZSBgV0VCX1NFQVJDSF9UT09MU2Agc2V0dGluZy5cbiAgICovXG4gIHdlYlNlYXJjaFRvb2xzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIC8qKlxuICAgKiBFbmFibGUgZnV6enkgbWF0Y2hpbmcgb2YgbG9vc2UgbW9kZWwgbmFtZXMgYWdhaW5zdCB0aGUgY2F0YWxvZ3VlLlxuICAgKiBEZWZhdWx0cyB0byBgdHJ1ZWA7IGZhbGxzIGJhY2sgdG8gYFdFQl9TRUFSQ0hfRlVaWllgLlxuICAgKi9cbiAgbW9kZWxGdXp6eU1hdGNoPzogYm9vbGVhbjtcbiAgLyoqIEZ1c2UuanMgZnV6enkgdGhyZXNob2xkLiBGYWxscyBiYWNrIHRvIGBXRUJfU0VBUkNIX0ZVWlpZX1RIUkVTSE9MRGAsIHRoZW4gdGhlIHNoYXJlZCBkZWZhdWx0LiAqL1xuICBtb2RlbEZ1enp5VGhyZXNob2xkPzogbnVtYmVyO1xuICAvKipcbiAgICogSGFyZCBjYXAgb24gdGhlIG51bWJlciBvZiBjaXRhdGlvbnMgYSBzaW5nbGUgc2VhcmNoIHJldHVybnMuIEZhbGxzIGJhY2tcbiAgICogdG8gYFdFQl9TRUFSQ0hfTUFYX0NJVEFUSU9OU2AsIHRoZW4ge0BsaW5rIERFRkFVTFRfTUFYX0NJVEFUSU9OU30uXG4gICAqL1xuICBtYXhDaXRhdGlvbnM/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBIYXJkIGNhcCBvbiB0aGUgY2hhcmFjdGVyIGxlbmd0aCBvZiBhIHNpbmdsZSBgd2ViX2ZldGNoYCByZXN1bHQuIEZhbGxzXG4gICAqIGJhY2sgdG8gYFdFQl9TRUFSQ0hfRkVUQ0hfTUFYX0xFTkdUSGAsIHRoZW4ge0BsaW5rIERFRkFVTFRfRkVUQ0hfTUFYX0xFTkdUSH0uXG4gICAqL1xuICBmZXRjaE1heExlbmd0aD86IG51bWJlcjtcbiAgLyoqXG4gICAqIFBlci1yZXF1ZXN0IG5ldHdvcmsgdGltZW91dCBpbiBtcyBmb3Igc2VhcmNoICsgZmV0Y2guIEZhbGxzIGJhY2sgdG9cbiAgICogYFdFQl9TRUFSQ0hfVElNRU9VVF9NU2AsIHRoZW4ge0BsaW5rIERFRkFVTFRfVElNRU9VVF9NU30uXG4gICAqL1xuICB0aW1lb3V0TXM/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBGYWxsIGJhY2sgdG8gYSBEdWNrRHVja0dvIHNjcmFwZSB3aGVuIHRoZSB3b3Jrc3BhY2UgaGFzIE5PIGRlcGxveWVkXG4gICAqIHdlYi1zZWFyY2gtY2FwYWJsZSBtb2RlbCAobm8gR1BUIC8gR2VtaW5pIHNlcnZpbmcgZW5kcG9pbnQpLiBUaGUgbmF0aXZlXG4gICAqIERhdGFicmlja3MgdG9vbCBpcyBhbHdheXMgcHJlZmVycmVkOyB0aGlzIG9ubHkga2lja3MgaW4gd2hlbiB0aGVyZSBpcyBub1xuICAgKiBuYXRpdmUgb3B0aW9uLCBzbyB0aGUgdG9vbCBzdGlsbCByZXR1cm5zIHJlc3VsdHMgaW5zdGVhZCBvZiBlcnJvcmluZy5cbiAgICogRGVmYXVsdHMgdG8gYHRydWVgOyBzZXQgYGZhbHNlYCAob3IgYFdFQl9TRUFSQ0hfU0NSQVBFX0ZBTExCQUNLPTBgKSB0b1xuICAgKiByZXF1aXJlIGEgbmF0aXZlIG1vZGVsIGFuZCBlcnJvciBvdGhlcndpc2UuXG4gICAqL1xuICBzY3JhcGVGYWxsYmFjaz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBXaGljaCBVUkxzIHRoZSB0b29scyBtYXkgcmVhY2ggKHtAbGluayBVcmxQb2xpY3lNb2RlfSkuIEZhbGxzIGJhY2sgdG9cbiAgICogYFdFQl9TRUFSQ0hfVVJMX1BPTElDWWAsIHRoZW4gdG8gYFwiYWxsb3dsaXN0XCJgIHdoZW4ge0BsaW5rIGFsbG93ZWRVcmxzfVxuICAgKiBoYXMgZW50cmllcyBhbmQgYFwidW5yZXN0cmljdGVkXCJgIHdoZW4gaXQgZG9lcyBub3QuIE5hbWluZyB0aGUgbW9kZVxuICAgKiBleHBsaWNpdGx5IGlzIHRoZSB3YXkgdG8gc3RhdGUgdGhhdCBhbiBvcGVuIGRlcGxveW1lbnQgaXMgaW50ZW5kZWQ7XG4gICAqIGBcImFsbG93bGlzdFwiYCB3aXRoIG5vIGVudHJpZXMsIG9yIGBcInVucmVzdHJpY3RlZFwiYCBhbG9uZ3NpZGUgZW50cmllcywgaXNcbiAgICogYSBjb250cmFkaWN0aW9uIGFuZCBmYWlscyBhdCByZXNvbHV0aW9uLlxuICAgKi9cbiAgdXJsUG9saWN5PzogVXJsUG9saWN5TW9kZTtcbiAgLyoqXG4gICAqIE9wdGlvbmFsIFVSTCBhbGxvdy1saXN0LiBFYWNoIGVudHJ5IGlzIGEgZ2xvYiAob3IgYmFyZSBob3N0KSB0ZXN0ZWRcbiAgICogYWdhaW5zdCBhIFVSTCdzIGZ1bGwgYGhyZWZgLiBXaGVuIHNldCwgYHdlYl9zZWFyY2hgIHNpbGVudGx5IGZpbHRlcnNcbiAgICogY2l0YXRpb25zIHRvIHRoZSBwZXJtaXR0ZWQgc2V0IGFuZCBgd2ViX2ZldGNoYCByZWZ1c2VzIGEgZGlzYWxsb3dlZCBVUkwuXG4gICAqIEFjY2VwdHMgYSBgc3RyaW5nW11gIG9yIGEgY29tbWEtL3doaXRlc3BhY2Utc2VwYXJhdGVkIHN0cmluZzsgZmFsbHMgYmFja1xuICAgKiB0byBgV0VCX1NFQVJDSF9BTExPV0VEX1VSTFNgLiBPbWl0IChvciBsZWF2ZSBlbXB0eSkgZm9yIG5vIHJlc3RyaWN0aW9uLlxuICAgKiBTZWUgYGFsbG93bGlzdC50c2AuXG4gICAqL1xuICBhbGxvd2VkVXJscz86IHN0cmluZyB8IHN0cmluZ1tdO1xuICAvKipcbiAgICogQXBwcm92YWwgZ2F0ZSBhcHBsaWVkIHRvIEJPVEggdG9vbHMgKHBlci10b29sIG92ZXJyaWRlcyB2aWFcbiAgICoge0BsaW5rIFdlYlNlYXJjaFRvb2xPcHRpb25zLmFwcHJvdmFsfSB3aW4pLiBgdHJ1ZWAgZ2F0ZXMgZXZlcnkgY2FsbDtcbiAgICogYSBVUkwtcGF0dGVybiAob3IgbGlzdCkgZ2F0ZXMgb25seSBtYXRjaGluZyBjYWxsczsgYW5cbiAgICoge0BsaW5rIEFwcHJvdmFsUG9saWN5fSBzdGF0ZXMgdGhlIG1vZGUgZGlyZWN0bHkuIE9taXQgZm9yIG5vIGFwcHJvdmFsLlxuICAgKi9cbiAgYXBwcm92YWw/OiBBcHByb3ZhbEdhdGUgfCBBcHByb3ZhbFBvbGljeTtcbn1cblxuLyoqIENvbmNyZXRlLCB2YWxpZGF0ZWQgY29uZmlnIHRoZSBydW50aW1lICsgdG9vbHMgcmVhZC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVzb2x2ZWRXZWJTZWFyY2hDb25maWcge1xuICAvKiogUGlubmVkIHdlYi1zZWFyY2ggbW9kZWwsIHdoZW4gY29uZmlndXJlZCAoZWxzZSB1bmRlZmluZWQgLSB1c2UgZmFsbGJhY2tzKS4gKi9cbiAgbW9kZWw/OiBzdHJpbmc7XG4gIC8qKiBXaGVyZSB7QGxpbmsgbW9kZWx9IGNhbWUgZnJvbSwgd2hpY2ggZGVjaWRlcyB3aGV0aGVyIGFuIHVuc3VwcG9ydGVkIHBpbiBpcyBmYXRhbC4gKi9cbiAgbW9kZWxTb3VyY2U6IE1vZGVsU291cmNlO1xuICAvKiogT3JkZXJlZCBmYWxsYmFjayBtb2RlbCBjYW5kaWRhdGVzIChHZW1pbmksIHRoZW4gR1BULCB0aGVuIGEgZmxvb3IpLiAqL1xuICBtb2RlbEZhbGxiYWNrczogcmVhZG9ubHkgc3RyaW5nW107XG4gIC8qKiBQcm92aWRlciAtPiB0b29sLXNwZWMgb3ZlcnJpZGUgbWFwLCBtZXJnZWQgb3ZlciB0aGUgYnVpbHQtaW4gZGVmYXVsdHMuICovXG4gIHdlYlNlYXJjaFRvb2xzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgLyoqIFdoZXRoZXIgdG8gZnV6enktbWF0Y2ggbG9vc2UgbW9kZWwgbmFtZXMuICovXG4gIGZ1enp5OiBib29sZWFuO1xuICAvKiogRnVzZS5qcyBmdXp6eSB0aHJlc2hvbGQuICovXG4gIGZ1enp5VGhyZXNob2xkOiBudW1iZXI7XG4gIG1heENpdGF0aW9uczogbnVtYmVyO1xuICBmZXRjaE1heExlbmd0aDogbnVtYmVyO1xuICB0aW1lb3V0TXM6IG51bWJlcjtcbiAgLyoqIFdoZXRoZXIgdG8gc2NyYXBlLWZhbGxiYWNrIHdoZW4gbm8gbmF0aXZlIHdlYi1zZWFyY2ggbW9kZWwgaXMgZGVwbG95ZWQuICovXG4gIHNjcmFwZUZhbGxiYWNrOiBib29sZWFuO1xuICAvKiogVGhlIG5hbWVkIFVSTCBwb2xpY3kgaW4gZm9yY2UuICovXG4gIHVybFBvbGljeTogVXJsUG9saWN5TW9kZTtcbiAgLyoqIENvbXBpbGVkIGFsbG93LWxpc3QgKHBlcm1pdC1hbGwgdW5kZXIgdGhlIGB1bnJlc3RyaWN0ZWRgIHBvbGljeSkuICovXG4gIGFsbG93TGlzdDogVXJsQWxsb3dMaXN0O1xuICAvKiogRGVmYXVsdCBwZXItdG9vbCBhcHByb3ZhbCBwb2xpY3kuICovXG4gIGFwcHJvdmFsOiBBcHByb3ZhbFBvbGljeTtcbn1cblxuLyoqIEpTT04gU2NoZW1hIHB1Ymxpc2hlZCBvbiB0aGUgbWFuaWZlc3QncyBgY29uZmlnLnNjaGVtYWAuICovXG5leHBvcnQgY29uc3QgV0VCX1NFQVJDSF9DT05GSUdfU0NIRU1BOiBKU09OU2NoZW1hNyA9IHtcbiAgdHlwZTogXCJvYmplY3RcIixcbiAgcHJvcGVydGllczoge1xuICAgIG1vZGVsOiB7XG4gICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIFwiRGVmYXVsdCB3ZWItc2VhcmNoIG1vZGVsIChlbmRwb2ludCBuYW1lLCBsb29zZSBuYW1lLCBvciBjbGFzcykuIEZ1enp5LW1hdGNoZWQuIEVudjogV0VCX1NFQVJDSF9NT0RFTCwgdGhlbiBEQVRBQlJJQ0tTX1NFUlZJTkdfRU5EUE9JTlRfTkFNRS5cIixcbiAgICB9LFxuICAgIG1vZGVsRmFsbGJhY2tzOiB7XG4gICAgICB0eXBlOiBcImFycmF5XCIsXG4gICAgICBpdGVtczogeyB0eXBlOiBcInN0cmluZ1wiIH0sXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgXCJPcmRlcmVkIHdlYi1zZWFyY2ggbW9kZWwgY2FuZGlkYXRlcyB3aGVuIGBtb2RlbGAgaXMgdW5zZXQgKEdlbWluaSwgdGhlbiBHUFQpLiBFbnY6IFdFQl9TRUFSQ0hfTU9ERUxfRkFMTEJBQ0tTLlwiLFxuICAgIH0sXG4gICAgd2ViU2VhcmNoVG9vbHM6IHtcbiAgICAgIHR5cGU6IFwib2JqZWN0XCIsXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgJ1Byb3ZpZGVyIC0+IHRvb2wtc3BlYyBvdmVycmlkZSBtYXAgbWVyZ2VkIG92ZXIgdGhlIGJ1aWx0LWluIGRlZmF1bHRzIChvcGVuYWkgLT4ge1widHlwZVwiOlwid2ViX3NlYXJjaFwifSwgZ2VtaW5pIC0+IHtcImdvb2dsZV9zZWFyY2hcIjp7fX0pLiBFbnY6IFdFQl9TRUFSQ0hfVE9PTFMgKEpTT04pLicsXG4gICAgfSxcbiAgICBtb2RlbEZ1enp5TWF0Y2g6IHtcbiAgICAgIHR5cGU6IFwiYm9vbGVhblwiLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIFwiRnV6enktbWF0Y2ggbG9vc2UgbW9kZWwgbmFtZXMgYWdhaW5zdCB0aGUgbGl2ZSBjYXRhbG9ndWUuIERlZmF1bHQgdHJ1ZSAoZW52OiBXRUJfU0VBUkNIX0ZVWlpZKS5cIixcbiAgICB9LFxuICAgIG1vZGVsRnV6enlUaHJlc2hvbGQ6IHtcbiAgICAgIHR5cGU6IFwibnVtYmVyXCIsXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgXCJGdXNlLmpzIHNjb3JlIHRocmVzaG9sZCBiZWxvdyB3aGljaCBhIGZ1enp5IG1vZGVsIG1hdGNoIGlzIGFjY2VwdGVkIChlbnY6IFdFQl9TRUFSQ0hfRlVaWllfVEhSRVNIT0xEKS5cIixcbiAgICB9LFxuICAgIG1heENpdGF0aW9uczoge1xuICAgICAgdHlwZTogXCJudW1iZXJcIixcbiAgICAgIGRlc2NyaXB0aW9uOiBcIkhhcmQgY2FwIG9uIGNpdGF0aW9ucyByZXR1cm5lZCAoZW52OiBXRUJfU0VBUkNIX01BWF9DSVRBVElPTlMpLlwiLFxuICAgIH0sXG4gICAgZmV0Y2hNYXhMZW5ndGg6IHtcbiAgICAgIHR5cGU6IFwibnVtYmVyXCIsXG4gICAgICBkZXNjcmlwdGlvbjogXCJIYXJkIGNhcCBvbiB3ZWJfZmV0Y2ggY29udGVudCBsZW5ndGggKGVudjogV0VCX1NFQVJDSF9GRVRDSF9NQVhfTEVOR1RIKS5cIixcbiAgICB9LFxuICAgIHRpbWVvdXRNczoge1xuICAgICAgdHlwZTogXCJudW1iZXJcIixcbiAgICAgIGRlc2NyaXB0aW9uOiBcIlBlci1yZXF1ZXN0IG5ldHdvcmsgdGltZW91dCBpbiBtcyAoZW52OiBXRUJfU0VBUkNIX1RJTUVPVVRfTVMpLlwiLFxuICAgIH0sXG4gICAgc2NyYXBlRmFsbGJhY2s6IHtcbiAgICAgIHR5cGU6IFwiYm9vbGVhblwiLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIFwiRmFsbCBiYWNrIHRvIGEgRHVja0R1Y2tHbyBzY3JhcGUgd2hlbiBubyB3ZWItc2VhcmNoLWNhcGFibGUgbW9kZWwgaXMgZGVwbG95ZWQuIERlZmF1bHQgdHJ1ZSAoZW52OiBXRUJfU0VBUkNIX1NDUkFQRV9GQUxMQkFDSykuXCIsXG4gICAgfSxcbiAgICB1cmxQb2xpY3k6IHtcbiAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICBlbnVtOiBbXCJ1bnJlc3RyaWN0ZWRcIiwgXCJhbGxvd2xpc3RcIl0sXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgXCJXaGljaCBVUkxzIHRoZSB0b29scyBtYXkgcmVhY2guIERlZmF1bHRzIHRvIGFsbG93bGlzdCB3aGVuIGFsbG93ZWRVcmxzIGhhcyBlbnRyaWVzLCBlbHNlIHVucmVzdHJpY3RlZCAoZW52OiBXRUJfU0VBUkNIX1VSTF9QT0xJQ1kpLlwiLFxuICAgIH0sXG4gICAgYWxsb3dlZFVybHM6IHtcbiAgICAgIHR5cGU6IFwiYXJyYXlcIixcbiAgICAgIGl0ZW1zOiB7IHR5cGU6IFwic3RyaW5nXCIgfSxcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAnVVJMIGFsbG93LWxpc3Qgb2YgZ2xvYnMgLyBiYXJlIGhvc3RzIChlLmcuIFwiKi5kYXRhYnJpY2tzLmNvbVwiLCBcImRvY3MuZXhhbXBsZS5jb21cIikuIEFsc28gYWNjZXB0cyBhIGNvbW1hL3NwYWNlLXNlcGFyYXRlZCBzdHJpbmcuIEZhbGxzIGJhY2sgdG8gV0VCX1NFQVJDSF9BTExPV0VEX1VSTFMuIEVtcHR5ID0gdW5yZXN0cmljdGVkLicsXG4gICAgfSxcbiAgICBhcHByb3ZhbDoge1xuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICdBcHByb3ZhbCBnYXRlIGZvciBib3RoIHRvb2xzOiB0cnVlIGdhdGVzIGV2ZXJ5IGNhbGwsIGEgZ2xvYiAob3IgbGlzdCBvZiBnbG9icykgZ2F0ZXMgb25seSBtYXRjaGluZyBVUkxzLCBvciBzdGF0ZSB0aGUgbW9kZSBkaXJlY3RseSBhcyB7XCJtb2RlXCI6XCJub25lXCJ8XCJhbHdheXNcInxcInVybHNcIn0uIERlZmF1bHQgbm9uZS4nLFxuICAgICAgb25lT2Y6IFtcbiAgICAgICAgeyB0eXBlOiBcImJvb2xlYW5cIiB9LFxuICAgICAgICB7IHR5cGU6IFwic3RyaW5nXCIgfSxcbiAgICAgICAgeyB0eXBlOiBcImFycmF5XCIsIGl0ZW1zOiB7IHR5cGU6IFwic3RyaW5nXCIgfSB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJvYmplY3RcIixcbiAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICBtb2RlOiB7IHR5cGU6IFwic3RyaW5nXCIsIGVudW06IFtcIm5vbmVcIiwgXCJhbHdheXNcIiwgXCJ1cmxzXCJdIH0sXG4gICAgICAgICAgICBwYXR0ZXJuczogeyB0eXBlOiBcImFycmF5XCIsIGl0ZW1zOiB7IHR5cGU6IFwic3RyaW5nXCIgfSB9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAgcmVxdWlyZWQ6IFtcIm1vZGVcIl0sXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0sXG4gIH0sXG59O1xuXG4vKiogUGFyc2UgYSBwb3NpdGl2ZSBpbnRlZ2VyIGVudi9jb25maWcgdmFsdWUsIGVsc2UgdGhlIGZhbGxiYWNrLiAqL1xuZnVuY3Rpb24gcmVzb2x2ZVBvc2l0aXZlSW50KHZhbHVlOiBudW1iZXIgfCB1bmRlZmluZWQsIGVudktleTogc3RyaW5nLCBmYWxsYmFjazogbnVtYmVyKTogbnVtYmVyIHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJudW1iZXJcIiAmJiBOdW1iZXIuaXNGaW5pdGUodmFsdWUpICYmIHZhbHVlID4gMCkgcmV0dXJuIE1hdGguZmxvb3IodmFsdWUpO1xuICBjb25zdCBlbnYgPSBOdW1iZXIocHJvY2Vzcy5lbnZbZW52S2V5XSk7XG4gIHJldHVybiBOdW1iZXIuaXNGaW5pdGUoZW52KSAmJiBlbnYgPiAwID8gTWF0aC5mbG9vcihlbnYpIDogZmFsbGJhY2s7XG59XG5cbi8qKlxuICogUGFyc2UgdGhlIGBXRUJfU0VBUkNIX1RPT0xTYCBlbnYgdmFyIChKU09OIG9iamVjdCksIGVsc2UgYHt9YC4gQSB2YWx1ZSB0aGF0XG4gKiBpcyBzZXQgYnV0IG5vdCBhIEpTT04gb2JqZWN0IGlzIGEgZGVwbG95bWVudCBtaXN0YWtlIHRoYXQgd291bGQgb3RoZXJ3aXNlXG4gKiBzaWxlbnRseSBsZWF2ZSB0aGUgYnVpbHQtaW4gdG9vbCBzcGVjcyBpbiBwbGFjZSwgc28gaXQgdGhyb3dzLlxuICovXG5mdW5jdGlvbiBwYXJzZVRvb2xzRW52KCk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcbiAgY29uc3QgcmF3ID0gc3RyaW5nLnRyaW1Ub051bGwocHJvY2Vzcy5lbnYuV0VCX1NFQVJDSF9UT09MUyk7XG4gIGlmIChyYXcgPT09IG51bGwpIHJldHVybiB7fTtcbiAgY29uc3QgcGFyc2VkID0ganNvbi5wYXJzZVJlY29yZChyYXcpO1xuICBpZiAoIXBhcnNlZCkge1xuICAgIHRocm93IG5ldyBDb25maWd1cmF0aW9uRXJyb3IoXG4gICAgICBcIldFQl9TRUFSQ0hfVE9PTFMgbXVzdCBiZSBhIEpTT04gb2JqZWN0IG1hcHBpbmcgYSBwcm92aWRlciBmYW1pbHkgdG8gaXRzIHRvb2wgc3BlY1wiLFxuICAgICAgeyBjb250ZXh0OiB7IGVudlZhcjogXCJXRUJfU0VBUkNIX1RPT0xTXCIgfSB9LFxuICAgICk7XG4gIH1cbiAgcmV0dXJuIHBhcnNlZDtcbn1cblxuLyoqIFJlYWQgdGhlIHBpbm5lZCBlbmRwb2ludCBpZCBhbmQgcmVjb3JkIHdoaWNoIHNvdXJjZSBzdXBwbGllZCBpdC4gKi9cbmZ1bmN0aW9uIHJlc29sdmVNb2RlbFBpbihjb25maWc6IFdlYlNlYXJjaFBsdWdpbkNvbmZpZyk6IHsgbW9kZWw/OiBzdHJpbmc7IHNvdXJjZTogTW9kZWxTb3VyY2UgfSB7XG4gIGNvbnN0IGZyb21Db25maWcgPSBzdHJpbmcudHJpbVRvTnVsbChjb25maWcubW9kZWwpO1xuICBpZiAoZnJvbUNvbmZpZyAhPT0gbnVsbCkgcmV0dXJuIHsgbW9kZWw6IGZyb21Db25maWcsIHNvdXJjZTogXCJjb25maWdcIiB9O1xuICBjb25zdCBmcm9tTW9kZWxFbnYgPSBzdHJpbmcudHJpbVRvTnVsbChwcm9jZXNzLmVudltNT0RFTF9FTlZdKTtcbiAgaWYgKGZyb21Nb2RlbEVudiAhPT0gbnVsbCkgcmV0dXJuIHsgbW9kZWw6IGZyb21Nb2RlbEVudiwgc291cmNlOiBNT0RFTF9FTlYgfTtcbiAgY29uc3QgZnJvbVJlc291cmNlRW52ID0gc3RyaW5nLnRyaW1Ub051bGwocHJvY2Vzcy5lbnZbU0VSVklOR19FTkRQT0lOVF9FTlZdKTtcbiAgaWYgKGZyb21SZXNvdXJjZUVudiAhPT0gbnVsbCkgcmV0dXJuIHsgbW9kZWw6IGZyb21SZXNvdXJjZUVudiwgc291cmNlOiBTRVJWSU5HX0VORFBPSU5UX0VOViB9O1xuICByZXR1cm4geyBzb3VyY2U6IFwibm9uZVwiIH07XG59XG5cbi8qKlxuICogUmVzb2x2ZSB0aGUgbmFtZWQge0BsaW5rIFVybFBvbGljeU1vZGV9LCBmYWlsaW5nIG9uIGEgc3RhdGVkIG1vZGUgdGhhdFxuICogY29udHJhZGljdHMgdGhlIGFsbG93LWxpc3QgZW50cmllcyBpdCB3YXMgZ2l2ZW4uXG4gKi9cbmZ1bmN0aW9uIHJlc29sdmVVcmxQb2xpY3koXG4gIGNvbmZpZ3VyZWQ6IFVybFBvbGljeU1vZGUgfCB1bmRlZmluZWQsXG4gIHBhdHRlcm5zOiByZWFkb25seSBzdHJpbmdbXSxcbik6IFVybFBvbGljeU1vZGUge1xuICBjb25zdCByYXcgPSBjb25maWd1cmVkID8/IHN0cmluZy50cmltVG9OdWxsKHByb2Nlc3MuZW52LldFQl9TRUFSQ0hfVVJMX1BPTElDWSkgPz8gdW5kZWZpbmVkO1xuICBpZiAocmF3ID09PSB1bmRlZmluZWQpIHJldHVybiBwYXR0ZXJucy5sZW5ndGggPiAwID8gXCJhbGxvd2xpc3RcIiA6IFwidW5yZXN0cmljdGVkXCI7XG4gIGlmIChyYXcgIT09IFwiYWxsb3dsaXN0XCIgJiYgcmF3ICE9PSBcInVucmVzdHJpY3RlZFwiKSB7XG4gICAgdGhyb3cgbmV3IENvbmZpZ3VyYXRpb25FcnJvcihcbiAgICAgICd1cmxQb2xpY3kgbXVzdCBiZSBcImFsbG93bGlzdFwiIG9yIFwidW5yZXN0cmljdGVkXCIgKGVudjogV0VCX1NFQVJDSF9VUkxfUE9MSUNZKScsXG4gICAgICB7IGNvbnRleHQ6IHsgZmllbGQ6IFwidXJsUG9saWN5XCIsIGVudlZhcjogXCJXRUJfU0VBUkNIX1VSTF9QT0xJQ1lcIiB9IH0sXG4gICAgKTtcbiAgfVxuICBpZiAocmF3ID09PSBcImFsbG93bGlzdFwiICYmIHBhdHRlcm5zLmxlbmd0aCA9PT0gMCkge1xuICAgIHRocm93IG5ldyBDb25maWd1cmF0aW9uRXJyb3IoXG4gICAgICAndXJsUG9saWN5IFwiYWxsb3dsaXN0XCIgbmVlZHMgYXQgbGVhc3Qgb25lIGVudHJ5IGluIGFsbG93ZWRVcmxzIChlbnY6IFdFQl9TRUFSQ0hfQUxMT1dFRF9VUkxTKScsXG4gICAgICB7IGNvbnRleHQ6IHsgZmllbGQ6IFwiYWxsb3dlZFVybHNcIiwgZW52VmFyOiBcIldFQl9TRUFSQ0hfQUxMT1dFRF9VUkxTXCIgfSB9LFxuICAgICk7XG4gIH1cbiAgaWYgKHJhdyA9PT0gXCJ1bnJlc3RyaWN0ZWRcIiAmJiBwYXR0ZXJucy5sZW5ndGggPiAwKSB7XG4gICAgdGhyb3cgbmV3IENvbmZpZ3VyYXRpb25FcnJvcihcbiAgICAgICd1cmxQb2xpY3kgXCJ1bnJlc3RyaWN0ZWRcIiBjYW5ub3QgYmUgY29tYmluZWQgd2l0aCBhbGxvd2VkVXJscyBlbnRyaWVzOyBkcm9wIHRoZSBlbnRyaWVzIG9yIHNldCB1cmxQb2xpY3kgdG8gXCJhbGxvd2xpc3RcIicsXG4gICAgICB7IGNvbnRleHQ6IHsgZmllbGQ6IFwiYWxsb3dlZFVybHNcIiwgZW52VmFyOiBcIldFQl9TRUFSQ0hfQUxMT1dFRF9VUkxTXCIgfSB9LFxuICAgICk7XG4gIH1cbiAgcmV0dXJuIHJhdztcbn1cblxuLyoqXG4gKiBOb3JtYWxpemUgYW55IGFjY2VwdGVkIGFwcHJvdmFsIHNwZWxsaW5nIGludG8gYW4ge0BsaW5rIEFwcHJvdmFsUG9saWN5fS5cbiAqIEEgcGF0dGVybiBnYXRlIHdpdGggbm8gdXNhYmxlIHBhdHRlcm5zIGNvbGxhcHNlcyB0byBgXCJub25lXCJgIHJhdGhlciB0aGFuXG4gKiBnYXRpbmcgZXZlcnl0aGluZywgc28gYSBibGFuayBlbnYgdmFyIGNhbiBuZXZlciB3ZWRnZSB0aGUgdG9vbHMgYmVoaW5kIGFuXG4gKiBhcHByb3ZhbCBub2JvZHkgY29uZmlndXJlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvQXBwcm92YWxQb2xpY3koZ2F0ZTogQXBwcm92YWxHYXRlIHwgQXBwcm92YWxQb2xpY3kgfCB1bmRlZmluZWQpOiBBcHByb3ZhbFBvbGljeSB7XG4gIGlmIChnYXRlID09PSB1bmRlZmluZWQgfHwgZ2F0ZSA9PT0gZmFsc2UpIHJldHVybiB7IG1vZGU6IFwibm9uZVwiIH07XG4gIGlmIChnYXRlID09PSB0cnVlKSByZXR1cm4geyBtb2RlOiBcImFsd2F5c1wiIH07XG4gIGlmIChvYmplY3QuaXNSZWNvcmQoZ2F0ZSkgJiYgXCJtb2RlXCIgaW4gZ2F0ZSkge1xuICAgIGlmIChnYXRlLm1vZGUgPT09IFwidXJsc1wiKSB7XG4gICAgICBjb25zdCBwYXR0ZXJucyA9IHBhcnNlQWxsb3dlZFVybHMoWy4uLmdhdGUucGF0dGVybnNdKTtcbiAgICAgIHJldHVybiBwYXR0ZXJucy5sZW5ndGggPiAwID8geyBtb2RlOiBcInVybHNcIiwgcGF0dGVybnMgfSA6IHsgbW9kZTogXCJub25lXCIgfTtcbiAgICB9XG4gICAgaWYgKGdhdGUubW9kZSA9PT0gXCJhbHdheXNcIiB8fCBnYXRlLm1vZGUgPT09IFwibm9uZVwiKSByZXR1cm4geyBtb2RlOiBnYXRlLm1vZGUgfTtcbiAgICB0aHJvdyBuZXcgQ29uZmlndXJhdGlvbkVycm9yKCdhcHByb3ZhbCBtb2RlIG11c3QgYmUgXCJub25lXCIsIFwiYWx3YXlzXCIgb3IgXCJ1cmxzXCInLCB7XG4gICAgICBjb250ZXh0OiB7IGZpZWxkOiBcImFwcHJvdmFsXCIgfSxcbiAgICB9KTtcbiAgfVxuICBjb25zdCBwYXR0ZXJucyA9IHBhcnNlQWxsb3dlZFVybHModHlwZW9mIGdhdGUgPT09IFwic3RyaW5nXCIgPyBnYXRlIDogWy4uLmdhdGVdKTtcbiAgcmV0dXJuIHBhdHRlcm5zLmxlbmd0aCA+IDAgPyB7IG1vZGU6IFwidXJsc1wiLCBwYXR0ZXJucyB9IDogeyBtb2RlOiBcIm5vbmVcIiB9O1xufVxuXG4vKipcbiAqIFJlc29sdmUgcGx1Z2luIGNvbmZpZyBvdmVyIGVudmlyb25tZW50IGRlZmF1bHRzIGludG8gdGhlIGNvbmNyZXRlXG4gKiB7QGxpbmsgUmVzb2x2ZWRXZWJTZWFyY2hDb25maWd9LiBXaGljaCBtb2RlbCBpcyB1c2VkIHN0YXlzIGxhenkgLSBpdCBpc1xuICogcGlja2VkIGF0IGNhbGwgdGltZSBhZ2FpbnN0IHRoZSBsaXZlIGNhdGFsb2d1ZSAtIGJ1dCBldmVyeXRoaW5nIGVsc2UgaXNcbiAqIHNldHRsZWQgaGVyZSwgYW5kIGEgY29udHJhZGljdGlvbiAodW5wYXJzZWFibGUgYFdFQl9TRUFSQ0hfVE9PTFNgLCBhblxuICogdW5rbm93biBVUkwgcG9saWN5LCBhIHBvbGljeSB0aGF0IGRpc2FncmVlcyB3aXRoIGl0cyBhbGxvdy1saXN0KSB0aHJvd3MgYVxuICoge0BsaW5rIENvbmZpZ3VyYXRpb25FcnJvcn0gbmFtaW5nIHRoZSBmaWVsZCBhbmQgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZVdlYlNlYXJjaENvbmZpZyhcbiAgY29uZmlnOiBXZWJTZWFyY2hQbHVnaW5Db25maWcgPSB7fSxcbik6IFJlc29sdmVkV2ViU2VhcmNoQ29uZmlnIHtcbiAgY29uc3QgcGF0dGVybnMgPSBwYXJzZUFsbG93ZWRVcmxzKGNvbmZpZy5hbGxvd2VkVXJscyA/PyBwcm9jZXNzLmVudi5XRUJfU0VBUkNIX0FMTE9XRURfVVJMUyk7XG4gIGNvbnN0IHVybFBvbGljeSA9IHJlc29sdmVVcmxQb2xpY3koY29uZmlnLnVybFBvbGljeSwgcGF0dGVybnMpO1xuICBjb25zdCB7IG1vZGVsLCBzb3VyY2UgfSA9IHJlc29sdmVNb2RlbFBpbihjb25maWcpO1xuICBjb25zdCBmYWxsYmFja3MgPSBzdHJpbmcucGFyc2VMaXN0KFxuICAgIGNvbmZpZy5tb2RlbEZhbGxiYWNrcyA/PyBwcm9jZXNzLmVudi5XRUJfU0VBUkNIX01PREVMX0ZBTExCQUNLUyxcbiAgKTtcbiAgY29uc3QgZnV6enlUaHJlc2hvbGRSYXcgPVxuICAgIGNvbmZpZy5tb2RlbEZ1enp5VGhyZXNob2xkID8/IE51bWJlcihwcm9jZXNzLmVudi5XRUJfU0VBUkNIX0ZVWlpZX1RIUkVTSE9MRCk7XG4gIHJldHVybiB7XG4gICAgLi4uKG1vZGVsID8geyBtb2RlbCB9IDoge30pLFxuICAgIG1vZGVsU291cmNlOiBzb3VyY2UsXG4gICAgbW9kZWxGYWxsYmFja3M6IGZhbGxiYWNrcy5sZW5ndGggPiAwID8gZmFsbGJhY2tzIDogREVGQVVMVF9NT0RFTF9GQUxMQkFDS1MsXG4gICAgd2ViU2VhcmNoVG9vbHM6IHsgLi4ucGFyc2VUb29sc0VudigpLCAuLi4oY29uZmlnLndlYlNlYXJjaFRvb2xzID8/IHt9KSB9LFxuICAgIGZ1enp5OiBjb25maWcubW9kZWxGdXp6eU1hdGNoID8/IG9iamVjdC50b0Jvb2xlYW4ocHJvY2Vzcy5lbnYuV0VCX1NFQVJDSF9GVVpaWSkgPz8gdHJ1ZSxcbiAgICBmdXp6eVRocmVzaG9sZDpcbiAgICAgIE51bWJlci5pc0Zpbml0ZShmdXp6eVRocmVzaG9sZFJhdykgJiYgZnV6enlUaHJlc2hvbGRSYXdcbiAgICAgICAgPyBOdW1iZXIoZnV6enlUaHJlc2hvbGRSYXcpXG4gICAgICAgIDogc2VydmluZy5ERUZBVUxUX0ZVWlpZX1RIUkVTSE9MRCxcbiAgICBtYXhDaXRhdGlvbnM6IHJlc29sdmVQb3NpdGl2ZUludChcbiAgICAgIGNvbmZpZy5tYXhDaXRhdGlvbnMsXG4gICAgICBcIldFQl9TRUFSQ0hfTUFYX0NJVEFUSU9OU1wiLFxuICAgICAgREVGQVVMVF9NQVhfQ0lUQVRJT05TLFxuICAgICksXG4gICAgZmV0Y2hNYXhMZW5ndGg6IHJlc29sdmVQb3NpdGl2ZUludChcbiAgICAgIGNvbmZpZy5mZXRjaE1heExlbmd0aCxcbiAgICAgIFwiV0VCX1NFQVJDSF9GRVRDSF9NQVhfTEVOR1RIXCIsXG4gICAgICBERUZBVUxUX0ZFVENIX01BWF9MRU5HVEgsXG4gICAgKSxcbiAgICB0aW1lb3V0TXM6IHJlc29sdmVQb3NpdGl2ZUludChjb25maWcudGltZW91dE1zLCBcIldFQl9TRUFSQ0hfVElNRU9VVF9NU1wiLCBERUZBVUxUX1RJTUVPVVRfTVMpLFxuICAgIHNjcmFwZUZhbGxiYWNrOlxuICAgICAgY29uZmlnLnNjcmFwZUZhbGxiYWNrID8/IG9iamVjdC50b0Jvb2xlYW4ocHJvY2Vzcy5lbnYuV0VCX1NFQVJDSF9TQ1JBUEVfRkFMTEJBQ0spID8/IHRydWUsXG4gICAgdXJsUG9saWN5LFxuICAgIGFsbG93TGlzdDogdG9VcmxBbGxvd0xpc3QodXJsUG9saWN5ID09PSBcImFsbG93bGlzdFwiID8gcGF0dGVybnMgOiBbXSksXG4gICAgYXBwcm92YWw6IHRvQXBwcm92YWxQb2xpY3koY29uZmlnLmFwcHJvdmFsKSxcbiAgfTtcbn1cblxuLyoqXG4gKiBSZXNvbHZlIGFuIGFwcHJvdmFsIGdhdGUgYWdhaW5zdCBhIHNldCBvZiBjYW5kaWRhdGUgVVJMcyBpbnRvIGEgY29uY3JldGVcbiAqIGJvb2xlYW46IGBcIm5vbmVcImAgLyBgXCJhbHdheXNcImAgcGFzcyBzdHJhaWdodCB0aHJvdWdoOyBhIGBcInVybHNcImAgcG9saWN5XG4gKiBnYXRlcyB3aGVuIEFOWSBjYW5kaWRhdGUgbWF0Y2hlcy4gRW1wdHkgY2FuZGlkYXRlcyB3aXRoIGEgcGF0dGVybiBnYXRlXG4gKiBuZXZlciBtYXRjaCAobm90aGluZyB0byBhcHByb3ZlKS4gUmV1c2VzIHRoZSBhbGxvdy1saXN0IG1hdGNoZXIgc28gYXBwcm92YWxcbiAqIGdsb2JzIHJlYWQgZXhhY3RseSBsaWtlIGFsbG93LWxpc3QgZ2xvYnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhcHByb3ZhbE1hdGNoZXMoXG4gIGdhdGU6IEFwcHJvdmFsR2F0ZSB8IEFwcHJvdmFsUG9saWN5LFxuICB1cmxzOiByZWFkb25seSBzdHJpbmdbXSxcbik6IGJvb2xlYW4ge1xuICBjb25zdCBwb2xpY3kgPSB0b0FwcHJvdmFsUG9saWN5KGdhdGUpO1xuICBpZiAocG9saWN5Lm1vZGUgPT09IFwibm9uZVwiKSByZXR1cm4gZmFsc2U7XG4gIGlmIChwb2xpY3kubW9kZSA9PT0gXCJhbHdheXNcIikgcmV0dXJuIHRydWU7XG4gIGNvbnN0IGxpc3QgPSB0b1VybEFsbG93TGlzdChwb2xpY3kucGF0dGVybnMpO1xuICByZXR1cm4gdXJscy5zb21lKCh1cmwpID0+IGxpc3QuYWxsb3dzKHVybCkpO1xufVxuIl19
269
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E0Q0c7QUFFSCxPQUFPLEVBQUUsa0JBQWtCLEVBQXlCLE1BQU0sb0JBQW9CLENBQUM7QUFDL0UsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFrQixNQUFNLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUU5RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsY0FBYyxFQUFxQixNQUFNLGdCQUFnQixDQUFDO0FBNkJyRix5REFBeUQ7QUFDekQsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLGtCQUFrQixDQUFDO0FBRTVDLCtFQUErRTtBQUMvRSxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxrQ0FBa0MsQ0FBQztBQUt2RTs7Ozs7O0dBTUc7QUFDSCxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBc0I7SUFDeEQseUJBQXlCO0lBQ3pCLDJCQUEyQjtJQUMzQixrQkFBa0I7SUFDbEIsdUJBQXVCO0NBQ3hCLENBQUM7QUFFRiw0RUFBNEU7QUFDNUUsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsRUFBRSxDQUFDO0FBRXhDLG9FQUFvRTtBQUNwRSxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyxNQUFNLENBQUM7QUFFL0MsbUVBQW1FO0FBQ25FLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLE1BQU0sQ0FBQztBQWtIekMsK0RBQStEO0FBQy9ELE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFnQjtJQUNuRCxJQUFJLEVBQUUsUUFBUTtJQUNkLFVBQVUsRUFBRTtRQUNWLEtBQUssRUFBRTtZQUNMLElBQUksRUFBRSxRQUFRO1lBQ2QsV0FBVyxFQUNULDhJQUE4STtTQUNqSjtRQUNELGNBQWMsRUFBRTtZQUNkLElBQUksRUFBRSxPQUFPO1lBQ2IsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRTtZQUN6QixXQUFXLEVBQ1QsZ0hBQWdIO1NBQ25IO1FBQ0QsY0FBYyxFQUFFO1lBQ2QsSUFBSSxFQUFFLFFBQVE7WUFDZCxXQUFXLEVBQ1QsdUtBQXVLO1NBQzFLO1FBQ0QsZUFBZSxFQUFFO1lBQ2YsSUFBSSxFQUFFLFNBQVM7WUFDZixXQUFXLEVBQ1QsaUdBQWlHO1NBQ3BHO1FBQ0QsbUJBQW1CLEVBQUU7WUFDbkIsSUFBSSxFQUFFLFFBQVE7WUFDZCxXQUFXLEVBQ1Qsd0dBQXdHO1NBQzNHO1FBQ0QsWUFBWSxFQUFFO1lBQ1osSUFBSSxFQUFFLFFBQVE7WUFDZCxXQUFXLEVBQUUsaUVBQWlFO1NBQy9FO1FBQ0QsY0FBYyxFQUFFO1lBQ2QsSUFBSSxFQUFFLFFBQVE7WUFDZCxXQUFXLEVBQUUsMEVBQTBFO1NBQ3hGO1FBQ0QsU0FBUyxFQUFFO1lBQ1QsSUFBSSxFQUFFLFFBQVE7WUFDZCxXQUFXLEVBQUUsaUVBQWlFO1NBQy9FO1FBQ0QsY0FBYyxFQUFFO1lBQ2QsSUFBSSxFQUFFLFNBQVM7WUFDZixXQUFXLEVBQ1QsZ0lBQWdJO1NBQ25JO1FBQ0QsU0FBUyxFQUFFO1lBQ1QsSUFBSSxFQUFFLFFBQVE7WUFDZCxJQUFJLEVBQUUsQ0FBQyxjQUFjLEVBQUUsV0FBVyxDQUFDO1lBQ25DLFdBQVcsRUFDVCxxSUFBcUk7U0FDeEk7UUFDRCxXQUFXLEVBQUU7WUFDWCxJQUFJLEVBQUUsT0FBTztZQUNiLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUU7WUFDekIsV0FBVyxFQUNULCtMQUErTDtTQUNsTTtRQUNELFFBQVEsRUFBRTtZQUNSLFdBQVcsRUFDVCx1TEFBdUw7WUFDekwsS0FBSyxFQUFFO2dCQUNMLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRTtnQkFDbkIsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFO2dCQUNsQixFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxFQUFFO2dCQUM1QztvQkFDRSxJQUFJLEVBQUUsUUFBUTtvQkFDZCxVQUFVLEVBQUU7d0JBQ1YsSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sQ0FBQyxFQUFFO3dCQUMxRCxRQUFRLEVBQUUsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsRUFBRTtxQkFDdkQ7b0JBQ0QsUUFBUSxFQUFFLENBQUMsTUFBTSxDQUFDO2lCQUNuQjthQUNGO1NBQ0Y7S0FDRjtDQUNGLENBQUM7QUFFRixvRUFBb0U7QUFDcEUsU0FBUyxrQkFBa0IsQ0FBQyxLQUF5QixFQUFFLE1BQWMsRUFBRSxRQUFnQjtJQUNyRixJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssR0FBRyxDQUFDO1FBQUUsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQy9GLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDeEMsT0FBTyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQztBQUN0RSxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILFNBQVMsYUFBYTtJQUNwQixNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUM1RCxJQUFJLEdBQUcsS0FBSyxJQUFJO1FBQUUsT0FBTyxFQUFFLENBQUM7SUFDNUIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNyQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDWixNQUFNLElBQUksa0JBQWtCLENBQzFCLG1GQUFtRixFQUNuRixFQUFFLE9BQU8sRUFBRSxFQUFFLE1BQU0sRUFBRSxrQkFBa0IsRUFBRSxFQUFFLENBQzVDLENBQUM7SUFDSixDQUFDO0lBQ0QsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQztBQUVELHVFQUF1RTtBQUN2RSxTQUFTLGVBQWUsQ0FBQyxNQUE2QjtJQUNwRCxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNuRCxJQUFJLFVBQVUsS0FBSyxJQUFJO1FBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxDQUFDO0lBQ3hFLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQy9ELElBQUksWUFBWSxLQUFLLElBQUk7UUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLENBQUM7SUFDN0UsTUFBTSxlQUFlLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQztJQUM3RSxJQUFJLGVBQWUsS0FBSyxJQUFJO1FBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxlQUFlLEVBQUUsTUFBTSxFQUFFLG9CQUFvQixFQUFFLENBQUM7SUFDOUYsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsQ0FBQztBQUM1QixDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsU0FBUyxnQkFBZ0IsQ0FDdkIsVUFBcUMsRUFDckMsUUFBMkI7SUFFM0IsTUFBTSxHQUFHLEdBQUcsVUFBVSxJQUFJLE1BQU0sQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLFNBQVMsQ0FBQztJQUM1RixJQUFJLEdBQUcsS0FBSyxTQUFTO1FBQUUsT0FBTyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUM7SUFDakYsSUFBSSxHQUFHLEtBQUssV0FBVyxJQUFJLEdBQUcsS0FBSyxjQUFjLEVBQUUsQ0FBQztRQUNsRCxNQUFNLElBQUksa0JBQWtCLENBQzFCLDhFQUE4RSxFQUM5RSxFQUFFLE9BQU8sRUFBRSxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLHVCQUF1QixFQUFFLEVBQUUsQ0FDckUsQ0FBQztJQUNKLENBQUM7SUFDRCxJQUFJLEdBQUcsS0FBSyxXQUFXLElBQUksUUFBUSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUNqRCxNQUFNLElBQUksa0JBQWtCLENBQzFCLDhGQUE4RixFQUM5RixFQUFFLE9BQU8sRUFBRSxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFFLHlCQUF5QixFQUFFLEVBQUUsQ0FDekUsQ0FBQztJQUNKLENBQUM7SUFDRCxJQUFJLEdBQUcsS0FBSyxjQUFjLElBQUksUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUNsRCxNQUFNLElBQUksa0JBQWtCLENBQzFCLHdIQUF3SCxFQUN4SCxFQUFFLE9BQU8sRUFBRSxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFFLHlCQUF5QixFQUFFLEVBQUUsQ0FDekUsQ0FBQztJQUNKLENBQUM7SUFDRCxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxJQUErQztJQUM5RSxJQUFJLElBQUksS0FBSyxTQUFTLElBQUksSUFBSSxLQUFLLEtBQUs7UUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDO0lBQ2xFLElBQUksSUFBSSxLQUFLLElBQUk7UUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxDQUFDO0lBQzdDLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxNQUFNLElBQUksSUFBSSxFQUFFLENBQUM7UUFDNUMsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLE1BQU0sRUFBRSxDQUFDO1lBQ3pCLE1BQU0sUUFBUSxHQUFHLGdCQUFnQixDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztZQUN0RCxPQUFPLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDO1FBQzdFLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssUUFBUSxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssTUFBTTtZQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQy9FLE1BQU0sSUFBSSxrQkFBa0IsQ0FBQyxrREFBa0QsRUFBRTtZQUMvRSxPQUFPLEVBQUUsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFO1NBQy9CLENBQUMsQ0FBQztJQUNMLENBQUM7SUFDRCxNQUFNLFFBQVEsR0FBRyxnQkFBZ0IsQ0FBQyxPQUFPLElBQUksS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDL0UsT0FBTyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQztBQUM3RSxDQUFDO0FBRUQ7Ozs7Ozs7R0FPRztBQUNILE1BQU0sVUFBVSxzQkFBc0IsQ0FDcEMsU0FBZ0MsRUFBRTtJQUVsQyxNQUFNLFFBQVEsR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsV0FBVyxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsdUJBQXVCLENBQUMsQ0FBQztJQUM3RixNQUFNLFNBQVMsR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQy9ELE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEdBQUcsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2xELE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQ2hDLE1BQU0sQ0FBQyxjQUFjLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQywwQkFBMEIsQ0FDaEUsQ0FBQztJQUNGLE1BQU0saUJBQWlCLEdBQ3JCLE1BQU0sQ0FBQyxtQkFBbUIsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO0lBQy9FLE9BQU87UUFDTCxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDM0IsV0FBVyxFQUFFLE1BQU07UUFDbkIsY0FBYyxFQUFFLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLHVCQUF1QjtRQUMxRSxjQUFjLEVBQUUsRUFBRSxHQUFHLGFBQWEsRUFBRSxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsY0FBYyxJQUFJLEVBQUUsQ0FBQyxFQUFFO1FBQ3hFLEtBQUssRUFBRSxNQUFNLENBQUMsZUFBZSxJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLElBQUk7UUFDdkYsY0FBYyxFQUNaLE1BQU0sQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsSUFBSSxpQkFBaUI7WUFDckQsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQztZQUMzQixDQUFDLENBQUMsT0FBTyxDQUFDLHVCQUF1QjtRQUNyQyxZQUFZLEVBQUUsa0JBQWtCLENBQzlCLE1BQU0sQ0FBQyxZQUFZLEVBQ25CLDBCQUEwQixFQUMxQixxQkFBcUIsQ0FDdEI7UUFDRCxjQUFjLEVBQUUsa0JBQWtCLENBQ2hDLE1BQU0sQ0FBQyxjQUFjLEVBQ3JCLDZCQUE2QixFQUM3Qix3QkFBd0IsQ0FDekI7UUFDRCxTQUFTLEVBQUUsa0JBQWtCLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSx1QkFBdUIsRUFBRSxrQkFBa0IsQ0FBQztRQUM1RixjQUFjLEVBQ1osTUFBTSxDQUFDLGNBQWMsSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsMEJBQTBCLENBQUMsSUFBSSxJQUFJO1FBQzNGLFNBQVM7UUFDVCxTQUFTLEVBQUUsY0FBYyxDQUFDLFNBQVMsS0FBSyxXQUFXLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ3BFLFFBQVEsRUFBRSxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDO0tBQzVDLENBQUM7QUFDSixDQUFDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLGVBQWUsQ0FDN0IsSUFBbUMsRUFDbkMsSUFBdUI7SUFFdkIsTUFBTSxNQUFNLEdBQUcsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEMsSUFBSSxNQUFNLENBQUMsSUFBSSxLQUFLLE1BQU07UUFBRSxPQUFPLEtBQUssQ0FBQztJQUN6QyxJQUFJLE1BQU0sQ0FBQyxJQUFJLEtBQUssUUFBUTtRQUFFLE9BQU8sSUFBSSxDQUFDO0lBQzFDLE1BQU0sSUFBSSxHQUFHLGNBQWMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDN0MsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDOUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29uZmlndXJhdGlvbiBmb3IgdGhlIHdlYi1zZWFyY2ggcGx1Z2luOiB0aGUgdHlwZWRcbiAqIHtAbGluayBXZWJTZWFyY2hQbHVnaW5Db25maWd9ICh0aGUgcGx1Z2luJ3Mgc2xpY2Ugb2YgQXBwS2l0IGNvbmZpZyksIHRoZVxuICogSlNPTiBTY2hlbWEgdGhlIG1hbmlmZXN0IHB1Ymxpc2hlcyBmb3IgaXQsIGFuZCB7QGxpbmsgcmVzb2x2ZVdlYlNlYXJjaENvbmZpZ31cbiAqIHdoaWNoIGxheWVycyB0aGF0IGNvbmZpZyBvdmVyIGVudmlyb25tZW50IGRlZmF1bHRzIGludG8gdGhlIGNvbmNyZXRlXG4gKiB7QGxpbmsgUmVzb2x2ZWRXZWJTZWFyY2hDb25maWd9IHRoZSBydW50aW1lICsgdG9vbHMgcmVhZC5cbiAqXG4gKiBgd2ViX3NlYXJjaGAgcnVucyBvbiB0aGUgRGF0YWJyaWNrcyBNb2RlbCBTZXJ2aW5nIG5hdGl2ZSB3ZWItc2VhcmNoIHRvb2xcbiAqIChzZWUgYHByb3ZpZGVyLnRzYCAvIGBzZWFyY2gudHNgKSwgc28gdGhlIGtleSBrbm9iIGlzIHdoaWNoIHdlYi1zZWFyY2gtXG4gKiBjYXBhYmxlIG1vZGVsIHRvIHVzZS4gSXQgcmVzb2x2ZXMgaW5kZXBlbmRlbnRseSBvZiB0aGUgY2FsbGluZyBhZ2VudCdzIGNoYXRcbiAqIG1vZGVsOiBgbW9kZWxgIChhIG5hbWUsIGxvb3NlIG5hbWUsIG9yIGNhcGFiaWxpdHkgY2xhc3MpIGlzIGZ1enp5LW1hdGNoZWRcbiAqIGFnYWluc3QgdGhlIHdvcmtzcGFjZSBjYXRhbG9ndWUsIGFuZCB3aGVuIG5vdGhpbmcgaXMgcGlubmVkIHRoZVxuICoge0BsaW5rIFdlYlNlYXJjaFBsdWdpbkNvbmZpZy5tb2RlbEZhbGxiYWNrc30gb3JkZXIgKEdlbWluaSwgdGhlbiBHUFQsIHRoZW4gYVxuICogcmVwbyBmbG9vcikgcGlja3MgdGhlIGZpcnN0IHdlYi1zZWFyY2gtY2FwYWJsZSBlbmRwb2ludCB0aGF0IGV4aXN0cy5cbiAqXG4gKiBXaGljaCBlbmRwb2ludCBpZCBpcyB1c2VkIGZvbGxvd3MgdGhlIHN0YW5kYXJkIHByZWNlZGVuY2UgLSBleHBsaWNpdCBwbHVnaW5cbiAqIGNvbmZpZywgdGhlbiBlbnZpcm9ubWVudCwgdGhlbiBhIGRlZmF1bHQgLSB3aXRoIHR3byBlbnZpcm9ubWVudCBzb3VyY2VzOlxuICpcbiAqICAgMS4gYG1vZGVsYCBpbiBwbHVnaW4gY29uZmlnO1xuICogICAyLiBgV0VCX1NFQVJDSF9NT0RFTGAsIHRoZSBkZWRpY2F0ZWQgb3ZlcnJpZGUsIHNvIGEgZGVwbG95bWVudCBjYW4gcG9pbnRcbiAqICAgICAgd2ViIHNlYXJjaCBhdCBhIGRpZmZlcmVudCBlbmRwb2ludCB0aGFuIHRoZSBhZ2VudCdzIGNoYXQgbW9kZWw7XG4gKiAgIDMuIGBEQVRBQlJJQ0tTX1NFUlZJTkdfRU5EUE9JTlRfTkFNRWAsIEFwcEtpdCdzIHN0YW5kYXJkIG5hbWUgZm9yIGFcbiAqICAgICAgTW9kZWwgU2VydmluZyBiaW5kaW5nLCBob25vcmVkIHNvIHRoZSByZXNvdXJjZSBkZWNsYXJlZCBpbiB0aGUgbWFuaWZlc3RcbiAqICAgICAgd2lyZXMgdGhpcyBwbHVnaW4gdXAgbGlrZSBhbnkgb3RoZXIuIEJlY2F1c2UgdGhhdCBiaW5kaW5nIGlzIHNoYXJlZFxuICogICAgICB3aXRoIHdoYXRldmVyIGVsc2UgdGhlIGFwcCBzZXJ2ZXMsIGl0IGlzIHRyZWF0ZWQgYXMgYSBwcmVmZXJlbmNlOiBhblxuICogICAgICBlbmRwb2ludCB0aGF0IGNhbm5vdCBydW4gdGhlIG5hdGl2ZSB3ZWItc2VhcmNoIHRvb2wgaXMgc2tpcHBlZCBpblxuICogICAgICBmYXZvciBvZiB7QGxpbmsgV2ViU2VhcmNoUGx1Z2luQ29uZmlnLm1vZGVsRmFsbGJhY2tzfSByYXRoZXIgdGhhblxuICogICAgICBmYWlsaW5nIHRoZSBjYWxsLiBBIHBpbiBmcm9tICgxKSBvciAoMikgaXMgZXhwbGljaXQgYW5kIERPRVMgZmFpbDtcbiAqICAgNC4gb3RoZXJ3aXNlIHRoZSBmYWxsYmFjayBvcmRlciwgcmVzb2x2ZWQgYWdhaW5zdCB0aGUgbGl2ZSBjYXRhbG9ndWUuXG4gKlxuICogV2hpY2ggbW9kZWwgd2lucyBpcyBkZWNpZGVkIGxhemlseSwgYXQgY2FsbCB0aW1lLCBhZ2FpbnN0IHRoZSBsaXZlXG4gKiBjYXRhbG9ndWUuIFJlc29sdXRpb24gaGVyZSBpcyBlYWdlciBhYm91dCBldmVyeXRoaW5nIGVsc2UgYW5kIGZhaWxzIGxvdWRseVxuICogb24gYSBjb250cmFkaWN0aW9uOiBhbiB1bnBhcnNlYWJsZSBgV0VCX1NFQVJDSF9UT09MU2AsIGFuIHVua25vd25cbiAqIHtAbGluayBVcmxQb2xpY3lNb2RlfSwgb3IgYSBVUkwgcG9saWN5IHRoYXQgZGlzYWdyZWVzIHdpdGggdGhlIGFsbG93LWxpc3QgaXRcbiAqIHdhcyBnaXZlbi5cbiAqXG4gKiBFbnYgZmFsbGJhY2tzOiBgV0VCX1NFQVJDSF9NT0RFTGAsIGBEQVRBQlJJQ0tTX1NFUlZJTkdfRU5EUE9JTlRfTkFNRWAsXG4gKiBgV0VCX1NFQVJDSF9NT0RFTF9GQUxMQkFDS1NgLCBgV0VCX1NFQVJDSF9UT09MU2AgKEpTT04pLFxuICogYFdFQl9TRUFSQ0hfVVJMX1BPTElDWWAsIGBXRUJfU0VBUkNIX0FMTE9XRURfVVJMU2AsXG4gKiBgV0VCX1NFQVJDSF9NQVhfQ0lUQVRJT05TYCwgYFdFQl9TRUFSQ0hfRkVUQ0hfTUFYX0xFTkdUSGAsXG4gKiBgV0VCX1NFQVJDSF9USU1FT1VUX01TYCwgYFdFQl9TRUFSQ0hfU0NSQVBFX0ZBTExCQUNLYCwgYFdFQl9TRUFSQ0hfRlVaWllgLFxuICogYFdFQl9TRUFSQ0hfRlVaWllfVEhSRVNIT0xEYC5cbiAqXG4gKiBAbW9kdWxlXG4gKi9cblxuaW1wb3J0IHsgQ29uZmlndXJhdGlvbkVycm9yLCB0eXBlIEJhc2VQbHVnaW5Db25maWcgfSBmcm9tIFwiQGRhdGFicmlja3MvYXBwa2l0XCI7XG5pbXBvcnQgeyBzZXJ2aW5nIH0gZnJvbSBcIkBkYngtdG9vbHMvbW9kZWxcIjtcbmltcG9ydCB7IGpzb24sIG9iamVjdCwgdHlwZSBPbmVPck1hbnksIHN0cmluZyB9IGZyb20gXCJAZGJ4LXRvb2xzL3NoYXJlZC1jb3JlXCI7XG5pbXBvcnQgdHlwZSB7IEpTT05TY2hlbWE3IH0gZnJvbSBcImpzb24tc2NoZW1hXCI7XG5pbXBvcnQgeyBwYXJzZUFsbG93ZWRVcmxzLCB0b1VybEFsbG93TGlzdCwgdHlwZSBVcmxBbGxvd0xpc3QgfSBmcm9tIFwiLi9hbGxvd2xpc3QudHNcIjtcblxuLyoqXG4gKiBBIFVSTC1wYXR0ZXJuIGdhdGUgZm9yIHBlci10b29sIGFwcHJvdmFsLiBgdHJ1ZWAgZ2F0ZXMgZXZlcnkgY2FsbDsgYVxuICogcGF0dGVybiAob3IgbGlzdCBvZiBwYXR0ZXJucywgaW4gdGhlIHtAbGluayBPbmVPck1hbnl9IHNoYXBlIHVzZWQgYWNyb3NzXG4gKiB0aGUgcmVwbykgZ2F0ZXMgb25seSBjYWxscyB3aG9zZSBVUkwgbWF0Y2hlcy4gUGF0dGVybnMgdXNlIHRoZSBzYW1lIGdsb2JcbiAqIHN5bnRheCBhcyB0aGUgYWxsb3ctbGlzdCAoc2VlIGBhbGxvd2xpc3QudHNgKS4gT21pdCAvIGBmYWxzZWAgZm9yIG5vXG4gKiBhcHByb3ZhbC4gTm9ybWFsaXplZCB0byBhbiB7QGxpbmsgQXBwcm92YWxQb2xpY3l9IGJlZm9yZSB1c2UuXG4gKi9cbmV4cG9ydCB0eXBlIEFwcHJvdmFsR2F0ZSA9IGJvb2xlYW4gfCBPbmVPck1hbnk8c3RyaW5nPiB8IHN0cmluZztcblxuLyoqXG4gKiBUaGUgbm9ybWFsaXplZCBmb3JtIG9mIGFuIHtAbGluayBBcHByb3ZhbEdhdGV9OiB3aGljaCBjYWxscyBwYXVzZSBmb3IgYVxuICogaHVtYW4uIGBcIm5vbmVcImAgcnVucyBldmVyeSBjYWxsIHN0cmFpZ2h0IHRocm91Z2gsIGBcImFsd2F5c1wiYCBnYXRlcyBhbGwgb2ZcbiAqIHRoZW0sIGFuZCBgXCJ1cmxzXCJgIGdhdGVzIG9ubHkgY2FsbHMgd2hvc2UgVVJMIG1hdGNoZXMgb25lIG9mIGBwYXR0ZXJuc2AuXG4gKi9cbmV4cG9ydCB0eXBlIEFwcHJvdmFsUG9saWN5ID1cbiAgfCB7IHJlYWRvbmx5IG1vZGU6IFwibm9uZVwiIH1cbiAgfCB7IHJlYWRvbmx5IG1vZGU6IFwiYWx3YXlzXCIgfVxuICB8IHsgcmVhZG9ubHkgbW9kZTogXCJ1cmxzXCI7IHJlYWRvbmx5IHBhdHRlcm5zOiByZWFkb25seSBzdHJpbmdbXSB9O1xuXG4vKipcbiAqIFdoaWNoIFVSTHMgdGhlIHRvb2xzIG1heSByZWFjaC4gYFwiYWxsb3dsaXN0XCJgIHBlcm1pdHMgb25seSB0aGUgY29uZmlndXJlZFxuICogZW50cmllczsgYFwidW5yZXN0cmljdGVkXCJgIG5hbWVzIHRoZSBwZXJtaXNzaXZlIG1vZGUgZXhwbGljaXRseSwgc28gYW5cbiAqIHVucmVzdHJpY3RlZCBkZXBsb3ltZW50IGlzIGEgc3RhdGVkIGNob2ljZSB2aXNpYmxlIGluIHRoZSBib290IGxvZyByYXRoZXJcbiAqIHRoYW4gYW4gZW1wdHkgbGlzdCBub2JvZHkgbm90aWNlZC5cbiAqL1xuZXhwb3J0IHR5cGUgVXJsUG9saWN5TW9kZSA9IFwidW5yZXN0cmljdGVkXCIgfCBcImFsbG93bGlzdFwiO1xuXG4vKiogRGVkaWNhdGVkIG92ZXJyaWRlIGZvciB0aGUgd2ViLXNlYXJjaCBlbmRwb2ludCBpZC4gKi9cbmV4cG9ydCBjb25zdCBNT0RFTF9FTlYgPSBcIldFQl9TRUFSQ0hfTU9ERUxcIjtcblxuLyoqIEFwcEtpdCdzIHN0YW5kYXJkIGVudmlyb25tZW50IG5hbWUgZm9yIGEgTW9kZWwgU2VydmluZyBlbmRwb2ludCBiaW5kaW5nLiAqL1xuZXhwb3J0IGNvbnN0IFNFUlZJTkdfRU5EUE9JTlRfRU5WID0gXCJEQVRBQlJJQ0tTX1NFUlZJTkdfRU5EUE9JTlRfTkFNRVwiO1xuXG4vKiogV2hlcmUgdGhlIHBpbm5lZCB3ZWItc2VhcmNoIGVuZHBvaW50IGlkIGNhbWUgZnJvbSwgb3IgYFwibm9uZVwiYCB3aGVuIHVucGlubmVkLiAqL1xuZXhwb3J0IHR5cGUgTW9kZWxTb3VyY2UgPSBcImNvbmZpZ1wiIHwgdHlwZW9mIE1PREVMX0VOViB8IHR5cGVvZiBTRVJWSU5HX0VORFBPSU5UX0VOViB8IFwibm9uZVwiO1xuXG4vKipcbiAqIERlZmF1bHQgd2ViLXNlYXJjaCBtb2RlbCBwcmVmZXJlbmNlLCB0cmllZCBpbiBvcmRlciB3aGVuIG5vIG1vZGVsIGlzXG4gKiBwaW5uZWQuIEdlbWluaSBmaXJzdCwgdGhlbiBHUFQgLSBib3RoIHN1cHBvcnQgdGhlIG5hdGl2ZSB3ZWItc2VhcmNoIHRvb2w7XG4gKiBhIHdvcmtzcGFjZSB0eXBpY2FsbHkgaGFzIGF0IGxlYXN0IG9uZS4gRWFjaCBpcyBmdXp6eS1tYXRjaGVkIGFnYWluc3QgdGhlXG4gKiBsaXZlIGNhdGFsb2d1ZSwgc28gYSBjbG9zZSB2YXJpYW50IChlLmcuIGBkYXRhYnJpY2tzLWdlbWluaS0zLTEtcHJvYCkgaXNcbiAqIHBpY2tlZCB3aGVuIHRoZSBleGFjdCBpZCBpc24ndCBwcmVzZW50LlxuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9NT0RFTF9GQUxMQkFDS1M6IHJlYWRvbmx5IHN0cmluZ1tdID0gW1xuICBcImRhdGFicmlja3MtZ2VtaW5pLTMtcHJvXCIsXG4gIFwiZGF0YWJyaWNrcy1nZW1pbmktMi01LXByb1wiLFxuICBcImRhdGFicmlja3MtZ3B0LTVcIixcbiAgXCJkYXRhYnJpY2tzLWdwdC01LW1pbmlcIixcbl07XG5cbi8qKiBEZWZhdWx0IGNhcCBvbiB0aGUgbnVtYmVyIG9mIGNpdGF0aW9ucyByZXR1cm5lZCBmcm9tIGEgc2luZ2xlIHNlYXJjaC4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX01BWF9DSVRBVElPTlMgPSAxMDtcblxuLyoqIERlZmF1bHQgY2FwIG9uIGNoYXJhY3RlcnMgcmV0dXJuZWQgZnJvbSBhIHNpbmdsZSBgd2ViX2ZldGNoYC4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX0ZFVENIX01BWF9MRU5HVEggPSA1MF8wMDA7XG5cbi8qKiBEZWZhdWx0IHBlci1yZXF1ZXN0IG5ldHdvcmsgdGltZW91dCAobXMpIGZvciBzZWFyY2ggKyBmZXRjaC4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX1RJTUVPVVRfTVMgPSAzMF8wMDA7XG5cbi8qKiBBcHBLaXQgY29uZmlnIGFjY2VwdGVkIGJ5IHRoZSB3ZWItc2VhcmNoIHBsdWdpbi4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgV2ViU2VhcmNoUGx1Z2luQ29uZmlnIGV4dGVuZHMgQmFzZVBsdWdpbkNvbmZpZyB7XG4gIC8qKlxuICAgKiBUaGUgd2ViLXNlYXJjaCBtb2RlbCB0byB1c2UgYnkgZGVmYXVsdDogYSBEYXRhYnJpY2tzIHNlcnZpbmcgZW5kcG9pbnRcbiAgICogbmFtZSAoYFwiZGF0YWJyaWNrcy1nZW1pbmktMy1wcm9cImApLCBhIGxvb3NlIG5hbWUgKGBcImdlbWluaVwiYCwgYFwiZ3B0XCJgKSxcbiAgICogb3IgYSBjYXBhYmlsaXR5IGNsYXNzLiBGdXp6eS1tYXRjaGVkIGFnYWluc3QgdGhlIGxpdmUgY2F0YWxvZ3VlLiBGYWxsc1xuICAgKiBiYWNrIHRvIGBXRUJfU0VBUkNIX01PREVMYCwgdGhlbiBgREFUQUJSSUNLU19TRVJWSU5HX0VORFBPSU5UX05BTUVgLCB0aGVuXG4gICAqIHRoZSB7QGxpbmsgbW9kZWxGYWxsYmFja3N9IG9yZGVyLiBDaG9zZW4gaW5kZXBlbmRlbnRseSBvZiB0aGUgY2FsbGluZ1xuICAgKiBhZ2VudCdzIGNoYXQgbW9kZWwuXG4gICAqL1xuICBtb2RlbD86IHN0cmluZztcbiAgLyoqXG4gICAqIFByaW9yaXR5LW9yZGVyZWQgd2ViLXNlYXJjaCBtb2RlbCBjYW5kaWRhdGVzIHRyaWVkIHdoZW4ge0BsaW5rIG1vZGVsfSBpc1xuICAgKiB1bnNldCwgZWFjaCBmdXp6eS1tYXRjaGVkIGFuZCBjaGVja2VkIGZvciB3ZWItc2VhcmNoIHN1cHBvcnQuIEZhbGxzIGJhY2tcbiAgICogdG8gYFdFQl9TRUFSQ0hfTU9ERUxfRkFMTEJBQ0tTYCAoY29tbWEvc3BhY2Utc2VwYXJhdGVkKSwgdGhlblxuICAgKiB7QGxpbmsgREVGQVVMVF9NT0RFTF9GQUxMQkFDS1N9IChHZW1pbmksIHRoZW4gR1BUKS5cbiAgICovXG4gIG1vZGVsRmFsbGJhY2tzPzogc3RyaW5nIHwgc3RyaW5nW107XG4gIC8qKlxuICAgKiBQcm92aWRlciAtPiB0b29sLXNwZWMgb3ZlcnJpZGUgbWFwLCBtZXJnZWQgb3ZlciB0aGUgYnVpbHQtaW5cbiAgICoge0BsaW5rIFdFQl9TRUFSQ0hfUFJPVklERVJTfSBkZWZhdWx0cy4gS2V5ZWQgYnkgcHJvdmlkZXIgZmFtaWx5XG4gICAqIChgXCJvcGVuYWlcImAsIGBcImdlbWluaVwiYCk7IGVhY2ggdmFsdWUgbWF5IG92ZXJyaWRlIHRoZSBgdG9vbGAgZW50cnlcbiAgICogYW5kL29yIHRoZSBgYXBpYCBzdXJmYWNlLiBVc2UgdG8gY2hhbmdlIHRoZSB0b29sIHNoYXBlIGFzIHRoZSBwbGF0Zm9ybVxuICAgKiBldm9sdmVzIHdpdGhvdXQgYSBjb2RlIGNoYW5nZS4gRmFsbHMgYmFjayB0byBgV0VCX1NFQVJDSF9UT09MU2AgcGFyc2VkIGFzXG4gICAqIEpTT04uIFRoaXMgaXMgdGhlIGBXRUJfU0VBUkNIX1RPT0xTYCBzZXR0aW5nLlxuICAgKi9cbiAgd2ViU2VhcmNoVG9vbHM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgLyoqXG4gICAqIEVuYWJsZSBmdXp6eSBtYXRjaGluZyBvZiBsb29zZSBtb2RlbCBuYW1lcyBhZ2FpbnN0IHRoZSBjYXRhbG9ndWUuXG4gICAqIERlZmF1bHRzIHRvIGB0cnVlYDsgZmFsbHMgYmFjayB0byBgV0VCX1NFQVJDSF9GVVpaWWAuXG4gICAqL1xuICBtb2RlbEZ1enp5TWF0Y2g/OiBib29sZWFuO1xuICAvKiogRnVzZS5qcyBmdXp6eSB0aHJlc2hvbGQuIEZhbGxzIGJhY2sgdG8gYFdFQl9TRUFSQ0hfRlVaWllfVEhSRVNIT0xEYCwgdGhlbiB0aGUgc2hhcmVkIGRlZmF1bHQuICovXG4gIG1vZGVsRnV6enlUaHJlc2hvbGQ/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBIYXJkIGNhcCBvbiB0aGUgbnVtYmVyIG9mIGNpdGF0aW9ucyBhIHNpbmdsZSBzZWFyY2ggcmV0dXJucy4gRmFsbHMgYmFja1xuICAgKiB0byBgV0VCX1NFQVJDSF9NQVhfQ0lUQVRJT05TYCwgdGhlbiB7QGxpbmsgREVGQVVMVF9NQVhfQ0lUQVRJT05TfS5cbiAgICovXG4gIG1heENpdGF0aW9ucz86IG51bWJlcjtcbiAgLyoqXG4gICAqIEhhcmQgY2FwIG9uIHRoZSBjaGFyYWN0ZXIgbGVuZ3RoIG9mIGEgc2luZ2xlIGB3ZWJfZmV0Y2hgIHJlc3VsdC4gRmFsbHNcbiAgICogYmFjayB0byBgV0VCX1NFQVJDSF9GRVRDSF9NQVhfTEVOR1RIYCwgdGhlbiB7QGxpbmsgREVGQVVMVF9GRVRDSF9NQVhfTEVOR1RIfS5cbiAgICovXG4gIGZldGNoTWF4TGVuZ3RoPzogbnVtYmVyO1xuICAvKipcbiAgICogUGVyLXJlcXVlc3QgbmV0d29yayB0aW1lb3V0IGluIG1zIGZvciBzZWFyY2ggKyBmZXRjaC4gRmFsbHMgYmFjayB0b1xuICAgKiBgV0VCX1NFQVJDSF9USU1FT1VUX01TYCwgdGhlbiB7QGxpbmsgREVGQVVMVF9USU1FT1VUX01TfS5cbiAgICovXG4gIHRpbWVvdXRNcz86IG51bWJlcjtcbiAgLyoqXG4gICAqIEZhbGwgYmFjayB0byBhIER1Y2tEdWNrR28gc2NyYXBlIHdoZW4gdGhlIHdvcmtzcGFjZSBoYXMgTk8gZGVwbG95ZWRcbiAgICogd2ViLXNlYXJjaC1jYXBhYmxlIG1vZGVsIChubyBHUFQgLyBHZW1pbmkgc2VydmluZyBlbmRwb2ludCkuIFRoZSBuYXRpdmVcbiAgICogRGF0YWJyaWNrcyB0b29sIGlzIGFsd2F5cyBwcmVmZXJyZWQ7IHRoaXMgb25seSBraWNrcyBpbiB3aGVuIHRoZXJlIGlzIG5vXG4gICAqIG5hdGl2ZSBvcHRpb24sIHNvIHRoZSB0b29sIHN0aWxsIHJldHVybnMgcmVzdWx0cyBpbnN0ZWFkIG9mIGVycm9yaW5nLlxuICAgKiBEZWZhdWx0cyB0byBgdHJ1ZWA7IHNldCBgZmFsc2VgIChvciBgV0VCX1NFQVJDSF9TQ1JBUEVfRkFMTEJBQ0s9MGApIHRvXG4gICAqIHJlcXVpcmUgYSBuYXRpdmUgbW9kZWwgYW5kIGVycm9yIG90aGVyd2lzZS5cbiAgICovXG4gIHNjcmFwZUZhbGxiYWNrPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFdoaWNoIFVSTHMgdGhlIHRvb2xzIG1heSByZWFjaCAoe0BsaW5rIFVybFBvbGljeU1vZGV9KS4gRmFsbHMgYmFjayB0b1xuICAgKiBgV0VCX1NFQVJDSF9VUkxfUE9MSUNZYCwgdGhlbiB0byBgXCJhbGxvd2xpc3RcImAgd2hlbiB7QGxpbmsgYWxsb3dlZFVybHN9XG4gICAqIGhhcyBlbnRyaWVzIGFuZCBgXCJ1bnJlc3RyaWN0ZWRcImAgd2hlbiBpdCBkb2VzIG5vdC4gTmFtaW5nIHRoZSBtb2RlXG4gICAqIGV4cGxpY2l0bHkgaXMgdGhlIHdheSB0byBzdGF0ZSB0aGF0IGFuIG9wZW4gZGVwbG95bWVudCBpcyBpbnRlbmRlZDtcbiAgICogYFwiYWxsb3dsaXN0XCJgIHdpdGggbm8gZW50cmllcywgb3IgYFwidW5yZXN0cmljdGVkXCJgIGFsb25nc2lkZSBlbnRyaWVzLCBpc1xuICAgKiBhIGNvbnRyYWRpY3Rpb24gYW5kIGZhaWxzIGF0IHJlc29sdXRpb24uXG4gICAqL1xuICB1cmxQb2xpY3k/OiBVcmxQb2xpY3lNb2RlO1xuICAvKipcbiAgICogT3B0aW9uYWwgVVJMIGFsbG93LWxpc3QuIEVhY2ggZW50cnkgaXMgYSBnbG9iIChvciBiYXJlIGhvc3QpIHRlc3RlZFxuICAgKiBhZ2FpbnN0IGEgVVJMJ3MgZnVsbCBgaHJlZmAuIFdoZW4gc2V0LCBgd2ViX3NlYXJjaGAgc2lsZW50bHkgZmlsdGVyc1xuICAgKiBjaXRhdGlvbnMgdG8gdGhlIHBlcm1pdHRlZCBzZXQgYW5kIGB3ZWJfZmV0Y2hgIHJlZnVzZXMgYSBkaXNhbGxvd2VkIFVSTC5cbiAgICogQWNjZXB0cyBhIGBzdHJpbmdbXWAgb3IgYSBjb21tYS0vd2hpdGVzcGFjZS1zZXBhcmF0ZWQgc3RyaW5nOyBmYWxscyBiYWNrXG4gICAqIHRvIGBXRUJfU0VBUkNIX0FMTE9XRURfVVJMU2AuIE9taXQgKG9yIGxlYXZlIGVtcHR5KSBmb3Igbm8gcmVzdHJpY3Rpb24uXG4gICAqIFNlZSBgYWxsb3dsaXN0LnRzYC5cbiAgICovXG4gIGFsbG93ZWRVcmxzPzogc3RyaW5nIHwgc3RyaW5nW107XG4gIC8qKlxuICAgKiBBcHByb3ZhbCBnYXRlIGFwcGxpZWQgdG8gQk9USCB0b29scyAocGVyLXRvb2wgb3ZlcnJpZGVzIHZpYVxuICAgKiB7QGxpbmsgV2ViU2VhcmNoVG9vbE9wdGlvbnMuYXBwcm92YWx9IHdpbikuIGB0cnVlYCBnYXRlcyBldmVyeSBjYWxsO1xuICAgKiBhIFVSTC1wYXR0ZXJuIChvciBsaXN0KSBnYXRlcyBvbmx5IG1hdGNoaW5nIGNhbGxzOyBhblxuICAgKiB7QGxpbmsgQXBwcm92YWxQb2xpY3l9IHN0YXRlcyB0aGUgbW9kZSBkaXJlY3RseS4gT21pdCBmb3Igbm8gYXBwcm92YWwuXG4gICAqL1xuICBhcHByb3ZhbD86IEFwcHJvdmFsR2F0ZSB8IEFwcHJvdmFsUG9saWN5O1xufVxuXG4vKiogQ29uY3JldGUsIHZhbGlkYXRlZCBjb25maWcgdGhlIHJ1bnRpbWUgKyB0b29scyByZWFkLiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXNvbHZlZFdlYlNlYXJjaENvbmZpZyB7XG4gIC8qKiBQaW5uZWQgd2ViLXNlYXJjaCBtb2RlbCwgd2hlbiBjb25maWd1cmVkIChlbHNlIHVuZGVmaW5lZCAtIHVzZSBmYWxsYmFja3MpLiAqL1xuICBtb2RlbD86IHN0cmluZztcbiAgLyoqIFdoZXJlIHtAbGluayBtb2RlbH0gY2FtZSBmcm9tLCB3aGljaCBkZWNpZGVzIHdoZXRoZXIgYW4gdW5zdXBwb3J0ZWQgcGluIGlzIGZhdGFsLiAqL1xuICBtb2RlbFNvdXJjZTogTW9kZWxTb3VyY2U7XG4gIC8qKiBPcmRlcmVkIGZhbGxiYWNrIG1vZGVsIGNhbmRpZGF0ZXMgKEdlbWluaSwgdGhlbiBHUFQsIHRoZW4gYSBmbG9vcikuICovXG4gIG1vZGVsRmFsbGJhY2tzOiByZWFkb25seSBzdHJpbmdbXTtcbiAgLyoqIFByb3ZpZGVyIC0+IHRvb2wtc3BlYyBvdmVycmlkZSBtYXAsIG1lcmdlZCBvdmVyIHRoZSBidWlsdC1pbiBkZWZhdWx0cy4gKi9cbiAgd2ViU2VhcmNoVG9vbHM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAvKiogV2hldGhlciB0byBmdXp6eS1tYXRjaCBsb29zZSBtb2RlbCBuYW1lcy4gKi9cbiAgZnV6enk6IGJvb2xlYW47XG4gIC8qKiBGdXNlLmpzIGZ1enp5IHRocmVzaG9sZC4gKi9cbiAgZnV6enlUaHJlc2hvbGQ6IG51bWJlcjtcbiAgbWF4Q2l0YXRpb25zOiBudW1iZXI7XG4gIGZldGNoTWF4TGVuZ3RoOiBudW1iZXI7XG4gIHRpbWVvdXRNczogbnVtYmVyO1xuICAvKiogV2hldGhlciB0byBzY3JhcGUtZmFsbGJhY2sgd2hlbiBubyBuYXRpdmUgd2ViLXNlYXJjaCBtb2RlbCBpcyBkZXBsb3llZC4gKi9cbiAgc2NyYXBlRmFsbGJhY2s6IGJvb2xlYW47XG4gIC8qKiBUaGUgbmFtZWQgVVJMIHBvbGljeSBpbiBmb3JjZS4gKi9cbiAgdXJsUG9saWN5OiBVcmxQb2xpY3lNb2RlO1xuICAvKiogQ29tcGlsZWQgYWxsb3ctbGlzdCAocGVybWl0LWFsbCB1bmRlciB0aGUgYHVucmVzdHJpY3RlZGAgcG9saWN5KS4gKi9cbiAgYWxsb3dMaXN0OiBVcmxBbGxvd0xpc3Q7XG4gIC8qKiBEZWZhdWx0IHBlci10b29sIGFwcHJvdmFsIHBvbGljeS4gKi9cbiAgYXBwcm92YWw6IEFwcHJvdmFsUG9saWN5O1xufVxuXG4vKiogSlNPTiBTY2hlbWEgcHVibGlzaGVkIG9uIHRoZSBtYW5pZmVzdCdzIGBjb25maWcuc2NoZW1hYC4gKi9cbmV4cG9ydCBjb25zdCBXRUJfU0VBUkNIX0NPTkZJR19TQ0hFTUE6IEpTT05TY2hlbWE3ID0ge1xuICB0eXBlOiBcIm9iamVjdFwiLFxuICBwcm9wZXJ0aWVzOiB7XG4gICAgbW9kZWw6IHtcbiAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgXCJEZWZhdWx0IHdlYi1zZWFyY2ggbW9kZWwgKGVuZHBvaW50IG5hbWUsIGxvb3NlIG5hbWUsIG9yIGNsYXNzKS4gRnV6enktbWF0Y2hlZC4gRW52OiBXRUJfU0VBUkNIX01PREVMLCB0aGVuIERBVEFCUklDS1NfU0VSVklOR19FTkRQT0lOVF9OQU1FLlwiLFxuICAgIH0sXG4gICAgbW9kZWxGYWxsYmFja3M6IHtcbiAgICAgIHR5cGU6IFwiYXJyYXlcIixcbiAgICAgIGl0ZW1zOiB7IHR5cGU6IFwic3RyaW5nXCIgfSxcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICBcIk9yZGVyZWQgd2ViLXNlYXJjaCBtb2RlbCBjYW5kaWRhdGVzIHdoZW4gYG1vZGVsYCBpcyB1bnNldCAoR2VtaW5pLCB0aGVuIEdQVCkuIEVudjogV0VCX1NFQVJDSF9NT0RFTF9GQUxMQkFDS1MuXCIsXG4gICAgfSxcbiAgICB3ZWJTZWFyY2hUb29sczoge1xuICAgICAgdHlwZTogXCJvYmplY3RcIixcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAnUHJvdmlkZXIgLT4gdG9vbC1zcGVjIG92ZXJyaWRlIG1hcCBtZXJnZWQgb3ZlciB0aGUgYnVpbHQtaW4gZGVmYXVsdHMgKG9wZW5haSAtPiB7XCJ0eXBlXCI6XCJ3ZWJfc2VhcmNoXCJ9LCBnZW1pbmkgLT4ge1wiZ29vZ2xlX3NlYXJjaFwiOnt9fSkuIEVudjogV0VCX1NFQVJDSF9UT09MUyAoSlNPTikuJyxcbiAgICB9LFxuICAgIG1vZGVsRnV6enlNYXRjaDoge1xuICAgICAgdHlwZTogXCJib29sZWFuXCIsXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgXCJGdXp6eS1tYXRjaCBsb29zZSBtb2RlbCBuYW1lcyBhZ2FpbnN0IHRoZSBsaXZlIGNhdGFsb2d1ZS4gRGVmYXVsdCB0cnVlIChlbnY6IFdFQl9TRUFSQ0hfRlVaWlkpLlwiLFxuICAgIH0sXG4gICAgbW9kZWxGdXp6eVRocmVzaG9sZDoge1xuICAgICAgdHlwZTogXCJudW1iZXJcIixcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICBcIkZ1c2UuanMgc2NvcmUgdGhyZXNob2xkIGJlbG93IHdoaWNoIGEgZnV6enkgbW9kZWwgbWF0Y2ggaXMgYWNjZXB0ZWQgKGVudjogV0VCX1NFQVJDSF9GVVpaWV9USFJFU0hPTEQpLlwiLFxuICAgIH0sXG4gICAgbWF4Q2l0YXRpb25zOiB7XG4gICAgICB0eXBlOiBcIm51bWJlclwiLFxuICAgICAgZGVzY3JpcHRpb246IFwiSGFyZCBjYXAgb24gY2l0YXRpb25zIHJldHVybmVkIChlbnY6IFdFQl9TRUFSQ0hfTUFYX0NJVEFUSU9OUykuXCIsXG4gICAgfSxcbiAgICBmZXRjaE1heExlbmd0aDoge1xuICAgICAgdHlwZTogXCJudW1iZXJcIixcbiAgICAgIGRlc2NyaXB0aW9uOiBcIkhhcmQgY2FwIG9uIHdlYl9mZXRjaCBjb250ZW50IGxlbmd0aCAoZW52OiBXRUJfU0VBUkNIX0ZFVENIX01BWF9MRU5HVEgpLlwiLFxuICAgIH0sXG4gICAgdGltZW91dE1zOiB7XG4gICAgICB0eXBlOiBcIm51bWJlclwiLFxuICAgICAgZGVzY3JpcHRpb246IFwiUGVyLXJlcXVlc3QgbmV0d29yayB0aW1lb3V0IGluIG1zIChlbnY6IFdFQl9TRUFSQ0hfVElNRU9VVF9NUykuXCIsXG4gICAgfSxcbiAgICBzY3JhcGVGYWxsYmFjazoge1xuICAgICAgdHlwZTogXCJib29sZWFuXCIsXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgXCJGYWxsIGJhY2sgdG8gYSBEdWNrRHVja0dvIHNjcmFwZSB3aGVuIG5vIHdlYi1zZWFyY2gtY2FwYWJsZSBtb2RlbCBpcyBkZXBsb3llZC4gRGVmYXVsdCB0cnVlIChlbnY6IFdFQl9TRUFSQ0hfU0NSQVBFX0ZBTExCQUNLKS5cIixcbiAgICB9LFxuICAgIHVybFBvbGljeToge1xuICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgIGVudW06IFtcInVucmVzdHJpY3RlZFwiLCBcImFsbG93bGlzdFwiXSxcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICBcIldoaWNoIFVSTHMgdGhlIHRvb2xzIG1heSByZWFjaC4gRGVmYXVsdHMgdG8gYWxsb3dsaXN0IHdoZW4gYWxsb3dlZFVybHMgaGFzIGVudHJpZXMsIGVsc2UgdW5yZXN0cmljdGVkIChlbnY6IFdFQl9TRUFSQ0hfVVJMX1BPTElDWSkuXCIsXG4gICAgfSxcbiAgICBhbGxvd2VkVXJsczoge1xuICAgICAgdHlwZTogXCJhcnJheVwiLFxuICAgICAgaXRlbXM6IHsgdHlwZTogXCJzdHJpbmdcIiB9LFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICdVUkwgYWxsb3ctbGlzdCBvZiBnbG9icyAvIGJhcmUgaG9zdHMgKGUuZy4gXCIqLmRhdGFicmlja3MuY29tXCIsIFwiZG9jcy5leGFtcGxlLmNvbVwiKS4gQWxzbyBhY2NlcHRzIGEgY29tbWEvc3BhY2Utc2VwYXJhdGVkIHN0cmluZy4gRmFsbHMgYmFjayB0byBXRUJfU0VBUkNIX0FMTE9XRURfVVJMUy4gRW1wdHkgPSB1bnJlc3RyaWN0ZWQuJyxcbiAgICB9LFxuICAgIGFwcHJvdmFsOiB7XG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgJ0FwcHJvdmFsIGdhdGUgZm9yIGJvdGggdG9vbHM6IHRydWUgZ2F0ZXMgZXZlcnkgY2FsbCwgYSBnbG9iIChvciBsaXN0IG9mIGdsb2JzKSBnYXRlcyBvbmx5IG1hdGNoaW5nIFVSTHMsIG9yIHN0YXRlIHRoZSBtb2RlIGRpcmVjdGx5IGFzIHtcIm1vZGVcIjpcIm5vbmVcInxcImFsd2F5c1wifFwidXJsc1wifS4gRGVmYXVsdCBub25lLicsXG4gICAgICBvbmVPZjogW1xuICAgICAgICB7IHR5cGU6IFwiYm9vbGVhblwiIH0sXG4gICAgICAgIHsgdHlwZTogXCJzdHJpbmdcIiB9LFxuICAgICAgICB7IHR5cGU6IFwiYXJyYXlcIiwgaXRlbXM6IHsgdHlwZTogXCJzdHJpbmdcIiB9IH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcIm9iamVjdFwiLFxuICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgIG1vZGU6IHsgdHlwZTogXCJzdHJpbmdcIiwgZW51bTogW1wibm9uZVwiLCBcImFsd2F5c1wiLCBcInVybHNcIl0gfSxcbiAgICAgICAgICAgIHBhdHRlcm5zOiB7IHR5cGU6IFwiYXJyYXlcIiwgaXRlbXM6IHsgdHlwZTogXCJzdHJpbmdcIiB9IH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXF1aXJlZDogW1wibW9kZVwiXSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSxcbiAgfSxcbn07XG5cbi8qKiBQYXJzZSBhIHBvc2l0aXZlIGludGVnZXIgZW52L2NvbmZpZyB2YWx1ZSwgZWxzZSB0aGUgZmFsbGJhY2suICovXG5mdW5jdGlvbiByZXNvbHZlUG9zaXRpdmVJbnQodmFsdWU6IG51bWJlciB8IHVuZGVmaW5lZCwgZW52S2V5OiBzdHJpbmcsIGZhbGxiYWNrOiBudW1iZXIpOiBudW1iZXIge1xuICBpZiAodHlwZW9mIHZhbHVlID09PSBcIm51bWJlclwiICYmIE51bWJlci5pc0Zpbml0ZSh2YWx1ZSkgJiYgdmFsdWUgPiAwKSByZXR1cm4gTWF0aC5mbG9vcih2YWx1ZSk7XG4gIGNvbnN0IGVudiA9IE51bWJlcihwcm9jZXNzLmVudltlbnZLZXldKTtcbiAgcmV0dXJuIE51bWJlci5pc0Zpbml0ZShlbnYpICYmIGVudiA+IDAgPyBNYXRoLmZsb29yKGVudikgOiBmYWxsYmFjaztcbn1cblxuLyoqXG4gKiBQYXJzZSB0aGUgYFdFQl9TRUFSQ0hfVE9PTFNgIGVudiB2YXIgKEpTT04gb2JqZWN0KSwgZWxzZSBge31gLiBBIHZhbHVlIHRoYXRcbiAqIGlzIHNldCBidXQgbm90IGEgSlNPTiBvYmplY3QgaXMgYSBkZXBsb3ltZW50IG1pc3Rha2UgdGhhdCB3b3VsZCBvdGhlcndpc2VcbiAqIHNpbGVudGx5IGxlYXZlIHRoZSBidWlsdC1pbiB0b29sIHNwZWNzIGluIHBsYWNlLCBzbyBpdCB0aHJvd3MuXG4gKi9cbmZ1bmN0aW9uIHBhcnNlVG9vbHNFbnYoKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4ge1xuICBjb25zdCByYXcgPSBzdHJpbmcudHJpbVRvTnVsbChwcm9jZXNzLmVudi5XRUJfU0VBUkNIX1RPT0xTKTtcbiAgaWYgKHJhdyA9PT0gbnVsbCkgcmV0dXJuIHt9O1xuICBjb25zdCBwYXJzZWQgPSBqc29uLnBhcnNlUmVjb3JkKHJhdyk7XG4gIGlmICghcGFyc2VkKSB7XG4gICAgdGhyb3cgbmV3IENvbmZpZ3VyYXRpb25FcnJvcihcbiAgICAgIFwiV0VCX1NFQVJDSF9UT09MUyBtdXN0IGJlIGEgSlNPTiBvYmplY3QgbWFwcGluZyBhIHByb3ZpZGVyIGZhbWlseSB0byBpdHMgdG9vbCBzcGVjXCIsXG4gICAgICB7IGNvbnRleHQ6IHsgZW52VmFyOiBcIldFQl9TRUFSQ0hfVE9PTFNcIiB9IH0sXG4gICAgKTtcbiAgfVxuICByZXR1cm4gcGFyc2VkO1xufVxuXG4vKiogUmVhZCB0aGUgcGlubmVkIGVuZHBvaW50IGlkIGFuZCByZWNvcmQgd2hpY2ggc291cmNlIHN1cHBsaWVkIGl0LiAqL1xuZnVuY3Rpb24gcmVzb2x2ZU1vZGVsUGluKGNvbmZpZzogV2ViU2VhcmNoUGx1Z2luQ29uZmlnKTogeyBtb2RlbD86IHN0cmluZzsgc291cmNlOiBNb2RlbFNvdXJjZSB9IHtcbiAgY29uc3QgZnJvbUNvbmZpZyA9IHN0cmluZy50cmltVG9OdWxsKGNvbmZpZy5tb2RlbCk7XG4gIGlmIChmcm9tQ29uZmlnICE9PSBudWxsKSByZXR1cm4geyBtb2RlbDogZnJvbUNvbmZpZywgc291cmNlOiBcImNvbmZpZ1wiIH07XG4gIGNvbnN0IGZyb21Nb2RlbEVudiA9IHN0cmluZy50cmltVG9OdWxsKHByb2Nlc3MuZW52W01PREVMX0VOVl0pO1xuICBpZiAoZnJvbU1vZGVsRW52ICE9PSBudWxsKSByZXR1cm4geyBtb2RlbDogZnJvbU1vZGVsRW52LCBzb3VyY2U6IE1PREVMX0VOViB9O1xuICBjb25zdCBmcm9tUmVzb3VyY2VFbnYgPSBzdHJpbmcudHJpbVRvTnVsbChwcm9jZXNzLmVudltTRVJWSU5HX0VORFBPSU5UX0VOVl0pO1xuICBpZiAoZnJvbVJlc291cmNlRW52ICE9PSBudWxsKSByZXR1cm4geyBtb2RlbDogZnJvbVJlc291cmNlRW52LCBzb3VyY2U6IFNFUlZJTkdfRU5EUE9JTlRfRU5WIH07XG4gIHJldHVybiB7IHNvdXJjZTogXCJub25lXCIgfTtcbn1cblxuLyoqXG4gKiBSZXNvbHZlIHRoZSBuYW1lZCB7QGxpbmsgVXJsUG9saWN5TW9kZX0sIGZhaWxpbmcgb24gYSBzdGF0ZWQgbW9kZSB0aGF0XG4gKiBjb250cmFkaWN0cyB0aGUgYWxsb3ctbGlzdCBlbnRyaWVzIGl0IHdhcyBnaXZlbi5cbiAqL1xuZnVuY3Rpb24gcmVzb2x2ZVVybFBvbGljeShcbiAgY29uZmlndXJlZDogVXJsUG9saWN5TW9kZSB8IHVuZGVmaW5lZCxcbiAgcGF0dGVybnM6IHJlYWRvbmx5IHN0cmluZ1tdLFxuKTogVXJsUG9saWN5TW9kZSB7XG4gIGNvbnN0IHJhdyA9IGNvbmZpZ3VyZWQgPz8gc3RyaW5nLnRyaW1Ub051bGwocHJvY2Vzcy5lbnYuV0VCX1NFQVJDSF9VUkxfUE9MSUNZKSA/PyB1bmRlZmluZWQ7XG4gIGlmIChyYXcgPT09IHVuZGVmaW5lZCkgcmV0dXJuIHBhdHRlcm5zLmxlbmd0aCA+IDAgPyBcImFsbG93bGlzdFwiIDogXCJ1bnJlc3RyaWN0ZWRcIjtcbiAgaWYgKHJhdyAhPT0gXCJhbGxvd2xpc3RcIiAmJiByYXcgIT09IFwidW5yZXN0cmljdGVkXCIpIHtcbiAgICB0aHJvdyBuZXcgQ29uZmlndXJhdGlvbkVycm9yKFxuICAgICAgJ3VybFBvbGljeSBtdXN0IGJlIFwiYWxsb3dsaXN0XCIgb3IgXCJ1bnJlc3RyaWN0ZWRcIiAoZW52OiBXRUJfU0VBUkNIX1VSTF9QT0xJQ1kpJyxcbiAgICAgIHsgY29udGV4dDogeyBmaWVsZDogXCJ1cmxQb2xpY3lcIiwgZW52VmFyOiBcIldFQl9TRUFSQ0hfVVJMX1BPTElDWVwiIH0gfSxcbiAgICApO1xuICB9XG4gIGlmIChyYXcgPT09IFwiYWxsb3dsaXN0XCIgJiYgcGF0dGVybnMubGVuZ3RoID09PSAwKSB7XG4gICAgdGhyb3cgbmV3IENvbmZpZ3VyYXRpb25FcnJvcihcbiAgICAgICd1cmxQb2xpY3kgXCJhbGxvd2xpc3RcIiBuZWVkcyBhdCBsZWFzdCBvbmUgZW50cnkgaW4gYWxsb3dlZFVybHMgKGVudjogV0VCX1NFQVJDSF9BTExPV0VEX1VSTFMpJyxcbiAgICAgIHsgY29udGV4dDogeyBmaWVsZDogXCJhbGxvd2VkVXJsc1wiLCBlbnZWYXI6IFwiV0VCX1NFQVJDSF9BTExPV0VEX1VSTFNcIiB9IH0sXG4gICAgKTtcbiAgfVxuICBpZiAocmF3ID09PSBcInVucmVzdHJpY3RlZFwiICYmIHBhdHRlcm5zLmxlbmd0aCA+IDApIHtcbiAgICB0aHJvdyBuZXcgQ29uZmlndXJhdGlvbkVycm9yKFxuICAgICAgJ3VybFBvbGljeSBcInVucmVzdHJpY3RlZFwiIGNhbm5vdCBiZSBjb21iaW5lZCB3aXRoIGFsbG93ZWRVcmxzIGVudHJpZXM7IGRyb3AgdGhlIGVudHJpZXMgb3Igc2V0IHVybFBvbGljeSB0byBcImFsbG93bGlzdFwiJyxcbiAgICAgIHsgY29udGV4dDogeyBmaWVsZDogXCJhbGxvd2VkVXJsc1wiLCBlbnZWYXI6IFwiV0VCX1NFQVJDSF9BTExPV0VEX1VSTFNcIiB9IH0sXG4gICAgKTtcbiAgfVxuICByZXR1cm4gcmF3O1xufVxuXG4vKipcbiAqIE5vcm1hbGl6ZSBhbnkgYWNjZXB0ZWQgYXBwcm92YWwgc3BlbGxpbmcgaW50byBhbiB7QGxpbmsgQXBwcm92YWxQb2xpY3l9LlxuICogQSBwYXR0ZXJuIGdhdGUgd2l0aCBubyB1c2FibGUgcGF0dGVybnMgY29sbGFwc2VzIHRvIGBcIm5vbmVcImAgcmF0aGVyIHRoYW5cbiAqIGdhdGluZyBldmVyeXRoaW5nLCBzbyBhIGJsYW5rIGVudiB2YXIgY2FuIG5ldmVyIHdlZGdlIHRoZSB0b29scyBiZWhpbmQgYW5cbiAqIGFwcHJvdmFsIG5vYm9keSBjb25maWd1cmVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9BcHByb3ZhbFBvbGljeShnYXRlOiBBcHByb3ZhbEdhdGUgfCBBcHByb3ZhbFBvbGljeSB8IHVuZGVmaW5lZCk6IEFwcHJvdmFsUG9saWN5IHtcbiAgaWYgKGdhdGUgPT09IHVuZGVmaW5lZCB8fCBnYXRlID09PSBmYWxzZSkgcmV0dXJuIHsgbW9kZTogXCJub25lXCIgfTtcbiAgaWYgKGdhdGUgPT09IHRydWUpIHJldHVybiB7IG1vZGU6IFwiYWx3YXlzXCIgfTtcbiAgaWYgKG9iamVjdC5pc1JlY29yZChnYXRlKSAmJiBcIm1vZGVcIiBpbiBnYXRlKSB7XG4gICAgaWYgKGdhdGUubW9kZSA9PT0gXCJ1cmxzXCIpIHtcbiAgICAgIGNvbnN0IHBhdHRlcm5zID0gcGFyc2VBbGxvd2VkVXJscyhbLi4uZ2F0ZS5wYXR0ZXJuc10pO1xuICAgICAgcmV0dXJuIHBhdHRlcm5zLmxlbmd0aCA+IDAgPyB7IG1vZGU6IFwidXJsc1wiLCBwYXR0ZXJucyB9IDogeyBtb2RlOiBcIm5vbmVcIiB9O1xuICAgIH1cbiAgICBpZiAoZ2F0ZS5tb2RlID09PSBcImFsd2F5c1wiIHx8IGdhdGUubW9kZSA9PT0gXCJub25lXCIpIHJldHVybiB7IG1vZGU6IGdhdGUubW9kZSB9O1xuICAgIHRocm93IG5ldyBDb25maWd1cmF0aW9uRXJyb3IoJ2FwcHJvdmFsIG1vZGUgbXVzdCBiZSBcIm5vbmVcIiwgXCJhbHdheXNcIiBvciBcInVybHNcIicsIHtcbiAgICAgIGNvbnRleHQ6IHsgZmllbGQ6IFwiYXBwcm92YWxcIiB9LFxuICAgIH0pO1xuICB9XG4gIGNvbnN0IHBhdHRlcm5zID0gcGFyc2VBbGxvd2VkVXJscyh0eXBlb2YgZ2F0ZSA9PT0gXCJzdHJpbmdcIiA/IGdhdGUgOiBbLi4uZ2F0ZV0pO1xuICByZXR1cm4gcGF0dGVybnMubGVuZ3RoID4gMCA/IHsgbW9kZTogXCJ1cmxzXCIsIHBhdHRlcm5zIH0gOiB7IG1vZGU6IFwibm9uZVwiIH07XG59XG5cbi8qKlxuICogUmVzb2x2ZSBwbHVnaW4gY29uZmlnIG92ZXIgZW52aXJvbm1lbnQgZGVmYXVsdHMgaW50byB0aGUgY29uY3JldGVcbiAqIHtAbGluayBSZXNvbHZlZFdlYlNlYXJjaENvbmZpZ30uIFdoaWNoIG1vZGVsIGlzIHVzZWQgc3RheXMgbGF6eSAtIGl0IGlzXG4gKiBwaWNrZWQgYXQgY2FsbCB0aW1lIGFnYWluc3QgdGhlIGxpdmUgY2F0YWxvZ3VlIC0gYnV0IGV2ZXJ5dGhpbmcgZWxzZSBpc1xuICogc2V0dGxlZCBoZXJlLCBhbmQgYSBjb250cmFkaWN0aW9uICh1bnBhcnNlYWJsZSBgV0VCX1NFQVJDSF9UT09MU2AsIGFuXG4gKiB1bmtub3duIFVSTCBwb2xpY3ksIGEgcG9saWN5IHRoYXQgZGlzYWdyZWVzIHdpdGggaXRzIGFsbG93LWxpc3QpIHRocm93cyBhXG4gKiB7QGxpbmsgQ29uZmlndXJhdGlvbkVycm9yfSBuYW1pbmcgdGhlIGZpZWxkIGFuZCB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlV2ViU2VhcmNoQ29uZmlnKFxuICBjb25maWc6IFdlYlNlYXJjaFBsdWdpbkNvbmZpZyA9IHt9LFxuKTogUmVzb2x2ZWRXZWJTZWFyY2hDb25maWcge1xuICBjb25zdCBwYXR0ZXJucyA9IHBhcnNlQWxsb3dlZFVybHMoY29uZmlnLmFsbG93ZWRVcmxzID8/IHByb2Nlc3MuZW52LldFQl9TRUFSQ0hfQUxMT1dFRF9VUkxTKTtcbiAgY29uc3QgdXJsUG9saWN5ID0gcmVzb2x2ZVVybFBvbGljeShjb25maWcudXJsUG9saWN5LCBwYXR0ZXJucyk7XG4gIGNvbnN0IHsgbW9kZWwsIHNvdXJjZSB9ID0gcmVzb2x2ZU1vZGVsUGluKGNvbmZpZyk7XG4gIGNvbnN0IGZhbGxiYWNrcyA9IHN0cmluZy5wYXJzZUxpc3QoXG4gICAgY29uZmlnLm1vZGVsRmFsbGJhY2tzID8/IHByb2Nlc3MuZW52LldFQl9TRUFSQ0hfTU9ERUxfRkFMTEJBQ0tTLFxuICApO1xuICBjb25zdCBmdXp6eVRocmVzaG9sZFJhdyA9XG4gICAgY29uZmlnLm1vZGVsRnV6enlUaHJlc2hvbGQgPz8gTnVtYmVyKHByb2Nlc3MuZW52LldFQl9TRUFSQ0hfRlVaWllfVEhSRVNIT0xEKTtcbiAgcmV0dXJuIHtcbiAgICAuLi4obW9kZWwgPyB7IG1vZGVsIH0gOiB7fSksXG4gICAgbW9kZWxTb3VyY2U6IHNvdXJjZSxcbiAgICBtb2RlbEZhbGxiYWNrczogZmFsbGJhY2tzLmxlbmd0aCA+IDAgPyBmYWxsYmFja3MgOiBERUZBVUxUX01PREVMX0ZBTExCQUNLUyxcbiAgICB3ZWJTZWFyY2hUb29sczogeyAuLi5wYXJzZVRvb2xzRW52KCksIC4uLihjb25maWcud2ViU2VhcmNoVG9vbHMgPz8ge30pIH0sXG4gICAgZnV6enk6IGNvbmZpZy5tb2RlbEZ1enp5TWF0Y2ggPz8gb2JqZWN0LnRvQm9vbGVhbihwcm9jZXNzLmVudi5XRUJfU0VBUkNIX0ZVWlpZKSA/PyB0cnVlLFxuICAgIGZ1enp5VGhyZXNob2xkOlxuICAgICAgTnVtYmVyLmlzRmluaXRlKGZ1enp5VGhyZXNob2xkUmF3KSAmJiBmdXp6eVRocmVzaG9sZFJhd1xuICAgICAgICA/IE51bWJlcihmdXp6eVRocmVzaG9sZFJhdylcbiAgICAgICAgOiBzZXJ2aW5nLkRFRkFVTFRfRlVaWllfVEhSRVNIT0xELFxuICAgIG1heENpdGF0aW9uczogcmVzb2x2ZVBvc2l0aXZlSW50KFxuICAgICAgY29uZmlnLm1heENpdGF0aW9ucyxcbiAgICAgIFwiV0VCX1NFQVJDSF9NQVhfQ0lUQVRJT05TXCIsXG4gICAgICBERUZBVUxUX01BWF9DSVRBVElPTlMsXG4gICAgKSxcbiAgICBmZXRjaE1heExlbmd0aDogcmVzb2x2ZVBvc2l0aXZlSW50KFxuICAgICAgY29uZmlnLmZldGNoTWF4TGVuZ3RoLFxuICAgICAgXCJXRUJfU0VBUkNIX0ZFVENIX01BWF9MRU5HVEhcIixcbiAgICAgIERFRkFVTFRfRkVUQ0hfTUFYX0xFTkdUSCxcbiAgICApLFxuICAgIHRpbWVvdXRNczogcmVzb2x2ZVBvc2l0aXZlSW50KGNvbmZpZy50aW1lb3V0TXMsIFwiV0VCX1NFQVJDSF9USU1FT1VUX01TXCIsIERFRkFVTFRfVElNRU9VVF9NUyksXG4gICAgc2NyYXBlRmFsbGJhY2s6XG4gICAgICBjb25maWcuc2NyYXBlRmFsbGJhY2sgPz8gb2JqZWN0LnRvQm9vbGVhbihwcm9jZXNzLmVudi5XRUJfU0VBUkNIX1NDUkFQRV9GQUxMQkFDSykgPz8gdHJ1ZSxcbiAgICB1cmxQb2xpY3ksXG4gICAgYWxsb3dMaXN0OiB0b1VybEFsbG93TGlzdCh1cmxQb2xpY3kgPT09IFwiYWxsb3dsaXN0XCIgPyBwYXR0ZXJucyA6IFtdKSxcbiAgICBhcHByb3ZhbDogdG9BcHByb3ZhbFBvbGljeShjb25maWcuYXBwcm92YWwpLFxuICB9O1xufVxuXG4vKipcbiAqIFJlc29sdmUgYW4gYXBwcm92YWwgZ2F0ZSBhZ2FpbnN0IGEgc2V0IG9mIGNhbmRpZGF0ZSBVUkxzIGludG8gYSBjb25jcmV0ZVxuICogYm9vbGVhbjogYFwibm9uZVwiYCAvIGBcImFsd2F5c1wiYCBwYXNzIHN0cmFpZ2h0IHRocm91Z2g7IGEgYFwidXJsc1wiYCBwb2xpY3lcbiAqIGdhdGVzIHdoZW4gQU5ZIGNhbmRpZGF0ZSBtYXRjaGVzLiBFbXB0eSBjYW5kaWRhdGVzIHdpdGggYSBwYXR0ZXJuIGdhdGVcbiAqIG5ldmVyIG1hdGNoIChub3RoaW5nIHRvIGFwcHJvdmUpLiBSZXVzZXMgdGhlIGFsbG93LWxpc3QgbWF0Y2hlciBzbyBhcHByb3ZhbFxuICogZ2xvYnMgcmVhZCBleGFjdGx5IGxpa2UgYWxsb3ctbGlzdCBnbG9icy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFwcHJvdmFsTWF0Y2hlcyhcbiAgZ2F0ZTogQXBwcm92YWxHYXRlIHwgQXBwcm92YWxQb2xpY3ksXG4gIHVybHM6IHJlYWRvbmx5IHN0cmluZ1tdLFxuKTogYm9vbGVhbiB7XG4gIGNvbnN0IHBvbGljeSA9IHRvQXBwcm92YWxQb2xpY3koZ2F0ZSk7XG4gIGlmIChwb2xpY3kubW9kZSA9PT0gXCJub25lXCIpIHJldHVybiBmYWxzZTtcbiAgaWYgKHBvbGljeS5tb2RlID09PSBcImFsd2F5c1wiKSByZXR1cm4gdHJ1ZTtcbiAgY29uc3QgbGlzdCA9IHRvVXJsQWxsb3dMaXN0KHBvbGljeS5wYXR0ZXJucyk7XG4gIHJldHVybiB1cmxzLnNvbWUoKHVybCkgPT4gbGlzdC5hbGxvd3ModXJsKSk7XG59XG4iXX0=
@@ -14,8 +14,8 @@
14
14
  *
15
15
  * @module
16
16
  */
17
- import type { ResolvedWebSearchConfig } from "./config.js";
18
- import type { WebFetchRequest, WebFetchResult } from "./schema.js";
17
+ import type { ResolvedWebSearchConfig } from "./config.ts";
18
+ import type { WebFetchRequest, WebFetchResult } from "./schema.ts";
19
19
  /**
20
20
  * Fetch a single URL and return its content in the requested format.
21
21
  *
package/lib/src/fetch.js CHANGED
@@ -83,4 +83,4 @@ export async function runWebFetch(request, config, signal) {
83
83
  truncated,
84
84
  };
85
85
  }
86
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmV0Y2guanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZmV0Y2gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBRUgsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzdDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDM0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRS9DLE9BQU8sRUFBRSxjQUFjLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDckUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFVBQVUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM3RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBR3hDLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztBQVU5QyxtRUFBbUU7QUFDbkUsU0FBUyxZQUFZLENBQUMsSUFBWTtJQUNoQyxNQUFNLEtBQUssR0FBRyxrQ0FBa0MsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDNUQsTUFBTSxLQUFLLEdBQUcsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDcEUsT0FBTyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7QUFDOUMsQ0FBQztBQUVELG9FQUFvRTtBQUNwRSxTQUFTLFFBQVEsQ0FBQyxJQUFZLEVBQUUsR0FBVztJQUN6QyxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksR0FBRztRQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxF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QUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7S0FDMUMsQ0FBQyxDQUFDO0lBRUgsT0FBTztRQUNMLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRztRQUNiLE1BQU0sRUFBRSxJQUFJLENBQUMsVUFBVTtRQUN2QixHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRSxXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDOUQsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQzNCLE9BQU87UUFDUCxTQUFTO0tBQ1YsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFBhZ2UgZmV0Y2hpbmcgb3ZlciB7QGxpbmsgaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvZ290LXNjcmFwaW5nIHwgZ290LXNjcmFwaW5nfVxuICogLSBhIGBnb3RgIHdyYXBwZXIgdGhhdCBnZW5lcmF0ZXMgYnJvd3Nlci1saWtlIFRMUyArIGhlYWRlciBmaW5nZXJwcmludHMsIHNvXG4gKiBmZXRjaGVzIHN1cnZpdmUgdGhlIGJvdCB3YWxscyBhIHBsYWluIGBmZXRjaGAgdHJpcHMuIHtAbGluayBydW5XZWJGZXRjaH1cbiAqIGVuZm9yY2VzIHRoZSBVUkwgYWxsb3ctbGlzdCAoYW4gZXhwbGljaXQgZmV0Y2ggb2YgYSBkaXNhbGxvd2VkIFVSTCBpc1xuICogcmVmdXNlZCwgbm90IHNpbGVudGx5IGVtcHRpZWQpLCBmZXRjaGVzIHdpdGggdGhlIHBsdWdpbidzIHRpbWVvdXQsIGFuZFxuICogcmV0dXJucyBlaXRoZXIgdGhlIHJhdyBIVE1MIG9yIGEgcmVhZGFibGUgcGxhaW4tdGV4dCByZWR1Y3Rpb24sIGNhcHBlZCBhdFxuICogdGhlIGNvbmZpZ3VyZWQgbGVuZ3RoLlxuICpcbiAqIFRoZSBIVE1MLXRvLXRleHQgcmVkdWN0aW9uIGlzIGRlbGliZXJhdGVseSBkZXBlbmRlbmN5LWZyZWUgKHN0cmlwXG4gKiBzY3JpcHQvc3R5bGUsIHVud3JhcCB0YWdzLCBkZWNvZGUgYSBoYW5kZnVsIG9mIGVudGl0aWVzLCBjb2xsYXBzZVxuICogd2hpdGVzcGFjZSk6IGdvb2QgZW5vdWdoIHRvIGZlZWQgYSBtb2RlbCwgYW5kIGl0IGtlZXBzIHRoZSBhZGQtb24nc1xuICogZGVwZW5kZW5jeSBzdXJmYWNlIHRvIHRoZSB0d28gbGlicmFyaWVzIHRoZSB0YXNrIGNhbGxlZCBmb3IuXG4gKlxuICogQG1vZHVsZVxuICovXG5cbmltcG9ydCB7IGxvZyB9IGZyb20gXCJAZGJ4LXRvb2xzL3NoYXJlZC1jb3JlXCI7XG5pbXBvcnQgeyBnb3RTY3JhcGluZyB9IGZyb20gXCJnb3Qtc2NyYXBpbmdcIjtcbmltcG9ydCB7IGFzc2VydFVybEFsbG93ZWQgfSBmcm9tIFwiLi9hbGxvd2xpc3RcIjtcbmltcG9ydCB0eXBlIHsgUmVzb2x2ZWRXZWJTZWFyY2hDb25maWcgfSBmcm9tIFwiLi9jb25maWdcIjtcbmltcG9ydCB7IHRvQ2FsbFNldHRpbmdzLCB3ZWJGZXRjaEV4ZWN1dGVEZWZhdWx0cyB9IGZyb20gXCIuL2RlZmF1bHRzXCI7XG5pbXBvcnQgeyBkZWNvZGVIdG1sRW50aXRpZXMsIGh0bWxUb1RleHQgfSBmcm9tIFwiLi9odG1sLXRleHRcIjtcbmltcG9ydCB7IGV4ZWN1dGVSZWFkIH0gZnJvbSBcIi4vcnVudGltZVwiO1xuaW1wb3J0IHR5cGUgeyBXZWJGZXRjaFJlcXVlc3QsIFdlYkZldGNoUmVzdWx0IH0gZnJvbSBcIi4vc2NoZW1hXCI7XG5cbmNvbnN0IGxvZ2dlciA9IGxvZy5sb2dnZXIoXCJ3ZWItc2VhcmNoL2ZldGNoXCIpO1xuXG4vKiogVGhlIHNsaWNlIG9mIGEgZ290LXNjcmFwaW5nIHJlc3BvbnNlIHRoaXMgbW9kdWxlIHJlYWRzLiAqL1xuaW50ZXJmYWNlIEZldGNoZWRQYWdlIHtcbiAgdXJsOiBzdHJpbmc7XG4gIHN0YXR1c0NvZGU6IG51bWJlcjtcbiAgY29udGVudFR5cGU6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgYm9keTogc3RyaW5nO1xufVxuXG4vKiogUHVsbCB0aGUgPHRpdGxlPiB0ZXh0IG91dCBvZiBhbiBIVE1MIGRvY3VtZW50LCB3aGVuIHByZXNlbnQuICovXG5mdW5jdGlvbiBleHRyYWN0VGl0bGUoaHRtbDogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgbWF0Y2ggPSAvPHRpdGxlW14+XSo+KFtcXHNcXFNdKj8pPFxcL3RpdGxlPi9pLmV4ZWMoaHRtbCk7XG4gIGNvbnN0IHRpdGxlID0gbWF0Y2g/LlsxXSA/IGRlY29kZUh0bWxFbnRpdGllcyhtYXRjaFsxXSkudHJpbSgpIDogXCJcIjtcbiAgcmV0dXJuIHRpdGxlLmxlbmd0aCA+IDAgPyB0aXRsZSA6IHVuZGVmaW5lZDtcbn1cblxuLyoqIFRydW5jYXRlIGB0ZXh0YCB0byBgbWF4YCBjaGFycywgcmVwb3J0aW5nIHdoZXRoZXIgaXQgd2FzIGN1dC4gKi9cbmZ1bmN0aW9uIHRydW5jYXRlKHRleHQ6IHN0cmluZywgbWF4OiBudW1iZXIpOiB7IGNvbnRlbnQ6IHN0cmluZzsgdHJ1bmNhdGVkOiBib29sZWFuIH0ge1xuICBpZiAodGV4dC5sZW5ndGggPD0gbWF4KSByZXR1cm4geyBjb250ZW50OiB0ZXh0LCB0cnVuY2F0ZWQ6IGZhbHNlIH07XG4gIHJldHVybiB7IGNvbnRlbnQ6IHRleHQuc2xpY2UoMCwgbWF4KSwgdHJ1bmNhdGVkOiB0cnVlIH07XG59XG5cbi8qKlxuICogRmV0Y2ggYSBzaW5nbGUgVVJMIGFuZCByZXR1cm4gaXRzIGNvbnRlbnQgaW4gdGhlIHJlcXVlc3RlZCBmb3JtYXQuXG4gKlxuICogVGhyb3dzIHdoZW4gdGhlIFVSTCBpcyBub3QgcGVybWl0dGVkIGJ5IHRoZSBhbGxvdy1saXN0ICh0aGUgdmlzaWJsZSxcbiAqIGNvcnJlY3RhYmxlIGZhaWx1cmUgdGhlIGRlc2lnbiBjYWxscyBmb3Igb24gdGhlIGZldGNoIHBhdGgpLiBUaGUgcmVxdWVzdCdzXG4gKiBgbWF4TGVuZ3RoYCBuYXJyb3dzIChuZXZlciB3aWRlbnMpIHRoZSBwbHVnaW4ncyBgZmV0Y2hNYXhMZW5ndGhgIGNhcC5cbiAqIGBzaWduYWxgIGNhbmNlbHMgdGhlIGluLWZsaWdodCBmZXRjaC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJ1bldlYkZldGNoKFxuICByZXF1ZXN0OiBXZWJGZXRjaFJlcXVlc3QsXG4gIGNvbmZpZzogUmVzb2x2ZWRXZWJTZWFyY2hDb25maWcsXG4gIHNpZ25hbD86IEFib3J0U2lnbmFsLFxuKTogUHJvbWlzZTxXZWJGZXRjaFJlc3VsdD4ge1xuICBhc3NlcnRVcmxBbGxvd2VkKHJlcXVlc3QudXJsLCBjb25maWcuYWxsb3dMaXN0KTtcbiAgY29uc3QgY2FwID0gTWF0aC5taW4ocmVxdWVzdC5tYXhMZW5ndGggPz8gY29uZmlnLmZldGNoTWF4TGVuZ3RoLCBjb25maWcuZmV0Y2hNYXhMZW5ndGgpO1xuXG4gIC8vIFRoZSByZXNwb25zZSBpcyBjYWNoZWQgYmVmb3JlIHRoZSBmb3JtYXQgcmVkdWN0aW9uLCBzbyB0aGUgc2FtZSBwYWdlIHJlYWRcbiAgLy8gYXMgdGV4dCBhbmQgYXMgaHRtbCBzaGFyZXMgb25lIG5ldHdvcmsgcm91bmQgdHJpcC5cbiAgY29uc3QgcGFnZSA9IGF3YWl0IGV4ZWN1dGVSZWFkKFxuICAgIFwicGFnZS1mZXRjaFwiLFxuICAgIHRvQ2FsbFNldHRpbmdzKHdlYkZldGNoRXhlY3V0ZURlZmF1bHRzLCBjb25maWcudGltZW91dE1zLCBbXCJ3ZWItc2VhcmNoXCIsIFwiZmV0Y2hcIiwgcmVxdWVzdC51cmxdKSxcbiAgICBhc3luYyAoZXhlY3V0ZVNpZ25hbCk6IFByb21pc2U8RmV0Y2hlZFBhZ2U+ID0+IHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZ290U2NyYXBpbmcoe1xuICAgICAgICB1cmw6IHJlcXVlc3QudXJsLFxuICAgICAgICAvLyBnb3QncyBvd24gdGltZW91dCBhYm9ydHMgdGhlIHNvY2tldCBhbmQgcmVwb3J0cyB3aGljaCBwaGFzZSB0aW1lZFxuICAgICAgICAvLyBvdXQ7IHRoZSBpbnRlcmNlcHRvciB0aW1lb3V0IGJvdW5kcyB0aGUgd2hvbGUgYXR0ZW1wdCBhcm91bmQgaXQuXG4gICAgICAgIHRpbWVvdXQ6IHsgcmVxdWVzdDogY29uZmlnLnRpbWVvdXRNcyB9LFxuICAgICAgICB0aHJvd0h0dHBFcnJvcnM6IGZhbHNlLFxuICAgICAgICBmb2xsb3dSZWRpcmVjdDogdHJ1ZSxcbiAgICAgICAgLi4uKGV4ZWN1dGVTaWduYWwgPyB7IHNpZ25hbDogZXhlY3V0ZVNpZ25hbCB9IDoge30pLFxuICAgICAgfSk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB1cmw6IHJlc3BvbnNlLnVybCA/PyByZXF1ZXN0LnVybCxcbiAgICAgICAgc3RhdHVzQ29kZTogcmVzcG9uc2Uuc3RhdHVzQ29kZSxcbiAgICAgICAgY29udGVudFR5cGU6IHJlc3BvbnNlLmhlYWRlcnNbXCJjb250ZW50LXR5cGVcIl0sXG4gICAgICAgIGJvZHk6IHR5cGVvZiByZXNwb25zZS5ib2R5ID09PSBcInN0cmluZ1wiID8gcmVzcG9uc2UuYm9keSA6IFN0cmluZyhyZXNwb25zZS5ib2R5ID8/IFwiXCIpLFxuICAgICAgfTtcbiAgICB9LFxuICAgIHNpZ25hbCxcbiAgKTtcblxuICBjb25zdCBpc0h0bWwgPSAhcGFnZS5jb250ZW50VHlwZSB8fCAvaHRtbHx4bWwvaS50ZXN0KHBhZ2UuY29udGVudFR5cGUpO1xuICBjb25zdCByYXdDb250ZW50ID0gcmVxdWVzdC5mb3JtYXQgPT09IFwiaHRtbFwiIHx8ICFpc0h0bWwgPyBwYWdlLmJvZHkgOiBodG1sVG9UZXh0KHBhZ2UuYm9keSk7XG4gIGNvbnN0IHsgY29udGVudCwgdHJ1bmNhdGVkIH0gPSB0cnVuY2F0ZShyYXdDb250ZW50LCBjYXApO1xuICBjb25zdCB0aXRsZSA9IGlzSHRtbCA/IGV4dHJhY3RUaXRsZShwYWdlLmJvZHkpIDogdW5kZWZpbmVkO1xuXG4gIGxvZ2dlci5kZWJ1ZyhcImZldGNoZWRcIiwge1xuICAgIHVybDogcGFnZS51cmwsXG4gICAgc3RhdHVzOiBwYWdlLnN0YXR1c0NvZGUsXG4gICAgYnl0ZXM6IHBhZ2UuYm9keS5sZW5ndGgsXG4gICAgcmV0dXJuZWQ6IGNvbnRlbnQubGVuZ3RoLFxuICAgIC4uLih0cnVuY2F0ZWQgPyB7IHRydW5jYXRlZDogdHJ1ZSB9IDoge30pLFxuICB9KTtcblxuICByZXR1cm4ge1xuICAgIHVybDogcGFnZS51cmwsXG4gICAgc3RhdHVzOiBwYWdlLnN0YXR1c0NvZGUsXG4gICAgLi4uKHBhZ2UuY29udGVudFR5cGUgPyB7IGNvbnRlbnRUeXBlOiBwYWdlLmNvbnRlbnRUeXBlIH0gOiB7fSksXG4gICAgLi4uKHRpdGxlID8geyB0aXRsZSB9IDoge30pLFxuICAgIGNvbnRlbnQsXG4gICAgdHJ1bmNhdGVkLFxuICB9O1xufVxuIl19
86
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmV0Y2guanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZmV0Y2gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBRUgsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzdDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDM0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFbEQsT0FBTyxFQUFFLGNBQWMsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUczQyxNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7QUFVOUMsbUVBQW1FO0FBQ25FLFNBQVMsWUFBWSxDQUFDLElBQVk7SUFDaEMsTUFBTSxLQUFLLEdBQUcsa0NBQWtDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzVELE1BQU0sS0FBSyxHQUFHLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ3BFLE9BQU8sS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0FBQzlDLENBQUM7QUFFRCxvRUFBb0U7QUFDcEUsU0FBUyxRQUFRLENBQUMsSUFBWSxFQUFFLEdBQVc7SUFDekMsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLEdBQUc7UUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLElB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QVMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0tBQzFDLENBQUMsQ0FBQztJQUVILE9BQU87UUFDTCxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUc7UUFDYixNQUFNLEVBQUUsSUFBSSxDQUFDLFVBQVU7UUFDdkIsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUUsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQzlELEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUMzQixPQUFPO1FBQ1AsU0FBUztLQUNWLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBQYWdlIGZldGNoaW5nIG92ZXIge0BsaW5rIGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL2dvdC1zY3JhcGluZyB8IGdvdC1zY3JhcGluZ31cbiAqIC0gYSBgZ290YCB3cmFwcGVyIHRoYXQgZ2VuZXJhdGVzIGJyb3dzZXItbGlrZSBUTFMgKyBoZWFkZXIgZmluZ2VycHJpbnRzLCBzb1xuICogZmV0Y2hlcyBzdXJ2aXZlIHRoZSBib3Qgd2FsbHMgYSBwbGFpbiBgZmV0Y2hgIHRyaXBzLiB7QGxpbmsgcnVuV2ViRmV0Y2h9XG4gKiBlbmZvcmNlcyB0aGUgVVJMIGFsbG93LWxpc3QgKGFuIGV4cGxpY2l0IGZldGNoIG9mIGEgZGlzYWxsb3dlZCBVUkwgaXNcbiAqIHJlZnVzZWQsIG5vdCBzaWxlbnRseSBlbXB0aWVkKSwgZmV0Y2hlcyB3aXRoIHRoZSBwbHVnaW4ncyB0aW1lb3V0LCBhbmRcbiAqIHJldHVybnMgZWl0aGVyIHRoZSByYXcgSFRNTCBvciBhIHJlYWRhYmxlIHBsYWluLXRleHQgcmVkdWN0aW9uLCBjYXBwZWQgYXRcbiAqIHRoZSBjb25maWd1cmVkIGxlbmd0aC5cbiAqXG4gKiBUaGUgSFRNTC10by10ZXh0IHJlZHVjdGlvbiBpcyBkZWxpYmVyYXRlbHkgZGVwZW5kZW5jeS1mcmVlIChzdHJpcFxuICogc2NyaXB0L3N0eWxlLCB1bndyYXAgdGFncywgZGVjb2RlIGEgaGFuZGZ1bCBvZiBlbnRpdGllcywgY29sbGFwc2VcbiAqIHdoaXRlc3BhY2UpOiBnb29kIGVub3VnaCB0byBmZWVkIGEgbW9kZWwsIGFuZCBpdCBrZWVwcyB0aGUgYWRkLW9uJ3NcbiAqIGRlcGVuZGVuY3kgc3VyZmFjZSB0byB0aGUgdHdvIGxpYnJhcmllcyB0aGUgdGFzayBjYWxsZWQgZm9yLlxuICpcbiAqIEBtb2R1bGVcbiAqL1xuXG5pbXBvcnQgeyBsb2cgfSBmcm9tIFwiQGRieC10b29scy9zaGFyZWQtY29yZVwiO1xuaW1wb3J0IHsgZ290U2NyYXBpbmcgfSBmcm9tIFwiZ290LXNjcmFwaW5nXCI7XG5pbXBvcnQgeyBhc3NlcnRVcmxBbGxvd2VkIH0gZnJvbSBcIi4vYWxsb3dsaXN0LnRzXCI7XG5pbXBvcnQgdHlwZSB7IFJlc29sdmVkV2ViU2VhcmNoQ29uZmlnIH0gZnJvbSBcIi4vY29uZmlnLnRzXCI7XG5pbXBvcnQgeyB0b0NhbGxTZXR0aW5ncywgd2ViRmV0Y2hFeGVjdXRlRGVmYXVsdHMgfSBmcm9tIFwiLi9kZWZhdWx0cy50c1wiO1xuaW1wb3J0IHsgZGVjb2RlSHRtbEVudGl0aWVzLCBodG1sVG9UZXh0IH0gZnJvbSBcIi4vaHRtbC10ZXh0LnRzXCI7XG5pbXBvcnQgeyBleGVjdXRlUmVhZCB9IGZyb20gXCIuL3J1bnRpbWUudHNcIjtcbmltcG9ydCB0eXBlIHsgV2ViRmV0Y2hSZXF1ZXN0LCBXZWJGZXRjaFJlc3VsdCB9IGZyb20gXCIuL3NjaGVtYS50c1wiO1xuXG5jb25zdCBsb2dnZXIgPSBsb2cubG9nZ2VyKFwid2ViLXNlYXJjaC9mZXRjaFwiKTtcblxuLyoqIFRoZSBzbGljZSBvZiBhIGdvdC1zY3JhcGluZyByZXNwb25zZSB0aGlzIG1vZHVsZSByZWFkcy4gKi9cbmludGVyZmFjZSBGZXRjaGVkUGFnZSB7XG4gIHVybDogc3RyaW5nO1xuICBzdGF0dXNDb2RlOiBudW1iZXI7XG4gIGNvbnRlbnRUeXBlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGJvZHk6IHN0cmluZztcbn1cblxuLyoqIFB1bGwgdGhlIDx0aXRsZT4gdGV4dCBvdXQgb2YgYW4gSFRNTCBkb2N1bWVudCwgd2hlbiBwcmVzZW50LiAqL1xuZnVuY3Rpb24gZXh0cmFjdFRpdGxlKGh0bWw6IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IG1hdGNoID0gLzx0aXRsZVtePl0qPihbXFxzXFxTXSo/KTxcXC90aXRsZT4vaS5leGVjKGh0bWwpO1xuICBjb25zdCB0aXRsZSA9IG1hdGNoPy5bMV0gPyBkZWNvZGVIdG1sRW50aXRpZXMobWF0Y2hbMV0pLnRyaW0oKSA6IFwiXCI7XG4gIHJldHVybiB0aXRsZS5sZW5ndGggPiAwID8gdGl0bGUgOiB1bmRlZmluZWQ7XG59XG5cbi8qKiBUcnVuY2F0ZSBgdGV4dGAgdG8gYG1heGAgY2hhcnMsIHJlcG9ydGluZyB3aGV0aGVyIGl0IHdhcyBjdXQuICovXG5mdW5jdGlvbiB0cnVuY2F0ZSh0ZXh0OiBzdHJpbmcsIG1heDogbnVtYmVyKTogeyBjb250ZW50OiBzdHJpbmc7IHRydW5jYXRlZDogYm9vbGVhbiB9IHtcbiAgaWYgKHRleHQubGVuZ3RoIDw9IG1heCkgcmV0dXJuIHsgY29udGVudDogdGV4dCwgdHJ1bmNhdGVkOiBmYWxzZSB9O1xuICByZXR1cm4geyBjb250ZW50OiB0ZXh0LnNsaWNlKDAsIG1heCksIHRydW5jYXRlZDogdHJ1ZSB9O1xufVxuXG4vKipcbiAqIEZldGNoIGEgc2luZ2xlIFVSTCBhbmQgcmV0dXJuIGl0cyBjb250ZW50IGluIHRoZSByZXF1ZXN0ZWQgZm9ybWF0LlxuICpcbiAqIFRocm93cyB3aGVuIHRoZSBVUkwgaXMgbm90IHBlcm1pdHRlZCBieSB0aGUgYWxsb3ctbGlzdCAodGhlIHZpc2libGUsXG4gKiBjb3JyZWN0YWJsZSBmYWlsdXJlIHRoZSBkZXNpZ24gY2FsbHMgZm9yIG9uIHRoZSBmZXRjaCBwYXRoKS4gVGhlIHJlcXVlc3Qnc1xuICogYG1heExlbmd0aGAgbmFycm93cyAobmV2ZXIgd2lkZW5zKSB0aGUgcGx1Z2luJ3MgYGZldGNoTWF4TGVuZ3RoYCBjYXAuXG4gKiBgc2lnbmFsYCBjYW5jZWxzIHRoZSBpbi1mbGlnaHQgZmV0Y2guXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBydW5XZWJGZXRjaChcbiAgcmVxdWVzdDogV2ViRmV0Y2hSZXF1ZXN0LFxuICBjb25maWc6IFJlc29sdmVkV2ViU2VhcmNoQ29uZmlnLFxuICBzaWduYWw/OiBBYm9ydFNpZ25hbCxcbik6IFByb21pc2U8V2ViRmV0Y2hSZXN1bHQ+IHtcbiAgYXNzZXJ0VXJsQWxsb3dlZChyZXF1ZXN0LnVybCwgY29uZmlnLmFsbG93TGlzdCk7XG4gIGNvbnN0IGNhcCA9IE1hdGgubWluKHJlcXVlc3QubWF4TGVuZ3RoID8/IGNvbmZpZy5mZXRjaE1heExlbmd0aCwgY29uZmlnLmZldGNoTWF4TGVuZ3RoKTtcblxuICAvLyBUaGUgcmVzcG9uc2UgaXMgY2FjaGVkIGJlZm9yZSB0aGUgZm9ybWF0IHJlZHVjdGlvbiwgc28gdGhlIHNhbWUgcGFnZSByZWFkXG4gIC8vIGFzIHRleHQgYW5kIGFzIGh0bWwgc2hhcmVzIG9uZSBuZXR3b3JrIHJvdW5kIHRyaXAuXG4gIGNvbnN0IHBhZ2UgPSBhd2FpdCBleGVjdXRlUmVhZChcbiAgICBcInBhZ2UtZmV0Y2hcIixcbiAgICB0b0NhbGxTZXR0aW5ncyh3ZWJGZXRjaEV4ZWN1dGVEZWZhdWx0cywgY29uZmlnLnRpbWVvdXRNcywgW1wid2ViLXNlYXJjaFwiLCBcImZldGNoXCIsIHJlcXVlc3QudXJsXSksXG4gICAgYXN5bmMgKGV4ZWN1dGVTaWduYWwpOiBQcm9taXNlPEZldGNoZWRQYWdlPiA9PiB7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGdvdFNjcmFwaW5nKHtcbiAgICAgICAgdXJsOiByZXF1ZXN0LnVybCxcbiAgICAgICAgLy8gZ290J3Mgb3duIHRpbWVvdXQgYWJvcnRzIHRoZSBzb2NrZXQgYW5kIHJlcG9ydHMgd2hpY2ggcGhhc2UgdGltZWRcbiAgICAgICAgLy8gb3V0OyB0aGUgaW50ZXJjZXB0b3IgdGltZW91dCBib3VuZHMgdGhlIHdob2xlIGF0dGVtcHQgYXJvdW5kIGl0LlxuICAgICAgICB0aW1lb3V0OiB7IHJlcXVlc3Q6IGNvbmZpZy50aW1lb3V0TXMgfSxcbiAgICAgICAgdGhyb3dIdHRwRXJyb3JzOiBmYWxzZSxcbiAgICAgICAgZm9sbG93UmVkaXJlY3Q6IHRydWUsXG4gICAgICAgIC4uLihleGVjdXRlU2lnbmFsID8geyBzaWduYWw6IGV4ZWN1dGVTaWduYWwgfSA6IHt9KSxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdXJsOiByZXNwb25zZS51cmwgPz8gcmVxdWVzdC51cmwsXG4gICAgICAgIHN0YXR1c0NvZGU6IHJlc3BvbnNlLnN0YXR1c0NvZGUsXG4gICAgICAgIGNvbnRlbnRUeXBlOiByZXNwb25zZS5oZWFkZXJzW1wiY29udGVudC10eXBlXCJdLFxuICAgICAgICBib2R5OiB0eXBlb2YgcmVzcG9uc2UuYm9keSA9PT0gXCJzdHJpbmdcIiA/IHJlc3BvbnNlLmJvZHkgOiBTdHJpbmcocmVzcG9uc2UuYm9keSA/PyBcIlwiKSxcbiAgICAgIH07XG4gICAgfSxcbiAgICBzaWduYWwsXG4gICk7XG5cbiAgY29uc3QgaXNIdG1sID0gIXBhZ2UuY29udGVudFR5cGUgfHwgL2h0bWx8eG1sL2kudGVzdChwYWdlLmNvbnRlbnRUeXBlKTtcbiAgY29uc3QgcmF3Q29udGVudCA9IHJlcXVlc3QuZm9ybWF0ID09PSBcImh0bWxcIiB8fCAhaXNIdG1sID8gcGFnZS5ib2R5IDogaHRtbFRvVGV4dChwYWdlLmJvZHkpO1xuICBjb25zdCB7IGNvbnRlbnQsIHRydW5jYXRlZCB9ID0gdHJ1bmNhdGUocmF3Q29udGVudCwgY2FwKTtcbiAgY29uc3QgdGl0bGUgPSBpc0h0bWwgPyBleHRyYWN0VGl0bGUocGFnZS5ib2R5KSA6IHVuZGVmaW5lZDtcblxuICBsb2dnZXIuZGVidWcoXCJmZXRjaGVkXCIsIHtcbiAgICB1cmw6IHBhZ2UudXJsLFxuICAgIHN0YXR1czogcGFnZS5zdGF0dXNDb2RlLFxuICAgIGJ5dGVzOiBwYWdlLmJvZHkubGVuZ3RoLFxuICAgIHJldHVybmVkOiBjb250ZW50Lmxlbmd0aCxcbiAgICAuLi4odHJ1bmNhdGVkID8geyB0cnVuY2F0ZWQ6IHRydWUgfSA6IHt9KSxcbiAgfSk7XG5cbiAgcmV0dXJuIHtcbiAgICB1cmw6IHBhZ2UudXJsLFxuICAgIHN0YXR1czogcGFnZS5zdGF0dXNDb2RlLFxuICAgIC4uLihwYWdlLmNvbnRlbnRUeXBlID8geyBjb250ZW50VHlwZTogcGFnZS5jb250ZW50VHlwZSB9IDoge30pLFxuICAgIC4uLih0aXRsZSA/IHsgdGl0bGUgfSA6IHt9KSxcbiAgICBjb250ZW50LFxuICAgIHRydW5jYXRlZCxcbiAgfTtcbn1cbiJdfQ==
@@ -16,8 +16,8 @@
16
16
  */
17
17
  import { Plugin, ResourceType, type ResourceRequirement } from "@databricks/appkit";
18
18
  import { type AgentToolDefinition, type ToolProvider } from "@databricks/appkit/beta";
19
- import { type WebSearchPluginConfig } from "./config.js";
20
- import type { WebFetchRequest, WebFetchResult, WebSearchRequest, WebSearchResult } from "./schema.js";
19
+ import { type WebSearchPluginConfig } from "./config.ts";
20
+ import type { WebFetchRequest, WebFetchResult, WebSearchRequest, WebSearchResult } from "./schema.ts";
21
21
  /**
22
22
  * AppKit plugin that resolves and holds the web-search runtime config used
23
23
  * by the `web_search` / `web_fetch` tools.
package/lib/src/plugin.js CHANGED
@@ -222,4 +222,4 @@ export class WebSearchPlugin extends Plugin {
222
222
  * ```
223
223
  */
224
224
  export const webSearch = toPlugin(WebSearchPlugin);
225
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3BsdWdpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFFSCxPQUFPLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFDWixRQUFRLEdBR1QsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQ0wsVUFBVSxFQUNWLG1CQUFtQixFQUNuQixpQkFBaUIsR0FJbEIsTUFBTSx5QkFBeUIsQ0FBQztBQUNqQyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sRUFDTCxTQUFTLEVBQ1Qsb0JBQW9CLEVBQ3BCLHdCQUF3QixHQUV6QixNQUFNLFVBQVUsQ0FBQztBQUNsQixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxxQkFBcUIsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUM3RixPQUFPLEVBQ0wscUJBQXFCLEVBQ3JCLHNCQUFzQixFQUN0QiwwQkFBMEIsRUFDMUIsMkJBQTJCLEdBQzVCLE1BQU0sVUFBVSxDQUFDO0FBRWxCLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxZQUFZLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFakUsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUV4Qzs7Ozs7O0dBTUc7QUFDSCxNQUFNLHlCQUF5QixHQUFHO0lBQ2hDLElBQUksRUFBRSxZQUFZLENBQUMsZ0JBQWdCO0lBQ25DLEtBQUssRUFBRSxxQkFBcUI7SUFDNUIsV0FBVyxFQUFFLHFCQUFxQjtJQUNsQyxXQUFXLEVBQ1QseUZBQXlGO1FBQ3pGLG9FQUFvRTtJQUN0RSxVQUFVLEVBQUUsV0FBVztJQUN2QixNQUFNLEVBQUU7UUFDTixJQUFJLEVBQUU7WUFDSixHQUFHLEVBQUUs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S0FBSyxFQUFFLENBQUMsT0FBd0IsRUFBRSxNQUFvQixFQUEyQixFQUFFLENBQ2pGLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQztTQUM5QixDQUFDO0lBQ0osQ0FBQztJQUVPLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBeUIsRUFBRSxNQUFvQjtRQUNsRSxPQUFPLFlBQVksQ0FDakIsT0FBTyxFQUNQLG1CQUFtQixFQUFFLENBQUMsTUFBTSxFQUM1QixNQUFNLHVCQUF1QixFQUFFLEVBQy9CLE1BQU0sQ0FDUCxDQUFDO0lBQ0osQ0FBQztJQUVPLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBd0IsRUFBRSxNQUFvQjtRQUNoRSxPQUFPLFdBQVcsQ0FBQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDcEUsQ0FBQzs7QUFHSDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNCRztBQUNILE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRyxRQUFRLENBQUMsZUFBZSxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEFwcEtpdCBwbHVnaW4gKHJlZ2lzdGVyZWQgbmFtZTogYHdlYi1zZWFyY2hgKSB0aGF0IG93bnMgdGhlIHJlc29sdmVkXG4gKiB3ZWItc2VhcmNoIHJ1bnRpbWUgLSB0aGUgVVJMIHBvbGljeSwgcmVzdWx0IC8gbGVuZ3RoIGNhcHMsIHRpbWVvdXQsIGFuZFxuICogZGVmYXVsdCBhcHByb3ZhbCBnYXRlIHRoZSB7QGxpbmsgd2ViU2VhcmNoVG9vbH0gLyB7QGxpbmsgd2ViRmV0Y2hUb29sfVxuICogcmVhZC4gUmVnaXN0ZXJpbmcgaXQgcmVzb2x2ZXMgYW5kIGxvZ3MgdGhlIGVmZmVjdGl2ZSBjb25maWcgKHdoaWNoIFVSTFxuICogcG9saWN5IGlzIGluIGZvcmNlLCB0aGUgY2Fwcykgc28gYSBtaXNjb25maWd1cmF0aW9uIGlzIHZpc2libGUgaW4gdGhlIGJvb3RcbiAqIGxvZ3MgcmF0aGVyIHRoYW4gb24gdGhlIGZpcnN0IHNlYXJjaCwgYW5kIGluc3RhbGxzIHRoZSBwbHVnaW4nc1xuICogYGV4ZWN1dGUoKWAgYXMgdGhlIHJ1bnRpbWUncyBleGVjdXRvciBzbyBldmVyeSBvdXRib3VuZCBjYWxsIHBpY2tzIHVwXG4gKiBBcHBLaXQncyBjYWNoZSAvIHJldHJ5IC8gdGltZW91dCAvIHRlbGVtZXRyeSBjaGFpbi5cbiAqXG4gKiBUaGUgcGx1Z2luIGFsc28gaW1wbGVtZW50cyBBcHBLaXQncyBgVG9vbFByb3ZpZGVyYCwgc28gYW4gQXBwS2l0IGFnZW50IGdldHNcbiAqIGB3ZWJfc2VhcmNoYCAvIGB3ZWJfZmV0Y2hgIHdpdGhvdXQgZ29pbmcgdGhyb3VnaCBNYXN0cmE7IHRoZSBNYXN0cmEgdG9vbHMgaW5cbiAqIGB0b29sLnRzYCBhcmUgdGhlIG90aGVyIGhhbGYgYW5kIHNoYXJlIHRoZSBzYW1lIHJ1bnRpbWUuXG4gKlxuICogQG1vZHVsZVxuICovXG5cbmltcG9ydCB7XG4gIFBsdWdpbixcbiAgUmVzb3VyY2VUeXBlLFxuICB0b1BsdWdpbixcbiAgdHlwZSBQbHVnaW5NYW5pZmVzdCxcbiAgdHlwZSBSZXNvdXJjZVJlcXVpcmVtZW50LFxufSBmcm9tIFwiQGRhdGFicmlja3MvYXBwa2l0XCI7XG5pbXBvcnQge1xuICBkZWZpbmVUb29sLFxuICBleGVjdXRlRnJvbVJlZ2lzdHJ5LFxuICB0b29sc0Zyb21SZWdpc3RyeSxcbiAgdHlwZSBBZ2VudFRvb2xEZWZpbml0aW9uLFxuICB0eXBlIFRvb2xQcm92aWRlcixcbiAgdHlwZSBUb29sUmVnaXN0cnksXG59IGZyb20gXCJAZGF0YWJyaWNrcy9hcHBraXQvYmV0YVwiO1xuaW1wb3J0IHsgbG9nLCBzdHJpbmcgfSBmcm9tIFwiQGRieC10b29scy9zaGFyZWQtY29yZVwiO1xuaW1wb3J0IHtcbiAgTU9ERUxfRU5WLFxuICBTRVJWSU5HX0VORFBPSU5UX0VOVixcbiAgV0VCX1NFQVJDSF9DT05GSUdfU0NIRU1BLFxuICB0eXBlIFdlYlNlYXJjaFBsdWdpbkNvbmZpZyxcbn0gZnJvbSBcIi4vY29uZmlnXCI7XG5pbXBvcnQgeyBydW5XZWJGZXRjaCB9IGZyb20gXCIuL2ZldGNoXCI7XG5pbXBvcnQgeyBnZXRXZWJTZWFyY2hSdW50aW1lLCByZXNldFdlYlNlYXJjaFJ1bnRpbWUsIHNldFdlYlNlYXJjaEV4ZWN1dG9yIH0gZnJvbSBcIi4vcnVudGltZVwiO1xuaW1wb3J0IHtcbiAgd2ViRmV0Y2hSZXF1ZXN0U2NoZW1hLFxuICB3ZWJTZWFyY2hSZXF1ZXN0U2NoZW1hLFxuICBXRUJfRkVUQ0hfVE9PTF9ERVNDUklQVElPTixcbiAgV0VCX1NFQVJDSF9UT09MX0RFU0NSSVBUSU9OLFxufSBmcm9tIFwiLi9zY2hlbWFcIjtcbmltcG9ydCB0eXBlIHsgV2ViRmV0Y2hSZXF1ZXN0LCBXZWJGZXRjaFJlc3VsdCwgV2ViU2VhcmNoUmVxdWVzdCwgV2ViU2VhcmNoUmVzdWx0IH0gZnJvbSBcIi4vc2NoZW1hXCI7XG5pbXBvcnQgeyByZXNvbHZlV2ViU2VhcmNoQ29udGV4dCwgcnVuV2ViU2VhcmNoIH0gZnJvbSBcIi4vc2VhcmNoXCI7XG5cbmNvbnN0IGxvZ2dlciA9IGxvZy5sb2dnZXIoXCJ3ZWItc2VhcmNoXCIpO1xuXG4vKipcbiAqIFRoZSBNb2RlbCBTZXJ2aW5nIGVuZHBvaW50IHRoZSBuYXRpdmUgd2ViLXNlYXJjaCB0b29sIHJ1bnMgb24uIERlY2xhcmVkXG4gKiBvcHRpb25hbCBiZWNhdXNlIHRoZSBwbHVnaW4gcmVzb2x2ZXMgYSB3ZWItc2VhcmNoLWNhcGFibGUgZW5kcG9pbnQgZnJvbSB0aGVcbiAqIGxpdmUgY2F0YWxvZ3VlIHdoZW4gbm90aGluZyBpcyBwaW5uZWQ7IHtAbGluayBXZWJTZWFyY2hQbHVnaW4uZ2V0UmVzb3VyY2VSZXF1aXJlbWVudHN9XG4gKiBwcm9tb3RlcyBpdCB0byByZXF1aXJlZCBvbmNlIGEgZGVwbG95bWVudCBuYW1lcyBvbmUuIGBDQU5fUVVFUllgIGlzIHRoZVxuICogd2Vha2VzdCBwZXJtaXNzaW9uIHRoYXQgY2FuIGludm9rZSBhbiBlbmRwb2ludC5cbiAqL1xuY29uc3QgU0VSVklOR19FTkRQT0lOVF9SRVNPVVJDRSA9IHtcbiAgdHlwZTogUmVzb3VyY2VUeXBlLlNFUlZJTkdfRU5EUE9JTlQsXG4gIGFsaWFzOiBcIldlYiBTZWFyY2ggRW5kcG9pbnRcIixcbiAgcmVzb3VyY2VLZXk6IFwid2ViLXNlYXJjaC1lbmRwb2ludFwiLFxuICBkZXNjcmlwdGlvbjpcbiAgICBcIk1vZGVsIFNlcnZpbmcgZW5kcG9pbnQgcnVubmluZyB0aGUgbmF0aXZlIHdlYi1zZWFyY2ggdG9vbC4gT3B0aW9uYWw6IHJlc29sdmVkIGZyb20gdGhlIFwiICtcbiAgICBcIndvcmtzcGFjZSBjYXRhbG9ndWUgKEdlbWluaSwgdGhlbiBHUFQpIHdoZW4gbm8gZW5kcG9pbnQgaXMgcGlubmVkLlwiLFxuICBwZXJtaXNzaW9uOiBcIkNBTl9RVUVSWVwiLFxuICBmaWVsZHM6IHtcbiAgICBuYW1lOiB7XG4gICAgICBlbnY6IFNFUlZJTkdfRU5EUE9JTlRfRU5WLFxuICAgICAgZGVzY3JpcHRpb246IGBTZXJ2aW5nIGVuZHBvaW50IG5hbWUgZm9yIHdlYiBzZWFyY2guICR7TU9ERUxfRU5WfSBvdmVycmlkZXMgaXQuYCxcbiAgICAgIGRpc2NvdmVyeToge1xuICAgICAgICB0eXBlOiBcImNsaVwiLFxuICAgICAgICBjbGlDb21tYW5kOiBcImRhdGFicmlja3Mgc2VydmluZy1lbmRwb2ludHMgbGlzdCAtLXByb2ZpbGUgPFBST0ZJTEU+IC0tb3V0cHV0IGpzb25cIixcbiAgICAgICAgc2VsZWN0RmllbGQ6IFwiLm5hbWVcIixcbiAgICAgIH0sXG4gICAgfSxcbiAgfSxcbn0gc2F0aXNmaWVzIE9taXQ8UmVzb3VyY2VSZXF1aXJlbWVudCwgXCJyZXF1aXJlZFwiPjtcblxuLyoqXG4gKiBBcHBLaXQgcGx1Z2luIHRoYXQgcmVzb2x2ZXMgYW5kIGhvbGRzIHRoZSB3ZWItc2VhcmNoIHJ1bnRpbWUgY29uZmlnIHVzZWRcbiAqIGJ5IHRoZSBgd2ViX3NlYXJjaGAgLyBgd2ViX2ZldGNoYCB0b29scy5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIGltcG9ydCB7IGNyZWF0ZUFwcCwgc2VydmVyIH0gZnJvbSBcIkBkYXRhYnJpY2tzL2FwcGtpdFwiO1xuICogaW1wb3J0IHsgcGx1Z2luIGFzIHdlYlNlYXJjaFBsdWdpbiB9IGZyb20gXCJAZGJ4LXRvb2xzL2FwcGtpdC13ZWItc2VhcmNoXCI7XG4gKlxuICogYXdhaXQgY3JlYXRlQXBwKHtcbiAqICAgcGx1Z2luczogW1xuICogICAgIHNlcnZlcigpLFxuICogICAgIHdlYlNlYXJjaFBsdWdpbi53ZWJTZWFyY2goe1xuICogICAgICAgbW9kZWw6IFwiZ2VtaW5pXCIsXG4gKiAgICAgICB1cmxQb2xpY3k6IFwiYWxsb3dsaXN0XCIsXG4gKiAgICAgICBhbGxvd2VkVXJsczogW1wiKi5kYXRhYnJpY2tzLmNvbVwiXSxcbiAqICAgICB9KSxcbiAqICAgXSxcbiAqIH0pO1xuICogYGBgXG4gKi9cbmV4cG9ydCBjbGFzcyBXZWJTZWFyY2hQbHVnaW4gZXh0ZW5kcyBQbHVnaW48V2ViU2VhcmNoUGx1Z2luQ29uZmlnPiBpbXBsZW1lbnRzIFRvb2xQcm92aWRlciB7XG4gIHN0YXRpYyBtYW5pZmVzdCA9IHtcbiAgICBuYW1lOiBcIndlYi1zZWFyY2hcIixcbiAgICBkaXNwbGF5TmFtZTogXCJXZWIgU2VhcmNoXCIsXG4gICAgZGVzY3JpcHRpb246XG4gICAgICBcIlNlYXJjaGVzIHRoZSB3ZWIgdGhyb3VnaCB0aGUgRGF0YWJyaWNrcyBuYXRpdmUgd2ViLXNlYXJjaCB0b29sIG9uIGl0cyBvd24gXCIgK1xuICAgICAgXCJ3ZWItY2FwYWJsZSBzZXJ2aW5nIGVuZHBvaW50LCBhbmQgZmV0Y2hlcyBwYWdlcyB2aWEgZ290LXNjcmFwaW5nLCBiZWhpbmQgYW4gXCIgK1xuICAgICAgXCJvcHRpb25hbCBVUkwgYWxsb3ctbGlzdCBhbmQgcGVyLXRvb2wgYXBwcm92YWwgZ2F0aW5nLlwiLFxuICAgIHN0YWJpbGl0eTogXCJiZXRhXCIsXG4gICAgcmVzb3VyY2VzOiB7XG4gICAgICByZXF1aXJlZDogW10sXG4gICAgICBvcHRpb25hbDogW1NFUlZJTkdfRU5EUE9JTlRfUkVTT1VSQ0VdLFxuICAgIH0sXG4gICAgY29uZmlnOiB7IHNjaGVtYTogV0VCX1NFQVJDSF9DT05GSUdfU0NIRU1BIH0sXG4gIH0gc2F0aXNmaWVzIFBsdWdpbk1hbmlmZXN0PFwid2ViLXNlYXJjaFwiPjtcblxuICAvKipcbiAgICogUHJvbW90ZSB0aGUgc2VydmluZyBlbmRwb2ludCB0byBhIHJlcXVpcmVkIHJlc291cmNlIG9uY2UgYSBkZXBsb3ltZW50XG4gICAqIHBpbnMgb25lLCB0aHJvdWdoIHBsdWdpbiBjb25maWcgb3IgZWl0aGVyIGVudmlyb25tZW50IG5hbWUuIExlZnQgb3B0aW9uYWxcbiAgICogb3RoZXJ3aXNlLCBiZWNhdXNlIHRoZSBwbHVnaW4gcGlja3MgYSB3ZWItc2VhcmNoLWNhcGFibGUgZW5kcG9pbnQgb3V0IG9mXG4gICAqIHRoZSBsaXZlIGNhdGFsb2d1ZSBvbiBpdHMgb3duLlxuICAgKi9cbiAgc3RhdGljIGdldFJlc291cmNlUmVxdWlyZW1lbnRzKGNvbmZpZzogV2ViU2VhcmNoUGx1Z2luQ29uZmlnKTogUmVzb3VyY2VSZXF1aXJlbWVudFtdIHtcbiAgICBjb25zdCBwaW5uZWQgPVxuICAgICAgc3RyaW5nLnRyaW1Ub051bGwoY29uZmlnLm1vZGVsKSA/P1xuICAgICAgc3RyaW5nLnRyaW1Ub051bGwocHJvY2Vzcy5lbnZbTU9ERUxfRU5WXSkgPz9cbiAgICAgIHN0cmluZy50cmltVG9OdWxsKHByb2Nlc3MuZW52W1NFUlZJTkdfRU5EUE9JTlRfRU5WXSk7XG4gICAgcmV0dXJuIHBpbm5lZCA9PT0gbnVsbCA/IFtdIDogW3sgLi4uU0VSVklOR19FTkRQT0lOVF9SRVNPVVJDRSwgcmVxdWlyZWQ6IHRydWUgfV07XG4gIH1cblxuICAvKipcbiAgICogVGhlIHRvb2xzIHRoaXMgcGx1Z2luIG9mZmVycyB0byBhbiBBcHBLaXQgYWdlbnQuIEJvdGggYXJlIHJlYWRzIGFuZCBib3RoXG4gICAqIHJ1biB1bmRlciB0aGUgY2FsbGVyJ3MgaWRlbnRpdHkuXG4gICAqXG4gICAqIE5laXRoZXIgaXMgYGF1dG9Jbmhlcml0YWJsZWAuIGB3ZWJfZmV0Y2hgIHJlYWNoZXMgYSBVUkwgdGhlIG1vZGVsIGNob3NlLFxuICAgKiB3aGljaCBpcyByZWFjaGFibGUgZnJvbSBpbnNpZGUgdGhlIHdvcmtzcGFjZSBuZXR3b3JrLCBzbyBpdCBtdXN0IG9ubHlcbiAgICogYXBwZWFyIGluIGFuIGFnZW50IHRoYXQgYXNrZWQgZm9yIGl0IGFuZCBhY2NlcHRlZCB0aGUgVVJMIHBvbGljeSB0aGF0XG4gICAqIGNvbWVzIHdpdGggaXQuIGB3ZWJfc2VhcmNoYCBpcyBzYWZlciBidXQgc3RpbGwgc3BlbmRzIHNlcnZpbmcgdG9rZW5zIG9uXG4gICAqIGV2ZXJ5IGNhbGwsIHNvIGl0IGlzIG9wdC1pbiBmb3IgY29zdCByYXRoZXIgdGhhbiBmb3Igc2FmZXR5LlxuICAgKlxuICAgKiBgZXhlY3V0ZWAgcmUtcGFyc2VzIGl0cyBhcmd1bWVudHMgd2l0aCB0aGUgbG9jYWwgc2NoZW1hOiBBcHBLaXQgdmFsaWRhdGVzXG4gICAqIGFnYWluc3QgdGhlIHNhbWUgc2NoZW1hIGZpcnN0LCBidXQgcmUtcGFyc2luZyBpcyB3aGF0IGdpdmVzIHRoZSBib2R5IHR5cGVkXG4gICAqIGFyZ3VtZW50cyBpbnN0ZWFkIG9mIGB1bmtub3duYC5cbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgdG9vbHM6IFRvb2xSZWdpc3RyeSA9IHtcbiAgICB3ZWJfc2VhcmNoOiBkZWZpbmVUb29sKHtcbiAgICAgIGRlc2NyaXB0aW9uOiBXRUJfU0VBUkNIX1RPT0xfREVTQ1JJUFRJT04sXG4gICAgICBzY2hlbWE6IHdlYlNlYXJjaFJlcXVlc3RTY2hlbWEsXG4gICAgICBhbm5vdGF0aW9uczogeyBlZmZlY3Q6IFwicmVhZFwiLCByZXF1aXJlc1VzZXJDb250ZXh0OiB0cnVlIH0sXG4gICAgICBhdXRvSW5oZXJpdGFibGU6IGZhbHNlLFxuICAgICAgZXhlY3V0ZTogYXN5bmMgKGFyZ3MsIHNpZ25hbCkgPT4gdGhpcy5zZWFyY2god2ViU2VhcmNoUmVxdWVzdFNjaGVtYS5wYXJzZShhcmdzKSwgc2lnbmFsKSxcbiAgICB9KSxcbiAgICB3ZWJfZmV0Y2g6IGRlZmluZVRvb2woe1xuICAgICAgZGVzY3JpcHRpb246IFdFQl9GRVRDSF9UT09MX0RFU0NSSVBUSU9OLFxuICAgICAgc2NoZW1hOiB3ZWJGZXRjaFJlcXVlc3RTY2hlbWEsXG4gICAgICBhbm5vdGF0aW9uczogeyBlZmZlY3Q6IFwicmVhZFwiLCByZXF1aXJlc1VzZXJDb250ZXh0OiB0cnVlIH0sXG4gICAgICBhdXRvSW5oZXJpdGFibGU6IGZhbHNlLFxuICAgICAgZXhlY3V0ZTogYXN5bmMgKGFyZ3MsIHNpZ25hbCkgPT4gdGhpcy5mZXRjaCh3ZWJGZXRjaFJlcXVlc3RTY2hlbWEucGFyc2UoYXJncyksIHNpZ25hbCksXG4gICAgfSksXG4gIH07XG5cbiAgLyoqXG4gICAqIFByaW1lIHRoZSBzaGFyZWQgcnVudGltZSBmcm9tIHRoaXMgcGx1Z2luJ3MgY29uZmlnIChvdmVyIGVudiksIHJvdXRlIHRoZVxuICAgKiB0b29scycgb3V0Ym91bmQgY2FsbHMgdGhyb3VnaCB0aGlzIHBsdWdpbidzIGludGVyY2VwdG9yIGNoYWluLCBhbmQgbG9nIHRoZVxuICAgKiBlZmZlY3RpdmUgcG9saWN5IHNvIGFuIGFjdGl2ZSBhbGxvdy1saXN0IC8gY2FwcyBhcmUgb2J2aW91cyBhdCBib290LlxuICAgKi9cbiAgb3ZlcnJpZGUgYXN5bmMgc2V0dXAoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgeyBjb25maWcgfSA9IGdldFdlYlNlYXJjaFJ1bnRpbWUodGhpcy5jb25maWcpO1xuICAgIHNldFdlYlNlYXJjaEV4ZWN1dG9yKChmbiwgc2V0dGluZ3MpID0+IHRoaXMuZXhlY3V0ZShmbiwgc2V0dGluZ3MpKTtcbiAgICBsb2dnZXIuaW5mbyhcInJlYWR5XCIsIHtcbiAgICAgIG1vZGVsOiBjb25maWcubW9kZWwgPz8gYGZhbGxiYWNrczpbJHtjb25maWcubW9kZWxGYWxsYmFja3Muam9pbihcIiwgXCIpfV1gLFxuICAgICAgbW9kZWxTb3VyY2U6IGNvbmZpZy5tb2RlbFNvdXJjZSxcbiAgICAgIHVybFBvbGljeTogY29uZmlnLnVybFBvbGljeSxcbiAgICAgIC4uLihjb25maWcuYWxsb3dMaXN0LnJlc3RyaWN0ZWQgPyB7IGFsbG93ZWRVcmxzOiBjb25maWcuYWxsb3dMaXN0LnBhdHRlcm5zIH0gOiB7fSksXG4gICAgICBtYXhDaXRhdGlvbnM6IGNvbmZpZy5tYXhDaXRhdGlvbnMsXG4gICAgICBmZXRjaE1heExlbmd0aDogY29uZmlnLmZldGNoTWF4TGVuZ3RoLFxuICAgICAgYXBwcm92YWw6IGNvbmZpZy5hcHByb3ZhbC5tb2RlLFxuICAgICAgc2NyYXBlRmFsbGJhY2s6IGNvbmZpZy5zY3JhcGVGYWxsYmFjayxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEcm9wIHRoZSBzaGFyZWQgcnVudGltZSBzbyBhIHJlc3RhcnRlZCBhcHAgcmUtcmVzb2x2ZXMgY29uZmlnIGFuZCBkb2VzIG5vdFxuICAgKiBrZWVwIGNhbGxpbmcgdGhyb3VnaCBhIHRvcm4tZG93biBwbHVnaW4ncyBgZXhlY3V0ZSgpYC4gQm91bmRlZCBhbmRcbiAgICogaWRlbXBvdGVudDogdGhlcmUgaXMgbm8gY29ubmVjdGlvbiB0byBkcmFpbiwgb25seSB0aGUgbWVtbyB0byBjbGVhci5cbiAgICovXG4gIGFzeW5jIHNodXRkb3duKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJlc2V0V2ViU2VhcmNoUnVudGltZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFib3J0IGluLWZsaWdodCB3b3JrLiBBcHBLaXQncyBncmFjZWZ1bCBzaHV0ZG93biBvbmx5IGludm9rZXMgdGhpcyBob29rIC1cbiAgICogaXQgbmV2ZXIgY2FsbHMge0BsaW5rIHNodXRkb3dufSAtIHNvIHRoZSBydW50aW1lIG1lbW8gaXMgZHJvcHBlZCBmcm9tIGhlcmVcbiAgICogdG8ga2VlcCBhIHJlc3RhcnRlZCBhcHAgZnJvbSBjYWxsaW5nIHRocm91Z2ggYSB0b3JuLWRvd24gYGV4ZWN1dGUoKWAuIFRoZVxuICAgKiB0ZWFyZG93biBpcyBzeW5jaHJvbm91cyBhbmQgaWRlbXBvdGVudCwgc28gdGhlIHVuLWF3YWl0ZWQgY2FsbCBjb3N0c1xuICAgKiBub3RoaW5nLlxuICAgKi9cbiAgb3ZlcnJpZGUgYWJvcnRBY3RpdmVPcGVyYXRpb25zKCk6IHZvaWQge1xuICAgIHN1cGVyLmFib3J0QWN0aXZlT3BlcmF0aW9ucygpO1xuICAgIHZvaWQgdGhpcy5zaHV0ZG93bigpO1xuICB9XG5cbiAgLyoqIEFwcEtpdCBgVG9vbFByb3ZpZGVyYDogdGhlIHRvb2wgZGVmaW5pdGlvbnMgb2ZmZXJlZCB0byBhbiBhZ2VudC4gKi9cbiAgZ2V0QWdlbnRUb29scygpOiBBZ2VudFRvb2xEZWZpbml0aW9uW10ge1xuICAgIHJldHVybiB0b29sc0Zyb21SZWdpc3RyeSh0aGlzLnRvb2xzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBcHBLaXQgYFRvb2xQcm92aWRlcmA6IHJ1biBvbmUgdG9vbCBjYWxsLiBBcmd1bWVudHMgYXJlIHZhbGlkYXRlZCBhZ2FpbnN0XG4gICAqIHRoZSB0b29sJ3Mgc2NoZW1hIGZpcnN0LCBhbmQgYSB2YWxpZGF0aW9uIGZhaWx1cmUgY29tZXMgYmFjayBhcyBhblxuICAgKiBMTE0tZnJpZW5kbHkgc3RyaW5nIHNvIHRoZSBtb2RlbCBjYW4gY29ycmVjdCBpdHNlbGYgb24gdGhlIG5leHQgdHVybi5cbiAgICovXG4gIGFzeW5jIGV4ZWN1dGVBZ2VudFRvb2wobmFtZTogc3RyaW5nLCBhcmdzOiB1bmtub3duLCBzaWduYWw/OiBBYm9ydFNpZ25hbCk6IFByb21pc2U8dW5rbm93bj4ge1xuICAgIHJldHVybiBleGVjdXRlRnJvbVJlZ2lzdHJ5KHRoaXMudG9vbHMsIG5hbWUsIGFyZ3MsIHNpZ25hbCk7XG4gIH1cblxuICBvdmVycmlkZSBleHBvcnRzKCkge1xuICAgIHJldHVybiB7XG4gICAgICAvKipcbiAgICAgICAqIFJ1biBhIHdlYiBzZWFyY2ggZGlyZWN0bHkgKGJ5cGFzc2luZyB0aGUgYWdlbnQgdG9vbCkuIFJlc29sdmVzIHRoZVxuICAgICAgICogT0JPIGNsaWVudCBmcm9tIHRoZSBhY3RpdmUgZXhlY3V0aW9uIGNvbnRleHQgYW5kIHJlYWRzIHRoZSBzaGFyZWRcbiAgICAgICAqIHJ1bnRpbWUgY29uZmlnIHByaW1lZCBhdCBzZXR1cC5cbiAgICAgICAqL1xuICAgICAgc2VhcmNoOiAocmVxdWVzdDogV2ViU2VhcmNoUmVxdWVzdCwgc2lnbmFsPzogQWJvcnRTaWduYWwpOiBQcm9taXNlPFdlYlNlYXJjaFJlc3VsdD4gPT5cbiAgICAgICAgdGhpcy5zZWFyY2gocmVxdWVzdCwgc2lnbmFsKSxcbiAgICAgIC8qKlxuICAgICAgICogRmV0Y2ggb25lIFVSTCBkaXJlY3RseSAoYnlwYXNzaW5nIHRoZSBhZ2VudCB0b29sKS4gRW5mb3JjZXMgdGhlXG4gICAgICAgKiBjb25maWd1cmVkIFVSTCBwb2xpY3kuIFJlYWRzIHRoZSBzaGFyZWQgcnVudGltZSBjb25maWcuXG4gICAgICAgKi9cbiAgICAgIGZldGNoOiAocmVxdWVzdDogV2ViRmV0Y2hSZXF1ZXN0LCBzaWduYWw/OiBBYm9ydFNpZ25hbCk6IFByb21pc2U8V2ViRmV0Y2hSZXN1bHQ+ID0+XG4gICAgICAgIHRoaXMuZmV0Y2gocmVxdWVzdCwgc2lnbmFsKSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzZWFyY2gocmVxdWVzdDogV2ViU2VhcmNoUmVxdWVzdCwgc2lnbmFsPzogQWJvcnRTaWduYWwpOiBQcm9taXNlPFdlYlNlYXJjaFJlc3VsdD4ge1xuICAgIHJldHVybiBydW5XZWJTZWFyY2goXG4gICAgICByZXF1ZXN0LFxuICAgICAgZ2V0V2ViU2VhcmNoUnVudGltZSgpLmNvbmZpZyxcbiAgICAgIGF3YWl0IHJlc29sdmVXZWJTZWFyY2hDb250ZXh0KCksXG4gICAgICBzaWduYWwsXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZmV0Y2gocmVxdWVzdDogV2ViRmV0Y2hSZXF1ZXN0LCBzaWduYWw/OiBBYm9ydFNpZ25hbCk6IFByb21pc2U8V2ViRmV0Y2hSZXN1bHQ+IHtcbiAgICByZXR1cm4gcnVuV2ViRmV0Y2gocmVxdWVzdCwgZ2V0V2ViU2VhcmNoUnVudGltZSgpLmNvbmZpZywgc2lnbmFsKTtcbiAgfVxufVxuXG4vKipcbiAqIFJlZ2lzdGVyIHRoZSB3ZWItc2VhcmNoIHJ1bnRpbWUgd2l0aCBBcHBLaXQuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBjcmVhdGVBcHAsIHNlcnZlciB9IGZyb20gXCJAZGF0YWJyaWNrcy9hcHBraXRcIjtcbiAqIGltcG9ydCB7IHBsdWdpbiBhcyB3ZWJTZWFyY2hQbHVnaW4sIHRvb2wgYXMgd2ViVG9vbCB9IGZyb20gXCJAZGJ4LXRvb2xzL2FwcGtpdC13ZWItc2VhcmNoXCI7XG4gKiBpbXBvcnQgeyBhZ2VudHMsIHBsdWdpbiBhcyBtYXN0cmFQbHVnaW4gfSBmcm9tIFwiQGRieC10b29scy9hcHBraXQtbWFzdHJhXCI7XG4gKlxuICogY29uc3QgcmVzZWFyY2hlciA9IGFnZW50cy5jcmVhdGVBZ2VudCh7XG4gKiAgIGluc3RydWN0aW9uczogXCJSZXNlYXJjaCBxdWVzdGlvbnMgd2l0aCB3ZWJfc2VhcmNoLCB0aGVuIHJlYWQgc291cmNlcyB3aXRoIHdlYl9mZXRjaC5cIixcbiAqICAgdG9vbHM6ICgpID0+ICh7IHdlYl9zZWFyY2g6IHdlYlRvb2wud2ViU2VhcmNoVG9vbCgpLCB3ZWJfZmV0Y2g6IHdlYlRvb2wud2ViRmV0Y2hUb29sKCkgfSksXG4gKiB9KTtcbiAqXG4gKiBhd2FpdCBjcmVhdGVBcHAoe1xuICogICBwbHVnaW5zOiBbXG4gKiAgICAgc2VydmVyKCksXG4gKiAgICAgd2ViU2VhcmNoUGx1Z2luLndlYlNlYXJjaCh7IG1vZGVsOiBcImdlbWluaVwiIH0pLFxuICogICAgIG1hc3RyYVBsdWdpbi5tYXN0cmEoeyBhZ2VudHM6IHJlc2VhcmNoZXIgfSksXG4gKiAgIF0sXG4gKiB9KTtcbiAqIGBgYFxuICovXG5leHBvcnQgY29uc3Qgd2ViU2VhcmNoID0gdG9QbHVnaW4oV2ViU2VhcmNoUGx1Z2luKTtcbiJdfQ==
225
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3BsdWdpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFFSCxPQUFPLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFDWixRQUFRLEdBR1QsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQ0wsVUFBVSxFQUNWLG1CQUFtQixFQUNuQixpQkFBaUIsR0FJbEIsTUFBTSx5QkFBeUIsQ0FBQztBQUNqQyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sRUFDTCxTQUFTLEVBQ1Qsb0JBQW9CLEVBQ3BCLHdCQUF3QixHQUV6QixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxxQkFBcUIsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNoRyxPQUFPLEVBQ0wscUJBQXFCLEVBQ3JCLHNCQUFzQixFQUN0QiwwQkFBMEIsRUFDMUIsMkJBQTJCLEdBQzVCLE1BQU0sYUFBYSxDQUFDO0FBT3JCLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxZQUFZLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFcEUsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUV4Qzs7Ozs7O0dBTUc7QUFDSCxNQUFNLHlCQUF5QixHQUFHO0lBQ2hDLElBQUksRUFBRSxZQUFZLENBQUMsZ0JBQWdCO0lBQ25DLEtBQUssRUFBRSxxQkFBcUI7SUFDNUIsV0FBVyxFQUFFLHFCQUFxQjtJQUNsQyxXQUFXLEVBQ1QseUZBQXlGO1FBQ3pGLG9FQUFvRTtJQUN0RSxVQUFVLEVBQUUsV0FBVztJQUN2QixNQUFNLEVBQUU7UUFDTixJQUFJLEVBQUU7WUFDSixHQUFHLEVBQUUs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S0FBSyxFQUFFLENBQUMsT0FBd0IsRUFBRSxNQUFvQixFQUEyQixFQUFFLENBQ2pGLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQztTQUM5QixDQUFDO0lBQ0osQ0FBQztJQUVPLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBeUIsRUFBRSxNQUFvQjtRQUNsRSxPQUFPLFlBQVksQ0FDakIsT0FBTyxFQUNQLG1CQUFtQixFQUFFLENBQUMsTUFBTSxFQUM1QixNQUFNLHVCQUF1QixFQUFFLEVBQy9CLE1BQU0sQ0FDUCxDQUFDO0lBQ0osQ0FBQztJQUVPLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBd0IsRUFBRSxNQUFvQjtRQUNoRSxPQUFPLFdBQVcsQ0FBQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDcEUsQ0FBQzs7QUFHSDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNCRztBQUNILE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRyxRQUFRLENBQUMsZUFBZSxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEFwcEtpdCBwbHVnaW4gKHJlZ2lzdGVyZWQgbmFtZTogYHdlYi1zZWFyY2hgKSB0aGF0IG93bnMgdGhlIHJlc29sdmVkXG4gKiB3ZWItc2VhcmNoIHJ1bnRpbWUgLSB0aGUgVVJMIHBvbGljeSwgcmVzdWx0IC8gbGVuZ3RoIGNhcHMsIHRpbWVvdXQsIGFuZFxuICogZGVmYXVsdCBhcHByb3ZhbCBnYXRlIHRoZSB7QGxpbmsgd2ViU2VhcmNoVG9vbH0gLyB7QGxpbmsgd2ViRmV0Y2hUb29sfVxuICogcmVhZC4gUmVnaXN0ZXJpbmcgaXQgcmVzb2x2ZXMgYW5kIGxvZ3MgdGhlIGVmZmVjdGl2ZSBjb25maWcgKHdoaWNoIFVSTFxuICogcG9saWN5IGlzIGluIGZvcmNlLCB0aGUgY2Fwcykgc28gYSBtaXNjb25maWd1cmF0aW9uIGlzIHZpc2libGUgaW4gdGhlIGJvb3RcbiAqIGxvZ3MgcmF0aGVyIHRoYW4gb24gdGhlIGZpcnN0IHNlYXJjaCwgYW5kIGluc3RhbGxzIHRoZSBwbHVnaW4nc1xuICogYGV4ZWN1dGUoKWAgYXMgdGhlIHJ1bnRpbWUncyBleGVjdXRvciBzbyBldmVyeSBvdXRib3VuZCBjYWxsIHBpY2tzIHVwXG4gKiBBcHBLaXQncyBjYWNoZSAvIHJldHJ5IC8gdGltZW91dCAvIHRlbGVtZXRyeSBjaGFpbi5cbiAqXG4gKiBUaGUgcGx1Z2luIGFsc28gaW1wbGVtZW50cyBBcHBLaXQncyBgVG9vbFByb3ZpZGVyYCwgc28gYW4gQXBwS2l0IGFnZW50IGdldHNcbiAqIGB3ZWJfc2VhcmNoYCAvIGB3ZWJfZmV0Y2hgIHdpdGhvdXQgZ29pbmcgdGhyb3VnaCBNYXN0cmE7IHRoZSBNYXN0cmEgdG9vbHMgaW5cbiAqIGB0b29sLnRzYCBhcmUgdGhlIG90aGVyIGhhbGYgYW5kIHNoYXJlIHRoZSBzYW1lIHJ1bnRpbWUuXG4gKlxuICogQG1vZHVsZVxuICovXG5cbmltcG9ydCB7XG4gIFBsdWdpbixcbiAgUmVzb3VyY2VUeXBlLFxuICB0b1BsdWdpbixcbiAgdHlwZSBQbHVnaW5NYW5pZmVzdCxcbiAgdHlwZSBSZXNvdXJjZVJlcXVpcmVtZW50LFxufSBmcm9tIFwiQGRhdGFicmlja3MvYXBwa2l0XCI7XG5pbXBvcnQge1xuICBkZWZpbmVUb29sLFxuICBleGVjdXRlRnJvbVJlZ2lzdHJ5LFxuICB0b29sc0Zyb21SZWdpc3RyeSxcbiAgdHlwZSBBZ2VudFRvb2xEZWZpbml0aW9uLFxuICB0eXBlIFRvb2xQcm92aWRlcixcbiAgdHlwZSBUb29sUmVnaXN0cnksXG59IGZyb20gXCJAZGF0YWJyaWNrcy9hcHBraXQvYmV0YVwiO1xuaW1wb3J0IHsgbG9nLCBzdHJpbmcgfSBmcm9tIFwiQGRieC10b29scy9zaGFyZWQtY29yZVwiO1xuaW1wb3J0IHtcbiAgTU9ERUxfRU5WLFxuICBTRVJWSU5HX0VORFBPSU5UX0VOVixcbiAgV0VCX1NFQVJDSF9DT05GSUdfU0NIRU1BLFxuICB0eXBlIFdlYlNlYXJjaFBsdWdpbkNvbmZpZyxcbn0gZnJvbSBcIi4vY29uZmlnLnRzXCI7XG5pbXBvcnQgeyBydW5XZWJGZXRjaCB9IGZyb20gXCIuL2ZldGNoLnRzXCI7XG5pbXBvcnQgeyBnZXRXZWJTZWFyY2hSdW50aW1lLCByZXNldFdlYlNlYXJjaFJ1bnRpbWUsIHNldFdlYlNlYXJjaEV4ZWN1dG9yIH0gZnJvbSBcIi4vcnVudGltZS50c1wiO1xuaW1wb3J0IHtcbiAgd2ViRmV0Y2hSZXF1ZXN0U2NoZW1hLFxuICB3ZWJTZWFyY2hSZXF1ZXN0U2NoZW1hLFxuICBXRUJfRkVUQ0hfVE9PTF9ERVNDUklQVElPTixcbiAgV0VCX1NFQVJDSF9UT09MX0RFU0NSSVBUSU9OLFxufSBmcm9tIFwiLi9zY2hlbWEudHNcIjtcbmltcG9ydCB0eXBlIHtcbiAgV2ViRmV0Y2hSZXF1ZXN0LFxuICBXZWJGZXRjaFJlc3VsdCxcbiAgV2ViU2VhcmNoUmVxdWVzdCxcbiAgV2ViU2VhcmNoUmVzdWx0LFxufSBmcm9tIFwiLi9zY2hlbWEudHNcIjtcbmltcG9ydCB7IHJlc29sdmVXZWJTZWFyY2hDb250ZXh0LCBydW5XZWJTZWFyY2ggfSBmcm9tIFwiLi9zZWFyY2gudHNcIjtcblxuY29uc3QgbG9nZ2VyID0gbG9nLmxvZ2dlcihcIndlYi1zZWFyY2hcIik7XG5cbi8qKlxuICogVGhlIE1vZGVsIFNlcnZpbmcgZW5kcG9pbnQgdGhlIG5hdGl2ZSB3ZWItc2VhcmNoIHRvb2wgcnVucyBvbi4gRGVjbGFyZWRcbiAqIG9wdGlvbmFsIGJlY2F1c2UgdGhlIHBsdWdpbiByZXNvbHZlcyBhIHdlYi1zZWFyY2gtY2FwYWJsZSBlbmRwb2ludCBmcm9tIHRoZVxuICogbGl2ZSBjYXRhbG9ndWUgd2hlbiBub3RoaW5nIGlzIHBpbm5lZDsge0BsaW5rIFdlYlNlYXJjaFBsdWdpbi5nZXRSZXNvdXJjZVJlcXVpcmVtZW50c31cbiAqIHByb21vdGVzIGl0IHRvIHJlcXVpcmVkIG9uY2UgYSBkZXBsb3ltZW50IG5hbWVzIG9uZS4gYENBTl9RVUVSWWAgaXMgdGhlXG4gKiB3ZWFrZXN0IHBlcm1pc3Npb24gdGhhdCBjYW4gaW52b2tlIGFuIGVuZHBvaW50LlxuICovXG5jb25zdCBTRVJWSU5HX0VORFBPSU5UX1JFU09VUkNFID0ge1xuICB0eXBlOiBSZXNvdXJjZVR5cGUuU0VSVklOR19FTkRQT0lOVCxcbiAgYWxpYXM6IFwiV2ViIFNlYXJjaCBFbmRwb2ludFwiLFxuICByZXNvdXJjZUtleTogXCJ3ZWItc2VhcmNoLWVuZHBvaW50XCIsXG4gIGRlc2NyaXB0aW9uOlxuICAgIFwiTW9kZWwgU2VydmluZyBlbmRwb2ludCBydW5uaW5nIHRoZSBuYXRpdmUgd2ViLXNlYXJjaCB0b29sLiBPcHRpb25hbDogcmVzb2x2ZWQgZnJvbSB0aGUgXCIgK1xuICAgIFwid29ya3NwYWNlIGNhdGFsb2d1ZSAoR2VtaW5pLCB0aGVuIEdQVCkgd2hlbiBubyBlbmRwb2ludCBpcyBwaW5uZWQuXCIsXG4gIHBlcm1pc3Npb246IFwiQ0FOX1FVRVJZXCIsXG4gIGZpZWxkczoge1xuICAgIG5hbWU6IHtcbiAgICAgIGVudjogU0VSVklOR19FTkRQT0lOVF9FTlYsXG4gICAgICBkZXNjcmlwdGlvbjogYFNlcnZpbmcgZW5kcG9pbnQgbmFtZSBmb3Igd2ViIHNlYXJjaC4gJHtNT0RFTF9FTlZ9IG92ZXJyaWRlcyBpdC5gLFxuICAgICAgZGlzY292ZXJ5OiB7XG4gICAgICAgIHR5cGU6IFwiY2xpXCIsXG4gICAgICAgIGNsaUNvbW1hbmQ6IFwiZGF0YWJyaWNrcyBzZXJ2aW5nLWVuZHBvaW50cyBsaXN0IC0tcHJvZmlsZSA8UFJPRklMRT4gLS1vdXRwdXQganNvblwiLFxuICAgICAgICBzZWxlY3RGaWVsZDogXCIubmFtZVwiLFxuICAgICAgfSxcbiAgICB9LFxuICB9LFxufSBzYXRpc2ZpZXMgT21pdDxSZXNvdXJjZVJlcXVpcmVtZW50LCBcInJlcXVpcmVkXCI+O1xuXG4vKipcbiAqIEFwcEtpdCBwbHVnaW4gdGhhdCByZXNvbHZlcyBhbmQgaG9sZHMgdGhlIHdlYi1zZWFyY2ggcnVudGltZSBjb25maWcgdXNlZFxuICogYnkgdGhlIGB3ZWJfc2VhcmNoYCAvIGB3ZWJfZmV0Y2hgIHRvb2xzLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgY3JlYXRlQXBwLCBzZXJ2ZXIgfSBmcm9tIFwiQGRhdGFicmlja3MvYXBwa2l0XCI7XG4gKiBpbXBvcnQgeyBwbHVnaW4gYXMgd2ViU2VhcmNoUGx1Z2luIH0gZnJvbSBcIkBkYngtdG9vbHMvYXBwa2l0LXdlYi1zZWFyY2hcIjtcbiAqXG4gKiBhd2FpdCBjcmVhdGVBcHAoe1xuICogICBwbHVnaW5zOiBbXG4gKiAgICAgc2VydmVyKCksXG4gKiAgICAgd2ViU2VhcmNoUGx1Z2luLndlYlNlYXJjaCh7XG4gKiAgICAgICBtb2RlbDogXCJnZW1pbmlcIixcbiAqICAgICAgIHVybFBvbGljeTogXCJhbGxvd2xpc3RcIixcbiAqICAgICAgIGFsbG93ZWRVcmxzOiBbXCIqLmRhdGFicmlja3MuY29tXCJdLFxuICogICAgIH0pLFxuICogICBdLFxuICogfSk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNsYXNzIFdlYlNlYXJjaFBsdWdpbiBleHRlbmRzIFBsdWdpbjxXZWJTZWFyY2hQbHVnaW5Db25maWc+IGltcGxlbWVudHMgVG9vbFByb3ZpZGVyIHtcbiAgc3RhdGljIG1hbmlmZXN0ID0ge1xuICAgIG5hbWU6IFwid2ViLXNlYXJjaFwiLFxuICAgIGRpc3BsYXlOYW1lOiBcIldlYiBTZWFyY2hcIixcbiAgICBkZXNjcmlwdGlvbjpcbiAgICAgIFwiU2VhcmNoZXMgdGhlIHdlYiB0aHJvdWdoIHRoZSBEYXRhYnJpY2tzIG5hdGl2ZSB3ZWItc2VhcmNoIHRvb2wgb24gaXRzIG93biBcIiArXG4gICAgICBcIndlYi1jYXBhYmxlIHNlcnZpbmcgZW5kcG9pbnQsIGFuZCBmZXRjaGVzIHBhZ2VzIHZpYSBnb3Qtc2NyYXBpbmcsIGJlaGluZCBhbiBcIiArXG4gICAgICBcIm9wdGlvbmFsIFVSTCBhbGxvdy1saXN0IGFuZCBwZXItdG9vbCBhcHByb3ZhbCBnYXRpbmcuXCIsXG4gICAgc3RhYmlsaXR5OiBcImJldGFcIixcbiAgICByZXNvdXJjZXM6IHtcbiAgICAgIHJlcXVpcmVkOiBbXSxcbiAgICAgIG9wdGlvbmFsOiBbU0VSVklOR19FTkRQT0lOVF9SRVNPVVJDRV0sXG4gICAgfSxcbiAgICBjb25maWc6IHsgc2NoZW1hOiBXRUJfU0VBUkNIX0NPTkZJR19TQ0hFTUEgfSxcbiAgfSBzYXRpc2ZpZXMgUGx1Z2luTWFuaWZlc3Q8XCJ3ZWItc2VhcmNoXCI+O1xuXG4gIC8qKlxuICAgKiBQcm9tb3RlIHRoZSBzZXJ2aW5nIGVuZHBvaW50IHRvIGEgcmVxdWlyZWQgcmVzb3VyY2Ugb25jZSBhIGRlcGxveW1lbnRcbiAgICogcGlucyBvbmUsIHRocm91Z2ggcGx1Z2luIGNvbmZpZyBvciBlaXRoZXIgZW52aXJvbm1lbnQgbmFtZS4gTGVmdCBvcHRpb25hbFxuICAgKiBvdGhlcndpc2UsIGJlY2F1c2UgdGhlIHBsdWdpbiBwaWNrcyBhIHdlYi1zZWFyY2gtY2FwYWJsZSBlbmRwb2ludCBvdXQgb2ZcbiAgICogdGhlIGxpdmUgY2F0YWxvZ3VlIG9uIGl0cyBvd24uXG4gICAqL1xuICBzdGF0aWMgZ2V0UmVzb3VyY2VSZXF1aXJlbWVudHMoY29uZmlnOiBXZWJTZWFyY2hQbHVnaW5Db25maWcpOiBSZXNvdXJjZVJlcXVpcmVtZW50W10ge1xuICAgIGNvbnN0IHBpbm5lZCA9XG4gICAgICBzdHJpbmcudHJpbVRvTnVsbChjb25maWcubW9kZWwpID8/XG4gICAgICBzdHJpbmcudHJpbVRvTnVsbChwcm9jZXNzLmVudltNT0RFTF9FTlZdKSA/P1xuICAgICAgc3RyaW5nLnRyaW1Ub051bGwocHJvY2Vzcy5lbnZbU0VSVklOR19FTkRQT0lOVF9FTlZdKTtcbiAgICByZXR1cm4gcGlubmVkID09PSBudWxsID8gW10gOiBbeyAuLi5TRVJWSU5HX0VORFBPSU5UX1JFU09VUkNFLCByZXF1aXJlZDogdHJ1ZSB9XTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgdG9vbHMgdGhpcyBwbHVnaW4gb2ZmZXJzIHRvIGFuIEFwcEtpdCBhZ2VudC4gQm90aCBhcmUgcmVhZHMgYW5kIGJvdGhcbiAgICogcnVuIHVuZGVyIHRoZSBjYWxsZXIncyBpZGVudGl0eS5cbiAgICpcbiAgICogTmVpdGhlciBpcyBgYXV0b0luaGVyaXRhYmxlYC4gYHdlYl9mZXRjaGAgcmVhY2hlcyBhIFVSTCB0aGUgbW9kZWwgY2hvc2UsXG4gICAqIHdoaWNoIGlzIHJlYWNoYWJsZSBmcm9tIGluc2lkZSB0aGUgd29ya3NwYWNlIG5ldHdvcmssIHNvIGl0IG11c3Qgb25seVxuICAgKiBhcHBlYXIgaW4gYW4gYWdlbnQgdGhhdCBhc2tlZCBmb3IgaXQgYW5kIGFjY2VwdGVkIHRoZSBVUkwgcG9saWN5IHRoYXRcbiAgICogY29tZXMgd2l0aCBpdC4gYHdlYl9zZWFyY2hgIGlzIHNhZmVyIGJ1dCBzdGlsbCBzcGVuZHMgc2VydmluZyB0b2tlbnMgb25cbiAgICogZXZlcnkgY2FsbCwgc28gaXQgaXMgb3B0LWluIGZvciBjb3N0IHJhdGhlciB0aGFuIGZvciBzYWZldHkuXG4gICAqXG4gICAqIGBleGVjdXRlYCByZS1wYXJzZXMgaXRzIGFyZ3VtZW50cyB3aXRoIHRoZSBsb2NhbCBzY2hlbWE6IEFwcEtpdCB2YWxpZGF0ZXNcbiAgICogYWdhaW5zdCB0aGUgc2FtZSBzY2hlbWEgZmlyc3QsIGJ1dCByZS1wYXJzaW5nIGlzIHdoYXQgZ2l2ZXMgdGhlIGJvZHkgdHlwZWRcbiAgICogYXJndW1lbnRzIGluc3RlYWQgb2YgYHVua25vd25gLlxuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSB0b29sczogVG9vbFJlZ2lzdHJ5ID0ge1xuICAgIHdlYl9zZWFyY2g6IGRlZmluZVRvb2woe1xuICAgICAgZGVzY3JpcHRpb246IFdFQl9TRUFSQ0hfVE9PTF9ERVNDUklQVElPTixcbiAgICAgIHNjaGVtYTogd2ViU2VhcmNoUmVxdWVzdFNjaGVtYSxcbiAgICAgIGFubm90YXRpb25zOiB7IGVmZmVjdDogXCJyZWFkXCIsIHJlcXVpcmVzVXNlckNvbnRleHQ6IHRydWUgfSxcbiAgICAgIGF1dG9Jbmhlcml0YWJsZTogZmFsc2UsXG4gICAgICBleGVjdXRlOiBhc3luYyAoYXJncywgc2lnbmFsKSA9PiB0aGlzLnNlYXJjaCh3ZWJTZWFyY2hSZXF1ZXN0U2NoZW1hLnBhcnNlKGFyZ3MpLCBzaWduYWwpLFxuICAgIH0pLFxuICAgIHdlYl9mZXRjaDogZGVmaW5lVG9vbCh7XG4gICAgICBkZXNjcmlwdGlvbjogV0VCX0ZFVENIX1RPT0xfREVTQ1JJUFRJT04sXG4gICAgICBzY2hlbWE6IHdlYkZldGNoUmVxdWVzdFNjaGVtYSxcbiAgICAgIGFubm90YXRpb25zOiB7IGVmZmVjdDogXCJyZWFkXCIsIHJlcXVpcmVzVXNlckNvbnRleHQ6IHRydWUgfSxcbiAgICAgIGF1dG9Jbmhlcml0YWJsZTogZmFsc2UsXG4gICAgICBleGVjdXRlOiBhc3luYyAoYXJncywgc2lnbmFsKSA9PiB0aGlzLmZldGNoKHdlYkZldGNoUmVxdWVzdFNjaGVtYS5wYXJzZShhcmdzKSwgc2lnbmFsKSxcbiAgICB9KSxcbiAgfTtcblxuICAvKipcbiAgICogUHJpbWUgdGhlIHNoYXJlZCBydW50aW1lIGZyb20gdGhpcyBwbHVnaW4ncyBjb25maWcgKG92ZXIgZW52KSwgcm91dGUgdGhlXG4gICAqIHRvb2xzJyBvdXRib3VuZCBjYWxscyB0aHJvdWdoIHRoaXMgcGx1Z2luJ3MgaW50ZXJjZXB0b3IgY2hhaW4sIGFuZCBsb2cgdGhlXG4gICAqIGVmZmVjdGl2ZSBwb2xpY3kgc28gYW4gYWN0aXZlIGFsbG93LWxpc3QgLyBjYXBzIGFyZSBvYnZpb3VzIGF0IGJvb3QuXG4gICAqL1xuICBvdmVycmlkZSBhc3luYyBzZXR1cCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB7IGNvbmZpZyB9ID0gZ2V0V2ViU2VhcmNoUnVudGltZSh0aGlzLmNvbmZpZyk7XG4gICAgc2V0V2ViU2VhcmNoRXhlY3V0b3IoKGZuLCBzZXR0aW5ncykgPT4gdGhpcy5leGVjdXRlKGZuLCBzZXR0aW5ncykpO1xuICAgIGxvZ2dlci5pbmZvKFwicmVhZHlcIiwge1xuICAgICAgbW9kZWw6IGNvbmZpZy5tb2RlbCA/PyBgZmFsbGJhY2tzOlske2NvbmZpZy5tb2RlbEZhbGxiYWNrcy5qb2luKFwiLCBcIil9XWAsXG4gICAgICBtb2RlbFNvdXJjZTogY29uZmlnLm1vZGVsU291cmNlLFxuICAgICAgdXJsUG9saWN5OiBjb25maWcudXJsUG9saWN5LFxuICAgICAgLi4uKGNvbmZpZy5hbGxvd0xpc3QucmVzdHJpY3RlZCA/IHsgYWxsb3dlZFVybHM6IGNvbmZpZy5hbGxvd0xpc3QucGF0dGVybnMgfSA6IHt9KSxcbiAgICAgIG1heENpdGF0aW9uczogY29uZmlnLm1heENpdGF0aW9ucyxcbiAgICAgIGZldGNoTWF4TGVuZ3RoOiBjb25maWcuZmV0Y2hNYXhMZW5ndGgsXG4gICAgICBhcHByb3ZhbDogY29uZmlnLmFwcHJvdmFsLm1vZGUsXG4gICAgICBzY3JhcGVGYWxsYmFjazogY29uZmlnLnNjcmFwZUZhbGxiYWNrLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIERyb3AgdGhlIHNoYXJlZCBydW50aW1lIHNvIGEgcmVzdGFydGVkIGFwcCByZS1yZXNvbHZlcyBjb25maWcgYW5kIGRvZXMgbm90XG4gICAqIGtlZXAgY2FsbGluZyB0aHJvdWdoIGEgdG9ybi1kb3duIHBsdWdpbidzIGBleGVjdXRlKClgLiBCb3VuZGVkIGFuZFxuICAgKiBpZGVtcG90ZW50OiB0aGVyZSBpcyBubyBjb25uZWN0aW9uIHRvIGRyYWluLCBvbmx5IHRoZSBtZW1vIHRvIGNsZWFyLlxuICAgKi9cbiAgYXN5bmMgc2h1dGRvd24oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmVzZXRXZWJTZWFyY2hSdW50aW1lKCk7XG4gIH1cblxuICAvKipcbiAgICogQWJvcnQgaW4tZmxpZ2h0IHdvcmsuIEFwcEtpdCdzIGdyYWNlZnVsIHNodXRkb3duIG9ubHkgaW52b2tlcyB0aGlzIGhvb2sgLVxuICAgKiBpdCBuZXZlciBjYWxscyB7QGxpbmsgc2h1dGRvd259IC0gc28gdGhlIHJ1bnRpbWUgbWVtbyBpcyBkcm9wcGVkIGZyb20gaGVyZVxuICAgKiB0byBrZWVwIGEgcmVzdGFydGVkIGFwcCBmcm9tIGNhbGxpbmcgdGhyb3VnaCBhIHRvcm4tZG93biBgZXhlY3V0ZSgpYC4gVGhlXG4gICAqIHRlYXJkb3duIGlzIHN5bmNocm9ub3VzIGFuZCBpZGVtcG90ZW50LCBzbyB0aGUgdW4tYXdhaXRlZCBjYWxsIGNvc3RzXG4gICAqIG5vdGhpbmcuXG4gICAqL1xuICBvdmVycmlkZSBhYm9ydEFjdGl2ZU9wZXJhdGlvbnMoKTogdm9pZCB7XG4gICAgc3VwZXIuYWJvcnRBY3RpdmVPcGVyYXRpb25zKCk7XG4gICAgdm9pZCB0aGlzLnNodXRkb3duKCk7XG4gIH1cblxuICAvKiogQXBwS2l0IGBUb29sUHJvdmlkZXJgOiB0aGUgdG9vbCBkZWZpbml0aW9ucyBvZmZlcmVkIHRvIGFuIGFnZW50LiAqL1xuICBnZXRBZ2VudFRvb2xzKCk6IEFnZW50VG9vbERlZmluaXRpb25bXSB7XG4gICAgcmV0dXJuIHRvb2xzRnJvbVJlZ2lzdHJ5KHRoaXMudG9vbHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFwcEtpdCBgVG9vbFByb3ZpZGVyYDogcnVuIG9uZSB0b29sIGNhbGwuIEFyZ3VtZW50cyBhcmUgdmFsaWRhdGVkIGFnYWluc3RcbiAgICogdGhlIHRvb2wncyBzY2hlbWEgZmlyc3QsIGFuZCBhIHZhbGlkYXRpb24gZmFpbHVyZSBjb21lcyBiYWNrIGFzIGFuXG4gICAqIExMTS1mcmllbmRseSBzdHJpbmcgc28gdGhlIG1vZGVsIGNhbiBjb3JyZWN0IGl0c2VsZiBvbiB0aGUgbmV4dCB0dXJuLlxuICAgKi9cbiAgYXN5bmMgZXhlY3V0ZUFnZW50VG9vbChuYW1lOiBzdHJpbmcsIGFyZ3M6IHVua25vd24sIHNpZ25hbD86IEFib3J0U2lnbmFsKTogUHJvbWlzZTx1bmtub3duPiB7XG4gICAgcmV0dXJuIGV4ZWN1dGVGcm9tUmVnaXN0cnkodGhpcy50b29scywgbmFtZSwgYXJncywgc2lnbmFsKTtcbiAgfVxuXG4gIG92ZXJyaWRlIGV4cG9ydHMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC8qKlxuICAgICAgICogUnVuIGEgd2ViIHNlYXJjaCBkaXJlY3RseSAoYnlwYXNzaW5nIHRoZSBhZ2VudCB0b29sKS4gUmVzb2x2ZXMgdGhlXG4gICAgICAgKiBPQk8gY2xpZW50IGZyb20gdGhlIGFjdGl2ZSBleGVjdXRpb24gY29udGV4dCBhbmQgcmVhZHMgdGhlIHNoYXJlZFxuICAgICAgICogcnVudGltZSBjb25maWcgcHJpbWVkIGF0IHNldHVwLlxuICAgICAgICovXG4gICAgICBzZWFyY2g6IChyZXF1ZXN0OiBXZWJTZWFyY2hSZXF1ZXN0LCBzaWduYWw/OiBBYm9ydFNpZ25hbCk6IFByb21pc2U8V2ViU2VhcmNoUmVzdWx0PiA9PlxuICAgICAgICB0aGlzLnNlYXJjaChyZXF1ZXN0LCBzaWduYWwpLFxuICAgICAgLyoqXG4gICAgICAgKiBGZXRjaCBvbmUgVVJMIGRpcmVjdGx5IChieXBhc3NpbmcgdGhlIGFnZW50IHRvb2wpLiBFbmZvcmNlcyB0aGVcbiAgICAgICAqIGNvbmZpZ3VyZWQgVVJMIHBvbGljeS4gUmVhZHMgdGhlIHNoYXJlZCBydW50aW1lIGNvbmZpZy5cbiAgICAgICAqL1xuICAgICAgZmV0Y2g6IChyZXF1ZXN0OiBXZWJGZXRjaFJlcXVlc3QsIHNpZ25hbD86IEFib3J0U2lnbmFsKTogUHJvbWlzZTxXZWJGZXRjaFJlc3VsdD4gPT5cbiAgICAgICAgdGhpcy5mZXRjaChyZXF1ZXN0LCBzaWduYWwpLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHNlYXJjaChyZXF1ZXN0OiBXZWJTZWFyY2hSZXF1ZXN0LCBzaWduYWw/OiBBYm9ydFNpZ25hbCk6IFByb21pc2U8V2ViU2VhcmNoUmVzdWx0PiB7XG4gICAgcmV0dXJuIHJ1bldlYlNlYXJjaChcbiAgICAgIHJlcXVlc3QsXG4gICAgICBnZXRXZWJTZWFyY2hSdW50aW1lKCkuY29uZmlnLFxuICAgICAgYXdhaXQgcmVzb2x2ZVdlYlNlYXJjaENvbnRleHQoKSxcbiAgICAgIHNpZ25hbCxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBmZXRjaChyZXF1ZXN0OiBXZWJGZXRjaFJlcXVlc3QsIHNpZ25hbD86IEFib3J0U2lnbmFsKTogUHJvbWlzZTxXZWJGZXRjaFJlc3VsdD4ge1xuICAgIHJldHVybiBydW5XZWJGZXRjaChyZXF1ZXN0LCBnZXRXZWJTZWFyY2hSdW50aW1lKCkuY29uZmlnLCBzaWduYWwpO1xuICB9XG59XG5cbi8qKlxuICogUmVnaXN0ZXIgdGhlIHdlYi1zZWFyY2ggcnVudGltZSB3aXRoIEFwcEtpdC5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIGltcG9ydCB7IGNyZWF0ZUFwcCwgc2VydmVyIH0gZnJvbSBcIkBkYXRhYnJpY2tzL2FwcGtpdFwiO1xuICogaW1wb3J0IHsgcGx1Z2luIGFzIHdlYlNlYXJjaFBsdWdpbiwgdG9vbCBhcyB3ZWJUb29sIH0gZnJvbSBcIkBkYngtdG9vbHMvYXBwa2l0LXdlYi1zZWFyY2hcIjtcbiAqIGltcG9ydCB7IGFnZW50cywgcGx1Z2luIGFzIG1hc3RyYVBsdWdpbiB9IGZyb20gXCJAZGJ4LXRvb2xzL2FwcGtpdC1tYXN0cmFcIjtcbiAqXG4gKiBjb25zdCByZXNlYXJjaGVyID0gYWdlbnRzLmNyZWF0ZUFnZW50KHtcbiAqICAgaW5zdHJ1Y3Rpb25zOiBcIlJlc2VhcmNoIHF1ZXN0aW9ucyB3aXRoIHdlYl9zZWFyY2gsIHRoZW4gcmVhZCBzb3VyY2VzIHdpdGggd2ViX2ZldGNoLlwiLFxuICogICB0b29sczogKCkgPT4gKHsgd2ViX3NlYXJjaDogd2ViVG9vbC53ZWJTZWFyY2hUb29sKCksIHdlYl9mZXRjaDogd2ViVG9vbC53ZWJGZXRjaFRvb2woKSB9KSxcbiAqIH0pO1xuICpcbiAqIGF3YWl0IGNyZWF0ZUFwcCh7XG4gKiAgIHBsdWdpbnM6IFtcbiAqICAgICBzZXJ2ZXIoKSxcbiAqICAgICB3ZWJTZWFyY2hQbHVnaW4ud2ViU2VhcmNoKHsgbW9kZWw6IFwiZ2VtaW5pXCIgfSksXG4gKiAgICAgbWFzdHJhUGx1Z2luLm1hc3RyYSh7IGFnZW50czogcmVzZWFyY2hlciB9KSxcbiAqICAgXSxcbiAqIH0pO1xuICogYGBgXG4gKi9cbmV4cG9ydCBjb25zdCB3ZWJTZWFyY2ggPSB0b1BsdWdpbihXZWJTZWFyY2hQbHVnaW4pO1xuIl19
@@ -19,8 +19,8 @@
19
19
  * @module
20
20
  */
21
21
  import { type ExecutionResult } from "@databricks/appkit";
22
- import { type ResolvedWebSearchConfig, type WebSearchPluginConfig } from "./config.js";
23
- import type { WebSearchExecutionSettings } from "./defaults.js";
22
+ import { type ResolvedWebSearchConfig, type WebSearchPluginConfig } from "./config.ts";
23
+ import type { WebSearchExecutionSettings } from "./defaults.ts";
24
24
  /**
25
25
  * Runs one outbound call through AppKit's interceptor chain. Matches
26
26
  * `Plugin.execute()`, which never throws: a failure comes back as
@@ -92,4 +92,4 @@ export async function executeRead(operation, settings, fn, signal) {
92
92
  context: { operation, status: result.status },
93
93
  });
94
94
  }
95
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVudGltZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ydW50aW1lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBbUJHO0FBRUgsT0FBTyxFQUFFLFdBQVcsRUFBRSxjQUFjLEVBQXdCLE1BQU0sb0JBQW9CLENBQUM7QUFDdkYsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDM0QsT0FBTyxFQUNMLHNCQUFzQixHQUd2QixNQUFNLFVBQVUsQ0FBQztBQUdsQixNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUM7QUFrQmhEOzs7O0dBSUc7QUFDSCxNQUFNLGFBQWEsR0FBc0IsS0FBSyxFQUFFLEVBQUUsRUFBRSxFQUFFO0lBQ3BELElBQUksQ0FBQztRQUNILE9BQU8sRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDeEMsQ0FBQztJQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDYixPQUFPO1lBQ0wsRUFBRSxFQUFFLEtBQUs7WUFDVCxNQUFNLEVBQUUsR0FBRyxZQUFZLFdBQVcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRztZQUN6RCxPQUFPLEVBQUUsS0FBSyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUM7U0FDakMsQ0FBQztJQUNKLENBQUM7QUFDSCxDQUFDLENBQUM7QUFFRixJQUFJLE9BQXFDLENBQUM7QUFFMUM7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLG1CQUFtQixDQUFDLFNBQWlDO0lBQ25FLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNiLE9BQU8sR0FBRyxFQUFFLE1BQU0sRUFBRSxzQkFBc0IsQ0FBQyxTQUFTLENBQUMsRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLENBQUM7SUFDbEYsQ0FBQztJQUNELE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLG9CQUFvQixDQUFDLE9BQTBCO0lBQzdELG1CQUFtQixFQUFFLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztBQUMxQyxDQUFDO0FBRUQscUZBQXFGO0FBQ3JGLE1BQU0sVUFBVSxxQkFBcUI7SUFDbkMsT0FBTyxHQUFHLFNBQVMsQ0FBQztBQUN0QixDQUFDO0FBRUQ7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxXQUFXLENBQy9CLFNBQWlCLEVBQ2pCLFFBQW9DLEVBQ3BDLEVBQXdDLEVBQ3hDLE1BQW9CO0lBRXBCLE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxtQkFBbUIsRUFBRSxDQUFDO0lBQzFDLE1BQU0sTUFBTSxHQUFHLE1BQU0sT0FBTyxDQUMxQixDQUFDLGFBQWEsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxhQUFhLEVBQUUsTUFBTSxDQUFDLENBQUMsRUFDdkUsUUFBUSxDQUNULENBQUM7SUFDRixJQUFJLE1BQU0sQ0FBQyxFQUFFO1FBQUUsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDO0lBQ2xDLG1FQUFtRTtJQUNuRSxJQUFJLE1BQU0sRUFBRSxPQUFPO1FBQUUsTUFBTSxjQUFjLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDckQsTUFBTSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRTtRQUM5QixTQUFTO1FBQ1QsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNO1FBQ3JCLEtBQUssRUFBRSxNQUFNLENBQUMsT0FBTztLQUN0QixDQUFDLENBQUM7SUFDSCxNQUFNLElBQUksY0FBYyxDQUFDLGVBQWUsU0FBUyxTQUFTLEVBQUU7UUFDMUQsT0FBTyxFQUFFLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsTUFBTSxFQUFFO0tBQzlDLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFRoZSB3ZWItc2VhcmNoIHJ1bnRpbWU6IGEgbGF6aWx5LXJlc29sdmVkLCBwcm9jZXNzLXdpZGUgY29uZmlnIHNoYXJlZCBieVxuICogdGhlIHBsdWdpbiBhbmQgdGhlIGB3ZWJfc2VhcmNoYCAvIGB3ZWJfZmV0Y2hgIHRvb2xzLCBzbyBib3RoIHJlYWQgb25lXG4gKiByZXNvbHZlZCBhbGxvdy1saXN0IC8gY2FwIC8gdGltZW91dCBzZXQuIFRoZSBmaXJzdCBjYWxsZXIgKG5vcm1hbGx5IHRoZVxuICogcGx1Z2luIGF0IHNldHVwKSBwcmltZXMgaXQgZnJvbSB0aGUgcGx1Z2luJ3MgY29uZmlnOyBsYXRlciBjYWxsZXJzICh0aGVcbiAqIHRvb2xzJyBgZXhlY3V0ZWApIHJldXNlIGl0LlxuICpcbiAqIFRoZSBydW50aW1lIGFsc28gY2FycmllcyB0aGUge0BsaW5rIFdlYlNlYXJjaEV4ZWN1dG9yfSBldmVyeSBvdXRib3VuZCBjYWxsXG4gKiBydW5zIHRocm91Z2guIFRoZSBwbHVnaW4gaW5zdGFsbHMgaXRzIG93biBgZXhlY3V0ZSgpYCB0aGVyZSBhdCBzZXR1cCwgd2hpY2hcbiAqIGlzIGhvdyB0aGUgdG9vbHMgLSBwbGFpbiBmdW5jdGlvbnMgd2l0aCBubyBwbHVnaW4gaW5zdGFuY2UgaW4gc2NvcGUgLSBzdGlsbFxuICogZ2V0IEFwcEtpdCdzIGNhY2hlIC8gcmV0cnkgLyB0aW1lb3V0IC8gdGVsZW1ldHJ5IGNoYWluLiBXaXRob3V0IGFcbiAqIHJlZ2lzdGVyZWQgcGx1Z2luIChhIGRpcmVjdCBjYWxsIGZyb20gYSBzY3JpcHQgb3IgYSB0ZXN0KSB0aGUgY2FsbHMgc3RpbGxcbiAqIHJ1biwganVzdCB3aXRob3V0IGludGVyY2VwdG9ycy5cbiAqXG4gKiBVbmxpa2UgdGhlIGVtYWlsIHJ1bnRpbWUgdGhlcmUgaXMgbm8gY29ubmVjdGlvbiB0byBwb29sIC0gdGhlIGJhY2tlbmQgaXNcbiAqIHN0YXRlbGVzcyBIVFRQIHBlciBjYWxsIC0gc28gdGhlIHJ1bnRpbWUgaG9sZHMgb25seSB0aGUgcmVzb2x2ZWQgY29uZmlnIGFuZFxuICogdGhhdCBleGVjdXRvci5cbiAqXG4gKiBAbW9kdWxlXG4gKi9cblxuaW1wb3J0IHsgQXBwS2l0RXJyb3IsIEV4ZWN1dGlvbkVycm9yLCB0eXBlIEV4ZWN1dGlvblJlc3VsdCB9IGZyb20gXCJAZGF0YWJyaWNrcy9hcHBraXRcIjtcbmltcG9ydCB7IGFzeW5jLCBlcnJvciwgbG9nIH0gZnJvbSBcIkBkYngtdG9vbHMvc2hhcmVkLWNvcmVcIjtcbmltcG9ydCB7XG4gIHJlc29sdmVXZWJTZWFyY2hDb25maWcsXG4gIHR5cGUgUmVzb2x2ZWRXZWJTZWFyY2hDb25maWcsXG4gIHR5cGUgV2ViU2VhcmNoUGx1Z2luQ29uZmlnLFxufSBmcm9tIFwiLi9jb25maWdcIjtcbmltcG9ydCB0eXBlIHsgV2ViU2VhcmNoRXhlY3V0aW9uU2V0dGluZ3MgfSBmcm9tIFwiLi9kZWZhdWx0c1wiO1xuXG5jb25zdCBsb2dnZXIgPSBsb2cubG9nZ2VyKFwid2ViLXNlYXJjaC9ydW50aW1lXCIpO1xuXG4vKipcbiAqIFJ1bnMgb25lIG91dGJvdW5kIGNhbGwgdGhyb3VnaCBBcHBLaXQncyBpbnRlcmNlcHRvciBjaGFpbi4gTWF0Y2hlc1xuICogYFBsdWdpbi5leGVjdXRlKClgLCB3aGljaCBuZXZlciB0aHJvd3M6IGEgZmFpbHVyZSBjb21lcyBiYWNrIGFzXG4gKiBgeyBvazogZmFsc2UgfWAuXG4gKi9cbmV4cG9ydCB0eXBlIFdlYlNlYXJjaEV4ZWN1dG9yID0gPFQ+KFxuICBmbjogKHNpZ25hbD86IEFib3J0U2lnbmFsKSA9PiBQcm9taXNlPFQ+LFxuICBzZXR0aW5nczogV2ViU2VhcmNoRXhlY3V0aW9uU2V0dGluZ3MsXG4pID0+IFByb21pc2U8RXhlY3V0aW9uUmVzdWx0PFQ+PjtcblxuLyoqIFRoZSBzaGFyZWQgcmVzb2x2ZWQgY29uZmlnIHBsdXMgdGhlIGV4ZWN1dG9yIG91dGJvdW5kIGNhbGxzIHJ1biB0aHJvdWdoLiAqL1xuZXhwb3J0IGludGVyZmFjZSBXZWJTZWFyY2hSdW50aW1lIHtcbiAgY29uZmlnOiBSZXNvbHZlZFdlYlNlYXJjaENvbmZpZztcbiAgZXhlY3V0ZTogV2ViU2VhcmNoRXhlY3V0b3I7XG59XG5cbi8qKlxuICogRXhlY3V0b3IgdXNlZCB1bnRpbCAob3IgdW5sZXNzKSB0aGUgcGx1Z2luIGluc3RhbGxzIGl0cyBvd246IHJ1biB0aGUgY2FsbFxuICogZGlyZWN0bHksIG1hcHBpbmcgYSB0aHJvdyBvbnRvIHRoZSBzYW1lIHtAbGluayBFeGVjdXRpb25SZXN1bHR9IHNoYXBlIHNvXG4gKiBjYWxsIHNpdGVzIGJyYW5jaCBvbiBgb2tgIGVpdGhlciB3YXkuXG4gKi9cbmNvbnN0IGRpcmVjdEV4ZWN1dGU6IFdlYlNlYXJjaEV4ZWN1dG9yID0gYXN5bmMgKGZuKSA9PiB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHsgb2s6IHRydWUsIGRhdGE6IGF3YWl0IGZuKCkgfTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG9rOiBmYWxzZSxcbiAgICAgIHN0YXR1czogZXJyIGluc3RhbmNlb2YgQXBwS2l0RXJyb3IgPyBlcnIuc3RhdHVzQ29kZSA6IDUwMCxcbiAgICAgIG1lc3NhZ2U6IGVycm9yLmVycm9yTWVzc2FnZShlcnIpLFxuICAgIH07XG4gIH1cbn07XG5cbmxldCBydW50aW1lOiBXZWJTZWFyY2hSdW50aW1lIHwgdW5kZWZpbmVkO1xuXG4vKipcbiAqIFJldHVybiB0aGUgc2hhcmVkIHJ1bnRpbWUsIGJ1aWxkaW5nIGl0IG9uIGZpcnN0IHVzZSBmcm9tIHRoZSBzdXBwbGllZFxuICogY29uZmlnIGxheWVyZWQgb3ZlciBlbnZpcm9ubWVudCBkZWZhdWx0cy4gT3ZlcnJpZGVzIGFyZSBvbmx5IHJlYWQgd2hlbiB0aGVcbiAqIHJ1bnRpbWUgaXMgZmlyc3QgY3JlYXRlZCwgc28gcHJpbWUgaXQgZnJvbSB0aGUgcGx1Z2luJ3MgY29uZmlnIGF0IHNldHVwO1xuICogc3Vic2VxdWVudCBjYWxscyAodGhlIHRvb2xzJyBgZXhlY3V0ZWApIHBhc3Mgbm90aGluZyBhbmQgZ2V0IHRoZSBzYW1lXG4gKiBpbnN0YW5jZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFdlYlNlYXJjaFJ1bnRpbWUob3ZlcnJpZGVzPzogV2ViU2VhcmNoUGx1Z2luQ29uZmlnKTogV2ViU2VhcmNoUnVudGltZSB7XG4gIGlmICghcnVudGltZSkge1xuICAgIHJ1bnRpbWUgPSB7IGNvbmZpZzogcmVzb2x2ZVdlYlNlYXJjaENvbmZpZyhvdmVycmlkZXMpLCBleGVjdXRlOiBkaXJlY3RFeGVjdXRlIH07XG4gIH1cbiAgcmV0dXJuIHJ1bnRpbWU7XG59XG5cbi8qKlxuICogSW5zdGFsbCB0aGUgZXhlY3V0b3Igb3V0Ym91bmQgY2FsbHMgcnVuIHRocm91Z2guIFRoZSBwbHVnaW4gY2FsbHMgdGhpcyBhdFxuICogc2V0dXAgd2l0aCBpdHMgb3duIGBleGVjdXRlKClgOyBhIHNlY29uZCBjYWxsIHJlcGxhY2VzIHRoZSBwcmV2aW91cyBvbmUsIHNvXG4gKiBhIHJlLXJlZ2lzdGVyZWQgcGx1Z2luIGRvZXMgbm90IGxlYXZlIHRoZSB0b29scyBib3VuZCB0byBhIGRlYWQgaW5zdGFuY2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXRXZWJTZWFyY2hFeGVjdXRvcihleGVjdXRlOiBXZWJTZWFyY2hFeGVjdXRvcik6IHZvaWQge1xuICBnZXRXZWJTZWFyY2hSdW50aW1lKCkuZXhlY3V0ZSA9IGV4ZWN1dGU7XG59XG5cbi8qKiBEcm9wIHRoZSBtZW1vaXplZCBydW50aW1lIHNvIHRoZSBuZXh0IHtAbGluayBnZXRXZWJTZWFyY2hSdW50aW1lfSByZWJ1aWxkcyBpdC4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNldFdlYlNlYXJjaFJ1bnRpbWUoKTogdm9pZCB7XG4gIHJ1bnRpbWUgPSB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogUnVuIG9uZSBpZGVtcG90ZW50IHJlYWQgdGhyb3VnaCB0aGUgc2hhcmVkIGV4ZWN1dG9yIGFuZCB1bndyYXAgaXQuXG4gKlxuICogYGV4ZWN1dGUoKWAgbmV2ZXIgdGhyb3dzLCBzbyBhIGZhaWxlZCBjYWxsIGFycml2ZXMgYXMgYHsgb2s6IGZhbHNlIH1gIHdpdGhcbiAqIGEgc3RhdHVzIHRoZSBpbnRlcmNlcHRvcnMgYWxyZWFkeSBzYW5pdGl6ZWQ7IGl0IGlzIGxvZ2dlZCBoZXJlIGFuZCByZS1yYWlzZWRcbiAqIGFzIGEgc3RhYmxlIHtAbGluayBFeGVjdXRpb25FcnJvcn0gc28gYW4gdXBzdHJlYW0gbWVzc2FnZSBuZXZlciBiZWNvbWVzIHRoZVxuICogY2FsbGVyJ3MgZXJyb3IgdGV4dC4gYHNpZ25hbGAgaXMgdGhlIGNhbGxlcidzIG93biBjYW5jZWxsYXRpb24gKGFuIGFnZW50XG4gKiBydW4sIGEgcmVxdWVzdCB0ZWFyZG93bik7IGl0IGlzIG1lcmdlZCB3aXRoIHRoZSBzaWduYWwgdGhlIHRpbWVvdXRcbiAqIGludGVyY2VwdG9yIHN1cHBsaWVzIHNvIGVpdGhlciBvbmUgdW53aW5kcyB0aGUgSS9PLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZXhlY3V0ZVJlYWQ8VD4oXG4gIG9wZXJhdGlvbjogc3RyaW5nLFxuICBzZXR0aW5nczogV2ViU2VhcmNoRXhlY3V0aW9uU2V0dGluZ3MsXG4gIGZuOiAoc2lnbmFsPzogQWJvcnRTaWduYWwpID0+IFByb21pc2U8VD4sXG4gIHNpZ25hbD86IEFib3J0U2lnbmFsLFxuKTogUHJvbWlzZTxUPiB7XG4gIGNvbnN0IHsgZXhlY3V0ZSB9ID0gZ2V0V2ViU2VhcmNoUnVudGltZSgpO1xuICBjb25zdCByZXN1bHQgPSBhd2FpdCBleGVjdXRlKFxuICAgIChleGVjdXRlU2lnbmFsKSA9PiBmbihhc3luYy5jb21iaW5lQWJvcnRTaWduYWxzKGV4ZWN1dGVTaWduYWwsIHNpZ25hbCkpLFxuICAgIHNldHRpbmdzLFxuICApO1xuICBpZiAocmVzdWx0Lm9rKSByZXR1cm4gcmVzdWx0LmRhdGE7XG4gIC8vIEEgY2FsbGVyIHRoYXQgY2FuY2VsbGVkIGlzIG5vdCBhIGZhaWx1cmUgd29ydGggcmVwb3J0aW5nIGFzIG9uZS5cbiAgaWYgKHNpZ25hbD8uYWJvcnRlZCkgdGhyb3cgRXhlY3V0aW9uRXJyb3IuY2FuY2VsZWQoKTtcbiAgbG9nZ2VyLndhcm4oXCJleGVjdXRpb24tZmFpbGVkXCIsIHtcbiAgICBvcGVyYXRpb24sXG4gICAgc3RhdHVzOiByZXN1bHQuc3RhdHVzLFxuICAgIGVycm9yOiByZXN1bHQubWVzc2FnZSxcbiAgfSk7XG4gIHRocm93IG5ldyBFeGVjdXRpb25FcnJvcihgd2ViLXNlYXJjaDogJHtvcGVyYXRpb259IGZhaWxlZGAsIHtcbiAgICBjb250ZXh0OiB7IG9wZXJhdGlvbiwgc3RhdHVzOiByZXN1bHQuc3RhdHVzIH0sXG4gIH0pO1xufVxuIl19
95
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVudGltZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ydW50aW1lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBbUJHO0FBRUgsT0FBTyxFQUFFLFdBQVcsRUFBRSxjQUFjLEVBQXdCLE1BQU0sb0JBQW9CLENBQUM7QUFDdkYsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDM0QsT0FBTyxFQUNMLHNCQUFzQixHQUd2QixNQUFNLGFBQWEsQ0FBQztBQUdyQixNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUM7QUFrQmhEOzs7O0dBSUc7QUFDSCxNQUFNLGFBQWEsR0FBc0IsS0FBSyxFQUFFLEVBQUUsRUFBRSxFQUFFO0lBQ3BELElBQUksQ0FBQztRQUNILE9BQU8sRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDeEMsQ0FBQztJQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDYixPQUFPO1lBQ0wsRUFBRSxFQUFFLEtBQUs7WUFDVCxNQUFNLEVBQUUsR0FBRyxZQUFZLFdBQVcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRztZQUN6RCxPQUFPLEVBQUUsS0FBSyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUM7U0FDakMsQ0FBQztJQUNKLENBQUM7QUFDSCxDQUFDLENBQUM7QUFFRixJQUFJLE9BQXFDLENBQUM7QUFFMUM7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLG1CQUFtQixDQUFDLFNBQWlDO0lBQ25FLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNiLE9BQU8sR0FBRyxFQUFFLE1BQU0sRUFBRSxzQkFBc0IsQ0FBQyxTQUFTLENBQUMsRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLENBQUM7SUFDbEYsQ0FBQztJQUNELE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLG9CQUFvQixDQUFDLE9BQTBCO0lBQzdELG1CQUFtQixFQUFFLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztBQUMxQyxDQUFDO0FBRUQscUZBQXFGO0FBQ3JGLE1BQU0sVUFBVSxxQkFBcUI7SUFDbkMsT0FBTyxHQUFHLFNBQVMsQ0FBQztBQUN0QixDQUFDO0FBRUQ7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxXQUFXLENBQy9CLFNBQWlCLEVBQ2pCLFFBQW9DLEVBQ3BDLEVBQXdDLEVBQ3hDLE1BQW9CO0lBRXBCLE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxtQkFBbUIsRUFBRSxDQUFDO0lBQzFDLE1BQU0sTUFBTSxHQUFHLE1BQU0sT0FBTyxDQUMxQixDQUFDLGFBQWEsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxhQUFhLEVBQUUsTUFBTSxDQUFDLENBQUMsRUFDdkUsUUFBUSxDQUNULENBQUM7SUFDRixJQUFJLE1BQU0sQ0FBQyxFQUFFO1FBQUUsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDO0lBQ2xDLG1FQUFtRTtJQUNuRSxJQUFJLE1BQU0sRUFBRSxPQUFPO1FBQUUsTUFBTSxjQUFjLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDckQsTUFBTSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRTtRQUM5QixTQUFTO1FBQ1QsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNO1FBQ3JCLEtBQUssRUFBRSxNQUFNLENBQUMsT0FBTztLQUN0QixDQUFDLENBQUM7SUFDSCxNQUFNLElBQUksY0FBYyxDQUFDLGVBQWUsU0FBUyxTQUFTLEVBQUU7UUFDMUQsT0FBTyxFQUFFLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsTUFBTSxFQUFFO0tBQzlDLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFRoZSB3ZWItc2VhcmNoIHJ1bnRpbWU6IGEgbGF6aWx5LXJlc29sdmVkLCBwcm9jZXNzLXdpZGUgY29uZmlnIHNoYXJlZCBieVxuICogdGhlIHBsdWdpbiBhbmQgdGhlIGB3ZWJfc2VhcmNoYCAvIGB3ZWJfZmV0Y2hgIHRvb2xzLCBzbyBib3RoIHJlYWQgb25lXG4gKiByZXNvbHZlZCBhbGxvdy1saXN0IC8gY2FwIC8gdGltZW91dCBzZXQuIFRoZSBmaXJzdCBjYWxsZXIgKG5vcm1hbGx5IHRoZVxuICogcGx1Z2luIGF0IHNldHVwKSBwcmltZXMgaXQgZnJvbSB0aGUgcGx1Z2luJ3MgY29uZmlnOyBsYXRlciBjYWxsZXJzICh0aGVcbiAqIHRvb2xzJyBgZXhlY3V0ZWApIHJldXNlIGl0LlxuICpcbiAqIFRoZSBydW50aW1lIGFsc28gY2FycmllcyB0aGUge0BsaW5rIFdlYlNlYXJjaEV4ZWN1dG9yfSBldmVyeSBvdXRib3VuZCBjYWxsXG4gKiBydW5zIHRocm91Z2guIFRoZSBwbHVnaW4gaW5zdGFsbHMgaXRzIG93biBgZXhlY3V0ZSgpYCB0aGVyZSBhdCBzZXR1cCwgd2hpY2hcbiAqIGlzIGhvdyB0aGUgdG9vbHMgLSBwbGFpbiBmdW5jdGlvbnMgd2l0aCBubyBwbHVnaW4gaW5zdGFuY2UgaW4gc2NvcGUgLSBzdGlsbFxuICogZ2V0IEFwcEtpdCdzIGNhY2hlIC8gcmV0cnkgLyB0aW1lb3V0IC8gdGVsZW1ldHJ5IGNoYWluLiBXaXRob3V0IGFcbiAqIHJlZ2lzdGVyZWQgcGx1Z2luIChhIGRpcmVjdCBjYWxsIGZyb20gYSBzY3JpcHQgb3IgYSB0ZXN0KSB0aGUgY2FsbHMgc3RpbGxcbiAqIHJ1biwganVzdCB3aXRob3V0IGludGVyY2VwdG9ycy5cbiAqXG4gKiBVbmxpa2UgdGhlIGVtYWlsIHJ1bnRpbWUgdGhlcmUgaXMgbm8gY29ubmVjdGlvbiB0byBwb29sIC0gdGhlIGJhY2tlbmQgaXNcbiAqIHN0YXRlbGVzcyBIVFRQIHBlciBjYWxsIC0gc28gdGhlIHJ1bnRpbWUgaG9sZHMgb25seSB0aGUgcmVzb2x2ZWQgY29uZmlnIGFuZFxuICogdGhhdCBleGVjdXRvci5cbiAqXG4gKiBAbW9kdWxlXG4gKi9cblxuaW1wb3J0IHsgQXBwS2l0RXJyb3IsIEV4ZWN1dGlvbkVycm9yLCB0eXBlIEV4ZWN1dGlvblJlc3VsdCB9IGZyb20gXCJAZGF0YWJyaWNrcy9hcHBraXRcIjtcbmltcG9ydCB7IGFzeW5jLCBlcnJvciwgbG9nIH0gZnJvbSBcIkBkYngtdG9vbHMvc2hhcmVkLWNvcmVcIjtcbmltcG9ydCB7XG4gIHJlc29sdmVXZWJTZWFyY2hDb25maWcsXG4gIHR5cGUgUmVzb2x2ZWRXZWJTZWFyY2hDb25maWcsXG4gIHR5cGUgV2ViU2VhcmNoUGx1Z2luQ29uZmlnLFxufSBmcm9tIFwiLi9jb25maWcudHNcIjtcbmltcG9ydCB0eXBlIHsgV2ViU2VhcmNoRXhlY3V0aW9uU2V0dGluZ3MgfSBmcm9tIFwiLi9kZWZhdWx0cy50c1wiO1xuXG5jb25zdCBsb2dnZXIgPSBsb2cubG9nZ2VyKFwid2ViLXNlYXJjaC9ydW50aW1lXCIpO1xuXG4vKipcbiAqIFJ1bnMgb25lIG91dGJvdW5kIGNhbGwgdGhyb3VnaCBBcHBLaXQncyBpbnRlcmNlcHRvciBjaGFpbi4gTWF0Y2hlc1xuICogYFBsdWdpbi5leGVjdXRlKClgLCB3aGljaCBuZXZlciB0aHJvd3M6IGEgZmFpbHVyZSBjb21lcyBiYWNrIGFzXG4gKiBgeyBvazogZmFsc2UgfWAuXG4gKi9cbmV4cG9ydCB0eXBlIFdlYlNlYXJjaEV4ZWN1dG9yID0gPFQ+KFxuICBmbjogKHNpZ25hbD86IEFib3J0U2lnbmFsKSA9PiBQcm9taXNlPFQ+LFxuICBzZXR0aW5nczogV2ViU2VhcmNoRXhlY3V0aW9uU2V0dGluZ3MsXG4pID0+IFByb21pc2U8RXhlY3V0aW9uUmVzdWx0PFQ+PjtcblxuLyoqIFRoZSBzaGFyZWQgcmVzb2x2ZWQgY29uZmlnIHBsdXMgdGhlIGV4ZWN1dG9yIG91dGJvdW5kIGNhbGxzIHJ1biB0aHJvdWdoLiAqL1xuZXhwb3J0IGludGVyZmFjZSBXZWJTZWFyY2hSdW50aW1lIHtcbiAgY29uZmlnOiBSZXNvbHZlZFdlYlNlYXJjaENvbmZpZztcbiAgZXhlY3V0ZTogV2ViU2VhcmNoRXhlY3V0b3I7XG59XG5cbi8qKlxuICogRXhlY3V0b3IgdXNlZCB1bnRpbCAob3IgdW5sZXNzKSB0aGUgcGx1Z2luIGluc3RhbGxzIGl0cyBvd246IHJ1biB0aGUgY2FsbFxuICogZGlyZWN0bHksIG1hcHBpbmcgYSB0aHJvdyBvbnRvIHRoZSBzYW1lIHtAbGluayBFeGVjdXRpb25SZXN1bHR9IHNoYXBlIHNvXG4gKiBjYWxsIHNpdGVzIGJyYW5jaCBvbiBgb2tgIGVpdGhlciB3YXkuXG4gKi9cbmNvbnN0IGRpcmVjdEV4ZWN1dGU6IFdlYlNlYXJjaEV4ZWN1dG9yID0gYXN5bmMgKGZuKSA9PiB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHsgb2s6IHRydWUsIGRhdGE6IGF3YWl0IGZuKCkgfTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG9rOiBmYWxzZSxcbiAgICAgIHN0YXR1czogZXJyIGluc3RhbmNlb2YgQXBwS2l0RXJyb3IgPyBlcnIuc3RhdHVzQ29kZSA6IDUwMCxcbiAgICAgIG1lc3NhZ2U6IGVycm9yLmVycm9yTWVzc2FnZShlcnIpLFxuICAgIH07XG4gIH1cbn07XG5cbmxldCBydW50aW1lOiBXZWJTZWFyY2hSdW50aW1lIHwgdW5kZWZpbmVkO1xuXG4vKipcbiAqIFJldHVybiB0aGUgc2hhcmVkIHJ1bnRpbWUsIGJ1aWxkaW5nIGl0IG9uIGZpcnN0IHVzZSBmcm9tIHRoZSBzdXBwbGllZFxuICogY29uZmlnIGxheWVyZWQgb3ZlciBlbnZpcm9ubWVudCBkZWZhdWx0cy4gT3ZlcnJpZGVzIGFyZSBvbmx5IHJlYWQgd2hlbiB0aGVcbiAqIHJ1bnRpbWUgaXMgZmlyc3QgY3JlYXRlZCwgc28gcHJpbWUgaXQgZnJvbSB0aGUgcGx1Z2luJ3MgY29uZmlnIGF0IHNldHVwO1xuICogc3Vic2VxdWVudCBjYWxscyAodGhlIHRvb2xzJyBgZXhlY3V0ZWApIHBhc3Mgbm90aGluZyBhbmQgZ2V0IHRoZSBzYW1lXG4gKiBpbnN0YW5jZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFdlYlNlYXJjaFJ1bnRpbWUob3ZlcnJpZGVzPzogV2ViU2VhcmNoUGx1Z2luQ29uZmlnKTogV2ViU2VhcmNoUnVudGltZSB7XG4gIGlmICghcnVudGltZSkge1xuICAgIHJ1bnRpbWUgPSB7IGNvbmZpZzogcmVzb2x2ZVdlYlNlYXJjaENvbmZpZyhvdmVycmlkZXMpLCBleGVjdXRlOiBkaXJlY3RFeGVjdXRlIH07XG4gIH1cbiAgcmV0dXJuIHJ1bnRpbWU7XG59XG5cbi8qKlxuICogSW5zdGFsbCB0aGUgZXhlY3V0b3Igb3V0Ym91bmQgY2FsbHMgcnVuIHRocm91Z2guIFRoZSBwbHVnaW4gY2FsbHMgdGhpcyBhdFxuICogc2V0dXAgd2l0aCBpdHMgb3duIGBleGVjdXRlKClgOyBhIHNlY29uZCBjYWxsIHJlcGxhY2VzIHRoZSBwcmV2aW91cyBvbmUsIHNvXG4gKiBhIHJlLXJlZ2lzdGVyZWQgcGx1Z2luIGRvZXMgbm90IGxlYXZlIHRoZSB0b29scyBib3VuZCB0byBhIGRlYWQgaW5zdGFuY2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXRXZWJTZWFyY2hFeGVjdXRvcihleGVjdXRlOiBXZWJTZWFyY2hFeGVjdXRvcik6IHZvaWQge1xuICBnZXRXZWJTZWFyY2hSdW50aW1lKCkuZXhlY3V0ZSA9IGV4ZWN1dGU7XG59XG5cbi8qKiBEcm9wIHRoZSBtZW1vaXplZCBydW50aW1lIHNvIHRoZSBuZXh0IHtAbGluayBnZXRXZWJTZWFyY2hSdW50aW1lfSByZWJ1aWxkcyBpdC4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNldFdlYlNlYXJjaFJ1bnRpbWUoKTogdm9pZCB7XG4gIHJ1bnRpbWUgPSB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogUnVuIG9uZSBpZGVtcG90ZW50IHJlYWQgdGhyb3VnaCB0aGUgc2hhcmVkIGV4ZWN1dG9yIGFuZCB1bndyYXAgaXQuXG4gKlxuICogYGV4ZWN1dGUoKWAgbmV2ZXIgdGhyb3dzLCBzbyBhIGZhaWxlZCBjYWxsIGFycml2ZXMgYXMgYHsgb2s6IGZhbHNlIH1gIHdpdGhcbiAqIGEgc3RhdHVzIHRoZSBpbnRlcmNlcHRvcnMgYWxyZWFkeSBzYW5pdGl6ZWQ7IGl0IGlzIGxvZ2dlZCBoZXJlIGFuZCByZS1yYWlzZWRcbiAqIGFzIGEgc3RhYmxlIHtAbGluayBFeGVjdXRpb25FcnJvcn0gc28gYW4gdXBzdHJlYW0gbWVzc2FnZSBuZXZlciBiZWNvbWVzIHRoZVxuICogY2FsbGVyJ3MgZXJyb3IgdGV4dC4gYHNpZ25hbGAgaXMgdGhlIGNhbGxlcidzIG93biBjYW5jZWxsYXRpb24gKGFuIGFnZW50XG4gKiBydW4sIGEgcmVxdWVzdCB0ZWFyZG93bik7IGl0IGlzIG1lcmdlZCB3aXRoIHRoZSBzaWduYWwgdGhlIHRpbWVvdXRcbiAqIGludGVyY2VwdG9yIHN1cHBsaWVzIHNvIGVpdGhlciBvbmUgdW53aW5kcyB0aGUgSS9PLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZXhlY3V0ZVJlYWQ8VD4oXG4gIG9wZXJhdGlvbjogc3RyaW5nLFxuICBzZXR0aW5nczogV2ViU2VhcmNoRXhlY3V0aW9uU2V0dGluZ3MsXG4gIGZuOiAoc2lnbmFsPzogQWJvcnRTaWduYWwpID0+IFByb21pc2U8VD4sXG4gIHNpZ25hbD86IEFib3J0U2lnbmFsLFxuKTogUHJvbWlzZTxUPiB7XG4gIGNvbnN0IHsgZXhlY3V0ZSB9ID0gZ2V0V2ViU2VhcmNoUnVudGltZSgpO1xuICBjb25zdCByZXN1bHQgPSBhd2FpdCBleGVjdXRlKFxuICAgIChleGVjdXRlU2lnbmFsKSA9PiBmbihhc3luYy5jb21iaW5lQWJvcnRTaWduYWxzKGV4ZWN1dGVTaWduYWwsIHNpZ25hbCkpLFxuICAgIHNldHRpbmdzLFxuICApO1xuICBpZiAocmVzdWx0Lm9rKSByZXR1cm4gcmVzdWx0LmRhdGE7XG4gIC8vIEEgY2FsbGVyIHRoYXQgY2FuY2VsbGVkIGlzIG5vdCBhIGZhaWx1cmUgd29ydGggcmVwb3J0aW5nIGFzIG9uZS5cbiAgaWYgKHNpZ25hbD8uYWJvcnRlZCkgdGhyb3cgRXhlY3V0aW9uRXJyb3IuY2FuY2VsZWQoKTtcbiAgbG9nZ2VyLndhcm4oXCJleGVjdXRpb24tZmFpbGVkXCIsIHtcbiAgICBvcGVyYXRpb24sXG4gICAgc3RhdHVzOiByZXN1bHQuc3RhdHVzLFxuICAgIGVycm9yOiByZXN1bHQubWVzc2FnZSxcbiAgfSk7XG4gIHRocm93IG5ldyBFeGVjdXRpb25FcnJvcihgd2ViLXNlYXJjaDogJHtvcGVyYXRpb259IGZhaWxlZGAsIHtcbiAgICBjb250ZXh0OiB7IG9wZXJhdGlvbiwgc3RhdHVzOiByZXN1bHQuc3RhdHVzIH0sXG4gIH0pO1xufVxuIl19
@@ -17,8 +17,8 @@
17
17
  *
18
18
  * @module
19
19
  */
20
- import type { ResolvedWebSearchConfig } from "./config.js";
21
- import type { WebSearchRequest, WebSearchResult } from "./schema.js";
20
+ import type { ResolvedWebSearchConfig } from "./config.ts";
21
+ import type { WebSearchRequest, WebSearchResult } from "./schema.ts";
22
22
  /**
23
23
  * Run a scraping search over DuckDuckGo. Returns the same
24
24
  * {@link WebSearchResult} shape as the native path, with `model` set to
package/lib/src/scrape.js CHANGED
@@ -110,4 +110,4 @@ export async function runScrapeSearch(request, config, signal) {
110
110
  });
111
111
  return { query: request.query, answer, citations, model: "scrape:duckduckgo" };
112
112
  }
113
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NyYXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmFwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBa0JHO0FBRUgsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzdDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFM0MsT0FBTyxFQUFFLDJCQUEyQixFQUFFLGNBQWMsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUN6RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDakQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUd4QyxNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7QUFFL0Msa0VBQWtFO0FBQ2xFLE1BQU0sWUFBWSxHQUFHLG1DQUFtQyxDQUFDO0FBRXpEOzs7R0FHRztBQUNILFNBQVMsWUFBWSxDQUFDLElBQVk7SUFDaEMsSUFBSSxDQUFDO1FBQ0gsTUFBTSxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxFQUFFLHdCQUF3QixDQUFDLENBQUM7UUFDbEQsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDMUMsSUFBSSxNQUFNO1lBQUUsT0FBTyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM5QyxPQUFPLENBQUMsQ0FBQyxRQUFRLEtBQUssT0FBTyxJQUFJLENBQUMsQ0FBQyxRQUFRLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNqRixDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0FBQ0gsQ0FBQztBQUVELHlFQUF5RTtBQUN6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cGluZyBmYWxsYmFjayBmb3IgYHdlYl9zZWFyY2hgLCB1c2VkIE9OTFkgd2hlbiB0aGVcbiAqIHdvcmtzcGFjZSBoYXMgbm8gRGF0YWJyaWNrcyB3ZWItc2VhcmNoLWNhcGFibGUgbW9kZWwgZGVwbG95ZWQgKG5vIEdQVCAvXG4gKiBHZW1pbmkgc2VydmluZyBlbmRwb2ludCkuIFRoZSBuYXRpdmUgRGF0YWJyaWNrcyB3ZWItc2VhcmNoIHRvb2wgaXMgYWx3YXlzXG4gKiBwcmVmZXJyZWQgKHNlZSBgc2VhcmNoLnRzYCk7IHRoaXMgZXhpc3RzIHNvIHRoZSB0b29sIHN0aWxsIHJldHVybnMgdXNlZnVsXG4gKiByZXN1bHRzIGluIGFuIGVudmlyb25tZW50IHRoYXQgY2FuJ3QgcnVuIGl0LCByYXRoZXIgdGhhbiBlcnJvcmluZyBvbiBldmVyeVxuICogY2FsbC5cbiAqXG4gKiBJdCBxdWVyaWVzIER1Y2tEdWNrR28ncyBuby1KUyBIVE1MIGVuZHBvaW50IHRocm91Z2ggYGdvdC1zY3JhcGluZ2BcbiAqIChicm93c2VyLWxpa2UgZmluZ2VycHJpbnRzIHNvIHRoZSByZXF1ZXN0IGlzbid0IGJsb2NrZWQpIHZpYSBhIEdFVCB3aXRoIHRoZVxuICogcXVlcnkgaW4gdGhlIHF1ZXJ5IHN0cmluZyAtIGEgUE9TVCB0byB0aGUgc2FtZSBlbmRwb2ludCB0cmlwcyBEREcncyBib3RcbiAqIGNoYWxsZW5nZSAoSFRUUCAyMDIpLCB3aGlsZSB0aGUgR0VUIHJldHVybnMgbm9ybWFsIHJlc3VsdCBtYXJrdXAuIEl0IHRoZW5cbiAqIHBhcnNlcyB0aGUgcmVzdWx0IGFuY2hvcnMgKyBzbmlwcGV0cy4gVW5saWtlIHRoZSBuYXRpdmUgdG9vbCB0aGVyZSBpcyBub1xuICogbW9kZWwgc3ludGhlc2l6aW5nIGFuIGFuc3dlciwgc28gYGFuc3dlcmAgaXMgYSBzaG9ydCBsZWFkLWluIG92ZXIgdGhlIHRvcFxuICogc25pcHBldHMgYW5kIHRoZSBzdWJzdGFuY2UgcmlkZXMgaW4gYGNpdGF0aW9uc2AgLSB0aGUgY2FsbGluZyBhZ2VudCByZWFkc1xuICogdGhvc2UgYW5kIHdyaXRlcyBpdHMgb3duIGFuc3dlci5cbiAqXG4gKiBAbW9kdWxlXG4gKi9cblxuaW1wb3J0IHsgbG9nIH0gZnJvbSBcIkBkYngtdG9vbHMvc2hhcmVkLWNvcmVcIjtcbmltcG9ydCB7IGdvdFNjcmFwaW5nIH0gZnJvbSBcImdvdC1zY3JhcGluZ1wiO1xuaW1wb3J0IHR5cGUgeyBSZXNvbHZlZFdlYlNlYXJjaENvbmZpZyB9IGZyb20gXCIuL2NvbmZpZ1wiO1xuaW1wb3J0IHsgc2NyYXBlU2VhcmNoRXhlY3V0ZURlZmF1bHRzLCB0b0NhbGxTZXR0aW5ncyB9IGZyb20gXCIuL2RlZmF1bHRzXCI7XG5pbXBvcnQgeyBodG1sRnJhZ21lbnRUb1RleHQgfSBmcm9tIFwiLi9odG1sLXRleHRcIjtcbmltcG9ydCB7IGV4ZWN1dGVSZWFkIH0gZnJvbSBcIi4vcnVudGltZVwiO1xuaW1wb3J0IHR5cGUgeyBXZWJTZWFyY2hDaXRhdGlvbiwgV2ViU2VhcmNoUmVxdWVzdCwgV2ViU2VhcmNoUmVzdWx0IH0gZnJvbSBcIi4vc2NoZW1hXCI7XG5cbmNvbnN0IGxvZ2dlciA9IGxvZy5sb2dnZXIoXCJ3ZWItc2VhcmNoL3NjcmFwZVwiKTtcblxuLyoqIER1Y2tEdWNrR28ncyBuby1KUyBIVE1MIHJlc3VsdHMgZW5kcG9pbnQgKHF1ZXJpZWQgdmlhIEdFVCkuICovXG5jb25zdCBEREdfSFRNTF9VUkwgPSBcImh0dHBzOi8vaHRtbC5kdWNrZHVja2dvLmNvbS9odG1sL1wiO1xuXG4vKipcbiAqIERERyB3cmFwcyByZXN1bHQgVVJMcyBpbiBhIHJlZGlyZWN0IChgLy9kdWNrZHVja2dvLmNvbS9sLz91ZGRnPTxlbmNvZGVkPmApLlxuICogVW53cmFwIHRvIHRoZSByZWFsIGRlc3RpbmF0aW9uOyBsZWF2ZSBhbHJlYWR5LWFic29sdXRlIFVSTHMgdW50b3VjaGVkLlxuICovXG5mdW5jdGlvbiB1bndyYXBEZGdVcmwoaHJlZjogc3RyaW5nKTogc3RyaW5nIHtcbiAgdHJ5IHtcbiAgICBjb25zdCB1ID0gbmV3IFVSTChocmVmLCBcImh0dHBzOi8vZHVja2R1Y2tnby5jb21cIik7XG4gICAgY29uc3QgdGFyZ2V0ID0gdS5zZWFyY2hQYXJhbXMuZ2V0KFwidWRkZ1wiKTtcbiAgICBpZiAodGFyZ2V0KSByZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KHRhcmdldCk7XG4gICAgcmV0dXJuIHUucHJvdG9jb2wgPT09IFwiaHR0cDpcIiB8fCB1LnByb3RvY29sID09PSBcImh0dHBzOlwiID8gdS50b1N0cmluZygpIDogaHJlZjtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIGhyZWY7XG4gIH1cbn1cblxuLyoqIFBhcnNlIERERyBIVE1MIHJlc3VsdCBibG9ja3MgaW50byBjaXRhdGlvbnMgKHRpdGxlLCB1cmwsIHNuaXBwZXQpLiAqL1xuZnVuY3Rpb24gcGFyc2VEZGdIdG1sKGh0bWw6IHN0cmluZyk6IFdlYlNlYXJjaENpdGF0aW9uW10ge1xuICBjb25zdCBjaXRhdGlvbnM6IFdlYlNlYXJjaENpdGF0aW9uW10gPSBbXTtcbiAgLy8gRWFjaCByZXN1bHQ6IGFuIGFuY2hvciB3aXRoIGNsYXNzIHJlc3VsdF9fYSAodGl0bGUgKyBocmVmKSBhbmQgYSBzbmlwcGV0XG4gIC8vIHdpdGggY2xhc3MgcmVzdWx0X19zbmlwcGV0LiBNYXRjaCBhbmNob3JzLCB0aGVuIHRoZSBmb2xsb3dpbmcgc25pcHBldC5cbiAgY29uc3QgYW5jaG9yUmUgPSAvPGFbXj5dKmNsYXNzPVwiW15cIl0qcmVzdWx0X19hW15cIl0qXCJbXj5dKmhyZWY9XCIoW15cIl0rKVwiW14+XSo+KFtcXHNcXFNdKj8pPFxcL2E+L2c7XG4gIGNvbnN0IHNuaXBwZXRSZSA9IC88YVtePl0qY2xhc3M9XCJbXlwiXSpyZXN1bHRfX3NuaXBwZXRbXlwiXSpcIltePl0qPihbXFxzXFxTXSo/KTxcXC9hPi9nO1xuICBjb25zdCBzbmlwcGV0czogc3RyaW5nW10gPSBbXTtcbiAgbGV0IHNtOiBSZWdFeHBFeGVjQXJyYXkgfCBudWxsO1xuICB3aGlsZSAoKHNtID0gc25pcHBldFJlLmV4ZWMoaHRtbCkpICE9PSBudWxsKSBzbmlwcGV0cy5wdXNoKGh0bWxGcmFnbWVudFRvVGV4dChzbVsxXSA/PyBcIlwiKSk7XG4gIGxldCBhbTogUmVnRXhwRXhlY0FycmF5IHwgbnVsbDtcbiAgbGV0IGkgPSAwO1xuICB3aGlsZSAoKGFtID0gYW5jaG9yUmUuZXhlYyhodG1sKSkgIT09IG51bGwpIHtcbiAgICBjb25zdCB1cmwgPSB1bndyYXBEZGdVcmwoYW1bMV0gPz8gXCJcIik7XG4gICAgY29uc3QgdGl0bGUgPSBodG1sRnJhZ21lbnRUb1RleHQoYW1bMl0gPz8gXCJcIik7XG4gICAgaWYgKCF1cmwgfHwgIXRpdGxlKSBjb250aW51ZTtcbiAgICBjb25zdCBzbmlwcGV0ID0gc25pcHBldHNbaV0gPz8gXCJcIjtcbiAgICBjaXRhdGlvbnMucHVzaCh7IHVybCwgdGl0bGUsIC4uLihzbmlwcGV0ID8geyBzbmlwcGV0IH0gOiB7fSkgfSk7XG4gICAgaSArPSAxO1xuICB9XG4gIHJldHVybiBjaXRhdGlvbnM7XG59XG5cbi8qKlxuICogUnVuIGEgc2NyYXBpbmcgc2VhcmNoIG92ZXIgRHVja0R1Y2tHby4gUmV0dXJucyB0aGUgc2FtZVxuICoge0BsaW5rIFdlYlNlYXJjaFJlc3VsdH0gc2hhcGUgYXMgdGhlIG5hdGl2ZSBwYXRoLCB3aXRoIGBtb2RlbGAgc2V0IHRvXG4gKiBgXCJzY3JhcGU6ZHVja2R1Y2tnb1wiYCBzbyBjYWxsZXJzIGNhbiB0ZWxsIGhvdyB0aGUgcmVzdWx0IHdhcyBwcm9kdWNlZC5cbiAqIENpdGF0aW9ucyBhcmUgZmlsdGVyZWQgdGhyb3VnaCB0aGUgY29uZmlndXJlZCBVUkwgYWxsb3ctbGlzdC4gYHNpZ25hbGBcbiAqIGNhbmNlbHMgdGhlIGluLWZsaWdodCByZXF1ZXN0LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcnVuU2NyYXBlU2VhcmNoKFxuICByZXF1ZXN0OiBXZWJTZWFyY2hSZXF1ZXN0LFxuICBjb25maWc6IFJlc29sdmVkV2ViU2VhcmNoQ29uZmlnLFxuICBzaWduYWw/OiBBYm9ydFNpZ25hbCxcbik6IFByb21pc2U8V2ViU2VhcmNoUmVzdWx0PiB7XG4gIGNvbnN0IHBhZ2UgPSBhd2FpdCBleGVjdXRlUmVhZChcbiAgICBcInNjcmFwZS1zZWFyY2hcIixcbiAgICB0b0NhbGxTZXR0aW5ncyhzY3JhcGVTZWFyY2hFeGVjdXRlRGVmYXVsdHMsIGNvbmZpZy50aW1lb3V0TXMsIFtcbiAgICAgIFwid2ViLXNlYXJjaFwiLFxuICAgICAgXCJzY3JhcGVcIixcbiAgICAgIHJlcXVlc3QucXVlcnksXG4gICAgXSksXG4gICAgYXN5bmMgKGV4ZWN1dGVTaWduYWwpOiBQcm9taXNlPHsgYm9keTogc3RyaW5nOyBzdGF0dXNDb2RlOiBudW1iZXIgfT4gPT4ge1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBnb3RTY3JhcGluZyh7XG4gICAgICAgIHVybDogYCR7RERHX0hUTUxfVVJMfT9xPSR7ZW5jb2RlVVJJQ29tcG9uZW50KHJlcXVlc3QucXVlcnkpfWAsXG4gICAgICAgIG1ldGhvZDogXCJHRVRcIixcbiAgICAgICAgLy8gZ290J3Mgb3duIHRpbWVvdXQgYWJvcnRzIHRoZSBzb2NrZXQgYW5kIHJlcG9ydHMgd2hpY2ggcGhhc2UgdGltZWRcbiAgICAgICAgLy8gb3V0OyB0aGUgaW50ZXJjZXB0b3IgdGltZW91dCBib3VuZHMgdGhlIHdob2xlIGF0dGVtcHQgYXJvdW5kIGl0LlxuICAgICAgICB0aW1lb3V0OiB7IHJlcXVlc3Q6IGNvbmZpZy50aW1lb3V0TXMgfSxcbiAgICAgICAgdGhyb3dIdHRwRXJyb3JzOiBmYWxzZSxcbiAgICAgICAgZm9sbG93UmVkaXJlY3Q6IHRydWUsXG4gICAgICAgIC4uLihleGVjdXRlU2lnbmFsID8geyBzaWduYWw6IGV4ZWN1dGVTaWduYWwgfSA6IHt9KSxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgYm9keTogdHlwZW9mIHJlc3BvbnNlLmJvZHkgPT09IFwic3RyaW5nXCIgPyByZXNwb25zZS5ib2R5IDogU3RyaW5nKHJlc3BvbnNlLmJvZHkgPz8gXCJcIiksXG4gICAgICAgIHN0YXR1c0NvZGU6IHJlc3BvbnNlLnN0YXR1c0NvZGUsXG4gICAgICB9O1xuICAgIH0sXG4gICAgc2lnbmFsLFxuICApO1xuICBjb25zdCBhbGwgPSBwYXJzZURkZ0h0bWwocGFnZS5ib2R5KTtcbiAgY29uc3QgcGVybWl0dGVkID0gYWxsLmZpbHRlcigoYykgPT4gY29uZmlnLmFsbG93TGlzdC5hbGxvd3MoYy51cmwpKTtcbiAgY29uc3QgY2l0YXRpb25zID0gcGVybWl0dGVkLnNsaWNlKDAsIGNvbmZpZy5tYXhDaXRhdGlvbnMpO1xuICBjb25zdCBhbnN3ZXIgPVxuICAgIGNpdGF0aW9ucy5sZW5ndGggPiAwXG4gICAgICA/IGBXZWIgcmVzdWx0cyBmb3IgXCIke3JlcXVlc3QucXVlcnl9XCIgKG5vIERhdGFicmlja3Mgd2ViLXNlYXJjaCBtb2RlbCBpcyBkZXBsb3llZCBpbiB0aGlzIHdvcmtzcGFjZSwgc28gdGhlc2UgYXJlIHVuc3ludGhlc2l6ZWQgc2VhcmNoIHJlc3VsdHMgLSByZWFkIHRoZSBjaXRhdGlvbnMpOlxcblxcbmAgK1xuICAgICAgICBjaXRhdGlvbnNcbiAgICAgICAgICAubWFwKChjLCBuKSA9PiBgJHtuICsgMX0uICR7Yy50aXRsZX0ke2Muc25pcHBldCA/IGAgLSAke2Muc25pcHBldH1gIDogXCJcIn0gKCR7Yy51cmx9KWApXG4gICAgICAgICAgLmpvaW4oXCJcXG5cIilcbiAgICAgIDogYE5vIHdlYiByZXN1bHRzIGZvdW5kIGZvciBcIiR7cmVxdWVzdC5xdWVyeX1cIi5gO1xuICBsb2dnZXIuZGVidWcoXCJzY3JhcGVkXCIsIHtcbiAgICBxdWVyeTogcmVxdWVzdC5xdWVyeSxcbiAgICBmb3VuZDogYWxsLmxlbmd0aCxcbiAgICByZXR1cm5lZDogY2l0YXRpb25zLmxlbmd0aCxcbiAgICBzdGF0dXM6IHBhZ2Uuc3RhdHVzQ29kZSxcbiAgfSk7XG4gIHJldHVybiB7IHF1ZXJ5OiByZXF1ZXN0LnF1ZXJ5LCBhbnN3ZXIsIGNpdGF0aW9ucywgbW9kZWw6IFwic2NyYXBlOmR1Y2tkdWNrZ29cIiB9O1xufVxuIl19
113
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NyYXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmFwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBa0JHO0FBRUgsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzdDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFM0MsT0FBTyxFQUFFLDJCQUEyQixFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRzNDLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztBQUUvQyxrRUFBa0U7QUFDbEUsTUFBTSxZQUFZLEdBQUcsbUNBQW1DLENBQUM7QUFFekQ7OztHQUdHO0FBQ0gsU0FBUyxZQUFZLENBQUMsSUFBWTtJQUNoQyxJQUFJLENBQUM7UUFDSCxNQUFNLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLEVBQUUsd0JBQXdCLENBQUMsQ0FBQztRQUNsRCxNQUFNLE1BQU0sR0FBRyxDQUFDLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMxQyxJQUFJLE1BQU07WUFBRSxPQUFPLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzlDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsS0FBSyxPQUFPLElBQUksQ0FBQyxDQUFDLFFBQVEsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ2pGLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7QUFDSCxDQUFDO0FBRUQseUVBQXlFO0FB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cmFwaW5nIGZhbGxiYWNrIGZvciBgd2ViX3NlYXJjaGAsIHVzZWQgT05MWSB3aGVuIHRoZVxuICogd29ya3NwYWNlIGhhcyBubyBEYXRhYnJpY2tzIHdlYi1zZWFyY2gtY2FwYWJsZSBtb2RlbCBkZXBsb3llZCAobm8gR1BUIC9cbiAqIEdlbWluaSBzZXJ2aW5nIGVuZHBvaW50KS4gVGhlIG5hdGl2ZSBEYXRhYnJpY2tzIHdlYi1zZWFyY2ggdG9vbCBpcyBhbHdheXNcbiAqIHByZWZlcnJlZCAoc2VlIGBzZWFyY2gudHNgKTsgdGhpcyBleGlzdHMgc28gdGhlIHRvb2wgc3RpbGwgcmV0dXJucyB1c2VmdWxcbiAqIHJlc3VsdHMgaW4gYW4gZW52aXJvbm1lbnQgdGhhdCBjYW4ndCBydW4gaXQsIHJhdGhlciB0aGFuIGVycm9yaW5nIG9uIGV2ZXJ5XG4gKiBjYWxsLlxuICpcbiAqIEl0IHF1ZXJpZXMgRHVja0R1Y2tHbydzIG5vLUpTIEhUTUwgZW5kcG9pbnQgdGhyb3VnaCBgZ290LXNjcmFwaW5nYFxuICogKGJyb3dzZXItbGlrZSBmaW5nZXJwcmludHMgc28gdGhlIHJlcXVlc3QgaXNuJ3QgYmxvY2tlZCkgdmlhIGEgR0VUIHdpdGggdGhlXG4gKiBxdWVyeSBpbiB0aGUgcXVlcnkgc3RyaW5nIC0gYSBQT1NUIHRvIHRoZSBzYW1lIGVuZHBvaW50IHRyaXBzIERERydzIGJvdFxuICogY2hhbGxlbmdlIChIVFRQIDIwMiksIHdoaWxlIHRoZSBHRVQgcmV0dXJucyBub3JtYWwgcmVzdWx0IG1hcmt1cC4gSXQgdGhlblxuICogcGFyc2VzIHRoZSByZXN1bHQgYW5jaG9ycyArIHNuaXBwZXRzLiBVbmxpa2UgdGhlIG5hdGl2ZSB0b29sIHRoZXJlIGlzIG5vXG4gKiBtb2RlbCBzeW50aGVzaXppbmcgYW4gYW5zd2VyLCBzbyBgYW5zd2VyYCBpcyBhIHNob3J0IGxlYWQtaW4gb3ZlciB0aGUgdG9wXG4gKiBzbmlwcGV0cyBhbmQgdGhlIHN1YnN0YW5jZSByaWRlcyBpbiBgY2l0YXRpb25zYCAtIHRoZSBjYWxsaW5nIGFnZW50IHJlYWRzXG4gKiB0aG9zZSBhbmQgd3JpdGVzIGl0cyBvd24gYW5zd2VyLlxuICpcbiAqIEBtb2R1bGVcbiAqL1xuXG5pbXBvcnQgeyBsb2cgfSBmcm9tIFwiQGRieC10b29scy9zaGFyZWQtY29yZVwiO1xuaW1wb3J0IHsgZ290U2NyYXBpbmcgfSBmcm9tIFwiZ290LXNjcmFwaW5nXCI7XG5pbXBvcnQgdHlwZSB7IFJlc29sdmVkV2ViU2VhcmNoQ29uZmlnIH0gZnJvbSBcIi4vY29uZmlnLnRzXCI7XG5pbXBvcnQgeyBzY3JhcGVTZWFyY2hFeGVjdXRlRGVmYXVsdHMsIHRvQ2FsbFNldHRpbmdzIH0gZnJvbSBcIi4vZGVmYXVsdHMudHNcIjtcbmltcG9ydCB7IGh0bWxGcmFnbWVudFRvVGV4dCB9IGZyb20gXCIuL2h0bWwtdGV4dC50c1wiO1xuaW1wb3J0IHsgZXhlY3V0ZVJlYWQgfSBmcm9tIFwiLi9ydW50aW1lLnRzXCI7XG5pbXBvcnQgdHlwZSB7IFdlYlNlYXJjaENpdGF0aW9uLCBXZWJTZWFyY2hSZXF1ZXN0LCBXZWJTZWFyY2hSZXN1bHQgfSBmcm9tIFwiLi9zY2hlbWEudHNcIjtcblxuY29uc3QgbG9nZ2VyID0gbG9nLmxvZ2dlcihcIndlYi1zZWFyY2gvc2NyYXBlXCIpO1xuXG4vKiogRHVja0R1Y2tHbydzIG5vLUpTIEhUTUwgcmVzdWx0cyBlbmRwb2ludCAocXVlcmllZCB2aWEgR0VUKS4gKi9cbmNvbnN0IERER19IVE1MX1VSTCA9IFwiaHR0cHM6Ly9odG1sLmR1Y2tkdWNrZ28uY29tL2h0bWwvXCI7XG5cbi8qKlxuICogRERHIHdyYXBzIHJlc3VsdCBVUkxzIGluIGEgcmVkaXJlY3QgKGAvL2R1Y2tkdWNrZ28uY29tL2wvP3VkZGc9PGVuY29kZWQ+YCkuXG4gKiBVbndyYXAgdG8gdGhlIHJlYWwgZGVzdGluYXRpb247IGxlYXZlIGFscmVhZHktYWJzb2x1dGUgVVJMcyB1bnRvdWNoZWQuXG4gKi9cbmZ1bmN0aW9uIHVud3JhcERkZ1VybChocmVmOiBzdHJpbmcpOiBzdHJpbmcge1xuICB0cnkge1xuICAgIGNvbnN0IHUgPSBuZXcgVVJMKGhyZWYsIFwiaHR0cHM6Ly9kdWNrZHVja2dvLmNvbVwiKTtcbiAgICBjb25zdCB0YXJnZXQgPSB1LnNlYXJjaFBhcmFtcy5nZXQoXCJ1ZGRnXCIpO1xuICAgIGlmICh0YXJnZXQpIHJldHVybiBkZWNvZGVVUklDb21wb25lbnQodGFyZ2V0KTtcbiAgICByZXR1cm4gdS5wcm90b2NvbCA9PT0gXCJodHRwOlwiIHx8IHUucHJvdG9jb2wgPT09IFwiaHR0cHM6XCIgPyB1LnRvU3RyaW5nKCkgOiBocmVmO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gaHJlZjtcbiAgfVxufVxuXG4vKiogUGFyc2UgRERHIEhUTUwgcmVzdWx0IGJsb2NrcyBpbnRvIGNpdGF0aW9ucyAodGl0bGUsIHVybCwgc25pcHBldCkuICovXG5mdW5jdGlvbiBwYXJzZURkZ0h0bWwoaHRtbDogc3RyaW5nKTogV2ViU2VhcmNoQ2l0YXRpb25bXSB7XG4gIGNvbnN0IGNpdGF0aW9uczogV2ViU2VhcmNoQ2l0YXRpb25bXSA9IFtdO1xuICAvLyBFYWNoIHJlc3VsdDogYW4gYW5jaG9yIHdpdGggY2xhc3MgcmVzdWx0X19hICh0aXRsZSArIGhyZWYpIGFuZCBhIHNuaXBwZXRcbiAgLy8gd2l0aCBjbGFzcyByZXN1bHRfX3NuaXBwZXQuIE1hdGNoIGFuY2hvcnMsIHRoZW4gdGhlIGZvbGxvd2luZyBzbmlwcGV0LlxuICBjb25zdCBhbmNob3JSZSA9IC88YVtePl0qY2xhc3M9XCJbXlwiXSpyZXN1bHRfX2FbXlwiXSpcIltePl0qaHJlZj1cIihbXlwiXSspXCJbXj5dKj4oW1xcc1xcU10qPyk8XFwvYT4vZztcbiAgY29uc3Qgc25pcHBldFJlID0gLzxhW14+XSpjbGFzcz1cIlteXCJdKnJlc3VsdF9fc25pcHBldFteXCJdKlwiW14+XSo+KFtcXHNcXFNdKj8pPFxcL2E+L2c7XG4gIGNvbnN0IHNuaXBwZXRzOiBzdHJpbmdbXSA9IFtdO1xuICBsZXQgc206IFJlZ0V4cEV4ZWNBcnJheSB8IG51bGw7XG4gIHdoaWxlICgoc20gPSBzbmlwcGV0UmUuZXhlYyhodG1sKSkgIT09IG51bGwpIHNuaXBwZXRzLnB1c2goaHRtbEZyYWdtZW50VG9UZXh0KHNtWzFdID8/IFwiXCIpKTtcbiAgbGV0IGFtOiBSZWdFeHBFeGVjQXJyYXkgfCBudWxsO1xuICBsZXQgaSA9IDA7XG4gIHdoaWxlICgoYW0gPSBhbmNob3JSZS5leGVjKGh0bWwpKSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHVybCA9IHVud3JhcERkZ1VybChhbVsxXSA/PyBcIlwiKTtcbiAgICBjb25zdCB0aXRsZSA9IGh0bWxGcmFnbWVudFRvVGV4dChhbVsyXSA/PyBcIlwiKTtcbiAgICBpZiAoIXVybCB8fCAhdGl0bGUpIGNvbnRpbnVlO1xuICAgIGNvbnN0IHNuaXBwZXQgPSBzbmlwcGV0c1tpXSA/PyBcIlwiO1xuICAgIGNpdGF0aW9ucy5wdXNoKHsgdXJsLCB0aXRsZSwgLi4uKHNuaXBwZXQgPyB7IHNuaXBwZXQgfSA6IHt9KSB9KTtcbiAgICBpICs9IDE7XG4gIH1cbiAgcmV0dXJuIGNpdGF0aW9ucztcbn1cblxuLyoqXG4gKiBSdW4gYSBzY3JhcGluZyBzZWFyY2ggb3ZlciBEdWNrRHVja0dvLiBSZXR1cm5zIHRoZSBzYW1lXG4gKiB7QGxpbmsgV2ViU2VhcmNoUmVzdWx0fSBzaGFwZSBhcyB0aGUgbmF0aXZlIHBhdGgsIHdpdGggYG1vZGVsYCBzZXQgdG9cbiAqIGBcInNjcmFwZTpkdWNrZHVja2dvXCJgIHNvIGNhbGxlcnMgY2FuIHRlbGwgaG93IHRoZSByZXN1bHQgd2FzIHByb2R1Y2VkLlxuICogQ2l0YXRpb25zIGFyZSBmaWx0ZXJlZCB0aHJvdWdoIHRoZSBjb25maWd1cmVkIFVSTCBhbGxvdy1saXN0LiBgc2lnbmFsYFxuICogY2FuY2VscyB0aGUgaW4tZmxpZ2h0IHJlcXVlc3QuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBydW5TY3JhcGVTZWFyY2goXG4gIHJlcXVlc3Q6IFdlYlNlYXJjaFJlcXVlc3QsXG4gIGNvbmZpZzogUmVzb2x2ZWRXZWJTZWFyY2hDb25maWcsXG4gIHNpZ25hbD86IEFib3J0U2lnbmFsLFxuKTogUHJvbWlzZTxXZWJTZWFyY2hSZXN1bHQ+IHtcbiAgY29uc3QgcGFnZSA9IGF3YWl0IGV4ZWN1dGVSZWFkKFxuICAgIFwic2NyYXBlLXNlYXJjaFwiLFxuICAgIHRvQ2FsbFNldHRpbmdzKHNjcmFwZVNlYXJjaEV4ZWN1dGVEZWZhdWx0cywgY29uZmlnLnRpbWVvdXRNcywgW1xuICAgICAgXCJ3ZWItc2VhcmNoXCIsXG4gICAgICBcInNjcmFwZVwiLFxuICAgICAgcmVxdWVzdC5xdWVyeSxcbiAgICBdKSxcbiAgICBhc3luYyAoZXhlY3V0ZVNpZ25hbCk6IFByb21pc2U8eyBib2R5OiBzdHJpbmc7IHN0YXR1c0NvZGU6IG51bWJlciB9PiA9PiB7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGdvdFNjcmFwaW5nKHtcbiAgICAgICAgdXJsOiBgJHtEREdfSFRNTF9VUkx9P3E9JHtlbmNvZGVVUklDb21wb25lbnQocmVxdWVzdC5xdWVyeSl9YCxcbiAgICAgICAgbWV0aG9kOiBcIkdFVFwiLFxuICAgICAgICAvLyBnb3QncyBvd24gdGltZW91dCBhYm9ydHMgdGhlIHNvY2tldCBhbmQgcmVwb3J0cyB3aGljaCBwaGFzZSB0aW1lZFxuICAgICAgICAvLyBvdXQ7IHRoZSBpbnRlcmNlcHRvciB0aW1lb3V0IGJvdW5kcyB0aGUgd2hvbGUgYXR0ZW1wdCBhcm91bmQgaXQuXG4gICAgICAgIHRpbWVvdXQ6IHsgcmVxdWVzdDogY29uZmlnLnRpbWVvdXRNcyB9LFxuICAgICAgICB0aHJvd0h0dHBFcnJvcnM6IGZhbHNlLFxuICAgICAgICBmb2xsb3dSZWRpcmVjdDogdHJ1ZSxcbiAgICAgICAgLi4uKGV4ZWN1dGVTaWduYWwgPyB7IHNpZ25hbDogZXhlY3V0ZVNpZ25hbCB9IDoge30pLFxuICAgICAgfSk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBib2R5OiB0eXBlb2YgcmVzcG9uc2UuYm9keSA9PT0gXCJzdHJpbmdcIiA/IHJlc3BvbnNlLmJvZHkgOiBTdHJpbmcocmVzcG9uc2UuYm9keSA/PyBcIlwiKSxcbiAgICAgICAgc3RhdHVzQ29kZTogcmVzcG9uc2Uuc3RhdHVzQ29kZSxcbiAgICAgIH07XG4gICAgfSxcbiAgICBzaWduYWwsXG4gICk7XG4gIGNvbnN0IGFsbCA9IHBhcnNlRGRnSHRtbChwYWdlLmJvZHkpO1xuICBjb25zdCBwZXJtaXR0ZWQgPSBhbGwuZmlsdGVyKChjKSA9PiBjb25maWcuYWxsb3dMaXN0LmFsbG93cyhjLnVybCkpO1xuICBjb25zdCBjaXRhdGlvbnMgPSBwZXJtaXR0ZWQuc2xpY2UoMCwgY29uZmlnLm1heENpdGF0aW9ucyk7XG4gIGNvbnN0IGFuc3dlciA9XG4gICAgY2l0YXRpb25zLmxlbmd0aCA+IDBcbiAgICAgID8gYFdlYiByZXN1bHRzIGZvciBcIiR7cmVxdWVzdC5xdWVyeX1cIiAobm8gRGF0YWJyaWNrcyB3ZWItc2VhcmNoIG1vZGVsIGlzIGRlcGxveWVkIGluIHRoaXMgd29ya3NwYWNlLCBzbyB0aGVzZSBhcmUgdW5zeW50aGVzaXplZCBzZWFyY2ggcmVzdWx0cyAtIHJlYWQgdGhlIGNpdGF0aW9ucyk6XFxuXFxuYCArXG4gICAgICAgIGNpdGF0aW9uc1xuICAgICAgICAgIC5tYXAoKGMsIG4pID0+IGAke24gKyAxfS4gJHtjLnRpdGxlfSR7Yy5zbmlwcGV0ID8gYCAtICR7Yy5zbmlwcGV0fWAgOiBcIlwifSAoJHtjLnVybH0pYClcbiAgICAgICAgICAuam9pbihcIlxcblwiKVxuICAgICAgOiBgTm8gd2ViIHJlc3VsdHMgZm91bmQgZm9yIFwiJHtyZXF1ZXN0LnF1ZXJ5fVwiLmA7XG4gIGxvZ2dlci5kZWJ1ZyhcInNjcmFwZWRcIiwge1xuICAgIHF1ZXJ5OiByZXF1ZXN0LnF1ZXJ5LFxuICAgIGZvdW5kOiBhbGwubGVuZ3RoLFxuICAgIHJldHVybmVkOiBjaXRhdGlvbnMubGVuZ3RoLFxuICAgIHN0YXR1czogcGFnZS5zdGF0dXNDb2RlLFxuICB9KTtcbiAgcmV0dXJuIHsgcXVlcnk6IHJlcXVlc3QucXVlcnksIGFuc3dlciwgY2l0YXRpb25zLCBtb2RlbDogXCJzY3JhcGU6ZHVja2R1Y2tnb1wiIH07XG59XG4iXX0=
@@ -21,8 +21,8 @@
21
21
  * @module
22
22
  */
23
23
  import { serving } from "@dbx-tools/model";
24
- import { type ResolvedWebSearchConfig } from "./config.js";
25
- import type { WebSearchRequest, WebSearchResult } from "./schema.js";
24
+ import { type ResolvedWebSearchConfig } from "./config.ts";
25
+ import type { WebSearchRequest, WebSearchResult } from "./schema.ts";
26
26
  type WorkspaceClientLike = serving.WorkspaceClientLike;
27
27
  /** Context a search needs from the caller: the OBO client + workspace host. */
28
28
  export interface WebSearchContext {
package/lib/src/search.js CHANGED
@@ -249,4 +249,4 @@ export async function runWebSearch(request, config, ctx, signal) {
249
249
  });
250
250
  return { query: request.query, answer, citations: trimmed, model: modelId };
251
251
  }
252
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlYXJjaC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUJHO0FBRUgsT0FBTyxFQUNMLGtCQUFrQixFQUNsQixlQUFlLEVBQ2YsY0FBYyxFQUNkLG1CQUFtQixFQUNuQixlQUFlLEdBQ2hCLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDNUQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxlQUFlLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsU0FBUyxFQUFFLG9CQUFvQixFQUFnQyxNQUFNLFVBQVUsQ0FBQztBQUN6RixPQUFPLEVBQUUsY0FBYyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3RFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxpQkFBaUIsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUMzRixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRXhDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFHM0MsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0FBQy9DLE1BQU0sRUFBRSxZQUFZLEVBQUUsR0FBRyxPQUFPLENBQUM7QUFDakMsTUFBTSxFQUFFLG9CQUFvQixFQUFFLEdBQUcsT0FBTyxDQUFDO0FBRXpDOzs7OztHQUtHO0FBQ0gsTUFBTSx3QkFBd0IsR0FBRyxDQUFDLENBQUM7QUFFbkMsK0VBQStFO0FBQy9FLE1BQU0sbUJBQW1CLEdBQUcsR0FBRyxDQUFDO0FBRWhD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QU0sQ0FDUCxDQUFDO0lBRUYsTUFBTSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsR0FDekIsSUFBSSxDQUFDLEdBQUcsS0FBSyxXQUFXLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUM7SUFFdEYsTUFBTSxTQUFTLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDMUUsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDO0lBQ3BELE1BQU0sT0FBTyxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUN4RCxNQUFNLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRTtRQUN2QixLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUs7UUFDcEIsS0FBSyxFQUFFLE9BQU87UUFDZCxRQUFRO1FBQ1IsU0FBUyxFQUFFLFNBQVMsQ0FBQyxNQUFNO1FBQzNCLEdBQUcsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQzdDLFFBQVEsRUFBRSxPQUFPLENBQUMsTUFBTTtLQUN6QixDQUFDLENBQUM7SUFFSCxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxDQUFDO0FBQzlFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFdlYiBzZWFyY2ggYmFja2VkIGJ5IHRoZSBEYXRhYnJpY2tzIE1vZGVsIFNlcnZpbmcgbmF0aXZlIHdlYi1zZWFyY2ggdG9vbC5cbiAqXG4gKiBVbmxpa2UgYSBzY3JhcGluZyBjbGllbnQsIHRoZSBzZWFyY2ggcnVucyAqaW5zaWRlKiBhIG1vZGVsIGNhbGw6IHdlIFBPU1QgdGhlXG4gKiBxdWVyeSB0byB0aGUgd29ya3NwYWNlJ3Mgc2VydmluZyBlbmRwb2ludCB3aXRoIHRoZSBwcm92aWRlcidzIHdlYi1zZWFyY2hcbiAqIHRvb2wgc3BlYyBhdHRhY2hlZCwgYW5kIHRoZSBtb2RlbCBzZWFyY2hlcyB0aGUgd2ViIGFuZCB3cml0ZXMgdGhlIGFuc3dlci5cbiAqIHtAbGluayBydW5XZWJTZWFyY2h9OlxuICpcbiAqICAgMS4gUmVzb2x2ZXMgYSB3ZWItc2VhcmNoLWNhcGFibGUgbW9kZWwgSU5ERVBFTkRFTlRMWSBvZiB0aGUgY2FsbGluZ1xuICogICAgICBhZ2VudCdzIGNoYXQgbW9kZWwgKHRoZSBhZ2VudCBtYXkgcnVuIG9uIGEgbW9kZWwgd2l0aG91dCB3ZWIgc2VhcmNoKS5cbiAqICAgICAgQSBwaW5uZWQgYG1vZGVsYCAocmVxdWVzdCBvciBjb25maWcpIGlzIGZ1enp5LW1hdGNoZWQ7IG90aGVyd2lzZSB0aGVcbiAqICAgICAgY29uZmlndXJlZCBmYWxsYmFjayBvcmRlciAoR2VtaW5pLCB0aGVuIEdQVCkgaXMgd2Fsa2VkIHRvIHRoZSBmaXJzdFxuICogICAgICB3ZWItc2VhcmNoLWNhcGFibGUgZW5kcG9pbnQgdGhhdCBleGlzdHMuIEFuIGV4cGxpY2l0IGJ1dCB1bnN1cHBvcnRlZFxuICogICAgICBtb2RlbCBpcyBhIGhhcmQgZXJyb3IsIG5vdCBhIHNpbGVudCBmYWxsYmFjay5cbiAqICAgMi4gUE9TVHMgdG8gdGhlIHByb3ZpZGVyJ3MgUkVTVCBzdXJmYWNlIChgL3NlcnZpbmctZW5kcG9pbnRzL3Jlc3BvbnNlc2BcbiAqICAgICAgZm9yIE9wZW5BSSwgYC9zZXJ2aW5nLWVuZHBvaW50cy9jaGF0L2NvbXBsZXRpb25zYCBmb3IgR2VtaW5pKSB3aXRoIHRoZVxuICogICAgICBtYXBwZWQgdG9vbCBzcGVjLCBhdXRoZW50aWNhdGVkIGFzIHRoZSBPQk8gY2FsbGVyLlxuICogICAzLiBSZXR1cm5zIHRoZSBzeW50aGVzaXplZCBhbnN3ZXIgcGx1cyB0aGUgY2l0ZWQgc291cmNlcywgd2l0aCBjaXRhdGlvbnNcbiAqICAgICAgc2lsZW50bHkgZmlsdGVyZWQgdGhyb3VnaCB0aGUgY29uZmlndXJlZCBVUkwgYWxsb3ctbGlzdC5cbiAqXG4gKiBAbW9kdWxlXG4gKi9cblxuaW1wb3J0IHtcbiAgQ29uZmlndXJhdGlvbkVycm9yLFxuICBDb25uZWN0aW9uRXJyb3IsXG4gIEV4ZWN1dGlvbkVycm9yLFxuICBnZXRFeGVjdXRpb25Db250ZXh0LFxuICBWYWxpZGF0aW9uRXJyb3IsXG59IGZyb20gXCJAZGF0YWJyaWNrcy9hcHBraXRcIjtcbmltcG9ydCB7IGludm9rZSwgcmVzb2x2ZSwgc2VydmluZyB9IGZyb20gXCJAZGJ4LXRvb2xzL21vZGVsXCI7XG5pbXBvcnQgeyBsb2csIG9iamVjdCwgc3RyaW5nIH0gZnJvbSBcIkBkYngtdG9vbHMvc2hhcmVkLWNvcmVcIjtcbmltcG9ydCB7IG9wZW5haUNoYXQsIG9wZW5haVJlc3BvbnNlcyB9IGZyb20gXCJAZGJ4LXRvb2xzL3NoYXJlZC1tb2RlbFwiO1xuaW1wb3J0IHsgTU9ERUxfRU5WLCBTRVJWSU5HX0VORFBPSU5UX0VOViwgdHlwZSBSZXNvbHZlZFdlYlNlYXJjaENvbmZpZyB9IGZyb20gXCIuL2NvbmZpZ1wiO1xuaW1wb3J0IHsgdG9DYWxsU2V0dGluZ3MsIHdlYlNlYXJjaEV4ZWN1dGVEZWZhdWx0cyB9IGZyb20gXCIuL2RlZmF1bHRzXCI7XG5pbXBvcnQgeyBkZXRlY3RXZWJTZWFyY2hQcm92aWRlciwgc3VwcG9ydHNXZWJTZWFyY2gsIHdlYlNlYXJjaFRvb2xTcGVjIH0gZnJvbSBcIi4vcHJvdmlkZXJcIjtcbmltcG9ydCB7IGV4ZWN1dGVSZWFkIH0gZnJvbSBcIi4vcnVudGltZVwiO1xuaW1wb3J0IHR5cGUgeyBXZWJTZWFyY2hDaXRhdGlvbiwgV2ViU2VhcmNoUmVxdWVzdCwgV2ViU2VhcmNoUmVzdWx0IH0gZnJvbSBcIi4vc2NoZW1hXCI7XG5pbXBvcnQgeyBydW5TY3JhcGVTZWFyY2ggfSBmcm9tIFwiLi9zY3JhcGVcIjtcblxudHlwZSBXb3Jrc3BhY2VDbGllbnRMaWtlID0gc2VydmluZy5Xb3Jrc3BhY2VDbGllbnRMaWtlO1xuY29uc3QgbG9nZ2VyID0gbG9nLmxvZ2dlcihcIndlYi1zZWFyY2gvc2VhcmNoXCIpO1xuY29uc3QgeyByZXNvbHZlTW9kZWwgfSA9IHJlc29sdmU7XG5jb25zdCB7IGxpc3RTZXJ2aW5nRW5kcG9pbnRzIH0gPSBzZXJ2aW5nO1xuXG4vKipcbiAqIEhvdyBkZWVwIHRoZSBncm91bmRpbmctbWV0YWRhdGEgd2FsayBkZXNjZW5kcy4gR2VtaW5pIG5lc3RzIGl0cyBzb3VyY2VzIGFcbiAqIGhhbmRmdWwgb2YgbGV2ZWxzIGRvd24gYW5kIHRoZSBzaGFwZSB2YXJpZXMgYnkgbW9kZWwgdmVyc2lvbiwgc28gdGhlIHdhbGtcbiAqIGlzIGdlbmVyaWM7IHRoZSBib3VuZCBpcyB3aGF0IGtlZXBzIGEgcGF0aG9sb2dpY2FsIHBheWxvYWQgZnJvbSB0dXJuaW5nIGl0XG4gKiBpbnRvIGEgZnVsbCB0cmF2ZXJzYWwgb2YgdGhlIHJlc3BvbnNlLlxuICovXG5jb25zdCBNQVhfR1JPVU5ESU5HX1dBTEtfREVQVEggPSA2O1xuXG4vKiogTG93ZXN0IEhUVFAgc3RhdHVzIHRyZWF0ZWQgYXMgYSBzZXJ2ZXItc2lkZSAocmV0cnlhYmxlKSBzZXJ2aW5nIGZhaWx1cmUuICovXG5jb25zdCBTRVJWRVJfRVJST1JfU1RBVFVTID0gNTAwO1xuXG4vKiogU3RhdHVzIE1vZGVsIFNlcnZpbmcgdXNlcyB0byBzaGVkIGxvYWQ7IHJldHJ5YWJsZSBsaWtlIGEgNXh4LiAqL1xuY29uc3QgUkFURV9MSU1JVEVEX1NUQVRVUyA9IDQyOTtcblxuLyoqIENvbnRleHQgYSBzZWFyY2ggbmVlZHMgZnJvbSB0aGUgY2FsbGVyOiB0aGUgT0JPIGNsaWVudCArIHdvcmtzcGFjZSBob3N0LiAqL1xuZXhwb3J0IGludGVyZmFjZSBXZWJTZWFyY2hDb250ZXh0IHtcbiAgY2xpZW50OiBXb3Jrc3BhY2VDbGllbnRMaWtlO1xuICBob3N0OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVzb2x2ZSB0aGUgT0JPIHdvcmtzcGFjZSBjbGllbnQgKyBob3N0IGZyb20gdGhlIGFjdGl2ZSBBcHBLaXQgZXhlY3V0aW9uXG4gKiBjb250ZXh0LiBJbnNpZGUgYGFnZW50LnN0cmVhbWAncyBgYXNVc2VyKHJlcSlgIHNjb3BlIHRoaXMgaGl0cyB0aGUgc2VydmluZ1xuICogZW5kcG9pbnQgYXMgdGhlIHJlcXVlc3RpbmcgdXNlcjsgb3V0c2lkZSBhIHVzZXIgY29udGV4dCBBcHBLaXQgZmFsbHMgYmFjayB0b1xuICogdGhlIHNlcnZpY2UgcHJpbmNpcGFsLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVzb2x2ZVdlYlNlYXJjaENvbnRleHQoKTogUHJvbWlzZTxXZWJTZWFyY2hDb250ZXh0PiB7XG4gIGNvbnN0IGN0eCA9IGdldEV4ZWN1dGlvbkNvbnRleHQoKTtcbiAgY29uc3QgaG9zdCA9IChhd2FpdCBjdHguY2xpZW50LmNvbmZpZy5nZXRIb3N0KCkpLnRvU3RyaW5nKCk7XG4gIHJldHVybiB7IGNsaWVudDogY3R4LmNsaWVudCwgaG9zdCB9O1xufVxuXG4vKipcbiAqIFJlc29sdmUgYSB3ZWItc2VhcmNoLWNhcGFibGUgbW9kZWwgYWdhaW5zdCB0aGUgTElWRSB3b3Jrc3BhY2UgY2F0YWxvZ3VlIC0gc29cbiAqIHdlIG5ldmVyIHJldHVybiBhbiBlbmRwb2ludCBpZCB0aGF0IGlzbid0IGFjdHVhbGx5IGRlcGxveWVkICh0aGUgXCJlbmRwb2ludFxuICogZG9lcyBub3QgZXhpc3RcIiBmYWlsdXJlIGEgaGFyZGNvZGVkIGZhbGxiYWNrIGlkIHdvdWxkIGNhdXNlKS4gUmV1c2VzXG4gKiBgQGRieC10b29scy9tb2RlbGAncyBleGlzdGluZyBjYXRhbG9ndWUgKyByZXNvbHZlciByYXRoZXIgdGhhbiBhIGN1c3RvbVxuICogbG9va3VwOiB7QGxpbmsgbGlzdFNlcnZpbmdFbmRwb2ludHN9IGxpc3RzIHRoZSBlbmRwb2ludHMgKGNhY2hlZCksIGFuZCB3ZVxuICogcmVzdHJpY3QgdGhlIGNhbmRpZGF0ZSBzZXQgdG8gdGhlIHtAbGluayBzdXBwb3J0c1dlYlNlYXJjaH0gb25lcyBiZWZvcmVcbiAqIHtAbGluayByZXNvbHZlTW9kZWx9IGZ1enp5LXBpY2tzIHdpdGhpbiBpdC5cbiAqXG4gKiBSZXR1cm5zIHRoZSBjaG9zZW4gZW5kcG9pbnQgaWQsIG9yIGBudWxsYCB3aGVuIHRoZSB3b3Jrc3BhY2UgaGFzIG5vXG4gKiB3ZWItc2VhcmNoLWNhcGFibGUgbW9kZWwgZGVwbG95ZWQgKHRoZSBjYWxsZXIgdGhlbiB1c2VzIHRoZSBzY3JhcGVcbiAqIGZhbGxiYWNrKS4gQSBwaW4gdGhlIGNhbGxlciBjaG9zZSBkZWxpYmVyYXRlbHkgLSB0aGUgcmVxdWVzdCdzIGBtb2RlbGAsIHRoZVxuICogcGx1Z2luJ3MgYG1vZGVsYCwgb3IgYFdFQl9TRUFSQ0hfTU9ERUxgIC0gdGhyb3dzIHdoZW4gaXQgcmVzb2x2ZXMgdG8gYW5cbiAqIHVuc3VwcG9ydGVkIC8gYWJzZW50IGVuZHBvaW50LCBzbyBhIGJhZCBwaW4gc3VyZmFjZXMgcmF0aGVyIHRoYW4gc2lsZW50bHlcbiAqIGRlZ3JhZGluZy4gQSBwaW4gaW5oZXJpdGVkIGZyb20gdGhlIHNoYXJlZCBgREFUQUJSSUNLU19TRVJWSU5HX0VORFBPSU5UX05BTUVgXG4gKiBiaW5kaW5nIGlzIG9ubHkgYSBwcmVmZXJlbmNlOiB0aGF0IGVuZHBvaW50IGlzIHRoZSBhcHAncyBzZXJ2aW5nIGVuZHBvaW50LFxuICogbm90IG5lY2Vzc2FyaWx5IGEgd2ViLXNlYXJjaC1jYXBhYmxlIG9uZSwgc28gYW4gdW51c2FibGUgdmFsdWUgZmFsbHMgdGhyb3VnaFxuICogdG8gdGhlIGZhbGxiYWNrIG9yZGVyLlxuICovXG5hc3luYyBmdW5jdGlvbiByZXNvbHZlV2ViU2VhcmNoTW9kZWwoXG4gIGN0eDogV2ViU2VhcmNoQ29udGV4dCxcbiAgY29uZmlnOiBSZXNvbHZlZFdlYlNlYXJjaENvbmZpZyxcbiAgcmVxdWVzdGVkOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4pOiBQcm9taXNlPHN0cmluZyB8IG51bGw+IHtcbiAgY29uc3QgZW5kcG9pbnRzID0gYXdhaXQgbGlzdFNlcnZpbmdFbmRwb2ludHMoY3R4LmNsaWVudCwgY3R4Lmhvc3QpO1xuICAvLyBPbmx5IGRlcGxveWVkLCB3ZWItc2VhcmNoLWNhcGFibGUgZW5kcG9pbnRzIGFyZSBjYW5kaWRhdGVzLlxuICBjb25zdCBjYXBhYmxlID0gZW5kcG9pbnRzLmZpbHRlcigoZSkgPT4gc3VwcG9ydHNXZWJTZWFyY2goZS5uYW1lKSk7XG4gIGNvbnN0IHBpbm5lZCA9IHJlcXVlc3RlZCA/PyBjb25maWcubW9kZWw7XG4gIGNvbnN0IHBpbklzRGVsaWJlcmF0ZSA9XG4gICAgcmVxdWVzdGVkICE9PSB1bmRlZmluZWQgfHwgY29uZmlnLm1vZGVsU291cmNlID09PSBcImNvbmZpZ1wiIHx8IGNvbmZpZy5tb2RlbFNvdXJjZSA9PT0gTU9ERUxfRU5WO1xuXG4gIGlmIChwaW5uZWQpIHtcbiAgICAvLyBSZXNvbHZlIHRoZSBleHBsaWNpdCBhc2sgd2l0aGluIHRoZSBjYXBhYmxlIHNldCBvbmx5LlxuICAgIGNvbnN0IHsgbW9kZWxJZCB9ID0gcmVzb2x2ZU1vZGVsKGNhcGFibGUsIHtcbiAgICAgIGV4cGxpY2l0OiBwaW5uZWQsXG4gICAgICBmdXp6eTogY29uZmlnLmZ1enp5LFxuICAgICAgdGhyZXNob2xkOiBjb25maWcuZnV6enlUaHJlc2hvbGQsXG4gICAgfSk7XG4gICAgLy8gcmVzb2x2ZU1vZGVsIHJldHVybnMgdGhlIGlucHV0IHZlcmJhdGltIG9uIG5vIG1hdGNoOyByZXF1aXJlIGl0IHRvIGJlIGFcbiAgICAvLyByZWFsIGNhcGFibGUgZW5kcG9pbnQgc28gYSBiYWQgcGluIGlzIGEgY2xlYXIgZXJyb3IsIG5vdCBhIHBoYW50b20gY2FsbC5cbiAgICBjb25zdCB1c2FibGUgPSBjYXBhYmxlLnNvbWUoKGUpID0+IGUubmFtZSA9PT0gbW9kZWxJZCkgJiYgc3VwcG9ydHNXZWJTZWFyY2gobW9kZWxJZCk7XG4gICAgaWYgKHVzYWJsZSkgcmV0dXJuIG1vZGVsSWQ7XG4gICAgY29uc3QgZGVwbG95ZWQgPSBjYXBhYmxlLm1hcCgoZSkgPT4gZS5uYW1lKS5qb2luKFwiLCBcIikgfHwgXCJub25lXCI7XG4gICAgaWYgKCFwaW5Jc0RlbGliZXJhdGUpIHtcbiAgICAgIGxvZ2dlci5pbmZvKFwic2hhcmVkLWVuZHBvaW50LW5vdC13ZWItY2FwYWJsZVwiLCB7XG4gICAgICAgIGVudlZhcjogU0VSVklOR19FTkRQT0lOVF9FTlYsXG4gICAgICAgIGRlcGxveWVkLFxuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmIChyZXF1ZXN0ZWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgVmFsaWRhdGlvbkVycm9yLmludmFsaWRWYWx1ZShcbiAgICAgICAgXCJtb2RlbFwiLFxuICAgICAgICBwaW5uZWQsXG4gICAgICAgIGBhIGRlcGxveWVkIHdlYi1zZWFyY2gtY2FwYWJsZSBlbmRwb2ludCAoZGVwbG95ZWQ6ICR7ZGVwbG95ZWR9KWAsXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBDb25maWd1cmF0aW9uRXJyb3IucmVzb3VyY2VOb3RGb3VuZChcbiAgICAgICAgXCJXZWItc2VhcmNoLWNhcGFibGUgc2VydmluZyBlbmRwb2ludFwiLFxuICAgICAgICBgRGVwbG95ZWQgd2ViLXNlYXJjaC1jYXBhYmxlIGVuZHBvaW50czogJHtkZXBsb3llZH0uIFNldCBtb2RlbCBvciAke01PREVMX0VOVn0gdG8gb25lIG9mIHRoZW0uYCxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgaWYgKGNhcGFibGUubGVuZ3RoID09PSAwKSByZXR1cm4gbnVsbDtcblxuICAvLyBOb3RoaW5nIHVzYWJsZSBwaW5uZWQ6IHByZWZlciB0aGUgY29uZmlndXJlZCBmYWxsYmFjayBvcmRlciAoR2VtaW5pLCB0aGVuXG4gIC8vIEdQVCkgd2hlbiB0aG9zZSBpZHMgYXJlIGFjdHVhbGx5IGRlcGxveWVkOyBlbHNlIHRha2UgdGhlIGJlc3QgY2FwYWJsZVxuICAvLyBlbmRwb2ludC5cbiAgY29uc3QgeyBtb2RlbElkIH0gPSByZXNvbHZlTW9kZWwoY2FwYWJsZSwge1xuICAgIGZhbGxiYWNrczogY29uZmlnLm1vZGVsRmFsbGJhY2tzLFxuICAgIGZ1enp5OiBjb25maWcuZnV6enksXG4gICAgdGhyZXNob2xkOiBjb25maWcuZnV6enlUaHJlc2hvbGQsXG4gIH0pO1xuICByZXR1cm4gY2FwYWJsZS5zb21lKChlKSA9PiBlLm5hbWUgPT09IG1vZGVsSWQpID8gbW9kZWxJZCA6IChjYXBhYmxlWzBdPy5uYW1lID8/IG51bGwpO1xufVxuXG4vKipcbiAqIFBPU1QgYSBzZXJ2aW5nIHJlcXVlc3QgYXMgdGhlIE9CTyBjYWxsZXIgYW5kIHJldHVybiB0aGUgcGFyc2VkIEpTT04gYm9keS5cbiAqXG4gKiBBdXRoIGhlYWRlcnMgYXJlIG1pbnRlZCBwZXIgY2FsbCBmcm9tIHRoZSBPQk8gY2xpZW50J3MgU0RLIGNvbmZpZywgd2hpY2hcbiAqIHJlZnJlc2hlcyB0aGUgdG9rZW4gd2hlbiBpdCBpcyBjbG9zZSB0byBleHBpcnksIHNvIHRoZSByZXF1ZXN0IGNhcnJpZXMgdGhlXG4gKiByZXF1ZXN0aW5nIHVzZXIncyBpZGVudGl0eS5cbiAqXG4gKiBUaGlzIGlzIHRoZSBvbmUgRGF0YWJyaWNrcyBjYWxsIGluIHRoZSByZXBvIHRoYXQgZG9lcyBub3QgZ28gdGhyb3VnaFxuICogYGFwaUNsaWVudC5yZXF1ZXN0YCArIGBkYXRhYnJpY2tzLnRvQ29udGV4dGAgKHdoaWNoIGRvZXMgZm9yd2FyZFxuICogY2FuY2VsbGF0aW9uKS4gUmV0cnkgY2xhc3NpZmljYXRpb24gaGVyZSBoYXMgdG8gZGlzdGluZ3Vpc2ggYSBsb2FkLXNoZWQgb3JcbiAqIHNlcnZlciBmYXVsdCBmcm9tIHRoaXMgcmVxdWVzdCdzIG93biA0eHgsIGFuZCBgZmV0Y2hgIGV4cG9zZXMgdGhlIEhUVFAgc3RhdHVzXG4gKiBkaXJlY3RseTsgdGhlIFNESyByYWlzZXMgYW4gYEFwaUVycm9yYCB0aGF0IGNhcnJpZXMgdGhlIHN0YXR1cyB1bmRlclxuICogaW5jb25zaXN0ZW50IGtleXMsIHdoaWNoIGlzIGd1ZXNzd29yayBieSBjb21wYXJpc29uLlxuICovXG5hc3luYyBmdW5jdGlvbiBwb3N0U2VydmluZyhcbiAgY3R4OiBXZWJTZWFyY2hDb250ZXh0LFxuICB1cmw6IHN0cmluZyxcbiAgYm9keTogdW5rbm93bixcbiAgY29uZmlnOiBSZXNvbHZlZFdlYlNlYXJjaENvbmZpZyxcbiAgY2FjaGVLZXk6IHJlYWRvbmx5IChzdHJpbmcgfCBudW1iZXIpW10sXG4gIHNpZ25hbD86IEFib3J0U2lnbmFsLFxuKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4ge1xuICBjb25zdCBwYXlsb2FkID0gYXdhaXQgZXhlY3V0ZVJlYWQoXG4gICAgXCJzZXJ2aW5nLXJlcXVlc3RcIixcbiAgICB0b0NhbGxTZXR0aW5ncyh3ZWJTZWFyY2hFeGVjdXRlRGVmYXVsdHMsIGNvbmZpZy50aW1lb3V0TXMsIGNhY2hlS2V5KSxcbiAgICBhc3luYyAoZXhlY3V0ZVNpZ25hbCk6IFByb21pc2U8dW5rbm93bj4gPT4ge1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaCh1cmwsIHtcbiAgICAgICAgbWV0aG9kOiBcIlBPU1RcIixcbiAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgIC4uLihhd2FpdCBpbnZva2UuYXV0aEhlYWRlcnMoY3R4LmNsaWVudCkpLFxuICAgICAgICAgIEFjY2VwdDogXCJhcHBsaWNhdGlvbi9qc29uXCIsXG4gICAgICAgICAgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIsXG4gICAgICAgIH0sXG4gICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KGJvZHkpLFxuICAgICAgICAuLi4oZXhlY3V0ZVNpZ25hbCA/IHsgc2lnbmFsOiBleGVjdXRlU2lnbmFsIH0gOiB7fSksXG4gICAgICB9KTtcbiAgICAgIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICAgICAgLy8gTG9hZC1zaGVkZGluZyBhbmQgc2VydmVyIGZhdWx0cyBhcmUgd29ydGggYW5vdGhlciBhdHRlbXB0OyBhIDR4eCBpc1xuICAgICAgICAvLyB0aGlzIHJlcXVlc3QncyBvd24gcHJvYmxlbSwgc28gaXQgbXVzdCBub3QgYmUgcmV0cmllZC5cbiAgICAgICAgY29uc3QgcmV0cnlhYmxlID1cbiAgICAgICAgICByZXNwb25zZS5zdGF0dXMgPj0gU0VSVkVSX0VSUk9SX1NUQVRVUyB8fCByZXNwb25zZS5zdGF0dXMgPT09IFJBVEVfTElNSVRFRF9TVEFUVVM7XG4gICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBgd2ViLXNlYXJjaDogTW9kZWwgU2VydmluZyByZWplY3RlZCB0aGUgc2VhcmNoIHJlcXVlc3QgKEhUVFAgJHtyZXNwb25zZS5zdGF0dXN9KWA7XG4gICAgICAgIHRocm93IHJldHJ5YWJsZVxuICAgICAgICAgID8gbmV3IENvbm5lY3Rpb25FcnJvcihtZXNzYWdlLCB7IGNvbnRleHQ6IHsgc3RhdHVzOiByZXNwb25zZS5zdGF0dXMgfSB9KVxuICAgICAgICAgIDogbmV3IEV4ZWN1dGlvbkVycm9yKG1lc3NhZ2UsIHsgY29udGV4dDogeyBzdGF0dXM6IHJlc3BvbnNlLnN0YXR1cyB9IH0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3BvbnNlLmpzb24oKTtcbiAgICB9LFxuICAgIHNpZ25hbCxcbiAgKTtcbiAgcmV0dXJuIG9iamVjdC5pc1JlY29yZChwYXlsb2FkKSA/IHBheWxvYWQgOiB7fTtcbn1cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHJlc3BvbnNlIGV4dHJhY3Rpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbi8qKlxuICogRXh0cmFjdCBhbnN3ZXIgdGV4dCArIGNpdGF0aW9ucyBmcm9tIGFuIE9wZW5BSSBSZXNwb25zZXMgQVBJIHBheWxvYWQsIHZpYSB0aGVcbiAqIHNoYXJlZCByZWFkZXIgaW4gYEBkYngtdG9vbHMvc2hhcmVkLW1vZGVsYCAodGhlIHNhbWUgbW9kdWxlIHRoZSBtb2RlbC1wcm94eVxuICogdXNlcyB0byB0cmFuc2xhdGUgdGhlIFJlc3BvbnNlcyB3aXJlIGZvcm1hdCBpbiB0aGUgb3RoZXIgZGlyZWN0aW9uKS5cbiAqL1xuZnVuY3Rpb24gZnJvbVJlc3BvbnNlc1BheWxvYWQocGF5bG9hZDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiB7XG4gIGFuc3dlcjogc3RyaW5nO1xuICBjaXRhdGlvbnM6IFdlYlNlYXJjaENpdGF0aW9uW107XG59IHtcbiAgY29uc3QgeyB0ZXh0LCBjaXRhdGlvbnMgfSA9IG9wZW5haVJlc3BvbnNlcy5yZWFkUmVzcG9uc2VzT3V0cHV0KHBheWxvYWQpO1xuICByZXR1cm4geyBhbnN3ZXI6IHRleHQsIGNpdGF0aW9ucyB9O1xufVxuXG4vKipcbiAqIEV4dHJhY3QgYW5zd2VyIHRleHQgKyBjaXRhdGlvbnMgZnJvbSBhIENoYXQgQ29tcGxldGlvbnMgcGF5bG9hZCAoR2VtaW5pIHZpYVxuICogYGdvb2dsZV9zZWFyY2hgKS4gVGhlIGFuc3dlciBpcyBgY2hvaWNlc1swXS5tZXNzYWdlLmNvbnRlbnRgOyBncm91bmRpbmdcbiAqIHNvdXJjZXMsIHdoZW4gcHJlc2VudCwgc3VyZmFjZSB1bmRlciBgY2hvaWNlc1swXS5tZXNzYWdlYCBncm91bmRpbmdcbiAqIG1ldGFkYXRhIChiZXN0LWVmZm9ydCAtIHNoYXBlcyB2YXJ5LCBzbyB3ZSBzY2FuIGZvciB1cmwtYmVhcmluZyBlbnRyaWVzKS5cbiAqL1xuZnVuY3Rpb24gZnJvbUNoYXRQYXlsb2FkKHBheWxvYWQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KToge1xuICBhbnN3ZXI6IHN0cmluZztcbiAgY2l0YXRpb25zOiBXZWJTZWFyY2hDaXRhdGlvbltdO1xufSB7XG4gIGNvbnN0IGNob2ljZXMgPSBBcnJheS5pc0FycmF5KHBheWxvYWQuY2hvaWNlcykgPyBwYXlsb2FkLmNob2ljZXMgOiBbXTtcbiAgY29uc3QgZmlyc3QgPSBjaG9pY2VzWzBdO1xuICBjb25zdCBtZXNzYWdlID0gb2JqZWN0LmlzUmVjb3JkKGZpcnN0KSAmJiBvYmplY3QuaXNSZWNvcmQoZmlyc3QubWVzc2FnZSkgPyBmaXJzdC5tZXNzYWdlIDoge307XG4gIGNvbnN0IGFuc3dlciA9IG9wZW5haUNoYXQuY2hhdENvbnRlbnRUb1RleHQobWVzc2FnZS5jb250ZW50KTtcbiAgY29uc3QgY2l0YXRpb25zOiBXZWJTZWFyY2hDaXRhdGlvbltdID0gW107XG4gIC8vIEJlc3QtZWZmb3J0IGdyb3VuZGluZyBleHRyYWN0aW9uOiB3YWxrIGFueSBuZXN0ZWQgb2JqZWN0IGZvciB7dXJpfHVybCx0aXRsZX0uXG4gIGNvbnN0IHNlZW4gPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgY29uc3QgdmlzaXQgPSAodjogdW5rbm93biwgZGVwdGg6IG51bWJlcik6IHZvaWQgPT4ge1xuICAgIGlmIChkZXB0aCA+IE1BWF9HUk9VTkRJTkdfV0FMS19ERVBUSCB8fCAhb2JqZWN0LmlzUmVjb3JkKHYpKSByZXR1cm47XG4gICAgY29uc3QgdXJsID0gc3RyaW5nLnRyaW1Ub0VtcHR5KHYudXJsKSB8fCBzdHJpbmcudHJpbVRvRW1wdHkodi51cmkpO1xuICAgIGlmICh1cmwgJiYgIXNlZW4uaGFzKHVybCkpIHtcbiAgICAgIHNlZW4uYWRkKHVybCk7XG4gICAgICBjb25zdCB0aXRsZSA9IHN0cmluZy50cmltVG9FbXB0eSh2LnRpdGxlKTtcbiAgICAgIGNpdGF0aW9ucy5wdXNoKHsgdXJsLCAuLi4odGl0bGUgPyB7IHRpdGxlIH0gOiB7fSkgfSk7XG4gICAgfVxuICAgIGZvciAoY29uc3QgdmFsIG9mIE9iamVjdC52YWx1ZXModikpIHtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbCkpIHZhbC5mb3JFYWNoKCh4KSA9PiB2aXNpdCh4LCBkZXB0aCArIDEpKTtcbiAgICAgIGVsc2UgaWYgKHZhbCAmJiB0eXBlb2YgdmFsID09PSBcIm9iamVjdFwiKSB2aXNpdCh2YWwsIGRlcHRoICsgMSk7XG4gICAgfVxuICB9O1xuICB2aXNpdChtZXNzYWdlLmdyb3VuZGluZ19tZXRhZGF0YSA/PyBtZXNzYWdlLmdyb3VuZGluZ01ldGFkYXRhLCAwKTtcbiAgcmV0dXJuIHsgYW5zd2VyLCBjaXRhdGlvbnMgfTtcbn1cblxuLyoqXG4gKiBSdW4gYSB3ZWIgc2VhcmNoLiBQcmVmZXJzIHRoZSBEYXRhYnJpY2tzIG5hdGl2ZSB3ZWItc2VhcmNoIHRvb2wgb24gYVxuICogZGVwbG95ZWQgR1BUL0dlbWluaSBlbmRwb2ludCAoc3ludGhlc2l6ZWQgYW5zd2VyICsgY2l0YXRpb25zKTsgd2hlbiB0aGVcbiAqIHdvcmtzcGFjZSBoYXMgbm8gc3VjaCBlbmRwb2ludCBBTkQgdGhlIHNjcmFwZSBmYWxsYmFjayBpcyBlbmFibGVkLCBmYWxsc1xuICogYmFjayB0byBhIER1Y2tEdWNrR28gc2NyYXBlIHNvIHRoZSB0b29sIHN0aWxsIHJldHVybnMgcmVzdWx0cyBpbnN0ZWFkIG9mXG4gKiBlcnJvcmluZy4gQ2l0YXRpb25zIGFyZSBmaWx0ZXJlZCB0aHJvdWdoIHRoZSBjb25maWd1cmVkIFVSTCBhbGxvdy1saXN0LlxuICpcbiAqIGBzaWduYWxgIGNhbmNlbHMgdGhlIHdob2xlIGNhbGwsIGluY2x1ZGluZyB0aGUgaW4tZmxpZ2h0IHNlcnZpbmcgcmVxdWVzdC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJ1bldlYlNlYXJjaChcbiAgcmVxdWVzdDogV2ViU2VhcmNoUmVxdWVzdCxcbiAgY29uZmlnOiBSZXNvbHZlZFdlYlNlYXJjaENvbmZpZyxcbiAgY3R4OiBXZWJTZWFyY2hDb250ZXh0LFxuICBzaWduYWw/OiBBYm9ydFNpZ25hbCxcbik6IFByb21pc2U8V2ViU2VhcmNoUmVzdWx0PiB7XG4gIGNvbnN0IG1vZGVsSWQgPSBhd2FpdCByZXNvbHZlV2ViU2VhcmNoTW9kZWwoY3R4LCBjb25maWcsIHJlcXVlc3QubW9kZWwpO1xuXG4gIGlmIChtb2RlbElkID09PSBudWxsKSB7XG4gICAgLy8gTm8gbmF0aXZlIHdlYi1zZWFyY2ggbW9kZWwgZGVwbG95ZWQgaW4gdGhpcyB3b3Jrc3BhY2UuXG4gICAgaWYgKGNvbmZpZy5zY3JhcGVGYWxsYmFjaykge1xuICAgICAgbG9nZ2VyLmluZm8oXCJuby1uYXRpdmUtbW9kZWw6c2NyYXBlLWZhbGxiYWNrXCIsIHsgcXVlcnk6IHJlcXVlc3QucXVlcnkgfSk7XG4gICAgICByZXR1cm4gcnVuU2NyYXBlU2VhcmNoKHJlcXVlc3QsIGNvbmZpZywgc2lnbmFsKTtcbiAgICB9XG4gICAgdGhyb3cgQ29uZmlndXJhdGlvbkVycm9yLnJlc291cmNlTm90Rm91bmQoXG4gICAgICBcIldlYi1zZWFyY2gtY2FwYWJsZSBzZXJ2aW5nIGVuZHBvaW50XCIsXG4gICAgICBcIk5vIEdQVC9HZW1pbmkgZW5kcG9pbnQgaXMgZGVwbG95ZWQgaW4gdGhpcyB3b3Jrc3BhY2UgYW5kIHRoZSBzY3JhcGUgZmFsbGJhY2sgaXMgXCIgK1xuICAgICAgICBgZGlzYWJsZWQuIERlcGxveSBhIHN1cHBvcnRlZCBlbmRwb2ludCwgc2V0IG1vZGVsIG9yICR7TU9ERUxfRU5WfSwgb3IgZW5hYmxlIHRoZSBgICtcbiAgICAgICAgXCJmYWxsYmFjayAoV0VCX1NFQVJDSF9TQ1JBUEVfRkFMTEJBQ0s9MSkuXCIsXG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0IHByb3ZpZGVyID0gZGV0ZWN0V2ViU2VhcmNoUHJvdmlkZXIobW9kZWxJZCkhOyAvLyBndWFyYW50ZWVkIGJ5IHJlc29sdmUgc3RlcFxuICBjb25zdCBzcGVjID0gd2ViU2VhcmNoVG9vbFNwZWMocHJvdmlkZXIsIGNvbmZpZy53ZWJTZWFyY2hUb29scyk7XG5cbiAgY29uc3QgdXJsID1cbiAgICBzcGVjLmFwaSA9PT0gXCJyZXNwb25zZXNcIiA/IGludm9rZS5yZXNwb25zZXNVcmwoY3R4Lmhvc3QpIDogaW52b2tlLmNoYXRDb21wbGV0aW9uc1VybChjdHguaG9zdCk7XG4gIGNvbnN0IGJvZHkgPVxuICAgIHNwZWMuYXBpID09PSBcInJlc3BvbnNlc1wiXG4gICAgICA/IHtcbiAgICAgICAgICBtb2RlbDogbW9kZWxJZCxcbiAgICAgICAgICBpbnB1dDogW3sgcm9sZTogXCJ1c2VyXCIsIGNvbnRlbnQ6IHJlcXVlc3QucXVlcnkgfV0sXG4gICAgICAgICAgdG9vbHM6IFtzcGVjLnRvb2xdLFxuICAgICAgICB9XG4gICAgICA6IHtcbiAgICAgICAgICBtb2RlbDogbW9kZWxJZCxcbiAgICAgICAgICBtZXNzYWdlczogW3sgcm9sZTogXCJ1c2VyXCIsIGNvbnRlbnQ6IHJlcXVlc3QucXVlcnkgfV0sXG4gICAgICAgICAgdG9vbHM6IFtzcGVjLnRvb2xdLFxuICAgICAgICB9O1xuXG4gIGNvbnN0IHBheWxvYWQgPSBhd2FpdCBwb3N0U2VydmluZyhcbiAgICBjdHgsXG4gICAgdXJsLFxuICAgIGJvZHksXG4gICAgY29uZmlnLFxuICAgIFtcIndlYi1zZWFyY2hcIiwgXCJzZXJ2aW5nXCIsIHNwZWMuYXBpLCBtb2RlbElkLCByZXF1ZXN0LnF1ZXJ5XSxcbiAgICBzaWduYWwsXG4gICk7XG5cbiAgY29uc3QgeyBhbnN3ZXIsIGNpdGF0aW9ucyB9ID1cbiAgICBzcGVjLmFwaSA9PT0gXCJyZXNwb25zZXNcIiA/IGZyb21SZXNwb25zZXNQYXlsb2FkKHBheWxvYWQpIDogZnJvbUNoYXRQYXlsb2FkKHBheWxvYWQpO1xuXG4gIGNvbnN0IHBlcm1pdHRlZCA9IGNpdGF0aW9ucy5maWx0ZXIoKGMpID0+IGNvbmZpZy5hbGxvd0xpc3QuYWxsb3dzKGMudXJsKSk7XG4gIGNvbnN0IGRyb3BwZWQgPSBjaXRhdGlvbnMubGVuZ3RoIC0gcGVybWl0dGVkLmxlbmd0aDtcbiAgY29uc3QgdHJpbW1lZCA9IHBlcm1pdHRlZC5zbGljZSgwLCBjb25maWcubWF4Q2l0YXRpb25zKTtcbiAgbG9nZ2VyLmRlYnVnKFwic2VhcmNoZWRcIiwge1xuICAgIHF1ZXJ5OiByZXF1ZXN0LnF1ZXJ5LFxuICAgIG1vZGVsOiBtb2RlbElkLFxuICAgIHByb3ZpZGVyLFxuICAgIGNpdGF0aW9uczogY2l0YXRpb25zLmxlbmd0aCxcbiAgICAuLi4oZHJvcHBlZCA+IDAgPyB7IGZpbHRlcmVkOiBkcm9wcGVkIH0gOiB7fSksXG4gICAgcmV0dXJuZWQ6IHRyaW1tZWQubGVuZ3RoLFxuICB9KTtcblxuICByZXR1cm4geyBxdWVyeTogcmVxdWVzdC5xdWVyeSwgYW5zd2VyLCBjaXRhdGlvbnM6IHRyaW1tZWQsIG1vZGVsOiBtb2RlbElkIH07XG59XG4iXX0=
252
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlYXJjaC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUJHO0FBRUgsT0FBTyxFQUNMLGtCQUFrQixFQUNsQixlQUFlLEVBQ2YsY0FBYyxFQUNkLG1CQUFtQixFQUNuQixlQUFlLEdBQ2hCLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDNUQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxlQUFlLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsU0FBUyxFQUFFLG9CQUFvQixFQUFnQyxNQUFNLGFBQWEsQ0FBQztBQUM1RixPQUFPLEVBQUUsY0FBYyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxpQkFBaUIsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRTNDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFHOUMsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0FBQy9DLE1BQU0sRUFBRSxZQUFZLEVBQUUsR0FBRyxPQUFPLENBQUM7QUFDakMsTUFBTSxFQUFFLG9CQUFvQixFQUFFLEdBQUcsT0FBTyxDQUFDO0FBRXpDOzs7OztHQUtHO0FBQ0gsTUFBTSx3QkFBd0IsR0FBRyxDQUFDLENBQUM7QUFFbkMsK0VBQStFO0FBQy9FLE1BQU0sbUJBQW1CLEdBQUcsR0FBRyxDQUFDO0FBRWhD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QU0sQ0FDUCxDQUFDO0lBRUYsTUFBTSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsR0FDekIsSUFBSSxDQUFDLEdBQUcsS0FBSyxXQUFXLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUM7SUFFdEYsTUFBTSxTQUFTLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDMUUsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDO0lBQ3BELE1BQU0sT0FBTyxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUN4RCxNQUFNLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRTtRQUN2QixLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUs7UUFDcEIsS0FBSyxFQUFFLE9BQU87UUFDZCxRQUFRO1FBQ1IsU0FBUyxFQUFFLFNBQVMsQ0FBQyxNQUFNO1FBQzNCLEdBQUcsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQzdDLFFBQVEsRUFBRSxPQUFPLENBQUMsTUFBTTtLQUN6QixDQUFDLENBQUM7SUFFSCxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxDQUFDO0FBQzlFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFdlYiBzZWFyY2ggYmFja2VkIGJ5IHRoZSBEYXRhYnJpY2tzIE1vZGVsIFNlcnZpbmcgbmF0aXZlIHdlYi1zZWFyY2ggdG9vbC5cbiAqXG4gKiBVbmxpa2UgYSBzY3JhcGluZyBjbGllbnQsIHRoZSBzZWFyY2ggcnVucyAqaW5zaWRlKiBhIG1vZGVsIGNhbGw6IHdlIFBPU1QgdGhlXG4gKiBxdWVyeSB0byB0aGUgd29ya3NwYWNlJ3Mgc2VydmluZyBlbmRwb2ludCB3aXRoIHRoZSBwcm92aWRlcidzIHdlYi1zZWFyY2hcbiAqIHRvb2wgc3BlYyBhdHRhY2hlZCwgYW5kIHRoZSBtb2RlbCBzZWFyY2hlcyB0aGUgd2ViIGFuZCB3cml0ZXMgdGhlIGFuc3dlci5cbiAqIHtAbGluayBydW5XZWJTZWFyY2h9OlxuICpcbiAqICAgMS4gUmVzb2x2ZXMgYSB3ZWItc2VhcmNoLWNhcGFibGUgbW9kZWwgSU5ERVBFTkRFTlRMWSBvZiB0aGUgY2FsbGluZ1xuICogICAgICBhZ2VudCdzIGNoYXQgbW9kZWwgKHRoZSBhZ2VudCBtYXkgcnVuIG9uIGEgbW9kZWwgd2l0aG91dCB3ZWIgc2VhcmNoKS5cbiAqICAgICAgQSBwaW5uZWQgYG1vZGVsYCAocmVxdWVzdCBvciBjb25maWcpIGlzIGZ1enp5LW1hdGNoZWQ7IG90aGVyd2lzZSB0aGVcbiAqICAgICAgY29uZmlndXJlZCBmYWxsYmFjayBvcmRlciAoR2VtaW5pLCB0aGVuIEdQVCkgaXMgd2Fsa2VkIHRvIHRoZSBmaXJzdFxuICogICAgICB3ZWItc2VhcmNoLWNhcGFibGUgZW5kcG9pbnQgdGhhdCBleGlzdHMuIEFuIGV4cGxpY2l0IGJ1dCB1bnN1cHBvcnRlZFxuICogICAgICBtb2RlbCBpcyBhIGhhcmQgZXJyb3IsIG5vdCBhIHNpbGVudCBmYWxsYmFjay5cbiAqICAgMi4gUE9TVHMgdG8gdGhlIHByb3ZpZGVyJ3MgUkVTVCBzdXJmYWNlIChgL3NlcnZpbmctZW5kcG9pbnRzL3Jlc3BvbnNlc2BcbiAqICAgICAgZm9yIE9wZW5BSSwgYC9zZXJ2aW5nLWVuZHBvaW50cy9jaGF0L2NvbXBsZXRpb25zYCBmb3IgR2VtaW5pKSB3aXRoIHRoZVxuICogICAgICBtYXBwZWQgdG9vbCBzcGVjLCBhdXRoZW50aWNhdGVkIGFzIHRoZSBPQk8gY2FsbGVyLlxuICogICAzLiBSZXR1cm5zIHRoZSBzeW50aGVzaXplZCBhbnN3ZXIgcGx1cyB0aGUgY2l0ZWQgc291cmNlcywgd2l0aCBjaXRhdGlvbnNcbiAqICAgICAgc2lsZW50bHkgZmlsdGVyZWQgdGhyb3VnaCB0aGUgY29uZmlndXJlZCBVUkwgYWxsb3ctbGlzdC5cbiAqXG4gKiBAbW9kdWxlXG4gKi9cblxuaW1wb3J0IHtcbiAgQ29uZmlndXJhdGlvbkVycm9yLFxuICBDb25uZWN0aW9uRXJyb3IsXG4gIEV4ZWN1dGlvbkVycm9yLFxuICBnZXRFeGVjdXRpb25Db250ZXh0LFxuICBWYWxpZGF0aW9uRXJyb3IsXG59IGZyb20gXCJAZGF0YWJyaWNrcy9hcHBraXRcIjtcbmltcG9ydCB7IGludm9rZSwgcmVzb2x2ZSwgc2VydmluZyB9IGZyb20gXCJAZGJ4LXRvb2xzL21vZGVsXCI7XG5pbXBvcnQgeyBsb2csIG9iamVjdCwgc3RyaW5nIH0gZnJvbSBcIkBkYngtdG9vbHMvc2hhcmVkLWNvcmVcIjtcbmltcG9ydCB7IG9wZW5haUNoYXQsIG9wZW5haVJlc3BvbnNlcyB9IGZyb20gXCJAZGJ4LXRvb2xzL3NoYXJlZC1tb2RlbFwiO1xuaW1wb3J0IHsgTU9ERUxfRU5WLCBTRVJWSU5HX0VORFBPSU5UX0VOViwgdHlwZSBSZXNvbHZlZFdlYlNlYXJjaENvbmZpZyB9IGZyb20gXCIuL2NvbmZpZy50c1wiO1xuaW1wb3J0IHsgdG9DYWxsU2V0dGluZ3MsIHdlYlNlYXJjaEV4ZWN1dGVEZWZhdWx0cyB9IGZyb20gXCIuL2RlZmF1bHRzLnRzXCI7XG5pbXBvcnQgeyBkZXRlY3RXZWJTZWFyY2hQcm92aWRlciwgc3VwcG9ydHNXZWJTZWFyY2gsIHdlYlNlYXJjaFRvb2xTcGVjIH0gZnJvbSBcIi4vcHJvdmlkZXIudHNcIjtcbmltcG9ydCB7IGV4ZWN1dGVSZWFkIH0gZnJvbSBcIi4vcnVudGltZS50c1wiO1xuaW1wb3J0IHR5cGUgeyBXZWJTZWFyY2hDaXRhdGlvbiwgV2ViU2VhcmNoUmVxdWVzdCwgV2ViU2VhcmNoUmVzdWx0IH0gZnJvbSBcIi4vc2NoZW1hLnRzXCI7XG5pbXBvcnQgeyBydW5TY3JhcGVTZWFyY2ggfSBmcm9tIFwiLi9zY3JhcGUudHNcIjtcblxudHlwZSBXb3Jrc3BhY2VDbGllbnRMaWtlID0gc2VydmluZy5Xb3Jrc3BhY2VDbGllbnRMaWtlO1xuY29uc3QgbG9nZ2VyID0gbG9nLmxvZ2dlcihcIndlYi1zZWFyY2gvc2VhcmNoXCIpO1xuY29uc3QgeyByZXNvbHZlTW9kZWwgfSA9IHJlc29sdmU7XG5jb25zdCB7IGxpc3RTZXJ2aW5nRW5kcG9pbnRzIH0gPSBzZXJ2aW5nO1xuXG4vKipcbiAqIEhvdyBkZWVwIHRoZSBncm91bmRpbmctbWV0YWRhdGEgd2FsayBkZXNjZW5kcy4gR2VtaW5pIG5lc3RzIGl0cyBzb3VyY2VzIGFcbiAqIGhhbmRmdWwgb2YgbGV2ZWxzIGRvd24gYW5kIHRoZSBzaGFwZSB2YXJpZXMgYnkgbW9kZWwgdmVyc2lvbiwgc28gdGhlIHdhbGtcbiAqIGlzIGdlbmVyaWM7IHRoZSBib3VuZCBpcyB3aGF0IGtlZXBzIGEgcGF0aG9sb2dpY2FsIHBheWxvYWQgZnJvbSB0dXJuaW5nIGl0XG4gKiBpbnRvIGEgZnVsbCB0cmF2ZXJzYWwgb2YgdGhlIHJlc3BvbnNlLlxuICovXG5jb25zdCBNQVhfR1JPVU5ESU5HX1dBTEtfREVQVEggPSA2O1xuXG4vKiogTG93ZXN0IEhUVFAgc3RhdHVzIHRyZWF0ZWQgYXMgYSBzZXJ2ZXItc2lkZSAocmV0cnlhYmxlKSBzZXJ2aW5nIGZhaWx1cmUuICovXG5jb25zdCBTRVJWRVJfRVJST1JfU1RBVFVTID0gNTAwO1xuXG4vKiogU3RhdHVzIE1vZGVsIFNlcnZpbmcgdXNlcyB0byBzaGVkIGxvYWQ7IHJldHJ5YWJsZSBsaWtlIGEgNXh4LiAqL1xuY29uc3QgUkFURV9MSU1JVEVEX1NUQVRVUyA9IDQyOTtcblxuLyoqIENvbnRleHQgYSBzZWFyY2ggbmVlZHMgZnJvbSB0aGUgY2FsbGVyOiB0aGUgT0JPIGNsaWVudCArIHdvcmtzcGFjZSBob3N0LiAqL1xuZXhwb3J0IGludGVyZmFjZSBXZWJTZWFyY2hDb250ZXh0IHtcbiAgY2xpZW50OiBXb3Jrc3BhY2VDbGllbnRMaWtlO1xuICBob3N0OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVzb2x2ZSB0aGUgT0JPIHdvcmtzcGFjZSBjbGllbnQgKyBob3N0IGZyb20gdGhlIGFjdGl2ZSBBcHBLaXQgZXhlY3V0aW9uXG4gKiBjb250ZXh0LiBJbnNpZGUgYGFnZW50LnN0cmVhbWAncyBgYXNVc2VyKHJlcSlgIHNjb3BlIHRoaXMgaGl0cyB0aGUgc2VydmluZ1xuICogZW5kcG9pbnQgYXMgdGhlIHJlcXVlc3RpbmcgdXNlcjsgb3V0c2lkZSBhIHVzZXIgY29udGV4dCBBcHBLaXQgZmFsbHMgYmFjayB0b1xuICogdGhlIHNlcnZpY2UgcHJpbmNpcGFsLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVzb2x2ZVdlYlNlYXJjaENvbnRleHQoKTogUHJvbWlzZTxXZWJTZWFyY2hDb250ZXh0PiB7XG4gIGNvbnN0IGN0eCA9IGdldEV4ZWN1dGlvbkNvbnRleHQoKTtcbiAgY29uc3QgaG9zdCA9IChhd2FpdCBjdHguY2xpZW50LmNvbmZpZy5nZXRIb3N0KCkpLnRvU3RyaW5nKCk7XG4gIHJldHVybiB7IGNsaWVudDogY3R4LmNsaWVudCwgaG9zdCB9O1xufVxuXG4vKipcbiAqIFJlc29sdmUgYSB3ZWItc2VhcmNoLWNhcGFibGUgbW9kZWwgYWdhaW5zdCB0aGUgTElWRSB3b3Jrc3BhY2UgY2F0YWxvZ3VlIC0gc29cbiAqIHdlIG5ldmVyIHJldHVybiBhbiBlbmRwb2ludCBpZCB0aGF0IGlzbid0IGFjdHVhbGx5IGRlcGxveWVkICh0aGUgXCJlbmRwb2ludFxuICogZG9lcyBub3QgZXhpc3RcIiBmYWlsdXJlIGEgaGFyZGNvZGVkIGZhbGxiYWNrIGlkIHdvdWxkIGNhdXNlKS4gUmV1c2VzXG4gKiBgQGRieC10b29scy9tb2RlbGAncyBleGlzdGluZyBjYXRhbG9ndWUgKyByZXNvbHZlciByYXRoZXIgdGhhbiBhIGN1c3RvbVxuICogbG9va3VwOiB7QGxpbmsgbGlzdFNlcnZpbmdFbmRwb2ludHN9IGxpc3RzIHRoZSBlbmRwb2ludHMgKGNhY2hlZCksIGFuZCB3ZVxuICogcmVzdHJpY3QgdGhlIGNhbmRpZGF0ZSBzZXQgdG8gdGhlIHtAbGluayBzdXBwb3J0c1dlYlNlYXJjaH0gb25lcyBiZWZvcmVcbiAqIHtAbGluayByZXNvbHZlTW9kZWx9IGZ1enp5LXBpY2tzIHdpdGhpbiBpdC5cbiAqXG4gKiBSZXR1cm5zIHRoZSBjaG9zZW4gZW5kcG9pbnQgaWQsIG9yIGBudWxsYCB3aGVuIHRoZSB3b3Jrc3BhY2UgaGFzIG5vXG4gKiB3ZWItc2VhcmNoLWNhcGFibGUgbW9kZWwgZGVwbG95ZWQgKHRoZSBjYWxsZXIgdGhlbiB1c2VzIHRoZSBzY3JhcGVcbiAqIGZhbGxiYWNrKS4gQSBwaW4gdGhlIGNhbGxlciBjaG9zZSBkZWxpYmVyYXRlbHkgLSB0aGUgcmVxdWVzdCdzIGBtb2RlbGAsIHRoZVxuICogcGx1Z2luJ3MgYG1vZGVsYCwgb3IgYFdFQl9TRUFSQ0hfTU9ERUxgIC0gdGhyb3dzIHdoZW4gaXQgcmVzb2x2ZXMgdG8gYW5cbiAqIHVuc3VwcG9ydGVkIC8gYWJzZW50IGVuZHBvaW50LCBzbyBhIGJhZCBwaW4gc3VyZmFjZXMgcmF0aGVyIHRoYW4gc2lsZW50bHlcbiAqIGRlZ3JhZGluZy4gQSBwaW4gaW5oZXJpdGVkIGZyb20gdGhlIHNoYXJlZCBgREFUQUJSSUNLU19TRVJWSU5HX0VORFBPSU5UX05BTUVgXG4gKiBiaW5kaW5nIGlzIG9ubHkgYSBwcmVmZXJlbmNlOiB0aGF0IGVuZHBvaW50IGlzIHRoZSBhcHAncyBzZXJ2aW5nIGVuZHBvaW50LFxuICogbm90IG5lY2Vzc2FyaWx5IGEgd2ViLXNlYXJjaC1jYXBhYmxlIG9uZSwgc28gYW4gdW51c2FibGUgdmFsdWUgZmFsbHMgdGhyb3VnaFxuICogdG8gdGhlIGZhbGxiYWNrIG9yZGVyLlxuICovXG5hc3luYyBmdW5jdGlvbiByZXNvbHZlV2ViU2VhcmNoTW9kZWwoXG4gIGN0eDogV2ViU2VhcmNoQ29udGV4dCxcbiAgY29uZmlnOiBSZXNvbHZlZFdlYlNlYXJjaENvbmZpZyxcbiAgcmVxdWVzdGVkOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4pOiBQcm9taXNlPHN0cmluZyB8IG51bGw+IHtcbiAgY29uc3QgZW5kcG9pbnRzID0gYXdhaXQgbGlzdFNlcnZpbmdFbmRwb2ludHMoY3R4LmNsaWVudCwgY3R4Lmhvc3QpO1xuICAvLyBPbmx5IGRlcGxveWVkLCB3ZWItc2VhcmNoLWNhcGFibGUgZW5kcG9pbnRzIGFyZSBjYW5kaWRhdGVzLlxuICBjb25zdCBjYXBhYmxlID0gZW5kcG9pbnRzLmZpbHRlcigoZSkgPT4gc3VwcG9ydHNXZWJTZWFyY2goZS5uYW1lKSk7XG4gIGNvbnN0IHBpbm5lZCA9IHJlcXVlc3RlZCA/PyBjb25maWcubW9kZWw7XG4gIGNvbnN0IHBpbklzRGVsaWJlcmF0ZSA9XG4gICAgcmVxdWVzdGVkICE9PSB1bmRlZmluZWQgfHwgY29uZmlnLm1vZGVsU291cmNlID09PSBcImNvbmZpZ1wiIHx8IGNvbmZpZy5tb2RlbFNvdXJjZSA9PT0gTU9ERUxfRU5WO1xuXG4gIGlmIChwaW5uZWQpIHtcbiAgICAvLyBSZXNvbHZlIHRoZSBleHBsaWNpdCBhc2sgd2l0aGluIHRoZSBjYXBhYmxlIHNldCBvbmx5LlxuICAgIGNvbnN0IHsgbW9kZWxJZCB9ID0gcmVzb2x2ZU1vZGVsKGNhcGFibGUsIHtcbiAgICAgIGV4cGxpY2l0OiBwaW5uZWQsXG4gICAgICBmdXp6eTogY29uZmlnLmZ1enp5LFxuICAgICAgdGhyZXNob2xkOiBjb25maWcuZnV6enlUaHJlc2hvbGQsXG4gICAgfSk7XG4gICAgLy8gcmVzb2x2ZU1vZGVsIHJldHVybnMgdGhlIGlucHV0IHZlcmJhdGltIG9uIG5vIG1hdGNoOyByZXF1aXJlIGl0IHRvIGJlIGFcbiAgICAvLyByZWFsIGNhcGFibGUgZW5kcG9pbnQgc28gYSBiYWQgcGluIGlzIGEgY2xlYXIgZXJyb3IsIG5vdCBhIHBoYW50b20gY2FsbC5cbiAgICBjb25zdCB1c2FibGUgPSBjYXBhYmxlLnNvbWUoKGUpID0+IGUubmFtZSA9PT0gbW9kZWxJZCkgJiYgc3VwcG9ydHNXZWJTZWFyY2gobW9kZWxJZCk7XG4gICAgaWYgKHVzYWJsZSkgcmV0dXJuIG1vZGVsSWQ7XG4gICAgY29uc3QgZGVwbG95ZWQgPSBjYXBhYmxlLm1hcCgoZSkgPT4gZS5uYW1lKS5qb2luKFwiLCBcIikgfHwgXCJub25lXCI7XG4gICAgaWYgKCFwaW5Jc0RlbGliZXJhdGUpIHtcbiAgICAgIGxvZ2dlci5pbmZvKFwic2hhcmVkLWVuZHBvaW50LW5vdC13ZWItY2FwYWJsZVwiLCB7XG4gICAgICAgIGVudlZhcjogU0VSVklOR19FTkRQT0lOVF9FTlYsXG4gICAgICAgIGRlcGxveWVkLFxuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmIChyZXF1ZXN0ZWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgVmFsaWRhdGlvbkVycm9yLmludmFsaWRWYWx1ZShcbiAgICAgICAgXCJtb2RlbFwiLFxuICAgICAgICBwaW5uZWQsXG4gICAgICAgIGBhIGRlcGxveWVkIHdlYi1zZWFyY2gtY2FwYWJsZSBlbmRwb2ludCAoZGVwbG95ZWQ6ICR7ZGVwbG95ZWR9KWAsXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBDb25maWd1cmF0aW9uRXJyb3IucmVzb3VyY2VOb3RGb3VuZChcbiAgICAgICAgXCJXZWItc2VhcmNoLWNhcGFibGUgc2VydmluZyBlbmRwb2ludFwiLFxuICAgICAgICBgRGVwbG95ZWQgd2ViLXNlYXJjaC1jYXBhYmxlIGVuZHBvaW50czogJHtkZXBsb3llZH0uIFNldCBtb2RlbCBvciAke01PREVMX0VOVn0gdG8gb25lIG9mIHRoZW0uYCxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgaWYgKGNhcGFibGUubGVuZ3RoID09PSAwKSByZXR1cm4gbnVsbDtcblxuICAvLyBOb3RoaW5nIHVzYWJsZSBwaW5uZWQ6IHByZWZlciB0aGUgY29uZmlndXJlZCBmYWxsYmFjayBvcmRlciAoR2VtaW5pLCB0aGVuXG4gIC8vIEdQVCkgd2hlbiB0aG9zZSBpZHMgYXJlIGFjdHVhbGx5IGRlcGxveWVkOyBlbHNlIHRha2UgdGhlIGJlc3QgY2FwYWJsZVxuICAvLyBlbmRwb2ludC5cbiAgY29uc3QgeyBtb2RlbElkIH0gPSByZXNvbHZlTW9kZWwoY2FwYWJsZSwge1xuICAgIGZhbGxiYWNrczogY29uZmlnLm1vZGVsRmFsbGJhY2tzLFxuICAgIGZ1enp5OiBjb25maWcuZnV6enksXG4gICAgdGhyZXNob2xkOiBjb25maWcuZnV6enlUaHJlc2hvbGQsXG4gIH0pO1xuICByZXR1cm4gY2FwYWJsZS5zb21lKChlKSA9PiBlLm5hbWUgPT09IG1vZGVsSWQpID8gbW9kZWxJZCA6IChjYXBhYmxlWzBdPy5uYW1lID8/IG51bGwpO1xufVxuXG4vKipcbiAqIFBPU1QgYSBzZXJ2aW5nIHJlcXVlc3QgYXMgdGhlIE9CTyBjYWxsZXIgYW5kIHJldHVybiB0aGUgcGFyc2VkIEpTT04gYm9keS5cbiAqXG4gKiBBdXRoIGhlYWRlcnMgYXJlIG1pbnRlZCBwZXIgY2FsbCBmcm9tIHRoZSBPQk8gY2xpZW50J3MgU0RLIGNvbmZpZywgd2hpY2hcbiAqIHJlZnJlc2hlcyB0aGUgdG9rZW4gd2hlbiBpdCBpcyBjbG9zZSB0byBleHBpcnksIHNvIHRoZSByZXF1ZXN0IGNhcnJpZXMgdGhlXG4gKiByZXF1ZXN0aW5nIHVzZXIncyBpZGVudGl0eS5cbiAqXG4gKiBUaGlzIGlzIHRoZSBvbmUgRGF0YWJyaWNrcyBjYWxsIGluIHRoZSByZXBvIHRoYXQgZG9lcyBub3QgZ28gdGhyb3VnaFxuICogYGFwaUNsaWVudC5yZXF1ZXN0YCArIGBkYXRhYnJpY2tzLnRvQ29udGV4dGAgKHdoaWNoIGRvZXMgZm9yd2FyZFxuICogY2FuY2VsbGF0aW9uKS4gUmV0cnkgY2xhc3NpZmljYXRpb24gaGVyZSBoYXMgdG8gZGlzdGluZ3Vpc2ggYSBsb2FkLXNoZWQgb3JcbiAqIHNlcnZlciBmYXVsdCBmcm9tIHRoaXMgcmVxdWVzdCdzIG93biA0eHgsIGFuZCBgZmV0Y2hgIGV4cG9zZXMgdGhlIEhUVFAgc3RhdHVzXG4gKiBkaXJlY3RseTsgdGhlIFNESyByYWlzZXMgYW4gYEFwaUVycm9yYCB0aGF0IGNhcnJpZXMgdGhlIHN0YXR1cyB1bmRlclxuICogaW5jb25zaXN0ZW50IGtleXMsIHdoaWNoIGlzIGd1ZXNzd29yayBieSBjb21wYXJpc29uLlxuICovXG5hc3luYyBmdW5jdGlvbiBwb3N0U2VydmluZyhcbiAgY3R4OiBXZWJTZWFyY2hDb250ZXh0LFxuICB1cmw6IHN0cmluZyxcbiAgYm9keTogdW5rbm93bixcbiAgY29uZmlnOiBSZXNvbHZlZFdlYlNlYXJjaENvbmZpZyxcbiAgY2FjaGVLZXk6IHJlYWRvbmx5IChzdHJpbmcgfCBudW1iZXIpW10sXG4gIHNpZ25hbD86IEFib3J0U2lnbmFsLFxuKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4ge1xuICBjb25zdCBwYXlsb2FkID0gYXdhaXQgZXhlY3V0ZVJlYWQoXG4gICAgXCJzZXJ2aW5nLXJlcXVlc3RcIixcbiAgICB0b0NhbGxTZXR0aW5ncyh3ZWJTZWFyY2hFeGVjdXRlRGVmYXVsdHMsIGNvbmZpZy50aW1lb3V0TXMsIGNhY2hlS2V5KSxcbiAgICBhc3luYyAoZXhlY3V0ZVNpZ25hbCk6IFByb21pc2U8dW5rbm93bj4gPT4ge1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaCh1cmwsIHtcbiAgICAgICAgbWV0aG9kOiBcIlBPU1RcIixcbiAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgIC4uLihhd2FpdCBpbnZva2UuYXV0aEhlYWRlcnMoY3R4LmNsaWVudCkpLFxuICAgICAgICAgIEFjY2VwdDogXCJhcHBsaWNhdGlvbi9qc29uXCIsXG4gICAgICAgICAgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIsXG4gICAgICAgIH0sXG4gICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KGJvZHkpLFxuICAgICAgICAuLi4oZXhlY3V0ZVNpZ25hbCA/IHsgc2lnbmFsOiBleGVjdXRlU2lnbmFsIH0gOiB7fSksXG4gICAgICB9KTtcbiAgICAgIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICAgICAgLy8gTG9hZC1zaGVkZGluZyBhbmQgc2VydmVyIGZhdWx0cyBhcmUgd29ydGggYW5vdGhlciBhdHRlbXB0OyBhIDR4eCBpc1xuICAgICAgICAvLyB0aGlzIHJlcXVlc3QncyBvd24gcHJvYmxlbSwgc28gaXQgbXVzdCBub3QgYmUgcmV0cmllZC5cbiAgICAgICAgY29uc3QgcmV0cnlhYmxlID1cbiAgICAgICAgICByZXNwb25zZS5zdGF0dXMgPj0gU0VSVkVSX0VSUk9SX1NUQVRVUyB8fCByZXNwb25zZS5zdGF0dXMgPT09IFJBVEVfTElNSVRFRF9TVEFUVVM7XG4gICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBgd2ViLXNlYXJjaDogTW9kZWwgU2VydmluZyByZWplY3RlZCB0aGUgc2VhcmNoIHJlcXVlc3QgKEhUVFAgJHtyZXNwb25zZS5zdGF0dXN9KWA7XG4gICAgICAgIHRocm93IHJldHJ5YWJsZVxuICAgICAgICAgID8gbmV3IENvbm5lY3Rpb25FcnJvcihtZXNzYWdlLCB7IGNvbnRleHQ6IHsgc3RhdHVzOiByZXNwb25zZS5zdGF0dXMgfSB9KVxuICAgICAgICAgIDogbmV3IEV4ZWN1dGlvbkVycm9yKG1lc3NhZ2UsIHsgY29udGV4dDogeyBzdGF0dXM6IHJlc3BvbnNlLnN0YXR1cyB9IH0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3BvbnNlLmpzb24oKTtcbiAgICB9LFxuICAgIHNpZ25hbCxcbiAgKTtcbiAgcmV0dXJuIG9iamVjdC5pc1JlY29yZChwYXlsb2FkKSA/IHBheWxvYWQgOiB7fTtcbn1cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHJlc3BvbnNlIGV4dHJhY3Rpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbi8qKlxuICogRXh0cmFjdCBhbnN3ZXIgdGV4dCArIGNpdGF0aW9ucyBmcm9tIGFuIE9wZW5BSSBSZXNwb25zZXMgQVBJIHBheWxvYWQsIHZpYSB0aGVcbiAqIHNoYXJlZCByZWFkZXIgaW4gYEBkYngtdG9vbHMvc2hhcmVkLW1vZGVsYCAodGhlIHNhbWUgbW9kdWxlIHRoZSBtb2RlbC1wcm94eVxuICogdXNlcyB0byB0cmFuc2xhdGUgdGhlIFJlc3BvbnNlcyB3aXJlIGZvcm1hdCBpbiB0aGUgb3RoZXIgZGlyZWN0aW9uKS5cbiAqL1xuZnVuY3Rpb24gZnJvbVJlc3BvbnNlc1BheWxvYWQocGF5bG9hZDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiB7XG4gIGFuc3dlcjogc3RyaW5nO1xuICBjaXRhdGlvbnM6IFdlYlNlYXJjaENpdGF0aW9uW107XG59IHtcbiAgY29uc3QgeyB0ZXh0LCBjaXRhdGlvbnMgfSA9IG9wZW5haVJlc3BvbnNlcy5yZWFkUmVzcG9uc2VzT3V0cHV0KHBheWxvYWQpO1xuICByZXR1cm4geyBhbnN3ZXI6IHRleHQsIGNpdGF0aW9ucyB9O1xufVxuXG4vKipcbiAqIEV4dHJhY3QgYW5zd2VyIHRleHQgKyBjaXRhdGlvbnMgZnJvbSBhIENoYXQgQ29tcGxldGlvbnMgcGF5bG9hZCAoR2VtaW5pIHZpYVxuICogYGdvb2dsZV9zZWFyY2hgKS4gVGhlIGFuc3dlciBpcyBgY2hvaWNlc1swXS5tZXNzYWdlLmNvbnRlbnRgOyBncm91bmRpbmdcbiAqIHNvdXJjZXMsIHdoZW4gcHJlc2VudCwgc3VyZmFjZSB1bmRlciBgY2hvaWNlc1swXS5tZXNzYWdlYCBncm91bmRpbmdcbiAqIG1ldGFkYXRhIChiZXN0LWVmZm9ydCAtIHNoYXBlcyB2YXJ5LCBzbyB3ZSBzY2FuIGZvciB1cmwtYmVhcmluZyBlbnRyaWVzKS5cbiAqL1xuZnVuY3Rpb24gZnJvbUNoYXRQYXlsb2FkKHBheWxvYWQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KToge1xuICBhbnN3ZXI6IHN0cmluZztcbiAgY2l0YXRpb25zOiBXZWJTZWFyY2hDaXRhdGlvbltdO1xufSB7XG4gIGNvbnN0IGNob2ljZXMgPSBBcnJheS5pc0FycmF5KHBheWxvYWQuY2hvaWNlcykgPyBwYXlsb2FkLmNob2ljZXMgOiBbXTtcbiAgY29uc3QgZmlyc3QgPSBjaG9pY2VzWzBdO1xuICBjb25zdCBtZXNzYWdlID0gb2JqZWN0LmlzUmVjb3JkKGZpcnN0KSAmJiBvYmplY3QuaXNSZWNvcmQoZmlyc3QubWVzc2FnZSkgPyBmaXJzdC5tZXNzYWdlIDoge307XG4gIGNvbnN0IGFuc3dlciA9IG9wZW5haUNoYXQuY2hhdENvbnRlbnRUb1RleHQobWVzc2FnZS5jb250ZW50KTtcbiAgY29uc3QgY2l0YXRpb25zOiBXZWJTZWFyY2hDaXRhdGlvbltdID0gW107XG4gIC8vIEJlc3QtZWZmb3J0IGdyb3VuZGluZyBleHRyYWN0aW9uOiB3YWxrIGFueSBuZXN0ZWQgb2JqZWN0IGZvciB7dXJpfHVybCx0aXRsZX0uXG4gIGNvbnN0IHNlZW4gPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgY29uc3QgdmlzaXQgPSAodjogdW5rbm93biwgZGVwdGg6IG51bWJlcik6IHZvaWQgPT4ge1xuICAgIGlmIChkZXB0aCA+IE1BWF9HUk9VTkRJTkdfV0FMS19ERVBUSCB8fCAhb2JqZWN0LmlzUmVjb3JkKHYpKSByZXR1cm47XG4gICAgY29uc3QgdXJsID0gc3RyaW5nLnRyaW1Ub0VtcHR5KHYudXJsKSB8fCBzdHJpbmcudHJpbVRvRW1wdHkodi51cmkpO1xuICAgIGlmICh1cmwgJiYgIXNlZW4uaGFzKHVybCkpIHtcbiAgICAgIHNlZW4uYWRkKHVybCk7XG4gICAgICBjb25zdCB0aXRsZSA9IHN0cmluZy50cmltVG9FbXB0eSh2LnRpdGxlKTtcbiAgICAgIGNpdGF0aW9ucy5wdXNoKHsgdXJsLCAuLi4odGl0bGUgPyB7IHRpdGxlIH0gOiB7fSkgfSk7XG4gICAgfVxuICAgIGZvciAoY29uc3QgdmFsIG9mIE9iamVjdC52YWx1ZXModikpIHtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbCkpIHZhbC5mb3JFYWNoKCh4KSA9PiB2aXNpdCh4LCBkZXB0aCArIDEpKTtcbiAgICAgIGVsc2UgaWYgKHZhbCAmJiB0eXBlb2YgdmFsID09PSBcIm9iamVjdFwiKSB2aXNpdCh2YWwsIGRlcHRoICsgMSk7XG4gICAgfVxuICB9O1xuICB2aXNpdChtZXNzYWdlLmdyb3VuZGluZ19tZXRhZGF0YSA/PyBtZXNzYWdlLmdyb3VuZGluZ01ldGFkYXRhLCAwKTtcbiAgcmV0dXJuIHsgYW5zd2VyLCBjaXRhdGlvbnMgfTtcbn1cblxuLyoqXG4gKiBSdW4gYSB3ZWIgc2VhcmNoLiBQcmVmZXJzIHRoZSBEYXRhYnJpY2tzIG5hdGl2ZSB3ZWItc2VhcmNoIHRvb2wgb24gYVxuICogZGVwbG95ZWQgR1BUL0dlbWluaSBlbmRwb2ludCAoc3ludGhlc2l6ZWQgYW5zd2VyICsgY2l0YXRpb25zKTsgd2hlbiB0aGVcbiAqIHdvcmtzcGFjZSBoYXMgbm8gc3VjaCBlbmRwb2ludCBBTkQgdGhlIHNjcmFwZSBmYWxsYmFjayBpcyBlbmFibGVkLCBmYWxsc1xuICogYmFjayB0byBhIER1Y2tEdWNrR28gc2NyYXBlIHNvIHRoZSB0b29sIHN0aWxsIHJldHVybnMgcmVzdWx0cyBpbnN0ZWFkIG9mXG4gKiBlcnJvcmluZy4gQ2l0YXRpb25zIGFyZSBmaWx0ZXJlZCB0aHJvdWdoIHRoZSBjb25maWd1cmVkIFVSTCBhbGxvdy1saXN0LlxuICpcbiAqIGBzaWduYWxgIGNhbmNlbHMgdGhlIHdob2xlIGNhbGwsIGluY2x1ZGluZyB0aGUgaW4tZmxpZ2h0IHNlcnZpbmcgcmVxdWVzdC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJ1bldlYlNlYXJjaChcbiAgcmVxdWVzdDogV2ViU2VhcmNoUmVxdWVzdCxcbiAgY29uZmlnOiBSZXNvbHZlZFdlYlNlYXJjaENvbmZpZyxcbiAgY3R4OiBXZWJTZWFyY2hDb250ZXh0LFxuICBzaWduYWw/OiBBYm9ydFNpZ25hbCxcbik6IFByb21pc2U8V2ViU2VhcmNoUmVzdWx0PiB7XG4gIGNvbnN0IG1vZGVsSWQgPSBhd2FpdCByZXNvbHZlV2ViU2VhcmNoTW9kZWwoY3R4LCBjb25maWcsIHJlcXVlc3QubW9kZWwpO1xuXG4gIGlmIChtb2RlbElkID09PSBudWxsKSB7XG4gICAgLy8gTm8gbmF0aXZlIHdlYi1zZWFyY2ggbW9kZWwgZGVwbG95ZWQgaW4gdGhpcyB3b3Jrc3BhY2UuXG4gICAgaWYgKGNvbmZpZy5zY3JhcGVGYWxsYmFjaykge1xuICAgICAgbG9nZ2VyLmluZm8oXCJuby1uYXRpdmUtbW9kZWw6c2NyYXBlLWZhbGxiYWNrXCIsIHsgcXVlcnk6IHJlcXVlc3QucXVlcnkgfSk7XG4gICAgICByZXR1cm4gcnVuU2NyYXBlU2VhcmNoKHJlcXVlc3QsIGNvbmZpZywgc2lnbmFsKTtcbiAgICB9XG4gICAgdGhyb3cgQ29uZmlndXJhdGlvbkVycm9yLnJlc291cmNlTm90Rm91bmQoXG4gICAgICBcIldlYi1zZWFyY2gtY2FwYWJsZSBzZXJ2aW5nIGVuZHBvaW50XCIsXG4gICAgICBcIk5vIEdQVC9HZW1pbmkgZW5kcG9pbnQgaXMgZGVwbG95ZWQgaW4gdGhpcyB3b3Jrc3BhY2UgYW5kIHRoZSBzY3JhcGUgZmFsbGJhY2sgaXMgXCIgK1xuICAgICAgICBgZGlzYWJsZWQuIERlcGxveSBhIHN1cHBvcnRlZCBlbmRwb2ludCwgc2V0IG1vZGVsIG9yICR7TU9ERUxfRU5WfSwgb3IgZW5hYmxlIHRoZSBgICtcbiAgICAgICAgXCJmYWxsYmFjayAoV0VCX1NFQVJDSF9TQ1JBUEVfRkFMTEJBQ0s9MSkuXCIsXG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0IHByb3ZpZGVyID0gZGV0ZWN0V2ViU2VhcmNoUHJvdmlkZXIobW9kZWxJZCkhOyAvLyBndWFyYW50ZWVkIGJ5IHJlc29sdmUgc3RlcFxuICBjb25zdCBzcGVjID0gd2ViU2VhcmNoVG9vbFNwZWMocHJvdmlkZXIsIGNvbmZpZy53ZWJTZWFyY2hUb29scyk7XG5cbiAgY29uc3QgdXJsID1cbiAgICBzcGVjLmFwaSA9PT0gXCJyZXNwb25zZXNcIiA/IGludm9rZS5yZXNwb25zZXNVcmwoY3R4Lmhvc3QpIDogaW52b2tlLmNoYXRDb21wbGV0aW9uc1VybChjdHguaG9zdCk7XG4gIGNvbnN0IGJvZHkgPVxuICAgIHNwZWMuYXBpID09PSBcInJlc3BvbnNlc1wiXG4gICAgICA/IHtcbiAgICAgICAgICBtb2RlbDogbW9kZWxJZCxcbiAgICAgICAgICBpbnB1dDogW3sgcm9sZTogXCJ1c2VyXCIsIGNvbnRlbnQ6IHJlcXVlc3QucXVlcnkgfV0sXG4gICAgICAgICAgdG9vbHM6IFtzcGVjLnRvb2xdLFxuICAgICAgICB9XG4gICAgICA6IHtcbiAgICAgICAgICBtb2RlbDogbW9kZWxJZCxcbiAgICAgICAgICBtZXNzYWdlczogW3sgcm9sZTogXCJ1c2VyXCIsIGNvbnRlbnQ6IHJlcXVlc3QucXVlcnkgfV0sXG4gICAgICAgICAgdG9vbHM6IFtzcGVjLnRvb2xdLFxuICAgICAgICB9O1xuXG4gIGNvbnN0IHBheWxvYWQgPSBhd2FpdCBwb3N0U2VydmluZyhcbiAgICBjdHgsXG4gICAgdXJsLFxuICAgIGJvZHksXG4gICAgY29uZmlnLFxuICAgIFtcIndlYi1zZWFyY2hcIiwgXCJzZXJ2aW5nXCIsIHNwZWMuYXBpLCBtb2RlbElkLCByZXF1ZXN0LnF1ZXJ5XSxcbiAgICBzaWduYWwsXG4gICk7XG5cbiAgY29uc3QgeyBhbnN3ZXIsIGNpdGF0aW9ucyB9ID1cbiAgICBzcGVjLmFwaSA9PT0gXCJyZXNwb25zZXNcIiA/IGZyb21SZXNwb25zZXNQYXlsb2FkKHBheWxvYWQpIDogZnJvbUNoYXRQYXlsb2FkKHBheWxvYWQpO1xuXG4gIGNvbnN0IHBlcm1pdHRlZCA9IGNpdGF0aW9ucy5maWx0ZXIoKGMpID0+IGNvbmZpZy5hbGxvd0xpc3QuYWxsb3dzKGMudXJsKSk7XG4gIGNvbnN0IGRyb3BwZWQgPSBjaXRhdGlvbnMubGVuZ3RoIC0gcGVybWl0dGVkLmxlbmd0aDtcbiAgY29uc3QgdHJpbW1lZCA9IHBlcm1pdHRlZC5zbGljZSgwLCBjb25maWcubWF4Q2l0YXRpb25zKTtcbiAgbG9nZ2VyLmRlYnVnKFwic2VhcmNoZWRcIiwge1xuICAgIHF1ZXJ5OiByZXF1ZXN0LnF1ZXJ5LFxuICAgIG1vZGVsOiBtb2RlbElkLFxuICAgIHByb3ZpZGVyLFxuICAgIGNpdGF0aW9uczogY2l0YXRpb25zLmxlbmd0aCxcbiAgICAuLi4oZHJvcHBlZCA+IDAgPyB7IGZpbHRlcmVkOiBkcm9wcGVkIH0gOiB7fSksXG4gICAgcmV0dXJuZWQ6IHRyaW1tZWQubGVuZ3RoLFxuICB9KTtcblxuICByZXR1cm4geyBxdWVyeTogcmVxdWVzdC5xdWVyeSwgYW5zd2VyLCBjaXRhdGlvbnM6IHRyaW1tZWQsIG1vZGVsOiBtb2RlbElkIH07XG59XG4iXX0=
package/lib/src/tool.d.ts CHANGED
@@ -20,7 +20,7 @@
20
20
  *
21
21
  * @module
22
22
  */
23
- import { type ApprovalGate, type ApprovalPolicy } from "./config.js";
23
+ import { type ApprovalGate, type ApprovalPolicy } from "./config.ts";
24
24
  /** Options shared by both web tools. */
25
25
  export interface WebSearchToolOptions {
26
26
  /** Override the tool id. */
package/lib/src/tool.js CHANGED
@@ -110,4 +110,4 @@ export function webFetchTool(opts = {}) {
110
110
  },
111
111
  });
112
112
  }
113
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90b29sLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FxQkc7QUFFSCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDckQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRWhELE9BQU8sRUFDTCxlQUFlLEVBQ2YsZ0JBQWdCLEdBR2pCLE1BQU0sVUFBVSxDQUFDO0FBQ2xCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDdEMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ2hELE9BQU8sRUFDTCxxQkFBcUIsRUFDckIsb0JBQW9CLEVBQ3BCLHNCQUFzQixFQUN0QixxQkFBcUIsRUFDckIsMEJBQTBCLEVBQzFCLDJCQUEyQixHQUM1QixNQUFNLFVBQVUsQ0FBQztBQUNsQixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsWUFBWSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRWpFOzs7OztHQUtHO0FBQ0gsU0FBUyxjQUFjLENBQXNCLE1BQVMsRUFBRSxLQUFjO0lBQ3BFLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdkMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNwQixNQUFNLGVBQWUsQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxzQ0FBc0MsQ0FBQyxDQUFDO0lBQzdGLENBQUM7SUFDRCxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUM7QUFDckIsQ0FBQztBQWNELGlGQUFpRjtBQUNqRixTQUFTLGFBQWEsQ0FBQyxJQUEwQjtJQUMvQyxPQUFPLElBQUksQ0FBQyxRQUFRLEtBQUssU0FBUztRQUNoQyxDQUFDLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxNQUFNLENBQUMsUUFBUTtRQUN2QyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ3RDLENBQUM7QUFFRDs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUNILE1BQU0sVUFBVSxhQUFhLENBQUMsT0FBNkIsRUFBRTtJQUMzRCxNQUFNLElBQUksR0FBRyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakMsT0FBTyxVQUFVLENBQUM7UUFDaEIsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFLElBQUksWUFBWTtRQUMzQixXQUFXLEVBQUUsMkJBQTJCO1FBQ3hDLFdBQVcsRUFBRSxzQkFBc0I7UUFDbkMsWUFBWSxFQUFFLHFCQUFxQjtRQUNuQyx5RUFBeUU7UUFDekUsK0JBQStCO1FBQy9CLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLGVBQWUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNoRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQ3ZCLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxtQkFBbUIsRUFBRSxDQUFDO1lBQ3pDLE1BQU0sT0FBTyxHQUFHLGNBQWMsQ0FBQyxzQkFBc0IsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUM5RCxPQUFPLFlBQVksQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sdUJBQXVCLEVBQUUsQ0FBQyxDQUFDO1FBQ3hFLENBQUM7S0FDRixDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7R0FVRztBQUNILE1BQU0sVUFBVSxZQUFZLENBQUMsT0FBNkIsRUFBRTtJQUMxRCxNQUFNLElBQUksR0FBRyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakMsT0FBTyxVQUFVLENBQUM7UUFDaEIsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFLElBQUksV0FBVztRQUMxQixXQUFXLEVBQUUsMEJBQTBCO1FBQ3ZDLFdBQVcsRUFBRSxxQkFBcUI7UUFDbEMsWUFBWSxFQUFFLG9CQUFvQjtRQUNsQyxzRUFBc0U7UUFDdEUsd0JBQXdCO1FBQ3hCLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLE1BQU07WUFDdEIsQ0FBQyxDQUFDLEVBQUU7WUFDSixDQUFDLENBQUM7Z0JBQ0UsZUFBZSxFQUFFLENBQUMsS0FBYyxFQUFFLEVBQUUsQ0FDbEMsSUFBSSxDQUFDLElBQUksS0FBSyxRQUFRO29CQUN0QixlQUFlLENBQUMsSUFBSSxFQUFFLENBQUMsY0FBYyxDQUFDLHFCQUFxQixFQUFFLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQzVFLENBQUM7UUFDTixPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQ3ZCLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxtQkFBbUIsRUFBRSxDQUFDO1lBQ3pDLE9BQU8sV0FBVyxDQUFDLGNBQWMsQ0FBQyxxQkFBcUIsRUFBRSxLQUFLLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUMzRSxDQUFDO0tBQ0YsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVGhlIGB3ZWJfc2VhcmNoYCBhbmQgYHdlYl9mZXRjaGAgTWFzdHJhIHRvb2xzLlxuICpcbiAqIGB3ZWJfc2VhcmNoYCBpcyBiYWNrZWQgYnkgdGhlIERhdGFicmlja3MgTW9kZWwgU2VydmluZyBuYXRpdmUgd2ViLXNlYXJjaFxuICogdG9vbDogaXQgcmVzb2x2ZXMgaXRzIG93biB3ZWItc2VhcmNoLWNhcGFibGUgbW9kZWwgKHNlZSBgc2VhcmNoLnRzYCkgYW5kXG4gKiBjYWxscyB0aGUgd29ya3NwYWNlIHNlcnZpbmcgZW5kcG9pbnQgdW5kZXIgdGhlIGNhbGxlcidzIE9CTyBzY29wZSwgc28gdGhlXG4gKiBzZWFyY2ggcnVucyBhcyB0aGUgcmVxdWVzdGluZyB1c2VyIGFuZCBpbmRlcGVuZGVudGx5IG9mIHRoZSBhZ2VudCdzIGNoYXRcbiAqIG1vZGVsLiBgd2ViX2ZldGNoYCByZWFkcyBhIHBhZ2UgdmlhIGdvdC1zY3JhcGluZy5cbiAqXG4gKiBCb3RoIGFyZSByZWFkLW9ubHkgYW5kIHJ1biB3aXRob3V0IGFwcHJvdmFsIGJ5IGRlZmF1bHQ7IGVhY2ggYWNjZXB0cyBhblxuICogb3B0aW9uYWwge0BsaW5rIEFwcHJvdmFsR2F0ZX0gKGBhcHByb3ZhbGApIHRoYXQgbWFwcyBvbnRvIE1hc3RyYSdzXG4gKiBgcmVxdWlyZUFwcHJvdmFsYC4gYHRydWVgIGdhdGVzIGV2ZXJ5IGNhbGw7IGEgVVJMLXBhdHRlcm4gKG9yIHtAbGluayBPbmVPck1hbnl9XG4gKiBsaXN0KSBnYXRlcyBvbmx5IGNhbGxzIHdob3NlIFVSTCBtYXRjaGVzIC0gZm9yIGB3ZWJfZmV0Y2hgIHRoYXQgaXMgZXZhbHVhdGVkXG4gKiBhZ2FpbnN0IHRoZSB0YXJnZXQgVVJMLCB3aGlsZSBgd2ViX3NlYXJjaGAgKHdob3NlIHJlc3VsdCBVUkxzIGFyZW4ndCBrbm93blxuICogYmVmb3JlIHRoZSBjYWxsKSB0cmVhdHMgYSBwYXR0ZXJuIGdhdGUgYXMgXCJhbHdheXMgZ2F0ZVwiLiBgYXBwcm92YWxgIGZhbGxzXG4gKiBiYWNrIHRvIHRoZSBwbHVnaW4ncyBgYXBwcm92YWxgIGNvbmZpZyB3aGVuIGEgdG9vbCBvbWl0cyBpdHMgb3duLlxuICpcbiAqIFRoZSBzYW1lIHR3byB0b29scyBhcmUgZXhwb3NlZCB0byBBcHBLaXQncyBvd24gYWdlbnRzIHRocm91Z2ggdGhlIHBsdWdpbidzXG4gKiBgVG9vbFByb3ZpZGVyYCAoc2VlIGBwbHVnaW4udHNgKTsgdGhpcyBtb2R1bGUgaXMgdGhlIE1hc3RyYSBoYWxmLlxuICpcbiAqIEBtb2R1bGVcbiAqL1xuXG5pbXBvcnQgeyBWYWxpZGF0aW9uRXJyb3IgfSBmcm9tIFwiQGRhdGFicmlja3MvYXBwa2l0XCI7XG5pbXBvcnQgeyBjcmVhdGVUb29sIH0gZnJvbSBcIkBtYXN0cmEvY29yZS90b29sc1wiO1xuaW1wb3J0IHR5cGUgeyB6IH0gZnJvbSBcInpvZFwiO1xuaW1wb3J0IHtcbiAgYXBwcm92YWxNYXRjaGVzLFxuICB0b0FwcHJvdmFsUG9saWN5LFxuICB0eXBlIEFwcHJvdmFsR2F0ZSxcbiAgdHlwZSBBcHByb3ZhbFBvbGljeSxcbn0gZnJvbSBcIi4vY29uZmlnXCI7XG5pbXBvcnQgeyBydW5XZWJGZXRjaCB9IGZyb20gXCIuL2ZldGNoXCI7XG5pbXBvcnQgeyBnZXRXZWJTZWFyY2hSdW50aW1lIH0gZnJvbSBcIi4vcnVudGltZVwiO1xuaW1wb3J0IHtcbiAgd2ViRmV0Y2hSZXF1ZXN0U2NoZW1hLFxuICB3ZWJGZXRjaFJlc3VsdFNjaGVtYSxcbiAgd2ViU2VhcmNoUmVxdWVzdFNjaGVtYSxcbiAgd2ViU2VhcmNoUmVzdWx0U2NoZW1hLFxuICBXRUJfRkVUQ0hfVE9PTF9ERVNDUklQVElPTixcbiAgV0VCX1NFQVJDSF9UT09MX0RFU0NSSVBUSU9OLFxufSBmcm9tIFwiLi9zY2hlbWFcIjtcbmltcG9ydCB7IHJlc29sdmVXZWJTZWFyY2hDb250ZXh0LCBydW5XZWJTZWFyY2ggfSBmcm9tIFwiLi9zZWFyY2hcIjtcblxuLyoqXG4gKiBWYWxpZGF0ZSBhIHRvb2wgY2FsbCdzIGFyZ3VtZW50cyBhdCB0aGUgcnVudGltZSBib3VuZGFyeS4gTWFzdHJhIGNoZWNrcyB0aGVcbiAqIGlucHV0IHNjaGVtYSBiZWZvcmUgZGlzcGF0Y2gsIGJ1dCB0aGUgYXJndW1lbnQgc3RpbGwgYXJyaXZlcyB0eXBlZCBhc1xuICogYHVua25vd25gIGFuZCB0aGUgbW9kZWwgaXMgdGhlIG9uZSBmaWxsaW5nIGl0IGluLiBUaGUgcmVqZWN0ZWQgdmFsdWUgaXMgbm90XG4gKiBlY2hvZWQgYmFjay5cbiAqL1xuZnVuY3Rpb24gcGFyc2VUb29sSW5wdXQ8UyBleHRlbmRzIHouWm9kVHlwZT4oc2NoZW1hOiBTLCBpbnB1dDogdW5rbm93bik6IHouaW5mZXI8Uz4ge1xuICBjb25zdCBwYXJzZWQgPSBzY2hlbWEuc2FmZVBhcnNlKGlucHV0KTtcbiAgaWYgKCFwYXJzZWQuc3VjY2Vzcykge1xuICAgIHRocm93IFZhbGlkYXRpb25FcnJvci5pbnZhbGlkVmFsdWUoXCJpbnB1dFwiLCBpbnB1dCwgXCJhcmd1bWVudHMgbWF0Y2hpbmcgdGhlIHRvb2wncyBzY2hlbWFcIik7XG4gIH1cbiAgcmV0dXJuIHBhcnNlZC5kYXRhO1xufVxuXG4vKiogT3B0aW9ucyBzaGFyZWQgYnkgYm90aCB3ZWIgdG9vbHMuICovXG5leHBvcnQgaW50ZXJmYWNlIFdlYlNlYXJjaFRvb2xPcHRpb25zIHtcbiAgLyoqIE92ZXJyaWRlIHRoZSB0b29sIGlkLiAqL1xuICBpZD86IHN0cmluZztcbiAgLyoqXG4gICAqIEFwcHJvdmFsIGdhdGUgZm9yIHRoaXMgdG9vbCwgb3ZlcnJpZGluZyB0aGUgcGx1Z2luJ3MgYGFwcHJvdmFsYC4gYHRydWVgXG4gICAqIGdhdGVzIGV2ZXJ5IGNhbGw7IGEgVVJMLXBhdHRlcm4gKG9yIGxpc3QpIGdhdGVzIG9ubHkgbWF0Y2hpbmcgY2FsbHM7XG4gICAqIG9taXQgLyBgZmFsc2VgIGZvciBubyBhcHByb3ZhbC4gU2VlIHtAbGluayBBcHByb3ZhbEdhdGV9LlxuICAgKi9cbiAgYXBwcm92YWw/OiBBcHByb3ZhbEdhdGUgfCBBcHByb3ZhbFBvbGljeTtcbn1cblxuLyoqIFJlc29sdmUgdGhlIGVmZmVjdGl2ZSBnYXRlOiBleHBsaWNpdCB0b29sIG9wdGlvbiwgZWxzZSB0aGUgcGx1Z2luIGRlZmF1bHQuICovXG5mdW5jdGlvbiBlZmZlY3RpdmVHYXRlKG9wdHM6IFdlYlNlYXJjaFRvb2xPcHRpb25zKTogQXBwcm92YWxQb2xpY3kge1xuICByZXR1cm4gb3B0cy5hcHByb3ZhbCA9PT0gdW5kZWZpbmVkXG4gICAgPyBnZXRXZWJTZWFyY2hSdW50aW1lKCkuY29uZmlnLmFwcHJvdmFsXG4gICAgOiB0b0FwcHJvdmFsUG9saWN5KG9wdHMuYXBwcm92YWwpO1xufVxuXG4vKipcbiAqIEJ1aWxkIHRoZSBgd2ViX3NlYXJjaGAgdG9vbC4gU3ByZWFkIGl0IGludG8gdGhlIGFnZW50cyB0aGF0IHNob3VsZCBiZSBhYmxlXG4gKiB0byBzZWFyY2ggdGhlIHdlYi5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIGltcG9ydCB7IHdlYlNlYXJjaFRvb2wgfSBmcm9tIFwiQGRieC10b29scy9hcHBraXQtd2ViLXNlYXJjaFwiO1xuICogaW1wb3J0IHsgY3JlYXRlQWdlbnQgfSBmcm9tIFwiQGRieC10b29scy9hcHBraXQtbWFzdHJhXCI7XG4gKlxuICogY29uc3QgcmVzZWFyY2hlciA9IGNyZWF0ZUFnZW50KHtcbiAqICAgaW5zdHJ1Y3Rpb25zOiBcIi4uLlwiLFxuICogICB0b29sczogKCkgPT4gKHsgd2ViX3NlYXJjaDogd2ViU2VhcmNoVG9vbCgpIH0pLFxuICogfSk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHdlYlNlYXJjaFRvb2wob3B0czogV2ViU2VhcmNoVG9vbE9wdGlvbnMgPSB7fSkge1xuICBjb25zdCBnYXRlID0gZWZmZWN0aXZlR2F0ZShvcHRzKTtcbiAgcmV0dXJuIGNyZWF0ZVRvb2woe1xuICAgIGlkOiBvcHRzLmlkID8/IFwid2ViX3NlYXJjaFwiLFxuICAgIGRlc2NyaXB0aW9uOiBXRUJfU0VBUkNIX1RPT0xfREVTQ1JJUFRJT04sXG4gICAgaW5wdXRTY2hlbWE6IHdlYlNlYXJjaFJlcXVlc3RTY2hlbWEsXG4gICAgb3V0cHV0U2NoZW1hOiB3ZWJTZWFyY2hSZXN1bHRTY2hlbWEsXG4gICAgLy8gQSBzZWFyY2gncyByZXN1bHQgVVJMcyBhcmVuJ3Qga25vd24gYmVmb3JlIHRoZSBjYWxsLCBzbyBhIHBhdHRlcm4gZ2F0ZVxuICAgIC8vIGlzIHRyZWF0ZWQgYXMgXCJhbHdheXMgZ2F0ZVwiLlxuICAgIC4uLihnYXRlLm1vZGUgPT09IFwibm9uZVwiID8ge30gOiB7IHJlcXVpcmVBcHByb3ZhbDogKCkgPT4gdHJ1ZSB9KSxcbiAgICBleGVjdXRlOiBhc3luYyAoaW5wdXQpID0+IHtcbiAgICAgIGNvbnN0IHsgY29uZmlnIH0gPSBnZXRXZWJTZWFyY2hSdW50aW1lKCk7XG4gICAgICBjb25zdCByZXF1ZXN0ID0gcGFyc2VUb29sSW5wdXQod2ViU2VhcmNoUmVxdWVzdFNjaGVtYSwgaW5wdXQpO1xuICAgICAgcmV0dXJuIHJ1bldlYlNlYXJjaChyZXF1ZXN0LCBjb25maWcsIGF3YWl0IHJlc29sdmVXZWJTZWFyY2hDb250ZXh0KCkpO1xuICAgIH0sXG4gIH0pO1xufVxuXG4vKipcbiAqIEJ1aWxkIHRoZSBgd2ViX2ZldGNoYCB0b29sLiBTcHJlYWQgaXQgaW50byB0aGUgYWdlbnRzIHRoYXQgc2hvdWxkIGJlIGFibGVcbiAqIHRvIHJlYWQgYSBwYWdlJ3MgY29udGVudHMuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyB3ZWJGZXRjaFRvb2wgfSBmcm9tIFwiQGRieC10b29scy9hcHBraXQtd2ViLXNlYXJjaFwiO1xuICpcbiAqIHRvb2xzOiAoKSA9PiAoeyB3ZWJfZmV0Y2g6IHdlYkZldGNoVG9vbCh7IGFwcHJvdmFsOiBcIiouaW50ZXJuYWwuZXhhbXBsZS5jb21cIiB9KSB9KVxuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB3ZWJGZXRjaFRvb2wob3B0czogV2ViU2VhcmNoVG9vbE9wdGlvbnMgPSB7fSkge1xuICBjb25zdCBnYXRlID0gZWZmZWN0aXZlR2F0ZShvcHRzKTtcbiAgcmV0dXJuIGNyZWF0ZVRvb2woe1xuICAgIGlkOiBvcHRzLmlkID8/IFwid2ViX2ZldGNoXCIsXG4gICAgZGVzY3JpcHRpb246IFdFQl9GRVRDSF9UT09MX0RFU0NSSVBUSU9OLFxuICAgIGlucHV0U2NoZW1hOiB3ZWJGZXRjaFJlcXVlc3RTY2hlbWEsXG4gICAgb3V0cHV0U2NoZW1hOiB3ZWJGZXRjaFJlc3VsdFNjaGVtYSxcbiAgICAvLyBBIGZldGNoIGtub3dzIGl0cyBzaW5nbGUgdGFyZ2V0IFVSTCwgc28gYSBwYXR0ZXJuIGdhdGUgaXMgZXZhbHVhdGVkXG4gICAgLy8gcHJlY2lzZWx5IGFnYWluc3QgaXQuXG4gICAgLi4uKGdhdGUubW9kZSA9PT0gXCJub25lXCJcbiAgICAgID8ge31cbiAgICAgIDoge1xuICAgICAgICAgIHJlcXVpcmVBcHByb3ZhbDogKGlucHV0OiB1bmtub3duKSA9PlxuICAgICAgICAgICAgZ2F0ZS5tb2RlID09PSBcImFsd2F5c1wiIHx8XG4gICAgICAgICAgICBhcHByb3ZhbE1hdGNoZXMoZ2F0ZSwgW3BhcnNlVG9vbElucHV0KHdlYkZldGNoUmVxdWVzdFNjaGVtYSwgaW5wdXQpLnVybF0pLFxuICAgICAgICB9KSxcbiAgICBleGVjdXRlOiBhc3luYyAoaW5wdXQpID0+IHtcbiAgICAgIGNvbnN0IHsgY29uZmlnIH0gPSBnZXRXZWJTZWFyY2hSdW50aW1lKCk7XG4gICAgICByZXR1cm4gcnVuV2ViRmV0Y2gocGFyc2VUb29sSW5wdXQod2ViRmV0Y2hSZXF1ZXN0U2NoZW1hLCBpbnB1dCksIGNvbmZpZyk7XG4gICAgfSxcbiAgfSk7XG59XG4iXX0=
113
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90b29sLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FxQkc7QUFFSCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDckQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRWhELE9BQU8sRUFDTCxlQUFlLEVBQ2YsZ0JBQWdCLEdBR2pCLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDekMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ25ELE9BQU8sRUFDTCxxQkFBcUIsRUFDckIsb0JBQW9CLEVBQ3BCLHNCQUFzQixFQUN0QixxQkFBcUIsRUFDckIsMEJBQTBCLEVBQzFCLDJCQUEyQixHQUM1QixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsWUFBWSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRXBFOzs7OztHQUtHO0FBQ0gsU0FBUyxjQUFjLENBQXNCLE1BQVMsRUFBRSxLQUFjO0lBQ3BFLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdkMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNwQixNQUFNLGVBQWUsQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxzQ0FBc0MsQ0FBQyxDQUFDO0lBQzdGLENBQUM7SUFDRCxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUM7QUFDckIsQ0FBQztBQWNELGlGQUFpRjtBQUNqRixTQUFTLGFBQWEsQ0FBQyxJQUEwQjtJQUMvQyxPQUFPLElBQUksQ0FBQyxRQUFRLEtBQUssU0FBUztRQUNoQyxDQUFDLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxNQUFNLENBQUMsUUFBUTtRQUN2QyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ3RDLENBQUM7QUFFRDs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUNILE1BQU0sVUFBVSxhQUFhLENBQUMsT0FBNkIsRUFBRTtJQUMzRCxNQUFNLElBQUksR0FBRyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakMsT0FBTyxVQUFVLENBQUM7UUFDaEIsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFLElBQUksWUFBWTtRQUMzQixXQUFXLEVBQUUsMkJBQTJCO1FBQ3hDLFdBQVcsRUFBRSxzQkFBc0I7UUFDbkMsWUFBWSxFQUFFLHFCQUFxQjtRQUNuQyx5RUFBeUU7UUFDekUsK0JBQStCO1FBQy9CLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLGVBQWUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNoRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQ3ZCLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxtQkFBbUIsRUFBRSxDQUFDO1lBQ3pDLE1BQU0sT0FBTyxHQUFHLGNBQWMsQ0FBQyxzQkFBc0IsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUM5RCxPQUFPLFlBQVksQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sdUJBQXVCLEVBQUUsQ0FBQyxDQUFDO1FBQ3hFLENBQUM7S0FDRixDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7R0FVRztBQUNILE1BQU0sVUFBVSxZQUFZLENBQUMsT0FBNkIsRUFBRTtJQUMxRCxNQUFNLElBQUksR0FBRyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakMsT0FBTyxVQUFVLENBQUM7UUFDaEIsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFLElBQUksV0FBVztRQUMxQixXQUFXLEVBQUUsMEJBQTBCO1FBQ3ZDLFdBQVcsRUFBRSxxQkFBcUI7UUFDbEMsWUFBWSxFQUFFLG9CQUFvQjtRQUNsQyxzRUFBc0U7UUFDdEUsd0JBQXdCO1FBQ3hCLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLE1BQU07WUFDdEIsQ0FBQyxDQUFDLEVBQUU7WUFDSixDQUFDLENBQUM7Z0JBQ0UsZUFBZSxFQUFFLENBQUMsS0FBYyxFQUFFLEVBQUUsQ0FDbEMsSUFBSSxDQUFDLElBQUksS0FBSyxRQUFRO29CQUN0QixlQUFlLENBQUMsSUFBSSxFQUFFLENBQUMsY0FBYyxDQUFDLHFCQUFxQixFQUFFLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQzVFLENBQUM7UUFDTixPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQ3ZCLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxtQkFBbUIsRUFBRSxDQUFDO1lBQ3pDLE9BQU8sV0FBVyxDQUFDLGNBQWMsQ0FBQyxxQkFBcUIsRUFBRSxLQUFLLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUMzRSxDQUFDO0tBQ0YsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVGhlIGB3ZWJfc2VhcmNoYCBhbmQgYHdlYl9mZXRjaGAgTWFzdHJhIHRvb2xzLlxuICpcbiAqIGB3ZWJfc2VhcmNoYCBpcyBiYWNrZWQgYnkgdGhlIERhdGFicmlja3MgTW9kZWwgU2VydmluZyBuYXRpdmUgd2ViLXNlYXJjaFxuICogdG9vbDogaXQgcmVzb2x2ZXMgaXRzIG93biB3ZWItc2VhcmNoLWNhcGFibGUgbW9kZWwgKHNlZSBgc2VhcmNoLnRzYCkgYW5kXG4gKiBjYWxscyB0aGUgd29ya3NwYWNlIHNlcnZpbmcgZW5kcG9pbnQgdW5kZXIgdGhlIGNhbGxlcidzIE9CTyBzY29wZSwgc28gdGhlXG4gKiBzZWFyY2ggcnVucyBhcyB0aGUgcmVxdWVzdGluZyB1c2VyIGFuZCBpbmRlcGVuZGVudGx5IG9mIHRoZSBhZ2VudCdzIGNoYXRcbiAqIG1vZGVsLiBgd2ViX2ZldGNoYCByZWFkcyBhIHBhZ2UgdmlhIGdvdC1zY3JhcGluZy5cbiAqXG4gKiBCb3RoIGFyZSByZWFkLW9ubHkgYW5kIHJ1biB3aXRob3V0IGFwcHJvdmFsIGJ5IGRlZmF1bHQ7IGVhY2ggYWNjZXB0cyBhblxuICogb3B0aW9uYWwge0BsaW5rIEFwcHJvdmFsR2F0ZX0gKGBhcHByb3ZhbGApIHRoYXQgbWFwcyBvbnRvIE1hc3RyYSdzXG4gKiBgcmVxdWlyZUFwcHJvdmFsYC4gYHRydWVgIGdhdGVzIGV2ZXJ5IGNhbGw7IGEgVVJMLXBhdHRlcm4gKG9yIHtAbGluayBPbmVPck1hbnl9XG4gKiBsaXN0KSBnYXRlcyBvbmx5IGNhbGxzIHdob3NlIFVSTCBtYXRjaGVzIC0gZm9yIGB3ZWJfZmV0Y2hgIHRoYXQgaXMgZXZhbHVhdGVkXG4gKiBhZ2FpbnN0IHRoZSB0YXJnZXQgVVJMLCB3aGlsZSBgd2ViX3NlYXJjaGAgKHdob3NlIHJlc3VsdCBVUkxzIGFyZW4ndCBrbm93blxuICogYmVmb3JlIHRoZSBjYWxsKSB0cmVhdHMgYSBwYXR0ZXJuIGdhdGUgYXMgXCJhbHdheXMgZ2F0ZVwiLiBgYXBwcm92YWxgIGZhbGxzXG4gKiBiYWNrIHRvIHRoZSBwbHVnaW4ncyBgYXBwcm92YWxgIGNvbmZpZyB3aGVuIGEgdG9vbCBvbWl0cyBpdHMgb3duLlxuICpcbiAqIFRoZSBzYW1lIHR3byB0b29scyBhcmUgZXhwb3NlZCB0byBBcHBLaXQncyBvd24gYWdlbnRzIHRocm91Z2ggdGhlIHBsdWdpbidzXG4gKiBgVG9vbFByb3ZpZGVyYCAoc2VlIGBwbHVnaW4udHNgKTsgdGhpcyBtb2R1bGUgaXMgdGhlIE1hc3RyYSBoYWxmLlxuICpcbiAqIEBtb2R1bGVcbiAqL1xuXG5pbXBvcnQgeyBWYWxpZGF0aW9uRXJyb3IgfSBmcm9tIFwiQGRhdGFicmlja3MvYXBwa2l0XCI7XG5pbXBvcnQgeyBjcmVhdGVUb29sIH0gZnJvbSBcIkBtYXN0cmEvY29yZS90b29sc1wiO1xuaW1wb3J0IHR5cGUgeyB6IH0gZnJvbSBcInpvZFwiO1xuaW1wb3J0IHtcbiAgYXBwcm92YWxNYXRjaGVzLFxuICB0b0FwcHJvdmFsUG9saWN5LFxuICB0eXBlIEFwcHJvdmFsR2F0ZSxcbiAgdHlwZSBBcHByb3ZhbFBvbGljeSxcbn0gZnJvbSBcIi4vY29uZmlnLnRzXCI7XG5pbXBvcnQgeyBydW5XZWJGZXRjaCB9IGZyb20gXCIuL2ZldGNoLnRzXCI7XG5pbXBvcnQgeyBnZXRXZWJTZWFyY2hSdW50aW1lIH0gZnJvbSBcIi4vcnVudGltZS50c1wiO1xuaW1wb3J0IHtcbiAgd2ViRmV0Y2hSZXF1ZXN0U2NoZW1hLFxuICB3ZWJGZXRjaFJlc3VsdFNjaGVtYSxcbiAgd2ViU2VhcmNoUmVxdWVzdFNjaGVtYSxcbiAgd2ViU2VhcmNoUmVzdWx0U2NoZW1hLFxuICBXRUJfRkVUQ0hfVE9PTF9ERVNDUklQVElPTixcbiAgV0VCX1NFQVJDSF9UT09MX0RFU0NSSVBUSU9OLFxufSBmcm9tIFwiLi9zY2hlbWEudHNcIjtcbmltcG9ydCB7IHJlc29sdmVXZWJTZWFyY2hDb250ZXh0LCBydW5XZWJTZWFyY2ggfSBmcm9tIFwiLi9zZWFyY2gudHNcIjtcblxuLyoqXG4gKiBWYWxpZGF0ZSBhIHRvb2wgY2FsbCdzIGFyZ3VtZW50cyBhdCB0aGUgcnVudGltZSBib3VuZGFyeS4gTWFzdHJhIGNoZWNrcyB0aGVcbiAqIGlucHV0IHNjaGVtYSBiZWZvcmUgZGlzcGF0Y2gsIGJ1dCB0aGUgYXJndW1lbnQgc3RpbGwgYXJyaXZlcyB0eXBlZCBhc1xuICogYHVua25vd25gIGFuZCB0aGUgbW9kZWwgaXMgdGhlIG9uZSBmaWxsaW5nIGl0IGluLiBUaGUgcmVqZWN0ZWQgdmFsdWUgaXMgbm90XG4gKiBlY2hvZWQgYmFjay5cbiAqL1xuZnVuY3Rpb24gcGFyc2VUb29sSW5wdXQ8UyBleHRlbmRzIHouWm9kVHlwZT4oc2NoZW1hOiBTLCBpbnB1dDogdW5rbm93bik6IHouaW5mZXI8Uz4ge1xuICBjb25zdCBwYXJzZWQgPSBzY2hlbWEuc2FmZVBhcnNlKGlucHV0KTtcbiAgaWYgKCFwYXJzZWQuc3VjY2Vzcykge1xuICAgIHRocm93IFZhbGlkYXRpb25FcnJvci5pbnZhbGlkVmFsdWUoXCJpbnB1dFwiLCBpbnB1dCwgXCJhcmd1bWVudHMgbWF0Y2hpbmcgdGhlIHRvb2wncyBzY2hlbWFcIik7XG4gIH1cbiAgcmV0dXJuIHBhcnNlZC5kYXRhO1xufVxuXG4vKiogT3B0aW9ucyBzaGFyZWQgYnkgYm90aCB3ZWIgdG9vbHMuICovXG5leHBvcnQgaW50ZXJmYWNlIFdlYlNlYXJjaFRvb2xPcHRpb25zIHtcbiAgLyoqIE92ZXJyaWRlIHRoZSB0b29sIGlkLiAqL1xuICBpZD86IHN0cmluZztcbiAgLyoqXG4gICAqIEFwcHJvdmFsIGdhdGUgZm9yIHRoaXMgdG9vbCwgb3ZlcnJpZGluZyB0aGUgcGx1Z2luJ3MgYGFwcHJvdmFsYC4gYHRydWVgXG4gICAqIGdhdGVzIGV2ZXJ5IGNhbGw7IGEgVVJMLXBhdHRlcm4gKG9yIGxpc3QpIGdhdGVzIG9ubHkgbWF0Y2hpbmcgY2FsbHM7XG4gICAqIG9taXQgLyBgZmFsc2VgIGZvciBubyBhcHByb3ZhbC4gU2VlIHtAbGluayBBcHByb3ZhbEdhdGV9LlxuICAgKi9cbiAgYXBwcm92YWw/OiBBcHByb3ZhbEdhdGUgfCBBcHByb3ZhbFBvbGljeTtcbn1cblxuLyoqIFJlc29sdmUgdGhlIGVmZmVjdGl2ZSBnYXRlOiBleHBsaWNpdCB0b29sIG9wdGlvbiwgZWxzZSB0aGUgcGx1Z2luIGRlZmF1bHQuICovXG5mdW5jdGlvbiBlZmZlY3RpdmVHYXRlKG9wdHM6IFdlYlNlYXJjaFRvb2xPcHRpb25zKTogQXBwcm92YWxQb2xpY3kge1xuICByZXR1cm4gb3B0cy5hcHByb3ZhbCA9PT0gdW5kZWZpbmVkXG4gICAgPyBnZXRXZWJTZWFyY2hSdW50aW1lKCkuY29uZmlnLmFwcHJvdmFsXG4gICAgOiB0b0FwcHJvdmFsUG9saWN5KG9wdHMuYXBwcm92YWwpO1xufVxuXG4vKipcbiAqIEJ1aWxkIHRoZSBgd2ViX3NlYXJjaGAgdG9vbC4gU3ByZWFkIGl0IGludG8gdGhlIGFnZW50cyB0aGF0IHNob3VsZCBiZSBhYmxlXG4gKiB0byBzZWFyY2ggdGhlIHdlYi5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIGltcG9ydCB7IHdlYlNlYXJjaFRvb2wgfSBmcm9tIFwiQGRieC10b29scy9hcHBraXQtd2ViLXNlYXJjaFwiO1xuICogaW1wb3J0IHsgY3JlYXRlQWdlbnQgfSBmcm9tIFwiQGRieC10b29scy9hcHBraXQtbWFzdHJhXCI7XG4gKlxuICogY29uc3QgcmVzZWFyY2hlciA9IGNyZWF0ZUFnZW50KHtcbiAqICAgaW5zdHJ1Y3Rpb25zOiBcIi4uLlwiLFxuICogICB0b29sczogKCkgPT4gKHsgd2ViX3NlYXJjaDogd2ViU2VhcmNoVG9vbCgpIH0pLFxuICogfSk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHdlYlNlYXJjaFRvb2wob3B0czogV2ViU2VhcmNoVG9vbE9wdGlvbnMgPSB7fSkge1xuICBjb25zdCBnYXRlID0gZWZmZWN0aXZlR2F0ZShvcHRzKTtcbiAgcmV0dXJuIGNyZWF0ZVRvb2woe1xuICAgIGlkOiBvcHRzLmlkID8/IFwid2ViX3NlYXJjaFwiLFxuICAgIGRlc2NyaXB0aW9uOiBXRUJfU0VBUkNIX1RPT0xfREVTQ1JJUFRJT04sXG4gICAgaW5wdXRTY2hlbWE6IHdlYlNlYXJjaFJlcXVlc3RTY2hlbWEsXG4gICAgb3V0cHV0U2NoZW1hOiB3ZWJTZWFyY2hSZXN1bHRTY2hlbWEsXG4gICAgLy8gQSBzZWFyY2gncyByZXN1bHQgVVJMcyBhcmVuJ3Qga25vd24gYmVmb3JlIHRoZSBjYWxsLCBzbyBhIHBhdHRlcm4gZ2F0ZVxuICAgIC8vIGlzIHRyZWF0ZWQgYXMgXCJhbHdheXMgZ2F0ZVwiLlxuICAgIC4uLihnYXRlLm1vZGUgPT09IFwibm9uZVwiID8ge30gOiB7IHJlcXVpcmVBcHByb3ZhbDogKCkgPT4gdHJ1ZSB9KSxcbiAgICBleGVjdXRlOiBhc3luYyAoaW5wdXQpID0+IHtcbiAgICAgIGNvbnN0IHsgY29uZmlnIH0gPSBnZXRXZWJTZWFyY2hSdW50aW1lKCk7XG4gICAgICBjb25zdCByZXF1ZXN0ID0gcGFyc2VUb29sSW5wdXQod2ViU2VhcmNoUmVxdWVzdFNjaGVtYSwgaW5wdXQpO1xuICAgICAgcmV0dXJuIHJ1bldlYlNlYXJjaChyZXF1ZXN0LCBjb25maWcsIGF3YWl0IHJlc29sdmVXZWJTZWFyY2hDb250ZXh0KCkpO1xuICAgIH0sXG4gIH0pO1xufVxuXG4vKipcbiAqIEJ1aWxkIHRoZSBgd2ViX2ZldGNoYCB0b29sLiBTcHJlYWQgaXQgaW50byB0aGUgYWdlbnRzIHRoYXQgc2hvdWxkIGJlIGFibGVcbiAqIHRvIHJlYWQgYSBwYWdlJ3MgY29udGVudHMuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyB3ZWJGZXRjaFRvb2wgfSBmcm9tIFwiQGRieC10b29scy9hcHBraXQtd2ViLXNlYXJjaFwiO1xuICpcbiAqIHRvb2xzOiAoKSA9PiAoeyB3ZWJfZmV0Y2g6IHdlYkZldGNoVG9vbCh7IGFwcHJvdmFsOiBcIiouaW50ZXJuYWwuZXhhbXBsZS5jb21cIiB9KSB9KVxuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB3ZWJGZXRjaFRvb2wob3B0czogV2ViU2VhcmNoVG9vbE9wdGlvbnMgPSB7fSkge1xuICBjb25zdCBnYXRlID0gZWZmZWN0aXZlR2F0ZShvcHRzKTtcbiAgcmV0dXJuIGNyZWF0ZVRvb2woe1xuICAgIGlkOiBvcHRzLmlkID8/IFwid2ViX2ZldGNoXCIsXG4gICAgZGVzY3JpcHRpb246IFdFQl9GRVRDSF9UT09MX0RFU0NSSVBUSU9OLFxuICAgIGlucHV0U2NoZW1hOiB3ZWJGZXRjaFJlcXVlc3RTY2hlbWEsXG4gICAgb3V0cHV0U2NoZW1hOiB3ZWJGZXRjaFJlc3VsdFNjaGVtYSxcbiAgICAvLyBBIGZldGNoIGtub3dzIGl0cyBzaW5nbGUgdGFyZ2V0IFVSTCwgc28gYSBwYXR0ZXJuIGdhdGUgaXMgZXZhbHVhdGVkXG4gICAgLy8gcHJlY2lzZWx5IGFnYWluc3QgaXQuXG4gICAgLi4uKGdhdGUubW9kZSA9PT0gXCJub25lXCJcbiAgICAgID8ge31cbiAgICAgIDoge1xuICAgICAgICAgIHJlcXVpcmVBcHByb3ZhbDogKGlucHV0OiB1bmtub3duKSA9PlxuICAgICAgICAgICAgZ2F0ZS5tb2RlID09PSBcImFsd2F5c1wiIHx8XG4gICAgICAgICAgICBhcHByb3ZhbE1hdGNoZXMoZ2F0ZSwgW3BhcnNlVG9vbElucHV0KHdlYkZldGNoUmVxdWVzdFNjaGVtYSwgaW5wdXQpLnVybF0pLFxuICAgICAgICB9KSxcbiAgICBleGVjdXRlOiBhc3luYyAoaW5wdXQpID0+IHtcbiAgICAgIGNvbnN0IHsgY29uZmlnIH0gPSBnZXRXZWJTZWFyY2hSdW50aW1lKCk7XG4gICAgICByZXR1cm4gcnVuV2ViRmV0Y2gocGFyc2VUb29sSW5wdXQod2ViRmV0Y2hSZXF1ZXN0U2NoZW1hLCBpbnB1dCksIGNvbmZpZyk7XG4gICAgfSxcbiAgfSk7XG59XG4iXX0=
package/package.json CHANGED
@@ -17,17 +17,17 @@
17
17
  "@mastra/core": "^1.47.0",
18
18
  "got-scraping": "^4.2.1",
19
19
  "zod": "4.3.6",
20
- "@dbx-tools/path": "0.4.1",
21
- "@dbx-tools/shared-core": "0.4.1",
22
- "@dbx-tools/model": "0.4.1",
23
- "@dbx-tools/shared-model": "0.4.1"
20
+ "@dbx-tools/model": "0.5.1",
21
+ "@dbx-tools/path": "0.5.1",
22
+ "@dbx-tools/shared-core": "0.5.1",
23
+ "@dbx-tools/shared-model": "0.5.1"
24
24
  },
25
25
  "main": "./lib/index.js",
26
26
  "license": "UNLICENSED",
27
27
  "publishConfig": {
28
28
  "access": "public"
29
29
  },
30
- "version": "0.4.1",
30
+ "version": "0.5.1",
31
31
  "types": "./lib/index.d.ts",
32
32
  "type": "module",
33
33
  "exports": {
package/src/config.ts CHANGED
@@ -48,7 +48,7 @@ import { ConfigurationError, type BasePluginConfig } from "@databricks/appkit";
48
48
  import { serving } from "@dbx-tools/model";
49
49
  import { json, object, type OneOrMany, string } from "@dbx-tools/shared-core";
50
50
  import type { JSONSchema7 } from "json-schema";
51
- import { parseAllowedUrls, toUrlAllowList, type UrlAllowList } from "./allowlist";
51
+ import { parseAllowedUrls, toUrlAllowList, type UrlAllowList } from "./allowlist.ts";
52
52
 
53
53
  /**
54
54
  * A URL-pattern gate for per-tool approval. `true` gates every call; a
package/src/fetch.ts CHANGED
@@ -17,12 +17,12 @@
17
17
 
18
18
  import { log } from "@dbx-tools/shared-core";
19
19
  import { gotScraping } from "got-scraping";
20
- import { assertUrlAllowed } from "./allowlist";
21
- import type { ResolvedWebSearchConfig } from "./config";
22
- import { toCallSettings, webFetchExecuteDefaults } from "./defaults";
23
- import { decodeHtmlEntities, htmlToText } from "./html-text";
24
- import { executeRead } from "./runtime";
25
- import type { WebFetchRequest, WebFetchResult } from "./schema";
20
+ import { assertUrlAllowed } from "./allowlist.ts";
21
+ import type { ResolvedWebSearchConfig } from "./config.ts";
22
+ import { toCallSettings, webFetchExecuteDefaults } from "./defaults.ts";
23
+ import { decodeHtmlEntities, htmlToText } from "./html-text.ts";
24
+ import { executeRead } from "./runtime.ts";
25
+ import type { WebFetchRequest, WebFetchResult } from "./schema.ts";
26
26
 
27
27
  const logger = log.logger("web-search/fetch");
28
28
 
package/src/plugin.ts CHANGED
@@ -36,17 +36,22 @@ import {
36
36
  SERVING_ENDPOINT_ENV,
37
37
  WEB_SEARCH_CONFIG_SCHEMA,
38
38
  type WebSearchPluginConfig,
39
- } from "./config";
40
- import { runWebFetch } from "./fetch";
41
- import { getWebSearchRuntime, resetWebSearchRuntime, setWebSearchExecutor } from "./runtime";
39
+ } from "./config.ts";
40
+ import { runWebFetch } from "./fetch.ts";
41
+ import { getWebSearchRuntime, resetWebSearchRuntime, setWebSearchExecutor } from "./runtime.ts";
42
42
  import {
43
43
  webFetchRequestSchema,
44
44
  webSearchRequestSchema,
45
45
  WEB_FETCH_TOOL_DESCRIPTION,
46
46
  WEB_SEARCH_TOOL_DESCRIPTION,
47
- } from "./schema";
48
- import type { WebFetchRequest, WebFetchResult, WebSearchRequest, WebSearchResult } from "./schema";
49
- import { resolveWebSearchContext, runWebSearch } from "./search";
47
+ } from "./schema.ts";
48
+ import type {
49
+ WebFetchRequest,
50
+ WebFetchResult,
51
+ WebSearchRequest,
52
+ WebSearchResult,
53
+ } from "./schema.ts";
54
+ import { resolveWebSearchContext, runWebSearch } from "./search.ts";
50
55
 
51
56
  const logger = log.logger("web-search");
52
57
 
package/src/runtime.ts CHANGED
@@ -25,8 +25,8 @@ import {
25
25
  resolveWebSearchConfig,
26
26
  type ResolvedWebSearchConfig,
27
27
  type WebSearchPluginConfig,
28
- } from "./config";
29
- import type { WebSearchExecutionSettings } from "./defaults";
28
+ } from "./config.ts";
29
+ import type { WebSearchExecutionSettings } from "./defaults.ts";
30
30
 
31
31
  const logger = log.logger("web-search/runtime");
32
32
 
package/src/scrape.ts CHANGED
@@ -20,11 +20,11 @@
20
20
 
21
21
  import { log } from "@dbx-tools/shared-core";
22
22
  import { gotScraping } from "got-scraping";
23
- import type { ResolvedWebSearchConfig } from "./config";
24
- import { scrapeSearchExecuteDefaults, toCallSettings } from "./defaults";
25
- import { htmlFragmentToText } from "./html-text";
26
- import { executeRead } from "./runtime";
27
- import type { WebSearchCitation, WebSearchRequest, WebSearchResult } from "./schema";
23
+ import type { ResolvedWebSearchConfig } from "./config.ts";
24
+ import { scrapeSearchExecuteDefaults, toCallSettings } from "./defaults.ts";
25
+ import { htmlFragmentToText } from "./html-text.ts";
26
+ import { executeRead } from "./runtime.ts";
27
+ import type { WebSearchCitation, WebSearchRequest, WebSearchResult } from "./schema.ts";
28
28
 
29
29
  const logger = log.logger("web-search/scrape");
30
30
 
package/src/search.ts CHANGED
@@ -31,12 +31,12 @@ import {
31
31
  import { invoke, resolve, serving } from "@dbx-tools/model";
32
32
  import { log, object, string } from "@dbx-tools/shared-core";
33
33
  import { openaiChat, openaiResponses } from "@dbx-tools/shared-model";
34
- import { MODEL_ENV, SERVING_ENDPOINT_ENV, type ResolvedWebSearchConfig } from "./config";
35
- import { toCallSettings, webSearchExecuteDefaults } from "./defaults";
36
- import { detectWebSearchProvider, supportsWebSearch, webSearchToolSpec } from "./provider";
37
- import { executeRead } from "./runtime";
38
- import type { WebSearchCitation, WebSearchRequest, WebSearchResult } from "./schema";
39
- import { runScrapeSearch } from "./scrape";
34
+ import { MODEL_ENV, SERVING_ENDPOINT_ENV, type ResolvedWebSearchConfig } from "./config.ts";
35
+ import { toCallSettings, webSearchExecuteDefaults } from "./defaults.ts";
36
+ import { detectWebSearchProvider, supportsWebSearch, webSearchToolSpec } from "./provider.ts";
37
+ import { executeRead } from "./runtime.ts";
38
+ import type { WebSearchCitation, WebSearchRequest, WebSearchResult } from "./schema.ts";
39
+ import { runScrapeSearch } from "./scrape.ts";
40
40
 
41
41
  type WorkspaceClientLike = serving.WorkspaceClientLike;
42
42
  const logger = log.logger("web-search/search");
package/src/tool.ts CHANGED
@@ -29,9 +29,9 @@ import {
29
29
  toApprovalPolicy,
30
30
  type ApprovalGate,
31
31
  type ApprovalPolicy,
32
- } from "./config";
33
- import { runWebFetch } from "./fetch";
34
- import { getWebSearchRuntime } from "./runtime";
32
+ } from "./config.ts";
33
+ import { runWebFetch } from "./fetch.ts";
34
+ import { getWebSearchRuntime } from "./runtime.ts";
35
35
  import {
36
36
  webFetchRequestSchema,
37
37
  webFetchResultSchema,
@@ -39,8 +39,8 @@ import {
39
39
  webSearchResultSchema,
40
40
  WEB_FETCH_TOOL_DESCRIPTION,
41
41
  WEB_SEARCH_TOOL_DESCRIPTION,
42
- } from "./schema";
43
- import { resolveWebSearchContext, runWebSearch } from "./search";
42
+ } from "./schema.ts";
43
+ import { resolveWebSearchContext, runWebSearch } from "./search.ts";
44
44
 
45
45
  /**
46
46
  * Validate a tool call's arguments at the runtime boundary. Mastra checks the