@anansi/webpack-config
Version:
Production ready webpack for React
136 lines (135 loc) • 20.1 kB
JavaScript
;
var _interopRequireWildcard = require("@babel/runtime-corejs3/helpers/interopRequireWildcard").default;
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault").default;
exports.__esModule = true;
var _exportNames = {
makeStorybookConfigGenerator: true,
makeConfig: true
};
exports.makeConfig = makeConfig;
exports.makeStorybookConfigGenerator = void 0;
var _ramda = require("ramda");
var _webpack = _interopRequireDefault(require("webpack"));
var _webpackBundleAnalyzer = require("webpack-bundle-analyzer");
var _base = _interopRequireWildcard(require("./base"));
Object.keys(_base).forEach(function (key) {
if (key === "default" || key === "__esModule") return;
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
if (key in exports && exports[key] === _base[key]) return;
exports[key] = _base[key];
});
var _check = _interopRequireDefault(require("./check"));
var _dev = _interopRequireDefault(require("./dev"));
var _library = _interopRequireDefault(require("./library"));
var _nobuild = _interopRequireDefault(require("./nobuild"));
var _node = _interopRequireDefault(require("./node"));
var _prod = _interopRequireDefault(require("./prod"));
var _storybook = _interopRequireDefault(require("./storybook"));
exports.makeStorybookConfigGenerator = _storybook.default;
function makeConfig(options) {
return (env, argv) => {
if (argv?.mode && !process.env.NODE_ENV) process.env.NODE_ENV = argv?.mode;
options = {
rootPath: _base.ROOT_PATH,
basePath: 'src',
babelRoot: '',
globalStyleDir: 'style',
libraryInclude: (0, _ramda.always)(false),
libraryExclude: /node_modules/,
buildDir: 'generated_assets/',
serverDir: 'server_assets/',
manifestFilename: 'manifest.json',
extraJsLoaders: [],
...options,
mode: argv?.mode || process.env.NODE_ENV,
nohash: env?.nohash ?? env?.analyze ?? (process.env.WEBPACK_ANALYZE === 'true' || process.env.WEBPACK_ANALYZE === true),
argv,
env,
isStackblitz: Object.prototype.hasOwnProperty.call(process.versions, 'webcontainer')
};
// option validation done here
if ('sassOptions' in options && options.sassOptions === undefined) {
throw new Error('Undefined is not a valid option for sassOptions. To disable use `false`');
}
if ('htmlOptions' in options && options.htmlOptions === undefined) {
throw new Error('Undefined is not a valid option for htmlOptions. To disable use `false`');
}
if ('svgoOptions' in options && options.svgoOptions === undefined) {
throw new Error('Undefined is not a valid option for svgoOptions. To disable use `false`');
}
if ('svgrOptions' in options && options.svgrOptions === undefined) {
throw new Error('Undefined is not a valid option for svgrOptions. To disable use `false`');
}
if ('inJSOptions' in options && options.inJSOptions === undefined) {
throw new Error('Undefined is not a valid option for inJSOptions. To disable use `false`');
}
if ('cssExtractOptions' in options && options.cssExtractOptions === undefined) {
throw new Error('Undefined is not a valid option for cssExtractOptions. To disable use `false`');
}
if ('tsconfigPathsOptions' in options && options.tsconfigPathsOptions === undefined) {
throw new Error('Undefined is not a valid option for tsconfigPathsOptions. To disable use `false`');
}
if ('globalStyleDir' in options && options.globalStyleDir === undefined) {
throw new Error('Undefined is not a valid option for globalStyleDir. To disable use `false`');
}
// defaults
// Note: In SVGO v4, removeTitle and removeViewBox are no longer part of preset-default
// and are disabled by default, so we don't need to override them.
options.svgoOptions = {
plugins: [{
name: 'preset-default',
params: {
overrides: {
convertShapeToPath: false
}
}
}, 'removeComments', 'removeDesc', 'removeUselessDefs', 'removeDoctype', 'removeMetadata', 'convertColors', 'prefixIds'],
...options.svgoOptions
};
const baseConfig = (0, _base.default)(options);
let config;
if (env?.check === 'nobuild') {
config = (0, _nobuild.default)(baseConfig, options);
} else {
switch (options.mode) {
case 'development':
config = (0, _dev.default)(baseConfig, options);
break;
case 'production':
config = (0, _prod.default)(baseConfig, options);
break;
default:
config = baseConfig;
break;
}
}
if (argv?.target?.includes?.('node')) {
config = (0, _node.default)(config, options);
} else {
config.plugins.push(new _webpack.default.EnvironmentPlugin({
NODE_DEBUG: false,
DEBUG: false
}), new _webpack.default.ProvidePlugin({
Buffer: require.resolve('buffer'),
process: require.resolve('process/browser.js')
}));
}
if (options.library) {
config = (0, _library.default)(config, options);
}
if (env?.check) {
config = (0, _check.default)(config, options, env?.check);
}
if (env?.analyze || process.env.WEBPACK_ANALYZE === 'true' || process.env.WEBPACK_ANALYZE === true) {
config.plugins.push(new _webpackBundleAnalyzer.BundleAnalyzerPlugin({
analyzerMode: 'static',
generateStatsFile: false,
defaultSizes: 'gzip',
...options.bundleAnalyzerOptions
}));
delete config.output.globalObject;
}
return config;
};
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmFtZGEiLCJyZXF1aXJlIiwiX3dlYnBhY2siLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX3dlYnBhY2tCdW5kbGVBbmFseXplciIsIl9iYXNlIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJPYmplY3QiLCJrZXlzIiwiZm9yRWFjaCIsImtleSIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIl9leHBvcnROYW1lcyIsImV4cG9ydHMiLCJfY2hlY2siLCJfZGV2IiwiX2xpYnJhcnkiLCJfbm9idWlsZCIsIl9ub2RlIiwiX3Byb2QiLCJfc3Rvcnlib29rIiwibWFrZVN0b3J5Ym9va0NvbmZpZ0dlbmVyYXRvciIsImRlZmF1bHQiLCJtYWtlQ29uZmlnIiwib3B0aW9ucyIsImVudiIsImFyZ3YiLCJtb2RlIiwicHJvY2VzcyIsIk5PREVfRU5WIiwicm9vdFBhdGgiLCJST09UX1BBVEgiLCJiYXNlUGF0aCIsImJhYmVsUm9vdCIsImdsb2JhbFN0eWxlRGlyIiwibGlicmFyeUluY2x1ZGUiLCJhbHdheXMiLCJsaWJyYXJ5RXhjbHVkZSIsImJ1aWxkRGlyIiwic2VydmVyRGlyIiwibWFuaWZlc3RGaWxlbmFtZSIsImV4dHJhSnNMb2FkZXJzIiwibm9oYXNoIiwiYW5hbHl6ZSIsIldFQlBBQ0tfQU5BTFlaRSIsImlzU3RhY2tibGl0eiIsInZlcnNpb25zIiwic2Fzc09wdGlvbnMiLCJ1bmRlZmluZWQiLCJFcnJvciIsImh0bWxPcHRpb25zIiwic3Znb09wdGlvbnMiLCJzdmdyT3B0aW9ucyIsImluSlNPcHRpb25zIiwiY3NzRXh0cmFjdE9wdGlvbnMiLCJ0c2NvbmZpZ1BhdGhzT3B0aW9ucyIsInBsdWdpbnMiLCJuYW1lIiwicGFyYW1zIiwib3ZlcnJpZGVzIiwiY29udmVydFNoYXBlVG9QYXRoIiwiYmFzZUNvbmZpZyIsIm1ha2VCYXNlQ29uZmlnIiwiY29uZmlnIiwiY2hlY2siLCJtYWtlTm9idWlsZENvbmZpZyIsIm1ha2VEZXZDb25maWciLCJtYWtlUHJvZENvbmZpZyIsInRhcmdldCIsImluY2x1ZGVzIiwibWFrZU5vZGVDb25maWciLCJwdXNoIiwid2VicGFjayIsIkVudmlyb25tZW50UGx1Z2luIiwiTk9ERV9ERUJVRyIsIkRFQlVHIiwiUHJvdmlkZVBsdWdpbiIsIkJ1ZmZlciIsInJlc29sdmUiLCJsaWJyYXJ5IiwibWFrZUxpYnJhcnlDb25maWciLCJtYWtlQ2hlY2tDb25maWciLCJCdW5kbGVBbmFseXplclBsdWdpbiIsImFuYWx5emVyTW9kZSIsImdlbmVyYXRlU3RhdHNGaWxlIiwiZGVmYXVsdFNpemVzIiwiYnVuZGxlQW5hbHl6ZXJPcHRpb25zIiwib3V0cHV0IiwiZ2xvYmFsT2JqZWN0Il0sInNvdXJjZXMiOlsiLi4vc3JjL2luZGV4LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFsd2F5cyB9IGZyb20gJ3JhbWRhJztcbmltcG9ydCB3ZWJwYWNrIGZyb20gJ3dlYnBhY2snO1xuaW1wb3J0IHsgQnVuZGxlQW5hbHl6ZXJQbHVnaW4gfSBmcm9tICd3ZWJwYWNrLWJ1bmRsZS1hbmFseXplcic7XG5cbmltcG9ydCBtYWtlQmFzZUNvbmZpZywgeyBST09UX1BBVEggfSBmcm9tICcuL2Jhc2UnO1xuaW1wb3J0IG1ha2VDaGVja0NvbmZpZyBmcm9tICcuL2NoZWNrJztcbmltcG9ydCBtYWtlRGV2Q29uZmlnIGZyb20gJy4vZGV2JztcbmltcG9ydCBtYWtlTGlicmFyeUNvbmZpZyBmcm9tICcuL2xpYnJhcnknO1xuaW1wb3J0IG1ha2VOb2J1aWxkQ29uZmlnIGZyb20gJy4vbm9idWlsZCc7XG5pbXBvcnQgbWFrZU5vZGVDb25maWcgZnJvbSAnLi9ub2RlJztcbmltcG9ydCBtYWtlUHJvZENvbmZpZyBmcm9tICcuL3Byb2QnO1xuXG5leHBvcnQgKiBmcm9tICcuL2Jhc2UnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBtYWtlU3Rvcnlib29rQ29uZmlnR2VuZXJhdG9yIH0gZnJvbSAnLi9zdG9yeWJvb2snO1xuXG5leHBvcnQgZnVuY3Rpb24gbWFrZUNvbmZpZyhvcHRpb25zKSB7XG4gIHJldHVybiAoZW52LCBhcmd2KSA9PiB7XG4gICAgaWYgKGFyZ3Y/Lm1vZGUgJiYgIXByb2Nlc3MuZW52Lk5PREVfRU5WKSBwcm9jZXNzLmVudi5OT0RFX0VOViA9IGFyZ3Y/Lm1vZGU7XG5cbiAgICBvcHRpb25zID0ge1xuICAgICAgcm9vdFBhdGg6IFJPT1RfUEFUSCxcbiAgICAgIGJhc2VQYXRoOiAnc3JjJyxcbiAgICAgIGJhYmVsUm9vdDogJycsXG4gICAgICBnbG9iYWxTdHlsZURpcjogJ3N0eWxlJyxcbiAgICAgIGxpYnJhcnlJbmNsdWRlOiBhbHdheXMoZmFsc2UpLFxuICAgICAgbGlicmFyeUV4Y2x1ZGU6IC9ub2RlX21vZHVsZXMvLFxuICAgICAgYnVpbGREaXI6ICdnZW5lcmF0ZWRfYXNzZXRzLycsXG4gICAgICBzZXJ2ZXJEaXI6ICdzZXJ2ZXJfYXNzZXRzLycsXG4gICAgICBtYW5pZmVzdEZpbGVuYW1lOiAnbWFuaWZlc3QuanNvbicsXG4gICAgICBleHRyYUpzTG9hZGVyczogW10sXG4gICAgICAuLi5vcHRpb25zLFxuICAgICAgbW9kZTogYXJndj8ubW9kZSB8fCBwcm9jZXNzLmVudi5OT0RFX0VOVixcbiAgICAgIG5vaGFzaDpcbiAgICAgICAgZW52Py5ub2hhc2ggPz9cbiAgICAgICAgZW52Py5hbmFseXplID8/XG4gICAgICAgIChwcm9jZXNzLmVudi5XRUJQQUNLX0FOQUxZWkUgPT09ICd0cnVlJyB8fFxuICAgICAgICAgIHByb2Nlc3MuZW52LldFQlBBQ0tfQU5BTFlaRSA9PT0gdHJ1ZSksXG4gICAgICBhcmd2LFxuICAgICAgZW52LFxuICAgICAgaXNTdGFja2JsaXR6OiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoXG4gICAgICAgIHByb2Nlc3MudmVyc2lvbnMsXG4gICAgICAgICd3ZWJjb250YWluZXInLFxuICAgICAgKSxcbiAgICB9O1xuICAgIC8vIG9wdGlvbiB2YWxpZGF0aW9uIGRvbmUgaGVyZVxuICAgIGlmICgnc2Fzc09wdGlvbnMnIGluIG9wdGlvbnMgJiYgb3B0aW9ucy5zYXNzT3B0aW9ucyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdVbmRlZmluZWQgaXMgbm90IGEgdmFsaWQgb3B0aW9uIGZvciBzYXNzT3B0aW9ucy4gVG8gZGlzYWJsZSB1c2UgYGZhbHNlYCcsXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAoJ2h0bWxPcHRpb25zJyBpbiBvcHRpb25zICYmIG9wdGlvbnMuaHRtbE9wdGlvbnMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnVW5kZWZpbmVkIGlzIG5vdCBhIHZhbGlkIG9wdGlvbiBmb3IgaHRtbE9wdGlvbnMuIFRvIGRpc2FibGUgdXNlIGBmYWxzZWAnLFxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKCdzdmdvT3B0aW9ucycgaW4gb3B0aW9ucyAmJiBvcHRpb25zLnN2Z29PcHRpb25zID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ1VuZGVmaW5lZCBpcyBub3QgYSB2YWxpZCBvcHRpb24gZm9yIHN2Z29PcHRpb25zLiBUbyBkaXNhYmxlIHVzZSBgZmFsc2VgJyxcbiAgICAgICk7XG4gICAgfVxuICAgIGlmICgnc3Znck9wdGlvbnMnIGluIG9wdGlvbnMgJiYgb3B0aW9ucy5zdmdyT3B0aW9ucyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdVbmRlZmluZWQgaXMgbm90IGEgdmFsaWQgb3B0aW9uIGZvciBzdmdyT3B0aW9ucy4gVG8gZGlzYWJsZSB1c2UgYGZhbHNlYCcsXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAoJ2luSlNPcHRpb25zJyBpbiBvcHRpb25zICYmIG9wdGlvbnMuaW5KU09wdGlvbnMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnVW5kZWZpbmVkIGlzIG5vdCBhIHZhbGlkIG9wdGlvbiBmb3IgaW5KU09wdGlvbnMuIFRvIGRpc2FibGUgdXNlIGBmYWxzZWAnLFxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKFxuICAgICAgJ2Nzc0V4dHJhY3RPcHRpb25zJyBpbiBvcHRpb25zICYmXG4gICAgICBvcHRpb25zLmNzc0V4dHJhY3RPcHRpb25zID09PSB1bmRlZmluZWRcbiAgICApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ1VuZGVmaW5lZCBpcyBub3QgYSB2YWxpZCBvcHRpb24gZm9yIGNzc0V4dHJhY3RPcHRpb25zLiBUbyBkaXNhYmxlIHVzZSBgZmFsc2VgJyxcbiAgICAgICk7XG4gICAgfVxuICAgIGlmIChcbiAgICAgICd0c2NvbmZpZ1BhdGhzT3B0aW9ucycgaW4gb3B0aW9ucyAmJlxuICAgICAgb3B0aW9ucy50c2NvbmZpZ1BhdGhzT3B0aW9ucyA9PT0gdW5kZWZpbmVkXG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdVbmRlZmluZWQgaXMgbm90IGEgdmFsaWQgb3B0aW9uIGZvciB0c2NvbmZpZ1BhdGhzT3B0aW9ucy4gVG8gZGlzYWJsZSB1c2UgYGZhbHNlYCcsXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAoJ2dsb2JhbFN0eWxlRGlyJyBpbiBvcHRpb25zICYmIG9wdGlvbnMuZ2xvYmFsU3R5bGVEaXIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnVW5kZWZpbmVkIGlzIG5vdCBhIHZhbGlkIG9wdGlvbiBmb3IgZ2xvYmFsU3R5bGVEaXIuIFRvIGRpc2FibGUgdXNlIGBmYWxzZWAnLFxuICAgICAgKTtcbiAgICB9XG4gICAgLy8gZGVmYXVsdHNcbiAgICAvLyBOb3RlOiBJbiBTVkdPIHY0LCByZW1vdmVUaXRsZSBhbmQgcmVtb3ZlVmlld0JveCBhcmUgbm8gbG9uZ2VyIHBhcnQgb2YgcHJlc2V0LWRlZmF1bHRcbiAgICAvLyBhbmQgYXJlIGRpc2FibGVkIGJ5IGRlZmF1bHQsIHNvIHdlIGRvbid0IG5lZWQgdG8gb3ZlcnJpZGUgdGhlbS5cbiAgICBvcHRpb25zLnN2Z29PcHRpb25zID0ge1xuICAgICAgcGx1Z2luczogW1xuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogJ3ByZXNldC1kZWZhdWx0JyxcbiAgICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICAgIG92ZXJyaWRlczoge1xuICAgICAgICAgICAgICBjb252ZXJ0U2hhcGVUb1BhdGg6IGZhbHNlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICAncmVtb3ZlQ29tbWVudHMnLFxuICAgICAgICAncmVtb3ZlRGVzYycsXG4gICAgICAgICdyZW1vdmVVc2VsZXNzRGVmcycsXG4gICAgICAgICdyZW1vdmVEb2N0eXBlJyxcbiAgICAgICAgJ3JlbW92ZU1ldGFkYXRhJyxcbiAgICAgICAgJ2NvbnZlcnRDb2xvcnMnLFxuICAgICAgICAncHJlZml4SWRzJyxcbiAgICAgIF0sXG4gICAgICAuLi5vcHRpb25zLnN2Z29PcHRpb25zLFxuICAgIH07XG5cbiAgICBjb25zdCBiYXNlQ29uZmlnID0gbWFrZUJhc2VDb25maWcob3B0aW9ucyk7XG5cbiAgICBsZXQgY29uZmlnO1xuICAgIGlmIChlbnY/LmNoZWNrID09PSAnbm9idWlsZCcpIHtcbiAgICAgIGNvbmZpZyA9IG1ha2VOb2J1aWxkQ29uZmlnKGJhc2VDb25maWcsIG9wdGlvbnMpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzd2l0Y2ggKG9wdGlvbnMubW9kZSkge1xuICAgICAgICBjYXNlICdkZXZlbG9wbWVudCc6XG4gICAgICAgICAgY29uZmlnID0gbWFrZURldkNvbmZpZyhiYXNlQ29uZmlnLCBvcHRpb25zKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAncHJvZHVjdGlvbic6XG4gICAgICAgICAgY29uZmlnID0gbWFrZVByb2RDb25maWcoYmFzZUNvbmZpZywgb3B0aW9ucyk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgY29uZmlnID0gYmFzZUNvbmZpZztcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGFyZ3Y/LnRhcmdldD8uaW5jbHVkZXM/Lignbm9kZScpKSB7XG4gICAgICBjb25maWcgPSBtYWtlTm9kZUNvbmZpZyhjb25maWcsIG9wdGlvbnMpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25maWcucGx1Z2lucy5wdXNoKFxuICAgICAgICBuZXcgd2VicGFjay5FbnZpcm9ubWVudFBsdWdpbih7XG4gICAgICAgICAgTk9ERV9ERUJVRzogZmFsc2UsXG4gICAgICAgICAgREVCVUc6IGZhbHNlLFxuICAgICAgICB9KSxcbiAgICAgICAgbmV3IHdlYnBhY2suUHJvdmlkZVBsdWdpbih7XG4gICAgICAgICAgQnVmZmVyOiByZXF1aXJlLnJlc29sdmUoJ2J1ZmZlcicpLFxuICAgICAgICAgIHByb2Nlc3M6IHJlcXVpcmUucmVzb2x2ZSgncHJvY2Vzcy9icm93c2VyLmpzJyksXG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKG9wdGlvbnMubGlicmFyeSkge1xuICAgICAgY29uZmlnID0gbWFrZUxpYnJhcnlDb25maWcoY29uZmlnLCBvcHRpb25zKTtcbiAgICB9XG4gICAgaWYgKGVudj8uY2hlY2spIHtcbiAgICAgIGNvbmZpZyA9IG1ha2VDaGVja0NvbmZpZyhjb25maWcsIG9wdGlvbnMsIGVudj8uY2hlY2spO1xuICAgIH1cbiAgICBpZiAoXG4gICAgICBlbnY/LmFuYWx5emUgfHxcbiAgICAgIHByb2Nlc3MuZW52LldFQlBBQ0tfQU5BTFlaRSA9PT0gJ3RydWUnIHx8XG4gICAgICBwcm9jZXNzLmVudi5XRUJQQUNLX0FOQUxZWkUgPT09IHRydWVcbiAgICApIHtcbiAgICAgIGNvbmZpZy5wbHVnaW5zLnB1c2goXG4gICAgICAgIG5ldyBCdW5kbGVBbmFseXplclBsdWdpbih7XG4gICAgICAgICAgYW5hbHl6ZXJNb2RlOiAnc3RhdGljJyxcbiAgICAgICAgICBnZW5lcmF0ZVN0YXRzRmlsZTogZmFsc2UsXG4gICAgICAgICAgZGVmYXVsdFNpemVzOiAnZ3ppcCcsXG4gICAgICAgICAgLi4ub3B0aW9ucy5idW5kbGVBbmFseXplck9wdGlvbnMsXG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgICAgIGRlbGV0ZSBjb25maWcub3V0cHV0Lmdsb2JhbE9iamVjdDtcbiAgICB9XG4gICAgcmV0dXJuIGNvbmZpZztcbiAgfTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQSxJQUFBQSxNQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxRQUFBLEdBQUFDLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBRyxzQkFBQSxHQUFBSCxPQUFBO0FBRUEsSUFBQUksS0FBQSxHQUFBQyx1QkFBQSxDQUFBTCxPQUFBO0FBUUFNLE1BQUEsQ0FBQUMsSUFBQSxDQUFBSCxLQUFBLEVBQUFJLE9BQUEsV0FBQUMsR0FBQTtFQUFBLElBQUFBLEdBQUEsa0JBQUFBLEdBQUE7RUFBQSxJQUFBSCxNQUFBLENBQUFJLFNBQUEsQ0FBQUMsY0FBQSxDQUFBQyxJQUFBLENBQUFDLFlBQUEsRUFBQUosR0FBQTtFQUFBLElBQUFBLEdBQUEsSUFBQUssT0FBQSxJQUFBQSxPQUFBLENBQUFMLEdBQUEsTUFBQUwsS0FBQSxDQUFBSyxHQUFBO0VBQUFLLE9BQUEsQ0FBQUwsR0FBQSxJQUFBTCxLQUFBLENBQUFLLEdBQUE7QUFBQTtBQVBBLElBQUFNLE1BQUEsR0FBQWIsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFnQixJQUFBLEdBQUFkLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBaUIsUUFBQSxHQUFBZixzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQWtCLFFBQUEsR0FBQWhCLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBbUIsS0FBQSxHQUFBakIsc0JB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