@snabcentr/client-core 2.64.2 → 2.64.3

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.
@@ -10,20 +10,6 @@ import { SC_COMPANY_INFO } from '../tokens/sc-company-info';
10
10
  import { SC_CATALOG_PAGE_META } from '../tokens/sc-default-page-meta';
11
11
  import { SC_ID_OR_SLUG_IN_ROUTE } from '../tokens/sc-id-or-slug-in-route';
12
12
  import { SC_URLS } from '../tokens/sc-urls';
13
- /**
14
- * Устанавливает SEO-теги для страниц каталога.
15
- *
16
- * @param seoService Сервис для работы с SEO.
17
- * @param name Название страницы.
18
- * @param seo SEO-теги.
19
- * @param image Ссылка на основное изображение.
20
- */
21
- const setSeoTags = (seoService, name, seo, image) => {
22
- const companyInfo = inject(SC_COMPANY_INFO);
23
- const catalogMeta = inject(SC_CATALOG_PAGE_META);
24
- const seoResource = seoService.getGenerateSeoResource(seo, `${name} - Купить в ${companyInfo.name}`, `${name} - Купить по выгодным ценам в ${companyInfo.name}`, `${name}, ${catalogMeta.keywords}`);
25
- seoService.setMetaTagsFromResource(seoResource, image);
26
- };
27
13
  /**
28
14
  * Создает SEO-guard для указанного сервиса и метода получения данных.
29
15
  *
@@ -34,23 +20,27 @@ const setSeoTags = (seoService, name, seo, image) => {
34
20
  const createSeoGuard = (getDataFunction, setCanonical = false) => {
35
21
  // eslint-disable-next-line sonarjs/function-return-type
36
22
  return ({ paramMap }, state) => {
37
- const seoService = inject(ScSeoService);
38
- const mediaImageTransformerPipe = inject(ScMediaImageTransformerPipe);
39
23
  const recId = paramMap.get('productIdOrSlug') ?? paramMap.get('categoryIdOrSlug') ?? paramMap.get('categorySlug');
40
24
  if (!recId) {
41
25
  return false;
42
26
  }
27
+ const seoService = inject(ScSeoService);
28
+ const companyInfo = inject(SC_COMPANY_INFO);
29
+ const catalogMeta = inject(SC_CATALOG_PAGE_META);
30
+ const mediaImageTransformerPipe = inject(ScMediaImageTransformerPipe);
31
+ const idOrSlugInRoute = inject(SC_ID_OR_SLUG_IN_ROUTE);
32
+ const { siteUrl } = inject(SC_URLS);
43
33
  return getDataFunction(recId).pipe(filter(tuiIsPresent), tap(({ id, name, seo, image, slug }) => {
44
- setSeoTags(seoService, name, seo, mediaImageTransformerPipe.transform(image, true));
45
- const idOrSlugInRoute = inject(SC_ID_OR_SLUG_IN_ROUTE);
46
- // В том случае, если используется slug для формирования ссылок, то необходимо сформировать кононическую ссылку
47
- // на страницу в которой используется slug не id).
34
+ // Формируем и устанавливаем метатеги страницы.
35
+ const seoResource = seoService.generateSeoResource(seo, `${name} - Купить в ${companyInfo.name}`, `${name} - Купить по выгодным ценам в ${companyInfo.name}`, `${name}, ${catalogMeta.keywords}`);
36
+ seoService.setMetaTagsFromResource(seoResource, mediaImageTransformerPipe.transform(image, true));
37
+ // В том случае, если используется slug для формирования ссылок, то необходимо сформировать кононическую
38
+ // ссылку на страницу в которой используется slug (а не id).
48
39
  if (setCanonical && idOrSlugInRoute === 'slug' && id && slug) {
49
40
  const canonicalPath = state.url
50
41
  .split('/')
51
42
  .map((segment) => (segment === id.toString() ? slug : segment))
52
43
  .join('/');
53
- const { siteUrl } = inject(SC_URLS);
54
44
  seoService.setCanonicalLink(`${siteUrl}${canonicalPath}`);
55
45
  }
56
46
  }), map(TUI_TRUE_HANDLER), catchError(() => of(true)), takeUntilDestroyed());
@@ -68,4 +58,4 @@ export const ScVirtualCategorySeoGuard = createSeoGuard((recId) => inject(ScCata
68
58
  * Устанавливает SEO-теги для страницы категории.
69
59
  */
70
60
  export const ScCategorySeoGuard = createSeoGuard((recId) => inject(ScCatalogService).getCategoryCached$(recId), true);
71
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F0YWxvZy1zZW8uZ3VhcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2d1YXJkcy9jYXRhbG9nLXNlby5ndWFyZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRWhFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0QsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFLOUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDMUUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDdkYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzFELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN0RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUMxRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFNUM7Ozs7Ozs7R0FPRztBQUNILE1BQU0sVUFBVSxHQUFHLENBQUMsVUFBd0IsRUFBRSxJQUFZLEVBQUUsR0FBWSxFQUFFLEtBQWMsRUFBUSxFQUFFO0lBQzlGLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUM1QyxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsb0JBQW9CLENBQUMsQ0FBQztJQUNqRCxN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LE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLHlCQUF5QixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFFako7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxjQUFjLENBQWEsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBSb3V0ZXJTdGF0ZVNuYXBzaG90IH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFRVSV9UUlVFX0hBTkRMRVIsIHR1aUlzUHJlc2VudCB9IGZyb20gJ0B0YWlnYS11aS9jZGsnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGZpbHRlciwgbWFwLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFNjQ2F0ZWdvcnkgfSBmcm9tICcuLi9jYXRhbG9nL2R0by9zYy1jYXRlZ29yeSc7XG5pbXBvcnQgeyBTY0lTZW8gfSBmcm9tICcuLi9jYXRhbG9nL2R0by9zYy1pLXNlbyc7XG5pbXBvcnQgeyBTY1ZpcnR1YWxDYXRlZ29yeSB9IGZyb20gJy4uL2NhdGFsb2cvZHRvL3NjLXZpcnR1YWwtY2F0ZWdvcnknO1xuaW1wb3J0IHsgU2NDYXRhbG9nU2VydmljZSB9IGZyb20gJy4uL2NhdGFsb2cvc2VydmljZXMvc2MtY2F0YWxvZy5zZXJ2aWNlJztcbmltcG9ydCB7IFNjTWVkaWFJbWFnZVRyYW5zZm9ybWVyUGlwZSB9IGZyb20gJy4uL3BpcGVzL3NjLW1lZGlhLWltYWdlLXRyYW5zZm9ybWVyLnBpcGUnO1xuaW1wb3J0IHsgU2NTZW9TZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvc2Mtc2VvLnNlcnZpY2UnO1xuaW1wb3J0IHsgU0NfQ09NUEFOWV9JTkZPIH0gZnJvbSAnLi4vdG9rZW5zL3NjLWNvbXBhbnktaW5mbyc7XG5pbXBvcnQgeyBTQ19DQVRBTE9HX1BBR0VfTUVUQSB9IGZyb20gJy4uL3Rva2Vucy9zYy1kZWZhdWx0LXBhZ2UtbWV0YSc7XG5pbXBvcnQgeyBTQ19JRF9PUl9TTFVHX0lOX1JPVVRFIH0gZnJvbSAnLi4vdG9rZW5zL3NjLWlkLW9yLXNsdWctaW4tcm91dGUnO1xuaW1wb3J0IHsgU0NfVVJMUyB9IGZyb20gJy4uL3Rva2Vucy9zYy11cmxzJztcblxuLyoqXG4gKiDQo9GB0YLQsNC90LDQstC70LjQstCw0LXRgiBTRU8t0YLQtdCz0Lgg0LTQu9GPINGB0YLRgNCw0L3QuNGGINC60LDRgtCw0LvQvtCz0LAuXG4gKlxuICogQHBhcmFtIHNlb1NlcnZpY2Ug0KHQtdGA0LLQuNGBINC00LvRjyDRgNCw0LHQvtGC0Ysg0YEgU0VPLlxuICogQHBhcmFtIG5hbWUg0J3QsNC30LLQsNC90LjQtSDRgdGC0YDQsNC90LjRhtGLLlxuICogQHBhcmFtIHNlbyBTRU8t0YLQtdCz0LguXG4gKiBAcGFyYW0gaW1hZ2Ug0KHRgdGL0LvQutCwINC90LAg0L7RgdC90L7QstC90L7QtSDQuNC30L7QsdGA0LDQttC10L3QuNC1LlxuICovXG5jb25zdCBzZXRTZW9UYWdzID0gKHNlb1NlcnZpY2U6IFNjU2VvU2VydmljZSwgbmFtZTogc3RyaW5nLCBzZW8/OiBTY0lTZW8sIGltYWdlPzogc3RyaW5nKTogdm9pZCA9PiB7XG4gICAgY29uc3QgY29tcGFueUluZm8gPSBpbmplY3QoU0NfQ09NUEFOWV9JTkZPKTtcbiAgICBjb25zdCBjYXRhbG9nTWV0YSA9IGluamVjdChTQ19DQVRBTE9HX1BBR0VfTUVUQSk7XG4gICAgY29uc3Qgc2VvUmVzb3VyY2UgPSBzZW9TZXJ2aWNlLmdldEdlbmVyYXRlU2VvUmVzb3VyY2UoXG4gICAgICAgIHNlbyxcbiAgICAgICAgYCR7bmFtZX0gLSDQmtGD0L/QuNGC0Ywg0LIgJHtjb21wYW55SW5mby5uYW1lfWAsXG4gICAgICAgIGAke25hbWV9IC0g0JrRg9C/0LjRgtGMINC/0L4g0LLRi9Cz0L7QtNC90YvQvCDRhtC10L3QsNC8INCyICR7Y29tcGFueUluZm8ubmFtZX1gLFxuICAgICAgICBgJHtuYW1lfSwgJHtjYXRhbG9nTWV0YS5rZXl3b3Jkc31gXG4gICAgKTtcblxuICAgIHNlb1NlcnZpY2Uuc2V0TWV0YVRhZ3NGcm9tUmVzb3VyY2Uoc2VvUmVzb3VyY2UsIGltYWdlKTtcbn07XG5cbi8qKlxuICog0KHQvtC30LTQsNC10YIgU0VPLWd1YXJkINC00LvRjyDRg9C60LDQt9Cw0L3QvdC+0LPQviDRgdC10YDQstC40YHQsCDQuCDQvNC10YLQvtC00LAg0L/QvtC70YPRh9C10L3QuNGPINC00LDQvdC90YvRhS5cbiAqXG4gKiBAcGFyYW0gZ2V0RGF0YUZ1bmN0aW9uINCk0YPQvdC60YbQuNGPINC00LvRjyDQv9C+0LvRg9GH0LXQvdC40Y8g0LTQsNC90L3Ri9GFINC40Lcg0YHQtdGA0LLQuNGB0LAuXG4gKiBAcGFyYW0gc2V0Q2Fub25pY2FsINCf0YDQuNC30L3QsNC6INC90LXQvtCx0YXQvtC00LjQvNC+0YHRgtC4INGD0YHRgtCw0L3QvtCy0LjRgtGMINC90LAg0YHRgtGA0LDQvdC40YbQtSDQutCw0L3QvtC90LjRh9C10YHQutGD0Y4g0YHRgdGL0LvQutGDLlxuICogQHJldHVybnMg0KTRg9C90LrRhtC40Y8tZ3VhcmQuXG4gKi9cbmNvbnN0IGNyZWF0ZVNlb0d1YXJkID0gPFQgZXh0ZW5kcyB7IGlkPzogbnVtYmVyOyBuYW1lOiBzdHJpbmc7IHNlbz86IFNjSVNlbzsgaW1hZ2U/OiBzdHJpbmc7IHNsdWc/OiBzdHJpbmcgfT4oXG4gICAgZ2V0RGF0YUZ1bmN0aW9uOiAocmVjSWQ6IHN0cmluZykgPT4gT2JzZXJ2YWJsZTxUIHwgbnVsbD4sXG4gICAgc2V0Q2Fub25pY2FsOiBib29sZWFuID0gZmFsc2VcbikgPT4ge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzb25hcmpzL2Z1bmN0aW9uLXJldHVybi10eXBlXG4gICAgcmV0dXJuICh7IHBhcmFtTWFwIH06IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIHN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90KSA9PiB7XG4gICAgICAgIGNvbnN0IHNlb1NlcnZpY2UgPSBpbmplY3QoU2NTZW9TZXJ2aWNlKTtcbiAgICAgICAgY29uc3QgbWVkaWFJbWFnZVRyYW5zZm9ybWVyUGlwZTogU2NNZWRpYUltYWdlVHJhbnNmb3JtZXJQaXBlID0gaW5qZWN0KFNjTWVkaWFJbWFnZVRyYW5zZm9ybWVyUGlwZSk7XG4gICAgICAgIGNvbnN0IHJlY0lkID0gcGFyYW1NYXAuZ2V0KCdwcm9kdWN0SWRPclNsdWcnKSA/PyBwYXJhbU1hcC5nZXQoJ2NhdGVnb3J5SWRPclNsdWcnKSA/PyBwYXJhbU1hcC5nZXQoJ2NhdGVnb3J5U2x1ZycpO1xuXG4gICAgICAgIGlmICghcmVjSWQpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBnZXREYXRhRnVuY3Rpb24ocmVjSWQpLnBpcGUoXG4gICAgICAgICAgICBmaWx0ZXIodHVpSXNQcmVzZW50KSxcbiAgICAgICAgICAgIHRhcCgoeyBpZCwgbmFtZSwgc2VvLCBpbWFnZSwgc2x1ZyB9KSA9PiB7XG4gICAgICAgICAgICAgICAgc2V0U2VvVGFncyhzZW9TZXJ2aWNlLCBuYW1lLCBzZW8sIG1lZGlhSW1hZ2VUcmFuc2Zvcm1lclBpcGUudHJhbnNmb3JtKGltYWdlLCB0cnVlKSk7XG4gICAgICAgICAgICAgICAgY29uc3QgaWRPclNsdWdJblJvdXRlID0gaW5qZWN0KFNDX0lEX09SX1NMVUdfSU5fUk9VVEUpO1xuXG4gICAgICAgICAgICAgICAgLy8g0JIg0YLQvtC8INGB0LvRg9GH0LDQtSwg0LXRgdC70Lgg0LjRgdC/0L7Qu9GM0LfRg9C10YLRgdGPIHNsdWcg0LTQu9GPINGE0L7RgNC80LjRgNC+0LLQsNC90LjRjyDRgdGB0YvQu9C+0LosINGC0L4g0L3QtdC+0LHRhdC+0LTQuNC80L4g0YHRhNC+0YDQvNC40YDQvtCy0LDRgtGMINC60L7QvdC+0L3QuNGH0LXRgdC60YPRjiDRgdGB0YvQu9C60YNcbiAgICAgICAgICAgICAgICAvLyDQvdCwINGB0YLRgNCw0L3QuNGG0YMg0LIg0LrQvtGC0L7RgNC+0Lkg0LjRgdC/0L7Qu9GM0LfRg9C10YLRgdGPIHNsdWcgKNCwINC90LUgaWQpLlxuICAgICAgICAgICAgICAgIGlmIChzZXRDYW5vbmljYWwgJiYgaWRPclNsdWdJblJvdXRlID09PSAnc2x1ZycgJiYgaWQgJiYgc2x1Zykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjYW5vbmljYWxQYXRoID0gc3RhdGUudXJsXG4gICAgICAgICAgICAgICAgICAgICAgICAuc3BsaXQoJy8nKVxuICAgICAgICAgICAgICAgICAgICAgICAgLm1hcCgoc2VnbWVudCkgPT4gKHNlZ21lbnQgPT09IGlkLnRvU3RyaW5nKCkgPyBzbHVnIDogc2VnbWVudCkpXG4gICAgICAgICAgICAgICAgICAgICAgICAuam9pbignLycpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IHNpdGVVcmwgfSA9IGluamVjdChTQ19VUkxTKTtcblxuICAgICAgICAgICAgICAgICAgICBzZW9TZXJ2aWNlLnNldENhbm9uaWNhbExpbmsoYCR7c2l0ZVVybH0ke2Nhbm9uaWNhbFBhdGh9YCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBtYXAoVFVJX1RSVUVfSEFORExFUiksXG4gICAgICAgICAgICBjYXRjaEVycm9yKCgpID0+IG9mKHRydWUpKSxcbiAgICAgICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCgpXG4gICAgICAgICk7XG4gICAgfTtcbn07XG5cbi8qKlxuICog0KPRgdGC0LDQvdCw0LLQu9C40LLQsNC10YIgU0VPLdGC0LXQs9C4INC00LvRjyDRgdGC0YDQsNC90LjRhtGLINC/0YDQvtC00YPQutGC0LAuXG4gKi9cbmV4cG9ydCBjb25zdCBTY1Byb2R1Y3RTZW9HdWFyZCA9IGNyZWF0ZVNlb0d1YXJkKChyZWNJZCkgPT4gaW5qZWN0KFNjQ2F0YWxvZ1NlcnZpY2UpLmdldFByb2R1Y3REYXRhQ2FjaGVkJChyZWNJZCksIHRydWUpO1xuXG4vKipcbiAqINCj0YHRgtCw0L3QsNCy0LvQuNCy0LDQtdGCIFNFTy3RgtC10LPQuCDQtNC70Y8g0YHRgtGA0LDQvdC40YbRiyDQstC40YDRgtGD0LDQu9GM0L3QvtC5INC60LDRgtC10LPQvtGA0LjQuC5cbiAqL1xuZXhwb3J0IGNvbnN0IFNjVmlydHVhbENhdGVnb3J5U2VvR3VhcmQgPSBjcmVhdGVTZW9HdWFyZDxTY1ZpcnR1YWxDYXRlZ29yeT4oKHJlY0lkKSA9PiBpbmplY3QoU2NDYXRhbG9nU2VydmljZSkuZ2V0VmlydHVhbENhdGVnb3J5Q2FjaGVkJChyZWNJZCkpO1xuXG4vKipcbiAqINCj0YHRgtCw0L3QsNCy0LvQuNCy0LDQtdGCIFNFTy3RgtC10LPQuCDQtNC70Y8g0YHRgtGA0LDQvdC40YbRiyDQutCw0YLQtdCz0L7RgNC40LguXG4gKi9cbmV4cG9ydCBjb25zdCBTY0NhdGVnb3J5U2VvR3VhcmQgPSBjcmVhdGVTZW9HdWFyZDxTY0NhdGVnb3J5PigocmVjSWQpID0+IGluamVjdChTY0NhdGFsb2dTZXJ2aWNlKS5nZXRDYXRlZ29yeUNhY2hlZCQocmVjSWQpLCB0cnVlKTtcbiJdfQ==
61
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F0YWxvZy1zZW8uZ3VhcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2d1YXJkcy9jYXRhbG9nLXNlby5ndWFyZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRWhFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0QsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFLOUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDMUUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDdkYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzFELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN0RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUMxRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFNUM7Ozs7OztHQU1HO0FBQ0gsTUFBTSxjQUFjLEdBQUcsQ0FDbkIsZUFBd0QsRUFDeEQsZUFBd0IsS0FBSyxFQUMvQixFQUFFO0lBQ0Esd0RBQXdEO0lBQ3hELE9BQU8sQ0FBQyxFQUFFLFFBQVEsRUFBMEIsRUFBRSxLQUEwQixFQUFFLEVBQUU7UUFDeEUsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIs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QWdCLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgUm91dGVyU3RhdGVTbmFwc2hvdCB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBUVUlfVFJVRV9IQU5ETEVSLCB0dWlJc1ByZXNlbnQgfSBmcm9tICdAdGFpZ2EtdWkvY2RrJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBmaWx0ZXIsIG1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBTY0NhdGVnb3J5IH0gZnJvbSAnLi4vY2F0YWxvZy9kdG8vc2MtY2F0ZWdvcnknO1xuaW1wb3J0IHsgU2NJU2VvIH0gZnJvbSAnLi4vY2F0YWxvZy9kdG8vc2MtaS1zZW8nO1xuaW1wb3J0IHsgU2NWaXJ0dWFsQ2F0ZWdvcnkgfSBmcm9tICcuLi9jYXRhbG9nL2R0by9zYy12aXJ0dWFsLWNhdGVnb3J5JztcbmltcG9ydCB7IFNjQ2F0YWxvZ1NlcnZpY2UgfSBmcm9tICcuLi9jYXRhbG9nL3NlcnZpY2VzL3NjLWNhdGFsb2cuc2VydmljZSc7XG5pbXBvcnQgeyBTY01lZGlhSW1hZ2VUcmFuc2Zvcm1lclBpcGUgfSBmcm9tICcuLi9waXBlcy9zYy1tZWRpYS1pbWFnZS10cmFuc2Zvcm1lci5waXBlJztcbmltcG9ydCB7IFNjU2VvU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3NjLXNlby5zZXJ2aWNlJztcbmltcG9ydCB7IFNDX0NPTVBBTllfSU5GTyB9IGZyb20gJy4uL3Rva2Vucy9zYy1jb21wYW55LWluZm8nO1xuaW1wb3J0IHsgU0NfQ0FUQUxPR19QQUdFX01FVEEgfSBmcm9tICcuLi90b2tlbnMvc2MtZGVmYXVsdC1wYWdlLW1ldGEnO1xuaW1wb3J0IHsgU0NfSURfT1JfU0xVR19JTl9ST1VURSB9IGZyb20gJy4uL3Rva2Vucy9zYy1pZC1vci1zbHVnLWluLXJvdXRlJztcbmltcG9ydCB7IFNDX1VSTFMgfSBmcm9tICcuLi90b2tlbnMvc2MtdXJscyc7XG5cbi8qKlxuICog0KHQvtC30LTQsNC10YIgU0VPLWd1YXJkINC00LvRjyDRg9C60LDQt9Cw0L3QvdC+0LPQviDRgdC10YDQstC40YHQsCDQuCDQvNC10YLQvtC00LAg0L/QvtC70YPRh9C10L3QuNGPINC00LDQvdC90YvRhS5cbiAqXG4gKiBAcGFyYW0gZ2V0RGF0YUZ1bmN0aW9uINCk0YPQvdC60YbQuNGPINC00LvRjyDQv9C+0LvRg9GH0LXQvdC40Y8g0LTQsNC90L3Ri9GFINC40Lcg0YHQtdGA0LLQuNGB0LAuXG4gKiBAcGFyYW0gc2V0Q2Fub25pY2FsINCf0YDQuNC30L3QsNC6INC90LXQvtCx0YXQvtC00LjQvNC+0YHRgtC4INGD0YHRgtCw0L3QvtCy0LjRgtGMINC90LAg0YHRgtGA0LDQvdC40YbQtSDQutCw0L3QvtC90LjRh9C10YHQutGD0Y4g0YHRgdGL0LvQutGDLlxuICogQHJldHVybnMg0KTRg9C90LrRhtC40Y8tZ3VhcmQuXG4gKi9cbmNvbnN0IGNyZWF0ZVNlb0d1YXJkID0gPFQgZXh0ZW5kcyB7IGlkPzogbnVtYmVyOyBuYW1lOiBzdHJpbmc7IHNlbz86IFNjSVNlbzsgaW1hZ2U/OiBzdHJpbmc7IHNsdWc/OiBzdHJpbmcgfT4oXG4gICAgZ2V0RGF0YUZ1bmN0aW9uOiAocmVjSWQ6IHN0cmluZykgPT4gT2JzZXJ2YWJsZTxUIHwgbnVsbD4sXG4gICAgc2V0Q2Fub25pY2FsOiBib29sZWFuID0gZmFsc2VcbikgPT4ge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzb25hcmpzL2Z1bmN0aW9uLXJldHVybi10eXBlXG4gICAgcmV0dXJuICh7IHBhcmFtTWFwIH06IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIHN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90KSA9PiB7XG4gICAgICAgIGNvbnN0IHJlY0lkID0gcGFyYW1NYXAuZ2V0KCdwcm9kdWN0SWRPclNsdWcnKSA/PyBwYXJhbU1hcC5nZXQoJ2NhdGVnb3J5SWRPclNsdWcnKSA/PyBwYXJhbU1hcC5nZXQoJ2NhdGVnb3J5U2x1ZycpO1xuXG4gICAgICAgIGlmICghcmVjSWQpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHNlb1NlcnZpY2UgPSBpbmplY3QoU2NTZW9TZXJ2aWNlKTtcbiAgICAgICAgY29uc3QgY29tcGFueUluZm8gPSBpbmplY3QoU0NfQ09NUEFOWV9JTkZPKTtcbiAgICAgICAgY29uc3QgY2F0YWxvZ01ldGEgPSBpbmplY3QoU0NfQ0FUQUxPR19QQUdFX01FVEEpO1xuICAgICAgICBjb25zdCBtZWRpYUltYWdlVHJhbnNmb3JtZXJQaXBlOiBTY01lZGlhSW1hZ2VUcmFuc2Zvcm1lclBpcGUgPSBpbmplY3QoU2NNZWRpYUltYWdlVHJhbnNmb3JtZXJQaXBlKTtcbiAgICAgICAgY29uc3QgaWRPclNsdWdJblJvdXRlID0gaW5qZWN0KFNDX0lEX09SX1NMVUdfSU5fUk9VVEUpO1xuICAgICAgICBjb25zdCB7IHNpdGVVcmwgfSA9IGluamVjdChTQ19VUkxTKTtcblxuICAgICAgICByZXR1cm4gZ2V0RGF0YUZ1bmN0aW9uKHJlY0lkKS5waXBlKFxuICAgICAgICAgICAgZmlsdGVyKHR1aUlzUHJlc2VudCksXG4gICAgICAgICAgICB0YXAoKHsgaWQsIG5hbWUsIHNlbywgaW1hZ2UsIHNsdWcgfSkgPT4ge1xuICAgICAgICAgICAgICAgIC8vINCk0L7RgNC80LjRgNGD0LXQvCDQuCDRg9GB0YLQsNC90LDQstC70LjQstCw0LXQvCDQvNC10YLQsNGC0LXQs9C4INGB0YLRgNCw0L3QuNGG0YsuXG4gICAgICAgICAgICAgICAgY29uc3Qgc2VvUmVzb3VyY2UgPSBzZW9TZXJ2aWNlLmdlbmVyYXRlU2VvUmVzb3VyY2UoXG4gICAgICAgICAgICAgICAgICAgIHNlbyxcbiAgICAgICAgICAgICAgICAgICAgYCR7bmFtZX0gLSDQmtGD0L/QuNGC0Ywg0LIgJHtjb21wYW55SW5mby5uYW1lfWAsXG4gICAgICAgICAgICAgICAgICAgIGAke25hbWV9IC0g0JrRg9C/0LjRgtGMINC/0L4g0LLRi9Cz0L7QtNC90YvQvCDRhtC10L3QsNC8INCyICR7Y29tcGFueUluZm8ubmFtZX1gLFxuICAgICAgICAgICAgICAgICAgICBgJHtuYW1lfSwgJHtjYXRhbG9nTWV0YS5rZXl3b3Jkc31gXG4gICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgIHNlb1NlcnZpY2Uuc2V0TWV0YVRhZ3NGcm9tUmVzb3VyY2Uoc2VvUmVzb3VyY2UsIG1lZGlhSW1hZ2VUcmFuc2Zvcm1lclBpcGUudHJhbnNmb3JtKGltYWdlLCB0cnVlKSk7XG5cbiAgICAgICAgICAgICAgICAvLyDQkiDRgtC+0Lwg0YHQu9GD0YfQsNC1LCDQtdGB0LvQuCDQuNGB0L/QvtC70YzQt9GD0LXRgtGB0Y8gc2x1ZyDQtNC70Y8g0YTQvtGA0LzQuNGA0L7QstCw0L3QuNGPINGB0YHRi9C70L7Quiwg0YLQviDQvdC10L7QsdGF0L7QtNC40LzQviDRgdGE0L7RgNC80LjRgNC+0LLQsNGC0Ywg0LrQvtC90L7QvdC40YfQtdGB0LrRg9GOXG4gICAgICAgICAgICAgICAgLy8g0YHRgdGL0LvQutGDINC90LAg0YHRgtGA0LDQvdC40YbRgyDQsiDQutC+0YLQvtGA0L7QuSDQuNGB0L/QvtC70YzQt9GD0LXRgtGB0Y8gc2x1ZyAo0LAg0L3QtSBpZCkuXG4gICAgICAgICAgICAgICAgaWYgKHNldENhbm9uaWNhbCAmJiBpZE9yU2x1Z0luUm91dGUgPT09ICdzbHVnJyAmJiBpZCAmJiBzbHVnKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNhbm9uaWNhbFBhdGggPSBzdGF0ZS51cmxcbiAgICAgICAgICAgICAgICAgICAgICAgIC5zcGxpdCgnLycpXG4gICAgICAgICAgICAgICAgICAgICAgICAubWFwKChzZWdtZW50KSA9PiAoc2VnbWVudCA9PT0gaWQudG9TdHJpbmcoKSA/IHNsdWcgOiBzZWdtZW50KSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5qb2luKCcvJyk7XG5cbiAgICAgICAgICAgICAgICAgICAgc2VvU2VydmljZS5zZXRDYW5vbmljYWxMaW5rKGAke3NpdGVVcmx9JHtjYW5vbmljYWxQYXRofWApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbWFwKFRVSV9UUlVFX0hBTkRMRVIpLFxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoKSA9PiBvZih0cnVlKSksXG4gICAgICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQoKVxuICAgICAgICApO1xuICAgIH07XG59O1xuXG4vKipcbiAqINCj0YHRgtCw0L3QsNCy0LvQuNCy0LDQtdGCIFNFTy3RgtC10LPQuCDQtNC70Y8g0YHRgtGA0LDQvdC40YbRiyDQv9GA0L7QtNGD0LrRgtCwLlxuICovXG5leHBvcnQgY29uc3QgU2NQcm9kdWN0U2VvR3VhcmQgPSBjcmVhdGVTZW9HdWFyZCgocmVjSWQpID0+IGluamVjdChTY0NhdGFsb2dTZXJ2aWNlKS5nZXRQcm9kdWN0RGF0YUNhY2hlZCQocmVjSWQpLCB0cnVlKTtcblxuLyoqXG4gKiDQo9GB0YLQsNC90LDQstC70LjQstCw0LXRgiBTRU8t0YLQtdCz0Lgg0LTQu9GPINGB0YLRgNCw0L3QuNGG0Ysg0LLQuNGA0YLRg9Cw0LvRjNC90L7QuSDQutCw0YLQtdCz0L7RgNC40LguXG4gKi9cbmV4cG9ydCBjb25zdCBTY1ZpcnR1YWxDYXRlZ29yeVNlb0d1YXJkID0gY3JlYXRlU2VvR3VhcmQ8U2NWaXJ0dWFsQ2F0ZWdvcnk+KChyZWNJZCkgPT4gaW5qZWN0KFNjQ2F0YWxvZ1NlcnZpY2UpLmdldFZpcnR1YWxDYXRlZ29yeUNhY2hlZCQocmVjSWQpKTtcblxuLyoqXG4gKiDQo9GB0YLQsNC90LDQstC70LjQstCw0LXRgiBTRU8t0YLQtdCz0Lgg0LTQu9GPINGB0YLRgNCw0L3QuNGG0Ysg0LrQsNGC0LXQs9C+0YDQuNC4LlxuICovXG5leHBvcnQgY29uc3QgU2NDYXRlZ29yeVNlb0d1YXJkID0gY3JlYXRlU2VvR3VhcmQ8U2NDYXRlZ29yeT4oKHJlY0lkKSA9PiBpbmplY3QoU2NDYXRhbG9nU2VydmljZSkuZ2V0Q2F0ZWdvcnlDYWNoZWQkKHJlY0lkKSwgdHJ1ZSk7XG4iXX0=
@@ -166,7 +166,7 @@ export class ScSeoService {
166
166
  * @param defaultDescription Описание страницы используемое в случае отсутствия описания в SEO-ресурсе.
167
167
  * @param defaultKeyWords Ключевые слова страницы используемые в случае отсутствия ключевых слов в SEO-ресурсе.
168
168
  */
169
- getGenerateSeoResource(seo, defaultTitle, defaultDescription = this.defaultSeo.description, defaultKeyWords = this.defaultSeo.keywords) {
169
+ generateSeoResource(seo, defaultTitle, defaultDescription = this.defaultSeo.description, defaultKeyWords = this.defaultSeo.keywords) {
170
170
  return {
171
171
  title: seo?.title ?? defaultTitle,
172
172
  description: seo?.description ?? defaultDescription,
@@ -268,4 +268,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
268
268
  providedIn: 'root',
269
269
  }]
270
270
  }], ctorParameters: () => [] });
271
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Mtc2VvLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NlcnZpY2VzL3NjLXNlby5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQWEsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUYsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFLekMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzVELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7QUFHNUM7O0dBRUc7QUFJSCxNQUFNLE9BQU8sWUFBWTtJQXdEckI7O09BRUc7SUFDSDtRQTFEQTs7V0FFRztRQUNhLDhCQUF5QixHQUF1QixJQUFJLFlBQVksRUFBUSxDQUFDO1FBRXpGOztXQUVHO1FBQ2MsZUFBVSxHQUF1QixNQUFNLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUUvRTs7V0FFRztRQUNjLFdBQU0sR0FBVyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFakQ7O1dBRUc7UUFDYyxTQUFJLEdBQVksTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRWpEOztXQUVHO1FBQ2MsZ0JBQVcsR0FBUyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFbEQ7O1dBRUc7UUFDYyxpQkFBWSxHQUFVLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVyRDs7V0FFRztRQUNjLHNCQUFpQixHQUFXLFVBQVUsQ0FBQztRQUV4RDs7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L0MsSUFBSSxDQUFDLDBCQUEwQixDQUFDLFVBQVUsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNqRCxJQUFJLENBQUMsMEJBQTBCLENBQUMsZ0JBQWdCLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDL0QsSUFBSSxDQUFDLDBCQUEwQixDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ssaUJBQWlCLENBQUMsSUFBWSxFQUFFLE9BQWU7UUFDbkQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLENBQUM7SUFDdkcsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ssMEJBQTBCLENBQUMsUUFBZ0IsRUFBRSxPQUFlO1FBQ2hFLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDO0lBQy9HLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ssWUFBWSxDQUFDLElBQVk7UUFDN0IsSUFBSSxDQUFDLDBCQUEwQixDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNyRCxDQUFDOytHQW5UUSxZQUFZO21IQUFaLFlBQVksY0FGVCxNQUFNOzs0RkFFVCxZQUFZO2tCQUh4QixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEV2ZW50RW1pdHRlciwgaW5qZWN0LCBJbmplY3RhYmxlLCBSZW5kZXJlcjIsIFJlbmRlcmVyRmFjdG9yeTIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1ldGEsIFRpdGxlIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQgeyBTY0lTZW8gfSBmcm9tICcuLi9jYXRhbG9nL2R0by9zYy1pLXNlbyc7XG5pbXBvcnQgeyBTY0lEZWZhdWx0UGFnZU1ldGEgfSBmcm9tICcuLi9jb25maWcvc2MtaS1kZWZhdWx0LXBhZ2UtbWV0YSc7XG5pbXBvcnQgeyBTY0lVcmxzIH0gZnJvbSAnLi4vY29uZmlnL3NjLWktdXJscyc7XG5pbXBvcnQgeyBTQ19DT01QQU5ZX05BTUUgfSBmcm9tICcuLi90b2tlbnMvc2MtY29tcGFueS1uYW1lJztcbmltcG9ydCB7IFNDX0RFRkFVTFRfUEFHRV9NRVRBIH0gZnJvbSAnLi4vdG9rZW5zL3NjLWRlZmF1bHQtcGFnZS1tZXRhJztcbmltcG9ydCB7IFNDX1VSTFMgfSBmcm9tICcuLi90b2tlbnMvc2MtdXJscyc7XG5pbXBvcnQgeyBSb2JvdHNUYWdUeXBlIH0gZnJvbSAnLi90eXBlcy9yb2JvdHMtdGFnLXR5cGUnO1xuXG4vKipcbiAqINCh0LXRgNCy0LjRgSDRg9C/0YDQsNCy0LvQtdC90LjRjyBTRU8t0L/QsNGA0LDQvNC10YLRgNCw0LzQuC5cbiAqL1xuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgU2NTZW9TZXJ2aWNlIHtcbiAgICAvKipcbiAgICAgKiDQodC+0LHRi9GC0LjQtSDRg9GB0YLQsNC90L7QstC60LggbWV0YS3RgtC10LPQvtCyINGB0YLRgNCw0L3QuNGG0YsuXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IGlzU2V0TWV0YVRhZ3NFdmVudEVtaXR0ZXI6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIC8qKlxuICAgICAqINCU0LDQvdC90YvQtSDQviDQvNC10YLQsC3QtNCw0L3QvdGL0YUg0YHRgtGA0LDQvdC40YbRiyDQv9C+INGD0LzQvtC70YfQsNC90LjRji5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IGRlZmF1bHRTZW86IFNjSURlZmF1bHRQYWdlTWV0YSA9IGluamVjdChTQ19ERUZBVUxUX1BBR0VfTUVUQSk7XG5cbiAgICAvKipcbiAgICAgKiDQodC10YDQstC40YEg0LzQsNGA0YjRgNGD0YLQuNC30LDRhtC40LguXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZXI6IFJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuXG4gICAgLyoqXG4gICAgICog0KHQv9C40YHQvtC6INGB0YHRi9C70L7QuiDQv9GA0LjQu9C+0LbQtdC90LjRjy5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IHVybHM6IFNjSVVybHMgPSBpbmplY3QoU0NfVVJMUyk7XG5cbiAgICAvKipcbiAgICAgKiDQodC10YDQstC40YEg0YPRgdGC0LDQvdC+0LLQutC4INC80LXRgtCw0LTQsNC90L3Ri9GFINGB0YLRgNCw0L3QuNGG0YsuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBtZXRhU2VydmljZTogTWV0YSA9IGluamVjdChNZXRhKTtcblxuICAgIC8qKlxuICAgICAqINCh0LXRgNCy0LjRgSDRg9C/0YDQsNCy0LvQtdC90LjRjyDQt9Cw0LPQvtC70L7QstC60L7QvCDRgdGC0YDQsNC90LjRhtGLLlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgdGl0bGVTZXJ2aWNlOiBUaXRsZSA9IGluamVjdChUaXRsZSk7XG5cbiAgICAvKipcbiAgICAgKiDQodC10LvQtdC60YLQvtGAINCz0YDRg9C/0L/RiyDQtNC70Y8g0YPRgdGC0LDQvdCw0LLQu9C40LLQsNC10LzRi9GFINC80LXRgtCw0YLQtdCz0L7Qsi5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IGRhdGFHcm91cFNlbGVjdG9yOiBzdHJpbmcgPSAnc2VvLXRhZ3MnO1xuXG4gICAgLyoqXG4gICAgICog0J7QsdGK0LXQutGCIHtAbGluayBEb2N1bWVudH0sINC/0YDQtdC00L7RgdGC0LDQstC70Y/RjtGJ0LjQuSDQtNC+0YHRgtGD0L8g0LogRE9NINGB0YLRgNCw0L3QuNGG0YsuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBkb2N1bWVudDogRG9jdW1lbnQgPSBpbmplY3QoRE9DVU1FTlQpO1xuXG4gICAgLyoqXG4gICAgICog0KTQsNCx0YDQuNC60LAg0LTQu9GPINGB0L7Qt9C00LDQvdC40Y8g0Y3QutC30LXQvNC/0LvRj9GA0L7QsiB7QGxpbmsgUmVuZGVyZXIyfS5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IHJlbmRlcmVyRmFjdG9yeTogUmVuZGVyZXJGYWN0b3J5MiA9IGluamVjdChSZW5kZXJlckZhY3RvcnkyKTtcblxuICAgIC8qKlxuICAgICAqINCt0LrQt9C10LzQv9C70Y/RgCB7QGxpbmsgUmVuZGVyZXIyfSDQtNC70Y8g0LHQtdC30L7Qv9Cw0YHQvdC+0Lkg0YDQsNCx0L7RgtGLINGBIERPTS5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IHJlbmRlcmVyOiBSZW5kZXJlcjIgPSB0aGlzLnJlbmRlcmVyRmFjdG9yeS5jcmVhdGVSZW5kZXJlcihudWxsLCBudWxsKTtcblxuICAgIC8qKlxuICAgICAqINCd0LDQt9Cy0LDQvdC40LUg0LrQvtC80L/QsNC90LjQuC5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbXBhbnlOYW1lOiBzdHJpbmcgPSBpbmplY3QoU0NfQ09NUEFOWV9OQU1FKTtcblxuICAgIC8qKlxuICAgICAqINCY0L3QuNGG0LjQsNC70LjQt9C40YDRg9C10YIg0Y3QutC30LXQvNC/0LvRj9GAINC60LvQsNGB0YHQsCB7QGxpbmsgU2NTZW9TZXJ2aWNlfS5cbiAgICAgKi9cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMuc2V0U2hhcmVUeXBlKCd3ZWJzaXRlJyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0KPRgdGC0LDQvdCw0LLQu9C40LLQsNC10YIgbWV0YS3RgtC10LPQuC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB0aXRsZSDQl9Cw0LPQvtC70L7QstC+0Log0YHRgtGA0LDQvdC40YbRiy5cbiAgICAgKiBAcGFyYW0gZGVzY3JpcHRpb24g0J7Qv9C40YHQsNC90LjQtSDRgdGC0YDQsNC90LjRhtGLLlxuICAgICAqIEBwYXJhbSBrZXl3b3JkcyDQmtC70Y7Rh9C10LLRi9C1INGB0LvQvtCy0LAg0YHRgtGA0LDQvdC40YbRiy5cbiAgICAgKiBAcGFyYW0gZW1pdEV2ZW50QWZ0ZXJTZXQg0J/RgNC40LfQvdCw0Log0YLQvtCz0L4sINC90LXQvtCx0YXQvtC00LjQvNC+INC70Lgg0LPQtdC90LXRgNC40YDQvtCy0LDRgtGMINGB0L7QsdGL0YLQuNC1LCDQv9C+0YHQu9C1INGD0YHRgtCw0L3QvtCy0LrQuCDRgtC10LPQvtCyLiDQn9C+INGD0LzQvtC70YfQsNC90LjRjiB7QGxpbmsgdHJ1ZX0uXG4gICAgICogQHBhcmFtIHJvYm90cyDQodC/0LjRgdC+0Logcm9ib3RzINGC0LXQs9C+0LIg0LTQu9GPINGB0YLRgNCw0L3QuNGG0YsuXG4gICAgICovXG4gICAgcHVibGljIHNldFBhZ2VNZXRhVGFncyhcbiAgICAgICAgdGl0bGU6IHN0cmluZyA9IHRoaXMuZGVmYXVsdFNlby50aXRsZSxcbiAgICAgICAgZGVzY3JpcHRpb246IHN0cmluZyA9IHRoaXMuZGVmYXVsdFNlby5kZXNjcmlwdGlvbixcbiAgICAgICAga2V5d29yZHM6IHN0cmluZyA9IHRoaXMuZGVmYXVsdFNlby5rZXl3b3JkcyxcbiAgICAgICAgZW1pdEV2ZW50QWZ0ZXJTZXQ6IGJvb2xlYW4gPSB0cnVlLFxuICAgICAgICByb2JvdHM6IFJvYm90c1RhZ1R5cGVbXSA9IFsnaW5kZXgnLCAnZm9sbG93J11cbiAgICApOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZXRQYWdlVGl0bGUodGl0bGUpO1xuICAgICAgICB0aGlzLnNldFBhZ2VNZXRhRGVzY3JpcHRpb24oZGVzY3JpcHRpb24pO1xuICAgICAgICB0aGlzLnNldFBhZ2VNZXRhS2V5d29yZHMoa2V5d29yZHMpO1xuXG4gICAgICAgIHRoaXMuc2V0UGFnZU1ldGFSb2JvdHMocm9ib3RzKTtcblxuICAgICAgICBpZiAoZW1pdEV2ZW50QWZ0ZXJTZXQpIHtcbiAgICAgICAgICAgIHRoaXMuaXNTZXRNZXRhVGFnc0V2ZW50RW1pdHRlci5lbWl0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQo9GB0YLQsNC90LDQstC70LjQstCw0LXRgiBPcGVuIEdyYXBoIG1ldGEt0YLQtdCz0LguXG4gICAgICpcbiAgICAgKiBAcGFyYW0gb2dUaXRsZSBPcGVuIEdyYXBoINC30LDQs9C+0LvQvtCy0L7Qui5cbiAgICAgKiBAcGFyYW0gb2dEZXNjcmlwdGlvbiBPcGVuIEdyYXBoINC+0L/QuNGB0LDQvdC40LUuXG4gICAgICogQHBhcmFtIG9nSW1nIE9wZW4gR3JhcGgg0LjQt9C+0LHRgNCw0LbQtdC90LjQtS5cbiAgICAgKiBAcGFyYW0gZW1pdEV2ZW50QWZ0ZXJTZXQg0J/RgNC40LfQvdCw0Log0YLQvtCz0L4sINC90LXQvtCx0YXQvtC00LjQvNC+INC70Lgg0LPQtdC90LXRgNC40YDQvtCy0LDRgtGMINGB0L7QsdGL0YLQuNC1LCDQv9C+0YHQu9C1INGD0YHRgtCw0L3QvtCy0LrQuCDRgtC10LPQvtCyLiDQn9C+INGD0LzQvtC70YfQsNC90LjRjiB7QGxpbmsgdHJ1ZX0uXG4gICAgICovXG4gICAgcHVibGljIHNldFBhZ2VPcGVuR3JhcGhNZXRhVGFncyhcbiAgICAgICAgb2dUaXRsZTogc3RyaW5nID0gdGhpcy5kZWZhdWx0U2VvLnRpdGxlLFxuICAgICAgICBvZ0Rlc2NyaXB0aW9uOiBzdHJpbmcgPSB0aGlzLmRlZmF1bHRTZW8uZGVzY3JpcHRpb24sXG4gICAgICAgIG9nSW1nOiBzdHJpbmcgPSB0aGlzLnVybHMubG9nb1VybCxcbiAgICAgICAgZW1pdEV2ZW50QWZ0ZXJTZXQ6IGJvb2xlYW4gPSB0cnVlXG4gICAgKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2V0T3BlbkdyYXBoTWV0YVRhZ3Mob2dUaXRsZSwgb2dEZXNjcmlwdGlvbiwgYCR7dGhpcy51cmxzLnNpdGVVcmx9JHt0aGlzLnJvdXRlci51cmx9YCwgb2dJbWcpO1xuXG4gICAgICAgIGlmIChlbWl0RXZlbnRBZnRlclNldCkge1xuICAgICAgICAgICAgdGhpcy5pc1NldE1ldGFUYWdzRXZlbnRFbWl0dGVyLmVtaXQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCj0YHRgtCw0L3QsNCy0LvQuNCy0LDQtdGCINCy0YHQtSBtZXRhLdGC0LXQs9C4INC40Lcg0L/RgNC40YjQtdC00YjQtdCz0L4g0LjRgdGC0L7Rh9C90LjQutCwLiDQldGB0LvQuCDQutCw0LrQvtCz0L4t0YLQviDRgtC10LPQsCDQvdC10YIsINCx0YPQtNC10YIg0YPRgdGC0LDQvdC+0LLQu9C10L3QviDQt9C90LDRh9C10L3QuNC1INC/0L4g0YPQvNC+0LvRh9Cw0L3QuNGOLlxuICAgICAqXG4gICAgICogQHBhcmFtIHJlc291cmNlINCY0YHRgtC+0YfQvdC40LogbWV0YSAtINGC0LXQs9C+0LIuXG4gICAgICogQHBhcmFtIGltZyDQmNC30L7QsdGA0LDQttC10L3QuNC1LiDQldGB0LvQuCDQvdC1INC/0YDQuNGI0LvQviwg0YLQviDQsdGD0LTQtdGCINGD0YHRgtCw0L3QvtCy0LvQtdC90L4g0LfQvdCw0YfQtdC90LjQtSDQv9C+INGD0LzQvtC70YfQsNC90LjRji5cbiAgICAgKiBAcGFyYW0gcm9ib3RzINCh0L/QuNGB0L7QuiByb2JvdHMg0YLQtdCz0L7QsiDQtNC70Y8g0YHRgtGA0LDQvdC40YbRiy5cbiAgICAgKi9cbiAgICBwdWJsaWMgc2V0TWV0YVRhZ3NGcm9tUmVzb3VyY2UocmVzb3VyY2U/OiBTY0lTZW8sIGltZzogc3RyaW5nID0gdGhpcy51cmxzLmxvZ29VcmwsIHJvYm90czogUm9ib3RzVGFnVHlwZVtdID0gWydpbmRleCcsICdmb2xsb3cnXSk6IHZvaWQge1xuICAgICAgICB0aGlzLnNldEFsbFBhZ2VNZXRhVGFncyhyZXNvdXJjZT8udGl0bGUsIHJlc291cmNlPy5kZXNjcmlwdGlvbiwgcmVzb3VyY2U/LmtleXdvcmRzLCBpbWcsIHJlc291cmNlPy5tZXRhLCByb2JvdHMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCj0YHRgtCw0L3QsNCy0LvQuNCy0LDQtdGCINCy0YHQtSBtZXRhLdGC0LXQs9C4INGB0YLRgNCw0L3QuNGG0Ysg0YHQviDQt9C90LDRh9C10L3QuNC10Lwg0L/QviDRg9C80L7Qu9GH0LDQvdC40Y4sINCy0L3QtdC00YDRj9GPINGC0YPQtNCwINC30LDQs9C+0LvQvtCy0L7Quiwg0LXRgdC70Lgg0L7QvSDQv9C10YDQtdC00LDQvS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB0aXRsZSDQl9Cw0LPQvtC70L7QstC+0Log0YHRgtGA0LDQvdC40YbRiy5cbiAgICAgKiBAcGFyYW0gcm9ib3RzINCh0L/QuNGB0L7QuiByb2JvdHMg0YLQtdCz0L7QsiDQtNC70Y8g0YHRgtGA0LDQvdC40YbRiy5cbiAgICAgKi9cbiAgICBwdWJsaWMgc2V0RGVmYXVsdEFsbFBhZ2VNZXRhVGFncyh0aXRsZTogc3RyaW5nID0gdGhpcy5kZWZhdWx0U2VvLnRpdGxlLCByb2JvdHM6IFJvYm90c1RhZ1R5cGVbXSA9IFsnaW5kZXgnLCAnZm9sbG93J10pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZXRBbGxQYWdlTWV0YVRhZ3MoYCR7dGl0bGV9IC0gJHt0aGlzLmNvbXBhbnlOYW1lfWAsIGAke3RpdGxlfSwgJHt0aGlzLmRlZmF1bHRTZW8uZGVzY3JpcHRpb259YCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIFtdLCByb2JvdHMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCj0YHRgtCw0L3QsNCy0LvQuNCy0LDQtdGCINCy0YHQtSBtZXRhLdGC0LXQs9C4INGB0YLRgNCw0L3QuNGG0Ysg0YHQviDQt9C90LDRh9C10L3QuNC10Lwg0L/QviDRg9C80L7Qu9GH0LDQvdC40Y4sINCy0L3QtdC00YDRj9GPINGC0YPQtNCwINC30LDQs9C+0LvQvtCy0L7Quiwg0LXRgdC70Lgg0L7QvSDQv9C10YDQtdC00LDQvS4g0KPRgdGC0LDQvdCw0LLQu9C40LLQsNC10YIg0LfQvdCw0YfQtdC90LjQtSBcItC90LUg0LjQvdC00LXQutGB0LjRgNC+0LLQsNGC0YxcIiDQtNC70Y8g0L/QvtC40YHQutC+0LLRi9GFINGA0L7QsdC+0YLQvtCyLlxuICAgICAqXG4gICAgICogQHBhcmFtIHRpdGxlINCX0LDQs9C+0LvQvtCy0L7QuiDRgdGC0YDQsNC90LjRhtGLLlxuICAgICAqL1xuICAgIHB1YmxpYyBzZXROb0luZGV4RGVmYXVsdEFsbFBhZ2VNZXRhVGFncyh0aXRsZTogc3RyaW5nID0gdGhpcy5kZWZhdWx0U2VvLnRpdGxlKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2V0QWxsUGFnZU1ldGFUYWdzKGAke3RpdGxlfSAtICR7dGhpcy5jb21wYW55TmFtZX1gLCBgJHt0aXRsZX0sICR7dGhpcy5kZWZhdWx0U2VvLmRlc2NyaXB0aW9ufWAsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBbXSwgWydub2luZGV4JywgJ25vZm9sbG93JywgJ25vYXJjaGl2ZSddKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQo9GB0YLQsNC90LDQstC70LjQstCw0LXRgiDQstGB0LUgbWV0YS3RgtC10LPQuCDRgdGC0YDQsNC90LjRhtGLLiDQldGB0LvQuCDQutCw0LrQvtC5LdC70LjQsdC+INC40Lcg0L/QsNGA0LDQvNC10YLRgNC+0LIg0L3QtSDRg9C60LDQt9Cw0L0sINC00LvRjyDQvdC10LPQviDRg9GB0YLQsNC90LDQstC70LjQstCw0LXRgtGB0Y8g0LfQvdCw0YfQtdC90LjQtSDQv9C+INGD0LzQvtC70YfQsNC90LjRji5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB0aXRsZSDQl9Cw0LPQvtC70L7QstC+0Log0YHRgtGA0LDQvdC40YbRiy5cbiAgICAgKiBAcGFyYW0gZGVzY3JpcHRpb24g0J7Qv9C40YHQsNC90LjQtSDRgdGC0YDQsNC90LjRhtGLLlxuICAgICAqIEBwYXJhbSBrZXl3b3JkcyDQmtC70Y7Rh9C10LLRi9C1INGB0LvQvtCy0LAg0YHRgtGA0LDQvdC40YbRiy5cbiAgICAgKiBAcGFyYW0gaW1nINCY0LfQvtCx0YDQsNC20LXQvdC40LUuXG4gICAgICogQHBhcmFtIG1ldGEg0JzQsNGB0YHQuNCyINC00L7Qv9C+0LvQvdC40YLQtdC70YzQvdGL0YUg0LfQvdCw0YfQtdC90LjQuSDQvNC10YLQsNGC0LXQs9C+0LIuXG4gICAgICogQHBhcmFtIHJvYm90cyDQodC/0LjRgdC+0Logcm9ib3RzINGC0LXQs9C+0LIg0LTQu9GPINGB0YLRgNCw0L3QuNGG0YsuXG4gICAgICovXG4gICAgcHVibGljIHNldEFsbFBhZ2VNZXRhVGFncyhcbiAgICAgICAgdGl0bGU6IHN0cmluZyA9IHRoaXMuZGVmYXVsdFNlby50aXRsZSxcbiAgICAgICAgZGVzY3JpcHRpb246IHN0cmluZyA9IHRoaXMuZGVmYXVsdFNlby5kZXNjcmlwdGlvbixcbiAgICAgICAga2V5d29yZHM6IHN0cmluZyA9IHRoaXMuZGVmYXVsdFNlby5rZXl3b3JkcyxcbiAgICAgICAgaW1nOiBzdHJpbmcgPSB0aGlzLnVybHMubG9nb1VybCxcbiAgICAgICAgbWV0YTogU2NJU2VvWydtZXRhJ10gPSBbXSxcbiAgICAgICAgcm9ib3RzOiBSb2JvdHNUYWdUeXBlW10gPSBbJ2luZGV4JywgJ2ZvbGxvdyddXG4gICAgKTogdm9pZCB7XG4gICAgICAgIHRoaXMucmVtb3ZlTWV0YVRhZ3MoKTtcbiAgICAgICAgdGhpcy5zZXRQYWdlVGl0bGUodGl0bGUpO1xuICAgICAgICB0aGlzLnNldFBhZ2VNZXRhRGVzY3JpcHRpb24oZGVzY3JpcHRpb24pO1xuICAgICAgICB0aGlzLnNldFBhZ2VNZXRhS2V5d29yZHMoa2V5d29yZHMpO1xuICAgICAgICB0aGlzLnNldE9wZW5HcmFwaE1ldGFUYWdzKHRpdGxlLCBkZXNjcmlwdGlvbiwgYCR7dGhpcy51cmxzLnNpdGVVcmx9JHt0aGlzLnJvdXRlci51cmx9YCwgaW1nKTtcbiAgICAgICAgbWV0YS5mb3JFYWNoKCh0YWcpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2V0UGFnZU1ldGFCeU5hbWUodGFnLm5hbWUsIHRhZy5jb250ZW50KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuc2V0UGFnZU1ldGFSb2JvdHMocm9ib3RzKTtcblxuICAgICAgICB0aGlzLmlzU2V0TWV0YVRhZ3NFdmVudEVtaXR0ZXIuZW1pdCgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCj0YHRgtCw0L3QsNCy0LvQuNCy0LDQtdGCIG1ldGEt0YLQtdCzIHJvYm90cyDQtNC70Y8g0YHRgtGA0LDQvdC40YbRiy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSByb2JvdHMg0KHQv9C40YHQvtC6IHJvYm90cyDRgtC10LPQvtCyINC00LvRjyDRgdGC0YDQsNC90LjRhtGLLlxuICAgICAqL1xuICAgIHB1YmxpYyBzZXRQYWdlTWV0YVJvYm90cyhyb2JvdHM6IFJvYm90c1RhZ1R5cGVbXSk6IHZvaWQge1xuICAgICAgICB0aGlzLnNldFBhZ2VNZXRhQnlOYW1lKCdyb2JvdHMnLCByb2JvdHMuam9pbignLCAnKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0KPQtNCw0LvRj9C10YIg0LLRgdC1INGD0YHRgtCw0L3QvtCy0LvQtdC90L3Ri9C1IG1ldGEt0YLQtdCz0LguXG4gICAgICovXG4gICAgcHVibGljIHJlbW92ZU1ldGFUYWdzKCk6IHZvaWQge1xuICAgICAgICBjb25zdCB0YWdzID0gdGhpcy5kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsPEhUTUxNZXRhRWxlbWVudD4oYG1ldGFbZGF0YS1ncm91cD1cIiR7dGhpcy5kYXRhR3JvdXBTZWxlY3Rvcn1cIl1gKTtcblxuICAgICAgICB0YWdzLmZvckVhY2goKHRhZykgPT4ge1xuICAgICAgICAgICAgdGhpcy5tZXRhU2VydmljZS5yZW1vdmVUYWdFbGVtZW50KHRhZyk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCS0L7Qt9Cy0YDQsNGJ0LDQtdGCINGB0LPQtdC90LXRgNC40YDQvtCy0LDQvdC90YvQuSBTRU8tcmVzb3VyY2Ug0YEg0YPQutCw0LfQsNC90L3Ri9C80Lgg0L/QsNGA0LDQvNC10YLRgNCw0LzQuC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBzZW8g0JTQsNC90L3Ri9C1IFNFTyDRgNC10YHRg9GA0YHQsC5cbiAgICAgKiBAcGFyYW0gZGVmYXVsdFRpdGxlINCX0LDQs9C+0LvQvtCy0L7QuiDRgdGC0YDQsNC90LjRhtGLINC40YHQv9C+0LvRjNC30YPQtdC80YvQuSDQsiDRgdC70YPRh9Cw0LUg0L7RgtGB0YPRgtGB0YLQstC40Y8g0LfQsNCz0L7Qu9C+0LLQutCwINCyIFNFTy3RgNC10YHRg9GA0YHQtS5cbiAgICAgKiBAcGFyYW0gZGVmYXVsdERlc2NyaXB0aW9uINCe0L/QuNGB0LDQvdC40LUg0YHRgtGA0LDQvdC40YbRiyDQuNGB0L/QvtC70YzQt9GD0LXQvNC+0LUg0LIg0YHQu9GD0YfQsNC1INC+0YLRgdGD0YLRgdGC0LLQuNGPINC+0L/QuNGB0LDQvdC40Y8g0LIgU0VPLdGA0LXRgdGD0YDRgdC1LlxuICAgICAqIEBwYXJhbSBkZWZhdWx0S2V5V29yZHMg0JrQu9GO0YfQtdCy0YvQtSDRgdC70L7QstCwINGB0YLRgNCw0L3QuNGG0Ysg0LjRgdC/0L7Qu9GM0LfRg9C10LzRi9C1INCyINGB0LvRg9GH0LDQtSDQvtGC0YHRg9GC0YHRgtCy0LjRjyDQutC70Y7Rh9C10LLRi9GFINGB0LvQvtCyINCyIFNFTy3RgNC10YHRg9GA0YHQtS5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0R2VuZXJhdGVTZW9SZXNvdXJjZShcbiAgICAgICAgc2VvOiBTY0lTZW8gfCB1bmRlZmluZWQsXG4gICAgICAgIGRlZmF1bHRUaXRsZTogc3RyaW5nLFxuICAgICAgICBkZWZhdWx0RGVzY3JpcHRpb246IHN0cmluZyA9IHRoaXMuZGVmYXVsdFNlby5kZXNjcmlwdGlvbixcbiAgICAgICAgZGVmYXVsdEtleVdvcmRzOiBzdHJpbmcgPSB0aGlzLmRlZmF1bHRTZW8ua2V5d29yZHNcbiAgICApOiBTY0lTZW8ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IHNlbz8udGl0bGUgPz8gZGVmYXVsdFRpdGxlLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IHNlbz8uZGVzY3JpcHRpb24gPz8gZGVmYXVsdERlc2NyaXB0aW9uLFxuICAgICAgICAgICAga2V5d29yZHM6IHNlbz8ua2V5d29yZHMgPz8gZGVmYXVsdEtleVdvcmRzLFxuICAgICAgICAgICAgbWV0YTogc2VvPy5tZXRhLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCj0YHRgtCw0L3QsNCy0LvQuNCy0LDQtdGCINGC0LXQsyDQutCw0L3QvtC90LjRh9C10YHQutC+0Lkg0YHRgtGA0LDQvdC40YbRiyA8bGluayByZWw9XCJjYW5vbmljYWxcIiBocmVmPVwiLi4uXCIgLz4uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdXJsIFVSTCDQutC+0YLQvtGA0YvQuSDQvdC10L7QsdGF0L7QtNC40LzQviDQuNGB0L/QvtC70YzQt9C+0LLQsNGC0Ywg0LIg0LrQsNGH0LXRgdGC0LLQtSDRgdGB0YvQu9C60LguXG4gICAgICovXG4gICAgcHVibGljIHNldENhbm9uaWNhbExpbmsodXJsOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgLy8g0KPQtNCw0LvRj9C10Lwg0YHRg9GJ0LXRgdGC0LLRg9GO0YnQuNC5IGxpbmsgY2Fub25pY2FsLlxuICAgICAgICBjb25zdCBleGlzdGluZ0xpbmsgPSB0aGlzLmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2xpbmtbcmVsPVwiY2Fub25pY2FsXCJdJyk7XG5cbiAgICAgICAgaWYgKGV4aXN0aW5nTGluaz8ucGFyZW50Tm9kZSkge1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDaGlsZChleGlzdGluZ0xpbmsucGFyZW50Tm9kZSwgZXhpc3RpbmdMaW5rKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vINCh0L7Qt9C00LDRkdC8INC4INGD0YHRgtCw0L3QsNCy0LvQuNCy0LDQtdC8INC90L7QstGL0Lkg0YLQtdCzLlxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1hc3NpZ25tZW50XG4gICAgICAgIGNvbnN0IGxpbmsgPSB0aGlzLnJlbmRlcmVyLmNyZWF0ZUVsZW1lbnQoJ2xpbmsnKTtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUobGluaywgJ3JlbCcsICdjYW5vbmljYWwnKTtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUobGluaywgJ2hyZWYnLCB1cmwpO1xuICAgICAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKHRoaXMuZG9jdW1lbnQuaGVhZCwgbGluayk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0KPRgdGC0LDQvdCw0LLQu9C40LLQsNC10YIgdGl0bGUt0LfQsNCz0L7Qu9C+0LLQvtC6INGB0YLRgNCw0L3QuNGG0YsuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdGl0bGUg0JfQsNCz0L7Qu9C+0LLQvtC6INGB0YLRgNCw0L3QuNGG0YsuXG4gICAgICogQHBhcmFtIGFwcGVuZERlZmF1bHRUaXRsZSDQpNC70LDQsyDQvdC10L7QsdGF0L7QtNC40LzQvtGB0YLQuCDQtNC+0LHQsNCy0LjRgtGMINC30LDQs9C+0LvQvtCy0L7QuiDQv9C+INGD0LzQvtC70YfQsNC90LjRjiDQsiDQutC+0L3QtdGGINC30LDQs9C+0LvQvtCy0LrQsCDRgdGC0YDQsNC90LjRhtGLLlxuICAgICAqL1xuICAgIHByaXZhdGUgc2V0UGFnZVRpdGxlKHRpdGxlOiBzdHJpbmcsIGFwcGVuZERlZmF1bHRUaXRsZTogYm9vbGVhbiA9IGZhbHNlKTogdm9pZCB7XG4gICAgICAgIHRoaXMudGl0bGVTZXJ2aWNlLnNldFRpdGxlKHRpdGxlICsgKGFwcGVuZERlZmF1bHRUaXRsZSA/IGAgLSAke3RoaXMuZGVmYXVsdFNlby50aXRsZX1gIDogJycpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQo9GB0YLQsNC90LDQstC70LjQstCw0LXRgiBtZXRhLdC+0L/QuNGB0LDQvdC40LUg0YHRgtGA0LDQvdC40YbRiy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBkZXNjcmlwdGlvbiBNZXRhLdC+0L/QuNGB0LDQvdC40LUg0YHRgtGA0LDQvdC40YbRiy5cbiAgICAgKi9cbiAgICBwcml2YXRlIHNldFBhZ2VNZXRhRGVzY3JpcHRpb24oZGVzY3JpcHRpb246IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLnNldFBhZ2VNZXRhQnlOYW1lKCdkZXNjcmlwdGlvbicsIGRlc2NyaXB0aW9uKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQo9GB0YLQsNC90LDQstC70LjQstCw0LXRgiBtZXRhLdC60LvRjtGH0LXQstGL0LUg0YHQu9C+0LLQsCDRgdGC0YDQsNC90LjRhtGLLlxuICAgICAqXG4gICAgICogQHBhcmFtIGtleXdvcmRzIE1ldGEt0LrQu9GO0YfQtdCy0YvQtSDRgdC70L7QstCwINGB0YLRgNCw0L3QuNGG0YsuXG4gICAgICovXG4gICAgcHJpdmF0ZSBzZXRQYWdlTWV0YUtleXdvcmRzKGtleXdvcmRzOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZXRQYWdlTWV0YUJ5TmFtZSgna2V5d29yZHMnLCBrZXl3b3Jkcyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0KPRgdGC0LDQvdCw0LLQu9C40LLQsNC10YIgT3BlbiBHcmFwaCBtZXRhLdGC0LXQs9C4INGB0YLRgNCw0L3QuNGG0Ysg0LTQu9GPINGB0L7RhtC40LDQu9GM0L3Ri9GFINGB0LXRgtC10LkuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdGl0bGUg0JfQsNCz0L7Qu9C+0LLQvtC6INGB0YLRgNCw0L3QuNGG0YsuXG4gICAgICogQHBhcmFtIGRlc2NyaXB0aW9uINCe0L/QuNGB0LDQvdC40LUg0YHRgtGA0LDQvdC40YbRiy5cbiAgICAgKiBAcGFyYW0gdXJsINCh0YHRi9C70LrQsCDQvdCwINGB0YLRgNCw0L3QuNGG0YMuXG4gICAgICogQHBhcmFtIGltZyDQmNC30L7QsdGA0LDQttC10L3QuNC1LlxuICAgICAqL1xuICAgIHByaXZhdGUgc2V0T3BlbkdyYXBoTWV0YVRhZ3ModGl0bGU6IHN0cmluZywgZGVzY3JpcHRpb246IHN0cmluZywgdXJsOiBzdHJpbmcsIGltZzogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2V0T3BlbkdyYXBoTWV0YUJ5UHJvcGVydHkoJ29nOnRpdGxlJywgdGl0bGUpO1xuICAgICAgICB0aGlzLnNldE9wZW5HcmFwaE1ldGFCeVByb3BlcnR5KCdvZzp1cmwnLCB1cmwpO1xuICAgICAgICB0aGlzLnNldE9wZW5HcmFwaE1ldGFCeVByb3BlcnR5KCdvZzppbWFnZScsIGltZyk7XG4gICAgICAgIHRoaXMuc2V0T3BlbkdyYXBoTWV0YUJ5UHJvcGVydHkoJ29nOmRlc2NyaXB0aW9uJywgZGVzY3JpcHRpb24pO1xuICAgICAgICB0aGlzLnNldE9wZW5HcmFwaE1ldGFCeVByb3BlcnR5KCdvZzp0eXBlJywgJ3dlYnNpdGUnKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQo9GB0YLQsNC90LDQstC70LjQstCw0LXRgiBtZXRhLdGC0LXQsyDRgdGC0YDQsNC90LjRhtGLINGBINGD0LrQsNC30LDQvdC90YvQvCDQuNC80LXQvdC10LwuXG4gICAgICog0JHRg9C00LXRgiDRgdC+0LfQtNCw0L0g0LjQu9C4INC+0LHQvdC+0LLQu9GR0L0g0LfQsNCz0L7Qu9C+0LLQvtC6INCy0LjQtNCwIGA8bWV0YSBuYW1lPVwie25hbWV9XCIgY29udGVudD1cIntjb250ZW50fVwiIC8+YFxuICAgICAqXG4gICAgICogQHBhcmFtIG5hbWUg0J3QsNC30LLQsNC90LjQtSDQt9Cw0LPQvtC70L7QstC60LAuXG4gICAgICogQHBhcmFtIGNvbnRlbnQg0KHQvtC00LXRgNC20LjQvNC+0LUg0LfQsNCz0L7Qu9C+0LLQutCwLlxuICAgICAqL1xuICAgIHByaXZhdGUgc2V0UGFnZU1ldGFCeU5hbWUobmFtZTogc3RyaW5nLCBjb250ZW50OiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5tZXRhU2VydmljZS51cGRhdGVUYWcoeyBuYW1lOiBuYW1lLCBjb250ZW50OiBjb250ZW50LCAnZGF0YS1ncm91cCc6IHRoaXMuZGF0YUdyb3VwU2VsZWN0b3IgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0KPRgdGC0LDQvdCw0LLQu9C40LLQsNC10YIgT3BlbiBHcmFwaCBtZXRhLdGC0LXQsyDQv9C+INGB0LLQvtC50YHRgtCy0YMg0LDRgtGA0LjQsdGD0YLQsCBwcm9wZXJ0eS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBwcm9wZXJ0eSDQodCy0L7QudGB0YLQstC+INCw0YLRgNC40LHRg9GC0LAuXG4gICAgICogQHBhcmFtIGNvbnRlbnQg0KHQvtC00LXRgNC20LjQvNC+0LUg0YLQtdCz0LAuXG4gICAgICovXG4gICAgcHJpdmF0ZSBzZXRPcGVuR3JhcGhNZXRhQnlQcm9wZXJ0eShwcm9wZXJ0eTogc3RyaW5nLCBjb250ZW50OiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5tZXRhU2VydmljZS51cGRhdGVUYWcoeyBwcm9wZXJ0eTogcHJvcGVydHksIGNvbnRlbnQ6IGNvbnRlbnQsICdkYXRhLWdyb3VwJzogdGhpcy5kYXRhR3JvdXBTZWxlY3RvciB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQo9GB0YLQsNC90LDQstC70LjQstCw0LXRgiBPcGVuIEdyYXBoINC80LXRgtCwLdGC0LXQsyDRgtC40L/QsCDQvtCx0YrQtdC60YLQsC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB0eXBlINCi0LjQvyDQvtCx0YrQtdC60YLQsC5cbiAgICAgKi9cbiAgICBwcml2YXRlIHNldFNoYXJlVHlwZSh0eXBlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZXRPcGVuR3JhcGhNZXRhQnlQcm9wZXJ0eSgnb2c6dHlwZScsIHR5cGUpO1xuICAgIH1cbn1cbiJdfQ==
271
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Mtc2VvLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NlcnZpY2VzL3NjLXNlby5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQWEsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUYsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFLekMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzVELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7QUFHNUM7O0dBRUc7QUFJSCxNQUFNLE9BQU8sWUFBWTtJQXdEckI7O09BRUc7SUFDSDtRQTFEQTs7V0FFRztRQUNhLDhCQUF5QixHQUF1QixJQUFJLFlBQVksRUFBUSxDQUFDO1FBRXpGOztXQUVHO1FBQ2MsZUFBVSxHQUF1QixNQUFNLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUUvRTs7V0FFRztRQUNjLFdBQU0sR0FBVyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFakQ7O1dBRUc7UUFDYyxTQUFJLEdBQVksTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRWpEOztXQUVHO1FBQ2MsZ0JBQVcsR0FBUyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFbEQ7O1dBRUc7UUFDYyxpQkFBWSxHQUFVLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVyRDs7V0FFRztRQUNjLHNCQUFpQixHQUFXLFVBQVUsQ0FBQztRQUV4RDs7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L0MsSUFBSSxDQUFDLDBCQUEwQixDQUFDLFVBQVUsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNqRCxJQUFJLENBQUMsMEJBQTBCLENBQUMsZ0JBQWdCLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDL0QsSUFBSSxDQUFDLDBCQUEwQixDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ssaUJBQWlCLENBQUMsSUFBWSxFQUFFLE9BQWU7UUFDbkQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLENBQUM7SUFDdkcsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ssMEJBQTBCLENBQUMsUUFBZ0IsRUFBRSxPQUFlO1FBQ2hFLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDO0lBQy9HLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ssWUFBWSxDQUFDLElBQVk7UUFDN0IsSUFBSSxDQUFDLDBCQUEwQixDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNyRCxDQUFDOytHQW5UUSxZQUFZO21IQUFaLFlBQVksY0FGVCxNQUFNOzs0RkFFVCxZQUFZO2tCQUh4QixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEV2ZW50RW1pdHRlciwgaW5qZWN0LCBJbmplY3RhYmxlLCBSZW5kZXJlcjIsIFJlbmRlcmVyRmFjdG9yeTIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1ldGEsIFRpdGxlIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQgeyBTY0lTZW8gfSBmcm9tICcuLi9jYXRhbG9nL2R0by9zYy1pLXNlbyc7XG5pbXBvcnQgeyBTY0lEZWZhdWx0UGFnZU1ldGEgfSBmcm9tICcuLi9jb25maWcvc2MtaS1kZWZhdWx0LXBhZ2UtbWV0YSc7XG5pbXBvcnQgeyBTY0lVcmxzIH0gZnJvbSAnLi4vY29uZmlnL3NjLWktdXJscyc7XG5pbXBvcnQgeyBTQ19DT01QQU5ZX05BTUUgfSBmcm9tICcuLi90b2tlbnMvc2MtY29tcGFueS1uYW1lJztcbmltcG9ydCB7IFNDX0RFRkFVTFRfUEFHRV9NRVRBIH0gZnJvbSAnLi4vdG9rZW5zL3NjLWRlZmF1bHQtcGFnZS1tZXRhJztcbmltcG9ydCB7IFNDX1VSTFMgfSBmcm9tICcuLi90b2tlbnMvc2MtdXJscyc7XG5pbXBvcnQgeyBSb2JvdHNUYWdUeXBlIH0gZnJvbSAnLi90eXBlcy9yb2JvdHMtdGFnLXR5cGUnO1xuXG4vKipcbiAqINCh0LXRgNCy0LjRgSDRg9C/0YDQsNCy0LvQtdC90LjRjyBTRU8t0L/QsNGA0LDQvNC10YLRgNCw0LzQuC5cbiAqL1xuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgU2NTZW9TZXJ2aWNlIHtcbiAgICAvKipcbiAgICAgKiDQodC+0LHRi9GC0LjQtSDRg9GB0YLQsNC90L7QstC60LggbWV0YS3RgtC10LPQvtCyINGB0YLRgNCw0L3QuNGG0YsuXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IGlzU2V0TWV0YVRhZ3NFdmVudEVtaXR0ZXI6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIC8qKlxuICAgICAqINCU0LDQvdC90YvQtSDQviDQvNC10YLQsC3QtNCw0L3QvdGL0YUg0YHRgtGA0LDQvdC40YbRiyDQv9C+INGD0LzQvtC70YfQsNC90LjRji5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IGRlZmF1bHRTZW86IFNjSURlZmF1bHRQYWdlTWV0YSA9IGluamVjdChTQ19ERUZBVUxUX1BBR0VfTUVUQSk7XG5cbiAgICAvKipcbiAgICAgKiDQodC10YDQstC40YEg0LzQsNGA0YjRgNGD0YLQuNC30LDRhtC40LguXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZXI6IFJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuXG4gICAgLyoqXG4gICAgICog0KHQv9C40YHQvtC6INGB0YHRi9C70L7QuiDQv9GA0LjQu9C+0LbQtdC90LjRjy5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IHVybHM6IFNjSVVybHMgPSBpbmplY3QoU0NfVVJMUyk7XG5cbiAgICAvKipcbiAgICAgKiDQodC10YDQstC40YEg0YPRgdGC0LDQvdC+0LLQutC4INC80LXRgtCw0LTQsNC90L3Ri9GFINGB0YLRgNCw0L3QuNGG0YsuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBtZXRhU2VydmljZTogTWV0YSA9IGluamVjdChNZXRhKTtcblxuICAgIC8qKlxuICAgICAqINCh0LXRgNCy0LjRgSDRg9C/0YDQsNCy0LvQtdC90LjRjyDQt9Cw0LPQvtC70L7QstC60L7QvCDRgdGC0YDQsNC90LjRhtGLLlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgdGl0bGVTZXJ2aWNlOiBUaXRsZSA9IGluamVjdChUaXRsZSk7XG5cbiAgICAvKipcbiAgICAgKiDQodC10LvQtdC60YLQvtGAINCz0YDRg9C/0L/RiyDQtNC70Y8g0YPRgdGC0LDQvdCw0LLQu9C40LLQsNC10LzRi9GFINC80LXRgtCw0YLQtdCz0L7Qsi5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IGRhdGFHcm91cFNlbGVjdG9yOiBzdHJpbmcgPSAnc2VvLXRhZ3MnO1xuXG4gICAgLyoqXG4gICAgICog0J7QsdGK0LXQutGCIHtAbGluayBEb2N1bWVudH0sINC/0YDQtdC00L7RgdGC0LDQstC70Y/RjtGJ0LjQuSDQtNC+0YHRgtGD0L8g0LogRE9NINGB0YLRgNCw0L3QuNGG0YsuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBkb2N1bWVudDogRG9jdW1lbnQgPSBpbmplY3QoRE9DVU1FTlQpO1xuXG4gICAgLyoqXG4gICAgICog0KTQsNCx0YDQuNC60LAg0LTQu9GPINGB0L7Qt9C00LDQvdC40Y8g0Y3QutC30LXQvNC/0LvRj9GA0L7QsiB7QGxpbmsgUmVuZGVyZXIyfS5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IHJlbmRlcmVyRmFjdG9yeTogUmVuZGVyZXJGYWN0b3J5MiA9IGluamVjdChSZW5kZXJlckZhY3RvcnkyKTtcblxuICAgIC8qKlxuICAgICAqINCt0LrQt9C10LzQv9C70Y/RgCB7QGxpbmsgUmVuZGVyZXIyfSDQtNC70Y8g0LHQtdC30L7Qv9Cw0YHQvdC+0Lkg0YDQsNCx0L7RgtGLINGBIERPTS5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IHJlbmRlcmVyOiBSZW5kZXJlcjIgPSB0aGlzLnJlbmRlcmVyRmFjdG9yeS5jcmVhdGVSZW5kZXJlcihudWxsLCBudWxsKTtcblxuICAgIC8qKlxuICAgICAqINCd0LDQt9Cy0LDQvdC40LUg0LrQvtC80L/QsNC90LjQuC5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbXBhbnlOYW1lOiBzdHJpbmcgPSBpbmplY3QoU0NfQ09NUEFOWV9OQU1FKTtcblxuICAgIC8qKlxuICAgICAqINCY0L3QuNGG0LjQsNC70LjQt9C40YDRg9C10YIg0Y3QutC30LXQvNC/0LvRj9GAINC60LvQsNGB0YHQsCB7QGxpbmsgU2NTZW9TZXJ2aWNlfS5cbiAgICAgKi9cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMuc2V0U2hhcmVUeXBlKCd3ZWJzaXRlJyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0KPRgdGC0LDQvdCw0LLQu9C40LLQsNC10YIgbWV0YS3RgtC10LPQuC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB0aXRsZSDQl9Cw0LPQvtC70L7QstC+0Log0YHRgtGA0LDQvdC40YbRiy5cbiAgICAgKiBAcGFyYW0gZGVzY3JpcHRpb24g0J7Qv9C40YHQsNC90LjQtSDRgdGC0YDQsNC90LjRhtGLLlxuICAgICAqIEBwYXJhbSBrZXl3b3JkcyDQmtC70Y7Rh9C10LLRi9C1INGB0LvQvtCy0LAg0YHRgtGA0LDQvdC40YbRiy5cbiAgICAgKiBAcGFyYW0gZW1pdEV2ZW50QWZ0ZXJTZXQg0J/RgNC40LfQvdCw0Log0YLQvtCz0L4sINC90LXQvtCx0YXQvtC00LjQvNC+INC70Lgg0LPQtdC90LXRgNC40YDQvtCy0LDRgtGMINGB0L7QsdGL0YLQuNC1LCDQv9C+0YHQu9C1INGD0YHRgtCw0L3QvtCy0LrQuCDRgtC10LPQvtCyLiDQn9C+INGD0LzQvtC70YfQsNC90LjRjiB7QGxpbmsgdHJ1ZX0uXG4gICAgICogQHBhcmFtIHJvYm90cyDQodC/0LjRgdC+0Logcm9ib3RzINGC0LXQs9C+0LIg0LTQu9GPINGB0YLRgNCw0L3QuNGG0YsuXG4gICAgICovXG4gICAgcHVibGljIHNldFBhZ2VNZXRhVGFncyhcbiAgICAgICAgdGl0bGU6IHN0cmluZyA9IHRoaXMuZGVmYXVsdFNlby50aXRsZSxcbiAgICAgICAgZGVzY3JpcHRpb246IHN0cmluZyA9IHRoaXMuZGVmYXVsdFNlby5kZXNjcmlwdGlvbixcbiAgICAgICAga2V5d29yZHM6IHN0cmluZyA9IHRoaXMuZGVmYXVsdFNlby5rZXl3b3JkcyxcbiAgICAgICAgZW1pdEV2ZW50QWZ0ZXJTZXQ6IGJvb2xlYW4gPSB0cnVlLFxuICAgICAgICByb2JvdHM6IFJvYm90c1RhZ1R5cGVbXSA9IFsnaW5kZXgnLCAnZm9sbG93J11cbiAgICApOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZXRQYWdlVGl0bGUodGl0bGUpO1xuICAgICAgICB0aGlzLnNldFBhZ2VNZXRhRGVzY3JpcHRpb24oZGVzY3JpcHRpb24pO1xuICAgICAgICB0aGlzLnNldFBhZ2VNZXRhS2V5d29yZHMoa2V5d29yZHMpO1xuXG4gICAgICAgIHRoaXMuc2V0UGFnZU1ldGFSb2JvdHMocm9ib3RzKTtcblxuICAgICAgICBpZiAoZW1pdEV2ZW50QWZ0ZXJTZXQpIHtcbiAgICAgICAgICAgIHRoaXMuaXNTZXRNZXRhVGFnc0V2ZW50RW1pdHRlci5lbWl0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQo9GB0YLQsNC90LDQstC70LjQstCw0LXRgiBPcGVuIEdyYXBoIG1ldGEt0YLQtdCz0LguXG4gICAgICpcbiAgICAgKiBAcGFyYW0gb2dUaXRsZSBPcGVuIEdyYXBoINC30LDQs9C+0LvQvtCy0L7Qui5cbiAgICAgKiBAcGFyYW0gb2dEZXNjcmlwdGlvbiBPcGVuIEdyYXBoINC+0L/QuNGB0LDQvdC40LUuXG4gICAgICogQHBhcmFtIG9nSW1nIE9wZW4gR3JhcGgg0LjQt9C+0LHRgNCw0LbQtdC90LjQtS5cbiAgICAgKiBAcGFyYW0gZW1pdEV2ZW50QWZ0ZXJTZXQg0J/RgNC40LfQvdCw0Log0YLQvtCz0L4sINC90LXQvtCx0YXQvtC00LjQvNC+INC70Lgg0LPQtdC90LXRgNC40YDQvtCy0LDRgtGMINGB0L7QsdGL0YLQuNC1LCDQv9C+0YHQu9C1INGD0YHRgtCw0L3QvtCy0LrQuCDRgtC10LPQvtCyLiDQn9C+INGD0LzQvtC70YfQsNC90LjRjiB7QGxpbmsgdHJ1ZX0uXG4gICAgICovXG4gICAgcHVibGljIHNldFBhZ2VPcGVuR3JhcGhNZXRhVGFncyhcbiAgICAgICAgb2dUaXRsZTogc3RyaW5nID0gdGhpcy5kZWZhdWx0U2VvLnRpdGxlLFxuICAgICAgICBvZ0Rlc2NyaXB0aW9uOiBzdHJpbmcgPSB0aGlzLmRlZmF1bHRTZW8uZGVzY3JpcHRpb24sXG4gICAgICAgIG9nSW1nOiBzdHJpbmcgPSB0aGlzLnVybHMubG9nb1VybCxcbiAgICAgICAgZW1pdEV2ZW50QWZ0ZXJTZXQ6IGJvb2xlYW4gPSB0cnVlXG4gICAgKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2V0T3BlbkdyYXBoTWV0YVRhZ3Mob2dUaXRsZSwgb2dEZXNjcmlwdGlvbiwgYCR7dGhpcy51cmxzLnNpdGVVcmx9JHt0aGlzLnJvdXRlci51cmx9YCwgb2dJbWcpO1xuXG4gICAgICAgIGlmIChlbWl0RXZlbnRBZnRlclNldCkge1xuICAgICAgICAgICAgdGhpcy5pc1NldE1ldGFUYWdzRXZlbnRFbWl0dGVyLmVtaXQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCj0YHRgtCw0L3QsNCy0LvQuNCy0LDQtdGCINCy0YHQtSBtZXRhLdGC0LXQs9C4INC40Lcg0L/RgNC40YjQtdC00YjQtdCz0L4g0LjRgdGC0L7Rh9C90LjQutCwLiDQldGB0LvQuCDQutCw0LrQvtCz0L4t0YLQviDRgtC10LPQsCDQvdC10YIsINCx0YPQtNC10YIg0YPRgdGC0LDQvdC+0LLQu9C10L3QviDQt9C90LDRh9C10L3QuNC1INC/0L4g0YPQvNC+0LvRh9Cw0L3QuNGOLlxuICAgICAqXG4gICAgICogQHBhcmFtIHJlc291cmNlINCY0YHRgtC+0YfQvdC40LogbWV0YSAtINGC0LXQs9C+0LIuXG4gICAgICogQHBhcmFtIGltZyDQmNC30L7QsdGA0LDQttC10L3QuNC1LiDQldGB0LvQuCDQvdC1INC/0YDQuNGI0LvQviwg0YLQviDQsdGD0LTQtdGCINGD0YHRgtCw0L3QvtCy0LvQtdC90L4g0LfQvdCw0YfQtdC90LjQtSDQv9C+INGD0LzQvtC70YfQsNC90LjRji5cbiAgICAgKiBAcGFyYW0gcm9ib3RzINCh0L/QuNGB0L7QuiByb2JvdHMg0YLQtdCz0L7QsiDQtNC70Y8g0YHRgtGA0LDQvdC40YbRiy5cbiAgICAgKi9cbiAgICBwdWJsaWMgc2V0TWV0YVRhZ3NGcm9tUmVzb3VyY2UocmVzb3VyY2U/OiBTY0lTZW8sIGltZzogc3RyaW5nID0gdGhpcy51cmxzLmxvZ29VcmwsIHJvYm90czogUm9ib3RzVGFnVHlwZVtdID0gWydpbmRleCcsICdmb2xsb3cnXSk6IHZvaWQge1xuICAgICAgICB0aGlzLnNldEFsbFBhZ2VNZXRhVGFncyhyZXNvdXJjZT8udGl0bGUsIHJlc291cmNlPy5kZXNjcmlwdGlvbiwgcmVzb3VyY2U/LmtleXdvcmRzLCBpbWcsIHJlc291cmNlPy5tZXRhLCByb2JvdHMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCj0YHRgtCw0L3QsNCy0LvQuNCy0LDQtdGCINCy0YHQtSBtZXRhLdGC0LXQs9C4INGB0YLRgNCw0L3QuNGG0Ysg0YHQviDQt9C90LDRh9C10L3QuNC10Lwg0L/QviDRg9C80L7Qu9GH0LDQvdC40Y4sINCy0L3QtdC00YDRj9GPINGC0YPQtNCwINC30LDQs9C+0LvQvtCy0L7Quiwg0LXRgdC70Lgg0L7QvSDQv9C10YDQtdC00LDQvS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB0aXRsZSDQl9Cw0LPQvtC70L7QstC+0Log0YHRgtGA0LDQvdC40YbRiy5cbiAgICAgKiBAcGFyYW0gcm9ib3RzINCh0L/QuNGB0L7QuiByb2JvdHMg0YLQtdCz0L7QsiDQtNC70Y8g0YHRgtGA0LDQvdC40YbRiy5cbiAgICAgKi9cbiAgICBwdWJsaWMgc2V0RGVmYXVsdEFsbFBhZ2VNZXRhVGFncyh0aXRsZTogc3RyaW5nID0gdGhpcy5kZWZhdWx0U2VvLnRpdGxlLCByb2JvdHM6IFJvYm90c1RhZ1R5cGVbXSA9IFsnaW5kZXgnLCAnZm9sbG93J10pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZXRBbGxQYWdlTWV0YVRhZ3MoYCR7dGl0bGV9IC0gJHt0aGlzLmNvbXBhbnlOYW1lfWAsIGAke3RpdGxlfSwgJHt0aGlzLmRlZmF1bHRTZW8uZGVzY3JpcHRpb259YCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIFtdLCByb2JvdHMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCj0YHRgtCw0L3QsNCy0LvQuNCy0LDQtdGCINCy0YHQtSBtZXRhLdGC0LXQs9C4INGB0YLRgNCw0L3QuNGG0Ysg0YHQviDQt9C90LDRh9C10L3QuNC10Lwg0L/QviDRg9C80L7Qu9GH0LDQvdC40Y4sINCy0L3QtdC00YDRj9GPINGC0YPQtNCwINC30LDQs9C+0LvQvtCy0L7Quiwg0LXRgdC70Lgg0L7QvSDQv9C10YDQtdC00LDQvS4g0KPRgdGC0LDQvdCw0LLQu9C40LLQsNC10YIg0LfQvdCw0YfQtdC90LjQtSBcItC90LUg0LjQvdC00LXQutGB0LjRgNC+0LLQsNGC0YxcIiDQtNC70Y8g0L/QvtC40YHQutC+0LLRi9GFINGA0L7QsdC+0YLQvtCyLlxuICAgICAqXG4gICAgICogQHBhcmFtIHRpdGxlINCX0LDQs9C+0LvQvtCy0L7QuiDRgdGC0YDQsNC90LjRhtGLLlxuICAgICAqL1xuICAgIHB1YmxpYyBzZXROb0luZGV4RGVmYXVsdEFsbFBhZ2VNZXRhVGFncyh0aXRsZTogc3RyaW5nID0gdGhpcy5kZWZhdWx0U2VvLnRpdGxlKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2V0QWxsUGFnZU1ldGFUYWdzKGAke3RpdGxlfSAtICR7dGhpcy5jb21wYW55TmFtZX1gLCBgJHt0aXRsZX0sICR7dGhpcy5kZWZhdWx0U2VvLmRlc2NyaXB0aW9ufWAsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBbXSwgWydub2luZGV4JywgJ25vZm9sbG93JywgJ25vYXJjaGl2ZSddKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQo9GB0YLQsNC90LDQstC70LjQstCw0LXRgiDQstGB0LUgbWV0YS3RgtC10LPQuCDRgdGC0YDQsNC90LjRhtGLLiDQldGB0LvQuCDQutCw0LrQvtC5LdC70LjQsdC+INC40Lcg0L/QsNGA0LDQvNC10YLRgNC+0LIg0L3QtSDRg9C60LDQt9Cw0L0sINC00LvRjyDQvdC10LPQviDRg9GB0YLQsNC90LDQstC70LjQstCw0LXRgtGB0Y8g0LfQvdCw0YfQtdC90LjQtSDQv9C+INGD0LzQvtC70YfQsNC90LjRji5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB0aXRsZSDQl9Cw0LPQvtC70L7QstC+0Log0YHRgtGA0LDQvdC40YbRiy5cbiAgICAgKiBAcGFyYW0gZGVzY3JpcHRpb24g0J7Qv9C40YHQsNC90LjQtSDRgdGC0YDQsNC90LjRhtGLLlxuICAgICAqIEBwYXJhbSBrZXl3b3JkcyDQmtC70Y7Rh9C10LLRi9C1INGB0LvQvtCy0LAg0YHRgtGA0LDQvdC40YbRiy5cbiAgICAgKiBAcGFyYW0gaW1nINCY0LfQvtCx0YDQsNC20LXQvdC40LUuXG4gICAgICogQHBhcmFtIG1ldGEg0JzQsNGB0YHQuNCyINC00L7Qv9C+0LvQvdC40YLQtdC70YzQvdGL0YUg0LfQvdCw0YfQtdC90LjQuSDQvNC10YLQsNGC0LXQs9C+0LIuXG4gICAgICogQHBhcmFtIHJvYm90cyDQodC/0LjRgdC+0Logcm9ib3RzINGC0LXQs9C+0LIg0LTQu9GPINGB0YLRgNCw0L3QuNGG0YsuXG4gICAgICovXG4gICAgcHVibGljIHNldEFsbFBhZ2VNZXRhVGFncyhcbiAgICAgICAgdGl0bGU6IHN0cmluZyA9IHRoaXMuZGVmYXVsdFNlby50aXRsZSxcbiAgICAgICAgZGVzY3JpcHRpb246IHN0cmluZyA9IHRoaXMuZGVmYXVsdFNlby5kZXNjcmlwdGlvbixcbiAgICAgICAga2V5d29yZHM6IHN0cmluZyA9IHRoaXMuZGVmYXVsdFNlby5rZXl3b3JkcyxcbiAgICAgICAgaW1nOiBzdHJpbmcgPSB0aGlzLnVybHMubG9nb1VybCxcbiAgICAgICAgbWV0YTogU2NJU2VvWydtZXRhJ10gPSBbXSxcbiAgICAgICAgcm9ib3RzOiBSb2JvdHNUYWdUeXBlW10gPSBbJ2luZGV4JywgJ2ZvbGxvdyddXG4gICAgKTogdm9pZCB7XG4gICAgICAgIHRoaXMucmVtb3ZlTWV0YVRhZ3MoKTtcbiAgICAgICAgdGhpcy5zZXRQYWdlVGl0bGUodGl0bGUpO1xuICAgICAgICB0aGlzLnNldFBhZ2VNZXRhRGVzY3JpcHRpb24oZGVzY3JpcHRpb24pO1xuICAgICAgICB0aGlzLnNldFBhZ2VNZXRhS2V5d29yZHMoa2V5d29yZHMpO1xuICAgICAgICB0aGlzLnNldE9wZW5HcmFwaE1ldGFUYWdzKHRpdGxlLCBkZXNjcmlwdGlvbiwgYCR7dGhpcy51cmxzLnNpdGVVcmx9JHt0aGlzLnJvdXRlci51cmx9YCwgaW1nKTtcbiAgICAgICAgbWV0YS5mb3JFYWNoKCh0YWcpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2V0UGFnZU1ldGFCeU5hbWUodGFnLm5hbWUsIHRhZy5jb250ZW50KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuc2V0UGFnZU1ldGFSb2JvdHMocm9ib3RzKTtcblxuICAgICAgICB0aGlzLmlzU2V0TWV0YVRhZ3NFdmVudEVtaXR0ZXIuZW1pdCgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCj0YHRgtCw0L3QsNCy0LvQuNCy0LDQtdGCIG1ldGEt0YLQtdCzIHJvYm90cyDQtNC70Y8g0YHRgtGA0LDQvdC40YbRiy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSByb2JvdHMg0KHQv9C40YHQvtC6IHJvYm90cyDRgtC10LPQvtCyINC00LvRjyDRgdGC0YDQsNC90LjRhtGLLlxuICAgICAqL1xuICAgIHB1YmxpYyBzZXRQYWdlTWV0YVJvYm90cyhyb2JvdHM6IFJvYm90c1RhZ1R5cGVbXSk6IHZvaWQge1xuICAgICAgICB0aGlzLnNldFBhZ2VNZXRhQnlOYW1lKCdyb2JvdHMnLCByb2JvdHMuam9pbignLCAnKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0KPQtNCw0LvRj9C10YIg0LLRgdC1INGD0YHRgtCw0L3QvtCy0LvQtdC90L3Ri9C1IG1ldGEt0YLQtdCz0LguXG4gICAgICovXG4gICAgcHVibGljIHJlbW92ZU1ldGFUYWdzKCk6IHZvaWQge1xuICAgICAgICBjb25zdCB0YWdzID0gdGhpcy5kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsPEhUTUxNZXRhRWxlbWVudD4oYG1ldGFbZGF0YS1ncm91cD1cIiR7dGhpcy5kYXRhR3JvdXBTZWxlY3Rvcn1cIl1gKTtcblxuICAgICAgICB0YWdzLmZvckVhY2goKHRhZykgPT4ge1xuICAgICAgICAgICAgdGhpcy5tZXRhU2VydmljZS5yZW1vdmVUYWdFbGVtZW50KHRhZyk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCS0L7Qt9Cy0YDQsNGJ0LDQtdGCINGB0LPQtdC90LXRgNC40YDQvtCy0LDQvdC90YvQuSBTRU8tcmVzb3VyY2Ug0YEg0YPQutCw0LfQsNC90L3Ri9C80Lgg0L/QsNGA0LDQvNC10YLRgNCw0LzQuC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBzZW8g0JTQsNC90L3Ri9C1IFNFTyDRgNC10YHRg9GA0YHQsC5cbiAgICAgKiBAcGFyYW0gZGVmYXVsdFRpdGxlINCX0LDQs9C+0LvQvtCy0L7QuiDRgdGC0YDQsNC90LjRhtGLINC40YHQv9C+0LvRjNC30YPQtdC80YvQuSDQsiDRgdC70YPRh9Cw0LUg0L7RgtGB0YPRgtGB0YLQstC40Y8g0LfQsNCz0L7Qu9C+0LLQutCwINCyIFNFTy3RgNC10YHRg9GA0YHQtS5cbiAgICAgKiBAcGFyYW0gZGVmYXVsdERlc2NyaXB0aW9uINCe0L/QuNGB0LDQvdC40LUg0YHRgtGA0LDQvdC40YbRiyDQuNGB0L/QvtC70YzQt9GD0LXQvNC+0LUg0LIg0YHQu9GD0YfQsNC1INC+0YLRgdGD0YLRgdGC0LLQuNGPINC+0L/QuNGB0LDQvdC40Y8g0LIgU0VPLdGA0LXRgdGD0YDRgdC1LlxuICAgICAqIEBwYXJhbSBkZWZhdWx0S2V5V29yZHMg0JrQu9GO0YfQtdCy0YvQtSDRgdC70L7QstCwINGB0YLRgNCw0L3QuNGG0Ysg0LjRgdC/0L7Qu9GM0LfRg9C10LzRi9C1INCyINGB0LvRg9GH0LDQtSDQvtGC0YHRg9GC0YHRgtCy0LjRjyDQutC70Y7Rh9C10LLRi9GFINGB0LvQvtCyINCyIFNFTy3RgNC10YHRg9GA0YHQtS5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2VuZXJhdGVTZW9SZXNvdXJjZShcbiAgICAgICAgc2VvOiBTY0lTZW8gfCB1bmRlZmluZWQsXG4gICAgICAgIGRlZmF1bHRUaXRsZTogc3RyaW5nLFxuICAgICAgICBkZWZhdWx0RGVzY3JpcHRpb246IHN0cmluZyA9IHRoaXMuZGVmYXVsdFNlby5kZXNjcmlwdGlvbixcbiAgICAgICAgZGVmYXVsdEtleVdvcmRzOiBzdHJpbmcgPSB0aGlzLmRlZmF1bHRTZW8ua2V5d29yZHNcbiAgICApOiBTY0lTZW8ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IHNlbz8udGl0bGUgPz8gZGVmYXVsdFRpdGxlLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IHNlbz8uZGVzY3JpcHRpb24gPz8gZGVmYXVsdERlc2NyaXB0aW9uLFxuICAgICAgICAgICAga2V5d29yZHM6IHNlbz8ua2V5d29yZHMgPz8gZGVmYXVsdEtleVdvcmRzLFxuICAgICAgICAgICAgbWV0YTogc2VvPy5tZXRhLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCj0YHRgtCw0L3QsNCy0LvQuNCy0LDQtdGCINGC0LXQsyDQutCw0L3QvtC90LjRh9C10YHQutC+0Lkg0YHRgtGA0LDQvdC40YbRiyA8bGluayByZWw9XCJjYW5vbmljYWxcIiBocmVmPVwiLi4uXCIgLz4uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdXJsIFVSTCDQutC+0YLQvtGA0YvQuSDQvdC10L7QsdGF0L7QtNC40LzQviDQuNGB0L/QvtC70YzQt9C+0LLQsNGC0Ywg0LIg0LrQsNGH0LXRgdGC0LLQtSDRgdGB0YvQu9C60LguXG4gICAgICovXG4gICAgcHVibGljIHNldENhbm9uaWNhbExpbmsodXJsOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgLy8g0KPQtNCw0LvRj9C10Lwg0YHRg9GJ0LXRgdGC0LLRg9GO0YnQuNC5IGxpbmsgY2Fub25pY2FsLlxuICAgICAgICBjb25zdCBleGlzdGluZ0xpbmsgPSB0aGlzLmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2xpbmtbcmVsPVwiY2Fub25pY2FsXCJdJyk7XG5cbiAgICAgICAgaWYgKGV4aXN0aW5nTGluaz8ucGFyZW50Tm9kZSkge1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDaGlsZChleGlzdGluZ0xpbmsucGFyZW50Tm9kZSwgZXhpc3RpbmdMaW5rKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vINCh0L7Qt9C00LDRkdC8INC4INGD0YHRgtCw0L3QsNCy0LvQuNCy0LDQtdC8INC90L7QstGL0Lkg0YLQtdCzLlxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1hc3NpZ25tZW50XG4gICAgICAgIGNvbnN0IGxpbmsgPSB0aGlzLnJlbmRlcmVyLmNyZWF0ZUVsZW1lbnQoJ2xpbmsnKTtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUobGluaywgJ3JlbCcsICdjYW5vbmljYWwnKTtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUobGluaywgJ2hyZWYnLCB1cmwpO1xuICAgICAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKHRoaXMuZG9jdW1lbnQuaGVhZCwgbGluayk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0KPRgdGC0LDQvdCw0LLQu9C40LLQsNC10YIgdGl0bGUt0LfQsNCz0L7Qu9C+0LLQvtC6INGB0YLRgNCw0L3QuNGG0YsuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdGl0bGUg0JfQsNCz0L7Qu9C+0LLQvtC6INGB0YLRgNCw0L3QuNGG0YsuXG4gICAgICogQHBhcmFtIGFwcGVuZERlZmF1bHRUaXRsZSDQpNC70LDQsyDQvdC10L7QsdGF0L7QtNC40LzQvtGB0YLQuCDQtNC+0LHQsNCy0LjRgtGMINC30LDQs9C+0LvQvtCy0L7QuiDQv9C+INGD0LzQvtC70YfQsNC90LjRjiDQsiDQutC+0L3QtdGGINC30LDQs9C+0LvQvtCy0LrQsCDRgdGC0YDQsNC90LjRhtGLLlxuICAgICAqL1xuICAgIHByaXZhdGUgc2V0UGFnZVRpdGxlKHRpdGxlOiBzdHJpbmcsIGFwcGVuZERlZmF1bHRUaXRsZTogYm9vbGVhbiA9IGZhbHNlKTogdm9pZCB7XG4gICAgICAgIHRoaXMudGl0bGVTZXJ2aWNlLnNldFRpdGxlKHRpdGxlICsgKGFwcGVuZERlZmF1bHRUaXRsZSA/IGAgLSAke3RoaXMuZGVmYXVsdFNlby50aXRsZX1gIDogJycpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQo9GB0YLQsNC90LDQstC70LjQstCw0LXRgiBtZXRhLdC+0L/QuNGB0LDQvdC40LUg0YHRgtGA0LDQvdC40YbRiy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBkZXNjcmlwdGlvbiBNZXRhLdC+0L/QuNGB0LDQvdC40LUg0YHRgtGA0LDQvdC40YbRiy5cbiAgICAgKi9cbiAgICBwcml2YXRlIHNldFBhZ2VNZXRhRGVzY3JpcHRpb24oZGVzY3JpcHRpb246IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLnNldFBhZ2VNZXRhQnlOYW1lKCdkZXNjcmlwdGlvbicsIGRlc2NyaXB0aW9uKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQo9GB0YLQsNC90LDQstC70LjQstCw0LXRgiBtZXRhLdC60LvRjtGH0LXQstGL0LUg0YHQu9C+0LLQsCDRgdGC0YDQsNC90LjRhtGLLlxuICAgICAqXG4gICAgICogQHBhcmFtIGtleXdvcmRzIE1ldGEt0LrQu9GO0YfQtdCy0YvQtSDRgdC70L7QstCwINGB0YLRgNCw0L3QuNGG0YsuXG4gICAgICovXG4gICAgcHJpdmF0ZSBzZXRQYWdlTWV0YUtleXdvcmRzKGtleXdvcmRzOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZXRQYWdlTWV0YUJ5TmFtZSgna2V5d29yZHMnLCBrZXl3b3Jkcyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0KPRgdGC0LDQvdCw0LLQu9C40LLQsNC10YIgT3BlbiBHcmFwaCBtZXRhLdGC0LXQs9C4INGB0YLRgNCw0L3QuNGG0Ysg0LTQu9GPINGB0L7RhtC40LDQu9GM0L3Ri9GFINGB0LXRgtC10LkuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdGl0bGUg0JfQsNCz0L7Qu9C+0LLQvtC6INGB0YLRgNCw0L3QuNGG0YsuXG4gICAgICogQHBhcmFtIGRlc2NyaXB0aW9uINCe0L/QuNGB0LDQvdC40LUg0YHRgtGA0LDQvdC40YbRiy5cbiAgICAgKiBAcGFyYW0gdXJsINCh0YHRi9C70LrQsCDQvdCwINGB0YLRgNCw0L3QuNGG0YMuXG4gICAgICogQHBhcmFtIGltZyDQmNC30L7QsdGA0LDQttC10L3QuNC1LlxuICAgICAqL1xuICAgIHByaXZhdGUgc2V0T3BlbkdyYXBoTWV0YVRhZ3ModGl0bGU6IHN0cmluZywgZGVzY3JpcHRpb246IHN0cmluZywgdXJsOiBzdHJpbmcsIGltZzogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2V0T3BlbkdyYXBoTWV0YUJ5UHJvcGVydHkoJ29nOnRpdGxlJywgdGl0bGUpO1xuICAgICAgICB0aGlzLnNldE9wZW5HcmFwaE1ldGFCeVByb3BlcnR5KCdvZzp1cmwnLCB1cmwpO1xuICAgICAgICB0aGlzLnNldE9wZW5HcmFwaE1ldGFCeVByb3BlcnR5KCdvZzppbWFnZScsIGltZyk7XG4gICAgICAgIHRoaXMuc2V0T3BlbkdyYXBoTWV0YUJ5UHJvcGVydHkoJ29nOmRlc2NyaXB0aW9uJywgZGVzY3JpcHRpb24pO1xuICAgICAgICB0aGlzLnNldE9wZW5HcmFwaE1ldGFCeVByb3BlcnR5KCdvZzp0eXBlJywgJ3dlYnNpdGUnKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQo9GB0YLQsNC90LDQstC70LjQstCw0LXRgiBtZXRhLdGC0LXQsyDRgdGC0YDQsNC90LjRhtGLINGBINGD0LrQsNC30LDQvdC90YvQvCDQuNC80LXQvdC10LwuXG4gICAgICog0JHRg9C00LXRgiDRgdC+0LfQtNCw0L0g0LjQu9C4INC+0LHQvdC+0LLQu9GR0L0g0LfQsNCz0L7Qu9C+0LLQvtC6INCy0LjQtNCwIGA8bWV0YSBuYW1lPVwie25hbWV9XCIgY29udGVudD1cIntjb250ZW50fVwiIC8+YFxuICAgICAqXG4gICAgICogQHBhcmFtIG5hbWUg0J3QsNC30LLQsNC90LjQtSDQt9Cw0LPQvtC70L7QstC60LAuXG4gICAgICogQHBhcmFtIGNvbnRlbnQg0KHQvtC00LXRgNC20LjQvNC+0LUg0LfQsNCz0L7Qu9C+0LLQutCwLlxuICAgICAqL1xuICAgIHByaXZhdGUgc2V0UGFnZU1ldGFCeU5hbWUobmFtZTogc3RyaW5nLCBjb250ZW50OiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5tZXRhU2VydmljZS51cGRhdGVUYWcoeyBuYW1lOiBuYW1lLCBjb250ZW50OiBjb250ZW50LCAnZGF0YS1ncm91cCc6IHRoaXMuZGF0YUdyb3VwU2VsZWN0b3IgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0KPRgdGC0LDQvdCw0LLQu9C40LLQsNC10YIgT3BlbiBHcmFwaCBtZXRhLdGC0LXQsyDQv9C+INGB0LLQvtC50YHRgtCy0YMg0LDRgtGA0LjQsdGD0YLQsCBwcm9wZXJ0eS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBwcm9wZXJ0eSDQodCy0L7QudGB0YLQstC+INCw0YLRgNC40LHRg9GC0LAuXG4gICAgICogQHBhcmFtIGNvbnRlbnQg0KHQvtC00LXRgNC20LjQvNC+0LUg0YLQtdCz0LAuXG4gICAgICovXG4gICAgcHJpdmF0ZSBzZXRPcGVuR3JhcGhNZXRhQnlQcm9wZXJ0eShwcm9wZXJ0eTogc3RyaW5nLCBjb250ZW50OiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5tZXRhU2VydmljZS51cGRhdGVUYWcoeyBwcm9wZXJ0eTogcHJvcGVydHksIGNvbnRlbnQ6IGNvbnRlbnQsICdkYXRhLWdyb3VwJzogdGhpcy5kYXRhR3JvdXBTZWxlY3RvciB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQo9GB0YLQsNC90LDQstC70LjQstCw0LXRgiBPcGVuIEdyYXBoINC80LXRgtCwLdGC0LXQsyDRgtC40L/QsCDQvtCx0YrQtdC60YLQsC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB0eXBlINCi0LjQvyDQvtCx0YrQtdC60YLQsC5cbiAgICAgKi9cbiAgICBwcml2YXRlIHNldFNoYXJlVHlwZSh0eXBlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZXRPcGVuR3JhcGhNZXRhQnlQcm9wZXJ0eSgnb2c6dHlwZScsIHR5cGUpO1xuICAgIH1cbn1cbiJdfQ==
@@ -5011,7 +5011,7 @@ class ScSeoService {
5011
5011
  * @param defaultDescription Описание страницы используемое в случае отсутствия описания в SEO-ресурсе.
5012
5012
  * @param defaultKeyWords Ключевые слова страницы используемые в случае отсутствия ключевых слов в SEO-ресурсе.
5013
5013
  */
5014
- getGenerateSeoResource(seo, defaultTitle, defaultDescription = this.defaultSeo.description, defaultKeyWords = this.defaultSeo.keywords) {
5014
+ generateSeoResource(seo, defaultTitle, defaultDescription = this.defaultSeo.description, defaultKeyWords = this.defaultSeo.keywords) {
5015
5015
  return {
5016
5016
  title: seo?.title ?? defaultTitle,
5017
5017
  description: seo?.description ?? defaultDescription,
@@ -5114,20 +5114,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
5114
5114
  }]
5115
5115
  }], ctorParameters: () => [] });
5116
5116
 
5117
- /**
5118
- * Устанавливает SEO-теги для страниц каталога.
5119
- *
5120
- * @param seoService Сервис для работы с SEO.
5121
- * @param name Название страницы.
5122
- * @param seo SEO-теги.
5123
- * @param image Ссылка на основное изображение.
5124
- */
5125
- const setSeoTags = (seoService, name, seo, image) => {
5126
- const companyInfo = inject(SC_COMPANY_INFO);
5127
- const catalogMeta = inject(SC_CATALOG_PAGE_META);
5128
- const seoResource = seoService.getGenerateSeoResource(seo, `${name} - Купить в ${companyInfo.name}`, `${name} - Купить по выгодным ценам в ${companyInfo.name}`, `${name}, ${catalogMeta.keywords}`);
5129
- seoService.setMetaTagsFromResource(seoResource, image);
5130
- };
5131
5117
  /**
5132
5118
  * Создает SEO-guard для указанного сервиса и метода получения данных.
5133
5119
  *
@@ -5138,23 +5124,27 @@ const setSeoTags = (seoService, name, seo, image) => {
5138
5124
  const createSeoGuard = (getDataFunction, setCanonical = false) => {
5139
5125
  // eslint-disable-next-line sonarjs/function-return-type
5140
5126
  return ({ paramMap }, state) => {
5141
- const seoService = inject(ScSeoService);
5142
- const mediaImageTransformerPipe = inject(ScMediaImageTransformerPipe);
5143
5127
  const recId = paramMap.get('productIdOrSlug') ?? paramMap.get('categoryIdOrSlug') ?? paramMap.get('categorySlug');
5144
5128
  if (!recId) {
5145
5129
  return false;
5146
5130
  }
5131
+ const seoService = inject(ScSeoService);
5132
+ const companyInfo = inject(SC_COMPANY_INFO);
5133
+ const catalogMeta = inject(SC_CATALOG_PAGE_META);
5134
+ const mediaImageTransformerPipe = inject(ScMediaImageTransformerPipe);
5135
+ const idOrSlugInRoute = inject(SC_ID_OR_SLUG_IN_ROUTE);
5136
+ const { siteUrl } = inject(SC_URLS);
5147
5137
  return getDataFunction(recId).pipe(filter$1(tuiIsPresent), tap$1(({ id, name, seo, image, slug }) => {
5148
- setSeoTags(seoService, name, seo, mediaImageTransformerPipe.transform(image, true));
5149
- const idOrSlugInRoute = inject(SC_ID_OR_SLUG_IN_ROUTE);
5150
- // В том случае, если используется slug для формирования ссылок, то необходимо сформировать кононическую ссылку
5151
- // на страницу в которой используется slug не id).
5138
+ // Формируем и устанавливаем метатеги страницы.
5139
+ const seoResource = seoService.generateSeoResource(seo, `${name} - Купить в ${companyInfo.name}`, `${name} - Купить по выгодным ценам в ${companyInfo.name}`, `${name}, ${catalogMeta.keywords}`);
5140
+ seoService.setMetaTagsFromResource(seoResource, mediaImageTransformerPipe.transform(image, true));
5141
+ // В том случае, если используется slug для формирования ссылок, то необходимо сформировать кононическую
5142
+ // ссылку на страницу в которой используется slug (а не id).
5152
5143
  if (setCanonical && idOrSlugInRoute === 'slug' && id && slug) {
5153
5144
  const canonicalPath = state.url
5154
5145
  .split('/')
5155
5146
  .map((segment) => (segment === id.toString() ? slug : segment))
5156
5147
  .join('/');
5157
- const { siteUrl } = inject(SC_URLS);
5158
5148
  seoService.setCanonicalLink(`${siteUrl}${canonicalPath}`);
5159
5149
  }
5160
5150
  }), map$1(TUI_TRUE_HANDLER), catchError$1(() => of(true)), takeUntilDestroyed());