sonamu 0.11.16 → 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 +30 -24
- 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.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +42 -6
- 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.d.ts +108 -0
- package/dist/stream/__tests__/ws-test-helpers.d.ts.map +1 -0
- package/dist/stream/__tests__/ws-test-helpers.js +259 -0
- package/dist/stream/index.d.ts +1 -0
- package/dist/stream/index.d.ts.map +1 -1
- package/dist/stream/index.js +15 -4
- package/dist/stream/sse.js +1 -2
- package/dist/stream/ws-audience-resolver.d.ts +8 -5
- package/dist/stream/ws-audience-resolver.d.ts.map +1 -1
- package/dist/stream/ws-audience-resolver.js +17 -15
- package/dist/stream/ws-audience.js +1 -2
- package/dist/stream/ws-cluster-bus.d.ts +9 -4
- package/dist/stream/ws-cluster-bus.d.ts.map +1 -1
- package/dist/stream/ws-cluster-bus.js +2 -3
- package/dist/stream/ws-core.d.ts +10 -0
- package/dist/stream/ws-core.d.ts.map +1 -1
- package/dist/stream/ws-delivery.d.ts +30 -4
- package/dist/stream/ws-delivery.d.ts.map +1 -1
- package/dist/stream/ws-delivery.js +200 -54
- package/dist/stream/ws-frame.d.ts +15 -0
- package/dist/stream/ws-frame.d.ts.map +1 -0
- package/dist/stream/ws-frame.js +28 -0
- package/dist/stream/ws-local-connection-store.d.ts +4 -4
- package/dist/stream/ws-local-connection-store.d.ts.map +1 -1
- package/dist/stream/ws-local-connection-store.js +3 -4
- package/dist/stream/ws-presence-index.d.ts +36 -0
- package/dist/stream/ws-presence-index.d.ts.map +1 -0
- package/dist/stream/ws-presence-index.js +176 -0
- package/dist/stream/ws-presence-store.d.ts +39 -39
- package/dist/stream/ws-presence-store.d.ts.map +1 -1
- package/dist/stream/ws-presence-store.js +23 -154
- package/dist/stream/ws-registry.d.ts +45 -17
- package/dist/stream/ws-registry.d.ts.map +1 -1
- package/dist/stream/ws-registry.js +170 -62
- package/dist/stream/ws-session-id.d.ts +14 -0
- package/dist/stream/ws-session-id.d.ts.map +1 -0
- package/dist/stream/ws-session-id.js +36 -0
- 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.d.ts +20 -10
- package/dist/stream/ws.d.ts.map +1 -1
- package/dist/stream/ws.js +60 -38
- 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-routes.test.ts +234 -0
- package/src/api/__tests__/sonamu.websocket.test.ts +241 -24
- package/src/api/config.ts +1 -1
- package/src/api/context.ts +2 -8
- package/src/api/sonamu.ts +46 -28
- 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/index.ts +1 -0
- package/src/stream/__tests__/ws-contracts.test.ts +483 -265
- package/src/stream/__tests__/ws-multinode.test.ts +326 -0
- package/src/stream/__tests__/ws-registry-async.test.ts +855 -0
- package/src/stream/__tests__/ws-test-helpers.ts +360 -0
- package/src/stream/__tests__/ws.test.ts +342 -145
- package/src/stream/index.ts +1 -0
- package/src/stream/ws-audience-resolver.ts +21 -19
- package/src/stream/ws-cluster-bus.ts +12 -4
- package/src/stream/ws-core.ts +14 -0
- package/src/stream/ws-delivery.ts +321 -97
- package/src/stream/ws-frame.ts +39 -0
- package/src/stream/ws-local-connection-store.ts +10 -9
- package/src/stream/ws-presence-index.ts +273 -0
- package/src/stream/ws-presence-store.ts +64 -284
- package/src/stream/ws-registry.ts +272 -85
- package/src/stream/ws-session-id.ts +39 -0
- package/src/stream/ws.ts +91 -50
- 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
|
@@ -5,7 +5,7 @@ import inflection from "inflection";
|
|
|
5
5
|
import assert from "assert";
|
|
6
6
|
import { readFile } from "fs/promises";
|
|
7
7
|
import ts from "@typescript/typescript6";
|
|
8
|
-
|
|
8
|
+
// src/syncer/api-parser.ts
|
|
9
9
|
/**
|
|
10
10
|
* TypeScript 파일을 파싱하여 API 메소드 정보를 추출합니다.
|
|
11
11
|
* @api 데코레이터가 붙은 메소드들의 타입 정보를 분석합니다.
|
|
@@ -232,8 +232,7 @@ var init_api_parser = __esmMin((() => {
|
|
|
232
232
|
init_decorators();
|
|
233
233
|
init_validator();
|
|
234
234
|
}));
|
|
235
|
-
//#endregion
|
|
236
235
|
init_api_parser();
|
|
237
236
|
export { init_api_parser, readApisFromFile };
|
|
238
237
|
|
|
239
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLXBhcnNlci5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi9zcmMvc3luY2VyL2FwaS1wYXJzZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2VydCBmcm9tIFwiYXNzZXJ0XCI7XG5pbXBvcnQgeyByZWFkRmlsZSB9IGZyb20gXCJmcy9wcm9taXNlc1wiO1xuXG5pbXBvcnQgdHMgZnJvbSBcIkB0eXBlc2NyaXB0L3R5cGVzY3JpcHQ2XCI7XG5pbXBvcnQgaW5mbGVjdGlvbiBmcm9tIFwiaW5mbGVjdGlvblwiO1xuXG5pbXBvcnQgeyByZWdpc3RlcmVkQXBpcyB9IGZyb20gXCIuLi9hcGkvZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHsgdHlwZSBFeHRlbmRlZEFwaSB9IGZyb20gXCIuLi9hcGkvZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHsgdHlwZSBSZXNvbHZlZFdlYlNvY2tldERlY29yYXRvck9wdGlvbnMgfSBmcm9tIFwiLi4vYXBpL2RlY29yYXRvcnNcIjtcbmltcG9ydCB7IHZhbGlkYXRlTWV0aG9kTmFtZSB9IGZyb20gXCIuLi9hcGkvdmFsaWRhdG9yXCI7XG5pbXBvcnQgeyB0eXBlIEFwaVBhcmFtLCB0eXBlIEFwaVBhcmFtVHlwZSB9IGZyb20gXCIuLi90eXBlcy90eXBlc1wiO1xuaW1wb3J0IHsgdHlwZSBBYnNvbHV0ZVBhdGggfSBmcm9tIFwiLi4vdXRpbHMvcGF0aC11dGlsc1wiO1xuXG50eXBlIFdlYlNvY2tldFR5cGVSZWZzID0gUGljazxcbiAgUmVzb2x2ZWRXZWJTb2NrZXREZWNvcmF0b3JPcHRpb25zLFxuICBcIm91dEV2ZW50c1R5cGVSZWZcIiB8IFwiaW5FdmVudHNUeXBlUmVmXCJcbj47XG50eXBlIFBhcnNlZE1ldGhvZCA9IHtcbiAgbW9kZWxOYW1lOiBzdHJpbmc7XG4gIG1ldGhvZE5hbWU6IHN0cmluZztcbiAgdHlwZVBhcmFtZXRlcnM6IEFwaVBhcmFtVHlwZS5UeXBlUGFyYW1bXTtcbiAgcGFyYW1ldGVyczogQXBpUGFyYW1bXTtcbiAgcmV0dXJuVHlwZTogQXBpUGFyYW1UeXBlO1xuICB3ZWJzb2NrZXRUeXBlUmVmczogV2ViU29ja2V0VHlwZVJlZnM7XG59O1xuXG4vKipcbiAqIFR5cGVTY3JpcHQg7YyM7J287J2EIO2MjOyLse2VmOyXrCBBUEkg66mU7IaM65OcIOygleuztOulvCDstpTstpztlanri4jri6QuXG4gKiBAYXBpIOuNsOy9lOugiOydtO2EsOqwgCDrtpnsnYAg66mU7IaM65Oc65Ok7J2YIO2DgOyehSDsoJXrs7Trpbwg67aE7ISd7ZWp64uI64ukLlxuICogQHBhcmFtIGZpbGVQYXRoIC0g7YyM7Iux7ZWgIFR5cGVTY3JpcHQg7YyM7J287J2YIOygiOuMgCDqsr3roZxcbiAqIEByZXR1cm5zIEFQSSDrqZTshozrk5wg7KCV67O0IOuwsOyXtCAo7YOA7J6FIO2MjOudvOuvuO2EsCwg7YyM652866+47YSwLCDrpqzthLQg7YOA7J6FIOuTsSlcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlYWRBcGlzRnJvbUZpbGUoZmlsZVBhdGg6IEFic29sdXRlUGF0aCk6IFByb21pc2U8RXh0ZW5kZWRBcGlbXT4ge1xuICBpZiAoIWZpbGVQYXRoLmVuZHNXaXRoKFwiLnRzXCIpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYCR7ZmlsZVBhdGh9IGRvZXMgbm90IHNlZW0gdG8gYmUgYSBUeXBlU2NyaXB0IGZpbGUuIFBsZWFzZSBjaGVjayB0aGUgZmlsZSBwYXRoLiBXZSBvbmx5IHN1cHBvcnQgcGFyc2luZyBUeXBlU2NyaXB0IGZpbGVzLmAsXG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0IHNvdXJjZUZpbGUgPSB0cy5jcmVhdGVTb3VyY2VGaWxlKFxuICAgIGZpbGVQYXRoLFxuICAgIChhd2FpdCByZWFkRmlsZShmaWxlUGF0aCkpLnRvU3RyaW5nKCksXG4gICAgdHMuU2NyaXB0VGFyZ2V0LkxhdGVzdCxcbiAgKTtcblxuICBjb25zdCBtZXRob2RzOiBQYXJzZWRNZXRob2RbXSA9IFtdO1xuICBsZXQgbW9kZWxOYW1lOiBzdHJpbmcgPSBcIlVua25vd25Nb2RlbFwiO1xuICBsZXQgbWV0aG9kTmFtZTogc3RyaW5nID0gXCJ1bmtub3duTWV0aG9kXCI7XG4gIGNvbnN0IHZpc2l0b3IgPSAobm9kZTogdHMuTm9kZSkgPT4ge1xuICAgIGlmICh0cy5pc0NsYXNzRGVjbGFyYXRpb24obm9kZSkpIHtcbiAgICAgIGlmIChub2RlLm5hbWUgJiYgdHMuaXNJZGVudGlmaWVyKG5vZGUubmFtZSkpIHtcbiAgICAgICAgbW9kZWxOYW1lID0gbm9kZS5uYW1lLmVzY2FwZWRUZXh0LnRvU3RyaW5nKCkucmVwbGFjZSgvQ2xhc3MkLywgXCJcIik7XG4gICAgICB9XG4gICAgfVxuICAgIGlmICh0cy5pc01ldGhvZERlY2xhcmF0aW9uKG5vZGUpKSB7XG4gICAgICBpZiAodHMuaXNJZGVudGlmaWVyKG5vZGUubmFtZSkpIHtcbiAgICAgICAgbWV0aG9kTmFtZSA9IG5vZGUubmFtZS5lc2NhcGVkVGV4dC50b1N0cmluZygpO1xuICAgICAgICB2YWxpZGF0ZU1ldGhvZE5hbWUobWV0aG9kTmFtZSk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHR5cGVQYXJhbWV0ZXJzOiBBcGlQYXJhbVR5cGUuVHlwZVBhcmFtW10gPSAobm9kZS50eXBlUGFyYW1ldGVycyA/PyBbXSkubWFwKFxuICAgICAgICAodHlwZVBhcmFtKSA9PiB7XG4gICAgICAgICAgY29uc3QgdHAgPSB0eXBlUGFyYW07XG5cbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdDogXCJ0eXBlLXBhcmFtXCIsXG4gICAgICAgICAgICBpZDogdHAubmFtZS5lc2NhcGVkVGV4dC50b1N0cmluZygpLFxuICAgICAgICAgICAgY29uc3RyYWludDogdHAuY29uc3RyYWludCA/IHJlc29sdmVUeXBlTm9kZSh0cC5jb25zdHJhaW50KSA6IHVuZGVmaW5lZCxcbiAgICAgICAgICB9O1xuICAgICAgICB9LFxuICAgICAgKTtcbiAgICAgIGNvbnN0IHBhcmFtZXRlcnM6IEFwaVBhcmFtW10gPSBub2RlLnBhcmFtZXRlcnMubWFwKChwYXJhbURlYywgaW5kZXgpID0+IHtcbiAgICAgICAgY29uc3QgZGVmYXVsdERlZiA9IHByaW50Tm9kZShwYXJhbURlYy5pbml0aWFsaXplciwgc291cmNlRmlsZSk7XG5cbiAgICAgICAgLy8g6riw67O46rCS7J20IOyeiOuKlCDqsr3smrAgcGFyYW1EZWMudHlwZeqwgCB1bmRlZmluZWTroZwg64KY7Ji0XG5cbiAgICAgICAgcmV0dXJuIHJlc29sdmVQYXJhbURlYyhcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBwYXJhbURlYy5uYW1lLFxuICAgICAgICAgICAgdHlwZTogLyogU0FGRVRZOiBUeXBlU2NyaXB0IEFTVCDtjIzsi7Hqs7wg64+Z6riw7ZmUIOyeheugpSDqs4Tslb3snbQg7J20IOqwkuydmCDtg4DsnoXsnYQg67O07J6l7ZWc64ukLiAqLyBwYXJhbURlYy50eXBlIGFzIHRzLlR5cGVOb2RlLFxuICAgICAgICAgICAgb3B0aW9uYWw6IHBhcmFtRGVjLnF1ZXN0aW9uVG9rZW4gIT09IHVuZGVmaW5lZCB8fCBwYXJhbURlYy5pbml0aWFsaXplciAhPT0gdW5kZWZpbmVkLFxuICAgICAgICAgICAgZGVmYXVsdERlZixcbiAgICAgICAgICB9LFxuICAgICAgICAgIGluZGV4LFxuICAgICAgICApO1xuICAgICAgfSk7XG4gICAgICBpZiAobm9kZS50eXBlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGDrpqzthLQg7YOA7J6F7J20IOq4sOyerOuQmOyngCDslYrsnYAg66mU7IaM65OcICR7bW9kZWxOYW1lfS4ke21ldGhvZE5hbWV9YCk7XG4gICAgICB9XG4gICAgICBjb25zdCByZXR1cm5UeXBlID0gcmVzb2x2ZVR5cGVOb2RlKG5vZGUudHlwZSk7XG4gICAgICBjb25zdCB3ZWJzb2NrZXRUeXBlUmVmcyA9IHJlYWRXZWJTb2NrZXRUeXBlUmVmcyhub2RlKTtcblxuICAgICAgbWV0aG9kcy5wdXNoKHtcbiAgICAgICAgbW9kZWxOYW1lLFxuICAgICAgICBtZXRob2ROYW1lLFxuICAgICAgICB0eXBlUGFyYW1ldGVycyxcbiAgICAgICAgcGFyYW1ldGVycyxcbiAgICAgICAgcmV0dXJuVHlwZSxcbiAgICAgICAgd2Vic29ja2V0VHlwZVJlZnMsXG4gICAgICB9KTtcbiAgICB9XG4gICAgdHMuZm9yRWFjaENoaWxkKG5vZGUsIHZpc2l0b3IpO1xuICB9O1xuICB2aXNpdG9yKHNvdXJjZUZpbGUpO1xuXG4gIGlmIChtZXRob2RzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIC8vIO2YhOyerCDtjIzsnbzsnZgg65Ox66Gd65CcIEFQSSDtlYTthLBcbiAgY29uc3QgY3VycmVudE1vZGVsQXBpcyA9IHJlZ2lzdGVyZWRBcGlzLmZpbHRlcigoYXBpKSA9PiB7XG4gICAgcmV0dXJuIG1ldGhvZHMuZmluZChcbiAgICAgIChtZXRob2QpID0+IG1ldGhvZC5tb2RlbE5hbWUgPT09IGFwaS5tb2RlbE5hbWUgJiYgbWV0aG9kLm1ldGhvZE5hbWUgPT09IGFwaS5tZXRob2ROYW1lLFxuICAgICk7XG4gIH0pO1xuICBpZiAoY3VycmVudE1vZGVsQXBpcy5sZW5ndGggPT09IDApIHtcbiAgICAvLyBjb25zdCBwID0gcGF0aC5qb2luKHRtcGRpcigpLCBcInNvbmFtdS1zeW5jZXItZXJyb3IuanNvblwiKTtcbiAgICAvLyB3cml0ZUZpbGVTeW5jKHAsIEpTT04uc3RyaW5naWZ5KHJlZ2lzdGVyZWRBcGlzLCBudWxsLCAyKSk7XG4gICAgLy8gZXhlY1N5bmMoYG9wZW4gJHtwfWApO1xuICAgIC8vIHRocm93IG5ldyBFcnJvcihg7ZiE7J6sIO2MjOydvOyXkCDsgqzsoIQg65Ox66Gd65CcIEFQSeqwgCDsl4bsirXri4jri6QuICR7ZmlsZVBhdGh9YCk7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgLy8g65Ox66Gd65CcIEFQSeyXkCDtmITsnqwg66mU7IaM65OcIO2DgOyehSDsoJXrs7Qg7ZmV7J6lXG4gIGNvbnN0IGV4dGVuZGVkQXBpcyA9IGN1cnJlbnRNb2RlbEFwaXMubWFwKChhcGkpID0+IHtcbiAgICBjb25zdCBmb3VuZE1ldGhvZCA9IG1ldGhvZHMuZmluZChcbiAgICAgIChtZXRob2QpID0+IG1ldGhvZC5tb2RlbE5hbWUgPT09IGFwaS5tb2RlbE5hbWUgJiYgbWV0aG9kLm1ldGhvZE5hbWUgPT09IGFwaS5tZXRob2ROYW1lLFxuICAgICk7XG4gICAgaWYgKCFmb3VuZE1ldGhvZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBBUEkgJHthcGkubW9kZWxOYW1lfS4ke2FwaS5tZXRob2ROYW1lfSBub3QgZm91bmQgaW4gJHtmaWxlUGF0aH1gKTtcbiAgICB9XG4gICAgY29uc3Qgd2Vic29ja2V0T3B0aW9ucyA9IGFwaS53ZWJzb2NrZXRPcHRpb25zXG4gICAgICA/IHtcbiAgICAgICAgICAuLi5hcGkud2Vic29ja2V0T3B0aW9ucyxcbiAgICAgICAgICAuLi5mb3VuZE1ldGhvZC53ZWJzb2NrZXRUeXBlUmVmcyxcbiAgICAgICAgfVxuICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4uYXBpLFxuICAgICAgd2Vic29ja2V0T3B0aW9ucyxcbiAgICAgIHR5cGVQYXJhbWV0ZXJzOiBmb3VuZE1ldGhvZD8udHlwZVBhcmFtZXRlcnMsXG4gICAgICBwYXJhbWV0ZXJzOiBmb3VuZE1ldGhvZD8ucGFyYW1ldGVycyxcbiAgICAgIHJldHVyblR5cGU6IGZvdW5kTWV0aG9kPy5yZXR1cm5UeXBlLFxuICAgIH07XG4gIH0pO1xuICByZXR1cm4gZXh0ZW5kZWRBcGlzO1xufVxuXG5mdW5jdGlvbiByZWFkV2ViU29ja2V0VHlwZVJlZnMobm9kZTogdHMuTWV0aG9kRGVjbGFyYXRpb24pOiBXZWJTb2NrZXRUeXBlUmVmcyB7XG4gIGNvbnN0IG9wdGlvbnNMaXRlcmFsID0gZ2V0RGVjb3JhdG9yT3B0aW9uc09iamVjdExpdGVyYWwobm9kZSwgXCJ3ZWJzb2NrZXRcIik7XG4gIGlmICghb3B0aW9uc0xpdGVyYWwpIHtcbiAgICByZXR1cm4ge307XG4gIH1cblxuICBjb25zdCByZWZzOiBXZWJTb2NrZXRUeXBlUmVmcyA9IHt9O1xuICBmb3IgKGNvbnN0IHByb3BlcnR5IG9mIG9wdGlvbnNMaXRlcmFsLnByb3BlcnRpZXMpIHtcbiAgICBpZiAoIXRzLmlzUHJvcGVydHlBc3NpZ25tZW50KHByb3BlcnR5KSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgY29uc3QgcHJvcGVydHlOYW1lID0gZ2V0UHJvcGVydHlOYW1lVGV4dChwcm9wZXJ0eS5uYW1lKTtcbiAgICBpZiAocHJvcGVydHlOYW1lICE9PSBcIm91dEV2ZW50c1wiICYmIHByb3BlcnR5TmFtZSAhPT0gXCJpbkV2ZW50c1wiKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBjb25zdCB0eXBlUmVmID0gcmVzb2x2ZURlY29yYXRvclR5cGVSZWYocHJvcGVydHkuaW5pdGlhbGl6ZXIpO1xuICAgIGlmICghdHlwZVJlZikge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKHByb3BlcnR5TmFtZSA9PT0gXCJvdXRFdmVudHNcIikge1xuICAgICAgcmVmcy5vdXRFdmVudHNUeXBlUmVmID0gdHlwZVJlZjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVmcy5pbkV2ZW50c1R5cGVSZWYgPSB0eXBlUmVmO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZWZzO1xufVxuXG5mdW5jdGlvbiBnZXREZWNvcmF0b3JPcHRpb25zT2JqZWN0TGl0ZXJhbChcbiAgbm9kZTogdHMuTWV0aG9kRGVjbGFyYXRpb24sXG4gIGRlY29yYXRvck5hbWU6IHN0cmluZyxcbik6IHRzLk9iamVjdExpdGVyYWxFeHByZXNzaW9uIHwgdW5kZWZpbmVkIHtcbiAgZm9yIChjb25zdCBtb2RpZmllciBvZiBub2RlLm1vZGlmaWVycyA/PyBbXSkge1xuICAgIGlmICghdHMuaXNEZWNvcmF0b3IobW9kaWZpZXIpKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBjb25zdCBleHByZXNzaW9uID0gbW9kaWZpZXIuZXhwcmVzc2lvbjtcbiAgICBpZiAoIXRzLmlzQ2FsbEV4cHJlc3Npb24oZXhwcmVzc2lvbikpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmICghdHMuaXNJZGVudGlmaWVyKGV4cHJlc3Npb24uZXhwcmVzc2lvbikgfHwgZXhwcmVzc2lvbi5leHByZXNzaW9uLnRleHQgIT09IGRlY29yYXRvck5hbWUpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGNvbnN0IFtmaXJzdEFyZ10gPSBleHByZXNzaW9uLmFyZ3VtZW50cztcbiAgICBpZiAoZmlyc3RBcmcgJiYgdHMuaXNPYmplY3RMaXRlcmFsRXhwcmVzc2lvbihmaXJzdEFyZykpIHtcbiAgICAgIHJldHVybiBmaXJzdEFyZztcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiBnZXRQcm9wZXJ0eU5hbWVUZXh0KG5hbWU6IHRzLlByb3BlcnR5TmFtZSk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGlmICh0cy5pc0lkZW50aWZpZXIobmFtZSkgfHwgdHMuaXNTdHJpbmdMaXRlcmFsKG5hbWUpIHx8IHRzLmlzTnVtZXJpY0xpdGVyYWwobmFtZSkpIHtcbiAgICByZXR1cm4gbmFtZS50ZXh0O1xuICB9XG5cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gcmVzb2x2ZURlY29yYXRvclR5cGVSZWYoZXhwcmVzc2lvbjogdHMuRXhwcmVzc2lvbik6IEFwaVBhcmFtVHlwZS5SZWYgfCB1bmRlZmluZWQge1xuICBpZiAodHMuaXNJZGVudGlmaWVyKGV4cHJlc3Npb24pKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHQ6IFwicmVmXCIsXG4gICAgICBpZDogZXhwcmVzc2lvbi50ZXh0LFxuICAgIH07XG4gIH1cblxuICBpZiAoXG4gICAgdHMuaXNBc0V4cHJlc3Npb24oZXhwcmVzc2lvbikgfHxcbiAgICB0cy5pc1BhcmVudGhlc2l6ZWRFeHByZXNzaW9uKGV4cHJlc3Npb24pIHx8XG4gICAgdHMuaXNOb25OdWxsRXhwcmVzc2lvbihleHByZXNzaW9uKSB8fFxuICAgIHRzLmlzVHlwZUFzc2VydGlvbkV4cHJlc3Npb24oZXhwcmVzc2lvbilcbiAgKSB7XG4gICAgcmV0dXJuIHJlc29sdmVEZWNvcmF0b3JUeXBlUmVmKGV4cHJlc3Npb24uZXhwcmVzc2lvbik7XG4gIH1cblxuICByZXR1cm4gdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiByZXNvbHZlVHlwZU5vZGUodHlwZU5vZGU6IHRzLlR5cGVOb2RlKTogQXBpUGFyYW1UeXBlIHtcbiAgc3dpdGNoICh0eXBlTm9kZT8ua2luZCkge1xuICAgIGNhc2UgdHMuU3ludGF4S2luZC5BbnlLZXl3b3JkOlxuICAgICAgcmV0dXJuIFwiYW55XCI7XG4gICAgY2FzZSB0cy5TeW50YXhLaW5kLlVua25vd25LZXl3b3JkOlxuICAgICAgcmV0dXJuIFwidW5rbm93blwiO1xuICAgIGNhc2UgdHMuU3ludGF4S2luZC5TdHJpbmdLZXl3b3JkOlxuICAgICAgcmV0dXJuIFwic3RyaW5nXCI7XG4gICAgY2FzZSB0cy5TeW50YXhLaW5kLk51bWJlcktleXdvcmQ6XG4gICAgICByZXR1cm4gXCJudW1iZXJcIjtcbiAgICBjYXNlIHRzLlN5bnRheEtpbmQuQm9vbGVhbktleXdvcmQ6XG4gICAgICByZXR1cm4gXCJib29sZWFuXCI7XG4gICAgY2FzZSB0cy5TeW50YXhLaW5kLlVuZGVmaW5lZEtleXdvcmQ6XG4gICAgICByZXR1cm4gXCJ1bmRlZmluZWRcIjtcbiAgICBjYXNlIHRzLlN5bnRheEtpbmQuTnVsbEtleXdvcmQ6XG4gICAgICByZXR1cm4gXCJudWxsXCI7XG4gICAgY2FzZSB0cy5TeW50YXhLaW5kLlZvaWRLZXl3b3JkOlxuICAgICAgcmV0dXJuIFwidm9pZFwiO1xuICAgIGNhc2UgdHMuU3ludGF4S2luZC5MaXRlcmFsVHlwZToge1xuICAgICAgY29uc3QgbGl0ZXJhbCA9XG4gICAgICAgIC8qIFNBRkVUWTogVHlwZVNjcmlwdCBBU1Qg7YyM7Iux6rO8IOuPmeq4sO2ZlCDsnoXroKUg6rOE7JW97J20IOydtCDqsJLsnZgg7YOA7J6F7J2EIOuztOyepe2VnOuLpC4gKi8gKFxuICAgICAgICAgIHR5cGVOb2RlIGFzIHRzLkxpdGVyYWxUeXBlTm9kZVxuICAgICAgICApLmxpdGVyYWw7XG4gICAgICBpZiAodHMuaXNTdHJpbmdMaXRlcmFsKGxpdGVyYWwpKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdDogXCJzdHJpbmctbGl0ZXJhbFwiLFxuICAgICAgICAgIHZhbHVlOiBsaXRlcmFsLnRleHQsXG4gICAgICAgIH07XG4gICAgICB9IGVsc2UgaWYgKHRzLmlzTnVtZXJpY0xpdGVyYWwobGl0ZXJhbCkpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0OiBcIm51bWVyaWMtbGl0ZXJhbFwiLFxuICAgICAgICAgIHZhbHVlOiBOdW1iZXIobGl0ZXJhbC50ZXh0KSxcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChsaXRlcmFsLmtpbmQgPT09IHRzLlN5bnRheEtpbmQuTnVsbEtleXdvcmQpIHtcbiAgICAgICAgICByZXR1cm4gXCJudWxsXCI7XG4gICAgICAgIH0gZWxzZSBpZiAobGl0ZXJhbC5raW5kID09PSB0cy5TeW50YXhLaW5kLlVuZGVmaW5lZEtleXdvcmQpIHtcbiAgICAgICAgICByZXR1cm4gXCJ1bmRlZmluZWRcIjtcbiAgICAgICAgfSBlbHNlIGlmIChsaXRlcmFsLmtpbmQgPT09IHRzLlN5bnRheEtpbmQuVHJ1ZUtleXdvcmQpIHtcbiAgICAgICAgICByZXR1cm4gXCJ0cnVlXCI7XG4gICAgICAgIH0gZWxzZSBpZiAobGl0ZXJhbC5raW5kID09PSB0cy5TeW50YXhLaW5kLkZhbHNlS2V5d29yZCkge1xuICAgICAgICAgIHJldHVybiBcImZhbHNlXCI7XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwi7JWMIOyImCDsl4bripQg66as7YSw65+0XCIpO1xuICAgICAgfVxuICAgIH1cbiAgICBjYXNlIHRzLlN5bnRheEtpbmQuQXJyYXlUeXBlOiB7XG4gICAgICBjb25zdCBhcnJOb2RlID1cbiAgICAgICAgLyogU0FGRVRZOiBUeXBlU2NyaXB0IEFTVCDtjIzsi7Hqs7wg64+Z6riw7ZmUIOyeheugpSDqs4Tslb3snbQg7J20IOqwkuydmCDtg4DsnoXsnYQg67O07J6l7ZWc64ukLiAqLyB0eXBlTm9kZSBhcyB0cy5BcnJheVR5cGVOb2RlO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdDogXCJhcnJheVwiLFxuICAgICAgICBlbGVtZW50c1R5cGU6IHJlc29sdmVUeXBlTm9kZShhcnJOb2RlLmVsZW1lbnRUeXBlKSxcbiAgICAgIH07XG4gICAgfVxuICAgIGNhc2UgdHMuU3ludGF4S2luZC5UeXBlTGl0ZXJhbDoge1xuICAgICAgY29uc3QgbGl0ZXJhbE5vZGUgPVxuICAgICAgICAvKiBTQUZFVFk6IFR5cGVTY3JpcHQgQVNUIO2MjOyLseqzvCDrj5nquLDtmZQg7J6F66ClIOqzhOyVveydtCDsnbQg6rCS7J2YIO2DgOyeheydhCDrs7TsnqXtlZzri6QuICovIHR5cGVOb2RlIGFzIHRzLlR5cGVMaXRlcmFsTm9kZTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHQ6IFwib2JqZWN0XCIsXG4gICAgICAgIHByb3BzOiBsaXRlcmFsTm9kZS5tZW1iZXJzLm1hcCgobWVtYmVyKSA9PiB7XG4gICAgICAgICAgaWYgKHRzLmlzSW5kZXhTaWduYXR1cmVEZWNsYXJhdGlvbihtZW1iZXIpKSB7XG4gICAgICAgICAgICBhc3NlcnQobWVtYmVyLnBhcmFtZXRlcnNbMF0pO1xuICAgICAgICAgICAgY29uc3QgcmVzID0gcmVzb2x2ZVBhcmFtRGVjKHtcbiAgICAgICAgICAgICAgbmFtZTogLyogU0FGRVRZOiBUeXBlU2NyaXB0IEFTVCDtjIzsi7Hqs7wg64+Z6riw7ZmUIOyeheugpSDqs4Tslb3snbQg7J20IOqwkuydmCDtg4DsnoXsnYQg67O07J6l7ZWc64ukLiAqLyBtZW1iZXJcbiAgICAgICAgICAgICAgICAucGFyYW1ldGVyc1swXS5uYW1lIGFzIHRzLklkZW50aWZpZXIsXG4gICAgICAgICAgICAgIHR5cGU6IC8qIFNBRkVUWTogVHlwZVNjcmlwdCBBU1Qg7YyM7Iux6rO8IOuPmeq4sO2ZlCDsnoXroKUg6rOE7JW97J20IOydtCDqsJLsnZgg7YOA7J6F7J2EIOuztOyepe2VnOuLpC4gKi8gbWVtYmVyXG4gICAgICAgICAgICAgICAgLnBhcmFtZXRlcnNbMF0udHlwZSBhcyB0cy5UeXBlTm9kZSxcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICByZXR1cm4gcmVzb2x2ZVBhcmFtRGVjKHtcbiAgICAgICAgICAgICAgbmFtZTogLyogU0FGRVRZOiBUeXBlU2NyaXB0IEFTVCDtjIzsi7Hqs7wg64+Z6riw7ZmUIOyeheugpSDqs4Tslb3snbQg7J20IOqwkuydmCDtg4DsnoXsnYQg67O07J6l7ZWc64ukLiAqLyB7XG4gICAgICAgICAgICAgICAgZXNjYXBlZFRleHQ6IGBbJHtyZXMubmFtZX0ke3Jlcy5vcHRpb25hbCA/IFwiP1wiIDogXCJcIn06ICR7cmVzLnR5cGV9XWAsXG4gICAgICAgICAgICAgIH0gYXMgdHMuSWRlbnRpZmllcixcbiAgICAgICAgICAgICAgdHlwZTogbWVtYmVyLnR5cGUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHJlc29sdmVQYXJhbURlYyh7XG4gICAgICAgICAgICAgIG5hbWU6IC8qIFNBRkVUWTogVHlwZVNjcmlwdCBBU1Qg7YyM7Iux6rO8IOuPmeq4sO2ZlCDsnoXroKUg6rOE7JW97J20IOydtCDqsJLsnZgg7YOA7J6F7J2EIOuztOyepe2VnOuLpC4gKi8gLyogU0FGRVRZOiBUeXBlU2NyaXB0IEFTVCDtjIzsi7Hqs7wg64+Z6riw7ZmUIOyeheugpSDqs4Tslb3snbQg7J20IOqwkuydmCDtg4DsnoXsnYQg67O07J6l7ZWc64ukLiAqLyAoXG4gICAgICAgICAgICAgICAgbWVtYmVyIGFzIHRzLlByb3BlcnR5U2lnbmF0dXJlXG4gICAgICAgICAgICAgICkubmFtZSBhcyB0cy5JZGVudGlmaWVyLFxuICAgICAgICAgICAgICB0eXBlOiAvKiBTQUZFVFk6IFR5cGVTY3JpcHQgQVNUIO2MjOyLseqzvCDrj5nquLDtmZQg7J6F66ClIOqzhOyVveydtCDsnbQg6rCS7J2YIO2DgOyeheydhCDrs7TsnqXtlZzri6QuICovIC8qIFNBRkVUWTogVHlwZVNjcmlwdCBBU1Qg7YyM7Iux6rO8IOuPmeq4sO2ZlCDsnoXroKUg6rOE7JW97J20IOydtCDqsJLsnZgg7YOA7J6F7J2EIOuztOyepe2VnOuLpC4gKi8gKFxuICAgICAgICAgICAgICAgIG1lbWJlciBhcyB0cy5Qcm9wZXJ0eVNpZ25hdHVyZVxuICAgICAgICAgICAgICApLnR5cGUgYXMgdHMuVHlwZU5vZGUsXG4gICAgICAgICAgICAgIG9wdGlvbmFsOlxuICAgICAgICAgICAgICAgIC8qIFNBRkVUWTogVHlwZVNjcmlwdCBBU1Qg7YyM7Iux6rO8IOuPmeq4sO2ZlCDsnoXroKUg6rOE7JW97J20IOydtCDqsJLsnZgg7YOA7J6F7J2EIOuztOyepe2VnOuLpC4gKi8gKFxuICAgICAgICAgICAgICAgICAgbWVtYmVyIGFzIHRzLlByb3BlcnR5U2lnbmF0dXJlXG4gICAgICAgICAgICAgICAgKS5xdWVzdGlvblRva2VuICE9PSB1bmRlZmluZWQsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pLFxuICAgICAgfTtcbiAgICB9XG4gICAgY2FzZSB0cy5TeW50YXhLaW5kLlR5cGVSZWZlcmVuY2U6XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0OiBcInJlZlwiLFxuICAgICAgICBpZDogLyogU0FGRVRZOiBUeXBlU2NyaXB0IEFTVCDtjIzsi7Hqs7wg64+Z6riw7ZmUIOyeheugpSDqs4Tslb3snbQg7J20IOqwkuydmCDtg4DsnoXsnYQg67O07J6l7ZWc64ukLiAqLyAvKiBTQUZFVFk6IFR5cGVTY3JpcHQgQVNUIO2MjOyLseqzvCDrj5nquLDtmZQg7J6F66ClIOqzhOyVveydtCDsnbQg6rCS7J2YIO2DgOyeheydhCDrs7TsnqXtlZzri6QuICovIChcbiAgICAgICAgICAodHlwZU5vZGUgYXMgdHMuVHlwZVJlZmVyZW5jZU5vZGUpLnR5cGVOYW1lIGFzIHRzLklkZW50aWZpZXJcbiAgICAgICAgKS5lc2NhcGVkVGV4dC50b1N0cmluZygpLFxuICAgICAgICBhcmdzOiAvKiBTQUZFVFk6IFR5cGVTY3JpcHQgQVNUIO2MjOyLseqzvCDrj5nquLDtmZQg7J6F66ClIOqzhOyVveydtCDsnbQg6rCS7J2YIO2DgOyeheydhCDrs7TsnqXtlZzri6QuICovIChcbiAgICAgICAgICB0eXBlTm9kZSBhcyB0cy5UeXBlUmVmZXJlbmNlTm9kZVxuICAgICAgICApLnR5cGVBcmd1bWVudHM/Lm1hcCgodHlwZUFyZykgPT4gcmVzb2x2ZVR5cGVOb2RlKHR5cGVBcmcpKSxcbiAgICAgIH07XG4gICAgY2FzZSB0cy5TeW50YXhLaW5kLlVuaW9uVHlwZTpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHQ6IFwidW5pb25cIixcbiAgICAgICAgdHlwZXM6IC8qIFNBRkVUWTogVHlwZVNjcmlwdCBBU1Qg7YyM7Iux6rO8IOuPmeq4sO2ZlCDsnoXroKUg6rOE7JW97J20IOydtCDqsJLsnZgg7YOA7J6F7J2EIOuztOyepe2VnOuLpC4gKi8gKFxuICAgICAgICAgIHR5cGVOb2RlIGFzIHRzLlVuaW9uVHlwZU5vZGVcbiAgICAgICAgKS50eXBlcy5tYXAoKHR5cGUpID0+IHJlc29sdmVUeXBlTm9kZSh0eXBlKSksXG4gICAgICB9O1xuICAgIGNhc2UgdHMuU3ludGF4S2luZC5JbnRlcnNlY3Rpb25UeXBlOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdDogXCJpbnRlcnNlY3Rpb25cIixcbiAgICAgICAgdHlwZXM6IC8qIFNBRkVUWTogVHlwZVNjcmlwdCBBU1Qg7YyM7Iux6rO8IOuPmeq4sO2ZlCDsnoXroKUg6rOE7JW97J20IOydtCDqsJLsnZgg7YOA7J6F7J2EIOuztOyepe2VnOuLpC4gKi8gKFxuICAgICAgICAgIHR5cGVOb2RlIGFzIHRzLkludGVyc2VjdGlvblR5cGVOb2RlXG4gICAgICAgICkudHlwZXMubWFwKCh0eXBlKSA9PiByZXNvbHZlVHlwZU5vZGUodHlwZSkpLFxuICAgICAgfTtcbiAgICBjYXNlIHRzLlN5bnRheEtpbmQuSW5kZXhlZEFjY2Vzc1R5cGU6XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0OiBcImluZGV4ZWQtYWNjZXNzXCIsXG4gICAgICAgIG9iamVjdDogcmVzb2x2ZVR5cGVOb2RlKFxuICAgICAgICAgIC8qIFNBRkVUWTogVHlwZVNjcmlwdCBBU1Qg7YyM7Iux6rO8IOuPmeq4sO2ZlCDsnoXroKUg6rOE7JW97J20IOydtCDqsJLsnZgg7YOA7J6F7J2EIOuztOyepe2VnOuLpC4gKi8gKFxuICAgICAgICAgICAgdHlwZU5vZGUgYXMgdHMuSW5kZXhlZEFjY2Vzc1R5cGVOb2RlXG4gICAgICAgICAgKS5vYmplY3RUeXBlLFxuICAgICAgICApLFxuICAgICAgICBpbmRleDogcmVzb2x2ZVR5cGVOb2RlKFxuICAgICAgICAgIC8qIFNBRkVUWTogVHlwZVNjcmlwdCBBU1Qg7YyM7Iux6rO8IOuPmeq4sO2ZlCDsnoXroKUg6rOE7JW97J20IOydtCDqsJLsnZgg7YOA7J6F7J2EIOuztOyepe2VnOuLpC4gKi8gKFxuICAgICAgICAgICAgdHlwZU5vZGUgYXMgdHMuSW5kZXhlZEFjY2Vzc1R5cGVOb2RlXG4gICAgICAgICAgKS5pbmRleFR5cGUsXG4gICAgICAgICksXG4gICAgICB9O1xuICAgIGNhc2UgdHMuU3ludGF4S2luZC5UdXBsZVR5cGU6XG4gICAgICBpZiAodHMuaXNUdXBsZVR5cGVOb2RlKHR5cGVOb2RlKSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHQ6IFwidHVwbGUtdHlwZVwiLFxuICAgICAgICAgIGVsZW1lbnRzOiB0eXBlTm9kZS5lbGVtZW50cy5tYXAoKGVsZW0pID0+IHJlc29sdmVUeXBlTm9kZShlbGVtKSksXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICBjYXNlIHRzLlN5bnRheEtpbmQuUGFyZW50aGVzaXplZFR5cGU6XG4gICAgICAvLyDqtITtmLjroZwg66y27J24IO2DgOyehSAo7JiIOiAoQSAmIEIpW10g7JeQ7IScIChBICYgQikpXG4gICAgICAvLyDrgrTrtoAg7YOA7J6F7J2EIOyerOq3gOyggeycvOuhnCByZXNvbHZlXG4gICAgICByZXR1cm4gcmVzb2x2ZVR5cGVOb2RlKFxuICAgICAgICAvKiBTQUZFVFk6IFR5cGVTY3JpcHQgQVNUIO2MjOyLseqzvCDrj5nquLDtmZQg7J6F66ClIOqzhOyVveydtCDsnbQg6rCS7J2YIO2DgOyeheydhCDrs7TsnqXtlZzri6QuICovIChcbiAgICAgICAgICB0eXBlTm9kZSBhcyB0cy5QYXJlbnRoZXNpemVkVHlwZU5vZGVcbiAgICAgICAgKS50eXBlLFxuICAgICAgKTtcblxuICAgIGNhc2UgdHMuU3ludGF4S2luZC5GdW5jdGlvblR5cGU6XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0OiBcImZ1bmN0aW9uXCIsXG4gICAgICAgIHBhcmFtZXRlcnM6XG4gICAgICAgICAgLyogU0FGRVRZOiBUeXBlU2NyaXB0IEFTVCDtjIzsi7Hqs7wg64+Z6riw7ZmUIOyeheugpSDqs4Tslb3snbQg7J20IOqwkuydmCDtg4DsnoXsnYQg67O07J6l7ZWc64ukLiAqLyAoXG4gICAgICAgICAgICB0eXBlTm9kZSBhcyB0cy5GdW5jdGlvblR5cGVOb2RlXG4gICAgICAgICAgKS5wYXJhbWV0ZXJzLm1hcCgocGFyYW0pID0+ICh7XG4gICAgICAgICAgICBuYW1lOiBwYXJhbS5uYW1lLmdldFRleHQoKSxcbiAgICAgICAgICAgIHR5cGU6IHBhcmFtLnR5cGUgPyByZXNvbHZlVHlwZU5vZGUocGFyYW0udHlwZSkgOiBcInVua25vd25cIixcbiAgICAgICAgICAgIG9wdGlvbmFsOiBwYXJhbS5xdWVzdGlvblRva2VuICE9PSB1bmRlZmluZWQsXG4gICAgICAgICAgICBkZWZhdWx0RGVmOiB1bmRlZmluZWQsXG4gICAgICAgICAgfSkpLFxuICAgICAgICByZXR1cm5UeXBlOiByZXNvbHZlVHlwZU5vZGUoXG4gICAgICAgICAgLyogU0FGRVRZOiBUeXBlU2NyaXB0IEFTVCDtjIzsi7Hqs7wg64+Z6riw7ZmUIOyeheugpSDqs4Tslb3snbQg7J20IOqwkuydmCDtg4DsnoXsnYQg67O07J6l7ZWc64ukLiAqLyAoXG4gICAgICAgICAgICB0eXBlTm9kZSBhcyB0cy5GdW5jdGlvblR5cGVOb2RlXG4gICAgICAgICAgKS50eXBlLFxuICAgICAgICApLFxuICAgICAgfTtcbiAgICBjYXNlIHVuZGVmaW5lZDpcbiAgICAgIHRocm93IG5ldyBFcnJvcihgdHlwZU5vZGUgdW5kZWZpbmVkYCk7XG4gIH1cblxuICBjb25zb2xlLmRlYnVnKHR5cGVOb2RlKTtcbiAgdGhyb3cgbmV3IEVycm9yKGDslYwg7IiYIOyXhuuKlCBTeW50YXhLaW5kICR7dHlwZU5vZGUua2luZH1gKTtcbn1cblxuZnVuY3Rpb24gcmVzb2x2ZVBhcmFtRGVjKFxuICBwYXJhbURlYzoge1xuICAgIG5hbWU6IHRzLkJpbmRpbmdOYW1lO1xuICAgIHR5cGU6IHRzLlR5cGVOb2RlO1xuICAgIG9wdGlvbmFsPzogYm9vbGVhbjtcbiAgICBkZWZhdWx0RGVmPzogc3RyaW5nO1xuICB9LFxuICBpbmRleDogbnVtYmVyID0gMCxcbik6IEFwaVBhcmFtIHtcbiAgY29uc3QgbmFtZSA9XG4gICAgLyogU0FGRVRZOiBUeXBlU2NyaXB0IEFTVCDtjIzsi7Hqs7wg64+Z6riw7ZmUIOyeheugpSDqs4Tslb3snbQg7J20IOqwkuydmCDtg4DsnoXsnYQg67O07J6l7ZWc64ukLiAqLyBwYXJhbURlYy5uYW1lIGFzIHRzLklkZW50aWZpZXI7XG4gIGNvbnN0IHR5cGUgPSByZXNvbHZlVHlwZU5vZGUocGFyYW1EZWMudHlwZSk7XG5cbiAgaWYgKG5hbWUgPT09IHVuZGVmaW5lZCkge1xuICAgIGNvbnNvbGUuZGVidWcoeyBuYW1lLCB0eXBlLCBwYXJhbURlYyB9KTtcbiAgfVxuXG4gIGNvbnN0IHJlc3VsdDogQXBpUGFyYW0gPSB7XG4gICAgbmFtZTogbmFtZS5lc2NhcGVkVGV4dCA/IG5hbWUuZXNjYXBlZFRleHQudG9TdHJpbmcoKSA6IGBub25hbWVBdCR7aW5kZXh9YCxcbiAgICB0eXBlLFxuICAgIG9wdGlvbmFsOiBwYXJhbURlYy5vcHRpb25hbCA9PT0gdHJ1ZSxcbiAgICBkZWZhdWx0RGVmOiBwYXJhbURlYz8uZGVmYXVsdERlZixcbiAgfTtcblxuICAvLyDqtazsobDrtoTtlbTtlaDri7nsnZgg6rK97JqwIO2DgOyeheydtOumhCDsgqzsmqlcbiAgaWYgKFxuICAgIHRzLmlzT2JqZWN0QmluZGluZ1BhdHRlcm4obmFtZSkgJiZcbiAgICB0cy5pc1R5cGVSZWZlcmVuY2VOb2RlKHBhcmFtRGVjLnR5cGUpICYmXG4gICAgdHMuaXNJZGVudGlmaWVyKHBhcmFtRGVjLnR5cGUudHlwZU5hbWUpXG4gICkge1xuICAgIHJlc3VsdC5uYW1lID0gaW5mbGVjdGlvbi5jYW1lbGl6ZShwYXJhbURlYy50eXBlLnR5cGVOYW1lLnRleHQsIHRydWUpO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZnVuY3Rpb24gcHJpbnROb2RlKG5vZGU6IHRzLk5vZGUgfCB1bmRlZmluZWQsIHNvdXJjZUZpbGU6IHRzLlNvdXJjZUZpbGUpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBpZiAobm9kZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIGNvbnN0IHByaW50ZXIgPSB0cy5jcmVhdGVQcmludGVyKHsgbmV3TGluZTogdHMuTmV3TGluZUtpbmQuTGluZUZlZWQgfSk7XG4gIHJldHVybiBwcmludGVyLnByaW50Tm9kZSh0cy5FbWl0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
|
|
238
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLXBhcnNlci5qcyIsIm5hbWVzIjpbImFyck5vZGUiLCJsaXRlcmFsTm9kZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zeW5jZXIvYXBpLXBhcnNlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gXCJhc3NlcnRcIjtcbmltcG9ydCB7IHJlYWRGaWxlIH0gZnJvbSBcImZzL3Byb21pc2VzXCI7XG5cbmltcG9ydCB0cyBmcm9tIFwiQHR5cGVzY3JpcHQvdHlwZXNjcmlwdDZcIjtcbmltcG9ydCBpbmZsZWN0aW9uIGZyb20gXCJpbmZsZWN0aW9uXCI7XG5cbmltcG9ydCB7IHJlZ2lzdGVyZWRBcGlzIH0gZnJvbSBcIi4uL2FwaS9kZWNvcmF0b3JzXCI7XG5pbXBvcnQgeyB0eXBlIEV4dGVuZGVkQXBpIH0gZnJvbSBcIi4uL2FwaS9kZWNvcmF0b3JzXCI7XG5pbXBvcnQgeyB0eXBlIFJlc29sdmVkV2ViU29ja2V0RGVjb3JhdG9yT3B0aW9ucyB9IGZyb20gXCIuLi9hcGkvZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHsgdmFsaWRhdGVNZXRob2ROYW1lIH0gZnJvbSBcIi4uL2FwaS92YWxpZGF0b3JcIjtcbmltcG9ydCB7IHR5cGUgQXBpUGFyYW0sIHR5cGUgQXBpUGFyYW1UeXBlIH0gZnJvbSBcIi4uL3R5cGVzL3R5cGVzXCI7XG5pbXBvcnQgeyB0eXBlIEFic29sdXRlUGF0aCB9IGZyb20gXCIuLi91dGlscy9wYXRoLXV0aWxzXCI7XG5cbnR5cGUgV2ViU29ja2V0VHlwZVJlZnMgPSBQaWNrPFxuICBSZXNvbHZlZFdlYlNvY2tldERlY29yYXRvck9wdGlvbnMsXG4gIFwib3V0RXZlbnRzVHlwZVJlZlwiIHwgXCJpbkV2ZW50c1R5cGVSZWZcIlxuPjtcbnR5cGUgUGFyc2VkTWV0aG9kID0ge1xuICBtb2RlbE5hbWU6IHN0cmluZztcbiAgbWV0aG9kTmFtZTogc3RyaW5nO1xuICB0eXBlUGFyYW1ldGVyczogQXBpUGFyYW1UeXBlLlR5cGVQYXJhbVtdO1xuICBwYXJhbWV0ZXJzOiBBcGlQYXJhbVtdO1xuICByZXR1cm5UeXBlOiBBcGlQYXJhbVR5cGU7XG4gIHdlYnNvY2tldFR5cGVSZWZzOiBXZWJTb2NrZXRUeXBlUmVmcztcbn07XG5cbi8qKlxuICogVHlwZVNjcmlwdCDtjIzsnbzsnYQg7YyM7Iux7ZWY7JesIEFQSSDrqZTshozrk5wg7KCV67O066W8IOy2lOy2nO2VqeuLiOuLpC5cbiAqIEBhcGkg642w7L2U66CI7J207YSw6rCAIOu2meydgCDrqZTshozrk5zrk6TsnZgg7YOA7J6FIOygleuztOulvCDrtoTshJ3tlanri4jri6QuXG4gKiBAcGFyYW0gZmlsZVBhdGggLSDtjIzsi7HtlaAgVHlwZVNjcmlwdCDtjIzsnbzsnZgg7KCI64yAIOqyveuhnFxuICogQHJldHVybnMgQVBJIOuplOyGjOuTnCDsoJXrs7Qg67Cw7Je0ICjtg4DsnoUg7YyM652866+47YSwLCDtjIzrnbzrr7jthLAsIOumrO2EtCDtg4DsnoUg65OxKVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVhZEFwaXNGcm9tRmlsZShmaWxlUGF0aDogQWJzb2x1dGVQYXRoKTogUHJvbWlzZTxFeHRlbmRlZEFwaVtdPiB7XG4gIGlmICghZmlsZVBhdGguZW5kc1dpdGgoXCIudHNcIikpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgJHtmaWxlUGF0aH0gZG9lcyBub3Qgc2VlbSB0byBiZSBhIFR5cGVTY3JpcHQgZmlsZS4gUGxlYXNlIGNoZWNrIHRoZSBmaWxlIHBhdGguIFdlIG9ubHkgc3VwcG9ydCBwYXJzaW5nIFR5cGVTY3JpcHQgZmlsZXMuYCxcbiAgICApO1xuICB9XG5cbiAgY29uc3Qgc291cmNlRmlsZSA9IHRzLmNyZWF0ZVNvdXJjZUZpbGUoXG4gICAgZmlsZVBhdGgsXG4gICAgKGF3YWl0IHJlYWRGaWxlKGZpbGVQYXRoKSkudG9TdHJpbmcoKSxcbiAgICB0cy5TY3JpcHRUYXJnZXQuTGF0ZXN0LFxuICApO1xuXG4gIGNvbnN0IG1ldGhvZHM6IFBhcnNlZE1ldGhvZFtdID0gW107XG4gIGxldCBtb2RlbE5hbWU6IHN0cmluZyA9IFwiVW5rbm93bk1vZGVsXCI7XG4gIGxldCBtZXRob2ROYW1lOiBzdHJpbmcgPSBcInVua25vd25NZXRob2RcIjtcbiAgY29uc3QgdmlzaXRvciA9IChub2RlOiB0cy5Ob2RlKSA9PiB7XG4gICAgaWYgKHRzLmlzQ2xhc3NEZWNsYXJhdGlvbihub2RlKSkge1xuICAgICAgaWYgKG5vZGUubmFtZSAmJiB0cy5pc0lkZW50aWZpZXIobm9kZS5uYW1lKSkge1xuICAgICAgICBtb2RlbE5hbWUgPSBub2RlLm5hbWUuZXNjYXBlZFRleHQudG9TdHJpbmcoKS5yZXBsYWNlKC9DbGFzcyQvLCBcIlwiKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHRzLmlzTWV0aG9kRGVjbGFyYXRpb24obm9kZSkpIHtcbiAgICAgIGlmICh0cy5pc0lkZW50aWZpZXIobm9kZS5uYW1lKSkge1xuICAgICAgICBtZXRob2ROYW1lID0gbm9kZS5uYW1lLmVzY2FwZWRUZXh0LnRvU3RyaW5nKCk7XG4gICAgICAgIHZhbGlkYXRlTWV0aG9kTmFtZShtZXRob2ROYW1lKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgdHlwZVBhcmFtZXRlcnM6IEFwaVBhcmFtVHlwZS5UeXBlUGFyYW1bXSA9IChub2RlLnR5cGVQYXJhbWV0ZXJzID8/IFtdKS5tYXAoXG4gICAgICAgICh0eXBlUGFyYW0pID0+IHtcbiAgICAgICAgICBjb25zdCB0cCA9IHR5cGVQYXJhbTtcblxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0OiBcInR5cGUtcGFyYW1cIixcbiAgICAgICAgICAgIGlkOiB0cC5uYW1lLmVzY2FwZWRUZXh0LnRvU3RyaW5nKCksXG4gICAgICAgICAgICBjb25zdHJhaW50OiB0cC5jb25zdHJhaW50ID8gcmVzb2x2ZVR5cGVOb2RlKHRwLmNvbnN0cmFpbnQpIDogdW5kZWZpbmVkLFxuICAgICAgICAgIH07XG4gICAgICAgIH0sXG4gICAgICApO1xuICAgICAgY29uc3QgcGFyYW1ldGVyczogQXBpUGFyYW1bXSA9IG5vZGUucGFyYW1ldGVycy5tYXAoKHBhcmFtRGVjLCBpbmRleCkgPT4ge1xuICAgICAgICBjb25zdCBkZWZhdWx0RGVmID0gcHJpbnROb2RlKHBhcmFtRGVjLmluaXRpYWxpemVyLCBzb3VyY2VGaWxlKTtcblxuICAgICAgICAvLyDquLDrs7jqsJLsnbQg7J6I64qUIOqyveyasCBwYXJhbURlYy50eXBl6rCAIHVuZGVmaW5lZOuhnCDrgpjsmLRcblxuICAgICAgICByZXR1cm4gcmVzb2x2ZVBhcmFtRGVjKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IHBhcmFtRGVjLm5hbWUsXG4gICAgICAgICAgICB0eXBlOiAvKiBTQUZFVFk6IFR5cGVTY3JpcHQgQVNUIO2MjOyLseqzvCDrj5nquLDtmZQg7J6F66ClIOqzhOyVveydtCDsnbQg6rCS7J2YIO2DgOyeheydhCDrs7TsnqXtlZzri6QuICovIHBhcmFtRGVjLnR5cGUgYXMgdHMuVHlwZU5vZGUsXG4gICAgICAgICAgICBvcHRpb25hbDogcGFyYW1EZWMucXVlc3Rpb25Ub2tlbiAhPT0gdW5kZWZpbmVkIHx8IHBhcmFtRGVjLmluaXRpYWxpemVyICE9PSB1bmRlZmluZWQsXG4gICAgICAgICAgICBkZWZhdWx0RGVmLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgaW5kZXgsXG4gICAgICAgICk7XG4gICAgICB9KTtcbiAgICAgIGlmIChub2RlLnR5cGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYOumrO2EtCDtg4DsnoXsnbQg6riw7J6s65CY7KeAIOyViuydgCDrqZTshozrk5wgJHttb2RlbE5hbWV9LiR7bWV0aG9kTmFtZX1gKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHJldHVyblR5cGUgPSByZXNvbHZlVHlwZU5vZGUobm9kZS50eXBlKTtcbiAgICAgIGNvbnN0IHdlYnNvY2tldFR5cGVSZWZzID0gcmVhZFdlYlNvY2tldFR5cGVSZWZzKG5vZGUpO1xuXG4gICAgICBtZXRob2RzLnB1c2goe1xuICAgICAgICBtb2RlbE5hbWUsXG4gICAgICAgIG1ldGhvZE5hbWUsXG4gICAgICAgIHR5cGVQYXJhbWV0ZXJzLFxuICAgICAgICBwYXJhbWV0ZXJzLFxuICAgICAgICByZXR1cm5UeXBlLFxuICAgICAgICB3ZWJzb2NrZXRUeXBlUmVmcyxcbiAgICAgIH0pO1xuICAgIH1cbiAgICB0cy5mb3JFYWNoQ2hpbGQobm9kZSwgdmlzaXRvcik7XG4gIH07XG4gIHZpc2l0b3Ioc291cmNlRmlsZSk7XG5cbiAgaWYgKG1ldGhvZHMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgLy8g7ZiE7J6sIO2MjOydvOydmCDrk7HroZ3rkJwgQVBJIO2VhO2EsFxuICBjb25zdCBjdXJyZW50TW9kZWxBcGlzID0gcmVnaXN0ZXJlZEFwaXMuZmlsdGVyKChhcGkpID0+IHtcbiAgICByZXR1cm4gbWV0aG9kcy5maW5kKFxuICAgICAgKG1ldGhvZCkgPT4gbWV0aG9kLm1vZGVsTmFtZSA9PT0gYXBpLm1vZGVsTmFtZSAmJiBtZXRob2QubWV0aG9kTmFtZSA9PT0gYXBpLm1ldGhvZE5hbWUsXG4gICAgKTtcbiAgfSk7XG4gIGlmIChjdXJyZW50TW9kZWxBcGlzLmxlbmd0aCA9PT0gMCkge1xuICAgIC8vIGNvbnN0IHAgPSBwYXRoLmpvaW4odG1wZGlyKCksIFwic29uYW11LXN5bmNlci1lcnJvci5qc29uXCIpO1xuICAgIC8vIHdyaXRlRmlsZVN5bmMocCwgSlNPTi5zdHJpbmdpZnkocmVnaXN0ZXJlZEFwaXMsIG51bGwsIDIpKTtcbiAgICAvLyBleGVjU3luYyhgb3BlbiAke3B9YCk7XG4gICAgLy8gdGhyb3cgbmV3IEVycm9yKGDtmITsnqwg7YyM7J287JeQIOyCrOyghCDrk7HroZ3rkJwgQVBJ6rCAIOyXhuyKteuLiOuLpC4gJHtmaWxlUGF0aH1gKTtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICAvLyDrk7HroZ3rkJwgQVBJ7JeQIO2YhOyerCDrqZTshozrk5wg7YOA7J6FIOygleuztCDtmZXsnqVcbiAgY29uc3QgZXh0ZW5kZWRBcGlzID0gY3VycmVudE1vZGVsQXBpcy5tYXAoKGFwaSkgPT4ge1xuICAgIGNvbnN0IGZvdW5kTWV0aG9kID0gbWV0aG9kcy5maW5kKFxuICAgICAgKG1ldGhvZCkgPT4gbWV0aG9kLm1vZGVsTmFtZSA9PT0gYXBpLm1vZGVsTmFtZSAmJiBtZXRob2QubWV0aG9kTmFtZSA9PT0gYXBpLm1ldGhvZE5hbWUsXG4gICAgKTtcbiAgICBpZiAoIWZvdW5kTWV0aG9kKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEFQSSAke2FwaS5tb2RlbE5hbWV9LiR7YXBpLm1ldGhvZE5hbWV9IG5vdCBmb3VuZCBpbiAke2ZpbGVQYXRofWApO1xuICAgIH1cbiAgICBjb25zdCB3ZWJzb2NrZXRPcHRpb25zID0gYXBpLndlYnNvY2tldE9wdGlvbnNcbiAgICAgID8ge1xuICAgICAgICAgIC4uLmFwaS53ZWJzb2NrZXRPcHRpb25zLFxuICAgICAgICAgIC4uLmZvdW5kTWV0aG9kLndlYnNvY2tldFR5cGVSZWZzLFxuICAgICAgICB9XG4gICAgICA6IHVuZGVmaW5lZDtcblxuICAgIHJldHVybiB7XG4gICAgICAuLi5hcGksXG4gICAgICB3ZWJzb2NrZXRPcHRpb25zLFxuICAgICAgdHlwZVBhcmFtZXRlcnM6IGZvdW5kTWV0aG9kPy50eXBlUGFyYW1ldGVycyxcbiAgICAgIHBhcmFtZXRlcnM6IGZvdW5kTWV0aG9kPy5wYXJhbWV0ZXJzLFxuICAgICAgcmV0dXJuVHlwZTogZm91bmRNZXRob2Q/LnJldHVyblR5cGUsXG4gICAgfTtcbiAgfSk7XG4gIHJldHVybiBleHRlbmRlZEFwaXM7XG59XG5cbmZ1bmN0aW9uIHJlYWRXZWJTb2NrZXRUeXBlUmVmcyhub2RlOiB0cy5NZXRob2REZWNsYXJhdGlvbik6IFdlYlNvY2tldFR5cGVSZWZzIHtcbiAgY29uc3Qgb3B0aW9uc0xpdGVyYWwgPSBnZXREZWNvcmF0b3JPcHRpb25zT2JqZWN0TGl0ZXJhbChub2RlLCBcIndlYnNvY2tldFwiKTtcbiAgaWYgKCFvcHRpb25zTGl0ZXJhbCkge1xuICAgIHJldHVybiB7fTtcbiAgfVxuXG4gIGNvbnN0IHJlZnM6IFdlYlNvY2tldFR5cGVSZWZzID0ge307XG4gIGZvciAoY29uc3QgcHJvcGVydHkgb2Ygb3B0aW9uc0xpdGVyYWwucHJvcGVydGllcykge1xuICAgIGlmICghdHMuaXNQcm9wZXJ0eUFzc2lnbm1lbnQocHJvcGVydHkpKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBjb25zdCBwcm9wZXJ0eU5hbWUgPSBnZXRQcm9wZXJ0eU5hbWVUZXh0KHByb3BlcnR5Lm5hbWUpO1xuICAgIGlmIChwcm9wZXJ0eU5hbWUgIT09IFwib3V0RXZlbnRzXCIgJiYgcHJvcGVydHlOYW1lICE9PSBcImluRXZlbnRzXCIpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGNvbnN0IHR5cGVSZWYgPSByZXNvbHZlRGVjb3JhdG9yVHlwZVJlZihwcm9wZXJ0eS5pbml0aWFsaXplcik7XG4gICAgaWYgKCF0eXBlUmVmKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAocHJvcGVydHlOYW1lID09PSBcIm91dEV2ZW50c1wiKSB7XG4gICAgICByZWZzLm91dEV2ZW50c1R5cGVSZWYgPSB0eXBlUmVmO1xuICAgIH0gZWxzZSB7XG4gICAgICByZWZzLmluRXZlbnRzVHlwZVJlZiA9IHR5cGVSZWY7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJlZnM7XG59XG5cbmZ1bmN0aW9uIGdldERlY29yYXRvck9wdGlvbnNPYmplY3RMaXRlcmFsKFxuICBub2RlOiB0cy5NZXRob2REZWNsYXJhdGlvbixcbiAgZGVjb3JhdG9yTmFtZTogc3RyaW5nLFxuKTogdHMuT2JqZWN0TGl0ZXJhbEV4cHJlc3Npb24gfCB1bmRlZmluZWQge1xuICBmb3IgKGNvbnN0IG1vZGlmaWVyIG9mIG5vZGUubW9kaWZpZXJzID8/IFtdKSB7XG4gICAgaWYgKCF0cy5pc0RlY29yYXRvcihtb2RpZmllcikpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGNvbnN0IGV4cHJlc3Npb24gPSBtb2RpZmllci5leHByZXNzaW9uO1xuICAgIGlmICghdHMuaXNDYWxsRXhwcmVzc2lvbihleHByZXNzaW9uKSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKCF0cy5pc0lkZW50aWZpZXIoZXhwcmVzc2lvbi5leHByZXNzaW9uKSB8fCBleHByZXNzaW9uLmV4cHJlc3Npb24udGV4dCAhPT0gZGVjb3JhdG9yTmFtZSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgY29uc3QgW2ZpcnN0QXJnXSA9IGV4cHJlc3Npb24uYXJndW1lbnRzO1xuICAgIGlmIChmaXJzdEFyZyAmJiB0cy5pc09iamVjdExpdGVyYWxFeHByZXNzaW9uKGZpcnN0QXJnKSkge1xuICAgICAgcmV0dXJuIGZpcnN0QXJnO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIGdldFByb3BlcnR5TmFtZVRleHQobmFtZTogdHMuUHJvcGVydHlOYW1lKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgaWYgKHRzLmlzSWRlbnRpZmllcihuYW1lKSB8fCB0cy5pc1N0cmluZ0xpdGVyYWwobmFtZSkgfHwgdHMuaXNOdW1lcmljTGl0ZXJhbChuYW1lKSkge1xuICAgIHJldHVybiBuYW1lLnRleHQ7XG4gIH1cblxuICByZXR1cm4gdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiByZXNvbHZlRGVjb3JhdG9yVHlwZVJlZihleHByZXNzaW9uOiB0cy5FeHByZXNzaW9uKTogQXBpUGFyYW1UeXBlLlJlZiB8IHVuZGVmaW5lZCB7XG4gIGlmICh0cy5pc0lkZW50aWZpZXIoZXhwcmVzc2lvbikpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdDogXCJyZWZcIixcbiAgICAgIGlkOiBleHByZXNzaW9uLnRleHQsXG4gICAgfTtcbiAgfVxuXG4gIGlmIChcbiAgICB0cy5pc0FzRXhwcmVzc2lvbihleHByZXNzaW9uKSB8fFxuICAgIHRzLmlzUGFyZW50aGVzaXplZEV4cHJlc3Npb24oZXhwcmVzc2lvbikgfHxcbiAgICB0cy5pc05vbk51bGxFeHByZXNzaW9uKGV4cHJlc3Npb24pIHx8XG4gICAgdHMuaXNUeXBlQXNzZXJ0aW9uRXhwcmVzc2lvbihleHByZXNzaW9uKVxuICApIHtcbiAgICByZXR1cm4gcmVzb2x2ZURlY29yYXRvclR5cGVSZWYoZXhwcmVzc2lvbi5leHByZXNzaW9uKTtcbiAgfVxuXG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIHJlc29sdmVUeXBlTm9kZSh0eXBlTm9kZTogdHMuVHlwZU5vZGUpOiBBcGlQYXJhbVR5cGUge1xuICBzd2l0Y2ggKHR5cGVOb2RlPy5raW5kKSB7XG4gICAgY2FzZSB0cy5TeW50YXhLaW5kLkFueUtleXdvcmQ6XG4gICAgICByZXR1cm4gXCJhbnlcIjtcbiAgICBjYXNlIHRzLlN5bnRheEtpbmQuVW5rbm93bktleXdvcmQ6XG4gICAgICByZXR1cm4gXCJ1bmtub3duXCI7XG4gICAgY2FzZSB0cy5TeW50YXhLaW5kLlN0cmluZ0tleXdvcmQ6XG4gICAgICByZXR1cm4gXCJzdHJpbmdcIjtcbiAgICBjYXNlIHRzLlN5bnRheEtpbmQuTnVtYmVyS2V5d29yZDpcbiAgICAgIHJldHVybiBcIm51bWJlclwiO1xuICAgIGNhc2UgdHMuU3ludGF4S2luZC5Cb29sZWFuS2V5d29yZDpcbiAgICAgIHJldHVybiBcImJvb2xlYW5cIjtcbiAgICBjYXNlIHRzLlN5bnRheEtpbmQuVW5kZWZpbmVkS2V5d29yZDpcbiAgICAgIHJldHVybiBcInVuZGVmaW5lZFwiO1xuICAgIGNhc2UgdHMuU3ludGF4S2luZC5OdWxsS2V5d29yZDpcbiAgICAgIHJldHVybiBcIm51bGxcIjtcbiAgICBjYXNlIHRzLlN5bnRheEtpbmQuVm9pZEtleXdvcmQ6XG4gICAgICByZXR1cm4gXCJ2b2lkXCI7XG4gICAgY2FzZSB0cy5TeW50YXhLaW5kLkxpdGVyYWxUeXBlOiB7XG4gICAgICBjb25zdCBsaXRlcmFsID1cbiAgICAgICAgLyogU0FGRVRZOiBUeXBlU2NyaXB0IEFTVCDtjIzsi7Hqs7wg64+Z6riw7ZmUIOyeheugpSDqs4Tslb3snbQg7J20IOqwkuydmCDtg4DsnoXsnYQg67O07J6l7ZWc64ukLiAqLyAoXG4gICAgICAgICAgdHlwZU5vZGUgYXMgdHMuTGl0ZXJhbFR5cGVOb2RlXG4gICAgICAgICkubGl0ZXJhbDtcbiAgICAgIGlmICh0cy5pc1N0cmluZ0xpdGVyYWwobGl0ZXJhbCkpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0OiBcInN0cmluZy1saXRlcmFsXCIsXG4gICAgICAgICAgdmFsdWU6IGxpdGVyYWwudGV4dCxcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSBpZiAodHMuaXNOdW1lcmljTGl0ZXJhbChsaXRlcmFsKSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHQ6IFwibnVtZXJpYy1saXRlcmFsXCIsXG4gICAgICAgICAgdmFsdWU6IE51bWJlcihsaXRlcmFsLnRleHQpLFxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGxpdGVyYWwua2luZCA9PT0gdHMuU3ludGF4S2luZC5OdWxsS2V5d29yZCkge1xuICAgICAgICAgIHJldHVybiBcIm51bGxcIjtcbiAgICAgICAgfSBlbHNlIGlmIChsaXRlcmFsLmtpbmQgPT09IHRzLlN5bnRheEtpbmQuVW5kZWZpbmVkS2V5d29yZCkge1xuICAgICAgICAgIHJldHVybiBcInVuZGVmaW5lZFwiO1xuICAgICAgICB9IGVsc2UgaWYgKGxpdGVyYWwua2luZCA9PT0gdHMuU3ludGF4S2luZC5UcnVlS2V5d29yZCkge1xuICAgICAgICAgIHJldHVybiBcInRydWVcIjtcbiAgICAgICAgfSBlbHNlIGlmIChsaXRlcmFsLmtpbmQgPT09IHRzLlN5bnRheEtpbmQuRmFsc2VLZXl3b3JkKSB7XG4gICAgICAgICAgcmV0dXJuIFwiZmFsc2VcIjtcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCLslYwg7IiYIOyXhuuKlCDrpqzthLDrn7RcIik7XG4gICAgICB9XG4gICAgfVxuICAgIGNhc2UgdHMuU3ludGF4S2luZC5BcnJheVR5cGU6IHtcbiAgICAgIGNvbnN0IGFyck5vZGUgPVxuICAgICAgICAvKiBTQUZFVFk6IFR5cGVTY3JpcHQgQVNUIO2MjOyLseqzvCDrj5nquLDtmZQg7J6F66ClIOqzhOyVveydtCDsnbQg6rCS7J2YIO2DgOyeheydhCDrs7TsnqXtlZzri6QuICovIHR5cGVOb2RlIGFzIHRzLkFycmF5VHlwZU5vZGU7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0OiBcImFycmF5XCIsXG4gICAgICAgIGVsZW1lbnRzVHlwZTogcmVzb2x2ZVR5cGVOb2RlKGFyck5vZGUuZWxlbWVudFR5cGUpLFxuICAgICAgfTtcbiAgICB9XG4gICAgY2FzZSB0cy5TeW50YXhLaW5kLlR5cGVMaXRlcmFsOiB7XG4gICAgICBjb25zdCBsaXRlcmFsTm9kZSA9XG4gICAgICAgIC8qIFNBRkVUWTogVHlwZVNjcmlwdCBBU1Qg7YyM7Iux6rO8IOuPmeq4sO2ZlCDsnoXroKUg6rOE7JW97J20IOydtCDqsJLsnZgg7YOA7J6F7J2EIOuztOyepe2VnOuLpC4gKi8gdHlwZU5vZGUgYXMgdHMuVHlwZUxpdGVyYWxOb2RlO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdDogXCJvYmplY3RcIixcbiAgICAgICAgcHJvcHM6IGxpdGVyYWxOb2RlLm1lbWJlcnMubWFwKChtZW1iZXIpID0+IHtcbiAgICAgICAgICBpZiAodHMuaXNJbmRleFNpZ25hdHVyZURlY2xhcmF0aW9uKG1lbWJlcikpIHtcbiAgICAgICAgICAgIGFzc2VydChtZW1iZXIucGFyYW1ldGVyc1swXSk7XG4gICAgICAgICAgICBjb25zdCByZXMgPSByZXNvbHZlUGFyYW1EZWMoe1xuICAgICAgICAgICAgICBuYW1lOiAvKiBTQUZFVFk6IFR5cGVTY3JpcHQgQVNUIO2MjOyLseqzvCDrj5nquLDtmZQg7J6F66ClIOqzhOyVveydtCDsnbQg6rCS7J2YIO2DgOyeheydhCDrs7TsnqXtlZzri6QuICovIG1lbWJlclxuICAgICAgICAgICAgICAgIC5wYXJhbWV0ZXJzWzBdLm5hbWUgYXMgdHMuSWRlbnRpZmllcixcbiAgICAgICAgICAgICAgdHlwZTogLyogU0FGRVRZOiBUeXBlU2NyaXB0IEFTVCDtjIzsi7Hqs7wg64+Z6riw7ZmUIOyeheugpSDqs4Tslb3snbQg7J20IOqwkuydmCDtg4DsnoXsnYQg67O07J6l7ZWc64ukLiAqLyBtZW1iZXJcbiAgICAgICAgICAgICAgICAucGFyYW1ldGVyc1swXS50eXBlIGFzIHRzLlR5cGVOb2RlLFxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHJldHVybiByZXNvbHZlUGFyYW1EZWMoe1xuICAgICAgICAgICAgICBuYW1lOiAvKiBTQUZFVFk6IFR5cGVTY3JpcHQgQVNUIO2MjOyLseqzvCDrj5nquLDtmZQg7J6F66ClIOqzhOyVveydtCDsnbQg6rCS7J2YIO2DgOyeheydhCDrs7TsnqXtlZzri6QuICovIHtcbiAgICAgICAgICAgICAgICBlc2NhcGVkVGV4dDogYFske3Jlcy5uYW1lfSR7cmVzLm9wdGlvbmFsID8gXCI/XCIgOiBcIlwifTogJHtyZXMudHlwZX1dYCxcbiAgICAgICAgICAgICAgfSBhcyB0cy5JZGVudGlmaWVyLFxuICAgICAgICAgICAgICB0eXBlOiBtZW1iZXIudHlwZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gcmVzb2x2ZVBhcmFtRGVjKHtcbiAgICAgICAgICAgICAgbmFtZTogLyogU0FGRVRZOiBUeXBlU2NyaXB0IEFTVCDtjIzsi7Hqs7wg64+Z6riw7ZmUIOyeheugpSDqs4Tslb3snbQg7J20IOqwkuydmCDtg4DsnoXsnYQg67O07J6l7ZWc64ukLiAqLyAvKiBTQUZFVFk6IFR5cGVTY3JpcHQgQVNUIO2MjOyLseqzvCDrj5nquLDtmZQg7J6F66ClIOqzhOyVveydtCDsnbQg6rCS7J2YIO2DgOyeheydhCDrs7TsnqXtlZzri6QuICovIChcbiAgICAgICAgICAgICAgICBtZW1iZXIgYXMgdHMuUHJvcGVydHlTaWduYXR1cmVcbiAgICAgICAgICAgICAgKS5uYW1lIGFzIHRzLklkZW50aWZpZXIsXG4gICAgICAgICAgICAgIHR5cGU6IC8qIFNBRkVUWTogVHlwZVNjcmlwdCBBU1Qg7YyM7Iux6rO8IOuPmeq4sO2ZlCDsnoXroKUg6rOE7JW97J20IOydtCDqsJLsnZgg7YOA7J6F7J2EIOuztOyepe2VnOuLpC4gKi8gLyogU0FGRVRZOiBUeXBlU2NyaXB0IEFTVCDtjIzsi7Hqs7wg64+Z6riw7ZmUIOyeheugpSDqs4Tslb3snbQg7J20IOqwkuydmCDtg4DsnoXsnYQg67O07J6l7ZWc64ukLiAqLyAoXG4gICAgICAgICAgICAgICAgbWVtYmVyIGFzIHRzLlByb3BlcnR5U2lnbmF0dXJlXG4gICAgICAgICAgICAgICkudHlwZSBhcyB0cy5UeXBlTm9kZSxcbiAgICAgICAgICAgICAgb3B0aW9uYWw6XG4gICAgICAgICAgICAgICAgLyogU0FGRVRZOiBUeXBlU2NyaXB0IEFTVCDtjIzsi7Hqs7wg64+Z6riw7ZmUIOyeheugpSDqs4Tslb3snbQg7J20IOqwkuydmCDtg4DsnoXsnYQg67O07J6l7ZWc64ukLiAqLyAoXG4gICAgICAgICAgICAgICAgICBtZW1iZXIgYXMgdHMuUHJvcGVydHlTaWduYXR1cmVcbiAgICAgICAgICAgICAgICApLnF1ZXN0aW9uVG9rZW4gIT09IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSksXG4gICAgICB9O1xuICAgIH1cbiAgICBjYXNlIHRzLlN5bnRheEtpbmQuVHlwZVJlZmVyZW5jZTpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHQ6IFwicmVmXCIsXG4gICAgICAgIGlkOiAvKiBTQUZFVFk6IFR5cGVTY3JpcHQgQVNUIO2MjOyLseqzvCDrj5nquLDtmZQg7J6F66ClIOqzhOyVveydtCDsnbQg6rCS7J2YIO2DgOyeheydhCDrs7TsnqXtlZzri6QuICovIC8qIFNBRkVUWTogVHlwZVNjcmlwdCBBU1Qg7YyM7Iux6rO8IOuPmeq4sO2ZlCDsnoXroKUg6rOE7JW97J20IOydtCDqsJLsnZgg7YOA7J6F7J2EIOuztOyepe2VnOuLpC4gKi8gKFxuICAgICAgICAgICh0eXBlTm9kZSBhcyB0cy5UeXBlUmVmZXJlbmNlTm9kZSkudHlwZU5hbWUgYXMgdHMuSWRlbnRpZmllclxuICAgICAgICApLmVzY2FwZWRUZXh0LnRvU3RyaW5nKCksXG4gICAgICAgIGFyZ3M6IC8qIFNBRkVUWTogVHlwZVNjcmlwdCBBU1Qg7YyM7Iux6rO8IOuPmeq4sO2ZlCDsnoXroKUg6rOE7JW97J20IOydtCDqsJLsnZgg7YOA7J6F7J2EIOuztOyepe2VnOuLpC4gKi8gKFxuICAgICAgICAgIHR5cGVOb2RlIGFzIHRzLlR5cGVSZWZlcmVuY2VOb2RlXG4gICAgICAgICkudHlwZUFyZ3VtZW50cz8ubWFwKCh0eXBlQXJnKSA9PiByZXNvbHZlVHlwZU5vZGUodHlwZUFyZykpLFxuICAgICAgfTtcbiAgICBjYXNlIHRzLlN5bnRheEtpbmQuVW5pb25UeXBlOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdDogXCJ1bmlvblwiLFxuICAgICAgICB0eXBlczogLyogU0FGRVRZOiBUeXBlU2NyaXB0IEFTVCDtjIzsi7Hqs7wg64+Z6riw7ZmUIOyeheugpSDqs4Tslb3snbQg7J20IOqwkuydmCDtg4DsnoXsnYQg67O07J6l7ZWc64ukLiAqLyAoXG4gICAgICAgICAgdHlwZU5vZGUgYXMgdHMuVW5pb25UeXBlTm9kZVxuICAgICAgICApLnR5cGVzLm1hcCgodHlwZSkgPT4gcmVzb2x2ZVR5cGVOb2RlKHR5cGUpKSxcbiAgICAgIH07XG4gICAgY2FzZSB0cy5TeW50YXhLaW5kLkludGVyc2VjdGlvblR5cGU6XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0OiBcImludGVyc2VjdGlvblwiLFxuICAgICAgICB0eXBlczogLyogU0FGRVRZOiBUeXBlU2NyaXB0IEFTVCDtjIzsi7Hqs7wg64+Z6riw7ZmUIOyeheugpSDqs4Tslb3snbQg7J20IOqwkuydmCDtg4DsnoXsnYQg67O07J6l7ZWc64ukLiAqLyAoXG4gICAgICAgICAgdHlwZU5vZGUgYXMgdHMuSW50ZXJzZWN0aW9uVHlwZU5vZGVcbiAgICAgICAgKS50eXBlcy5tYXAoKHR5cGUpID0+IHJlc29sdmVUeXBlTm9kZSh0eXBlKSksXG4gICAgICB9O1xuICAgIGNhc2UgdHMuU3ludGF4S2luZC5JbmRleGVkQWNjZXNzVHlwZTpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHQ6IFwiaW5kZXhlZC1hY2Nlc3NcIixcbiAgICAgICAgb2JqZWN0OiByZXNvbHZlVHlwZU5vZGUoXG4gICAgICAgICAgLyogU0FGRVRZOiBUeXBlU2NyaXB0IEFTVCDtjIzsi7Hqs7wg64+Z6riw7ZmUIOyeheugpSDqs4Tslb3snbQg7J20IOqwkuydmCDtg4DsnoXsnYQg67O07J6l7ZWc64ukLiAqLyAoXG4gICAgICAgICAgICB0eXBlTm9kZSBhcyB0cy5JbmRleGVkQWNjZXNzVHlwZU5vZGVcbiAgICAgICAgICApLm9iamVjdFR5cGUsXG4gICAgICAgICksXG4gICAgICAgIGluZGV4OiByZXNvbHZlVHlwZU5vZGUoXG4gICAgICAgICAgLyogU0FGRVRZOiBUeXBlU2NyaXB0IEFTVCDtjIzsi7Hqs7wg64+Z6riw7ZmUIOyeheugpSDqs4Tslb3snbQg7J20IOqwkuydmCDtg4DsnoXsnYQg67O07J6l7ZWc64ukLiAqLyAoXG4gICAgICAgICAgICB0eXBlTm9kZSBhcyB0cy5JbmRleGVkQWNjZXNzVHlwZU5vZGVcbiAgICAgICAgICApLmluZGV4VHlwZSxcbiAgICAgICAgKSxcbiAgICAgIH07XG4gICAgY2FzZSB0cy5TeW50YXhLaW5kLlR1cGxlVHlwZTpcbiAgICAgIGlmICh0cy5pc1R1cGxlVHlwZU5vZGUodHlwZU5vZGUpKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdDogXCJ0dXBsZS10eXBlXCIsXG4gICAgICAgICAgZWxlbWVudHM6IHR5cGVOb2RlLmVsZW1lbnRzLm1hcCgoZWxlbSkgPT4gcmVzb2x2ZVR5cGVOb2RlKGVsZW0pKSxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgdHMuU3ludGF4S2luZC5QYXJlbnRoZXNpemVkVHlwZTpcbiAgICAgIC8vIOq0hO2YuOuhnCDrrLbsnbgg7YOA7J6FICjsmIg6IChBICYgQilbXSDsl5DshJwgKEEgJiBCKSlcbiAgICAgIC8vIOuCtOu2gCDtg4DsnoXsnYQg7J6s6reA7KCB7Jy866GcIHJlc29sdmVcbiAgICAgIHJldHVybiByZXNvbHZlVHlwZU5vZGUoXG4gICAgICAgIC8qIFNBRkVUWTogVHlwZVNjcmlwdCBBU1Qg7YyM7Iux6rO8IOuPmeq4sO2ZlCDsnoXroKUg6rOE7JW97J20IOydtCDqsJLsnZgg7YOA7J6F7J2EIOuztOyepe2VnOuLpC4gKi8gKFxuICAgICAgICAgIHR5cGVOb2RlIGFzIHRzLlBhcmVudGhlc2l6ZWRUeXBlTm9kZVxuICAgICAgICApLnR5cGUsXG4gICAgICApO1xuXG4gICAgY2FzZSB0cy5TeW50YXhLaW5kLkZ1bmN0aW9uVHlwZTpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHQ6IFwiZnVuY3Rpb25cIixcbiAgICAgICAgcGFyYW1ldGVyczpcbiAgICAgICAgICAvKiBTQUZFVFk6IFR5cGVTY3JpcHQgQVNUIO2MjOyLseqzvCDrj5nquLDtmZQg7J6F66ClIOqzhOyVveydtCDsnbQg6rCS7J2YIO2DgOyeheydhCDrs7TsnqXtlZzri6QuICovIChcbiAgICAgICAgICAgIHR5cGVOb2RlIGFzIHRzLkZ1bmN0aW9uVHlwZU5vZGVcbiAgICAgICAgICApLnBhcmFtZXRlcnMubWFwKChwYXJhbSkgPT4gKHtcbiAgICAgICAgICAgIG5hbWU6IHBhcmFtLm5hbWUuZ2V0VGV4dCgpLFxuICAgICAgICAgICAgdHlwZTogcGFyYW0udHlwZSA/IHJlc29sdmVUeXBlTm9kZShwYXJhbS50eXBlKSA6IFwidW5rbm93blwiLFxuICAgICAgICAgICAgb3B0aW9uYWw6IHBhcmFtLnF1ZXN0aW9uVG9rZW4gIT09IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGRlZmF1bHREZWY6IHVuZGVmaW5lZCxcbiAgICAgICAgICB9KSksXG4gICAgICAgIHJldHVyblR5cGU6IHJlc29sdmVUeXBlTm9kZShcbiAgICAgICAgICAvKiBTQUZFVFk6IFR5cGVTY3JpcHQgQVNUIO2MjOyLseqzvCDrj5nquLDtmZQg7J6F66ClIOqzhOyVveydtCDsnbQg6rCS7J2YIO2DgOyeheydhCDrs7TsnqXtlZzri6QuICovIChcbiAgICAgICAgICAgIHR5cGVOb2RlIGFzIHRzLkZ1bmN0aW9uVHlwZU5vZGVcbiAgICAgICAgICApLnR5cGUsXG4gICAgICAgICksXG4gICAgICB9O1xuICAgIGNhc2UgdW5kZWZpbmVkOlxuICAgICAgdGhyb3cgbmV3IEVycm9yKGB0eXBlTm9kZSB1bmRlZmluZWRgKTtcbiAgfVxuXG4gIGNvbnNvbGUuZGVidWcodHlwZU5vZGUpO1xuICB0aHJvdyBuZXcgRXJyb3IoYOyVjCDsiJgg7JeG64qUIFN5bnRheEtpbmQgJHt0eXBlTm9kZS5raW5kfWApO1xufVxuXG5mdW5jdGlvbiByZXNvbHZlUGFyYW1EZWMoXG4gIHBhcmFtRGVjOiB7XG4gICAgbmFtZTogdHMuQmluZGluZ05hbWU7XG4gICAgdHlwZTogdHMuVHlwZU5vZGU7XG4gICAgb3B0aW9uYWw/OiBib29sZWFuO1xuICAgIGRlZmF1bHREZWY/OiBzdHJpbmc7XG4gIH0sXG4gIGluZGV4OiBudW1iZXIgPSAwLFxuKTogQXBpUGFyYW0ge1xuICBjb25zdCBuYW1lID1cbiAgICAvKiBTQUZFVFk6IFR5cGVTY3JpcHQgQVNUIO2MjOyLseqzvCDrj5nquLDtmZQg7J6F66ClIOqzhOyVveydtCDsnbQg6rCS7J2YIO2DgOyeheydhCDrs7TsnqXtlZzri6QuICovIHBhcmFtRGVjLm5hbWUgYXMgdHMuSWRlbnRpZmllcjtcbiAgY29uc3QgdHlwZSA9IHJlc29sdmVUeXBlTm9kZShwYXJhbURlYy50eXBlKTtcblxuICBpZiAobmFtZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgY29uc29sZS5kZWJ1Zyh7IG5hbWUsIHR5cGUsIHBhcmFtRGVjIH0pO1xuICB9XG5cbiAgY29uc3QgcmVzdWx0OiBBcGlQYXJhbSA9IHtcbiAgICBuYW1lOiBuYW1lLmVzY2FwZWRUZXh0ID8gbmFtZS5lc2NhcGVkVGV4dC50b1N0cmluZygpIDogYG5vbmFtZUF0JHtpbmRleH1gLFxuICAgIHR5cGUsXG4gICAgb3B0aW9uYWw6IHBhcmFtRGVjLm9wdGlvbmFsID09PSB0cnVlLFxuICAgIGRlZmF1bHREZWY6IHBhcmFtRGVjPy5kZWZhdWx0RGVmLFxuICB9O1xuXG4gIC8vIOq1rOyhsOu2hO2VtO2VoOuLueydmCDqsr3smrAg7YOA7J6F7J2066aEIOyCrOyaqVxuICBpZiAoXG4gICAgdHMuaXNPYmplY3RCaW5kaW5nUGF0dGVybihuYW1lKSAmJlxuICAgIHRzLmlzVHlwZVJlZmVyZW5jZU5vZGUocGFyYW1EZWMudHlwZSkgJiZcbiAgICB0cy5pc0lkZW50aWZpZXIocGFyYW1EZWMudHlwZS50eXBlTmFtZSlcbiAgKSB7XG4gICAgcmVzdWx0Lm5hbWUgPSBpbmZsZWN0aW9uLmNhbWVsaXplKHBhcmFtRGVjLnR5cGUudHlwZU5hbWUudGV4dCwgdHJ1ZSk7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5mdW5jdGlvbiBwcmludE5vZGUobm9kZTogdHMuTm9kZSB8IHVuZGVmaW5lZCwgc291cmNlRmlsZTogdHMuU291cmNlRmlsZSk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGlmIChub2RlID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgY29uc3QgcHJpbnRlciA9IHRzLmNyZWF0ZVByaW50ZXIoeyBuZXdMaW5lOiB0cy5OZXdMaW5lS2luZC5MaW5lRmVlZCB9KTtcbiAgcmV0dXJuIHByaW50ZXIucHJpbnROb2RlKHRzLkVtaXRIaW50LlVuc3BlY2lmaWVkLCBub2RlLCBzb3VyY2VGaWxlKTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFnQ0EsZUFBc0IsaUJBQWlCLFVBQWdEO0NBQ3JGLElBQUksQ0FBQyxTQUFTLFNBQVMsS0FBSyxHQUMxQixNQUFNLElBQUksTUFDUixHQUFHLFNBQVMsOEdBQ2Q7Q0FHRixNQUFNLGFBQWEsR0FBRyxpQkFDcEIsV0FDQyxNQUFNLFNBQVMsUUFBUSxFQUFBLENBQUcsU0FBUyxHQUNwQyxHQUFHLGFBQWEsTUFDbEI7Q0FFQSxNQUFNLFVBQTBCLENBQUM7Q0FDakMsSUFBSSxZQUFvQjtDQUN4QixJQUFJLGFBQXFCO0NBQ3pCLE1BQU0sV0FBVyxTQUFrQjtFQUNqQyxJQUFJLEdBQUcsbUJBQW1CLElBQUksR0FDNUI7T0FBSSxLQUFLLFFBQVEsR0FBRyxhQUFhLEtBQUssSUFBSSxHQUN4QyxZQUFZLEtBQUssS0FBSyxZQUFZLFNBQVMsQ0FBQyxDQUFDLFFBQVEsVUFBVSxFQUFFO0VBQ25FO0VBRUYsSUFBSSxHQUFHLG9CQUFvQixJQUFJLEdBQUc7R0FDaEMsSUFBSSxHQUFHLGFBQWEsS0FBSyxJQUFJLEdBQUc7SUFDOUIsYUFBYSxLQUFLLEtBQUssWUFBWSxTQUFTO0lBQzVDLG1CQUFtQixVQUFVO0dBQy9CO0dBRUEsTUFBTSxrQkFBNEMsS0FBSyxrQkFBa0IsQ0FBQyxFQUFBLENBQUcsS0FDMUUsY0FBYztJQUNiLE1BQU0sS0FBSztJQUVYLE9BQU87S0FDTCxHQUFHO0tBQ0gsSUFBSSxHQUFHLEtBQUssWUFBWSxTQUFTO0tBQ2pDLFlBQVksR0FBRyxhQUFhLGdCQUFnQixHQUFHLFVBQVUsSUFBSTtJQUMvRDtHQUNGLENBQ0Y7R0FDQSxNQUFNLGFBQXlCLEtBQUssV0FBVyxLQUFLLFVBQVUsVUFBVTtJQUN0RSxNQUFNLGFBQWEsVUFBVSxTQUFTLGFBQWEsVUFBVTtJQUk3RCxPQUFPLGdCQUNMO0tBQ0UsTUFBTSxTQUFTO0tBQ2YsTUFBaUUsU0FBUztLQUMxRSxVQUFVLFNBQVMsa0JBQWtCLFVBQWEsU0FBUyxnQkFBZ0I7S0FDM0U7SUFDRixHQUNBLEtBQ0Y7R0FDRixDQUFDO0dBQ0QsSUFBSSxLQUFLLFNBQVMsUUFDaEIsTUFBTSxJQUFJLE1BQU0sc0JBQXNCLFVBQVUsR0FBRyxZQUFZO0dBRWpFLE1BQU0sYUFBYSxnQkFBZ0IsS0FBSyxJQUFJO0dBQzVDLE1BQU0sb0JBQW9CLHNCQUFzQixJQUFJO0dBRXBELFFBQVEsS0FBSztJQUNYO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtHQUNGLENBQUM7RUFDSDtFQUNBLEdBQUcsYUFBYSxNQUFNLE9BQU87Q0FDL0I7Q0FDQSxRQUFRLFVBQVU7Q0FFbEIsSUFBSSxRQUFRLFdBQVcsR0FDckIsT0FBTyxDQUFDO0NBSVYsTUFBTSxtQkFBbUIsZUFBZSxRQUFRLFFBQVE7RUFDdEQsT0FBTyxRQUFRLE1BQ1osV0FBVyxPQUFPLGNBQWMsSUFBSSxhQUFhLE9BQU8sZUFBZSxJQUFJLFVBQzlFO0NBQ0YsQ0FBQztDQUNELElBQUksaUJBQWlCLFdBQVcsR0FLOUIsT0FBTyxDQUFDO0NBMEJWLE9BdEJxQixpQkFBaUIsS0FBSyxRQUFRO0VBQ2pELE1BQU0sY0FBYyxRQUFRLE1BQ3pCLFdBQVcsT0FBTyxjQUFjLElBQUksYUFBYSxPQUFPLGVBQWUsSUFBSSxVQUM5RTtFQUNBLElBQUksQ0FBQyxhQUNILE1BQU0sSUFBSSxNQUFNLE9BQU8sSUFBSSxVQUFVLEdBQUcsSUFBSSxXQUFXLGdCQUFnQixVQUFVO0VBRW5GLE1BQU0sbUJBQW1CLElBQUksbUJBQ3pCO0dBQ0UsR0FBRyxJQUFJO0dBQ1AsR0FBRyxZQUFZO0VBQ2pCLElBQ0E7RUFFSixPQUFPO0dBQ0wsR0FBRztHQUNIO0dBQ0EsZ0JBQWdCLGFBQWE7R0FDN0IsWUFBWSxhQUFhO0dBQ3pCLFlBQVksYUFBYTtFQUMzQjtDQUNGLENBQ087QUFDVDtBQUVBLFNBQVMsc0JBQXNCLE1BQStDO0NBQzVFLE1BQU0saUJBQWlCLGlDQUFpQyxNQUFNLFdBQVc7Q0FDekUsSUFBSSxDQUFDLGdCQUNILE9BQU8sQ0FBQztDQUdWLE1BQU0sT0FBMEIsQ0FBQztDQUNqQyxLQUFLLE1BQU0sWUFBWSxlQUFlLFlBQVk7RUFDaEQsSUFBSSxDQUFDLEdBQUcscUJBQXFCLFFBQVEsR0FDbkM7RUFHRixNQUFNLGVBQWUsb0JBQW9CLFNBQVMsSUFBSTtFQUN0RCxJQUFJLGlCQUFpQixlQUFlLGlCQUFpQixZQUNuRDtFQUdGLE1BQU0sVUFBVSx3QkFBd0IsU0FBUyxXQUFXO0VBQzVELElBQUksQ0FBQyxTQUNIO0VBR0YsSUFBSSxpQkFBaUIsYUFDbkIsS0FBSyxtQkFBbUI7T0FFeEIsS0FBSyxrQkFBa0I7Q0FFM0I7Q0FFQSxPQUFPO0FBQ1Q7QUFFQSxTQUFTLGlDQUNQLE1BQ0EsZUFDd0M7Q0FDeEMsS0FBSyxNQUFNLFlBQVksS0FBSyxhQUFhLENBQUMsR0FBRztFQUMzQyxJQUFJLENBQUMsR0FBRyxZQUFZLFFBQVEsR0FDMUI7RUFHRixNQUFNLGFBQWEsU0FBUztFQUM1QixJQUFJLENBQUMsR0FBRyxpQkFBaUIsVUFBVSxHQUNqQztFQUdGLElBQUksQ0FBQyxHQUFHLGFBQWEsV0FBVyxVQUFVLEtBQUssV0FBVyxXQUFXLFNBQVMsZUFDNUU7RUFHRixNQUFNLENBQUMsWUFBWSxXQUFXO0VBQzlCLElBQUksWUFBWSxHQUFHLDBCQUEwQixRQUFRLEdBQ25ELE9BQU87Q0FFWDtBQUdGO0FBRUEsU0FBUyxvQkFBb0IsTUFBMkM7Q0FDdEUsSUFBSSxHQUFHLGFBQWEsSUFBSSxLQUFLLEdBQUcsZ0JBQWdCLElBQUksS0FBSyxHQUFHLGlCQUFpQixJQUFJLEdBQy9FLE9BQU8sS0FBSztBQUloQjtBQUVBLFNBQVMsd0JBQXdCLFlBQXlEO0NBQ3hGLElBQUksR0FBRyxhQUFhLFVBQVUsR0FDNUIsT0FBTztFQUNMLEdBQUc7RUFDSCxJQUFJLFdBQVc7Q0FDakI7Q0FHRixJQUNFLEdBQUcsZUFBZSxVQUFVLEtBQzVCLEdBQUcsMEJBQTBCLFVBQVUsS0FDdkMsR0FBRyxvQkFBb0IsVUFBVSxLQUNqQyxHQUFHLDBCQUEwQixVQUFVLEdBRXZDLE9BQU8sd0JBQXdCLFdBQVcsVUFBVTtBQUl4RDtBQUVBLFNBQVMsZ0JBQWdCLFVBQXFDO0NBQzVELFFBQVEsVUFBVSxNQUFsQjtFQUNFLEtBQUssR0FBRyxXQUFXLFlBQ2pCLE9BQU87RUFDVCxLQUFLLEdBQUcsV0FBVyxnQkFDakIsT0FBTztFQUNULEtBQUssR0FBRyxXQUFXLGVBQ2pCLE9BQU87RUFDVCxLQUFLLEdBQUcsV0FBVyxlQUNqQixPQUFPO0VBQ1QsS0FBSyxHQUFHLFdBQVcsZ0JBQ2pCLE9BQU87RUFDVCxLQUFLLEdBQUcsV0FBVyxrQkFDakIsT0FBTztFQUNULEtBQUssR0FBRyxXQUFXLGFBQ2pCLE9BQU87RUFDVCxLQUFLLEdBQUcsV0FBVyxhQUNqQixPQUFPO0VBQ1QsS0FBSyxHQUFHLFdBQVcsYUFBYTtHQUM5QixNQUFNLFVBRUYsU0FDQTtHQUNKLElBQUksR0FBRyxnQkFBZ0IsT0FBTyxHQUM1QixPQUFPO0lBQ0wsR0FBRztJQUNILE9BQU8sUUFBUTtHQUNqQjtRQUNLLElBQUksR0FBRyxpQkFBaUIsT0FBTyxHQUNwQyxPQUFPO0lBQ0wsR0FBRztJQUNILE9BQU8sT0FBTyxRQUFRLElBQUk7R0FDNUI7UUFDSztJQUNMLElBQUksUUFBUSxTQUFTLEdBQUcsV0FBVyxhQUNqQyxPQUFPO1NBQ0YsSUFBSSxRQUFRLFNBQVMsR0FBRyxXQUFXLGtCQUN4QyxPQUFPO1NBQ0YsSUFBSSxRQUFRLFNBQVMsR0FBRyxXQUFXLGFBQ3hDLE9BQU87U0FDRixJQUFJLFFBQVEsU0FBUyxHQUFHLFdBQVcsY0FDeEMsT0FBTztJQUVULE1BQU0sSUFBSSxNQUFNLFlBQVk7R0FDOUI7RUFDRjtFQUNBLEtBQUssR0FBRyxXQUFXLFdBR2pCLE9BQU87R0FDTCxHQUFHO0dBQ0gsY0FBYyxnQkFBZ0JBLFNBQVEsV0FBVztFQUNuRDtFQUVGLEtBQUssR0FBRyxXQUFXLGFBR2pCLE9BQU87R0FDTCxHQUFHO0dBQ0gsT0FBT0MsU0FBWSxRQUFRLEtBQUssV0FBVztJQUN6QyxJQUFJLEdBQUcsNEJBQTRCLE1BQU0sR0FBRztLQUMxQyxPQUFPLE9BQU8sV0FBVyxFQUFFO0tBQzNCLE1BQU0sTUFBTSxnQkFBZ0I7TUFDMUIsTUFBaUUsT0FDOUQsV0FBVyxFQUFFLENBQUM7TUFDakIsTUFBaUUsT0FDOUQsV0FBVyxFQUFFLENBQUM7S0FDbkIsQ0FBQztLQUVELE9BQU8sZ0JBQWdCO01BQ3JCLE1BQWlFLEVBQy9ELGFBQWEsSUFBSSxJQUFJLE9BQU8sSUFBSSxXQUFXLE1BQU0sR0FBRyxJQUFJLElBQUksS0FBSyxHQUNuRTtNQUNBLE1BQU0sT0FBTztLQUNmLENBQUM7SUFDSCxPQUNFLE9BQU8sZ0JBQWdCO0tBQ3JCLE1BQ0UsT0FDQTtLQUNGLE1BQ0UsT0FDQTtLQUNGLFVBRUksT0FDQSxrQkFBa0I7SUFDeEIsQ0FBQztHQUVMLENBQUM7RUFDSDtFQUVGLEtBQUssR0FBRyxXQUFXLGVBQ2pCLE9BQU87R0FDTCxHQUFHO0dBQ0gsSUFDRyxTQUFrQyxTQUNuQyxZQUFZLFNBQVM7R0FDdkIsTUFDRSxTQUNBLGVBQWUsS0FBSyxZQUFZLGdCQUFnQixPQUFPLENBQUM7RUFDNUQ7RUFDRixLQUFLLEdBQUcsV0FBVyxXQUNqQixPQUFPO0dBQ0wsR0FBRztHQUNILE9BQ0UsU0FDQSxNQUFNLEtBQUssU0FBUyxnQkFBZ0IsSUFBSSxDQUFDO0VBQzdDO0VBQ0YsS0FBSyxHQUFHLFdBQVcsa0JBQ2pCLE9BQU87R0FDTCxHQUFHO0dBQ0gsT0FDRSxTQUNBLE1BQU0sS0FBSyxTQUFTLGdCQUFnQixJQUFJLENBQUM7RUFDN0M7RUFDRixLQUFLLEdBQUcsV0FBVyxtQkFDakIsT0FBTztHQUNMLEdBQUc7R0FDSCxRQUFRLGdCQUVKLFNBQ0EsVUFDSjtHQUNBLE9BQU8sZ0JBRUgsU0FDQSxTQUNKO0VBQ0Y7RUFDRixLQUFLLEdBQUcsV0FBVztHQUNqQixJQUFJLEdBQUcsZ0JBQWdCLFFBQVEsR0FDN0IsT0FBTztJQUNMLEdBQUc7SUFDSCxVQUFVLFNBQVMsU0FBUyxLQUFLLFNBQVMsZ0JBQWdCLElBQUksQ0FBQztHQUNqRTtHQUVGO0VBQ0YsS0FBSyxHQUFHLFdBQVcsbUJBR2pCLE9BQU8sZ0JBRUgsU0FDQSxJQUNKO0VBRUYsS0FBSyxHQUFHLFdBQVcsY0FDakIsT0FBTztHQUNMLEdBQUc7R0FDSCxZQUVJLFNBQ0EsV0FBVyxLQUFLLFdBQVc7SUFDM0IsTUFBTSxNQUFNLEtBQUssUUFBUTtJQUN6QixNQUFNLE1BQU0sT0FBTyxnQkFBZ0IsTUFBTSxJQUFJLElBQUk7SUFDakQsVUFBVSxNQUFNLGtCQUFrQjtJQUNsQyxZQUFZO0dBQ2QsRUFBRTtHQUNKLFlBQVksZ0JBRVIsU0FDQSxJQUNKO0VBQ0Y7RUFDRixLQUFLLFFBQ0gsTUFBTSxJQUFJLE1BQU0sb0JBQW9CO0NBQ3hDO0NBRUEsUUFBUSxNQUFNLFFBQVE7Q0FDdEIsTUFBTSxJQUFJLE1BQU0scUJBQXFCLFNBQVMsTUFBTTtBQUN0RDtBQUVBLFNBQVMsZ0JBQ1AsVUFNQSxRQUFnQixHQUNOO0NBQ1YsTUFBTSxPQUN1RCxTQUFTO0NBQ3RFLE1BQU0sT0FBTyxnQkFBZ0IsU0FBUyxJQUFJO0NBRTFDLElBQUksU0FBUyxRQUNYLFFBQVEsTUFBTTtFQUFFO0VBQU07RUFBTTtDQUFTLENBQUM7Q0FHeEMsTUFBTSxTQUFtQjtFQUN2QixNQUFNLEtBQUssY0FBYyxLQUFLLFlBQVksU0FBUyxJQUFJLFdBQVc7RUFDbEU7RUFDQSxVQUFVLFNBQVMsYUFBYTtFQUNoQyxZQUFZLFVBQVU7Q0FDeEI7Q0FHQSxJQUNFLEdBQUcsdUJBQXVCLElBQUksS0FDOUIsR0FBRyxvQkFBb0IsU0FBUyxJQUFJLEtBQ3BDLEdBQUcsYUFBYSxTQUFTLEtBQUssUUFBUSxHQUV0QyxPQUFPLE9BQU8sV0FBVyxTQUFTLFNBQVMsS0FBSyxTQUFTLE1BQU0sSUFBSTtDQUdyRSxPQUFPO0FBQ1Q7QUFFQSxTQUFTLFVBQVUsTUFBMkIsWUFBK0M7Q0FDM0YsSUFBSSxTQUFTLFFBQ1g7Q0FJRixPQURnQixHQUFHLGNBQWMsRUFBRSxTQUFTLEdBQUcsWUFBWSxTQUFTLENBQzdELENBQUEsQ0FBUSxVQUFVLEdBQUcsU0FBUyxhQUFhLE1BQU0sVUFBVTtBQUNwRTs7Q0E5YmtELGdCQUFBO0NBR0csZUFBQSJ9
|
package/dist/syncer/checksum.js
CHANGED
|
@@ -9,7 +9,7 @@ import { createReadStream } from "fs";
|
|
|
9
9
|
import path from "path";
|
|
10
10
|
import crypto from "crypto";
|
|
11
11
|
import equal from "fast-deep-equal";
|
|
12
|
-
|
|
12
|
+
// src/syncer/checksum.ts
|
|
13
13
|
/**
|
|
14
14
|
* 체크섬 파일에 저장된 내용과 현재 실제 파일의 체크섬을 비교하여 변경된 파일을 찾습니다.
|
|
15
15
|
* @returns 변경된 파일 경로 배열. 프로젝트 루트부터 슬래시로 시작합니다. 예시: "/src/application/user/user.model.ts"
|
|
@@ -26,7 +26,8 @@ async function findChangedFilesUsingChecksums() {
|
|
|
26
26
|
*/
|
|
27
27
|
async function renewChecksums() {
|
|
28
28
|
const calculatedChecksums = await getCurrentChecksums();
|
|
29
|
-
|
|
29
|
+
const savedChecksums = await getPreviousChecksums();
|
|
30
|
+
if (equal(calculatedChecksums, savedChecksums)) return;
|
|
30
31
|
await saveChecksums(calculatedChecksums);
|
|
31
32
|
}
|
|
32
33
|
async function getCurrentChecksums() {
|
|
@@ -78,8 +79,7 @@ var init_checksum = __esmMin((() => {
|
|
|
78
79
|
init_file_patterns();
|
|
79
80
|
init_filesystem_dependencies();
|
|
80
81
|
}));
|
|
81
|
-
//#endregion
|
|
82
82
|
init_checksum();
|
|
83
83
|
export { findChangedFilesUsingChecksums, init_checksum, renewChecksums };
|
|
84
84
|
|
|
85
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tzdW0uanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3N5bmNlci9jaGVja3N1bS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY3J5cHRvIGZyb20gXCJjcnlwdG9cIjtcbmltcG9ydCB7IGNyZWF0ZVJlYWRTdHJlYW0sIHR5cGUgUGF0aExpa2UgfSBmcm9tIFwiZnNcIjtcbmltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCI7XG5cbmltcG9ydCBlcXVhbCBmcm9tIFwiZmFzdC1kZWVwLWVxdWFsXCI7XG5pbXBvcnQgeyBpc0VxdWFsIH0gZnJvbSBcInJhZGFzaGlcIjtcblxuaW1wb3J0IHsgU29uYW11IH0gZnJvbSBcIi4uL2FwaS9zb25hbXVcIjtcbmltcG9ydCB7IGdsb2JBc3luYyB9IGZyb20gXCIuLi91dGlscy9hc3luYy11dGlsc1wiO1xuaW1wb3J0IHsgdHlwZSBBYnNvbHV0ZVBhdGgsIHR5cGUgQXBwUmVsYXRpdmVQYXRoIH0gZnJvbSBcIi4uL3V0aWxzL3BhdGgtdXRpbHNcIjtcbmltcG9ydCB7IGRpZmZlcmVuY2VXaXRoIH0gZnJvbSBcIi4uL3V0aWxzL3V0aWxzXCI7XG5pbXBvcnQgeyBnZXRDaGVja3N1bVBhdHRlcm5Hcm91cEluQWJzb2x1dGVQYXRoLCBHTE9CX0VYQ0xVREUgfSBmcm9tIFwiLi9maWxlLXBhdHRlcm5zXCI7XG5pbXBvcnQgeyBzeW5jZXJGaWxlRXhpc3RzLCBzeW5jZXJGaWxlc3lzdGVtIH0gZnJvbSBcIi4vZmlsZXN5c3RlbS1kZXBlbmRlbmNpZXNcIjtcblxudHlwZSBQYXRoQW5kQ2hlY2tzdW0gPSB7XG4gIHBhdGg6IEFic29sdXRlUGF0aDtcbiAgY2hlY2tzdW06IHN0cmluZztcbn07XG5cbi8qKlxuICog7LK07YGs7ISsIO2MjOydvOyXkCDsoIDsnqXrkJwg64K07Jqp6rO8IO2YhOyerCDsi6TsoJwg7YyM7J287J2YIOyytO2BrOyErOydhCDruYTqtZDtlZjsl6wg67OA6rK965CcIO2MjOydvOydhCDssL7sirXri4jri6QuXG4gKiBAcmV0dXJucyDrs4Dqsr3rkJwg7YyM7J28IOqyveuhnCDrsLDsl7QuIO2UhOuhnOygne2KuCDro6jtirjrtoDthLAg7Iqs656Y7Iuc66GcIOyLnOyeke2VqeuLiOuLpC4g7JiI7IucOiBcIi9zcmMvYXBwbGljYXRpb24vdXNlci91c2VyLm1vZGVsLnRzXCJcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZpbmRDaGFuZ2VkRmlsZXNVc2luZ0NoZWNrc3VtcygpOiBQcm9taXNlPEFic29sdXRlUGF0aFtdPiB7XG4gIGNvbnN0IGNhbGN1bGF0ZWRDaGVja3N1bXMgPSBhd2FpdCBnZXRDdXJyZW50Q2hlY2tzdW1zKCk7XG4gIGNvbnN0IHNhdmVkQ2hlY2tzdW1zID0gYXdhaXQgZ2V0UHJldmlvdXNDaGVja3N1bXMoKTtcblxuICBjb25zdCBpc1NhbWUgPSBlcXVhbChjYWxjdWxhdGVkQ2hlY2tzdW1zLCBzYXZlZENoZWNrc3Vtcyk7XG4gIGlmIChpc1NhbWUpIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICByZXR1cm4gZGlmZmVyZW5jZVdpdGgoY2FsY3VsYXRlZENoZWNrc3Vtcywgc2F2ZWRDaGVja3N1bXMsIGlzRXF1YWwpLm1hcCgocikgPT4gci5wYXRoKTtcbn1cblxuLyoqXG4gKiDssrTtgazshKzsnYQg6rCx7Iug7ZWp64uI64ukLlxuICog7ZiE7J6sIO2MjOydvOuTpOydmCDssrTtgazshKzsnYQg6rOE7IKw7ZW07IScIOq1rO2VnCDri6TsnYwsIOyytO2BrOyErCDtjIzsnbzsl5Ag7KCA7J6l65CcIOuCtOyaqeqzvCDri6TrpbTrqbQg7LK07YGs7ISsIO2MjOydvOydhCDqsLHsi6Dtlanri4jri6QuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZW5ld0NoZWNrc3VtcygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgY2FsY3VsYXRlZENoZWNrc3VtcyA9IGF3YWl0IGdldEN1cnJlbnRDaGVja3N1bXMoKTtcbiAgY29uc3Qgc2F2ZWRDaGVja3N1bXMgPSBhd2FpdCBnZXRQcmV2aW91c0NoZWNrc3VtcygpO1xuXG4gIGNvbnN0IGlzU2FtZSA9IGVxdWFsKGNhbGN1bGF0ZWRDaGVja3N1bXMsIHNhdmVkQ2hlY2tzdW1zKTtcbiAgaWYgKGlzU2FtZSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGF3YWl0IHNhdmVDaGVja3N1bXMoY2FsY3VsYXRlZENoZWNrc3Vtcyk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGdldEN1cnJlbnRDaGVja3N1bXMoKTogUHJvbWlzZTxQYXRoQW5kQ2hlY2tzdW1bXT4ge1xuICBjb25zdCBhbGxQYXRocyA9IChcbiAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIE9iamVjdC5lbnRyaWVzKGdldENoZWNrc3VtUGF0dGVybkdyb3VwSW5BYnNvbHV0ZVBhdGgoKSkubWFwKChbX2ZpbGVUeXBlLCBwYXR0ZXJuXSkgPT4ge1xuICAgICAgICByZXR1cm4gZ2xvYkFzeW5jKHBhdHRlcm4sIHsgZXhjbHVkZTogR0xPQl9FWENMVURFIH0pO1xuICAgICAgfSksXG4gICAgKVxuICApLmZsYXQoKTtcblxuICAvLyDrj5nsnbwg7YyM7J287J20IOyXrOufrCDtjKjthLTsl5Ag66ek7LmY65CgIOyImCDsnojsnLzrr4DroZwo7JiIOiBzZC5nZW5lcmF0ZWQudHPripQgZ2VuZXJhdGVk7JmAIHNkR2VuZXJhdGVk7JeQIOuqqOuRkCDrp6TsuZgpXG4gIC8vIOykkeuztSDsoJzqsbAg7ZuEIOyViOyglSDsoJXroKwuXG4gIGNvbnN0IGZpbGVQYXRocyA9XG4gICAgLyogU0FGRVRZOiBUeXBlU2NyaXB0IEFTVCDtjIzsi7Hqs7wg64+Z6riw7ZmUIOyeheugpSDqs4Tslb3snbQg7J20IOqwkuydmCDtg4DsnoXsnYQg67O07J6l7ZWc64ukLiAqLyBBcnJheS5mcm9tKFxuICAgICAgbmV3IFNldChhbGxQYXRocyksXG4gICAgKS50b1NvcnRlZCgpIGFzIEFic29sdXRlUGF0aFtdO1xuXG4gIHJldHVybiBhd2FpdCBQcm9taXNlLmFsbChcbiAgICBmaWxlUGF0aHMubWFwKGFzeW5jIChmaWxlUGF0aCkgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcGF0aDogZmlsZVBhdGgsXG4gICAgICAgIGNoZWNrc3VtOiBhd2FpdCBnZXRDaGVja3N1bU9mRmlsZShmaWxlUGF0aCksXG4gICAgICB9O1xuICAgIH0pLFxuICApO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRQcmV2aW91c0NoZWNrc3VtcygpOiBQcm9taXNlPFBhdGhBbmRDaGVja3N1bVtdPiB7XG4gIGNvbnN0IGNoZWNrc3VtRmlsZVBhdGggPSBnZXRDaGVja3N1bUZpbGVQYXRoKCk7XG4gIGlmICghKGF3YWl0IHN5bmNlckZpbGVFeGlzdHMoY2hlY2tzdW1GaWxlUGF0aCkpKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgdHJ5IHtcbiAgICBjb25zdCBwcmV2aW91c0NoZWNrc3VtcyA9XG4gICAgICAvKiBTQUZFVFk6IFR5cGVTY3JpcHQgQVNUIO2MjOyLseqzvCDrj5nquLDtmZQg7J6F66ClIOqzhOyVveydtCDsnbQg6rCS7J2YIO2DgOyeheydhCDrs7TsnqXtlZzri6QuICovIEpTT04ucGFyc2UoXG4gICAgICAgIGF3YWl0IHN5bmNlckZpbGVzeXN0ZW0ucmVhZEZpbGUoY2hlY2tzdW1GaWxlUGF0aCwgXCJ1dGYtOFwiKSxcbiAgICAgICkubWFwKChyOiB7IHBhdGg6IEFwcFJlbGF0aXZlUGF0aDsgY2hlY2tzdW06IHN0cmluZyB9KSA9PiAoe1xuICAgICAgICBwYXRoOiBwYXRoLmpvaW4oU29uYW11LmFwcFJvb3RQYXRoLCByLnBhdGgpLCAvLyDssrTtgazshKwg7YyM7J287JeQ7IScIOydveydhCDrlYw6IGFwcFJvb3Qg7IOB64yAIOqyveuhnCDihpIg7KCI64yAIOqyveuhnFxuICAgICAgICBjaGVja3N1bTogci5jaGVja3N1bSxcbiAgICAgIH0pKSBhcyBQYXRoQW5kQ2hlY2tzdW1bXTtcbiAgICByZXR1cm4gcHJldmlvdXNDaGVja3N1bXM7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICAvLyDssrTtgazshKwg7YyM7J287J20IOyGkOyDgeuQnCDqsr3smrAg67mIIOuwsOyXtCDrsJjtmZggKOyghOyytCDsnqzrj5nquLDtmZQg7Jyg64+EKVxuICAgIGNvbnNvbGUud2FybihcbiAgICAgIGDssrTtgazshKwg7YyM7J28KCR7Y2hlY2tzdW1GaWxlUGF0aH0p7J2EIO2MjOyLse2VmOuKlCDrjbAg7Iuk7Yyo7ZaI7Iq164uI64ukLiDsoITssrQg7J6s64+
|
|
85
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tzdW0uanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3N5bmNlci9jaGVja3N1bS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY3J5cHRvIGZyb20gXCJjcnlwdG9cIjtcbmltcG9ydCB7IGNyZWF0ZVJlYWRTdHJlYW0sIHR5cGUgUGF0aExpa2UgfSBmcm9tIFwiZnNcIjtcbmltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCI7XG5cbmltcG9ydCBlcXVhbCBmcm9tIFwiZmFzdC1kZWVwLWVxdWFsXCI7XG5pbXBvcnQgeyBpc0VxdWFsIH0gZnJvbSBcInJhZGFzaGlcIjtcblxuaW1wb3J0IHsgU29uYW11IH0gZnJvbSBcIi4uL2FwaS9zb25hbXVcIjtcbmltcG9ydCB7IGdsb2JBc3luYyB9IGZyb20gXCIuLi91dGlscy9hc3luYy11dGlsc1wiO1xuaW1wb3J0IHsgdHlwZSBBYnNvbHV0ZVBhdGgsIHR5cGUgQXBwUmVsYXRpdmVQYXRoIH0gZnJvbSBcIi4uL3V0aWxzL3BhdGgtdXRpbHNcIjtcbmltcG9ydCB7IGRpZmZlcmVuY2VXaXRoIH0gZnJvbSBcIi4uL3V0aWxzL3V0aWxzXCI7XG5pbXBvcnQgeyBnZXRDaGVja3N1bVBhdHRlcm5Hcm91cEluQWJzb2x1dGVQYXRoLCBHTE9CX0VYQ0xVREUgfSBmcm9tIFwiLi9maWxlLXBhdHRlcm5zXCI7XG5pbXBvcnQgeyBzeW5jZXJGaWxlRXhpc3RzLCBzeW5jZXJGaWxlc3lzdGVtIH0gZnJvbSBcIi4vZmlsZXN5c3RlbS1kZXBlbmRlbmNpZXNcIjtcblxudHlwZSBQYXRoQW5kQ2hlY2tzdW0gPSB7XG4gIHBhdGg6IEFic29sdXRlUGF0aDtcbiAgY2hlY2tzdW06IHN0cmluZztcbn07XG5cbi8qKlxuICog7LK07YGs7ISsIO2MjOydvOyXkCDsoIDsnqXrkJwg64K07Jqp6rO8IO2YhOyerCDsi6TsoJwg7YyM7J287J2YIOyytO2BrOyErOydhCDruYTqtZDtlZjsl6wg67OA6rK965CcIO2MjOydvOydhCDssL7sirXri4jri6QuXG4gKiBAcmV0dXJucyDrs4Dqsr3rkJwg7YyM7J28IOqyveuhnCDrsLDsl7QuIO2UhOuhnOygne2KuCDro6jtirjrtoDthLAg7Iqs656Y7Iuc66GcIOyLnOyeke2VqeuLiOuLpC4g7JiI7IucOiBcIi9zcmMvYXBwbGljYXRpb24vdXNlci91c2VyLm1vZGVsLnRzXCJcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZpbmRDaGFuZ2VkRmlsZXNVc2luZ0NoZWNrc3VtcygpOiBQcm9taXNlPEFic29sdXRlUGF0aFtdPiB7XG4gIGNvbnN0IGNhbGN1bGF0ZWRDaGVja3N1bXMgPSBhd2FpdCBnZXRDdXJyZW50Q2hlY2tzdW1zKCk7XG4gIGNvbnN0IHNhdmVkQ2hlY2tzdW1zID0gYXdhaXQgZ2V0UHJldmlvdXNDaGVja3N1bXMoKTtcblxuICBjb25zdCBpc1NhbWUgPSBlcXVhbChjYWxjdWxhdGVkQ2hlY2tzdW1zLCBzYXZlZENoZWNrc3Vtcyk7XG4gIGlmIChpc1NhbWUpIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICByZXR1cm4gZGlmZmVyZW5jZVdpdGgoY2FsY3VsYXRlZENoZWNrc3Vtcywgc2F2ZWRDaGVja3N1bXMsIGlzRXF1YWwpLm1hcCgocikgPT4gci5wYXRoKTtcbn1cblxuLyoqXG4gKiDssrTtgazshKzsnYQg6rCx7Iug7ZWp64uI64ukLlxuICog7ZiE7J6sIO2MjOydvOuTpOydmCDssrTtgazshKzsnYQg6rOE7IKw7ZW07IScIOq1rO2VnCDri6TsnYwsIOyytO2BrOyErCDtjIzsnbzsl5Ag7KCA7J6l65CcIOuCtOyaqeqzvCDri6TrpbTrqbQg7LK07YGs7ISsIO2MjOydvOydhCDqsLHsi6Dtlanri4jri6QuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZW5ld0NoZWNrc3VtcygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgY2FsY3VsYXRlZENoZWNrc3VtcyA9IGF3YWl0IGdldEN1cnJlbnRDaGVja3N1bXMoKTtcbiAgY29uc3Qgc2F2ZWRDaGVja3N1bXMgPSBhd2FpdCBnZXRQcmV2aW91c0NoZWNrc3VtcygpO1xuXG4gIGNvbnN0IGlzU2FtZSA9IGVxdWFsKGNhbGN1bGF0ZWRDaGVja3N1bXMsIHNhdmVkQ2hlY2tzdW1zKTtcbiAgaWYgKGlzU2FtZSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGF3YWl0IHNhdmVDaGVja3N1bXMoY2FsY3VsYXRlZENoZWNrc3Vtcyk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGdldEN1cnJlbnRDaGVja3N1bXMoKTogUHJvbWlzZTxQYXRoQW5kQ2hlY2tzdW1bXT4ge1xuICBjb25zdCBhbGxQYXRocyA9IChcbiAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIE9iamVjdC5lbnRyaWVzKGdldENoZWNrc3VtUGF0dGVybkdyb3VwSW5BYnNvbHV0ZVBhdGgoKSkubWFwKChbX2ZpbGVUeXBlLCBwYXR0ZXJuXSkgPT4ge1xuICAgICAgICByZXR1cm4gZ2xvYkFzeW5jKHBhdHRlcm4sIHsgZXhjbHVkZTogR0xPQl9FWENMVURFIH0pO1xuICAgICAgfSksXG4gICAgKVxuICApLmZsYXQoKTtcblxuICAvLyDrj5nsnbwg7YyM7J287J20IOyXrOufrCDtjKjthLTsl5Ag66ek7LmY65CgIOyImCDsnojsnLzrr4DroZwo7JiIOiBzZC5nZW5lcmF0ZWQudHPripQgZ2VuZXJhdGVk7JmAIHNkR2VuZXJhdGVk7JeQIOuqqOuRkCDrp6TsuZgpXG4gIC8vIOykkeuztSDsoJzqsbAg7ZuEIOyViOyglSDsoJXroKwuXG4gIGNvbnN0IGZpbGVQYXRocyA9XG4gICAgLyogU0FGRVRZOiBUeXBlU2NyaXB0IEFTVCDtjIzsi7Hqs7wg64+Z6riw7ZmUIOyeheugpSDqs4Tslb3snbQg7J20IOqwkuydmCDtg4DsnoXsnYQg67O07J6l7ZWc64ukLiAqLyBBcnJheS5mcm9tKFxuICAgICAgbmV3IFNldChhbGxQYXRocyksXG4gICAgKS50b1NvcnRlZCgpIGFzIEFic29sdXRlUGF0aFtdO1xuXG4gIHJldHVybiBhd2FpdCBQcm9taXNlLmFsbChcbiAgICBmaWxlUGF0aHMubWFwKGFzeW5jIChmaWxlUGF0aCkgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcGF0aDogZmlsZVBhdGgsXG4gICAgICAgIGNoZWNrc3VtOiBhd2FpdCBnZXRDaGVja3N1bU9mRmlsZShmaWxlUGF0aCksXG4gICAgICB9O1xuICAgIH0pLFxuICApO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRQcmV2aW91c0NoZWNrc3VtcygpOiBQcm9taXNlPFBhdGhBbmRDaGVja3N1bVtdPiB7XG4gIGNvbnN0IGNoZWNrc3VtRmlsZVBhdGggPSBnZXRDaGVja3N1bUZpbGVQYXRoKCk7XG4gIGlmICghKGF3YWl0IHN5bmNlckZpbGVFeGlzdHMoY2hlY2tzdW1GaWxlUGF0aCkpKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgdHJ5IHtcbiAgICBjb25zdCBwcmV2aW91c0NoZWNrc3VtcyA9XG4gICAgICAvKiBTQUZFVFk6IFR5cGVTY3JpcHQgQVNUIO2MjOyLseqzvCDrj5nquLDtmZQg7J6F66ClIOqzhOyVveydtCDsnbQg6rCS7J2YIO2DgOyeheydhCDrs7TsnqXtlZzri6QuICovIEpTT04ucGFyc2UoXG4gICAgICAgIGF3YWl0IHN5bmNlckZpbGVzeXN0ZW0ucmVhZEZpbGUoY2hlY2tzdW1GaWxlUGF0aCwgXCJ1dGYtOFwiKSxcbiAgICAgICkubWFwKChyOiB7IHBhdGg6IEFwcFJlbGF0aXZlUGF0aDsgY2hlY2tzdW06IHN0cmluZyB9KSA9PiAoe1xuICAgICAgICBwYXRoOiBwYXRoLmpvaW4oU29uYW11LmFwcFJvb3RQYXRoLCByLnBhdGgpLCAvLyDssrTtgazshKwg7YyM7J287JeQ7IScIOydveydhCDrlYw6IGFwcFJvb3Qg7IOB64yAIOqyveuhnCDihpIg7KCI64yAIOqyveuhnFxuICAgICAgICBjaGVja3N1bTogci5jaGVja3N1bSxcbiAgICAgIH0pKSBhcyBQYXRoQW5kQ2hlY2tzdW1bXTtcbiAgICByZXR1cm4gcHJldmlvdXNDaGVja3N1bXM7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICAvLyDssrTtgazshKwg7YyM7J287J20IOyGkOyDgeuQnCDqsr3smrAg67mIIOuwsOyXtCDrsJjtmZggKOyghOyytCDsnqzrj5nquLDtmZQg7Jyg64+EKVxuICAgIGNvbnNvbGUud2FybihcbiAgICAgIGDssrTtgazshKwg7YyM7J28KCR7Y2hlY2tzdW1GaWxlUGF0aH0p7J2EIO2MjOyLse2VmOuKlCDrjbAg7Iuk7Yyo7ZaI7Iq164uI64ukLiDsoITssrQg7J6s64+Z6riw7ZmU66W8IOynhO2Wie2VqeuLiOuLpC5gLFxuICAgICAgZSxcbiAgICApO1xuICAgIHJldHVybiBbXTtcbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRDaGVja3N1bUZpbGVQYXRoKCk6IEFic29sdXRlUGF0aCB7XG4gIHJldHVybiAvKiBTQUZFVFk6IFR5cGVTY3JpcHQgQVNUIO2MjOyLseqzvCDrj5nquLDtmZQg7J6F66ClIOqzhOyVveydtCDsnbQg6rCS7J2YIO2DgOyeheydhCDrs7TsnqXtlZzri6QuICovIHBhdGguam9pbihcbiAgICBTb25hbXUuYXBpUm9vdFBhdGgsXG4gICAgXCJzb25hbXUubG9ja1wiLFxuICApIGFzIEFic29sdXRlUGF0aDtcbn1cblxuYXN5bmMgZnVuY3Rpb24gc2F2ZUNoZWNrc3VtcyhjaGVja3N1bXM6IFBhdGhBbmRDaGVja3N1bVtdKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IGNoZWNrc3VtRmlsZVBhdGggPSBnZXRDaGVja3N1bUZpbGVQYXRoKCk7XG4gIC8vIGFwcFJvb3Qg7IOB64yAIOqyveuhnOuhnCDsp4HroKztmZQgKyDslYztjIzrsrMg7JWI7KCVIOygleugrCAoUFIgZGlmZiDquajrgZftlZjqsowg7Jyg7KeAKVxuICBjb25zdCBzZXJpYWxpemVkID0gY2hlY2tzdW1zXG4gICAgLm1hcCgocikgPT4gKHtcbiAgICAgIHBhdGg6IHBhdGgucmVsYXRpdmUoU29uYW11LmFwcFJvb3RQYXRoLCByLnBhdGgpLCAvLyDssrTtgazshKwg7YyM7J287JeQIOyggOyepe2VoCDrlYw6IOygiOuMgCDqsr3roZwg4oaSIGFwcFJvb3Qg7IOB64yAIOqyveuhnFxuICAgICAgY2hlY2tzdW06IHIuY2hlY2tzdW0sXG4gICAgfSkpXG4gICAgLnRvU29ydGVkKChhLCBiKSA9PiBhLnBhdGgubG9jYWxlQ29tcGFyZShiLnBhdGgpKTtcbiAgYXdhaXQgc3luY2VyRmlsZXN5c3RlbS53cml0ZUZpbGUoY2hlY2tzdW1GaWxlUGF0aCwgSlNPTi5zdHJpbmdpZnkoc2VyaWFsaXplZCwgbnVsbCwgMiksIFwidXRmLThcIik7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGdldENoZWNrc3VtT2ZGaWxlKGZpbGVQYXRoOiBQYXRoTGlrZSk6IFByb21pc2U8c3RyaW5nPiB7XG4gIGNvbnN0IGhhc2ggPSBjcnlwdG8uY3JlYXRlSGFzaChcInNoYTFcIik7XG4gIGNvbnN0IGlucHV0ID0gY3JlYXRlUmVhZFN0cmVhbShmaWxlUGF0aCk7XG4gIGZvciBhd2FpdCAoY29uc3QgY2h1bmsgb2YgaW5wdXQpIHtcbiAgICBoYXNoLnVwZGF0ZShjaHVuayk7XG4gIH1cbiAgcmV0dXJuIGhhc2guZGlnZXN0KFwiaGV4XCIpO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBdUJBLGVBQXNCLGlDQUEwRDtDQUM5RSxNQUFNLHNCQUFzQixNQUFNLG9CQUFvQjtDQUN0RCxNQUFNLGlCQUFpQixNQUFNLHFCQUFxQjtDQUdsRCxJQURlLE1BQU0scUJBQXFCLGNBQ3RDLEdBQ0YsT0FBTyxDQUFDO0NBR1YsT0FBTyxlQUFlLHFCQUFxQixnQkFBZ0IsT0FBTyxDQUFDLENBQUMsS0FBSyxNQUFNLEVBQUUsSUFBSTtBQUN2Rjs7Ozs7QUFNQSxlQUFzQixpQkFBZ0M7Q0FDcEQsTUFBTSxzQkFBc0IsTUFBTSxvQkFBb0I7Q0FDdEQsTUFBTSxpQkFBaUIsTUFBTSxxQkFBcUI7Q0FHbEQsSUFEZSxNQUFNLHFCQUFxQixjQUN0QyxHQUNGO0NBR0YsTUFBTSxjQUFjLG1CQUFtQjtBQUN6QztBQUVBLGVBQWUsc0JBQWtEO0NBQy9ELE1BQU0sWUFDSixNQUFNLFFBQVEsSUFDWixPQUFPLFFBQVEsc0NBQXNDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxXQUFXLGFBQWE7RUFDcEYsT0FBTyxVQUFVLFNBQVMsRUFBRSxTQUFTLGFBQWEsQ0FBQztDQUNyRCxDQUFDLENBQ0gsRUFBQSxDQUNBLEtBQUs7Q0FJUCxNQUFNLFlBQ3VELE1BQU0sS0FDL0QsSUFBSSxJQUFJLFFBQVEsQ0FDbEIsQ0FBQyxDQUFDLFNBQVM7Q0FFYixPQUFPLE1BQU0sUUFBUSxJQUNuQixVQUFVLElBQUksT0FBTyxhQUFhO0VBQ2hDLE9BQU87R0FDTCxNQUFNO0dBQ04sVUFBVSxNQUFNLGtCQUFrQixRQUFRO0VBQzVDO0NBQ0YsQ0FBQyxDQUNIO0FBQ0Y7QUFFQSxlQUFlLHVCQUFtRDtDQUNoRSxNQUFNLG1CQUFtQixvQkFBb0I7Q0FDN0MsSUFBSSxDQUFFLE1BQU0saUJBQWlCLGdCQUFnQixHQUMzQyxPQUFPLENBQUM7Q0FHVixJQUFJO0VBUUYsT0FONkQsS0FBSyxNQUM5RCxNQUFNLGlCQUFpQixTQUFTLGtCQUFrQixPQUFPLENBQzNELENBQUMsQ0FBQyxLQUFLLE9BQW9EO0dBQ3pELE1BQU0sS0FBSyxLQUFLLE9BQU8sYUFBYSxFQUFFLElBQUk7R0FDMUMsVUFBVSxFQUFFO0VBQ2QsRUFDSztDQUNULFNBQVMsR0FBRztFQUVWLFFBQVEsS0FDTixVQUFVLGlCQUFpQixvQ0FDM0IsQ0FDRjtFQUNBLE9BQU8sQ0FBQztDQUNWO0FBQ0Y7QUFFQSxTQUFTLHNCQUFvQztDQUMzQyxPQUFrRSxLQUFLLEtBQ3JFLE9BQU8sYUFDUCxhQUNGO0FBQ0Y7QUFFQSxlQUFlLGNBQWMsV0FBNkM7Q0FDeEUsTUFBTSxtQkFBbUIsb0JBQW9CO0NBRTdDLE1BQU0sYUFBYSxVQUNoQixLQUFLLE9BQU87RUFDWCxNQUFNLEtBQUssU0FBUyxPQUFPLGFBQWEsRUFBRSxJQUFJO0VBQzlDLFVBQVUsRUFBRTtDQUNkLEVBQUUsQ0FBQyxDQUNGLFVBQVUsR0FBRyxNQUFNLEVBQUUsS0FBSyxjQUFjLEVBQUUsSUFBSSxDQUFDO0NBQ2xELE1BQU0saUJBQWlCLFVBQVUsa0JBQWtCLEtBQUssVUFBVSxZQUFZLE1BQU0sQ0FBQyxHQUFHLE9BQU87QUFDakc7QUFFQSxlQUFlLGtCQUFrQixVQUFxQztDQUNwRSxNQUFNLE9BQU8sT0FBTyxXQUFXLE1BQU07Q0FDckMsTUFBTSxRQUFRLGlCQUFpQixRQUFRO0NBQ3ZDLFdBQVcsTUFBTSxTQUFTLE9BQ3hCLEtBQUssT0FBTyxLQUFLO0NBRW5CLE9BQU8sS0FBSyxPQUFPLEtBQUs7QUFDMUI7O0NBekhzQyxZQUFBO0NBQ1UsaUJBQUE7Q0FFRCxXQUFBO0NBQ3NDLG1CQUFBO0NBQ1AsNkJBQUEifQ==
|
|
@@ -15,7 +15,7 @@ import { init_file_tracking, trackWritten } from "./file-tracking.js";
|
|
|
15
15
|
import { unique } from "radashi";
|
|
16
16
|
import path from "path";
|
|
17
17
|
import chalk from "chalk";
|
|
18
|
-
|
|
18
|
+
// src/syncer/code-generator.ts
|
|
19
19
|
/**
|
|
20
20
|
* 템플릿을 렌더링하고 파일로 생성합니다.
|
|
21
21
|
* overwrite 옵션이 false인 경우, 이미 존재하는 파일은 건너뜁니다.
|
|
@@ -43,7 +43,8 @@ async function generateTemplate(key, templateOptions, _generateOptions) {
|
|
|
43
43
|
else return await filterAsync(pathAndCodes, async (pathAndCode) => {
|
|
44
44
|
const { targets } = Sonamu.config.sync;
|
|
45
45
|
const filePath = `${Sonamu.appRootPath}/${pathAndCode.path}`;
|
|
46
|
-
|
|
46
|
+
const dstFilePaths = targets.map((target) => filePath.replace("/:target/", `/${target}/`));
|
|
47
|
+
return await everyAsync(dstFilePaths, async (dstPath) => !await syncerFileExists(dstPath));
|
|
47
48
|
});
|
|
48
49
|
})();
|
|
49
50
|
if (filteredPathAndCodes.length === 0) throw new AlreadyProcessedException(SD("sonamu.error.allFilesExist"));
|
|
@@ -141,8 +142,7 @@ var init_code_generator = __esmMin((() => {
|
|
|
141
142
|
init_file_tracking();
|
|
142
143
|
init_filesystem_dependencies();
|
|
143
144
|
}));
|
|
144
|
-
//#endregion
|
|
145
145
|
init_code_generator();
|
|
146
146
|
export { generateTemplate, init_code_generator, renderTemplate };
|
|
147
147
|
|
|
148
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZS1nZW5lcmF0b3IuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3N5bmNlci9jb2RlLWdlbmVyYXRvci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiO1xuXG5pbXBvcnQgY2hhbGsgZnJvbSBcImNoYWxrXCI7XG5pbXBvcnQgeyB1bmlxdWUgfSBmcm9tIFwicmFkYXNoaVwiO1xuXG5pbXBvcnQgeyBTb25hbXUgfSBmcm9tIFwiLi4vYXBpL3NvbmFtdVwiO1xuaW1wb3J0IHsgZm9ybWF0Q29kZSB9IGZyb20gXCIuLi9jb2RlLWZvcm1hdHRpbmdcIjtcbmltcG9ydCB7IFNEIH0gZnJvbSBcIi4uL2RpY3Qvc2RcIjtcbmltcG9ydCB7IEVudGl0eU1hbmFnZXIgfSBmcm9tIFwiLi4vZW50aXR5L2VudGl0eS1tYW5hZ2VyXCI7XG5pbXBvcnQgeyBBbHJlYWR5UHJvY2Vzc2VkRXhjZXB0aW9uIH0gZnJvbSBcIi4uL2V4Y2VwdGlvbnMvc28tZXhjZXB0aW9uc1wiO1xuaW1wb3J0IHsgTmFpdGUgfSBmcm9tIFwiLi4vbmFpdGUvbmFpdGVcIjtcbmltcG9ydCB7IHR5cGUgUmVuZGVyZWRUZW1wbGF0ZSB9IGZyb20gXCIuLi90ZW1wbGF0ZS90ZW1wbGF0ZVwiO1xuaW1wb3J0IHsgVGVtcGxhdGVNYW5hZ2VyIH0gZnJvbSBcIi4uL3RlbXBsYXRlL3RlbXBsYXRlLW1hbmFnZXJcIjtcbmltcG9ydCB7IEJVSUxUX0lOX1RZUEVTIH0gZnJvbSBcIi4uL3RlbXBsYXRlL3pvZC1jb252ZXJ0ZXJcIjtcbmltcG9ydCB7XG4gIHR5cGUgR2VuZXJhdGVPcHRpb25zLFxuICB0eXBlIFBhdGhBbmRDb2RlLFxuICB0eXBlIFRlbXBsYXRlS2V5LFxuICB0eXBlIFRlbXBsYXRlT3B0aW9ucyxcbn0gZnJvbSBcIi4uL3R5cGVzL3R5cGVzXCI7XG5pbXBvcnQgeyBldmVyeUFzeW5jLCBmaWx0ZXJBc3luYyB9IGZyb20gXCIuLi91dGlscy9hc3luYy11dGlsc1wiO1xuaW1wb3J0IHsgaXNUZXN0IH0gZnJvbSBcIi4uL3V0aWxzL2NvbnRyb2xsZXJcIjtcbmltcG9ydCB7IHdyYXBJZiB9IGZyb20gXCIuLi91dGlscy9sb2Rhc2gtYWJsZVwiO1xuaW1wb3J0IHsgdHlwZSBBYnNvbHV0ZVBhdGggfSBmcm9tIFwiLi4vdXRpbHMvcGF0aC11dGlsc1wiO1xuaW1wb3J0IHsgdHJhY2tXcml0dGVuIH0gZnJvbSBcIi4vZmlsZS10cmFja2luZ1wiO1xuaW1wb3J0IHsgc3luY2VyRmlsZUV4aXN0cywgc3luY2VyRmlsZXN5c3RlbSB9IGZyb20gXCIuL2ZpbGVzeXN0ZW0tZGVwZW5kZW5jaWVzXCI7XG5cbi8qKlxuICog7YWc7ZSM66a/7J2EIOugjOuNlOunge2VmOqzoCDtjIzsnbzroZwg7IOd7ISx7ZWp64uI64ukLlxuICogb3ZlcndyaXRlIOyYteyFmOydtCBmYWxzZeyduCDqsr3smrAsIOydtOuvuCDsobTsnqztlZjripQg7YyM7J287J2AIOqxtOuEiOucgeuLiOuLpC5cbiAqIEBwYXJhbSBrZXkgLSDthZztlIzrpr8g7YKkICjsmIg6IFwiZW50aXR5XCIsIFwibW9kZWxcIiwgXCJzZXJ2aWNlXCIg65OxKVxuICogQHBhcmFtIHRlbXBsYXRlT3B0aW9ucyAtIO2FnO2UjOumvyDroIzrjZTrp4Hsl5Ag7ZWE7JqU7ZWcIOyYteyFmFxuICogQHBhcmFtIF9nZW5lcmF0ZU9wdGlvbnMgLSDsg53shLEg7Ji17IWYIChvdmVyd3JpdGUg7Jes67aAKVxuICogQHJldHVybnMg7IOd7ISx65CcIO2MjOydvCDqsr3roZwg67Cw7Je0XG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZW5lcmF0ZVRlbXBsYXRlPFQgZXh0ZW5kcyBUZW1wbGF0ZUtleT4oXG4gIGtleTogVCxcbiAgdGVtcGxhdGVPcHRpb25zOiBUZW1wbGF0ZU9wdGlvbnNbVF0sXG4gIF9nZW5lcmF0ZU9wdGlvbnM/OiBHZW5lcmF0ZU9wdGlvbnMsXG4pOiBQcm9taXNlPEFic29sdXRlUGF0aFtdPiB7XG4gIGNvbnN0IGdlbmVyYXRlT3B0aW9ucyA9IHtcbiAgICBvdmVyd3JpdGU6IGZhbHNlLFxuICAgIC4uLl9nZW5lcmF0ZU9wdGlvbnMsXG4gIH07XG4gIE5haXRlLnQoXCJnZW5lcmF0ZVRlbXBsYXRlXCIsIHsga2V5LCB0ZW1wbGF0ZU9wdGlvbnMsIGdlbmVyYXRlT3B0aW9ucyB9KTtcblxuICAvLyDtgqQgY2hpbGRyZW5cbiAgY29uc3Qga2V5czogVGVtcGxhdGVLZXlbXSA9IFtrZXldO1xuXG4gIC8vIO2FnO2UjOumvyDroIzrjZRcbiAgY29uc3QgcGF0aEFuZENvZGVzID0gKFxuICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAga2V5cy5tYXAoYXN5bmMgKHRlbXBsYXRlS2V5KSA9PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCByZW5kZXJUZW1wbGF0ZSh0ZW1wbGF0ZUtleSwgdGVtcGxhdGVPcHRpb25zKTtcbiAgICAgIH0pLFxuICAgIClcbiAgKS5mbGF0KCk7XG5cbiAgY29uc3QgZmlsdGVyZWRQYXRoQW5kQ29kZXM6IFBhdGhBbmRDb2RlW10gPSBhd2FpdCAoYXN5bmMgKCkgPT4ge1xuICAgIGlmIChnZW5lcmF0ZU9wdGlvbnMub3ZlcndyaXRlKSB7XG4gICAgICByZXR1cm4gcGF0aEFuZENvZGVzO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gYXdhaXQgZmlsdGVyQXN5bmMocGF0aEFuZENvZGVzLCBhc3luYyAocGF0aEFuZENvZGUpID0+IHtcbiAgICAgICAgY29uc3QgeyB0YXJnZXRzIH0gPSBTb25hbXUuY29uZmlnLnN5bmM7XG4gICAgICAgIGNvbnN0IGZpbGVQYXRoID0gYCR7U29uYW11LmFwcFJvb3RQYXRofS8ke3BhdGhBbmRDb2RlLnBhdGh9YDtcbiAgICAgICAgY29uc3QgZHN0RmlsZVBhdGhzID0gdGFyZ2V0cy5tYXAoKHRhcmdldCkgPT4gZmlsZVBhdGgucmVwbGFjZShcIi86dGFyZ2V0L1wiLCBgLyR7dGFyZ2V0fS9gKSk7XG4gICAgICAgIHJldHVybiBhd2FpdCBldmVyeUFzeW5jKFxuICAgICAgICAgIGRzdEZpbGVQYXRocyxcbiAgICAgICAgICBhc3luYyAoZHN0UGF0aCkgPT4gIShhd2FpdCBzeW5jZXJGaWxlRXhpc3RzKGRzdFBhdGgpKSxcbiAgICAgICAgKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfSkoKTtcblxuICBpZiAoZmlsdGVyZWRQYXRoQW5kQ29kZXMubGVuZ3RoID09PSAwKSB7XG4gICAgdGhyb3cgbmV3IEFscmVhZHlQcm9jZXNzZWRFeGNlcHRpb24oU0QoXCJzb25hbXUuZXJyb3IuYWxsRmlsZXNFeGlzdFwiKSk7XG4gIH1cblxuICByZXR1cm4gKFxuICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgZmlsdGVyZWRQYXRoQW5kQ29kZXMubWFwKChwYXRoQW5kQ29kZSkgPT4gd3JpdGVDb2RlVG9QYXRoRWFjaFRhcmdldChwYXRoQW5kQ29kZSkpLFxuICAgIClcbiAgKS5mbGF0KCk7XG59XG5cbi8qKlxuICog7YWc7ZSM66a/7J2EIOugjOuNlOunge2VmOyXrCBQYXRoQW5kQ29kZSDqsJ3ssrTrpbwg67CY7ZmY7ZWp64uI64ukLlxuICog7YyM7J2866GcIOyTsOyngCDslYrqs6Ag66mU66qo66as7IOB7JeQ7ISc66eMIOugjOuNlOunge2VqeuLiOuLpC5cbiAqIEBwYXJhbSBrZXkgLSDthZztlIzrpr8g7YKkXG4gKiBAcGFyYW0gb3B0aW9ucyAtIO2FnO2UjOumvyDroIzrjZTrp4Eg7Ji17IWYXG4gKiBAcmV0dXJucyDqsr3roZzsmYAg7L2U65OcIOyMjeydmCDrsLDsl7RcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlbmRlclRlbXBsYXRlPFQgZXh0ZW5kcyBrZXlvZiBUZW1wbGF0ZU9wdGlvbnM+KFxuICBrZXk6IFQsXG4gIG9wdGlvbnM6IFRlbXBsYXRlT3B0aW9uc1tUXSxcbik6IFByb21pc2U8UGF0aEFuZENvZGVbXT4ge1xuICBOYWl0ZS50KFwicmVuZGVyVGVtcGxhdGVcIiwgeyBrZXksIG9wdGlvbnMgfSk7XG5cbiAgY29uc3QgdGVtcGxhdGUgPSBUZW1wbGF0ZU1hbmFnZXIuZ2V0KGtleSk7XG5cbiAgY29uc3QgcmVuZGVyZWQgPSBhd2FpdCB0ZW1wbGF0ZS5yZW5kZXIob3B0aW9ucyk7XG4gIGNvbnN0IHJlc29sdmVkID0gYXdhaXQgcmVzb2x2ZVJlbmRlcmVkVGVtcGxhdGUoa2V5LCByZW5kZXJlZCk7XG5cbiAgbGV0IHByZVRlbXBsYXRlUmVzb2x2ZWQ6IFBhdGhBbmRDb2RlW10gPSBbXTtcbiAgaWYgKHJlbmRlcmVkLnByZVRlbXBsYXRlcykge1xuICAgIHByZVRlbXBsYXRlUmVzb2x2ZWQgPSAoXG4gICAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgcmVuZGVyZWQucHJlVGVtcGxhdGVzLm1hcCgoeyBrZXk6IHByZVRlbXBsYXRlS2V5LCBvcHRpb25zOiBwcmVUZW1wbGF0ZU9wdGlvbnMgfSkgPT4ge1xuICAgICAgICAgIHJldHVybiByZW5kZXJUZW1wbGF0ZShwcmVUZW1wbGF0ZUtleSwgcHJlVGVtcGxhdGVPcHRpb25zKTtcbiAgICAgICAgfSksXG4gICAgICApXG4gICAgKS5mbGF0KCk7XG4gIH1cblxuICByZXR1cm4gW3Jlc29sdmVkLCAuLi5wcmVUZW1wbGF0ZVJlc29sdmVkXTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gcmVzb2x2ZVJlbmRlcmVkVGVtcGxhdGUoXG4gIGtleTogVGVtcGxhdGVLZXksXG4gIHJlc3VsdDogUmVuZGVyZWRUZW1wbGF0ZSxcbik6IFByb21pc2U8UGF0aEFuZENvZGU+IHtcbiAgTmFpdGUudChgcmVzb2x2ZVJlbmRlcmVkVGVtcGxhdGUke2tleX1gLCB7IGtleSwgcmVzdWx0IH0pO1xuXG4gIGNvbnN0IHsgdGFyZ2V0LCBwYXRoOiBmaWxlUGF0aCwgYm9keSwgaW1wb3J0S2V5cywgY3VzdG9tSGVhZGVycyB9ID0gcmVzdWx0O1xuXG4gIC8vIGltcG9ydCDtlaAg64yA7IOB7J2YIOuMgOyDgSBwYXRoIOy2lOy2nFxuICBjb25zdCBidWlsdEluU2NoZW1hTmFtZXMgPSBPYmplY3QudmFsdWVzKEJVSUxUX0lOX1RZUEVTKS5tYXAoXG4gICAgKGluZm8pID0+XG4gICAgICAvKiBTQUZFVFk6IFR5cGVTY3JpcHQgQVNUIO2MjOyLseqzvCDrj5nquLDtmZQg7J6F66ClIOqzhOyVveydtCDsnbQg6rCS7J2YIO2DgOyeheydhCDrs7TsnqXtlZzri6QuICovIGluZm8uc2NoZW1hTmFtZSBhcyBzdHJpbmcsXG4gICk7XG4gIGNvbnN0IGltcG9ydERlZnMgPSBpbXBvcnRLZXlzXG4gICAgLy8g64K07J6lIO2DgOyehSDsiqTtgqTrp4jripQg7J2066+4IHNvbmFtdeyXkOyEnCBpbXBvcnTrkJjrr4DroZwg7KCc7Jm4XG4gICAgLmZpbHRlcigoaW1wb3J0S2V5KSA9PiAhYnVpbHRJblNjaGVtYU5hbWVzLmluY2x1ZGVzKGltcG9ydEtleSkpXG4gICAgLnJlZHVjZShcbiAgICAgIChyLCBpbXBvcnRLZXkpID0+IHtcbiAgICAgICAgbGV0IG1vZHVsZVBhdGggPSBpbXBvcnRLZXk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgbW9kdWxlUGF0aCA9IEVudGl0eU1hbmFnZXIuZ2V0TW9kdWxlUGF0aChpbXBvcnRLZXkpO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIGBbcmVzb2x2ZVJlbmRlcmVkVGVtcGxhdGU6JHtrZXl9XSAke2ltcG9ydEtleX0g66qo65OIIOqyveuhnCDssL7quLAg7Iuk7YyoOiAke2Vycm9yfWAsXG4gICAgICAgICAgICB7IGNhdXNlOiBlcnJvciB9LFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGltcG9ydFBhdGggPSBtb2R1bGVQYXRoO1xuICAgICAgICBpZiAobW9kdWxlUGF0aC5pbmNsdWRlcyhcIi9cIikgfHwgbW9kdWxlUGF0aC5pbmNsdWRlcyhcIi5cIikpIHtcbiAgICAgICAgICBpbXBvcnRQYXRoID0gd3JhcElmKHBhdGgucmVsYXRpdmUocGF0aC5kaXJuYW1lKGZpbGVQYXRoKSwgbW9kdWxlUGF0aCksIChwKSA9PiBbXG4gICAgICAgICAgICAhcC5zdGFydHNXaXRoKFwiLlwiKSxcbiAgICAgICAgICAgIGAuLyR7cH1gLFxuICAgICAgICAgIF0pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8g6rCZ7J2AIO2MjOydvOyXkOyEnCBpbXBvcnQg7ZWY64qUIOqyveyasCBrZXlzIOuhnCDrgpjsl7Qg7LKY66asXG4gICAgICAgIGNvbnN0IGV4aXN0c09uZSA9IHIuZmluZCgoaW1wb3J0RGVmKSA9PiBpbXBvcnREZWYuZnJvbSA9PT0gaW1wb3J0UGF0aCk7XG4gICAgICAgIGlmIChleGlzdHNPbmUpIHtcbiAgICAgICAgICBleGlzdHNPbmUua2V5cyA9IHVuaXF1ZShleGlzdHNPbmUua2V5cy5jb25jYXQoaW1wb3J0S2V5KSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgci5wdXNoKHtcbiAgICAgICAgICAgIGtleXM6IFtpbXBvcnRLZXldLFxuICAgICAgICAgICAgZnJvbTogaW1wb3J0UGF0aCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcjtcbiAgICAgIH0sXG4gICAgICAvKiBTQUZFVFk6IFR5cGVTY3JpcHQgQVNUIO2MjOyLseqzvCDrj5nquLDtmZQg7J6F66ClIOqzhOyVveydtCDsnbQg6rCS7J2YIO2DgOyeheydhCDrs7TsnqXtlZzri6QuICovIFtdIGFzIHtcbiAgICAgICAga2V5czogc3RyaW5nW107XG4gICAgICAgIGZyb206IHN0cmluZztcbiAgICAgIH1bXSxcbiAgICApXG4gICAgLy8g7IWA7ZSEIOywuOyhsCDrsKnsp4BcbiAgICAuZmlsdGVyKChpbXBvcnREZWYpID0+ICFmaWxlUGF0aC5lbmRzV2l0aChgJHtpbXBvcnREZWYuZnJvbS5yZXBsYWNlKFwiLi9cIiwgXCJcIil9LnRzYCkpO1xuXG4gIC8vIOy7pOyKpO2FgCDtl6TrjZQg7Y+s7ZWo7ZWY7JesIO2XpOuNlCDsg53shLFcbiAgY29uc3QgaGVhZGVyID0gW1xuICAgIC4uLihjdXN0b21IZWFkZXJzID8/IFtdKSxcbiAgICAuLi5pbXBvcnREZWZzLm1hcChcbiAgICAgIChpbXBvcnREZWYpID0+IGBpbXBvcnQgeyAke2ltcG9ydERlZi5rZXlzLmpvaW4oXCIsIFwiKX0gfSBmcm9tICcke2ltcG9ydERlZi5mcm9tfSdgLFxuICAgICksXG4gIF0uam9pbihcIlxcblwiKTtcblxuICBjb25zdCBmb3JtYXR0ZWQgPSBhd2FpdCAoYXN5bmMgKCkgPT4ge1xuICAgIGlmIChrZXkgPT09IFwiZ2VuZXJhdGVkX2h0dHBcIikge1xuICAgICAgcmV0dXJuIFtoZWFkZXIsIGJvZHldLmpvaW4oXCJcXG5cXG5cIik7XG4gICAgfSBlbHNlIHtcbiAgICAgIE5haXRlLnQoXCJyZXNvbHZlUmVuZGVyZWRUZW1wbGF0ZTpiZWZvcmVGb3JtYXRcIiwgeyBrZXksIGhlYWRlciwgYm9keSB9KTtcbiAgICAgIGNvbnN0IGZvcm1hdHRlZENvZGUgPSBhd2FpdCBmb3JtYXRDb2RlKFxuICAgICAgICBbaGVhZGVyLCBib2R5XS5qb2luKFwiXFxuXFxuXCIpLFxuICAgICAgICBgJHtTb25hbXUuYXBwUm9vdFBhdGh9LyR7ZmlsZVBhdGh9YCxcbiAgICAgICk7XG4gICAgICBOYWl0ZS50KGByZXNvbHZlUmVuZGVyZWRUZW1wbGF0ZTpmb3JtYXR0ZWQ6JHtrZXl9YCwgZm9ybWF0dGVkQ29kZSk7XG4gICAgICByZXR1cm4gZm9ybWF0dGVkQ29kZTtcbiAgICB9XG4gIH0pKCk7XG5cbiAgcmV0dXJuIHtcbiAgICBwYXRoOiBgJHt0YXJnZXR9LyR7ZmlsZVBhdGh9YCxcbiAgICBjb2RlOiBmb3JtYXR0ZWQsXG4gIH07XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHdyaXRlQ29kZVRvUGF0aEVhY2hUYXJnZXQocGF0aEFuZENvZGU6IFBhdGhBbmRDb2RlKTogUHJvbWlzZTxBYnNvbHV0ZVBhdGhbXT4ge1xuICBjb25zdCB7IHRhcmdldHMgfSA9IFNvbmFtdS5jb25maWcuc3luYztcbiAgY29uc3QgeyBhcHBSb290UGF0aCB9ID0gU29uYW11O1xuICBjb25zdCBmaWxlUGF0aCA9XG4gICAgLyogU0FGRVRZOiBUeXBlU2NyaXB0IEFTVCDtjIzsi7Hqs7wg64+Z6riw7ZmUIOyeheugpSDqs4Tslb3snbQg7J20IOqwkuydmCDtg4DsnoXsnYQg67O07J6l7ZWc64ukLiAqLyBgJHtTb25hbXUuYXBwUm9vdFBhdGh9LyR7cGF0aEFuZENvZGUucGF0aH1gIGFzIEFic29sdXRlUGF0aDtcblxuICBjb25zdCBkc3RGaWxlUGF0aHMgPSB1bmlxdWUoXG4gICAgLyogU0FGRVRZOiBUeXBlU2NyaXB0IEFTVCDtjIzsi7Hqs7wg64+Z6riw7ZmUIOyeheugpSDqs4Tslb3snbQg7J20IOqwkuydmCDtg4DsnoXsnYQg67O07J6l7ZWc64ukLiAqLyB0YXJnZXRzLm1hcChcbiAgICAgICh0YXJnZXQpID0+IGZpbGVQYXRoLnJlcGxhY2UoXCIvOnRhcmdldC9cIiwgYC8ke3RhcmdldH0vYCksXG4gICAgKSBhcyBBYnNvbHV0ZVBhdGhbXSxcbiAgKTtcbiAgcmV0dXJuIGF3YWl0IFByb21pc2UuYWxsKFxuICAgIGRzdEZpbGVQYXRocy5tYXAoYXN5bmMgKGRzdEZpbGVQYXRoKSA9PiB7XG4gICAgICBjb25zdCBkaXIgPSBwYXRoLmRpcm5hbWUoZHN0RmlsZVBhdGgpO1xuICAgICAgaWYgKCEoYXdhaXQgc3luY2VyRmlsZUV4aXN0cyhkaXIpKSkge1xuICAgICAgICBhd2FpdCBzeW5jZXJGaWxlc3lzdGVtLm1rZGlyKGRpciwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gICAgICB9XG4gICAgICBhd2FpdCBzeW5jZXJGaWxlc3lzdGVtLndyaXRlRmlsZShkc3RGaWxlUGF0aCwgcGF0aEFuZENvZGUuY29kZSk7XG4gICAgICAvLyDrsKnquIgg7Jqw66as6rCAIOyTtCBwYXRo66W8IOuTseuhnSDihpIgZGV2IHdhdGNoZXLsnZgg7ZuE7IaNIGNoYW5nZSDsnbTrsqTtirjqsIBcbiAgICAgIC8vIOyZuOu2gCDrs4Dqsr3snLzroZwg7Jik7J2465CY7KeAIOyViuuPhOuhnSDqsbDrpoQg6rCA65OcIOyekOujjCDsoJzqs7UuXG4gICAgICBhd2FpdCB0cmFja1dyaXR0ZW4oZHN0RmlsZVBhdGgpO1xuICAgICAgIWlzVGVzdCgpICYmXG4gICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgIGNoYWxrLmJvbGQoXCJHZW5lcmF0ZWQ6IFwiKSArIGNoYWxrLmJsdWUoYCR7ZHN0RmlsZVBhdGgucmVwbGFjZShgJHthcHBSb290UGF0aH0vYCwgXCJcIil9YCksXG4gICAgICAgICk7XG4gICAgICByZXR1cm4gZHN0RmlsZVBhdGg7XG4gICAgfSksXG4gICk7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBbUNBLGVBQXNCLGlCQUNwQixLQUNBLGlCQUNBLGtCQUN5QjtDQUN6QixNQUFNLGtCQUFrQjtFQUN0QixXQUFXO0VBQ1gsR0FBRztDQUNMO0NBQ0EsTUFBTSxFQUFFLG9CQUFvQjtFQUFFO0VBQUs7RUFBaUI7Q0FBZ0IsQ0FBQztDQUdyRSxNQUFNLE9BQXNCLENBQUMsR0FBRztDQUdoQyxNQUFNLGdCQUNKLE1BQU0sUUFBUSxJQUNaLEtBQUssSUFBSSxPQUFPLGdCQUFnQjtFQUM5QixPQUFPLE1BQU0sZUFBZSxhQUFhLGVBQWU7Q0FDMUQsQ0FBQyxDQUNILEVBQUEsQ0FDQSxLQUFLO0NBRVAsTUFBTSx1QkFBc0MsT0FBTyxZQUFZO0VBQzdELElBQUksZ0JBQWdCLFdBQ2xCLE9BQU87T0FFUCxPQUFPLE1BQU0sWUFBWSxjQUFjLE9BQU8sZ0JBQWdCO0dBQzVELE1BQU0sRUFBRSxZQUFZLE9BQU8sT0FBTztHQUNsQyxNQUFNLFdBQVcsR0FBRyxPQUFPLFlBQVksR0FBRyxZQUFZO0dBRXRELE9BQU8sTUFBTSxXQURRLFFBQVEsS0FBSyxXQUFXLFNBQVMsUUFBUSxhQUFhLElBQUksT0FBTyxFQUFFLENBRXRGLEdBQ0EsT0FBTyxZQUFZLENBQUUsTUFBTSxpQkFBaUIsT0FB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
|
|
148
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZS1nZW5lcmF0b3IuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3N5bmNlci9jb2RlLWdlbmVyYXRvci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiO1xuXG5pbXBvcnQgY2hhbGsgZnJvbSBcImNoYWxrXCI7XG5pbXBvcnQgeyB1bmlxdWUgfSBmcm9tIFwicmFkYXNoaVwiO1xuXG5pbXBvcnQgeyBTb25hbXUgfSBmcm9tIFwiLi4vYXBpL3NvbmFtdVwiO1xuaW1wb3J0IHsgZm9ybWF0Q29kZSB9IGZyb20gXCIuLi9jb2RlLWZvcm1hdHRpbmdcIjtcbmltcG9ydCB7IFNEIH0gZnJvbSBcIi4uL2RpY3Qvc2RcIjtcbmltcG9ydCB7IEVudGl0eU1hbmFnZXIgfSBmcm9tIFwiLi4vZW50aXR5L2VudGl0eS1tYW5hZ2VyXCI7XG5pbXBvcnQgeyBBbHJlYWR5UHJvY2Vzc2VkRXhjZXB0aW9uIH0gZnJvbSBcIi4uL2V4Y2VwdGlvbnMvc28tZXhjZXB0aW9uc1wiO1xuaW1wb3J0IHsgTmFpdGUgfSBmcm9tIFwiLi4vbmFpdGUvbmFpdGVcIjtcbmltcG9ydCB7IHR5cGUgUmVuZGVyZWRUZW1wbGF0ZSB9IGZyb20gXCIuLi90ZW1wbGF0ZS90ZW1wbGF0ZVwiO1xuaW1wb3J0IHsgVGVtcGxhdGVNYW5hZ2VyIH0gZnJvbSBcIi4uL3RlbXBsYXRlL3RlbXBsYXRlLW1hbmFnZXJcIjtcbmltcG9ydCB7IEJVSUxUX0lOX1RZUEVTIH0gZnJvbSBcIi4uL3RlbXBsYXRlL3pvZC1jb252ZXJ0ZXJcIjtcbmltcG9ydCB7XG4gIHR5cGUgR2VuZXJhdGVPcHRpb25zLFxuICB0eXBlIFBhdGhBbmRDb2RlLFxuICB0eXBlIFRlbXBsYXRlS2V5LFxuICB0eXBlIFRlbXBsYXRlT3B0aW9ucyxcbn0gZnJvbSBcIi4uL3R5cGVzL3R5cGVzXCI7XG5pbXBvcnQgeyBldmVyeUFzeW5jLCBmaWx0ZXJBc3luYyB9IGZyb20gXCIuLi91dGlscy9hc3luYy11dGlsc1wiO1xuaW1wb3J0IHsgaXNUZXN0IH0gZnJvbSBcIi4uL3V0aWxzL2NvbnRyb2xsZXJcIjtcbmltcG9ydCB7IHdyYXBJZiB9IGZyb20gXCIuLi91dGlscy9sb2Rhc2gtYWJsZVwiO1xuaW1wb3J0IHsgdHlwZSBBYnNvbHV0ZVBhdGggfSBmcm9tIFwiLi4vdXRpbHMvcGF0aC11dGlsc1wiO1xuaW1wb3J0IHsgdHJhY2tXcml0dGVuIH0gZnJvbSBcIi4vZmlsZS10cmFja2luZ1wiO1xuaW1wb3J0IHsgc3luY2VyRmlsZUV4aXN0cywgc3luY2VyRmlsZXN5c3RlbSB9IGZyb20gXCIuL2ZpbGVzeXN0ZW0tZGVwZW5kZW5jaWVzXCI7XG5cbi8qKlxuICog7YWc7ZSM66a/7J2EIOugjOuNlOunge2VmOqzoCDtjIzsnbzroZwg7IOd7ISx7ZWp64uI64ukLlxuICogb3ZlcndyaXRlIOyYteyFmOydtCBmYWxzZeyduCDqsr3smrAsIOydtOuvuCDsobTsnqztlZjripQg7YyM7J287J2AIOqxtOuEiOucgeuLiOuLpC5cbiAqIEBwYXJhbSBrZXkgLSDthZztlIzrpr8g7YKkICjsmIg6IFwiZW50aXR5XCIsIFwibW9kZWxcIiwgXCJzZXJ2aWNlXCIg65OxKVxuICogQHBhcmFtIHRlbXBsYXRlT3B0aW9ucyAtIO2FnO2UjOumvyDroIzrjZTrp4Hsl5Ag7ZWE7JqU7ZWcIOyYteyFmFxuICogQHBhcmFtIF9nZW5lcmF0ZU9wdGlvbnMgLSDsg53shLEg7Ji17IWYIChvdmVyd3JpdGUg7Jes67aAKVxuICogQHJldHVybnMg7IOd7ISx65CcIO2MjOydvCDqsr3roZwg67Cw7Je0XG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZW5lcmF0ZVRlbXBsYXRlPFQgZXh0ZW5kcyBUZW1wbGF0ZUtleT4oXG4gIGtleTogVCxcbiAgdGVtcGxhdGVPcHRpb25zOiBUZW1wbGF0ZU9wdGlvbnNbVF0sXG4gIF9nZW5lcmF0ZU9wdGlvbnM/OiBHZW5lcmF0ZU9wdGlvbnMsXG4pOiBQcm9taXNlPEFic29sdXRlUGF0aFtdPiB7XG4gIGNvbnN0IGdlbmVyYXRlT3B0aW9ucyA9IHtcbiAgICBvdmVyd3JpdGU6IGZhbHNlLFxuICAgIC4uLl9nZW5lcmF0ZU9wdGlvbnMsXG4gIH07XG4gIE5haXRlLnQoXCJnZW5lcmF0ZVRlbXBsYXRlXCIsIHsga2V5LCB0ZW1wbGF0ZU9wdGlvbnMsIGdlbmVyYXRlT3B0aW9ucyB9KTtcblxuICAvLyDtgqQgY2hpbGRyZW5cbiAgY29uc3Qga2V5czogVGVtcGxhdGVLZXlbXSA9IFtrZXldO1xuXG4gIC8vIO2FnO2UjOumvyDroIzrjZRcbiAgY29uc3QgcGF0aEFuZENvZGVzID0gKFxuICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAga2V5cy5tYXAoYXN5bmMgKHRlbXBsYXRlS2V5KSA9PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCByZW5kZXJUZW1wbGF0ZSh0ZW1wbGF0ZUtleSwgdGVtcGxhdGVPcHRpb25zKTtcbiAgICAgIH0pLFxuICAgIClcbiAgKS5mbGF0KCk7XG5cbiAgY29uc3QgZmlsdGVyZWRQYXRoQW5kQ29kZXM6IFBhdGhBbmRDb2RlW10gPSBhd2FpdCAoYXN5bmMgKCkgPT4ge1xuICAgIGlmIChnZW5lcmF0ZU9wdGlvbnMub3ZlcndyaXRlKSB7XG4gICAgICByZXR1cm4gcGF0aEFuZENvZGVzO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gYXdhaXQgZmlsdGVyQXN5bmMocGF0aEFuZENvZGVzLCBhc3luYyAocGF0aEFuZENvZGUpID0+IHtcbiAgICAgICAgY29uc3QgeyB0YXJnZXRzIH0gPSBTb25hbXUuY29uZmlnLnN5bmM7XG4gICAgICAgIGNvbnN0IGZpbGVQYXRoID0gYCR7U29uYW11LmFwcFJvb3RQYXRofS8ke3BhdGhBbmRDb2RlLnBhdGh9YDtcbiAgICAgICAgY29uc3QgZHN0RmlsZVBhdGhzID0gdGFyZ2V0cy5tYXAoKHRhcmdldCkgPT4gZmlsZVBhdGgucmVwbGFjZShcIi86dGFyZ2V0L1wiLCBgLyR7dGFyZ2V0fS9gKSk7XG4gICAgICAgIHJldHVybiBhd2FpdCBldmVyeUFzeW5jKFxuICAgICAgICAgIGRzdEZpbGVQYXRocyxcbiAgICAgICAgICBhc3luYyAoZHN0UGF0aCkgPT4gIShhd2FpdCBzeW5jZXJGaWxlRXhpc3RzKGRzdFBhdGgpKSxcbiAgICAgICAgKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfSkoKTtcblxuICBpZiAoZmlsdGVyZWRQYXRoQW5kQ29kZXMubGVuZ3RoID09PSAwKSB7XG4gICAgdGhyb3cgbmV3IEFscmVhZHlQcm9jZXNzZWRFeGNlcHRpb24oU0QoXCJzb25hbXUuZXJyb3IuYWxsRmlsZXNFeGlzdFwiKSk7XG4gIH1cblxuICByZXR1cm4gKFxuICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgZmlsdGVyZWRQYXRoQW5kQ29kZXMubWFwKChwYXRoQW5kQ29kZSkgPT4gd3JpdGVDb2RlVG9QYXRoRWFjaFRhcmdldChwYXRoQW5kQ29kZSkpLFxuICAgIClcbiAgKS5mbGF0KCk7XG59XG5cbi8qKlxuICog7YWc7ZSM66a/7J2EIOugjOuNlOunge2VmOyXrCBQYXRoQW5kQ29kZSDqsJ3ssrTrpbwg67CY7ZmY7ZWp64uI64ukLlxuICog7YyM7J2866GcIOyTsOyngCDslYrqs6Ag66mU66qo66as7IOB7JeQ7ISc66eMIOugjOuNlOunge2VqeuLiOuLpC5cbiAqIEBwYXJhbSBrZXkgLSDthZztlIzrpr8g7YKkXG4gKiBAcGFyYW0gb3B0aW9ucyAtIO2FnO2UjOumvyDroIzrjZTrp4Eg7Ji17IWYXG4gKiBAcmV0dXJucyDqsr3roZzsmYAg7L2U65OcIOyMjeydmCDrsLDsl7RcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlbmRlclRlbXBsYXRlPFQgZXh0ZW5kcyBrZXlvZiBUZW1wbGF0ZU9wdGlvbnM+KFxuICBrZXk6IFQsXG4gIG9wdGlvbnM6IFRlbXBsYXRlT3B0aW9uc1tUXSxcbik6IFByb21pc2U8UGF0aEFuZENvZGVbXT4ge1xuICBOYWl0ZS50KFwicmVuZGVyVGVtcGxhdGVcIiwgeyBrZXksIG9wdGlvbnMgfSk7XG5cbiAgY29uc3QgdGVtcGxhdGUgPSBUZW1wbGF0ZU1hbmFnZXIuZ2V0KGtleSk7XG5cbiAgY29uc3QgcmVuZGVyZWQgPSBhd2FpdCB0ZW1wbGF0ZS5yZW5kZXIob3B0aW9ucyk7XG4gIGNvbnN0IHJlc29sdmVkID0gYXdhaXQgcmVzb2x2ZVJlbmRlcmVkVGVtcGxhdGUoa2V5LCByZW5kZXJlZCk7XG5cbiAgbGV0IHByZVRlbXBsYXRlUmVzb2x2ZWQ6IFBhdGhBbmRDb2RlW10gPSBbXTtcbiAgaWYgKHJlbmRlcmVkLnByZVRlbXBsYXRlcykge1xuICAgIHByZVRlbXBsYXRlUmVzb2x2ZWQgPSAoXG4gICAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgcmVuZGVyZWQucHJlVGVtcGxhdGVzLm1hcCgoeyBrZXk6IHByZVRlbXBsYXRlS2V5LCBvcHRpb25zOiBwcmVUZW1wbGF0ZU9wdGlvbnMgfSkgPT4ge1xuICAgICAgICAgIHJldHVybiByZW5kZXJUZW1wbGF0ZShwcmVUZW1wbGF0ZUtleSwgcHJlVGVtcGxhdGVPcHRpb25zKTtcbiAgICAgICAgfSksXG4gICAgICApXG4gICAgKS5mbGF0KCk7XG4gIH1cblxuICByZXR1cm4gW3Jlc29sdmVkLCAuLi5wcmVUZW1wbGF0ZVJlc29sdmVkXTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gcmVzb2x2ZVJlbmRlcmVkVGVtcGxhdGUoXG4gIGtleTogVGVtcGxhdGVLZXksXG4gIHJlc3VsdDogUmVuZGVyZWRUZW1wbGF0ZSxcbik6IFByb21pc2U8UGF0aEFuZENvZGU+IHtcbiAgTmFpdGUudChgcmVzb2x2ZVJlbmRlcmVkVGVtcGxhdGUke2tleX1gLCB7IGtleSwgcmVzdWx0IH0pO1xuXG4gIGNvbnN0IHsgdGFyZ2V0LCBwYXRoOiBmaWxlUGF0aCwgYm9keSwgaW1wb3J0S2V5cywgY3VzdG9tSGVhZGVycyB9ID0gcmVzdWx0O1xuXG4gIC8vIGltcG9ydCDtlaAg64yA7IOB7J2YIOuMgOyDgSBwYXRoIOy2lOy2nFxuICBjb25zdCBidWlsdEluU2NoZW1hTmFtZXMgPSBPYmplY3QudmFsdWVzKEJVSUxUX0lOX1RZUEVTKS5tYXAoXG4gICAgKGluZm8pID0+XG4gICAgICAvKiBTQUZFVFk6IFR5cGVTY3JpcHQgQVNUIO2MjOyLseqzvCDrj5nquLDtmZQg7J6F66ClIOqzhOyVveydtCDsnbQg6rCS7J2YIO2DgOyeheydhCDrs7TsnqXtlZzri6QuICovIGluZm8uc2NoZW1hTmFtZSBhcyBzdHJpbmcsXG4gICk7XG4gIGNvbnN0IGltcG9ydERlZnMgPSBpbXBvcnRLZXlzXG4gICAgLy8g64K07J6lIO2DgOyehSDsiqTtgqTrp4jripQg7J2066+4IHNvbmFtdeyXkOyEnCBpbXBvcnTrkJjrr4DroZwg7KCc7Jm4XG4gICAgLmZpbHRlcigoaW1wb3J0S2V5KSA9PiAhYnVpbHRJblNjaGVtYU5hbWVzLmluY2x1ZGVzKGltcG9ydEtleSkpXG4gICAgLnJlZHVjZShcbiAgICAgIChyLCBpbXBvcnRLZXkpID0+IHtcbiAgICAgICAgbGV0IG1vZHVsZVBhdGggPSBpbXBvcnRLZXk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgbW9kdWxlUGF0aCA9IEVudGl0eU1hbmFnZXIuZ2V0TW9kdWxlUGF0aChpbXBvcnRLZXkpO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIGBbcmVzb2x2ZVJlbmRlcmVkVGVtcGxhdGU6JHtrZXl9XSAke2ltcG9ydEtleX0g66qo65OIIOqyveuhnCDssL7quLAg7Iuk7YyoOiAke2Vycm9yfWAsXG4gICAgICAgICAgICB7IGNhdXNlOiBlcnJvciB9LFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGltcG9ydFBhdGggPSBtb2R1bGVQYXRoO1xuICAgICAgICBpZiAobW9kdWxlUGF0aC5pbmNsdWRlcyhcIi9cIikgfHwgbW9kdWxlUGF0aC5pbmNsdWRlcyhcIi5cIikpIHtcbiAgICAgICAgICBpbXBvcnRQYXRoID0gd3JhcElmKHBhdGgucmVsYXRpdmUocGF0aC5kaXJuYW1lKGZpbGVQYXRoKSwgbW9kdWxlUGF0aCksIChwKSA9PiBbXG4gICAgICAgICAgICAhcC5zdGFydHNXaXRoKFwiLlwiKSxcbiAgICAgICAgICAgIGAuLyR7cH1gLFxuICAgICAgICAgIF0pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8g6rCZ7J2AIO2MjOydvOyXkOyEnCBpbXBvcnQg7ZWY64qUIOqyveyasCBrZXlzIOuhnCDrgpjsl7Qg7LKY66asXG4gICAgICAgIGNvbnN0IGV4aXN0c09uZSA9IHIuZmluZCgoaW1wb3J0RGVmKSA9PiBpbXBvcnREZWYuZnJvbSA9PT0gaW1wb3J0UGF0aCk7XG4gICAgICAgIGlmIChleGlzdHNPbmUpIHtcbiAgICAgICAgICBleGlzdHNPbmUua2V5cyA9IHVuaXF1ZShleGlzdHNPbmUua2V5cy5jb25jYXQoaW1wb3J0S2V5KSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgci5wdXNoKHtcbiAgICAgICAgICAgIGtleXM6IFtpbXBvcnRLZXldLFxuICAgICAgICAgICAgZnJvbTogaW1wb3J0UGF0aCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcjtcbiAgICAgIH0sXG4gICAgICAvKiBTQUZFVFk6IFR5cGVTY3JpcHQgQVNUIO2MjOyLseqzvCDrj5nquLDtmZQg7J6F66ClIOqzhOyVveydtCDsnbQg6rCS7J2YIO2DgOyeheydhCDrs7TsnqXtlZzri6QuICovIFtdIGFzIHtcbiAgICAgICAga2V5czogc3RyaW5nW107XG4gICAgICAgIGZyb206IHN0cmluZztcbiAgICAgIH1bXSxcbiAgICApXG4gICAgLy8g7IWA7ZSEIOywuOyhsCDrsKnsp4BcbiAgICAuZmlsdGVyKChpbXBvcnREZWYpID0+ICFmaWxlUGF0aC5lbmRzV2l0aChgJHtpbXBvcnREZWYuZnJvbS5yZXBsYWNlKFwiLi9cIiwgXCJcIil9LnRzYCkpO1xuXG4gIC8vIOy7pOyKpO2FgCDtl6TrjZQg7Y+s7ZWo7ZWY7JesIO2XpOuNlCDsg53shLFcbiAgY29uc3QgaGVhZGVyID0gW1xuICAgIC4uLihjdXN0b21IZWFkZXJzID8/IFtdKSxcbiAgICAuLi5pbXBvcnREZWZzLm1hcChcbiAgICAgIChpbXBvcnREZWYpID0+IGBpbXBvcnQgeyAke2ltcG9ydERlZi5rZXlzLmpvaW4oXCIsIFwiKX0gfSBmcm9tICcke2ltcG9ydERlZi5mcm9tfSdgLFxuICAgICksXG4gIF0uam9pbihcIlxcblwiKTtcblxuICBjb25zdCBmb3JtYXR0ZWQgPSBhd2FpdCAoYXN5bmMgKCkgPT4ge1xuICAgIGlmIChrZXkgPT09IFwiZ2VuZXJhdGVkX2h0dHBcIikge1xuICAgICAgcmV0dXJuIFtoZWFkZXIsIGJvZHldLmpvaW4oXCJcXG5cXG5cIik7XG4gICAgfSBlbHNlIHtcbiAgICAgIE5haXRlLnQoXCJyZXNvbHZlUmVuZGVyZWRUZW1wbGF0ZTpiZWZvcmVGb3JtYXRcIiwgeyBrZXksIGhlYWRlciwgYm9keSB9KTtcbiAgICAgIGNvbnN0IGZvcm1hdHRlZENvZGUgPSBhd2FpdCBmb3JtYXRDb2RlKFxuICAgICAgICBbaGVhZGVyLCBib2R5XS5qb2luKFwiXFxuXFxuXCIpLFxuICAgICAgICBgJHtTb25hbXUuYXBwUm9vdFBhdGh9LyR7ZmlsZVBhdGh9YCxcbiAgICAgICk7XG4gICAgICBOYWl0ZS50KGByZXNvbHZlUmVuZGVyZWRUZW1wbGF0ZTpmb3JtYXR0ZWQ6JHtrZXl9YCwgZm9ybWF0dGVkQ29kZSk7XG4gICAgICByZXR1cm4gZm9ybWF0dGVkQ29kZTtcbiAgICB9XG4gIH0pKCk7XG5cbiAgcmV0dXJuIHtcbiAgICBwYXRoOiBgJHt0YXJnZXR9LyR7ZmlsZVBhdGh9YCxcbiAgICBjb2RlOiBmb3JtYXR0ZWQsXG4gIH07XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHdyaXRlQ29kZVRvUGF0aEVhY2hUYXJnZXQocGF0aEFuZENvZGU6IFBhdGhBbmRDb2RlKTogUHJvbWlzZTxBYnNvbHV0ZVBhdGhbXT4ge1xuICBjb25zdCB7IHRhcmdldHMgfSA9IFNvbmFtdS5jb25maWcuc3luYztcbiAgY29uc3QgeyBhcHBSb290UGF0aCB9ID0gU29uYW11O1xuICBjb25zdCBmaWxlUGF0aCA9XG4gICAgLyogU0FGRVRZOiBUeXBlU2NyaXB0IEFTVCDtjIzsi7Hqs7wg64+Z6riw7ZmUIOyeheugpSDqs4Tslb3snbQg7J20IOqwkuydmCDtg4DsnoXsnYQg67O07J6l7ZWc64ukLiAqLyBgJHtTb25hbXUuYXBwUm9vdFBhdGh9LyR7cGF0aEFuZENvZGUucGF0aH1gIGFzIEFic29sdXRlUGF0aDtcblxuICBjb25zdCBkc3RGaWxlUGF0aHMgPSB1bmlxdWUoXG4gICAgLyogU0FGRVRZOiBUeXBlU2NyaXB0IEFTVCDtjIzsi7Hqs7wg64+Z6riw7ZmUIOyeheugpSDqs4Tslb3snbQg7J20IOqwkuydmCDtg4DsnoXsnYQg67O07J6l7ZWc64ukLiAqLyB0YXJnZXRzLm1hcChcbiAgICAgICh0YXJnZXQpID0+IGZpbGVQYXRoLnJlcGxhY2UoXCIvOnRhcmdldC9cIiwgYC8ke3RhcmdldH0vYCksXG4gICAgKSBhcyBBYnNvbHV0ZVBhdGhbXSxcbiAgKTtcbiAgcmV0dXJuIGF3YWl0IFByb21pc2UuYWxsKFxuICAgIGRzdEZpbGVQYXRocy5tYXAoYXN5bmMgKGRzdEZpbGVQYXRoKSA9PiB7XG4gICAgICBjb25zdCBkaXIgPSBwYXRoLmRpcm5hbWUoZHN0RmlsZVBhdGgpO1xuICAgICAgaWYgKCEoYXdhaXQgc3luY2VyRmlsZUV4aXN0cyhkaXIpKSkge1xuICAgICAgICBhd2FpdCBzeW5jZXJGaWxlc3lzdGVtLm1rZGlyKGRpciwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gICAgICB9XG4gICAgICBhd2FpdCBzeW5jZXJGaWxlc3lzdGVtLndyaXRlRmlsZShkc3RGaWxlUGF0aCwgcGF0aEFuZENvZGUuY29kZSk7XG4gICAgICAvLyDrsKnquIgg7Jqw66as6rCAIOyTtCBwYXRo66W8IOuTseuhnSDihpIgZGV2IHdhdGNoZXLsnZgg7ZuE7IaNIGNoYW5nZSDsnbTrsqTtirjqsIBcbiAgICAgIC8vIOyZuOu2gCDrs4Dqsr3snLzroZwg7Jik7J2465CY7KeAIOyViuuPhOuhnSDqsbDrpoQg6rCA65OcIOyekOujjCDsoJzqs7UuXG4gICAgICBhd2FpdCB0cmFja1dyaXR0ZW4oZHN0RmlsZVBhdGgpO1xuICAgICAgIWlzVGVzdCgpICYmXG4gICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgIGNoYWxrLmJvbGQoXCJHZW5lcmF0ZWQ6IFwiKSArIGNoYWxrLmJsdWUoYCR7ZHN0RmlsZVBhdGgucmVwbGFjZShgJHthcHBSb290UGF0aH0vYCwgXCJcIil9YCksXG4gICAgICAgICk7XG4gICAgICByZXR1cm4gZHN0RmlsZVBhdGg7XG4gICAgfSksXG4gICk7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBbUNBLGVBQXNCLGlCQUNwQixLQUNBLGlCQUNBLGtCQUN5QjtDQUN6QixNQUFNLGtCQUFrQjtFQUN0QixXQUFXO0VBQ1gsR0FBRztDQUNMO0NBQ0EsTUFBTSxFQUFFLG9CQUFvQjtFQUFFO0VBQUs7RUFBaUI7Q0FBZ0IsQ0FBQztDQUdyRSxNQUFNLE9BQXNCLENBQUMsR0FBRztDQUdoQyxNQUFNLGdCQUNKLE1BQU0sUUFBUSxJQUNaLEtBQUssSUFBSSxPQUFPLGdCQUFnQjtFQUM5QixPQUFPLE1BQU0sZUFBZSxhQUFhLGVBQWU7Q0FDMUQsQ0FBQyxDQUNILEVBQUEsQ0FDQSxLQUFLO0NBRVAsTUFBTSx1QkFBc0MsT0FBTyxZQUFZO0VBQzdELElBQUksZ0JBQWdCLFdBQ2xCLE9BQU87T0FFUCxPQUFPLE1BQU0sWUFBWSxjQUFjLE9BQU8sZ0JBQWdCO0dBQzVELE1BQU0sRUFBRSxZQUFZLE9BQU8sT0FBTztHQUNsQyxNQUFNLFdBQVcsR0FBRyxPQUFPLFlBQVksR0FBRyxZQUFZO0dBQ3RELE1BQU0sZUFBZSxRQUFRLEtBQUssV0FBVyxTQUFTLFFBQVEsYUFBYSxJQUFJLE9BQU8sRUFBRSxDQUFDO0dBQ3pGLE9BQU8sTUFBTSxXQUNYLGNBQ0EsT0FBTyxZQUFZLENBQUUs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
|
|
@@ -7,7 +7,7 @@ import { EntityManager, init_entity_manager } from "../entity/entity-manager.js"
|
|
|
7
7
|
import { init_filesystem_dependencies, syncerFileExists, syncerFilesystem } from "./filesystem-dependencies.js";
|
|
8
8
|
import { generateTemplate, init_code_generator } from "./code-generator.js";
|
|
9
9
|
import chalk from "chalk";
|
|
10
|
-
|
|
10
|
+
// src/syncer/entity-operations.ts
|
|
11
11
|
/**
|
|
12
12
|
* 새로운 엔티티를 생성합니다.
|
|
13
13
|
* entityId는 반드시 CamelCase 형식이어야 합니다.
|
|
@@ -51,8 +51,7 @@ var init_entity_operations = __esmMin((() => {
|
|
|
51
51
|
init_code_generator();
|
|
52
52
|
init_filesystem_dependencies();
|
|
53
53
|
}));
|
|
54
|
-
//#endregion
|
|
55
54
|
init_entity_operations();
|
|
56
55
|
export { createEntity, delEntity, init_entity_operations };
|
|
57
56
|
|
|
58
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
57
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LW9wZXJhdGlvbnMuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3N5bmNlci9lbnRpdHktb3BlcmF0aW9ucy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY2hhbGsgZnJvbSBcImNoYWxrXCI7XG5cbmltcG9ydCB7IFNvbmFtdSB9IGZyb20gXCIuLi9hcGkvc29uYW11XCI7XG5pbXBvcnQgeyBTRCB9IGZyb20gXCIuLi9kaWN0L3NkXCI7XG5pbXBvcnQgeyBFbnRpdHlNYW5hZ2VyIH0gZnJvbSBcIi4uL2VudGl0eS9lbnRpdHktbWFuYWdlclwiO1xuaW1wb3J0IHsgQmFkUmVxdWVzdEV4Y2VwdGlvbiB9IGZyb20gXCIuLi9leGNlcHRpb25zL3NvLWV4Y2VwdGlvbnNcIjtcbmltcG9ydCB7IHR5cGUgVGVtcGxhdGVPcHRpb25zIH0gZnJvbSBcIi4uL3R5cGVzL3R5cGVzXCI7XG5pbXBvcnQgeyBpc1Rlc3QgfSBmcm9tIFwiLi4vdXRpbHMvY29udHJvbGxlclwiO1xuaW1wb3J0IHsgZ2VuZXJhdGVUZW1wbGF0ZSB9IGZyb20gXCIuL2NvZGUtZ2VuZXJhdG9yXCI7XG5pbXBvcnQgeyBzeW5jZXJGaWxlRXhpc3RzLCBzeW5jZXJGaWxlc3lzdGVtIH0gZnJvbSBcIi4vZmlsZXN5c3RlbS1kZXBlbmRlbmNpZXNcIjtcblxuLyoqXG4gKiDsg4jroZzsmrQg7JeU7Yuw7Yuw66W8IOyDneyEse2VqeuLiOuLpC5cbiAqIGVudGl0eUlk64qUIOuwmOuTnOyLnCBDYW1lbENhc2Ug7ZiV7Iud7J207Ja07JW8IO2VqeuLiOuLpC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZUVudGl0eShcbiAgZm9ybTogT21pdDxUZW1wbGF0ZU9wdGlvbnNbXCJlbnRpdHlcIl0sIFwidGl0bGVcIj4gJiB7IHRpdGxlOiBzdHJpbmcgfSxcbikge1xuICBpZiAoIS9eW0EtWl1bYS16QS1aMC05XSokLy50ZXN0KGZvcm0uZW50aXR5SWQpKSB7XG4gICAgdGhyb3cgbmV3IEJhZFJlcXVlc3RFeGNlcHRpb24oU0QoXCJzb25hbXUuZXJyb3IuZW50aXR5SWRDYW1lbENhc2VcIikpO1xuICB9XG5cbiAgYXdhaXQgZ2VuZXJhdGVUZW1wbGF0ZShcImVudGl0eVwiLCBmb3JtKTtcblxuICAvLyByZWxvYWQgZW50aXRpZXNcbiAgYXdhaXQgRW50aXR5TWFuYWdlci5yZWxvYWQoKTtcbn1cblxuLyoqXG4gKiDsl5Tti7Dti7Drpbwg7IKt7KCc7ZWp64uI64ukLlxuICogcGFyZW50SWTqsIAg7J6I64qUIOyEnOu4jCDsl5Tti7Dti7DsnZgg6rK97JqwIGVudGl0eS5qc29u66eMIOyCreygnO2VmOqzoCxcbiAqIOujqO2KuCDsl5Tti7Dti7DsnZgg6rK97JqwIOuUlOugie2GoOumrCDsoITssrTsmYAg7YOA6rKfIOuUlOugie2GoOumrOulvCDsgq3soJztlanri4jri6QuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBkZWxFbnRpdHkoZW50aXR5SWQ6IHN0cmluZyk6IFByb21pc2U8eyBkZWxQYXRoczogc3RyaW5nW10gfT4ge1xuICBjb25zdCBlbnRpdHkgPSBFbnRpdHlNYW5hZ2VyLmdldChlbnRpdHlJZCk7XG5cbiAgY29uc3QgZGVsUGF0aHMgPSAoKCkgPT4ge1xuICAgIGlmIChlbnRpdHkucGFyZW50SWQpIHtcbiAgICAgIHJldHVybiBbXG4gICAgICAgIGAke1NvbmFtdS5hcGlSb290UGF0aH0vc3JjL2FwcGxpY2F0aW9uLyR7ZW50aXR5Lm5hbWVzLnBhcmVudEZzfS8ke2VudGl0eS5uYW1lcy5mc30uZW50aXR5Lmpzb25gLFxuICAgICAgXTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIFtcbiAgICAgICAgYCR7U29uYW11LmFwaVJvb3RQYXRofS9zcmMvYXBwbGljYXRpb24vJHtlbnRpdHkubmFtZXMuZnN9YCxcbiAgICAgICAgYCR7U29uYW11LmFwaVJvb3RQYXRofS9kaXN0L2FwcGxpY2F0aW9uLyR7ZW50aXR5Lm5hbWVzLmZzfWAsXG4gICAgICAgIC4uLlNvbmFtdS5jb25maWcuc3luYy50YXJnZXRzLmZsYXRNYXAoKHRhcmdldCkgPT4gW1xuICAgICAgICAgIGAke1NvbmFtdS5hcHBSb290UGF0aH0vJHt0YXJnZXR9L3NyYy9zZXJ2aWNlcy8ke2VudGl0eS5uYW1lcy5mc31gLFxuICAgICAgICBdKSxcbiAgICAgIF07XG4gICAgfVxuICB9KSgpOyAvLyBpaWZlXG5cbiAgZm9yIChjb25zdCBkZWxQYXRoIG9mIGRlbFBhdGhzKSB7XG4gICAgaWYgKGF3YWl0IHN5bmNlckZpbGVFeGlzdHMoZGVsUGF0aCkpIHtcbiAgICAgICFpc1Rlc3QoKSAmJiBjb25zb2xlLmxvZyhjaGFsay5yZWQoYERFTEVURSAke2RlbFBhdGh9YCkpO1xuICAgICAgYXdhaXQgc3luY2VyRmlsZXN5c3RlbS5ybShkZWxQYXRoLCB7IHJlY3Vyc2l2ZTogdHJ1ZSwgZm9yY2U6IHRydWUgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICFpc1Rlc3QoKSAmJiBjb25zb2xlLmxvZyhjaGFsay55ZWxsb3coYE5PVF9FWElTVFMgJHtkZWxQYXRofWApKTtcbiAgICB9XG4gIH1cblxuICAvLyByZWxvYWQgZW50aXRpZXNcbiAgYXdhaXQgRW50aXR5TWFuYWdlci5yZWxvYWQoKTtcblxuICByZXR1cm4geyBkZWxQYXRocyB9O1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQWVBLGVBQXNCLGFBQ3BCLE1BQ0E7Q0FDQSxJQUFJLENBQUMsc0JBQXNCLEtBQUssS0FBSyxRQUFRLEdBQzNDLE1BQU0sSUFBSSxvQkFBb0IsR0FBRyxnQ0FBZ0MsQ0FBQztDQUdwRSxNQUFNLGlCQUFpQixVQUFVLElBQUk7Q0FHckMsTUFBTSxjQUFjLE9BQU87QUFDN0I7Ozs7OztBQU9BLGVBQXNCLFVBQVUsVUFBbUQ7Q0FDakYsTUFBTSxTQUFTLGNBQWMsSUFBSSxRQUFRO0NBRXpDLE1BQU0sa0JBQWtCO0VBQ3RCLElBQUksT0FBTyxVQUNULE9BQU8sQ0FDTCxHQUFHLE9BQU8sWUFBWSxtQkFBbUIsT0FBTyxNQUFNLFNBQVMsR0FBRyxPQUFPLE1BQU0sR0FBRyxhQUNwRjtPQUVBLE9BQU87R0FDTCxHQUFHLE9BQU8sWUFBWSxtQkFBbUIsT0FBTyxNQUFNO0dBQ3RELEdBQUcsT0FBTyxZQUFZLG9CQUFvQixPQUFPLE1BQU07R0FDdkQsR0FBRyxPQUFPLE9BQU8sS0FBSyxRQUFRLFNBQVMsV0FBVyxDQUNoRCxHQUFHLE9BQU8sWUFBWSxHQUFHLE9BQU8sZ0JBQWdCLE9BQU8sTUFBTSxJQUMvRCxDQUFDO0VBQ0g7Q0FFSixFQUFBLENBQUc7Q0FFSCxLQUFLLE1BQU0sV0FBVyxVQUNwQixJQUFJLE1BQU0saUJBQWlCLE9BQU8sR0FBRztFQUNuQyxDQUFDLE9BQU8sS0FBSyxRQUFRLElBQUksTUFBTSxJQUFJLFVBQVUsU0FBUyxDQUFDO0VBQ3ZELE1BQU0saUJBQWlCLEdBQUcsU0FBUztHQUFFLFdBQVc7R0FBTSxPQUFPO0VBQUssQ0FBQztDQUNyRSxPQUNFLENBQUMsT0FBTyxLQUFLLFFBQVEsSUFBSSxNQUFNLE9BQU8sY0FBYyxTQUFTLENBQUM7Q0FLbEUsTUFBTSxjQUFjLE9BQU87Q0FFM0IsT0FBTyxFQUFFLFNBQVM7QUFDcEI7O0NBL0RzQyxZQUFBO0NBQ1AsUUFBQTtDQUN5QixvQkFBQTtDQUNTLG1CQUFBO0NBRXJCLGdCQUFBO0NBQ08sb0JBQUE7Q0FDMkIsNkJBQUEifQ==
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { __esmMin } from "../_virtual/_rolldown/runtime.js";
|
|
2
|
-
|
|
2
|
+
// src/syncer/event-batcher.ts
|
|
3
3
|
/**
|
|
4
4
|
* 파일 변경 이벤트를 batch로 모아 한 번에 처리하는 throttler를 만듭니다.
|
|
5
5
|
*
|
|
@@ -55,7 +55,6 @@ function createFileEventBatcher(options) {
|
|
|
55
55
|
};
|
|
56
56
|
}
|
|
57
57
|
var init_event_batcher = __esmMin((() => {}));
|
|
58
|
-
//#endregion
|
|
59
58
|
init_event_batcher();
|
|
60
59
|
export { createFileEventBatcher, init_event_batcher };
|
|
61
60
|
|
package/dist/syncer/file-copy.js
CHANGED
|
@@ -2,7 +2,7 @@ import { __esmMin } from "../_virtual/_rolldown/runtime.js";
|
|
|
2
2
|
import { formatCode, init_code_formatting } from "../code-formatting/index.js";
|
|
3
3
|
import { init_filesystem_dependencies, syncerFileExists, syncerFilesystem } from "./filesystem-dependencies.js";
|
|
4
4
|
import path, { dirname } from "node:path";
|
|
5
|
-
|
|
5
|
+
// src/syncer/file-copy.ts
|
|
6
6
|
/**
|
|
7
7
|
* Syncer 파일시스템 경계를 통해 파일을 복사하고 클라이언트용 import 경로를 변환합니다.
|
|
8
8
|
*/
|
|
@@ -29,8 +29,7 @@ var init_file_copy = __esmMin((() => {
|
|
|
29
29
|
init_code_formatting();
|
|
30
30
|
init_filesystem_dependencies();
|
|
31
31
|
}));
|
|
32
|
-
//#endregion
|
|
33
32
|
init_file_copy();
|
|
34
33
|
export { copyFileWithReplaceCoreToShared, init_file_copy };
|
|
35
34
|
|
|
36
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1jb3B5LmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zeW5jZXIvZmlsZS1jb3B5LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBwYXRoLCB7IGRpcm5hbWUgfSBmcm9tIFwibm9kZTpwYXRoXCI7XG5cbmltcG9ydCB7IGZvcm1hdENvZGUgfSBmcm9tIFwiLi4vY29kZS1mb3JtYXR0aW5nXCI7XG5pbXBvcnQgeyBzeW5jZXJGaWxlRXhpc3RzLCBzeW5jZXJGaWxlc3lzdGVtIH0gZnJvbSBcIi4vZmlsZXN5c3RlbS1kZXBlbmRlbmNpZXNcIjtcblxuLyoqXG4gKiBTeW5jZXIg7YyM7J287Iuc7Iqk7YWcIOqyveqzhOulvCDthrXtlbQg7YyM7J287J2EIOuzteyCrO2VmOqzoCDtgbTrnbzsnbTslrjtirjsmqkgaW1wb3J0IOqyveuhnOulvCDrs4DtmZjtlanri4jri6QuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjb3B5RmlsZVdpdGhSZXBsYWNlQ29yZVRvU2hhcmVkKFxuICBmcm9tUGF0aDogc3RyaW5nLFxuICB0b1BhdGg6IHN0cmluZyxcbiAgc3luY0hlYWRlcj86IHN0cmluZyxcbik6IFByb21pc2U8Ym9vbGVhbj4ge1xuICBpZiAoIShhd2FpdCBzeW5jZXJGaWxlRXhpc3RzKGZyb21QYXRoKSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBvbGRGaWxlQ29udGVudCA9IGF3YWl0IHN5bmNlckZpbGVzeXN0ZW0ucmVhZEZpbGUoZnJvbVBhdGgsIFwidXRmLThcIik7XG4gIGxldCBuZXdGaWxlQ29udGVudCA9IHJlcGxhY2VDb3JlSW1wb3J0KG9sZEZpbGVDb250ZW50LCB0b1BhdGgpO1xuXG4gIGlmIChzeW5jSGVhZGVyKSB7XG4gICAgY29uc3QgZ2VuZXJhdGVkQmxvY2tSZWdleCA9IC9cXC9cXCpcXCpcXHI/XFxuIFxcKiBAZ2VuZXJhdGVkXFxyP1xcbltcXHNcXFNdKj9cXCpcXC9cXHI/XFxuKFxccj9cXG4pKi87XG4gICAgbmV3RmlsZUNvbnRlbnQgPSBnZW5lcmF0ZWRCbG9ja1JlZ2V4LnRlc3QobmV3RmlsZUNvbnRlbnQpXG4gICAgICA/
|
|
35
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1jb3B5LmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zeW5jZXIvZmlsZS1jb3B5LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBwYXRoLCB7IGRpcm5hbWUgfSBmcm9tIFwibm9kZTpwYXRoXCI7XG5cbmltcG9ydCB7IGZvcm1hdENvZGUgfSBmcm9tIFwiLi4vY29kZS1mb3JtYXR0aW5nXCI7XG5pbXBvcnQgeyBzeW5jZXJGaWxlRXhpc3RzLCBzeW5jZXJGaWxlc3lzdGVtIH0gZnJvbSBcIi4vZmlsZXN5c3RlbS1kZXBlbmRlbmNpZXNcIjtcblxuLyoqXG4gKiBTeW5jZXIg7YyM7J287Iuc7Iqk7YWcIOqyveqzhOulvCDthrXtlbQg7YyM7J287J2EIOuzteyCrO2VmOqzoCDtgbTrnbzsnbTslrjtirjsmqkgaW1wb3J0IOqyveuhnOulvCDrs4DtmZjtlanri4jri6QuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjb3B5RmlsZVdpdGhSZXBsYWNlQ29yZVRvU2hhcmVkKFxuICBmcm9tUGF0aDogc3RyaW5nLFxuICB0b1BhdGg6IHN0cmluZyxcbiAgc3luY0hlYWRlcj86IHN0cmluZyxcbik6IFByb21pc2U8Ym9vbGVhbj4ge1xuICBpZiAoIShhd2FpdCBzeW5jZXJGaWxlRXhpc3RzKGZyb21QYXRoKSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBvbGRGaWxlQ29udGVudCA9IGF3YWl0IHN5bmNlckZpbGVzeXN0ZW0ucmVhZEZpbGUoZnJvbVBhdGgsIFwidXRmLThcIik7XG4gIGxldCBuZXdGaWxlQ29udGVudCA9IHJlcGxhY2VDb3JlSW1wb3J0KG9sZEZpbGVDb250ZW50LCB0b1BhdGgpO1xuXG4gIGlmIChzeW5jSGVhZGVyKSB7XG4gICAgY29uc3QgZ2VuZXJhdGVkQmxvY2tSZWdleCA9IC9cXC9cXCpcXCpcXHI/XFxuIFxcKiBAZ2VuZXJhdGVkXFxyP1xcbltcXHNcXFNdKj9cXCpcXC9cXHI/XFxuKFxccj9cXG4pKi87XG4gICAgbmV3RmlsZUNvbnRlbnQgPSBnZW5lcmF0ZWRCbG9ja1JlZ2V4LnRlc3QobmV3RmlsZUNvbnRlbnQpXG4gICAgICA/IG5ld0ZpbGVDb250ZW50LnJlcGxhY2UoZ2VuZXJhdGVkQmxvY2tSZWdleCwgYCR7c3luY0hlYWRlcn1cXG5cXG5gKVxuICAgICAgOiBgJHtzeW5jSGVhZGVyfVxcblxcbiR7bmV3RmlsZUNvbnRlbnR9YDtcbiAgfVxuXG4gIGlmICh0b1BhdGguZW5kc1dpdGgoXCIudHNcIikgfHwgdG9QYXRoLmVuZHNXaXRoKFwiLnRzeFwiKSkge1xuICAgIG5ld0ZpbGVDb250ZW50ID0gYXdhaXQgZm9ybWF0Q29kZShuZXdGaWxlQ29udGVudCwgdG9QYXRoKTtcbiAgfVxuXG4gIGF3YWl0IHN5bmNlckZpbGVzeXN0ZW0ud3JpdGVGaWxlKHRvUGF0aCwgbmV3RmlsZUNvbnRlbnQpO1xuICByZXR1cm4gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gcmVwbGFjZUNvcmVJbXBvcnQoc291cmNlOiBzdHJpbmcsIHRvUGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3Qgc3JjTWF0Y2ggPSB0b1BhdGgubWF0Y2goL14oLitcXC9zcmMpXFwvLyk7XG4gIGlmICghc3JjTWF0Y2gpIHtcbiAgICByZXR1cm4gc291cmNlO1xuICB9XG5cbiAgY29uc3Qgc2VydmljZXNEaXIgPSBwYXRoLmpvaW4oc3JjTWF0Y2hbMV0sIFwic2VydmljZXNcIik7XG4gIGNvbnN0IHJlbGF0aXZlUGF0aCA9IHBhdGgucmVsYXRpdmUoZGlybmFtZSh0b1BhdGgpLCBzZXJ2aWNlc0Rpcik7XG4gIGNvbnN0IHNoYXJlZFBhdGggPSByZWxhdGl2ZVBhdGggPT09IFwiXCIgPyBcIi4vc29uYW11LnNoYXJlZFwiIDogYCR7cmVsYXRpdmVQYXRofS9zb25hbXUuc2hhcmVkYDtcbiAgcmV0dXJuIHNvdXJjZS5yZXBsYWNlKC9mcm9tIFwic29uYW11KFxcL2RpY3QpP1wiL2csIGBmcm9tIFwiJHtzaGFyZWRQYXRofVwiYCk7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBUUEsZUFBc0IsZ0NBQ3BCLFVBQ0EsUUFDQSxZQUNrQjtDQUNsQixJQUFJLENBQUUsTUFBTSxpQkFBaUIsUUFBUSxHQUNuQyxPQUFPO0NBSVQsSUFBSSxpQkFBaUIsa0JBQWtCLE1BRFYsaUJBQWlCLFNBQVMsVUFBVSxPQUFPLEdBQ2pCLE1BQU07Q0FFN0QsSUFBSSxZQUFZO0VBQ2QsTUFBTSxzQkFBc0I7RUFDNUIsaUJBQWlCLG9CQUFvQixLQUFLLGNBQWMsSUFDcEQsZUFBZSxRQUFRLHFCQUFxQixHQUFHLFdBQVcsS0FBSyxJQUMvRCxHQUFHLFdBQVcsTUFBTTtDQUMxQjtDQUVBLElBQUksT0FBTyxTQUFTLEtBQUssS0FBSyxPQUFPLFNBQVMsTUFBTSxHQUNsRCxpQkFBaUIsTUFBTSxXQUFXLGdCQUFnQixNQUFNO0NBRzFELE1BQU0saUJBQWlCLFVBQVUsUUFBUSxjQUFjO0NBQ3ZELE9BQU87QUFDVDtBQUVBLFNBQVMsa0JBQWtCLFFBQWdCLFFBQXdCO0NBQ2pFLE1BQU0sV0FBVyxPQUFPLE1BQU0sY0FBYztDQUM1QyxJQUFJLENBQUMsVUFDSCxPQUFPO0NBR1QsTUFBTSxjQUFjLEtBQUssS0FBSyxTQUFTLElBQUksVUFBVTtDQUNyRCxNQUFNLGVBQWUsS0FBSyxTQUFTLFFBQVEsTUFBTSxHQUFHLFdBQVc7Q0FDL0QsTUFBTSxhQUFhLGlCQUFpQixLQUFLLG9CQUFvQixHQUFHLGFBQWE7Q0FDN0UsT0FBTyxPQUFPLFFBQVEsMkJBQTJCLFNBQVMsV0FBVyxFQUFFO0FBQ3pFOztDQTNDK0MscUJBQUE7Q0FDK0IsNkJBQUEifQ==
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { __esmMin } from "../_virtual/_rolldown/runtime.js";
|
|
2
2
|
import { Sonamu, init_sonamu } from "../api/sonamu.js";
|
|
3
3
|
import path from "path";
|
|
4
|
-
|
|
4
|
+
// src/syncer/file-patterns.ts
|
|
5
5
|
/**
|
|
6
6
|
* Syncer가 관심 가지고 지켜보는 파일들입니다.
|
|
7
7
|
* 이 파일들에 변경이 생기면 추가적인 작업(이하 "싱크" 또는 "싱크 액션")을 수행합니다.
|
|
@@ -85,8 +85,7 @@ var init_file_patterns = __esmMin((() => {
|
|
|
85
85
|
"**/.turbo/**"
|
|
86
86
|
];
|
|
87
87
|
}));
|
|
88
|
-
//#endregion
|
|
89
88
|
init_file_patterns();
|
|
90
89
|
export { GLOB_EXCLUDE, getChecksumPatternGroup, getChecksumPatternGroupInAbsolutePath, init_file_patterns };
|
|
91
90
|
|
|
92
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1wYXR0ZXJucy5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi9zcmMvc3luY2VyL2ZpbGUtcGF0dGVybnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIjtcblxuaW1wb3J0IHsgU29uYW11IH0gZnJvbSBcIi4uL2FwaS9zb25hbXVcIjtcbmltcG9ydCB7IHR5cGUgQWJzb2x1dGVQYXRoLCB0eXBlIEFwcFJlbGF0aXZlUGF0aCB9IGZyb20gXCIuLi91dGlscy9wYXRoLXV0aWxzXCI7XG5cbi8qKlxuICogU3luY2Vy6rCAIOq0gOyLrCDqsIDsp4Dqs6Ag7KeA7Lyc67O064qUIO2MjOydvOuTpOyeheuLiOuLpC5cbiAqIOydtCDtjIzsnbzrk6Tsl5Ag67OA6rK97J20IOyDneq4sOuptCDstpTqsIDsoIHsnbgg7J6R7JeFKOydtO2VmCBcIuyLse2BrFwiIOuYkOuKlCBcIuyLse2BrCDslaHshZhcIinsnYQg7IiY7ZaJ7ZWp64uI64ukLlxuICog7J20IOyekeyXheydtOudvCDtlajsnYAg7YyM7J28IOuzteyCrCDrmJDripQg7YWc7ZSM66a/IOugjOuNlOungeydhCDthrXtlZwgY29kZSBnZW5lcmF0aW9u7J2EIOydmOuvuO2VqeuLiOuLpC5cbiAqXG4gKiDqsr3roZwg7ZiV7IudOiBhcHBSb290IOq4sOykgCDsg4HrjIAg6rK966GcICh0YXJnZXQg65SU66CJ7Yag66as66GcIOyLnOyekSwg7JiIOiBcImFwaS9zcmMvLi4uXCIsIFwid2ViL3NyYy8uLi5cIilcbiAqIOyCrOyaqTogZ2V0Q2hlY2tzdW1QYXR0ZXJuR3JvdXBJbkFic29sdXRlUGF0aCgp66GcIOygiOuMgCDqsr3roZwg67OA7ZmYIO2bhCBnbG9iIOyCrOyaqVxuICpcbiAqIOuRkCDqsIDsp4Ag7J2Y66+47KCBIOyYgeyXrTpcbiAqIC0g7J6F66ClICjsgqzsmqnsnpAg7J6R7ISxKTogYXBpIOuUlOugie2GoOumrOyXkOunjCDsnITsuZguIOyCrOyaqeyekOqwgCDsp4HsoJEg7Y647KeRLlxuICogLSDstpzroKUgKHNvbmFtdSDsg53shLEv67O17IKsKTogYXBpIOuYkOuKlCB0YXJnZXQg65SU66CJ7Yag66as7JeQIHNvbmFtdeqwgCDrp4zrk6TslrTrgrTripQg7YyM7J28LlxuICpcbiAqIOy2lOyggSDrsJYg7J6Q7IKwICjrtoDtirjsiqTtirjrnqkgcGhhc2Xsl5DshJwg66ek67KIIOuztOyepSk6XG4gKiAtIHNvbmFtdS5zaGFyZWQudHM6IOyCrOyaqeyekOqwgCDsu6TsiqTthLDrp4jsnbTspojtlZjripQg7J6Q7IKwLiBJZk5vdEV4aXN0c+uhnCAx7ZqMIOyDneyEsSDtm4Qg7IaQ64yA7KeAIOyViuydjC5cbiAqIC0gZW50cnktc2VydmVyLmdlbmVyYXRlZC50c3g6IOyeheugpSDsnZjsobQg7JeG64qUIOygleyggSDsvZTrk5wuIOunpOuyiCBvdmVyd3JpdGUgZ2VuZXJhdGUuXG4gKlxuICog7JyEIOuRmOydgCBzeW5jKCnsnZgg67aA7Yq47Iqk7Yq4656pIHBoYXNl7JeQ7IScIOuzgOqyvSDqsoDstpwg7IKs7J207YG06rO8IOustOq0gO2VmOqyjCDrs7TsnqXrkKnri4jri6QuXG4gKiDstpTsoIEg7IKs7J207YG0IOyViOyXkOyEnCDtlaAg7JWh7IWY7J20IOyXhuuKlCDsnpDsgrDsnbTrnbwg7Yyo7YS0IOq3uOujueyXkCDtj6ztlajrkJjsp4Ag7JWK7Iq164uI64ukLlxuICpcbiAqIOychOy5mCDsubTthYzqs6DrpqzripQgYXBpL3RhcmdldHMvYW55d2hlcmUg7Zes7Y2866GcIOuqheyLnOyggeycvOuhnCDtkZztmITtlanri4jri6QuXG4gKlxuICogRmlsZVR5cGXsnYAg7J20IO2VqOyImOydmCDrsJjtmZgg7YOA7J6F7JeQ7IScIOyekOuPmSDstpTroaDrkKnri4jri6QuIO2CpCDstpTqsIAg7IucIOuzhOuPhCBlbnVtL+uwsOyXtOydhFxuICog64+Z6riw7ZmU7ZWgIO2VhOyalCDsl4bsnbQg7Jes6riwIO2VnCDqtbDrjbDrp4wg7IiY7KCV7ZWY66m0IOuQqeuLiOuLpC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldENoZWNrc3VtUGF0dGVybkdyb3VwKCkge1xuICAvLyDtl6ztjbwg7ZWo7IiY65OkIOunjOuTpOyWtOyEnCDqsIDsoLjsmLXri4jri6QuXG4gIGNvbnN0IHsgYXBpLCB0YXJnZXRzLCBhbnl3aGVyZSB9ID0gZ2xvYkJ1aWxkZXJzKCk7XG5cbiAgcmV0dXJuIHtcbiAgICAvLyBTb25hbXUg7J6F7J6l7JeQ7IScIHNvcnVjZeqwgCDrkJjripQg7YyM7J2865Ok7J6F64uI64ukLlxuICAgIC8vIOydtCDsuZzqtazrk6TsnbQg67OA6rK965CY66m0IOydtOuTpOuhnOu2gO2EsCDslaHshZjsnYQg7IiY7ZaJ7ZWY6rOgIO2MjOydvOydhCDsg53shLHtlanri4jri6QuXG4gICAgLy8g66qo64W466as7Y+s7JeQ7IScIOydtCBzb3VyY2Xrk6TsnYAgYXBpIO2UhOuhnOygne2KuOyXkCDtlZzsoJXrkJjrr4DroZwsIGFwaeyXkCDsnojripQg7Lmc6rWs65Ok66eMIOumrOyKpO2Mhe2VqeuLiOuLpC5cbiAgICBjb25maWc6IGFwaShcInNyYy9zb25hbXUuY29uZmlnLnRzXCIpLFxuICAgIGVudGl0eTogYXBpKFwic3JjL2FwcGxpY2F0aW9uLyoqLyouZW50aXR5Lmpzb25cIiksXG4gICAgZnJhbWU6IGFwaShcInNyYy9hcHBsaWNhdGlvbi8qKi8qLmZyYW1lLnRzXCIpLFxuICAgIGZ1bmN0aW9uczogYXBpKFwic3JjL2FwcGxpY2F0aW9uLyoqLyouZnVuY3Rpb25zLnRzXCIpLFxuICAgIG1vZGVsOiBhcGkoXCJzcmMvYXBwbGljYXRpb24vKiovKi5tb2RlbC50c1wiKSxcbiAgICB0eXBlczogYXBpKFwic3JjL2FwcGxpY2F0aW9uLyoqLyoudHlwZXMudHNcIiksXG4gICAgd29ya2Zsb3c6IGFwaShcInNyYy9hcHBsaWNhdGlvbi8qKi8qLndvcmtmbG93LnRzXCIpLFxuICAgIGkxOG46IGFwaShcInNyYy9pMThuLyoqLyEoc2QuZ2VuZXJhdGVkKS50c1wiKSxcblxuICAgIC8vIFNvbmFtdeqwgCDstpzroKXtlZjripQg7IOd7ISxIO2MjOydvOuTpOyeheuLiOuLpC5cbiAgICAvLyDsnbQg7Lmc6rWs65Ok64+EIOygle2VqeyEsSDqsoDspp0g7LCo7JuQ7JeQ7IScIHNvbmFtdS5sb2Nr7JeQIOq4sOuhne2VtOyVvCDtlZjqs6AsXG4gICAgLy8g65iQ7ZWcIOuzgOqyveyLnCDqt7gg7IKs7Iuk7J2EIHN5bmNlcuqwgCDslYzquLDripQg7ZW07JW8IO2VqeuLiOuLpCjruYTroZ0g67OE64uk66W4IOyymOumrOqwgCDsl4bripQg6rK97Jqw64+EIOyeiOyngOunjCkuXG4gICAgLy9cbiAgICAvLyDsnpDsgrAg67O47ISx7JeQIOuUsOudvCDsnITsuZgg7Lm07YWM6rOg66as6rCAIOuLpOultOq4sCDrlYzrrLjsl5AsIOuzuOyEseuzhOuhnCDrtoTrpqztlbTshJwg7ZGc6riw7ZWp64uI64ukLlxuICAgIC8vIC0g7JaR7Kq9Le2VhOyalCDsnpDsgrA6IGFwaeyXkCDsoJXrs7jsnbQg66eM65Ok7Ja07KeEIOuSpCB0YXJnZXTsl5Ag67O17IKs65CoIChzb25hbXUuZ2VuZXJhdGVkLnt0cyx0c3h9KS5cbiAgICAvLyAtIGFwaSDsoITsmqkg7J6Q7IKwOiBhcGnsl5Drp4wg66eM65Ok7Ja07KeQIChzb25hbXUuZ2VuZXJhdGVkLmh0dHAsIHF1ZXJpZXMuZ2VuZXJhdGVkLnRzKS5cbiAgICAvLyAtIHRhcmdldCDsoITsmqkg7J6Q7IKwOiB0YXJnZXTsl5Drp4wg66eM65Ok7Ja07KeQIChzZXJ2aWNlcy5nZW5lcmF0ZWQudHPripQgc2VydmljZXMudGVtcGxhdGXsnZggOnRhcmdldCDrtoTrsLApLlxuICAgIC8vXG4gICAgLy8g7Jes6riw7JeQ64qUIFNvbmFtdeydmCDrqqjrk6Agc3luYyDsgrDstpzrrLzsnbQg7J6I64qUIOqyg+ydgCDslYTri5nri4jri6QuXG4gICAgLy8gc29uYW11LnNoYXJlZC50c+yZgCBlbnRyeS1zZXJ2ZXIuZ2VuZXJhdGVkLnRzeOyZgCDqsJnsnYBcbiAgICAvLyBzeW5jIOy0iOuwmCAx7ZqM7ISxIOu2gO2KuOyKpO2KuOueqSDtjIzsnbzrk6TsnYAg6rSA66asIOyViCDtlZjquLAg65WM66y47JeQIOyXrOq4sOyXkCDrpqzsiqTtjIXrj4Qg7JWIIO2VqeuLiOuLpC5cbiAgICBodHRwVmFsaWRhdG9yc0dlbmVyYXRlZDogYXBpKFwic3JjL2FwcGxpY2F0aW9uLyoqL3NvbmFtdS52YWxpZGF0b3JzLmdlbmVyYXRlZC50c1wiKSxcbiAgICBnZW5lcmF0ZWQ6IGFwaShcInNyYy9hcHBsaWNhdGlvbi8qKi8qLmdlbmVyYXRlZC57dHMsdHN4LHNzby50c31cIiksXG4gICAgZ2VuZXJhdGVkQ29waWVkOiB0YXJnZXRzKFwic3JjL3NlcnZpY2VzLyoqL3NvbmFtdS5nZW5lcmF0ZWQue3RzLHRzeH1cIiksXG4gICAgaHR0cEdlbmVyYXRlZDogYXBpKFwic3JjL2FwcGxpY2F0aW9uLyoqLyouZ2VuZXJhdGVkLmh0dHBcIiksXG4gICAgc2VydmljZXNHZW5lcmF0ZWQ6IHRhcmdldHMoXCJzcmMvc2VydmljZXMvc2VydmljZXMuZ2VuZXJhdGVkLnRzXCIpLFxuICAgIHNkR2VuZXJhdGVkOiBhbnl3aGVyZShcInNyYy9pMThuLyoqL3NkLmdlbmVyYXRlZC50c1wiKSxcbiAgICB0eXBlc0NvcGllZDogdGFyZ2V0cyhcInNyYy9zZXJ2aWNlcy8qKi8qLnR5cGVzLnRzXCIpLFxuICAgIGZ1bmN0aW9uc0NvcGllZDogdGFyZ2V0cyhcInNyYy9zZXJ2aWNlcy8qKi8qLmZ1bmN0aW9ucy50c1wiKSxcbiAgICBpMThuQ29waWVkOiB0YXJnZXRzKFwic3JjL2kxOG4vKiovIShzZC5nZW5lcmF0ZWQpLnRzXCIpLFxuICB9IHNhdGlzZmllcyBSZWNvcmQ8c3RyaW5nLCBBcHBSZWxhdGl2ZVBhdGg+O1xufVxuXG4vLyBOb2RlIOuCtOyepSBmcy5nbG9i7J2YIGJyYWNlIGV4cGFuc2lvbuydgCDri6jsnbwg66mk67KEIHt4feulvCDtkoDsp4Ag7JWK7Jy866+A66GcLCDrqaTrsoTqsIAgMeqwnOydvCDrlYzripQgYWx0ZXJuYXRpb24g7JeG7J20IOyngeygkSDqsrDtlantlanri4jri6QuXG5mdW5jdGlvbiBicmFjZUpvaW4oZGlyczogcmVhZG9ubHkgc3RyaW5nW10pIHtcbiAgcmV0dXJuIGRpcnMubGVuZ3RoID09PSAxID8gZGlyc1swXSA6IGB7JHtkaXJzLmpvaW4oXCIsXCIpfX1gO1xufVxuXG4vKipcbiAqIOychOy5mCDsubTthYzqs6Drpqzrs4Qg6riA66GtIOu5jOuNlOulvCDrp4zrk6TslrQg67CY7ZmY7ZWp64uI64ukLlxuICogLSBhcGkocmVzdCk6IGFwaSDrlJTroInthqDrpqzsl5Ag7ZWc7KCVXG4gKiAtIHRhcmdldHMocmVzdCk6IHRhcmdldCDrlJTroInthqDrpqzrk6Tsl5Ag7ZWc7KCVICh3ZWIsIGFwcCDrk7EpXG4gKiAtIGFueXdoZXJlKHJlc3QpOiBhcGnsmYAgdGFyZ2V0IOuqqOuRkFxuICovXG5mdW5jdGlvbiBnbG9iQnVpbGRlcnMoKSB7XG4gIGNvbnN0IGFwaURpciA9IFNvbmFtdS5jb25maWcuYXBpLmRpcjtcbiAgY29uc3QgdGFyZ2V0RGlycyA9IFNvbmFtdS5jb25maWcuc3luYy50YXJnZXRzO1xuXG4gIHJldHVybiB7XG4gICAgYXBpOiAocGF0aEZyb21BcGk6IHN0cmluZykgPT5cbiAgICAgIC8qIFNBRkVUWTogVHlwZVNjcmlwdCBBU1Qg7YyM7Iux6rO8IOuPmeq4sO2ZlCDsnoXroKUg6rOE7JW97J20IOydtCDqsJLsnZgg7YOA7J6F7J2EIOuztOyepe2VnOuLpC4gKi8gYCR7YXBpRGlyfS8ke3BhdGhGcm9tQXBpfWAgYXMgQXBwUmVsYXRpdmVQYXRoLFxuICAgIHRhcmdldHM6IChwYXRoRnJvbVRhcmdldDogc3RyaW5nKSA9PlxuICAgICAgLyogU0FGRVRZOiBUeXBlU2NyaXB0IEFTVCDtjIzsi7Hqs7wg64+Z6riw7ZmUIOyeheugpSDqs4Tslb3snbQg7J20IOqwkuydmCDtg4DsnoXsnYQg67O07J6l7ZWc64ukLiAqLyBgJHticmFjZUpvaW4odGFyZ2V0RGlycyl9LyR7cGF0aEZyb21UYXJnZXR9YCBhcyBBcHBSZWxhdGl2ZVBhdGgsXG4gICAgYW55d2hlcmU6IChwYXRoRnJvbUFueXdoZXJlOiBzdHJpbmcpID0+XG4gICAgICAvKiBTQUZFVFk6IFR5cGVTY3JpcHQgQVNUIO2MjOyLseqzvCDrj5nquLDtmZQg7J6F66ClIOqzhOyVveydtCDsnbQg6rCS7J2YIO2DgOyeheydhCDrs7TsnqXtlZzri6QuICovIGAke2JyYWNlSm9pbihbYXBpRGlyLCAuLi50YXJnZXREaXJzXSl9LyR7cGF0aEZyb21Bbnl3aGVyZX1gIGFzIEFwcFJlbGF0aXZlUGF0aCxcbiAgfTtcbn1cblxuLyoqXG4gKiBGaWxlVHlwZeydgCBnZXRDaGVja3N1bVBhdHRlcm5Hcm91cOydmCDrsJjtmZgg6rCd7LK0IO2CpOyXkOyEnCDsnpDrj5kg7LaU66Gg65Cp64uI64ukLlxuICog67OE64+EIOuwsOyXtC9lbnVtIOuPmeq4sO2ZlCDrtojtlYTsmpQg4oCUIO2MqO2EtCDqt7jro7kg7ZWo7IiY6rCAIOynhOyLpOydmCDri6jsnbwg7JuQ7LKcLlxuICovXG5leHBvcnQgdHlwZSBGaWxlVHlwZSA9IGtleW9mIFJldHVyblR5cGU8dHlwZW9mIGdldENoZWNrc3VtUGF0dGVybkdyb3VwPjtcbmV4cG9ydCB0eXBlIEdsb2JQYXR0ZXJuPFQgZXh0ZW5kcyBBcHBSZWxhdGl2ZVBhdGggfCBBYnNvbHV0ZVBhdGg+ID0gUmVjb3JkPEZpbGVUeXBlLCBUPjtcblxuLyoqXG4gKiDruYzrk5wg7IKw7Lac66y8IOuUlOugie2GoOumrOuKlCBhbHRlcm5hdGlvbiDquIDroa3snbQg7J2Y64+E7LmYIOyViuqyjCDtnJjrp5DrprQg7IiYIOyeiOycvOuvgOuhnCDslYjsoITrp53snLzroZwg7KCc7Jm4LlxuICogTm9kZSDrgrTsnqUgZnMuZ2xvYuydmCBleGNsdWRlIOyYteyFmOqzvCDtlajqu5gg7IKs7Jqp7ZWp64uI64ukLlxuICovXG5leHBvcnQgY29uc3QgR0xPQl9FWENMVURFID0gW1wiKiovbm9kZV9tb2R1bGVzLyoqXCIsIFwiKiovZGlzdC8qKlwiLCBcIioqL2J1aWxkLyoqXCIsIFwiKiovLnR1cmJvLyoqXCJdO1xuXG4vKipcbiAqIGFwcFJvb3Qg6riw7KSAIOyDgeuMgCDqsr3roZwg7Yyo7YS07J2EIOygiOuMgCDqsr3roZwg7Yyo7YS07Jy866GcIOuzgO2ZmO2VqeuLiOuLpC5cbiAqXG4gKiBAcmV0dXJucyDsoIjrjIAg6rK966GcIOq4sOuwmCBHbG9iIO2MqO2EtCDrp7VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldENoZWNrc3VtUGF0dGVybkdyb3VwSW5BYnNvbHV0ZVBhdGgoKTogR2xvYlBhdHRlcm48QWJzb2x1dGVQYXRoPiB7XG4gIGNvbnN0IGdyb3VwID0gZ2V0Q2hlY2tzdW1QYXR0ZXJuR3JvdXAoKTtcbiAgcmV0dXJuIC8qIFNBRkVUWTogVHlwZVNjcmlwdCBBU1Qg7YyM7Iux6rO8IOuPmeq4sO2ZlCDsnoXroKUg6rOE7JW97J20IOydtCDqsJLsnZgg7YOA7J6F7J2EIOuztOyepe2VnOuLpC4gKi8gT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgIE9iamVjdC5lbnRyaWVzKGdyb3VwKS5tYXAoKFtrZXksIHZhbHVlXSkgPT4gW1xuICAgICAga2V5LFxuICAgICAgcGF0aC5qb2luKFNvbmFtdS5hcHBSb290UGF0aCwgdmFsdWUpLCAvLyBhcHBSb290IOyDgeuMgCDqsr3roZwg4oaSIOygiOuMgCDqsr3roZxcbiAgICBdKSxcbiAgKSBhcyBHbG9iUGF0dGVybjxBYnNvbHV0ZVBhdGg+O1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBNkJBLFNBQWdCLDBCQUEwQjtDQUV4QyxNQUFNLEVBQUUsS0FBSyxTQUFTLGFBQWEsYUFBYTtDQUVoRCxPQUFPO0VBSUwsUUFBUSxJQUFJLHNCQUFzQjtFQUNsQyxRQUFRLElBQUksa0NBQWtDO0VBQzlDLE9BQU8sSUFBSSwrQkFBK0I7RUFDMUMsV0FBVyxJQUFJLG1DQUFtQztFQUNsRCxPQUFPLElBQUksK0JBQStCO0VBQzFDLE9BQU8sSUFBSSwrQkFBK0I7RUFDMUMsVUFBVSxJQUFJLGtDQUFrQztFQUNoRCxNQUFNLElBQUksZ0NBQWdDO0VBYzFDLHlCQUF5QixJQUFJLG1EQUFtRDtFQUNoRixXQUFXLElBQUksZ0RBQWdEO0VBQy9ELGlCQUFpQixRQUFRLDJDQUEyQztFQUNwRSxlQUFlLElBQUkscUNBQXFDO0VBQ3hELG1CQUFtQixRQUFRLG9DQUFvQztFQUMvRCxhQUFhLFNBQVMsNkJBQTZCO0VBQ25ELGFBQWEsUUFBUSw0QkFBNEI7RUFDakQsaUJBQWlCLFFBQVEsZ0NBQWdDO0VBQ3pELFlBQVksUUFBUSxnQ0FBZ0M7Q0FDdEQ7QUFDRjtBQUdBLFNBQVMsVUFBVSxNQUF5QjtDQUMxQyxPQUFPLEtBQUssV0FBVyxJQUFJLEtBQUssS0FBSyxJQUFJLEtBQUssS0FBSyxHQUFHLEVBQUU7QUFDMUQ7Ozs7Ozs7QUFRQSxTQUFTLGVBQWU7Q0FDdEIsTUFBTSxTQUFTLE9BQU8sT0FBTyxJQUFJO0NBQ2pDLE1BQU0sYUFBYSxPQUFPLE9BQU8sS0FBSztDQUV0QyxPQUFPO0VBQ0wsTUFBTSxnQkFDdUQsR0FBRyxPQUFPLEdBQUc7RUFDMUUsVUFBVSxtQkFDbUQsR0FBRyxVQUFVLFVBQVUsRUFBRSxHQUFHO0VBQ3pGLFdBQVcscUJBQ2tELEdBQUcsVUFBVSxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUMsRUFBRSxHQUFHO0NBQ3hHO0FBQ0Y7Ozs7OztBQW9CQSxTQUFnQix3Q0FBbUU7Q0FDakYsTUFBTSxRQUFRLHdCQUF3QjtDQUN0QyxPQUFrRSxPQUFPLFlBQ3ZFLE9BQU8sUUFBUSxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxXQUFXLENBQzFDLEtBQ0EsS0FBSyxLQUFLLE9BQU8sYUFBYSxLQUFLLENBQ3JDLENBQUMsQ0FDSDtBQUNGOzs7YUF2SHNDO0NBd0d6QixlQUFlO0VBQUM7RUFBc0I7RUFBYztFQUFlO0NBQWMifQ==
|
|
91
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1wYXR0ZXJucy5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi9zcmMvc3luY2VyL2ZpbGUtcGF0dGVybnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIjtcblxuaW1wb3J0IHsgU29uYW11IH0gZnJvbSBcIi4uL2FwaS9zb25hbXVcIjtcbmltcG9ydCB7IHR5cGUgQWJzb2x1dGVQYXRoLCB0eXBlIEFwcFJlbGF0aXZlUGF0aCB9IGZyb20gXCIuLi91dGlscy9wYXRoLXV0aWxzXCI7XG5cbi8qKlxuICogU3luY2Vy6rCAIOq0gOyLrCDqsIDsp4Dqs6Ag7KeA7Lyc67O064qUIO2MjOydvOuTpOyeheuLiOuLpC5cbiAqIOydtCDtjIzsnbzrk6Tsl5Ag67OA6rK97J20IOyDneq4sOuptCDstpTqsIDsoIHsnbgg7J6R7JeFKOydtO2VmCBcIuyLse2BrFwiIOuYkOuKlCBcIuyLse2BrCDslaHshZhcIinsnYQg7IiY7ZaJ7ZWp64uI64ukLlxuICog7J20IOyekeyXheydtOudvCDtlajsnYAg7YyM7J28IOuzteyCrCDrmJDripQg7YWc7ZSM66a/IOugjOuNlOungeydhCDthrXtlZwgY29kZSBnZW5lcmF0aW9u7J2EIOydmOuvuO2VqeuLiOuLpC5cbiAqXG4gKiDqsr3roZwg7ZiV7IudOiBhcHBSb290IOq4sOykgCDsg4HrjIAg6rK966GcICh0YXJnZXQg65SU66CJ7Yag66as66GcIOyLnOyekSwg7JiIOiBcImFwaS9zcmMvLi4uXCIsIFwid2ViL3NyYy8uLi5cIilcbiAqIOyCrOyaqTogZ2V0Q2hlY2tzdW1QYXR0ZXJuR3JvdXBJbkFic29sdXRlUGF0aCgp66GcIOygiOuMgCDqsr3roZwg67OA7ZmYIO2bhCBnbG9iIOyCrOyaqVxuICpcbiAqIOuRkCDqsIDsp4Ag7J2Y66+47KCBIOyYgeyXrTpcbiAqIC0g7J6F66ClICjsgqzsmqnsnpAg7J6R7ISxKTogYXBpIOuUlOugie2GoOumrOyXkOunjCDsnITsuZguIOyCrOyaqeyekOqwgCDsp4HsoJEg7Y647KeRLlxuICogLSDstpzroKUgKHNvbmFtdSDsg53shLEv67O17IKsKTogYXBpIOuYkOuKlCB0YXJnZXQg65SU66CJ7Yag66as7JeQIHNvbmFtdeqwgCDrp4zrk6TslrTrgrTripQg7YyM7J28LlxuICpcbiAqIOy2lOyggSDrsJYg7J6Q7IKwICjrtoDtirjsiqTtirjrnqkgcGhhc2Xsl5DshJwg66ek67KIIOuztOyepSk6XG4gKiAtIHNvbmFtdS5zaGFyZWQudHM6IOyCrOyaqeyekOqwgCDsu6TsiqTthLDrp4jsnbTspojtlZjripQg7J6Q7IKwLiBJZk5vdEV4aXN0c+uhnCAx7ZqMIOyDneyEsSDtm4Qg7IaQ64yA7KeAIOyViuydjC5cbiAqIC0gZW50cnktc2VydmVyLmdlbmVyYXRlZC50c3g6IOyeheugpSDsnZjsobQg7JeG64qUIOygleyggSDsvZTrk5wuIOunpOuyiCBvdmVyd3JpdGUgZ2VuZXJhdGUuXG4gKlxuICog7JyEIOuRmOydgCBzeW5jKCnsnZgg67aA7Yq47Iqk7Yq4656pIHBoYXNl7JeQ7IScIOuzgOqyvSDqsoDstpwg7IKs7J207YG06rO8IOustOq0gO2VmOqyjCDrs7TsnqXrkKnri4jri6QuXG4gKiDstpTsoIEg7IKs7J207YG0IOyViOyXkOyEnCDtlaAg7JWh7IWY7J20IOyXhuuKlCDsnpDsgrDsnbTrnbwg7Yyo7YS0IOq3uOujueyXkCDtj6ztlajrkJjsp4Ag7JWK7Iq164uI64ukLlxuICpcbiAqIOychOy5mCDsubTthYzqs6DrpqzripQgYXBpL3RhcmdldHMvYW55d2hlcmUg7Zes7Y2866GcIOuqheyLnOyggeycvOuhnCDtkZztmITtlanri4jri6QuXG4gKlxuICogRmlsZVR5cGXsnYAg7J20IO2VqOyImOydmCDrsJjtmZgg7YOA7J6F7JeQ7IScIOyekOuPmSDstpTroaDrkKnri4jri6QuIO2CpCDstpTqsIAg7IucIOuzhOuPhCBlbnVtL+uwsOyXtOydhFxuICog64+Z6riw7ZmU7ZWgIO2VhOyalCDsl4bsnbQg7Jes6riwIO2VnCDqtbDrjbDrp4wg7IiY7KCV7ZWY66m0IOuQqeuLiOuLpC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldENoZWNrc3VtUGF0dGVybkdyb3VwKCkge1xuICAvLyDtl6ztjbwg7ZWo7IiY65OkIOunjOuTpOyWtOyEnCDqsIDsoLjsmLXri4jri6QuXG4gIGNvbnN0IHsgYXBpLCB0YXJnZXRzLCBhbnl3aGVyZSB9ID0gZ2xvYkJ1aWxkZXJzKCk7XG5cbiAgcmV0dXJuIHtcbiAgICAvLyBTb25hbXUg7J6F7J6l7JeQ7IScIHNvcnVjZeqwgCDrkJjripQg7YyM7J2865Ok7J6F64uI64ukLlxuICAgIC8vIOydtCDsuZzqtazrk6TsnbQg67OA6rK965CY66m0IOydtOuTpOuhnOu2gO2EsCDslaHshZjsnYQg7IiY7ZaJ7ZWY6rOgIO2MjOydvOydhCDsg53shLHtlanri4jri6QuXG4gICAgLy8g66qo64W466as7Y+s7JeQ7IScIOydtCBzb3VyY2Xrk6TsnYAgYXBpIO2UhOuhnOygne2KuOyXkCDtlZzsoJXrkJjrr4DroZwsIGFwaeyXkCDsnojripQg7Lmc6rWs65Ok66eMIOumrOyKpO2Mhe2VqeuLiOuLpC5cbiAgICBjb25maWc6IGFwaShcInNyYy9zb25hbXUuY29uZmlnLnRzXCIpLFxuICAgIGVudGl0eTogYXBpKFwic3JjL2FwcGxpY2F0aW9uLyoqLyouZW50aXR5Lmpzb25cIiksXG4gICAgZnJhbWU6IGFwaShcInNyYy9hcHBsaWNhdGlvbi8qKi8qLmZyYW1lLnRzXCIpLFxuICAgIGZ1bmN0aW9uczogYXBpKFwic3JjL2FwcGxpY2F0aW9uLyoqLyouZnVuY3Rpb25zLnRzXCIpLFxuICAgIG1vZGVsOiBhcGkoXCJzcmMvYXBwbGljYXRpb24vKiovKi5tb2RlbC50c1wiKSxcbiAgICB0eXBlczogYXBpKFwic3JjL2FwcGxpY2F0aW9uLyoqLyoudHlwZXMudHNcIiksXG4gICAgd29ya2Zsb3c6IGFwaShcInNyYy9hcHBsaWNhdGlvbi8qKi8qLndvcmtmbG93LnRzXCIpLFxuICAgIGkxOG46IGFwaShcInNyYy9pMThuLyoqLyEoc2QuZ2VuZXJhdGVkKS50c1wiKSxcblxuICAgIC8vIFNvbmFtdeqwgCDstpzroKXtlZjripQg7IOd7ISxIO2MjOydvOuTpOyeheuLiOuLpC5cbiAgICAvLyDsnbQg7Lmc6rWs65Ok64+EIOygle2VqeyEsSDqsoDspp0g7LCo7JuQ7JeQ7IScIHNvbmFtdS5sb2Nr7JeQIOq4sOuhne2VtOyVvCDtlZjqs6AsXG4gICAgLy8g65iQ7ZWcIOuzgOqyveyLnCDqt7gg7IKs7Iuk7J2EIHN5bmNlcuqwgCDslYzquLDripQg7ZW07JW8IO2VqeuLiOuLpCjruYTroZ0g67OE64uk66W4IOyymOumrOqwgCDsl4bripQg6rK97Jqw64+EIOyeiOyngOunjCkuXG4gICAgLy9cbiAgICAvLyDsnpDsgrAg67O47ISx7JeQIOuUsOudvCDsnITsuZgg7Lm07YWM6rOg66as6rCAIOuLpOultOq4sCDrlYzrrLjsl5AsIOuzuOyEseuzhOuhnCDrtoTrpqztlbTshJwg7ZGc6riw7ZWp64uI64ukLlxuICAgIC8vIC0g7JaR7Kq9Le2VhOyalCDsnpDsgrA6IGFwaeyXkCDsoJXrs7jsnbQg66eM65Ok7Ja07KeEIOuSpCB0YXJnZXTsl5Ag67O17IKs65CoIChzb25hbXUuZ2VuZXJhdGVkLnt0cyx0c3h9KS5cbiAgICAvLyAtIGFwaSDsoITsmqkg7J6Q7IKwOiBhcGnsl5Drp4wg66eM65Ok7Ja07KeQIChzb25hbXUuZ2VuZXJhdGVkLmh0dHAsIHF1ZXJpZXMuZ2VuZXJhdGVkLnRzKS5cbiAgICAvLyAtIHRhcmdldCDsoITsmqkg7J6Q7IKwOiB0YXJnZXTsl5Drp4wg66eM65Ok7Ja07KeQIChzZXJ2aWNlcy5nZW5lcmF0ZWQudHPripQgc2VydmljZXMudGVtcGxhdGXsnZggOnRhcmdldCDrtoTrsLApLlxuICAgIC8vXG4gICAgLy8g7Jes6riw7JeQ64qUIFNvbmFtdeydmCDrqqjrk6Agc3luYyDsgrDstpzrrLzsnbQg7J6I64qUIOqyg+ydgCDslYTri5nri4jri6QuXG4gICAgLy8gc29uYW11LnNoYXJlZC50c+yZgCBlbnRyeS1zZXJ2ZXIuZ2VuZXJhdGVkLnRzeOyZgCDqsJnsnYBcbiAgICAvLyBzeW5jIOy0iOuwmCAx7ZqM7ISxIOu2gO2KuOyKpO2KuOueqSDtjIzsnbzrk6TsnYAg6rSA66asIOyViCDtlZjquLAg65WM66y47JeQIOyXrOq4sOyXkCDrpqzsiqTtjIXrj4Qg7JWIIO2VqeuLiOuLpC5cbiAgICBodHRwVmFsaWRhdG9yc0dlbmVyYXRlZDogYXBpKFwic3JjL2FwcGxpY2F0aW9uLyoqL3NvbmFtdS52YWxpZGF0b3JzLmdlbmVyYXRlZC50c1wiKSxcbiAgICBnZW5lcmF0ZWQ6IGFwaShcInNyYy9hcHBsaWNhdGlvbi8qKi8qLmdlbmVyYXRlZC57dHMsdHN4LHNzby50c31cIiksXG4gICAgZ2VuZXJhdGVkQ29waWVkOiB0YXJnZXRzKFwic3JjL3NlcnZpY2VzLyoqL3NvbmFtdS5nZW5lcmF0ZWQue3RzLHRzeH1cIiksXG4gICAgaHR0cEdlbmVyYXRlZDogYXBpKFwic3JjL2FwcGxpY2F0aW9uLyoqLyouZ2VuZXJhdGVkLmh0dHBcIiksXG4gICAgc2VydmljZXNHZW5lcmF0ZWQ6IHRhcmdldHMoXCJzcmMvc2VydmljZXMvc2VydmljZXMuZ2VuZXJhdGVkLnRzXCIpLFxuICAgIHNkR2VuZXJhdGVkOiBhbnl3aGVyZShcInNyYy9pMThuLyoqL3NkLmdlbmVyYXRlZC50c1wiKSxcbiAgICB0eXBlc0NvcGllZDogdGFyZ2V0cyhcInNyYy9zZXJ2aWNlcy8qKi8qLnR5cGVzLnRzXCIpLFxuICAgIGZ1bmN0aW9uc0NvcGllZDogdGFyZ2V0cyhcInNyYy9zZXJ2aWNlcy8qKi8qLmZ1bmN0aW9ucy50c1wiKSxcbiAgICBpMThuQ29waWVkOiB0YXJnZXRzKFwic3JjL2kxOG4vKiovIShzZC5nZW5lcmF0ZWQpLnRzXCIpLFxuICB9IHNhdGlzZmllcyBSZWNvcmQ8c3RyaW5nLCBBcHBSZWxhdGl2ZVBhdGg+O1xufVxuXG4vLyBOb2RlIOuCtOyepSBmcy5nbG9i7J2YIGJyYWNlIGV4cGFuc2lvbuydgCDri6jsnbwg66mk67KEIHt4feulvCDtkoDsp4Ag7JWK7Jy866+A66GcLCDrqaTrsoTqsIAgMeqwnOydvCDrlYzripQgYWx0ZXJuYXRpb24g7JeG7J20IOyngeygkSDqsrDtlantlanri4jri6QuXG5mdW5jdGlvbiBicmFjZUpvaW4oZGlyczogcmVhZG9ubHkgc3RyaW5nW10pIHtcbiAgcmV0dXJuIGRpcnMubGVuZ3RoID09PSAxID8gZGlyc1swXSA6IGB7JHtkaXJzLmpvaW4oXCIsXCIpfX1gO1xufVxuXG4vKipcbiAqIOychOy5mCDsubTthYzqs6Drpqzrs4Qg6riA66GtIOu5jOuNlOulvCDrp4zrk6TslrQg67CY7ZmY7ZWp64uI64ukLlxuICogLSBhcGkocmVzdCk6IGFwaSDrlJTroInthqDrpqzsl5Ag7ZWc7KCVXG4gKiAtIHRhcmdldHMocmVzdCk6IHRhcmdldCDrlJTroInthqDrpqzrk6Tsl5Ag7ZWc7KCVICh3ZWIsIGFwcCDrk7EpXG4gKiAtIGFueXdoZXJlKHJlc3QpOiBhcGnsmYAgdGFyZ2V0IOuqqOuRkFxuICovXG5mdW5jdGlvbiBnbG9iQnVpbGRlcnMoKSB7XG4gIGNvbnN0IGFwaURpciA9IFNvbmFtdS5jb25maWcuYXBpLmRpcjtcbiAgY29uc3QgdGFyZ2V0RGlycyA9IFNvbmFtdS5jb25maWcuc3luYy50YXJnZXRzO1xuXG4gIHJldHVybiB7XG4gICAgYXBpOiAocGF0aEZyb21BcGk6IHN0cmluZykgPT5cbiAgICAgIC8qIFNBRkVUWTogVHlwZVNjcmlwdCBBU1Qg7YyM7Iux6rO8IOuPmeq4sO2ZlCDsnoXroKUg6rOE7JW97J20IOydtCDqsJLsnZgg7YOA7J6F7J2EIOuztOyepe2VnOuLpC4gKi8gYCR7YXBpRGlyfS8ke3BhdGhGcm9tQXBpfWAgYXMgQXBwUmVsYXRpdmVQYXRoLFxuICAgIHRhcmdldHM6IChwYXRoRnJvbVRhcmdldDogc3RyaW5nKSA9PlxuICAgICAgLyogU0FGRVRZOiBUeXBlU2NyaXB0IEFTVCDtjIzsi7Hqs7wg64+Z6riw7ZmUIOyeheugpSDqs4Tslb3snbQg7J20IOqwkuydmCDtg4DsnoXsnYQg67O07J6l7ZWc64ukLiAqLyBgJHticmFjZUpvaW4odGFyZ2V0RGlycyl9LyR7cGF0aEZyb21UYXJnZXR9YCBhcyBBcHBSZWxhdGl2ZVBhdGgsXG4gICAgYW55d2hlcmU6IChwYXRoRnJvbUFueXdoZXJlOiBzdHJpbmcpID0+XG4gICAgICAvKiBTQUZFVFk6IFR5cGVTY3JpcHQgQVNUIO2MjOyLseqzvCDrj5nquLDtmZQg7J6F66ClIOqzhOyVveydtCDsnbQg6rCS7J2YIO2DgOyeheydhCDrs7TsnqXtlZzri6QuICovIGAke2JyYWNlSm9pbihbYXBpRGlyLCAuLi50YXJnZXREaXJzXSl9LyR7cGF0aEZyb21Bbnl3aGVyZX1gIGFzIEFwcFJlbGF0aXZlUGF0aCxcbiAgfTtcbn1cblxuLyoqXG4gKiBGaWxlVHlwZeydgCBnZXRDaGVja3N1bVBhdHRlcm5Hcm91cOydmCDrsJjtmZgg6rCd7LK0IO2CpOyXkOyEnCDsnpDrj5kg7LaU66Gg65Cp64uI64ukLlxuICog67OE64+EIOuwsOyXtC9lbnVtIOuPmeq4sO2ZlCDrtojtlYTsmpQg4oCUIO2MqO2EtCDqt7jro7kg7ZWo7IiY6rCAIOynhOyLpOydmCDri6jsnbwg7JuQ7LKcLlxuICovXG5leHBvcnQgdHlwZSBGaWxlVHlwZSA9IGtleW9mIFJldHVyblR5cGU8dHlwZW9mIGdldENoZWNrc3VtUGF0dGVybkdyb3VwPjtcbmV4cG9ydCB0eXBlIEdsb2JQYXR0ZXJuPFQgZXh0ZW5kcyBBcHBSZWxhdGl2ZVBhdGggfCBBYnNvbHV0ZVBhdGg+ID0gUmVjb3JkPEZpbGVUeXBlLCBUPjtcblxuLyoqXG4gKiDruYzrk5wg7IKw7Lac66y8IOuUlOugie2GoOumrOuKlCBhbHRlcm5hdGlvbiDquIDroa3snbQg7J2Y64+E7LmYIOyViuqyjCDtnJjrp5DrprQg7IiYIOyeiOycvOuvgOuhnCDslYjsoITrp53snLzroZwg7KCc7Jm4LlxuICogTm9kZSDrgrTsnqUgZnMuZ2xvYuydmCBleGNsdWRlIOyYteyFmOqzvCDtlajqu5gg7IKs7Jqp7ZWp64uI64ukLlxuICovXG5leHBvcnQgY29uc3QgR0xPQl9FWENMVURFID0gW1wiKiovbm9kZV9tb2R1bGVzLyoqXCIsIFwiKiovZGlzdC8qKlwiLCBcIioqL2J1aWxkLyoqXCIsIFwiKiovLnR1cmJvLyoqXCJdO1xuXG4vKipcbiAqIGFwcFJvb3Qg6riw7KSAIOyDgeuMgCDqsr3roZwg7Yyo7YS07J2EIOygiOuMgCDqsr3roZwg7Yyo7YS07Jy866GcIOuzgO2ZmO2VqeuLiOuLpC5cbiAqXG4gKiBAcmV0dXJucyDsoIjrjIAg6rK966GcIOq4sOuwmCBHbG9iIO2MqO2EtCDrp7VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldENoZWNrc3VtUGF0dGVybkdyb3VwSW5BYnNvbHV0ZVBhdGgoKTogR2xvYlBhdHRlcm48QWJzb2x1dGVQYXRoPiB7XG4gIGNvbnN0IGdyb3VwID0gZ2V0Q2hlY2tzdW1QYXR0ZXJuR3JvdXAoKTtcbiAgcmV0dXJuIC8qIFNBRkVUWTogVHlwZVNjcmlwdCBBU1Qg7YyM7Iux6rO8IOuPmeq4sO2ZlCDsnoXroKUg6rOE7JW97J20IOydtCDqsJLsnZgg7YOA7J6F7J2EIOuztOyepe2VnOuLpC4gKi8gT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgIE9iamVjdC5lbnRyaWVzKGdyb3VwKS5tYXAoKFtrZXksIHZhbHVlXSkgPT4gW1xuICAgICAga2V5LFxuICAgICAgcGF0aC5qb2luKFNvbmFtdS5hcHBSb290UGF0aCwgdmFsdWUpLCAvLyBhcHBSb290IOyDgeuMgCDqsr3roZwg4oaSIOygiOuMgCDqsr3roZxcbiAgICBdKSxcbiAgKSBhcyBHbG9iUGF0dGVybjxBYnNvbHV0ZVBhdGg+O1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBNkJBLFNBQWdCLDBCQUEwQjtDQUV4QyxNQUFNLEVBQUUsS0FBSyxTQUFTLGFBQWEsYUFBYTtDQUVoRCxPQUFPO0VBSUwsUUFBUSxJQUFJLHNCQUFzQjtFQUNsQyxRQUFRLElBQUksa0NBQWtDO0VBQzlDLE9BQU8sSUFBSSwrQkFBK0I7RUFDMUMsV0FBVyxJQUFJLG1DQUFtQztFQUNsRCxPQUFPLElBQUksK0JBQStCO0VBQzFDLE9BQU8sSUFBSSwrQkFBK0I7RUFDMUMsVUFBVSxJQUFJLGtDQUFrQztFQUNoRCxNQUFNLElBQUksZ0NBQWdDO0VBYzFDLHlCQUF5QixJQUFJLG1EQUFtRDtFQUNoRixXQUFXLElBQUksZ0RBQWdEO0VBQy9ELGlCQUFpQixRQUFRLDJDQUEyQztFQUNwRSxlQUFlLElBQUkscUNBQXFDO0VBQ3hELG1CQUFtQixRQUFRLG9DQUFvQztFQUMvRCxhQUFhLFNBQVMsNkJBQTZCO0VBQ25ELGFBQWEsUUFBUSw0QkFBNEI7RUFDakQsaUJBQWlCLFFBQVEsZ0NBQWdDO0VBQ3pELFlBQVksUUFBUSxnQ0FBZ0M7Q0FDdEQ7QUFDRjtBQUdBLFNBQVMsVUFBVSxNQUF5QjtDQUMxQyxPQUFPLEtBQUssV0FBVyxJQUFJLEtBQUssS0FBSyxJQUFJLEtBQUssS0FBSyxHQUFHLEVBQUU7QUFDMUQ7Ozs7Ozs7QUFRQSxTQUFTLGVBQWU7Q0FDdEIsTUFBTSxTQUFTLE9BQU8sT0FBTyxJQUFJO0NBQ2pDLE1BQU0sYUFBYSxPQUFPLE9BQU8sS0FBSztDQUV0QyxPQUFPO0VBQ0wsTUFBTSxnQkFDdUQsR0FBRyxPQUFPLEdBQUc7RUFDMUUsVUFBVSxtQkFDbUQsR0FBRyxVQUFVLFVBQVUsRUFBRSxHQUFHO0VBQ3pGLFdBQVcscUJBQ2tELEdBQUcsVUFBVSxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUMsRUFBRSxHQUFHO0NBQ3hHO0FBQ0Y7Ozs7OztBQW9CQSxTQUFnQix3Q0FBbUU7Q0FDakYsTUFBTSxRQUFRLHdCQUF3QjtDQUN0QyxPQUFrRSxPQUFPLFlBQ3ZFLE9BQU8sUUFBUSxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxXQUFXLENBQzFDLEtBQ0EsS0FBSyxLQUFLLE9BQU8sYUFBYSxLQUFLLENBQ3JDLENBQUMsQ0FDSDtBQUNGOzs7Q0F2SHNDLFlBQUE7Q0F3R3pCLGVBQWU7RUFBQztFQUFzQjtFQUFjO0VBQWU7Q0FBYyJ9
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { __esmMin } from "../_virtual/_rolldown/runtime.js";
|
|
2
2
|
import { init_filesystem_dependencies, syncerFilesystem } from "./filesystem-dependencies.js";
|
|
3
|
-
|
|
3
|
+
// src/syncer/file-tracking.ts
|
|
4
4
|
/**
|
|
5
5
|
* 우리가 디스크에 write한 path를 등록합니다. write 직후 호출하세요.
|
|
6
6
|
* 디스크에서 mtime을 직접 읽어 정확한 값으로 등록합니다.
|
|
@@ -23,8 +23,7 @@ var init_file_tracking = __esmMin((() => {
|
|
|
23
23
|
init_filesystem_dependencies();
|
|
24
24
|
fileWrittenAt = /* @__PURE__ */ new Map();
|
|
25
25
|
}));
|
|
26
|
-
//#endregion
|
|
27
26
|
init_file_tracking();
|
|
28
27
|
export { fileWrittenAt, init_file_tracking, isLastChangedByMe, trackWritten };
|
|
29
28
|
|
|
30
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
29
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS10cmFja2luZy5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi9zcmMvc3luY2VyL2ZpbGUtdHJhY2tpbmcudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHlwZSBBYnNvbHV0ZVBhdGggfSBmcm9tIFwiLi4vdXRpbHMvcGF0aC11dGlsc1wiO1xuaW1wb3J0IHsgc3luY2VyRmlsZXN5c3RlbSB9IGZyb20gXCIuL2ZpbGVzeXN0ZW0tZGVwZW5kZW5jaWVzXCI7XG5cbmV4cG9ydCBjb25zdCBmaWxlV3JpdHRlbkF0ID0gbmV3IE1hcDxBYnNvbHV0ZVBhdGgsIG51bWJlcj4oKTtcblxuLyoqXG4gKiDsmrDrpqzqsIAg65SU7Iqk7YGs7JeQIHdyaXRl7ZWcIHBhdGjrpbwg65Ox66Gd7ZWp64uI64ukLiB3cml0ZSDsp4Htm4Qg7Zi47Lac7ZWY7IS47JqULlxuICog65SU7Iqk7YGs7JeQ7IScIG10aW1l7J2EIOyngeygkSDsnb3slrQg7KCV7ZmV7ZWcIOqwkuycvOuhnCDrk7HroZ3tlanri4jri6QuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB0cmFja1dyaXR0ZW4oZmlsZVBhdGg6IEFic29sdXRlUGF0aCk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBmaWxlU3RhdCA9IGF3YWl0IHN5bmNlckZpbGVzeXN0ZW0uc3RhdChmaWxlUGF0aCk7XG4gIGZpbGVXcml0dGVuQXQuc2V0KGZpbGVQYXRoLCBmaWxlU3RhdC5tdGltZU1zKTtcbn1cblxuLyoqXG4gKiDso7zslrTsp4QgcGF0aOqwgCDqsIDsnqUg7LWc6re8IOyasOumrCB3cml0ZSDsnbTtm4TroZwg7Jm467aA7JeQ7IScIOyImOygleuQnCDsoIEg7JeG64qU7KeAIO2ZleyduO2VqeuLiOuLpC5cbiAqIHRydWXrqbQgXCLrgrTqsIAg7JO0IOq3uOuMgOuhnCDrgqjslYTsnojsnYxcIiwgZmFsc2XrqbQgXCLsmbjrtoDsl5DshJwg7IiY7KCV65CQ6rGw64KYIOyasOumrOqwgCDsk7Qg7KCBIOyXhuydjFwiLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaXNMYXN0Q2hhbmdlZEJ5TWUoZmlsZVBhdGg6IEFic29sdXRlUGF0aCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICBjb25zdCByZWdpc3RlcmVkID0gZmlsZVdyaXR0ZW5BdC5nZXQoZmlsZVBhdGgpO1xuICBpZiAocmVnaXN0ZXJlZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGNvbnN0IGZpbGVTdGF0ID0gYXdhaXQgc3luY2VyRmlsZXN5c3RlbS5zdGF0KGZpbGVQYXRoKTtcbiAgcmV0dXJuIGZpbGVTdGF0Lm10aW1lTXMgPD0gcmVnaXN0ZXJlZDtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQVNBLGVBQXNCLGFBQWEsVUFBdUM7Q0FDeEUsTUFBTSxXQUFXLE1BQU0saUJBQWlCLEtBQUssUUFBUTtDQUNyRCxjQUFjLElBQUksVUFBVSxTQUFTLE9BQU87QUFDOUM7Ozs7O0FBTUEsZUFBc0Isa0JBQWtCLFVBQTBDO0NBQ2hGLE1BQU0sYUFBYSxjQUFjLElBQUksUUFBUTtDQUM3QyxJQUFJLGVBQWUsUUFDakIsT0FBTztDQUdULFFBQU8sTUFEZ0IsaUJBQWlCLEtBQUssUUFBUSxFQUM5QyxDQUFTLFdBQVc7QUFDN0I7OztDQXhCNEQsNkJBQUE7Q0FFL0MsZ0NBQWdCLElBQUksSUFBMEIifQ==
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { __esmMin } from "../_virtual/_rolldown/runtime.js";
|
|
2
2
|
import { access, mkdir, readFile, rm, stat, unlink, writeFile } from "node:fs/promises";
|
|
3
3
|
import { constants } from "node:fs";
|
|
4
|
-
|
|
4
|
+
// src/syncer/filesystem-dependencies.ts
|
|
5
5
|
async function syncerFileExists(path) {
|
|
6
6
|
try {
|
|
7
7
|
await syncerFilesystem.access(path, constants.F_OK);
|
|
@@ -46,7 +46,6 @@ var init_filesystem_dependencies = __esmMin((() => {
|
|
|
46
46
|
};
|
|
47
47
|
syncerFilesystem = { ...defaults };
|
|
48
48
|
}));
|
|
49
|
-
//#endregion
|
|
50
49
|
init_filesystem_dependencies();
|
|
51
50
|
export { configureSyncerFilesystem, init_filesystem_dependencies, syncerFileExists, syncerFilesystem };
|
|
52
51
|
|
package/dist/syncer/index.js
CHANGED
|
@@ -5,7 +5,14 @@ import { generateTemplate, init_code_generator, renderTemplate } from "./code-ge
|
|
|
5
5
|
import { createEntity, delEntity, init_entity_operations } from "./entity-operations.js";
|
|
6
6
|
import { init_module_loader, loadApis, loadModels, loadTypes, loadWorkflows } from "./module-loader.js";
|
|
7
7
|
import { Syncer, init_syncer } from "./syncer.js";
|
|
8
|
-
|
|
8
|
+
// src/syncer/index.ts
|
|
9
|
+
init_api_parser();
|
|
10
|
+
init_file_patterns();
|
|
11
|
+
init_checksum();
|
|
12
|
+
init_code_generator();
|
|
13
|
+
init_entity_operations();
|
|
14
|
+
init_module_loader();
|
|
15
|
+
init_syncer();
|
|
9
16
|
init_api_parser();
|
|
10
17
|
init_checksum();
|
|
11
18
|
init_code_generator();
|
|
@@ -13,7 +20,6 @@ init_entity_operations();
|
|
|
13
20
|
init_file_patterns();
|
|
14
21
|
init_module_loader();
|
|
15
22
|
init_syncer();
|
|
16
|
-
//#endregion
|
|
17
23
|
export { GLOB_EXCLUDE, Syncer, createEntity, delEntity, findChangedFilesUsingChecksums, generateTemplate, getChecksumPatternGroup, getChecksumPatternGroupInAbsolutePath, loadApis, loadModels, loadTypes, loadWorkflows, readApisFromFile, renderTemplate, renewChecksums };
|
|
18
24
|
|
|
19
25
|
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3N5bmNlci9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9hcGktcGFyc2VyXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jaGVja3N1bVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vY29kZS1nZW5lcmF0b3JcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2VudGl0eS1vcGVyYXRpb25zXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9maWxlLXBhdHRlcm5zXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9tb2R1bGUtbG9hZGVyXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zeW5jZXJcIjtcbiJdLCJtYXBwaW5ncyI6IiJ9
|