@esfaenza/extensions 11.2.45 → 11.2.49
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/esfaenza-extensions.umd.js +66 -25
- package/bundles/esfaenza-extensions.umd.js.map +1 -1
- package/bundles/esfaenza-extensions.umd.min.js +1 -1
- package/bundles/esfaenza-extensions.umd.min.js.map +1 -1
- package/esfaenza-extensions.metadata.json +1 -1
- package/esm2015/lib/services/extensions.clipboard.service.js +67 -25
- package/esm2015/lib/services/extensions.exports.service.js +2 -2
- package/fesm2015/esfaenza-extensions.js +66 -25
- package/fesm2015/esfaenza-extensions.js.map +1 -1
- package/lib/services/extensions.clipboard.service.d.ts +2 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"__symbolic":"module","version":4,"metadata":{"ExtensionsModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":10,"character":1}}],"members":{},"statics":{"forRoot":{"__symbolic":"function","parameters":["config"],"value":{"ngModule":{"__symbolic":"reference","name":"ExtensionsModule"},"providers":[{"provide":{"__symbolic":"reference","name":"EXT_LOCALE"},"useValue":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"config"},"member":"locale"},"right":"it-IT"}},{"provide":{"__symbolic":"reference","name":"EXT_FANCY_ALERTS"},"useValue":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"config"},"member":"fancy_alerts"},"right":true}},{"provide":{"__symbolic":"reference","name":"APPSEARCH_PREFIX"},"useValue":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"config"},"member":"appsearch_prefix"},"right":"Hot"}},{"provide":{"__symbolic":"reference","name":"EXT_ALLOW_UTC"},"useValue":{"__symbolic":"if","condition":{"__symbolic":"binop","operator":"==","left":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"config"},"member":"allow_utc"},"right":null},"thenExpression":false,"elseExpression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"config"},"member":"allow_utc"}}}]}}}},"FullExtensionsModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":28,"character":1}}],"members":{},"statics":{"forRoot":{"__symbolic":"function","parameters":["config"],"value":{"ngModule":{"__symbolic":"reference","name":"FullExtensionsModule"},"providers":[{"__symbolic":"reference","name":"ClipboardService"},{"__symbolic":"reference","name":"DateService"},{"__symbolic":"reference","name":"ExportService"},{"__symbolic":"reference","name":"HashingService"},{"__symbolic":"reference","name":"MessageService"},{"__symbolic":"reference","name":"UtilityService"},{"__symbolic":"reference","name":"InterComService"},{"provide":{"__symbolic":"reference","name":"EXT_LOCALE"},"useValue":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"config"},"member":"locale"},"right":"it-IT"}},{"provide":{"__symbolic":"reference","name":"EXT_FANCY_ALERTS"},"useValue":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"config"},"member":"fancy_alerts"},"right":true}},{"provide":{"__symbolic":"reference","name":"APPSEARCH_PREFIX"},"useValue":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"config"},"member":"appsearch_prefix"},"right":"Hot"}},{"provide":{"__symbolic":"reference","name":"EXT_ALLOW_UTC"},"useValue":{"__symbolic":"if","condition":{"__symbolic":"binop","operator":"==","left":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"config"},"member":"allow_utc"},"right":null},"thenExpression":false,"elseExpression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"config"},"member":"allow_utc"}}}]}}}},"DateService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":15,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":50,"character":24}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":50,"character":36},"arguments":[{"__symbolic":"reference","name":"EXT_LOCALE"}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":50,"character":80}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":50,"character":92},"arguments":[{"__symbolic":"reference","name":"EXT_ALLOW_UTC"}]}]],"parameters":[{"__symbolic":"reference","name":"string"},{"__symbolic":"reference","name":"boolean"}]}],"adjustDateToFinalInstant":[{"__symbolic":"method"}],"dateSort":[{"__symbolic":"method"}],"trimSeconds":[{"__symbolic":"method"}],"getMinMaxDatesRange":[{"__symbolic":"method"}],"getDateConvertion":[{"__symbolic":"method"}],"isJsDate":[{"__symbolic":"method"}],"isDayJs":[{"__symbolic":"method"}],"getFormatted":[{"__symbolic":"method"}]}},"Export":{"__symbolic":"error","message":"Lambda not supported","line":40,"character":22,"module":"./lib/services/extensions.exports.service"},"ExportAs":{"__symbolic":"error","message":"Lambda not supported","line":86,"character":24,"module":"./lib/services/extensions.exports.service"},"ExportList":{"__symbolic":"error","message":"Lambda not supported","line":131,"character":26,"module":"./lib/services/extensions.exports.service"},"ExportDictionary":{"__symbolic":"error","message":"Lambda not supported","line":159,"character":32,"module":"./lib/services/extensions.exports.service"},"ExportService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":174,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"DateService"}]}],"setupForExport":[{"__symbolic":"method"}],"setupForGenericExport":[{"__symbolic":"method"}],"parseAndGetGenericHeaders":[{"__symbolic":"method"}],"parseAndGetHeaders":[{"__symbolic":"method"}],"parseProperty":[{"__symbolic":"method"}],"parseObject":[{"__symbolic":"method"}],"parseList":[{"__symbolic":"method"}],"parseDictionary":[{"__symbolic":"method"}],"deserializeForExport":[{"__symbolic":"method"}]}},"ClipboardService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":10,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":40,"character":60}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":40,"character":72},"arguments":[{"__symbolic":"reference","name":"EXT_LOCALE"}]}]],"parameters":[{"__symbolic":"reference","name":"MessageService"},{"__symbolic":"reference","name":"string"}]}],"getClipboard":[{"__symbolic":"method"}],"getClipboardLines":[{"__symbolic":"method"}],"getClipboardMatrix":[{"__symbolic":"method"}],"copyTextToClipboard":[{"__symbolic":"method"}]}},"HashingService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":6,"character":1}}],"members":{"getGUID":[{"__symbolic":"method"}],"hashObject":[{"__symbolic":"method"}],"simpleHash":[{"__symbolic":"method"}],"stringify":[{"__symbolic":"method"}],"md5":[{"__symbolic":"method"}],"md5cycle":[{"__symbolic":"method"}],"cmn":[{"__symbolic":"method"}],"ff":[{"__symbolic":"method"}],"gg":[{"__symbolic":"method"}],"hh":[{"__symbolic":"method"}],"ii":[{"__symbolic":"method"}],"md51":[{"__symbolic":"method"}],"md5blk":[{"__symbolic":"method"}],"rhex":[{"__symbolic":"method"}],"hex":[{"__symbolic":"method"}],"add32":[{"__symbolic":"method"}]}},"MessageService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":18,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":74,"character":55}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":74,"character":67},"arguments":[{"__symbolic":"reference","name":"EXT_FANCY_ALERTS"}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":74,"character":124}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":74,"character":136},"arguments":[{"__symbolic":"reference","name":"EXT_LOCALE"}]}]],"parameters":[{"__symbolic":"reference","module":"ngx-toastr","name":"ToastrService","line":74,"character":39},{"__symbolic":"reference","name":"boolean"},{"__symbolic":"reference","name":"string"}]}],"simpleSuccess":[{"__symbolic":"method"}],"simpleInfo":[{"__symbolic":"method"}],"simpleError":[{"__symbolic":"method"}],"simpleWarning":[{"__symbolic":"method"}],"clearMessages":[{"__symbolic":"method"}],"promiseWarningWithChoice":[{"__symbolic":"method"}],"toastrOrSwal":[{"__symbolic":"method"}],"simpleWarningWithChoice":[{"__symbolic":"method"}],"simpleSuccessWithChoice":[{"__symbolic":"method"}],"observableSimpleWarningWithChoice":[{"__symbolic":"method"}],"expiredSessionMessage":[{"__symbolic":"method"}],"manageCallResultResponse":[{"__symbolic":"method"}],"manageStringResponse":[{"__symbolic":"method"}],"manageStringResponseBool":[{"__symbolic":"method"}]}},"UtilityService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":10,"character":1}}],"members":{"clearTextSelection":[{"__symbolic":"method"}],"getSelectedItem":[{"__symbolic":"method"}],"cleanForm":[{"__symbolic":"method"}],"fileDownload":[{"__symbolic":"method"}],"msToTime":[{"__symbolic":"method"}],"saveFile":[{"__symbolic":"method"}],"base64ToArrayBuffer":[{"__symbolic":"method"}],"saveByteArray":[{"__symbolic":"method"}],"swap":[{"__symbolic":"method"}],"getJsTypeFromTypeCode":[{"__symbolic":"method"}],"deepClone":[{"__symbolic":"method"}],"recursiveStep":[{"__symbolic":"method"}]}},"EXT_LOCALE":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":5,"character":54},"arguments":["EXT_LOCALE"]},"EXT_FANCY_ALERTS":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":10,"character":61},"arguments":["EXT_FANCY_ALERTS"]},"APPSEARCH_PREFIX":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":15,"character":60},"arguments":["APPSEARCH_PREFIX"]},"EXT_ALLOW_UTC":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":20,"character":58},"arguments":["EXT_ALLOW_UTC"]},"CallResult":{"__symbolic":"class","arity":1,"members":{}},"CsvHeaders":{"__symbolic":"class","members":{}},"GenericItem":{"__symbolic":"class","members":{}},"InboundMessageTypes":{"Navigation":0},"InterComMessage":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"any"},{"__symbolic":"reference","name":"any"}]}]}},"InterComService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":10,"character":1}}],"members":{"send":[{"__symbolic":"method"}],"register":[{"__symbolic":"method"}]}}},"origins":{"ExtensionsModule":"./lib/modules/extensions.module","FullExtensionsModule":"./lib/modules/extensions.full.module","DateService":"./lib/services/extensions.dates.service","Export":"./lib/services/extensions.exports.service","ExportAs":"./lib/services/extensions.exports.service","ExportList":"./lib/services/extensions.exports.service","ExportDictionary":"./lib/services/extensions.exports.service","ExportService":"./lib/services/extensions.exports.service","ClipboardService":"./lib/services/extensions.clipboard.service","HashingService":"./lib/services/extensions.hashing.service","MessageService":"./lib/services/extensions.messages.service","UtilityService":"./lib/services/extensions.utilities.service","EXT_LOCALE":"./lib/tokens","EXT_FANCY_ALERTS":"./lib/tokens","APPSEARCH_PREFIX":"./lib/tokens","EXT_ALLOW_UTC":"./lib/tokens","CallResult":"./lib/models/CallResult","CsvHeaders":"./lib/models/CsvHeaders","GenericItem":"./lib/models/GenericItem","InboundMessageTypes":"./lib/models/InboundMessageTypes","InterComMessage":"./lib/models/InterComMessage","InterComService":"./lib/services/extensions.intercom.service"},"importAs":"@esfaenza/extensions"}
|
|
1
|
+
{"__symbolic":"module","version":4,"metadata":{"ExtensionsModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":10,"character":1}}],"members":{},"statics":{"forRoot":{"__symbolic":"function","parameters":["config"],"value":{"ngModule":{"__symbolic":"reference","name":"ExtensionsModule"},"providers":[{"provide":{"__symbolic":"reference","name":"EXT_LOCALE"},"useValue":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"config"},"member":"locale"},"right":"it-IT"}},{"provide":{"__symbolic":"reference","name":"EXT_FANCY_ALERTS"},"useValue":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"config"},"member":"fancy_alerts"},"right":true}},{"provide":{"__symbolic":"reference","name":"APPSEARCH_PREFIX"},"useValue":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"config"},"member":"appsearch_prefix"},"right":"Hot"}},{"provide":{"__symbolic":"reference","name":"EXT_ALLOW_UTC"},"useValue":{"__symbolic":"if","condition":{"__symbolic":"binop","operator":"==","left":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"config"},"member":"allow_utc"},"right":null},"thenExpression":false,"elseExpression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"config"},"member":"allow_utc"}}}]}}}},"FullExtensionsModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":28,"character":1}}],"members":{},"statics":{"forRoot":{"__symbolic":"function","parameters":["config"],"value":{"ngModule":{"__symbolic":"reference","name":"FullExtensionsModule"},"providers":[{"__symbolic":"reference","name":"ClipboardService"},{"__symbolic":"reference","name":"DateService"},{"__symbolic":"reference","name":"ExportService"},{"__symbolic":"reference","name":"HashingService"},{"__symbolic":"reference","name":"MessageService"},{"__symbolic":"reference","name":"UtilityService"},{"__symbolic":"reference","name":"InterComService"},{"provide":{"__symbolic":"reference","name":"EXT_LOCALE"},"useValue":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"config"},"member":"locale"},"right":"it-IT"}},{"provide":{"__symbolic":"reference","name":"EXT_FANCY_ALERTS"},"useValue":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"config"},"member":"fancy_alerts"},"right":true}},{"provide":{"__symbolic":"reference","name":"APPSEARCH_PREFIX"},"useValue":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"config"},"member":"appsearch_prefix"},"right":"Hot"}},{"provide":{"__symbolic":"reference","name":"EXT_ALLOW_UTC"},"useValue":{"__symbolic":"if","condition":{"__symbolic":"binop","operator":"==","left":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"config"},"member":"allow_utc"},"right":null},"thenExpression":false,"elseExpression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"config"},"member":"allow_utc"}}}]}}}},"DateService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":15,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":50,"character":24}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":50,"character":36},"arguments":[{"__symbolic":"reference","name":"EXT_LOCALE"}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":50,"character":80}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":50,"character":92},"arguments":[{"__symbolic":"reference","name":"EXT_ALLOW_UTC"}]}]],"parameters":[{"__symbolic":"reference","name":"string"},{"__symbolic":"reference","name":"boolean"}]}],"adjustDateToFinalInstant":[{"__symbolic":"method"}],"dateSort":[{"__symbolic":"method"}],"trimSeconds":[{"__symbolic":"method"}],"getMinMaxDatesRange":[{"__symbolic":"method"}],"getDateConvertion":[{"__symbolic":"method"}],"isJsDate":[{"__symbolic":"method"}],"isDayJs":[{"__symbolic":"method"}],"getFormatted":[{"__symbolic":"method"}]}},"Export":{"__symbolic":"error","message":"Lambda not supported","line":40,"character":22,"module":"./lib/services/extensions.exports.service"},"ExportAs":{"__symbolic":"error","message":"Lambda not supported","line":86,"character":24,"module":"./lib/services/extensions.exports.service"},"ExportList":{"__symbolic":"error","message":"Lambda not supported","line":131,"character":26,"module":"./lib/services/extensions.exports.service"},"ExportDictionary":{"__symbolic":"error","message":"Lambda not supported","line":159,"character":32,"module":"./lib/services/extensions.exports.service"},"ExportService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":174,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"DateService"}]}],"setupForExport":[{"__symbolic":"method"}],"setupForGenericExport":[{"__symbolic":"method"}],"parseAndGetGenericHeaders":[{"__symbolic":"method"}],"parseAndGetHeaders":[{"__symbolic":"method"}],"parseProperty":[{"__symbolic":"method"}],"parseObject":[{"__symbolic":"method"}],"parseList":[{"__symbolic":"method"}],"parseDictionary":[{"__symbolic":"method"}],"deserializeForExport":[{"__symbolic":"method"}]}},"ClipboardService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":11,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":61,"character":60}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":61,"character":72},"arguments":[{"__symbolic":"reference","name":"EXT_LOCALE"}]}]],"parameters":[{"__symbolic":"reference","name":"MessageService"},{"__symbolic":"reference","name":"string"}]}],"getClipboard":[{"__symbolic":"method"}],"doClipboardDataGet":[{"__symbolic":"method"}],"getClipboardLines":[{"__symbolic":"method"}],"getClipboardMatrix":[{"__symbolic":"method"}],"copyTextToClipboard":[{"__symbolic":"method"}]}},"HashingService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":6,"character":1}}],"members":{"getGUID":[{"__symbolic":"method"}],"hashObject":[{"__symbolic":"method"}],"simpleHash":[{"__symbolic":"method"}],"stringify":[{"__symbolic":"method"}],"md5":[{"__symbolic":"method"}],"md5cycle":[{"__symbolic":"method"}],"cmn":[{"__symbolic":"method"}],"ff":[{"__symbolic":"method"}],"gg":[{"__symbolic":"method"}],"hh":[{"__symbolic":"method"}],"ii":[{"__symbolic":"method"}],"md51":[{"__symbolic":"method"}],"md5blk":[{"__symbolic":"method"}],"rhex":[{"__symbolic":"method"}],"hex":[{"__symbolic":"method"}],"add32":[{"__symbolic":"method"}]}},"MessageService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":18,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":74,"character":55}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":74,"character":67},"arguments":[{"__symbolic":"reference","name":"EXT_FANCY_ALERTS"}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":74,"character":124}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":74,"character":136},"arguments":[{"__symbolic":"reference","name":"EXT_LOCALE"}]}]],"parameters":[{"__symbolic":"reference","module":"ngx-toastr","name":"ToastrService","line":74,"character":39},{"__symbolic":"reference","name":"boolean"},{"__symbolic":"reference","name":"string"}]}],"simpleSuccess":[{"__symbolic":"method"}],"simpleInfo":[{"__symbolic":"method"}],"simpleError":[{"__symbolic":"method"}],"simpleWarning":[{"__symbolic":"method"}],"clearMessages":[{"__symbolic":"method"}],"promiseWarningWithChoice":[{"__symbolic":"method"}],"toastrOrSwal":[{"__symbolic":"method"}],"simpleWarningWithChoice":[{"__symbolic":"method"}],"simpleSuccessWithChoice":[{"__symbolic":"method"}],"observableSimpleWarningWithChoice":[{"__symbolic":"method"}],"expiredSessionMessage":[{"__symbolic":"method"}],"manageCallResultResponse":[{"__symbolic":"method"}],"manageStringResponse":[{"__symbolic":"method"}],"manageStringResponseBool":[{"__symbolic":"method"}]}},"UtilityService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":10,"character":1}}],"members":{"clearTextSelection":[{"__symbolic":"method"}],"getSelectedItem":[{"__symbolic":"method"}],"cleanForm":[{"__symbolic":"method"}],"fileDownload":[{"__symbolic":"method"}],"msToTime":[{"__symbolic":"method"}],"saveFile":[{"__symbolic":"method"}],"base64ToArrayBuffer":[{"__symbolic":"method"}],"saveByteArray":[{"__symbolic":"method"}],"swap":[{"__symbolic":"method"}],"getJsTypeFromTypeCode":[{"__symbolic":"method"}],"deepClone":[{"__symbolic":"method"}],"recursiveStep":[{"__symbolic":"method"}]}},"EXT_LOCALE":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":5,"character":54},"arguments":["EXT_LOCALE"]},"EXT_FANCY_ALERTS":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":10,"character":61},"arguments":["EXT_FANCY_ALERTS"]},"APPSEARCH_PREFIX":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":15,"character":60},"arguments":["APPSEARCH_PREFIX"]},"EXT_ALLOW_UTC":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":20,"character":58},"arguments":["EXT_ALLOW_UTC"]},"CallResult":{"__symbolic":"class","arity":1,"members":{}},"CsvHeaders":{"__symbolic":"class","members":{}},"GenericItem":{"__symbolic":"class","members":{}},"InboundMessageTypes":{"Navigation":0},"InterComMessage":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"any"},{"__symbolic":"reference","name":"any"}]}]}},"InterComService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":10,"character":1}}],"members":{"send":[{"__symbolic":"method"}],"register":[{"__symbolic":"method"}]}}},"origins":{"ExtensionsModule":"./lib/modules/extensions.module","FullExtensionsModule":"./lib/modules/extensions.full.module","DateService":"./lib/services/extensions.dates.service","Export":"./lib/services/extensions.exports.service","ExportAs":"./lib/services/extensions.exports.service","ExportList":"./lib/services/extensions.exports.service","ExportDictionary":"./lib/services/extensions.exports.service","ExportService":"./lib/services/extensions.exports.service","ClipboardService":"./lib/services/extensions.clipboard.service","HashingService":"./lib/services/extensions.hashing.service","MessageService":"./lib/services/extensions.messages.service","UtilityService":"./lib/services/extensions.utilities.service","EXT_LOCALE":"./lib/tokens","EXT_FANCY_ALERTS":"./lib/tokens","APPSEARCH_PREFIX":"./lib/tokens","EXT_ALLOW_UTC":"./lib/tokens","CallResult":"./lib/models/CallResult","CsvHeaders":"./lib/models/CsvHeaders","GenericItem":"./lib/models/GenericItem","InboundMessageTypes":"./lib/models/InboundMessageTypes","InterComMessage":"./lib/models/InterComMessage","InterComService":"./lib/services/extensions.intercom.service"},"importAs":"@esfaenza/extensions"}
|
|
@@ -3,6 +3,7 @@ import { Injectable, Inject, Optional } from "@angular/core";
|
|
|
3
3
|
// Modelli
|
|
4
4
|
import { MessageService } from './extensions.messages.service';
|
|
5
5
|
import { EXT_LOCALE } from "../tokens";
|
|
6
|
+
import Swal from "sweetalert2";
|
|
6
7
|
/**
|
|
7
8
|
* Service che fornisce un accesso base in lettura/scrittura sulla clipboard
|
|
8
9
|
*/
|
|
@@ -34,7 +35,27 @@ export class ClipboardService {
|
|
|
34
35
|
"Error during Clipboard content copy operation": {
|
|
35
36
|
'en-US': "Error during Clipboard content copy operation",
|
|
36
37
|
'it-IT': "Errore nella scrittura del contenuto nella Clipboard"
|
|
37
|
-
}
|
|
38
|
+
},
|
|
39
|
+
"Please insert your clipboard content": {
|
|
40
|
+
'en-US': "Please insert your clipboard content",
|
|
41
|
+
'it-IT': "Si prega di incollare il contenuto della Clipboard"
|
|
42
|
+
},
|
|
43
|
+
"User input required": {
|
|
44
|
+
'en-US': "User input required",
|
|
45
|
+
'it-IT': "Richiesto Input utente"
|
|
46
|
+
},
|
|
47
|
+
"Your current browser does not support reading from the clipboard directly. Please paste your clipboard's content in this Input field and confirm the operation": {
|
|
48
|
+
'en-US': "Your current browser does not support reading from the clipboard directly. Please paste your clipboard's content in this Input field and confirm the operation",
|
|
49
|
+
'it-IT': "Il browser corrente non supporta la lettura diretta dei dati della Clipboard, si prega di effettuare un'incolla (CTRL + V) nella casella di testo e confermare l'operazione"
|
|
50
|
+
},
|
|
51
|
+
"Confirm": {
|
|
52
|
+
'en-US': "Confirm",
|
|
53
|
+
'it-IT': "Conferma"
|
|
54
|
+
},
|
|
55
|
+
"Cancel": {
|
|
56
|
+
'en-US': "Cancel",
|
|
57
|
+
'it-IT': "Annulla"
|
|
58
|
+
},
|
|
38
59
|
};
|
|
39
60
|
}
|
|
40
61
|
/**
|
|
@@ -45,21 +66,40 @@ export class ClipboardService {
|
|
|
45
66
|
* @param {Function} valueFoundCallback Callback che questa funzione chiamerà una volta ottenuto i valori richiesti dalla clipboard
|
|
46
67
|
*/
|
|
47
68
|
getClipboard(style, valueFoundCallback) {
|
|
48
|
-
var _a;
|
|
69
|
+
var _a, _b, _c, _d;
|
|
49
70
|
if (navigator.userAgent.indexOf("Firefox") != -1) {
|
|
50
|
-
|
|
51
|
-
|
|
71
|
+
Swal.fire({
|
|
72
|
+
title: this.loc["User input required"][(_a = this.LOCALE) !== null && _a !== void 0 ? _a : 'it-IT'],
|
|
73
|
+
text: this.loc["Your current browser does not support reading from the clipboard directly. Please paste your clipboard's content in this Input field and confirm the operation"][(_b = this.LOCALE) !== null && _b !== void 0 ? _b : 'it-IT'],
|
|
74
|
+
input: 'textarea',
|
|
75
|
+
icon: "warning",
|
|
76
|
+
confirmButtonText: this.loc["Confirm"][(_c = this.LOCALE) !== null && _c !== void 0 ? _c : 'it-IT'],
|
|
77
|
+
cancelButtonText: this.loc["Cancel"][(_d = this.LOCALE) !== null && _d !== void 0 ? _d : 'it-IT'],
|
|
78
|
+
showCancelButton: true,
|
|
79
|
+
customClass: {
|
|
80
|
+
confirmButton: "btn btn-primary",
|
|
81
|
+
cancelButton: "btn btn-secondary app-margin-right-15",
|
|
82
|
+
container: "app-wrap",
|
|
83
|
+
},
|
|
84
|
+
reverseButtons: true,
|
|
85
|
+
allowOutsideClick: false,
|
|
86
|
+
inputValidator: (value) => {
|
|
87
|
+
var _a;
|
|
88
|
+
if (!value)
|
|
89
|
+
return this.loc["Please insert your clipboard content"][(_a = this.LOCALE) !== null && _a !== void 0 ? _a : 'it-IT'];
|
|
90
|
+
}
|
|
91
|
+
}).then(t => {
|
|
92
|
+
if (t.isConfirmed) {
|
|
93
|
+
console.log("[@esfaenza/extensions] Retrieving input data from user input");
|
|
94
|
+
this.doClipboardDataGet(t.value, style, valueFoundCallback);
|
|
95
|
+
}
|
|
96
|
+
});
|
|
52
97
|
return;
|
|
53
98
|
}
|
|
54
99
|
if (window.clipboardData) {
|
|
55
100
|
console.log("[@esfaenza/extensions] Found clipboardData");
|
|
56
101
|
let data = window.clipboardData.getData("Text");
|
|
57
|
-
|
|
58
|
-
var value = style == "array" ? this.getClipboardLines(data) :
|
|
59
|
-
style == "matrix" ? this.getClipboardMatrix(data) : [];
|
|
60
|
-
console.log(`[@esfaenza/extensions] Adapted for ${style}: ${JSON.stringify(value)}`);
|
|
61
|
-
if (valueFoundCallback)
|
|
62
|
-
valueFoundCallback(value);
|
|
102
|
+
this.doClipboardDataGet(data, style, valueFoundCallback);
|
|
63
103
|
}
|
|
64
104
|
else if (window.navigator.clipboard) {
|
|
65
105
|
console.log("[@esfaenza/extensions] Found navigator clipboard");
|
|
@@ -72,21 +112,20 @@ export class ClipboardService {
|
|
|
72
112
|
}
|
|
73
113
|
console.log("[@esfaenza/extensions] Clipboard permission granted, retrieving values");
|
|
74
114
|
window.navigator.clipboard.readText()
|
|
75
|
-
.then(t =>
|
|
76
|
-
|
|
77
|
-
var value = style == "array" ? this.getClipboardLines(t) :
|
|
78
|
-
style == "matrix" ? this.getClipboardMatrix(t) : [];
|
|
79
|
-
console.log(`[@esfaenza/extensions] Adapted for ${style}: ${JSON.stringify(value)}`);
|
|
80
|
-
if (valueFoundCallback)
|
|
81
|
-
valueFoundCallback(value);
|
|
82
|
-
})
|
|
83
|
-
.catch(err => {
|
|
84
|
-
var _a;
|
|
85
|
-
this.msgService.simpleError(this.loc["Error during Clipboard content read operation"][(_a = this.LOCALE) !== null && _a !== void 0 ? _a : 'it-IT'] + ": " + err);
|
|
86
|
-
});
|
|
115
|
+
.then((t) => this.doClipboardDataGet(t, style, valueFoundCallback))
|
|
116
|
+
.catch((err) => { var _a; return this.msgService.simpleError(this.loc["Error during Clipboard content read operation"][(_a = this.LOCALE) !== null && _a !== void 0 ? _a : 'it-IT'] + ": " + err); });
|
|
87
117
|
});
|
|
88
118
|
}
|
|
89
119
|
}
|
|
120
|
+
/** @ignore */
|
|
121
|
+
doClipboardDataGet(clipboardText, style, valueFoundCallback) {
|
|
122
|
+
console.log("[@esfaenza/extensions] Retrieved clipboard values: " + clipboardText);
|
|
123
|
+
let value = style == "array" ? this.getClipboardLines(clipboardText) :
|
|
124
|
+
style == "matrix" ? this.getClipboardMatrix(clipboardText) : [];
|
|
125
|
+
console.log(`[@esfaenza/extensions] Adapted for ${style}: ${JSON.stringify(value)}`);
|
|
126
|
+
if (valueFoundCallback)
|
|
127
|
+
valueFoundCallback(value);
|
|
128
|
+
}
|
|
90
129
|
/**
|
|
91
130
|
* Ottiene il contenuto della clipboard diviso per righe (separate da newline)
|
|
92
131
|
*
|
|
@@ -95,7 +134,10 @@ export class ClipboardService {
|
|
|
95
134
|
* @returns {string[]} Array contenente il testo preso dalla clipboard diviso per riga
|
|
96
135
|
*/
|
|
97
136
|
getClipboardLines(data) {
|
|
98
|
-
|
|
137
|
+
let trimmedData = data.trim();
|
|
138
|
+
if (!trimmedData.includes("\r\n") && trimmedData.includes("\n"))
|
|
139
|
+
return trimmedData.split("\n");
|
|
140
|
+
return trimmedData.split("\r\n");
|
|
99
141
|
}
|
|
100
142
|
/**
|
|
101
143
|
* Ottiene il contenuto della clipboard diviso per righe (separate da newline) e colonne (separate da tab)
|
|
@@ -106,7 +148,7 @@ export class ClipboardService {
|
|
|
106
148
|
*/
|
|
107
149
|
getClipboardMatrix(data) {
|
|
108
150
|
var ret = [];
|
|
109
|
-
var rows = data.split("\r\n");
|
|
151
|
+
var rows = !data.includes("\r\n") && data.includes("\n") ? data.split("\n") : data.split("\r\n");
|
|
110
152
|
// A quanto pare ogni valore è separato da un \t... spero che sia uno standard di quando si copia da excel altrimenti ciao
|
|
111
153
|
for (let i = 0; i < rows.length; i++)
|
|
112
154
|
ret.push(rows[i].split('\t').map(t => t.trim()));
|
|
@@ -172,4 +214,4 @@ ClipboardService.ctorParameters = () => [
|
|
|
172
214
|
{ type: MessageService },
|
|
173
215
|
{ type: String, decorators: [{ type: Optional }, { type: Inject, args: [EXT_LOCALE,] }] }
|
|
174
216
|
];
|
|
175
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZW5zaW9ucy5jbGlwYm9hcmQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V4dGVuc2lvbnMvc3JjL2xpYi9zZXJ2aWNlcy9leHRlbnNpb25zLmNsaXBib2FyZC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFVBQVU7QUFDVixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFN0QsVUFBVTtBQUNWLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRXZDOztHQUVHO0FBRUgsTUFBTSxPQUFPLGdCQUFnQjtJQXdCekI7Ozs7T0FJRztJQUNILFlBQTJCLFVBQTBCLEVBQTBDLE1BQWM7UUFBbEYsZUFBVSxHQUFWLFVBQVUsQ0FBZ0I7UUFBMEMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQTNCN0c7O1dBRUc7UUFDSyxRQUFHLEdBQUc7WUFDVixpSUFBaUksRUFBRTtnQkFDL0gsT0FBTyxFQUFFLGlJQUFpSTtnQkFDMUksT0FBTyxFQUFFLGlJQUFpSTthQUM3STtZQUNELCtDQUErQyxFQUFFO2dCQUM3QyxPQUFPLEVBQUUsK0NBQStDO2dCQUN4RCxPQUFPLEVBQUUseURBQXlEO2FBQ3JFO1lBQ0QsK0NBQStDLEVBQUU7Z0JBQzdDLE9BQU8sRUFBRSwrQ0FBK0M7Z0JBQ3hELE9BQU8sRUFBRSxvREFBb0Q7YUFDaEU7WUFDRCwrQ0FBK0MsRUFBQztnQkFDNUMsT0FBTyxFQUFFLCtDQUErQztnQkFDeEQsT0FBTyxFQUFFLHNEQUFzRDthQUNsRTtTQUNKLENBQUM7SUFPK0csQ0FBQztJQUVsSDs7Ozs7O09BTUc7SUFDSSxZQUFZLENBQUMsS0FBeUIsRUFBRSxrQkFBNEQ7O1FBQ3ZHLElBQUksU0FBUyxDQUFDLFNBQVMsQ0FBQyxP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Q0FBSSxPQUFPLENBQUMsR0FBRyxJQUFJLEdBQUUsR0FBRyxDQUFDLENBQUM7U0FDOUg7UUFFRCxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN4QyxDQUFDOzs7WUF6S0osVUFBVTs7O1lBTkYsY0FBYzt5Q0FvQ3FDLFFBQVEsWUFBSSxNQUFNLFNBQUMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbIi8vIEFuZ3VsYXJcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0LCBPcHRpb25hbCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcblxyXG4vLyBNb2RlbGxpXHJcbmltcG9ydCB7IE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAnLi9leHRlbnNpb25zLm1lc3NhZ2VzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBFWFRfTE9DQUxFIH0gZnJvbSBcIi4uL3Rva2Vuc1wiO1xyXG5cclxuLyoqXHJcbiAqIFNlcnZpY2UgY2hlIGZvcm5pc2NlIHVuIGFjY2Vzc28gYmFzZSBpbiBsZXR0dXJhL3Njcml0dHVyYSBzdWxsYSBjbGlwYm9hcmRcclxuICovXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIENsaXBib2FyZFNlcnZpY2Uge1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogT2dnZXR0byBzdGF0aWNvIGRpIGxvY2FsaXp6YXppb25lIHBlciBpIG1lc3NhZ2dpIGRpIHF1ZXN0YSBTZXJ2aWNlXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgbG9jID0ge1xyXG4gICAgICAgIFwiVW5mb3J0dW5hdGVseSBGaXJlZm94IGRvZXNuJ3QgeWV0IHN1cHBvcnQgZGlyZWN0IENsaXBib2FyZCBhY2Nlc3MgaWYgbm90IHZpYSBleHRlbnNpb25zLCBQbGVhc2UgdXNlIENocm9tZSB0byBkbyB0aGlzIG9wZXJhdGlvblwiOiB7XHJcbiAgICAgICAgICAgICdlbi1VUyc6IFwiVW5mb3J0dW5hdGVseSBGaXJlZm94IGRvZXNuJ3QgeWV0IHN1cHBvcnQgZGlyZWN0IENsaXBib2FyZCBhY2Nlc3MgaWYgbm90IHZpYSBleHRlbnNpb25zLCBQbGVhc2UgdXNlIENocm9tZSB0byBkbyB0aGlzIG9wZXJhdGlvblwiLFxyXG4gICAgICAgICAgICAnaXQtSVQnOiBcIk1pIGRpc3BpYWNlIG1hIEZpcmVmb3ggbm9uIHN1cHBvcnRhIGwnYWNjZXNzbyBkaXJldHRvIGFsbGEgQ2xpcGJvYXJkLCBzZSBub24gYXR0cmF2ZXJzbyBsZSBlc3RlbnNpb25pLiBTaSBwcmVnYSBkaSB1c2FyZSBDaHJvbWVcIlxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgXCJHZW5lcmljIGVycm9yIGR1cmluZyAnY29weScgY29tbWFuZCBleGVjdXRpb25cIjoge1xyXG4gICAgICAgICAgICAnZW4tVVMnOiBcIkdlbmVyaWMgZXJyb3IgZHVyaW5nICdjb3B5JyBjb21tYW5kIGV4ZWN1dGlvblwiLFxyXG4gICAgICAgICAgICAnaXQtSVQnOiBcIkVycm9yZSBnZW5lcmljbyBkdXJhbnRlIGwnZXNlY3V6aW9uZSBkZWwgY29tYW5kbyAnY29weSdcIlxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgXCJFcnJvciBkdXJpbmcgQ2xpcGJvYXJkIGNvbnRlbnQgcmVhZCBvcGVyYXRpb25cIjoge1xyXG4gICAgICAgICAgICAnZW4tVVMnOiBcIkVycm9yIGR1cmluZyBDbGlwYm9hcmQgY29udGVudCByZWFkIG9wZXJhdGlvblwiLFxyXG4gICAgICAgICAgICAnaXQtSVQnOiBcIkVycm9yZSBuZWxsYSBsZXR0dXJhIGRlbCBjb250ZW51dG8gZGVsbGEgQ2xpcGJvYXJkXCJcclxuICAgICAgICB9LFxyXG4gICAgICAgIFwiRXJyb3IgZHVyaW5nIENsaXBib2FyZCBjb250ZW50IGNvcHkgb3BlcmF0aW9uXCI6e1xyXG4gICAgICAgICAgICAnZW4tVVMnOiBcIkVycm9yIGR1cmluZyBDbGlwYm9hcmQgY29udGVudCBjb3B5IG9wZXJhdGlvblwiLFxyXG4gICAgICAgICAgICAnaXQtSVQnOiBcIkVycm9yZSBuZWxsYSBzY3JpdHR1cmEgZGVsIGNvbnRlbnV0byBuZWxsYSBDbGlwYm9hcmRcIlxyXG4gICAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDb3N0cnV0dG9yZVxyXG4gICAgICogXHJcbiAgICAgKiBAaWdub3JlXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIG1zZ1NlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlLCBAT3B0aW9uYWwoKSBASW5qZWN0KEVYVF9MT0NBTEUpIHByaXZhdGUgTE9DQUxFOiBzdHJpbmcpIHsgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUHJlbmRlIGlsIHZhbG9yZSBkZWxsYSBjbGlwYm9hcmQuIFxyXG4gICAgICogU2kgcHXDsiBzcGVjaWZpY2FyZSBzZSBjaSBzaSBhc3BldHRhIHVuYSBsaXN0YSBvIHVuYSBtYXRyaWNlIGRpIHZhbG9yaSBpbiBtb2RvIGRhIHJpY2V2ZXJlIGdpw6AgdW4gcmlzdWx0YXRvIHV0aWxpenphYmlsZVxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0geydhcnJheScgfCAnbWF0cml4J30gc3R5bGUgU3RpbGUgZGVsbCdvdXRwdXQgZGVzaWRlcmF0bywgc2UgYXJyYXkgbyBtYXRyaWNlXHJcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSB2YWx1ZUZvdW5kQ2FsbGJhY2sgQ2FsbGJhY2sgY2hlIHF1ZXN0YSBmdW56aW9uZSBjaGlhbWVyw6AgdW5hIHZvbHRhIG90dGVudXRvIGkgdmFsb3JpIHJpY2hpZXN0aSBkYWxsYSBjbGlwYm9hcmRcclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldENsaXBib2FyZChzdHlsZTogJ2FycmF5JyB8ICdtYXRyaXgnLCB2YWx1ZUZvdW5kQ2FsbGJhY2sgOiAodmFsdWVzOiBzdHJpbmdbXSB8IHN0cmluZ1tdW10pID0+IHZvaWQpIHtcclxuICAgICAgICBpZiAobmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKFwiRmlyZWZveFwiKSAhPSAtMSkge1xyXG4gICAgICAgICAgICAvL2h0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9DbGlwYm9hcmQvcmVhZFRleHRcclxuICAgICAgICAgICAgdGhpcy5tc2dTZXJ2aWNlLnNpbXBsZUVycm9yKHRoaXMubG9jW1wiVW5mb3J0dW5hdGVseSBGaXJlZm94IGRvZXNuJ3QgeWV0IHN1cHBvcnQgZGlyZWN0IENsaXBib2FyZCBhY2Nlc3MgaWYgbm90IHZpYSBleHRlbnNpb25zLCBQbGVhc2UgdXNlIENocm9tZSB0byBkbyB0aGlzIG9wZXJhdGlvblwiXVt0aGlzLkxPQ0FMRSA/PyAnaXQtSVQnXSk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICgoPGFueT53aW5kb3cpLmNsaXBib2FyZERhdGEpIHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCJbQGVzZmFlbnphL2V4dGVuc2lvbnNdIEZvdW5kIGNsaXBib2FyZERhdGFcIik7XHJcbiAgICAgICAgICAgIGxldCBkYXRhID0gKDxhbnk+d2luZG93KS5jbGlwYm9hcmREYXRhLmdldERhdGEoXCJUZXh0XCIpO1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcIltAZXNmYWVuemEvZXh0ZW5zaW9uc10gUmV0cmlldmVkIGNsaXBib2FyZCB2YWx1ZXM6IFwiICsgZGF0YSk7XHJcbiAgICAgICAgICAgIHZhciB2YWx1ZSA9IHN0eWxlID09IFwiYXJyYXlcIj8gdGhpcy5nZXRDbGlwYm9hcmRMaW5lcyhkYXRhKSA6IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHlsZSA9PSBcIm1hdHJpeFwiID8gdGhpcy5nZXRDbGlwYm9hcmRNYXRyaXgoZGF0YSkgOiBbXTtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coYFtAZXNmYWVuemEvZXh0ZW5zaW9uc10gQWRhcHRlZCBmb3IgJHtzdHlsZX06ICR7SlNPTi5zdHJpbmdpZnkodmFsdWUpfWApOyAgXHJcbiAgICAgICAgICAgIGlmICh2YWx1ZUZvdW5kQ2FsbGJhY2spIHZhbHVlRm91bmRDYWxsYmFjayh2YWx1ZSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBlbHNlIGlmICgoPGFueT53aW5kb3cpLm5hdmlnYXRvci5jbGlwYm9hcmQpIHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCJbQGVzZmFlbnphL2V4dGVuc2lvbnNdIEZvdW5kIG5hdmlnYXRvciBjbGlwYm9hcmRcIik7XHJcbiAgICAgICAgICAgICg8YW55PndpbmRvdykubmF2aWdhdG9yLnBlcm1pc3Npb25zLnF1ZXJ5KHsgbmFtZTogJ2NsaXBib2FyZC1yZWFkJyB9KS50aGVuKHJlc3VsdCA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIShyZXN1bHQuc3RhdGUgPT09ICdncmFudGVkJyB8fCByZXN1bHQuc3RhdGUgPT09ICdwcm9tcHQnKSlcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiW0Blc2ZhZW56YS9leHRlbnNpb25zXSBDbGlwYm9hcmQgcGVybWlzc2lvbiBub3QgZ3JhbnRlZFwiKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWVGb3VuZENhbGxiYWNrKSB2YWx1ZUZvdW5kQ2FsbGJhY2soW10pO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIltAZXNmYWVuemEvZXh0ZW5zaW9uc10gQ2xpcGJvYXJkIHBlcm1pc3Npb24gZ3JhbnRlZCwgcmV0cmlldmluZyB2YWx1ZXNcIik7XHJcbiAgICAgICAgICAgICAgICAoPGFueT53aW5kb3cpLm5hdmlnYXRvci5jbGlwYm9hcmQucmVhZFRleHQoKVxyXG4gICAgICAgICAgICAgICAgICAgIC50aGVuKHQgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIltAZXNmYWVuemEvZXh0ZW5zaW9uc10gUmV0cmlldmVkIGNsaXBib2FyZCB2YWx1ZXM6IFwiICsgdCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB2YWx1ZSA9IHN0eWxlID09IFwiYXJyYXlcIj8gdGhpcy5nZXRDbGlwYm9hcmRMaW5lcyh0KSA6IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZSA9PSBcIm1hdHJpeFwiID8gdGhpcy5nZXRDbGlwYm9hcmRNYXRyaXgodCkgOiBbXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coYFtAZXNmYWVuemEvZXh0ZW5zaW9uc10gQWRhcHRlZCBmb3IgJHtzdHlsZX06ICR7SlNPTi5zdHJpbmdpZnkodmFsdWUpfWApOyAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZUZvdW5kQ2FsbGJhY2spIHZhbHVlRm91bmRDYWxsYmFjayh2YWx1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICAuY2F0Y2goZXJyID0+IHsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubXNnU2VydmljZS5zaW1wbGVFcnJvcih0aGlzLmxvY1tcIkVycm9yIGR1cmluZyBDbGlwYm9hcmQgY29udGVudCByZWFkIG9wZXJhdGlvblwiXVt0aGlzLkxPQ0FMRSA/PyAnaXQtSVQnXSArIFwiOiBcIisgZXJyKTtcclxuICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIE90dGllbmUgaWwgY29udGVudXRvIGRlbGxhIGNsaXBib2FyZCBkaXZpc28gcGVyIHJpZ2hlIChzZXBhcmF0ZSBkYSBuZXdsaW5lKVxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gZGF0YSBjb250ZW51dG8gbGV0dG8gZGFsbGEgY2xpcGJvYXJkXHJcbiAgICAgKiBcclxuICAgICAqIEByZXR1cm5zIHtzdHJpbmdbXX0gQXJyYXkgY29udGVuZW50ZSBpbCB0ZXN0byBwcmVzbyBkYWxsYSBjbGlwYm9hcmQgZGl2aXNvIHBlciByaWdhXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgZ2V0Q2xpcGJvYXJkTGluZXMoZGF0YTogc3RyaW5nKTogc3RyaW5nW10ge1xyXG4gICAgICAgIHJldHVybiBkYXRhLnRyaW0oKS5zcGxpdChcIlxcclxcblwiKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIE90dGllbmUgaWwgY29udGVudXRvIGRlbGxhIGNsaXBib2FyZCBkaXZpc28gcGVyIHJpZ2hlIChzZXBhcmF0ZSBkYSBuZXdsaW5lKSBlIGNvbG9ubmUgKHNlcGFyYXRlIGRhIHRhYilcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGRhdGEgY29udGVudXRvIGxldHRvIGRhbGxhIGNsaXBib2FyZFxyXG4gICAgICogXHJcbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nW11bXX0gTWF0cmljZSBjb250ZW5lbnRlIGlsIHRlc3RvIHByZXNvIGRhbGxhIGNsaXBib2FyZCBkaXZpc28gcGVyIHJpZ2EgZSBjb2xvbm5hXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgZ2V0Q2xpcGJvYXJkTWF0cml4KGRhdGE6IHN0cmluZyk6IHN0cmluZ1tdW10ge1xyXG4gICAgICAgIHZhciByZXQ6IHN0cmluZ1tdW10gPSBbXTtcclxuICAgICAgICB2YXIgcm93cyA9IGRhdGEuc3BsaXQoXCJcXHJcXG5cIik7XHJcblxyXG4gICAgICAgIC8vIEEgcXVhbnRvIHBhcmUgb2duaSB2YWxvcmUgw6ggc2VwYXJhdG8gZGEgdW4gXFx0Li4uIHNwZXJvIGNoZSBzaWEgdW5vIHN0YW5kYXJkIGRpIHF1YW5kbyBzaSBjb3BpYSBkYSBleGNlbCBhbHRyaW1lbnRpIGNpYW9cclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJvd3MubGVuZ3RoOyBpKyspXHJcbiAgICAgICAgICAgIHJldC5wdXNoKHJvd3NbaV0uc3BsaXQoJ1xcdCcpLm1hcCh0ID0+IHQudHJpbSgpKSk7XHJcbiAgICAgICAgcmV0dXJuIHJldDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIE1ldG9kbyBjaGUgY29waWEgdW4gdGVzdG8gYWxsJ2ludGVybm8gZGVsbGEgY2xpcGJvYXJkXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IFRlc3RvIGRhIGluc2VyaXJlIG5lbGxhIGNsaXBib2FyZFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgY29weVRleHRUb0NsaXBib2FyZCh0ZXh0OiBzdHJpbmcpIHtcclxuICAgICAgICB2YXIgdGV4dEFyZWEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwidGV4dGFyZWFcIik7XHJcblxyXG4gICAgICAgIC8vXHJcbiAgICAgICAgLy8gKioqIFRoaXMgc3R5bGluZyBpcyBhbiBleHRyYSBzdGVwIHdoaWNoIGlzIGxpa2VseSBub3QgcmVxdWlyZWQuICoqKlxyXG4gICAgICAgIC8vXHJcbiAgICAgICAgLy8gV2h5IGlzIGl0IGhlcmU/IFRvIGVuc3VyZTpcclxuICAgICAgICAvLyAxLiB0aGUgZWxlbWVudCBpcyBhYmxlIHRvIGhhdmUgZm9jdXMgYW5kIHNlbGVjdGlvbi5cclxuICAgICAgICAvLyAyLiBpZiBlbGVtZW50IHdhcyB0byBmbGFzaCByZW5kZXIgaXQgaGFzIG1pbmltYWwgdmlzdWFsIGltcGFjdC5cclxuICAgICAgICAvLyAzLiBsZXNzIGZsYWt5bmVzcyB3aXRoIHNlbGVjdGlvbiBhbmQgY29weWluZyB3aGljaCAqKm1pZ2h0Kiogb2NjdXIgaWZcclxuICAgICAgICAvLyAgICB0aGUgdGV4dGFyZWEgZWxlbWVudCBpcyBub3QgdmlzaWJsZS5cclxuICAgICAgICAvL1xyXG4gICAgICAgIC8vIFRoZSBsaWtlbGlob29kIGlzIHRoZSBlbGVtZW50IHdvbid0IGV2ZW4gcmVuZGVyLCBub3QgZXZlbiBhIGZsYXNoLFxyXG4gICAgICAgIC8vIHNvIHNvbWUgb2YgdGhlc2UgYXJlIGp1c3QgcHJlY2F1dGlvbnMuIEhvd2V2ZXIgaW4gSUUgdGhlIGVsZW1lbnRcclxuICAgICAgICAvLyBpcyB2aXNpYmxlIHdoaWxzdCB0aGUgcG9wdXAgYm94IGFza2luZyB0aGUgdXNlciBmb3IgcGVybWlzc2lvbiBmb3JcclxuICAgICAgICAvLyB0aGUgd2ViIHBhZ2UgdG8gY29weSB0byB0aGUgY2xpcGJvYXJkLlxyXG4gICAgICAgIC8vXHJcblxyXG4gICAgICAgIC8vIFBsYWNlIGluIHRvcC1sZWZ0IGNvcm5lciBvZiBzY3JlZW4gcmVnYXJkbGVzcyBvZiBzY3JvbGwgcG9zaXRpb24uXHJcbiAgICAgICAgdGV4dEFyZWEuc3R5bGUucG9zaXRpb24gPSBcImZpeGVkXCI7XHJcbiAgICAgICAgdGV4dEFyZWEuc3R5bGUudG9wID0gXCIwXCI7XHJcbiAgICAgICAgdGV4dEFyZWEuc3R5bGUubGVmdCA9IFwiMFwiO1xyXG5cclxuICAgICAgICAvLyBFbnN1cmUgaXQgaGFzIGEgc21hbGwgd2lkdGggYW5kIGhlaWdodC4gU2V0dGluZyB0byAxcHggLyAxZW1cclxuICAgICAgICAvLyBkb2Vzbid0IHdvcmsgYXMgdGhpcyBnaXZlcyBhIG5lZ2F0aXZlIHcvaCBvbiBzb21lIGJyb3dzZXJzLlxyXG4gICAgICAgIHRleHRBcmVhLnN0eWxlLndpZHRoID0gXCIyZW1cIjtcclxuICAgICAgICB0ZXh0QXJlYS5zdHlsZS5oZWlnaHQgPSBcIjJlbVwiO1xyXG5cclxuICAgICAgICAvLyBXZSBkb24ndCBuZWVkIHBhZGRpbmcsIHJlZHVjaW5nIHRoZSBzaXplIGlmIGl0IGRvZXMgZmxhc2ggcmVuZGVyLlxyXG4gICAgICAgIHRleHRBcmVhLnN0eWxlLnBhZGRpbmcgPSBcIjBcIjtcclxuXHJcbiAgICAgICAgLy8gQ2xlYW4gdXAgYW55IGJvcmRlcnMuXHJcbiAgICAgICAgdGV4dEFyZWEuc3R5bGUuYm9yZGVyID0gXCJub25lXCI7XHJcbiAgICAgICAgdGV4dEFyZWEuc3R5bGUub3V0bGluZSA9IFwibm9uZVwiO1xyXG4gICAgICAgIHRleHRBcmVhLnN0eWxlLmJveFNoYWRvdyA9IFwibm9uZVwiO1xyXG5cclxuICAgICAgICAvLyBBdm9pZCBmbGFzaCBvZiB3aGl0ZSBib3ggaWYgcmVuZGVyZWQgZm9yIGFueSByZWFzb24uXHJcbiAgICAgICAgdGV4dEFyZWEuc3R5bGUuYmFja2dyb3VuZCA9IFwidHJhbnNwYXJlbnRcIjtcclxuXHJcbiAgICAgICAgdGV4dEFyZWEudmFsdWUgPSB0ZXh0O1xyXG5cclxuICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRleHRBcmVhKTtcclxuICAgICAgICB0ZXh0QXJlYS5mb2N1cygpO1xyXG4gICAgICAgIHRleHRBcmVhLnNlbGVjdCgpO1xyXG5cclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICB2YXIgc3VjY2Vzc2Z1bCA9IGRvY3VtZW50LmV4ZWNDb21tYW5kKFwiY29weVwiKTtcclxuICAgICAgICAgICAgaWYoIXN1Y2Nlc3NmdWwpXHJcbiAgICAgICAgICAgICAgICB0aGlzLm1zZ1NlcnZpY2Uuc2ltcGxlRXJyb3IodGhpcy5sb2NbXCJHZW5lcmljIGVycm9yIGR1cmluZyAnY29weScgY29tbWFuZCBleGVjdXRpb25cIl1bdGhpcy5MT0NBTEUgPz8gJ2l0LUlUJ10pO1xyXG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xyXG4gICAgICAgICAgICB0aGlzLm1zZ1NlcnZpY2Uuc2ltcGxlRXJyb3IodGhpcy5sb2NbXCJFcnJvciBkdXJpbmcgQ2xpcGJvYXJkIGNvbnRlbnQgY29weSBvcGVyYXRpb25cIl1bdGhpcy5MT0NBTEUgPz8gJ2l0LUlUJ10gKyBcIjogXCIrIGVycik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHRleHRBcmVhKTtcclxuICAgIH1cclxufSJdfQ==
|
|
217
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZW5zaW9ucy5jbGlwYm9hcmQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V4dGVuc2lvbnMvc3JjL2xpYi9zZXJ2aWNlcy9leHRlbnNpb25zLmNsaXBib2FyZC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFVBQVU7QUFDVixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFN0QsVUFBVTtBQUNWLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3ZDLE9BQU8sSUFBSSxNQUFNLGFBQWEsQ0FBQztBQUUvQjs7R0FFRztBQUVILE1BQU0sT0FBTyxnQkFBZ0I7SUE0Q3pCOzs7O09BSUc7SUFDSCxZQUEyQixVQUEwQixFQUEwQyxNQUFjO1FBQWxGLGVBQVUsR0FBVixVQUFVLENBQWdCO1FBQTBDLFdBQU0sR0FBTixNQUFNLENBQVE7UUEvQzdHOztXQUVHO1FBQ0ssUUFBRyxHQUFHO1lBQ1YsaUlBQWlJLEVBQUU7Z0JBQy9ILE9BQU8sRUFBRSxpSUFBaUk7Z0JBQzFJLE9BQU8sRUFBRSxpSUFBaUk7YUFDN0k7WUFDRCwrQ0FBK0MsRUFBRTtnQkFDN0MsT0FBTyxFQUFFLCtDQUErQztnQkFDeEQsT0FBTyxFQUFFLHlEQUF5RDthQUNyRTtZQUNELCtDQUErQyxFQUFFO2dCQUM3QyxPQUFPLEVBQUUsK0NBQStDO2dCQUN4RCxPQUFPLEVBQUUsb0RBQW9EO2FBQ2hFO1lBQ0QsK0NBQStDLEVBQUM7Z0JBQzVDLE9BQU8sRUFBRSwrQ0FBK0M7Z0JBQ3hELE9BQU8sRUFBRSxzREFBc0Q7YUFDbEU7WUFDRCxzQ0FBc0MsRUFBRTtnQkFDcEMsT0FBTyxFQUFFLHNDQUFzQztnQkFDL0MsT0FBTyxFQUFFLG9EQUFvRDthQUNoRTtZQUNELHFCQUFxQixFQUFFO2dCQUNuQixPQUFPLEVBQUUscUJBQXFCO2dCQUM5QixPQUFPLEVBQUUsd0JBQXdCO2FBQ3BDO1lBQ0QsZ0tBQWdLLEVBQUU7Z0JBQzlKLE9BQU8sRUFBRSxnS0FBZ0s7Z0JBQ3pLLE9BQU8sRUFBRSw2S0FBNks7YUFDekw7WUFDRCxTQUFTLEVBQUU7Z0JBQ1AsT0FBTyxFQUFFLFNBQVM7Z0JBQ2xCLE9BQU8sRUFBRSxVQUFVO2FBQ3RCO1lBQ0QsUUFBUSxFQUFFO2dCQUNOLE9BQU8sRUFBRSxRQUFRO2dCQUNqQixPQUFPLEVBQUUsU0FBUzthQUNyQjtTQUNKLENBQUM7SUFPK0csQ0FBQztJQUVsSDs7Ozs7O09BTUc7SUFDSSxZQUFZLENBQUMsS0FBeUIsRUFBRSxrQkFBNEQ7O1FBQ3ZHLElBQUksU0FBUyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUU7WUFFOUMsSUFBSSxDQUFDLElBQUksQ0FBQztnQkFDTixLQUFLLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQyxPQUFDLElBQUksQ0FBQyxNQUFNLG1DQUFJLE9BQU8sQ0FBQztnQkFDOUQsSUFBSSxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsZ0tBQWdLLENBQUMsT0FBQyxJQUFJLENBQUMsTUFBTSxtQ0FBSSxPQUFPLENBQUM7Z0JBQ3hNLEtBQUssRUFBRSxVQUFVO2dCQUNqQixJQUFJLEVBQUUsU0FBUztnQkFDZixpQkFBaUIsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxPQUFDLElBQUksQ0FBQyxNQUFNLG1DQUFJLE9BQU8sQ0FBQztnQkFDOUQsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsT0FBQyxJQUFJLENBQUMsTUFBTSxtQ0FBSSxPQUFPLENBQUM7Z0JBQzVELGdCQUFnQixFQUFFLElBQUk7Z0JBQ3RCLFdBQVcsRUFBRTtvQkFDVCxhQUFhLEVBQUUsaUJBQWlCO29CQUNoQyxZQUFZLEVBQUUsdUNBQXVDO29CQUNyRCxTQUFTLEVBQUUsVUFBVTtpQkFDeEI7Z0JBQ0QsY0FBYyxFQUFFLElBQUk7Z0JBQ3BCLGlCQUFpQixFQUFFLEtBQUs7Z0JBQ3hCLGNBQWMsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFOztvQkFDeEIsSUFBSSxDQUFDLEtBQUs7d0JBQ1IsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLHNDQUFzQyxDQUFDLE9BQUMsSUFBSSxDQUFDLE1BQU0sbUNBQUksT0FBTyxDQUFDLENBQUE7Z0JBQ25GLENBQUM7YUFDRixDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUNSLElBQUksQ0FBQyxDQUFDLFdBQVcsRUFBRTtvQkFDZixPQUFPLENBQUMsR0FBRyxDQUFDLDhEQUE4RCxDQUFDLENBQUM7b0JBQzVFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO2lCQUMvRDtZQUNMLENBQUMsQ0FBQyxDQUFDO1lBQ0gsT0FBTztTQUNaO1FBRUQsSUFBVSxNQUFPLENBQUMsYUFBYSxFQUFFO1lBQzdCLE9BQU8sQ0FBQyxHQUFHLENBQUMsNENBQTRDLENBQUMsQ0FBQztZQUMxRCxJQUFJLElBQUksR0FBUyxNQUFPLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN2RCxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO1NBQzVEO2FBRUksSUFBVSxNQUFPLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRTtZQUN4QyxPQUFPLENBQUMsR0FBRyxDQUFDLGtEQUFrRCxDQUFDLENBQUM7WUFDMUQsTUFBTyxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUU7Z0JBQ2hGLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEtBQUssU0FBUyxJQUFJLE1BQU0sQ0FBQyxLQUFLLEtBQUssUUFBUSxDQUFDLEVBQzlEO29CQUNJLE9BQU8sQ0FBQyxLQUFLLENBQUMseURBQXlELENBQUMsQ0FBQztvQkFDekUsSUFBSSxrQkFBa0I7d0JBQUUsa0JBQWtCLENBQUMsRUFBRSxDQUFDLENBQUM7b0JBQy9DLE9BQU87aUJBQ1Y7Z0JBRUQsT0FBTyxDQUFDLEdBQUcsQ0FBQyx3RUFBd0UsQ0FBQyxDQUFDO2dCQUNoRixNQUFPLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUU7cUJBQ3ZDLElBQUksQ0FBQyxDQUFDLENBQVMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztxQkFDMUUsS0FBSyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUUsV0FBQyxPQUFBLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsK0NBQStDLENBQUMsT0FBQyxJQUFJLENBQUMsTUFBTSxtQ0FBSSxPQUFPLENBQUMsR0FBRyxJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUEsRUFBQSxDQUFDLENBQUM7WUFDMUosQ0FBQyxDQUFDLENBQUM7U0FDTjtJQUNMLENBQUM7SUFFRCxjQUFjO0lBQ04sa0JBQWtCLENBQUMsYUFBcUIsRUFBRSxLQUF5QixFQUFFLGtCQUE0QjtRQUNyRyxPQUFPLENBQUMsR0FBRyxDQUFDLHFEQUFxRCxHQUFHLGFBQWEsQ0FBQyxDQUFDO1FBQ25GLElBQUksS0FBSyxHQUFHLEtBQUssSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO1lBQ2xFLEtBQUssSUFBSSxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ3BFLE9BQU8sQ0FBQyxHQUFHLENBQUMsc0NBQXNDLEtBQUssS0FBSyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNyRixJQUFJLGtCQUFrQjtZQUFFLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSyxpQkFBaUIsQ0FBQyxJQUFZO1FBQ2xDLElBQUksV0FBVyxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUU5QixJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxXQUFXLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztZQUMzRCxPQUFPLFdBQVcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFbkMsT0FBTyxXQUFXLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSyxrQkFBa0IsQ0FBQyxJQUFZO1FBQ25DLElBQUksR0FBRyxHQUFlLEVBQUUsQ0FBQztRQUN6QixJQUFJLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUVqRywwSEFBMEg7UUFDMUgsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFO1lBQ2hDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3JELE9BQU8sR0FBRyxDQUFDO0lBQ2YsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxtQkFBbUIsQ0FBQyxJQUFZOztRQUNuQyxJQUFJLFFBQVEsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRWxELEVBQUU7UUFDRixzRUFBc0U7UUFDdEUsRUFBRTtRQUNGLDZCQUE2QjtRQUM3QixzREFBc0Q7UUFDdEQsa0VBQWtFO1FBQ2xFLHdFQUF3RTtRQUN4RSwwQ0FBMEM7UUFDMUMsRUFBRTtRQUNGLHFFQUFxRTtRQUNyRSxtRUFBbUU7UUFDbkUscUVBQXFFO1FBQ3JFLHlDQUF5QztRQUN6QyxFQUFFO1FBRUYsb0VBQW9FO1FBQ3BFLFFBQVEsQ0FBQyxLQUFLLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQztRQUNsQyxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7UUFDekIsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDO1FBRTFCLCtEQUErRDtRQUMvRCw4REFBOEQ7UUFDOUQsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQzdCLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUU5QixvRUFBb0U7UUFDcEUsUUFBUSxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsR0FBRyxDQUFDO1FBRTdCLHdCQUF3QjtRQUN4QixRQUFRLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDL0IsUUFBUSxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO1FBQ2hDLFFBQVEsQ0FBQyxLQUFLLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQztRQUVsQyx1REFBdUQ7UUFDdkQsUUFBUSxDQUFDLEtBQUssQ0FBQyxVQUFVLEdBQUcsYUFBYSxDQUFDO1FBRTFDLFFBQVEsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBRXRCLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3BDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNqQixRQUFRLENBQUMsTUFBTSxFQUFFLENBQUM7UUFFbEIsSUFBSTtZQUNBLElBQUksVUFBVSxHQUFHLFFBQVEsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDOUMsSUFBRyxDQUFDLFVBQVU7Z0JBQ1YsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQywrQ0FBK0MsQ0FBQyxPQUFDLElBQUksQ0FBQyxNQUFNLG1DQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUM7U0FDdEg7UUFBQyxPQUFPLEdBQUcsRUFBRTtZQUNWLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsK0NBQStDLENBQUMsT0FBQyxJQUFJLENBQUMsTUFBTSxtQ0FBSSxPQUFPLENBQUMsR0FBRyxJQUFJLEdBQUUsR0FBRyxDQUFDLENBQUM7U0FDOUg7UUFFRCxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN4QyxDQUFDOzs7WUF2TkosVUFBVTs7O1lBUEYsY0FBYzt5Q0F5RHFDLFFBQVEsWUFBSSxNQUFNLFNBQUMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbIi8vIEFuZ3VsYXJcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0LCBPcHRpb25hbCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcblxyXG4vLyBNb2RlbGxpXHJcbmltcG9ydCB7IE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAnLi9leHRlbnNpb25zLm1lc3NhZ2VzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBFWFRfTE9DQUxFIH0gZnJvbSBcIi4uL3Rva2Vuc1wiO1xyXG5pbXBvcnQgU3dhbCBmcm9tIFwic3dlZXRhbGVydDJcIjtcclxuXHJcbi8qKlxyXG4gKiBTZXJ2aWNlIGNoZSBmb3JuaXNjZSB1biBhY2Nlc3NvIGJhc2UgaW4gbGV0dHVyYS9zY3JpdHR1cmEgc3VsbGEgY2xpcGJvYXJkXHJcbiAqL1xyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBDbGlwYm9hcmRTZXJ2aWNlIHtcclxuXHJcbiAgICAvKipcclxuICAgICAqIE9nZ2V0dG8gc3RhdGljbyBkaSBsb2NhbGl6emF6aW9uZSBwZXIgaSBtZXNzYWdnaSBkaSBxdWVzdGEgU2VydmljZVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGxvYyA9IHtcclxuICAgICAgICBcIlVuZm9ydHVuYXRlbHkgRmlyZWZveCBkb2Vzbid0IHlldCBzdXBwb3J0IGRpcmVjdCBDbGlwYm9hcmQgYWNjZXNzIGlmIG5vdCB2aWEgZXh0ZW5zaW9ucywgUGxlYXNlIHVzZSBDaHJvbWUgdG8gZG8gdGhpcyBvcGVyYXRpb25cIjoge1xyXG4gICAgICAgICAgICAnZW4tVVMnOiBcIlVuZm9ydHVuYXRlbHkgRmlyZWZveCBkb2Vzbid0IHlldCBzdXBwb3J0IGRpcmVjdCBDbGlwYm9hcmQgYWNjZXNzIGlmIG5vdCB2aWEgZXh0ZW5zaW9ucywgUGxlYXNlIHVzZSBDaHJvbWUgdG8gZG8gdGhpcyBvcGVyYXRpb25cIixcclxuICAgICAgICAgICAgJ2l0LUlUJzogXCJNaSBkaXNwaWFjZSBtYSBGaXJlZm94IG5vbiBzdXBwb3J0YSBsJ2FjY2Vzc28gZGlyZXR0byBhbGxhIENsaXBib2FyZCwgc2Ugbm9uIGF0dHJhdmVyc28gbGUgZXN0ZW5zaW9uaS4gU2kgcHJlZ2EgZGkgdXNhcmUgQ2hyb21lXCJcclxuICAgICAgICB9LFxyXG4gICAgICAgIFwiR2VuZXJpYyBlcnJvciBkdXJpbmcgJ2NvcHknIGNvbW1hbmQgZXhlY3V0aW9uXCI6IHtcclxuICAgICAgICAgICAgJ2VuLVVTJzogXCJHZW5lcmljIGVycm9yIGR1cmluZyAnY29weScgY29tbWFuZCBleGVjdXRpb25cIixcclxuICAgICAgICAgICAgJ2l0LUlUJzogXCJFcnJvcmUgZ2VuZXJpY28gZHVyYW50ZSBsJ2VzZWN1emlvbmUgZGVsIGNvbWFuZG8gJ2NvcHknXCJcclxuICAgICAgICB9LFxyXG4gICAgICAgIFwiRXJyb3IgZHVyaW5nIENsaXBib2FyZCBjb250ZW50IHJlYWQgb3BlcmF0aW9uXCI6IHtcclxuICAgICAgICAgICAgJ2VuLVVTJzogXCJFcnJvciBkdXJpbmcgQ2xpcGJvYXJkIGNvbnRlbnQgcmVhZCBvcGVyYXRpb25cIixcclxuICAgICAgICAgICAgJ2l0LUlUJzogXCJFcnJvcmUgbmVsbGEgbGV0dHVyYSBkZWwgY29udGVudXRvIGRlbGxhIENsaXBib2FyZFwiXHJcbiAgICAgICAgfSxcclxuICAgICAgICBcIkVycm9yIGR1cmluZyBDbGlwYm9hcmQgY29udGVudCBjb3B5IG9wZXJhdGlvblwiOntcclxuICAgICAgICAgICAgJ2VuLVVTJzogXCJFcnJvciBkdXJpbmcgQ2xpcGJvYXJkIGNvbnRlbnQgY29weSBvcGVyYXRpb25cIixcclxuICAgICAgICAgICAgJ2l0LUlUJzogXCJFcnJvcmUgbmVsbGEgc2NyaXR0dXJhIGRlbCBjb250ZW51dG8gbmVsbGEgQ2xpcGJvYXJkXCJcclxuICAgICAgICB9LFxyXG4gICAgICAgIFwiUGxlYXNlIGluc2VydCB5b3VyIGNsaXBib2FyZCBjb250ZW50XCI6IHtcclxuICAgICAgICAgICAgJ2VuLVVTJzogXCJQbGVhc2UgaW5zZXJ0IHlvdXIgY2xpcGJvYXJkIGNvbnRlbnRcIixcclxuICAgICAgICAgICAgJ2l0LUlUJzogXCJTaSBwcmVnYSBkaSBpbmNvbGxhcmUgaWwgY29udGVudXRvIGRlbGxhIENsaXBib2FyZFwiXHJcbiAgICAgICAgfSxcclxuICAgICAgICBcIlVzZXIgaW5wdXQgcmVxdWlyZWRcIjoge1xyXG4gICAgICAgICAgICAnZW4tVVMnOiBcIlVzZXIgaW5wdXQgcmVxdWlyZWRcIixcclxuICAgICAgICAgICAgJ2l0LUlUJzogXCJSaWNoaWVzdG8gSW5wdXQgdXRlbnRlXCJcclxuICAgICAgICB9LFxyXG4gICAgICAgIFwiWW91ciBjdXJyZW50IGJyb3dzZXIgZG9lcyBub3Qgc3VwcG9ydCByZWFkaW5nIGZyb20gdGhlIGNsaXBib2FyZCBkaXJlY3RseS4gUGxlYXNlIHBhc3RlIHlvdXIgY2xpcGJvYXJkJ3MgY29udGVudCBpbiB0aGlzIElucHV0IGZpZWxkIGFuZCBjb25maXJtIHRoZSBvcGVyYXRpb25cIjoge1xyXG4gICAgICAgICAgICAnZW4tVVMnOiBcIllvdXIgY3VycmVudCBicm93c2VyIGRvZXMgbm90IHN1cHBvcnQgcmVhZGluZyBmcm9tIHRoZSBjbGlwYm9hcmQgZGlyZWN0bHkuIFBsZWFzZSBwYXN0ZSB5b3VyIGNsaXBib2FyZCdzIGNvbnRlbnQgaW4gdGhpcyBJbnB1dCBmaWVsZCBhbmQgY29uZmlybSB0aGUgb3BlcmF0aW9uXCIsXHJcbiAgICAgICAgICAgICdpdC1JVCc6IFwiSWwgYnJvd3NlciBjb3JyZW50ZSBub24gc3VwcG9ydGEgbGEgbGV0dHVyYSBkaXJldHRhIGRlaSBkYXRpIGRlbGxhIENsaXBib2FyZCwgc2kgcHJlZ2EgZGkgZWZmZXR0dWFyZSB1bidpbmNvbGxhIChDVFJMICsgVikgbmVsbGEgY2FzZWxsYSBkaSB0ZXN0byBlIGNvbmZlcm1hcmUgbCdvcGVyYXppb25lXCJcclxuICAgICAgICB9LFxyXG4gICAgICAgIFwiQ29uZmlybVwiOiB7XHJcbiAgICAgICAgICAgICdlbi1VUyc6IFwiQ29uZmlybVwiLFxyXG4gICAgICAgICAgICAnaXQtSVQnOiBcIkNvbmZlcm1hXCJcclxuICAgICAgICB9LFxyXG4gICAgICAgIFwiQ2FuY2VsXCI6IHtcclxuICAgICAgICAgICAgJ2VuLVVTJzogXCJDYW5jZWxcIixcclxuICAgICAgICAgICAgJ2l0LUlUJzogXCJBbm51bGxhXCJcclxuICAgICAgICB9LFxyXG4gICAgfTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIENvc3RydXR0b3JlXHJcbiAgICAgKiBcclxuICAgICAqIEBpZ25vcmVcclxuICAgICAqL1xyXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgbXNnU2VydmljZTogTWVzc2FnZVNlcnZpY2UsIEBPcHRpb25hbCgpIEBJbmplY3QoRVhUX0xPQ0FMRSkgcHJpdmF0ZSBMT0NBTEU6IHN0cmluZykgeyB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQcmVuZGUgaWwgdmFsb3JlIGRlbGxhIGNsaXBib2FyZC4gXHJcbiAgICAgKiBTaSBwdcOyIHNwZWNpZmljYXJlIHNlIGNpIHNpIGFzcGV0dGEgdW5hIGxpc3RhIG8gdW5hIG1hdHJpY2UgZGkgdmFsb3JpIGluIG1vZG8gZGEgcmljZXZlcmUgZ2nDoCB1biByaXN1bHRhdG8gdXRpbGl6emFiaWxlXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7J2FycmF5JyB8ICdtYXRyaXgnfSBzdHlsZSBTdGlsZSBkZWxsJ291dHB1dCBkZXNpZGVyYXRvLCBzZSBhcnJheSBvIG1hdHJpY2VcclxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHZhbHVlRm91bmRDYWxsYmFjayBDYWxsYmFjayBjaGUgcXVlc3RhIGZ1bnppb25lIGNoaWFtZXLDoCB1bmEgdm9sdGEgb3R0ZW51dG8gaSB2YWxvcmkgcmljaGllc3RpIGRhbGxhIGNsaXBib2FyZFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0Q2xpcGJvYXJkKHN0eWxlOiAnYXJyYXknIHwgJ21hdHJpeCcsIHZhbHVlRm91bmRDYWxsYmFjayA6ICh2YWx1ZXM6IHN0cmluZ1tdIHwgc3RyaW5nW11bXSkgPT4gdm9pZCkge1xyXG4gICAgICAgIGlmIChuYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoXCJGaXJlZm94XCIpICE9IC0xKSB7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBTd2FsLmZpcmUoe1xyXG4gICAgICAgICAgICAgICAgdGl0bGU6IHRoaXMubG9jW1wiVXNlciBpbnB1dCByZXF1aXJlZFwiXVt0aGlzLkxPQ0FMRSA/PyAnaXQtSVQnXSxcclxuICAgICAgICAgICAgICAgIHRleHQ6IHRoaXMubG9jW1wiWW91ciBjdXJyZW50IGJyb3dzZXIgZG9lcyBub3Qgc3VwcG9ydCByZWFkaW5nIGZyb20gdGhlIGNsaXBib2FyZCBkaXJlY3RseS4gUGxlYXNlIHBhc3RlIHlvdXIgY2xpcGJvYXJkJ3MgY29udGVudCBpbiB0aGlzIElucHV0IGZpZWxkIGFuZCBjb25maXJtIHRoZSBvcGVyYXRpb25cIl1bdGhpcy5MT0NBTEUgPz8gJ2l0LUlUJ10sXHJcbiAgICAgICAgICAgICAgICBpbnB1dDogJ3RleHRhcmVhJyxcclxuICAgICAgICAgICAgICAgIGljb246IFwid2FybmluZ1wiLFxyXG4gICAgICAgICAgICAgICAgY29uZmlybUJ1dHRvblRleHQ6IHRoaXMubG9jW1wiQ29uZmlybVwiXVt0aGlzLkxPQ0FMRSA/PyAnaXQtSVQnXSxcclxuICAgICAgICAgICAgICAgIGNhbmNlbEJ1dHRvblRleHQ6IHRoaXMubG9jW1wiQ2FuY2VsXCJdW3RoaXMuTE9DQUxFID8/ICdpdC1JVCddLFxyXG4gICAgICAgICAgICAgICAgc2hvd0NhbmNlbEJ1dHRvbjogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIGN1c3RvbUNsYXNzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uZmlybUJ1dHRvbjogXCJidG4gYnRuLXByaW1hcnlcIixcclxuICAgICAgICAgICAgICAgICAgICBjYW5jZWxCdXR0b246IFwiYnRuIGJ0bi1zZWNvbmRhcnkgYXBwLW1hcmdpbi1yaWdodC0xNVwiLFxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcjogXCJhcHAtd3JhcFwiLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHJldmVyc2VCdXR0b25zOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgYWxsb3dPdXRzaWRlQ2xpY2s6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgaW5wdXRWYWxpZGF0b3I6ICh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKVxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmxvY1tcIlBsZWFzZSBpbnNlcnQgeW91ciBjbGlwYm9hcmQgY29udGVudFwiXVt0aGlzLkxPQ0FMRSA/PyAnaXQtSVQnXVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH0pLnRoZW4odCA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIGlmICh0LmlzQ29uZmlybWVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIltAZXNmYWVuemEvZXh0ZW5zaW9uc10gUmV0cmlldmluZyBpbnB1dCBkYXRhIGZyb20gdXNlciBpbnB1dFwiKTtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZG9DbGlwYm9hcmREYXRhR2V0KHQudmFsdWUsIHN0eWxlLCB2YWx1ZUZvdW5kQ2FsbGJhY2spO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKCg8YW55PndpbmRvdykuY2xpcGJvYXJkRGF0YSkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcIltAZXNmYWVuemEvZXh0ZW5zaW9uc10gRm91bmQgY2xpcGJvYXJkRGF0YVwiKTtcclxuICAgICAgICAgICAgbGV0IGRhdGEgPSAoPGFueT53aW5kb3cpLmNsaXBib2FyZERhdGEuZ2V0RGF0YShcIlRleHRcIik7XHJcbiAgICAgICAgICAgIHRoaXMuZG9DbGlwYm9hcmREYXRhR2V0KGRhdGEsIHN0eWxlLCB2YWx1ZUZvdW5kQ2FsbGJhY2spO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZWxzZSBpZiAoKDxhbnk+d2luZG93KS5uYXZpZ2F0b3IuY2xpcGJvYXJkKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiW0Blc2ZhZW56YS9leHRlbnNpb25zXSBGb3VuZCBuYXZpZ2F0b3IgY2xpcGJvYXJkXCIpO1xyXG4gICAgICAgICAgICAoPGFueT53aW5kb3cpLm5hdmlnYXRvci5wZXJtaXNzaW9ucy5xdWVyeSh7IG5hbWU6ICdjbGlwYm9hcmQtcmVhZCcgfSkudGhlbihyZXN1bHQgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKCEocmVzdWx0LnN0YXRlID09PSAnZ3JhbnRlZCcgfHwgcmVzdWx0LnN0YXRlID09PSAncHJvbXB0JykpXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIltAZXNmYWVuemEvZXh0ZW5zaW9uc10gQ2xpcGJvYXJkIHBlcm1pc3Npb24gbm90IGdyYW50ZWRcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlRm91bmRDYWxsYmFjaykgdmFsdWVGb3VuZENhbGxiYWNrKFtdKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJbQGVzZmFlbnphL2V4dGVuc2lvbnNdIENsaXBib2FyZCBwZXJtaXNzaW9uIGdyYW50ZWQsIHJldHJpZXZpbmcgdmFsdWVzXCIpO1xyXG4gICAgICAgICAgICAgICAgKDxhbnk+d2luZG93KS5uYXZpZ2F0b3IuY2xpcGJvYXJkLnJlYWRUZXh0KClcclxuICAgICAgICAgICAgICAgICAgICAudGhlbigodDogc3RyaW5nKSA9PiB0aGlzLmRvQ2xpcGJvYXJkRGF0YUdldCh0LCBzdHlsZSwgdmFsdWVGb3VuZENhbGxiYWNrKSlcclxuICAgICAgICAgICAgICAgICAgICAuY2F0Y2goKGVycjogYW55KSA9PiB0aGlzLm1zZ1NlcnZpY2Uuc2ltcGxlRXJyb3IodGhpcy5sb2NbXCJFcnJvciBkdXJpbmcgQ2xpcGJvYXJkIGNvbnRlbnQgcmVhZCBvcGVyYXRpb25cIl1bdGhpcy5MT0NBTEUgPz8gJ2l0LUlUJ10gKyBcIjogXCIgKyBlcnIpKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKiBAaWdub3JlICovXHJcbiAgICBwcml2YXRlIGRvQ2xpcGJvYXJkRGF0YUdldChjbGlwYm9hcmRUZXh0OiBzdHJpbmcsIHN0eWxlOiBcIm1hdHJpeFwiIHwgXCJhcnJheVwiLCB2YWx1ZUZvdW5kQ2FsbGJhY2s6IEZ1bmN0aW9uKSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJbQGVzZmFlbnphL2V4dGVuc2lvbnNdIFJldHJpZXZlZCBjbGlwYm9hcmQgdmFsdWVzOiBcIiArIGNsaXBib2FyZFRleHQpO1xyXG4gICAgICAgIGxldCB2YWx1ZSA9IHN0eWxlID09IFwiYXJyYXlcIiA/IHRoaXMuZ2V0Q2xpcGJvYXJkTGluZXMoY2xpcGJvYXJkVGV4dCkgOlxyXG4gICAgICAgICAgICBzdHlsZSA9PSBcIm1hdHJpeFwiID8gdGhpcy5nZXRDbGlwYm9hcmRNYXRyaXgoY2xpcGJvYXJkVGV4dCkgOiBbXTtcclxuICAgICAgICBjb25zb2xlLmxvZyhgW0Blc2ZhZW56YS9leHRlbnNpb25zXSBBZGFwdGVkIGZvciAke3N0eWxlfTogJHtKU09OLnN0cmluZ2lmeSh2YWx1ZSl9YCk7XHJcbiAgICAgICAgaWYgKHZhbHVlRm91bmRDYWxsYmFjaykgdmFsdWVGb3VuZENhbGxiYWNrKHZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIE90dGllbmUgaWwgY29udGVudXRvIGRlbGxhIGNsaXBib2FyZCBkaXZpc28gcGVyIHJpZ2hlIChzZXBhcmF0ZSBkYSBuZXdsaW5lKVxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gZGF0YSBjb250ZW51dG8gbGV0dG8gZGFsbGEgY2xpcGJvYXJkXHJcbiAgICAgKiBcclxuICAgICAqIEByZXR1cm5zIHtzdHJpbmdbXX0gQXJyYXkgY29udGVuZW50ZSBpbCB0ZXN0byBwcmVzbyBkYWxsYSBjbGlwYm9hcmQgZGl2aXNvIHBlciByaWdhXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgZ2V0Q2xpcGJvYXJkTGluZXMoZGF0YTogc3RyaW5nKTogc3RyaW5nW10ge1xyXG4gICAgICAgIGxldCB0cmltbWVkRGF0YSA9IGRhdGEudHJpbSgpO1xyXG5cclxuICAgICAgICBpZiAoIXRyaW1tZWREYXRhLmluY2x1ZGVzKFwiXFxyXFxuXCIpICYmIHRyaW1tZWREYXRhLmluY2x1ZGVzKFwiXFxuXCIpKVxyXG4gICAgICAgICAgICByZXR1cm4gdHJpbW1lZERhdGEuc3BsaXQoXCJcXG5cIik7XHJcblxyXG4gICAgICAgIHJldHVybiB0cmltbWVkRGF0YS5zcGxpdChcIlxcclxcblwiKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIE90dGllbmUgaWwgY29udGVudXRvIGRlbGxhIGNsaXBib2FyZCBkaXZpc28gcGVyIHJpZ2hlIChzZXBhcmF0ZSBkYSBuZXdsaW5lKSBlIGNvbG9ubmUgKHNlcGFyYXRlIGRhIHRhYilcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGRhdGEgY29udGVudXRvIGxldHRvIGRhbGxhIGNsaXBib2FyZFxyXG4gICAgICogXHJcbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nW11bXX0gTWF0cmljZSBjb250ZW5lbnRlIGlsIHRlc3RvIHByZXNvIGRhbGxhIGNsaXBib2FyZCBkaXZpc28gcGVyIHJpZ2EgZSBjb2xvbm5hXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgZ2V0Q2xpcGJvYXJkTWF0cml4KGRhdGE6IHN0cmluZyk6IHN0cmluZ1tdW10ge1xyXG4gICAgICAgIHZhciByZXQ6IHN0cmluZ1tdW10gPSBbXTtcclxuICAgICAgICB2YXIgcm93cyA9ICFkYXRhLmluY2x1ZGVzKFwiXFxyXFxuXCIpICYmIGRhdGEuaW5jbHVkZXMoXCJcXG5cIikgPyBkYXRhLnNwbGl0KFwiXFxuXCIpIDogZGF0YS5zcGxpdChcIlxcclxcblwiKTtcclxuXHJcbiAgICAgICAgLy8gQSBxdWFudG8gcGFyZSBvZ25pIHZhbG9yZSDDqCBzZXBhcmF0byBkYSB1biBcXHQuLi4gc3Blcm8gY2hlIHNpYSB1bm8gc3RhbmRhcmQgZGkgcXVhbmRvIHNpIGNvcGlhIGRhIGV4Y2VsIGFsdHJpbWVudGkgY2lhb1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcm93cy5sZW5ndGg7IGkrKylcclxuICAgICAgICAgICAgcmV0LnB1c2gocm93c1tpXS5zcGxpdCgnXFx0JykubWFwKHQgPT4gdC50cmltKCkpKTtcclxuICAgICAgICByZXR1cm4gcmV0O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTWV0b2RvIGNoZSBjb3BpYSB1biB0ZXN0byBhbGwnaW50ZXJubyBkZWxsYSBjbGlwYm9hcmRcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHRleHQgVGVzdG8gZGEgaW5zZXJpcmUgbmVsbGEgY2xpcGJvYXJkXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBjb3B5VGV4dFRvQ2xpcGJvYXJkKHRleHQ6IHN0cmluZykge1xyXG4gICAgICAgIHZhciB0ZXh0QXJlYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJ0ZXh0YXJlYVwiKTtcclxuXHJcbiAgICAgICAgLy9cclxuICAgICAgICAvLyAqKiogVGhpcyBzdHlsaW5nIGlzIGFuIGV4dHJhIHN0ZXAgd2hpY2ggaXMgbGlrZWx5IG5vdCByZXF1aXJlZC4gKioqXHJcbiAgICAgICAgLy9cclxuICAgICAgICAvLyBXaHkgaXMgaXQgaGVyZT8gVG8gZW5zdXJlOlxyXG4gICAgICAgIC8vIDEuIHRoZSBlbGVtZW50IGlzIGFibGUgdG8gaGF2ZSBmb2N1cyBhbmQgc2VsZWN0aW9uLlxyXG4gICAgICAgIC8vIDIuIGlmIGVsZW1lbnQgd2FzIHRvIGZsYXNoIHJlbmRlciBpdCBoYXMgbWluaW1hbCB2aXN1YWwgaW1wYWN0LlxyXG4gICAgICAgIC8vIDMuIGxlc3MgZmxha3luZXNzIHdpdGggc2VsZWN0aW9uIGFuZCBjb3B5aW5nIHdoaWNoICoqbWlnaHQqKiBvY2N1ciBpZlxyXG4gICAgICAgIC8vICAgIHRoZSB0ZXh0YXJlYSBlbGVtZW50IGlzIG5vdCB2aXNpYmxlLlxyXG4gICAgICAgIC8vXHJcbiAgICAgICAgLy8gVGhlIGxpa2VsaWhvb2QgaXMgdGhlIGVsZW1lbnQgd29uJ3QgZXZlbiByZW5kZXIsIG5vdCBldmVuIGEgZmxhc2gsXHJcbiAgICAgICAgLy8gc28gc29tZSBvZiB0aGVzZSBhcmUganVzdCBwcmVjYXV0aW9ucy4gSG93ZXZlciBpbiBJRSB0aGUgZWxlbWVudFxyXG4gICAgICAgIC8vIGlzIHZpc2libGUgd2hpbHN0IHRoZSBwb3B1cCBib3ggYXNraW5nIHRoZSB1c2VyIGZvciBwZXJtaXNzaW9uIGZvclxyXG4gICAgICAgIC8vIHRoZSB3ZWIgcGFnZSB0byBjb3B5IHRvIHRoZSBjbGlwYm9hcmQuXHJcbiAgICAgICAgLy9cclxuXHJcbiAgICAgICAgLy8gUGxhY2UgaW4gdG9wLWxlZnQgY29ybmVyIG9mIHNjcmVlbiByZWdhcmRsZXNzIG9mIHNjcm9sbCBwb3NpdGlvbi5cclxuICAgICAgICB0ZXh0QXJlYS5zdHlsZS5wb3NpdGlvbiA9IFwiZml4ZWRcIjtcclxuICAgICAgICB0ZXh0QXJlYS5zdHlsZS50b3AgPSBcIjBcIjtcclxuICAgICAgICB0ZXh0QXJlYS5zdHlsZS5sZWZ0ID0gXCIwXCI7XHJcblxyXG4gICAgICAgIC8vIEVuc3VyZSBpdCBoYXMgYSBzbWFsbCB3aWR0aCBhbmQgaGVpZ2h0LiBTZXR0aW5nIHRvIDFweCAvIDFlbVxyXG4gICAgICAgIC8vIGRvZXNuJ3Qgd29yayBhcyB0aGlzIGdpdmVzIGEgbmVnYXRpdmUgdy9oIG9uIHNvbWUgYnJvd3NlcnMuXHJcbiAgICAgICAgdGV4dEFyZWEuc3R5bGUud2lkdGggPSBcIjJlbVwiO1xyXG4gICAgICAgIHRleHRBcmVhLnN0eWxlLmhlaWdodCA9IFwiMmVtXCI7XHJcblxyXG4gICAgICAgIC8vIFdlIGRvbid0IG5lZWQgcGFkZGluZywgcmVkdWNpbmcgdGhlIHNpemUgaWYgaXQgZG9lcyBmbGFzaCByZW5kZXIuXHJcbiAgICAgICAgdGV4dEFyZWEuc3R5bGUucGFkZGluZyA9IFwiMFwiO1xyXG5cclxuICAgICAgICAvLyBDbGVhbiB1cCBhbnkgYm9yZGVycy5cclxuICAgICAgICB0ZXh0QXJlYS5zdHlsZS5ib3JkZXIgPSBcIm5vbmVcIjtcclxuICAgICAgICB0ZXh0QXJlYS5zdHlsZS5vdXRsaW5lID0gXCJub25lXCI7XHJcbiAgICAgICAgdGV4dEFyZWEuc3R5bGUuYm94U2hhZG93ID0gXCJub25lXCI7XHJcblxyXG4gICAgICAgIC8vIEF2b2lkIGZsYXNoIG9mIHdoaXRlIGJveCBpZiByZW5kZXJlZCBmb3IgYW55IHJlYXNvbi5cclxuICAgICAgICB0ZXh0QXJlYS5zdHlsZS5iYWNrZ3JvdW5kID0gXCJ0cmFuc3BhcmVudFwiO1xyXG5cclxuICAgICAgICB0ZXh0QXJlYS52YWx1ZSA9IHRleHQ7XHJcblxyXG4gICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGV4dEFyZWEpO1xyXG4gICAgICAgIHRleHRBcmVhLmZvY3VzKCk7XHJcbiAgICAgICAgdGV4dEFyZWEuc2VsZWN0KCk7XHJcblxyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIHZhciBzdWNjZXNzZnVsID0gZG9jdW1lbnQuZXhlY0NvbW1hbmQoXCJjb3B5XCIpO1xyXG4gICAgICAgICAgICBpZighc3VjY2Vzc2Z1bClcclxuICAgICAgICAgICAgICAgIHRoaXMubXNnU2VydmljZS5zaW1wbGVFcnJvcih0aGlzLmxvY1tcIkdlbmVyaWMgZXJyb3IgZHVyaW5nICdjb3B5JyBjb21tYW5kIGV4ZWN1dGlvblwiXVt0aGlzLkxPQ0FMRSA/PyAnaXQtSVQnXSk7XHJcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XHJcbiAgICAgICAgICAgIHRoaXMubXNnU2VydmljZS5zaW1wbGVFcnJvcih0aGlzLmxvY1tcIkVycm9yIGR1cmluZyBDbGlwYm9hcmQgY29udGVudCBjb3B5IG9wZXJhdGlvblwiXVt0aGlzLkxPQ0FMRSA/PyAnaXQtSVQnXSArIFwiOiBcIisgZXJyKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQodGV4dEFyZWEpO1xyXG4gICAgfVxyXG59Il19
|