sonamu 0.7.53 → 0.8.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/api/config.d.ts +9 -1
- package/dist/api/config.d.ts.map +1 -1
- package/dist/api/config.js +1 -1
- package/dist/api/sonamu.d.ts +21 -1
- package/dist/api/sonamu.d.ts.map +1 -1
- package/dist/api/sonamu.js +159 -65
- package/dist/auth/plugins/entity-definitions/anonymous.d.ts +10 -0
- package/dist/auth/plugins/entity-definitions/anonymous.d.ts.map +1 -0
- package/dist/auth/plugins/entity-definitions/anonymous.js +23 -0
- package/dist/auth/plugins/entity-definitions/api-key.d.ts +9 -0
- package/dist/auth/plugins/entity-definitions/api-key.d.ts.map +1 -0
- package/dist/auth/plugins/entity-definitions/api-key.js +199 -0
- package/dist/auth/plugins/entity-definitions/index.d.ts +6 -0
- package/dist/auth/plugins/entity-definitions/index.d.ts.map +1 -1
- package/dist/auth/plugins/entity-definitions/index.js +20 -2
- package/dist/auth/plugins/entity-definitions/jwt.d.ts +9 -0
- package/dist/auth/plugins/entity-definitions/jwt.d.ts.map +1 -0
- package/dist/auth/plugins/entity-definitions/jwt.js +67 -0
- package/dist/auth/plugins/entity-definitions/organization.d.ts +9 -0
- package/dist/auth/plugins/entity-definitions/organization.d.ts.map +1 -0
- package/dist/auth/plugins/entity-definitions/organization.js +424 -0
- package/dist/auth/plugins/entity-definitions/passkey.d.ts +10 -0
- package/dist/auth/plugins/entity-definitions/passkey.d.ts.map +1 -0
- package/dist/auth/plugins/entity-definitions/passkey.js +129 -0
- package/dist/auth/plugins/entity-definitions/sso.d.ts +10 -0
- package/dist/auth/plugins/entity-definitions/sso.d.ts.map +1 -0
- package/dist/auth/plugins/entity-definitions/sso.js +110 -0
- package/dist/auth/plugins/entity-definitions/types.d.ts +1 -1
- package/dist/auth/plugins/entity-definitions/types.d.ts.map +1 -1
- package/dist/auth/plugins/entity-definitions/types.js +1 -1
- package/dist/auth/plugins/wrappers/admin.d.ts.map +1 -1
- package/dist/auth/plugins/wrappers/admin.js +2 -4
- package/dist/auth/plugins/wrappers/anonymous.d.ts +18 -0
- package/dist/auth/plugins/wrappers/anonymous.d.ts.map +1 -0
- package/dist/auth/plugins/wrappers/anonymous.js +26 -0
- package/dist/auth/plugins/wrappers/api-key.d.ts +18 -0
- package/dist/auth/plugins/wrappers/api-key.d.ts.map +1 -0
- package/dist/auth/plugins/wrappers/api-key.js +38 -0
- package/dist/auth/plugins/wrappers/index.d.ts +6 -0
- package/dist/auth/plugins/wrappers/index.d.ts.map +1 -1
- package/dist/auth/plugins/wrappers/index.js +7 -1
- package/dist/auth/plugins/wrappers/jwt.d.ts +18 -0
- package/dist/auth/plugins/wrappers/jwt.d.ts.map +1 -0
- package/dist/auth/plugins/wrappers/jwt.js +30 -0
- package/dist/auth/plugins/wrappers/organization.d.ts +18 -0
- package/dist/auth/plugins/wrappers/organization.d.ts.map +1 -0
- package/dist/auth/plugins/wrappers/organization.js +67 -0
- package/dist/auth/plugins/wrappers/passkey.d.ts +18 -0
- package/dist/auth/plugins/wrappers/passkey.d.ts.map +1 -0
- package/dist/auth/plugins/wrappers/passkey.js +32 -0
- package/dist/auth/plugins/wrappers/phone-number.d.ts.map +1 -1
- package/dist/auth/plugins/wrappers/phone-number.js +2 -4
- package/dist/auth/plugins/wrappers/sso.d.ts +853 -0
- package/dist/auth/plugins/wrappers/sso.d.ts.map +1 -0
- package/dist/auth/plugins/wrappers/sso.js +36 -0
- package/dist/auth/plugins/wrappers/two-factor.d.ts.map +1 -1
- package/dist/auth/plugins/wrappers/two-factor.js +2 -4
- package/dist/auth/plugins/wrappers/username.d.ts.map +1 -1
- package/dist/auth/plugins/wrappers/username.js +2 -4
- package/dist/bin/build-config.d.ts +2 -2
- package/dist/bin/build-config.js +6 -7
- package/dist/bin/cli.js +417 -32
- package/dist/bin/fixture.d.ts +27 -0
- package/dist/bin/fixture.d.ts.map +1 -0
- package/dist/bin/fixture.js +245 -0
- package/dist/cache/decorator.d.ts +4 -3
- package/dist/cache/decorator.d.ts.map +1 -1
- package/dist/cache/decorator.js +5 -4
- package/dist/cone/cone-generator.d.ts +33 -0
- package/dist/cone/cone-generator.d.ts.map +1 -0
- package/dist/cone/cone-generator.js +286 -0
- package/dist/database/_batch_update.d.ts.map +1 -1
- package/dist/database/_batch_update.js +16 -2
- package/dist/database/puri-subset.test-d.js +1 -1
- package/dist/database/puri-subset.types.d.ts +1 -1
- package/dist/database/puri-subset.types.d.ts.map +1 -1
- package/dist/database/puri-subset.types.js +1 -1
- package/dist/database/puri.d.ts +4 -0
- package/dist/database/puri.d.ts.map +1 -1
- package/dist/database/puri.js +20 -2
- package/dist/database/upsert-builder.d.ts.map +1 -1
- package/dist/database/upsert-builder.js +19 -3
- package/dist/dict/en.d.ts +15 -0
- package/dist/dict/en.d.ts.map +1 -1
- package/dist/dict/en.js +2 -1
- package/dist/dict/ko.d.ts +15 -0
- package/dist/dict/ko.d.ts.map +1 -1
- package/dist/dict/ko.js +2 -1
- package/dist/dict/rc-keys.d.ts +28 -0
- package/dist/dict/rc-keys.d.ts.map +1 -1
- package/dist/dict/rc-keys.js +31 -1
- package/dist/dict/sd.d.ts.map +1 -1
- package/dist/dict/sd.js +20 -4
- package/dist/entity/entity-manager.d.ts +298 -2
- package/dist/entity/entity-manager.d.ts.map +1 -1
- package/dist/entity/entity-manager.js +4 -1
- package/dist/entity/entity-template-cone.d.ts +14 -0
- package/dist/entity/entity-template-cone.d.ts.map +1 -0
- package/dist/entity/entity-template-cone.js +222 -0
- package/dist/entity/entity.d.ts +47 -2
- package/dist/entity/entity.d.ts.map +1 -1
- package/dist/entity/entity.js +161 -14
- package/dist/ssr/renderer.js +3 -3
- package/dist/syncer/api-parser.js +12 -1
- package/dist/syncer/checksum.d.ts +0 -14
- package/dist/syncer/checksum.d.ts.map +1 -1
- package/dist/syncer/checksum.js +1 -23
- package/dist/syncer/syncer-actions.d.ts.map +1 -1
- package/dist/syncer/syncer-actions.js +8 -2
- package/dist/syncer/syncer.d.ts +1 -1
- package/dist/syncer/syncer.d.ts.map +1 -1
- package/dist/syncer/syncer.js +17 -10
- package/dist/tasks/workflow-manager.d.ts +13 -1
- package/dist/tasks/workflow-manager.d.ts.map +1 -1
- package/dist/tasks/workflow-manager.js +18 -1
- package/dist/template/entity-converter.js +4 -4
- package/dist/template/helpers.d.ts +10 -0
- package/dist/template/helpers.d.ts.map +1 -1
- package/dist/template/helpers.js +48 -1
- package/dist/template/implementations/entry-server.template.d.ts +1 -1
- package/dist/template/implementations/entry-server.template.js +7 -2
- package/dist/template/implementations/generated.template.d.ts.map +1 -1
- package/dist/template/implementations/generated.template.js +5 -1
- package/dist/template/implementations/generated_http.template.d.ts +1 -0
- package/dist/template/implementations/generated_http.template.d.ts.map +1 -1
- package/dist/template/implementations/generated_http.template.js +6 -2
- package/dist/template/implementations/generated_sso.template.d.ts.map +1 -1
- package/dist/template/implementations/generated_sso.template.js +29 -8
- package/dist/template/implementations/queries.template.d.ts.map +1 -1
- package/dist/template/implementations/queries.template.js +9 -1
- package/dist/template/implementations/sd.template.d.ts +1 -1
- package/dist/template/implementations/sd.template.d.ts.map +1 -1
- package/dist/template/implementations/sd.template.js +28 -4
- package/dist/template/implementations/services.template.d.ts.map +1 -1
- package/dist/template/implementations/services.template.js +12 -12
- package/dist/template/implementations/view_form.template.d.ts +11 -7
- package/dist/template/implementations/view_form.template.d.ts.map +1 -1
- package/dist/template/implementations/view_form.template.js +97 -87
- package/dist/template/implementations/view_list.template.d.ts +3 -3
- package/dist/template/implementations/view_list.template.d.ts.map +1 -1
- package/dist/template/implementations/view_list.template.js +115 -109
- package/dist/template/implementations/view_search_input.template.d.ts.map +1 -1
- package/dist/template/implementations/view_search_input.template.js +18 -14
- package/dist/template/zod-converter.d.ts.map +1 -1
- package/dist/template/zod-converter.js +95 -7
- package/dist/testing/_relation-graph.js +1 -1
- package/dist/testing/data-explorer.d.ts +61 -0
- package/dist/testing/data-explorer.d.ts.map +1 -0
- package/dist/testing/data-explorer.js +274 -0
- package/dist/testing/faker-mappings.d.ts +20 -0
- package/dist/testing/faker-mappings.d.ts.map +1 -0
- package/dist/testing/faker-mappings.js +421 -0
- package/dist/testing/fixture-generator.d.ts +161 -0
- package/dist/testing/fixture-generator.d.ts.map +1 -0
- package/dist/testing/fixture-generator.js +954 -0
- package/dist/testing/fixture-manager.d.ts +6 -1
- package/dist/testing/fixture-manager.d.ts.map +1 -1
- package/dist/testing/fixture-manager.js +72 -4
- package/dist/testing/index.d.ts +3 -0
- package/dist/testing/index.d.ts.map +1 -1
- package/dist/testing/index.js +4 -1
- package/dist/types/types.d.ts +1520 -26
- package/dist/types/types.d.ts.map +1 -1
- package/dist/types/types.js +136 -22
- package/dist/ui/ai-client.d.ts.map +1 -1
- package/dist/ui/ai-client.js +9 -4
- package/dist/ui/api.d.ts.map +1 -1
- package/dist/ui/api.js +303 -24
- package/dist/ui-web/assets/index-CsUr-_pV.js +254 -0
- package/dist/ui-web/assets/index-T42zzs1K.css +1 -0
- package/dist/ui-web/index.html +2 -2
- package/dist/utils/fs-utils.d.ts +2 -1
- package/dist/utils/fs-utils.d.ts.map +1 -1
- package/dist/utils/fs-utils.js +14 -3
- package/package.json +19 -11
- package/src/api/config.ts +12 -1
- package/src/api/sonamu.ts +179 -65
- package/src/auth/plugins/entity-definitions/anonymous.ts +17 -0
- package/src/auth/plugins/entity-definitions/api-key.ts +93 -0
- package/src/auth/plugins/entity-definitions/index.ts +18 -0
- package/src/auth/plugins/entity-definitions/jwt.ts +35 -0
- package/src/auth/plugins/entity-definitions/organization.ts +215 -0
- package/src/auth/plugins/entity-definitions/passkey.ts +64 -0
- package/src/auth/plugins/entity-definitions/sso.ts +62 -0
- package/src/auth/plugins/entity-definitions/types.ts +11 -1
- package/src/auth/plugins/wrappers/admin.ts +1 -3
- package/src/auth/plugins/wrappers/anonymous.ts +30 -0
- package/src/auth/plugins/wrappers/api-key.ts +42 -0
- package/src/auth/plugins/wrappers/index.ts +6 -0
- package/src/auth/plugins/wrappers/jwt.ts +34 -0
- package/src/auth/plugins/wrappers/organization.ts +73 -0
- package/src/auth/plugins/wrappers/passkey.ts +36 -0
- package/src/auth/plugins/wrappers/phone-number.ts +1 -3
- package/src/auth/plugins/wrappers/sso.ts +40 -0
- package/src/auth/plugins/wrappers/two-factor.ts +1 -3
- package/src/auth/plugins/wrappers/username.ts +1 -3
- package/src/bin/build-config.ts +6 -6
- package/src/bin/cli.ts +452 -31
- package/src/bin/fixture.ts +302 -0
- package/src/cache/decorator.ts +4 -3
- package/src/cone/cone-generator.ts +363 -0
- package/src/database/_batch_update.ts +11 -0
- package/src/database/puri-subset.test-d.ts +13 -13
- package/src/database/puri-subset.types.ts +1 -1
- package/src/database/puri.ts +43 -1
- package/src/database/upsert-builder.ts +16 -2
- package/src/dict/en.ts +1 -0
- package/src/dict/ko.ts +1 -0
- package/src/dict/rc-keys.ts +32 -0
- package/src/dict/sd.ts +23 -3
- package/src/entity/entity-manager.ts +4 -0
- package/src/entity/entity-template-cone.ts +298 -0
- package/src/entity/entity.ts +189 -13
- package/src/shared/app.shared.ts.txt +5 -0
- package/src/shared/web.shared.ts.txt +9 -5
- package/src/skills/project/README.md +21 -0
- package/src/skills/project/architecture.md +373 -0
- package/src/skills/project/business-logic.md +270 -0
- package/src/skills/project/requirements.md +160 -0
- package/src/skills/sonamu/SKILL.md +168 -3
- package/src/skills/sonamu/api.md +102 -0
- package/src/skills/sonamu/database.md +220 -1
- package/src/skills/sonamu/entity-relations.md +89 -1
- package/src/skills/sonamu/fixture-cli.md +501 -0
- package/src/skills/sonamu/frontend.md +214 -0
- package/src/skills/sonamu/i18n.md +95 -0
- package/src/skills/sonamu/model.md +153 -0
- package/src/skills/sonamu/project-init.md +178 -8
- package/src/skills/sonamu/scaffolding.md +112 -0
- package/src/skills/sonamu/subset.md +9 -3
- package/src/skills/sonamu/testing.md +287 -2
- package/src/skills/sonamu/workflow.md +70 -5
- package/src/ssr/renderer.ts +2 -2
- package/src/syncer/api-parser.ts +12 -0
- package/src/syncer/checksum.ts +0 -38
- package/src/syncer/syncer-actions.ts +7 -1
- package/src/syncer/syncer.ts +16 -5
- package/src/tasks/workflow-manager.ts +29 -8
- package/src/template/entity-converter.ts +3 -3
- package/src/template/helpers.ts +49 -0
- package/src/template/implementations/entry-server.template.ts +1 -1
- package/src/template/implementations/generated.template.ts +4 -0
- package/src/template/implementations/generated_http.template.ts +1 -0
- package/src/template/implementations/generated_sso.template.ts +40 -11
- package/src/template/implementations/queries.template.ts +8 -0
- package/src/template/implementations/sd.template.ts +22 -3
- package/src/template/implementations/services.template.ts +11 -10
- package/src/template/implementations/view_form.template.ts +111 -101
- package/src/template/implementations/view_list.template.ts +120 -119
- package/src/template/implementations/view_search_input.template.ts +17 -13
- package/src/template/zod-converter.ts +103 -6
- package/src/testing/_relation-graph.ts +1 -1
- package/src/testing/data-explorer.ts +427 -0
- package/src/testing/faker-mappings.ts +434 -0
- package/src/testing/fixture-generator.ts +1166 -0
- package/src/testing/fixture-manager.ts +91 -6
- package/src/testing/index.ts +3 -0
- package/src/types/types.ts +222 -26
- package/src/ui/ai-client.ts +9 -1
- package/src/ui/api.ts +429 -23
- package/src/utils/fs-utils.ts +14 -1
- package/dist/template/implementations/view_enums_select.template.d.ts +0 -17
- package/dist/template/implementations/view_enums_select.template.d.ts.map +0 -1
- package/dist/template/implementations/view_enums_select.template.js +0 -62
- package/dist/template/implementations/view_id_async_select.template.d.ts +0 -17
- package/dist/template/implementations/view_id_async_select.template.d.ts.map +0 -1
- package/dist/template/implementations/view_id_async_select.template.js +0 -125
- package/dist/ui-web/assets/index-Bd_2AkLb.css +0 -1
- package/dist/ui-web/assets/index-BpSbhQWo.js +0 -225
- package/src/template/implementations/view_enums_select.template.ts +0 -65
- package/src/template/implementations/view_id_async_select.template.ts +0 -139
package/dist/template/helpers.js
CHANGED
|
@@ -57,6 +57,53 @@ import { isEnumProp, isRelationProp } from "../types/types.js";
|
|
|
57
57
|
throw new Error(`찾을 수 없는 Relation ${colName}`);
|
|
58
58
|
}
|
|
59
59
|
}
|
|
60
|
+
/**
|
|
61
|
+
* FK 컬럼명에서 실제 relation 이름을 추출합니다.
|
|
62
|
+
* BelongsToOne/OneToOne relation은 subset에서 FK 컬럼명(user_id)으로 생성되므로 변환이 필요하고,
|
|
63
|
+
* ManyToMany relation은 subset에서 relation명(employee)으로 생성되므로 변환이 불필요합니다.
|
|
64
|
+
*
|
|
65
|
+
* @example
|
|
66
|
+
* getRelationNameFromColumnName("Employee", "user_id") // "user"
|
|
67
|
+
* getRelationNameFromColumnName("Project", "tag_ids") // "tags"
|
|
68
|
+
*/ export function getRelationNameFromColumnName(entityId, colName) {
|
|
69
|
+
// _ids (복수) 처리
|
|
70
|
+
if (colName.endsWith("_ids")) {
|
|
71
|
+
const baseName = colName.replace(/_ids$/, "");
|
|
72
|
+
// 먼저 base name으로 찾기
|
|
73
|
+
try {
|
|
74
|
+
const relProp = getRelationPropFromColName(entityId, baseName);
|
|
75
|
+
return relProp.name;
|
|
76
|
+
} catch {
|
|
77
|
+
// pluralize해서 찾기
|
|
78
|
+
try {
|
|
79
|
+
const pluralName = inflection.pluralize(baseName);
|
|
80
|
+
const relProp = getRelationPropFromColName(entityId, pluralName);
|
|
81
|
+
return relProp.name;
|
|
82
|
+
} catch {
|
|
83
|
+
return colName;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
// _id (단수) 처리
|
|
88
|
+
if (colName.endsWith("_id") && colName !== "id") {
|
|
89
|
+
const baseName = colName.replace(/_id$/, "");
|
|
90
|
+
// 먼저 base name으로 찾기
|
|
91
|
+
try {
|
|
92
|
+
const relProp = getRelationPropFromColName(entityId, baseName);
|
|
93
|
+
return relProp.name;
|
|
94
|
+
} catch {
|
|
95
|
+
// singularize해서 찾기
|
|
96
|
+
try {
|
|
97
|
+
const singularName = inflection.singularize(baseName);
|
|
98
|
+
const relProp = getRelationPropFromColName(entityId, singularName);
|
|
99
|
+
return relProp.name;
|
|
100
|
+
} catch {
|
|
101
|
+
return colName;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
return colName;
|
|
106
|
+
}
|
|
60
107
|
/**
|
|
61
108
|
* 소스 코드에서 객체 선언을 추출합니다.
|
|
62
109
|
* 중괄호 카운팅 방식으로 중첩된 객체도 정확히 파싱합니다.
|
|
@@ -125,4 +172,4 @@ import { isEnumProp, isRelationProp } from "../types/types.js";
|
|
|
125
172
|
return sourceCode.substring(startIdx, finalEndIdx + 1);
|
|
126
173
|
}
|
|
127
174
|
|
|
128
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90ZW1wbGF0ZS9oZWxwZXJzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBpbmZsZWN0aW9uIGZyb20gXCJpbmZsZWN0aW9uXCI7XG5pbXBvcnQgeyBFbnRpdHlNYW5hZ2VyLCB0eXBlIEVudGl0eU5hbWVzUmVjb3JkIH0gZnJvbSBcIi4uL2VudGl0eS9lbnRpdHktbWFuYWdlclwiO1xuaW1wb3J0IHsgaXNFbnVtUHJvcCwgaXNSZWxhdGlvblByb3AsIHR5cGUgUmVsYXRpb25Qcm9wIH0gZnJvbSBcIi4uL3R5cGVzL3R5cGVzXCI7XG5cbi8qKlxuICogRW51beydmCDtkZzsi5zsmqkg652867Ko7J2EIOqwgOyguOyYteuLiOuLpC5cbiAqIE9yZGVyQnksIFNlYXJjaEZpZWxkIOuTsSDtirnsiJjtlZwg6rK97Jqw7JmAIOydvOuwmCBFbnVt7J2EIOq1rOu2hO2VmOyXrCDsspjrpqztlanri4jri6QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRMYWJlbChlbnRpdHlJZDogc3RyaW5nLCBlbnVtSWQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIGlmIChlbnVtSWQuZW5kc1dpdGgoXCJPcmRlckJ5XCIpKSB7XG4gICAgcmV0dXJuIFwi7KCV66CsXCI7XG4gIH0gZWxzZSBpZiAoZW51bUlkLmVuZHNXaXRoKFwiU2VhcmNoRmllbGRcIikpIHtcbiAgICByZXR1cm4gXCLqsoDsg4lcIjtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBlbnVtUHJvcCA9IEVudGl0eU1hbmFnZXIuZ2V0KGVudGl0eUlkKS5wcm9wcy5maW5kKFxuICAgICAgKHByb3ApID0+IGAke2VudGl0eUlkfSR7aW5mbGVjdGlvbi5jYW1lbGl6ZShwcm9wLm5hbWUpfWAgPT09IGVudW1JZCxcbiAgICApO1xuICAgIGlmIChlbnVtUHJvcD8uZGVzYykge1xuICAgICAgcmV0dXJuIGVudW1Qcm9wLmRlc2M7XG4gICAgfVxuICAgIHJldHVybiBlbnVtSWQ7XG4gIH1cbn1cblxuLyoqXG4gKiDsu6zrn7wg7J2066aE7Jy866Gc67aA7YSwIEVudW0g7KCV67O066W8IOy2lOy2nO2VqeuLiOuLpC5cbiAqIEVudGl0eeydmCBwcm9wIOykkSBlbnVtIO2DgOyeheyduCDqsoPsnYQg7LC+7JWEIOq0gOugqCDsoJXrs7Trpbwg67CY7ZmY7ZWp64uI64ukLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RW51bUluZm9Gcm9tQ29sTmFtZShcbiAgZW50aXR5SWQ6IHN0cmluZyxcbiAgY29sTmFtZTogc3RyaW5nLFxuKToge1xuICBpZDogc3RyaW5nO1xuICB0YXJnZXRFbnRpdHlOYW1lczogRW50aXR5TmFtZXNSZWNvcmQ7XG4gIHRhcmdldEVudGl0eUlkOiBzdHJpbmc7XG4gIHRpdGxlOiBzdHJpbmc7XG59IHtcbiAgY29uc3QgYmFzZUVudGl0eSA9IEVudGl0eU1hbmFnZXIuZ2V0KGVudGl0eUlkKTtcbiAgY29uc3QgcHJvcCA9IGJhc2VFbnRpdHkucHJvcHMuZmluZCgocCkgPT4gcC5uYW1lID09PSBjb2xOYW1lKTtcbiAgaWYgKHByb3AgJiYgaXNFbnVtUHJvcChwcm9wKSkge1xuICAgIHJldHVybiB7XG4gICAgICBpZDogcHJvcC5pZCxcbiAgICAgIHRhcmdldEVudGl0eUlkOiBlbnRpdHlJZCxcbiAgICAgIHRhcmdldEVudGl0eU5hbWVzOiBFbnRpdHlNYW5hZ2VyLmdldE5hbWVzRnJvbUlkKGVudGl0eUlkKSxcbiAgICAgIHRpdGxlOiBwcm9wLmRlc2MgPz8gcHJvcC5pZCxcbiAgICB9O1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IGlkQ2FuZGlkYXRlID0gaW5mbGVjdGlvbi5jYW1lbGl6ZShcbiAgICAgIGAke2luZmxlY3Rpb24udW5kZXJzY29yZShlbnRpdHlJZCl9XyR7aW5mbGVjdGlvbi51bmRlcnNjb3JlKGNvbE5hbWUpfWAsXG4gICAgICBmYWxzZSxcbiAgICApO1xuICAgIGNvbnN0IHRhcmdldEVudGl0eU5hbWVzID0gRW50aXR5TWFuYWdlci5nZXROYW1lc0Zyb21JZChlbnRpdHlJZCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGlkOiBpZENhbmRpZGF0ZSxcbiAgICAgIHRhcmdldEVudGl0eUlkOiBlbnRpdHlJZCxcbiAgICAgIHRhcmdldEVudGl0eU5hbWVzOiB0YXJnZXRFbnRpdHlOYW1lcyxcbiAgICAgIHRpdGxlOiBpZENhbmRpZGF0ZSxcbiAgICB9O1xuICB9XG59XG5cbi8qKlxuICog7Lus65+8IOydtOumhOycvOuhnOu2gO2EsCBSZWxhdGlvbiBwcm9wIOygleuztOulvCDqsIDsoLjsmLXri4jri6QuXG4gKiDqtIDqs4TtmJUgcHJvcOydtCDslYTri4wg6rK97JqwIOyXkOufrOulvCDrsJzsg53si5ztgrXri4jri6QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRSZWxhdGlvblByb3BGcm9tQ29sTmFtZShlbnRpdHlJZDogc3RyaW5nLCBjb2xOYW1lOiBzdHJpbmcpOiBSZWxhdGlvblByb3Age1xuICBjb25zdCBiYXNlRW50aXR5ID0gRW50aXR5TWFuYWdlci5nZXQoZW50aXR5SWQpO1xuICBjb25zdCByZWxQcm9wID0gYmFzZUVudGl0eS5wcm9wcy5maW5kKChwcm9wKSA9PiBwcm9wLm5hbWUgPT09IGNvbE5hbWUpO1xuICBpZiAoaXNSZWxhdGlvblByb3AocmVsUHJvcCkpIHtcbiAgICBjb25zdCByZWxFbnRpdHkgPSBFbnRpdHlNYW5hZ2VyLmdldChyZWxQcm9wLndpdGgpO1xuICAgIGlmIChyZWxFbnRpdHkucGFyZW50SWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiT25seSBwYXJlbnQgZW50aXRpZXMgY2FuIGJlIHVzZWQgYXMgcmVsYXRpb24gcHJvcHNcIik7XG4gICAgfVxuICAgIHJldHVybiByZWxQcm9wO1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcihg7LC+7J2EIOyImCDsl4bripQgUmVsYXRpb24gJHtjb2xOYW1lfWApO1xuICB9XG59XG5cbi8qKlxuICog7IaM7IqkIOy9lOuTnOyXkOyEnCDqsJ3ssrQg7ISg7Ja47J2EIOy2lOy2nO2VqeuLiOuLpC5cbiAqIOykkeq0hO2YuCDsubTsmrTtjIUg67Cp7Iud7Jy866GcIOykkeyyqeuQnCDqsJ3ssrTrj4Qg7KCV7ZmV7Z6IIO2MjOyLse2VqeuLiOuLpC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV4dHJhY3RPYmplY3REZWNsYXJhdGlvbihzb3VyY2VDb2RlOiBzdHJpbmcsIHZhck5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIC8vIFwiZXhwb3J0IGNvbnN0IHZhck5hbWUgPSB7XCIg7Yyo7YS0IOywvuq4sFxuICBjb25zdCBwYXR0ZXJuID0gbmV3IFJlZ0V4cChgZXhwb3J0IGNvbnN0ICR7dmFyTmFtZX1cXFxccyo9XFxcXHMqXFxcXHtgKTtcbiAgY29uc3QgbWF0Y2ggPSBwYXR0ZXJuLmV4ZWMoc291cmNlQ29kZSk7XG5cbiAgaWYgKCFtYXRjaCkge1xuICAgIHJldHVybiBcIlwiO1xuICB9XG5cbiAgLy8g7Iuc7J6RIOychOy5mFxuICBjb25zdCBzdGFydElkeCA9IG1hdGNoLmluZGV4O1xuICBjb25zdCBvcGVuQnJhY2VJZHggPSBzb3VyY2VDb2RlLmluZGV4T2YoXCJ7XCIsIHN0YXJ0SWR4KTtcblxuICAvLyDspJHqtITtmLgg7Lm07Jq07YyFXG4gIGxldCBicmFjZUNvdW50ID0gMDtcbiAgbGV0IGluU3RyaW5nID0gZmFsc2U7XG4gIGxldCBpblRlbXBsYXRlID0gZmFsc2U7XG4gIGxldCBzdHJpbmdDaGFyID0gXCJcIjtcbiAgbGV0IGVuZElkeCA9IG9wZW5CcmFjZUlkeDtcblxuICBmb3IgKGxldCBpID0gb3BlbkJyYWNlSWR4OyBpIDwgc291cmNlQ29kZS5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IGNoYXIgPSBzb3VyY2VDb2RlW2ldO1xuICAgIGNvbnN0IHByZXZDaGFyID0gaSA+IDAgPyBzb3VyY2VDb2RlW2kgLSAxXSA6IFwiXCI7XG5cbiAgICAvLyDsnbTsiqTsvIDsnbTtlITrkJwg66y47J6Q64qUIOustOyLnFxuICAgIGlmIChwcmV2Q2hhciA9PT0gXCJcXFxcXCIgJiYgKGluU3RyaW5nIHx8IGluVGVtcGxhdGUpKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICAvLyDrrLjsnpDsl7Qg7Iuc7J6RL+yiheujjFxuICAgIGlmICgoY2hhciA9PT0gJ1wiJyB8fCBjaGFyID09PSBcIidcIikgJiYgIWluVGVtcGxhdGUpIHtcbiAgICAgIGlmICghaW5TdHJpbmcpIHtcbiAgICAgICAgaW5TdHJpbmcgPSB0cnVlO1xuICAgICAgICBzdHJpbmdDaGFyID0gY2hhcjtcbiAgICAgIH0gZWxzZSBpZiAoY2hhciA9PT0gc3RyaW5nQ2hhcikge1xuICAgICAgICBpblN0cmluZyA9IGZhbHNlO1xuICAgICAgICBzdHJpbmdDaGFyID0gXCJcIjtcbiAgICAgIH1cbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIC8vIO2FnO2UjOumvyDrpqzthLDrn7Qg7Iuc7J6RL+yiheujjFxuICAgIGlmIChjaGFyID09PSBcImBcIiAmJiAhaW5TdHJpbmcpIHtcbiAgICAgIGluVGVtcGxhdGUgPSAhaW5UZW1wbGF0ZTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIC8vIOusuOyekOyXtC/thZztlIzrpr8g64K067aA64qUIOykkeq0hO2YuCDsubTsmrTtjIUg7JWIIO2VqFxuICAgIGlmIChpblN0cmluZyB8fCBpblRlbXBsYXRlKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICAvLyDspJHqtITtmLgg7Lm07Jq07YyFXG4gICAgaWYgKGNoYXIgPT09IFwie1wiKSB7XG4gICAgICBicmFjZUNvdW50Kys7XG4gICAgfSBlbHNlIGlmIChjaGFyID09PSBcIn1cIikge1xuICAgICAgYnJhY2VDb3VudC0tO1xuICAgICAgaWYgKGJyYWNlQ291bnQgPT09IDApIHtcbiAgICAgICAgZW5kSWR4ID0gaTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8g7ISg7Ja466y4IOuBneq5jOyngCDssL7quLAgKH07KVxuICBsZXQgZmluYWxFbmRJZHggPSBlbmRJZHg7XG4gIGZvciAobGV0IGkgPSBlbmRJZHggKyAxOyBpIDwgc291cmNlQ29kZS5sZW5ndGg7IGkrKykge1xuICAgIGlmIChzb3VyY2VDb2RlW2ldID09PSBcIjtcIikge1xuICAgICAgZmluYWxFbmRJZHggPSBpO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHNvdXJjZUNvZGUuc3Vic3RyaW5nKHN0YXJ0SWR4LCBmaW5hbEVuZElkeCArIDEpO1xufVxuIl0sIm5hbWVzIjpbImluZmxlY3Rpb24iLCJFbnRpdHlNYW5hZ2VyIiwiaXNFbnVtUHJvcCIsImlzUmVsYXRpb25Qcm9wIiwiZ2V0TGFiZWwiLCJlbnRpdHlJZCIsImVudW1JZCIsImVuZHNXaXRoIiwiZW51bVByb3AiLCJnZXQiLCJwcm9wcyIsImZpbmQiLCJwcm9wIiwiY2FtZWxpemUiLCJuYW1lIiwiZGVzYyIsImdldEVudW1JbmZvRnJvbUNvbE5hbWUiLCJjb2xOYW1lIiwiYmFzZUVudGl0eSIsInAiLCJpZCIsInRhcmdldEVudGl0eUlkIiwidGFyZ2V0RW50aXR5TmFtZXMiLCJnZXROYW1lc0Zyb21JZCIsInRpdGxlIiwiaWRDYW5kaWRhdGUiLCJ1bmRlcnNjb3JlIiwiZ2V0UmVsYXRpb25Qcm9wRnJvbUNvbE5hbWUiLCJyZWxQcm9wIiwicmVsRW50aXR5Iiwid2l0aCIsInBhcmVudElkIiwidW5kZWZpbmVkIiwiRXJyb3IiLCJleHRyYWN0T2JqZWN0RGVjbGFyYXRpb24iLCJzb3VyY2VDb2RlIiwidmFyTmFtZSIsInBhdHRlcm4iLCJSZWdFeHAiLCJtYXRjaCIsImV4ZWMiLCJzdGFydElkeCIsImluZGV4Iiwib3BlbkJyYWNlSWR4IiwiaW5kZXhPZiIsImJyYWNlQ291bnQiLCJpblN0cmluZyIsImluVGVtcGxhdGUiLCJzdHJpbmdDaGFyIiwiZW5kSWR4IiwiaSIsImxlbmd0aCIsImNoYXIiLCJwcmV2Q2hhciIsImZpbmFsRW5kSWR4Iiwic3Vic3RyaW5nIl0sIm1hcHBpbmdzIjoiQUFBQSxPQUFPQSxnQkFBZ0IsYUFBYTtBQUNwQyxTQUFTQyxhQUFhLFFBQWdDLDhCQUEyQjtBQUNqRixTQUFTQyxVQUFVLEVBQUVDLGNBQWMsUUFBMkIsb0JBQWlCO0FBRS9FOzs7Q0FHQyxHQUNELE9BQU8sU0FBU0MsU0FBU0MsUUFBZ0IsRUFBRUMsTUFBYztJQUN2RCxJQUFJQSxPQUFPQyxRQUFRLENBQUMsWUFBWTtRQUM5QixPQUFPO0lBQ1QsT0FBTyxJQUFJRCxPQUFPQyxRQUFRLENBQUMsZ0JBQWdCO1FBQ3pDLE9BQU87SUFDVCxPQUFPO1FBQ0wsTUFBTUMsV0FBV1AsY0FBY1EsR0FBRyxDQUFDSixVQUFVSyxLQUFLLENBQUNDLElBQUksQ0FDckQsQ0FBQ0MsT0FBUyxHQUFHUCxXQUFXTCxXQUFXYSxRQUFRLENBQUNELEtBQUtFLElBQUksR0FBRyxLQUFLUjtRQUUvRCxJQUFJRSxVQUFVTyxNQUFNO1lBQ2xCLE9BQU9QLFNBQVNPLElBQUk7UUFDdEI7UUFDQSxPQUFPVDtJQUNUO0FBQ0Y7QUFFQTs7O0NBR0MsR0FDRCxPQUFPLFNBQVNVLHVCQUNkWCxRQUFnQixFQUNoQlksT0FBZTtJQU9mLE1BQU1DLGFBQWFqQixjQUFjUSxHQUFHLENBQUNKO0lBQ3JDLE1BQU1PLE9BQU9NLFdBQVdSLEtBQUssQ0FBQ0MsSUFBSSxDQUFDLENBQUNRLElBQU1BLEVBQUVMLElBQUksS0FBS0c7SUFDckQsSUFBSUwsUUFBUVYsV0FBV1UsT0FBTztRQUM1QixPQUFPO1lBQ0xRLElBQUlSLEtBQUtRLEVBQUU7WUFDWEMsZ0JBQWdCaEI7WUFDaEJpQixtQkFBbUJyQixjQUFjc0IsY0FBYyxDQUFDbEI7WUFDaERtQixPQUFPWixLQUFLRyxJQUFJLElBQUlILEtBQUtRLEVBQUU7UUFDN0I7SUFDRixPQUFPO1FBQ0wsTUFBTUssY0FBY3pCLFdBQVdhLFFBQVEsQ0FDckMsR0FBR2IsV0FBVzBCLFVBQVUsQ0FBQ3JCLFVBQVUsQ0FBQyxFQUFFTCxXQUFXMEIsVUFBVSxDQUFDVCxVQUFVLEVBQ3RFO1FBRUYsTUFBTUssb0JBQW9CckIsY0FBY3NCLGNBQWMsQ0FBQ2xCO1FBQ3ZELE9BQU87WUFDTGUsSUFBSUs7WUFDSkosZ0JBQWdCaEI7WUFDaEJpQixtQkFBbUJBO1lBQ25CRSxPQUFPQztRQUNUO0lBQ0Y7QUFDRjtBQUVBOzs7Q0FHQyxHQUNELE9BQU8sU0FBU0UsMkJBQTJCdEIsUUFBZ0IsRUFBRVksT0FBZTtJQUMxRSxNQUFNQyxhQUFhakIsY0FBY1EsR0FBRyxDQUFDSjtJQUNyQyxNQUFNdUIsVUFBVVYsV0FBV1IsS0FBSyxDQUFDQyxJQUFJLENBQUMsQ0FBQ0MsT0FBU0EsS0FBS0UsSUFBSSxLQUFLRztJQUM5RCxJQUFJZCxlQUFleUIsVUFBVTtRQUMzQixNQUFNQyxZQUFZNUIsY0FBY1EsR0FBRyxDQUFDbUIsUUFBUUUsSUFBSTtRQUNoRCxJQUFJRCxVQUFVRSxRQUFRLEtBQUtDLFdBQVc7WUFDcEMsTUFBTSxJQUFJQyxNQUFNO1FBQ2xCO1FBQ0EsT0FBT0w7SUFDVCxPQUFPO1FBQ0wsTUFBTSxJQUFJSyxNQUFNLENBQUMsaUJBQWlCLEVBQUVoQixTQUFTO0lBQy9DO0FBQ0Y7QUFFQTs7O0NBR0MsR0FDRCxPQUFPLFNBQVNpQix5QkFBeUJDLFVBQWtCLEVBQUVDLE9BQWU7SUFDMUUsbUNBQW1DO0lBQ25DLE1BQU1DLFVBQVUsSUFBSUMsT0FBTyxDQUFDLGFBQWEsRUFBRUYsUUFBUSxZQUFZLENBQUM7SUFDaEUsTUFBTUcsUUFBUUYsUUFBUUcsSUFBSSxDQUFDTDtJQUUzQixJQUFJLENBQUNJLE9BQU87UUFDVixPQUFPO0lBQ1Q7SUFFQSxRQUFRO0lBQ1IsTUFBTUUsV0FBV0YsTUFBTUcsS0FBSztJQUM1QixNQUFNQyxlQUFlUixXQUFXUyxPQUFPLENBQUMsS0FBS0g7SUFFN0MsVUFBVTtJQUNWLElBQUlJLGFBQWE7SUFDakIsSUFBSUMsV0FBVztJQUNmLElBQUlDLGFBQWE7SUFDakIsSUFBSUMsYUFBYTtJQUNqQixJQUFJQyxTQUFTTjtJQUViLElBQUssSUFBSU8sSUFBSVAsY0FBY08sSUFBSWYsV0FBV2dCLE1BQU0sRUFBRUQsSUFBSztRQUNyRCxNQUFNRSxPQUFPakIsVUFBVSxDQUFDZSxFQUFFO1FBQzFCLE1BQU1HLFdBQVdILElBQUksSUFBSWYsVUFBVSxDQUFDZSxJQUFJLEVBQUUsR0FBRztRQUU3QyxnQkFBZ0I7UUFDaEIsSUFBSUcsYUFBYSxRQUFTUCxDQUFBQSxZQUFZQyxVQUFTLEdBQUk7WUFDakQ7UUFDRjtRQUVBLFlBQVk7UUFDWixJQUFJLEFBQUNLLENBQUFBLFNBQVMsT0FBT0EsU0FBUyxHQUFFLEtBQU0sQ0FBQ0wsWUFBWTtZQUNqRCxJQUFJLENBQUNELFVBQVU7Z0JBQ2JBLFdBQVc7Z0JBQ1hFLGFBQWFJO1lBQ2YsT0FBTyxJQUFJQSxTQUFTSixZQUFZO2dCQUM5QkYsV0FBVztnQkFDWEUsYUFBYTtZQUNmO1lBQ0E7UUFDRjtRQUVBLGdCQUFnQjtRQUNoQixJQUFJSSxTQUFTLE9BQU8sQ0FBQ04sVUFBVTtZQUM3QkMsYUFBYSxDQUFDQTtZQUNkO1FBQ0Y7UUFFQSwwQkFBMEI7UUFDMUIsSUFBSUQsWUFBWUMsWUFBWTtZQUMxQjtRQUNGO1FBRUEsVUFBVTtRQUNWLElBQUlLLFNBQVMsS0FBSztZQUNoQlA7UUFDRixPQUFPLElBQUlPLFNBQVMsS0FBSztZQUN2QlA7WUFDQSxJQUFJQSxlQUFlLEdBQUc7Z0JBQ3BCSSxTQUFTQztnQkFDVDtZQUNGO1FBQ0Y7SUFDRjtJQUVBLGtCQUFrQjtJQUNsQixJQUFJSSxjQUFjTDtJQUNsQixJQUFLLElBQUlDLElBQUlELFNBQVMsR0FBR0MsSUFBSWYsV0FBV2dCLE1BQU0sRUFBRUQsSUFBSztRQUNuRCxJQUFJZixVQUFVLENBQUNlLEVBQUUsS0FBSyxLQUFLO1lBQ3pCSSxjQUFjSjtZQUNkO1FBQ0Y7SUFDRjtJQUVBLE9BQU9mLFdBQVdvQixTQUFTLENBQUNkLFVBQVVhLGNBQWM7QUFDdEQifQ==
|
|
175
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90ZW1wbGF0ZS9oZWxwZXJzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBpbmZsZWN0aW9uIGZyb20gXCJpbmZsZWN0aW9uXCI7XG5pbXBvcnQgeyBFbnRpdHlNYW5hZ2VyLCB0eXBlIEVudGl0eU5hbWVzUmVjb3JkIH0gZnJvbSBcIi4uL2VudGl0eS9lbnRpdHktbWFuYWdlclwiO1xuaW1wb3J0IHsgaXNFbnVtUHJvcCwgaXNSZWxhdGlvblByb3AsIHR5cGUgUmVsYXRpb25Qcm9wIH0gZnJvbSBcIi4uL3R5cGVzL3R5cGVzXCI7XG5cbi8qKlxuICogRW51beydmCDtkZzsi5zsmqkg652867Ko7J2EIOqwgOyguOyYteuLiOuLpC5cbiAqIE9yZGVyQnksIFNlYXJjaEZpZWxkIOuTsSDtirnsiJjtlZwg6rK97Jqw7JmAIOydvOuwmCBFbnVt7J2EIOq1rOu2hO2VmOyXrCDsspjrpqztlanri4jri6QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRMYWJlbChlbnRpdHlJZDogc3RyaW5nLCBlbnVtSWQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIGlmIChlbnVtSWQuZW5kc1dpdGgoXCJPcmRlckJ5XCIpKSB7XG4gICAgcmV0dXJuIFwi7KCV66CsXCI7XG4gIH0gZWxzZSBpZiAoZW51bUlkLmVuZHNXaXRoKFwiU2VhcmNoRmllbGRcIikpIHtcbiAgICByZXR1cm4gXCLqsoDsg4lcIjtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBlbnVtUHJvcCA9IEVudGl0eU1hbmFnZXIuZ2V0KGVudGl0eUlkKS5wcm9wcy5maW5kKFxuICAgICAgKHByb3ApID0+IGAke2VudGl0eUlkfSR7aW5mbGVjdGlvbi5jYW1lbGl6ZShwcm9wLm5hbWUpfWAgPT09IGVudW1JZCxcbiAgICApO1xuICAgIGlmIChlbnVtUHJvcD8uZGVzYykge1xuICAgICAgcmV0dXJuIGVudW1Qcm9wLmRlc2M7XG4gICAgfVxuICAgIHJldHVybiBlbnVtSWQ7XG4gIH1cbn1cblxuLyoqXG4gKiDsu6zrn7wg7J2066aE7Jy866Gc67aA7YSwIEVudW0g7KCV67O066W8IOy2lOy2nO2VqeuLiOuLpC5cbiAqIEVudGl0eeydmCBwcm9wIOykkSBlbnVtIO2DgOyeheyduCDqsoPsnYQg7LC+7JWEIOq0gOugqCDsoJXrs7Trpbwg67CY7ZmY7ZWp64uI64ukLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RW51bUluZm9Gcm9tQ29sTmFtZShcbiAgZW50aXR5SWQ6IHN0cmluZyxcbiAgY29sTmFtZTogc3RyaW5nLFxuKToge1xuICBpZDogc3RyaW5nO1xuICB0YXJnZXRFbnRpdHlOYW1lczogRW50aXR5TmFtZXNSZWNvcmQ7XG4gIHRhcmdldEVudGl0eUlkOiBzdHJpbmc7XG4gIHRpdGxlOiBzdHJpbmc7XG59IHtcbiAgY29uc3QgYmFzZUVudGl0eSA9IEVudGl0eU1hbmFnZXIuZ2V0KGVudGl0eUlkKTtcbiAgY29uc3QgcHJvcCA9IGJhc2VFbnRpdHkucHJvcHMuZmluZCgocCkgPT4gcC5uYW1lID09PSBjb2xOYW1lKTtcbiAgaWYgKHByb3AgJiYgaXNFbnVtUHJvcChwcm9wKSkge1xuICAgIHJldHVybiB7XG4gICAgICBpZDogcHJvcC5pZCxcbiAgICAgIHRhcmdldEVudGl0eUlkOiBlbnRpdHlJZCxcbiAgICAgIHRhcmdldEVudGl0eU5hbWVzOiBFbnRpdHlNYW5hZ2VyLmdldE5hbWVzRnJvbUlkKGVudGl0eUlkKSxcbiAgICAgIHRpdGxlOiBwcm9wLmRlc2MgPz8gcHJvcC5pZCxcbiAgICB9O1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IGlkQ2FuZGlkYXRlID0gaW5mbGVjdGlvbi5jYW1lbGl6ZShcbiAgICAgIGAke2luZmxlY3Rpb24udW5kZXJzY29yZShlbnRpdHlJZCl9XyR7aW5mbGVjdGlvbi51bmRlcnNjb3JlKGNvbE5hbWUpfWAsXG4gICAgICBmYWxzZSxcbiAgICApO1xuICAgIGNvbnN0IHRhcmdldEVudGl0eU5hbWVzID0gRW50aXR5TWFuYWdlci5nZXROYW1lc0Zyb21JZChlbnRpdHlJZCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGlkOiBpZENhbmRpZGF0ZSxcbiAgICAgIHRhcmdldEVudGl0eUlkOiBlbnRpdHlJZCxcbiAgICAgIHRhcmdldEVudGl0eU5hbWVzOiB0YXJnZXRFbnRpdHlOYW1lcyxcbiAgICAgIHRpdGxlOiBpZENhbmRpZGF0ZSxcbiAgICB9O1xuICB9XG59XG5cbi8qKlxuICog7Lus65+8IOydtOumhOycvOuhnOu2gO2EsCBSZWxhdGlvbiBwcm9wIOygleuztOulvCDqsIDsoLjsmLXri4jri6QuXG4gKiDqtIDqs4TtmJUgcHJvcOydtCDslYTri4wg6rK97JqwIOyXkOufrOulvCDrsJzsg53si5ztgrXri4jri6QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRSZWxhdGlvblByb3BGcm9tQ29sTmFtZShlbnRpdHlJZDogc3RyaW5nLCBjb2xOYW1lOiBzdHJpbmcpOiBSZWxhdGlvblByb3Age1xuICBjb25zdCBiYXNlRW50aXR5ID0gRW50aXR5TWFuYWdlci5nZXQoZW50aXR5SWQpO1xuICBjb25zdCByZWxQcm9wID0gYmFzZUVudGl0eS5wcm9wcy5maW5kKChwcm9wKSA9PiBwcm9wLm5hbWUgPT09IGNvbE5hbWUpO1xuICBpZiAoaXNSZWxhdGlvblByb3AocmVsUHJvcCkpIHtcbiAgICBjb25zdCByZWxFbnRpdHkgPSBFbnRpdHlNYW5hZ2VyLmdldChyZWxQcm9wLndpdGgpO1xuICAgIGlmIChyZWxFbnRpdHkucGFyZW50SWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiT25seSBwYXJlbnQgZW50aXRpZXMgY2FuIGJlIHVzZWQgYXMgcmVsYXRpb24gcHJvcHNcIik7XG4gICAgfVxuICAgIHJldHVybiByZWxQcm9wO1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcihg7LC+7J2EIOyImCDsl4bripQgUmVsYXRpb24gJHtjb2xOYW1lfWApO1xuICB9XG59XG5cbi8qKlxuICogRksg7Lus65+866qF7JeQ7IScIOyLpOygnCByZWxhdGlvbiDsnbTrpoTsnYQg7LaU7Lac7ZWp64uI64ukLlxuICogQmVsb25nc1RvT25lL09uZVRvT25lIHJlbGF0aW9u7J2AIHN1YnNldOyXkOyEnCBGSyDsu6zrn7zrqoUodXNlcl9pZCnsnLzroZwg7IOd7ISx65CY66+A66GcIOuzgO2ZmOydtCDtlYTsmpTtlZjqs6AsXG4gKiBNYW55VG9NYW55IHJlbGF0aW9u7J2AIHN1YnNldOyXkOyEnCByZWxhdGlvbuuqhShlbXBsb3llZSnsnLzroZwg7IOd7ISx65CY66+A66GcIOuzgO2ZmOydtCDrtojtlYTsmpTtlanri4jri6QuXG4gKlxuICogQGV4YW1wbGVcbiAqIGdldFJlbGF0aW9uTmFtZUZyb21Db2x1bW5OYW1lKFwiRW1wbG95ZWVcIiwgXCJ1c2VyX2lkXCIpIC8vIFwidXNlclwiXG4gKiBnZXRSZWxhdGlvbk5hbWVGcm9tQ29sdW1uTmFtZShcIlByb2plY3RcIiwgXCJ0YWdfaWRzXCIpIC8vIFwidGFnc1wiXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRSZWxhdGlvbk5hbWVGcm9tQ29sdW1uTmFtZShlbnRpdHlJZDogc3RyaW5nLCBjb2xOYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAvLyBfaWRzICjrs7XsiJgpIOyymOumrFxuICBpZiAoY29sTmFtZS5lbmRzV2l0aChcIl9pZHNcIikpIHtcbiAgICBjb25zdCBiYXNlTmFtZSA9IGNvbE5hbWUucmVwbGFjZSgvX2lkcyQvLCBcIlwiKTtcbiAgICAvLyDrqLzsoIAgYmFzZSBuYW1l7Jy866GcIOywvuq4sFxuICAgIHRyeSB7XG4gICAgICBjb25zdCByZWxQcm9wID0gZ2V0UmVsYXRpb25Qcm9wRnJvbUNvbE5hbWUoZW50aXR5SWQsIGJhc2VOYW1lKTtcbiAgICAgIHJldHVybiByZWxQcm9wLm5hbWU7XG4gICAgfSBjYXRjaCB7XG4gICAgICAvLyBwbHVyYWxpemXtlbTshJwg7LC+6riwXG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBwbHVyYWxOYW1lID0gaW5mbGVjdGlvbi5wbHVyYWxpemUoYmFzZU5hbWUpO1xuICAgICAgICBjb25zdCByZWxQcm9wID0gZ2V0UmVsYXRpb25Qcm9wRnJvbUNvbE5hbWUoZW50aXR5SWQsIHBsdXJhbE5hbWUpO1xuICAgICAgICByZXR1cm4gcmVsUHJvcC5uYW1lO1xuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIHJldHVybiBjb2xOYW1lO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICAvLyBfaWQgKOuLqOyImCkg7LKY66asXG4gIGlmIChjb2xOYW1lLmVuZHNXaXRoKFwiX2lkXCIpICYmIGNvbE5hbWUgIT09IFwiaWRcIikge1xuICAgIGNvbnN0IGJhc2VOYW1lID0gY29sTmFtZS5yZXBsYWNlKC9faWQkLywgXCJcIik7XG4gICAgLy8g66i87KCAIGJhc2UgbmFtZeycvOuhnCDssL7quLBcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVsUHJvcCA9IGdldFJlbGF0aW9uUHJvcEZyb21Db2xOYW1lKGVudGl0eUlkLCBiYXNlTmFtZSk7XG4gICAgICByZXR1cm4gcmVsUHJvcC5uYW1lO1xuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gc2luZ3VsYXJpemXtlbTshJwg7LC+6riwXG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBzaW5ndWxhck5hbWUgPSBpbmZsZWN0aW9uLnNpbmd1bGFyaXplKGJhc2VOYW1lKTtcbiAgICAgICAgY29uc3QgcmVsUHJvcCA9IGdldFJlbGF0aW9uUHJvcEZyb21Db2xOYW1lKGVudGl0eUlkLCBzaW5ndWxhck5hbWUpO1xuICAgICAgICByZXR1cm4gcmVsUHJvcC5uYW1lO1xuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIHJldHVybiBjb2xOYW1lO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gY29sTmFtZTtcbn1cblxuLyoqXG4gKiDshozsiqQg7L2U65Oc7JeQ7IScIOqwneyytCDshKDslrjsnYQg7LaU7Lac7ZWp64uI64ukLlxuICog7KSR6rSE7Zi4IOy5tOyatO2MhSDrsKnsi53snLzroZwg7KSR7LKp65CcIOqwneyytOuPhCDsoJXtmZXtnogg7YyM7Iux7ZWp64uI64ukLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZXh0cmFjdE9iamVjdERlY2xhcmF0aW9uKHNvdXJjZUNvZGU6IHN0cmluZywgdmFyTmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgLy8gXCJleHBvcnQgY29uc3QgdmFyTmFtZSA9IHtcIiDtjKjthLQg7LC+6riwXG4gIGNvbnN0IHBhdHRlcm4gPSBuZXcgUmVnRXhwKGBleHBvcnQgY29uc3QgJHt2YXJOYW1lfVxcXFxzKj1cXFxccypcXFxce2ApO1xuICBjb25zdCBtYXRjaCA9IHBhdHRlcm4uZXhlYyhzb3VyY2VDb2RlKTtcblxuICBpZiAoIW1hdGNoKSB7XG4gICAgcmV0dXJuIFwiXCI7XG4gIH1cblxuICAvLyDsi5zsnpEg7JyE7LmYXG4gIGNvbnN0IHN0YXJ0SWR4ID0gbWF0Y2guaW5kZXg7XG4gIGNvbnN0IG9wZW5CcmFjZUlkeCA9IHNvdXJjZUNvZGUuaW5kZXhPZihcIntcIiwgc3RhcnRJZHgpO1xuXG4gIC8vIOykkeq0hO2YuCDsubTsmrTtjIVcbiAgbGV0IGJyYWNlQ291bnQgPSAwO1xuICBsZXQgaW5TdHJpbmcgPSBmYWxzZTtcbiAgbGV0IGluVGVtcGxhdGUgPSBmYWxzZTtcbiAgbGV0IHN0cmluZ0NoYXIgPSBcIlwiO1xuICBsZXQgZW5kSWR4ID0gb3BlbkJyYWNlSWR4O1xuXG4gIGZvciAobGV0IGkgPSBvcGVuQnJhY2VJZHg7IGkgPCBzb3VyY2VDb2RlLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgY2hhciA9IHNvdXJjZUNvZGVbaV07XG4gICAgY29uc3QgcHJldkNoYXIgPSBpID4gMCA/IHNvdXJjZUNvZGVbaSAtIDFdIDogXCJcIjtcblxuICAgIC8vIOydtOyKpOy8gOydtO2UhOuQnCDrrLjsnpDripQg66y07IucXG4gICAgaWYgKHByZXZDaGFyID09PSBcIlxcXFxcIiAmJiAoaW5TdHJpbmcgfHwgaW5UZW1wbGF0ZSkpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIC8vIOusuOyekOyXtCDsi5zsnpEv7KKF66OMXG4gICAgaWYgKChjaGFyID09PSAnXCInIHx8IGNoYXIgPT09IFwiJ1wiKSAmJiAhaW5UZW1wbGF0ZSkge1xuICAgICAgaWYgKCFpblN0cmluZykge1xuICAgICAgICBpblN0cmluZyA9IHRydWU7XG4gICAgICAgIHN0cmluZ0NoYXIgPSBjaGFyO1xuICAgICAgfSBlbHNlIGlmIChjaGFyID09PSBzdHJpbmdDaGFyKSB7XG4gICAgICAgIGluU3RyaW5nID0gZmFsc2U7XG4gICAgICAgIHN0cmluZ0NoYXIgPSBcIlwiO1xuICAgICAgfVxuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgLy8g7YWc7ZSM66a/IOumrO2EsOuftCDsi5zsnpEv7KKF66OMXG4gICAgaWYgKGNoYXIgPT09IFwiYFwiICYmICFpblN0cmluZykge1xuICAgICAgaW5UZW1wbGF0ZSA9ICFpblRlbXBsYXRlO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgLy8g66y47J6Q7Je0L+2FnO2UjOumvyDrgrTrtoDripQg7KSR6rSE7Zi4IOy5tOyatO2MhSDslYgg7ZWoXG4gICAgaWYgKGluU3RyaW5nIHx8IGluVGVtcGxhdGUpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIC8vIOykkeq0hO2YuCDsubTsmrTtjIVcbiAgICBpZiAoY2hhciA9PT0gXCJ7XCIpIHtcbiAgICAgIGJyYWNlQ291bnQrKztcbiAgICB9IGVsc2UgaWYgKGNoYXIgPT09IFwifVwiKSB7XG4gICAgICBicmFjZUNvdW50LS07XG4gICAgICBpZiAoYnJhY2VDb3VudCA9PT0gMCkge1xuICAgICAgICBlbmRJZHggPSBpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyDshKDslrjrrLgg64Gd6rmM7KeAIOywvuq4sCAofTspXG4gIGxldCBmaW5hbEVuZElkeCA9IGVuZElkeDtcbiAgZm9yIChsZXQgaSA9IGVuZElkeCArIDE7IGkgPCBzb3VyY2VDb2RlLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKHNvdXJjZUNvZGVbaV0gPT09IFwiO1wiKSB7XG4gICAgICBmaW5hbEVuZElkeCA9IGk7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICByZXR1cm4gc291cmNlQ29kZS5zdWJzdHJpbmcoc3RhcnRJZHgsIGZpbmFsRW5kSWR4ICsgMSk7XG59XG4iXSwibmFtZXMiOlsiaW5mbGVjdGlvbiIsIkVudGl0eU1hbmFnZXIiLCJpc0VudW1Qcm9wIiwiaXNSZWxhdGlvblByb3AiLCJnZXRMYWJlbCIsImVudGl0eUlkIiwiZW51bUlkIiwiZW5kc1dpdGgiLCJlbnVtUHJvcCIsImdldCIsInByb3BzIiwiZmluZCIsInByb3AiLCJjYW1lbGl6ZSIsIm5hbWUiLCJkZXNjIiwiZ2V0RW51bUluZm9Gcm9tQ29sTmFtZSIsImNvbE5hbWUiLCJiYXNlRW50aXR5IiwicCIsImlkIiwidGFyZ2V0RW50aXR5SWQiLCJ0YXJnZXRFbnRpdHlOYW1lcyIsImdldE5hbWVzRnJvbUlkIiwidGl0bGUiLCJpZENhbmRpZGF0ZSIsInVuZGVyc2NvcmUiLCJnZXRSZWxhdGlvblByb3BGcm9tQ29sTmFtZSIsInJlbFByb3AiLCJyZWxFbnRpdHkiLCJ3aXRoIiwicGFyZW50SWQiLCJ1bmRlZmluZWQiLCJFcnJvciIsImdldFJlbGF0aW9uTmFtZUZyb21Db2x1bW5OYW1lIiwiYmFzZU5hbWUiLCJyZXBsYWNlIiwicGx1cmFsTmFtZSIsInBsdXJhbGl6ZSIsInNpbmd1bGFyTmFtZSIsInNpbmd1bGFyaXplIiwiZXh0cmFjdE9iamVjdERlY2xhcmF0aW9uIiwic291cmNlQ29kZSIsInZhck5hbWUiLCJwYXR0ZXJuIiwiUmVnRXhwIiwibWF0Y2giLCJleGVjIiwic3RhcnRJZHgiLCJpbmRleCIsIm9wZW5CcmFjZUlkeCIsImluZGV4T2YiLCJicmFjZUNvdW50IiwiaW5TdHJpbmciLCJpblRlbXBsYXRlIiwic3RyaW5nQ2hhciIsImVuZElkeCIsImkiLCJsZW5ndGgiLCJjaGFyIiwicHJldkNo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
|
|
@@ -70,9 +70,14 @@ export async function render(url: string, preloadedData: PreloadedData[] = []) {
|
|
|
70
70
|
...this.getTargetAndPath(),
|
|
71
71
|
body,
|
|
72
72
|
importKeys: [],
|
|
73
|
-
customHeaders: [
|
|
73
|
+
customHeaders: [
|
|
74
|
+
"/**",
|
|
75
|
+
" * @generated",
|
|
76
|
+
" * 직접 수정하지 마세요.",
|
|
77
|
+
" */"
|
|
78
|
+
]
|
|
74
79
|
};
|
|
75
80
|
}
|
|
76
81
|
}
|
|
77
82
|
|
|
78
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
83
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90ZW1wbGF0ZS9pbXBsZW1lbnRhdGlvbnMvZW50cnktc2VydmVyLnRlbXBsYXRlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgVGVtcGxhdGVPcHRpb25zIH0gZnJvbSBcIi4uLy4uL3R5cGVzL3R5cGVzXCI7XG5pbXBvcnQgeyBUZW1wbGF0ZSB9IGZyb20gXCIuLi90ZW1wbGF0ZVwiO1xuXG5leHBvcnQgY2xhc3MgVGVtcGxhdGVfX2VudHJ5X3NlcnZlciBleHRlbmRzIFRlbXBsYXRlIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoXCJlbnRyeV9zZXJ2ZXJcIik7XG4gIH1cblxuICBnZXRUYXJnZXRBbmRQYXRoKCkge1xuICAgIHJldHVybiB7XG4gICAgICB0YXJnZXQ6IFwid2ViL3NyY1wiLFxuICAgICAgcGF0aDogYGVudHJ5LXNlcnZlci5nZW5lcmF0ZWQudHN4YCxcbiAgICB9O1xuICB9XG5cbiAgcmVuZGVyKHt9OiBUZW1wbGF0ZU9wdGlvbnNbXCJlbnRyeV9zZXJ2ZXJcIl0pIHtcbiAgICBjb25zdCBib2R5ID0gYFxuaW1wb3J0IHsgUXVlcnlDbGllbnQsIGRlaHlkcmF0ZSB9IGZyb20gJ0B0YW5zdGFjay9yZWFjdC1xdWVyeSc7XG5pbXBvcnQgeyBjcmVhdGVNZW1vcnlIaXN0b3J5LCBjcmVhdGVSb3V0ZXIsIFJvdXRlclByb3ZpZGVyIH0gZnJvbSAnQHRhbnN0YWNrL3JlYWN0LXJvdXRlcic7XG5pbXBvcnQgeyByZW5kZXJUb1N0cmluZyB9IGZyb20gJ3JlYWN0LWRvbS9zZXJ2ZXInO1xuaW1wb3J0IHsgcm91dGVUcmVlIH0gZnJvbSAnLi9yb3V0ZVRyZWUuZ2VuJztcbmltcG9ydCB7IFN1c3BlbnNlIH0gZnJvbSBcInJlYWN0XCI7XG5cbmV4cG9ydCB0eXBlIFByZWxvYWRlZERhdGEgPSB7XG4gIHF1ZXJ5S2V5OiBhbnlbXTtcbiAgZGF0YTogYW55O1xufTtcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlbmRlcih1cmw6IHN0cmluZywgcHJlbG9hZGVkRGF0YTogUHJlbG9hZGVkRGF0YVtdID0gW10pIHtcbiAgLy8gUXVlcnlDbGllbnQg7IOd7ISxXG4gIGNvbnN0IHF1ZXJ5Q2xpZW50ID0gbmV3IFF1ZXJ5Q2xpZW50KHtcbiAgICBkZWZhdWx0T3B0aW9uczoge1xuICAgICAgcXVlcmllczoge1xuICAgICAgICBzdGFsZVRpbWU6IDUwMDAsXG4gICAgICAgIHJldHJ5OiBmYWxzZSxcbiAgICAgIH0sXG4gICAgfSxcbiAgfSk7XG5cbiAgLy8gUHJlbG9hZGVkIOuNsOydtO2EsOulvCBxdWVyeUNsaWVudOyXkCDsp4HsoJEg7KO87J6FXG4gIGZvciAoY29uc3QgeyBxdWVyeUtleSwgZGF0YSB9IG9mIHByZWxvYWRlZERhdGEpIHtcbiAgICBxdWVyeUNsaWVudC5zZXRRdWVyeURhdGEocXVlcnlLZXksIGRhdGEpO1xuICB9XG5cbiAgLy8gRGVoeWRyYXRlXG4gIGNvbnN0IGRlaHlkcmF0ZWRTdGF0ZSA9IGRlaHlkcmF0ZShxdWVyeUNsaWVudCk7XG5cbiAgLy8gU1NS7JqpIOuplOuqqOumrCDtnojsiqTthqDrpqwg7IOd7ISxXG4gIGNvbnN0IG1lbW9yeUhpc3RvcnkgPSBjcmVhdGVNZW1vcnlIaXN0b3J5KHtcbiAgICBpbml0aWFsRW50cmllczogW3VybF0sXG4gIH0pO1xuXG4gIC8vIFJvdXRlciDsg53shLEgKFNTUiDrqqjrk5wpXG4gIGNvbnN0IHJvdXRlciA9IGNyZWF0ZVJvdXRlcih7XG4gICAgcm91dGVUcmVlLFxuICAgIGNvbnRleHQ6IHsgcXVlcnlDbGllbnQgfSxcbiAgICBoaXN0b3J5OiBtZW1vcnlIaXN0b3J5LFxuICAgIGRlZmF1bHRQcmVsb2FkOiAnaW50ZW50JyxcbiAgfSk7XG5cbiAgLy8g65287Jqw7YSwIOy0iOq4sO2ZlDogU1NS7JeQ7IScIOuwmOuTnOyLnCBhd2FpdCByb3V0ZXIubG9hZCgpIO2YuOy2nCDtlYTsmpRcbiAgYXdhaXQgcm91dGVyLmxvYWQoKTtcblxuICAvLyBSb3V0ZXJQcm92aWRlcuunjCDroIzrjZTrp4EgKFN1c3BlbnNl66GcIOuemO2VkSAtIGh5ZHJhdGlvbiBtaXNtYXRjaCDrsKnsp4ApXG4gIGNvbnN0IGFwcEh0bWwgPSByZW5kZXJUb1N0cmluZyg8U3VzcGVuc2UgZmFsbGJhY2s9e251bGx9PjxSb3V0ZXJQcm92aWRlciByb3V0ZXI9e3JvdXRlcn0gLz48L1N1c3BlbnNlPik7XG5cbiAgcmV0dXJuIHtcbiAgICBodG1sOiBhcHBIdG1sLFxuICAgIGRlaHlkcmF0ZWRTdGF0ZSxcbiAgfTtcbn1cbiAgICBgLnRyaW0oKTtcblxuICAgIHJldHVybiB7XG4gICAgICAuLi50aGlzLmdldFRhcmdldEFuZFBhdGgoKSxcbiAgICAgIGJvZHksXG4gICAgICBpbXBvcnRLZXlzOiBbXSxcbiAgICAgIGN1c3RvbUhlYWRlcnM6IFtcIi8qKlwiLCBcIiAqIEBnZW5lcmF0ZWRcIiwgXCIgKiDsp4HsoJEg7IiY7KCV7ZWY7KeAIOuniOyEuOyalC5cIiwgXCIgKi9cIl0sXG4gICAgfTtcbiAgfVxufVxuIl0sIm5hbWVzIjpbIlRlbXBsYXRlIiwiVGVtcGxhdGVfX2VudHJ5X3NlcnZlciIsImdldFRhcmdldEFuZFBhdGgiLCJ0YXJnZXQiLCJwYXRoIiwicmVuZGVyIiwiYm9keSIsInRyaW0iLCJpbXBvcnRLZXlzIiwiY3VzdG9tSGVhZGVycyJdLCJtYXBwaW5ncyI6IkFBQ0EsU0FBU0EsUUFBUSxRQUFRLGlCQUFjO0FBRXZDLE9BQU8sTUFBTUMsK0JBQStCRDtJQUMxQyxhQUFjO1FBQ1osS0FBSyxDQUFDO0lBQ1I7SUFFQUUsbUJBQW1CO1FBQ2pCLE9BQU87WUFDTEMsUUFBUTtZQUNSQyxNQUFNLENBQUMsMEJBQTBCLENBQUM7UUFDcEM7SUFDRjtJQUVBQyxPQUFPLEVBQW1DLEVBQUU7UUFDMUMsTUFBTUMsT0FBTyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBdURkLENBQUMsQ0FBQ0MsSUFBSTtRQUVOLE9BQU87WUFDTCxHQUFHLElBQUksQ0FBQ0wsZ0JBQWdCLEVBQUU7WUFDMUJJO1lBQ0FFLFlBQVksRUFBRTtZQUNkQyxlQUFlO2dCQUFDO2dCQUFPO2dCQUFpQjtnQkFBbUI7YUFBTTtRQUNuRTtJQUNGO0FBQ0YifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generated.template.d.ts","sourceRoot":"","sources":["../../../src/template/implementations/generated.template.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAUlD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAGvC,MAAM,MAAM,UAAU,GAAG;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB,CAAC;AACF,qBAAa,mBAAoB,SAAQ,QAAQ;;IAK/C,gBAAgB;;;;IAOhB,MAAM;;;;;;;
|
|
1
|
+
{"version":3,"file":"generated.template.d.ts","sourceRoot":"","sources":["../../../src/template/implementations/generated.template.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAUlD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAGvC,MAAM,MAAM,UAAU,GAAG;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB,CAAC;AACF,qBAAa,mBAAoB,SAAQ,QAAQ;;IAK/C,gBAAgB;;;;IAOhB,MAAM;;;;;;;IA+GN,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI;IAqBrD,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,GAAE,MAAM,EAAO,GAAG,UAAU;IAsH9E,2BAA2B,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI;IAsE9D,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI;CA8CvD"}
|
|
@@ -115,6 +115,10 @@ export class Template__generated extends Template {
|
|
|
115
115
|
body,
|
|
116
116
|
importKeys: sourceCode.importKeys,
|
|
117
117
|
customHeaders: [
|
|
118
|
+
"/**",
|
|
119
|
+
" * @generated",
|
|
120
|
+
" * 직접 수정하지 마세요.",
|
|
121
|
+
" */",
|
|
118
122
|
"/** biome-ignore-all lint: generated는 무시 */",
|
|
119
123
|
"/** biome-ignore-all assist: generated는 무시 */",
|
|
120
124
|
"/** biome-ignore-all format: generated는 무시 */",
|
|
@@ -281,4 +285,4 @@ z.object({
|
|
|
281
285
|
}
|
|
282
286
|
}
|
|
283
287
|
|
|
284
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90ZW1wbGF0ZS9pbXBsZW1lbnRhdGlvbnMvZ2VuZXJhdGVkLnRlbXBsYXRlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NlcnQgZnJvbSBcImFzc2VydFwiO1xuaW1wb3J0IHsgdW5pcXVlIH0gZnJvbSBcInJhZGFzaGlcIjtcbmltcG9ydCB7IFNvbmFtdSB9IGZyb20gXCIuLi8uLi9hcGlcIjtcbmltcG9ydCB0eXBlIHsgRW50aXR5IH0gZnJvbSBcIi4uLy4uL2VudGl0eS9lbnRpdHlcIjtcbmltcG9ydCB7IEVudGl0eU1hbmFnZXIgfSBmcm9tIFwiLi4vLi4vZW50aXR5L2VudGl0eS1tYW5hZ2VyXCI7XG5pbXBvcnQgeyBOYWl0ZSB9IGZyb20gXCIuLi8uLi9uYWl0ZS9uYWl0ZVwiO1xuaW1wb3J0IHtcbiAgdHlwZSBFbnRpdHlJbmRleCxcbiAgdHlwZSBFbnRpdHlQcm9wTm9kZSxcbiAgaXNWaXJ0dWFsQ29kZVByb3AsXG4gIGlzVmlydHVhbFF1ZXJ5UHJvcCxcbn0gZnJvbSBcIi4uLy4uL3R5cGVzL3R5cGVzXCI7XG5pbXBvcnQgeyBub25OdWxsYWJsZSB9IGZyb20gXCIuLi8uLi91dGlscy91dGlsc1wiO1xuaW1wb3J0IHsgVGVtcGxhdGUgfSBmcm9tIFwiLi4vdGVtcGxhdGVcIjtcbmltcG9ydCB7IEJVSUxUX0lOX1RZUEVTLCBwcm9wTm9kZVRvWm9kVHlwZURlZiwgem9kVHlwZVRvWm9kQ29kZSB9IGZyb20gXCIuLi96b2QtY29udmVydGVyXCI7XG5cbmV4cG9ydCB0eXBlIFNvdXJjZUNvZGUgPSB7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIGxpbmVzOiBzdHJpbmdbXTtcbiAgaW1wb3J0S2V5czogc3RyaW5nW107XG59O1xuZXhwb3J0IGNsYXNzIFRlbXBsYXRlX19nZW5lcmF0ZWQgZXh0ZW5kcyBUZW1wbGF0ZSB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKFwiZ2VuZXJhdGVkXCIpO1xuICB9XG5cbiAgZ2V0VGFyZ2V0QW5kUGF0aCgpIHtcbiAgICBjb25zdCB7IGRpciB9ID0gU29uYW11LmNvbmZpZy5hcGk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRhcmdldDogYCR7ZGlyfS9zcmMvYXBwbGljYXRpb25gLFxuICAgICAgcGF0aDogYHNvbmFtdS5nZW5lcmF0ZWQudHNgLFxuICAgIH07XG4gIH1cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IGVudGl0eUlkcyA9IEVudGl0eU1hbmFnZXIuZ2V0QWxsSWRzKCk7XG4gICAgY29uc3QgZW50aXRpZXMgPSBlbnRpdHlJZHMubWFwKChpZCkgPT4gRW50aXR5TWFuYWdlci5nZXQoaWQpKTtcblxuICAgIC8vIOyghOyytCBTb3VyY2VDb2RlIOyDneyEsVxuICAgIGNvbnN0IHNvdXJjZUNvZGVzID0gZW50aXRpZXMuZmxhdE1hcCgoZW50aXR5KSA9PiB7XG4gICAgICByZXR1cm4gW1xuICAgICAgICB0aGlzLmdldEVudW1zU291cmNlQ29kZShlbnRpdHkpLFxuICAgICAgICB0aGlzLmdldEJhc2VTY2hlbWFTb3VyY2VDb2RlKGVudGl0eSksXG4gICAgICAgIHRoaXMuZ2V0QmFzZUxpc3RQYXJhbXNTb3VyY2VDb2RlKGVudGl0eSksXG4gICAgICAgIHRoaXMuZ2V0U3Vic2V0U291cmNlQ29kZShlbnRpdHkpLFxuICAgICAgXS5maWx0ZXIobm9uTnVsbGFibGUpO1xuICAgIH0pO1xuICAgIE5haXRlLnQoXCJUZW1wbGF0ZV9fZ2VuZXJhdGVkOnNvdXJjZUNvZGVzXCIsIHNvdXJjZUNvZGVzKTtcblxuICAgIC8vIFNvcnRcbiAgICBjb25zdCBMQUJFTF9LRVlfT1JERVIgPSBbXCJFbnVtc1wiLCBcIkJhc2VTY2hlbWFcIiwgXCJCYXNlTGlzdFBhcmFtc1wiLCBcIlN1YnNldHNcIiwgXCJTdWJzZXRRdWVyaWVzXCJdO1xuICAgIHNvdXJjZUNvZGVzLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgIGNvbnN0IFthS2V5XSA9IGEubGFiZWwuc3BsaXQoXCI6XCIpO1xuICAgICAgY29uc3QgW2JLZXldID0gYi5sYWJlbC5zcGxpdChcIjpcIik7XG4gICAgICBjb25zdCBhSW5kZXggPSBMQUJFTF9LRVlfT1JERVIuaW5kZXhPZihhS2V5KTtcbiAgICAgIGNvbnN0IGJJbmRleCA9IExBQkVMX0tFWV9PUkRFUi5pbmRleE9mKGJLZXkpO1xuICAgICAgaWYgKGFJbmRleCA+IGJJbmRleCkge1xuICAgICAgICByZXR1cm4gMTtcbiAgICAgIH0gZWxzZSBpZiAoYUluZGV4IDwgYkluZGV4KSB7XG4gICAgICAgIHJldHVybiAtMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiAwO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3Qgc291cmNlQ29kZSA9IHNvdXJjZUNvZGVzLnJlZHVjZShcbiAgICAgIChyZXN1bHQsIHRzKSA9PiB7XG4gICAgICAgIGlmICh0cyA9PT0gbnVsbCkge1xuICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBsaW5lczogWy4uLnJlc3VsdC5saW5lcywgYC8vICR7dHMubGFiZWx9YCwgLi4udHMubGluZXMsIFwiXCJdLFxuICAgICAgICAgIGltcG9ydEtleXM6IHVuaXF1ZShbLi4ucmVzdWx0LmltcG9ydEtleXMsIC4uLnRzLmltcG9ydEtleXNdLnNvcnQoKSksXG4gICAgICAgIH07XG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBsaW5lczogW10sXG4gICAgICAgIGltcG9ydEtleXM6IFtdLFxuICAgICAgfSBhcyBPbWl0PFNvdXJjZUNvZGUsIFwibGFiZWxcIj4sXG4gICAgKTtcblxuICAgIC8vIC50eXBlcy50c+ydmCDtg4DsnoXsnYQg7LC47KGw7ZWY64qUIOqyveyasCDsiJztmZjssLjsobAo7IOB7Zi47LC47KGwKeqwgCDrsJzsg53tlZjrr4DroZwg7YOA7J6F7J2EIOqwgOyguOyZgCDsnbjrnbzsnbgg7LKY66asXG4gICAgY29uc3QgYWxsVHlwZUtleXMgPSBlbnRpdGllcy5mbGF0TWFwKChlbnRpdHkpID0+IE9iamVjdC5rZXlzKGVudGl0eS50eXBlcykpO1xuICAgIGNvbnN0IGNkSW1wb3J0S2V5cyA9IHNvdXJjZUNvZGUuaW1wb3J0S2V5cy5maWx0ZXIoKGltcG9ydEtleSkgPT5cbiAgICAgIGFsbFR5cGVLZXlzLmluY2x1ZGVzKGltcG9ydEtleSksXG4gICAgKTtcbiAgICBpZiAoY2RJbXBvcnRLZXlzLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGN1c3RvbVNjYWxhckxpbmVzID0gY2RJbXBvcnRLZXlzLmZsYXRNYXAoKGltcG9ydEtleSkgPT4ge1xuICAgICAgICBjb25zdCBlbnRpdHkgPSBlbnRpdGllcy5maW5kKChlbnRpdHkpID0+IGVudGl0eS50eXBlc1tpbXBvcnRLZXldKTtcbiAgICAgICAgaWYgKCFlbnRpdHkpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFpvZFR5cGUgbm90IGZvdW5kICR7aW1wb3J0S2V5fWApO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHpvZFR5cGUgPSBlbnRpdHkudHlwZXNbaW1wb3J0S2V5XTtcbiAgICAgICAgYXNzZXJ0KHpvZFR5cGUpO1xuXG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgYC8vIEN1c3RvbVNjYWxhcjogJHtpbXBvcnRLZXl9YCxcbiAgICAgICAgICBgY29uc3QgJHtpbXBvcnRLZXl9ID0gJHt6b2RUeXBlVG9ab2RDb2RlKHpvZFR5cGUpfTtgLFxuICAgICAgICAgIGB0eXBlICR7aW1wb3J0S2V5fSA9IHouaW5mZXI8dHlwZW9mICR7aW1wb3J0S2V5fT5gLFxuICAgICAgICAgIFwiXCIsXG4gICAgICAgIF07XG4gICAgICB9KTtcbiAgICAgIHNvdXJjZUNvZGUubGluZXMgPSBbLi4uY3VzdG9tU2NhbGFyTGluZXMsIC4uLnNvdXJjZUNvZGUubGluZXNdO1xuICAgICAgc291cmNlQ29kZS5pbXBvcnRLZXlzID0gc291cmNlQ29kZS5pbXBvcnRLZXlzLmZpbHRlcihcbiAgICAgICAgKGltcG9ydEtleSkgPT4gIWNkSW1wb3J0S2V5cy5pbmNsdWRlcyhpbXBvcnRLZXkpLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCBib2R5ID0gc291cmNlQ29kZS5saW5lcy5qb2luKFwiXFxuXCIpO1xuICAgIE5haXRlLnQoXCJUZW1wbGF0ZV9fZ2VuZXJhdGVkOmJvZHlcIiwgYm9keSk7XG5cbiAgICAvLyBpbXBvcnRcbiAgICAvLyBzb3VyY2VDb2RlLmltcG9ydEtleXPsl5Ag64K07J6lIO2DgOyeheydmCDsiqTtgqTrp4jqsIAg7J6I7Jy866m0IHNvbmFtdSBpbXBvcnTsl5Ag7LaU6rCAXG4gICAgY29uc3QgYnVpbHRJblNjaGVtYU5hbWVzID0gT2JqZWN0LnZhbHVlcyhCVUlMVF9JTl9UWVBFUykubWFwKFxuICAgICAgKGluZm8pID0+IGluZm8uc2NoZW1hTmFtZSBhcyBzdHJpbmcsXG4gICAgKTtcbiAgICBjb25zdCBidWlsdEluU2NoZW1hcyA9IHNvdXJjZUNvZGUuaW1wb3J0S2V5cy5maWx0ZXIoKGtleSkgPT4gYnVpbHRJblNjaGVtYU5hbWVzLmluY2x1ZGVzKGtleSkpO1xuICAgIGNvbnN0IHNvbmFtdUltcG9ydHMgPSBbXG4gICAgICBcInpBcnJheWFibGVcIixcbiAgICAgIFwiU1FMRGF0ZVRpbWVTdHJpbmdcIixcbiAgICAgIFwiU3Vic2V0UXVlcnlcIixcbiAgICAgIFwiU29uYW11UXVlcnlNb2RlXCIsXG4gICAgICBcIkFwcGx5U29uYW11RmlsdGVyXCIsXG4gICAgICAuLi5idWlsdEluU2NoZW1hcyxcbiAgICBdLmZpbHRlcigobW9kKSA9PiBib2R5LmluY2x1ZGVzKG1vZCkpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnRoaXMuZ2V0VGFyZ2V0QW5kUGF0aCgpLFxuICAgICAgYm9keSxcbiAgICAgIGltcG9ydEtleXM6IHNvdXJjZUNvZGUuaW1wb3J0S2V5cyxcbiAgICAgIGN1c3RvbUhlYWRlcnM6IFtcbiAgICAgICAgXCIvKiogYmlvbWUtaWdub3JlLWFsbCBsaW50OiBnZW5lcmF0ZWTripQg66y07IucICovXCIsXG4gICAgICAgIFwiLyoqIGJpb21lLWlnbm9yZS1hbGwgYXNzaXN0OiBnZW5lcmF0ZWTripQg66y07IucICovXCIsXG4gICAgICAgIFwiLyoqIGJpb21lLWlnbm9yZS1hbGwgZm9ybWF0OiBnZW5lcmF0ZWTripQg66y07IucICovXCIsXG4gICAgICAgIFwiXCIsXG4gICAgICAgIGBpbXBvcnQgeyB6IH0gZnJvbSAnem9kJztgLFxuICAgICAgICBgaW1wb3J0IHsgJHtzb25hbXVJbXBvcnRzLmpvaW4oXCIsXCIpfSB9IGZyb20gXCJzb25hbXVcIjtgLFxuICAgICAgXSxcbiAgICB9O1xuICB9XG5cbiAgZ2V0RW51bXNTb3VyY2VDb2RlKGVudGl0eTogRW50aXR5KTogU291cmNlQ29kZSB8IG51bGwge1xuICAgIGlmIChPYmplY3Qua2V5cyhlbnRpdHkuZW51bUxhYmVscykubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIGxhYmVsOiBgRW51bXM6ICR7ZW50aXR5LmlkfWAsXG4gICAgICBsaW5lczogW1xuICAgICAgICAuLi5PYmplY3QuZW50cmllcyhlbnRpdHkuZW51bUxhYmVscylcbiAgICAgICAgICAuZmlsdGVyKChbXywgZW51bUxhYmVsXSkgPT4gT2JqZWN0LmtleXMoZW51bUxhYmVsKS5sZW5ndGggPiAwKVxuICAgICAgICAgIC5mbGF0TWFwKChbZW51bUlkLCBlbnVtTGFiZWxdKSA9PiBbXG4gICAgICAgICAgICBgZXhwb3J0IGNvbnN0ICR7ZW51bUlkfSA9IHouZW51bShbJHtPYmplY3Qua2V5cyhlbnVtTGFiZWwpLm1hcChcbiAgICAgICAgICAgICAgKGVsKSA9PiBgXCIke2VsfVwiYCxcbiAgICAgICAgICAgICl9XSkuZGVzY3JpYmUoXCIke2VudW1JZH1cIik7YCxcbiAgICAgICAgICAgIGBleHBvcnQgdHlwZSAke2VudW1JZH0gPSB6LmluZmVyPHR5cGVvZiAke2VudW1JZH0+O2AsXG4gICAgICAgICAgICBgZXhwb3J0IGNvbnN0ICR7ZW51bUlkfUxhYmVsID0gJHtKU09OLnN0cmluZ2lmeShlbnVtTGFiZWwpfTtgLFxuICAgICAgICAgIF0pLFxuICAgICAgXSxcbiAgICAgIGltcG9ydEtleXM6IFtdLFxuICAgIH07XG4gIH1cblxuICBnZXRCYXNlU2NoZW1hU291cmNlQ29kZShlbnRpdHk6IEVudGl0eSwgaW1wb3J0S2V5czogc3RyaW5nW10gPSBbXSk6IFNvdXJjZUNvZGUge1xuICAgIGNvbnN0IHNjaGVtYU5hbWUgPSBgJHtlbnRpdHkubmFtZXMubW9kdWxlfUJhc2VTY2hlbWFgO1xuICAgIGNvbnN0IHByb3BOb2RlOiBFbnRpdHlQcm9wTm9kZSA9IHtcbiAgICAgIG5vZGVUeXBlOiBcIm9iamVjdFwiLFxuICAgICAgY2hpbGRyZW46IGVudGl0eS5wcm9wcy5tYXAoKHByb3ApID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBub2RlVHlwZTogXCJwbGFpblwiLFxuICAgICAgICAgIHByb3AsXG4gICAgICAgIH07XG4gICAgICB9KSxcbiAgICB9O1xuXG4gICAgY29uc3Qgc2NoZW1hQm9keSA9ICgoKSA9PiB7XG4gICAgICBjb25zdCByZXN1bHQgPSBwcm9wTm9kZVRvWm9kVHlwZURlZihwcm9wTm9kZSwgaW1wb3J0S2V5cyk7XG4gICAgICBpZiAocmVzdWx0LmVuZHNXaXRoKFwiLFwiKSkge1xuICAgICAgICByZXR1cm4gcmVzdWx0LnNsaWNlKDAsIC0xKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9KSgpO1xuXG4gICAgLy8gZnVsbHRleHQgaW5kZXjsl5Ag7Y+s7ZWo65CcIOy7rOufvOuTpCDstpTstpxcbiAgICAvLyBUT0RPOiBHSU4vR2lTVCDsnbjrjbHsiqQg7IOd7ISx65CcIOy7rOufvCDstpTstpxcbiAgICBjb25zdCBmdWxsdGV4dENvbHVtbnM6IEVudGl0eUluZGV4W1wiY29sdW1uc1wiXVtdID0gW107XG5cbiAgICAvLyB2aXJ0dWFsIHByb3BzICh2aXJ0dWFsVHlwZTogXCJjb2RlXCIg65iQ64qUIHVuZGVmaW5lZOyduCDqsoPrp4wg7Y+s7ZWoKVxuICAgIGNvbnN0IHZpcnR1YWxQcm9wcyA9IGVudGl0eS5wcm9wc1xuICAgICAgLmZpbHRlcigocHJvcCkgPT4gaXNWaXJ0dWFsQ29kZVByb3AocHJvcCkpXG4gICAgICAubWFwKChwcm9wKSA9PiBwcm9wLm5hbWUpO1xuXG4gICAgLy8gcXVlcnkgdmlydHVhbCBwcm9wcyAodmlydHVhbFR5cGU6IFwicXVlcnlcIuyduCDqsoPrp4wg7Y+s7ZWoKVxuICAgIGNvbnN0IHZpcnR1YWxRdWVyeVByb3BzID0gZW50aXR5LnByb3BzXG4gICAgICAuZmlsdGVyKChwcm9wKSA9PiBpc1ZpcnR1YWxRdWVyeVByb3AocHJvcCkpXG4gICAgICAubWFwKChwcm9wKSA9PiBwcm9wLm5hbWUpO1xuXG4gICAgLyoqXG4gICAgICogaGFzRGVmYXVsdCBwcm9wc1xuICAgICAqIC0gbnVsbGFibGUg65iQ64qUIGRiRGVmYXVsdOqwgCDsnojripQg7Lus65+8IChpZCDtj6ztlagpXG4gICAgICogLSByZWxhdGlvbuydtCDslYTri4jqsbDrgpgsIHJlbGF0aW9u7J207Ja064+EIG51bGxhYmxl7J2066m0IO2PrO2VqFxuICAgICAqL1xuICAgIGNvbnN0IGhhc0RlZmF1bHRDb2x1bW5zID0gZW50aXR5LnByb3BzXG4gICAgICAuZmlsdGVyKFxuICAgICAgICAocHJvcCkgPT5cbiAgICAgICAgICAocHJvcC50eXBlICE9PSBcInJlbGF0aW9uXCIgfHwgcHJvcC5udWxsYWJsZSA9PT0gdHJ1ZSkgJiZcbiAgICAgICAgICAocHJvcC5udWxsYWJsZSA9PT0gdHJ1ZSB8fCAocHJvcC50eXBlICE9PSBcInJlbGF0aW9uXCIgJiYgcHJvcC5kYkRlZmF1bHQgIT09IHVuZGVmaW5lZCkpLFxuICAgICAgKVxuICAgICAgLm1hcCgocHJvcCkgPT4gKHByb3AudHlwZSA9PT0gXCJyZWxhdGlvblwiID8gYCR7cHJvcC5uYW1lfV9pZGAgOiBwcm9wLm5hbWUpKVxuICAgICAgLmNvbmNhdChcImlkXCIpO1xuXG4gICAgLyoqXG4gICAgICogaGFzVmVjdG9yIHByb3BzXG4gICAgICogLSB2ZWN0b3Ig7YOA7J6F7J24IOy7rOufvFxuICAgICAqL1xuICAgIGNvbnN0IGhhc1ZlY3RvckNvbHVtbnMgPSBlbnRpdHkucHJvcHNcbiAgICAgIC5maWx0ZXIoKHByb3ApID0+IHByb3AudHlwZSA9PT0gXCJ2ZWN0b3JcIiB8fCBwcm9wLnR5cGUgPT09IFwidmVjdG9yW11cIilcbiAgICAgIC5tYXAoKHByb3ApID0+IHByb3AubmFtZSk7XG5cbiAgICAvKipcbiAgICAgKiBnZW5lcmF0ZWQgcHJvcHNcbiAgICAgKiAtIGdlbmVyYXRlZCDsho3shLHsnbQg7J6I64qUIOy7rOufvCAoSU5TRVJUL1VQREFURSDsi5wg6rCSIOygnOqztSDrtojqsIApXG4gICAgICovXG4gICAgY29uc3QgZ2VuZXJhdGVkQ29sdW1ucyA9IGVudGl0eS5wcm9wc1xuICAgICAgLmZpbHRlcigocHJvcCkgPT4gcHJvcC50eXBlICE9PSBcInJlbGF0aW9uXCIgJiYgcHJvcC5nZW5lcmF0ZWQgIT09IHVuZGVmaW5lZClcbiAgICAgIC5tYXAoKHByb3ApID0+IHByb3AubmFtZSk7XG5cbiAgICBjb25zdCBoYXNNZXRhZGF0YSA9XG4gICAgICBmdWxsdGV4dENvbHVtbnMubGVuZ3RoID4gMCB8fFxuICAgICAgdmlydHVhbFByb3BzLmxlbmd0aCA+IDAgfHxcbiAgICAgIHZpcnR1YWxRdWVyeVByb3BzLmxlbmd0aCA+IDAgfHxcbiAgICAgIGhhc0RlZmF1bHRDb2x1bW5zLmxlbmd0aCA+IDAgfHxcbiAgICAgIGdlbmVyYXRlZENvbHVtbnMubGVuZ3RoID4gMCB8fFxuICAgICAgaGFzVmVjdG9yQ29sdW1ucy5sZW5ndGggPiAwO1xuXG4gICAgY29uc3QgbGluZXMgPSBbXG4gICAgICBgZXhwb3J0IGNvbnN0ICR7c2NoZW1hTmFtZX0gPSAke3NjaGVtYUJvZHl9O2AsXG4gICAgICBgZXhwb3J0IHR5cGUgJHtzY2hlbWFOYW1lfSA9IHouaW5mZXI8dHlwZW9mICR7c2NoZW1hTmFtZX0+YCArXG4gICAgICAgIChoYXNNZXRhZGF0YVxuICAgICAgICAgID8gYCAmIHske1xuICAgICAgICAgICAgICAoZnVsbHRleHRDb2x1bW5zLmxlbmd0aCA+IDBcbiAgICAgICAgICAgICAgICA/IGByZWFkb25seSBfX2Z1bGx0ZXh0X186IHJlYWRvbmx5IFske2Z1bGx0ZXh0Q29sdW1uc1xuICAgICAgICAgICAgICAgICAgICAubWFwKChjb2wpID0+IGBcIiR7Y29sfVwiYClcbiAgICAgICAgICAgICAgICAgICAgLmpvaW4oXCIsIFwiKX1dLGBcbiAgICAgICAgICAgICAgICA6IFwiXCIpICtcbiAgICAgICAgICAgICAgKHZpcnR1YWxQcm9wcy5sZW5ndGggPiAwXG4gICAgICAgICAgICAgICAgPyBgcmVhZG9ubHkgX192aXJ0dWFsX186IHJlYWRvbmx5IFske3ZpcnR1YWxQcm9wcy5tYXAoKHByb3ApID0+IGBcIiR7cHJvcH1cImApLmpvaW4oXCIsIFwiKX1dLGBcbiAgICAgICAgICAgICAgICA6IFwiXCIpICtcbiAgICAgICAgICAgICAgKHZpcnR1YWxRdWVyeVByb3BzLmxlbmd0aCA+IDBcbiAgICAgICAgICAgICAgICA/IGByZWFkb25seSBfX3ZpcnR1YWxfcXVlcnlfXzogcmVhZG9ubHkgWyR7dmlydHVhbFF1ZXJ5UHJvcHMubWFwKChwcm9wKSA9PiBgXCIke3Byb3B9XCJgKS5qb2luKFwiLCBcIil9XSxgXG4gICAgICAgICAgICAgICAgOiBcIlwiKSArXG4gICAgICAgICAgICAgIChoYXNEZWZhdWx0Q29sdW1ucy5sZW5ndGggPiAwXG4gICAgICAgICAgICAgICAgPyBgcmVhZG9ubHkgX19oYXNEZWZhdWx0X186IHJlYWRvbmx5IFske2hhc0RlZmF1bHRDb2x1bW5zXG4gICAgICAgICAgICAgICAgICAgIC5tYXAoKGNvbCkgPT4gYFwiJHtjb2x9XCJgKVxuICAgICAgICAgICAgICAgICAgICAuam9pbihcIiwgXCIpfV0sYFxuICAgICAgICAgICAgICAgIDogXCJcIikgK1xuICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgZ2VuZXJhdGVkQ29sdW1ucy5sZW5ndGggPiAwXG4gICAgICAgICAgICAgICAgICA/IGByZWFkb25seSBfX2dlbmVyYXRlZF9fOiByZWFkb25seSBbJHtnZW5lcmF0ZWRDb2x1bW5zXG4gICAgICAgICAgICAgICAgICAgICAgLm1hcCgoY29sKSA9PiBgXCIke2NvbH1cImApXG4gICAgICAgICAgICAgICAgICAgICAgLmpvaW4oXCIsIFwiKX1dLGBcbiAgICAgICAgICAgICAgICAgIDogXCJcIlxuICAgICAgICAgICAgICApICtcbiAgICAgICAgICAgICAgKGhhc1ZlY3RvckNvbHVtbnMubGVuZ3RoID4gMFxuICAgICAgICAgICAgICAgID8gYHJlYWRvbmx5IF9fdmVjdG9yX186IHJlYWRvbmx5IFske2hhc1ZlY3RvckNvbHVtbnNcbiAgICAgICAgICAgICAgICAgICAgLm1hcCgoY29sKSA9PiBgXCIke2NvbH1cImApXG4gICAgICAgICAgICAgICAgICAgIC5qb2luKFwiLCBcIil9XSxgXG4gICAgICAgICAgICAgICAgOiBcIlwiKVxuICAgICAgICAgICAgfX1gXG4gICAgICAgICAgOiBcIlwiKSArXG4gICAgICAgIFwiO1wiLFxuICAgIF07XG5cbiAgICByZXR1cm4ge1xuICAgICAgbGFiZWw6IGBCYXNlU2NoZW1hOiAke2VudGl0eS5pZH1gLFxuICAgICAgaW1wb3J0S2V5cyxcbiAgICAgIGxpbmVzLFxuICAgIH07XG4gIH1cblxuICBnZXRCYXNlTGlzdFBhcmFtc1NvdXJjZUNvZGUoZW50aXR5OiBFbnRpdHkpOiBTb3VyY2VDb2RlIHwgbnVsbCB7XG4gICAgLy8gUHJvcCDsl4bripQgTUTsnbgg6rK97JqwIOyDneyEsSDsoJzsmbhcbiAgICBpZiAoZW50aXR5LnByb3BzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfSBlbHNlIGlmIChlbnRpdHkucGFyZW50SWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3Qgc2NoZW1hTmFtZSA9IGAke2VudGl0eS5uYW1lcy5tb2R1bGV9QmFzZUxpc3RQYXJhbXNgO1xuXG4gICAgY29uc3QgZmlsdGVyUHJvcHMgPSBlbnRpdHkucHJvcHMuZmlsdGVyKChwcm9wKSA9PiBwcm9wLnRvRmlsdGVyID09PSB0cnVlKTtcblxuICAgIGNvbnN0IHByb3BOb2RlczogRW50aXR5UHJvcE5vZGVbXSA9IGZpbHRlclByb3BzLm1hcCgocHJvcCkgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbm9kZVR5cGU6IFwicGxhaW5cIiBhcyBjb25zdCxcbiAgICAgICAgcHJvcCxcbiAgICAgICAgY2hpbGRyZW46IFtdLFxuICAgICAgfTtcbiAgICB9KTtcblxuICAgIGNvbnN0IGltcG9ydEtleXM6IHN0cmluZ1tdID0gW107XG4gICAgY29uc3QgZmlsdGVyQm9keSA9IHByb3BOb2Rlc1xuICAgICAgLm1hcCgocHJvcE5vZGUpID0+IHByb3BOb2RlVG9ab2RUeXBlRGVmKHByb3BOb2RlLCBpbXBvcnRLZXlzKSlcbiAgICAgIC5qb2luKFwiXFxuXCIpO1xuXG4gICAgLy8gRmlsdGVyUXVlcnkg7YOA7J6F7J2EIOychO2VnCDsoJzsmbjtlaAgcHJvcHMg7LaU7LacICh2aXJ0dWFs66eMIOygnOyZuClcbiAgICBjb25zdCBleGNsdWRlZFByb3BzID0gZW50aXR5LnByb3BzLmZpbHRlcigocCkgPT4gcC50eXBlID09PSBcInZpcnR1YWxcIikubWFwKChwKSA9PiBwLm5hbWUpO1xuXG4gICAgLy8gbnVtZXJpYyDtg4DsnoXsnbggcHJvcHMg7LaU7LacXG4gICAgY29uc3QgbnVtZXJpY1Byb3BzID0gZW50aXR5LnByb3BzLmZpbHRlcigocCkgPT4gcC50eXBlID09PSBcIm51bWVyaWNcIik7XG5cbiAgICAvLyBBcHBseVNvbmFtdUZpbHRlciDtg4DsnoUg7J247J6QIOyDneyEsVxuICAgIGNvbnN0IGVudGl0eVR5cGUgPSBgJHtlbnRpdHkuaWR9QmFzZVNjaGVtYWA7XG4gICAgY29uc3QgbnVtZXJpY0tleXNVbmlvbiA9XG4gICAgICBudW1lcmljUHJvcHMubGVuZ3RoID4gMCA/IG51bWVyaWNQcm9wcy5tYXAoKHByb3ApID0+IGBcIiR7cHJvcC5uYW1lfVwiYCkuam9pbihcIiB8IFwiKSA6IFwibmV2ZXJcIjtcbiAgICBjb25zdCBvbWl0S2V5c1VuaW9uID1cbiAgICAgIGV4Y2x1ZGVkUHJvcHMubGVuZ3RoID4gMCA/IGV4Y2x1ZGVkUHJvcHMubWFwKChuKSA9PiBgXCIke259XCJgKS5qb2luKFwiIHwgXCIpIDogXCJuZXZlclwiO1xuXG4gICAgLy8gUEsg7YOA7J6F7JeQIOuUsOuluCBpZCBab2Qg7YOA7J6FIOqysOyglVxuICAgIGNvbnN0IHBrVHlwZSA9IGVudGl0eS5nZXRQa1R5cGUoKTtcbiAgICBjb25zdCBpZFpvZFR5cGUgPVxuICAgICAgcGtUeXBlID09PSBcInN0cmluZ1wiIHx8IHBrVHlwZSA9PT0gXCJ1dWlkXCJcbiAgICAgICAgPyBcInpBcnJheWFibGUoei5zdHJpbmcoKSlcIlxuICAgICAgICA6IFwiekFycmF5YWJsZSh6Lm51bWJlcigpLmludCgpLnBvc2l0aXZlKCkpXCI7XG5cbiAgICBjb25zdCBzY2hlbWFCb2R5ID0gYFxuei5vYmplY3Qoe1xuICBudW06IHoubnVtYmVyKCkuaW50KCkubm9ubmVnYXRpdmUoKSxcbiAgcGFnZTogei5udW1iZXIoKS5pbnQoKS5taW4oMSksXG4gIHNlYXJjaDogJHtlbnRpdHkuaWR9U2VhcmNoRmllbGQsXG4gIGtleXdvcmQ6IHouc3RyaW5nKCksXG4gIG9yZGVyQnk6ICR7ZW50aXR5LmlkfU9yZGVyQnksXG4gIHF1ZXJ5TW9kZTogU29uYW11UXVlcnlNb2RlLFxuICBpZDogJHtpZFpvZFR5cGV9LFxuICBzb25hbXVGaWx0ZXI6IHouY3VzdG9tPEFwcGx5U29uYW11RmlsdGVyPCR7ZW50aXR5VHlwZX0sICR7b21pdEtleXNVbmlvbn0sICR7bnVtZXJpY0tleXNVbmlvbn0+PigpLCR7ZmlsdGVyQm9keX1cbn0pLnBhcnRpYWwoKTtcbmAudHJpbSgpO1xuXG4gICAgY29uc3QgbGluZXMgPSBbXG4gICAgICBgZXhwb3J0IGNvbnN0ICR7c2NoZW1hTmFtZX0gPSAke3NjaGVtYUJvZHl9O2AsXG4gICAgICBgZXhwb3J0IHR5cGUgJHtzY2hlbWFOYW1lfSA9IHouaW5mZXI8dHlwZW9mICR7c2NoZW1hTmFtZX0+O2AsXG4gICAgXTtcblxuICAgIHJldHVybiB7XG4gICAgICBsYWJlbDogYEJhc2VMaXN0UGFyYW1zOiAke2VudGl0eS5pZH1gLFxuICAgICAgaW1wb3J0S2V5cyxcbiAgICAgIGxpbmVzLFxuICAgIH07XG4gIH1cblxuICBnZXRTdWJzZXRTb3VyY2VDb2RlKGVudGl0eTogRW50aXR5KTogU291cmNlQ29kZSB8IG51bGwge1xuICAgIGlmIChPYmplY3Qua2V5cyhlbnRpdHkuc3Vic2V0cykubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9IGVsc2UgaWYgKGVudGl0eS5wYXJlbnRJZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBzdWJzZXRLZXlzID0gT2JqZWN0LmtleXMoZW50aXR5LnN1YnNldHMpO1xuICAgIGNvbnN0IGltcG9ydEtleXM6IHN0cmluZ1tdID0gW107XG4gICAgY29uc3QgbGluZXM6IHN0cmluZ1tdID0gW1xuICAgICAgLi4uc3Vic2V0S2V5cy5mbGF0TWFwKChzdWJzZXRLZXkpID0+IHtcbiAgICAgICAgLy8g7ISc67iM7IWL7JeQ7IScIEZpZWxkRXhwcltdIOqwgOyguOyYtFxuICAgICAgICBjb25zdCBmaWVsZEV4cHJzID0gZW50aXR5LnN1YnNldHNbc3Vic2V0S2V5XTtcblxuICAgICAgICAvLyBGaWVsZEV4cHJbXeuhnCBFbnRpdHlQcm9wTm9kZVtdIOqwgOyguOyYtFxuICAgICAgICBjb25zdCBwcm9wTm9kZXMgPSBlbnRpdHkuZmllbGRFeHByc1RvUHJvcE5vZGVzKGZpZWxkRXhwcnMpO1xuICAgICAgICBjb25zdCBzY2hlbWFOYW1lID0gYCR7ZW50aXR5Lm5hbWVzLm1vZHVsZX1TdWJzZXQke3N1YnNldEtleX1gO1xuICAgICAgICBjb25zdCBwcm9wTm9kZTogRW50aXR5UHJvcE5vZGUgPSB7XG4gICAgICAgICAgbm9kZVR5cGU6IFwib2JqZWN0XCIsXG4gICAgICAgICAgY2hpbGRyZW46IHByb3BOb2RlcyxcbiAgICAgICAgfTtcblxuICAgICAgICAvLyBFbnRpdHlQcm9wTm9kZVtd66GcIFpvZFR5cGVEZWYoc3RyaW5nKeydhCDqsIDsoLjsmLRcbiAgICAgICAgY29uc3QgYm9keSA9IHByb3BOb2RlVG9ab2RUeXBlRGVmKHByb3BOb2RlLCBpbXBvcnRLZXlzKTtcblxuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgIGBleHBvcnQgY29uc3QgJHtzY2hlbWFOYW1lfSA9ICR7Ym9keS5yZXBsYWNlKC8sJC8sIFwiXCIpfTtgLFxuICAgICAgICAgIGBleHBvcnQgdHlwZSAke3NjaGVtYU5hbWV9ID0gei5pbmZlcjx0eXBlb2YgJHtzY2hlbWFOYW1lfT47YCxcbiAgICAgICAgXTtcbiAgICAgIH0pLFxuICAgICAgYGV4cG9ydCB0eXBlICR7ZW50aXR5Lm5hbWVzLm1vZHVsZX1TdWJzZXRNYXBwaW5nID0ge2AsXG4gICAgICAuLi5zdWJzZXRLZXlzLm1hcCgoc3Vic2V0S2V5KSA9PiBgICAke3N1YnNldEtleX06ICR7ZW50aXR5Lm5hbWVzLm1vZHVsZX1TdWJzZXQke3N1YnNldEtleX07YCksXG4gICAgICBcIn07XCIsXG4gICAgICBgZXhwb3J0IGNvbnN0ICR7ZW50aXR5Lm5hbWVzLm1vZHVsZX1TdWJzZXRLZXkgPSB6LmVudW0oWyR7c3Vic2V0S2V5c1xuICAgICAgICAubWFwKChrKSA9PiBgXCIke2t9XCJgKVxuICAgICAgICAuam9pbihcIixcIil9XSk7YCxcbiAgICAgIGBleHBvcnQgdHlwZSAke2VudGl0eS5uYW1lcy5tb2R1bGV9U3Vic2V0S2V5ID0gei5pbmZlcjx0eXBlb2YgJHtlbnRpdHkubmFtZXMubW9kdWxlfVN1YnNldEtleT47YCxcbiAgICAgIFwiXCIsXG4gICAgXTtcblxuICAgIHJldHVybiB7XG4gICAgICBsYWJlbDogYFN1YnNldHM6ICR7ZW50aXR5LmlkfWAsXG4gICAgICBsaW5lcyxcbiAgICAgIGltcG9ydEtleXM6IHVuaXF1ZShpbXBvcnRLZXlzKSxcbiAgICB9O1xuICB9XG59XG4iXSwibmFtZXMiOlsiYXNzZXJ0IiwidW5pcXVlIiwiU29uYW11IiwiRW50aXR5TWFuYWdlciIsIk5haXRlIiwiaXNWaXJ0dWFsQ29kZVByb3AiLCJpc1ZpcnR1YWxRdWVyeVByb3AiLCJub25OdWxsYWJsZSIsIlRlbXBsYXRlIiwiQlVJTFRfSU5fVFlQRVMiLCJwcm9wTm9kZVRvWm9kVHlwZURlZiIsInpvZFR5cGVUb1pvZENvZGUiLCJUZW1wbGF0ZV9fZ2VuZXJhdGVkIiwiZ2V0VGFyZ2V0QW5kUGF0aCIsImRpciIsImNvbmZpZyIsImFwaSIsInRhcmdldCIsInBhdGgiLCJyZW5kZXIiLCJlbnRpdHlJZHMiLCJnZXRBbGxJZHMiLCJlbnRpdGllcyIsIm1hcCIsImlkIiwiZ2V0Iiwic291cmNlQ29kZXMiLCJmbGF0TWFwIiwiZW50aXR5IiwiZ2V0RW51bXNTb3VyY2VDb2RlIiwiZ2V0QmFzZVNjaGVtYVNvdXJjZUNvZGUiLCJnZXRCYXNlTGlzdFBhcmFtc1NvdXJjZUNvZGUiLCJnZXRTdWJzZXRTb3VyY2VDb2RlIiwiZmlsdGVyIiwidCIsIkxBQkVMX0tFWV9PUkRFUiIsInNvcnQiLCJhIiwiYiIsImFLZXkiLCJsYWJlbCIsInNwbGl0IiwiYktleSIsImFJbmRleCIsImluZGV4T2YiLCJiSW5kZXgiLCJzb3VyY2VDb2RlIiwicmVkdWNlIiwicmVzdWx0IiwidHMiLCJsaW5lcyIsImltcG9ydEtleXMiLCJhbGxUeXBlS2V5cyIsIk9iamVjdCIsImtleXMiLCJ0eXBlcyIsImNkSW1wb3J0S2V5cyIsImltcG9ydEtleSIsImluY2x1ZGVzIiwibGVuZ3RoIiwiY3VzdG9tU2NhbGFyTGluZXMiLCJmaW5kIiwiRXJyb3IiLCJ6b2RUeXBlIiwiYm9keSIsImpvaW4iLCJidWlsdEluU2NoZW1hTmFtZXMiLCJ2YWx1ZXMiLCJpbmZvIiwic2NoZW1hTmFtZSIsImJ1aWx0SW5TY2hlbWFzIiwia2V5Iiwic29uYW11SW1wb3J0cyIsIm1vZCIsImN1c3RvbUhlYWRlcnMiLCJlbnVtTGFiZWxzIiwiZW50cmllcyIsIl8iLCJlbnVtTGFiZWwiLCJlbnVtSWQiLCJlbCIsIkpTT04iLCJzdHJpbmdpZnkiLCJuYW1lcyIsIm1vZHVsZSIsInByb3BOb2RlIiwibm9kZVR5cGUiLCJjaGlsZHJlbiIsInByb3BzIiwicHJvcCIsInNjaGVtYUJvZHkiLCJlbmRzV2l0aCIsInNsaWNlIiwiZnVsbHRleHRDb2x1bW5zIiwidmlydHVhbFByb3BzIiwibmFtZSIsInZpcnR1YWxRdWVyeVByb3BzIiwiaGFzRGVmYXVsdENvbHVtbnMiLCJ0eXBlIiwibnVsbGFibGUiLCJkYkRlZmF1bHQiLCJ1bmRlZmluZWQiLCJjb25jYXQiLCJoYXNWZWN0b3JDb2x1bW5zIiwiZ2VuZXJhdGVkQ29sdW1ucyIsImdlbmVyYXRlZCIsImhhc01ldGFkYXRhIiwiY29sIiwicGFyZW50SWQiLCJmaWx0ZXJQcm9wcyIsInRvRmlsdGVyIiwicHJvcE5vZGVzIiwiZmlsdGVyQm9keSIsImV4Y2x1ZGVkUHJvcHMiLCJwIiwibnVtZXJpY1Byb3BzIiwiZW50aXR5VHlwZSIsIm51bWVyaWNLZXlzVW5pb24iLCJvbWl0S2V5c1VuaW9uIiwibiIsInBrVHlwZSIsImdldFBrVHlwZSIsImlkWm9kVHlwZSIsInRyaW0iLCJzdWJzZXRzIiwic3Vic2V0S2V5cyIsInN1YnNldEtleSIsImZpZWxkRXhwcnMiLCJmaWVsZEV4cHJzVG9Qcm9wTm9kZXMiLCJyZXBsYWNlIiwiayJdLCJtYXBwaW5ncyI6IkFBQUEsT0FBT0EsWUFBWSxT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
|
|
288
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90ZW1wbGF0ZS9pbXBsZW1lbnRhdGlvbnMvZ2VuZXJhdGVkLnRlbXBsYXRlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NlcnQgZnJvbSBcImFzc2VydFwiO1xuaW1wb3J0IHsgdW5pcXVlIH0gZnJvbSBcInJhZGFzaGlcIjtcbmltcG9ydCB7IFNvbmFtdSB9IGZyb20gXCIuLi8uLi9hcGlcIjtcbmltcG9ydCB0eXBlIHsgRW50aXR5IH0gZnJvbSBcIi4uLy4uL2VudGl0eS9lbnRpdHlcIjtcbmltcG9ydCB7IEVudGl0eU1hbmFnZXIgfSBmcm9tIFwiLi4vLi4vZW50aXR5L2VudGl0eS1tYW5hZ2VyXCI7XG5pbXBvcnQgeyBOYWl0ZSB9IGZyb20gXCIuLi8uLi9uYWl0ZS9uYWl0ZVwiO1xuaW1wb3J0IHtcbiAgdHlwZSBFbnRpdHlJbmRleCxcbiAgdHlwZSBFbnRpdHlQcm9wTm9kZSxcbiAgaXNWaXJ0dWFsQ29kZVByb3AsXG4gIGlzVmlydHVhbFF1ZXJ5UHJvcCxcbn0gZnJvbSBcIi4uLy4uL3R5cGVzL3R5cGVzXCI7XG5pbXBvcnQgeyBub25OdWxsYWJsZSB9IGZyb20gXCIuLi8uLi91dGlscy91dGlsc1wiO1xuaW1wb3J0IHsgVGVtcGxhdGUgfSBmcm9tIFwiLi4vdGVtcGxhdGVcIjtcbmltcG9ydCB7IEJVSUxUX0lOX1RZUEVTLCBwcm9wTm9kZVRvWm9kVHlwZURlZiwgem9kVHlwZVRvWm9kQ29kZSB9IGZyb20gXCIuLi96b2QtY29udmVydGVyXCI7XG5cbmV4cG9ydCB0eXBlIFNvdXJjZUNvZGUgPSB7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIGxpbmVzOiBzdHJpbmdbXTtcbiAgaW1wb3J0S2V5czogc3RyaW5nW107XG59O1xuZXhwb3J0IGNsYXNzIFRlbXBsYXRlX19nZW5lcmF0ZWQgZXh0ZW5kcyBUZW1wbGF0ZSB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKFwiZ2VuZXJhdGVkXCIpO1xuICB9XG5cbiAgZ2V0VGFyZ2V0QW5kUGF0aCgpIHtcbiAgICBjb25zdCB7IGRpciB9ID0gU29uYW11LmNvbmZpZy5hcGk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRhcmdldDogYCR7ZGlyfS9zcmMvYXBwbGljYXRpb25gLFxuICAgICAgcGF0aDogYHNvbmFtdS5nZW5lcmF0ZWQudHNgLFxuICAgIH07XG4gIH1cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IGVudGl0eUlkcyA9IEVudGl0eU1hbmFnZXIuZ2V0QWxsSWRzKCk7XG4gICAgY29uc3QgZW50aXRpZXMgPSBlbnRpdHlJZHMubWFwKChpZCkgPT4gRW50aXR5TWFuYWdlci5nZXQoaWQpKTtcblxuICAgIC8vIOyghOyytCBTb3VyY2VDb2RlIOyDneyEsVxuICAgIGNvbnN0IHNvdXJjZUNvZGVzID0gZW50aXRpZXMuZmxhdE1hcCgoZW50aXR5KSA9PiB7XG4gICAgICByZXR1cm4gW1xuICAgICAgICB0aGlzLmdldEVudW1zU291cmNlQ29kZShlbnRpdHkpLFxuICAgICAgICB0aGlzLmdldEJhc2VTY2hlbWFTb3VyY2VDb2RlKGVudGl0eSksXG4gICAgICAgIHRoaXMuZ2V0QmFzZUxpc3RQYXJhbXNTb3VyY2VDb2RlKGVudGl0eSksXG4gICAgICAgIHRoaXMuZ2V0U3Vic2V0U291cmNlQ29kZShlbnRpdHkpLFxuICAgICAgXS5maWx0ZXIobm9uTnVsbGFibGUpO1xuICAgIH0pO1xuICAgIE5haXRlLnQoXCJUZW1wbGF0ZV9fZ2VuZXJhdGVkOnNvdXJjZUNvZGVzXCIsIHNvdXJjZUNvZGVzKTtcblxuICAgIC8vIFNvcnRcbiAgICBjb25zdCBMQUJFTF9LRVlfT1JERVIgPSBbXCJFbnVtc1wiLCBcIkJhc2VTY2hlbWFcIiwgXCJCYXNlTGlzdFBhcmFtc1wiLCBcIlN1YnNldHNcIiwgXCJTdWJzZXRRdWVyaWVzXCJdO1xuICAgIHNvdXJjZUNvZGVzLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgIGNvbnN0IFthS2V5XSA9IGEubGFiZWwuc3BsaXQoXCI6XCIpO1xuICAgICAgY29uc3QgW2JLZXldID0gYi5sYWJlbC5zcGxpdChcIjpcIik7XG4gICAgICBjb25zdCBhSW5kZXggPSBMQUJFTF9LRVlfT1JERVIuaW5kZXhPZihhS2V5KTtcbiAgICAgIGNvbnN0IGJJbmRleCA9IExBQkVMX0tFWV9PUkRFUi5pbmRleE9mKGJLZXkpO1xuICAgICAgaWYgKGFJbmRleCA+IGJJbmRleCkge1xuICAgICAgICByZXR1cm4gMTtcbiAgICAgIH0gZWxzZSBpZiAoYUluZGV4IDwgYkluZGV4KSB7XG4gICAgICAgIHJldHVybiAtMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiAwO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3Qgc291cmNlQ29kZSA9IHNvdXJjZUNvZGVzLnJlZHVjZShcbiAgICAgIChyZXN1bHQsIHRzKSA9PiB7XG4gICAgICAgIGlmICh0cyA9PT0gbnVsbCkge1xuICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBsaW5lczogWy4uLnJlc3VsdC5saW5lcywgYC8vICR7dHMubGFiZWx9YCwgLi4udHMubGluZXMsIFwiXCJdLFxuICAgICAgICAgIGltcG9ydEtleXM6IHVuaXF1ZShbLi4ucmVzdWx0LmltcG9ydEtleXMsIC4uLnRzLmltcG9ydEtleXNdLnNvcnQoKSksXG4gICAgICAgIH07XG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBsaW5lczogW10sXG4gICAgICAgIGltcG9ydEtleXM6IFtdLFxuICAgICAgfSBhcyBPbWl0PFNvdXJjZUNvZGUsIFwibGFiZWxcIj4sXG4gICAgKTtcblxuICAgIC8vIC50eXBlcy50c+ydmCDtg4DsnoXsnYQg7LC47KGw7ZWY64qUIOqyveyasCDsiJztmZjssLjsobAo7IOB7Zi47LC47KGwKeqwgCDrsJzsg53tlZjrr4DroZwg7YOA7J6F7J2EIOqwgOyguOyZgCDsnbjrnbzsnbgg7LKY66asXG4gICAgY29uc3QgYWxsVHlwZUtleXMgPSBlbnRpdGllcy5mbGF0TWFwKChlbnRpdHkpID0+IE9iamVjdC5rZXlzKGVudGl0eS50eXBlcykpO1xuICAgIGNvbnN0IGNkSW1wb3J0S2V5cyA9IHNvdXJjZUNvZGUuaW1wb3J0S2V5cy5maWx0ZXIoKGltcG9ydEtleSkgPT5cbiAgICAgIGFsbFR5cGVLZXlzLmluY2x1ZGVzKGltcG9ydEtleSksXG4gICAgKTtcbiAgICBpZiAoY2RJbXBvcnRLZXlzLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGN1c3RvbVNjYWxhckxpbmVzID0gY2RJbXBvcnRLZXlzLmZsYXRNYXAoKGltcG9ydEtleSkgPT4ge1xuICAgICAgICBjb25zdCBlbnRpdHkgPSBlbnRpdGllcy5maW5kKChlbnRpdHkpID0+IGVudGl0eS50eXBlc1tpbXBvcnRLZXldKTtcbiAgICAgICAgaWYgKCFlbnRpdHkpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFpvZFR5cGUgbm90IGZvdW5kICR7aW1wb3J0S2V5fWApO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHpvZFR5cGUgPSBlbnRpdHkudHlwZXNbaW1wb3J0S2V5XTtcbiAgICAgICAgYXNzZXJ0KHpvZFR5cGUpO1xuXG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgYC8vIEN1c3RvbVNjYWxhcjogJHtpbXBvcnRLZXl9YCxcbiAgICAgICAgICBgY29uc3QgJHtpbXBvcnRLZXl9ID0gJHt6b2RUeXBlVG9ab2RDb2RlKHpvZFR5cGUpfTtgLFxuICAgICAgICAgIGB0eXBlICR7aW1wb3J0S2V5fSA9IHouaW5mZXI8dHlwZW9mICR7aW1wb3J0S2V5fT5gLFxuICAgICAgICAgIFwiXCIsXG4gICAgICAgIF07XG4gICAgICB9KTtcbiAgICAgIHNvdXJjZUNvZGUubGluZXMgPSBbLi4uY3VzdG9tU2NhbGFyTGluZXMsIC4uLnNvdXJjZUNvZGUubGluZXNdO1xuICAgICAgc291cmNlQ29kZS5pbXBvcnRLZXlzID0gc291cmNlQ29kZS5pbXBvcnRLZXlzLmZpbHRlcihcbiAgICAgICAgKGltcG9ydEtleSkgPT4gIWNkSW1wb3J0S2V5cy5pbmNsdWRlcyhpbXBvcnRLZXkpLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCBib2R5ID0gc291cmNlQ29kZS5saW5lcy5qb2luKFwiXFxuXCIpO1xuICAgIE5haXRlLnQoXCJUZW1wbGF0ZV9fZ2VuZXJhdGVkOmJvZHlcIiwgYm9keSk7XG5cbiAgICAvLyBpbXBvcnRcbiAgICAvLyBzb3VyY2VDb2RlLmltcG9ydEtleXPsl5Ag64K07J6lIO2DgOyeheydmCDsiqTtgqTrp4jqsIAg7J6I7Jy866m0IHNvbmFtdSBpbXBvcnTsl5Ag7LaU6rCAXG4gICAgY29uc3QgYnVpbHRJblNjaGVtYU5hbWVzID0gT2JqZWN0LnZhbHVlcyhCVUlMVF9JTl9UWVBFUykubWFwKFxuICAgICAgKGluZm8pID0+IGluZm8uc2NoZW1hTmFtZSBhcyBzdHJpbmcsXG4gICAgKTtcbiAgICBjb25zdCBidWlsdEluU2NoZW1hcyA9IHNvdXJjZUNvZGUuaW1wb3J0S2V5cy5maWx0ZXIoKGtleSkgPT4gYnVpbHRJblNjaGVtYU5hbWVzLmluY2x1ZGVzKGtleSkpO1xuICAgIGNvbnN0IHNvbmFtdUltcG9ydHMgPSBbXG4gICAgICBcInpBcnJheWFibGVcIixcbiAgICAgIFwiU1FMRGF0ZVRpbWVTdHJpbmdcIixcbiAgICAgIFwiU3Vic2V0UXVlcnlcIixcbiAgICAgIFwiU29uYW11UXVlcnlNb2RlXCIsXG4gICAgICBcIkFwcGx5U29uYW11RmlsdGVyXCIsXG4gICAgICAuLi5idWlsdEluU2NoZW1hcyxcbiAgICBdLmZpbHRlcigobW9kKSA9PiBib2R5LmluY2x1ZGVzKG1vZCkpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnRoaXMuZ2V0VGFyZ2V0QW5kUGF0aCgpLFxuICAgICAgYm9keSxcbiAgICAgIGltcG9ydEtleXM6IHNvdXJjZUNvZGUuaW1wb3J0S2V5cyxcbiAgICAgIGN1c3RvbUhlYWRlcnM6IFtcbiAgICAgICAgXCIvKipcIixcbiAgICAgICAgXCIgKiBAZ2VuZXJhdGVkXCIsXG4gICAgICAgIFwiICog7KeB7KCRIOyImOygle2VmOyngCDrp4jshLjsmpQuXCIsXG4gICAgICAgIFwiICovXCIsXG4gICAgICAgIFwiLyoqIGJpb21lLWlnbm9yZS1hbGwgbGludDogZ2VuZXJhdGVk64qUIOustOyLnCAqL1wiLFxuICAgICAgICBcIi8qKiBiaW9tZS1pZ25vcmUtYWxsIGFzc2lzdDogZ2VuZXJhdGVk64qUIOustOyLnCAqL1wiLFxuICAgICAgICBcIi8qKiBiaW9tZS1pZ25vcmUtYWxsIGZvcm1hdDogZ2VuZXJhdGVk64qUIOustOyLnCAqL1wiLFxuICAgICAgICBcIlwiLFxuICAgICAgICBgaW1wb3J0IHsgeiB9IGZyb20gJ3pvZCc7YCxcbiAgICAgICAgYGltcG9ydCB7ICR7c29uYW11SW1wb3J0cy5qb2luKFwiLFwiKX0gfSBmcm9tIFwic29uYW11XCI7YCxcbiAgICAgIF0sXG4gICAgfTtcbiAgfVxuXG4gIGdldEVudW1zU291cmNlQ29kZShlbnRpdHk6IEVudGl0eSk6IFNvdXJjZUNvZGUgfCBudWxsIHtcbiAgICBpZiAoT2JqZWN0LmtleXMoZW50aXR5LmVudW1MYWJlbHMpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBsYWJlbDogYEVudW1zOiAke2VudGl0eS5pZH1gLFxuICAgICAgbGluZXM6IFtcbiAgICAgICAgLi4uT2JqZWN0LmVudHJpZXMoZW50aXR5LmVudW1MYWJlbHMpXG4gICAgICAgICAgLmZpbHRlcigoW18sIGVudW1MYWJlbF0pID0+IE9iamVjdC5rZXlzKGVudW1MYWJlbCkubGVuZ3RoID4gMClcbiAgICAgICAgICAuZmxhdE1hcCgoW2VudW1JZCwgZW51bUxhYmVsXSkgPT4gW1xuICAgICAgICAgICAgYGV4cG9ydCBjb25zdCAke2VudW1JZH0gPSB6LmVudW0oWyR7T2JqZWN0LmtleXMoZW51bUxhYmVsKS5tYXAoXG4gICAgICAgICAgICAgIChlbCkgPT4gYFwiJHtlbH1cImAsXG4gICAgICAgICAgICApfV0pLmRlc2NyaWJlKFwiJHtlbnVtSWR9XCIpO2AsXG4gICAgICAgICAgICBgZXhwb3J0IHR5cGUgJHtlbnVtSWR9ID0gei5pbmZlcjx0eXBlb2YgJHtlbnVtSWR9PjtgLFxuICAgICAgICAgICAgYGV4cG9ydCBjb25zdCAke2VudW1JZH1MYWJlbCA9ICR7SlNPTi5zdHJpbmdpZnkoZW51bUxhYmVsKX07YCxcbiAgICAgICAgICBdKSxcbiAgICAgIF0sXG4gICAgICBpbXBvcnRLZXlzOiBbXSxcbiAgICB9O1xuICB9XG5cbiAgZ2V0QmFzZVNjaGVtYVNvdXJjZUNvZGUoZW50aXR5OiBFbnRpdHksIGltcG9ydEtleXM6IHN0cmluZ1tdID0gW10pOiBTb3VyY2VDb2RlIHtcbiAgICBjb25zdCBzY2hlbWFOYW1lID0gYCR7ZW50aXR5Lm5hbWVzLm1vZHVsZX1CYXNlU2NoZW1hYDtcbiAgICBjb25zdCBwcm9wTm9kZTogRW50aXR5UHJvcE5vZGUgPSB7XG4gICAgICBub2RlVHlwZTogXCJvYmplY3RcIixcbiAgICAgIGNoaWxkcmVuOiBlbnRpdHkucHJvcHMubWFwKChwcm9wKSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbm9kZVR5cGU6IFwicGxhaW5cIixcbiAgICAgICAgICBwcm9wLFxuICAgICAgICB9O1xuICAgICAgfSksXG4gICAgfTtcblxuICAgIGNvbnN0IHNjaGVtYUJvZHkgPSAoKCkgPT4ge1xuICAgICAgY29uc3QgcmVzdWx0ID0gcHJvcE5vZGVUb1pvZFR5cGVEZWYocHJvcE5vZGUsIGltcG9ydEtleXMpO1xuICAgICAgaWYgKHJlc3VsdC5lbmRzV2l0aChcIixcIikpIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdC5zbGljZSgwLCAtMSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSkoKTtcblxuICAgIC8vIGZ1bGx0ZXh0IGluZGV47JeQIO2PrO2VqOuQnCDsu6zrn7zrk6Qg7LaU7LacXG4gICAgLy8gVE9ETzogR0lOL0dpU1Qg7J24642x7IqkIOyDneyEseuQnCDsu6zrn7wg7LaU7LacXG4gICAgY29uc3QgZnVsbHRleHRDb2x1bW5zOiBFbnRpdHlJbmRleFtcImNvbHVtbnNcIl1bXSA9IFtdO1xuXG4gICAgLy8gdmlydHVhbCBwcm9wcyAodmlydHVhbFR5cGU6IFwiY29kZVwiIOuYkOuKlCB1bmRlZmluZWTsnbgg6rKD66eMIO2PrO2VqClcbiAgICBjb25zdCB2aXJ0dWFsUHJvcHMgPSBlbnRpdHkucHJvcHNcbiAgICAgIC5maWx0ZXIoKHByb3ApID0+IGlzVmlydHVhbENvZGVQcm9wKHByb3ApKVxuICAgICAgLm1hcCgocHJvcCkgPT4gcHJvcC5uYW1lKTtcblxuICAgIC8vIHF1ZXJ5IHZpcnR1YWwgcHJvcHMgKHZpcnR1YWxUeXBlOiBcInF1ZXJ5XCLsnbgg6rKD66eMIO2PrO2VqClcbiAgICBjb25zdCB2aXJ0dWFsUXVlcnlQcm9wcyA9IGVudGl0eS5wcm9wc1xuICAgICAgLmZpbHRlcigocHJvcCkgPT4gaXNWaXJ0dWFsUXVlcnlQcm9wKHByb3ApKVxuICAgICAgLm1hcCgocHJvcCkgPT4gcHJvcC5uYW1lKTtcblxuICAgIC8qKlxuICAgICAqIGhhc0RlZmF1bHQgcHJvcHNcbiAgICAgKiAtIG51bGxhYmxlIOuYkOuKlCBkYkRlZmF1bHTqsIAg7J6I64qUIOy7rOufvCAoaWQg7Y+s7ZWoKVxuICAgICAqIC0gcmVsYXRpb27snbQg7JWE64uI6rGw64KYLCByZWxhdGlvbuydtOyWtOuPhCBudWxsYWJsZeydtOuptCDtj6ztlahcbiAgICAgKi9cbiAgICBjb25zdCBoYXNEZWZhdWx0Q29sdW1ucyA9IGVudGl0eS5wcm9wc1xuICAgICAgLmZpbHRlcihcbiAgICAgICAgKHByb3ApID0+XG4gICAgICAgICAgKHByb3AudHlwZSAhPT0gXCJyZWxhdGlvblwiIHx8IHByb3AubnVsbGFibGUgPT09IHRydWUpICYmXG4gICAgICAgICAgKHByb3AubnVsbGFibGUgPT09IHRydWUgfHwgKHByb3AudHlwZSAhPT0gXCJyZWxhdGlvblwiICYmIHByb3AuZGJEZWZhdWx0ICE9PSB1bmRlZmluZWQpKSxcbiAgICAgIClcbiAgICAgIC5tYXAoKHByb3ApID0+IChwcm9wLnR5cGUgPT09IFwicmVsYXRpb25cIiA/IGAke3Byb3AubmFtZX1faWRgIDogcHJvcC5uYW1lKSlcbiAgICAgIC5jb25jYXQoXCJpZFwiKTtcblxuICAgIC8qKlxuICAgICAqIGhhc1ZlY3RvciBwcm9wc1xuICAgICAqIC0gdmVjdG9yIO2DgOyeheyduCDsu6zrn7xcbiAgICAgKi9cbiAgICBjb25zdCBoYXNWZWN0b3JDb2x1bW5zID0gZW50aXR5LnByb3BzXG4gICAgICAuZmlsdGVyKChwcm9wKSA9PiBwcm9wLnR5cGUgPT09IFwidmVjdG9yXCIgfHwgcHJvcC50eXBlID09PSBcInZlY3RvcltdXCIpXG4gICAgICAubWFwKChwcm9wKSA9PiBwcm9wLm5hbWUpO1xuXG4gICAgLyoqXG4gICAgICogZ2VuZXJhdGVkIHByb3BzXG4gICAgICogLSBnZW5lcmF0ZWQg7IaN7ISx7J20IOyeiOuKlCDsu6zrn7wgKElOU0VSVC9VUERBVEUg7IucIOqwkiDsoJzqs7Ug67aI6rCAKVxuICAgICAqL1xuICAgIGNvbnN0IGdlbmVyYXRlZENvbHVtbnMgPSBlbnRpdHkucHJvcHNcbiAgICAgIC5maWx0ZXIoKHByb3ApID0+IHByb3AudHlwZSAhPT0gXCJyZWxhdGlvblwiICYmIHByb3AuZ2VuZXJhdGVkICE9PSB1bmRlZmluZWQpXG4gICAgICAubWFwKChwcm9wKSA9PiBwcm9wLm5hbWUpO1xuXG4gICAgY29uc3QgaGFzTWV0YWRhdGEgPVxuICAgICAgZnVsbHRleHRDb2x1bW5zLmxlbmd0aCA+IDAgfHxcbiAgICAgIHZpcnR1YWxQcm9wcy5sZW5ndGggPiAwIHx8XG4gICAgICB2aXJ0dWFsUXVlcnlQcm9wcy5sZW5ndGggPiAwIHx8XG4gICAgICBoYXNEZWZhdWx0Q29sdW1ucy5sZW5ndGggPiAwIHx8XG4gICAgICBnZW5lcmF0ZWRDb2x1bW5zLmxlbmd0aCA+IDAgfHxcbiAgICAgIGhhc1ZlY3RvckNvbHVtbnMubGVuZ3RoID4gMDtcblxuICAgIGNvbnN0IGxpbmVzID0gW1xuICAgICAgYGV4cG9ydCBjb25zdCAke3NjaGVtYU5hbWV9ID0gJHtzY2hlbWFCb2R5fTtgLFxuICAgICAgYGV4cG9ydCB0eXBlICR7c2NoZW1hTmFtZX0gPSB6LmluZmVyPHR5cGVvZiAke3NjaGVtYU5hbWV9PmAgK1xuICAgICAgICAoaGFzTWV0YWRhdGFcbiAgICAgICAgICA/IGAgJiB7JHtcbiAgICAgICAgICAgICAgKGZ1bGx0ZXh0Q29sdW1ucy5sZW5ndGggPiAwXG4gICAgICAgICAgICAgICAgPyBgcmVhZG9ubHkgX19mdWxsdGV4dF9fOiByZWFkb25seSBbJHtmdWxsdGV4dENvbHVtbnNcbiAgICAgICAgICAgICAgICAgICAgLm1hcCgoY29sKSA9PiBgXCIke2NvbH1cImApXG4gICAgICAgICAgICAgICAgICAgIC5qb2luKFwiLCBcIil9XSxgXG4gICAgICAgICAgICAgICAgOiBcIlwiKSArXG4gICAgICAgICAgICAgICh2aXJ0dWFsUHJvcHMubGVuZ3RoID4gMFxuICAgICAgICAgICAgICAgID8gYHJlYWRvbmx5IF9fdmlydHVhbF9fOiByZWFkb25seSBbJHt2aXJ0dWFsUHJvcHMubWFwKChwcm9wKSA9PiBgXCIke3Byb3B9XCJgKS5qb2luKFwiLCBcIil9XSxgXG4gICAgICAgICAgICAgICAgOiBcIlwiKSArXG4gICAgICAgICAgICAgICh2aXJ0dWFsUXVlcnlQcm9wcy5sZW5ndGggPiAwXG4gICAgICAgICAgICAgICAgPyBgcmVhZG9ubHkgX192aXJ0dWFsX3F1ZXJ5X186IHJlYWRvbmx5IFske3ZpcnR1YWxRdWVyeVByb3BzLm1hcCgocHJvcCkgPT4gYFwiJHtwcm9wfVwiYCkuam9pbihcIiwgXCIpfV0sYFxuICAgICAgICAgICAgICAgIDogXCJcIikgK1xuICAgICAgICAgICAgICAoaGFzRGVmYXVsdENvbHVtbnMubGVuZ3RoID4gMFxuICAgICAgICAgICAgICAgID8gYHJlYWRvbmx5IF9faGFzRGVmYXVsdF9fOiByZWFkb25seSBbJHtoYXNEZWZhdWx0Q29sdW1uc1xuICAgICAgICAgICAgICAgICAgICAubWFwKChjb2wpID0+IGBcIiR7Y29sfVwiYClcbiAgICAgICAgICAgICAgICAgICAgLmpvaW4oXCIsIFwiKX1dLGBcbiAgICAgICAgICAgICAgICA6IFwiXCIpICtcbiAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgIGdlbmVyYXRlZENvbHVtbnMubGVuZ3RoID4gMFxuICAgICAgICAgICAgICAgICAgPyBgcmVhZG9ubHkgX19nZW5lcmF0ZWRfXzogcmVhZG9ubHkgWyR7Z2VuZXJhdGVkQ29sdW1uc1xuICAgICAgICAgICAgICAgICAgICAgIC5tYXAoKGNvbCkgPT4gYFwiJHtjb2x9XCJgKVxuICAgICAgICAgICAgICAgICAgICAgIC5qb2luKFwiLCBcIil9XSxgXG4gICAgICAgICAgICAgICAgICA6IFwiXCJcbiAgICAgICAgICAgICAgKSArXG4gICAgICAgICAgICAgIChoYXNWZWN0b3JDb2x1bW5zLmxlbmd0aCA+IDBcbiAgICAgICAgICAgICAgICA/IGByZWFkb25seSBfX3ZlY3Rvcl9fOiByZWFkb25seSBbJHtoYXNWZWN0b3JDb2x1bW5zXG4gICAgICAgICAgICAgICAgICAgIC5tYXAoKGNvbCkgPT4gYFwiJHtjb2x9XCJgKVxuICAgICAgICAgICAgICAgICAgICAuam9pbihcIiwgXCIpfV0sYFxuICAgICAgICAgICAgICAgIDogXCJcIilcbiAgICAgICAgICAgIH19YFxuICAgICAgICAgIDogXCJcIikgK1xuICAgICAgICBcIjtcIixcbiAgICBdO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGxhYmVsOiBgQmFzZVNjaGVtYTogJHtlbnRpdHkuaWR9YCxcbiAgICAgIGltcG9ydEtleXMsXG4gICAgICBsaW5lcyxcbiAgICB9O1xuICB9XG5cbiAgZ2V0QmFzZUxpc3RQYXJhbXNTb3VyY2VDb2RlKGVudGl0eTogRW50aXR5KTogU291cmNlQ29kZSB8IG51bGwge1xuICAgIC8vIFByb3Ag7JeG64qUIE1E7J24IOqyveyasCDsg53shLEg7KCc7Jm4XG4gICAgaWYgKGVudGl0eS5wcm9wcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH0gZWxzZSBpZiAoZW50aXR5LnBhcmVudElkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IHNjaGVtYU5hbWUgPSBgJHtlbnRpdHkubmFtZXMubW9kdWxlfUJhc2VMaXN0UGFyYW1zYDtcblxuICAgIGNvbnN0IGZpbHRlclByb3BzID0gZW50aXR5LnByb3BzLmZpbHRlcigocHJvcCkgPT4gcHJvcC50b0ZpbHRlciA9PT0gdHJ1ZSk7XG5cbiAgICBjb25zdCBwcm9wTm9kZXM6IEVudGl0eVByb3BOb2RlW10gPSBmaWx0ZXJQcm9wcy5tYXAoKHByb3ApID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG5vZGVUeXBlOiBcInBsYWluXCIgYXMgY29uc3QsXG4gICAgICAgIHByb3AsXG4gICAgICAgIGNoaWxkcmVuOiBbXSxcbiAgICAgIH07XG4gICAgfSk7XG5cbiAgICBjb25zdCBpbXBvcnRLZXlzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGNvbnN0IGZpbHRlckJvZHkgPSBwcm9wTm9kZXNcbiAgICAgIC5tYXAoKHByb3BOb2RlKSA9PiBwcm9wTm9kZVRvWm9kVHlwZURlZihwcm9wTm9kZSwgaW1wb3J0S2V5cykpXG4gICAgICAuam9pbihcIlxcblwiKTtcblxuICAgIC8vIEZpbHRlclF1ZXJ5IO2DgOyeheydhCDsnITtlZwg7KCc7Jm47ZWgIHByb3BzIOy2lOy2nCAodmlydHVhbOunjCDsoJzsmbgpXG4gICAgY29uc3QgZXhjbHVkZWRQcm9wcyA9IGVudGl0eS5wcm9wcy5maWx0ZXIoKHApID0+IHAudHlwZSA9PT0gXCJ2aXJ0dWFsXCIpLm1hcCgocCkgPT4gcC5uYW1lKTtcblxuICAgIC8vIG51bWVyaWMg7YOA7J6F7J24IHByb3BzIOy2lOy2nFxuICAgIGNvbnN0IG51bWVyaWNQcm9wcyA9IGVudGl0eS5wcm9wcy5maWx0ZXIoKHApID0+IHAudHlwZSA9PT0gXCJudW1lcmljXCIpO1xuXG4gICAgLy8gQXBwbHlTb25hbXVGaWx0ZXIg7YOA7J6FIOyduOyekCDsg53shLFcbiAgICBjb25zdCBlbnRpdHlUeXBlID0gYCR7ZW50aXR5LmlkfUJhc2VTY2hlbWFgO1xuICAgIGNvbnN0IG51bWVyaWNLZXlzVW5pb24gPVxuICAgICAgbnVtZXJpY1Byb3BzLmxlbmd0aCA+IDAgPyBudW1lcmljUHJvcHMubWFwKChwcm9wKSA9PiBgXCIke3Byb3AubmFtZX1cImApLmpvaW4oXCIgfCBcIikgOiBcIm5ldmVyXCI7XG4gICAgY29uc3Qgb21pdEtleXNVbmlvbiA9XG4gICAgICBleGNsdWRlZFByb3BzLmxlbmd0aCA+IDAgPyBleGNsdWRlZFByb3BzLm1hcCgobikgPT4gYFwiJHtufVwiYCkuam9pbihcIiB8IFwiKSA6IFwibmV2ZXJcIjtcblxuICAgIC8vIFBLIO2DgOyeheyXkCDrlLDrpbggaWQgWm9kIO2DgOyehSDqsrDsoJVcbiAgICBjb25zdCBwa1R5cGUgPSBlbnRpdHkuZ2V0UGtUeXBlKCk7XG4gICAgY29uc3QgaWRab2RUeXBlID1cbiAgICAgIHBrVHlwZSA9PT0gXCJzdHJpbmdcIiB8fCBwa1R5cGUgPT09IFwidXVpZFwiXG4gICAgICAgID8gXCJ6QXJyYXlhYmxlKHouc3RyaW5nKCkpXCJcbiAgICAgICAgOiBcInpBcnJheWFibGUoei5udW1iZXIoKS5pbnQoKS5wb3NpdGl2ZSgpKVwiO1xuXG4gICAgY29uc3Qgc2NoZW1hQm9keSA9IGBcbnoub2JqZWN0KHtcbiAgbnVtOiB6Lm51bWJlcigpLmludCgpLm5vbm5lZ2F0aXZlKCksXG4gIHBhZ2U6IHoubnVtYmVyKCkuaW50KCkubWluKDEpLFxuICBzZWFyY2g6ICR7ZW50aXR5LmlkfVNlYXJjaEZpZWxkLFxuICBrZXl3b3JkOiB6LnN0cmluZygpLFxuICBvcmRlckJ5OiAke2VudGl0eS5pZH1PcmRlckJ5LFxuICBxdWVyeU1vZGU6IFNvbmFtdVF1ZXJ5TW9kZSxcbiAgaWQ6ICR7aWRab2RUeXBlfSxcbiAgc29uYW11RmlsdGVyOiB6LmN1c3RvbTxBcHBseVNvbmFtdUZpbHRlcjwke2VudGl0eVR5cGV9LCAke29taXRLZXlzVW5pb259LCAke251bWVyaWNLZXlzVW5pb259Pj4oKSwke2ZpbHRlckJvZHl9XG59KS5wYXJ0aWFsKCk7XG5gLnRyaW0oKTtcblxuICAgIGNvbnN0IGxpbmVzID0gW1xuICAgICAgYGV4cG9ydCBjb25zdCAke3NjaGVtYU5hbWV9ID0gJHtzY2hlbWFCb2R5fTtgLFxuICAgICAgYGV4cG9ydCB0eXBlICR7c2NoZW1hTmFtZX0gPSB6LmluZmVyPHR5cGVvZiAke3NjaGVtYU5hbWV9PjtgLFxuICAgIF07XG5cbiAgICByZXR1cm4ge1xuICAgICAgbGFiZWw6IGBCYXNlTGlzdFBhcmFtczogJHtlbnRpdHkuaWR9YCxcbiAgICAgIGltcG9ydEtleXMsXG4gICAgICBsaW5lcyxcbiAgICB9O1xuICB9XG5cbiAgZ2V0U3Vic2V0U291cmNlQ29kZShlbnRpdHk6IEVudGl0eSk6IFNvdXJjZUNvZGUgfCBudWxsIHtcbiAgICBpZiAoT2JqZWN0LmtleXMoZW50aXR5LnN1YnNldHMpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfSBlbHNlIGlmIChlbnRpdHkucGFyZW50SWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3Qgc3Vic2V0S2V5cyA9IE9iamVjdC5rZXlzKGVudGl0eS5zdWJzZXRzKTtcbiAgICBjb25zdCBpbXBvcnRLZXlzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGNvbnN0IGxpbmVzOiBzdHJpbmdbXSA9IFtcbiAgICAgIC4uLnN1YnNldEtleXMuZmxhdE1hcCgoc3Vic2V0S2V5KSA9PiB7XG4gICAgICAgIC8vIOyEnOu4jOyFi+yXkOyEnCBGaWVsZEV4cHJbXSDqsIDsoLjsmLRcbiAgICAgICAgY29uc3QgZmllbGRFeHBycyA9IGVudGl0eS5zdWJzZXRzW3N1YnNldEtleV07XG5cbiAgICAgICAgLy8gRmllbGRFeHByW13roZwgRW50aXR5UHJvcE5vZGVbXSDqsIDsoLjsmLRcbiAgICAgICAgY29uc3QgcHJvcE5vZGVzID0gZW50aXR5LmZpZWxkRXhwcnNUb1Byb3BOb2RlcyhmaWVsZEV4cHJzKTtcbiAgICAgICAgY29uc3Qgc2NoZW1hTmFtZSA9IGAke2VudGl0eS5uYW1lcy5tb2R1bGV9U3Vic2V0JHtzdWJzZXRLZXl9YDtcbiAgICAgICAgY29uc3QgcHJvcE5vZGU6IEVudGl0eVByb3BOb2RlID0ge1xuICAgICAgICAgIG5vZGVUeXBlOiBcIm9iamVjdFwiLFxuICAgICAgICAgIGNoaWxkcmVuOiBwcm9wTm9kZXMsXG4gICAgICAgIH07XG5cbiAgICAgICAgLy8gRW50aXR5UHJvcE5vZGVbXeuhnCBab2RUeXBlRGVmKHN0cmluZynsnYQg6rCA7KC47Ji0XG4gICAgICAgIGNvbnN0IGJvZHkgPSBwcm9wTm9kZVRvWm9kVHlwZURlZihwcm9wTm9kZSwgaW1wb3J0S2V5cyk7XG5cbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICBgZXhwb3J0IGNvbnN0ICR7c2NoZW1hTmFtZX0gPSAke2JvZHkucmVwbGFjZSgvLCQvLCBcIlwiKX07YCxcbiAgICAgICAgICBgZXhwb3J0IHR5cGUgJHtzY2hlbWFOYW1lfSA9IHouaW5mZXI8dHlwZW9mICR7c2NoZW1hTmFtZX0+O2AsXG4gICAgICAgIF07XG4gICAgICB9KSxcbiAgICAgIGBleHBvcnQgdHlwZSAke2VudGl0eS5uYW1lcy5tb2R1bGV9U3Vic2V0TWFwcGluZyA9IHtgLFxuICAgICAgLi4uc3Vic2V0S2V5cy5tYXAoKHN1YnNldEtleSkgPT4gYCAgJHtzdWJzZXRLZXl9OiAke2VudGl0eS5uYW1lcy5tb2R1bGV9U3Vic2V0JHtzdWJzZXRLZXl9O2ApLFxuICAgICAgXCJ9O1wiLFxuICAgICAgYGV4cG9ydCBjb25zdCAke2VudGl0eS5uYW1lcy5tb2R1bGV9U3Vic2V0S2V5ID0gei5lbnVtKFske3N1YnNldEtleXNcbiAgICAgICAgLm1hcCgoaykgPT4gYFwiJHtrfVwiYClcbiAgICAgICAgLmpvaW4oXCIsXCIpfV0pO2AsXG4gICAgICBgZXhwb3J0IHR5cGUgJHtlbnRpdHkubmFtZXMubW9kdWxlfVN1YnNldEtleSA9IHouaW5mZXI8dHlwZW9mICR7ZW50aXR5Lm5hbWVzLm1vZHVsZX1TdWJzZXRLZXk+O2AsXG4gICAgICBcIlwiLFxuICAgIF07XG5cbiAgICByZXR1cm4ge1xuICAgICAgbGFiZWw6IGBTdWJzZXRzOiAke2VudGl0eS5pZH1gLFxuICAgICAgbGluZXMsXG4gICAgICBpbXBvcnRLZXlzOiB1bmlxdWUoaW1wb3J0S2V5cyksXG4gICAgfTtcbiAgfVxufVxuIl0sIm5hbWVzIjpbImFzc2VydCIsInVuaXF1ZSIsIlNvbmFtdSIsIkVudGl0eU1hbmFnZXIiLCJOYWl0ZSIsImlzVmlydHVhbENvZGVQcm9wIiwiaXNWaXJ0dWFsUXVlcnlQcm9wIiwibm9uTnVsbGFibGUiLCJUZW1wbGF0ZSIsIkJVSUxUX0lOX1RZUEVTIiwicHJvcE5vZGVUb1pvZFR5cGVEZWYiLCJ6b2RUeXBlVG9ab2RDb2RlIiwiVGVtcGxhdGVfX2dlbmVyYXRlZCIsImdldFRhcmdldEFuZFBhdGgiLCJkaXIiLCJjb25maWciLCJhcGkiLCJ0YXJnZXQiLCJwYXRoIiwicmVuZGVyIiwiZW50aXR5SWRzIiwiZ2V0QWxsSWRzIiwiZW50aXRpZXMiLCJtYXAiLCJpZCIsImdldCIsInNvdXJjZUNvZGVzIiwiZmxhdE1hcCIsImVudGl0eSIsImdldEVudW1zU291cmNlQ29kZSIsImdldEJhc2VTY2hlbWFTb3VyY2VDb2RlIiwiZ2V0QmFzZUxpc3RQYXJhbXNTb3VyY2VDb2RlIiwiZ2V0U3Vic2V0U291cmNlQ29kZSIsImZpbHRlciIsInQiLCJMQUJFTF9LRVlfT1JERVIiLCJzb3J0IiwiYSIsImIiLCJhS2V5IiwibGFiZWwiLCJzcGxpdCIsImJLZXkiLCJhSW5kZXgiLCJpbmRleE9mIiwiYkluZGV4Iiwic291cmNlQ29kZSIsInJlZHVjZSIsInJlc3VsdCIsInRzIiwibGluZXMiLCJpbXBvcnRLZXlzIiwiYWxsVHlwZUtleXMiLCJPYmplY3QiLCJrZXlzIiwidHlwZXMiLCJjZEltcG9ydEtleXMiLCJpbXBvcnRLZXkiLCJpbmNsdWRlcyIsImxlbmd0aCIsImN1c3RvbVNjYWxhckxpbmVzIiwiZmluZCIsIkVycm9yIiwiem9kVHlwZSIsImJvZHkiLCJqb2luIiwiYnVpbHRJblNjaGVtYU5hbWVzIiwidmFsdWVzIiwiaW5mbyIsInNjaGVtYU5hbWUiLCJidWlsdEluU2NoZW1hcyIsImtleSIsInNvbmFtdUltcG9ydHMiLCJtb2QiLCJjdXN0b21IZWFkZXJzIiwiZW51bUxhYmVscyIsImVudHJpZXMiLCJfIiwiZW51bUxhYmVsIiwiZW51bUlkIiwiZWwiLCJKU09OIiwic3RyaW5naWZ5IiwibmFtZXMiLCJtb2R1bGUiLCJwcm9wTm9kZSIsIm5vZGVUeXBlIiwiY2hpbGRyZW4iLCJwcm9wcyIsInByb3AiLCJzY2hlbWFCb2R5IiwiZW5kc1dpdGgiLCJzbGljZSIsImZ1bGx0ZXh0Q29sdW1ucyIsInZpcnR1YWxQcm9wcyIsIm5hbWUiLCJ2aXJ0dWFsUXVlcnlQcm9wcyIsImhhc0RlZmF1bHRDb2x1bW5zIiwidHlwZSIsIm51bGxhYmxlIiwiZGJEZWZhdWx0IiwidW5kZWZpbmVkIiwiY29uY2F0IiwiaGFzVmVjdG9yQ29sdW1ucyIsImdlbmVyYXRlZENvbHVtbnMiLCJnZW5lcmF0ZWQiLCJoYXNNZXRhZGF0YSIsImNvbCIsInBhcmVudElkIiwiZmlsdGVyUHJvcHMiLCJ0b0ZpbHRlciIsInByb3BOb2RlcyIsImZpbHRlckJvZHkiLCJleGNsdWRlZFByb3BzIiwicCIsIm51bWVyaWNQcm9wcyIsImVudGl0eVR5cGUiLCJudW1lcmljS2V5c1VuaW9uIiwib21pdEtleXNVbmlvbiIsIm4iLCJwa1R5cGUiLCJnZXRQa1R5cGUiLCJpZFpvZFR5cGUiLCJ0cmltIiwic3Vic2V0cyIsInN1YnNldEtleXMiLCJzdWJzZXRLZXkiLCJmaWVsZEV4cHJzIiwiZmllbGRFeHByc1RvUHJvcE5vZGVzIiwicmVwbGFjZSIsImsiXSwibWFwcGluZ3MiOiJBQUFBLE9BQU9BLFlBQVksU0FBUztBQUM1QixTQUFTQyxNQUFNLFFBQVEsVUFBVTtBQUNqQyxTQUFTQyxNQUFNLFFBQVEscUJBQVk7QUFFbkMsU0FBU0MsYUFBYSxRQUFRLGlDQUE4QjtBQUM1RCxTQUFTQyxLQUFLLFFBQVEsdUJBQW9CO0FBQzFDLFNBR0VDLGlCQUFpQixFQUNqQkMsa0JBQWtCLFFBQ2IsdUJBQW9CO0FBQzNCLFNBQVNDLFdBQVcsUUFBUSx1QkFBb0I7QUFDaEQsU0FBU0MsUUFBUSxRQUFRLGlCQUFjO0FBQ3ZDLFNBQVNDLGNBQWMsRUFBRUMsb0JBQW9CLEVBQUVDLGdCQUFnQixRQUFRLHNCQUFtQjtBQU8xRixPQUFPLE1BQU1DLDRCQUE0Qko7SUFDdkMsYUFBYztRQUNaLEtBQUssQ0FBQztJQUNSO0lBRUFLLG1CQUFtQjtRQUNqQixNQUFNLEVBQUVDLEdBQUcsRUFBRSxHQUFHWixPQUFPYSxNQUFNLENBQUNDLEdBQUc7UUFDakMsT0FBTztZQUNMQyxRQUFRLEdBQUdILElBQUksZ0JBQWdCLENBQUM7WUFDaENJLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQztRQUM3QjtJQUNGO0lBQ0FDLFNBQVM7UUFDUCxNQUFNQyxZQUFZakIsY0FBY2tCLFNBQVM7UUFDekMsTUFBTUMsV0FBV0YsVUFBVUcsR0FBRyxDQUFDLENBQUNDLEtBQU9yQixjQUFjc0IsR0FBRyxDQUFDRDtRQUV6RCxtQkFBbUI7UUFDbkIsTUFBTUUsY0FBY0osU0FBU0ssT0FBTyxDQUFDLENBQUNDO1lBQ3BDLE9BQU87Z0JBQ0wsSUFBSSxDQUFDQyxrQkFBa0IsQ0FBQ0Q7Z0JBQ3hCLElBQUksQ0FBQ0UsdUJBQXVCLENBQUNGO2dCQUM3QixJQUFJLENBQUNHLDJCQUEyQixDQUFDSDtnQkFDakMsSUFBSSxDQUFDSSxtQkFBbUIsQ0FBQ0o7YUFDMUIsQ0FBQ0ss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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generated_http.template.d.ts","sourceRoot":"","sources":["../../../src/template/implementations/generated_http.template.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAExD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,qBAAa,wBAAyB,SAAQ,QAAQ;;IAKpD,gBAAgB;;;;IASV,MAAM
|
|
1
|
+
{"version":3,"file":"generated_http.template.d.ts","sourceRoot":"","sources":["../../../src/template/implementations/generated_http.template.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAExD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,qBAAa,wBAAyB,SAAQ,QAAQ;;IAKpD,gBAAgB;;;;IASV,MAAM;;;;;;;IA+CZ,mBAAmB,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO;IAiEvE,gBAAgB,CACd,GAAG,EAAE,WAAW,EAChB,UAAU,EAAE;QAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,CAAC,CAAC,OAAO,CAAA;KAAE,GAC5C;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE;CAY9B"}
|
|
@@ -50,7 +50,11 @@ export class Template__generated_http extends Template {
|
|
|
50
50
|
return {
|
|
51
51
|
...this.getTargetAndPath(),
|
|
52
52
|
body: lines.join("\n\n###\n\n"),
|
|
53
|
-
importKeys: []
|
|
53
|
+
importKeys: [],
|
|
54
|
+
customHeaders: [
|
|
55
|
+
"# @generated",
|
|
56
|
+
"# 직접 수정하지 마세요."
|
|
57
|
+
]
|
|
54
58
|
};
|
|
55
59
|
}
|
|
56
60
|
zodTypeToReqDefault(zodType, name) {
|
|
@@ -128,4 +132,4 @@ export class Template__generated_http extends Template {
|
|
|
128
132
|
}
|
|
129
133
|
}
|
|
130
134
|
|
|
131
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90ZW1wbGF0ZS9pbXBsZW1lbnRhdGlvbnMvZ2VuZXJhdGVkX2h0dHAudGVtcGxhdGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHFzIGZyb20gXCJxc1wiO1xuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIjtcbmltcG9ydCB7IGdldFpvZE9iamVjdEZyb21BcGkgfSBmcm9tIFwiLi4vLi4vYXBpL2NvZGUtY29udmVydGVyc1wiO1xuaW1wb3J0IHR5cGUgeyBFeHRlbmRlZEFwaSB9IGZyb20gXCIuLi8uLi9hcGkvZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHsgU29uYW11IH0gZnJvbSBcIi4uLy4uL2FwaS9zb25hbXVcIjtcbmltcG9ydCB7IFRlbXBsYXRlIH0gZnJvbSBcIi4uL3RlbXBsYXRlXCI7XG5cbmV4cG9ydCBjbGFzcyBUZW1wbGF0ZV9fZ2VuZXJhdGVkX2h0dHAgZXh0ZW5kcyBUZW1wbGF0ZSB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKFwiZ2VuZXJhdGVkX2h0dHBcIik7XG4gIH1cblxuICBnZXRUYXJnZXRBbmRQYXRoKCkge1xuICAgIGNvbnN0IHsgZGlyIH0gPSBTb25hbXUuY29uZmlnLmFwaTtcblxuICAgIHJldHVybiB7XG4gICAgICB0YXJnZXQ6IGAke2Rpcn0vc3JjL2FwcGxpY2F0aW9uYCxcbiAgICAgIHBhdGg6IGBzb25hbXUuZ2VuZXJhdGVkLmh0dHBgLFxuICAgIH07XG4gIH1cblxuICBhc3luYyByZW5kZXIoKSB7XG4gICAgY29uc3Qge1xuICAgICAgc3luY2VyOiB7IHR5cGVzLCBhcGlzIH0sXG4gICAgICBjb25maWc6IHtcbiAgICAgICAgYXBpOiB7XG4gICAgICAgICAgcm91dGU6IHsgcHJlZml4IH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0gPSBTb25hbXU7XG5cbiAgICBjb25zdCBsaW5lcyA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgYXBpcy5tYXAoYXN5bmMgKGFwaSkgPT4ge1xuICAgICAgICBjb25zdCByZXFPYmplY3QgPSB0aGlzLnJlc29sdmVBcGlQYXJhbXMoYXBpLCB0eXBlcyk7XG5cbiAgICAgICAgY29uc3QgZGF0YUxpbmVzID0gYXdhaXQgKGFzeW5jICgpID0+IHtcbiAgICAgICAgICBpZiAoKGFwaS5vcHRpb25zLmh0dHBNZXRob2QgPz8gXCJHRVRcIikgPT09IFwiR0VUXCIpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIHF1ZXJ5c3RyaW5nOiBbcXMuc3RyaW5naWZ5KHJlcU9iamVjdCwgeyBlbmNvZGU6IGZhbHNlIH0pLnNwbGl0KFwiJlwiKS5qb2luKFwiXFxuXFx0JlwiKV0sXG4gICAgICAgICAgICAgIGJvZHk6IFtdLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgcXVlcnlzdHJpbmc6IFtdLFxuICAgICAgICAgICAgICBib2R5OiBbXCJcIiwgSlNPTi5zdHJpbmdpZnkocmVxT2JqZWN0LCBudWxsLCAyKV0sXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgfSkoKTtcblxuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgIFtcbiAgICAgICAgICAgIGAke2FwaS5vcHRpb25zLmh0dHBNZXRob2QgPz8gXCJHRVRcIn0ge3tiYXNlVXJsfX0ke3ByZWZpeH0ke2FwaS5wYXRofWAsXG4gICAgICAgICAgICAuLi5kYXRhTGluZXMucXVlcnlzdHJpbmcsXG4gICAgICAgICAgXS5qb2luKFwiXFxuXFx0P1wiKSxcbiAgICAgICAgICBgQ29udGVudC1UeXBlOiAke2FwaS5vcHRpb25zLmNvbnRlbnRUeXBlID8/IFwiYXBwbGljYXRpb24vanNvblwifWAsXG4gICAgICAgICAgLi4uZGF0YUxpbmVzLmJvZHksXG4gICAgICAgIF0uam9pbihcIlxcblwiKTtcbiAgICAgIH0pLFxuICAgICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4udGhpcy5nZXRUYXJnZXRBbmRQYXRoKCksXG4gICAgICBib2R5OiBsaW5lcy5qb2luKFwiXFxuXFxuIyMjXFxuXFxuXCIpLFxuICAgICAgaW1wb3J0S2V5czogW10sXG4gICAgfTtcbiAgfVxuXG4gIHpvZFR5cGVUb1JlcURlZmF1bHQoem9kVHlwZTogei5ab2RUeXBlPHVua25vd24+LCBuYW1lOiBzdHJpbmcpOiB1bmtub3duIHtcbiAgICBpZiAoem9kVHlwZSBpbnN0YW5jZW9mIHouWm9kT2JqZWN0KSB7XG4gICAgICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgICAgICBPYmplY3Qua2V5cyh6b2RUeXBlLnNoYXBlKS5tYXAoKGtleSkgPT4gW1xuICAgICAgICAgIGtleSxcbiAgICAgICAgICB0aGlzLnpvZFR5cGVUb1JlcURlZmF1bHQoem9kVHlwZS5zaGFwZVtrZXldLCBrZXkpLFxuICAgICAgICBdKSxcbiAgICAgICk7XG4gICAgfSBlbHNlIGlmICh6b2RUeXBlIGluc3RhbmNlb2Ygei5ab2RBcnJheSkge1xuICAgICAgcmV0dXJuIFt0aGlzLnpvZFR5cGVUb1JlcURlZmF1bHQoKHpvZFR5cGUgYXMgei5ab2RBcnJheTx6LlpvZFR5cGU+KS5lbGVtZW50LCBuYW1lKV07XG4gICAgfSBlbHNlIGlmICh6b2RUeXBlIGluc3RhbmNlb2Ygei5jb3JlLiRab2RTdHJpbmcpIHtcbiAgICAgIC8vIE5PVEU6IHouWm9kU3RyaW5n7Jy866GcIOu5hOq1kO2VmOuptCB6LnVybCgpLCB6LmVtYWlsKCkg65Ox7J2YIO2DgOyeheyXkOyEnCDrrLjsoJzqsIAg7IOd6riw66+A66GcIHouY29yZS4kWm9kU3RyaW5n7Jy866GcIOu5hOq1kO2VqFxuICAgICAgaWYgKG5hbWUuZW5kc1dpdGgoXCJfYXRcIikgfHwgbmFtZS5lbmRzV2l0aChcIl9kYXRlXCIpIHx8IG5hbWUgPT09IFwicmFuZ2VcIikge1xuICAgICAgICByZXR1cm4gXCIyMDAwLTAxLTAxXCI7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gbmFtZS50b1VwcGVyQ2FzZSgpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoem9kVHlwZSBpbnN0YW5jZW9mIHouWm9kTnVtYmVyKSB7XG4gICAgICBpZiAobmFtZSA9PT0gXCJudW1cIikge1xuICAgICAgICByZXR1cm4gMjQ7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1pblZhbHVlID0gem9kVHlwZS5taW5WYWx1ZSA/PyAwO1xuICAgICAgcmV0dXJuIG1pblZhbHVlID4gTnVtYmVyLk1JTl9TQUZFX0lOVEVHRVIgPyBtaW5WYWx1ZSA6IDA7XG4gICAgfSBlbHNlIGlmICh6b2RUeXBlIGluc3RhbmNlb2Ygei5ab2RCb29sZWFuKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSBlbHNlIGlmICh6b2RUeXBlIGluc3RhbmNlb2Ygei5ab2RFbnVtKSB7XG4gICAgICByZXR1cm4gem9kVHlwZS5vcHRpb25zWzBdO1xuICAgIH0gZWxzZSBpZiAoem9kVHlwZSBpbnN0YW5jZW9mIHouWm9kT3B0aW9uYWwpIHtcbiAgICAgIHJldHVybiB0aGlzLnpvZFR5cGVUb1JlcURlZmF1bHQoKHpvZFR5cGUgYXMgei5ab2RPcHRpb25hbDx6LlpvZFR5cGU+KS5kZWYuaW5uZXJUeXBlLCBuYW1lKTtcbiAgICB9IGVsc2UgaWYgKHpvZFR5cGUgaW5zdGFuY2VvZiB6LlpvZE51bGxhYmxlKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9IGVsc2UgaWYgKHpvZFR5cGUgaW5zdGFuY2VvZiB6LlpvZFVuaW9uKSB7XG4gICAgICByZXR1cm4gdGhpcy56b2RUeXBlVG9SZXFEZWZhdWx0KCh6b2RUeXBlIGFzIHouWm9kVW5pb248ei5ab2RUeXBlW10+KS5kZWYub3B0aW9uc1swXSwgbmFtZSk7XG4gICAgfSBlbHNlIGlmICh6b2RUeXBlIGluc3RhbmNlb2Ygei5ab2RVbmtub3duKSB7XG4gICAgICByZXR1cm4gXCJ1bmtub3duXCI7XG4gICAgfSBlbHNlIGlmICh6b2RUeXBlIGluc3RhbmNlb2Ygei5ab2RUdXBsZSkge1xuICAgICAgLyoqIGJpb21lLWlnbm9yZSBsaW50L3N1c3BpY2lvdXMvbm9FeHBsaWNpdEFueTogWm9kVHVwbGUg7YOA7J6FIOyCrOyaqSAqL1xuICAgICAgcmV0dXJuIHpvZFR5cGUuZGVmLml0ZW1zLm1hcCgoaXRlbTogYW55KSA9PiB0aGlzLnpvZFR5cGVUb1JlcURlZmF1bHQoaXRlbSwgbmFtZSkpO1xuICAgIH0gZWxzZSBpZiAoem9kVHlwZSBpbnN0YW5jZW9mIHouWm9kRGF0ZSkge1xuICAgICAgcmV0dXJuIFwiMjAwMC0wMS0wMVwiO1xuICAgIH0gZWxzZSBpZiAoem9kVHlwZSBpbnN0YW5jZW9mIHouWm9kTGl0ZXJhbCkge1xuICAgICAgcmV0dXJuIHpvZFR5cGUudmFsdWU7XG4gICAgfSBlbHNlIGlmICh6b2RUeXBlIGluc3RhbmNlb2Ygei5ab2RSZWNvcmQgfHwgem9kVHlwZSBpbnN0YW5jZW9mIHouWm9kTWFwKSB7XG4gICAgICAvLyBiaW9tZS1pZ25vcmUgbGludC9zdXNwaWNpb3VzL25vRXhwbGljaXRBbnk6IFpvZFJlY29yZCDtg4DsnoUg7IKs7JqpXG4gICAgICBjb25zdCBrdkRlZiA9ICh6b2RUeXBlIGFzIHouWm9kUmVjb3JkPGFueSwgei5ab2RUeXBlPiB8IHouWm9kTWFwPHouWm9kVHlwZSwgei5ab2RUeXBlPikuZGVmO1xuICAgICAgLy8gYmlvbWUtaWdub3JlIGxpbnQvc3VzcGljaW91cy9ub0V4cGxpY2l0QW55OiBab2RJbnRlcnNlY3Rpb24g7YOA7J6FIOyCrOyaqVxuICAgICAgY29uc3Qga2V5ID0gdGhpcy56b2RUeXBlVG9SZXFEZWZhdWx0KGt2RGVmLmtleVR5cGUsIG5hbWUpIGFzIGFueTtcbiAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy56b2RUeXBlVG9SZXFEZWZhdWx0KGt2RGVmLnZhbHVlVHlwZSwgbmFtZSk7XG4gICAgICByZXR1cm4geyBba2V5XTogdmFsdWUgfTtcbiAgICB9IGVsc2UgaWYgKHpvZFR5cGUgaW5zdGFuY2VvZiB6LlpvZFNldCkge1xuICAgICAgcmV0dXJuIFt0aGlzLnpvZFR5cGVUb1JlcURlZmF1bHQoKHpvZFR5cGUgYXMgei5ab2RTZXQ8ei5ab2RUeXBlPikuZGVmLnZhbHVlVHlwZSwgbmFtZSldO1xuICAgIH0gZWxzZSBpZiAoem9kVHlwZSBpbnN0YW5jZW9mIHouWm9kSW50ZXJzZWN0aW9uKSB7XG4gICAgICByZXR1cm4gdGhpcy56b2RUeXBlVG9SZXFEZWZhdWx0KFxuICAgICAgICAoem9kVHlwZSBhcyB6LlpvZEludGVyc2VjdGlvbjx6LlpvZFR5cGUsIHouWm9kVHlwZT4pLmRlZi5yaWdodCxcbiAgICAgICAgbmFtZSxcbiAgICAgICk7XG4gICAgfSBlbHNlIGlmICh6b2RUeXBlIGluc3RhbmNlb2Ygei5ab2REZWZhdWx0KSB7XG4gICAgICByZXR1cm4gdGhpcy56b2RUeXBlVG9SZXFEZWZhdWx0KCh6b2RUeXBlIGFzIHouWm9kRGVmYXVsdDx6LlpvZFR5cGU+KS5kZWYuaW5uZXJUeXBlLCBuYW1lKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gY29uc29sZS5sb2coem9kVHlwZSk7XG4gICAgICByZXR1cm4gYHVua25vd24tJHt6b2RUeXBlLnR5cGV9YDtcbiAgICB9XG4gIH1cblxuICByZXNvbHZlQXBpUGFyYW1zKFxuICAgIGFwaTogRXh0ZW5kZWRBcGksXG4gICAgcmVmZXJlbmNlczogeyBbdHlwZU5hbWU6IHN0cmluZ106IHouWm9kVHlwZSB9LFxuICApOiB7IFtrZXk6IHN0cmluZ106IHVua25vd24gfSB7XG4gICAgY29uc3QgcmVxVHlwZSA9IGdldFpvZE9iamVjdEZyb21BcGkoYXBpLCByZWZlcmVuY2VzKTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgZGVmID0gdGhpcy56b2RUeXBlVG9SZXFEZWZhdWx0KHJlcVR5cGUsIFwidW5rbm93bk5hbWVcIikgYXMge1xuICAgICAgICBba2V5OiBzdHJpbmddOiB1bmtub3duO1xuICAgICAgfTtcbiAgICAgIHJldHVybiBkZWY7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHpvZCB0eXBlIGRldGVjdGVkIG9uICR7YXBpLm1vZGVsTmFtZX06JHthcGkubWV0aG9kTmFtZX1gKTtcbiAgICB9XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJxcyIsInoiLCJnZXRab2RPYmplY3RGcm9tQXBpIiwiU29uYW11IiwiVGVtcGxhdGUiLCJUZW1wbGF0ZV9fZ2VuZXJhdGVkX2h0dHAiLCJnZXRUYXJnZXRBbmRQYXRoIiwiZGlyIiwiY29uZmlnIiwiYXBpIiwidGFyZ2V0IiwicGF0aCIsInJlbmRlciIsInN5bmNlciIsInR5cGVzIiwiYXBpcyIsInJvdXRlIiwicHJlZml4IiwibGluZXMiLCJQcm9taXNlIiwiYWxsIiwibWFwIiwicmVxT2JqZWN0IiwicmVzb2x2ZUFwaVBhcmFtcyIsImRhdGFMaW5lcyIsIm9wdGlvbnMiLCJodHRwTWV0aG9kIiwicXVlcnlzdHJpbmciLCJzdHJpbmdpZnkiLCJlbmNvZGUiLCJzcGxpdCIsImpvaW4iLCJib2R5IiwiSlNPTiIsImNvbnRlbnRUeXBlIiwiaW1wb3J0S2V5cyIsInpvZFR5cGVUb1JlcURlZmF1bHQiLCJ6b2RUeXBlIiwibmFtZSIsIlpvZE9iamVjdCIsIk9iamVjdCIsImZyb21FbnRyaWVzIiwia2V5cyIsInNoYXBlIiwia2V5IiwiWm9kQXJyYXkiLCJlbGVtZW50IiwiY29yZSIsIiRab2RTdHJpbmciLCJlbmRzV2l0aCIsInRvVXBwZXJDYXNlIiwiWm9kTnVtYmVyIiwibWluVmFsdWUiLCJOdW1iZXIiLCJNSU5fU0FGRV9JTlRFR0VSIiwiWm9kQm9vbGVhbiIsIlpvZEVudW0iLCJab2RPcHRpb25hbCIsImRlZiIsImlubmVyVHlwZSIsIlpvZE51bGxhYmxlIiwiWm9kVW5pb24iLCJab2RVbmtub3duIiwiWm9kVHVwbGUiLCJpdGVtcyIsIml0ZW0iLCJab2REYXRlIiwiWm9kTGl0ZXJhbCIsInZhbHVlIiwiWm9kUmVjb3JkIiwiWm9kTWFwIiwia3ZEZWYiLCJrZXlUeXBlIiwidmFsdWVUeXBlIiwiWm9kU2V0IiwiWm9kSW50ZXJzZWN0aW9uIiwicmlnaHQiLCJab2REZWZhdWx0IiwidHlwZSIsInJlZmVyZW5jZXMiLCJyZXFUeXBlIiwiZXJyb3IiLCJjb25zb2xlIiwiRXJyb3IiLCJtb2RlbE5hbWUiLCJtZXRob2ROYW1lIl0sIm1hcHBpbmdzIjoiQUFBQSxPQUFPQSxRQUFRLEtBQUs7QUFDcEIsU0FBU0MsQ0FBQyxRQUFRLE1BQU07QUFDeEIsU0FBU0MsbUJBQW1CLFFBQVEsK0JBQTRCO0FBRWhFLFNBQVNDLE1BQU0sUUFBUSxzQkFBbUI7QUFDMUMsU0FBU0MsUUFBUSxRQUFRLGlCQUFjO0FBRXZDLE9BQU8sTUFBTUMsaUNBQWlDRDtJQUM1QyxhQUFjO1FBQ1osS0FBSyxDQUFDO0lBQ1I7SUFFQUUsbUJBQW1CO1FBQ2pCLE1BQU0sRUFBRUMsR0FBRyxFQUFFLEdBQUdKLE9BQU9LLE1BQU0sQ0FBQ0MsR0FBRztRQUVqQyxPQUFPO1lBQ0xDLFFBQVEsR0FBR0gsSUFBSSxnQkFBZ0IsQ0FBQztZQUNoQ0ksTUFBTSxDQUFDLHFCQUFxQixDQUFDO1FBQy9CO0lBQ0Y7SUFFQSxNQUFNQyxTQUFTO1FBQ2IsTUFBTSxFQUNKQyxRQUFRLEVBQUVDLEtBQUssRUFBRUMsSUFBSSxFQUFFLEVBQ3ZCUCxRQUFRLEVBQ05DLEtBQUssRUFDSE8sT0FBTyxFQUFFQyxNQUFNLEVBQUUsRUFDbEIsRUFDRixFQUNGLEdBQUdkO1FBRUosTUFBTWUsUUFBUSxNQUFNQyxRQUFRQyxHQUFHLENBQzdCTCxLQUFLTSxHQUFHLENBQUMsT0FBT1o7WUFDZCxNQUFNYSxZQUFZLElBQUksQ0FBQ0MsZ0JBQWdCLENBQUNkLEtBQUtLO1lBRTdDLE1BQU1VLFlBQVksTUFBTSxBQUFDLENBQUE7Z0JBQ3ZCLElBQUksQUFBQ2YsQ0FBQUEsSUFBSWdCLE9BQU8sQ0FBQ0MsVUFBVSxJQUFJLEtBQUksTUFBTyxPQUFPO29CQUMvQyxPQUFPO3dCQUNMQyxhQUFh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
|
|
135
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90ZW1wbGF0ZS9pbXBsZW1lbnRhdGlvbnMvZ2VuZXJhdGVkX2h0dHAudGVtcGxhdGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHFzIGZyb20gXCJxc1wiO1xuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIjtcbmltcG9ydCB7IGdldFpvZE9iamVjdEZyb21BcGkgfSBmcm9tIFwiLi4vLi4vYXBpL2NvZGUtY29udmVydGVyc1wiO1xuaW1wb3J0IHR5cGUgeyBFeHRlbmRlZEFwaSB9IGZyb20gXCIuLi8uLi9hcGkvZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHsgU29uYW11IH0gZnJvbSBcIi4uLy4uL2FwaS9zb25hbXVcIjtcbmltcG9ydCB7IFRlbXBsYXRlIH0gZnJvbSBcIi4uL3RlbXBsYXRlXCI7XG5cbmV4cG9ydCBjbGFzcyBUZW1wbGF0ZV9fZ2VuZXJhdGVkX2h0dHAgZXh0ZW5kcyBUZW1wbGF0ZSB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKFwiZ2VuZXJhdGVkX2h0dHBcIik7XG4gIH1cblxuICBnZXRUYXJnZXRBbmRQYXRoKCkge1xuICAgIGNvbnN0IHsgZGlyIH0gPSBTb25hbXUuY29uZmlnLmFwaTtcblxuICAgIHJldHVybiB7XG4gICAgICB0YXJnZXQ6IGAke2Rpcn0vc3JjL2FwcGxpY2F0aW9uYCxcbiAgICAgIHBhdGg6IGBzb25hbXUuZ2VuZXJhdGVkLmh0dHBgLFxuICAgIH07XG4gIH1cblxuICBhc3luYyByZW5kZXIoKSB7XG4gICAgY29uc3Qge1xuICAgICAgc3luY2VyOiB7IHR5cGVzLCBhcGlzIH0sXG4gICAgICBjb25maWc6IHtcbiAgICAgICAgYXBpOiB7XG4gICAgICAgICAgcm91dGU6IHsgcHJlZml4IH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0gPSBTb25hbXU7XG5cbiAgICBjb25zdCBsaW5lcyA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgYXBpcy5tYXAoYXN5bmMgKGFwaSkgPT4ge1xuICAgICAgICBjb25zdCByZXFPYmplY3QgPSB0aGlzLnJlc29sdmVBcGlQYXJhbXMoYXBpLCB0eXBlcyk7XG5cbiAgICAgICAgY29uc3QgZGF0YUxpbmVzID0gYXdhaXQgKGFzeW5jICgpID0+IHtcbiAgICAgICAgICBpZiAoKGFwaS5vcHRpb25zLmh0dHBNZXRob2QgPz8gXCJHRVRcIikgPT09IFwiR0VUXCIpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIHF1ZXJ5c3RyaW5nOiBbcXMuc3RyaW5naWZ5KHJlcU9iamVjdCwgeyBlbmNvZGU6IGZhbHNlIH0pLnNwbGl0KFwiJlwiKS5qb2luKFwiXFxuXFx0JlwiKV0sXG4gICAgICAgICAgICAgIGJvZHk6IFtdLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgcXVlcnlzdHJpbmc6IFtdLFxuICAgICAgICAgICAgICBib2R5OiBbXCJcIiwgSlNPTi5zdHJpbmdpZnkocmVxT2JqZWN0LCBudWxsLCAyKV0sXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgfSkoKTtcblxuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgIFtcbiAgICAgICAgICAgIGAke2FwaS5vcHRpb25zLmh0dHBNZXRob2QgPz8gXCJHRVRcIn0ge3tiYXNlVXJsfX0ke3ByZWZpeH0ke2FwaS5wYXRofWAsXG4gICAgICAgICAgICAuLi5kYXRhTGluZXMucXVlcnlzdHJpbmcsXG4gICAgICAgICAgXS5qb2luKFwiXFxuXFx0P1wiKSxcbiAgICAgICAgICBgQ29udGVudC1UeXBlOiAke2FwaS5vcHRpb25zLmNvbnRlbnRUeXBlID8/IFwiYXBwbGljYXRpb24vanNvblwifWAsXG4gICAgICAgICAgLi4uZGF0YUxpbmVzLmJvZHksXG4gICAgICAgIF0uam9pbihcIlxcblwiKTtcbiAgICAgIH0pLFxuICAgICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4udGhpcy5nZXRUYXJnZXRBbmRQYXRoKCksXG4gICAgICBib2R5OiBsaW5lcy5qb2luKFwiXFxuXFxuIyMjXFxuXFxuXCIpLFxuICAgICAgaW1wb3J0S2V5czogW10sXG4gICAgICBjdXN0b21IZWFkZXJzOiBbXCIjIEBnZW5lcmF0ZWRcIiwgXCIjIOyngeygkSDsiJjsoJXtlZjsp4Ag66eI7IS47JqULlwiXSxcbiAgICB9O1xuICB9XG5cbiAgem9kVHlwZVRvUmVxRGVmYXVsdCh6b2RUeXBlOiB6LlpvZFR5cGU8dW5rbm93bj4sIG5hbWU6IHN0cmluZyk6IHVua25vd24ge1xuICAgIGlmICh6b2RUeXBlIGluc3RhbmNlb2Ygei5ab2RPYmplY3QpIHtcbiAgICAgIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXMoXG4gICAgICAgIE9iamVjdC5rZXlzKHpvZFR5cGUuc2hhcGUpLm1hcCgoa2V5KSA9PiBbXG4gICAgICAgICAga2V5LFxuICAgICAgICAgIHRoaXMuem9kVHlwZVRvUmVxRGVmYXVsdCh6b2RUeXBlLnNoYXBlW2tleV0sIGtleSksXG4gICAgICAgIF0pLFxuICAgICAgKTtcbiAgICB9IGVsc2UgaWYgKHpvZFR5cGUgaW5zdGFuY2VvZiB6LlpvZEFycmF5KSB7XG4gICAgICByZXR1cm4gW3RoaXMuem9kVHlwZVRvUmVxRGVmYXVsdCgoem9kVHlwZSBhcyB6LlpvZEFycmF5PHouWm9kVHlwZT4pLmVsZW1lbnQsIG5hbWUpXTtcbiAgICB9IGVsc2UgaWYgKHpvZFR5cGUgaW5zdGFuY2VvZiB6LmNvcmUuJFpvZFN0cmluZykge1xuICAgICAgLy8gTk9URTogei5ab2RTdHJpbmfsnLzroZwg67mE6rWQ7ZWY66m0IHoudXJsKCksIHouZW1haWwoKSDrk7HsnZgg7YOA7J6F7JeQ7IScIOusuOygnOqwgCDsg53quLDrr4DroZwgei5jb3JlLiRab2RTdHJpbmfsnLzroZwg67mE6rWQ7ZWoXG4gICAgICBpZiAobmFtZS5lbmRzV2l0aChcIl9hdFwiKSB8fCBuYW1lLmVuZHNXaXRoKFwiX2RhdGVcIikgfHwgbmFtZSA9PT0gXCJyYW5nZVwiKSB7XG4gICAgICAgIHJldHVybiBcIjIwMDAtMDEtMDFcIjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBuYW1lLnRvVXBwZXJDYXNlKCk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh6b2RUeXBlIGluc3RhbmNlb2Ygei5ab2ROdW1iZXIpIHtcbiAgICAgIGlmIChuYW1lID09PSBcIm51bVwiKSB7XG4gICAgICAgIHJldHVybiAyNDtcbiAgICAgIH1cblxuICAgICAgY29uc3QgbWluVmFsdWUgPSB6b2RUeXBlLm1pblZhbHVlID8/IDA7XG4gICAgICByZXR1cm4gbWluVmFsdWUgPiBOdW1iZXIuTUlOX1NBRkVfSU5URUdFUiA/IG1pblZhbHVlIDogMDtcbiAgICB9IGVsc2UgaWYgKHpvZFR5cGUgaW5zdGFuY2VvZiB6LlpvZEJvb2xlYW4pIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9IGVsc2UgaWYgKHpvZFR5cGUgaW5zdGFuY2VvZiB6LlpvZEVudW0pIHtcbiAgICAgIHJldHVybiB6b2RUeXBlLm9wdGlvbnNbMF07XG4gICAgfSBlbHNlIGlmICh6b2RUeXBlIGluc3RhbmNlb2Ygei5ab2RPcHRpb25hbCkge1xuICAgICAgcmV0dXJuIHRoaXMuem9kVHlwZVRvUmVxRGVmYXVsdCgoem9kVHlwZSBhcyB6LlpvZE9wdGlvbmFsPHouWm9kVHlwZT4pLmRlZi5pbm5lclR5cGUsIG5hbWUpO1xuICAgIH0gZWxzZSBpZiAoem9kVHlwZSBpbnN0YW5jZW9mIHouWm9kTnVsbGFibGUpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH0gZWxzZSBpZiAoem9kVHlwZSBpbnN0YW5jZW9mIHouWm9kVW5pb24pIHtcbiAgICAgIHJldHVybiB0aGlzLnpvZFR5cGVUb1JlcURlZmF1bHQoKHpvZFR5cGUgYXMgei5ab2RVbmlvbjx6LlpvZFR5cGVbXT4pLmRlZi5vcHRpb25zWzBdLCBuYW1lKTtcbiAgICB9IGVsc2UgaWYgKHpvZFR5cGUgaW5zdGFuY2VvZiB6LlpvZFVua25vd24pIHtcbiAgICAgIHJldHVybiBcInVua25vd25cIjtcbiAgICB9IGVsc2UgaWYgKHpvZFR5cGUgaW5zdGFuY2VvZiB6LlpvZFR1cGxlKSB7XG4gICAgICAvKiogYmlvbWUtaWdub3JlIGxpbnQvc3VzcGljaW91cy9ub0V4cGxpY2l0QW55OiBab2RUdXBsZSDtg4DsnoUg7IKs7JqpICovXG4gICAgICByZXR1cm4gem9kVHlwZS5kZWYuaXRlbXMubWFwKChpdGVtOiBhbnkpID0+IHRoaXMuem9kVHlwZVRvUmVxRGVmYXVsdChpdGVtLCBuYW1lKSk7XG4gICAgfSBlbHNlIGlmICh6b2RUeXBlIGluc3RhbmNlb2Ygei5ab2REYXRlKSB7XG4gICAgICByZXR1cm4gXCIyMDAwLTAxLTAxXCI7XG4gICAgfSBlbHNlIGlmICh6b2RUeXBlIGluc3RhbmNlb2Ygei5ab2RMaXRlcmFsKSB7XG4gICAgICByZXR1cm4gem9kVHlwZS52YWx1ZTtcbiAgICB9IGVsc2UgaWYgKHpvZFR5cGUgaW5zdGFuY2VvZiB6LlpvZFJlY29yZCB8fCB6b2RUeXBlIGluc3RhbmNlb2Ygei5ab2RNYXApIHtcbiAgICAgIC8vIGJpb21lLWlnbm9yZSBsaW50L3N1c3BpY2lvdXMvbm9FeHBsaWNpdEFueTogWm9kUmVjb3JkIO2DgOyehSDsgqzsmqlcbiAgICAgIGNvbnN0IGt2RGVmID0gKHpvZFR5cGUgYXMgei5ab2RSZWNvcmQ8YW55LCB6LlpvZFR5cGU+IHwgei5ab2RNYXA8ei5ab2RUeXBlLCB6LlpvZFR5cGU+KS5kZWY7XG4gICAgICAvLyBiaW9tZS1pZ25vcmUgbGludC9zdXNwaWNpb3VzL25vRXhwbGljaXRBbnk6IFpvZEludGVyc2VjdGlvbiDtg4DsnoUg7IKs7JqpXG4gICAgICBjb25zdCBrZXkgPSB0aGlzLnpvZFR5cGVUb1JlcURlZmF1bHQoa3ZEZWYua2V5VHlwZSwgbmFtZSkgYXMgYW55O1xuICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLnpvZFR5cGVUb1JlcURlZmF1bHQoa3ZEZWYudmFsdWVUeXBlLCBuYW1lKTtcbiAgICAgIHJldHVybiB7IFtrZXldOiB2YWx1ZSB9O1xuICAgIH0gZWxzZSBpZiAoem9kVHlwZSBpbnN0YW5jZW9mIHouWm9kU2V0KSB7XG4gICAgICByZXR1cm4gW3RoaXMuem9kVHlwZVRvUmVxRGVmYXVsdCgoem9kVHlwZSBhcyB6LlpvZFNldDx6LlpvZFR5cGU+KS5kZWYudmFsdWVUeXBlLCBuYW1lKV07XG4gICAgfSBlbHNlIGlmICh6b2RUeXBlIGluc3RhbmNlb2Ygei5ab2RJbnRlcnNlY3Rpb24pIHtcbiAgICAgIHJldHVybiB0aGlzLnpvZFR5cGVUb1JlcURlZmF1bHQoXG4gICAgICAgICh6b2RUeXBlIGFzIHouWm9kSW50ZXJzZWN0aW9uPHouWm9kVHlwZSwgei5ab2RUeXBlPikuZGVmLnJpZ2h0LFxuICAgICAgICBuYW1lLFxuICAgICAgKTtcbiAgICB9IGVsc2UgaWYgKHpvZFR5cGUgaW5zdGFuY2VvZiB6LlpvZERlZmF1bHQpIHtcbiAgICAgIHJldHVybiB0aGlzLnpvZFR5cGVUb1JlcURlZmF1bHQoKHpvZFR5cGUgYXMgei5ab2REZWZhdWx0PHouWm9kVHlwZT4pLmRlZi5pbm5lclR5cGUsIG5hbWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBjb25zb2xlLmxvZyh6b2RUeXBlKTtcbiAgICAgIHJldHVybiBgdW5rbm93bi0ke3pvZFR5cGUudHlwZX1gO1xuICAgIH1cbiAgfVxuXG4gIHJlc29sdmVBcGlQYXJhbXMoXG4gICAgYXBpOiBFeHRlbmRlZEFwaSxcbiAgICByZWZlcmVuY2VzOiB7IFt0eXBlTmFtZTogc3RyaW5nXTogei5ab2RUeXBlIH0sXG4gICk6IHsgW2tleTogc3RyaW5nXTogdW5rbm93biB9IHtcbiAgICBjb25zdCByZXFUeXBlID0gZ2V0Wm9kT2JqZWN0RnJvbUFwaShhcGksIHJlZmVyZW5jZXMpO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBkZWYgPSB0aGlzLnpvZFR5cGVUb1JlcURlZmF1bHQocmVxVHlwZSwgXCJ1bmtub3duTmFtZVwiKSBhcyB7XG4gICAgICAgIFtrZXk6IHN0cmluZ106IHVua25vd247XG4gICAgICB9O1xuICAgICAgcmV0dXJuIGRlZjtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgem9kIHR5cGUgZGV0ZWN0ZWQgb24gJHthcGkubW9kZWxOYW1lfToke2FwaS5tZXRob2ROYW1lfWApO1xuICAgIH1cbiAgfVxufVxuIl0sIm5hbWVzIjpbInFzIiwieiIsImdldFpvZE9iamVjdEZyb21BcGkiLCJTb25hbXUiLCJUZW1wbGF0ZSIsIlRlbXBsYXRlX19nZW5lcmF0ZWRfaHR0cCIsImdldFRhcmdldEFuZFBhdGgiLCJkaXIiLCJjb25maWciLCJhcGkiLCJ0YXJnZXQiLCJwYXRoIiwicmVuZGVyIiwic3luY2VyIiwidHlwZXMiLCJhcGlzIiwicm91dGUiLCJwcmVmaXgiLCJsaW5lcyIsIlByb21pc2UiLCJhbGwiLCJtYXAiLCJyZXFPYmplY3QiLCJyZXNvbHZlQXBpUGFyYW1zIiwiZGF0YUxpbmVzIiwib3B0aW9ucyIsImh0dHBNZXRob2QiLCJxdWVyeXN0cmluZyIsInN0cmluZ2lmeSIsImVuY29kZSIsInNwbGl0Iiwiam9pbiIsImJvZHkiLCJKU09OIiwiY29udGVudFR5cGUiLCJpbXBvcnRLZXlzIiwiY3VzdG9tSGVhZGVycyIsInpvZFR5cGVUb1JlcURlZmF1bHQiLCJ6b2RUeXBlIiwibmFtZSIsIlpvZE9iamVjdCIsIk9iamVjdCIsImZyb21FbnRyaWVzIiwia2V5cyIsInNoYXBlIiwia2V5IiwiWm9kQXJyYXkiLCJlbGVtZW50IiwiY29yZSIsIiRab2RTdHJpbmciLCJlbmRzV2l0aCIsInRvVXBwZXJDYXNlIiwiWm9kTnVtYmVyIiwibWluVmFsdWUiLCJOdW1iZXIiLCJNSU5fU0FGRV9JTlRFR0VSIiwiWm9kQm9vbGVhbiIsIlpvZEVudW0iLCJab2RPcHRpb25hbCIsImRlZiIsImlubmVyVHlwZSIsIlpvZE51bGxhYmxlIiwiWm9kVW5pb24iLCJab2RVbmtub3duIiwiWm9kVHVwbGUiLCJpdGVtcyIsIml0ZW0iLCJab2REYXRlIiwiWm9kTGl0ZXJhbCIsInZhbHVlIiwiWm9kUmVjb3JkIiwiWm9kTWFwIiwia3ZEZWYiLCJrZXlUeXBlIiwidmFsdWVUeXBlIiwiWm9kU2V0IiwiWm9kSW50ZXJzZWN0aW9uIiwicmlnaHQiLCJab2REZWZhdWx0IiwidHlwZSIsInJlZmVyZW5jZXMiLCJyZXFUeXBlIiwiZXJyb3IiLCJjb25zb2xlIiwiRXJyb3IiLCJtb2RlbE5hbWUiLCJtZXRob2ROYW1lIl0sIm1hcHBpbmdzIjoiQUFBQSxPQUFPQSxRQUFRLEtBQUs7QUFDcEIsU0FBU0MsQ0FBQyxRQUFRLE1BQU07QUFDeEIsU0FBU0MsbUJBQW1CLFFBQVEsK0JBQTRCO0FBRWhFLFNBQVNDLE1BQU0sUUFBUSxzQkFBbUI7QUFDMUMsU0FBU0MsUUFBUSxRQUFRLGlCQUFjO0FBRXZDLE9BQU8sTUFBTUMsaUNBQWlDRDtJQUM1QyxhQUFjO1FBQ1osS0FBSyxDQUFDO0lBQ1I7SUFFQUUsbUJBQW1CO1FBQ2pCLE1BQU0sRUFBRUMsR0FBRyxFQUFFLEdBQUdKLE9BQU9LLE1BQU0sQ0FBQ0MsR0FBRztRQUVqQyxPQUFPO1lBQ0xDLFFBQVEsR0FBR0gsSUFBSSxnQkFBZ0IsQ0FBQztZQUNoQ0ksTUFBTSxDQUFDLHFCQUFxQixDQUFDO1FBQy9CO0lBQ0Y7SUFFQSxNQUFNQyxTQUFTO1FBQ2IsTUFBTSxFQUNKQyxRQUFRLEVBQUVDLEtBQUssRUFBRUMsSUFBSSxFQUFFLEVBQ3ZCUCxRQUFRLEVBQ05DLEtBQUssRUFDSE8sT0FBTyxFQUFFQyxNQUFNLEVBQUUsRUFDbEIsRUFDRixFQUNGLEdBQUdkO1FBRUosTUFBTWUsUUFBUSxNQUFNQyxRQUFRQyxHQUFHLENBQzdCTCxLQUFLTSxHQUFHLENBQUMsT0FBT1o7WUFDZCxNQUFNYSxZQUFZLElBQUksQ0FBQ0MsZ0JBQWdCLENBQUNkLEtBQUtLO1lBRTdDLE1BQU1VLFlBQVksTUFBTSxBQUFDLENBQUE7Z0JBQ3ZCLElBQUksQUFBQ2YsQ0FBQUEsSUFBSWdCLE9BQU8sQ0FBQ0MsVUFBVSxJQUFJLEtBQUksTUFBTyxPQUFPO29CQUMvQyxPQUFPO3dCQUNMQyxhQUFhOzRCQUFDM0IsR0FBRzRCLFNBQVMsQ0FBQ04sV0FBVztnQ0FBRU8sUUFBUTs0QkFBTSxHQUFHQyxLQUFLLENBQUMsS0FBS0MsSUFBSSxDQUFDO3lCQUFTO3dCQUNsRkMsTUFBTSxFQUFFO29CQUNWO2dCQUNGLE9BQU87b0JBQ0wsT0FBTzt3QkFDTEwsYUFBYSxFQUFFO3dCQUNmSyxNQUFNOzRCQUFDOzRCQUFJQyxLQUFLTCxTQUFTLENBQUNOLFdBQVcsTUFBTTt5QkFBRztvQkFDaEQ7Z0JBQ0Y7WUFDRixDQUFBO1lBRUEsT0FBTztnQkFDTDtvQkFDRSxHQUFHYixJQUFJZ0IsT0FBTyxDQUFDQyxVQUFVLElBQUksTUFBTSxZQUFZLEVBQUVULFNBQVNSLElBQUlFLElBQUksRUFBRTt1QkFDakVhLFVBQVVHLFdBQVc7aUJBQ3pCLENBQUNJLElBQUksQ0FBQztnQkFDUCxDQUFDLGNBQWMsRUFBRXRCLElBQUlnQixPQUFPLENBQUNTLFdBQVcsSUFBSSxvQkFBb0I7bUJBQzdEVixVQUFVUSxJQUFJO2FBQ2xCLENBQUNELElBQUksQ0FBQztRQUNUO1FBR0YsT0FBTztZQUNMLEdBQUcsSUFBSSxDQUFDekIsZ0JBQWdCLEVBQUU7WUFDMUIwQixNQUFNZCxNQUFNYSxJQUFJLENBQUM7WUFDakJJLFlBQVksRUFBRTtZQUNkQyxlQUFlO2dCQUFDO2dCQUFnQjthQUFpQjtRQUNuRDtJQUNGO0lBRUFDLG9CQUFvQkMsT0FBMkIsRUFBRUMsSUFBWSxFQUFXO1FBQ3RFLElBQUlELG1CQUFtQnJDLEVBQUV1QyxTQUFTLEVBQUU7WUFDbEMsT0FBT0MsT0FBT0MsV0FBVyxDQUN2QkQsT0FBT0UsSUFBSSxDQUFDTCxRQUFRTSxLQUFLLEVBQUV2QixHQUFHLENBQUMsQ0FBQ3dCLE1BQVE7b0JBQ3RDQTtvQkFDQSxJQUFJLENBQUNSLG1CQUFtQixDQUFDQyxRQUFRTSxLQUFLLENBQUNDLElBQUksRUFBRUE7aUJBQzlDO1FBRUwsT0FBTyxJQUFJUCxtQkFBbUJyQyxFQUFFNkMsUUFBUSxFQUFFO1lBQ3hDLE9BQU87Z0JBQUMsSUFBSSxDQUFDVCxtQkFBbUIsQ0FBQyxBQUFDQyxRQUFrQ1MsT0FBTyxFQUFFUjthQUFNO1FBQ3JGLE9BQU8sSUFBSUQsbUJBQW1CckMsRUFBRStDLElBQUksQ0FBQ0MsVUFBVSxFQUFFO1lBQy9DLHVGQUF1RjtZQUN2RixJQUFJVixLQUFLVyxRQUFRLENBQUMsVUFBVVgsS0FBS1csUUFBUSxDQUFDLFlBQVlYLFNBQVMsU0FBUztnQkFDdEUsT0FBTztZQUNULE9BQU87Z0JBQ0wsT0FBT0EsS0FBS1ksV0FBVztZQUN6QjtRQUNGLE9BQU8sSUFBSWIsbUJBQW1CckMsRUFBRW1ELFNBQVMsRUFBRTtZQUN6QyxJQUFJYixTQUFTLE9BQU87Z0JBQ2xCLE9BQU87WUFDVDtZQUVBLE1BQU1jLFdBQVdmLFFBQVFlLFFBQVEsSUFBSTtZQUNyQyxPQUFPQSxXQUFXQyxPQUFPQyxnQkFBZ0IsR0FBR0YsV0FBVztRQUN6RCxPQUFPLElBQUlmLG1CQUFtQnJDLEVBQUV1RCxVQUFVLEVBQUU7WUFDMUMsT0FBTztRQUNULE9BQU8sSUFBSWxCLG1CQUFtQnJDLEVBQUV3RCxPQUFPLEVBQUU7WUFDdkMsT0FBT25CLFFBQVFiLE9BQU8sQ0FBQyxFQUFFO1FBQzNCLE9BQU8sSUFBSWEsbUJBQW1CckMsRUFBRXlELFdBQVcsRUFBRTtZQUMzQyxPQUFPLElBQUksQ0FBQ3JCLG1CQUFtQixDQUFDLEFBQUNDLFFBQXFDcUIsR0FBRyxDQUFDQyxTQUFTLEVBQUVyQjtRQUN2RixPQUFPLElBQUlELG1CQUFtQnJDLEVBQUU0RCxXQUFXLEVBQUU7WUFDM0MsT0FBTztRQUNULE9BQU8sSUFBSXZCLG1CQUFtQnJDLEVBQUU2RCxRQUFRLEVBQUU7WUFDeEMsT0FBTyxJQUFJLENBQUN6QixtQkFBbUIsQ0FBQyxBQUFDQyxRQUFvQ3FCLEdBQUcsQ0FBQ2xDLE9BQU8sQ0FBQyxFQUFFLEVBQUVjO1FBQ3ZGLE9BQU8sSUFBSUQsbUJBQW1CckMsRUFBRThELFVBQVUsRUFBRTtZQUMxQyxPQUFPO1FBQ1QsT0FBTyxJQUFJekIsbUJBQW1CckMsRUFBRStELFFBQVEsRUFBRTtZQUN4QywrREFBK0QsR0FDL0QsT0FBTzFCLFFBQVFxQixHQUFHLENBQUNNLEtBQUssQ0FBQzVDLEdBQUcsQ0FBQyxDQUFDNkMsT0FBYyxJQUFJLENBQUM3QixtQkFBbUIsQ0FBQzZCLE1BQU0zQjtRQUM3RSxPQUFPLElBQUlELG1CQUFtQnJDLEVBQUVrRSxPQUFPLEVBQUU7WUFDdkMsT0FBTztRQUNULE9BQU8sSUFBSTdCLG1CQUFtQnJDLEVBQUVtRSxVQUFVLEVBQUU7WUFDMUMsT0FBTzlCLFFBQVErQixLQUFLO1FBQ3RCLE9BQU8sSUFBSS9CLG1CQUFtQnJDLEVBQUVxRSxTQUFTLElBQUloQyxtQkFBbUJyQyxFQUFFc0UsTUFBTSxFQUFFO1lBQ3hFLDhEQUE4RDtZQUM5RCxNQUFNQyxRQUFRLEFBQUNsQyxRQUF5RXFCLEdBQUc7WUFDM0Ysb0VBQW9FO1lBQ3BFLE1BQU1kLE1BQU0sSUFBSSxDQUFDUixtQkFBbUIsQ0FBQ21DLE1BQU1DLE9BQU8sRUFBRWxDO1lBQ3BELE1BQU04QixRQUFRLElBQUksQ0FBQ2hDLG1CQUFtQixDQUFDbUMsTUFBTUUsU0FBUyxFQUFFbkM7WUFDeEQsT0FBTztnQkFBRSxDQUFDTSxJQUFJLEVBQUV3QjtZQUFNO1FBQ3hCLE9BQU8sSUFBSS9CLG1CQUFtQnJDLEVBQUUwRSxNQUFNLEVBQUU7WUFDdEMsT0FBTztnQkFBQyxJQUFJLENBQUN0QyxtQkFBbUIsQ0FBQyxBQUFDQyxRQUFnQ3FCLEdBQUcsQ0FBQ2UsU0FBUyxFQUFFbkM7YUFBTTtRQUN6RixPQUFPLElBQUlELG1CQUFtQnJDLEVBQUUyRSxlQUFlLEVBQUU7WUFDL0MsT0FBTyxJQUFJLENBQUN2QyxtQkFBbUIsQ0FDN0IsQUFBQ0MsUUFBb0RxQixHQUFHLENBQUNrQixLQUFLLEVBQzlEdEM7UUFFSixPQUFPLElBQUlELG1CQUFtQnJDLEVBQUU2RSxVQUFVLEVBQUU7WUFDMUMsT0FBTyxJQUFJLENBQUN6QyxtQkFBbUIsQ0FBQyxBQUFDQyxRQUFvQ3FCLEdBQUcsQ0FBQ0MsU0FBUyxFQUFFckI7UUFDdEYsT0FBTztZQUNMLHdCQUF3QjtZQUN4QixPQUFPLENBQUMsUUFBUSxFQUFFRCxRQUFReUMsSUFBSSxFQUFFO1FBQ2xDO0lBQ0Y7SUFFQXhELGlCQUNFZCxHQUFnQixFQUNoQnVFLFVBQTZDLEVBQ2pCO1FBQzVCLE1BQU1DLFVBQVUvRSxvQkFBb0JPLEtBQUt1RTtRQUN6QyxJQUFJO1lBQ0YsTUFBTXJCLE1BQU0sSUFBSSxDQUFDdEIsbUJBQW1CLENBQUM0QyxTQUFTO1lBRzlDLE9BQU90QjtRQUNULEVBQUUsT0FBT3VCLE9BQU87WUFDZEMsUUFBUUQsS0FBSyxDQUFDQTtZQUNkLE1BQU0sSUFBSUUsTUFBTSxDQUFDLDZCQUE2QixFQUFFM0UsSUFBSTRFLFNBQVMsQ0FBQyxDQUFDLEVBQUU1RSxJQUFJNkUsVUFBVSxFQUFFO1FBQ25GO0lBQ0Y7QUFDRiJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generated_sso.template.d.ts","sourceRoot":"","sources":["../../../src/template/implementations/generated_sso.template.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAyBvC,qBAAa,uBAAwB,SAAQ,QAAQ;;IAKnD,gBAAgB;;;;IAShB,MAAM;;;;;;;
|
|
1
|
+
{"version":3,"file":"generated_sso.template.d.ts","sourceRoot":"","sources":["../../../src/template/implementations/generated_sso.template.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAyBvC,qBAAa,uBAAwB,SAAQ,QAAQ;;IAKnD,gBAAgB;;;;IAShB,MAAM;;;;;;;IAuHN,OAAO,CAAC,2BAA2B;IAwEnC,OAAO,CAAC,oBAAoB;IAc5B,OAAO,CAAC,2BAA2B;IA4BnC;;;OAGG;IACH,OAAO,CAAC,yBAAyB;IA6CjC;;OAEG;IACH,OAAO,CAAC,aAAa;CAGtB"}
|