nxt-dropzone-wrapper 17.0.1 → 19.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,172 +0,0 @@
1
- /* eslint-disable @angular-eslint/no-output-rename */
2
- import { Component, EventEmitter, Input, Output, ViewChild, ViewEncapsulation } from '@angular/core';
3
- import { DropzoneDirective } from './dropzone.directive';
4
- import { NXT_DROPZONE_LISTENERS } from './dropzone.interfaces';
5
- import * as i0 from "@angular/core";
6
- import * as i1 from "@angular/common";
7
- import * as i2 from "./dropzone.directive";
8
- export class DropzoneComponent {
9
- constructor() {
10
- /** Disables / detaches Dropzone from the element */
11
- this.disabled = false;
12
- /** Message to show for the user on the upload area */
13
- this.message = 'Click or drag files to upload';
14
- /** Placeholder image to be shown as the upload area */
15
- this.placeholder = '';
16
- /** Use 'dropzone' class (use provided default styles) */
17
- this.useDropzoneClass = true;
18
- this.DZ_INIT = new EventEmitter();
19
- this.DZ_DROP = new EventEmitter();
20
- this.DZ_DRAGSTART = new EventEmitter();
21
- this.DZ_DRAGEND = new EventEmitter();
22
- this.DZ_DRAGENTER = new EventEmitter();
23
- this.DZ_DRAGOVER = new EventEmitter();
24
- this.DZ_DRAGLEAVE = new EventEmitter();
25
- this.DZ_PASTE = new EventEmitter();
26
- this.DZ_RESET = new EventEmitter();
27
- this.DZ_ADDEDFILE = new EventEmitter();
28
- this.DZ_ADDEDFILES = new EventEmitter();
29
- this.DZ_REMOVEDFILE = new EventEmitter();
30
- this.DZ_THUMBNAIL = new EventEmitter();
31
- this.DZ_ERROR = new EventEmitter();
32
- this.DZ_ERRORMULTIPLE = new EventEmitter();
33
- this.DZ_PROCESSING = new EventEmitter();
34
- this.DZ_PROCESSINGMULTIPLE = new EventEmitter();
35
- this.DZ_UPLOADPROGRESS = new EventEmitter();
36
- this.DZ_TOTALUPLOADPROGRESS = new EventEmitter();
37
- this.DZ_SENDING = new EventEmitter();
38
- this.DZ_SENDINGMULTIPLE = new EventEmitter();
39
- // eslint-disable-next-line @typescript-eslint/ban-types
40
- this.DZ_SUCCESS = new EventEmitter();
41
- this.DZ_SUCCESSMULTIPLE = new EventEmitter();
42
- this.DZ_CANCELED = new EventEmitter();
43
- this.DZ_CANCELEDMULTIPLE = new EventEmitter();
44
- this.DZ_COMPLETE = new EventEmitter();
45
- this.DZ_COMPLETEMULTIPLE = new EventEmitter();
46
- this.DZ_MAXFILESEXCEEDED = new EventEmitter();
47
- this.DZ_MAXFILESREACHED = new EventEmitter();
48
- this.DZ_QUEUECOMPLETE = new EventEmitter();
49
- }
50
- /** @internal */
51
- ngOnInit() { }
52
- /** @internal */
53
- getPlaceholder() {
54
- return 'url(' + encodeURI(this.placeholder) + ')';
55
- }
56
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: DropzoneComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
57
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.4", type: DropzoneComponent, selector: "nxt-dropzone", inputs: { disabled: "disabled", config: "config", message: "message", placeholder: "placeholder", useDropzoneClass: "useDropzoneClass" }, outputs: { DZ_INIT: "init", DZ_DROP: "drop", DZ_DRAGSTART: "dragStart", DZ_DRAGEND: "dragEnd", DZ_DRAGENTER: "dragEnter", DZ_DRAGOVER: "dragOver", DZ_DRAGLEAVE: "dragLeave", DZ_PASTE: "paste", DZ_RESET: "reset", DZ_ADDEDFILE: "addedFile", DZ_ADDEDFILES: "addedFiles", DZ_REMOVEDFILE: "removedFile", DZ_THUMBNAIL: "thumbnail", DZ_ERROR: "error", DZ_ERRORMULTIPLE: "errorMultiple", DZ_PROCESSING: "processing", DZ_PROCESSINGMULTIPLE: "processingMultiple", DZ_UPLOADPROGRESS: "uploadProgress", DZ_TOTALUPLOADPROGRESS: "totalUploadProgress", DZ_SENDING: "sending", DZ_SENDINGMULTIPLE: "sendingMultiple", DZ_SUCCESS: "success", DZ_SUCCESSMULTIPLE: "successMultiple", DZ_CANCELED: "canceled", DZ_CANCELEDMULTIPLE: "canceledMultiple", DZ_COMPLETE: "complete", DZ_COMPLETEMULTIPLE: "completeMultiple", DZ_MAXFILESEXCEEDED: "maxFilesExceeded", DZ_MAXFILESREACHED: "maxFilesReached", DZ_QUEUECOMPLETE: "queueComplete" }, providers: [{
58
- provide: NXT_DROPZONE_LISTENERS,
59
- useExisting: DropzoneComponent
60
- }], viewQueries: [{ propertyName: "directiveRef", first: true, predicate: DropzoneDirective, descendants: true }], ngImport: i0, template: "<div class=\"dz-wrapper\"\n [class.dropzone]=\"useDropzoneClass\"\n [nxtDropzone]=\"config\"\n [disabled]=\"disabled\">\n <div class=\"dz-message\"\n [class.disabled]=\"disabled\"\n [class.dz-placeholder]=\"placeholder\">\n <div class=\"dz-text\"\n [innerHTML]=\"config?.dictDefaultMessage || message\"></div>\n\n <div *ngIf=\"placeholder\"\n class=\"dz-image\"\n [style.background-image]=\"getPlaceholder()\"></div>\n </div>\n\n <ng-content></ng-content>\n</div>\n", styles: ["nxt-dropzone{display:flex;width:100%;height:auto}nxt-dropzone>.dropzone.dz-wrapper{overflow:auto;width:100%;min-height:0;max-height:100%;padding:0;border:none;color:#666;background:transparent;border-radius:0;display:grid;grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr;gap:16px}nxt-dropzone>.dropzone.dz-wrapper .dz-message{overflow:auto;min-height:60px;max-height:100%;border:2px dashed #aaa;background-color:#eee;display:flex;align-items:center;justify-content:center;margin:0;border-radius:5px;grid-column:span 2;grid-row:span 2}nxt-dropzone>.dropzone.dz-wrapper .dz-message .dz-text{padding:8px 16px;text-align:center}nxt-dropzone>.dropzone.dz-wrapper .dz-message .dz-image{width:100%;height:100%;background-size:contain;background-repeat:no-repeat;background-position:50% 50%}nxt-dropzone>.dropzone.dz-wrapper .dz-message.disabled{cursor:not-allowed}nxt-dropzone>.dropzone.dz-wrapper .dz-message.disabled .dz-text{opacity:.5}nxt-dropzone>.dropzone.dz-wrapper .dz-message.dz-placeholder{position:relative;border-color:#aaa0;transition:border-color .25s ease-in-out}nxt-dropzone>.dropzone.dz-wrapper .dz-message.dz-placeholder .dz-text{position:absolute;z-index:1;opacity:0;font-weight:700;background-color:#ffffff80;transition:filter .25s ease-in-out,opacity .25s ease-in-out}nxt-dropzone>.dropzone.dz-wrapper .dz-message.dz-placeholder:hover:not(.disabled){border-color:#aaa}nxt-dropzone>.dropzone.dz-wrapper .dz-message.dz-placeholder:hover:not(.disabled) .dz-text{opacity:1}nxt-dropzone>.dropzone.dz-wrapper .dz-message.dz-placeholder:hover:not(.disabled) .dz-image{filter:blur(8px)}nxt-dropzone>.dropzone.dz-wrapper .dz-preview{margin:0}nxt-dropzone>.dropzone.dz-wrapper .dz-preview .dz-details{padding:24px}nxt-dropzone>.dropzone.dz-wrapper .dz-preview .dz-progress{width:80%;border:1px solid #aaa;border-radius:5px;overflow:hidden}nxt-dropzone>.dropzone.dz-wrapper .dz-preview .dz-progress .dz-upload{background-color:#666}nxt-dropzone>.dropzone.dz-wrapper .dz-preview .dz-filename span{display:block;overflow:hidden;width:100%;max-width:100%;text-overflow:ellipsis}nxt-dropzone>.dropzone.dz-wrapper .dz-preview .dz-filename span:hover{overflow:visible;white-space:normal;word-wrap:break-word}nxt-dropzone>.dropzone.dz-wrapper .dz-preview .dz-image{border-radius:5px;overflow:hidden;min-width:120px;min-height:120px;width:auto;height:auto}nxt-dropzone>.dropzone.dz-wrapper.dz-single .dz-message{width:100%;height:100%}nxt-dropzone>.dropzone.dz-wrapper.dz-single .dz-preview{width:100%;height:100%;grid-column:span 2;grid-row:span 2}nxt-dropzone>.dropzone.dz-wrapper.dz-single .dz-preview .dz-image{width:100%;height:100%}nxt-dropzone>.dropzone.dz-wrapper.dz-single .dz-preview .dz-image img{display:block;width:100%;height:auto;margin:0}nxt-dropzone>.dropzone.dz-wrapper.dz-single .dz-error-message{top:50%;left:50%;transform:translate(-50%) translateY(100%)}nxt-dropzone>.dropzone.dz-wrapper.dz-single.dz-started .dz-message{display:none}nxt-dropzone>.dropzone.dz-wrapper.dz-multiple.dz-started .dz-message{display:flex}\n", "@keyframes passing-through{0%{opacity:0;transform:translateY(40px)}30%,70%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-40px)}}@keyframes slide-in{0%{opacity:0;transform:translateY(40px)}30%{opacity:1;transform:translateY(0)}}@keyframes pulse{0%{transform:scale(1)}10%{transform:scale(1.1)}20%{transform:scale(1)}}.dropzone,.dropzone *{box-sizing:border-box}.dropzone{min-height:150px;border:1px solid rgba(0,0,0,.8);border-radius:5px;padding:20px}.dropzone.dz-clickable{cursor:pointer}.dropzone.dz-clickable *{cursor:default}.dropzone.dz-clickable .dz-message,.dropzone.dz-clickable .dz-message *{cursor:pointer}.dropzone.dz-started .dz-message{display:none}.dropzone.dz-drag-hover{border-style:solid}.dropzone.dz-drag-hover .dz-message{opacity:.5}.dropzone .dz-message{text-align:center;margin:3em 0}.dropzone .dz-message .dz-button{background:none;color:inherit;border:none;padding:0;font:inherit;cursor:pointer;outline:inherit}.dropzone .dz-preview{position:relative;display:inline-block;vertical-align:top;margin:16px;min-height:100px}.dropzone .dz-preview:hover{z-index:1000}.dropzone .dz-preview.dz-file-preview .dz-image{border-radius:20px;background:#999;background:linear-gradient(to bottom,#eee,#ddd)}.dropzone .dz-preview.dz-file-preview .dz-details{opacity:1}.dropzone .dz-preview.dz-image-preview{background:#fff}.dropzone .dz-preview.dz-image-preview .dz-details{transition:opacity .2s linear}.dropzone .dz-preview .dz-remove{font-size:14px;text-align:center;display:block;cursor:pointer;border:none}.dropzone .dz-preview .dz-remove:hover{text-decoration:underline}.dropzone .dz-preview:hover .dz-details{opacity:1}.dropzone .dz-preview .dz-details{z-index:20;position:absolute;top:0;left:0;opacity:0;font-size:13px;min-width:100%;max-width:100%;padding:2em 1em;text-align:center;color:#000000e6;line-height:150%}.dropzone .dz-preview .dz-details .dz-size{margin-bottom:1em;font-size:16px}.dropzone .dz-preview .dz-details .dz-filename{white-space:nowrap}.dropzone .dz-preview .dz-details .dz-filename:hover span{border:1px solid rgba(200,200,200,.8);background-color:#fffc}.dropzone .dz-preview .dz-details .dz-filename:not(:hover){overflow:hidden;text-overflow:ellipsis}.dropzone .dz-preview .dz-details .dz-filename:not(:hover) span{border:1px solid transparent}.dropzone .dz-preview .dz-details .dz-filename span,.dropzone .dz-preview .dz-details .dz-size span{background-color:#fff6;padding:0 .4em;border-radius:3px}.dropzone .dz-preview:hover .dz-image img{transform:scale(1.05);filter:blur(8px)}.dropzone .dz-preview .dz-image{border-radius:20px;overflow:hidden;width:120px;height:120px;position:relative;display:block;z-index:10}.dropzone .dz-preview .dz-image img{display:block}.dropzone .dz-preview.dz-success .dz-success-mark{animation:passing-through 3s cubic-bezier(.77,0,.175,1)}.dropzone .dz-preview.dz-error .dz-error-mark{opacity:1;animation:slide-in 3s cubic-bezier(.77,0,.175,1)}.dropzone .dz-preview .dz-success-mark,.dropzone .dz-preview .dz-error-mark{pointer-events:none;opacity:0;z-index:500;position:absolute;display:block;top:50%;left:50%;margin-left:-27px;margin-top:-27px;background:rgba(0,0,0,.8);border-radius:50%}.dropzone .dz-preview .dz-success-mark svg,.dropzone .dz-preview .dz-error-mark svg{display:block;width:54px;height:54px;fill:#fff}.dropzone .dz-preview.dz-processing .dz-progress{opacity:1;transition:all .2s linear}.dropzone .dz-preview.dz-complete .dz-progress{opacity:0;transition:opacity .4s ease-in}.dropzone .dz-preview:not(.dz-processing) .dz-progress{animation:pulse 6s ease infinite}.dropzone .dz-preview .dz-progress{opacity:1;z-index:1000;pointer-events:none;position:absolute;height:20px;top:50%;margin-top:-10px;left:15%;right:15%;border:3px solid rgba(0,0,0,.8);background:rgba(0,0,0,.8);border-radius:10px;overflow:hidden}.dropzone .dz-preview .dz-progress .dz-upload{background:#fff;display:block;position:relative;height:100%;width:0;transition:width .3s ease-in-out;border-radius:17px}.dropzone .dz-preview.dz-error .dz-error-message{display:block}.dropzone .dz-preview.dz-error:hover .dz-error-message{opacity:1;pointer-events:auto}.dropzone .dz-preview .dz-error-message{pointer-events:none;z-index:1000;position:absolute;display:block;display:none;opacity:0;transition:opacity .3s ease;border-radius:8px;font-size:13px;top:130px;left:-10px;width:140px;background:#b10606;padding:.5em 1em;color:#fff}.dropzone .dz-preview .dz-error-message:after{content:\"\";position:absolute;top:-6px;left:64px;width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #b10606}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.DropzoneDirective, selector: "[nxtDropzone]", inputs: ["disabled", "nxtDropzone"], outputs: ["init", "drop", "dragStart", "dragEnd", "dragEnter", "dragOver", "dragLeave", "paste", "reset", "addedFile", "addedFiles", "removedFile", "thumbnail", "error", "errorMultiple", "processing", "processingMultiple", "uploadProgress", "totalUploadProgress", "sending", "sendingMultiple", "success", "successMultiple", "canceled", "canceledMultiple", "complete", "completeMultiple", "maxFilesExceeded", "maxFilesReached", "queueComplete"], exportAs: ["nxtDropzone"] }], encapsulation: i0.ViewEncapsulation.None }); }
61
- }
62
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: DropzoneComponent, decorators: [{
63
- type: Component,
64
- args: [{ selector: 'nxt-dropzone', encapsulation: ViewEncapsulation.None, providers: [{
65
- provide: NXT_DROPZONE_LISTENERS,
66
- useExisting: DropzoneComponent
67
- }], template: "<div class=\"dz-wrapper\"\n [class.dropzone]=\"useDropzoneClass\"\n [nxtDropzone]=\"config\"\n [disabled]=\"disabled\">\n <div class=\"dz-message\"\n [class.disabled]=\"disabled\"\n [class.dz-placeholder]=\"placeholder\">\n <div class=\"dz-text\"\n [innerHTML]=\"config?.dictDefaultMessage || message\"></div>\n\n <div *ngIf=\"placeholder\"\n class=\"dz-image\"\n [style.background-image]=\"getPlaceholder()\"></div>\n </div>\n\n <ng-content></ng-content>\n</div>\n", styles: ["nxt-dropzone{display:flex;width:100%;height:auto}nxt-dropzone>.dropzone.dz-wrapper{overflow:auto;width:100%;min-height:0;max-height:100%;padding:0;border:none;color:#666;background:transparent;border-radius:0;display:grid;grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr;gap:16px}nxt-dropzone>.dropzone.dz-wrapper .dz-message{overflow:auto;min-height:60px;max-height:100%;border:2px dashed #aaa;background-color:#eee;display:flex;align-items:center;justify-content:center;margin:0;border-radius:5px;grid-column:span 2;grid-row:span 2}nxt-dropzone>.dropzone.dz-wrapper .dz-message .dz-text{padding:8px 16px;text-align:center}nxt-dropzone>.dropzone.dz-wrapper .dz-message .dz-image{width:100%;height:100%;background-size:contain;background-repeat:no-repeat;background-position:50% 50%}nxt-dropzone>.dropzone.dz-wrapper .dz-message.disabled{cursor:not-allowed}nxt-dropzone>.dropzone.dz-wrapper .dz-message.disabled .dz-text{opacity:.5}nxt-dropzone>.dropzone.dz-wrapper .dz-message.dz-placeholder{position:relative;border-color:#aaa0;transition:border-color .25s ease-in-out}nxt-dropzone>.dropzone.dz-wrapper .dz-message.dz-placeholder .dz-text{position:absolute;z-index:1;opacity:0;font-weight:700;background-color:#ffffff80;transition:filter .25s ease-in-out,opacity .25s ease-in-out}nxt-dropzone>.dropzone.dz-wrapper .dz-message.dz-placeholder:hover:not(.disabled){border-color:#aaa}nxt-dropzone>.dropzone.dz-wrapper .dz-message.dz-placeholder:hover:not(.disabled) .dz-text{opacity:1}nxt-dropzone>.dropzone.dz-wrapper .dz-message.dz-placeholder:hover:not(.disabled) .dz-image{filter:blur(8px)}nxt-dropzone>.dropzone.dz-wrapper .dz-preview{margin:0}nxt-dropzone>.dropzone.dz-wrapper .dz-preview .dz-details{padding:24px}nxt-dropzone>.dropzone.dz-wrapper .dz-preview .dz-progress{width:80%;border:1px solid #aaa;border-radius:5px;overflow:hidden}nxt-dropzone>.dropzone.dz-wrapper .dz-preview .dz-progress .dz-upload{background-color:#666}nxt-dropzone>.dropzone.dz-wrapper .dz-preview .dz-filename span{display:block;overflow:hidden;width:100%;max-width:100%;text-overflow:ellipsis}nxt-dropzone>.dropzone.dz-wrapper .dz-preview .dz-filename span:hover{overflow:visible;white-space:normal;word-wrap:break-word}nxt-dropzone>.dropzone.dz-wrapper .dz-preview .dz-image{border-radius:5px;overflow:hidden;min-width:120px;min-height:120px;width:auto;height:auto}nxt-dropzone>.dropzone.dz-wrapper.dz-single .dz-message{width:100%;height:100%}nxt-dropzone>.dropzone.dz-wrapper.dz-single .dz-preview{width:100%;height:100%;grid-column:span 2;grid-row:span 2}nxt-dropzone>.dropzone.dz-wrapper.dz-single .dz-preview .dz-image{width:100%;height:100%}nxt-dropzone>.dropzone.dz-wrapper.dz-single .dz-preview .dz-image img{display:block;width:100%;height:auto;margin:0}nxt-dropzone>.dropzone.dz-wrapper.dz-single .dz-error-message{top:50%;left:50%;transform:translate(-50%) translateY(100%)}nxt-dropzone>.dropzone.dz-wrapper.dz-single.dz-started .dz-message{display:none}nxt-dropzone>.dropzone.dz-wrapper.dz-multiple.dz-started .dz-message{display:flex}\n", "@keyframes passing-through{0%{opacity:0;transform:translateY(40px)}30%,70%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-40px)}}@keyframes slide-in{0%{opacity:0;transform:translateY(40px)}30%{opacity:1;transform:translateY(0)}}@keyframes pulse{0%{transform:scale(1)}10%{transform:scale(1.1)}20%{transform:scale(1)}}.dropzone,.dropzone *{box-sizing:border-box}.dropzone{min-height:150px;border:1px solid rgba(0,0,0,.8);border-radius:5px;padding:20px}.dropzone.dz-clickable{cursor:pointer}.dropzone.dz-clickable *{cursor:default}.dropzone.dz-clickable .dz-message,.dropzone.dz-clickable .dz-message *{cursor:pointer}.dropzone.dz-started .dz-message{display:none}.dropzone.dz-drag-hover{border-style:solid}.dropzone.dz-drag-hover .dz-message{opacity:.5}.dropzone .dz-message{text-align:center;margin:3em 0}.dropzone .dz-message .dz-button{background:none;color:inherit;border:none;padding:0;font:inherit;cursor:pointer;outline:inherit}.dropzone .dz-preview{position:relative;display:inline-block;vertical-align:top;margin:16px;min-height:100px}.dropzone .dz-preview:hover{z-index:1000}.dropzone .dz-preview.dz-file-preview .dz-image{border-radius:20px;background:#999;background:linear-gradient(to bottom,#eee,#ddd)}.dropzone .dz-preview.dz-file-preview .dz-details{opacity:1}.dropzone .dz-preview.dz-image-preview{background:#fff}.dropzone .dz-preview.dz-image-preview .dz-details{transition:opacity .2s linear}.dropzone .dz-preview .dz-remove{font-size:14px;text-align:center;display:block;cursor:pointer;border:none}.dropzone .dz-preview .dz-remove:hover{text-decoration:underline}.dropzone .dz-preview:hover .dz-details{opacity:1}.dropzone .dz-preview .dz-details{z-index:20;position:absolute;top:0;left:0;opacity:0;font-size:13px;min-width:100%;max-width:100%;padding:2em 1em;text-align:center;color:#000000e6;line-height:150%}.dropzone .dz-preview .dz-details .dz-size{margin-bottom:1em;font-size:16px}.dropzone .dz-preview .dz-details .dz-filename{white-space:nowrap}.dropzone .dz-preview .dz-details .dz-filename:hover span{border:1px solid rgba(200,200,200,.8);background-color:#fffc}.dropzone .dz-preview .dz-details .dz-filename:not(:hover){overflow:hidden;text-overflow:ellipsis}.dropzone .dz-preview .dz-details .dz-filename:not(:hover) span{border:1px solid transparent}.dropzone .dz-preview .dz-details .dz-filename span,.dropzone .dz-preview .dz-details .dz-size span{background-color:#fff6;padding:0 .4em;border-radius:3px}.dropzone .dz-preview:hover .dz-image img{transform:scale(1.05);filter:blur(8px)}.dropzone .dz-preview .dz-image{border-radius:20px;overflow:hidden;width:120px;height:120px;position:relative;display:block;z-index:10}.dropzone .dz-preview .dz-image img{display:block}.dropzone .dz-preview.dz-success .dz-success-mark{animation:passing-through 3s cubic-bezier(.77,0,.175,1)}.dropzone .dz-preview.dz-error .dz-error-mark{opacity:1;animation:slide-in 3s cubic-bezier(.77,0,.175,1)}.dropzone .dz-preview .dz-success-mark,.dropzone .dz-preview .dz-error-mark{pointer-events:none;opacity:0;z-index:500;position:absolute;display:block;top:50%;left:50%;margin-left:-27px;margin-top:-27px;background:rgba(0,0,0,.8);border-radius:50%}.dropzone .dz-preview .dz-success-mark svg,.dropzone .dz-preview .dz-error-mark svg{display:block;width:54px;height:54px;fill:#fff}.dropzone .dz-preview.dz-processing .dz-progress{opacity:1;transition:all .2s linear}.dropzone .dz-preview.dz-complete .dz-progress{opacity:0;transition:opacity .4s ease-in}.dropzone .dz-preview:not(.dz-processing) .dz-progress{animation:pulse 6s ease infinite}.dropzone .dz-preview .dz-progress{opacity:1;z-index:1000;pointer-events:none;position:absolute;height:20px;top:50%;margin-top:-10px;left:15%;right:15%;border:3px solid rgba(0,0,0,.8);background:rgba(0,0,0,.8);border-radius:10px;overflow:hidden}.dropzone .dz-preview .dz-progress .dz-upload{background:#fff;display:block;position:relative;height:100%;width:0;transition:width .3s ease-in-out;border-radius:17px}.dropzone .dz-preview.dz-error .dz-error-message{display:block}.dropzone .dz-preview.dz-error:hover .dz-error-message{opacity:1;pointer-events:auto}.dropzone .dz-preview .dz-error-message{pointer-events:none;z-index:1000;position:absolute;display:block;display:none;opacity:0;transition:opacity .3s ease;border-radius:8px;font-size:13px;top:130px;left:-10px;width:140px;background:#b10606;padding:.5em 1em;color:#fff}.dropzone .dz-preview .dz-error-message:after{content:\"\";position:absolute;top:-6px;left:64px;width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #b10606}\n"] }]
68
- }], ctorParameters: () => [], propDecorators: { disabled: [{
69
- type: Input
70
- }], config: [{
71
- type: Input
72
- }], message: [{
73
- type: Input
74
- }], placeholder: [{
75
- type: Input
76
- }], useDropzoneClass: [{
77
- type: Input
78
- }], DZ_INIT: [{
79
- type: Output,
80
- args: ['init']
81
- }], DZ_DROP: [{
82
- type: Output,
83
- args: ['drop']
84
- }], DZ_DRAGSTART: [{
85
- type: Output,
86
- args: ['dragStart']
87
- }], DZ_DRAGEND: [{
88
- type: Output,
89
- args: ['dragEnd']
90
- }], DZ_DRAGENTER: [{
91
- type: Output,
92
- args: ['dragEnter']
93
- }], DZ_DRAGOVER: [{
94
- type: Output,
95
- args: ['dragOver']
96
- }], DZ_DRAGLEAVE: [{
97
- type: Output,
98
- args: ['dragLeave']
99
- }], DZ_PASTE: [{
100
- type: Output,
101
- args: ['paste']
102
- }], DZ_RESET: [{
103
- type: Output,
104
- args: ['reset']
105
- }], DZ_ADDEDFILE: [{
106
- type: Output,
107
- args: ['addedFile']
108
- }], DZ_ADDEDFILES: [{
109
- type: Output,
110
- args: ['addedFiles']
111
- }], DZ_REMOVEDFILE: [{
112
- type: Output,
113
- args: ['removedFile']
114
- }], DZ_THUMBNAIL: [{
115
- type: Output,
116
- args: ['thumbnail']
117
- }], DZ_ERROR: [{
118
- type: Output,
119
- args: ['error']
120
- }], DZ_ERRORMULTIPLE: [{
121
- type: Output,
122
- args: ['errorMultiple']
123
- }], DZ_PROCESSING: [{
124
- type: Output,
125
- args: ['processing']
126
- }], DZ_PROCESSINGMULTIPLE: [{
127
- type: Output,
128
- args: ['processingMultiple']
129
- }], DZ_UPLOADPROGRESS: [{
130
- type: Output,
131
- args: ['uploadProgress']
132
- }], DZ_TOTALUPLOADPROGRESS: [{
133
- type: Output,
134
- args: ['totalUploadProgress']
135
- }], DZ_SENDING: [{
136
- type: Output,
137
- args: ['sending']
138
- }], DZ_SENDINGMULTIPLE: [{
139
- type: Output,
140
- args: ['sendingMultiple']
141
- }], DZ_SUCCESS: [{
142
- type: Output,
143
- args: ['success']
144
- }], DZ_SUCCESSMULTIPLE: [{
145
- type: Output,
146
- args: ['successMultiple']
147
- }], DZ_CANCELED: [{
148
- type: Output,
149
- args: ['canceled']
150
- }], DZ_CANCELEDMULTIPLE: [{
151
- type: Output,
152
- args: ['canceledMultiple']
153
- }], DZ_COMPLETE: [{
154
- type: Output,
155
- args: ['complete']
156
- }], DZ_COMPLETEMULTIPLE: [{
157
- type: Output,
158
- args: ['completeMultiple']
159
- }], DZ_MAXFILESEXCEEDED: [{
160
- type: Output,
161
- args: ['maxFilesExceeded']
162
- }], DZ_MAXFILESREACHED: [{
163
- type: Output,
164
- args: ['maxFilesReached']
165
- }], DZ_QUEUECOMPLETE: [{
166
- type: Output,
167
- args: ['queueComplete']
168
- }], directiveRef: [{
169
- type: ViewChild,
170
- args: [DropzoneDirective]
171
- }] } });
172
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcHpvbmUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvZHJvcHpvbmUtd3JhcHBlci9zcmMvbGliL2Ryb3B6b25lLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2Ryb3B6b25lLXdyYXBwZXIvc3JjL2xpYi9kcm9wem9uZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxxREFBcUQ7QUFDckQsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDNUcsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFDeEQsT0FBTyxFQUFxQyxzQkFBc0IsRUFBRSxNQUFNLHVCQUF1QixDQUFBOzs7O0FBZWpHLE1BQU0sT0FBTyxpQkFBaUI7SUE4RDFCO1FBNURBLG9EQUFvRDtRQUMzQyxhQUFRLEdBQVksS0FBSyxDQUFBO1FBS2xDLHNEQUFzRDtRQUM3QyxZQUFPLEdBQVcsK0JBQStCLENBQUE7UUFDMUQsdURBQXVEO1FBQzlDLGdCQUFXLEdBQVcsRUFBRSxDQUFBO1FBRWpDLHlEQUF5RDtRQUNoRCxxQkFBZ0IsR0FBWSxJQUFJLENBQUE7UUFFaEIsWUFBTyxHQUFHLElBQUksWUFBWSxFQUFZLENBQUE7UUFFdEMsWUFBTyxHQUFHLElBQUksWUFBWSxFQUFhLENBQUE7UUFDbEMsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBYSxDQUFBO1FBQzlDLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBYSxDQUFBO1FBQ3hDLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQWEsQ0FBQTtRQUM3QyxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFhLENBQUE7UUFDMUMsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBYSxDQUFBO1FBQ2hELGFBQVEsR0FBRyxJ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UyxZQUFZO3NCQUF6QyxNQUFNO3VCQUFDLFdBQVc7Z0JBRU8sUUFBUTtzQkFBakMsTUFBTTt1QkFBQyxPQUFPO2dCQUNtQixnQkFBZ0I7c0JBQWpELE1BQU07dUJBQUMsZUFBZTtnQkFFUSxhQUFhO3NCQUEzQyxNQUFNO3VCQUFDLFlBQVk7Z0JBQ21CLHFCQUFxQjtzQkFBM0QsTUFBTTt1QkFBQyxvQkFBb0I7Z0JBRU8saUJBQWlCO3NCQUFuRCxNQUFNO3VCQUFDLGdCQUFnQjtnQkFDZ0Isc0JBQXNCO3NCQUE3RCxNQUFNO3VCQUFDLHFCQUFxQjtnQkFFRCxVQUFVO3NCQUFyQyxNQUFNO3VCQUFDLFNBQVM7Z0JBQ21CLGtCQUFrQjtzQkFBckQsTUFBTTt1QkFBQyxpQkFBaUI7Z0JBR0csVUFBVTtzQkFBckMsTUFBTTt1QkFBQyxTQUFTO2dCQUNtQixrQkFBa0I7c0JBQXJELE1BQU07dUJBQUMsaUJBQWlCO2dCQUVJLFdBQVc7c0JBQXZDLE1BQU07dUJBQUMsVUFBVTtnQkFDbUIsbUJBQW1CO3NCQUF2RCxNQUFNO3VCQUFDLGtCQUFrQjtnQkFFRyxXQUFXO3NCQUF2QyxNQUFNO3VCQUFDLFVBQVU7Z0JBQ21CLG1CQUFtQjtzQkFBdkQsTUFBTTt1QkFBQyxrQkFBa0I7Z0JBRVcsbUJBQW1CO3NCQUF2RCxNQUFNO3VCQUFDLGtCQUFrQjtnQkFDVSxrQkFBa0I7c0JBQXJELE1BQU07dUJBQUMsaUJBQWlCO2dCQUVTLGdCQUFnQjtzQkFBakQsTUFBTTt1QkFBQyxlQUFlO2dCQUVPLFlBQVk7c0JBQXpDLFNBQVM7dUJBQUMsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQGFuZ3VsYXItZXNsaW50L25vLW91dHB1dC1yZW5hbWUgKi9cbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFZpZXdDaGlsZCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgRHJvcHpvbmVEaXJlY3RpdmUgfSBmcm9tICcuL2Ryb3B6b25lLmRpcmVjdGl2ZSdcbmltcG9ydCB7IERyb3B6b25lQ29uZmlnLCBEcm9wem9uZUxpc3RlbmVycywgTlhUX0RST1BaT05FX0xJU1RFTkVSUyB9IGZyb20gJy4vZHJvcHpvbmUuaW50ZXJmYWNlcydcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdueHQtZHJvcHpvbmUnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9kcm9wem9uZS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbXG4gICAgICAgICcuL2Ryb3B6b25lLmNvbXBvbmVudC5zY3NzJyxcbiAgICAgICAgJy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kcm9wem9uZS9kaXN0L2Ryb3B6b25lLmNzcydcbiAgICBdLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgcHJvdmlkZXJzOiBbe1xuICAgICAgICBwcm92aWRlOiBOWFRfRFJPUFpPTkVfTElTVEVORVJTLFxuICAgICAgICB1c2VFeGlzdGluZzogRHJvcHpvbmVDb21wb25lbnRcbiAgICB9XVxufSlcbmV4cG9ydCBjbGFzcyBEcm9wem9uZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgRHJvcHpvbmVMaXN0ZW5lcnMge1xuXG4gICAgLyoqIERpc2FibGVzIC8gZGV0YWNoZXMgRHJvcHpvbmUgZnJvbSB0aGUgZWxlbWVudCAqL1xuICAgIEBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2VcblxuICAgIC8qKiBDdXN0b20gY29uZmlnIHRvIG92ZXJyaWRlIHRoZSBnbG9iYWwgZGVmYXVsdHMgKi9cbiAgICBASW5wdXQoKSBjb25maWc/OiBEcm9wem9uZUNvbmZpZ1xuXG4gICAgLyoqIE1lc3NhZ2UgdG8gc2hvdyBmb3IgdGhlIHVzZXIgb24gdGhlIHVwbG9hZCBhcmVhICovXG4gICAgQElucHV0KCkgbWVzc2FnZTogc3RyaW5nID0gJ0NsaWNrIG9yIGRyYWcgZmlsZXMgdG8gdXBsb2FkJ1xuICAgIC8qKiBQbGFjZWhvbGRlciBpbWFnZSB0byBiZSBzaG93biBhcyB0aGUgdXBsb2FkIGFyZWEgKi9cbiAgICBASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nID0gJydcblxuICAgIC8qKiBVc2UgJ2Ryb3B6b25lJyBjbGFzcyAodXNlIHByb3ZpZGVkIGRlZmF1bHQgc3R5bGVzKSAqL1xuICAgIEBJbnB1dCgpIHVzZURyb3B6b25lQ2xhc3M6IGJvb2xlYW4gPSB0cnVlXG5cbiAgICBAT3V0cHV0KCdpbml0JykgcmVhZG9ubHkgRFpfSU5JVCA9IG5ldyBFdmVudEVtaXR0ZXI8RHJvcHpvbmU+KClcblxuICAgIEBPdXRwdXQoJ2Ryb3AnKSByZWFkb25seSBEWl9EUk9QID0gbmV3IEV2ZW50RW1pdHRlcjxEcmFnRXZlbnQ+KClcbiAgICBAT3V0cHV0KCdkcmFnU3RhcnQnKSByZWFkb25seSBEWl9EUkFHU1RBUlQgPSBuZXcgRXZlbnRFbWl0dGVyPERyYWdFdmVudD4oKVxuICAgIEBPdXRwdXQoJ2RyYWdFbmQnKSByZWFkb25seSBEWl9EUkFHRU5EID0gbmV3IEV2ZW50RW1pdHRlcjxEcmFnRXZlbnQ+KClcbiAgICBAT3V0cHV0KCdkcmFnRW50ZXInKSByZWFkb25seSBEWl9EUkFHRU5URVIgPSBuZXcgRXZlbnRFbWl0dGVyPERyYWdFdmVudD4oKVxuICAgIEBPdXRwdXQoJ2RyYWdPdmVyJykgcmVhZG9ubHkgRFpfRFJBR09WRVIgPSBuZXcgRXZlbnRFbWl0dGVyPERyYWdFdmVudD4oKVxuICAgIEBPdXRwdXQoJ2RyYWdMZWF2ZScpIHJlYWRvbmx5IERaX0RSQUdMRUFWRSA9IG5ldyBFdmVudEVtaXR0ZXI8RHJhZ0V2ZW50PigpXG4gICAgQE91dHB1dCgncGFzdGUnKSByZWFkb25seSBEWl9QQVNURSA9IG5ldyBFdmVudEVtaXR0ZXI8RHJhZ0V2ZW50PigpXG5cbiAgICBAT3V0cHV0KCdyZXNldCcpIHJlYWRvbmx5IERaX1JFU0VUID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpXG5cbiAgICBAT3V0cHV0KCdhZGRlZEZpbGUnKSByZWFkb25seSBEWl9BRERFREZJTEUgPSBuZXcgRXZlbnRFbWl0dGVyPERyb3B6b25lLkRyb3B6b25lRmlsZT4oKVxuICAgIEBPdXRwdXQoJ2FkZGVkRmlsZXMnKSByZWFkb25seSBEWl9BRERFREZJTEVTID0gbmV3IEV2ZW50RW1pdHRlcjxEcm9wem9uZS5Ecm9wem9uZUZpbGU+KClcbiAgICBAT3V0cHV0KCdyZW1vdmVkRmlsZScpIHJlYWRvbmx5IERaX1JFTU9WRURGSUxFID0gbmV3IEV2ZW50RW1pdHRlcjxEcm9wem9uZS5Ecm9wem9uZUZpbGU+KClcbiAgICBAT3V0cHV0KCd0aHVtYm5haWwnKSByZWFkb25seSBEWl9USFVNQk5BSUwgPSBuZXcgRXZlbnRFbWl0dGVyPFtEcm9wem9uZS5Ecm9wem9uZUZpbGUsIHN0cmluZ10+KClcblxuICAgIEBPdXRwdXQoJ2Vycm9yJykgcmVhZG9ubHkgRFpfRVJST1IgPSBuZXcgRXZlbnRFbWl0dGVyPFtEcm9wem9uZS5Ecm9wem9uZUZpbGUsIHN0cmluZyB8IEVycm9yXT4oKVxuICAgIEBPdXRwdXQoJ2Vycm9yTXVsdGlwbGUnKSByZWFkb25seSBEWl9FUlJPUk1VTFRJUExFID0gbmV3IEV2ZW50RW1pdHRlcjxbRHJvcHpvbmUuRHJvcHpvbmVGaWxlW10sIHN0cmluZyB8IEVycm9yXT4oKVxuXG4gICAgQE91dHB1dCgncHJvY2Vzc2luZycpIHJlYWRvbmx5IERaX1BST0NFU1NJTkcgPSBuZXcgRXZlbnRFbWl0dGVyPERyb3B6b25lLkRyb3B6b25lRmlsZT4oKVxuICAgIEBPdXRwdXQoJ3Byb2Nlc3NpbmdNdWx0aXBsZScpIHJlYWRvbmx5IERaX1BST0NFU1NJTkdNVUxUSVBMRSA9IG5ldyBFdmVudEVtaXR0ZXI8RHJvcHpvbmUuRHJvcHpvbmVGaWxlW10+KClcblxuICAgIEBPdXRwdXQoJ3VwbG9hZFByb2dyZXNzJykgcmVhZG9ubHkgRFpfVVBMT0FEUFJPR1JFU1MgPSBuZXcgRXZlbnRFbWl0dGVyPFtEcm9wem9uZS5Ecm9wem9uZUZpbGUsIG51bWJlciwgbnVtYmVyXT4oKVxuICAgIEBPdXRwdXQoJ3RvdGFsVXBsb2FkUHJvZ3Jlc3MnKSByZWFkb25seSBEWl9UT1RBTFVQTE9BRFBST0dSRVNTID0gbmV3IEV2ZW50RW1pdHRlcjxbbnVtYmVyLCBudW1iZXIsIG51bWJlcl0+KClcblxuICAgIEBPdXRwdXQoJ3NlbmRpbmcnKSByZWFkb25seSBEWl9TRU5ESU5HID0gbmV3IEV2ZW50RW1pdHRlcjxbRHJvcHpvbmUuRHJvcHpvbmVGaWxlLCBYTUxIdHRwUmVxdWVzdCwgRm9ybURhdGFdPigpXG4gICAgQE91dHB1dCgnc2VuZGluZ011bHRpcGxlJykgcmVhZG9ubHkgRFpfU0VORElOR01VTFRJUExFID0gbmV3IEV2ZW50RW1pdHRlcjxbRHJvcHpvbmUuRHJvcHpvbmVGaWxlW10sIFhNTEh0dHBSZXF1ZXN0LCBGb3JtRGF0YV0+KClcblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXR5cGVzXG4gICAgQE91dHB1dCgnc3VjY2VzcycpIHJlYWRvbmx5IERaX1NVQ0NFU1MgPSBuZXcgRXZlbnRFbWl0dGVyPFtEcm9wem9uZS5Ecm9wem9uZUZpbGUsIE9iamVjdCB8IHN0cmluZ10+KClcbiAgICBAT3V0cHV0KCdzdWNjZXNzTXVsdGlwbGUnKSByZWFkb25seSBEWl9TVUNDRVNTTVVMVElQTEUgPSBuZXcgRXZlbnRFbWl0dGVyPERyb3B6b25lLkRyb3B6b25lRmlsZVtdPigpXG5cbiAgICBAT3V0cHV0KCdjYW5jZWxlZCcpIHJlYWRvbmx5IERaX0NBTkNFTEVEID0gbmV3IEV2ZW50RW1pdHRlcjxEcm9wem9uZS5Ecm9wem9uZUZpbGU+KClcbiAgICBAT3V0cHV0KCdjYW5jZWxlZE11bHRpcGxlJykgcmVhZG9ubHkgRFpfQ0FOQ0VMRURNVUxUSVBMRSA9IG5ldyBFdmVudEVtaXR0ZXI8RHJvcHpvbmUuRHJvcHpvbmVGaWxlW10+KClcblxuICAgIEBPdXRwdXQoJ2NvbXBsZXRlJykgcmVhZG9ubHkgRFpfQ09NUExFVEUgPSBuZXcgRXZlbnRFbWl0dGVyPERyb3B6b25lLkRyb3B6b25lRmlsZT4oKVxuICAgIEBPdXRwdXQoJ2NvbXBsZXRlTXVsdGlwbGUnKSByZWFkb25seSBEWl9DT01QTEVURU1VTFRJUExFID0gbmV3IEV2ZW50RW1pdHRlcjxEcm9wem9uZS5Ecm9wem9uZUZpbGVbXT4oKVxuXG4gICAgQE91dHB1dCgnbWF4RmlsZXNFeGNlZWRlZCcpIHJlYWRvbmx5IERaX01BWEZJTEVTRVhDRUVERUQgPSBuZXcgRXZlbnRFbWl0dGVyPERyb3B6b25lLkRyb3B6b25lRmlsZT4oKVxuICAgIEBPdXRwdXQoJ21heEZpbGVzUmVhY2hlZCcpIHJlYWRvbmx5IERaX01BWEZJTEVTUkVBQ0hFRCA9IG5ldyBFdmVudEVtaXR0ZXI8RHJvcHpvbmUuRHJvcHpvbmVGaWxlW10+KClcblxuICAgIEBPdXRwdXQoJ3F1ZXVlQ29tcGxldGUnKSByZWFkb25seSBEWl9RVUVVRUNPTVBMRVRFID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpXG5cbiAgICBAVmlld0NoaWxkKERyb3B6b25lRGlyZWN0aXZlKSBkaXJlY3RpdmVSZWY/OiBEcm9wem9uZURpcmVjdGl2ZVxuXG4gICAgY29uc3RydWN0b3IoKSB7IH1cblxuICAgIC8qKiBAaW50ZXJuYWwgKi9cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHsgfVxuXG4gICAgLyoqIEBpbnRlcm5hbCAqL1xuICAgIGdldFBsYWNlaG9sZGVyKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiAndXJsKCcgKyBlbmNvZGVVUkkodGhpcy5wbGFjZWhvbGRlcikgKyAnKSdcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZHotd3JhcHBlclwiXG4gICAgW2NsYXNzLmRyb3B6b25lXT1cInVzZURyb3B6b25lQ2xhc3NcIlxuICAgIFtueHREcm9wem9uZV09XCJjb25maWdcIlxuICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiPlxuICAgIDxkaXYgY2xhc3M9XCJkei1tZXNzYWdlXCJcbiAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgW2NsYXNzLmR6LXBsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkei10ZXh0XCJcbiAgICAgICAgICAgIFtpbm5lckhUTUxdPVwiY29uZmlnPy5kaWN0RGVmYXVsdE1lc3NhZ2UgfHwgbWVzc2FnZVwiPjwvZGl2PlxuXG4gICAgICAgIDxkaXYgKm5nSWY9XCJwbGFjZWhvbGRlclwiXG4gICAgICAgICAgICBjbGFzcz1cImR6LWltYWdlXCJcbiAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kLWltYWdlXT1cImdldFBsYWNlaG9sZGVyKClcIj48L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvZGl2PlxuIl19
@@ -1,331 +0,0 @@
1
- /* eslint-disable @angular-eslint/no-output-rename */
2
- import { isPlatformBrowser } from '@angular/common';
3
- import { Directive, EventEmitter, HostBinding, Inject, Input, Optional, Output, PLATFORM_ID } from '@angular/core';
4
- import Dropzone from 'dropzone';
5
- import { DropzoneEvents, internalChanges, NXT_DROPZONE_CONFIG, NXT_DROPZONE_LISTENERS, _DropzoneConfig } from './dropzone.interfaces';
6
- import * as i0 from "@angular/core";
7
- export class DropzoneDirective {
8
- /** Disables / detaches Dropzone from the element */
9
- set disabled(val) {
10
- val = !!val;
11
- if (val != this._disabled && this.instance) {
12
- if (val)
13
- this.zone.runOutsideAngular(() => {
14
- this.instance.disable();
15
- });
16
- else
17
- this.zone.runOutsideAngular(() => {
18
- this.instance.enable();
19
- });
20
- }
21
- this._disabled = val;
22
- }
23
- get disabled() {
24
- return this._disabled;
25
- }
26
- get dropzone() {
27
- return this.instance;
28
- }
29
- /** @internal */
30
- get isSingle() {
31
- return this._params?.maxFiles === 1;
32
- }
33
- /** @internal */
34
- get isMultiple() {
35
- return this._params?.maxFiles !== 1;
36
- }
37
- constructor(zone, elementRef, differs, platformId, defaults, component) {
38
- this.zone = zone;
39
- this.elementRef = elementRef;
40
- this.differs = differs;
41
- this.platformId = platformId;
42
- this.defaults = defaults;
43
- this.component = component;
44
- this._disabled = false;
45
- this._params = this.defaults
46
- ? new _DropzoneConfig(this.defaults)
47
- : undefined;
48
- this.configDiff = this.differs.find(this.config || {}).create();
49
- this.paramDiff = this.differs.find(this._params || {}).create();
50
- this.DZ_INIT = this.component?.DZ_INIT
51
- ?? new EventEmitter();
52
- this.DZ_DROP = this.component?.DZ_DROP
53
- ?? new EventEmitter();
54
- this.DZ_DRAGSTART = this.component?.DZ_DRAGSTART
55
- ?? new EventEmitter();
56
- this.DZ_DRAGEND = this.component?.DZ_DRAGEND
57
- ?? new EventEmitter();
58
- this.DZ_DRAGENTER = this.component?.DZ_DRAGENTER
59
- ?? new EventEmitter();
60
- this.DZ_DRAGOVER = this.component?.DZ_DRAGOVER
61
- ?? new EventEmitter();
62
- this.DZ_DRAGLEAVE = this.component?.DZ_DRAGLEAVE
63
- ?? new EventEmitter();
64
- this.DZ_PASTE = this.component?.DZ_PASTE
65
- ?? new EventEmitter();
66
- this.DZ_RESET = this.component?.DZ_RESET
67
- ?? new EventEmitter();
68
- this.DZ_ADDEDFILE = this.component?.DZ_ADDEDFILE
69
- ?? new EventEmitter();
70
- this.DZ_ADDEDFILES = this.component?.DZ_ADDEDFILES
71
- ?? new EventEmitter();
72
- this.DZ_REMOVEDFILE = this.component?.DZ_REMOVEDFILE
73
- ?? new EventEmitter();
74
- this.DZ_THUMBNAIL = this.component?.DZ_THUMBNAIL
75
- ?? new EventEmitter();
76
- this.DZ_ERROR = this.component?.DZ_ERROR
77
- ?? new EventEmitter();
78
- this.DZ_ERRORMULTIPLE = this.component?.DZ_ERRORMULTIPLE
79
- ?? new EventEmitter();
80
- this.DZ_PROCESSING = this.component?.DZ_PROCESSING
81
- ?? new EventEmitter();
82
- this.DZ_PROCESSINGMULTIPLE = this.component?.DZ_PROCESSINGMULTIPLE
83
- ?? new EventEmitter();
84
- this.DZ_UPLOADPROGRESS = this.component?.DZ_UPLOADPROGRESS
85
- ?? new EventEmitter();
86
- this.DZ_TOTALUPLOADPROGRESS = this.component?.DZ_TOTALUPLOADPROGRESS
87
- ?? new EventEmitter();
88
- this.DZ_SENDING = this.component?.DZ_SENDING
89
- ?? new EventEmitter();
90
- this.DZ_SENDINGMULTIPLE = this.component?.DZ_SENDINGMULTIPLE
91
- ?? new EventEmitter();
92
- this.DZ_SUCCESS = this.component?.DZ_SUCCESS
93
- // eslint-disable-next-line @typescript-eslint/ban-types
94
- ?? new EventEmitter();
95
- this.DZ_SUCCESSMULTIPLE = this.component?.DZ_SUCCESSMULTIPLE
96
- ?? new EventEmitter();
97
- this.DZ_CANCELED = this.component?.DZ_CANCELED
98
- ?? new EventEmitter();
99
- this.DZ_CANCELEDMULTIPLE = this.component?.DZ_CANCELEDMULTIPLE
100
- ?? new EventEmitter();
101
- this.DZ_COMPLETE = this.component?.DZ_COMPLETE
102
- ?? new EventEmitter();
103
- this.DZ_COMPLETEMULTIPLE = this.component?.DZ_COMPLETEMULTIPLE
104
- ?? new EventEmitter();
105
- this.DZ_MAXFILESEXCEEDED = this.component?.DZ_MAXFILESEXCEEDED
106
- ?? new EventEmitter();
107
- this.DZ_MAXFILESREACHED = this.component?.DZ_MAXFILESREACHED
108
- ?? new EventEmitter();
109
- this.DZ_QUEUECOMPLETE = this.component?.DZ_QUEUECOMPLETE
110
- ?? new EventEmitter();
111
- }
112
- /** @internal */
113
- ngOnInit() {
114
- this.initInstance();
115
- }
116
- /** @internal */
117
- ngOnDestroy() {
118
- this.destroyInstance();
119
- }
120
- /** @internal */
121
- ngDoCheck() {
122
- const changes = this.configDiff.diff(this.config || {});
123
- if (changes) {
124
- let newParams = this.defaults
125
- ? new _DropzoneConfig(this.defaults)
126
- : undefined;
127
- if (newParams && this.config)
128
- newParams.assign(this.config);
129
- else if (this.config)
130
- newParams = new _DropzoneConfig(this.config);
131
- const d = this.paramDiff.diff(newParams || {});
132
- if (d) {
133
- this._params = newParams;
134
- let hasChanges = false;
135
- d.forEachItem(r => {
136
- if (!internalChanges.has(r.key) && r.currentValue !== r.previousValue)
137
- hasChanges = true;
138
- });
139
- if (hasChanges) {
140
- this.destroyInstance();
141
- this.initInstance();
142
- }
143
- }
144
- }
145
- }
146
- /** @internal */
147
- reset(cancel) {
148
- if (this.instance) {
149
- this.zone.runOutsideAngular(() => {
150
- this.instance.removeAllFiles(cancel);
151
- });
152
- }
153
- }
154
- initInstance() {
155
- if (!isPlatformBrowser(this.platformId) || !this._params) {
156
- return;
157
- }
158
- this.zone.runOutsideAngular(() => {
159
- this.instance = new Dropzone(this.elementRef.nativeElement, this._params);
160
- });
161
- if (this.disabled) {
162
- this.instance.disable();
163
- }
164
- if (this.DZ_INIT.observed) {
165
- this.zone.run(() => {
166
- this.DZ_INIT.emit(this.instance);
167
- });
168
- }
169
- // Add auto reset handling for events
170
- this.instance.on('success', () => {
171
- if ((this._params?.autoReset ?? -1) >= 0) {
172
- setTimeout(() => this.reset(), this._params?.autoReset);
173
- }
174
- });
175
- this.instance.on('error', () => {
176
- if ((this._params?.errorReset ?? -1) >= 0) {
177
- setTimeout(() => this.reset(), this._params?.errorReset);
178
- }
179
- });
180
- this.instance.on('canceled', () => {
181
- if ((this._params?.cancelReset ?? -1) >= 0) {
182
- setTimeout(() => this.reset(), this._params?.cancelReset);
183
- }
184
- });
185
- // Add native Dropzone event handling
186
- DropzoneEvents.forEach((eventName) => {
187
- this.instance.on(eventName.toLowerCase(), (...args) => {
188
- args = (args.length === 1) ? args[0] : args;
189
- const output = `DZ_${eventName.toUpperCase()}`;
190
- const emitter = this[output];
191
- if (emitter.observed) {
192
- this.zone.run(() => {
193
- emitter.emit(args);
194
- });
195
- }
196
- });
197
- });
198
- }
199
- destroyInstance() {
200
- if (this.instance) {
201
- this.zone.runOutsideAngular(() => {
202
- this.instance.destroy();
203
- });
204
- this.instance = undefined;
205
- }
206
- }
207
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: DropzoneDirective, deps: [{ token: i0.NgZone }, { token: i0.ElementRef }, { token: i0.KeyValueDiffers }, { token: PLATFORM_ID }, { token: NXT_DROPZONE_CONFIG, optional: true }, { token: NXT_DROPZONE_LISTENERS, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
208
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.4", type: DropzoneDirective, selector: "[nxtDropzone]", inputs: { disabled: "disabled", config: ["nxtDropzone", "config"] }, outputs: { DZ_INIT: "init", DZ_DROP: "drop", DZ_DRAGSTART: "dragStart", DZ_DRAGEND: "dragEnd", DZ_DRAGENTER: "dragEnter", DZ_DRAGOVER: "dragOver", DZ_DRAGLEAVE: "dragLeave", DZ_PASTE: "paste", DZ_RESET: "reset", DZ_ADDEDFILE: "addedFile", DZ_ADDEDFILES: "addedFiles", DZ_REMOVEDFILE: "removedFile", DZ_THUMBNAIL: "thumbnail", DZ_ERROR: "error", DZ_ERRORMULTIPLE: "errorMultiple", DZ_PROCESSING: "processing", DZ_PROCESSINGMULTIPLE: "processingMultiple", DZ_UPLOADPROGRESS: "uploadProgress", DZ_TOTALUPLOADPROGRESS: "totalUploadProgress", DZ_SENDING: "sending", DZ_SENDINGMULTIPLE: "sendingMultiple", DZ_SUCCESS: "success", DZ_SUCCESSMULTIPLE: "successMultiple", DZ_CANCELED: "canceled", DZ_CANCELEDMULTIPLE: "canceledMultiple", DZ_COMPLETE: "complete", DZ_COMPLETEMULTIPLE: "completeMultiple", DZ_MAXFILESEXCEEDED: "maxFilesExceeded", DZ_MAXFILESREACHED: "maxFilesReached", DZ_QUEUECOMPLETE: "queueComplete" }, host: { properties: { "class.dz-single": "this.isSingle", "class.dz-multiple": "this.isMultiple" } }, exportAs: ["nxtDropzone"], ngImport: i0 }); }
209
- }
210
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: DropzoneDirective, decorators: [{
211
- type: Directive,
212
- args: [{
213
- selector: '[nxtDropzone]',
214
- exportAs: 'nxtDropzone'
215
- }]
216
- }], ctorParameters: () => [{ type: i0.NgZone }, { type: i0.ElementRef }, { type: i0.KeyValueDiffers }, { type: Object, decorators: [{
217
- type: Inject,
218
- args: [PLATFORM_ID]
219
- }] }, { type: undefined, decorators: [{
220
- type: Optional
221
- }, {
222
- type: Inject,
223
- args: [NXT_DROPZONE_CONFIG]
224
- }] }, { type: undefined, decorators: [{
225
- type: Optional
226
- }, {
227
- type: Inject,
228
- args: [NXT_DROPZONE_LISTENERS]
229
- }] }], propDecorators: { disabled: [{
230
- type: Input
231
- }], config: [{
232
- type: Input,
233
- args: ['nxtDropzone']
234
- }], DZ_INIT: [{
235
- type: Output,
236
- args: ['init']
237
- }], DZ_DROP: [{
238
- type: Output,
239
- args: ['drop']
240
- }], DZ_DRAGSTART: [{
241
- type: Output,
242
- args: ['dragStart']
243
- }], DZ_DRAGEND: [{
244
- type: Output,
245
- args: ['dragEnd']
246
- }], DZ_DRAGENTER: [{
247
- type: Output,
248
- args: ['dragEnter']
249
- }], DZ_DRAGOVER: [{
250
- type: Output,
251
- args: ['dragOver']
252
- }], DZ_DRAGLEAVE: [{
253
- type: Output,
254
- args: ['dragLeave']
255
- }], DZ_PASTE: [{
256
- type: Output,
257
- args: ['paste']
258
- }], DZ_RESET: [{
259
- type: Output,
260
- args: ['reset']
261
- }], DZ_ADDEDFILE: [{
262
- type: Output,
263
- args: ['addedFile']
264
- }], DZ_ADDEDFILES: [{
265
- type: Output,
266
- args: ['addedFiles']
267
- }], DZ_REMOVEDFILE: [{
268
- type: Output,
269
- args: ['removedFile']
270
- }], DZ_THUMBNAIL: [{
271
- type: Output,
272
- args: ['thumbnail']
273
- }], DZ_ERROR: [{
274
- type: Output,
275
- args: ['error']
276
- }], DZ_ERRORMULTIPLE: [{
277
- type: Output,
278
- args: ['errorMultiple']
279
- }], DZ_PROCESSING: [{
280
- type: Output,
281
- args: ['processing']
282
- }], DZ_PROCESSINGMULTIPLE: [{
283
- type: Output,
284
- args: ['processingMultiple']
285
- }], DZ_UPLOADPROGRESS: [{
286
- type: Output,
287
- args: ['uploadProgress']
288
- }], DZ_TOTALUPLOADPROGRESS: [{
289
- type: Output,
290
- args: ['totalUploadProgress']
291
- }], DZ_SENDING: [{
292
- type: Output,
293
- args: ['sending']
294
- }], DZ_SENDINGMULTIPLE: [{
295
- type: Output,
296
- args: ['sendingMultiple']
297
- }], DZ_SUCCESS: [{
298
- type: Output,
299
- args: ['success']
300
- }], DZ_SUCCESSMULTIPLE: [{
301
- type: Output,
302
- args: ['successMultiple']
303
- }], DZ_CANCELED: [{
304
- type: Output,
305
- args: ['canceled']
306
- }], DZ_CANCELEDMULTIPLE: [{
307
- type: Output,
308
- args: ['canceledMultiple']
309
- }], DZ_COMPLETE: [{
310
- type: Output,
311
- args: ['complete']
312
- }], DZ_COMPLETEMULTIPLE: [{
313
- type: Output,
314
- args: ['completeMultiple']
315
- }], DZ_MAXFILESEXCEEDED: [{
316
- type: Output,
317
- args: ['maxFilesExceeded']
318
- }], DZ_MAXFILESREACHED: [{
319
- type: Output,
320
- args: ['maxFilesReached']
321
- }], DZ_QUEUECOMPLETE: [{
322
- type: Output,
323
- args: ['queueComplete']
324
- }], isSingle: [{
325
- type: HostBinding,
326
- args: ['class.dz-single']
327
- }], isMultiple: [{
328
- type: HostBinding,
329
- args: ['class.dz-multiple']
330
- }] } });
331
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcHpvbmUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvZHJvcHpvbmUtd3JhcHBlci9zcmMvbGliL2Ryb3B6b25lLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxxREFBcUQ7QUFDckQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDbkQsT0FBTyxFQUFFLFNBQVMsRUFBdUIsWUFBWSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUE4QyxRQUFRLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUNuTCxPQUFPLFFBQVEsTUFBTSxVQUFVLENBQUE7QUFDL0IsT0FBTyxFQUFpQyxjQUFjLEVBQXFCLGVBQWUsRUFBRSxtQkFBbUIsRUFBRSxzQkFBc0IsRUFBRSxlQUFlLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQTs7QUFNdkwsTUFBTSxPQUFPLGlCQUFpQjtJQUsxQixvREFBb0Q7SUFDcEQsSUFBYSxRQUFRLENBQUMsR0FBWTtRQUM5QixHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQTtRQUNYLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUN4QyxJQUFJLEdBQUc7Z0JBQ0gsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUU7b0JBQzdCLElBQUksQ0FBQyxRQUFTLENBQUMsT0FBTyxFQUFFLENBQUE7Z0JBQzVCLENBQUMsQ0FBQyxDQUFBOztnQkFFRixJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsRUFBRTtvQkFDN0IsSUFBSSxDQUFDLFFBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQTtnQkFDM0IsQ0FBQyxDQUFDLENBQUE7U0FDVDtRQUNELElBQUksQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFBO0lBQ3hC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QyxTQUFTO2dCQUVtQixrQkFBa0I7c0JBQXJELE1BQU07dUJBQUMsaUJBQWlCO2dCQUdHLFVBQVU7c0JBQXJDLE1BQU07dUJBQUMsU0FBUztnQkFHbUIsa0JBQWtCO3NCQUFyRCxNQUFNO3VCQUFDLGlCQUFpQjtnQkFHSSxXQUFXO3NCQUF2QyxNQUFNO3VCQUFDLFVBQVU7Z0JBRW1CLG1CQUFtQjtzQkFBdkQsTUFBTTt1QkFBQyxrQkFBa0I7Z0JBR0csV0FBVztzQkFBdkMsTUFBTTt1QkFBQyxVQUFVO2dCQUVtQixtQkFBbUI7c0JBQXZELE1BQU07dUJBQUMsa0JBQWtCO2dCQUdXLG1CQUFtQjtzQkFBdkQsTUFBTTt1QkFBQyxrQkFBa0I7Z0JBRVUsa0JBQWtCO3NCQUFyRCxNQUFNO3VCQUFDLGlCQUFpQjtnQkFHUyxnQkFBZ0I7c0JBQWpELE1BQU07dUJBQUMsZUFBZTtnQkFTbkIsUUFBUTtzQkFEWCxXQUFXO3VCQUFDLGlCQUFpQjtnQkFPMUIsVUFBVTtzQkFEYixXQUFXO3VCQUFDLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXQtcmVuYW1lICovXG5pbXBvcnQgeyBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbidcbmltcG9ydCB7IERpcmVjdGl2ZSwgRG9DaGVjaywgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBIb3N0QmluZGluZywgSW5qZWN0LCBJbnB1dCwgS2V5VmFsdWVEaWZmZXJzLCBOZ1pvbmUsIE9uRGVzdHJveSwgT25Jbml0LCBPcHRpb25hbCwgT3V0cHV0LCBQTEFURk9STV9JRCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgRHJvcHpvbmUgZnJvbSAnZHJvcHpvbmUnXG5pbXBvcnQgeyBEcm9wem9uZUNvbmZpZywgRHJvcHpvbmVFdmVudCwgRHJvcHpvbmVFdmVudHMsIERyb3B6b25lTGlzdGVuZXJzLCBpbnRlcm5hbENoYW5nZXMsIE5YVF9EUk9QWk9ORV9DT05GSUcsIE5YVF9EUk9QWk9ORV9MSVNURU5FUlMsIF9Ecm9wem9uZUNvbmZpZyB9IGZyb20gJy4vZHJvcHpvbmUuaW50ZXJmYWNlcydcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbbnh0RHJvcHpvbmVdJyxcbiAgICBleHBvcnRBczogJ254dERyb3B6b25lJ1xufSlcbmV4cG9ydCBjbGFzcyBEcm9wem9uZURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBEb0NoZWNrLCBEcm9wem9uZUxpc3RlbmVycyB7XG5cbiAgICBwcml2YXRlIGluc3RhbmNlPzogRHJvcHpvbmVcblxuICAgIHByaXZhdGUgX2Rpc2FibGVkID0gZmFsc2VcbiAgICAvKiogRGlzYWJsZXMgLyBkZXRhY2hlcyBEcm9wem9uZSBmcm9tIHRoZSBlbGVtZW50ICovXG4gICAgQElucHV0KCkgc2V0IGRpc2FibGVkKHZhbDogYm9vbGVhbikge1xuICAgICAgICB2YWwgPSAhIXZhbFxuICAgICAgICBpZiAodmFsICE9IHRoaXMuX2Rpc2FibGVkICYmIHRoaXMuaW5zdGFuY2UpIHtcbiAgICAgICAgICAgIGlmICh2YWwpXG4gICAgICAgICAgICAgICAgdGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnN0YW5jZSEuZGlzYWJsZSgpXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmluc3RhbmNlIS5lbmFibGUoKVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fZGlzYWJsZWQgPSB2YWxcbiAgICB9XG4gICAgZ2V0IGRpc2FibGVkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWRcbiAgICB9XG5cbiAgICBwcml2YXRlIF9wYXJhbXMgPSB0aGlzLmRlZmF1bHRzXG4gICAgICAgID8gbmV3IF9Ecm9wem9uZUNvbmZpZyh0aGlzLmRlZmF1bHRzKVxuICAgICAgICA6IHVuZGVmaW5lZFxuICAgIC8qKiBDYW4gYmUgdXNlZCB0byBwcm92aWRlIG9wdGlvbmFsIGN1c3RvbSBjb25maWcgKi9cbiAgICBASW5wdXQoJ254dERyb3B6b25lJykgY29uZmlnPzogRHJvcHpvbmVDb25maWdcblxuICAgIHByaXZhdGUgY29uZmlnRGlmZiA9IHRoaXMuZGlmZmVycy5maW5kKHRoaXMuY29uZmlnIHx8IHt9KS5jcmVhdGUoKVxuICAgIHByaXZhdGUgcGFyYW1EaWZmID0gdGhpcy5kaWZmZXJzLmZpbmQodGhpcy5fcGFyYW1zIHx8IHt9KS5jcmVhdGUoKVxuXG4gICAgQE91dHB1dCgnaW5pdCcpIHJlYWRvbmx5IERaX0lOSVQgPSB0aGlzLmNvbXBvbmVudD8uRFpfSU5JVFxuICAgICAgICA/PyBuZXcgRXZlbnRFbWl0dGVyPERyb3B6b25lPigpXG5cbiAgICBAT3V0cHV0KCdkcm9wJykgcmVhZG9ubHkgRFpfRFJPUCA9IHRoaXMuY29tcG9uZW50Py5EWl9EUk9QXG4gICAgICAgID8/IG5ldyBFdmVudEVtaXR0ZXI8RHJhZ0V2ZW50PigpXG4gICAgQE91dHB1dCgnZHJhZ1N0YXJ0JykgcmVhZG9ubHkgRFpfRFJBR1NUQVJUID0gdGhpcy5jb21wb25lbnQ/LkRaX0RSQUdTVEFSVFxuICAgICAgICA/PyBuZXcgRXZlbnRFbWl0dGVyPERyYWdFdmVudD4oKVxuICAgIEBPdXRwdXQoJ2RyYWdFbmQnKSByZWFkb25seSBEWl9EUkFHRU5EID0gdGhpcy5jb21wb25lbnQ/LkRaX0RSQUdFTkRcbiAgICAgICAgPz8gbmV3IEV2ZW50RW1pdHRlcjxEcmFnRXZlbnQ+KClcbiAgICBAT3V0cHV0KCdkcmFnRW50ZXInKSByZWFkb25seSBEWl9EUkFHRU5URVIgPSB0aGlzLmNvbXBvbmVudD8uRFpfRFJBR0VOVEVSXG4gICAgICAgID8/IG5ldyBFdmVudEVtaXR0ZXI8RHJhZ0V2ZW50PigpXG4gICAgQE91dHB1dCgnZHJhZ092ZXInKSByZWFkb25seSBEWl9EUkFHT1ZFUiA9IHRoaXMuY29tcG9uZW50Py5EWl9EUkFHT1ZFUlxuICAgICAgICA/PyBuZXcgRXZlbnRFbWl0dGVyPERyYWdFdmVudD4oKVxuICAgIEBPdXRwdXQoJ2RyYWdMZWF2ZScpIHJlYWRvbmx5IERaX0RSQUdMRUFWRSA9IHRoaXMuY29tcG9uZW50Py5EWl9EUkFHTEVBVkVcbiAgICAgICAgPz8gbmV3IEV2ZW50RW1pdHRlcjxEcmFnRXZlbnQ+KClcbiAgICBAT3V0cHV0KCdwYXN0ZScpIHJlYWRvbmx5IERaX1BBU1RFID0gdGhpcy5jb21wb25lbnQ/LkRaX1BBU1RFXG4gICAgICAgID8/IG5ldyBFdmVudEVtaXR0ZXI8RHJhZ0V2ZW50PigpXG5cbiAgICBAT3V0cHV0KCdyZXNldCcpIHJlYWRvbmx5IERaX1JFU0VUID0gdGhpcy5jb21wb25lbnQ/LkRaX1JFU0VUXG4gICAgICAgID8/IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKVxuXG4gICAgQE91dHB1dCgnYWRkZWRGaWxlJykgcmVhZG9ubHkgRFpfQURERURGSUxFID0gdGhpcy5jb21wb25lbnQ/LkRaX0FEREVERklMRVxuICAgICAgICA/PyBuZXcgRXZlbnRFbWl0dGVyPERyb3B6b25lLkRyb3B6b25lRmlsZT4oKVxuICAgIEBPdXRwdXQoJ2FkZGVkRmlsZXMnKSByZWFkb25seSBEWl9BRERFREZJTEVTID0gdGhpcy5jb21wb25lbnQ/LkRaX0FEREVERklMRVNcbiAgICAgICAgPz8gbmV3IEV2ZW50RW1pdHRlcjxEcm9wem9uZS5Ecm9wem9uZUZpbGU+KClcbiAgICBAT3V0cHV0KCdyZW1vdmVkRmlsZScpIHJlYWRvbmx5IERaX1JFTU9WRURGSUxFID0gdGhpcy5jb21wb25lbnQ/LkRaX1JFTU9WRURGSUxFXG4gICAgICAgID8/IG5ldyBFdmVudEVtaXR0ZXI8RHJvcHpvbmUuRHJvcHpvbmVGaWxlPigpXG4gICAgQE91dHB1dCgndGh1bWJuYWlsJykgcmVhZG9ubHkgRFpfVEhVTUJOQUlMID0gdGhpcy5jb21wb25lbnQ/LkRaX1RIVU1CTkFJTFxuICAgICAgICA/PyBuZXcgRXZlbnRFbWl0dGVyPFtEcm9wem9uZS5Ecm9wem9uZUZpbGUsIHN0cmluZ10+KClcblxuICAgIEBPdXRwdXQoJ2Vycm9yJykgcmVhZG9ubHkgRFpfRVJST1IgPSB0aGlzLmNvbXBvbmVudD8uRFpfRVJST1JcbiAgICAgICAgPz8gbmV3IEV2ZW50RW1pdHRlcjxbRHJvcHpvbmUuRHJvcHpvbmVGaWxlLCBzdHJpbmcgfCBFcnJvcl0+KClcbiAgICBAT3V0cHV0KCdlcnJvck11bHRpcGxlJykgcmVhZG9ubHkgRFpfRVJST1JNVUxUSVBMRSA9IHRoaXMuY29tcG9uZW50Py5EWl9FUlJPUk1VTFRJUExFXG4gICAgICAgID8/IG5ldyBFdmVudEVtaXR0ZXI8W0Ryb3B6b25lLkRyb3B6b25lRmlsZVtdLCBzdHJpbmcgfCBFcnJvcl0+KClcblxuICAgIEBPdXRwdXQoJ3Byb2Nlc3NpbmcnKSByZWFkb25seSBEWl9QUk9DRVNTSU5HID0gdGhpcy5jb21wb25lbnQ/LkRaX1BST0NFU1NJTkdcbiAgICAgICAgPz8gbmV3IEV2ZW50RW1pdHRlcjxEcm9wem9uZS5Ecm9wem9uZUZpbGU+KClcbiAgICBAT3V0cHV0KCdwcm9jZXNzaW5nTXVsdGlwbGUnKSByZWFkb25seSBEWl9QUk9DRVNTSU5HTVVMVElQTEUgPSB0aGlzLmNvbXBvbmVudD8uRFpfUFJPQ0VTU0lOR01VTFRJUExFXG4gICAgICAgID8/IG5ldyBFdmVudEVtaXR0ZXI8RHJvcHpvbmUuRHJvcHpvbmVGaWxlW10+KClcblxuICAgIEBPdXRwdXQoJ3VwbG9hZFByb2dyZXNzJykgcmVhZG9ubHkgRFpfVVBMT0FEUFJPR1JFU1MgPSB0aGlzLmNvbXBvbmVudD8uRFpfVVBMT0FEUFJPR1JFU1NcbiAgICAgICAgPz8gbmV3IEV2ZW50RW1pdHRlcjxbRHJvcHpvbmUuRHJvcHpvbmVGaWxlLCBudW1iZXIsIG51bWJlcl0+KClcbiAgICBAT3V0cHV0KCd0b3RhbFVwbG9hZFByb2dyZXNzJykgcmVhZG9ubHkgRFpfVE9UQUxVUExPQURQUk9HUkVTUyA9IHRoaXMuY29tcG9uZW50Py5EWl9UT1RBTFVQTE9BRFBST0dSRVNTXG4gICAgICAgID8/IG5ldyBFdmVudEVtaXR0ZXI8W251bWJlciwgbnVtYmVyLCBudW1iZXJdPigpXG5cbiAgICBAT3V0cHV0KCdzZW5kaW5nJykgcmVhZG9ubHkgRFpfU0VORElORyA9IHRoaXMuY29tcG9uZW50Py5EWl9TRU5ESU5HXG4gICAgICAgID8/IG5ldyBFdmVudEVtaXR0ZXI8W0Ryb3B6b25lLkRyb3B6b25lRmlsZSwgWE1MSHR0cFJlcXVlc3QsIEZvcm1EYXRhXT4oKVxuICAgIEBPdXRwdXQoJ3NlbmRpbmdNdWx0aXBsZScpIHJlYWRvbmx5IERaX1NFTkRJTkdNVUxUSVBMRSA9IHRoaXMuY29tcG9uZW50Py5EWl9TRU5ESU5HTVVMVElQTEVcbiAgICAgICAgPz8gbmV3IEV2ZW50RW1pdHRlcjxbRHJvcHpvbmUuRHJvcHpvbmVGaWxlW10sIFhNTEh0dHBSZXF1ZXN0LCBGb3JtRGF0YV0+KClcblxuICAgIEBPdXRwdXQoJ3N1Y2Nlc3MnKSByZWFkb25seSBEWl9TVUNDRVNTID0gdGhpcy5jb21wb25lbnQ/LkRaX1NVQ0NFU1NcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHlwZXNcbiAgICAgICAgPz8gbmV3IEV2ZW50RW1pdHRlcjxbRHJvcHpvbmUuRHJvcHpvbmVGaWxlLCBPYmplY3QgfCBzdHJpbmddPigpXG4gICAgQE91dHB1dCgnc3VjY2Vzc011bHRpcGxlJykgcmVhZG9ubHkgRFpfU1VDQ0VTU01VTFRJUExFID0gdGhpcy5jb21wb25lbnQ/LkRaX1NVQ0NFU1NNVUxUSVBMRVxuICAgICAgICA/PyBuZXcgRXZlbnRFbWl0dGVyPERyb3B6b25lLkRyb3B6b25lRmlsZVtdPigpXG5cbiAgICBAT3V0cHV0KCdjYW5jZWxlZCcpIHJlYWRvbmx5IERaX0NBTkNFTEVEID0gdGhpcy5jb21wb25lbnQ/LkRaX0NBTkNFTEVEXG4gICAgICAgID8/IG5ldyBFdmVudEVtaXR0ZXI8RHJvcHpvbmUuRHJvcHpvbmVGaWxlPigpXG4gICAgQE91dHB1dCgnY2FuY2VsZWRNdWx0aXBsZScpIHJlYWRvbmx5IERaX0NBTkNFTEVETVVMVElQTEUgPSB0aGlzLmNvbXBvbmVudD8uRFpfQ0FOQ0VMRURNVUxUSVBMRVxuICAgICAgICA/PyBuZXcgRXZlbnRFbWl0dGVyPERyb3B6b25lLkRyb3B6b25lRmlsZVtdPigpXG5cbiAgICBAT3V0cHV0KCdjb21wbGV0ZScpIHJlYWRvbmx5IERaX0NPTVBMRVRFID0gdGhpcy5jb21wb25lbnQ/LkRaX0NPTVBMRVRFXG4gICAgICAgID8/IG5ldyBFdmVudEVtaXR0ZXI8RHJvcHpvbmUuRHJvcHpvbmVGaWxlPigpXG4gICAgQE91dHB1dCgnY29tcGxldGVNdWx0aXBsZScpIHJlYWRvbmx5IERaX0NPTVBMRVRFTVVMVElQTEUgPSB0aGlzLmNvbXBvbmVudD8uRFpfQ09NUExFVEVNVUxUSVBMRVxuICAgICAgICA/PyBuZXcgRXZlbnRFbWl0dGVyPERyb3B6b25lLkRyb3B6b25lRmlsZVtdPigpXG5cbiAgICBAT3V0cHV0KCdtYXhGaWxlc0V4Y2VlZGVkJykgcmVhZG9ubHkgRFpfTUFYRklMRVNFWENFRURFRCA9IHRoaXMuY29tcG9uZW50Py5EWl9NQVhGSUxFU0VYQ0VFREVEXG4gICAgICAgID8/IG5ldyBFdmVudEVtaXR0ZXI8RHJvcHpvbmUuRHJvcHpvbmVGaWxlPigpXG4gICAgQE91dHB1dCgnbWF4RmlsZXNSZWFjaGVkJykgcmVhZG9ubHkgRFpfTUFYRklMRVNSRUFDSEVEID0gdGhpcy5jb21wb25lbnQ/LkRaX01BWEZJTEVTUkVBQ0hFRFxuICAgICAgICA/PyBuZXcgRXZlbnRFbWl0dGVyPERyb3B6b25lLkRyb3B6b25lRmlsZVtdPigpXG5cbiAgICBAT3V0cHV0KCdxdWV1ZUNvbXBsZXRlJykgcmVhZG9ubHkgRFpfUVVFVUVDT01QTEVURSA9IHRoaXMuY29tcG9uZW50Py5EWl9RVUVVRUNPTVBMRVRFXG4gICAgICAgID8/IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKVxuXG4gICAgZ2V0IGRyb3B6b25lKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5pbnN0YW5jZVxuICAgIH1cblxuICAgIC8qKiBAaW50ZXJuYWwgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmR6LXNpbmdsZScpXG4gICAgZ2V0IGlzU2luZ2xlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcGFyYW1zPy5tYXhGaWxlcyA9PT0gMVxuICAgIH1cblxuICAgIC8qKiBAaW50ZXJuYWwgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmR6LW11bHRpcGxlJylcbiAgICBnZXQgaXNNdWx0aXBsZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3BhcmFtcz8ubWF4RmlsZXMgIT09IDFcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSB6b25lOiBOZ1pvbmUsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgZGlmZmVyczogS2V5VmFsdWVEaWZmZXJzLFxuICAgICAgICBASW5qZWN0KFBMQVRGT1JNX0lEKVxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10eXBlc1xuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHBsYXRmb3JtSWQ6IE9iamVjdCxcbiAgICAgICAgQE9wdGlvbmFsKClcbiAgICAgICAgQEluamVjdChOWFRfRFJPUFpPTkVfQ09ORklHKVxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGRlZmF1bHRzPzogRHJvcHpvbmVDb25maWcsXG4gICAgICAgIEBPcHRpb25hbCgpXG4gICAgICAgIEBJbmplY3QoTlhUX0RST1BaT05FX0xJU1RFTkVSUylcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBjb21wb25lbnQ/OiBEcm9wem9uZUxpc3RlbmVyc1xuICAgICkgeyB9XG5cbiAgICAvKiogQGludGVybmFsICovXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaW5pdEluc3RhbmNlKClcbiAgICB9XG5cbiAgICAvKiogQGludGVybmFsICovXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGVzdHJveUluc3RhbmNlKClcbiAgICB9XG5cbiAgICAvKiogQGludGVybmFsICovXG4gICAgbmdEb0NoZWNrKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBjaGFuZ2VzID0gdGhpcy5jb25maWdEaWZmLmRpZmYodGhpcy5jb25maWcgfHwge30gYXMgYW55KVxuXG4gICAgICAgIGlmIChjaGFuZ2VzKSB7XG4gICAgICAgICAgICBsZXQgbmV3UGFyYW1zID0gdGhpcy5kZWZhdWx0c1xuICAgICAgICAgICAgICAgID8gbmV3IF9Ecm9wem9uZUNvbmZpZyh0aGlzLmRlZmF1bHRzKVxuICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkXG4gICAgICAgICAgICBpZiAobmV3UGFyYW1zICYmIHRoaXMuY29uZmlnKVxuICAgICAgICAgICAgICAgIG5ld1BhcmFtcy5hc3NpZ24odGhpcy5jb25maWcpXG4gICAgICAgICAgICBlbHNlIGlmICh0aGlzLmNvbmZpZylcbiAgICAgICAgICAgICAgICBuZXdQYXJhbXMgPSBuZXcgX0Ryb3B6b25lQ29uZmlnKHRoaXMuY29uZmlnKVxuICAgICAgICAgICAgY29uc3QgZCA9IHRoaXMucGFyYW1EaWZmLmRpZmYobmV3UGFyYW1zIHx8IHt9IGFzIGFueSlcbiAgICAgICAgICAgIGlmIChkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fcGFyYW1zID0gbmV3UGFyYW1zXG4gICAgICAgICAgICAgICAgbGV0IGhhc0NoYW5nZXMgPSBmYWxzZVxuICAgICAgICAgICAgICAgIGQuZm9yRWFjaEl0ZW0ociA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghaW50ZXJuYWxDaGFuZ2VzLmhhcyhyLmtleSBhcyBhbnkpICYmIHIuY3VycmVudFZhbHVlICE9PSByLnByZXZpb3VzVmFsdWUpXG4gICAgICAgICAgICAgICAgICAgICAgICBoYXNDaGFuZ2VzID0gdHJ1ZVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgaWYgKGhhc0NoYW5nZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kZXN0cm95SW5zdGFuY2UoKVxuICAgICAgICAgICAgICAgICAgICB0aGlzLmluaXRJbnN0YW5jZSgpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBpbnRlcm5hbCAqL1xuICAgIHJlc2V0KGNhbmNlbD86IGJvb2xlYW4pIHtcbiAgICAgICAgaWYgKHRoaXMuaW5zdGFuY2UpIHtcbiAgICAgICAgICAgIHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5pbnN0YW5jZSEucmVtb3ZlQWxsRmlsZXMoY2FuY2VsKVxuICAgICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdEluc3RhbmNlKCkge1xuICAgICAgICBpZiAoIWlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkgfHwgIXRoaXMuX3BhcmFtcykge1xuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5pbnN0YW5jZSA9IG5ldyBEcm9wem9uZSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgdGhpcy5fcGFyYW1zKVxuICAgICAgICB9KVxuXG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICB0aGlzLmluc3RhbmNlIS5kaXNhYmxlKClcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLkRaX0lOSVQub2JzZXJ2ZWQpIHtcbiAgICAgICAgICAgIHRoaXMuem9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuRFpfSU5JVC5lbWl0KHRoaXMuaW5zdGFuY2UpXG4gICAgICAgICAgICB9KVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gQWRkIGF1dG8gcmVzZXQgaGFuZGxpbmcgZm9yIGV2ZW50c1xuICAgICAgICB0aGlzLmluc3RhbmNlIS5vbignc3VjY2VzcycsICgpID0+IHtcbiAgICAgICAgICAgIGlmICgodGhpcy5fcGFyYW1zPy5hdXRvUmVzZXQgPz8gLTEpID49IDApIHtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMucmVzZXQoKSwgdGhpcy5fcGFyYW1zPy5hdXRvUmVzZXQpXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pXG5cbiAgICAgICAgdGhpcy5pbnN0YW5jZSEub24oJ2Vycm9yJywgKCkgPT4ge1xuICAgICAgICAgICAgaWYgKCh0aGlzLl9wYXJhbXM/LmVycm9yUmVzZXQgPz8gLTEpID49IDApIHtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMucmVzZXQoKSwgdGhpcy5fcGFyYW1zPy5lcnJvclJlc2V0KVxuICAgICAgICAgICAgfVxuICAgICAgICB9KVxuXG4gICAgICAgIHRoaXMuaW5zdGFuY2UhLm9uKCdjYW5jZWxlZCcsICgpID0+IHtcbiAgICAgICAgICAgIGlmICgodGhpcy5fcGFyYW1zPy5jYW5jZWxSZXNldCA/PyAtMSkgPj0gMCkge1xuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5yZXNldCgpLCB0aGlzLl9wYXJhbXM/LmNhbmNlbFJlc2V0KVxuICAgICAgICAgICAgfVxuICAgICAgICB9KVxuXG4gICAgICAgIC8vIEFkZCBuYXRpdmUgRHJvcHpvbmUgZXZlbnQgaGFuZGxpbmdcbiAgICAgICAgRHJvcHpvbmVFdmVudHMuZm9yRWFjaCgoZXZlbnROYW1lOiBEcm9wem9uZUV2ZW50KSA9PiB7XG4gICAgICAgICAgICB0aGlzLmluc3RhbmNlIS5vbihldmVudE5hbWUudG9Mb3dlckNhc2UoKSwgKC4uLmFyZ3M6IGFueVtdKSA9PiB7XG4gICAgICAgICAgICAgICAgYXJncyA9IChhcmdzLmxlbmd0aCA9PT0gMSkgPyBhcmdzWzBdIDogYXJnc1xuXG4gICAgICAgICAgICAgICAgY29uc3Qgb3V0cHV0ID0gYERaXyR7ZXZlbnROYW1lLnRvVXBwZXJDYXNlKCl9YFxuXG4gICAgICAgICAgICAgICAgY29uc3QgZW1pdHRlciA9IHRoaXNbb3V0cHV0IGFzIGtleW9mIERyb3B6b25lRGlyZWN0aXZlXSBhcyBFdmVudEVtaXR0ZXI8YW55PlxuXG4gICAgICAgICAgICAgICAgaWYgKGVtaXR0ZXIub2JzZXJ2ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy56b25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbWl0dGVyLmVtaXQoYXJncylcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICB9KVxuICAgIH1cblxuICAgIHByaXZhdGUgZGVzdHJveUluc3RhbmNlKCkge1xuICAgICAgICBpZiAodGhpcy5pbnN0YW5jZSkge1xuICAgICAgICAgICAgdGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmluc3RhbmNlIS5kZXN0cm95KClcbiAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgIHRoaXMuaW5zdGFuY2UgPSB1bmRlZmluZWRcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==