@mnaoumov/typescript-dev-toolkit 1.3.1 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/docs-site/components/ConstructorBlock.astro +16 -0
- package/assets/docs-site/components/ImportStatement.astro +12 -0
- package/assets/docs-site/components/MemberDetail.astro +101 -0
- package/assets/docs-site/components/MethodTable.astro +45 -0
- package/assets/docs-site/components/PropertyTable.astro +45 -0
- package/assets/docs-site/components/SiteTitle.astro +43 -0
- package/assets/docs-site/components/TypeSignature.astro +20 -0
- package/assets/docs-site/fonts/inter-latin-400-normal.ttf +0 -0
- package/assets/docs-site/fonts/inter-latin-700-normal.ttf +0 -0
- package/assets/docs-site/styles/global.css +221 -0
- package/dist/lib/cjs/build.cjs +1 -1
- package/dist/lib/cjs/build.d.cts +1 -1
- package/dist/lib/cjs/commitlint-forbidden-patterns.cjs +2 -2
- package/dist/lib/cjs/commitlint-forbidden-patterns.d.cts +1 -1
- package/dist/lib/cjs/commitlint-spellcheck-header.cjs +2 -2
- package/dist/lib/cjs/commitlint-spellcheck-header.d.cts +1 -1
- package/dist/lib/cjs/docs-site/api-doc-constants.cjs +171 -0
- package/dist/lib/cjs/docs-site/api-doc-constants.d.cts +18 -0
- package/dist/lib/cjs/docs-site/api-doc-jsdoc.cjs +414 -0
- package/dist/lib/cjs/docs-site/api-doc-jsdoc.d.cts +149 -0
- package/dist/lib/cjs/docs-site/api-doc-link-rendering.cjs +377 -0
- package/dist/lib/cjs/docs-site/api-doc-link-rendering.d.cts +185 -0
- package/dist/lib/cjs/docs-site/api-doc-package-sites.cjs +118 -0
- package/dist/lib/cjs/docs-site/api-doc-package-sites.d.cts +36 -0
- package/dist/lib/cjs/docs-site/api-doc-page-generation.cjs +561 -0
- package/dist/lib/cjs/docs-site/api-doc-page-generation.d.cts +159 -0
- package/dist/lib/cjs/docs-site/api-doc-route-segments.cjs +42 -0
- package/dist/lib/cjs/docs-site/api-doc-route-segments.d.cts +25 -0
- package/dist/lib/cjs/docs-site/api-doc-settings.cjs +47 -0
- package/dist/lib/cjs/docs-site/api-doc-settings.d.cts +53 -0
- package/dist/lib/cjs/docs-site/api-doc-source-processing.cjs +288 -0
- package/dist/lib/cjs/docs-site/api-doc-source-processing.d.cts +75 -0
- package/dist/lib/cjs/docs-site/api-doc-text-utils.cjs +281 -0
- package/dist/lib/cjs/docs-site/api-doc-text-utils.d.cts +178 -0
- package/dist/lib/cjs/docs-site/api-doc-type-merging.cjs +157 -0
- package/dist/lib/cjs/docs-site/api-doc-type-merging.d.cts +51 -0
- package/dist/lib/cjs/docs-site/api-doc-types.cjs +22 -0
- package/dist/lib/cjs/docs-site/api-doc-types.d.cts +157 -0
- package/dist/lib/cjs/docs-site/api-docs.cjs +143 -0
- package/dist/lib/cjs/docs-site/api-docs.d.cts +34 -0
- package/dist/lib/cjs/docs-site/astro-config.cjs +169 -0
- package/dist/lib/cjs/docs-site/astro-config.d.cts +23 -0
- package/dist/lib/cjs/docs-site/docs-links.cjs +123 -0
- package/dist/lib/cjs/docs-site/docs-links.d.cts +32 -0
- package/dist/lib/cjs/docs-site/docs-site-assets.cjs +64 -0
- package/dist/lib/cjs/docs-site/docs-site-assets.d.cts +23 -0
- package/dist/lib/cjs/docs-site/docs-site-commands.cjs +72 -0
- package/dist/lib/cjs/docs-site/docs-site-commands.d.cts +29 -0
- package/dist/lib/cjs/docs-site/docs-site-config.cjs +122 -0
- package/dist/lib/cjs/docs-site/docs-site-config.d.cts +162 -0
- package/dist/lib/cjs/docs-site/index.cjs +116 -0
- package/dist/lib/cjs/docs-site/index.d.cts +26 -0
- package/dist/lib/cjs/docs-site/link-check.cjs +197 -0
- package/dist/lib/cjs/docs-site/link-check.d.cts +163 -0
- package/dist/lib/cjs/docs-site/og-image-page.cjs +45 -0
- package/dist/lib/cjs/docs-site/og-image-page.d.cts +15 -0
- package/dist/lib/cjs/docs-site/og-image.cjs +326 -0
- package/dist/lib/cjs/docs-site/og-image.d.cts +70 -0
- package/dist/lib/cjs/docs-site/og-images.cjs +170 -0
- package/dist/lib/cjs/docs-site/og-images.d.cts +41 -0
- package/dist/lib/cjs/docs-site/route-data.cjs +47 -0
- package/dist/lib/cjs/docs-site/route-data.d.cts +14 -0
- package/dist/lib/cjs/docs-site/satteri-github-alerts.cjs +97 -0
- package/dist/lib/cjs/docs-site/satteri-github-alerts.d.cts +31 -0
- package/dist/lib/cjs/docs-site/satteri-relative-links.cjs +87 -0
- package/dist/lib/cjs/docs-site/satteri-relative-links.d.cts +29 -0
- package/dist/lib/cjs/docs-site/unrendered-alerts.cjs +51 -0
- package/dist/lib/cjs/docs-site/unrendered-alerts.d.cts +38 -0
- package/dist/lib/cjs/index.cjs +4 -1
- package/dist/lib/cjs/index.d.cts +1 -0
- package/dist/lib/cjs/library-build.cjs +1 -1
- package/dist/lib/cjs/library-build.d.cts +2 -2
- package/dist/lib/cjs/linters/eslint-config.cjs +17 -17
- package/dist/lib/cjs/linters/eslint-config.d.cts +1 -7
- package/dist/lib/cjs/linters/eslint-rules/in-house-plugin.cjs +2 -2
- package/dist/lib/cjs/linters/eslint-rules/in-house-plugin.d.cts +5 -8
- package/dist/lib/cjs/package-manager.cjs +2 -2
- package/dist/lib/esm/build.d.mts +1 -1
- package/dist/lib/esm/build.mjs +1 -1
- package/dist/lib/esm/commitlint-forbidden-patterns.d.mts +1 -1
- package/dist/lib/esm/commitlint-forbidden-patterns.mjs +2 -2
- package/dist/lib/esm/commitlint-spellcheck-header.d.mts +1 -1
- package/dist/lib/esm/commitlint-spellcheck-header.mjs +2 -2
- package/dist/lib/esm/docs-site/api-doc-constants.d.mts +18 -0
- package/dist/lib/esm/docs-site/api-doc-constants.mjs +143 -0
- package/dist/lib/esm/docs-site/api-doc-jsdoc.d.mts +149 -0
- package/dist/lib/esm/docs-site/api-doc-jsdoc.mjs +377 -0
- package/dist/lib/esm/docs-site/api-doc-link-rendering.d.mts +185 -0
- package/dist/lib/esm/docs-site/api-doc-link-rendering.mjs +356 -0
- package/dist/lib/esm/docs-site/api-doc-package-sites.d.mts +36 -0
- package/dist/lib/esm/docs-site/api-doc-package-sites.mjs +91 -0
- package/dist/lib/esm/docs-site/api-doc-page-generation.d.mts +159 -0
- package/dist/lib/esm/docs-site/api-doc-page-generation.mjs +548 -0
- package/dist/lib/esm/docs-site/api-doc-route-segments.d.mts +25 -0
- package/dist/lib/esm/docs-site/api-doc-route-segments.mjs +17 -0
- package/dist/lib/esm/docs-site/api-doc-settings.d.mts +53 -0
- package/dist/lib/esm/docs-site/api-doc-settings.mjs +22 -0
- package/dist/lib/esm/docs-site/api-doc-source-processing.d.mts +75 -0
- package/dist/lib/esm/docs-site/api-doc-source-processing.mjs +274 -0
- package/dist/lib/esm/docs-site/api-doc-text-utils.d.mts +178 -0
- package/dist/lib/esm/docs-site/api-doc-text-utils.mjs +239 -0
- package/dist/lib/esm/docs-site/api-doc-type-merging.d.mts +51 -0
- package/dist/lib/esm/docs-site/api-doc-type-merging.mjs +129 -0
- package/dist/lib/esm/docs-site/api-doc-types.d.mts +157 -0
- package/dist/lib/esm/docs-site/api-doc-types.mjs +6 -0
- package/dist/lib/esm/docs-site/api-docs.d.mts +34 -0
- package/dist/lib/esm/docs-site/api-docs.mjs +139 -0
- package/dist/lib/esm/docs-site/astro-config.d.mts +23 -0
- package/dist/lib/esm/docs-site/astro-config.mjs +135 -0
- package/dist/lib/esm/docs-site/docs-links.d.mts +32 -0
- package/dist/lib/esm/docs-site/docs-links.mjs +113 -0
- package/dist/lib/esm/docs-site/docs-site-assets.d.mts +23 -0
- package/dist/lib/esm/docs-site/docs-site-assets.mjs +32 -0
- package/dist/lib/esm/docs-site/docs-site-commands.d.mts +29 -0
- package/dist/lib/esm/docs-site/docs-site-commands.mjs +46 -0
- package/dist/lib/esm/docs-site/docs-site-config.d.mts +162 -0
- package/dist/lib/esm/docs-site/docs-site-config.mjs +98 -0
- package/dist/lib/esm/docs-site/index.d.mts +26 -0
- package/dist/lib/esm/docs-site/index.mjs +58 -0
- package/dist/lib/esm/docs-site/link-check.d.mts +163 -0
- package/dist/lib/esm/docs-site/link-check.mjs +166 -0
- package/dist/lib/esm/docs-site/og-image-page.d.mts +15 -0
- package/dist/lib/esm/docs-site/og-image-page.mjs +21 -0
- package/dist/lib/esm/docs-site/og-image.d.mts +70 -0
- package/dist/lib/esm/docs-site/og-image.mjs +292 -0
- package/dist/lib/esm/docs-site/og-images.d.mts +41 -0
- package/dist/lib/esm/docs-site/og-images.mjs +156 -0
- package/dist/lib/esm/docs-site/route-data.d.mts +14 -0
- package/dist/lib/esm/docs-site/route-data.mjs +23 -0
- package/dist/lib/esm/docs-site/satteri-github-alerts.d.mts +31 -0
- package/dist/lib/esm/docs-site/satteri-github-alerts.mjs +72 -0
- package/dist/lib/esm/docs-site/satteri-relative-links.d.mts +29 -0
- package/dist/lib/esm/docs-site/satteri-relative-links.mjs +63 -0
- package/dist/lib/esm/docs-site/unrendered-alerts.d.mts +38 -0
- package/dist/lib/esm/docs-site/unrendered-alerts.mjs +26 -0
- package/dist/lib/esm/index.d.mts +1 -0
- package/dist/lib/esm/index.mjs +3 -1
- package/dist/lib/esm/library-build.d.mts +2 -2
- package/dist/lib/esm/library-build.mjs +1 -1
- package/dist/lib/esm/linters/eslint-config.d.mts +1 -7
- package/dist/lib/esm/linters/eslint-config.mjs +17 -17
- package/dist/lib/esm/linters/eslint-rules/in-house-plugin.d.mts +5 -8
- package/dist/lib/esm/linters/eslint-rules/in-house-plugin.mjs +2 -2
- package/dist/lib/esm/package-manager.mjs +2 -2
- package/docs-site/api-doc-constants/package.json +6 -0
- package/docs-site/api-doc-jsdoc/package.json +6 -0
- package/docs-site/api-doc-link-rendering/package.json +6 -0
- package/docs-site/api-doc-package-sites/package.json +6 -0
- package/docs-site/api-doc-page-generation/package.json +6 -0
- package/docs-site/api-doc-route-segments/package.json +6 -0
- package/docs-site/api-doc-settings/package.json +6 -0
- package/docs-site/api-doc-source-processing/package.json +6 -0
- package/docs-site/api-doc-text-utils/package.json +6 -0
- package/docs-site/api-doc-type-merging/package.json +6 -0
- package/docs-site/api-doc-types/package.json +6 -0
- package/docs-site/api-docs/package.json +6 -0
- package/docs-site/astro-config/package.json +6 -0
- package/docs-site/docs-links/package.json +6 -0
- package/docs-site/docs-site-assets/package.json +6 -0
- package/docs-site/docs-site-commands/package.json +6 -0
- package/docs-site/docs-site-config/package.json +6 -0
- package/docs-site/index/package.json +6 -0
- package/docs-site/link-check/package.json +6 -0
- package/docs-site/og-image/package.json +6 -0
- package/docs-site/og-image-page/package.json +6 -0
- package/docs-site/og-images/package.json +6 -0
- package/docs-site/package.json +6 -0
- package/docs-site/route-data/package.json +6 -0
- package/docs-site/satteri-github-alerts/package.json +6 -0
- package/docs-site/satteri-relative-links/package.json +6 -0
- package/docs-site/unrendered-alerts/package.json +6 -0
- package/package.json +74 -4
|
@@ -215,7 +215,7 @@ function warnAboutSeveralClaimants(params) {
|
|
|
215
215
|
const lockfileNames = lockfiles.map((lockfile) => lockfile.fileName).join(", ");
|
|
216
216
|
const advice = declaredPackageManager === null ? 'Delete the stale lockfile, or declare "packageManager" in package.json, to settle it.' : "Delete the stale lockfile to settle it.";
|
|
217
217
|
const message = [
|
|
218
|
-
`
|
|
218
|
+
`typescript-dev-toolkit: more than one package manager claims ${root}.`,
|
|
219
219
|
`Lockfiles: ${lockfileNames}.`,
|
|
220
220
|
`package.json "packageManager": ${declaredPackageManager ?? "not set"}.`,
|
|
221
221
|
`Using ${packageManager}.`,
|
|
@@ -233,4 +233,4 @@ export {
|
|
|
233
233
|
getPackageManagerRunCommand,
|
|
234
234
|
resolveToolCommand
|
|
235
235
|
};
|
|
236
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wYWNrYWdlLW1hbmFnZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFJlc29sdmVzIGxvY2FsbHktaW5zdGFsbGVkIHRvb2wgYmluYXJpZXMgYW5kIHBhY2thZ2Utc2NyaXB0IHJ1bm5lcnMgd2l0aG91dCBhc3N1bWluZyBgbnBtYC5cbiAqXG4gKiBEZWxlZ2F0aW5nIHRvIGBucHhgIHNpbGVudGx5IGFzc3VtZXMgYW4gbnBtLWluc3RhbGxlZCB0cmVlLiBPbiBXaW5kb3dzIHRoYXQgYXNzdW1wdGlvbiBpcyBmYXRhbCB1bmRlclxuICogYGJ1bmA6IGBidW4gaW5zdGFsbGAgd3JpdGVzIGBub2RlX21vZHVsZXMvLmJpbi88dG9vbD4uZXhlYCwgbm90IHRoZSBgPHRvb2w+LmNtZGAgdGhhdCBucG0ncyBgbnB4YCBsb29rc1xuICogZm9yLCBzbyBgbnB4YCBtaXNzZXMgdGhlIGxvY2FsIGluc3RhbGwgZW50aXJlbHkgYW5kIGRvd25sb2FkcyB0aGUgdG9vbCBmcm9tIHRoZSByZWdpc3RyeSBpbnN0ZWFkIOKAlCB3aGljaFxuICogZm9yIGB0c2NgIGlzIHRoZSB3ZWxsLWtub3duIGRlY295IHBhY2thZ2UsIG5vdCBUeXBlU2NyaXB0LiBSZXNvbHZpbmcgdGhlIHNoaW0gZnJvbSBgbm9kZV9tb2R1bGVzLy5iaW5gXG4gKiBvdXJzZWx2ZXMgc2lkZXN0ZXBzIHRoZSB3aG9sZSBzaGltLWZvcm1hdCBxdWVzdGlvbiwgYmVjYXVzZSBldmVyeSBwYWNrYWdlIG1hbmFnZXIgd3JpdGVzIG9uZSB0aGVyZS5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IFBhY2thZ2VKc29uIH0gZnJvbSAndHlwZS1mZXN0JztcblxuaW1wb3J0IHtcbiAgZGlybmFtZSxcbiAgam9pbixcbiAgdG9Qb3NpeFBhdGhcbn0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL3BhdGgnO1xuaW1wb3J0IHsgZ2V0TWFuZGF0b3J5TmFtZWRHcm91cCB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi9yZWctZXhwJztcbmltcG9ydCB7IGFzc2VydE5ldmVyIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL3R5cGUtZ3VhcmRzJztcbmltcG9ydCB7IGV4aXN0c1N5bmMgfSBmcm9tICdub2RlOmZzJztcbmltcG9ydCBwcm9jZXNzIGZyb20gJ25vZGU6cHJvY2Vzcyc7XG5cbmltcG9ydCB7IHJlYWRKc29uU3luYyB9IGZyb20gJy4vanNvbi50cyc7XG5pbXBvcnQgeyBSZXBvUGF0aHMgfSBmcm9tICcuL3JlcG8tcGF0aHMudHMnO1xuaW1wb3J0IHsgZ2V0Um9vdEZvbGRlciB9IGZyb20gJy4vcm9vdC50cyc7XG5cbi8qKlxuICogQSBwYWNrYWdlIG1hbmFnZXIgdGhhdCBjYW4gb3duIGEgcHJvamVjdCdzIGRlcGVuZGVuY3kgdHJlZS5cbiAqL1xuZXhwb3J0IGVudW0gUGFja2FnZU1hbmFnZXIge1xuICAvKipcbiAgICogVGhlIGBidW5gIHBhY2thZ2UgbWFuYWdlci5cbiAgICovXG4gIEJ1biA9ICdidW4nLFxuXG4gIC8qKlxuICAgKiBUaGUgYG5wbWAgcGFja2FnZSBtYW5hZ2VyLlxuICAgKi9cbiAgTnBtID0gJ25wbScsXG5cbiAgLyoqXG4gICAqIFRoZSBgcG5wbWAgcGFja2FnZSBtYW5hZ2VyLlxuICAgKi9cbiAgUG5wbSA9ICdwbnBtJyxcblxuICAvKipcbiAgICogVGhlIGB5YXJuYCBwYWNrYWdlIG1hbmFnZXIuXG4gICAqL1xuICBZYXJuID0gJ3lhcm4nXG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIHJlc29sdmVUb29sQ29tbWFuZH0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVzb2x2ZVRvb2xDb21tYW5kUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBjdXJyZW50IHdvcmtpbmcgZm9sZGVyIHRvIHJlc29sdmUgZnJvbS5cbiAgICovXG4gIHJlYWRvbmx5IGN3ZD86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGxvY2FsbHktaW5zdGFsbGVkIHRvb2wsIGFzIGl0IGFwcGVhcnMgaW4gYG5vZGVfbW9kdWxlcy8uYmluYC5cbiAgICovXG4gIHJlYWRvbmx5IHRvb2w6IHN0cmluZztcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmVzIHdoaWNoIHBhY2thZ2UgbWFuYWdlciBvd25zIHRoZSBwcm9qZWN0J3MgZGVwZW5kZW5jeSB0cmVlLlxuICpcbiAqIEV2ZXJ5IHNpZ25hbCBpcyBjb2xsZWN0ZWQgYmVmb3JlIGFueSBvZiB0aGVtIGlzIGJlbGlldmVkLCBiZWNhdXNlIGEgcmVwbyBjYXJyeWluZyB0d28gbG9ja2ZpbGVzIHVzZWQgdG9cbiAqIHJlc29sdmUgdG8gd2hpY2hldmVyIHNhdCBlYXJsaWVyIGluIGEgZml4ZWQgbGlzdCDigJQgc2lsZW50bHkgcmVhc3NpZ25pbmcgZXZlcnkgcGFja2FnZSBzY3JpcHQgYW5kIGV2ZXJ5XG4gKiB0b29sIGludm9jYXRpb24gdG8gYSBtYW5hZ2VyIHRoYXQgbmV2ZXIgaW5zdGFsbGVkIHRoZSB0cmVlLlxuICpcbiAqIFRoZSBvcmRlciBpczpcbiAqXG4gKiAxLiBUaGUgYHBhY2thZ2VNYW5hZ2VyYCBmaWVsZCBvZiBgcGFja2FnZS5qc29uYC4gSXQgaXMgYSBkZWxpYmVyYXRlIGRlY2xhcmF0aW9uIGJ5IHRoZSByZXBvJ3MgYXV0aG9yXG4gKiAgICByYXRoZXIgdGhhbiBhbiBhcnRpZmFjdCBsZWZ0IGJlaGluZCBieSB3aGF0ZXZlciByYW4gbGFzdCwgc28gaXQgb3V0cmFua3MgZXZlcnkgbG9ja2ZpbGUg4oCUIGFuZCBpdCBpc1xuICogICAgdGhlIG9ubHkgc2lnbmFsIHRoYXQgaGVscHMgYXQgYWxsIGJlZm9yZSB0aGUgZmlyc3QgaW5zdGFsbCwgd2hlbiBubyBsb2NrZmlsZSBleGlzdHMgeWV0LlxuICogMi4gVGhlIHNvbGUgbG9ja2ZpbGUsIHdoZW4gZXhhY3RseSBvbmUgbWFuYWdlciBjbGFpbXMgdGhlIHRyZWUuXG4gKiAzLiBBbW9uZyBzZXZlcmFsIGxvY2tmaWxlcywgdGhlIG1hbmFnZXIgdGhhdCBsYXVuY2hlZCB1cyAoYG5wbV9jb25maWdfdXNlcl9hZ2VudGApLCB3aGVuIGl0IG93bnMgb25lIG9mXG4gKiAgICB0aGVtIOKAlCBhIGxpdmUgc2lnbmFsIGJlYXRzIGEgZmlsZSB0aGF0IG1heSBoYXZlIGJlZW4gYWJhbmRvbmVkIG1pZC1taWdyYXRpb24uIE90aGVyd2lzZSB0aGVcbiAqICAgIGRvY3VtZW50ZWQgZmFsbGJhY2sgb3JkZXIgaW4ge0BsaW5rIExPQ0tGSUxFU30gZGVjaWRlcy4gTm90ZSB0aGlzIGlzIGRlbGliZXJhdGVseSBOT1QgXCJ0aGUgbW9zdFxuICogICAgcmVjZW50bHkgbW9kaWZpZWQgbG9ja2ZpbGVcIjogYSBzdHJheSBsb2NrZmlsZSBpcyB0eXBpY2FsbHkgdGhlIG5ld2VzdCBmaWxlLCBzbyBtdGltZSBwaWNrcyBwcmVjaXNlbHlcbiAqICAgIHRoZSB3cm9uZyBvbmUuXG4gKiA0LiBgbnBtX2NvbmZpZ191c2VyX2FnZW50YCBvbiBpdHMgb3duLCB3aGVuIHRoZXJlIGlzIG5vIGxvY2tmaWxlLlxuICogNS4ge0BsaW5rIFBhY2thZ2VNYW5hZ2VyLk5wbX0uXG4gKlxuICogV2hlbmV2ZXIgbW9yZSB0aGFuIG9uZSBtYW5hZ2VyIGNsYWltcyB0aGUgdHJlZSwgdGhlIGRpc2FncmVlbWVudCBpcyByZXBvcnRlZCBvbmNlIHBlciBwcm9qZWN0IHRocm91Z2hcbiAqIHtAbGluayB3YXJuQWJvdXRTZXZlcmFsQ2xhaW1hbnRzfSDigJQgdGhlIHJlc29sdXRpb24gc3RheXMgZGV0ZXJtaW5pc3RpYywgYnV0IGl0IHN0b3BzIGJlaW5nIHNpbGVudC5cbiAqXG4gKiBAcGFyYW0gY3dkIC0gVGhlIGN1cnJlbnQgd29ya2luZyBmb2xkZXIgdG8gcmVzb2x2ZSBmcm9tLlxuICogQHJldHVybnMgVGhlIGRldGVjdGVkIHBhY2thZ2UgbWFuYWdlciwgb3Ige0BsaW5rIFBhY2thZ2VNYW5hZ2VyLk5wbX0gd2hlbiBub3RoaW5nIGluZGljYXRlcyBvdGhlcndpc2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRQYWNrYWdlTWFuYWdlcihjd2Q/OiBzdHJpbmcpOiBQYWNrYWdlTWFuYWdlciB7XG4gIGNvbnN0IHJvb3QgPSBnZXRTdGFydEZvbGRlcihjd2QpO1xuICBjb25zdCBkZWNsYXJlZFBhY2thZ2VNYW5hZ2VyID0gZGV0ZWN0UGFja2FnZU1hbmFnZXJGcm9tUGFja2FnZUpzb24ocm9vdCk7XG4gIGNvbnN0IGxvY2tmaWxlcyA9IExPQ0tGSUxFUy5maWx0ZXIoKGxvY2tmaWxlKSA9PiBleGlzdHNTeW5jKGpvaW4ocm9vdCwgbG9ja2ZpbGUuZmlsZU5hbWUpKSk7XG4gIGNvbnN0IGNsYWltYW50cyA9IG5ldyBTZXQobG9ja2ZpbGVzLm1hcCgobG9ja2ZpbGUpID0+IGxvY2tmaWxlLnBhY2thZ2VNYW5hZ2VyKSk7XG5cbiAgaWYgKGRlY2xhcmVkUGFja2FnZU1hbmFnZXIgIT09IG51bGwpIHtcbiAgICBjbGFpbWFudHMuYWRkKGRlY2xhcmVkUGFja2FnZU1hbmFnZXIpO1xuICB9XG5cbiAgY29uc3QgcGFja2FnZU1hbmFnZXIgPSByZXNvbHZlUGFja2FnZU1hbmFnZXIoe1xuICAgIGNsYWltYW50cyxcbiAgICBkZWNsYXJlZFBhY2thZ2VNYW5hZ2VyXG4gIH0pO1xuXG4gIGlmIChjbGFpbWFudHMuc2l6ZSA+IDEpIHtcbiAgICB3YXJuQWJvdXRTZXZlcmFsQ2xhaW1hbnRzKHtcbiAgICAgIGRlY2xhcmVkUGFja2FnZU1hbmFnZXIsXG4gICAgICBsb2NrZmlsZXMsXG4gICAgICBwYWNrYWdlTWFuYWdlcixcbiAgICAgIHJvb3RcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBwYWNrYWdlTWFuYWdlcjtcbn1cblxuLyoqXG4gKiBCdWlsZHMgdGhlIGNvbW1hbmQgcGFydHMgdGhhdCBydW4gYSBwYWNrYWdlIHNjcmlwdCB0aHJvdWdoIHRoZSBtYW5hZ2VyIHRoYXQgb3ducyB0aGUgdHJlZS5cbiAqXG4gKiBAcGFyYW0gY3dkIC0gVGhlIGN1cnJlbnQgd29ya2luZyBmb2xkZXIgdG8gcmVzb2x2ZSBmcm9tLlxuICogQHJldHVybnMgVGhlIGNvbW1hbmQgcGFydHMsIGUuZy4gYFsnYnVuJywgJ3J1biddYC4gVGhlIHNjcmlwdCBuYW1lIGlzIGFwcGVuZGVkIGJ5IHRoZSBjYWxsZXIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRQYWNrYWdlTWFuYWdlclJ1bkNvbW1hbmQoY3dkPzogc3RyaW5nKTogc3RyaW5nW10ge1xuICByZXR1cm4gW2dldFBhY2thZ2VNYW5hZ2VyKGN3ZCksICdydW4nXTtcbn1cblxuLyoqXG4gKiBCdWlsZHMgdGhlIGNvbW1hbmQgcGFydHMgdGhhdCBydW4gYSBsb2NhbGx5LWluc3RhbGxlZCB0b29sLCB3aXRoIHRoZSB0b29sIGl0c2VsZiBhbHJlYWR5IGluY2x1ZGVkLlxuICpcbiAqIFByZWZlcnMgdGhlIHNoaW0gaW4gdGhlIG5lYXJlc3QgYG5vZGVfbW9kdWxlcy8uYmluYCwgd2Fsa2luZyB1cCB0aHJvdWdoIGFuY2VzdG9yIGZvbGRlcnMgc28gYSBob2lzdGVkXG4gKiB3b3Jrc3BhY2UgaW5zdGFsbCBpcyBzdGlsbCBmb3VuZC4gRmFsbHMgYmFjayB0byB0aGUgb3duaW5nIG1hbmFnZXIncyBleGVjIGZvcm0gd2hlbiBubyBzaGltIHJlc29sdmVzIOKAlFxuICogd2hpY2ggaXMgYm90aCB0aGUgcHJldmlvdXMgYmVoYXZpb3IgYW5kIHRoZSBvbmx5IHRoaW5nIHRoYXQgd29ya3MgdW5kZXIgeWFybidzIFBsdWcnbidQbGF5LCB3aGVyZVxuICogYG5vZGVfbW9kdWxlcy8uYmluYCBkb2VzIG5vdCBleGlzdCBhdCBhbGwuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgcmVzb2x1dGlvbi5cbiAqIEByZXR1cm5zIFRoZSBjb21tYW5kIHBhcnRzLCBlLmcuIGBbJy9wcm9qZWN0L25vZGVfbW9kdWxlcy8uYmluL3RzYyddYCBvciBgWydidW4nLCAneCcsICd0c2MnXWAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlVG9vbENvbW1hbmQocGFyYW1zOiBSZXNvbHZlVG9vbENvbW1hbmRQYXJhbXMpOiBzdHJpbmdbXSB7XG4gIGNvbnN0IHsgY3dkLCB0b29sIH0gPSBwYXJhbXM7XG4gIGNvbnN0IHNoaW1QYXRoID0gZmluZEJpblNoaW0oeyBjd2QsIHRvb2wgfSk7XG5cbiAgcmV0dXJuIHNoaW1QYXRoID09PSBudWxsID8gWy4uLmdldFBhY2thZ2VNYW5hZ2VyRXhlY0NvbW1hbmQoY3dkKSwgdG9vbF0gOiBbc2hpbVBhdGhdO1xufVxuXG4vKipcbiAqIE1hdGNoZXMgdGhlIGxlYWRpbmcgYDxuYW1lPkBgIHRva2VuIG9mIGEgYHBhY2thZ2UuanNvbmAgYHBhY2thZ2VNYW5hZ2VyYCB2YWx1ZS5cbiAqXG4gKiBUaGUgYEBgIGlzIHJlcXVpcmVkLCBiZWNhdXNlIGNvcmVwYWNrJ3MgZm9ybWF0IGlzIGA8bmFtZT5APHZlcnNpb24+YCDigJQgYSBiYXJlIG5hbWUgaXMgYSBtYWxmb3JtZWRcbiAqIGRlY2xhcmF0aW9uIHJhdGhlciB0aGFuIGEgc2hvcnRoYW5kLCBhbmQgaXMgaWdub3JlZCBpbnN0ZWFkIG9mIGd1ZXNzZWQgYXQuXG4gKi9cbmNvbnN0IERFQ0xBUkFUSU9OX05BTUVfUkVHX0VYUCA9IC9eKD88bmFtZT5bXkBcXHNdKylALztcblxuLyoqXG4gKiBUaGUgbG9ja2ZpbGVzIHRoYXQgaWRlbnRpZnkgYSBwYWNrYWdlIG1hbmFnZXIsIGluIHRoZSBvcmRlciB0aGV5IGRlY2lkZSBhIHRpZSBubyBvdGhlciBzaWduYWwgc2V0dGxlcy5cbiAqXG4gKiBCb3RoIGJ1biBsb2NrZmlsZSBmb3JtYXRzIG1hcCB0byB0aGUgc2FtZSBtYW5hZ2VyLCBzbyBhIHJlcG8gaG9sZGluZyBib3RoIGlzIG9uZSBjbGFpbWFudCwgbm90IHR3by5cbiAqL1xuY29uc3QgTE9DS0ZJTEVTOiBMb2NrZmlsZUNsYWltW10gPSBbXG4gIHsgZmlsZU5hbWU6IFJlcG9QYXRocy5CdW5Mb2NrLCBwYWNrYWdlTWFuYWdlcjogUGFja2FnZU1hbmFnZXIuQnVuIH0sXG4gIHsgZmlsZU5hbWU6IFJlcG9QYXRocy5CdW5Mb2NrYiwgcGFja2FnZU1hbmFnZXI6IFBhY2thZ2VNYW5hZ2VyLkJ1biB9LFxuICB7IGZpbGVOYW1lOiBSZXBvUGF0aHMuUG5wbUxvY2tZYW1sLCBwYWNrYWdlTWFuYWdlcjogUGFja2FnZU1hbmFnZXIuUG5wbSB9LFxuICB7IGZpbGVOYW1lOiBSZXBvUGF0aHMuWWFybkxvY2ssIHBhY2thZ2VNYW5hZ2VyOiBQYWNrYWdlTWFuYWdlci5ZYXJuIH0sXG4gIHsgZmlsZU5hbWU6IFJlcG9QYXRocy5QYWNrYWdlTG9ja0pzb24sIHBhY2thZ2VNYW5hZ2VyOiBQYWNrYWdlTWFuYWdlci5OcG0gfVxuXTtcblxuLyoqXG4gKiBNYXRjaGVzIHRoZSBsZWFkaW5nIGA8bmFtZT4vYCB0b2tlbiBvZiBhbiBgbnBtX2NvbmZpZ191c2VyX2FnZW50YCB2YWx1ZS5cbiAqL1xuY29uc3QgVVNFUl9BR0VOVF9OQU1FX1JFR19FWFAgPSAvXig/PG5hbWU+W14vXFxzXSspXFwvLztcblxuLyoqXG4gKiBUaGUgZGlzYWdyZWVtZW50cyBhbHJlYWR5IHJlcG9ydGVkLCBzbyBhIGJ1aWxkIHRoYXQgcmVzb2x2ZXMgdGhlIG1hbmFnZXIgb25jZSBwZXIgc2NyaXB0IGhvcCBhbmQgb25jZVxuICogcGVyIHRvb2wgaW52b2NhdGlvbiBzdGlsbCBzYXlzIGl0IG9ubHkgb25jZS5cbiAqL1xuY29uc3QgcmVwb3J0ZWREaXNhZ3JlZW1lbnRzID0gbmV3IFNldDxzdHJpbmc+KCk7XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIGZpbmRCaW5TaGltfS5cbiAqL1xuaW50ZXJmYWNlIEZpbmRCaW5TaGltUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBjdXJyZW50IHdvcmtpbmcgZm9sZGVyIHRvIHJlc29sdmUgZnJvbS5cbiAgICovXG4gIHJlYWRvbmx5IGN3ZD86IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGxvY2FsbHktaW5zdGFsbGVkIHRvb2wuXG4gICAqL1xuICByZWFkb25seSB0b29sOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQSBsb2NrZmlsZSBhbmQgdGhlIHBhY2thZ2UgbWFuYWdlciB3aG9zZSBwcmVzZW5jZSBpdCBwcm92ZXMuXG4gKi9cbmludGVyZmFjZSBMb2NrZmlsZUNsYWltIHtcbiAgLyoqXG4gICAqIFRoZSBsb2NrZmlsZSBuYW1lLCBhcyBpdCBhcHBlYXJzIGF0IHRoZSBwcm9qZWN0IHJvb3QuXG4gICAqL1xuICByZWFkb25seSBmaWxlTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcGFja2FnZSBtYW5hZ2VyIHRoYXQgd3JpdGVzIHRoaXMgbG9ja2ZpbGUuXG4gICAqL1xuICByZWFkb25seSBwYWNrYWdlTWFuYWdlcjogUGFja2FnZU1hbmFnZXI7XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIHJlc29sdmVQYWNrYWdlTWFuYWdlcn0uXG4gKi9cbmludGVyZmFjZSBSZXNvbHZlUGFja2FnZU1hbmFnZXJQYXJhbXMge1xuICAvKipcbiAgICogRXZlcnkgcGFja2FnZSBtYW5hZ2VyIGNsYWltaW5nIHRoZSB0cmVlIOKAlCB0aGUgbG9ja2ZpbGUgb3duZXJzIGluIHtAbGluayBMT0NLRklMRVN9IG9yZGVyLCBwbHVzIHRoZVxuICAgKiBkZWNsYXJlZCBvbmUuIE9ubHkgY29uc3VsdGVkIHdoZW4gbm90aGluZyBpcyBkZWNsYXJlZCwgaW4gd2hpY2ggY2FzZSBpdCBob2xkcyBleGFjdGx5IHRoZSBsb2NrZmlsZVxuICAgKiBvd25lcnMuXG4gICAqL1xuICByZWFkb25seSBjbGFpbWFudHM6IFJlYWRvbmx5U2V0PFBhY2thZ2VNYW5hZ2VyPjtcblxuICAvKipcbiAgICogVGhlIHBhY2thZ2UgbWFuYWdlciBkZWNsYXJlZCBpbiBgcGFja2FnZS5qc29uYCwgb3IgYG51bGxgIHdoZW4gbm9uZSBpcy5cbiAgICovXG4gIHJlYWRvbmx5IGRlY2xhcmVkUGFja2FnZU1hbmFnZXI6IG51bGwgfCBQYWNrYWdlTWFuYWdlcjtcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgd2FybkFib3V0U2V2ZXJhbENsYWltYW50c30uXG4gKi9cbmludGVyZmFjZSBXYXJuQWJvdXRTZXZlcmFsQ2xhaW1hbnRzUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBwYWNrYWdlIG1hbmFnZXIgZGVjbGFyZWQgaW4gYHBhY2thZ2UuanNvbmAsIG9yIGBudWxsYCB3aGVuIG5vbmUgaXMuXG4gICAqL1xuICByZWFkb25seSBkZWNsYXJlZFBhY2thZ2VNYW5hZ2VyOiBudWxsIHwgUGFja2FnZU1hbmFnZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBsb2NrZmlsZXMgYWN0dWFsbHkgZm91bmQgYXQgdGhlIHByb2plY3Qgcm9vdC5cbiAgICovXG4gIHJlYWRvbmx5IGxvY2tmaWxlczogcmVhZG9ubHkgTG9ja2ZpbGVDbGFpbVtdO1xuXG4gIC8qKlxuICAgKiBUaGUgcGFja2FnZSBtYW5hZ2VyIHRoYXQgd29uLlxuICAgKi9cbiAgcmVhZG9ubHkgcGFja2FnZU1hbmFnZXI6IFBhY2thZ2VNYW5hZ2VyO1xuXG4gIC8qKlxuICAgKiBUaGUgcHJvamVjdCByb290IHRoZSBsb2NrZmlsZXMgd2VyZSBmb3VuZCBpbi5cbiAgICovXG4gIHJlYWRvbmx5IHJvb3Q6IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZWFkcyB0aGUgcGFja2FnZSBtYW5hZ2VyIG91dCBvZiB0aGUgYHBhY2thZ2VNYW5hZ2VyYCBmaWVsZCBvZiB0aGUgcHJvamVjdCdzIGBwYWNrYWdlLmpzb25gLCB3aGljaCBpc1xuICogY29yZXBhY2sncyBgPG5hbWU+QDx2ZXJzaW9uPmAgZGVjbGFyYXRpb24uXG4gKlxuICogQHBhcmFtIHJvb3QgLSBUaGUgcHJvamVjdCByb290IHRvIHJlYWQgYHBhY2thZ2UuanNvbmAgZnJvbS5cbiAqIEByZXR1cm5zIFRoZSBkZWNsYXJlZCBwYWNrYWdlIG1hbmFnZXIsIG9yIGBudWxsYCB3aGVuIHRoZXJlIGlzIG5vIGBwYWNrYWdlLmpzb25gLCBpdCBjYW5ub3QgYmUgcGFyc2VkLFxuICogdGhlIGZpZWxkIGlzIGFic2VudCBvciBtYWxmb3JtZWQsIG9yIGl0IG5hbWVzIGEgbWFuYWdlciB3ZSBkbyBub3QgaGFuZGxlLlxuICovXG5mdW5jdGlvbiBkZXRlY3RQYWNrYWdlTWFuYWdlckZyb21QYWNrYWdlSnNvbihyb290OiBzdHJpbmcpOiBudWxsIHwgUGFja2FnZU1hbmFnZXIge1xuICBjb25zdCBwYWNrYWdlSnNvblBhdGggPSBqb2luKHJvb3QsIFJlcG9QYXRocy5QYWNrYWdlSnNvbik7XG5cbiAgaWYgKCFleGlzdHNTeW5jKHBhY2thZ2VKc29uUGF0aCkpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGxldCBwYWNrYWdlSnNvbjogUGFja2FnZUpzb247XG5cbiAgdHJ5IHtcbiAgICBwYWNrYWdlSnNvbiA9IHJlYWRKc29uU3luYzxQYWNrYWdlSnNvbj4ocGFja2FnZUpzb25QYXRoKTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBkZWNsYXJhdGlvbiA9IHBhY2thZ2VKc29uLnBhY2thZ2VNYW5hZ2VyO1xuXG4gIGlmICghZGVjbGFyYXRpb24pIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNvbnN0IG1hdGNoID0gREVDTEFSQVRJT05fTkFNRV9SRUdfRVhQLmV4ZWMoZGVjbGFyYXRpb24pO1xuXG4gIHJldHVybiBtYXRjaCA/IHBhcnNlUGFja2FnZU1hbmFnZXJOYW1lKGdldE1hbmRhdG9yeU5hbWVkR3JvdXAobWF0Y2gsICduYW1lJykpIDogbnVsbDtcbn1cblxuLyoqXG4gKiBSZWFkcyB0aGUgcGFja2FnZSBtYW5hZ2VyIG91dCBvZiBgbnBtX2NvbmZpZ191c2VyX2FnZW50YCwgd2hpY2ggZXZlcnkgbWFuYWdlciBzZXRzIGZvciB0aGUgcHJvY2Vzc2VzIGl0XG4gKiBsYXVuY2hlcy5cbiAqXG4gKiBAcmV0dXJucyBUaGUgZGV0ZWN0ZWQgcGFja2FnZSBtYW5hZ2VyLCBvciBgbnVsbGAgd2hlbiB0aGUgdmFyaWFibGUgaXMgYWJzZW50LCBtYWxmb3JtZWQsIG9yIG5hbWVzIGFcbiAqIHJ1bnRpbWUgd2UgZG8gbm90IGhhbmRsZS5cbiAqL1xuZnVuY3Rpb24gZGV0ZWN0UGFja2FnZU1hbmFnZXJGcm9tVXNlckFnZW50KCk6IG51bGwgfCBQYWNrYWdlTWFuYWdlciB7XG4gIGNvbnN0IHVzZXJBZ2VudCA9IHByb2Nlc3MuZW52WyducG1fY29uZmlnX3VzZXJfYWdlbnQnXTtcblxuICBpZiAoIXVzZXJBZ2VudCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3QgbWF0Y2ggPSBVU0VSX0FHRU5UX05BTUVfUkVHX0VYUC5leGVjKHVzZXJBZ2VudCk7XG5cbiAgcmV0dXJuIG1hdGNoID8gcGFyc2VQYWNrYWdlTWFuYWdlck5hbWUoZ2V0TWFuZGF0b3J5TmFtZWRHcm91cChtYXRjaCwgJ25hbWUnKSkgOiBudWxsO1xufVxuXG4vKipcbiAqIEZpbmRzIHRoZSBgbm9kZV9tb2R1bGVzLy5iaW5gIHNoaW0gZm9yIGEgdG9vbCwgd2Fsa2luZyB1cCBmcm9tIHRoZSBwcm9qZWN0IHJvb3QgdGhyb3VnaCBhbmNlc3RvciBmb2xkZXJzLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIGxvb2t1cC5cbiAqIEByZXR1cm5zIFRoZSBhYnNvbHV0ZSBwYXRoIG9mIHRoZSBzaGltLCBvciBgbnVsbGAgd2hlbiBub25lIGV4aXN0cy5cbiAqL1xuZnVuY3Rpb24gZmluZEJpblNoaW0ocGFyYW1zOiBGaW5kQmluU2hpbVBhcmFtcyk6IG51bGwgfCBzdHJpbmcge1xuICBjb25zdCB7IGN3ZCwgdG9vbCB9ID0gcGFyYW1zO1xuICBjb25zdCBjYW5kaWRhdGVzID0gZ2V0U2hpbUNhbmRpZGF0ZXModG9vbCk7XG4gIGxldCBjdXJyZW50Rm9sZGVyID0gZ2V0U3RhcnRGb2xkZXIoY3dkKTtcblxuICB3aGlsZSAoXG4gICAgY3VycmVudEZvbGRlciAhPT0gUmVwb1BhdGhzLkN1cnJlbnRGb2xkZXIgYXMgc3RyaW5nXG4gICAgJiYgY3VycmVudEZvbGRlciAhPT0gUmVwb1BhdGhzLlJvb3RGb2xkZXIgYXMgc3RyaW5nXG4gICkge1xuICAgIGZvciAoY29uc3QgY2FuZGlkYXRlIG9mIGNhbmRpZGF0ZXMpIHtcbiAgICAgIGNvbnN0IHNoaW1QYXRoID0gam9pbihjdXJyZW50Rm9sZGVyLCBSZXBvUGF0aHMuTm9kZU1vZHVsZXMsIFJlcG9QYXRocy5CaW4sIGNhbmRpZGF0ZSk7XG4gICAgICBpZiAoZXhpc3RzU3luYyhzaGltUGF0aCkpIHtcbiAgICAgICAgcmV0dXJuIHNoaW1QYXRoO1xuICAgICAgfVxuICAgIH1cblxuICAgIGN1cnJlbnRGb2xkZXIgPSBkaXJuYW1lKGN1cnJlbnRGb2xkZXIpO1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG5cbi8qKlxuICogQnVpbGRzIHRoZSBjb21tYW5kIHBhcnRzIHRoYXQgcnVuIGEgb25lLW9mZiB0b29sIHRocm91Z2ggdGhlIG1hbmFnZXIgdGhhdCBvd25zIHRoZSB0cmVlLlxuICpcbiAqIEBwYXJhbSBjd2QgLSBUaGUgY3VycmVudCB3b3JraW5nIGZvbGRlciB0byByZXNvbHZlIGZyb20uXG4gKiBAcmV0dXJucyBUaGUgY29tbWFuZCBwYXJ0cywgZS5nLiBgWydidW4nLCAneCddYC4gVGhlIHRvb2wgbmFtZSBpcyBhcHBlbmRlZCBieSB0aGUgY2FsbGVyLlxuICovXG5mdW5jdGlvbiBnZXRQYWNrYWdlTWFuYWdlckV4ZWNDb21tYW5kKGN3ZD86IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgY29uc3QgcGFja2FnZU1hbmFnZXIgPSBnZXRQYWNrYWdlTWFuYWdlcihjd2QpO1xuXG4gIHN3aXRjaCAocGFja2FnZU1hbmFnZXIpIHtcbiAgICBjYXNlIFBhY2thZ2VNYW5hZ2VyLkJ1bjoge1xuICAgICAgcmV0dXJuIFsnYnVuJywgJ3gnXTtcbiAgICB9XG4gICAgY2FzZSBQYWNrYWdlTWFuYWdlci5OcG06IHtcbiAgICAgIHJldHVybiBbJ25weCddO1xuICAgIH1cbiAgICBjYXNlIFBhY2thZ2VNYW5hZ2VyLlBucG06IHtcbiAgICAgIHJldHVybiBbJ3BucG0nLCAnZXhlYyddO1xuICAgIH1cbiAgICBjYXNlIFBhY2thZ2VNYW5hZ2VyLllhcm46IHtcbiAgICAgIHJldHVybiBbJ3lhcm4nLCAnZXhlYyddO1xuICAgIH1cbiAgICAvKiB2OCBpZ25vcmUgc3RhcnQgLS0gRXhoYXVzdGl2ZSBzd2l0Y2ggZ3VhcmQ7IGRlZmF1bHQgYnJhbmNoIGlzIHVucmVhY2hhYmxlLiAqL1xuICAgIGRlZmF1bHQ6IHtcbiAgICAgIHJldHVybiBhc3NlcnROZXZlcihwYWNrYWdlTWFuYWdlcik7XG4gICAgfVxuICAgICAgLyogdjggaWdub3JlIHN0b3AgKi9cbiAgfVxufVxuXG4vKipcbiAqIExpc3RzIHRoZSBzaGltIGZpbGUgbmFtZXMgdG8gdHJ5IGZvciBhIHRvb2wsIG1vc3Qgc3BlY2lmaWMgZmlyc3QuXG4gKlxuICogT24gV2luZG93cyBvbmx5IHRoZSBleGVjdXRhYmxlIGZvcm1zIGFyZSB2aWFibGU6IG5wbSBhbmQgcG5wbSBhbHNvIHdyaXRlIGEgc2hpbSB3aXRoIG5vIGV4dGVuc2lvbiwgYnV0XG4gKiB0aGF0IG9uZSBpcyBhIGBzaGAgc2NyaXB0IHRoYXQgYGNtZC5leGVgIGNhbm5vdCBydW4sIHNvIGl0IG11c3QgbmV2ZXIgYmUgY2hvc2VuIHRoZXJlLlxuICpcbiAqIEBwYXJhbSB0b29sIC0gVGhlIG5hbWUgb2YgdGhlIGxvY2FsbHktaW5zdGFsbGVkIHRvb2wuXG4gKiBAcmV0dXJucyBUaGUgY2FuZGlkYXRlIGZpbGUgbmFtZXMsIGluIHRoZSBvcmRlciB0aGV5IHNob3VsZCBiZSB0cmllZC5cbiAqL1xuZnVuY3Rpb24gZ2V0U2hpbUNhbmRpZGF0ZXModG9vbDogc3RyaW5nKTogc3RyaW5nW10ge1xuICByZXR1cm4gcHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJ1xuICAgID8gW1xuICAgICAgYCR7dG9vbH0ke1JlcG9QYXRocy5Db21tYW5kRXh0ZW5zaW9ufWAsXG4gICAgICBgJHt0b29sfSR7UmVwb1BhdGhzLkV4ZUV4dGVuc2lvbn1gLFxuICAgICAgYCR7dG9vbH0ke1JlcG9QYXRocy5CYXRFeHRlbnNpb259YFxuICAgIF1cbiAgICA6IFt0b29sXTtcbn1cblxuLyoqXG4gKiBSZXNvbHZlcyB0aGUgZm9sZGVyIHRvIHN0YXJ0IGEgbG9va3VwIGZyb20g4oCUIHRoZSBwcm9qZWN0IHJvb3Qgd2hlbiB0aGVyZSBpcyBvbmUsIHRoZSB3b3JraW5nIGZvbGRlclxuICogb3RoZXJ3aXNlLlxuICpcbiAqIEBwYXJhbSBjd2QgLSBUaGUgY3VycmVudCB3b3JraW5nIGZvbGRlciB0byByZXNvbHZlIGZyb20uXG4gKiBAcmV0dXJucyBUaGUgYWJzb2x1dGUgZm9sZGVyIHRvIHN0YXJ0IGZyb20uXG4gKi9cbmZ1bmN0aW9uIGdldFN0YXJ0Rm9sZGVyKGN3ZD86IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBnZXRSb290Rm9sZGVyKGN3ZCkgPz8gdG9Qb3NpeFBhdGgoY3dkID8/IHByb2Nlc3MuY3dkKCkpO1xufVxuXG4vKipcbiAqIE1hcHMgdGhlIGJhcmUgbmFtZSBhIGxvY2tmaWxlIGRlY2xhcmF0aW9uIG9yIGEgdXNlciBhZ2VudCByZXBvcnRzIG9udG8gdGhlIHBhY2thZ2UgbWFuYWdlciBpdCBuYW1lcy5cbiAqXG4gKiBAcGFyYW0gbmFtZSAtIFRoZSByZXBvcnRlZCBuYW1lLlxuICogQHJldHVybnMgVGhlIG1hdGNoaW5nIHBhY2thZ2UgbWFuYWdlciwgb3IgYG51bGxgIGZvciBhIHJ1bnRpbWUgd2UgZG8gbm90IGhhbmRsZS5cbiAqL1xuZnVuY3Rpb24gcGFyc2VQYWNrYWdlTWFuYWdlck5hbWUobmFtZTogc3RyaW5nKTogbnVsbCB8IFBhY2thZ2VNYW5hZ2VyIHtcbiAgc3dpdGNoIChuYW1lKSB7XG4gICAgY2FzZSBQYWNrYWdlTWFuYWdlci5CdW4gYXMgc3RyaW5nOiB7XG4gICAgICByZXR1cm4gUGFja2FnZU1hbmFnZXIuQnVuO1xuICAgIH1cbiAgICBjYXNlIFBhY2thZ2VNYW5hZ2VyLk5wbSBhcyBzdHJpbmc6IHtcbiAgICAgIHJldHVybiBQYWNrYWdlTWFuYWdlci5OcG07XG4gICAgfVxuICAgIGNhc2UgUGFja2FnZU1hbmFnZXIuUG5wbSBhcyBzdHJpbmc6IHtcbiAgICAgIHJldHVybiBQYWNrYWdlTWFuYWdlci5QbnBtO1xuICAgIH1cbiAgICBjYXNlIFBhY2thZ2VNYW5hZ2VyLllhcm4gYXMgc3RyaW5nOiB7XG4gICAgICByZXR1cm4gUGFja2FnZU1hbmFnZXIuWWFybjtcbiAgICB9XG4gICAgZGVmYXVsdDoge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogUGlja3MgdGhlIHdpbm5lciBvdXQgb2YgdGhlIGNvbGxlY3RlZCBzaWduYWxzLCBwZXIgdGhlIG9yZGVyIGRvY3VtZW50ZWQgb24ge0BsaW5rIGdldFBhY2thZ2VNYW5hZ2VyfS5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSByZXNvbHV0aW9uLlxuICogQHJldHVybnMgVGhlIHBhY2thZ2UgbWFuYWdlciB0aGF0IG93bnMgdGhlIHRyZWUuXG4gKi9cbmZ1bmN0aW9uIHJlc29sdmVQYWNrYWdlTWFuYWdlcihwYXJhbXM6IFJlc29sdmVQYWNrYWdlTWFuYWdlclBhcmFtcyk6IFBhY2thZ2VNYW5hZ2VyIHtcbiAgY29uc3Qge1xuICAgIGNsYWltYW50cyxcbiAgICBkZWNsYXJlZFBhY2thZ2VNYW5hZ2VyXG4gIH0gPSBwYXJhbXM7XG5cbiAgaWYgKGRlY2xhcmVkUGFja2FnZU1hbmFnZXIgIT09IG51bGwpIHtcbiAgICByZXR1cm4gZGVjbGFyZWRQYWNrYWdlTWFuYWdlcjtcbiAgfVxuXG4gIGNvbnN0IGxvY2tmaWxlT3duZXJzID0gWy4uLmNsYWltYW50c107XG4gIGNvbnN0IFtmaXJzdExvY2tmaWxlT3duZXJdID0gbG9ja2ZpbGVPd25lcnM7XG5cbiAgaWYgKGZpcnN0TG9ja2ZpbGVPd25lciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIGRldGVjdFBhY2thZ2VNYW5hZ2VyRnJvbVVzZXJBZ2VudCgpID8/IFBhY2thZ2VNYW5hZ2VyLk5wbTtcbiAgfVxuXG4gIGlmIChsb2NrZmlsZU93bmVycy5sZW5ndGggPT09IDEpIHtcbiAgICByZXR1cm4gZmlyc3RMb2NrZmlsZU93bmVyO1xuICB9XG5cbiAgY29uc3QgbGF1bmNoZWRCeSA9IGRldGVjdFBhY2thZ2VNYW5hZ2VyRnJvbVVzZXJBZ2VudCgpO1xuXG4gIHJldHVybiBsYXVuY2hlZEJ5ICE9PSBudWxsICYmIGNsYWltYW50cy5oYXMobGF1bmNoZWRCeSkgPyBsYXVuY2hlZEJ5IDogZmlyc3RMb2NrZmlsZU93bmVyO1xufVxuXG4vKipcbiAqIFJlcG9ydHMgdGhhdCBzZXZlcmFsIHBhY2thZ2UgbWFuYWdlcnMgY2xhaW0gdGhlIHNhbWUgdHJlZSwgbmFtaW5nIGVhY2ggbG9ja2ZpbGUgZm91bmQsIHdoYXRcbiAqIGBwYWNrYWdlLmpzb25gIGRlY2xhcmVzLCBhbmQgd2hpY2ggbWFuYWdlciB3b24uXG4gKlxuICogYGNvbnNvbGUud2FybmAgcmF0aGVyIHRoYW4gYSBkZWJ1ZyBjaGFubmVsOiB0aGlzIHJ1bnMgaW4gdGhlIGJ1aWxkJ3Mgb3duIHRlcm1pbmFsLCBhbmQgYSBtZXNzYWdlIG5vYm9keVxuICogc2VlcyB1bmxlc3MgdGhleSBhbHJlYWR5IHN1c3BlY3QgdGhlIHByb2JsZW0gbGVhdmVzIHRoZSBmYWlsdXJlIGV4YWN0bHkgYXMgc2lsZW50IGFzIGl0IHdhcy4gRWFjaFxuICogZGlzdGluY3QgbWVzc2FnZSBpcyBwcmludGVkIG9uY2UsIGJlY2F1c2UgdGhlIG1hbmFnZXIgaXMgcmVzb2x2ZWQgb25jZSBwZXIgcGFja2FnZS1zY3JpcHQgaG9wIGFuZCBvbmNlXG4gKiBwZXIgdG9vbCBpbnZvY2F0aW9uLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIHJlcG9ydC5cbiAqL1xuZnVuY3Rpb24gd2FybkFib3V0U2V2ZXJhbENsYWltYW50cyhwYXJhbXM6IFdhcm5BYm91dFNldmVyYWxDbGFpbWFudHNQYXJhbXMpOiB2b2lkIHtcbiAgY29uc3Qge1xuICAgIGRlY2xhcmVkUGFja2FnZU1hbmFnZXIsXG4gICAgbG9ja2ZpbGVzLFxuICAgIHBhY2thZ2VNYW5hZ2VyLFxuICAgIHJvb3RcbiAgfSA9IHBhcmFtcztcblxuICBjb25zdCBsb2NrZmlsZU5hbWVzID0gbG9ja2ZpbGVzLm1hcCgobG9ja2ZpbGUpID0+IGxvY2tmaWxlLmZpbGVOYW1lKS5qb2luKCcsICcpO1xuICBjb25zdCBhZHZpY2UgPSBkZWNsYXJlZFBhY2thZ2VNYW5hZ2VyID09PSBudWxsXG4gICAgPyAnRGVsZXRlIHRoZSBzdGFsZSBsb2NrZmlsZSwgb3IgZGVjbGFyZSBcInBhY2thZ2VNYW5hZ2VyXCIgaW4gcGFja2FnZS5qc29uLCB0byBzZXR0bGUgaXQuJ1xuICAgIDogJ0RlbGV0ZSB0aGUgc3RhbGUgbG9ja2ZpbGUgdG8gc2V0dGxlIGl0Lic7XG4gIGNvbnN0IG1lc3NhZ2UgPSBbXG4gICAgYG9ic2lkaWFuLWRldi11dGlsczogbW9yZSB0aGFuIG9uZSBwYWNrYWdlIG1hbmFnZXIgY2xhaW1zICR7cm9vdH0uYCxcbiAgICBgTG9ja2ZpbGVzOiAke2xvY2tmaWxlTmFtZXN9LmAsXG4gICAgYHBhY2thZ2UuanNvbiBcInBhY2thZ2VNYW5hZ2VyXCI6ICR7ZGVjbGFyZWRQYWNrYWdlTWFuYWdlciA/PyAnbm90IHNldCd9LmAsXG4gICAgYFVzaW5nICR7cGFja2FnZU1hbmFnZXJ9LmAsXG4gICAgYWR2aWNlXG4gIF0uam9pbignICcpO1xuXG4gIGlmIChyZXBvcnRlZERpc2FncmVlbWVudHMuaGFzKG1lc3NhZ2UpKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgcmVwb3J0ZWREaXNhZ3JlZW1lbnRzLmFk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
|
|
236
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wYWNrYWdlLW1hbmFnZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFJlc29sdmVzIGxvY2FsbHktaW5zdGFsbGVkIHRvb2wgYmluYXJpZXMgYW5kIHBhY2thZ2Utc2NyaXB0IHJ1bm5lcnMgd2l0aG91dCBhc3N1bWluZyBgbnBtYC5cbiAqXG4gKiBEZWxlZ2F0aW5nIHRvIGBucHhgIHNpbGVudGx5IGFzc3VtZXMgYW4gbnBtLWluc3RhbGxlZCB0cmVlLiBPbiBXaW5kb3dzIHRoYXQgYXNzdW1wdGlvbiBpcyBmYXRhbCB1bmRlclxuICogYGJ1bmA6IGBidW4gaW5zdGFsbGAgd3JpdGVzIGBub2RlX21vZHVsZXMvLmJpbi88dG9vbD4uZXhlYCwgbm90IHRoZSBgPHRvb2w+LmNtZGAgdGhhdCBucG0ncyBgbnB4YCBsb29rc1xuICogZm9yLCBzbyBgbnB4YCBtaXNzZXMgdGhlIGxvY2FsIGluc3RhbGwgZW50aXJlbHkgYW5kIGRvd25sb2FkcyB0aGUgdG9vbCBmcm9tIHRoZSByZWdpc3RyeSBpbnN0ZWFkIOKAlCB3aGljaFxuICogZm9yIGB0c2NgIGlzIHRoZSB3ZWxsLWtub3duIGRlY295IHBhY2thZ2UsIG5vdCBUeXBlU2NyaXB0LiBSZXNvbHZpbmcgdGhlIHNoaW0gZnJvbSBgbm9kZV9tb2R1bGVzLy5iaW5gXG4gKiBvdXJzZWx2ZXMgc2lkZXN0ZXBzIHRoZSB3aG9sZSBzaGltLWZvcm1hdCBxdWVzdGlvbiwgYmVjYXVzZSBldmVyeSBwYWNrYWdlIG1hbmFnZXIgd3JpdGVzIG9uZSB0aGVyZS5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IFBhY2thZ2VKc29uIH0gZnJvbSAndHlwZS1mZXN0JztcblxuaW1wb3J0IHtcbiAgZGlybmFtZSxcbiAgam9pbixcbiAgdG9Qb3NpeFBhdGhcbn0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL3BhdGgnO1xuaW1wb3J0IHsgZ2V0TWFuZGF0b3J5TmFtZWRHcm91cCB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi9yZWctZXhwJztcbmltcG9ydCB7IGFzc2VydE5ldmVyIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL3R5cGUtZ3VhcmRzJztcbmltcG9ydCB7IGV4aXN0c1N5bmMgfSBmcm9tICdub2RlOmZzJztcbmltcG9ydCBwcm9jZXNzIGZyb20gJ25vZGU6cHJvY2Vzcyc7XG5cbmltcG9ydCB7IHJlYWRKc29uU3luYyB9IGZyb20gJy4vanNvbi50cyc7XG5pbXBvcnQgeyBSZXBvUGF0aHMgfSBmcm9tICcuL3JlcG8tcGF0aHMudHMnO1xuaW1wb3J0IHsgZ2V0Um9vdEZvbGRlciB9IGZyb20gJy4vcm9vdC50cyc7XG5cbi8qKlxuICogQSBwYWNrYWdlIG1hbmFnZXIgdGhhdCBjYW4gb3duIGEgcHJvamVjdCdzIGRlcGVuZGVuY3kgdHJlZS5cbiAqL1xuZXhwb3J0IGVudW0gUGFja2FnZU1hbmFnZXIge1xuICAvKipcbiAgICogVGhlIGBidW5gIHBhY2thZ2UgbWFuYWdlci5cbiAgICovXG4gIEJ1biA9ICdidW4nLFxuXG4gIC8qKlxuICAgKiBUaGUgYG5wbWAgcGFja2FnZSBtYW5hZ2VyLlxuICAgKi9cbiAgTnBtID0gJ25wbScsXG5cbiAgLyoqXG4gICAqIFRoZSBgcG5wbWAgcGFja2FnZSBtYW5hZ2VyLlxuICAgKi9cbiAgUG5wbSA9ICdwbnBtJyxcblxuICAvKipcbiAgICogVGhlIGB5YXJuYCBwYWNrYWdlIG1hbmFnZXIuXG4gICAqL1xuICBZYXJuID0gJ3lhcm4nXG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIHJlc29sdmVUb29sQ29tbWFuZH0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVzb2x2ZVRvb2xDb21tYW5kUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBjdXJyZW50IHdvcmtpbmcgZm9sZGVyIHRvIHJlc29sdmUgZnJvbS5cbiAgICovXG4gIHJlYWRvbmx5IGN3ZD86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGxvY2FsbHktaW5zdGFsbGVkIHRvb2wsIGFzIGl0IGFwcGVhcnMgaW4gYG5vZGVfbW9kdWxlcy8uYmluYC5cbiAgICovXG4gIHJlYWRvbmx5IHRvb2w6IHN0cmluZztcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmVzIHdoaWNoIHBhY2thZ2UgbWFuYWdlciBvd25zIHRoZSBwcm9qZWN0J3MgZGVwZW5kZW5jeSB0cmVlLlxuICpcbiAqIEV2ZXJ5IHNpZ25hbCBpcyBjb2xsZWN0ZWQgYmVmb3JlIGFueSBvZiB0aGVtIGlzIGJlbGlldmVkLCBiZWNhdXNlIGEgcmVwbyBjYXJyeWluZyB0d28gbG9ja2ZpbGVzIHVzZWQgdG9cbiAqIHJlc29sdmUgdG8gd2hpY2hldmVyIHNhdCBlYXJsaWVyIGluIGEgZml4ZWQgbGlzdCDigJQgc2lsZW50bHkgcmVhc3NpZ25pbmcgZXZlcnkgcGFja2FnZSBzY3JpcHQgYW5kIGV2ZXJ5XG4gKiB0b29sIGludm9jYXRpb24gdG8gYSBtYW5hZ2VyIHRoYXQgbmV2ZXIgaW5zdGFsbGVkIHRoZSB0cmVlLlxuICpcbiAqIFRoZSBvcmRlciBpczpcbiAqXG4gKiAxLiBUaGUgYHBhY2thZ2VNYW5hZ2VyYCBmaWVsZCBvZiBgcGFja2FnZS5qc29uYC4gSXQgaXMgYSBkZWxpYmVyYXRlIGRlY2xhcmF0aW9uIGJ5IHRoZSByZXBvJ3MgYXV0aG9yXG4gKiAgICByYXRoZXIgdGhhbiBhbiBhcnRpZmFjdCBsZWZ0IGJlaGluZCBieSB3aGF0ZXZlciByYW4gbGFzdCwgc28gaXQgb3V0cmFua3MgZXZlcnkgbG9ja2ZpbGUg4oCUIGFuZCBpdCBpc1xuICogICAgdGhlIG9ubHkgc2lnbmFsIHRoYXQgaGVscHMgYXQgYWxsIGJlZm9yZSB0aGUgZmlyc3QgaW5zdGFsbCwgd2hlbiBubyBsb2NrZmlsZSBleGlzdHMgeWV0LlxuICogMi4gVGhlIHNvbGUgbG9ja2ZpbGUsIHdoZW4gZXhhY3RseSBvbmUgbWFuYWdlciBjbGFpbXMgdGhlIHRyZWUuXG4gKiAzLiBBbW9uZyBzZXZlcmFsIGxvY2tmaWxlcywgdGhlIG1hbmFnZXIgdGhhdCBsYXVuY2hlZCB1cyAoYG5wbV9jb25maWdfdXNlcl9hZ2VudGApLCB3aGVuIGl0IG93bnMgb25lIG9mXG4gKiAgICB0aGVtIOKAlCBhIGxpdmUgc2lnbmFsIGJlYXRzIGEgZmlsZSB0aGF0IG1heSBoYXZlIGJlZW4gYWJhbmRvbmVkIG1pZC1taWdyYXRpb24uIE90aGVyd2lzZSB0aGVcbiAqICAgIGRvY3VtZW50ZWQgZmFsbGJhY2sgb3JkZXIgaW4ge0BsaW5rIExPQ0tGSUxFU30gZGVjaWRlcy4gTm90ZSB0aGlzIGlzIGRlbGliZXJhdGVseSBOT1QgXCJ0aGUgbW9zdFxuICogICAgcmVjZW50bHkgbW9kaWZpZWQgbG9ja2ZpbGVcIjogYSBzdHJheSBsb2NrZmlsZSBpcyB0eXBpY2FsbHkgdGhlIG5ld2VzdCBmaWxlLCBzbyBtdGltZSBwaWNrcyBwcmVjaXNlbHlcbiAqICAgIHRoZSB3cm9uZyBvbmUuXG4gKiA0LiBgbnBtX2NvbmZpZ191c2VyX2FnZW50YCBvbiBpdHMgb3duLCB3aGVuIHRoZXJlIGlzIG5vIGxvY2tmaWxlLlxuICogNS4ge0BsaW5rIFBhY2thZ2VNYW5hZ2VyLk5wbX0uXG4gKlxuICogV2hlbmV2ZXIgbW9yZSB0aGFuIG9uZSBtYW5hZ2VyIGNsYWltcyB0aGUgdHJlZSwgdGhlIGRpc2FncmVlbWVudCBpcyByZXBvcnRlZCBvbmNlIHBlciBwcm9qZWN0IHRocm91Z2hcbiAqIHtAbGluayB3YXJuQWJvdXRTZXZlcmFsQ2xhaW1hbnRzfSDigJQgdGhlIHJlc29sdXRpb24gc3RheXMgZGV0ZXJtaW5pc3RpYywgYnV0IGl0IHN0b3BzIGJlaW5nIHNpbGVudC5cbiAqXG4gKiBAcGFyYW0gY3dkIC0gVGhlIGN1cnJlbnQgd29ya2luZyBmb2xkZXIgdG8gcmVzb2x2ZSBmcm9tLlxuICogQHJldHVybnMgVGhlIGRldGVjdGVkIHBhY2thZ2UgbWFuYWdlciwgb3Ige0BsaW5rIFBhY2thZ2VNYW5hZ2VyLk5wbX0gd2hlbiBub3RoaW5nIGluZGljYXRlcyBvdGhlcndpc2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRQYWNrYWdlTWFuYWdlcihjd2Q/OiBzdHJpbmcpOiBQYWNrYWdlTWFuYWdlciB7XG4gIGNvbnN0IHJvb3QgPSBnZXRTdGFydEZvbGRlcihjd2QpO1xuICBjb25zdCBkZWNsYXJlZFBhY2thZ2VNYW5hZ2VyID0gZGV0ZWN0UGFja2FnZU1hbmFnZXJGcm9tUGFja2FnZUpzb24ocm9vdCk7XG4gIGNvbnN0IGxvY2tmaWxlcyA9IExPQ0tGSUxFUy5maWx0ZXIoKGxvY2tmaWxlKSA9PiBleGlzdHNTeW5jKGpvaW4ocm9vdCwgbG9ja2ZpbGUuZmlsZU5hbWUpKSk7XG4gIGNvbnN0IGNsYWltYW50cyA9IG5ldyBTZXQobG9ja2ZpbGVzLm1hcCgobG9ja2ZpbGUpID0+IGxvY2tmaWxlLnBhY2thZ2VNYW5hZ2VyKSk7XG5cbiAgaWYgKGRlY2xhcmVkUGFja2FnZU1hbmFnZXIgIT09IG51bGwpIHtcbiAgICBjbGFpbWFudHMuYWRkKGRlY2xhcmVkUGFja2FnZU1hbmFnZXIpO1xuICB9XG5cbiAgY29uc3QgcGFja2FnZU1hbmFnZXIgPSByZXNvbHZlUGFja2FnZU1hbmFnZXIoe1xuICAgIGNsYWltYW50cyxcbiAgICBkZWNsYXJlZFBhY2thZ2VNYW5hZ2VyXG4gIH0pO1xuXG4gIGlmIChjbGFpbWFudHMuc2l6ZSA+IDEpIHtcbiAgICB3YXJuQWJvdXRTZXZlcmFsQ2xhaW1hbnRzKHtcbiAgICAgIGRlY2xhcmVkUGFja2FnZU1hbmFnZXIsXG4gICAgICBsb2NrZmlsZXMsXG4gICAgICBwYWNrYWdlTWFuYWdlcixcbiAgICAgIHJvb3RcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBwYWNrYWdlTWFuYWdlcjtcbn1cblxuLyoqXG4gKiBCdWlsZHMgdGhlIGNvbW1hbmQgcGFydHMgdGhhdCBydW4gYSBwYWNrYWdlIHNjcmlwdCB0aHJvdWdoIHRoZSBtYW5hZ2VyIHRoYXQgb3ducyB0aGUgdHJlZS5cbiAqXG4gKiBAcGFyYW0gY3dkIC0gVGhlIGN1cnJlbnQgd29ya2luZyBmb2xkZXIgdG8gcmVzb2x2ZSBmcm9tLlxuICogQHJldHVybnMgVGhlIGNvbW1hbmQgcGFydHMsIGUuZy4gYFsnYnVuJywgJ3J1biddYC4gVGhlIHNjcmlwdCBuYW1lIGlzIGFwcGVuZGVkIGJ5IHRoZSBjYWxsZXIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRQYWNrYWdlTWFuYWdlclJ1bkNvbW1hbmQoY3dkPzogc3RyaW5nKTogc3RyaW5nW10ge1xuICByZXR1cm4gW2dldFBhY2thZ2VNYW5hZ2VyKGN3ZCksICdydW4nXTtcbn1cblxuLyoqXG4gKiBCdWlsZHMgdGhlIGNvbW1hbmQgcGFydHMgdGhhdCBydW4gYSBsb2NhbGx5LWluc3RhbGxlZCB0b29sLCB3aXRoIHRoZSB0b29sIGl0c2VsZiBhbHJlYWR5IGluY2x1ZGVkLlxuICpcbiAqIFByZWZlcnMgdGhlIHNoaW0gaW4gdGhlIG5lYXJlc3QgYG5vZGVfbW9kdWxlcy8uYmluYCwgd2Fsa2luZyB1cCB0aHJvdWdoIGFuY2VzdG9yIGZvbGRlcnMgc28gYSBob2lzdGVkXG4gKiB3b3Jrc3BhY2UgaW5zdGFsbCBpcyBzdGlsbCBmb3VuZC4gRmFsbHMgYmFjayB0byB0aGUgb3duaW5nIG1hbmFnZXIncyBleGVjIGZvcm0gd2hlbiBubyBzaGltIHJlc29sdmVzIOKAlFxuICogd2hpY2ggaXMgYm90aCB0aGUgcHJldmlvdXMgYmVoYXZpb3IgYW5kIHRoZSBvbmx5IHRoaW5nIHRoYXQgd29ya3MgdW5kZXIgeWFybidzIFBsdWcnbidQbGF5LCB3aGVyZVxuICogYG5vZGVfbW9kdWxlcy8uYmluYCBkb2VzIG5vdCBleGlzdCBhdCBhbGwuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgcmVzb2x1dGlvbi5cbiAqIEByZXR1cm5zIFRoZSBjb21tYW5kIHBhcnRzLCBlLmcuIGBbJy9wcm9qZWN0L25vZGVfbW9kdWxlcy8uYmluL3RzYyddYCBvciBgWydidW4nLCAneCcsICd0c2MnXWAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlVG9vbENvbW1hbmQocGFyYW1zOiBSZXNvbHZlVG9vbENvbW1hbmRQYXJhbXMpOiBzdHJpbmdbXSB7XG4gIGNvbnN0IHsgY3dkLCB0b29sIH0gPSBwYXJhbXM7XG4gIGNvbnN0IHNoaW1QYXRoID0gZmluZEJpblNoaW0oeyBjd2QsIHRvb2wgfSk7XG5cbiAgcmV0dXJuIHNoaW1QYXRoID09PSBudWxsID8gWy4uLmdldFBhY2thZ2VNYW5hZ2VyRXhlY0NvbW1hbmQoY3dkKSwgdG9vbF0gOiBbc2hpbVBhdGhdO1xufVxuXG4vKipcbiAqIE1hdGNoZXMgdGhlIGxlYWRpbmcgYDxuYW1lPkBgIHRva2VuIG9mIGEgYHBhY2thZ2UuanNvbmAgYHBhY2thZ2VNYW5hZ2VyYCB2YWx1ZS5cbiAqXG4gKiBUaGUgYEBgIGlzIHJlcXVpcmVkLCBiZWNhdXNlIGNvcmVwYWNrJ3MgZm9ybWF0IGlzIGA8bmFtZT5APHZlcnNpb24+YCDigJQgYSBiYXJlIG5hbWUgaXMgYSBtYWxmb3JtZWRcbiAqIGRlY2xhcmF0aW9uIHJhdGhlciB0aGFuIGEgc2hvcnRoYW5kLCBhbmQgaXMgaWdub3JlZCBpbnN0ZWFkIG9mIGd1ZXNzZWQgYXQuXG4gKi9cbmNvbnN0IERFQ0xBUkFUSU9OX05BTUVfUkVHX0VYUCA9IC9eKD88bmFtZT5bXkBcXHNdKylALztcblxuLyoqXG4gKiBUaGUgbG9ja2ZpbGVzIHRoYXQgaWRlbnRpZnkgYSBwYWNrYWdlIG1hbmFnZXIsIGluIHRoZSBvcmRlciB0aGV5IGRlY2lkZSBhIHRpZSBubyBvdGhlciBzaWduYWwgc2V0dGxlcy5cbiAqXG4gKiBCb3RoIGJ1biBsb2NrZmlsZSBmb3JtYXRzIG1hcCB0byB0aGUgc2FtZSBtYW5hZ2VyLCBzbyBhIHJlcG8gaG9sZGluZyBib3RoIGlzIG9uZSBjbGFpbWFudCwgbm90IHR3by5cbiAqL1xuY29uc3QgTE9DS0ZJTEVTOiBMb2NrZmlsZUNsYWltW10gPSBbXG4gIHsgZmlsZU5hbWU6IFJlcG9QYXRocy5CdW5Mb2NrLCBwYWNrYWdlTWFuYWdlcjogUGFja2FnZU1hbmFnZXIuQnVuIH0sXG4gIHsgZmlsZU5hbWU6IFJlcG9QYXRocy5CdW5Mb2NrYiwgcGFja2FnZU1hbmFnZXI6IFBhY2thZ2VNYW5hZ2VyLkJ1biB9LFxuICB7IGZpbGVOYW1lOiBSZXBvUGF0aHMuUG5wbUxvY2tZYW1sLCBwYWNrYWdlTWFuYWdlcjogUGFja2FnZU1hbmFnZXIuUG5wbSB9LFxuICB7IGZpbGVOYW1lOiBSZXBvUGF0aHMuWWFybkxvY2ssIHBhY2thZ2VNYW5hZ2VyOiBQYWNrYWdlTWFuYWdlci5ZYXJuIH0sXG4gIHsgZmlsZU5hbWU6IFJlcG9QYXRocy5QYWNrYWdlTG9ja0pzb24sIHBhY2thZ2VNYW5hZ2VyOiBQYWNrYWdlTWFuYWdlci5OcG0gfVxuXTtcblxuLyoqXG4gKiBNYXRjaGVzIHRoZSBsZWFkaW5nIGA8bmFtZT4vYCB0b2tlbiBvZiBhbiBgbnBtX2NvbmZpZ191c2VyX2FnZW50YCB2YWx1ZS5cbiAqL1xuY29uc3QgVVNFUl9BR0VOVF9OQU1FX1JFR19FWFAgPSAvXig/PG5hbWU+W14vXFxzXSspXFwvLztcblxuLyoqXG4gKiBUaGUgZGlzYWdyZWVtZW50cyBhbHJlYWR5IHJlcG9ydGVkLCBzbyBhIGJ1aWxkIHRoYXQgcmVzb2x2ZXMgdGhlIG1hbmFnZXIgb25jZSBwZXIgc2NyaXB0IGhvcCBhbmQgb25jZVxuICogcGVyIHRvb2wgaW52b2NhdGlvbiBzdGlsbCBzYXlzIGl0IG9ubHkgb25jZS5cbiAqL1xuY29uc3QgcmVwb3J0ZWREaXNhZ3JlZW1lbnRzID0gbmV3IFNldDxzdHJpbmc+KCk7XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIGZpbmRCaW5TaGltfS5cbiAqL1xuaW50ZXJmYWNlIEZpbmRCaW5TaGltUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBjdXJyZW50IHdvcmtpbmcgZm9sZGVyIHRvIHJlc29sdmUgZnJvbS5cbiAgICovXG4gIHJlYWRvbmx5IGN3ZD86IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGxvY2FsbHktaW5zdGFsbGVkIHRvb2wuXG4gICAqL1xuICByZWFkb25seSB0b29sOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQSBsb2NrZmlsZSBhbmQgdGhlIHBhY2thZ2UgbWFuYWdlciB3aG9zZSBwcmVzZW5jZSBpdCBwcm92ZXMuXG4gKi9cbmludGVyZmFjZSBMb2NrZmlsZUNsYWltIHtcbiAgLyoqXG4gICAqIFRoZSBsb2NrZmlsZSBuYW1lLCBhcyBpdCBhcHBlYXJzIGF0IHRoZSBwcm9qZWN0IHJvb3QuXG4gICAqL1xuICByZWFkb25seSBmaWxlTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcGFja2FnZSBtYW5hZ2VyIHRoYXQgd3JpdGVzIHRoaXMgbG9ja2ZpbGUuXG4gICAqL1xuICByZWFkb25seSBwYWNrYWdlTWFuYWdlcjogUGFja2FnZU1hbmFnZXI7XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIHJlc29sdmVQYWNrYWdlTWFuYWdlcn0uXG4gKi9cbmludGVyZmFjZSBSZXNvbHZlUGFja2FnZU1hbmFnZXJQYXJhbXMge1xuICAvKipcbiAgICogRXZlcnkgcGFja2FnZSBtYW5hZ2VyIGNsYWltaW5nIHRoZSB0cmVlIOKAlCB0aGUgbG9ja2ZpbGUgb3duZXJzIGluIHtAbGluayBMT0NLRklMRVN9IG9yZGVyLCBwbHVzIHRoZVxuICAgKiBkZWNsYXJlZCBvbmUuIE9ubHkgY29uc3VsdGVkIHdoZW4gbm90aGluZyBpcyBkZWNsYXJlZCwgaW4gd2hpY2ggY2FzZSBpdCBob2xkcyBleGFjdGx5IHRoZSBsb2NrZmlsZVxuICAgKiBvd25lcnMuXG4gICAqL1xuICByZWFkb25seSBjbGFpbWFudHM6IFJlYWRvbmx5U2V0PFBhY2thZ2VNYW5hZ2VyPjtcblxuICAvKipcbiAgICogVGhlIHBhY2thZ2UgbWFuYWdlciBkZWNsYXJlZCBpbiBgcGFja2FnZS5qc29uYCwgb3IgYG51bGxgIHdoZW4gbm9uZSBpcy5cbiAgICovXG4gIHJlYWRvbmx5IGRlY2xhcmVkUGFja2FnZU1hbmFnZXI6IG51bGwgfCBQYWNrYWdlTWFuYWdlcjtcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgd2FybkFib3V0U2V2ZXJhbENsYWltYW50c30uXG4gKi9cbmludGVyZmFjZSBXYXJuQWJvdXRTZXZlcmFsQ2xhaW1hbnRzUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBwYWNrYWdlIG1hbmFnZXIgZGVjbGFyZWQgaW4gYHBhY2thZ2UuanNvbmAsIG9yIGBudWxsYCB3aGVuIG5vbmUgaXMuXG4gICAqL1xuICByZWFkb25seSBkZWNsYXJlZFBhY2thZ2VNYW5hZ2VyOiBudWxsIHwgUGFja2FnZU1hbmFnZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBsb2NrZmlsZXMgYWN0dWFsbHkgZm91bmQgYXQgdGhlIHByb2plY3Qgcm9vdC5cbiAgICovXG4gIHJlYWRvbmx5IGxvY2tmaWxlczogcmVhZG9ubHkgTG9ja2ZpbGVDbGFpbVtdO1xuXG4gIC8qKlxuICAgKiBUaGUgcGFja2FnZSBtYW5hZ2VyIHRoYXQgd29uLlxuICAgKi9cbiAgcmVhZG9ubHkgcGFja2FnZU1hbmFnZXI6IFBhY2thZ2VNYW5hZ2VyO1xuXG4gIC8qKlxuICAgKiBUaGUgcHJvamVjdCByb290IHRoZSBsb2NrZmlsZXMgd2VyZSBmb3VuZCBpbi5cbiAgICovXG4gIHJlYWRvbmx5IHJvb3Q6IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZWFkcyB0aGUgcGFja2FnZSBtYW5hZ2VyIG91dCBvZiB0aGUgYHBhY2thZ2VNYW5hZ2VyYCBmaWVsZCBvZiB0aGUgcHJvamVjdCdzIGBwYWNrYWdlLmpzb25gLCB3aGljaCBpc1xuICogY29yZXBhY2sncyBgPG5hbWU+QDx2ZXJzaW9uPmAgZGVjbGFyYXRpb24uXG4gKlxuICogQHBhcmFtIHJvb3QgLSBUaGUgcHJvamVjdCByb290IHRvIHJlYWQgYHBhY2thZ2UuanNvbmAgZnJvbS5cbiAqIEByZXR1cm5zIFRoZSBkZWNsYXJlZCBwYWNrYWdlIG1hbmFnZXIsIG9yIGBudWxsYCB3aGVuIHRoZXJlIGlzIG5vIGBwYWNrYWdlLmpzb25gLCBpdCBjYW5ub3QgYmUgcGFyc2VkLFxuICogdGhlIGZpZWxkIGlzIGFic2VudCBvciBtYWxmb3JtZWQsIG9yIGl0IG5hbWVzIGEgbWFuYWdlciB3ZSBkbyBub3QgaGFuZGxlLlxuICovXG5mdW5jdGlvbiBkZXRlY3RQYWNrYWdlTWFuYWdlckZyb21QYWNrYWdlSnNvbihyb290OiBzdHJpbmcpOiBudWxsIHwgUGFja2FnZU1hbmFnZXIge1xuICBjb25zdCBwYWNrYWdlSnNvblBhdGggPSBqb2luKHJvb3QsIFJlcG9QYXRocy5QYWNrYWdlSnNvbik7XG5cbiAgaWYgKCFleGlzdHNTeW5jKHBhY2thZ2VKc29uUGF0aCkpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGxldCBwYWNrYWdlSnNvbjogUGFja2FnZUpzb247XG5cbiAgdHJ5IHtcbiAgICBwYWNrYWdlSnNvbiA9IHJlYWRKc29uU3luYzxQYWNrYWdlSnNvbj4ocGFja2FnZUpzb25QYXRoKTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBkZWNsYXJhdGlvbiA9IHBhY2thZ2VKc29uLnBhY2thZ2VNYW5hZ2VyO1xuXG4gIGlmICghZGVjbGFyYXRpb24pIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNvbnN0IG1hdGNoID0gREVDTEFSQVRJT05fTkFNRV9SRUdfRVhQLmV4ZWMoZGVjbGFyYXRpb24pO1xuXG4gIHJldHVybiBtYXRjaCA/IHBhcnNlUGFja2FnZU1hbmFnZXJOYW1lKGdldE1hbmRhdG9yeU5hbWVkR3JvdXAobWF0Y2gsICduYW1lJykpIDogbnVsbDtcbn1cblxuLyoqXG4gKiBSZWFkcyB0aGUgcGFja2FnZSBtYW5hZ2VyIG91dCBvZiBgbnBtX2NvbmZpZ191c2VyX2FnZW50YCwgd2hpY2ggZXZlcnkgbWFuYWdlciBzZXRzIGZvciB0aGUgcHJvY2Vzc2VzIGl0XG4gKiBsYXVuY2hlcy5cbiAqXG4gKiBAcmV0dXJucyBUaGUgZGV0ZWN0ZWQgcGFja2FnZSBtYW5hZ2VyLCBvciBgbnVsbGAgd2hlbiB0aGUgdmFyaWFibGUgaXMgYWJzZW50LCBtYWxmb3JtZWQsIG9yIG5hbWVzIGFcbiAqIHJ1bnRpbWUgd2UgZG8gbm90IGhhbmRsZS5cbiAqL1xuZnVuY3Rpb24gZGV0ZWN0UGFja2FnZU1hbmFnZXJGcm9tVXNlckFnZW50KCk6IG51bGwgfCBQYWNrYWdlTWFuYWdlciB7XG4gIGNvbnN0IHVzZXJBZ2VudCA9IHByb2Nlc3MuZW52WyducG1fY29uZmlnX3VzZXJfYWdlbnQnXTtcblxuICBpZiAoIXVzZXJBZ2VudCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3QgbWF0Y2ggPSBVU0VSX0FHRU5UX05BTUVfUkVHX0VYUC5leGVjKHVzZXJBZ2VudCk7XG5cbiAgcmV0dXJuIG1hdGNoID8gcGFyc2VQYWNrYWdlTWFuYWdlck5hbWUoZ2V0TWFuZGF0b3J5TmFtZWRHcm91cChtYXRjaCwgJ25hbWUnKSkgOiBudWxsO1xufVxuXG4vKipcbiAqIEZpbmRzIHRoZSBgbm9kZV9tb2R1bGVzLy5iaW5gIHNoaW0gZm9yIGEgdG9vbCwgd2Fsa2luZyB1cCBmcm9tIHRoZSBwcm9qZWN0IHJvb3QgdGhyb3VnaCBhbmNlc3RvciBmb2xkZXJzLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIGxvb2t1cC5cbiAqIEByZXR1cm5zIFRoZSBhYnNvbHV0ZSBwYXRoIG9mIHRoZSBzaGltLCBvciBgbnVsbGAgd2hlbiBub25lIGV4aXN0cy5cbiAqL1xuZnVuY3Rpb24gZmluZEJpblNoaW0ocGFyYW1zOiBGaW5kQmluU2hpbVBhcmFtcyk6IG51bGwgfCBzdHJpbmcge1xuICBjb25zdCB7IGN3ZCwgdG9vbCB9ID0gcGFyYW1zO1xuICBjb25zdCBjYW5kaWRhdGVzID0gZ2V0U2hpbUNhbmRpZGF0ZXModG9vbCk7XG4gIGxldCBjdXJyZW50Rm9sZGVyID0gZ2V0U3RhcnRGb2xkZXIoY3dkKTtcblxuICB3aGlsZSAoXG4gICAgY3VycmVudEZvbGRlciAhPT0gUmVwb1BhdGhzLkN1cnJlbnRGb2xkZXIgYXMgc3RyaW5nXG4gICAgJiYgY3VycmVudEZvbGRlciAhPT0gUmVwb1BhdGhzLlJvb3RGb2xkZXIgYXMgc3RyaW5nXG4gICkge1xuICAgIGZvciAoY29uc3QgY2FuZGlkYXRlIG9mIGNhbmRpZGF0ZXMpIHtcbiAgICAgIGNvbnN0IHNoaW1QYXRoID0gam9pbihjdXJyZW50Rm9sZGVyLCBSZXBvUGF0aHMuTm9kZU1vZHVsZXMsIFJlcG9QYXRocy5CaW4sIGNhbmRpZGF0ZSk7XG4gICAgICBpZiAoZXhpc3RzU3luYyhzaGltUGF0aCkpIHtcbiAgICAgICAgcmV0dXJuIHNoaW1QYXRoO1xuICAgICAgfVxuICAgIH1cblxuICAgIGN1cnJlbnRGb2xkZXIgPSBkaXJuYW1lKGN1cnJlbnRGb2xkZXIpO1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG5cbi8qKlxuICogQnVpbGRzIHRoZSBjb21tYW5kIHBhcnRzIHRoYXQgcnVuIGEgb25lLW9mZiB0b29sIHRocm91Z2ggdGhlIG1hbmFnZXIgdGhhdCBvd25zIHRoZSB0cmVlLlxuICpcbiAqIEBwYXJhbSBjd2QgLSBUaGUgY3VycmVudCB3b3JraW5nIGZvbGRlciB0byByZXNvbHZlIGZyb20uXG4gKiBAcmV0dXJucyBUaGUgY29tbWFuZCBwYXJ0cywgZS5nLiBgWydidW4nLCAneCddYC4gVGhlIHRvb2wgbmFtZSBpcyBhcHBlbmRlZCBieSB0aGUgY2FsbGVyLlxuICovXG5mdW5jdGlvbiBnZXRQYWNrYWdlTWFuYWdlckV4ZWNDb21tYW5kKGN3ZD86IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgY29uc3QgcGFja2FnZU1hbmFnZXIgPSBnZXRQYWNrYWdlTWFuYWdlcihjd2QpO1xuXG4gIHN3aXRjaCAocGFja2FnZU1hbmFnZXIpIHtcbiAgICBjYXNlIFBhY2thZ2VNYW5hZ2VyLkJ1bjoge1xuICAgICAgcmV0dXJuIFsnYnVuJywgJ3gnXTtcbiAgICB9XG4gICAgY2FzZSBQYWNrYWdlTWFuYWdlci5OcG06IHtcbiAgICAgIHJldHVybiBbJ25weCddO1xuICAgIH1cbiAgICBjYXNlIFBhY2thZ2VNYW5hZ2VyLlBucG06IHtcbiAgICAgIHJldHVybiBbJ3BucG0nLCAnZXhlYyddO1xuICAgIH1cbiAgICBjYXNlIFBhY2thZ2VNYW5hZ2VyLllhcm46IHtcbiAgICAgIHJldHVybiBbJ3lhcm4nLCAnZXhlYyddO1xuICAgIH1cbiAgICAvKiB2OCBpZ25vcmUgc3RhcnQgLS0gRXhoYXVzdGl2ZSBzd2l0Y2ggZ3VhcmQ7IGRlZmF1bHQgYnJhbmNoIGlzIHVucmVhY2hhYmxlLiAqL1xuICAgIGRlZmF1bHQ6IHtcbiAgICAgIHJldHVybiBhc3NlcnROZXZlcihwYWNrYWdlTWFuYWdlcik7XG4gICAgfVxuICAgICAgLyogdjggaWdub3JlIHN0b3AgKi9cbiAgfVxufVxuXG4vKipcbiAqIExpc3RzIHRoZSBzaGltIGZpbGUgbmFtZXMgdG8gdHJ5IGZvciBhIHRvb2wsIG1vc3Qgc3BlY2lmaWMgZmlyc3QuXG4gKlxuICogT24gV2luZG93cyBvbmx5IHRoZSBleGVjdXRhYmxlIGZvcm1zIGFyZSB2aWFibGU6IG5wbSBhbmQgcG5wbSBhbHNvIHdyaXRlIGEgc2hpbSB3aXRoIG5vIGV4dGVuc2lvbiwgYnV0XG4gKiB0aGF0IG9uZSBpcyBhIGBzaGAgc2NyaXB0IHRoYXQgYGNtZC5leGVgIGNhbm5vdCBydW4sIHNvIGl0IG11c3QgbmV2ZXIgYmUgY2hvc2VuIHRoZXJlLlxuICpcbiAqIEBwYXJhbSB0b29sIC0gVGhlIG5hbWUgb2YgdGhlIGxvY2FsbHktaW5zdGFsbGVkIHRvb2wuXG4gKiBAcmV0dXJucyBUaGUgY2FuZGlkYXRlIGZpbGUgbmFtZXMsIGluIHRoZSBvcmRlciB0aGV5IHNob3VsZCBiZSB0cmllZC5cbiAqL1xuZnVuY3Rpb24gZ2V0U2hpbUNhbmRpZGF0ZXModG9vbDogc3RyaW5nKTogc3RyaW5nW10ge1xuICByZXR1cm4gcHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJ1xuICAgID8gW1xuICAgICAgYCR7dG9vbH0ke1JlcG9QYXRocy5Db21tYW5kRXh0ZW5zaW9ufWAsXG4gICAgICBgJHt0b29sfSR7UmVwb1BhdGhzLkV4ZUV4dGVuc2lvbn1gLFxuICAgICAgYCR7dG9vbH0ke1JlcG9QYXRocy5CYXRFeHRlbnNpb259YFxuICAgIF1cbiAgICA6IFt0b29sXTtcbn1cblxuLyoqXG4gKiBSZXNvbHZlcyB0aGUgZm9sZGVyIHRvIHN0YXJ0IGEgbG9va3VwIGZyb20g4oCUIHRoZSBwcm9qZWN0IHJvb3Qgd2hlbiB0aGVyZSBpcyBvbmUsIHRoZSB3b3JraW5nIGZvbGRlclxuICogb3RoZXJ3aXNlLlxuICpcbiAqIEBwYXJhbSBjd2QgLSBUaGUgY3VycmVudCB3b3JraW5nIGZvbGRlciB0byByZXNvbHZlIGZyb20uXG4gKiBAcmV0dXJucyBUaGUgYWJzb2x1dGUgZm9sZGVyIHRvIHN0YXJ0IGZyb20uXG4gKi9cbmZ1bmN0aW9uIGdldFN0YXJ0Rm9sZGVyKGN3ZD86IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBnZXRSb290Rm9sZGVyKGN3ZCkgPz8gdG9Qb3NpeFBhdGgoY3dkID8/IHByb2Nlc3MuY3dkKCkpO1xufVxuXG4vKipcbiAqIE1hcHMgdGhlIGJhcmUgbmFtZSBhIGxvY2tmaWxlIGRlY2xhcmF0aW9uIG9yIGEgdXNlciBhZ2VudCByZXBvcnRzIG9udG8gdGhlIHBhY2thZ2UgbWFuYWdlciBpdCBuYW1lcy5cbiAqXG4gKiBAcGFyYW0gbmFtZSAtIFRoZSByZXBvcnRlZCBuYW1lLlxuICogQHJldHVybnMgVGhlIG1hdGNoaW5nIHBhY2thZ2UgbWFuYWdlciwgb3IgYG51bGxgIGZvciBhIHJ1bnRpbWUgd2UgZG8gbm90IGhhbmRsZS5cbiAqL1xuZnVuY3Rpb24gcGFyc2VQYWNrYWdlTWFuYWdlck5hbWUobmFtZTogc3RyaW5nKTogbnVsbCB8IFBhY2thZ2VNYW5hZ2VyIHtcbiAgc3dpdGNoIChuYW1lKSB7XG4gICAgY2FzZSBQYWNrYWdlTWFuYWdlci5CdW4gYXMgc3RyaW5nOiB7XG4gICAgICByZXR1cm4gUGFja2FnZU1hbmFnZXIuQnVuO1xuICAgIH1cbiAgICBjYXNlIFBhY2thZ2VNYW5hZ2VyLk5wbSBhcyBzdHJpbmc6IHtcbiAgICAgIHJldHVybiBQYWNrYWdlTWFuYWdlci5OcG07XG4gICAgfVxuICAgIGNhc2UgUGFja2FnZU1hbmFnZXIuUG5wbSBhcyBzdHJpbmc6IHtcbiAgICAgIHJldHVybiBQYWNrYWdlTWFuYWdlci5QbnBtO1xuICAgIH1cbiAgICBjYXNlIFBhY2thZ2VNYW5hZ2VyLllhcm4gYXMgc3RyaW5nOiB7XG4gICAgICByZXR1cm4gUGFja2FnZU1hbmFnZXIuWWFybjtcbiAgICB9XG4gICAgZGVmYXVsdDoge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogUGlja3MgdGhlIHdpbm5lciBvdXQgb2YgdGhlIGNvbGxlY3RlZCBzaWduYWxzLCBwZXIgdGhlIG9yZGVyIGRvY3VtZW50ZWQgb24ge0BsaW5rIGdldFBhY2thZ2VNYW5hZ2VyfS5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSByZXNvbHV0aW9uLlxuICogQHJldHVybnMgVGhlIHBhY2thZ2UgbWFuYWdlciB0aGF0IG93bnMgdGhlIHRyZWUuXG4gKi9cbmZ1bmN0aW9uIHJlc29sdmVQYWNrYWdlTWFuYWdlcihwYXJhbXM6IFJlc29sdmVQYWNrYWdlTWFuYWdlclBhcmFtcyk6IFBhY2thZ2VNYW5hZ2VyIHtcbiAgY29uc3Qge1xuICAgIGNsYWltYW50cyxcbiAgICBkZWNsYXJlZFBhY2thZ2VNYW5hZ2VyXG4gIH0gPSBwYXJhbXM7XG5cbiAgaWYgKGRlY2xhcmVkUGFja2FnZU1hbmFnZXIgIT09IG51bGwpIHtcbiAgICByZXR1cm4gZGVjbGFyZWRQYWNrYWdlTWFuYWdlcjtcbiAgfVxuXG4gIGNvbnN0IGxvY2tmaWxlT3duZXJzID0gWy4uLmNsYWltYW50c107XG4gIGNvbnN0IFtmaXJzdExvY2tmaWxlT3duZXJdID0gbG9ja2ZpbGVPd25lcnM7XG5cbiAgaWYgKGZpcnN0TG9ja2ZpbGVPd25lciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIGRldGVjdFBhY2thZ2VNYW5hZ2VyRnJvbVVzZXJBZ2VudCgpID8/IFBhY2thZ2VNYW5hZ2VyLk5wbTtcbiAgfVxuXG4gIGlmIChsb2NrZmlsZU93bmVycy5sZW5ndGggPT09IDEpIHtcbiAgICByZXR1cm4gZmlyc3RMb2NrZmlsZU93bmVyO1xuICB9XG5cbiAgY29uc3QgbGF1bmNoZWRCeSA9IGRldGVjdFBhY2thZ2VNYW5hZ2VyRnJvbVVzZXJBZ2VudCgpO1xuXG4gIHJldHVybiBsYXVuY2hlZEJ5ICE9PSBudWxsICYmIGNsYWltYW50cy5oYXMobGF1bmNoZWRCeSkgPyBsYXVuY2hlZEJ5IDogZmlyc3RMb2NrZmlsZU93bmVyO1xufVxuXG4vKipcbiAqIFJlcG9ydHMgdGhhdCBzZXZlcmFsIHBhY2thZ2UgbWFuYWdlcnMgY2xhaW0gdGhlIHNhbWUgdHJlZSwgbmFtaW5nIGVhY2ggbG9ja2ZpbGUgZm91bmQsIHdoYXRcbiAqIGBwYWNrYWdlLmpzb25gIGRlY2xhcmVzLCBhbmQgd2hpY2ggbWFuYWdlciB3b24uXG4gKlxuICogYGNvbnNvbGUud2FybmAgcmF0aGVyIHRoYW4gYSBkZWJ1ZyBjaGFubmVsOiB0aGlzIHJ1bnMgaW4gdGhlIGJ1aWxkJ3Mgb3duIHRlcm1pbmFsLCBhbmQgYSBtZXNzYWdlIG5vYm9keVxuICogc2VlcyB1bmxlc3MgdGhleSBhbHJlYWR5IHN1c3BlY3QgdGhlIHByb2JsZW0gbGVhdmVzIHRoZSBmYWlsdXJlIGV4YWN0bHkgYXMgc2lsZW50IGFzIGl0IHdhcy4gRWFjaFxuICogZGlzdGluY3QgbWVzc2FnZSBpcyBwcmludGVkIG9uY2UsIGJlY2F1c2UgdGhlIG1hbmFnZXIgaXMgcmVzb2x2ZWQgb25jZSBwZXIgcGFja2FnZS1zY3JpcHQgaG9wIGFuZCBvbmNlXG4gKiBwZXIgdG9vbCBpbnZvY2F0aW9uLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIHJlcG9ydC5cbiAqL1xuZnVuY3Rpb24gd2FybkFib3V0U2V2ZXJhbENsYWltYW50cyhwYXJhbXM6IFdhcm5BYm91dFNldmVyYWxDbGFpbWFudHNQYXJhbXMpOiB2b2lkIHtcbiAgY29uc3Qge1xuICAgIGRlY2xhcmVkUGFja2FnZU1hbmFnZXIsXG4gICAgbG9ja2ZpbGVzLFxuICAgIHBhY2thZ2VNYW5hZ2VyLFxuICAgIHJvb3RcbiAgfSA9IHBhcmFtcztcblxuICBjb25zdCBsb2NrZmlsZU5hbWVzID0gbG9ja2ZpbGVzLm1hcCgobG9ja2ZpbGUpID0+IGxvY2tmaWxlLmZpbGVOYW1lKS5qb2luKCcsICcpO1xuICBjb25zdCBhZHZpY2UgPSBkZWNsYXJlZFBhY2thZ2VNYW5hZ2VyID09PSBudWxsXG4gICAgPyAnRGVsZXRlIHRoZSBzdGFsZSBsb2NrZmlsZSwgb3IgZGVjbGFyZSBcInBhY2thZ2VNYW5hZ2VyXCIgaW4gcGFja2FnZS5qc29uLCB0byBzZXR0bGUgaXQuJ1xuICAgIDogJ0RlbGV0ZSB0aGUgc3RhbGUgbG9ja2ZpbGUgdG8gc2V0dGxlIGl0Lic7XG4gIGNvbnN0IG1lc3NhZ2UgPSBbXG4gICAgYHR5cGVzY3JpcHQtZGV2LXRvb2xraXQ6IG1vcmUgdGhhbiBvbmUgcGFja2FnZSBtYW5hZ2VyIGNsYWltcyAke3Jvb3R9LmAsXG4gICAgYExvY2tmaWxlczogJHtsb2NrZmlsZU5hbWVzfS5gLFxuICAgIGBwYWNrYWdlLmpzb24gXCJwYWNrYWdlTWFuYWdlclwiOiAke2RlY2xhcmVkUGFja2FnZU1hbmFnZXIgPz8gJ25vdCBzZXQnfS5gLFxuICAgIGBVc2luZyAke3BhY2thZ2VNYW5hZ2VyfS5gLFxuICAgIGFkdmljZVxuICBdLmpvaW4oJyAnKTtcblxuICBpZiAocmVwb3J0ZWREaXNhZ3JlZW1lbnRzLmhhcyhtZXNzYWdlKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHJlcG9ydGVkRGlzYWdyZWVtZW50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
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mnaoumov/typescript-dev-toolkit",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.0.0",
|
|
4
4
|
"description": "Generic TypeScript project tooling: build, lint, format, spellcheck, test, gate and release scripts.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"typescript",
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"eslint",
|
|
9
9
|
"esbuild"
|
|
10
10
|
],
|
|
11
|
-
"homepage": "https://
|
|
11
|
+
"homepage": "https://mnaoumov.dev/typescript-dev-toolkit/",
|
|
12
12
|
"bugs": {
|
|
13
13
|
"url": "https://github.com/mnaoumov/typescript-dev-toolkit/issues"
|
|
14
14
|
},
|
|
@@ -80,6 +80,26 @@
|
|
|
80
80
|
"default": "./dist/lib/cjs/bundlers/esbuild-impl/*.cjs"
|
|
81
81
|
}
|
|
82
82
|
},
|
|
83
|
+
"./docs-site": {
|
|
84
|
+
"import": {
|
|
85
|
+
"types": "./dist/lib/esm/docs-site/index.d.mts",
|
|
86
|
+
"default": "./dist/lib/esm/docs-site/index.mjs"
|
|
87
|
+
},
|
|
88
|
+
"require": {
|
|
89
|
+
"types": "./dist/lib/cjs/docs-site/index.d.cts",
|
|
90
|
+
"default": "./dist/lib/cjs/docs-site/index.cjs"
|
|
91
|
+
}
|
|
92
|
+
},
|
|
93
|
+
"./docs-site/*": {
|
|
94
|
+
"import": {
|
|
95
|
+
"types": "./dist/lib/esm/docs-site/*.d.mts",
|
|
96
|
+
"default": "./dist/lib/esm/docs-site/*.mjs"
|
|
97
|
+
},
|
|
98
|
+
"require": {
|
|
99
|
+
"types": "./dist/lib/cjs/docs-site/*.d.cts",
|
|
100
|
+
"default": "./dist/lib/cjs/docs-site/*.cjs"
|
|
101
|
+
}
|
|
102
|
+
},
|
|
83
103
|
"./formatters": {
|
|
84
104
|
"import": {
|
|
85
105
|
"types": "./dist/lib/esm/formatters/index.d.mts",
|
|
@@ -219,6 +239,7 @@
|
|
|
219
239
|
},
|
|
220
240
|
"files": [
|
|
221
241
|
"**/package.json",
|
|
242
|
+
"assets/",
|
|
222
243
|
"dist/",
|
|
223
244
|
"!dist/*.tgz",
|
|
224
245
|
"README.md",
|
|
@@ -235,6 +256,9 @@
|
|
|
235
256
|
"build:types": "jiti scripts/build-types.ts",
|
|
236
257
|
"build:validate-declarations": "jiti scripts/build-validate-declarations.ts",
|
|
237
258
|
"commit": "jiti scripts/commit.ts",
|
|
259
|
+
"docs:build": "jiti scripts/docs-build.ts",
|
|
260
|
+
"docs:dev": "jiti scripts/docs-dev.ts",
|
|
261
|
+
"docs:preview": "jiti scripts/docs-preview.ts",
|
|
238
262
|
"find-overexposed": "jiti scripts/find-overexposed.ts",
|
|
239
263
|
"find-overexposed:fix": "jiti scripts/find-overexposed-fix.ts",
|
|
240
264
|
"format": "jiti scripts/format.ts",
|
|
@@ -287,11 +311,16 @@
|
|
|
287
311
|
"typescript-eslint": "^8.71.2"
|
|
288
312
|
},
|
|
289
313
|
"devDependencies": {
|
|
314
|
+
"@astrojs/markdown-satteri": "^0.4.4",
|
|
315
|
+
"@astrojs/starlight": "^0.42.6",
|
|
290
316
|
"@commitlint/cli": "^21.2.2",
|
|
291
317
|
"@commitlint/config-conventional": "^21.2.2",
|
|
292
318
|
"@mnaoumov/typescript-test-toolkit": "^1.0.0",
|
|
319
|
+
"@resvg/resvg-js": "^2.6.2",
|
|
293
320
|
"@total-typescript/ts-reset": "^0.6.1",
|
|
321
|
+
"@types/mdast": "^4.0.4",
|
|
294
322
|
"@vitest/coverage-v8": "^5.0.1",
|
|
323
|
+
"astro": "^7.4.0",
|
|
295
324
|
"better-typescript-lib": "^2.12.0",
|
|
296
325
|
"czg": "^1.14.0",
|
|
297
326
|
"dedent": "^1.7.2",
|
|
@@ -299,15 +328,56 @@
|
|
|
299
328
|
"eslint-plugin-tsdoc": "^0.5.3",
|
|
300
329
|
"husky": "^9.1.7",
|
|
301
330
|
"nano-staged": "^1.0.2",
|
|
331
|
+
"satori": "^0.33.5",
|
|
332
|
+
"satteri": "^0.10.5",
|
|
333
|
+
"ts-morph": "^28.0.0",
|
|
302
334
|
"tslib": "^2.8.1",
|
|
303
|
-
"
|
|
335
|
+
"typedoc-plugin-mdn-links": "^5.1.1",
|
|
336
|
+
"vitest": "^5.0.1",
|
|
337
|
+
"yaml": "^2.9.1"
|
|
304
338
|
},
|
|
305
339
|
"peerDependencies": {
|
|
306
|
-
"
|
|
340
|
+
"@astrojs/markdown-satteri": "^0.4.4",
|
|
341
|
+
"@astrojs/starlight": "^0.42.6",
|
|
342
|
+
"@resvg/resvg-js": "^2.6.2",
|
|
343
|
+
"astro": "^7.4.0",
|
|
344
|
+
"satori": "^0.33.5",
|
|
345
|
+
"satteri": "^0.10.5",
|
|
346
|
+
"ts-morph": "^28.0.0",
|
|
347
|
+
"typedoc-plugin-mdn-links": "^5.1.1",
|
|
348
|
+
"vitest": "^5.0.1",
|
|
349
|
+
"yaml": "^2.9.1"
|
|
307
350
|
},
|
|
308
351
|
"peerDependenciesMeta": {
|
|
352
|
+
"@astrojs/markdown-satteri": {
|
|
353
|
+
"optional": true
|
|
354
|
+
},
|
|
355
|
+
"@astrojs/starlight": {
|
|
356
|
+
"optional": true
|
|
357
|
+
},
|
|
358
|
+
"@resvg/resvg-js": {
|
|
359
|
+
"optional": true
|
|
360
|
+
},
|
|
361
|
+
"astro": {
|
|
362
|
+
"optional": true
|
|
363
|
+
},
|
|
364
|
+
"satori": {
|
|
365
|
+
"optional": true
|
|
366
|
+
},
|
|
367
|
+
"satteri": {
|
|
368
|
+
"optional": true
|
|
369
|
+
},
|
|
370
|
+
"ts-morph": {
|
|
371
|
+
"optional": true
|
|
372
|
+
},
|
|
373
|
+
"typedoc-plugin-mdn-links": {
|
|
374
|
+
"optional": true
|
|
375
|
+
},
|
|
309
376
|
"vitest": {
|
|
310
377
|
"optional": true
|
|
378
|
+
},
|
|
379
|
+
"yaml": {
|
|
380
|
+
"optional": true
|
|
311
381
|
}
|
|
312
382
|
},
|
|
313
383
|
"engines": {
|