@whitesev/utils 2.8.0 → 2.8.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.
Files changed (70) hide show
  1. package/README.md +176 -176
  2. package/dist/index.amd.js +893 -874
  3. package/dist/index.amd.js.map +1 -1
  4. package/dist/index.cjs.js +893 -874
  5. package/dist/index.cjs.js.map +1 -1
  6. package/dist/index.esm.js +893 -874
  7. package/dist/index.esm.js.map +1 -1
  8. package/dist/index.iife.js +893 -874
  9. package/dist/index.iife.js.map +1 -1
  10. package/dist/index.system.js +893 -874
  11. package/dist/index.system.js.map +1 -1
  12. package/dist/index.umd.js +893 -874
  13. package/dist/index.umd.js.map +1 -1
  14. package/dist/types/src/CommonUtil.d.ts +59 -59
  15. package/dist/types/src/DOMUtils.d.ts +1 -1
  16. package/dist/types/src/Dictionary.d.ts +1 -1
  17. package/dist/types/src/Httpx.d.ts +2 -2
  18. package/dist/types/src/Progress.d.ts +0 -4
  19. package/dist/types/src/TryCatch.d.ts +2 -2
  20. package/dist/types/src/Utils.d.ts +365 -365
  21. package/dist/types/src/UtilsGMCookie.d.ts +2 -2
  22. package/dist/types/src/UtilsGMMenu.d.ts +1 -1
  23. package/dist/types/src/indexedDB.d.ts +3 -3
  24. package/dist/types/src/types/Event.d.ts +188 -188
  25. package/dist/types/src/types/Httpx.d.ts +1344 -1343
  26. package/dist/types/src/types/Log.d.ts +19 -19
  27. package/dist/types/src/types/Progress.d.ts +20 -20
  28. package/dist/types/src/types/React.d.ts +119 -119
  29. package/dist/types/src/types/TryCatch.d.ts +9 -9
  30. package/dist/types/src/types/UtilsGMCookie.d.ts +93 -93
  31. package/dist/types/src/types/UtilsGMMenu.d.ts +77 -77
  32. package/dist/types/src/types/Vue2.d.ts +166 -166
  33. package/dist/types/src/types/WindowApi.d.ts +14 -14
  34. package/dist/types/src/types/ajaxHooker.d.ts +151 -151
  35. package/dist/types/src/types/env.d.ts +7 -2
  36. package/dist/types/src/types/global.d.ts +31 -31
  37. package/package.json +16 -7
  38. package/src/ColorConversion.ts +105 -106
  39. package/src/CommonUtil.ts +280 -279
  40. package/src/DOMUtils.ts +251 -272
  41. package/src/Dictionary.ts +153 -154
  42. package/src/GBKEncoder.ts +108 -112
  43. package/src/Hooks.ts +73 -81
  44. package/src/Httpx.ts +1457 -1466
  45. package/src/LockFunction.ts +62 -62
  46. package/src/Log.ts +258 -259
  47. package/src/ModuleRaid.js +1 -0
  48. package/src/Progress.ts +108 -114
  49. package/src/TryCatch.ts +86 -86
  50. package/src/Utils.ts +4772 -4825
  51. package/src/UtilsCommon.ts +14 -14
  52. package/src/UtilsGMCookie.ts +254 -261
  53. package/src/UtilsGMMenu.ts +445 -454
  54. package/src/Vue.ts +233 -229
  55. package/src/WindowApi.ts +59 -59
  56. package/src/ajaxHooker/ajaxHooker.js +1 -0
  57. package/src/indexedDB.ts +497 -502
  58. package/src/types/Event.d.ts +188 -188
  59. package/src/types/Httpx.d.ts +1344 -1343
  60. package/src/types/Log.d.ts +19 -19
  61. package/src/types/Progress.d.ts +20 -20
  62. package/src/types/React.d.ts +119 -119
  63. package/src/types/TryCatch.d.ts +9 -9
  64. package/src/types/UtilsGMCookie.d.ts +93 -93
  65. package/src/types/UtilsGMMenu.d.ts +77 -77
  66. package/src/types/Vue2.d.ts +166 -166
  67. package/src/types/WindowApi.d.ts +14 -14
  68. package/src/types/ajaxHooker.d.ts +151 -151
  69. package/src/types/env.d.ts +7 -2
  70. package/src/types/global.d.ts +31 -31
@@ -10,7 +10,7 @@ var Utils = (function () {
10
10
  if (typeof str !== "string") {
11
11
  return false;
12
12
  }
13
- if (!str.match(/^(\#|)[0-9a-fA-F]{6}$/)) {
13
+ if (!str.match(/^(#|)[0-9a-fA-F]{6}$/)) {
14
14
  return false;
15
15
  }
16
16
  return true;
@@ -24,18 +24,10 @@ var Utils = (function () {
24
24
  */
25
25
  hexToRgba(hex, opacity) {
26
26
  if (!this.isHex(hex)) {
27
- throw new TypeError("输入错误的hex:" + hex);
27
+ throw new TypeError(`输入错误的hex:${hex}`);
28
28
  }
29
29
  return hex && hex.replace(/\s+/g, "").length === 7
30
- ? "rgba(" +
31
- parseInt("0x" + hex.slice(1, 3)) +
32
- "," +
33
- parseInt("0x" + hex.slice(3, 5)) +
34
- "," +
35
- parseInt("0x" + hex.slice(5, 7)) +
36
- "," +
37
- opacity +
38
- ")"
30
+ ? `rgba(${parseInt(`0x${hex.slice(1, 3)}`)},${parseInt(`0x${hex.slice(3, 5)}`)},${parseInt(`0x${hex.slice(5, 7)}`)},${opacity})`
39
31
  : "";
40
32
  }
41
33
  /**
@@ -44,14 +36,15 @@ var Utils = (function () {
44
36
  */
45
37
  hexToRgb(str) {
46
38
  if (!this.isHex(str)) {
47
- throw new TypeError("输入错误的hex:" + str);
39
+ throw new TypeError(`输入错误的hex:${str}`);
48
40
  }
49
41
  /* replace替换查找的到的字符串 */
50
42
  str = str.replace("#", "");
51
43
  /* match得到查询数组 */
52
- let hxs = str.match(/../g);
44
+ const hxs = str.match(/../g);
53
45
  for (let index = 0; index < 3; index++) {
54
- hxs[index] = parseInt(hxs[index], 16);
46
+ const value = parseInt(hxs[index], 16);
47
+ Reflect.set(hxs, index, value);
55
48
  }
56
49
  return hxs;
57
50
  }
@@ -63,16 +56,16 @@ var Utils = (function () {
63
56
  */
64
57
  rgbToHex(redValue, greenValue, blueValue) {
65
58
  /* 验证输入的rgb值是否合法 */
66
- let validPattern = /^\d{1,3}$/;
59
+ const validPattern = /^\d{1,3}$/;
67
60
  if (!validPattern.test(redValue.toString()) ||
68
61
  !validPattern.test(greenValue.toString()) ||
69
62
  !validPattern.test(blueValue.toString()))
70
63
  throw new TypeError("输入错误的rgb颜色值");
71
- let hexs = [redValue.toString(16), greenValue.toString(16), blueValue.toString(16)];
64
+ const hexs = [redValue.toString(16), greenValue.toString(16), blueValue.toString(16)];
72
65
  for (let index = 0; index < 3; index++)
73
66
  if (hexs[index].length == 1)
74
- hexs[index] = "0" + hexs[index];
75
- return "#" + hexs.join("");
67
+ hexs[index] = `0${hexs[index]}`;
68
+ return `#${hexs.join("")}`;
76
69
  }
77
70
  /**
78
71
  * 获取颜色变暗或亮
@@ -81,11 +74,13 @@ var Utils = (function () {
81
74
  */
82
75
  getDarkColor(color, level) {
83
76
  if (!this.isHex(color)) {
84
- throw new TypeError("输入错误的hex:" + color);
77
+ throw new TypeError(`输入错误的hex:${color}`);
85
78
  }
86
- let rgbc = this.hexToRgb(color);
79
+ const rgbc = this.hexToRgb(color);
87
80
  for (let index = 0; index < 3; index++) {
88
- rgbc[index] = Math.floor(rgbc[index] * (1 - level));
81
+ const rgbcItemValue = rgbc[index];
82
+ const value = Math.floor(Number(rgbcItemValue) * (1 - Number(level)));
83
+ Reflect.set(rgbc, index, value);
89
84
  }
90
85
  return this.rgbToHex(rgbc[0], rgbc[1], rgbc[2]);
91
86
  }
@@ -96,40 +91,43 @@ var Utils = (function () {
96
91
  */
97
92
  getLightColor(color, level) {
98
93
  if (!this.isHex(color)) {
99
- throw new TypeError("输入错误的hex:" + color);
94
+ throw new TypeError(`输入错误的hex:${color}`);
100
95
  }
101
- let rgbc = this.hexToRgb(color);
96
+ const rgbc = this.hexToRgb(color);
102
97
  for (let index = 0; index < 3; index++) {
103
- rgbc[index] = Math.floor((255 - rgbc[index]) * level + rgbc[index]);
98
+ const rgbcItemValue = Number(rgbc[index]);
99
+ const value = Math.floor(255 - rgbcItemValue * level + rgbcItemValue);
100
+ Reflect.set(rgbc, index, value);
104
101
  }
105
102
  return this.rgbToHex(rgbc[0], rgbc[1], rgbc[2]);
106
103
  }
107
104
  }
108
105
 
109
106
  class GBKEncoder {
110
- #data = [];
107
+ #data;
111
108
  #U2Ghash = {};
112
109
  #G2Uhash = {};
113
110
  constructor() {
114
- let dataText = this.handleText("4e:020405060f12171f20212326292e2f313335373c40414244464a5155575a5b6263646567686a6b6c6d6e6f727475767778797a7b7c7d7f808182838485878a#909697999c9d9ea3aaafb0b1b4b6b7b8b9bcbdbec8cccfd0d2dadbdce0e2e6e7e9edeeeff1f4f8f9fafcfe,4f:00020304050607080b0c12131415161c1d212328292c2d2e31333537393b3e3f40414244454748494a4b4c525456616266686a6b6d6e7172757778797a7d8081828586878a8c8e909293959698999a9c9e9fa1a2a4abadb0b1b2b3b4b6b7b8b9babbbcbdbec0c1c2c6c7c8c9cbcccdd2d3d4d5d6d9dbe0e2e4e5e7ebecf0f2f4f5f6f7f9fbfcfdff,50:000102030405060708090a#0b0e1011131516171b1d1e20222324272b2f303132333435363738393b3d3f404142444546494a4b4d5051525354565758595b5d5e5f6061626364666768696a6b6d6e6f70717273747578797a7c7d818283848687898a8b8c8e8f909192939495969798999a9b9c9d9e9fa0a1a2a4a6aaabadaeafb0b1b3b4b5b6b7b8b9bcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdced0d1d2d3d4d5d7d8d9dbdcdddedfe0e1e2e3e4e5e8e9eaebeff0f1f2f4f6f7f8f9fafcfdfeff,51:00010203040508#090a0c0d0e0f1011131415161718191a1b1c1d1e1f2022232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e42474a4c4e4f5052535758595b5d5e5f606163646667696a6f727a7e7f838486878a8b8e8f90919394989a9d9e9fa1a3a6a7a8a9aaadaeb4b8b9babebfc1c2c3c5c8cacdced0d2d3d4d5d6d7d8d9dadcdedfe2e3e5e6e7e8e9eaeceef1f2f4f7fe,52:0405090b0c0f101314151c1e1f2122232526272a2c2f313234353c3e4445464748494b4e4f5253555758#595a5b5d5f6062636466686b6c6d6e7071737475767778797a7b7c7e808384858687898a8b8c8d8e8f91929495969798999a9ca4a5a6a7aeafb0b4b5b6b7b8b9babbbcbdc0c1c2c4c5c6c8cacccdcecfd1d3d4d5d7d9dadbdcdddee0e1e2e3e5e6e7e8e9eaebecedeeeff1f2f3f4f5f6f7f8fbfcfd,53:0102030407090a0b0c0e11121314181b1c1e1f2224252728292b2c2d2f3031323334353637383c3d404244464b4c4d505458595b5d65686a6c6d7276797b7c7d7e80818387888a8e8f#90919293949697999b9c9ea0a1a4a7aaabacadafb0b1b2b3b4b5b7b8b9babcbdbec0c3c4c5c6c7cecfd0d2d3d5dadcdddee1e2e7f4fafeff,54:000205070b1418191a1c2224252a303336373a3d3f4142444547494c4d4e4f515a5d5e5f6061636567696a6b6c6d6e6f7074797a7e7f8183858788898a8d919397989c9e9fa0a1a2a5aeb0b2b5b6b7b9babcbec3c5cacbd6d8dbe0e1e2e3e4ebeceff0f1f4f5f6f7f8f9fbfe,55:0002030405080a0b0c0d0e121315161718191a1c1d1e1f212526#28292b2d3234353638393a3b3d40424547484b4c4d4e4f515253545758595a5b5d5e5f60626368696b6f7071727374797a7d7f85868c8d8e9092939596979a9b9ea0a1a2a3a4a5a6a8a9aaabacadaeafb0b2b4b6b8babcbfc0c1c2c3c6c7c8cacbcecfd0d5d7d8d9dadbdee0e2e7e9edeef0f1f4f6f8f9fafbfcff,56:0203040506070a0b0d1011121314151617191a1c1d202122252628292a2b2e2f30333537383a3c3d3e404142434445464748494a4b4f5051525355565a5b5d5e5f6061#636566676d6e6f70727374757778797a7d7e7f80818283848788898a8b8c8d9091929495969798999a9b9c9d9e9fa0a1a2a4a5a6a7a8a9aaabacadaeb0b1b2b3b4b5b6b8b9babbbdbebfc0c1c2c3c4c5c6c7c8c9cbcccdcecfd0d1d2d3d5d6d8d9dce3e5e6e7e8e9eaeceeeff2f3f6f7f8fbfc,57:00010205070b0c0d0e0f101112131415161718191a1b1d1e202122242526272b313234353637383c3d3f414344454648494b52535455565859626365676c6e707172747578797a7d7e7f80#818788898a8d8e8f90919495969798999a9c9d9e9fa5a8aaacafb0b1b3b5b6b7b9babbbcbdbebfc0c1c4c5c6c7c8c9cacccdd0d1d3d6d7dbdcdee1e2e3e5e6e7e8e9eaebeceef0f1f2f3f5f6f7fbfcfeff,58:0103040508090a0c0e0f101213141617181a1b1c1d1f222325262728292b2c2d2e2f31323334363738393a3b3c3d3e3f4041424345464748494a4b4e4f505253555657595a5b5c5d5f6061626364666768696a6d6e6f707172737475767778797a7b7c7d7f82848687888a8b8c#8d8e8f909194959697989b9c9da0a1a2a3a4a5a6a7aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbdbebfc0c2c3c4c6c7c8c9cacbcccdcecfd0d2d3d4d6d7d8d9dadbdcdddedfe0e1e2e3e5e6e7e8e9eaedeff1f2f4f5f7f8fafbfcfdfeff,59:000103050608090a0b0c0e1011121317181b1d1e2021222326282c30323335363b3d3e3f404345464a4c4d505253595b5c5d5e5f616364666768696a6b6c6d6e6f70717275777a7b7c7e7f8085898b8c8e8f90919495989a9b9c9d9fa0a1a2a6#a7acadb0b1b3b4b5b6b7b8babcbdbfc0c1c2c3c4c5c7c8c9cccdcecfd5d6d9dbdedfe0e1e2e4e6e7e9eaebedeeeff0f1f2f3f4f5f6f7f8fafcfdfe,5a:00020a0b0d0e0f101214151617191a1b1d1e2122242627282a2b2c2d2e2f3033353738393a3b3d3e3f414243444547484b4c4d4e4f5051525354565758595b5c5d5e5f60616364656668696b6c6d6e6f7071727378797b7c7d7e808182838485868788898a8b8c8d8e8f9091939495969798999c9d9e9fa0a1a2a3a4a5a6a7a8a9abac#adaeafb0b1b4b6b7b9babbbcbdbfc0c3c4c5c6c7c8cacbcdcecfd0d1d3d5d7d9dadbdddedfe2e4e5e7e8eaecedeeeff0f2f3f4f5f6f7f8f9fafbfcfdfeff,5b:0001020304050607080a0b0c0d0e0f10111213141518191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303133353638393a3b3c3d3e3f4142434445464748494a4b4c4d4e4f52565e606167686b6d6e6f7274767778797b7c7e7f82868a8d8e90919294969fa7a8a9acadaeafb1b2b7babbbcc0c1c3c8c9cacbcdcecf#d1d4d5d6d7d8d9dadbdce0e2e3e6e7e9eaebecedeff1f2f3f4f5f6f7fdfe,5c:0002030507080b0c0d0e10121317191b1e1f2021232628292a2b2d2e2f303233353637434446474c4d5253545657585a5b5c5d5f62646768696a6b6c6d70727374757677787b7c7d7e808384858687898a8b8e8f9293959d9e9fa0a1a4a5a6a7a8aaaeafb0b2b4b6b9babbbcbec0c2c3c5c6c7c8c9cacccdcecfd0d1d3d4d5d6d7d8dadbdcdddedfe0e2e3e7e9ebeceeeff1f2f3f4f5f6f7f8f9fafcfdfeff,5d:00#01040508090a0b0c0d0f10111213151718191a1c1d1f2021222325282a2b2c2f3031323335363738393a3b3c3f4041424344454648494d4e4f5051525354555657595a5c5e5f6061626364656667686a6d6e7071727375767778797a7b7c7d7e7f8081838485868788898a8b8c8d8e8f9091929394959697989a9b9c9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b8b9babbbcbdbebfc0c1c2c3c4c6c7c8c9cacbcccecfd0d1d2d3d4d5d6d7d8d9dadcdfe0e3e4eaeced#f0f5f6f8f9fafbfcff,5e:000407090a0b0d0e1213171e1f20212223242528292a2b2c2f303233343536393a3e3f404143464748494a4b4d4e4f50515253565758595a5c5d5f60636465666768696a6b6c6d6e6f70717577797e8182838588898c8d8e92989b9da1a2a3a4a8a9aaabacaeafb0b1b2b4babbbcbdbfc0c1c2c3c4c5c6c7c8cbcccdcecfd0d4d5d7d8d9dadcdddedfe0e1e2e3e4e5e6e7e9ebecedeeeff0f1f2f3f5f8f9fbfcfd,5f:050607090c0d0e10121416191a1c1d1e21222324#282b2c2e30323334353637383b3d3e3f4142434445464748494a4b4c4d4e4f5154595a5b5c5e5f60636567686b6e6f72747576787a7d7e7f83868d8e8f919394969a9b9d9e9fa0a2a3a4a5a6a7a9abacafb0b1b2b3b4b6b8b9babbbebfc0c1c2c7c8cacbced3d4d5dadbdcdedfe2e3e5e6e8e9eceff0f2f3f4f6f7f9fafc,60:0708090b0c10111317181a1e1f2223242c2d2e3031323334363738393a3d3e404445464748494a4c4e4f5153545657585b5c5e5f606165666e71727475777e80#8182858687888a8b8e8f909193959798999c9ea1a2a4a5a7a9aaaeb0b3b5b6b7b9babdbebfc0c1c2c3c4c7c8c9cccdcecfd0d2d3d4d6d7d9dbdee1e2e3e4e5eaf1f2f5f7f8fbfcfdfeff,61:02030405070a0b0c1011121314161718191b1c1d1e21222528292a2c2d2e2f303132333435363738393a3b3c3d3e4041424344454647494b4d4f50525354565758595a5b5c5e5f606163646566696a6b6c6d6e6f717273747678797a7b7c7d7e7f808182838485868788898a8c8d8f9091929395#969798999a9b9c9e9fa0a1a2a3a4a5a6aaabadaeafb0b1b2b3b4b5b6b8b9babbbcbdbfc0c1c3c4c5c6c7c9cccdcecfd0d3d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e7e8e9eaebecedeeeff0f1f2f3f4f6f7f8f9fafbfcfdfe,62:00010203040507091314191c1d1e2023262728292b2d2f303132353638393a3b3c424445464a4f50555657595a5c5d5e5f6061626465687172747577787a7b7d818283858687888b8c8d8e8f9094999c9d9ea3a6a7a9aaadaeafb0b2b3b4b6b7b8babec0c1#c3cbcfd1d5dddee0e1e4eaebf0f2f5f8f9fafb,63:00030405060a0b0c0d0f10121314151718191c2627292c2d2e30313334353637383b3c3e3f40414447484a51525354565758595a5b5c5d60646566686a6b6c6f707273747578797c7d7e7f81838485868b8d9193949597999a9b9c9d9e9fa1a4a6abafb1b2b5b6b9bbbdbfc0c1c2c3c5c7c8cacbccd1d3d4d5d7d8d9dadbdcdddfe2e4e5e6e7e8ebeceeeff0f1f3f5f7f9fafbfcfe,64:0304060708090a0d0e111215161718191a1d1f222324#252728292b2e2f3031323335363738393b3c3e404243494b4c4d4e4f505153555657595a5b5c5d5f60616263646566686a6b6c6e6f70717273747576777b7c7d7e7f8081838688898a8b8c8d8e8f90939497989a9b9c9d9fa0a1a2a3a5a6a7a8aaabafb1b2b3b4b6b9bbbdbebfc1c3c4c6c7c8c9cacbcccfd1d3d4d5d6d9dadbdcdddfe0e1e3e5e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,65:01020304050607080a0b0c0d0e0f10111314151617191a1b1c1d1e1f2021#222324262728292a2c2d30313233373a3c3d404142434446474a4b4d4e5052535457585a5c5f606164656768696a6d6e6f7173757678797a7b7c7d7e7f8081828384858688898a8d8e8f92949596989a9d9ea0a2a3a6a8aaacaeb1b2b3b4b5b6b7b8babbbebfc0c2c7c8c9cacdd0d1d3d4d5d8d9dadbdcdddedfe1e3e4eaebf2f3f4f5f8f9fbfcfdfeff,66:0104050708090b0d1011121617181a1b1c1e2122232426292a2b2c2e3032333738393a3b3d3f40424445464748494a4d4e505158#595b5c5d5e6062636567696a6b6c6d7172737578797b7c7d7f808183858688898a8b8d8e8f909293949598999a9b9c9e9fa0a1a2a3a4a5a6a9aaabacadafb0b1b2b3b5b6b7b8babbbcbdbfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8dadedfe0e1e2e3e4e5e7e8eaebecedeeeff1f5f6f8fafbfd,67:010203040506070c0e0f1112131618191a1c1e20212223242527292e303233363738393b3c3e3f414445474a4b4d5254555758595a5b5d62636466676b6c6e717476#78797a7b7d8082838586888a8c8d8e8f9192939496999b9fa0a1a4a6a9acaeb1b2b4b9babbbcbdbebfc0c2c5c6c7c8c9cacbcccdced5d6d7dbdfe1e3e4e6e7e8eaebedeef2f5f6f7f8f9fafbfcfe,68:01020304060d1012141518191a1b1c1e1f20222324252627282b2c2d2e2f30313435363a3b3f474b4d4f52565758595a5b5c5d5e5f6a6c6d6e6f707172737578797a7b7c7d7e7f8082848788898a8b8c8d8e90919294959698999a9b9c9d9e9fa0a1a3a4a5a9aaabacaeb1b2b4b6b7b8#b9babbbcbdbebfc1c3c4c5c6c7c8cacccecfd0d1d3d4d6d7d9dbdcdddedfe1e2e4e5e6e7e8e9eaebecedeff2f3f4f6f7f8fbfdfeff,69:00020304060708090a0c0f11131415161718191a1b1c1d1e21222325262728292a2b2c2e2f313233353637383a3b3c3e4041434445464748494a4b4c4d4e4f50515253555658595b5c5f616264656768696a6c6d6f7072737475767a7b7d7e7f8183858a8b8c8e8f909192939697999a9d9e9fa0a1a2a3a4a5a6a9aaacaeafb0b2b3b5b6b8b9babcbd#bebfc0c2c3c4c5c6c7c8c9cbcdcfd1d2d3d5d6d7d8d9dadcdddee1e2e3e4e5e6e7e8e9eaebeceeeff0f1f3f4f5f6f7f8f9fafbfcfe,6a:000102030405060708090b0c0d0e0f10111213141516191a1b1c1d1e20222324252627292b2c2d2e30323334363738393a3b3c3f40414243454648494a4b4c4d4e4f515253545556575a5c5d5e5f60626364666768696a6b6c6d6e6f70727374757677787a7b7d7e7f81828385868788898a8b8c8d8f929394959698999a9b9c9d9e9fa1a2a3a4a5a6#a7a8aaadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,6b:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f252628292a2b2c2d2e2f303133343536383b3c3d3f4041424445484a4b4d4e4f5051525354555657585a5b5c5d5e5f606168696b6c6d6e6f7071727374757677787a7d7e7f808588#8c8e8f909194959798999c9d9e9fa0a2a3a4a5a6a7a8a9abacadaeafb0b1b2b6b8b9babbbcbdbec0c3c4c6c7c8c9caccced0d1d8dadcdddedfe0e2e3e4e5e6e7e8e9ecedeef0f1f2f4f6f7f8fafbfcfeff,6c:000102030408090a0b0c0e12171c1d1e2023252b2c2d31333637393a3b3c3e3f434445484b4c4d4e4f5152535658595a62636566676b6c6d6e6f71737577787a7b7c7f8084878a8b8d8e9192959697989a9c9d9ea0a2a8acafb0b4b5b6b7bac0c1c2c3c6c7c8cbcdcecfd1d2d8#d9dadcdddfe4e6e7e9ecedf2f4f9ff,6d:000203050608090a0d0f101113141516181c1d1f20212223242628292c2d2f30343637383a3f404244494c50555657585b5d5f6162646567686b6c6d707172737576797a7b7d7e7f8081838486878a8b8d8f9092969798999a9ca2a5acadb0b1b3b4b6b7b9babbbcbdbec1c2c3c8c9cacdcecfd0d2d3d4d5d7dadbdcdfe2e3e5e7e8e9eaedeff0f2f4f5f6f8fafdfeff,6e:0001020304060708090b0f12131518191b1c1e1f222627282a2c2e30313335#3637393b3c3d3e3f40414245464748494a4b4c4f5051525557595a5c5d5e606162636465666768696a6c6d6f707172737475767778797a7b7c7d8081828487888a8b8c8d8e91929394959697999a9b9d9ea0a1a3a4a6a8a9abacadaeb0b3b5b8b9bcbebfc0c3c4c5c6c8c9cacccdced0d2d6d8d9dbdcdde3e7eaebecedeeeff0f1f2f3f5f6f7f8fafbfcfdfeff,6f:000103040507080a0b0c0d0e101112161718191a1b1c1d1e1f212223252627282c2e303234353738393a3b3c3d3f404142#43444548494a4c4e4f5051525354555657595a5b5d5f60616364656768696a6b6c6f707173757677797b7d7e7f808182838586878a8b8f909192939495969798999a9b9d9e9fa0a2a3a4a5a6a8a9aaabacadaeafb0b1b2b4b5b7b8babbbcbdbebfc1c3c4c5c6c7c8cacbcccdcecfd0d3d4d5d6d7d8d9dadbdcdddfe2e3e4e5e6e7e8e9eaebecedf0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,70:000102030405060708090a0b0c0d0e0f1012131415161718191c1d1e1f2021222425262728292a#2b2c2d2e2f30313233343637383a3b3c3d3e3f404142434445464748494a4b4d4e505152535455565758595a5b5c5d5f606162636465666768696a6e7172737477797a7b7d818283848687888b8c8d8f90919397989a9b9e9fa0a1a2a3a4a5a6a7a8a9aab0b2b4b5b6babebfc4c5c6c7c9cbcccdcecfd0d1d2d3d4d5d6d7dadcdddee0e1e2e3e5eaeef0f1f2f3f4f5f6f8fafbfcfeff,71:0001020304050607080b0c0d0e0f111214171b1c1d1e1f2021222324252728292a2b2c2d2e323334#353738393a3b3c3d3e3f4041424344464748494b4d4f505152535455565758595a5b5d5f6061626365696a6b6c6d6f707174757677797b7c7e7f8081828385868788898b8c8d8e909192939596979a9b9c9d9ea1a2a3a4a5a6a7a9aaabadaeafb0b1b2b4b6b7b8babbbcbdbebfc0c1c2c4c5c6c7c8c9cacbcccdcfd0d1d2d3d6d7d8d9dadbdcdddedfe1e2e3e4e6e8e9eaebecedeff0f1f2f3f4f5f6f7f8fafbfcfdfeff,72:0001020304050708090a0b0c0d0e0f101112131415161718191a#1b1c1e1f2021222324252627292b2d2e2f3233343a3c3e40414243444546494a4b4e4f505153545557585a5c5e60636465686a6b6c6d707173747677787b7c7d828385868788898c8e9091939495969798999a9b9c9d9ea0a1a2a3a4a5a6a7a8a9aaabaeb1b2b3b5babbbcbdbebfc0c5c6c7c9cacbcccfd1d3d4d5d6d8dadb#95$,30:000102,00b702:c9c7,00a830:0305,2014ff5e20:162618191c1d,30:141508090a0b0c0d0e0f16171011,00:b1d7f7,22:362728110f2a2908371aa52520,231222:992b2e614c483d1d606e6f64651e3534,26:4240,00b020:3233,2103ff0400a4ff:e0e1,203000a7211626:0605,25:cbcfcec7c6a1a0b3b2,203b21:92909193,30:13#95$,21:70717273747576777879#4$,24:88898a8b8c8d8e8f909192939495969798999a9b7475767778797a7b7c7d7e7f808182838485868760616263646566676869##,32:20212223242526272829##,21:606162636465666768696a6b#97$,ff:010203e505060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5de3#95$,30:4142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f90919293#106$a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6#103$,03:9192939495969798999a9b9c9d9e9fa0a1a3a4a5a6a7a8a9#6$b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c3c4c5c6c7c8c9#5$,fe:3536393a3f403d3e41424344##3b3c373831#3334#104$,04:10111213141501161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f#13$30313233343551363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f#11$,02:cacbd9,20:13152535,21:050996979899,22:151f23526667bf,25:505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f7071727381828384858687#88898a8b8c8d8e8f939495bcbde2e3e4e5,2609229530:121d1e#9$,010100e101ce00e0011300e9011b00e8012b00ed01d000ec014d00f301d200f2016b00fa01d400f901:d6d8dadc,00:fcea,0251e7c701:4448,e7c802:61#2$,31:05060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f20212223242526272829#19$,30:212223242526272829,32a333:8e8f9c9d9ea1c4ced1d2d5,fe30ff:e2e4#,212132:31#,20:10#1$,30:fc9b9cfdfe069d9e,fe:494a4b4c4d4e4f50515254555657595a5b5c5d5e5f6061#626364656668696a6b,e7:e7e8e9eaebecedeeeff0f1f2f3,30:07#11$,25:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b#13$,72:dcdddfe2e3e4e5e6e7eaebf5f6f9fdfeff,73:00020405060708090b0c0d0f1011121418191a1f2023242627282d2f30323335363a3b3c3d404142434445464748#494a4b4c4e4f515354555658595a5b5c5d5e5f6162636465666768696a6b6e7071#92$72737475767778797a7b7c7d7f808182838586888a8c8d8f90929394959798999a9c9d9ea0a1a3a4a5a6a7a8aaacadb1b4b5b6b8b9bcbdbebfc1c3c4c5c6c7#cbccced2d3d4d5d6d7d8dadbdcdddfe1e2e3e4e6e8eaebeceeeff0f1f3f4f5f6f7#92$f8f9fafbfcfdfeff,74:0001020407080b0c0d0e1112131415161718191c1d1e1f2021232427292b2d2f31323738393a3b3d3e3f4042434445464748494a4b4c4d#4e4f505152535456585d606162636465666768696a6b6c6e6f717273747578797a#92$7b7c7d7f8284858688898a8c8d8f9192939495969798999a9b9d9fa0a1a2a3a4a5a6aaabacadaeafb0b1b2b3b4b5b6b7b8b9bbbcbdbebfc0c1c2c3c4c5c6c7#c8c9cacbcccdcecfd0d1d3d4d5d6d7d8d9dadbdddfe1e5e7e8e9eaebecedf0f1f2#92$f3f5f8f9fafbfcfdfe,75:0001020305060708090a0b0c0e1012141516171b1d1e202122232426272a2e3436393c3d3f414243444647494a4d5051525355565758#5d5e5f60616263646768696b6c6d6e6f7071737576777a7b7c7d7e808182848587#92$88898a8c8d8e909395989b9c9ea2a6a7a8a9aaadb6b7babbbfc0c1c6cbcccecfd0d1d3d7d9dadcdddfe0e1e5e9ecedeeeff2f3f5f6f7f8fafbfdfe,76:02040607#08090b0d0e0f11121314161a1c1d1e212327282c2e2f31323637393a3b3d414244#92$45464748494a4b4e4f50515253555758595a5b5d5f6061626465666768696a6c6d6e7071727374757677797a7c7f80818385898a8c8d8f9092949597989a9b#9c9d9e9fa0a1a2a3a5a6a7a8a9aaabacadafb0b3b5b6b7b8b9babbbcbdbec0c1c3,554a963f57c3632854ce550954c076:914c,853c77ee827e788d72319698978d6c285b894ffa630966975cb880fa684880ae660276ce51f9655671ac7ff1888450b2596561ca6fb382ad634c625253ed54277b06516b75a45df462d48dcb9776628a8019575d97387f627238767d67cf767e64464f708d2562dc7a17659173ed642c6273822c9881677f724862:6ecc,4f3474e3534a529e7eca90a65e2e6886699c81807ed168d278c5868c9551508d8c2482de80de53058912526576:c4c7c9cbccd3d5d9dadcdddee0e1e2e3e4e6e7e8e9eaebecedf0f3f5f6f7fafbfdff,77:00020305060a0c0e0f1011121314151617181b1c1d1e21232425272a2b#2c2e3031323334393b3d3e3f4244454648494a4b4c4d4e4f52535455565758595c,858496f94fdd582199715b9d62:b1a5,66b48c799c8d7206676f789160b253:5117,8f8880cc8d1d94a1500d72c8590760eb711988ab595482ef672c7b285d297ef7752d6cf58e668ff8903c9f3b6bd491197b145f7c78a784d6853d6b:d5d9d6,5e:0187,75f995ed655d5f:0ac5,8f9f58c181c2907f965b97ad8fb97f168d2c62414fbf53:d85e,8f:a8a9ab,904d68075f6a819888689cd6618b522b762a5f6c658c6fd26ee85bbe644851:75b0,67c44e1979c9997c70b377:5d5e5f606467696a6d6e6f7071727374757677787a7b7c818283868788898a8b8f90939495969798999a9b9c9d9ea1a3a4a6a8abadaeafb1b2b4b6b7b8b9ba#bcbec0c1c2c3c4c5c6c7c8c9cacbcccecfd0d1d2d3d4d5d6d8d9dadddedfe0e1e4,75c55e7673bb83e064ad62e894b56ce2535a52c3640f94c27b944f2f5e1b823681:168a,6e246cca9a736355535c54fa886557e04e0d5e036b657c3f90e8601664e6731c88c16750624d8d22776c8e2991c75f6983dc8521991053c286956b8b60:ede8,707f82:cd31,4ed36ca785cf64cd7cd969fd66f9834953957b564fa7518c6d4b5c428e6d63d253c983:2c36,67e578b4643d5bdf5c945dee8be762c667f48c7a640063ba8749998b8c177f2094f24ea7961098a4660c731677:e6e8eaeff0f1f2f4f5f7f9fafbfc,78:0304050607080a0b0e0f101315191b1e20212224282a2b2e2f31323335363d3f414243444648494a4b4d4f51535458595a#5b5c5e5f606162636465666768696f7071727374757678797a7b7d7e7f80818283,573a5c1d5e38957f507f80a05382655e7545553150218d856284949e671d56326f6e5de2543570928f66626f64a463a35f7b6f8890f481e38fb05c1866685ff16c8996488d81886c649179f057ce6a59621054484e587a0b60e96f848bda627f901e9a8b79e4540375f4630153196c608fdf5f1b9a70803b9f7f4f885c3a8d647fc565a570bd51:45b2,866b5d075ba062bd916c75748e0c7a2061017b794ec77ef877854e1181ed521d51fa6a7153a88e87950496cf6ec19664695a78:848586888a8b8f9092949596999d9ea0a2a4a6a8a9aaabacadaeafb5b6b7b8babbbcbdbfc0c2c3c4c6c7c8cccdcecfd1d2d3d6d7d8dadbdcdddedfe0e1e2e3#e4e5e6e7e9eaebedeeeff0f1f3f5f6f8f9fbfcfdfeff,79:00020304060708090a0b0c,784050a877d7641089e6590463e35ddd7a7f693d4f20823955984e3275ae7a975e:628a,95ef521b5439708a6376952457826625693f918755076df37eaf882262337ef075b5832878c196cc8f9e614874f78bcd6b64523a8d506b21806a847156f153064e:ce1b,51d17c97918b7c074fc38e7f7be17a9c64675d1450ac810676017cb96dec7fe067515b:58f8,78cb64:ae13,63:aa2b,9519642d8fbe7b5476296253592754466b7950a362345e266b864ee38d37888b5f85902e79:0d0e0f1011121415161718191a1b1c1d1f2021222325262728292a2b2c2d2e2f3031323335363738393d3f42434445474a4b4c4d4e4f505152545558596163#6466696a6b6c6e70717273747576797b7c7d7e7f8283868788898b8c8d8e909192,6020803d62c54e39535590f863b880c665e66c2e4f4660ee6de18bde5f3986cb5f536321515a83616863520063638e4850125c9b79775bfc52307a3b60bc905376d75f:b797,76848e6c706f767b7b4977aa51f3909358244f4e6ef48fea654c7b1b72c46da47fdf5ae162b55e95573084827b2c5e1d5f1f90127f1498a063826ec7789870b95178975b57ab75354f4375385e9760e659606dc06bbf788953fc96d551cb52016389540a94938c038dcc7239789f87768fed8c0d53e079:939495969798999b9c9d9e9fa0a1a2a3a4a5a6a8a9aaabacadaeafb0b1b2b4b5b6b7b8bcbfc2c4c5c7c8cacccecfd0d3d4d6d7d9dadbdcdddee0e1e2e5e8ea#eceef1f2f3f4f5f6f7f9fafcfeff,7a:0104050708090a0c0f10111213151618191b1c,4e0176ef53ee948998769f0e952d5b9a8ba24e:221c,51ac846361c252a8680b4f97606b51bb6d1e515c6296659796618c46901775d890fd77636bd272:8aec,8bfb583577798d4c675c9540809a5ea66e2159927aef77ed953b6bb565ad7f0e58065151961f5bf958a954288e726566987f56e4949d76fe9041638754c659:1a3a,579b8eb267358dfa8235524160f0581586fe5ce89e454fc4989d8bb95a2560765384627c904f9102997f6069800c513f80335c1499756d314e8c7a:1d1f21222425262728292a2b2c2d2e2f303132343536383a3e4041424344454748494a4b4c4d4e4f50525354555658595a5b5c5d5e5f606162636465666768#696a6b6c6d6e6f717273757b7c7d7e828587898a8b8c8e8f909394999a9b9ea1a2,8d3053d17f5a7b4f4f104e4f96006cd573d085e95e06756a7ffb6a0a77fe94927e4151e170e653cd8fd483038d2972af996d6cdb574a82b365b980aa623f963259a84eff8bbf7eba653e83f2975e556198de80a5532a8bfd542080ba5e9f6cb88d3982ac915a54296c1b52067eb7575f711a6c7e7c89594b4efd5fff61247caa4e305c0167ab87025cf0950b98ce75af70fd902251af7f1d8bbd594951e44f5b5426592b657780a45b7562:76c2,8f905e456c1f7b264f:0fd8,670d7a:a3a4a7a9aaabaeafb0b1b2b4b5b6b7b8b9babbbcbdbec0c1c2c3c4c5c6c7c8c9cacccdcecfd0d1d2d3d4d5d7d8dadbdcdde1e2e4e7e8e9eaebeceef0f1f2f3#f4f5f6f7f8fbfcfe,7b:0001020507090c0d0e1012131617181a1c1d1f21222327292d,6d:6eaa,798f88b15f17752b629a8f854fef91dc65a781:2f51,5e9c81508d74526f89868d4b590d50854ed8961c723681798d1f5bcc8ba3964459877f1a549056:760e,8be565396982949976d66e895e72751867:46d1,7aff809d8d76611f79c665628d635188521a94a27f38809b7eb25c976e2f67607bd9768b9ad8818f7f947cd5641e95507a3f54:4ae5,6b4c640162089e3d80f3759952729769845b683c86e496:0194,94ec4e2a54047ed968398ddf801566f45e9a7fb97b:2f303234353637393b3d3f404142434446484a4d4e535557595c5e5f61636465666768696a6b6c6d6f70737476787a7c7d7f81828384868788898a8b8c8e8f#9192939698999a9b9e9fa0a3a4a5aeafb0b2b3b5b6b7b9babbbcbdbebfc0c2c3c4,57c2803f68975de5653b529f606d9f9a4f9b8eac516c5bab5f135de96c5e62f18d21517194a952fe6c9f82df72d757a267848d2d591f8f9c83c754957b8d4f306cbd5b6459d19f1353e486ca9aa88c3780a16545987e56fa96c7522e74dc52505be1630289024e5662d0602a68fa51735b9851a089c27ba199867f5060ef704c8d2f51495e7f901b747089c4572d78455f529f9f95fa8f689b3c8be17678684267dc8d:ea35,523d8f8a6eda68cd950590ed56fd679c88f98fc754c87b:c5c8c9cacbcdcecfd0d2d4d5d6d7d8dbdcdedfe0e2e3e4e7e8e9ebecedeff0f2f3f4f5f6f8f9fafbfdff,7c:0001020304050608090a0d0e101112131415171819#1a1b1c1d1e20212223242528292b2c2d2e2f3031323334353637393a3b3c3d3e42,9ab85b696d776c264ea55bb39a87916361a890af97e9542b6db55bd251fd558a7f:55f0,64bc634d65f161be608d710a6c:5749,592f676d822a58d5568e8c6a6beb90dd597d801753f76d695475559d83:77cf,683879be548c4f55540876d28c8996026cb36db88d6b89109e648d3a563f9ed175d55f8872e0606854fc4ea86a2a886160528f7054c470d886799e3f6d2a5b8f5f187ea255894faf7334543c539a501954:0e7c,4e4e5ffd745a58f6846b80e1877472d07cca6e567c:434445464748494a4b4c4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f70717275767778797a7e7f8081828384858687#888a8b8c8d8e8f90939496999a9ba0a1a3a6a7a8a9abacadafb0b4b5b6b7b8babb,5f27864e552c62a44e926caa623782b154d7534e733e6ed1753b521253168bdd69d05f8a60006dee574f6b2273af68538fd87f13636260a3552475ea8c6271156da35ba65e7b8352614c9ec478fa87577c27768751f060f6714c66435e4c604d8c0e707063258f895fbd606286d456de6bc160946167534960e066668d3f79fd4f1a70e96c478b:b3f2,7ed88364660f5a5a9b426d:51f7,8c416d3b4f19706b83b7621660d1970d8d27797851fb57:3efa,673a75787a3d79ef7b957c:bfc0c2c3c4c6c9cbcecfd0d1d2d3d4d8dadbdddee1e2e3e4e5e6e7e9eaebecedeef0f1f2f3f4f5f6f7f9fafcfdfeff,7d:000102030405060708090b0c0d0e0f10#1112131415161718191a1b1c1d1e1f212324252628292a2c2d2e30313233343536,808c99658ff96fc08ba59e2159ec7ee97f095409678168d88f917c4d96c653ca602575be6c7253735ac97ea7632451e0810a5df184df628051805b634f0e796d524260b86d4e5b:c4c2,8b:a1b0,65e25fcc964559937e:e7aa,560967b759394f735bb652a0835a988a8d3e753294be50477a3c4ef767b69a7e5ac16b7c76d1575a5c167b3a95f4714e517c80a9827059787f04832768c067ec78:b177,62e363617b804fed526a51cf835069db92748d:f531,89c1952e7bad4ef67d:3738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6f70717273747576#78797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798,506582305251996f6e:1085,6da75efa50f559dc5c066d466c5f7586848b686859568bb253209171964d854969127901712680f64ea490ca6d479a845a0756bc640594f077eb4fa5811a72e189d2997a7f347ede527f655991758f:7f83,53eb7a9663:eda5,768679f888579636622a52ab8282685467706377776b7aed6d017ed389e359d0621285c982a5754c501f4ecb75a58beb5c4a5dfe7b4b65a491d14eca6d25895f7d2795264ec58c288fdb9773664b79818fd170ec6d787d:999a9b9c9d9e9fa0a1a2a3a4a5a7a8a9aaabacadafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9#dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fa,5c3d52b283465162830e775b66769cb84eac60ca7c:beb3,7ecf4e958b66666f988897595883656c955c5f8475c997567a:dfde,51c070af7a9863ea7a767ea0739697ed4e4570784e5d915253a965:51e7,81fc8205548e5c31759a97a062d872d975bd5c459a7983ca5c40548077e94e3e6cae805a62d2636e5de851778ddd8e1e952f4ff153e560e770ac526763509e435a1f5026773753777ee26485652b628963985014723589c951b38bc07edd574783cc94a7519b541b5cfb7d:fbfcfdfeff,7e:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f30313233343536373839#3a3c3d3e3f40424344454648494a4b4c4d4e4f505152535455565758595a5b5c5d,4fca7ae36d5a90e19a8f55805496536154af5f0063e9697751ef6168520a582a52d8574e780d770b5eb761777ce062:5b97,4ea27095800362f770e49760577782db67ef68f578d5989779d158f354b353ef6e34514b523b5ba28bfe80af554357a660735751542d7a7a60505b5463a762a053e362635bc767af54ed7a9f82e691775e9388e4593857ae630e8de880ef57577b774fa95feb5bbd6b3e53217b5072c2684677:ff36,65f751b54e8f76d45cbf7aa58475594e9b4150807e:5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f8081838485868788898a8b8c8d8e8f909192939495969798999a9c9d9e#aeb4bbbcd6e4ecf9,7f:0a101e37393b3c3d3e3f404143464748494a4b4c4d4e4f5253,998861276e8357646606634656f062:ec69,5ed39614578362c955878721814a8fa3556683b167658d5684dd5a6a680f62e67bee961151706f9c8c3063fd89c861d27f0670c26ee57405699472fc5eca90ce67176d6a635e52b3726280014f6c59e5916a70d96d9d52d24e5096f7956d857e78ca7d2f5121579264c2808b7c7b6cea68f1695e51b7539868a872819ece7bf172f879bb6f137406674e91cc9ca4793c83:8954,540f68174e3d538952b1783e5386522950884f:8bd0,7f:56595b5c5d5e6063646566676b6c6d6f7073757677787a7b7c7d7f8082838485868788898b8d8f9091929395969798999b9ca0a2a3a5a6a8a9aaabacadaeb1#b3b4b5b6b7babbbec0c2c3c4c6c7c8c9cbcdcfd0d1d2d3d6d7d9dadbdcdddee2e3,75e27acb7c926ca596b6529b748354e94fe9805483b28fde95705ec9601c6d9f5e18655b813894fe604b70bc7ec37cae51c968817cb1826f4e248f8691cf667e4eae8c0564a9804a50da759771ce5be58fbd6f664e86648295635ed66599521788c270c852a3730e7433679778f797164e3490bb9cde6dcb51db8d41541d62ce73b283f196f69f8494c34f367f9a51cc707596755cad988653e64ee46e9c740969b4786b998f7559521876246d4167f3516d9f99804b54997b3c7abf7f:e4e7e8eaebecedeff2f4f5f6f7f8f9fafdfeff,80:020708090a0e0f11131a1b1d1e1f2123242b2c2d2e2f303234393a3c3e404144454748494e4f505153555657#595b5c5d5e5f6061626364656667686b6c6d6e6f7072737475767778797a7b7c7d,9686578462e29647697c5a0464027bd36f0f964b82a6536298855e90708963b35364864f9c819e93788c97328d:ef42,9e7f6f5e79845f559646622e9a74541594dd4fa365c55c:6561,7f1586516c2f5f8b73876ee47eff5ce6631b5b6a6ee653754e7163a0756562a18f6e4f264ed16ca67eb68bba841d87ba7f57903b95237ba99aa188f8843d6d1b9a867edc59889ebb739b780186829a:6c82,561b541757cb4e709ea653568fc881097792999286ee6ee1851366fc61626f2b80:7e818285888a8d8e8f909192949597999ea3a6a7a8acb0b3b5b6b8b9bbc5c7c8c9cacbcfd0d1d2d3d4d5d8dfe0e2e3e6eef5f7f9fbfeff,81:000103040507080b#0c1517191b1c1d1f202122232425262728292a2b2d2e3033343537393a3b3c3d3f,8c298292832b76f26c135fd983bd732b8305951a6bdb77db94c6536f830251925e3d8c8c8d384e4873ab679a68859176970971646ca177095a9295416bcf7f8e66275bd059b95a9a95:e8f7,4eec84:0c99,6aac76df9530731b68a65b5f772f919a97617cdc8ff78c1c5f257c7379d889c56ccc871c5bc65e4268c977207ef551:954d,52c95a297f05976282d763cf778485d079d26e3a5e9959998511706d6c1162bf76bf654f60af95fd660e879f9e2394ed54:0d7d,8c2c647881:40414243444547494d4e4f525657585b5c5d5e5f6162636466686a6b6c6f727375767778818384858687898b8c8d8e90929394959697999a9e9fa0a1a2a4a5#a7a9abacadaeafb0b1b2b4b5b6b7b8b9bcbdbebfc4c5c7c8c9cbcdcecfd0d1d2d3,647986116a21819c78e864699b5462b9672b83ab58a89ed86cab6f205bde964c8c0b725f67d062c772614ea959c66bcd589366ae5e5552df6155672876ee776672677a4662ff54:ea50,94a090a35a1c7eb36c164e435976801059485357753796be56ca63208111607c95f96dd65462998151855ae980fd59ae9713502a6ce55c3c62df4f60533f817b90066eba852b62c85e7478be64b5637b5ff55a18917f9e1f5c3f634f80425b7d556e95:4a4d,6d8560a867e072de51dd5b8181:d4d5d6d7d8d9dadbdcdddedfe0e1e2e4e5e6e8e9ebeeeff0f1f2f5f6f7f8f9fafdff,82:030708090a0b0e0f111315161718191a1d2024252627292e323a3c3d3f#404142434546484a4c4d4e5051525354555657595b5c5d5e606162636465666769,62e76cde725b626d94ae7ebd81136d53519c5f04597452aa6012597366968650759f632a61e67cef8bfa54e66b279e256bb485d5545550766ca4556a8db4722c5e156015743662cd6392724c5f986e436d3e65006f5876d878d076fc7554522453db4e535e9e65c180:2ad6,629b5486522870ae888d8dd16ce1547880da57f988f48d54966a914d4f696c9b55b776c6783062a870f96f8e5f6d84ec68da787c7bf781a8670b9e4f636778b0576f7812973962:79ab,528874356bd782:6a6b6c6d71757677787b7c808183858687898c90939495969a9b9ea0a2a3a7b2b5b6babbbcbfc0c2c3c5c6c9d0d6d9dadde2e7e8e9eaecedeef0f2f3f5f6f8#fafcfdfeff,83:000a0b0d1012131618191d1e1f20212223242526292a2e3032373b3d,5564813e75b276ae533975de50fb5c418b6c7bc7504f72479a9798d86f0274e27968648777a562fc98918d2b54c180584e52576a82f9840d5e7351ed74f68bc45c4f57616cfc98875a4678349b448feb7c955256625194fa4ec68386846183e984b257d467345703666e6d668c3166dd7011671f6b3a6816621a59bb4e0351c46f0667d26c8f517668cb59476b6775665d0e81109f5065d779:4841,9a918d775c824e5e4f01542f5951780c56686c148fc45f036c:7de3,8bab639083:3e3f41424445484a4b4c4d4e5355565758595d6270717273747576797a7e7f808182838487888a8b8c8d8f909194959697999a9d9fa1a2a3a4a5a6a7acadae#afb5bbbebfc2c3c4c6c8c9cbcdced0d1d2d3d5d7d9dadbdee2e3e4e6e7e8ebeced,60706d3d7275626694:8ec5,53438fc17b7e4edf8c264e7e9ed494:b1b3,524d6f5c90636d458c3458115d4c6b:2049,67aa545b81547f8c589985375f3a62a26a47953965726084686577a74e544fa85de7979864ac7fd85ced4fcf7a8d520783044e14602f7a8394a64fb54eb279e6743452e482b964d279bd5bdd6c8197528f7b6c22503e537f6e0564ce66746c3060c598778bf75e86743c7a7779cb4e1890b174036c4256da914b6cc58d8b533a86c666f28eaf5c489a716e2083:eeeff3f4f5f6f7fafbfcfeff,84:0002050708090a10121314151617191a1b1e1f20212223292a2b2c2d2e2f30323334353637393a3b3e3f404142434445474849#4a4b4c4d4e4f505253545556585d5e5f606264656667686a6e6f70727477797b7c,53d65a369f8b8da353bb570898a76743919b6cc9516875ca62f372ac52:389d,7f3a7094763853749e4a69b7786e96c088d97fa471:36c3,518967d374e458e4651856b78ba9997662707ed560f970ed58ec4e:c1ba,5fcd97e74efb8ba45203598a7eab62544ecd65e5620e833884c98363878d71946eb65bb97ed2519763c967d480898339881551125b7a59828fb14e736c5d516589258f6f962e854a745e95:10f0,6da682e55f3164926d128428816e9cc3585e8d5b4e0953c184:7d7e7f8081838485868a8d8f90919293949596989a9b9d9e9fa0a2a3a4a5a6a7a8a9aaabacadaeb0b1b3b5b6b7bbbcbec0c2c3c5c6c7c8cbcccecfd2d4d5d7#d8d9dadbdcdee1e2e4e7e8e9eaebedeeeff1f2f3f4f5f6f7f8f9fafbfdfe,85:000102,4f1e6563685155d34e2764149a9a626b5ac2745f82726da968ee50e7838e7802674052396c997eb150bb5565715e7b5b665273ca82eb67495c715220717d886b95ea965564c58d6181b355846c5562477f2e58924f2455468d4f664c4e0a5c1a88f368a2634e7a0d70e7828d52fa97f65c1154e890b57ecd59628d4a86c782:0c0d,8d6664445c0461516d89793e8bbe78377533547b4f388eab6df15a207ec5795e6c885ba15a76751a80be614e6e1758f075:1f25,727253477ef385:030405060708090a0b0d0e0f101214151618191b1c1d1e2022232425262728292a2d2e2f303132333435363e3f404142444546474b4c4d4e4f505152535455#57585a5b5c5d5f60616263656667696a6b6c6d6e6f707173757677787c7d7f8081,770176db526980dc57235e08593172ee65bd6e7f8bd75c388671534177f362fe65f64ec098df86805b9e8bc653f277e24f7f5c4e9a7659cb5f0f793a58eb4e1667ff4e8b62ed8a93901d52bf662f55dc566c90024ed54f8d91ca99706c0f5e0260435ba489c68bd56536624b99965b:88ff,6388552e53d77626517d852c67a268b36b8a62928f9353d482126dd1758f4e668d4e5b70719f85af66:91d9,7f7287009ecd9f205c5e672f8ff06811675f620d7ad658855eb665706f3185:82838688898a8b8c8d8e909192939495969798999a9d9e9fa0a1a2a3a5a6a7a9abacadb1b2b3b4b5b6b8babbbcbdbebfc0c2c3c4c5c6c7c8cacbcccdced1d2#d4d6d7d8d9dadbdddedfe0e1e2e3e5e6e7e8eaebecedeeeff0f1f2f3f4f5f6f7f8,60555237800d6454887075295e05681362f4971c53cc723d8c016c3477617a0e542e77ac987a821c8bf47855671470c165af64955636601d79c153f84e1d6b7b80865bfa55e356db4f:3a3c,99725df3677e80386002988290015b8b8b:bcf5,641c825864de55fd82cf91654fd77d20901f7c9f50f358516eaf5bbf8bc980839178849c7b97867d96:8b8f,7ee59ad3788e5c817a57904296a7795f5b59635f7b0b84d168ad55067f2974107d2295016240584c4ed65b835979585485:f9fafcfdfe,86:0001020304060708090a0b0c0d0e0f10121314151718191a1b1c1d1e1f20212223242526282a2b2c2d2e2f3031323334353637393a3b3d3e3f40#4142434445464748494a4b4c525355565758595b5c5d5f6061636465666768696a,736d631e8e:4b0f,80ce82d462ac53f06cf0915e592a60016c70574d644a8d2a762b6ee9575b6a8075f06f6d8c:2d08,57666bef889278b363a253f970ad6c645858642a580268e0819b55107cd650188eba6dcc8d9f70eb638f6d9b6ed47ee68404684390036dd896768ba85957727985e4817e75bc8a8a68af52548e22951163d098988e44557c4f5366ff568f60d56d9552435c4959296dfb586b75:301c,606c82148146631167618fe2773a8d:f334,94c15e165385542c70c386:6d6f7072737475767778838485868788898e8f90919294969798999a9b9e9fa0a1a2a5a6abadaeb2b3b7b8b9bbbcbdbebfc1c2c3c5c8cccdd2d3d5d6d7dadc#dde0e1e2e3e5e6e7e8eaebeceff5f6f7fafbfcfdff,87:010405060b0c0e0f10111416,6c405ef7505c4ead5ead633a8247901a6850916e77b3540c94dc5f647ae5687663457b527edf75db507762955934900f51f879c37a8156fe5f9290146d825c60571f541051546e4d56e263a89893817f8715892a9000541e5c6f81c062:d658,81319e3596409a:6e7c,692d59a562d3553e631654c786d96d3c5a0374e6889c6b6a59168c4c5f2f6e7e73a9987d4e3870f75b8c7897633d665a769660cb5b9b5a494e0781556c6a738b4ea167897f515f8065fa671b5fd859845a0187:191b1d1f20242627282a2b2c2d2f303233353638393a3c3d404142434445464a4b4d4f505152545556585a5b5c5d5e5f6162666768696a6b6c6d6f71727375#7778797a7f8081848687898a8c8e8f90919294959698999a9b9c9d9ea0a1a2a3a4,5dcd5fae537197e68fdd684556f4552f60df4e3a6f4d7ef482c7840e59d44f:1f2a,5c3e7eac672a851a5473754f80c355829b4f4f4d6e2d8c135c096170536b761f6e29868a658795fb7eb9543b7a337d0a95ee55e17fc174ee631d87176da17a9d621165a1536763e16c835deb545c94a84e4c6c618bec5c4b65e0829c68a754:3e34,6b:cb66,4e9463425348821e4f:0dae,575e620a96fe6664726952:ffa1,609f8bef661471996790897f785277fd6670563b54389521727a87:a5a6a7a9aaaeb0b1b2b4b6b7b8b9bbbcbebfc1c2c3c4c5c7c8c9cccdcecfd0d4d5d6d7d8d9dadcdddedfe1e2e3e4e6e7e8e9ebecedeff0f1f2f3f4f5f6f7f8#fafbfcfdff,88:0001020405060708090b0c0d0e0f101112141718191a1c1d1e1f2023,7a00606f5e0c6089819d591560dc718470ef6eaa6c5072806a8488ad5e2d4e605ab3559c94e36d177cfb9699620f7ec6778e867e5323971e8f9666875ce14fa072ed4e0b53a6590f54136380952851484ed99c9c7ea454b88d248854823795f26d8e5f265acc663e966973:b02e,53bf817a99857fa15baa96:7750,7ebf76f853a2957699997bb189446e584e617fd479658be660f354cd4eab98795df76a6150cf54118c618427785d9704524a54ee56a395006d885bb56dc6665388:2425262728292a2b2c2d2e2f30313334353637383a3b3d3e3f414243464748494a4b4e4f505152535556585a5b5c5d5e5f6066676a6d6f717374757678797a#7b7c80838687898a8c8e8f90919394959798999a9b9d9e9fa0a1a3a5a6a7a8a9aa,5c0f5b5d6821809655787b11654869544e9b6b47874e978b534f631f643a90aa659c80c18c10519968b0537887f961c86c:c4fb,8c225c5185aa82af950c6b238f9b65b05f:fbc3,4fe18845661f8165732960fa51745211578b5f6290a2884c91925e78674f602759d351:44f6,80f853086c7996c4718a4f:11ee,7f9e673d55c5950879c088967ee3589f620c9700865a5618987b5f908bb884c4915753d965ed5e8f755c60647d6e5a7f7e:eaed,8f6955a75ba360ac65cb738488:acaeafb0b2b3b4b5b6b8b9babbbdbebfc0c3c4c7c8cacbcccdcfd0d1d3d6d7dadbdcdddee0e1e6e7e9eaebecedeeeff2f5f6f7fafbfdff,89:0001030405060708#090b0c0d0e0f1114151617181c1d1e1f20222324262728292c2d2e2f3132333537,9009766377297eda9774859b5b667a7496ea884052cb718f5faa65ec8be25bfb9a6f5de16b896c5b8b:adaf,900a8fc5538b62bc9e:262d,54404e2b82bd7259869c5d1688596daf96c554d14e9a8bb6710954bd960970df6df976d04e25781487125ca95ef68a00989c960e708e6cbf594463a9773c884d6f148273583071d5538c781a96c155015f6671305bb48c1a9a8c6b83592e9e2f79e76768626c4f6f75a17f8a6d0b96336c274ef075d2517b68376f3e908081705996747689:38393a3b3c3d3e3f40424345464748494a4b4c4d4e4f505152535455565758595a5b5c5d6061626364656768696a6b6c6d6e6f707172737475767778797a7c#7d7e808284858788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1,64475c2790657a918c2359da54ac8200836f898180006930564e8036723791ce51b64e5f987563964e1a53f666f3814b591c6db24e0058f9533b63d694f14f:9d0a,886398905937905779fb4eea80f075916c825b9c59e85f5d69058681501a5df24e5977e34ee5827a6291661390915c794ebf5f7981c69038808475ab4ea688d4610f6bc55fc64e4976ca6ea28b:e3ae,8c0a8bd15f027f:fccc,7ece83:356b,56e06bb797f3963459fb541f94f66deb5bc5996e5c395f15969089:a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c3cdd3d4d5d7d8d9dbdddfe0e1e2e4e7e8e9eaecedeef0f1f2f4f5f6f7f8f9fa#fbfcfdfeff,8a:01020304050608090a0b0c0d0e0f101112131415161718191a1b1c1d,537082f16a315a749e705e947f2883b984:2425,836787478fce8d6276c85f719896786c662054df62e54f6381c375c85eb896cd8e0a86f9548f6cf36d8c6c38607f52c775285e7d4f1860a05fe75c24753190ae94c072b96cb96e389149670953:cbf3,4f5191c98bf153c85e7c8fc26de44e8e76c26986865e611a82064f:59de,903e9c7c61096e:1d14,96854e885a3196e84e0e5c7f79b95b878bed7fbd738957df828b90c15401904755bb5cea5fa161086b3272f180b28a:891e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3f4041424344454647494a4b4c4d4e4f505152535455565758595a5b5c5d5e#5f606162636465666768696a6b6c6d6e6f7071727374757677787a7b7c7d7e7f80,6d745bd388d598848c6b9a6d9e336e0a51:a443,57a38881539f63f48f9556ed54585706733f6e907f188fdc82d1613f6028966266f07ea68d:8ac3,94a55cb37ca4670860a6960580184e9190e75300966851418fd08574915d665597f55b55531d78386742683d54c9707e5bb08f7d518d572854b1651266828d:5e43,810f846c906d7cdf51ff85fb67a365e96fa186a48e81566a90207682707671e58d2362e952196cfd8d3c600e589e618e66fe8d60624e55b36e23672d8f678a:81828384858687888b8c8d8e8f9091929495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2#c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3,94e195f87728680569a8548b4e4d70b88bc86458658b5b857a84503a5be877bb6be18a797c986cbe76cf65a98f975d2d5c5586386808536062187ad96e5b7efd6a1f7ae05f706f335f20638c6da867564e085e108d264ed780c07634969c62db662d627e6cbc8d7571677f695146808753ec906e629854f286f08f998005951785178fd96d5973cd659f771f7504782781fb8d1e94884fa6679575b98bca9707632f9547963584b8632377415f8172f04e896014657462ef6b63653f8a:e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,8b:0001020304050608090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f20212223#24252728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445,5e2775c790d18bc1829d679d652f5431871877e580a281026c414e4b7ec7804c76f4690d6b966267503c4f84574063076b628dbe53ea65e87eb85fd763:1ab7,81:f3f4,7f6e5e1c5cd95236667a79e97a1a8d28709975d46ede6cbb7a924e2d76c55fe0949f88777ec879cd80bf91cd4ef24f17821f54685dde6d328bcc7ca58f7480985e1a549276b15b99663c9aa473e0682a86db6731732a8b:f8db,90107af970db716e62c477a956314e3b845767f152a986c08d2e94f87b518b:464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f6061626364656768696a6b6d6e6f707172737475767778797a7b7c7d7e7f80818283848586#8788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9facb1bbc7d0ea,8c:091e,4f4f6ce8795d9a7b6293722a62fd4e1378168f6c64b08d5a7bc668695e8488c55986649e58ee72b6690e95258ffd8d5857607f008c0651c6634962d95353684c74228301914c55447740707c6d4a517954a88d4459ff6ecb6dc45b5c7d2b4ed47c7d6ed35b5081ea6e0d5b579b0368d58e2a5b977efc603b7eb590b98d70594f63cd79df8db3535265cf79568bc5963b7ec494bb7e825634918967007f6a5c0a907566285de64f5067de505a4f5c57505e:a7#3$,8c:38393a3b3c3d3e3f4042434445484a4b4d4e4f5051525354565758595b5c5d5e5f60636465666768696c6d6e6f707172747576777b7c7d7e7f808183848687#888b8d8e8f90919293959697999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacad,4e:8d0c,51404e105eff53454e:15981e,9b325b6c56694e2879ba4e3f53154e47592d723b536e6c1056df80e499976bd3777e9f174e:369f,9f104e:5c6993,82885b5b556c560f4ec453:8d9da3a5ae,97658d5d53:1af5262e3e,8d5c53:6663,52:02080e2d333f404c5e615c,84af52:7d82819093,51827f544e:bbc3c9c2e8e1ebde,4f1b4ef34f:2264,4ef54f:2527092b5e67,65384f:5a5d,8c:aeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebec#edeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,8d:000102030405060708090a0b0c0d,4f:5f57323d76749189838f7e7baa7cac94e6e8eac5dae3dcd1dff8,50:294c,4ff350:2c0f2e2d,4ffe50:1c0c25287e4355484e6c7ba5a7a9bad6,510650:edece6ee,51:070b,4edd6c3d4f:5865ce,9fa06c467c74516e5dfd9ec999985181591452f9530d8a07531051eb591951554ea051564eb388:6ea4,4eb5811488d279805b3488037fb851:abb1bdbc,8d:0e0f101112131415161718191a1b1c205152575f6568696a6c6e6f717278797a7b7c7d7e7f808283868788898c8d8e8f90929395969798999a9b9c9d9ea0a1#a2a4a5a6a7a8a9aaabacadaeafb0b2b6b7b9bbbdc0c1c2c5c7c8c9cacdd0d2d3d4,51:c796a2a5,8b:a0a6a7aab4b5b7c2c3cbcfced2d3d4d6d8d9dcdfe0e4e8e9eef0f3f6f9fcff,8c:000204070c0f1112141516191b181d1f202125272a2b2e2f32333536,53:697a,96:1d2221312a3d3c4249545f676c7274888d97b0,90:979b9d99aca1b4b3b6ba,8d:d5d8d9dce0e1e2e5e6e7e9edeef0f1f2f4f6fcfeff,8e:00010203040607080b0d0e1011121315161718191a1b1c202124252627282b2d303233343637383b3c3e#3f4345464c4d4e4f505354555657585a5b5c5d5e5f60616263646567686a6b6e71,90:b8b0cfc5bed0c4c7d3e6e2dcd7dbebeffe,91:04221e23312f394346,520d594252:a2acadbe,54ff52:d0d6f0,53df71ee77cd5ef451:f5fc,9b2f53b65f01755a5def57:4ca9a1,58:7ebcc5d1,57:292c2a33392e2f5c3b4269856b867c7b686d7673ada48cb2cfa7b493a0d5d8dad9d2b8f4eff8e4dd,8e:73757778797a7b7d7e808283848688898a8b8c8d8e91929395969798999a9b9d9fa0a1a2a3a4a5a6a7a8a9aaadaeb0b1b3b4b5b6b7b8b9bbbcbdbebfc0c1c2#c3c4c5c6c7c8c9cacbcccdcfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4,58:0b0d,57:fded,58:001e194420656c81899a80,99a89f1961ff82:797d7f8f8aa8848e919799abb8beb0c8cae398b7aecbccc1a9b4a1aa9fc4cea4e1,830982:f7e4,83:0f07,82:dcf4d2d8,830c82:fbd3,83:111a061415,82:e0d5,83:1c515b5c08923c34319b5e2f4f47435f4017602d3a336665,8e:e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,8f:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f20212223#2425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f4041424344,83:681b696c6a6d6eb078b3b4a0aa939c857cb6a97db87b989ea8babcc1,840183:e5d8,580784:180b,83:ddfdd6,84:1c381106,83:d4df,84:0f03,83:f8f9eac5c0,842683:f0e1,84:5c515a597387887a89783c4669768c8e316dc1cdd0e6bdd3cabfbae0a1b9b497e5e3,850c750d853884f085:391f3a,8f:45464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f6061626364656a808c929da0a1a2a4a5a6a7aaacadaeafb2b3b4b5b7b8babbbcbfc0c3c6#c9cacbcccdcfd2d6d7dae0e1e3e7eceff1f2f4f5f6fafbfcfeff,90:07080c0e131518,85:563b,84:fffc,85:594868645e7a,77a285:43727ba4a8878f79ae9c85b9b7b0d3c1dcff,86:270529163c,5efe5f0859:3c41,803759:555a58,530f5c:22252c34,62:4c6a9fbbcadad7ee,632262f663:394b43adf6717a8eb46dac8a69aebcf2f8e0ffc4dece,645263:c6be,64:45410b1b200c26215e846d96,90:191c2324252728292a2b2c303132333437393a3d3f4043454648494a4b4c4e545556595a5c5d5e5f6061646667696a6b6c6f70717273767778797a7b7c7e81#84858687898a8c8d8e8f90929496989a9c9e9fa0a4a5a7a8a9abadb2b7bcbdbfc0,64:7ab7b899bac0d0d7e4e2,65:09252e,5f:0bd2,75195f1153:5ff1fde9e8fb,54:1216064b5253545643215759233282947771649a9b8476669dd0adc2b4d2a7a6d3d472a3d5bbbfccd9dadca9aaa4ddcfde,551b54e7552054fd551454f355:22230f11272a678fb5496d41553f503c,90:c2c3c6c8c9cbcccdd2d4d5d6d8d9dadedfe0e3e4e5e9eaeceef0f1f2f3f5f6f7f9fafbfcff,91:00010305060708090a0b0c0d0e0f1011121314151617181a1b1c#1d1f20212425262728292a2b2c2d2e30323334353637383a3b3c3d3e3f40414244,55:375675767733305c8bd283b1b988819f7ed6917bdfbdbe9499eaf7c9,561f55:d1ebecd4e6ddc4efe5f2f3cccde8f5e4,8f9456:1e080c012423,55fe56:00272d5839572c4d62595c4c548664716b7b7c8593afd4d7dde1f5ebf9ff,57:040a091c,5e:0f191411313b3c,91:454748515354555658595b5c5f606667686b6d737a7b7c808182838486888a8e8f939495969798999c9d9e9fa0a1a4a5a6a7a8a9abacb0b1b2b3b6b7b8b9bb#bcbdbebfc0c1c2c3c4c5c6c8cbd0d2d3d4d5d6d7d8d9dadbdddedfe0e1e2e3e4e5,5e:3744545b5e61,5c:8c7a8d9096889899919a9cb5a2bdacabb1a3c1b7c4d2e4cbe5,5d:020327262e241e061b583e343d6c5b6f5d6b4b4a697482999d,8c735d:b7c5,5f:73778287898c95999ca8adb5bc,88625f6172:adb0b4b7b8c3c1cecdd2e8efe9f2f4f7,730172f3730372fa91:e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,92:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f2021222324#25262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445,72fb73:1713210a1e1d152239252c3831504d57606c6f7e,821b592598e759:2402,99:636768696a6b6c74777d8084878a8d9091939495,5e:80918b96a5a0b9b5beb3,8d535e:d2d1dbe8ea,81ba5f:c4c9d6cf,60035fee60045f:e1e4fe,60:0506,5f:eaedf8,60:1935261b0f0d292b0a3f2178797b7a42,92:464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f7071727375767778797a7b7c7d7e7f808182838485#868788898a8b8c8d8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7,60:6a7d969aad9d83928c9becbbb1ddd8c6dab4,61:20261523,60f461:000e2b4a75ac94a7b7d4f5,5fdd96b395:e9ebf1f3f5f6fcfe,96:030406080a0b0c0d0f12151617191a,4e2c723f62156c:35545c4aa38590948c6869747686a9d0d4adf7f8f1d7b2e0d6faebeeb1d3effe,92:a8a9aaabacadafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8#e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,93:00010203040506070809,6d:39270c43480704190e2b4d2e351a4f525433916f9ea05e93945c607c63,6e1a6d:c7c5de,6e0e6d:bfe0,6e116d:e6ddd9,6e166dab6e0c6dae6e:2b6e4e6bb25f865354322544dfb198e0,6f2d6e:e2a5a7bdbbb7d7b4cf8fc29f,6f:6246472415,6ef96f:2f364b742a0929898d8c78727c7ad1,93:0a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3f40414243444546474849#4a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696b,6f:c9a7b9b6c2e1eedee0ef,70:1a231b39354f5e,5b:80849593a5b8,752f9a9e64345b:e4ee,89305bf08e478b078f:b6d3d5e5eee4e9e6f3e8,90:05040b26110d162135362d2f445152506858625b,66b990:747d8288838b,5f:50575658,5c3b54ab5c:5059,5b715c:6366,7fbc5f:2a292d,82745f3c9b3b5c6e59:81838da9aaa3,93:6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaab#acadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cbcccd,59:97caab9ea4d2b2afd7be,5a:0506,59dd5a0859:e3d8f9,5a:0c09323411231340674a553c6275,80ec5a:aa9b777abeebb2d2d4b8e0e3f1d6e6d8dc,5b:091716323740,5c:151c,5b:5a6573515362,9a:7577787a7f7d808185888a90929396989b9c9d9fa0a2a3a5a7,7e:9fa1a3a5a8a9,93:cecfd0d1d2d3d4d5d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,94:000102030405060708090a0b0c0d#0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e,7e:adb0bec0c1c2c9cbccd0d4d7dbe0e1e8ebeeeff1f2,7f0d7e:f6fafbfe,7f:01020307080b0c0f111217191c1b1f212223242526272a2b2c2d2f3031323335,5e7a757f5ddb753e909573:8e91aea29fcfc2d1b7b3c0c9c8e5d9,987c740a73:e9e7debaf2,74:0f2a5b262528302e2c,94:2f303132333435363738393a3b3c3d3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6c6d6e6f#707172737475767778797a7b7c7d7e7f8081828384919698c7cfd3d4dae6fb,95:1c20,74:1b1a415c575559776d7e9c8e8081878b9ea8a990a7d2ba,97:eaebec,67:4c535e4869a5876a7398a775a89ead8b777cf0,680967d8680a67:e9b0,680c67:d9b5dab3dd,680067:c3b8e2,680e67:c1fd,68:323360614e624464831d55664167403e4a4929b58f7477936bc2,696e68fc69:1f20,68f995:27333d43484b555a606e74757778797a7b7c7d7e808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aa#abacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacb,692468f069:0b0157,68e369:10713960425d846b80987834cc8788ce896663799ba7bbabadd4b1c1cadf95e08dff,6a2f69ed6a:171865,69f26a:443ea0505b358e793d28587c9190a997ab,73:3752,6b:8182878492938d9a9ba1aa,8f:6b6d71727375767877797a7c7e818284878b,95:cccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7ecff,96:0713181b1e20232425262728292b2c2d2f303738393a3e41434a4e4f5152535657#58595a5c5d5e606365666b6d6e6f70717378797a7b7c7d7e7f808182838487898a,8f:8d8e8f989a,8ece62:0b171b1f222125242c,81e774:eff4ff,75:0f1113,65:34eeeff0,66:0a19,677266:031500,708566:f71d34313635,800666:5f54414f56615777848ca79dbedbdce6e9,8d:3233363b3d4045464849474d5559,89:c7cacbcccecfd0d1,72:6e9f5d666f7e7f848b8d8f92,63:0832b0,96:8c8e91929395969a9b9d9e9fa0a1a2a3a4a5a6a8a9aaabacadaeafb1b2b4b5b7b8babbbfc2c3c8cacbd0d1d3d4d6d7d8d9dadbdcdddedfe1e2e3e4e5e6e7eb#ecedeef0f1f2f4f5f8fafbfcfdff,97:0203050a0b0c10111214151718191a1b1d1f20,64:3fd8,80046b:eaf3fdf5f9,6c:0507060d1518191a2129242a32,65:35556b,72:4d525630,8662521680:9f9c93bc,670a80:bdb1abadb4b7e7e8e9eadbc2c4d9cdd7,671080:ddebf1f4ed,81:0d0e,80:f2fc,671581128c5a81:361e2c1832484c5374595a7160697c7d6d67,584d5ab581:888291,6ed581:a3aacc,672681:cabb,97:2122232425262728292b2c2e2f3133343536373a3b3c3d3f404142434445464748494a4b4c4d4e4f5051545557585a5c5d5f63646667686a6b6c6d6e6f7071#72757778797a7b7d7e7f8081828384868788898a8c8e8f9093959697999a9b9c9d,81:c1a6,6b:243739434659,98:d1d2d3d5d9da,6bb35f406bc289f365909f5165:93bcc6c4c3ccced2d6,70:809c969dbbc0b7abb1e8ca,71:1013162f31735c6845724a787a98b3b5a8a0e0d4e7f9,72:1d28,706c71:1866b9,62:3e3d434849,79:3b4046495b5c535a6257606f677a858a9aa7b3,5f:d1d0,97:9e9fa1a2a4a5a6a7a8a9aaacaeb0b1b3b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3#e4e5e8eeeff0f1f2f4f7f8f9fafbfcfdfeff,98:000102030405060708090a0b0c0d0e,60:3c5d5a67415963ab,61:060d5da99dcbd1,620680:807f,6c:93f6,6dfc77:f6f8,78:0009171811,65ab78:2d1c1d393a3b1f3c252c23294e6d56572650474c6a9b939a879ca1a3b2b9a5d4d9c9ecf2,790578f479:13241e34,9f9b9e:f9fbfc,76f177:040d,76f977:07081a22192d263538505147435a68,98:0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d#4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e,77:62657f8d7d808c919fa0b0b5bd,75:3a404e4b485b727983,7f:58615f,8a487f:68747179817e,76:cde5,883294:8586878b8a8c8d8f909497959a9b9ca3a4abaaadacafb0b2b4b6b7b8b9babcbdbfc4c8c9cacbcccdced0d1d2d5d6d7d9d8dbdedfe0e2e4e5e7e8ea,98:6f70717273748b8e929599a3a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcfd0d4d6d7dbdcdde0e1e2e3e4#e5e6e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,99:0001020304050607,94:e9ebeeeff3f4f5f7f9fcfdff,95:03020607090a0d0e0f1213141516181b1d1e1f222a2b292c3132343637383c3e3f4235444546494c4e4f525354565758595b5e5f5d61626465666768696a6b6c6f7172733a,77:e7ec,96c979:d5ede3eb,7a065d477a:03021e14,99:08090a0b0c0e0f1112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2f303132333435363738393a3b3c3d3e3f40414243444546474849#4a4b4c4d4e4f50515253565758595a5b5c5d5e5f60616264667378797b7e828389,7a:393751,9ecf99a57a7076:888e9399a4,74:dee0,752c9e:202228292a2b2c3231363837393a3e414244464748494b4c4e5155575a5b5c5e63666768696a6b6c716d73,75:929496a09daca3b3b4b8c4b1b0c3c2d6cde3e8e6e4ebe7,760375:f1fcff,76:1000050c170a25181519,99:8c8e9a9b9c9d9e9fa0a1a2a3a4a6a7a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8#d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9,76:1b3c2220402d303f35433e334d5e545c566b6f,7fca7a:e6787980868895a6a0aca8adb3,88:6469727d7f82a2c6b7bcc9e2cee3e5f1,891a88:fce8fef0,89:2119131b0a342b3641667b,758b80e576:b2b4,77dc80:1214161c20222526272928310b3543464d526971,898398:788083,99:fafbfcfdfeff,9a:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738#393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f50515253545556575859,98:898c8d8f949a9b9e9fa1a2a5a6,86:4d546c6e7f7a7c7ba88d8bac9da7a3aa93a9b6c4b5ceb0bab1afc9cfb4e9f1f2edf3d0,871386:def4dfd8d1,87:0307,86f887:080a0d09233b1e252e1a3e48343129373f82227d7e7b60704c6e8b53637c64596593afa8d2,9a:5a5b5c5d5e5f606162636465666768696a6b7283898d8e949599a6a9aaabacadaeafb2b3b4b5b9bbbdbebfc3c4c6c7c8c9cacdcecfd0d2d4d5d6d7d9dadbdc#dddee0e2e3e4e5e7e8e9eaeceef0f1f2f3f4f5f6f7f8fafcfdfeff,9b:000102040506,87:c68885ad9783abe5acb5b3cbd3bdd1c0cadbeae0ee,88:1613,87fe88:0a1b21393c,7f:36424445,82107a:fafd,7b:080304150a2b0f47382a192e31202524333e1e585a45754c5d606e7b62727190a6a7b8ac9da885aa9ca2abb4d1c1ccdddae5e6ea,7c0c7b:fefc,7c:0f160b,9b:07090a0b0c0d0e1011121415161718191a1b1c1d1e2021222425262728292a2b2c2d2e3031333435363738393a3d3e3f40464a4b4c4e50525355565758595a#5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b,7c:1f2a26384140,81fe82:010204,81ec884482:2122232d2f282b383b33343e44494b4f5a5f68,88:7e8588d8df,895e7f:9d9fa7afb0b2,7c7c65497c:919d9c9ea2b2bcbdc1c7cccdc8c5d7e8,826e66a87f:bfced5e5e1e6e9eef3,7cf87d:77a6ae,7e:479b,9e:b8b4,8d:73849491b1676d,8c:4749,91:4a504e4f64,9b:7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9ba#bbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadb,91:626170696f7d7e7274798c85908d91a2a3aaadaeafb5b4ba,8c559e7e8d:b8eb,8e:055969,8d:b5bfbcbac4d6d7dadececfdbc6ecf7f8e3f9fbe4,8e098dfd8e:141d1f2c2e232f3a4039353d3149414251524a70767c6f74858f94909c9e,8c:78828a859894,659b89:d6dedadc,9b:dcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,9c:000102030405060708090a0b0c0d0e0f101112131415161718191a#1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b,89:e5ebef,8a3e8b26975396:e9f3ef,97:0601080f0e2a2d303e,9f:808385868788898a8c,9efe9f:0b0d,96:b9bcbdced2,77bf96e092:8eaec8,93:3e6aca8f,94:3e6b,9c:7f8285868788,7a239c:8b8e90919294959a9b9e9fa0a1a2a3a5a6a7a8a9abadaeb0b1b2b3b4b5b6b7babbbcbdc4c5c6c7cacb3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a#7b7d7e808384898a8c8f93969798999daaacafb9bebfc0c1c2c8c9d1d2dadbe0e1cccdcecfd0d3d4d5d7d8d9dcdddfe2,97:7c85919294afaba3b2b4,9a:b1b0b7,9e589a:b6babcc1c0c5c2cbccd1,9b:45434749484d51,98e899:0d2e5554,9a:dfe1e6efebfbedf9,9b:080f131f23,9e:bdbe,7e3b9e:8287888b92,93d69e:9d9fdbdcdde0dfe2e9e7e5eaef,9f:222c2f39373d3e44,9c:e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,9d:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f2021#22232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142#92$434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f8081#82838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2#92$a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1#e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,9e:000102#92$030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e24272e30343b3c404d5052535456595d5f606162656e6f727475767778797a7b7c7d80#8183848586898a8c8d8e8f90919495969798999a9b9c9ea0a1a2a3a4a5a7a8a9aa#92$abacadaeafb0b1b2b3b5b6b7b9babcbfc0c1c2c3c5c6c7c8cacbccd0d2d3d5d6d7d9dadee1e3e4e6e8ebecedeef0f1f2f3f4f5f6f7f8fafdff,9f:000102030405#060708090a0c0f1112141516181a1b1c1d1e1f21232425262728292a2b2d2e3031#92$3233343536383a3c3f4041424345464748494a4b4c4d4e4f52535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778#797a7b7c7d7e81828d8e8f9091929394959697989c9d9ea1a2a3a4a5,f9:2c7995e7f1#92$,fa:0c0d0e0f111314181f20212324272829,e8:15161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f40414243#4445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f6061626364");
111
+ const dataText = this.handleText("4e:020405060f12171f20212326292e2f313335373c40414244464a5155575a5b6263646567686a6b6c6d6e6f727475767778797a7b7c7d7f808182838485878a#909697999c9d9ea3aaafb0b1b4b6b7b8b9bcbdbec8cccfd0d2dadbdce0e2e6e7e9edeeeff1f4f8f9fafcfe,4f:00020304050607080b0c12131415161c1d212328292c2d2e31333537393b3e3f40414244454748494a4b4c525456616266686a6b6d6e7172757778797a7d8081828586878a8c8e909293959698999a9c9e9fa1a2a4abadb0b1b2b3b4b6b7b8b9babbbcbdbec0c1c2c6c7c8c9cbcccdd2d3d4d5d6d9dbe0e2e4e5e7ebecf0f2f4f5f6f7f9fbfcfdff,50:000102030405060708090a#0b0e1011131516171b1d1e20222324272b2f303132333435363738393b3d3f404142444546494a4b4d5051525354565758595b5d5e5f6061626364666768696a6b6d6e6f70717273747578797a7c7d818283848687898a8b8c8e8f909192939495969798999a9b9c9d9e9fa0a1a2a4a6aaabadaeafb0b1b3b4b5b6b7b8b9bcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdced0d1d2d3d4d5d7d8d9dbdcdddedfe0e1e2e3e4e5e8e9eaebeff0f1f2f4f6f7f8f9fafcfdfeff,51:00010203040508#090a0c0d0e0f1011131415161718191a1b1c1d1e1f2022232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e42474a4c4e4f5052535758595b5d5e5f606163646667696a6f727a7e7f838486878a8b8e8f90919394989a9d9e9fa1a3a6a7a8a9aaadaeb4b8b9babebfc1c2c3c5c8cacdced0d2d3d4d5d6d7d8d9dadcdedfe2e3e5e6e7e8e9eaeceef1f2f4f7fe,52:0405090b0c0f101314151c1e1f2122232526272a2c2f313234353c3e4445464748494b4e4f5253555758#595a5b5d5f6062636466686b6c6d6e7071737475767778797a7b7c7e808384858687898a8b8c8d8e8f91929495969798999a9ca4a5a6a7aeafb0b4b5b6b7b8b9babbbcbdc0c1c2c4c5c6c8cacccdcecfd1d3d4d5d7d9dadbdcdddee0e1e2e3e5e6e7e8e9eaebecedeeeff1f2f3f4f5f6f7f8fbfcfd,53:0102030407090a0b0c0e11121314181b1c1e1f2224252728292b2c2d2f3031323334353637383c3d404244464b4c4d505458595b5d65686a6c6d7276797b7c7d7e80818387888a8e8f#90919293949697999b9c9ea0a1a4a7aaabacadafb0b1b2b3b4b5b7b8b9babcbdbec0c3c4c5c6c7cecfd0d2d3d5dadcdddee1e2e7f4fafeff,54:000205070b1418191a1c2224252a303336373a3d3f4142444547494c4d4e4f515a5d5e5f6061636567696a6b6c6d6e6f7074797a7e7f8183858788898a8d919397989c9e9fa0a1a2a5aeb0b2b5b6b7b9babcbec3c5cacbd6d8dbe0e1e2e3e4ebeceff0f1f4f5f6f7f8f9fbfe,55:0002030405080a0b0c0d0e121315161718191a1c1d1e1f212526#28292b2d3234353638393a3b3d40424547484b4c4d4e4f515253545758595a5b5d5e5f60626368696b6f7071727374797a7d7f85868c8d8e9092939596979a9b9ea0a1a2a3a4a5a6a8a9aaabacadaeafb0b2b4b6b8babcbfc0c1c2c3c6c7c8cacbcecfd0d5d7d8d9dadbdee0e2e7e9edeef0f1f4f6f8f9fafbfcff,56:0203040506070a0b0d1011121314151617191a1c1d202122252628292a2b2e2f30333537383a3c3d3e404142434445464748494a4b4f5051525355565a5b5d5e5f6061#636566676d6e6f70727374757778797a7d7e7f80818283848788898a8b8c8d9091929495969798999a9b9c9d9e9fa0a1a2a4a5a6a7a8a9aaabacadaeb0b1b2b3b4b5b6b8b9babbbdbebfc0c1c2c3c4c5c6c7c8c9cbcccdcecfd0d1d2d3d5d6d8d9dce3e5e6e7e8e9eaeceeeff2f3f6f7f8fbfc,57:00010205070b0c0d0e0f101112131415161718191a1b1d1e202122242526272b313234353637383c3d3f414344454648494b52535455565859626365676c6e707172747578797a7d7e7f80#818788898a8d8e8f90919495969798999a9c9d9e9fa5a8aaacafb0b1b3b5b6b7b9babbbcbdbebfc0c1c4c5c6c7c8c9cacccdd0d1d3d6d7dbdcdee1e2e3e5e6e7e8e9eaebeceef0f1f2f3f5f6f7fbfcfeff,58:0103040508090a0c0e0f101213141617181a1b1c1d1f222325262728292b2c2d2e2f31323334363738393a3b3c3d3e3f4041424345464748494a4b4e4f505253555657595a5b5c5d5f6061626364666768696a6d6e6f707172737475767778797a7b7c7d7f82848687888a8b8c#8d8e8f909194959697989b9c9da0a1a2a3a4a5a6a7aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbdbebfc0c2c3c4c6c7c8c9cacbcccdcecfd0d2d3d4d6d7d8d9dadbdcdddedfe0e1e2e3e5e6e7e8e9eaedeff1f2f4f5f7f8fafbfcfdfeff,59:000103050608090a0b0c0e1011121317181b1d1e2021222326282c30323335363b3d3e3f404345464a4c4d505253595b5c5d5e5f616364666768696a6b6c6d6e6f70717275777a7b7c7e7f8085898b8c8e8f90919495989a9b9c9d9fa0a1a2a6#a7acadb0b1b3b4b5b6b7b8babcbdbfc0c1c2c3c4c5c7c8c9cccdcecfd5d6d9dbdedfe0e1e2e4e6e7e9eaebedeeeff0f1f2f3f4f5f6f7f8fafcfdfe,5a:00020a0b0d0e0f101214151617191a1b1d1e2122242627282a2b2c2d2e2f3033353738393a3b3d3e3f414243444547484b4c4d4e4f5051525354565758595b5c5d5e5f60616364656668696b6c6d6e6f7071727378797b7c7d7e808182838485868788898a8b8c8d8e8f9091939495969798999c9d9e9fa0a1a2a3a4a5a6a7a8a9abac#adaeafb0b1b4b6b7b9babbbcbdbfc0c3c4c5c6c7c8cacbcdcecfd0d1d3d5d7d9dadbdddedfe2e4e5e7e8eaecedeeeff0f2f3f4f5f6f7f8f9fafbfcfdfeff,5b:0001020304050607080a0b0c0d0e0f10111213141518191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303133353638393a3b3c3d3e3f4142434445464748494a4b4c4d4e4f52565e606167686b6d6e6f7274767778797b7c7e7f82868a8d8e90919294969fa7a8a9acadaeafb1b2b7babbbcc0c1c3c8c9cacbcdcecf#d1d4d5d6d7d8d9dadbdce0e2e3e6e7e9eaebecedeff1f2f3f4f5f6f7fdfe,5c:0002030507080b0c0d0e10121317191b1e1f2021232628292a2b2d2e2f303233353637434446474c4d5253545657585a5b5c5d5f62646768696a6b6c6d70727374757677787b7c7d7e808384858687898a8b8e8f9293959d9e9fa0a1a4a5a6a7a8aaaeafb0b2b4b6b9babbbcbec0c2c3c5c6c7c8c9cacccdcecfd0d1d3d4d5d6d7d8dadbdcdddedfe0e2e3e7e9ebeceeeff1f2f3f4f5f6f7f8f9fafcfdfeff,5d:00#01040508090a0b0c0d0f10111213151718191a1c1d1f2021222325282a2b2c2f3031323335363738393a3b3c3f4041424344454648494d4e4f5051525354555657595a5c5e5f6061626364656667686a6d6e7071727375767778797a7b7c7d7e7f8081838485868788898a8b8c8d8e8f9091929394959697989a9b9c9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b8b9babbbcbdbebfc0c1c2c3c4c6c7c8c9cacbcccecfd0d1d2d3d4d5d6d7d8d9dadcdfe0e3e4eaeced#f0f5f6f8f9fafbfcff,5e:000407090a0b0d0e1213171e1f20212223242528292a2b2c2f303233343536393a3e3f404143464748494a4b4d4e4f50515253565758595a5c5d5f60636465666768696a6b6c6d6e6f70717577797e8182838588898c8d8e92989b9da1a2a3a4a8a9aaabacaeafb0b1b2b4babbbcbdbfc0c1c2c3c4c5c6c7c8cbcccdcecfd0d4d5d7d8d9dadcdddedfe0e1e2e3e4e5e6e7e9ebecedeeeff0f1f2f3f5f8f9fbfcfd,5f:050607090c0d0e10121416191a1c1d1e21222324#282b2c2e30323334353637383b3d3e3f4142434445464748494a4b4c4d4e4f5154595a5b5c5e5f60636567686b6e6f72747576787a7d7e7f83868d8e8f919394969a9b9d9e9fa0a2a3a4a5a6a7a9abacafb0b1b2b3b4b6b8b9babbbebfc0c1c2c7c8cacbced3d4d5dadbdcdedfe2e3e5e6e8e9eceff0f2f3f4f6f7f9fafc,60:0708090b0c10111317181a1e1f2223242c2d2e3031323334363738393a3d3e404445464748494a4c4e4f5153545657585b5c5e5f606165666e71727475777e80#8182858687888a8b8e8f909193959798999c9ea1a2a4a5a7a9aaaeb0b3b5b6b7b9babdbebfc0c1c2c3c4c7c8c9cccdcecfd0d2d3d4d6d7d9dbdee1e2e3e4e5eaf1f2f5f7f8fbfcfdfeff,61:02030405070a0b0c1011121314161718191b1c1d1e21222528292a2c2d2e2f303132333435363738393a3b3c3d3e4041424344454647494b4d4f50525354565758595a5b5c5e5f606163646566696a6b6c6d6e6f717273747678797a7b7c7d7e7f808182838485868788898a8c8d8f9091929395#969798999a9b9c9e9fa0a1a2a3a4a5a6aaabadaeafb0b1b2b3b4b5b6b8b9babbbcbdbfc0c1c3c4c5c6c7c9cccdcecfd0d3d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e7e8e9eaebecedeeeff0f1f2f3f4f6f7f8f9fafbfcfdfe,62:00010203040507091314191c1d1e2023262728292b2d2f303132353638393a3b3c424445464a4f50555657595a5c5d5e5f6061626465687172747577787a7b7d818283858687888b8c8d8e8f9094999c9d9ea3a6a7a9aaadaeafb0b2b3b4b6b7b8babec0c1#c3cbcfd1d5dddee0e1e4eaebf0f2f5f8f9fafb,63:00030405060a0b0c0d0f10121314151718191c2627292c2d2e30313334353637383b3c3e3f40414447484a51525354565758595a5b5c5d60646566686a6b6c6f707273747578797c7d7e7f81838485868b8d9193949597999a9b9c9d9e9fa1a4a6abafb1b2b5b6b9bbbdbfc0c1c2c3c5c7c8cacbccd1d3d4d5d7d8d9dadbdcdddfe2e4e5e6e7e8ebeceeeff0f1f3f5f7f9fafbfcfe,64:0304060708090a0d0e111215161718191a1d1f222324#252728292b2e2f3031323335363738393b3c3e404243494b4c4d4e4f505153555657595a5b5c5d5f60616263646566686a6b6c6e6f70717273747576777b7c7d7e7f8081838688898a8b8c8d8e8f90939497989a9b9c9d9fa0a1a2a3a5a6a7a8aaabafb1b2b3b4b6b9bbbdbebfc1c3c4c6c7c8c9cacbcccfd1d3d4d5d6d9dadbdcdddfe0e1e3e5e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,65:01020304050607080a0b0c0d0e0f10111314151617191a1b1c1d1e1f2021#222324262728292a2c2d30313233373a3c3d404142434446474a4b4d4e5052535457585a5c5f606164656768696a6d6e6f7173757678797a7b7c7d7e7f8081828384858688898a8d8e8f92949596989a9d9ea0a2a3a6a8aaacaeb1b2b3b4b5b6b7b8babbbebfc0c2c7c8c9cacdd0d1d3d4d5d8d9dadbdcdddedfe1e3e4eaebf2f3f4f5f8f9fbfcfdfeff,66:0104050708090b0d1011121617181a1b1c1e2122232426292a2b2c2e3032333738393a3b3d3f40424445464748494a4d4e505158#595b5c5d5e6062636567696a6b6c6d7172737578797b7c7d7f808183858688898a8b8d8e8f909293949598999a9b9c9e9fa0a1a2a3a4a5a6a9aaabacadafb0b1b2b3b5b6b7b8babbbcbdbfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8dadedfe0e1e2e3e4e5e7e8eaebecedeeeff1f5f6f8fafbfd,67:010203040506070c0e0f1112131618191a1c1e20212223242527292e303233363738393b3c3e3f414445474a4b4d5254555758595a5b5d62636466676b6c6e717476#78797a7b7d8082838586888a8c8d8e8f9192939496999b9fa0a1a4a6a9acaeb1b2b4b9babbbcbdbebfc0c2c5c6c7c8c9cacbcccdced5d6d7dbdfe1e3e4e6e7e8eaebedeef2f5f6f7f8f9fafbfcfe,68:01020304060d1012141518191a1b1c1e1f20222324252627282b2c2d2e2f30313435363a3b3f474b4d4f52565758595a5b5c5d5e5f6a6c6d6e6f707172737578797a7b7c7d7e7f8082848788898a8b8c8d8e90919294959698999a9b9c9d9e9fa0a1a3a4a5a9aaabacaeb1b2b4b6b7b8#b9babbbcbdbebfc1c3c4c5c6c7c8cacccecfd0d1d3d4d6d7d9dbdcdddedfe1e2e4e5e6e7e8e9eaebecedeff2f3f4f6f7f8fbfdfeff,69:00020304060708090a0c0f11131415161718191a1b1c1d1e21222325262728292a2b2c2e2f313233353637383a3b3c3e4041434445464748494a4b4c4d4e4f50515253555658595b5c5f616264656768696a6c6d6f7072737475767a7b7d7e7f8183858a8b8c8e8f909192939697999a9d9e9fa0a1a2a3a4a5a6a9aaacaeafb0b2b3b5b6b8b9babcbd#bebfc0c2c3c4c5c6c7c8c9cbcdcfd1d2d3d5d6d7d8d9dadcdddee1e2e3e4e5e6e7e8e9eaebeceeeff0f1f3f4f5f6f7f8f9fafbfcfe,6a:000102030405060708090b0c0d0e0f10111213141516191a1b1c1d1e20222324252627292b2c2d2e30323334363738393a3b3c3f40414243454648494a4b4c4d4e4f515253545556575a5c5d5e5f60626364666768696a6b6c6d6e6f70727374757677787a7b7d7e7f81828385868788898a8b8c8d8f929394959698999a9b9c9d9e9fa1a2a3a4a5a6#a7a8aaadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,6b:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f252628292a2b2c2d2e2f303133343536383b3c3d3f4041424445484a4b4d4e4f5051525354555657585a5b5c5d5e5f606168696b6c6d6e6f7071727374757677787a7d7e7f808588#8c8e8f909194959798999c9d9e9fa0a2a3a4a5a6a7a8a9abacadaeafb0b1b2b6b8b9babbbcbdbec0c3c4c6c7c8c9caccced0d1d8dadcdddedfe0e2e3e4e5e6e7e8e9ecedeef0f1f2f4f6f7f8fafbfcfeff,6c:000102030408090a0b0c0e12171c1d1e2023252b2c2d31333637393a3b3c3e3f434445484b4c4d4e4f5152535658595a62636566676b6c6d6e6f71737577787a7b7c7f8084878a8b8d8e9192959697989a9c9d9ea0a2a8acafb0b4b5b6b7bac0c1c2c3c6c7c8cbcdcecfd1d2d8#d9dadcdddfe4e6e7e9ecedf2f4f9ff,6d:000203050608090a0d0f101113141516181c1d1f20212223242628292c2d2f30343637383a3f404244494c50555657585b5d5f6162646567686b6c6d707172737576797a7b7d7e7f8081838486878a8b8d8f9092969798999a9ca2a5acadb0b1b3b4b6b7b9babbbcbdbec1c2c3c8c9cacdcecfd0d2d3d4d5d7dadbdcdfe2e3e5e7e8e9eaedeff0f2f4f5f6f8fafdfeff,6e:0001020304060708090b0f12131518191b1c1e1f222627282a2c2e30313335#3637393b3c3d3e3f40414245464748494a4b4c4f5051525557595a5c5d5e606162636465666768696a6c6d6f707172737475767778797a7b7c7d8081828487888a8b8c8d8e91929394959697999a9b9d9ea0a1a3a4a6a8a9abacadaeb0b3b5b8b9bcbebfc0c3c4c5c6c8c9cacccdced0d2d6d8d9dbdcdde3e7eaebecedeeeff0f1f2f3f5f6f7f8fafbfcfdfeff,6f:000103040507080a0b0c0d0e101112161718191a1b1c1d1e1f212223252627282c2e303234353738393a3b3c3d3f404142#43444548494a4c4e4f5051525354555657595a5b5d5f60616364656768696a6b6c6f707173757677797b7d7e7f808182838586878a8b8f909192939495969798999a9b9d9e9fa0a2a3a4a5a6a8a9aaabacadaeafb0b1b2b4b5b7b8babbbcbdbebfc1c3c4c5c6c7c8cacbcccdcecfd0d3d4d5d6d7d8d9dadbdcdddfe2e3e4e5e6e7e8e9eaebecedf0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,70:000102030405060708090a0b0c0d0e0f1012131415161718191c1d1e1f2021222425262728292a#2b2c2d2e2f30313233343637383a3b3c3d3e3f404142434445464748494a4b4d4e505152535455565758595a5b5c5d5f606162636465666768696a6e7172737477797a7b7d818283848687888b8c8d8f90919397989a9b9e9fa0a1a2a3a4a5a6a7a8a9aab0b2b4b5b6babebfc4c5c6c7c9cbcccdcecfd0d1d2d3d4d5d6d7dadcdddee0e1e2e3e5eaeef0f1f2f3f4f5f6f8fafbfcfeff,71:0001020304050607080b0c0d0e0f111214171b1c1d1e1f2021222324252728292a2b2c2d2e323334#353738393a3b3c3d3e3f4041424344464748494b4d4f505152535455565758595a5b5d5f6061626365696a6b6c6d6f707174757677797b7c7e7f8081828385868788898b8c8d8e909192939596979a9b9c9d9ea1a2a3a4a5a6a7a9aaabadaeafb0b1b2b4b6b7b8babbbcbdbebfc0c1c2c4c5c6c7c8c9cacbcccdcfd0d1d2d3d6d7d8d9dadbdcdddedfe1e2e3e4e6e8e9eaebecedeff0f1f2f3f4f5f6f7f8fafbfcfdfeff,72:0001020304050708090a0b0c0d0e0f101112131415161718191a#1b1c1e1f2021222324252627292b2d2e2f3233343a3c3e40414243444546494a4b4e4f505153545557585a5c5e60636465686a6b6c6d707173747677787b7c7d828385868788898c8e9091939495969798999a9b9c9d9ea0a1a2a3a4a5a6a7a8a9aaabaeb1b2b3b5babbbcbdbebfc0c5c6c7c9cacbcccfd1d3d4d5d6d8dadb#95$,30:000102,00b702:c9c7,00a830:0305,2014ff5e20:162618191c1d,30:141508090a0b0c0d0e0f16171011,00:b1d7f7,22:362728110f2a2908371aa52520,231222:992b2e614c483d1d606e6f64651e3534,26:4240,00b020:3233,2103ff0400a4ff:e0e1,203000a7211626:0605,25:cbcfcec7c6a1a0b3b2,203b21:92909193,30:13#95$,21:70717273747576777879#4$,24:88898a8b8c8d8e8f909192939495969798999a9b7475767778797a7b7c7d7e7f808182838485868760616263646566676869##,32:20212223242526272829##,21:606162636465666768696a6b#97$,ff:010203e505060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5de3#95$,30:4142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f90919293#106$a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6#103$,03:9192939495969798999a9b9c9d9e9fa0a1a3a4a5a6a7a8a9#6$b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c3c4c5c6c7c8c9#5$,fe:3536393a3f403d3e41424344##3b3c373831#3334#104$,04:10111213141501161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f#13$30313233343551363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f#11$,02:cacbd9,20:13152535,21:050996979899,22:151f23526667bf,25:505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f7071727381828384858687#88898a8b8c8d8e8f939495bcbde2e3e4e5,2609229530:121d1e#9$,010100e101ce00e0011300e9011b00e8012b00ed01d000ec014d00f301d200f2016b00fa01d400f901:d6d8dadc,00:fcea,0251e7c701:4448,e7c802:61#2$,31:05060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f20212223242526272829#19$,30:212223242526272829,32a333:8e8f9c9d9ea1c4ced1d2d5,fe30ff:e2e4#,212132:31#,20:10#1$,30:fc9b9cfdfe069d9e,fe:494a4b4c4d4e4f50515254555657595a5b5c5d5e5f6061#626364656668696a6b,e7:e7e8e9eaebecedeeeff0f1f2f3,30:07#11$,25:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b#13$,72:dcdddfe2e3e4e5e6e7eaebf5f6f9fdfeff,73:00020405060708090b0c0d0f1011121418191a1f2023242627282d2f30323335363a3b3c3d404142434445464748#494a4b4c4e4f515354555658595a5b5c5d5e5f6162636465666768696a6b6e7071#92$72737475767778797a7b7c7d7f808182838586888a8c8d8f90929394959798999a9c9d9ea0a1a3a4a5a6a7a8aaacadb1b4b5b6b8b9bcbdbebfc1c3c4c5c6c7#cbccced2d3d4d5d6d7d8dadbdcdddfe1e2e3e4e6e8eaebeceeeff0f1f3f4f5f6f7#92$f8f9fafbfcfdfeff,74:0001020407080b0c0d0e1112131415161718191c1d1e1f2021232427292b2d2f31323738393a3b3d3e3f4042434445464748494a4b4c4d#4e4f505152535456585d606162636465666768696a6b6c6e6f717273747578797a#92$7b7c7d7f8284858688898a8c8d8f9192939495969798999a9b9d9fa0a1a2a3a4a5a6aaabacadaeafb0b1b2b3b4b5b6b7b8b9bbbcbdbebfc0c1c2c3c4c5c6c7#c8c9cacbcccdcecfd0d1d3d4d5d6d7d8d9dadbdddfe1e5e7e8e9eaebecedf0f1f2#92$f3f5f8f9fafbfcfdfe,75:0001020305060708090a0b0c0e1012141516171b1d1e202122232426272a2e3436393c3d3f414243444647494a4d5051525355565758#5d5e5f60616263646768696b6c6d6e6f7071737576777a7b7c7d7e808182848587#92$88898a8c8d8e909395989b9c9ea2a6a7a8a9aaadb6b7babbbfc0c1c6cbcccecfd0d1d3d7d9dadcdddfe0e1e5e9ecedeeeff2f3f5f6f7f8fafbfdfe,76:02040607#08090b0d0e0f11121314161a1c1d1e212327282c2e2f31323637393a3b3d414244#92$45464748494a4b4e4f50515253555758595a5b5d5f6061626465666768696a6c6d6e7071727374757677797a7c7f80818385898a8c8d8f9092949597989a9b#9c9d9e9fa0a1a2a3a5a6a7a8a9aaabacadafb0b3b5b6b7b8b9babbbcbdbec0c1c3,554a963f57c3632854ce550954c076:914c,853c77ee827e788d72319698978d6c285b894ffa630966975cb880fa684880ae660276ce51f9655671ac7ff1888450b2596561ca6fb382ad634c625253ed54277b06516b75a45df462d48dcb9776628a8019575d97387f627238767d67cf767e64464f708d2562dc7a17659173ed642c6273822c9881677f724862:6ecc,4f3474e3534a529e7eca90a65e2e6886699c81807ed168d278c5868c9551508d8c2482de80de53058912526576:c4c7c9cbccd3d5d9dadcdddee0e1e2e3e4e6e7e8e9eaebecedf0f3f5f6f7fafbfdff,77:00020305060a0c0e0f1011121314151617181b1c1d1e21232425272a2b#2c2e3031323334393b3d3e3f4244454648494a4b4c4d4e4f52535455565758595c,858496f94fdd582199715b9d62:b1a5,66b48c799c8d7206676f789160b253:5117,8f8880cc8d1d94a1500d72c8590760eb711988ab595482ef672c7b285d297ef7752d6cf58e668ff8903c9f3b6bd491197b145f7c78a784d6853d6b:d5d9d6,5e:0187,75f995ed655d5f:0ac5,8f9f58c181c2907f965b97ad8fb97f168d2c62414fbf53:d85e,8f:a8a9ab,904d68075f6a819888689cd6618b522b762a5f6c658c6fd26ee85bbe644851:75b0,67c44e1979c9997c70b377:5d5e5f606467696a6d6e6f7071727374757677787a7b7c818283868788898a8b8f90939495969798999a9b9c9d9ea1a3a4a6a8abadaeafb1b2b4b6b7b8b9ba#bcbec0c1c2c3c4c5c6c7c8c9cacbcccecfd0d1d2d3d4d5d6d8d9dadddedfe0e1e4,75c55e7673bb83e064ad62e894b56ce2535a52c3640f94c27b944f2f5e1b823681:168a,6e246cca9a736355535c54fa886557e04e0d5e036b657c3f90e8601664e6731c88c16750624d8d22776c8e2991c75f6983dc8521991053c286956b8b60:ede8,707f82:cd31,4ed36ca785cf64cd7cd969fd66f9834953957b564fa7518c6d4b5c428e6d63d253c983:2c36,67e578b4643d5bdf5c945dee8be762c667f48c7a640063ba8749998b8c177f2094f24ea7961098a4660c731677:e6e8eaeff0f1f2f4f5f7f9fafbfc,78:0304050607080a0b0e0f101315191b1e20212224282a2b2e2f31323335363d3f414243444648494a4b4d4f51535458595a#5b5c5e5f606162636465666768696f7071727374757678797a7b7d7e7f80818283,573a5c1d5e38957f507f80a05382655e7545553150218d856284949e671d56326f6e5de2543570928f66626f64a463a35f7b6f8890f481e38fb05c1866685ff16c8996488d81886c649179f057ce6a59621054484e587a0b60e96f848bda627f901e9a8b79e4540375f4630153196c608fdf5f1b9a70803b9f7f4f885c3a8d647fc565a570bd51:45b2,866b5d075ba062bd916c75748e0c7a2061017b794ec77ef877854e1181ed521d51fa6a7153a88e87950496cf6ec19664695a78:848586888a8b8f9092949596999d9ea0a2a4a6a8a9aaabacadaeafb5b6b7b8babbbcbdbfc0c2c3c4c6c7c8cccdcecfd1d2d3d6d7d8dadbdcdddedfe0e1e2e3#e4e5e6e7e9eaebedeeeff0f1f3f5f6f8f9fbfcfdfeff,79:00020304060708090a0b0c,784050a877d7641089e6590463e35ddd7a7f693d4f20823955984e3275ae7a975e:628a,95ef521b5439708a6376952457826625693f918755076df37eaf882262337ef075b5832878c196cc8f9e614874f78bcd6b64523a8d506b21806a847156f153064e:ce1b,51d17c97918b7c074fc38e7f7be17a9c64675d1450ac810676017cb96dec7fe067515b:58f8,78cb64:ae13,63:aa2b,9519642d8fbe7b5476296253592754466b7950a362345e266b864ee38d37888b5f85902e79:0d0e0f1011121415161718191a1b1c1d1f2021222325262728292a2b2c2d2e2f3031323335363738393d3f42434445474a4b4c4d4e4f505152545558596163#6466696a6b6c6e70717273747576797b7c7d7e7f8283868788898b8c8d8e909192,6020803d62c54e39535590f863b880c665e66c2e4f4660ee6de18bde5f3986cb5f536321515a83616863520063638e4850125c9b79775bfc52307a3b60bc905376d75f:b797,76848e6c706f767b7b4977aa51f3909358244f4e6ef48fea654c7b1b72c46da47fdf5ae162b55e95573084827b2c5e1d5f1f90127f1498a063826ec7789870b95178975b57ab75354f4375385e9760e659606dc06bbf788953fc96d551cb52016389540a94938c038dcc7239789f87768fed8c0d53e079:939495969798999b9c9d9e9fa0a1a2a3a4a5a6a8a9aaabacadaeafb0b1b2b4b5b6b7b8bcbfc2c4c5c7c8cacccecfd0d3d4d6d7d9dadbdcdddee0e1e2e5e8ea#eceef1f2f3f4f5f6f7f9fafcfeff,7a:0104050708090a0c0f10111213151618191b1c,4e0176ef53ee948998769f0e952d5b9a8ba24e:221c,51ac846361c252a8680b4f97606b51bb6d1e515c6296659796618c46901775d890fd77636bd272:8aec,8bfb583577798d4c675c9540809a5ea66e2159927aef77ed953b6bb565ad7f0e58065151961f5bf958a954288e726566987f56e4949d76fe9041638754c659:1a3a,579b8eb267358dfa8235524160f0581586fe5ce89e454fc4989d8bb95a2560765384627c904f9102997f6069800c513f80335c1499756d314e8c7a:1d1f21222425262728292a2b2c2d2e2f303132343536383a3e4041424344454748494a4b4c4d4e4f50525354555658595a5b5c5d5e5f606162636465666768#696a6b6c6d6e6f717273757b7c7d7e828587898a8b8c8e8f909394999a9b9ea1a2,8d3053d17f5a7b4f4f104e4f96006cd573d085e95e06756a7ffb6a0a77fe94927e4151e170e653cd8fd483038d2972af996d6cdb574a82b365b980aa623f963259a84eff8bbf7eba653e83f2975e556198de80a5532a8bfd542080ba5e9f6cb88d3982ac915a54296c1b52067eb7575f711a6c7e7c89594b4efd5fff61247caa4e305c0167ab87025cf0950b98ce75af70fd902251af7f1d8bbd594951e44f5b5426592b657780a45b7562:76c2,8f905e456c1f7b264f:0fd8,670d7a:a3a4a7a9aaabaeafb0b1b2b4b5b6b7b8b9babbbcbdbec0c1c2c3c4c5c6c7c8c9cacccdcecfd0d1d2d3d4d5d7d8dadbdcdde1e2e4e7e8e9eaebeceef0f1f2f3#f4f5f6f7f8fbfcfe,7b:0001020507090c0d0e1012131617181a1c1d1f21222327292d,6d:6eaa,798f88b15f17752b629a8f854fef91dc65a781:2f51,5e9c81508d74526f89868d4b590d50854ed8961c723681798d1f5bcc8ba3964459877f1a549056:760e,8be565396982949976d66e895e72751867:46d1,7aff809d8d76611f79c665628d635188521a94a27f38809b7eb25c976e2f67607bd9768b9ad8818f7f947cd5641e95507a3f54:4ae5,6b4c640162089e3d80f3759952729769845b683c86e496:0194,94ec4e2a54047ed968398ddf801566f45e9a7fb97b:2f303234353637393b3d3f404142434446484a4d4e535557595c5e5f61636465666768696a6b6c6d6f70737476787a7c7d7f81828384868788898a8b8c8e8f#9192939698999a9b9e9fa0a3a4a5aeafb0b2b3b5b6b7b9babbbcbdbebfc0c2c3c4,57c2803f68975de5653b529f606d9f9a4f9b8eac516c5bab5f135de96c5e62f18d21517194a952fe6c9f82df72d757a267848d2d591f8f9c83c754957b8d4f306cbd5b6459d19f1353e486ca9aa88c3780a16545987e56fa96c7522e74dc52505be1630289024e5662d0602a68fa51735b9851a089c27ba199867f5060ef704c8d2f51495e7f901b747089c4572d78455f529f9f95fa8f689b3c8be17678684267dc8d:ea35,523d8f8a6eda68cd950590ed56fd679c88f98fc754c87b:c5c8c9cacbcdcecfd0d2d4d5d6d7d8dbdcdedfe0e2e3e4e7e8e9ebecedeff0f2f3f4f5f6f8f9fafbfdff,7c:0001020304050608090a0d0e101112131415171819#1a1b1c1d1e20212223242528292b2c2d2e2f3031323334353637393a3b3c3d3e42,9ab85b696d776c264ea55bb39a87916361a890af97e9542b6db55bd251fd558a7f:55f0,64bc634d65f161be608d710a6c:5749,592f676d822a58d5568e8c6a6beb90dd597d801753f76d695475559d83:77cf,683879be548c4f55540876d28c8996026cb36db88d6b89109e648d3a563f9ed175d55f8872e0606854fc4ea86a2a886160528f7054c470d886799e3f6d2a5b8f5f187ea255894faf7334543c539a501954:0e7c,4e4e5ffd745a58f6846b80e1877472d07cca6e567c:434445464748494a4b4c4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f70717275767778797a7e7f8081828384858687#888a8b8c8d8e8f90939496999a9ba0a1a3a6a7a8a9abacadafb0b4b5b6b7b8babb,5f27864e552c62a44e926caa623782b154d7534e733e6ed1753b521253168bdd69d05f8a60006dee574f6b2273af68538fd87f13636260a3552475ea8c6271156da35ba65e7b8352614c9ec478fa87577c27768751f060f6714c66435e4c604d8c0e707063258f895fbd606286d456de6bc160946167534960e066668d3f79fd4f1a70e96c478b:b3f2,7ed88364660f5a5a9b426d:51f7,8c416d3b4f19706b83b7621660d1970d8d27797851fb57:3efa,673a75787a3d79ef7b957c:bfc0c2c3c4c6c9cbcecfd0d1d2d3d4d8dadbdddee1e2e3e4e5e6e7e9eaebecedeef0f1f2f3f4f5f6f7f9fafcfdfeff,7d:000102030405060708090b0c0d0e0f10#1112131415161718191a1b1c1d1e1f212324252628292a2c2d2e30313233343536,808c99658ff96fc08ba59e2159ec7ee97f095409678168d88f917c4d96c653ca602575be6c7253735ac97ea7632451e0810a5df184df628051805b634f0e796d524260b86d4e5b:c4c2,8b:a1b0,65e25fcc964559937e:e7aa,560967b759394f735bb652a0835a988a8d3e753294be50477a3c4ef767b69a7e5ac16b7c76d1575a5c167b3a95f4714e517c80a9827059787f04832768c067ec78:b177,62e363617b804fed526a51cf835069db92748d:f531,89c1952e7bad4ef67d:3738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6f70717273747576#78797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798,506582305251996f6e:1085,6da75efa50f559dc5c066d466c5f7586848b686859568bb253209171964d854969127901712680f64ea490ca6d479a845a0756bc640594f077eb4fa5811a72e189d2997a7f347ede527f655991758f:7f83,53eb7a9663:eda5,768679f888579636622a52ab8282685467706377776b7aed6d017ed389e359d0621285c982a5754c501f4ecb75a58beb5c4a5dfe7b4b65a491d14eca6d25895f7d2795264ec58c288fdb9773664b79818fd170ec6d787d:999a9b9c9d9e9fa0a1a2a3a4a5a7a8a9aaabacadafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9#dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fa,5c3d52b283465162830e775b66769cb84eac60ca7c:beb3,7ecf4e958b66666f988897595883656c955c5f8475c997567a:dfde,51c070af7a9863ea7a767ea0739697ed4e4570784e5d915253a965:51e7,81fc8205548e5c31759a97a062d872d975bd5c459a7983ca5c40548077e94e3e6cae805a62d2636e5de851778ddd8e1e952f4ff153e560e770ac526763509e435a1f5026773753777ee26485652b628963985014723589c951b38bc07edd574783cc94a7519b541b5cfb7d:fbfcfdfeff,7e:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f30313233343536373839#3a3c3d3e3f40424344454648494a4b4c4d4e4f505152535455565758595a5b5c5d,4fca7ae36d5a90e19a8f55805496536154af5f0063e9697751ef6168520a582a52d8574e780d770b5eb761777ce062:5b97,4ea27095800362f770e49760577782db67ef68f578d5989779d158f354b353ef6e34514b523b5ba28bfe80af554357a660735751542d7a7a60505b5463a762a053e362635bc767af54ed7a9f82e691775e9388e4593857ae630e8de880ef57577b774fa95feb5bbd6b3e53217b5072c2684677:ff36,65f751b54e8f76d45cbf7aa58475594e9b4150807e:5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f8081838485868788898a8b8c8d8e8f909192939495969798999a9c9d9e#aeb4bbbcd6e4ecf9,7f:0a101e37393b3c3d3e3f404143464748494a4b4c4d4e4f5253,998861276e8357646606634656f062:ec69,5ed39614578362c955878721814a8fa3556683b167658d5684dd5a6a680f62e67bee961151706f9c8c3063fd89c861d27f0670c26ee57405699472fc5eca90ce67176d6a635e52b3726280014f6c59e5916a70d96d9d52d24e5096f7956d857e78ca7d2f5121579264c2808b7c7b6cea68f1695e51b7539868a872819ece7bf172f879bb6f137406674e91cc9ca4793c83:8954,540f68174e3d538952b1783e5386522950884f:8bd0,7f:56595b5c5d5e6063646566676b6c6d6f7073757677787a7b7c7d7f8082838485868788898b8d8f9091929395969798999b9ca0a2a3a5a6a8a9aaabacadaeb1#b3b4b5b6b7babbbec0c2c3c4c6c7c8c9cbcdcfd0d1d2d3d6d7d9dadbdcdddee2e3,75e27acb7c926ca596b6529b748354e94fe9805483b28fde95705ec9601c6d9f5e18655b813894fe604b70bc7ec37cae51c968817cb1826f4e248f8691cf667e4eae8c0564a9804a50da759771ce5be58fbd6f664e86648295635ed66599521788c270c852a3730e7433679778f797164e3490bb9cde6dcb51db8d41541d62ce73b283f196f69f8494c34f367f9a51cc707596755cad988653e64ee46e9c740969b4786b998f7559521876246d4167f3516d9f99804b54997b3c7abf7f:e4e7e8eaebecedeff2f4f5f6f7f8f9fafdfeff,80:020708090a0e0f11131a1b1d1e1f2123242b2c2d2e2f303234393a3c3e404144454748494e4f505153555657#595b5c5d5e5f6061626364656667686b6c6d6e6f7072737475767778797a7b7c7d,9686578462e29647697c5a0464027bd36f0f964b82a6536298855e90708963b35364864f9c819e93788c97328d:ef42,9e7f6f5e79845f559646622e9a74541594dd4fa365c55c:6561,7f1586516c2f5f8b73876ee47eff5ce6631b5b6a6ee653754e7163a0756562a18f6e4f264ed16ca67eb68bba841d87ba7f57903b95237ba99aa188f8843d6d1b9a867edc59889ebb739b780186829a:6c82,561b541757cb4e709ea653568fc881097792999286ee6ee1851366fc61626f2b80:7e818285888a8d8e8f909192949597999ea3a6a7a8acb0b3b5b6b8b9bbc5c7c8c9cacbcfd0d1d2d3d4d5d8dfe0e2e3e6eef5f7f9fbfeff,81:000103040507080b#0c1517191b1c1d1f202122232425262728292a2b2d2e3033343537393a3b3c3d3f,8c298292832b76f26c135fd983bd732b8305951a6bdb77db94c6536f830251925e3d8c8c8d384e4873ab679a68859176970971646ca177095a9295416bcf7f8e66275bd059b95a9a95:e8f7,4eec84:0c99,6aac76df9530731b68a65b5f772f919a97617cdc8ff78c1c5f257c7379d889c56ccc871c5bc65e4268c977207ef551:954d,52c95a297f05976282d763cf778485d079d26e3a5e9959998511706d6c1162bf76bf654f60af95fd660e879f9e2394ed54:0d7d,8c2c647881:40414243444547494d4e4f525657585b5c5d5e5f6162636466686a6b6c6f727375767778818384858687898b8c8d8e90929394959697999a9e9fa0a1a2a4a5#a7a9abacadaeafb0b1b2b4b5b6b7b8b9bcbdbebfc4c5c7c8c9cbcdcecfd0d1d2d3,647986116a21819c78e864699b5462b9672b83ab58a89ed86cab6f205bde964c8c0b725f67d062c772614ea959c66bcd589366ae5e5552df6155672876ee776672677a4662ff54:ea50,94a090a35a1c7eb36c164e435976801059485357753796be56ca63208111607c95f96dd65462998151855ae980fd59ae9713502a6ce55c3c62df4f60533f817b90066eba852b62c85e7478be64b5637b5ff55a18917f9e1f5c3f634f80425b7d556e95:4a4d,6d8560a867e072de51dd5b8181:d4d5d6d7d8d9dadbdcdddedfe0e1e2e4e5e6e8e9ebeeeff0f1f2f5f6f7f8f9fafdff,82:030708090a0b0e0f111315161718191a1d2024252627292e323a3c3d3f#404142434546484a4c4d4e5051525354555657595b5c5d5e606162636465666769,62e76cde725b626d94ae7ebd81136d53519c5f04597452aa6012597366968650759f632a61e67cef8bfa54e66b279e256bb485d5545550766ca4556a8db4722c5e156015743662cd6392724c5f986e436d3e65006f5876d878d076fc7554522453db4e535e9e65c180:2ad6,629b5486522870ae888d8dd16ce1547880da57f988f48d54966a914d4f696c9b55b776c6783062a870f96f8e5f6d84ec68da787c7bf781a8670b9e4f636778b0576f7812973962:79ab,528874356bd782:6a6b6c6d71757677787b7c808183858687898c90939495969a9b9ea0a2a3a7b2b5b6babbbcbfc0c2c3c5c6c9d0d6d9dadde2e7e8e9eaecedeef0f2f3f5f6f8#fafcfdfeff,83:000a0b0d1012131618191d1e1f20212223242526292a2e3032373b3d,5564813e75b276ae533975de50fb5c418b6c7bc7504f72479a9798d86f0274e27968648777a562fc98918d2b54c180584e52576a82f9840d5e7351ed74f68bc45c4f57616cfc98875a4678349b448feb7c955256625194fa4ec68386846183e984b257d467345703666e6d668c3166dd7011671f6b3a6816621a59bb4e0351c46f0667d26c8f517668cb59476b6775665d0e81109f5065d779:4841,9a918d775c824e5e4f01542f5951780c56686c148fc45f036c:7de3,8bab639083:3e3f41424445484a4b4c4d4e5355565758595d6270717273747576797a7e7f808182838487888a8b8c8d8f909194959697999a9d9fa1a2a3a4a5a6a7acadae#afb5bbbebfc2c3c4c6c8c9cbcdced0d1d2d3d5d7d9dadbdee2e3e4e6e7e8ebeced,60706d3d7275626694:8ec5,53438fc17b7e4edf8c264e7e9ed494:b1b3,524d6f5c90636d458c3458115d4c6b:2049,67aa545b81547f8c589985375f3a62a26a47953965726084686577a74e544fa85de7979864ac7fd85ced4fcf7a8d520783044e14602f7a8394a64fb54eb279e6743452e482b964d279bd5bdd6c8197528f7b6c22503e537f6e0564ce66746c3060c598778bf75e86743c7a7779cb4e1890b174036c4256da914b6cc58d8b533a86c666f28eaf5c489a716e2083:eeeff3f4f5f6f7fafbfcfeff,84:0002050708090a10121314151617191a1b1e1f20212223292a2b2c2d2e2f30323334353637393a3b3e3f404142434445474849#4a4b4c4d4e4f505253545556585d5e5f606264656667686a6e6f70727477797b7c,53d65a369f8b8da353bb570898a76743919b6cc9516875ca62f372ac52:389d,7f3a7094763853749e4a69b7786e96c088d97fa471:36c3,518967d374e458e4651856b78ba9997662707ed560f970ed58ec4e:c1ba,5fcd97e74efb8ba45203598a7eab62544ecd65e5620e833884c98363878d71946eb65bb97ed2519763c967d480898339881551125b7a59828fb14e736c5d516589258f6f962e854a745e95:10f0,6da682e55f3164926d128428816e9cc3585e8d5b4e0953c184:7d7e7f8081838485868a8d8f90919293949596989a9b9d9e9fa0a2a3a4a5a6a7a8a9aaabacadaeb0b1b3b5b6b7bbbcbec0c2c3c5c6c7c8cbcccecfd2d4d5d7#d8d9dadbdcdee1e2e4e7e8e9eaebedeeeff1f2f3f4f5f6f7f8f9fafbfdfe,85:000102,4f1e6563685155d34e2764149a9a626b5ac2745f82726da968ee50e7838e7802674052396c997eb150bb5565715e7b5b665273ca82eb67495c715220717d886b95ea965564c58d6181b355846c5562477f2e58924f2455468d4f664c4e0a5c1a88f368a2634e7a0d70e7828d52fa97f65c1154e890b57ecd59628d4a86c782:0c0d,8d6664445c0461516d89793e8bbe78377533547b4f388eab6df15a207ec5795e6c885ba15a76751a80be614e6e1758f075:1f25,727253477ef385:030405060708090a0b0d0e0f101214151618191b1c1d1e2022232425262728292a2d2e2f303132333435363e3f404142444546474b4c4d4e4f505152535455#57585a5b5c5d5f60616263656667696a6b6c6d6e6f707173757677787c7d7f8081,770176db526980dc57235e08593172ee65bd6e7f8bd75c388671534177f362fe65f64ec098df86805b9e8bc653f277e24f7f5c4e9a7659cb5f0f793a58eb4e1667ff4e8b62ed8a93901d52bf662f55dc566c90024ed54f8d91ca99706c0f5e0260435ba489c68bd56536624b99965b:88ff,6388552e53d77626517d852c67a268b36b8a62928f9353d482126dd1758f4e668d4e5b70719f85af66:91d9,7f7287009ecd9f205c5e672f8ff06811675f620d7ad658855eb665706f3185:82838688898a8b8c8d8e909192939495969798999a9d9e9fa0a1a2a3a5a6a7a9abacadb1b2b3b4b5b6b8babbbcbdbebfc0c2c3c4c5c6c7c8cacbcccdced1d2#d4d6d7d8d9dadbdddedfe0e1e2e3e5e6e7e8eaebecedeeeff0f1f2f3f4f5f6f7f8,60555237800d6454887075295e05681362f4971c53cc723d8c016c3477617a0e542e77ac987a821c8bf47855671470c165af64955636601d79c153f84e1d6b7b80865bfa55e356db4f:3a3c,99725df3677e80386002988290015b8b8b:bcf5,641c825864de55fd82cf91654fd77d20901f7c9f50f358516eaf5bbf8bc980839178849c7b97867d96:8b8f,7ee59ad3788e5c817a57904296a7795f5b59635f7b0b84d168ad55067f2974107d2295016240584c4ed65b835979585485:f9fafcfdfe,86:0001020304060708090a0b0c0d0e0f10121314151718191a1b1c1d1e1f20212223242526282a2b2c2d2e2f3031323334353637393a3b3d3e3f40#4142434445464748494a4b4c525355565758595b5c5d5f6061636465666768696a,736d631e8e:4b0f,80ce82d462ac53f06cf0915e592a60016c70574d644a8d2a762b6ee9575b6a8075f06f6d8c:2d08,57666bef889278b363a253f970ad6c645858642a580268e0819b55107cd650188eba6dcc8d9f70eb638f6d9b6ed47ee68404684390036dd896768ba85957727985e4817e75bc8a8a68af52548e22951163d098988e44557c4f5366ff568f60d56d9552435c4959296dfb586b75:301c,606c82148146631167618fe2773a8d:f334,94c15e165385542c70c386:6d6f7072737475767778838485868788898e8f90919294969798999a9b9e9fa0a1a2a5a6abadaeb2b3b7b8b9bbbcbdbebfc1c2c3c5c8cccdd2d3d5d6d7dadc#dde0e1e2e3e5e6e7e8eaebeceff5f6f7fafbfcfdff,87:010405060b0c0e0f10111416,6c405ef7505c4ead5ead633a8247901a6850916e77b3540c94dc5f647ae5687663457b527edf75db507762955934900f51f879c37a8156fe5f9290146d825c60571f541051546e4d56e263a89893817f8715892a9000541e5c6f81c062:d658,81319e3596409a:6e7c,692d59a562d3553e631654c786d96d3c5a0374e6889c6b6a59168c4c5f2f6e7e73a9987d4e3870f75b8c7897633d665a769660cb5b9b5a494e0781556c6a738b4ea167897f515f8065fa671b5fd859845a0187:191b1d1f20242627282a2b2c2d2f303233353638393a3c3d404142434445464a4b4d4f505152545556585a5b5c5d5e5f6162666768696a6b6c6d6f71727375#7778797a7f8081848687898a8c8e8f90919294959698999a9b9c9d9ea0a1a2a3a4,5dcd5fae537197e68fdd684556f4552f60df4e3a6f4d7ef482c7840e59d44f:1f2a,5c3e7eac672a851a5473754f80c355829b4f4f4d6e2d8c135c096170536b761f6e29868a658795fb7eb9543b7a337d0a95ee55e17fc174ee631d87176da17a9d621165a1536763e16c835deb545c94a84e4c6c618bec5c4b65e0829c68a754:3e34,6b:cb66,4e9463425348821e4f:0dae,575e620a96fe6664726952:ffa1,609f8bef661471996790897f785277fd6670563b54389521727a87:a5a6a7a9aaaeb0b1b2b4b6b7b8b9bbbcbebfc1c2c3c4c5c7c8c9cccdcecfd0d4d5d6d7d8d9dadcdddedfe1e2e3e4e6e7e8e9ebecedeff0f1f2f3f4f5f6f7f8#fafbfcfdff,88:0001020405060708090b0c0d0e0f101112141718191a1c1d1e1f2023,7a00606f5e0c6089819d591560dc718470ef6eaa6c5072806a8488ad5e2d4e605ab3559c94e36d177cfb9699620f7ec6778e867e5323971e8f9666875ce14fa072ed4e0b53a6590f54136380952851484ed99c9c7ea454b88d248854823795f26d8e5f265acc663e966973:b02e,53bf817a99857fa15baa96:7750,7ebf76f853a2957699997bb189446e584e617fd479658be660f354cd4eab98795df76a6150cf54118c618427785d9704524a54ee56a395006d885bb56dc6665388:2425262728292a2b2c2d2e2f30313334353637383a3b3d3e3f414243464748494a4b4e4f505152535556585a5b5c5d5e5f6066676a6d6f717374757678797a#7b7c80838687898a8c8e8f90919394959798999a9b9d9e9fa0a1a3a5a6a7a8a9aa,5c0f5b5d6821809655787b11654869544e9b6b47874e978b534f631f643a90aa659c80c18c10519968b0537887f961c86c:c4fb,8c225c5185aa82af950c6b238f9b65b05f:fbc3,4fe18845661f8165732960fa51745211578b5f6290a2884c91925e78674f602759d351:44f6,80f853086c7996c4718a4f:11ee,7f9e673d55c5950879c088967ee3589f620c9700865a5618987b5f908bb884c4915753d965ed5e8f755c60647d6e5a7f7e:eaed,8f6955a75ba360ac65cb738488:acaeafb0b2b3b4b5b6b8b9babbbdbebfc0c3c4c7c8cacbcccdcfd0d1d3d6d7dadbdcdddee0e1e6e7e9eaebecedeeeff2f5f6f7fafbfdff,89:0001030405060708#090b0c0d0e0f1114151617181c1d1e1f20222324262728292c2d2e2f3132333537,9009766377297eda9774859b5b667a7496ea884052cb718f5faa65ec8be25bfb9a6f5de16b896c5b8b:adaf,900a8fc5538b62bc9e:262d,54404e2b82bd7259869c5d1688596daf96c554d14e9a8bb6710954bd960970df6df976d04e25781487125ca95ef68a00989c960e708e6cbf594463a9773c884d6f148273583071d5538c781a96c155015f6671305bb48c1a9a8c6b83592e9e2f79e76768626c4f6f75a17f8a6d0b96336c274ef075d2517b68376f3e908081705996747689:38393a3b3c3d3e3f40424345464748494a4b4c4d4e4f505152535455565758595a5b5c5d6061626364656768696a6b6c6d6e6f707172737475767778797a7c#7d7e808284858788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1,64475c2790657a918c2359da54ac8200836f898180006930564e8036723791ce51b64e5f987563964e1a53f666f3814b591c6db24e0058f9533b63d694f14f:9d0a,886398905937905779fb4eea80f075916c825b9c59e85f5d69058681501a5df24e5977e34ee5827a6291661390915c794ebf5f7981c69038808475ab4ea688d4610f6bc55fc64e4976ca6ea28b:e3ae,8c0a8bd15f027f:fccc,7ece83:356b,56e06bb797f3963459fb541f94f66deb5bc5996e5c395f15969089:a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c3cdd3d4d5d7d8d9dbdddfe0e1e2e4e7e8e9eaecedeef0f1f2f4f5f6f7f8f9fa#fbfcfdfeff,8a:01020304050608090a0b0c0d0e0f101112131415161718191a1b1c1d,537082f16a315a749e705e947f2883b984:2425,836787478fce8d6276c85f719896786c662054df62e54f6381c375c85eb896cd8e0a86f9548f6cf36d8c6c38607f52c775285e7d4f1860a05fe75c24753190ae94c072b96cb96e389149670953:cbf3,4f5191c98bf153c85e7c8fc26de44e8e76c26986865e611a82064f:59de,903e9c7c61096e:1d14,96854e885a3196e84e0e5c7f79b95b878bed7fbd738957df828b90c15401904755bb5cea5fa161086b3272f180b28a:891e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3f4041424344454647494a4b4c4d4e4f505152535455565758595a5b5c5d5e#5f606162636465666768696a6b6c6d6e6f7071727374757677787a7b7c7d7e7f80,6d745bd388d598848c6b9a6d9e336e0a51:a443,57a38881539f63f48f9556ed54585706733f6e907f188fdc82d1613f6028966266f07ea68d:8ac3,94a55cb37ca4670860a6960580184e9190e75300966851418fd08574915d665597f55b55531d78386742683d54c9707e5bb08f7d518d572854b1651266828d:5e43,810f846c906d7cdf51ff85fb67a365e96fa186a48e81566a90207682707671e58d2362e952196cfd8d3c600e589e618e66fe8d60624e55b36e23672d8f678a:81828384858687888b8c8d8e8f9091929495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2#c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3,94e195f87728680569a8548b4e4d70b88bc86458658b5b857a84503a5be877bb6be18a797c986cbe76cf65a98f975d2d5c5586386808536062187ad96e5b7efd6a1f7ae05f706f335f20638c6da867564e085e108d264ed780c07634969c62db662d627e6cbc8d7571677f695146808753ec906e629854f286f08f998005951785178fd96d5973cd659f771f7504782781fb8d1e94884fa6679575b98bca9707632f9547963584b8632377415f8172f04e896014657462ef6b63653f8a:e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,8b:0001020304050608090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f20212223#24252728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445,5e2775c790d18bc1829d679d652f5431871877e580a281026c414e4b7ec7804c76f4690d6b966267503c4f84574063076b628dbe53ea65e87eb85fd763:1ab7,81:f3f4,7f6e5e1c5cd95236667a79e97a1a8d28709975d46ede6cbb7a924e2d76c55fe0949f88777ec879cd80bf91cd4ef24f17821f54685dde6d328bcc7ca58f7480985e1a549276b15b99663c9aa473e0682a86db6731732a8b:f8db,90107af970db716e62c477a956314e3b845767f152a986c08d2e94f87b518b:464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f6061626364656768696a6b6d6e6f707172737475767778797a7b7c7d7e7f80818283848586#8788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9facb1bbc7d0ea,8c:091e,4f4f6ce8795d9a7b6293722a62fd4e1378168f6c64b08d5a7bc668695e8488c55986649e58ee72b6690e95258ffd8d5857607f008c0651c6634962d95353684c74228301914c55447740707c6d4a517954a88d4459ff6ecb6dc45b5c7d2b4ed47c7d6ed35b5081ea6e0d5b579b0368d58e2a5b977efc603b7eb590b98d70594f63cd79df8db3535265cf79568bc5963b7ec494bb7e825634918967007f6a5c0a907566285de64f5067de505a4f5c57505e:a7#3$,8c:38393a3b3c3d3e3f4042434445484a4b4d4e4f5051525354565758595b5c5d5e5f60636465666768696c6d6e6f707172747576777b7c7d7e7f808183848687#888b8d8e8f90919293959697999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacad,4e:8d0c,51404e105eff53454e:15981e,9b325b6c56694e2879ba4e3f53154e47592d723b536e6c1056df80e499976bd3777e9f174e:369f,9f104e:5c6993,82885b5b556c560f4ec453:8d9da3a5ae,97658d5d53:1af5262e3e,8d5c53:6663,52:02080e2d333f404c5e615c,84af52:7d82819093,51827f544e:bbc3c9c2e8e1ebde,4f1b4ef34f:2264,4ef54f:2527092b5e67,65384f:5a5d,8c:aeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebec#edeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,8d:000102030405060708090a0b0c0d,4f:5f57323d76749189838f7e7baa7cac94e6e8eac5dae3dcd1dff8,50:294c,4ff350:2c0f2e2d,4ffe50:1c0c25287e4355484e6c7ba5a7a9bad6,510650:edece6ee,51:070b,4edd6c3d4f:5865ce,9fa06c467c74516e5dfd9ec999985181591452f9530d8a07531051eb591951554ea051564eb388:6ea4,4eb5811488d279805b3488037fb851:abb1bdbc,8d:0e0f101112131415161718191a1b1c205152575f6568696a6c6e6f717278797a7b7c7d7e7f808283868788898c8d8e8f90929395969798999a9b9c9d9ea0a1#a2a4a5a6a7a8a9aaabacadaeafb0b2b6b7b9bbbdc0c1c2c5c7c8c9cacdd0d2d3d4,51:c796a2a5,8b:a0a6a7aab4b5b7c2c3cbcfced2d3d4d6d8d9dcdfe0e4e8e9eef0f3f6f9fcff,8c:000204070c0f1112141516191b181d1f202125272a2b2e2f32333536,53:697a,96:1d2221312a3d3c4249545f676c7274888d97b0,90:979b9d99aca1b4b3b6ba,8d:d5d8d9dce0e1e2e5e6e7e9edeef0f1f2f4f6fcfeff,8e:00010203040607080b0d0e1011121315161718191a1b1c202124252627282b2d303233343637383b3c3e#3f4345464c4d4e4f505354555657585a5b5c5d5e5f60616263646567686a6b6e71,90:b8b0cfc5bed0c4c7d3e6e2dcd7dbebeffe,91:04221e23312f394346,520d594252:a2acadbe,54ff52:d0d6f0,53df71ee77cd5ef451:f5fc,9b2f53b65f01755a5def57:4ca9a1,58:7ebcc5d1,57:292c2a33392e2f5c3b4269856b867c7b686d7673ada48cb2cfa7b493a0d5d8dad9d2b8f4eff8e4dd,8e:73757778797a7b7d7e808283848688898a8b8c8d8e91929395969798999a9b9d9fa0a1a2a3a4a5a6a7a8a9aaadaeb0b1b3b4b5b6b7b8b9bbbcbdbebfc0c1c2#c3c4c5c6c7c8c9cacbcccdcfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4,58:0b0d,57:fded,58:001e194420656c81899a80,99a89f1961ff82:797d7f8f8aa8848e919799abb8beb0c8cae398b7aecbccc1a9b4a1aa9fc4cea4e1,830982:f7e4,83:0f07,82:dcf4d2d8,830c82:fbd3,83:111a061415,82:e0d5,83:1c515b5c08923c34319b5e2f4f47435f4017602d3a336665,8e:e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,8f:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f20212223#2425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f4041424344,83:681b696c6a6d6eb078b3b4a0aa939c857cb6a97db87b989ea8babcc1,840183:e5d8,580784:180b,83:ddfdd6,84:1c381106,83:d4df,84:0f03,83:f8f9eac5c0,842683:f0e1,84:5c515a597387887a89783c4669768c8e316dc1cdd0e6bdd3cabfbae0a1b9b497e5e3,850c750d853884f085:391f3a,8f:45464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f6061626364656a808c929da0a1a2a4a5a6a7aaacadaeafb2b3b4b5b7b8babbbcbfc0c3c6#c9cacbcccdcfd2d6d7dae0e1e3e7eceff1f2f4f5f6fafbfcfeff,90:07080c0e131518,85:563b,84:fffc,85:594868645e7a,77a285:43727ba4a8878f79ae9c85b9b7b0d3c1dcff,86:270529163c,5efe5f0859:3c41,803759:555a58,530f5c:22252c34,62:4c6a9fbbcadad7ee,632262f663:394b43adf6717a8eb46dac8a69aebcf2f8e0ffc4dece,645263:c6be,64:45410b1b200c26215e846d96,90:191c2324252728292a2b2c303132333437393a3d3f4043454648494a4b4c4e545556595a5c5d5e5f6061646667696a6b6c6f70717273767778797a7b7c7e81#84858687898a8c8d8e8f90929496989a9c9e9fa0a4a5a7a8a9abadb2b7bcbdbfc0,64:7ab7b899bac0d0d7e4e2,65:09252e,5f:0bd2,75195f1153:5ff1fde9e8fb,54:1216064b5253545643215759233282947771649a9b8476669dd0adc2b4d2a7a6d3d472a3d5bbbfccd9dadca9aaa4ddcfde,551b54e7552054fd551454f355:22230f11272a678fb5496d41553f503c,90:c2c3c6c8c9cbcccdd2d4d5d6d8d9dadedfe0e3e4e5e9eaeceef0f1f2f3f5f6f7f9fafbfcff,91:00010305060708090a0b0c0d0e0f1011121314151617181a1b1c#1d1f20212425262728292a2b2c2d2e30323334353637383a3b3c3d3e3f40414244,55:375675767733305c8bd283b1b988819f7ed6917bdfbdbe9499eaf7c9,561f55:d1ebecd4e6ddc4efe5f2f3cccde8f5e4,8f9456:1e080c012423,55fe56:00272d5839572c4d62595c4c548664716b7b7c8593afd4d7dde1f5ebf9ff,57:040a091c,5e:0f191411313b3c,91:454748515354555658595b5c5f606667686b6d737a7b7c808182838486888a8e8f939495969798999c9d9e9fa0a1a4a5a6a7a8a9abacb0b1b2b3b6b7b8b9bb#bcbdbebfc0c1c2c3c4c5c6c8cbd0d2d3d4d5d6d7d8d9dadbdddedfe0e1e2e3e4e5,5e:3744545b5e61,5c:8c7a8d9096889899919a9cb5a2bdacabb1a3c1b7c4d2e4cbe5,5d:020327262e241e061b583e343d6c5b6f5d6b4b4a697482999d,8c735d:b7c5,5f:73778287898c95999ca8adb5bc,88625f6172:adb0b4b7b8c3c1cecdd2e8efe9f2f4f7,730172f3730372fa91:e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,92:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f2021222324#25262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445,72fb73:1713210a1e1d152239252c3831504d57606c6f7e,821b592598e759:2402,99:636768696a6b6c74777d8084878a8d9091939495,5e:80918b96a5a0b9b5beb3,8d535e:d2d1dbe8ea,81ba5f:c4c9d6cf,60035fee60045f:e1e4fe,60:0506,5f:eaedf8,60:1935261b0f0d292b0a3f2178797b7a42,92:464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f7071727375767778797a7b7c7d7e7f808182838485#868788898a8b8c8d8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7,60:6a7d969aad9d83928c9becbbb1ddd8c6dab4,61:20261523,60f461:000e2b4a75ac94a7b7d4f5,5fdd96b395:e9ebf1f3f5f6fcfe,96:030406080a0b0c0d0f12151617191a,4e2c723f62156c:35545c4aa38590948c6869747686a9d0d4adf7f8f1d7b2e0d6faebeeb1d3effe,92:a8a9aaabacadafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8#e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,93:00010203040506070809,6d:39270c43480704190e2b4d2e351a4f525433916f9ea05e93945c607c63,6e1a6d:c7c5de,6e0e6d:bfe0,6e116d:e6ddd9,6e166dab6e0c6dae6e:2b6e4e6bb25f865354322544dfb198e0,6f2d6e:e2a5a7bdbbb7d7b4cf8fc29f,6f:6246472415,6ef96f:2f364b742a0929898d8c78727c7ad1,93:0a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3f40414243444546474849#4a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696b,6f:c9a7b9b6c2e1eedee0ef,70:1a231b39354f5e,5b:80849593a5b8,752f9a9e64345b:e4ee,89305bf08e478b078f:b6d3d5e5eee4e9e6f3e8,90:05040b26110d162135362d2f445152506858625b,66b990:747d8288838b,5f:50575658,5c3b54ab5c:5059,5b715c:6366,7fbc5f:2a292d,82745f3c9b3b5c6e59:81838da9aaa3,93:6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaab#acadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cbcccd,59:97caab9ea4d2b2afd7be,5a:0506,59dd5a0859:e3d8f9,5a:0c09323411231340674a553c6275,80ec5a:aa9b777abeebb2d2d4b8e0e3f1d6e6d8dc,5b:091716323740,5c:151c,5b:5a6573515362,9a:7577787a7f7d808185888a90929396989b9c9d9fa0a2a3a5a7,7e:9fa1a3a5a8a9,93:cecfd0d1d2d3d4d5d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,94:000102030405060708090a0b0c0d#0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e,7e:adb0bec0c1c2c9cbccd0d4d7dbe0e1e8ebeeeff1f2,7f0d7e:f6fafbfe,7f:01020307080b0c0f111217191c1b1f212223242526272a2b2c2d2f3031323335,5e7a757f5ddb753e909573:8e91aea29fcfc2d1b7b3c0c9c8e5d9,987c740a73:e9e7debaf2,74:0f2a5b262528302e2c,94:2f303132333435363738393a3b3c3d3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6c6d6e6f#707172737475767778797a7b7c7d7e7f8081828384919698c7cfd3d4dae6fb,95:1c20,74:1b1a415c575559776d7e9c8e8081878b9ea8a990a7d2ba,97:eaebec,67:4c535e4869a5876a7398a775a89ead8b777cf0,680967d8680a67:e9b0,680c67:d9b5dab3dd,680067:c3b8e2,680e67:c1fd,68:323360614e624464831d55664167403e4a4929b58f7477936bc2,696e68fc69:1f20,68f995:27333d43484b555a606e74757778797a7b7c7d7e808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aa#abacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacb,692468f069:0b0157,68e369:10713960425d846b80987834cc8788ce896663799ba7bbabadd4b1c1cadf95e08dff,6a2f69ed6a:171865,69f26a:443ea0505b358e793d28587c9190a997ab,73:3752,6b:8182878492938d9a9ba1aa,8f:6b6d71727375767877797a7c7e818284878b,95:cccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7ecff,96:0713181b1e20232425262728292b2c2d2f303738393a3e41434a4e4f5152535657#58595a5c5d5e606365666b6d6e6f70717378797a7b7c7d7e7f808182838487898a,8f:8d8e8f989a,8ece62:0b171b1f222125242c,81e774:eff4ff,75:0f1113,65:34eeeff0,66:0a19,677266:031500,708566:f71d34313635,800666:5f54414f56615777848ca79dbedbdce6e9,8d:3233363b3d4045464849474d5559,89:c7cacbcccecfd0d1,72:6e9f5d666f7e7f848b8d8f92,63:0832b0,96:8c8e91929395969a9b9d9e9fa0a1a2a3a4a5a6a8a9aaabacadaeafb1b2b4b5b7b8babbbfc2c3c8cacbd0d1d3d4d6d7d8d9dadbdcdddedfe1e2e3e4e5e6e7eb#ecedeef0f1f2f4f5f8fafbfcfdff,97:0203050a0b0c10111214151718191a1b1d1f20,64:3fd8,80046b:eaf3fdf5f9,6c:0507060d1518191a2129242a32,65:35556b,72:4d525630,8662521680:9f9c93bc,670a80:bdb1abadb4b7e7e8e9eadbc2c4d9cdd7,671080:ddebf1f4ed,81:0d0e,80:f2fc,671581128c5a81:361e2c1832484c5374595a7160697c7d6d67,584d5ab581:888291,6ed581:a3aacc,672681:cabb,97:2122232425262728292b2c2e2f3133343536373a3b3c3d3f404142434445464748494a4b4c4d4e4f5051545557585a5c5d5f63646667686a6b6c6d6e6f7071#72757778797a7b7d7e7f8081828384868788898a8c8e8f9093959697999a9b9c9d,81:c1a6,6b:243739434659,98:d1d2d3d5d9da,6bb35f406bc289f365909f5165:93bcc6c4c3ccced2d6,70:809c969dbbc0b7abb1e8ca,71:1013162f31735c6845724a787a98b3b5a8a0e0d4e7f9,72:1d28,706c71:1866b9,62:3e3d434849,79:3b4046495b5c535a6257606f677a858a9aa7b3,5f:d1d0,97:9e9fa1a2a4a5a6a7a8a9aaacaeb0b1b3b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3#e4e5e8eeeff0f1f2f4f7f8f9fafbfcfdfeff,98:000102030405060708090a0b0c0d0e,60:3c5d5a67415963ab,61:060d5da99dcbd1,620680:807f,6c:93f6,6dfc77:f6f8,78:0009171811,65ab78:2d1c1d393a3b1f3c252c23294e6d56572650474c6a9b939a879ca1a3b2b9a5d4d9c9ecf2,790578f479:13241e34,9f9b9e:f9fbfc,76f177:040d,76f977:07081a22192d263538505147435a68,98:0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d#4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e,77:62657f8d7d808c919fa0b0b5bd,75:3a404e4b485b727983,7f:58615f,8a487f:68747179817e,76:cde5,883294:8586878b8a8c8d8f909497959a9b9ca3a4abaaadacafb0b2b4b6b7b8b9babcbdbfc4c8c9cacbcccdced0d1d2d5d6d7d9d8dbdedfe0e2e4e5e7e8ea,98:6f70717273748b8e929599a3a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcfd0d4d6d7dbdcdde0e1e2e3e4#e5e6e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,99:0001020304050607,94:e9ebeeeff3f4f5f7f9fcfdff,95:03020607090a0d0e0f1213141516181b1d1e1f222a2b292c3132343637383c3e3f4235444546494c4e4f525354565758595b5e5f5d61626465666768696a6b6c6f7172733a,77:e7ec,96c979:d5ede3eb,7a065d477a:03021e14,99:08090a0b0c0e0f1112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2f303132333435363738393a3b3c3d3e3f40414243444546474849#4a4b4c4d4e4f50515253565758595a5b5c5d5e5f60616264667378797b7e828389,7a:393751,9ecf99a57a7076:888e9399a4,74:dee0,752c9e:202228292a2b2c3231363837393a3e414244464748494b4c4e5155575a5b5c5e63666768696a6b6c716d73,75:929496a09daca3b3b4b8c4b1b0c3c2d6cde3e8e6e4ebe7,760375:f1fcff,76:1000050c170a25181519,99:8c8e9a9b9c9d9e9fa0a1a2a3a4a6a7a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8#d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9,76:1b3c2220402d303f35433e334d5e545c566b6f,7fca7a:e6787980868895a6a0aca8adb3,88:6469727d7f82a2c6b7bcc9e2cee3e5f1,891a88:fce8fef0,89:2119131b0a342b3641667b,758b80e576:b2b4,77dc80:1214161c20222526272928310b3543464d526971,898398:788083,99:fafbfcfdfeff,9a:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738#393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f50515253545556575859,98:898c8d8f949a9b9e9fa1a2a5a6,86:4d546c6e7f7a7c7ba88d8bac9da7a3aa93a9b6c4b5ceb0bab1afc9cfb4e9f1f2edf3d0,871386:def4dfd8d1,87:0307,86f887:080a0d09233b1e252e1a3e48343129373f82227d7e7b60704c6e8b53637c64596593afa8d2,9a:5a5b5c5d5e5f606162636465666768696a6b7283898d8e949599a6a9aaabacadaeafb2b3b4b5b9bbbdbebfc3c4c6c7c8c9cacdcecfd0d2d4d5d6d7d9dadbdc#dddee0e2e3e4e5e7e8e9eaeceef0f1f2f3f4f5f6f7f8fafcfdfeff,9b:000102040506,87:c68885ad9783abe5acb5b3cbd3bdd1c0cadbeae0ee,88:1613,87fe88:0a1b21393c,7f:36424445,82107a:fafd,7b:080304150a2b0f47382a192e31202524333e1e585a45754c5d606e7b62727190a6a7b8ac9da885aa9ca2abb4d1c1ccdddae5e6ea,7c0c7b:fefc,7c:0f160b,9b:07090a0b0c0d0e1011121415161718191a1b1c1d1e2021222425262728292a2b2c2d2e3031333435363738393a3d3e3f40464a4b4c4e50525355565758595a#5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b,7c:1f2a26384140,81fe82:010204,81ec884482:2122232d2f282b383b33343e44494b4f5a5f68,88:7e8588d8df,895e7f:9d9fa7afb0b2,7c7c65497c:919d9c9ea2b2bcbdc1c7cccdc8c5d7e8,826e66a87f:bfced5e5e1e6e9eef3,7cf87d:77a6ae,7e:479b,9e:b8b4,8d:73849491b1676d,8c:4749,91:4a504e4f64,9b:7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9ba#bbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadb,91:626170696f7d7e7274798c85908d91a2a3aaadaeafb5b4ba,8c559e7e8d:b8eb,8e:055969,8d:b5bfbcbac4d6d7dadececfdbc6ecf7f8e3f9fbe4,8e098dfd8e:141d1f2c2e232f3a4039353d3149414251524a70767c6f74858f94909c9e,8c:78828a859894,659b89:d6dedadc,9b:dcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,9c:000102030405060708090a0b0c0d0e0f101112131415161718191a#1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b,89:e5ebef,8a3e8b26975396:e9f3ef,97:0601080f0e2a2d303e,9f:808385868788898a8c,9efe9f:0b0d,96:b9bcbdced2,77bf96e092:8eaec8,93:3e6aca8f,94:3e6b,9c:7f8285868788,7a239c:8b8e90919294959a9b9e9fa0a1a2a3a5a6a7a8a9abadaeb0b1b2b3b4b5b6b7babbbcbdc4c5c6c7cacb3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a#7b7d7e808384898a8c8f93969798999daaacafb9bebfc0c1c2c8c9d1d2dadbe0e1cccdcecfd0d3d4d5d7d8d9dcdddfe2,97:7c85919294afaba3b2b4,9a:b1b0b7,9e589a:b6babcc1c0c5c2cbccd1,9b:45434749484d51,98e899:0d2e5554,9a:dfe1e6efebfbedf9,9b:080f131f23,9e:bdbe,7e3b9e:8287888b92,93d69e:9d9fdbdcdde0dfe2e9e7e5eaef,9f:222c2f39373d3e44,9c:e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,9d:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f2021#22232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142#92$434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f8081#82838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2#92$a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1#e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,9e:000102#92$030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e24272e30343b3c404d5052535456595d5f606162656e6f727475767778797a7b7c7d80#8183848586898a8c8d8e8f90919495969798999a9b9c9ea0a1a2a3a4a5a7a8a9aa#92$abacadaeafb0b1b2b3b5b6b7b9babcbfc0c1c2c3c5c6c7c8cacbccd0d2d3d5d6d7d9dadee1e3e4e6e8ebecedeef0f1f2f3f4f5f6f7f8fafdff,9f:000102030405#060708090a0c0f1112141516181a1b1c1d1e1f21232425262728292a2b2d2e3031#92$3233343536383a3c3f4041424345464748494a4b4c4d4e4f52535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778#797a7b7c7d7e81828d8e8f9091929394959697989c9d9ea1a2a3a4a5,f9:2c7995e7f1#92$,fa:0c0d0e0f111314181f20212324272829,e8:15161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f40414243#4445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f6061626364");
115
112
  let index = 0;
116
113
  this.#data = dataText.match(/..../g);
117
114
  for (let i = 0x81; i <= 0xfe; i++) {
118
115
  for (let j = 0x40; j <= 0xfe; j++) {
119
- this.#U2Ghash[this.#data[index++]] = ("%" + i.toString(16) + "%" + j.toString(16)).toUpperCase();
116
+ this.#U2Ghash[this.#data[index++]] = `%${i.toString(16)}%${j.toString(16)}`.toUpperCase();
120
117
  }
121
118
  }
122
- for (let key in this.#U2Ghash) {
123
- this.#G2Uhash[this.#U2Ghash[key]] = key;
119
+ for (const key in this.#U2Ghash) {
120
+ const u2ghashValue = Reflect.get(this.#U2Ghash, key);
121
+ Reflect.set(this.#G2Uhash, u2ghashValue, key);
124
122
  }
125
123
  }
126
124
  handleText(text) {
127
125
  text = text
128
- .replace(/#(\d+)\$/g, function (a, b) {
126
+ .replace(/#(\d+)\$/g, function (_, b) {
129
127
  return Array(+b + 3).join("#");
130
128
  })
131
129
  .replace(/#/g, "####")
132
- .replace(/(\w\w):([\w#]+)(?:,|$)/g, function (a, hd, dt) {
130
+ .replace(/(\w\w):([\w#]+)(?:,|$)/g, function (_, hd, dt) {
133
131
  return dt.replace(/../g, function (a) {
134
132
  if (a != "##") {
135
133
  return hd + a;
@@ -149,8 +147,8 @@ var Utils = (function () {
149
147
  * @param str
150
148
  */
151
149
  encode(str) {
152
- let that = this;
153
- return [...str].reduce((result, val, i) => {
150
+ const that = this;
151
+ return [...str].reduce((result, val) => {
154
152
  return result + toGBK(val);
155
153
  }, "");
156
154
  function toGBK(val) {
@@ -159,7 +157,7 @@ var Utils = (function () {
159
157
  const codePoint = val.codePointAt(i);
160
158
  const code = String.fromCodePoint(codePoint);
161
159
  let key = codePoint.toString(16);
162
- key.length != 4 && (key = ("000" + key).match(/....$/)?.[0]);
160
+ key.length != 4 && (key = `000${key}`.match(/....$/)?.[0]);
163
161
  /* Add up i by code.length */
164
162
  i += code.length - 1;
165
163
  /* If code is in ascii range */
@@ -173,9 +171,9 @@ var Utils = (function () {
173
171
  continue;
174
172
  }
175
173
  /*
176
- If 2 or more char combines to one visible code,
177
- or just this code is not in GBK
178
- */
174
+ If 2 or more char combines to one visible code,
175
+ or just this code is not in GBK
176
+ */
179
177
  result += toGBK(`&#${codePoint};`);
180
178
  }
181
179
  return result;
@@ -186,18 +184,18 @@ var Utils = (function () {
186
184
  * @param str
187
185
  */
188
186
  decode(str) {
189
- let GBKMatcher = /%[0-9A-F]{2}%[0-9A-F]{2}/;
190
- let UTFMatcher = /%[0-9A-F]{2}/;
187
+ const GBKMatcher = /%[0-9A-F]{2}%[0-9A-F]{2}/;
188
+ const UTFMatcher = /%[0-9A-F]{2}/;
191
189
  // let gbk = true;
192
190
  let utf = true;
193
191
  const that = this;
194
192
  while (utf) {
195
- let gbkMatch = str.match(GBKMatcher);
196
- let utfMatch = str.match(UTFMatcher);
193
+ const gbkMatch = str.match(GBKMatcher);
194
+ const utfMatch = str.match(UTFMatcher);
197
195
  // gbk = Boolean(gbkMatch);
198
196
  utf = Boolean(utfMatch);
199
197
  if (gbkMatch && gbkMatch in that.#G2Uhash) {
200
- str = str.replace(gbkMatch, String.fromCharCode(("0x" + that.#G2Uhash[gbkMatch])));
198
+ str = str.replace(gbkMatch, String.fromCharCode(`0x${that.#G2Uhash[gbkMatch]}`));
201
199
  }
202
200
  else {
203
201
  str = str.replace(utfMatch, decodeURIComponent(utfMatch));
@@ -211,7 +209,7 @@ var Utils = (function () {
211
209
  /* 定义变量和函数 */
212
210
  let callbackFunction = null;
213
211
  let context = null;
214
- let handleError = (error) => { };
212
+ let handleError = () => { };
215
213
  let defaultDetails = {
216
214
  log: true,
217
215
  };
@@ -243,7 +241,7 @@ var Utils = (function () {
243
241
  run(callback, __context__) {
244
242
  callbackFunction = callback;
245
243
  context = __context__ || this;
246
- let result = executeTryCatch(callbackFunction, handleError, context);
244
+ const result = executeTryCatch(callbackFunction, handleError, context);
247
245
  return result !== void 0 ? result : TryCatchCore;
248
246
  },
249
247
  };
@@ -267,8 +265,8 @@ var Utils = (function () {
267
265
  catch (error) {
268
266
  if (defaultDetails.log) {
269
267
  callback = callback;
270
- console.log(`%c ${callback?.name ? callback?.name : callback + "出现错误"} `, "color: #f20000");
271
- console.log(`%c 错误原因:${error}`, "color: #f20000");
268
+ console.log(`%c ${callback?.name ? callback?.name : `${callback}`} `, "color: #f20000");
269
+ console.log(`%c ${error}`, "color: #f20000");
272
270
  console.trace(callback);
273
271
  }
274
272
  if (handleErrorFunc) {
@@ -287,9 +285,9 @@ var Utils = (function () {
287
285
 
288
286
  class CommonUtil {
289
287
  assign(target = {}, source = {}, isAdd = false) {
290
- let UtilsContext = this;
288
+ const UtilsContext = this;
291
289
  if (Array.isArray(source)) {
292
- let canTraverse = source.filter((item) => {
290
+ const canTraverse = source.filter((item) => {
293
291
  return typeof item === "object";
294
292
  });
295
293
  if (!canTraverse.length) {
@@ -305,34 +303,34 @@ var Utils = (function () {
305
303
  if (isAdd) {
306
304
  for (const sourceKeyName in source) {
307
305
  const targetKeyName = sourceKeyName;
308
- let targetValue = target[targetKeyName];
309
- let sourceValue = source[sourceKeyName];
306
+ const targetValue = Reflect.get(target, targetKeyName);
307
+ const sourceValue = Reflect.get(source, sourceKeyName);
310
308
  if (typeof sourceValue === "object" &&
311
309
  sourceValue != null &&
312
310
  sourceKeyName in target &&
313
311
  !UtilsContext.isDOM(sourceValue)) {
314
312
  /* 源端的值是object类型,且不是元素节点 */
315
- target[sourceKeyName] = UtilsContext.assign(targetValue, sourceValue, isAdd);
313
+ Reflect.set(target, sourceKeyName, UtilsContext.assign(targetValue, sourceValue, isAdd));
316
314
  continue;
317
315
  }
318
- target[sourceKeyName] = sourceValue;
316
+ Reflect.set(target, sourceKeyName, sourceValue);
319
317
  }
320
318
  }
321
319
  else {
322
320
  for (const targetKeyName in target) {
323
321
  if (targetKeyName in source) {
324
- let targetValue = target[targetKeyName];
325
- let sourceValue = source[targetKeyName];
322
+ const targetValue = Reflect.get(target, targetKeyName);
323
+ const sourceValue = Reflect.get(source, targetKeyName);
326
324
  if (typeof sourceValue === "object" &&
327
325
  sourceValue != null &&
328
326
  !UtilsContext.isDOM(sourceValue) &&
329
327
  Object.keys(sourceValue).length) {
330
328
  /* 源端的值是object类型,且不是元素节点 */
331
- target[targetKeyName] = UtilsContext.assign(targetValue, sourceValue, isAdd);
329
+ Reflect.set(target, targetKeyName, UtilsContext.assign(targetValue, sourceValue, isAdd));
332
330
  continue;
333
331
  }
334
332
  /* 直接赋值 */
335
- target[targetKeyName] = sourceValue;
333
+ Reflect.set(target, targetKeyName, sourceValue);
336
334
  }
337
335
  }
338
336
  }
@@ -340,7 +338,7 @@ var Utils = (function () {
340
338
  }
341
339
  isNull(...args) {
342
340
  let result = true;
343
- let checkList = [...args];
341
+ const checkList = [...args];
344
342
  for (const objItem of checkList) {
345
343
  let itemResult = false;
346
344
  if (objItem === null || objItem === undefined) {
@@ -366,11 +364,12 @@ var Utils = (function () {
366
364
  case "boolean":
367
365
  itemResult = !objItem;
368
366
  break;
369
- case "function":
370
- let funcStr = objItem.toString().replace(/\s/g, "");
367
+ case "function": {
368
+ const funcStr = objItem.toString().replace(/\s/g, "");
371
369
  /* 排除()=>{}、(xxx="")=>{}、function(){}、function(xxx=""){} */
372
370
  itemResult = Boolean(funcStr.match(/^\(.*?\)=>\{\}$|^function.*?\(.*?\)\{\}$/));
373
371
  break;
372
+ }
374
373
  }
375
374
  }
376
375
  result = result && itemResult;
@@ -391,18 +390,23 @@ var Utils = (function () {
391
390
  return target instanceof Node;
392
391
  }
393
392
  isNotNull(...args) {
394
- let UtilsContext = this;
393
+ const UtilsContext = this;
395
394
  return !UtilsContext.isNull.apply(this, args);
396
395
  }
397
396
  deepClone(obj) {
398
- let UtilsContext = this;
397
+ const UtilsContext = this;
399
398
  if (obj === void 0)
400
399
  return void 0;
401
400
  if (obj === null)
402
401
  return null;
403
- let clone = obj instanceof Array ? [] : {};
402
+ const clone = obj instanceof Array ? [] : {};
404
403
  for (const [key, value] of Object.entries(obj)) {
405
- clone[key] = typeof value === "object" ? UtilsContext.deepClone(value) : value;
404
+ if (typeof value === "object") {
405
+ Reflect.set(clone, key, UtilsContext.deepClone(value));
406
+ }
407
+ else {
408
+ Reflect.set(clone, key, value);
409
+ }
406
410
  }
407
411
  return clone;
408
412
  }
@@ -429,11 +433,11 @@ var Utils = (function () {
429
433
  }
430
434
  TryCatch()
431
435
  .config({ log: false })
432
- .error((error) => {
436
+ .error(() => {
433
437
  TryCatch()
434
438
  .error(() => {
435
439
  try {
436
- result = new Function("return " + data)();
440
+ result = new Function(`return ${data}`)();
437
441
  }
438
442
  catch (error2) {
439
443
  if (typeof errorCallBack === "function") {
@@ -444,14 +448,14 @@ var Utils = (function () {
444
448
  .run(() => {
445
449
  if (data &&
446
450
  /^[\],:{}\s]*$/.test(data
447
- .replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, "@")
448
- .replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, "]")
451
+ .replace(/\\(?:["\\/bfnrt]|u[0-9a-fA-F]{4})/g, "@")
452
+ .replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+-]?\d+)?/g, "]")
449
453
  .replace(/(?:^|:|,)(?:\s*\[)+/g, ""))) {
450
- result = new Function("return " + data)();
454
+ result = new Function(`return ${data}`)();
451
455
  }
452
456
  else {
453
457
  if (typeof errorCallBack === "function") {
454
- errorCallBack(new Error("target is not a JSON"));
458
+ errorCallBack(new Error("target is not JSON object"));
455
459
  }
456
460
  }
457
461
  });
@@ -463,7 +467,7 @@ var Utils = (function () {
463
467
  return result;
464
468
  }
465
469
  }
466
- let commonUtil = new CommonUtil();
470
+ const commonUtil = new CommonUtil();
467
471
 
468
472
  class UtilsGMCookie {
469
473
  windowApi = {
@@ -492,14 +496,14 @@ var Utils = (function () {
492
496
  if (typeof cookieName !== "string") {
493
497
  throw new TypeError("Utils.GMCookie.get 参数cookieName 必须为字符串");
494
498
  }
495
- let cookies = this.getCookiesList();
499
+ const cookies = this.getCookiesList();
496
500
  let findValue = void 0;
497
501
  for (const cookieItem of cookies) {
498
- let item = cookieItem.trim();
499
- let itemSplit = item.split("=");
500
- let itemName = itemSplit[0];
502
+ const item = cookieItem.trim();
503
+ const itemSplit = item.split("=");
504
+ const itemName = itemSplit[0];
501
505
  itemSplit.splice(0, 1);
502
- let itemValue = decodeURIComponent(itemSplit.join(""));
506
+ const itemValue = decodeURIComponent(itemSplit.join(""));
503
507
  if (itemName === cookieName) {
504
508
  findValue = {
505
509
  domain: this.windowApi.window.location.hostname,
@@ -529,7 +533,7 @@ var Utils = (function () {
529
533
  if (option == null) {
530
534
  throw new Error("Utils.GMCookie.list 参数不能为空");
531
535
  }
532
- let resultData = [];
536
+ const resultData = [];
533
537
  try {
534
538
  let defaultOption = {
535
539
  url: this.windowApi.window.location.href,
@@ -538,16 +542,16 @@ var Utils = (function () {
538
542
  path: "/",
539
543
  };
540
544
  defaultOption = commonUtil.assign(defaultOption, option);
541
- let cookies = this.getCookiesList();
545
+ const cookies = this.getCookiesList();
542
546
  cookies.forEach((item) => {
543
547
  item = item.trim();
544
- let itemSplit = item.split("=");
545
- let itemName = itemSplit[0];
548
+ const itemSplit = item.split("=");
549
+ const itemName = itemSplit[0];
546
550
  itemSplit.splice(0, 1);
547
- let itemValue = decodeURIComponent(itemSplit.join(""));
548
- let nameRegexp = defaultOption.name instanceof RegExp
551
+ const itemValue = decodeURIComponent(itemSplit.join(""));
552
+ const nameRegexp = defaultOption.name instanceof RegExp
549
553
  ? defaultOption.name
550
- : new RegExp("^" + defaultOption.name, "g");
554
+ : new RegExp(`^${defaultOption.name}`, "g");
551
555
  if (itemName.match(nameRegexp)) {
552
556
  resultData.push({
553
557
  domain: this.windowApi.window.location.hostname,
@@ -581,7 +585,7 @@ var Utils = (function () {
581
585
  if (option == null) {
582
586
  throw new Error("Utils.GMCookie.list 参数不能为空");
583
587
  }
584
- let resultData = [];
588
+ const resultData = [];
585
589
  let defaultOption = {
586
590
  url: this.windowApi.window.location.href,
587
591
  domain: this.windowApi.window.location.hostname,
@@ -589,16 +593,16 @@ var Utils = (function () {
589
593
  path: "/",
590
594
  };
591
595
  defaultOption = commonUtil.assign(defaultOption, option);
592
- let cookies = this.getCookiesList();
596
+ const cookies = this.getCookiesList();
593
597
  cookies.forEach((item) => {
594
598
  item = item.trim();
595
- let itemSplit = item.split("=");
596
- let itemName = itemSplit[0];
599
+ const itemSplit = item.split("=");
600
+ const itemName = itemSplit[0];
597
601
  itemSplit.splice(0, 1);
598
- let itemValue = decodeURIComponent(itemSplit.join(""));
599
- let nameRegexp = defaultOption.name instanceof RegExp
602
+ const itemValue = decodeURIComponent(itemSplit.join(""));
603
+ const nameRegexp = defaultOption.name instanceof RegExp
600
604
  ? defaultOption.name
601
- : new RegExp("^" + defaultOption.name, "g");
605
+ : new RegExp(`^${defaultOption.name}`, "g");
602
606
  if (itemName.match(nameRegexp)) {
603
607
  resultData.push({
604
608
  domain: this.windowApi.window.location.hostname,
@@ -638,17 +642,12 @@ var Utils = (function () {
638
642
  expirationDate: Math.floor(Date.now()) + 60 * 60 * 24 * 30,
639
643
  };
640
644
  defaultOption = commonUtil.assign(defaultOption, option);
641
- let life = defaultOption.expirationDate
645
+ const life = defaultOption.expirationDate
642
646
  ? defaultOption.expirationDate
643
647
  : Math.floor(Date.now()) + 60 * 60 * 24 * 30;
644
- let cookieStr = defaultOption.name +
645
- "=" +
646
- decodeURIComponent(defaultOption.value) +
647
- ";expires=" +
648
- new Date(life).toGMTString() +
649
- "; path=/";
648
+ let cookieStr = `${defaultOption.name}=${decodeURIComponent(defaultOption.value)};expires=${new Date(life).toGMTString()}; path=/`;
650
649
  if (commonUtil.isNull(defaultOption.domain)) {
651
- cookieStr += "; domain=" + defaultOption.domain;
650
+ cookieStr += `; domain=${defaultOption.domain}`;
652
651
  }
653
652
  this.windowApi.document.cookie = cookieStr;
654
653
  }
@@ -700,14 +699,14 @@ var Utils = (function () {
700
699
  if (cookieStr.trim() === "") {
701
700
  return [];
702
701
  }
703
- let cookies = cookieStr.split(";");
704
- let result = [];
702
+ const cookies = cookieStr.split(";");
703
+ const result = [];
705
704
  for (const cookieItem of cookies) {
706
- let item = cookieItem.trim();
707
- let itemSplit = item.split("=");
708
- let itemName = itemSplit[0];
705
+ const item = cookieItem.trim();
706
+ const itemSplit = item.split("=");
707
+ const itemName = itemSplit[0];
709
708
  itemSplit.splice(0, 1);
710
- let itemValue = decodeURIComponent(itemSplit.join(""));
709
+ const itemValue = decodeURIComponent(itemSplit.join(""));
711
710
  result.push({
712
711
  key: itemName,
713
712
  value: itemValue,
@@ -717,6 +716,7 @@ var Utils = (function () {
717
716
  }
718
717
  }
719
718
 
719
+ /* eslint-disable */
720
720
  // ==UserScript==
721
721
  // @name ajaxHooker
722
722
  // @author cxxjackie
@@ -1767,15 +1767,15 @@ var Utils = (function () {
1767
1767
  */
1768
1768
  init() {
1769
1769
  for (let index = 0; index < this.$data.data.length; index++) {
1770
- let menuOption = this.$data.data[index]["data"];
1770
+ const menuOption = this.$data.data[index]["data"];
1771
1771
  menuOption.enable = Boolean(this.getLocalMenuData(menuOption.key, menuOption.enable));
1772
1772
  if (typeof menuOption.showText !== "function") {
1773
1773
  menuOption.showText = (menuText, menuEnable) => {
1774
1774
  if (menuEnable) {
1775
- return this.$emoji.success + " " + menuText;
1775
+ return `${this.$emoji.success} ${menuText}`;
1776
1776
  }
1777
1777
  else {
1778
- return this.$emoji.error + " " + menuText;
1778
+ return `${this.$emoji.error} ${menuText}`;
1779
1779
  }
1780
1780
  };
1781
1781
  }
@@ -1786,7 +1786,7 @@ var Utils = (function () {
1786
1786
  * @param menuOptions 如果存在,使用它
1787
1787
  */
1788
1788
  register(menuOptions) {
1789
- let that = this;
1789
+ const that = this;
1790
1790
  if (menuOptions == null) {
1791
1791
  throw new TypeError("register菜单数据不能为空");
1792
1792
  }
@@ -1794,9 +1794,9 @@ var Utils = (function () {
1794
1794
  menuOptions = [menuOptions];
1795
1795
  }
1796
1796
  for (let index = 0; index < menuOptions.length; index++) {
1797
- let cloneMenuOptionData = commonUtil.deepClone(menuOptions[index].data);
1797
+ const cloneMenuOptionData = commonUtil.deepClone(menuOptions[index].data);
1798
1798
  const { showText, clickCallBack } = this.handleMenuData(cloneMenuOptionData);
1799
- let menuId = that.context.GM_Api.registerMenuCommand(showText, clickCallBack);
1799
+ const menuId = that.context.GM_Api.registerMenuCommand(showText, clickCallBack);
1800
1800
  menuOptions[index].id = menuId;
1801
1801
  cloneMenuOptionData.deleteMenu = function () {
1802
1802
  that.context.GM_Api.unregisterMenuCommand(menuId);
@@ -1810,7 +1810,7 @@ var Utils = (function () {
1810
1810
  * @param {string} key 键
1811
1811
  */
1812
1812
  getLocalMenuData(key, defaultValue) {
1813
- let localData = this.context.GM_Api.getValue(this.$data.key, {});
1813
+ const localData = this.context.GM_Api.getValue(this.$data.key, {});
1814
1814
  if (key in localData) {
1815
1815
  return localData[key];
1816
1816
  }
@@ -1824,7 +1824,7 @@ var Utils = (function () {
1824
1824
  * @param value 值
1825
1825
  */
1826
1826
  setLocalMenuData(key, value) {
1827
- let localData = this.context.GM_Api.getValue(this.$data.key, {});
1827
+ const localData = this.context.GM_Api.getValue(this.$data.key, {});
1828
1828
  localData[key] = value;
1829
1829
  this.context.GM_Api.setValue(this.$data.key, localData);
1830
1830
  },
@@ -1837,10 +1837,10 @@ var Utils = (function () {
1837
1837
  if (typeof menuOption.showText !== "function") {
1838
1838
  menuOption.showText = (menuText, menuEnable) => {
1839
1839
  if (menuEnable) {
1840
- return this.$emoji.success + " " + menuText;
1840
+ return `${this.$emoji.success} ${menuText}`;
1841
1841
  }
1842
1842
  else {
1843
- return this.$emoji.error + " " + menuText;
1843
+ return `${this.$emoji.error} ${menuText}`;
1844
1844
  }
1845
1845
  };
1846
1846
  }
@@ -1851,12 +1851,12 @@ var Utils = (function () {
1851
1851
  * @param menuOption
1852
1852
  */
1853
1853
  handleMenuData(menuOption) {
1854
- let that = this;
1855
- let menuLocalDataItemKey = menuOption.key;
1854
+ const that = this;
1855
+ const menuLocalDataItemKey = menuOption.key;
1856
1856
  /* 菜单默认开启的状态 */
1857
- let defaultEnable = Boolean(this.getLocalMenuData(menuLocalDataItemKey, menuOption.enable));
1857
+ const defaultEnable = Boolean(this.getLocalMenuData(menuLocalDataItemKey, menuOption.enable));
1858
1858
  /** 油猴菜单上显示的文本 */
1859
- let showText = menuOption.showText(menuOption.text, defaultEnable);
1859
+ const showText = menuOption.showText(menuOption.text, defaultEnable);
1860
1860
  // const GMMenuOptions = {
1861
1861
  // /**
1862
1862
  // * 菜单的id
@@ -1886,7 +1886,7 @@ var Utils = (function () {
1886
1886
  * @param event
1887
1887
  */
1888
1888
  function clickCallBack(event) {
1889
- let localEnable = Boolean(that.getLocalMenuData(menuLocalDataItemKey, defaultEnable));
1889
+ const localEnable = Boolean(that.getLocalMenuData(menuLocalDataItemKey, defaultEnable));
1890
1890
  if (menuOption.isStoreValue) {
1891
1891
  that.setLocalMenuData(menuLocalDataItemKey, !localEnable);
1892
1892
  }
@@ -1999,7 +1999,7 @@ var Utils = (function () {
1999
1999
  menuOptionList = [...menuOptionList, options];
2000
2000
  }
2001
2001
  menuOptionList.forEach((menuOption) => {
2002
- let oldMenuOption = this.MenuHandle.getMenuOption(menuOption.key);
2002
+ const oldMenuOption = this.MenuHandle.getMenuOption(menuOption.key);
2003
2003
  if (oldMenuOption) {
2004
2004
  // 覆盖
2005
2005
  Object.assign(oldMenuOption, menuOption);
@@ -2167,42 +2167,42 @@ var Utils = (function () {
2167
2167
  * 在Function原型上添加自定义方法.hook和.unhook
2168
2168
  */
2169
2169
  initEnv() {
2170
- Function.prototype.hook = function (realFunc, hookFunc, context) {
2170
+ Function.prototype.hook = function (_, hookFunc, context) {
2171
2171
  let _context = null; //函数上下文
2172
2172
  let _funcName = null; //函数名
2173
2173
  _context = context || window;
2174
2174
  _funcName = getFuncName(this);
2175
- _context["realFunc_" + _funcName] = this;
2175
+ _context[`realFunc_${_funcName}`] = this;
2176
2176
  if (_context[_funcName].prototype && _context[_funcName].prototype.isHooked) {
2177
2177
  console.log("Already has been hooked,unhook first");
2178
2178
  return false;
2179
2179
  }
2180
2180
  function getFuncName(fn) {
2181
2181
  // 获取函数名
2182
- let strFunc = fn.toString();
2183
- let _regex = /function\s+(\w+)\s*\(/;
2184
- let patten = strFunc.match(_regex);
2182
+ const strFunc = fn.toString();
2183
+ const _regex = /function\s+(\w+)\s*\(/;
2184
+ const patten = strFunc.match(_regex);
2185
2185
  if (patten) {
2186
2186
  return patten[1];
2187
2187
  }
2188
2188
  return "";
2189
2189
  }
2190
2190
  try {
2191
- new Function("_context", "_funcName", "hookFunc", `_context[_funcName] = function ${_funcName}() {
2192
- let args = Array.prototype.slice.call(arguments, 0);
2193
- let obj = this;
2194
- hookFunc.apply(obj, args);
2195
- return _context['realFunc_${_funcName}'].apply(obj, args);
2191
+ new Function("_context", "_funcName", "hookFunc", `_context[_funcName] = function ${_funcName}() {
2192
+ let args = Array.prototype.slice.call(arguments, 0);
2193
+ let obj = this;
2194
+ hookFunc.apply(obj, args);
2195
+ return _context['realFunc_${_funcName}'].apply(obj, args);
2196
2196
  };`)(_context, _funcName, hookFunc);
2197
2197
  _context[_funcName].prototype.isHooked = true;
2198
2198
  return true;
2199
2199
  }
2200
2200
  catch (e) {
2201
- console.log("Hook failed,check the params.");
2201
+ console.log("Hook failed,check the params.", e);
2202
2202
  return false;
2203
2203
  }
2204
2204
  };
2205
- Function.prototype.unhook = function (realFunc, funcName, context) {
2205
+ Function.prototype.unhook = function (_, funcName, context) {
2206
2206
  let _context = null;
2207
2207
  let _funcName = null;
2208
2208
  _context = context || window;
@@ -2211,8 +2211,8 @@ var Utils = (function () {
2211
2211
  console.log("No function is hooked on");
2212
2212
  return false;
2213
2213
  }
2214
- _context[_funcName] = _context["realFunc" + _funcName];
2215
- Reflect.deleteProperty(_context, "realFunc_" + _funcName);
2214
+ _context[_funcName] = _context[`realFunc${_funcName}`];
2215
+ Reflect.deleteProperty(_context, `realFunc_${_funcName}`);
2216
2216
  return true;
2217
2217
  };
2218
2218
  }
@@ -2220,10 +2220,10 @@ var Utils = (function () {
2220
2220
  * 删除在Function原型上添加的自定义方法.hook和.unhook
2221
2221
  */
2222
2222
  cleanEnv() {
2223
- if (Function.prototype.hasOwnProperty("hook")) {
2223
+ if (Object.prototype.hasOwnProperty.call(Function.prototype, "hook")) {
2224
2224
  Reflect.deleteProperty(Function.prototype, "hook");
2225
2225
  }
2226
- if (Function.prototype.hasOwnProperty("unhook")) {
2226
+ if (Object.prototype.hasOwnProperty.call(Function.prototype, "unhook")) {
2227
2227
  Reflect.deleteProperty(Function.prototype, "unhook");
2228
2228
  }
2229
2229
  return true;
@@ -2239,7 +2239,7 @@ var Utils = (function () {
2239
2239
  }
2240
2240
  else {
2241
2241
  return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, function (charStr) {
2242
- var randomValue = (Math.random() * 16) | 0, randomCharValue = charStr === "x" ? randomValue : (randomValue & 0x3) | 0x8;
2242
+ const randomValue = (Math.random() * 16) | 0, randomCharValue = charStr === "x" ? randomValue : (randomValue & 0x3) | 0x8;
2243
2243
  return randomCharValue.toString(16);
2244
2244
  });
2245
2245
  }
@@ -2281,9 +2281,9 @@ var Utils = (function () {
2281
2281
  }
2282
2282
  }
2283
2283
  for (let index = 0; index < this.$config.configList.length; index++) {
2284
- let item = this.$config.configList[index];
2284
+ const item = this.$config.configList[index];
2285
2285
  if (typeof item.fn === "function") {
2286
- let result = await item.fn(details);
2286
+ const result = await item.fn(details);
2287
2287
  if (result == null) {
2288
2288
  return;
2289
2289
  }
@@ -2296,7 +2296,7 @@ var Utils = (function () {
2296
2296
  */
2297
2297
  add(fn) {
2298
2298
  if (typeof fn === "function") {
2299
- let uuid = GenerateUUID();
2299
+ const uuid = GenerateUUID();
2300
2300
  this.$config.configList.push({
2301
2301
  id: uuid,
2302
2302
  fn: fn,
@@ -2313,7 +2313,7 @@ var Utils = (function () {
2313
2313
  */
2314
2314
  delete(id) {
2315
2315
  if (typeof id === "string") {
2316
- let findIndex = this.$config.configList.findIndex((item) => item.id === id);
2316
+ const findIndex = this.$config.configList.findIndex((item) => item.id === id);
2317
2317
  if (findIndex !== -1) {
2318
2318
  this.$config.configList.splice(findIndex, 1);
2319
2319
  return true;
@@ -2359,9 +2359,9 @@ var Utils = (function () {
2359
2359
  }
2360
2360
  }
2361
2361
  for (let index = 0; index < this.$config.configList.length; index++) {
2362
- let item = this.$config.configList[index];
2362
+ const item = this.$config.configList[index];
2363
2363
  if (typeof item.successFn === "function") {
2364
- let result = await item.successFn(response, details);
2364
+ const result = await item.successFn(response, details);
2365
2365
  if (result == null) {
2366
2366
  return;
2367
2367
  }
@@ -2394,9 +2394,9 @@ var Utils = (function () {
2394
2394
  }
2395
2395
  }
2396
2396
  for (let index = 0; index < this.$config.configList.length; index++) {
2397
- let item = this.$config.configList[index];
2397
+ const item = this.$config.configList[index];
2398
2398
  if (typeof item.errorFn === "function") {
2399
- let result = await item.errorFn(data);
2399
+ const result = await item.errorFn(data);
2400
2400
  if (result == null) {
2401
2401
  return;
2402
2402
  }
@@ -2408,7 +2408,7 @@ var Utils = (function () {
2408
2408
  * 添加请求前的回调处理配置
2409
2409
  */
2410
2410
  add(successFn, errorFn) {
2411
- let id = GenerateUUID();
2411
+ const id = GenerateUUID();
2412
2412
  this.$config.configList.push({
2413
2413
  id: id,
2414
2414
  successFn: successFn,
@@ -2422,7 +2422,7 @@ var Utils = (function () {
2422
2422
  */
2423
2423
  delete(id) {
2424
2424
  if (typeof id === "string") {
2425
- let findIndex = this.$config.configList.findIndex((item) => item.id === id);
2425
+ const findIndex = this.$config.configList.findIndex((item) => item.id === id);
2426
2426
  if (findIndex !== -1) {
2427
2427
  this.$config.configList.splice(findIndex, 1);
2428
2428
  return true;
@@ -2443,23 +2443,23 @@ var Utils = (function () {
2443
2443
  * 对请求的参数进行合并处理
2444
2444
  */
2445
2445
  handleBeforeRequestOptionArgs(...args) {
2446
- let option = {
2446
+ const option = {
2447
2447
  url: void 0,
2448
2448
  };
2449
2449
  if (typeof args[0] === "string") {
2450
2450
  /* 传入的是url,转为配置 */
2451
- let url = args[0];
2451
+ const url = args[0];
2452
2452
  option.url = url;
2453
2453
  if (typeof args[1] === "object") {
2454
2454
  /* 处理第二个参数details */
2455
- let optionArg = args[1];
2455
+ const optionArg = args[1];
2456
2456
  commonUtil.assign(option, optionArg, true);
2457
2457
  option.url = url;
2458
2458
  }
2459
2459
  }
2460
2460
  else {
2461
2461
  /* 传入的是配置 */
2462
- let optionArg = args[0];
2462
+ const optionArg = args[0];
2463
2463
  commonUtil.assign(option, optionArg, true);
2464
2464
  }
2465
2465
  return option;
@@ -2472,7 +2472,7 @@ var Utils = (function () {
2472
2472
  * @param reject promise抛出错误回调
2473
2473
  */
2474
2474
  getRequestOption(method, userRequestOption, resolve, reject) {
2475
- let that = this;
2475
+ const that = this;
2476
2476
  let url = userRequestOption.url || this.context.#defaultRequestOption.url;
2477
2477
  if (typeof url === "string") {
2478
2478
  // 去除左右空格
@@ -2485,7 +2485,7 @@ var Utils = (function () {
2485
2485
  }
2486
2486
  }
2487
2487
  }
2488
- let requestOption = {
2488
+ const requestOption = {
2489
2489
  url: url,
2490
2490
  method: (method || "GET").toString().toUpperCase().trim(),
2491
2491
  timeout: userRequestOption.timeout || this.context.#defaultRequestOption.timeout,
@@ -2507,9 +2507,12 @@ var Utils = (function () {
2507
2507
  /* 对象使用深拷贝 */
2508
2508
  fetchInit: commonUtil.deepClone(this.context.#defaultRequestOption.fetchInit),
2509
2509
  allowInterceptConfig: {
2510
- beforeRequest: this.context.#defaultRequestOption.allowInterceptConfig.beforeRequest,
2511
- afterResponseSuccess: this.context.#defaultRequestOption.allowInterceptConfig.afterResponseSuccess,
2512
- afterResponseError: this.context.#defaultRequestOption.allowInterceptConfig.afterResponseError,
2510
+ beforeRequest: this.context.#defaultRequestOption.allowInterceptConfig
2511
+ .beforeRequest,
2512
+ afterResponseSuccess: this.context.#defaultRequestOption.allowInterceptConfig
2513
+ .afterResponseSuccess,
2514
+ afterResponseError: this.context.#defaultRequestOption.allowInterceptConfig
2515
+ .afterResponseError,
2513
2516
  },
2514
2517
  user: userRequestOption.user || this.context.#defaultRequestOption.user,
2515
2518
  password: userRequestOption.password || this.context.#defaultRequestOption.password,
@@ -2537,15 +2540,17 @@ var Utils = (function () {
2537
2540
  };
2538
2541
  // 补全allowInterceptConfig参数
2539
2542
  if (typeof userRequestOption.allowInterceptConfig === "boolean") {
2540
- Object.keys(requestOption.allowInterceptConfig).forEach((keyName) => {
2543
+ const allowInterceptConfigKeys = Object.keys(requestOption.allowInterceptConfig);
2544
+ allowInterceptConfigKeys.forEach((keyName) => {
2541
2545
  Reflect.set(requestOption.allowInterceptConfig, keyName, userRequestOption.allowInterceptConfig);
2542
2546
  });
2543
2547
  }
2544
2548
  else {
2545
2549
  if (typeof userRequestOption.allowInterceptConfig === "object" &&
2546
2550
  userRequestOption.allowInterceptConfig != null) {
2547
- Object.keys(userRequestOption.allowInterceptConfig).forEach((keyName) => {
2548
- let value = Reflect.get(userRequestOption.allowInterceptConfig, keyName);
2551
+ const allowInterceptConfigKeys = Object.keys(requestOption.allowInterceptConfig);
2552
+ allowInterceptConfigKeys.forEach((keyName) => {
2553
+ const value = Reflect.get(userRequestOption.allowInterceptConfig, keyName);
2549
2554
  if (typeof value === "boolean" &&
2550
2555
  Reflect.has(requestOption.allowInterceptConfig, keyName)) {
2551
2556
  Reflect.set(requestOption.allowInterceptConfig, keyName, value);
@@ -2559,7 +2564,8 @@ var Utils = (function () {
2559
2564
  }
2560
2565
  if (typeof requestOption.headers === "object") {
2561
2566
  if (typeof userRequestOption.headers === "object") {
2562
- Object.keys(userRequestOption.headers).forEach((keyName, index) => {
2567
+ const headerKeys = Object.keys(requestOption.headers);
2568
+ headerKeys.forEach((keyName) => {
2563
2569
  if (keyName in requestOption.headers && userRequestOption.headers?.[keyName] == null) {
2564
2570
  /* 在默认的header中存在,且设置它新的值为空,那么就是默认的值 */
2565
2571
  Reflect.deleteProperty(requestOption.headers, keyName);
@@ -2577,8 +2583,9 @@ var Utils = (function () {
2577
2583
  if (typeof requestOption.fetchInit === "object") {
2578
2584
  /* 使用assign替换且添加 */
2579
2585
  if (typeof userRequestOption.fetchInit === "object") {
2580
- Object.keys(userRequestOption.fetchInit).forEach((keyName, index) => {
2581
- if (keyName in requestOption.fetchInit && userRequestOption.fetchInit[keyName] == null) {
2586
+ const fetchInitKeys = Object.keys(requestOption.fetchInit);
2587
+ fetchInitKeys.forEach((keyName) => {
2588
+ if (keyName in requestOption.fetchInit && Reflect.get(userRequestOption.fetchInit ?? {}, keyName) == null) {
2582
2589
  /* 在默认的fetchInit中存在,且设置它新的值为空,那么就是默认的值 */
2583
2590
  Reflect.deleteProperty(requestOption.fetchInit, keyName);
2584
2591
  }
@@ -2603,7 +2610,7 @@ var Utils = (function () {
2603
2610
  try {
2604
2611
  new URL(requestOption.url);
2605
2612
  }
2606
- catch (error) {
2613
+ catch {
2607
2614
  if (requestOption.url.startsWith("//")) {
2608
2615
  // 补充https:
2609
2616
  requestOption.url = globalThis.location.protocol + requestOption.url;
@@ -2614,7 +2621,7 @@ var Utils = (function () {
2614
2621
  }
2615
2622
  else {
2616
2623
  // 补充origin+/
2617
- requestOption.url = globalThis.location.origin + "/" + requestOption.url;
2624
+ requestOption.url = `${globalThis.location.origin}/${requestOption.url}`;
2618
2625
  }
2619
2626
  }
2620
2627
  if (requestOption.fetchInit && !requestOption.fetch) {
@@ -2624,12 +2631,12 @@ var Utils = (function () {
2624
2631
  // 转换data类型
2625
2632
  try {
2626
2633
  /** 是否对数据进行处理 */
2627
- let processData = userRequestOption.processData ?? true;
2634
+ const processData = userRequestOption.processData ?? true;
2628
2635
  if (requestOption.data != null && processData) {
2629
- let method = requestOption.method;
2636
+ const method = requestOption.method;
2630
2637
  if (method === "GET" || method === "HEAD") {
2631
2638
  // GET类型,data如果有,那么需要转为searchParams
2632
- let urlObj = new URL(requestOption.url);
2639
+ const urlObj = new URL(requestOption.url);
2633
2640
  let urlSearch = "";
2634
2641
  let isHandler = false;
2635
2642
  if (typeof requestOption.data === "string") {
@@ -2639,7 +2646,7 @@ var Utils = (function () {
2639
2646
  else if (typeof requestOption.data === "object") {
2640
2647
  isHandler = true;
2641
2648
  // URLSearchParams参数可以转普通的string:string,包括FormData
2642
- let searchParams = new URLSearchParams(requestOption.data);
2649
+ const searchParams = new URLSearchParams(requestOption.data);
2643
2650
  urlSearch = searchParams.toString();
2644
2651
  }
2645
2652
  if (isHandler) {
@@ -2660,7 +2667,7 @@ var Utils = (function () {
2660
2667
  }
2661
2668
  else {
2662
2669
  // xxx=xxx&xxx=
2663
- urlObj.search = urlObj.search + "&" + urlSearch;
2670
+ urlObj.search = `${urlObj.search}&${urlSearch}`;
2664
2671
  }
2665
2672
  }
2666
2673
  }
@@ -2668,14 +2675,14 @@ var Utils = (function () {
2668
2675
  }
2669
2676
  else if (method === "POST" && requestOption.headers != null) {
2670
2677
  // POST类型,data如果是FormData,那么需要转为string
2671
- let headersKeyList = Object.keys(requestOption.headers);
2672
- let ContentTypeIndex = headersKeyList.findIndex((headerKey) => {
2678
+ const headersKeyList = Object.keys(requestOption.headers);
2679
+ const ContentTypeIndex = headersKeyList.findIndex((headerKey) => {
2673
2680
  return (headerKey.trim().toLowerCase() === "content-type" &&
2674
2681
  typeof requestOption.headers[headerKey] === "string");
2675
2682
  });
2676
2683
  if (ContentTypeIndex !== -1) {
2677
- let ContentTypeKey = headersKeyList[ContentTypeIndex];
2678
- let ContentType = requestOption.headers[ContentTypeKey];
2684
+ const ContentTypeKey = headersKeyList[ContentTypeIndex];
2685
+ const ContentType = requestOption.headers[ContentTypeKey];
2679
2686
  // 设置了Content-Type
2680
2687
  if (ContentType.includes("application/json")) {
2681
2688
  // application/json
@@ -2716,10 +2723,10 @@ var Utils = (function () {
2716
2723
  * @param option 请求配置
2717
2724
  */
2718
2725
  removeRequestNullOption(option) {
2719
- Object.keys(option).forEach((keyName) => {
2720
- if (option[keyName] == null ||
2721
- (option[keyName] instanceof Function &&
2722
- commonUtil.isNull(option[keyName]))) {
2726
+ const optionKeys = Object.keys(option);
2727
+ optionKeys.forEach((keyName) => {
2728
+ const optionValue = option[keyName];
2729
+ if (optionValue == null || (optionValue instanceof Function && commonUtil.isNull(optionValue))) {
2723
2730
  Reflect.deleteProperty(option, keyName);
2724
2731
  return;
2725
2732
  }
@@ -2737,14 +2744,14 @@ var Utils = (function () {
2737
2744
  /**
2738
2745
  * fetch的请求配置
2739
2746
  **/
2740
- let fetchRequestOption = {};
2747
+ const fetchRequestOption = {};
2741
2748
  if ((option.method === "GET" || option.method === "HEAD") && option.data != null) {
2742
2749
  /* GET 或 HEAD 方法的请求不能包含 body 信息 */
2743
2750
  Reflect.deleteProperty(option, "data");
2744
2751
  }
2745
2752
  /* 中止信号控制器 */
2746
- let abortController = new AbortController();
2747
- let signal = abortController.signal;
2753
+ const abortController = new AbortController();
2754
+ const signal = abortController.signal;
2748
2755
  signal.onabort = () => {
2749
2756
  option.onabort({
2750
2757
  isFetch: true,
@@ -2789,10 +2796,10 @@ var Utils = (function () {
2789
2796
  * onabort请求被取消-触发
2790
2797
  * @param details 配置
2791
2798
  * @param resolve promise回调
2792
- * @param reject promise抛出错误回调
2799
+ * @param _reject promise抛出错误回调
2793
2800
  * @param argsResult 返回的参数列表
2794
2801
  */
2795
- async onAbort(details, resolve, reject, argsResult) {
2802
+ async onAbort(details, resolve, _reject, argsResult) {
2796
2803
  // console.log(argsResult);
2797
2804
  if (typeof details?.onabort === "function") {
2798
2805
  details.onabort.apply(this, argsResult);
@@ -2829,7 +2836,7 @@ var Utils = (function () {
2829
2836
  * @param reject 抛出错误
2830
2837
  * @param argsResult 返回的参数列表
2831
2838
  */
2832
- async onTimeout(details, resolve, reject, argsResult) {
2839
+ async onTimeout(details, resolve, _reject, argsResult) {
2833
2840
  // console.log(argsResult);
2834
2841
  if (typeof details?.ontimeout === "function") {
2835
2842
  // 执行配置中的ontime回调
@@ -2867,10 +2874,10 @@ var Utils = (function () {
2867
2874
  * onerror请求异常-触发
2868
2875
  * @param details 配置
2869
2876
  * @param resolve 回调
2870
- * @param reject 抛出错误
2877
+ * @param _reject 抛出错误
2871
2878
  * @param argsResult 返回的参数列表
2872
2879
  */
2873
- async onError(details, resolve, reject, argsResult) {
2880
+ async onError(details, resolve, _reject, argsResult) {
2874
2881
  // console.log(argsResult);
2875
2882
  if (typeof details?.onerror === "function") {
2876
2883
  details.onerror.apply(this, argsResult);
@@ -2904,16 +2911,15 @@ var Utils = (function () {
2904
2911
  * onload加载完毕-触发
2905
2912
  * @param details 请求的配置
2906
2913
  * @param resolve 回调
2907
- * @param reject 抛出错误
2914
+ * @param _reject 抛出错误
2908
2915
  * @param argsResult 返回的参数列表
2909
2916
  */
2910
- async onLoad(details, resolve, reject, argsResult) {
2917
+ async onLoad(details, resolve, _reject, argsResult) {
2911
2918
  // console.log(argsResult);
2912
2919
  /* X浏览器会因为设置了responseType导致不返回responseText */
2913
- let originResponse = argsResult[0];
2920
+ const originResponse = argsResult[0];
2914
2921
  /* responseText为空,response不为空的情况 */
2915
- if (commonUtil.isNull(originResponse["responseText"]) &&
2916
- commonUtil.isNotNull(originResponse["response"])) {
2922
+ if (commonUtil.isNull(originResponse["responseText"]) && commonUtil.isNotNull(originResponse["response"])) {
2917
2923
  if (typeof originResponse["response"] === "object") {
2918
2924
  TryCatch().run(() => {
2919
2925
  originResponse["responseText"] = JSON.stringify(originResponse["response"]);
@@ -2928,51 +2934,51 @@ var Utils = (function () {
2928
2934
  typeof originResponse["responseText"] === "string" &&
2929
2935
  originResponse["responseText"].trim() !== "") {
2930
2936
  /** 原始的请求text */
2931
- let httpxResponseText = originResponse.responseText;
2937
+ const httpxResponseText = originResponse.responseText;
2932
2938
  // 自定义个新的response
2933
2939
  let httpxResponse = httpxResponseText;
2934
2940
  if (details.responseType === "json") {
2935
2941
  httpxResponse = commonUtil.toJSON(httpxResponseText);
2936
2942
  }
2937
2943
  else if (details.responseType === "document") {
2938
- let parser = new DOMParser();
2944
+ const parser = new DOMParser();
2939
2945
  httpxResponse = parser.parseFromString(httpxResponseText, "text/html");
2940
2946
  }
2941
2947
  else if (details.responseType === "arraybuffer") {
2942
- let encoder = new TextEncoder();
2943
- let arrayBuffer = encoder.encode(httpxResponseText);
2948
+ const encoder = new TextEncoder();
2949
+ const arrayBuffer = encoder.encode(httpxResponseText);
2944
2950
  httpxResponse = arrayBuffer;
2945
2951
  }
2946
2952
  else if (details.responseType === "blob") {
2947
- let encoder = new TextEncoder();
2948
- let arrayBuffer = encoder.encode(httpxResponseText);
2953
+ const encoder = new TextEncoder();
2954
+ const arrayBuffer = encoder.encode(httpxResponseText);
2949
2955
  httpxResponse = new Blob([arrayBuffer]);
2950
2956
  }
2951
2957
  // 尝试覆盖原response
2952
2958
  try {
2953
- let setStatus = Reflect.set(originResponse, "response", httpxResponse);
2959
+ const setStatus = Reflect.set(originResponse, "response", httpxResponse);
2954
2960
  if (!setStatus) {
2955
2961
  console.warn("[Httpx-HttpxCallBack.oonLoad] 覆盖原始 response 失败,尝试添加新的httpxResponse");
2956
2962
  try {
2957
2963
  Reflect.set(originResponse, "httpxResponse", httpxResponse);
2958
2964
  }
2959
- catch (error) {
2965
+ catch {
2960
2966
  console.warn("[Httpx-HttpxCallBack.oonLoad] httpxResponse 无法被覆盖");
2961
2967
  }
2962
2968
  }
2963
2969
  }
2964
- catch (error) {
2970
+ catch {
2965
2971
  console.warn("[Httpx-HttpxCallBack.oonLoad] 原始 response 无法被覆盖,尝试添加新的httpxResponse");
2966
2972
  try {
2967
2973
  Reflect.set(originResponse, "httpxResponse", httpxResponse);
2968
2974
  }
2969
- catch (error) {
2975
+ catch {
2970
2976
  console.warn("[Httpx-HttpxCallBack.oonLoad] httpxResponse 无法被覆盖");
2971
2977
  }
2972
2978
  }
2973
2979
  }
2974
2980
  /* Stay扩展中没有finalUrl,对应的是responseURL */
2975
- let originResponseURL = Reflect.get(originResponse, "responseURL");
2981
+ const originResponseURL = Reflect.get(originResponse, "responseURL");
2976
2982
  if (originResponse["finalUrl"] == null && originResponseURL != null) {
2977
2983
  Reflect.set(originResponse, "finalUrl", originResponseURL);
2978
2984
  }
@@ -2992,7 +2998,7 @@ var Utils = (function () {
2992
2998
  });
2993
2999
  }
2994
3000
  else {
2995
- this.context.HttpxResponseCallBack.onError(details, resolve, reject, argsResult);
3001
+ this.context.HttpxResponseCallBack.onError(details, resolve, _reject, argsResult);
2996
3002
  }
2997
3003
  },
2998
3004
  /**
@@ -3049,7 +3055,7 @@ var Utils = (function () {
3049
3055
  console.log("[Httpx-HttpxRequest.request] 请求前的配置👇", details);
3050
3056
  }
3051
3057
  if (typeof this.context.HttpxRequestHook.beforeRequestCallBack === "function") {
3052
- let hookResult = await this.context.HttpxRequestHook.beforeRequestCallBack(details);
3058
+ const hookResult = await this.context.HttpxRequestHook.beforeRequestCallBack(details);
3053
3059
  if (hookResult == null) {
3054
3060
  return;
3055
3061
  }
@@ -3081,7 +3087,7 @@ var Utils = (function () {
3081
3087
  fetch(option.url, fetchRequestOption)
3082
3088
  .then(async (fetchResponse) => {
3083
3089
  /** 自定义的response */
3084
- let httpxResponse = {
3090
+ const httpxResponse = {
3085
3091
  isFetch: true,
3086
3092
  finalUrl: fetchResponse.url,
3087
3093
  readyState: 4,
@@ -3096,9 +3102,9 @@ var Utils = (function () {
3096
3102
  };
3097
3103
  Object.assign(httpxResponse, option.context || {});
3098
3104
  // 把headers转为字符串
3099
- for (const [key, value] of fetchResponse.headers.entries()) {
3105
+ fetchResponse.headers.forEach((value, key) => {
3100
3106
  httpxResponse.responseHeaders += `${key}: ${value}\n`;
3101
- }
3107
+ });
3102
3108
  /** 请求返回的类型 */
3103
3109
  const fetchResponseType = fetchResponse.headers.get("Content-Type");
3104
3110
  /* 如果需要stream,且获取到的是stream,那直接返回 */
@@ -3119,11 +3125,11 @@ var Utils = (function () {
3119
3125
  /** 响应xml文档 */
3120
3126
  let responseXML = "";
3121
3127
  /** 先获取二进制数据 */
3122
- let arrayBuffer = await fetchResponse.arrayBuffer();
3128
+ const arrayBuffer = await fetchResponse.arrayBuffer();
3123
3129
  /** 数据编码 */
3124
3130
  let encoding = "utf-8";
3125
3131
  if (fetchResponse.headers.has("Content-Type")) {
3126
- let charsetMatched = fetchResponse.headers.get("Content-Type")?.match(/charset=(.+)/);
3132
+ const charsetMatched = fetchResponse.headers.get("Content-Type")?.match(/charset=(.+)/);
3127
3133
  if (charsetMatched) {
3128
3134
  encoding = charsetMatched[1];
3129
3135
  encoding = encoding.toLowerCase();
@@ -3133,7 +3139,7 @@ var Utils = (function () {
3133
3139
  // 去除引号
3134
3140
  encoding = encoding.replace(/('|")/gi, "");
3135
3141
  // 编码
3136
- let textDecoder = new TextDecoder(encoding);
3142
+ const textDecoder = new TextDecoder(encoding);
3137
3143
  responseText = textDecoder.decode(arrayBuffer);
3138
3144
  response = responseText;
3139
3145
  if (option.responseType === "arraybuffer") {
@@ -3151,11 +3157,11 @@ var Utils = (function () {
3151
3157
  }
3152
3158
  else if (option.responseType === "document" || option.responseType == null) {
3153
3159
  // response返回格式是文档格式
3154
- let parser = new DOMParser();
3160
+ const parser = new DOMParser();
3155
3161
  response = parser.parseFromString(responseText, "text/html");
3156
3162
  }
3157
3163
  // 转为XML结构
3158
- let parser = new DOMParser();
3164
+ const parser = new DOMParser();
3159
3165
  responseXML = parser.parseFromString(responseText, "text/xml");
3160
3166
  httpxResponse.response = response;
3161
3167
  httpxResponse.responseText = responseText;
@@ -3229,6 +3235,9 @@ var Utils = (function () {
3229
3235
  onreadystatechange() { },
3230
3236
  onprogress() { },
3231
3237
  };
3238
+ /**
3239
+ * 实例化的默认配置
3240
+ */
3232
3241
  #defaultInitOption = {
3233
3242
  /**
3234
3243
  * `baseURL` 将自动加在 `url` 前面,除非 `url` 是一个绝对 URL。
@@ -3344,7 +3353,7 @@ var Utils = (function () {
3344
3353
  * @param details 配置
3345
3354
  */
3346
3355
  get(...args) {
3347
- let useRequestOption = this.HttpxRequestOption.handleBeforeRequestOptionArgs(...args);
3356
+ const useRequestOption = this.HttpxRequestOption.handleBeforeRequestOptionArgs(...args);
3348
3357
  useRequestOption.method = "GET";
3349
3358
  return this.request(useRequestOption, (option) => {
3350
3359
  Reflect.deleteProperty(option, "onprogress");
@@ -3354,7 +3363,7 @@ var Utils = (function () {
3354
3363
  * POST 请求
3355
3364
  */
3356
3365
  post(...args) {
3357
- let useRequestOption = this.HttpxRequestOption.handleBeforeRequestOptionArgs(...args);
3366
+ const useRequestOption = this.HttpxRequestOption.handleBeforeRequestOptionArgs(...args);
3358
3367
  useRequestOption.method = "POST";
3359
3368
  return this.request(useRequestOption);
3360
3369
  }
@@ -3362,7 +3371,7 @@ var Utils = (function () {
3362
3371
  * HEAD 请求
3363
3372
  */
3364
3373
  head(...args) {
3365
- let useRequestOption = this.HttpxRequestOption.handleBeforeRequestOptionArgs(...args);
3374
+ const useRequestOption = this.HttpxRequestOption.handleBeforeRequestOptionArgs(...args);
3366
3375
  useRequestOption.method = "HEAD";
3367
3376
  return this.request(useRequestOption, (option) => {
3368
3377
  Reflect.deleteProperty(option, "onprogress");
@@ -3372,7 +3381,7 @@ var Utils = (function () {
3372
3381
  * OPTIONS 请求
3373
3382
  */
3374
3383
  options(...args) {
3375
- let useRequestOption = this.HttpxRequestOption.handleBeforeRequestOptionArgs(...args);
3384
+ const useRequestOption = this.HttpxRequestOption.handleBeforeRequestOptionArgs(...args);
3376
3385
  useRequestOption.method = "OPTIONS";
3377
3386
  return this.request(useRequestOption, (option) => {
3378
3387
  Reflect.deleteProperty(option, "onprogress");
@@ -3382,7 +3391,7 @@ var Utils = (function () {
3382
3391
  * DELETE 请求
3383
3392
  */
3384
3393
  delete(...args) {
3385
- let useRequestOption = this.HttpxRequestOption.handleBeforeRequestOptionArgs(...args);
3394
+ const useRequestOption = this.HttpxRequestOption.handleBeforeRequestOptionArgs(...args);
3386
3395
  useRequestOption.method = "DELETE";
3387
3396
  return this.request(useRequestOption, (option) => {
3388
3397
  Reflect.deleteProperty(option, "onprogress");
@@ -3392,7 +3401,7 @@ var Utils = (function () {
3392
3401
  * PUT 请求
3393
3402
  */
3394
3403
  put(...args) {
3395
- let userRequestOption = this.HttpxRequestOption.handleBeforeRequestOptionArgs(...args);
3404
+ const userRequestOption = this.HttpxRequestOption.handleBeforeRequestOptionArgs(...args);
3396
3405
  userRequestOption.method = "PUT";
3397
3406
  return this.request(userRequestOption);
3398
3407
  }
@@ -3402,18 +3411,30 @@ var Utils = (function () {
3402
3411
  * @param beforeRequestOption 处理请求前的配置
3403
3412
  */
3404
3413
  request(details, beforeRequestOption) {
3405
- let useRequestOption = this.HttpxRequestOption.handleBeforeRequestOptionArgs(details);
3406
- /** 取消请求 */
3414
+ // 对请求的参数进行合并处理
3415
+ const userRequestOption = this.HttpxRequestOption.handleBeforeRequestOptionArgs(details);
3416
+ /**
3417
+ * 取消请求
3418
+ */
3407
3419
  let abortFn = null;
3408
- let promise = new globalThis.Promise(async (resolve, reject) => {
3409
- let requestOption = (this.HttpxRequestOption.getRequestOption(useRequestOption.method, useRequestOption, resolve, reject));
3420
+ const promise = new globalThis.Promise(async (resolve, reject) => {
3421
+ // 请求配置
3422
+ let requestOption = this.HttpxRequestOption.getRequestOption(userRequestOption.method, userRequestOption, (resultOption) => {
3423
+ resolve(resultOption);
3424
+ }, (...args) => {
3425
+ reject(...args);
3426
+ });
3427
+ requestOption = this.HttpxRequestOption.removeRequestNullOption(requestOption);
3410
3428
  if (typeof beforeRequestOption === "function") {
3411
3429
  beforeRequestOption(requestOption);
3412
3430
  }
3413
- requestOption = this.HttpxRequestOption.removeRequestNullOption(requestOption);
3431
+ // 处理重试逻辑
3414
3432
  const requestResult = await this.HttpxRequest.request(requestOption);
3415
3433
  if (requestResult != null && typeof requestResult.abort === "function") {
3416
- abortFn = requestResult.abort;
3434
+ abortFn = () => {
3435
+ // 取消请求
3436
+ requestResult.abort();
3437
+ };
3417
3438
  }
3418
3439
  });
3419
3440
  promise.abort = () => {
@@ -3432,10 +3453,7 @@ var Utils = (function () {
3432
3453
  /* websql的版本号,由于ios的问题,版本号的写法不一样 */
3433
3454
  // #slqVersion = "1";
3434
3455
  /* 监听IndexDB */
3435
- #indexedDB = window.indexedDB ||
3436
- window.mozIndexedDB ||
3437
- window.webkitIndexedDB ||
3438
- window.msIndexedDB;
3456
+ #indexedDB = globalThis.indexedDB || globalThis.mozIndexedDB || globalThis.webkitIndexedDB || globalThis.msIndexedDB;
3439
3457
  /* 缓存数据库,避免同一个页面重复创建和销毁 */
3440
3458
  #db = {};
3441
3459
  // #store: IDBObjectStore = null as any;
@@ -3470,7 +3488,7 @@ var Utils = (function () {
3470
3488
  this.#storeName = storeName;
3471
3489
  this.#dbVersion = dbVersion;
3472
3490
  if (!this.#indexedDB) {
3473
- alert("很抱歉,您的浏览器不支持indexedDB");
3491
+ window.alert("很抱歉,您的浏览器不支持indexedDB");
3474
3492
  throw new TypeError("很抱歉,您的浏览器不支持indexedDB");
3475
3493
  }
3476
3494
  }
@@ -3479,10 +3497,9 @@ var Utils = (function () {
3479
3497
  * @param dbName 表名
3480
3498
  */
3481
3499
  createStore(dbName) {
3482
- let txn, store;
3483
- txn = this.#db[dbName].transaction(this.#storeName, "readwrite");
3500
+ const txn = this.#db[dbName].transaction(this.#storeName, "readwrite");
3484
3501
  /* IndexDB的读写权限 */
3485
- store = txn.objectStore(this.#storeName);
3502
+ const store = txn.objectStore(this.#storeName);
3486
3503
  // this.#store = store;
3487
3504
  return store;
3488
3505
  }
@@ -3492,12 +3509,12 @@ var Utils = (function () {
3492
3509
  * @param dbName 数据库名
3493
3510
  */
3494
3511
  open(callback, dbName) {
3495
- let that = this;
3512
+ const that = this;
3496
3513
  /* 打开数据库 */
3497
3514
  /* 如果支持IndexDB */
3498
3515
  if (!that.#db[dbName]) {
3499
3516
  /* 如果缓存中没有,则进行数据库的创建或打开,提高效率 */
3500
- let request = that.#indexedDB.open(dbName, that.#dbVersion);
3517
+ const request = that.#indexedDB.open(dbName, that.#dbVersion);
3501
3518
  request.onerror = function (event) {
3502
3519
  callback(null, {
3503
3520
  code: that.#statusCode.openFailed.code,
@@ -3507,26 +3524,26 @@ var Utils = (function () {
3507
3524
  };
3508
3525
  request.onsuccess = function (event) {
3509
3526
  if (!that.#db[dbName]) {
3510
- let target = event.target;
3527
+ const target = event.target;
3511
3528
  that.#db[dbName] = target.result;
3512
3529
  }
3513
- let store = that.createStore(dbName);
3530
+ const store = that.createStore(dbName);
3514
3531
  callback(store);
3515
3532
  };
3516
3533
  request.onupgradeneeded = function (event) {
3517
- let target = event.target;
3534
+ const target = event.target;
3518
3535
  that.#db[dbName] = target.result;
3519
- let store = that.#db[dbName].createObjectStore(that.#storeName, {
3536
+ const store = that.#db[dbName].createObjectStore(that.#storeName, {
3520
3537
  keyPath: "key",
3521
3538
  });
3522
- store.transaction.oncomplete = function (event) {
3539
+ store.transaction.oncomplete = function () {
3523
3540
  callback(store);
3524
3541
  };
3525
3542
  };
3526
3543
  }
3527
3544
  else {
3528
3545
  /* 如果缓存中已经打开了数据库,就直接使用 */
3529
- let store = this.createStore(dbName);
3546
+ const store = this.createStore(dbName);
3530
3547
  callback(store);
3531
3548
  }
3532
3549
  }
@@ -3536,10 +3553,10 @@ var Utils = (function () {
3536
3553
  * @param value 数据值
3537
3554
  */
3538
3555
  async save(key, value) {
3539
- let that = this;
3556
+ const that = this;
3540
3557
  return new Promise((resolve) => {
3541
- let dbName = this.#dbName;
3542
- let inData = {
3558
+ const dbName = this.#dbName;
3559
+ const inData = {
3543
3560
  key: key,
3544
3561
  value: value,
3545
3562
  };
@@ -3552,7 +3569,7 @@ var Utils = (function () {
3552
3569
  });
3553
3570
  }
3554
3571
  else {
3555
- let request = idbStore.put(inData);
3572
+ const request = idbStore.put(inData);
3556
3573
  request.onsuccess = function (event) {
3557
3574
  /* 保存成功有success 字段 */
3558
3575
  resolve({
@@ -3579,9 +3596,9 @@ var Utils = (function () {
3579
3596
  * @param key 数据key
3580
3597
  */
3581
3598
  async has(key) {
3582
- let that = this;
3599
+ const that = this;
3583
3600
  return new Promise((resolve) => {
3584
- let dbName = this.#dbName;
3601
+ const dbName = this.#dbName;
3585
3602
  this.open(function (idbStore) {
3586
3603
  /* 判断返回的数据中是否有error字段 */
3587
3604
  if (idbStore == null) {
@@ -3592,7 +3609,7 @@ var Utils = (function () {
3592
3609
  });
3593
3610
  }
3594
3611
  else {
3595
- let request = idbStore.get(key);
3612
+ const request = idbStore.get(key);
3596
3613
  request.onsuccess = function (event) {
3597
3614
  /* result 返回的是 {key: string, value: any} */
3598
3615
  /* 键值对存储 */
@@ -3620,9 +3637,9 @@ var Utils = (function () {
3620
3637
  * @param key 数据key
3621
3638
  */
3622
3639
  async get(key) {
3623
- let that = this;
3640
+ const that = this;
3624
3641
  return new Promise((resolve) => {
3625
- let dbName = this.#dbName;
3642
+ const dbName = this.#dbName;
3626
3643
  this.open(function (idbStore) {
3627
3644
  /* 判断返回的数据中是否有error字段 */
3628
3645
  if (idbStore == null) {
@@ -3634,13 +3651,13 @@ var Utils = (function () {
3634
3651
  });
3635
3652
  }
3636
3653
  else {
3637
- let request = idbStore.get(key);
3654
+ const request = idbStore.get(key);
3638
3655
  request.onsuccess = function (event) {
3639
- let target = event.target;
3640
- let result = target.result;
3656
+ const target = event.target;
3657
+ const result = target.result;
3641
3658
  /* result 返回的是 {key: string, value: any} */
3642
3659
  /* 键值对存储 */
3643
- let data = result ? result.value : void 0;
3660
+ const data = result ? result.value : void 0;
3644
3661
  if (data == null) {
3645
3662
  resolve({
3646
3663
  success: true,
@@ -3681,10 +3698,10 @@ var Utils = (function () {
3681
3698
  */
3682
3699
  async regexpGet(key) {
3683
3700
  let list = [];
3684
- let that = this;
3701
+ const that = this;
3685
3702
  return new Promise((resolve) => {
3686
3703
  /* 正则查询 */
3687
- let dbName = that.#dbName;
3704
+ const dbName = that.#dbName;
3688
3705
  this.open(function (idbStore) {
3689
3706
  /* 判断返回的数据中是否有error字段 */
3690
3707
  if (idbStore == null) {
@@ -3696,16 +3713,16 @@ var Utils = (function () {
3696
3713
  });
3697
3714
  }
3698
3715
  else {
3699
- let request = idbStore.getAll();
3716
+ const request = idbStore.getAll();
3700
3717
  request.onsuccess = function (event) {
3701
- let target = event.target;
3702
- let result = target.result;
3718
+ const target = event.target;
3719
+ const result = target.result;
3703
3720
  if (result.length !== 0) {
3704
- result.forEach((dataItem, index) => {
3721
+ result.forEach((dataItem) => {
3705
3722
  // 当前项的key
3706
- let __key = dataItem["key"];
3723
+ const __key = dataItem["key"];
3707
3724
  // 当前项的value
3708
- let __value = dataItem["value"];
3725
+ const __value = dataItem["value"];
3709
3726
  if (__key.match(key)) {
3710
3727
  list = list.concat(__value);
3711
3728
  }
@@ -3737,10 +3754,10 @@ var Utils = (function () {
3737
3754
  * @param key 数据key
3738
3755
  */
3739
3756
  async delete(key) {
3740
- let that = this;
3757
+ const that = this;
3741
3758
  return new Promise((resolve) => {
3742
3759
  /* 根据key删除某条数据 */
3743
- let dbName = that.#dbName;
3760
+ const dbName = that.#dbName;
3744
3761
  this.open(function (idbStore) {
3745
3762
  if (idbStore == null) {
3746
3763
  resolve({
@@ -3751,7 +3768,7 @@ var Utils = (function () {
3751
3768
  }
3752
3769
  else {
3753
3770
  // 删除键
3754
- let request = idbStore.delete(key);
3771
+ const request = idbStore.delete(key);
3755
3772
  request.onsuccess = function (event) {
3756
3773
  resolve({
3757
3774
  success: true,
@@ -3776,10 +3793,10 @@ var Utils = (function () {
3776
3793
  * 删除所有数据
3777
3794
  */
3778
3795
  async deleteAll() {
3779
- let that = this;
3796
+ const that = this;
3780
3797
  return new Promise((resolve) => {
3781
3798
  /* 清空数据库 */
3782
- let dbName = that.#dbName;
3799
+ const dbName = that.#dbName;
3783
3800
  this.open(function (idbStore) {
3784
3801
  if (idbStore == null) {
3785
3802
  resolve({
@@ -3790,7 +3807,7 @@ var Utils = (function () {
3790
3807
  }
3791
3808
  else {
3792
3809
  // 清空
3793
- let operateResult = idbStore.clear();
3810
+ const operateResult = idbStore.clear();
3794
3811
  operateResult.onsuccess = function (event) {
3795
3812
  resolve({
3796
3813
  success: true,
@@ -3823,7 +3840,7 @@ var Utils = (function () {
3823
3840
  run;
3824
3841
  isLock;
3825
3842
  constructor(callback, context, delayTime) {
3826
- let that = this;
3843
+ const that = this;
3827
3844
  this.#callback = callback;
3828
3845
  if (typeof context === "number") {
3829
3846
  this.#delayTime = context;
@@ -3913,14 +3930,14 @@ var Utils = (function () {
3913
3930
  * @param stack
3914
3931
  */
3915
3932
  parseErrorStack(stack) {
3916
- let result = {
3933
+ const result = {
3917
3934
  name: "",
3918
3935
  position: "",
3919
3936
  };
3920
3937
  for (let stackString of stack) {
3921
3938
  stackString = stackString.trim();
3922
- let stackFunctionNameMatch = stackString.match(/^at[\s]+(.+?)[\s]+/i);
3923
- let stackFunctionNamePositionMatch = stackString.match(/^at[\s]+.+[\s]+\((.+?)\)/i);
3939
+ const stackFunctionNameMatch = stackString.match(/^at[\s]+(.+?)[\s]+/i);
3940
+ const stackFunctionNamePositionMatch = stackString.match(/^at[\s]+.+[\s]+\((.+?)\)/i);
3924
3941
  if (stackFunctionNameMatch == null) {
3925
3942
  continue;
3926
3943
  }
@@ -3928,8 +3945,8 @@ var Utils = (function () {
3928
3945
  continue;
3929
3946
  }
3930
3947
  /* 获取最后一个,因为第一个是包含了at */
3931
- let stackFunctionName = stackFunctionNameMatch[stackFunctionNameMatch.length - 1];
3932
- let stackFunctionNamePosition = stackFunctionNamePositionMatch[stackFunctionNamePositionMatch.length - 1];
3948
+ const stackFunctionName = stackFunctionNameMatch[stackFunctionNameMatch.length - 1];
3949
+ const stackFunctionNamePosition = stackFunctionNamePositionMatch[stackFunctionNamePositionMatch.length - 1];
3933
3950
  if (stackFunctionName === "" ||
3934
3951
  stackFunctionName.match(/^(Utils\.|)Log(\.|)|.<anonymous>$|^Function.each|^NodeList.forEach|^k.fn.init.each/g)) {
3935
3952
  continue;
@@ -3941,9 +3958,9 @@ var Utils = (function () {
3941
3958
  }
3942
3959
  }
3943
3960
  if (result.position === "") {
3944
- let lastStackString = stack[stack.length - 1].trim();
3961
+ const lastStackString = stack[stack.length - 1].trim();
3945
3962
  if (lastStackString.startsWith("at chrome-extension://")) {
3946
- let lastStackMatch = lastStackString.match(/^at[\s]+(.+)/);
3963
+ const lastStackMatch = lastStackString.match(/^at[\s]+(.+)/);
3947
3964
  if (lastStackMatch) {
3948
3965
  result.position = lastStackMatch[lastStackMatch.length - 1];
3949
3966
  }
@@ -3973,16 +3990,18 @@ var Utils = (function () {
3973
3990
  printContent(msg, color, otherStyle) {
3974
3991
  this.checkClearConsole();
3975
3992
  otherStyle = otherStyle || "";
3976
- let stackSplit = new Error().stack.split("\n");
3993
+ const stackSplit = new Error().stack.split("\n");
3977
3994
  stackSplit.splice(0, 2);
3978
- let { name: callerName, position: callerPosition } = this.parseErrorStack(stackSplit);
3979
- let tagName = this.tag;
3980
- let that = this;
3995
+ const { name: callerName, position: callerPosition } = this.parseErrorStack(stackSplit);
3996
+ const tagName = this.tag;
3997
+ const that = this;
3981
3998
  /** tag的html输出格式 */
3982
- let tagNameHTML = `%c[${tagName}%c`;
3999
+ const tagNameHTML = `%c[${tagName}%c`;
3983
4000
  /** 调用的函数名的html输出格式 */
3984
4001
  let callerNameHTML = `%c${callerName}%c]%c`;
3985
- callerName.trim() !== "" && (callerNameHTML = "-" + callerNameHTML);
4002
+ if (callerName.trim() === "") {
4003
+ callerNameHTML = `-${callerNameHTML}`;
4004
+ }
3986
4005
  /**
3987
4006
  * 输出消息到控制台
3988
4007
  * @param message
@@ -4068,14 +4087,14 @@ var Utils = (function () {
4068
4087
  if (this.#disable)
4069
4088
  return;
4070
4089
  this.checkClearConsole();
4071
- let stack = new Error().stack.split("\n");
4090
+ const stack = new Error().stack.split("\n");
4072
4091
  stack.splice(0, 1);
4073
- let errorStackParse = this.parseErrorStack(stack);
4092
+ const errorStackParse = this.parseErrorStack(stack);
4074
4093
  /** 堆栈函数名 */
4075
- let stackFunctionName = errorStackParse.name;
4094
+ const stackFunctionName = errorStackParse.name;
4076
4095
  /** 堆栈位置 */
4077
- let stackFunctionNamePosition = errorStackParse.position;
4078
- let callerName = stackFunctionName;
4096
+ const stackFunctionNamePosition = errorStackParse.position;
4097
+ const callerName = stackFunctionName;
4079
4098
  this.#console.log(`%c[${this.tag}%c-%c${callerName}%c]%c`, ...this.#msgColorDetails, `color: ${this.#details.infoColor};`);
4080
4099
  this.#console.table(msg);
4081
4100
  if (this.#details.debug) {
@@ -4138,9 +4157,9 @@ var Utils = (function () {
4138
4157
  */
4139
4158
  circleRadius: 50,
4140
4159
  };
4141
- #ctx = null;
4142
- #width = null;
4143
- #height = null;
4160
+ #ctx;
4161
+ #width;
4162
+ #height;
4144
4163
  /**
4145
4164
  *
4146
4165
  * @param paramConfig 配置信息
@@ -4150,14 +4169,8 @@ var Utils = (function () {
4150
4169
  if (!(this.#config.canvasNode instanceof HTMLCanvasElement)) {
4151
4170
  throw new Error("Utils.Progress 参数 canvasNode 必须是 HTMLCanvasElement");
4152
4171
  }
4153
- this.init();
4154
- }
4155
- /**
4156
- * 初始化
4157
- */
4158
- init() {
4159
4172
  /* 获取画笔 */
4160
- let ctx = this.#config.canvasNode.getContext("2d");
4173
+ const ctx = this.#config.canvasNode.getContext("2d");
4161
4174
  if (ctx == null) {
4162
4175
  throw new Error("Utils.Progress 获取画笔失败");
4163
4176
  }
@@ -4168,8 +4181,8 @@ var Utils = (function () {
4168
4181
  this.#height = this.#config.canvasNode.height;
4169
4182
  /* 清除锯齿 */
4170
4183
  if (window.devicePixelRatio) {
4171
- this.#config.canvasNode.style.width = this.#width + "px";
4172
- this.#config.canvasNode.style.height = this.#height + "px";
4184
+ this.#config.canvasNode.style.width = `${this.#width}px`;
4185
+ this.#config.canvasNode.style.height = `${this.#height}px`;
4173
4186
  this.#config.canvasNode.height = this.#height * window.devicePixelRatio;
4174
4187
  this.#config.canvasNode.width = this.#width * window.devicePixelRatio;
4175
4188
  this.#ctx.scale(window.devicePixelRatio, window.devicePixelRatio);
@@ -4181,7 +4194,7 @@ var Utils = (function () {
4181
4194
  * 绘制
4182
4195
  */
4183
4196
  draw() {
4184
- let degActive = (this.#config.progress * 360) / 100;
4197
+ const degActive = (this.#config.progress * 360) / 100;
4185
4198
  /* 清除画布 */
4186
4199
  this.#ctx.clearRect(0, 0, this.#width, this.#height);
4187
4200
  /* 开始绘制底圆 */
@@ -4195,11 +4208,11 @@ var Utils = (function () {
4195
4208
  this.#ctx.strokeStyle = this.#config.lineColor;
4196
4209
  this.#ctx.stroke();
4197
4210
  /* 获取百分比 */
4198
- let txt = parseInt(this.#config.progress.toString()) + "%";
4199
- this.#ctx.font = this.#config.fontSize + "px SimHei";
4211
+ const txt = `${parseInt(this.#config.progress.toString())}%`;
4212
+ this.#ctx.font = `${this.#config.fontSize}px SimHei`;
4200
4213
  /* 获取文本宽度 */
4201
- let w = this.#ctx.measureText(txt).width;
4202
- let h = this.#config.fontSize / 2;
4214
+ const w = this.#ctx.measureText(txt).width;
4215
+ const h = this.#config.fontSize / 2;
4203
4216
  this.#ctx.fillStyle = this.#config.textColor;
4204
4217
  this.#ctx.fillText(txt, this.#width / 2 - w / 2, this.#height / 2 + h / 2);
4205
4218
  }
@@ -4223,9 +4236,9 @@ var Utils = (function () {
4223
4236
  * 迭代器
4224
4237
  */
4225
4238
  get entries() {
4226
- let that = this;
4239
+ const that = this;
4227
4240
  return function* () {
4228
- let itemKeys = Object.keys(that.getItems());
4241
+ const itemKeys = Object.keys(that.getItems());
4229
4242
  for (const keyName of itemKeys) {
4230
4243
  yield [keyName, that.get(keyName)];
4231
4244
  }
@@ -4235,9 +4248,8 @@ var Utils = (function () {
4235
4248
  * 是否可遍历
4236
4249
  */
4237
4250
  get [Symbol.iterator]() {
4238
- let that = this;
4239
- return function () {
4240
- return that.entries();
4251
+ return () => {
4252
+ return this.entries();
4241
4253
  };
4242
4254
  }
4243
4255
  /**
@@ -4324,7 +4336,7 @@ var Utils = (function () {
4324
4336
  * @param callbackfn 回调函数
4325
4337
  */
4326
4338
  forEach(callbackfn) {
4327
- this.items.forEach((value, key, self) => {
4339
+ this.items.forEach((value, key) => {
4328
4340
  callbackfn(value, key, this);
4329
4341
  });
4330
4342
  }
@@ -4416,6 +4428,7 @@ var Utils = (function () {
4416
4428
  }
4417
4429
  }
4418
4430
 
4431
+ // @ts-nocheck
4419
4432
  const VueUtils = {
4420
4433
  /** 标签 */
4421
4434
  ReactiveFlags: {
@@ -4454,10 +4467,10 @@ var Utils = (function () {
4454
4467
  deps = [];
4455
4468
  active = true;
4456
4469
  fn;
4457
- // private scheduler;
4470
+ scheduler;
4458
4471
  constructor(fn, scheduler) {
4459
4472
  this.fn = fn;
4460
- // this.scheduler = scheduler;
4473
+ this.scheduler = scheduler;
4461
4474
  }
4462
4475
  run(cb) {
4463
4476
  if (!this.active) {
@@ -4529,7 +4542,7 @@ var Utils = (function () {
4529
4542
  if (VueUtils.isReactive(target)) {
4530
4543
  return target;
4531
4544
  }
4532
- let exisProxy = this.reactMap.get(target);
4545
+ const exisProxy = this.reactMap.get(target);
4533
4546
  if (exisProxy) {
4534
4547
  return exisProxy;
4535
4548
  }
@@ -4542,8 +4555,8 @@ var Utils = (function () {
4542
4555
  return Reflect.get(target, key, receiver);
4543
4556
  },
4544
4557
  set(target, key, value, receiver) {
4545
- let oldValue = target[key];
4546
- let result = Reflect.set(target, key, value, receiver);
4558
+ const oldValue = target[key];
4559
+ const result = Reflect.set(target, key, value, receiver);
4547
4560
  if (oldValue !== value) {
4548
4561
  that.trigger(target, "set", key, oldValue, value);
4549
4562
  }
@@ -4593,11 +4606,12 @@ var Utils = (function () {
4593
4606
  }
4594
4607
  toRefs(object) {
4595
4608
  const result = VueUtils.isArray(object) ? new Array(object.length) : {};
4596
- for (let key in object) {
4609
+ for (const key in object) {
4597
4610
  result[key] = this.toRef(object, key);
4598
4611
  }
4599
4612
  return result;
4600
4613
  }
4614
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
4601
4615
  trigger(target, type, key, oldValue, value) {
4602
4616
  const depsMap = this.targetMap.get(target);
4603
4617
  if (!depsMap)
@@ -4605,8 +4619,9 @@ var Utils = (function () {
4605
4619
  const effects = depsMap.get(key);
4606
4620
  this.triggerEffect(effects, "effects");
4607
4621
  }
4622
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
4608
4623
  triggerEffect(effects, name) {
4609
- effects &&
4624
+ if (effects) {
4610
4625
  effects.forEach((effect) => {
4611
4626
  if (effect.scheduler) {
4612
4627
  effect.scheduler();
@@ -4615,6 +4630,7 @@ var Utils = (function () {
4615
4630
  effect.run();
4616
4631
  }
4617
4632
  });
4633
+ }
4618
4634
  }
4619
4635
  track(target, type, key) {
4620
4636
  if (!this.activeEffect)
@@ -4631,7 +4647,7 @@ var Utils = (function () {
4631
4647
  }
4632
4648
  trackEffect(dep) {
4633
4649
  if (this.activeEffect) {
4634
- let shouldTrack = !dep.has(this.activeEffect);
4650
+ const shouldTrack = !dep.has(this.activeEffect);
4635
4651
  if (shouldTrack) {
4636
4652
  dep.add(this.activeEffect);
4637
4653
  this.activeEffect.deps.push(dep);
@@ -4645,7 +4661,7 @@ var Utils = (function () {
4645
4661
  return value;
4646
4662
  }
4647
4663
  set.add(value);
4648
- for (let key in value) {
4664
+ for (const key in value) {
4649
4665
  this.traversal(value[key], set);
4650
4666
  }
4651
4667
  return value;
@@ -4897,6 +4913,7 @@ var Utils = (function () {
4897
4913
  const setInterval = (...args) => loadOrReturnBroker().setInterval(...args);
4898
4914
  const setTimeout$1 = (...args) => loadOrReturnBroker().setTimeout(...args);
4899
4915
 
4916
+ /* eslint-disable */
4900
4917
  // ==UserScript==
4901
4918
  // @name ModuleRaid.js
4902
4919
  // @namespace http://tampermonkey.net/
@@ -5314,28 +5331,26 @@ var Utils = (function () {
5314
5331
  return $ele?.innerHTML?.trim() === "";
5315
5332
  });
5316
5333
  }
5317
- else if (selector.match(/[^\s]{1}:contains\("(.*)"\)$/i) ||
5318
- selector.match(/[^\s]{1}:contains\('(.*)'\)$/i)) {
5334
+ else if (selector.match(/[^\s]{1}:contains\("(.*)"\)$/i) || selector.match(/[^\s]{1}:contains\('(.*)'\)$/i)) {
5319
5335
  // contains 语法
5320
- let textMatch = selector.match(/:contains\(("|')(.*)("|')\)$/i);
5321
- let text = textMatch[2];
5336
+ const textMatch = selector.match(/:contains\(("|')(.*)("|')\)$/i);
5337
+ const text = textMatch[2];
5322
5338
  selector = selector.replace(/:contains\(("|')(.*)("|')\)$/gi, "");
5323
5339
  return Array.from(parent.querySelectorAll(selector)).filter(($ele) => {
5324
5340
  return ($ele?.textContent || $ele?.innerText)?.includes(text);
5325
5341
  });
5326
5342
  }
5327
- else if (selector.match(/[^\s]{1}:regexp\("(.*)"\)$/i) ||
5328
- selector.match(/[^\s]{1}:regexp\('(.*)'\)$/i)) {
5343
+ else if (selector.match(/[^\s]{1}:regexp\("(.*)"\)$/i) || selector.match(/[^\s]{1}:regexp\('(.*)'\)$/i)) {
5329
5344
  // regexp 语法
5330
- let textMatch = selector.match(/:regexp\(("|')(.*)("|')\)$/i);
5345
+ const textMatch = selector.match(/:regexp\(("|')(.*)("|')\)$/i);
5331
5346
  let pattern = textMatch[2];
5332
- let flagMatch = pattern.match(/("|'),[\s]*("|')([igm]{0,3})$/i);
5347
+ const flagMatch = pattern.match(/("|'),[\s]*("|')([igm]{0,3})$/i);
5333
5348
  let flags = "";
5334
5349
  if (flagMatch) {
5335
5350
  pattern = pattern.replace(/("|'),[\s]*("|')([igm]{0,3})$/gi, "");
5336
5351
  flags = flagMatch[3];
5337
5352
  }
5338
- let regexp = new RegExp(pattern, flags);
5353
+ const regexp = new RegExp(pattern, flags);
5339
5354
  selector = selector.replace(/:regexp\(("|')(.*)("|')\)$/gi, "");
5340
5355
  return Array.from(parent.querySelectorAll(selector)).filter(($ele) => {
5341
5356
  return Boolean(($ele?.textContent || $ele?.innerText)?.match(regexp));
@@ -5377,11 +5392,10 @@ var Utils = (function () {
5377
5392
  selector = selector.replace(/:empty$/gi, "");
5378
5393
  return $el.matches(selector) && $el?.innerHTML?.trim() === "";
5379
5394
  }
5380
- else if (selector.match(/[^\s]{1}:contains\("(.*)"\)$/i) ||
5381
- selector.match(/[^\s]{1}:contains\('(.*)'\)$/i)) {
5395
+ else if (selector.match(/[^\s]{1}:contains\("(.*)"\)$/i) || selector.match(/[^\s]{1}:contains\('(.*)'\)$/i)) {
5382
5396
  // contains 语法
5383
- let textMatch = selector.match(/:contains\(("|')(.*)("|')\)$/i);
5384
- let text = textMatch[2];
5397
+ const textMatch = selector.match(/:contains\(("|')(.*)("|')\)$/i);
5398
+ const text = textMatch[2];
5385
5399
  selector = selector.replace(/:contains\(("|')(.*)("|')\)$/gi, "");
5386
5400
  let content = $el?.textContent || $el?.innerText;
5387
5401
  if (typeof content !== "string") {
@@ -5389,18 +5403,17 @@ var Utils = (function () {
5389
5403
  }
5390
5404
  return $el.matches(selector) && content?.includes(text);
5391
5405
  }
5392
- else if (selector.match(/[^\s]{1}:regexp\("(.*)"\)$/i) ||
5393
- selector.match(/[^\s]{1}:regexp\('(.*)'\)$/i)) {
5406
+ else if (selector.match(/[^\s]{1}:regexp\("(.*)"\)$/i) || selector.match(/[^\s]{1}:regexp\('(.*)'\)$/i)) {
5394
5407
  // regexp 语法
5395
- let textMatch = selector.match(/:regexp\(("|')(.*)("|')\)$/i);
5408
+ const textMatch = selector.match(/:regexp\(("|')(.*)("|')\)$/i);
5396
5409
  let pattern = textMatch[2];
5397
- let flagMatch = pattern.match(/("|'),[\s]*("|')([igm]{0,3})$/i);
5410
+ const flagMatch = pattern.match(/("|'),[\s]*("|')([igm]{0,3})$/i);
5398
5411
  let flags = "";
5399
5412
  if (flagMatch) {
5400
5413
  pattern = pattern.replace(/("|'),[\s]*("|')([igm]{0,3})$/gi, "");
5401
5414
  flags = flagMatch[3];
5402
5415
  }
5403
- let regexp = new RegExp(pattern, flags);
5416
+ const regexp = new RegExp(pattern, flags);
5404
5417
  selector = selector.replace(/:regexp\(("|')(.*)("|')\)$/gi, "");
5405
5418
  let content = $el?.textContent || $el?.innerText;
5406
5419
  if (typeof content !== "string") {
@@ -5418,43 +5431,41 @@ var Utils = (function () {
5418
5431
  if (selector.match(/[^\s]{1}:empty$/gi)) {
5419
5432
  // empty 语法
5420
5433
  selector = selector.replace(/:empty$/gi, "");
5421
- let $closest = $el?.closest(selector);
5434
+ const $closest = $el?.closest(selector);
5422
5435
  if ($closest && $closest?.innerHTML?.trim() === "") {
5423
5436
  return $closest;
5424
5437
  }
5425
5438
  return null;
5426
5439
  }
5427
- else if (selector.match(/[^\s]{1}:contains\("(.*)"\)$/i) ||
5428
- selector.match(/[^\s]{1}:contains\('(.*)'\)$/i)) {
5440
+ else if (selector.match(/[^\s]{1}:contains\("(.*)"\)$/i) || selector.match(/[^\s]{1}:contains\('(.*)'\)$/i)) {
5429
5441
  // contains 语法
5430
- let textMatch = selector.match(/:contains\(("|')(.*)("|')\)$/i);
5431
- let text = textMatch[2];
5442
+ const textMatch = selector.match(/:contains\(("|')(.*)("|')\)$/i);
5443
+ const text = textMatch[2];
5432
5444
  selector = selector.replace(/:contains\(("|')(.*)("|')\)$/gi, "");
5433
- let $closest = $el?.closest(selector);
5445
+ const $closest = $el?.closest(selector);
5434
5446
  if ($closest) {
5435
- let content = $el?.textContent || $el?.innerText;
5447
+ const content = $el?.textContent || $el?.innerText;
5436
5448
  if (typeof content === "string" && content.includes(text)) {
5437
5449
  return $closest;
5438
5450
  }
5439
5451
  }
5440
5452
  return null;
5441
5453
  }
5442
- else if (selector.match(/[^\s]{1}:regexp\("(.*)"\)$/i) ||
5443
- selector.match(/[^\s]{1}:regexp\('(.*)'\)$/i)) {
5454
+ else if (selector.match(/[^\s]{1}:regexp\("(.*)"\)$/i) || selector.match(/[^\s]{1}:regexp\('(.*)'\)$/i)) {
5444
5455
  // regexp 语法
5445
- let textMatch = selector.match(/:regexp\(("|')(.*)("|')\)$/i);
5456
+ const textMatch = selector.match(/:regexp\(("|')(.*)("|')\)$/i);
5446
5457
  let pattern = textMatch[2];
5447
- let flagMatch = pattern.match(/("|'),[\s]*("|')([igm]{0,3})$/i);
5458
+ const flagMatch = pattern.match(/("|'),[\s]*("|')([igm]{0,3})$/i);
5448
5459
  let flags = "";
5449
5460
  if (flagMatch) {
5450
5461
  pattern = pattern.replace(/("|'),[\s]*("|')([igm]{0,3})$/gi, "");
5451
5462
  flags = flagMatch[3];
5452
5463
  }
5453
- let regexp = new RegExp(pattern, flags);
5464
+ const regexp = new RegExp(pattern, flags);
5454
5465
  selector = selector.replace(/:regexp\(("|')(.*)("|')\)$/gi, "");
5455
- let $closest = $el?.closest(selector);
5466
+ const $closest = $el?.closest(selector);
5456
5467
  if ($closest) {
5457
- let content = $el?.textContent || $el?.innerText;
5468
+ const content = $el?.textContent || $el?.innerText;
5458
5469
  if (typeof content === "string" && content.match(regexp)) {
5459
5470
  return $closest;
5460
5471
  }
@@ -5463,12 +5474,12 @@ var Utils = (function () {
5463
5474
  }
5464
5475
  else {
5465
5476
  // 普通语法
5466
- let $closest = $el?.closest(selector);
5477
+ const $closest = $el?.closest(selector);
5467
5478
  return $closest;
5468
5479
  }
5469
5480
  }
5470
5481
  }
5471
- let domUtils = new DOMUtils();
5482
+ const domUtils = new DOMUtils();
5472
5483
 
5473
5484
  class Utils {
5474
5485
  windowApi;
@@ -5481,7 +5492,7 @@ var Utils = (function () {
5481
5492
  if (typeof cssText !== "string") {
5482
5493
  throw new Error("Utils.addStyle 参数cssText 必须为String类型");
5483
5494
  }
5484
- let cssNode = this.windowApi.document.createElement("style");
5495
+ const cssNode = this.windowApi.document.createElement("style");
5485
5496
  cssNode.setAttribute("type", "text/css");
5486
5497
  cssNode.innerHTML = cssText;
5487
5498
  if (this.windowApi.document.head) {
@@ -5503,23 +5514,23 @@ var Utils = (function () {
5503
5514
  return cssNode;
5504
5515
  }
5505
5516
  /**
5506
- * JSON数据从源端替换到目标端中,如果目标端存在该数据则替换,不添加,返回结果为目标端替换完毕的结果
5507
- * @param target 目标数据
5508
- * @param source 源数据
5509
- * @param isAdd 是否可以追加键,默认false
5510
- * @example
5511
- * Utils.assign({"1":1,"2":{"3":3}}, {"2":{"3":4}});
5512
- * >
5513
- * {
5514
- "1": 1,
5515
- "2": {
5516
- "3": 4
5517
- }
5518
- }
5519
- */
5517
+ * JSON数据从源端替换到目标端中,如果目标端存在该数据则替换,不添加,返回结果为目标端替换完毕的结果
5518
+ * @param target 目标数据
5519
+ * @param source 源数据
5520
+ * @param isAdd 是否可以追加键,默认false
5521
+ * @example
5522
+ * Utils.assign({"1":1,"2":{"3":3}}, {"2":{"3":4}});
5523
+ * >
5524
+ * {
5525
+ "1": 1,
5526
+ "2": {
5527
+ "3": 4
5528
+ }
5529
+ }
5530
+ */
5520
5531
  assign = commonUtil.assign.bind(commonUtil);
5521
5532
  async asyncReplaceAll(string, pattern, asyncFn) {
5522
- let UtilsContext = this;
5533
+ const UtilsContext = this;
5523
5534
  if (typeof string !== "string") {
5524
5535
  throw new TypeError("string必须是字符串");
5525
5536
  }
@@ -5591,18 +5602,18 @@ var Utils = (function () {
5591
5602
  canvasElement.dispatchEvent(new MouseEvent("mouseup", eventInit));
5592
5603
  }
5593
5604
  checkUserClickInNode(element) {
5594
- let UtilsContext = this;
5605
+ const UtilsContext = this;
5595
5606
  if (!UtilsContext.isDOM(element)) {
5596
5607
  throw new Error("Utils.checkUserClickInNode 参数 targetNode 必须为 Element|Node 类型");
5597
5608
  }
5598
- let clickEvent = UtilsContext.windowApi.window.event;
5599
- let touchEvent = UtilsContext.windowApi.window.event;
5600
- let $click = clickEvent?.composedPath()?.[0];
5609
+ const clickEvent = UtilsContext.windowApi.window.event;
5610
+ const touchEvent = UtilsContext.windowApi.window.event;
5611
+ const $click = clickEvent?.composedPath()?.[0];
5601
5612
  // 点击的x坐标
5602
- let clickPosX = clickEvent?.clientX != null ? clickEvent.clientX : touchEvent.touches[0].clientX;
5613
+ const clickPosX = clickEvent?.clientX != null ? clickEvent.clientX : touchEvent.touches[0].clientX;
5603
5614
  // 点击的y坐标
5604
- let clickPosY = clickEvent?.clientY != null ? clickEvent.clientY : touchEvent.touches[0].clientY;
5605
- let {
5615
+ const clickPosY = clickEvent?.clientY != null ? clickEvent.clientY : touchEvent.touches[0].clientY;
5616
+ const {
5606
5617
  /* 要检测的元素的相对屏幕的横坐标最左边 */
5607
5618
  left: elementPosXLeft,
5608
5619
  /* 要检测的元素的相对屏幕的横坐标最右边 */
@@ -5630,32 +5641,32 @@ var Utils = (function () {
5630
5641
  * @param formData 需要clone的数据
5631
5642
  */
5632
5643
  cloneFormData(formData, filterFn) {
5633
- let clonedFormData = new FormData();
5634
- for (let [key, value] of formData.entries()) {
5635
- let isFilter = typeof filterFn === "function" ? filterFn(key, value) : false;
5644
+ const clonedFormData = new FormData();
5645
+ formData.forEach((value, key) => {
5646
+ const isFilter = typeof filterFn === "function" ? filterFn(key, value) : false;
5636
5647
  if (typeof isFilter === "boolean" && isFilter) {
5637
- continue;
5648
+ return;
5638
5649
  }
5639
5650
  clonedFormData.append(key, value);
5640
- }
5651
+ });
5641
5652
  return clonedFormData;
5642
5653
  }
5643
5654
  createOverload() {
5644
- let fnMap = new Map();
5655
+ const fnMap = new Map();
5645
5656
  function overload(...args) {
5646
- let key = args.map((it) => typeof it).join(",");
5647
- let fn = fnMap.get(key);
5657
+ const key = args.map((it) => typeof it).join(",");
5658
+ const fn = fnMap.get(key);
5648
5659
  if (!fn) {
5649
5660
  throw new TypeError("没有找到对应的实现");
5650
5661
  }
5651
5662
  return fn.apply(this, args);
5652
5663
  }
5653
5664
  overload.addImpl = function (...args) {
5654
- let fn = args.pop();
5665
+ const fn = args.pop();
5655
5666
  if (typeof fn !== "function") {
5656
5667
  throw new TypeError("最后一个参数必须是函数");
5657
5668
  }
5658
- let key = args.join(",");
5669
+ const key = args.join(",");
5659
5670
  fnMap.set(key, fn);
5660
5671
  };
5661
5672
  return overload;
@@ -5672,7 +5683,7 @@ var Utils = (function () {
5672
5683
  deepClone = commonUtil.deepClone.bind(commonUtil);
5673
5684
  debounce(fn, delay = 0) {
5674
5685
  let timer = null;
5675
- let UtilsContext = this;
5686
+ const UtilsContext = this;
5676
5687
  return function (...args) {
5677
5688
  UtilsContext.workerClearTimeout(timer);
5678
5689
  timer = UtilsContext.workerSetTimeout(function () {
@@ -5681,7 +5692,7 @@ var Utils = (function () {
5681
5692
  };
5682
5693
  }
5683
5694
  deleteParentNode(element, targetSelector) {
5684
- let UtilsContext = this;
5695
+ const UtilsContext = this;
5685
5696
  if (element == null) {
5686
5697
  return;
5687
5698
  }
@@ -5692,7 +5703,7 @@ var Utils = (function () {
5692
5703
  throw new Error("Utils.deleteParentNode 参数 targetSelector 必须为 string 类型");
5693
5704
  }
5694
5705
  let result = false;
5695
- let needRemoveDOM = domUtils.closest(element, targetSelector);
5706
+ const needRemoveDOM = domUtils.closest(element, targetSelector);
5696
5707
  if (needRemoveDOM) {
5697
5708
  needRemoveDOM.remove();
5698
5709
  result = true;
@@ -5722,7 +5733,7 @@ var Utils = (function () {
5722
5733
  eventNameList = [...eventName];
5723
5734
  }
5724
5735
  eventNameList.forEach((_eventName_) => {
5725
- let event = new Event(_eventName_);
5736
+ const event = new Event(_eventName_);
5726
5737
  if (details) {
5727
5738
  Object.assign(event, details);
5728
5739
  }
@@ -5730,7 +5741,7 @@ var Utils = (function () {
5730
5741
  });
5731
5742
  }
5732
5743
  downloadBase64(base64Data, fileName, isIFrame = false) {
5733
- let UtilsContext = this;
5744
+ const UtilsContext = this;
5734
5745
  if (typeof base64Data !== "string") {
5735
5746
  throw new Error("Utils.downloadBase64 参数 base64Data 必须为 string 类型");
5736
5747
  }
@@ -5762,7 +5773,7 @@ var Utils = (function () {
5762
5773
  let strFound;
5763
5774
  if (this.windowApi.globalThis.find) {
5764
5775
  /* CODE FOR BROWSERS THAT SUPPORT window.find */
5765
- let windowFind = this.windowApi.self.find;
5776
+ const windowFind = this.windowApi.self.find;
5766
5777
  strFound = windowFind(str, caseSensitive, true, true, false);
5767
5778
  if (strFound && this.windowApi.self.getSelection && !this.windowApi.self.getSelection().anchorNode) {
5768
5779
  strFound = windowFind(str, caseSensitive, true, true, false);
@@ -5796,19 +5807,19 @@ var Utils = (function () {
5796
5807
  return strFound ? true : false;
5797
5808
  }
5798
5809
  *findElementsWithText(element, text, filter) {
5799
- let that = this;
5810
+ const that = this;
5800
5811
  if (element.outerHTML.includes(text)) {
5801
5812
  if (element.children.length === 0) {
5802
- let filterResult = typeof filter === "function" ? filter(element) : false;
5813
+ const filterResult = typeof filter === "function" ? filter(element) : false;
5803
5814
  if (!filterResult) {
5804
5815
  yield element;
5805
5816
  }
5806
5817
  }
5807
5818
  else {
5808
- let textElement = Array.from(element.childNodes).filter((ele) => ele.nodeType === Node.TEXT_NODE);
5809
- for (let $child of textElement) {
5819
+ const textElement = Array.from(element.childNodes).filter((ele) => ele.nodeType === Node.TEXT_NODE);
5820
+ for (const $child of textElement) {
5810
5821
  if ($child.textContent.includes(text)) {
5811
- let filterResult = typeof filter === "function" ? filter(element) : false;
5822
+ const filterResult = typeof filter === "function" ? filter(element) : false;
5812
5823
  if (!filterResult) {
5813
5824
  yield $child;
5814
5825
  }
@@ -5817,7 +5828,7 @@ var Utils = (function () {
5817
5828
  }
5818
5829
  }
5819
5830
  for (let index = 0; index < element.children.length; index++) {
5820
- let $child = element.children[index];
5831
+ const $child = element.children[index];
5821
5832
  yield* that.findElementsWithText($child, text, filter);
5822
5833
  }
5823
5834
  }
@@ -5831,8 +5842,8 @@ var Utils = (function () {
5831
5842
  findVisibleElement(element) {
5832
5843
  let currentElement = element;
5833
5844
  while (currentElement) {
5834
- let elementRect = currentElement.getBoundingClientRect();
5835
- if (Boolean(elementRect.length)) {
5845
+ const elementRect = currentElement.getBoundingClientRect();
5846
+ if (elementRect.length) {
5836
5847
  return currentElement;
5837
5848
  }
5838
5849
  currentElement = currentElement.parentElement;
@@ -5846,7 +5857,7 @@ var Utils = (function () {
5846
5857
  }
5847
5858
  let result = 0;
5848
5859
  let resultType = "KB";
5849
- let sizeData = {};
5860
+ const sizeData = {};
5850
5861
  sizeData.B = 1;
5851
5862
  sizeData.KB = 1024;
5852
5863
  sizeData.MB = sizeData.KB * sizeData.KB;
@@ -5859,7 +5870,7 @@ var Utils = (function () {
5859
5870
  sizeData.BB = sizeData.YB * sizeData.KB;
5860
5871
  sizeData.NB = sizeData.BB * sizeData.KB;
5861
5872
  sizeData.DB = sizeData.NB * sizeData.KB;
5862
- for (let key in sizeData) {
5873
+ for (const key in sizeData) {
5863
5874
  result = byteSize / sizeData[key];
5864
5875
  resultType = key;
5865
5876
  if (sizeData.KB >= result) {
@@ -5872,7 +5883,7 @@ var Utils = (function () {
5872
5883
  }
5873
5884
  getNodeListValue(...args) {
5874
5885
  let resultArray = [];
5875
- for (let arg of args) {
5886
+ for (const arg of args) {
5876
5887
  let value = arg;
5877
5888
  if (typeof arg === "function") {
5878
5889
  /* 方法 */
@@ -5887,7 +5898,7 @@ var Utils = (function () {
5887
5898
  }
5888
5899
  getNonNullValue(...args) {
5889
5900
  let resultValue = args[args.length - 1];
5890
- let UtilsContext = this;
5901
+ const UtilsContext = this;
5891
5902
  for (const argValue of args) {
5892
5903
  if (UtilsContext.isNotNull(argValue)) {
5893
5904
  resultValue = argValue;
@@ -5897,7 +5908,7 @@ var Utils = (function () {
5897
5908
  return resultValue;
5898
5909
  }
5899
5910
  formatTime(text = new Date(), formatType = "yyyy-MM-dd HH:mm:ss") {
5900
- let time = text == null ? new Date() : new Date(text);
5911
+ const time = text == null ? new Date() : new Date(text);
5901
5912
  /**
5902
5913
  * 校验时间补0
5903
5914
  * @param timeNum
@@ -5905,7 +5916,7 @@ var Utils = (function () {
5905
5916
  */
5906
5917
  function checkTime(timeNum) {
5907
5918
  if (timeNum < 10)
5908
- return "0" + timeNum;
5919
+ return `0${timeNum}`;
5909
5920
  return timeNum;
5910
5921
  }
5911
5922
  /**
@@ -5916,7 +5927,7 @@ var Utils = (function () {
5916
5927
  function timeSystemChange(hourNum) {
5917
5928
  return hourNum > 12 ? hourNum - 12 : hourNum;
5918
5929
  }
5919
- let timeRegexp = {
5930
+ const timeRegexp = {
5920
5931
  yyyy: time.getFullYear(),
5921
5932
  /* 年 */
5922
5933
  MM: checkTime(time.getMonth() + 1),
@@ -5933,7 +5944,7 @@ var Utils = (function () {
5933
5944
  /* 秒 */
5934
5945
  };
5935
5946
  Object.keys(timeRegexp).forEach(function (key) {
5936
- let replaecRegexp = new RegExp(key, "g");
5947
+ const replaecRegexp = new RegExp(key, "g");
5937
5948
  formatType = formatType.replace(replaecRegexp, timeRegexp[key]);
5938
5949
  });
5939
5950
  return formatType;
@@ -5945,12 +5956,12 @@ var Utils = (function () {
5945
5956
  }
5946
5957
  if (text.length === 8) {
5947
5958
  /* 该字符串只有时分秒 */
5948
- let today = new Date();
5949
- text = today.getFullYear() + "-" + (today.getMonth() + 1) + "-" + today.getDate() + " " + text;
5959
+ const today = new Date();
5960
+ text = `${today.getFullYear()}-${today.getMonth() + 1}-${today.getDate()} ${text}`;
5950
5961
  }
5951
5962
  text = text.substring(0, 19);
5952
5963
  text = text.replace(/-/g, "/");
5953
- let timestamp = new Date(text).getTime();
5964
+ const timestamp = new Date(text).getTime();
5954
5965
  return timestamp;
5955
5966
  }
5956
5967
  /**
@@ -6000,16 +6011,16 @@ var Utils = (function () {
6000
6011
  if (timestamp2.toString().length === 10) {
6001
6012
  timestamp2 = timestamp2 * 1000;
6002
6013
  }
6003
- let smallTimeStamp = timestamp1 > timestamp2 ? timestamp2 : timestamp1;
6004
- let bigTimeStamp = timestamp1 > timestamp2 ? timestamp1 : timestamp2;
6005
- let oneSecond = 1000; /* 一秒的毫秒数 */
6006
- let oneMinute = 60 * oneSecond; /* 一分钟的毫秒数 */
6007
- let oneHour = 60 * oneMinute; /* 一小时的毫秒数 */
6008
- let oneDay = 24 * oneHour; /* 一天的毫秒数 */
6009
- let oneMonth = 30 * oneDay; /* 一个月的毫秒数(30天) */
6010
- let oneYear = 12 * oneMonth; /* 一年的毫秒数 */
6011
- let bigDate = new Date(bigTimeStamp);
6012
- let smallDate = new Date(smallTimeStamp);
6014
+ const smallTimeStamp = timestamp1 > timestamp2 ? timestamp2 : timestamp1;
6015
+ const bigTimeStamp = timestamp1 > timestamp2 ? timestamp1 : timestamp2;
6016
+ const oneSecond = 1000; /* 一秒的毫秒数 */
6017
+ const oneMinute = 60 * oneSecond; /* 一分钟的毫秒数 */
6018
+ const oneHour = 60 * oneMinute; /* 一小时的毫秒数 */
6019
+ const oneDay = 24 * oneHour; /* 一天的毫秒数 */
6020
+ const oneMonth = 30 * oneDay; /* 一个月的毫秒数(30天) */
6021
+ const oneYear = 12 * oneMonth; /* 一年的毫秒数 */
6022
+ const bigDate = new Date(bigTimeStamp);
6023
+ const smallDate = new Date(smallTimeStamp);
6013
6024
  let remainderValue = 1;
6014
6025
  if (type === "年") {
6015
6026
  remainderValue = oneYear;
@@ -6031,30 +6042,30 @@ var Utils = (function () {
6031
6042
  }
6032
6043
  let diffValue = Math.round(Math.abs((bigDate - smallDate) / remainderValue));
6033
6044
  if (type === "auto") {
6034
- let timeDifference = bigTimeStamp - smallTimeStamp;
6045
+ const timeDifference = bigTimeStamp - smallTimeStamp;
6035
6046
  diffValue = Math.floor(timeDifference / (24 * 3600 * 1000));
6036
6047
  if (diffValue > 0) {
6037
- diffValue = diffValue + "天";
6048
+ diffValue = `${diffValue}天`;
6038
6049
  }
6039
6050
  else {
6040
6051
  /* 计算出小时数 */
6041
- let leave1 = timeDifference % (24 * 3600 * 1000); /* 计算天数后剩余的毫秒数 */
6042
- let hours = Math.floor(leave1 / (3600 * 1000));
6052
+ const leave1 = timeDifference % (24 * 3600 * 1000); /* 计算天数后剩余的毫秒数 */
6053
+ const hours = Math.floor(leave1 / (3600 * 1000));
6043
6054
  if (hours > 0) {
6044
- diffValue = hours + "小时";
6055
+ diffValue = `${hours}小时`;
6045
6056
  }
6046
6057
  else {
6047
6058
  /* 计算相差分钟数 */
6048
- let leave2 = leave1 % (3600 * 1000); /* 计算小时数后剩余的毫秒数 */
6049
- let minutes = Math.floor(leave2 / (60 * 1000));
6059
+ const leave2 = leave1 % (3600 * 1000); /* 计算小时数后剩余的毫秒数 */
6060
+ const minutes = Math.floor(leave2 / (60 * 1000));
6050
6061
  if (minutes > 0) {
6051
- diffValue = minutes + "分钟";
6062
+ diffValue = `${minutes}分钟`;
6052
6063
  }
6053
6064
  else {
6054
6065
  /* 计算相差秒数 */
6055
- let leave3 = leave2 % (60 * 1000); /* 计算分钟数后剩余的毫秒数 */
6056
- let seconds = Math.round(leave3 / 1000);
6057
- diffValue = seconds + "秒";
6066
+ const leave3 = leave2 % (60 * 1000); /* 计算分钟数后剩余的毫秒数 */
6067
+ const seconds = Math.round(leave3 / 1000);
6068
+ diffValue = `${seconds}秒`;
6058
6069
  }
6059
6070
  }
6060
6071
  }
@@ -6062,14 +6073,14 @@ var Utils = (function () {
6062
6073
  return diffValue;
6063
6074
  }
6064
6075
  getElementSelector(element) {
6065
- let UtilsContext = this;
6076
+ const UtilsContext = this;
6066
6077
  if (!element)
6067
6078
  return void 0;
6068
6079
  if (!element.parentElement)
6069
6080
  return void 0;
6070
6081
  /* 如果元素有id属性,则直接返回id选择器 */
6071
6082
  if (element.id)
6072
- return "#" + element.id;
6083
+ return `#${element.id}`;
6073
6084
  /* 递归地获取父元素的选择器 */
6074
6085
  let selector = UtilsContext.getElementSelector(element.parentElement);
6075
6086
  if (!selector) {
@@ -6077,11 +6088,11 @@ var Utils = (function () {
6077
6088
  }
6078
6089
  /* 如果有多个相同类型的兄弟元素,则需要添加索引 */
6079
6090
  if (element.parentElement.querySelectorAll(element.tagName).length > 1) {
6080
- let index = Array.prototype.indexOf.call(element.parentElement.children, element) + 1;
6081
- selector += " > " + element.tagName.toLowerCase() + ":nth-child(" + index + ")";
6091
+ const index = Array.prototype.indexOf.call(element.parentElement.children, element) + 1;
6092
+ selector += ` > ${element.tagName.toLowerCase()}:nth-child(${index})`;
6082
6093
  }
6083
6094
  else {
6084
- selector += " > " + element.tagName.toLowerCase();
6095
+ selector += ` > ${element.tagName.toLowerCase()}`;
6085
6096
  }
6086
6097
  return selector;
6087
6098
  }
@@ -6092,15 +6103,15 @@ var Utils = (function () {
6092
6103
  * > 2
6093
6104
  */
6094
6105
  getMaxValue(...args) {
6095
- let result = [...args];
6106
+ const result = [...args];
6096
6107
  let newResult = [];
6097
6108
  if (result.length === 0) {
6098
6109
  return void 0;
6099
6110
  }
6100
6111
  if (result.length > 1) {
6101
6112
  if (result.length === 2 && typeof result[0] === "object" && typeof result[1] === "function") {
6102
- let data = result[0];
6103
- let handleDataFunc = result[1];
6113
+ const data = result[0];
6114
+ const handleDataFunc = result[1];
6104
6115
  Object.keys(data).forEach((keyName) => {
6105
6116
  newResult = [...newResult, handleDataFunc(keyName, data[keyName])];
6106
6117
  });
@@ -6148,7 +6159,7 @@ var Utils = (function () {
6148
6159
  */
6149
6160
  function queryMaxZIndex($ele) {
6150
6161
  if (typeof ignoreCallBack === "function") {
6151
- let ignoreResult = ignoreCallBack($ele);
6162
+ const ignoreResult = ignoreCallBack($ele);
6152
6163
  if (typeof ignoreResult === "boolean" && !ignoreResult) {
6153
6164
  return;
6154
6165
  }
@@ -6157,7 +6168,7 @@ var Utils = (function () {
6157
6168
  const nodeStyle = UtilsContext.windowApi.window.getComputedStyle($ele);
6158
6169
  /* 不对position为static和display为none的元素进行获取它们的z-index */
6159
6170
  if (isVisibleNode(nodeStyle)) {
6160
- let nodeZIndex = parseInt(nodeStyle.zIndex);
6171
+ const nodeZIndex = parseInt(nodeStyle.zIndex);
6161
6172
  if (!isNaN(nodeZIndex)) {
6162
6173
  if (nodeZIndex > zIndex) {
6163
6174
  // 赋值到全局
@@ -6173,7 +6184,7 @@ var Utils = (function () {
6173
6184
  }
6174
6185
  }
6175
6186
  }
6176
- target.querySelectorAll("*").forEach(($ele, index) => {
6187
+ target.querySelectorAll("*").forEach(($ele) => {
6177
6188
  queryMaxZIndex($ele);
6178
6189
  });
6179
6190
  zIndex += deviation;
@@ -6190,15 +6201,15 @@ var Utils = (function () {
6190
6201
  return this.getMaxZIndexNodeInfo(deviation, target, ignoreCallBack).zIndex;
6191
6202
  }
6192
6203
  getMinValue(...args) {
6193
- let result = [...args];
6204
+ const result = [...args];
6194
6205
  let newResult = [];
6195
6206
  if (result.length === 0) {
6196
6207
  return void 0;
6197
6208
  }
6198
6209
  if (result.length > 1) {
6199
6210
  if (result.length === 2 && typeof result[0] === "object" && typeof result[1] === "function") {
6200
- let data = result[0];
6201
- let handleDataFunc = result[1];
6211
+ const data = result[0];
6212
+ const handleDataFunc = result[1];
6202
6213
  Object.keys(data).forEach((keyName) => {
6203
6214
  newResult = [...newResult, handleDataFunc(keyName, data[keyName])];
6204
6215
  });
@@ -6228,8 +6239,8 @@ var Utils = (function () {
6228
6239
  * > 'Mozilla/5.0 (Linux; Android 10; MI 13 Build/OPR1.170623.027; wv) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.3490.40 Mobile Safari/537.36'
6229
6240
  **/
6230
6241
  getRandomAndroidUA() {
6231
- let UtilsContext = this;
6232
- let mobileNameList = [
6242
+ const UtilsContext = this;
6243
+ const mobileNameList = [
6233
6244
  "LDN-LX3",
6234
6245
  "RNE-L03",
6235
6246
  "ASUS_X00ID Build/NMF26F",
@@ -6246,14 +6257,14 @@ var Utils = (function () {
6246
6257
  "MI 13 Build/OPR1.170623.027; wv",
6247
6258
  ];
6248
6259
  /* 安卓版本 */
6249
- let androidVersion = UtilsContext.getRandomValue(12, 14);
6260
+ const androidVersion = UtilsContext.getRandomValue(12, 14);
6250
6261
  /* 手机型号 */
6251
- let randomMobile = UtilsContext.getRandomValue(mobileNameList);
6262
+ const randomMobile = UtilsContext.getRandomValue(mobileNameList);
6252
6263
  /* chrome大版本号 */
6253
- let chromeVersion1 = UtilsContext.getRandomValue(120, 132);
6254
- let chromeVersion2 = UtilsContext.getRandomValue(0, 0);
6255
- let chromeVersion3 = UtilsContext.getRandomValue(2272, 6099);
6256
- let chromeVersion4 = UtilsContext.getRandomValue(1, 218);
6264
+ const chromeVersion1 = UtilsContext.getRandomValue(120, 132);
6265
+ const chromeVersion2 = UtilsContext.getRandomValue(0, 0);
6266
+ const chromeVersion3 = UtilsContext.getRandomValue(2272, 6099);
6267
+ const chromeVersion4 = UtilsContext.getRandomValue(1, 218);
6257
6268
  return `Mozilla/5.0 (Linux; Android ${androidVersion}; ${randomMobile}) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/${chromeVersion1}.${chromeVersion2}.${chromeVersion3}.${chromeVersion4} Mobile Safari/537.36`;
6258
6269
  }
6259
6270
  /**
@@ -6275,20 +6286,20 @@ var Utils = (function () {
6275
6286
  * > 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.5068.19 Safari/537.36'
6276
6287
  **/
6277
6288
  getRandomPCUA() {
6278
- let UtilsContext = this;
6289
+ const UtilsContext = this;
6279
6290
  /* chrome大版本号 */
6280
- let chromeVersion1 = UtilsContext.getRandomValue(120, 132);
6281
- let chromeVersion2 = UtilsContext.getRandomValue(0, 0);
6282
- let chromeVersion3 = UtilsContext.getRandomValue(2272, 6099);
6283
- let chromeVersion4 = UtilsContext.getRandomValue(1, 218);
6291
+ const chromeVersion1 = UtilsContext.getRandomValue(120, 132);
6292
+ const chromeVersion2 = UtilsContext.getRandomValue(0, 0);
6293
+ const chromeVersion3 = UtilsContext.getRandomValue(2272, 6099);
6294
+ const chromeVersion4 = UtilsContext.getRandomValue(1, 218);
6284
6295
  return `Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/${chromeVersion1}.${chromeVersion2}.${chromeVersion3}.${chromeVersion4} Safari/537.36`;
6285
6296
  }
6286
6297
  getRandomValue(...args) {
6287
- let result = [...args];
6298
+ const result = [...args];
6288
6299
  if (result.length > 1) {
6289
6300
  if (result.length === 2 && typeof result[0] === "number" && typeof result[1] === "number") {
6290
- let leftNumber = result[0] > result[1] ? result[1] : result[0];
6291
- let rightNumber = result[0] > result[1] ? result[0] : result[1];
6301
+ const leftNumber = result[0] > result[1] ? result[1] : result[0];
6302
+ const rightNumber = result[0] > result[1] ? result[0] : result[1];
6292
6303
  return Math.round(Math.random() * (rightNumber - leftNumber)) + leftNumber;
6293
6304
  }
6294
6305
  else {
@@ -6296,12 +6307,12 @@ var Utils = (function () {
6296
6307
  }
6297
6308
  }
6298
6309
  else if (result.length === 1) {
6299
- let paramData = result[0];
6310
+ const paramData = result[0];
6300
6311
  if (Array.isArray(paramData)) {
6301
6312
  return paramData[Math.floor(Math.random() * paramData.length)];
6302
6313
  }
6303
6314
  else if (typeof paramData === "object" && Object.keys(paramData).length > 0) {
6304
- let paramObjDataKey = Object.keys(paramData)[Math.floor(Math.random() * Object.keys(paramData).length)];
6315
+ const paramObjDataKey = Object.keys(paramData)[Math.floor(Math.random() * Object.keys(paramData).length)];
6305
6316
  return paramData[paramObjDataKey];
6306
6317
  }
6307
6318
  else {
@@ -6317,7 +6328,7 @@ var Utils = (function () {
6317
6328
  * Utils.getReactObj(document.querySelector("input"))?.reactProps?.onChange({target:{value:"123"}});
6318
6329
  */
6319
6330
  getReactObj(element) {
6320
- let result = {};
6331
+ const result = {};
6321
6332
  if (element == null) {
6322
6333
  return result;
6323
6334
  }
@@ -6343,9 +6354,9 @@ var Utils = (function () {
6343
6354
  if (typeof target !== "object") {
6344
6355
  throw new TypeError("target不是一个对象");
6345
6356
  }
6346
- let objectsSymbols = Object.getOwnPropertySymbols(target);
6357
+ const objectsSymbols = Object.getOwnPropertySymbols(target);
6347
6358
  if (typeof keyName === "string") {
6348
- let findSymbol = objectsSymbols.find((key) => {
6359
+ const findSymbol = objectsSymbols.find((key) => {
6349
6360
  return key.toString() === keyName;
6350
6361
  });
6351
6362
  if (findSymbol) {
@@ -6353,7 +6364,7 @@ var Utils = (function () {
6353
6364
  }
6354
6365
  }
6355
6366
  else if (typeof keyName === "symbol") {
6356
- let findSymbol = objectsSymbols.find((key) => {
6367
+ const findSymbol = objectsSymbols.find((key) => {
6357
6368
  return key === keyName;
6358
6369
  });
6359
6370
  if (findSymbol) {
@@ -6361,7 +6372,7 @@ var Utils = (function () {
6361
6372
  }
6362
6373
  }
6363
6374
  else {
6364
- let result = {};
6375
+ const result = {};
6365
6376
  objectsSymbols.forEach((item) => {
6366
6377
  result[item] = target[item];
6367
6378
  });
@@ -6376,12 +6387,12 @@ var Utils = (function () {
6376
6387
  * > 12
6377
6388
  */
6378
6389
  getTextLength(text) {
6379
- let encoder = new TextEncoder();
6380
- let bytes = encoder.encode(text);
6390
+ const encoder = new TextEncoder();
6391
+ const bytes = encoder.encode(text);
6381
6392
  return bytes.length;
6382
6393
  }
6383
6394
  getTextStorageSize(text, addType = true) {
6384
- let UtilsContext = this;
6395
+ const UtilsContext = this;
6385
6396
  return UtilsContext.formatByteToSize(UtilsContext.getTextLength(text), addType);
6386
6397
  }
6387
6398
  getThunderUrl(url) {
@@ -6394,88 +6405,75 @@ var Utils = (function () {
6394
6405
  if (url.trim() === "") {
6395
6406
  throw new TypeError("url不能为空字符串或纯空格");
6396
6407
  }
6397
- return `thunder://${this.windowApi.globalThis.btoa("AA" + url + "ZZ")}`;
6408
+ return `thunder://${this.windowApi.globalThis.btoa(`AA${url}ZZ`)}`;
6398
6409
  }
6399
6410
  /**
6400
- * 对于GM_cookie的兼容写法,当无法使用GM_cookie时可以使用这个,但是并不完全兼容,有些写不出来且限制了httponly是无法访问的
6401
- * @example
6402
- let GM_cookie = new Utils.GM_Cookie();
6403
- GM_cookie.list({name:"xxx_cookie_xxx"},function(cookies,error){
6404
- if (!error) {
6405
- console.log(cookies);
6406
- console.log(cookies.value);
6407
- } else {
6408
- console.error(error);
6409
- }
6410
- });
6411
- GM_cookie.set({name:"xxx_cookie_test_xxx",value:"这是Cookie测试值"},function(error){
6412
- if (error) {
6413
- console.error(error);
6414
- } else {
6415
- console.log('Cookie set successfully.');
6416
- }
6417
- })
6418
- GM_cookie.delete({name:"xxx_cookie_test_xxx"},function(error){
6419
- if (error) {
6420
- console.error(error);
6421
- } else {
6422
- console.log('Cookie set successfully.');
6423
- }
6424
- })
6425
- **/
6411
+ * 对于GM_cookie的兼容写法,当无法使用GM_cookie时可以使用这个,但是并不完全兼容,有些写不出来且限制了httponly是无法访问的
6412
+ * @example
6413
+ let GM_cookie = new Utils.GM_Cookie();
6414
+ GM_cookie.list({name:"xxx_cookie_xxx"},function(cookies,error){
6415
+ if (!error) {
6416
+ console.log(cookies);
6417
+ console.log(cookies.value);
6418
+ } else {
6419
+ console.error(error);
6420
+ }
6421
+ });
6422
+ GM_cookie.set({name:"xxx_cookie_test_xxx",value:"这是Cookie测试值"},function(error){
6423
+ if (error) {
6424
+ console.error(error);
6425
+ } else {
6426
+ console.log('Cookie set successfully.');
6427
+ }
6428
+ })
6429
+ GM_cookie.delete({name:"xxx_cookie_test_xxx"},function(error){
6430
+ if (error) {
6431
+ console.error(error);
6432
+ } else {
6433
+ console.log('Cookie set successfully.');
6434
+ }
6435
+ })
6436
+ **/
6426
6437
  GM_Cookie = UtilsGMCookie;
6427
6438
  /**
6428
- * 注册油猴菜单,要求本地存储的键名不能存在其它键名`GM_Menu_Local_Map`会冲突/覆盖
6429
- * @example
6430
- let GM_Menu = new Utils.GM_Menu({
6431
- data: [
6432
- {
6433
- menu_key: "menu_key",
6434
- text: "测试按钮",
6435
- enable: true,
6436
- accessKey: "a",
6437
- autoClose: false,
6438
- showText(text, enable) {
6439
- return "[" + (enable ? "√" : "×") + "]" + text;
6439
+ * 注册油猴菜单,要求本地存储的键名不能存在其它键名`GM_Menu_Local_Map`会冲突/覆盖
6440
+ * @example
6441
+ let GM_Menu = new Utils.GM_Menu({
6442
+ data: [
6443
+ {
6444
+ menu_key: "menu_key",
6445
+ text: "测试按钮",
6446
+ enable: true,
6447
+ accessKey: "a",
6448
+ autoClose: false,
6449
+ showText(text, enable) {
6450
+ return "[" + (enable ? "√" : "×") + "]" + text;
6451
+ },
6452
+ callback(data) {
6453
+ console.log("点击菜单,值修改为", data.enable);
6454
+ },
6440
6455
  },
6441
- callback(data) {
6442
- console.log("点击菜单,值修改为", data.enable);
6443
- },
6444
- },
6445
- ],
6446
- autoReload: false,
6447
- GM_getValue,
6448
- GM_setValue,
6449
- GM_registerMenuCommand,
6450
- GM_unregisterMenuCommand,
6451
- });
6452
-
6453
-
6454
- // 获取某个菜单项的值
6455
- GM_Menu.get("menu_key");
6456
- > true
6457
-
6458
- // 获取某个菜单项的开启/关闭后显示的文本
6459
- GM_Menu.getShowTextValue("menu_key");
6460
- > √测试按钮
6461
-
6462
- // 添加键为menu_key2的菜单项
6463
- GM_Menu.add({
6464
- key:"menu_key2",
6465
- text: "测试按钮2",
6466
- enable: false,
6467
- showText(text,enable){
6468
- return "[" + (enable ? "√" : "×") + "]" + text;
6469
- },
6470
- callback(data){
6471
- console.log("点击菜单,值修改为",data.enable);
6472
- }
6473
- });
6474
- // 使用数组的方式添加多个菜单,如menu_key3、menu_key4
6475
- GM_Menu.add([
6476
- {
6477
- key:"menu_key3",
6478
- text: "测试按钮3",
6456
+ ],
6457
+ autoReload: false,
6458
+ GM_getValue,
6459
+ GM_setValue,
6460
+ GM_registerMenuCommand,
6461
+ GM_unregisterMenuCommand,
6462
+ });
6463
+
6464
+
6465
+ // 获取某个菜单项的值
6466
+ GM_Menu.get("menu_key");
6467
+ > true
6468
+
6469
+ // 获取某个菜单项的开启/关闭后显示的文本
6470
+ GM_Menu.getShowTextValue("menu_key");
6471
+ > √测试按钮
6472
+
6473
+ // 添加键为menu_key2的菜单项
6474
+ GM_Menu.add({
6475
+ key:"menu_key2",
6476
+ text: "测试按钮2",
6479
6477
  enable: false,
6480
6478
  showText(text,enable){
6481
6479
  return "[" + (enable ? "√" : "×") + "]" + text;
@@ -6483,152 +6481,165 @@ var Utils = (function () {
6483
6481
  callback(data){
6484
6482
  console.log("点击菜单,值修改为",data.enable);
6485
6483
  }
6486
- },
6487
- {
6488
- key:"menu_key4",
6489
- text: "测试按钮4",
6490
- enable: false,
6491
- showText(text,enable){
6492
- return "[" + (enable ? "√" : "×") + "]" + text;
6484
+ });
6485
+ // 使用数组的方式添加多个菜单,如menu_key3、menu_key4
6486
+ GM_Menu.add([
6487
+ {
6488
+ key:"menu_key3",
6489
+ text: "测试按钮3",
6490
+ enable: false,
6491
+ showText(text,enable){
6492
+ return "[" + (enable ? "√" : "×") + "]" + text;
6493
+ },
6494
+ callback(data){
6495
+ console.log("点击菜单,值修改为",data.enable);
6496
+ }
6493
6497
  },
6494
- callback(data){
6495
- console.log("点击菜单,值修改为",data.enable);
6498
+ {
6499
+ key:"menu_key4",
6500
+ text: "测试按钮4",
6501
+ enable: false,
6502
+ showText(text,enable){
6503
+ return "[" + (enable ? "√" : "×") + "]" + text;
6504
+ },
6505
+ callback(data){
6506
+ console.log("点击菜单,值修改为",data.enable);
6507
+ }
6496
6508
  }
6497
- }
6498
- ]);
6499
-
6500
- // 更新键为menu_key的显示文字和点击回调
6501
- GM_Menu.update({
6502
- menu_key:{
6503
- text: "更新后的测试按钮",
6504
- enable: true,
6505
- showText(text,enable){
6506
- return "[" + (enable ? "√" : "×") + "]" + text;
6507
- },
6508
- callback(data){
6509
- console.log("点击菜单更新后的测试按钮,新值修改为",data.enable);
6509
+ ]);
6510
+
6511
+ // 更新键为menu_key的显示文字和点击回调
6512
+ GM_Menu.update({
6513
+ menu_key:{
6514
+ text: "更新后的测试按钮",
6515
+ enable: true,
6516
+ showText(text,enable){
6517
+ return "[" + (enable ? "√" : "×") + "]" + text;
6518
+ },
6519
+ callback(data){
6520
+ console.log("点击菜单更新后的测试按钮,新值修改为",data.enable);
6521
+ }
6510
6522
  }
6511
- }
6512
- });
6513
-
6514
- // 删除键为menu_key的菜单
6515
- GM_Menu.delete("menu_key");
6516
- **/
6523
+ });
6524
+
6525
+ // 删除键为menu_key的菜单
6526
+ GM_Menu.delete("menu_key");
6527
+ **/
6517
6528
  GM_Menu = GMMenu;
6518
6529
  /**
6519
- * 基于Function prototype,能够勾住和释放任何函数
6520
- *
6521
- * .hook
6522
- * + realFunc {string} 用于保存原始函数的函数名称,用于unHook
6523
- * + hookFunc {string} 替换的hook函数
6524
- * + context {object} 目标函数所在对象,用于hook非window对象下的函数,如String.protype.slice,carInstance1
6525
- * + methodName {string} 匿名函数需显式传入目标函数名eg:this.Begin = function(){....};}
6526
- *
6527
- * .unhook
6528
- * + realFunc {string} 用于保存原始函数的函数名称,用于unHook
6529
- * + funcName {string} 被Hook的函数名称
6530
- * + context {object} 目标函数所在对象,用于hook非window对象下的函数,如String.protype.slice,carInstance1
6531
- * @example
6532
- let hook = new Utils.Hooks();
6533
- hook.initEnv();
6534
- function myFunction(){
6535
- console.log("我自己需要执行的函数");
6536
- }
6537
- function testFunction(){
6538
- console.log("正常执行的函数");
6539
- }
6540
- testFunction.hook(testFunction,myFunction,window);
6541
- **/
6530
+ * 基于Function prototype,能够勾住和释放任何函数
6531
+ *
6532
+ * .hook
6533
+ * + realFunc {string} 用于保存原始函数的函数名称,用于unHook
6534
+ * + hookFunc {string} 替换的hook函数
6535
+ * + context {object} 目标函数所在对象,用于hook非window对象下的函数,如String.protype.slice,carInstance1
6536
+ * + methodName {string} 匿名函数需显式传入目标函数名eg:this.Begin = function(){....};}
6537
+ *
6538
+ * .unhook
6539
+ * + realFunc {string} 用于保存原始函数的函数名称,用于unHook
6540
+ * + funcName {string} 被Hook的函数名称
6541
+ * + context {object} 目标函数所在对象,用于hook非window对象下的函数,如String.protype.slice,carInstance1
6542
+ * @example
6543
+ let hook = new Utils.Hooks();
6544
+ hook.initEnv();
6545
+ function myFunction(){
6546
+ console.log("我自己需要执行的函数");
6547
+ }
6548
+ function testFunction(){
6549
+ console.log("正常执行的函数");
6550
+ }
6551
+ testFunction.hook(testFunction,myFunction,window);
6552
+ **/
6542
6553
  Hooks = Hooks;
6543
6554
  /**
6544
- * 为减少代码量和回调,把GM_xmlhttpRequest封装
6545
- * 文档地址: https://www.tampermonkey.net/documentation.php?ext=iikm
6546
- * 其中onloadstart、onprogress、onreadystatechange是回调形式,onabort、ontimeout、onerror可以设置全局回调函数
6547
- * @param _GM_xmlHttpRequest_ 油猴中的GM_xmlhttpRequest
6548
- * @example
6549
- let httpx = new Utils.Httpx(GM_xmlhttpRequest);
6550
- let postResp = await httpx.post({
6551
- url:url,
6552
- data:JSON.stringify({
6553
- test:1
6554
- }),
6555
- timeout: 5000
6556
- });
6557
- console.log(postResp);
6558
- > {
6559
- status: true,
6560
- data: {responseText: "...", response: xxx,...},
6561
- msg: "请求完毕",
6562
- type: "onload",
6563
- }
6564
-
6565
- if(postResp === "onload" && postResp.status){
6566
- // onload
6567
- }else if(postResp === "ontimeout"){
6568
- // ontimeout
6569
- }
6570
- * @example
6571
- // 也可以先配置全局参数
6572
- let httpx = new Utils.Httpx(GM_xmlhttpRequest);
6573
- httpx.config({
6574
- timeout: 5000,
6575
- async: false,
6576
- responseType: "html",
6577
- redirect: "follow",
6578
- })
6579
- // 优先级为 默认details < 全局details < 单独的details
6580
- */
6555
+ * 为减少代码量和回调,把GM_xmlhttpRequest封装
6556
+ * 文档地址: https://www.tampermonkey.net/documentation.php?ext=iikm
6557
+ * 其中onloadstart、onprogress、onreadystatechange是回调形式,onabort、ontimeout、onerror可以设置全局回调函数
6558
+ * @param _GM_xmlHttpRequest_ 油猴中的GM_xmlhttpRequest
6559
+ * @example
6560
+ let httpx = new Utils.Httpx(GM_xmlhttpRequest);
6561
+ let postResp = await httpx.post({
6562
+ url:url,
6563
+ data:JSON.stringify({
6564
+ test:1
6565
+ }),
6566
+ timeout: 5000
6567
+ });
6568
+ console.log(postResp);
6569
+ > {
6570
+ status: true,
6571
+ data: {responseText: "...", response: xxx,...},
6572
+ msg: "请求完毕",
6573
+ type: "onload",
6574
+ }
6575
+
6576
+ if(postResp === "onload" && postResp.status){
6577
+ // onload
6578
+ }else if(postResp === "ontimeout"){
6579
+ // ontimeout
6580
+ }
6581
+ * @example
6582
+ // 也可以先配置全局参数
6583
+ let httpx = new Utils.Httpx(GM_xmlhttpRequest);
6584
+ httpx.config({
6585
+ timeout: 5000,
6586
+ async: false,
6587
+ responseType: "html",
6588
+ redirect: "follow",
6589
+ })
6590
+ // 优先级为 默认details < 全局details < 单独的details
6591
+ */
6581
6592
  Httpx = Httpx;
6582
6593
  /**
6583
- * 浏览器端的indexedDB操作封装
6584
- * @example
6585
- let db = new Utils.indexedDB('web_DB', 'nav_text')
6586
- let data = {name:'管理员', roleId: 1, type: 1};
6587
- db.save('list',data).then((resolve)=>{
6588
- console.log(resolve,'存储成功')
6589
- })
6590
-
6591
- db.get('list').then((resolve)=>{
6592
- console.log(resolve,'查询成功')
6593
- })
6594
-
6595
- db.getPaging('list',20,10).then((resolve)=>{
6596
- console.log(resolve,'查询分页偏移第20,一共10行成功');
6597
- })
6598
-
6599
- db.delete('list').then(resolve=>{
6600
- console.log(resolve,'删除成功---->>>>>>name')
6601
- })
6602
-
6603
- db.deleteAll().then(resolve=>{
6604
- console.log(resolve,'清除数据库---->>>>>>name')
6605
- })
6606
- **/
6594
+ * 浏览器端的indexedDB操作封装
6595
+ * @example
6596
+ let db = new Utils.indexedDB('web_DB', 'nav_text')
6597
+ let data = {name:'管理员', roleId: 1, type: 1};
6598
+ db.save('list',data).then((resolve)=>{
6599
+ console.log(resolve,'存储成功')
6600
+ })
6601
+
6602
+ db.get('list').then((resolve)=>{
6603
+ console.log(resolve,'查询成功')
6604
+ })
6605
+
6606
+ db.getPaging('list',20,10).then((resolve)=>{
6607
+ console.log(resolve,'查询分页偏移第20,一共10行成功');
6608
+ })
6609
+
6610
+ db.delete('list').then(resolve=>{
6611
+ console.log(resolve,'删除成功---->>>>>>name')
6612
+ })
6613
+
6614
+ db.deleteAll().then(resolve=>{
6615
+ console.log(resolve,'清除数据库---->>>>>>name')
6616
+ })
6617
+ **/
6607
6618
  indexedDB = indexedDB;
6608
6619
  isNativeFunc(target) {
6609
6620
  return Boolean(target.toString().match(/^function .*\(\) { \[native code\] }$/));
6610
6621
  }
6611
6622
  isNearBottom(...args) {
6612
6623
  let nearBottomHeight = 50;
6613
- let checkWindow = () => {
6624
+ const checkWindow = () => {
6614
6625
  // 已滚动的距离
6615
- let scrollTop = this.windowApi.window.pageYOffset || this.windowApi.document.documentElement.scrollTop;
6626
+ const scrollTop = this.windowApi.window.pageYOffset || this.windowApi.document.documentElement.scrollTop;
6616
6627
  // 视窗高度
6617
- let viewportHeight = this.windowApi.window.innerHeight || this.windowApi.document.documentElement.clientHeight;
6628
+ const viewportHeight = this.windowApi.window.innerHeight || this.windowApi.document.documentElement.clientHeight;
6618
6629
  // 最大滚动距离
6619
- let maxScrollHeight = this.windowApi.document.documentElement.scrollHeight - nearBottomHeight;
6630
+ const maxScrollHeight = this.windowApi.document.documentElement.scrollHeight - nearBottomHeight;
6620
6631
  return scrollTop + viewportHeight >= maxScrollHeight;
6621
6632
  };
6622
- let checkNode = ($ele) => {
6633
+ const checkNode = ($ele) => {
6623
6634
  // 已滚动的距离
6624
- let scrollTop = $ele.scrollTop;
6635
+ const scrollTop = $ele.scrollTop;
6625
6636
  // 视窗高度
6626
- let viewportHeight = $ele.clientHeight;
6637
+ const viewportHeight = $ele.clientHeight;
6627
6638
  // 最大滚动距离
6628
- let maxScrollHeight = $ele.scrollHeight - viewportHeight - nearBottomHeight;
6639
+ const maxScrollHeight = $ele.scrollHeight - viewportHeight - nearBottomHeight;
6629
6640
  return scrollTop >= maxScrollHeight;
6630
6641
  };
6631
- let firstArg = args[0];
6642
+ const firstArg = args[0];
6632
6643
  if (args.length === 0 || typeof args[0] === "number") {
6633
6644
  // nearBottomHeight
6634
6645
  //
@@ -6643,7 +6654,7 @@ var Utils = (function () {
6643
6654
  return checkNode(args[0]);
6644
6655
  }
6645
6656
  else {
6646
- throw new TypeError("参数1类型错误" + typeof firstArg);
6657
+ throw new TypeError(`参数1类型错误${typeof firstArg}`);
6647
6658
  }
6648
6659
  }
6649
6660
  /**
@@ -6673,7 +6684,7 @@ var Utils = (function () {
6673
6684
  }
6674
6685
  if (typeof target === "object") {
6675
6686
  /* 也有种可能,这个jQuery对象是1.8.3版本的,页面中的jQuery是3.4.1版本的 */
6676
- let jQueryProps = [
6687
+ const jQueryProps = [
6677
6688
  "add",
6678
6689
  "addBack",
6679
6690
  "addClass",
@@ -6857,50 +6868,50 @@ var Utils = (function () {
6857
6868
  */
6858
6869
  isNotNull = commonUtil.isNotNull.bind(commonUtil);
6859
6870
  /**
6860
- * 判断对象或数据是否为空
6861
- * + `String`判空的值,如 ""、"null"、"undefined"、" "
6862
- * + `Number`判空的值,如 0
6863
- * + `Object`判空的值,如 {}、null、undefined
6864
- * + `Array`(存在属性Symbol.iterator)判空的值,如 []
6865
- * + `Boolean`判空的值,如false
6866
- * + `Function`判空的值,如()=>{}、(xxx="")=>{}、function(){}、function(xxx=""){}
6867
- * @returns
6868
- * + true 为空
6869
- * + false 不为空
6870
- * @example
6871
- Utils.isNull({});
6872
- > true
6873
- * @example
6874
- Utils.isNull([]);
6875
- > true
6876
- * @example
6877
- Utils.isNull(" ");
6878
- > true
6879
- * @example
6880
- Utils.isNull(function(){});
6881
- > true
6882
- * @example
6883
- Utils.isNull(()=>{}));
6884
- > true
6885
- * @example
6886
- Utils.isNull("undefined");
6887
- > true
6888
- * @example
6889
- Utils.isNull("null");
6890
- > true
6891
- * @example
6892
- Utils.isNull(" ", false);
6893
- > true
6894
- * @example
6895
- Utils.isNull([1],[]);
6896
- > false
6897
- * @example
6898
- Utils.isNull([],[1]);
6899
- > false
6900
- * @example
6901
- Utils.isNull(false,[123]);
6902
- > false
6903
- **/
6871
+ * 判断对象或数据是否为空
6872
+ * + `String`判空的值,如 ""、"null"、"undefined"、" "
6873
+ * + `Number`判空的值,如 0
6874
+ * + `Object`判空的值,如 {}、null、undefined
6875
+ * + `Array`(存在属性Symbol.iterator)判空的值,如 []
6876
+ * + `Boolean`判空的值,如false
6877
+ * + `Function`判空的值,如()=>{}、(xxx="")=>{}、function(){}、function(xxx=""){}
6878
+ * @returns
6879
+ * + true 为空
6880
+ * + false 不为空
6881
+ * @example
6882
+ Utils.isNull({});
6883
+ > true
6884
+ * @example
6885
+ Utils.isNull([]);
6886
+ > true
6887
+ * @example
6888
+ Utils.isNull(" ");
6889
+ > true
6890
+ * @example
6891
+ Utils.isNull(function(){});
6892
+ > true
6893
+ * @example
6894
+ Utils.isNull(()=>{}));
6895
+ > true
6896
+ * @example
6897
+ Utils.isNull("undefined");
6898
+ > true
6899
+ * @example
6900
+ Utils.isNull("null");
6901
+ > true
6902
+ * @example
6903
+ Utils.isNull(" ", false);
6904
+ > true
6905
+ * @example
6906
+ Utils.isNull([1],[]);
6907
+ > false
6908
+ * @example
6909
+ Utils.isNull([],[1]);
6910
+ > false
6911
+ * @example
6912
+ Utils.isNull(false,[123]);
6913
+ > false
6914
+ **/
6904
6915
  isNull = commonUtil.isNull.bind(commonUtil);
6905
6916
  isThemeDark() {
6906
6917
  return this.windowApi.globalThis.matchMedia("(prefers-color-scheme: dark)").matches;
@@ -6929,15 +6940,15 @@ var Utils = (function () {
6929
6940
  }
6930
6941
  let result = true;
6931
6942
  for (const domItem of needCheckDomList) {
6932
- let domDisplay = this.windowApi.window.getComputedStyle(domItem);
6943
+ const domDisplay = this.windowApi.window.getComputedStyle(domItem);
6933
6944
  if (domDisplay.display === "none") {
6934
6945
  result = false;
6935
6946
  }
6936
6947
  else {
6937
- let domClientRect = domItem.getBoundingClientRect();
6948
+ const domClientRect = domItem.getBoundingClientRect();
6938
6949
  if (inView) {
6939
- let viewportWidth = this.windowApi.window.innerWidth || this.windowApi.document.documentElement.clientWidth;
6940
- let viewportHeight = this.windowApi.window.innerHeight || this.windowApi.document.documentElement.clientHeight;
6950
+ const viewportWidth = this.windowApi.window.innerWidth || this.windowApi.document.documentElement.clientWidth;
6951
+ const viewportHeight = this.windowApi.window.innerHeight || this.windowApi.document.documentElement.clientHeight;
6941
6952
  result = !(domClientRect.right < 0 ||
6942
6953
  domClientRect.left > viewportWidth ||
6943
6954
  domClientRect.bottom < 0 ||
@@ -6956,11 +6967,11 @@ var Utils = (function () {
6956
6967
  }
6957
6968
  isWebView_Via() {
6958
6969
  let result = true;
6959
- let UtilsContext = this;
6970
+ const UtilsContext = this;
6960
6971
  if (typeof this.windowApi.top.window.via === "object") {
6961
6972
  for (const key in Object.values(this.windowApi.top.window.via)) {
6962
6973
  if (Reflect.has(this.windowApi.top.window.via, key)) {
6963
- let objValueFunc = this.windowApi.top.window.via[key];
6974
+ const objValueFunc = this.windowApi.top.window.via[key];
6964
6975
  if (typeof objValueFunc === "function" && UtilsContext.isNativeFunc(objValueFunc)) {
6965
6976
  result = true;
6966
6977
  }
@@ -6978,11 +6989,11 @@ var Utils = (function () {
6978
6989
  }
6979
6990
  isWebView_X() {
6980
6991
  let result = true;
6981
- let UtilsContext = this;
6992
+ const UtilsContext = this;
6982
6993
  if (typeof this.windowApi.top.window.mbrowser === "object") {
6983
6994
  for (const key in Object.values(this.windowApi.top.window.mbrowser)) {
6984
6995
  if (Reflect.has(this.windowApi.top.window.mbrowser, key)) {
6985
- let objValueFunc = this.windowApi.top.window.mbrowser[key];
6996
+ const objValueFunc = this.windowApi.top.window.mbrowser[key];
6986
6997
  if (typeof objValueFunc === "function" && UtilsContext.isNativeFunc(objValueFunc)) {
6987
6998
  result = true;
6988
6999
  }
@@ -7009,46 +7020,46 @@ var Utils = (function () {
7009
7020
  return result;
7010
7021
  }
7011
7022
  /**
7012
- * 自动锁对象,用于循环判断运行的函数,在循环外new后使用,注意,如果函数内部存在异步操作,需要使用await
7013
- * @example
7014
- let lock = new Utils.LockFunction(()=>{console.log(1)}))
7015
- lock.run();
7016
- > 1
7017
- * @example
7018
- let lock = new Utils.LockFunction(()=>{console.log(1)}),true) -- 异步操作
7019
- await lock.run();
7020
- > 1
7021
- **/
7023
+ * 自动锁对象,用于循环判断运行的函数,在循环外new后使用,注意,如果函数内部存在异步操作,需要使用await
7024
+ * @example
7025
+ let lock = new Utils.LockFunction(()=>{console.log(1)}))
7026
+ lock.run();
7027
+ > 1
7028
+ * @example
7029
+ let lock = new Utils.LockFunction(()=>{console.log(1)}),true) -- 异步操作
7030
+ await lock.run();
7031
+ > 1
7032
+ **/
7022
7033
  LockFunction = LockFunction;
7023
7034
  /**
7024
- * 日志对象
7025
- * @param _GM_info_ 油猴管理器的API GM_info,或者是一个对象,如{"script":{name:"Utils.Log"}}
7026
- * @example
7027
- let log = new Utils.Log(GM_info);
7028
- log.info("普通输出");
7029
- > 普通输出
7030
-
7031
- log.success("成功输出");
7032
- > 成功输出
7033
-
7034
- log.error("错误输出");
7035
- > 错误输出
7036
-
7037
- log.warn("警告输出");
7038
- > 警告输出
7039
-
7040
- log.tag = "自定义tag信息";
7041
- log.info("自定义info的颜色","#e0e0e0");
7042
- > 自定义info的颜色
7043
-
7044
- log.config({
7045
- successColor: "#31dc02",
7046
- errorColor: "#e02d2d",
7047
- infoColor: "black",
7048
- })
7049
- log.success("颜色为#31dc02");
7050
- > 颜色为#31dc02
7051
- */
7035
+ * 日志对象
7036
+ * @param _GM_info_ 油猴管理器的API GM_info,或者是一个对象,如{"script":{name:"Utils.Log"}}
7037
+ * @example
7038
+ let log = new Utils.Log(GM_info);
7039
+ log.info("普通输出");
7040
+ > 普通输出
7041
+
7042
+ log.success("成功输出");
7043
+ > 成功输出
7044
+
7045
+ log.error("错误输出");
7046
+ > 错误输出
7047
+
7048
+ log.warn("警告输出");
7049
+ > 警告输出
7050
+
7051
+ log.tag = "自定义tag信息";
7052
+ log.info("自定义info的颜色","#e0e0e0");
7053
+ > 自定义info的颜色
7054
+
7055
+ log.config({
7056
+ successColor: "#31dc02",
7057
+ errorColor: "#e02d2d",
7058
+ infoColor: "black",
7059
+ })
7060
+ log.success("颜色为#31dc02");
7061
+ > 颜色为#31dc02
7062
+ */
7052
7063
  Log = Log;
7053
7064
  mergeArrayToString(data, handleFunc) {
7054
7065
  if (!(data instanceof Array)) {
@@ -7077,8 +7088,8 @@ var Utils = (function () {
7077
7088
  return content;
7078
7089
  }
7079
7090
  mutationObserver(target, observer_config) {
7080
- let UtilsContext = this;
7081
- let default_obverser_config = {
7091
+ const UtilsContext = this;
7092
+ const default_obverser_config = {
7082
7093
  /* 监听到元素有反馈,需执行的函数 */
7083
7094
  callback: () => { },
7084
7095
  config: {
@@ -7120,11 +7131,11 @@ var Utils = (function () {
7120
7131
  immediate: false,
7121
7132
  };
7122
7133
  observer_config = UtilsContext.assign(default_obverser_config, observer_config);
7123
- let windowMutationObserver = this.windowApi.window.MutationObserver ||
7134
+ const windowMutationObserver = this.windowApi.window.MutationObserver ||
7124
7135
  this.windowApi.window.webkitMutationObserver ||
7125
7136
  this.windowApi.window.MozMutationObserver;
7126
7137
  // 观察者对象
7127
- let mutationObserver = new windowMutationObserver(function (mutations, observer) {
7138
+ const mutationObserver = new windowMutationObserver(function (mutations, observer) {
7128
7139
  if (typeof observer_config.callback === "function") {
7129
7140
  observer_config.callback(mutations, observer);
7130
7141
  }
@@ -7137,7 +7148,7 @@ var Utils = (function () {
7137
7148
  }
7138
7149
  else if (UtilsContext.isJQuery(target)) {
7139
7150
  /* 传入的参数是jQuery对象 */
7140
- target.each((index, item) => {
7151
+ target.each((_, item) => {
7141
7152
  mutationObserver.observe(item, observer_config.config);
7142
7153
  });
7143
7154
  }
@@ -7175,7 +7186,7 @@ var Utils = (function () {
7175
7186
  threshold: [0.01, 0.99],
7176
7187
  };
7177
7188
  defaultOptions = this.assign(defaultOptions, options || {});
7178
- let intersectionObserver = new IntersectionObserver((entries, observer) => {
7189
+ const intersectionObserver = new IntersectionObserver((entries, observer) => {
7179
7190
  if (entries[0].isIntersecting) {
7180
7191
  if (typeof callback === "function") {
7181
7192
  callback(entries, observer);
@@ -7205,7 +7216,7 @@ var Utils = (function () {
7205
7216
  return utils;
7206
7217
  }
7207
7218
  noConflictFunc(needReleaseObject, needReleaseName, functionNameList = [], release = true) {
7208
- let UtilsContext = this;
7219
+ const UtilsContext = this;
7209
7220
  if (typeof needReleaseObject !== "object") {
7210
7221
  throw new Error("Utils.noConflictFunc 参数 needReleaseObject 必须为 object 类型");
7211
7222
  }
@@ -7215,7 +7226,7 @@ var Utils = (function () {
7215
7226
  if (!Array.isArray(functionNameList)) {
7216
7227
  throw new Error("Utils.noConflictFunc 参数 functionNameList 必须为 Array 类型");
7217
7228
  }
7218
- let needReleaseKey = "__" + needReleaseName;
7229
+ const needReleaseKey = `__${needReleaseName}`;
7219
7230
  /**
7220
7231
  * 释放所有
7221
7232
  */
@@ -7303,7 +7314,9 @@ var Utils = (function () {
7303
7314
  if (typeof dataUri !== "string") {
7304
7315
  throw new Error("Utils.parseBase64ToBlob 参数 dataUri 必须为 string 类型");
7305
7316
  }
7306
- let dataUriSplit = dataUri.split(","), dataUriMime = dataUriSplit[0].match(/:(.*?);/)[1], dataUriBase64Str = atob(dataUriSplit[1]), dataUriLength = dataUriBase64Str.length, u8arr = new Uint8Array(dataUriLength);
7317
+ const dataUriSplit = dataUri.split(","), dataUriMime = dataUriSplit[0].match(/:(.*?);/)[1], dataUriBase64Str = atob(dataUriSplit[1]);
7318
+ let dataUriLength = dataUriBase64Str.length;
7319
+ const u8arr = new Uint8Array(dataUriLength);
7307
7320
  while (dataUriLength--) {
7308
7321
  u8arr[dataUriLength] = dataUriBase64Str.charCodeAt(dataUriLength);
7309
7322
  }
@@ -7318,7 +7331,9 @@ var Utils = (function () {
7318
7331
  if (typeof fileName !== "string") {
7319
7332
  throw new Error("Utils.parseBase64ToFile 参数 fileName 必须为 string 类型");
7320
7333
  }
7321
- let dataUriSplit = dataUri.split(","), dataUriMime = dataUriSplit[0].match(/:(.*?);/)[1], dataUriBase64Str = atob(dataUriSplit[1]), dataUriLength = dataUriBase64Str.length, u8arr = new Uint8Array(dataUriLength);
7334
+ const dataUriSplit = dataUri.split(","), dataUriMime = dataUriSplit[0].match(/:(.*?);/)[1], dataUriBase64Str = atob(dataUriSplit[1]);
7335
+ let dataUriLength = dataUriBase64Str.length;
7336
+ const u8arr = new Uint8Array(dataUriLength);
7322
7337
  while (dataUriLength--) {
7323
7338
  u8arr[dataUriLength] = dataUriBase64Str.charCodeAt(dataUriLength);
7324
7339
  }
@@ -7352,15 +7367,15 @@ var Utils = (function () {
7352
7367
  }
7353
7368
  parseCDATA(text = "") {
7354
7369
  let result = "";
7355
- let cdataRegexp = /<\!\[CDATA\[([\s\S]*)\]\]>/;
7356
- let cdataMatch = cdataRegexp.exec(text.trim());
7370
+ const cdataRegexp = /<!\[CDATA\[([\s\S]*)\]\]>/;
7371
+ const cdataMatch = cdataRegexp.exec(text.trim());
7357
7372
  if (cdataMatch && cdataMatch.length > 1) {
7358
7373
  result = cdataMatch[cdataMatch.length - 1];
7359
7374
  }
7360
7375
  return result;
7361
7376
  }
7362
7377
  async parseFileToBase64(fileObj) {
7363
- let reader = new FileReader();
7378
+ const reader = new FileReader();
7364
7379
  reader.readAsDataURL(fileObj);
7365
7380
  return new Promise((resolve) => {
7366
7381
  reader.onload = function (event) {
@@ -7369,14 +7384,14 @@ var Utils = (function () {
7369
7384
  });
7370
7385
  }
7371
7386
  parseFromString(text, mimeType = "text/html") {
7372
- let parser = new DOMParser();
7387
+ const parser = new DOMParser();
7373
7388
  return parser.parseFromString(text, mimeType);
7374
7389
  }
7375
7390
  parseStringToRegExpString(text) {
7376
7391
  if (typeof text !== "string") {
7377
7392
  throw new TypeError("string必须是字符串");
7378
7393
  }
7379
- let regString = text.replace(/[.*+\-?^${}()|[\]\\]/g, "\\$&");
7394
+ const regString = text.replace(/[.*+\-?^${}()|[\]\\]/g, "\\$&");
7380
7395
  return regString;
7381
7396
  }
7382
7397
  preventEvent(element, eventNameList = [], capture) {
@@ -7391,6 +7406,7 @@ var Utils = (function () {
7391
7406
  }
7392
7407
  if (arguments.length === 1) {
7393
7408
  /* 直接阻止事件 */
7409
+ // eslint-disable-next-line prefer-rest-params
7394
7410
  return stopEvent(arguments[0]);
7395
7411
  }
7396
7412
  else {
@@ -7406,11 +7422,11 @@ var Utils = (function () {
7406
7422
  }
7407
7423
  }
7408
7424
  /**
7409
- * 在canvas元素节点上绘制进度圆圈
7410
- * @example
7411
- let progress = new Utils.Process({canvasNode:document.querySelector("canvas")});
7412
- progress.draw();
7413
- * **/
7425
+ * 在canvas元素节点上绘制进度圆圈
7426
+ * @example
7427
+ let progress = new Utils.Process({canvasNode:document.querySelector("canvas")});
7428
+ progress.draw();
7429
+ * **/
7414
7430
  Progress = Progress;
7415
7431
  registerTrustClickEvent(isTrustValue = true, filter) {
7416
7432
  function trustEvent(event) {
@@ -7432,8 +7448,8 @@ var Utils = (function () {
7432
7448
  }
7433
7449
  const originalListener = EventTarget.prototype.addEventListener;
7434
7450
  EventTarget.prototype.addEventListener = function (...args) {
7435
- let type = args[0];
7436
- let callback = args[1];
7451
+ const type = args[0];
7452
+ const callback = args[1];
7437
7453
  // let options = args[2];
7438
7454
  if (filter(type)) {
7439
7455
  if (typeof callback === "function") {
@@ -7442,7 +7458,7 @@ var Utils = (function () {
7442
7458
  };
7443
7459
  }
7444
7460
  else if (typeof callback === "object" && "handleEvent" in callback) {
7445
- let oldHandleEvent = callback["handleEvent"];
7461
+ const oldHandleEvent = callback["handleEvent"];
7446
7462
  args[1]["handleEvent"] = function (event) {
7447
7463
  if (event == null) {
7448
7464
  return;
@@ -7453,7 +7469,7 @@ var Utils = (function () {
7453
7469
  event instanceof Proxy;
7454
7470
  oldHandleEvent.call(this, trustEvent(event));
7455
7471
  }
7456
- catch (error) {
7472
+ catch {
7457
7473
  Reflect.set(event, "isTrusted", isTrustValue);
7458
7474
  }
7459
7475
  };
@@ -7476,7 +7492,7 @@ var Utils = (function () {
7476
7492
  return isNegative ? -reversedNum : reversedNum;
7477
7493
  }
7478
7494
  selectElementText(element, childTextNode, startIndex, endIndex) {
7479
- let range = this.windowApi.document.createRange();
7495
+ const range = this.windowApi.document.createRange();
7480
7496
  range.selectNodeContents(element);
7481
7497
  if (childTextNode) {
7482
7498
  if (childTextNode.nodeType !== Node.TEXT_NODE) {
@@ -7487,7 +7503,7 @@ var Utils = (function () {
7487
7503
  range.setEnd(childTextNode, endIndex);
7488
7504
  }
7489
7505
  }
7490
- let selection = this.windowApi.globalThis.getSelection();
7506
+ const selection = this.windowApi.globalThis.getSelection();
7491
7507
  if (selection) {
7492
7508
  selection.removeAllRanges();
7493
7509
  selection.addRange(range);
@@ -7515,7 +7531,7 @@ var Utils = (function () {
7515
7531
  else {
7516
7532
  textType = "text/plain";
7517
7533
  }
7518
- let UtilsContext = this;
7534
+ const UtilsContext = this;
7519
7535
  class UtilsClipboard {
7520
7536
  #resolve;
7521
7537
  #copyData;
@@ -7527,7 +7543,7 @@ var Utils = (function () {
7527
7543
  }
7528
7544
  async init() {
7529
7545
  let copyStatus = false;
7530
- let requestPermissionStatus = await this.requestClipboardPermission();
7546
+ const requestPermissionStatus = await this.requestClipboardPermission();
7531
7547
  console.log(requestPermissionStatus);
7532
7548
  if (this.hasClipboard() && (this.hasClipboardWrite() || this.hasClipboardWriteText())) {
7533
7549
  try {
@@ -7566,7 +7582,7 @@ var Utils = (function () {
7566
7582
  */
7567
7583
  copyTextByTextArea() {
7568
7584
  try {
7569
- let copyElement = UtilsContext.windowApi.document.createElement("textarea");
7585
+ const copyElement = UtilsContext.windowApi.document.createElement("textarea");
7570
7586
  copyElement.value = this.#copyData;
7571
7587
  copyElement.setAttribute("type", "text");
7572
7588
  copyElement.setAttribute("style", "opacity:0;position:absolute;");
@@ -7586,20 +7602,17 @@ var Utils = (function () {
7586
7602
  * 申请剪贴板权限
7587
7603
  */
7588
7604
  requestClipboardPermission() {
7589
- return new Promise((resolve, reject) => {
7605
+ return new Promise((resolve) => {
7590
7606
  if (navigator.permissions && navigator.permissions.query) {
7591
7607
  navigator.permissions
7592
7608
  .query({
7593
7609
  name: "clipboard-write",
7594
7610
  })
7595
- .then((permissionStatus) => {
7611
+ .then(() => {
7596
7612
  resolve(true);
7597
7613
  })
7598
7614
  .catch((error) => {
7599
- console.error([
7600
- "申请剪贴板权限失败,尝试直接写入👉",
7601
- error.message ?? error.name ?? error.stack,
7602
- ]);
7615
+ console.error(["申请剪贴板权限失败,尝试直接写入👉", error.message ?? error.name ?? error.stack]);
7603
7616
  resolve(false);
7604
7617
  });
7605
7618
  }
@@ -7626,7 +7639,7 @@ var Utils = (function () {
7626
7639
  }
7627
7640
  else {
7628
7641
  /* 可复制对象 */
7629
- let textBlob = new Blob([this.#copyData], {
7642
+ const textBlob = new Blob([this.#copyData], {
7630
7643
  type: this.#copyDataType,
7631
7644
  });
7632
7645
  navigator.clipboard
@@ -7658,7 +7671,7 @@ var Utils = (function () {
7658
7671
  });
7659
7672
  }
7660
7673
  setTimeout(callback, delayTime = 0) {
7661
- let UtilsContext = this;
7674
+ const UtilsContext = this;
7662
7675
  if (typeof callback !== "function" && typeof callback !== "string") {
7663
7676
  throw new TypeError("Utils.setTimeout 参数 callback 必须为 function|string 类型");
7664
7677
  }
@@ -7672,7 +7685,7 @@ var Utils = (function () {
7672
7685
  });
7673
7686
  }
7674
7687
  sleep(delayTime = 0) {
7675
- let UtilsContext = this;
7688
+ const UtilsContext = this;
7676
7689
  if (typeof delayTime !== "number") {
7677
7690
  throw new Error("Utils.sleep 参数 delayTime 必须为 number 类型");
7678
7691
  }
@@ -7683,18 +7696,18 @@ var Utils = (function () {
7683
7696
  });
7684
7697
  }
7685
7698
  dragSlider(selector, offsetX = this.windowApi.window.innerWidth) {
7686
- let UtilsContext = this;
7699
+ const UtilsContext = this;
7687
7700
  function initMouseEvent(eventName, offSetX, offSetY) {
7688
- let win = typeof unsafeWindow === "undefined" ? globalThis : unsafeWindow;
7689
- let mouseEvent = UtilsContext.windowApi.document.createEvent("MouseEvents");
7701
+ const win = typeof unsafeWindow === "undefined" ? globalThis : unsafeWindow;
7702
+ const mouseEvent = UtilsContext.windowApi.document.createEvent("MouseEvents");
7690
7703
  mouseEvent.initMouseEvent(eventName, true, true, win, 0, offSetX, offSetY, offSetX, offSetY, false, false, false, false, 0, null);
7691
7704
  return mouseEvent;
7692
7705
  }
7693
- let sliderElement = typeof selector === "string" ? domUtils.selector(selector) : selector;
7706
+ const sliderElement = typeof selector === "string" ? domUtils.selector(selector) : selector;
7694
7707
  if (!(sliderElement instanceof Node) || !(sliderElement instanceof Element)) {
7695
7708
  throw new Error("Utils.dragSlider 参数selector 必须为Node/Element类型");
7696
7709
  }
7697
- let rect = sliderElement.getBoundingClientRect(), x0 = rect.x || rect.left, y0 = rect.y || rect.top, x1 = x0 + offsetX, y1 = y0;
7710
+ const rect = sliderElement.getBoundingClientRect(), x0 = rect.x || rect.left, y0 = rect.y || rect.top, x1 = x0 + offsetX, y1 = y0;
7698
7711
  sliderElement.dispatchEvent(initMouseEvent("mousedown", x0, y0));
7699
7712
  sliderElement.dispatchEvent(initMouseEvent("mousemove", x1, y1));
7700
7713
  sliderElement.dispatchEvent(initMouseEvent("mouseleave", x1, y1));
@@ -7722,34 +7735,34 @@ var Utils = (function () {
7722
7735
  console.error(err);
7723
7736
  }
7724
7737
  }
7725
- exitFullScreen(element = this.windowApi.document.documentElement) {
7726
- if (this.windowApi.document.exitFullscreen) {
7727
- return this.windowApi.document.exitFullscreen();
7738
+ exitFullScreen($el = this.windowApi.document.documentElement) {
7739
+ if ($el.exitFullscreen) {
7740
+ return $el.exitFullscreen();
7728
7741
  }
7729
- else if (this.windowApi.document.msExitFullscreen) {
7730
- return this.windowApi.document.msExitFullscreen();
7742
+ else if ($el.msExitFullscreen) {
7743
+ return $el.msExitFullscreen();
7731
7744
  }
7732
- else if (this.windowApi.document.mozCancelFullScreen) {
7733
- return this.windowApi.document.mozCancelFullScreen();
7745
+ else if ($el.mozCancelFullScreen) {
7746
+ return $el.mozCancelFullScreen();
7734
7747
  }
7735
- else if (this.windowApi.document.webkitCancelFullScreen) {
7736
- return this.windowApi.document.webkitCancelFullScreen();
7748
+ else if ($el.webkitCancelFullScreen) {
7749
+ return $el.webkitCancelFullScreen();
7737
7750
  }
7738
7751
  else {
7739
- return new Promise((resolve, reject) => {
7752
+ return new Promise((_, reject) => {
7740
7753
  reject(new TypeError("该浏览器不支持全屏API"));
7741
7754
  });
7742
7755
  }
7743
7756
  }
7744
7757
  sortListByProperty(data, getPropertyValueFunc, sortByDesc = true) {
7745
- let UtilsContext = this;
7758
+ const UtilsContext = this;
7746
7759
  if (typeof getPropertyValueFunc !== "function" && typeof getPropertyValueFunc !== "string") {
7747
7760
  throw new Error("Utils.sortListByProperty 参数 getPropertyValueFunc 必须为 function|string 类型");
7748
7761
  }
7749
7762
  if (typeof sortByDesc !== "boolean") {
7750
7763
  throw new Error("Utils.sortListByProperty 参数 sortByDesc 必须为 boolean 类型");
7751
7764
  }
7752
- let getObjValue = function (obj) {
7765
+ const getObjValue = function (obj) {
7753
7766
  return typeof getPropertyValueFunc === "string" ? obj[getPropertyValueFunc] : getPropertyValueFunc(obj);
7754
7767
  };
7755
7768
  /**
@@ -7758,9 +7771,9 @@ var Utils = (function () {
7758
7771
  * @param {any} before_obj
7759
7772
  * @returns
7760
7773
  */
7761
- let sortFunc = function (after_obj, before_obj) {
7762
- let beforeValue = getObjValue(before_obj); /* 前 */
7763
- let afterValue = getObjValue(after_obj); /* 后 */
7774
+ const sortFunc = function (after_obj, before_obj) {
7775
+ const beforeValue = getObjValue(before_obj); /* 前 */
7776
+ const afterValue = getObjValue(after_obj); /* 后 */
7764
7777
  if (sortByDesc) {
7765
7778
  if (afterValue > beforeValue) {
7766
7779
  return -1;
@@ -7789,19 +7802,18 @@ var Utils = (function () {
7789
7802
  * @param nodeList 元素列表
7790
7803
  * @param getNodeListFunc 获取元素列表的函数
7791
7804
  */
7792
- let sortNodeFunc = function (nodeList, getNodeListFunc) {
7793
- let nodeListLength = nodeList.length;
7805
+ const sortNodeFunc = function (nodeList, getNodeListFunc) {
7806
+ const nodeListLength = nodeList.length;
7794
7807
  for (let i = 0; i < nodeListLength - 1; i++) {
7795
7808
  for (let j = 0; j < nodeListLength - 1 - i; j++) {
7796
- let beforeNode = nodeList[j];
7797
- let afterNode = nodeList[j + 1];
7798
- let beforeValue = getObjValue(beforeNode); /* 前 */
7799
- let afterValue = getObjValue(afterNode); /* 后 */
7800
- if ((sortByDesc == true && beforeValue < afterValue) ||
7801
- (sortByDesc == false && beforeValue > afterValue)) {
7809
+ const beforeNode = nodeList[j];
7810
+ const afterNode = nodeList[j + 1];
7811
+ const beforeValue = getObjValue(beforeNode); /* 前 */
7812
+ const afterValue = getObjValue(afterNode); /* 后 */
7813
+ if ((sortByDesc == true && beforeValue < afterValue) || (sortByDesc == false && beforeValue > afterValue)) {
7802
7814
  /* 升序/降序 */
7803
7815
  /* 相邻元素两两对比 */
7804
- let temp = beforeNode.nextElementSibling;
7816
+ const temp = beforeNode.nextElementSibling;
7805
7817
  afterNode.after(beforeNode);
7806
7818
  if (temp == null) {
7807
7819
  /* 如果为空,那么是最后一个元素,使用append */
@@ -7859,7 +7871,7 @@ var Utils = (function () {
7859
7871
  return newTargetString;
7860
7872
  }
7861
7873
  startsWith(target, searchString, position = 0) {
7862
- let UtilsContext = this;
7874
+ const UtilsContext = this;
7863
7875
  if (position > target.length) {
7864
7876
  /* 超出目标字符串的长度 */
7865
7877
  return false;
@@ -7903,7 +7915,7 @@ var Utils = (function () {
7903
7915
  */
7904
7916
  toJSON = commonUtil.toJSON.bind(commonUtil);
7905
7917
  toSearchParamsStr(obj, addPrefix) {
7906
- let UtilsContext = this;
7918
+ const UtilsContext = this;
7907
7919
  let searhParamsStr = "";
7908
7920
  if (Array.isArray(obj)) {
7909
7921
  obj.forEach((item) => {
@@ -7911,7 +7923,7 @@ var Utils = (function () {
7911
7923
  searhParamsStr += UtilsContext.toSearchParamsStr(item);
7912
7924
  }
7913
7925
  else {
7914
- searhParamsStr += "&" + UtilsContext.toSearchParamsStr(item);
7926
+ searhParamsStr += `&${UtilsContext.toSearchParamsStr(item)}`;
7915
7927
  }
7916
7928
  });
7917
7929
  }
@@ -7919,7 +7931,7 @@ var Utils = (function () {
7919
7931
  searhParamsStr = new URLSearchParams(Object.entries(obj)).toString();
7920
7932
  }
7921
7933
  if (addPrefix && !searhParamsStr.startsWith("?")) {
7922
- searhParamsStr = "?" + searhParamsStr;
7934
+ searhParamsStr = `?${searhParamsStr}`;
7923
7935
  }
7924
7936
  return searhParamsStr;
7925
7937
  }
@@ -7967,7 +7979,7 @@ var Utils = (function () {
7967
7979
  }
7968
7980
  }
7969
7981
  waitArrayLoopToEnd(data, handleFunc) {
7970
- let UtilsContext = this;
7982
+ const UtilsContext = this;
7971
7983
  if (typeof handleFunc !== "function" && typeof handleFunc !== "string") {
7972
7984
  throw new Error("Utils.waitArrayLoopToEnd 参数 handleDataFunction 必须为 function|string 类型");
7973
7985
  }
@@ -7977,17 +7989,17 @@ var Utils = (function () {
7977
7989
  }
7978
7990
  wait(checkFn, timeout, parent) {
7979
7991
  const UtilsContext = this;
7980
- let __timeout__ = typeof timeout === "number" ? timeout : 0;
7992
+ const __timeout__ = typeof timeout === "number" ? timeout : 0;
7981
7993
  return new Promise((resolve) => {
7982
- let observer = UtilsContext.mutationObserver(parent || UtilsContext.windowApi.document, {
7994
+ const observer = UtilsContext.mutationObserver(parent || UtilsContext.windowApi.document, {
7983
7995
  config: {
7984
7996
  subtree: true,
7985
7997
  childList: true,
7986
7998
  attributes: true,
7987
7999
  },
7988
8000
  immediate: true,
7989
- callback(mutations, __observer__) {
7990
- let result = checkFn();
8001
+ callback(_, __observer__) {
8002
+ const result = checkFn();
7991
8003
  if (result.success) {
7992
8004
  // 取消观察器
7993
8005
  if (typeof __observer__?.disconnect === "function") {
@@ -8011,9 +8023,9 @@ var Utils = (function () {
8011
8023
  waitNode(...args) {
8012
8024
  // 过滤掉undefined
8013
8025
  args = args.filter((arg) => arg !== void 0);
8014
- let UtilsContext = this;
8026
+ const UtilsContext = this;
8015
8027
  // 选择器
8016
- let selector = args[0];
8028
+ const selector = args[0];
8017
8029
  // 父元素(监听的元素)
8018
8030
  let parent = UtilsContext.windowApi.document;
8019
8031
  // 超时时间
@@ -8023,7 +8035,7 @@ var Utils = (function () {
8023
8035
  }
8024
8036
  if (args.length === 1) ;
8025
8037
  else if (args.length === 2) {
8026
- let secondParam = args[1];
8038
+ const secondParam = args[1];
8027
8039
  if (typeof secondParam === "number") {
8028
8040
  // "div",10000
8029
8041
  timeout = secondParam;
@@ -8039,9 +8051,9 @@ var Utils = (function () {
8039
8051
  else if (args.length === 3) {
8040
8052
  // "div",document,10000
8041
8053
  // 第二个参数,parent
8042
- let secondParam = args[1];
8054
+ const secondParam = args[1];
8043
8055
  // 第三个参数,timeout
8044
- let thirdParam = args[2];
8056
+ const thirdParam = args[2];
8045
8057
  if (typeof secondParam === "object" && secondParam instanceof Node) {
8046
8058
  parent = secondParam;
8047
8059
  if (typeof thirdParam === "number") {
@@ -8060,9 +8072,9 @@ var Utils = (function () {
8060
8072
  }
8061
8073
  function getNode() {
8062
8074
  if (Array.isArray(selector)) {
8063
- let result = [];
8075
+ const result = [];
8064
8076
  for (let index = 0; index < selector.length; index++) {
8065
- let node = domUtils.selector(selector[index]);
8077
+ const node = domUtils.selector(selector[index]);
8066
8078
  if (node) {
8067
8079
  result.push(node);
8068
8080
  }
@@ -8079,7 +8091,7 @@ var Utils = (function () {
8079
8091
  }
8080
8092
  }
8081
8093
  return UtilsContext.wait(() => {
8082
- let node = getNode();
8094
+ const node = getNode();
8083
8095
  if (node) {
8084
8096
  return {
8085
8097
  success: true,
@@ -8097,9 +8109,9 @@ var Utils = (function () {
8097
8109
  waitAnyNode(...args) {
8098
8110
  // 过滤掉undefined
8099
8111
  args = args.filter((arg) => arg !== void 0);
8100
- let UtilsContext = this;
8112
+ const UtilsContext = this;
8101
8113
  // 选择器
8102
- let selectorList = args[0];
8114
+ const selectorList = args[0];
8103
8115
  // 父元素(监听的元素)
8104
8116
  let parent = UtilsContext.windowApi.document;
8105
8117
  // 超时时间
@@ -8109,7 +8121,7 @@ var Utils = (function () {
8109
8121
  }
8110
8122
  if (args.length === 1) ;
8111
8123
  else if (args.length === 2) {
8112
- let secondParam = args[1];
8124
+ const secondParam = args[1];
8113
8125
  if (typeof secondParam === "number") {
8114
8126
  // "div",10000
8115
8127
  timeout = secondParam;
@@ -8125,9 +8137,9 @@ var Utils = (function () {
8125
8137
  else if (args.length === 3) {
8126
8138
  // "div",document,10000
8127
8139
  // 第二个参数,parent
8128
- let secondParam = args[1];
8140
+ const secondParam = args[1];
8129
8141
  // 第三个参数,timeout
8130
- let thirdParam = args[2];
8142
+ const thirdParam = args[2];
8131
8143
  if (typeof secondParam === "object" && secondParam instanceof Node) {
8132
8144
  parent = secondParam;
8133
8145
  if (typeof thirdParam === "number") {
@@ -8144,7 +8156,7 @@ var Utils = (function () {
8144
8156
  else {
8145
8157
  throw new TypeError("Utils.waitAnyNode 参数个数错误");
8146
8158
  }
8147
- let promiseList = selectorList.map((selector) => {
8159
+ const promiseList = selectorList.map((selector) => {
8148
8160
  return UtilsContext.waitNode(selector, parent, timeout);
8149
8161
  });
8150
8162
  return Promise.any(promiseList);
@@ -8152,9 +8164,9 @@ var Utils = (function () {
8152
8164
  waitNodeList(...args) {
8153
8165
  // 过滤掉undefined
8154
8166
  args = args.filter((arg) => arg !== void 0);
8155
- let UtilsContext = this;
8167
+ const UtilsContext = this;
8156
8168
  // 选择器数组
8157
- let selector = args[0];
8169
+ const selector = args[0];
8158
8170
  // 父元素(监听的元素)
8159
8171
  let parent = UtilsContext.windowApi.document;
8160
8172
  // 超时时间
@@ -8164,7 +8176,7 @@ var Utils = (function () {
8164
8176
  }
8165
8177
  if (args.length === 1) ;
8166
8178
  else if (args.length === 2) {
8167
- let secondParam = args[1];
8179
+ const secondParam = args[1];
8168
8180
  if (typeof secondParam === "number") {
8169
8181
  // "div",10000
8170
8182
  timeout = secondParam;
@@ -8180,9 +8192,9 @@ var Utils = (function () {
8180
8192
  else if (args.length === 3) {
8181
8193
  // "div",document,10000
8182
8194
  // 第二个参数,parent
8183
- let secondParam = args[1];
8195
+ const secondParam = args[1];
8184
8196
  // 第三个参数,timeout
8185
- let thirdParam = args[2];
8197
+ const thirdParam = args[2];
8186
8198
  if (typeof secondParam === "object" && secondParam instanceof Node) {
8187
8199
  parent = secondParam;
8188
8200
  if (typeof thirdParam === "number") {
@@ -8201,9 +8213,9 @@ var Utils = (function () {
8201
8213
  }
8202
8214
  function getNodeList() {
8203
8215
  if (Array.isArray(selector)) {
8204
- let result = [];
8216
+ const result = [];
8205
8217
  for (let index = 0; index < selector.length; index++) {
8206
- let nodeList = domUtils.selectorAll(selector[index], parent);
8218
+ const nodeList = domUtils.selectorAll(selector[index], parent);
8207
8219
  if (nodeList.length) {
8208
8220
  result.push(nodeList);
8209
8221
  }
@@ -8213,14 +8225,14 @@ var Utils = (function () {
8213
8225
  }
8214
8226
  }
8215
8227
  else {
8216
- let nodeList = domUtils.selectorAll(selector, parent);
8228
+ const nodeList = domUtils.selectorAll(selector, parent);
8217
8229
  if (nodeList.length) {
8218
8230
  return nodeList;
8219
8231
  }
8220
8232
  }
8221
8233
  }
8222
8234
  return UtilsContext.wait(() => {
8223
- let node = getNodeList();
8235
+ const node = getNodeList();
8224
8236
  if (node) {
8225
8237
  return {
8226
8238
  success: true,
@@ -8238,9 +8250,9 @@ var Utils = (function () {
8238
8250
  waitAnyNodeList(...args) {
8239
8251
  // 过滤掉undefined
8240
8252
  args = args.filter((arg) => arg !== void 0);
8241
- let UtilsContext = this;
8253
+ const UtilsContext = this;
8242
8254
  // 选择器数组
8243
- let selectorList = args[0];
8255
+ const selectorList = args[0];
8244
8256
  // 父元素(监听的元素)
8245
8257
  let parent = UtilsContext.windowApi.document;
8246
8258
  // 超时时间
@@ -8250,7 +8262,7 @@ var Utils = (function () {
8250
8262
  }
8251
8263
  if (args.length === 1) ;
8252
8264
  else if (args.length === 2) {
8253
- let secondParam = args[1];
8265
+ const secondParam = args[1];
8254
8266
  if (typeof secondParam === "number") {
8255
8267
  // "div",10000
8256
8268
  timeout = secondParam;
@@ -8266,9 +8278,9 @@ var Utils = (function () {
8266
8278
  else if (args.length === 3) {
8267
8279
  // "div",document,10000
8268
8280
  // 第二个参数,parent
8269
- let secondParam = args[1];
8281
+ const secondParam = args[1];
8270
8282
  // 第三个参数,timeout
8271
- let thirdParam = args[2];
8283
+ const thirdParam = args[2];
8272
8284
  if (typeof secondParam === "object" && secondParam instanceof Node) {
8273
8285
  parent = secondParam;
8274
8286
  if (typeof thirdParam === "number") {
@@ -8285,7 +8297,7 @@ var Utils = (function () {
8285
8297
  else {
8286
8298
  throw new TypeError("Utils.waitAnyNodeList 参数个数错误");
8287
8299
  }
8288
- let promiseList = selectorList.map((selector) => {
8300
+ const promiseList = selectorList.map((selector) => {
8289
8301
  return UtilsContext.waitNodeList(selector, parent, timeout);
8290
8302
  });
8291
8303
  return Promise.any(promiseList);
@@ -8314,13 +8326,13 @@ var Utils = (function () {
8314
8326
  });
8315
8327
  }
8316
8328
  waitPropertyByInterval(checkObj, checkPropertyName, intervalTimer = 250, maxTime = -1) {
8317
- let UtilsContext = this;
8329
+ const UtilsContext = this;
8318
8330
  if (checkObj == null) {
8319
8331
  throw new TypeError("checkObj 不能为空对象 ");
8320
8332
  }
8321
8333
  let isResolve = false;
8322
8334
  return new Promise((resolve, reject) => {
8323
- let interval = UtilsContext.workerSetInterval(() => {
8335
+ const interval = UtilsContext.workerSetInterval(() => {
8324
8336
  let obj = checkObj;
8325
8337
  if (typeof checkObj === "function") {
8326
8338
  obj = checkObj();
@@ -8353,7 +8365,7 @@ var Utils = (function () {
8353
8365
  throw new Error("Utils.waitVueByInterval 参数element 不能为空");
8354
8366
  }
8355
8367
  let flag = false;
8356
- let UtilsContext = this;
8368
+ const UtilsContext = this;
8357
8369
  try {
8358
8370
  await UtilsContext.waitPropertyByInterval(element, function (targetElement) {
8359
8371
  if (targetElement == null) {
@@ -8365,7 +8377,7 @@ var Utils = (function () {
8365
8377
  if (propertyName == null) {
8366
8378
  return true;
8367
8379
  }
8368
- let vueObject = targetElement[vueName];
8380
+ const vueObject = targetElement[vueName];
8369
8381
  if (typeof propertyName === "string") {
8370
8382
  if (propertyName in vueObject) {
8371
8383
  flag = true;
@@ -8381,6 +8393,7 @@ var Utils = (function () {
8381
8393
  }
8382
8394
  return false;
8383
8395
  }, timer, maxTime);
8396
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
8384
8397
  }
8385
8398
  catch (error) {
8386
8399
  return flag;
@@ -8439,7 +8452,7 @@ var Utils = (function () {
8439
8452
  if (target == null) {
8440
8453
  return;
8441
8454
  }
8442
- let handleResult = handler(target);
8455
+ const handleResult = handler(target);
8443
8456
  if (handleResult && typeof handleResult.isFind === "boolean" && handleResult.isFind) {
8444
8457
  return handleResult.data;
8445
8458
  }
@@ -8452,10 +8465,10 @@ var Utils = (function () {
8452
8465
  */
8453
8466
  async asyncQueryProperty(target, handler) {
8454
8467
  if (target == null) {
8455
- // @ts-ignore
8468
+ // @ts-expect-error 空返回
8456
8469
  return;
8457
8470
  }
8458
- let handleResult = await handler(target);
8471
+ const handleResult = await handler(target);
8459
8472
  if (handleResult && typeof handleResult.isFind === "boolean" && handleResult.isFind) {
8460
8473
  return handleResult.data;
8461
8474
  }
@@ -8563,6 +8576,7 @@ var Utils = (function () {
8563
8576
  workerSetTimeout(callback, timeout = 0) {
8564
8577
  try {
8565
8578
  return setTimeout$1(callback, timeout);
8579
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
8566
8580
  }
8567
8581
  catch (error) {
8568
8582
  return this.windowApi.setTimeout(callback, timeout);
@@ -8577,8 +8591,10 @@ var Utils = (function () {
8577
8591
  if (timeId != null) {
8578
8592
  clearTimeout$1(timeId);
8579
8593
  }
8594
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
8580
8595
  }
8581
8596
  catch (error) {
8597
+ // console.log(error);
8582
8598
  }
8583
8599
  finally {
8584
8600
  this.windowApi.clearTimeout(timeId);
@@ -8592,6 +8608,7 @@ var Utils = (function () {
8592
8608
  workerSetInterval(callback, timeout = 0) {
8593
8609
  try {
8594
8610
  return setInterval(callback, timeout);
8611
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
8595
8612
  }
8596
8613
  catch (error) {
8597
8614
  return this.windowApi.setInterval(callback, timeout);
@@ -8606,8 +8623,10 @@ var Utils = (function () {
8606
8623
  if (timeId != null) {
8607
8624
  clearInterval(timeId);
8608
8625
  }
8626
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
8609
8627
  }
8610
8628
  catch (error) {
8629
+ // console.log(error);
8611
8630
  }
8612
8631
  finally {
8613
8632
  this.windowApi.clearInterval(timeId);
@@ -8641,10 +8660,10 @@ var Utils = (function () {
8641
8660
  .query({
8642
8661
  name: "clipboard-read",
8643
8662
  })
8644
- .then((permissionStatus) => {
8663
+ .then(() => {
8645
8664
  readClipboardText();
8646
8665
  })
8647
- .catch((error) => {
8666
+ .catch(() => {
8648
8667
  /* 该权限申请Api可能在该环境下不生效,尝试直接读取剪贴板 */
8649
8668
  readClipboardText();
8650
8669
  });
@@ -8681,7 +8700,7 @@ var Utils = (function () {
8681
8700
  });
8682
8701
  }
8683
8702
  }
8684
- let utils = new Utils();
8703
+ const utils = new Utils();
8685
8704
 
8686
8705
  return utils;
8687
8706