sonamu 0.12.0 → 0.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_virtual/_rolldown/runtime.js +1 -2
- package/dist/ai/agents/agent.js +2 -3
- package/dist/ai/agents/index.js +1 -2
- package/dist/ai/index.js +1 -2
- package/dist/ai/providers/rtzr/api.js +1 -2
- package/dist/ai/providers/rtzr/error.js +2 -3
- package/dist/ai/providers/rtzr/model.js +1 -2
- package/dist/ai/providers/rtzr/options.js +1 -2
- package/dist/ai/providers/rtzr/provider.js +1 -2
- package/dist/ai/providers/rtzr/utils.js +1 -2
- package/dist/api/base-frame.js +4 -4
- package/dist/api/caster.d.ts +1 -1
- package/dist/api/caster.d.ts.map +1 -1
- package/dist/api/caster.js +9 -9
- package/dist/api/code-converters.js +6 -5
- package/dist/api/config.d.ts +1 -1
- package/dist/api/config.d.ts.map +1 -1
- package/dist/api/config.js +2 -3
- package/dist/api/context.d.ts +2 -3
- package/dist/api/context.d.ts.map +1 -1
- package/dist/api/context.js +2 -3
- package/dist/api/decorators.js +2 -3
- package/dist/api/http-validator.js +2 -3
- package/dist/api/index.js +8 -3
- package/dist/api/secret.js +1 -2
- package/dist/api/sonamu.d.ts +3 -5
- package/dist/api/sonamu.d.ts.map +1 -1
- package/dist/api/sonamu.js +19 -18
- package/dist/api/validator.js +1 -2
- package/dist/api/websocket-helpers.js +2 -3
- package/dist/auth/audit-log/builders.js +1 -2
- package/dist/auth/audit-log/client-ip.js +2 -3
- package/dist/auth/audit-log/events.js +1 -2
- package/dist/auth/audit-log/plugin.d.ts.map +1 -1
- package/dist/auth/audit-log/plugin.js +2 -3
- package/dist/auth/audit-log-ingestor.js +2 -3
- package/dist/auth/auth-generator.js +2 -3
- package/dist/auth/better-auth-entities.js +1 -2
- package/dist/auth/better-auth-request.js +2 -3
- package/dist/auth/index.js +2 -3
- package/dist/auth/knex-adapter.js +2 -3
- package/dist/auth/plugins/entity-definitions/admin.js +1 -2
- package/dist/auth/plugins/entity-definitions/anonymous.js +1 -2
- package/dist/auth/plugins/entity-definitions/api-key.js +1 -2
- package/dist/auth/plugins/entity-definitions/audit-log.js +1 -2
- package/dist/auth/plugins/entity-definitions/index.js +1 -2
- package/dist/auth/plugins/entity-definitions/jwt.js +1 -2
- package/dist/auth/plugins/entity-definitions/organization.js +1 -2
- package/dist/auth/plugins/entity-definitions/passkey.js +1 -2
- package/dist/auth/plugins/entity-definitions/phone-number.js +1 -2
- package/dist/auth/plugins/entity-definitions/sso.js +1 -2
- package/dist/auth/plugins/entity-definitions/two-factor.js +1 -2
- package/dist/auth/plugins/entity-definitions/username.js +1 -2
- package/dist/auth/plugins/wrappers/admin.d.ts +33 -32
- package/dist/auth/plugins/wrappers/admin.d.ts.map +1 -1
- package/dist/auth/plugins/wrappers/admin.js +2 -3
- package/dist/auth/plugins/wrappers/anonymous.js +2 -3
- package/dist/auth/plugins/wrappers/api-key.js +2 -3
- package/dist/auth/plugins/wrappers/jwt.js +2 -3
- package/dist/auth/plugins/wrappers/organization.js +2 -3
- package/dist/auth/plugins/wrappers/passkey.js +2 -3
- package/dist/auth/plugins/wrappers/phone-number.d.ts +43 -1
- package/dist/auth/plugins/wrappers/phone-number.d.ts.map +1 -1
- package/dist/auth/plugins/wrappers/phone-number.js +2 -3
- package/dist/auth/plugins/wrappers/sso.d.ts +138 -187
- package/dist/auth/plugins/wrappers/sso.d.ts.map +1 -1
- package/dist/auth/plugins/wrappers/sso.js +1 -2
- package/dist/auth/plugins/wrappers/two-factor.d.ts +51 -10
- package/dist/auth/plugins/wrappers/two-factor.d.ts.map +1 -1
- package/dist/auth/plugins/wrappers/two-factor.js +2 -3
- package/dist/auth/plugins/wrappers/username.d.ts +39 -5
- package/dist/auth/plugins/wrappers/username.d.ts.map +1 -1
- package/dist/auth/plugins/wrappers/username.js +2 -3
- package/dist/bin/build-config.js +5 -5
- package/dist/bin/compiler-policy.js +2 -3
- package/dist/bin/fixture.js +7 -5
- package/dist/bin/hmr-hook-register.js +1 -2
- package/dist/bin/migrate-targets.js +2 -3
- package/dist/bin/test-command.js +2 -3
- package/dist/bin/ts-loader-register.js +2 -3
- package/dist/bin/ts-loader-registration.js +2 -3
- package/dist/bin/typecheck-web.js +2 -3
- package/dist/cache/cache-manager.js +1 -2
- package/dist/cache/decorator.js +2 -3
- package/dist/cache/drivers.js +1 -2
- package/dist/cache/index.js +2 -3
- package/dist/cache-control/cache-control.js +1 -2
- package/dist/code-formatting/index.js +2 -3
- package/dist/code-formatting/oxfmt.js +2 -3
- package/dist/code-formatting/oxlint.js +2 -3
- package/dist/compress/compress.js +1 -2
- package/dist/compress/index.js +2 -2
- package/dist/compress/types.d.ts +1 -1
- package/dist/compress/types.d.ts.map +1 -1
- package/dist/cone/cone-generator.js +2 -3
- package/dist/database/_batch_update.js +1 -2
- package/dist/database/base-model.js +4 -4
- package/dist/database/db.js +4 -4
- package/dist/database/knex.js +2 -3
- package/dist/database/puri-wrapper.js +2 -3
- package/dist/database/puri.js +23 -22
- package/dist/database/puri.types.js +1 -2
- package/dist/database/transaction-context.js +1 -2
- package/dist/database/upsert-builder.js +2 -3
- package/dist/dict/en.js +2 -3
- package/dist/dict/index.js +3 -3
- package/dist/dict/ko.js +2 -3
- package/dist/dict/rc-keys.js +1 -2
- package/dist/dict/sd.js +2 -3
- package/dist/dict/sonamu-dictionary.js +7 -6
- package/dist/dict/utils.js +2 -3
- package/dist/entity/entity-manager.d.ts +66 -66
- package/dist/entity/entity-manager.js +4 -4
- package/dist/entity/entity-template-cone.js +2 -3
- package/dist/entity/entity.js +21 -18
- package/dist/env.js +1 -2
- package/dist/exceptions/error-handler.d.ts.map +1 -1
- package/dist/exceptions/error-handler.js +2 -3
- package/dist/exceptions/so-exceptions.js +2 -3
- package/dist/filter/index.js +3 -2
- package/dist/filter/types.js +1 -2
- package/dist/filter/utils.js +7 -6
- package/dist/index.js +39 -5
- package/dist/logger/category.js +2 -3
- package/dist/logger/configure.js +5 -5
- package/dist/migration/code-generation.js +23 -16
- package/dist/migration/index-where-predicate.js +2 -3
- package/dist/migration/migration-set.js +2 -3
- package/dist/migration/migrator.js +2 -3
- package/dist/migration/postgresql-schema-reader.js +6 -9
- package/dist/migration/slack-confirm.js +2 -3
- package/dist/naite/naite-reporter.js +2 -3
- package/dist/naite/naite.js +10 -8
- package/dist/runtime-type.js +2 -3
- package/dist/ssr/hmr-opt-out.js +1 -2
- package/dist/ssr/index.js +7 -4
- package/dist/ssr/registry.js +1 -2
- package/dist/ssr/renderer.js +2 -3
- package/dist/storage/base-file.js +1 -2
- package/dist/storage/buffered-file.js +2 -3
- package/dist/storage/drivers.js +1 -2
- package/dist/storage/index.js +2 -3
- package/dist/storage/s3-driver.js +1 -2
- package/dist/storage/storage-manager.js +2 -3
- package/dist/storage/uploaded-file.js +2 -3
- package/dist/stream/__tests__/ws-test-helpers.js +2 -3
- package/dist/stream/index.js +11 -2
- package/dist/stream/sse.js +1 -2
- package/dist/stream/ws-audience-resolver.js +2 -3
- package/dist/stream/ws-audience.js +1 -2
- package/dist/stream/ws-cluster-bus.js +1 -2
- package/dist/stream/ws-delivery.js +2 -3
- package/dist/stream/ws-frame.js +1 -2
- package/dist/stream/ws-local-connection-store.js +2 -3
- package/dist/stream/ws-presence-index.js +1 -2
- package/dist/stream/ws-presence-store.js +2 -3
- package/dist/stream/ws-registry.js +2 -3
- package/dist/stream/ws-session-id.js +1 -2
- package/dist/stream/ws-telemetry-memory.js +3 -4
- package/dist/stream/ws-telemetry-trace.js +1 -2
- package/dist/stream/ws-telemetry.js +2 -3
- package/dist/stream/ws.js +2 -3
- package/dist/syncer/api-parser.js +2 -3
- package/dist/syncer/checksum.js +4 -4
- package/dist/syncer/code-generator.js +4 -4
- package/dist/syncer/entity-operations.js +2 -3
- package/dist/syncer/event-batcher.js +1 -2
- package/dist/syncer/file-copy.js +2 -3
- package/dist/syncer/file-patterns.js +2 -3
- package/dist/syncer/file-tracking.js +2 -3
- package/dist/syncer/filesystem-dependencies.js +1 -2
- package/dist/syncer/index.js +8 -2
- package/dist/syncer/module-loader.js +8 -6
- package/dist/syncer/syncer-actions.js +8 -7
- package/dist/syncer/syncer.js +13 -8
- package/dist/syncer/watcher.js +2 -3
- package/dist/tasks/decorator.js +1 -2
- package/dist/tasks/step-wrapper.js +2 -3
- package/dist/tasks/workflow-manager.js +2 -3
- package/dist/template/entity-converter.js +17 -16
- package/dist/template/helpers.js +2 -3
- package/dist/template/implementations/entity.template.js +2 -3
- package/dist/template/implementations/entry-server.template.js +2 -3
- package/dist/template/implementations/generated.template.js +2 -3
- package/dist/template/implementations/generated_http.template.js +6 -6
- package/dist/template/implementations/generated_sso.template.js +2 -3
- package/dist/template/implementations/http_validators.template.js +2 -3
- package/dist/template/implementations/init_types.template.js +2 -3
- package/dist/template/implementations/model.template.js +4 -4
- package/dist/template/implementations/model_test.template.js +2 -3
- package/dist/template/implementations/queries.template.js +2 -3
- package/dist/template/implementations/sd.template.js +2 -3
- package/dist/template/implementations/services.template.js +2 -3
- package/dist/template/implementations/view_form.template.js +12 -9
- package/dist/template/implementations/view_id_all_select.template.js +2 -3
- package/dist/template/implementations/view_list.template.d.ts.map +1 -1
- package/dist/template/implementations/view_list.template.js +19 -17
- package/dist/template/implementations/view_search_input.template.js +2 -3
- package/dist/template/index.js +9 -3
- package/dist/template/template-manager.js +2 -3
- package/dist/template/template-types.js +1 -2
- package/dist/template/template.js +2 -3
- package/dist/template/zod-converter.js +54 -47
- package/dist/testing/_relation-graph.js +2 -3
- package/dist/testing/bootstrap.js +2 -3
- package/dist/testing/data-explorer.js +2 -3
- package/dist/testing/dev-test-routes.js +2 -3
- package/dist/testing/dev-vitest-manager.js +15 -12
- package/dist/testing/faker-mappings.js +1 -2
- package/dist/testing/filesystem.js +2 -3
- package/dist/testing/fixture-generator.js +2 -3
- package/dist/testing/fixture-loader.js +1 -2
- package/dist/testing/fixture-manager.js +12 -9
- package/dist/testing/global-setup.js +5 -5
- package/dist/testing/index.js +6 -3
- package/dist/testing/naite-vitest-reporter.js +1 -2
- package/dist/testing/parallel-db-manager.js +2 -3
- package/dist/testing/vitest-helpers.js +2 -3
- package/dist/tooling/__tests__/helpers/sonamu-test-root.js +2 -3
- package/dist/tooling/cdd-service.js +1 -2
- package/dist/tooling/cli-tooling.js +1 -2
- package/dist/tooling/fixture-service.js +1 -2
- package/dist/tooling/index.js +1 -2
- package/dist/tooling/test-run-client.js +2 -3
- package/dist/tsdown.api.config.js +1 -2
- package/dist/types/types.js +2 -3
- package/dist/ui/ai-api.d.ts.map +1 -1
- package/dist/ui/ai-api.js +4 -5
- package/dist/ui/ai-client.d.ts +2 -2
- package/dist/ui/ai-client.d.ts.map +1 -1
- package/dist/ui/ai-client.js +9 -8
- package/dist/ui/api.d.ts.map +1 -1
- package/dist/ui/api.js +11 -8
- package/dist/ui/async-route.js +1 -2
- package/dist/ui/cdd-service.js +22 -21
- package/dist/ui/migrations-api.js +6 -5
- package/dist/ui-web/assets/index-QDMyy31K.js +180 -0
- package/dist/ui-web/assets/index-dV7akMFB.css +1 -0
- package/dist/ui-web/index.html +2 -2
- package/dist/utils/async-utils.js +1 -2
- package/dist/utils/class-name.js +1 -2
- package/dist/utils/console-util.js +1 -2
- package/dist/utils/controller.js +2 -3
- package/dist/utils/esm-utils.js +1 -2
- package/dist/utils/fs-utils.js +2 -3
- package/dist/utils/lodash-able.js +1 -2
- package/dist/utils/model.js +1 -2
- package/dist/utils/object-utils.js +2 -3
- package/dist/utils/path-utils.js +2 -3
- package/dist/utils/process-utils.js +2 -3
- package/dist/utils/runtime-value.js +1 -2
- package/dist/utils/sql-parser.js +2 -3
- package/dist/utils/type-utils.js +8 -8
- package/dist/utils/utils.js +2 -3
- package/dist/utils/zod-error.js +2 -3
- package/dist/vector/chunking.js +1 -2
- package/dist/vector/config.js +1 -2
- package/dist/vector/embedding.js +4 -4
- package/package.json +63 -63
- package/src/ai/agents/agent.ts +1 -1
- package/src/api/__tests__/sonamu.plugins.test.ts +11 -1
- package/src/api/__tests__/sonamu.websocket.test.ts +6 -10
- package/src/api/config.ts +1 -1
- package/src/api/context.ts +2 -8
- package/src/api/sonamu.ts +26 -21
- package/src/auth/audit-log/plugin.ts +2 -0
- package/src/compress/types.ts +1 -1
- package/src/exceptions/error-handler.ts +3 -2
- package/src/template/implementations/model.template.ts +3 -3
- package/src/template/implementations/view_list.template.ts +12 -13
- package/src/ui/ai-api.ts +4 -2
- package/src/ui/ai-client.ts +2 -2
- package/src/ui/api.ts +58 -62
- package/dist/ui-web/assets/index-BMdIyKXS.css +0 -1
- package/dist/ui-web/assets/index-LpE8u19O.js +0 -178
package/dist/bin/fixture.js
CHANGED
|
@@ -13,7 +13,7 @@ import chalk from "chalk";
|
|
|
13
13
|
import { open } from "node:fs/promises";
|
|
14
14
|
import { spawn } from "node:child_process";
|
|
15
15
|
import prompts from "prompts";
|
|
16
|
-
|
|
16
|
+
// src/bin/fixture.ts
|
|
17
17
|
init_sonamu();
|
|
18
18
|
init_db();
|
|
19
19
|
init_knex();
|
|
@@ -429,7 +429,9 @@ async function fixtureFetchCommand(options) {
|
|
|
429
429
|
}
|
|
430
430
|
const strategy = options.strategy ?? "recent";
|
|
431
431
|
const limit = options.limit ? Number.parseInt(String(options.limit), 10) : 10;
|
|
432
|
-
const
|
|
432
|
+
const sourceDb = DB.getDB("r");
|
|
433
|
+
const fixtureDb = createKnexInstance(Sonamu.dbConfig.fixture);
|
|
434
|
+
const generator = new FixtureGenerator(sourceDb, fixtureDb, "fixture", EntityManager);
|
|
433
435
|
console.log(chalk.cyan(`\n${entityNames.join(", ")} import 중...`));
|
|
434
436
|
for (const entityName of entityNames) {
|
|
435
437
|
const results = await generator.importFromSource(entityName, {
|
|
@@ -476,7 +478,8 @@ async function fixtureExploreCommand(options) {
|
|
|
476
478
|
if (!entityName) throw new Error("Entity name is required");
|
|
477
479
|
const strategy = options.strategy ?? "sample";
|
|
478
480
|
const limit = options.limit ? Number.parseInt(String(options.limit), 10) : 10;
|
|
479
|
-
const
|
|
481
|
+
const db = DB.getDB("r");
|
|
482
|
+
const data = await new DataExplorer(db, EntityManager).explore(entityName, {
|
|
480
483
|
strategy,
|
|
481
484
|
limit
|
|
482
485
|
});
|
|
@@ -487,7 +490,6 @@ async function fixtureExploreCommand(options) {
|
|
|
487
490
|
throw error;
|
|
488
491
|
}
|
|
489
492
|
}
|
|
490
|
-
//#endregion
|
|
491
493
|
export { fixtureCleanupCommand, fixtureExploreCommand, fixtureFetchCommand, fixtureGenCommand, fixtureInitCommand };
|
|
492
494
|
|
|
493
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZml4dHVyZS5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi9zcmMvYmluL2ZpeHR1cmUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgc3Bhd24sIHR5cGUgU3Bhd25PcHRpb25zIH0gZnJvbSBcIm5vZGU6Y2hpbGRfcHJvY2Vzc1wiO1xuaW1wb3J0IHsgb3BlbiB9IGZyb20gXCJub2RlOmZzL3Byb21pc2VzXCI7XG5cbmltcG9ydCBjaGFsayBmcm9tIFwiY2hhbGtcIjtcbmltcG9ydCBrbmV4LCB7IHR5cGUgS25leCB9IGZyb20gXCJrbmV4XCI7XG5pbXBvcnQgcHJvbXB0cyBmcm9tIFwicHJvbXB0c1wiO1xuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIjtcblxuaW1wb3J0IHsgU29uYW11IH0gZnJvbSBcIi4uL2FwaS9zb25hbXVcIjtcbmltcG9ydCB7IERCIH0gZnJvbSBcIi4uL2RhdGFiYXNlL2RiXCI7XG5pbXBvcnQgeyBjcmVhdGVLbmV4SW5zdGFuY2UgfSBmcm9tIFwiLi4vZGF0YWJhc2Uva25leFwiO1xuaW1wb3J0IHsgRW50aXR5TWFuYWdlciB9IGZyb20gXCIuLi9lbnRpdHkvZW50aXR5LW1hbmFnZXJcIjtcbmltcG9ydCB7IGdldFNvbmFtdUVudmlyb25tZW50IH0gZnJvbSBcIi4uL2VudlwiO1xuaW1wb3J0IHsgRGF0YUV4cGxvcmVyIH0gZnJvbSBcIi4uL3Rlc3RpbmcvZGF0YS1leHBsb3JlclwiO1xuaW1wb3J0IHsgdHlwZSBEYXRhRXhwbG9yZXJTdHJhdGVneSB9IGZyb20gXCIuLi90ZXN0aW5nL2RhdGEtZXhwbG9yZXJcIjtcbmltcG9ydCB7IEZpeHR1cmVHZW5lcmF0b3IgfSBmcm9tIFwiLi4vdGVzdGluZy9maXh0dXJlLWdlbmVyYXRvclwiO1xuaW1wb3J0IHsgRml4dHVyZU1hbmFnZXIgfSBmcm9tIFwiLi4vdGVzdGluZy9maXh0dXJlLW1hbmFnZXJcIjtcbmltcG9ydCB7IGV4aXN0cyB9IGZyb20gXCIuLi91dGlscy9mcy11dGlsc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEZpeHR1cmVDb21tYW5kT3B0aW9ucyB7XG4gIF8/OiBzdHJpbmdbXTtcbiAgYWxsPzogYm9vbGVhbjtcbiAgaW5jbHVkZT86IHN0cmluZztcbiAgZXhjbHVkZT86IHN0cmluZztcbiAgY291bnQ/OiBzdHJpbmcgfCBudW1iZXI7XG4gIFwic2F2ZS10b1wiPzogc3RyaW5nO1xuICBzdHJhdGVneT86IERhdGFFeHBsb3JlclN0cmF0ZWd5O1xuICBsaW1pdD86IHN0cmluZyB8IG51bWJlcjtcbiAgXCJ1c2UtbGxtXCI/OiBib29sZWFuO1xuICBcIm5vLWNhY2hlXCI/OiBib29sZWFuO1xuICBub25JbnRlcmFjdGl2ZT86IGJvb2xlYW47XG4gIHVzZXJNb2RlPzogXCJsb2dpblwiIHwgXCJkdW1teVwiO1xufVxuXG5pbnRlcmZhY2UgU2lnbnVwQm9keSB7XG4gIG5hbWU6IHN0cmluZztcbiAgZW1haWw6IHN0cmluZztcbiAgdXNlcm5hbWU6IHN0cmluZztcbiAgcGFzc3dvcmQ6IHN0cmluZztcbiAgZGlzcGxheV91c2VybmFtZT86IHN0cmluZztcbn1cblxuY29uc3QgU2lnbnVwRXJyb3JSZXNwb25zZSA9IHoub2JqZWN0KHsgY29kZTogei5zdHJpbmcoKS5vcHRpb25hbCgpIH0pLnBhc3N0aHJvdWdoKCk7XG5cbmZ1bmN0aW9uIHJ1blByb2Nlc3MoXG4gIGV4ZWN1dGFibGU6IHN0cmluZyxcbiAgYXJnczogc3RyaW5nW10sXG4gIHN0ZGlvOiBTcGF3bk9wdGlvbnNbXCJzdGRpb1wiXSA9IFtcImlnbm9yZVwiLCBcImluaGVyaXRcIiwgXCJpbmhlcml0XCJdLFxuKTogUHJvbWlzZTx2b2lkPiB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgY29uc3QgY2hpbGQgPSBzcGF3bihleGVjdXRhYmxlLCBhcmdzLCB7IHN0ZGlvIH0pO1xuICAgIGNoaWxkLm9uY2UoXCJlcnJvclwiLCByZWplY3QpO1xuICAgIGNoaWxkLm9uY2UoXCJleGl0XCIsIChjb2RlLCBzaWduYWwpID0+IHtcbiAgICAgIGlmIChjb2RlID09PSAwKSByZXNvbHZlKCk7XG4gICAgICBlbHNlXG4gICAgICAgIHJlamVjdChcbiAgICAgICAgICBuZXcgRXJyb3IoYCR7ZXhlY3V0YWJsZX0g66qF66C57J20ICR7Y29kZSA/PyBzaWduYWwgPz8gXCJ1bmtub3duXCJ9IOyDge2DnOuhnCDsi6TtjKjtlojsirXri4jri6QuYCksXG4gICAgICAgICk7XG4gICAgfSk7XG4gIH0pO1xufVxuXG5hc3luYyBmdW5jdGlvbiB3cml0ZU15c3FsRHVtcChhcmdzOiBzdHJpbmdbXSwgb3V0cHV0UGF0aDogc3RyaW5nKSB7XG4gIGNvbnN0IG91dHB1dCA9IGF3YWl0IG9wZW4ob3V0cHV0UGF0aCwgXCJ3XCIpO1xuICB0cnkge1xuICAgIGF3YWl0IHJ1blByb2Nlc3MoXCJteXNxbGR1bXBcIiwgYXJncywgW1wiaWdub3JlXCIsIG91dHB1dC5mZCwgXCJpbmhlcml0XCJdKTtcbiAgfSBmaW5hbGx5IHtcbiAgICBhd2FpdCBvdXRwdXQuY2xvc2UoKTtcbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBydW5NeXNxbFdpdGhJbnB1dChhcmdzOiBzdHJpbmdbXSwgaW5wdXRQYXRoOiBzdHJpbmcpIHtcbiAgY29uc3QgaW5wdXQgPSBhd2FpdCBvcGVuKGlucHV0UGF0aCwgXCJyXCIpO1xuICB0cnkge1xuICAgIGF3YWl0IHJ1blByb2Nlc3MoXCJteXNxbFwiLCBhcmdzLCBbaW5wdXQuZmQsIFwiaW5oZXJpdFwiLCBcImluaGVyaXRcIl0pO1xuICB9IGZpbmFsbHkge1xuICAgIGF3YWl0IGlucHV0LmNsb3NlKCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gbXlzcWxDb25uZWN0aW9uQXJncyhjb25uZWN0aW9uOiBLbmV4LkNvbm5lY3Rpb25Db25maWcpIHtcbiAgcmV0dXJuIFtcbiAgICBgLWgke1N0cmluZyhjb25uZWN0aW9uLmhvc3QpfWAsXG4gICAgYC11JHtTdHJpbmcoY29ubmVjdGlvbi51c2VyKX1gLFxuICAgIGAtcCR7U3RyaW5nKGNvbm5lY3Rpb24ucGFzc3dvcmQpfWAsXG4gIF07XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBmaXh0dXJlSW5pdENvbW1hbmQoKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHNyY0NvbmZpZyA9IFNvbmFtdS5kYkNvbmZpZ1tnZXRTb25hbXVFbnZpcm9ubWVudCgpXTtcbiAgY29uc3QgZml4dHVyZUNvbm5lY3Rpb24gPVxuICAgIC8qIFNBRkVUWTogU29uYW11IERCIOq1rOyEseydgCDstIjquLDtmZQg7IucIEtuZXgg7Jew6rKwIOq1rOyEseycvOuhnCDqsoDspp3rkKnri4jri6QuICovIFNvbmFtdS5kYkNvbmZpZy5maXh0dXJlXG4gICAgICAuY29ubmVjdGlvbiBhcyBLbmV4LkNvbm5lY3Rpb25Db25maWc7XG4gIGNvbnN0IHRlc3RDb25uZWN0aW9uID1cbiAgICAvKiBTQUZFVFk6IFNvbmFtdSBEQiDqtazshLHsnYAg7LSI6riw7ZmUIOyLnCBLbmV4IOyXsOqysCDqtazshLHsnLzroZwg6rKA7Kad65Cp64uI64ukLiAqLyBTb25hbXUuZGJDb25maWcudGVzdFxuICAgICAgLmNvbm5lY3Rpb24gYXMgS25leC5Db25uZWN0aW9uQ29uZmlnO1xuICBjb25zdCB0YXJnZXRzOiBBcnJheTx7IGxhYmVsOiBzdHJpbmc7IGNvbmZpZzogS25leC5Db25maWc7IHRvU2tpcD86IGJvb2xlYW4gfT4gPSBbXG4gICAgeyBsYWJlbDogXCIoUkVNT1RFKSBGaXh0dXJlIERCXCIsIGNvbmZpZzogU29uYW11LmRiQ29uZmlnLmZpeHR1cmUgfSxcbiAgICB7XG4gICAgICBsYWJlbDogXCIoTE9DQUwpIFRlc3RpbmcgREJcIixcbiAgICAgIGNvbmZpZzogU29uYW11LmRiQ29uZmlnLnRlc3QsXG4gICAgICAvLyDqsJnsnYAgRELrpbwg6rCA66as7YKk66m0IOybkOqyqSBmaXh0dXJl66W8IOuLpOyLnCDrja7slrTsk7Dsp4Ag7JWK7Iq164uI64ukLlxuICAgICAgdG9Ta2lwOlxuICAgICAgICBmaXh0dXJlQ29ubmVjdGlvbi5ob3N0ID09PSB0ZXN0Q29ubmVjdGlvbi5ob3N0ICYmXG4gICAgICAgIGZpeHR1cmVDb25uZWN0aW9uLmRhdGFiYXNlID09PSB0ZXN0Q29ubmVjdGlvbi5kYXRhYmFzZSxcbiAgICB9LFxuICBdO1xuXG4gIGNvbnN0IGR1bXBGaWxlbmFtZSA9IGAvdG1wL3NvbmFtdS1maXh0dXJlLWluaXQtJHtEYXRlLm5vdygpfS5zcWxgO1xuICBjb25zdCBtaWdyYXRpb25zRHVtcCA9IGAvdG1wL3NvbmFtdS1maXh0dXJlLWluaXQtbWlncmF0aW9ucy0ke0RhdGUubm93KCl9LnNxbGA7XG4gIGNvbnN0IHNyY0Nvbm5lY3Rpb24gPVxuICAgIC8qIFNBRkVUWTogU29uYW11IERCIOq1rOyEseydgCDstIjquLDtmZQg7IucIEtuZXgg7Jew6rKwIOq1rOyEseycvOuhnCDqsoDspp3rkKnri4jri6QuICovIHNyY0NvbmZpZy5jb25uZWN0aW9uIGFzIEtuZXguQ29ubmVjdGlvbkNvbmZpZztcbiAgYXdhaXQgd3JpdGVNeXNxbER1bXAoXG4gICAgW1xuICAgICAgLi4ubXlzcWxDb25uZWN0aW9uQXJncyhzcmNDb25uZWN0aW9uKSxcbiAgICAgIFwiLS1zaW5nbGUtdHJhbnNhY3Rpb25cIixcbiAgICAgIFwiLWRcIixcbiAgICAgIFwiLS1uby1jcmVhdGUtZGJcIixcbiAgICAgIFwiLS10cmlnZ2Vyc1wiLFxuICAgICAgU3RyaW5nKHNyY0Nvbm5lY3Rpb24uZGF0YWJhc2UpLFxuICAgIF0sXG4gICAgZHVtcEZpbGVuYW1lLFxuICApO1xuXG4gIGNvbnN0IHNvdXJjZURiID0ga25leChzcmNDb25maWcpO1xuICB0cnkge1xuICAgIGNvbnN0IFtbbWlncmF0aW9uc11dID0gYXdhaXQgc291cmNlRGIucmF3KFxuICAgICAgXCJTRUxFQ1QgQ09VTlQoKikgYXMgY291bnQgRlJPTSBpbmZvcm1hdGlvbl9zY2hlbWEudGFibGVzIFdIRVJFIHRhYmxlX3NjaGVtYSA9ID8gQU5EIHRhYmxlX25hbWUgPSAna25leF9taWdyYXRpb25zJ1wiLFxuICAgICAgW3NyY0Nvbm5lY3Rpb24uZGF0YWJhc2VdLFxuICAgICk7XG4gICAgaWYgKG1pZ3JhdGlvbnMuY291bnQgPiAwKSB7XG4gICAgICBhd2FpdCB3cml0ZU15c3FsRHVtcChcbiAgICAgICAgW1xuICAgICAgICAgIC4uLm15c3FsQ29ubmVjdGlvbkFyZ3Moc3JjQ29ubmVjdGlvbiksXG4gICAgICAgICAgXCItLXNpbmdsZS10cmFuc2FjdGlvblwiLFxuICAgICAgICAgIFwiLS1uby1jcmVhdGUtZGJcIixcbiAgICAgICAgICBcIi0tdHJpZ2dlcnNcIixcbiAgICAgICAgICBTdHJpbmcoc3JjQ29ubmVjdGlvbi5kYXRhYmFzZSksXG4gICAgICAgICAgXCJrbmV4X21pZ3JhdGlvbnNcIixcbiAgICAgICAgICBcImtuZXhfbWlncmF0aW9uc19sb2NrXCIsXG4gICAgICAgIF0sXG4gICAgICAgIG1pZ3JhdGlvbnNEdW1wLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IHsgbGFiZWwsIGNvbmZpZywgdG9Ta2lwIH0gb2YgdGFyZ2V0cykge1xuICAgICAgY29uc3QgY29ubmVjdGlvbiA9XG4gICAgICAgIC8qIFNBRkVUWTogdGFyZ2V0c+uKlCDqsoDspp3rkJwgU29uYW11IERCIOq1rOyEseyXkOyEnOunjCDsobDtlanrkKnri4jri6QuICovIGNvbmZpZy5jb25uZWN0aW9uIGFzIEtuZXguQ29ubmVjdGlvbkNvbmZpZztcbiAgICAgIGlmICh0b1NraXAgPT09IHRydWUpIHtcbiAgICAgICAgY29uc29sZS5sb2coY2hhbGsucmVkKGAke2xhYmVsfTogU2tpcHBlZCFgKSk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBkYXRhYmFzZUNvbm5lY3Rpb24gPVxuICAgICAgICAvKiBTQUZFVFk6IHRhcmdldHPripQg6rKA7Kad65CcIFNvbmFtdSBEQiDqtazshLHsl5DshJzrp4wg7KGw7ZWp65Cp64uI64ukLiAqLyAoY29uZmlnLmNvbm5lY3Rpb24gPz9cbiAgICAgICAgICB7fSkgYXMgS25leC5Db25uZWN0aW9uQ29uZmlnO1xuICAgICAgY29uc3QgZGIgPSBrbmV4KHtcbiAgICAgICAgLi4uY29uZmlnLFxuICAgICAgICBjb25uZWN0aW9uOiB7IC4uLmRhdGFiYXNlQ29ubmVjdGlvbiwgZGF0YWJhc2U6IHVuZGVmaW5lZCB9LFxuICAgICAgfSk7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBbW3Jvd11dID0gYXdhaXQgZGIucmF3KGBTSE9XIERBVEFCQVNFUyBMSUtFIFwiJHtjb25uZWN0aW9uLmRhdGFiYXNlfVwiYCk7XG4gICAgICAgIGlmIChyb3cpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhjaGFsay55ZWxsb3coYCR7bGFiZWx9OiBEYXRhYmFzZSBcIiR7Y29ubmVjdGlvbi5kYXRhYmFzZX1cIiBBbHJlYWR5IGV4aXN0c2ApKTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGNvbm5lY3Rpb25BcmdzID0gbXlzcWxDb25uZWN0aW9uQXJncyhjb25uZWN0aW9uKTtcbiAgICAgICAgY29uc3QgZGF0YWJhc2UgPSBTdHJpbmcoY29ubmVjdGlvbi5kYXRhYmFzZSk7XG4gICAgICAgIGNvbnN0IGVzY2FwZWREYXRhYmFzZSA9IGRhdGFiYXNlLnJlcGxhY2VBbGwoXCJgXCIsIFwiYGBcIik7XG4gICAgICAgIGF3YWl0IHJ1blByb2Nlc3MoXCJteXNxbFwiLCBbXG4gICAgICAgICAgLi4uY29ubmVjdGlvbkFyZ3MsXG4gICAgICAgICAgXCItZVwiLFxuICAgICAgICAgIGBEUk9QIERBVEFCQVNFIElGIEVYSVNUUyBcXGAke2VzY2FwZWREYXRhYmFzZX1cXGBgLFxuICAgICAgICBdKTtcbiAgICAgICAgYXdhaXQgcnVuUHJvY2VzcyhcIm15c3FsXCIsIFtcbiAgICAgICAgICAuLi5jb25uZWN0aW9uQXJncyxcbiAgICAgICAgICBcIi1lXCIsXG4gICAgICAgICAgYENSRUFURSBEQVRBQkFTRSBcXGAke2VzY2FwZWREYXRhYmFzZX1cXGBgLFxuICAgICAgICBdKTtcbiAgICAgICAgYXdhaXQgcnVuTXlzcWxXaXRoSW5wdXQoWy4uLmNvbm5lY3Rpb25BcmdzLCBkYXRhYmFzZV0sIGR1bXBGaWxlbmFtZSk7XG4gICAgICAgIGlmIChhd2FpdCBleGlzdHMobWlncmF0aW9uc0R1bXApKSB7XG4gICAgICAgICAgYXdhaXQgcnVuTXlzcWxXaXRoSW5wdXQoWy4uLmNvbm5lY3Rpb25BcmdzLCBkYXRhYmFzZV0sIG1pZ3JhdGlvbnNEdW1wKTtcbiAgICAgICAgfVxuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgYXdhaXQgZGIuZGVzdHJveSgpO1xuICAgICAgfVxuICAgIH1cbiAgfSBmaW5hbGx5IHtcbiAgICBhd2FpdCBzb3VyY2VEYi5kZXN0cm95KCk7XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZpeHR1cmVDbGVhbnVwQ29tbWFuZCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgYXdhaXQgRml4dHVyZU1hbmFnZXIuZGVzdHJveSgpO1xuICBhd2FpdCBTb25hbXUuZGVzdHJveSgpO1xufVxuXG4vKipcbiAqIHVzZXJuYW1l7J2EIOydvOuwmOyggeyduCDqt5zsuZko7JiB66y47J6QIOyLnOyekSwg7JiB66y47J6QL+yIq+yekOunjCwgMS0yMOyekCnsl5Ag66ee64+E66GdIOygleq3nO2ZlO2VqeuLiOuLpC5cbiAqL1xuZnVuY3Rpb24gc2FuaXRpemVVc2VybmFtZShyYXc6IHN0cmluZyk6IHN0cmluZyB7XG4gIC8vIOyGjOusuOyekCDrs4DtmZgg7ZuEIOyYgeusuOyekC/siKvsnpAg7Jm4IOusuOyekCDsoJzqsbBcbiAgbGV0IHVzZXJuYW1lID0gcmF3LnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvW15hLXowLTldL2csIFwiXCIpO1xuICBpZiAodXNlcm5hbWUubGVuZ3RoID09PSAwKSB7XG4gICAgdXNlcm5hbWUgPSBcInVzZXJcIjtcbiAgfVxuICAvLyDssqsg6riA7J6Q6rCAIOyIq+yekOuptCAndScg7KCR65GQ7Ja0IOy2lOqwgFxuICBpZiAoL15bMC05XS8udGVzdCh1c2VybmFtZSkpIHtcbiAgICB1c2VybmFtZSA9IGB1JHt1c2VybmFtZX1gO1xuICB9XG4gIC8vIDIw7J6QIOy0iOqzvCDsi5wgdHJ1bmNhdGVcbiAgcmV0dXJuIHVzZXJuYW1lLnNsaWNlKDAsIDIwKTtcbn1cblxuLyoqXG4gKiBmaXh0dXJlIGdlbiDrqoXroLnslrQgLSBjb25lIOuplO2DgOuNsOydtO2EsOulvCDtmZzsmqntlZjsl6wg7J6Q64+Z7Jy866GcIGZpeHR1cmXrpbwg7IOd7ISx7ZWp64uI64ukLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZml4dHVyZUdlbkNvbW1hbmQob3B0aW9uczogRml4dHVyZUNvbW1hbmRPcHRpb25zKSB7XG4gIHRyeSB7XG4gICAgaWYgKCFFbnRpdHlNYW5hZ2VyLmlzQXV0b2xvYWRlZCkge1xuICAgICAgYXdhaXQgRW50aXR5TWFuYWdlci5hdXRvbG9hZCgpO1xuICAgIH1cblxuICAgIGxldCBlbnRpdHlOYW1lczogc3RyaW5nW107XG5cbiAgICBpZiAob3B0aW9ucy5hbGwpIHtcbiAgICAgIGVudGl0eU5hbWVzID0gRW50aXR5TWFuYWdlci5nZXRBbGxJZHMoKTtcbiAgICAgIGlmIChvcHRpb25zLmV4Y2x1ZGUpIHtcbiAgICAgICAgY29uc3QgZXhjbHVkZUxpc3QgPSBvcHRpb25zLmV4Y2x1ZGUuc3BsaXQoXCIsXCIpLm1hcCgoczogc3RyaW5nKSA9PiBzLnRyaW0oKSk7XG4gICAgICAgIGVudGl0eU5hbWVzID0gZW50aXR5TmFtZXMuZmlsdGVyKChuYW1lKSA9PiAhZXhjbHVkZUxpc3QuaW5jbHVkZXMobmFtZSkpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAob3B0aW9ucy5pbmNsdWRlKSB7XG4gICAgICBlbnRpdHlOYW1lcyA9IG9wdGlvbnMuaW5jbHVkZS5zcGxpdChcIixcIikubWFwKChzOiBzdHJpbmcpID0+IHMudHJpbSgpKTtcbiAgICB9IGVsc2UgaWYgKG9wdGlvbnMubm9uSW50ZXJhY3RpdmUgPT09IHRydWUpIHtcbiAgICAgIHRocm93IE9iamVjdC5hc3NpZ24obmV3IEVycm9yKFwiRml4dHVyZSBnZW4gc2VsZWN0b3IgaXMgcmVxdWlyZWQuXCIpLCB7XG4gICAgICAgIGNvZGU6IFwiTUlTU0lOR19BUkdVTUVOVFwiLFxuICAgICAgICBleGl0Q29kZTogMixcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBwcm9tcHRzKHtcbiAgICAgICAgdHlwZTogXCJtdWx0aXNlbGVjdFwiLFxuICAgICAgICBuYW1lOiBcImVudGl0aWVzXCIsXG4gICAgICAgIG1lc3NhZ2U6IFwiRml4dHVyZeulvCDsg53shLHtlaAgRW50aXR566W8IOyEoO2Dne2VmOyEuOyalDpcIixcbiAgICAgICAgY2hvaWNlczogRW50aXR5TWFuYWdlci5nZXRBbGxJZHMoKS5tYXAoKGlkKSA9PiAoeyB0aXRsZTogaWQsIHZhbHVlOiBpZCB9KSksXG4gICAgICAgIG1pbjogMSxcbiAgICAgIH0pO1xuXG4gICAgICBpZiAoIXJlc3VsdC5lbnRpdGllcyB8fCByZXN1bHQuZW50aXRpZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGNoYWxrLnllbGxvdyhcIuy3qOyGjOuQmOyXiOyKteuLiOuLpC5cIikpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGVudGl0eU5hbWVzID0gcmVzdWx0LmVudGl0aWVzO1xuICAgIH1cblxuICAgIGxldCBjb3VudCA9IG9wdGlvbnMuY291bnQgPyBOdW1iZXIucGFyc2VJbnQoU3RyaW5nKG9wdGlvbnMuY291bnQpLCAxMCkgOiA1O1xuICAgIGlmICghb3B0aW9ucy5jb3VudCAmJiBvcHRpb25zLm5vbkludGVyYWN0aXZlICE9PSB0cnVlKSB7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBwcm9tcHRzKHtcbiAgICAgICAgdHlwZTogXCJudW1iZXJcIixcbiAgICAgICAgbmFtZTogXCJjb3VudFwiLFxuICAgICAgICBtZXNzYWdlOiBcIuqwgSBFbnRpdHnrs4Qg7IOd7ISxIOqwnOyImDpcIixcbiAgICAgICAgaW5pdGlhbDogNSxcbiAgICAgICAgbWluOiAxLFxuICAgICAgfSk7XG5cbiAgICAgIGlmICghcmVzdWx0LmNvdW50KSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGNoYWxrLnllbGxvdyhcIuy3qOyGjOuQmOyXiOyKteuLiOuLpC5cIikpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvdW50ID0gcmVzdWx0LmNvdW50O1xuICAgIH1cblxuICAgIC8vIFVzZXIg7JeU7Yuw7Yuw6rCAIO2PrO2VqOuQnCDqsr3smrA6IOuhnOq3uOyduCDqsIDriqUv7ZmV7J247JqpIOu2hOq4sCDshKDtg51cbiAgICBjb25zdCBoYXNVc2VyID0gZW50aXR5TmFtZXMuaW5jbHVkZXMoXCJVc2VyXCIpO1xuXG4gICAgaWYgKGhhc1VzZXIpIHtcbiAgICAgIGxldCB1c2VyTW9kZSA9IG9wdGlvbnMudXNlck1vZGU7XG4gICAgICBpZiAodXNlck1vZGUgPT09IHVuZGVmaW5lZCAmJiBvcHRpb25zLm5vbkludGVyYWN0aXZlID09PSB0cnVlKSB1c2VyTW9kZSA9IFwiZHVtbXlcIjtcbiAgICAgIGlmICh1c2VyTW9kZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNvbnN0IHVzZXJNb2RlUmVzdWx0ID0gYXdhaXQgcHJvbXB0cyh7XG4gICAgICAgICAgdHlwZTogXCJzZWxlY3RcIixcbiAgICAgICAgICBuYW1lOiBcInVzZXJNb2RlXCIsXG4gICAgICAgICAgbWVzc2FnZTogXCJVc2VyIOyXlO2LsO2LsOqwgCDtj6ztlajrkJjslrQg7J6I7Iq164uI64ukLiDsg53shLEg67Cp7Iud7J2EIOyEoO2Dne2VmOyEuOyalDpcIixcbiAgICAgICAgICBjaG9pY2VzOiBbXG4gICAgICAgICAgICB7IHRpdGxlOiBcIjEuIOuhnOq3uOyduCDqsIDriqXtlZwg7IKs7Jqp7J6QIGZpeHR1cmUg7IOd7ISxXCIsIHZhbHVlOiBcImxvZ2luXCIgfSxcbiAgICAgICAgICAgIHsgdGl0bGU6IFwiMi4g7ZmV7J247JqpIOuNsOydtO2EsCjroZzqt7jsnbgg67aI6rCAKSDsg53shLFcIiwgdmFsdWU6IFwiZHVtbXlcIiB9LFxuICAgICAgICAgIF0sXG4gICAgICAgIH0pO1xuICAgICAgICB1c2VyTW9kZSA9IHVzZXJNb2RlUmVzdWx0LnVzZXJNb2RlO1xuICAgICAgfVxuXG4gICAgICBpZiAoIXVzZXJNb2RlKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGNoYWxrLnllbGxvdyhcIuy3qOyGjOuQmOyXiOyKteuLiOuLpC5cIikpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmICh1c2VyTW9kZSA9PT0gXCJsb2dpblwiKSB7XG4gICAgICAgIC8vIExMTSDsgqzsmqkg7Jes67aAXG4gICAgICAgIGxldCB1c2VMTE0gPSBvcHRpb25zW1widXNlLWxsbVwiXSA/PyBmYWxzZTtcbiAgICAgICAgaWYgKG9wdGlvbnNbXCJ1c2UtbGxtXCJdID09PSB1bmRlZmluZWQgJiYgb3B0aW9ucy5ub25JbnRlcmFjdGl2ZSAhPT0gdHJ1ZSkge1xuICAgICAgICAgIGNvbnN0IGxsbVJlc3VsdCA9IGF3YWl0IHByb21wdHMoe1xuICAgICAgICAgICAgdHlwZTogXCJjb25maXJtXCIsXG4gICAgICAgICAgICBuYW1lOiBcInVzZUxMTVwiLFxuICAgICAgICAgICAgbWVzc2FnZTpcbiAgICAgICAgICAgICAgXCJMTE3snLzroZwg642UIO2YhOyLpOyggeyduCDrjbDsnbTthLDrpbwg7IOd7ISx7ZWg6rmM7JqUPyAoZml4dHVyZUhpbnQg6riw67CYLCBBTlRIUk9QSUNfQVBJX0tFWSDtlYTsmpQpXCIsXG4gICAgICAgICAgICBpbml0aWFsOiBmYWxzZSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB1c2VMTE0gPSBsbG1SZXN1bHQudXNlTExNID8/IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZW5hYmxlTExNQ2FjaGUgPSAhb3B0aW9uc1tcIm5vLWNhY2hlXCJdO1xuICAgICAgICBjb25zdCBERUZBVUxUX1BBU1NXT1JEID0gXCJUZXN0MTIzNCFcIjtcblxuICAgICAgICAvLyDroZzqt7jsnbgg6rCA64qlIOqyveuhnOyXkOyEnOuKlCDtmITsnqwg7ZmY6rK97J2YIOydveq4sCBEQuulvCBzb3VyY2VEYuuhnCDsgqzsmqlcbiAgICAgICAgY29uc3Qgc291cmNlRGIgPSBEQi5nZXREQihcInJcIik7XG4gICAgICAgIGNvbnN0IGdlbmVyYXRvciA9IG5ldyBGaXh0dXJlR2VuZXJhdG9yKFxuICAgICAgICAgIHNvdXJjZURiLFxuICAgICAgICAgIHNvdXJjZURiLFxuICAgICAgICAgIGdldFNvbmFtdUVudmlyb25tZW50KCksXG4gICAgICAgICAgRW50aXR5TWFuYWdlcixcbiAgICAgICAgICB7IHVzZUxMTSwgZW5hYmxlTExNQ2FjaGUgfSxcbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCBjcmVhdGVkQ3JlZGVudGlhbHM6IEFycmF5PHsgZW1haWw6IHN0cmluZzsgcGFzc3dvcmQ6IHN0cmluZyB9PiA9IFtdO1xuICAgICAgICBjb25zdCBiYXNlUGF0aCA9IFNvbmFtdS5jb25maWcuc2VydmVyLmF1dGg/LmJhc2VQYXRoID8/IFwiL2FwaS9hdXRoXCI7XG5cbiAgICAgICAgaWYgKHVzZUxMTSkge1xuICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgY2hhbGsuY3lhbihcbiAgICAgICAgICAgICAgYFxcbkxMTSDrqqjrk5zroZwg66Gc6re47J24IOqwgOuKpe2VnCDsgqzsmqnsnpAgJHtjb3VudH3rqoUg7IOd7ISxIOykkS4uLiAo7LqQ7IuxOiAke2VuYWJsZUxMTUNhY2hlID8gXCJPTlwiIDogXCJPRkZcIn0pYCxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhjaGFsay5jeWFuKGBcXG7roZzqt7jsnbgg6rCA64ql7ZWcIOyCrOyaqeyekCAke2NvdW50feuqhSDsg53shLEg7KSRLi4uYCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7XG4gICAgICAgICAgY29uc3QgdXNlckRhdGEgPSBhd2FpdCBnZW5lcmF0b3IuZ2VuZXJhdGUoXCJVc2VyXCIpO1xuXG4gICAgICAgICAgY29uc3QgbmFtZSA9IFN0cmluZyh1c2VyRGF0YS5uYW1lID8/IFwiXCIpO1xuICAgICAgICAgIGNvbnN0IGVtYWlsID0gU3RyaW5nKHVzZXJEYXRhLmVtYWlsID8/IFwiXCIpO1xuICAgICAgICAgIGNvbnN0IHVzZXJuYW1lID0gc2FuaXRpemVVc2VybmFtZShTdHJpbmcodXNlckRhdGEudXNlcm5hbWUgPz8gXCJcIikpO1xuICAgICAgICAgIGNvbnN0IGRpc3BsYXlVc2VybmFtZSA9XG4gICAgICAgICAgICB1c2VyRGF0YS5kaXNwbGF5X3VzZXJuYW1lICE9PSB1bmRlZmluZWQgPyBTdHJpbmcodXNlckRhdGEuZGlzcGxheV91c2VybmFtZSkgOiB1bmRlZmluZWQ7XG5cbiAgICAgICAgICBjb25zdCBib2R5OiBTaWdudXBCb2R5ID0ge1xuICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgIGVtYWlsLFxuICAgICAgICAgICAgdXNlcm5hbWUsXG4gICAgICAgICAgICBwYXNzd29yZDogREVGQVVMVF9QQVNTV09SRCxcbiAgICAgICAgICB9O1xuICAgICAgICAgIGlmIChkaXNwbGF5VXNlcm5hbWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgYm9keS5kaXNwbGF5X3VzZXJuYW1lID0gZGlzcGxheVVzZXJuYW1lO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IHJlcSA9IG5ldyBSZXF1ZXN0KGBodHRwOi8vbG9jYWxob3N0JHtiYXNlUGF0aH0vc2lnbi11cC9lbWFpbGAsIHtcbiAgICAgICAgICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgICAgICAgICBoZWFkZXJzOiB7IFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiIH0sXG4gICAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeShib2R5KSxcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgU29uYW11LmF1dGguaGFuZGxlcihyZXEpO1xuXG4gICAgICAgICAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgICAgICAgICAgY29uc3QgcmVzcG9uc2VEYXRhID0gU2lnbnVwRXJyb3JSZXNwb25zZS5wYXJzZShhd2FpdCByZXNwb25zZS5qc29uKCkpO1xuICAgICAgICAgICAgY29uc3QgY29kZSA9IHJlc3BvbnNlRGF0YS5jb2RlO1xuICAgICAgICAgICAgaWYgKGNvZGUgPT09IFwiVVNFUl9BTFJFQURZX0VYSVNUU1wiKSB7XG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKGNoYWxrLnllbGxvdyhgICDimqDvuI8gICR7ZW1haWx9IOydtOuvuCDsobTsnqwgLSDqsbTrhIjrnIHri4jri6QuYCkpO1xuICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGNoYWxrLnJlZChgICDinYwgJHtlbWFpbH0g7IOd7ISxIOyLpO2MqDogJHtKU09OLnN0cmluZ2lmeShyZXNwb25zZURhdGEpfWApKTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNyZWF0ZWRDcmVkZW50aWFscy5wdXNoKHsgZW1haWwsIHBhc3N3b3JkOiBERUZBVUxUX1BBU1NXT1JEIH0pO1xuICAgICAgICAgIGNvbnNvbGUubG9nKGNoYWxrLmdyZWVuKGAgIOKchSAke2VtYWlsfSDsg53shLEg7JmE66OMYCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gZW1haWxfdmVyaWZpZWQgPSB0cnVlIOyngeygkSDsl4XrjbDsnbTtirggKGRldiDtjrjsnZgpXG4gICAgICAgIGlmIChjcmVhdGVkQ3JlZGVudGlhbHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGNvbnN0IGVtYWlscyA9IGNyZWF0ZWRDcmVkZW50aWFscy5tYXAoKGMpID0+IGMuZW1haWwpO1xuICAgICAgICAgIGF3YWl0IERCLmdldERCKFwid1wiKShcInVzZXJzXCIpLndoZXJlSW4oXCJlbWFpbFwiLCBlbWFpbHMpLnVwZGF0ZSh7IGVtYWlsX3ZlcmlmaWVkOiB0cnVlIH0pO1xuICAgICAgICAgIGNvbnNvbGUubG9nKGNoYWxrLmdyZWVuKGBcXG5lbWFpbF92ZXJpZmllZCA9IHRydWUg7JeF642w7J207Yq4IOyZhOujjGApKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh1c2VMTE0pIHtcbiAgICAgICAgICBjb25zdCBzdGF0cyA9IGdlbmVyYXRvci5nZXRMTE1DYWNoZVN0YXRzKCk7XG4gICAgICAgICAgY29uc29sZS5sb2coY2hhbGsuY3lhbihgW0xMTSBDYWNoZV0g7LqQ7IucIO2BrOq4sDogJHtzdGF0cy5zaXplfWApKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgIGNoYWxrLmdyZWVuKGBcXG7inIUgJHtjcmVhdGVkQ3JlZGVudGlhbHMubGVuZ3RofeuqheydmCDroZzqt7jsnbgg6rCA64ql7ZWcIOyCrOyaqeyekCDsg53shLEg7JmE66OMYCksXG4gICAgICAgICk7XG4gICAgICAgIGlmIChjcmVhdGVkQ3JlZGVudGlhbHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGNvbnNvbGUubG9nKFwiXFxu7IOd7ISx65CcIOqzhOyglSDrqqnroZ06XCIpO1xuICAgICAgICAgIGNvbnNvbGUudGFibGUoY3JlYXRlZENyZWRlbnRpYWxzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIC8vIHVzZXJNb2RlID09PSBcImR1bW15XCI6IOq4sOyhtCBnZW5lcmF0ZUJhdGNoKCkg7Z2Q66aEIOqzhOyGjVxuICAgIH1cblxuICAgIGxldCBzYXZlVGFyZ2V0ID0gb3B0aW9uc1tcInNhdmUtdG9cIl0gfHwgXCJkYlwiO1xuICAgIGlmICghb3B0aW9uc1tcInNhdmUtdG9cIl0gJiYgb3B0aW9ucy5ub25JbnRlcmFjdGl2ZSAhPT0gdHJ1ZSkge1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcHJvbXB0cyh7XG4gICAgICAgIHR5cGU6IFwic2VsZWN0XCIsXG4gICAgICAgIG5hbWU6IFwic2F2ZVRhcmdldFwiLFxuICAgICAgICBtZXNzYWdlOiBcIuyggOyepSDrsKnsi506XCIsXG4gICAgICAgIGNob2ljZXM6IFtcbiAgICAgICAgICB7IHRpdGxlOiBcIkZpeHR1cmUgRELsl5Ag7KCA7J6lXCIsIHZhbHVlOiBcImRiXCIgfSxcbiAgICAgICAgICB7IHRpdGxlOiBcIu2MjOydvOuhnCDsoIDsnqUgKOyekOuPmSDtjIzsnbzrqoUpXCIsIHZhbHVlOiBcImZpbGVcIiB9LFxuICAgICAgICAgIHsgdGl0bGU6IFwi7YyM7J2866GcIOyggOyepSAo7YyM7J2866qFIOyngOyglSlcIiwgdmFsdWU6IFwiZmlsZTpjdXN0b21cIiB9LFxuICAgICAgICAgIHsgdGl0bGU6IFwi7KCA7J6lIOyViCDtlaggKOy2nOugpeunjClcIiwgdmFsdWU6IFwibm9uZVwiIH0sXG4gICAgICAgIF0sXG4gICAgICB9KTtcblxuICAgICAgc2F2ZVRhcmdldCA9IHJlc3VsdC5zYXZlVGFyZ2V0O1xuXG4gICAgICBpZiAoc2F2ZVRhcmdldCA9PT0gXCJmaWxlOmN1c3RvbVwiKSB7XG4gICAgICAgIGNvbnN0IGZpbGVuYW1lUmVzdWx0ID0gYXdhaXQgcHJvbXB0cyh7XG4gICAgICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgICAgbmFtZTogXCJmaWxlbmFtZVwiLFxuICAgICAgICAgIG1lc3NhZ2U6IFwi7YyM7J2866qFOlwiLFxuICAgICAgICAgIGluaXRpYWw6IFwiZml4dHVyZXMuanNvblwiLFxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoIWZpbGVuYW1lUmVzdWx0LmZpbGVuYW1lKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coY2hhbGsueWVsbG93KFwi7Leo7IaM65CY7JeI7Iq164uI64ukLlwiKSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgc2F2ZVRhcmdldCA9IGBmaWxlOiR7ZmlsZW5hbWVSZXN1bHQuZmlsZW5hbWV9YDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBMTE0g7IKs7JqpIOyXrOu2gCDqsrDsoJVcbiAgICBsZXQgdXNlTExNID0gb3B0aW9uc1tcInVzZS1sbG1cIl0gPz8gZmFsc2U7XG4gICAgaWYgKG9wdGlvbnNbXCJ1c2UtbGxtXCJdID09PSB1bmRlZmluZWQgJiYgb3B0aW9ucy5ub25JbnRlcmFjdGl2ZSAhPT0gdHJ1ZSkge1xuICAgICAgY29uc3QgbGxtUmVzdWx0ID0gYXdhaXQgcHJvbXB0cyh7XG4gICAgICAgIHR5cGU6IFwiY29uZmlybVwiLFxuICAgICAgICBuYW1lOiBcInVzZUxMTVwiLFxuICAgICAgICBtZXNzYWdlOlxuICAgICAgICAgIFwiTExN7Jy866GcIOuNlCDtmITsi6TsoIHsnbgg642w7J207YSw66W8IOyDneyEse2VoOq5jOyalD8gKGZpeHR1cmVIaW50IOq4sOuwmCwgQU5USFJPUElDX0FQSV9LRVkg7ZWE7JqUKVwiLFxuICAgICAgICBpbml0aWFsOiBmYWxzZSxcbiAgICAgIH0pO1xuICAgICAgdXNlTExNID0gbGxtUmVzdWx0LnVzZUxMTSA/PyBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCBlbmFibGVMTE1DYWNoZSA9ICFvcHRpb25zW1wibm8tY2FjaGVcIl07XG5cbiAgICAvLyBmaXh0dXJlIGdlbjogZml4dHVyZSBEQiDrgrTsl5DshJwg7LC47KGwIOq0gOqzhOulvCDtlbTqsrDtlZjqs6Ag7KCA7J6l7ZWp64uI64ukXG4gICAgY29uc3QgZml4dHVyZURiID0gY3JlYXRlS25leEluc3RhbmNlKFNvbmFtdS5kYkNvbmZpZy5maXh0dXJlKTtcbiAgICBjb25zdCBnZW5lcmF0b3IgPSBuZXcgRml4dHVyZUdlbmVyYXRvcihmaXh0dXJlRGIsIGZpeHR1cmVEYiwgXCJmaXh0dXJlXCIsIEVudGl0eU1hbmFnZXIsIHtcbiAgICAgIHVzZUxMTSxcbiAgICAgIGVuYWJsZUxMTUNhY2hlLFxuICAgIH0pO1xuXG4gICAgaWYgKHVzZUxMTSkge1xuICAgICAgY29uc29sZS5sb2coXG4gICAgICAgIGNoYWxrLmN5YW4oXG4gICAgICAgICAgYFxcbkxMTSDrqqjrk5zroZwgJHtlbnRpdHlOYW1lcy5qb2luKFwiLCBcIil9IOyDneyEsSDspJEuLi4gKOy6kOyLsTogJHtlbmFibGVMTE1DYWNoZSA/IFwiT05cIiA6IFwiT0ZGXCJ9KWAsXG4gICAgICAgICksXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmxvZyhjaGFsay5jeWFuKGBcXG4ke2VudGl0eU5hbWVzLmpvaW4oXCIsIFwiKX0g7IOd7ISxIOykkS4uLmApKTtcbiAgICB9XG5cbiAgICBjb25zdCBzcGVjcyA9IGVudGl0eU5hbWVzLm1hcCgoZW50aXR5TmFtZSkgPT4gKHtcbiAgICAgIGVudGl0eTogZW50aXR5TmFtZSxcbiAgICAgIGNvdW50LFxuICAgICAgb3ZlcnJpZGVzOiB7fSxcbiAgICB9KSk7XG5cbiAgICBjb25zdCByZXN1bHRzID0gYXdhaXQgZ2VuZXJhdG9yLmdlbmVyYXRlQmF0Y2goc3BlY3MpO1xuXG4gICAgaWYgKHVzZUxMTSkge1xuICAgICAgY29uc3Qgc3RhdHMgPSBnZW5lcmF0b3IuZ2V0TExNQ2FjaGVTdGF0cygpO1xuICAgICAgY29uc29sZS5sb2coY2hhbGsuY3lhbihgW0xMTSBDYWNoZV0g7LqQ7IucIO2BrOq4sDogJHtzdGF0cy5zaXplfWApKTtcbiAgICB9XG5cbiAgICBjb25zb2xlLmxvZyhjaGFsay5ncmVlbihgXFxu4pyFICR7cmVzdWx0cy5sZW5ndGh96rCcIGZpeHR1cmUg7IOd7ISxIOyZhOujjGApKTtcblxuICAgIGlmIChzYXZlVGFyZ2V0ID09PSBcIm5vbmVcIikge1xuICAgICAgY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkocmVzdWx0cywgbnVsbCwgMikpO1xuICAgIH0gZWxzZSBpZiAoc2F2ZVRhcmdldCA9PT0gXCJkYlwiKSB7XG4gICAgICAvLyBnZW5lcmF0ZUJhdGNo6rCAIOydtOuvuCBEQuyXkCDsoIDsnqXtlojsnLzrr4DroZwg67OE64+EIOyggOyepeydtCDrtojtlYTsmpTtlanri4jri6QuXG4gICAgICBjb25zb2xlLmxvZyhjaGFsay5ncmVlbihcIkZpeHR1cmUgRELsl5Ag7KCA7J6l65CY7JeI7Iq164uI64ukLlwiKSk7XG4gICAgfSBlbHNlIGlmIChzYXZlVGFyZ2V0LnN0YXJ0c1dpdGgoXCJmaWxlXCIpKSB7XG4gICAgICBjb25zdCBmcyA9IGF3YWl0IGltcG9ydChcIm5vZGU6ZnMvcHJvbWlzZXNcIik7XG4gICAgICBjb25zdCBwYXRoID0gYXdhaXQgaW1wb3J0KFwibm9kZTpwYXRoXCIpO1xuXG4gICAgICBjb25zdCBmaXh0dXJlc0RpciA9IHBhdGguam9pbihwcm9jZXNzLmN3ZCgpLCBcInRlc3RcIiwgXCJmaXh0dXJlc1wiKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IGZzLmFjY2VzcyhmaXh0dXJlc0Rpcik7XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgYXdhaXQgZnMubWtkaXIoZml4dHVyZXNEaXIsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICAgICAgfVxuXG4gICAgICBmb3IgKGNvbnN0IGVudGl0eU5hbWUgb2YgZW50aXR5TmFtZXMpIHtcbiAgICAgICAgY29uc3QgZW50aXR5UmVzdWx0cyA9IHJlc3VsdHMuZmlsdGVyKChyKSA9PiByLmVudGl0eUlkID09PSBlbnRpdHlOYW1lKTtcblxuICAgICAgICBpZiAoZW50aXR5UmVzdWx0cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBmaWxlbmFtZTogc3RyaW5nO1xuICAgICAgICBpZiAoc2F2ZVRhcmdldCA9PT0gXCJmaWxlXCIpIHtcbiAgICAgICAgICBjb25zdCBlbnRpdHkgPSBFbnRpdHlNYW5hZ2VyLmdldChlbnRpdHlOYW1lKTtcbiAgICAgICAgICBmaWxlbmFtZSA9IGAke2VudGl0eS50YWJsZX0uanNvbmA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZmlsZW5hbWUgPSBzYXZlVGFyZ2V0LnJlcGxhY2UoXCJmaWxlOlwiLCBcIlwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGZpbGVwYXRoID0gcGF0aC5qb2luKGZpeHR1cmVzRGlyLCBmaWxlbmFtZSk7XG4gICAgICAgIGF3YWl0IGZzLndyaXRlRmlsZShcbiAgICAgICAgICBmaWxlcGF0aCxcbiAgICAgICAgICBKU09OLnN0cmluZ2lmeShcbiAgICAgICAgICAgIGVudGl0eVJlc3VsdHMubWFwKChyKSA9PiByLmRhdGEpLFxuICAgICAgICAgICAgbnVsbCxcbiAgICAgICAgICAgIDIsXG4gICAgICAgICAgKSxcbiAgICAgICAgKTtcbiAgICAgICAgY29uc29sZS5sb2coY2hhbGsuZ3JlZW4oYOKchSAke2ZpbGVwYXRofSDsoIDsnqUg7JmE66OMYCkpO1xuICAgICAgfVxuICAgIH1cbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBjb25zb2xlLmVycm9yKFxuICAgICAgY2hhbGsucmVkKFxuICAgICAgICBcIkZpeHR1cmUg7IOd7ISxIOykkSDsmKTrpZjqsIAg67Cc7IOd7ZaI7Iq164uI64ukLlxcblwiICtcbiAgICAgICAgICBcIuybkOyduDogRW50aXR5IOygleydmOuCmCBEQiDsl7DqsrDsnYQg7ZmV7J247ZW07KO87IS47JqULlxcblwiICtcbiAgICAgICAgICBcIuyekOyEuO2VnCDrgrTsmqk6XCIsXG4gICAgICApLFxuICAgICAgZXJyb3IsXG4gICAgKTtcbiAgICB0aHJvdyBlcnJvcjtcbiAgfVxufVxuXG4vKipcbiAqIGZpeHR1cmUgZmV0Y2gg66qF66C57Ja0IC0g7Iuk7KCcIOyatOyYgSBEQuyXkOyEnCDrjbDsnbTthLDrpbwg6rCA7KC47JmAIGZpeHR1cmXroZwg7KCA7J6l7ZWp64uI64ukLlxuICog6rSA6rOE65CcIOuNsOydtO2EsOuPhCDtlajqu5gg6rCA7KC47Jik66+A66GcIO2YhOyLpOyggeyduCDthYzsiqTtirgg642w7J207YSw66W8IO2ZleuztO2VoCDsiJgg7J6I7Iq164uI64ukLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZml4dHVyZUZldGNoQ29tbWFuZChvcHRpb25zOiBGaXh0dXJlQ29tbWFuZE9wdGlvbnMpIHtcbiAgdHJ5IHtcbiAgICBpZiAoIUVudGl0eU1hbmFnZXIuaXNBdXRvbG9hZGVkKSB7XG4gICAgICBhd2FpdCBFbnRpdHlNYW5hZ2VyLmF1dG9sb2FkKCk7XG4gICAgfVxuXG4gICAgbGV0IGVudGl0eU5hbWVzOiBzdHJpbmdbXTtcblxuICAgIGlmIChvcHRpb25zLmFsbCkge1xuICAgICAgZW50aXR5TmFtZXMgPSBFbnRpdHlNYW5hZ2VyLmdldEFsbElkcygpO1xuICAgICAgaWYgKG9wdGlvbnMuZXhjbHVkZSkge1xuICAgICAgICBjb25zdCBleGNsdWRlTGlzdCA9IG9wdGlvbnMuZXhjbHVkZS5zcGxpdChcIixcIikubWFwKChzOiBzdHJpbmcpID0+IHMudHJpbSgpKTtcbiAgICAgICAgZW50aXR5TmFtZXMgPSBlbnRpdHlOYW1lcy5maWx0ZXIoKG5hbWUpID0+ICFleGNsdWRlTGlzdC5pbmNsdWRlcyhuYW1lKSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChvcHRpb25zLmluY2x1ZGUpIHtcbiAgICAgIGVudGl0eU5hbWVzID0gb3B0aW9ucy5pbmNsdWRlLnNwbGl0KFwiLFwiKS5tYXAoKHM6IHN0cmluZykgPT4gcy50cmltKCkpO1xuICAgIH0gZWxzZSBpZiAob3B0aW9ucy5ub25JbnRlcmFjdGl2ZSA9PT0gdHJ1ZSkge1xuICAgICAgdGhyb3cgT2JqZWN0LmFzc2lnbihuZXcgRXJyb3IoXCJGaXh0dXJlIGZldGNoIHNlbGVjdG9yIGlzIHJlcXVpcmVkLlwiKSwge1xuICAgICAgICBjb2RlOiBcIk1JU1NJTkdfQVJHVU1FTlRcIixcbiAgICAgICAgZXhpdENvZGU6IDIsXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcHJvbXB0cyh7XG4gICAgICAgIHR5cGU6IFwibXVsdGlzZWxlY3RcIixcbiAgICAgICAgbmFtZTogXCJlbnRpdGllc1wiLFxuICAgICAgICBtZXNzYWdlOiBcIkltcG9ydO2VoCBFbnRpdHnrpbwg7ISg7YOd7ZWY7IS47JqUOlwiLFxuICAgICAgICBjaG9pY2VzOiBFbnRpdHlNYW5hZ2VyLmdldEFsbElkcygpLm1hcCgoaWQpID0+ICh7IHRpdGxlOiBpZCwgdmFsdWU6IGlkIH0pKSxcbiAgICAgICAgbWluOiAxLFxuICAgICAgfSk7XG5cbiAgICAgIGlmICghcmVzdWx0LmVudGl0aWVzIHx8IHJlc3VsdC5lbnRpdGllcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgY29uc29sZS5sb2coY2hhbGsueWVsbG93KFwi7Leo7IaM65CY7JeI7Iq164uI64ukLlwiKSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgZW50aXR5TmFtZXMgPSByZXN1bHQuZW50aXRpZXM7XG4gICAgfVxuXG4gICAgY29uc3Qgc3RyYXRlZ3k6IERhdGFFeHBsb3JlclN0cmF0ZWd5ID0gb3B0aW9ucy5zdHJhdGVneSA/PyBcInJlY2VudFwiO1xuICAgIGNvbnN0IGxpbWl0ID0gb3B0aW9ucy5saW1pdCA/IE51bWJlci5wYXJzZUludChTdHJpbmcob3B0aW9ucy5saW1pdCksIDEwKSA6IDEwO1xuXG4gICAgLy8gZml4dHVyZSBmZXRjaDog7ZiE7J6sIO2ZmOqyvSDrjbDsnbTthLDrpbwgZml4dHVyZSBEQuuhnCBpbXBvcnTtlanri4jri6RcbiAgICBjb25zdCBzb3VyY2VEYiA9IERCLmdldERCKFwiclwiKTtcbiAgICBjb25zdCBmaXh0dXJlRGIgPSBjcmVhdGVLbmV4SW5zdGFuY2UoU29uYW11LmRiQ29uZmlnLmZpeHR1cmUpO1xuICAgIGNvbnN0IGdlbmVyYXRvciA9IG5ldyBGaXh0dXJlR2VuZXJhdG9yKHNvdXJjZURiLCBmaXh0dXJlRGIsIFwiZml4dHVyZVwiLCBFbnRpdHlNYW5hZ2VyKTtcblxuICAgIGNvbnNvbGUubG9nKGNoYWxrLmN5YW4oYFxcbiR7ZW50aXR5TmFtZXMuam9pbihcIiwgXCIpfSBpbXBvcnQg7KSRLi4uYCkpO1xuXG4gICAgZm9yIChjb25zdCBlbnRpdHlOYW1lIG9mIGVudGl0eU5hbWVzKSB7XG4gICAgICBjb25zdCByZXN1bHRzID0gYXdhaXQgZ2VuZXJhdG9yLmltcG9ydEZyb21Tb3VyY2UoZW50aXR5TmFtZSwge1xuICAgICAgICBzdHJhdGVneSxcbiAgICAgICAgbGltaXQsXG4gICAgICAgIGluY2x1ZGVSZWxhdGlvbnM6IHRydWUsXG4gICAgICAgIG1heERlcHRoOiAyLFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnNvbGUubG9nKGNoYWxrLmdyZWVuKGDinIUgJHtlbnRpdHlOYW1lfTogJHtyZXN1bHRzLmxlbmd0aH3qsJwgaW1wb3J0IOyZhOujjGApKTtcbiAgICB9XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgY29uc29sZS5lcnJvcihcbiAgICAgIGNoYWxrLnJlZChcbiAgICAgICAgXCLsi6TsoJwgRELsl5DshJwg642w7J207YSw66W8IOqwgOyguOyYpOuKlCDspJEg7Jik66WY6rCAIOuwnOyDne2WiOyKteuLiOuLpC5cXG5cIiArXG4gICAgICAgICAgXCLsm5Dsnbg6IOyGjOyKpCBEQiDsl7DqsrAg7ISk7KCVKHNvbmFtdS5jb25maWcudHMp7J2064KYIEVudGl0eSDqtIDqs4Qg7KCV7J2Y66W8IO2ZleyduO2VtOyjvOyEuOyalC5cXG5cIiArXG4gICAgICAgICAgXCLsnpDshLjtlZwg64K07JqpOlwiLFxuICAgICAgKSxcbiAgICAgIGVycm9yLFxuICAgICk7XG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cbn1cblxuLyoqXG4gKiBmaXh0dXJlIGV4cGxvcmUg66qF66C57Ja0IC0gRELsnZgg7Iuk7KCcIOuNsOydtO2EsOulvCDsobDtmoztlZjsl6wg7ZmV7J247ZWp64uI64ukLlxuICog7KCA7J6l7ZWY7KeAIOyViuqzoCDsobDtmozrp4wg7ZWY66+A66GcIOuNsOydtO2EsOulvCDruaDrpbTqsowg7ZmV7J247ZWgIOuVjCDsnKDsmqntlanri4jri6QuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBmaXh0dXJlRXhwbG9yZUNvbW1hbmQob3B0aW9uczogRml4dHVyZUNvbW1hbmRPcHRpb25zKSB7XG4gIHRyeSB7XG4gICAgaWYgKCFFbnRpdHlNYW5hZ2VyLmlzQXV0b2xvYWRlZCkge1xuICAgICAgYXdhaXQgRW50aXR5TWFuYWdlci5hdXRvbG9hZCgpO1xuICAgIH1cblxuICAgIGxldCBlbnRpdHlOYW1lID0gb3B0aW9ucy5pbmNsdWRlO1xuXG4gICAgaWYgKCFlbnRpdHlOYW1lICYmIG9wdGlvbnMubm9uSW50ZXJhY3RpdmUgPT09IHRydWUpIHtcbiAgICAgIHRocm93IE9iamVjdC5hc3NpZ24obmV3IEVycm9yKFwiRml4dHVyZSBleHBsb3JlIHNlbGVjdG9yIGlzIHJlcXVpcmVkLlwiKSwge1xuICAgICAgICBjb2RlOiBcIk1JU1NJTkdfQVJHVU1FTlRcIixcbiAgICAgICAgZXhpdENvZGU6IDIsXG4gICAgICB9KTtcbiAgICB9XG4gICAgaWYgKCFlbnRpdHlOYW1lKSB7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBwcm9tcHRzKHtcbiAgICAgICAgdHlwZTogXCJzZWxlY3RcIixcbiAgICAgICAgbmFtZTogXCJlbnRpdHlcIixcbiAgICAgICAgbWVzc2FnZTogXCLtg5Dsg4ntlaAgRW50aXR5OlwiLFxuICAgICAgICBjaG9pY2VzOiBFbnRpdHlNYW5hZ2VyLmdldEFsbElkcygpLm1hcCgoaWQpID0+ICh7IHRpdGxlOiBpZCwgdmFsdWU6IGlkIH0pKSxcbiAgICAgIH0pO1xuXG4gICAgICBpZiAoIXJlc3VsdC5lbnRpdHkpIHtcbiAgICAgICAgY29uc29sZS5sb2coY2hhbGsueWVsbG93KFwi7Leo7IaM65CY7JeI7Iq164uI64ukLlwiKSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgZW50aXR5TmFtZSA9IHJlc3VsdC5lbnRpdHk7XG4gICAgfVxuXG4gICAgaWYgKCFlbnRpdHlOYW1lKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJFbnRpdHkgbmFtZSBpcyByZXF1aXJlZFwiKTtcbiAgICB9XG5cbiAgICBjb25zdCBzdHJhdGVneTogRGF0YUV4cGxvcmVyU3RyYXRlZ3kgPSBvcHRpb25zLnN0cmF0ZWd5ID8/IFwic2FtcGxlXCI7XG4gICAgY29uc3QgbGltaXQgPSBvcHRpb25zLmxpbWl0ID8gTnVtYmVyLnBhcnNlSW50KFN0cmluZyhvcHRpb25zLmxpbWl0KSwgMTApIDogMTA7XG5cbiAgICBjb25zdCBkYiA9IERCLmdldERCKFwiclwiKTtcbiAgICBjb25zdCBleHBsb3JlciA9IG5ldyBEYXRhRXhwbG9yZXIoZGIsIEVudGl0eU1hbmFnZXIpO1xuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCBleHBsb3Jlci5leHBsb3JlKGVudGl0eU5hbWUsIHsgc3RyYXRlZ3ksIGxpbWl0IH0pO1xuXG4gICAgY29uc29sZS5sb2coY2hhbGsuY3lhbihgXFxuJHtlbnRpdHlOYW1lfSAke2RhdGEubGVuZ3RofeqwnCDsobDtmowg7JmE66OMOmApKTtcbiAgICBjb25zb2xlLnRhYmxlKGRhdGEpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICBjaGFsay5yZWQoXG4gICAgICAgIFwi642w7J207YSwIOyhsO2ajCDspJEg7Jik66WY6rCAIOuwnOyDne2WiOyKteuLiOuLpC5cXG5cIiArXG4gICAgICAgICAgXCLsm5Dsnbg6IERCIOyXsOqysOydtOuCmCBFbnRpdHkg7KCV7J2Y66W8IO2ZleyduO2VtOyjvOyEuOyalC5cXG5cIiArXG4gICAgICAgICAgXCLsnpDshLjtlZwg64K07JqpOlwiLFxuICAgICAgKSxcbiAgICAgIGVycm9yLFxuICAgICk7XG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztZQVFzQztRQUNIO1VBQ2tCO29CQUNHO1NBQ1g7bUJBQ1U7dUJBRVE7cUJBQ0o7Y0FDakI7QUF5QjFDLE1BQU0sc0JBQXNCLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsWUFBWTtBQUVsRixTQUFTLFdBQ1AsWUFDQSxNQUNBLFFBQStCO0NBQUM7Q0FBVTtDQUFXO0FBQVMsR0FDL0M7Q0FDZixPQUFPLElBQUksU0FBUyxTQUFTLFdBQVc7RUFDdEMsTUFBTSxRQUFRLE1BQU0sWUFBWSxNQUFNLEVBQUUsTUFBTSxDQUFDO0VBQy9DLE1BQU0sS0FBSyxTQUFTLE1BQU07RUFDMUIsTUFBTSxLQUFLLFNBQVMsTUFBTSxXQUFXO0dBQ25DLElBQUksU0FBUyxHQUFHLFFBQVE7UUFFdEIsdUJBQ0UsSUFBSSxNQUFNLEdBQUcsV0FBVyxPQUFPLFFBQVEsVUFBVSxVQUFVLGFBQWEsQ0FDMUU7RUFDSixDQUFDO0NBQ0gsQ0FBQztBQUNIO0FBRUEsZUFBZSxlQUFlLE1BQWdCLFlBQW9CO0NBQ2hFLE1BQU0sU0FBUyxNQUFNLEtBQUssWUFBWSxHQUFHO0NBQ3pDLElBQUk7RUFDRixNQUFNLFdBQVcsYUFBYSxNQUFNO0dBQUM7R0FBVSxPQUFPO0dBQUk7RUFBUyxDQUFDO0NBQ3RFLFVBQVU7RUFDUixNQUFNLE9BQU8sTUFBTTtDQUNyQjtBQUNGO0FBRUEsZUFBZSxrQkFBa0IsTUFBZ0IsV0FBbUI7Q0FDbEUsTUFBTSxRQUFRLE1BQU0sS0FBSyxXQUFXLEdBQUc7Q0FDdkMsSUFBSTtFQUNGLE1BQU0sV0FBVyxTQUFTLE1BQU07R0FBQyxNQUFNO0dBQUk7R0FBVztFQUFTLENBQUM7Q0FDbEUsVUFBVTtF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
|
|
495
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZml4dHVyZS5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi9zcmMvYmluL2ZpeHR1cmUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgc3Bhd24sIHR5cGUgU3Bhd25PcHRpb25zIH0gZnJvbSBcIm5vZGU6Y2hpbGRfcHJvY2Vzc1wiO1xuaW1wb3J0IHsgb3BlbiB9IGZyb20gXCJub2RlOmZzL3Byb21pc2VzXCI7XG5cbmltcG9ydCBjaGFsayBmcm9tIFwiY2hhbGtcIjtcbmltcG9ydCBrbmV4LCB7IHR5cGUgS25leCB9IGZyb20gXCJrbmV4XCI7XG5pbXBvcnQgcHJvbXB0cyBmcm9tIFwicHJvbXB0c1wiO1xuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIjtcblxuaW1wb3J0IHsgU29uYW11IH0gZnJvbSBcIi4uL2FwaS9zb25hbXVcIjtcbmltcG9ydCB7IERCIH0gZnJvbSBcIi4uL2RhdGFiYXNlL2RiXCI7XG5pbXBvcnQgeyBjcmVhdGVLbmV4SW5zdGFuY2UgfSBmcm9tIFwiLi4vZGF0YWJhc2Uva25leFwiO1xuaW1wb3J0IHsgRW50aXR5TWFuYWdlciB9IGZyb20gXCIuLi9lbnRpdHkvZW50aXR5LW1hbmFnZXJcIjtcbmltcG9ydCB7IGdldFNvbmFtdUVudmlyb25tZW50IH0gZnJvbSBcIi4uL2VudlwiO1xuaW1wb3J0IHsgRGF0YUV4cGxvcmVyIH0gZnJvbSBcIi4uL3Rlc3RpbmcvZGF0YS1leHBsb3JlclwiO1xuaW1wb3J0IHsgdHlwZSBEYXRhRXhwbG9yZXJTdHJhdGVneSB9IGZyb20gXCIuLi90ZXN0aW5nL2RhdGEtZXhwbG9yZXJcIjtcbmltcG9ydCB7IEZpeHR1cmVHZW5lcmF0b3IgfSBmcm9tIFwiLi4vdGVzdGluZy9maXh0dXJlLWdlbmVyYXRvclwiO1xuaW1wb3J0IHsgRml4dHVyZU1hbmFnZXIgfSBmcm9tIFwiLi4vdGVzdGluZy9maXh0dXJlLW1hbmFnZXJcIjtcbmltcG9ydCB7IGV4aXN0cyB9IGZyb20gXCIuLi91dGlscy9mcy11dGlsc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEZpeHR1cmVDb21tYW5kT3B0aW9ucyB7XG4gIF8/OiBzdHJpbmdbXTtcbiAgYWxsPzogYm9vbGVhbjtcbiAgaW5jbHVkZT86IHN0cmluZztcbiAgZXhjbHVkZT86IHN0cmluZztcbiAgY291bnQ/OiBzdHJpbmcgfCBudW1iZXI7XG4gIFwic2F2ZS10b1wiPzogc3RyaW5nO1xuICBzdHJhdGVneT86IERhdGFFeHBsb3JlclN0cmF0ZWd5O1xuICBsaW1pdD86IHN0cmluZyB8IG51bWJlcjtcbiAgXCJ1c2UtbGxtXCI/OiBib29sZWFuO1xuICBcIm5vLWNhY2hlXCI/OiBib29sZWFuO1xuICBub25JbnRlcmFjdGl2ZT86IGJvb2xlYW47XG4gIHVzZXJNb2RlPzogXCJsb2dpblwiIHwgXCJkdW1teVwiO1xufVxuXG5pbnRlcmZhY2UgU2lnbnVwQm9keSB7XG4gIG5hbWU6IHN0cmluZztcbiAgZW1haWw6IHN0cmluZztcbiAgdXNlcm5hbWU6IHN0cmluZztcbiAgcGFzc3dvcmQ6IHN0cmluZztcbiAgZGlzcGxheV91c2VybmFtZT86IHN0cmluZztcbn1cblxuY29uc3QgU2lnbnVwRXJyb3JSZXNwb25zZSA9IHoub2JqZWN0KHsgY29kZTogei5zdHJpbmcoKS5vcHRpb25hbCgpIH0pLnBhc3N0aHJvdWdoKCk7XG5cbmZ1bmN0aW9uIHJ1blByb2Nlc3MoXG4gIGV4ZWN1dGFibGU6IHN0cmluZyxcbiAgYXJnczogc3RyaW5nW10sXG4gIHN0ZGlvOiBTcGF3bk9wdGlvbnNbXCJzdGRpb1wiXSA9IFtcImlnbm9yZVwiLCBcImluaGVyaXRcIiwgXCJpbmhlcml0XCJdLFxuKTogUHJvbWlzZTx2b2lkPiB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgY29uc3QgY2hpbGQgPSBzcGF3bihleGVjdXRhYmxlLCBhcmdzLCB7IHN0ZGlvIH0pO1xuICAgIGNoaWxkLm9uY2UoXCJlcnJvclwiLCByZWplY3QpO1xuICAgIGNoaWxkLm9uY2UoXCJleGl0XCIsIChjb2RlLCBzaWduYWwpID0+IHtcbiAgICAgIGlmIChjb2RlID09PSAwKSByZXNvbHZlKCk7XG4gICAgICBlbHNlXG4gICAgICAgIHJlamVjdChcbiAgICAgICAgICBuZXcgRXJyb3IoYCR7ZXhlY3V0YWJsZX0g66qF66C57J20ICR7Y29kZSA/PyBzaWduYWwgPz8gXCJ1bmtub3duXCJ9IOyDge2DnOuhnCDsi6TtjKjtlojsirXri4jri6QuYCksXG4gICAgICAgICk7XG4gICAgfSk7XG4gIH0pO1xufVxuXG5hc3luYyBmdW5jdGlvbiB3cml0ZU15c3FsRHVtcChhcmdzOiBzdHJpbmdbXSwgb3V0cHV0UGF0aDogc3RyaW5nKSB7XG4gIGNvbnN0IG91dHB1dCA9IGF3YWl0IG9wZW4ob3V0cHV0UGF0aCwgXCJ3XCIpO1xuICB0cnkge1xuICAgIGF3YWl0IHJ1blByb2Nlc3MoXCJteXNxbGR1bXBcIiwgYXJncywgW1wiaWdub3JlXCIsIG91dHB1dC5mZCwgXCJpbmhlcml0XCJdKTtcbiAgfSBmaW5hbGx5IHtcbiAgICBhd2FpdCBvdXRwdXQuY2xvc2UoKTtcbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBydW5NeXNxbFdpdGhJbnB1dChhcmdzOiBzdHJpbmdbXSwgaW5wdXRQYXRoOiBzdHJpbmcpIHtcbiAgY29uc3QgaW5wdXQgPSBhd2FpdCBvcGVuKGlucHV0UGF0aCwgXCJyXCIpO1xuICB0cnkge1xuICAgIGF3YWl0IHJ1blByb2Nlc3MoXCJteXNxbFwiLCBhcmdzLCBbaW5wdXQuZmQsIFwiaW5oZXJpdFwiLCBcImluaGVyaXRcIl0pO1xuICB9IGZpbmFsbHkge1xuICAgIGF3YWl0IGlucHV0LmNsb3NlKCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gbXlzcWxDb25uZWN0aW9uQXJncyhjb25uZWN0aW9uOiBLbmV4LkNvbm5lY3Rpb25Db25maWcpIHtcbiAgcmV0dXJuIFtcbiAgICBgLWgke1N0cmluZyhjb25uZWN0aW9uLmhvc3QpfWAsXG4gICAgYC11JHtTdHJpbmcoY29ubmVjdGlvbi51c2VyKX1gLFxuICAgIGAtcCR7U3RyaW5nKGNvbm5lY3Rpb24ucGFzc3dvcmQpfWAsXG4gIF07XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBmaXh0dXJlSW5pdENvbW1hbmQoKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHNyY0NvbmZpZyA9IFNvbmFtdS5kYkNvbmZpZ1tnZXRTb25hbXVFbnZpcm9ubWVudCgpXTtcbiAgY29uc3QgZml4dHVyZUNvbm5lY3Rpb24gPVxuICAgIC8qIFNBRkVUWTogU29uYW11IERCIOq1rOyEseydgCDstIjquLDtmZQg7IucIEtuZXgg7Jew6rKwIOq1rOyEseycvOuhnCDqsoDspp3rkKnri4jri6QuICovIFNvbmFtdS5kYkNvbmZpZy5maXh0dXJlXG4gICAgICAuY29ubmVjdGlvbiBhcyBLbmV4LkNvbm5lY3Rpb25Db25maWc7XG4gIGNvbnN0IHRlc3RDb25uZWN0aW9uID1cbiAgICAvKiBTQUZFVFk6IFNvbmFtdSBEQiDqtazshLHsnYAg7LSI6riw7ZmUIOyLnCBLbmV4IOyXsOqysCDqtazshLHsnLzroZwg6rKA7Kad65Cp64uI64ukLiAqLyBTb25hbXUuZGJDb25maWcudGVzdFxuICAgICAgLmNvbm5lY3Rpb24gYXMgS25leC5Db25uZWN0aW9uQ29uZmlnO1xuICBjb25zdCB0YXJnZXRzOiBBcnJheTx7IGxhYmVsOiBzdHJpbmc7IGNvbmZpZzogS25leC5Db25maWc7IHRvU2tpcD86IGJvb2xlYW4gfT4gPSBbXG4gICAgeyBsYWJlbDogXCIoUkVNT1RFKSBGaXh0dXJlIERCXCIsIGNvbmZpZzogU29uYW11LmRiQ29uZmlnLmZpeHR1cmUgfSxcbiAgICB7XG4gICAgICBsYWJlbDogXCIoTE9DQUwpIFRlc3RpbmcgREJcIixcbiAgICAgIGNvbmZpZzogU29uYW11LmRiQ29uZmlnLnRlc3QsXG4gICAgICAvLyDqsJnsnYAgRELrpbwg6rCA66as7YKk66m0IOybkOqyqSBmaXh0dXJl66W8IOuLpOyLnCDrja7slrTsk7Dsp4Ag7JWK7Iq164uI64ukLlxuICAgICAgdG9Ta2lwOlxuICAgICAgICBmaXh0dXJlQ29ubmVjdGlvbi5ob3N0ID09PSB0ZXN0Q29ubmVjdGlvbi5ob3N0ICYmXG4gICAgICAgIGZpeHR1cmVDb25uZWN0aW9uLmRhdGFiYXNlID09PSB0ZXN0Q29ubmVjdGlvbi5kYXRhYmFzZSxcbiAgICB9LFxuICBdO1xuXG4gIGNvbnN0IGR1bXBGaWxlbmFtZSA9IGAvdG1wL3NvbmFtdS1maXh0dXJlLWluaXQtJHtEYXRlLm5vdygpfS5zcWxgO1xuICBjb25zdCBtaWdyYXRpb25zRHVtcCA9IGAvdG1wL3NvbmFtdS1maXh0dXJlLWluaXQtbWlncmF0aW9ucy0ke0RhdGUubm93KCl9LnNxbGA7XG4gIGNvbnN0IHNyY0Nvbm5lY3Rpb24gPVxuICAgIC8qIFNBRkVUWTogU29uYW11IERCIOq1rOyEseydgCDstIjquLDtmZQg7IucIEtuZXgg7Jew6rKwIOq1rOyEseycvOuhnCDqsoDspp3rkKnri4jri6QuICovIHNyY0NvbmZpZy5jb25uZWN0aW9uIGFzIEtuZXguQ29ubmVjdGlvbkNvbmZpZztcbiAgYXdhaXQgd3JpdGVNeXNxbER1bXAoXG4gICAgW1xuICAgICAgLi4ubXlzcWxDb25uZWN0aW9uQXJncyhzcmNDb25uZWN0aW9uKSxcbiAgICAgIFwiLS1zaW5nbGUtdHJhbnNhY3Rpb25cIixcbiAgICAgIFwiLWRcIixcbiAgICAgIFwiLS1uby1jcmVhdGUtZGJcIixcbiAgICAgIFwiLS10cmlnZ2Vyc1wiLFxuICAgICAgU3RyaW5nKHNyY0Nvbm5lY3Rpb24uZGF0YWJhc2UpLFxuICAgIF0sXG4gICAgZHVtcEZpbGVuYW1lLFxuICApO1xuXG4gIGNvbnN0IHNvdXJjZURiID0ga25leChzcmNDb25maWcpO1xuICB0cnkge1xuICAgIGNvbnN0IFtbbWlncmF0aW9uc11dID0gYXdhaXQgc291cmNlRGIucmF3KFxuICAgICAgXCJTRUxFQ1QgQ09VTlQoKikgYXMgY291bnQgRlJPTSBpbmZvcm1hdGlvbl9zY2hlbWEudGFibGVzIFdIRVJFIHRhYmxlX3NjaGVtYSA9ID8gQU5EIHRhYmxlX25hbWUgPSAna25leF9taWdyYXRpb25zJ1wiLFxuICAgICAgW3NyY0Nvbm5lY3Rpb24uZGF0YWJhc2VdLFxuICAgICk7XG4gICAgaWYgKG1pZ3JhdGlvbnMuY291bnQgPiAwKSB7XG4gICAgICBhd2FpdCB3cml0ZU15c3FsRHVtcChcbiAgICAgICAgW1xuICAgICAgICAgIC4uLm15c3FsQ29ubmVjdGlvbkFyZ3Moc3JjQ29ubmVjdGlvbiksXG4gICAgICAgICAgXCItLXNpbmdsZS10cmFuc2FjdGlvblwiLFxuICAgICAgICAgIFwiLS1uby1jcmVhdGUtZGJcIixcbiAgICAgICAgICBcIi0tdHJpZ2dlcnNcIixcbiAgICAgICAgICBTdHJpbmcoc3JjQ29ubmVjdGlvbi5kYXRhYmFzZSksXG4gICAgICAgICAgXCJrbmV4X21pZ3JhdGlvbnNcIixcbiAgICAgICAgICBcImtuZXhfbWlncmF0aW9uc19sb2NrXCIsXG4gICAgICAgIF0sXG4gICAgICAgIG1pZ3JhdGlvbnNEdW1wLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IHsgbGFiZWwsIGNvbmZpZywgdG9Ta2lwIH0gb2YgdGFyZ2V0cykge1xuICAgICAgY29uc3QgY29ubmVjdGlvbiA9XG4gICAgICAgIC8qIFNBRkVUWTogdGFyZ2V0c+uKlCDqsoDspp3rkJwgU29uYW11IERCIOq1rOyEseyXkOyEnOunjCDsobDtlanrkKnri4jri6QuICovIGNvbmZpZy5jb25uZWN0aW9uIGFzIEtuZXguQ29ubmVjdGlvbkNvbmZpZztcbiAgICAgIGlmICh0b1NraXAgPT09IHRydWUpIHtcbiAgICAgICAgY29uc29sZS5sb2coY2hhbGsucmVkKGAke2xhYmVsfTogU2tpcHBlZCFgKSk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBkYXRhYmFzZUNvbm5lY3Rpb24gPVxuICAgICAgICAvKiBTQUZFVFk6IHRhcmdldHPripQg6rKA7Kad65CcIFNvbmFtdSBEQiDqtazshLHsl5DshJzrp4wg7KGw7ZWp65Cp64uI64ukLiAqLyAoY29uZmlnLmNvbm5lY3Rpb24gPz9cbiAgICAgICAgICB7fSkgYXMgS25leC5Db25uZWN0aW9uQ29uZmlnO1xuICAgICAgY29uc3QgZGIgPSBrbmV4KHtcbiAgICAgICAgLi4uY29uZmlnLFxuICAgICAgICBjb25uZWN0aW9uOiB7IC4uLmRhdGFiYXNlQ29ubmVjdGlvbiwgZGF0YWJhc2U6IHVuZGVmaW5lZCB9LFxuICAgICAgfSk7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBbW3Jvd11dID0gYXdhaXQgZGIucmF3KGBTSE9XIERBVEFCQVNFUyBMSUtFIFwiJHtjb25uZWN0aW9uLmRhdGFiYXNlfVwiYCk7XG4gICAgICAgIGlmIChyb3cpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhjaGFsay55ZWxsb3coYCR7bGFiZWx9OiBEYXRhYmFzZSBcIiR7Y29ubmVjdGlvbi5kYXRhYmFzZX1cIiBBbHJlYWR5IGV4aXN0c2ApKTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGNvbm5lY3Rpb25BcmdzID0gbXlzcWxDb25uZWN0aW9uQXJncyhjb25uZWN0aW9uKTtcbiAgICAgICAgY29uc3QgZGF0YWJhc2UgPSBTdHJpbmcoY29ubmVjdGlvbi5kYXRhYmFzZSk7XG4gICAgICAgIGNvbnN0IGVzY2FwZWREYXRhYmFzZSA9IGRhdGFiYXNlLnJlcGxhY2VBbGwoXCJgXCIsIFwiYGBcIik7XG4gICAgICAgIGF3YWl0IHJ1blByb2Nlc3MoXCJteXNxbFwiLCBbXG4gICAgICAgICAgLi4uY29ubmVjdGlvbkFyZ3MsXG4gICAgICAgICAgXCItZVwiLFxuICAgICAgICAgIGBEUk9QIERBVEFCQVNFIElGIEVYSVNUUyBcXGAke2VzY2FwZWREYXRhYmFzZX1cXGBgLFxuICAgICAgICBdKTtcbiAgICAgICAgYXdhaXQgcnVuUHJvY2VzcyhcIm15c3FsXCIsIFtcbiAgICAgICAgICAuLi5jb25uZWN0aW9uQXJncyxcbiAgICAgICAgICBcIi1lXCIsXG4gICAgICAgICAgYENSRUFURSBEQVRBQkFTRSBcXGAke2VzY2FwZWREYXRhYmFzZX1cXGBgLFxuICAgICAgICBdKTtcbiAgICAgICAgYXdhaXQgcnVuTXlzcWxXaXRoSW5wdXQoWy4uLmNvbm5lY3Rpb25BcmdzLCBkYXRhYmFzZV0sIGR1bXBGaWxlbmFtZSk7XG4gICAgICAgIGlmIChhd2FpdCBleGlzdHMobWlncmF0aW9uc0R1bXApKSB7XG4gICAgICAgICAgYXdhaXQgcnVuTXlzcWxXaXRoSW5wdXQoWy4uLmNvbm5lY3Rpb25BcmdzLCBkYXRhYmFzZV0sIG1pZ3JhdGlvbnNEdW1wKTtcbiAgICAgICAgfVxuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgYXdhaXQgZGIuZGVzdHJveSgpO1xuICAgICAgfVxuICAgIH1cbiAgfSBmaW5hbGx5IHtcbiAgICBhd2FpdCBzb3VyY2VEYi5kZXN0cm95KCk7XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZpeHR1cmVDbGVhbnVwQ29tbWFuZCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgYXdhaXQgRml4dHVyZU1hbmFnZXIuZGVzdHJveSgpO1xuICBhd2FpdCBTb25hbXUuZGVzdHJveSgpO1xufVxuXG4vKipcbiAqIHVzZXJuYW1l7J2EIOydvOuwmOyggeyduCDqt5zsuZko7JiB66y47J6QIOyLnOyekSwg7JiB66y47J6QL+yIq+yekOunjCwgMS0yMOyekCnsl5Ag66ee64+E66GdIOygleq3nO2ZlO2VqeuLiOuLpC5cbiAqL1xuZnVuY3Rpb24gc2FuaXRpemVVc2VybmFtZShyYXc6IHN0cmluZyk6IHN0cmluZyB7XG4gIC8vIOyGjOusuOyekCDrs4DtmZgg7ZuEIOyYgeusuOyekC/siKvsnpAg7Jm4IOusuOyekCDsoJzqsbBcbiAgbGV0IHVzZXJuYW1lID0gcmF3LnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvW15hLXowLTldL2csIFwiXCIpO1xuICBpZiAodXNlcm5hbWUubGVuZ3RoID09PSAwKSB7XG4gICAgdXNlcm5hbWUgPSBcInVzZXJcIjtcbiAgfVxuICAvLyDssqsg6riA7J6Q6rCAIOyIq+yekOuptCAndScg7KCR65GQ7Ja0IOy2lOqwgFxuICBpZiAoL15bMC05XS8udGVzdCh1c2VybmFtZSkpIHtcbiAgICB1c2VybmFtZSA9IGB1JHt1c2VybmFtZX1gO1xuICB9XG4gIC8vIDIw7J6QIOy0iOqzvCDsi5wgdHJ1bmNhdGVcbiAgcmV0dXJuIHVzZXJuYW1lLnNsaWNlKDAsIDIwKTtcbn1cblxuLyoqXG4gKiBmaXh0dXJlIGdlbiDrqoXroLnslrQgLSBjb25lIOuplO2DgOuNsOydtO2EsOulvCDtmZzsmqntlZjsl6wg7J6Q64+Z7Jy866GcIGZpeHR1cmXrpbwg7IOd7ISx7ZWp64uI64ukLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZml4dHVyZUdlbkNvbW1hbmQob3B0aW9uczogRml4dHVyZUNvbW1hbmRPcHRpb25zKSB7XG4gIHRyeSB7XG4gICAgaWYgKCFFbnRpdHlNYW5hZ2VyLmlzQXV0b2xvYWRlZCkge1xuICAgICAgYXdhaXQgRW50aXR5TWFuYWdlci5hdXRvbG9hZCgpO1xuICAgIH1cblxuICAgIGxldCBlbnRpdHlOYW1lczogc3RyaW5nW107XG5cbiAgICBpZiAob3B0aW9ucy5hbGwpIHtcbiAgICAgIGVudGl0eU5hbWVzID0gRW50aXR5TWFuYWdlci5nZXRBbGxJZHMoKTtcbiAgICAgIGlmIChvcHRpb25zLmV4Y2x1ZGUpIHtcbiAgICAgICAgY29uc3QgZXhjbHVkZUxpc3QgPSBvcHRpb25zLmV4Y2x1ZGUuc3BsaXQoXCIsXCIpLm1hcCgoczogc3RyaW5nKSA9PiBzLnRyaW0oKSk7XG4gICAgICAgIGVudGl0eU5hbWVzID0gZW50aXR5TmFtZXMuZmlsdGVyKChuYW1lKSA9PiAhZXhjbHVkZUxpc3QuaW5jbHVkZXMobmFtZSkpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAob3B0aW9ucy5pbmNsdWRlKSB7XG4gICAgICBlbnRpdHlOYW1lcyA9IG9wdGlvbnMuaW5jbHVkZS5zcGxpdChcIixcIikubWFwKChzOiBzdHJpbmcpID0+IHMudHJpbSgpKTtcbiAgICB9IGVsc2UgaWYgKG9wdGlvbnMubm9uSW50ZXJhY3RpdmUgPT09IHRydWUpIHtcbiAgICAgIHRocm93IE9iamVjdC5hc3NpZ24obmV3IEVycm9yKFwiRml4dHVyZSBnZW4gc2VsZWN0b3IgaXMgcmVxdWlyZWQuXCIpLCB7XG4gICAgICAgIGNvZGU6IFwiTUlTU0lOR19BUkdVTUVOVFwiLFxuICAgICAgICBleGl0Q29kZTogMixcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBwcm9tcHRzKHtcbiAgICAgICAgdHlwZTogXCJtdWx0aXNlbGVjdFwiLFxuICAgICAgICBuYW1lOiBcImVudGl0aWVzXCIsXG4gICAgICAgIG1lc3NhZ2U6IFwiRml4dHVyZeulvCDsg53shLHtlaAgRW50aXR566W8IOyEoO2Dne2VmOyEuOyalDpcIixcbiAgICAgICAgY2hvaWNlczogRW50aXR5TWFuYWdlci5nZXRBbGxJZHMoKS5tYXAoKGlkKSA9PiAoeyB0aXRsZTogaWQsIHZhbHVlOiBpZCB9KSksXG4gICAgICAgIG1pbjogMSxcbiAgICAgIH0pO1xuXG4gICAgICBpZiAoIXJlc3VsdC5lbnRpdGllcyB8fCByZXN1bHQuZW50aXRpZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGNoYWxrLnllbGxvdyhcIuy3qOyGjOuQmOyXiOyKteuLiOuLpC5cIikpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGVudGl0eU5hbWVzID0gcmVzdWx0LmVudGl0aWVzO1xuICAgIH1cblxuICAgIGxldCBjb3VudCA9IG9wdGlvbnMuY291bnQgPyBOdW1iZXIucGFyc2VJbnQoU3RyaW5nKG9wdGlvbnMuY291bnQpLCAxMCkgOiA1O1xuICAgIGlmICghb3B0aW9ucy5jb3VudCAmJiBvcHRpb25zLm5vbkludGVyYWN0aXZlICE9PSB0cnVlKSB7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBwcm9tcHRzKHtcbiAgICAgICAgdHlwZTogXCJudW1iZXJcIixcbiAgICAgICAgbmFtZTogXCJjb3VudFwiLFxuICAgICAgICBtZXNzYWdlOiBcIuqwgSBFbnRpdHnrs4Qg7IOd7ISxIOqwnOyImDpcIixcbiAgICAgICAgaW5pdGlhbDogNSxcbiAgICAgICAgbWluOiAxLFxuICAgICAgfSk7XG5cbiAgICAgIGlmICghcmVzdWx0LmNvdW50KSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGNoYWxrLnllbGxvdyhcIuy3qOyGjOuQmOyXiOyKteuLiOuLpC5cIikpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvdW50ID0gcmVzdWx0LmNvdW50O1xuICAgIH1cblxuICAgIC8vIFVzZXIg7JeU7Yuw7Yuw6rCAIO2PrO2VqOuQnCDqsr3smrA6IOuhnOq3uOyduCDqsIDriqUv7ZmV7J247JqpIOu2hOq4sCDshKDtg51cbiAgICBjb25zdCBoYXNVc2VyID0gZW50aXR5TmFtZXMuaW5jbHVkZXMoXCJVc2VyXCIpO1xuXG4gICAgaWYgKGhhc1VzZXIpIHtcbiAgICAgIGxldCB1c2VyTW9kZSA9IG9wdGlvbnMudXNlck1vZGU7XG4gICAgICBpZiAodXNlck1vZGUgPT09IHVuZGVmaW5lZCAmJiBvcHRpb25zLm5vbkludGVyYWN0aXZlID09PSB0cnVlKSB1c2VyTW9kZSA9IFwiZHVtbXlcIjtcbiAgICAgIGlmICh1c2VyTW9kZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNvbnN0IHVzZXJNb2RlUmVzdWx0ID0gYXdhaXQgcHJvbXB0cyh7XG4gICAgICAgICAgdHlwZTogXCJzZWxlY3RcIixcbiAgICAgICAgICBuYW1lOiBcInVzZXJNb2RlXCIsXG4gICAgICAgICAgbWVzc2FnZTogXCJVc2VyIOyXlO2LsO2LsOqwgCDtj6ztlajrkJjslrQg7J6I7Iq164uI64ukLiDsg53shLEg67Cp7Iud7J2EIOyEoO2Dne2VmOyEuOyalDpcIixcbiAgICAgICAgICBjaG9pY2VzOiBbXG4gICAgICAgICAgICB7IHRpdGxlOiBcIjEuIOuhnOq3uOyduCDqsIDriqXtlZwg7IKs7Jqp7J6QIGZpeHR1cmUg7IOd7ISxXCIsIHZhbHVlOiBcImxvZ2luXCIgfSxcbiAgICAgICAgICAgIHsgdGl0bGU6IFwiMi4g7ZmV7J247JqpIOuNsOydtO2EsCjroZzqt7jsnbgg67aI6rCAKSDsg53shLFcIiwgdmFsdWU6IFwiZHVtbXlcIiB9LFxuICAgICAgICAgIF0sXG4gICAgICAgIH0pO1xuICAgICAgICB1c2VyTW9kZSA9IHVzZXJNb2RlUmVzdWx0LnVzZXJNb2RlO1xuICAgICAgfVxuXG4gICAgICBpZiAoIXVzZXJNb2RlKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGNoYWxrLnllbGxvdyhcIuy3qOyGjOuQmOyXiOyKteuLiOuLpC5cIikpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmICh1c2VyTW9kZSA9PT0gXCJsb2dpblwiKSB7XG4gICAgICAgIC8vIExMTSDsgqzsmqkg7Jes67aAXG4gICAgICAgIGxldCB1c2VMTE0gPSBvcHRpb25zW1widXNlLWxsbVwiXSA/PyBmYWxzZTtcbiAgICAgICAgaWYgKG9wdGlvbnNbXCJ1c2UtbGxtXCJdID09PSB1bmRlZmluZWQgJiYgb3B0aW9ucy5ub25JbnRlcmFjdGl2ZSAhPT0gdHJ1ZSkge1xuICAgICAgICAgIGNvbnN0IGxsbVJlc3VsdCA9IGF3YWl0IHByb21wdHMoe1xuICAgICAgICAgICAgdHlwZTogXCJjb25maXJtXCIsXG4gICAgICAgICAgICBuYW1lOiBcInVzZUxMTVwiLFxuICAgICAgICAgICAgbWVzc2FnZTpcbiAgICAgICAgICAgICAgXCJMTE3snLzroZwg642UIO2YhOyLpOyggeyduCDrjbDsnbTthLDrpbwg7IOd7ISx7ZWg6rmM7JqUPyAoZml4dHVyZUhpbnQg6riw67CYLCBBTlRIUk9QSUNfQVBJX0tFWSDtlYTsmpQpXCIsXG4gICAgICAgICAgICBpbml0aWFsOiBmYWxzZSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB1c2VMTE0gPSBsbG1SZXN1bHQudXNlTExNID8/IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZW5hYmxlTExNQ2FjaGUgPSAhb3B0aW9uc1tcIm5vLWNhY2hlXCJdO1xuICAgICAgICBjb25zdCBERUZBVUxUX1BBU1NXT1JEID0gXCJUZXN0MTIzNCFcIjtcblxuICAgICAgICAvLyDroZzqt7jsnbgg6rCA64qlIOqyveuhnOyXkOyEnOuKlCDtmITsnqwg7ZmY6rK97J2YIOydveq4sCBEQuulvCBzb3VyY2VEYuuhnCDsgqzsmqlcbiAgICAgICAgY29uc3Qgc291cmNlRGIgPSBEQi5nZXREQihcInJcIik7XG4gICAgICAgIGNvbnN0IGdlbmVyYXRvciA9IG5ldyBGaXh0dXJlR2VuZXJhdG9yKFxuICAgICAgICAgIHNvdXJjZURiLFxuICAgICAgICAgIHNvdXJjZURiLFxuICAgICAgICAgIGdldFNvbmFtdUVudmlyb25tZW50KCksXG4gICAgICAgICAgRW50aXR5TWFuYWdlcixcbiAgICAgICAgICB7IHVzZUxMTSwgZW5hYmxlTExNQ2FjaGUgfSxcbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCBjcmVhdGVkQ3JlZGVudGlhbHM6IEFycmF5PHsgZW1haWw6IHN0cmluZzsgcGFzc3dvcmQ6IHN0cmluZyB9PiA9IFtdO1xuICAgICAgICBjb25zdCBiYXNlUGF0aCA9IFNvbmFtdS5jb25maWcuc2VydmVyLmF1dGg/LmJhc2VQYXRoID8/IFwiL2FwaS9hdXRoXCI7XG5cbiAgICAgICAgaWYgKHVzZUxMTSkge1xuICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgY2hhbGsuY3lhbihcbiAgICAgICAgICAgICAgYFxcbkxMTSDrqqjrk5zroZwg66Gc6re47J24IOqwgOuKpe2VnCDsgqzsmqnsnpAgJHtjb3VudH3rqoUg7IOd7ISxIOykkS4uLiAo7LqQ7IuxOiAke2VuYWJsZUxMTUNhY2hlID8gXCJPTlwiIDogXCJPRkZcIn0pYCxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhjaGFsay5jeWFuKGBcXG7roZzqt7jsnbgg6rCA64ql7ZWcIOyCrOyaqeyekCAke2NvdW50feuqhSDsg53shLEg7KSRLi4uYCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7XG4gICAgICAgICAgY29uc3QgdXNlckRhdGEgPSBhd2FpdCBnZW5lcmF0b3IuZ2VuZXJhdGUoXCJVc2VyXCIpO1xuXG4gICAgICAgICAgY29uc3QgbmFtZSA9IFN0cmluZyh1c2VyRGF0YS5uYW1lID8/IFwiXCIpO1xuICAgICAgICAgIGNvbnN0IGVtYWlsID0gU3RyaW5nKHVzZXJEYXRhLmVtYWlsID8/IFwiXCIpO1xuICAgICAgICAgIGNvbnN0IHVzZXJuYW1lID0gc2FuaXRpemVVc2VybmFtZShTdHJpbmcodXNlckRhdGEudXNlcm5hbWUgPz8gXCJcIikpO1xuICAgICAgICAgIGNvbnN0IGRpc3BsYXlVc2VybmFtZSA9XG4gICAgICAgICAgICB1c2VyRGF0YS5kaXNwbGF5X3VzZXJuYW1lICE9PSB1bmRlZmluZWQgPyBTdHJpbmcodXNlckRhdGEuZGlzcGxheV91c2VybmFtZSkgOiB1bmRlZmluZWQ7XG5cbiAgICAgICAgICBjb25zdCBib2R5OiBTaWdudXBCb2R5ID0ge1xuICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgIGVtYWlsLFxuICAgICAgICAgICAgdXNlcm5hbWUsXG4gICAgICAgICAgICBwYXNzd29yZDogREVGQVVMVF9QQVNTV09SRCxcbiAgICAgICAgICB9O1xuICAgICAgICAgIGlmIChkaXNwbGF5VXNlcm5hbWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgYm9keS5kaXNwbGF5X3VzZXJuYW1lID0gZGlzcGxheVVzZXJuYW1lO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IHJlcSA9IG5ldyBSZXF1ZXN0KGBodHRwOi8vbG9jYWxob3N0JHtiYXNlUGF0aH0vc2lnbi11cC9lbWFpbGAsIHtcbiAgICAgICAgICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgICAgICAgICBoZWFkZXJzOiB7IFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiIH0sXG4gICAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeShib2R5KSxcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgU29uYW11LmF1dGguaGFuZGxlcihyZXEpO1xuXG4gICAgICAgICAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgICAgICAgICAgY29uc3QgcmVzcG9uc2VEYXRhID0gU2lnbnVwRXJyb3JSZXNwb25zZS5wYXJzZShhd2FpdCByZXNwb25zZS5qc29uKCkpO1xuICAgICAgICAgICAgY29uc3QgY29kZSA9IHJlc3BvbnNlRGF0YS5jb2RlO1xuICAgICAgICAgICAgaWYgKGNvZGUgPT09IFwiVVNFUl9BTFJFQURZX0VYSVNUU1wiKSB7XG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKGNoYWxrLnllbGxvdyhgICDimqDvuI8gICR7ZW1haWx9IOydtOuvuCDsobTsnqwgLSDqsbTrhIjrnIHri4jri6QuYCkpO1xuICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGNoYWxrLnJlZChgICDinYwgJHtlbWFpbH0g7IOd7ISxIOyLpO2MqDogJHtKU09OLnN0cmluZ2lmeShyZXNwb25zZURhdGEpfWApKTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNyZWF0ZWRDcmVkZW50aWFscy5wdXNoKHsgZW1haWwsIHBhc3N3b3JkOiBERUZBVUxUX1BBU1NXT1JEIH0pO1xuICAgICAgICAgIGNvbnNvbGUubG9nKGNoYWxrLmdyZWVuKGAgIOKchSAke2VtYWlsfSDsg53shLEg7JmE66OMYCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gZW1haWxfdmVyaWZpZWQgPSB0cnVlIOyngeygkSDsl4XrjbDsnbTtirggKGRldiDtjrjsnZgpXG4gICAgICAgIGlmIChjcmVhdGVkQ3JlZGVudGlhbHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGNvbnN0IGVtYWlscyA9IGNyZWF0ZWRDcmVkZW50aWFscy5tYXAoKGMpID0+IGMuZW1haWwpO1xuICAgICAgICAgIGF3YWl0IERCLmdldERCKFwid1wiKShcInVzZXJzXCIpLndoZXJlSW4oXCJlbWFpbFwiLCBlbWFpbHMpLnVwZGF0ZSh7IGVtYWlsX3ZlcmlmaWVkOiB0cnVlIH0pO1xuICAgICAgICAgIGNvbnNvbGUubG9nKGNoYWxrLmdyZWVuKGBcXG5lbWFpbF92ZXJpZmllZCA9IHRydWUg7JeF642w7J207Yq4IOyZhOujjGApKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh1c2VMTE0pIHtcbiAgICAgICAgICBjb25zdCBzdGF0cyA9IGdlbmVyYXRvci5nZXRMTE1DYWNoZVN0YXRzKCk7XG4gICAgICAgICAgY29uc29sZS5sb2coY2hhbGsuY3lhbihgW0xMTSBDYWNoZV0g7LqQ7IucIO2BrOq4sDogJHtzdGF0cy5zaXplfWApKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgIGNoYWxrLmdyZWVuKGBcXG7inIUgJHtjcmVhdGVkQ3JlZGVudGlhbHMubGVuZ3RofeuqheydmCDroZzqt7jsnbgg6rCA64ql7ZWcIOyCrOyaqeyekCDsg53shLEg7JmE66OMYCksXG4gICAgICAgICk7XG4gICAgICAgIGlmIChjcmVhdGVkQ3JlZGVudGlhbHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGNvbnNvbGUubG9nKFwiXFxu7IOd7ISx65CcIOqzhOyglSDrqqnroZ06XCIpO1xuICAgICAgICAgIGNvbnNvbGUudGFibGUoY3JlYXRlZENyZWRlbnRpYWxzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIC8vIHVzZXJNb2RlID09PSBcImR1bW15XCI6IOq4sOyhtCBnZW5lcmF0ZUJhdGNoKCkg7Z2Q66aEIOqzhOyGjVxuICAgIH1cblxuICAgIGxldCBzYXZlVGFyZ2V0ID0gb3B0aW9uc1tcInNhdmUtdG9cIl0gfHwgXCJkYlwiO1xuICAgIGlmICghb3B0aW9uc1tcInNhdmUtdG9cIl0gJiYgb3B0aW9ucy5ub25JbnRlcmFjdGl2ZSAhPT0gdHJ1ZSkge1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcHJvbXB0cyh7XG4gICAgICAgIHR5cGU6IFwic2VsZWN0XCIsXG4gICAgICAgIG5hbWU6IFwic2F2ZVRhcmdldFwiLFxuICAgICAgICBtZXNzYWdlOiBcIuyggOyepSDrsKnsi506XCIsXG4gICAgICAgIGNob2ljZXM6IFtcbiAgICAgICAgICB7IHRpdGxlOiBcIkZpeHR1cmUgRELsl5Ag7KCA7J6lXCIsIHZhbHVlOiBcImRiXCIgfSxcbiAgICAgICAgICB7IHRpdGxlOiBcIu2MjOydvOuhnCDsoIDsnqUgKOyekOuPmSDtjIzsnbzrqoUpXCIsIHZhbHVlOiBcImZpbGVcIiB9LFxuICAgICAgICAgIHsgdGl0bGU6IFwi7YyM7J2866GcIOyggOyepSAo7YyM7J2866qFIOyngOyglSlcIiwgdmFsdWU6IFwiZmlsZTpjdXN0b21cIiB9LFxuICAgICAgICAgIHsgdGl0bGU6IFwi7KCA7J6lIOyViCDtlaggKOy2nOugpeunjClcIiwgdmFsdWU6IFwibm9uZVwiIH0sXG4gICAgICAgIF0sXG4gICAgICB9KTtcblxuICAgICAgc2F2ZVRhcmdldCA9IHJlc3VsdC5zYXZlVGFyZ2V0O1xuXG4gICAgICBpZiAoc2F2ZVRhcmdldCA9PT0gXCJmaWxlOmN1c3RvbVwiKSB7XG4gICAgICAgIGNvbnN0IGZpbGVuYW1lUmVzdWx0ID0gYXdhaXQgcHJvbXB0cyh7XG4gICAgICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgICAgbmFtZTogXCJmaWxlbmFtZVwiLFxuICAgICAgICAgIG1lc3NhZ2U6IFwi7YyM7J2866qFOlwiLFxuICAgICAgICAgIGluaXRpYWw6IFwiZml4dHVyZXMuanNvblwiLFxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoIWZpbGVuYW1lUmVzdWx0LmZpbGVuYW1lKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coY2hhbGsueWVsbG93KFwi7Leo7IaM65CY7JeI7Iq164uI64ukLlwiKSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgc2F2ZVRhcmdldCA9IGBmaWxlOiR7ZmlsZW5hbWVSZXN1bHQuZmlsZW5hbWV9YDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBMTE0g7IKs7JqpIOyXrOu2gCDqsrDsoJVcbiAgICBsZXQgdXNlTExNID0gb3B0aW9uc1tcInVzZS1sbG1cIl0gPz8gZmFsc2U7XG4gICAgaWYgKG9wdGlvbnNbXCJ1c2UtbGxtXCJdID09PSB1bmRlZmluZWQgJiYgb3B0aW9ucy5ub25JbnRlcmFjdGl2ZSAhPT0gdHJ1ZSkge1xuICAgICAgY29uc3QgbGxtUmVzdWx0ID0gYXdhaXQgcHJvbXB0cyh7XG4gICAgICAgIHR5cGU6IFwiY29uZmlybVwiLFxuICAgICAgICBuYW1lOiBcInVzZUxMTVwiLFxuICAgICAgICBtZXNzYWdlOlxuICAgICAgICAgIFwiTExN7Jy866GcIOuNlCDtmITsi6TsoIHsnbgg642w7J207YSw66W8IOyDneyEse2VoOq5jOyalD8gKGZpeHR1cmVIaW50IOq4sOuwmCwgQU5USFJPUElDX0FQSV9LRVkg7ZWE7JqUKVwiLFxuICAgICAgICBpbml0aWFsOiBmYWxzZSxcbiAgICAgIH0pO1xuICAgICAgdXNlTExNID0gbGxtUmVzdWx0LnVzZUxMTSA/PyBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCBlbmFibGVMTE1DYWNoZSA9ICFvcHRpb25zW1wibm8tY2FjaGVcIl07XG5cbiAgICAvLyBmaXh0dXJlIGdlbjogZml4dHVyZSBEQiDrgrTsl5DshJwg7LC47KGwIOq0gOqzhOulvCDtlbTqsrDtlZjqs6Ag7KCA7J6l7ZWp64uI64ukXG4gICAgY29uc3QgZml4dHVyZURiID0gY3JlYXRlS25leEluc3RhbmNlKFNvbmFtdS5kYkNvbmZpZy5maXh0dXJlKTtcbiAgICBjb25zdCBnZW5lcmF0b3IgPSBuZXcgRml4dHVyZUdlbmVyYXRvcihmaXh0dXJlRGIsIGZpeHR1cmVEYiwgXCJmaXh0dXJlXCIsIEVudGl0eU1hbmFnZXIsIHtcbiAgICAgIHVzZUxMTSxcbiAgICAgIGVuYWJsZUxMTUNhY2hlLFxuICAgIH0pO1xuXG4gICAgaWYgKHVzZUxMTSkge1xuICAgICAgY29uc29sZS5sb2coXG4gICAgICAgIGNoYWxrLmN5YW4oXG4gICAgICAgICAgYFxcbkxMTSDrqqjrk5zroZwgJHtlbnRpdHlOYW1lcy5qb2luKFwiLCBcIil9IOyDneyEsSDspJEuLi4gKOy6kOyLsTogJHtlbmFibGVMTE1DYWNoZSA/IFwiT05cIiA6IFwiT0ZGXCJ9KWAsXG4gICAgICAgICksXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmxvZyhjaGFsay5jeWFuKGBcXG4ke2VudGl0eU5hbWVzLmpvaW4oXCIsIFwiKX0g7IOd7ISxIOykkS4uLmApKTtcbiAgICB9XG5cbiAgICBjb25zdCBzcGVjcyA9IGVudGl0eU5hbWVzLm1hcCgoZW50aXR5TmFtZSkgPT4gKHtcbiAgICAgIGVudGl0eTogZW50aXR5TmFtZSxcbiAgICAgIGNvdW50LFxuICAgICAgb3ZlcnJpZGVzOiB7fSxcbiAgICB9KSk7XG5cbiAgICBjb25zdCByZXN1bHRzID0gYXdhaXQgZ2VuZXJhdG9yLmdlbmVyYXRlQmF0Y2goc3BlY3MpO1xuXG4gICAgaWYgKHVzZUxMTSkge1xuICAgICAgY29uc3Qgc3RhdHMgPSBnZW5lcmF0b3IuZ2V0TExNQ2FjaGVTdGF0cygpO1xuICAgICAgY29uc29sZS5sb2coY2hhbGsuY3lhbihgW0xMTSBDYWNoZV0g7LqQ7IucIO2BrOq4sDogJHtzdGF0cy5zaXplfWApKTtcbiAgICB9XG5cbiAgICBjb25zb2xlLmxvZyhjaGFsay5ncmVlbihgXFxu4pyFICR7cmVzdWx0cy5sZW5ndGh96rCcIGZpeHR1cmUg7IOd7ISxIOyZhOujjGApKTtcblxuICAgIGlmIChzYXZlVGFyZ2V0ID09PSBcIm5vbmVcIikge1xuICAgICAgY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkocmVzdWx0cywgbnVsbCwgMikpO1xuICAgIH0gZWxzZSBpZiAoc2F2ZVRhcmdldCA9PT0gXCJkYlwiKSB7XG4gICAgICAvLyBnZW5lcmF0ZUJhdGNo6rCAIOydtOuvuCBEQuyXkCDsoIDsnqXtlojsnLzrr4DroZwg67OE64+EIOyggOyepeydtCDrtojtlYTsmpTtlanri4jri6QuXG4gICAgICBjb25zb2xlLmxvZyhjaGFsay5ncmVlbihcIkZpeHR1cmUgRELsl5Ag7KCA7J6l65CY7JeI7Iq164uI64ukLlwiKSk7XG4gICAgfSBlbHNlIGlmIChzYXZlVGFyZ2V0LnN0YXJ0c1dpdGgoXCJmaWxlXCIpKSB7XG4gICAgICBjb25zdCBmcyA9IGF3YWl0IGltcG9ydChcIm5vZGU6ZnMvcHJvbWlzZXNcIik7XG4gICAgICBjb25zdCBwYXRoID0gYXdhaXQgaW1wb3J0KFwibm9kZTpwYXRoXCIpO1xuXG4gICAgICBjb25zdCBmaXh0dXJlc0RpciA9IHBhdGguam9pbihwcm9jZXNzLmN3ZCgpLCBcInRlc3RcIiwgXCJmaXh0dXJlc1wiKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IGZzLmFjY2VzcyhmaXh0dXJlc0Rpcik7XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgYXdhaXQgZnMubWtkaXIoZml4dHVyZXNEaXIsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICAgICAgfVxuXG4gICAgICBmb3IgKGNvbnN0IGVudGl0eU5hbWUgb2YgZW50aXR5TmFtZXMpIHtcbiAgICAgICAgY29uc3QgZW50aXR5UmVzdWx0cyA9IHJlc3VsdHMuZmlsdGVyKChyKSA9PiByLmVudGl0eUlkID09PSBlbnRpdHlOYW1lKTtcblxuICAgICAgICBpZiAoZW50aXR5UmVzdWx0cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBmaWxlbmFtZTogc3RyaW5nO1xuICAgICAgICBpZiAoc2F2ZVRhcmdldCA9PT0gXCJmaWxlXCIpIHtcbiAgICAgICAgICBjb25zdCBlbnRpdHkgPSBFbnRpdHlNYW5hZ2VyLmdldChlbnRpdHlOYW1lKTtcbiAgICAgICAgICBmaWxlbmFtZSA9IGAke2VudGl0eS50YWJsZX0uanNvbmA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZmlsZW5hbWUgPSBzYXZlVGFyZ2V0LnJlcGxhY2UoXCJmaWxlOlwiLCBcIlwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGZpbGVwYXRoID0gcGF0aC5qb2luKGZpeHR1cmVzRGlyLCBmaWxlbmFtZSk7XG4gICAgICAgIGF3YWl0IGZzLndyaXRlRmlsZShcbiAgICAgICAgICBmaWxlcGF0aCxcbiAgICAgICAgICBKU09OLnN0cmluZ2lmeShcbiAgICAgICAgICAgIGVudGl0eVJlc3VsdHMubWFwKChyKSA9PiByLmRhdGEpLFxuICAgICAgICAgICAgbnVsbCxcbiAgICAgICAgICAgIDIsXG4gICAgICAgICAgKSxcbiAgICAgICAgKTtcbiAgICAgICAgY29uc29sZS5sb2coY2hhbGsuZ3JlZW4oYOKchSAke2ZpbGVwYXRofSDsoIDsnqUg7JmE66OMYCkpO1xuICAgICAgfVxuICAgIH1cbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBjb25zb2xlLmVycm9yKFxuICAgICAgY2hhbGsucmVkKFxuICAgICAgICBcIkZpeHR1cmUg7IOd7ISxIOykkSDsmKTrpZjqsIAg67Cc7IOd7ZaI7Iq164uI64ukLlxcblwiICtcbiAgICAgICAgICBcIuybkOyduDogRW50aXR5IOygleydmOuCmCBEQiDsl7DqsrDsnYQg7ZmV7J247ZW07KO87IS47JqULlxcblwiICtcbiAgICAgICAgICBcIuyekOyEuO2VnCDrgrTsmqk6XCIsXG4gICAgICApLFxuICAgICAgZXJyb3IsXG4gICAgKTtcbiAgICB0aHJvdyBlcnJvcjtcbiAgfVxufVxuXG4vKipcbiAqIGZpeHR1cmUgZmV0Y2gg66qF66C57Ja0IC0g7Iuk7KCcIOyatOyYgSBEQuyXkOyEnCDrjbDsnbTthLDrpbwg6rCA7KC47JmAIGZpeHR1cmXroZwg7KCA7J6l7ZWp64uI64ukLlxuICog6rSA6rOE65CcIOuNsOydtO2EsOuPhCDtlajqu5gg6rCA7KC47Jik66+A66GcIO2YhOyLpOyggeyduCDthYzsiqTtirgg642w7J207YSw66W8IO2ZleuztO2VoCDsiJgg7J6I7Iq164uI64ukLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZml4dHVyZUZldGNoQ29tbWFuZChvcHRpb25zOiBGaXh0dXJlQ29tbWFuZE9wdGlvbnMpIHtcbiAgdHJ5IHtcbiAgICBpZiAoIUVudGl0eU1hbmFnZXIuaXNBdXRvbG9hZGVkKSB7XG4gICAgICBhd2FpdCBFbnRpdHlNYW5hZ2VyLmF1dG9sb2FkKCk7XG4gICAgfVxuXG4gICAgbGV0IGVudGl0eU5hbWVzOiBzdHJpbmdbXTtcblxuICAgIGlmIChvcHRpb25zLmFsbCkge1xuICAgICAgZW50aXR5TmFtZXMgPSBFbnRpdHlNYW5hZ2VyLmdldEFsbElkcygpO1xuICAgICAgaWYgKG9wdGlvbnMuZXhjbHVkZSkge1xuICAgICAgICBjb25zdCBleGNsdWRlTGlzdCA9IG9wdGlvbnMuZXhjbHVkZS5zcGxpdChcIixcIikubWFwKChzOiBzdHJpbmcpID0+IHMudHJpbSgpKTtcbiAgICAgICAgZW50aXR5TmFtZXMgPSBlbnRpdHlOYW1lcy5maWx0ZXIoKG5hbWUpID0+ICFleGNsdWRlTGlzdC5pbmNsdWRlcyhuYW1lKSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChvcHRpb25zLmluY2x1ZGUpIHtcbiAgICAgIGVudGl0eU5hbWVzID0gb3B0aW9ucy5pbmNsdWRlLnNwbGl0KFwiLFwiKS5tYXAoKHM6IHN0cmluZykgPT4gcy50cmltKCkpO1xuICAgIH0gZWxzZSBpZiAob3B0aW9ucy5ub25JbnRlcmFjdGl2ZSA9PT0gdHJ1ZSkge1xuICAgICAgdGhyb3cgT2JqZWN0LmFzc2lnbihuZXcgRXJyb3IoXCJGaXh0dXJlIGZldGNoIHNlbGVjdG9yIGlzIHJlcXVpcmVkLlwiKSwge1xuICAgICAgICBjb2RlOiBcIk1JU1NJTkdfQVJHVU1FTlRcIixcbiAgICAgICAgZXhpdENvZGU6IDIsXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcHJvbXB0cyh7XG4gICAgICAgIHR5cGU6IFwibXVsdGlzZWxlY3RcIixcbiAgICAgICAgbmFtZTogXCJlbnRpdGllc1wiLFxuICAgICAgICBtZXNzYWdlOiBcIkltcG9ydO2VoCBFbnRpdHnrpbwg7ISg7YOd7ZWY7IS47JqUOlwiLFxuICAgICAgICBjaG9pY2VzOiBFbnRpdHlNYW5hZ2VyLmdldEFsbElkcygpLm1hcCgoaWQpID0+ICh7IHRpdGxlOiBpZCwgdmFsdWU6IGlkIH0pKSxcbiAgICAgICAgbWluOiAxLFxuICAgICAgfSk7XG5cbiAgICAgIGlmICghcmVzdWx0LmVudGl0aWVzIHx8IHJlc3VsdC5lbnRpdGllcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgY29uc29sZS5sb2coY2hhbGsueWVsbG93KFwi7Leo7IaM65CY7JeI7Iq164uI64ukLlwiKSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgZW50aXR5TmFtZXMgPSByZXN1bHQuZW50aXRpZXM7XG4gICAgfVxuXG4gICAgY29uc3Qgc3RyYXRlZ3k6IERhdGFFeHBsb3JlclN0cmF0ZWd5ID0gb3B0aW9ucy5zdHJhdGVneSA/PyBcInJlY2VudFwiO1xuICAgIGNvbnN0IGxpbWl0ID0gb3B0aW9ucy5saW1pdCA/IE51bWJlci5wYXJzZUludChTdHJpbmcob3B0aW9ucy5saW1pdCksIDEwKSA6IDEwO1xuXG4gICAgLy8gZml4dHVyZSBmZXRjaDog7ZiE7J6sIO2ZmOqyvSDrjbDsnbTthLDrpbwgZml4dHVyZSBEQuuhnCBpbXBvcnTtlanri4jri6RcbiAgICBjb25zdCBzb3VyY2VEYiA9IERCLmdldERCKFwiclwiKTtcbiAgICBjb25zdCBmaXh0dXJlRGIgPSBjcmVhdGVLbmV4SW5zdGFuY2UoU29uYW11LmRiQ29uZmlnLmZpeHR1cmUpO1xuICAgIGNvbnN0IGdlbmVyYXRvciA9IG5ldyBGaXh0dXJlR2VuZXJhdG9yKHNvdXJjZURiLCBmaXh0dXJlRGIsIFwiZml4dHVyZVwiLCBFbnRpdHlNYW5hZ2VyKTtcblxuICAgIGNvbnNvbGUubG9nKGNoYWxrLmN5YW4oYFxcbiR7ZW50aXR5TmFtZXMuam9pbihcIiwgXCIpfSBpbXBvcnQg7KSRLi4uYCkpO1xuXG4gICAgZm9yIChjb25zdCBlbnRpdHlOYW1lIG9mIGVudGl0eU5hbWVzKSB7XG4gICAgICBjb25zdCByZXN1bHRzID0gYXdhaXQgZ2VuZXJhdG9yLmltcG9ydEZyb21Tb3VyY2UoZW50aXR5TmFtZSwge1xuICAgICAgICBzdHJhdGVneSxcbiAgICAgICAgbGltaXQsXG4gICAgICAgIGluY2x1ZGVSZWxhdGlvbnM6IHRydWUsXG4gICAgICAgIG1heERlcHRoOiAyLFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnNvbGUubG9nKGNoYWxrLmdyZWVuKGDinIUgJHtlbnRpdHlOYW1lfTogJHtyZXN1bHRzLmxlbmd0aH3qsJwgaW1wb3J0IOyZhOujjGApKTtcbiAgICB9XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgY29uc29sZS5lcnJvcihcbiAgICAgIGNoYWxrLnJlZChcbiAgICAgICAgXCLsi6TsoJwgRELsl5DshJwg642w7J207YSw66W8IOqwgOyguOyYpOuKlCDspJEg7Jik66WY6rCAIOuwnOyDne2WiOyKteuLiOuLpC5cXG5cIiArXG4gICAgICAgICAgXCLsm5Dsnbg6IOyGjOyKpCBEQiDsl7DqsrAg7ISk7KCVKHNvbmFtdS5jb25maWcudHMp7J2064KYIEVudGl0eSDqtIDqs4Qg7KCV7J2Y66W8IO2ZleyduO2VtOyjvOyEuOyalC5cXG5cIiArXG4gICAgICAgICAgXCLsnpDshLjtlZwg64K07JqpOlwiLFxuICAgICAgKSxcbiAgICAgIGVycm9yLFxuICAgICk7XG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cbn1cblxuLyoqXG4gKiBmaXh0dXJlIGV4cGxvcmUg66qF66C57Ja0IC0gRELsnZgg7Iuk7KCcIOuNsOydtO2EsOulvCDsobDtmoztlZjsl6wg7ZmV7J247ZWp64uI64ukLlxuICog7KCA7J6l7ZWY7KeAIOyViuqzoCDsobDtmozrp4wg7ZWY66+A66GcIOuNsOydtO2EsOulvCDruaDrpbTqsowg7ZmV7J247ZWgIOuVjCDsnKDsmqntlanri4jri6QuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBmaXh0dXJlRXhwbG9yZUNvbW1hbmQob3B0aW9uczogRml4dHVyZUNvbW1hbmRPcHRpb25zKSB7XG4gIHRyeSB7XG4gICAgaWYgKCFFbnRpdHlNYW5hZ2VyLmlzQXV0b2xvYWRlZCkge1xuICAgICAgYXdhaXQgRW50aXR5TWFuYWdlci5hdXRvbG9hZCgpO1xuICAgIH1cblxuICAgIGxldCBlbnRpdHlOYW1lID0gb3B0aW9ucy5pbmNsdWRlO1xuXG4gICAgaWYgKCFlbnRpdHlOYW1lICYmIG9wdGlvbnMubm9uSW50ZXJhY3RpdmUgPT09IHRydWUpIHtcbiAgICAgIHRocm93IE9iamVjdC5hc3NpZ24obmV3IEVycm9yKFwiRml4dHVyZSBleHBsb3JlIHNlbGVjdG9yIGlzIHJlcXVpcmVkLlwiKSwge1xuICAgICAgICBjb2RlOiBcIk1JU1NJTkdfQVJHVU1FTlRcIixcbiAgICAgICAgZXhpdENvZGU6IDIsXG4gICAgICB9KTtcbiAgICB9XG4gICAgaWYgKCFlbnRpdHlOYW1lKSB7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBwcm9tcHRzKHtcbiAgICAgICAgdHlwZTogXCJzZWxlY3RcIixcbiAgICAgICAgbmFtZTogXCJlbnRpdHlcIixcbiAgICAgICAgbWVzc2FnZTogXCLtg5Dsg4ntlaAgRW50aXR5OlwiLFxuICAgICAgICBjaG9pY2VzOiBFbnRpdHlNYW5hZ2VyLmdldEFsbElkcygpLm1hcCgoaWQpID0+ICh7IHRpdGxlOiBpZCwgdmFsdWU6IGlkIH0pKSxcbiAgICAgIH0pO1xuXG4gICAgICBpZiAoIXJlc3VsdC5lbnRpdHkpIHtcbiAgICAgICAgY29uc29sZS5sb2coY2hhbGsueWVsbG93KFwi7Leo7IaM65CY7JeI7Iq164uI64ukLlwiKSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgZW50aXR5TmFtZSA9IHJlc3VsdC5lbnRpdHk7XG4gICAgfVxuXG4gICAgaWYgKCFlbnRpdHlOYW1lKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJFbnRpdHkgbmFtZSBpcyByZXF1aXJlZFwiKTtcbiAgICB9XG5cbiAgICBjb25zdCBzdHJhdGVneTogRGF0YUV4cGxvcmVyU3RyYXRlZ3kgPSBvcHRpb25zLnN0cmF0ZWd5ID8/IFwic2FtcGxlXCI7XG4gICAgY29uc3QgbGltaXQgPSBvcHRpb25zLmxpbWl0ID8gTnVtYmVyLnBhcnNlSW50KFN0cmluZyhvcHRpb25zLmxpbWl0KSwgMTApIDogMTA7XG5cbiAgICBjb25zdCBkYiA9IERCLmdldERCKFwiclwiKTtcbiAgICBjb25zdCBleHBsb3JlciA9IG5ldyBEYXRhRXhwbG9yZXIoZGIsIEVudGl0eU1hbmFnZXIpO1xuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCBleHBsb3Jlci5leHBsb3JlKGVudGl0eU5hbWUsIHsgc3RyYXRlZ3ksIGxpbWl0IH0pO1xuXG4gICAgY29uc29sZS5sb2coY2hhbGsuY3lhbihgXFxuJHtlbnRpdHlOYW1lfSAke2RhdGEubGVuZ3RofeqwnCDsobDtmowg7JmE66OMOmApKTtcbiAgICBjb25zb2xlLnRhYmxlKGRhdGEpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICBjaGFsay5yZWQoXG4gICAgICAgIFwi642w7J207YSwIOyhsO2ajCDspJEg7Jik66WY6rCAIOuwnOyDne2WiOyKteuLiOuLpC5cXG5cIiArXG4gICAgICAgICAgXCLsm5Dsnbg6IERCIOyXsOqysOydtOuCmCBFbnRpdHkg7KCV7J2Y66W8IO2ZleyduO2VtOyjvOyEuOyalC5cXG5cIiArXG4gICAgICAgICAgXCLsnpDshLjtlZwg64K07JqpOlwiLFxuICAgICAgKSxcbiAgICAgIGVycm9yLFxuICAgICk7XG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQVFzQyxZQUFBO0FBQ0gsUUFBQTtBQUNrQixVQUFBO0FBQ0csb0JBQUE7QUFDWCxTQUFBO0FBQ1UsbUJBQUE7QUFFUSx1QkFBQTtBQUNKLHFCQUFBO0FBQ2pCLGNBQUE7QUF5QjFDLE1BQU0sc0JBQXNCLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsWUFBWTtBQUVsRixTQUFTLFdBQ1AsWUFDQSxNQUNBLFFBQStCO0NBQUM7Q0FBVTtDQUFXO0FBQVMsR0FDL0M7Q0FDZixPQUFPLElBQUksU0FBUyxTQUFTLFdBQVc7RUFDdEMsTUFBTSxRQUFRLE1BQU0sWUFBWSxNQUFNLEVBQUUsTUFBTSxDQUFDO0VBQy9DLE1BQU0sS0FBSyxTQUFTLE1BQU07RUFDMUIsTUFBTSxLQUFLLFNBQVMsTUFBTSxXQUFXO0dBQ25DLElBQUksU0FBUyxHQUFHLFFBQVE7UUFFdEIsdUJBQ0UsSUFBSSxNQUFNLEdBQUcsV0FBVyxPQUFPLFFBQVEsVUFBVSxVQUFVLGFBQWEsQ0FDMUU7RUFDSixDQUFDO0NBQ0gsQ0FBQztBQUNIO0FBRUEsZUFBZSxlQUFlLE1BQWdCLFlBQW9CO0NBQ2hFLE1BQU0sU0FBUyxNQUFNLEtBQUssWUFBWSxHQUFHO0NBQ3pDLElBQUk7RUFDRixNQUFNLFdBQVcsYUFBYSxNQUFNO0dBQUM7R0FBVSxPQUFPO0dBQUk7RUFBUyxDQUFDO0NBQ3RFLFVBQVU7RUFDUixNQUFNLE9BQU8sTUFBTTtDQUNyQjtBQUNGO0FBRUEsZUFBZSxrQkFBa0IsTUFBZ0IsV0FBbUI7Q0FDbEUsTUFBTSxRQUFRLE1BQU0sS0FBSyxXQUFXLEdBQUc7Q0FDdkMsSUFBSTtFQUNGLE1BQU0sV0FBVyxTQUFTLE1B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
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
// src/bin/hmr-hook-register.ts
|
|
2
2
|
/**
|
|
3
3
|
* hmr-hook 초기화하는 모듈입니다.
|
|
4
4
|
*
|
|
@@ -16,7 +16,6 @@ if (process.env.HOT === "yes" && process.env.API_ROOT_PATH) {
|
|
|
16
16
|
});
|
|
17
17
|
console.log("🔥 HMR-hook initialized");
|
|
18
18
|
}
|
|
19
|
-
//#endregion
|
|
20
19
|
export {};
|
|
21
20
|
|
|
22
21
|
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG1yLWhvb2stcmVnaXN0ZXIuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Jpbi9obXItaG9vay1yZWdpc3Rlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIGhtci1ob29rIOy0iOq4sO2ZlO2VmOuKlCDrqqjrk4jsnoXri4jri6QuXG4gKlxuICog7J20IO2MjOydvOydgCAtLWltcG9ydCDtlIzrnpjqt7jroZwg7ZSE66Gc7IS47IqkIOyLnOyekSDsi5wg66Gc65Oc65CY7Ja07JW8IO2VqeuLiOuLpC5cbiAqXG4gKiDtmZjqsr3rs4DsiJg6XG4gKiAtIEFQSV9ST09UX1BBVEg6IOyCrOyaqeyekCDtlITroZzsoJ3tirjsnZggQVBJIOujqO2KuCDqsr3roZxcbiAqIC0gSE9UOiAneWVzJ+ydvCDrlYzrp4wgaG1yLWhvb2sg7Zmc7ISx7ZmUXG4gKi9cblxuaWYgKHByb2Nlc3MuZW52LkhPVCA9PT0gXCJ5ZXNcIiAmJiBwcm9jZXNzLmVudi5BUElfUk9PVF9QQVRIKSB7XG4gIGNvbnN0IHsgaG90IH0gPSBhd2FpdCBpbXBvcnQoXCJAc29uYW11LWtpdC9obXItaG9va1wiKTtcblxuICBhd2FpdCBob3QuaW5pdCh7XG4gICAgcm9vdERpcmVjdG9yeTogcHJvY2Vzcy5lbnYuQVBJX1JPT1RfUEFUSCwgLy8g7J20IOy5nOq1rOqwgCDtlITroZzsoJ3tirggQVBJIOqyveuhnOuhnCDsnpgg7ISk7KCV65CY7Ja07JW8IOyVhOuemCDrsJTsmrTrjZTrpqzqsIAg7J6R64+Z7ZWp64uI64ukLlxuICAgIGJvdW5kYXJpZXM6IFtgLi9zcmMvKiovKi50c2BdLCAvLyDtlITroZzsoJ3tirjsnZgg7J20IOy5nOq1rOuTpOydtCDrsJTsmrTrjZTrpqzqsIAg65Cp64uI64ukLlxuICB9KTtcblxuICBjb25zb2xlLmxvZyhcIvCflKUgSE1SLWhvb2sgaW5pdGlhbGl6ZWRcIik7XG59XG5cbi8vIG94bGludC1kaXNhYmxlLW5leHQtbGluZVxuZXhwb3J0IHt9O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBVUEsSUFBSSxRQUFRLElBQUksUUFBUSxTQUFTLFFBQVEsSUFBSSxlQUFlO0NBQzFELE1BQU0sRUFBRSxRQUFRLE1BQU0sT0FBTztDQUU3QixNQUFNLElBQUksS0FBSztFQUNiLGVBQWUsUUFBUSxJQUFJO0VBQzNCLFlBQVksQ0FBQyxlQUFlO0NBQzlCLENBQUM7Q0FFRCxRQUFRLElBQUkseUJBQXlCO0FBQ3ZDIn0=
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import { getSonamuEnvironment, init_env } from "../env.js";
|
|
2
|
-
|
|
2
|
+
// src/bin/migrate-targets.ts
|
|
3
3
|
init_env();
|
|
4
4
|
function getMigrateRunTargets() {
|
|
5
5
|
const environment = getSonamuEnvironment();
|
|
6
6
|
return environment === "test" ? ["test", "fixture"] : [environment];
|
|
7
7
|
}
|
|
8
|
-
//#endregion
|
|
9
8
|
export { getMigrateRunTargets };
|
|
10
9
|
|
|
11
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
10
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlncmF0ZS10YXJnZXRzLmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9iaW4vbWlncmF0ZS10YXJnZXRzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR5cGUgU29uYW11REJDb25maWcgfSBmcm9tIFwiLi4vZGF0YWJhc2UvZGJcIjtcbmltcG9ydCB7IGdldFNvbmFtdUVudmlyb25tZW50IH0gZnJvbSBcIi4uL2VudlwiO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TWlncmF0ZVJ1blRhcmdldHMoKTogKGtleW9mIFNvbmFtdURCQ29uZmlnKVtdIHtcbiAgY29uc3QgZW52aXJvbm1lbnQgPSBnZXRTb25hbXVFbnZpcm9ubWVudCgpO1xuICByZXR1cm4gZW52aXJvbm1lbnQgPT09IFwidGVzdFwiID8gW1widGVzdFwiLCBcImZpeHR1cmVcIl0gOiBbZW52aXJvbm1lbnRdO1xufVxuIl0sIm1hcHBpbmdzIjoiOztBQUM2QyxTQUFBO0FBRTdDLFNBQWdCLHVCQUFpRDtDQUMvRCxNQUFNLGNBQWMscUJBQXFCO0NBQ3pDLE9BQU8sZ0JBQWdCLFNBQVMsQ0FBQyxRQUFRLFNBQVMsSUFBSSxDQUFDLFdBQVc7QUFDcEUifQ==
|
package/dist/bin/test-command.js
CHANGED
|
@@ -3,7 +3,7 @@ import { findApiRootPath, init_utils } from "../utils/utils.js";
|
|
|
3
3
|
import { init_config, loadConfig } from "../api/config.js";
|
|
4
4
|
import chalk from "chalk";
|
|
5
5
|
import path from "node:path";
|
|
6
|
-
|
|
6
|
+
// src/bin/test-command.ts
|
|
7
7
|
init_config();
|
|
8
8
|
init_runtime_value();
|
|
9
9
|
init_utils();
|
|
@@ -179,7 +179,6 @@ async function testStatusCommand(config, fetchRequest) {
|
|
|
179
179
|
throw err;
|
|
180
180
|
}
|
|
181
181
|
}
|
|
182
|
-
//#endregion
|
|
183
182
|
export { testCommand, testCommandWithInput };
|
|
184
183
|
|
|
185
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC1jb21tYW5kLmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9iaW4vdGVzdC1jb21tYW5kLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBwYXRoIGZyb20gXCJub2RlOnBhdGhcIjtcblxuaW1wb3J0IGNoYWxrIGZyb20gXCJjaGFsa1wiO1xuXG5pbXBvcnQgeyBsb2FkQ29uZmlnIH0gZnJvbSBcIi4uL2FwaS9jb25maWdcIjtcbmltcG9ydCB7IHR5cGUgUnVuUmVzdWx0LCB0eXBlIFRlc3RDYXNlUmVzdWx0IH0gZnJvbSBcIi4uL3Rlc3RpbmdcIjtcbmltcG9ydCB7IGlzU3RyaW5nVmFsdWUgfSBmcm9tIFwiLi4vdXRpbHMvcnVudGltZS12YWx1ZVwiO1xuaW1wb3J0IHsgZmluZEFwaVJvb3RQYXRoIH0gZnJvbSBcIi4uL3V0aWxzL3V0aWxzXCI7XG5cbmludGVyZmFjZSBUZXN0U2VydmVyTG9jYXRpb24ge1xuICBob3N0OiBzdHJpbmc7XG4gIHBvcnQ6IG51bWJlcjtcbiAgcm91dGVQcmVmaXg6IHN0cmluZztcbiAgYmFzZVVybDogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgVGVzdFJ1blBheWxvYWQge1xuICBmaWxlcz86IHN0cmluZ1tdO1xuICBwYXR0ZXJuPzogc3RyaW5nO1xufVxuXG50eXBlIFRlc3RDb21tYW5kQ29uZmlnID0ge1xuICBzZXJ2ZXI6IHtcbiAgICBsaXN0ZW4/OiB7XG4gICAgICBob3N0Pzogc3RyaW5nO1xuICAgICAgcG9ydD86IG51bWJlcjtcbiAgICB9O1xuICB9O1xuICB0ZXN0Pzoge1xuICAgIGRldlJ1bm5lcj86IHtcbiAgICAgIGVuYWJsZWQ/OiBib29sZWFuO1xuICAgICAgcm91dGVQcmVmaXg/OiBzdHJpbmc7XG4gICAgfTtcbiAgfTtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGVzdENvbW1hbmREZXBlbmRlbmNpZXMge1xuICBmZXRjaDogdHlwZW9mIGdsb2JhbFRoaXMuZmV0Y2g7XG4gIGZpbmRBcGlSb290UGF0aDogdHlwZW9mIGZpbmRBcGlSb290UGF0aDtcbiAgbG9hZENvbmZpZzogKGFwaVJvb3RQYXRoOiBzdHJpbmcpID0+IFByb21pc2U8VGVzdENvbW1hbmRDb25maWc+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExlZ2FjeVRlc3RDb21tYW5kSW5wdXQge1xuICBmaWxlcz86IHJlYWRvbmx5IHN0cmluZ1tdO1xuICBwYXR0ZXJuPzogc3RyaW5nO1xuICB0cmFjZXM/OiBib29sZWFuO1xuICBzdGF0dXM/OiBib29sZWFuO1xufVxuXG5jb25zdCB0ZXN0Q29tbWFuZERlcGVuZGVuY2llczogVGVzdENvbW1hbmREZXBlbmRlbmNpZXMgPSB7XG4gIGZldGNoOiBnbG9iYWxUaGlzLmZldGNoLFxuICBmaW5kQXBpUm9vdFBhdGgsXG4gIGxvYWRDb25maWcsXG59O1xuXG5hc3luYyBmdW5jdGlvbiBsb2FkRGV2U2VydmVyQ29uZmlnKFxuICBkZXBlbmRlbmNpZXM6IFRlc3RDb21tYW5kRGVwZW5kZW5jaWVzLFxuKTogUHJvbWlzZTxUZXN0Q29tbWFuZENvbmZpZz4ge1xuICBjb25zdCBwcmV2Vml0ZXN0ID0gcHJvY2Vzcy5lbnYuVklURVNUO1xuICBwcm9jZXNzLmVudi5WSVRFU1QgPSBcInRydWVcIjtcbiAgdHJ5IHtcbiAgICBjb25zdCBhcGlSb290UGF0aCA9IGRlcGVuZGVuY2llcy5maW5kQXBpUm9vdFBhdGgoKTtcbiAgICByZXR1cm4gYXdhaXQgZGVwZW5kZW5jaWVzLmxvYWRDb25maWcoYXBpUm9vdFBhdGgpO1xuICB9IGZpbmFsbHkge1xuICAgIGlmIChwcmV2Vml0ZXN0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGRlbGV0ZSBwcm9jZXNzLmVudi5WSVRFU1Q7XG4gICAgfSBlbHNlIHtcbiAgICAgIHByb2Nlc3MuZW52LlZJVEVTVCA9IHByZXZWaXRlc3Q7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHJlc29sdmVUZXN0QmFzZVVybChjb25maWc6IFRlc3RDb21tYW5kQ29uZmlnKTogVGVzdFNlcnZlckxvY2F0aW9uIHtcbiAgY29uc3QgcG9ydCA9IGNvbmZpZy5zZXJ2ZXIubGlzdGVuPy5wb3J0ID8/IDMwMDA7XG4gIGNvbnN0IGhvc3QgPSBjb25maWcuc2VydmVyLmxpc3Rlbj8uaG9zdCA/PyBcImxvY2FsaG9zdFwiO1xuICBjb25zdCByb3V0ZVByZWZpeCA9IGNvbmZpZy50ZXN0Py5kZXZSdW5uZXI/LnJvdXRlUHJlZml4ID8/IFwiL19fdGVzdF9fXCI7XG4gIHJldHVybiB7IGhvc3QsIHBvcnQsIHJvdXRlUHJlZml4LCBiYXNlVXJsOiBgaHR0cDovLyR7aG9zdH06JHtwb3J0fSR7cm91dGVQcmVmaXh9YCB9O1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdGVzdENvbW1hbmQoXG4gIGRlcGVuZGVuY2llczogVGVzdENvbW1hbmREZXBlbmRlbmNpZXMgPSB0ZXN0Q29tbWFuZERlcGVuZGVuY2llcyxcbik6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBhcmdzID0gcHJvY2Vzcy5hcmd2LnNsaWNlKDMpO1xuICBjb25zdCBmaWxlczogc3RyaW5nW10gPSBbXTtcbiAgbGV0IHBhdHRlcm46IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgbGV0IHNob3dUcmFjZXMgPSBmYWxzZTtcbiAgbGV0IHNob3dTdGF0dXMgPSBmYWxzZTtcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IGFyZ3MubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCBhcmcgPSBhcmdzW2ldO1xuICAgIGlmIChhcmcgPT09IFwiLS1wYXR0ZXJuXCIgfHwgYXJnID09PSBcIi1wXCIpIHtcbiAgICAgIHBhdHRlcm4gPSBhcmdzWysraV07XG4gICAgfSBlbHNlIGlmIChhcmcgPT09IFwiLS10cmFjZXNcIiB8fCBhcmcgPT09IFwiLXRcIikge1xuICAgICAgc2hvd1RyYWNlcyA9IHRydWU7XG4gICAgfSBlbHNlIGlmIChhcmcgPT09IFwiLS1zdGF0dXNcIiB8fCBhcmcgPT09IFwiLXNcIikge1xuICAgICAgc2hvd1N0YXR1cyA9IHRydWU7XG4gICAgfSBlbHNlIGlmICghYXJnLnN0YXJ0c1dpdGgoXCItXCIpKSB7XG4gICAgICBmaWxlcy5wdXNoKGFyZyk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJ1blRlc3RDb21tYW5kKHsgZmlsZXMsIHBhdHRlcm4sIHRyYWNlczogc2hvd1RyYWNlcywgc3RhdHVzOiBzaG93U3RhdHVzIH0sIGRlcGVuZGVuY2llcyk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB0ZXN0Q29tbWFuZFdpdGhJbnB1dChcbiAgaW5wdXQ6IExlZ2FjeVRlc3RDb21tYW5kSW5wdXQsXG4gIGRlcGVuZGVuY2llczogVGVzdENvbW1hbmREZXBlbmRlbmNpZXMgPSB0ZXN0Q29tbWFuZERlcGVuZGVuY2llcyxcbik6IFByb21pc2U8dm9pZD4ge1xuICByZXR1cm4gcnVuVGVzdENvbW1hbmQoaW5wdXQsIGRlcGVuZGVuY2llcyk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJ1blRlc3RDb21tYW5kKFxuICBpbnB1dDogTGVnYWN5VGVzdENvbW1hbmRJbnB1dCxcbiAgZGVwZW5kZW5jaWVzOiBUZXN0Q29tbWFuZERlcGVuZGVuY2llcyxcbik6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBjb25maWcgPSBhd2FpdCBsb2FkRGV2U2VydmVyQ29uZmlnKGRlcGVuZGVuY2llcyk7XG4gIGNvbnN0IGZpbGVzID0gWy4uLihpbnB1dC5maWxlcyA/PyBbXSldO1xuICBjb25zdCBwYXR0ZXJuID0gaW5wdXQucGF0dGVybjtcbiAgY29uc3Qgc2hvd1RyYWNlcyA9IGlucHV0LnRyYWNlcyA9PT0gdHJ1ZTtcbiAgY29uc3Qgc2hvd1N0YXR1cyA9IGlucHV0LnN0YXR1cyA9PT0gdHJ1ZTtcblxuICBpZiAoc2hvd1N0YXR1cykge1xuICAgIHJldHVybiB0ZXN0U3RhdHVzQ29tbWFuZChjb25maWcsIGRlcGVuZGVuY2llcy5mZXRjaCk7XG4gIH1cblxuICBpZiAoIWNvbmZpZy50ZXN0Py5kZXZSdW5uZXI/LmVuYWJsZWQpIHtcbiAgICBjb25zb2xlLmVycm9yKFxuICAgICAgY2hhbGsucmVkKFxuICAgICAgICBcImRldlJ1bm5lcuqwgCDtmZzshLHtmZTrkJjsp4Ag7JWK7JWY7Iq164uI64ukLiBzb25hbXUuY29uZmlnLnRz7JeQ7IScIHRlc3QuZGV2UnVubmVyLmVuYWJsZWQ6IHRydWUg7ISk7KCV7J20IO2VhOyalO2VqeuLiOuLpFwiLFxuICAgICAgKSxcbiAgICApO1xuICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgfVxuXG4gIGNvbnN0IHsgYmFzZVVybCB9ID0gcmVzb2x2ZVRlc3RCYXNlVXJsKGNvbmZpZyk7XG4gIGNvbnN0IHVybCA9IGAke2Jhc2VVcmx9L3J1bmA7XG5cbiAgY29uc3QgcGF5bG9hZDogVGVzdFJ1blBheWxvYWQgPSB7fTtcbiAgaWYgKGZpbGVzLmxlbmd0aCA+IDApIHtcbiAgICBwYXlsb2FkLmZpbGVzID0gZmlsZXM7XG4gIH1cbiAgaWYgKHBhdHRlcm4pIHtcbiAgICBwYXlsb2FkLnBhdHRlcm4gPSBwYXR0ZXJuO1xuICB9XG5cbiAgdHJ5IHtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGRlcGVuZGVuY2llcy5mZXRjaCh1cmwsIHtcbiAgICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgICBoZWFkZXJzOiB7IFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiIH0sXG4gICAgICBib2R5OiBKU09OLnN0cmluZ2lmeShwYXlsb2FkKSxcbiAgICB9KTtcblxuICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDQwNCkge1xuICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgY2hhbGsucmVkKFxuICAgICAgICAgIFwiZGV2UnVubmVy6rCAIO2ZnOyEse2ZlOuQmOyngCDslYrslZjsirXri4jri6QuIHNvbmFtdS5jb25maWcudHPsl5DshJwgdGVzdC5kZXZSdW5uZXIuZW5hYmxlZDogdHJ1ZSDshKTsoJXsnbQg7ZWE7JqU7ZWp64uI64ukXCIsXG4gICAgICAgICksXG4gICAgICApO1xuICAgICAgcHJvY2Vzcy5leGl0KDEpO1xuICAgIH1cblxuICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDUwMCkge1xuICAgICAgY29uc3QgZXJyb3JCb2R5ID1cbiAgICAgICAgLyogU0FGRVRZOiBDTEkg7YyM7ISc7JmAIOu5jOuTnCDrj4Tqtawg7J6F66ClIOqzhOyVveydtCDsnbQg6rCS7J2YIO2DgOyeheydhCDrs7TsnqXtlZzri6QuICovIChhd2FpdCByZXNwb25zZS5qc29uKCkpIGFzIHtcbiAgICAgICAgICBlcnJvcj86IHN0cmluZztcbiAgICAgICAgfTtcbiAgICAgIGNvbnNvbGUuZXJyb3IoY2hhbGsucmVkKFwiVml0ZXN0IOyduOyKpO2EtOyKpOqwgCDslYTsp4Eg7KSA67mE65CY7KeAIOyViuyVmOyKteuLiOuLpFwiKSk7XG4gICAgICBpZiAoZXJyb3JCb2R5LmVycm9yKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoY2hhbGsucmVkKGVycm9yQm9keS5lcnJvcikpO1xuICAgICAgfVxuICAgICAgcHJvY2Vzcy5leGl0KDEpO1xuICAgIH1cblxuICAgIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoY2hhbGsucmVkKGDsmIjsg4HtlZjsp4Ag66q77ZWcIOydkeuLtTogJHtyZXNwb25zZS5zdGF0dXN9YCkpO1xuICAgICAgcHJvY2Vzcy5leGl0KDEpO1xuICAgIH1cblxuICAgIGNvbnN0IHJlc3VsdCA9XG4gICAgICAvKiBTQUZFVFk6IENMSSDtjIzshJzsmYAg67mM65OcIOuPhOq1rCDsnoXroKUg6rOE7JW97J20IOydtCDqsJLsnZgg7YOA7J6F7J2EIOuztOyepe2VnOuLpC4gKi8gKGF3YWl0IHJlc3BvbnNlLmpzb24oKSkgYXMgUnVuUmVzdWx0O1xuXG4gICAgY29uc3QgeyBwYXNzZWQsIGZhaWxlZDogZmFpbGVkQ291bnQsIHRvdGFsLCBkdXJhdGlvbk1zIH0gPSByZXN1bHQuc3VtbWFyeTtcbiAgICBjb25zdCBwYXNzZWRTdHIgPSBjaGFsay5ncmVlbihgJHtwYXNzZWR9IHBhc3NlZGApO1xuICAgIGNvbnN0IGZhaWxlZFN0ciA9XG4gICAgICBmYWlsZWRDb3VudCA+IDAgPyBjaGFsay5yZWQoYCR7ZmFpbGVkQ291bnR9IGZhaWxlZGApIDogYCR7ZmFpbGVkQ291bnR9IGZhaWxlZGA7XG4gICAgY29uc29sZS5sb2coYFxcblRlc3RzOiAke3Bhc3NlZFN0cn0sICR7ZmFpbGVkU3RyfSwgJHt0b3RhbH0gdG90YWxgKTtcbiAgICBjb25zb2xlLmxvZyhjaGFsay5kaW0oYER1cmF0aW9uOiAke2R1cmF0aW9uTXN9bXNgKSk7XG5cbiAgICBjb25zdCBmYWlsZWRUZXN0cyA9IGNvbGxlY3RGYWlsZWRGcm9tUmVzdWx0cyhyZXN1bHQucmVzdWx0cyk7XG4gICAgaWYgKGZhaWxlZFRlc3RzLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnNvbGUubG9nKGNoYWxrLnJlZC5ib2xkKFwiXFxuRmFpbGVkIHRlc3RzOlwiKSk7XG4gICAgICBmb3IgKGNvbnN0IGYgb2YgZmFpbGVkVGVzdHMpIHtcbiAgICAgICAgY29uc29sZS5sb2coYCAgJHtjaGFsay5yZWQoXCJ4XCIpfSAke2YuZnVsbE5hbWV9ICR7Y2hhbGsuZGltKGAoJHtmLmZpbGV9KWApfWApO1xuICAgICAgICBpZiAoZi5lcnJvcikge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGAgICAgJHtjaGFsay5yZWQoZi5lcnJvci5tZXNzYWdlKX1gKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChzaG93VHJhY2VzKSB7XG4gICAgICBjb25zdCB0ZXN0c1dpdGhUcmFjZXMgPSBjb2xsZWN0VHJhY2VzRnJvbVJlc3VsdHMocmVzdWx0LnJlc3VsdHMpO1xuICAgICAgaWYgKHRlc3RzV2l0aFRyYWNlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGNoYWxrLmN5YW4uYm9sZChcIlxcblRyYWNlczpcIikpO1xuICAgICAgICBmb3IgKGNvbnN0IHsgdGVzdE5hbWUsIGZpbGUsIHRyYWNlcyB9IG9mIHRlc3RzV2l0aFRyYWNlcykge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGBcXG4gICR7Y2hhbGsuYm9sZCh0ZXN0TmFtZSl9YCk7XG4gICAgICAgICAgY29uc29sZS5sb2coYCAgJHtjaGFsay5kaW0ocGF0aC5iYXNlbmFtZShmaWxlKSl9YCk7XG4gICAgICAgICAgZm9yIChjb25zdCB0cmFjZSBvZiB0cmFjZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IGxvYyA9IGAke3BhdGguYmFzZW5hbWUodHJhY2UuZmlsZVBhdGgpfToke3RyYWNlLmxpbmVOdW1iZXJ9YDtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlU3RyID0gaXNTdHJpbmdWYWx1ZSh0cmFjZS52YWx1ZSlcbiAgICAgICAgICAgICAgPyB0cmFjZS52YWx1ZVxuICAgICAgICAgICAgICA6IChKU09OLnN0cmluZ2lmeSh0cmFjZS52YWx1ZSwgbnVsbCwgMikgPz8gXCJ1bmRlZmluZWRcIik7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgXFxuICAgICR7Y2hhbGsueWVsbG93KGBbJHt0cmFjZS5rZXl9XWApfSAke2NoYWxrLmRpbShsb2MpfWApO1xuICAgICAgICAgICAgY29uc3QgaW5kZW50ZWQgPSB2YWx1ZVN0ci5zcGxpdChcIlxcblwiKS5qb2luKFwiXFxuICAgIFwiKTtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGAgICAgJHtpbmRlbnRlZH1gKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIXJlc3VsdC5vaykge1xuICAgICAgcHJvY2Vzcy5leGl0KDEpO1xuICAgIH1cbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgaWYgKGVyciBpbnN0YW5jZW9mIFR5cGVFcnJvciAmJiBlcnIuY2F1c2UpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgIGNoYWxrLnJlZChcImRldiDshJzrsoTsl5Ag7Jew6rKw7ZWgIOyImCDsl4bsirXri4jri6QuIHNvbmFtdSBkZXbqsIAg7Iuk7ZaJIOykkeyduOyngCDtmZXsnbjtlZjshLjsmpRcIiksXG4gICAgICApO1xuICAgICAgcHJvY2Vzcy5leGl0KDEpO1xuICAgIH1cbiAgICB0aHJvdyBlcnI7XG4gIH1cbn1cblxuZnVuY3Rpb24gY29sbGVjdEZhaWxlZEZyb21SZXN1bHRzKG5vZGVzOiBUZXN0Q2FzZVJlc3VsdFtdKTogVGVzdENhc2VSZXN1bHRbXSB7XG4gIGNvbnN0IHJlc3VsdDogVGVzdENhc2VSZXN1bHRbXSA9IFtdO1xuICBmb3IgKGNvbnN0IG5vZGUgb2Ygbm9kZXMpIHtcbiAgICBpZiAobm9kZS5raW5kID09PSBcInRlc3RcIiAmJiBub2RlLnN0YXRlID09PSBcImZhaWxlZFwiKSB7XG4gICAgICByZXN1bHQucHVzaChub2RlKTtcbiAgICB9XG4gICAgaWYgKG5vZGUuY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xuICAgICAgcmVzdWx0LnB1c2goLi4uY29sbGVjdEZhaWxlZEZyb21SZXN1bHRzKG5vZGUuY2hpbGRyZW4pKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZnVuY3Rpb24gY29sbGVjdFRyYWNlc0Zyb21SZXN1bHRzKFxuICBub2RlczogVGVzdENhc2VSZXN1bHRbXSxcbik6IHsgdGVzdE5hbWU6IHN0cmluZzsgZmlsZTogc3RyaW5nOyB0cmFjZXM6IFRlc3RDYXNlUmVzdWx0W1widHJhY2VzXCJdIH1bXSB7XG4gIGNvbnN0IHJlc3VsdDogeyB0ZXN0TmFtZTogc3RyaW5nOyBmaWxlOiBzdHJpbmc7IHRyYWNlczogVGVzdENhc2VSZXN1bHRbXCJ0cmFjZXNcIl0gfVtdID0gW107XG4gIGZvciAoY29uc3Qgbm9kZSBvZiBub2Rlcykge1xuICAgIGlmIChub2RlLmtpbmQgPT09IFwidGVzdFwiICYmIG5vZGUudHJhY2VzLmxlbmd0aCA+IDApIHtcbiAgICAgIHJlc3VsdC5wdXNoKHsgdGVzdE5hbWU6IG5vZGUuZnVsbE5hbWUsIGZpbGU6IG5vZGUuZmlsZSwgdHJhY2VzOiBub2RlLnRyYWNlcyB9KTtcbiAgICB9XG4gICAgaWYgKG5vZGUuY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xuICAgICAgcmVzdWx0LnB1c2goLi4uY29sbGVjdFRyYWNlc0Zyb21SZXN1bHRzKG5vZGUuY2hpbGRyZW4pKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuYXN5bmMgZnVuY3Rpb24gdGVzdFN0YXR1c0NvbW1hbmQoXG4gIGNvbmZpZzogVGVzdENvbW1hbmRDb25maWcsXG4gIGZldGNoUmVxdWVzdDogdHlwZW9mIGdsb2JhbFRoaXMuZmV0Y2gsXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgaWYgKCFjb25maWcudGVzdD8uZGV2UnVubmVyPy5lbmFibGVkKSB7XG4gICAgY29uc29sZS5lcnJvcihcbiAgICAgIGNoYWxrLnJlZChcbiAgICAgICAgXCJkZXZSdW5uZXLqsIAg7Zmc7ISx7ZmU65CY7KeAIOyViuyVmOyKteuLiOuLpC4gc29uYW11LmNvbmZpZy50c+yXkOyEnCB0ZXN0LmRldlJ1bm5lci5lbmFibGVkOiB0cnVlIOyEpOygleydtCDtlYTsmpTtlanri4jri6RcIixcbiAgICAgICksXG4gICAgKTtcbiAgICBwcm9jZXNzLmV4aXQoMSk7XG4gIH1cblxuICBjb25zdCB7IGJhc2VVcmwgfSA9IHJlc29sdmVUZXN0QmFzZVVybChjb25maWcpO1xuICBjb25zdCB1cmwgPSBgJHtiYXNlVXJsfS9zdGF0dXNgO1xuXG4gIHRyeSB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaFJlcXVlc3QodXJsKTtcblxuICAgIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoY2hhbGsucmVkKGDsmIjsg4HtlZjsp4Ag66q77ZWcIOydkeuLtTogJHtyZXNwb25zZS5zdGF0dXN9YCkpO1xuICAgICAgcHJvY2Vzcy5leGl0KDEpO1xuICAgIH1cblxuICAgIGNvbnN0IHN0YXR1cyA9XG4gICAgICAvKiBTQUZFVFk6IENMSSDtjIzshJzsmYAg67mM65OcIOuPhOq1rCDsnoXroKUg6rOE7JW97J20IOydtCDqsJLsnZgg7YOA7J6F7J2EIOuztOyepe2VnOuLpC4gKi8gKGF3YWl0IHJlc3BvbnNlLmpzb24oKSkgYXMge1xuICAgICAgICByZWFkeTogYm9vbGVhbjtcbiAgICAgICAgcnVubmluZzogYm9vbGVhbjtcbiAgICAgICAgbGFzdFJ1bkF0OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICBzc2VBdmFpbGFibGU6IGJvb2xlYW47XG4gICAgICB9O1xuXG4gICAgY29uc29sZS5sb2coY2hhbGsuYm9sZChcIkRldlJ1bm5lciDsg4Htg5w6XCIpKTtcbiAgICBjb25zb2xlLmxvZyhgICByZWFkeTogICAgICAgICR7c3RhdHVzLnJlYWR5ID8gY2hhbGsuZ3JlZW4oXCJ0cnVlXCIpIDogY2hhbGsucmVkKFwiZmFsc2VcIil9YCk7XG4gICAgY29uc29sZS5sb2coYCAgcnVubmluZzogICAgICAke3N0YXR1cy5ydW5uaW5nID8gY2hhbGsueWVsbG93KFwidHJ1ZVwiKSA6IFwiZmFsc2VcIn1gKTtcbiAgICBjb25zb2xlLmxvZyhgICBsYXN0UnVuQXQ6ICAgICR7c3RhdHVzLmxhc3RSdW5BdCA/PyBjaGFsay5kaW0oXCLsl4bsnYxcIil9YCk7XG4gICAgY29uc29sZS5sb2coYCAgc3NlQXZhaWxhYmxlOiAke3N0YXR1cy5zc2VBdmFpbGFibGUgPyBjaGFsay5ncmVlbihcInRydWVcIikgOiBcImZhbHNlXCJ9YCk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGlmIChlcnIgaW5zdGFuY2VvZiBUeXBlRXJyb3IgJiYgZXJyLmNhdXNlKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICBjaGFsay5yZWQoXCJkZXYg7ISc67KE7JeQIOyXsOqysO2VoCDsiJgg7JeG7Iq164uI64ukLiBzb25hbXUgZGV26rCAIOyLpO2WiSDspJHsnbjsp4Ag7ZmV7J247ZWY7IS47JqUXCIpLFxuICAgICAgKTtcbiAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICB9XG4gICAgdGhyb3cg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
|
|
184
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC1jb21tYW5kLmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9iaW4vdGVzdC1jb21tYW5kLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBwYXRoIGZyb20gXCJub2RlOnBhdGhcIjtcblxuaW1wb3J0IGNoYWxrIGZyb20gXCJjaGFsa1wiO1xuXG5pbXBvcnQgeyBsb2FkQ29uZmlnIH0gZnJvbSBcIi4uL2FwaS9jb25maWdcIjtcbmltcG9ydCB7IHR5cGUgUnVuUmVzdWx0LCB0eXBlIFRlc3RDYXNlUmVzdWx0IH0gZnJvbSBcIi4uL3Rlc3RpbmdcIjtcbmltcG9ydCB7IGlzU3RyaW5nVmFsdWUgfSBmcm9tIFwiLi4vdXRpbHMvcnVudGltZS12YWx1ZVwiO1xuaW1wb3J0IHsgZmluZEFwaVJvb3RQYXRoIH0gZnJvbSBcIi4uL3V0aWxzL3V0aWxzXCI7XG5cbmludGVyZmFjZSBUZXN0U2VydmVyTG9jYXRpb24ge1xuICBob3N0OiBzdHJpbmc7XG4gIHBvcnQ6IG51bWJlcjtcbiAgcm91dGVQcmVmaXg6IHN0cmluZztcbiAgYmFzZVVybDogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgVGVzdFJ1blBheWxvYWQge1xuICBmaWxlcz86IHN0cmluZ1tdO1xuICBwYXR0ZXJuPzogc3RyaW5nO1xufVxuXG50eXBlIFRlc3RDb21tYW5kQ29uZmlnID0ge1xuICBzZXJ2ZXI6IHtcbiAgICBsaXN0ZW4/OiB7XG4gICAgICBob3N0Pzogc3RyaW5nO1xuICAgICAgcG9ydD86IG51bWJlcjtcbiAgICB9O1xuICB9O1xuICB0ZXN0Pzoge1xuICAgIGRldlJ1bm5lcj86IHtcbiAgICAgIGVuYWJsZWQ/OiBib29sZWFuO1xuICAgICAgcm91dGVQcmVmaXg/OiBzdHJpbmc7XG4gICAgfTtcbiAgfTtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGVzdENvbW1hbmREZXBlbmRlbmNpZXMge1xuICBmZXRjaDogdHlwZW9mIGdsb2JhbFRoaXMuZmV0Y2g7XG4gIGZpbmRBcGlSb290UGF0aDogdHlwZW9mIGZpbmRBcGlSb290UGF0aDtcbiAgbG9hZENvbmZpZzogKGFwaVJvb3RQYXRoOiBzdHJpbmcpID0+IFByb21pc2U8VGVzdENvbW1hbmRDb25maWc+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExlZ2FjeVRlc3RDb21tYW5kSW5wdXQge1xuICBmaWxlcz86IHJlYWRvbmx5IHN0cmluZ1tdO1xuICBwYXR0ZXJuPzogc3RyaW5nO1xuICB0cmFjZXM/OiBib29sZWFuO1xuICBzdGF0dXM/OiBib29sZWFuO1xufVxuXG5jb25zdCB0ZXN0Q29tbWFuZERlcGVuZGVuY2llczogVGVzdENvbW1hbmREZXBlbmRlbmNpZXMgPSB7XG4gIGZldGNoOiBnbG9iYWxUaGlzLmZldGNoLFxuICBmaW5kQXBpUm9vdFBhdGgsXG4gIGxvYWRDb25maWcsXG59O1xuXG5hc3luYyBmdW5jdGlvbiBsb2FkRGV2U2VydmVyQ29uZmlnKFxuICBkZXBlbmRlbmNpZXM6IFRlc3RDb21tYW5kRGVwZW5kZW5jaWVzLFxuKTogUHJvbWlzZTxUZXN0Q29tbWFuZENvbmZpZz4ge1xuICBjb25zdCBwcmV2Vml0ZXN0ID0gcHJvY2Vzcy5lbnYuVklURVNUO1xuICBwcm9jZXNzLmVudi5WSVRFU1QgPSBcInRydWVcIjtcbiAgdHJ5IHtcbiAgICBjb25zdCBhcGlSb290UGF0aCA9IGRlcGVuZGVuY2llcy5maW5kQXBpUm9vdFBhdGgoKTtcbiAgICByZXR1cm4gYXdhaXQgZGVwZW5kZW5jaWVzLmxvYWRDb25maWcoYXBpUm9vdFBhdGgpO1xuICB9IGZpbmFsbHkge1xuICAgIGlmIChwcmV2Vml0ZXN0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGRlbGV0ZSBwcm9jZXNzLmVudi5WSVRFU1Q7XG4gICAgfSBlbHNlIHtcbiAgICAgIHByb2Nlc3MuZW52LlZJVEVTVCA9IHByZXZWaXRlc3Q7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHJlc29sdmVUZXN0QmFzZVVybChjb25maWc6IFRlc3RDb21tYW5kQ29uZmlnKTogVGVzdFNlcnZlckxvY2F0aW9uIHtcbiAgY29uc3QgcG9ydCA9IGNvbmZpZy5zZXJ2ZXIubGlzdGVuPy5wb3J0ID8/IDMwMDA7XG4gIGNvbnN0IGhvc3QgPSBjb25maWcuc2VydmVyLmxpc3Rlbj8uaG9zdCA/PyBcImxvY2FsaG9zdFwiO1xuICBjb25zdCByb3V0ZVByZWZpeCA9IGNvbmZpZy50ZXN0Py5kZXZSdW5uZXI/LnJvdXRlUHJlZml4ID8/IFwiL19fdGVzdF9fXCI7XG4gIHJldHVybiB7IGhvc3QsIHBvcnQsIHJvdXRlUHJlZml4LCBiYXNlVXJsOiBgaHR0cDovLyR7aG9zdH06JHtwb3J0fSR7cm91dGVQcmVmaXh9YCB9O1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdGVzdENvbW1hbmQoXG4gIGRlcGVuZGVuY2llczogVGVzdENvbW1hbmREZXBlbmRlbmNpZXMgPSB0ZXN0Q29tbWFuZERlcGVuZGVuY2llcyxcbik6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBhcmdzID0gcHJvY2Vzcy5hcmd2LnNsaWNlKDMpO1xuICBjb25zdCBmaWxlczogc3RyaW5nW10gPSBbXTtcbiAgbGV0IHBhdHRlcm46IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgbGV0IHNob3dUcmFjZXMgPSBmYWxzZTtcbiAgbGV0IHNob3dTdGF0dXMgPSBmYWxzZTtcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IGFyZ3MubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCBhcmcgPSBhcmdzW2ldO1xuICAgIGlmIChhcmcgPT09IFwiLS1wYXR0ZXJuXCIgfHwgYXJnID09PSBcIi1wXCIpIHtcbiAgICAgIHBhdHRlcm4gPSBhcmdzWysraV07XG4gICAgfSBlbHNlIGlmIChhcmcgPT09IFwiLS10cmFjZXNcIiB8fCBhcmcgPT09IFwiLXRcIikge1xuICAgICAgc2hvd1RyYWNlcyA9IHRydWU7XG4gICAgfSBlbHNlIGlmIChhcmcgPT09IFwiLS1zdGF0dXNcIiB8fCBhcmcgPT09IFwiLXNcIikge1xuICAgICAgc2hvd1N0YXR1cyA9IHRydWU7XG4gICAgfSBlbHNlIGlmICghYXJnLnN0YXJ0c1dpdGgoXCItXCIpKSB7XG4gICAgICBmaWxlcy5wdXNoKGFyZyk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJ1blRlc3RDb21tYW5kKHsgZmlsZXMsIHBhdHRlcm4sIHRyYWNlczogc2hvd1RyYWNlcywgc3RhdHVzOiBzaG93U3RhdHVzIH0sIGRlcGVuZGVuY2llcyk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB0ZXN0Q29tbWFuZFdpdGhJbnB1dChcbiAgaW5wdXQ6IExlZ2FjeVRlc3RDb21tYW5kSW5wdXQsXG4gIGRlcGVuZGVuY2llczogVGVzdENvbW1hbmREZXBlbmRlbmNpZXMgPSB0ZXN0Q29tbWFuZERlcGVuZGVuY2llcyxcbik6IFByb21pc2U8dm9pZD4ge1xuICByZXR1cm4gcnVuVGVzdENvbW1hbmQoaW5wdXQsIGRlcGVuZGVuY2llcyk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJ1blRlc3RDb21tYW5kKFxuICBpbnB1dDogTGVnYWN5VGVzdENvbW1hbmRJbnB1dCxcbiAgZGVwZW5kZW5jaWVzOiBUZXN0Q29tbWFuZERlcGVuZGVuY2llcyxcbik6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBjb25maWcgPSBhd2FpdCBsb2FkRGV2U2VydmVyQ29uZmlnKGRlcGVuZGVuY2llcyk7XG4gIGNvbnN0IGZpbGVzID0gWy4uLihpbnB1dC5maWxlcyA/PyBbXSldO1xuICBjb25zdCBwYXR0ZXJuID0gaW5wdXQucGF0dGVybjtcbiAgY29uc3Qgc2hvd1RyYWNlcyA9IGlucHV0LnRyYWNlcyA9PT0gdHJ1ZTtcbiAgY29uc3Qgc2hvd1N0YXR1cyA9IGlucHV0LnN0YXR1cyA9PT0gdHJ1ZTtcblxuICBpZiAoc2hvd1N0YXR1cykge1xuICAgIHJldHVybiB0ZXN0U3RhdHVzQ29tbWFuZChjb25maWcsIGRlcGVuZGVuY2llcy5mZXRjaCk7XG4gIH1cblxuICBpZiAoIWNvbmZpZy50ZXN0Py5kZXZSdW5uZXI/LmVuYWJsZWQpIHtcbiAgICBjb25zb2xlLmVycm9yKFxuICAgICAgY2hhbGsucmVkKFxuICAgICAgICBcImRldlJ1bm5lcuqwgCDtmZzshLHtmZTrkJjsp4Ag7JWK7JWY7Iq164uI64ukLiBzb25hbXUuY29uZmlnLnRz7JeQ7IScIHRlc3QuZGV2UnVubmVyLmVuYWJsZWQ6IHRydWUg7ISk7KCV7J20IO2VhOyalO2VqeuLiOuLpFwiLFxuICAgICAgKSxcbiAgICApO1xuICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgfVxuXG4gIGNvbnN0IHsgYmFzZVVybCB9ID0gcmVzb2x2ZVRlc3RCYXNlVXJsKGNvbmZpZyk7XG4gIGNvbnN0IHVybCA9IGAke2Jhc2VVcmx9L3J1bmA7XG5cbiAgY29uc3QgcGF5bG9hZDogVGVzdFJ1blBheWxvYWQgPSB7fTtcbiAgaWYgKGZpbGVzLmxlbmd0aCA+IDApIHtcbiAgICBwYXlsb2FkLmZpbGVzID0gZmlsZXM7XG4gIH1cbiAgaWYgKHBhdHRlcm4pIHtcbiAgICBwYXlsb2FkLnBhdHRlcm4gPSBwYXR0ZXJuO1xuICB9XG5cbiAgdHJ5IHtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGRlcGVuZGVuY2llcy5mZXRjaCh1cmwsIHtcbiAgICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgICBoZWFkZXJzOiB7IFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiIH0sXG4gICAgICBib2R5OiBKU09OLnN0cmluZ2lmeShwYXlsb2FkKSxcbiAgICB9KTtcblxuICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDQwNCkge1xuICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgY2hhbGsucmVkKFxuICAgICAgICAgIFwiZGV2UnVubmVy6rCAIO2ZnOyEse2ZlOuQmOyngCDslYrslZjsirXri4jri6QuIHNvbmFtdS5jb25maWcudHPsl5DshJwgdGVzdC5kZXZSdW5uZXIuZW5hYmxlZDogdHJ1ZSDshKTsoJXsnbQg7ZWE7JqU7ZWp64uI64ukXCIsXG4gICAgICAgICksXG4gICAgICApO1xuICAgICAgcHJvY2Vzcy5leGl0KDEpO1xuICAgIH1cblxuICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDUwMCkge1xuICAgICAgY29uc3QgZXJyb3JCb2R5ID1cbiAgICAgICAgLyogU0FGRVRZOiBDTEkg7YyM7ISc7JmAIOu5jOuTnCDrj4Tqtawg7J6F66ClIOqzhOyVveydtCDsnbQg6rCS7J2YIO2DgOyeheydhCDrs7TsnqXtlZzri6QuICovIChhd2FpdCByZXNwb25zZS5qc29uKCkpIGFzIHtcbiAgICAgICAgICBlcnJvcj86IHN0cmluZztcbiAgICAgICAgfTtcbiAgICAgIGNvbnNvbGUuZXJyb3IoY2hhbGsucmVkKFwiVml0ZXN0IOyduOyKpO2EtOyKpOqwgCDslYTsp4Eg7KSA67mE65CY7KeAIOyViuyVmOyKteuLiOuLpFwiKSk7XG4gICAgICBpZiAoZXJyb3JCb2R5LmVycm9yKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoY2hhbGsucmVkKGVycm9yQm9keS5lcnJvcikpO1xuICAgICAgfVxuICAgICAgcHJvY2Vzcy5leGl0KDEpO1xuICAgIH1cblxuICAgIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoY2hhbGsucmVkKGDsmIjsg4HtlZjsp4Ag66q77ZWcIOydkeuLtTogJHtyZXNwb25zZS5zdGF0dXN9YCkpO1xuICAgICAgcHJvY2Vzcy5leGl0KDEpO1xuICAgIH1cblxuICAgIGNvbnN0IHJlc3VsdCA9XG4gICAgICAvKiBTQUZFVFk6IENMSSDtjIzshJzsmYAg67mM65OcIOuPhOq1rCDsnoXroKUg6rOE7JW97J20IOydtCDqsJLsnZgg7YOA7J6F7J2EIOuztOyepe2VnOuLpC4gKi8gKGF3YWl0IHJlc3BvbnNlLmpzb24oKSkgYXMgUnVuUmVzdWx0O1xuXG4gICAgY29uc3QgeyBwYXNzZWQsIGZhaWxlZDogZmFpbGVkQ291bnQsIHRvdGFsLCBkdXJhdGlvbk1zIH0gPSByZXN1bHQuc3VtbWFyeTtcbiAgICBjb25zdCBwYXNzZWRTdHIgPSBjaGFsay5ncmVlbihgJHtwYXNzZWR9IHBhc3NlZGApO1xuICAgIGNvbnN0IGZhaWxlZFN0ciA9XG4gICAgICBmYWlsZWRDb3VudCA+IDAgPyBjaGFsay5yZWQoYCR7ZmFpbGVkQ291bnR9IGZhaWxlZGApIDogYCR7ZmFpbGVkQ291bnR9IGZhaWxlZGA7XG4gICAgY29uc29sZS5sb2coYFxcblRlc3RzOiAke3Bhc3NlZFN0cn0sICR7ZmFpbGVkU3RyfSwgJHt0b3RhbH0gdG90YWxgKTtcbiAgICBjb25zb2xlLmxvZyhjaGFsay5kaW0oYER1cmF0aW9uOiAke2R1cmF0aW9uTXN9bXNgKSk7XG5cbiAgICBjb25zdCBmYWlsZWRUZXN0cyA9IGNvbGxlY3RGYWlsZWRGcm9tUmVzdWx0cyhyZXN1bHQucmVzdWx0cyk7XG4gICAgaWYgKGZhaWxlZFRlc3RzLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnNvbGUubG9nKGNoYWxrLnJlZC5ib2xkKFwiXFxuRmFpbGVkIHRlc3RzOlwiKSk7XG4gICAgICBmb3IgKGNvbnN0IGYgb2YgZmFpbGVkVGVzdHMpIHtcbiAgICAgICAgY29uc29sZS5sb2coYCAgJHtjaGFsay5yZWQoXCJ4XCIpfSAke2YuZnVsbE5hbWV9ICR7Y2hhbGsuZGltKGAoJHtmLmZpbGV9KWApfWApO1xuICAgICAgICBpZiAoZi5lcnJvcikge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGAgICAgJHtjaGFsay5yZWQoZi5lcnJvci5tZXNzYWdlKX1gKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChzaG93VHJhY2VzKSB7XG4gICAgICBjb25zdCB0ZXN0c1dpdGhUcmFjZXMgPSBjb2xsZWN0VHJhY2VzRnJvbVJlc3VsdHMocmVzdWx0LnJlc3VsdHMpO1xuICAgICAgaWYgKHRlc3RzV2l0aFRyYWNlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGNoYWxrLmN5YW4uYm9sZChcIlxcblRyYWNlczpcIikpO1xuICAgICAgICBmb3IgKGNvbnN0IHsgdGVzdE5hbWUsIGZpbGUsIHRyYWNlcyB9IG9mIHRlc3RzV2l0aFRyYWNlcykge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGBcXG4gICR7Y2hhbGsuYm9sZCh0ZXN0TmFtZSl9YCk7XG4gICAgICAgICAgY29uc29sZS5sb2coYCAgJHtjaGFsay5kaW0ocGF0aC5iYXNlbmFtZShmaWxlKSl9YCk7XG4gICAgICAgICAgZm9yIChjb25zdCB0cmFjZSBvZiB0cmFjZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IGxvYyA9IGAke3BhdGguYmFzZW5hbWUodHJhY2UuZmlsZVBhdGgpfToke3RyYWNlLmxpbmVOdW1iZXJ9YDtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlU3RyID0gaXNTdHJpbmdWYWx1ZSh0cmFjZS52YWx1ZSlcbiAgICAgICAgICAgICAgPyB0cmFjZS52YWx1ZVxuICAgICAgICAgICAgICA6IChKU09OLnN0cmluZ2lmeSh0cmFjZS52YWx1ZSwgbnVsbCwgMikgPz8gXCJ1bmRlZmluZWRcIik7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgXFxuICAgICR7Y2hhbGsueWVsbG93KGBbJHt0cmFjZS5rZXl9XWApfSAke2NoYWxrLmRpbShsb2MpfWApO1xuICAgICAgICAgICAgY29uc3QgaW5kZW50ZWQgPSB2YWx1ZVN0ci5zcGxpdChcIlxcblwiKS5qb2luKFwiXFxuICAgIFwiKTtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGAgICAgJHtpbmRlbnRlZH1gKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIXJlc3VsdC5vaykge1xuICAgICAgcHJvY2Vzcy5leGl0KDEpO1xuICAgIH1cbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgaWYgKGVyciBpbnN0YW5jZW9mIFR5cGVFcnJvciAmJiBlcnIuY2F1c2UpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgIGNoYWxrLnJlZChcImRldiDshJzrsoTsl5Ag7Jew6rKw7ZWgIOyImCDsl4bsirXri4jri6QuIHNvbmFtdSBkZXbqsIAg7Iuk7ZaJIOykkeyduOyngCDtmZXsnbjtlZjshLjsmpRcIiksXG4gICAgICApO1xuICAgICAgcHJvY2Vzcy5leGl0KDEpO1xuICAgIH1cbiAgICB0aHJvdyBlcnI7XG4gIH1cbn1cblxuZnVuY3Rpb24gY29sbGVjdEZhaWxlZEZyb21SZXN1bHRzKG5vZGVzOiBUZXN0Q2FzZVJlc3VsdFtdKTogVGVzdENhc2VSZXN1bHRbXSB7XG4gIGNvbnN0IHJlc3VsdDogVGVzdENhc2VSZXN1bHRbXSA9IFtdO1xuICBmb3IgKGNvbnN0IG5vZGUgb2Ygbm9kZXMpIHtcbiAgICBpZiAobm9kZS5raW5kID09PSBcInRlc3RcIiAmJiBub2RlLnN0YXRlID09PSBcImZhaWxlZFwiKSB7XG4gICAgICByZXN1bHQucHVzaChub2RlKTtcbiAgICB9XG4gICAgaWYgKG5vZGUuY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xuICAgICAgcmVzdWx0LnB1c2goLi4uY29sbGVjdEZhaWxlZEZyb21SZXN1bHRzKG5vZGUuY2hpbGRyZW4pKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZnVuY3Rpb24gY29sbGVjdFRyYWNlc0Zyb21SZXN1bHRzKFxuICBub2RlczogVGVzdENhc2VSZXN1bHRbXSxcbik6IHsgdGVzdE5hbWU6IHN0cmluZzsgZmlsZTogc3RyaW5nOyB0cmFjZXM6IFRlc3RDYXNlUmVzdWx0W1widHJhY2VzXCJdIH1bXSB7XG4gIGNvbnN0IHJlc3VsdDogeyB0ZXN0TmFtZTogc3RyaW5nOyBmaWxlOiBzdHJpbmc7IHRyYWNlczogVGVzdENhc2VSZXN1bHRbXCJ0cmFjZXNcIl0gfVtdID0gW107XG4gIGZvciAoY29uc3Qgbm9kZSBvZiBub2Rlcykge1xuICAgIGlmIChub2RlLmtpbmQgPT09IFwidGVzdFwiICYmIG5vZGUudHJhY2VzLmxlbmd0aCA+IDApIHtcbiAgICAgIHJlc3VsdC5wdXNoKHsgdGVzdE5hbWU6IG5vZGUuZnVsbE5hbWUsIGZpbGU6IG5vZGUuZmlsZSwgdHJhY2VzOiBub2RlLnRyYWNlcyB9KTtcbiAgICB9XG4gICAgaWYgKG5vZGUuY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xuICAgICAgcmVzdWx0LnB1c2goLi4uY29sbGVjdFRyYWNlc0Zyb21SZXN1bHRzKG5vZGUuY2hpbGRyZW4pKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuYXN5bmMgZnVuY3Rpb24gdGVzdFN0YXR1c0NvbW1hbmQoXG4gIGNvbmZpZzogVGVzdENvbW1hbmRDb25maWcsXG4gIGZldGNoUmVxdWVzdDogdHlwZW9mIGdsb2JhbFRoaXMuZmV0Y2gsXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgaWYgKCFjb25maWcudGVzdD8uZGV2UnVubmVyPy5lbmFibGVkKSB7XG4gICAgY29uc29sZS5lcnJvcihcbiAgICAgIGNoYWxrLnJlZChcbiAgICAgICAgXCJkZXZSdW5uZXLqsIAg7Zmc7ISx7ZmU65CY7KeAIOyViuyVmOyKteuLiOuLpC4gc29uYW11LmNvbmZpZy50c+yXkOyEnCB0ZXN0LmRldlJ1bm5lci5lbmFibGVkOiB0cnVlIOyEpOygleydtCDtlYTsmpTtlanri4jri6RcIixcbiAgICAgICksXG4gICAgKTtcbiAgICBwcm9jZXNzLmV4aXQoMSk7XG4gIH1cblxuICBjb25zdCB7IGJhc2VVcmwgfSA9IHJlc29sdmVUZXN0QmFzZVVybChjb25maWcpO1xuICBjb25zdCB1cmwgPSBgJHtiYXNlVXJsfS9zdGF0dXNgO1xuXG4gIHRyeSB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaFJlcXVlc3QodXJsKTtcblxuICAgIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoY2hhbGsucmVkKGDsmIjsg4HtlZjsp4Ag66q77ZWcIOydkeuLtTogJHtyZXNwb25zZS5zdGF0dXN9YCkpO1xuICAgICAgcHJvY2Vzcy5leGl0KDEpO1xuICAgIH1cblxuICAgIGNvbnN0IHN0YXR1cyA9XG4gICAgICAvKiBTQUZFVFk6IENMSSDtjIzshJzsmYAg67mM65OcIOuPhOq1rCDsnoXroKUg6rOE7JW97J20IOydtCDqsJLsnZgg7YOA7J6F7J2EIOuztOyepe2VnOuLpC4gKi8gKGF3YWl0IHJlc3BvbnNlLmpzb24oKSkgYXMge1xuICAgICAgICByZWFkeTogYm9vbGVhbjtcbiAgICAgICAgcnVubmluZzogYm9vbGVhbjtcbiAgICAgICAgbGFzdFJ1bkF0OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICBzc2VBdmFpbGFibGU6IGJvb2xlYW47XG4gICAgICB9O1xuXG4gICAgY29uc29sZS5sb2coY2hhbGsuYm9sZChcIkRldlJ1bm5lciDsg4Htg5w6XCIpKTtcbiAgICBjb25zb2xlLmxvZyhgICByZWFkeTogICAgICAgICR7c3RhdHVzLnJlYWR5ID8gY2hhbGsuZ3JlZW4oXCJ0cnVlXCIpIDogY2hhbGsucmVkKFwiZmFsc2VcIil9YCk7XG4gICAgY29uc29sZS5sb2coYCAgcnVubmluZzogICAgICAke3N0YXR1cy5ydW5uaW5nID8gY2hhbGsueWVsbG93KFwidHJ1ZVwiKSA6IFwiZmFsc2VcIn1gKTtcbiAgICBjb25zb2xlLmxvZyhgICBsYXN0UnVuQXQ6ICAgICR7c3RhdHVzLmxhc3RSdW5BdCA/PyBjaGFsay5kaW0oXCLsl4bsnYxcIil9YCk7XG4gICAgY29uc29sZS5sb2coYCAgc3NlQXZhaWxhYmxlOiAke3N0YXR1cy5zc2VBdmFpbGFibGUgPyBjaGFsay5ncmVlbihcInRydWVcIikgOiBcImZhbHNlXCJ9YCk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGlmIChlcnIgaW5zdGFuY2VvZiBUeXBlRXJyb3IgJiYgZXJyLmNhdXNlKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICBjaGFsay5yZWQoXCJkZXYg7ISc67KE7JeQIOyXsOqysO2VoCDsiJgg7JeG7Iq164uI64ukLiBzb25hbXUgZGV26rCAIOyLpO2WiSDspJHsnbjsp4Ag7ZmV7J247ZWY7IS47JqUXCIpLFxuICAgICAgKTtcbiAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICB9XG4gICAgdGhyb3cg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
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { findApiRootPath, init_utils } from "../utils/utils.js";
|
|
2
2
|
import { ensureTsLoaderRegistered, init_ts_loader_registration } from "./ts-loader-registration.js";
|
|
3
|
-
|
|
3
|
+
// src/bin/ts-loader-register.ts
|
|
4
4
|
init_utils();
|
|
5
5
|
init_ts_loader_registration();
|
|
6
6
|
/**
|
|
@@ -8,7 +8,6 @@ init_ts_loader_registration();
|
|
|
8
8
|
* 이 스크립트는 sonamu cli로 dev 실행할 때 --import로 실행됩니다.
|
|
9
9
|
*/
|
|
10
10
|
await ensureTsLoaderRegistered(findApiRootPath());
|
|
11
|
-
//#endregion
|
|
12
11
|
export {};
|
|
13
12
|
|
|
14
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
13
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHMtbG9hZGVyLXJlZ2lzdGVyLmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9iaW4vdHMtbG9hZGVyLXJlZ2lzdGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZpbmRBcGlSb290UGF0aCB9IGZyb20gXCIuLi91dGlscy91dGlscy5qc1wiO1xuaW1wb3J0IHsgZW5zdXJlVHNMb2FkZXJSZWdpc3RlcmVkIH0gZnJvbSBcIi4vdHMtbG9hZGVyLXJlZ2lzdHJhdGlvbi5qc1wiO1xuXG4vKipcbiAqIEBzb25hbXUta2l0L3RzLWxvYWRlci9sb2FkZXLrpbwg65Ox66Gd7ZWY64qUIOyKpO2BrOumve2KuOyeheuLiOuLpC5cbiAqIOydtCDsiqTtgazrpr3tirjripQgc29uYW11IGNsaeuhnCBkZXYg7Iuk7ZaJ7ZWgIOuVjCAtLWltcG9ydOuhnCDsi6TtlonrkKnri4jri6QuXG4gKi9cbmF3YWl0IGVuc3VyZVRzTG9hZGVyUmVnaXN0ZXJlZChmaW5kQXBpUm9vdFBhdGgoKSk7XG4iXSwibWFwcGluZ3MiOiI7OztBQUFtRCxXQUFBO0FBQ21CLDRCQUFBOzs7OztBQU10RSxNQUFNLHlCQUF5QixnQkFBZ0IsQ0FBQyJ9
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { __esmMin } from "../_virtual/_rolldown/runtime.js";
|
|
2
2
|
import { createRequire, register } from "node:module";
|
|
3
3
|
import { pathToFileURL } from "node:url";
|
|
4
|
-
|
|
4
|
+
// src/bin/ts-loader-registration.ts
|
|
5
5
|
function getTsLoaderRegisterState() {
|
|
6
6
|
const globalState = globalThis;
|
|
7
7
|
if (!globalState[tsLoaderRegisterStateKey]) globalState[tsLoaderRegisterStateKey] = { registered: false };
|
|
@@ -27,8 +27,7 @@ var init_ts_loader_registration = __esmMin((() => {
|
|
|
27
27
|
}
|
|
28
28
|
};
|
|
29
29
|
}));
|
|
30
|
-
//#endregion
|
|
31
30
|
init_ts_loader_registration();
|
|
32
31
|
export { ensureTsLoaderRegistered, init_ts_loader_registration };
|
|
33
32
|
|
|
34
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHMtbG9hZGVyLXJlZ2lzdHJhdGlvbi5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi9zcmMvYmluL3RzLWxvYWRlci1yZWdpc3RyYXRpb24udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlUmVxdWlyZSB9IGZyb20gXCJub2RlOm1vZHVsZVwiO1xuaW1wb3J0IHsgcmVnaXN0ZXIgfSBmcm9tIFwibm9kZTptb2R1bGVcIjtcbmltcG9ydCB7IHBhdGhUb0ZpbGVVUkwgfSBmcm9tIFwibm9kZTp1cmxcIjtcblxuY29uc3QgdHNMb2FkZXJSZWdpc3RlclN0YXRlS2V5ID0gU3ltYm9sLmZvcihcInNvbmFtdS50cy1sb2FkZXItcmVnaXN0ZXIuc3RhdGVcIik7XG5jb25zdCByZXF1aXJlID0gY3JlYXRlUmVxdWlyZShpbXBvcnQubWV0YS51cmwpO1xuXG50eXBlIFRzTG9hZGVyUmVnaXN0ZXJTdGF0ZSA9IHtcbiAgcmVnaXN0ZXJlZDogYm9vbGVhbjtcbn07XG5cbnR5cGUgR2xvYmFsV2l0aFRzTG9hZGVyUmVnaXN0ZXJTdGF0ZSA9IHR5cGVvZiBnbG9iYWxUaGlzICYge1xuICBbdHNMb2FkZXJSZWdpc3RlclN0YXRlS2V5XT86IFRzTG9hZGVyUmVnaXN0ZXJTdGF0ZTtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHNMb2FkZXJSZWdpc3RyYXRpb25EZXBlbmRlbmNpZXMge1xuICByZWdpc3RlckxvYWRlcjogKHNwZWNpZmllcjogc3RyaW5nLCBvcHRpb25zOiB7IHBhcmVudFVSTDogc3RyaW5nIH0pID0+IHZvaWQ7XG4gIHJlc29sdmVMb2FkZXJQYXRoOiAoKSA9PiBzdHJpbmc7XG59XG5cbmNvbnN0IHRzTG9hZGVyUmVnaXN0cmF0aW9uRGVwZW5kZW5jaWVzOiBUc0xvYWRlclJlZ2lzdHJhdGlvbkRlcGVuZGVuY2llcyA9IHtcbiAgcmVnaXN0ZXJMb2FkZXIoc3BlY2lmaWVyLCBvcHRpb25zKSB7XG4gICAgcmVnaXN0ZXIoc3BlY2lmaWVyLCBvcHRpb25zKTtcbiAgfSxcbiAgcmVzb2x2ZUxvYWRlclBhdGgoKSB7XG4gICAgcmV0dXJuIHJlcXVpcmUucmVzb2x2ZShcIkBzb25hbXUta2l0L3RzLWxvYWRlci9sb2FkZXJcIik7XG4gIH0sXG59O1xuXG5mdW5jdGlvbiBnZXRUc0xvYWRlclJlZ2lzdGVyU3RhdGUoKTogVHNMb2FkZXJSZWdpc3RlclN0YXRlIHtcbiAgY29uc3QgZ2xvYmFsU3RhdGUgPVxuICAgIC8qIFNBRkVUWTogQ0xJIO2MjOyEnOyZgCDruYzrk5wg64+
|
|
33
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHMtbG9hZGVyLXJlZ2lzdHJhdGlvbi5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi9zcmMvYmluL3RzLWxvYWRlci1yZWdpc3RyYXRpb24udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlUmVxdWlyZSB9IGZyb20gXCJub2RlOm1vZHVsZVwiO1xuaW1wb3J0IHsgcmVnaXN0ZXIgfSBmcm9tIFwibm9kZTptb2R1bGVcIjtcbmltcG9ydCB7IHBhdGhUb0ZpbGVVUkwgfSBmcm9tIFwibm9kZTp1cmxcIjtcblxuY29uc3QgdHNMb2FkZXJSZWdpc3RlclN0YXRlS2V5ID0gU3ltYm9sLmZvcihcInNvbmFtdS50cy1sb2FkZXItcmVnaXN0ZXIuc3RhdGVcIik7XG5jb25zdCByZXF1aXJlID0gY3JlYXRlUmVxdWlyZShpbXBvcnQubWV0YS51cmwpO1xuXG50eXBlIFRzTG9hZGVyUmVnaXN0ZXJTdGF0ZSA9IHtcbiAgcmVnaXN0ZXJlZDogYm9vbGVhbjtcbn07XG5cbnR5cGUgR2xvYmFsV2l0aFRzTG9hZGVyUmVnaXN0ZXJTdGF0ZSA9IHR5cGVvZiBnbG9iYWxUaGlzICYge1xuICBbdHNMb2FkZXJSZWdpc3RlclN0YXRlS2V5XT86IFRzTG9hZGVyUmVnaXN0ZXJTdGF0ZTtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHNMb2FkZXJSZWdpc3RyYXRpb25EZXBlbmRlbmNpZXMge1xuICByZWdpc3RlckxvYWRlcjogKHNwZWNpZmllcjogc3RyaW5nLCBvcHRpb25zOiB7IHBhcmVudFVSTDogc3RyaW5nIH0pID0+IHZvaWQ7XG4gIHJlc29sdmVMb2FkZXJQYXRoOiAoKSA9PiBzdHJpbmc7XG59XG5cbmNvbnN0IHRzTG9hZGVyUmVnaXN0cmF0aW9uRGVwZW5kZW5jaWVzOiBUc0xvYWRlclJlZ2lzdHJhdGlvbkRlcGVuZGVuY2llcyA9IHtcbiAgcmVnaXN0ZXJMb2FkZXIoc3BlY2lmaWVyLCBvcHRpb25zKSB7XG4gICAgcmVnaXN0ZXIoc3BlY2lmaWVyLCBvcHRpb25zKTtcbiAgfSxcbiAgcmVzb2x2ZUxvYWRlclBhdGgoKSB7XG4gICAgcmV0dXJuIHJlcXVpcmUucmVzb2x2ZShcIkBzb25hbXUta2l0L3RzLWxvYWRlci9sb2FkZXJcIik7XG4gIH0sXG59O1xuXG5mdW5jdGlvbiBnZXRUc0xvYWRlclJlZ2lzdGVyU3RhdGUoKTogVHNMb2FkZXJSZWdpc3RlclN0YXRlIHtcbiAgY29uc3QgZ2xvYmFsU3RhdGUgPVxuICAgIC8qIFNBRkVUWTogQ0xJIO2MjOyEnOyZgCDruYzrk5wg64+E6rWsIOyeheugpSDqs4Tslb3snbQg7J20IOqwkuydmCDtg4DsnoXsnYQg67O07J6l7ZWc64ukLiAqLyBnbG9iYWxUaGlzIGFzIEdsb2JhbFdpdGhUc0xvYWRlclJlZ2lzdGVyU3RhdGU7XG5cbiAgaWYgKCFnbG9iYWxTdGF0ZVt0c0xvYWRlclJlZ2lzdGVyU3RhdGVLZXldKSB7XG4gICAgZ2xvYmFsU3RhdGVbdHNMb2FkZXJSZWdpc3RlclN0YXRlS2V5XSA9IHsgcmVnaXN0ZXJlZDogZmFsc2UgfTtcbiAgfVxuXG4gIHJldHVybiBnbG9iYWxTdGF0ZVt0c0xvYWRlclJlZ2lzdGVyU3RhdGVLZXldO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZW5zdXJlVHNMb2FkZXJSZWdpc3RlcmVkKFxuICBhcGlSb290OiBzdHJpbmcsXG4gIGRlcGVuZGVuY2llczogVHNMb2FkZXJSZWdpc3RyYXRpb25EZXBlbmRlbmNpZXMgPSB0c0xvYWRlclJlZ2lzdHJhdGlvbkRlcGVuZGVuY2llcyxcbik6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBzdGF0ZSA9IGdldFRzTG9hZGVyUmVnaXN0ZXJTdGF0ZSgpO1xuICBpZiAoc3RhdGUucmVnaXN0ZXJlZCkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHZvaWQgYXBpUm9vdDtcbiAgY29uc3QgbG9hZGVyUGF0aCA9IGRlcGVuZGVuY2llcy5yZXNvbHZlTG9hZGVyUGF0aCgpO1xuXG4gIGRlcGVuZGVuY2llcy5yZWdpc3RlckxvYWRlcihwYXRoVG9GaWxlVVJMKGxvYWRlclBhdGgpLmhyZWYsIHtcbiAgICBwYXJlbnRVUkw6IGltcG9ydC5tZXRhLnVybCxcbiAgfSk7XG4gIHN0YXRlLnJlZ2lzdGVyZWQgPSB0cnVlO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7O0FBNkJBLFNBQVMsMkJBQWtEO0NBQ3pELE1BQU0sY0FDOEM7Q0FFcEQsSUFBSSxDQUFDLFlBQVksMkJBQ2YsWUFBWSw0QkFBNEIsRUFBRSxZQUFZLE1BQU07Q0FHOUQsT0FBTyxZQUFZO0FBQ3JCO0FBRUEsZUFBc0IseUJBQ3BCLFNBQ0EsZUFBaUQsa0NBQ2xDO0NBQ2YsTUFBTSxRQUFRLHlCQUF5QjtDQUN2QyxJQUFJLE1BQU0sWUFDUjtDQUlGLE1BQU0sYUFBYSxhQUFhLGtCQUFrQjtDQUVsRCxhQUFhLGVBQWUsY0FBYyxVQUFVLENBQUMsQ0FBQyxNQUFNLEVBQzFELFdBQVcsWUFBWSxJQUN6QixDQUFDO0NBQ0QsTUFBTSxhQUFhO0FBQ3JCOzs7Q0FwRE0sMkJBQTJCLE9BQU8sSUFBSSxpQ0FBaUM7Q0FDdkUsVUFBVSxjQUFjLFlBQVksR0FBRztDQWV2QyxtQ0FBcUU7RUFDekUsZUFBZSxXQUFXLFNBQVM7R0FDakMsU0FBUyxXQUFXLE9BQU87RUFDN0I7RUFDQSxvQkFBb0I7R0FDbEIsT0FBTyxRQUFRLFFBQVEsOEJBQThCO0VBQ3ZEO0NBQ0YifQ==
|
|
@@ -5,7 +5,7 @@ import path from "node:path";
|
|
|
5
5
|
import { execFile } from "node:child_process";
|
|
6
6
|
import { promisify } from "node:util";
|
|
7
7
|
import ts from "@typescript/typescript6";
|
|
8
|
-
|
|
8
|
+
// src/bin/typecheck-web.ts
|
|
9
9
|
const execFileAsync = promisify(execFile);
|
|
10
10
|
const requireFromHere = createRequire(import.meta.url);
|
|
11
11
|
const configPath = path.resolve("tsconfig.json");
|
|
@@ -30,7 +30,6 @@ for (const reference of references) await execFileAsync(process.execPath, [
|
|
|
30
30
|
"-p",
|
|
31
31
|
path.resolve(reference.path)
|
|
32
32
|
], { cwd: process.cwd() });
|
|
33
|
-
//#endregion
|
|
34
33
|
export {};
|
|
35
34
|
|
|
36
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZWNoZWNrLXdlYi5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi9zcmMvYmluL3R5cGVjaGVjay13ZWIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZXhlY0ZpbGUgfSBmcm9tIFwibm9kZTpjaGlsZF9wcm9jZXNzXCI7XG5pbXBvcnQgeyByZWFkRmlsZSB9IGZyb20gXCJub2RlOmZzL3Byb21pc2VzXCI7XG5pbXBvcnQgeyBjcmVhdGVSZXF1aXJlIH0gZnJvbSBcIm5vZGU6bW9kdWxlXCI7XG5pbXBvcnQgcGF0aCBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgeyBwcm9taXNpZnkgfSBmcm9tIFwibm9kZTp1dGlsXCI7XG5cbmltcG9ydCB0cyBmcm9tIFwiQHR5cGVzY3JpcHQvdHlwZXNjcmlwdDZcIjtcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCI7XG5cbmNvbnN0IGV4ZWNGaWxlQXN5bmMgPSBwcm9taXNpZnkoZXhlY0ZpbGUpO1xuY29uc3QgcmVxdWlyZUZyb21IZXJlID0gY3JlYXRlUmVxdWlyZShpbXBvcnQubWV0YS51cmwpO1xuY29uc3QgY29uZmlnUGF0aCA9IHBhdGgucmVzb2x2ZShcInRzY29uZmlnLmpzb25cIik7XG5jb25zdCBwYXJzZWRDb25maWcgPSB0cy5wYXJzZUNvbmZpZ0ZpbGVUZXh0VG9Kc29uKGNvbmZpZ1BhdGgsIGF3YWl0IHJlYWRGaWxlKGNvbmZpZ1BhdGgsIFwidXRmOFwiKSk7XG5pZiAocGFyc2VkQ29uZmlnLmVycm9yKSB7XG4gIHRocm93IG5ldyBFcnJvcih0cy5mbGF0dGVuRGlhZ25vc3RpY01lc3NhZ2VUZXh0KHBhcnNlZENvbmZpZy5lcnJvci5tZXNzYWdlVGV4dCwgXCJcXG5cIikpO1xufVxuY29uc3QgY29uZmlnUmVzdWx0ID0gelxuICAub2JqZWN0KHsgcmVmZXJlbmNlczogei5hcnJheSh6Lm9iamVjdCh7IHBhdGg6IHouc3RyaW5nKCkgfSkpLm9wdGlvbmFsKCkgfSlcbiAgLnNhZmVQYXJzZShwYXJzZWRDb25maWcuY29uZmlnKTtcbmlmICghY29uZmlnUmVzdWx0LnN1Y2Nlc3MpIHtcbiAgdGhyb3cgbmV3IEVycm9yKFwidHNjb25maWcuanNvbuydmCBwcm9qZWN0IHJlZmVyZW5jZXPrpbwg7J297J2EIOyImCDsl4bsirXri4jri6QuXCIsIHtcbiAgICBjYXVzZTogY29uZmlnUmVzdWx0LmVycm9yLFxuICB9KTtcbn1cbmNvbnN0IGNvbmZpZyA9IGNvbmZpZ1Jlc3VsdC5kYXRhO1xuY29uc3QgcmVmZXJlbmNlcyA9IGNvbmZpZy5yZWZlcmVuY2VzID8/
|
|
35
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZWNoZWNrLXdlYi5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi9zcmMvYmluL3R5cGVjaGVjay13ZWIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZXhlY0ZpbGUgfSBmcm9tIFwibm9kZTpjaGlsZF9wcm9jZXNzXCI7XG5pbXBvcnQgeyByZWFkRmlsZSB9IGZyb20gXCJub2RlOmZzL3Byb21pc2VzXCI7XG5pbXBvcnQgeyBjcmVhdGVSZXF1aXJlIH0gZnJvbSBcIm5vZGU6bW9kdWxlXCI7XG5pbXBvcnQgcGF0aCBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgeyBwcm9taXNpZnkgfSBmcm9tIFwibm9kZTp1dGlsXCI7XG5cbmltcG9ydCB0cyBmcm9tIFwiQHR5cGVzY3JpcHQvdHlwZXNjcmlwdDZcIjtcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCI7XG5cbmNvbnN0IGV4ZWNGaWxlQXN5bmMgPSBwcm9taXNpZnkoZXhlY0ZpbGUpO1xuY29uc3QgcmVxdWlyZUZyb21IZXJlID0gY3JlYXRlUmVxdWlyZShpbXBvcnQubWV0YS51cmwpO1xuY29uc3QgY29uZmlnUGF0aCA9IHBhdGgucmVzb2x2ZShcInRzY29uZmlnLmpzb25cIik7XG5jb25zdCBwYXJzZWRDb25maWcgPSB0cy5wYXJzZUNvbmZpZ0ZpbGVUZXh0VG9Kc29uKGNvbmZpZ1BhdGgsIGF3YWl0IHJlYWRGaWxlKGNvbmZpZ1BhdGgsIFwidXRmOFwiKSk7XG5pZiAocGFyc2VkQ29uZmlnLmVycm9yKSB7XG4gIHRocm93IG5ldyBFcnJvcih0cy5mbGF0dGVuRGlhZ25vc3RpY01lc3NhZ2VUZXh0KHBhcnNlZENvbmZpZy5lcnJvci5tZXNzYWdlVGV4dCwgXCJcXG5cIikpO1xufVxuY29uc3QgY29uZmlnUmVzdWx0ID0gelxuICAub2JqZWN0KHsgcmVmZXJlbmNlczogei5hcnJheSh6Lm9iamVjdCh7IHBhdGg6IHouc3RyaW5nKCkgfSkpLm9wdGlvbmFsKCkgfSlcbiAgLnNhZmVQYXJzZShwYXJzZWRDb25maWcuY29uZmlnKTtcbmlmICghY29uZmlnUmVzdWx0LnN1Y2Nlc3MpIHtcbiAgdGhyb3cgbmV3IEVycm9yKFwidHNjb25maWcuanNvbuydmCBwcm9qZWN0IHJlZmVyZW5jZXPrpbwg7J297J2EIOyImCDsl4bsirXri4jri6QuXCIsIHtcbiAgICBjYXVzZTogY29uZmlnUmVzdWx0LmVycm9yLFxuICB9KTtcbn1cbmNvbnN0IGNvbmZpZyA9IGNvbmZpZ1Jlc3VsdC5kYXRhO1xuY29uc3QgcmVmZXJlbmNlcyA9IGNvbmZpZy5yZWZlcmVuY2VzID8/IFtdO1xuXG5pZiAocmVmZXJlbmNlcy5sZW5ndGggPT09IDApIHtcbiAgdGhyb3cgbmV3IEVycm9yKFwidHNjb25maWcuanNvbuyXkCB0eXBlY2hlY2vtlaAgcHJvamVjdCByZWZlcmVuY2XqsIAg7JeG7Iq164uI64ukLlwiKTtcbn1cblxuY29uc3QgdHNjUGF0aCA9IHBhdGguam9pbihcbiAgcGF0aC5kaXJuYW1lKHJlcXVpcmVGcm9tSGVyZS5yZXNvbHZlKFwidHlwZXNjcmlwdC9wYWNrYWdlLmpzb25cIikpLFxuICBcImJpbi90c2NcIixcbik7XG5mb3IgKGNvbnN0IHJlZmVyZW5jZSBvZiByZWZlcmVuY2VzKSB7XG4gIC8vIFdlYiDslbHsnYAg7ISg7Ja47J2EIOuwsO2PrO2VmOyngCDslYrsnLzrr4DroZwg7LC47KGw67OEIO2DgOyehSDqsoDsgqzsl5DshJwg7ISg7Ja4IOyngeugrO2ZlOunjCDruYTtmZzshLHtmZTtlanri4jri6QuXG4gIGF3YWl0IGV4ZWNGaWxlQXN5bmMoXG4gICAgcHJvY2Vzcy5leGVjUGF0aCxcbiAgICBbXG4gICAgICB0c2NQYXRoLFxuICAgICAgXCItLW5vRW1pdFwiLFxuICAgICAgXCItLWNvbXBvc2l0ZVwiLFxuICAgICAgXCJmYWxzZVwiLFxuICAgICAgXCItLWRlY2xhcmF0aW9uXCIsXG4gICAgICBcImZhbHNlXCIsXG4gICAgICBcIi0tZGVjbGFyYXRpb25NYXBcIixcbiAgICAgIFwiZmFsc2VcIixcbiAgICAgIFwiLS1lbWl0RGVjbGFyYXRpb25Pbmx5XCIsXG4gICAgICBcImZhbHNlXCIsXG4gICAgICBcIi1wXCIsXG4gICAgICBwYXRoLnJlc29sdmUocmVmZXJlbmNlLnBhdGgpLFxuICAgIF0sXG4gICAgeyBjd2Q6IHByb2Nlc3MuY3dkKCkgfSxcbiAgKTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFTQSxNQUFNLGdCQUFnQixVQUFVLFFBQVE7QUFDeEMsTUFBTSxrQkFBa0IsY0FBYyxZQUFZLEdBQUc7QUFDckQsTUFBTSxhQUFhLEtBQUssUUFBUSxlQUFlO0FBQy9DLE1BQU0sZUFBZSxHQUFHLDBCQUEwQixZQUFZLE1BQU0sU0FBUyxZQUFZLE1BQU0sQ0FBQztBQUNoRyxJQUFJLGFBQWEsT0FDZixNQUFNLElBQUksTUFBTSxHQUFHLDZCQUE2QixhQUFhLE1BQU0sYUFBYSxJQUFJLENBQUM7QUFFdkYsTUFBTSxlQUFlLEVBQ2xCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUMxRSxVQUFVLGFBQWEsTUFBTTtBQUNoQyxJQUFJLENBQUMsYUFBYSxTQUNoQixNQUFNLElBQUksTUFBTSxpREFBaUQsRUFDL0QsT0FBTyxhQUFhLE1BQ3RCLENBQUM7QUFHSCxNQUFNLGFBRFMsYUFBYSxLQUNGLGNBQWMsQ0FBQztBQUV6QyxJQUFJLFdBQVcsV0FBVyxHQUN4QixNQUFNLElBQUksTUFBTSxvREFBb0Q7QUFHdEUsTUFBTSxVQUFVLEtBQUssS0FDbkIsS0FBSyxRQUFRLGdCQUFnQixRQUFRLHlCQUF5QixDQUFDLEdBQy9ELFNBQ0Y7QUFDQSxLQUFLLE1BQU0sYUFBYSxZQUV0QixNQUFNLGNBQ0osUUFBUSxVQUNSO0NBQ0U7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBLEtBQUssUUFBUSxVQUFVLElBQUk7QUFDN0IsR0FDQSxFQUFFLEtBQUssUUFBUSxJQUFJLEVBQUUsQ0FDdkIifQ==
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { __esmMin } from "../_virtual/_rolldown/runtime.js";
|
|
2
2
|
import { BentoCache, bentostore } from "bentocache";
|
|
3
3
|
import { memoryDriver } from "bentocache/drivers/memory";
|
|
4
|
-
|
|
4
|
+
// src/cache/cache-manager.ts
|
|
5
5
|
/**
|
|
6
6
|
* BentoCache 인스턴스를 생성합니다.
|
|
7
7
|
*/
|
|
@@ -19,7 +19,6 @@ function createTestCacheManager() {
|
|
|
19
19
|
});
|
|
20
20
|
}
|
|
21
21
|
var init_cache_manager = __esmMin((() => {}));
|
|
22
|
-
//#endregion
|
|
23
22
|
init_cache_manager();
|
|
24
23
|
export { createCacheManager, createTestCacheManager, init_cache_manager };
|
|
25
24
|
|
package/dist/cache/decorator.js
CHANGED
|
@@ -2,7 +2,7 @@ import { __esmMin } from "../_virtual/_rolldown/runtime.js";
|
|
|
2
2
|
import { init_runtime_value, isFunctionValue, isNumberValue, isStringValue } from "../utils/runtime-value.js";
|
|
3
3
|
import { init_runtime_type, isBooleanValue } from "../runtime-type.js";
|
|
4
4
|
import { BaseModelClass, init_base_model } from "../database/base-model.js";
|
|
5
|
-
|
|
5
|
+
// src/cache/decorator.ts
|
|
6
6
|
function isCacheKeyFactory(keyOption) {
|
|
7
7
|
return isFunctionValue(keyOption);
|
|
8
8
|
}
|
|
@@ -85,8 +85,7 @@ var init_decorator = __esmMin((() => {
|
|
|
85
85
|
init_runtime_value();
|
|
86
86
|
cacheManagerRef = null;
|
|
87
87
|
}));
|
|
88
|
-
//#endregion
|
|
89
88
|
init_decorator();
|
|
90
89
|
export { cache, getCacheManagerRef, init_decorator, setCacheManagerRef };
|
|
91
90
|
|
|
92
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
91
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjb3JhdG9yLmpzIiwibmFtZXMiOlsibWV0aG9kTmFtZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jYWNoZS9kZWNvcmF0b3IudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHlwZSBCYXNlRnJhbWVDbGFzcyB9IGZyb20gXCIuLi9hcGkvYmFzZS1mcmFtZVwiO1xuaW1wb3J0IHsgQmFzZU1vZGVsQ2xhc3MgfSBmcm9tIFwiLi4vZGF0YWJhc2UvYmFzZS1tb2RlbFwiO1xuaW1wb3J0IHsgaXNCb29sZWFuVmFsdWUgfSBmcm9tIFwiLi4vcnVudGltZS10eXBlXCI7XG5pbXBvcnQgeyBpc0Z1bmN0aW9uVmFsdWUsIGlzTnVtYmVyVmFsdWUsIGlzU3RyaW5nVmFsdWUgfSBmcm9tIFwiLi4vdXRpbHMvcnVudGltZS12YWx1ZVwiO1xuaW1wb3J0IHsgdHlwZSBDYWNoZURlY29yYXRvck9wdGlvbnMsIHR5cGUgQ2FjaGVNYW5hZ2VyIH0gZnJvbSBcIi4vdHlwZXNcIjtcblxudHlwZSBEZWNvcmF0b3JUYXJnZXQgPSB7IGNvbnN0cnVjdG9yOiB7IG5hbWU6IHN0cmluZyB9IH07XG50eXBlIENhY2hlS2V5RmFjdG9yeSA9ICguLi5hcmdzOiB1bmtub3duW10pID0+IHN0cmluZztcblxuZnVuY3Rpb24gaXNDYWNoZUtleUZhY3Rvcnkoa2V5T3B0aW9uOiBDYWNoZURlY29yYXRvck9wdGlvbnNbXCJrZXlcIl0pOiBrZXlPcHRpb24gaXMgQ2FjaGVLZXlGYWN0b3J5IHtcbiAgcmV0dXJuIGlzRnVuY3Rpb25WYWx1ZShrZXlPcHRpb24pO1xufVxuXG4vLyDsupDsi5wg66ek64uI7KCAIOywuOyhsCAoU29uYW11LmluaXTsl5DshJwg7ISk7KCV65CoKVxubGV0IGNhY2hlTWFuYWdlclJlZjogQ2FjaGVNYW5hZ2VyIHwgbnVsbCA9IG51bGw7XG5cbi8qKlxuICog7LqQ7IucIOunpOuLiOyggCDssLjsobAg7ISk7KCVICjrgrTrtoAg7IKs7JqpKVxuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0Q2FjaGVNYW5hZ2VyUmVmKG1hbmFnZXI6IENhY2hlTWFuYWdlciB8IG51bGwpOiB2b2lkIHtcbiAgY2FjaGVNYW5hZ2VyUmVmID0gbWFuYWdlcjtcbn1cblxuLyoqXG4gKiDsupDsi5wg66ek64uI7KCAIOywuOyhsCDqsIDsoLjsmKTquLAgKOuCtOu2gCDsgqzsmqkpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRDYWNoZU1hbmFnZXJSZWYoKTogQ2FjaGVNYW5hZ2VyIHwgbnVsbCB7XG4gIHJldHVybiBjYWNoZU1hbmFnZXJSZWY7XG59XG5cbi8qKlxuICog7LqQ7IucIO2CpCDsg53shLFcbiAqL1xuZnVuY3Rpb24gZ2VuZXJhdGVDYWNoZUtleShcbiAgbW9kZWxOYW1lOiBzdHJpbmcsXG4gIG1ldGhvZE5hbWU6IHN0cmluZyxcbiAgYXJnczogdW5rbm93bltdLFxuICBrZXlPcHRpb24/OiBDYWNoZURlY29yYXRvck9wdGlvbnNbXCJrZXlcIl0sXG4pOiBzdHJpbmcge1xuICAvLyDsu6TsiqTthYAg7YKkIO2VqOyImCDsgqzsmqlcbiAgaWYgKGlzQ2FjaGVLZXlGYWN0b3J5KGtleU9wdGlvbikpIHtcbiAgICByZXR1cm4ga2V5T3B0aW9uKC4uLmFyZ3MpO1xuICB9XG5cbiAgLy8g66y47J6Q7Je0IO2CpCArIGFyZ3Mgc3VmZml4XG4gIGlmIChpc1N0cmluZ1ZhbHVlKGtleU9wdGlvbikpIHtcbiAgICBjb25zdCBhcmdzU3VmZml4ID0gc2VyaWFsaXplQXJncyhhcmdzKTtcbiAgICByZXR1cm4gYXJnc1N1ZmZpeCA/IGAke2tleU9wdGlvbn06JHthcmdzU3VmZml4fWAgOiBrZXlPcHRpb247XG4gIH1cblxuICAvLyDsnpDrj5kg7IOd7ISxOiBNb2RlbE5hbWUubWV0aG9kTmFtZTpzZXJpYWxpemVkQXJnc1xuICBjb25zdCBiYXNlS2V5ID0gYCR7bW9kZWxOYW1lfS4ke21ldGhvZE5hbWV9YDtcbiAgY29uc3QgYXJnc1N1ZmZpeCA9IHNlcmlhbGl6ZUFyZ3MoYXJncyk7XG4gIHJldHVybiBhcmdzU3VmZml4ID8gYCR7YmFzZUtleX06JHthcmdzU3VmZml4fWAgOiBiYXNlS2V5O1xufVxuXG4vKipcbiAqIOyduOyekCDsp4HroKztmZRcbiAqL1xuZnVuY3Rpb24gc2VyaWFsaXplQXJncyhhcmdzOiB1bmtub3duW10pOiBzdHJpbmcge1xuICBpZiAoYXJncy5sZW5ndGggPT09IDApIHJldHVybiBcIlwiO1xuXG4gIC8vIOuLqOydvCBwcmltaXRpdmUg6rCSXG4gIGlmIChhcmdzLmxlbmd0aCA9PT0gMSkge1xuICAgIGNvbnN0IGFyZyA9IGFyZ3NbMF07XG4gICAgaWYgKGFyZyA9PT0gbnVsbCB8fCBhcmcgPT09IHVuZGVmaW5lZCkgcmV0dXJuIFwiXCI7XG4gICAgaWYgKGlzU3RyaW5nVmFsdWUoYXJnKSB8fCBpc051bWJlclZhbHVlKGFyZykgfHwgaXNCb29sZWFuVmFsdWUoYXJnKSkge1xuICAgICAgcmV0dXJuIFN0cmluZyhhcmcpO1xuICAgIH1cbiAgfVxuXG4gIC8vIOuzteyeoe2VnCDqsJLsnYAgSlNPTiDsp4HroKztmZRcbiAgdHJ5IHtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoYXJncyk7XG4gIH0gY2F0Y2gge1xuICAgIC8vIOyngeugrO2ZlCDsi6TtjKgg7IucIHRvU3RyaW5nIOyCrOyaqVxuICAgIHJldHVybiBhcmdzLm1hcCgoYXJnKSA9PiBTdHJpbmcoYXJnKSkuam9pbihcIjpcIik7XG4gIH1cbn1cblxuLyoqXG4gKiBAY2FjaGUg642w7L2U66CI7J207YSwXG4gKlxuICog66mU7ISc65Oc7J2YIOqysOqzvOulvCDsupDsi7Htlanri4jri6QuXG4gKlxuICogQGV4YW1wbGVcbiAqIGNsYXNzIFVzZXJNb2RlbENsYXNzIGV4dGVuZHMgQmFzZU1vZGVsQ2xhc3M8Li4uPiB7XG4gKiAgIEBjYWNoZSh7IHR0bDogJzEwbScsIHRhZ3M6IFsndXNlciddIH0pXG4gKiAgIEBhcGkoKVxuICogICBhc3luYyBmaW5kQnlJZChzdWJzZXQ6IFVzZXJTdWJzZXRLZXksIGlkOiBzdHJpbmcpIHtcbiAqICAgICBjb25zdCB7IHJvd3MgfSA9IGF3YWl0IHRoaXMuZmluZE1hbnkoc3Vic2V0LCB7IGlkLCBudW06IDEsIHBhZ2U6IDEgfSk7XG4gKiAgICAgcmV0dXJuIHJvd3NbMF07XG4gKiAgIH1cbiAqIH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNhY2hlKG9wdGlvbnM6IENhY2hlRGVjb3JhdG9yT3B0aW9ucyA9IHt9KSB7XG4gIHJldHVybiAoX3RhcmdldDogRGVjb3JhdG9yVGFyZ2V0LCBwcm9wZXJ0eUtleTogc3RyaW5nLCBkZXNjcmlwdG9yOiBQcm9wZXJ0eURlc2NyaXB0b3IpID0+IHtcbiAgICBjb25zdCBvcmlnaW5hbE1ldGhvZCA9IGRlc2NyaXB0b3IudmFsdWU7XG5cbiAgICBkZXNjcmlwdG9yLnZhbHVlID0gYXN5bmMgZnVuY3Rpb24gKHRoaXM6IEJhc2VNb2RlbENsYXNzIHwgQmFzZUZyYW1lQ2xhc3MsIC4uLmFyZ3M6IHVua25vd25bXSkge1xuICAgICAgY29uc3QgbWFuYWdlciA9IGNhY2hlTWFuYWdlclJlZjtcblxuICAgICAgaWYgKCFtYW5hZ2VyKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBcIkNhY2hlTWFuYWdlciBpcyBub3QgaW5pdGlhbGl6ZWQuIFBsZWFzZSBjb25maWd1cmUgJ2NhY2hlJyBpbiBzb25hbXUuY29uZmlnLnRzLlwiLFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBtb2RlbE5hbWUgPSB0aGlzIGluc3RhbmNlb2YgQmFzZU1vZGVsQ2xhc3MgPyB0aGlzLm1vZGVsTmFtZSA6IHRoaXMuZnJhbWVOYW1lO1xuICAgICAgY29uc3QgbWV0aG9kTmFtZSA9IHByb3BlcnR5S2V5O1xuXG4gICAgICBjb25zdCBjYWNoZUtleSA9IGdlbmVyYXRlQ2FjaGVLZXkobW9kZWxOYW1lLCBtZXRob2ROYW1lLCBhcmdzLCBvcHRpb25zLmtleSk7XG4gICAgICBjb25zdCBzdG9yZSA9IG9wdGlvbnMuc3RvcmUgPyBtYW5hZ2VyLnVzZShvcHRpb25zLnN0b3JlKSA6IG1hbmFnZXI7XG5cbiAgICAgIHJldHVybiBzdG9yZS5nZXRPclNldCh7XG4gICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgIGtleTogY2FjaGVLZXksXG4gICAgICAgIGZhY3Rvcnk6ICgpID0+IG9yaWdpbmFsTWV0aG9kLmFwcGx5KHRoaXMsIGFyZ3MpLFxuICAgICAgfSk7XG4gICAgfTtcblxuICAgIHJldHVybiBkZXNjcmlwdG9yO1xuICB9O1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7OztBQVNBLFNBQVMsa0JBQWtCLFdBQXVFO0NBQ2hHLE9BQU8sZ0JBQWdCLFNBQVM7QUFDbEM7Ozs7QUFRQSxTQUFnQixtQkFBbUIsU0FBb0M7Q0FDckUsa0JBQWtCO0FBQ3BCOzs7O0FBS0EsU0FBZ0IscUJBQTBDO0NBQ3hELE9BQU87QUFDVDs7OztBQUtBLFNBQVMsaUJBQ1AsV0FDQSxZQUNBLE1BQ0EsV0FDUTtDQUVSLElBQUksa0JBQWtCLFNBQVMsR0FDN0IsT0FBTyxVQUFVLEdBQUcsSUFBSTtDQUkxQixJQUFJLGNBQWMsU0FBUyxHQUFHO0VBQzVCLE1BQU0sYUFBYSxjQUFjLElBQUk7RUFDckMsT0FBTyxhQUFhLEdBQUcsVUFBVSxHQUFHLGVBQWU7Q0FDckQ7Q0FHQSxNQUFNLFVBQVUsR0FBRyxVQUFVLEdBQUc7Q0FDaEMsTUFBTSxhQUFhLGNBQWMsSUFBSTtDQUNyQyxPQUFPLGFBQWEsR0FBRyxRQUFRLEdBQUcsZUFBZTtBQUNuRDs7OztBQUtBLFNBQVMsY0FBYyxNQUF5QjtDQUM5QyxJQUFJLEtBQUssV0FBVyxHQUFHLE9BQU87Q0FHOUIsSUFBSSxLQUFLLFdBQVcsR0FBRztFQUNyQixNQUFNLE1BQU0sS0FBSztFQUNqQixJQUFJLFFBQVEsUUFBUSxRQUFRLFFBQVcsT0FBTztFQUM5QyxJQUFJLGNBQWMsR0FBRyxLQUFLLGNBQWMsR0FBRyxLQUFLLGVBQWUsR0FBRyxHQUNoRSxPQUFPLE9BQU8sR0FBRztDQUVyQjtDQUdBLElBQUk7RUFDRixPQUFPLEtBQUssVUFBVSxJQUFJO0NBQzVCLFFBQVE7RUFFTixPQUFPLEtBQUssS0FBSyxRQUFRLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUc7Q0FDaEQ7QUFDRjs7Ozs7Ozs7Ozs7Ozs7OztBQWlCQSxTQUFnQixNQUFNLFVBQWlDLENBQUMsR0FBRztDQUN6RCxRQUFRLFNBQTBCLGFBQXFCLGVBQW1DO0VBQ3hGLE1BQU0saUJBQWlCLFdBQVc7RUFFbEMsV0FBVyxRQUFRLGVBQXVELEdBQUcsTUFBaUI7R0FDNUYsTUFBTSxVQUFVO0dBRWhCLElBQUksQ0FBQyxTQUNILE1BQU0sSUFBSSxNQUNSLGdGQUNGO0dBTUYsTUFBTSxXQUFXLGlCQUhDLGdCQUFnQixpQkFBaUIsS0FBSyxZQUFZLEtBQUssV0FHNUJBLGFBQVksTUFBTSxRQUFRLEdBQUc7R0FHMUUsUUFGYyxRQUFRLFFBQVEsUUFBUSxJQUFJLFFBQVEsS0FBSyxJQUFJLFFBRXBELENBQU0sU0FBUztJQUNwQixHQUFHO0lBQ0gsS0FBSztJQUNMLGVBQWUsZUFBZSxNQUFNLE1BQU0sSUFBSTtHQUNoRCxDQUFDO0VBQ0g7RUFFQSxPQUFPO0NBQ1Q7QUFDRjs7O0NBMUh1RCxnQkFBQTtDQUNQLGtCQUFBO0NBQ3NDLG1CQUFBO0NBV2xGLGtCQUF1QyJ9
|
package/dist/cache/drivers.js
CHANGED
|
@@ -3,7 +3,7 @@ import { memoryDriver as memoryDriver$1 } from "bentocache/drivers/memory";
|
|
|
3
3
|
import { fileDriver as fileDriver$1 } from "bentocache/drivers/file";
|
|
4
4
|
import { knexDriver as knexDriver$1 } from "bentocache/drivers/knex";
|
|
5
5
|
import { redisBusDriver as redisBusDriver$1, redisDriver as redisDriver$1 } from "bentocache/drivers/redis";
|
|
6
|
-
|
|
6
|
+
// src/cache/drivers.ts
|
|
7
7
|
const memoryDriver = memoryDriver$1;
|
|
8
8
|
const fileDriver = fileDriver$1;
|
|
9
9
|
const redisDriver = redisDriver$1;
|
|
@@ -16,7 +16,6 @@ const drivers = {
|
|
|
16
16
|
redisBus: redisBusDriver$1,
|
|
17
17
|
knex: knexDriver$1
|
|
18
18
|
};
|
|
19
|
-
//#endregion
|
|
20
19
|
export { drivers, fileDriver, knexDriver, memoryDriver, redisBusDriver, redisDriver, store };
|
|
21
20
|
|
|
22
21
|
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJpdmVycy5qcyIsIm5hbWVzIjpbIl9tZW1vcnlEcml2ZXIiLCJfZmlsZURyaXZlciIsIl9yZWRpc0RyaXZlciIsIl9yZWRpc0J1c0RyaXZlciIsIl9rbmV4RHJpdmVyIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NhY2hlL2RyaXZlcnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBCZW50b0NhY2hlIOuTnOudvOydtOuyhCByZS1leHBvcnRcbiAqXG4gKiBAZXhhbXBsZVxuICogaW1wb3J0IHsgZHJpdmVycywgc3RvcmUgfSBmcm9tICdzb25hbXUvY2FjaGUnO1xuICpcbiAqIGNhY2hlOiB7XG4gKiAgIHN0b3Jlczoge1xuICogICAgIG1haW46IHN0b3JlKClcbiAqICAgICAgIC51c2VMMUxheWVyKGRyaXZlcnMubWVtb3J5KHsgbWF4U2l6ZTogJzEwMG1iJyB9KSlcbiAqICAgICAgIC51c2VMMkxheWVyKGRyaXZlcnMucmVkaXMoeyBjb25uZWN0aW9uIH0pKVxuICogICAgICAgLnVzZUJ1cyhkcml2ZXJzLnJlZGlzQnVzKHsgY29ubmVjdGlvbiB9KSlcbiAqICAgfVxuICogfVxuICovXG5cbi8vIFN0b3JlIGJ1aWxkZXJcbmV4cG9ydCB7IGJlbnRvc3RvcmUgYXMgc3RvcmUgfSBmcm9tIFwiYmVudG9jYWNoZVwiO1xuXG5pbXBvcnQgeyBmaWxlRHJpdmVyIGFzIF9maWxlRHJpdmVyIH0gZnJvbSBcImJlbnRvY2FjaGUvZHJpdmVycy9maWxlXCI7XG5pbXBvcnQgeyBrbmV4RHJpdmVyIGFzIF9rbmV4RHJpdmVyIH0gZnJvbSBcImJlbnRvY2FjaGUvZHJpdmVycy9rbmV4XCI7XG5pbXBvcnQgeyBtZW1vcnlEcml2ZXIgYXMgX21lbW9yeURyaXZlciB9IGZyb20gXCJiZW50b2NhY2hlL2RyaXZlcnMvbWVtb3J5XCI7XG5pbXBvcnQge1xuICByZWRpc0J1c0RyaXZlciBhcyBfcmVkaXNCdXNEcml2ZXIsXG4gIHJlZGlzRHJpdmVyIGFzIF9yZWRpc0RyaXZlcixcbn0gZnJvbSBcImJlbnRvY2FjaGUvZHJpdmVycy9yZWRpc1wiO1xuXG4vLyDqsJzrs4Qg65Oc65287J2067KEIGV4cG9ydFxuZXhwb3J0IGNvbnN0IG1lbW9yeURyaXZlciA9IF9tZW1vcnlEcml2ZXI7XG5leHBvcnQgY29uc3QgZmlsZURyaXZlciA9IF9maWxlRHJpdmVyO1xuZXhwb3J0IGNvbnN0IHJlZGlzRHJpdmVyID0gX3JlZGlzRHJpdmVyO1xuZXhwb3J0IGNvbnN0IHJlZGlzQnVzRHJpdmVyID0gX3JlZGlzQnVzRHJpdmVyO1xuZXhwb3J0IGNvbnN0IGtuZXhEcml2ZXIgPSBfa25leERyaXZlcjtcblxuLy8g7Y647J2Y66W8IOychO2VnCBkcml2ZXJzIOqwneyytFxuZXhwb3J0IGNvbnN0IGRyaXZlcnMgPSB7XG4gIG1lbW9yeTogX21lbW9yeURyaXZlcixcbiAgZmlsZTogX2ZpbGVEcml2ZXIsXG4gIHJlZGlzOiBfcmVkaXNEcml2ZXIsXG4gIHJlZGlzQnVzOiBfcmVkaXNCdXNEcml2ZXIsXG4gIGtuZXg6IF9rbmV4RHJpdmVyLFxufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBNEJBLE1BQWEsZUFBZUE7QUFDNUIsTUFBYSxhQUFhQztBQUMxQixNQUFhLGNBQWNDO0FBQzNCLE1BQWEsaUJBQWlCQztBQUM5QixNQUFhLGFBQWFDO0FBRzFCLE1BQWEsVUFBVTtDQUNyQixRQUFRSjtDQUNSLE1BQU1DO0NBQ04sT0FBT0M7Q0FDUCxVQUFVQztDQUNWLE1BQU1DO0FBQ1IifQ==
|
package/dist/cache/index.js
CHANGED
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import { createCacheManager, createTestCacheManager, init_cache_manager } from "./cache-manager.js";
|
|
2
2
|
import { cache, getCacheManagerRef, init_decorator, setCacheManagerRef } from "./decorator.js";
|
|
3
3
|
import { drivers, fileDriver, knexDriver, memoryDriver, redisBusDriver, redisDriver, store } from "./drivers.js";
|
|
4
|
-
|
|
4
|
+
// src/cache/index.ts
|
|
5
5
|
init_cache_manager();
|
|
6
6
|
init_decorator();
|
|
7
|
-
//#endregion
|
|
8
7
|
export { cache, createCacheManager, createTestCacheManager, drivers, fileDriver, getCacheManagerRef, knexDriver, memoryDriver, redisBusDriver, redisDriver, setCacheManagerRef, store };
|
|
9
8
|
|
|
10
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
9
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NhY2hlL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIENhY2hlIG1hbmFnZXIgZmFjdG9yeVxuZXhwb3J0IHsgY3JlYXRlQ2FjaGVNYW5hZ2VyLCBjcmVhdGVUZXN0Q2FjaGVNYW5hZ2VyIH0gZnJvbSBcIi4vY2FjaGUtbWFuYWdlclwiO1xuXG4vLyBEZWNvcmF0b3JcbmV4cG9ydCB7IGNhY2hlLCBnZXRDYWNoZU1hbmFnZXJSZWYsIHNldENhY2hlTWFuYWdlclJlZiB9IGZyb20gXCIuL2RlY29yYXRvclwiO1xuXG4vLyBEcml2ZXJzICYgU3RvcmUgYnVpbGRlclxuZXhwb3J0IHtcbiAgZHJpdmVycyxcbiAgZmlsZURyaXZlcixcbiAga25leERyaXZlcixcbiAgbWVtb3J5RHJpdmVyLFxuICByZWRpc0J1c0RyaXZlcixcbiAgcmVkaXNEcml2ZXIsXG4gIHN0b3JlLFxufSBmcm9tIFwiLi9kcml2ZXJzXCI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7QUFDNEUsbUJBQUE7QUFHRCxlQUFBIn0=
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { __esmMin } from "../_virtual/_rolldown/runtime.js";
|
|
2
|
-
|
|
2
|
+
// src/cache-control/cache-control.ts
|
|
3
3
|
/**
|
|
4
4
|
* CacheControlConfig 객체를 HTTP Cache-Control 헤더 문자열로 변환합니다.
|
|
5
5
|
*
|
|
@@ -91,7 +91,6 @@ var init_cache_control = __esmMin((() => {
|
|
|
91
91
|
}
|
|
92
92
|
};
|
|
93
93
|
}));
|
|
94
|
-
//#endregion
|
|
95
94
|
init_cache_control();
|
|
96
95
|
export { CachePresets, applyCacheHeaders, buildCacheControl, init_cache_control };
|
|
97
96
|
|