@sinequa/assistant 3.10.4 → 3.10.10
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/chat/index.d.ts +2155 -3
- package/fesm2022/sinequa-assistant-chat.mjs +764 -593
- package/fesm2022/sinequa-assistant-chat.mjs.map +1 -1
- package/index.d.ts +3 -5
- package/node_modules/zod/LICENSE +21 -0
- package/node_modules/zod/README.md +208 -0
- package/node_modules/zod/index.cjs +33 -0
- package/node_modules/zod/index.d.cts +4 -0
- package/node_modules/zod/index.d.ts +4 -0
- package/node_modules/zod/index.js +4 -0
- package/node_modules/zod/locales/index.cjs +17 -0
- package/node_modules/zod/locales/index.d.cts +1 -0
- package/node_modules/zod/locales/index.d.ts +1 -0
- package/node_modules/zod/locales/index.js +1 -0
- package/node_modules/zod/locales/package.json +6 -0
- package/node_modules/zod/mini/index.cjs +32 -0
- package/node_modules/zod/mini/index.d.cts +3 -0
- package/node_modules/zod/mini/index.d.ts +3 -0
- package/node_modules/zod/mini/index.js +3 -0
- package/node_modules/zod/mini/package.json +6 -0
- package/node_modules/zod/package.json +135 -0
- package/node_modules/zod/src/index.ts +4 -0
- package/node_modules/zod/src/locales/index.ts +1 -0
- package/node_modules/zod/src/mini/index.ts +3 -0
- package/node_modules/zod/src/v3/ZodError.ts +330 -0
- package/node_modules/zod/src/v3/benchmarks/datetime.ts +58 -0
- package/node_modules/zod/src/v3/benchmarks/discriminatedUnion.ts +80 -0
- package/node_modules/zod/src/v3/benchmarks/index.ts +59 -0
- package/node_modules/zod/src/v3/benchmarks/ipv4.ts +57 -0
- package/node_modules/zod/src/v3/benchmarks/object.ts +69 -0
- package/node_modules/zod/src/v3/benchmarks/primitives.ts +162 -0
- package/node_modules/zod/src/v3/benchmarks/realworld.ts +63 -0
- package/node_modules/zod/src/v3/benchmarks/string.ts +55 -0
- package/node_modules/zod/src/v3/benchmarks/union.ts +80 -0
- package/node_modules/zod/src/v3/errors.ts +13 -0
- package/node_modules/zod/src/v3/external.ts +6 -0
- package/node_modules/zod/src/v3/helpers/enumUtil.ts +17 -0
- package/node_modules/zod/src/v3/helpers/errorUtil.ts +8 -0
- package/node_modules/zod/src/v3/helpers/parseUtil.ts +176 -0
- package/node_modules/zod/src/v3/helpers/partialUtil.ts +34 -0
- package/node_modules/zod/src/v3/helpers/typeAliases.ts +2 -0
- package/node_modules/zod/src/v3/helpers/util.ts +224 -0
- package/node_modules/zod/src/v3/index.ts +4 -0
- package/node_modules/zod/src/v3/locales/en.ts +124 -0
- package/node_modules/zod/src/v3/standard-schema.ts +113 -0
- package/node_modules/zod/src/v3/tests/Mocker.ts +54 -0
- package/node_modules/zod/src/v3/tests/all-errors.test.ts +157 -0
- package/node_modules/zod/src/v3/tests/anyunknown.test.ts +28 -0
- package/node_modules/zod/src/v3/tests/array.test.ts +71 -0
- package/node_modules/zod/src/v3/tests/async-parsing.test.ts +388 -0
- package/node_modules/zod/src/v3/tests/async-refinements.test.ts +46 -0
- package/node_modules/zod/src/v3/tests/base.test.ts +29 -0
- package/node_modules/zod/src/v3/tests/bigint.test.ts +55 -0
- package/node_modules/zod/src/v3/tests/branded.test.ts +53 -0
- package/node_modules/zod/src/v3/tests/catch.test.ts +220 -0
- package/node_modules/zod/src/v3/tests/coerce.test.ts +133 -0
- package/node_modules/zod/src/v3/tests/complex.test.ts +70 -0
- package/node_modules/zod/src/v3/tests/custom.test.ts +31 -0
- package/node_modules/zod/src/v3/tests/date.test.ts +32 -0
- package/node_modules/zod/src/v3/tests/deepmasking.test.ts +186 -0
- package/node_modules/zod/src/v3/tests/default.test.ts +112 -0
- package/node_modules/zod/src/v3/tests/description.test.ts +33 -0
- package/node_modules/zod/src/v3/tests/discriminated-unions.test.ts +315 -0
- package/node_modules/zod/src/v3/tests/enum.test.ts +80 -0
- package/node_modules/zod/src/v3/tests/error.test.ts +551 -0
- package/node_modules/zod/src/v3/tests/firstparty.test.ts +87 -0
- package/node_modules/zod/src/v3/tests/firstpartyschematypes.test.ts +21 -0
- package/node_modules/zod/src/v3/tests/function.test.ts +261 -0
- package/node_modules/zod/src/v3/tests/generics.test.ts +48 -0
- package/node_modules/zod/src/v3/tests/instanceof.test.ts +37 -0
- package/node_modules/zod/src/v3/tests/intersection.test.ts +110 -0
- package/node_modules/zod/src/v3/tests/language-server.source.ts +76 -0
- package/node_modules/zod/src/v3/tests/language-server.test.ts +207 -0
- package/node_modules/zod/src/v3/tests/literal.test.ts +36 -0
- package/node_modules/zod/src/v3/tests/map.test.ts +110 -0
- package/node_modules/zod/src/v3/tests/masking.test.ts +4 -0
- package/node_modules/zod/src/v3/tests/mocker.test.ts +19 -0
- package/node_modules/zod/src/v3/tests/nan.test.ts +24 -0
- package/node_modules/zod/src/v3/tests/nativeEnum.test.ts +87 -0
- package/node_modules/zod/src/v3/tests/nullable.test.ts +42 -0
- package/node_modules/zod/src/v3/tests/number.test.ts +176 -0
- package/node_modules/zod/src/v3/tests/object-augmentation.test.ts +29 -0
- package/node_modules/zod/src/v3/tests/object-in-es5-env.test.ts +29 -0
- package/node_modules/zod/src/v3/tests/object.test.ts +434 -0
- package/node_modules/zod/src/v3/tests/optional.test.ts +42 -0
- package/node_modules/zod/src/v3/tests/parseUtil.test.ts +23 -0
- package/node_modules/zod/src/v3/tests/parser.test.ts +41 -0
- package/node_modules/zod/src/v3/tests/partials.test.ts +243 -0
- package/node_modules/zod/src/v3/tests/pickomit.test.ts +111 -0
- package/node_modules/zod/src/v3/tests/pipeline.test.ts +29 -0
- package/node_modules/zod/src/v3/tests/preprocess.test.ts +186 -0
- package/node_modules/zod/src/v3/tests/primitive.test.ts +440 -0
- package/node_modules/zod/src/v3/tests/promise.test.ts +90 -0
- package/node_modules/zod/src/v3/tests/readonly.test.ts +194 -0
- package/node_modules/zod/src/v3/tests/record.test.ts +171 -0
- package/node_modules/zod/src/v3/tests/recursive.test.ts +197 -0
- package/node_modules/zod/src/v3/tests/refine.test.ts +313 -0
- package/node_modules/zod/src/v3/tests/safeparse.test.ts +27 -0
- package/node_modules/zod/src/v3/tests/set.test.ts +142 -0
- package/node_modules/zod/src/v3/tests/standard-schema.test.ts +83 -0
- package/node_modules/zod/src/v3/tests/string.test.ts +916 -0
- package/node_modules/zod/src/v3/tests/transformer.test.ts +233 -0
- package/node_modules/zod/src/v3/tests/tuple.test.ts +90 -0
- package/node_modules/zod/src/v3/tests/unions.test.ts +57 -0
- package/node_modules/zod/src/v3/tests/validations.test.ts +133 -0
- package/node_modules/zod/src/v3/tests/void.test.ts +15 -0
- package/node_modules/zod/src/v3/types.ts +5138 -0
- package/node_modules/zod/src/v4/classic/checks.ts +32 -0
- package/node_modules/zod/src/v4/classic/coerce.ts +27 -0
- package/node_modules/zod/src/v4/classic/compat.ts +70 -0
- package/node_modules/zod/src/v4/classic/errors.ts +82 -0
- package/node_modules/zod/src/v4/classic/external.ts +51 -0
- package/node_modules/zod/src/v4/classic/from-json-schema.ts +643 -0
- package/node_modules/zod/src/v4/classic/index.ts +5 -0
- package/node_modules/zod/src/v4/classic/iso.ts +90 -0
- package/node_modules/zod/src/v4/classic/parse.ts +82 -0
- package/node_modules/zod/src/v4/classic/schemas.ts +2409 -0
- package/node_modules/zod/src/v4/classic/tests/anyunknown.test.ts +26 -0
- package/node_modules/zod/src/v4/classic/tests/apply.test.ts +59 -0
- package/node_modules/zod/src/v4/classic/tests/array.test.ts +264 -0
- package/node_modules/zod/src/v4/classic/tests/assignability.test.ts +210 -0
- package/node_modules/zod/src/v4/classic/tests/async-parsing.test.ts +381 -0
- package/node_modules/zod/src/v4/classic/tests/async-refinements.test.ts +68 -0
- package/node_modules/zod/src/v4/classic/tests/base.test.ts +7 -0
- package/node_modules/zod/src/v4/classic/tests/bigint.test.ts +54 -0
- package/node_modules/zod/src/v4/classic/tests/brand.test.ts +106 -0
- package/node_modules/zod/src/v4/classic/tests/catch.test.ts +276 -0
- package/node_modules/zod/src/v4/classic/tests/coalesce.test.ts +20 -0
- package/node_modules/zod/src/v4/classic/tests/codec-examples.test.ts +573 -0
- package/node_modules/zod/src/v4/classic/tests/codec.test.ts +562 -0
- package/node_modules/zod/src/v4/classic/tests/coerce.test.ts +160 -0
- package/node_modules/zod/src/v4/classic/tests/continuability.test.ts +374 -0
- package/node_modules/zod/src/v4/classic/tests/custom.test.ts +40 -0
- package/node_modules/zod/src/v4/classic/tests/date.test.ts +62 -0
- package/node_modules/zod/src/v4/classic/tests/datetime.test.ts +302 -0
- package/node_modules/zod/src/v4/classic/tests/default.test.ts +365 -0
- package/node_modules/zod/src/v4/classic/tests/describe-meta-checks.test.ts +27 -0
- package/node_modules/zod/src/v4/classic/tests/description.test.ts +32 -0
- package/node_modules/zod/src/v4/classic/tests/discriminated-unions.test.ts +661 -0
- package/node_modules/zod/src/v4/classic/tests/enum.test.ts +285 -0
- package/node_modules/zod/src/v4/classic/tests/error-utils.test.ts +595 -0
- package/node_modules/zod/src/v4/classic/tests/error.test.ts +711 -0
- package/node_modules/zod/src/v4/classic/tests/file.test.ts +96 -0
- package/node_modules/zod/src/v4/classic/tests/firstparty.test.ts +179 -0
- package/node_modules/zod/src/v4/classic/tests/fix-json-issue.test.ts +26 -0
- package/node_modules/zod/src/v4/classic/tests/from-json-schema.test.ts +734 -0
- package/node_modules/zod/src/v4/classic/tests/function.test.ts +360 -0
- package/node_modules/zod/src/v4/classic/tests/generics.test.ts +72 -0
- package/node_modules/zod/src/v4/classic/tests/hash.test.ts +68 -0
- package/node_modules/zod/src/v4/classic/tests/index.test.ts +939 -0
- package/node_modules/zod/src/v4/classic/tests/instanceof.test.ts +60 -0
- package/node_modules/zod/src/v4/classic/tests/intersection.test.ts +198 -0
- package/node_modules/zod/src/v4/classic/tests/json.test.ts +109 -0
- package/node_modules/zod/src/v4/classic/tests/lazy.test.ts +227 -0
- package/node_modules/zod/src/v4/classic/tests/literal.test.ts +117 -0
- package/node_modules/zod/src/v4/classic/tests/map.test.ts +330 -0
- package/node_modules/zod/src/v4/classic/tests/nan.test.ts +21 -0
- package/node_modules/zod/src/v4/classic/tests/nested-refine.test.ts +168 -0
- package/node_modules/zod/src/v4/classic/tests/nonoptional.test.ts +101 -0
- package/node_modules/zod/src/v4/classic/tests/nullable.test.ts +22 -0
- package/node_modules/zod/src/v4/classic/tests/number.test.ts +270 -0
- package/node_modules/zod/src/v4/classic/tests/object.test.ts +640 -0
- package/node_modules/zod/src/v4/classic/tests/optional.test.ts +223 -0
- package/node_modules/zod/src/v4/classic/tests/partial.test.ts +427 -0
- package/node_modules/zod/src/v4/classic/tests/pickomit.test.ts +211 -0
- package/node_modules/zod/src/v4/classic/tests/pipe.test.ts +101 -0
- package/node_modules/zod/src/v4/classic/tests/prefault.test.ts +74 -0
- package/node_modules/zod/src/v4/classic/tests/preprocess.test.ts +282 -0
- package/node_modules/zod/src/v4/classic/tests/primitive.test.ts +175 -0
- package/node_modules/zod/src/v4/classic/tests/promise.test.ts +81 -0
- package/node_modules/zod/src/v4/classic/tests/prototypes.test.ts +23 -0
- package/node_modules/zod/src/v4/classic/tests/readonly.test.ts +252 -0
- package/node_modules/zod/src/v4/classic/tests/record.test.ts +632 -0
- package/node_modules/zod/src/v4/classic/tests/recursive-types.test.ts +582 -0
- package/node_modules/zod/src/v4/classic/tests/refine.test.ts +570 -0
- package/node_modules/zod/src/v4/classic/tests/registries.test.ts +243 -0
- package/node_modules/zod/src/v4/classic/tests/set.test.ts +181 -0
- package/node_modules/zod/src/v4/classic/tests/standard-schema.test.ts +134 -0
- package/node_modules/zod/src/v4/classic/tests/string-formats.test.ts +125 -0
- package/node_modules/zod/src/v4/classic/tests/string.test.ts +1175 -0
- package/node_modules/zod/src/v4/classic/tests/stringbool.test.ts +106 -0
- package/node_modules/zod/src/v4/classic/tests/template-literal.test.ts +771 -0
- package/node_modules/zod/src/v4/classic/tests/to-json-schema-methods.test.ts +438 -0
- package/node_modules/zod/src/v4/classic/tests/to-json-schema.test.ts +2990 -0
- package/node_modules/zod/src/v4/classic/tests/transform.test.ts +361 -0
- package/node_modules/zod/src/v4/classic/tests/tuple.test.ts +183 -0
- package/node_modules/zod/src/v4/classic/tests/union.test.ts +219 -0
- package/node_modules/zod/src/v4/classic/tests/url.test.ts +13 -0
- package/node_modules/zod/src/v4/classic/tests/validations.test.ts +283 -0
- package/node_modules/zod/src/v4/classic/tests/void.test.ts +12 -0
- package/node_modules/zod/src/v4/core/api.ts +1798 -0
- package/node_modules/zod/src/v4/core/checks.ts +1293 -0
- package/node_modules/zod/src/v4/core/config.ts +15 -0
- package/node_modules/zod/src/v4/core/core.ts +138 -0
- package/node_modules/zod/src/v4/core/doc.ts +44 -0
- package/node_modules/zod/src/v4/core/errors.ts +448 -0
- package/node_modules/zod/src/v4/core/index.ts +16 -0
- package/node_modules/zod/src/v4/core/json-schema-generator.ts +126 -0
- package/node_modules/zod/src/v4/core/json-schema-processors.ts +667 -0
- package/node_modules/zod/src/v4/core/json-schema.ts +147 -0
- package/node_modules/zod/src/v4/core/parse.ts +195 -0
- package/node_modules/zod/src/v4/core/regexes.ts +183 -0
- package/node_modules/zod/src/v4/core/registries.ts +105 -0
- package/node_modules/zod/src/v4/core/schemas.ts +4538 -0
- package/node_modules/zod/src/v4/core/standard-schema.ts +159 -0
- package/node_modules/zod/src/v4/core/tests/extend.test.ts +59 -0
- package/node_modules/zod/src/v4/core/tests/index.test.ts +46 -0
- package/node_modules/zod/src/v4/core/tests/locales/be.test.ts +124 -0
- package/node_modules/zod/src/v4/core/tests/locales/en.test.ts +22 -0
- package/node_modules/zod/src/v4/core/tests/locales/es.test.ts +181 -0
- package/node_modules/zod/src/v4/core/tests/locales/he.test.ts +379 -0
- package/node_modules/zod/src/v4/core/tests/locales/nl.test.ts +46 -0
- package/node_modules/zod/src/v4/core/tests/locales/ru.test.ts +128 -0
- package/node_modules/zod/src/v4/core/tests/locales/tr.test.ts +69 -0
- package/node_modules/zod/src/v4/core/tests/locales/uz.test.ts +83 -0
- package/node_modules/zod/src/v4/core/tests/record-constructor.test.ts +67 -0
- package/node_modules/zod/src/v4/core/tests/recursive-tuples.test.ts +45 -0
- package/node_modules/zod/src/v4/core/to-json-schema.ts +613 -0
- package/node_modules/zod/src/v4/core/util.ts +966 -0
- package/node_modules/zod/src/v4/core/versions.ts +5 -0
- package/node_modules/zod/src/v4/core/zsf.ts +323 -0
- package/node_modules/zod/src/v4/index.ts +4 -0
- package/node_modules/zod/src/v4/locales/ar.ts +115 -0
- package/node_modules/zod/src/v4/locales/az.ts +111 -0
- package/node_modules/zod/src/v4/locales/be.ts +176 -0
- package/node_modules/zod/src/v4/locales/bg.ts +128 -0
- package/node_modules/zod/src/v4/locales/ca.ts +116 -0
- package/node_modules/zod/src/v4/locales/cs.ts +118 -0
- package/node_modules/zod/src/v4/locales/da.ts +123 -0
- package/node_modules/zod/src/v4/locales/de.ts +116 -0
- package/node_modules/zod/src/v4/locales/en.ts +119 -0
- package/node_modules/zod/src/v4/locales/eo.ts +118 -0
- package/node_modules/zod/src/v4/locales/es.ts +141 -0
- package/node_modules/zod/src/v4/locales/fa.ts +126 -0
- package/node_modules/zod/src/v4/locales/fi.ts +121 -0
- package/node_modules/zod/src/v4/locales/fr-CA.ts +116 -0
- package/node_modules/zod/src/v4/locales/fr.ts +116 -0
- package/node_modules/zod/src/v4/locales/he.ts +246 -0
- package/node_modules/zod/src/v4/locales/hu.ts +117 -0
- package/node_modules/zod/src/v4/locales/hy.ts +164 -0
- package/node_modules/zod/src/v4/locales/id.ts +115 -0
- package/node_modules/zod/src/v4/locales/index.ts +49 -0
- package/node_modules/zod/src/v4/locales/is.ts +119 -0
- package/node_modules/zod/src/v4/locales/it.ts +116 -0
- package/node_modules/zod/src/v4/locales/ja.ts +114 -0
- package/node_modules/zod/src/v4/locales/ka.ts +123 -0
- package/node_modules/zod/src/v4/locales/kh.ts +7 -0
- package/node_modules/zod/src/v4/locales/km.ts +119 -0
- package/node_modules/zod/src/v4/locales/ko.ts +121 -0
- package/node_modules/zod/src/v4/locales/lt.ts +239 -0
- package/node_modules/zod/src/v4/locales/mk.ts +118 -0
- package/node_modules/zod/src/v4/locales/ms.ts +115 -0
- package/node_modules/zod/src/v4/locales/nl.ts +121 -0
- package/node_modules/zod/src/v4/locales/no.ts +116 -0
- package/node_modules/zod/src/v4/locales/ota.ts +117 -0
- package/node_modules/zod/src/v4/locales/pl.ts +118 -0
- package/node_modules/zod/src/v4/locales/ps.ts +126 -0
- package/node_modules/zod/src/v4/locales/pt.ts +116 -0
- package/node_modules/zod/src/v4/locales/ru.ts +176 -0
- package/node_modules/zod/src/v4/locales/sl.ts +118 -0
- package/node_modules/zod/src/v4/locales/sv.ts +119 -0
- package/node_modules/zod/src/v4/locales/ta.ts +118 -0
- package/node_modules/zod/src/v4/locales/th.ts +119 -0
- package/node_modules/zod/src/v4/locales/tr.ts +111 -0
- package/node_modules/zod/src/v4/locales/ua.ts +7 -0
- package/node_modules/zod/src/v4/locales/uk.ts +117 -0
- package/node_modules/zod/src/v4/locales/ur.ts +119 -0
- package/node_modules/zod/src/v4/locales/uz.ts +116 -0
- package/node_modules/zod/src/v4/locales/vi.ts +117 -0
- package/node_modules/zod/src/v4/locales/yo.ts +124 -0
- package/node_modules/zod/src/v4/locales/zh-CN.ts +116 -0
- package/node_modules/zod/src/v4/locales/zh-TW.ts +115 -0
- package/node_modules/zod/src/v4/mini/checks.ts +32 -0
- package/node_modules/zod/src/v4/mini/coerce.ts +27 -0
- package/node_modules/zod/src/v4/mini/external.ts +40 -0
- package/node_modules/zod/src/v4/mini/index.ts +3 -0
- package/node_modules/zod/src/v4/mini/iso.ts +66 -0
- package/node_modules/zod/src/v4/mini/parse.ts +14 -0
- package/node_modules/zod/src/v4/mini/schemas.ts +1916 -0
- package/node_modules/zod/src/v4/mini/tests/apply.test.ts +24 -0
- package/node_modules/zod/src/v4/mini/tests/assignability.test.ts +129 -0
- package/node_modules/zod/src/v4/mini/tests/brand.test.ts +94 -0
- package/node_modules/zod/src/v4/mini/tests/checks.test.ts +144 -0
- package/node_modules/zod/src/v4/mini/tests/codec.test.ts +529 -0
- package/node_modules/zod/src/v4/mini/tests/computed.test.ts +36 -0
- package/node_modules/zod/src/v4/mini/tests/error.test.ts +22 -0
- package/node_modules/zod/src/v4/mini/tests/functions.test.ts +5 -0
- package/node_modules/zod/src/v4/mini/tests/index.test.ts +963 -0
- package/node_modules/zod/src/v4/mini/tests/number.test.ts +95 -0
- package/node_modules/zod/src/v4/mini/tests/object.test.ts +227 -0
- package/node_modules/zod/src/v4/mini/tests/prototypes.test.ts +43 -0
- package/node_modules/zod/src/v4/mini/tests/recursive-types.test.ts +275 -0
- package/node_modules/zod/src/v4/mini/tests/standard-schema.test.ts +50 -0
- package/node_modules/zod/src/v4/mini/tests/string.test.ts +347 -0
- package/node_modules/zod/src/v4-mini/index.ts +3 -0
- package/node_modules/zod/v3/ZodError.cjs +138 -0
- package/node_modules/zod/v3/ZodError.d.cts +164 -0
- package/node_modules/zod/v3/ZodError.d.ts +164 -0
- package/node_modules/zod/v3/ZodError.js +133 -0
- package/node_modules/zod/v3/errors.cjs +17 -0
- package/node_modules/zod/v3/errors.d.cts +5 -0
- package/node_modules/zod/v3/errors.d.ts +5 -0
- package/node_modules/zod/v3/errors.js +9 -0
- package/node_modules/zod/v3/external.cjs +22 -0
- package/node_modules/zod/v3/external.d.cts +6 -0
- package/node_modules/zod/v3/external.d.ts +6 -0
- package/node_modules/zod/v3/external.js +6 -0
- package/node_modules/zod/v3/helpers/enumUtil.cjs +2 -0
- package/node_modules/zod/v3/helpers/enumUtil.d.cts +8 -0
- package/node_modules/zod/v3/helpers/enumUtil.d.ts +8 -0
- package/node_modules/zod/v3/helpers/enumUtil.js +1 -0
- package/node_modules/zod/v3/helpers/errorUtil.cjs +9 -0
- package/node_modules/zod/v3/helpers/errorUtil.d.cts +9 -0
- package/node_modules/zod/v3/helpers/errorUtil.d.ts +9 -0
- package/node_modules/zod/v3/helpers/errorUtil.js +6 -0
- package/node_modules/zod/v3/helpers/parseUtil.cjs +124 -0
- package/node_modules/zod/v3/helpers/parseUtil.d.cts +78 -0
- package/node_modules/zod/v3/helpers/parseUtil.d.ts +78 -0
- package/node_modules/zod/v3/helpers/parseUtil.js +109 -0
- package/node_modules/zod/v3/helpers/partialUtil.cjs +2 -0
- package/node_modules/zod/v3/helpers/partialUtil.d.cts +8 -0
- package/node_modules/zod/v3/helpers/partialUtil.d.ts +8 -0
- package/node_modules/zod/v3/helpers/partialUtil.js +1 -0
- package/node_modules/zod/v3/helpers/typeAliases.cjs +2 -0
- package/node_modules/zod/v3/helpers/typeAliases.d.cts +2 -0
- package/node_modules/zod/v3/helpers/typeAliases.d.ts +2 -0
- package/node_modules/zod/v3/helpers/typeAliases.js +1 -0
- package/node_modules/zod/v3/helpers/util.cjs +137 -0
- package/node_modules/zod/v3/helpers/util.d.cts +85 -0
- package/node_modules/zod/v3/helpers/util.d.ts +85 -0
- package/node_modules/zod/v3/helpers/util.js +133 -0
- package/node_modules/zod/v3/index.cjs +33 -0
- package/node_modules/zod/v3/index.d.cts +4 -0
- package/node_modules/zod/v3/index.d.ts +4 -0
- package/node_modules/zod/v3/index.js +4 -0
- package/node_modules/zod/v3/locales/en.cjs +112 -0
- package/node_modules/zod/v3/locales/en.d.cts +3 -0
- package/node_modules/zod/v3/locales/en.d.ts +3 -0
- package/node_modules/zod/v3/locales/en.js +109 -0
- package/node_modules/zod/v3/package.json +6 -0
- package/node_modules/zod/v3/standard-schema.cjs +2 -0
- package/node_modules/zod/v3/standard-schema.d.cts +102 -0
- package/node_modules/zod/v3/standard-schema.d.ts +102 -0
- package/node_modules/zod/v3/standard-schema.js +1 -0
- package/node_modules/zod/v3/types.cjs +3777 -0
- package/node_modules/zod/v3/types.d.cts +1034 -0
- package/node_modules/zod/v3/types.d.ts +1034 -0
- package/node_modules/zod/v3/types.js +3695 -0
- package/node_modules/zod/v4/classic/checks.cjs +33 -0
- package/node_modules/zod/v4/classic/checks.d.cts +1 -0
- package/node_modules/zod/v4/classic/checks.d.ts +1 -0
- package/node_modules/zod/v4/classic/checks.js +1 -0
- package/node_modules/zod/v4/classic/coerce.cjs +47 -0
- package/node_modules/zod/v4/classic/coerce.d.cts +17 -0
- package/node_modules/zod/v4/classic/coerce.d.ts +17 -0
- package/node_modules/zod/v4/classic/coerce.js +17 -0
- package/node_modules/zod/v4/classic/compat.cjs +61 -0
- package/node_modules/zod/v4/classic/compat.d.cts +50 -0
- package/node_modules/zod/v4/classic/compat.d.ts +50 -0
- package/node_modules/zod/v4/classic/compat.js +31 -0
- package/node_modules/zod/v4/classic/errors.cjs +74 -0
- package/node_modules/zod/v4/classic/errors.d.cts +30 -0
- package/node_modules/zod/v4/classic/errors.d.ts +30 -0
- package/node_modules/zod/v4/classic/errors.js +48 -0
- package/node_modules/zod/v4/classic/external.cjs +73 -0
- package/node_modules/zod/v4/classic/external.d.cts +15 -0
- package/node_modules/zod/v4/classic/external.d.ts +15 -0
- package/node_modules/zod/v4/classic/external.js +20 -0
- package/node_modules/zod/v4/classic/from-json-schema.cjs +610 -0
- package/node_modules/zod/v4/classic/from-json-schema.d.cts +12 -0
- package/node_modules/zod/v4/classic/from-json-schema.d.ts +12 -0
- package/node_modules/zod/v4/classic/from-json-schema.js +584 -0
- package/node_modules/zod/v4/classic/index.cjs +33 -0
- package/node_modules/zod/v4/classic/index.d.cts +4 -0
- package/node_modules/zod/v4/classic/index.d.ts +4 -0
- package/node_modules/zod/v4/classic/index.js +4 -0
- package/node_modules/zod/v4/classic/iso.cjs +60 -0
- package/node_modules/zod/v4/classic/iso.d.cts +22 -0
- package/node_modules/zod/v4/classic/iso.d.ts +22 -0
- package/node_modules/zod/v4/classic/iso.js +30 -0
- package/node_modules/zod/v4/classic/package.json +6 -0
- package/node_modules/zod/v4/classic/parse.cjs +41 -0
- package/node_modules/zod/v4/classic/parse.d.cts +31 -0
- package/node_modules/zod/v4/classic/parse.d.ts +31 -0
- package/node_modules/zod/v4/classic/parse.js +15 -0
- package/node_modules/zod/v4/classic/schemas.cjs +1272 -0
- package/node_modules/zod/v4/classic/schemas.d.cts +739 -0
- package/node_modules/zod/v4/classic/schemas.d.ts +739 -0
- package/node_modules/zod/v4/classic/schemas.js +1157 -0
- package/node_modules/zod/v4/core/api.cjs +1222 -0
- package/node_modules/zod/v4/core/api.d.cts +304 -0
- package/node_modules/zod/v4/core/api.d.ts +304 -0
- package/node_modules/zod/v4/core/api.js +1082 -0
- package/node_modules/zod/v4/core/checks.cjs +601 -0
- package/node_modules/zod/v4/core/checks.d.cts +278 -0
- package/node_modules/zod/v4/core/checks.d.ts +278 -0
- package/node_modules/zod/v4/core/checks.js +575 -0
- package/node_modules/zod/v4/core/core.cjs +83 -0
- package/node_modules/zod/v4/core/core.d.cts +70 -0
- package/node_modules/zod/v4/core/core.d.ts +70 -0
- package/node_modules/zod/v4/core/core.js +76 -0
- package/node_modules/zod/v4/core/doc.cjs +39 -0
- package/node_modules/zod/v4/core/doc.d.cts +14 -0
- package/node_modules/zod/v4/core/doc.d.ts +14 -0
- package/node_modules/zod/v4/core/doc.js +35 -0
- package/node_modules/zod/v4/core/errors.cjs +213 -0
- package/node_modules/zod/v4/core/errors.d.cts +220 -0
- package/node_modules/zod/v4/core/errors.d.ts +220 -0
- package/node_modules/zod/v4/core/errors.js +182 -0
- package/node_modules/zod/v4/core/index.cjs +47 -0
- package/node_modules/zod/v4/core/index.d.cts +16 -0
- package/node_modules/zod/v4/core/index.d.ts +16 -0
- package/node_modules/zod/v4/core/index.js +16 -0
- package/node_modules/zod/v4/core/json-schema-generator.cjs +99 -0
- package/node_modules/zod/v4/core/json-schema-generator.d.cts +65 -0
- package/node_modules/zod/v4/core/json-schema-generator.d.ts +65 -0
- package/node_modules/zod/v4/core/json-schema-generator.js +95 -0
- package/node_modules/zod/v4/core/json-schema-processors.cjs +648 -0
- package/node_modules/zod/v4/core/json-schema-processors.d.cts +49 -0
- package/node_modules/zod/v4/core/json-schema-processors.d.ts +49 -0
- package/node_modules/zod/v4/core/json-schema-processors.js +605 -0
- package/node_modules/zod/v4/core/json-schema.cjs +2 -0
- package/node_modules/zod/v4/core/json-schema.d.cts +88 -0
- package/node_modules/zod/v4/core/json-schema.d.ts +88 -0
- package/node_modules/zod/v4/core/json-schema.js +1 -0
- package/node_modules/zod/v4/core/package.json +6 -0
- package/node_modules/zod/v4/core/parse.cjs +131 -0
- package/node_modules/zod/v4/core/parse.d.cts +49 -0
- package/node_modules/zod/v4/core/parse.d.ts +49 -0
- package/node_modules/zod/v4/core/parse.js +93 -0
- package/node_modules/zod/v4/core/regexes.cjs +166 -0
- package/node_modules/zod/v4/core/regexes.d.cts +79 -0
- package/node_modules/zod/v4/core/regexes.d.ts +79 -0
- package/node_modules/zod/v4/core/regexes.js +133 -0
- package/node_modules/zod/v4/core/registries.cjs +56 -0
- package/node_modules/zod/v4/core/registries.d.cts +35 -0
- package/node_modules/zod/v4/core/registries.d.ts +35 -0
- package/node_modules/zod/v4/core/registries.js +51 -0
- package/node_modules/zod/v4/core/schemas.cjs +2124 -0
- package/node_modules/zod/v4/core/schemas.d.cts +1146 -0
- package/node_modules/zod/v4/core/schemas.d.ts +1146 -0
- package/node_modules/zod/v4/core/schemas.js +2093 -0
- package/node_modules/zod/v4/core/standard-schema.cjs +2 -0
- package/node_modules/zod/v4/core/standard-schema.d.cts +126 -0
- package/node_modules/zod/v4/core/standard-schema.d.ts +126 -0
- package/node_modules/zod/v4/core/standard-schema.js +1 -0
- package/node_modules/zod/v4/core/to-json-schema.cjs +446 -0
- package/node_modules/zod/v4/core/to-json-schema.d.cts +114 -0
- package/node_modules/zod/v4/core/to-json-schema.d.ts +114 -0
- package/node_modules/zod/v4/core/to-json-schema.js +437 -0
- package/node_modules/zod/v4/core/util.cjs +710 -0
- package/node_modules/zod/v4/core/util.d.cts +199 -0
- package/node_modules/zod/v4/core/util.d.ts +199 -0
- package/node_modules/zod/v4/core/util.js +651 -0
- package/node_modules/zod/v4/core/versions.cjs +8 -0
- package/node_modules/zod/v4/core/versions.d.cts +5 -0
- package/node_modules/zod/v4/core/versions.d.ts +5 -0
- package/node_modules/zod/v4/core/versions.js +5 -0
- package/node_modules/zod/v4/index.cjs +22 -0
- package/node_modules/zod/v4/index.d.cts +3 -0
- package/node_modules/zod/v4/index.d.ts +3 -0
- package/node_modules/zod/v4/index.js +3 -0
- package/node_modules/zod/v4/locales/ar.cjs +133 -0
- package/node_modules/zod/v4/locales/ar.d.cts +5 -0
- package/node_modules/zod/v4/locales/ar.d.ts +4 -0
- package/node_modules/zod/v4/locales/ar.js +106 -0
- package/node_modules/zod/v4/locales/az.cjs +132 -0
- package/node_modules/zod/v4/locales/az.d.cts +5 -0
- package/node_modules/zod/v4/locales/az.d.ts +4 -0
- package/node_modules/zod/v4/locales/az.js +105 -0
- package/node_modules/zod/v4/locales/be.cjs +183 -0
- package/node_modules/zod/v4/locales/be.d.cts +5 -0
- package/node_modules/zod/v4/locales/be.d.ts +4 -0
- package/node_modules/zod/v4/locales/be.js +156 -0
- package/node_modules/zod/v4/locales/bg.cjs +147 -0
- package/node_modules/zod/v4/locales/bg.d.cts +5 -0
- package/node_modules/zod/v4/locales/bg.d.ts +4 -0
- package/node_modules/zod/v4/locales/bg.js +120 -0
- package/node_modules/zod/v4/locales/ca.cjs +134 -0
- package/node_modules/zod/v4/locales/ca.d.cts +5 -0
- package/node_modules/zod/v4/locales/ca.d.ts +4 -0
- package/node_modules/zod/v4/locales/ca.js +107 -0
- package/node_modules/zod/v4/locales/cs.cjs +138 -0
- package/node_modules/zod/v4/locales/cs.d.cts +5 -0
- package/node_modules/zod/v4/locales/cs.d.ts +4 -0
- package/node_modules/zod/v4/locales/cs.js +111 -0
- package/node_modules/zod/v4/locales/da.cjs +142 -0
- package/node_modules/zod/v4/locales/da.d.cts +5 -0
- package/node_modules/zod/v4/locales/da.d.ts +4 -0
- package/node_modules/zod/v4/locales/da.js +115 -0
- package/node_modules/zod/v4/locales/de.cjs +135 -0
- package/node_modules/zod/v4/locales/de.d.cts +5 -0
- package/node_modules/zod/v4/locales/de.d.ts +4 -0
- package/node_modules/zod/v4/locales/de.js +108 -0
- package/node_modules/zod/v4/locales/en.cjs +136 -0
- package/node_modules/zod/v4/locales/en.d.cts +5 -0
- package/node_modules/zod/v4/locales/en.d.ts +4 -0
- package/node_modules/zod/v4/locales/en.js +109 -0
- package/node_modules/zod/v4/locales/eo.cjs +136 -0
- package/node_modules/zod/v4/locales/eo.d.cts +5 -0
- package/node_modules/zod/v4/locales/eo.d.ts +4 -0
- package/node_modules/zod/v4/locales/eo.js +109 -0
- package/node_modules/zod/v4/locales/es.cjs +159 -0
- package/node_modules/zod/v4/locales/es.d.cts +5 -0
- package/node_modules/zod/v4/locales/es.d.ts +4 -0
- package/node_modules/zod/v4/locales/es.js +132 -0
- package/node_modules/zod/v4/locales/fa.cjs +141 -0
- package/node_modules/zod/v4/locales/fa.d.cts +5 -0
- package/node_modules/zod/v4/locales/fa.d.ts +4 -0
- package/node_modules/zod/v4/locales/fa.js +114 -0
- package/node_modules/zod/v4/locales/fi.cjs +139 -0
- package/node_modules/zod/v4/locales/fi.d.cts +5 -0
- package/node_modules/zod/v4/locales/fi.d.ts +4 -0
- package/node_modules/zod/v4/locales/fi.js +112 -0
- package/node_modules/zod/v4/locales/fr-CA.cjs +134 -0
- package/node_modules/zod/v4/locales/fr-CA.d.cts +5 -0
- package/node_modules/zod/v4/locales/fr-CA.d.ts +4 -0
- package/node_modules/zod/v4/locales/fr-CA.js +107 -0
- package/node_modules/zod/v4/locales/fr.cjs +135 -0
- package/node_modules/zod/v4/locales/fr.d.cts +5 -0
- package/node_modules/zod/v4/locales/fr.d.ts +4 -0
- package/node_modules/zod/v4/locales/fr.js +108 -0
- package/node_modules/zod/v4/locales/he.cjs +241 -0
- package/node_modules/zod/v4/locales/he.d.cts +5 -0
- package/node_modules/zod/v4/locales/he.d.ts +4 -0
- package/node_modules/zod/v4/locales/he.js +214 -0
- package/node_modules/zod/v4/locales/hu.cjs +135 -0
- package/node_modules/zod/v4/locales/hu.d.cts +5 -0
- package/node_modules/zod/v4/locales/hu.d.ts +4 -0
- package/node_modules/zod/v4/locales/hu.js +108 -0
- package/node_modules/zod/v4/locales/hy.cjs +174 -0
- package/node_modules/zod/v4/locales/hy.d.cts +5 -0
- package/node_modules/zod/v4/locales/hy.d.ts +4 -0
- package/node_modules/zod/v4/locales/hy.js +147 -0
- package/node_modules/zod/v4/locales/id.cjs +133 -0
- package/node_modules/zod/v4/locales/id.d.cts +5 -0
- package/node_modules/zod/v4/locales/id.d.ts +4 -0
- package/node_modules/zod/v4/locales/id.js +106 -0
- package/node_modules/zod/v4/locales/index.cjs +104 -0
- package/node_modules/zod/v4/locales/index.d.cts +49 -0
- package/node_modules/zod/v4/locales/index.d.ts +49 -0
- package/node_modules/zod/v4/locales/index.js +49 -0
- package/node_modules/zod/v4/locales/is.cjs +136 -0
- package/node_modules/zod/v4/locales/is.d.cts +5 -0
- package/node_modules/zod/v4/locales/is.d.ts +4 -0
- package/node_modules/zod/v4/locales/is.js +109 -0
- package/node_modules/zod/v4/locales/it.cjs +135 -0
- package/node_modules/zod/v4/locales/it.d.cts +5 -0
- package/node_modules/zod/v4/locales/it.d.ts +4 -0
- package/node_modules/zod/v4/locales/it.js +108 -0
- package/node_modules/zod/v4/locales/ja.cjs +134 -0
- package/node_modules/zod/v4/locales/ja.d.cts +5 -0
- package/node_modules/zod/v4/locales/ja.d.ts +4 -0
- package/node_modules/zod/v4/locales/ja.js +107 -0
- package/node_modules/zod/v4/locales/ka.cjs +139 -0
- package/node_modules/zod/v4/locales/ka.d.cts +5 -0
- package/node_modules/zod/v4/locales/ka.d.ts +4 -0
- package/node_modules/zod/v4/locales/ka.js +112 -0
- package/node_modules/zod/v4/locales/kh.cjs +12 -0
- package/node_modules/zod/v4/locales/kh.d.cts +5 -0
- package/node_modules/zod/v4/locales/kh.d.ts +5 -0
- package/node_modules/zod/v4/locales/kh.js +5 -0
- package/node_modules/zod/v4/locales/km.cjs +137 -0
- package/node_modules/zod/v4/locales/km.d.cts +5 -0
- package/node_modules/zod/v4/locales/km.d.ts +4 -0
- package/node_modules/zod/v4/locales/km.js +110 -0
- package/node_modules/zod/v4/locales/ko.cjs +138 -0
- package/node_modules/zod/v4/locales/ko.d.cts +5 -0
- package/node_modules/zod/v4/locales/ko.d.ts +4 -0
- package/node_modules/zod/v4/locales/ko.js +111 -0
- package/node_modules/zod/v4/locales/lt.cjs +230 -0
- package/node_modules/zod/v4/locales/lt.d.cts +5 -0
- package/node_modules/zod/v4/locales/lt.d.ts +4 -0
- package/node_modules/zod/v4/locales/lt.js +203 -0
- package/node_modules/zod/v4/locales/mk.cjs +136 -0
- package/node_modules/zod/v4/locales/mk.d.cts +5 -0
- package/node_modules/zod/v4/locales/mk.d.ts +4 -0
- package/node_modules/zod/v4/locales/mk.js +109 -0
- package/node_modules/zod/v4/locales/ms.cjs +134 -0
- package/node_modules/zod/v4/locales/ms.d.cts +5 -0
- package/node_modules/zod/v4/locales/ms.d.ts +4 -0
- package/node_modules/zod/v4/locales/ms.js +107 -0
- package/node_modules/zod/v4/locales/nl.cjs +137 -0
- package/node_modules/zod/v4/locales/nl.d.cts +5 -0
- package/node_modules/zod/v4/locales/nl.d.ts +4 -0
- package/node_modules/zod/v4/locales/nl.js +110 -0
- package/node_modules/zod/v4/locales/no.cjs +135 -0
- package/node_modules/zod/v4/locales/no.d.cts +5 -0
- package/node_modules/zod/v4/locales/no.d.ts +4 -0
- package/node_modules/zod/v4/locales/no.js +108 -0
- package/node_modules/zod/v4/locales/ota.cjs +136 -0
- package/node_modules/zod/v4/locales/ota.d.cts +5 -0
- package/node_modules/zod/v4/locales/ota.d.ts +4 -0
- package/node_modules/zod/v4/locales/ota.js +109 -0
- package/node_modules/zod/v4/locales/package.json +6 -0
- package/node_modules/zod/v4/locales/pl.cjs +136 -0
- package/node_modules/zod/v4/locales/pl.d.cts +5 -0
- package/node_modules/zod/v4/locales/pl.d.ts +4 -0
- package/node_modules/zod/v4/locales/pl.js +109 -0
- package/node_modules/zod/v4/locales/ps.cjs +141 -0
- package/node_modules/zod/v4/locales/ps.d.cts +5 -0
- package/node_modules/zod/v4/locales/ps.d.ts +4 -0
- package/node_modules/zod/v4/locales/ps.js +114 -0
- package/node_modules/zod/v4/locales/pt.cjs +135 -0
- package/node_modules/zod/v4/locales/pt.d.cts +5 -0
- package/node_modules/zod/v4/locales/pt.d.ts +4 -0
- package/node_modules/zod/v4/locales/pt.js +108 -0
- package/node_modules/zod/v4/locales/ru.cjs +183 -0
- package/node_modules/zod/v4/locales/ru.d.cts +5 -0
- package/node_modules/zod/v4/locales/ru.d.ts +4 -0
- package/node_modules/zod/v4/locales/ru.js +156 -0
- package/node_modules/zod/v4/locales/sl.cjs +136 -0
- package/node_modules/zod/v4/locales/sl.d.cts +5 -0
- package/node_modules/zod/v4/locales/sl.d.ts +4 -0
- package/node_modules/zod/v4/locales/sl.js +109 -0
- package/node_modules/zod/v4/locales/sv.cjs +137 -0
- package/node_modules/zod/v4/locales/sv.d.cts +5 -0
- package/node_modules/zod/v4/locales/sv.d.ts +4 -0
- package/node_modules/zod/v4/locales/sv.js +110 -0
- package/node_modules/zod/v4/locales/ta.cjs +137 -0
- package/node_modules/zod/v4/locales/ta.d.cts +5 -0
- package/node_modules/zod/v4/locales/ta.d.ts +4 -0
- package/node_modules/zod/v4/locales/ta.js +110 -0
- package/node_modules/zod/v4/locales/th.cjs +137 -0
- package/node_modules/zod/v4/locales/th.d.cts +5 -0
- package/node_modules/zod/v4/locales/th.d.ts +4 -0
- package/node_modules/zod/v4/locales/th.js +110 -0
- package/node_modules/zod/v4/locales/tr.cjs +132 -0
- package/node_modules/zod/v4/locales/tr.d.cts +5 -0
- package/node_modules/zod/v4/locales/tr.d.ts +4 -0
- package/node_modules/zod/v4/locales/tr.js +105 -0
- package/node_modules/zod/v4/locales/ua.cjs +12 -0
- package/node_modules/zod/v4/locales/ua.d.cts +5 -0
- package/node_modules/zod/v4/locales/ua.d.ts +5 -0
- package/node_modules/zod/v4/locales/ua.js +5 -0
- package/node_modules/zod/v4/locales/uk.cjs +135 -0
- package/node_modules/zod/v4/locales/uk.d.cts +5 -0
- package/node_modules/zod/v4/locales/uk.d.ts +4 -0
- package/node_modules/zod/v4/locales/uk.js +108 -0
- package/node_modules/zod/v4/locales/ur.cjs +137 -0
- package/node_modules/zod/v4/locales/ur.d.cts +5 -0
- package/node_modules/zod/v4/locales/ur.d.ts +4 -0
- package/node_modules/zod/v4/locales/ur.js +110 -0
- package/node_modules/zod/v4/locales/uz.cjs +136 -0
- package/node_modules/zod/v4/locales/uz.d.cts +5 -0
- package/node_modules/zod/v4/locales/uz.d.ts +4 -0
- package/node_modules/zod/v4/locales/uz.js +109 -0
- package/node_modules/zod/v4/locales/vi.cjs +135 -0
- package/node_modules/zod/v4/locales/vi.d.cts +5 -0
- package/node_modules/zod/v4/locales/vi.d.ts +4 -0
- package/node_modules/zod/v4/locales/vi.js +108 -0
- package/node_modules/zod/v4/locales/yo.cjs +134 -0
- package/node_modules/zod/v4/locales/yo.d.cts +5 -0
- package/node_modules/zod/v4/locales/yo.d.ts +4 -0
- package/node_modules/zod/v4/locales/yo.js +107 -0
- package/node_modules/zod/v4/locales/zh-CN.cjs +136 -0
- package/node_modules/zod/v4/locales/zh-CN.d.cts +5 -0
- package/node_modules/zod/v4/locales/zh-CN.d.ts +4 -0
- package/node_modules/zod/v4/locales/zh-CN.js +109 -0
- package/node_modules/zod/v4/locales/zh-TW.cjs +134 -0
- package/node_modules/zod/v4/locales/zh-TW.d.cts +5 -0
- package/node_modules/zod/v4/locales/zh-TW.d.ts +4 -0
- package/node_modules/zod/v4/locales/zh-TW.js +107 -0
- package/node_modules/zod/v4/mini/checks.cjs +34 -0
- package/node_modules/zod/v4/mini/checks.d.cts +1 -0
- package/node_modules/zod/v4/mini/checks.d.ts +1 -0
- package/node_modules/zod/v4/mini/checks.js +1 -0
- package/node_modules/zod/v4/mini/coerce.cjs +52 -0
- package/node_modules/zod/v4/mini/coerce.d.cts +7 -0
- package/node_modules/zod/v4/mini/coerce.d.ts +7 -0
- package/node_modules/zod/v4/mini/coerce.js +22 -0
- package/node_modules/zod/v4/mini/external.cjs +63 -0
- package/node_modules/zod/v4/mini/external.d.cts +12 -0
- package/node_modules/zod/v4/mini/external.d.ts +12 -0
- package/node_modules/zod/v4/mini/external.js +14 -0
- package/node_modules/zod/v4/mini/index.cjs +32 -0
- package/node_modules/zod/v4/mini/index.d.cts +3 -0
- package/node_modules/zod/v4/mini/index.d.ts +3 -0
- package/node_modules/zod/v4/mini/index.js +3 -0
- package/node_modules/zod/v4/mini/iso.cjs +64 -0
- package/node_modules/zod/v4/mini/iso.d.cts +22 -0
- package/node_modules/zod/v4/mini/iso.d.ts +22 -0
- package/node_modules/zod/v4/mini/iso.js +34 -0
- package/node_modules/zod/v4/mini/package.json +6 -0
- package/node_modules/zod/v4/mini/parse.cjs +16 -0
- package/node_modules/zod/v4/mini/parse.d.cts +1 -0
- package/node_modules/zod/v4/mini/parse.d.ts +1 -0
- package/node_modules/zod/v4/mini/parse.js +1 -0
- package/node_modules/zod/v4/mini/schemas.cjs +1046 -0
- package/node_modules/zod/v4/mini/schemas.d.cts +427 -0
- package/node_modules/zod/v4/mini/schemas.d.ts +427 -0
- package/node_modules/zod/v4/mini/schemas.js +925 -0
- package/node_modules/zod/v4/package.json +6 -0
- package/node_modules/zod/v4-mini/index.cjs +32 -0
- package/node_modules/zod/v4-mini/index.d.cts +3 -0
- package/node_modules/zod/v4-mini/index.d.ts +3 -0
- package/node_modules/zod/v4-mini/index.js +3 -0
- package/node_modules/zod/v4-mini/package.json +6 -0
- package/package.json +11 -10
- package/chat/charts/chart/chart.component.d.ts +0 -13
- package/chat/chat-message/chat-message.component.d.ts +0 -75
- package/chat/chat-settings-v3/chat-settings-v3.component.d.ts +0 -48
- package/chat/chat.component.d.ts +0 -387
- package/chat/chat.service.d.ts +0 -370
- package/chat/custom-elements/components/code-block.component.d.ts +0 -11
- package/chat/custom-elements/components/document-reference.component.d.ts +0 -13
- package/chat/custom-elements/components/image-reference.component.d.ts +0 -14
- package/chat/custom-elements/components/page-reference.component.d.ts +0 -14
- package/chat/custom-elements/components/table-tools.component.d.ts +0 -11
- package/chat/custom-elements/custom-elements.config.d.ts +0 -2
- package/chat/custom-elements/custom-elements.service.d.ts +0 -14
- package/chat/debug-message/debug-message-details/debug-message-details.component.d.ts +0 -18
- package/chat/debug-message/debug-message.component.d.ts +0 -14
- package/chat/debug-message/debug-message.service.d.ts +0 -15
- package/chat/dialogs/delete-saved-chat.component.d.ts +0 -22
- package/chat/dialogs/rename-saved-chat.component.d.ts +0 -21
- package/chat/dialogs/updates.component.d.ts +0 -15
- package/chat/documents-upload/document-list/document-list.component.d.ts +0 -64
- package/chat/documents-upload/document-overview/document-overview.component.d.ts +0 -17
- package/chat/documents-upload/document-upload/document-upload.component.d.ts +0 -91
- package/chat/documents-upload/documents-upload.model.d.ts +0 -66
- package/chat/documents-upload/documents-upload.service.d.ts +0 -161
- package/chat/fetch-patcher/app-injector.d.ts +0 -9
- package/chat/fetch-patcher/fetch-patcher.d.ts +0 -31
- package/chat/fetch-patcher/global-error-handler.service.d.ts +0 -36
- package/chat/fetch-patcher/handle-unauthorized-logic.d.ts +0 -13
- package/chat/format-icon/format-icon.component.d.ts +0 -10
- package/chat/format-icon/icons.d.ts +0 -5
- package/chat/initials-avatar/initials-avatar.component.d.ts +0 -35
- package/chat/instance-manager.service.d.ts +0 -28
- package/chat/markdown-it/markdown-it.config.d.ts +0 -4
- package/chat/markdown-it/plugins/code-block.plugin.d.ts +0 -2
- package/chat/markdown-it/plugins/document-reference.plugin.d.ts +0 -8
- package/chat/markdown-it/plugins/image-reference.plugin.d.ts +0 -9
- package/chat/markdown-it/plugins/link.plugin.d.ts +0 -5
- package/chat/markdown-it/plugins/page-reference.plugin.d.ts +0 -9
- package/chat/markdown-it/plugins/table-tools.plugin.d.ts +0 -2
- package/chat/pipes/message-content.pipe.d.ts +0 -16
- package/chat/public-api.d.ts +0 -35
- package/chat/references/chat-reference/chat-reference.component.d.ts +0 -24
- package/chat/references/chat-reference-image/chat-reference-image.component.d.ts +0 -20
- package/chat/references/chat-reference-page/chat-reference-page.component.d.ts +0 -20
- package/chat/saved-chats/saved-chats.component.d.ts +0 -37
- package/chat/saved-chats/saved-chats.service.d.ts +0 -29
- package/chat/services/app.service.d.ts +0 -9
- package/chat/services/assistant-configuration.service.d.ts +0 -34
- package/chat/services/assistant-metadata.service.d.ts +0 -20
- package/chat/services/assistant-tokens-tracking.service.d.ts +0 -23
- package/chat/services/assistant-ws-frames.service.d.ts +0 -50
- package/chat/services/dialog.service.d.ts +0 -12
- package/chat/services/notification.service.d.ts +0 -10
- package/chat/services/principal.service.d.ts +0 -7
- package/chat/services/search.service.d.ts +0 -7
- package/chat/services/signalR-connection.service.d.ts +0 -25
- package/chat/services/signalR.web.service.d.ts +0 -35
- package/chat/services/ui.service.d.ts +0 -13
- package/chat/services/user-settings.service.d.ts +0 -7
- package/chat/smart-renderer/smart-renderer.d.ts +0 -25
- package/chat/token-progress-bar/token-progress-bar.component.d.ts +0 -24
- package/chat/tooltip/tooltip.component.d.ts +0 -12
- package/chat/tooltip/tooltip.directive.d.ts +0 -81
- package/chat/types/message-content.types.d.ts +0 -54
- package/chat/types/message-reference.types.d.ts +0 -14
- package/chat/types.d.ts +0 -920
- package/chat/utils/assistant-json.d.ts +0 -2
- package/chat/utils/utils.service.d.ts +0 -67
- package/chat/version.d.ts +0 -1
- package/esm2022/chat/charts/chart/chart.component.mjs +0 -40
- package/esm2022/chat/chat-message/chat-message.component.mjs +0 -252
- package/esm2022/chat/chat-settings-v3/chat-settings-v3.component.mjs +0 -121
- package/esm2022/chat/chat.component.mjs +0 -1115
- package/esm2022/chat/chat.service.mjs +0 -636
- package/esm2022/chat/custom-elements/components/code-block.component.mjs +0 -97
- package/esm2022/chat/custom-elements/components/document-reference.component.mjs +0 -85
- package/esm2022/chat/custom-elements/components/image-reference.component.mjs +0 -79
- package/esm2022/chat/custom-elements/components/page-reference.component.mjs +0 -79
- package/esm2022/chat/custom-elements/components/table-tools.component.mjs +0 -111
- package/esm2022/chat/custom-elements/custom-elements.config.mjs +0 -6
- package/esm2022/chat/custom-elements/custom-elements.service.mjs +0 -35
- package/esm2022/chat/debug-message/debug-message-details/debug-message-details.component.mjs +0 -43
- package/esm2022/chat/debug-message/debug-message.component.mjs +0 -40
- package/esm2022/chat/debug-message/debug-message.service.mjs +0 -49
- package/esm2022/chat/dialogs/delete-saved-chat.component.mjs +0 -81
- package/esm2022/chat/dialogs/rename-saved-chat.component.mjs +0 -85
- package/esm2022/chat/dialogs/updates.component.mjs +0 -61
- package/esm2022/chat/documents-upload/document-list/document-list.component.mjs +0 -141
- package/esm2022/chat/documents-upload/document-overview/document-overview.component.mjs +0 -42
- package/esm2022/chat/documents-upload/document-upload/document-upload.component.mjs +0 -254
- package/esm2022/chat/documents-upload/documents-upload.model.mjs +0 -2
- package/esm2022/chat/documents-upload/documents-upload.service.mjs +0 -274
- package/esm2022/chat/fetch-patcher/app-injector.mjs +0 -19
- package/esm2022/chat/fetch-patcher/fetch-patcher.mjs +0 -62
- package/esm2022/chat/fetch-patcher/global-error-handler.service.mjs +0 -92
- package/esm2022/chat/fetch-patcher/handle-unauthorized-logic.mjs +0 -19
- package/esm2022/chat/format-icon/format-icon.component.mjs +0 -23
- package/esm2022/chat/format-icon/icons.mjs +0 -138
- package/esm2022/chat/initials-avatar/initials-avatar.component.mjs +0 -60
- package/esm2022/chat/instance-manager.service.mjs +0 -46
- package/esm2022/chat/markdown-it/markdown-it.config.mjs +0 -6
- package/esm2022/chat/markdown-it/plugins/code-block.plugin.mjs +0 -14
- package/esm2022/chat/markdown-it/plugins/document-reference.plugin.mjs +0 -66
- package/esm2022/chat/markdown-it/plugins/image-reference.plugin.mjs +0 -67
- package/esm2022/chat/markdown-it/plugins/link.plugin.mjs +0 -15
- package/esm2022/chat/markdown-it/plugins/page-reference.plugin.mjs +0 -67
- package/esm2022/chat/markdown-it/plugins/table-tools.plugin.mjs +0 -12
- package/esm2022/chat/pipes/message-content.pipe.mjs +0 -37
- package/esm2022/chat/public-api.mjs +0 -37
- package/esm2022/chat/references/chat-reference/chat-reference.component.mjs +0 -72
- package/esm2022/chat/references/chat-reference-image/chat-reference-image.component.mjs +0 -42
- package/esm2022/chat/references/chat-reference-page/chat-reference-page.component.mjs +0 -42
- package/esm2022/chat/saved-chats/saved-chats.component.mjs +0 -115
- package/esm2022/chat/saved-chats/saved-chats.service.mjs +0 -170
- package/esm2022/chat/services/app.service.mjs +0 -30
- package/esm2022/chat/services/assistant-configuration.service.mjs +0 -158
- package/esm2022/chat/services/assistant-metadata.service.mjs +0 -85
- package/esm2022/chat/services/assistant-tokens-tracking.service.mjs +0 -50
- package/esm2022/chat/services/assistant-ws-frames.service.mjs +0 -391
- package/esm2022/chat/services/dialog.service.mjs +0 -40
- package/esm2022/chat/services/notification.service.mjs +0 -25
- package/esm2022/chat/services/principal.service.mjs +0 -16
- package/esm2022/chat/services/search.service.mjs +0 -13
- package/esm2022/chat/services/signalR-connection.service.mjs +0 -102
- package/esm2022/chat/services/signalR.web.service.mjs +0 -69
- package/esm2022/chat/services/ui.service.mjs +0 -61
- package/esm2022/chat/services/user-settings.service.mjs +0 -25
- package/esm2022/chat/sinequa-assistant-chat.mjs +0 -5
- package/esm2022/chat/smart-renderer/smart-renderer.mjs +0 -104
- package/esm2022/chat/token-progress-bar/token-progress-bar.component.mjs +0 -52
- package/esm2022/chat/tooltip/tooltip.component.mjs +0 -44
- package/esm2022/chat/tooltip/tooltip.directive.mjs +0 -203
- package/esm2022/chat/types/message-content.types.mjs +0 -2
- package/esm2022/chat/types/message-reference.types.mjs +0 -2
- package/esm2022/chat/types.mjs +0 -130
- package/esm2022/chat/utils/assistant-json.mjs +0 -12
- package/esm2022/chat/utils/utils.service.mjs +0 -170
- package/esm2022/chat/version.mjs +0 -3
- package/esm2022/public-api.mjs +0 -3
- package/esm2022/sinequa-assistant.mjs +0 -5
- package/public-api.d.ts +0 -1
|
@@ -1,391 +0,0 @@
|
|
|
1
|
-
import { Injectable, inject } from '@angular/core';
|
|
2
|
-
import { TranslocoService } from '@jsverse/transloco';
|
|
3
|
-
import { Observable, Subject, fromEvent, merge, of, throwError } from 'rxjs';
|
|
4
|
-
import { map, mergeMap, takeUntil, tap, take, switchMap, finalize } from 'rxjs/operators';
|
|
5
|
-
import { guid } from "@sinequa/atomic";
|
|
6
|
-
import { AppService } from './app.service';
|
|
7
|
-
import { AssistantUtils } from '../utils/utils.service';
|
|
8
|
-
import { NotificationsService } from './notification.service';
|
|
9
|
-
import * as i0 from "@angular/core";
|
|
10
|
-
export class AssistantWsFramesService {
|
|
11
|
-
constructor() {
|
|
12
|
-
this.appService = inject(AppService);
|
|
13
|
-
this.transloco = inject(TranslocoService);
|
|
14
|
-
this.assistantUtils = inject(AssistantUtils);
|
|
15
|
-
this.notificationsService = inject(NotificationsService);
|
|
16
|
-
this._messageHandlers = new Map();
|
|
17
|
-
this._actionMap = new Map();
|
|
18
|
-
this._progress = undefined;
|
|
19
|
-
this._attachments = [];
|
|
20
|
-
this._debugMessages = [];
|
|
21
|
-
}
|
|
22
|
-
init(context) {
|
|
23
|
-
this.context = context;
|
|
24
|
-
}
|
|
25
|
-
ensureInitialized() {
|
|
26
|
-
if (!this.context) {
|
|
27
|
-
throw new Error('AssistantWsFramesService not initialized. Call init() first.');
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
fetch(messages, query) {
|
|
31
|
-
this.ensureInitialized();
|
|
32
|
-
const context = this.context;
|
|
33
|
-
const assistantConfig = context.getAssistantConfig();
|
|
34
|
-
// Start streaming by invoking the Chat method
|
|
35
|
-
context.setStreamingStatus(true);
|
|
36
|
-
// Prepare the payload to send to the Chat method
|
|
37
|
-
const data = {
|
|
38
|
-
history: messages,
|
|
39
|
-
functions: assistantConfig.defaultValues.functions?.filter(func => func.enabled).map(func => func.name),
|
|
40
|
-
debug: assistantConfig.defaultValues.debug,
|
|
41
|
-
serviceSettings: {
|
|
42
|
-
service_id: assistantConfig.defaultValues.service_id,
|
|
43
|
-
model_id: assistantConfig.defaultValues.model_id,
|
|
44
|
-
...assistantConfig.additionalServiceSettings
|
|
45
|
-
},
|
|
46
|
-
appQuery: {
|
|
47
|
-
app: this.appService.appName,
|
|
48
|
-
query
|
|
49
|
-
},
|
|
50
|
-
instanceId: context.getChatInstanceId(),
|
|
51
|
-
chatId: context.getChatId(),
|
|
52
|
-
genericChatErrorMessage: assistantConfig.globalSettings.genericChatErrorMessage ? this.transloco.translate(assistantConfig.globalSettings.genericChatErrorMessage) : ""
|
|
53
|
-
};
|
|
54
|
-
if (assistantConfig.defaultValues.temperature !== undefined)
|
|
55
|
-
data.serviceSettings.temperature = assistantConfig.defaultValues.temperature;
|
|
56
|
-
if (assistantConfig.defaultValues.top_p !== undefined)
|
|
57
|
-
data.serviceSettings.top_p = assistantConfig.defaultValues.top_p;
|
|
58
|
-
if (assistantConfig.defaultValues.max_tokens !== undefined)
|
|
59
|
-
data.serviceSettings.max_tokens = assistantConfig.defaultValues.max_tokens;
|
|
60
|
-
// Initialize the response with an empty assistant message
|
|
61
|
-
// here display: true is needed in order to be able to show the progress
|
|
62
|
-
// here messageId is needed but it is temporary and will be replaced by the correct messageId generated by the assistant when the message starts streaming
|
|
63
|
-
this._response = [{ role: "assistant", content: "", additionalProperties: { display: true, messageId: guid() } }];
|
|
64
|
-
// Create a Subject to signal completion
|
|
65
|
-
const completion$ = new Subject();
|
|
66
|
-
// Create observables for each non-global handler in the _messageHandlers map (default and eventual custom ones) once it is triggered by the hub connection
|
|
67
|
-
const observables = Array
|
|
68
|
-
.from(this._messageHandlers.entries())
|
|
69
|
-
.filter(([eventName, eventHandler]) => !eventHandler.isGlobalHandler)
|
|
70
|
-
.map(([eventName, eventHandler]) => fromEvent(context.getHubConnection(), eventName).pipe(mergeMap((event) => {
|
|
71
|
-
// Wrap the handler in a try-catch block to prevent the entire stream from failing if an error occurs in a single handler
|
|
72
|
-
try {
|
|
73
|
-
// Execute the handler and emit the result
|
|
74
|
-
// NB: here we could use [eventHandler.handler(event)] which behind the scenes mergeMap interprets this array as an observable sequence with one item, which it then emits
|
|
75
|
-
return of(eventHandler.handler(event));
|
|
76
|
-
}
|
|
77
|
-
catch (error) {
|
|
78
|
-
console.error(`Error in event handler for ${eventName}:`, error);
|
|
79
|
-
// Use throwError to propagate the error downstream
|
|
80
|
-
return throwError(() => new Error(`Error in event handler for ${eventName}: ${error}`));
|
|
81
|
-
}
|
|
82
|
-
})));
|
|
83
|
-
// Then merge them into a single observable in order to simulate the streaming behavior
|
|
84
|
-
const combined$ = merge(...observables).pipe(map(() => {
|
|
85
|
-
// Define $progress from the _actionMap
|
|
86
|
-
const actions = Array.from(this._actionMap.values());
|
|
87
|
-
this._progress = actions.length > 0
|
|
88
|
-
? actions.map((a) => ({
|
|
89
|
-
title: a.displayName ?? "",
|
|
90
|
-
content: a.displayValue ?? "",
|
|
91
|
-
done: a.executionTime !== undefined,
|
|
92
|
-
time: a.executionTime,
|
|
93
|
-
}))
|
|
94
|
-
: undefined;
|
|
95
|
-
// Always update ONLY the first assistant message of the _response with the new $progress, $attachment and $debug
|
|
96
|
-
// Assuming that the first assistant message is always visible since the hub does not send hidden messages by design
|
|
97
|
-
// So even if the first assistant message is hidden (display: false), the _response[0] will and should contain :
|
|
98
|
-
// - $progress, $attachment and $debug
|
|
99
|
-
// - the content of the first visible assistant message in the workflow
|
|
100
|
-
// This is mandatory in order to match the behavior of consecutive messages and maintain consistency with the chatHistory
|
|
101
|
-
if (!!this._progress || this._attachments.length > 0 || this._debugMessages.length > 0) {
|
|
102
|
-
this._response[0].additionalProperties.$progress = this._progress;
|
|
103
|
-
this._response[0].additionalProperties.$attachment = this._attachments;
|
|
104
|
-
this._response[0].additionalProperties.$debug = this._debugMessages;
|
|
105
|
-
}
|
|
106
|
-
// Return the result
|
|
107
|
-
return { history: [...messages, ...this._response], executionTime: this._executionTime, executionTimeMilliseconds: this._executionTimeMilliseconds };
|
|
108
|
-
}),
|
|
109
|
-
// Complete the observable when completion$ emits
|
|
110
|
-
takeUntil(completion$));
|
|
111
|
-
// return a new Observable that emits the result of the combined stream and handles the eventual errors of the invocation of the Chat method
|
|
112
|
-
return new Observable(observer => {
|
|
113
|
-
// Subscribe to combined stream
|
|
114
|
-
combined$.subscribe({
|
|
115
|
-
next: (value) => observer.next(value),
|
|
116
|
-
error: (err) => observer.error(err)
|
|
117
|
-
});
|
|
118
|
-
// Invoke the Chat method and handle errors
|
|
119
|
-
context.getHubConnection().invoke('Chat', data)
|
|
120
|
-
.then(() => {
|
|
121
|
-
const chatHistory = context.getChatHistory();
|
|
122
|
-
// If a valid assistant message with (display: true) was found, update it
|
|
123
|
-
// and it should always the case
|
|
124
|
-
const index = this.assistantUtils.firstVisibleAssistantMessageIndex(chatHistory);
|
|
125
|
-
if (index !== -1) {
|
|
126
|
-
chatHistory[index].additionalProperties.$progress = this._progress;
|
|
127
|
-
chatHistory[index].additionalProperties.$attachment = this._attachments;
|
|
128
|
-
chatHistory[index].additionalProperties.$debug = this._debugMessages;
|
|
129
|
-
context.setChatHistory(chatHistory);
|
|
130
|
-
}
|
|
131
|
-
// Save/update the chat if savedChat enabled
|
|
132
|
-
if (assistantConfig.savedChatSettings.enabled && context.getChatHistory().some((msg) => msg.additionalProperties?.isUserInput === true)) {
|
|
133
|
-
context.isExistingSavedChat(context.getChatId()).pipe(take(1), switchMap((exists) => exists
|
|
134
|
-
? context.updateSavedChat(context.getChatId(), undefined, context.getChatHistory())
|
|
135
|
-
: context.addSavedChat(context.getChatId(), context.getChatHistory()).pipe(tap(() => context.listSavedChat()))), finalize(() => context.setStreamingStatus(false))).subscribe({
|
|
136
|
-
next: () => { },
|
|
137
|
-
error: (error) => observer.error(error),
|
|
138
|
-
complete: () => observer.complete()
|
|
139
|
-
});
|
|
140
|
-
}
|
|
141
|
-
else {
|
|
142
|
-
context.setStreamingStatus(false);
|
|
143
|
-
observer.complete();
|
|
144
|
-
}
|
|
145
|
-
})
|
|
146
|
-
.catch(error => {
|
|
147
|
-
console.error('Error invoking Chat:', error);
|
|
148
|
-
context.setStreamingStatus(false);
|
|
149
|
-
// Emit the error to the newly created observable
|
|
150
|
-
observer.error(error);
|
|
151
|
-
// Return a resolved promise to handle the error and prevent unhandled promise rejection
|
|
152
|
-
return Promise.resolve();
|
|
153
|
-
})
|
|
154
|
-
.finally(() => {
|
|
155
|
-
// This block concerns ONLY the completion of the "Chat" method invocation.
|
|
156
|
-
// This means the completion of the combined$ stream.
|
|
157
|
-
// It does not take into account the completion of the entire fetch method (the observable returned by fetch) and which depends on the completion of the save chat action if enabled
|
|
158
|
-
this._response = []; // Clear the _response
|
|
159
|
-
this._actionMap.clear(); // Clear the _actionMap
|
|
160
|
-
this._progress = undefined; // Clear the _progress
|
|
161
|
-
this._attachments = []; // Clear the _attachments
|
|
162
|
-
this._debugMessages = []; // Clear the _debugMessages
|
|
163
|
-
this._executionTime = ""; // Clear the _executionTime
|
|
164
|
-
this._executionTimeMilliseconds = undefined; // Clear the _executionTimeMilliseconds
|
|
165
|
-
completion$.next(); // Emit a signal to complete the observables
|
|
166
|
-
completion$.complete(); // Complete the subject
|
|
167
|
-
});
|
|
168
|
-
});
|
|
169
|
-
}
|
|
170
|
-
initMessageHandlers() {
|
|
171
|
-
this.ensureInitialized();
|
|
172
|
-
const context = this.context;
|
|
173
|
-
this.addMessageHandler("Error", {
|
|
174
|
-
handler: (error) => {
|
|
175
|
-
if (error.indexOf('SavedChatList') !== -1) {
|
|
176
|
-
context.setSavedChatsErrorStatus(true);
|
|
177
|
-
}
|
|
178
|
-
console.error(error);
|
|
179
|
-
this.notificationsService.error(error);
|
|
180
|
-
},
|
|
181
|
-
isGlobalHandler: true
|
|
182
|
-
});
|
|
183
|
-
this.addMessageHandler("Quota", {
|
|
184
|
-
handler: (message) => {
|
|
185
|
-
try {
|
|
186
|
-
context.updateQuota(message.quota);
|
|
187
|
-
}
|
|
188
|
-
catch (error) {
|
|
189
|
-
console.error(error);
|
|
190
|
-
}
|
|
191
|
-
},
|
|
192
|
-
isGlobalHandler: true
|
|
193
|
-
});
|
|
194
|
-
this.addMessageHandler("Debug", { handler: () => { }, isGlobalHandler: true });
|
|
195
|
-
this.addMessageHandler("ActionStart", {
|
|
196
|
-
handler: (action) => this._actionMap.set(action.guid, action),
|
|
197
|
-
isGlobalHandler: false
|
|
198
|
-
});
|
|
199
|
-
this.addMessageHandler("ActionResult", {
|
|
200
|
-
handler: (action) => this._actionMap.set(action.guid, { ...this._actionMap.get(action.guid), ...action }),
|
|
201
|
-
isGlobalHandler: false
|
|
202
|
-
});
|
|
203
|
-
this.addMessageHandler("ActionStop", {
|
|
204
|
-
handler: (action) => this._actionMap.set(action.guid, { ...this._actionMap.get(action.guid), ...action }),
|
|
205
|
-
isGlobalHandler: false
|
|
206
|
-
});
|
|
207
|
-
this.addMessageHandler("ContextMessage", {
|
|
208
|
-
handler: (message) => { this._attachments.push(message.additionalProperties); },
|
|
209
|
-
isGlobalHandler: false
|
|
210
|
-
});
|
|
211
|
-
this.addMessageHandler("Message", {
|
|
212
|
-
handler: (message) => {
|
|
213
|
-
this._response.at(-1).content += message.delta ?? "";
|
|
214
|
-
this._response.at(-1).additionalProperties.messageId = message.messageId;
|
|
215
|
-
},
|
|
216
|
-
isGlobalHandler: false
|
|
217
|
-
});
|
|
218
|
-
this.addMessageHandler("History", {
|
|
219
|
-
handler: (history) => {
|
|
220
|
-
// The ChatHistory is updated: it is the current copy concatenated with the new items ONLY (it can have multiple messages: the context messages + the response message)
|
|
221
|
-
// This is mandatory to not lose the previous updates of the chatHistory when the assistant is streaming multiple message steps
|
|
222
|
-
const currentChatHistory = (context.getChatHistory() || []);
|
|
223
|
-
const newHistory = [...currentChatHistory, ...(history.history.slice(currentChatHistory.length))];
|
|
224
|
-
context.setChatHistory(newHistory);
|
|
225
|
-
// Emit the updated chat usage metrics
|
|
226
|
-
const lastMessage = newHistory.at(-1);
|
|
227
|
-
if (lastMessage?.additionalProperties.usageMetrics) {
|
|
228
|
-
context.updateChatUsageMetrics(lastMessage.additionalProperties.usageMetrics);
|
|
229
|
-
}
|
|
230
|
-
this._executionTime = history.executionTime;
|
|
231
|
-
this._executionTimeMilliseconds = history.executionTimeMilliseconds;
|
|
232
|
-
},
|
|
233
|
-
isGlobalHandler: false
|
|
234
|
-
});
|
|
235
|
-
this.addMessageHandler("SuggestedActions", {
|
|
236
|
-
handler: (message) => {
|
|
237
|
-
// Since after the "History" and "MessageBreak" that this event is caught,
|
|
238
|
-
// $suggestedAction needs to be updated directly to the last visible "assistant" message in the _response and the chatHistory
|
|
239
|
-
this._response.at(-1).additionalProperties.$suggestedAction = (this._response.at(-1).additionalProperties.$suggestedAction || []).concat(message.suggestedActions);
|
|
240
|
-
const chatHistory = context.getChatHistory();
|
|
241
|
-
const index = this.assistantUtils.lastVisibleAssistantMessageIndex(chatHistory);
|
|
242
|
-
if (index !== -1) {
|
|
243
|
-
chatHistory[index].additionalProperties.$suggestedAction = (chatHistory[index].additionalProperties.$suggestedAction || []).concat(message.suggestedActions);
|
|
244
|
-
context.setChatHistory(chatHistory);
|
|
245
|
-
}
|
|
246
|
-
},
|
|
247
|
-
isGlobalHandler: false
|
|
248
|
-
});
|
|
249
|
-
this.addMessageHandler("DebugDisplay", {
|
|
250
|
-
handler: (message) => this._debugMessages = this._debugMessages.concat(message),
|
|
251
|
-
isGlobalHandler: false
|
|
252
|
-
});
|
|
253
|
-
this.addMessageHandler("MessageBreak", {
|
|
254
|
-
handler: () => {
|
|
255
|
-
// Systematically happens right after the "History" event
|
|
256
|
-
// This is the moment when the assistant message is fully streamed
|
|
257
|
-
const assistantConfig = context.getAssistantConfig();
|
|
258
|
-
const chatHistory = context.getChatHistory();
|
|
259
|
-
if (!assistantConfig || !chatHistory || !chatHistory.length)
|
|
260
|
-
return;
|
|
261
|
-
const lastChatMessage = chatHistory.at(-1);
|
|
262
|
-
const details = {
|
|
263
|
-
'duration': this._executionTimeMilliseconds !== undefined ? this._executionTimeMilliseconds : this._executionTime,
|
|
264
|
-
'role': lastChatMessage.role,
|
|
265
|
-
'rank': chatHistory.length,
|
|
266
|
-
'message-id': lastChatMessage.additionalProperties.messageId,
|
|
267
|
-
'generation-tokencount': lastChatMessage.additionalProperties.usageMetrics?.completionTokenCount,
|
|
268
|
-
'prompt-tokencount': lastChatMessage.additionalProperties.usageMetrics?.promptTokenCount,
|
|
269
|
-
'attachments': JSON.stringify(this._attachments.map(({ recordId, contextId, parts, type }) => ({
|
|
270
|
-
recordId,
|
|
271
|
-
contextId,
|
|
272
|
-
parts: parts.map(({ partId, text }) => {
|
|
273
|
-
if (!!assistantConfig.auditSettings?.logContent)
|
|
274
|
-
return { partId, text };
|
|
275
|
-
return { partId };
|
|
276
|
-
}),
|
|
277
|
-
type
|
|
278
|
-
})))
|
|
279
|
-
};
|
|
280
|
-
if (!!assistantConfig.auditSettings?.logContent) {
|
|
281
|
-
if (typeof lastChatMessage.content === 'string') {
|
|
282
|
-
details['text'] = lastChatMessage.content;
|
|
283
|
-
}
|
|
284
|
-
else if (Array.isArray(lastChatMessage.content)) {
|
|
285
|
-
details['text'] = lastChatMessage.content.find((msg) => msg.type === "text").text;
|
|
286
|
-
}
|
|
287
|
-
}
|
|
288
|
-
context.generateAuditEvent('ast-message.message', details);
|
|
289
|
-
// Push a new assistant message to the _response array ONLY if the content of the last message is not empty
|
|
290
|
-
if (this._response.at(-1).content !== "") {
|
|
291
|
-
this._response.push({ role: "assistant", content: "", additionalProperties: { display: true, messageId: guid() } });
|
|
292
|
-
}
|
|
293
|
-
},
|
|
294
|
-
isGlobalHandler: false
|
|
295
|
-
});
|
|
296
|
-
}
|
|
297
|
-
overrideMessageHandlers(_messageHandlers) {
|
|
298
|
-
this.ensureInitialized();
|
|
299
|
-
// Clear the already registered global chat handlers before merging the new ones
|
|
300
|
-
this._messageHandlers.forEach((eventHandler, eventName) => {
|
|
301
|
-
if (eventHandler.isGlobalHandler) {
|
|
302
|
-
this.unsubscribeMessageHandler(eventName);
|
|
303
|
-
}
|
|
304
|
-
});
|
|
305
|
-
// Merge the new event handlers with the existing ones
|
|
306
|
-
this._messageHandlers = new Map([...this._messageHandlers, ..._messageHandlers]);
|
|
307
|
-
// Register the global handlers among the merged map
|
|
308
|
-
this._messageHandlers.forEach((eventHandler, eventName) => {
|
|
309
|
-
if (eventHandler.isGlobalHandler) {
|
|
310
|
-
this.registerMessageHandler(eventName, eventHandler);
|
|
311
|
-
}
|
|
312
|
-
});
|
|
313
|
-
}
|
|
314
|
-
addMessageHandler(eventName, eventHandler) {
|
|
315
|
-
this.ensureInitialized();
|
|
316
|
-
this._messageHandlers.set(eventName, eventHandler);
|
|
317
|
-
if (eventHandler.isGlobalHandler) {
|
|
318
|
-
this.registerMessageHandler(eventName, eventHandler);
|
|
319
|
-
}
|
|
320
|
-
}
|
|
321
|
-
registerMessageHandler(eventName, eventHandler) {
|
|
322
|
-
this.ensureInitialized();
|
|
323
|
-
const connection = this.context.getHubConnection();
|
|
324
|
-
if (!connection) {
|
|
325
|
-
console.log("No connection found to register the listener" + eventName);
|
|
326
|
-
return;
|
|
327
|
-
}
|
|
328
|
-
connection.on(eventName, (data) => {
|
|
329
|
-
eventHandler.handler(data);
|
|
330
|
-
});
|
|
331
|
-
}
|
|
332
|
-
removeMessageHandler(eventName) {
|
|
333
|
-
this.ensureInitialized();
|
|
334
|
-
this._messageHandlers.delete(eventName);
|
|
335
|
-
this.unsubscribeMessageHandler(eventName);
|
|
336
|
-
}
|
|
337
|
-
unsubscribeMessageHandler(eventName) {
|
|
338
|
-
this.ensureInitialized();
|
|
339
|
-
const connection = this.context.getHubConnection();
|
|
340
|
-
connection?.off(eventName);
|
|
341
|
-
}
|
|
342
|
-
stopGeneration() {
|
|
343
|
-
this.ensureInitialized();
|
|
344
|
-
const context = this.context;
|
|
345
|
-
const connection = context.getHubConnection();
|
|
346
|
-
// Start stopping generation by invoking the CancelTasks method
|
|
347
|
-
context.setStoppingGenerationStatus(true);
|
|
348
|
-
// Create a Subject to hold the result of the CancelTasks method
|
|
349
|
-
const stopGenerationSubject$ = new Subject();
|
|
350
|
-
connection.on('CancelTasks', (res) => {
|
|
351
|
-
// When the generation is stopped before streaming any VISIBLE assistant message, this means that $progress, $attachment and $debug properties will be lost.
|
|
352
|
-
// However, the "ContextMessage" frames will be persisted in the chatHistory and the assistant may reference them in the next generation.
|
|
353
|
-
// This leads to the problem of referencing undisplayed attachments in the next generation.
|
|
354
|
-
// To solve this problem, we need to persist $progress, $attachment and $debug properties by adding a new assistant message with empty content and these properties.
|
|
355
|
-
// In the other hand, this leads to the problem of having many empty assistant messages in the chat history, if a stop generation happens multiple times in a row with no content generated yet.
|
|
356
|
-
// To solve this problem mentioned in the ticket ES-27024, we need to allow such operation ONLY if the last assistant message's content in the chat history is not empty.
|
|
357
|
-
const chatHistory = context.getChatHistory();
|
|
358
|
-
const isLastChatHistoryMessageAssistantContentEmpty = chatHistory?.length
|
|
359
|
-
&& chatHistory.at(-1)?.role === "assistant"
|
|
360
|
-
&& (chatHistory.at(-1)?.content === ""
|
|
361
|
-
||
|
|
362
|
-
chatHistory.at(-1)?.content?.find((msg) => msg.type === "text")?.text === "");
|
|
363
|
-
if (this._response && this._response.length === 1 && this._response[0].content === "" && !isLastChatHistoryMessageAssistantContentEmpty) {
|
|
364
|
-
const newChatHistory = chatHistory ? [...chatHistory] : [];
|
|
365
|
-
newChatHistory.push({ role: "assistant", content: "", additionalProperties: { display: true, messageId: guid(), $progress: this._progress, $attachment: this._attachments, $debug: this._debugMessages } });
|
|
366
|
-
context.setChatHistory(newChatHistory);
|
|
367
|
-
}
|
|
368
|
-
// Emit the result of the CancelTasks method
|
|
369
|
-
stopGenerationSubject$.next(!!res);
|
|
370
|
-
// Complete the subject
|
|
371
|
-
stopGenerationSubject$.complete();
|
|
372
|
-
// Complete stopping generation
|
|
373
|
-
context.setStoppingGenerationStatus(false);
|
|
374
|
-
});
|
|
375
|
-
// Invoke the CancelTasks method and handle errors
|
|
376
|
-
connection.invoke('CancelTasks')
|
|
377
|
-
.catch(error => {
|
|
378
|
-
console.error('Error invoking CancelTasks:', error);
|
|
379
|
-
stopGenerationSubject$.error(new Error(error));
|
|
380
|
-
context.setStoppingGenerationStatus(false);
|
|
381
|
-
return Promise.resolve();
|
|
382
|
-
});
|
|
383
|
-
return stopGenerationSubject$.asObservable();
|
|
384
|
-
}
|
|
385
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AssistantWsFramesService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
386
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AssistantWsFramesService }); }
|
|
387
|
-
}
|
|
388
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AssistantWsFramesService, decorators: [{
|
|
389
|
-
type: Injectable
|
|
390
|
-
}] });
|
|
391
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzaXN0YW50LXdzLWZyYW1lcy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXNzaXN0YW50L2NoYXQvc2VydmljZXMvYXNzaXN0YW50LXdzLWZyYW1lcy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5ELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM3RSxPQUFPLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFMUYsT0FBTyxFQUFFLElBQUksRUFBUyxNQUFNLGlCQUFpQixDQUFDO0FBMkI5QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7QUF5QjlELE1BQU0sT0FBTyx3QkFBd0I7SUFEckM7UUFJVSxlQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2hDLGNBQVMsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUNyQyxtQkFBYyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUN4Qyx5QkFBb0IsR0FBRyxNQUFNLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUVwRCxxQkFBZ0IsR0FBcUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUUvRCxlQUFVLEdBQUcsSUFBSSxHQUFHLEVBQXlCLENBQUM7UUFDOUMsY0FBUyxHQUErQixTQUFTLENBQUM7UUFHbEQsaUJBQVksR0FBNEIsRUFBRSxDQUFDO1FBQzNDLG1CQUFjLEdBQW1CLEVBQUUsQ0FBQztLQWtaN0M7SUFoWlEsSUFBSSxDQUFDLE9BQWlDO1FBQzNDLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO0lBQ3pCLENBQUM7SUFFTyxpQkFBaUI7UUFDdkIsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNsQixNQUFNLElBQUksS0FBSyxDQUFDLDhEQUE4RCxDQUFDLENBQUM7UUFDbEYsQ0FBQztJQUNILENBQUM7SUFFTSxLQUFLLENBQUMsUUFBdUIsRUFBRSxLQUFZO1FBQ2hELElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQ3pCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFRLENBQUM7UUFDOUIsTUFBTSxlQUFlLEdBQUcsT0FBTyxDQUFDLGtCQUFrQixFQUFHLENBQUM7UUFFckQsOENBQThDO1FBQy9DLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVqQyxpREFBaUQ7UUFDakQsTUFBTSxJQUFJLEdBQWdCO1lBQ3hCLE9BQU8sRUFBRSxRQUFRO1lBQ2pCLFNBQVMsRUFBRSxlQUFlLENBQUMsYUFBYSxDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztZQUN2RyxLQUFLLEVBQUUsZUFBZSxDQUFDLGFBQWEsQ0FBQyxLQUFLO1lBQzFDLGVBQWUsRUFBRTtnQkFDZixVQUFVLEVBQUUsZUFBZSxDQUFDLGFBQWEsQ0FBQyxVQUFVO2dCQUNwRCxRQUFRLEVBQUUsZUFBZSxDQUFDLGFBQWEsQ0FBQyxRQUFRO2dCQUNoRCxHQUFHLGVBQWUsQ0FBQyx5QkFBeUI7YUFDN0M7WUFDRCxRQUFRLEVBQUU7Z0JBQ1IsR0FBRyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTztnQkFDNUIsS0FBSzthQUNOO1lBQ0QsVUFBVSxFQUFFLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRTtZQUN2QyxNQUFNLEVBQUUsT0FBTyxDQUFDLFNBQVMsRUFBRTtZQUMzQix1QkFBdUIsRUFBRSxlQUFlLENBQUMsY0FBYyxDQUFDLHVCQUF1QixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsY0FBYyxDQUFDLHVCQUF1QixDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7U0FDeEssQ0FBQztRQUVGLElBQUksZUFBZSxDQUFDLGFBQWEsQ0FBQyxXQUFXLEtBQUssU0FBUztZQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsV0FBVyxHQUFHLGVBQWUsQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDO1FBQzFJLElBQUksZUFBZSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEtBQUssU0FBUztZQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxHQUFHLGVBQWUsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDO1FBQ3hILElBQUksZUFBZSxDQUFDLGFBQWEsQ0FBQyxVQUFVLEtBQUssU0FBUztZQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxHQUFHLGVBQWUsQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDO1FBRXZJLDBEQUEwRDtRQUMxRCx3RUFBd0U7UUFDeEUsMEpBQTBKO1FBQzFKLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxvQkFBb0IsRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWxILHdDQUF3QztRQUN4QyxNQUFNLFdBQVcsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBRXhDLDJKQUEySjtRQUMzSixNQUFNLFdBQVcsR0FBRyxLQUFLO2FBQ3RCLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLENBQUM7YUFDckMsTUFBTSxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsWUFBWSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsWUFBWSxDQUFDLGVBQWUsQ0FBQzthQUNwRSxHQUFHLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxZQUFZLENBQUMsRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFNLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRyxFQUFFLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FDM0YsUUFBUSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDakIseUhBQXlIO1lBQ3pILElBQUksQ0FBQztnQkFDSCwwQ0FBMEM7Z0JBQzFDLDBLQUEwSztnQkFDMUssT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ3pDLENBQUM7WUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO2dCQUNmLE9BQU8sQ0FBQyxLQUFLLENBQUMsOEJBQThCLFNBQVMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO2dCQUNqRSxtREFBbUQ7Z0JBQ25ELE9BQU8sVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksS0FBSyxDQUFDLDhCQUE4QixTQUFTLEtBQUssS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQzFGLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FDSCxDQUFDLENBQUM7UUFFUCx1RkFBdUY7UUFDdkYsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLEdBQUcsV0FBVyxDQUFDLENBQUMsSUFBSSxDQUMxQyxHQUFHLENBQUMsR0FBRyxFQUFFO1lBQ1AsdUNBQXVDO1lBQ3ZDLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1lBQ3JELElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDO2dCQUNqQixDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztvQkFDaEIsS0FBSyxFQUFFLENBQUMsQ0FBQyxXQUFXLElBQUksRUFBRTtvQkFDMUIsT0FBTyxFQUFFLENBQUMsQ0FBQyxZQUFZLElBQUksRUFBRTtvQkFDN0IsSUFBSSxFQUFFLENBQUMsQ0FBQyxhQUFhLEtBQUssU0FBUztvQkFDbkMsSUFBSSxFQUFFLENBQUMsQ0FBQyxhQUFhO2lCQUN0QixDQUFDLENBQUM7Z0JBQ1AsQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUU5QixpSEFBaUg7WUFDakgsb0hBQW9IO1lBQ3BILGdIQUFnSDtZQUNoSCx1Q0FBdUM7WUFDdkMsd0VBQXdFO1lBQ3hFLHlIQUF5SDtZQUN6SCxJQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDdEYsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztnQkFDbEUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztnQkFDdkUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQztZQUN0RSxDQUFDO1lBQ0Qsb0JBQW9CO1lBQ3BCLE9BQU8sRUFBRSxPQUFPLEVBQUUsQ0FBQyxHQUFHLFFBQVEsRUFBRSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxhQUFhLEVBQUUsSUFBSSxDQUFDLGNBQWMsRUFBRSx5QkFBeUIsRUFBRSxJQUFJLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztRQUN2SixDQUFDLENBQUM7UUFDRixpREFBaUQ7UUFDakQsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUN2QixDQUFDO1FBRUYsNElBQTRJO1FBQzVJLE9BQU8sSUFBSSxVQUFVLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDL0IsK0JBQStCO1lBQy9CLFNBQVMsQ0FBQyxTQUFTLENBQUM7Z0JBQ2xCLElBQUksRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7Z0JBQ3JDLEtBQUssRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUM7YUFDcEMsQ0FBQyxDQUFDO1lBRUgsMkNBQTJDO1lBQzNDLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDO2lCQUM3QyxJQUFJLENBQUMsR0FBRyxFQUFFO2dCQUNULE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxjQUFjLEVBQUcsQ0FBQztnQkFDOUMseUVBQXlFO2dCQUN6RSxnQ0FBZ0M7Z0JBQ2hDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsaUNBQWlDLENBQUMsV0FBVyxDQUFDLENBQUM7Z0JBQ2pGLElBQUksS0FBSyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7b0JBQ2pCLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztvQkFDbkUsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLG9CQUFvQixDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO29CQUN4RSxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsb0JBQW9CLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUM7b0JBQ3JFLE9BQU8sQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLENBQUM7Z0JBQ3RDLENBQUM7Z0JBRUQsNENBQTRDO2dCQUM1QyxJQUFJLGVBQWUsQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLElBQUksT0FBTyxDQUFDLGNBQWMsRUFBRyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLG9CQUFvQixFQUFFLFdBQVcsS0FBSyxJQUFJLENBQUMsRUFBRSxDQUFDO29CQUN6SSxPQUFPLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUNuRCxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQ1AsU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FDbkIsTUFBTTt3QkFDSixDQUFDLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLEVBQUUsU0FBUyxFQUFFLE9BQU8sQ0FBQyxjQUFjLEVBQUcsQ0FBQzt3QkFDcEYsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxjQUFjLEVBQUcsQ0FBQyxDQUFDLElBQUksQ0FDdkUsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUNuQyxDQUNOLEVBQ0QsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUNsRCxDQUFDLFNBQVMsQ0FBQzt3QkFDVixJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUUsQ0FBQzt3QkFDZCxLQUFLLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDO3dCQUN2QyxRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRTtxQkFDcEMsQ0FBQyxDQUFDO2dCQUNMLENBQUM7cUJBQU0sQ0FBQztvQkFDTixPQUFPLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQ2xDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDdEIsQ0FBQztZQUNILENBQUMsQ0FBQztpQkFDRCxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBQ2IsT0FBTyxDQUFDLEtBQUssQ0FBQyxzQkFBc0IsRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDN0MsT0FBTyxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNsQyxpREFBaUQ7Z0JBQ2pELFFBQVEsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3RCLHdGQUF3RjtnQkFDeEYsT0FBTyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDM0IsQ0FBQyxDQUFDO2lCQUNELE9BQU8sQ0FBQyxHQUFHLEVBQUU7Z0JBQ1osMkVBQTJFO2dCQUMzRSxxREFBcUQ7Z0JBQ3JELG9MQUFvTDtnQkFDcEwsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUMsQ0FBQyxzQkFBc0I7Z0JBQzNDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyx1QkFBdUI7Z0JBQ2hELElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDLENBQUMsc0JBQXNCO2dCQUNsRCxJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQyxDQUFDLHlCQUF5QjtnQkFDakQsSUFBSSxDQUFDLGNBQWMsR0FBRyxFQUFFLENBQUMsQ0FBQywyQkFBMkI7Z0JBQ3JELElBQUksQ0FBQyxjQUFjLEdBQUcsRUFBRSxDQUFDLENBQUMsMkJBQTJCO2dCQUNyRCxJQUFJLENBQUMsMEJBQTBCLEdBQUcsU0FBUyxDQUFDLENBQUMsdUNBQXVDO2dCQUNwRixXQUFXLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyw0Q0FBNEM7Z0JBQ2hFLFdBQVcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLHVCQUF1QjtZQUNqRCxDQUFDLENBQUMsQ0FBQztRQUNQLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLG1CQUFtQjtRQUN4QixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUN6QixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBUSxDQUFDO1FBRTlCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLEVBQUU7WUFDNUIsT0FBTyxFQUFFLENBQUMsS0FBaUIsRUFBRSxFQUFFO2dCQUM3QixJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQztvQkFDMUMsT0FBTyxDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUN6QyxDQUFDO2dCQUNELE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3JCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDekMsQ0FBQztZQUNELGVBQWUsRUFBRSxJQUFJO1NBQ3RCLENBQ0YsQ0FBQztRQUNGLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLEVBQUU7WUFDNUIsT0FBTyxFQUFFLENBQUMsT0FBbUIsRUFBRSxFQUFFO2dCQUMvQixJQUFJLENBQUM7b0JBQ0gsT0FBTyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3JDLENBQUM7Z0JBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztvQkFDZixPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUN2QixDQUFDO1lBQ0gsQ0FBQztZQUNELGVBQWUsRUFBRSxJQUFJO1NBQ3RCLENBQ0YsQ0FBQztRQUNGLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLEVBQUUsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLEdBQUUsQ0FBQyxFQUFFLGVBQWUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzlFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLEVBQUU7WUFDcEMsT0FBTyxFQUFFLENBQUMsTUFBd0IsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUM7WUFDL0UsZUFBZSxFQUFFLEtBQUs7U0FDdkIsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGNBQWMsRUFBRTtZQUNyQyxPQUFPLEVBQUUsQ0FBQyxNQUF5QixFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxNQUFNLEVBQUUsQ0FBQztZQUM1SCxlQUFlLEVBQUUsS0FBSztTQUN2QixDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxFQUFFO1lBQ25DLE9BQU8sRUFBRSxDQUFDLE1BQXVCLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLE1BQU0sRUFBRSxDQUFDO1lBQzFILGVBQWUsRUFBRSxLQUFLO1NBQ3ZCLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxnQkFBZ0IsRUFBRTtZQUN2QyxPQUFPLEVBQUUsQ0FBQyxPQUE0QixFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDcEcsZUFBZSxFQUFFLEtBQUs7U0FDdkIsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsRUFBRTtZQUNoQyxPQUFPLEVBQUUsQ0FBQyxPQUFxQixFQUFFLEVBQUU7Z0JBQ2pDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFFLENBQUMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDO2dCQUN0RCxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBRSxDQUFDLG9CQUFvQixDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDO1lBQzVFLENBQUM7WUFDRCxlQUFlLEVBQUUsS0FBSztTQUN2QixDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsaUJBQWlCLENBQUMsU0FBUyxFQUFFO1lBQzlCLE9BQU8sRUFBRSxDQUFDLE9BQXFCLEVBQUUsRUFBRTtnQkFDakMsdUtBQXVLO2dCQUN2SywrSEFBK0g7Z0JBQy9ILE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUFFLElBQUksRUFBRSxDQUFrQixDQUFDO2dCQUM3RSxNQUFNLFVBQVUsR0FBRyxDQUFDLEdBQUcsa0JBQWtCLEVBQUUsR0FBRyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQWtCLENBQUM7Z0JBQ25ILE9BQU8sQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBRW5DLHNDQUFzQztnQkFDdEMsTUFBTSxXQUFXLEdBQUcsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN0QyxJQUFJLFdBQVcsRUFBRSxvQkFBb0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztvQkFDbkQsT0FBTyxDQUFDLHNCQUFzQixDQUFDLFdBQVcsQ0FBQyxvQkFBb0IsQ0FBQyxZQUFZLENBQUMsQ0FBQztnQkFDaEYsQ0FBQztnQkFDRCxJQUFJLENBQUMsY0FBYyxHQUFHLE9BQU8sQ0FBQyxhQUFhLENBQUM7Z0JBQzVDLElBQUksQ0FBQywwQkFBMEIsR0FBRyxPQUFPLENBQUMseUJBQXlCLENBQUM7WUFDdEUsQ0FBQztZQUNELGVBQWUsRUFBRSxLQUFLO1NBQ3ZCLENBQ0YsQ0FBQztRQUNGLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxrQkFBa0IsRUFBRTtZQUN2QyxPQUFPLEVBQUUsQ0FBQyxPQUE4QixFQUFFLEVBQUU7Z0JBQzFDLDBFQUEwRTtnQkFDMUUsNkhBQTZIO2dCQUM3SCxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBRSxDQUFDLG9CQUFvQixDQUFDLGdCQUFnQixHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUUsQ0FBQyxvQkFBb0IsQ0FBQyxnQkFBZ0IsSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUM7Z0JBQ3JLLE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxjQUFjLEVBQUcsQ0FBQztnQkFDOUMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxnQ0FBZ0MsQ0FBQyxXQUFXLENBQUMsQ0FBQztnQkFDaEYsSUFBSSxLQUFLLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQztvQkFDakIsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLG9CQUFvQixDQUFDLGdCQUFnQixHQUFHLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLG9CQUFvQixDQUFDLGdCQUFnQixJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztvQkFDN0osT0FBTyxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsQ0FBQztnQkFDdEMsQ0FBQztZQUNILENBQUM7WUFDRCxlQUFlLEVBQUUsS0FBSztTQUN2QixDQUNGLENBQUM7UUFDRixJQUFJLENBQUMsaUJBQWlCLENBQUMsY0FBYyxFQUFFO1lBQ3JDLE9BQU8sRUFBRSxDQUFDLE9BQTBCLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDO1lBQ2xHLGVBQWUsRUFBRSxLQUFLO1NBQ3ZCLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxjQUFjLEVBQUU7WUFDbkMsT0FBTyxFQUFFLEdBQUcsRUFBRTtnQkFDWix5REFBeUQ7Z0JBQ3pELGtFQUFrRTtnQkFDbEUsTUFBTSxlQUFlLEdBQUcsT0FBTyxDQUFDLGtCQUFrQixFQUFFLENBQUM7Z0JBQ3JELE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxjQUFjLEVBQUUsQ0FBQztnQkFDN0MsSUFBSSxDQUFDLGVBQWUsSUFBSSxDQUFDLFdBQVcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNO29CQUFFLE9BQU87Z0JBRXBFLE1BQU0sZUFBZSxHQUFHLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUUsQ0FBQztnQkFFNUMsTUFBTSxPQUFPLEdBQUc7b0JBQ2QsVUFBVSxFQUFFLElBQUksQ0FBQywwQkFBMEIsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWM7b0JBQ2pILE1BQU0sRUFBRSxlQUFlLENBQUMsSUFBSTtvQkFDNUIsTUFBTSxFQUFFLFdBQVcsQ0FBQyxNQUFNO29CQUMxQixZQUFZLEVBQUUsZUFBZSxDQUFDLG9CQUFvQixDQUFDLFNBQVM7b0JBQzVELHVCQUF1QixFQUFFLGVBQWUsQ0FBQyxvQkFBb0IsQ0FBQyxZQUFZLEVBQUUsb0JBQW9CO29CQUNoRyxtQkFBbUIsRUFBRSxlQUFlLENBQUMsb0JBQW9CLENBQUMsWUFBWSxFQUFFLGdCQUFnQjtvQkFDeEYsYUFBYSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO3dCQUMvRSxRQUFRO3dCQUNSLFNBQVM7d0JBQ1QsS0FBSyxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFOzRCQUNwQyxJQUFJLENBQUMsQ0FBQyxlQUFlLENBQUMsYUFBYSxFQUFFLFVBQVU7Z0NBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQzs0QkFDekUsT0FBTyxFQUFFLE1BQU0sRUFBRSxDQUFDO3dCQUNwQixDQUFDLENBQUM7d0JBQ0YsSUFBSTtxQkFDTCxDQUFDLENBQUMsQ0FBQztpQkFDbkIsQ0FBQztnQkFDRixJQUFJLENBQUMsQ0FBQyxlQUFlLENBQUMsYUFBYSxFQUFFLFVBQVUsRUFBRSxDQUFDO29CQUNoRCxJQUFJLE9BQU8sZUFBZSxDQUFDLE9BQU8sS0FBSyxRQUFRLEVBQUUsQ0FBQzt3QkFDL0MsT0FBZSxDQUFDLE1BQU0sQ0FBQyxHQUFHLGVBQWUsQ0FBQyxPQUFPLENBQUM7b0JBQ3JELENBQUM7eUJBQU0sSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO3dCQUNqRCxPQUFlLENBQUMsTUFBTSxDQUFDLEdBQUksZUFBZSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEtBQUssTUFBTSxDQUF3QixDQUFDLElBQUksQ0FBQTtvQkFDcEgsQ0FBQztnQkFDSCxDQUFDO2dCQUNELE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxxQkFBcUIsRUFBRSxPQUFPLENBQUMsQ0FBQztnQkFDM0QsMkdBQTJHO2dCQUMzRyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFFLENBQUMsT0FBTyxLQUFLLEVBQUUsRUFBRSxDQUFDO29CQUMxQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFDLElBQUksRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxvQkFBb0IsRUFBRSxFQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxFQUFDLEVBQUMsQ0FBQyxDQUFDO2dCQUNsSCxDQUFDO1lBQ0gsQ0FBQztZQUNELGVBQWUsRUFBRSxLQUFLO1NBQ3ZCLENBQ0YsQ0FBQztJQUNKLENBQUM7SUFFTSx1QkFBdUIsQ0FBSSxnQkFBZ0Q7UUFDaEYsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDekIsZ0ZBQWdGO1FBQ2hGLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxZQUFZLEVBQUUsU0FBUyxFQUFFLEVBQUU7WUFDeEQsSUFBRyxZQUFZLENBQUMsZUFBZSxFQUFFLENBQUM7Z0JBQ2hDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUM1QyxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSCxzREFBc0Q7UUFDdEQsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsR0FBRyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7UUFDakYsb0RBQW9EO1FBQ3BELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxZQUFZLEVBQUUsU0FBUyxFQUFFLEVBQUU7WUFDeEQsSUFBRyxZQUFZLENBQUMsZUFBZSxFQUFFLENBQUM7Z0JBQ2hDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxTQUFTLEVBQUUsWUFBWSxDQUFDLENBQUM7WUFDdkQsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLGlCQUFpQixDQUFJLFNBQWlCLEVBQUUsWUFBK0I7UUFDNUUsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDbkQsSUFBRyxZQUFZLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDaEMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFNBQVMsRUFBRSxZQUFZLENBQUMsQ0FBQztRQUN2RCxDQUFDO0lBQ0gsQ0FBQztJQUVNLHNCQUFzQixDQUFJLFNBQWlCLEVBQUUsWUFBK0I7UUFDakYsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDekIsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLE9BQVEsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3BELElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNoQixPQUFPLENBQUMsR0FBRyxDQUFDLDhDQUE4QyxHQUFHLFNBQVMsQ0FBQyxDQUFDO1lBQ3hFLE9BQU87UUFDVCxDQUFDO1FBQ0QsVUFBVSxDQUFDLEVBQUUsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxJQUFPLEVBQUUsRUFBRTtZQUNuQyxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLG9CQUFvQixDQUFDLFNBQWlCO1FBQzNDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDeEMsSUFBSSxDQUFDLHlCQUF5QixDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFTSx5QkFBeUIsQ0FBQyxTQUFpQjtRQUNoRCxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUN6QixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsT0FBUSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDcEQsVUFBVSxFQUFFLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRU0sY0FBYztRQUNuQixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUN6QixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBUSxDQUFDO1FBQzlCLE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRyxDQUFDO1FBRTlDLCtEQUErRDtRQUNoRSxPQUFPLENBQUMsMkJBQTJCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDMUMsZ0VBQWdFO1FBQ2hFLE1BQU0sc0JBQXNCLEdBQUcsSUFBSSxPQUFPLEVBQVcsQ0FBQztRQUV0RCxVQUFVLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ25DLDRKQUE0SjtZQUM1Six5SUFBeUk7WUFDekksMkZBQTJGO1lBQzNGLG9LQUFvSztZQUNwSyxnTUFBZ007WUFDaE0seUtBQXlLO1lBQ3pLLE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUM3QyxNQUFNLDZDQUE2QyxHQUFHLFdBQVcsRUFBRSxNQUFNO21CQUN2QixXQUFXLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxLQUFLLFdBQVc7bUJBQ3pDLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sS0FBSyxFQUFFOzt3QkFFaEMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQTRCLEVBQUUsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxLQUFLLE1BQU0sQ0FBd0IsRUFBRSxJQUFJLEtBQUssRUFBRSxDQUMzSCxDQUFDO1lBQ2xELElBQUksSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEtBQUssRUFBRSxJQUFJLENBQUMsNkNBQTZDLEVBQUUsQ0FBQztnQkFDeEksTUFBTSxjQUFjLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDM0QsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFDLElBQUksRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxvQkFBb0IsRUFBRSxFQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLFdBQVcsRUFBRSxJQUFJLENBQUMsWUFBWSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsY0FBYyxFQUFDLEVBQUMsQ0FBQyxDQUFDO2dCQUN4TSxPQUFPLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQ3pDLENBQUM7WUFDRCw0Q0FBNEM7WUFDNUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNuQyx1QkFBdUI7WUFDdkIsc0JBQXNCLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbEMsK0JBQStCO1lBQy9CLE9BQU8sQ0FBQywyQkFBMkIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM3QyxDQUFDLENBQUMsQ0FBQztRQUVILGtEQUFrRDtRQUNsRCxVQUFVLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQzthQUM3QixLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDYixPQUFPLENBQUMsS0FBSyxDQUFDLDZCQUE2QixFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ3BELHNCQUFzQixDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQyxLQUFlLENBQUMsQ0FBQyxDQUFDO1lBQ3pELE9BQU8sQ0FBQywyQkFBMkIsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMzQyxPQUFPLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUMzQixDQUFDLENBQUMsQ0FBQztRQUVMLE9BQU8sc0JBQXNCLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDL0MsQ0FBQzsrR0FoYVUsd0JBQXdCO21IQUF4Qix3QkFBd0I7OzRGQUF4Qix3QkFBd0I7a0JBRHBDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEh1YkNvbm5lY3Rpb24gfSBmcm9tICdAbWljcm9zb2Z0L3NpZ25hbHInO1xuaW1wb3J0IHsgVHJhbnNsb2NvU2VydmljZSB9IGZyb20gJ0Bqc3ZlcnNlL3RyYW5zbG9jbyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0LCBmcm9tRXZlbnQsIG1lcmdlLCBvZiwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwLCBtZXJnZU1hcCwgdGFrZVVudGlsLCB0YXAsIHRha2UsIHN3aXRjaE1hcCwgZmluYWxpemUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IGd1aWQsIFF1ZXJ5IH0gZnJvbSBcIkBzaW5lcXVhL2F0b21pY1wiO1xuXG5pbXBvcnQge1xuICBBY3Rpb25NZXNzYWdlLFxuICBBY3Rpb25SZXN1bHRFdmVudCxcbiAgQWN0aW9uU3RhcnRFdmVudCxcbiAgQWN0aW9uU3RvcEV2ZW50LFxuICBDaGF0Q29uZmlnLFxuICBDaGF0Q29udGV4dEF0dGFjaG1lbnQsXG4gIENoYXRNZXNzYWdlLFxuICBDaGF0UGF5bG9hZCxcbiAgQ2hhdFByb2dyZXNzLFxuICBDaGF0UmVzcG9uc2UsXG4gIENoYXRVc2FnZU1ldHJpY3MsXG4gIENvbnRleHRNZXNzYWdlRXZlbnQsXG4gIERlYnVnTWVzc2FnZSxcbiAgRGVidWdNZXNzYWdlRXZlbnQsXG4gIEVycm9yRXZlbnQsXG4gIEhpc3RvcnlFdmVudCxcbiAgTWVzc2FnZUhhbmRsZXIsXG4gIE1lc3NhZ2VFdmVudCxcbiAgUXVvdGEsXG4gIFF1b3RhRXZlbnQsXG4gIFNhdmVkQ2hhdFJlc3BvbnNlLFxuICBTdWdnZXN0ZWRBY3Rpb25zRXZlbnRcbn0gZnJvbSAnLi4vdHlwZXMnO1xuXG5pbXBvcnQgeyBBcHBTZXJ2aWNlIH0gZnJvbSAnLi9hcHAuc2VydmljZSc7XG5pbXBvcnQgeyBBc3Npc3RhbnRVdGlscyB9IGZyb20gJy4uL3V0aWxzL3V0aWxzLnNlcnZpY2UnO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uc1NlcnZpY2UgfSBmcm9tICcuL25vdGlmaWNhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IE1lc3NhZ2VDb250ZW50LCBUZXh0TWVzc2FnZUNvbnRlbnQgfSBmcm9tICcuLi90eXBlcy9tZXNzYWdlLWNvbnRlbnQudHlwZXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFzc2lzdGFudFdzRnJhbWVzQ29udGV4dCB7XG4gIGdldEFzc2lzdGFudENvbmZpZzogKCkgPT4gQ2hhdENvbmZpZyB8IHVuZGVmaW5lZDtcbiAgZ2V0Q2hhdEluc3RhbmNlSWQ6ICgpID0+IHN0cmluZztcbiAgZ2V0Q2hhdElkOiAoKSA9PiBzdHJpbmc7XG4gIGdldEh1YkNvbm5lY3Rpb246ICgpID0+IEh1YkNvbm5lY3Rpb24gfCB1bmRlZmluZWQ7XG4gIGdldENoYXRIaXN0b3J5OiAoKSA9PiBDaGF0TWVzc2FnZVtdIHwgdW5kZWZpbmVkO1xuXG4gIHNldFN0cmVhbWluZ1N0YXR1czogKGlzU3RyZWFtaW5nOiBib29sZWFuKSA9PiB2b2lkO1xuICBzZXRDaGF0SGlzdG9yeTogKGhpc3Rvcnk6IENoYXRNZXNzYWdlW10gfCB1bmRlZmluZWQpID0+IHZvaWQ7XG4gIHNldFN0b3BwaW5nR2VuZXJhdGlvblN0YXR1czogKGlzU3RvcHBpbmc6IGJvb2xlYW4pID0+IHZvaWQ7XG4gIHNldFNhdmVkQ2hhdHNFcnJvclN0YXR1czogKGhhc0Vycm9yOiBib29sZWFuKSA9PiB2b2lkO1xuXG4gIHVwZGF0ZVF1b3RhOiAocXVvdGE6IFF1b3RhLCBwcm9wYWdhdGVFcnJvcj86IGJvb2xlYW4pID0+IHZvaWQ7XG4gIHVwZGF0ZUNoYXRVc2FnZU1ldHJpY3M6IChtZXRyaWNzOiBDaGF0VXNhZ2VNZXRyaWNzKSA9PiB2b2lkO1xuICBnZW5lcmF0ZUF1ZGl0RXZlbnQ6ICh0eXBlOiBzdHJpbmcsIGRldGFpbHM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGlkPzogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+O1xuICBhZGRTYXZlZENoYXQ6IChpZDogc3RyaW5nLCBtZXNzYWdlczogQ2hhdE1lc3NhZ2VbXSkgPT4gT2JzZXJ2YWJsZTxTYXZlZENoYXRSZXNwb25zZT47XG4gIHVwZGF0ZVNhdmVkQ2hhdDogKGlkOiBzdHJpbmcsIG5hbWU/OiBzdHJpbmcsIG1lc3NhZ2VzPzogQ2hhdE1lc3NhZ2VbXSkgPT4gT2JzZXJ2YWJsZTxTYXZlZENoYXRSZXNwb25zZT47XG4gIGxpc3RTYXZlZENoYXQ6ICgpID0+IHZvaWQ7XG4gIGlzRXhpc3RpbmdTYXZlZENoYXQ6IChpZDogc3RyaW5nKSA9PiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQXNzaXN0YW50V3NGcmFtZXNTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBjb250ZXh0OiBBc3Npc3RhbnRXc0ZyYW1lc0NvbnRleHQgfCB1bmRlZmluZWQ7XG5cbiAgcHJpdmF0ZSBhcHBTZXJ2aWNlID0gaW5qZWN0KEFwcFNlcnZpY2UpO1xuICBwcml2YXRlIHRyYW5zbG9jbyA9IGluamVjdChUcmFuc2xvY29TZXJ2aWNlKTtcbiAgcHJpdmF0ZSBhc3Npc3RhbnRVdGlscyA9IGluamVjdChBc3Npc3RhbnRVdGlscyk7XG4gIHByaXZhdGUgbm90aWZpY2F0aW9uc1NlcnZpY2UgPSBpbmplY3QoTm90aWZpY2F0aW9uc1NlcnZpY2UpO1xuXG4gIHByaXZhdGUgX21lc3NhZ2VIYW5kbGVyczogTWFwPHN0cmluZywgTWVzc2FnZUhhbmRsZXI8YW55Pj4gPSBuZXcgTWFwKCk7XG4gIHByaXZhdGUgX3Jlc3BvbnNlOiBDaGF0TWVzc2FnZVtdO1xuICBwcml2YXRlIF9hY3Rpb25NYXAgPSBuZXcgTWFwPHN0cmluZywgQWN0aW9uTWVzc2FnZT4oKTtcbiAgcHJpdmF0ZSBfcHJvZ3Jlc3M6IENoYXRQcm9ncmVzc1tdIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICBwcml2YXRlIF9leGVjdXRpb25UaW1lOiBzdHJpbmc7XG4gIHByaXZhdGUgX2V4ZWN1dGlvblRpbWVNaWxsaXNlY29uZHM/OiBudW1iZXI7XG4gIHByaXZhdGUgX2F0dGFjaG1lbnRzOiBDaGF0Q29udGV4dEF0dGFjaG1lbnRbXSA9IFtdO1xuICBwcml2YXRlIF9kZWJ1Z01lc3NhZ2VzOiBEZWJ1Z01lc3NhZ2VbXSA9IFtdO1xuXG4gIHB1YmxpYyBpbml0KGNvbnRleHQ6IEFzc2lzdGFudFdzRnJhbWVzQ29udGV4dCk6IHZvaWQge1xuICAgIHRoaXMuY29udGV4dCA9IGNvbnRleHQ7XG4gIH1cblxuICBwcml2YXRlIGVuc3VyZUluaXRpYWxpemVkKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5jb250ZXh0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Fzc2lzdGFudFdzRnJhbWVzU2VydmljZSBub3QgaW5pdGlhbGl6ZWQuIENhbGwgaW5pdCgpIGZpcnN0LicpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBmZXRjaChtZXNzYWdlczogQ2hhdE1lc3NhZ2VbXSwgcXVlcnk6IFF1ZXJ5KTogT2JzZXJ2YWJsZTxDaGF0UmVzcG9uc2U+IHtcbiAgICB0aGlzLmVuc3VyZUluaXRpYWxpemVkKCk7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuY29udGV4dCE7XG4gICAgY29uc3QgYXNzaXN0YW50Q29uZmlnID0gY29udGV4dC5nZXRBc3Npc3RhbnRDb25maWcoKSE7XG5cbiAgICAgLy8gU3RhcnQgc3RyZWFtaW5nIGJ5IGludm9raW5nIHRoZSBDaGF0IG1ldGhvZFxuICAgIGNvbnRleHQuc2V0U3RyZWFtaW5nU3RhdHVzKHRydWUpO1xuXG4gICAgLy8gUHJlcGFyZSB0aGUgcGF5bG9hZCB0byBzZW5kIHRvIHRoZSBDaGF0IG1ldGhvZFxuICAgIGNvbnN0IGRhdGE6IENoYXRQYXlsb2FkID0ge1xuICAgICAgaGlzdG9yeTogbWVzc2FnZXMsXG4gICAgICBmdW5jdGlvbnM6IGFzc2lzdGFudENvbmZpZy5kZWZhdWx0VmFsdWVzLmZ1bmN0aW9ucz8uZmlsdGVyKGZ1bmMgPT4gZnVuYy5lbmFibGVkKS5tYXAoZnVuYyA9PiBmdW5jLm5hbWUpLFxuICAgICAgZGVidWc6IGFzc2lzdGFudENvbmZpZy5kZWZhdWx0VmFsdWVzLmRlYnVnLFxuICAgICAgc2VydmljZVNldHRpbmdzOiB7XG4gICAgICAgIHNlcnZpY2VfaWQ6IGFzc2lzdGFudENvbmZpZy5kZWZhdWx0VmFsdWVzLnNlcnZpY2VfaWQsXG4gICAgICAgIG1vZGVsX2lkOiBhc3Npc3RhbnRDb25maWcuZGVmYXVsdFZhbHVlcy5tb2RlbF9pZCxcbiAgICAgICAgLi4uYXNzaXN0YW50Q29uZmlnLmFkZGl0aW9uYWxTZXJ2aWNlU2V0dGluZ3NcbiAgICAgIH0sXG4gICAgICBhcHBRdWVyeToge1xuICAgICAgICBhcHA6IHRoaXMuYXBwU2VydmljZS5hcHBOYW1lLFxuICAgICAgICBxdWVyeVxuICAgICAgfSxcbiAgICAgIGluc3RhbmNlSWQ6IGNvbnRleHQuZ2V0Q2hhdEluc3RhbmNlSWQoKSxcbiAgICAgIGNoYXRJZDogY29udGV4dC5nZXRDaGF0SWQoKSxcbiAgICAgIGdlbmVyaWNDaGF0RXJyb3JNZXNzYWdlOiBhc3Npc3RhbnRDb25maWcuZ2xvYmFsU2V0dGluZ3MuZ2VuZXJpY0NoYXRFcnJvck1lc3NhZ2UgPyB0aGlzLnRyYW5zbG9jby50cmFuc2xhdGUoYXNzaXN0YW50Q29uZmlnLmdsb2JhbFNldHRpbmdzLmdlbmVyaWNDaGF0RXJyb3JNZXNzYWdlKSA6IFwiXCJcbiAgICB9O1xuXG4gICAgaWYgKGFzc2lzdGFudENvbmZpZy5kZWZhdWx0VmFsdWVzLnRlbXBlcmF0dXJlICE9PSB1bmRlZmluZWQpIGRhdGEuc2VydmljZVNldHRpbmdzLnRlbXBlcmF0dXJlID0gYXNzaXN0YW50Q29uZmlnLmRlZmF1bHRWYWx1ZXMudGVtcGVyYXR1cmU7XG4gICAgaWYgKGFzc2lzdGFudENvbmZpZy5kZWZhdWx0VmFsdWVzLnRvcF9wICE9PSB1bmRlZmluZWQpIGRhdGEuc2VydmljZVNldHRpbmdzLnRvcF9wID0gYXNzaXN0YW50Q29uZmlnLmRlZmF1bHRWYWx1ZXMudG9wX3A7XG4gICAgaWYgKGFzc2lzdGFudENvbmZpZy5kZWZhdWx0VmFsdWVzLm1heF90b2tlbnMgIT09IHVuZGVmaW5lZCkgZGF0YS5zZXJ2aWNlU2V0dGluZ3MubWF4X3Rva2VucyA9IGFzc2lzdGFudENvbmZpZy5kZWZhdWx0VmFsdWVzLm1heF90b2tlbnM7XG5cbiAgICAvLyBJbml0aWFsaXplIHRoZSByZXNwb25zZSB3aXRoIGFuIGVtcHR5IGFzc2lzdGFudCBtZXNzYWdlXG4gICAgLy8gaGVyZSBkaXNwbGF5OiB0cnVlIGlzIG5lZWRlZCBpbiBvcmRlciB0byBiZSBhYmxlIHRvIHNob3cgdGhlIHByb2dyZXNzXG4gICAgLy8gaGVyZSBtZXNzYWdlSWQgaXMgbmVlZGVkIGJ1dCBpdCBpcyB0ZW1wb3JhcnkgYW5kIHdpbGwgYmUgcmVwbGFjZWQgYnkgdGhlIGNvcnJlY3QgbWVzc2FnZUlkIGdlbmVyYXRlZCBieSB0aGUgYXNzaXN0YW50IHdoZW4gdGhlIG1lc3NhZ2Ugc3RhcnRzIHN0cmVhbWluZ1xuICAgIHRoaXMuX3Jlc3BvbnNlID0gW3sgcm9sZTogXCJhc3Npc3RhbnRcIiwgY29udGVudDogXCJcIiwgYWRkaXRpb25hbFByb3BlcnRpZXM6IHsgZGlzcGxheTogdHJ1ZSwgbWVzc2FnZUlkOiBndWlkKCkgfSB9XTtcblxuICAgIC8vIENyZWF0ZSBhIFN1YmplY3QgdG8gc2lnbmFsIGNvbXBsZXRpb25cbiAgICBjb25zdCBjb21wbGV0aW9uJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICAvLyBDcmVhdGUgb2JzZXJ2YWJsZXMgZm9yIGVhY2ggbm9uLWdsb2JhbCBoYW5kbGVyIGluIHRoZSBfbWVzc2FnZUhhbmRsZXJzIG1hcCAoZGVmYXVsdCBhbmQgZXZlbnR1YWwgY3VzdG9tIG9uZXMpIG9uY2UgaXQgaXMgdHJpZ2dlcmVkIGJ5IHRoZSBodWIgY29ubmVjdGlvblxuICAgIGNvbnN0IG9ic2VydmFibGVzID0gQXJyYXlcbiAgICAgIC5mcm9tKHRoaXMuX21lc3NhZ2VIYW5kbGVycy5lbnRyaWVzKCkpXG4gICAgICAuZmlsdGVyKChbZXZlbnROYW1lLCBldmVudEhhbmRsZXJdKSA9PiAhZXZlbnRIYW5kbGVyLmlzR2xvYmFsSGFuZGxlcilcbiAgICAgIC5tYXAoKFtldmVudE5hbWUsIGV2ZW50SGFuZGxlcl0pID0+IGZyb21FdmVudDxhbnk+KGNvbnRleHQuZ2V0SHViQ29ubmVjdGlvbigpISwgZXZlbnROYW1lKS5waXBlKFxuICAgICAgICAgIG1lcmdlTWFwKChldmVudCkgPT4ge1xuICAgICAgICAgICAgLy8gV3JhcCB0aGUgaGFuZGxlciBpbiBhIHRyeS1jYXRjaCBibG9jayB0byBwcmV2ZW50IHRoZSBlbnRpcmUgc3RyZWFtIGZyb20gZmFpbGluZyBpZiBhbiBlcnJvciBvY2N1cnMgaW4gYSBzaW5nbGUgaGFuZGxlclxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgLy8gRXhlY3V0ZSB0aGUgaGFuZGxlciBhbmQgZW1pdCB0aGUgcmVzdWx0XG4gICAgICAgICAgICAgIC8vIE5COiBoZXJlIHdlIGNvdWxkIHVzZSBbZXZlbnRIYW5kbGVyLmhhbmRsZXIoZXZlbnQpXSB3aGljaCBiZWhpbmQgdGhlIHNjZW5lcyBtZXJnZU1hcCBpbnRlcnByZXRzIHRoaXMgYXJyYXkgYXMgYW4gb2JzZXJ2YWJsZSBzZXF1ZW5jZSB3aXRoIG9uZSBpdGVtLCB3aGljaCBpdCB0aGVuIGVtaXRzXG4gICAgICAgICAgICAgIHJldHVybiBvZihldmVudEhhbmRsZXIuaGFuZGxlcihldmVudCkpO1xuICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihgRXJyb3IgaW4gZXZlbnQgaGFuZGxlciBmb3IgJHtldmVudE5hbWV9OmAsIGVycm9yKTtcbiAgICAgICAgICAgICAgLy8gVXNlIHRocm93RXJyb3IgdG8gcHJvcGFnYXRlIHRoZSBlcnJvciBkb3duc3RyZWFtXG4gICAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IG5ldyBFcnJvcihgRXJyb3IgaW4gZXZlbnQgaGFuZGxlciBmb3IgJHtldmVudE5hbWV9OiAke2Vycm9yfWApKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuICAgICAgICApKTtcblxuICAgIC8vIFRoZW4gbWVyZ2UgdGhlbSBpbnRvIGEgc2luZ2xlIG9ic2VydmFibGUgaW4gb3JkZXIgdG8gc2ltdWxhdGUgdGhlIHN0cmVhbWluZyBiZWhhdmlvclxuICAgIGNvbnN0IGNvbWJpbmVkJCA9IG1lcmdlKC4uLm9ic2VydmFibGVzKS5waXBlKFxuICAgICAgbWFwKCgpID0+IHtcbiAgICAgICAgLy8gRGVmaW5lICRwcm9ncmVzcyBmcm9tIHRoZSBfYWN0aW9uTWFwXG4gICAgICAgIGNvbnN0IGFjdGlvbnMgPSBBcnJheS5mcm9tKHRoaXMuX2FjdGlvbk1hcC52YWx1ZXMoKSk7XG4gICAgICAgIHRoaXMuX3Byb2dyZXNzID0gYWN0aW9ucy5sZW5ndGggPiAwXG4gICAgICAgICAgICAgICAgICAgICAgICAgID8gYWN0aW9ucy5tYXAoKGEpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBhLmRpc3BsYXlOYW1lID8/IFwiXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGEuZGlzcGxheVZhbHVlID8/IFwiXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbmU6IGEuZXhlY3V0aW9uVGltZSAhPT0gdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lOiBhLmV4ZWN1dGlvblRpbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICAgICAgLy8gQWx3YXlzIHVwZGF0ZSBPTkxZIHRoZSBmaXJzdCBhc3Npc3RhbnQgbWVzc2FnZSBvZiB0aGUgX3Jlc3BvbnNlIHdpdGggdGhlIG5ldyAkcHJvZ3Jlc3MsICRhdHRhY2htZW50IGFuZCAkZGVidWdcbiAgICAgICAgLy8gQXNzdW1pbmcgdGhhdCB0aGUgZmlyc3QgYXNzaXN0YW50IG1lc3NhZ2UgaXMgYWx3YXlzIHZpc2libGUgc2luY2UgdGhlIGh1YiBkb2VzIG5vdCBzZW5kIGhpZGRlbiBtZXNzYWdlcyBieSBkZXNpZ25cbiAgICAgICAgLy8gU28gZXZlbiBpZiB0aGUgZmlyc3QgYXNzaXN0YW50IG1lc3NhZ2UgaXMgaGlkZGVuIChkaXNwbGF5OiBmYWxzZSksIHRoZSBfcmVzcG9uc2VbMF0gd2lsbCBhbmQgc2hvdWxkIGNvbnRhaW4gOlxuICAgICAgICAvLyAgLSAkcHJvZ3Jlc3MsICRhdHRhY2htZW50IGFuZCAkZGVidWdcbiAgICAgICAgLy8gIC0gdGhlIGNvbnRlbnQgb2YgdGhlIGZpcnN0IHZpc2libGUgYXNzaXN0YW50IG1lc3NhZ2UgaW4gdGhlIHdvcmtmbG93XG4gICAgICAgIC8vIFRoaXMgaXMgbWFuZGF0b3J5IGluIG9yZGVyIHRvIG1hdGNoIHRoZSBiZWhhdmlvciBvZiBjb25zZWN1dGl2ZSBtZXNzYWdlcyBhbmQgbWFpbnRhaW4gY29uc2lzdGVuY3kgd2l0aCB0aGUgY2hhdEhpc3RvcnlcbiAgICAgICAgaWYoISF0aGlzLl9wcm9ncmVzcyB8fCB0aGlzLl9hdHRhY2htZW50cy5sZW5ndGggPiAwIHx8IHRoaXMuX2RlYnVnTWVzc2FnZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgIHRoaXMuX3Jlc3BvbnNlWzBdLmFkZGl0aW9uYWxQcm9wZXJ0aWVzLiRwcm9ncmVzcyA9IHRoaXMuX3Byb2dyZXNzO1xuICAgICAgICAgIHRoaXMuX3Jlc3BvbnNlWzBdLmFkZGl0aW9uYWxQcm9wZXJ0aWVzLiRhdHRhY2htZW50ID0gdGhpcy5fYXR0YWNobWVudHM7XG4gICAgICAgICAgdGhpcy5fcmVzcG9uc2VbMF0uYWRkaXRpb25hbFByb3BlcnRpZXMuJGRlYnVnID0gdGhpcy5fZGVidWdNZXNzYWdlcztcbiAgICAgICAgfVxuICAgICAgICAvLyBSZXR1cm4gdGhlIHJlc3VsdFxuICAgICAgICByZXR1cm4geyBoaXN0b3J5OiBbLi4ubWVzc2FnZXMsIC4uLnRoaXMuX3Jlc3BvbnNlXSwgZXhlY3V0aW9uVGltZTogdGhpcy5fZXhlY3V0aW9uVGltZSwgZXhlY3V0aW9uVGltZU1pbGxpc2Vjb25kczogdGhpcy5fZXhlY3V0aW9uVGltZU1pbGxpc2Vjb25kcyB9O1xuICAgICAgfSksXG4gICAgICAvLyBDb21wbGV0ZSB0aGUgb2JzZXJ2YWJsZSB3aGVuIGNvbXBsZXRpb24kIGVtaXRzXG4gICAgICB0YWtlVW50aWwoY29tcGxldGlvbiQpLFxuICAgICk7XG5cbiAgICAvLyByZXR1cm4gYSBuZXcgT2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHRoZSByZXN1bHQgb2YgdGhlIGNvbWJpbmVkIHN0cmVhbSBhbmQgaGFuZGxlcyB0aGUgZXZlbnR1YWwgZXJyb3JzIG9mIHRoZSBpbnZvY2F0aW9uIG9mIHRoZSBDaGF0IG1ldGhvZFxuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZShvYnNlcnZlciA9PiB7XG4gICAgICAvLyBTdWJzY3JpYmUgdG8gY29tYmluZWQgc3RyZWFtXG4gICAgICBjb21iaW5lZCQuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKHZhbHVlKSA9PiBvYnNlcnZlci5uZXh0KHZhbHVlKSxcbiAgICAgICAgZXJyb3I6IChlcnIpID0+IG9ic2VydmVyLmVycm9yKGVycilcbiAgICAgIH0pO1xuXG4gICAgICAvLyBJbnZva2UgdGhlIENoYXQgbWV0aG9kIGFuZCBoYW5kbGUgZXJyb3JzXG4gICAgICBjb250ZXh0LmdldEh1YkNvbm5lY3Rpb24oKSEuaW52b2tlKCdDaGF0JywgZGF0YSlcbiAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGNoYXRIaXN0b3J5ID0gY29udGV4dC5nZXRDaGF0SGlzdG9yeSgpITtcbiAgICAgICAgICAvLyBJZiBhIHZhbGlkIGFzc2lzdGFudCBtZXNzYWdlIHdpdGggKGRpc3BsYXk6IHRydWUpIHdhcyBmb3VuZCwgdXBkYXRlIGl0XG4gICAgICAgICAgLy8gYW5kIGl0IHNob3VsZCBhbHdheXMgdGhlIGNhc2VcbiAgICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuYXNzaXN0YW50VXRpbHMuZmlyc3RWaXNpYmxlQXNzaXN0YW50TWVzc2FnZUluZGV4KGNoYXRIaXN0b3J5KTtcbiAgICAgICAgICBpZiAoaW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgICBjaGF0SGlzdG9yeVtpbmRleF0uYWRkaXRpb25hbFByb3BlcnRpZXMuJHByb2dyZXNzID0gdGhpcy5fcHJvZ3Jlc3M7XG4gICAgICAgICAgICBjaGF0SGlzdG9yeVtpbmRleF0uYWRkaXRpb25hbFByb3BlcnRpZXMuJGF0dGFjaG1lbnQgPSB0aGlzLl9hdHRhY2htZW50cztcbiAgICAgICAgICAgIGNoYXRIaXN0b3J5W2luZGV4XS5hZGRpdGlvbmFsUHJvcGVydGllcy4kZGVidWcgPSB0aGlzLl9kZWJ1Z01lc3NhZ2VzO1xuICAgICAgICAgICAgY29udGV4dC5zZXRDaGF0SGlzdG9yeShjaGF0SGlzdG9yeSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gU2F2ZS91cGRhdGUgdGhlIGNoYXQgaWYgc2F2ZWRDaGF0IGVuYWJsZWRcbiAgICAgICAgICBpZiAoYXNzaXN0YW50Q29uZmlnLnNhdmVkQ2hhdFNldHRpbmdzLmVuYWJsZWQgJiYgY29udGV4dC5nZXRDaGF0SGlzdG9yeSgpIS5zb21lKChtc2cpID0+IG1zZy5hZGRpdGlvbmFsUHJvcGVydGllcz8uaXNVc2VySW5wdXQgPT09IHRydWUpKSB7XG4gICAgICAgICAgICBjb250ZXh0LmlzRXhpc3RpbmdTYXZlZENoYXQoY29udGV4dC5nZXRDaGF0SWQoKSkucGlwZShcbiAgICAgICAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgICAgICAgc3dpdGNoTWFwKChleGlzdHMpID0+XG4gICAgICAgICAgICAgICAgZXhpc3RzXG4gICAgICAgICAgICAgICAgICA/IGNvbnRleHQudXBkYXRlU2F2ZWRDaGF0KGNvbnRleHQuZ2V0Q2hhdElkKCksIHVuZGVmaW5lZCwgY29udGV4dC5nZXRDaGF0SGlzdG9yeSgpISlcbiAgICAgICAgICAgICAgICAgIDogY29udGV4dC5hZGRTYXZlZENoYXQoY29udGV4dC5nZXRDaGF0SWQoKSwgY29udGV4dC5nZXRDaGF0SGlzdG9yeSgpISkucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICB0YXAoKCkgPT4gY29udGV4dC5saXN0U2F2ZWRDaGF0KCkpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgZmluYWxpemUoKCkgPT4gY29udGV4dC5zZXRTdHJlYW1pbmdTdGF0dXMoZmFsc2UpKVxuICAgICAgICAgICAgKS5zdWJzY3JpYmUoe1xuICAgICAgICAgICAgICBuZXh0OiAoKSA9PiB7fSxcbiAgICAgICAgICAgICAgZXJyb3I6IChlcnJvcikgPT4gb2JzZXJ2ZXIuZXJyb3IoZXJyb3IpLFxuICAgICAgICAgICAgICBjb21wbGV0ZTogKCkgPT4gb2JzZXJ2ZXIuY29tcGxldGUoKVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnRleHQuc2V0U3RyZWFtaW5nU3RhdHVzKGZhbHNlKTtcbiAgICAgICAgICAgIG9ic2VydmVyLmNvbXBsZXRlKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goZXJyb3IgPT4ge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGludm9raW5nIENoYXQ6JywgZXJyb3IpO1xuICAgICAgICAgIGNvbnRleHQuc2V0U3RyZWFtaW5nU3RhdHVzKGZhbHNlKTtcbiAgICAgICAgICAvLyBFbWl0IHRoZSBlcnJvciB0byB0aGUgbmV3bHkgY3JlYXRlZCBvYnNlcnZhYmxlXG4gICAgICAgICAgb2JzZXJ2ZXIuZXJyb3IoZXJyb3IpO1xuICAgICAgICAgIC8vIFJldHVybiBhIHJlc29sdmVkIHByb21pc2UgdG8gaGFuZGxlIHRoZSBlcnJvciBhbmQgcHJldmVudCB1bmhhbmRsZWQgcHJvbWlzZSByZWplY3Rpb25cbiAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgICAgIH0pXG4gICAgICAgIC5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgICAvLyBUaGlzIGJsb2NrIGNvbmNlcm5zIE9OTFkgdGhlIGNvbXBsZXRpb24gb2YgdGhlIFwiQ2hhdFwiIG1ldGhvZCBpbnZvY2F0aW9uLlxuICAgICAgICAgIC8vIFRoaXMgbWVhbnMgdGhlIGNvbXBsZXRpb24gb2YgdGhlIGNvbWJpbmVkJCBzdHJlYW0uXG4gICAgICAgICAgLy8gSXQgZG9lcyBub3QgdGFrZSBpbnRvIGFjY291bnQgdGhlIGNvbXBsZXRpb24gb2YgdGhlIGVudGlyZSBmZXRjaCBtZXRob2QgKHRoZSBvYnNlcnZhYmxlIHJldHVybmVkIGJ5IGZldGNoKSBhbmQgd2hpY2ggZGVwZW5kcyBvbiB0aGUgY29tcGxldGlvbiBvZiB0aGUgc2F2ZSBjaGF0IGFjdGlvbiBpZiBlbmFibGVkXG4gICAgICAgICAgdGhpcy5fcmVzcG9uc2UgPSBbXTsgLy8gQ2xlYXIgdGhlIF9yZXNwb25zZVxuICAgICAgICAgIHRoaXMuX2FjdGlvbk1hcC5jbGVhcigpOyAvLyBDbGVhciB0aGUgX2FjdGlvbk1hcFxuICAgICAgICAgIHRoaXMuX3Byb2dyZXNzID0gdW5kZWZpbmVkOyAvLyBDbGVhciB0aGUgX3Byb2dyZXNzXG4gICAgICAgICAgdGhpcy5fYXR0YWNobWVudHMgPSBbXTsgLy8gQ2xlYXIgdGhlIF9hdHRhY2htZW50c1xuICAgICAgICAgIHRoaXMuX2RlYnVnTWVzc2FnZXMgPSBbXTsgLy8gQ2xlYXIgdGhlIF9kZWJ1Z01lc3NhZ2VzXG4gICAgICAgICAgdGhpcy5fZXhlY3V0aW9uVGltZSA9IFwiXCI7IC8vIENsZWFyIHRoZSBfZXhlY3V0aW9uVGltZVxuICAgICAgICAgIHRoaXMuX2V4ZWN1dGlvblRpbWVNaWxsaXNlY29uZHMgPSB1bmRlZmluZWQ7IC8vIENsZWFyIHRoZSBfZXhlY3V0aW9uVGltZU1pbGxpc2Vjb25kc1xuICAgICAgICAgIGNvbXBsZXRpb24kLm5leHQoKTsgLy8gRW1pdCBhIHNpZ25hbCB0byBjb21wbGV0ZSB0aGUgb2JzZXJ2YWJsZXNcbiAgICAgICAgICBjb21wbGV0aW9uJC5jb21wbGV0ZSgpOyAvLyBDb21wbGV0ZSB0aGUgc3ViamVjdFxuICAgICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBpbml0TWVzc2FnZUhhbmRsZXJzKCk6IHZvaWQge1xuICAgIHRoaXMuZW5zdXJlSW5pdGlhbGl6ZWQoKTtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5jb250ZXh0ITtcblxuICAgIHRoaXMuYWRkTWVzc2FnZUhhbmRsZXIoXCJFcnJvclwiLCB7XG4gICAgICAgIGhhbmRsZXI6IChlcnJvcjogRXJyb3JFdmVudCkgPT4ge1xuICAgICAgICAgIGlmIChlcnJvci5pbmRleE9mKCdTYXZlZENoYXRMaXN0JykgIT09IC0xKSB7XG4gICAgICAgICAgICBjb250ZXh0LnNldFNhdmVkQ2hhdHNFcnJvclN0YXR1cyh0cnVlKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25zU2VydmljZS5lcnJvcihlcnJvcik7XG4gICAgICAgIH0sXG4gICAgICAgIGlzR2xvYmFsSGFuZGxlcjogdHJ1ZVxuICAgICAgfVxuICAgICk7XG4gICAgdGhpcy5hZGRNZXNzYWdlSGFuZGxlcihcIlF1b3RhXCIsIHtcbiAgICAgICAgaGFuZGxlcjogKG1lc3NhZ2U6IFF1b3RhRXZlbnQpID0+IHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29udGV4dC51cGRhdGVRdW90YShtZXNzYWdlLnF1b3RhKTtcbiAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBpc0dsb2JhbEhhbmRsZXI6IHRydWVcbiAgICAgIH1cbiAgICApO1xuICAgIHRoaXMuYWRkTWVzc2FnZUhhbmRsZXIoXCJEZWJ1Z1wiLCB7IGhhbmRsZXI6ICgpID0+IHt9LCBpc0dsb2JhbEhhbmRsZXI6IHRydWUgfSk7XG4gICAgdGhpcy5hZGRNZXNzYWdlSGFuZGxlcihcIkFjdGlvblN0YXJ0XCIsIHtcbiAgICAgIGhhbmRsZXI6IChhY3Rpb246IEFjdGlvblN0YXJ0RXZlbnQpID0+IHRoaXMuX2FjdGlvbk1hcC5zZXQoYWN0aW9uLmd1aWQsIGFjdGlvbiksXG4gICAgICBpc0dsb2JhbEhhbmRsZXI6IGZhbHNlXG4gICAgfSk7XG4gICAgdGhpcy5hZGRNZXNzYWdlSGFuZGxlcihcIkFjdGlvblJlc3VsdFwiLCB7XG4gICAgICBoYW5kbGVyOiAoYWN0aW9uOiBBY3Rpb25SZXN1bHRFdmVudCkgPT4gdGhpcy5fYWN0aW9uTWFwLnNldChhY3Rpb24uZ3VpZCwgeyAuLi50aGlzLl9hY3Rpb25NYXAuZ2V0KGFjdGlvbi5ndWlkKSwgLi4uYWN0aW9uIH0pLFxuICAgICAgaXNHbG9iYWxIYW5kbGVyOiBmYWxzZVxuICAgIH0pO1xuICAgIHRoaXMuYWRkTWVzc2FnZUhhbmRsZXIoXCJBY3Rpb25TdG9wXCIsIHtcbiAgICAgIGhhbmRsZXI6IChhY3Rpb246IEFjdGlvblN0b3BFdmVudCkgPT4gdGhpcy5fYWN0aW9uTWFwLnNldChhY3Rpb24uZ3VpZCwgeyAuLi50aGlzLl9hY3Rpb25NYXAuZ2V0KGFjdGlvbi5ndWlkKSwgLi4uYWN0aW9uIH0pLFxuICAgICAgaXNHbG9iYWxIYW5kbGVyOiBmYWxzZVxuICAgIH0pO1xuICAgIHRoaXMuYWRkTWVzc2FnZUhhbmRsZXIoXCJDb250ZXh0TWVzc2FnZVwiLCB7XG4gICAgICBoYW5kbGVyOiAobWVzc2FnZTogQ29udGV4dE1lc3NhZ2VFdmVudCkgPT4geyB0aGlzLl9hdHRhY2htZW50cy5wdXNoKG1lc3NhZ2UuYWRkaXRpb25hbFByb3BlcnRpZXMpOyB9LFxuICAgICAgaXNHbG9iYWxIYW5kbGVyOiBmYWxzZVxuICAgIH0pO1xuICAgIHRoaXMuYWRkTWVzc2FnZUhhbmRsZXIoXCJNZXNzYWdlXCIsIHtcbiAgICAgIGhhbmRsZXI6IChtZXNzYWdlOiBNZXNzYWdlRXZlbnQpID0+IHtcbiAgICAgICAgdGhpcy5fcmVzcG9uc2UuYXQoLTEpIS5jb250ZW50ICs9IG1lc3NhZ2UuZGVsdGEgPz8gXCJcIjtcbiAgICAgICAgdGhpcy5fcmVzcG9uc2UuYXQoLTEpIS5hZGRpdGlvbmFsUHJvcGVydGllcy5tZXNzYWdlSWQgPSBtZXNzYWdlLm1lc3NhZ2VJZDtcbiAgICAgIH0sXG4gICAgICBpc0dsb2JhbEhhbmRsZXI6IGZhbHNlXG4gICAgfSk7XG4gICAgdGhpcy5hZGRNZXNzYWdlSGFuZGxlcihcIkhpc3RvcnlcIiwge1xuICAgICAgICBoYW5kbGVyOiAoaGlzdG9yeTogSGlzdG9yeUV2ZW50KSA9PiB7XG4gICAgICAgICAgLy8gVGhlIENoYXRIaXN0b3J5IGlzIHVwZGF0ZWQ6IGl0IGlzIHRoZSBjdXJyZW50IGNvcHkgY29uY2F0ZW5hdGVkIHdpdGggdGhlIG5ldyBpdGVtcyBPTkxZIChpdCBjYW4gaGF2ZSBtdWx0aXBsZSBtZXNzYWdlczogdGhlIGNvbnRleHQgbWVzc2FnZXMgKyB0aGUgcmVzcG9uc2UgbWVzc2FnZSlcbiAgICAgICAgICAvLyBUaGlzIGlzIG1hbmRhdG9yeSB0byBub3QgbG9zZSB0aGUgcHJldmlvdXMgdXBkYXRlcyBvZiB0aGUgY2hhdEhpc3Rvcnkgd2hlbiB0aGUgYXNzaXN0YW50IGlzIHN0cmVhbWluZyBtdWx0aXBsZSBtZXNzYWdlIHN0ZXBzXG4gICAgICAgICAgY29uc3QgY3VycmVudENoYXRIaXN0b3J5ID0gKGNvbnRleHQuZ2V0Q2hhdEhpc3RvcnkoKSB8fCBbXSkgYXMgQ2hhdE1lc3NhZ2VbXTtcbiAgICAgICAgICBjb25zdCBuZXdIaXN0b3J5ID0gWy4uLmN1cnJlbnRDaGF0SGlzdG9yeSwgLi4uKGhpc3RvcnkuaGlzdG9yeS5zbGljZShjdXJyZW50Q2hhdEhpc3RvcnkubGVuZ3RoKSldIGFzIENoYXRNZXNzYWdlW107XG4gICAgICAgICAgY29udGV4dC5zZXRDaGF0SGlzdG9yeShuZXdIaXN0b3J5KTtcblxuICAgICAgICAgIC8vIEVtaXQgdGhlIHVwZGF0ZWQgY2hhdCB1c2FnZSBtZXRyaWNzXG4gICAgICAgICAgY29uc3QgbGFzdE1lc3NhZ2UgPSBuZXdIaXN0b3J5LmF0KC0xKTtcbiAgICAgICAgICBpZiAobGFzdE1lc3NhZ2U/LmFkZGl0aW9uYWxQcm9wZXJ0aWVzLnVzYWdlTWV0cmljcykge1xuICAgICAgICAgICAgY29udGV4dC51cGRhdGVDaGF0VXNhZ2VNZXRyaWNzKGxhc3RNZXNzYWdlLmFkZGl0aW9uYWxQcm9wZXJ0aWVzLnVzYWdlTWV0cmljcyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuX2V4ZWN1dGlvblRpbWUgPSBoaXN0b3J5LmV4ZWN1dGlvblRpbWU7XG4gICAgICAgICAgdGhpcy5fZXhlY3V0aW9uVGltZU1pbGxpc2Vjb25kcyA9IGhpc3RvcnkuZXhlY3V0aW9uVGltZU1pbGxpc2Vjb25kcztcbiAgICAgICAgfSxcbiAgICAgICAgaXNHbG9iYWxIYW5kbGVyOiBmYWxzZVxuICAgICAgfVxuICAgICk7XG4gICAgdGhpcy5hZGRNZXNzYWdlSGFuZGxlcihcIlN1Z2dlc3RlZEFjdGlvbnNcIiwge1xuICAgICAgICBoYW5kbGVyOiAobWVzc2FnZTogU3VnZ2VzdGVkQWN0aW9uc0V2ZW50KSA9PiB7XG4gICAgICAgICAgLy8gU2luY2UgYWZ0ZXIgdGhlIFwiSGlzdG9yeVwiIGFuZCBcIk1lc3NhZ2VCcmVha1wiIHRoYXQgdGhpcyBldmVudCBpcyBjYXVnaHQsXG4gICAgICAgICAgLy8gJHN1Z2dlc3RlZEFjdGlvbiBuZWVkcyB0byBiZSB1cGRhdGVkIGRpcmVjdGx5IHRvIHRoZSBsYXN0IHZpc2libGUgXCJhc3Npc3RhbnRcIiBtZXNzYWdlIGluIHRoZSBfcmVzcG9uc2UgYW5kIHRoZSBjaGF0SGlzdG9yeVxuICAgICAgICAgIHRoaXMuX3Jlc3BvbnNlLmF0KC0xKSEuYWRkaXRpb25hbFByb3BlcnRpZXMuJHN1Z2dlc3RlZEFjdGlvbiA9ICh0aGlzLl9yZXNwb25zZS5hdCgtMSkhLmFkZGl0aW9uYWxQcm9wZXJ0aWVzLiRzdWdnZXN0ZWRBY3Rpb24gfHwgW10pLmNvbmNhdChtZXNzYWdlLnN1Z2dlc3RlZEFjdGlvbnMpO1xuICAgICAgICAgIGNvbnN0IGNoYXRIaXN0b3J5ID0gY29udGV4dC5nZXRDaGF0SGlzdG9yeSgpITtcbiAgICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuYXNzaXN0YW50VXRpbHMubGFzdFZpc2libGVBc3Npc3RhbnRNZXNzYWdlSW5kZXgoY2hhdEhpc3RvcnkpO1xuICAgICAgICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICAgIGNoYXRIaXN0b3J5W2luZGV4XS5hZGRpdGlvbmFsUHJvcGVydGllcy4kc3VnZ2VzdGVkQWN0aW9uID0gKGNoYXRIaXN0b3J5W2luZGV4XS5hZGRpdGlvbmFsUHJvcGVydGllcy4kc3VnZ2VzdGVkQWN0aW9uIHx8IFtdKS5jb25jYXQobWVzc2FnZS5zdWdnZXN0ZWRBY3Rpb25zKTtcbiAgICAgICAgICAgIGNvbnRleHQuc2V0Q2hhdEhpc3RvcnkoY2hhdEhpc3RvcnkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgaXNHbG9iYWxIYW5kbGVyOiBmYWxzZVxuICAgICAgfVxuICAgICk7XG4gICAgdGhpcy5hZGRNZXNzYWdlSGFuZGxlcihcIkRlYnVnRGlzcGxheVwiLCB7XG4gICAgICBoYW5kbGVyOiAobWVzc2FnZTogRGVidWdNZXNzYWdlRXZlbnQpID0+IHRoaXMuX2RlYnVnTWVzc2FnZXMgPSB0aGlzLl9kZWJ1Z01lc3NhZ2VzLmNvbmNhdChtZXNzYWdlKSxcbiAgICAgIGlzR2xvYmFsSGFuZGxlcjogZmFsc2VcbiAgICB9KTtcbiAgICB0aGlzLmFkZE1lc3NhZ2VIYW5kbGVyKFwiTWVzc2FnZUJyZWFrXCIsIHtcbiAgICAgICAgaGFuZGxlcjogKCkgPT4ge1xuICAgICAgICAgIC8vIFN5c3RlbWF0aWNhbGx5IGhhcHBlbnMgcmlnaHQgYWZ0ZXIgdGhlIFwiSGlzdG9yeVwiIGV2ZW50XG4gICAgICAgICAgLy8gVGhpcyBpcyB0aGUgbW9tZW50IHdoZW4gdGhlIGFzc2lzdGFudCBtZXNzYWdlIGlzIGZ1bGx5IHN0cmVhbWVkXG4gICAgICAgICAgY29uc3QgYXNzaXN0YW50Q29uZmlnID0gY29udGV4dC5nZXRBc3Npc3RhbnRDb25maWcoKTtcbiAgICAgICAgICBjb25zdCBjaGF0SGlzdG9yeSA9IGNvbnRleHQuZ2V0Q2hhdEhpc3RvcnkoKTtcbiAgICAgICAgICBpZiAoIWFzc2lzdGFudENvbmZpZyB8fCAhY2hhdEhpc3RvcnkgfHwgIWNoYXRIaXN0b3J5Lmxlbmd0aCkgcmV0dXJuO1xuXG4gICAgICAgICAgY29uc3QgbGFzdENoYXRNZXNzYWdlID0gY2hhdEhpc3RvcnkuYXQoLTEpITtcblxuICAgICAgICAgIGNvbnN0IGRldGFpbHMgPSB7XG4gICAgICAgICAgICAnZHVyYXRpb24nOiB0aGlzLl9leGVjdXRpb25UaW1lTWlsbGlzZWNvbmRzICE9PSB1bmRlZmluZWQgPyB0aGlzLl9leGVjdXRpb25UaW1lTWlsbGlzZWNvbmRzIDogdGhpcy5fZXhlY3V0aW9uVGltZSxcbiAgICAgICAgICAgICdyb2xlJzogbGFzdENoYXRNZXNzYWdlLnJvbGUsXG4gICAgICAgICAgICAncmFuayc6IGNoYXRIaXN0b3J5Lmxlbmd0aCxcbiAgICAgICAgICAgICdtZXNzYWdlLWlkJzogbGFzdENoYXRNZXNzYWdlLmFkZGl0aW9uYWxQcm9wZXJ0aWVzLm1lc3NhZ2VJZCxcbiAgICAgICAgICAgICdnZW5lcmF0aW9uLXRva2VuY291bnQnOiBsYXN0Q2hhdE1lc3NhZ2UuYWRkaXRpb25hbFByb3BlcnRpZXMudXNhZ2VNZXRyaWNzPy5jb21wbGV0aW9uVG9rZW5Db3VudCxcbiAgICAgICAgICAgICdwcm9tcHQtdG9rZW5jb3VudCc6IGxhc3RDaGF0TWVzc2FnZS5hZGRpdGlvbmFsUHJvcGVydGllcy51c2FnZU1ldHJpY3M/LnByb21wdFRva2VuQ291bnQsXG4gICAgICAgICAgICAnYXR0YWNobWVudHMnOiBKU09OLnN0cmluZ2lmeSh0aGlzLl9hdHRhY2htZW50cy5tYXAoKHsgcmVjb3JkSWQsIGNvbnRleHRJZCwgcGFydHMsIHR5cGUgfSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNvcmRJZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0SWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFydHM6IHBhcnRzLm1hcCgoeyBwYXJ0SWQsIHRleHQgfSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEhYXNzaXN0YW50Q29uZmlnLmF1ZGl0U2V0dGluZ3M/LmxvZ0NvbnRlbnQpIHJldHVybiB7IHBhcnRJZCwgdGV4dCB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgcGFydElkIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkpXG4gICAgICAgICAgfTtcbiAgICAgICAgICBpZiAoISFhc3Npc3RhbnRDb25maWcuYXVkaXRTZXR0aW5ncz8ubG9nQ29udGVudCkge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBsYXN0Q2hhdE1lc3NhZ2UuY29udGVudCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgKGRldGFpbHMgYXMgYW55KVsndGV4dCddID0gbGFzdENoYXRNZXNzYWdlLmNvbnRlbnQ7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkobGFzdENoYXRNZXNzYWdlLmNvbnRlbnQpKSB7XG4gICAgICAgICAgICAgIChkZXRhaWxzIGFzIGFueSlbJ3RleHQnXSA9IChsYXN0Q2hhdE1lc3NhZ2UuY29udGVudC5maW5kKChtc2cpID0+IG1zZy50eXBlID09PSBcInRleHRcIikgYXMgVGV4dE1lc3NhZ2VDb250ZW50KS50ZXh0XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnRleHQuZ2VuZXJhdGVBdWRpdEV2ZW50KCdhc3QtbWVzc2FnZS5tZXNzYWdlJywgZGV0YWlscyk7XG4gICAgICAgICAgLy8gUHVzaCBhIG5ldyBhc3Npc3RhbnQgbWVzc2FnZSB0byB0aGUgX3Jlc3BvbnNlIGFycmF5IE9OTFkgaWYgdGhlIGNvbnRlbnQgb2YgdGhlIGxhc3QgbWVzc2FnZSBpcyBub3QgZW1wdHlcbiAgICAgICAgICBpZiAodGhpcy5fcmVzcG9uc2UuYXQoLTEpIS5jb250ZW50ICE9PSBcIlwiKSB7XG4gICAgICAgICAgICB0aGlzLl9yZXNwb25zZS5wdXNoKHtyb2xlOiBcImFzc2lzdGFudFwiLCBjb250ZW50OiBcIlwiLCBhZGRpdGlvbmFsUHJvcGVydGllczoge2Rpc3BsYXk6IHRydWUsIG1lc3NhZ2VJZDogZ3VpZCgpfX0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgaXNHbG9iYWxIYW5kbGVyOiBmYWxzZVxuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGVNZXNzYWdlSGFuZGxlcnM8VD4oX21lc3NhZ2VIYW5kbGVyczogTWFwPHN0cmluZywgTWVzc2FnZUhhbmRsZXI8VD4+KTogdm9pZCB7XG4gICAgdGhpcy5lbnN1cmVJbml0aWFsaXplZCgpO1xuICAgIC8vIENsZWFyIHRoZSBhbHJlYWR5IHJlZ2lzdGVyZWQgZ2xvYmFsIGNoYXQgaGFuZGxlcnMgYmVmb3JlIG1lcmdpbmcgdGhlIG5ldyBvbmVzXG4gICAgdGhpcy5fbWVzc2FnZUhhbmRsZXJzLmZvckVhY2goKGV2ZW50SGFuZGxlciwgZXZlbnROYW1lKSA9PiB7XG4gICAgICBpZihldmVudEhhbmRsZXIuaXNHbG9iYWxIYW5kbGVyKSB7XG4gICAgICAgIHRoaXMudW5zdWJzY3JpYmVNZXNzYWdlSGFuZGxlcihldmVudE5hbWUpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIC8vIE1lcmdlIHRoZSBuZXcgZXZlbnQgaGFuZGxlcnMgd2l0aCB0aGUgZXhpc3Rpbmcgb25lc1xuICAgIHRoaXMuX21lc3NhZ2VIYW5kbGVycyA9IG5ldyBNYXAoWy4uLnRoaXMuX21lc3NhZ2VIYW5kbGVycywgLi4uX21lc3NhZ2VIYW5kbGVyc10pO1xuICAgIC8vIFJlZ2lzdGVyIHRoZSBnbG9iYWwgaGFuZGxlcnMgYW1vbmcgdGhlIG1lcmdlZCBtYXBcbiAgICB0aGlzLl9tZXNzYWdlSGFuZGxlcnMuZm9yRWFjaCgoZXZlbnRIYW5kbGVyLCBldmVudE5hbWUpID0+IHtcbiAgICAgIGlmKGV2ZW50SGFuZGxlci5pc0dsb2JhbEhhbmRsZXIpIHtcbiAgICAgICAgdGhpcy5yZWdpc3Rlck1lc3NhZ2VIYW5kbGVyKGV2ZW50TmFtZSwgZXZlbnRIYW5kbGVyKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBhZGRNZXNzYWdlSGFuZGxlcjxUPihldmVudE5hbWU6IHN0cmluZywgZXZlbnRIYW5kbGVyOiBNZXNzYWdlSGFuZGxlcjxUPik6IHZvaWQge1xuICAgIHRoaXMuZW5zdXJlSW5pdGlhbGl6ZWQoKTtcbiAgICB0aGlzLl9tZXNzYWdlSGFuZGxlcnMuc2V0KGV2ZW50TmFtZSwgZXZlbnRIYW5kbGVyKTtcbiAgICBpZihldmVudEhhbmRsZXIuaXNHbG9iYWxIYW5kbGVyKSB7XG4gICAgICB0aGlzLnJlZ2lzdGVyTWVzc2FnZUhhbmRsZXIoZXZlbnROYW1lLCBldmVudEhhbmRsZXIpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyByZWdpc3Rlck1lc3NhZ2VIYW5kbGVyPFQ+KGV2ZW50TmFtZTogc3RyaW5nLCBldmVudEhhbmRsZXI6IE1lc3NhZ2VIYW5kbGVyPFQ+KTogdm9pZCB7XG4gICAgdGhpcy5lbnN1cmVJbml0aWFsaXplZCgpO1xuICAgIGNvbnN0IGNvbm5lY3Rpb24gPSB0aGlzLmNvbnRleHQhLmdldEh1YkNvbm5lY3Rpb24oKTtcbiAgICBpZiAoIWNvbm5lY3Rpb24pIHtcbiAgICAgIGNvbnNvbGUubG9nKFwiTm8gY29ubmVjdGlvbiBmb3VuZCB0byByZWdpc3RlciB0aGUgbGlzdGVuZXJcIiArIGV2ZW50TmFtZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbm5lY3Rpb24ub24oZXZlbnROYW1lLCAoZGF0YTogVCkgPT4ge1xuICAgICAgZXZlbnRIYW5kbGVyLmhhbmRsZXIoZGF0YSk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgcmVtb3ZlTWVzc2FnZUhhbmRsZXIoZXZlbnROYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmVuc3VyZUluaXRpYWxpemVkKCk7XG4gICAgdGhpcy5fbWVzc2FnZUhhbmRsZXJzLmRlbGV0ZShldmVudE5hbWUpO1xuICAgIHRoaXMudW5zdWJzY3JpYmVNZXNzYWdlSGFuZGxlcihldmVudE5hbWUpO1xuICB9XG5cbiAgcHVibGljIHVuc3Vic2NyaWJlTWVzc2FnZUhhbmRsZXIoZXZlbnROYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmVuc3VyZUluaXRpYWxpemVkKCk7XG4gICAgY29uc3QgY29ubmVjdGlvbiA9IHRoaXMuY29udGV4dCEuZ2V0SHViQ29ubmVjdGlvbigpO1xuICAgIGNvbm5lY3Rpb24/Lm9mZihldmVudE5hbWUpO1xuICB9XG5cbiAgcHVibGljIHN0b3BHZW5lcmF0aW9uKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHRoaXMuZW5zdXJlSW5pdGlhbGl6ZWQoKTtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5jb250ZXh0ITtcbiAgICBjb25zdCBjb25uZWN0aW9uID0gY29udGV4dC5nZXRIdWJDb25uZWN0aW9uKCkhO1xuXG4gICAgIC8vIFN0YXJ0IHN0b3BwaW5nIGdlbmVyYXRpb24gYnkgaW52b2tpbmcgdGhlIENhbmNlbFRhc2tzIG1ldGhvZFxuICAgIGNvbnRleHQuc2V0U3RvcHBpbmdHZW5lcmF0aW9uU3RhdHVzKHRydWUpO1xuICAgIC8vIENyZWF0ZSBhIFN1YmplY3QgdG8gaG9sZCB0aGUgcmVzdWx0IG9mIHRoZSBDYW5jZWxUYXNrcyBtZXRob2RcbiAgICBjb25zdCBzdG9wR2VuZXJhdGlvblN1YmplY3QkID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcblxuICAgIGNvbm5lY3Rpb24ub24oJ0NhbmNlbFRhc2tzJywgKHJlcykgPT4ge1xuICAgICAgLy8gV2hlbiB0aGUgZ2VuZXJhdGlvbiBpcyBzdG9wcGVkIGJlZm9yZSBzdHJlYW1pbmcgYW55IFZJU0lCTEUgYXNzaXN0YW50IG1lc3NhZ2UsIHRoaXMgbWVhbnMgdGhhdCAkcHJvZ3Jlc3MsICRhdHRhY2htZW50IGFuZCAkZGVidWcgcHJvcGVydGllcyB3aWxsIGJlIGxvc3QuXG4gICAgICAvLyBIb3dldmVyLCB0aGUgXCJDb250ZXh0TWVzc2FnZVwiIGZyYW1lcyB3aWxsIGJlIHBlcnNpc3RlZCBpbiB0aGUgY2hhdEhpc3RvcnkgYW5kIHRoZSBhc3Npc3RhbnQgbWF5IHJlZmVyZW5jZSB0aGVtIGluIHRoZSBuZXh0IGdlbmVyYXRpb24uXG4gICAgICAvLyBUaGlzIGxlYWRzIHRvIHRoZSBwcm9ibGVtIG9mIHJlZmVyZW5jaW5nIHVuZGlzcGxheWVkIGF0dGFjaG1lbnRzIGluIHRoZSBuZXh0IGdlbmVyYXRpb24uXG4gICAgICAvLyBUbyBzb2x2ZSB0aGlzIHByb2JsZW0sIHdlIG5lZWQgdG8gcGVyc2lzdCAkcHJvZ3Jlc3MsICRhdHRhY2htZW50IGFuZCAkZGVidWcgcHJvcGVydGllcyBieSBhZGRpbmcgYSBuZXcgYXNzaXN0YW50IG1lc3NhZ2Ugd2l0aCBlbXB0eSBjb250ZW50IGFuZCB0aGVzZSBwcm9wZXJ0aWVzLlxuICAgICAgLy8gSW4gdGhlIG90aGVyIGhhbmQsIHRoaXMgbGVhZHMgdG8gdGhlIHByb2JsZW0gb2YgaGF2aW5nIG1hbnkgZW1wdHkgYXNzaXN0YW50IG1lc3NhZ2VzIGluIHRoZSBjaGF0IGhpc3RvcnksIGlmIGEgc3RvcCBnZW5lcmF0aW9uIGhhcHBlbnMgbXVsdGlwbGUgdGltZXMgaW4gYSByb3cgd2l0aCBubyBjb250ZW50IGdlbmVyYXRlZCB5ZXQuXG4gICAgICAvLyBUbyBzb2x2ZSB0aGlzIHByb2JsZW0gbWVudGlvbmVkIGluIHRoZSB0aWNrZXQgRVMtMjcwMjQsIHdlIG5lZWQgdG8gYWxsb3cgc3VjaCBvcGVyYXRpb24gT05MWSBpZiB0aGUgbGFzdCBhc3Npc3RhbnQgbWVzc2FnZSdzIGNvbnRlbnQgaW4gdGhlIGNoYXQgaGlzdG9yeSBpcyBub3QgZW1wdHkuXG4gICAgICBjb25zdCBjaGF0SGlzdG9yeSA9IGNvbnRleHQuZ2V0Q2hhdEhpc3RvcnkoKTtcbiAgICAgIGNvbnN0IGlzTGFzdENoYXRIaXN0b3J5TWVzc2FnZUFzc2lzdGFudENvbnRlbnRFbXB0eSA9IGNoYXRIaXN0b3J5Py5sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAgY2hhdEhpc3RvcnkuYXQoLTEpPy5yb2xlID09PSBcImFzc2lzdGFudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgKGNoYXRIaXN0b3J5LmF0KC0xKT8uY29udGVudCA9PT0gXCJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGNoYXRIaXN0b3J5LmF0KC0xKT8uY29udGVudCBhcyBNZXNzYWdlQ29udGVudFtdKT8uZmluZCgobXNnKSA9PiBtc2cudHlwZSA9PT0gXCJ0ZXh0XCIpIGFzIFRleHRNZXNzYWdlQ29udGVudCk/LnRleHQgPT09IFwiXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICBpZiAodGhpcy5fcmVzcG9uc2UgJiYgdGhpcy5fcmVzcG9uc2UubGVuZ3RoID09PSAxICYmIHRoaXMuX3Jlc3BvbnNlWzBdLmNvbnRlbnQgPT09IFwiXCIgJiYgIWlzTGFzdENoYXRIaXN0b3J5TWVzc2FnZUFzc2lzdGFudENvbnRlbnRFbXB0eSkge1xuICAgICAgICBjb25zdCBuZXdDaGF0SGlzdG9yeSA9IGNoYXRIaXN0b3J5ID8gWy4uLmNoYXRIaXN0b3J5XSA6IFtdO1xuICAgICAgICBuZXdDaGF0SGlzdG9yeS5wdXNoKHtyb2xlOiBcImFzc2lzdGFudFwiLCBjb250ZW50OiBcIlwiLCBhZGRpdGlvbmFsUHJvcGVydGllczoge2Rpc3BsYXk6IHRydWUsIG1lc3NhZ2VJZDogZ3VpZCgpLCAkcHJvZ3Jlc3M6IHRoaXMuX3Byb2dyZXNzLCAkYXR0YWNobWVudDogdGhpcy5fYXR0YWNobWVudHMsICRkZWJ1ZzogdGhpcy5fZGVidWdNZXNzYWdlc319KTtcbiAgICAgICAgY29udGV4dC5zZXRDaGF0SGlzdG9yeShuZXdDaGF0SGlzdG9yeSk7XG4gICAgICB9XG4gICAgICAvLyBFbWl0IHRoZSByZXN1bHQgb2YgdGhlIENhbmNlbFRhc2tzIG1ldGhvZFxuICAgICAgc3RvcEdlbmVyYXRpb25TdWJqZWN0JC5uZXh0KCEhcmVzKTtcbiAgICAgIC8vIENvbXBsZXRlIHRoZSBzdWJqZWN0XG4gICAgICBzdG9wR2VuZXJhdGlvblN1YmplY3QkLmNvbXBsZXRlKCk7XG4gICAgICAvLyBDb21wbGV0ZSBzdG9wcGluZyBnZW5lcmF0aW9uXG4gICAgICBjb250ZXh0LnNldFN0b3BwaW5nR2VuZXJhdGlvblN0YXR1cyhmYWxzZSk7XG4gICAgfSk7XG5cbiAgICAvLyBJbnZva2UgdGhlIENhbmNlbFRhc2tzIG1ldGhvZCBhbmQgaGFuZGxlIGVycm9yc1xuICAgIGNvbm5lY3Rpb24uaW52b2tlKCdDYW5jZWxUYXNrcycpXG4gICAgICAuY2F0Y2goZXJyb3IgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBpbnZva2luZyBDYW5jZWxUYXNrczonLCBlcnJvcik7XG4gICAgICAgIHN0b3BHZW5lcmF0aW9uU3ViamVjdCQuZXJyb3IobmV3IEVycm9yKGVycm9yIGFzIHN0cmluZykpO1xuICAgICAgICBjb250ZXh0LnNldFN0b3BwaW5nR2VuZXJhdGlvblN0YXR1cyhmYWxzZSk7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgIH0pO1xuXG4gICAgcmV0dXJuIHN0b3BHZW5lcmF0aW9uU3ViamVjdCQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import { createComponent, Injectable, } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
export class DialogService {
|
|
4
|
-
constructor(appRef) {
|
|
5
|
-
this.appRef = appRef;
|
|
6
|
-
}
|
|
7
|
-
open(componentType) {
|
|
8
|
-
this.removeDialog();
|
|
9
|
-
this.dialogRef = createComponent(componentType, {
|
|
10
|
-
environmentInjector: this.appRef.injector,
|
|
11
|
-
});
|
|
12
|
-
document.body.appendChild(this.dialogRef.location.nativeElement);
|
|
13
|
-
this.appRef.attachView(this.dialogRef.hostView);
|
|
14
|
-
this.dialogRef.instance.open();
|
|
15
|
-
return new Promise((resolve) => {
|
|
16
|
-
const subscription = this.dialogRef?.instance.closed.subscribe((e) => {
|
|
17
|
-
this.removeDialog();
|
|
18
|
-
resolve(e);
|
|
19
|
-
subscription.unsubscribe();
|
|
20
|
-
});
|
|
21
|
-
});
|
|
22
|
-
}
|
|
23
|
-
removeDialog() {
|
|
24
|
-
// remove previous dialog if exists
|
|
25
|
-
if (this.dialogRef) {
|
|
26
|
-
this.appRef.detachView(this.dialogRef.hostView);
|
|
27
|
-
this.dialogRef.destroy();
|
|
28
|
-
this.dialogRef.changeDetectorRef.detectChanges();
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DialogService, deps: [{ token: i0.ApplicationRef }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
32
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DialogService, providedIn: 'root' }); }
|
|
33
|
-
}
|
|
34
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DialogService, decorators: [{
|
|
35
|
-
type: Injectable,
|
|
36
|
-
args: [{
|
|
37
|
-
providedIn: 'root',
|
|
38
|
-
}]
|
|
39
|
-
}], ctorParameters: () => [{ type: i0.ApplicationRef }] });
|
|
40
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hc3Npc3RhbnQvY2hhdC9zZXJ2aWNlcy9kaWFsb2cuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0wsZUFBZSxFQUNmLFVBQVUsR0FFWCxNQUFNLGVBQWUsQ0FBQzs7QUFRdkIsTUFBTSxPQUFPLGFBQWE7SUFHeEIsWUFBb0IsTUFBc0I7UUFBdEIsV0FBTSxHQUFOLE1BQU0sQ0FBZ0I7SUFBRyxDQUFDO0lBRTlDLElBQUksQ0FBSSxhQUFzQjtRQUM1QixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFFcEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxlQUFlLENBQUMsYUFBYSxFQUFFO1lBQzlDLG1CQUFtQixFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUTtTQUMxQyxDQUFDLENBQUM7UUFFSCxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNqRSxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRWhELElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1FBRS9CLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUM3QixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBYyxFQUFFLEVBQUU7Z0JBQ2hGLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztnQkFDcEIsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNYLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUM3QixDQUFDLENBQUMsQ0FBQTtRQUNKLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVTLFlBQVk7UUFDcEIsbUNBQW1DO1FBQ25DLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ25CLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDaEQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUN6QixJQUFJLENBQUMsU0FBUyxDQUFDLGlCQUFpQixDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ25ELENBQUM7SUFDSCxDQUFDOytHQWpDVSxhQUFhO21IQUFiLGFBQWEsY0FGWixNQUFNOzs0RkFFUCxhQUFhO2tCQUh6QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQXBwbGljYXRpb25SZWYsXHJcbiAgQ29tcG9uZW50UmVmLFxyXG4gIGNyZWF0ZUNvbXBvbmVudCxcclxuICBJbmplY3RhYmxlLFxyXG4gIFR5cGUsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5cclxuZXhwb3J0IHR5cGUgRGlhbG9nRXZlbnQgPSAnZGlhbG9nLWNsb3NlJyB8ICdkaWFsb2ctY2FuY2VsJyB8ICdkaWFsb2ctY29uZmlybScgfCAnZGlhbG9nLW5vJyB8ICdkaWFsb2cteWVzJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEaWFsb2dTZXJ2aWNlIHtcclxuICBwcm90ZWN0ZWQgZGlhbG9nUmVmPzogQ29tcG9uZW50UmVmPGFueT47XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYXBwUmVmOiBBcHBsaWNhdGlvblJlZikge31cclxuXHJcbiAgb3BlbjxUPihjb21wb25lbnRUeXBlOiBUeXBlPFQ+KTogUHJvbWlzZTxEaWFsb2dFdmVudD4ge1xyXG4gICAgdGhpcy5yZW1vdmVEaWFsb2coKTtcclxuXHJcbiAgICB0aGlzLmRpYWxvZ1JlZiA9IGNyZWF0ZUNvbXBvbmVudChjb21wb25lbnRUeXBlLCB7XHJcbiAgICAgIGVudmlyb25tZW50SW5qZWN0b3I6IHRoaXMuYXBwUmVmLmluamVjdG9yLFxyXG4gICAgfSk7XHJcblxyXG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0aGlzLmRpYWxvZ1JlZi5sb2NhdGlvbi5uYXRpdmVFbGVtZW50KTtcclxuICAgIHRoaXMuYXBwUmVmLmF0dGFjaFZpZXcodGhpcy5kaWFsb2dSZWYuaG9zdFZpZXcpO1xyXG5cclxuICAgIHRoaXMuZGlhbG9nUmVmLmluc3RhbmNlLm9wZW4oKTtcclxuXHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcclxuICAgICAgY29uc3Qgc3Vic2NyaXB0aW9uID0gdGhpcy5kaWFsb2dSZWY/Lmluc3RhbmNlLmNsb3NlZC5zdWJzY3JpYmUoKGU6IERpYWxvZ0V2ZW50KSA9PiB7XHJcbiAgICAgICAgdGhpcy5yZW1vdmVEaWFsb2coKTtcclxuICAgICAgICByZXNvbHZlKGUpO1xyXG4gICAgICAgIHN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgICB9KVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgcmVtb3ZlRGlhbG9nKCkge1xyXG4gICAgLy8gcmVtb3ZlIHByZXZpb3VzIGRpYWxvZyBpZiBleGlzdHNcclxuICAgIGlmICh0aGlzLmRpYWxvZ1JlZikge1xyXG4gICAgICB0aGlzLmFwcFJlZi5kZXRhY2hWaWV3KHRoaXMuZGlhbG9nUmVmLmhvc3RWaWV3KTtcclxuICAgICAgdGhpcy5kaWFsb2dSZWYuZGVzdHJveSgpO1xyXG4gICAgICB0aGlzLmRpYWxvZ1JlZi5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG59Il19
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { Injectable } from "@angular/core";
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
export class NotificationsService {
|
|
4
|
-
success(message, title) {
|
|
5
|
-
this.dispatchEvent("success", message, title);
|
|
6
|
-
}
|
|
7
|
-
warning(message, title) {
|
|
8
|
-
this.dispatchEvent("warning", message, title);
|
|
9
|
-
}
|
|
10
|
-
error(message, title) {
|
|
11
|
-
this.dispatchEvent("error", message, title);
|
|
12
|
-
}
|
|
13
|
-
dispatchEvent(type, message, title) {
|
|
14
|
-
dispatchEvent(new CustomEvent("notification", { detail: { type, title, message } }));
|
|
15
|
-
}
|
|
16
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NotificationsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
17
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NotificationsService, providedIn: "root" }); }
|
|
18
|
-
}
|
|
19
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NotificationsService, decorators: [{
|
|
20
|
-
type: Injectable,
|
|
21
|
-
args: [{
|
|
22
|
-
providedIn: "root"
|
|
23
|
-
}]
|
|
24
|
-
}] });
|
|
25
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hc3Npc3RhbnQvY2hhdC9zZXJ2aWNlcy9ub3RpZmljYXRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQU8zQyxNQUFNLE9BQU8sb0JBQW9CO0lBQy9CLE9BQU8sQ0FBQyxPQUFlLEVBQUUsS0FBYztRQUNyQyxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVELE9BQU8sQ0FBQyxPQUFlLEVBQUUsS0FBYztRQUNyQyxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVELEtBQUssQ0FBQyxPQUFlLEVBQUUsS0FBYztRQUNuQyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVPLGFBQWEsQ0FBQyxJQUFzQixFQUFFLE9BQWUsRUFBRSxLQUFjO1FBQzNFLGFBQWEsQ0FBQyxJQUFJLFdBQVcsQ0FBQyxjQUFjLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3ZGLENBQUM7K0dBZlUsb0JBQW9CO21IQUFwQixvQkFBb0IsY0FGbkIsTUFBTTs7NEZBRVAsb0JBQW9CO2tCQUhoQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5cclxuZXhwb3J0IHR5cGUgTm90aWZpY2F0aW9uVHlwZSA9IFwic3VjY2Vzc1wiIHwgXCJ3YXJuaW5nXCIgfCBcImVycm9yXCI7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogXCJyb290XCJcclxufSlcclxuZXhwb3J0IGNsYXNzIE5vdGlmaWNhdGlvbnNTZXJ2aWNlIHtcclxuICBzdWNjZXNzKG1lc3NhZ2U6IHN0cmluZywgdGl0bGU/OiBzdHJpbmcpIHtcclxuICAgIHRoaXMuZGlzcGF0Y2hFdmVudChcInN1Y2Nlc3NcIiwgbWVzc2FnZSwgdGl0bGUpO1xyXG4gIH1cclxuXHJcbiAgd2FybmluZyhtZXNzYWdlOiBzdHJpbmcsIHRpdGxlPzogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmRpc3BhdGNoRXZlbnQoXCJ3YXJuaW5nXCIsIG1lc3NhZ2UsIHRpdGxlKTtcclxuICB9XHJcblxyXG4gIGVycm9yKG1lc3NhZ2U6IHN0cmluZywgdGl0bGU/OiBzdHJpbmcpIHtcclxuICAgIHRoaXMuZGlzcGF0Y2hFdmVudChcImVycm9yXCIsIG1lc3NhZ2UsIHRpdGxlKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZGlzcGF0Y2hFdmVudCh0eXBlOiBOb3RpZmljYXRpb25UeXBlLCBtZXNzYWdlOiBzdHJpbmcsIHRpdGxlPzogc3RyaW5nKSB7XHJcbiAgICBkaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudChcIm5vdGlmaWNhdGlvblwiLCB7IGRldGFpbDogeyB0eXBlLCB0aXRsZSwgbWVzc2FnZSB9IH0pKTtcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { Injectable } from "@angular/core";
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
export class PrincipalService {
|
|
4
|
-
constructor() {
|
|
5
|
-
this.principal = {};
|
|
6
|
-
}
|
|
7
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PrincipalService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
8
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PrincipalService, providedIn: "root" }); }
|
|
9
|
-
}
|
|
10
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PrincipalService, decorators: [{
|
|
11
|
-
type: Injectable,
|
|
12
|
-
args: [{
|
|
13
|
-
providedIn: "root"
|
|
14
|
-
}]
|
|
15
|
-
}] });
|
|
16
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbmNpcGFsLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hc3Npc3RhbnQvY2hhdC9zZXJ2aWNlcy9wcmluY2lwYWwuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQU0zQyxNQUFNLE9BQU8sZ0JBQWdCO0lBSDdCO1FBSUUsY0FBUyxHQUFjLEVBQWUsQ0FBQztLQUN4QzsrR0FGWSxnQkFBZ0I7bUhBQWhCLGdCQUFnQixjQUZmLE1BQU07OzRGQUVQLGdCQUFnQjtrQkFINUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgUHJpbmNpcGFsIH0gZnJvbSBcIkBzaW5lcXVhL2F0b21pY1wiO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46IFwicm9vdFwiXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQcmluY2lwYWxTZXJ2aWNlIHtcclxuICBwcmluY2lwYWw6IFByaW5jaXBhbCA9IHt9IGFzIFByaW5jaXBhbDtcclxufVxyXG4iXX0=
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { Injectable } from "@angular/core";
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
export class SearchService {
|
|
4
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SearchService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
5
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SearchService, providedIn: 'root' }); }
|
|
6
|
-
}
|
|
7
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SearchService, decorators: [{
|
|
8
|
-
type: Injectable,
|
|
9
|
-
args: [{
|
|
10
|
-
providedIn: 'root'
|
|
11
|
-
}]
|
|
12
|
-
}] });
|
|
13
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hc3Npc3RhbnQvY2hhdC9zZXJ2aWNlcy9zZWFyY2guc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQU0zQyxNQUFNLE9BQU8sYUFBYTsrR0FBYixhQUFhO21IQUFiLGFBQWEsY0FGWixNQUFNOzs0RkFFUCxhQUFhO2tCQUh6QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBRdWVyeSB9IGZyb20gXCJAc2luZXF1YS9hdG9taWNcIjtcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFNlYXJjaFNlcnZpY2Uge1xyXG4gIHF1ZXJ5OiBRdWVyeVxyXG59Il19
|