crx-monkey-next 0.3.0 → 0.3.1

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.
@@ -1,12 +1,8 @@
1
1
  import esbuild from 'esbuild';
2
2
  import typescript, { readConfigFile, sys, parseJsonConfigFileContent } from 'typescript';
3
3
  import chalk from 'chalk';
4
- import { watch } from 'fs';
4
+ import { watch, readFile } from 'fs';
5
5
  import { compile } from 'sass';
6
- import { basename, resolve, dirname } from 'path';
7
- import { parse } from 'node-html-parser';
8
- import fse from 'fs-extra';
9
- import MurmurHash3 from 'murmurhash3js';
10
6
 
11
7
  function esbuildTypecheckPlugin(options = { exit: false }) {
12
8
  const tsPlugin = {
@@ -213,351 +209,61 @@ function sassBundlerWatch(options = { sass: {} }) {
213
209
  };
214
210
  }
215
211
 
216
- class HTMLTools {
217
- popupPath;
218
- distPath;
219
- plugins;
220
- bundler;
221
- htmlParserRoot;
222
- stackInterval = null;
223
- watcher = null;
224
- parseResult = {
225
- requestLocalScripts: {},
226
- requestLocalHrefFiles: {},
227
- requestLocalSrcFiles: {},
228
- };
229
- constructor(popupPath, distPath, plugins, bundler) {
230
- this.popupPath = popupPath;
231
- this.distPath = distPath;
232
- this.plugins = plugins;
233
- this.bundler = bundler;
234
- this.htmlParserRoot = this.getParser(popupPath);
235
- }
236
- async buildForUserjs() {
237
- const htmlParserRoot = this.getParser(this.popupPath);
238
- const parseResult = this.parse();
239
- const diff = this.getParseResultDiff(parseResult);
240
- const decorder = new TextDecoder();
241
- diff.localScripts.add.forEach((scriptPath) => {
242
- const result = this.bundler.getBuildResultFromPath(scriptPath);
243
- if (result !== undefined) {
244
- const targetElement = parseResult.requestLocalSrcFiles[scriptPath];
245
- const resultStr = decorder.decode(result);
246
- targetElement.innerHTML = resultStr;
247
- }
248
- });
249
- return htmlParserRoot.toString();
250
- }
251
- async build() {
252
- this.htmlParserRoot = this.getParser(this.popupPath);
253
- const result = this.parse();
254
- const diff = this.getParseResultDiff(result);
255
- this.parseResult = result;
256
- const hashs = this.registerDiffToBundler(diff);
257
- this.syncAssets(diff);
258
- return hashs;
259
- }
260
- async watchHTML() {
261
- const stack = [];
262
- // When html updated
263
- const onUpdate = async () => {
264
- this.htmlParserRoot = this.getParser(this.popupPath);
265
- const result = this.parse();
266
- const diff = this.getParseResultDiff(result);
267
- this.parseResult = result;
268
- this.registerDiffToBundler(diff);
269
- this.syncAssets(diff);
270
- await this.bundler.stopWatch();
271
- await this.bundler.watch();
272
- };
273
- await onUpdate();
274
- this.watcher = watch(this.popupPath);
275
- this.watcher.addListener('change', () => {
276
- stack.push(onUpdate);
277
- });
278
- this.stackInterval = setInterval(async () => {
279
- if (stack[0] !== undefined) {
280
- await stack[0]();
281
- stack.splice(0, 1);
282
- }
283
- }, 1000);
284
- }
285
- stopWatch() {
286
- if (this.stackInterval !== null) {
287
- clearInterval(this.stackInterval);
288
- }
289
- if (this.watcher !== null) {
290
- this.watcher.close();
291
- }
292
- }
293
- resolveScript(entry, target) {
294
- const targetElement = this.parseResult.requestLocalScripts[this.resolveFilePath(entry)];
295
- targetElement.setAttribute('src', target);
296
- }
297
- resolveHref(entry, target) {
298
- const targetElement = this.parseResult.requestLocalHrefFiles[this.resolveFilePath(entry)];
299
- targetElement.setAttribute('href', target);
300
- }
301
- resolveSrc(entry, target) {
302
- const targetElement = this.parseResult.requestLocalSrcFiles[this.resolveFilePath(entry)];
303
- targetElement.setAttribute('src', target);
304
- }
305
- outputHtmlResolved() {
306
- return this.htmlParserRoot.toString();
307
- }
308
- syncAssets(diff) {
309
- diff.localSrcFiles.add.forEach((filePath) => {
310
- const baseFileName = basename(filePath);
311
- const newFilePath = '/assets/' + baseFileName;
312
- fse.copySync(filePath, resolve(this.distPath, 'assets', baseFileName));
313
- this.resolveSrc(filePath, newFilePath);
314
- });
315
- diff.localSrcFiles.delete.forEach((filePath) => {
316
- const baseFileName = basename(filePath);
317
- const newFilePath = '/assets/' + baseFileName;
318
- fse.removeSync(newFilePath);
319
- });
320
- }
321
- registerDiffToBundler(diff) {
322
- const hashs = [];
323
- const targetGroups = [
324
- ['html_script', diff.localScripts.add],
325
- ['html_href', diff.localHrefFiles.add],
326
- ];
327
- for (const [type, paths] of targetGroups) {
328
- for (const path of paths) {
329
- if (type === 'html_script' || type === 'html_href') {
330
- const buildPlugin = this.getAppropriateBuildPlugin(path);
331
- const watchPlugin = this.getAppropriateWatchPlugin(path);
332
- if (!buildPlugin) {
333
- console.error(`Could not find the appropriate plugin for building "${path}"`);
334
- continue;
212
+ /**
213
+ * What is this?
214
+ * Currently, this HTML bundler plugin functions merely as a file loader.
215
+ * Previously, it parsed the popup HTML and passed the scripts to tsBundler for transpilation.
216
+ * However, due to design changes to support UserJS popups, the plugin no longer handles transpilation.
217
+ * Instead, the HTML is now processed internally via popup/Popup.ts.
218
+ */
219
+ function htmlBundler() {
220
+ return {
221
+ name: 'HTML File loader',
222
+ plugin: async (filePath) => {
223
+ return new Promise((resolve, reject) => {
224
+ readFile(filePath, (err, data) => {
225
+ if (err !== null) {
226
+ reject(err);
335
227
  }
336
- if (!watchPlugin) {
337
- console.error(`Could not find the appropriate plugin for watching "${path}"`);
338
- continue;
228
+ else {
229
+ resolve(data);
339
230
  }
340
- const hash = this.bundler.addTarget(path, { build: buildPlugin, watch: watchPlugin }, type);
341
- hashs.push(hash);
342
- }
343
- }
344
- }
345
- [...diff.localScripts.delete, ...diff.localHrefFiles.delete].forEach((path) => {
346
- this.bundler.removeTarget(path);
347
- });
348
- return hashs;
349
- }
350
- /**
351
- * Get diff that loaded resources in html what with added or deleted.
352
- * @returns
353
- */
354
- getParseResultDiff(newResult) {
355
- const result = {
356
- localScripts: {
357
- add: [],
358
- delete: [],
359
- },
360
- localHrefFiles: {
361
- add: [],
362
- delete: [],
363
- },
364
- localSrcFiles: {
365
- add: [],
366
- delete: [],
367
- },
368
- };
369
- const setDiff = (key, elements, original) => {
370
- Object.keys(elements).forEach((requestURL) => {
371
- if (original[requestURL] === undefined) {
372
- result[key].add.push(requestURL);
373
- }
231
+ });
374
232
  });
375
- Object.keys(original).forEach((requestURL) => {
376
- if (elements[requestURL] === undefined) {
377
- result[key].delete.push(requestURL);
233
+ },
234
+ };
235
+ }
236
+ function htmlBundlerWatch() {
237
+ return {
238
+ name: 'HTML File loader watch',
239
+ plugin: async (filePath, sendResult) => {
240
+ const watcher = watch(filePath);
241
+ readFile(filePath, (err, data) => {
242
+ if (err !== null) {
243
+ throw err;
244
+ }
245
+ else {
246
+ sendResult(data);
378
247
  }
379
248
  });
380
- };
381
- setDiff('localScripts', newResult.requestLocalScripts, this.parseResult.requestLocalScripts);
382
- setDiff('localHrefFiles', newResult.requestLocalHrefFiles, this.parseResult.requestLocalHrefFiles);
383
- setDiff('localSrcFiles', newResult.requestLocalSrcFiles, this.parseResult.requestLocalSrcFiles);
384
- return result;
385
- }
386
- /**
387
- * Parse popup html
388
- * @param filePath
389
- * @returns
390
- */
391
- parse() {
392
- return {
393
- requestLocalScripts: this.getResourceElement(this.htmlParserRoot, 'script', 'src'),
394
- requestLocalHrefFiles: this.getResourceElement(this.htmlParserRoot, 'link', 'href'),
395
- requestLocalSrcFiles: this.getResourceElement(this.htmlParserRoot, 'video, img, iframe', 'src'),
396
- };
397
- }
398
- /**
399
- * Get elements for loading any resource. for example, script or img link anymore..
400
- * @param root
401
- * @param selector
402
- * @param resourceURLAttr
403
- * @returns
404
- */
405
- getResourceElement(root, selector, resourceURLAttr) {
406
- const elems = root.querySelectorAll(selector);
407
- const ResultElems = {};
408
- elems.forEach((elem) => {
409
- const noBundleAttr = elem.getAttribute('no-bundle');
410
- if (noBundleAttr !== '' && noBundleAttr !== 'true') {
411
- const src = elem.getAttribute(resourceURLAttr);
412
- if (src !== undefined && src !== null) {
413
- // Except the script href that start http.
414
- if (src.match('^http.*') === null) {
415
- const resolvedPath = this.resolveFilePath(src);
416
- ResultElems[resolvedPath] = elem;
249
+ watcher.addListener('change', async () => {
250
+ readFile(filePath, (err, data) => {
251
+ if (err !== null) {
252
+ throw err;
417
253
  }
418
- }
419
- }
420
- });
421
- return ResultElems;
422
- }
423
- /**
424
- * Resolve path
425
- */
426
- resolveFilePath(contentPath) {
427
- return resolve(dirname(this.popupPath), contentPath);
428
- }
429
- /**
430
- * Get Html parser instance.
431
- * @param htmlPath
432
- * @returns
433
- */
434
- getParser(htmlPath) {
435
- const content = fse.readFileSync(htmlPath).toString();
436
- const root = parse(content);
437
- return root;
438
- }
439
- /**
440
- * Get build plugin
441
- * @param filePath
442
- * @returns
443
- */
444
- getAppropriateBuildPlugin(filePath) {
445
- for (const [pattern, plugin] of Object.entries(this.plugins.build)) {
446
- const regex = new RegExp(pattern);
447
- if (regex.test(filePath)) {
448
- return plugin;
449
- }
450
- }
451
- return null;
452
- }
453
- /**
454
- * Get watch plugin
455
- * @param filePath
456
- * @returns
457
- */
458
- getAppropriateWatchPlugin(filePath) {
459
- for (const [pattern, plugin] of Object.entries(this.plugins.watch)) {
460
- const regex = new RegExp(pattern);
461
- if (regex.test(filePath)) {
462
- return plugin;
463
- }
464
- }
465
- return null;
466
- }
467
- }
468
-
469
- let htmlTools = null;
470
- let listenerAdded = false;
471
- function htmlBundlerWatch(options) {
472
- return {
473
- name: 'Crxm Watch HTML Plugin',
474
- plugin: async (filePath, sendResult, bundler) => {
475
- const distPath = resolve(options.output);
476
- if (htmlTools === null) {
477
- htmlTools = new HTMLTools(filePath, options.output, options.plugins, bundler);
478
- await htmlTools.watchHTML();
479
- }
480
- if (!listenerAdded) {
481
- bundler.addListener((target) => {
482
- if (htmlTools !== null) {
483
- if (target.flag === 'html_script' || target.flag === 'html_href') {
484
- const result = bundler.compileResults[target.hash];
485
- if (target.flag === 'html_script') {
486
- const extChanged = changeExt(target.entryPoint, 'js');
487
- const endemicHash = MurmurHash3.x86.hash32(target.entryPoint).toString();
488
- const fileName = endemicHash + '_' + extChanged;
489
- const outputPath = resolve(distPath, fileName);
490
- fse.outputFileSync(outputPath, result);
491
- htmlTools.resolveScript(target.entryPoint, fileName);
492
- }
493
- if (target.flag === 'html_href') {
494
- const extChanged = changeExt(target.entryPoint, 'css');
495
- const endemicHash = MurmurHash3.x86.hash32(target.entryPoint).toString();
496
- const fileName = endemicHash + '_' + extChanged;
497
- const outputPath = resolve(distPath, fileName);
498
- fse.outputFileSync(outputPath, result);
499
- htmlTools.resolveHref(target.entryPoint, fileName);
500
- }
501
- const html = htmlTools.outputHtmlResolved();
502
- const encoder = new TextEncoder();
503
- const encoded = encoder.encode(html);
504
- sendResult(encoded);
505
- }
254
+ else {
255
+ sendResult(data);
506
256
  }
507
257
  });
508
- listenerAdded = true;
509
- }
258
+ });
510
259
  return {
511
260
  stop: async () => {
512
- if (htmlTools !== null) {
513
- htmlTools.stopWatch();
514
- htmlTools = null;
515
- }
261
+ watcher.close();
516
262
  },
517
263
  };
518
264
  },
519
265
  };
520
266
  }
521
- function htmlBundler(options) {
522
- return {
523
- name: 'Crxm HTML Plugin',
524
- plugin: async (filePath, bundler) => {
525
- const distPath = resolve(options.output);
526
- const htmlTools = new HTMLTools(filePath, options.output, options.plugins, bundler);
527
- const hashs = await htmlTools.build();
528
- await Promise.all(hashs.map(async (hash) => {
529
- const target = await bundler.compileForce(hash);
530
- const result = bundler.compileResults[target.hash];
531
- if (target.flag === 'html_script') {
532
- const extChanged = changeExt(target.entryPoint, 'js');
533
- const endemicHash = MurmurHash3.x86.hash32(target.entryPoint).toString();
534
- const fileName = endemicHash + '_' + extChanged;
535
- const outputPath = resolve(distPath, fileName);
536
- fse.outputFileSync(outputPath, result);
537
- htmlTools.resolveScript(target.entryPoint, fileName);
538
- }
539
- if (target.flag === 'html_href') {
540
- const extChanged = changeExt(target.entryPoint, 'css');
541
- const endemicHash = MurmurHash3.x86.hash32(target.entryPoint).toString();
542
- const fileName = endemicHash + '_' + extChanged;
543
- const outputPath = resolve(distPath, fileName);
544
- fse.outputFileSync(outputPath, result);
545
- htmlTools.resolveHref(target.entryPoint, fileName);
546
- }
547
- }));
548
- const html = htmlTools.outputHtmlResolved();
549
- const encoder = new TextEncoder();
550
- const encoded = encoder.encode(html);
551
- return encoded;
552
- },
553
- };
554
- }
555
- function changeExt(filePath, newExt) {
556
- const rawFileNameSplited = basename(filePath).split('.');
557
- rawFileNameSplited[rawFileNameSplited.length - 1] = newExt;
558
- const newFilename = rawFileNameSplited.join('.');
559
- return newFilename;
560
- }
561
267
 
562
268
  async function developmentReact(websocketAddress, entryPoint, cacheFileName) {
563
269
  const ws = new WebSocket(websocketAddress);
@@ -569,25 +275,56 @@ async function developmentReact(websocketAddress, entryPoint, cacheFileName) {
569
275
  });
570
276
  ws.addEventListener('message', async ({ data }) => {
571
277
  const response = JSON.parse(data);
278
+ if (response.type === 'connected') {
279
+ if (typeof chrome.runtime === 'undefined') {
280
+ const data = {
281
+ type: 'request_result',
282
+ content: {
283
+ entryPoint,
284
+ },
285
+ };
286
+ ws.send(JSON.stringify(data));
287
+ }
288
+ }
289
+ if (response.type === 'request_result_response') {
290
+ console.log('[crxm] hmr initial loading...');
291
+ const { content: { js }, } = response;
292
+ if (typeof chrome.runtime === 'undefined') {
293
+ // userjs
294
+ await loadByString(js);
295
+ }
296
+ }
572
297
  if (response.type === 'reload') {
573
298
  if (response.content.reloadType === 'HMR_' + entryPoint) {
574
- const { content: { data: { js }, }, } = response;
299
+ const { content: { data: { js, fileName }, }, } = response;
575
300
  console.log('[crxm] hmr loading...');
576
- await load(js);
301
+ if (typeof chrome.runtime === 'undefined') {
302
+ // userjs
303
+ await loadByString(js);
304
+ }
305
+ else {
306
+ await loadFile(fileName);
307
+ }
577
308
  }
578
309
  }
579
310
  });
580
- async function load(jsFileName) {
311
+ async function loadFile(jsFileName) {
581
312
  await import(`./${jsFileName}?time=${Date.now()}`);
582
313
  }
583
- await load(cacheFileName);
314
+ async function loadByString(js) {
315
+ const s = document.createElement('script');
316
+ s.innerHTML = js;
317
+ document.body.appendChild(s);
318
+ }
319
+ if (typeof chrome.runtime !== 'undefined') {
320
+ await loadFile(cacheFileName);
321
+ }
584
322
  }
585
323
 
586
324
  function reactWatch(options = { esbuild: {} }) {
587
325
  return {
588
326
  name: 'React watch plugin',
589
327
  plugin: async (filePath, sendResult, bundler) => {
590
- bundler.hmr.enable();
591
328
  /**
592
329
  * Watch and send
593
330
  */
@@ -681,16 +418,7 @@ function defineConfig(userConfig) {
681
418
  build: {
682
419
  '^.*.(ts|js|tsx|jsx)$': tsBundler({}),
683
420
  '^.*.(css|sass|scss)$': sassBundler(),
684
- '^.*.(html|htm)$': htmlBundler({
685
- output: 'dist/chrome',
686
- plugins: {
687
- build: { '^.*.(ts|js|tsx|jsx)$': tsBundler(), '^.*.(css|sass|scss)$': sassBundler() },
688
- watch: {
689
- '^.*.(ts|js|tsx|jsx)$': tsBundlerWatch(),
690
- '^.*.(css|sass|scss)$': sassBundlerWatch(),
691
- },
692
- },
693
- }),
421
+ '^.*.(html|htm)$': htmlBundler(),
694
422
  },
695
423
  watch: {
696
424
  '^.*.(ts|js|tsx|jsx)$': tsBundlerWatch({
@@ -699,16 +427,7 @@ function defineConfig(userConfig) {
699
427
  },
700
428
  }),
701
429
  '^.*.(css|sass|scss)$': sassBundlerWatch(),
702
- '^.*.(html|htm)$': htmlBundlerWatch({
703
- output: 'dist/chrome',
704
- plugins: {
705
- build: { '^.*.(ts|js|tsx|jsx)$': tsBundler(), '^.*.(css|sass|scss)$': sassBundler() },
706
- watch: {
707
- '^.*.(ts|js|tsx|jsx)$': tsBundlerWatch(),
708
- '^.*.(css|sass|scss)$': sassBundlerWatch(),
709
- },
710
- },
711
- }),
430
+ '^.*.(html|htm)$': htmlBundlerWatch(),
712
431
  },
713
432
  logLevel: 'error',
714
433
  public: false,
@@ -775,4 +494,4 @@ function makeDefineFunc(defaultConfig, userConfig) {
775
494
  }
776
495
 
777
496
  export { defineConfig, defineManifest, reactWatch, sassBundler, sassBundlerWatch, tsBundler, tsBundlerWatch };
778
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwb3J0cy5qcyIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL25vZGUvcGx1Z2lucy90c0J1bmRsZXIudHMiLCIuLi8uLi9zcmMvbm9kZS9wbHVnaW5zL3Nhc3NCdW5kbGVyLnRzIiwiLi4vLi4vc3JjL25vZGUvcGx1Z2lucy9odG1sQnVuZGxlci9IVE1MVG9vbHMudHMiLCIuLi8uLi9zcmMvbm9kZS9wbHVnaW5zL2h0bWxCdW5kbGVyL21haW4udHMiLCIuLi8uLi9zcmMvbm9kZS9wbHVnaW5zL3JlYWN0L2RldmVsb3BtZW50LnRzIiwiLi4vLi4vc3JjL25vZGUvcGx1Z2lucy9yZWFjdC9yZWFjdC50cyIsIi4uLy4uL3NyYy9ub2RlL2V4cG9ydHMudHMiXSwic291cmNlc0NvbnRlbnQiOltudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQThCQSxTQUFTLHNCQUFzQixDQUFDLE9BQUEsR0FBc0MsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUE7QUFDbkYsSUFBQSxNQUFNLFFBQVEsR0FBVztBQUN2QixRQUFBLElBQUksRUFBRSwwQkFBMEI7QUFDaEMsUUFBQSxLQUFLLEVBQUUsQ0FBQyxLQUFrQixLQUFJO1lBQzVCLEtBQUssQ0FBQyxNQUFNLENBQ1Y7QUFDRSxnQkFBQSxNQUFNLEVBQUUsSUFBSSxNQUFNLENBQUMsZUFBZSxDQUFDO2FBQ3BDLEVBQ0QsQ0FBQyxJQUFJLEtBQUk7QUFDUCxnQkFBQSxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsSUFBSTtBQUVyQixnQkFBQSxNQUFNLGVBQWUsR0FDbkIsT0FBTyxDQUFDLGVBQWUsS0FBSztzQkFDeEIsT0FBTyxDQUFDO3NCQUNSLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO0FBRXBDLGdCQUFBLE1BQU0sT0FBTyxHQUFHLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxlQUFl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
497
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwb3J0cy5qcyIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL25vZGUvcGx1Z2lucy90c0J1bmRsZXIudHMiLCIuLi8uLi9zcmMvbm9kZS9wbHVnaW5zL3Nhc3NCdW5kbGVyLnRzIiwiLi4vLi4vc3JjL25vZGUvcGx1Z2lucy9odG1sQnVuZGxlci50cyIsIi4uLy4uL3NyYy9ub2RlL3BsdWdpbnMvcmVhY3QvZGV2ZWxvcG1lbnQudHMiLCIuLi8uLi9zcmMvbm9kZS9wbHVnaW5zL3JlYWN0L3JlYWN0LnRzIiwiLi4vLi4vc3JjL25vZGUvZXhwb3J0cy50cyJdLCJzb3VyY2VzQ29udGVudCI6W251bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBOEJBLFNBQVMsc0JBQXNCLENBQUMsT0FBQSxHQUFzQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBQTtBQUNuRixJQUFBLE1BQU0sUUFBUSxHQUFXO0FBQ3ZCLFFBQUEsSUFBSSxFQUFFLDBCQUEwQjtBQUNoQyxRQUFBLEtBQUssRUFBRSxDQUFDLEtBQWtCLEtBQUk7WUFDNUIsS0FBSyxDQUFDLE1BQU0sQ0FDVjtBQUNFLGdCQUFBLE1BQU0sRUFBRSxJQUFJLE1BQU0sQ0FBQyxlQUFlLENBQUM7YUFDcEMsRUFDRCxDQUFDLElBQUksS0FBSTtBQUNQLGdCQUFBLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxJQUFJO0FBRXJCLGdCQUFBLE1BQU0sZUFBZSxHQUNuQixPQUFPLENBQUMsZUFBZSxLQUFLO3NCQUN4QixPQUFPLENBQUM7c0JBQ1IsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7QUFFcEMsZ0JBQUEsTUFBTSxPQUFPLEdBQUcsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLGVBQWUsQ0FBQztnQkFFakUsTUFBTSxXQUFXLEdBQUcsVUFBVSxDQUFDLHFCQUFxQixDQUFDLE9BQU8sQ0FBQztBQUU3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