@hitsoft/uretim-yonetimi 1.0.38 → 1.0.40
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.
- package/esm2020/lib/components/hit-filling-control/hit-filling-control.component.mjs +19 -1
- package/esm2020/lib/components/hit-filling-receipt-from-production/hit-filling-receipt-from-production.component.mjs +3 -3
- package/esm2020/lib/components/hit-issues-for-productions/hit-issues-for-productions.component.mjs +18 -1
- package/esm2020/lib/hit-proxy/hit-filling-receipt-from-production/hit-filling-receipt-from-production.service.mjs +1 -1
- package/esm2020/lib/hit-proxy/models.mjs +38 -13
- package/fesm2015/hitsoft-uretim-yonetimi.mjs +74 -14
- package/fesm2015/hitsoft-uretim-yonetimi.mjs.map +1 -1
- package/fesm2020/hitsoft-uretim-yonetimi.mjs +74 -14
- package/fesm2020/hitsoft-uretim-yonetimi.mjs.map +1 -1
- package/lib/components/hit-filling-control/hit-filling-control.component.d.ts +1 -0
- package/lib/components/hit-issues-for-productions/hit-issues-for-productions.component.d.ts +1 -0
- package/lib/hit-proxy/hit-filling-receipt-from-production/hit-filling-receipt-from-production.service.d.ts +1 -0
- package/lib/hit-proxy/models.d.ts +3 -1
- package/package.json +1 -1
|
@@ -22,6 +22,7 @@ export class HitFillingControlComponent {
|
|
|
22
22
|
this.qrCode = '';
|
|
23
23
|
this.lines = [];
|
|
24
24
|
this.isDataLoadedFromDb = false; // DB'den veri mi geldi yoksa yeni mi
|
|
25
|
+
this.scannedBarcodeKeys = new Set();
|
|
25
26
|
}
|
|
26
27
|
ngOnInit() {
|
|
27
28
|
// Initialization logic
|
|
@@ -93,6 +94,21 @@ export class HitFillingControlComponent {
|
|
|
93
94
|
this.focusQRInput();
|
|
94
95
|
return;
|
|
95
96
|
}
|
|
97
|
+
// Mükerrer barkod kontrolü: aynı iş emri + tartım sıra no kombinasyonu tekrar okutulamaz
|
|
98
|
+
if (parsed.workOrderNo && parsed.weighingSequenceNo) {
|
|
99
|
+
const barcodeKey = `${parsed.workOrderNo}_${parsed.weighingSequenceNo}`;
|
|
100
|
+
if (this.scannedBarcodeKeys.has(barcodeKey)) {
|
|
101
|
+
this.confirmation.error('', 'Aynı barkod tekrar okutulamaz!', {
|
|
102
|
+
hideYesBtn: true,
|
|
103
|
+
cancelText: 'Kapat',
|
|
104
|
+
dismissible: false,
|
|
105
|
+
});
|
|
106
|
+
this.qrCode = '';
|
|
107
|
+
this.focusQRInput();
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
this.scannedBarcodeKeys.add(barcodeKey);
|
|
111
|
+
}
|
|
96
112
|
// Grid'de bu item'ı bul
|
|
97
113
|
const line = this.lines.find(x => x.itemCode === parsed.chemicalCode);
|
|
98
114
|
if (!line) {
|
|
@@ -265,6 +281,7 @@ export class HitFillingControlComponent {
|
|
|
265
281
|
this.lines = [];
|
|
266
282
|
this.isDataLoadedFromDb = false;
|
|
267
283
|
this.isSaving = false;
|
|
284
|
+
this.scannedBarcodeKeys.clear();
|
|
268
285
|
this.focusOnIsEmriNo();
|
|
269
286
|
}
|
|
270
287
|
get showKazanDegisimiButton() {
|
|
@@ -309,6 +326,7 @@ export class HitFillingControlComponent {
|
|
|
309
326
|
// Grid'i refresh et
|
|
310
327
|
this.dataGrid.instance.refresh();
|
|
311
328
|
this.isDataLoadedFromDb = false; // Artık yeni veri girilecek
|
|
329
|
+
this.scannedBarcodeKeys.clear(); // Yeni kazan için okutulmuş barkodları sıfırla
|
|
312
330
|
// QR input'a focus et
|
|
313
331
|
this.focusOnQrCode();
|
|
314
332
|
}
|
|
@@ -358,4 +376,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
358
376
|
type: ViewChild,
|
|
359
377
|
args: ['gridLines', { static: false }]
|
|
360
378
|
}] } });
|
|
361
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGl0LWZpbGxpbmctY29udHJvbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91cmV0aW0teW9uZXRpbWkvc3JjL2xpYi9jb21wb25lbnRzL2hpdC1maWxsaW5nLWNvbnRyb2wvaGl0LWZpbGxpbmctY29udHJvbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91cmV0aW0teW9uZXRpbWkvc3JjL2xpYi9jb21wb25lbnRzL2hpdC1maWxsaW5nLWNvbnRyb2wvaGl0LWZpbGxpbmctY29udHJvbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUs3RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7Ozs7Ozs7OztBQU9uRCxNQUFNLE9BQU8sMEJBQTBCO0lBZ0JyQyxZQUNVLE9BQWlDLEVBQ2pDLFlBQWlDLEVBQ2pDLE1BQWM7UUFGZCxZQUFPLEdBQVAsT0FBTyxDQUEwQjtRQUNqQyxpQkFBWSxHQUFaLFlBQVksQ0FBcUI7UUFDakMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQWJ4QixvQkFBZSxHQUFZLEtBQUssQ0FBQztRQUNqQywyQkFBc0IsR0FBWSxLQUFLLENBQUM7UUFDeEMsY0FBUyxHQUFZLEtBQUssQ0FBQztRQUMzQixhQUFRLEdBQVksS0FBSyxDQUFDO1FBQzFCLGVBQVUsR0FBVyxFQUFFLENBQUM7UUFDeEIsZUFBVSxHQUFXLEVBQUUsQ0FBQztRQUN4QixXQUFNLEdBQVcsRUFBRSxDQUFDO1FBQ3BCLFVBQUssR0FBeUIsRUFBRSxDQUFDO1FBQ2pDLHVCQUFrQixHQUFZLEtBQUssQ0FBQyxDQUFDLHFDQUFxQztJQU12RSxDQUFDO0lBRUosUUFBUTtRQUNOLHVCQUF1QjtJQUN6QixDQUFDO0lBRUQsZUFBZTtRQUNiLElB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QixVQUFVLENBQUMsR0FBRyxFQUFFO2dCQUNkLElBQUksQ0FBQyxZQUFZLEVBQUUsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3RDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNSLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFlBQVk7UUFDVixJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUU7WUFDbkIsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDZCxJQUFJLENBQUMsWUFBWSxFQUFFLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUN0QyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDUixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7O3VIQXZYVSwwQkFBMEI7MkdBQTFCLDBCQUEwQixrV0NadkMsMmpKQStGQTsyRkRuRmEsMEJBQTBCO2tCQUx0QyxTQUFTOytCQUNFLHlCQUF5QjtzS0FLVSxjQUFjO3NCQUExRCxTQUFTO3VCQUFDLGFBQWEsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBQ0EsWUFBWTtzQkFBdEQsU0FBUzt1QkFBQyxXQUFXLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUNFLFFBQVE7c0JBQWxELFNBQVM7dUJBQUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgVmlld0NoaWxkLCBOZ1pvbmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRHhOdW1iZXJCb3hDb21wb25lbnQsIER4VGV4dEJveENvbXBvbmVudCwgRHhEYXRhR3JpZENvbXBvbmVudCB9IGZyb20gJ2RldmV4dHJlbWUtYW5ndWxhcic7XHJcbmltcG9ydCB7IEhpdEZpbGxpbmdDb250cm9sU2VydmljZSB9IGZyb20gJy4uLy4uL2hpdC1wcm94eS9oaXQtZmlsbGluZy1jb250cm9sL2hpdC1maWxsaW5nLWNvbnRyb2wuc2VydmljZSc7XHJcbmltcG9ydCB7IEZpbGxpbmdDb250cm9sTGluZSB9IGZyb20gJy4uLy4uL2hpdC1wcm94eS9oaXQtZmlsbGluZy1jb250cm9sL21vZGVscyc7XHJcbmltcG9ydCB7IENvbmZpcm1hdGlvblNlcnZpY2UgfSBmcm9tICdAYWJwL25nLnRoZW1lLnNoYXJlZCc7XHJcbmltcG9ydCB7IEhpdEhlbHBlciB9IGZyb20gJy4uLy4uL2hpdC1wcm94eS9tb2RlbHMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItaGl0LWZpbGxpbmctY29udHJvbCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2hpdC1maWxsaW5nLWNvbnRyb2wuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2hpdC1maWxsaW5nLWNvbnRyb2wuY29tcG9uZW50LmNzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgSGl0RmlsbGluZ0NvbnRyb2xDb21wb25lbnQge1xyXG4gIEBWaWV3Q2hpbGQoJ2lzRW1yaU5vUmVmJywgeyBzdGF0aWM6IGZhbHNlIH0pIG5tYkJveElzRW1yaU5vOiBEeE51bWJlckJveENvbXBvbmVudDtcclxuICBAVmlld0NoaWxkKCdxckNvZGVSZWYnLCB7IHN0YXRpYzogZmFsc2UgfSkgdHh0Qm94UXJDb2RlOiBEeFRleHRCb3hDb21wb25lbnQ7XHJcbiAgQFZpZXdDaGlsZCgnZ3JpZExpbmVzJywgeyBzdGF0aWM6IGZhbHNlIH0pIGRhdGFHcmlkOiBEeERhdGFHcmlkQ29tcG9uZW50O1xyXG5cclxuICBpc0VtcmlObzogbnVtYmVyO1xyXG4gIHNlYXJjaEJhc2lsZGlNaTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGlzRW1yaUJhcmtvZHVHZWNlcmxpTWk6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBpc0xvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBpc1NhdmluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGhhdEJpbGdpc2k6IHN0cmluZyA9ICcnO1xyXG4gIGFtYmFsYWpMb3Q6IHN0cmluZyA9ICcnO1xyXG4gIHFyQ29kZTogc3RyaW5nID0gJyc7XHJcbiAgbGluZXM6IEZpbGxpbmdDb250cm9sTGluZVtdID0gW107XHJcbiAgaXNEYXRhTG9hZGVkRnJvbURiOiBib29sZWFuID0gZmFsc2U7IC8vIERCJ2RlbiB2ZXJpIG1pIGdlbGRpIHlva3NhIHllbmkgbWlcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHNlcnZpY2U6IEhpdEZpbGxpbmdDb250cm9sU2VydmljZSxcclxuICAgIHByaXZhdGUgY29uZmlybWF0aW9uOiBDb25maXJtYXRpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZVxyXG4gICkge31cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICAvLyBJbml0aWFsaXphdGlvbiBsb2dpY1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgdGhpcy5mb2N1c09uSXNFbXJpTm8oKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIGdldFByb2R1Y3Rpb25PcmRlcigpIHtcclxuICAgIGlmICghdGhpcy5pc0VtcmlObykge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5pc0VtcmlCYXJrb2R1R2VjZXJsaU1pID0gZmFsc2U7XHJcbiAgICB0aGlzLnNlYXJjaEJhc2lsZGlNaSA9IHRydWU7XHJcblxyXG4gICAgdGhpcy5zZXJ2aWNlLmdldEZpbGxpbmdDb250cm9sSW5mbyh0aGlzLmlzRW1yaU5vKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiByZXNwb25zZSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3BvbnNlPy5pc1N1Y2Nlc3NmdWwpIHtcclxuICAgICAgICAgIGNvbnN0IHN0YXR1cyA9IChyZXNwb25zZS5pdGVtcz8uc3RhdHVzIHx8ICcnKS50b1N0cmluZygpLnRvVXBwZXJDYXNlKCk7XHJcbiAgICAgICAgICBpZiAoc3RhdHVzID09PSAnUCcpIHtcclxuICAgICAgICAgICAgdGhpcy5jb25maXJtYXRpb24ud2FybignJywgJ0J1IMO8cmV0aW0gc2lwYXJpxZ9pIG9uYXlsYW5tYW3EscWfdMSxciwga29udHJvbCB5YXDEsWxhbWF6LicsIHtcclxuICAgICAgICAgICAgICBoaWRlWWVzQnRuOiB0cnVlLFxyXG4gICAgICAgICAgICAgIGNhbmNlbFRleHQ6ICdLYXBhdCcsXHJcbiAgICAgICAgICAgICAgZGlzbWlzc2libGU6IGZhbHNlLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgdGhpcy5jbGVhckFsbCgpO1xyXG4gICAgICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgdGhpcy5oYXRCaWxnaXNpID0gcmVzcG9uc2UuaXRlbXMudV9IYXQ7XHJcbiAgICAgICAgICB0aGlzLmFtYmFsYWpMb3QgPSByZXNwb25zZS5pdGVtcy51X1RSS0FNQkFMQUpMT1Q7XHJcbiAgICAgICAgICB0aGlzLmxpbmVzID0gcmVzcG9uc2UuaXRlbXMubGluZXM7XHJcbiAgICAgICAgICB0aGlzLmlzRW1yaUJhcmtvZHVHZWNlcmxpTWkgPSB0cnVlO1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAvLyBEQidkZW4gdmVyaSBnZWxpcCBnZWxtZWRpxJ9pbmkga29udHJvbCBldCAoZW4gYXogYmlyIHNhdMSxcmRhIGJhdGNoTnVtYmVyIHZhcnNhIERCJ2RlbiBnZWxtacWfdGlyKVxyXG4gICAgICAgICAgdGhpcy5pc0RhdGFMb2FkZWRGcm9tRGIgPSB0aGlzLmxpbmVzLnNvbWUoeCA9PiB4LmJhdGNoTnVtYmVyICYmIHguYmF0Y2hOdW1iZXIudHJpbSgpICE9PSAnJyk7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmZvY3VzT25RckNvZGUoKTtcclxuICAgICAgICAgIH0sIDEwMCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuaXNFbXJpQmFya29kdUdlY2VybGlNaSA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogZSA9PiB7XHJcbiAgICAgICAgdGhpcy5pc0VtcmlCYXJrb2R1R2VjZXJsaU1pID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zZWFyY2hCYXNpbGRpTWkgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5jb25maXJtYXRpb24uc3RhdHVzJC5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgbmV4dDogKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmNsZWFyQWxsKCk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvblFyQ29kZUNoYW5nZSgpIHtcclxuICAgIGlmICghdGhpcy5xckNvZGUgfHwgdGhpcy5xckNvZGUudHJpbSgpID09PSAnJykge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgZGVidWdnZXI7XHJcblxyXG4gICAgY29uc3QgcGFyc2VkID0gSGl0SGVscGVyLnBhcnNlUVIodGhpcy5xckNvZGUpO1xyXG4gICAgaWYgKCFwYXJzZWQpIHtcclxuICAgICAgdGhpcy5jb25maXJtYXRpb24uZXJyb3IoJycsICdHZcOnZXJzaXogUVIga29kIGZvcm1hdMSxIScsIHtcclxuICAgICAgICBoaWRlWWVzQnRuOiB0cnVlLFxyXG4gICAgICAgIGNhbmNlbFRleHQ6ICdLYXBhdCcsXHJcbiAgICAgICAgZGlzbWlzc2libGU6IGZhbHNlLFxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5xckNvZGUgPSAnJztcclxuICAgICAgdGhpcy5mb2N1c1FSSW5wdXQoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEdyaWQnZGUgYnUgaXRlbSfEsSBidWxcclxuICAgIGNvbnN0IGxpbmUgPSB0aGlzLmxpbmVzLmZpbmQoeCA9PiB4Lml0ZW1Db2RlID09PSBwYXJzZWQuY2hlbWljYWxDb2RlKTtcclxuICAgIGlmICghbGluZSkge1xyXG4gICAgICB0aGlzLmNvbmZpcm1hdGlvbi5lcnJvcignJywgYCR7cGFyc2VkLmNoZW1pY2FsQ29kZX0ga29kbHUgw7xyw7xuIGJ1IGnFnyBlbXJpbmRlIGJ1bHVuYW1hZMSxIWAsIHtcclxuICAgICAgICBoaWRlWWVzQnRuOiB0cnVlLFxyXG4gICAgICAgIGNhbmNlbFRleHQ6ICdLYXBhdCcsXHJcbiAgICAgICAgZGlzbWlzc2libGU6IGZhbHNlLFxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5xckNvZGUgPSAnJztcclxuICAgICAgdGhpcy5mb2N1c1FSSW5wdXQoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIMSwbGsgb2t1dG1hIGtvbnRyb2zDvCAtIEhpw6cga29udHJvbCBlZGlsbWVtacWfIHNhdMSxciB2YXJzYSwgYnUgaWxrIG9rdXRtYSBkZW1la3RpclxyXG4gICAgY29uc3QgaXNGaXJzdFNjYW4gPSAhdGhpcy5saW5lcy5zb21lKHggPT4geC5pc0NvbnRyb2xsZWQpO1xyXG4gICAgaWYgKGlzRmlyc3RTY2FuKSB7XHJcbiAgICAgIC8vIMSwbGsgb2t1dG1hIGnDp2luIMO8csO8biBhxJ9hY8SxIHZlIGthbGl0ZSBrb250cm9sw7wgeWFwXHJcbiAgICAgIGNvbnNvbGUubG9nKCfEsGxrIG9rdXRtYSB0ZXNwaXQgZWRpbGRpLCDDvHLDvG4gYcSfYWPEsSBrb250cm9sw7wgeWFwxLFsxLF5b3I6JywgcGFyc2VkLmNoZW1pY2FsQ29kZSk7XHJcbiAgICAgIHRoaXMuc2VydmljZS5oYXNQcm9kdWN0aW9uVHJlZShwYXJzZWQuY2hlbWljYWxDb2RlLCB0aGlzLmlzRW1yaU5vKS5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IHJlc3BvbnNlID0+IHtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKCdIYXNQcm9kdWN0aW9uVHJlZSByZXNwb25zZTonLCByZXNwb25zZSk7XHJcbiAgICAgICAgICBpZiAocmVzcG9uc2U/LmlzU3VjY2Vzc2Z1bCAmJiByZXNwb25zZS5pdGVtcyA9PT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICAvLyDDnHLDvG4gYcSfYWPEsSB2YXIsIGthbGl0ZSBrb250cm9sw7wgeWFwXHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCfDnHLDvG4gYcSfYWPEsSBidWx1bmR1LCBrYWxpdGUga29udHJvbMO8IHlhcMSxbMSxeW9yJyk7XHJcbiAgICAgICAgICAgIHRoaXMuY2hlY2tRdWFsaXR5QW5kUHJvY2VzcyhsaW5lLCBwYXJzZWQubG90TnVtYmVyLCBpc0ZpcnN0U2Nhbik7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAvLyDDnHLDvG4gYcSfYWPEsSB5b2ssIGhhdGEgZ8O2c3RlclxyXG4gICAgICAgICAgICBjb25zb2xlLmxvZygnw5xyw7xuIGHEn2FjxLEgYnVsdW5hbWFkxLEhJyk7XHJcbiAgICAgICAgICAgIHRoaXMuY29uZmlybWF0aW9uLmVycm9yKCcnLCAnxLBsayBva3V0bWEgacWfbGVtaSB5YXLEsSBtYW3DvGwgacOnaW4geWFwxLFsbWFsxLEhJywge1xyXG4gICAgICAgICAgICAgIGhpZGVZZXNCdG46IHRydWUsXHJcbiAgICAgICAgICAgICAgY2FuY2VsVGV4dDogJ0thcGF0JyxcclxuICAgICAgICAgICAgICBkaXNtaXNzaWJsZTogZmFsc2UsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB0aGlzLnFyQ29kZSA9ICcnO1xyXG4gICAgICAgICAgICB0aGlzLmZvY3VzUVJJbnB1dCgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnIpID0+IHtcclxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0hhc1Byb2R1Y3Rpb25UcmVlIGVycm9yOicsIGVycik7XHJcbiAgICAgICAgICB0aGlzLmNvbmZpcm1hdGlvbi5lcnJvcignJywgJ8OccsO8biBhxJ9hY8SxIGtvbnRyb2zDvCB5YXDEsWzEsXJrZW4gaGF0YSBvbHXFn3R1IScsIHtcclxuICAgICAgICAgICAgaGlkZVllc0J0bjogdHJ1ZSxcclxuICAgICAgICAgICAgY2FuY2VsVGV4dDogJ0thcGF0JyxcclxuICAgICAgICAgICAgZGlzbWlzc2libGU6IGZhbHNlLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLnFyQ29kZSA9ICcnO1xyXG4gICAgICAgICAgdGhpcy5mb2N1c1FSSW5wdXQoKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vIMSwbGsgb2t1dG1hIGRlxJ9pbHNlIGRpcmVrdCBpxZ9sZVxyXG4gICAgICBjb25zb2xlLmxvZygnxLBsayBva3V0bWEgZGXEn2lsLCBkaXJla3QgacWfbGVuaXlvcicpO1xyXG4gICAgICB0aGlzLnByb2Nlc3NRclNjYW4obGluZSwgcGFyc2VkLmxvdE51bWJlcik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNoZWNrUXVhbGl0eUFuZFByb2Nlc3MobGluZTogRmlsbGluZ0NvbnRyb2xMaW5lLCBiYXRjaE51bWJlcjogc3RyaW5nLCBpc0ZpcnN0U2NhbjogYm9vbGVhbikge1xyXG4gICAgLy8gS2FsaXRlIGR1cnVtdSBrb250cm9sw7wgeWFwXHJcbiAgICB0aGlzLnNlcnZpY2UuY2hlY2tRdWFsaXR5U3RhdHVzKGJhdGNoTnVtYmVyLCB0aGlzLmlzRW1yaU5vLCBsaW5lLml0ZW1Db2RlKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiByZXNwb25zZSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ0NoZWNrUXVhbGl0eVN0YXR1cyByZXNwb25zZTonLCByZXNwb25zZSk7XHJcbiAgICAgICAgaWYgKHJlc3BvbnNlPy5pc1N1Y2Nlc3NmdWwgJiYgcmVzcG9uc2UuaXRlbXMpIHtcclxuICAgICAgICAgIGlmIChyZXNwb25zZS5pdGVtcy5pc0FwcHJvdmVkKSB7XHJcbiAgICAgICAgICAgIC8vIEthbGl0ZSBvbmF5bGFuZMSxLCBva3V0bWF5YSBkZXZhbSBldFxyXG4gICAgICAgICAgICBjb25zb2xlLmxvZygnS2FsaXRlIGtvbnRyb2zDvCBvbmF5bGFuZMSxLCBva3V0bWF5YSBkZXZhbSBlZGlsaXlvcicpO1xyXG4gICAgICAgICAgICB0aGlzLnByb2Nlc3NRclNjYW4obGluZSwgYmF0Y2hOdW1iZXIsIGlzRmlyc3RTY2FuKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIC8vIEthbGl0ZSBSRUQsIGhhdGEgZ8O2c3RlclxyXG4gICAgICAgICAgICBjb25zb2xlLmxvZygnS2FsaXRlIGtvbnRyb2zDvCByZWRkZWRpbGRpOicsIHJlc3BvbnNlLml0ZW1zLmVycm9yTWVzc2FnZSk7XHJcbiAgICAgICAgICAgIHRoaXMuY29uZmlybWF0aW9uLmVycm9yKCcnLCByZXNwb25zZS5pdGVtcy5lcnJvck1lc3NhZ2UgfHwgJ0thbGl0ZSBrb250cm9sw7wgcmVkZGVkaWxkaSEnLCB7XHJcbiAgICAgICAgICAgICAgaGlkZVllc0J0bjogdHJ1ZSxcclxuICAgICAgICAgICAgICBjYW5jZWxUZXh0OiAnS2FwYXQnLFxyXG4gICAgICAgICAgICAgIGRpc21pc3NpYmxlOiBmYWxzZSxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHRoaXMucXJDb2RlID0gJyc7XHJcbiAgICAgICAgICAgIHRoaXMuZm9jdXNRUklucHV0KCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIC8vIFNvcmd1IHNvbnVjdSBudWxsIGdlbGRpIHZleWEgYmHFn2FyxLFzxLF6XHJcbiAgICAgICAgICBjb25zb2xlLmxvZygnS2FsaXRlIGtvbnRyb2zDvCBzb3JndXN1IHNvbnXDpyBkw7ZuZMO8cm1lZGknKTtcclxuICAgICAgICAgIHRoaXMuY29uZmlybWF0aW9uLmVycm9yKCcnLCAnQnUgbG90IG51bWFyYXPEsSBpw6dpbiBrYWxpdGUgYmlsZ2lzaSBidWx1bmFtYWTEsSEnLCB7XHJcbiAgICAgICAgICAgIGhpZGVZZXNCdG46IHRydWUsXHJcbiAgICAgICAgICAgIGNhbmNlbFRleHQ6ICdLYXBhdCcsXHJcbiAgICAgICAgICAgIGRpc21pc3NpYmxlOiBmYWxzZSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy5xckNvZGUgPSAnJztcclxuICAgICAgICAgIHRoaXMuZm9jdXNRUklucHV0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogKGVycikgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0NoZWNrUXVhbGl0eVN0YXR1cyBlcnJvcjonLCBlcnIpO1xyXG4gICAgICAgIHRoaXMuY29uZmlybWF0aW9uLmVycm9yKCcnLCAnS2FsaXRlIGtvbnRyb2zDvCB5YXDEsWzEsXJrZW4gaGF0YSBvbHXFn3R1IScsIHtcclxuICAgICAgICAgIGhpZGVZZXNCdG46IHRydWUsXHJcbiAgICAgICAgICBjYW5jZWxUZXh0OiAnS2FwYXQnLFxyXG4gICAgICAgICAgZGlzbWlzc2libGU6IGZhbHNlLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMucXJDb2RlID0gJyc7XHJcbiAgICAgICAgdGhpcy5mb2N1c1FSSW5wdXQoKTtcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBwcm9jZXNzUXJTY2FuKGxpbmU6IEZpbGxpbmdDb250cm9sTGluZSwgYmF0Y2hOdW1iZXI6IHN0cmluZywgaXNGaXJzdFNjYW46IGJvb2xlYW4gPSBmYWxzZSkge1xyXG4gICAgLy8gS29udHJvbCBlZGlsZGkgb2xhcmFrIGnFn2FyZXRsZSB2ZSBwYXJ0aSBudW1hcmFzxLFuxLEgc2V0IGV0XHJcbiAgICBsaW5lLmlzQ29udHJvbGxlZCA9IHRydWU7XHJcbiAgICBpZiAoaXNGaXJzdFNjYW4pIHtcclxuICAgICAgbGluZS5iYXRjaE51bWJlciA9IGJhdGNoTnVtYmVyO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEdyaWQnaSByZWZyZXNoIGV0XHJcbiAgICB0aGlzLmRhdGFHcmlkLmluc3RhbmNlLnJlZnJlc2goKTtcclxuXHJcbiAgICAvLyBRUiBpbnB1dCd1IHRlbWl6bGUgdmUgZm9jdXMgZXRcclxuICAgIHRoaXMucXJDb2RlID0gJyc7XHJcbiAgICB0aGlzLmZvY3VzUVJJbnB1dCgpO1xyXG4gIH1cclxuXHJcbiAgc2F2ZSgpIHtcclxuICAgIGlmICghdGhpcy5pc0VtcmlObyB8fCB0aGlzLmxpbmVzLmxlbmd0aCA9PT0gMCB8fCB0aGlzLmlzU2F2aW5nKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICAvLyBUw7xtIGtvbnRyb2xsZXIgdGFtYW1sYW5txLHFnyBtxLEga29udHJvbMO8XHJcbiAgICBpZiAoIXRoaXMubGluZXMuZXZlcnkoeCA9PiB4LmlzQ29udHJvbGxlZCkpIHtcclxuICAgICAgdGhpcy5jb25maXJtYXRpb24ud2FybignJywgJ1TDvG0ga29udHJvbGxlciB0YW1hbWxhbm1hZGFuIGthecSxdCBpxZ9sZW1pIHlhcMSxbGFtYXouJywge1xyXG4gICAgICAgIGhpZGVZZXNCdG46IHRydWUsXHJcbiAgICAgICAgY2FuY2VsVGV4dDogJ0thcGF0JyxcclxuICAgICAgICBkaXNtaXNzaWJsZTogZmFsc2UsXHJcbiAgICAgIH0pO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3Qgc2F2ZURhdGEgPSB7XHJcbiAgICAgIHdvcmtPcmRlck5vOiB0aGlzLmlzRW1yaU5vLFxyXG4gICAgICBsaW5lczogdGhpcy5saW5lcy5tYXAobGluZSA9PiAoe1xyXG4gICAgICAgIGxpbmVOdW06IGxpbmUubGluZU51bSxcclxuICAgICAgICBpdGVtQ29kZTogbGluZS5pdGVtQ29kZSxcclxuICAgICAgICBpc0NvbnRyb2xsZWQ6IGxpbmUuaXNDb250cm9sbGVkLFxyXG4gICAgICAgIGJhdGNoTnVtYmVyOiBsaW5lLmJhdGNoTnVtYmVyIHx8ICcnXHJcbiAgICAgIH0pKVxyXG4gICAgfTtcclxuXHJcbiAgICB0aGlzLmlzU2F2aW5nID0gdHJ1ZTtcclxuICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMuc2VydmljZS5zYXZlRmlsbGluZ0NvbnRyb2woc2F2ZURhdGEpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IHJlc3BvbnNlID0+IHtcclxuICAgICAgICBpZiAocmVzcG9uc2U/LmlzU3VjY2Vzc2Z1bCkge1xyXG4gICAgICAgICAgdGhpcy5jb25maXJtYXRpb24uc3VjY2VzcygnJywgJ0thecSxdCBiYcWfYXLEsWzEsSEnLCB7XHJcbiAgICAgICAgICAgIGhpZGVZZXNCdG46IHRydWUsXHJcbiAgICAgICAgICAgIGNhbmNlbFRleHQ6ICdLYXBhdCcsXHJcbiAgICAgICAgICAgIGRpc21pc3NpYmxlOiBmYWxzZSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy5jbGVhckFsbCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmlzU2F2aW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IGUgPT4ge1xyXG4gICAgICAgIHRoaXMuaXNTYXZpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuY29uZmlybWF0aW9uLnN0YXR1cyQuc3Vic2NyaWJlKHtcclxuICAgICAgICAgIG5leHQ6ICgpID0+IHtcclxuICAgICAgICAgICAgLy8gSGF0YSBzb25yYXPEsSBpxZ9sZW1cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGNsZWFyQWxsKCkge1xyXG4gICAgdGhpcy5pc0VtcmlCYXJrb2R1R2VjZXJsaU1pID0gZmFsc2U7XHJcbiAgICB0aGlzLnNlYXJjaEJhc2lsZGlNaSA9IGZhbHNlO1xyXG4gICAgdGhpcy5pc0VtcmlObyA9IG51bGw7XHJcbiAgICB0aGlzLmhhdEJpbGdpc2kgPSAnJztcclxuICAgIHRoaXMuYW1iYWxhakxvdCA9ICcnO1xyXG4gICAgdGhpcy5xckNvZGUgPSAnJztcclxuICAgIHRoaXMubGluZXMgPSBbXTtcclxuICAgIHRoaXMuaXNEYXRhTG9hZGVkRnJvbURiID0gZmFsc2U7XHJcbiAgICB0aGlzLmlzU2F2aW5nID0gZmFsc2U7XHJcbiAgICB0aGlzLmZvY3VzT25Jc0VtcmlObygpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHNob3dLYXphbkRlZ2lzaW1pQnV0dG9uKCk6IGJvb2xlYW4ge1xyXG4gICAgLy8gU2FkZWNlIERCJ2RlbiB2ZXJpIGdlbG1pxZ9zZSwgacWfIGVtcmkgb2t1dHVsbXXFnyB2ZSB0w7xtIHNhdMSxcmxhciBrb250cm9sIGVkaWxtacWfIGlzZSBnw7ZzdGVyXHJcbiAgICByZXR1cm4gdGhpcy5pc0RhdGFMb2FkZWRGcm9tRGIgJiZcclxuICAgICAgICAgICB0aGlzLmlzRW1yaUJhcmtvZHVHZWNlcmxpTWkgJiYgXHJcbiAgICAgICAgICAgdGhpcy5saW5lcy5sZW5ndGggPiAwICYmIFxyXG4gICAgICAgICAgIHRoaXMubGluZXMuZXZlcnkoeCA9PiB4LmlzQ29udHJvbGxlZCk7XHJcbiAgfVxyXG5cclxuICBnZXQgaXNTYXZlQnV0dG9uRGlzYWJsZWQoKTogYm9vbGVhbiB7XHJcbiAgICAvLyDEsMWfIGVtcmkgeW9rc2EgdmV5YSBzYXTEsXIgeW9rc2EgdmV5YSB0w7xtIHNhdMSxcmxhciBrb250cm9sIGVkaWxtZW1pxZ9zZSB2ZXlhIGtheWRldG1lIGnFn2xlbWkgZGV2YW0gZWRpeW9yc2EgZGlzYWJsZVxyXG4gICAgcmV0dXJuICF0aGlzLmlzRW1yaU5vIHx8IFxyXG4gICAgICAgICAgIHRoaXMubGluZXMubGVuZ3RoID09PSAwIHx8IFxyXG4gICAgICAgICAgICF0aGlzLmxpbmVzLmV2ZXJ5KHggPT4geC5pc0NvbnRyb2xsZWQpIHx8XHJcbiAgICAgICAgICAgdGhpcy5pc1NhdmluZztcclxuICB9XHJcblxyXG4gIGthemFuRGVnaXNpbWkoKSB7XHJcbiAgICAvLyDEsGxrIHNvcnU6IEJ1IGthemFuYSBhaXQgdMO8bSDDvHJldGltZGVuIGdpcmnFn2xlcmkgdGFtYW1sYWTEsW7EsXogbcSxP1xyXG4gICAgdGhpcy5jb25maXJtYXRpb24ud2FybihcclxuICAgICAgJycsXHJcbiAgICAgICdCdSBrYXphbmEgYWl0IHTDvG0gw7xyZXRpbWRlbiBnaXJpxZ9sZXJpIHRhbWFtbGFkxLFuxLF6IG3EsT8nLFxyXG4gICAgICB7XHJcbiAgICAgICAgeWVzVGV4dDogJ0V2ZXQnLFxyXG4gICAgICAgIGNhbmNlbFRleHQ6ICdIYXnEsXInXHJcbiAgICAgIH1cclxuICAgICkuc3Vic2NyaWJlKHN0YXR1cyA9PiB7XHJcbiAgICAgIGlmIChzdGF0dXMgPT09ICdjb25maXJtJykge1xyXG4gICAgICAgIC8vIMSwa2luY2kgc29ydTogS2F6YW4gZGXEn2nFn2ltaSDDtm5jZXNpbmRlIGthemFuIFlNIGZpcmUgw6fEsWvEscWfxLEgZ2Vyw6dla2xlxZ90aXJpbGRpIG1pP1xyXG4gICAgICAgIHRoaXMuY29uZmlybWF0aW9uLndhcm4oXHJcbiAgICAgICAgICAnJyxcclxuICAgICAgICAgICdLYXphbiBkZcSfacWfaW1pIMO2bmNlc2luZGUga2F6YW4gWU0gZmlyZSDDp8Sxa8SxxZ/EsSBnZXLDp2VrbGXFn3RpcmlsZGkgbWk/JyxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgeWVzVGV4dDogJ0V2ZXQnLFxyXG4gICAgICAgICAgICBjYW5jZWxUZXh0OiAnSGF5xLFyJ1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICkuc3Vic2NyaWJlKHN0YXR1czIgPT4ge1xyXG4gICAgICAgICAgaWYgKHN0YXR1czIgPT09ICdjb25maXJtJykge1xyXG4gICAgICAgICAgICAvLyDDnMOnw7xuY8O8IHNvcnU6IEJpbGXFn2VuIGZpcmUgw6fEsWvEscWfxLEgZ2Vyw6dla2xlxZ90aXJpbGRpIG1pP1xyXG4gICAgICAgICAgICB0aGlzLmNvbmZpcm1hdGlvbi53YXJuKFxyXG4gICAgICAgICAgICAgICcnLFxyXG4gICAgICAgICAgICAgICdCaWxlxZ9lbiBmaXJlIMOnxLFrxLHFn8SxIGdlcsOnZWtsZcWfdGlyaWxkaSBtaT8nLFxyXG4gICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIHllc1RleHQ6ICdFdmV0JyxcclxuICAgICAgICAgICAgICAgIGNhbmNlbFRleHQ6ICdIYXnEsXInXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICApLnN1YnNjcmliZShzdGF0dXMzID0+IHtcclxuICAgICAgICAgICAgICBpZiAoc3RhdHVzMyA9PT0gJ2NvbmZpcm0nKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBUw7xtIG9uYXlsYXIgdmVyaWxkaSwga2F6YW4gZGXEn2nFn2ltaSBpxZ9sZW1pbmkgZ2Vyw6dla2xlxZ90aXJcclxuICAgICAgICAgICAgICAgIC8vIFTDvG0gc2F0xLFybGFyxLFuIElzQ29udHJvbGxlZCBhbGFuxLFuxLEgZmFsc2UgeWFwXHJcbiAgICAgICAgICAgICAgICB0aGlzLmxpbmVzLmZvckVhY2gobGluZSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIGxpbmUuaXNDb250cm9sbGVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgIGxpbmUuYmF0Y2hOdW1iZXIgPSAnJztcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAvLyBHcmlkJ2kgcmVmcmVzaCBldFxyXG4gICAgICAgICAgICAgICAgdGhpcy5kYXRhR3JpZC5pbnN0YW5jZS5yZWZyZXNoKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmlzRGF0YUxvYWRlZEZyb21EYiA9IGZhbHNlOyAvLyBBcnTEsWsgeWVuaSB2ZXJpIGdpcmlsZWNla1xyXG4gICAgICAgICAgICAgICAgLy8gUVIgaW5wdXQnYSBmb2N1cyBldFxyXG4gICAgICAgICAgICAgICAgdGhpcy5mb2N1c09uUXJDb2RlKCk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIC8vIHN0YXR1czMgIT09ICdjb25maXJtJyBpc2Ugw7zDp8O8bmPDvCBzb3J1eWEgaGF5xLFyIGRlbmRpLCBpxZ9sZW0gaXB0YWxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICAvLyBzdGF0dXMyICE9PSAnY29uZmlybScgaXNlIGlraW5jaSBzb3J1eWEgaGF5xLFyIGRlbmRpLCBpxZ9sZW0gaXB0YWxcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgICAvLyBzdGF0dXMgIT09ICdjb25maXJtJyBpc2UgaWxrIHNvcnV5YSBoYXnEsXIgZGVuZGksIGnFn2xlbSBpcHRhbFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBmb2N1c09uSXNFbXJpTm8oKSB7XHJcbiAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLm5tYkJveElzRW1yaU5vPy5pbnN0YW5jZS5mb2N1cygpO1xyXG4gICAgICB9LCAwKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZm9jdXNPblFyQ29kZSgpIHtcclxuICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMudHh0Qm94UXJDb2RlPy5pbnN0YW5jZS5mb2N1cygpO1xyXG4gICAgICB9LCAwKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZm9jdXNRUklucHV0KCkge1xyXG4gICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy50eHRCb3hRckNvZGU/Lmluc3RhbmNlLmZvY3VzKCk7XHJcbiAgICAgIH0sIDApO1xyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiIsIjxhYnAtcGFnZSBbYnJlYWRjcnVtYl09XCJmYWxzZVwiPlxyXG4gIDxhYnAtcGFnZS10b29sYmFyLWNvbnRhaW5lciBjbGFzcz1cImNvbFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICA8aDMgY2xhc3M9XCJwYWdlLXRpdGxlXCI+XHJcbiAgICAgICAge3sgJ1VyZXRpbVlvbmV0aW1pOjpGaWxsaW5nQ29udHJvbC5UaXRsZScgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgPC9oMz5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInJvdyB0ZXh0LWxnLWVuZCBwdC0yXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNlwiPlxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXN1Y2Nlc3MgYnRuLXNtXCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJzYXZlKClcIiBbZGlzYWJsZWRdPVwiaXNTYXZlQnV0dG9uRGlzYWJsZWRcIj5cclxuICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtc2F2ZSBtZS0xXCI+PC9pPlxyXG4gICAgICAgICAge3sgJ1VyZXRpbVlvbmV0aW1pOjpGaWxsaW5nQ29udHJvbC5TYXZlJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbC0zXCIgKm5nSWY9XCJzaG93S2F6YW5EZWdpc2ltaUJ1dHRvblwiPlxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLWluZm8gYnRuLXNtXCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJrYXphbkRlZ2lzaW1pKClcIj5cclxuICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtcmVjeWNsZSBtZS0xXCI+PC9pPlxyXG4gICAgICAgICAgS2F6YW4gRGXEn2nFn2ltaVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbC0zXCI+XHJcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4td2FybmluZyBidG4tc21cIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImNsZWFyQWxsKClcIj5cclxuICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtYnJvb20gbWUtMVwiPjwvaT5cclxuICAgICAgICAgIHt7ICdVcmV0aW1Zb25ldGltaTo6RmlsbGluZ0NvbnRyb2wuQ2xlYW4nIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9hYnAtcGFnZS10b29sYmFyLWNvbnRhaW5lcj5cclxuICA8ZGl2IGNsYXNzPVwiY2FyZCBtdC0yXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5XCIgc3R5bGU9XCJoZWlnaHQ6IGNhbGMoMTAwdmggLSAyNDFweCk7IG92ZXJmbG93OiBhdXRvO1wiPlxyXG4gICAgICA8ZGl2IHN0eWxlPVwiZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjtcIj5cclxuICAgICAgICA8ZHgtbnVtYmVyLWJveCAjaXNFbXJpTm9SZWYgY2xhc3M9XCJtZS0xXCIgc3R5bGU9XCJ3aWR0aDoxMDAlO1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidVcmV0aW1Zb25ldGltaTo6RmlsbGluZ0NvbnRyb2wuV29ya09yZGVyTm8nIHwgYWJwTG9jYWxpemF0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICBbKHZhbHVlKV09XCJpc0VtcmlOb1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgKG9uQ2hhbmdlKT1cImdldFByb2R1Y3Rpb25PcmRlcigpXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgKG9uRW50ZXJLZXkpPVwiZ2V0UHJvZHVjdGlvbk9yZGVyKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJzZWFyY2hCYXNpbGRpTWkgfHwgaXNFbXJpQmFya29kdUdlY2VybGlNaVwiPlxyXG4gICAgICAgIDwvZHgtbnVtYmVyLWJveD5cclxuICAgICAgICA8ZHgtYnV0dG9uIHN0eWxlPVwibWFyZ2luLXRvcDogNy41cHg7XCIgXHJcbiAgICAgICAgICAgICAgICAgICBpY29uPVwic2VhcmNoXCIgXHJcbiAgICAgICAgICAgICAgICAgICB0eXBlPVwiZGVmYXVsdFwiIFxyXG4gICAgICAgICAgICAgICAgICAgKG9uQ2xpY2spPVwiZ2V0UHJvZHVjdGlvbk9yZGVyKClcIlxyXG4gICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInNlYXJjaEJhc2lsZGlNaSB8fCBpc0VtcmlCYXJrb2R1R2VjZXJsaU1pXCI+XHJcbiAgICAgICAgPC9keC1idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cIm10LTNcIiAqbmdJZj1cImlzRW1yaUJhcmtvZHVHZWNlcmxpTWlcIj5cclxuICAgICAgICA8ZHgtdGV4dC1ib3ggc3R5bGU9XCJ3aWR0aDoxMDAlO1wiIFxyXG4gICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ1VyZXRpbVlvbmV0aW1pOjpGaWxsaW5nQ29udHJvbC5MaW5lSW5mbycgfCBhYnBMb2NhbGl6YXRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICBbKHZhbHVlKV09XCJoYXRCaWxnaXNpXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJ0cnVlXCI+XHJcbiAgICAgICAgPC9keC10ZXh0LWJveD5cclxuXHJcbiAgICAgICAgICA8ZHgtdGV4dC1ib3ggc3R5bGU9XCJ3aWR0aDoxMDAlO1wiIFxyXG4gICAgICAgICAgICAgICAgICAgICBsYWJlbD1cIkFtYmFsYWogTG90XCJcclxuICAgICAgICAgICAgICAgICAgICAgWyh2YWx1ZSldPVwiYW1iYWxhakxvdFwiIFxyXG4gICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwidHJ1ZVwiPlxyXG4gICAgICAgIDwvZHgtdGV4dC1ib3g+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtdC0zXCIgc3R5bGU9XCJkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyO1wiPlxyXG4gICAgICAgICAgPGR4LXRleHQtYm94ICNxckNvZGVSZWYgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJ3aWR0aDoxMDAlO1wiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWUtMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidVcmV0aW1Zb25ldGltaTo6RmlsbGluZ0NvbnRyb2wuUVJDb2RlJyB8IGFicExvY2FsaXphdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgWyh2YWx1ZSldPVwicXJDb2RlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAob25FbnRlcktleSk9XCJvblFyQ29kZUNoYW5nZSgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ1VyZXRpbVlvbmV0aW1pOjpGaWxsaW5nQ29udHJvbC5RUkNvZGUuUGxhY2Vob2xkZXInIHwgYWJwTG9jYWxpemF0aW9uXCI+XHJcbiAgICAgICAgICA8L2R4LXRleHQtYm94PlxyXG4gICAgICAgICAgPGR4LWJ1dHRvbiBzdHlsZT1cIm1hcmdpbi10b3A6IDcuNXB4O1wiIGljb249XCJwbHVzXCIgdHlwZT1cImRlZmF1bHRcIiAob25DbGljayk9XCJvblFyQ29kZUNoYW5nZSgpXCI+XHJcbiAgICAgICAgICA8L2R4LWJ1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGR4LWRhdGEtZ3JpZCAjZ3JpZExpbmVzIFxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtdC0zXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICBbZGF0YVNvdXJjZV09XCJsaW5lc1wiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgW2NvbHVtbkF1dG9XaWR0aF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtzaG93Qm9yZGVyc109XCJ0cnVlXCI+XHJcbiAgICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJpdGVtQ29kZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbY2FwdGlvbl09XCInVXJldGltWW9uZXRpbWk6OkZpbGxpbmdDb250cm9sLkl0ZW1Db2RlJyB8IGFicExvY2FsaXphdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbYWxsb3dFZGl0aW5nXT1cImZhbHNlXCI+PC9keGktY29sdW1uPlxyXG4gICAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwiaXRlbU5hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW2NhcHRpb25dPVwiJ1VyZXRpbVlvbmV0aW1pOjpGaWxsaW5nQ29udHJvbC5JdGVtTmFtZScgfCBhYnBMb2NhbGl6YXRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW2FsbG93RWRpdGluZ109XCJmYWxzZVwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cImlzQ29udHJvbGxlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbY2FwdGlvbl09XCInVXJldGltWW9uZXRpbWk6OkZpbGxpbmdDb250cm9sLklzQ29udHJvbGxlZCcgfCBhYnBMb2NhbGl6YXRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgZGF0YVR5cGU9XCJib29sZWFuXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFthbGxvd0VkaXRpbmddPVwiZmFsc2VcIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJiYXRjaE51bWJlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbY2FwdGlvbl09XCInVXJldGltWW9uZXRpbWk6OkZpbGxpbmdDb250cm9sLkJhdGNoTnVtYmVyJyB8IGFicExvY2FsaXphdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbYWxsb3dFZGl0aW5nXT1cImZhbHNlXCI+PC9keGktY29sdW1uPlxyXG4gICAgICAgIDwvZHgtZGF0YS1ncmlkPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2FicC1wYWdlPlxyXG4iXX0=
|
|
379
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGl0LWZpbGxpbmctY29udHJvbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91cmV0aW0teW9uZXRpbWkvc3JjL2xpYi9jb21wb25lbnRzL2hpdC1maWxsaW5nLWNvbnRyb2wvaGl0LWZpbGxpbmctY29udHJvbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91cmV0aW0teW9uZXRpbWkvc3JjL2xpYi9jb21wb25lbnRzL2hpdC1maWxsaW5nLWNvbnRyb2wvaGl0LWZpbGxpbmctY29udHJvbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUs3RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7Ozs7Ozs7OztBQU9uRCxNQUFNLE9BQU8sMEJBQTBCO0lBaUJyQyxZQUNVLE9BQWlDLEVBQ2pDLFlBQWlDLEVBQ2pDLE1BQWM7UUFGZCxZQUFPLEdBQVAsT0FBTyxDQUEwQjtRQUNqQyxpQkFBWSxHQUFaLFlBQVksQ0FBcUI7UUFDakMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQWR4QixvQkFBZSxHQUFZLEtBQUssQ0FBQztRQUNqQywyQkFBc0IsR0FBWSxLQUFLLENBQUM7UUFDeEMsY0FBUyxHQUFZLEtBQUssQ0FBQztRQUMzQixhQUFRLEdBQVksS0FBSyxDQUFDO1FBQzFCLGVBQVUsR0FBVyxFQUFFLENBQUM7UUFDeEIsZUFBVSxHQUFXLEVBQUUsQ0FBQztRQUN4QixXQUFNLEdBQVcsRUFBRSxDQUFDO1FBQ3BCLFVBQUssR0FBeUIsRUFBRSxDQUFDO1FBQ2pDLHVCQUFrQixHQUFZLEtBQUssQ0FBQyxDQUFDLHFDQUFxQztRQUNsRSx1QkFBa0IsR0FBRyxJQUFJLEdBQUcsRUFBVSxDQUFDO0lBTTVDLENBQUM7SUFFSixRQUFRO1FB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Q0FBQyxDQUFDLENBQUM7UUFDUixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7O3VIQTFZVSwwQkFBMEI7MkdBQTFCLDBCQUEwQixrV0NadkMsMmpKQStGQTsyRkRuRmEsMEJBQTBCO2tCQUx0QyxTQUFTOytCQUNFLHlCQUF5QjtzS0FLVSxjQUFjO3NCQUExRCxTQUFTO3VCQUFDLGFBQWEsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBQ0EsWUFBWTtzQkFBdEQsU0FBUzt1QkFBQyxXQUFXLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUNFLFFBQVE7c0JBQWxELFNBQVM7dUJBQUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgVmlld0NoaWxkLCBOZ1pvbmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRHhOdW1iZXJCb3hDb21wb25lbnQsIER4VGV4dEJveENvbXBvbmVudCwgRHhEYXRhR3JpZENvbXBvbmVudCB9IGZyb20gJ2RldmV4dHJlbWUtYW5ndWxhcic7XHJcbmltcG9ydCB7IEhpdEZpbGxpbmdDb250cm9sU2VydmljZSB9IGZyb20gJy4uLy4uL2hpdC1wcm94eS9oaXQtZmlsbGluZy1jb250cm9sL2hpdC1maWxsaW5nLWNvbnRyb2wuc2VydmljZSc7XHJcbmltcG9ydCB7IEZpbGxpbmdDb250cm9sTGluZSB9IGZyb20gJy4uLy4uL2hpdC1wcm94eS9oaXQtZmlsbGluZy1jb250cm9sL21vZGVscyc7XHJcbmltcG9ydCB7IENvbmZpcm1hdGlvblNlcnZpY2UgfSBmcm9tICdAYWJwL25nLnRoZW1lLnNoYXJlZCc7XHJcbmltcG9ydCB7IEhpdEhlbHBlciB9IGZyb20gJy4uLy4uL2hpdC1wcm94eS9tb2RlbHMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItaGl0LWZpbGxpbmctY29udHJvbCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2hpdC1maWxsaW5nLWNvbnRyb2wuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2hpdC1maWxsaW5nLWNvbnRyb2wuY29tcG9uZW50LmNzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgSGl0RmlsbGluZ0NvbnRyb2xDb21wb25lbnQge1xyXG4gIEBWaWV3Q2hpbGQoJ2lzRW1yaU5vUmVmJywgeyBzdGF0aWM6IGZhbHNlIH0pIG5tYkJveElzRW1yaU5vOiBEeE51bWJlckJveENvbXBvbmVudDtcclxuICBAVmlld0NoaWxkKCdxckNvZGVSZWYnLCB7IHN0YXRpYzogZmFsc2UgfSkgdHh0Qm94UXJDb2RlOiBEeFRleHRCb3hDb21wb25lbnQ7XHJcbiAgQFZpZXdDaGlsZCgnZ3JpZExpbmVzJywgeyBzdGF0aWM6IGZhbHNlIH0pIGRhdGFHcmlkOiBEeERhdGFHcmlkQ29tcG9uZW50O1xyXG5cclxuICBpc0VtcmlObzogbnVtYmVyO1xyXG4gIHNlYXJjaEJhc2lsZGlNaTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGlzRW1yaUJhcmtvZHVHZWNlcmxpTWk6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBpc0xvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBpc1NhdmluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGhhdEJpbGdpc2k6IHN0cmluZyA9ICcnO1xyXG4gIGFtYmFsYWpMb3Q6IHN0cmluZyA9ICcnO1xyXG4gIHFyQ29kZTogc3RyaW5nID0gJyc7XHJcbiAgbGluZXM6IEZpbGxpbmdDb250cm9sTGluZVtdID0gW107XHJcbiAgaXNEYXRhTG9hZGVkRnJvbURiOiBib29sZWFuID0gZmFsc2U7IC8vIERCJ2RlbiB2ZXJpIG1pIGdlbGRpIHlva3NhIHllbmkgbWlcclxuICBwcml2YXRlIHNjYW5uZWRCYXJjb2RlS2V5cyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgc2VydmljZTogSGl0RmlsbGluZ0NvbnRyb2xTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjb25maXJtYXRpb246IENvbmZpcm1hdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIG5nWm9uZTogTmdab25lXHJcbiAgKSB7fVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIC8vIEluaXRpYWxpemF0aW9uIGxvZ2ljXHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICB0aGlzLmZvY3VzT25Jc0VtcmlObygpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgZ2V0UHJvZHVjdGlvbk9yZGVyKCkge1xyXG4gICAgaWYgKCF0aGlzLmlzRW1yaU5vKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLmlzRW1yaUJhcmtvZHVHZWNlcmxpTWkgPSBmYWxzZTtcclxuICAgIHRoaXMuc2VhcmNoQmFzaWxkaU1pID0gdHJ1ZTtcclxuXHJcbiAgICB0aGlzLnNlcnZpY2UuZ2V0RmlsbGluZ0NvbnRyb2xJbmZvKHRoaXMuaXNFbXJpTm8pLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IHJlc3BvbnNlID0+IHtcclxuICAgICAgICBpZiAocmVzcG9uc2U/LmlzU3VjY2Vzc2Z1bCkge1xyXG4gICAgICAgICAgY29uc3Qgc3RhdHVzID0gKHJlc3BvbnNlLml0ZW1zPy5zdGF0dXMgfHwgJycpLnRvU3RyaW5nKCkudG9VcHBlckNhc2UoKTtcclxuICAgICAgICAgIGlmIChzdGF0dXMgPT09ICdQJykge1xyXG4gICAgICAgICAgICB0aGlzLmNvbmZpcm1hdGlvbi53YXJuKCcnLCAnQnUgw7xyZXRpbSBzaXBhcmnFn2kgb25heWxhbm1hbcSxxZ90xLFyLCBrb250cm9sIHlhcMSxbGFtYXouJywge1xyXG4gICAgICAgICAgICAgIGhpZGVZZXNCdG46IHRydWUsXHJcbiAgICAgICAgICAgICAgY2FuY2VsVGV4dDogJ0thcGF0JyxcclxuICAgICAgICAgICAgICBkaXNtaXNzaWJsZTogZmFsc2UsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB0aGlzLmNsZWFyQWxsKCk7XHJcbiAgICAgICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICB0aGlzLmhhdEJpbGdpc2kgPSByZXNwb25zZS5pdGVtcy51X0hhdDtcclxuICAgICAgICAgIHRoaXMuYW1iYWxhakxvdCA9IHJlc3BvbnNlLml0ZW1zLnVfVFJLQU1CQUxBSkxPVDtcclxuICAgICAgICAgIHRoaXMubGluZXMgPSByZXNwb25zZS5pdGVtcy5saW5lcztcclxuICAgICAgICAgIHRoaXMuaXNFbXJpQmFya29kdUdlY2VybGlNaSA9IHRydWU7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIC8vIERCJ2RlbiB2ZXJpIGdlbGlwIGdlbG1lZGnEn2luaSBrb250cm9sIGV0IChlbiBheiBiaXIgc2F0xLFyZGEgYmF0Y2hOdW1iZXIgdmFyc2EgREInZGVuIGdlbG1pxZ90aXIpXHJcbiAgICAgICAgICB0aGlzLmlzRGF0YUxvYWRlZEZyb21EYiA9IHRoaXMubGluZXMuc29tZSh4ID0+IHguYmF0Y2hOdW1iZXIgJiYgeC5iYXRjaE51bWJlci50cmltKCkgIT09ICcnKTtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZm9jdXNPblFyQ29kZSgpO1xyXG4gICAgICAgICAgfSwgMTAwKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5pc0VtcmlCYXJrb2R1R2VjZXJsaU1pID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiBlID0+IHtcclxuICAgICAgICB0aGlzLmlzRW1yaUJhcmtvZHVHZWNlcmxpTWkgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnNlYXJjaEJhc2lsZGlNaSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmNvbmZpcm1hdGlvbi5zdGF0dXMkLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICBuZXh0OiAoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuY2xlYXJBbGwoKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uUXJDb2RlQ2hhbmdlKCkge1xyXG4gICAgaWYgKCF0aGlzLnFyQ29kZSB8fCB0aGlzLnFyQ29kZS50cmltKCkgPT09ICcnKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBkZWJ1Z2dlcjtcclxuXHJcbiAgICBjb25zdCBwYXJzZWQgPSBIaXRIZWxwZXIucGFyc2VRUih0aGlzLnFyQ29kZSk7XHJcbiAgICBpZiAoIXBhcnNlZCkge1xyXG4gICAgICB0aGlzLmNvbmZpcm1hdGlvbi5lcnJvcignJywgJ0dlw6dlcnNpeiBRUiBrb2QgZm9ybWF0xLEhJywge1xyXG4gICAgICAgIGhpZGVZZXNCdG46IHRydWUsXHJcbiAgICAgICAgY2FuY2VsVGV4dDogJ0thcGF0JyxcclxuICAgICAgICBkaXNtaXNzaWJsZTogZmFsc2UsXHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLnFyQ29kZSA9ICcnO1xyXG4gICAgICB0aGlzLmZvY3VzUVJJbnB1dCgpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgLy8gTcO8a2VycmVyIGJhcmtvZCBrb250cm9sw7w6IGF5bsSxIGnFnyBlbXJpICsgdGFydMSxbSBzxLFyYSBubyBrb21iaW5hc3lvbnUgdGVrcmFyIG9rdXR1bGFtYXpcclxuICAgIGlmIChwYXJzZWQud29ya09yZGVyTm8gJiYgcGFyc2VkLndlaWdoaW5nU2VxdWVuY2VObykge1xyXG4gICAgICBjb25zdCBiYXJjb2RlS2V5ID0gYCR7cGFyc2VkLndvcmtPcmRlck5vfV8ke3BhcnNlZC53ZWlnaGluZ1NlcXVlbmNlTm99YDtcclxuICAgICAgaWYgKHRoaXMuc2Nhbm5lZEJhcmNvZGVLZXlzLmhhcyhiYXJjb2RlS2V5KSkge1xyXG4gICAgICAgIHRoaXMuY29uZmlybWF0aW9uLmVycm9yKCcnLCAnQXluxLEgYmFya29kIHRla3JhciBva3V0dWxhbWF6IScsIHtcclxuICAgICAgICAgIGhpZGVZZXNCdG46IHRydWUsXHJcbiAgICAgICAgICBjYW5jZWxUZXh0OiAnS2FwYXQnLFxyXG4gICAgICAgICAgZGlzbWlzc2libGU6IGZhbHNlLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMucXJDb2RlID0gJyc7XHJcbiAgICAgICAgdGhpcy5mb2N1c1FSSW5wdXQoKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5zY2FubmVkQmFyY29kZUtleXMuYWRkKGJhcmNvZGVLZXkpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEdyaWQnZGUgYnUgaXRlbSfEsSBidWxcclxuICAgIGNvbnN0IGxpbmUgPSB0aGlzLmxpbmVzLmZpbmQoeCA9PiB4Lml0ZW1Db2RlID09PSBwYXJzZWQuY2hlbWljYWxDb2RlKTtcclxuICAgIGlmICghbGluZSkge1xyXG4gICAgICB0aGlzLmNvbmZpcm1hdGlvbi5lcnJvcignJywgYCR7cGFyc2VkLmNoZW1pY2FsQ29kZX0ga29kbHUgw7xyw7xuIGJ1IGnFnyBlbXJpbmRlIGJ1bHVuYW1hZMSxIWAsIHtcclxuICAgICAgICBoaWRlWWVzQnRuOiB0cnVlLFxyXG4gICAgICAgIGNhbmNlbFRleHQ6ICdLYXBhdCcsXHJcbiAgICAgICAgZGlzbWlzc2libGU6IGZhbHNlLFxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5xckNvZGUgPSAnJztcclxuICAgICAgdGhpcy5mb2N1c1FSSW5wdXQoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIMSwbGsgb2t1dG1hIGtvbnRyb2zDvCAtIEhpw6cga29udHJvbCBlZGlsbWVtacWfIHNhdMSxciB2YXJzYSwgYnUgaWxrIG9rdXRtYSBkZW1la3RpclxyXG4gICAgY29uc3QgaXNGaXJzdFNjYW4gPSAhdGhpcy5saW5lcy5zb21lKHggPT4geC5pc0NvbnRyb2xsZWQpO1xyXG4gICAgaWYgKGlzRmlyc3RTY2FuKSB7XHJcbiAgICAgIC8vIMSwbGsgb2t1dG1hIGnDp2luIMO8csO8biBhxJ9hY8SxIHZlIGthbGl0ZSBrb250cm9sw7wgeWFwXHJcbiAgICAgIGNvbnNvbGUubG9nKCfEsGxrIG9rdXRtYSB0ZXNwaXQgZWRpbGRpLCDDvHLDvG4gYcSfYWPEsSBrb250cm9sw7wgeWFwxLFsxLF5b3I6JywgcGFyc2VkLmNoZW1pY2FsQ29kZSk7XHJcbiAgICAgIHRoaXMuc2VydmljZS5oYXNQcm9kdWN0aW9uVHJlZShwYXJzZWQuY2hlbWljYWxDb2RlLCB0aGlzLmlzRW1yaU5vKS5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IHJlc3BvbnNlID0+IHtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKCdIYXNQcm9kdWN0aW9uVHJlZSByZXNwb25zZTonLCByZXNwb25zZSk7XHJcbiAgICAgICAgICBpZiAocmVzcG9uc2U/LmlzU3VjY2Vzc2Z1bCAmJiByZXNwb25zZS5pdGVtcyA9PT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICAvLyDDnHLDvG4gYcSfYWPEsSB2YXIsIGthbGl0ZSBrb250cm9sw7wgeWFwXHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCfDnHLDvG4gYcSfYWPEsSBidWx1bmR1LCBrYWxpdGUga29udHJvbMO8IHlhcMSxbMSxeW9yJyk7XHJcbiAgICAgICAgICAgIHRoaXMuY2hlY2tRdWFsaXR5QW5kUHJvY2VzcyhsaW5lLCBwYXJzZWQubG90TnVtYmVyLCBpc0ZpcnN0U2Nhbik7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAvLyDDnHLDvG4gYcSfYWPEsSB5b2ssIGhhdGEgZ8O2c3RlclxyXG4gICAgICAgICAgICBjb25zb2xlLmxvZygnw5xyw7xuIGHEn2FjxLEgYnVsdW5hbWFkxLEhJyk7XHJcbiAgICAgICAgICAgIHRoaXMuY29uZmlybWF0aW9uLmVycm9yKCcnLCAnxLBsayBva3V0bWEgacWfbGVtaSB5YXLEsSBtYW3DvGwgacOnaW4geWFwxLFsbWFsxLEhJywge1xyXG4gICAgICAgICAgICAgIGhpZGVZZXNCdG46IHRydWUsXHJcbiAgICAgICAgICAgICAgY2FuY2VsVGV4dDogJ0thcGF0JyxcclxuICAgICAgICAgICAgICBkaXNtaXNzaWJsZTogZmFsc2UsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB0aGlzLnFyQ29kZSA9ICcnO1xyXG4gICAgICAgICAgICB0aGlzLmZvY3VzUVJJbnB1dCgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnIpID0+IHtcclxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0hhc1Byb2R1Y3Rpb25UcmVlIGVycm9yOicsIGVycik7XHJcbiAgICAgICAgICB0aGlzLmNvbmZpcm1hdGlvbi5lcnJvcignJywgJ8OccsO8biBhxJ9hY8SxIGtvbnRyb2zDvCB5YXDEsWzEsXJrZW4gaGF0YSBvbHXFn3R1IScsIHtcclxuICAgICAgICAgICAgaGlkZVllc0J0bjogdHJ1ZSxcclxuICAgICAgICAgICAgY2FuY2VsVGV4dDogJ0thcGF0JyxcclxuICAgICAgICAgICAgZGlzbWlzc2libGU6IGZhbHNlLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLnFyQ29kZSA9ICcnO1xyXG4gICAgICAgICAgdGhpcy5mb2N1c1FSSW5wdXQoKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vIMSwbGsgb2t1dG1hIGRlxJ9pbHNlIGRpcmVrdCBpxZ9sZVxyXG4gICAgICBjb25zb2xlLmxvZygnxLBsayBva3V0bWEgZGXEn2lsLCBkaXJla3QgacWfbGVuaXlvcicpO1xyXG4gICAgICB0aGlzLnByb2Nlc3NRclNjYW4obGluZSwgcGFyc2VkLmxvdE51bWJlcik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNoZWNrUXVhbGl0eUFuZFByb2Nlc3MobGluZTogRmlsbGluZ0NvbnRyb2xMaW5lLCBiYXRjaE51bWJlcjogc3RyaW5nLCBpc0ZpcnN0U2NhbjogYm9vbGVhbikge1xyXG4gICAgLy8gS2FsaXRlIGR1cnVtdSBrb250cm9sw7wgeWFwXHJcbiAgICB0aGlzLnNlcnZpY2UuY2hlY2tRdWFsaXR5U3RhdHVzKGJhdGNoTnVtYmVyLCB0aGlzLmlzRW1yaU5vLCBsaW5lLml0ZW1Db2RlKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiByZXNwb25zZSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ0NoZWNrUXVhbGl0eVN0YXR1cyByZXNwb25zZTonLCByZXNwb25zZSk7XHJcbiAgICAgICAgaWYgKHJlc3BvbnNlPy5pc1N1Y2Nlc3NmdWwgJiYgcmVzcG9uc2UuaXRlbXMpIHtcclxuICAgICAgICAgIGlmIChyZXNwb25zZS5pdGVtcy5pc0FwcHJvdmVkKSB7XHJcbiAgICAgICAgICAgIC8vIEthbGl0ZSBvbmF5bGFuZMSxLCBva3V0bWF5YSBkZXZhbSBldFxyXG4gICAgICAgICAgICBjb25zb2xlLmxvZygnS2FsaXRlIGtvbnRyb2zDvCBvbmF5bGFuZMSxLCBva3V0bWF5YSBkZXZhbSBlZGlsaXlvcicpO1xyXG4gICAgICAgICAgICB0aGlzLnByb2Nlc3NRclNjYW4obGluZSwgYmF0Y2hOdW1iZXIsIGlzRmlyc3RTY2FuKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIC8vIEthbGl0ZSBSRUQsIGhhdGEgZ8O2c3RlclxyXG4gICAgICAgICAgICBjb25zb2xlLmxvZygnS2FsaXRlIGtvbnRyb2zDvCByZWRkZWRpbGRpOicsIHJlc3BvbnNlLml0ZW1zLmVycm9yTWVzc2FnZSk7XHJcbiAgICAgICAgICAgIHRoaXMuY29uZmlybWF0aW9uLmVycm9yKCcnLCByZXNwb25zZS5pdGVtcy5lcnJvck1lc3NhZ2UgfHwgJ0thbGl0ZSBrb250cm9sw7wgcmVkZGVkaWxkaSEnLCB7XHJcbiAgICAgICAgICAgICAgaGlkZVllc0J0bjogdHJ1ZSxcclxuICAgICAgICAgICAgICBjYW5jZWxUZXh0OiAnS2FwYXQnLFxyXG4gICAgICAgICAgICAgIGRpc21pc3NpYmxlOiBmYWxzZSxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHRoaXMucXJDb2RlID0gJyc7XHJcbiAgICAgICAgICAgIHRoaXMuZm9jdXNRUklucHV0KCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIC8vIFNvcmd1IHNvbnVjdSBudWxsIGdlbGRpIHZleWEgYmHFn2FyxLFzxLF6XHJcbiAgICAgICAgICBjb25zb2xlLmxvZygnS2FsaXRlIGtvbnRyb2zDvCBzb3JndXN1IHNvbnXDpyBkw7ZuZMO8cm1lZGknKTtcclxuICAgICAgICAgIHRoaXMuY29uZmlybWF0aW9uLmVycm9yKCcnLCAnQnUgbG90IG51bWFyYXPEsSBpw6dpbiBrYWxpdGUgYmlsZ2lzaSBidWx1bmFtYWTEsSEnLCB7XHJcbiAgICAgICAgICAgIGhpZGVZZXNCdG46IHRydWUsXHJcbiAgICAgICAgICAgIGNhbmNlbFRleHQ6ICdLYXBhdCcsXHJcbiAgICAgICAgICAgIGRpc21pc3NpYmxlOiBmYWxzZSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy5xckNvZGUgPSAnJztcclxuICAgICAgICAgIHRoaXMuZm9jdXNRUklucHV0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogKGVycikgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0NoZWNrUXVhbGl0eVN0YXR1cyBlcnJvcjonLCBlcnIpO1xyXG4gICAgICAgIHRoaXMuY29uZmlybWF0aW9uLmVycm9yKCcnLCAnS2FsaXRlIGtvbnRyb2zDvCB5YXDEsWzEsXJrZW4gaGF0YSBvbHXFn3R1IScsIHtcclxuICAgICAgICAgIGhpZGVZZXNCdG46IHRydWUsXHJcbiAgICAgICAgICBjYW5jZWxUZXh0OiAnS2FwYXQnLFxyXG4gICAgICAgICAgZGlzbWlzc2libGU6IGZhbHNlLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMucXJDb2RlID0gJyc7XHJcbiAgICAgICAgdGhpcy5mb2N1c1FSSW5wdXQoKTtcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBwcm9jZXNzUXJTY2FuKGxpbmU6IEZpbGxpbmdDb250cm9sTGluZSwgYmF0Y2hOdW1iZXI6IHN0cmluZywgaXNGaXJzdFNjYW46IGJvb2xlYW4gPSBmYWxzZSkge1xyXG4gICAgLy8gS29udHJvbCBlZGlsZGkgb2xhcmFrIGnFn2FyZXRsZSB2ZSBwYXJ0aSBudW1hcmFzxLFuxLEgc2V0IGV0XHJcbiAgICBsaW5lLmlzQ29udHJvbGxlZCA9IHRydWU7XHJcbiAgICBpZiAoaXNGaXJzdFNjYW4pIHtcclxuICAgICAgbGluZS5iYXRjaE51bWJlciA9IGJhdGNoTnVtYmVyO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEdyaWQnaSByZWZyZXNoIGV0XHJcbiAgICB0aGlzLmRhdGFHcmlkLmluc3RhbmNlLnJlZnJlc2goKTtcclxuXHJcbiAgICAvLyBRUiBpbnB1dCd1IHRlbWl6bGUgdmUgZm9jdXMgZXRcclxuICAgIHRoaXMucXJDb2RlID0gJyc7XHJcbiAgICB0aGlzLmZvY3VzUVJJbnB1dCgpO1xyXG4gIH1cclxuXHJcbiAgc2F2ZSgpIHtcclxuICAgIGlmICghdGhpcy5pc0VtcmlObyB8fCB0aGlzLmxpbmVzLmxlbmd0aCA9PT0gMCB8fCB0aGlzLmlzU2F2aW5nKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICAvLyBUw7xtIGtvbnRyb2xsZXIgdGFtYW1sYW5txLHFnyBtxLEga29udHJvbMO8XHJcbiAgICBpZiAoIXRoaXMubGluZXMuZXZlcnkoeCA9PiB4LmlzQ29udHJvbGxlZCkpIHtcclxuICAgICAgdGhpcy5jb25maXJtYXRpb24ud2FybignJywgJ1TDvG0ga29udHJvbGxlciB0YW1hbWxhbm1hZGFuIGthecSxdCBpxZ9sZW1pIHlhcMSxbGFtYXouJywge1xyXG4gICAgICAgIGhpZGVZZXNCdG46IHRydWUsXHJcbiAgICAgICAgY2FuY2VsVGV4dDogJ0thcGF0JyxcclxuICAgICAgICBkaXNtaXNzaWJsZTogZmFsc2UsXHJcbiAgICAgIH0pO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3Qgc2F2ZURhdGEgPSB7XHJcbiAgICAgIHdvcmtPcmRlck5vOiB0aGlzLmlzRW1yaU5vLFxyXG4gICAgICBsaW5lczogdGhpcy5saW5lcy5tYXAobGluZSA9PiAoe1xyXG4gICAgICAgIGxpbmVOdW06IGxpbmUubGluZU51bSxcclxuICAgICAgICBpdGVtQ29kZTogbGluZS5pdGVtQ29kZSxcclxuICAgICAgICBpc0NvbnRyb2xsZWQ6IGxpbmUuaXNDb250cm9sbGVkLFxyXG4gICAgICAgIGJhdGNoTnVtYmVyOiBsaW5lLmJhdGNoTnVtYmVyIHx8ICcnXHJcbiAgICAgIH0pKVxyXG4gICAgfTtcclxuXHJcbiAgICB0aGlzLmlzU2F2aW5nID0gdHJ1ZTtcclxuICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMuc2VydmljZS5zYXZlRmlsbGluZ0NvbnRyb2woc2F2ZURhdGEpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IHJlc3BvbnNlID0+IHtcclxuICAgICAgICBpZiAocmVzcG9uc2U/LmlzU3VjY2Vzc2Z1bCkge1xyXG4gICAgICAgICAgdGhpcy5jb25maXJtYXRpb24uc3VjY2VzcygnJywgJ0thecSxdCBiYcWfYXLEsWzEsSEnLCB7XHJcbiAgICAgICAgICAgIGhpZGVZZXNCdG46IHRydWUsXHJcbiAgICAgICAgICAgIGNhbmNlbFRleHQ6ICdLYXBhdCcsXHJcbiAgICAgICAgICAgIGRpc21pc3NpYmxlOiBmYWxzZSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy5jbGVhckFsbCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmlzU2F2aW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IGUgPT4ge1xyXG4gICAgICAgIHRoaXMuaXNTYXZpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuY29uZmlybWF0aW9uLnN0YXR1cyQuc3Vic2NyaWJlKHtcclxuICAgICAgICAgIG5leHQ6ICgpID0+IHtcclxuICAgICAgICAgICAgLy8gSGF0YSBzb25yYXPEsSBpxZ9sZW1cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGNsZWFyQWxsKCkge1xyXG4gICAgdGhpcy5pc0VtcmlCYXJrb2R1R2VjZXJsaU1pID0gZmFsc2U7XHJcbiAgICB0aGlzLnNlYXJjaEJhc2lsZGlNaSA9IGZhbHNlO1xyXG4gICAgdGhpcy5pc0VtcmlObyA9IG51bGw7XHJcbiAgICB0aGlzLmhhdEJpbGdpc2kgPSAnJztcclxuICAgIHRoaXMuYW1iYWxhakxvdCA9ICcnO1xyXG4gICAgdGhpcy5xckNvZGUgPSAnJztcclxuICAgIHRoaXMubGluZXMgPSBbXTtcclxuICAgIHRoaXMuaXNEYXRhTG9hZGVkRnJvbURiID0gZmFsc2U7XHJcbiAgICB0aGlzLmlzU2F2aW5nID0gZmFsc2U7XHJcbiAgICB0aGlzLnNjYW5uZWRCYXJjb2RlS2V5cy5jbGVhcigpO1xyXG4gICAgdGhpcy5mb2N1c09uSXNFbXJpTm8oKTtcclxuICB9XHJcblxyXG4gIGdldCBzaG93S2F6YW5EZWdpc2ltaUJ1dHRvbigpOiBib29sZWFuIHtcclxuICAgIC8vIFNhZGVjZSBEQidkZW4gdmVyaSBnZWxtacWfc2UsIGnFnyBlbXJpIG9rdXR1bG11xZ8gdmUgdMO8bSBzYXTEsXJsYXIga29udHJvbCBlZGlsbWnFnyBpc2UgZ8O2c3RlclxyXG4gICAgcmV0dXJuIHRoaXMuaXNEYXRhTG9hZGVkRnJvbURiICYmXHJcbiAgICAgICAgICAgdGhpcy5pc0VtcmlCYXJrb2R1R2VjZXJsaU1pICYmIFxyXG4gICAgICAgICAgIHRoaXMubGluZXMubGVuZ3RoID4gMCAmJiBcclxuICAgICAgICAgICB0aGlzLmxpbmVzLmV2ZXJ5KHggPT4geC5pc0NvbnRyb2xsZWQpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGlzU2F2ZUJ1dHRvbkRpc2FibGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgLy8gxLDFnyBlbXJpIHlva3NhIHZleWEgc2F0xLFyIHlva3NhIHZleWEgdMO8bSBzYXTEsXJsYXIga29udHJvbCBlZGlsbWVtacWfc2UgdmV5YSBrYXlkZXRtZSBpxZ9sZW1pIGRldmFtIGVkaXlvcnNhIGRpc2FibGVcclxuICAgIHJldHVybiAhdGhpcy5pc0VtcmlObyB8fCBcclxuICAgICAgICAgICB0aGlzLmxpbmVzLmxlbmd0aCA9PT0gMCB8fCBcclxuICAgICAgICAgICAhdGhpcy5saW5lcy5ldmVyeSh4ID0+IHguaXNDb250cm9sbGVkKSB8fFxyXG4gICAgICAgICAgIHRoaXMuaXNTYXZpbmc7XHJcbiAgfVxyXG5cclxuICBrYXphbkRlZ2lzaW1pKCkge1xyXG4gICAgLy8gxLBsayBzb3J1OiBCdSBrYXphbmEgYWl0IHTDvG0gw7xyZXRpbWRlbiBnaXJpxZ9sZXJpIHRhbWFtbGFkxLFuxLF6IG3EsT9cclxuICAgIHRoaXMuY29uZmlybWF0aW9uLndhcm4oXHJcbiAgICAgICcnLFxyXG4gICAgICAnQnUga2F6YW5hIGFpdCB0w7xtIMO8cmV0aW1kZW4gZ2lyacWfbGVyaSB0YW1hbWxhZMSxbsSxeiBtxLE/JyxcclxuICAgICAge1xyXG4gICAgICAgIHllc1RleHQ6ICdFdmV0JyxcclxuICAgICAgICBjYW5jZWxUZXh0OiAnSGF5xLFyJ1xyXG4gICAgICB9XHJcbiAgICApLnN1YnNjcmliZShzdGF0dXMgPT4ge1xyXG4gICAgICBpZiAoc3RhdHVzID09PSAnY29uZmlybScpIHtcclxuICAgICAgICAvLyDEsGtpbmNpIHNvcnU6IEthemFuIGRlxJ9pxZ9pbWkgw7ZuY2VzaW5kZSBrYXphbiBZTSBmaXJlIMOnxLFrxLHFn8SxIGdlcsOnZWtsZcWfdGlyaWxkaSBtaT9cclxuICAgICAgICB0aGlzLmNvbmZpcm1hdGlvbi53YXJuKFxyXG4gICAgICAgICAgJycsXHJcbiAgICAgICAgICAnS2F6YW4gZGXEn2nFn2ltaSDDtm5jZXNpbmRlIGthemFuIFlNIGZpcmUgw6fEsWvEscWfxLEgZ2Vyw6dla2xlxZ90aXJpbGRpIG1pPycsXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHllc1RleHQ6ICdFdmV0JyxcclxuICAgICAgICAgICAgY2FuY2VsVGV4dDogJ0hhecSxcidcclxuICAgICAgICAgIH1cclxuICAgICAgICApLnN1YnNjcmliZShzdGF0dXMyID0+IHtcclxuICAgICAgICAgIGlmIChzdGF0dXMyID09PSAnY29uZmlybScpIHtcclxuICAgICAgICAgICAgLy8gw5zDp8O8bmPDvCBzb3J1OiBCaWxlxZ9lbiBmaXJlIMOnxLFrxLHFn8SxIGdlcsOnZWtsZcWfdGlyaWxkaSBtaT9cclxuICAgICAgICAgICAgdGhpcy5jb25maXJtYXRpb24ud2FybihcclxuICAgICAgICAgICAgICAnJyxcclxuICAgICAgICAgICAgICAnQmlsZcWfZW4gZmlyZSDDp8Sxa8SxxZ/EsSBnZXLDp2VrbGXFn3RpcmlsZGkgbWk/JyxcclxuICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICB5ZXNUZXh0OiAnRXZldCcsXHJcbiAgICAgICAgICAgICAgICBjYW5jZWxUZXh0OiAnSGF5xLFyJ1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgKS5zdWJzY3JpYmUoc3RhdHVzMyA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKHN0YXR1czMgPT09ICdjb25maXJtJykge1xyXG4gICAgICAgICAgICAgICAgLy8gVMO8bSBvbmF5bGFyIHZlcmlsZGksIGthemFuIGRlxJ9pxZ9pbWkgacWfbGVtaW5pIGdlcsOnZWtsZcWfdGlyXHJcbiAgICAgICAgICAgICAgICAvLyBUw7xtIHNhdMSxcmxhcsSxbiBJc0NvbnRyb2xsZWQgYWxhbsSxbsSxIGZhbHNlIHlhcFxyXG4gICAgICAgICAgICAgICAgdGhpcy5saW5lcy5mb3JFYWNoKGxpbmUgPT4ge1xyXG4gICAgICAgICAgICAgICAgICBsaW5lLmlzQ29udHJvbGxlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICBsaW5lLmJhdGNoTnVtYmVyID0gJyc7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyBHcmlkJ2kgcmVmcmVzaCBldFxyXG4gICAgICAgICAgICAgICAgdGhpcy5kYXRhR3JpZC5pbnN0YW5jZS5yZWZyZXNoKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmlzRGF0YUxvYWRlZEZyb21EYiA9IGZhbHNlOyAvLyBBcnTEsWsgeWVuaSB2ZXJpIGdpcmlsZWNla1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zY2FubmVkQmFyY29kZUtleXMuY2xlYXIoKTsgLy8gWWVuaSBrYXphbiBpw6dpbiBva3V0dWxtdcWfIGJhcmtvZGxhcsSxIHPEsWbEsXJsYVxyXG4gICAgICAgICAgICAgICAgLy8gUVIgaW5wdXQnYSBmb2N1cyBldFxyXG4gICAgICAgICAgICAgICAgdGhpcy5mb2N1c09uUXJDb2RlKCk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIC8vIHN0YXR1czMgIT09ICdjb25maXJtJyBpc2Ugw7zDp8O8bmPDvCBzb3J1eWEgaGF5xLFyIGRlbmRpLCBpxZ9sZW0gaXB0YWxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICAvLyBzdGF0dXMyICE9PSAnY29uZmlybScgaXNlIGlraW5jaSBzb3J1eWEgaGF5xLFyIGRlbmRpLCBpxZ9sZW0gaXB0YWxcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgICAvLyBzdGF0dXMgIT09ICdjb25maXJtJyBpc2UgaWxrIHNvcnV5YSBoYXnEsXIgZGVuZGksIGnFn2xlbSBpcHRhbFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBmb2N1c09uSXNFbXJpTm8oKSB7XHJcbiAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLm5tYkJveElzRW1yaU5vPy5pbnN0YW5jZS5mb2N1cygpO1xyXG4gICAgICB9LCAwKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZm9jdXNPblFyQ29kZSgpIHtcclxuICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMudHh0Qm94UXJDb2RlPy5pbnN0YW5jZS5mb2N1cygpO1xyXG4gICAgICB9LCAwKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZm9jdXNRUklucHV0KCkge1xyXG4gICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy50eHRCb3hRckNvZGU/Lmluc3RhbmNlLmZvY3VzKCk7XHJcbiAgICAgIH0sIDApO1xyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiIsIjxhYnAtcGFnZSBbYnJlYWRjcnVtYl09XCJmYWxzZVwiPlxyXG4gIDxhYnAtcGFnZS10b29sYmFyLWNvbnRhaW5lciBjbGFzcz1cImNvbFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICA8aDMgY2xhc3M9XCJwYWdlLXRpdGxlXCI+XHJcbiAgICAgICAge3sgJ1VyZXRpbVlvbmV0aW1pOjpGaWxsaW5nQ29udHJvbC5UaXRsZScgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgPC9oMz5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInJvdyB0ZXh0LWxnLWVuZCBwdC0yXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNlwiPlxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXN1Y2Nlc3MgYnRuLXNtXCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJzYXZlKClcIiBbZGlzYWJsZWRdPVwiaXNTYXZlQnV0dG9uRGlzYWJsZWRcIj5cclxuICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtc2F2ZSBtZS0xXCI+PC9pPlxyXG4gICAgICAgICAge3sgJ1VyZXRpbVlvbmV0aW1pOjpGaWxsaW5nQ29udHJvbC5TYXZlJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbC0zXCIgKm5nSWY9XCJzaG93S2F6YW5EZWdpc2ltaUJ1dHRvblwiPlxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLWluZm8gYnRuLXNtXCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJrYXphbkRlZ2lzaW1pKClcIj5cclxuICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtcmVjeWNsZSBtZS0xXCI+PC9pPlxyXG4gICAgICAgICAgS2F6YW4gRGXEn2nFn2ltaVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbC0zXCI+XHJcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4td2FybmluZyBidG4tc21cIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImNsZWFyQWxsKClcIj5cclxuICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtYnJvb20gbWUtMVwiPjwvaT5cclxuICAgICAgICAgIHt7ICdVcmV0aW1Zb25ldGltaTo6RmlsbGluZ0NvbnRyb2wuQ2xlYW4nIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9hYnAtcGFnZS10b29sYmFyLWNvbnRhaW5lcj5cclxuICA8ZGl2IGNsYXNzPVwiY2FyZCBtdC0yXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5XCIgc3R5bGU9XCJoZWlnaHQ6IGNhbGMoMTAwdmggLSAyNDFweCk7IG92ZXJmbG93OiBhdXRvO1wiPlxyXG4gICAgICA8ZGl2IHN0eWxlPVwiZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjtcIj5cclxuICAgICAgICA8ZHgtbnVtYmVyLWJveCAjaXNFbXJpTm9SZWYgY2xhc3M9XCJtZS0xXCIgc3R5bGU9XCJ3aWR0aDoxMDAlO1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidVcmV0aW1Zb25ldGltaTo6RmlsbGluZ0NvbnRyb2wuV29ya09yZGVyTm8nIHwgYWJwTG9jYWxpemF0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICBbKHZhbHVlKV09XCJpc0VtcmlOb1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgKG9uQ2hhbmdlKT1cImdldFByb2R1Y3Rpb25PcmRlcigpXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgKG9uRW50ZXJLZXkpPVwiZ2V0UHJvZHVjdGlvbk9yZGVyKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJzZWFyY2hCYXNpbGRpTWkgfHwgaXNFbXJpQmFya29kdUdlY2VybGlNaVwiPlxyXG4gICAgICAgIDwvZHgtbnVtYmVyLWJveD5cclxuICAgICAgICA8ZHgtYnV0dG9uIHN0eWxlPVwibWFyZ2luLXRvcDogNy41cHg7XCIgXHJcbiAgICAgICAgICAgICAgICAgICBpY29uPVwic2VhcmNoXCIgXHJcbiAgICAgICAgICAgICAgICAgICB0eXBlPVwiZGVmYXVsdFwiIFxyXG4gICAgICAgICAgICAgICAgICAgKG9uQ2xpY2spPVwiZ2V0UHJvZHVjdGlvbk9yZGVyKClcIlxyXG4gICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInNlYXJjaEJhc2lsZGlNaSB8fCBpc0VtcmlCYXJrb2R1R2VjZXJsaU1pXCI+XHJcbiAgICAgICAgPC9keC1idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cIm10LTNcIiAqbmdJZj1cImlzRW1yaUJhcmtvZHVHZWNlcmxpTWlcIj5cclxuICAgICAgICA8ZHgtdGV4dC1ib3ggc3R5bGU9XCJ3aWR0aDoxMDAlO1wiIFxyXG4gICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ1VyZXRpbVlvbmV0aW1pOjpGaWxsaW5nQ29udHJvbC5MaW5lSW5mbycgfCBhYnBMb2NhbGl6YXRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICBbKHZhbHVlKV09XCJoYXRCaWxnaXNpXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJ0cnVlXCI+XHJcbiAgICAgICAgPC9keC10ZXh0LWJveD5cclxuXHJcbiAgICAgICAgICA8ZHgtdGV4dC1ib3ggc3R5bGU9XCJ3aWR0aDoxMDAlO1wiIFxyXG4gICAgICAgICAgICAgICAgICAgICBsYWJlbD1cIkFtYmFsYWogTG90XCJcclxuICAgICAgICAgICAgICAgICAgICAgWyh2YWx1ZSldPVwiYW1iYWxhakxvdFwiIFxyXG4gICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwidHJ1ZVwiPlxyXG4gICAgICAgIDwvZHgtdGV4dC1ib3g+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtdC0zXCIgc3R5bGU9XCJkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyO1wiPlxyXG4gICAgICAgICAgPGR4LXRleHQtYm94ICNxckNvZGVSZWYgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJ3aWR0aDoxMDAlO1wiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWUtMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidVcmV0aW1Zb25ldGltaTo6RmlsbGluZ0NvbnRyb2wuUVJDb2RlJyB8IGFicExvY2FsaXphdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgWyh2YWx1ZSldPVwicXJDb2RlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAob25FbnRlcktleSk9XCJvblFyQ29kZUNoYW5nZSgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ1VyZXRpbVlvbmV0aW1pOjpGaWxsaW5nQ29udHJvbC5RUkNvZGUuUGxhY2Vob2xkZXInIHwgYWJwTG9jYWxpemF0aW9uXCI+XHJcbiAgICAgICAgICA8L2R4LXRleHQtYm94PlxyXG4gICAgICAgICAgPGR4LWJ1dHRvbiBzdHlsZT1cIm1hcmdpbi10b3A6IDcuNXB4O1wiIGljb249XCJwbHVzXCIgdHlwZT1cImRlZmF1bHRcIiAob25DbGljayk9XCJvblFyQ29kZUNoYW5nZSgpXCI+XHJcbiAgICAgICAgICA8L2R4LWJ1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGR4LWRhdGEtZ3JpZCAjZ3JpZExpbmVzIFxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtdC0zXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICBbZGF0YVNvdXJjZV09XCJsaW5lc1wiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgW2NvbHVtbkF1dG9XaWR0aF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtzaG93Qm9yZGVyc109XCJ0cnVlXCI+XHJcbiAgICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJpdGVtQ29kZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbY2FwdGlvbl09XCInVXJldGltWW9uZXRpbWk6OkZpbGxpbmdDb250cm9sLkl0ZW1Db2RlJyB8IGFicExvY2FsaXphdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbYWxsb3dFZGl0aW5nXT1cImZhbHNlXCI+PC9keGktY29sdW1uPlxyXG4gICAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwiaXRlbU5hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW2NhcHRpb25dPVwiJ1VyZXRpbVlvbmV0aW1pOjpGaWxsaW5nQ29udHJvbC5JdGVtTmFtZScgfCBhYnBMb2NhbGl6YXRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW2FsbG93RWRpdGluZ109XCJmYWxzZVwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cImlzQ29udHJvbGxlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbY2FwdGlvbl09XCInVXJldGltWW9uZXRpbWk6OkZpbGxpbmdDb250cm9sLklzQ29udHJvbGxlZCcgfCBhYnBMb2NhbGl6YXRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgZGF0YVR5cGU9XCJib29sZWFuXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFthbGxvd0VkaXRpbmddPVwiZmFsc2VcIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJiYXRjaE51bWJlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbY2FwdGlvbl09XCInVXJldGltWW9uZXRpbWk6OkZpbGxpbmdDb250cm9sLkJhdGNoTnVtYmVyJyB8IGFicExvY2FsaXphdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbYWxsb3dFZGl0aW5nXT1cImZhbHNlXCI+PC9keGktY29sdW1uPlxyXG4gICAgICAgIDwvZHgtZGF0YS1ncmlkPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2FicC1wYWdlPlxyXG4iXX0=
|
|
@@ -209,10 +209,10 @@ export class HitFillingReceiptFromProductionComponent {
|
|
|
209
209
|
}
|
|
210
210
|
}
|
|
211
211
|
HitFillingReceiptFromProductionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: HitFillingReceiptFromProductionComponent, deps: [{ token: i1.HitFillingReceiptFromProductionService }, { token: i2.ConfirmationService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
|
|
212
|
-
HitFillingReceiptFromProductionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: HitFillingReceiptFromProductionComponent, selector: "lib-hit-filling-receipt-from-production", viewQueries: [{ propertyName: "nmbBoxIsEmriNo", first: true, predicate: ["isEmriNoRef"], descendants: true }, { propertyName: "radioPaletTipi", first: true, predicate: ["paletTipiRef"], descendants: true }, { propertyName: "nmbBoxKoliAdet", first: true, predicate: ["koliAdetRef"], descendants: true }], ngImport: i0, template: "<abp-page [breadcrumb]=\"false\">\r\n <abp-page-toolbar-container class=\"col\">\r\n <div class=\"row\">\r\n <h3 class=\"page-title\">\r\n \u00DCretimden Giri\u015F\r\n </h3>\r\n </div>\r\n <div class=\"row text-lg-end pt-2\">\r\n <div class=\"col-6\">\r\n <button class=\"btn btn-success btn-sm\" type=\"button\" (click)=\"save()\" [disabled]=\"isSaveButtonDisabled\">\r\n <i class=\"fa fa-check me-1\"></i>\r\n \u00DCretimden Giri\u015F Yap\r\n </button>\r\n </div>\r\n <div class=\"col-6\">\r\n <button class=\"btn btn-warning btn-sm\" type=\"button\" (click)=\"clearAll()\">\r\n <i class=\"fa fa-broom me-1\"></i>\r\n Temizle\r\n </button>\r\n </div>\r\n </div>\r\n </abp-page-toolbar-container>\r\n\r\n <div class=\"card mt-2\">\r\n <div class=\"card-body\" style=\"height: calc(100vh - 241px); overflow: auto;\">\r\n <!-- Work Order Input -->\r\n <div style=\"display: flex; align-items: center;\">\r\n <dx-number-box #isEmriNoRef class=\"me-1\" style=\"width:100%;\" label=\"\u0130\u015F Emri No\" [(value)]=\"isEmriNo\"\r\n (onChange)=\"getProductionOrder()\" (onEnterKey)=\"getProductionOrder()\" [disabled]=\"isWorkOrderLoaded\">\r\n </dx-number-box>\r\n <dx-button style=\"margin-top: 7.5px;\" icon=\"search\" type=\"default\" (onClick)=\"getProductionOrder()\"\r\n [disabled]=\"isWorkOrderLoaded\">\r\n </dx-button>\r\n </div>\r\n\r\n <!-- Work Order Information -->\r\n <div class=\"mt-3\" *ngIf=\"isWorkOrderLoaded && workOrderInfo\">\r\n <!-- Product Info -->\r\n <div class=\"row\">\r\n <div class=\"col-md-6\">\r\n <dx-text-box label=\"\u00DCr\u00FCn Kodu\" [(value)]=\"workOrderInfo.itemCode\" [disabled]=\"true\">\r\n </dx-text-box>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <dx-text-box label=\"\u00DCr\u00FCn Ad\u0131\" [(value)]=\"workOrderInfo.itemName\" [disabled]=\"true\">\r\n </dx-text-box>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row mt-2\">\r\n <div class=\"col-md-3\">\r\n <dx-number-box \r\n label=\"Planlanan Miktar\" \r\n [(value)]=\"workOrderInfo.plannedQty\" \r\n [disabled]=\"true\">\r\n </dx-number-box>\r\n </div>\r\n <div class=\"col-md-3\">\r\n <dx-number-box \r\n label=\"Tamamlanan Miktar\" \r\n [(value)]=\"workOrderInfo.cmpltQty\" \r\n [disabled]=\"true\">\r\n </dx-number-box>\r\n </div>\r\n <div class=\"col-md-3\">\r\n <dx-text-box \r\n label=\"Depo\" \r\n [(value)]=\"workOrderInfo.warehouse\" \r\n [disabled]=\"true\">\r\n </dx-text-box>\r\n </div>\r\n <div class=\"col-md-3\">\r\n <dx-text-box \r\n label=\"Ambalaj Lot\" \r\n [(value)]=\"workOrderInfo.u_TRKAMBALAJLOT\" \r\n [disabled]=\"true\">\r\n </dx-text-box>\r\n </div>\r\n </div>\r\n\r\n <!-- Pallet Type Selection -->\r\n <div class=\"row mt-3\">\r\n <div class=\"col-md-12\">\r\n <dx-radio-group #paletTipiRef [items]=\"paletTipleri\" layout=\"horizontal\" [(value)]=\"paletTipi\"\r\n (onValueChanged)=\"onPaletTipiChange()\">\r\n </dx-radio-group>\r\n </div>\r\n </div>\r\n\r\n <!-- Koli Count for KISMI Pallet -->\r\n <div class=\"row mt-2\" *ngIf=\"paletTipi === 'KISMI'\">\r\n <div class=\"col-md-6\">\r\n <dx-number-box #koliAdetRef label=\"Koli Adedi\" [(value)]=\"koliAdet\" (onValueChanged)=\"onKoliAdetChange()\"\r\n [min]=\"1\">\r\n </dx-number-box>\r\n </div>\r\n </div>\r\n\r\n <!-- Calculated Total Quantity -->\r\n <div class=\"row mt-2\">\r\n <div class=\"col-md-6\">\r\n <dx-number-box label=\"Toplam Miktar (Adet)\" [(value)]=\"toplamMiktar\" [disabled]=\"true\"\r\n [stylingMode]=\"'filled'\">\r\n </dx-number-box>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <dx-number-box label=\"Koli \u0130\u00E7i Adet\" [(value)]=\"workOrderInfo.salPackUn\" [disabled]=\"true\">\r\n </dx-number-box>\r\n </div>\r\n </div>\r\n\r\n <!-- Quality Status Info -->\r\n <div class=\"row mt-2\" *ngIf=\"workOrderInfo.u_KaliteDurumu\">\r\n <div class=\"col-md-12\">\r\n <div class=\"alert alert-info\" role=\"alert\">\r\n <strong>Kalite Durumu:</strong> {{ workOrderInfo.u_KaliteDurumu }}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Receipt History -->\r\n <div class=\"row mt-3\">\r\n <div class=\"col-12\">\r\n <div class=\"fw-semibold mb-1\" style=\"font-size: 13px;\">\r\n \u00DCretimden Giri\u015F Hareketleri\r\n </div>\r\n <dx-data-grid [dataSource]=\"workOrderInfo.receiptHistory\" [showBorders]=\"true\" [columnAutoWidth]=\"true\"\r\n [wordWrapEnabled]=\"false\" [rowAlternationEnabled]=\"true\" [hoverStateEnabled]=\"true\"\r\n [noDataText]=\"'Hen\u00FCz giri\u015F hareketi bulunmamaktad\u0131r.'\" [height]=\"'auto'\">\r\n <dxo-scrolling mode=\"standard\"></dxo-scrolling>\r\n <dxo-paging [enabled]=\"false\"></dxo-paging>\r\n <dxi-column caption=\"#\" name=\"rowNum\" [width]=\"40\" alignment=\"center\" [calculateCellValue]=\"calcRowIndex\"></dxi-column>\r\n <dxi-column dataField=\"docNum\" caption=\"Belge No\" [minWidth]=\"110\" alignment=\"center\"></dxi-column>\r\n <dxi-column dataField=\"packQuantity\" caption=\"Koli Adedi\" dataType=\"number\" [minWidth]=\"75\" alignment=\"right\"></dxi-column>\r\n <dxi-column dataField=\"whsName\" caption=\"Depo\" [minWidth]=\"100\"></dxi-column>\r\n <dxi-column dataField=\"docStatus\" caption=\"Durum\" [minWidth]=\"105\" alignment=\"center\"\r\n [calculateCellValue]=\"calcDocStatus\">\r\n </dxi-column>\r\n <dxi-column dataField=\"userCode\" caption=\"Kullan\u0131c\u0131\" [minWidth]=\"80\" alignment=\"center\"></dxi-column>\r\n <dxo-summary>\r\n <dxi-total-item column=\"docNum\" summaryType=\"count\" displayFormat=\"Toplam\"></dxi-total-item>\r\n <dxi-total-item column=\"packQuantity\" summaryType=\"sum\" displayFormat=\"{0}\" [valueFormat]=\"formatNumber\"></dxi-total-item>\r\n </dxo-summary>\r\n </dx-data-grid>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</abp-page>", styles: [".page-title{margin:0;padding:0}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.PageComponent, selector: "abp-page", inputs: ["title", "toolbar", "breadcrumb"] }, { kind: "component", type: i4.PageToolbarContainerComponent, selector: "abp-page-toolbar-container" }, { kind: "component", type: i5.DxButtonComponent, selector: "dx-button", inputs: ["accessKey", "activeStateEnabled", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "icon", "rtlEnabled", "stylingMode", "tabIndex", "template", "text", "type", "useSubmitBehavior", "validationGroup", "visible", "width"], outputs: ["onClick", "onContentReady", "onDisposing", "onInitialized", "onOptionChanged", "accessKeyChange", "activeStateEnabledChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "iconChange", "rtlEnabledChange", "stylingModeChange", "tabIndexChange", "templateChange", "textChange", "typeChange", "useSubmitBehaviorChange", "validationGroupChange", "visibleChange", "widthChange"] }, { kind: "component", type: i5.DxDataGridComponent, selector: "dx-data-grid", inputs: ["accessKey", "activeStateEnabled", "allowColumnReordering", "allowColumnResizing", "autoNavigateToFocusedRow", "cacheEnabled", "cellHintEnabled", "columnAutoWidth", "columnChooser", "columnFixing", "columnHidingEnabled", "columnMinWidth", "columnResizingMode", "columns", "columnWidth", "customizeColumns", "dataRowTemplate", "dataSource", "dateSerializationFormat", "disabled", "editing", "elementAttr", "errorRowEnabled", "export", "filterBuilder", "filterBuilderPopup", "filterPanel", "filterRow", "filterSyncEnabled", "filterValue", "focusedColumnIndex", "focusedRowEnabled", "focusedRowIndex", "focusedRowKey", "grouping", "groupPanel", "headerFilter", "height", "highlightChanges", "hint", "hoverStateEnabled", "keyboardNavigation", "keyExpr", "loadPanel", "masterDetail", "noDataText", "pager", "paging", "remoteOperations", "renderAsync", "repaintChangesOnly", "rowAlternationEnabled", "rowDragging", "rowTemplate", "rtlEnabled", "scrolling", "searchPanel", "selectedRowKeys", "selection", "selectionFilter", "showBorders", "showColumnHeaders", "showColumnLines", "showRowLines", "sortByGroupSummaryInfo", "sorting", "stateStoring", "summary", "syncLookupFilterValues", "tabIndex", "toolbar", "twoWayBindingEnabled", "visible", "width", "wordWrapEnabled"], outputs: ["onAdaptiveDetailRowPreparing", "onCellClick", "onCellDblClick", "onCellHoverChanged", "onCellPrepared", "onContentReady", "onContextMenuPreparing", "onDataErrorOccurred", "onDisposing", "onEditCanceled", "onEditCanceling", "onEditingStart", "onEditorPrepared", "onEditorPreparing", "onExporting", "onFocusedCellChanged", "onFocusedCellChanging", "onFocusedRowChanged", "onFocusedRowChanging", "onInitialized", "onInitNewRow", "onKeyDown", "onOptionChanged", "onRowClick", "onRowCollapsed", "onRowCollapsing", "onRowDblClick", "onRowExpanded", "onRowExpanding", "onRowInserted", "onRowInserting", "onRowPrepared", "onRowRemoved", "onRowRemoving", "onRowUpdated", "onRowUpdating", "onRowValidating", "onSaved", "onSaving", "onSelectionChanged", "onToolbarPreparing", "accessKeyChange", "activeStateEnabledChange", "allowColumnReorderingChange", "allowColumnResizingChange", "autoNavigateToFocusedRowChange", "cacheEnabledChange", "cellHintEnabledChange", "columnAutoWidthChange", "columnChooserChange", "columnFixingChange", "columnHidingEnabledChange", "columnMinWidthChange", "columnResizingModeChange", "columnsChange", "columnWidthChange", "customizeColumnsChange", "dataRowTemplateChange", "dataSourceChange", "dateSerializationFormatChange", "disabledChange", "editingChange", "elementAttrChange", "errorRowEnabledChange", "exportChange", "filterBuilderChange", "filterBuilderPopupChange", "filterPanelChange", "filterRowChange", "filterSyncEnabledChange", "filterValueChange", "focusedColumnIndexChange", "focusedRowEnabledChange", "focusedRowIndexChange", "focusedRowKeyChange", "groupingChange", "groupPanelChange", "headerFilterChange", "heightChange", "highlightChangesChange", "hintChange", "hoverStateEnabledChange", "keyboardNavigationChange", "keyExprChange", "loadPanelChange", "masterDetailChange", "noDataTextChange", "pagerChange", "pagingChange", "remoteOperationsChange", "renderAsyncChange", "repaintChangesOnlyChange", "rowAlternationEnabledChange", "rowDraggingChange", "rowTemplateChange", "rtlEnabledChange", "scrollingChange", "searchPanelChange", "selectedRowKeysChange", "selectionChange", "selectionFilterChange", "showBordersChange", "showColumnHeadersChange", "showColumnLinesChange", "showRowLinesChange", "sortByGroupSummaryInfoChange", "sortingChange", "stateStoringChange", "summaryChange", "syncLookupFilterValuesChange", "tabIndexChange", "toolbarChange", "twoWayBindingEnabledChange", "visibleChange", "widthChange", "wordWrapEnabledChange"] }, { kind: "component", type: i6.DxiColumnComponent, selector: "dxi-column", inputs: ["alignment", "allowEditing", "allowExporting", "allowFiltering", "allowFixing", "allowGrouping", "allowHeaderFiltering", "allowHiding", "allowReordering", "allowResizing", "allowSearch", "allowSorting", "autoExpandGroup", "buttons", "calculateCellValue", "calculateDisplayValue", "calculateFilterExpression", "calculateGroupValue", "calculateSortValue", "caption", "cellTemplate", "columns", "cssClass", "customizeText", "dataField", "dataType", "editCellTemplate", "editorOptions", "encodeHtml", "falseText", "filterOperations", "filterType", "filterValue", "filterValues", "fixed", "fixedPosition", "format", "formItem", "groupCellTemplate", "groupIndex", "headerCellTemplate", "headerFilter", "hidingPriority", "isBand", "lookup", "minWidth", "name", "ownerBand", "renderAsync", "selectedFilterOperation", "setCellValue", "showEditorAlways", "showInColumnChooser", "showWhenGrouped", "sortIndex", "sortingMethod", "sortOrder", "trueText", "type", "validationRules", "visible", "visibleIndex", "width"], outputs: ["filterValueChange", "filterValuesChange", "groupIndexChange", "selectedFilterOperationChange", "sortIndexChange", "sortOrderChange", "visibleChange", "visibleIndexChange"] }, { kind: "component", type: i6.DxoPagingComponent, selector: "dxo-paging", inputs: ["enabled", "pageIndex", "pageSize"], outputs: ["pageIndexChange", "pageSizeChange"] }, { kind: "component", type: i6.DxoScrollingComponent, selector: "dxo-scrolling", inputs: ["columnRenderingMode", "mode", "preloadEnabled", "renderAsync", "rowRenderingMode", "scrollByContent", "scrollByThumb", "showScrollbar", "useNative"] }, { kind: "component", type: i6.DxoSummaryComponent, selector: "dxo-summary", inputs: ["calculateCustomSummary", "groupItems", "recalculateWhileEditing", "skipEmptyValues", "texts", "totalItems"] }, { kind: "component", type: i6.DxiTotalItemComponent, selector: "dxi-total-item", inputs: ["alignment", "column", "cssClass", "customizeText", "displayFormat", "name", "showInColumn", "skipEmptyValues", "summaryType", "valueFormat"] }, { kind: "component", type: i5.DxNumberBoxComponent, selector: "dx-number-box", inputs: ["accessKey", "activeStateEnabled", "buttons", "disabled", "elementAttr", "focusStateEnabled", "format", "height", "hint", "hoverStateEnabled", "inputAttr", "invalidValueMessage", "isValid", "label", "labelMode", "max", "min", "mode", "name", "placeholder", "readOnly", "rtlEnabled", "showClearButton", "showSpinButtons", "step", "stylingMode", "tabIndex", "text", "useLargeSpinButtons", "validationError", "validationErrors", "validationMessageMode", "validationMessagePosition", "validationStatus", "value", "valueChangeEvent", "visible", "width"], outputs: ["onChange", "onContentReady", "onCopy", "onCut", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onKeyDown", "onKeyUp", "onOptionChanged", "onPaste", "onValueChanged", "accessKeyChange", "activeStateEnabledChange", "buttonsChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "formatChange", "heightChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "invalidValueMessageChange", "isValidChange", "labelChange", "labelModeChange", "maxChange", "minChange", "modeChange", "nameChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "showClearButtonChange", "showSpinButtonsChange", "stepChange", "stylingModeChange", "tabIndexChange", "textChange", "useLargeSpinButtonsChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationMessagePositionChange", "validationStatusChange", "valueChange", "valueChangeEventChange", "visibleChange", "widthChange", "onBlur"] }, { kind: "component", type: i5.DxTextBoxComponent, selector: "dx-text-box", inputs: ["accessKey", "activeStateEnabled", "buttons", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "inputAttr", "isValid", "label", "labelMode", "mask", "maskChar", "maskInvalidMessage", "maskRules", "maxLength", "mode", "name", "placeholder", "readOnly", "rtlEnabled", "showClearButton", "showMaskMode", "spellcheck", "stylingMode", "tabIndex", "text", "useMaskedValue", "validationError", "validationErrors", "validationMessageMode", "validationMessagePosition", "validationStatus", "value", "valueChangeEvent", "visible", "width"], outputs: ["onChange", "onContentReady", "onCopy", "onCut", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onKeyDown", "onKeyUp", "onOptionChanged", "onPaste", "onValueChanged", "accessKeyChange", "activeStateEnabledChange", "buttonsChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "isValidChange", "labelChange", "labelModeChange", "maskChange", "maskCharChange", "maskInvalidMessageChange", "maskRulesChange", "maxLengthChange", "modeChange", "nameChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "showClearButtonChange", "showMaskModeChange", "spellcheckChange", "stylingModeChange", "tabIndexChange", "textChange", "useMaskedValueChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationMessagePositionChange", "validationStatusChange", "valueChange", "valueChangeEventChange", "visibleChange", "widthChange", "onBlur"] }, { kind: "component", type: i7.DxRadioGroupComponent, selector: "dx-radio-group", inputs: ["accessKey", "activeStateEnabled", "dataSource", "disabled", "displayExpr", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "isValid", "items", "itemTemplate", "layout", "name", "readOnly", "rtlEnabled", "tabIndex", "validationError", "validationErrors", "validationMessageMode", "validationMessagePosition", "validationStatus", "value", "valueExpr", "visible", "width"], outputs: ["onContentReady", "onDisposing", "onInitialized", "onOptionChanged", "onValueChanged", "accessKeyChange", "activeStateEnabledChange", "dataSourceChange", "disabledChange", "displayExprChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "isValidChange", "itemsChange", "itemTemplateChange", "layoutChange", "nameChange", "readOnlyChange", "rtlEnabledChange", "tabIndexChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationMessagePositionChange", "validationStatusChange", "valueChange", "valueExprChange", "visibleChange", "widthChange", "onBlur"] }] });
|
|
212
|
+
HitFillingReceiptFromProductionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: HitFillingReceiptFromProductionComponent, selector: "lib-hit-filling-receipt-from-production", viewQueries: [{ propertyName: "nmbBoxIsEmriNo", first: true, predicate: ["isEmriNoRef"], descendants: true }, { propertyName: "radioPaletTipi", first: true, predicate: ["paletTipiRef"], descendants: true }, { propertyName: "nmbBoxKoliAdet", first: true, predicate: ["koliAdetRef"], descendants: true }], ngImport: i0, template: "<abp-page [breadcrumb]=\"false\">\r\n <abp-page-toolbar-container class=\"col\">\r\n <div class=\"row\">\r\n <h3 class=\"page-title\">\r\n \u00DCretimden Giri\u015F\r\n </h3>\r\n </div>\r\n <div class=\"row text-lg-end pt-2\">\r\n <div class=\"col-6\">\r\n <button class=\"btn btn-success btn-sm\" type=\"button\" (click)=\"save()\" [disabled]=\"isSaveButtonDisabled\">\r\n <i class=\"fa fa-check me-1\"></i>\r\n \u00DCretimden Giri\u015F Yap\r\n </button>\r\n </div>\r\n <div class=\"col-6\">\r\n <button class=\"btn btn-warning btn-sm\" type=\"button\" (click)=\"clearAll()\">\r\n <i class=\"fa fa-broom me-1\"></i>\r\n Temizle\r\n </button>\r\n </div>\r\n </div>\r\n </abp-page-toolbar-container>\r\n\r\n <div class=\"card mt-2\">\r\n <div class=\"card-body\" style=\"height: calc(100vh - 241px); overflow: auto;\">\r\n <!-- Work Order Input -->\r\n <div style=\"display: flex; align-items: center;\">\r\n <dx-number-box #isEmriNoRef class=\"me-1\" style=\"width:100%;\" label=\"\u0130\u015F Emri No\" [(value)]=\"isEmriNo\"\r\n (onChange)=\"getProductionOrder()\" (onEnterKey)=\"getProductionOrder()\" [disabled]=\"isWorkOrderLoaded\">\r\n </dx-number-box>\r\n <dx-button style=\"margin-top: 7.5px;\" icon=\"search\" type=\"default\" (onClick)=\"getProductionOrder()\"\r\n [disabled]=\"isWorkOrderLoaded\">\r\n </dx-button>\r\n </div>\r\n\r\n <!-- Work Order Information -->\r\n <div class=\"mt-3\" *ngIf=\"isWorkOrderLoaded && workOrderInfo\">\r\n <!-- Product Info -->\r\n <div class=\"row\">\r\n <div class=\"col-md-6\">\r\n <dx-text-box label=\"\u00DCr\u00FCn Kodu\" [(value)]=\"workOrderInfo.itemCode\" [disabled]=\"true\">\r\n </dx-text-box>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <dx-text-box label=\"\u00DCr\u00FCn Ad\u0131\" [(value)]=\"workOrderInfo.itemName\" [disabled]=\"true\">\r\n </dx-text-box>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row mt-2\">\r\n <div class=\"col-md-3\">\r\n <dx-number-box \r\n label=\"Planlanan Miktar\" \r\n [(value)]=\"workOrderInfo.plannedQty\" \r\n [disabled]=\"true\">\r\n </dx-number-box>\r\n </div>\r\n <div class=\"col-md-3\">\r\n <dx-number-box \r\n label=\"Tamamlanan Miktar\" \r\n [(value)]=\"workOrderInfo.cmpltQty\" \r\n [disabled]=\"true\">\r\n </dx-number-box>\r\n </div>\r\n <div class=\"col-md-3\">\r\n <dx-text-box \r\n label=\"Depo\" \r\n [(value)]=\"workOrderInfo.warehouse\" \r\n [disabled]=\"true\">\r\n </dx-text-box>\r\n </div>\r\n <div class=\"col-md-3\">\r\n <dx-text-box \r\n label=\"Ambalaj Lot\" \r\n [(value)]=\"workOrderInfo.u_TRKAMBALAJLOT\" \r\n [disabled]=\"true\">\r\n </dx-text-box>\r\n </div>\r\n </div>\r\n\r\n <!-- Pallet Type Selection -->\r\n <div class=\"row mt-3\">\r\n <div class=\"col-md-12\">\r\n <dx-radio-group #paletTipiRef [items]=\"paletTipleri\" layout=\"horizontal\" [(value)]=\"paletTipi\"\r\n (onValueChanged)=\"onPaletTipiChange()\">\r\n </dx-radio-group>\r\n </div>\r\n </div>\r\n\r\n <!-- Koli Count for KISMI Pallet -->\r\n <div class=\"row mt-2\" *ngIf=\"paletTipi === 'KISMI'\">\r\n <div class=\"col-md-6\">\r\n <dx-number-box #koliAdetRef label=\"Koli Adedi\" [(value)]=\"koliAdet\" (onValueChanged)=\"onKoliAdetChange()\"\r\n [min]=\"1\">\r\n </dx-number-box>\r\n </div>\r\n </div>\r\n\r\n <!-- Calculated Total Quantity -->\r\n <div class=\"row mt-2\">\r\n <div class=\"col-md-6\">\r\n <dx-number-box label=\"Toplam Miktar (Adet)\" [(value)]=\"toplamMiktar\" [disabled]=\"true\"\r\n [stylingMode]=\"'filled'\">\r\n </dx-number-box>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <dx-number-box label=\"Koli \u0130\u00E7i Adet\" [(value)]=\"workOrderInfo.salPackUn\" [disabled]=\"true\">\r\n </dx-number-box>\r\n </div>\r\n </div>\r\n\r\n <!-- Quality Status Info -->\r\n <div class=\"row mt-2\" *ngIf=\"workOrderInfo.u_KaliteDurumu\">\r\n <div class=\"col-md-12\">\r\n <div class=\"alert alert-info\" role=\"alert\">\r\n <strong>Kalite Durumu:</strong> {{ workOrderInfo.u_KaliteDurumu }}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Receipt History -->\r\n <div class=\"row mt-3\">\r\n <div class=\"col-12\">\r\n <div class=\"fw-semibold mb-1\" style=\"font-size: 13px;\">\r\n \u00DCretimden Giri\u015F Hareketleri\r\n </div>\r\n <dx-data-grid [dataSource]=\"workOrderInfo.receiptHistory\" [showBorders]=\"true\" [columnAutoWidth]=\"true\"\r\n [wordWrapEnabled]=\"false\" [rowAlternationEnabled]=\"true\" [hoverStateEnabled]=\"true\"\r\n [noDataText]=\"'Hen\u00FCz giri\u015F hareketi bulunmamaktad\u0131r.'\" [height]=\"'auto'\">\r\n <dxo-scrolling mode=\"standard\"></dxo-scrolling>\r\n <dxo-paging [enabled]=\"false\"></dxo-paging>\r\n <dxi-column caption=\"#\" name=\"rowNum\" [width]=\"40\" alignment=\"center\" [calculateCellValue]=\"calcRowIndex\"></dxi-column>\r\n <dxi-column dataField=\"docNum\" caption=\"Belge No\" [minWidth]=\"110\" alignment=\"center\"></dxi-column>\r\n <dxi-column dataField=\"batchNum\" caption=\"Parti No\" [minWidth]=\"130\"></dxi-column>\r\n <dxi-column dataField=\"packQuantity\" caption=\"Koli Adedi\" dataType=\"number\" [minWidth]=\"75\" alignment=\"right\"></dxi-column>\r\n <dxi-column dataField=\"whsName\" caption=\"Depo\" [minWidth]=\"100\"></dxi-column>\r\n <dxi-column dataField=\"docStatus\" caption=\"Durum\" [minWidth]=\"105\" alignment=\"center\"\r\n [calculateCellValue]=\"calcDocStatus\">\r\n </dxi-column>\r\n <dxi-column dataField=\"userCode\" caption=\"Kullan\u0131c\u0131\" [minWidth]=\"80\" alignment=\"center\"></dxi-column>\r\n <dxo-summary>\r\n <dxi-total-item column=\"docNum\" summaryType=\"count\" displayFormat=\"Toplam\"></dxi-total-item>\r\n <dxi-total-item column=\"packQuantity\" summaryType=\"sum\" displayFormat=\"{0}\" [valueFormat]=\"formatNumber\"></dxi-total-item>\r\n </dxo-summary>\r\n </dx-data-grid>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</abp-page>", styles: [".page-title{margin:0;padding:0}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.PageComponent, selector: "abp-page", inputs: ["title", "toolbar", "breadcrumb"] }, { kind: "component", type: i4.PageToolbarContainerComponent, selector: "abp-page-toolbar-container" }, { kind: "component", type: i5.DxButtonComponent, selector: "dx-button", inputs: ["accessKey", "activeStateEnabled", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "icon", "rtlEnabled", "stylingMode", "tabIndex", "template", "text", "type", "useSubmitBehavior", "validationGroup", "visible", "width"], outputs: ["onClick", "onContentReady", "onDisposing", "onInitialized", "onOptionChanged", "accessKeyChange", "activeStateEnabledChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "iconChange", "rtlEnabledChange", "stylingModeChange", "tabIndexChange", "templateChange", "textChange", "typeChange", "useSubmitBehaviorChange", "validationGroupChange", "visibleChange", "widthChange"] }, { kind: "component", type: i5.DxDataGridComponent, selector: "dx-data-grid", inputs: ["accessKey", "activeStateEnabled", "allowColumnReordering", "allowColumnResizing", "autoNavigateToFocusedRow", "cacheEnabled", "cellHintEnabled", "columnAutoWidth", "columnChooser", "columnFixing", "columnHidingEnabled", "columnMinWidth", "columnResizingMode", "columns", "columnWidth", "customizeColumns", "dataRowTemplate", "dataSource", "dateSerializationFormat", "disabled", "editing", "elementAttr", "errorRowEnabled", "export", "filterBuilder", "filterBuilderPopup", "filterPanel", "filterRow", "filterSyncEnabled", "filterValue", "focusedColumnIndex", "focusedRowEnabled", "focusedRowIndex", "focusedRowKey", "grouping", "groupPanel", "headerFilter", "height", "highlightChanges", "hint", "hoverStateEnabled", "keyboardNavigation", "keyExpr", "loadPanel", "masterDetail", "noDataText", "pager", "paging", "remoteOperations", "renderAsync", "repaintChangesOnly", "rowAlternationEnabled", "rowDragging", "rowTemplate", "rtlEnabled", "scrolling", "searchPanel", "selectedRowKeys", "selection", "selectionFilter", "showBorders", "showColumnHeaders", "showColumnLines", "showRowLines", "sortByGroupSummaryInfo", "sorting", "stateStoring", "summary", "syncLookupFilterValues", "tabIndex", "toolbar", "twoWayBindingEnabled", "visible", "width", "wordWrapEnabled"], outputs: ["onAdaptiveDetailRowPreparing", "onCellClick", "onCellDblClick", "onCellHoverChanged", "onCellPrepared", "onContentReady", "onContextMenuPreparing", "onDataErrorOccurred", "onDisposing", "onEditCanceled", "onEditCanceling", "onEditingStart", "onEditorPrepared", "onEditorPreparing", "onExporting", "onFocusedCellChanged", "onFocusedCellChanging", "onFocusedRowChanged", "onFocusedRowChanging", "onInitialized", "onInitNewRow", "onKeyDown", "onOptionChanged", "onRowClick", "onRowCollapsed", "onRowCollapsing", "onRowDblClick", "onRowExpanded", "onRowExpanding", "onRowInserted", "onRowInserting", "onRowPrepared", "onRowRemoved", "onRowRemoving", "onRowUpdated", "onRowUpdating", "onRowValidating", "onSaved", "onSaving", "onSelectionChanged", "onToolbarPreparing", "accessKeyChange", "activeStateEnabledChange", "allowColumnReorderingChange", "allowColumnResizingChange", "autoNavigateToFocusedRowChange", "cacheEnabledChange", "cellHintEnabledChange", "columnAutoWidthChange", "columnChooserChange", "columnFixingChange", "columnHidingEnabledChange", "columnMinWidthChange", "columnResizingModeChange", "columnsChange", "columnWidthChange", "customizeColumnsChange", "dataRowTemplateChange", "dataSourceChange", "dateSerializationFormatChange", "disabledChange", "editingChange", "elementAttrChange", "errorRowEnabledChange", "exportChange", "filterBuilderChange", "filterBuilderPopupChange", "filterPanelChange", "filterRowChange", "filterSyncEnabledChange", "filterValueChange", "focusedColumnIndexChange", "focusedRowEnabledChange", "focusedRowIndexChange", "focusedRowKeyChange", "groupingChange", "groupPanelChange", "headerFilterChange", "heightChange", "highlightChangesChange", "hintChange", "hoverStateEnabledChange", "keyboardNavigationChange", "keyExprChange", "loadPanelChange", "masterDetailChange", "noDataTextChange", "pagerChange", "pagingChange", "remoteOperationsChange", "renderAsyncChange", "repaintChangesOnlyChange", "rowAlternationEnabledChange", "rowDraggingChange", "rowTemplateChange", "rtlEnabledChange", "scrollingChange", "searchPanelChange", "selectedRowKeysChange", "selectionChange", "selectionFilterChange", "showBordersChange", "showColumnHeadersChange", "showColumnLinesChange", "showRowLinesChange", "sortByGroupSummaryInfoChange", "sortingChange", "stateStoringChange", "summaryChange", "syncLookupFilterValuesChange", "tabIndexChange", "toolbarChange", "twoWayBindingEnabledChange", "visibleChange", "widthChange", "wordWrapEnabledChange"] }, { kind: "component", type: i6.DxiColumnComponent, selector: "dxi-column", inputs: ["alignment", "allowEditing", "allowExporting", "allowFiltering", "allowFixing", "allowGrouping", "allowHeaderFiltering", "allowHiding", "allowReordering", "allowResizing", "allowSearch", "allowSorting", "autoExpandGroup", "buttons", "calculateCellValue", "calculateDisplayValue", "calculateFilterExpression", "calculateGroupValue", "calculateSortValue", "caption", "cellTemplate", "columns", "cssClass", "customizeText", "dataField", "dataType", "editCellTemplate", "editorOptions", "encodeHtml", "falseText", "filterOperations", "filterType", "filterValue", "filterValues", "fixed", "fixedPosition", "format", "formItem", "groupCellTemplate", "groupIndex", "headerCellTemplate", "headerFilter", "hidingPriority", "isBand", "lookup", "minWidth", "name", "ownerBand", "renderAsync", "selectedFilterOperation", "setCellValue", "showEditorAlways", "showInColumnChooser", "showWhenGrouped", "sortIndex", "sortingMethod", "sortOrder", "trueText", "type", "validationRules", "visible", "visibleIndex", "width"], outputs: ["filterValueChange", "filterValuesChange", "groupIndexChange", "selectedFilterOperationChange", "sortIndexChange", "sortOrderChange", "visibleChange", "visibleIndexChange"] }, { kind: "component", type: i6.DxoPagingComponent, selector: "dxo-paging", inputs: ["enabled", "pageIndex", "pageSize"], outputs: ["pageIndexChange", "pageSizeChange"] }, { kind: "component", type: i6.DxoScrollingComponent, selector: "dxo-scrolling", inputs: ["columnRenderingMode", "mode", "preloadEnabled", "renderAsync", "rowRenderingMode", "scrollByContent", "scrollByThumb", "showScrollbar", "useNative"] }, { kind: "component", type: i6.DxoSummaryComponent, selector: "dxo-summary", inputs: ["calculateCustomSummary", "groupItems", "recalculateWhileEditing", "skipEmptyValues", "texts", "totalItems"] }, { kind: "component", type: i6.DxiTotalItemComponent, selector: "dxi-total-item", inputs: ["alignment", "column", "cssClass", "customizeText", "displayFormat", "name", "showInColumn", "skipEmptyValues", "summaryType", "valueFormat"] }, { kind: "component", type: i5.DxNumberBoxComponent, selector: "dx-number-box", inputs: ["accessKey", "activeStateEnabled", "buttons", "disabled", "elementAttr", "focusStateEnabled", "format", "height", "hint", "hoverStateEnabled", "inputAttr", "invalidValueMessage", "isValid", "label", "labelMode", "max", "min", "mode", "name", "placeholder", "readOnly", "rtlEnabled", "showClearButton", "showSpinButtons", "step", "stylingMode", "tabIndex", "text", "useLargeSpinButtons", "validationError", "validationErrors", "validationMessageMode", "validationMessagePosition", "validationStatus", "value", "valueChangeEvent", "visible", "width"], outputs: ["onChange", "onContentReady", "onCopy", "onCut", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onKeyDown", "onKeyUp", "onOptionChanged", "onPaste", "onValueChanged", "accessKeyChange", "activeStateEnabledChange", "buttonsChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "formatChange", "heightChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "invalidValueMessageChange", "isValidChange", "labelChange", "labelModeChange", "maxChange", "minChange", "modeChange", "nameChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "showClearButtonChange", "showSpinButtonsChange", "stepChange", "stylingModeChange", "tabIndexChange", "textChange", "useLargeSpinButtonsChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationMessagePositionChange", "validationStatusChange", "valueChange", "valueChangeEventChange", "visibleChange", "widthChange", "onBlur"] }, { kind: "component", type: i5.DxTextBoxComponent, selector: "dx-text-box", inputs: ["accessKey", "activeStateEnabled", "buttons", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "inputAttr", "isValid", "label", "labelMode", "mask", "maskChar", "maskInvalidMessage", "maskRules", "maxLength", "mode", "name", "placeholder", "readOnly", "rtlEnabled", "showClearButton", "showMaskMode", "spellcheck", "stylingMode", "tabIndex", "text", "useMaskedValue", "validationError", "validationErrors", "validationMessageMode", "validationMessagePosition", "validationStatus", "value", "valueChangeEvent", "visible", "width"], outputs: ["onChange", "onContentReady", "onCopy", "onCut", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onKeyDown", "onKeyUp", "onOptionChanged", "onPaste", "onValueChanged", "accessKeyChange", "activeStateEnabledChange", "buttonsChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "isValidChange", "labelChange", "labelModeChange", "maskChange", "maskCharChange", "maskInvalidMessageChange", "maskRulesChange", "maxLengthChange", "modeChange", "nameChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "showClearButtonChange", "showMaskModeChange", "spellcheckChange", "stylingModeChange", "tabIndexChange", "textChange", "useMaskedValueChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationMessagePositionChange", "validationStatusChange", "valueChange", "valueChangeEventChange", "visibleChange", "widthChange", "onBlur"] }, { kind: "component", type: i7.DxRadioGroupComponent, selector: "dx-radio-group", inputs: ["accessKey", "activeStateEnabled", "dataSource", "disabled", "displayExpr", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "isValid", "items", "itemTemplate", "layout", "name", "readOnly", "rtlEnabled", "tabIndex", "validationError", "validationErrors", "validationMessageMode", "validationMessagePosition", "validationStatus", "value", "valueExpr", "visible", "width"], outputs: ["onContentReady", "onDisposing", "onInitialized", "onOptionChanged", "onValueChanged", "accessKeyChange", "activeStateEnabledChange", "dataSourceChange", "disabledChange", "displayExprChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "isValidChange", "itemsChange", "itemTemplateChange", "layoutChange", "nameChange", "readOnlyChange", "rtlEnabledChange", "tabIndexChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationMessagePositionChange", "validationStatusChange", "valueChange", "valueExprChange", "visibleChange", "widthChange", "onBlur"] }] });
|
|
213
213
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: HitFillingReceiptFromProductionComponent, decorators: [{
|
|
214
214
|
type: Component,
|
|
215
|
-
args: [{ selector: 'lib-hit-filling-receipt-from-production', template: "<abp-page [breadcrumb]=\"false\">\r\n <abp-page-toolbar-container class=\"col\">\r\n <div class=\"row\">\r\n <h3 class=\"page-title\">\r\n \u00DCretimden Giri\u015F\r\n </h3>\r\n </div>\r\n <div class=\"row text-lg-end pt-2\">\r\n <div class=\"col-6\">\r\n <button class=\"btn btn-success btn-sm\" type=\"button\" (click)=\"save()\" [disabled]=\"isSaveButtonDisabled\">\r\n <i class=\"fa fa-check me-1\"></i>\r\n \u00DCretimden Giri\u015F Yap\r\n </button>\r\n </div>\r\n <div class=\"col-6\">\r\n <button class=\"btn btn-warning btn-sm\" type=\"button\" (click)=\"clearAll()\">\r\n <i class=\"fa fa-broom me-1\"></i>\r\n Temizle\r\n </button>\r\n </div>\r\n </div>\r\n </abp-page-toolbar-container>\r\n\r\n <div class=\"card mt-2\">\r\n <div class=\"card-body\" style=\"height: calc(100vh - 241px); overflow: auto;\">\r\n <!-- Work Order Input -->\r\n <div style=\"display: flex; align-items: center;\">\r\n <dx-number-box #isEmriNoRef class=\"me-1\" style=\"width:100%;\" label=\"\u0130\u015F Emri No\" [(value)]=\"isEmriNo\"\r\n (onChange)=\"getProductionOrder()\" (onEnterKey)=\"getProductionOrder()\" [disabled]=\"isWorkOrderLoaded\">\r\n </dx-number-box>\r\n <dx-button style=\"margin-top: 7.5px;\" icon=\"search\" type=\"default\" (onClick)=\"getProductionOrder()\"\r\n [disabled]=\"isWorkOrderLoaded\">\r\n </dx-button>\r\n </div>\r\n\r\n <!-- Work Order Information -->\r\n <div class=\"mt-3\" *ngIf=\"isWorkOrderLoaded && workOrderInfo\">\r\n <!-- Product Info -->\r\n <div class=\"row\">\r\n <div class=\"col-md-6\">\r\n <dx-text-box label=\"\u00DCr\u00FCn Kodu\" [(value)]=\"workOrderInfo.itemCode\" [disabled]=\"true\">\r\n </dx-text-box>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <dx-text-box label=\"\u00DCr\u00FCn Ad\u0131\" [(value)]=\"workOrderInfo.itemName\" [disabled]=\"true\">\r\n </dx-text-box>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row mt-2\">\r\n <div class=\"col-md-3\">\r\n <dx-number-box \r\n label=\"Planlanan Miktar\" \r\n [(value)]=\"workOrderInfo.plannedQty\" \r\n [disabled]=\"true\">\r\n </dx-number-box>\r\n </div>\r\n <div class=\"col-md-3\">\r\n <dx-number-box \r\n label=\"Tamamlanan Miktar\" \r\n [(value)]=\"workOrderInfo.cmpltQty\" \r\n [disabled]=\"true\">\r\n </dx-number-box>\r\n </div>\r\n <div class=\"col-md-3\">\r\n <dx-text-box \r\n label=\"Depo\" \r\n [(value)]=\"workOrderInfo.warehouse\" \r\n [disabled]=\"true\">\r\n </dx-text-box>\r\n </div>\r\n <div class=\"col-md-3\">\r\n <dx-text-box \r\n label=\"Ambalaj Lot\" \r\n [(value)]=\"workOrderInfo.u_TRKAMBALAJLOT\" \r\n [disabled]=\"true\">\r\n </dx-text-box>\r\n </div>\r\n </div>\r\n\r\n <!-- Pallet Type Selection -->\r\n <div class=\"row mt-3\">\r\n <div class=\"col-md-12\">\r\n <dx-radio-group #paletTipiRef [items]=\"paletTipleri\" layout=\"horizontal\" [(value)]=\"paletTipi\"\r\n (onValueChanged)=\"onPaletTipiChange()\">\r\n </dx-radio-group>\r\n </div>\r\n </div>\r\n\r\n <!-- Koli Count for KISMI Pallet -->\r\n <div class=\"row mt-2\" *ngIf=\"paletTipi === 'KISMI'\">\r\n <div class=\"col-md-6\">\r\n <dx-number-box #koliAdetRef label=\"Koli Adedi\" [(value)]=\"koliAdet\" (onValueChanged)=\"onKoliAdetChange()\"\r\n [min]=\"1\">\r\n </dx-number-box>\r\n </div>\r\n </div>\r\n\r\n <!-- Calculated Total Quantity -->\r\n <div class=\"row mt-2\">\r\n <div class=\"col-md-6\">\r\n <dx-number-box label=\"Toplam Miktar (Adet)\" [(value)]=\"toplamMiktar\" [disabled]=\"true\"\r\n [stylingMode]=\"'filled'\">\r\n </dx-number-box>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <dx-number-box label=\"Koli \u0130\u00E7i Adet\" [(value)]=\"workOrderInfo.salPackUn\" [disabled]=\"true\">\r\n </dx-number-box>\r\n </div>\r\n </div>\r\n\r\n <!-- Quality Status Info -->\r\n <div class=\"row mt-2\" *ngIf=\"workOrderInfo.u_KaliteDurumu\">\r\n <div class=\"col-md-12\">\r\n <div class=\"alert alert-info\" role=\"alert\">\r\n <strong>Kalite Durumu:</strong> {{ workOrderInfo.u_KaliteDurumu }}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Receipt History -->\r\n <div class=\"row mt-3\">\r\n <div class=\"col-12\">\r\n <div class=\"fw-semibold mb-1\" style=\"font-size: 13px;\">\r\n \u00DCretimden Giri\u015F Hareketleri\r\n </div>\r\n <dx-data-grid [dataSource]=\"workOrderInfo.receiptHistory\" [showBorders]=\"true\" [columnAutoWidth]=\"true\"\r\n [wordWrapEnabled]=\"false\" [rowAlternationEnabled]=\"true\" [hoverStateEnabled]=\"true\"\r\n [noDataText]=\"'Hen\u00FCz giri\u015F hareketi bulunmamaktad\u0131r.'\" [height]=\"'auto'\">\r\n <dxo-scrolling mode=\"standard\"></dxo-scrolling>\r\n <dxo-paging [enabled]=\"false\"></dxo-paging>\r\n <dxi-column caption=\"#\" name=\"rowNum\" [width]=\"40\" alignment=\"center\" [calculateCellValue]=\"calcRowIndex\"></dxi-column>\r\n <dxi-column dataField=\"docNum\" caption=\"Belge No\" [minWidth]=\"110\" alignment=\"center\"></dxi-column>\r\n <dxi-column dataField=\"packQuantity\" caption=\"Koli Adedi\" dataType=\"number\" [minWidth]=\"75\" alignment=\"right\"></dxi-column>\r\n <dxi-column dataField=\"whsName\" caption=\"Depo\" [minWidth]=\"100\"></dxi-column>\r\n <dxi-column dataField=\"docStatus\" caption=\"Durum\" [minWidth]=\"105\" alignment=\"center\"\r\n [calculateCellValue]=\"calcDocStatus\">\r\n </dxi-column>\r\n <dxi-column dataField=\"userCode\" caption=\"Kullan\u0131c\u0131\" [minWidth]=\"80\" alignment=\"center\"></dxi-column>\r\n <dxo-summary>\r\n <dxi-total-item column=\"docNum\" summaryType=\"count\" displayFormat=\"Toplam\"></dxi-total-item>\r\n <dxi-total-item column=\"packQuantity\" summaryType=\"sum\" displayFormat=\"{0}\" [valueFormat]=\"formatNumber\"></dxi-total-item>\r\n </dxo-summary>\r\n </dx-data-grid>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</abp-page>", styles: [".page-title{margin:0;padding:0}\n"] }]
|
|
215
|
+
args: [{ selector: 'lib-hit-filling-receipt-from-production', template: "<abp-page [breadcrumb]=\"false\">\r\n <abp-page-toolbar-container class=\"col\">\r\n <div class=\"row\">\r\n <h3 class=\"page-title\">\r\n \u00DCretimden Giri\u015F\r\n </h3>\r\n </div>\r\n <div class=\"row text-lg-end pt-2\">\r\n <div class=\"col-6\">\r\n <button class=\"btn btn-success btn-sm\" type=\"button\" (click)=\"save()\" [disabled]=\"isSaveButtonDisabled\">\r\n <i class=\"fa fa-check me-1\"></i>\r\n \u00DCretimden Giri\u015F Yap\r\n </button>\r\n </div>\r\n <div class=\"col-6\">\r\n <button class=\"btn btn-warning btn-sm\" type=\"button\" (click)=\"clearAll()\">\r\n <i class=\"fa fa-broom me-1\"></i>\r\n Temizle\r\n </button>\r\n </div>\r\n </div>\r\n </abp-page-toolbar-container>\r\n\r\n <div class=\"card mt-2\">\r\n <div class=\"card-body\" style=\"height: calc(100vh - 241px); overflow: auto;\">\r\n <!-- Work Order Input -->\r\n <div style=\"display: flex; align-items: center;\">\r\n <dx-number-box #isEmriNoRef class=\"me-1\" style=\"width:100%;\" label=\"\u0130\u015F Emri No\" [(value)]=\"isEmriNo\"\r\n (onChange)=\"getProductionOrder()\" (onEnterKey)=\"getProductionOrder()\" [disabled]=\"isWorkOrderLoaded\">\r\n </dx-number-box>\r\n <dx-button style=\"margin-top: 7.5px;\" icon=\"search\" type=\"default\" (onClick)=\"getProductionOrder()\"\r\n [disabled]=\"isWorkOrderLoaded\">\r\n </dx-button>\r\n </div>\r\n\r\n <!-- Work Order Information -->\r\n <div class=\"mt-3\" *ngIf=\"isWorkOrderLoaded && workOrderInfo\">\r\n <!-- Product Info -->\r\n <div class=\"row\">\r\n <div class=\"col-md-6\">\r\n <dx-text-box label=\"\u00DCr\u00FCn Kodu\" [(value)]=\"workOrderInfo.itemCode\" [disabled]=\"true\">\r\n </dx-text-box>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <dx-text-box label=\"\u00DCr\u00FCn Ad\u0131\" [(value)]=\"workOrderInfo.itemName\" [disabled]=\"true\">\r\n </dx-text-box>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row mt-2\">\r\n <div class=\"col-md-3\">\r\n <dx-number-box \r\n label=\"Planlanan Miktar\" \r\n [(value)]=\"workOrderInfo.plannedQty\" \r\n [disabled]=\"true\">\r\n </dx-number-box>\r\n </div>\r\n <div class=\"col-md-3\">\r\n <dx-number-box \r\n label=\"Tamamlanan Miktar\" \r\n [(value)]=\"workOrderInfo.cmpltQty\" \r\n [disabled]=\"true\">\r\n </dx-number-box>\r\n </div>\r\n <div class=\"col-md-3\">\r\n <dx-text-box \r\n label=\"Depo\" \r\n [(value)]=\"workOrderInfo.warehouse\" \r\n [disabled]=\"true\">\r\n </dx-text-box>\r\n </div>\r\n <div class=\"col-md-3\">\r\n <dx-text-box \r\n label=\"Ambalaj Lot\" \r\n [(value)]=\"workOrderInfo.u_TRKAMBALAJLOT\" \r\n [disabled]=\"true\">\r\n </dx-text-box>\r\n </div>\r\n </div>\r\n\r\n <!-- Pallet Type Selection -->\r\n <div class=\"row mt-3\">\r\n <div class=\"col-md-12\">\r\n <dx-radio-group #paletTipiRef [items]=\"paletTipleri\" layout=\"horizontal\" [(value)]=\"paletTipi\"\r\n (onValueChanged)=\"onPaletTipiChange()\">\r\n </dx-radio-group>\r\n </div>\r\n </div>\r\n\r\n <!-- Koli Count for KISMI Pallet -->\r\n <div class=\"row mt-2\" *ngIf=\"paletTipi === 'KISMI'\">\r\n <div class=\"col-md-6\">\r\n <dx-number-box #koliAdetRef label=\"Koli Adedi\" [(value)]=\"koliAdet\" (onValueChanged)=\"onKoliAdetChange()\"\r\n [min]=\"1\">\r\n </dx-number-box>\r\n </div>\r\n </div>\r\n\r\n <!-- Calculated Total Quantity -->\r\n <div class=\"row mt-2\">\r\n <div class=\"col-md-6\">\r\n <dx-number-box label=\"Toplam Miktar (Adet)\" [(value)]=\"toplamMiktar\" [disabled]=\"true\"\r\n [stylingMode]=\"'filled'\">\r\n </dx-number-box>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <dx-number-box label=\"Koli \u0130\u00E7i Adet\" [(value)]=\"workOrderInfo.salPackUn\" [disabled]=\"true\">\r\n </dx-number-box>\r\n </div>\r\n </div>\r\n\r\n <!-- Quality Status Info -->\r\n <div class=\"row mt-2\" *ngIf=\"workOrderInfo.u_KaliteDurumu\">\r\n <div class=\"col-md-12\">\r\n <div class=\"alert alert-info\" role=\"alert\">\r\n <strong>Kalite Durumu:</strong> {{ workOrderInfo.u_KaliteDurumu }}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Receipt History -->\r\n <div class=\"row mt-3\">\r\n <div class=\"col-12\">\r\n <div class=\"fw-semibold mb-1\" style=\"font-size: 13px;\">\r\n \u00DCretimden Giri\u015F Hareketleri\r\n </div>\r\n <dx-data-grid [dataSource]=\"workOrderInfo.receiptHistory\" [showBorders]=\"true\" [columnAutoWidth]=\"true\"\r\n [wordWrapEnabled]=\"false\" [rowAlternationEnabled]=\"true\" [hoverStateEnabled]=\"true\"\r\n [noDataText]=\"'Hen\u00FCz giri\u015F hareketi bulunmamaktad\u0131r.'\" [height]=\"'auto'\">\r\n <dxo-scrolling mode=\"standard\"></dxo-scrolling>\r\n <dxo-paging [enabled]=\"false\"></dxo-paging>\r\n <dxi-column caption=\"#\" name=\"rowNum\" [width]=\"40\" alignment=\"center\" [calculateCellValue]=\"calcRowIndex\"></dxi-column>\r\n <dxi-column dataField=\"docNum\" caption=\"Belge No\" [minWidth]=\"110\" alignment=\"center\"></dxi-column>\r\n <dxi-column dataField=\"batchNum\" caption=\"Parti No\" [minWidth]=\"130\"></dxi-column>\r\n <dxi-column dataField=\"packQuantity\" caption=\"Koli Adedi\" dataType=\"number\" [minWidth]=\"75\" alignment=\"right\"></dxi-column>\r\n <dxi-column dataField=\"whsName\" caption=\"Depo\" [minWidth]=\"100\"></dxi-column>\r\n <dxi-column dataField=\"docStatus\" caption=\"Durum\" [minWidth]=\"105\" alignment=\"center\"\r\n [calculateCellValue]=\"calcDocStatus\">\r\n </dxi-column>\r\n <dxi-column dataField=\"userCode\" caption=\"Kullan\u0131c\u0131\" [minWidth]=\"80\" alignment=\"center\"></dxi-column>\r\n <dxo-summary>\r\n <dxi-total-item column=\"docNum\" summaryType=\"count\" displayFormat=\"Toplam\"></dxi-total-item>\r\n <dxi-total-item column=\"packQuantity\" summaryType=\"sum\" displayFormat=\"{0}\" [valueFormat]=\"formatNumber\"></dxi-total-item>\r\n </dxo-summary>\r\n </dx-data-grid>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</abp-page>", styles: [".page-title{margin:0;padding:0}\n"] }]
|
|
216
216
|
}], ctorParameters: function () { return [{ type: i1.HitFillingReceiptFromProductionService }, { type: i2.ConfirmationService }, { type: i0.NgZone }]; }, propDecorators: { nmbBoxIsEmriNo: [{
|
|
217
217
|
type: ViewChild,
|
|
218
218
|
args: ['isEmriNoRef', { static: false }]
|
|
@@ -223,4 +223,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
223
223
|
type: ViewChild,
|
|
224
224
|
args: ['koliAdetRef', { static: false }]
|
|
225
225
|
}] } });
|
|
226
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGl0LWZpbGxpbmctcmVjZWlwdC1mcm9tLXByb2R1Y3Rpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdXJldGltLXlvbmV0aW1pL3NyYy9saWIvY29tcG9uZW50cy9oaXQtZmlsbGluZy1yZWNlaXB0LWZyb20tcHJvZHVjdGlvbi9oaXQtZmlsbGluZy1yZWNlaXB0LWZyb20tcHJvZHVjdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91cmV0aW0teW9uZXRpbWkvc3JjL2xpYi9jb21wb25lbnRzL2hpdC1maWxsaW5nLXJlY2VpcHQtZnJvbS1wcm9kdWN0aW9uL2hpdC1maWxsaW5nLXJlY2VpcHQtZnJvbS1wcm9kdWN0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDOzs7Ozs7Ozs7QUFlN0QsTUFBTSxPQUFPLHdDQUF3QztJQWlCbkQsWUFDVSxPQUErQyxFQUMvQyxZQUFpQyxFQUNqQyxNQUFjO1FBRmQsWUFBTyxHQUFQLE9BQU8sQ0FBd0M7UUFDL0MsaUJBQVksR0FBWixZQUFZLENBQXFCO1FBQ2pDLFdBQU0sR0FBTixNQUFNLENBQVE7UUFkeEIsY0FBUyxHQUFZLEtBQUssQ0FBQztRQUMzQixhQUFRLEdBQVksS0FBSyxDQUFDO1FBQzFCLHNCQUFpQixHQUFZLEtBQUssQ0FBQztRQUNuQyxrQkFBYSxHQUF3QixJQUFJLENBQUM7UUFFMUMsa0JBQWtCO1FBQ2xCLGNBQVMsR0FBVyxLQUFLLENBQUMsQ0FBQyxlQUFlO1FBQzFDLGlCQUFZLEdBQUcsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDaEMsYUFBUSxHQUFXLElBQUksQ0FBQztRQUN4QixpQkFBWSxHQUFXLENBQUMsQ0FBQztRQWdNekIsaUJBQVksR0FBRyxD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O2dCQUNkLElBQUksQ0FBQyxjQUFjLEVBQUUsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3hDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNSLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7cUlBalBVLHdDQUF3Qzt5SEFBeEMsd0NBQXdDLCtYQ2ZyRCxveU5BcUpXOzJGRHRJRSx3Q0FBd0M7a0JBTHBELFNBQVM7K0JBQ0UseUNBQXlDO29MQUtOLGNBQWM7c0JBQTFELFNBQVM7dUJBQUMsYUFBYSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFDRyxjQUFjO3NCQUEzRCxTQUFTO3VCQUFDLGNBQWMsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBQ0MsY0FBYztzQkFBMUQsU0FBUzt1QkFBQyxhQUFhLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBWaWV3Q2hpbGQsIE5nWm9uZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBEeE51bWJlckJveENvbXBvbmVudCwgRHhSYWRpb0dyb3VwQ29tcG9uZW50IH0gZnJvbSAnZGV2ZXh0cmVtZS1hbmd1bGFyJztcclxuaW1wb3J0IHtcclxuICBIaXRGaWxsaW5nUmVjZWlwdEZyb21Qcm9kdWN0aW9uU2VydmljZSxcclxuICBHZXRXb3JrT3JkZXJJbmZvRHRvLFxyXG4gIFdvcmtPcmRlckxpbmVEdG8sXHJcbiAgUmVjZWlwdEhpc3RvcnlJdGVtRHRvXHJcbn0gZnJvbSAnLi4vLi4vaGl0LXByb3h5L2hpdC1maWxsaW5nLXJlY2VpcHQtZnJvbS1wcm9kdWN0aW9uL2hpdC1maWxsaW5nLXJlY2VpcHQtZnJvbS1wcm9kdWN0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb25maXJtYXRpb25TZXJ2aWNlIH0gZnJvbSAnQGFicC9uZy50aGVtZS5zaGFyZWQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItaGl0LWZpbGxpbmctcmVjZWlwdC1mcm9tLXByb2R1Y3Rpb24nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9oaXQtZmlsbGluZy1yZWNlaXB0LWZyb20tcHJvZHVjdGlvbi5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vaGl0LWZpbGxpbmctcmVjZWlwdC1mcm9tLXByb2R1Y3Rpb24uY29tcG9uZW50LmNzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgSGl0RmlsbGluZ1JlY2VpcHRGcm9tUHJvZHVjdGlvbkNvbXBvbmVudCB7XHJcbiAgQFZpZXdDaGlsZCgnaXNFbXJpTm9SZWYnLCB7IHN0YXRpYzogZmFsc2UgfSkgbm1iQm94SXNFbXJpTm86IER4TnVtYmVyQm94Q29tcG9uZW50O1xyXG4gIEBWaWV3Q2hpbGQoJ3BhbGV0VGlwaVJlZicsIHsgc3RhdGljOiBmYWxzZSB9KSByYWRpb1BhbGV0VGlwaTogRHhSYWRpb0dyb3VwQ29tcG9uZW50O1xyXG4gIEBWaWV3Q2hpbGQoJ2tvbGlBZGV0UmVmJywgeyBzdGF0aWM6IGZhbHNlIH0pIG5tYkJveEtvbGlBZGV0OiBEeE51bWJlckJveENvbXBvbmVudDtcclxuXHJcbiAgaXNFbXJpTm86IG51bWJlcjtcclxuICBpc0xvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBpc1NhdmluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGlzV29ya09yZGVyTG9hZGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgd29ya09yZGVySW5mbzogR2V0V29ya09yZGVySW5mb0R0byA9IG51bGw7XHJcbiAgXHJcbiAgLy8gUGFsbGV0IGNvbnRyb2xzXHJcbiAgcGFsZXRUaXBpOiBzdHJpbmcgPSAnVEFNJzsgLy8gVEFNIG9yIEtJU01JXHJcbiAgcGFsZXRUaXBsZXJpID0gWydUQU0nLCAnS0lTTUknXTtcclxuICBrb2xpQWRldDogbnVtYmVyID0gbnVsbDtcclxuICB0b3BsYW1NaWt0YXI6IG51bWJlciA9IDA7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBzZXJ2aWNlOiBIaXRGaWxsaW5nUmVjZWlwdEZyb21Qcm9kdWN0aW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgY29uZmlybWF0aW9uOiBDb25maXJtYXRpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZVxyXG4gICkge31cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICAvLyBJbml0aWFsaXplXHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICB0aGlzLmZvY3VzT25Jc0VtcmlObygpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgZ2V0UHJvZHVjdGlvbk9yZGVyKCkge1xyXG4gICAgaWYgKCF0aGlzLmlzRW1yaU5vKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLmlzV29ya09yZGVyTG9hZGVkID0gZmFsc2U7XHJcblxyXG4gICAgdGhpcy5zZXJ2aWNlLmdldFdvcmtPcmRlckluZm8odGhpcy5pc0VtcmlObykuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogcmVzcG9uc2UgPT4ge1xyXG4gICAgICAgIGlmIChyZXNwb25zZT8uaXNTdWNjZXNzZnVsICYmIHJlc3BvbnNlLml0ZW1zKSB7XHJcbiAgICAgICAgICB0aGlzLndvcmtPcmRlckluZm8gPSByZXNwb25zZS5pdGVtcztcclxuICAgICAgICAgIHRoaXMuaXNXb3JrT3JkZXJMb2FkZWQgPSB0cnVlO1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAvLyBDYWxjdWxhdGUgZGVmYXVsdCB2YWx1ZXMgZm9yIFRBTSBwYWxsZXRcclxuICAgICAgICAgIHRoaXMuY2FsY3VsYXRlVG90YWxRdWFudGl0eSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogZSA9PiB7XHJcbiAgICAgICAgdGhpcy5pc1dvcmtPcmRlckxvYWRlZCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5jb25maXJtYXRpb24uc3RhdHVzJC5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgbmV4dDogKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmNsZWFyQWxsKCk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvblBhbGV0VGlwaUNoYW5nZSgpIHtcclxuICAgIHRoaXMuY2FsY3VsYXRlVG90YWxRdWFudGl0eSgpO1xyXG4gICAgXHJcbiAgICBpZiAodGhpcy5wYWxldFRpcGkgPT09ICdLSVNNSScpIHtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5ubWJCb3hLb2xpQWRldD8uaW5zdGFuY2UuZm9jdXMoKTtcclxuICAgICAgfSwgMTAwKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uS29saUFkZXRDaGFuZ2UoKSB7XHJcbiAgICB0aGlzLmNhbGN1bGF0ZVRvdGFsUXVhbnRpdHkoKTtcclxuICB9XHJcblxyXG4gIGNhbGN1bGF0ZVRvdGFsUXVhbnRpdHkoKSB7XHJcbiAgICBpZiAoIXRoaXMud29ya09yZGVySW5mbykge1xyXG4gICAgICB0aGlzLnRvcGxhbU1pa3RhciA9IDA7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBzYWxQYWNrVW4gPSB0aGlzLndvcmtPcmRlckluZm8uc2FsUGFja1VuIHx8IDA7XHJcbiAgICBkZWJ1Z2dlcjtcclxuICAgIGlmICh0aGlzLnBhbGV0VGlwaSA9PT0gJ1RBTScpIHtcclxuICAgICAgLy8gVGFtIFBhbGV0OiBQYWxsZXQgaGVpZ2h0IMOXIFBpZWNlcyBwZXIgYm94XHJcbiAgICAgIGNvbnN0IHBhbGV0WXVrc2VrbGlrID0gdGhpcy53b3JrT3JkZXJJbmZvLnVfREtwYWxldHl1c2VrbGlrIHx8IDA7XHJcbiAgICAgIHRoaXMudG9wbGFtTWlrdGFyID0gcGFsZXRZdWtzZWtsaWsgKiBzYWxQYWNrVW47XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyBLxLFzbWkgUGFsZXQ6IEtvbGkgY291bnQgw5cgUGllY2VzIHBlciBib3hcclxuICAgICAgY29uc3Qga29saUFkZXQgPSB0aGlzLmtvbGlBZGV0IHx8IDA7XHJcbiAgICAgIGNvbnN0IGtpc21pTWlrdGFyID0ga29saUFkZXQgKiBzYWxQYWNrVW47XHJcbiAgICAgIFxyXG4gICAgICAvLyBDYWxjdWxhdGUgVEFNIHBhbGxldCBxdWFudGl0eSBmb3IgY29tcGFyaXNvblxyXG4gICAgICBjb25zdCBwYWxldFl1a3Nla2xpayA9IHRoaXMud29ya09yZGVySW5mby51X0RLcGFsZXR5dXNla2xpayB8fCAwO1xyXG4gICAgICBjb25zdCB0YW1QYWxldE1pa3RhciA9IHBhbGV0WXVrc2VrbGlrICogc2FsUGFja1VuO1xyXG4gICAgICBcclxuICAgICAgLy8gS0lTTUkgcXVhbnRpdHkgc2hvdWxkIG5vdCBleGNlZWQgVEFNIHBhbGxldCBxdWFudGl0eVxyXG4gICAgICBpZiAoa2lzbWlNaWt0YXIgPiB0YW1QYWxldE1pa3Rhcikge1xyXG4gICAgICAgIHRoaXMudG9wbGFtTWlrdGFyID0gdGFtUGFsZXRNaWt0YXI7XHJcbiAgICAgICAgXHJcbiAgICAgICAgLy8gUmVzZXQgdG8gbWF4aW11bSBhbGxvd2VkIHZhbHVlIGFzeW5jaHJvbm91c2x5IHRvIGF2b2lkIGNoYW5nZSBkZXRlY3Rpb24gbG9vcFxyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5rb2xpQWRldCA9IHBhbGV0WXVrc2VrbGlrO1xyXG4gICAgICAgIH0sIDApO1xyXG4gICAgICAgIFxyXG4gICAgICAgIHRoaXMuY29uZmlybWF0aW9uLndhcm4oJycsIGBLb2xpIGFkZWRpICR7cGFsZXRZdWtzZWtsaWt9J2kgZ2XDp2VtZXohIChUQU0gcGFsZXQgbWlrdGFyxLE6ICR7dGFtUGFsZXRNaWt0YXJ9KWAsIHtcclxuICAgICAgICAgIGhpZGVZZXNCdG46IHRydWUsXHJcbiAgICAgICAgICBjYW5jZWxUZXh0OiAnS2FwYXQnLFxyXG4gICAgICAgICAgZGlzbWlzc2libGU6IGZhbHNlLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMudG9wbGFtTWlrdGFyID0ga2lzbWlNaWt0YXI7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFzeW5jIHNhdmUoKSB7XHJcbiAgICBkZWJ1Z2dlcjtcclxuICAgIGlmICghdGhpcy5pc0VtcmlObyB8fCAhdGhpcy53b3JrT3JkZXJJbmZvIHx8IHRoaXMudG9wbGFtTWlrdGFyIDw9IDAgfHwgdGhpcy5pc1NhdmluZykge1xyXG4gICAgICBpZiAoIXRoaXMuaXNTYXZpbmcpIHtcclxuICAgICAgICB0aGlzLmNvbmZpcm1hdGlvbi53YXJuKCcnLCAnTMO8dGZlbiB0w7xtIGFsYW5sYXLEsSBkb2xkdXJ1biEnLCB7XHJcbiAgICAgICAgICBoaWRlWWVzQnRuOiB0cnVlLFxyXG4gICAgICAgICAgY2FuY2VsVGV4dDogJ0thcGF0JyxcclxuICAgICAgICAgIGRpc21pc3NpYmxlOiBmYWxzZSxcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgLy8gQ2hlY2sgaWYgY29tcGxldGVkIHF1YW50aXR5IHdpbGwgZXhjZWVkIHBsYW5uZWQgcXVhbnRpdHlcclxuICAgIGNvbnN0IHJlbWFpbmluZ1F0eSA9IHRoaXMud29ya09yZGVySW5mby5wbGFubmVkUXR5IC0gdGhpcy53b3JrT3JkZXJJbmZvLmNtcGx0UXR5O1xyXG4gICAgaWYgKHRoaXMudG9wbGFtTWlrdGFyID4gcmVtYWluaW5nUXR5KSB7XHJcbiAgICAgIHRoaXMuY29uZmlybWF0aW9uLndhcm4oJycsIGBHaXJpbGVuIG1pa3RhciAoJHt0aGlzLnRvcGxhbU1pa3Rhcn0pIGthbGFuIG1pa3RhcsSxICgke3JlbWFpbmluZ1F0eX0pIGHFn8SxeW9yIWAsIHtcclxuICAgICAgICBoaWRlWWVzQnRuOiB0cnVlLFxyXG4gICAgICAgIGNhbmNlbFRleHQ6ICdLYXBhdCcsXHJcbiAgICAgICAgZGlzbWlzc2libGU6IGZhbHNlLFxyXG4gICAgICB9KTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHNhdmVEYXRhID0ge1xyXG4gICAgICBkb2NFbnRyeTogdGhpcy5pc0VtcmlObyxcclxuICAgICAgcGFsbGV0VHlwZTogdGhpcy5wYWxldFRpcGksXHJcbiAgICAgIGtvbGlDb3VudDogdGhpcy5wYWxldFRpcGkgPT09ICdLSVNNSScgPyB0aGlzLmtvbGlBZGV0IDogbnVsbCxcclxuICAgICAgdG90YWxRdWFudGl0eTogdGhpcy50b3BsYW1NaWt0YXIsXHJcbiAgICAgIHdhcmVob3VzZUNvZGU6IHRoaXMud29ya09yZGVySW5mby53YXJlaG91c2UsXHJcbiAgICAgIGJhdGNoTnVtYmVyOiAnJywgLy8gQmF0Y2ggbnVtYmVyIHdpbGwgYmUgZ2VuZXJhdGVkIGJ5IFNBUFxyXG4gICAgICBjb21wb25lbnRzVG9Db25zdW1lOiB0aGlzLnByZXBhcmVDb21wb25lbnRzVG9Db25zdW1lKClcclxuICAgIH07XHJcblxyXG4gICAgdGhpcy5pc1NhdmluZyA9IHRydWU7XHJcbiAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLnNlcnZpY2UuY3JlYXRlUmVjZWlwdChzYXZlRGF0YSkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogcmVzcG9uc2UgPT4ge1xyXG4gICAgICAgIGlmIChyZXNwb25zZT8uaXNTdWNjZXNzZnVsKSB7XHJcbiAgICAgICAgICB0aGlzLmNvbmZpcm1hdGlvbi5zdWNjZXNzKCcnLCAnw5xyZXRpbWRlbiBnaXJpxZ8gYmHFn2FyxLF5bGEgZ2Vyw6dla2xlxZ90aXJpbGRpIScsIHtcclxuICAgICAgICAgICAgaGlkZVllc0J0bjogdHJ1ZSxcclxuICAgICAgICAgICAgY2FuY2VsVGV4dDogJ0thcGF0JyxcclxuICAgICAgICAgICAgZGlzbWlzc2libGU6IGZhbHNlLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLmNsZWFyQWxsKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuaXNTYXZpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogZSA9PiB7XHJcbiAgICAgICAgdGhpcy5pc1NhdmluZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByZXBhcmVDb21wb25lbnRzVG9Db25zdW1lKCk6IGFueVtdIHtcclxuICAgIGlmICghdGhpcy53b3JrT3JkZXJJbmZvIHx8ICF0aGlzLndvcmtPcmRlckluZm8ubGluZXMpIHtcclxuICAgICAgcmV0dXJuIFtdO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGNvbXBvbmVudHMgPSBbXTtcclxuICAgIGNvbnN0IGl0ZW1Db2RlID0gdGhpcy53b3JrT3JkZXJJbmZvLml0ZW1Db2RlO1xyXG5cclxuICAgIC8vIERldGVybWluZSBpZiB0aGlzIGlzIFlNIG9yIDE1MSogcHJvZHVjdFxyXG4gICAgY29uc3QgaXNZTSA9IGl0ZW1Db2RlLnN0YXJ0c1dpdGgoJ1lNJyk7XHJcbiAgICBjb25zdCBpczE1MSA9IGl0ZW1Db2RlLnN0YXJ0c1dpdGgoJzE1MScpO1xyXG5cclxuICAgIC8vIEdldCBjb250cm9sbGVkIGxpbmVzIChZTS8xNTEqIGl0ZW1zIG1hcmtlZCB3aXRoIFVfS29udHJvbD0nRScpXHJcbiAgICBjb25zdCBjb250cm9sbGVkTGluZXMgPSB0aGlzLndvcmtPcmRlckluZm8ubGluZXMuZmlsdGVyKGxpbmUgPT4gXHJcbiAgICAgIGxpbmUuaXNDb250cm9sbGVkICYmIGxpbmUuYmF0Y2hOdW1iZXJcclxuICAgICk7XHJcblxyXG4gICAgLy8gRm9yIFlNLzE1MSogcHJvZHVjdHMsIGNvbnN1bWUgYnkgbG90IGZyb20gY29udHJvbCBzY3JlZW5cclxuICAgIGZvciAoY29uc3QgbGluZSBvZiBjb250cm9sbGVkTGluZXMpIHtcclxuICAgICAgICBjb21wb25lbnRzLnB1c2goe1xyXG4gICAgICAgICAgaXRlbUNvZGU6IGxpbmUuaXRlbUNvZGUsXHJcbiAgICAgICAgICBxdWFudGl0eTogbGluZS5pc3N1ZWRRdHksXHJcbiAgICAgICAgICB3YXJlaG91c2VDb2RlOiBsaW5lLndhcmVob3VzZSxcclxuICAgICAgICAgIGJhdGNoTnVtYmVyOiBsaW5lLmJhdGNoTnVtYmVyLFxyXG4gICAgICAgICAgYmFzZUxpbmU6IGxpbmUubGluZU51bVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEZvciBvdGhlciBjb21wb25lbnRzLCB1c2UgXCJUZXlpdCBzb25yYXPEsSBvdG9tYXRpayDDp2VrbWVcIiBsb2dpY1xyXG4gICAgLy8gKFRoaXMgd291bGQgYmUgaGFuZGxlZCBieSB0aGUgYmFja2VuZCB3aXRoIEZJRk8gZm9yIGJhdGNoL3NlcmlhbCBpdGVtcylcclxuXHJcbiAgICByZXR1cm4gY29tcG9uZW50cztcclxuICB9XHJcblxyXG4gIGNhbGNSb3dJbmRleCA9IChyb3c6IFJlY2VpcHRIaXN0b3J5SXRlbUR0byk6IG51bWJlciA9PlxyXG4gICAgKHRoaXMud29ya09yZGVySW5mbz8ucmVjZWlwdEhpc3Rvcnk/LmluZGV4T2Yocm93KSA/PyAtMSkgKyAxO1xyXG5cclxuICBjYWxjRG9jU3RhdHVzID0gKHJvdzogUmVjZWlwdEhpc3RvcnlJdGVtRHRvKTogc3RyaW5nID0+XHJcbiAgICByb3cuZG9jU3RhdHVzID09PSAnQycgPyAnVGFtYW1sYW5kxLEnIDogJ0Jla2xlbWVkZSc7XHJcblxyXG4gIGZvcm1hdE51bWJlciA9ICh2YWx1ZTogbnVtYmVyKSA9PiB2YWx1ZT8udG9Mb2NhbGVTdHJpbmcoJ3RyLVRSJykgPz8gJyc7XHJcblxyXG5cclxuICBjbGVhckFsbCgpIHtcclxuICAgIHRoaXMuaXNXb3JrT3JkZXJMb2FkZWQgPSBmYWxzZTtcclxuICAgIHRoaXMuaXNFbXJpTm8gPSBudWxsO1xyXG4gICAgdGhpcy53b3JrT3JkZXJJbmZvID0gbnVsbDtcclxuICAgIHRoaXMucGFsZXRUaXBpID0gJ1RBTSc7XHJcbiAgICB0aGlzLmtvbGlBZGV0ID0gbnVsbDtcclxuICAgIHRoaXMudG9wbGFtTWlrdGFyID0gMDtcclxuICAgIHRoaXMuaXNTYXZpbmcgPSBmYWxzZTtcclxuICAgIHRoaXMuZm9jdXNPbklzRW1yaU5vKCk7XHJcbiAgfVxyXG5cclxuICBnZXQgaXNTYXZlQnV0dG9uRGlzYWJsZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gIXRoaXMuaXNFbXJpTm8gfHwgXHJcbiAgICAgICAgICAgIXRoaXMud29ya09yZGVySW5mbyB8fCBcclxuICAgICAgICAgICB0aGlzLnRvcGxhbU1pa3RhciA8PSAwIHx8XHJcbiAgICAgICAgICAgKHRoaXMucGFsZXRUaXBpID09PSAnS0lTTUknICYmICghdGhpcy5rb2xpQWRldCB8fCB0aGlzLmtvbGlBZGV0IDw9IDApKSB8fFxyXG4gICAgICAgICAgIHRoaXMuaXNTYXZpbmc7XHJcbiAgfVxyXG5cclxuICBmb2N1c09uSXNFbXJpTm8oKSB7XHJcbiAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLm5tYkJveElzRW1yaU5vPy5pbnN0YW5jZS5mb2N1cygpO1xyXG4gICAgICB9LCAwKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPGFicC1wYWdlIFticmVhZGNydW1iXT1cImZhbHNlXCI+XHJcbiAgPGFicC1wYWdlLXRvb2xiYXItY29udGFpbmVyIGNsYXNzPVwiY29sXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgIDxoMyBjbGFzcz1cInBhZ2UtdGl0bGVcIj5cclxuICAgICAgICDDnHJldGltZGVuIEdpcmnFn1xyXG4gICAgICA8L2gzPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwicm93IHRleHQtbGctZW5kIHB0LTJcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbC02XCI+XHJcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tc3VjY2VzcyBidG4tc21cIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInNhdmUoKVwiIFtkaXNhYmxlZF09XCJpc1NhdmVCdXR0b25EaXNhYmxlZFwiPlxyXG4gICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1jaGVjayBtZS0xXCI+PC9pPlxyXG4gICAgICAgICAgw5xyZXRpbWRlbiBHaXJpxZ8gWWFwXHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLTZcIj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi13YXJuaW5nIGJ0bi1zbVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiY2xlYXJBbGwoKVwiPlxyXG4gICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1icm9vbSBtZS0xXCI+PC9pPlxyXG4gICAgICAgICAgVGVtaXpsZVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvYWJwLXBhZ2UtdG9vbGJhci1jb250YWluZXI+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJjYXJkIG10LTJcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHlcIiBzdHlsZT1cImhlaWdodDogY2FsYygxMDB2aCAtIDI0MXB4KTsgb3ZlcmZsb3c6IGF1dG87XCI+XHJcbiAgICAgIDwhLS0gV29yayBPcmRlciBJbnB1dCAtLT5cclxuICAgICAgPGRpdiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7XCI+XHJcbiAgICAgICAgPGR4LW51bWJlci1ib3ggI2lzRW1yaU5vUmVmIGNsYXNzPVwibWUtMVwiIHN0eWxlPVwid2lkdGg6MTAwJTtcIiBsYWJlbD1cIsSwxZ8gRW1yaSBOb1wiIFsodmFsdWUpXT1cImlzRW1yaU5vXCJcclxuICAgICAgICAgIChvbkNoYW5nZSk9XCJnZXRQcm9kdWN0aW9uT3JkZXIoKVwiIChvbkVudGVyS2V5KT1cImdldFByb2R1Y3Rpb25PcmRlcigpXCIgW2Rpc2FibGVkXT1cImlzV29ya09yZGVyTG9hZGVkXCI+XHJcbiAgICAgICAgPC9keC1udW1iZXItYm94PlxyXG4gICAgICAgIDxkeC1idXR0b24gc3R5bGU9XCJtYXJnaW4tdG9wOiA3LjVweDtcIiBpY29uPVwic2VhcmNoXCIgdHlwZT1cImRlZmF1bHRcIiAob25DbGljayk9XCJnZXRQcm9kdWN0aW9uT3JkZXIoKVwiXHJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNXb3JrT3JkZXJMb2FkZWRcIj5cclxuICAgICAgICA8L2R4LWJ1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8IS0tIFdvcmsgT3JkZXIgSW5mb3JtYXRpb24gLS0+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtdC0zXCIgKm5nSWY9XCJpc1dvcmtPcmRlckxvYWRlZCAmJiB3b3JrT3JkZXJJbmZvXCI+XHJcbiAgICAgICAgPCEtLSBQcm9kdWN0IEluZm8gLS0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgIDxkeC10ZXh0LWJveCBsYWJlbD1cIsOccsO8biBLb2R1XCIgWyh2YWx1ZSldPVwid29ya09yZGVySW5mby5pdGVtQ29kZVwiIFtkaXNhYmxlZF09XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgIDwvZHgtdGV4dC1ib3g+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICA8ZHgtdGV4dC1ib3ggbGFiZWw9XCLDnHLDvG4gQWTEsVwiIFsodmFsdWUpXT1cIndvcmtPcmRlckluZm8uaXRlbU5hbWVcIiBbZGlzYWJsZWRdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICA8L2R4LXRleHQtYm94PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbXQtMlwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0zXCI+XHJcbiAgICAgICAgICAgIDxkeC1udW1iZXItYm94IFxyXG4gICAgICAgICAgICAgIGxhYmVsPVwiUGxhbmxhbmFuIE1pa3RhclwiIFxyXG4gICAgICAgICAgICAgIFsodmFsdWUpXT1cIndvcmtPcmRlckluZm8ucGxhbm5lZFF0eVwiIFxyXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgIDwvZHgtbnVtYmVyLWJveD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0zXCI+XHJcbiAgICAgICAgICAgIDxkeC1udW1iZXItYm94IFxyXG4gICAgICAgICAgICAgIGxhYmVsPVwiVGFtYW1sYW5hbiBNaWt0YXJcIiBcclxuICAgICAgICAgICAgICBbKHZhbHVlKV09XCJ3b3JrT3JkZXJJbmZvLmNtcGx0UXR5XCIgXHJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInRydWVcIj5cclxuICAgICAgICAgICAgPC9keC1udW1iZXItYm94PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTNcIj5cclxuICAgICAgICAgICAgPGR4LXRleHQtYm94IFxyXG4gICAgICAgICAgICAgIGxhYmVsPVwiRGVwb1wiIFxyXG4gICAgICAgICAgICAgIFsodmFsdWUpXT1cIndvcmtPcmRlckluZm8ud2FyZWhvdXNlXCIgXHJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInRydWVcIj5cclxuICAgICAgICAgICAgPC9keC10ZXh0LWJveD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTNcIj5cclxuICAgICAgICAgICAgPGR4LXRleHQtYm94IFxyXG4gICAgICAgICAgICAgIGxhYmVsPVwiQW1iYWxhaiBMb3RcIiBcclxuICAgICAgICAgICAgICBbKHZhbHVlKV09XCJ3b3JrT3JkZXJJbmZvLnVfVFJLQU1CQUxBSkxPVFwiIFxyXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgIDwvZHgtdGV4dC1ib3g+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPCEtLSBQYWxsZXQgVHlwZSBTZWxlY3Rpb24gLS0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtdC0zXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgIDxkeC1yYWRpby1ncm91cCAjcGFsZXRUaXBpUmVmIFtpdGVtc109XCJwYWxldFRpcGxlcmlcIiBsYXlvdXQ9XCJob3Jpem9udGFsXCIgWyh2YWx1ZSldPVwicGFsZXRUaXBpXCJcclxuICAgICAgICAgICAgICAob25WYWx1ZUNoYW5nZWQpPVwib25QYWxldFRpcGlDaGFuZ2UoKVwiPlxyXG4gICAgICAgICAgICA8L2R4LXJhZGlvLWdyb3VwPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDwhLS0gS29saSBDb3VudCBmb3IgS0lTTUkgUGFsbGV0IC0tPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbXQtMlwiICpuZ0lmPVwicGFsZXRUaXBpID09PSAnS0lTTUknXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgPGR4LW51bWJlci1ib3ggI2tvbGlBZGV0UmVmIGxhYmVsPVwiS29saSBBZGVkaVwiIFsodmFsdWUpXT1cImtvbGlBZGV0XCIgKG9uVmFsdWVDaGFuZ2VkKT1cIm9uS29saUFkZXRDaGFuZ2UoKVwiXHJcbiAgICAgICAgICAgICAgW21pbl09XCIxXCI+XHJcbiAgICAgICAgICAgIDwvZHgtbnVtYmVyLWJveD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8IS0tIENhbGN1bGF0ZWQgVG90YWwgUXVhbnRpdHkgLS0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtdC0yXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgPGR4LW51bWJlci1ib3ggbGFiZWw9XCJUb3BsYW0gTWlrdGFyIChBZGV0KVwiIFsodmFsdWUpXT1cInRvcGxhbU1pa3RhclwiIFtkaXNhYmxlZF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICBbc3R5bGluZ01vZGVdPVwiJ2ZpbGxlZCdcIj5cclxuICAgICAgICAgICAgPC9keC1udW1iZXItYm94PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgPGR4LW51bWJlci1ib3ggbGFiZWw9XCJLb2xpIMSww6dpIEFkZXRcIiBbKHZhbHVlKV09XCJ3b3JrT3JkZXJJbmZvLnNhbFBhY2tVblwiIFtkaXNhYmxlZF09XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgIDwvZHgtbnVtYmVyLWJveD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8IS0tIFF1YWxpdHkgU3RhdHVzIEluZm8gLS0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtdC0yXCIgKm5nSWY9XCJ3b3JrT3JkZXJJbmZvLnVfS2FsaXRlRHVydW11XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhbGVydCBhbGVydC1pbmZvXCIgcm9sZT1cImFsZXJ0XCI+XHJcbiAgICAgICAgICAgICAgPHN0cm9uZz5LYWxpdGUgRHVydW11Ojwvc3Ryb25nPiB7eyB3b3JrT3JkZXJJbmZvLnVfS2FsaXRlRHVydW11IH19XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDwhLS0gUmVjZWlwdCBIaXN0b3J5IC0tPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbXQtM1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMlwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnctc2VtaWJvbGQgbWItMVwiIHN0eWxlPVwiZm9udC1zaXplOiAxM3B4O1wiPlxyXG4gICAgICAgICAgICAgIMOccmV0aW1kZW4gR2lyacWfIEhhcmVrZXRsZXJpXHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZHgtZGF0YS1ncmlkIFtkYXRhU291cmNlXT1cIndvcmtPcmRlckluZm8ucmVjZWlwdEhpc3RvcnlcIiBbc2hvd0JvcmRlcnNdPVwidHJ1ZVwiIFtjb2x1bW5BdXRvV2lkdGhdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgW3dvcmRXcmFwRW5hYmxlZF09XCJmYWxzZVwiIFtyb3dBbHRlcm5hdGlvbkVuYWJsZWRdPVwidHJ1ZVwiIFtob3ZlclN0YXRlRW5hYmxlZF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICBbbm9EYXRhVGV4dF09XCInSGVuw7x6IGdpcmnFnyBoYXJla2V0aSBidWx1bm1hbWFrdGFkxLFyLidcIiBbaGVpZ2h0XT1cIidhdXRvJ1wiPlxyXG4gICAgICAgICAgICAgIDxkeG8tc2Nyb2xsaW5nIG1vZGU9XCJzdGFuZGFyZFwiPjwvZHhvLXNjcm9sbGluZz5cclxuICAgICAgICAgICAgICA8ZHhvLXBhZ2luZyBbZW5hYmxlZF09XCJmYWxzZVwiPjwvZHhvLXBhZ2luZz5cclxuICAgICAgICAgICAgICA8ZHhpLWNvbHVtbiBjYXB0aW9uPVwiI1wiIG5hbWU9XCJyb3dOdW1cIiBbd2lkdGhdPVwiNDBcIiBhbGlnbm1lbnQ9XCJjZW50ZXJcIiBbY2FsY3VsYXRlQ2VsbFZhbHVlXT1cImNhbGNSb3dJbmRleFwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJkb2NOdW1cIiBjYXB0aW9uPVwiQmVsZ2UgTm9cIiBbbWluV2lkdGhdPVwiMTEwXCIgYWxpZ25tZW50PVwiY2VudGVyXCI+PC9keGktY29sdW1uPlxyXG4gICAgICAgICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cInBhY2tRdWFudGl0eVwiIGNhcHRpb249XCJLb2xpIEFkZWRpXCIgZGF0YVR5cGU9XCJudW1iZXJcIiBbbWluV2lkdGhdPVwiNzVcIiBhbGlnbm1lbnQ9XCJyaWdodFwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJ3aHNOYW1lXCIgY2FwdGlvbj1cIkRlcG9cIiBbbWluV2lkdGhdPVwiMTAwXCI+PC9keGktY29sdW1uPlxyXG4gICAgICAgICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cImRvY1N0YXR1c1wiIGNhcHRpb249XCJEdXJ1bVwiIFttaW5XaWR0aF09XCIxMDVcIiBhbGlnbm1lbnQ9XCJjZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgW2NhbGN1bGF0ZUNlbGxWYWx1ZV09XCJjYWxjRG9jU3RhdHVzXCI+XHJcbiAgICAgICAgICAgICAgPC9keGktY29sdW1uPlxyXG4gICAgICAgICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cInVzZXJDb2RlXCIgY2FwdGlvbj1cIkt1bGxhbsSxY8SxXCIgW21pbldpZHRoXT1cIjgwXCIgYWxpZ25tZW50PVwiY2VudGVyXCI+PC9keGktY29sdW1uPlxyXG4gICAgICAgICAgICAgIDxkeG8tc3VtbWFyeT5cclxuICAgICAgICAgICAgICAgIDxkeGktdG90YWwtaXRlbSBjb2x1bW49XCJkb2NOdW1cIiBzdW1tYXJ5VHlwZT1cImNvdW50XCIgZGlzcGxheUZvcm1hdD1cIlRvcGxhbVwiPjwvZHhpLXRvdGFsLWl0ZW0+XHJcbiAgICAgICAgICAgICAgICA8ZHhpLXRvdGFsLWl0ZW0gY29sdW1uPVwicGFja1F1YW50aXR5XCIgc3VtbWFyeVR5cGU9XCJzdW1cIiBkaXNwbGF5Rm9ybWF0PVwiezB9XCIgW3ZhbHVlRm9ybWF0XT1cImZvcm1hdE51bWJlclwiPjwvZHhpLXRvdGFsLWl0ZW0+XHJcbiAgICAgICAgICAgICAgPC9keG8tc3VtbWFyeT5cclxuICAgICAgICAgICAgPC9keC1kYXRhLWdyaWQ+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9hYnAtcGFnZT4iXX0=
|
|
226
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGl0LWZpbGxpbmctcmVjZWlwdC1mcm9tLXByb2R1Y3Rpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdXJldGltLXlvbmV0aW1pL3NyYy9saWIvY29tcG9uZW50cy9oaXQtZmlsbGluZy1yZWNlaXB0LWZyb20tcHJvZHVjdGlvbi9oaXQtZmlsbGluZy1yZWNlaXB0LWZyb20tcHJvZHVjdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91cmV0aW0teW9uZXRpbWkvc3JjL2xpYi9jb21wb25lbnRzL2hpdC1maWxsaW5nLXJlY2VpcHQtZnJvbS1wcm9kdWN0aW9uL2hpdC1maWxsaW5nLXJlY2VpcHQtZnJvbS1wcm9kdWN0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDOzs7Ozs7Ozs7QUFlN0QsTUFBTSxPQUFPLHdDQUF3QztJQWlCbkQsWUFDVSxPQUErQyxFQUMvQyxZQUFpQyxFQUNqQyxNQUFjO1FBRmQsWUFBTyxHQUFQLE9BQU8sQ0FBd0M7UUFDL0MsaUJBQVksR0FBWixZQUFZLENBQXFCO1FBQ2pDLFdBQU0sR0FBTixNQUFNLENBQVE7UUFkeEIsY0FBUyxHQUFZLEtBQUssQ0FBQztRQUMzQixhQUFRLEdBQVksS0FBSyxDQUFDO1FBQzFCLHNCQUFpQixHQUFZLEtBQUssQ0FBQztRQUNuQyxrQkFBYSxHQUF3QixJQUFJLENBQUM7UUFFMUMsa0JBQWtCO1FBQ2xCLGNBQVMsR0FBVyxLQUFLLENBQUMsQ0FBQyxlQUFlO1FBQzFDLGlCQUFZLEdBQUcsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDaEMsYUFBUSxHQUFXLElBQUksQ0FBQztRQUN4QixpQkFBWSxHQUFXLENBQUMsQ0FBQztRQWdNekIsaUJBQVksR0FBRyxD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O2dCQUNkLElBQUksQ0FBQyxjQUFjLEVBQUUsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3hDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNSLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7cUlBalBVLHdDQUF3Qzt5SEFBeEMsd0NBQXdDLCtYQ2ZyRCw4NE5Bc0pXOzJGRHZJRSx3Q0FBd0M7a0JBTHBELFNBQVM7K0JBQ0UseUNBQXlDO29MQUtOLGNBQWM7c0JBQTFELFNBQVM7dUJBQUMsYUFBYSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFDRyxjQUFjO3NCQUEzRCxTQUFTO3VCQUFDLGNBQWMsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBQ0MsY0FBYztzQkFBMUQsU0FBUzt1QkFBQyxhQUFhLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBWaWV3Q2hpbGQsIE5nWm9uZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBEeE51bWJlckJveENvbXBvbmVudCwgRHhSYWRpb0dyb3VwQ29tcG9uZW50IH0gZnJvbSAnZGV2ZXh0cmVtZS1hbmd1bGFyJztcclxuaW1wb3J0IHtcclxuICBIaXRGaWxsaW5nUmVjZWlwdEZyb21Qcm9kdWN0aW9uU2VydmljZSxcclxuICBHZXRXb3JrT3JkZXJJbmZvRHRvLFxyXG4gIFdvcmtPcmRlckxpbmVEdG8sXHJcbiAgUmVjZWlwdEhpc3RvcnlJdGVtRHRvXHJcbn0gZnJvbSAnLi4vLi4vaGl0LXByb3h5L2hpdC1maWxsaW5nLXJlY2VpcHQtZnJvbS1wcm9kdWN0aW9uL2hpdC1maWxsaW5nLXJlY2VpcHQtZnJvbS1wcm9kdWN0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb25maXJtYXRpb25TZXJ2aWNlIH0gZnJvbSAnQGFicC9uZy50aGVtZS5zaGFyZWQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItaGl0LWZpbGxpbmctcmVjZWlwdC1mcm9tLXByb2R1Y3Rpb24nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9oaXQtZmlsbGluZy1yZWNlaXB0LWZyb20tcHJvZHVjdGlvbi5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vaGl0LWZpbGxpbmctcmVjZWlwdC1mcm9tLXByb2R1Y3Rpb24uY29tcG9uZW50LmNzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgSGl0RmlsbGluZ1JlY2VpcHRGcm9tUHJvZHVjdGlvbkNvbXBvbmVudCB7XHJcbiAgQFZpZXdDaGlsZCgnaXNFbXJpTm9SZWYnLCB7IHN0YXRpYzogZmFsc2UgfSkgbm1iQm94SXNFbXJpTm86IER4TnVtYmVyQm94Q29tcG9uZW50O1xyXG4gIEBWaWV3Q2hpbGQoJ3BhbGV0VGlwaVJlZicsIHsgc3RhdGljOiBmYWxzZSB9KSByYWRpb1BhbGV0VGlwaTogRHhSYWRpb0dyb3VwQ29tcG9uZW50O1xyXG4gIEBWaWV3Q2hpbGQoJ2tvbGlBZGV0UmVmJywgeyBzdGF0aWM6IGZhbHNlIH0pIG5tYkJveEtvbGlBZGV0OiBEeE51bWJlckJveENvbXBvbmVudDtcclxuXHJcbiAgaXNFbXJpTm86IG51bWJlcjtcclxuICBpc0xvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBpc1NhdmluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGlzV29ya09yZGVyTG9hZGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgd29ya09yZGVySW5mbzogR2V0V29ya09yZGVySW5mb0R0byA9IG51bGw7XHJcbiAgXHJcbiAgLy8gUGFsbGV0IGNvbnRyb2xzXHJcbiAgcGFsZXRUaXBpOiBzdHJpbmcgPSAnVEFNJzsgLy8gVEFNIG9yIEtJU01JXHJcbiAgcGFsZXRUaXBsZXJpID0gWydUQU0nLCAnS0lTTUknXTtcclxuICBrb2xpQWRldDogbnVtYmVyID0gbnVsbDtcclxuICB0b3BsYW1NaWt0YXI6IG51bWJlciA9IDA7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBzZXJ2aWNlOiBIaXRGaWxsaW5nUmVjZWlwdEZyb21Qcm9kdWN0aW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgY29uZmlybWF0aW9uOiBDb25maXJtYXRpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZVxyXG4gICkge31cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICAvLyBJbml0aWFsaXplXHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICB0aGlzLmZvY3VzT25Jc0VtcmlObygpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgZ2V0UHJvZHVjdGlvbk9yZGVyKCkge1xyXG4gICAgaWYgKCF0aGlzLmlzRW1yaU5vKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLmlzV29ya09yZGVyTG9hZGVkID0gZmFsc2U7XHJcblxyXG4gICAgdGhpcy5zZXJ2aWNlLmdldFdvcmtPcmRlckluZm8odGhpcy5pc0VtcmlObykuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogcmVzcG9uc2UgPT4ge1xyXG4gICAgICAgIGlmIChyZXNwb25zZT8uaXNTdWNjZXNzZnVsICYmIHJlc3BvbnNlLml0ZW1zKSB7XHJcbiAgICAgICAgICB0aGlzLndvcmtPcmRlckluZm8gPSByZXNwb25zZS5pdGVtcztcclxuICAgICAgICAgIHRoaXMuaXNXb3JrT3JkZXJMb2FkZWQgPSB0cnVlO1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAvLyBDYWxjdWxhdGUgZGVmYXVsdCB2YWx1ZXMgZm9yIFRBTSBwYWxsZXRcclxuICAgICAgICAgIHRoaXMuY2FsY3VsYXRlVG90YWxRdWFudGl0eSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogZSA9PiB7XHJcbiAgICAgICAgdGhpcy5pc1dvcmtPcmRlckxvYWRlZCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5jb25maXJtYXRpb24uc3RhdHVzJC5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgbmV4dDogKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmNsZWFyQWxsKCk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvblBhbGV0VGlwaUNoYW5nZSgpIHtcclxuICAgIHRoaXMuY2FsY3VsYXRlVG90YWxRdWFudGl0eSgpO1xyXG4gICAgXHJcbiAgICBpZiAodGhpcy5wYWxldFRpcGkgPT09ICdLSVNNSScpIHtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5ubWJCb3hLb2xpQWRldD8uaW5zdGFuY2UuZm9jdXMoKTtcclxuICAgICAgfSwgMTAwKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uS29saUFkZXRDaGFuZ2UoKSB7XHJcbiAgICB0aGlzLmNhbGN1bGF0ZVRvdGFsUXVhbnRpdHkoKTtcclxuICB9XHJcblxyXG4gIGNhbGN1bGF0ZVRvdGFsUXVhbnRpdHkoKSB7XHJcbiAgICBpZiAoIXRoaXMud29ya09yZGVySW5mbykge1xyXG4gICAgICB0aGlzLnRvcGxhbU1pa3RhciA9IDA7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBzYWxQYWNrVW4gPSB0aGlzLndvcmtPcmRlckluZm8uc2FsUGFja1VuIHx8IDA7XHJcbiAgICBkZWJ1Z2dlcjtcclxuICAgIGlmICh0aGlzLnBhbGV0VGlwaSA9PT0gJ1RBTScpIHtcclxuICAgICAgLy8gVGFtIFBhbGV0OiBQYWxsZXQgaGVpZ2h0IMOXIFBpZWNlcyBwZXIgYm94XHJcbiAgICAgIGNvbnN0IHBhbGV0WXVrc2VrbGlrID0gdGhpcy53b3JrT3JkZXJJbmZvLnVfREtwYWxldHl1c2VrbGlrIHx8IDA7XHJcbiAgICAgIHRoaXMudG9wbGFtTWlrdGFyID0gcGFsZXRZdWtzZWtsaWsgKiBzYWxQYWNrVW47XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyBLxLFzbWkgUGFsZXQ6IEtvbGkgY291bnQgw5cgUGllY2VzIHBlciBib3hcclxuICAgICAgY29uc3Qga29saUFkZXQgPSB0aGlzLmtvbGlBZGV0IHx8IDA7XHJcbiAgICAgIGNvbnN0IGtpc21pTWlrdGFyID0ga29saUFkZXQgKiBzYWxQYWNrVW47XHJcbiAgICAgIFxyXG4gICAgICAvLyBDYWxjdWxhdGUgVEFNIHBhbGxldCBxdWFudGl0eSBmb3IgY29tcGFyaXNvblxyXG4gICAgICBjb25zdCBwYWxldFl1a3Nla2xpayA9IHRoaXMud29ya09yZGVySW5mby51X0RLcGFsZXR5dXNla2xpayB8fCAwO1xyXG4gICAgICBjb25zdCB0YW1QYWxldE1pa3RhciA9IHBhbGV0WXVrc2VrbGlrICogc2FsUGFja1VuO1xyXG4gICAgICBcclxuICAgICAgLy8gS0lTTUkgcXVhbnRpdHkgc2hvdWxkIG5vdCBleGNlZWQgVEFNIHBhbGxldCBxdWFudGl0eVxyXG4gICAgICBpZiAoa2lzbWlNaWt0YXIgPiB0YW1QYWxldE1pa3Rhcikge1xyXG4gICAgICAgIHRoaXMudG9wbGFtTWlrdGFyID0gdGFtUGFsZXRNaWt0YXI7XHJcbiAgICAgICAgXHJcbiAgICAgICAgLy8gUmVzZXQgdG8gbWF4aW11bSBhbGxvd2VkIHZhbHVlIGFzeW5jaHJvbm91c2x5IHRvIGF2b2lkIGNoYW5nZSBkZXRlY3Rpb24gbG9vcFxyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5rb2xpQWRldCA9IHBhbGV0WXVrc2VrbGlrO1xyXG4gICAgICAgIH0sIDApO1xyXG4gICAgICAgIFxyXG4gICAgICAgIHRoaXMuY29uZmlybWF0aW9uLndhcm4oJycsIGBLb2xpIGFkZWRpICR7cGFsZXRZdWtzZWtsaWt9J2kgZ2XDp2VtZXohIChUQU0gcGFsZXQgbWlrdGFyxLE6ICR7dGFtUGFsZXRNaWt0YXJ9KWAsIHtcclxuICAgICAgICAgIGhpZGVZZXNCdG46IHRydWUsXHJcbiAgICAgICAgICBjYW5jZWxUZXh0OiAnS2FwYXQnLFxyXG4gICAgICAgICAgZGlzbWlzc2libGU6IGZhbHNlLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMudG9wbGFtTWlrdGFyID0ga2lzbWlNaWt0YXI7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFzeW5jIHNhdmUoKSB7XHJcbiAgICBkZWJ1Z2dlcjtcclxuICAgIGlmICghdGhpcy5pc0VtcmlObyB8fCAhdGhpcy53b3JrT3JkZXJJbmZvIHx8IHRoaXMudG9wbGFtTWlrdGFyIDw9IDAgfHwgdGhpcy5pc1NhdmluZykge1xyXG4gICAgICBpZiAoIXRoaXMuaXNTYXZpbmcpIHtcclxuICAgICAgICB0aGlzLmNvbmZpcm1hdGlvbi53YXJuKCcnLCAnTMO8dGZlbiB0w7xtIGFsYW5sYXLEsSBkb2xkdXJ1biEnLCB7XHJcbiAgICAgICAgICBoaWRlWWVzQnRuOiB0cnVlLFxyXG4gICAgICAgICAgY2FuY2VsVGV4dDogJ0thcGF0JyxcclxuICAgICAgICAgIGRpc21pc3NpYmxlOiBmYWxzZSxcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgLy8gQ2hlY2sgaWYgY29tcGxldGVkIHF1YW50aXR5IHdpbGwgZXhjZWVkIHBsYW5uZWQgcXVhbnRpdHlcclxuICAgIGNvbnN0IHJlbWFpbmluZ1F0eSA9IHRoaXMud29ya09yZGVySW5mby5wbGFubmVkUXR5IC0gdGhpcy53b3JrT3JkZXJJbmZvLmNtcGx0UXR5O1xyXG4gICAgaWYgKHRoaXMudG9wbGFtTWlrdGFyID4gcmVtYWluaW5nUXR5KSB7XHJcbiAgICAgIHRoaXMuY29uZmlybWF0aW9uLndhcm4oJycsIGBHaXJpbGVuIG1pa3RhciAoJHt0aGlzLnRvcGxhbU1pa3Rhcn0pIGthbGFuIG1pa3RhcsSxICgke3JlbWFpbmluZ1F0eX0pIGHFn8SxeW9yIWAsIHtcclxuICAgICAgICBoaWRlWWVzQnRuOiB0cnVlLFxyXG4gICAgICAgIGNhbmNlbFRleHQ6ICdLYXBhdCcsXHJcbiAgICAgICAgZGlzbWlzc2libGU6IGZhbHNlLFxyXG4gICAgICB9KTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHNhdmVEYXRhID0ge1xyXG4gICAgICBkb2NFbnRyeTogdGhpcy5pc0VtcmlObyxcclxuICAgICAgcGFsbGV0VHlwZTogdGhpcy5wYWxldFRpcGksXHJcbiAgICAgIGtvbGlDb3VudDogdGhpcy5wYWxldFRpcGkgPT09ICdLSVNNSScgPyB0aGlzLmtvbGlBZGV0IDogbnVsbCxcclxuICAgICAgdG90YWxRdWFudGl0eTogdGhpcy50b3BsYW1NaWt0YXIsXHJcbiAgICAgIHdhcmVob3VzZUNvZGU6IHRoaXMud29ya09yZGVySW5mby53YXJlaG91c2UsXHJcbiAgICAgIGJhdGNoTnVtYmVyOiAnJywgLy8gQmF0Y2ggbnVtYmVyIHdpbGwgYmUgZ2VuZXJhdGVkIGJ5IFNBUFxyXG4gICAgICBjb21wb25lbnRzVG9Db25zdW1lOiB0aGlzLnByZXBhcmVDb21wb25lbnRzVG9Db25zdW1lKClcclxuICAgIH07XHJcblxyXG4gICAgdGhpcy5pc1NhdmluZyA9IHRydWU7XHJcbiAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLnNlcnZpY2UuY3JlYXRlUmVjZWlwdChzYXZlRGF0YSkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogcmVzcG9uc2UgPT4ge1xyXG4gICAgICAgIGlmIChyZXNwb25zZT8uaXNTdWNjZXNzZnVsKSB7XHJcbiAgICAgICAgICB0aGlzLmNvbmZpcm1hdGlvbi5zdWNjZXNzKCcnLCAnw5xyZXRpbWRlbiBnaXJpxZ8gYmHFn2FyxLF5bGEgZ2Vyw6dla2xlxZ90aXJpbGRpIScsIHtcclxuICAgICAgICAgICAgaGlkZVllc0J0bjogdHJ1ZSxcclxuICAgICAgICAgICAgY2FuY2VsVGV4dDogJ0thcGF0JyxcclxuICAgICAgICAgICAgZGlzbWlzc2libGU6IGZhbHNlLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLmNsZWFyQWxsKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuaXNTYXZpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogZSA9PiB7XHJcbiAgICAgICAgdGhpcy5pc1NhdmluZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByZXBhcmVDb21wb25lbnRzVG9Db25zdW1lKCk6IGFueVtdIHtcclxuICAgIGlmICghdGhpcy53b3JrT3JkZXJJbmZvIHx8ICF0aGlzLndvcmtPcmRlckluZm8ubGluZXMpIHtcclxuICAgICAgcmV0dXJuIFtdO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGNvbXBvbmVudHMgPSBbXTtcclxuICAgIGNvbnN0IGl0ZW1Db2RlID0gdGhpcy53b3JrT3JkZXJJbmZvLml0ZW1Db2RlO1xyXG5cclxuICAgIC8vIERldGVybWluZSBpZiB0aGlzIGlzIFlNIG9yIDE1MSogcHJvZHVjdFxyXG4gICAgY29uc3QgaXNZTSA9IGl0ZW1Db2RlLnN0YXJ0c1dpdGgoJ1lNJyk7XHJcbiAgICBjb25zdCBpczE1MSA9IGl0ZW1Db2RlLnN0YXJ0c1dpdGgoJzE1MScpO1xyXG5cclxuICAgIC8vIEdldCBjb250cm9sbGVkIGxpbmVzIChZTS8xNTEqIGl0ZW1zIG1hcmtlZCB3aXRoIFVfS29udHJvbD0nRScpXHJcbiAgICBjb25zdCBjb250cm9sbGVkTGluZXMgPSB0aGlzLndvcmtPcmRlckluZm8ubGluZXMuZmlsdGVyKGxpbmUgPT4gXHJcbiAgICAgIGxpbmUuaXNDb250cm9sbGVkICYmIGxpbmUuYmF0Y2hOdW1iZXJcclxuICAgICk7XHJcblxyXG4gICAgLy8gRm9yIFlNLzE1MSogcHJvZHVjdHMsIGNvbnN1bWUgYnkgbG90IGZyb20gY29udHJvbCBzY3JlZW5cclxuICAgIGZvciAoY29uc3QgbGluZSBvZiBjb250cm9sbGVkTGluZXMpIHtcclxuICAgICAgICBjb21wb25lbnRzLnB1c2goe1xyXG4gICAgICAgICAgaXRlbUNvZGU6IGxpbmUuaXRlbUNvZGUsXHJcbiAgICAgICAgICBxdWFudGl0eTogbGluZS5pc3N1ZWRRdHksXHJcbiAgICAgICAgICB3YXJlaG91c2VDb2RlOiBsaW5lLndhcmVob3VzZSxcclxuICAgICAgICAgIGJhdGNoTnVtYmVyOiBsaW5lLmJhdGNoTnVtYmVyLFxyXG4gICAgICAgICAgYmFzZUxpbmU6IGxpbmUubGluZU51bVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEZvciBvdGhlciBjb21wb25lbnRzLCB1c2UgXCJUZXlpdCBzb25yYXPEsSBvdG9tYXRpayDDp2VrbWVcIiBsb2dpY1xyXG4gICAgLy8gKFRoaXMgd291bGQgYmUgaGFuZGxlZCBieSB0aGUgYmFja2VuZCB3aXRoIEZJRk8gZm9yIGJhdGNoL3NlcmlhbCBpdGVtcylcclxuXHJcbiAgICByZXR1cm4gY29tcG9uZW50cztcclxuICB9XHJcblxyXG4gIGNhbGNSb3dJbmRleCA9IChyb3c6IFJlY2VpcHRIaXN0b3J5SXRlbUR0byk6IG51bWJlciA9PlxyXG4gICAgKHRoaXMud29ya09yZGVySW5mbz8ucmVjZWlwdEhpc3Rvcnk/LmluZGV4T2Yocm93KSA/PyAtMSkgKyAxO1xyXG5cclxuICBjYWxjRG9jU3RhdHVzID0gKHJvdzogUmVjZWlwdEhpc3RvcnlJdGVtRHRvKTogc3RyaW5nID0+XHJcbiAgICByb3cuZG9jU3RhdHVzID09PSAnQycgPyAnVGFtYW1sYW5kxLEnIDogJ0Jla2xlbWVkZSc7XHJcblxyXG4gIGZvcm1hdE51bWJlciA9ICh2YWx1ZTogbnVtYmVyKSA9PiB2YWx1ZT8udG9Mb2NhbGVTdHJpbmcoJ3RyLVRSJykgPz8gJyc7XHJcblxyXG5cclxuICBjbGVhckFsbCgpIHtcclxuICAgIHRoaXMuaXNXb3JrT3JkZXJMb2FkZWQgPSBmYWxzZTtcclxuICAgIHRoaXMuaXNFbXJpTm8gPSBudWxsO1xyXG4gICAgdGhpcy53b3JrT3JkZXJJbmZvID0gbnVsbDtcclxuICAgIHRoaXMucGFsZXRUaXBpID0gJ1RBTSc7XHJcbiAgICB0aGlzLmtvbGlBZGV0ID0gbnVsbDtcclxuICAgIHRoaXMudG9wbGFtTWlrdGFyID0gMDtcclxuICAgIHRoaXMuaXNTYXZpbmcgPSBmYWxzZTtcclxuICAgIHRoaXMuZm9jdXNPbklzRW1yaU5vKCk7XHJcbiAgfVxyXG5cclxuICBnZXQgaXNTYXZlQnV0dG9uRGlzYWJsZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gIXRoaXMuaXNFbXJpTm8gfHwgXHJcbiAgICAgICAgICAgIXRoaXMud29ya09yZGVySW5mbyB8fCBcclxuICAgICAgICAgICB0aGlzLnRvcGxhbU1pa3RhciA8PSAwIHx8XHJcbiAgICAgICAgICAgKHRoaXMucGFsZXRUaXBpID09PSAnS0lTTUknICYmICghdGhpcy5rb2xpQWRldCB8fCB0aGlzLmtvbGlBZGV0IDw9IDApKSB8fFxyXG4gICAgICAgICAgIHRoaXMuaXNTYXZpbmc7XHJcbiAgfVxyXG5cclxuICBmb2N1c09uSXNFbXJpTm8oKSB7XHJcbiAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLm5tYkJveElzRW1yaU5vPy5pbnN0YW5jZS5mb2N1cygpO1xyXG4gICAgICB9LCAwKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPGFicC1wYWdlIFticmVhZGNydW1iXT1cImZhbHNlXCI+XHJcbiAgPGFicC1wYWdlLXRvb2xiYXItY29udGFpbmVyIGNsYXNzPVwiY29sXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgIDxoMyBjbGFzcz1cInBhZ2UtdGl0bGVcIj5cclxuICAgICAgICDDnHJldGltZGVuIEdpcmnFn1xyXG4gICAgICA8L2gzPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwicm93IHRleHQtbGctZW5kIHB0LTJcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbC02XCI+XHJcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tc3VjY2VzcyBidG4tc21cIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInNhdmUoKVwiIFtkaXNhYmxlZF09XCJpc1NhdmVCdXR0b25EaXNhYmxlZFwiPlxyXG4gICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1jaGVjayBtZS0xXCI+PC9pPlxyXG4gICAgICAgICAgw5xyZXRpbWRlbiBHaXJpxZ8gWWFwXHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLTZcIj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi13YXJuaW5nIGJ0bi1zbVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiY2xlYXJBbGwoKVwiPlxyXG4gICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1icm9vbSBtZS0xXCI+PC9pPlxyXG4gICAgICAgICAgVGVtaXpsZVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvYWJwLXBhZ2UtdG9vbGJhci1jb250YWluZXI+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJjYXJkIG10LTJcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHlcIiBzdHlsZT1cImhlaWdodDogY2FsYygxMDB2aCAtIDI0MXB4KTsgb3ZlcmZsb3c6IGF1dG87XCI+XHJcbiAgICAgIDwhLS0gV29yayBPcmRlciBJbnB1dCAtLT5cclxuICAgICAgPGRpdiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7XCI+XHJcbiAgICAgICAgPGR4LW51bWJlci1ib3ggI2lzRW1yaU5vUmVmIGNsYXNzPVwibWUtMVwiIHN0eWxlPVwid2lkdGg6MTAwJTtcIiBsYWJlbD1cIsSwxZ8gRW1yaSBOb1wiIFsodmFsdWUpXT1cImlzRW1yaU5vXCJcclxuICAgICAgICAgIChvbkNoYW5nZSk9XCJnZXRQcm9kdWN0aW9uT3JkZXIoKVwiIChvbkVudGVyS2V5KT1cImdldFByb2R1Y3Rpb25PcmRlcigpXCIgW2Rpc2FibGVkXT1cImlzV29ya09yZGVyTG9hZGVkXCI+XHJcbiAgICAgICAgPC9keC1udW1iZXItYm94PlxyXG4gICAgICAgIDxkeC1idXR0b24gc3R5bGU9XCJtYXJnaW4tdG9wOiA3LjVweDtcIiBpY29uPVwic2VhcmNoXCIgdHlwZT1cImRlZmF1bHRcIiAob25DbGljayk9XCJnZXRQcm9kdWN0aW9uT3JkZXIoKVwiXHJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNXb3JrT3JkZXJMb2FkZWRcIj5cclxuICAgICAgICA8L2R4LWJ1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8IS0tIFdvcmsgT3JkZXIgSW5mb3JtYXRpb24gLS0+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtdC0zXCIgKm5nSWY9XCJpc1dvcmtPcmRlckxvYWRlZCAmJiB3b3JrT3JkZXJJbmZvXCI+XHJcbiAgICAgICAgPCEtLSBQcm9kdWN0IEluZm8gLS0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgIDxkeC10ZXh0LWJveCBsYWJlbD1cIsOccsO8biBLb2R1XCIgWyh2YWx1ZSldPVwid29ya09yZGVySW5mby5pdGVtQ29kZVwiIFtkaXNhYmxlZF09XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgIDwvZHgtdGV4dC1ib3g+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICA8ZHgtdGV4dC1ib3ggbGFiZWw9XCLDnHLDvG4gQWTEsVwiIFsodmFsdWUpXT1cIndvcmtPcmRlckluZm8uaXRlbU5hbWVcIiBbZGlzYWJsZWRdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICA8L2R4LXRleHQtYm94PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbXQtMlwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0zXCI+XHJcbiAgICAgICAgICAgIDxkeC1udW1iZXItYm94IFxyXG4gICAgICAgICAgICAgIGxhYmVsPVwiUGxhbmxhbmFuIE1pa3RhclwiIFxyXG4gICAgICAgICAgICAgIFsodmFsdWUpXT1cIndvcmtPcmRlckluZm8ucGxhbm5lZFF0eVwiIFxyXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgIDwvZHgtbnVtYmVyLWJveD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0zXCI+XHJcbiAgICAgICAgICAgIDxkeC1udW1iZXItYm94IFxyXG4gICAgICAgICAgICAgIGxhYmVsPVwiVGFtYW1sYW5hbiBNaWt0YXJcIiBcclxuICAgICAgICAgICAgICBbKHZhbHVlKV09XCJ3b3JrT3JkZXJJbmZvLmNtcGx0UXR5XCIgXHJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInRydWVcIj5cclxuICAgICAgICAgICAgPC9keC1udW1iZXItYm94PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTNcIj5cclxuICAgICAgICAgICAgPGR4LXRleHQtYm94IFxyXG4gICAgICAgICAgICAgIGxhYmVsPVwiRGVwb1wiIFxyXG4gICAgICAgICAgICAgIFsodmFsdWUpXT1cIndvcmtPcmRlckluZm8ud2FyZWhvdXNlXCIgXHJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInRydWVcIj5cclxuICAgICAgICAgICAgPC9keC10ZXh0LWJveD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTNcIj5cclxuICAgICAgICAgICAgPGR4LXRleHQtYm94IFxyXG4gICAgICAgICAgICAgIGxhYmVsPVwiQW1iYWxhaiBMb3RcIiBcclxuICAgICAgICAgICAgICBbKHZhbHVlKV09XCJ3b3JrT3JkZXJJbmZvLnVfVFJLQU1CQUxBSkxPVFwiIFxyXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgIDwvZHgtdGV4dC1ib3g+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPCEtLSBQYWxsZXQgVHlwZSBTZWxlY3Rpb24gLS0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtdC0zXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgIDxkeC1yYWRpby1ncm91cCAjcGFsZXRUaXBpUmVmIFtpdGVtc109XCJwYWxldFRpcGxlcmlcIiBsYXlvdXQ9XCJob3Jpem9udGFsXCIgWyh2YWx1ZSldPVwicGFsZXRUaXBpXCJcclxuICAgICAgICAgICAgICAob25WYWx1ZUNoYW5nZWQpPVwib25QYWxldFRpcGlDaGFuZ2UoKVwiPlxyXG4gICAgICAgICAgICA8L2R4LXJhZGlvLWdyb3VwPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDwhLS0gS29saSBDb3VudCBmb3IgS0lTTUkgUGFsbGV0IC0tPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbXQtMlwiICpuZ0lmPVwicGFsZXRUaXBpID09PSAnS0lTTUknXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgPGR4LW51bWJlci1ib3ggI2tvbGlBZGV0UmVmIGxhYmVsPVwiS29saSBBZGVkaVwiIFsodmFsdWUpXT1cImtvbGlBZGV0XCIgKG9uVmFsdWVDaGFuZ2VkKT1cIm9uS29saUFkZXRDaGFuZ2UoKVwiXHJcbiAgICAgICAgICAgICAgW21pbl09XCIxXCI+XHJcbiAgICAgICAgICAgIDwvZHgtbnVtYmVyLWJveD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8IS0tIENhbGN1bGF0ZWQgVG90YWwgUXVhbnRpdHkgLS0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtdC0yXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgPGR4LW51bWJlci1ib3ggbGFiZWw9XCJUb3BsYW0gTWlrdGFyIChBZGV0KVwiIFsodmFsdWUpXT1cInRvcGxhbU1pa3RhclwiIFtkaXNhYmxlZF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICBbc3R5bGluZ01vZGVdPVwiJ2ZpbGxlZCdcIj5cclxuICAgICAgICAgICAgPC9keC1udW1iZXItYm94PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgPGR4LW51bWJlci1ib3ggbGFiZWw9XCJLb2xpIMSww6dpIEFkZXRcIiBbKHZhbHVlKV09XCJ3b3JrT3JkZXJJbmZvLnNhbFBhY2tVblwiIFtkaXNhYmxlZF09XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgIDwvZHgtbnVtYmVyLWJveD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8IS0tIFF1YWxpdHkgU3RhdHVzIEluZm8gLS0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtdC0yXCIgKm5nSWY9XCJ3b3JrT3JkZXJJbmZvLnVfS2FsaXRlRHVydW11XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhbGVydCBhbGVydC1pbmZvXCIgcm9sZT1cImFsZXJ0XCI+XHJcbiAgICAgICAgICAgICAgPHN0cm9uZz5LYWxpdGUgRHVydW11Ojwvc3Ryb25nPiB7eyB3b3JrT3JkZXJJbmZvLnVfS2FsaXRlRHVydW11IH19XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDwhLS0gUmVjZWlwdCBIaXN0b3J5IC0tPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbXQtM1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMlwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnctc2VtaWJvbGQgbWItMVwiIHN0eWxlPVwiZm9udC1zaXplOiAxM3B4O1wiPlxyXG4gICAgICAgICAgICAgIMOccmV0aW1kZW4gR2lyacWfIEhhcmVrZXRsZXJpXHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZHgtZGF0YS1ncmlkIFtkYXRhU291cmNlXT1cIndvcmtPcmRlckluZm8ucmVjZWlwdEhpc3RvcnlcIiBbc2hvd0JvcmRlcnNdPVwidHJ1ZVwiIFtjb2x1bW5BdXRvV2lkdGhdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgW3dvcmRXcmFwRW5hYmxlZF09XCJmYWxzZVwiIFtyb3dBbHRlcm5hdGlvbkVuYWJsZWRdPVwidHJ1ZVwiIFtob3ZlclN0YXRlRW5hYmxlZF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICBbbm9EYXRhVGV4dF09XCInSGVuw7x6IGdpcmnFnyBoYXJla2V0aSBidWx1bm1hbWFrdGFkxLFyLidcIiBbaGVpZ2h0XT1cIidhdXRvJ1wiPlxyXG4gICAgICAgICAgICAgIDxkeG8tc2Nyb2xsaW5nIG1vZGU9XCJzdGFuZGFyZFwiPjwvZHhvLXNjcm9sbGluZz5cclxuICAgICAgICAgICAgICA8ZHhvLXBhZ2luZyBbZW5hYmxlZF09XCJmYWxzZVwiPjwvZHhvLXBhZ2luZz5cclxuICAgICAgICAgICAgICA8ZHhpLWNvbHVtbiBjYXB0aW9uPVwiI1wiIG5hbWU9XCJyb3dOdW1cIiBbd2lkdGhdPVwiNDBcIiBhbGlnbm1lbnQ9XCJjZW50ZXJcIiBbY2FsY3VsYXRlQ2VsbFZhbHVlXT1cImNhbGNSb3dJbmRleFwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJkb2NOdW1cIiBjYXB0aW9uPVwiQmVsZ2UgTm9cIiBbbWluV2lkdGhdPVwiMTEwXCIgYWxpZ25tZW50PVwiY2VudGVyXCI+PC9keGktY29sdW1uPlxyXG4gICAgICAgICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cImJhdGNoTnVtXCIgY2FwdGlvbj1cIlBhcnRpIE5vXCIgW21pbldpZHRoXT1cIjEzMFwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJwYWNrUXVhbnRpdHlcIiBjYXB0aW9uPVwiS29saSBBZGVkaVwiIGRhdGFUeXBlPVwibnVtYmVyXCIgW21pbldpZHRoXT1cIjc1XCIgYWxpZ25tZW50PVwicmlnaHRcIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwid2hzTmFtZVwiIGNhcHRpb249XCJEZXBvXCIgW21pbldpZHRoXT1cIjEwMFwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJkb2NTdGF0dXNcIiBjYXB0aW9uPVwiRHVydW1cIiBbbWluV2lkdGhdPVwiMTA1XCIgYWxpZ25tZW50PVwiY2VudGVyXCJcclxuICAgICAgICAgICAgICAgIFtjYWxjdWxhdGVDZWxsVmFsdWVdPVwiY2FsY0RvY1N0YXR1c1wiPlxyXG4gICAgICAgICAgICAgIDwvZHhpLWNvbHVtbj5cclxuICAgICAgICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJ1c2VyQ29kZVwiIGNhcHRpb249XCJLdWxsYW7EsWPEsVwiIFttaW5XaWR0aF09XCI4MFwiIGFsaWdubWVudD1cImNlbnRlclwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICAgICAgICA8ZHhvLXN1bW1hcnk+XHJcbiAgICAgICAgICAgICAgICA8ZHhpLXRvdGFsLWl0ZW0gY29sdW1uPVwiZG9jTnVtXCIgc3VtbWFyeVR5cGU9XCJjb3VudFwiIGRpc3BsYXlGb3JtYXQ9XCJUb3BsYW1cIj48L2R4aS10b3RhbC1pdGVtPlxyXG4gICAgICAgICAgICAgICAgPGR4aS10b3RhbC1pdGVtIGNvbHVtbj1cInBhY2tRdWFudGl0eVwiIHN1bW1hcnlUeXBlPVwic3VtXCIgZGlzcGxheUZvcm1hdD1cInswfVwiIFt2YWx1ZUZvcm1hdF09XCJmb3JtYXROdW1iZXJcIj48L2R4aS10b3RhbC1pdGVtPlxyXG4gICAgICAgICAgICAgIDwvZHhvLXN1bW1hcnk+XHJcbiAgICAgICAgICAgIDwvZHgtZGF0YS1ncmlkPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvYWJwLXBhZ2U+Il19
|