New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@firestitch/file

Package Overview
Dependencies
Maintainers
7
Versions
221
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@firestitch/file - npm Package Compare versions

Comparing version 12.11.2 to 12.11.3

12

app/classes/input-processor.d.ts
import { ElementRef, EventEmitter, NgZone } from '@angular/core';
import { CordovaService } from '../services/cordova.service';
export declare class InputProcessor {
private cordovaService;
private ngZone;
private _cordovaService;
private _ngZone;
containerEl: any;

@@ -10,3 +10,3 @@ inputEl: any;

api: 'html5' | 'any' | 'cordova';
capture: string;
capture: 'camera' | 'library';
disabled: any;

@@ -26,3 +26,3 @@ allowClick: boolean;

private _declinedFiles$;
constructor(cordovaService: CordovaService, ngZone: NgZone);
constructor(_cordovaService: CordovaService, _ngZone: NgZone);
get accept(): string;

@@ -47,4 +47,4 @@ set accept(value: string);

private getCordovaFile;
isAcceptVideo(): RegExpMatchArray;
isAcceptImage(): RegExpMatchArray;
isAcceptVideo(): boolean | RegExpMatchArray;
isAcceptImage(): boolean | RegExpMatchArray;
selectFiles(files: any): void;

@@ -51,0 +51,0 @@ /**

@@ -20,6 +20,6 @@ import { ElementRef, EventEmitter, NgZone, OnDestroy, OnInit } from '@angular/core';

get api(): "any" | "html5" | "cordova";
set capture(value: string);
set capture(value: "camera" | "library");
set allowClick(value: any);
set allowDrop(value: any);
get capture(): string;
get capture(): "camera" | "library";
/**

@@ -26,0 +26,0 @@ * Accept Examples

@@ -7,8 +7,8 @@ import { EventEmitter } from '@angular/core';

export class InputProcessor {
constructor(cordovaService, ngZone) {
this.cordovaService = cordovaService;
this.ngZone = ngZone;
constructor(_cordovaService, _ngZone) {
this._cordovaService = _cordovaService;
this._ngZone = _ngZone;
this.multiple = false;
this.api = null;
this.capture = null;
this.capture = 'camera';
this.allowClick = true;

@@ -27,3 +27,3 @@ this.allowDrop = true;

this._declinedFiles$ = new Subject();
cordovaService.isReady()
this._cordovaService.isReady()
.subscribe(() => {

@@ -166,3 +166,3 @@ this.cordova.camera = getCordovaCamera();

.then((file) => {
this.ngZone.run(() => {
this._ngZone.run(() => {
this.selectFiles([file]);

@@ -206,3 +206,3 @@ });

.then((file) => {
this.ngZone.run(() => {
this._ngZone.run(() => {
this.selectFiles([file]);

@@ -248,6 +248,6 @@ });

isAcceptVideo() {
return this.accept.match(/video/i);
return this.accept.match(/video/i) || this.accept === '*';
}
isAcceptImage() {
return this.accept.match(/image/i);
return this.accept.match(/image/i) || this.accept === '*';
}

@@ -324,2 +324,2 @@ selectFiles(files) {

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtcHJvY2Vzc29yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FwcC9jbGFzc2VzL2lucHV0LXByb2Nlc3Nvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWMsWUFBWSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBRWpFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFL0IsT0FBTyxLQUFLLE9BQU8sTUFBTSxTQUFTLENBQUM7QUFDbkMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNuQyxPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLGlCQUFpQixFQUNqQixtQ0FBbUMsRUFDbkMsdUJBQXVCLEVBQ3ZCLHdCQUF3QixHQUN6QixNQUFNLFlBQVksQ0FBQztBQUlwQixNQUFNLE9BQU8sY0FBYztJQXVCekIsWUFBb0IsY0FBOEIsRUFBVSxNQUFjO1FBQXRELG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUFVLFdBQU0sR0FBTixNQUFNLENBQVE7UUFuQm5FLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIsUUFBRyxHQUFnQyxJQUFJLENBQUM7UUFDeEMsWUFBTyxHQUFXLElBQUksQ0FBQztRQUV2QixlQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLGNBQVMsR0FBRyxJQUFJLENBQUM7UUFDakIsV0FBTSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDNUIsWUFBTyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDN0IsWUFBTyxHQUFHO1lBQ2YsTUFBTSxFQUFFLElBQUk7WUFDWixPQUFPLEVBQUUsSUFBSTtZQUNiLHlCQUF5QixFQUFFLElBQUk7U0FDaEMsQ0FBQztRQUVNLFlBQU8sR0FBRyxHQUFHLENBQUM7UUFDZCxxQkFBZ0IsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQzdCLG9CQUFlLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUM1QixvQkFB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QUMsR0FBRyxDQUFDLEVBQUU7d0JBQ3pCLFdBQVcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7cUJBQ3RCO2lCQUNGO3FCQUFNO29CQUNMLE1BQU0sVUFBVSxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7b0JBQzdCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDO29CQUM1QyxVQUFVLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2lCQUNyQjthQUNGO2lCQUFNLElBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRTtnQkFDbEMsSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUM5QixJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUU7b0JBQ25DLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO2lCQUNoQzthQUNGO2lCQUFNLElBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFO2dCQUN0QyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUU7b0JBQ25DLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQztpQkFDdEM7YUFDRjtRQUNILENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBOZ1pvbmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgKiBhcyBGaWxlQVBJIGZyb20gJ2ZpbGVhcGknO1xuaW1wb3J0IHsgRnNGaWxlIH0gZnJvbSAnLi4vbW9kZWxzJztcbmltcG9ydCB7XG4gIGdldENvcmRvdmFDYW1lcmEsXG4gIGdldENvcmRvdmFDYXB0dXJlLFxuICBnZXRDb3Jkb3ZhUmVzb2x2ZUxvY2FsRmlsZVN5c3RlbVVSTCxcbiAgaGFzQ29yZG92YUNhbWVyYVN1cHBvcnQsXG4gIGhhc0NvcmRvdmFDYXB0dXJlU3VwcG9ydCxcbn0gZnJvbSAnLi4vaGVscGVycyc7XG5pbXBvcnQgeyBDb3Jkb3ZhU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2NvcmRvdmEuc2VydmljZSc7XG5cblxuZXhwb3J0IGNsYXNzIElucHV0UHJvY2Vzc29yIHtcblxuICBwdWJsaWMgY29udGFpbmVyRWw6IGFueTtcbiAgcHVibGljIGlucHV0RWw6IGFueTtcbiAgcHVibGljIG11bHRpcGxlID0gZmFsc2U7XG4gIHB1YmxpYyBhcGk6ICdodG1sNScgfCAnYW55JyB8ICdjb3Jkb3ZhJyA9IG51bGw7XG4gIHB1YmxpYyBjYXB0dXJlOiBzdHJpbmcgPSBudWxsO1xuICBwdWJsaWMgZGlzYWJsZWQ7XG4gIHB1YmxpYyBhbGxvd0NsaWNrID0gdHJ1ZTtcbiAgcHVibGljIGFsbG93RHJvcCA9IHRydWU7XG4gIHB1YmxpYyBzZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIHB1YmxpYyBjbGlja2VkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBwdWJsaWMgY29yZG92YSA9IHsgIFxuICAgIGNhbWVyYTogbnVsbCxcbiAgICBjYXB0dXJlOiBudWxsLFxuICAgIHJlc29sdmVMb2NhbEZpbGVTeXN0ZW1VUkw6IG51bGwgXG4gIH07XG5cbiAgcHJpdmF0ZSBfYWNjZXB0ID0gJyonO1xuICBwcml2YXRlIF9hY2NlcHRhYmxlVHlwZXMgPSBuZXcgTWFwKCk7XG4gIHByaXZhdGUgX2FjY2VwdGFibGVFeHRzID0gbmV3IFNldCgpO1xuICBwcml2YXRlIF9kZWNsaW5lZEZpbGVzJCA9IG5ldyBTdWJqZWN0PEZpbGVbXT4oKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNvcmRvdmFTZXJ2aWNlOiBDb3Jkb3ZhU2VydmljZSwgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSkge1xuICAgIGNvcmRvdmFTZXJ2aWNlLmlzUmVhZHkoKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuY29yZG92YS5jYW1lcmEgPSBnZXRDb3Jkb3ZhQ2FtZXJhKCk7XG4gICAgICAgIHRoaXMuY29yZG92YS5jYXB0dXJlID0gZ2V0Q29yZG92YUNhcHR1cmUoKTtcbiAgICAgICAgdGhpcy5jb3Jkb3ZhLnJlc29sdmVMb2NhbEZpbGVTeXN0ZW1VUkwgPSBnZXRDb3Jkb3ZhUmVzb2x2ZUxvY2FsRmlsZVN5c3RlbVVSTCgpO1xuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGFjY2VwdCgpIHtcbiAgICByZXR1cm4gdGhpcy5fYWNjZXB0O1xuICB9XG5cbiAgcHVibGljIHNldCBhY2NlcHQodmFsdWUpIHtcbiAgICB2YWx1ZSA9IHZhbHVlIHx8ICcqJztcbiAgICB0aGlzLl9hY2NlcHRhYmxlVHlwZXMuY2xlYXIoKTtcbiAgICB0aGlzLl9hY2NlcHRhYmxlRXh0cy5jbGVhcigpO1xuICAgIHRoaXMucGFyc2VBY2NlcHRUeXBlcyh2YWx1ZSk7XG5cbiAgICB0aGlzLl9hY2NlcHQgPSBbXG4gICAgICAuLi5BcnJheS5mcm9tKHRoaXMuX2FjY2VwdGFibGVUeXBlcylcbiAgICAgICAgLnJlZHVjZSgoYWNjdW0sIFsga2V5LCB2YWx1ZXMgXSkgPT4ge1xuICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAuLi5hY2N1bSwgXG4gICAgICAgICAgICAuLi5BcnJheS5mcm9tKHZhbHVlcylcbiAgICAgICAgICAgICAgLm1hcCgodmFsdWUpID0+IGAke2tleX0vJHt2YWx1ZX1gKSxcbiAgICAgICAgICBdO1xuICAgICAgICB9LFtdKSxcbiAgICAgIC4uLkFycmF5LmZyb20odGhpcy5fYWNjZXB0YWJsZUV4dHMpLnZhbHVlcygpLFxuICAgIF0uam9pbignLCcpO1xuICB9XG5cbiAgcHVibGljIGdldCBkZWNsaW5lZEZpbGVzJCgpIHtcbiAgICByZXR1cm4gdGhpcy5fZGVjbGluZWRGaWxlcyQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZSBzZXJ2aWNlIGZvciB0YXJnZXQgZWxlbWVudFxuICAgKiBAcGFyYW0gZWxcbiAgICovXG4gIHB1YmxpYyByZWdpc3RlcklucHV0KGVsOiBFbGVtZW50UmVmKSB7XG4gICAgaWYgKCFlbCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgdGhpcy5pbnB1dEVsID0gZWwubmF0aXZlRWxlbWVudDtcblxuICAgIEZpbGVBUEkuZXZlbnQub24odGhpcy5pbnB1dEVsLCAnY2hhbmdlJywgKGV2ZW50KSA9PiB7XG5cbiAgICAgIGlmICghdGhpcy5hbGxvd0NsaWNrKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZGVjbGluZWRGaWxlcyA9IFtdO1xuICAgICAgY29uc3QgZmlsZXMgPSBGaWxlQVBJLmdldEZpbGVzKGV2ZW50KVxuICAgICAgICAuZmlsdGVyKGZpbGUgPT4ge1xuICAgICAgICAgIGNvbnN0IG5hbWVQYXJ0cyA9IGZpbGUubmFtZS5zcGxpdCgnLicpO1xuICAgICAgICAgIGxldCBleHQ7XG4gICAgICAgICAgaWYgKG5hbWVQYXJ0cyAmJiBBcnJheS5pc0FycmF5KG5hbWVQYXJ0cykpIHtcbiAgICAgICAgICAgIGV4dCA9IG5hbWVQYXJ0c1tuYW1lUGFydHMubGVuZ3RoIC0gMV07XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZXh0ID0gKGV4dCArICcnKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgIGNvbnN0IGFjY2VwdGFibGVGaWxlID0gdGhpcy5jaGVja0FjY2VwdGFibGVUeXBlcyhmaWxlLnR5cGUsIGV4dCk7XG5cbiAgICAgICAgICBpZiAoIWFjY2VwdGFibGVGaWxlKSB7XG4gICAgICAgICAgICBkZWNsaW5lZEZpbGVzLnB1c2goZmlsZSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIGFjY2VwdGFibGVGaWxlO1xuICAgICAgICB9KTtcblxuICAgICAgaWYgKGRlY2xpbmVkRmlsZXMubGVuZ3RoID4gMCkge1xuICAgICAgICB0aGlzLl9kZWNsaW5lZEZpbGVzJC5uZXh0KGRlY2xpbmVkRmlsZXMpO1xuICAgICAgfVxuXG4gICAgICBpZiAoZmlsZXMgJiYgZmlsZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAvLyBDbGVhciBpbnB1dCB2YWx1ZVxuICAgICAgICB0aGlzLmlucHV0RWwudmFsdWUgPSBudWxsO1xuXG4gICAgICAgIHRoaXMuc2VsZWN0RmlsZXMoZmlsZXMpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHJlZ2lzdGVyRHJvcChlbDogRWxlbWVudFJlZikge1xuICAgIGlmICghZWwpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHRoaXMuY29udGFpbmVyRWwgPSBlbC5uYXRpdmVFbGVtZW50O1xuICAgIEZpbGVBUEkuZXZlbnQub24odGhpcy5jb250YWluZXJFbCwgJ2Ryb3AnLCAoZXZlbnQpID0+IHtcblxuICAgICAgaWYgKCF0aGlzLmFsbG93RHJvcCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGZpbGVzID0gRmlsZUFQSS5nZXRGaWxlcyhldmVudClcbiAgICAgICAgLmZpbHRlcihmaWxlID0+IHtcbiAgICAgICAgICBjb25zdCBuYW1lUGFydHMgPSBmaWxlLm5hbWUuc3BsaXQoJy4nKTtcbiAgICAgICAgICBsZXQgZXh0O1xuICAgICAgICAgIGlmIChuYW1lUGFydHMgJiYgQXJyYXkuaXNBcnJheShuYW1lUGFydHMpKSB7XG4gICAgICAgICAgICBleHQgPSBuYW1lUGFydHNbbmFtZVBhcnRzLmxlbmd0aCAtIDFdO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB0aGlzLmNoZWNrQWNjZXB0YWJsZVR5cGVzKGZpbGUudHlwZSwgZXh0KVxuICAgICAgICB9KTtcblxuICAgICAgaWYgKGZpbGVzICYmIGZpbGVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdGhpcy5pbnB1dEVsLnZhbHVlID0gbnVsbDtcblxuICAgICAgICB0aGlzLnNlbGVjdEZpbGVzKGZpbGVzKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyByZWdpc3RlckxhYmVsKGVsOiBFbGVtZW50UmVmKSB7XG4gICAgaWYgKCFlbCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgRmlsZUFQSS5ldmVudC5vbihlbC5uYXRpdmVFbGVtZW50LCAnY2xpY2snLCAoZXZlbnQpID0+IHtcbiAgICAgIGlmICghdGhpcy5hbGxvd0NsaWNrKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuYXBpICE9PSAnaHRtbDUnICYmICh0aGlzLmNhcHR1cmUgPT09ICdjYW1lcmEnIHx8IHRoaXMuY2FwdHVyZSA9PT0gJ2xpYnJhcnknKSkge1xuXG4gICAgICAgIGlmIChoYXNDb3Jkb3ZhQ2FtZXJhU3VwcG9ydCgpKSB7XG4gICAgICAgICAgaWYgKHRoaXMuY2FwdHVyZSA9PT0gJ2xpYnJhcnknKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3RDb3Jkb3ZhQ2FtZXJhTGlicmFyeSgpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICh0aGlzLmlzQWNjZXB0SW1hZ2UoKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0Q29yZG92YUNhbWVyYVBpY3R1cmUoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaGFzQ29yZG92YUNhcHR1cmVTdXBwb3J0KCkpIHtcblxuICAgICAgICAgIGlmICh0aGlzLmlzQWNjZXB0VmlkZW8oKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0Q29yZG92YUNhcHR1cmVWaWRlbygpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB0aGlzLmNsaWNrZWQubmV4dChldmVudCk7XG5cbiAgICAgIGlmICghZXZlbnQuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgICB0aGlzLmlucHV0RWwuY2xpY2soKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBjb3Jkb3ZhQ2FtZXJhQ2xlYW51cCgpIHtcbiAgICB0aGlzLmNvcmRvdmEuY2FtZXJhLmNsZWFudXAoKTtcbiAgfVxuXG4gIHB1YmxpYyBzZWxlY3RDb3Jkb3ZhQ2FwdHVyZUltYWdlKCkge1xuICAgIHRoaXMuY29yZG92YS5jYXB0dXJlLmNhcHR1cmVJbWFnZSgoZmlsZXMpID0+IHtcbiAgICAgIHRoaXMuc3VjY2Vzc0NhcHR1cmVGaWxlcyhmaWxlcyk7XG4gICAgfSxcbiAgICB0aGlzLmVycm9yQ2FwdHVyZUZpbGVzLCB7IGxpbWl0OiAxIH0pO1xuICB9XG5cbiAgcHVibGljIHNlbGVjdENvcmRvdmFDYXB0dXJlVmlkZW8oKSB7XG4gICAgdGhpcy5jb3Jkb3ZhLmNhcHR1cmUuY2FwdHVyZVZpZGVvKChmaWxlcykgPT4ge1xuICAgICAgdGhpcy5zdWNjZXNzQ2FwdHVyZUZpbGVzKGZpbGVzKTtcbiAgICB9LFxuICAgIHRoaXMuZXJyb3JDYXB0dXJlRmlsZXMsIHsgbGltaXQ6IDEgfSk7XG4gIH1cblxuICBwdWJsaWMgc3VjY2Vzc0NhcHR1cmVGaWxlcyhmaWxlcykge1xuXG4gICAgZmlsZXMuZm9yRWFjaCgoY2FwdHVyZUZpbGUpID0+IHtcblxuICAgICAgdGhpcy5nZXRDb3Jkb3ZhRmlsZShjYXB0dXJlRmlsZS5mdWxsUGF0aClcbiAgICAgIC50aGVuKChmaWxlKSA9PiB7XG4gICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgdGhpcy5zZWxlY3RGaWxlcyhbZmlsZV0pO1xuICAgICAgICB9KTtcbiAgICAgIH0pLmNhdGNoKGVycm9yID0+IHtcbiAgICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xuICAgICAgfSlcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBlcnJvckNhcHR1cmVGaWxlcyhlcnJvcikge1xuICAgIGNvbnNvbGUubG9nKGVycm9yKTtcbiAgfVxuXG4gIHB1YmxpYyBzZWxlY3RDb3Jkb3ZhQ2FtZXJhTGlicmFyeSgpIHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RDb3Jkb3ZhQ2FtZXJhKHRoaXMuY29yZG92YS5jYW1lcmEuUGljdHVyZVNvdXJjZVR5cGUuUEhPVE9MSUJSQVJZLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb3Jkb3ZhLmNhbWVyYS5NZWRpYVR5cGUuQUxMTUVESUEpO1xuICB9XG5cbiAgcHVibGljIHNlbGVjdENvcmRvdmFDYW1lcmFQaWN0dXJlKCkge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdENvcmRvdmFDYW1lcmEodGhpcy5jb3Jkb3ZhLmNhbWVyYS5QaWN0dXJlU291cmNlVHlwZS5DQU1FUkEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvcmRvdmEuY2FtZXJhLk1lZGlhVHlwZS5QSUNUVVJFKTtcbiAgfVxuXG4gIHB1YmxpYyBzZWxlY3RDb3Jkb3ZhQ2FtZXJhKHNvdXJjZVR5cGUsIG1lZGlhVHlwZSkge1xuXG4gICAgY29uc3Qgb3B0aW9uczogYW55ID0ge1xuICAgICAgZGVzdGluYXRpb25UeXBlOiB0aGlzLmNvcmRvdmEuY2FtZXJhLkRlc3RpbmF0aW9uVHlwZS5GSUxFX1VSSSxcbiAgICAgIGVuY29kaW5nVHlwZTogdGhpcy5jb3Jkb3ZhLmNhbWVyYS5EZXN0aW5hdGlvblR5cGUuSlBFRyxcbiAgICAgIHNvdXJjZVR5cGU6IHNvdXJjZVR5cGUsXG4gICAgICBtZWRpYVR5cGU6IG1lZGlhVHlwZSxcbiAgICAgIHF1YWxpdHk6IDEwMCxcbiAgICAgIGNvcnJlY3RPcmllbnRhdGlvbjogZmFsc2VcbiAgICB9O1xuXG4gICAgaWYgKHRoaXMuYWNjZXB0Lmxlbmd0aCkge1xuICAgICAgY29uc3QgdmlkZW8gPSB0aGlzLmlzQWNjZXB0VmlkZW8oKTtcbiAgICAgIGNvbnN0IGltYWdlID0gdGhpcy5pc0FjY2VwdEltYWdlKCk7XG5cbiAgICAgIGlmICh2aWRlbyAmJiAhaW1hZ2UpIHtcbiAgICAgICAgb3B0aW9ucy5tZWRpYVR5cGUgPSB0aGlzLmNvcmRvdmEuY2FtZXJhLk1lZGlhVHlwZS5WSURFTztcbiAgICAgIH0gZWxzZSBpZiAoaW1hZ2UgJiYgIXZpZGVvKSB7XG4gICAgICAgIG9wdGlvbnMubWVkaWFUeXBlID0gdGhpcy5jb3Jkb3ZhLmNhbWVyYS5NZWRpYVR5cGUuUElDVFVSRTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmNvcmRvdmEuY2FtZXJhLmdldFBpY3R1cmUoZGF0YSA9PiB7XG5cbiAgICAgIHRoaXMuZ2V0Q29yZG92YUZpbGUoZGF0YSlcbiAgICAgIC50aGVuKChmaWxlKSA9PiB7XG4gICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgdGhpcy5zZWxlY3RGaWxlcyhbZmlsZV0pO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5jb3Jkb3ZhQ2FtZXJhQ2xlYW51cCgpO1xuICAgICAgfSkuY2F0Y2goZXJyb3IgPT4ge1xuICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XG4gICAgICAgIHRoaXMuY29yZG92YUNhbWVyYUNsZWFudXAoKTtcbiAgICAgIH0pO1xuXG4gICAgfSwgKCkgPT4ge1xuICAgICAgdGhpcy5jb3Jkb3ZhQ2FtZXJhQ2xlYW51cCgpO1xuICAgIH0sIG9wdGlvbnMpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDb3Jkb3ZhRmlsZShwYXRoKSB7XG5cbiAgICBpZiAoIXBhdGgubWF0Y2goL15maWxlOi8pKSB7XG4gICAgICBwYXRoID0gJ2ZpbGU6Ly8nLmNvbmNhdChwYXRoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuXG4gICAgICB0aGlzLmNvcmRvdmEucmVzb2x2ZUxvY2FsRmlsZVN5c3RlbVVSTChwYXRoLCBmaWxlRW50cnkgPT4ge1xuXG4gICAgICAgIGZpbGVFbnRyeS5maWxlKGZpbGUgPT4ge1xuXG4gICAgICAgICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcbiAgICAgICAgICByZWFkZXIub25sb2FkZW5kID0gKGVuY29kZWRGaWxlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmaWxlRGF0YSA9ICg8YW55PmVuY29kZWRGaWxlLnRhcmdldCkucmVzdWx0LnNwbGl0KCdiYXNlNjQsJykucG9wKCk7XG4gICAgICAgICAgICBjb25zdCBieXRlU3RyaW5nID0gYXRvYihmaWxlRGF0YSk7XG4gICAgICAgICAgICBsZXQgbiA9IGJ5dGVTdHJpbmcubGVuZ3RoO1xuICAgICAgICAgICAgY29uc3QgdThhcnIgPSBuZXcgVWludDhBcnJheShuKTtcblxuICAgICAgICAgICAgd2hpbGUgKG4tLSkge1xuICAgICAgICAgICAgICB1OGFycltuXSA9IGJ5dGVTdHJpbmcuY2hhckNvZGVBdChuKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgYmxvYiA9IG5ldyBGaWxlKFt1OGFycl0sIGZpbGUubmFtZSwgeyB0eXBlOiBmaWxlLnR5cGUgfSk7XG4gICAgICAgICAgICByZXNvbHZlKGJsb2IpO1xuICAgICAgICAgIH07XG5cbiAgICAgICAgICByZWFkZXIucmVhZEFzRGF0YVVSTChmaWxlKTtcbiAgICAgICAgfSxcbiAgICAgICAgKGVycm9yKSA9PiB7XG4gICAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgICAgKGVycm9yKSA9PiB7XG4gICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBpc0FjY2VwdFZpZGVvKCkge1xuICAgIHJldHVybiB0aGlzLmFjY2VwdC5tYXRjaCgvdmlkZW8vaSk7XG4gIH1cblxuICBwdWJsaWMgaXNBY2NlcHRJbWFnZSgpIHtcbiAgICByZXR1cm4gdGhpcy5hY2NlcHQubWF0Y2goL2ltYWdlL2kpO1xuICB9XG5cbiAgcHVibGljIHNlbGVjdEZpbGVzKGZpbGVzKSB7XG4gICAgZmlsZXMgPSBmaWxlcy5tYXAoKGYpID0+IHtcbiAgICAgIHJldHVybiBuZXcgRnNGaWxlKGYpO1xuICAgIH0pO1xuXG4gICAgaWYgKGZpbGVzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgZmlsZXMgPSBmaWxlc1swXTtcbiAgICB9XG5cbiAgICB0aGlzLnNlbGVjdC5lbWl0KGZpbGVzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBmaWxlIG1pbWV0eXBlIG9yIGV4dGVudGlvbiBpcyBhY2NlcHRhYmxlIGJ5IEBhY2NlcHQgZmllbGRcbiAgICogQHBhcmFtIHRhcmdldFR5cGVcbiAgICogQHBhcmFtIHRhcmdldEV4dFxuICAgKiBAcmV0dXJucyBib29sZWFuXG4gICAqL1xuICBwcml2YXRlIGNoZWNrQWNjZXB0YWJsZVR5cGVzKHRhcmdldFR5cGUsIHRhcmdldEV4dCkge1xuICAgIHRhcmdldFR5cGUgPSB0YXJnZXRUeXBlLnRyaW0oKTtcbiAgICBjb25zdCBbIHR5cGUsIGV4dCBdID0gdGFyZ2V0VHlwZS5zcGxpdCgnLycpO1xuICAgIGNvbnN0IGFjY2VwdGFibGVUeXBlID0gdGhpcy5fYWNjZXB0YWJsZVR5cGVzLmdldCh0eXBlKTtcblxuICAgIHJldHVybiB0aGlzLmFjY2VwdCA9PT0gJyonXG4gICAgICAgICAgICB8fCB0aGlzLmFjY2VwdCA9PT0gJyovKidcbiAgICAgICAgICAgIHx8ICghIWFjY2VwdGFibGVUeXBlICYmIChhY2NlcHRhYmxlVHlwZS5oYXMoJyonKSB8fCBhY2NlcHRhYmxlVHlwZS5oYXMoZXh0KSkpXG4gICAgICAgICAgICB8fCB0aGlzLl9hY2NlcHRhYmxlRXh0cy5oYXMoYC4ke3RhcmdldEV4dH1gKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQYXJzZXQgYW5kIHN0b3JlIGFjY2VwdGFibGUgdHlwZXMgZm9yIGZlYXR1cmUgZmlsdGVyXG4gICAqIEBwYXJhbSB0eXBlc1xuICAgKi9cbiAgcHJpdmF0ZSBwYXJzZUFjY2VwdFR5cGVzKHZhbHVlKSB7XG4gICAgbGV0IHR5cGVzID0gW107XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHsgXG4gICAgICB0eXBlcyA9IHZhbHVlLnNwbGl0KC9bLDtdLyk7XG4gICAgfVxuICAgIFxuICAgIGlmKCF0eXBlcy5sZW5ndGgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0eXBlcyA9IHR5cGVzXG4gICAgICAubWFwKCh0eXBlKSA9PiB0eXBlLnRyaW0oKSk7XG5cbiAgICB0eXBlcy5mb3JFYWNoKChwYXJ0KSA9PiB7XG4gICAgICBpZihwYXJ0ID09PSAnKicpIHtcbiAgICAgICAgdGhpcy5fYWNjZXB0YWJsZUV4dHMuYWRkKCcqJyk7XG4gICAgICB9IGVsc2UgaWYgKHBhcnQuaW5kZXhPZignLycpICE9PSAtMSkge1xuICAgICAgICBjb25zdCBbIHR5cGUsIGV4dCBdID0gcGFydC5zcGxpdCgnLycpO1xuICAgICAgICBpZiAodGhpcy5fYWNjZXB0YWJsZVR5cGVzLmhhcyh0eXBlKSkge1xuICAgICAgICAgIGNvbnN0IGV4aXN0ZWRUeXBlID0gdGhpcy5fYWNjZXB0YWJsZVR5cGVzLmdldCh0eXBlKTtcblxuICAgICAgICAgIGlmICghZXhpc3RlZFR5cGUuaGFzKGV4dCkpIHtcbiAgICAgICAgICAgIGV4aXN0ZWRUeXBlLmFkZChleHQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBleHRlbnNpb25zID0gbmV3IFNldCgpO1xuICAgICAgICAgIHRoaXMuX2FjY2VwdGFibGVUeXBlcy5zZXQodHlwZSwgZXh0ZW5zaW9ucyk7XG4gICAgICAgICAgZXh0ZW5zaW9ucy5hZGQoZXh0KTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmKHBhcnQuaW5kZXhPZignLicpICE9PSAtMSkge1xuICAgICAgICBwYXJ0ID0gcGFydC5yZXBsYWNlKC9eXFwqLywnJyk7XG4gICAgICAgIGlmICghdGhpcy5fYWNjZXB0YWJsZUV4dHMuaGFzKHBhcnQpKSB7XG4gICAgICAgICAgdGhpcy5fYWNjZXB0YWJsZUV4dHMuYWRkKHBhcnQpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYocGFydC5tYXRjaCgvW2EtejAtOV17Myw0fS9pKSkge1xuICAgICAgICBpZiAoIXRoaXMuX2FjY2VwdGFibGVFeHRzLmhhcyhwYXJ0KSkge1xuICAgICAgICAgIHRoaXMuX2FjY2VwdGFibGVFeHRzLmFkZChgLiR7cGFydH1gKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pXG4gIH1cbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtcHJvY2Vzc29yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FwcC9jbGFzc2VzL2lucHV0LXByb2Nlc3Nvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWMsWUFBWSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBRWpFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFL0IsT0FBTyxLQUFLLE9BQU8sTUFBTSxTQUFTLENBQUM7QUFDbkMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNuQyxPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLGlCQUFpQixFQUNqQixtQ0FBbUMsRUFDbkMsdUJBQXVCLEVBQ3ZCLHdCQUF3QixHQUN6QixNQUFNLFlBQVksQ0FBQztBQUlwQixNQUFNLE9BQU8sY0FBYztJQXVCekIsWUFDVSxlQUErQixFQUMvQixPQUFlO1FBRGYsb0JBQWUsR0FBZixlQUFlLENBQWdCO1FBQy9CLFlBQU8sR0FBUCxPQUFPLENBQVE7UUFyQmxCLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIsUUFBRyxHQUFnQyxJQUFJLENBQUM7UUFDeEMsWUFBTyxHQUF5QixRQUFRLENBQUM7UUFFekMsZUFBVSxHQUFHLElBQUksQ0FBQztRQUNsQixjQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQzVCLFlBQU8sR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQzdCLFlBQU8sR0FBRztZQUNmLE1BQU0sRUFBRSxJQUFJO1lBQ1osT0FBTyxFQUFFLElBQUk7WUFDYix5QkFBeUIsRUFBRSxJQUFJO1NBQ2hDLENBQUM7UUFFTSxZQUFPLEdBQUcsR0FBRyxDQUFDO1FBQ2QscUJBQWdCLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUM3QixvQkFBZSxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7UUFDNUIsb0JB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Z0JBQWdCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUVwRCxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRTt3QkFDekIsV0FBVyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztxQkFDdEI7aUJBQ0Y7cUJBQU07b0JBQ0wsTUFBTSxVQUFVLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztvQkFDN0IsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUM7b0JBQzVDLFVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7aUJBQ3JCO2FBQ0Y7aUJBQU0sSUFBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFO2dCQUNsQyxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQzlCLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRTtvQkFDbkMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7aUJBQ2hDO2FBQ0Y7aUJBQU0sSUFBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLEVBQUU7Z0JBQ3RDLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRTtvQkFDbkMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDO2lCQUN0QzthQUNGO1FBQ0gsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIE5nWm9uZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCAqIGFzIEZpbGVBUEkgZnJvbSAnZmlsZWFwaSc7XG5pbXBvcnQgeyBGc0ZpbGUgfSBmcm9tICcuLi9tb2RlbHMnO1xuaW1wb3J0IHtcbiAgZ2V0Q29yZG92YUNhbWVyYSxcbiAgZ2V0Q29yZG92YUNhcHR1cmUsXG4gIGdldENvcmRvdmFSZXNvbHZlTG9jYWxGaWxlU3lzdGVtVVJMLFxuICBoYXNDb3Jkb3ZhQ2FtZXJhU3VwcG9ydCxcbiAgaGFzQ29yZG92YUNhcHR1cmVTdXBwb3J0LFxufSBmcm9tICcuLi9oZWxwZXJzJztcbmltcG9ydCB7IENvcmRvdmFTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvY29yZG92YS5zZXJ2aWNlJztcblxuXG5leHBvcnQgY2xhc3MgSW5wdXRQcm9jZXNzb3Ige1xuXG4gIHB1YmxpYyBjb250YWluZXJFbDogYW55O1xuICBwdWJsaWMgaW5wdXRFbDogYW55O1xuICBwdWJsaWMgbXVsdGlwbGUgPSBmYWxzZTtcbiAgcHVibGljIGFwaTogJ2h0bWw1JyB8ICdhbnknIHwgJ2NvcmRvdmEnID0gbnVsbDtcbiAgcHVibGljIGNhcHR1cmU6ICdjYW1lcmEnIHwgJ2xpYnJhcnknID0gJ2NhbWVyYSc7XG4gIHB1YmxpYyBkaXNhYmxlZDtcbiAgcHVibGljIGFsbG93Q2xpY2sgPSB0cnVlO1xuICBwdWJsaWMgYWxsb3dEcm9wID0gdHJ1ZTtcbiAgcHVibGljIHNlbGVjdCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgcHVibGljIGNsaWNrZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIHB1YmxpYyBjb3Jkb3ZhID0geyAgXG4gICAgY2FtZXJhOiBudWxsLFxuICAgIGNhcHR1cmU6IG51bGwsXG4gICAgcmVzb2x2ZUxvY2FsRmlsZVN5c3RlbVVSTDogbnVsbCBcbiAgfTtcblxuICBwcml2YXRlIF9hY2NlcHQgPSAnKic7XG4gIHByaXZhdGUgX2FjY2VwdGFibGVUeXBlcyA9IG5ldyBNYXAoKTtcbiAgcHJpdmF0ZSBfYWNjZXB0YWJsZUV4dHMgPSBuZXcgU2V0KCk7XG4gIHByaXZhdGUgX2RlY2xpbmVkRmlsZXMkID0gbmV3IFN1YmplY3Q8RmlsZVtdPigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX2NvcmRvdmFTZXJ2aWNlOiBDb3Jkb3ZhU2VydmljZSwgXG4gICAgcHJpdmF0ZSBfbmdab25lOiBOZ1pvbmVcbiAgKSB7XG4gICAgdGhpcy5fY29yZG92YVNlcnZpY2UuaXNSZWFkeSgpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5jb3Jkb3ZhLmNhbWVyYSA9IGdldENvcmRvdmFDYW1lcmEoKTtcbiAgICAgICAgdGhpcy5jb3Jkb3ZhLmNhcHR1cmUgPSBnZXRDb3Jkb3ZhQ2FwdHVyZSgpO1xuICAgICAgICB0aGlzLmNvcmRvdmEucmVzb2x2ZUxvY2FsRmlsZVN5c3RlbVVSTCA9IGdldENvcmRvdmFSZXNvbHZlTG9jYWxGaWxlU3lzdGVtVVJMKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgYWNjZXB0KCkge1xuICAgIHJldHVybiB0aGlzLl9hY2NlcHQ7XG4gIH1cblxuICBwdWJsaWMgc2V0IGFjY2VwdCh2YWx1ZSkge1xuICAgIHZhbHVlID0gdmFsdWUgfHwgJyonO1xuICAgIHRoaXMuX2FjY2VwdGFibGVUeXBlcy5jbGVhcigpO1xuICAgIHRoaXMuX2FjY2VwdGFibGVFeHRzLmNsZWFyKCk7XG4gICAgdGhpcy5wYXJzZUFjY2VwdFR5cGVzKHZhbHVlKTtcblxuICAgIHRoaXMuX2FjY2VwdCA9IFtcbiAgICAgIC4uLkFycmF5LmZyb20odGhpcy5fYWNjZXB0YWJsZVR5cGVzKVxuICAgICAgICAucmVkdWNlKChhY2N1bSwgWyBrZXksIHZhbHVlcyBdKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIC4uLmFjY3VtLCBcbiAgICAgICAgICAgIC4uLkFycmF5LmZyb20odmFsdWVzKVxuICAgICAgICAgICAgICAubWFwKCh2YWx1ZSkgPT4gYCR7a2V5fS8ke3ZhbHVlfWApLFxuICAgICAgICAgIF07XG4gICAgICAgIH0sW10pLFxuICAgICAgLi4uQXJyYXkuZnJvbSh0aGlzLl9hY2NlcHRhYmxlRXh0cykudmFsdWVzKCksXG4gICAgXS5qb2luKCcsJyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRlY2xpbmVkRmlsZXMkKCkge1xuICAgIHJldHVybiB0aGlzLl9kZWNsaW5lZEZpbGVzJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0aWFsaXplIHNlcnZpY2UgZm9yIHRhcmdldCBlbGVtZW50XG4gICAqIEBwYXJhbSBlbFxuICAgKi9cbiAgcHVibGljIHJlZ2lzdGVySW5wdXQoZWw6IEVsZW1lbnRSZWYpIHtcbiAgICBpZiAoIWVsKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICB0aGlzLmlucHV0RWwgPSBlbC5uYXRpdmVFbGVtZW50O1xuXG4gICAgRmlsZUFQSS5ldmVudC5vbih0aGlzLmlucHV0RWwsICdjaGFuZ2UnLCAoZXZlbnQpID0+IHtcblxuICAgICAgaWYgKCF0aGlzLmFsbG93Q2xpY2spIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBkZWNsaW5lZEZpbGVzID0gW107XG4gICAgICBjb25zdCBmaWxlcyA9IEZpbGVBUEkuZ2V0RmlsZXMoZXZlbnQpXG4gICAgICAgIC5maWx0ZXIoZmlsZSA9PiB7XG4gICAgICAgICAgY29uc3QgbmFtZVBhcnRzID0gZmlsZS5uYW1lLnNwbGl0KCcuJyk7XG4gICAgICAgICAgbGV0IGV4dDtcbiAgICAgICAgICBpZiAobmFtZVBhcnRzICYmIEFycmF5LmlzQXJyYXkobmFtZVBhcnRzKSkge1xuICAgICAgICAgICAgZXh0ID0gbmFtZVBhcnRzW25hbWVQYXJ0cy5sZW5ndGggLSAxXTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBleHQgPSAoZXh0ICsgJycpLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgY29uc3QgYWNjZXB0YWJsZUZpbGUgPSB0aGlzLmNoZWNrQWNjZXB0YWJsZVR5cGVzKGZpbGUudHlwZSwgZXh0KTtcblxuICAgICAgICAgIGlmICghYWNjZXB0YWJsZUZpbGUpIHtcbiAgICAgICAgICAgIGRlY2xpbmVkRmlsZXMucHVzaChmaWxlKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gYWNjZXB0YWJsZUZpbGU7XG4gICAgICAgIH0pO1xuXG4gICAgICBpZiAoZGVjbGluZWRGaWxlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRoaXMuX2RlY2xpbmVkRmlsZXMkLm5leHQoZGVjbGluZWRGaWxlcyk7XG4gICAgICB9XG5cbiAgICAgIGlmIChmaWxlcyAmJiBmaWxlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIC8vIENsZWFyIGlucHV0IHZhbHVlXG4gICAgICAgIHRoaXMuaW5wdXRFbC52YWx1ZSA9IG51bGw7XG5cbiAgICAgICAgdGhpcy5zZWxlY3RGaWxlcyhmaWxlcyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgcmVnaXN0ZXJEcm9wKGVsOiBFbGVtZW50UmVmKSB7XG4gICAgaWYgKCFlbCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgdGhpcy5jb250YWluZXJFbCA9IGVsLm5hdGl2ZUVsZW1lbnQ7XG4gICAgRmlsZUFQSS5ldmVudC5vbih0aGlzLmNvbnRhaW5lckVsLCAnZHJvcCcsIChldmVudCkgPT4ge1xuXG4gICAgICBpZiAoIXRoaXMuYWxsb3dEcm9wKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZmlsZXMgPSBGaWxlQVBJLmdldEZpbGVzKGV2ZW50KVxuICAgICAgICAuZmlsdGVyKGZpbGUgPT4ge1xuICAgICAgICAgIGNvbnN0IG5hbWVQYXJ0cyA9IGZpbGUubmFtZS5zcGxpdCgnLicpO1xuICAgICAgICAgIGxldCBleHQ7XG4gICAgICAgICAgaWYgKG5hbWVQYXJ0cyAmJiBBcnJheS5pc0FycmF5KG5hbWVQYXJ0cykpIHtcbiAgICAgICAgICAgIGV4dCA9IG5hbWVQYXJ0c1tuYW1lUGFydHMubGVuZ3RoIC0gMV07XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHRoaXMuY2hlY2tBY2NlcHRhYmxlVHlwZXMoZmlsZS50eXBlLCBleHQpXG4gICAgICAgIH0pO1xuXG4gICAgICBpZiAoZmlsZXMgJiYgZmlsZXMubGVuZ3RoID4gMCkge1xuICAgICAgICB0aGlzLmlucHV0RWwudmFsdWUgPSBudWxsO1xuXG4gICAgICAgIHRoaXMuc2VsZWN0RmlsZXMoZmlsZXMpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHJlZ2lzdGVyTGFiZWwoZWw6IEVsZW1lbnRSZWYpIHtcbiAgICBpZiAoIWVsKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBGaWxlQVBJLmV2ZW50Lm9uKGVsLm5hdGl2ZUVsZW1lbnQsICdjbGljaycsIChldmVudCkgPT4ge1xuICAgICAgaWYgKCF0aGlzLmFsbG93Q2xpY2spIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5hcGkgIT09ICdodG1sNScgJiYgKHRoaXMuY2FwdHVyZSA9PT0gJ2NhbWVyYScgfHwgdGhpcy5jYXB0dXJlID09PSAnbGlicmFyeScpKSB7XG5cbiAgICAgICAgaWYgKGhhc0NvcmRvdmFDYW1lcmFTdXBwb3J0KCkpIHtcbiAgICAgICAgICBpZiAodGhpcy5jYXB0dXJlID09PSAnbGlicmFyeScpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnNlbGVjdENvcmRvdmFDYW1lcmFMaWJyYXJ5KCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHRoaXMuaXNBY2NlcHRJbWFnZSgpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3RDb3Jkb3ZhQ2FtZXJhUGljdHVyZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChoYXNDb3Jkb3ZhQ2FwdHVyZVN1cHBvcnQoKSkge1xuXG4gICAgICAgICAgaWYgKHRoaXMuaXNBY2NlcHRWaWRlbygpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3RDb3Jkb3ZhQ2FwdHVyZVZpZGVvKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHRoaXMuY2xpY2tlZC5uZXh0KGV2ZW50KTtcblxuICAgICAgaWYgKCFldmVudC5kZWZhdWx0UHJldmVudGVkKSB7XG4gICAgICAgIHRoaXMuaW5wdXRFbC5jbGljaygpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGNvcmRvdmFDYW1lcmFDbGVhbnVwKCkge1xuICAgIHRoaXMuY29yZG92YS5jYW1lcmEuY2xlYW51cCgpO1xuICB9XG5cbiAgcHVibGljIHNlbGVjdENvcmRvdmFDYXB0dXJlSW1hZ2UoKSB7XG4gICAgdGhpcy5jb3Jkb3ZhLmNhcHR1cmUuY2FwdHVyZUltYWdlKChmaWxlcykgPT4ge1xuICAgICAgdGhpcy5zdWNjZXNzQ2FwdHVyZUZpbGVzKGZpbGVzKTtcbiAgICB9LFxuICAgIHRoaXMuZXJyb3JDYXB0dXJlRmlsZXMsIHsgbGltaXQ6IDEgfSk7XG4gIH1cblxuICBwdWJsaWMgc2VsZWN0Q29yZG92YUNhcHR1cmVWaWRlbygpIHtcbiAgICB0aGlzLmNvcmRvdmEuY2FwdHVyZS5jYXB0dXJlVmlkZW8oKGZpbGVzKSA9PiB7XG4gICAgICB0aGlzLnN1Y2Nlc3NDYXB0dXJlRmlsZXMoZmlsZXMpO1xuICAgIH0sXG4gICAgdGhpcy5lcnJvckNhcHR1cmVGaWxlcywgeyBsaW1pdDogMSB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzdWNjZXNzQ2FwdHVyZUZpbGVzKGZpbGVzKSB7XG5cbiAgICBmaWxlcy5mb3JFYWNoKChjYXB0dXJlRmlsZSkgPT4ge1xuXG4gICAgICB0aGlzLmdldENvcmRvdmFGaWxlKGNhcHR1cmVGaWxlLmZ1bGxQYXRoKVxuICAgICAgLnRoZW4oKGZpbGUpID0+IHtcbiAgICAgICAgdGhpcy5fbmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgdGhpcy5zZWxlY3RGaWxlcyhbZmlsZV0pO1xuICAgICAgICB9KTtcbiAgICAgIH0pLmNhdGNoKGVycm9yID0+IHtcbiAgICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xuICAgICAgfSlcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBlcnJvckNhcHR1cmVGaWxlcyhlcnJvcikge1xuICAgIGNvbnNvbGUubG9nKGVycm9yKTtcbiAgfVxuXG4gIHB1YmxpYyBzZWxlY3RDb3Jkb3ZhQ2FtZXJhTGlicmFyeSgpIHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RDb3Jkb3ZhQ2FtZXJhKHRoaXMuY29yZG92YS5jYW1lcmEuUGljdHVyZVNvdXJjZVR5cGUuUEhPVE9MSUJSQVJZLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb3Jkb3ZhLmNhbWVyYS5NZWRpYVR5cGUuQUxMTUVESUEpO1xuICB9XG5cbiAgcHVibGljIHNlbGVjdENvcmRvdmFDYW1lcmFQaWN0dXJlKCkge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdENvcmRvdmFDYW1lcmEodGhpcy5jb3Jkb3ZhLmNhbWVyYS5QaWN0dXJlU291cmNlVHlwZS5DQU1FUkEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvcmRvdmEuY2FtZXJhLk1lZGlhVHlwZS5QSUNUVVJFKTtcbiAgfVxuXG4gIHB1YmxpYyBzZWxlY3RDb3Jkb3ZhQ2FtZXJhKHNvdXJjZVR5cGUsIG1lZGlhVHlwZSkge1xuXG4gICAgY29uc3Qgb3B0aW9uczogYW55ID0ge1xuICAgICAgZGVzdGluYXRpb25UeXBlOiB0aGlzLmNvcmRvdmEuY2FtZXJhLkRlc3RpbmF0aW9uVHlwZS5GSUxFX1VSSSxcbiAgICAgIGVuY29kaW5nVHlwZTogdGhpcy5jb3Jkb3ZhLmNhbWVyYS5EZXN0aW5hdGlvblR5cGUuSlBFRyxcbiAgICAgIHNvdXJjZVR5cGU6IHNvdXJjZVR5cGUsXG4gICAgICBtZWRpYVR5cGU6IG1lZGlhVHlwZSxcbiAgICAgIHF1YWxpdHk6IDEwMCxcbiAgICAgIGNvcnJlY3RPcmllbnRhdGlvbjogZmFsc2VcbiAgICB9O1xuXG4gICAgaWYgKHRoaXMuYWNjZXB0Lmxlbmd0aCkge1xuICAgICAgY29uc3QgdmlkZW8gPSB0aGlzLmlzQWNjZXB0VmlkZW8oKTtcbiAgICAgIGNvbnN0IGltYWdlID0gdGhpcy5pc0FjY2VwdEltYWdlKCk7XG5cbiAgICAgIGlmICh2aWRlbyAmJiAhaW1hZ2UpIHtcbiAgICAgICAgb3B0aW9ucy5tZWRpYVR5cGUgPSB0aGlzLmNvcmRvdmEuY2FtZXJhLk1lZGlhVHlwZS5WSURFTztcbiAgICAgIH0gZWxzZSBpZiAoaW1hZ2UgJiYgIXZpZGVvKSB7XG4gICAgICAgIG9wdGlvbnMubWVkaWFUeXBlID0gdGhpcy5jb3Jkb3ZhLmNhbWVyYS5NZWRpYVR5cGUuUElDVFVSRTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmNvcmRvdmEuY2FtZXJhLmdldFBpY3R1cmUoZGF0YSA9PiB7XG5cbiAgICAgIHRoaXMuZ2V0Q29yZG92YUZpbGUoZGF0YSlcbiAgICAgIC50aGVuKChmaWxlKSA9PiB7XG4gICAgICAgIHRoaXMuX25nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgIHRoaXMuc2VsZWN0RmlsZXMoW2ZpbGVdKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuY29yZG92YUNhbWVyYUNsZWFudXAoKTtcbiAgICAgIH0pLmNhdGNoKGVycm9yID0+IHtcbiAgICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xuICAgICAgICB0aGlzLmNvcmRvdmFDYW1lcmFDbGVhbnVwKCk7XG4gICAgICB9KTtcblxuICAgIH0sICgpID0+IHtcbiAgICAgIHRoaXMuY29yZG92YUNhbWVyYUNsZWFudXAoKTtcbiAgICB9LCBvcHRpb25zKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q29yZG92YUZpbGUocGF0aCkge1xuXG4gICAgaWYgKCFwYXRoLm1hdGNoKC9eZmlsZTovKSkge1xuICAgICAgcGF0aCA9ICdmaWxlOi8vJy5jb25jYXQocGF0aCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcblxuICAgICAgdGhpcy5jb3Jkb3ZhLnJlc29sdmVMb2NhbEZpbGVTeXN0ZW1VUkwocGF0aCwgZmlsZUVudHJ5ID0+IHtcblxuICAgICAgICBmaWxlRW50cnkuZmlsZShmaWxlID0+IHtcblxuICAgICAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgICAgICAgcmVhZGVyLm9ubG9hZGVuZCA9IChlbmNvZGVkRmlsZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZmlsZURhdGEgPSAoPGFueT5lbmNvZGVkRmlsZS50YXJnZXQpLnJlc3VsdC5zcGxpdCgnYmFzZTY0LCcpLnBvcCgpO1xuICAgICAgICAgICAgY29uc3QgYnl0ZVN0cmluZyA9IGF0b2IoZmlsZURhdGEpO1xuICAgICAgICAgICAgbGV0IG4gPSBieXRlU3RyaW5nLmxlbmd0aDtcbiAgICAgICAgICAgIGNvbnN0IHU4YXJyID0gbmV3IFVpbnQ4QXJyYXkobik7XG5cbiAgICAgICAgICAgIHdoaWxlIChuLS0pIHtcbiAgICAgICAgICAgICAgdThhcnJbbl0gPSBieXRlU3RyaW5nLmNoYXJDb2RlQXQobik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGJsb2IgPSBuZXcgRmlsZShbdThhcnJdLCBmaWxlLm5hbWUsIHsgdHlwZTogZmlsZS50eXBlIH0pO1xuICAgICAgICAgICAgcmVzb2x2ZShibG9iKTtcbiAgICAgICAgICB9O1xuXG4gICAgICAgICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZSk7XG4gICAgICAgIH0sXG4gICAgICAgIChlcnJvcikgPT4ge1xuICAgICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICAgIChlcnJvcikgPT4ge1xuICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgaXNBY2NlcHRWaWRlbygpIHtcbiAgICByZXR1cm4gdGhpcy5hY2NlcHQubWF0Y2goL3ZpZGVvL2kpIHx8IHRoaXMuYWNjZXB0ID09PSAnKic7XG4gIH1cblxuICBwdWJsaWMgaXNBY2NlcHRJbWFnZSgpIHtcbiAgICByZXR1cm4gdGhpcy5hY2NlcHQubWF0Y2goL2ltYWdlL2kpIHx8IHRoaXMuYWNjZXB0ID09PSAnKic7XG4gIH1cblxuICBwdWJsaWMgc2VsZWN0RmlsZXMoZmlsZXMpIHtcbiAgICBmaWxlcyA9IGZpbGVzLm1hcCgoZikgPT4ge1xuICAgICAgcmV0dXJuIG5ldyBGc0ZpbGUoZik7XG4gICAgfSk7XG5cbiAgICBpZiAoZmlsZXMubGVuZ3RoID09PSAxKSB7XG4gICAgICBmaWxlcyA9IGZpbGVzWzBdO1xuICAgIH1cblxuICAgIHRoaXMuc2VsZWN0LmVtaXQoZmlsZXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGZpbGUgbWltZXR5cGUgb3IgZXh0ZW50aW9uIGlzIGFjY2VwdGFibGUgYnkgQGFjY2VwdCBmaWVsZFxuICAgKiBAcGFyYW0gdGFyZ2V0VHlwZVxuICAgKiBAcGFyYW0gdGFyZ2V0RXh0XG4gICAqIEByZXR1cm5zIGJvb2xlYW5cbiAgICovXG4gIHByaXZhdGUgY2hlY2tBY2NlcHRhYmxlVHlwZXModGFyZ2V0VHlwZSwgdGFyZ2V0RXh0KSB7XG4gICAgdGFyZ2V0VHlwZSA9IHRhcmdldFR5cGUudHJpbSgpO1xuICAgIGNvbnN0IFsgdHlwZSwgZXh0IF0gPSB0YXJnZXRUeXBlLnNwbGl0KCcvJyk7XG4gICAgY29uc3QgYWNjZXB0YWJsZVR5cGUgPSB0aGlzLl9hY2NlcHRhYmxlVHlwZXMuZ2V0KHR5cGUpO1xuXG4gICAgcmV0dXJuIHRoaXMuYWNjZXB0ID09PSAnKidcbiAgICAgICAgICAgIHx8IHRoaXMuYWNjZXB0ID09PSAnKi8qJ1xuICAgICAgICAgICAgfHwgKCEhYWNjZXB0YWJsZVR5cGUgJiYgKGFjY2VwdGFibGVUeXBlLmhhcygnKicpIHx8IGFjY2VwdGFibGVUeXBlLmhhcyhleHQpKSlcbiAgICAgICAgICAgIHx8IHRoaXMuX2FjY2VwdGFibGVFeHRzLmhhcyhgLiR7dGFyZ2V0RXh0fWApO1xuICB9XG5cbiAgLyoqXG4gICAqIFBhcnNldCBhbmQgc3RvcmUgYWNjZXB0YWJsZSB0eXBlcyBmb3IgZmVhdHVyZSBmaWx0ZXJcbiAgICogQHBhcmFtIHR5cGVzXG4gICAqL1xuICBwcml2YXRlIHBhcnNlQWNjZXB0VHlwZXModmFsdWUpIHtcbiAgICBsZXQgdHlwZXMgPSBbXTtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykgeyBcbiAgICAgIHR5cGVzID0gdmFsdWUuc3BsaXQoL1ssO10vKTtcbiAgICB9XG4gICAgXG4gICAgaWYoIXR5cGVzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHR5cGVzID0gdHlwZXNcbiAgICAgIC5tYXAoKHR5cGUpID0+IHR5cGUudHJpbSgpKTtcblxuICAgIHR5cGVzLmZvckVhY2goKHBhcnQpID0+IHtcbiAgICAgIGlmKHBhcnQgPT09ICcqJykge1xuICAgICAgICB0aGlzLl9hY2NlcHRhYmxlRXh0cy5hZGQoJyonKTtcbiAgICAgIH0gZWxzZSBpZiAocGFydC5pbmRleE9mKCcvJykgIT09IC0xKSB7XG4gICAgICAgIGNvbnN0IFsgdHlwZSwgZXh0IF0gPSBwYXJ0LnNwbGl0KCcvJyk7XG4gICAgICAgIGlmICh0aGlzLl9hY2NlcHRhYmxlVHlwZXMuaGFzKHR5cGUpKSB7XG4gICAgICAgICAgY29uc3QgZXhpc3RlZFR5cGUgPSB0aGlzLl9hY2NlcHRhYmxlVHlwZXMuZ2V0KHR5cGUpO1xuXG4gICAgICAgICAgaWYgKCFleGlzdGVkVHlwZS5oYXMoZXh0KSkge1xuICAgICAgICAgICAgZXhpc3RlZFR5cGUuYWRkKGV4dCk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IGV4dGVuc2lvbnMgPSBuZXcgU2V0KCk7XG4gICAgICAgICAgdGhpcy5fYWNjZXB0YWJsZVR5cGVzLnNldCh0eXBlLCBleHRlbnNpb25zKTtcbiAgICAgICAgICBleHRlbnNpb25zLmFkZChleHQpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYocGFydC5pbmRleE9mKCcuJykgIT09IC0xKSB7XG4gICAgICAgIHBhcnQgPSBwYXJ0LnJlcGxhY2UoL15cXCovLCcnKTtcbiAgICAgICAgaWYgKCF0aGlzLl9hY2NlcHRhYmxlRXh0cy5oYXMocGFydCkpIHtcbiAgICAgICAgICB0aGlzLl9hY2NlcHRhYmxlRXh0cy5hZGQocGFydCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZihwYXJ0Lm1hdGNoKC9bYS16MC05XXszLDR9L2kpKSB7XG4gICAgICAgIGlmICghdGhpcy5fYWNjZXB0YWJsZUV4dHMuaGFzKHBhcnQpKSB7XG4gICAgICAgICAgdGhpcy5fYWNjZXB0YWJsZUV4dHMuYWRkKGAuJHtwYXJ0fWApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSlcbiAgfVxufVxuIl19
{
"name": "@firestitch/file",
"version": "12.11.2",
"version": "12.11.3",
"repository": {

@@ -5,0 +5,0 @@ "type": "git",

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc