sonamu 0.12.0 → 0.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_virtual/_rolldown/runtime.js +1 -2
- package/dist/ai/agents/agent.js +2 -3
- package/dist/ai/agents/index.js +1 -2
- package/dist/ai/index.js +1 -2
- package/dist/ai/providers/rtzr/api.js +1 -2
- package/dist/ai/providers/rtzr/error.js +2 -3
- package/dist/ai/providers/rtzr/model.js +1 -2
- package/dist/ai/providers/rtzr/options.js +1 -2
- package/dist/ai/providers/rtzr/provider.js +1 -2
- package/dist/ai/providers/rtzr/utils.js +1 -2
- package/dist/api/base-frame.js +4 -4
- package/dist/api/caster.d.ts +1 -1
- package/dist/api/caster.d.ts.map +1 -1
- package/dist/api/caster.js +9 -9
- package/dist/api/code-converters.js +6 -5
- package/dist/api/config.d.ts +1 -1
- package/dist/api/config.d.ts.map +1 -1
- package/dist/api/config.js +2 -3
- package/dist/api/context.d.ts +2 -3
- package/dist/api/context.d.ts.map +1 -1
- package/dist/api/context.js +2 -3
- package/dist/api/decorators.js +2 -3
- package/dist/api/http-validator.js +2 -3
- package/dist/api/index.js +8 -3
- package/dist/api/secret.js +1 -2
- package/dist/api/sonamu.d.ts +3 -5
- package/dist/api/sonamu.d.ts.map +1 -1
- package/dist/api/sonamu.js +19 -18
- package/dist/api/validator.js +1 -2
- package/dist/api/websocket-helpers.js +2 -3
- package/dist/auth/audit-log/builders.js +1 -2
- package/dist/auth/audit-log/client-ip.js +2 -3
- package/dist/auth/audit-log/events.js +1 -2
- package/dist/auth/audit-log/plugin.d.ts.map +1 -1
- package/dist/auth/audit-log/plugin.js +2 -3
- package/dist/auth/audit-log-ingestor.js +2 -3
- package/dist/auth/auth-generator.js +2 -3
- package/dist/auth/better-auth-entities.js +1 -2
- package/dist/auth/better-auth-request.js +2 -3
- package/dist/auth/index.js +2 -3
- package/dist/auth/knex-adapter.js +2 -3
- package/dist/auth/plugins/entity-definitions/admin.js +1 -2
- package/dist/auth/plugins/entity-definitions/anonymous.js +1 -2
- package/dist/auth/plugins/entity-definitions/api-key.js +1 -2
- package/dist/auth/plugins/entity-definitions/audit-log.js +1 -2
- package/dist/auth/plugins/entity-definitions/index.js +1 -2
- package/dist/auth/plugins/entity-definitions/jwt.js +1 -2
- package/dist/auth/plugins/entity-definitions/organization.js +1 -2
- package/dist/auth/plugins/entity-definitions/passkey.js +1 -2
- package/dist/auth/plugins/entity-definitions/phone-number.js +1 -2
- package/dist/auth/plugins/entity-definitions/sso.js +1 -2
- package/dist/auth/plugins/entity-definitions/two-factor.js +1 -2
- package/dist/auth/plugins/entity-definitions/username.js +1 -2
- package/dist/auth/plugins/wrappers/admin.d.ts +33 -32
- package/dist/auth/plugins/wrappers/admin.d.ts.map +1 -1
- package/dist/auth/plugins/wrappers/admin.js +2 -3
- package/dist/auth/plugins/wrappers/anonymous.js +2 -3
- package/dist/auth/plugins/wrappers/api-key.js +2 -3
- package/dist/auth/plugins/wrappers/jwt.js +2 -3
- package/dist/auth/plugins/wrappers/organization.js +2 -3
- package/dist/auth/plugins/wrappers/passkey.js +2 -3
- package/dist/auth/plugins/wrappers/phone-number.d.ts +43 -1
- package/dist/auth/plugins/wrappers/phone-number.d.ts.map +1 -1
- package/dist/auth/plugins/wrappers/phone-number.js +2 -3
- package/dist/auth/plugins/wrappers/sso.d.ts +138 -187
- package/dist/auth/plugins/wrappers/sso.d.ts.map +1 -1
- package/dist/auth/plugins/wrappers/sso.js +1 -2
- package/dist/auth/plugins/wrappers/two-factor.d.ts +51 -10
- package/dist/auth/plugins/wrappers/two-factor.d.ts.map +1 -1
- package/dist/auth/plugins/wrappers/two-factor.js +2 -3
- package/dist/auth/plugins/wrappers/username.d.ts +39 -5
- package/dist/auth/plugins/wrappers/username.d.ts.map +1 -1
- package/dist/auth/plugins/wrappers/username.js +2 -3
- package/dist/bin/build-config.js +5 -5
- package/dist/bin/compiler-policy.js +2 -3
- package/dist/bin/fixture.js +7 -5
- package/dist/bin/hmr-hook-register.js +1 -2
- package/dist/bin/migrate-targets.js +2 -3
- package/dist/bin/test-command.js +2 -3
- package/dist/bin/ts-loader-register.js +2 -3
- package/dist/bin/ts-loader-registration.js +2 -3
- package/dist/bin/typecheck-web.js +2 -3
- package/dist/cache/cache-manager.js +1 -2
- package/dist/cache/decorator.js +2 -3
- package/dist/cache/drivers.js +1 -2
- package/dist/cache/index.js +2 -3
- package/dist/cache-control/cache-control.js +1 -2
- package/dist/code-formatting/index.js +2 -3
- package/dist/code-formatting/oxfmt.js +2 -3
- package/dist/code-formatting/oxlint.js +2 -3
- package/dist/compress/compress.js +1 -2
- package/dist/compress/index.js +2 -2
- package/dist/compress/types.d.ts +1 -1
- package/dist/compress/types.d.ts.map +1 -1
- package/dist/cone/cone-generator.js +2 -3
- package/dist/database/_batch_update.js +1 -2
- package/dist/database/base-model.js +4 -4
- package/dist/database/db.js +4 -4
- package/dist/database/knex.js +2 -3
- package/dist/database/puri-wrapper.js +2 -3
- package/dist/database/puri.js +23 -22
- package/dist/database/puri.types.js +1 -2
- package/dist/database/transaction-context.js +1 -2
- package/dist/database/upsert-builder.js +2 -3
- package/dist/dict/en.js +2 -3
- package/dist/dict/index.js +3 -3
- package/dist/dict/ko.js +2 -3
- package/dist/dict/rc-keys.js +1 -2
- package/dist/dict/sd.js +2 -3
- package/dist/dict/sonamu-dictionary.js +7 -6
- package/dist/dict/utils.js +2 -3
- package/dist/entity/entity-manager.d.ts +66 -66
- package/dist/entity/entity-manager.js +4 -4
- package/dist/entity/entity-template-cone.js +2 -3
- package/dist/entity/entity.js +21 -18
- package/dist/env.js +1 -2
- package/dist/exceptions/error-handler.d.ts.map +1 -1
- package/dist/exceptions/error-handler.js +2 -3
- package/dist/exceptions/so-exceptions.js +2 -3
- package/dist/filter/index.js +3 -2
- package/dist/filter/types.js +1 -2
- package/dist/filter/utils.js +7 -6
- package/dist/index.js +39 -5
- package/dist/logger/category.js +2 -3
- package/dist/logger/configure.js +5 -5
- package/dist/migration/code-generation.js +23 -16
- package/dist/migration/index-where-predicate.js +2 -3
- package/dist/migration/migration-set.js +2 -3
- package/dist/migration/migrator.js +2 -3
- package/dist/migration/postgresql-schema-reader.js +6 -9
- package/dist/migration/slack-confirm.js +2 -3
- package/dist/naite/naite-reporter.js +2 -3
- package/dist/naite/naite.js +10 -8
- package/dist/runtime-type.js +2 -3
- package/dist/ssr/hmr-opt-out.js +1 -2
- package/dist/ssr/index.js +7 -4
- package/dist/ssr/registry.js +1 -2
- package/dist/ssr/renderer.js +2 -3
- package/dist/storage/base-file.js +1 -2
- package/dist/storage/buffered-file.js +2 -3
- package/dist/storage/drivers.js +1 -2
- package/dist/storage/index.js +2 -3
- package/dist/storage/s3-driver.js +1 -2
- package/dist/storage/storage-manager.js +2 -3
- package/dist/storage/uploaded-file.js +2 -3
- package/dist/stream/__tests__/ws-test-helpers.js +2 -3
- package/dist/stream/index.js +11 -2
- package/dist/stream/sse.js +1 -2
- package/dist/stream/ws-audience-resolver.js +2 -3
- package/dist/stream/ws-audience.js +1 -2
- package/dist/stream/ws-cluster-bus.js +1 -2
- package/dist/stream/ws-delivery.js +2 -3
- package/dist/stream/ws-frame.js +1 -2
- package/dist/stream/ws-local-connection-store.js +2 -3
- package/dist/stream/ws-presence-index.js +1 -2
- package/dist/stream/ws-presence-store.js +2 -3
- package/dist/stream/ws-registry.js +2 -3
- package/dist/stream/ws-session-id.js +1 -2
- package/dist/stream/ws-telemetry-memory.js +3 -4
- package/dist/stream/ws-telemetry-trace.js +1 -2
- package/dist/stream/ws-telemetry.js +2 -3
- package/dist/stream/ws.js +2 -3
- package/dist/syncer/api-parser.js +2 -3
- package/dist/syncer/checksum.js +4 -4
- package/dist/syncer/code-generator.js +4 -4
- package/dist/syncer/entity-operations.js +2 -3
- package/dist/syncer/event-batcher.js +1 -2
- package/dist/syncer/file-copy.js +2 -3
- package/dist/syncer/file-patterns.js +2 -3
- package/dist/syncer/file-tracking.js +2 -3
- package/dist/syncer/filesystem-dependencies.js +1 -2
- package/dist/syncer/index.js +8 -2
- package/dist/syncer/module-loader.js +8 -6
- package/dist/syncer/syncer-actions.js +8 -7
- package/dist/syncer/syncer.js +13 -8
- package/dist/syncer/watcher.js +2 -3
- package/dist/tasks/decorator.js +1 -2
- package/dist/tasks/step-wrapper.js +2 -3
- package/dist/tasks/workflow-manager.js +2 -3
- package/dist/template/entity-converter.js +17 -16
- package/dist/template/helpers.js +2 -3
- package/dist/template/implementations/entity.template.js +2 -3
- package/dist/template/implementations/entry-server.template.js +2 -3
- package/dist/template/implementations/generated.template.js +2 -3
- package/dist/template/implementations/generated_http.template.js +6 -6
- package/dist/template/implementations/generated_sso.template.js +2 -3
- package/dist/template/implementations/http_validators.template.js +2 -3
- package/dist/template/implementations/init_types.template.js +2 -3
- package/dist/template/implementations/model.template.js +4 -4
- package/dist/template/implementations/model_test.template.js +2 -3
- package/dist/template/implementations/queries.template.js +2 -3
- package/dist/template/implementations/sd.template.js +2 -3
- package/dist/template/implementations/services.template.js +2 -3
- package/dist/template/implementations/view_form.template.js +12 -9
- package/dist/template/implementations/view_id_all_select.template.js +2 -3
- package/dist/template/implementations/view_list.template.d.ts.map +1 -1
- package/dist/template/implementations/view_list.template.js +19 -17
- package/dist/template/implementations/view_search_input.template.js +2 -3
- package/dist/template/index.js +9 -3
- package/dist/template/template-manager.js +2 -3
- package/dist/template/template-types.js +1 -2
- package/dist/template/template.js +2 -3
- package/dist/template/zod-converter.js +54 -47
- package/dist/testing/_relation-graph.js +2 -3
- package/dist/testing/bootstrap.js +2 -3
- package/dist/testing/data-explorer.js +2 -3
- package/dist/testing/dev-test-routes.js +2 -3
- package/dist/testing/dev-vitest-manager.js +15 -12
- package/dist/testing/faker-mappings.js +1 -2
- package/dist/testing/filesystem.js +2 -3
- package/dist/testing/fixture-generator.js +2 -3
- package/dist/testing/fixture-loader.js +1 -2
- package/dist/testing/fixture-manager.js +12 -9
- package/dist/testing/global-setup.js +5 -5
- package/dist/testing/index.js +6 -3
- package/dist/testing/naite-vitest-reporter.js +1 -2
- package/dist/testing/parallel-db-manager.js +2 -3
- package/dist/testing/vitest-helpers.js +2 -3
- package/dist/tooling/__tests__/helpers/sonamu-test-root.js +2 -3
- package/dist/tooling/cdd-service.js +1 -2
- package/dist/tooling/cli-tooling.js +1 -2
- package/dist/tooling/fixture-service.js +1 -2
- package/dist/tooling/index.js +1 -2
- package/dist/tooling/test-run-client.js +2 -3
- package/dist/tsdown.api.config.js +1 -2
- package/dist/types/types.js +2 -3
- package/dist/ui/ai-api.d.ts.map +1 -1
- package/dist/ui/ai-api.js +4 -5
- package/dist/ui/ai-client.d.ts +2 -2
- package/dist/ui/ai-client.d.ts.map +1 -1
- package/dist/ui/ai-client.js +9 -8
- package/dist/ui/api.d.ts.map +1 -1
- package/dist/ui/api.js +11 -8
- package/dist/ui/async-route.js +1 -2
- package/dist/ui/cdd-service.js +22 -21
- package/dist/ui/migrations-api.js +6 -5
- package/dist/ui-web/assets/index-QDMyy31K.js +180 -0
- package/dist/ui-web/assets/index-dV7akMFB.css +1 -0
- package/dist/ui-web/index.html +2 -2
- package/dist/utils/async-utils.js +1 -2
- package/dist/utils/class-name.js +1 -2
- package/dist/utils/console-util.js +1 -2
- package/dist/utils/controller.js +2 -3
- package/dist/utils/esm-utils.js +1 -2
- package/dist/utils/fs-utils.js +2 -3
- package/dist/utils/lodash-able.js +1 -2
- package/dist/utils/model.js +1 -2
- package/dist/utils/object-utils.js +2 -3
- package/dist/utils/path-utils.js +2 -3
- package/dist/utils/process-utils.js +2 -3
- package/dist/utils/runtime-value.js +1 -2
- package/dist/utils/sql-parser.js +2 -3
- package/dist/utils/type-utils.js +8 -8
- package/dist/utils/utils.js +2 -3
- package/dist/utils/zod-error.js +2 -3
- package/dist/vector/chunking.js +1 -2
- package/dist/vector/config.js +1 -2
- package/dist/vector/embedding.js +4 -4
- package/package.json +63 -63
- package/src/ai/agents/agent.ts +1 -1
- package/src/api/__tests__/sonamu.plugins.test.ts +11 -1
- package/src/api/__tests__/sonamu.websocket.test.ts +6 -10
- package/src/api/config.ts +1 -1
- package/src/api/context.ts +2 -8
- package/src/api/sonamu.ts +26 -21
- package/src/auth/audit-log/plugin.ts +2 -0
- package/src/compress/types.ts +1 -1
- package/src/exceptions/error-handler.ts +3 -2
- package/src/template/implementations/model.template.ts +3 -3
- package/src/template/implementations/view_list.template.ts +12 -13
- package/src/ui/ai-api.ts +4 -2
- package/src/ui/ai-client.ts +2 -2
- package/src/ui/api.ts +58 -62
- package/dist/ui-web/assets/index-BMdIyKXS.css +0 -1
- package/dist/ui-web/assets/index-LpE8u19O.js +0 -178
package/dist/naite/naite.js
CHANGED
|
@@ -5,7 +5,7 @@ import { Sonamu, init_sonamu } from "../api/sonamu.js";
|
|
|
5
5
|
import { init_object_utils, isSerializable } from "../utils/object-utils.js";
|
|
6
6
|
import { getLogger } from "@logtape/logtape";
|
|
7
7
|
import { get } from "radashi";
|
|
8
|
-
|
|
8
|
+
// src/naite/naite.ts
|
|
9
9
|
/**
|
|
10
10
|
* 콜스택을 파싱하여 StackFrame 배열로 반환
|
|
11
11
|
* - extractCallStack 자신과 Naite.t는 제외
|
|
@@ -86,7 +86,8 @@ var init_naite = __esmMin((() => {
|
|
|
86
86
|
* @param fileName 파일명 (예: "syncer.test.ts")
|
|
87
87
|
*/
|
|
88
88
|
fromFile(fileName) {
|
|
89
|
-
|
|
89
|
+
const filtered = this.traces.filter((t) => t.stack.some((frame) => frame.filePath.endsWith(`/${fileName}`)));
|
|
90
|
+
return new NaiteQuery(filtered);
|
|
90
91
|
}
|
|
91
92
|
/**
|
|
92
93
|
* 함수명으로 필터링
|
|
@@ -94,11 +95,12 @@ var init_naite = __esmMin((() => {
|
|
|
94
95
|
* @param options.from 'direct' = 직접 호출만, 'indirect' = 간접 호출만, 'both' = 모두
|
|
95
96
|
*/
|
|
96
97
|
fromFunction(funcName, options = { from: "both" }) {
|
|
97
|
-
|
|
98
|
+
const filtered = this.traces.filter((t) => {
|
|
98
99
|
if (options.from === "direct") return t.stack[0]?.functionName?.includes(funcName);
|
|
99
100
|
if (options.from === "indirect") return t.stack.slice(1).some((f) => f.functionName?.includes(funcName));
|
|
100
101
|
return t.stack.some((f) => f.functionName?.includes(funcName));
|
|
101
|
-
})
|
|
102
|
+
});
|
|
103
|
+
return new NaiteQuery(filtered);
|
|
102
104
|
}
|
|
103
105
|
/**
|
|
104
106
|
* 데이터 경로 기반 필터링
|
|
@@ -107,7 +109,7 @@ var init_naite = __esmMin((() => {
|
|
|
107
109
|
* @param value 비교값
|
|
108
110
|
*/
|
|
109
111
|
where(path, operator, value) {
|
|
110
|
-
|
|
112
|
+
const filtered = this.traces.filter((trace) => {
|
|
111
113
|
const actual = get(trace, path);
|
|
112
114
|
switch (operator) {
|
|
113
115
|
case ">": return this.isComparableValue(actual) && this.isComparableValue(value) && actual > value;
|
|
@@ -119,7 +121,8 @@ var init_naite = __esmMin((() => {
|
|
|
119
121
|
case "includes": return isStringValue(actual) && isStringValue(value) && actual.includes(value);
|
|
120
122
|
default: return false;
|
|
121
123
|
}
|
|
122
|
-
})
|
|
124
|
+
});
|
|
125
|
+
return new NaiteQuery(filtered);
|
|
123
126
|
}
|
|
124
127
|
result() {
|
|
125
128
|
return this.traces.map((t) => t.data);
|
|
@@ -220,8 +223,7 @@ var init_naite = __esmMin((() => {
|
|
|
220
223
|
};
|
|
221
224
|
Naite = new NaiteClass();
|
|
222
225
|
}));
|
|
223
|
-
//#endregion
|
|
224
226
|
init_naite();
|
|
225
227
|
export { Naite, NaiteClass, NaiteQuery, init_naite };
|
|
226
228
|
|
|
227
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmFpdGUuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL25haXRlL25haXRlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdldExvZ2dlciB9IGZyb20gXCJAbG9ndGFwZS9sb2d0YXBlXCI7XG5pbXBvcnQgeyBnZXQgfSBmcm9tIFwicmFkYXNoaVwiO1xuXG5pbXBvcnQgeyBTb25hbXUgfSBmcm9tIFwiLi4vYXBpL3NvbmFtdVwiO1xuaW1wb3J0IHsgdHlwZSBDb21wYXJpc29uT3BlcmF0b3IgfSBmcm9tIFwiLi4vZGF0YWJhc2UvcHVyaS50eXBlc1wiO1xuaW1wb3J0IHsgY29udmVydE5haXRlS2V5VG9DYXRlZ29yeSB9IGZyb20gXCIuLi9sb2dnZXIvY2F0ZWdvcnlcIjtcbmltcG9ydCB7IGlzU2VyaWFsaXphYmxlIH0gZnJvbSBcIi4uL3V0aWxzL29iamVjdC11dGlsc1wiO1xuaW1wb3J0IHsgaXNOdW1iZXJWYWx1ZSwgaXNTdHJpbmdWYWx1ZSB9IGZyb20gXCIuLi91dGlscy9ydW50aW1lLXZhbHVlXCI7XG5cbi8vIFN0YWNrRnJhbWUg7YOA7J6FXG5pbnRlcmZhY2UgU3RhY2tGcmFtZSB7XG4gIGZ1bmN0aW9uTmFtZTogc3RyaW5nIHwgbnVsbDtcbiAgZmlsZVBhdGg6IHN0cmluZzsgLy8gXCIvVXNlcnMvLi4uL3N5bmNlci50c1wiIOuYkOuKlCBcIm5vZGU6aW50ZXJuYWwvLi4uXCJcbiAgbGluZU51bWJlcjogbnVtYmVyOyAvLyBUUyDtjIzsnbwg6riw7KSAIOudvOyduCDrsojtmLhcbn1cblxuLy8gTmFpdGVUcmFjZSDtg4DsnoVcbmludGVyZmFjZSBOYWl0ZVRyYWNlIHtcbiAga2V5OiBzdHJpbmc7XG4gIGRhdGE6IE5haXRlRGF0YTtcbiAgc3RhY2s6IFN0YWNrRnJhbWVbXTsgLy8g7L2c7Iqk7YOdIOygleuztFxuICBhdDogRGF0ZTtcbn1cblxuLy8gTmFpdGXripQg7KeB66Cs7ZmUIOqwgOuKpeyEsSDqsoDsgqzrpbwg64K067O064K06riwIOyLnOygkOyXkCDsiJjtlontlZjrr4DroZwg66qo65OgIEphdmFTY3JpcHQg6rCS7J2EIOq4sOuhne2VoCDsiJgg7J6I7Iq164uI64ukLlxuZXhwb3J0IHR5cGUgTmFpdGVEYXRhID0gbnVsbCB8IHVuZGVmaW5lZCB8IGJpZ2ludCB8IGJvb2xlYW4gfCBudW1iZXIgfCBvYmplY3QgfCBzdHJpbmcgfCBzeW1ib2w7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmFpdGVFdmVudFJlZ2lzdHJ5IHtcbiAgYWN0aW9uR2VuZXJhdGVTZXJ2aWNlczogcmVhZG9ubHkgb2JqZWN0W107XG4gIFwiZnMvcHJvbWlzZXM6cm1cIjoge1xuICAgIHBhdGg6IHN0cmluZztcbiAgICBvcHRpb25zPzogb2JqZWN0O1xuICB9O1xuICBcImZzL3Byb21pc2VzOndyaXRlRmlsZVwiOiB7XG4gICAgcGF0aDogc3RyaW5nO1xuICAgIGRhdGE6IHN0cmluZztcbiAgfTtcbiAgXCJwdXJpOmV4ZWN1dGVkLXF1ZXJ5XCI6IHN0cmluZztcbiAgXCJwdXJpOnViLWJhdGNoLXVwZGF0ZWRcIjoge1xuICAgIHRhYmxlTmFtZTogc3RyaW5nO1xuICAgIHJvd0NvdW50OiBudW1iZXI7XG4gICAgd2hlcmVDb2x1bW5zOiBzdHJpbmdbXTtcbiAgfTtcbiAgXCJwdXJpOnViLWNsZWFuLW9ycGhhbnNcIjoge1xuICAgIHRhYmxlTmFtZTogc3RyaW5nO1xuICAgIGNsZWFuT3JwaGFuczogc3RyaW5nW107XG4gICAgZGVsZXRlZENvdW50OiBudW1iZXI7XG4gIH07XG4gIFwicHVyaTp1Yi1pbmhlcml0XCI6IHtcbiAgICB0YWJsZU5hbWU6IHN0cmluZztcbiAgICBpbmhlcml0Q29sdW1uczogc3RyaW5nW107XG4gICAgZXhjbHVkZWRGcm9tVXBkYXRlOiBzdHJpbmdbXTtcbiAgfTtcbiAgXCJwdXJpOnViLXJlZi1yZXNvbHZlZFwiOiB7XG4gICAgdGFibGVOYW1lOiBzdHJpbmc7XG4gICAgZmllbGQ6IHN0cmluZztcbiAgICBmcm9tOiBVQlJlZmVyZW5jZTtcbiAgICB0bzogTmFpdGVEYXRhO1xuICB9O1xuICBcInB1cmk6dWItcmVnaXN0ZXJcIjoge1xuICAgIHRhYmxlTmFtZTogc3RyaW5nO1xuICAgIHV1aWQ6IHN0cmluZztcbiAgICBpc1V1aWRSZXVzZWQ6IGJvb2xlYW47XG4gICAgcm93OiBvYmplY3QgJiB7IHVzZXJfaWQ6IFVCUmVmZXJlbmNlIH07XG4gIH07XG4gIFwicHVyaTp1Yi11cHNlcnRlZFwiOiB7XG4gICAgdGFibGVOYW1lOiBzdHJpbmc7XG4gICAgbW9kZTogXCJpbnNlcnRcIiB8IFwidXBzZXJ0XCI7XG4gICAgcm93Q291bnQ6IG51bWJlcjtcbiAgICByZXR1cm5lZElkczogQXJyYXk8bnVtYmVyIHwgc3RyaW5nPjtcbiAgfTtcbn1cblxuaW50ZXJmYWNlIFVCUmVmZXJlbmNlIHtcbiAgdXVpZDogc3RyaW5nO1xuICBvZjogc3RyaW5nO1xuICB1c2U/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmFpdGVSZXN1bHQ8UGF5bG9hZD4gZXh0ZW5kcyBBcnJheTxQYXlsb2FkPiB7XG4gIDA6IFBheWxvYWQ7XG4gIDE6IFBheWxvYWQ7XG4gIFtpbmRleDogbnVtYmVyXTogUGF5bG9hZDtcbiAgZmluZDxNYXRjaCBleHRlbmRzIFBheWxvYWQ+KFxuICAgIHByZWRpY2F0ZTogKHZhbHVlOiBQYXlsb2FkLCBpbmRleDogbnVtYmVyLCB2YWx1ZXM6IFBheWxvYWRbXSkgPT4gdmFsdWUgaXMgTWF0Y2gsXG4gICk6IE1hdGNoO1xuICBmaW5kKHByZWRpY2F0ZTogKHZhbHVlOiBQYXlsb2FkLCBpbmRleDogbnVtYmVyLCB2YWx1ZXM6IFBheWxvYWRbXSkgPT4gYm9vbGVhbik6IFBheWxvYWQ7XG59XG5cbnR5cGUgTmFpdGVWYWx1ZXNCeUtleSA9IFJlY29yZDxzdHJpbmcsIE5haXRlVHJhY2VbXSB8IEFycmF5PE5haXRlVHJhY2VbXCJkYXRhXCJdPj47XG5cbi8vIE5haXRlLnTqsIAg7KCA7J6l65CY64qUIO2DgOyehSAo7ZWt7IOBIOuwsOyXtOuhnCDthrXsnbwpXG5leHBvcnQgdHlwZSBOYWl0ZVN0b3JlID0gTWFwPHN0cmluZywgTmFpdGVUcmFjZVtdPjtcblxuLy8gZ2V0QWxsVHJhY2VzKCnqsIAg67CY7ZmY7ZWY64qUIOyngeugrO2ZlOuQnCB0cmFjZSDtg4DsnoVcbi8vIGJvb3RzdHJhcC50c+ydmCBUYXNrTWV0YSBhdWdtZW50YXRpb24sIGRldi12aXRlc3QtbWFuYWdlci50c+yXkOyEnOuPhCDsnbQg7YOA7J6F7J2EIOqzteycoO2VqeuLiOuLpC5cbmV4cG9ydCB0eXBlIFNlcmlhbGl6ZWRUcmFjZSA9IHtcbiAga2V5OiBzdHJpbmc7XG4gIHZhbHVlOiB1bmtub3duO1xuICBmaWxlUGF0aDogc3RyaW5nO1xuICBsaW5lTnVtYmVyOiBudW1iZXI7XG4gIGF0OiBzdHJpbmc7XG59O1xuXG4vKipcbiAqIOy9nOyKpO2DneydhCDtjIzsi7HtlZjsl6wgU3RhY2tGcmFtZSDrsLDsl7TroZwg67CY7ZmYXG4gKiAtIGV4dHJhY3RDYWxsU3RhY2sg7J6Q7Iug6rO8IE5haXRlLnTripQg7KCc7Jm4XG4gKiAtIHJ1bldpdGhDb250ZXh0L3J1bldpdGhNb2NrQ29udGV4dCDrsJzqsqwg7IucIOqxsOq4sOyEnCDsooXro4xcbiAqIC0gbm9kZTog64K067aAIOqyveuhnOuKlCDtj6ztlajtlZjrkJgsIGxpbmVOdW1iZXLripQgcGF0aOyXkCA6IO2PrO2VqCDsi5wg67aZ7J207KeAIOyViuydjFxuICovXG5mdW5jdGlvbiBleHRyYWN0Q2FsbFN0YWNrKCk6IFN0YWNrRnJhbWVbXSB7XG4gIGNvbnN0IHN0YWNrID0gbmV3IEVycm9yKCkuc3RhY2s7XG4gIGlmICghc3RhY2spIHJldHVybiBbXTtcblxuICBjb25zdCBsaW5lcyA9IHN0YWNrLnNwbGl0KFwiXFxuXCIpO1xuXG4gIC8vIOy9nOyKpO2DnSDqtazsobA6XG4gIC8vIFswXTogXCJFcnJvclwiXG4gIC8vIFsxXTogXCJhdCBleHRyYWN0Q2FsbFN0YWNrXCJcbiAgLy8gWzJdOiBcImF0IE5haXRlLnRcIlxuICAvLyBbM106IOyLpOygnCDtmLjstpwg7JyE7LmY67aA7YSwIOyLnOyekVxuICBjb25zdCBmcmFtZXMgPSBsaW5lc1xuICAgIC5zbGljZSgzKVxuICAgIC5tYXAocGFyc2VTdGFja0ZyYW1lKVxuICAgIC5maWx0ZXIoKGZyYW1lKTogZnJhbWUgaXMgU3RhY2tGcmFtZSA9PiBmcmFtZSAhPT0gbnVsbCk7XG5cbiAgLy8gcnVuV2l0aENvbnRleHQg6rOE7Je0IO2VqOyImCDrsJzqsqwg7IucIOqxsOq4sOyEnCDsnpDrpbTquLBcbiAgY29uc3QgY29udGV4dEluZGV4ID0gZnJhbWVzLmZpbmRJbmRleChcbiAgICAoZikgPT5cbiAgICAgIGYuZnVuY3Rpb25OYW1lPy5pbmNsdWRlcyhcInJ1bldpdGhDb250ZXh0XCIpIHx8IGYuZnVuY3Rpb25OYW1lPy5pbmNsdWRlcyhcInJ1bldpdGhNb2NrQ29udGV4dFwiKSxcbiAgKTtcblxuICByZXR1cm4gY29udGV4dEluZGV4ID49IDAgPyBmcmFtZXMuc2xpY2UoMCwgY29udGV4dEluZGV4ICsgMSkgOiBmcmFtZXM7XG59XG5cbi8qKlxuICog7L2c7Iqk7YOdIO2VnCDspITsnYQg7YyM7IuxXG4gKiDtmJXsi50xOiBcImF0IEZ1bmN0aW9uTmFtZSAoZmlsZVBhdGg6bGluZU51bWJlcjpjb2x1bW5OdW1iZXIpXCJcbiAqIO2YleyLnTI6IFwiYXQgZmlsZVBhdGg6bGluZU51bWJlcjpjb2x1bW5OdW1iZXJcIiAo7J2166qFIO2VqOyImC/rqqjrk4gg66CI67KoKVxuICovXG5mdW5jdGlvbiBwYXJzZVN0YWNrRnJhbWUobGluZTogc3RyaW5nKTogU3RhY2tGcmFtZSB8IG51bGwge1xuICAvLyDtjKjthLQxOiBcImF0IEZ1bmN0aW9uTmFtZSAoZmlsZVBhdGg6bGluZU51bWJlcjpjb2x1bW5OdW1iZXIpXCJcbiAgY29uc3QgbWF0Y2hXaXRoRnVuYyA9IGxpbmUubWF0Y2goL2F0XFxzKyguKz8pXFxzK1xcKCguKz8pOihcXGQrKTpcXGQrXFwpLyk7XG4gIGlmIChtYXRjaFdpdGhGdW5jKSB7XG4gICAgY29uc3QgZnVuY3Rpb25OYW1lID0gbWF0Y2hXaXRoRnVuY1sxXTtcbiAgICBjb25zdCBmaWxlUGF0aCA9IG1hdGNoV2l0aEZ1bmNbMl07XG4gICAgY29uc3QgbGluZU51bWJlclN0ciA9IG1hdGNoV2l0aEZ1bmNbM107XG5cbiAgICAvLyBmaWxlUGF0aOyXkCDsnbTrr7ggOuqwgCDtj6ztlajrkJjslrQg7J6I7Jy866m0ICjsmIg6IFwibm9kZTppbnRlcm5hbC8uLi5cIilcbiAgICBpZiAoZmlsZVBhdGguaW5jbHVkZXMoXCI6XCIpKSB7XG4gICAgICByZXR1cm4geyBmdW5jdGlvbk5hbWUsIGZpbGVQYXRoLCBsaW5lTnVtYmVyOiAwIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGZ1bmN0aW9uTmFtZSxcbiAgICAgIGZpbGVQYXRoLFxuICAgICAgbGluZU51bWJlcjogTnVtYmVyLnBhcnNlSW50KGxpbmVOdW1iZXJTdHIsIDEwKSxcbiAgICB9O1xuICB9XG5cbiAgLy8g7Yyo7YS0MjogXCJhdCBmaWxlUGF0aDpsaW5lTnVtYmVyOmNvbHVtbk51bWJlclwiICjtlajsiJjrqoUg7JeG7J2MKVxuICBjb25zdCBtYXRjaE5vRnVuYyA9IGxpbmUubWF0Y2goL2F0XFxzKyguKz8pOihcXGQrKTpcXGQrJC8pO1xuICBpZiAobWF0Y2hOb0Z1bmMpIHtcbiAgICBjb25zdCBmaWxlUGF0aCA9IG1hdGNoTm9GdW5jWzFdO1xuICAgIGNvbnN0IGxpbmVOdW1iZXJTdHIgPSBtYXRjaE5vRnVuY1syXTtcblxuICAgIHJldHVybiB7XG4gICAgICBmdW5jdGlvbk5hbWU6IG51bGwsXG4gICAgICBmaWxlUGF0aCxcbiAgICAgIGxpbmVOdW1iZXI6IE51bWJlci5wYXJzZUludChsaW5lTnVtYmVyU3RyLCAxMCksXG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufVxuXG4vKipcbiAqIHdpbGRjYXJkIO2MqO2EtCDrp6Tsua1cbiAqIOyYiOyLnDpcbiAqIC0gXCJzeW5jZXI6KlwiIOKGkiBcInN5bmNlcjphXCIsIFwic3luY2VyOmE6YlwiIOuqqOuRkCDrp6Tsua1cbiAqIC0gXCJzeW5jZXI6Kjp1c2VyXCIg4oaSIFwic3luY2VyOnJlbmRlclRlbXBsYXRlOnVzZXJcIiDrp6Tsua1cbiAqIC0gXCJzeW5jZXI6cmVuZGVyVGVtcGxhdGU6KlwiIOKGkiBcInN5bmNlcjpyZW5kZXJUZW1wbGF0ZTpzZXJ2aWNlXCIg66ek7LmtXG4gKi9cbmZ1bmN0aW9uIG1hdGNoZXNQYXR0ZXJuKGtleTogc3RyaW5nLCBwYXR0ZXJuOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgY29uc3Qga2V5UGFydHMgPSBrZXkuc3BsaXQoXCI6XCIpO1xuICBjb25zdCBwYXR0ZXJuUGFydHMgPSBwYXR0ZXJuLnNwbGl0KFwiOlwiKTtcblxuICAvLyDrp4jsp4Drp4nsnbQgKiDihpIgcHJlZml4IOunpOy5rSAo6ri47J20IOustOq0gClcbiAgLy8g7JiIOiBcInN5bmNlcjoqXCLripQgXCJzeW5jZXI6YVwiLCBcInN5bmNlcjphOmJcIiDrqqjrkZAg66ek7LmtXG4gIGlmIChwYXR0ZXJuUGFydHNbcGF0dGVyblBhcnRzLmxlbmd0aCAtIDFdID09PSBcIipcIikge1xuICAgIGNvbnN0IHByZWZpeFBhcnRzID0gcGF0dGVyblBhcnRzLnNsaWNlKDAsIC0xKTtcbiAgICAvLyBwcmVmaXjqsIAg66qo65GQIOydvOy5mO2VmOuKlOyngCDtmZXsnbhcbiAgICByZXR1cm4gcHJlZml4UGFydHMuZXZlcnkoKHBhcnQsIGkpID0+IHBhcnQgPT09IGtleVBhcnRzW2ldKTtcbiAgfVxuXG4gIC8vIOq4uOydtOqwgCDqsJnslYTslbwg7ZWoXG4gIGlmIChwYXR0ZXJuUGFydHMubGVuZ3RoICE9PSBrZXlQYXJ0cy5sZW5ndGgpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvLyDqsIEg7YyM7Yq46rCAICog65iQ64qUIOygle2Zle2eiCDsnbzsuZhcbiAgcmV0dXJuIHBhdHRlcm5QYXJ0cy5ldmVyeSgocGFydCwgaSkgPT4gcGFydCA9PT0gXCIqXCIgfHwgcGFydCA9PT0ga2V5UGFydHNbaV0pO1xufVxuXG4vKipcbiAqIE5haXRlUXVlcnkg7YG0656Y7IqkXG4gKiDssrTsnbTri53snYQg7Ya17ZWcIHRyYWNlIO2VhO2EsOungSDrsI8g7KGw7ZqMXG4gKi9cbmV4cG9ydCBjbGFzcyBOYWl0ZVF1ZXJ5PFBheWxvYWQgZXh0ZW5kcyBOYWl0ZURhdGEgPSBOYWl0ZURhdGE+IHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSB0cmFjZXM6IE5haXRlVHJhY2VbXSkge31cblxuICBwcml2YXRlIGlzQ29tcGFyYWJsZVZhbHVlPFZhbHVlPih2YWx1ZTogVmFsdWUpOiB2YWx1ZSBpcyBWYWx1ZSAmIChudW1iZXIgfCBzdHJpbmcpIHtcbiAgICByZXR1cm4gaXNOdW1iZXJWYWx1ZSh2YWx1ZSkgfHwgaXNTdHJpbmdWYWx1ZSh2YWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICog7YyM7J2866qF7Jy866GcIO2VhO2EsOungVxuICAgKiBAcGFyYW0gZmlsZU5hbWUg7YyM7J2866qFICjsmIg6IFwic3luY2VyLnRlc3QudHNcIilcbiAgICovXG4gIGZyb21GaWxlKGZpbGVOYW1lOiBzdHJpbmcpOiBOYWl0ZVF1ZXJ5PFBheWxvYWQ+IHtcbiAgICBjb25zdCBmaWx0ZXJlZCA9IHRoaXMudHJhY2VzLmZpbHRlcigodCkgPT5cbiAgICAgIHQuc3RhY2suc29tZSgoZnJhbWUpID0+IGZyYW1lLmZpbGVQYXRoLmVuZHNXaXRoKGAvJHtmaWxlTmFtZX1gKSksXG4gICAgKTtcbiAgICByZXR1cm4gbmV3IE5haXRlUXVlcnk8UGF5bG9hZD4oZmlsdGVyZWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIO2VqOyImOuqheycvOuhnCDtlYTthLDrp4FcbiAgICogQHBhcmFtIGZ1bmNOYW1lIO2VqOyImOuqhSAoaW5jbHVkZXMg7LK07YGsKVxuICAgKiBAcGFyYW0gb3B0aW9ucy5mcm9tICdkaXJlY3QnID0g7KeB7KCRIO2YuOy2nOunjCwgJ2luZGlyZWN0JyA9IOqwhOygkSDtmLjstpzrp4wsICdib3RoJyA9IOuqqOuRkFxuICAgKi9cbiAgZnJvbUZ1bmN0aW9uKFxuICAgIGZ1bmNOYW1lOiBzdHJpbmcsXG4gICAgb3B0aW9uczogeyBmcm9tOiBcImRpcmVjdFwiIHwgXCJpbmRpcmVjdFwiIHwgXCJib3RoXCIgfSA9IHsgZnJvbTogXCJib3RoXCIgfSxcbiAgKTogTmFpdGVRdWVyeTxQYXlsb2FkPiB7XG4gICAgY29uc3QgZmlsdGVyZWQgPSB0aGlzLnRyYWNlcy5maWx0ZXIoKHQpID0+IHtcbiAgICAgIGlmIChvcHRpb25zLmZyb20gPT09IFwiZGlyZWN0XCIpIHtcbiAgICAgICAgLy8gc3RhY2tbMF3rp4wg7ZmV7J24ICjsp4HsoJEg7Zi47LacKVxuICAgICAgICByZXR1cm4gdC5zdGFja1swXT8uZnVuY3Rpb25OYW1lPy5pbmNsdWRlcyhmdW5jTmFtZSk7XG4gICAgICB9XG4gICAgICBpZiAob3B0aW9ucy5mcm9tID09PSBcImluZGlyZWN0XCIpIHtcbiAgICAgICAgLy8gc3RhY2tbMStd7JeQ7IScIO2ZleyduCAo6rCE7KCRIO2YuOy2nClcbiAgICAgICAgcmV0dXJuIHQuc3RhY2suc2xpY2UoMSkuc29tZSgoZikgPT4gZi5mdW5jdGlvbk5hbWU/LmluY2x1ZGVzKGZ1bmNOYW1lKSk7XG4gICAgICB9XG4gICAgICAvLyDsoITssrQg7Iqk7YOd7JeQ7IScIO2ZleyduFxuICAgICAgcmV0dXJuIHQuc3RhY2suc29tZSgoZikgPT4gZi5mdW5jdGlvbk5hbWU/LmluY2x1ZGVzKGZ1bmNOYW1lKSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIG5ldyBOYWl0ZVF1ZXJ5PFBheWxvYWQ+KGZpbHRlcmVkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiDrjbDsnbTthLAg6rK966GcIOq4sOuwmCDtlYTthLDrp4FcbiAgICogQHBhcmFtIHBhdGggcmFkYXNoIGdldCDqsr3roZwgKOyYiDogXCJkYXRhLnVzZXJJZFwiKVxuICAgKiBAcGFyYW0gb3BlcmF0b3Ig67mE6rWQIOyXsOyCsOyekFxuICAgKiBAcGFyYW0gdmFsdWUg67mE6rWQ6rCSXG4gICAqL1xuICB3aGVyZTxWYWx1ZSBleHRlbmRzIE5haXRlRGF0YT4oXG4gICAgcGF0aDogc3RyaW5nLFxuICAgIG9wZXJhdG9yOiBDb21wYXJpc29uT3BlcmF0b3IgfCBcImluY2x1ZGVzXCIsXG4gICAgdmFsdWU6IFZhbHVlLFxuICApOiBOYWl0ZVF1ZXJ5PFBheWxvYWQ+IHtcbiAgICBjb25zdCBmaWx0ZXJlZCA9IHRoaXMudHJhY2VzLmZpbHRlcigodHJhY2UpID0+IHtcbiAgICAgIGNvbnN0IGFjdHVhbCA9IGdldCh0cmFjZSwgcGF0aCk7XG5cbiAgICAgIHN3aXRjaCAob3BlcmF0b3IpIHtcbiAgICAgICAgY2FzZSBcIj5cIjpcbiAgICAgICAgICByZXR1cm4gdGhpcy5pc0NvbXBhcmFibGVWYWx1ZShhY3R1YWwpICYmIHRoaXMuaXNDb21wYXJhYmxlVmFsdWUodmFsdWUpICYmIGFjdHVhbCA+IHZhbHVlO1xuICAgICAgICBjYXNlIFwiPFwiOlxuICAgICAgICAgIHJldHVybiB0aGlzLmlzQ29tcGFyYWJsZVZhbHVlKGFjdHVhbCkgJiYgdGhpcy5pc0NvbXBhcmFibGVWYWx1ZSh2YWx1ZSkgJiYgYWN0dWFsIDwgdmFsdWU7XG4gICAgICAgIGNhc2UgXCI+PVwiOlxuICAgICAgICAgIHJldHVybiB0aGlzLmlzQ29tcGFyYWJsZVZhbHVlKGFjdHVhbCkgJiYgdGhpcy5pc0NvbXBhcmFibGVWYWx1ZSh2YWx1ZSkgJiYgYWN0dWFsID49IHZhbHVlO1xuICAgICAgICBjYXNlIFwiPD1cIjpcbiAgICAgICAgICByZXR1cm4gdGhpcy5pc0NvbXBhcmFibGVWYWx1ZShhY3R1YWwpICYmIHRoaXMuaXNDb21wYXJhYmxlVmFsdWUodmFsdWUpICYmIGFjdHVhbCA8PSB2YWx1ZTtcbiAgICAgICAgY2FzZSBcIj1cIjpcbiAgICAgICAgICByZXR1cm4gYWN0dWFsID09PSB2YWx1ZTtcbiAgICAgICAgY2FzZSBcIiE9XCI6XG4gICAgICAgICAgcmV0dXJuIGFjdHVhbCAhPT0gdmFsdWU7XG4gICAgICAgIGNhc2UgXCJpbmNsdWRlc1wiOlxuICAgICAgICAgIHJldHVybiBpc1N0cmluZ1ZhbHVlKGFjdHVhbCkgJiYgaXNTdHJpbmdWYWx1ZSh2YWx1ZSkgJiYgYWN0dWFsLmluY2x1ZGVzKHZhbHVlKTtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIG5ldyBOYWl0ZVF1ZXJ5PFBheWxvYWQ+KGZpbHRlcmVkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiDsoITssrQg642w7J207YSwIOuwsOyXtCDrsJjtmZhcbiAgICovXG4gIHJlc3VsdCgpOiBOYWl0ZVJlc3VsdDxQYXlsb2FkPjtcbiAgcmVzdWx0KCk6IE5haXRlRGF0YVtdIHtcbiAgICByZXR1cm4gdGhpcy50cmFjZXMubWFwKCh0KSA9PiB0LmRhdGEpO1xuICB9XG5cbiAgLyoqXG4gICAqIOyyqyDrsojsp7gg642w7J207YSwIOuwmO2ZmFxuICAgKi9cbiAgZmlyc3QoKTogUGF5bG9hZDtcbiAgZmlyc3QoKTogTmFpdGVEYXRhIHtcbiAgICByZXR1cm4gdGhpcy50cmFjZXNbMF0/LmRhdGE7XG4gIH1cblxuICAvKipcbiAgICog66eI7KeA66eJIOuNsOydtO2EsCDrsJjtmZhcbiAgICovXG4gIGxhc3QoKTogUGF5bG9hZDtcbiAgbGFzdCgpOiBOYWl0ZURhdGEge1xuICAgIHJldHVybiB0aGlzLnRyYWNlc1t0aGlzLnRyYWNlcy5sZW5ndGggLSAxXT8uZGF0YTtcbiAgfVxuXG4gIC8qKlxuICAgKiBu67KI7Ke4IOuNsOydtO2EsCDrsJjtmZhcbiAgICovXG4gIGF0KGluZGV4OiBudW1iZXIpOiBQYXlsb2FkO1xuICBhdChpbmRleDogbnVtYmVyKTogTmFpdGVEYXRhIHtcbiAgICByZXR1cm4gdGhpcy50cmFjZXNbaW5kZXhdPy5kYXRhO1xuICB9XG5cbiAgLyoqXG4gICAqIOybkOuzuCB0cmFjZSDrsLDsl7Qg67CY7ZmYICjrlJTrsoTquYUvTmFpdGVWaWV3ZXLsmqkpXG4gICAqL1xuICBnZXRUcmFjZXMoKTogTmFpdGVUcmFjZVtdIHtcbiAgICByZXR1cm4gdGhpcy50cmFjZXM7XG4gIH1cbn1cblxuLy8gTmFpdGUg7Iux6riA7YS0IOqwneyytCAo7LaU7ZuEIGxvZ2dlciDsl7DqsrAg65Ox7J2YIOyDge2DnCDqtIDrpqwg7ZWE7JqU7ISxIOqzoOugpClcbmV4cG9ydCBjbGFzcyBOYWl0ZUNsYXNzIHtcbiAgLy8g7YWM7Iqk7Yq4IOuhnOq3uCDquLDroZ1cbiAgdDxWYWx1ZSBleHRlbmRzIE5haXRlRGF0YT4obmFtZTogc3RyaW5nLCB2YWx1ZTogVmFsdWUpIHtcbiAgICAvLyDsnbQgdCDtlajsiJjripQg7YWM7Iqk7Yq4IO2ZmOqyveyXkOyEnOunjCDsnpHrj5ntlbTslbwg7ZWp64uI64ukLlxuICAgIC8vIOq3uOumrOqzoCDthYzsiqTtirgg7ZmY6rK9IO2MkOuLqOyXkCDsmZwgaXNUZXN0KCkg7ZWo7IiY66W8IOyCrOyaqe2VmOyngCDslYrslZjrg5DrqbTsmpQsLFxuICAgIC8vIOydtOugh+qyjCDtlZjripTqsowg7Jyg7Yu4IO2VqOyImCDrtojrn6zsmYDshJwg7IKs7Jqp7ZWY64qUIOqyg+uztOuLpCDsobDquIjsnbTrgpjrp4gg67mg66W8IOqygyDqsJnslZjquLAg65WM66y47J6F64uI64ukLlxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJ0ZXN0XCIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgY29udGV4dCA9IFNvbmFtdS5nZXRDb250ZXh0KCk7XG4gICAgICBjb25zdCBzdG9yZSA9IGNvbnRleHQ/Lm5haXRlU3RvcmU7XG5cbiAgICAgIGlmICghc3RvcmUpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICAvLyDsvZzsiqTtg50g7IiY7KeRXG4gICAgICBjb25zdCBzdGFjayA9IGV4dHJhY3RDYWxsU3RhY2soKTtcblxuICAgICAgY29uc3QgdHJhY2U6IE5haXRlVHJhY2UgPSB7XG4gICAgICAgIGtleTogbmFtZSxcbiAgICAgICAgZGF0YTogdmFsdWUsXG4gICAgICAgIHN0YWNrLFxuICAgICAgICBhdDogbmV3IERhdGUoKSxcbiAgICAgIH07XG5cbiAgICAgIC8vIO2VreyDgSDrsLDsl7TroZwg6rSA66asXG4gICAgICBjb25zdCBleGlzdGluZyA9IHN0b3JlLmdldChuYW1lKSA/PyBbXTtcbiAgICAgIGdldExvZ2dlcihbXCJuYWl0ZVwiLCAuLi5jb252ZXJ0TmFpdGVLZXlUb0NhdGVnb3J5KG5hbWUpXSkuZGVidWcoXG4gICAgICAgIGBuYWl0ZToge25hbWV9ICR7ZXhpc3RpbmcubGVuZ3RoID09PSAwID8gXCJpcyBlbXB0eSBzdGF0ZVwiIDogYGFscmVhZHkgZXhpc3Rpbmcgd2l0aCAke2V4aXN0aW5nLmxlbmd0aH0gZW50cmllc2B9LCBhcHBlbmRpbmcgbmV3IGVudHJ5YCxcbiAgICAgICAge1xuICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgdmFsdWUsXG4gICAgICAgIH0sXG4gICAgICApO1xuXG4gICAgICBzdG9yZS5zZXQobmFtZSwgWy4uLmV4aXN0aW5nLCB0cmFjZV0pO1xuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gQ29udGV4dCDsl4bripQg7IOB7Zmp7JeQ7IScIE5haXRlLnQg7Zi47LacXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIGtleSDrmJDripQgd2lsZGNhcmQg7Yyo7YS07Jy866GcIHRyYWNlIOyhsO2ajFxuICAgKiDtla3sg4EgTmFpdGVRdWVyeSDrsJjtmZjtlZjsl6wg7LK07J2064udIOqwgOuKpVxuICAgKi9cbiAgZ2V0PEtleSBleHRlbmRzIGtleW9mIE5haXRlRXZlbnRSZWdpc3RyeT4oa2V5UGF0dGVybjogS2V5KTogTmFpdGVRdWVyeTxOYWl0ZUV2ZW50UmVnaXN0cnlbS2V5XT47XG4gIGdldChrZXlQYXR0ZXJuOiBzdHJpbmcpOiBOYWl0ZVF1ZXJ5O1xuICBnZXQoa2V5UGF0dGVybjogc3RyaW5nKTogTmFpdGVRdWVyeSB7XG4gICAgY29uc3QgY29udGV4dCA9IFNvbmFtdS5nZXRDb250ZXh0KCk7XG4gICAgY29uc3Qgc3RvcmUgPSBjb250ZXh0Py5uYWl0ZVN0b3JlO1xuXG4gICAgaWYgKCFzdG9yZSkge1xuICAgICAgcmV0dXJuIG5ldyBOYWl0ZVF1ZXJ5KFtdKTtcbiAgICB9XG5cbiAgICAvLyB3aWxkY2FyZCDsl4bsnLzrqbQgZXhhY3QgbWF0Y2hcbiAgICBpZiAoIWtleVBhdHRlcm4uaW5jbHVkZXMoXCIqXCIpKSB7XG4gICAgICBjb25zdCB0cmFjZXMgPSBzdG9yZS5nZXQoa2V5UGF0dGVybikgPz8gW107XG4gICAgICByZXR1cm4gbmV3IE5haXRlUXVlcnkodHJhY2VzKTtcbiAgICB9XG5cbiAgICAvLyB3aWxkY2FyZCDtjKjthLQg66ek7LmtXG4gICAgY29uc3QgYWxsVHJhY2VzOiBOYWl0ZVRyYWNlW10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IFtrZXksIHRyYWNlc10gb2Ygc3RvcmUuZW50cmllcygpKSB7XG4gICAgICBpZiAobWF0Y2hlc1BhdHRlcm4oa2V5LCBrZXlQYXR0ZXJuKSkge1xuICAgICAgICBhbGxUcmFjZXMucHVzaCguLi50cmFjZXMpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBuZXcgTmFpdGVRdWVyeShhbGxUcmFjZXMpO1xuICB9XG5cbiAgLy8g7KCE7LK0IOumrOyKpO2KuCDqsIDsoLjsmKTquLBcbiAgZ2V0QWxsKCkge1xuICAgIGNvbnN0IGNvbnRleHQgPSBTb25hbXUuZ2V0Q29udGV4dCgpO1xuICAgIGlmICghY29udGV4dD8ubmFpdGVTdG9yZSkge1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgICAvLyBOYWl0ZVRyYWNlIOuwsOyXtOydhCBkYXRh66eMIOy2lOy2nO2VmOyXrCDrsJjtmZhcbiAgICBjb25zdCByZXN1bHQ6IE5haXRlVmFsdWVzQnlLZXkgPSB7fTtcbiAgICBmb3IgKGNvbnN0IFtrZXksIHRyYWNlc10gb2YgY29udGV4dC5uYWl0ZVN0b3JlLmVudHJpZXMoKSkge1xuICAgICAgaWYgKGtleS5zdGFydHNXaXRoKFwibW9jazpcIikpIHtcbiAgICAgICAgLy8gTW9jayDshKTsoJXsnYAg6re464yA66GcIOuwmO2ZmFxuICAgICAgICByZXN1bHRba2V5XSA9IHRyYWNlcztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIE5haXRlVHJhY2Ug67Cw7Je07J2AIGRhdGHrp4wg7LaU7LacXG4gICAgICAgIHJlc3VsdFtrZXldID0gdHJhY2VzLm1hcCgodDogTmFpdGVUcmFjZSkgPT4gdC5kYXRhKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiDsiqTthqDslrTsl5Ag65Ok7Ja07J6I642YIO2KuOugiOydtOyKpOulvCDqs6DrjIDroZwg6rq864K07Ji164uI64ukLlxuICAgKiDsnbTrlYwg6rCS65Ok7J2AIOuqqOuRkCDsp4HroKztmZQg6rCA64ql7ZWcIOyDge2DnOuhnCDrgpjqsIDqsowg65Cp64uI64ukLlxuICAgKiDthYzsiqTtirgg7KCV67O07JmAIO2VqOq7mCBleHRlbnNpb25z7JeQIOuztOuCvCDsmqnrj4TroZwg66eM65Ok7JeI7Iq164uI64ukLlxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgZ2V0QWxsVHJhY2VzKCk6IFNlcmlhbGl6ZWRUcmFjZVtdIHtcbiAgICBjb25zdCBjb250ZXh0ID0gU29uYW11LmdldENvbnRleHQoKTtcbiAgICBpZiAoIWNvbnRleHQ/Lm5haXRlU3RvcmUpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICBjb25zdCB0cmFjZXMgPSBBcnJheS5mcm9tKGNvbnRleHQubmFpdGVTdG9yZS52YWx1ZXMoKSkuZmxhdCgpO1xuXG4gICAgLy8g7KeB66Cs7ZmUIOu2iOqwgOuKpe2VnCDqsJLsnbQg7KG07J6s7ZWc64uk66m0IOydtOulvCDrjIDrrLjsp53rp4ztlZjqsowg7JWM66Ck7KSN64uI64ukISDqt7jsuZjrp4wg7JWM66as6riw66eMIO2VmOqzoCDqt7jrg6Ug7KeA64KY6rCR64uI64ukIOOFjuOFjlxuICAgIC8vIOyZnCDsp4HroKztmZTqsIAg7KSR7JqU7ZWc6rCAPyDsnbQoZ2V0QWxsVHJhY2VzKSDtmLjstpzsnZgg6rKw6rO864qUIOyZuOu2gOuhnCDrgpjqsIDqsowg65CY64qU642wLFxuICAgIC8vIOydtOuVjCDso7wg7Jqp64+E6rCAIHZpdGVzdOydmCB0YXNrLm1ldGEg7ZWE65Oc66W8IO2Gte2VtCBhZnRlckVhY2jsl5DshJwgU29uYW11IGV4dGVuc2lvbuycvOuhnCDsoITri6ztlZjripQg6rKD7J6F64uI64ukLlxuICAgIC8vIOyXrOq4sOyEnCBtZXRhIO2VhOuTnOyXkCDri7TquLQg64K07Jqp7J2AIO2UhOuhnOyEuOyKpOqwhCDthrXsi6AocHJvY2Vzcy5zZW5kKSDrmJDripQg7Iqk66CI65Oc6rCEIO2GteyLoChtZXNzYWdlIHBvcnQp7J2EIO2Gte2VtCDsoITri6zrkJjslrTslbwg7ZWY64qU642wLFxuICAgIC8vIOydtOuhnCDsnbjtlbQgXCLsp4HroKztmZQg6rCA64ql7ZWcIOqwkuuTpOunjCDtl4jsmqlcIu2VmOuKlCDsoJzslb3snbQg7IOd6rmB64uI64ukLlxuICAgIC8vXG4gICAgLy8g7J20IOygnOyVveydhCDsnZjsi53tlZjsl6wgTmFpdGUudOyXkCDsp4HroKztmZQg6rCA64ql7ZWcIOqwkuunjCDrhJjquLDqsowg7ZWgIOyImOuPhCDsnojsl4jsp4Drp4wsIOq3uOugh+qyjCDtlZjrqbQg67aI7Y647ZW07KeIIOqygyDqsJnslYTshJwg7ZWY7KeAIOyViuyVmOyKteuLiOuLpC5cbiAgICAvLyDrlLDrnbzshJwg7ZiE7J6sIE5haXRlLnTripQg66qo65OgIOqwkuydhCDrsJvsnYQg7IiYIOyeiOqyjCDrkJjslrQg7J6I7Iq164uI64ukLlxuICAgIC8vIOuMgOyLoCDsnbTroIfqsowoZ2V0QWxsVHJhY2VzKSDqt7gg6rCS65Ok7J2EIOu5vOuCvCDrlYwgSlNPTi5zdHJpbmdpZnnrpbwg7IKs7Jqp7ZWY7JesIOqwleygnOuhnCDsp4HroKztmZQg6rCA64ql7ZWY6rKMIOunjOuTpOyXiOyKteuLiOuLpCwsXG4gICAgZm9yIChjb25zdCB0cmFjZSBvZiB0cmFjZXMpIHtcbiAgICAgIGNvbnN0IGNoZWNrID0gaXNTZXJpYWxpemFibGUodHJhY2UuZGF0YSk7XG4gICAgICBpZiAoIWNoZWNrLnZhbGlkKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICBcIlxcblwiICtcbiAgICAgICAgICAgIFwi4pWU4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWXXFxuXCIgK1xuICAgICAgICAgICAgXCLilZEgIFtOYWl0ZV0gTm9uLXNlcmlhbGl6YWJsZSB2YWx1ZSBkZXRlY3RlZCEgICAgICAgICAgICAgICAgICAgICAg4pWRXFxuXCIgK1xuICAgICAgICAgICAgXCLilaDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilaNcXG5cIiArXG4gICAgICAgICAgICBg4pWRICBLZXk6ICR7dHJhY2Uua2V5LnBhZEVuZCg1Nyl94pWRXFxuYCArXG4gICAgICAgICAgICBg4pWRICBSZWFzb246ICR7KGNoZWNrLnJlYXNvbiA/PyBcInVua25vd25cIikuc2xpY2UoMCwgNTQpLnBhZEVuZCg1NCl94pWRXFxuYCArXG4gICAgICAgICAgICBg4pWRICBMb2NhdGlvbjogJHsodHJhY2Uuc3RhY2tbMF0/LmZpbGVQYXRoID8/IFwidW5rbm93blwiKS5zbGljZSgtNTEpLnBhZEVuZCg1Mil94pWRXFxuYCArXG4gICAgICAgICAgICBg4pWRICBMaW5lOiAke1N0cmluZyh0cmFjZS5zdGFja1swXT8ubGluZU51bWJlciA/PyAwKS5wYWRFbmQoNTYpfeKVkVxcbmAgK1xuICAgICAgICAgICAgXCLilaDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilaNcXG5cIiArXG4gICAgICAgICAgICBcIuKVkSAgTmFpdGUudCgpIGFjY2VwdHMgYW55IHR5cGUgb2YgdmFsdWUuIEhvd2V2ZXIsIHZhbHVlcyB3aWxsICAgICDilZFcXG5cIiArXG4gICAgICAgICAgICBcIuKVkSAgYmUgc2VyaWFsaXplZCB0byBKU09OIHdoZW4gZXhwb3J0ZWQgdmlhIE5haXRlLmdldEFsbFRyYWNlcygpLiDilZFcXG5cIiArXG4gICAgICAgICAgICBcIuKVmuKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVnVxcblwiLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0cmFjZXMubWFwKCh0cmFjZSkgPT4gKHtcbiAgICAgIGtleTogdHJhY2Uua2V5LFxuICAgICAgdmFsdWU6IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodHJhY2UuZGF0YSA/PyBcIlwiKSksIC8vIOyngeugrO2ZlCDqsIDriqXtlZwg6rKD66eMIOuCqOq4sOugpOuKlCDriIjrrLzqsqjsmrQg64W466ClLCwg7JWI6re465+s66m0IHRhc2subWV0YeyXkCDrk6TslrTqsIDshJwg7ZSE66Gc7IS47Iqk6rCEIO2GteyLoCDtlaAg65WMIOusuOygnCDsg53quLDqsbDrk6DsmpQsLFxuICAgICAgZmlsZVBhdGg6IHRyYWNlLnN0YWNrWzBdPy5maWxlUGF0aCA/PyBcIlwiLFxuICAgICAgbGluZU51bWJlcjogdHJhY2Uuc3RhY2tbMF0/LmxpbmVOdW1iZXIgPz8gMCxcbiAgICAgIGF0OiB0cmFjZS5hdC50b0lTT1N0cmluZygpLFxuICAgIH0pKTtcbiAgfVxuXG4gIC8vIO2KueyglSDtgqQg7IKt7KCc7ZWY6riwXG4gIGRlbChrZXk6IHN0cmluZykge1xuICAgIGNvbnN0IGNvbnRleHQgPSBTb25hbXUuZ2V0Q29udGV4dCgpO1xuICAgIGlmICghY29udGV4dD8ubmFpdGVTdG9yZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb250ZXh0Lm5haXRlU3RvcmUuZGVsZXRlKGtleSk7XG4gIH1cblxuICBjcmVhdGVTdG9yZSgpOiBOYWl0ZVN0b3JlIHtcbiAgICByZXR1cm4gbmV3IE1hcDxzdHJpbmcsIE5haXRlVHJhY2VbXT4oKTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgTmFpdGUgPSBuZXcgTmFpdGVDbGFzcygpO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQThHQSxTQUFTLG1CQUFpQztDQUN4QyxNQUFNLHlCQUFRLElBQUksTUFBTSxFQUFDLENBQUM7Q0FDMUIsSUFBSSxDQUFDLE9BQU8sT0FBTyxDQUFDO0NBU3BCLE1BQU0sU0FQUSxNQUFNLE1BQU0sSUFPWCxD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
|
|
229
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmFpdGUuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL25haXRlL25haXRlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdldExvZ2dlciB9IGZyb20gXCJAbG9ndGFwZS9sb2d0YXBlXCI7XG5pbXBvcnQgeyBnZXQgfSBmcm9tIFwicmFkYXNoaVwiO1xuXG5pbXBvcnQgeyBTb25hbXUgfSBmcm9tIFwiLi4vYXBpL3NvbmFtdVwiO1xuaW1wb3J0IHsgdHlwZSBDb21wYXJpc29uT3BlcmF0b3IgfSBmcm9tIFwiLi4vZGF0YWJhc2UvcHVyaS50eXBlc1wiO1xuaW1wb3J0IHsgY29udmVydE5haXRlS2V5VG9DYXRlZ29yeSB9IGZyb20gXCIuLi9sb2dnZXIvY2F0ZWdvcnlcIjtcbmltcG9ydCB7IGlzU2VyaWFsaXphYmxlIH0gZnJvbSBcIi4uL3V0aWxzL29iamVjdC11dGlsc1wiO1xuaW1wb3J0IHsgaXNOdW1iZXJWYWx1ZSwgaXNTdHJpbmdWYWx1ZSB9IGZyb20gXCIuLi91dGlscy9ydW50aW1lLXZhbHVlXCI7XG5cbi8vIFN0YWNrRnJhbWUg7YOA7J6FXG5pbnRlcmZhY2UgU3RhY2tGcmFtZSB7XG4gIGZ1bmN0aW9uTmFtZTogc3RyaW5nIHwgbnVsbDtcbiAgZmlsZVBhdGg6IHN0cmluZzsgLy8gXCIvVXNlcnMvLi4uL3N5bmNlci50c1wiIOuYkOuKlCBcIm5vZGU6aW50ZXJuYWwvLi4uXCJcbiAgbGluZU51bWJlcjogbnVtYmVyOyAvLyBUUyDtjIzsnbwg6riw7KSAIOudvOyduCDrsojtmLhcbn1cblxuLy8gTmFpdGVUcmFjZSDtg4DsnoVcbmludGVyZmFjZSBOYWl0ZVRyYWNlIHtcbiAga2V5OiBzdHJpbmc7XG4gIGRhdGE6IE5haXRlRGF0YTtcbiAgc3RhY2s6IFN0YWNrRnJhbWVbXTsgLy8g7L2c7Iqk7YOdIOygleuztFxuICBhdDogRGF0ZTtcbn1cblxuLy8gTmFpdGXripQg7KeB66Cs7ZmUIOqwgOuKpeyEsSDqsoDsgqzrpbwg64K067O064K06riwIOyLnOygkOyXkCDsiJjtlontlZjrr4DroZwg66qo65OgIEphdmFTY3JpcHQg6rCS7J2EIOq4sOuhne2VoCDsiJgg7J6I7Iq164uI64ukLlxuZXhwb3J0IHR5cGUgTmFpdGVEYXRhID0gbnVsbCB8IHVuZGVmaW5lZCB8IGJpZ2ludCB8IGJvb2xlYW4gfCBudW1iZXIgfCBvYmplY3QgfCBzdHJpbmcgfCBzeW1ib2w7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmFpdGVFdmVudFJlZ2lzdHJ5IHtcbiAgYWN0aW9uR2VuZXJhdGVTZXJ2aWNlczogcmVhZG9ubHkgb2JqZWN0W107XG4gIFwiZnMvcHJvbWlzZXM6cm1cIjoge1xuICAgIHBhdGg6IHN0cmluZztcbiAgICBvcHRpb25zPzogb2JqZWN0O1xuICB9O1xuICBcImZzL3Byb21pc2VzOndyaXRlRmlsZVwiOiB7XG4gICAgcGF0aDogc3RyaW5nO1xuICAgIGRhdGE6IHN0cmluZztcbiAgfTtcbiAgXCJwdXJpOmV4ZWN1dGVkLXF1ZXJ5XCI6IHN0cmluZztcbiAgXCJwdXJpOnViLWJhdGNoLXVwZGF0ZWRcIjoge1xuICAgIHRhYmxlTmFtZTogc3RyaW5nO1xuICAgIHJvd0NvdW50OiBudW1iZXI7XG4gICAgd2hlcmVDb2x1bW5zOiBzdHJpbmdbXTtcbiAgfTtcbiAgXCJwdXJpOnViLWNsZWFuLW9ycGhhbnNcIjoge1xuICAgIHRhYmxlTmFtZTogc3RyaW5nO1xuICAgIGNsZWFuT3JwaGFuczogc3RyaW5nW107XG4gICAgZGVsZXRlZENvdW50OiBudW1iZXI7XG4gIH07XG4gIFwicHVyaTp1Yi1pbmhlcml0XCI6IHtcbiAgICB0YWJsZU5hbWU6IHN0cmluZztcbiAgICBpbmhlcml0Q29sdW1uczogc3RyaW5nW107XG4gICAgZXhjbHVkZWRGcm9tVXBkYXRlOiBzdHJpbmdbXTtcbiAgfTtcbiAgXCJwdXJpOnViLXJlZi1yZXNvbHZlZFwiOiB7XG4gICAgdGFibGVOYW1lOiBzdHJpbmc7XG4gICAgZmllbGQ6IHN0cmluZztcbiAgICBmcm9tOiBVQlJlZmVyZW5jZTtcbiAgICB0bzogTmFpdGVEYXRhO1xuICB9O1xuICBcInB1cmk6dWItcmVnaXN0ZXJcIjoge1xuICAgIHRhYmxlTmFtZTogc3RyaW5nO1xuICAgIHV1aWQ6IHN0cmluZztcbiAgICBpc1V1aWRSZXVzZWQ6IGJvb2xlYW47XG4gICAgcm93OiBvYmplY3QgJiB7IHVzZXJfaWQ6IFVCUmVmZXJlbmNlIH07XG4gIH07XG4gIFwicHVyaTp1Yi11cHNlcnRlZFwiOiB7XG4gICAgdGFibGVOYW1lOiBzdHJpbmc7XG4gICAgbW9kZTogXCJpbnNlcnRcIiB8IFwidXBzZXJ0XCI7XG4gICAgcm93Q291bnQ6IG51bWJlcjtcbiAgICByZXR1cm5lZElkczogQXJyYXk8bnVtYmVyIHwgc3RyaW5nPjtcbiAgfTtcbn1cblxuaW50ZXJmYWNlIFVCUmVmZXJlbmNlIHtcbiAgdXVpZDogc3RyaW5nO1xuICBvZjogc3RyaW5nO1xuICB1c2U/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmFpdGVSZXN1bHQ8UGF5bG9hZD4gZXh0ZW5kcyBBcnJheTxQYXlsb2FkPiB7XG4gIDA6IFBheWxvYWQ7XG4gIDE6IFBheWxvYWQ7XG4gIFtpbmRleDogbnVtYmVyXTogUGF5bG9hZDtcbiAgZmluZDxNYXRjaCBleHRlbmRzIFBheWxvYWQ+KFxuICAgIHByZWRpY2F0ZTogKHZhbHVlOiBQYXlsb2FkLCBpbmRleDogbnVtYmVyLCB2YWx1ZXM6IFBheWxvYWRbXSkgPT4gdmFsdWUgaXMgTWF0Y2gsXG4gICk6IE1hdGNoO1xuICBmaW5kKHByZWRpY2F0ZTogKHZhbHVlOiBQYXlsb2FkLCBpbmRleDogbnVtYmVyLCB2YWx1ZXM6IFBheWxvYWRbXSkgPT4gYm9vbGVhbik6IFBheWxvYWQ7XG59XG5cbnR5cGUgTmFpdGVWYWx1ZXNCeUtleSA9IFJlY29yZDxzdHJpbmcsIE5haXRlVHJhY2VbXSB8IEFycmF5PE5haXRlVHJhY2VbXCJkYXRhXCJdPj47XG5cbi8vIE5haXRlLnTqsIAg7KCA7J6l65CY64qUIO2DgOyehSAo7ZWt7IOBIOuwsOyXtOuhnCDthrXsnbwpXG5leHBvcnQgdHlwZSBOYWl0ZVN0b3JlID0gTWFwPHN0cmluZywgTmFpdGVUcmFjZVtdPjtcblxuLy8gZ2V0QWxsVHJhY2VzKCnqsIAg67CY7ZmY7ZWY64qUIOyngeugrO2ZlOuQnCB0cmFjZSDtg4DsnoVcbi8vIGJvb3RzdHJhcC50c+ydmCBUYXNrTWV0YSBhdWdtZW50YXRpb24sIGRldi12aXRlc3QtbWFuYWdlci50c+yXkOyEnOuPhCDsnbQg7YOA7J6F7J2EIOqzteycoO2VqeuLiOuLpC5cbmV4cG9ydCB0eXBlIFNlcmlhbGl6ZWRUcmFjZSA9IHtcbiAga2V5OiBzdHJpbmc7XG4gIHZhbHVlOiB1bmtub3duO1xuICBmaWxlUGF0aDogc3RyaW5nO1xuICBsaW5lTnVtYmVyOiBudW1iZXI7XG4gIGF0OiBzdHJpbmc7XG59O1xuXG4vKipcbiAqIOy9nOyKpO2DneydhCDtjIzsi7HtlZjsl6wgU3RhY2tGcmFtZSDrsLDsl7TroZwg67CY7ZmYXG4gKiAtIGV4dHJhY3RDYWxsU3RhY2sg7J6Q7Iug6rO8IE5haXRlLnTripQg7KCc7Jm4XG4gKiAtIHJ1bldpdGhDb250ZXh0L3J1bldpdGhNb2NrQ29udGV4dCDrsJzqsqwg7IucIOqxsOq4sOyEnCDsooXro4xcbiAqIC0gbm9kZTog64K067aAIOqyveuhnOuKlCDtj6ztlajtlZjrkJgsIGxpbmVOdW1iZXLripQgcGF0aOyXkCA6IO2PrO2VqCDsi5wg67aZ7J207KeAIOyViuydjFxuICovXG5mdW5jdGlvbiBleHRyYWN0Q2FsbFN0YWNrKCk6IFN0YWNrRnJhbWVbXSB7XG4gIGNvbnN0IHN0YWNrID0gbmV3IEVycm9yKCkuc3RhY2s7XG4gIGlmICghc3RhY2spIHJldHVybiBbXTtcblxuICBjb25zdCBsaW5lcyA9IHN0YWNrLnNwbGl0KFwiXFxuXCIpO1xuXG4gIC8vIOy9nOyKpO2DnSDqtazsobA6XG4gIC8vIFswXTogXCJFcnJvclwiXG4gIC8vIFsxXTogXCJhdCBleHRyYWN0Q2FsbFN0YWNrXCJcbiAgLy8gWzJdOiBcImF0IE5haXRlLnRcIlxuICAvLyBbM106IOyLpOygnCDtmLjstpwg7JyE7LmY67aA7YSwIOyLnOyekVxuICBjb25zdCBmcmFtZXMgPSBsaW5lc1xuICAgIC5zbGljZSgzKVxuICAgIC5tYXAocGFyc2VTdGFja0ZyYW1lKVxuICAgIC5maWx0ZXIoKGZyYW1lKTogZnJhbWUgaXMgU3RhY2tGcmFtZSA9PiBmcmFtZSAhPT0gbnVsbCk7XG5cbiAgLy8gcnVuV2l0aENvbnRleHQg6rOE7Je0IO2VqOyImCDrsJzqsqwg7IucIOqxsOq4sOyEnCDsnpDrpbTquLBcbiAgY29uc3QgY29udGV4dEluZGV4ID0gZnJhbWVzLmZpbmRJbmRleChcbiAgICAoZikgPT5cbiAgICAgIGYuZnVuY3Rpb25OYW1lPy5pbmNsdWRlcyhcInJ1bldpdGhDb250ZXh0XCIpIHx8IGYuZnVuY3Rpb25OYW1lPy5pbmNsdWRlcyhcInJ1bldpdGhNb2NrQ29udGV4dFwiKSxcbiAgKTtcblxuICByZXR1cm4gY29udGV4dEluZGV4ID49IDAgPyBmcmFtZXMuc2xpY2UoMCwgY29udGV4dEluZGV4ICsgMSkgOiBmcmFtZXM7XG59XG5cbi8qKlxuICog7L2c7Iqk7YOdIO2VnCDspITsnYQg7YyM7IuxXG4gKiDtmJXsi50xOiBcImF0IEZ1bmN0aW9uTmFtZSAoZmlsZVBhdGg6bGluZU51bWJlcjpjb2x1bW5OdW1iZXIpXCJcbiAqIO2YleyLnTI6IFwiYXQgZmlsZVBhdGg6bGluZU51bWJlcjpjb2x1bW5OdW1iZXJcIiAo7J2166qFIO2VqOyImC/rqqjrk4gg66CI67KoKVxuICovXG5mdW5jdGlvbiBwYXJzZVN0YWNrRnJhbWUobGluZTogc3RyaW5nKTogU3RhY2tGcmFtZSB8IG51bGwge1xuICAvLyDtjKjthLQxOiBcImF0IEZ1bmN0aW9uTmFtZSAoZmlsZVBhdGg6bGluZU51bWJlcjpjb2x1bW5OdW1iZXIpXCJcbiAgY29uc3QgbWF0Y2hXaXRoRnVuYyA9IGxpbmUubWF0Y2goL2F0XFxzKyguKz8pXFxzK1xcKCguKz8pOihcXGQrKTpcXGQrXFwpLyk7XG4gIGlmIChtYXRjaFdpdGhGdW5jKSB7XG4gICAgY29uc3QgZnVuY3Rpb25OYW1lID0gbWF0Y2hXaXRoRnVuY1sxXTtcbiAgICBjb25zdCBmaWxlUGF0aCA9IG1hdGNoV2l0aEZ1bmNbMl07XG4gICAgY29uc3QgbGluZU51bWJlclN0ciA9IG1hdGNoV2l0aEZ1bmNbM107XG5cbiAgICAvLyBmaWxlUGF0aOyXkCDsnbTrr7ggOuqwgCDtj6ztlajrkJjslrQg7J6I7Jy866m0ICjsmIg6IFwibm9kZTppbnRlcm5hbC8uLi5cIilcbiAgICBpZiAoZmlsZVBhdGguaW5jbHVkZXMoXCI6XCIpKSB7XG4gICAgICByZXR1cm4geyBmdW5jdGlvbk5hbWUsIGZpbGVQYXRoLCBsaW5lTnVtYmVyOiAwIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGZ1bmN0aW9uTmFtZSxcbiAgICAgIGZpbGVQYXRoLFxuICAgICAgbGluZU51bWJlcjogTnVtYmVyLnBhcnNlSW50KGxpbmVOdW1iZXJTdHIsIDEwKSxcbiAgICB9O1xuICB9XG5cbiAgLy8g7Yyo7YS0MjogXCJhdCBmaWxlUGF0aDpsaW5lTnVtYmVyOmNvbHVtbk51bWJlclwiICjtlajsiJjrqoUg7JeG7J2MKVxuICBjb25zdCBtYXRjaE5vRnVuYyA9IGxpbmUubWF0Y2goL2F0XFxzKyguKz8pOihcXGQrKTpcXGQrJC8pO1xuICBpZiAobWF0Y2hOb0Z1bmMpIHtcbiAgICBjb25zdCBmaWxlUGF0aCA9IG1hdGNoTm9GdW5jWzFdO1xuICAgIGNvbnN0IGxpbmVOdW1iZXJTdHIgPSBtYXRjaE5vRnVuY1syXTtcblxuICAgIHJldHVybiB7XG4gICAgICBmdW5jdGlvbk5hbWU6IG51bGwsXG4gICAgICBmaWxlUGF0aCxcbiAgICAgIGxpbmVOdW1iZXI6IE51bWJlci5wYXJzZUludChsaW5lTnVtYmVyU3RyLCAxMCksXG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufVxuXG4vKipcbiAqIHdpbGRjYXJkIO2MqO2EtCDrp6Tsua1cbiAqIOyYiOyLnDpcbiAqIC0gXCJzeW5jZXI6KlwiIOKGkiBcInN5bmNlcjphXCIsIFwic3luY2VyOmE6YlwiIOuqqOuRkCDrp6Tsua1cbiAqIC0gXCJzeW5jZXI6Kjp1c2VyXCIg4oaSIFwic3luY2VyOnJlbmRlclRlbXBsYXRlOnVzZXJcIiDrp6Tsua1cbiAqIC0gXCJzeW5jZXI6cmVuZGVyVGVtcGxhdGU6KlwiIOKGkiBcInN5bmNlcjpyZW5kZXJUZW1wbGF0ZTpzZXJ2aWNlXCIg66ek7LmtXG4gKi9cbmZ1bmN0aW9uIG1hdGNoZXNQYXR0ZXJuKGtleTogc3RyaW5nLCBwYXR0ZXJuOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgY29uc3Qga2V5UGFydHMgPSBrZXkuc3BsaXQoXCI6XCIpO1xuICBjb25zdCBwYXR0ZXJuUGFydHMgPSBwYXR0ZXJuLnNwbGl0KFwiOlwiKTtcblxuICAvLyDrp4jsp4Drp4nsnbQgKiDihpIgcHJlZml4IOunpOy5rSAo6ri47J20IOustOq0gClcbiAgLy8g7JiIOiBcInN5bmNlcjoqXCLripQgXCJzeW5jZXI6YVwiLCBcInN5bmNlcjphOmJcIiDrqqjrkZAg66ek7LmtXG4gIGlmIChwYXR0ZXJuUGFydHNbcGF0dGVyblBhcnRzLmxlbmd0aCAtIDFdID09PSBcIipcIikge1xuICAgIGNvbnN0IHByZWZpeFBhcnRzID0gcGF0dGVyblBhcnRzLnNsaWNlKDAsIC0xKTtcbiAgICAvLyBwcmVmaXjqsIAg66qo65GQIOydvOy5mO2VmOuKlOyngCDtmZXsnbhcbiAgICByZXR1cm4gcHJlZml4UGFydHMuZXZlcnkoKHBhcnQsIGkpID0+IHBhcnQgPT09IGtleVBhcnRzW2ldKTtcbiAgfVxuXG4gIC8vIOq4uOydtOqwgCDqsJnslYTslbwg7ZWoXG4gIGlmIChwYXR0ZXJuUGFydHMubGVuZ3RoICE9PSBrZXlQYXJ0cy5sZW5ndGgpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvLyDqsIEg7YyM7Yq46rCAICog65iQ64qUIOygle2Zle2eiCDsnbzsuZhcbiAgcmV0dXJuIHBhdHRlcm5QYXJ0cy5ldmVyeSgocGFydCwgaSkgPT4gcGFydCA9PT0gXCIqXCIgfHwgcGFydCA9PT0ga2V5UGFydHNbaV0pO1xufVxuXG4vKipcbiAqIE5haXRlUXVlcnkg7YG0656Y7IqkXG4gKiDssrTsnbTri53snYQg7Ya17ZWcIHRyYWNlIO2VhO2EsOungSDrsI8g7KGw7ZqMXG4gKi9cbmV4cG9ydCBjbGFzcyBOYWl0ZVF1ZXJ5PFBheWxvYWQgZXh0ZW5kcyBOYWl0ZURhdGEgPSBOYWl0ZURhdGE+IHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSB0cmFjZXM6IE5haXRlVHJhY2VbXSkge31cblxuICBwcml2YXRlIGlzQ29tcGFyYWJsZVZhbHVlPFZhbHVlPih2YWx1ZTogVmFsdWUpOiB2YWx1ZSBpcyBWYWx1ZSAmIChudW1iZXIgfCBzdHJpbmcpIHtcbiAgICByZXR1cm4gaXNOdW1iZXJWYWx1ZSh2YWx1ZSkgfHwgaXNTdHJpbmdWYWx1ZSh2YWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICog7YyM7J2866qF7Jy866GcIO2VhO2EsOungVxuICAgKiBAcGFyYW0gZmlsZU5hbWUg7YyM7J2866qFICjsmIg6IFwic3luY2VyLnRlc3QudHNcIilcbiAgICovXG4gIGZyb21GaWxlKGZpbGVOYW1lOiBzdHJpbmcpOiBOYWl0ZVF1ZXJ5PFBheWxvYWQ+IHtcbiAgICBjb25zdCBmaWx0ZXJlZCA9IHRoaXMudHJhY2VzLmZpbHRlcigodCkgPT5cbiAgICAgIHQuc3RhY2suc29tZSgoZnJhbWUpID0+IGZyYW1lLmZpbGVQYXRoLmVuZHNXaXRoKGAvJHtmaWxlTmFtZX1gKSksXG4gICAgKTtcbiAgICByZXR1cm4gbmV3IE5haXRlUXVlcnk8UGF5bG9hZD4oZmlsdGVyZWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIO2VqOyImOuqheycvOuhnCDtlYTthLDrp4FcbiAgICogQHBhcmFtIGZ1bmNOYW1lIO2VqOyImOuqhSAoaW5jbHVkZXMg7LK07YGsKVxuICAgKiBAcGFyYW0gb3B0aW9ucy5mcm9tICdkaXJlY3QnID0g7KeB7KCRIO2YuOy2nOunjCwgJ2luZGlyZWN0JyA9IOqwhOygkSDtmLjstpzrp4wsICdib3RoJyA9IOuqqOuRkFxuICAgKi9cbiAgZnJvbUZ1bmN0aW9uKFxuICAgIGZ1bmNOYW1lOiBzdHJpbmcsXG4gICAgb3B0aW9uczogeyBmcm9tOiBcImRpcmVjdFwiIHwgXCJpbmRpcmVjdFwiIHwgXCJib3RoXCIgfSA9IHsgZnJvbTogXCJib3RoXCIgfSxcbiAgKTogTmFpdGVRdWVyeTxQYXlsb2FkPiB7XG4gICAgY29uc3QgZmlsdGVyZWQgPSB0aGlzLnRyYWNlcy5maWx0ZXIoKHQpID0+IHtcbiAgICAgIGlmIChvcHRpb25zLmZyb20gPT09IFwiZGlyZWN0XCIpIHtcbiAgICAgICAgLy8gc3RhY2tbMF3rp4wg7ZmV7J24ICjsp4HsoJEg7Zi47LacKVxuICAgICAgICByZXR1cm4gdC5zdGFja1swXT8uZnVuY3Rpb25OYW1lPy5pbmNsdWRlcyhmdW5jTmFtZSk7XG4gICAgICB9XG4gICAgICBpZiAob3B0aW9ucy5mcm9tID09PSBcImluZGlyZWN0XCIpIHtcbiAgICAgICAgLy8gc3RhY2tbMStd7JeQ7IScIO2ZleyduCAo6rCE7KCRIO2YuOy2nClcbiAgICAgICAgcmV0dXJuIHQuc3RhY2suc2xpY2UoMSkuc29tZSgoZikgPT4gZi5mdW5jdGlvbk5hbWU/LmluY2x1ZGVzKGZ1bmNOYW1lKSk7XG4gICAgICB9XG4gICAgICAvLyDsoITssrQg7Iqk7YOd7JeQ7IScIO2ZleyduFxuICAgICAgcmV0dXJuIHQuc3RhY2suc29tZSgoZikgPT4gZi5mdW5jdGlvbk5hbWU/LmluY2x1ZGVzKGZ1bmNOYW1lKSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIG5ldyBOYWl0ZVF1ZXJ5PFBheWxvYWQ+KGZpbHRlcmVkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiDrjbDsnbTthLAg6rK966GcIOq4sOuwmCDtlYTthLDrp4FcbiAgICogQHBhcmFtIHBhdGggcmFkYXNoIGdldCDqsr3roZwgKOyYiDogXCJkYXRhLnVzZXJJZFwiKVxuICAgKiBAcGFyYW0gb3BlcmF0b3Ig67mE6rWQIOyXsOyCsOyekFxuICAgKiBAcGFyYW0gdmFsdWUg67mE6rWQ6rCSXG4gICAqL1xuICB3aGVyZTxWYWx1ZSBleHRlbmRzIE5haXRlRGF0YT4oXG4gICAgcGF0aDogc3RyaW5nLFxuICAgIG9wZXJhdG9yOiBDb21wYXJpc29uT3BlcmF0b3IgfCBcImluY2x1ZGVzXCIsXG4gICAgdmFsdWU6IFZhbHVlLFxuICApOiBOYWl0ZVF1ZXJ5PFBheWxvYWQ+IHtcbiAgICBjb25zdCBmaWx0ZXJlZCA9IHRoaXMudHJhY2VzLmZpbHRlcigodHJhY2UpID0+IHtcbiAgICAgIGNvbnN0IGFjdHVhbCA9IGdldCh0cmFjZSwgcGF0aCk7XG5cbiAgICAgIHN3aXRjaCAob3BlcmF0b3IpIHtcbiAgICAgICAgY2FzZSBcIj5cIjpcbiAgICAgICAgICByZXR1cm4gdGhpcy5pc0NvbXBhcmFibGVWYWx1ZShhY3R1YWwpICYmIHRoaXMuaXNDb21wYXJhYmxlVmFsdWUodmFsdWUpICYmIGFjdHVhbCA+IHZhbHVlO1xuICAgICAgICBjYXNlIFwiPFwiOlxuICAgICAgICAgIHJldHVybiB0aGlzLmlzQ29tcGFyYWJsZVZhbHVlKGFjdHVhbCkgJiYgdGhpcy5pc0NvbXBhcmFibGVWYWx1ZSh2YWx1ZSkgJiYgYWN0dWFsIDwgdmFsdWU7XG4gICAgICAgIGNhc2UgXCI+PVwiOlxuICAgICAgICAgIHJldHVybiB0aGlzLmlzQ29tcGFyYWJsZVZhbHVlKGFjdHVhbCkgJiYgdGhpcy5pc0NvbXBhcmFibGVWYWx1ZSh2YWx1ZSkgJiYgYWN0dWFsID49IHZhbHVlO1xuICAgICAgICBjYXNlIFwiPD1cIjpcbiAgICAgICAgICByZXR1cm4gdGhpcy5pc0NvbXBhcmFibGVWYWx1ZShhY3R1YWwpICYmIHRoaXMuaXNDb21wYXJhYmxlVmFsdWUodmFsdWUpICYmIGFjdHVhbCA8PSB2YWx1ZTtcbiAgICAgICAgY2FzZSBcIj1cIjpcbiAgICAgICAgICByZXR1cm4gYWN0dWFsID09PSB2YWx1ZTtcbiAgICAgICAgY2FzZSBcIiE9XCI6XG4gICAgICAgICAgcmV0dXJuIGFjdHVhbCAhPT0gdmFsdWU7XG4gICAgICAgIGNhc2UgXCJpbmNsdWRlc1wiOlxuICAgICAgICAgIHJldHVybiBpc1N0cmluZ1ZhbHVlKGFjdHVhbCkgJiYgaXNTdHJpbmdWYWx1ZSh2YWx1ZSkgJiYgYWN0dWFsLmluY2x1ZGVzKHZhbHVlKTtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIG5ldyBOYWl0ZVF1ZXJ5PFBheWxvYWQ+KGZpbHRlcmVkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiDsoITssrQg642w7J207YSwIOuwsOyXtCDrsJjtmZhcbiAgICovXG4gIHJlc3VsdCgpOiBOYWl0ZVJlc3VsdDxQYXlsb2FkPjtcbiAgcmVzdWx0KCk6IE5haXRlRGF0YVtdIHtcbiAgICByZXR1cm4gdGhpcy50cmFjZXMubWFwKCh0KSA9PiB0LmRhdGEpO1xuICB9XG5cbiAgLyoqXG4gICAqIOyyqyDrsojsp7gg642w7J207YSwIOuwmO2ZmFxuICAgKi9cbiAgZmlyc3QoKTogUGF5bG9hZDtcbiAgZmlyc3QoKTogTmFpdGVEYXRhIHtcbiAgICByZXR1cm4gdGhpcy50cmFjZXNbMF0/LmRhdGE7XG4gIH1cblxuICAvKipcbiAgICog66eI7KeA66eJIOuNsOydtO2EsCDrsJjtmZhcbiAgICovXG4gIGxhc3QoKTogUGF5bG9hZDtcbiAgbGFzdCgpOiBOYWl0ZURhdGEge1xuICAgIHJldHVybiB0aGlzLnRyYWNlc1t0aGlzLnRyYWNlcy5sZW5ndGggLSAxXT8uZGF0YTtcbiAgfVxuXG4gIC8qKlxuICAgKiBu67KI7Ke4IOuNsOydtO2EsCDrsJjtmZhcbiAgICovXG4gIGF0KGluZGV4OiBudW1iZXIpOiBQYXlsb2FkO1xuICBhdChpbmRleDogbnVtYmVyKTogTmFpdGVEYXRhIHtcbiAgICByZXR1cm4gdGhpcy50cmFjZXNbaW5kZXhdPy5kYXRhO1xuICB9XG5cbiAgLyoqXG4gICAqIOybkOuzuCB0cmFjZSDrsLDsl7Qg67CY7ZmYICjrlJTrsoTquYUvTmFpdGVWaWV3ZXLsmqkpXG4gICAqL1xuICBnZXRUcmFjZXMoKTogTmFpdGVUcmFjZVtdIHtcbiAgICByZXR1cm4gdGhpcy50cmFjZXM7XG4gIH1cbn1cblxuLy8gTmFpdGUg7Iux6riA7YS0IOqwneyytCAo7LaU7ZuEIGxvZ2dlciDsl7DqsrAg65Ox7J2YIOyDge2DnCDqtIDrpqwg7ZWE7JqU7ISxIOqzoOugpClcbmV4cG9ydCBjbGFzcyBOYWl0ZUNsYXNzIHtcbiAgLy8g7YWM7Iqk7Yq4IOuhnOq3uCDquLDroZ1cbiAgdDxWYWx1ZSBleHRlbmRzIE5haXRlRGF0YT4obmFtZTogc3RyaW5nLCB2YWx1ZTogVmFsdWUpIHtcbiAgICAvLyDsnbQgdCDtlajsiJjripQg7YWM7Iqk7Yq4IO2ZmOqyveyXkOyEnOunjCDsnpHrj5ntlbTslbwg7ZWp64uI64ukLlxuICAgIC8vIOq3uOumrOqzoCDthYzsiqTtirgg7ZmY6rK9IO2MkOuLqOyXkCDsmZwgaXNUZXN0KCkg7ZWo7IiY66W8IOyCrOyaqe2VmOyngCDslYrslZjrg5DrqbTsmpQsLFxuICAgIC8vIOydtOugh+qyjCDtlZjripTqsowg7Jyg7Yu4IO2VqOyImCDrtojrn6zsmYDshJwg7IKs7Jqp7ZWY64qUIOqyg+uztOuLpCDsobDquIjsnbTrgpjrp4gg67mg66W8IOqygyDqsJnslZjquLAg65WM66y47J6F64uI64ukLlxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJ0ZXN0XCIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgY29udGV4dCA9IFNvbmFtdS5nZXRDb250ZXh0KCk7XG4gICAgICBjb25zdCBzdG9yZSA9IGNvbnRleHQ/Lm5haXRlU3RvcmU7XG5cbiAgICAgIGlmICghc3RvcmUpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICAvLyDsvZzsiqTtg50g7IiY7KeRXG4gICAgICBjb25zdCBzdGFjayA9IGV4dHJhY3RDYWxsU3RhY2soKTtcblxuICAgICAgY29uc3QgdHJhY2U6IE5haXRlVHJhY2UgPSB7XG4gICAgICAgIGtleTogbmFtZSxcbiAgICAgICAgZGF0YTogdmFsdWUsXG4gICAgICAgIHN0YWNrLFxuICAgICAgICBhdDogbmV3IERhdGUoKSxcbiAgICAgIH07XG5cbiAgICAgIC8vIO2VreyDgSDrsLDsl7TroZwg6rSA66asXG4gICAgICBjb25zdCBleGlzdGluZyA9IHN0b3JlLmdldChuYW1lKSA/PyBbXTtcbiAgICAgIGdldExvZ2dlcihbXCJuYWl0ZVwiLCAuLi5jb252ZXJ0TmFpdGVLZXlUb0NhdGVnb3J5KG5hbWUpXSkuZGVidWcoXG4gICAgICAgIGBuYWl0ZToge25hbWV9ICR7ZXhpc3RpbmcubGVuZ3RoID09PSAwID8gXCJpcyBlbXB0eSBzdGF0ZVwiIDogYGFscmVhZHkgZXhpc3Rpbmcgd2l0aCAke2V4aXN0aW5nLmxlbmd0aH0gZW50cmllc2B9LCBhcHBlbmRpbmcgbmV3IGVudHJ5YCxcbiAgICAgICAge1xuICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgdmFsdWUsXG4gICAgICAgIH0sXG4gICAgICApO1xuXG4gICAgICBzdG9yZS5zZXQobmFtZSwgWy4uLmV4aXN0aW5nLCB0cmFjZV0pO1xuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gQ29udGV4dCDsl4bripQg7IOB7Zmp7JeQ7IScIE5haXRlLnQg7Zi47LacXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIGtleSDrmJDripQgd2lsZGNhcmQg7Yyo7YS07Jy866GcIHRyYWNlIOyhsO2ajFxuICAgKiDtla3sg4EgTmFpdGVRdWVyeSDrsJjtmZjtlZjsl6wg7LK07J2064udIOqwgOuKpVxuICAgKi9cbiAgZ2V0PEtleSBleHRlbmRzIGtleW9mIE5haXRlRXZlbnRSZWdpc3RyeT4oa2V5UGF0dGVybjogS2V5KTogTmFpdGVRdWVyeTxOYWl0ZUV2ZW50UmVnaXN0cnlbS2V5XT47XG4gIGdldChrZXlQYXR0ZXJuOiBzdHJpbmcpOiBOYWl0ZVF1ZXJ5O1xuICBnZXQoa2V5UGF0dGVybjogc3RyaW5nKTogTmFpdGVRdWVyeSB7XG4gICAgY29uc3QgY29udGV4dCA9IFNvbmFtdS5nZXRDb250ZXh0KCk7XG4gICAgY29uc3Qgc3RvcmUgPSBjb250ZXh0Py5uYWl0ZVN0b3JlO1xuXG4gICAgaWYgKCFzdG9yZSkge1xuICAgICAgcmV0dXJuIG5ldyBOYWl0ZVF1ZXJ5KFtdKTtcbiAgICB9XG5cbiAgICAvLyB3aWxkY2FyZCDsl4bsnLzrqbQgZXhhY3QgbWF0Y2hcbiAgICBpZiAoIWtleVBhdHRlcm4uaW5jbHVkZXMoXCIqXCIpKSB7XG4gICAgICBjb25zdCB0cmFjZXMgPSBzdG9yZS5nZXQoa2V5UGF0dGVybikgPz8gW107XG4gICAgICByZXR1cm4gbmV3IE5haXRlUXVlcnkodHJhY2VzKTtcbiAgICB9XG5cbiAgICAvLyB3aWxkY2FyZCDtjKjthLQg66ek7LmtXG4gICAgY29uc3QgYWxsVHJhY2VzOiBOYWl0ZVRyYWNlW10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IFtrZXksIHRyYWNlc10gb2Ygc3RvcmUuZW50cmllcygpKSB7XG4gICAgICBpZiAobWF0Y2hlc1BhdHRlcm4oa2V5LCBrZXlQYXR0ZXJuKSkge1xuICAgICAgICBhbGxUcmFjZXMucHVzaCguLi50cmFjZXMpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBuZXcgTmFpdGVRdWVyeShhbGxUcmFjZXMpO1xuICB9XG5cbiAgLy8g7KCE7LK0IOumrOyKpO2KuCDqsIDsoLjsmKTquLBcbiAgZ2V0QWxsKCkge1xuICAgIGNvbnN0IGNvbnRleHQgPSBTb25hbXUuZ2V0Q29udGV4dCgpO1xuICAgIGlmICghY29udGV4dD8ubmFpdGVTdG9yZSkge1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgICAvLyBOYWl0ZVRyYWNlIOuwsOyXtOydhCBkYXRh66eMIOy2lOy2nO2VmOyXrCDrsJjtmZhcbiAgICBjb25zdCByZXN1bHQ6IE5haXRlVmFsdWVzQnlLZXkgPSB7fTtcbiAgICBmb3IgKGNvbnN0IFtrZXksIHRyYWNlc10gb2YgY29udGV4dC5uYWl0ZVN0b3JlLmVudHJpZXMoKSkge1xuICAgICAgaWYgKGtleS5zdGFydHNXaXRoKFwibW9jazpcIikpIHtcbiAgICAgICAgLy8gTW9jayDshKTsoJXsnYAg6re464yA66GcIOuwmO2ZmFxuICAgICAgICByZXN1bHRba2V5XSA9IHRyYWNlcztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIE5haXRlVHJhY2Ug67Cw7Je07J2AIGRhdGHrp4wg7LaU7LacXG4gICAgICAgIHJlc3VsdFtrZXldID0gdHJhY2VzLm1hcCgodDogTmFpdGVUcmFjZSkgPT4gdC5kYXRhKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiDsiqTthqDslrTsl5Ag65Ok7Ja07J6I642YIO2KuOugiOydtOyKpOulvCDqs6DrjIDroZwg6rq864K07Ji164uI64ukLlxuICAgKiDsnbTrlYwg6rCS65Ok7J2AIOuqqOuRkCDsp4HroKztmZQg6rCA64ql7ZWcIOyDge2DnOuhnCDrgpjqsIDqsowg65Cp64uI64ukLlxuICAgKiDthYzsiqTtirgg7KCV67O07JmAIO2VqOq7mCBleHRlbnNpb25z7JeQIOuztOuCvCDsmqnrj4TroZwg66eM65Ok7JeI7Iq164uI64ukLlxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgZ2V0QWxsVHJhY2VzKCk6IFNlcmlhbGl6ZWRUcmFjZVtdIHtcbiAgICBjb25zdCBjb250ZXh0ID0gU29uYW11LmdldENvbnRleHQoKTtcbiAgICBpZiAoIWNvbnRleHQ/Lm5haXRlU3RvcmUpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICBjb25zdCB0cmFjZXMgPSBBcnJheS5mcm9tKGNvbnRleHQubmFpdGVTdG9yZS52YWx1ZXMoKSkuZmxhdCgpO1xuXG4gICAgLy8g7KeB66Cs7ZmUIOu2iOqwgOuKpe2VnCDqsJLsnbQg7KG07J6s7ZWc64uk66m0IOydtOulvCDrjIDrrLjsp53rp4ztlZjqsowg7JWM66Ck7KSN64uI64ukISDqt7jsuZjrp4wg7JWM66as6riw66eMIO2VmOqzoCDqt7jrg6Ug7KeA64KY6rCR64uI64ukIOOFjuOFjlxuICAgIC8vIOyZnCDsp4HroKztmZTqsIAg7KSR7JqU7ZWc6rCAPyDsnbQoZ2V0QWxsVHJhY2VzKSDtmLjstpzsnZgg6rKw6rO864qUIOyZuOu2gOuhnCDrgpjqsIDqsowg65CY64qU642wLFxuICAgIC8vIOydtOuVjCDso7wg7Jqp64+E6rCAIHZpdGVzdOydmCB0YXNrLm1ldGEg7ZWE65Oc66W8IO2Gte2VtCBhZnRlckVhY2jsl5DshJwgU29uYW11IGV4dGVuc2lvbuycvOuhnCDsoITri6ztlZjripQg6rKD7J6F64uI64ukLlxuICAgIC8vIOyXrOq4sOyEnCBtZXRhIO2VhOuTnOyXkCDri7TquLQg64K07Jqp7J2AIO2UhOuhnOyEuOyKpOqwhCDthrXsi6AocHJvY2Vzcy5zZW5kKSDrmJDripQg7Iqk66CI65Oc6rCEIO2GteyLoChtZXNzYWdlIHBvcnQp7J2EIO2Gte2VtCDsoITri6zrkJjslrTslbwg7ZWY64qU642wLFxuICAgIC8vIOydtOuhnCDsnbjtlbQgXCLsp4HroKztmZQg6rCA64ql7ZWcIOqwkuuTpOunjCDtl4jsmqlcIu2VmOuKlCDsoJzslb3snbQg7IOd6rmB64uI64ukLlxuICAgIC8vXG4gICAgLy8g7J20IOygnOyVveydhCDsnZjsi53tlZjsl6wgTmFpdGUudOyXkCDsp4HroKztmZQg6rCA64ql7ZWcIOqwkuunjCDrhJjquLDqsowg7ZWgIOyImOuPhCDsnojsl4jsp4Drp4wsIOq3uOugh+qyjCDtlZjrqbQg67aI7Y647ZW07KeIIOqygyDqsJnslYTshJwg7ZWY7KeAIOyViuyVmOyKteuLiOuLpC5cbiAgICAvLyDrlLDrnbzshJwg7ZiE7J6sIE5haXRlLnTripQg66qo65OgIOqwkuydhCDrsJvsnYQg7IiYIOyeiOqyjCDrkJjslrQg7J6I7Iq164uI64ukLlxuICAgIC8vIOuMgOyLoCDsnbTroIfqsowoZ2V0QWxsVHJhY2VzKSDqt7gg6rCS65Ok7J2EIOu5vOuCvCDrlYwgSlNPTi5zdHJpbmdpZnnrpbwg7IKs7Jqp7ZWY7JesIOqwleygnOuhnCDsp4HroKztmZQg6rCA64ql7ZWY6rKMIOunjOuTpOyXiOyKteuLiOuLpCwsXG4gICAgZm9yIChjb25zdCB0cmFjZSBvZiB0cmFjZXMpIHtcbiAgICAgIGNvbnN0IGNoZWNrID0gaXNTZXJpYWxpemFibGUodHJhY2UuZGF0YSk7XG4gICAgICBpZiAoIWNoZWNrLnZhbGlkKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICBcIlxcblwiICtcbiAgICAgICAgICAgIFwi4pWU4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWXXFxuXCIgK1xuICAgICAgICAgICAgXCLilZEgIFtOYWl0ZV0gTm9uLXNlcmlhbGl6YWJsZSB2YWx1ZSBkZXRlY3RlZCEgICAgICAgICAgICAgICAgICAgICAg4pWRXFxuXCIgK1xuICAgICAgICAgICAgXCLilaDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilaNcXG5cIiArXG4gICAgICAgICAgICBg4pWRICBLZXk6ICR7dHJhY2Uua2V5LnBhZEVuZCg1Nyl94pWRXFxuYCArXG4gICAgICAgICAgICBg4pWRICBSZWFzb246ICR7KGNoZWNrLnJlYXNvbiA/PyBcInVua25vd25cIikuc2xpY2UoMCwgNTQpLnBhZEVuZCg1NCl94pWRXFxuYCArXG4gICAgICAgICAgICBg4pWRICBMb2NhdGlvbjogJHsodHJhY2Uuc3RhY2tbMF0/LmZpbGVQYXRoID8/IFwidW5rbm93blwiKS5zbGljZSgtNTEpLnBhZEVuZCg1Mil94pWRXFxuYCArXG4gICAgICAgICAgICBg4pWRICBMaW5lOiAke1N0cmluZyh0cmFjZS5zdGFja1swXT8ubGluZU51bWJlciA/PyAwKS5wYWRFbmQoNTYpfeKVkVxcbmAgK1xuICAgICAgICAgICAgXCLilaDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilaNcXG5cIiArXG4gICAgICAgICAgICBcIuKVkSAgTmFpdGUudCgpIGFjY2VwdHMgYW55IHR5cGUgb2YgdmFsdWUuIEhvd2V2ZXIsIHZhbHVlcyB3aWxsICAgICDilZFcXG5cIiArXG4gICAgICAgICAgICBcIuKVkSAgYmUgc2VyaWFsaXplZCB0byBKU09OIHdoZW4gZXhwb3J0ZWQgdmlhIE5haXRlLmdldEFsbFRyYWNlcygpLiDilZFcXG5cIiArXG4gICAgICAgICAgICBcIuKVmuKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVnVxcblwiLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0cmFjZXMubWFwKCh0cmFjZSkgPT4gKHtcbiAgICAgIGtleTogdHJhY2Uua2V5LFxuICAgICAgdmFsdWU6IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodHJhY2UuZGF0YSA/PyBcIlwiKSksIC8vIOyngeugrO2ZlCDqsIDriqXtlZwg6rKD66eMIOuCqOq4sOugpOuKlCDriIjrrLzqsqjsmrQg64W466ClLCwg7JWI6re465+s66m0IHRhc2subWV0YeyXkCDrk6TslrTqsIDshJwg7ZSE66Gc7IS47Iqk6rCEIO2GteyLoCDtlaAg65WMIOusuOygnCDsg53quLDqsbDrk6DsmpQsLFxuICAgICAgZmlsZVBhdGg6IHRyYWNlLnN0YWNrWzBdPy5maWxlUGF0aCA/PyBcIlwiLFxuICAgICAgbGluZU51bWJlcjogdHJhY2Uuc3RhY2tbMF0/LmxpbmVOdW1iZXIgPz8gMCxcbiAgICAgIGF0OiB0cmFjZS5hdC50b0lTT1N0cmluZygpLFxuICAgIH0pKTtcbiAgfVxuXG4gIC8vIO2KueyglSDtgqQg7IKt7KCc7ZWY6riwXG4gIGRlbChrZXk6IHN0cmluZykge1xuICAgIGNvbnN0IGNvbnRleHQgPSBTb25hbXUuZ2V0Q29udGV4dCgpO1xuICAgIGlmICghY29udGV4dD8ubmFpdGVTdG9yZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb250ZXh0Lm5haXRlU3RvcmUuZGVsZXRlKGtleSk7XG4gIH1cblxuICBjcmVhdGVTdG9yZSgpOiBOYWl0ZVN0b3JlIHtcbiAgICByZXR1cm4gbmV3IE1hcDxzdHJpbmcsIE5haXRlVHJhY2VbXT4oKTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgTmFpdGUgPSBuZXcgTmFpdGVDbGFzcygpO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQThHQSxTQUFTLG1CQUFpQztDQUN4QyxNQUFNLHlCQUFRLElBQUksTUFBTSxFQUFDLENBQUM7Q0FDMUIsSUFBSSxDQUFDLE9BQU8sT0FBTyxDQUFDO0NBU3BCLE1BQU0sU0FQUSxNQUFNLE1BQU0sSUFPWCxD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
|
package/dist/runtime-type.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { __esmMin } from "./_virtual/_rolldown/runtime.js";
|
|
2
2
|
import { init_runtime_value, isBigIntValue, isFunctionValue, isNumberValue, isStringValue, isSymbolValue } from "./utils/runtime-value.js";
|
|
3
|
-
|
|
3
|
+
// src/runtime-type.ts
|
|
4
4
|
/** 런타임 값이 불리언인지 판별합니다. */
|
|
5
5
|
function isBooleanValue(value) {
|
|
6
6
|
return value === true || value === false;
|
|
@@ -19,8 +19,7 @@ function runtimeTypeOf(value) {
|
|
|
19
19
|
var init_runtime_type = __esmMin((() => {
|
|
20
20
|
init_runtime_value();
|
|
21
21
|
}));
|
|
22
|
-
//#endregion
|
|
23
22
|
init_runtime_type();
|
|
24
23
|
export { init_runtime_type, isBooleanValue, runtimeTypeOf };
|
|
25
24
|
|
|
26
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVudGltZS10eXBlLmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uL3NyYy9ydW50aW1lLXR5cGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgaXNCaWdJbnRWYWx1ZSxcbiAgaXNGdW5jdGlvblZhbHVlLFxuICBpc051bWJlclZhbHVlLFxuICBpc1N0cmluZ1ZhbHVlLFxuICBpc1N5bWJvbFZhbHVlLFxufSBmcm9tIFwiLi91dGlscy9ydW50aW1lLXZhbHVlXCI7XG5cbmV4cG9ydCB0eXBlIFJ1bnRpbWVUeXBlID1cbiAgfCBcImJpZ2ludFwiXG4gIHwgXCJib29sZWFuXCJcbiAgfCBcImZ1bmN0aW9uXCJcbiAgfCBcIm51bWJlclwiXG4gIHwgXCJvYmplY3RcIlxuICB8IFwic3RyaW5nXCJcbiAgfCBcInN5bWJvbFwiXG4gIHwgXCJ1bmRlZmluZWRcIjtcblxuLyoqIOufsO2DgOyehCDqsJLsnbQg67aI66as7Ja47J247KeAIO2MkOuzhO2VqeuLiOuLpC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0Jvb2xlYW5WYWx1ZTxWYWx1ZT4odmFsdWU6IFZhbHVlKTogdmFsdWUgaXMgVmFsdWUgJiBib29sZWFuIHtcbiAgcmV0dXJuIHZhbHVlID09PSB0cnVlIHx8IHZhbHVlID09PSBmYWxzZTtcbn1cblxuLyoqIEphdmFTY3JpcHTsnZggdHlwZW9mIOqysOqzvOulvCDri6jtla0g7Jew7IKw7J6QIOyXhuydtCDrj5nsnbztlZjqsowg6rOE7IKw7ZWp64uI64ukLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJ1bnRpbWVUeXBlT2Y8VmFsdWU+
|
|
25
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVudGltZS10eXBlLmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uL3NyYy9ydW50aW1lLXR5cGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgaXNCaWdJbnRWYWx1ZSxcbiAgaXNGdW5jdGlvblZhbHVlLFxuICBpc051bWJlclZhbHVlLFxuICBpc1N0cmluZ1ZhbHVlLFxuICBpc1N5bWJvbFZhbHVlLFxufSBmcm9tIFwiLi91dGlscy9ydW50aW1lLXZhbHVlXCI7XG5cbmV4cG9ydCB0eXBlIFJ1bnRpbWVUeXBlID1cbiAgfCBcImJpZ2ludFwiXG4gIHwgXCJib29sZWFuXCJcbiAgfCBcImZ1bmN0aW9uXCJcbiAgfCBcIm51bWJlclwiXG4gIHwgXCJvYmplY3RcIlxuICB8IFwic3RyaW5nXCJcbiAgfCBcInN5bWJvbFwiXG4gIHwgXCJ1bmRlZmluZWRcIjtcblxuLyoqIOufsO2DgOyehCDqsJLsnbQg67aI66as7Ja47J247KeAIO2MkOuzhO2VqeuLiOuLpC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0Jvb2xlYW5WYWx1ZTxWYWx1ZT4odmFsdWU6IFZhbHVlKTogdmFsdWUgaXMgVmFsdWUgJiBib29sZWFuIHtcbiAgcmV0dXJuIHZhbHVlID09PSB0cnVlIHx8IHZhbHVlID09PSBmYWxzZTtcbn1cblxuLyoqIEphdmFTY3JpcHTsnZggdHlwZW9mIOqysOqzvOulvCDri6jtla0g7Jew7IKw7J6QIOyXhuydtCDrj5nsnbztlZjqsowg6rOE7IKw7ZWp64uI64ukLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJ1bnRpbWVUeXBlT2Y8VmFsdWU+KHZhbHVlOiBWYWx1ZSk6IFJ1bnRpbWVUeXBlIHtcbiAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHJldHVybiBcInVuZGVmaW5lZFwiO1xuICBpZiAoaXNTdHJpbmdWYWx1ZSh2YWx1ZSkpIHJldHVybiBcInN0cmluZ1wiO1xuICBpZiAoaXNOdW1iZXJWYWx1ZSh2YWx1ZSkpIHJldHVybiBcIm51bWJlclwiO1xuICBpZiAoaXNCb29sZWFuVmFsdWUodmFsdWUpKSByZXR1cm4gXCJib29sZWFuXCI7XG4gIGlmIChpc0JpZ0ludFZhbHVlKHZhbHVlKSkgcmV0dXJuIFwiYmlnaW50XCI7XG4gIGlmIChpc1N5bWJvbFZhbHVlKHZhbHVlKSkgcmV0dXJuIFwic3ltYm9sXCI7XG4gIGlmIChpc0Z1bmN0aW9uVmFsdWUodmFsdWUpKSByZXR1cm4gXCJmdW5jdGlvblwiO1xuICByZXR1cm4gXCJvYmplY3RcIjtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7OztBQW1CQSxTQUFnQixlQUFzQixPQUF3QztDQUM1RSxPQUFPLFVBQVUsUUFBUSxVQUFVO0FBQ3JDOztBQUdBLFNBQWdCLGNBQXFCLE9BQTJCO0NBQzlELElBQUksVUFBVSxRQUFXLE9BQU87Q0FDaEMsSUFBSSxjQUFjLEtBQUssR0FBRyxPQUFPO0NBQ2pDLElBQUksY0FBYyxLQUFLLEdBQUcsT0FBTztDQUNqQyxJQUFJLGVBQWUsS0FBSyxHQUFHLE9BQU87Q0FDbEMsSUFBSSxjQUFjLEtBQUssR0FBRyxPQUFPO0NBQ2pDLElBQUksY0FBYyxLQUFLLEdBQUcsT0FBTztDQUNqQyxJQUFJLGdCQUFnQixLQUFLLEdBQUcsT0FBTztDQUNuQyxPQUFPO0FBQ1Q7O0NBM0I4QixtQkFBQSJ9
|
package/dist/ssr/hmr-opt-out.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { __esmMin } from "../_virtual/_rolldown/runtime.js";
|
|
2
|
-
|
|
2
|
+
// src/ssr/hmr-opt-out.ts
|
|
3
3
|
/** 요청 URL에 `?hmr=false`가 있는지 확인한다. */
|
|
4
4
|
function isHmrDisabledByQuery(url) {
|
|
5
5
|
const queryIndex = url.indexOf("?");
|
|
@@ -52,7 +52,6 @@ var init_hmr_opt_out = __esmMin((() => {
|
|
|
52
52
|
})();
|
|
53
53
|
<\/script>`;
|
|
54
54
|
}));
|
|
55
|
-
//#endregion
|
|
56
55
|
init_hmr_opt_out();
|
|
57
56
|
export { HMR_OPT_OUT_SCRIPT, init_hmr_opt_out, isHmrDisabledByQuery };
|
|
58
57
|
|
package/dist/ssr/index.js
CHANGED
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
import { __esmMin } from "../_virtual/_rolldown/runtime.js";
|
|
2
2
|
import { clearSSRRoutes, getSSRRoutes, init_registry, matchSSRRoute, registerSSR } from "./registry.js";
|
|
3
3
|
import { init_renderer, renderSSR } from "./renderer.js";
|
|
4
|
-
|
|
5
|
-
__esmMin((() => {
|
|
4
|
+
// src/ssr/index.ts
|
|
5
|
+
var init_ssr = __esmMin((() => {
|
|
6
6
|
init_registry();
|
|
7
7
|
init_renderer();
|
|
8
|
-
}))
|
|
8
|
+
}));
|
|
9
|
+
init_registry();
|
|
10
|
+
init_renderer();
|
|
11
|
+
init_ssr();
|
|
9
12
|
export { clearSSRRoutes, getSSRRoutes, matchSSRRoute, registerSSR, renderSSR };
|
|
10
13
|
|
|
11
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
14
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Nzci9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBjbGVhclNTUlJvdXRlcywgZ2V0U1NSUm91dGVzLCBtYXRjaFNTUlJvdXRlLCByZWdpc3RlclNTUiB9IGZyb20gXCIuL3JlZ2lzdHJ5XCI7XG5leHBvcnQgeyByZW5kZXJTU1IgfSBmcm9tIFwiLi9yZW5kZXJlclwiO1xuZXhwb3J0IHR5cGUgeyBQcmVsb2FkQ29uZmlnLCBQcmVsb2FkZWREYXRhLCBTU1JRdWVyeSwgU1NSUm91dGUgfSBmcm9tIFwiLi90eXBlc1wiO1xuIl0sIm1hcHBpbmdzIjoiOzs7OztDQUFxRixjQUFBO0NBQy9DLGNBQUEifQ==
|
package/dist/ssr/registry.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { __esmMin } from "../_virtual/_rolldown/runtime.js";
|
|
2
|
-
|
|
2
|
+
// src/ssr/registry.ts
|
|
3
3
|
function registerSSR(route) {
|
|
4
4
|
ssrRoutes.push(route);
|
|
5
5
|
}
|
|
@@ -36,7 +36,6 @@ var ssrRoutes;
|
|
|
36
36
|
var init_registry = __esmMin((() => {
|
|
37
37
|
ssrRoutes = [];
|
|
38
38
|
}));
|
|
39
|
-
//#endregion
|
|
40
39
|
init_registry();
|
|
41
40
|
export { clearSSRRoutes, getSSRRoutes, init_registry, matchPath, matchSSRRoute, registerSSR };
|
|
42
41
|
|
package/dist/ssr/renderer.js
CHANGED
|
@@ -2,7 +2,7 @@ import { __esmMin } from "../_virtual/_rolldown/runtime.js";
|
|
|
2
2
|
import { applyCacheHeaders, init_cache_control } from "../cache-control/cache-control.js";
|
|
3
3
|
import { HMR_OPT_OUT_SCRIPT, init_hmr_opt_out, isHmrDisabledByQuery } from "./hmr-opt-out.js";
|
|
4
4
|
import path from "node:path";
|
|
5
|
-
|
|
5
|
+
// src/ssr/renderer.ts
|
|
6
6
|
async function renderSSR(url, route, params, request, reply, config, vite) {
|
|
7
7
|
const { Sonamu } = await import("../api/sonamu.js");
|
|
8
8
|
const preloadConfig = route.preload ? route.preload(params) : [];
|
|
@@ -76,8 +76,7 @@ var init_renderer = __esmMin((() => {
|
|
|
76
76
|
init_cache_control();
|
|
77
77
|
init_hmr_opt_out();
|
|
78
78
|
}));
|
|
79
|
-
//#endregion
|
|
80
79
|
init_renderer();
|
|
81
80
|
export { init_renderer, renderSSR };
|
|
82
81
|
|
|
83
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuZGVyZXIuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Nzci9yZW5kZXJlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcGF0aCBmcm9tIFwibm9kZTpwYXRoXCI7XG5cbmltcG9ydCB7IHR5cGUgRmFzdGlmeVJlcGx5LCB0eXBlIEZhc3RpZnlSZXF1ZXN0IH0gZnJvbSBcImZhc3RpZnlcIjtcbmltcG9ydCB7IHR5cGUgVml0ZURldlNlcnZlciB9IGZyb20gXCJ2aXRlXCI7XG5cbmltcG9ydCB7IGFwcGx5Q2FjaGVIZWFkZXJzIH0gZnJvbSBcIi4uL2NhY2hlLWNvbnRyb2wvY2FjaGUtY29udHJvbFwiO1xuaW1wb3J0IHsgdHlwZSBDYWNoZUNvbnRyb2xSZXF1ZXN0IH0gZnJvbSBcIi4uL2NhY2hlLWNvbnRyb2wvdHlwZXNcIjtcbmltcG9ydCB7IHR5cGUgU29uYW11RmFzdGlmeUNvbmZpZyB9IGZyb20gXCIuLi90eXBlcy90eXBlc1wiO1xuaW1wb3J0IHsgSE1SX09QVF9PVVRfU0NSSVBULCBpc0htckRpc2FibGVkQnlRdWVyeSB9IGZyb20gXCIuL2htci1vcHQtb3V0XCI7XG5pbXBvcnQgeyB0eXBlIFByZWxvYWRlZERhdGEsIHR5cGUgU1NSUm91dGUgfSBmcm9tIFwiLi90eXBlc1wiO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVuZGVyU1NSKFxuICB1cmw6IHN0cmluZyxcbiAgcm91dGU6IFNTUlJvdXRlLFxuICBwYXJhbXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4sXG4gIHJlcXVlc3Q6IEZhc3RpZnlSZXF1ZXN0LFxuICByZXBseTogRmFzdGlmeVJlcGx5LFxuICBjb25maWc6IFNvbmFtdUZhc3RpZnlDb25maWcsXG4gIHZpdGU/OiBWaXRlRGV2U2VydmVyLFxuKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgY29uc3QgeyBTb25hbXUgfSA9IGF3YWl0IGltcG9ydChcIi4uL2FwaS9zb25hbXVcIik7XG5cbiAgLy8gMS4gcHJlbG9hZCDsi6Ttlokg4oaSIFNTUlF1ZXJ5W10g7ZqN65OdIChkZXYvcHJvZCDqs7XthrUpXG4gIGNvbnN0IHByZWxvYWRDb25maWcgPSByb3V0ZS5wcmVsb2FkID8gcm91dGUucHJlbG9hZChwYXJhbXMpIDogW107XG4gIGNvbnN0IHByZWxvYWRlZERhdGE6IFByZWxvYWRlZERhdGFbXSA9IFtdO1xuXG4gIGZvciAoY29uc3QgeyBtb2RlbE5hbWUsIG1ldGhvZE5hbWUsIHBhcmFtczogYXBpUGFyYW1zLCBzZXJ2aWNlS2V5IH0gb2YgcHJlbG9hZENvbmZpZykge1xuICAgIGNvbnN0IGFwaSA9IFNvbmFtdS5zeW5jZXIuYXBpcy5maW5kKFxuICAgICAgKGEpID0+IGEubW9kZWxOYW1lID09PSBtb2RlbE5hbWUgJiYgYS5tZXRob2ROYW1lID09PSBtZXRob2ROYW1lLFxuICAgICk7XG5cbiAgICBpZiAoIWFwaSkge1xuICAgICAgY29uc29sZS53YXJuKGBBUEkgbm90IGZvdW5kOiAke21vZGVsTmFtZX0uJHttZXRob2ROYW1lfWApO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IFNvbmFtdS5pbnZva2VBcGlGb3JTU1IoYXBpLCBhcGlQYXJhbXMsIGNvbmZpZywgcmVxdWVzdCwgcmVwbHkpO1xuICAgICAgcHJlbG9hZGVkRGF0YS5wdXNoKHtcbiAgICAgICAgcXVlcnlLZXk6IFsuLi5zZXJ2aWNlS2V5LCAuLi5hcGlQYXJhbXNdLFxuICAgICAgICBkYXRhOiByZXN1bHQsXG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGBGYWlsZWQgdG8gcHJlbG9hZCAke21vZGVsTmFtZX0uJHttZXRob2ROYW1lfTpgLCBlKTtcbiAgICB9XG4gIH1cblxuICAvLyAyLiBEZXYvUHJvZCDsiqTtgazrpr3tirgg7LaU7LacXG4gIGxldCB2aXRlU2NyaXB0czogc3RyaW5nO1xuICBsZXQgcmVuZGVyOiAoXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgcHJlbG9hZGVkRGF0YTogUHJlbG9hZGVkRGF0YVtdLFxuICApID0+IFByb21pc2U8eyBodG1sOiBzdHJpbmc7IGRlaHlkcmF0ZWRTdGF0ZTogdW5rbm93biB9PjtcblxuICBpZiAodml0ZSkge1xuICAgIC8vIERldjogVml0ZSBEZXYgU2VydmVyXG4gICAgY29uc3QgZnMgPSBhd2FpdCBpbXBvcnQoXCJub2RlOmZzL3Byb21pc2VzXCIpO1xuICAgIGNvbnN0IGluZGV4SHRtbFBhdGggPSBwYXRoLmpvaW4odml0ZS5jb25maWcucm9vdCwgXCJpbmRleC5odG1sXCIpO1xuICAgIGNvbnN0IG9yaWdpbmFsSHRtbCA9IGF3YWl0IGZzLnJlYWRGaWxlKGluZGV4SHRtbFBhdGgsIFwidXRmLThcIik7XG4gICAgY29uc3QgdHJhbnNmb3JtZWRIdG1sID0gYXdhaXQgdml0ZS50cmFuc2Zvcm1JbmRleEh0bWwodXJsLCBvcmlnaW5hbEh0bWwpO1xuXG4gICAgLy8gVml0ZeqwgCDso7zsnoXtlZwg7Iqk7YGs66a97Yq4IOy2lOy2nFxuICAgIHZpdGVTY3JpcHRzID0gZXh0cmFjdFNjcmlwdFRhZ3ModHJhbnNmb3JtZWRIdG1sKTtcblxuICAgIC8vID9obXI9ZmFsc2XroZwg7JewIO2OmOydtOyngOuKlCBITVIg7Ju57IaM7LyT66eMIOuBiuyWtCDsg4jroZzqs6DsuajrkJjsp4Ag7JWK6rKMIO2VnOuLpC5cbiAgICBpZiAoaXNIbXJEaXNhYmxlZEJ5UXVlcnkodXJsKSkge1xuICAgICAgdml0ZVNjcmlwdHMgPSBgJHtITVJfT1BUX09VVF9TQ1JJUFR9XFxuJHt2aXRlU2NyaXB0c31gO1xuICAgIH1cblxuICAgIGNvbnN0IGVudHJ5TW9kdWxlID0gYXdhaXQgdml0ZS5zc3JMb2FkTW9kdWxlKFwiL3NyYy9lbnRyeS1zZXJ2ZXIuZ2VuZXJhdGVkLnRzeFwiKTtcbiAgICByZW5kZXIgPSBlbnRyeU1vZHVsZS5yZW5kZXI7XG4gIH0gZWxzZSB7XG4gICAgLy8gUHJvZDog67mM65Oc65CcIO2MjOydvFxuICAgIGNvbnN0IGZzID0gYXdhaXQgaW1wb3J0KFwibm9kZTpmc1wiKTtcbiAgICBjb25zdCB3ZWJEaXN0UGF0aCA9IHBhdGguam9pbihTb25hbXUuYXBpUm9vdFBhdGgsIFwid2ViLWRpc3RcIiwgXCJjbGllbnRcIik7XG4gICAgY29uc3Qgc3NyUGF0aCA9IHBhdGguam9pbihTb25hbXUuYXBpUm9vdFBhdGgsIFwid2ViLWRpc3RcIiwgXCJzZXJ2ZXJcIik7XG5cbiAgICAvLyDruYzrk5zrkJwgaW5kZXguaHRtbOyXkOyEnCDsiqTtgazrpr3tirgg7LaU7LacXG4gICAgY29uc3QgYnVpbHRIdG1sID0gZnMucmVhZEZpbGVTeW5jKHBhdGguam9pbih3ZWJEaXN0UGF0aCwgXCJpbmRleC5odG1sXCIpLCBcInV0Zi04XCIpO1xuICAgIHZpdGVTY3JpcHRzID0gZXh0cmFjdFNjcmlwdFRhZ3MoYnVpbHRIdG1sKTtcblxuICAgIGNvbnN0IGVudHJ5TW9kdWxlID0gYXdhaXQgaW1wb3J0KHBhdGguam9pbihzc3JQYXRoLCBcImVudHJ5LXNlcnZlci5nZW5lcmF0ZWQuanNcIikpO1xuICAgIHJlbmRlciA9IGVudHJ5TW9kdWxlLnJlbmRlcjtcbiAgfVxuXG4gIC8vIDMuIFJvdXRlclByb3ZpZGVyIOugjOuNlOungSAoZnVsbCBkb2N1bWVudClcbiAgY29uc3QgeyBodG1sOiBmdWxsRG9jSHRtbCwgZGVoeWRyYXRlZFN0YXRlIH0gPSBhd2FpdCByZW5kZXIodXJsLCBwcmVsb2FkZWREYXRhKTtcblxuICAvLyA0LiBTU1Ig642w7J207YSwIOyKpO2BrOumve2KuCDsg53shLFcbiAgY29uc3Qgc3NyRGF0YVNjcmlwdCA9IGRlaHlkcmF0ZWRTdGF0ZVxuICAgID8gYDxzY3JpcHQ+d2luZG93Ll9fU09OQU1VX1NTUl9fID0gJHtKU09OLnN0cmluZ2lmeShkZWh5ZHJhdGVkU3RhdGUpLnJlcGxhY2UoLzwvZywgXCJcXFxcdTAwM2NcIil9Ozwvc2NyaXB0PmBcbiAgICA6IFwiXCI7XG5cbiAgLy8gNS4gU1NSIENvbmZpZyDsiqTtgazrpr3tirgg7IOd7ISxIChkaXNhYmxlSHlkcmF0ZSlcbiAgY29uc3Qgc3NyQ29uZmlnU2NyaXB0ID0gcm91dGUuZGlzYWJsZUh5ZHJhdGVcbiAgICA/IGA8c2NyaXB0PndpbmRvdy5fX1NPTkFNVV9TU1JfQ09ORklHX18gPSAke0pTT04uc3RyaW5naWZ5KHsgZGlzYWJsZUh5ZHJhdGU6IHRydWUgfSl9Ozwvc2NyaXB0PmBcbiAgICA6IFwiXCI7XG5cbiAgLy8gNi4gVml0ZSDsiqTtgazrpr3tirjsmYAgU1NSIOuNsOydtO2EsOulvCA8L2JvZHk+IOyngeyghOyXkCDso7zsnoVcbiAgY29uc3QgZmluYWxIdG1sID0gZnVsbERvY0h0bWwucmVwbGFjZShcbiAgICBcIjwvYm9keT5cIixcbiAgICBgJHtzc3JDb25maWdTY3JpcHR9XFxuJHtzc3JEYXRhU2NyaXB0fVxcbiR7dml0ZVNjcmlwdHN9XFxuPC9ib2R5PmAsXG4gICk7XG5cbiAgLy8gNy4gQ2FjaGUtQ29udHJvbCDtl6TrjZQg7ISk7KCVXG4gIGNvbnN0IHNzckNhY2hlQ29uZmlnID0gZ2V0U1NSQ2FjaGVDb250cm9sKHVybCwgcm91dGUsIHJlcXVlc3QsIGNvbmZpZyk7XG4gIGlmIChzc3JDYWNoZUNvbmZpZykge1xuICAgIGFwcGx5Q2FjaGVIZWFkZXJzKHJlcGx5LCBzc3JDYWNoZUNvbmZpZyk7XG4gIH1cblxuICByZXR1cm4gZmluYWxIdG1sO1xufVxuXG4vKipcbiAqIFNTUiDsnZHri7Xsl5Ag7KCB7Jqp7ZWgIENhY2hlLUNvbnRyb2wg7ISk7KCV7J2EIOqysOygle2VqeuLiOuLpC5cbiAqIOyasOyEoOyInOychDog6rCc67OEIOyngOyglSA+IGNhY2hlQ29udHJvbEhhbmRsZXJcbiAqL1xuZnVuY3Rpb24gZ2V0U1NSQ2FjaGVDb250cm9sKFxuICB1cmw6IHN0cmluZyxcbiAgcm91dGU6IFNTUlJvdXRlLFxuICByZXF1ZXN0OiBGYXN0aWZ5UmVxdWVzdCxcbiAgY29uZmlnOiBTb25hbXVGYXN0aWZ5Q29uZmlnLFxuKSB7XG4gIC8vIOqwnOuzhCDsp4DsoJUgKHJlZ2lzdGVyU1NSLmNhY2hlQ29udHJvbClcbiAgaWYgKHJvdXRlLmNhY2hlQ29udHJvbCkge1xuICAgIHJldHVybiByb3V0ZS5jYWNoZUNvbnRyb2w7XG4gIH1cblxuICAvLyDsoITsl60g7ZW465Ok65+sXG4gIGlmIChjb25maWcuY2FjaGVDb250cm9sSGFuZGxlcikge1xuICAgIGNvbnN0IGNhY2hlUmVxOiBDYWNoZUNvbnRyb2xSZXF1ZXN0ID0ge1xuICAgICAgdHlwZTogXCJzc3JcIixcbiAgICAgIHVybDogcmVxdWVzdC51cmwsXG4gICAgICBwYXRoOiB1cmwuc3BsaXQoXCI/XCIpWzBdLFxuICAgICAgbWV0aG9kOiByZXF1ZXN0Lm1ldGhvZCxcbiAgICAgIHJvdXRlLFxuICAgIH07XG4gICAgY29uc3QgcmVzdWx0ID0gY29uZmlnLmNhY2hlQ29udHJvbEhhbmRsZXIoY2FjaGVSZXEpO1xuICAgIGlmIChyZXN1bHQpIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cblxuLyoqXG4gKiBIVE1M7JeQ7IScIDxzY3JpcHQ+LCA8bGluaz4g7YOc6re466W8IOy2lOy2nFxuICovXG5mdW5jdGlvbiBleHRyYWN0U2NyaXB0VGFncyhodG1sOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBzY3JpcHRSZWdleCA9IC88c2NyaXB0W14+XSo+W1xcc1xcU10qPzxcXC9zY3JpcHQ+fDxsaW5rW14+XSo+
|
|
82
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuZGVyZXIuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Nzci9yZW5kZXJlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcGF0aCBmcm9tIFwibm9kZTpwYXRoXCI7XG5cbmltcG9ydCB7IHR5cGUgRmFzdGlmeVJlcGx5LCB0eXBlIEZhc3RpZnlSZXF1ZXN0IH0gZnJvbSBcImZhc3RpZnlcIjtcbmltcG9ydCB7IHR5cGUgVml0ZURldlNlcnZlciB9IGZyb20gXCJ2aXRlXCI7XG5cbmltcG9ydCB7IGFwcGx5Q2FjaGVIZWFkZXJzIH0gZnJvbSBcIi4uL2NhY2hlLWNvbnRyb2wvY2FjaGUtY29udHJvbFwiO1xuaW1wb3J0IHsgdHlwZSBDYWNoZUNvbnRyb2xSZXF1ZXN0IH0gZnJvbSBcIi4uL2NhY2hlLWNvbnRyb2wvdHlwZXNcIjtcbmltcG9ydCB7IHR5cGUgU29uYW11RmFzdGlmeUNvbmZpZyB9IGZyb20gXCIuLi90eXBlcy90eXBlc1wiO1xuaW1wb3J0IHsgSE1SX09QVF9PVVRfU0NSSVBULCBpc0htckRpc2FibGVkQnlRdWVyeSB9IGZyb20gXCIuL2htci1vcHQtb3V0XCI7XG5pbXBvcnQgeyB0eXBlIFByZWxvYWRlZERhdGEsIHR5cGUgU1NSUm91dGUgfSBmcm9tIFwiLi90eXBlc1wiO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVuZGVyU1NSKFxuICB1cmw6IHN0cmluZyxcbiAgcm91dGU6IFNTUlJvdXRlLFxuICBwYXJhbXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4sXG4gIHJlcXVlc3Q6IEZhc3RpZnlSZXF1ZXN0LFxuICByZXBseTogRmFzdGlmeVJlcGx5LFxuICBjb25maWc6IFNvbmFtdUZhc3RpZnlDb25maWcsXG4gIHZpdGU/OiBWaXRlRGV2U2VydmVyLFxuKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgY29uc3QgeyBTb25hbXUgfSA9IGF3YWl0IGltcG9ydChcIi4uL2FwaS9zb25hbXVcIik7XG5cbiAgLy8gMS4gcHJlbG9hZCDsi6Ttlokg4oaSIFNTUlF1ZXJ5W10g7ZqN65OdIChkZXYvcHJvZCDqs7XthrUpXG4gIGNvbnN0IHByZWxvYWRDb25maWcgPSByb3V0ZS5wcmVsb2FkID8gcm91dGUucHJlbG9hZChwYXJhbXMpIDogW107XG4gIGNvbnN0IHByZWxvYWRlZERhdGE6IFByZWxvYWRlZERhdGFbXSA9IFtdO1xuXG4gIGZvciAoY29uc3QgeyBtb2RlbE5hbWUsIG1ldGhvZE5hbWUsIHBhcmFtczogYXBpUGFyYW1zLCBzZXJ2aWNlS2V5IH0gb2YgcHJlbG9hZENvbmZpZykge1xuICAgIGNvbnN0IGFwaSA9IFNvbmFtdS5zeW5jZXIuYXBpcy5maW5kKFxuICAgICAgKGEpID0+IGEubW9kZWxOYW1lID09PSBtb2RlbE5hbWUgJiYgYS5tZXRob2ROYW1lID09PSBtZXRob2ROYW1lLFxuICAgICk7XG5cbiAgICBpZiAoIWFwaSkge1xuICAgICAgY29uc29sZS53YXJuKGBBUEkgbm90IGZvdW5kOiAke21vZGVsTmFtZX0uJHttZXRob2ROYW1lfWApO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IFNvbmFtdS5pbnZva2VBcGlGb3JTU1IoYXBpLCBhcGlQYXJhbXMsIGNvbmZpZywgcmVxdWVzdCwgcmVwbHkpO1xuICAgICAgcHJlbG9hZGVkRGF0YS5wdXNoKHtcbiAgICAgICAgcXVlcnlLZXk6IFsuLi5zZXJ2aWNlS2V5LCAuLi5hcGlQYXJhbXNdLFxuICAgICAgICBkYXRhOiByZXN1bHQsXG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGBGYWlsZWQgdG8gcHJlbG9hZCAke21vZGVsTmFtZX0uJHttZXRob2ROYW1lfTpgLCBlKTtcbiAgICB9XG4gIH1cblxuICAvLyAyLiBEZXYvUHJvZCDsiqTtgazrpr3tirgg7LaU7LacXG4gIGxldCB2aXRlU2NyaXB0czogc3RyaW5nO1xuICBsZXQgcmVuZGVyOiAoXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgcHJlbG9hZGVkRGF0YTogUHJlbG9hZGVkRGF0YVtdLFxuICApID0+IFByb21pc2U8eyBodG1sOiBzdHJpbmc7IGRlaHlkcmF0ZWRTdGF0ZTogdW5rbm93biB9PjtcblxuICBpZiAodml0ZSkge1xuICAgIC8vIERldjogVml0ZSBEZXYgU2VydmVyXG4gICAgY29uc3QgZnMgPSBhd2FpdCBpbXBvcnQoXCJub2RlOmZzL3Byb21pc2VzXCIpO1xuICAgIGNvbnN0IGluZGV4SHRtbFBhdGggPSBwYXRoLmpvaW4odml0ZS5jb25maWcucm9vdCwgXCJpbmRleC5odG1sXCIpO1xuICAgIGNvbnN0IG9yaWdpbmFsSHRtbCA9IGF3YWl0IGZzLnJlYWRGaWxlKGluZGV4SHRtbFBhdGgsIFwidXRmLThcIik7XG4gICAgY29uc3QgdHJhbnNmb3JtZWRIdG1sID0gYXdhaXQgdml0ZS50cmFuc2Zvcm1JbmRleEh0bWwodXJsLCBvcmlnaW5hbEh0bWwpO1xuXG4gICAgLy8gVml0ZeqwgCDso7zsnoXtlZwg7Iqk7YGs66a97Yq4IOy2lOy2nFxuICAgIHZpdGVTY3JpcHRzID0gZXh0cmFjdFNjcmlwdFRhZ3ModHJhbnNmb3JtZWRIdG1sKTtcblxuICAgIC8vID9obXI9ZmFsc2XroZwg7JewIO2OmOydtOyngOuKlCBITVIg7Ju57IaM7LyT66eMIOuBiuyWtCDsg4jroZzqs6DsuajrkJjsp4Ag7JWK6rKMIO2VnOuLpC5cbiAgICBpZiAoaXNIbXJEaXNhYmxlZEJ5UXVlcnkodXJsKSkge1xuICAgICAgdml0ZVNjcmlwdHMgPSBgJHtITVJfT1BUX09VVF9TQ1JJUFR9XFxuJHt2aXRlU2NyaXB0c31gO1xuICAgIH1cblxuICAgIGNvbnN0IGVudHJ5TW9kdWxlID0gYXdhaXQgdml0ZS5zc3JMb2FkTW9kdWxlKFwiL3NyYy9lbnRyeS1zZXJ2ZXIuZ2VuZXJhdGVkLnRzeFwiKTtcbiAgICByZW5kZXIgPSBlbnRyeU1vZHVsZS5yZW5kZXI7XG4gIH0gZWxzZSB7XG4gICAgLy8gUHJvZDog67mM65Oc65CcIO2MjOydvFxuICAgIGNvbnN0IGZzID0gYXdhaXQgaW1wb3J0KFwibm9kZTpmc1wiKTtcbiAgICBjb25zdCB3ZWJEaXN0UGF0aCA9IHBhdGguam9pbihTb25hbXUuYXBpUm9vdFBhdGgsIFwid2ViLWRpc3RcIiwgXCJjbGllbnRcIik7XG4gICAgY29uc3Qgc3NyUGF0aCA9IHBhdGguam9pbihTb25hbXUuYXBpUm9vdFBhdGgsIFwid2ViLWRpc3RcIiwgXCJzZXJ2ZXJcIik7XG5cbiAgICAvLyDruYzrk5zrkJwgaW5kZXguaHRtbOyXkOyEnCDsiqTtgazrpr3tirgg7LaU7LacXG4gICAgY29uc3QgYnVpbHRIdG1sID0gZnMucmVhZEZpbGVTeW5jKHBhdGguam9pbih3ZWJEaXN0UGF0aCwgXCJpbmRleC5odG1sXCIpLCBcInV0Zi04XCIpO1xuICAgIHZpdGVTY3JpcHRzID0gZXh0cmFjdFNjcmlwdFRhZ3MoYnVpbHRIdG1sKTtcblxuICAgIGNvbnN0IGVudHJ5TW9kdWxlID0gYXdhaXQgaW1wb3J0KHBhdGguam9pbihzc3JQYXRoLCBcImVudHJ5LXNlcnZlci5nZW5lcmF0ZWQuanNcIikpO1xuICAgIHJlbmRlciA9IGVudHJ5TW9kdWxlLnJlbmRlcjtcbiAgfVxuXG4gIC8vIDMuIFJvdXRlclByb3ZpZGVyIOugjOuNlOungSAoZnVsbCBkb2N1bWVudClcbiAgY29uc3QgeyBodG1sOiBmdWxsRG9jSHRtbCwgZGVoeWRyYXRlZFN0YXRlIH0gPSBhd2FpdCByZW5kZXIodXJsLCBwcmVsb2FkZWREYXRhKTtcblxuICAvLyA0LiBTU1Ig642w7J207YSwIOyKpO2BrOumve2KuCDsg53shLFcbiAgY29uc3Qgc3NyRGF0YVNjcmlwdCA9IGRlaHlkcmF0ZWRTdGF0ZVxuICAgID8gYDxzY3JpcHQ+d2luZG93Ll9fU09OQU1VX1NTUl9fID0gJHtKU09OLnN0cmluZ2lmeShkZWh5ZHJhdGVkU3RhdGUpLnJlcGxhY2UoLzwvZywgXCJcXFxcdTAwM2NcIil9Ozwvc2NyaXB0PmBcbiAgICA6IFwiXCI7XG5cbiAgLy8gNS4gU1NSIENvbmZpZyDsiqTtgazrpr3tirgg7IOd7ISxIChkaXNhYmxlSHlkcmF0ZSlcbiAgY29uc3Qgc3NyQ29uZmlnU2NyaXB0ID0gcm91dGUuZGlzYWJsZUh5ZHJhdGVcbiAgICA/IGA8c2NyaXB0PndpbmRvdy5fX1NPTkFNVV9TU1JfQ09ORklHX18gPSAke0pTT04uc3RyaW5naWZ5KHsgZGlzYWJsZUh5ZHJhdGU6IHRydWUgfSl9Ozwvc2NyaXB0PmBcbiAgICA6IFwiXCI7XG5cbiAgLy8gNi4gVml0ZSDsiqTtgazrpr3tirjsmYAgU1NSIOuNsOydtO2EsOulvCA8L2JvZHk+IOyngeyghOyXkCDso7zsnoVcbiAgY29uc3QgZmluYWxIdG1sID0gZnVsbERvY0h0bWwucmVwbGFjZShcbiAgICBcIjwvYm9keT5cIixcbiAgICBgJHtzc3JDb25maWdTY3JpcHR9XFxuJHtzc3JEYXRhU2NyaXB0fVxcbiR7dml0ZVNjcmlwdHN9XFxuPC9ib2R5PmAsXG4gICk7XG5cbiAgLy8gNy4gQ2FjaGUtQ29udHJvbCDtl6TrjZQg7ISk7KCVXG4gIGNvbnN0IHNzckNhY2hlQ29uZmlnID0gZ2V0U1NSQ2FjaGVDb250cm9sKHVybCwgcm91dGUsIHJlcXVlc3QsIGNvbmZpZyk7XG4gIGlmIChzc3JDYWNoZUNvbmZpZykge1xuICAgIGFwcGx5Q2FjaGVIZWFkZXJzKHJlcGx5LCBzc3JDYWNoZUNvbmZpZyk7XG4gIH1cblxuICByZXR1cm4gZmluYWxIdG1sO1xufVxuXG4vKipcbiAqIFNTUiDsnZHri7Xsl5Ag7KCB7Jqp7ZWgIENhY2hlLUNvbnRyb2wg7ISk7KCV7J2EIOqysOygle2VqeuLiOuLpC5cbiAqIOyasOyEoOyInOychDog6rCc67OEIOyngOyglSA+IGNhY2hlQ29udHJvbEhhbmRsZXJcbiAqL1xuZnVuY3Rpb24gZ2V0U1NSQ2FjaGVDb250cm9sKFxuICB1cmw6IHN0cmluZyxcbiAgcm91dGU6IFNTUlJvdXRlLFxuICByZXF1ZXN0OiBGYXN0aWZ5UmVxdWVzdCxcbiAgY29uZmlnOiBTb25hbXVGYXN0aWZ5Q29uZmlnLFxuKSB7XG4gIC8vIOqwnOuzhCDsp4DsoJUgKHJlZ2lzdGVyU1NSLmNhY2hlQ29udHJvbClcbiAgaWYgKHJvdXRlLmNhY2hlQ29udHJvbCkge1xuICAgIHJldHVybiByb3V0ZS5jYWNoZUNvbnRyb2w7XG4gIH1cblxuICAvLyDsoITsl60g7ZW465Ok65+sXG4gIGlmIChjb25maWcuY2FjaGVDb250cm9sSGFuZGxlcikge1xuICAgIGNvbnN0IGNhY2hlUmVxOiBDYWNoZUNvbnRyb2xSZXF1ZXN0ID0ge1xuICAgICAgdHlwZTogXCJzc3JcIixcbiAgICAgIHVybDogcmVxdWVzdC51cmwsXG4gICAgICBwYXRoOiB1cmwuc3BsaXQoXCI/XCIpWzBdLFxuICAgICAgbWV0aG9kOiByZXF1ZXN0Lm1ldGhvZCxcbiAgICAgIHJvdXRlLFxuICAgIH07XG4gICAgY29uc3QgcmVzdWx0ID0gY29uZmlnLmNhY2hlQ29udHJvbEhhbmRsZXIoY2FjaGVSZXEpO1xuICAgIGlmIChyZXN1bHQpIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cblxuLyoqXG4gKiBIVE1M7JeQ7IScIDxzY3JpcHQ+LCA8bGluaz4g7YOc6re466W8IOy2lOy2nFxuICovXG5mdW5jdGlvbiBleHRyYWN0U2NyaXB0VGFncyhodG1sOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBzY3JpcHRSZWdleCA9IC88c2NyaXB0W14+XSo+W1xcc1xcU10qPzxcXC9zY3JpcHQ+fDxsaW5rW14+XSo+L2dpO1xuICBjb25zdCBtYXRjaGVzID0gaHRtbC5tYXRjaChzY3JpcHRSZWdleCkgfHwgW107XG4gIHJldHVybiBtYXRjaGVzLmpvaW4oXCJcXG5cIik7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7O0FBV0EsZUFBc0IsVUFDcEIsS0FDQSxPQUNBLFFBQ0EsU0FDQSxPQUNBLFFBQ0EsTUFDaUI7Q0FDakIsTUFBTSxFQUFFLFdBQVcsTUFBTSxPQUFPO0NBR2hDLE1BQU0sZ0JBQWdCLE1BQU0sVUFBVSxNQUFNLFFB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
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { __esmMin } from "../_virtual/_rolldown/runtime.js";
|
|
2
2
|
import mime from "mime-types";
|
|
3
|
-
|
|
3
|
+
// src/storage/base-file.ts
|
|
4
4
|
var BaseFile;
|
|
5
5
|
var init_base_file = __esmMin((() => {
|
|
6
6
|
BaseFile = class {
|
|
@@ -44,7 +44,6 @@ var init_base_file = __esmMin((() => {
|
|
|
44
44
|
}
|
|
45
45
|
};
|
|
46
46
|
}));
|
|
47
|
-
//#endregion
|
|
48
47
|
init_base_file();
|
|
49
48
|
export { BaseFile, init_base_file };
|
|
50
49
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { __esmMin } from "../_virtual/_rolldown/runtime.js";
|
|
2
2
|
import { BaseFile, init_base_file } from "./base-file.js";
|
|
3
3
|
import { createHash } from "crypto";
|
|
4
|
-
|
|
4
|
+
// src/storage/buffered-file.ts
|
|
5
5
|
var BufferedFile;
|
|
6
6
|
var init_buffered_file = __esmMin((() => {
|
|
7
7
|
init_base_file();
|
|
@@ -45,8 +45,7 @@ var init_buffered_file = __esmMin((() => {
|
|
|
45
45
|
}
|
|
46
46
|
};
|
|
47
47
|
}));
|
|
48
|
-
//#endregion
|
|
49
48
|
init_buffered_file();
|
|
50
49
|
export { BufferedFile, init_buffered_file };
|
|
51
50
|
|
|
52
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVmZmVyZWQtZmlsZS5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi9zcmMvc3RvcmFnZS9idWZmZXJlZC1maWxlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNyZWF0ZUhhc2ggfSBmcm9tIFwiY3J5cHRvXCI7XG5cbmltcG9ydCB7IHR5cGUgTXVsdGlwYXJ0RmlsZSB9IGZyb20gXCJAZmFzdGlmeS9tdWx0aXBhcnRcIjtcblxuaW1wb3J0IHsgQmFzZUZpbGUgfSBmcm9tIFwiLi9iYXNlLWZpbGVcIjtcbmltcG9ydCB7IHR5cGUgRHJpdmVyS2V5IH0gZnJvbSBcIi4vZHJpdmVyc1wiO1xuXG4vKipcbiAqIEJ1ZmZlciDrqqjrk5zroZwg7JeF66Gc65Oc65CcIO2MjOydvFxuICog66mU66qo66as7JeQIOuhnOuTnOuQnCDsg4Htg5zroZwsIG1kNSDqs4TsgrDsnbTrgpgg7J2066+47KeAIOyymOumrCDrk7Eg7Jyg7Jew7ZWcIOyekeyXheydtCDqsIDriqXtlanri4jri6QuXG4gKi9cbmV4cG9ydCBjbGFzcyBCdWZmZXJlZEZpbGUgZXh0ZW5kcyBCYXNlRmlsZSB7XG4gIHByaXZhdGUgZmlsZVZhbHVlOiBNdWx0aXBhcnRGaWxlO1xuICBwcml2YXRlIGJ1ZmZlclZhbHVlOiBCdWZmZXI7XG5cbiAgY29uc3RydWN0b3IoZmlsZTogTXVsdGlwYXJ0RmlsZSwgYnVmZmVyOiBCdWZmZXIpIHtcbiAgICBzdXBlcih7XG4gICAgICBmaWxlbmFtZTogZmlsZS5maWxlbmFtZSxcbiAgICAgIG1pbWV0eXBlOiBmaWxlLm1pbWV0eXBlLFxuICAgICAgc2l6ZTogYnVmZmVyLmxlbmd0aCxcbiAgICB9KTtcbiAgICB0aGlzLmZpbGVWYWx1ZSA9IGZpbGU7XG4gICAgdGhpcy5idWZmZXJWYWx1ZSA9IGJ1ZmZlcjtcbiAgfVxuXG4gIC8qKiDtjIzsnbwgQnVmZmVyICovXG4gIGdldCBidWZmZXIoKTogQnVmZmVyIHtcbiAgICByZXR1cm4gdGhpcy5idWZmZXJWYWx1ZTtcbiAgfVxuXG4gIC8qKiBNRDUg7ZW07IucIOqzhOyCsCAqL1xuICBhc3luYyBtZDUoKTogUHJvbWlzZTxzdHJpbmc+
|
|
51
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVmZmVyZWQtZmlsZS5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi9zcmMvc3RvcmFnZS9idWZmZXJlZC1maWxlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNyZWF0ZUhhc2ggfSBmcm9tIFwiY3J5cHRvXCI7XG5cbmltcG9ydCB7IHR5cGUgTXVsdGlwYXJ0RmlsZSB9IGZyb20gXCJAZmFzdGlmeS9tdWx0aXBhcnRcIjtcblxuaW1wb3J0IHsgQmFzZUZpbGUgfSBmcm9tIFwiLi9iYXNlLWZpbGVcIjtcbmltcG9ydCB7IHR5cGUgRHJpdmVyS2V5IH0gZnJvbSBcIi4vZHJpdmVyc1wiO1xuXG4vKipcbiAqIEJ1ZmZlciDrqqjrk5zroZwg7JeF66Gc65Oc65CcIO2MjOydvFxuICog66mU66qo66as7JeQIOuhnOuTnOuQnCDsg4Htg5zroZwsIG1kNSDqs4TsgrDsnbTrgpgg7J2066+47KeAIOyymOumrCDrk7Eg7Jyg7Jew7ZWcIOyekeyXheydtCDqsIDriqXtlanri4jri6QuXG4gKi9cbmV4cG9ydCBjbGFzcyBCdWZmZXJlZEZpbGUgZXh0ZW5kcyBCYXNlRmlsZSB7XG4gIHByaXZhdGUgZmlsZVZhbHVlOiBNdWx0aXBhcnRGaWxlO1xuICBwcml2YXRlIGJ1ZmZlclZhbHVlOiBCdWZmZXI7XG5cbiAgY29uc3RydWN0b3IoZmlsZTogTXVsdGlwYXJ0RmlsZSwgYnVmZmVyOiBCdWZmZXIpIHtcbiAgICBzdXBlcih7XG4gICAgICBmaWxlbmFtZTogZmlsZS5maWxlbmFtZSxcbiAgICAgIG1pbWV0eXBlOiBmaWxlLm1pbWV0eXBlLFxuICAgICAgc2l6ZTogYnVmZmVyLmxlbmd0aCxcbiAgICB9KTtcbiAgICB0aGlzLmZpbGVWYWx1ZSA9IGZpbGU7XG4gICAgdGhpcy5idWZmZXJWYWx1ZSA9IGJ1ZmZlcjtcbiAgfVxuXG4gIC8qKiDtjIzsnbwgQnVmZmVyICovXG4gIGdldCBidWZmZXIoKTogQnVmZmVyIHtcbiAgICByZXR1cm4gdGhpcy5idWZmZXJWYWx1ZTtcbiAgfVxuXG4gIC8qKiBNRDUg7ZW07IucIOqzhOyCsCAqL1xuICBhc3luYyBtZDUoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gY3JlYXRlSGFzaChcIm1kNVwiKS51cGRhdGUodGhpcy5idWZmZXJWYWx1ZSkuZGlnZXN0KFwiaGV4XCIpO1xuICB9XG5cbiAgLyoqXG4gICAqIO2MjOydvOydhCDrlJTsiqTtgazsl5Ag7KCA7J6lXG4gICAqIEBwYXJhbSBkaXNrTmFtZSDrlJTsiqTtgawg7J2066aEIChcImZzXCIg65iQ64qUIFwiczNcIilcbiAgICogQHBhcmFtIGtleSDsoIDsnqUg6rK966GcICjsmIg6ICd1cGxvYWRzL2F2YXRhci5wbmcnKVxuICAgKiBAcmV0dXJucyDsoIDsnqXrkJwg7YyM7J287J2YIFVSTFxuICAgKi9cbiAgYXN5bmMgc2F2ZVRvRGlzayhkaXNrTmFtZTogRHJpdmVyS2V5LCBrZXk6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgLy8g7Iic7ZmYIOydmOyhtOyEsSDrsKnsp4Drpbwg7JyE7ZW0IOuPmeyggSBpbXBvcnRcbiAgICBjb25zdCB7IFNvbmFtdSB9ID0gYXdhaXQgaW1wb3J0KFwiLi4vYXBpL3NvbmFtdVwiKTtcbiAgICBjb25zdCBkaXNrID0gU29uYW11LnN0b3JhZ2UudXNlKGRpc2tOYW1lKTtcblxuICAgIGF3YWl0IGRpc2sucHV0KGtleSwgbmV3IFVpbnQ4QXJyYXkodGhpcy5idWZmZXJWYWx1ZSksIHtcbiAgICAgIGNvbnRlbnRUeXBlOiB0aGlzLm1pbWV0eXBlLFxuICAgIH0pO1xuXG4gICAgdGhpc1tcIl91cmxcIl0gPSBhd2FpdCBkaXNrLmdldFVybChrZXkpO1xuICAgIHRoaXNbXCJfc2lnbmVkVXJsXCJdID0gYXdhaXQgZGlzay5nZXRTaWduZWRVcmwoa2V5KTtcblxuICAgIC8vIHNpZ25lZCB1cmzsnYAg66eM66OMIOyLnOqwhOydtCDsnojquLAg65WM66y47JeQLCB1bnNpZ25lZCB1cmzsnYQg67CY7ZmY7ZWp64uI64ukLlxuICAgIHJldHVybiB0aGlzW1wiX3VybFwiXTtcbiAgfVxuXG4gIC8qKiDsm5Drs7ggTXVsdGlwYXJ0RmlsZSDsoJHqt7wgKi9cbiAgZ2V0IHJhdygpOiBNdWx0aXBhcnRGaWxlIHtcbiAgICByZXR1cm4gdGhpcy5maWxlVmFsdWU7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0NBSXNDLGVBQUE7Q0FPekIsZUFBYixjQUFrQyxTQUFTO0VBQ3pDO0VBQ0E7RUFFQSxZQUFZLE1BQXFCLFFBQWdCO0dBQy9DLE1BQU07SUFDSixVQUFVLEtBQUs7SUFDZixVQUFVLEtBQUs7SUFDZixNQUFNLE9BQU87R0FDZixDQUFDO0dBQ0QsS0FBSyxZQUFZO0dBQ2pCLEtBQUssY0FBYztFQUNyQjs7RUFHQSxJQUFJLFNBQWlCO0dBQ25CLE9BQU8sS0FBSztFQUNkOztFQUdBLE1BQU0sTUFBdUI7R0FDM0IsT0FBTyxXQUFXLEtBQUssQ0FBQyxDQUFDLE9BQU8sS0FBSyxXQUFXLENBQUMsQ0FBQyxPQUFPLEtBQUs7RUFDaEU7Ozs7Ozs7RUFRQSxNQUFNLFdBQVcsVUFBcUIsS0FBOEI7R0FFbEUsTUFBTSxFQUFFLFdBQVcsTUFBTSxPQUFPO0dBQ2hDLE1BQU0sT0FBTyxPQUFPLFFBQVEsSUFBSSxRQUFRO0dBRXhDLE1BQU0sS0FBSyxJQUFJLEtBQUssSUFBSSxXQUFXLEtBQUssV0FBVyxHQUFHLEVBQ3BELGFBQWEsS0FBSyxTQUNwQixDQUFDO0dBRUQsS0FBSyxVQUFVLE1BQU0sS0FBSyxPQUFPLEdBQUc7R0FDcEMsS0FBSyxnQkFBZ0IsTUFBTSxLQUFLLGFBQWEsR0FBRztHQUdoRCxPQUFPLEtBQUs7RUFDZDs7RUFHQSxJQUFJLE1BQXFCO0dBQ3ZCLE9BQU8sS0FBSztFQUNkO0NBQ0YifQ==
|
package/dist/storage/drivers.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { SonamuS3Driver } from "./s3-driver.js";
|
|
2
2
|
import { FSDriver } from "flydrive/drivers/fs";
|
|
3
|
-
|
|
3
|
+
// src/storage/drivers.ts
|
|
4
4
|
/**
|
|
5
5
|
* 드라이버 팩토리 함수
|
|
6
6
|
* 설정 → 드라이버 인스턴스 생성 함수 변환
|
|
@@ -9,7 +9,6 @@ const drivers = {
|
|
|
9
9
|
fs: (config) => () => new FSDriver(config),
|
|
10
10
|
s3: (config) => () => new SonamuS3Driver(config)
|
|
11
11
|
};
|
|
12
|
-
//#endregion
|
|
13
12
|
export { drivers };
|
|
14
13
|
|
|
15
14
|
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJpdmVycy5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi9zcmMvc3RvcmFnZS9kcml2ZXJzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZTRHJpdmVyIH0gZnJvbSBcImZseWRyaXZlL2RyaXZlcnMvZnNcIjtcbmltcG9ydCB7IHR5cGUgRlNEcml2ZXJPcHRpb25zIH0gZnJvbSBcImZseWRyaXZlL2RyaXZlcnMvZnMvdHlwZXNcIjtcbmltcG9ydCB7IHR5cGUgUzNEcml2ZXJPcHRpb25zIH0gZnJvbSBcImZseWRyaXZlL2RyaXZlcnMvczMvdHlwZXNcIjtcblxuaW1wb3J0IHsgU29uYW11UzNEcml2ZXIgfSBmcm9tIFwiLi9zMy1kcml2ZXJcIjtcblxuLyoqXG4gKiDrk5zrnbzsnbTrsoQg7Yyp7Yag66asIO2VqOyImFxuICog7ISk7KCVIOKGkiDrk5zrnbzsnbTrsoQg7J247Iqk7YS07IqkIOyDneyEsSDtlajsiJgg67OA7ZmYXG4gKi9cbmV4cG9ydCBjb25zdCBkcml2ZXJzID0ge1xuICBmczogKGNvbmZpZzogRlNEcml2ZXJPcHRpb25zKSA9PiAoKSA9PiBuZXcgRlNEcml2ZXIoY29uZmlnKSxcbiAgczM6IChjb25maWc6IFMzRHJpdmVyT3B0aW9ucykgPT4gKCkgPT4gbmV3IFNvbmFtdVMzRHJpdmVyKGNvbmZpZyksXG59O1xuXG5leHBvcnQgdHlwZSBEcml2ZXJLZXkgPSBrZXlvZiB0eXBlb2YgZHJpdmVycztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQVVBLE1BQWEsVUFBVTtDQUNyQixLQUFLLGlCQUFrQyxJQUFJLFNBQVMsTUFBTTtDQUMxRCxLQUFLLGlCQUFrQyxJQUFJLGVBQWUsTUFBTTtBQUNsRSJ9
|
package/dist/storage/index.js
CHANGED
|
@@ -3,12 +3,11 @@ import { BufferedFile, init_buffered_file } from "./buffered-file.js";
|
|
|
3
3
|
import { UploadedFile, init_uploaded_file } from "./uploaded-file.js";
|
|
4
4
|
import { drivers } from "./drivers.js";
|
|
5
5
|
import { StorageManager, init_storage_manager } from "./storage-manager.js";
|
|
6
|
-
|
|
6
|
+
// src/storage/index.ts
|
|
7
7
|
init_base_file();
|
|
8
8
|
init_buffered_file();
|
|
9
9
|
init_storage_manager();
|
|
10
10
|
init_uploaded_file();
|
|
11
|
-
//#endregion
|
|
12
11
|
export { BaseFile, BufferedFile, StorageManager, UploadedFile as StreamedFile, drivers };
|
|
13
12
|
|
|
14
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
13
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3N0b3JhZ2UvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU3RvcmFnZSDshJzruIzrqqjrk4ggZXhwb3J0c1xuZXhwb3J0IHsgQmFzZUZpbGUgfSBmcm9tIFwiLi9iYXNlLWZpbGVcIjtcbmV4cG9ydCB7IEJ1ZmZlcmVkRmlsZSB9IGZyb20gXCIuL2J1ZmZlcmVkLWZpbGVcIjtcbmV4cG9ydCB7IHR5cGUgRHJpdmVyS2V5LCBkcml2ZXJzIH0gZnJvbSBcIi4vZHJpdmVyc1wiO1xuZXhwb3J0IHsgU3RvcmFnZU1hbmFnZXIgfSBmcm9tIFwiLi9zdG9yYWdlLW1hbmFnZXJcIjtcbmV4cG9ydCB0eXBlIHsgS2V5R2VuZXJhdG9yLCBTdG9yYWdlQ29uZmlnIH0gZnJvbSBcIi4vdHlwZXNcIjtcbmV4cG9ydCB7IFVwbG9hZGVkRmlsZSBhcyBTdHJlYW1lZEZpbGUgfSBmcm9tIFwiLi91cGxvYWRlZC1maWxlXCI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUNzQyxlQUFBO0FBQ1EsbUJBQUE7QUFFSSxxQkFBQTtBQUVZLG1CQUFBIn0=
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { S3Client } from "@aws-sdk/client-s3";
|
|
2
2
|
import { Upload } from "@aws-sdk/lib-storage";
|
|
3
3
|
import { S3Driver } from "flydrive/drivers/s3";
|
|
4
|
-
|
|
4
|
+
// src/storage/s3-driver.ts
|
|
5
5
|
/**
|
|
6
6
|
* Sonamu용 S3 드라이버
|
|
7
7
|
*
|
|
@@ -47,7 +47,6 @@ var SonamuS3Driver = class extends S3Driver {
|
|
|
47
47
|
}).done();
|
|
48
48
|
}
|
|
49
49
|
};
|
|
50
|
-
//#endregion
|
|
51
50
|
export { SonamuS3Driver };
|
|
52
51
|
|
|
53
52
|
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiczMtZHJpdmVyLmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdG9yYWdlL3MzLWRyaXZlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0eXBlIFJlYWRhYmxlIH0gZnJvbSBcInN0cmVhbVwiO1xuXG5pbXBvcnQgeyBTM0NsaWVudCB9IGZyb20gXCJAYXdzLXNkay9jbGllbnQtczNcIjtcbmltcG9ydCB7IHR5cGUgT2JqZWN0Q2FubmVkQUNMIH0gZnJvbSBcIkBhd3Mtc2RrL2NsaWVudC1zM1wiO1xuaW1wb3J0IHsgVXBsb2FkIH0gZnJvbSBcIkBhd3Mtc2RrL2xpYi1zdG9yYWdlXCI7XG5pbXBvcnQgeyB0eXBlIE9wdGlvbnMgfSBmcm9tIFwiQGF3cy1zZGsvbGliLXN0b3JhZ2VcIjtcbmltcG9ydCB7IFMzRHJpdmVyIH0gZnJvbSBcImZseWRyaXZlL2RyaXZlcnMvczNcIjtcbmltcG9ydCB7IHR5cGUgUzNEcml2ZXJPcHRpb25zIH0gZnJvbSBcImZseWRyaXZlL2RyaXZlcnMvczMvdHlwZXNcIjtcblxuLyoqXG4gKiBTb25hbXXsmqkgUzMg65Oc65287J2067KEXG4gKlxuICogZmx5ZHJpdmXsnZggUzNEcml2ZXLrpbwg7ZmV7J6l7ZWY7JesIHB1dFN0cmVhbeyXkOyEnFxuICogQGF3cy1zZGsvbGliLXN0b3JhZ2XsnZggVXBsb2FkIO2BtOuemOyKpOulvCDsgqzsmqntlanri4jri6QuXG4gKiDsnbTrpbwg7Ya17ZW0IOyKpO2KuOumvCDtgazquLDrpbwg66qo66W064qUIOyDge2DnOyXkOyEnOuPhCDsl4XroZzrk5zqsIAg6rCA64ql7ZWp64uI64ukLlxuICpcbiAqIOq4sOyhtCBTM0RyaXZlci5wdXRTdHJlYW3snYAgUHV0T2JqZWN0Q29tbWFuZOulvCDsgqzsmqntlZjsl6wgQ29udGVudC1MZW5ndGjqsIAg7ZWE7JqU7ZaI7KeA66eMLFxuICogVXBsb2FkIO2BtOuemOyKpOuKlCBtdWx0aXBhcnQgdXBsb2Fk66W8IO2Gte2VtCDsiqTtirjrprwg7YGs6riwIOyXhuydtOuPhCDsl4XroZzrk5ztlaAg7IiYIOyeiOyKteuLiOuLpC5cbiAqL1xuZXhwb3J0IGNsYXNzIFNvbmFtdVMzRHJpdmVyIGV4dGVuZHMgUzNEcml2ZXIge1xuICBwcml2YXRlIHNvbmFtdUNsaWVudDogUzNDbGllbnQ7XG4gIHByaXZhdGUgc29uYW11QnVja2V0OiBzdHJpbmc7XG4gIHByaXZhdGUgc29uYW11VmlzaWJpbGl0eTogXCJwdWJsaWNcIiB8IFwicHJpdmF0ZVwiO1xuICBwcml2YXRlIHNvbmFtdVN1cHBvcnRzQUNMOiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IFMzRHJpdmVyT3B0aW9ucykge1xuICAgIHN1cGVyKG9wdGlvbnMpO1xuXG4gICAgLy8gUzNDbGllbnQg7J247Iqk7YS07IqkIOyggOyepSAoVXBsb2FkIO2BtOuemOyKpOyXkOyEnCDsgqzsmqkpXG4gICAgdGhpcy5zb25hbXVDbGllbnQgPSBcImNsaWVudFwiIGluIG9wdGlvbnMgPyBvcHRpb25zLmNsaWVudCA6IG5ldyBTM0NsaWVudChvcHRpb25zKTtcbiAgICB0aGlzLnNvbmFtdUJ1Y2tldCA9IG9wdGlvbnMuYnVja2V0O1xuICAgIHRoaXMuc29uYW11VmlzaWJpbGl0eSA9IG9wdGlvbnMudmlzaWJpbGl0eSA/PyBcInByaXZhdGVcIjtcbiAgICB0aGlzLnNvbmFtdVN1cHBvcnRzQUNMID0gb3B0aW9ucy5zdXBwb3J0c0FDTCA/PyBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiDsiqTtirjrprzsnYQgUzPsl5Ag7JeF66Gc65Oc7ZWp64uI64ukLlxuICAgKlxuICAgKiBAYXdzLXNkay9saWItc3RvcmFnZeydmCBVcGxvYWQg7YG0656Y7Iqk66W8IOyCrOyaqe2VmOyXrFxuICAgKiBtdWx0aXBhcnQgdXBsb2Fk66GcIOyymOumrO2VqeuLiOuLpC5cbiAgICovXG4gIG92ZXJyaWRlIGFzeW5jIHB1dFN0cmVhbShcbiAgICBrZXk6IHN0cmluZyxcbiAgICBjb250ZW50czogUmVhZGFibGUsXG4gICAgb3B0aW9ucz86IHtcbiAgICAgIGNvbnRlbnRUeXBlPzogc3RyaW5nO1xuICAgICAgdmlzaWJpbGl0eT86IFwicHVibGljXCIgfCBcInByaXZhdGVcIjtcbiAgICAgIGNhY2hlQ29udHJvbD86IHN0cmluZztcbiAgICAgIGNvbnRlbnREaXNwb3NpdGlvbj86IHN0cmluZztcbiAgICB9LFxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB2aXNpYmlsaXR5ID0gb3B0aW9ucz8udmlzaWJpbGl0eSA/PyB0aGlzLnNvbmFtdVZpc2liaWxpdHk7XG5cbiAgICBjb25zdCB1cGxvYWRQYXJhbXM6IE9wdGlvbnNbXCJwYXJhbXNcIl0gPSB7XG4gICAgICBCdWNrZXQ6IHRoaXMuc29uYW11QnVja2V0LFxuICAgICAgS2V5OiBrZXksXG4gICAgICBCb2R5OiBjb250ZW50cyxcbiAgICAgIENvbnRlbnRUeXBlOiBvcHRpb25zPy5jb250ZW50VHlwZSxcbiAgICAgIENhY2hlQ29udHJvbDogb3B0aW9ucz8uY2FjaGVDb250cm9sLFxuICAgICAgQ29udGVudERpc3Bvc2l0aW9uOiBvcHRpb25zPy5jb250ZW50RGlzcG9zaXRpb24sXG4gICAgfTtcblxuICAgIC8vIEFDTCDsp4Dsm5Ag7Iuc7JeQ66eMIOyEpOyglVxuICAgIGlmICh0aGlzLnNvbmFtdVN1cHBvcnRzQUNMKSB7XG4gICAgICB1cGxvYWRQYXJhbXMuQUNMID1cbiAgICAgICAgLyogU0FGRVRZOiDtmLjstpwg6rK96rOE7J2YIOyEoO2WiSDqsoDspp3qs7wg7IaM7JygIO2DgOyehSDqs4Tslb3snbQg7J20IOqwkuydmCDtg4DsnoXsnYQg67O07J6l7ZWc64ukLiAqLyAoXG4gICAgICAgICAgdmlzaWJpbGl0eSA9PT0gXCJwdWJsaWNcIiA/IFwicHVibGljLXJlYWRcIiA6IFwicHJpdmF0ZVwiXG4gICAgICAgICkgYXMgT2JqZWN0Q2FubmVkQUNMO1xuICAgIH1cblxuICAgIGNvbnN0IHVwbG9hZCA9IG5ldyBVcGxvYWQoe1xuICAgICAgY2xpZW50OiB0aGlzLnNvbmFtdUNsaWVudCxcbiAgICAgIHBhcmFtczogdXBsb2FkUGFyYW1zLFxuICAgIH0pO1xuXG4gICAgYXdhaXQgdXBsb2FkLmRvbmUoKTtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQW1CQSxJQUFhLGlCQUFiLGNBQW9DLFNBQVM7Q0FDM0M7Q0FDQTtDQUNBO0NBQ0E7Q0FFQSxZQUFZLFNBQTBCO0VBQ3BDLE1BQU0sT0FBTztFQUdiLEtBQUssZUFBZSxZQUFZLFVBQVUsUUFBUSxTQUFTLElBQUksU0FBUyxPQUFPO0VBQy9FLEtBQUssZUFBZSxRQUFRO0VBQzVCLEtBQUssbUJBQW1CLFFBQVEsY0FBYztFQUM5QyxLQUFLLG9CQUFvQixRQUFRLGVBQWU7Q0FDbEQ7Ozs7Ozs7Q0FRQSxNQUFlLFVBQ2IsS0FDQSxVQUNBLFNBTWU7RUFDZixNQUFNLGFBQWEsU0FBUyxjQUFjLEtBQUs7RUFFL0MsTUFBTSxlQUFrQztHQUN0QyxRQUFRLEtBQUs7R0FDYixLQUFLO0dBQ0wsTUFBTTtHQUNOLGFBQWEsU0FBUztHQUN0QixjQUFjLFNBQVM7R0FDdkIsb0JBQW9CLFNBQVM7RUFDL0I7RUFHQSxJQUFJLEtBQUssbUJBQ1AsYUFBYSxNQUVULGVBQWUsV0FBVyxnQkFBZ0I7RUFTaEQsTUFBTSxJQUxhLE9BQU87R0FDeEIsUUFBUSxLQUFLO0dBQ2IsUUFBUTtFQUNWLENBRU0sQ0FBQSxDQUFPLEtBQUs7Q0FDcEI7QUFDRiJ9
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { __esmMin } from "../_virtual/_rolldown/runtime.js";
|
|
2
2
|
import { assertDefined, init_utils } from "../utils/utils.js";
|
|
3
3
|
import { Disk } from "flydrive";
|
|
4
|
-
|
|
4
|
+
// src/storage/storage-manager.ts
|
|
5
5
|
var StorageManager;
|
|
6
6
|
var init_storage_manager = __esmMin((() => {
|
|
7
7
|
init_utils();
|
|
@@ -28,8 +28,7 @@ var init_storage_manager = __esmMin((() => {
|
|
|
28
28
|
}
|
|
29
29
|
};
|
|
30
30
|
}));
|
|
31
|
-
//#endregion
|
|
32
31
|
init_storage_manager();
|
|
33
32
|
export { StorageManager, init_storage_manager };
|
|
34
33
|
|
|
35
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
34
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZS1tYW5hZ2VyLmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdG9yYWdlL3N0b3JhZ2UtbWFuYWdlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXNrIH0gZnJvbSBcImZseWRyaXZlXCI7XG5cbmltcG9ydCB7IGFzc2VydERlZmluZWQgfSBmcm9tIFwiLi4vdXRpbHMvdXRpbHNcIjtcbmltcG9ydCB7IHR5cGUgRHJpdmVyS2V5IH0gZnJvbSBcIi4vZHJpdmVyc1wiO1xuaW1wb3J0IHsgdHlwZSBTdG9yYWdlQ29uZmlnIH0gZnJvbSBcIi4vdHlwZXNcIjtcblxuLyoqXG4gKiDsl6zrn6wg65SU7Iqk7YGs66W8IOq0gOumrO2VmOuKlCDrp6Tri4jsoIBcbiAqL1xuZXhwb3J0IGNsYXNzIFN0b3JhZ2VNYW5hZ2VyIHtcbiAgcHJpdmF0ZSBkaXNrczogTWFwPERyaXZlcktleSwgRGlzaz4gPSBuZXcgTWFwKCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjb25maWc6IFN0b3JhZ2VDb25maWcpIHt9XG5cbiAgLyoqXG4gICAqIOuUlOyKpO2BrCDsnbjsiqTthLTsiqQg67CY7ZmYIChsYXp5IGluaXRpYWxpemF0aW9uKVxuICAgKiBAcGFyYW0gZGlza05hbWUg65SU7Iqk7YGsIOydtOumhCAo7JeG7Jy866m0IGRlZmF1bHQpXG4gICAqL1xuICB1c2UoZGlza05hbWU6IERyaXZlcktleSk6IERpc2sge1xuICAgIGlmICghdGhpcy5kaXNrcy5oYXMoZGlza05hbWUpKSB7XG4gICAgICBjb25zdCBmYWN0b3J5ID0gdGhpcy5jb25maWcuZHJpdmVyc1tkaXNrTmFtZV07XG4gICAgICBpZiAoIWZhY3RvcnkpIHtcbiAgICAgICAgY29uc3QgYXZhaWxhYmxlID0gT2JqZWN0LmtleXModGhpcy5jb25maWcuZHJpdmVycykuam9pbihcIiwgXCIpO1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gZGlzazogXCIke2Rpc2tOYW1lfVwiLiBBdmFpbGFibGU6ICR7YXZhaWxhYmxlfWApO1xuICAgICAgfVxuICAgICAgdGhpcy5kaXNrcy5zZXQoZGlza05hbWUsIG5ldyBEaXNrKGZhY3RvcnkoKSkpO1xuICAgIH1cblxuICAgIHJldHVybiBhc3NlcnREZWZpbmVkKHRoaXMuZGlza3MuZ2V0KGRpc2tOYW1lKSwgYERpc2sgJHtkaXNrTmFtZX0gbm90IGZvdW5kYCk7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0NBRThDLFdBQUE7Q0FPakMsaUJBQWIsTUFBNEI7RUFHTjtFQUZwQix3QkFBc0MsSUFBSSxJQUFJO0VBRTlDLFlBQVksUUFBK0I7R0FBdkIsS0FBQSxTQUFBO0VBQXdCOzs7OztFQU01QyxJQUFJLFVBQTJCO0dBQzdCLElBQUksQ0FBQyxLQUFLLE1BQU0sSUFBSSxRQUFRLEdBQUc7SUFDN0IsTUFBTSxVQUFVLEtBQUssT0FBTyxRQUFRO0lBQ3BDLElBQUksQ0FBQyxTQUFTO0tBQ1osTUFBTSxZQUFZLE9BQU8sS0FBSyxLQUFLLE9BQU8sT0FBTyxDQUFDLENBQUMsS0FBSyxJQUFJO0tBQzVELE1BQU0sSUFBSSxNQUFNLGtCQUFrQixTQUFTLGdCQUFnQixXQUFXO0lBQ3hFO0lBQ0EsS0FBSyxNQUFNLElBQUksVUFBVSxJQUFJLEtBQUssUUFBUSxDQUFDLENBQUM7R0FDOUM7R0FFQSxPQUFPLGNBQWMsS0FBSyxNQUFNLElBQUksUUFBUSxHQUFHLFFBQVEsU0FBUyxXQUFXO0VBQzdFO0NBQ0YifQ==
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { __esmMin } from "../_virtual/_rolldown/runtime.js";
|
|
2
2
|
import { BaseFile, init_base_file } from "./base-file.js";
|
|
3
|
-
|
|
3
|
+
// src/storage/uploaded-file.ts
|
|
4
4
|
var UploadedFile;
|
|
5
5
|
var init_uploaded_file = __esmMin((() => {
|
|
6
6
|
init_base_file();
|
|
@@ -37,8 +37,7 @@ var init_uploaded_file = __esmMin((() => {
|
|
|
37
37
|
}
|
|
38
38
|
};
|
|
39
39
|
}));
|
|
40
|
-
//#endregion
|
|
41
40
|
init_uploaded_file();
|
|
42
41
|
export { UploadedFile, init_uploaded_file };
|
|
43
42
|
|
|
44
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
43
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkZWQtZmlsZS5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi9zcmMvc3RvcmFnZS91cGxvYWRlZC1maWxlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VGaWxlIH0gZnJvbSBcIi4vYmFzZS1maWxlXCI7XG5pbXBvcnQgeyB0eXBlIERyaXZlcktleSB9IGZyb20gXCIuL2RyaXZlcnNcIjtcblxuLyoqXG4gKiBTdHJlYW0g66qo65Oc66GcIOyXheuhnOuTnOuQnCDtjIzsnbxcbiAqIOydtOuvuCDsoIDsnqXshozsl5Ag7Iqk7Yq466as67CNIOyZhOujjOuQnCDsg4Htg5zroZwsIHVybC9rZXkg65OxIOuplO2DgOuNsOydtO2EsOunjCDsoJHqt7wg6rCA64ql7ZWp64uI64ukLlxuICovXG5leHBvcnQgY2xhc3MgVXBsb2FkZWRGaWxlIGV4dGVuZHMgQmFzZUZpbGUge1xuICBwcml2YXRlIGtleVZhbHVlOiBzdHJpbmc7XG4gIHByaXZhdGUgZGlza05hbWVWYWx1ZTogRHJpdmVyS2V5O1xuXG4gIGNvbnN0cnVjdG9yKHBhcmFtczoge1xuICAgIGZpbGVuYW1lOiBzdHJpbmc7XG4gICAgbWltZXR5cGU6IHN0cmluZztcbiAgICBzaXplOiBudW1iZXI7XG4gICAgdXJsOiBzdHJpbmc7XG4gICAgc2lnbmVkVXJsOiBzdHJpbmc7XG4gICAga2V5OiBzdHJpbmc7XG4gICAgZGlza05hbWU6IERyaXZlcktleTtcbiAgfSkge1xuICAgIHN1cGVyKHtcbiAgICAgIGZpbGVuYW1lOiBwYXJhbXMuZmlsZW5hbWUsXG4gICAgICBtaW1ldHlwZTogcGFyYW1zLm1pbWV0eXBlLFxuICAgICAgc2l6ZTogcGFyYW1zLnNpemUsXG4gICAgICB1cmw6IHBhcmFtcy51cmwsXG4gICAgICBzaWduZWRVcmw6IHBhcmFtcy5zaWduZWRVcmwsXG4gICAgfSk7XG4gICAgdGhpcy5rZXlWYWx1ZSA9IHBhcmFtcy5rZXk7XG4gICAgdGhpcy5kaXNrTmFtZVZhbHVlID0gcGFyYW1zLmRpc2tOYW1lO1xuICB9XG5cbiAgLyoqIOyggOyepeyGjCDrgrQg7YKkICovXG4gIGdldCBrZXkoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5rZXlWYWx1ZTtcbiAgfVxuXG4gIC8qKiDsoIDsnqXrkJwg65SU7Iqk7YGsIOydtOumhCAqL1xuICBnZXQgZGlza05hbWUoKTogRHJpdmVyS2V5IHtcbiAgICByZXR1cm4gdGhpcy5kaXNrTmFtZVZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIOyggOyepeyGjOyXkOyEnCDtjIzsnbzsnYQg64uk7Jq066Gc65Oc7ZWp64uI64ukLlxuICAgKiDsiqTtirjrprwg66qo65Oc66GcIOyXheuhnOuTnOuQnCDtjIzsnbzsnYQg64KY7KSR7JeQIOyymOumrO2VtOyVvCDtlaAg65WMIOyCrOyaqe2VqeuLiOuLpC5cbiAgICovXG4gIGFzeW5jIGRvd25sb2FkKCk6IFByb21pc2U8QnVmZmVyPiB7XG4gICAgY29uc3QgeyBTb25hbXUgfSA9IGF3YWl0IGltcG9ydChcIi4uL2FwaS9zb25hbXVcIik7XG4gICAgY29uc3QgZGlzayA9IFNvbmFtdS5zdG9yYWdlLnVzZSh0aGlzLmRpc2tOYW1lVmFsdWUpO1xuXG4gICAgY29uc3QgdWludDhBcnJheSA9IGF3YWl0IGRpc2suZ2V0KHRoaXMua2V5VmFsdWUpO1xuICAgIHJldHVybiBCdWZmZXIuZnJvbSh1aW50OEFycmF5KTtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7OztDQUFzQyxlQUFBO0NBT3pCLGVBQWIsY0FBa0MsU0FBUztFQUN6QztFQUNBO0VBRUEsWUFBWSxRQVFUO0dBQ0QsTUFBTTtJQUNKLFVBQVUsT0FBTztJQUNqQixVQUFVLE9BQU87SUFDakIsTUFBTSxPQUFPO0lBQ2IsS0FBSyxPQUFPO0lBQ1osV0FBVyxPQUFPO0dBQ3BCLENBQUM7R0FDRCxLQUFLLFdBQVcsT0FBTztHQUN2QixLQUFLLGdCQUFnQixPQUFPO0VBQzlCOztFQUdBLElBQUksTUFBYztHQUNoQixPQUFPLEtBQUs7RUFDZDs7RUFHQSxJQUFJLFdBQXNCO0dBQ3hCLE9BQU8sS0FBSztFQUNkOzs7OztFQU1BLE1BQU0sV0FBNEI7R0FDaEMsTUFBTSxFQUFFLFdBQVcsTUFBTSxPQUFPO0dBR2hDLE1BQU0sYUFBYSxNQUZOLE9BQU8sUUFBUSxJQUFJLEtBQUssYUFFWixDQUFBLENBQUssSUFBSSxLQUFLLFFBQVE7R0FDL0MsT0FBTyxPQUFPLEtBQUssVUFBVTtFQUMvQjtDQUNGIn0=
|