UNPKG

@anansi/webpack-config

Version:
203 lines (201 loc) 22 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault").default; exports.__esModule = true; exports.default = getStyleRules; var _autoprefixer = _interopRequireDefault(require("autoprefixer")); var _miniCssExtractPlugin = _interopRequireDefault(require("mini-css-extract-plugin")); var _path = _interopRequireDefault(require("path")); var _postcssPresetEnv = _interopRequireDefault(require("postcss-preset-env")); var _ramda = require("ramda"); const getCSSLoaders = ({ mode, target, cssExtractOptions }) => { const miniCssExtractPluginLoader = { loader: _miniCssExtractPlugin.default.loader, options: { emit: !target?.includes?.('node') } }; const loaders = [{ loader: require.resolve('css-loader'), options: mode === 'development' ? { sourceMap: true, importLoaders: 1, modules: { mode: 'icss' } } : { importLoaders: 1, modules: { mode: 'icss' } } }, { loader: require.resolve('postcss-loader'), options: { postcssOptions: { plugins: [(0, _autoprefixer.default)(), (0, _postcssPresetEnv.default)()] } } }]; return cssExtractOptions === false ? loaders : [miniCssExtractPluginLoader, ...loaders]; }; const getSASSLoaders = ({ sassResources, sassOptions }) => { const loaders = [{ loader: require.resolve('sass-loader'), options: { sassOptions } }]; if (sassResources) { loaders.push({ loader: require.resolve('sass-resources-loader'), options: { resources: sassResources, hoistUseStatements: true } }); } return loaders; }; function getStyleRules({ rootPath, basePath = 'src', libraryInclude = (0, _ramda.always)(false), libraryExclude = (0, _ramda.always)(false), cssModulesOptions = {}, sassOptions = { outputStyle: 'expanded' }, sassResources, globalStyleDir, mode, target, cssExtractOptions }) { const absoluteBasePath = _path.default.join(rootPath, basePath); const cssLoaders = getCSSLoaders({ mode, target, cssExtractOptions }); const cssModuleLoaders = cssLoaders.map(loader => { if (/($|\/)css-loader/.test(loader.loader)) { return { ...loader, options: { ...loader.options, modules: { exportLocalsConvention: 'camelCase', ...(process.env.NODE_ENV === 'testing' ? { localIdentName: '[name]__[local]' } : {}), ...cssModulesOptions } } }; } return loader; }); // we don't need to find it if they specified the directory let foundSass = sassOptions?.implementation; try { if (!foundSass) foundSass = require.resolve('sass') || require.resolve('sass-embedded'); } catch { foundSass = sassOptions?.implementation; if (sassOptions !== false) { console.warn('`sass` or `sass-embedded` packages not found. SASS cannot be used.'); } } const sassLoaders = sassOptions === false || !foundSass ? [] : getSASSLoaders({ sassResources, sassOptions }); const excludeCSSProcess = [libraryExclude]; // global styles if (globalStyleDir !== false) { const globalStyleRegex = new RegExp(`${globalStyleDir}/`); excludeCSSProcess.unshift(globalStyleRegex); } return { test: /\.s?css$/i, oneOf: [ // css modules (local styles) sassOptions !== false && { test: /\.scss$/i, include: [absoluteBasePath, libraryInclude], exclude: excludeCSSProcess, use: [...cssModuleLoaders, ...sassLoaders] }, // css-in-js like linaria do not use css-modules { test: /\.wyw-in-js\.css$/i, include: [absoluteBasePath, libraryInclude], exclude: excludeCSSProcess, use: cssLoaders }, // plain css as css-modules { test: /\.css$/i, include: [absoluteBasePath, /\.storybook/, libraryInclude], exclude: [...excludeCSSProcess, /\.wyw-in-js\.css$/i], use: cssModuleLoaders }, // global styles globalStyleDir !== false && { test: sassOptions === false ? /\.css$/i : /\.s?css$/i, include: [absoluteBasePath], exclude: [sassOptions === false ? /\.module\.css$/i : /\.module\.s?css$/i, new RegExp(`^((?!(${globalStyleDir}/|node_modules/)).)*$`)], use: [...cssLoaders, ...sassLoaders], // Don't consider CSS imports dead code even if the // containing package claims to have no side effects. // Remove this when webpack adds a warning or an error for this. // See https://github.com/webpack/webpack/issues/6571 sideEffects: true }, globalStyleDir !== false && { test: sassOptions === false ? /\.module\.css$/i : /\.module\.s?css$/i, include: [absoluteBasePath], exclude: [new RegExp(`^((?!(${globalStyleDir}/|node_modules/)).)*$`)], use: [...cssModuleLoaders, ...sassLoaders] }, // css-in-js like linaria do not use css-modules - 3beta.14 and below { test: /\.css$/i, include: [/node_modules\/\.cache/], exclude: [absoluteBasePath, libraryInclude], use: cssLoaders }, // package css { test: /\.css$/i, include: [/node_modules/], use: cssModuleLoaders.slice(0, -1).map(loader => { if (/($|\/)css-loader/.test(loader.loader)) { return { ...loader, options: { ...loader.options, modules: { ...loader.options.modules, auto: true, ...cssModulesOptions } } }; } return loader; }), // Don't consider CSS imports dead code even if the // containing package claims to have no side effects. // Remove this when webpack adds a warning or an error for this. // See https://github.com/webpack/webpack/issues/6571 sideEffects: !target?.includes?.('node') }].filter(rule => rule) }; } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYXV0b3ByZWZpeGVyIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfbWluaUNzc0V4dHJhY3RQbHVnaW4iLCJfcGF0aCIsIl9wb3N0Y3NzUHJlc2V0RW52IiwiX3JhbWRhIiwiZ2V0Q1NTTG9hZGVycyIsIm1vZGUiLCJ0YXJnZXQiLCJjc3NFeHRyYWN0T3B0aW9ucyIsIm1pbmlDc3NFeHRyYWN0UGx1Z2luTG9hZGVyIiwibG9hZGVyIiwiTWluaUNzc0V4dHJhY3RQbHVnaW4iLCJvcHRpb25zIiwiZW1pdCIsImluY2x1ZGVzIiwibG9hZGVycyIsInJlc29sdmUiLCJzb3VyY2VNYXAiLCJpbXBvcnRMb2FkZXJzIiwibW9kdWxlcyIsInBvc3Rjc3NPcHRpb25zIiwicGx1Z2lucyIsImF1dG9wcmVmaXhlciIsImNzc1ByZXNldEVudiIsImdldFNBU1NMb2FkZXJzIiwic2Fzc1Jlc291cmNlcyIsInNhc3NPcHRpb25zIiwicHVzaCIsInJlc291cmNlcyIsImhvaXN0VXNlU3RhdGVtZW50cyIsImdldFN0eWxlUnVsZXMiLCJyb290UGF0aCIsImJhc2VQYXRoIiwibGlicmFyeUluY2x1ZGUiLCJhbHdheXMiLCJsaWJyYXJ5RXhjbHVkZSIsImNzc01vZHVsZXNPcHRpb25zIiwib3V0cHV0U3R5bGUiLCJnbG9iYWxTdHlsZURpciIsImFic29sdXRlQmFzZVBhdGgiLCJwYXRoIiwiam9pbiIsImNzc0xvYWRlcnMiLCJjc3NNb2R1bGVMb2FkZXJzIiwibWFwIiwidGVzdCIsImV4cG9ydExvY2Fsc0NvbnZlbnRpb24iLCJwcm9jZXNzIiwiZW52IiwiTk9ERV9FTlYiLCJsb2NhbElkZW50TmFtZSIsImZvdW5kU2FzcyIsImltcGxlbWVudGF0aW9uIiwiY29uc29sZSIsIndhcm4iLCJzYXNzTG9hZGVycyIsImV4Y2x1ZGVDU1NQcm9jZXNzIiwiZ2xvYmFsU3R5bGVSZWdleCIsIlJlZ0V4cCIsInVuc2hpZnQiLCJvbmVPZiIsImluY2x1ZGUiLCJleGNsdWRlIiwidXNlIiwic2lkZUVmZmVjdHMiLCJzbGljZSIsImF1dG8iLCJmaWx0ZXIiLCJydWxlIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Jhc2UvY3NzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhdXRvcHJlZml4ZXIgZnJvbSAnYXV0b3ByZWZpeGVyJztcbmltcG9ydCBNaW5pQ3NzRXh0cmFjdFBsdWdpbiBmcm9tICdtaW5pLWNzcy1leHRyYWN0LXBsdWdpbic7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCBjc3NQcmVzZXRFbnYgZnJvbSAncG9zdGNzcy1wcmVzZXQtZW52JztcbmltcG9ydCB7IGFsd2F5cyB9IGZyb20gJ3JhbWRhJztcblxuY29uc3QgZ2V0Q1NTTG9hZGVycyA9ICh7IG1vZGUsIHRhcmdldCwgY3NzRXh0cmFjdE9wdGlvbnMgfSkgPT4ge1xuICBjb25zdCBtaW5pQ3NzRXh0cmFjdFBsdWdpbkxvYWRlciA9IHtcbiAgICBsb2FkZXI6IE1pbmlDc3NFeHRyYWN0UGx1Z2luLmxvYWRlcixcbiAgICBvcHRpb25zOiB7IGVtaXQ6ICF0YXJnZXQ/LmluY2x1ZGVzPy4oJ25vZGUnKSB9LFxuICB9O1xuXG4gIGNvbnN0IGxvYWRlcnMgPSBbXG4gICAge1xuICAgICAgbG9hZGVyOiByZXF1aXJlLnJlc29sdmUoJ2Nzcy1sb2FkZXInKSxcbiAgICAgIG9wdGlvbnM6XG4gICAgICAgIG1vZGUgPT09ICdkZXZlbG9wbWVudCcgP1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHNvdXJjZU1hcDogdHJ1ZSxcbiAgICAgICAgICAgIGltcG9ydExvYWRlcnM6IDEsXG4gICAgICAgICAgICBtb2R1bGVzOiB7XG4gICAgICAgICAgICAgIG1vZGU6ICdpY3NzJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfVxuICAgICAgICA6IHtcbiAgICAgICAgICAgIGltcG9ydExvYWRlcnM6IDEsXG4gICAgICAgICAgICBtb2R1bGVzOiB7XG4gICAgICAgICAgICAgIG1vZGU6ICdpY3NzJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICB9LFxuICAgIHtcbiAgICAgIGxvYWRlcjogcmVxdWlyZS5yZXNvbHZlKCdwb3N0Y3NzLWxvYWRlcicpLFxuICAgICAgb3B0aW9uczoge1xuICAgICAgICBwb3N0Y3NzT3B0aW9uczoge1xuICAgICAgICAgIHBsdWdpbnM6IFthdXRvcHJlZml4ZXIoKSwgY3NzUHJlc2V0RW52KCldLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9LFxuICBdO1xuXG4gIHJldHVybiBjc3NFeHRyYWN0T3B0aW9ucyA9PT0gZmFsc2UgPyBsb2FkZXJzIDogKFxuICAgICAgW21pbmlDc3NFeHRyYWN0UGx1Z2luTG9hZGVyLCAuLi5sb2FkZXJzXVxuICAgICk7XG59O1xuXG5jb25zdCBnZXRTQVNTTG9hZGVycyA9ICh7IHNhc3NSZXNvdXJjZXMsIHNhc3NPcHRpb25zIH0pID0+IHtcbiAgY29uc3QgbG9hZGVycyA9IFtcbiAgICB7XG4gICAgICBsb2FkZXI6IHJlcXVpcmUucmVzb2x2ZSgnc2Fzcy1sb2FkZXInKSxcbiAgICAgIG9wdGlvbnM6IHsgc2Fzc09wdGlvbnMgfSxcbiAgICB9LFxuICBdO1xuICBpZiAoc2Fzc1Jlc291cmNlcykge1xuICAgIGxvYWRlcnMucHVzaCh7XG4gICAgICBsb2FkZXI6IHJlcXVpcmUucmVzb2x2ZSgnc2Fzcy1yZXNvdXJjZXMtbG9hZGVyJyksXG4gICAgICBvcHRpb25zOiB7XG4gICAgICAgIHJlc291cmNlczogc2Fzc1Jlc291cmNlcyxcbiAgICAgICAgaG9pc3RVc2VTdGF0ZW1lbnRzOiB0cnVlLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuICByZXR1cm4gbG9hZGVycztcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldFN0eWxlUnVsZXMoe1xuICByb290UGF0aCxcbiAgYmFzZVBhdGggPSAnc3JjJyxcbiAgbGlicmFyeUluY2x1ZGUgPSBhbHdheXMoZmFsc2UpLFxuICBsaWJyYXJ5RXhjbHVkZSA9IGFsd2F5cyhmYWxzZSksXG4gIGNzc01vZHVsZXNPcHRpb25zID0ge30sXG4gIHNhc3NPcHRpb25zID0geyBvdXRwdXRTdHlsZTogJ2V4cGFuZGVkJyB9LFxuICBzYXNzUmVzb3VyY2VzLFxuICBnbG9iYWxTdHlsZURpcixcbiAgbW9kZSxcbiAgdGFyZ2V0LFxuICBjc3NFeHRyYWN0T3B0aW9ucyxcbn0pIHtcbiAgY29uc3QgYWJzb2x1dGVCYXNlUGF0aCA9IHBhdGguam9pbihyb290UGF0aCwgYmFzZVBhdGgpO1xuICBjb25zdCBjc3NMb2FkZXJzID0gZ2V0Q1NTTG9hZGVycyh7IG1vZGUsIHRhcmdldCwgY3NzRXh0cmFjdE9wdGlvbnMgfSk7XG4gIGNvbnN0IGNzc01vZHVsZUxvYWRlcnMgPSBjc3NMb2FkZXJzLm1hcChsb2FkZXIgPT4ge1xuICAgIGlmICgvKCR8XFwvKWNzcy1sb2FkZXIvLnRlc3QobG9hZGVyLmxvYWRlcikpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmxvYWRlcixcbiAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgIC4uLmxvYWRlci5vcHRpb25zLFxuICAgICAgICAgIG1vZHVsZXM6IHtcbiAgICAgICAgICAgIGV4cG9ydExvY2Fsc0NvbnZlbnRpb246ICdjYW1lbENhc2UnLFxuICAgICAgICAgICAgLi4uKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAndGVzdGluZycgP1xuICAgICAgICAgICAgICB7IGxvY2FsSWRlbnROYW1lOiAnW25hbWVdX19bbG9jYWxdJyB9XG4gICAgICAgICAgICA6IHt9KSxcbiAgICAgICAgICAgIC4uLmNzc01vZHVsZXNPcHRpb25zLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gbG9hZGVyO1xuICB9KTtcbiAgLy8gd2UgZG9uJ3QgbmVlZCB0byBmaW5kIGl0IGlmIHRoZXkgc3BlY2lmaWVkIHRoZSBkaXJlY3RvcnlcbiAgbGV0IGZvdW5kU2FzcyA9IHNhc3NPcHRpb25zPy5pbXBsZW1lbnRhdGlvbjtcbiAgdHJ5IHtcbiAgICBpZiAoIWZvdW5kU2FzcylcbiAgICAgIGZvdW5kU2FzcyA9IHJlcXVpcmUucmVzb2x2ZSgnc2FzcycpIHx8IHJlcXVpcmUucmVzb2x2ZSgnc2Fzcy1lbWJlZGRlZCcpO1xuICB9IGNhdGNoIHtcbiAgICBmb3VuZFNhc3MgPSBzYXNzT3B0aW9ucz8uaW1wbGVtZW50YXRpb247XG4gICAgaWYgKHNhc3NPcHRpb25zICE9PSBmYWxzZSkge1xuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAnYHNhc3NgIG9yIGBzYXNzLWVtYmVkZGVkYCBwYWNrYWdlcyBub3QgZm91bmQuIFNBU1MgY2Fubm90IGJlIHVzZWQuJyxcbiAgICAgICk7XG4gICAgfVxuICB9XG4gIGNvbnN0IHNhc3NMb2FkZXJzID1cbiAgICBzYXNzT3B0aW9ucyA9PT0gZmFsc2UgfHwgIWZvdW5kU2FzcyA/XG4gICAgICBbXVxuICAgIDogZ2V0U0FTU0xvYWRlcnMoeyBzYXNzUmVzb3VyY2VzLCBzYXNzT3B0aW9ucyB9KTtcbiAgY29uc3QgZXhjbHVkZUNTU1Byb2Nlc3MgPSBbbGlicmFyeUV4Y2x1ZGVdO1xuXG4gIC8vIGdsb2JhbCBzdHlsZXNcbiAgaWYgKGdsb2JhbFN0eWxlRGlyICE9PSBmYWxzZSkge1xuICAgIGNvbnN0IGdsb2JhbFN0eWxlUmVnZXggPSBuZXcgUmVnRXhwKGAke2dsb2JhbFN0eWxlRGlyfS9gKTtcbiAgICBleGNsdWRlQ1NTUHJvY2Vzcy51bnNoaWZ0KGdsb2JhbFN0eWxlUmVnZXgpO1xuICB9XG4gIHJldHVybiB7XG4gICAgdGVzdDogL1xcLnM/Y3NzJC9pLFxuICAgIG9uZU9mOiBbXG4gICAgICAvLyBjc3MgbW9kdWxlcyAobG9jYWwgc3R5bGVzKVxuICAgICAgc2Fzc09wdGlvbnMgIT09IGZhbHNlICYmIHtcbiAgICAgICAgdGVzdDogL1xcLnNjc3MkL2ksXG4gICAgICAgIGluY2x1ZGU6IFthYnNvbHV0ZUJhc2VQYXRoLCBsaWJyYXJ5SW5jbHVkZV0sXG4gICAgICAgIGV4Y2x1ZGU6IGV4Y2x1ZGVDU1NQcm9jZXNzLFxuICAgICAgICB1c2U6IFsuLi5jc3NNb2R1bGVMb2FkZXJzLCAuLi5zYXNzTG9hZGVyc10sXG4gICAgICB9LFxuICAgICAgLy8gY3NzLWluLWpzIGxpa2UgbGluYXJpYSBkbyBub3QgdXNlIGNzcy1tb2R1bGVzXG4gICAgICB7XG4gICAgICAgIHRlc3Q6IC9cXC53eXctaW4tanNcXC5jc3MkL2ksXG4gICAgICAgIGluY2x1ZGU6IFthYnNvbHV0ZUJhc2VQYXRoLCBsaWJyYXJ5SW5jbHVkZV0sXG4gICAgICAgIGV4Y2x1ZGU6IGV4Y2x1ZGVDU1NQcm9jZXNzLFxuICAgICAgICB1c2U6IGNzc0xvYWRlcnMsXG4gICAgICB9LFxuICAgICAgLy8gcGxhaW4gY3NzIGFzIGNzcy1tb2R1bGVzXG4gICAgICB7XG4gICAgICAgIHRlc3Q6IC9cXC5jc3MkL2ksXG4gICAgICAgIGluY2x1ZGU6IFthYnNvbHV0ZUJhc2VQYXRoLCAvXFwuc3Rvcnlib29rLywgbGlicmFyeUluY2x1ZGVdLFxuICAgICAgICBleGNsdWRlOiBbLi4uZXhjbHVkZUNTU1Byb2Nlc3MsIC9cXC53eXctaW4tanNcXC5jc3MkL2ldLFxuICAgICAgICB1c2U6IGNzc01vZHVsZUxvYWRlcnMsXG4gICAgICB9LFxuICAgICAgLy8gZ2xvYmFsIHN0eWxlc1xuICAgICAgZ2xvYmFsU3R5bGVEaXIgIT09IGZhbHNlICYmIHtcbiAgICAgICAgdGVzdDogc2Fzc09wdGlvbnMgPT09IGZhbHNlID8gL1xcLmNzcyQvaSA6IC9cXC5zP2NzcyQvaSxcbiAgICAgICAgaW5jbHVkZTogW2Fic29sdXRlQmFzZVBhdGhdLFxuICAgICAgICBleGNsdWRlOiBbXG4gICAgICAgICAgc2Fzc09wdGlvbnMgPT09IGZhbHNlID8gL1xcLm1vZHVsZVxcLmNzcyQvaSA6IC9cXC5tb2R1bGVcXC5zP2NzcyQvaSxcbiAgICAgICAgICBuZXcgUmVnRXhwKGBeKCg/ISgke2dsb2JhbFN0eWxlRGlyfS98bm9kZV9tb2R1bGVzLykpLikqJGApLFxuICAgICAgICBdLFxuICAgICAgICB1c2U6IFsuLi5jc3NMb2FkZXJzLCAuLi5zYXNzTG9hZGVyc10sXG4gICAgICAgIC8vIERvbid0IGNvbnNpZGVyIENTUyBpbXBvcnRzIGRlYWQgY29kZSBldmVuIGlmIHRoZVxuICAgICAgICAvLyBjb250YWluaW5nIHBhY2thZ2UgY2xhaW1zIHRvIGhhdmUgbm8gc2lkZSBlZmZlY3RzLlxuICAgICAgICAvLyBSZW1vdmUgdGhpcyB3aGVuIHdlYnBhY2sgYWRkcyBhIHdhcm5pbmcgb3IgYW4gZXJyb3IgZm9yIHRoaXMuXG4gICAgICAgIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vd2VicGFjay93ZWJwYWNrL2lzc3Vlcy82NTcxXG4gICAgICAgIHNpZGVFZmZlY3RzOiB0cnVlLFxuICAgICAgfSxcbiAgICAgIGdsb2JhbFN0eWxlRGlyICE9PSBmYWxzZSAmJiB7XG4gICAgICAgIHRlc3Q6IHNhc3NPcHRpb25zID09PSBmYWxzZSA/IC9cXC5tb2R1bGVcXC5jc3MkL2kgOiAvXFwubW9kdWxlXFwucz9jc3MkL2ksXG4gICAgICAgIGluY2x1ZGU6IFthYnNvbHV0ZUJhc2VQYXRoXSxcbiAgICAgICAgZXhjbHVkZTogW25ldyBSZWdFeHAoYF4oKD8hKCR7Z2xvYmFsU3R5bGVEaXJ9L3xub2RlX21vZHVsZXMvKSkuKSokYCldLFxuICAgICAgICB1c2U6IFsuLi5jc3NNb2R1bGVMb2FkZXJzLCAuLi5zYXNzTG9hZGVyc10sXG4gICAgICB9LFxuICAgICAgLy8gY3NzLWluLWpzIGxpa2UgbGluYXJpYSBkbyBub3QgdXNlIGNzcy1tb2R1bGVzIC0gM2JldGEuMTQgYW5kIGJlbG93XG4gICAgICB7XG4gICAgICAgIHRlc3Q6IC9cXC5jc3MkL2ksXG4gICAgICAgIGluY2x1ZGU6IFsvbm9kZV9tb2R1bGVzXFwvXFwuY2FjaGUvXSxcbiAgICAgICAgZXhjbHVkZTogW2Fic29sdXRlQmFzZVBhdGgsIGxpYnJhcnlJbmNsdWRlXSxcbiAgICAgICAgdXNlOiBjc3NMb2FkZXJzLFxuICAgICAgfSxcbiAgICAgIC8vIHBhY2thZ2UgY3NzXG4gICAgICB7XG4gICAgICAgIHRlc3Q6IC9cXC5jc3MkL2ksXG4gICAgICAgIGluY2x1ZGU6IFsvbm9kZV9tb2R1bGVzL10sXG4gICAgICAgIHVzZTogY3NzTW9kdWxlTG9hZGVycy5zbGljZSgwLCAtMSkubWFwKGxvYWRlciA9PiB7XG4gICAgICAgICAgaWYgKC8oJHxcXC8pY3NzLWxvYWRlci8udGVzdChsb2FkZXIubG9hZGVyKSkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgLi4ubG9hZGVyLFxuICAgICAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICAgICAgLi4ubG9hZGVyLm9wdGlvbnMsXG4gICAgICAgICAgICAgICAgbW9kdWxlczoge1xuICAgICAgICAgICAgICAgICAgLi4ubG9hZGVyLm9wdGlvbnMubW9kdWxlcyxcbiAgICAgICAgICAgICAgICAgIGF1dG86IHRydWUsXG4gICAgICAgICAgICAgICAgICAuLi5jc3NNb2R1bGVzT3B0aW9ucyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGxvYWRlcjtcbiAgICAgICAgfSksXG4gICAgICAgIC8vIERvbid0IGNvbnNpZGVyIENTUyBpbXBvcnRzIGRlYWQgY29kZSBldmVuIGlmIHRoZVxuICAgICAgICAvLyBjb250YWluaW5nIHBhY2thZ2UgY2xhaW1zIHRvIGhhdmUgbm8gc2lkZSBlZmZlY3RzLlxuICAgICAgICAvLyBSZW1vdmUgdGhpcyB3aGVuIHdlYnBhY2sgYWRkcyBhIHdhcm5pbmcgb3IgYW4gZXJyb3IgZm9yIHRoaXMuXG4gICAgICAgIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vd2VicGFjay93ZWJwYWNrL2lzc3Vlcy82NTcxXG4gICAgICAgIHNpZGVFZmZlY3RzOiAhdGFyZ2V0Py5pbmNsdWRlcz8uKCdub2RlJyksXG4gICAgICB9LFxuICAgIF0uZmlsdGVyKHJ1bGUgPT4gcnVsZSksXG4gIH07XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsSUFBQUEsYUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMscUJBQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFFLEtBQUEsR0FBQUgsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFHLGlCQUFBLEdBQUFKLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBSSxNQUFBLEdBQUFKLE9BQUE7QUFFQSxNQUFNSyxhQUFhLEdBQUdBLENBQUM7RUFBRUMsSUFBSTtFQUFFQyxNQUFNO0VBQUVDO0FBQWtCLENBQUMsS0FBSztFQUM3RCxNQUFNQywwQkFBMEIsR0FBRztJQUNqQ0MsTUFBTSxFQUFFQyw2QkFBb0IsQ0FBQ0QsTUFBTTtJQUNuQ0UsT0FBTyxFQUFFO01BQUVDLElBQUksRUFBRSxDQUFDTixNQUFNLEVBQUVPLFFBQVEsR0FBRyxNQUFNO0lBQUU7RUFDL0MsQ0FBQztFQUVELE1BQU1DLE9BQU8sR0FBRyxDQUNkO0lBQ0VMLE1BQU0sRUFBRVYsT0FBTyxDQUFDZ0IsT0FBTyxDQUFDLFlBQVksQ0FBQztJQUNyQ0osT0FBTyxFQUNMTixJQUFJLEtBQUssYUFBYSxHQUNwQjtNQUNFVyxTQUFTLEVBQUUsSUFBSTtNQUNmQyxhQUFhLEVBQUUsQ0FBQztNQUNoQkMsT0FBTyxFQUFFO1FBQ1BiLElBQUksRUFBRTtNQUNSO0lBQ0YsQ0FBQyxHQUNEO01BQ0VZLGFBQWEsRUFBRSxDQUFDO01BQ2hCQyxPQUFPLEVBQUU7UUFDUGIsSUFBSSxFQUFFO01BQ1I7SUFDRjtFQUNOLENBQUMsRUFDRDtJQUNFSSxNQUFNLEVBQUVWLE9BQU8sQ0FBQ2dCLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQztJQUN6Q0osT0FBTyxFQUFFO01BQ1BRLGNBQWMsRUFBRTtRQUNkQyxPQUFPLEVBQUUsQ0FBQyxJQUFBQyxxQkFBWSxFQUFDLENBQUMsRUFBRSxJQUFBQyx5QkFBWSxFQUFDLENBQUM7TUFDMUM7SUFDRjtFQUNGLENBQUMsQ0FDRjtFQUVELE9BQU9mLGlCQUFpQixLQUFLLEtBQUssR0FBR08sT0FBTyxHQUN4QyxDQUFDTiwwQkFBMEIsRUFBRSxHQUFHTSxPQUFPLENBQ3hDO0FBQ0wsQ0FBQztBQUVELE1BQU1TLGNBQWMsR0FBR0EsQ0FBQztFQUFFQyxhQUFhO0VBQUVDO0FBQVksQ0FBQyxLQUFLO0VBQ3pELE1BQU1YLE9BQU8sR0FBRyxDQUNkO0lBQ0VMLE1BQU0sRUFBRVYsT0FBTyxDQUFDZ0IsT0FBTyxDQUFDLGFBQWEsQ0FBQztJQUN0Q0osT0FBTyxFQUFFO01BQUVjO0lBQVk7RUFDekIsQ0FBQyxDQUNGO0VBQ0QsSUFBSUQsYUFBYSxFQUFFO0lBQ2pCVixPQUFPLENBQUNZLElBQUksQ0FBQztNQUNYakIsTUFBTSxFQUFFVixPQUFPLENBQUNnQixPQUFPLENBQUMsdUJBQXVCLENBQUM7TUFDaERKLE9BQU8sRUFBRTtRQUNQZ0IsU0FBUyxFQUFFSCxhQUFhO1FBQ3hCSSxrQkFBa0IsRUFBRTtNQUN0QjtJQUNGLENBQUMsQ0FBQztFQUNKO0VBQ0EsT0FBT2QsT0FBTztBQUNoQixDQUFDO0FBRWMsU0FBU2UsYUFBYUEsQ0FBQztFQUNwQ0MsUUFBUTtFQUNSQyxRQUFRLEdBQUcsS0FBSztFQUNoQkMsY0FBYyxHQUFHLElBQUFDLGFBQU0sRUFBQyxLQUFLLENBQUM7RUFDOUJDLGNBQWMsR0FBRyxJQUFBRCxhQUFNLEVBQUMsS0FBSyxDQUFDO0VBQzlCRSxpQkFBaUIsR0FBRyxDQUFDLENBQUM7RUFDdEJWLFdBQVcsR0FBRztJQUFFVyxXQUFXLEVBQUU7RUFBVyxDQUFDO0VBQ3pDWixhQUFhO0VBQ2JhLGNBQWM7RUFDZGhDLElBQUk7RUFDSkMsTUFBTTtFQUNOQztBQUNGLENBQUMsRUFBRTtFQUNELE1BQU0rQixnQkFBZ0IsR0FBR0MsYUFBSSxDQUFDQyxJQUFJLENBQUNWLFFBQVEsRUFBRUMsUUFBUSxDQUFDO0VBQ3RELE1BQU1VLFVBQVUsR0FBR3JDLGFBQWEsQ0FBQztJQUFFQyxJQUFJO0lBQUVDLE1BQU07SUFBRUM7RUFBa0IsQ0FBQyxDQUFDO0VBQ3JFLE1BQU1tQyxnQkFBZ0IsR0FBR0QsVUFBVSxDQUFDRSxHQUFHLENBQUNsQyxNQUFNLElBQUk7SUFDaEQsSUFBSSxrQkFBa0IsQ0FBQ21DLElBQUksQ0FBQ25DLE1BQU0sQ0FBQ0EsTUFBTSxDQUFDLEVBQUU7TUFDMUMsT0FBTztRQUNMLEdBQUdBLE1BQU07UUFDVEUsT0FBTyxFQUFFO1VBQ1AsR0FBR0YsTUFBTSxDQUFDRSxPQUFPO1VBQ2pCTyxPQUFPLEVBQUU7WUFDUDJCLHNCQUFzQixFQUFFLFdBQVc7WUFDbkMsSUFBSUMsT0FBTyxDQUFDQyxHQUFHLENBQUNDLFFBQVEsS0FBSyxTQUFTLEdBQ3BDO2NBQUVDLGNBQWMsRUFBRTtZQUFrQixDQUFDLEdBQ3JDLENBQUMsQ0FBQyxDQUFDO1lBQ0wsR0FBR2Q7VUFDTDtRQUNGO01BQ0YsQ0FBQztJQUNIO0lBQ0EsT0FBTzFCLE1BQU07RUFDZixDQUFDLENBQUM7RUFDRjtFQUNBLElBQUl5QyxTQUFTLEdBQUd6QixXQUFXLEVBQUUwQixjQUFjO0VBQzNDLElBQUk7SUFDRixJQUFJLENBQUNELFNBQVMsRUFDWkEsU0FBUyxHQUFHbkQsT0FBTyxDQUFDZ0IsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJaEIsT0FBTyxDQUFDZ0IsT0FBTyxDQUFDLGVBQWUsQ0FBQztFQUMzRSxDQUFDLENBQUMsTUFBTTtJQUNObUMsU0FBUyxHQUFHekIsV0FBVyxFQUFFMEIsY0FBYztJQUN2QyxJQUFJMUIsV0FBVyxLQUFLLEtBQUssRUFBRTtNQUN6QjJCLE9BQU8sQ0FBQ0MsSUFBSSxDQUNWLG9FQUNGLENBQUM7SUFDSDtFQUNGO0VBQ0EsTUFBTUMsV0FBVyxHQUNmN0IsV0FBVyxLQUFLLEtBQUssSUFBSSxDQUFDeUIsU0FBUyxHQUNqQyxFQUFFLEdBQ0YzQixjQUFjLENBQUM7SUFBRUMsYUFBYTtJQUFFQztFQUFZLENBQUMsQ0FBQztFQUNsRCxNQUFNOEIsaUJBQWlCLEdBQUcsQ0FBQ3JCLGNBQWMsQ0FBQzs7RUFFMUM7RUFDQSxJQUFJRyxjQUFjLEtBQUssS0FBSyxFQUFFO0lBQzVCLE1BQU1tQixnQkFBZ0IsR0FBRyxJQUFJQyxNQUFNLENBQUMsR0FBR3BCLGNBQWMsR0FBRyxDQUFDO0lBQ3pEa0IsaUJBQWlCLENBQUNHLE9BQU8sQ0FBQ0YsZ0JBQWdCLENBQUM7RUFDN0M7RUFDQSxPQUFPO0lBQ0xaLElBQUksRUFBRSxXQUFXO0lBQ2pCZSxLQUFLLEVBQUU7SUFDTDtJQUNBbEMsV0FBVyxLQUFLLEtBQUssSUFBSTtNQUN2Qm1CLElBQUksRUFBRSxVQUFVO01BQ2hCZ0IsT0FBTyxFQUFFLENBQUN0QixnQkFBZ0IsRUFBRU4sY0FBYyxDQUFDO01BQzNDNkIsT0FBTyxFQUFFTixpQkFBaUI7TUFDMUJPLEdBQUcsRUFBRSxDQUFDLEdBQUdwQixnQkFBZ0IsRUFBRSxHQUFHWSxXQUFXO0lBQzNDLENBQUM7SUFDRDtJQUNBO01BQ0VWLElBQUksRUFBRSxvQkFBb0I7TUFDMUJnQixPQUFPLEVBQUUsQ0FBQ3RCLGdCQUFnQixFQUFFTixjQUFjLENBQUM7TUFDM0M2QixPQUFPLEVBQUVOLGlCQUFpQjtNQUMxQk8sR0FBRyxFQUFFckI7SUFDUCxDQUFDO0lBQ0Q7SUFDQTtNQUNFRyxJQUFJLEVBQUUsU0FBUztNQUNmZ0IsT0FBTyxFQUFFLENBQUN0QixnQkFBZ0IsRUFBRSxhQUFhLEVBQUVOLGNBQWMsQ0FBQztNQUMxRDZCLE9BQU8sRUFBRSxDQUFDLEdBQUdOLGlCQUFpQixFQUFFLG9CQUFvQixDQUFDO01BQ3JETyxHQUFHLEVBQUVwQjtJQUNQLENBQUM7SUFDRDtJQUNBTCxjQUFjLEtBQUssS0FBSyxJQUFJO01BQzFCTyxJQUFJLEVBQUVuQixXQUFXLEtBQUssS0FBSyxHQUFHLFNBQVMsR0FBRyxXQUFXO01BQ3JEbUMsT0FBTyxFQUFFLENBQUN0QixnQkFBZ0IsQ0FBQztNQUMzQnVCLE9BQU8sRUFBRSxDQUNQcEMsV0FBVyxLQUFLLEtBQUssR0FBRyxpQkFBaUIsR0FBRyxtQkFBbUIsRUFDL0QsSUFBSWdDLE1BQU0sQ0FBQyxTQUFTcEIsY0FBYyx1QkFBdUIsQ0FBQyxDQUMzRDtNQUNEeUIsR0FBRyxFQUFFLENBQUMsR0FBR3JCLFVBQVUsRUFBRSxHQUFHYSxXQUFXLENBQUM7TUFDcEM7TUFDQTtNQUNBO01BQ0E7TUFDQVMsV0FBVyxFQUFFO0lBQ2YsQ0FBQyxFQUNEMUIsY0FBYyxLQUFLLEtBQUssSUFBSTtNQUMxQk8sSUFBSSxFQUFFbkIsV0FBVyxLQUFLLEtBQUssR0FBRyxpQkFBaUIsR0FBRyxtQkFBbUI7TUFDckVtQyxPQUFPLEVBQUUsQ0FBQ3RCLGdCQUFnQixDQUFDO01BQzNCdUIsT0FBTyxFQUFFLENBQUMsSUFBSUosTUFBTSxDQUFDLFNBQVNwQixjQUFjLHVCQUF1QixDQUFDLENBQUM7TUFDckV5QixHQUFHLEVBQUUsQ0FBQyxHQUFHcEIsZ0JBQWdCLEVBQUUsR0FBR1ksV0FBVztJQUMzQyxDQUFDO0lBQ0Q7SUFDQTtNQUNFVixJQUFJLEVBQUUsU0FBUztNQUNmZ0IsT0FBTyxFQUFFLENBQUMsdUJBQXVCLENBQUM7TUFDbENDLE9BQU8sRUFBRSxDQUFDdkIsZ0JBQWdCLEVBQUVOLGNBQWMsQ0FBQztNQUMzQzhCLEdBQUcsRUFBRXJCO0lBQ1AsQ0FBQztJQUNEO0lBQ0E7TUFDRUcsSUFBSSxFQUFFLFNBQVM7TUFDZmdCLE9BQU8sRUFBRSxDQUFDLGNBQWMsQ0FBQztNQUN6QkUsR0FBRyxFQUFFcEIsZ0JBQWdCLENBQUNzQixLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUNyQixHQUFHLENBQUNsQyxNQUFNLElBQUk7UUFDL0MsSUFBSSxrQkFBa0IsQ0FBQ21DLElBQUksQ0FBQ25DLE1BQU0sQ0FBQ0EsTUFBTSxDQUFDLEVBQUU7VUFDMUMsT0FBTztZQUNMLEdBQUdBLE1BQU07WUFDVEUsT0FBTyxFQUFFO2NBQ1AsR0FBR0YsTUFBTSxDQUFDRSxPQUFPO2NBQ2pCTyxPQUFPLEVBQUU7Z0JBQ1AsR0FBR1QsTUFBTSxDQUFDRSxPQUFPLENBQUNPLE9BQU87Z0JBQ3pCK0MsSUFBSSxFQUFFLElBQUk7Z0JBQ1YsR0FBRzlCO2NBQ0w7WUFDRjtVQUNGLENBQUM7UUFDSDtRQUNBLE9BQU8xQixNQUFNO01BQ2YsQ0FBQyxDQUFDO01BQ0Y7TUFDQTtNQUNBO01BQ0E7TUFDQXNELFdBQVcsRUFBRSxDQUFDekQsTUFBTSxFQUFFTyxRQUFRLEdBQUcsTUFBTTtJQUN6QyxDQUFDLENBQ0YsQ0FBQ3FELE1BQU0sQ0FBQ0MsSUFBSSxJQUFJQSxJQUFJO0VBQ3ZCLENBQUM7QUFDSCIsImlnbm9yZUxpc3QiOltdfQ==