@hitsoft/uretim-yonetimi 1.0.37 → 1.0.39

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.
@@ -24,12 +24,14 @@ export class HitHelper {
24
24
  .join('\n');
25
25
  }
26
26
  static parseQR(barkod) {
27
- // Yeni barkod yapısı: (240)itemcode(10)partiNo(17)sonKullanmaTarihi(3103)miktar(21)elTerminalKodu
27
+ // Barkod yapısı: (240)itemcode(10)partiNo(17)skt(91)tartimMiktari(21)elTerminalKodu(92)isEmriNo(93)tartimSiraNo
28
28
  const marker240 = '(240)';
29
29
  const marker10 = '(10)';
30
30
  const marker17 = '(17)';
31
- const marker3103 = '(3103)';
31
+ const marker91 = '(91)';
32
32
  const marker21 = '(21)';
33
+ const marker92 = '(92)';
34
+ const marker93 = '(93)';
33
35
  // 240 ile başlıyor
34
36
  if (!barkod.startsWith(marker240))
35
37
  return null;
@@ -44,17 +46,36 @@ export class HitHelper {
44
46
  return null;
45
47
  const lotNo = barkod.substring(pos, idx17);
46
48
  pos = idx17 + marker17.length;
47
- const idx3103 = barkod.indexOf(marker3103, pos);
48
- if (idx3103 === -1)
49
+ const idx91 = barkod.indexOf(marker91, pos);
50
+ if (idx91 === -1)
49
51
  return null;
50
- const expDateRaw = barkod.substring(pos, idx3103);
51
- pos = idx3103 + marker3103.length;
52
+ const expDateRaw = barkod.substring(pos, idx91);
53
+ pos = idx91 + marker91.length;
52
54
  const idx21 = barkod.indexOf(marker21, pos);
53
55
  if (idx21 === -1)
54
56
  return null;
55
57
  const weightRaw = barkod.substring(pos, idx21);
56
58
  pos = idx21 + marker21.length;
57
- const terminalCode = barkod.substring(pos);
59
+ // (92) ve (93) opsiyonel — yoksa boş string
60
+ const idx92 = barkod.indexOf(marker92, pos);
61
+ let terminalCode;
62
+ let workOrderNo = '';
63
+ let weighingSequenceNo = '';
64
+ if (idx92 !== -1) {
65
+ terminalCode = barkod.substring(pos, idx92);
66
+ pos = idx92 + marker92.length;
67
+ const idx93 = barkod.indexOf(marker93, pos);
68
+ if (idx93 !== -1) {
69
+ workOrderNo = barkod.substring(pos, idx93);
70
+ weighingSequenceNo = barkod.substring(idx93 + marker93.length);
71
+ }
72
+ else {
73
+ workOrderNo = barkod.substring(pos);
74
+ }
75
+ }
76
+ else {
77
+ terminalCode = barkod.substring(pos);
78
+ }
58
79
  // Tarihi formatla: YYMMDD -> YYYY-MM-DD
59
80
  let expirationDate = '';
60
81
  if (/^\d{6}$/.test(expDateRaw)) {
@@ -63,18 +84,22 @@ export class HitHelper {
63
84
  else {
64
85
  expirationDate = expDateRaw;
65
86
  }
66
- const weight = parseInt(weightRaw, 10);
67
- return new Hammadde(itemCode, lotNo, expirationDate, weight, terminalCode);
87
+ // Ham değer / 1.000.000 = gerçek gram değeri (son 6 hane ondalık)
88
+ const weightRawInt = parseInt(weightRaw, 10);
89
+ const weightGr = isNaN(weightRawInt) ? 0 : weightRawInt / 1000000;
90
+ return new Hammadde(itemCode, lotNo, expirationDate, weightGr, terminalCode, workOrderNo, weighingSequenceNo);
68
91
  }
69
92
  }
70
93
  export class Hammadde {
71
- constructor(chemicalCode, lotNumber, expirationDate, weight, terminalCode) {
94
+ constructor(chemicalCode, lotNumber, expirationDate, weightGr, terminalCode, workOrderNo = '', weighingSequenceNo = '') {
72
95
  this.chemicalCode = chemicalCode;
73
96
  this.lotNumber = lotNumber;
74
97
  this.expirationDate = expirationDate;
75
- this.weightGr = weight; // Gram cinsinden
76
- this.weightKg = weight ? weight / 1000 : 0; // Kilogram cinsine dönüştürülmüş hali
98
+ this.weightGr = weightGr;
99
+ this.weightKg = weightGr ? weightGr / 1000 : 0;
77
100
  this.terminalCode = terminalCode;
101
+ this.workOrderNo = workOrderNo;
102
+ this.weighingSequenceNo = weighingSequenceNo;
78
103
  }
79
104
  }
80
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdXJldGltLXlvbmV0aW1pL3NyYy9saWIvaGl0LXByb3h5L21vZGVscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8sVUFBVTtDQUt0QjtBQUVELE1BQU0sT0FBTyxTQUFTO0lBQ2IsTUFBTSxDQUFDLHVCQUF1QixDQUFDLE1BQWM7UUFDbEQsT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLGFBQWEsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQztJQUN4RCxDQUFDO0lBRU0sTUFBTSxDQUFDLHVDQUF1QyxDQUFDLEtBQWEsRUFBRSxJQUFZO1FBQy9FLE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQyxRQUFRLElBQUksT0FBTyxDQUFDO1FBRTdDLE1BQU0sU0FBUyxHQUFHLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUU7WUFDOUMscUJBQXFCLEVBQUUsQ0FBQztZQUN4QixxQkFBcUIsRUFBRSxDQUFDO1NBQ3pCLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFakIsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDbkQsQ0FBQztJQUVELE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxNQUFnQjtRQUN4QyxJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRTtZQUNuQixPQUFPLEVBQUUsQ0FBQztTQUNYO1FBRUQsSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUN2QixPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNsQjtRQUVELE9BQU8sTUFBTTthQUNWLEdBQUcsQ0FBQyxDQUFDLEdBQVcsRUFBRSxLQUFhLEVBQUUsRUFBRSxDQUFDLEdBQUcsS0FBSyxHQUFHLENB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QUFFRCxNQUFNLE9BQU8sUUFBUTtJQVFuQixZQUFZLFlBQW9CLEVBQUUsU0FBaUIsRUFBRSxjQUFzQixFQUFFLE1BQWMsRUFBRSxZQUFvQjtRQUMvRyxJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQztRQUNqQyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztRQUMzQixJQUFJLENBQUMsY0FBYyxHQUFHLGNBQWMsQ0FBQztRQUNyQyxJQUFJLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxDQUFDLGlCQUFpQjtRQUN6QyxJQUFJLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsc0NBQXNDO1FBQ2xGLElBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO0lBQ25DLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBSZXN1bHRCYXNlPFQ+IHtcclxuICBpdGVtczogVDtcclxuICB0b3RhbENvdW50OiBudW1iZXI7XHJcbiAgaXNTdWNjZXNzZnVsOiBib29sZWFuO1xyXG4gIGVycm9yczogc3RyaW5nW107XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBIaXRIZWxwZXIge1xyXG4gIHB1YmxpYyBzdGF0aWMgZ2V0TWVhc3VyZW1lbnRGb3JtYXR0ZWQoc3VmZml4OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHN1ZmZpeCA/ICcjLCMjMC4wMDAwICcgKyBzdWZmaXggOiAnIywjIzAuMDAwMCc7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc3RhdGljIGdldE1lYXN1cmVtZW50Rm9ybWF0dGVkV2l0aExvY2FsaXphdGlvbih2YWx1ZTogbnVtYmVyLCB1bml0OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgbG9jYWxlID0gbmF2aWdhdG9yLmxhbmd1YWdlIHx8ICd0ci1UUic7XHJcblxyXG4gICAgY29uc3QgZm9ybWF0dGVkID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KGxvY2FsZSwge1xyXG4gICAgICBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDQsXHJcbiAgICAgIG1heGltdW1GcmFjdGlvbkRpZ2l0czogNCxcclxuICAgIH0pLmZvcm1hdCh2YWx1ZSk7XHJcblxyXG4gICAgcmV0dXJuIHVuaXQgPyBgJHtmb3JtYXR0ZWR9ICR7dW5pdH1gIDogZm9ybWF0dGVkO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGdldEZvcm1hdHRlZEVycm9ycyhlcnJvcnM6IHN0cmluZ1tdKTogc3RyaW5nIHtcclxuICAgIGlmICghZXJyb3JzPy5sZW5ndGgpIHtcclxuICAgICAgcmV0dXJuICcnO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChlcnJvcnMubGVuZ3RoID09PSAxKSB7XHJcbiAgICAgIHJldHVybiBlcnJvcnNbMF07XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGVycm9yc1xyXG4gICAgICAubWFwKChlcnI6IHN0cmluZywgaW5kZXg6IG51bWJlcikgPT4gYCR7aW5kZXggKyAxfS4gJHtlcnJ9YClcclxuICAgICAgLmpvaW4oJ1xcbicpO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIHBhcnNlUVIoYmFya29kOiBzdHJpbmcpOiBIYW1tYWRkZSB8IG51bGwge1xyXG4gICAgLy8gWWVuaSBiYXJrb2QgeWFwxLFzxLE6ICgyNDApaXRlbWNvZGUoMTApcGFydGlObygxNylzb25LdWxsYW5tYVRhcmloaSgzMTAzKW1pa3RhcigyMSllbFRlcm1pbmFsS29kdVxyXG4gICAgY29uc3QgbWFya2VyMjQwID0gJygyNDApJztcclxuICAgIGNvbnN0IG1hcmtlcjEwID0gJygxMCknO1xyXG4gICAgY29uc3QgbWFya2VyMTcgPSAnKDE3KSc7XHJcbiAgICBjb25zdCBtYXJrZXIzMTAzID0gJygzMTAzKSc7XHJcbiAgICBjb25zdCBtYXJrZXIyMSA9ICcoMjEpJztcclxuXHJcbiAgICAvLyAyNDAgaWxlIGJhxZ9sxLF5b3JcclxuICAgIGlmICghYmFya29kLnN0YXJ0c1dpdGgobWFya2VyMjQwKSkgcmV0dXJuIG51bGw7XHJcbiAgICBsZXQgcG9zID0gbWFya2VyMjQwLmxlbmd0aDtcclxuXHJcbiAgICBjb25zdCBpZHgxMCA9IGJhcmtvZC5pbmRleE9mKG1hcmtlcjEwLCBwb3MpO1xyXG4gICAgaWYgKGlkeDEwID09PSAtMSkgcmV0dXJuIG51bGw7XHJcbiAgICBjb25zdCBpdGVtQ29kZSA9IGJhcmtvZC5zdWJzdHJpbmcocG9zLCBpZHgxMCk7XHJcbiAgICBwb3MgPSBpZHgxMCArIG1hcmtlcjEwLmxlbmd0aDtcclxuXHJcbiAgICBjb25zdCBpZHgxNyA9IGJhcmtvZC5pbmRleE9mKG1hcmtlcjE3LCBwb3MpO1xyXG4gICAgaWYgKGlkeDE3ID09PSAtMSkgcmV0dXJuIG51bGw7XHJcbiAgICBjb25zdCBsb3RObyA9IGJhcmtvZC5zdWJzdHJpbmcocG9zLCBpZHgxNyk7XHJcbiAgICBwb3MgPSBpZHgxNyArIG1hcmtlcjE3Lmxlbmd0aDtcclxuXHJcbiAgICBjb25zdCBpZHgzMTAzID0gYmFya29kLmluZGV4T2YobWFya2VyMzEwMywgcG9zKTtcclxuICAgIGlmIChpZHgzMTAzID09PSAtMSkgcmV0dXJuIG51bGw7XHJcbiAgICBjb25zdCBleHBEYXRlUmF3ID0gYmFya29kLnN1YnN0cmluZyhwb3MsIGlkeDMxMDMpO1xyXG4gICAgcG9zID0gaWR4MzEwMyArIG1hcmtlcjMxMDMubGVuZ3RoO1xyXG5cclxuICAgIGNvbnN0IGlkeDIxID0gYmFya29kLmluZGV4T2YobWFya2VyMjEsIHBvcyk7XHJcbiAgICBpZiAoaWR4MjEgPT09IC0xKSByZXR1cm4gbnVsbDtcclxuICAgIGNvbnN0IHdlaWdodFJhdyA9IGJhcmtvZC5zdWJzdHJpbmcocG9zLCBpZHgyMSk7XHJcbiAgICBwb3MgPSBpZHgyMSArIG1hcmtlcjIxLmxlbmd0aDtcclxuXHJcbiAgICBjb25zdCB0ZXJtaW5hbENvZGUgPSBiYXJrb2Quc3Vic3RyaW5nKHBvcyk7XHJcblxyXG4gICAgLy8gVGFyaWhpIGZvcm1hdGxhOiBZWU1NREQgLT4gWVlZWS1NTS1ERFxyXG4gICAgbGV0IGV4cGlyYXRpb25EYXRlID0gJyc7XHJcbiAgICBpZiAoL15cXGR7Nn0kLy50ZXN0KGV4cERhdGVSYXcpKSB7XHJcbiAgICAgIGV4cGlyYXRpb25EYXRlID0gYDIwJHtleHBEYXRlUmF3LnNsaWNlKDAsIDIpfS0ke2V4cERhdGVSYXcuc2xpY2UoMiwgNCl9LSR7ZXhwRGF0ZVJhdy5zbGljZSg0LCA2KX1gO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgZXhwaXJhdGlvbkRhdGUgPSBleHBEYXRlUmF3O1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHdlaWdodCA9IHBhcnNlSW50KHdlaWdodFJhdywgMTApO1xyXG4gICAgcmV0dXJuIG5ldyBIYW1tYWRkZShpdGVtQ29kZSwgbG90Tm8sIGV4cGlyYXRpb25EYXRlLCB3ZWlnaHQsIHRlcm1pbmFsQ29kZSk7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgSGFtbWFkZGUge1xyXG4gIGNoZW1pY2FsQ29kZTogc3RyaW5nO1xyXG4gIGxvdE51bWJlcjogc3RyaW5nO1xyXG4gIGV4cGlyYXRpb25EYXRlOiBzdHJpbmc7XHJcbiAgd2VpZ2h0R3I6IG51bWJlcjtcclxuICB3ZWlnaHRLZzogbnVtYmVyO1xyXG4gIHRlcm1pbmFsQ29kZTogc3RyaW5nO1xyXG5cclxuICBjb25zdHJ1Y3RvcihjaGVtaWNhbENvZGU6IHN0cmluZywgbG90TnVtYmVyOiBzdHJpbmcsIGV4cGlyYXRpb25EYXRlOiBzdHJpbmcsIHdlaWdodDogbnVtYmVyLCB0ZXJtaW5hbENvZGU6IHN0cmluZykge1xyXG4gICAgdGhpcy5jaGVtaWNhbENvZGUgPSBjaGVtaWNhbENvZGU7XHJcbiAgICB0aGlzLmxvdE51bWJlciA9IGxvdE51bWJlcjtcclxuICAgIHRoaXMuZXhwaXJhdGlvbkRhdGUgPSBleHBpcmF0aW9uRGF0ZTtcclxuICAgIHRoaXMud2VpZ2h0R3IgPSB3ZWlnaHQ7IC8vIEdyYW0gY2luc2luZGVuXHJcbiAgICB0aGlzLndlaWdodEtnID0gd2VpZ2h0ID8gd2VpZ2h0IC8gMTAwMCA6IDA7IC8vIEtpbG9ncmFtIGNpbnNpbmUgZMO2bsO8xZ90w7xyw7xsbcO8xZ8gaGFsaVxyXG4gICAgdGhpcy50ZXJtaW5hbENvZGUgPSB0ZXJtaW5hbENvZGU7XHJcbiAgfVxyXG59XHJcbiJdfQ==
105
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdXJldGltLXlvbmV0aW1pL3NyYy9saWIvaGl0LXByb3h5L21vZGVscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8sVUFBVTtDQUt0QjtBQUVELE1BQU0sT0FBTyxTQUFTO0lBQ2IsTUFBTSxDQUFDLHVCQUF1QixDQUFDLE1BQWM7UUFDbEQsT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLGFBQWEsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQztJQUN4RCxDQUFDO0lBRU0sTUFBTSxDQUFDLHVDQUF1QyxDQUFDLEtBQWEsRUFBRSxJQUFZO1FBQy9FLE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQyxRQUFRLElBQUksT0FBTyxDQUFDO1FBRTdDLE1BQU0sU0FBUyxHQUFHLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUU7WUFDOUMscUJBQXFCLEVBQUUsQ0FBQztZQUN4QixxQkFBcUIsRUFBRSxDQUFDO1NBQ3pCLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFakIsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDbkQsQ0FBQztJQUVELE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxNQUFnQjtRQUN4QyxJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRTtZQUNuQixPQUFPLEVBQUUsQ0FBQztTQUNYO1FBRUQsSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUN2QixPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNsQjtRQUVELE9BQU8sTUFBTTthQUNWLEdBQUcsQ0FBQyxDQUFDLEdBQVcsRUFBRSxLQUFhLEVBQUUsRUFBRSxDQUFDLEdBQUcsS0FBSyxHQUFHLENB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QixFQUNwQixjQUFzQixFQUFFLEVBQ3hCLHFCQUE2QixFQUFFO1FBRS9CLElBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1FBQzNCLElBQUksQ0FBQyxjQUFjLEdBQUcsY0FBYyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDL0MsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7UUFDakMsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7UUFDL0IsSUFBSSxDQUFDLGtCQUFrQixHQUFHLGtCQUFrQixDQUFDO0lBQy9DLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBSZXN1bHRCYXNlPFQ+IHtcclxuICBpdGVtczogVDtcclxuICB0b3RhbENvdW50OiBudW1iZXI7XHJcbiAgaXNTdWNjZXNzZnVsOiBib29sZWFuO1xyXG4gIGVycm9yczogc3RyaW5nW107XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBIaXRIZWxwZXIge1xyXG4gIHB1YmxpYyBzdGF0aWMgZ2V0TWVhc3VyZW1lbnRGb3JtYXR0ZWQoc3VmZml4OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHN1ZmZpeCA/ICcjLCMjMC4wMDAwICcgKyBzdWZmaXggOiAnIywjIzAuMDAwMCc7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc3RhdGljIGdldE1lYXN1cmVtZW50Rm9ybWF0dGVkV2l0aExvY2FsaXphdGlvbih2YWx1ZTogbnVtYmVyLCB1bml0OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgbG9jYWxlID0gbmF2aWdhdG9yLmxhbmd1YWdlIHx8ICd0ci1UUic7XHJcblxyXG4gICAgY29uc3QgZm9ybWF0dGVkID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KGxvY2FsZSwge1xyXG4gICAgICBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDQsXHJcbiAgICAgIG1heGltdW1GcmFjdGlvbkRpZ2l0czogNCxcclxuICAgIH0pLmZvcm1hdCh2YWx1ZSk7XHJcblxyXG4gICAgcmV0dXJuIHVuaXQgPyBgJHtmb3JtYXR0ZWR9ICR7dW5pdH1gIDogZm9ybWF0dGVkO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGdldEZvcm1hdHRlZEVycm9ycyhlcnJvcnM6IHN0cmluZ1tdKTogc3RyaW5nIHtcclxuICAgIGlmICghZXJyb3JzPy5sZW5ndGgpIHtcclxuICAgICAgcmV0dXJuICcnO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChlcnJvcnMubGVuZ3RoID09PSAxKSB7XHJcbiAgICAgIHJldHVybiBlcnJvcnNbMF07XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGVycm9yc1xyXG4gICAgICAubWFwKChlcnI6IHN0cmluZywgaW5kZXg6IG51bWJlcikgPT4gYCR7aW5kZXggKyAxfS4gJHtlcnJ9YClcclxuICAgICAgLmpvaW4oJ1xcbicpO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIHBhcnNlUVIoYmFya29kOiBzdHJpbmcpOiBIYW1tYWRkZSB8IG51bGwge1xyXG4gICAgLy8gQmFya29kIHlhcMSxc8SxOiAoMjQwKWl0ZW1jb2RlKDEwKXBhcnRpTm8oMTcpc2t0KDkxKXRhcnRpbU1pa3RhcmkoMjEpZWxUZXJtaW5hbEtvZHUoOTIpaXNFbXJpTm8oOTMpdGFydGltU2lyYU5vXHJcbiAgICBjb25zdCBtYXJrZXIyNDAgPSAnKDI0MCknO1xyXG4gICAgY29uc3QgbWFya2VyMTAgPSAnKDEwKSc7XHJcbiAgICBjb25zdCBtYXJrZXIxNyA9ICcoMTcpJztcclxuICAgIGNvbnN0IG1hcmtlcjkxID0gJyg5MSknO1xyXG4gICAgY29uc3QgbWFya2VyMjEgPSAnKDIxKSc7XHJcbiAgICBjb25zdCBtYXJrZXI5MiA9ICcoOTIpJztcclxuICAgIGNvbnN0IG1hcmtlcjkzID0gJyg5MyknO1xyXG5cclxuICAgIC8vIDI0MCBpbGUgYmHFn2zEsXlvclxyXG4gICAgaWYgKCFiYXJrb2Quc3RhcnRzV2l0aChtYXJrZXIyNDApKSByZXR1cm4gbnVsbDtcclxuICAgIGxldCBwb3MgPSBtYXJrZXIyNDAubGVuZ3RoO1xyXG5cclxuICAgIGNvbnN0IGlkeDEwID0gYmFya29kLmluZGV4T2YobWFya2VyMTAsIHBvcyk7XHJcbiAgICBpZiAoaWR4MTAgPT09IC0xKSByZXR1cm4gbnVsbDtcclxuICAgIGNvbnN0IGl0ZW1Db2RlID0gYmFya29kLnN1YnN0cmluZyhwb3MsIGlkeDEwKTtcclxuICAgIHBvcyA9IGlkeDEwICsgbWFya2VyMTAubGVuZ3RoO1xyXG5cclxuICAgIGNvbnN0IGlkeDE3ID0gYmFya29kLmluZGV4T2YobWFya2VyMTcsIHBvcyk7XHJcbiAgICBpZiAoaWR4MTcgPT09IC0xKSByZXR1cm4gbnVsbDtcclxuICAgIGNvbnN0IGxvdE5vID0gYmFya29kLnN1YnN0cmluZyhwb3MsIGlkeDE3KTtcclxuICAgIHBvcyA9IGlkeDE3ICsgbWFya2VyMTcubGVuZ3RoO1xyXG5cclxuICAgIGNvbnN0IGlkeDkxID0gYmFya29kLmluZGV4T2YobWFya2VyOTEsIHBvcyk7XHJcbiAgICBpZiAoaWR4OTEgPT09IC0xKSByZXR1cm4gbnVsbDtcclxuICAgIGNvbnN0IGV4cERhdGVSYXcgPSBiYXJrb2Quc3Vic3RyaW5nKHBvcywgaWR4OTEpO1xyXG4gICAgcG9zID0gaWR4OTEgKyBtYXJrZXI5MS5sZW5ndGg7XHJcblxyXG4gICAgY29uc3QgaWR4MjEgPSBiYXJrb2QuaW5kZXhPZihtYXJrZXIyMSwgcG9zKTtcclxuICAgIGlmIChpZHgyMSA9PT0gLTEpIHJldHVybiBudWxsO1xyXG4gICAgY29uc3Qgd2VpZ2h0UmF3ID0gYmFya29kLnN1YnN0cmluZyhwb3MsIGlkeDIxKTtcclxuICAgIHBvcyA9IGlkeDIxICsgbWFya2VyMjEubGVuZ3RoO1xyXG5cclxuICAgIC8vICg5MikgdmUgKDkzKSBvcHNpeW9uZWwg4oCUIHlva3NhIGJvxZ8gc3RyaW5nXHJcbiAgICBjb25zdCBpZHg5MiA9IGJhcmtvZC5pbmRleE9mKG1hcmtlcjkyLCBwb3MpO1xyXG4gICAgbGV0IHRlcm1pbmFsQ29kZTogc3RyaW5nO1xyXG4gICAgbGV0IHdvcmtPcmRlck5vID0gJyc7XHJcbiAgICBsZXQgd2VpZ2hpbmdTZXF1ZW5jZU5vID0gJyc7XHJcblxyXG4gICAgaWYgKGlkeDkyICE9PSAtMSkge1xyXG4gICAgICB0ZXJtaW5hbENvZGUgPSBiYXJrb2Quc3Vic3RyaW5nKHBvcywgaWR4OTIpO1xyXG4gICAgICBwb3MgPSBpZHg5MiArIG1hcmtlcjkyLmxlbmd0aDtcclxuXHJcbiAgICAgIGNvbnN0IGlkeDkzID0gYmFya29kLmluZGV4T2YobWFya2VyOTMsIHBvcyk7XHJcbiAgICAgIGlmIChpZHg5MyAhPT0gLTEpIHtcclxuICAgICAgICB3b3JrT3JkZXJObyA9IGJhcmtvZC5zdWJzdHJpbmcocG9zLCBpZHg5Myk7XHJcbiAgICAgICAgd2VpZ2hpbmdTZXF1ZW5jZU5vID0gYmFya29kLnN1YnN0cmluZyhpZHg5MyArIG1hcmtlcjkzLmxlbmd0aCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgd29ya09yZGVyTm8gPSBiYXJrb2Quc3Vic3RyaW5nKHBvcyk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRlcm1pbmFsQ29kZSA9IGJhcmtvZC5zdWJzdHJpbmcocG9zKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBUYXJpaGkgZm9ybWF0bGE6IFlZTU1ERCAtPiBZWVlZLU1NLUREXHJcbiAgICBsZXQgZXhwaXJhdGlvbkRhdGUgPSAnJztcclxuICAgIGlmICgvXlxcZHs2fSQvLnRlc3QoZXhwRGF0ZVJhdykpIHtcclxuICAgICAgZXhwaXJhdGlvbkRhdGUgPSBgMjAke2V4cERhdGVSYXcuc2xpY2UoMCwgMil9LSR7ZXhwRGF0ZVJhdy5zbGljZSgyLCA0KX0tJHtleHBEYXRlUmF3LnNsaWNlKDQsIDYpfWA7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBleHBpcmF0aW9uRGF0ZSA9IGV4cERhdGVSYXc7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gSGFtIGRlxJ9lciAvIDEuMDAwLjAwMCA9IGdlcsOnZWsgZ3JhbSBkZcSfZXJpIChzb24gNiBoYW5lIG9uZGFsxLFrKVxyXG4gICAgY29uc3Qgd2VpZ2h0UmF3SW50ID0gcGFyc2VJbnQod2VpZ2h0UmF3LCAxMCk7XHJcbiAgICBjb25zdCB3ZWlnaHRHciA9IGlzTmFOKHdlaWdodFJhd0ludCkgPyAwIDogd2VpZ2h0UmF3SW50IC8gMV8wMDBfMDAwO1xyXG4gICAgcmV0dXJuIG5ldyBIYW1tYWRkZShpdGVtQ29kZSwgbG90Tm8sIGV4cGlyYXRpb25EYXRlLCB3ZWlnaHRHciwgdGVybWluYWxDb2RlLCB3b3JrT3JkZXJObywgd2VpZ2hpbmdTZXF1ZW5jZU5vKTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBIYW1tYWRkZSB7XHJcbiAgY2hlbWljYWxDb2RlOiBzdHJpbmc7XHJcbiAgbG90TnVtYmVyOiBzdHJpbmc7XHJcbiAgZXhwaXJhdGlvbkRhdGU6IHN0cmluZztcclxuICB3ZWlnaHRHcjogbnVtYmVyO1xyXG4gIHdlaWdodEtnOiBudW1iZXI7XHJcbiAgdGVybWluYWxDb2RlOiBzdHJpbmc7XHJcbiAgd29ya09yZGVyTm86IHN0cmluZztcclxuICB3ZWlnaGluZ1NlcXVlbmNlTm86IHN0cmluZztcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBjaGVtaWNhbENvZGU6IHN0cmluZyxcclxuICAgIGxvdE51bWJlcjogc3RyaW5nLFxyXG4gICAgZXhwaXJhdGlvbkRhdGU6IHN0cmluZyxcclxuICAgIHdlaWdodEdyOiBudW1iZXIsXHJcbiAgICB0ZXJtaW5hbENvZGU6IHN0cmluZyxcclxuICAgIHdvcmtPcmRlck5vOiBzdHJpbmcgPSAnJyxcclxuICAgIHdlaWdoaW5nU2VxdWVuY2VObzogc3RyaW5nID0gJydcclxuICApIHtcclxuICAgIHRoaXMuY2hlbWljYWxDb2RlID0gY2hlbWljYWxDb2RlO1xyXG4gICAgdGhpcy5sb3ROdW1iZXIgPSBsb3ROdW1iZXI7XHJcbiAgICB0aGlzLmV4cGlyYXRpb25EYXRlID0gZXhwaXJhdGlvbkRhdGU7XHJcbiAgICB0aGlzLndlaWdodEdyID0gd2VpZ2h0R3I7XHJcbiAgICB0aGlzLndlaWdodEtnID0gd2VpZ2h0R3IgPyB3ZWlnaHRHciAvIDEwMDAgOiAwO1xyXG4gICAgdGhpcy50ZXJtaW5hbENvZGUgPSB0ZXJtaW5hbENvZGU7XHJcbiAgICB0aGlzLndvcmtPcmRlck5vID0gd29ya09yZGVyTm87XHJcbiAgICB0aGlzLndlaWdoaW5nU2VxdWVuY2VObyA9IHdlaWdoaW5nU2VxdWVuY2VObztcclxuICB9XHJcbn1cclxuIl19