Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Socket
Sign inDemoInstall

@dlr-eoc/utils-ogc

Package Overview
Dependencies
Maintainers
1
Versions
39
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@dlr-eoc/utils-ogc - npm Package Compare versions

Comparing version 7.3.0-next.2 to 7.3.0-next.3

esm2015/lib/httpClient/httpclient.js

16

bundles/dlr-eoc-utils-ogc.umd.min.js

@@ -1,16 +0,2 @@

!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("xmlserializer"),require("rxjs"),require("rxjs/operators"),require("w3c-schemas/lib/XLink_1_0"),require("ogc-schemas/lib/OWS_1_1_0"),require("ogc-schemas/lib/OWS_2_0"),require("ogc-schemas/lib/WPS_1_0_0"),require("ogc-schemas/lib/WPS_2_0"),require("@michaellangbein/jsonix")):"function"==typeof define&&define.amd?define("@dlr-eoc/utils-ogc",["exports","xmlserializer","rxjs","rxjs/operators","w3c-schemas/lib/XLink_1_0","ogc-schemas/lib/OWS_1_1_0","ogc-schemas/lib/OWS_2_0","ogc-schemas/lib/WPS_1_0_0","ogc-schemas/lib/WPS_2_0","@michaellangbein/jsonix"],t):t(((e=e||self)["dlr-eoc"]=e["dlr-eoc"]||{},e["dlr-eoc"]["utils-ogc"]={}),e.xmlserializer,e.rxjs,e.rxjs.operators,e.XLink_1_0_Factory,e.OWS_1_1_0_Factory,e.OWS_2_0_Factory,e.WPS_1_0_0_Factory,e.WPS_2_0_Factory,e.JsonixFactory)}(this,(function(e,t,r,a,n,i,o,s,l,u){"use strict";
/*! *****************************************************************************
Copyright (c) Microsoft Corporation.
Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE.
***************************************************************************** */Object.create;function p(e){var t="function"==typeof Symbol&&Symbol.iterator,r=t&&e[t],a=0;if(r)return r.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&a>=e.length&&(e=void 0),{value:e&&e[a++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}Object.create;var c=function(){function e(){}return e.prototype.getCapabilitiesUrl=function(e){return e+"?service=WPS&request=GetCapabilities&version=1.0.0"},e.prototype.getDescribeProcessUrl=function(e,t){return e+"?service=WPS&request=DescribeProcess&version=1.0.0&Identifier="+t},e.prototype.executeUrl=function(e,t){return e+"?service=WPS&request=Execute&version=1.0.0&identifier="+t},e.prototype.unmarshalCapabilities=function(e){var t=[];return e.processOfferings.process.forEach((function(e){t.push({id:e.identifier.value})})),t},e.prototype.unmarshalProcessDescription=function(e){var t,r,a,n,i,o=e.processDescription[0],s=[];try{for(var l=p(o.dataInputs.input),u=l.next();!u.done;u=l.next()){var c=u.value;s.push({description:this.unmarshalInputDescription(c),value:null})}}catch(e){t={error:e}}finally{try{u&&!u.done&&(r=l.return)&&r.call(l)}finally{if(t)throw t.error}}var f=[];try{for(var m=p(o.processOutputs.output),h=m.next();!h.done;h=m.next()){var d=h.value;f.push({description:this.unmarshalOutputDescription(d),value:null})}}catch(e){a={error:e}}finally{try{h&&!h.done&&(n=m.return)&&n.call(m)}finally{if(a)throw a.error}}return{id:o.identifier.value,processVersion:o.processVersion,description:null===(i=o._abstract)||void 0===i?void 0:i.value,title:o.title.value,inputs:s,outputs:f}},e.prototype.unmarshalSyncExecuteResponse=function(e,t,r,a,n){var i,o,s=[];if(e.value.status.processFailed)s.push({description:{id:e.value.process.identifier.value,title:e.value.process.title.value,reference:!0,type:"error"},value:e.value.statusLocation});else if(e.value.processOutputs)try{for(var l=p(e.value.processOutputs.output),u=l.next();!u.done;u=l.next()){var c=u.value,f=!!c.reference,m=void 0,h=void 0,d=void 0;c.reference?(m="complex",h=c.reference.href||null,d=c.reference.mimeType):(c.data&&c.data.literalData?(m="literal",d=c.data.literalData.dataType):c.data&&c.data.complexData?(m="complex",d=c.data.complexData.mimeType):(m="bbox",d=void 0),h=this.unmarshalOutputData(c.data)),s.push({description:{id:c.identifier.value,title:c.title.value,format:d,reference:f,type:m},value:h})}}catch(e){i={error:e}}finally{try{u&&!u.done&&(o=l.return)&&o.call(l)}finally{if(i)throw i.error}}else e.value.statusLocation&&s.push({description:{id:e.value.process.identifier.value,title:e.value.process.title.value,reference:!0,type:"status"},value:this.unmarshalGetStateResponse(e,t,r,a,n)});return s},e.prototype.unmarshalOutputData=function(e){if(e.complexData)switch("base64"===e.complexData.encoding&&("undefined"!=typeof module&&module.exports?e.complexData.content.map((function(e){return new Buffer(e,"base64").toString("ascii")})):e.complexData.content.map((function(e){return atob(e)}))),e.complexData.mimeType){case"application/vnd.geo+json":case"application/json":return e.complexData.content.map((function(e){return JSON.parse(e)}));case"application/WMS":return e.complexData.content;case"text/xml":case"application/xml":return t.serializeToString(e.complexData.content[0]);default:throw new Error("Cannot unmarshal data of format "+e.complexData.mimeType)}else if(e.literalData)switch(e.literalData.dataType){case"string":default:return e.literalData.value}throw new Error("Not yet implemented: "+e)},e.prototype.unmarshalInputDescription=function(e){var t,r,a,n;if(e.boundingBoxData)return{id:e.identifier.value,title:e.title.value,reference:!1,type:"bbox",description:null===(t=e._abstract)||void 0===t?void 0:t.value,format:"text/plain"};if(e.complexData)return{id:e.identifier.value,title:e.title.value,reference:e.storeSupported,type:"complex",description:null===(r=e._abstract)||void 0===r?void 0:r.value,format:e.complexData._default.format.mimeType};if(e.literalData)return{id:e.identifier.value,title:e.title.value,reference:!1,type:"literal",description:null===(a=e._abstract)||void 0===a?void 0:a.value,defaultValue:e.literalData.defaultValue,options:null===(n=e.literalData.allowedValues)||void 0===n?void 0:n.valueOrRange.map((function(e){return e.value})),format:"text/plain"};throw new Error("Cannot unmarshal the input-description for "+e.identifier.value)},e.prototype.unmarshalOutputDescription=function(e){if(e.complexOutput)return{id:e.identifier.value,title:e.title.value,reference:!0,type:"complex",format:e.complexOutput._default.format.mimeType};if(e.boundingBoxOutput)return{id:e.identifier.value,title:e.title.value,reference:!1,type:"bbox"};if(e.literalOutput)return{id:e.identifier.value,title:e.title.value,reference:!1,type:"literal"};throw new Error("Cannot unmarshal the input-description for "+e.identifier.value)},e.prototype.unmarshalAsyncExecuteResponse=function(e,t,r,a,n){return this.unmarshalGetStateResponse(e,t,r,a,n)},e.prototype.unmarshalGetStateResponse=function(e,t,r,a,n){var i=e.value,o={status:i.status.processSucceeded?"Succeeded":i.status.processAccepted?"Accepted":i.status.processStarted?"Running":(i.status.processFailed,"Failed"),statusLocation:i.statusLocation};return i.processOutputs&&i.processOutputs.output&&(o.results=e),o},e.prototype.marshalExecBody=function(e,t,r,a){return{name:{key:"{http://www.opengis.net/wps/1.0.0}Execute",localPart:"Execute",namespaceURI:"http://www.opengis.net/wps/1.0.0",prefix:"wps",string:"{http://www.opengis.net/wps/1.0.0}wps:Execute"},value:{dataInputs:this.marshalInputs(t),identifier:e,responseForm:this.marshalResponseForm(r,a),service:"WPS",version:"1.0.0"}}},e.prototype.marshalResponseForm=function(e,t){var r,a;void 0===t&&(t=!1);var n=[];try{for(var i=p(e),o=i.next();!o.done;o=i.next()){var s=o.value,l=void 0;switch(s.type){case"literal":case"complex":l={identifier:{value:s.id},asReference:s.reference,mimeType:s.format};break;default:throw new Error("This Wps-outputtype has not been implemented yet! "+s+" ")}n.push(l)}}catch(e){r={error:e}}finally{try{o&&!o.done&&(a=i.return)&&a.call(i)}finally{if(r)throw r.error}}return{responseDocument:{output:n,status:!!t,storeExecuteResponse:!!t}}},e.prototype.marshalInputs=function(e){var t,r,a=[];try{for(var n=p(e),i=n.next();!i.done;i=n.next()){var o=i.value;if(null===o.value||void 0===o.value)throw new Error("Value for input "+o.description.id+" is not set");var s=this.marshalInput(o);a.push(s)}}catch(e){t={error:e}}finally{try{i&&!i.done&&(r=n.return)&&r.call(n)}finally{if(t)throw t.error}}return{input:a}},e.prototype.marshalInput=function(e){var t={identifier:{value:e.description.id},title:{value:e.description.id},_abstract:{value:""}};return e.description.reference?t.reference=this.marshalReferenceInput(e):t.data=this.marshalDataInput(e),t},e.prototype.marshalDataInput=function(e){var t;switch(e.description.type){case"literal":t={literalData:{value:String(e.value)}};break;case"bbox":var r=e.value;t={boundingBoxData:{lowerCorner:[r.lllat,r.lllon],upperCorner:[r.urlat,r.urlon]}};break;case"complex":switch(e.description.format){case"text/xml":t={complexData:{content:[e.value],mimeType:e.description.format}};break;default:t={complexData:{content:[JSON.stringify(e.value)],mimeType:e.description.format}}}break;default:throw Error("This input is of type "+e.description.type+". We can only marshal input of type literal, bbox or complex.")}return t},e.prototype.marshalReferenceInput=function(e){return{href:e.value,method:"GET",mimeType:e.description.format}},e.prototype.marshallGetStatusBody=function(e,t,r){return{}},e.prototype.marshallGetResultBody=function(e,t,r){return{}},e.prototype.dismissUrl=function(e,t,r){throw new Error("Wps 1.0 does not support Dismiss-operations.")},e.prototype.marshalDismissBody=function(e){throw new Error("Wps 1.0 does not support Dismiss-operations.")},e.prototype.unmarshalDismissResponse=function(e,t,r){throw new Error("Wps 1.0 does not support Dismiss-operations.")},e}(),f=function(e){return e.hasOwnProperty("jobID")&&e.hasOwnProperty("status")},m=function(){function e(){}return e.prototype.getCapabilitiesUrl=function(e){return e+"?service=WPS&request=GetCapabilities&version=2.0.0"},e.prototype.getDescribeProcessUrl=function(e,t){return e+"?service=WPS&request=DescribeProcess&version=2.0.0&Identifier="+t},e.prototype.unmarshalProcessDescription=function(e){var t,r,a,n,i,o,s=e.processOffering[0],l=[];try{for(var u=p(s.process.input),c=u.next();!c.done;c=u.next()){var f=c.value;l.push({description:this.unmarshalInputDescription(f),value:null})}}catch(e){t={error:e}}finally{try{c&&!c.done&&(r=u.return)&&r.call(u)}finally{if(t)throw t.error}}var m=[];try{for(var h=p(s.process.output),d=h.next();!d.done;d=h.next()){var v=d.value;m.push({description:this.unmarshalOutputDescription(v),value:null})}}catch(e){a={error:e}}finally{try{d&&!d.done&&(n=h.return)&&n.call(h)}finally{if(a)throw a.error}}return{id:s.process.identifier.value,processVersion:s.processVersion||"",description:null===(i=s.process._abstract)||void 0===i?void 0:i.value,title:(null===(o=s.process.title)||void 0===o?void 0:o.value)||"",inputs:l,outputs:m}},e.prototype.unmarshalInputDescription=function(e){var t,r,a,n,i,o;if("BoundingBoxData"===e.dataDescription.name.localPart)return{id:e.identifier.value,title:e.title.value,reference:!1,type:"bbox",description:null===(t=e.abstract)||void 0===t?void 0:t.value};if("LiteralData"===e.dataDescription.name.localPart)return{id:e.identifier.value,title:e.title.value,reference:!1,type:"literal",defaultValue:null===(a=null===(r=e.dataDescription.value.literalDataDomain)||void 0===r?void 0:r.defaultValue)||void 0===a?void 0:a.value,options:null===(n=e.dataDescription.value.literalDataDomain)||void 0===n?void 0:n.allowedValues.valueOrRange.map((function(e){return e.value})),description:null===(i=e.abstract)||void 0===i?void 0:i.value};if("ComplexData"===e.dataDescription.name.localPart)return{id:e.identifier.value,title:e.title.value,reference:!0,type:"complex",format:e.dataDescription.value.format[0].mimeType,description:null===(o=e.abstract)||void 0===o?void 0:o.value};throw new Error("Cannot unmarshal input-description "+e.identifier.value)},e.prototype.unmarshalOutputDescription=function(e){var t,r,a;if("BoundingBoxData"===e.dataDescription.name.localPart)return{id:e.identifier.value,title:e.title.value,reference:!1,type:"bbox",description:null===(t=e.abstract)||void 0===t?void 0:t.value};if("LiteralData"===e.dataDescription.name.localPart)return{id:e.identifier.value,title:e.title.value,reference:!1,type:"literal",description:null===(r=e.abstract)||void 0===r?void 0:r.value};if("ComplexData"===e.dataDescription.name.localPart)return{id:e.identifier.value,title:e.title.value,reference:!0,type:"complex",format:e.dataDescription.value.format[0].mimeType,description:null===(a=e.abstract)||void 0===a?void 0:a.value};throw new Error("Cannot unmarshal input-description "+e.identifier.value)},e.prototype.executeUrl=function(e,t){return e+"?service=WPS&request=Execute&version=2.0.0&identifier="+t},e.prototype.unmarshalCapabilities=function(e){var t=[];return e.contents.processSummary.forEach((function(e){t.push({id:e.identifier.value})})),t},e.prototype.unmarshalSyncExecuteResponse=function(e,t,r,a,n){var i,o,s=[];if(e.value.hasOwnProperty("output")){var l=function(e){var t=n.find((function(t){return t.id===e.id}));if(!t)throw new Error("Could not find an output-description for the parameter "+e.id+".");var r=t.reference,a=t.type,i=t.format,o=void 0;if(e.reference)o=e.reference.href||null;else{if(!e.data)throw new Error("Output has neither reference nor data field.");o=u.unmarshalOutputData(e.data,t)}s.push({description:{id:e.id,title:t.title,format:i,reference:r,type:a},value:o})},u=this;try{for(var c=p(e.value.output),m=c.next();!m.done;m=c.next()){l(m.value)}}catch(e){i={error:e}}finally{try{m&&!m.done&&(o=c.return)&&o.call(c)}finally{if(i)throw i.error}}}else if(f(e.value)){var h={status:e.value.status,jobID:e.value.jobID,percentCompleted:e.value.percentCompleted};s.push({description:{id:r,title:"",reference:!0,type:"status"},value:h})}return s},e.prototype.unmarshalOutputData=function(e,r){if("complex"===r.type)switch("base64"===e.encoding&&("undefined"!=typeof module&&module.exports?e.content.map((function(e){return new Buffer(e,"base64").toString("ascii")})):e.content.map((function(e){return atob(e)}))),e.mimeType){case"application/vnd.geo+json":case"application/json":return e.content.map((function(e){return JSON.parse(e)}));case"application/WMS":return e.content;case"text/xml":case"application/xml":return t.serializeToString(e.content[0]);default:throw new Error("Cannot unmarshal complex data of format "+e.mimeType)}else if("literal"===r.type)return e.content;throw new Error("Not yet implemented: "+e)},e.prototype.unmarshalAsyncExecuteResponse=function(e,t,r,a,n){return this.unmarshalGetStateResponse(e,t,r,a,n)},e.prototype.unmarshalGetStateResponse=function(e,t,r,a,n){if(f(e.value))return{status:e.value.status,jobID:e.value.jobID,percentCompleted:e.value.percentCompleted};throw new Error("Not a status-info: "+e)},e.prototype.marshalExecBody=function(e,t,r,a){return{name:{key:"{http://www.opengis.net/wps/2.0}Execute",localPart:"Execute",namespaceURI:"http://www.opengis.net/wps/2.0",prefix:"wps",string:"{http://www.opengis.net/wps/2.0}wps:Execute"},value:{TYPE_NAME:"WPS_2_0.ExecuteRequestType",service:"WPS",version:"2.0.0",identifier:{value:e},input:this.marshalInputs(t),output:this.marshalOutputs(r),mode:a?"async":"sync",response:"document"}}},e.prototype.marshalInputs=function(e){return e.map((function(e){return e.description.reference?{id:e.description.id,reference:{href:e.value,mimeType:e.description.format}}:{id:e.description.id,data:{content:[JSON.stringify(e.value)],mimeType:e.description.format}}}))},e.prototype.marshalOutputs=function(e){return e.map((function(e){return{id:e.id,mimeType:e.format,transmission:e.reference?"reference":"value"}}))},e.prototype.marshallGetStatusBody=function(e,t,r){return{name:{key:"{http://www.opengis.net/wps/2.0}GetStatus",localPart:"GetStatus",namespaceURI:"http://www.opengis.net/wps/2.0",prefix:"wps",string:"{http://www.opengis.net/wps/2.0}wps:GetStatus"},value:{jobID:r,service:"WPS",version:"2.0.0"}}},e.prototype.marshallGetResultBody=function(e,t,r){return{name:{key:"{http://www.opengis.net/wps/2.0}GetResult",localPart:"GetResult",namespaceURI:"http://www.opengis.net/wps/2.0",prefix:"wps",string:"{http://www.opengis.net/wps/2.0}wps:GetResult"},value:{service:"WPS",version:"2.0.0",jobID:r}}},e.prototype.dismissUrl=function(e,t,r){return e},e.prototype.marshalDismissBody=function(e){return{name:{key:"{http://www.opengis.net/wps/2.0}Dismiss",localPart:"Dismiss",namespaceURI:"http://www.opengis.net/wps/2.0",prefix:"wps",string:"{http://www.opengis.net/wps/2.0}wps:Dismiss"},value:{jobID:e,service:"WPS",version:"2.0.0"}}},e.prototype.unmarshalDismissResponse=function(e,t,r){return{status:e.value.status,jobID:e.value.jobID}},e}();function h(e,t,n,i){void 0===i&&(i=1e3),n&&n(null);var o=e.pipe(a.tap((function(e){n&&n(e)}))),s=r.forkJoin(o,r.timer(i)).pipe(a.map((function(e){return e[0]}))).pipe(a.mergeMap((function(e){return t(e)?r.of(e):s})));return s}function d(e,t){void 0===t&&(t=3);var n=1;return function(i){return i.pipe(a.retryWhen((function(i){return i.pipe(a.delay(e),a.mergeMap((function(e){if(e.status&&400===e.status)throw e;if(n<=t)return console.log("http-error. Retrying ..."),n+=1,r.of(e);throw console.log("Persistent http-errors after "+n+" attempts. Giving up."),e})))})))}}var v=function(){function e(){}return e.prototype.set=function(e,t){return r.of(!0)},e.prototype.get=function(e){return r.of(null)},e}(),y=n.XLink_1_0,w=i.OWS_1_1_0,x=o.OWS_2_0,b=s.WPS_1_0_0,D=l.WPS_2_0,g=u.Jsonix,S=function(){function e(e,t,r){var a;if(void 0===e&&(e="1.0.0"),this.webclient=t,this.cache=new v,this.version=e,r&&(this.cache=r),"1.0.0"===this.version)this.wpsmarshaller=new c,a=new g.Context([y,w,b]);else{if("2.0.0"!==this.version)throw new Error("You entered a WPS version other than 1.0.0 or 2.0.0.");this.wpsmarshaller=new m,a=new g.Context([y,x,D])}this.xmlunmarshaller=a.createUnmarshaller(),this.xmlmarshaller=a.createMarshaller()}return e.prototype.getCapabilities=function(e){var t=this,r=this.wpsmarshaller.getCapabilitiesUrl(e);return this.getRaw(r).pipe(a.map((function(e){var r=t.xmlunmarshaller.unmarshalString(e);return t.wpsmarshaller.unmarshalCapabilities(r.value)})))},e.prototype.describeProcess=function(e,t){var r=this,n=this.wpsmarshaller.getDescribeProcessUrl(e,t);return this.getRaw(n).pipe(a.map((function(e){var t=r.xmlunmarshaller.unmarshalString(e);return r.wpsmarshaller.unmarshalProcessDescription(t.value)})))},e.prototype.executeAsync=function(e,t,r,n,i,o,s){var l=this;void 0===i&&(i=1e3);var u=this.executeAsyncBasic(e,t,r,n).pipe(a.mergeMap((function(a){return h(l.getNextState(a,e,t,r,n),(function(e){if("Failed"===e.status)throw new Error("Error during execution of process "+t+": "+e.statusLocation);return"Succeeded"===e.status}),o,i)})),a.mergeMap((function(a){return l.fetchResults(a,e,t,r,n,s)})),a.tap((function(e){var t,r;try{for(var a=p(e),n=a.next();!n.done;n=a.next()){var i=n.value;if("error"===i.description.type)throw console.log("server responded with 200, but body contained an error-result: ",i),new Error(i.value)}}catch(e){t={error:e}}finally{try{n&&!n.done&&(r=a.return)&&r.call(a)}finally{if(t)throw t.error}}})));return this.cachedQuery(e,t,r,n,u)},e.prototype.cachedQuery=function(e,t,n,i,o){var s=this;return this.cache.get({url:e,processId:t,inputs:n,outputs:i}).pipe(a.switchMap((function(l){return l?r.of(l):o.pipe(a.tap((function(r){s.cache.set({url:e,processId:t,inputs:n,outputs:i},r).subscribe((function(e){console.log("set data in cache",e)}))})))})))},e.prototype.getNextState=function(e,t,r,n,i){var o,s=this;if("1.0.0"===this.version){if(!e.statusLocation)throw Error("No status location");o=this.getRaw(e.statusLocation)}else{if("2.0.0"!==this.version)throw new Error("'GetStatus' has not yet been implemented for this WPS-Version ("+this.version+").");if(!e.jobID)throw Error("No job-Id");var l=this.wpsmarshaller.marshallGetStatusBody(t,r,e.jobID),u=this.xmlmarshaller.marshalString(l);o=this.postRaw(t,u)}return o.pipe(d(2e3,2),a.map((function(e){var a=s.xmlunmarshaller.unmarshalString(e);return s.wpsmarshaller.unmarshalGetStateResponse(a,t,r,n,i)})))},e.prototype.fetchResults=function(e,t,n,i,o,s){var l=this;if(e.results){var u=void 0;return u=s?s(e.results):this.wpsmarshaller.unmarshalSyncExecuteResponse(e.results,t,n,i,o),r.of(u)}if(!e.jobID)throw new Error("You want me to get a result, but I can't find a jobId. I don't know what to do now!");var p=this.wpsmarshaller.marshallGetResultBody(t,n,e.jobID),c=this.xmlmarshaller.marshalString(p);return this.postRaw(t,c).pipe(a.map((function(e){var r=l.xmlunmarshaller.unmarshalString(e);return s?s(r):l.wpsmarshaller.unmarshalSyncExecuteResponse(r,t,n,i,o)})))},e.prototype.executeAsyncBasic=function(e,t,r,n){var i=this,o=this.wpsmarshaller.executeUrl(e,t),s=this.wpsmarshaller.marshalExecBody(t,r,n,!0),l=this.xmlmarshaller.marshalString(s);return this.postRaw(o,l).pipe(a.map((function(a){var o=i.xmlunmarshaller.unmarshalString(a);return i.wpsmarshaller.unmarshalAsyncExecuteResponse(o,e,t,r,n)})))},e.prototype.execute=function(e,t,r,n,i){var o=this,s=this.wpsmarshaller.executeUrl(e,t),l=this.wpsmarshaller.marshalExecBody(t,r,n,!1),u=this.xmlmarshaller.marshalString(l);return this.postRaw(s,u).pipe(a.map((function(a){var s=o.xmlunmarshaller.unmarshalString(a);return i?i(s):o.wpsmarshaller.unmarshalSyncExecuteResponse(s,e,t,r,n)})))},e.prototype.dismiss=function(e,t,r){var n=this,i=this.wpsmarshaller.dismissUrl(e,t,r),o=this.wpsmarshaller.marshalDismissBody(r),s=this.xmlmarshaller.marshalString(o);return this.postRaw(i,s).pipe(a.map((function(r){var a=n.xmlunmarshaller.unmarshalString(r);return n.wpsmarshaller.unmarshalDismissResponse(a,e,t)})))},e.prototype.postRaw=function(e,t){var r=this;return this.webclient.post(e,t,{headers:{"Content-Type":"text/xml",Accept:"text/xml, application/xml"},responseType:"text"}).pipe(d(2e3,2),a.tap((function(t){r.parseResponseForErrors(e,t)})),a.share())},e.prototype.getRaw=function(e){var t=this;return this.webclient.get(e,{headers:{Accept:"text/xml, application/xml"},responseType:"text"}).pipe(d(2e3,2),a.tap((function(r){t.parseResponseForErrors(e,r)})))},e.prototype.parseResponseForErrors=function(e,t){if(t.match("<title>404 Not Found</title>")||t.match("ows:ExceptionReport"))throw new Error("From "+e+": "+t)},e.prototype.setCache=function(e){this.cache=e},e}();e.FakeCache=v,e.WpsClient=S,e.delayedRetry=d,e.isBbox=function(e){return e.hasOwnProperty("crs")&&e.hasOwnProperty("lllon")&&e.hasOwnProperty("lllat")&&e.hasOwnProperty("urlon")&&e.hasOwnProperty("urlat")},e.isWpsState=function(e){return e&&e.hasOwnProperty("status")&&(e.hasOwnProperty("jobID")||e.hasOwnProperty("statusLocation"))},e.pollUntil=h,Object.defineProperty(e,"__esModule",{value:!0})}));
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("xmlserializer"),require("rxjs"),require("rxjs/operators"),require("w3c-schemas/lib/XLink_1_0"),require("ogc-schemas/lib/OWS_1_1_0"),require("ogc-schemas/lib/OWS_2_0"),require("ogc-schemas/lib/WPS_1_0_0"),require("ogc-schemas/lib/WPS_2_0"),require("@michaellangbein/jsonix"),require("ol/format")):"function"==typeof define&&define.amd?define("@dlr-eoc/utils-ogc",["exports","xmlserializer","rxjs","rxjs/operators","w3c-schemas/lib/XLink_1_0","ogc-schemas/lib/OWS_1_1_0","ogc-schemas/lib/OWS_2_0","ogc-schemas/lib/WPS_1_0_0","ogc-schemas/lib/WPS_2_0","@michaellangbein/jsonix","ol/format"],t):t(((e="undefined"!=typeof globalThis?globalThis:e||self)["dlr-eoc"]=e["dlr-eoc"]||{},e["dlr-eoc"]["utils-ogc"]={}),e.xmlserializer,e.rxjs,e.rxjs.operators,e.XLink_1_0_Factory,e.OWS_1_1_0_Factory,e.OWS_2_0_Factory,e.WPS_1_0_0_Factory,e.WPS_2_0_Factory,e.JsonixFactory,e.format)}(this,(function(e,t,r,a,n,i,o,s,l,u,p){"use strict";function c(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(r){if("default"!==r){var a=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,a.get?a:{enumerable:!0,get:function(){return e[r]}})}})),t.default=e,Object.freeze(t)}var f=c(t),m=c(n),h=c(i),d=c(o),v=c(s),y=c(l),w=c(u);Object.create;function x(e){var t="function"==typeof Symbol&&Symbol.iterator,r=t&&e[t],a=0;if(r)return r.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&a>=e.length&&(e=void 0),{value:e&&e[a++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}Object.create;var b=function(){function e(){}return e.prototype.getCapabilitiesUrl=function(e){return e+"?service=WPS&request=GetCapabilities&version=1.0.0"},e.prototype.getDescribeProcessUrl=function(e,t){return e+"?service=WPS&request=DescribeProcess&version=1.0.0&Identifier="+t},e.prototype.executeUrl=function(e,t){return e+"?service=WPS&request=Execute&version=1.0.0&identifier="+t},e.prototype.unmarshalCapabilities=function(e){var t=[];return e.processOfferings.process.forEach((function(e){t.push({id:e.identifier.value})})),t},e.prototype.unmarshalProcessDescription=function(e){var t,r,a,n,i,o=e.processDescription[0],s=[];try{for(var l=x(o.dataInputs.input),u=l.next();!u.done;u=l.next()){var p=u.value;s.push({description:this.unmarshalInputDescription(p),value:null})}}catch(e){t={error:e}}finally{try{u&&!u.done&&(r=l.return)&&r.call(l)}finally{if(t)throw t.error}}var c=[];try{for(var f=x(o.processOutputs.output),m=f.next();!m.done;m=f.next()){var h=m.value;c.push({description:this.unmarshalOutputDescription(h),value:null})}}catch(e){a={error:e}}finally{try{m&&!m.done&&(n=f.return)&&n.call(f)}finally{if(a)throw a.error}}return{id:o.identifier.value,processVersion:o.processVersion,description:null===(i=o._abstract)||void 0===i?void 0:i.value,title:o.title.value,inputs:s,outputs:c}},e.prototype.unmarshalSyncExecuteResponse=function(e,t,r,a,n){var i,o,s=[];if(e.value.status.processFailed)s.push({description:{id:e.value.process.identifier.value,title:e.value.process.title.value,reference:!0,type:"error"},value:e.value.statusLocation});else if(e.value.processOutputs)try{for(var l=x(e.value.processOutputs.output),u=l.next();!u.done;u=l.next()){var p=u.value,c=!!p.reference,f=void 0,m=void 0,h=void 0;p.reference?(f="complex",m=p.reference.href||null,h=p.reference.mimeType):(p.data&&p.data.literalData?(f="literal",h=p.data.literalData.dataType):p.data&&p.data.complexData?(f="complex",h=p.data.complexData.mimeType):(f="bbox",h=void 0),m=this.unmarshalOutputData(p.data)),s.push({description:{id:p.identifier.value,title:p.title.value,format:h,reference:c,type:f},value:m})}}catch(e){i={error:e}}finally{try{u&&!u.done&&(o=l.return)&&o.call(l)}finally{if(i)throw i.error}}else e.value.statusLocation&&s.push({description:{id:e.value.process.identifier.value,title:e.value.process.title.value,reference:!0,type:"status"},value:this.unmarshalGetStateResponse(e,t,r,a,n)});return s},e.prototype.unmarshalOutputData=function(e){if(e.complexData)switch("base64"===e.complexData.encoding&&("undefined"!=typeof module&&module.exports?e.complexData.content.map((function(e){return new Buffer(e,"base64").toString("ascii")})):e.complexData.content.map((function(e){return atob(e)}))),e.complexData.mimeType){case"application/vnd.geo+json":case"application/json":return e.complexData.content.map((function(e){return JSON.parse(e)}));case"application/WMS":return e.complexData.content;case"text/xml":case"application/xml":return f.serializeToString(e.complexData.content[0]);default:throw new Error("Cannot unmarshal data of format "+e.complexData.mimeType)}else if(e.literalData)switch(e.literalData.dataType){case"string":default:return e.literalData.value}throw new Error("Not yet implemented: "+e)},e.prototype.unmarshalInputDescription=function(e){var t,r,a,n;if(e.boundingBoxData)return{id:e.identifier.value,title:e.title.value,reference:!1,type:"bbox",description:null===(t=e._abstract)||void 0===t?void 0:t.value,format:"text/plain"};if(e.complexData)return{id:e.identifier.value,title:e.title.value,reference:e.storeSupported,type:"complex",description:null===(r=e._abstract)||void 0===r?void 0:r.value,format:e.complexData._default.format.mimeType};if(e.literalData)return{id:e.identifier.value,title:e.title.value,reference:!1,type:"literal",description:null===(a=e._abstract)||void 0===a?void 0:a.value,defaultValue:e.literalData.defaultValue,options:null===(n=e.literalData.allowedValues)||void 0===n?void 0:n.valueOrRange.map((function(e){return e.value})),format:"text/plain"};throw new Error("Cannot unmarshal the input-description for "+e.identifier.value)},e.prototype.unmarshalOutputDescription=function(e){if(e.complexOutput)return{id:e.identifier.value,title:e.title.value,reference:!0,type:"complex",format:e.complexOutput._default.format.mimeType};if(e.boundingBoxOutput)return{id:e.identifier.value,title:e.title.value,reference:!1,type:"bbox"};if(e.literalOutput)return{id:e.identifier.value,title:e.title.value,reference:!1,type:"literal"};throw new Error("Cannot unmarshal the input-description for "+e.identifier.value)},e.prototype.unmarshalAsyncExecuteResponse=function(e,t,r,a,n){return this.unmarshalGetStateResponse(e,t,r,a,n)},e.prototype.unmarshalGetStateResponse=function(e,t,r,a,n){var i=e.value,o={status:i.status.processSucceeded?"Succeeded":i.status.processAccepted?"Accepted":i.status.processStarted?"Running":(i.status.processFailed,"Failed"),statusLocation:i.statusLocation};return i.processOutputs&&i.processOutputs.output&&(o.results=e),o},e.prototype.marshalExecBody=function(e,t,r,a){return{name:{key:"{http://www.opengis.net/wps/1.0.0}Execute",localPart:"Execute",namespaceURI:"http://www.opengis.net/wps/1.0.0",prefix:"wps",string:"{http://www.opengis.net/wps/1.0.0}wps:Execute"},value:{dataInputs:this.marshalInputs(t),identifier:e,responseForm:this.marshalResponseForm(r,a),service:"WPS",version:"1.0.0"}}},e.prototype.marshalResponseForm=function(e,t){var r,a;void 0===t&&(t=!1);var n=[];try{for(var i=x(e),o=i.next();!o.done;o=i.next()){var s=o.value,l=void 0;switch(s.type){case"literal":case"complex":l={identifier:{value:s.id},asReference:s.reference,mimeType:s.format};break;default:throw new Error("This Wps-outputtype has not been implemented yet! "+s+" ")}n.push(l)}}catch(e){r={error:e}}finally{try{o&&!o.done&&(a=i.return)&&a.call(i)}finally{if(r)throw r.error}}return{responseDocument:{output:n,status:!!t,storeExecuteResponse:!!t}}},e.prototype.marshalInputs=function(e){var t,r,a=[];try{for(var n=x(e),i=n.next();!i.done;i=n.next()){var o=i.value;if(null===o.value||void 0===o.value)throw new Error("Value for input "+o.description.id+" is not set");var s=this.marshalInput(o);a.push(s)}}catch(e){t={error:e}}finally{try{i&&!i.done&&(r=n.return)&&r.call(n)}finally{if(t)throw t.error}}return{input:a}},e.prototype.marshalInput=function(e){var t={identifier:{value:e.description.id},title:{value:e.description.id},_abstract:{value:""}};return e.description.reference?t.reference=this.marshalReferenceInput(e):t.data=this.marshalDataInput(e),t},e.prototype.marshalDataInput=function(e){var t;switch(e.description.type){case"literal":t={literalData:{value:String(e.value)}};break;case"bbox":var r=e.value;t={boundingBoxData:{lowerCorner:[r.lllat,r.lllon],upperCorner:[r.urlat,r.urlon]}};break;case"complex":switch(e.description.format){case"text/xml":t={complexData:{content:[e.value],mimeType:e.description.format}};break;default:t={complexData:{content:[JSON.stringify(e.value)],mimeType:e.description.format}}}break;default:throw Error("This input is of type "+e.description.type+". We can only marshal input of type literal, bbox or complex.")}return t},e.prototype.marshalReferenceInput=function(e){return{href:e.value,method:"GET",mimeType:e.description.format}},e.prototype.marshallGetStatusBody=function(e,t,r){return{}},e.prototype.marshallGetResultBody=function(e,t,r){return{}},e.prototype.dismissUrl=function(e,t,r){throw new Error("Wps 1.0 does not support Dismiss-operations.")},e.prototype.marshalDismissBody=function(e){throw new Error("Wps 1.0 does not support Dismiss-operations.")},e.prototype.unmarshalDismissResponse=function(e,t,r){throw new Error("Wps 1.0 does not support Dismiss-operations.")},e}(),g=function(e){return e.hasOwnProperty("jobID")&&e.hasOwnProperty("status")},D=function(){function e(){}return e.prototype.getCapabilitiesUrl=function(e){return e+"?service=WPS&request=GetCapabilities&version=2.0.0"},e.prototype.getDescribeProcessUrl=function(e,t){return e+"?service=WPS&request=DescribeProcess&version=2.0.0&Identifier="+t},e.prototype.unmarshalProcessDescription=function(e){var t,r,a,n,i,o,s=e.processOffering[0],l=[];try{for(var u=x(s.process.input),p=u.next();!p.done;p=u.next()){var c=p.value;l.push({description:this.unmarshalInputDescription(c),value:null})}}catch(e){t={error:e}}finally{try{p&&!p.done&&(r=u.return)&&r.call(u)}finally{if(t)throw t.error}}var f=[];try{for(var m=x(s.process.output),h=m.next();!h.done;h=m.next()){var d=h.value;f.push({description:this.unmarshalOutputDescription(d),value:null})}}catch(e){a={error:e}}finally{try{h&&!h.done&&(n=m.return)&&n.call(m)}finally{if(a)throw a.error}}return{id:s.process.identifier.value,processVersion:s.processVersion||"",description:null===(i=s.process._abstract)||void 0===i?void 0:i.value,title:(null===(o=s.process.title)||void 0===o?void 0:o.value)||"",inputs:l,outputs:f}},e.prototype.unmarshalInputDescription=function(e){var t,r,a,n,i,o;if("BoundingBoxData"===e.dataDescription.name.localPart)return{id:e.identifier.value,title:e.title.value,reference:!1,type:"bbox",description:null===(t=e.abstract)||void 0===t?void 0:t.value};if("LiteralData"===e.dataDescription.name.localPart)return{id:e.identifier.value,title:e.title.value,reference:!1,type:"literal",defaultValue:null===(a=null===(r=e.dataDescription.value.literalDataDomain)||void 0===r?void 0:r.defaultValue)||void 0===a?void 0:a.value,options:null===(n=e.dataDescription.value.literalDataDomain)||void 0===n?void 0:n.allowedValues.valueOrRange.map((function(e){return e.value})),description:null===(i=e.abstract)||void 0===i?void 0:i.value};if("ComplexData"===e.dataDescription.name.localPart)return{id:e.identifier.value,title:e.title.value,reference:!0,type:"complex",format:e.dataDescription.value.format[0].mimeType,description:null===(o=e.abstract)||void 0===o?void 0:o.value};throw new Error("Cannot unmarshal input-description "+e.identifier.value)},e.prototype.unmarshalOutputDescription=function(e){var t,r,a;if("BoundingBoxData"===e.dataDescription.name.localPart)return{id:e.identifier.value,title:e.title.value,reference:!1,type:"bbox",description:null===(t=e.abstract)||void 0===t?void 0:t.value};if("LiteralData"===e.dataDescription.name.localPart)return{id:e.identifier.value,title:e.title.value,reference:!1,type:"literal",description:null===(r=e.abstract)||void 0===r?void 0:r.value};if("ComplexData"===e.dataDescription.name.localPart)return{id:e.identifier.value,title:e.title.value,reference:!0,type:"complex",format:e.dataDescription.value.format[0].mimeType,description:null===(a=e.abstract)||void 0===a?void 0:a.value};throw new Error("Cannot unmarshal input-description "+e.identifier.value)},e.prototype.executeUrl=function(e,t){return e+"?service=WPS&request=Execute&version=2.0.0&identifier="+t},e.prototype.unmarshalCapabilities=function(e){var t=[];return e.contents.processSummary.forEach((function(e){t.push({id:e.identifier.value})})),t},e.prototype.unmarshalSyncExecuteResponse=function(e,t,r,a,n){var i,o,s=[];if(e.value.hasOwnProperty("output")){var l=function(e){var t=n.find((function(t){return t.id===e.id}));if(!t)throw new Error("Could not find an output-description for the parameter "+e.id+".");var r=t.reference,a=t.type,i=t.format,o=void 0;if(e.reference)o=e.reference.href||null;else{if(!e.data)throw new Error("Output has neither reference nor data field.");o=u.unmarshalOutputData(e.data,t)}s.push({description:{id:e.id,title:t.title,format:i,reference:r,type:a},value:o})},u=this;try{for(var p=x(e.value.output),c=p.next();!c.done;c=p.next()){l(c.value)}}catch(e){i={error:e}}finally{try{c&&!c.done&&(o=p.return)&&o.call(p)}finally{if(i)throw i.error}}}else if(g(e.value)){var f={status:e.value.status,jobID:e.value.jobID,percentCompleted:e.value.percentCompleted};s.push({description:{id:r,title:"",reference:!0,type:"status"},value:f})}return s},e.prototype.unmarshalOutputData=function(e,t){if("complex"===t.type)switch("base64"===e.encoding&&("undefined"!=typeof module&&module.exports?e.content.map((function(e){return new Buffer(e,"base64").toString("ascii")})):e.content.map((function(e){return atob(e)}))),e.mimeType){case"application/vnd.geo+json":case"application/json":return e.content.map((function(e){return JSON.parse(e)}));case"application/WMS":return e.content;case"text/xml":case"application/xml":return f.serializeToString(e.content[0]);default:throw new Error("Cannot unmarshal complex data of format "+e.mimeType)}else if("literal"===t.type)return e.content;throw new Error("Not yet implemented: "+e)},e.prototype.unmarshalAsyncExecuteResponse=function(e,t,r,a,n){return this.unmarshalGetStateResponse(e,t,r,a,n)},e.prototype.unmarshalGetStateResponse=function(e,t,r,a,n){if(g(e.value))return{status:e.value.status,jobID:e.value.jobID,percentCompleted:e.value.percentCompleted};throw new Error("Not a status-info: "+e)},e.prototype.marshalExecBody=function(e,t,r,a){return{name:{key:"{http://www.opengis.net/wps/2.0}Execute",localPart:"Execute",namespaceURI:"http://www.opengis.net/wps/2.0",prefix:"wps",string:"{http://www.opengis.net/wps/2.0}wps:Execute"},value:{TYPE_NAME:"WPS_2_0.ExecuteRequestType",service:"WPS",version:"2.0.0",identifier:{value:e},input:this.marshalInputs(t),output:this.marshalOutputs(r),mode:a?"async":"sync",response:"document"}}},e.prototype.marshalInputs=function(e){return e.map((function(e){return e.description.reference?{id:e.description.id,reference:{href:e.value,mimeType:e.description.format}}:{id:e.description.id,data:{content:[JSON.stringify(e.value)],mimeType:e.description.format}}}))},e.prototype.marshalOutputs=function(e){return e.map((function(e){return{id:e.id,mimeType:e.format,transmission:e.reference?"reference":"value"}}))},e.prototype.marshallGetStatusBody=function(e,t,r){return{name:{key:"{http://www.opengis.net/wps/2.0}GetStatus",localPart:"GetStatus",namespaceURI:"http://www.opengis.net/wps/2.0",prefix:"wps",string:"{http://www.opengis.net/wps/2.0}wps:GetStatus"},value:{jobID:r,service:"WPS",version:"2.0.0"}}},e.prototype.marshallGetResultBody=function(e,t,r){return{name:{key:"{http://www.opengis.net/wps/2.0}GetResult",localPart:"GetResult",namespaceURI:"http://www.opengis.net/wps/2.0",prefix:"wps",string:"{http://www.opengis.net/wps/2.0}wps:GetResult"},value:{service:"WPS",version:"2.0.0",jobID:r}}},e.prototype.dismissUrl=function(e,t,r){return e},e.prototype.marshalDismissBody=function(e){return{name:{key:"{http://www.opengis.net/wps/2.0}Dismiss",localPart:"Dismiss",namespaceURI:"http://www.opengis.net/wps/2.0",prefix:"wps",string:"{http://www.opengis.net/wps/2.0}wps:Dismiss"},value:{jobID:e,service:"WPS",version:"2.0.0"}}},e.prototype.unmarshalDismissResponse=function(e,t,r){return{status:e.value.status,jobID:e.value.jobID}},e}();function S(e,t,n,i){void 0===i&&(i=1e3),n&&n(null);var o=e.pipe(a.tap((function(e){n&&n(e)}))),s=r.forkJoin(o,r.timer(i)).pipe(a.map((function(e){return e[0]}))).pipe(a.mergeMap((function(e){return t(e)?r.of(e):s})));return s}function _(e,t){void 0===t&&(t=3);var n=1;return function(i){return i.pipe(a.retryWhen((function(i){return i.pipe(a.delay(e),a.mergeMap((function(e){if(e.status&&400===e.status)throw e;if(n<=t)return console.log("http-error. Retrying ..."),n+=1,r.of(e);throw console.log("Persistent http-errors after "+n+" attempts. Giving up."),e})))})))}}var E=function(){function e(){}return e.prototype.set=function(e,t){return r.of(!0)},e.prototype.get=function(e){return r.of(null)},e}(),R=m.XLink_1_0,O=h.OWS_1_1_0,P=d.OWS_2_0,I=v.WPS_1_0_0,W=y.WPS_2_0,C=w.Jsonix,j=function(){function e(e,t,r){var a;if(void 0===e&&(e="1.0.0"),this.webclient=t,this.cache=new E,this.version=e,r&&(this.cache=r),"1.0.0"===this.version)this.wpsmarshaller=new b,a=new C.Context([R,O,I]);else{if("2.0.0"!==this.version)throw new Error("You entered a WPS version other than 1.0.0 or 2.0.0.");this.wpsmarshaller=new D,a=new C.Context([R,P,W])}this.xmlunmarshaller=a.createUnmarshaller(),this.xmlmarshaller=a.createMarshaller()}return e.prototype.getCapabilities=function(e){var t=this,r=this.wpsmarshaller.getCapabilitiesUrl(e);return this.getRaw(r).pipe(a.map((function(e){var r=t.xmlunmarshaller.unmarshalString(e);return t.wpsmarshaller.unmarshalCapabilities(r.value)})))},e.prototype.describeProcess=function(e,t){var r=this,n=this.wpsmarshaller.getDescribeProcessUrl(e,t);return this.getRaw(n).pipe(a.map((function(e){var t=r.xmlunmarshaller.unmarshalString(e);return r.wpsmarshaller.unmarshalProcessDescription(t.value)})))},e.prototype.executeAsync=function(e,t,r,n,i,o,s){var l=this;void 0===i&&(i=1e3);var u=this.executeAsyncBasic(e,t,r,n).pipe(a.mergeMap((function(a){return S(l.getNextState(a,e,t,r,n),(function(e){if("Failed"===e.status)throw new Error("Error during execution of process "+t+": "+e.statusLocation);return"Succeeded"===e.status}),o,i)})),a.mergeMap((function(a){return l.fetchResults(a,e,t,r,n,s)})),a.tap((function(e){var t,r;try{for(var a=x(e),n=a.next();!n.done;n=a.next()){var i=n.value;if("error"===i.description.type)throw console.log("server responded with 200, but body contained an error-result: ",i),new Error(i.value)}}catch(e){t={error:e}}finally{try{n&&!n.done&&(r=a.return)&&r.call(a)}finally{if(t)throw t.error}}})));return this.cachedQuery(e,t,r,n,u)},e.prototype.cachedQuery=function(e,t,n,i,o){var s=this;return this.cache.get({url:e,processId:t,inputs:n,outputs:i}).pipe(a.switchMap((function(l){return l?r.of(l):o.pipe(a.tap((function(r){s.cache.set({url:e,processId:t,inputs:n,outputs:i},r).subscribe((function(e){console.log("set data in cache",e)}))})))})))},e.prototype.getNextState=function(e,t,r,n,i){var o,s=this;if("1.0.0"===this.version){if(!e.statusLocation)throw Error("No status location");o=this.getRaw(e.statusLocation)}else{if("2.0.0"!==this.version)throw new Error("'GetStatus' has not yet been implemented for this WPS-Version ("+this.version+").");if(!e.jobID)throw Error("No job-Id");var l=this.wpsmarshaller.marshallGetStatusBody(t,r,e.jobID),u=this.xmlmarshaller.marshalString(l);o=this.postRaw(t,u)}return o.pipe(_(2e3,2),a.map((function(e){var a=s.xmlunmarshaller.unmarshalString(e);return s.wpsmarshaller.unmarshalGetStateResponse(a,t,r,n,i)})))},e.prototype.fetchResults=function(e,t,n,i,o,s){var l=this;if(e.results){var u=void 0;return u=s?s(e.results):this.wpsmarshaller.unmarshalSyncExecuteResponse(e.results,t,n,i,o),r.of(u)}if(!e.jobID)throw new Error("You want me to get a result, but I can't find a jobId. I don't know what to do now!");var p=this.wpsmarshaller.marshallGetResultBody(t,n,e.jobID),c=this.xmlmarshaller.marshalString(p);return this.postRaw(t,c).pipe(a.map((function(e){var r=l.xmlunmarshaller.unmarshalString(e);return s?s(r):l.wpsmarshaller.unmarshalSyncExecuteResponse(r,t,n,i,o)})))},e.prototype.executeAsyncBasic=function(e,t,r,n){var i=this,o=this.wpsmarshaller.executeUrl(e,t),s=this.wpsmarshaller.marshalExecBody(t,r,n,!0),l=this.xmlmarshaller.marshalString(s);return this.postRaw(o,l).pipe(a.map((function(a){var o=i.xmlunmarshaller.unmarshalString(a);return i.wpsmarshaller.unmarshalAsyncExecuteResponse(o,e,t,r,n)})))},e.prototype.execute=function(e,t,r,n,i){var o=this,s=this.wpsmarshaller.executeUrl(e,t),l=this.wpsmarshaller.marshalExecBody(t,r,n,!1),u=this.xmlmarshaller.marshalString(l);return this.postRaw(s,u).pipe(a.map((function(a){var s=o.xmlunmarshaller.unmarshalString(a);return i?i(s):o.wpsmarshaller.unmarshalSyncExecuteResponse(s,e,t,r,n)})))},e.prototype.dismiss=function(e,t,r){var n=this,i=this.wpsmarshaller.dismissUrl(e,t,r),o=this.wpsmarshaller.marshalDismissBody(r),s=this.xmlmarshaller.marshalString(o);return this.postRaw(i,s).pipe(a.map((function(r){var a=n.xmlunmarshaller.unmarshalString(r);return n.wpsmarshaller.unmarshalDismissResponse(a,e,t)})))},e.prototype.postRaw=function(e,t){var r=this;return this.webclient.post(e,t,{headers:{"Content-Type":"text/xml",Accept:"text/xml, application/xml"},responseType:"text"}).pipe(_(2e3,2),a.tap((function(t){r.parseResponseForErrors(e,t)})),a.share())},e.prototype.getRaw=function(e){var t=this;return this.webclient.get(e,{headers:{Accept:"text/xml, application/xml"},responseType:"text"}).pipe(_(2e3,2),a.tap((function(r){t.parseResponseForErrors(e,r)})))},e.prototype.parseResponseForErrors=function(e,t){if(t.match("<title>404 Not Found</title>")||t.match("ows:ExceptionReport"))throw new Error("From "+e+": "+t)},e.prototype.setCache=function(e){this.cache=e},e}();var T=function(){function e(e){this.http=e,this.parser=new p.WMSCapabilities}return e.prototype.getCapabilities=function(e,t){var r=this;void 0===t&&(t="1.1.0");var n=e+"?SERVICE=WMS&REQUEST=GetCapabilities&VERSION="+t;return this.http.get(n,{headers:{"Content-Type":"text/xml",Accept:"text/xml, application/xml"},responseType:"text"}).pipe(a.map((function(e){return r.parser.read(e)})))},e.prototype.getLayerFromCapabilities=function(e,t){var r=t.Capability.Layer;return this.getLayerFromCapabilitiesLayer(e,r)},e.prototype.getLayerFromCapabilitiesLayer=function(e,t){var r=this,a=t;return a?a.Name&&a.Name===e?a:a.Layer&&Array.isArray(a.Layer)?a.Layer.find((function(t){return r.getLayerFromCapabilitiesLayer(e,t)})):a.Layer&&a.Layer.Name&&a.Layer.Name===e?a.Layer:void 0:null},e.prototype.getTimeDimensionFromLayer=function(e){var t;return null===(t=e.Dimension)||void 0===t?void 0:t.find((function(e){return"time"===e.name}))},e}();e.FakeCache=E,e.WmsClient=T,e.WpsClient=j,e.delayedRetry=_,e.isBbox=function(e){return e.hasOwnProperty("crs")&&e.hasOwnProperty("lllon")&&e.hasOwnProperty("lllat")&&e.hasOwnProperty("urlon")&&e.hasOwnProperty("urlat")},e.isWpsState=function(e){return e&&e.hasOwnProperty("status")&&(e.hasOwnProperty("jobID")||e.hasOwnProperty("statusLocation"))},e.pollUntil=S,Object.defineProperty(e,"__esModule",{value:!0})}));
//# sourceMappingURL=dlr-eoc-utils-ogc.umd.min.js.map

@@ -5,1 +5,2 @@ /**

export * from './public-api';
export { HttpClient as ɵa } from './lib/httpClient/httpclient';

@@ -1,1 +0,1 @@

{"__symbolic":"module","version":4,"metadata":{"WpsHttpClientRequestParameters":{"__symbolic":"interface"},"WpsHttpClient":{"__symbolic":"interface"},"WpsClient":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"WpsVersion"},{"__symbolic":"reference","name":"any"},{"__symbolic":"reference","name":"Cache"}]}],"getCapabilities":[{"__symbolic":"method"}],"describeProcess":[{"__symbolic":"method"}],"executeAsync":[{"__symbolic":"method"}],"cachedQuery":[{"__symbolic":"method"}],"getNextState":[{"__symbolic":"method"}],"fetchResults":[{"__symbolic":"method"}],"executeAsyncBasic":[{"__symbolic":"method"}],"execute":[{"__symbolic":"method"}],"dismiss":[{"__symbolic":"method"}],"postRaw":[{"__symbolic":"method"}],"getRaw":[{"__symbolic":"method"}],"parseResponseForErrors":[{"__symbolic":"method"}],"setCache":[{"__symbolic":"method"}]}},"WpsVersion":{"__symbolic":"interface"},"WpsDataFormat":{"__symbolic":"interface"},"ProcessId":{"__symbolic":"interface"},"ProductId":{"__symbolic":"interface"},"WpsDataDescription":{"__symbolic":"interface"},"WpsInputDescription":{"__symbolic":"interface"},"WpsOutputDescription":{"__symbolic":"interface"},"WpsData":{"__symbolic":"interface"},"WpsInput":{"__symbolic":"interface"},"WpsResult":{"__symbolic":"interface"},"WpsBboxDescription":{"__symbolic":"interface"},"WpsBboxValue":{"__symbolic":"interface"},"isBbox":{"__symbolic":"error","message":"Lambda not supported","line":47,"character":22,"module":"./lib/wps/wps_datatypes"},"WpsState":{"__symbolic":"interface"},"isWpsState":{"__symbolic":"function","parameters":["obj"],"value":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"reference","name":"obj"},"right":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"obj"},"member":"hasOwnProperty"},"arguments":["status"]}},"right":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"obj"},"member":"hasOwnProperty"},"arguments":["jobID"]},"right":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"obj"},"member":"hasOwnProperty"},"arguments":["statusLocation"]}}}},"WpsBboxData":{"__symbolic":"interface"},"WpsCapability":{"__symbolic":"interface"},"WpsProcessDescription":{"__symbolic":"interface"},"WpsServerDescription":{"__symbolic":"interface"},"WpsMarshaller":{"__symbolic":"interface"},"Cache":{"__symbolic":"interface"},"FakeCache":{"__symbolic":"class","members":{"set":[{"__symbolic":"method"}],"get":[{"__symbolic":"method"}]}},"pollUntil":{"__symbolic":"function"},"delayedRetry":{"__symbolic":"function"}},"origins":{"WpsHttpClientRequestParameters":"./lib/wps/wpsclient","WpsHttpClient":"./lib/wps/wpsclient","WpsClient":"./lib/wps/wpsclient","WpsVersion":"./lib/wps/wps_datatypes","WpsDataFormat":"./lib/wps/wps_datatypes","ProcessId":"./lib/wps/wps_datatypes","ProductId":"./lib/wps/wps_datatypes","WpsDataDescription":"./lib/wps/wps_datatypes","WpsInputDescription":"./lib/wps/wps_datatypes","WpsOutputDescription":"./lib/wps/wps_datatypes","WpsData":"./lib/wps/wps_datatypes","WpsInput":"./lib/wps/wps_datatypes","WpsResult":"./lib/wps/wps_datatypes","WpsBboxDescription":"./lib/wps/wps_datatypes","WpsBboxValue":"./lib/wps/wps_datatypes","isBbox":"./lib/wps/wps_datatypes","WpsState":"./lib/wps/wps_datatypes","isWpsState":"./lib/wps/wps_datatypes","WpsBboxData":"./lib/wps/wps_datatypes","WpsCapability":"./lib/wps/wps_datatypes","WpsProcessDescription":"./lib/wps/wps_datatypes","WpsServerDescription":"./lib/wps/wps_datatypes","WpsMarshaller":"./lib/wps/wps_datatypes","Cache":"./lib/wps/cache","FakeCache":"./lib/wps/cache","pollUntil":"./lib/wps/utils/polling","delayedRetry":"./lib/wps/utils/polling"},"importAs":"@dlr-eoc/utils-ogc"}
{"__symbolic":"module","version":4,"metadata":{"WpsClient":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"WpsVersion"},{"__symbolic":"reference","name":"ɵa"},{"__symbolic":"reference","name":"Cache"}]}],"getCapabilities":[{"__symbolic":"method"}],"describeProcess":[{"__symbolic":"method"}],"executeAsync":[{"__symbolic":"method"}],"cachedQuery":[{"__symbolic":"method"}],"getNextState":[{"__symbolic":"method"}],"fetchResults":[{"__symbolic":"method"}],"executeAsyncBasic":[{"__symbolic":"method"}],"execute":[{"__symbolic":"method"}],"dismiss":[{"__symbolic":"method"}],"postRaw":[{"__symbolic":"method"}],"getRaw":[{"__symbolic":"method"}],"parseResponseForErrors":[{"__symbolic":"method"}],"setCache":[{"__symbolic":"method"}]}},"WpsVersion":{"__symbolic":"interface"},"WpsDataFormat":{"__symbolic":"interface"},"ProcessId":{"__symbolic":"interface"},"ProductId":{"__symbolic":"interface"},"WpsDataDescription":{"__symbolic":"interface"},"WpsInputDescription":{"__symbolic":"interface"},"WpsOutputDescription":{"__symbolic":"interface"},"WpsData":{"__symbolic":"interface"},"WpsInput":{"__symbolic":"interface"},"WpsResult":{"__symbolic":"interface"},"WpsBboxDescription":{"__symbolic":"interface"},"WpsBboxValue":{"__symbolic":"interface"},"isBbox":{"__symbolic":"error","message":"Lambda not supported","line":47,"character":22,"module":"./lib/wps/wps_datatypes"},"WpsState":{"__symbolic":"interface"},"isWpsState":{"__symbolic":"function","parameters":["obj"],"value":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"binop","operator":"&&","left":{"__symbolic":"reference","name":"obj"},"right":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"obj"},"member":"hasOwnProperty"},"arguments":["status"]}},"right":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"obj"},"member":"hasOwnProperty"},"arguments":["jobID"]},"right":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"obj"},"member":"hasOwnProperty"},"arguments":["statusLocation"]}}}},"WpsBboxData":{"__symbolic":"interface"},"WpsCapability":{"__symbolic":"interface"},"WpsProcessDescription":{"__symbolic":"interface"},"WpsServerDescription":{"__symbolic":"interface"},"WpsMarshaller":{"__symbolic":"interface"},"Cache":{"__symbolic":"interface"},"FakeCache":{"__symbolic":"class","members":{"set":[{"__symbolic":"method"}],"get":[{"__symbolic":"method"}]}},"pollUntil":{"__symbolic":"function"},"delayedRetry":{"__symbolic":"function"},"WmsVersion":{"__symbolic":"interface"},"WmsClient":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵa"}]}],"getCapabilities":[{"__symbolic":"method"}],"getLayerFromCapabilities":[{"__symbolic":"method"}],"getLayerFromCapabilitiesLayer":[{"__symbolic":"method"}],"getTimeDimensionFromLayer":[{"__symbolic":"method"}]}},"ɵa":{"__symbolic":"interface"}},"origins":{"WpsClient":"./lib/wps/wpsclient","WpsVersion":"./lib/wps/wps_datatypes","WpsDataFormat":"./lib/wps/wps_datatypes","ProcessId":"./lib/wps/wps_datatypes","ProductId":"./lib/wps/wps_datatypes","WpsDataDescription":"./lib/wps/wps_datatypes","WpsInputDescription":"./lib/wps/wps_datatypes","WpsOutputDescription":"./lib/wps/wps_datatypes","WpsData":"./lib/wps/wps_datatypes","WpsInput":"./lib/wps/wps_datatypes","WpsResult":"./lib/wps/wps_datatypes","WpsBboxDescription":"./lib/wps/wps_datatypes","WpsBboxValue":"./lib/wps/wps_datatypes","isBbox":"./lib/wps/wps_datatypes","WpsState":"./lib/wps/wps_datatypes","isWpsState":"./lib/wps/wps_datatypes","WpsBboxData":"./lib/wps/wps_datatypes","WpsCapability":"./lib/wps/wps_datatypes","WpsProcessDescription":"./lib/wps/wps_datatypes","WpsServerDescription":"./lib/wps/wps_datatypes","WpsMarshaller":"./lib/wps/wps_datatypes","Cache":"./lib/wps/cache","FakeCache":"./lib/wps/cache","pollUntil":"./lib/wps/utils/polling","delayedRetry":"./lib/wps/utils/polling","WmsVersion":"./lib/wms/wms.service","WmsClient":"./lib/wms/wms.service","ɵa":"./lib/httpClient/httpclient"},"importAs":"@dlr-eoc/utils-ogc"}

@@ -5,2 +5,2 @@ /**

export * from './public-api';
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGxyLWVvYy11dGlscy1vZ2MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wcm9qZWN0cy91dGlscy1vZ2Mvc3JjL2Rsci1lb2MtdXRpbHMtb2djLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljLWFwaSc7XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGxyLWVvYy11dGlscy1vZ2MuanMiLCJzb3VyY2VSb290IjoiL2hvbWUvcnVubmVyL3dvcmsvdWtpcy1mcm9udGVuZC1saWJyYXJpZXMvdWtpcy1mcm9udGVuZC1saWJyYXJpZXMvcHJvamVjdHMvdXRpbHMtb2djL3NyYy8iLCJzb3VyY2VzIjpbImRsci1lb2MtdXRpbHMtb2djLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljLWFwaSc7XG5cbmV4cG9ydCB7SHR0cENsaWVudCBhcyDJtWF9IGZyb20gJy4vbGliL2h0dHBDbGllbnQvaHR0cGNsaWVudCc7Il19

@@ -10,2 +10,2 @@ import { of } from 'rxjs';

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91dGlscy1vZ2Mvc3JjL2xpYi93cHMvY2FjaGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQVF0QyxNQUFNLE9BQU8sU0FBUztJQUNsQixHQUFHLENBQUMsS0FBYSxFQUFFLE1BQWlCO1FBQ2hDLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BCLENBQUM7SUFFRCxHQUFHLENBQUMsS0FBYTtRQUNiLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFdwc0RhdGEgfSBmcm9tICcuL3dwc19kYXRhdHlwZXMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcblxuXG5leHBvcnQgaW50ZXJmYWNlIENhY2hlIHtcbiAgICBzZXQoaW5wdXQ6IGFueSwgb3V0cHV0OiBhbnkpOiBPYnNlcnZhYmxlPGFueT47XG4gICAgZ2V0KGlucHV0OiBhbnkpOiBPYnNlcnZhYmxlPGFueT47XG59XG5cbmV4cG9ydCBjbGFzcyBGYWtlQ2FjaGUgaW1wbGVtZW50cyBDYWNoZSB7XG4gICAgc2V0KGlucHV0OiBvYmplY3QsIG91dHB1dDogV3BzRGF0YVtdKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgICAgIHJldHVybiBvZih0cnVlKTtcbiAgICB9XG5cbiAgICBnZXQoaW5wdXQ6IG9iamVjdCk6IE9ic2VydmFibGU8V3BzRGF0YVtdIHwgbnVsbD4ge1xuICAgICAgICByZXR1cm4gb2YobnVsbCk7XG4gICAgfVxufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGUuanMiLCJzb3VyY2VSb290IjoiL2hvbWUvcnVubmVyL3dvcmsvdWtpcy1mcm9udGVuZC1saWJyYXJpZXMvdWtpcy1mcm9udGVuZC1saWJyYXJpZXMvcHJvamVjdHMvdXRpbHMtb2djL3NyYy8iLCJzb3VyY2VzIjpbImxpYi93cHMvY2FjaGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQVF0QyxNQUFNLE9BQU8sU0FBUztJQUNsQixHQUFHLENBQUMsS0FBYSxFQUFFLE1BQWlCO1FBQ2hDLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BCLENBQUM7SUFFRCxHQUFHLENBQUMsS0FBYTtRQUNiLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFdwc0RhdGEgfSBmcm9tICcuL3dwc19kYXRhdHlwZXMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcblxuXG5leHBvcnQgaW50ZXJmYWNlIENhY2hlIHtcbiAgICBzZXQoaW5wdXQ6IGFueSwgb3V0cHV0OiBhbnkpOiBPYnNlcnZhYmxlPGFueT47XG4gICAgZ2V0KGlucHV0OiBhbnkpOiBPYnNlcnZhYmxlPGFueT47XG59XG5cbmV4cG9ydCBjbGFzcyBGYWtlQ2FjaGUgaW1wbGVtZW50cyBDYWNoZSB7XG4gICAgc2V0KGlucHV0OiBvYmplY3QsIG91dHB1dDogV3BzRGF0YVtdKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgICAgIHJldHVybiBvZih0cnVlKTtcbiAgICB9XG5cbiAgICBnZXQoaW5wdXQ6IG9iamVjdCk6IE9ic2VydmFibGU8V3BzRGF0YVtdIHwgbnVsbD4ge1xuICAgICAgICByZXR1cm4gb2YobnVsbCk7XG4gICAgfVxufVxuIl19

@@ -50,2 +50,2 @@ import { timer, of, forkJoin } from 'rxjs';

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9sbGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3V0aWxzLW9nYy9zcmMvbGliL3dwcy91dGlscy9wb2xsaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxLQUFLLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2RCxPQUFPLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBS3RFLE1BQU0sVUFBVSxTQUFTLENBQ3ZCLEtBQW9CLEVBQUUsU0FBb0MsRUFBRSxPQUE4QixFQUFFLGNBQXNCLElBQUk7SUFFdEgsSUFBSSxPQUFPLEVBQUU7UUFDWCxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDZjtJQUVELE1BQU0sV0FBVyxHQUFrQixLQUFLLENBQUMsSUFBSSxDQUMzQyxHQUFHLENBQUMsQ0FBQyxDQUFNLEVBQUUsRUFBRTtRQUNiLElBQUksT0FBTyxFQUFFO1lBQ1gsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ1o7SUFDSCxDQUFDLENBQUMsQ0FDSCxDQUFDO0lBRUYsTUFBTSxvQkFBb0IsR0FBa0IsUUFBUSxDQUFDLFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQ3hGLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUNmLENBQUM7SUFFRixNQUFNLGNBQWMsR0FBa0Isb0JBQW9CLENBQUMsSUFBSSxDQUM3RCxRQUFRLENBQUMsQ0FBQyxRQUFhLEVBQUUsRUFBRTtRQUN6QixJQUFJLFNBQVMsQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUN2QixzREFBc0Q7WUFDdEQsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDckI7YUFBTTtZQUNMLHFFQUFxRTtZQUNyRSxPQUFPLGNBQWMsQ0FBQztTQUN2QjtJQUNILENBQUMsQ0FBQyxDQUNILENBQUM7SUFFRixPQUFPLGNBQWMsQ0FBQztBQUN4QixDQUFDO0FBR0QsTUFBTSxVQUFVLFlBQVksQ0FBQyxPQUFlLEVBQUUsVUFBVSxHQUFHLENBQUM7SUFDMUQsSUFBSSxRQUFRLEdBQUcsQ0FBQyxDQUFDO0lBRWpCLE9BQU8sQ0FBQyxJQUFxQixFQUFFLEVBQUU7UUFDL0IsT0FBTyxJQUFJLENBQUMsSUFBSTtRQUNkLHlCQUF5QjtRQUN6QixTQUFTLENBQUMsQ0FBQyxNQUF1QixFQUFFLEVBQUU7WUFDcEMsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUNoQixLQUFLLENBQUMsT0FBTyxDQUFDLEVBQUUsZ0RBQWdEO1lBQ2hFLFFBQVEsQ0FBQyxDQUFDLEtBQVUsRUFBRSxFQUFFO2dCQUN0QixJQUFJLEtBQUssQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxHQUFHLEVBQUU7b0JBQ3hDLG1EQUFtRDtvQkFDbkQsTUFBTSxLQUFLLENBQUM7aUJBQ2I7cUJBQU0sSUFBSSxRQUFRLElBQUksVUFBVSxFQUFFO29CQUNqQyxPQUFPLENBQUMsR0FBRyxDQUFDLDBCQUEwQixDQUFDLENBQUM7b0JBQ3hDLFFBQVEsSUFBSSxDQUFDLENBQUM7b0JBQ2QsT0FBTyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxnREFBZ0Q7aUJBQ25FO3FCQUFNO29CQUNMLE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0NBQWdDLFFBQVEsdUJBQXVCLENBQUMsQ0FBQztvQkFDN0UsTUFBTSxLQUFLLENBQUMsQ0FBQyw2Q0FBNkM7aUJBQzNEO1lBQ0gsQ0FBQyxDQUFDLENBQ0gsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDLENBQUM7QUFFSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSwgdGltZXIsIG9mLCBmb3JrSm9pbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFwLCBtYXAsIG1lcmdlTWFwLCByZXRyeVdoZW4sIGRlbGF5IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5cblxuXG5leHBvcnQgZnVuY3Rpb24gcG9sbFVudGlsPFQ+KFxuICB0YXNrJDogT2JzZXJ2YWJsZTxUPiwgcHJlZGljYXRlOiAocmVzdWx0czogYW55KSA9PiBib29sZWFuLCBkb1doaWxlPzogKHQ6IFQgfCBudWxsKSA9PiBhbnksIG1pbldhaXRUaW1lOiBudW1iZXIgPSAxMDAwKTogT2JzZXJ2YWJsZTxUPiB7XG5cbiAgaWYgKGRvV2hpbGUpIHtcbiAgICBkb1doaWxlKG51bGwpO1xuICB9XG5cbiAgY29uc3QgdGFwcGVkVGFzayQ6IE9ic2VydmFibGU8VD4gPSB0YXNrJC5waXBlKFxuICAgIHRhcCgocjogYW55KSA9PiB7XG4gICAgICBpZiAoZG9XaGlsZSkge1xuICAgICAgICBkb1doaWxlKHIpO1xuICAgICAgfVxuICAgIH0pXG4gICk7XG5cbiAgY29uc3QgcmVxdWVzdFRha2VzQXRMZWFzdCQ6IE9ic2VydmFibGU8VD4gPSBmb3JrSm9pbih0YXBwZWRUYXNrJCwgdGltZXIobWluV2FpdFRpbWUpKS5waXBlKFxuICAgIG1hcChyID0+IHJbMF0pXG4gICk7XG5cbiAgY29uc3QgcG9sbGVkUmVxdWVzdCQ6IE9ic2VydmFibGU8VD4gPSByZXF1ZXN0VGFrZXNBdExlYXN0JC5waXBlKFxuICAgIG1lcmdlTWFwKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICBpZiAocHJlZGljYXRlKHJlc3BvbnNlKSkge1xuICAgICAgICAvLyBjb25zb2xlLmxvZyhgb2J0YWluZWQgY29ycmVjdCBhbnN3ZXIgJHtyZXNwb25zZX1gKTtcbiAgICAgICAgcmV0dXJuIG9mKHJlc3BvbnNlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKGBvYnRhaW5lZCBmYWxzZSBhbnN3ZXIgJHtyZXNwb25zZX0uIHRyeWluZyBhZ2Fpbi4uLmApO1xuICAgICAgICByZXR1cm4gcG9sbGVkUmVxdWVzdCQ7XG4gICAgICB9XG4gICAgfSlcbiAgKTtcblxuICByZXR1cm4gcG9sbGVkUmVxdWVzdCQ7XG59XG5cblxuZXhwb3J0IGZ1bmN0aW9uIGRlbGF5ZWRSZXRyeShkZWxheU1zOiBudW1iZXIsIG1heFJldHJpZXMgPSAzKSB7XG4gIGxldCBhdHRlbXB0cyA9IDE7XG5cbiAgcmV0dXJuIChzcmMkOiBPYnNlcnZhYmxlPGFueT4pID0+IHtcbiAgICByZXR1cm4gc3JjJC5waXBlKFxuICAgICAgLy8gSWYgYW4gZXJyb3Igb2NjdXJzIC4uLlxuICAgICAgcmV0cnlXaGVuKChlcnJvciQ6IE9ic2VydmFibGU8YW55PikgPT4ge1xuICAgICAgICByZXR1cm4gZXJyb3IkLnBpcGUoXG4gICAgICAgICAgZGVsYXkoZGVsYXlNcyksIC8vIDwtIGluIGFueSBjYXNlLCBmaXJzdCB3YWl0IGEgbGl0dGxlIHdoaWxlIC4uLlxuICAgICAgICAgIG1lcmdlTWFwKChlcnJvcjogYW55KSA9PiB7XG4gICAgICAgICAgICBpZiAoZXJyb3Iuc3RhdHVzICYmIGVycm9yLnN0YXR1cyA9PT0gNDAwKSB7XG4gICAgICAgICAgICAgIC8vIEluIGNhc2Ugb2YgYSBzZXJ2ZXIgZXJyb3IsIHJlcGVhdGluZyB3b24ndCBoZWxwLlxuICAgICAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoYXR0ZW1wdHMgPD0gbWF4UmV0cmllcykge1xuICAgICAgICAgICAgICBjb25zb2xlLmxvZygnaHR0cC1lcnJvci4gUmV0cnlpbmcgLi4uJyk7XG4gICAgICAgICAgICAgIGF0dGVtcHRzICs9IDE7XG4gICAgICAgICAgICAgIHJldHVybiBvZihlcnJvcik7IC8vIDwtIGFuIG9ic2VydmFibGUgY2F1c2VzIHJlcXVlc3QgdG8gYmUgcmV0cmllZFxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgY29uc29sZS5sb2coYFBlcnNpc3RlbnQgaHR0cC1lcnJvcnMgYWZ0ZXIgJHthdHRlbXB0c30gYXR0ZW1wdHMuIEdpdmluZyB1cC5gKTtcbiAgICAgICAgICAgICAgdGhyb3cgZXJyb3I7IC8vIGFuIGVycm9yIGNhdXNlcyByZXF1ZXN0IHRvIGJlIGdpdmVuIHVwIG9uLlxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICB9KVxuICAgICk7XG4gIH07XG5cbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9sbGluZy5qcyIsInNvdXJjZVJvb3QiOiIvaG9tZS9ydW5uZXIvd29yay91a2lzLWZyb250ZW5kLWxpYnJhcmllcy91a2lzLWZyb250ZW5kLWxpYnJhcmllcy9wcm9qZWN0cy91dGlscy1vZ2Mvc3JjLyIsInNvdXJjZXMiOlsibGliL3dwcy91dGlscy9wb2xsaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxLQUFLLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2RCxPQUFPLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBS3RFLE1BQU0sVUFBVSxTQUFTLENBQ3ZCLEtBQW9CLEVBQUUsU0FBb0MsRUFBRSxPQUE4QixFQUFFLGNBQXNCLElBQUk7SUFFdEgsSUFBSSxPQUFPLEVBQUU7UUFDWCxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDZjtJQUVELE1BQU0sV0FBVyxHQUFrQixLQUFLLENBQUMsSUFBSSxDQUMzQyxHQUFHLENBQUMsQ0FBQyxDQUFNLEVBQUUsRUFBRTtRQUNiLElBQUksT0FBTyxFQUFFO1lBQ1gsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ1o7SUFDSCxDQUFDLENBQUMsQ0FDSCxDQUFDO0lBRUYsTUFBTSxvQkFBb0IsR0FBa0IsUUFBUSxDQUFDLFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQ3hGLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUNmLENBQUM7SUFFRixNQUFNLGNBQWMsR0FBa0Isb0JBQW9CLENBQUMsSUFBSSxDQUM3RCxRQUFRLENBQUMsQ0FBQyxRQUFhLEVBQUUsRUFBRTtRQUN6QixJQUFJLFNBQVMsQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUN2QixzREFBc0Q7WUFDdEQsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDckI7YUFBTTtZQUNMLHFFQUFxRTtZQUNyRSxPQUFPLGNBQWMsQ0FBQztTQUN2QjtJQUNILENBQUMsQ0FBQyxDQUNILENBQUM7SUFFRixPQUFPLGNBQWMsQ0FBQztBQUN4QixDQUFDO0FBR0QsTUFBTSxVQUFVLFlBQVksQ0FBQyxPQUFlLEVBQUUsVUFBVSxHQUFHLENBQUM7SUFDMUQsSUFBSSxRQUFRLEdBQUcsQ0FBQyxDQUFDO0lBRWpCLE9BQU8sQ0FBQyxJQUFxQixFQUFFLEVBQUU7UUFDL0IsT0FBTyxJQUFJLENBQUMsSUFBSTtRQUNkLHlCQUF5QjtRQUN6QixTQUFTLENBQUMsQ0FBQyxNQUF1QixFQUFFLEVBQUU7WUFDcEMsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUNoQixLQUFLLENBQUMsT0FBTyxDQUFDLEVBQUUsZ0RBQWdEO1lBQ2hFLFFBQVEsQ0FBQyxDQUFDLEtBQVUsRUFBRSxFQUFFO2dCQUN0QixJQUFJLEtBQUssQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxHQUFHLEVBQUU7b0JBQ3hDLG1EQUFtRDtvQkFDbkQsTUFBTSxLQUFLLENBQUM7aUJBQ2I7cUJBQU0sSUFBSSxRQUFRLElBQUksVUFBVSxFQUFFO29CQUNqQyxPQUFPLENBQUMsR0FBRyxDQUFDLDBCQUEwQixDQUFDLENBQUM7b0JBQ3hDLFFBQVEsSUFBSSxDQUFDLENBQUM7b0JBQ2QsT0FBTyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxnREFBZ0Q7aUJBQ25FO3FCQUFNO29CQUNMLE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0NBQWdDLFFBQVEsdUJBQXVCLENBQUMsQ0FBQztvQkFDN0UsTUFBTSxLQUFLLENBQUMsQ0FBQyw2Q0FBNkM7aUJBQzNEO1lBQ0gsQ0FBQyxDQUFDLENBQ0gsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDLENBQUM7QUFFSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSwgdGltZXIsIG9mLCBmb3JrSm9pbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFwLCBtYXAsIG1lcmdlTWFwLCByZXRyeVdoZW4sIGRlbGF5IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5cblxuXG5leHBvcnQgZnVuY3Rpb24gcG9sbFVudGlsPFQ+KFxuICB0YXNrJDogT2JzZXJ2YWJsZTxUPiwgcHJlZGljYXRlOiAocmVzdWx0czogYW55KSA9PiBib29sZWFuLCBkb1doaWxlPzogKHQ6IFQgfCBudWxsKSA9PiBhbnksIG1pbldhaXRUaW1lOiBudW1iZXIgPSAxMDAwKTogT2JzZXJ2YWJsZTxUPiB7XG5cbiAgaWYgKGRvV2hpbGUpIHtcbiAgICBkb1doaWxlKG51bGwpO1xuICB9XG5cbiAgY29uc3QgdGFwcGVkVGFzayQ6IE9ic2VydmFibGU8VD4gPSB0YXNrJC5waXBlKFxuICAgIHRhcCgocjogYW55KSA9PiB7XG4gICAgICBpZiAoZG9XaGlsZSkge1xuICAgICAgICBkb1doaWxlKHIpO1xuICAgICAgfVxuICAgIH0pXG4gICk7XG5cbiAgY29uc3QgcmVxdWVzdFRha2VzQXRMZWFzdCQ6IE9ic2VydmFibGU8VD4gPSBmb3JrSm9pbih0YXBwZWRUYXNrJCwgdGltZXIobWluV2FpdFRpbWUpKS5waXBlKFxuICAgIG1hcChyID0+IHJbMF0pXG4gICk7XG5cbiAgY29uc3QgcG9sbGVkUmVxdWVzdCQ6IE9ic2VydmFibGU8VD4gPSByZXF1ZXN0VGFrZXNBdExlYXN0JC5waXBlKFxuICAgIG1lcmdlTWFwKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICBpZiAocHJlZGljYXRlKHJlc3BvbnNlKSkge1xuICAgICAgICAvLyBjb25zb2xlLmxvZyhgb2J0YWluZWQgY29ycmVjdCBhbnN3ZXIgJHtyZXNwb25zZX1gKTtcbiAgICAgICAgcmV0dXJuIG9mKHJlc3BvbnNlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKGBvYnRhaW5lZCBmYWxzZSBhbnN3ZXIgJHtyZXNwb25zZX0uIHRyeWluZyBhZ2Fpbi4uLmApO1xuICAgICAgICByZXR1cm4gcG9sbGVkUmVxdWVzdCQ7XG4gICAgICB9XG4gICAgfSlcbiAgKTtcblxuICByZXR1cm4gcG9sbGVkUmVxdWVzdCQ7XG59XG5cblxuZXhwb3J0IGZ1bmN0aW9uIGRlbGF5ZWRSZXRyeShkZWxheU1zOiBudW1iZXIsIG1heFJldHJpZXMgPSAzKSB7XG4gIGxldCBhdHRlbXB0cyA9IDE7XG5cbiAgcmV0dXJuIChzcmMkOiBPYnNlcnZhYmxlPGFueT4pID0+IHtcbiAgICByZXR1cm4gc3JjJC5waXBlKFxuICAgICAgLy8gSWYgYW4gZXJyb3Igb2NjdXJzIC4uLlxuICAgICAgcmV0cnlXaGVuKChlcnJvciQ6IE9ic2VydmFibGU8YW55PikgPT4ge1xuICAgICAgICByZXR1cm4gZXJyb3IkLnBpcGUoXG4gICAgICAgICAgZGVsYXkoZGVsYXlNcyksIC8vIDwtIGluIGFueSBjYXNlLCBmaXJzdCB3YWl0IGEgbGl0dGxlIHdoaWxlIC4uLlxuICAgICAgICAgIG1lcmdlTWFwKChlcnJvcjogYW55KSA9PiB7XG4gICAgICAgICAgICBpZiAoZXJyb3Iuc3RhdHVzICYmIGVycm9yLnN0YXR1cyA9PT0gNDAwKSB7XG4gICAgICAgICAgICAgIC8vIEluIGNhc2Ugb2YgYSBzZXJ2ZXIgZXJyb3IsIHJlcGVhdGluZyB3b24ndCBoZWxwLlxuICAgICAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoYXR0ZW1wdHMgPD0gbWF4UmV0cmllcykge1xuICAgICAgICAgICAgICBjb25zb2xlLmxvZygnaHR0cC1lcnJvci4gUmV0cnlpbmcgLi4uJyk7XG4gICAgICAgICAgICAgIGF0dGVtcHRzICs9IDE7XG4gICAgICAgICAgICAgIHJldHVybiBvZihlcnJvcik7IC8vIDwtIGFuIG9ic2VydmFibGUgY2F1c2VzIHJlcXVlc3QgdG8gYmUgcmV0cmllZFxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgY29uc29sZS5sb2coYFBlcnNpc3RlbnQgaHR0cC1lcnJvcnMgYWZ0ZXIgJHthdHRlbXB0c30gYXR0ZW1wdHMuIEdpdmluZyB1cC5gKTtcbiAgICAgICAgICAgICAgdGhyb3cgZXJyb3I7IC8vIGFuIGVycm9yIGNhdXNlcyByZXF1ZXN0IHRvIGJlIGdpdmVuIHVwIG9uLlxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICB9KVxuICAgICk7XG4gIH07XG5cbn1cbiJdfQ==

@@ -11,2 +11,2 @@ export const isBbox = (obj) => {

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3BzX2RhdGF0eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3V0aWxzLW9nYy9zcmMvbGliL3dwcy93cHNfZGF0YXR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQStDQSxNQUFNLENBQUMsTUFBTSxNQUFNLEdBQUcsQ0FBQyxHQUFXLEVBQXVCLEVBQUU7SUFDekQsT0FBTyxDQUNMLEdBQUcsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDO1FBQ3pCLEdBQUcsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDO1FBQzNCLEdBQUcsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDO1FBQzNCLEdBQUcsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDO1FBQzNCLEdBQUcsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQzVCLENBQUM7QUFDSixDQUFDLENBQUM7QUFjRixNQUFNLFVBQVUsVUFBVSxDQUFDLEdBQVc7SUFDcEMsT0FBTyxHQUFHLElBQUksR0FBRyxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLElBQUksR0FBRyxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7QUFDdEgsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIFdwc1ZlcnNpb24gPSAnMS4wLjAnIHwgJzIuMC4wJztcbmV4cG9ydCB0eXBlIFdwc0RhdGFGb3JtYXQgPSAnYXBwbGljYXRpb24vdm5kLmdlbytqc29uJyB8ICdhcHBsaWNhdGlvbi9qc29uJyB8ICdhcHBsaWNhdGlvbi9XTVMnIHxcbiAgJ2FwcGxpY2F0aW9uL3htbCcgfCAndGV4dC94bWwnIHwgJ2FwcGxpY2F0aW9uL3RleHQnIHwgJ2ltYWdlL2dlb3RpZmYnIHxcbiAgJ3RleHQvcGxhaW4nO1xuXG5cbmV4cG9ydCB0eXBlIFByb2Nlc3NJZCA9IHN0cmluZztcbmV4cG9ydCB0eXBlIFByb2R1Y3RJZCA9IHN0cmluZztcblxuZXhwb3J0IGludGVyZmFjZSBXcHNEYXRhRGVzY3JpcHRpb24ge1xuICBpZDogUHJvZHVjdElkO1xuICB0aXRsZTogc3RyaW5nO1xuICB0eXBlOiAnbGl0ZXJhbCcgfCAnY29tcGxleCcgfCAnYmJveCcgfCAnc3RhdHVzJyB8ICdlcnJvcic7XG4gIHJlZmVyZW5jZTogYm9vbGVhbjtcbiAgZm9ybWF0PzogV3BzRGF0YUZvcm1hdDtcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIGRlZmF1bHRWYWx1ZT86IGFueTtcbiAgb3B0aW9ucz86IGFueVtdO1xufVxuZXhwb3J0IHR5cGUgV3BzSW5wdXREZXNjcmlwdGlvbiA9IFdwc0RhdGFEZXNjcmlwdGlvbjtcbmV4cG9ydCB0eXBlIFdwc091dHB1dERlc2NyaXB0aW9uID0gV3BzRGF0YURlc2NyaXB0aW9uO1xuXG5cbmV4cG9ydCBpbnRlcmZhY2UgV3BzRGF0YSB7XG4gIGRlc2NyaXB0aW9uOiBXcHNEYXRhRGVzY3JpcHRpb247XG4gIHZhbHVlOiBhbnk7XG59XG5leHBvcnQgdHlwZSBXcHNJbnB1dCA9IFdwc0RhdGE7XG5leHBvcnQgdHlwZSBXcHNSZXN1bHQgPSBXcHNEYXRhO1xuXG5leHBvcnQgaW50ZXJmYWNlIFdwc0Jib3hEZXNjcmlwdGlvbiB7XG4gIGlkOiBQcm9kdWN0SWQ7XG4gIHR5cGU6ICdiYm94JztcbiAgcmVmZXJlbmNlOiBib29sZWFuO1xuICBmb3JtYXQ/OiBXcHNEYXRhRm9ybWF0O1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgZGVmYXVsdFZhbHVlPzogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFdwc0Jib3hWYWx1ZSB7XG4gIGNyczogc3RyaW5nO1xuICBsbGxvbjogbnVtYmVyO1xuICBsbGxhdDogbnVtYmVyO1xuICB1cmxvbjogbnVtYmVyO1xuICB1cmxhdDogbnVtYmVyO1xufVxuXG5leHBvcnQgY29uc3QgaXNCYm94ID0gKG9iajogb2JqZWN0KTogb2JqIGlzIFdwc0Jib3hWYWx1ZSA9PiB7XG4gIHJldHVybiAoXG4gICAgb2JqLmhhc093blByb3BlcnR5KCdjcnMnKSAmJlxuICAgIG9iai5oYXNPd25Qcm9wZXJ0eSgnbGxsb24nKSAmJlxuICAgIG9iai5oYXNPd25Qcm9wZXJ0eSgnbGxsYXQnKSAmJlxuICAgIG9iai5oYXNPd25Qcm9wZXJ0eSgndXJsb24nKSAmJlxuICAgIG9iai5oYXNPd25Qcm9wZXJ0eSgndXJsYXQnKVxuICApO1xufTtcblxuXG5leHBvcnQgaW50ZXJmYWNlIFdwc1N0YXRlIHtcbiAgc3RhdHVzOiAnU3VjY2VlZGVkJyB8ICdGYWlsZWQnIHwgJ0FjY2VwdGVkJyB8ICdSdW5uaW5nJyB8ICdEaXNtaXNzZWQnO1xuICBwZXJjZW50Q29tcGxldGVkPzogbnVtYmVyO1xuICAvKiogV1BTIDIuMCBvbmx5ICovXG4gIGpvYklEPzogc3RyaW5nO1xuICAvKiogV1BTIDEuMCBvbmx5ICovXG4gIHN0YXR1c0xvY2F0aW9uPzogc3RyaW5nO1xuICAvKiogV1BTIDEuMCBvbmx5OiBhIHN1Y2Nlc3Mtc3RhdGUgYWxyZWFkeSBjb250YWlucyB0aGUgcmVzdWx0cyAqL1xuICByZXN1bHRzPzogYW55O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNXcHNTdGF0ZShvYmo6IG9iamVjdCk6IG9iaiBpcyBXcHNTdGF0ZSB7XG4gIHJldHVybiBvYmogJiYgb2JqLmhhc093blByb3BlcnR5KCdzdGF0dXMnKSAmJiAob2JqLmhhc093blByb3BlcnR5KCdqb2JJRCcpIHx8IG9iai5oYXNPd25Qcm9wZXJ0eSgnc3RhdHVzTG9jYXRpb24nKSk7XG59XG5cblxuZXhwb3J0IGludGVyZmFjZSBXcHNCYm94RGF0YSB7XG4gIGRlc2NyaXB0aW9uOiBXcHNCYm94RGVzY3JpcHRpb247XG4gIHZhbHVlOiBXcHNCYm94VmFsdWU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgV3BzQ2FwYWJpbGl0eSB7XG4gIGlkOiBzdHJpbmc7XG59XG5cblxuZXhwb3J0IGludGVyZmFjZSBXcHNQcm9jZXNzRGVzY3JpcHRpb24ge1xuICBpZDogc3RyaW5nO1xuICBwcm9jZXNzVmVyc2lvbjogc3RyaW5nO1xuICB0aXRsZT86IHN0cmluZztcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIGlucHV0czogV3BzSW5wdXRbXTtcbiAgb3V0cHV0czogV3BzUmVzdWx0W107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgV3BzU2VydmVyRGVzY3JpcHRpb24ge1xuICBzZXJ2ZXJVcmw6IHN0cmluZztcbiAgc2VydmVyVmVyc2lvbjogV3BzVmVyc2lvbjtcbn1cblxuXG5leHBvcnQgaW50ZXJmYWNlIFdwc01hcnNoYWxsZXIge1xuXG4gIGV4ZWN1dGVVcmwodXJsOiBzdHJpbmcsIHByb2Nlc3NJZDogc3RyaW5nKTogc3RyaW5nO1xuICBkaXNtaXNzVXJsKHNlcnZlclVybDogc3RyaW5nLCBwcm9jZXNzSWQ6IHN0cmluZywgam9iSWQ6IHN0cmluZyk6IHN0cmluZztcbiAgZ2V0Q2FwYWJpbGl0aWVzVXJsKGJhc2V1cmw6IHN0cmluZyk6IHN0cmluZztcbiAgZ2V0RGVzY3JpYmVQcm9jZXNzVXJsKGJhc2V1cmw6IHN0cmluZywgcHJvY2Vzc0lkOiBzdHJpbmcpOiBzdHJpbmc7XG5cbiAgbWFyc2hhbEV4ZWNCb2R5KHByb2Nlc3NJZDogc3RyaW5nLCBpbnB1dHM6IFdwc0lucHV0W10sIG91dHB1dHM6IFdwc091dHB1dERlc2NyaXB0aW9uW10sIGFzeW5jOiBib29sZWFuKTogYW55O1xuICBtYXJzaGFsbEdldFN0YXR1c0JvZHkoc2VydmVyVXJsOiBzdHJpbmcsIHByb2Nlc3NJZDogc3RyaW5nLCBzdGF0dXNJZDogc3RyaW5nKTogYW55O1xuICBtYXJzaGFsbEdldFJlc3VsdEJvZHkoc2VydmVyVXJsOiBzdHJpbmcsIHByb2Nlc3NJZDogc3RyaW5nLCBqb2JJRDogc3RyaW5nKTogYW55O1xuICBtYXJzaGFsRGlzbWlzc0JvZHkoam9iSWQ6IHN0cmluZyk6IGFueTtcblxuICB1bm1hcnNoYWxDYXBhYmlsaXRpZXMoY2FwYWJpbGl0aWVzSnNvbjogYW55KTogV3BzQ2FwYWJpbGl0eVtdO1xuICB1bm1hcnNoYWxQcm9jZXNzRGVzY3JpcHRpb24ocHJvY2Vzc0Rlc2NyaXB0aW9uSnNvbjogYW55KTogV3BzUHJvY2Vzc0Rlc2NyaXB0aW9uO1xuICB1bm1hcnNoYWxTeW5jRXhlY3V0ZVJlc3BvbnNlKHJlc3BvbnNlSnNvbjogYW55LCB1cmw6IHN0cmluZywgcHJvY2Vzc0lkOiBzdHJpbmcsIGlucHV0czogV3BzSW5wdXRbXSwgb3V0cHV0RGVzY3JpcHRpb25zOiBXcHNPdXRwdXREZXNjcmlwdGlvbltdKTogV3BzUmVzdWx0W107XG4gIHVubWFyc2hhbEFzeW5jRXhlY3V0ZVJlc3BvbnNlKHJlc3BvbnNlSnNvbjogYW55LCB1cmw6IHN0cmluZywgcHJvY2Vzc0lkOiBzdHJpbmcsIGlucHV0czogV3BzSW5wdXRbXSwgb3V0cHV0RGVzY3JpcHRpb25zOiBXcHNPdXRwdXREZXNjcmlwdGlvbltdKTogV3BzU3RhdGU7XG4gIHVubWFyc2hhbEdldFN0YXRlUmVzcG9uc2UoanNvblJlc3BvbnNlOiBhbnksIHNlcnZlclVybDogc3RyaW5nLCBwcm9jZXNzSWQ6IHN0cmluZywgaW5wdXRzOiBXcHNJbnB1dFtdLCBvdXRwdXREZXNjcmlwdGlvbnM6IFdwc091dHB1dERlc2NyaXB0aW9uW10pOiBXcHNTdGF0ZTtcbiAgdW5tYXJzaGFsRGlzbWlzc1Jlc3BvbnNlKGpzb25SZXNwb25zZTogYW55LCBzZXJ2ZXJVcmw6IHN0cmluZywgcHJvY2Vzc0lkOiBzdHJpbmcpOiBXcHNTdGF0ZTtcbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3BzX2RhdGF0eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIvaG9tZS9ydW5uZXIvd29yay91a2lzLWZyb250ZW5kLWxpYnJhcmllcy91a2lzLWZyb250ZW5kLWxpYnJhcmllcy9wcm9qZWN0cy91dGlscy1vZ2Mvc3JjLyIsInNvdXJjZXMiOlsibGliL3dwcy93cHNfZGF0YXR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQStDQSxNQUFNLENBQUMsTUFBTSxNQUFNLEdBQUcsQ0FBQyxHQUFXLEVBQXVCLEVBQUU7SUFDekQsT0FBTyxDQUNMLEdBQUcsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDO1FBQ3pCLEdBQUcsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDO1FBQzNCLEdBQUcsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDO1FBQzNCLEdBQUcsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDO1FBQzNCLEdBQUcsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQzVCLENBQUM7QUFDSixDQUFDLENBQUM7QUFjRixNQUFNLFVBQVUsVUFBVSxDQUFDLEdBQVc7SUFDcEMsT0FBTyxHQUFHLElBQUksR0FBRyxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLElBQUksR0FBRyxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7QUFDdEgsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIFdwc1ZlcnNpb24gPSAnMS4wLjAnIHwgJzIuMC4wJztcbmV4cG9ydCB0eXBlIFdwc0RhdGFGb3JtYXQgPSAnYXBwbGljYXRpb24vdm5kLmdlbytqc29uJyB8ICdhcHBsaWNhdGlvbi9qc29uJyB8ICdhcHBsaWNhdGlvbi9XTVMnIHxcbiAgJ2FwcGxpY2F0aW9uL3htbCcgfCAndGV4dC94bWwnIHwgJ2FwcGxpY2F0aW9uL3RleHQnIHwgJ2ltYWdlL2dlb3RpZmYnIHxcbiAgJ3RleHQvcGxhaW4nO1xuXG5cbmV4cG9ydCB0eXBlIFByb2Nlc3NJZCA9IHN0cmluZztcbmV4cG9ydCB0eXBlIFByb2R1Y3RJZCA9IHN0cmluZztcblxuZXhwb3J0IGludGVyZmFjZSBXcHNEYXRhRGVzY3JpcHRpb24ge1xuICBpZDogUHJvZHVjdElkO1xuICB0aXRsZTogc3RyaW5nO1xuICB0eXBlOiAnbGl0ZXJhbCcgfCAnY29tcGxleCcgfCAnYmJveCcgfCAnc3RhdHVzJyB8ICdlcnJvcic7XG4gIHJlZmVyZW5jZTogYm9vbGVhbjtcbiAgZm9ybWF0PzogV3BzRGF0YUZvcm1hdDtcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIGRlZmF1bHRWYWx1ZT86IGFueTtcbiAgb3B0aW9ucz86IGFueVtdO1xufVxuZXhwb3J0IHR5cGUgV3BzSW5wdXREZXNjcmlwdGlvbiA9IFdwc0RhdGFEZXNjcmlwdGlvbjtcbmV4cG9ydCB0eXBlIFdwc091dHB1dERlc2NyaXB0aW9uID0gV3BzRGF0YURlc2NyaXB0aW9uO1xuXG5cbmV4cG9ydCBpbnRlcmZhY2UgV3BzRGF0YSB7XG4gIGRlc2NyaXB0aW9uOiBXcHNEYXRhRGVzY3JpcHRpb247XG4gIHZhbHVlOiBhbnk7XG59XG5leHBvcnQgdHlwZSBXcHNJbnB1dCA9IFdwc0RhdGE7XG5leHBvcnQgdHlwZSBXcHNSZXN1bHQgPSBXcHNEYXRhO1xuXG5leHBvcnQgaW50ZXJmYWNlIFdwc0Jib3hEZXNjcmlwdGlvbiB7XG4gIGlkOiBQcm9kdWN0SWQ7XG4gIHR5cGU6ICdiYm94JztcbiAgcmVmZXJlbmNlOiBib29sZWFuO1xuICBmb3JtYXQ/OiBXcHNEYXRhRm9ybWF0O1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgZGVmYXVsdFZhbHVlPzogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFdwc0Jib3hWYWx1ZSB7XG4gIGNyczogc3RyaW5nO1xuICBsbGxvbjogbnVtYmVyO1xuICBsbGxhdDogbnVtYmVyO1xuICB1cmxvbjogbnVtYmVyO1xuICB1cmxhdDogbnVtYmVyO1xufVxuXG5leHBvcnQgY29uc3QgaXNCYm94ID0gKG9iajogb2JqZWN0KTogb2JqIGlzIFdwc0Jib3hWYWx1ZSA9PiB7XG4gIHJldHVybiAoXG4gICAgb2JqLmhhc093blByb3BlcnR5KCdjcnMnKSAmJlxuICAgIG9iai5oYXNPd25Qcm9wZXJ0eSgnbGxsb24nKSAmJlxuICAgIG9iai5oYXNPd25Qcm9wZXJ0eSgnbGxsYXQnKSAmJlxuICAgIG9iai5oYXNPd25Qcm9wZXJ0eSgndXJsb24nKSAmJlxuICAgIG9iai5oYXNPd25Qcm9wZXJ0eSgndXJsYXQnKVxuICApO1xufTtcblxuXG5leHBvcnQgaW50ZXJmYWNlIFdwc1N0YXRlIHtcbiAgc3RhdHVzOiAnU3VjY2VlZGVkJyB8ICdGYWlsZWQnIHwgJ0FjY2VwdGVkJyB8ICdSdW5uaW5nJyB8ICdEaXNtaXNzZWQnO1xuICBwZXJjZW50Q29tcGxldGVkPzogbnVtYmVyO1xuICAvKiogV1BTIDIuMCBvbmx5ICovXG4gIGpvYklEPzogc3RyaW5nO1xuICAvKiogV1BTIDEuMCBvbmx5ICovXG4gIHN0YXR1c0xvY2F0aW9uPzogc3RyaW5nO1xuICAvKiogV1BTIDEuMCBvbmx5OiBhIHN1Y2Nlc3Mtc3RhdGUgYWxyZWFkeSBjb250YWlucyB0aGUgcmVzdWx0cyAqL1xuICByZXN1bHRzPzogYW55O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNXcHNTdGF0ZShvYmo6IG9iamVjdCk6IG9iaiBpcyBXcHNTdGF0ZSB7XG4gIHJldHVybiBvYmogJiYgb2JqLmhhc093blByb3BlcnR5KCdzdGF0dXMnKSAmJiAob2JqLmhhc093blByb3BlcnR5KCdqb2JJRCcpIHx8IG9iai5oYXNPd25Qcm9wZXJ0eSgnc3RhdHVzTG9jYXRpb24nKSk7XG59XG5cblxuZXhwb3J0IGludGVyZmFjZSBXcHNCYm94RGF0YSB7XG4gIGRlc2NyaXB0aW9uOiBXcHNCYm94RGVzY3JpcHRpb247XG4gIHZhbHVlOiBXcHNCYm94VmFsdWU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgV3BzQ2FwYWJpbGl0eSB7XG4gIGlkOiBzdHJpbmc7XG59XG5cblxuZXhwb3J0IGludGVyZmFjZSBXcHNQcm9jZXNzRGVzY3JpcHRpb24ge1xuICBpZDogc3RyaW5nO1xuICBwcm9jZXNzVmVyc2lvbjogc3RyaW5nO1xuICB0aXRsZT86IHN0cmluZztcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIGlucHV0czogV3BzSW5wdXRbXTtcbiAgb3V0cHV0czogV3BzUmVzdWx0W107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgV3BzU2VydmVyRGVzY3JpcHRpb24ge1xuICBzZXJ2ZXJVcmw6IHN0cmluZztcbiAgc2VydmVyVmVyc2lvbjogV3BzVmVyc2lvbjtcbn1cblxuXG5leHBvcnQgaW50ZXJmYWNlIFdwc01hcnNoYWxsZXIge1xuXG4gIGV4ZWN1dGVVcmwodXJsOiBzdHJpbmcsIHByb2Nlc3NJZDogc3RyaW5nKTogc3RyaW5nO1xuICBkaXNtaXNzVXJsKHNlcnZlclVybDogc3RyaW5nLCBwcm9jZXNzSWQ6IHN0cmluZywgam9iSWQ6IHN0cmluZyk6IHN0cmluZztcbiAgZ2V0Q2FwYWJpbGl0aWVzVXJsKGJhc2V1cmw6IHN0cmluZyk6IHN0cmluZztcbiAgZ2V0RGVzY3JpYmVQcm9jZXNzVXJsKGJhc2V1cmw6IHN0cmluZywgcHJvY2Vzc0lkOiBzdHJpbmcpOiBzdHJpbmc7XG5cbiAgbWFyc2hhbEV4ZWNCb2R5KHByb2Nlc3NJZDogc3RyaW5nLCBpbnB1dHM6IFdwc0lucHV0W10sIG91dHB1dHM6IFdwc091dHB1dERlc2NyaXB0aW9uW10sIGFzeW5jOiBib29sZWFuKTogYW55O1xuICBtYXJzaGFsbEdldFN0YXR1c0JvZHkoc2VydmVyVXJsOiBzdHJpbmcsIHByb2Nlc3NJZDogc3RyaW5nLCBzdGF0dXNJZDogc3RyaW5nKTogYW55O1xuICBtYXJzaGFsbEdldFJlc3VsdEJvZHkoc2VydmVyVXJsOiBzdHJpbmcsIHByb2Nlc3NJZDogc3RyaW5nLCBqb2JJRDogc3RyaW5nKTogYW55O1xuICBtYXJzaGFsRGlzbWlzc0JvZHkoam9iSWQ6IHN0cmluZyk6IGFueTtcblxuICB1bm1hcnNoYWxDYXBhYmlsaXRpZXMoY2FwYWJpbGl0aWVzSnNvbjogYW55KTogV3BzQ2FwYWJpbGl0eVtdO1xuICB1bm1hcnNoYWxQcm9jZXNzRGVzY3JpcHRpb24ocHJvY2Vzc0Rlc2NyaXB0aW9uSnNvbjogYW55KTogV3BzUHJvY2Vzc0Rlc2NyaXB0aW9uO1xuICB1bm1hcnNoYWxTeW5jRXhlY3V0ZVJlc3BvbnNlKHJlc3BvbnNlSnNvbjogYW55LCB1cmw6IHN0cmluZywgcHJvY2Vzc0lkOiBzdHJpbmcsIGlucHV0czogV3BzSW5wdXRbXSwgb3V0cHV0RGVzY3JpcHRpb25zOiBXcHNPdXRwdXREZXNjcmlwdGlvbltdKTogV3BzUmVzdWx0W107XG4gIHVubWFyc2hhbEFzeW5jRXhlY3V0ZVJlc3BvbnNlKHJlc3BvbnNlSnNvbjogYW55LCB1cmw6IHN0cmluZywgcHJvY2Vzc0lkOiBzdHJpbmcsIGlucHV0czogV3BzSW5wdXRbXSwgb3V0cHV0RGVzY3JpcHRpb25zOiBXcHNPdXRwdXREZXNjcmlwdGlvbltdKTogV3BzU3RhdGU7XG4gIHVubWFyc2hhbEdldFN0YXRlUmVzcG9uc2UoanNvblJlc3BvbnNlOiBhbnksIHNlcnZlclVybDogc3RyaW5nLCBwcm9jZXNzSWQ6IHN0cmluZywgaW5wdXRzOiBXcHNJbnB1dFtdLCBvdXRwdXREZXNjcmlwdGlvbnM6IFdwc091dHB1dERlc2NyaXB0aW9uW10pOiBXcHNTdGF0ZTtcbiAgdW5tYXJzaGFsRGlzbWlzc1Jlc3BvbnNlKGpzb25SZXNwb25zZTogYW55LCBzZXJ2ZXJVcmw6IHN0cmluZywgcHJvY2Vzc0lkOiBzdHJpbmcpOiBXcHNTdGF0ZTtcbn1cbiJdfQ==

@@ -389,2 +389,2 @@ import * as xmlserializer from 'xmlserializer';

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3BzX21hcnNoYWxsZXJfMS4wLjAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91dGlscy1vZ2Mvc3JjL2xpYi93cHMvd3BzMTAwL3dwc19tYXJzaGFsbGVyXzEuMC4wLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9BLE9BQU8sS0FBSyxhQUFhLE1BQU0sZUFBZSxDQUFDO0FBSS9DLE1BQU0sT0FBTyxnQkFBZ0I7SUFFM0IsZ0JBQWdCLENBQUM7SUFFakIsa0JBQWtCLENBQUMsT0FBZTtRQUNoQyxPQUFPLEdBQUcsT0FBTyxvREFBb0QsQ0FBQztJQUN4RSxDQUFDO0lBRUQscUJBQXFCLENBQUMsT0FBZSxFQUFFLFNBQWlCO1FBQ3RELE9BQU8sR0FBRyxPQUFPLGlFQUFpRSxTQUFTLEVBQUUsQ0FBQztJQUNoRyxDQUFDO0lBRUQsVUFBVSxDQUFDLE9BQWUsRUFBRSxTQUFpQjtRQUMzQyxPQUFPLEdBQUcsT0FBTyx5REFBeUQsU0FBUyxFQUFFLENBQUM7SUFDeEYsQ0FBQztJQUVELHFCQUFxQixDQUFDLFlBQWlDO1FBQ3JELE1BQU0sR0FBRyxHQUFvQixFQUFFLENBQUM7UUFDaEMsWUFBWSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDdEQsR0FBRyxDQUFDLElBQUksQ0FBQztnQkFDUCxFQUFFLEVBQUUsT0FBTyxDQUFDLFVBQVUsQ0FBQyxLQUFLO2FBQzdCLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBRUQsMkJBQTJCLENBQUMsc0JBQW1EOztRQUM3RSxNQUFNLFdBQVcsR0FBRyxzQkFBc0IsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUVqRSxNQUFNLE1BQU0sR0FBZSxFQUFFLENBQUM7UUFDOUIsS0FBSyxNQUFNLFNBQVMsSUFBSSxXQUFXLENBQUMsVUFB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QztJQUNaLENBQUM7SUFFRCxVQUFVLENBQUMsU0FBaUIsRUFBRSxTQUFpQixFQUFFLEtBQWE7UUFDNUQ7O1dBRUc7UUFDSCxNQUFNLElBQUksS0FBSyxDQUFDLDhDQUE4QyxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUVELGtCQUFrQixDQUFDLFNBQWlCO1FBQ2xDLE1BQU0sSUFBSSxLQUFLLENBQUMsOENBQThDLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRUQsd0JBQXdCLENBQUMsWUFBaUIsRUFBRSxTQUFpQixFQUFFLFNBQWlCO1FBQzlFLE1BQU0sSUFBSSxLQUFLLENBQUMsOENBQThDLENBQUMsQ0FBQztJQUNsRSxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBXcHNNYXJzaGFsbGVyLCBXcHNJbnB1dCwgV3BzT3V0cHV0RGVzY3JpcHRpb24sIFdwc1Jlc3VsdCwgV3BzQ2FwYWJpbGl0eSwgV3BzQmJveFZhbHVlLCBXcHNEYXRhLCBcbiAgV3BzRGF0YURlc2NyaXB0aW9uLCBXcHNTdGF0ZSwgV3BzRGF0YUZvcm1hdCwgV3BzUHJvY2Vzc0Rlc2NyaXB0aW9uIH0gZnJvbSAnLi4vd3BzX2RhdGF0eXBlcyc7XG5pbXBvcnQge1xuICBXUFNDYXBhYmlsaXRpZXNUeXBlLCBJV3BzRXhlY3V0ZVByb2Nlc3NCb2R5LCBFeGVjdXRlLCBEYXRhSW5wdXRzVHlwZSxcbiAgSW5wdXRUeXBlLCBSZXNwb25zZUZvcm1UeXBlLCBEYXRhVHlwZSwgSVdwc0V4ZWN1dGVSZXNwb25zZSwgRG9jdW1lbnRPdXRwdXREZWZpbml0aW9uVHlwZSxcbiAgUmVzcG9uc2VEb2N1bWVudFR5cGUsIElucHV0UmVmZXJlbmNlVHlwZSwgRXhlY3V0ZVJlc3BvbnNlLCBJV3BzRGVzY3JpYmVQcm9jZXNzUmVzcG9uc2UsXG4gIElucHV0RGVzY3JpcHRpb25UeXBlLCBPdXRwdXREZXNjcmlwdGlvblR5cGUgfSBmcm9tICcuL3dwc18xLjAuMCc7XG5pbXBvcnQgKiBhcyB4bWxzZXJpYWxpemVyIGZyb20gJ3htbHNlcmlhbGl6ZXInO1xuXG5cblxuZXhwb3J0IGNsYXNzIFdwc01hcnNoYWxsZXIxMDAgaW1wbGVtZW50cyBXcHNNYXJzaGFsbGVyIHtcblxuICBjb25zdHJ1Y3RvcigpIHsgfVxuXG4gIGdldENhcGFiaWxpdGllc1VybChiYXNldXJsOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHtiYXNldXJsfT9zZXJ2aWNlPVdQUyZyZXF1ZXN0PUdldENhcGFiaWxpdGllcyZ2ZXJzaW9uPTEuMC4wYDtcbiAgfVxuXG4gIGdldERlc2NyaWJlUHJvY2Vzc1VybChiYXNldXJsOiBzdHJpbmcsIHByb2Nlc3NJZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7YmFzZXVybH0/c2VydmljZT1XUFMmcmVxdWVzdD1EZXNjcmliZVByb2Nlc3MmdmVyc2lvbj0xLjAuMCZJZGVudGlmaWVyPSR7cHJvY2Vzc0lkfWA7XG4gIH1cblxuICBleGVjdXRlVXJsKGJhc2V1cmw6IHN0cmluZywgcHJvY2Vzc0lkOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHtiYXNldXJsfT9zZXJ2aWNlPVdQUyZyZXF1ZXN0PUV4ZWN1dGUmdmVyc2lvbj0xLjAuMCZpZGVudGlmaWVyPSR7cHJvY2Vzc0lkfWA7XG4gIH1cblxuICB1bm1hcnNoYWxDYXBhYmlsaXRpZXMoY2FwYWJpbGl0aWVzOiBXUFNDYXBhYmlsaXRpZXNUeXBlKTogV3BzQ2FwYWJpbGl0eVtdIHtcbiAgICBjb25zdCBvdXQ6IFdwc0NhcGFiaWxpdHlbXSA9IFtdO1xuICAgIGNhcGFiaWxpdGllcy5wcm9jZXNzT2ZmZXJpbmdzLnByb2Nlc3MuZm9yRWFjaChwcm9jZXNzID0+IHtcbiAgICAgIG91dC5wdXNoKHtcbiAgICAgICAgaWQ6IHByb2Nlc3MuaWRlbnRpZmllci52YWx1ZVxuICAgICAgfSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIG91dDtcbiAgfVxuXG4gIHVubWFyc2hhbFByb2Nlc3NEZXNjcmlwdGlvbihwcm9jZXNzRGVzY3JpcHRpb25Kc29uOiBJV3BzRGVzY3JpYmVQcm9jZXNzUmVzcG9uc2UpOiBXcHNQcm9jZXNzRGVzY3JpcHRpb24ge1xuICAgIGNvbnN0IGRlc2NyaXB0aW9uID0gcHJvY2Vzc0Rlc2NyaXB0aW9uSnNvbi5wcm9jZXNzRGVzY3JpcHRpb25bMF07XG5cbiAgICBjb25zdCBpbnB1dHM6IFdwc0lucHV0W10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IGRhdGFJbnB1dCBvZiBkZXNjcmlwdGlvbi5kYXRhSW5wdXRzLmlucHV0KSB7XG4gICAgICBpbnB1dHMucHVzaCh7XG4gICAgICAgIGRlc2NyaXB0aW9uOiB0aGlzLnVubWFyc2hhbElucHV0RGVzY3JpcHRpb24oZGF0YUlucHV0KSxcbiAgICAgICAgdmFsdWU6IG51bGxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGNvbnN0IG91dHB1dHM6IFdwc1Jlc3VsdFtdID0gW107XG4gICAgZm9yIChjb25zdCBwcm9jZXNzT3V0cHV0IG9mIGRlc2NyaXB0aW9uLnByb2Nlc3NPdXRwdXRzLm91dHB1dCkge1xuICAgICAgb3V0cHV0cy5wdXNoKHtcbiAgICAgICAgZGVzY3JpcHRpb246IHRoaXMudW5tYXJzaGFsT3V0cHV0RGVzY3JpcHRpb24ocHJvY2Vzc091dHB1dCksXG4gICAgICAgIHZhbHVlOiBudWxsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgaWQ6IGRlc2NyaXB0aW9uLmlkZW50aWZpZXIudmFsdWUsXG4gICAgICBwcm9jZXNzVmVyc2lvbjogZGVzY3JpcHRpb24ucHJvY2Vzc1ZlcnNpb24sXG4gICAgICBkZXNjcmlwdGlvbjogZGVzY3JpcHRpb24uX2Fic3RyYWN0Py52YWx1ZSxcbiAgICAgIHRpdGxlOiBkZXNjcmlwdGlvbi50aXRsZS52YWx1ZSxcbiAgICAgIGlucHV0czogaW5wdXRzLFxuICAgICAgb3V0cHV0czogb3V0cHV0cyxcbiAgICB9O1xuICB9XG5cbiAgdW5tYXJzaGFsU3luY0V4ZWN1dGVSZXNwb25zZShyZXNwb25zZUpzb246IElXcHNFeGVjdXRlUmVzcG9uc2UsIHVybDogc3RyaW5nLCBwcm9jZXNzSWQ6IHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dHM6IFdwc0lucHV0W10sIG91dHB1dERlc2NyaXB0aW9uczogV3BzT3V0cHV0RGVzY3JpcHRpb25bXSk6IFdwc1Jlc3VsdFtdIHtcblxuICAgIGNvbnN0IG91dDogV3BzUmVzdWx0W10gPSBbXTtcblxuICAgIGlmIChyZXNwb25zZUpzb24udmFsdWUuc3RhdHVzLnByb2Nlc3NGYWlsZWQpIHsgLy8gRmFpbHVyZT9cbiAgICAgIG91dC5wdXNoKHtcbiAgICAgICAgZGVzY3JpcHRpb246IHtcbiAgICAgICAgICBpZDogcmVzcG9uc2VKc29uLnZhbHVlLnByb2Nlc3MuaWRlbnRpZmllci52YWx1ZSxcbiAgICAgICAgICB0aXRsZTogcmVzcG9uc2VKc29uLnZhbHVlLnByb2Nlc3MudGl0bGUudmFsdWUsXG4gICAgICAgICAgcmVmZXJlbmNlOiB0cnVlLFxuICAgICAgICAgIHR5cGU6ICdlcnJvcidcbiAgICAgICAgfSxcbiAgICAgICAgdmFsdWU6IHJlc3BvbnNlSnNvbi52YWx1ZS5zdGF0dXNMb2NhdGlvblxuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmIChyZXNwb25zZUpzb24udmFsdWUucHJvY2Vzc091dHB1dHMpIHsgLy8gc3luY2hyb25vdXMgcmVxdWVzdD9cbiAgICAgIGZvciAoY29uc3Qgb3V0cHV0IG9mIHJlc3BvbnNlSnNvbi52YWx1ZS5wcm9jZXNzT3V0cHV0cy5vdXRwdXQpIHtcbiAgICAgICAgY29uc3QgaXNSZWZlcmVuY2UgPSBvdXRwdXQucmVmZXJlbmNlID8gdHJ1ZSA6IGZhbHNlO1xuXG4gICAgICAgIGxldCBkYXRhdHlwZTogJ2xpdGVyYWwnIHwgJ2NvbXBsZXgnIHwgJ2Jib3gnIHwgJ3N0YXR1cycgfCAnZXJyb3InO1xuICAgICAgICBsZXQgZGF0YTtcbiAgICAgICAgbGV0IGZvcm1hdDogV3BzRGF0YUZvcm1hdCB8IHVuZGVmaW5lZDtcbiAgICAgICAgaWYgKG91dHB1dC5yZWZlcmVuY2UpIHtcbiAgICAgICAgICBkYXRhdHlwZSA9ICdjb21wbGV4JztcbiAgICAgICAgICBkYXRhID0gb3V0cHV0LnJlZmVyZW5jZS5ocmVmIHx8IG51bGw7XG4gICAgICAgICAgZm9ybWF0ID0gb3V0cHV0LnJlZmVyZW5jZS5taW1lVHlwZSBhcyBXcHNEYXRhRm9ybWF0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmIChvdXRwdXQuZGF0YSAmJiBvdXRwdXQuZGF0YS5saXRlcmFsRGF0YSkge1xuICAgICAgICAgICAgZGF0YXR5cGUgPSAnbGl0ZXJhbCc7XG4gICAgICAgICAgICBmb3JtYXQgPSBvdXRwdXQuZGF0YS5saXRlcmFsRGF0YS5kYXRhVHlwZSBhcyBXcHNEYXRhRm9ybWF0O1xuICAgICAgICAgIH0gZWxzZSBpZiAob3V0cHV0LmRhdGEgJiYgb3V0cHV0LmRhdGEuY29tcGxleERhdGEpIHtcbiAgICAgICAgICAgIGRhdGF0eXBlID0gJ2NvbXBsZXgnO1xuICAgICAgICAgICAgZm9ybWF0ID0gb3V0cHV0LmRhdGEuY29tcGxleERhdGEubWltZVR5cGUgYXMgV3BzRGF0YUZvcm1hdDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZGF0YXR5cGUgPSAnYmJveCc7XG4gICAgICAgICAgICBmb3JtYXQgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICBkYXRhID0gdGhpcy51bm1hcnNoYWxPdXRwdXREYXRhKG91dHB1dC5kYXRhKTtcbiAgICAgICAgfVxuXG4gICAgICAgIG91dC5wdXNoKHtcbiAgICAgICAgICBkZXNjcmlwdGlvbjoge1xuICAgICAgICAgICAgaWQ6IG91dHB1dC5pZGVudGlmaWVyLnZhbHVlLFxuICAgICAgICAgICAgdGl0bGU6IG91dHB1dC50aXRsZS52YWx1ZSxcbiAgICAgICAgICAgIGZvcm1hdCxcbiAgICAgICAgICAgIHJlZmVyZW5jZTogaXNSZWZlcmVuY2UsXG4gICAgICAgICAgICB0eXBlOiBkYXRhdHlwZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgdmFsdWU6IGRhdGEsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAocmVzcG9uc2VKc29uLnZhbHVlLnN0YXR1c0xvY2F0aW9uKSB7IC8vIGFzeW5jaHJvbm91cyByZXF1ZXN0P1xuICAgICAgb3V0LnB1c2goe1xuICAgICAgICBkZXNjcmlwdGlvbjoge1xuICAgICAgICAgIGlkOiByZXNwb25zZUpzb24udmFsdWUucHJvY2Vzcy5pZGVudGlmaWVyLnZhbHVlLFxuICAgICAgICAgIHRpdGxlOiByZXNwb25zZUpzb24udmFsdWUucHJvY2Vzcy50aXRsZS52YWx1ZSxcbiAgICAgICAgICByZWZlcmVuY2U6IHRydWUsXG4gICAgICAgICAgdHlwZTogJ3N0YXR1cydcbiAgICAgICAgfSxcbiAgICAgICAgdmFsdWU6IHRoaXMudW5tYXJzaGFsR2V0U3RhdGVSZXNwb25zZShyZXNwb25zZUpzb24sIHVybCwgcHJvY2Vzc0lkLCBpbnB1dHMsIG91dHB1dERlc2NyaXB0aW9ucylcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBvdXQ7XG4gIH1cblxuICBwcm90ZWN0ZWQgdW5tYXJzaGFsT3V0cHV0RGF0YShkYXRhOiBEYXRhVHlwZSk6IGFueSB7XG4gICAgaWYgKGRhdGEuY29tcGxleERhdGEpIHtcblxuICAgICAgaWYgKGRhdGEuY29tcGxleERhdGEuZW5jb2RpbmcgPT09ICdiYXNlNjQnKSB7XG4gICAgICAgIGlmICh0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJyAmJiBtb2R1bGUuZXhwb3J0cykgeyAvLyBub2RlXG4gICAgICAgICAgZGF0YS5jb21wbGV4RGF0YS5jb250ZW50Lm1hcChjID0+IG5ldyBCdWZmZXIoYywgJ2Jhc2U2NCcpLnRvU3RyaW5nKCdhc2NpaScpKTtcbiAgICAgICAgfSBlbHNlIHsgLy8gYnJvd3NlclxuICAgICAgICAgIGRhdGEuY29tcGxleERhdGEuY29udGVudC5tYXAoYyA9PiBhdG9iKGMpKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBzd2l0Y2ggKGRhdGEuY29tcGxleERhdGEubWltZVR5cGUpIHtcbiAgICAgICAgY2FzZSAnYXBwbGljYXRpb24vdm5kLmdlbytqc29uJzpcbiAgICAgICAgY2FzZSAnYXBwbGljYXRpb24vanNvbic6XG4gICAgICAgICAgcmV0dXJuIGRhdGEuY29tcGxleERhdGEuY29udGVudC5tYXAoY29udCA9PiBKU09OLnBhcnNlKGNvbnQpKTtcbiAgICAgICAgY2FzZSAnYXBwbGljYXRpb24vV01TJzpcbiAgICAgICAgICByZXR1cm4gZGF0YS5jb21wbGV4RGF0YS5jb250ZW50O1xuICAgICAgICBjYXNlICd0ZXh0L3htbCc6XG4gICAgICAgIGNhc2UgJ2FwcGxpY2F0aW9uL3htbCc6XG4gICAgICAgICAgcmV0dXJuIHhtbHNlcmlhbGl6ZXIuc2VyaWFsaXplVG9TdHJpbmcoZGF0YS5jb21wbGV4RGF0YS5jb250ZW50WzBdKTsgLy8gQFRPRE86IGJldHRlcjogaGFuZGxlIGFjdHVhbCB4bWwtZGF0YVxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IHVubWFyc2hhbCBkYXRhIG9mIGZvcm1hdCAke2RhdGEuY29tcGxleERhdGEubWltZVR5cGV9YCk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChkYXRhLmxpdGVyYWxEYXRhKSB7XG4gICAgICBzd2l0Y2ggKGRhdGEubGl0ZXJhbERhdGEuZGF0YVR5cGUpIHtcbiAgICAgICAgY2FzZSAnc3RyaW5nJzpcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm4gZGF0YS5saXRlcmFsRGF0YS52YWx1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aHJvdyBuZXcgRXJyb3IoYE5vdCB5ZXQgaW1wbGVtZW50ZWQ6ICR7ZGF0YX1gKTtcbiAgfVxuXG4gIHByb3RlY3RlZCB1bm1hcnNoYWxJbnB1dERlc2NyaXB0aW9uKGRhdGE6IElucHV0RGVzY3JpcHRpb25UeXBlKTogV3BzRGF0YURlc2NyaXB0aW9uIHtcbiAgICBpZiAoZGF0YS5ib3VuZGluZ0JveERhdGEpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGlkOiBkYXRhLmlkZW50aWZpZXIudmFsdWUsXG4gICAgICAgIHRpdGxlOiBkYXRhLnRpdGxlLnZhbHVlLFxuICAgICAgICByZWZlcmVuY2U6IGZhbHNlLFxuICAgICAgICB0eXBlOiAnYmJveCcsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBkYXRhLl9hYnN0cmFjdD8udmFsdWUsXG4gICAgICAgIGZvcm1hdDogJ3RleHQvcGxhaW4nLFxuICAgICAgfTtcbiAgICB9XG4gICAgZWxzZSBpZiAoZGF0YS5jb21wbGV4RGF0YSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaWQ6IGRhdGEuaWRlbnRpZmllci52YWx1ZSxcbiAgICAgICAgdGl0bGU6IGRhdGEudGl0bGUudmFsdWUsXG4gICAgICAgIHJlZmVyZW5jZTogZGF0YS5zdG9yZVN1cHBvcnRlZCxcbiAgICAgICAgdHlwZTogJ2NvbXBsZXgnLFxuICAgICAgICBkZXNjcmlwdGlvbjogZGF0YS5fYWJzdHJhY3Q/LnZhbHVlLFxuICAgICAgICBmb3JtYXQ6IGRhdGEuY29tcGxleERhdGEuX2RlZmF1bHQuZm9ybWF0Lm1pbWVUeXBlIGFzIFdwc0RhdGFGb3JtYXRcbiAgICAgIH07XG4gICAgfVxuICAgIGVsc2UgaWYgKGRhdGEubGl0ZXJhbERhdGEpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGlkOiBkYXRhLmlkZW50aWZpZXIudmFsdWUsXG4gICAgICAgIHRpdGxlOiBkYXRhLnRpdGxlLnZhbHVlLFxuICAgICAgICByZWZlcmVuY2U6IGZhbHNlLFxuICAgICAgICB0eXBlOiAnbGl0ZXJhbCcsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBkYXRhLl9hYnN0cmFjdD8udmFsdWUsXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogZGF0YS5saXRlcmFsRGF0YS5kZWZhdWx0VmFsdWUsXG4gICAgICAgIG9wdGlvbnM6IGRhdGEubGl0ZXJhbERhdGEuYWxsb3dlZFZhbHVlcz8udmFsdWVPclJhbmdlLm1hcCh2ID0+IHYudmFsdWUpLFxuICAgICAgICBmb3JtYXQ6ICd0ZXh0L3BsYWluJ1xuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgdW5tYXJzaGFsIHRoZSBpbnB1dC1kZXNjcmlwdGlvbiBmb3IgJHtkYXRhLmlkZW50aWZpZXIudmFsdWV9YCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIHVubWFyc2hhbE91dHB1dERlc2NyaXB0aW9uKGRhdGE6IE91dHB1dERlc2NyaXB0aW9uVHlwZSk6IFdwc0RhdGFEZXNjcmlwdGlvbiB7XG4gICAgaWYgKGRhdGEuY29tcGxleE91dHB1dCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaWQ6IGRhdGEuaWRlbnRpZmllci52YWx1ZSxcbiAgICAgICAgdGl0bGU6IGRhdGEudGl0bGUudmFsdWUsXG4gICAgICAgIHJlZmVyZW5jZTogdHJ1ZSxcbiAgICAgICAgdHlwZTogJ2NvbXBsZXgnLFxuICAgICAgICBmb3JtYXQ6IGRhdGEuY29tcGxleE91dHB1dC5fZGVmYXVsdC5mb3JtYXQubWltZVR5cGUgYXMgV3BzRGF0YUZvcm1hdFxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKGRhdGEuYm91bmRpbmdCb3hPdXRwdXQpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGlkOiBkYXRhLmlkZW50aWZpZXIudmFsdWUsXG4gICAgICAgIHRpdGxlOiBkYXRhLnRpdGxlLnZhbHVlLFxuICAgICAgICByZWZlcmVuY2U6IGZhbHNlLFxuICAgICAgICB0eXBlOiAnYmJveCcsXG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAoZGF0YS5saXRlcmFsT3V0cHV0KSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBpZDogZGF0YS5pZGVudGlmaWVyLnZhbHVlLFxuICAgICAgICB0aXRsZTogZGF0YS50aXRsZS52YWx1ZSxcbiAgICAgICAgcmVmZXJlbmNlOiBmYWxzZSxcbiAgICAgICAgdHlwZTogJ2xpdGVyYWwnLFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgdW5tYXJzaGFsIHRoZSBpbnB1dC1kZXNjcmlwdGlvbiBmb3IgJHtkYXRhLmlkZW50aWZpZXIudmFsdWV9YCk7XG4gICAgfVxuICB9XG5cbiAgdW5tYXJzaGFsQXN5bmNFeGVjdXRlUmVzcG9uc2UocmVzcG9uc2VKc29uOiBhbnksIHVybDogc3RyaW5nLCBwcm9jZXNzSWQ6IHN0cmluZywgaW5wdXRzOiBXcHNJbnB1dFtdLCBvdXRwdXREZXNjcmlwdGlvbnM6IFdwc0RhdGFEZXNjcmlwdGlvbltdKTogV3BzU3RhdGUge1xuICAgIHJldHVybiB0aGlzLnVubWFyc2hhbEdldFN0YXRlUmVzcG9uc2UocmVzcG9uc2VKc29uLCB1cmwsIHByb2Nlc3NJZCwgaW5wdXRzLCBvdXRwdXREZXNjcmlwdGlvbnMpO1xuICB9XG5cbiAgdW5tYXJzaGFsR2V0U3RhdGVSZXNwb25zZShyZXNwb25zZUpzb246IGFueSwgc2VydmVyVXJsOiBzdHJpbmcsIHByb2Nlc3NJZDogc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0czogV3BzRGF0YVtdLCBvdXRwdXREZXNjcmlwdGlvbnM6IFdwc0RhdGFEZXNjcmlwdGlvbltdKTogV3BzU3RhdGUge1xuXG4gICAgY29uc3QgcmVzcG9uc2U6IEV4ZWN1dGVSZXNwb25zZSA9IHJlc3BvbnNlSnNvbi52YWx1ZTtcblxuICAgIGNvbnN0IHN0YXR1cyA9IHJlc3BvbnNlLnN0YXR1cy5wcm9jZXNzU3VjY2VlZGVkID8gJ1N1Y2NlZWRlZCcgOlxuICAgICAgcmVzcG9uc2Uuc3RhdHVzLnByb2Nlc3NBY2NlcHRlZCA/ICdBY2NlcHRlZCcgOlxuICAgICAgICByZXNwb25zZS5zdGF0dXMucHJvY2Vzc1N0YXJ0ZWQgPyAnUnVubmluZycgOlxuICAgICAgICAgIHJlc3BvbnNlLnN0YXR1cy5wcm9jZXNzRmFpbGVkID8gJ0ZhaWxlZCcgOlxuICAgICAgICAgICAgJ0ZhaWxlZCc7XG5cbiAgICBjb25zdCBzdGF0ZTogV3BzU3RhdGUgPSB7XG4gICAgICBzdGF0dXMsXG4gICAgICBzdGF0dXNMb2NhdGlvbjogcmVzcG9uc2Uuc3RhdHVzTG9jYXRpb24sXG4gICAgfTtcblxuICAgIGlmIChyZXNwb25zZS5wcm9jZXNzT3V0cHV0cyAmJiByZXNwb25zZS5wcm9jZXNzT3V0cHV0cy5vdXRwdXQpIHtcbiAgICAgIHN0YXRlLnJlc3VsdHMgPSByZXNwb25zZUpzb247IC8vIHRoaXMudW5tYXJzaGFsU3luY0V4ZWN1dGVSZXNwb25zZShyZXNwb25zZUpzb24sIHNlcnZlclVybCwgcHJvY2Vzc0lkLCBpbnB1dHMsIG91dHB1dERlc2NyaXB0aW9ucyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG5cbiAgbWFyc2hhbEV4ZWNCb2R5KHByb2Nlc3NJZDogc3RyaW5nLCBpbnB1dHM6IFdwc0lucHV0W10sIG91dHB1dHM6IFdwc091dHB1dERlc2NyaXB0aW9uW10sIGFzeW5jOiBib29sZWFuKTogSVdwc0V4ZWN1dGVQcm9jZXNzQm9keSB7XG5cbiAgICBjb25zdCB3cHMxSW5wdXRzID0gdGhpcy5tYXJzaGFsSW5wdXRzKGlucHV0cyk7XG4gICAgY29uc3Qgd3BzMVJlc3BvbnNlRm9ybSA9IHRoaXMubWFyc2hhbFJlc3BvbnNlRm9ybShvdXRwdXRzLCBhc3luYyk7XG5cbiAgICBjb25zdCBib2R5VmFsdWU6IEV4ZWN1dGUgPSB7XG4gICAgICBkYXRhSW5wdXRzOiB3cHMxSW5wdXRzLFxuICAgICAgaWRlbnRpZmllcjogcHJvY2Vzc0lkLFxuICAgICAgcmVzcG9uc2VGb3JtOiB3cHMxUmVzcG9uc2VGb3JtLFxuICAgICAgc2VydmljZTogJ1dQUycsXG4gICAgICB2ZXJzaW9uOiAnMS4wLjAnXG4gICAgfTtcblxuICAgIGNvbnN0IGJvZHk6IElXcHNFeGVjdXRlUHJvY2Vzc0JvZHkgPSB7XG4gICAgICBuYW1lOiB7XG4gICAgICAgIGtleTogJ3todHRwOi8vd3d3Lm9wZW5naXMubmV0L3dwcy8xLjAuMH1FeGVjdXRlJyxcbiAgICAgICAgbG9jYWxQYXJ0OiAnRXhlY3V0ZScsXG4gICAgICAgIG5hbWVzcGFjZVVSSTogJ2h0dHA6Ly93d3cub3Blbmdpcy5uZXQvd3BzLzEuMC4wJyxcbiAgICAgICAgcHJlZml4OiAnd3BzJyxcbiAgICAgICAgc3RyaW5nOiAne2h0dHA6Ly93d3cub3Blbmdpcy5uZXQvd3BzLzEuMC4wfXdwczpFeGVjdXRlJ1xuICAgICAgfSxcbiAgICAgIHZhbHVlOiBib2R5VmFsdWVcbiAgICB9O1xuXG4gICAgcmV0dXJuIGJvZHk7XG5cbiAgfVxuXG5cbiAgcHJvdGVjdGVkIG1hcnNoYWxSZXNwb25zZUZvcm0ob3V0cHV0czogV3BzT3V0cHV0RGVzY3JpcHRpb25bXSwgYXN5bmMgPSBmYWxzZSk6IFJlc3BvbnNlRm9ybVR5cGUge1xuXG4gICAgY29uc3Qgb3V0cHV0RGVmaW5pdGlvbnM6IERvY3VtZW50T3V0cHV0RGVmaW5pdGlvblR5cGVbXSA9IFtdO1xuICAgIGZvciAoY29uc3Qgb3V0cHV0IG9mIG91dHB1dHMpIHtcbiAgICAgIGxldCBkZWZUeXBlOiBEb2N1bWVudE91dHB1dERlZmluaXRpb25UeXBlO1xuICAgICAgc3dpdGNoIChvdXRwdXQudHlwZSkge1xuICAgICAgICBjYXNlICdsaXRlcmFsJzpcbiAgICAgICAgICBkZWZUeXBlID0ge1xuICAgICAgICAgICAgaWRlbnRpZmllcjogeyB2YWx1ZTogb3V0cHV0LmlkIH0sXG4gICAgICAgICAgICBhc1JlZmVyZW5jZTogb3V0cHV0LnJlZmVyZW5jZSxcbiAgICAgICAgICAgIG1pbWVUeXBlOiBvdXRwdXQuZm9ybWF0XG4gICAgICAgICAgfTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnY29tcGxleCc6XG4gICAgICAgICAgZGVmVHlwZSA9IHtcbiAgICAgICAgICAgIGlkZW50aWZpZXI6IHsgdmFsdWU6IG91dHB1dC5pZCB9LFxuICAgICAgICAgICAgYXNSZWZlcmVuY2U6IG91dHB1dC5yZWZlcmVuY2UsXG4gICAgICAgICAgICBtaW1lVHlwZTogb3V0cHV0LmZvcm1hdFxuICAgICAgICAgIH07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaGlzIFdwcy1vdXRwdXR0eXBlIGhhcyBub3QgYmVlbiBpbXBsZW1lbnRlZCB5ZXQhICR7b3V0cHV0fSBgKTtcbiAgICAgIH1cbiAgICAgIG91dHB1dERlZmluaXRpb25zLnB1c2goZGVmVHlwZSk7XG4gICAgfVxuXG4gICAgY29uc3QgcmVzcG9uc2VEb2N1bWVudDogUmVzcG9uc2VEb2N1bWVudFR5cGUgPSB7XG4gICAgICBvdXRwdXQ6IG91dHB1dERlZmluaXRpb25zLFxuICAgICAgc3RhdHVzOiBhc3luYyA/IHRydWUgOiBmYWxzZSxcbiAgICAgIHN0b3JlRXhlY3V0ZVJlc3BvbnNlOiBhc3luYyA/IHRydWUgOiBmYWxzZVxuICAgIH07XG5cbiAgICBjb25zdCBmb3JtOiBSZXNwb25zZUZvcm1UeXBlID0ge1xuICAgICAgcmVzcG9uc2VEb2N1bWVudFxuICAgIH07XG4gICAgcmV0dXJuIGZvcm07XG4gIH1cblxuXG4gIHByb3RlY3RlZCBtYXJzaGFsSW5wdXRzKGlucHV0QXJyOiBXcHNJbnB1dFtdKTogRGF0YUlucHV0c1R5cGUge1xuICAgIGNvbnN0IHRoZUlucHV0czogSW5wdXRUeXBlW10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IGlucCBvZiBpbnB1dEFycikge1xuICAgICAgaWYgKGlucC52YWx1ZSA9PT0gbnVsbCB8fCBpbnAudmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFZhbHVlIGZvciBpbnB1dCAke2lucC5kZXNjcmlwdGlvbi5pZH0gaXMgbm90IHNldGApO1xuICAgICAgfVxuICAgICAgY29uc3QgbWFyc2hhbGxlZElucHV0ID0gdGhpcy5tYXJzaGFsSW5wdXQoaW5wKTtcbiAgICAgIHRoZUlucHV0cy5wdXNoKG1hcnNoYWxsZWRJbnB1dCk7XG4gICAgfVxuICAgIGNvbnN0IGlucHV0czogRGF0YUlucHV0c1R5cGUgPSB7XG4gICAgICBpbnB1dDogdGhlSW5wdXRzXG4gICAgfTtcbiAgICByZXR1cm4gaW5wdXRzO1xuICB9XG5cbiAgcHJvdGVjdGVkIG1hcnNoYWxJbnB1dChpbnB1dDogV3BzSW5wdXQpOiBJbnB1dFR5cGUge1xuICAgIGNvbnN0IGlkID0gaW5wdXQuZGVzY3JpcHRpb24uaWQ7XG4gICAgY29uc3QgdGl0bGUgPSBpbnB1dC5kZXNjcmlwdGlvbi5pZDtcbiAgICBjb25zdCBhYnN0cmFjdCA9ICcnO1xuXG4gICAgY29uc3QgaW5wdXRUeXBlOiBJbnB1dFR5cGUgPSB7XG4gICAgICBpZGVudGlmaWVyOiB7IHZhbHVlOiBpZCB9LFxuICAgICAgdGl0bGU6IHsgdmFsdWU6IHRpdGxlIH0sXG4gICAgICBfYWJzdHJhY3Q6IHsgdmFsdWU6IGFic3RyYWN0IH1cbiAgICB9O1xuXG4gICAgaWYgKGlucHV0LmRlc2NyaXB0aW9uLnJlZmVyZW5jZSkge1xuICAgICAgaW5wdXRUeXBlLnJlZmVyZW5jZSA9IHRoaXMubWFyc2hhbFJlZmVyZW5jZUlucHV0KGlucHV0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgaW5wdXRUeXBlLmRhdGEgPSB0aGlzLm1hcnNoYWxEYXRhSW5wdXQoaW5wdXQpO1xuICAgIH1cblxuICAgIHJldHVybiBpbnB1dFR5cGU7XG4gIH1cblxuICBwcm90ZWN0ZWQgbWFyc2hhbERhdGFJbnB1dChpbnB1dDogV3BzSW5wdXQpOiBEYXRhVHlwZSB7XG4gICAgbGV0IGRhdGE6IERhdGFUeXBlO1xuICAgIHN3aXRjaCAoaW5wdXQuZGVzY3JpcHRpb24udHlwZSkge1xuICAgICAgY2FzZSAnbGl0ZXJhbCc6XG4gICAgICAgIGRhdGEgPSB7XG4gICAgICAgICAgbGl0ZXJhbERhdGE6IHsgdmFsdWU6IFN0cmluZyhpbnB1dC52YWx1ZSkgfVxuICAgICAgICB9O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2Jib3gnOlxuICAgICAgICBjb25zdCB2YWx1ZXM6IFdwc0Jib3hWYWx1ZSA9IGlucHV0LnZhbHVlO1xuICAgICAgICBkYXRhID0ge1xuICAgICAgICAgIGJvdW5kaW5nQm94RGF0YToge1xuICAgICAgICAgICAgbG93ZXJDb3JuZXI6IFt2YWx1ZXMubGxsYXQsIHZhbHVlcy5sbGxvbl0sXG4gICAgICAgICAgICB1cHBlckNvcm5lcjogW3ZhbHVlcy51cmxhdCwgdmFsdWVzLnVybG9uXVxuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdjb21wbGV4JzpcbiAgICAgICAgc3dpdGNoIChpbnB1dC5kZXNjcmlwdGlvbi5mb3JtYXQpIHtcbiAgICAgICAgICBjYXNlICd0ZXh0L3htbCc6XG4gICAgICAgICAgICBkYXRhID0ge1xuICAgICAgICAgICAgICBjb21wbGV4RGF0YToge1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IFtpbnB1dC52YWx1ZV0sICAvLyBAVE9ETzogd2UgYXNzdW1lIGhlcmUgdGhhdCB0ZXh0L3htbC1kYXRhIGlzIGFscmVhZHkgc3RyaW5naWZpZWRcbiAgICAgICAgICAgICAgICBtaW1lVHlwZTogaW5wdXQuZGVzY3JpcHRpb24uZm9ybWF0XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgZGF0YSA9IHtcbiAgICAgICAgICAgICAgY29tcGxleERhdGE6IHtcbiAgICAgICAgICAgICAgICBjb250ZW50OiBbSlNPTi5zdHJpbmdpZnkoaW5wdXQudmFsdWUpXSxcbiAgICAgICAgICAgICAgICBtaW1lVHlwZTogaW5wdXQuZGVzY3JpcHRpb24uZm9ybWF0XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBFcnJvcihgVGhpcyBpbnB1dCBpcyBvZiB0eXBlICR7aW5wdXQuZGVzY3JpcHRpb24udHlwZX0uIFdlIGNhbiBvbmx5IG1hcnNoYWwgaW5wdXQgb2YgdHlwZSBsaXRlcmFsLCBiYm94IG9yIGNvbXBsZXguYCk7XG4gICAgfVxuICAgIHJldHVybiBkYXRhO1xuICB9XG5cbiAgcHJvdGVjdGVkIG1hcnNoYWxSZWZlcmVuY2VJbnB1dChpbnB1dDogV3BzSW5wdXQpOiBJbnB1dFJlZmVyZW5jZVR5cGUge1xuICAgIGNvbnN0IHJlZjogSW5wdXRSZWZlcmVuY2VUeXBlID0ge1xuICAgICAgaHJlZjogaW5wdXQudmFsdWUsXG4gICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgbWltZVR5cGU6IGlucHV0LmRlc2NyaXB0aW9uLmZvcm1hdFxuICAgIH07XG4gICAgcmV0dXJuIHJlZjtcbiAgfVxuXG4gIG1hcnNoYWxsR2V0U3RhdHVzQm9keShzZXJ2ZXJVcmw6IHN0cmluZywgcHJvY2Vzc0lkOiBzdHJpbmcsIHN0YXR1c0lkOiBzdHJpbmcpIHtcbiAgICAvLyBXUFMtMS4wIGRvZXMgbm90IHNlbmQgYSBib2R5IHdpdGggYSBHZXRTdGF0dXMgcmVxdWVzdC5cbiAgICByZXR1cm4ge307XG4gIH1cblxuICBtYXJzaGFsbEdldFJlc3VsdEJvZHkoc2VydmVyVXJsOiBzdHJpbmcsIHByb2Nlc3NJZDogc3RyaW5nLCBqb2JJRDogc3RyaW5nKSB7XG4gICAgLy8gV1BTLTEuMCBkb2VzIG5vdCBzZW5kIGEgYm9keSB3aXRoIGEgR2V0U3RhdHVzIHJlcXVlc3QuXG4gICAgcmV0dXJuIHt9O1xuICB9XG5cbiAgZGlzbWlzc1VybChzZXJ2ZXJVcmw6IHN0cmluZywgcHJvY2Vzc0lkOiBzdHJpbmcsIGpvYklkOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIC8qKiB0aGlzIGRvZXMgb25seSB3b3JrIGluIGdlb3NlcnZlcjpcbiAgICAgKiByZXR1cm4gYCR7c2VydmVyVXJsfT9zZXJ2aWNlPVdQUyZ2ZXJzaW9uPTEuMC4wJnJlcXVlc3Q9RGlzbWlzcyZleGVjdXRpb25JZD0ke2pvYklkfWA7XG4gICAgICovXG4gICAgdGhyb3cgbmV3IEVycm9yKCdXcHMgMS4wIGRvZXMgbm90IHN1cHBvcnQgRGlzbWlzcy1vcGVyYXRpb25zLicpO1xuICB9XG5cbiAgbWFyc2hhbERpc21pc3NCb2R5KHByb2Nlc3NJZDogc3RyaW5nKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdXcHMgMS4wIGRvZXMgbm90IHN1cHBvcnQgRGlzbWlzcy1vcGVyYXRpb25zLicpO1xuICB9XG5cbiAgdW5tYXJzaGFsRGlzbWlzc1Jlc3BvbnNlKGpzb25SZXNwb25zZTogYW55LCBzZXJ2ZXJVcmw6IHN0cmluZywgcHJvY2Vzc0lkOiBzdHJpbmcpOiBXcHNTdGF0ZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdXcHMgMS4wIGRvZXMgbm90IHN1cHBvcnQgRGlzbWlzcy1vcGVyYXRpb25zLicpO1xuICB9XG59XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3BzX21hcnNoYWxsZXJfMS4wLjAuanMiLCJzb3VyY2VSb290IjoiL2hvbWUvcnVubmVyL3dvcmsvdWtpcy1mcm9udGVuZC1saWJyYXJpZXMvdWtpcy1mcm9udGVuZC1saWJyYXJpZXMvcHJvamVjdHMvdXRpbHMtb2djL3NyYy8iLCJzb3VyY2VzIjpbImxpYi93cHMvd3BzMTAwL3dwc19tYXJzaGFsbGVyXzEuMC4wLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9BLE9BQU8sS0FBSyxhQUFhLE1BQU0sZUFBZSxDQUFDO0FBSS9DLE1BQU0sT0FBTyxnQkFBZ0I7SUFFM0IsZ0JBQWdCLENBQUM7SUFFakIsa0JBQWtCLENBQUMsT0FBZTtRQUNoQyxPQUFPLEdBQUcsT0FBTyxvREFBb0QsQ0FBQztJQUN4RSxDQUFDO0lBRUQscUJBQXFCLENBQUMsT0FBZSxFQUFFLFNBQWlCO1FBQ3RELE9BQU8sR0FBRyxPQUFPLGlFQUFpRSxTQUFTLEVBQUUsQ0FBQztJQUNoRyxDQUFDO0lBRUQsVUFBVSxDQUFDLE9BQWUsRUFBRSxTQUFpQjtRQUMzQyxPQUFPLEdBQUcsT0FBTyx5REFBeUQsU0FBUyxFQUFFLENBQUM7SUFDeEYsQ0FBQztJQUVELHFCQUFxQixDQUFDLFlBQWlDO1FBQ3JELE1BQU0sR0FBRyxHQUFvQixFQUFFLENBQUM7UUFDaEMsWUFBWSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDdEQsR0FBRyxDQUFDLElBQUksQ0FBQztnQkFDUCxFQUFFLEVBQUUsT0FBTyxDQUFDLFVBQVUsQ0FBQyxLQUFLO2FBQzdCLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBRUQsMkJBQTJCLENBQUMsc0JBQW1EOztRQUM3RSxNQUFNLFdBQVcsR0FBRyxzQkFBc0IsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUVqRSxNQUFNLE1BQU0sR0FBZSxF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U0FBaUIsRUFBRSxLQUFhO1FBQ3ZFLHlEQUF5RDtRQUN6RCxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFFRCxVQUFVLENBQUMsU0FBaUIsRUFBRSxTQUFpQixFQUFFLEtBQWE7UUFDNUQ7O1dBRUc7UUFDSCxNQUFNLElBQUksS0FBSyxDQUFDLDhDQUE4QyxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUVELGtCQUFrQixDQUFDLFNBQWlCO1FBQ2xDLE1BQU0sSUFBSSxLQUFLLENBQUMsOENBQThDLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRUQsd0JBQXdCLENBQUMsWUFBaUIsRUFBRSxTQUFpQixFQUFFLFNBQWlCO1FBQzlFLE1BQU0sSUFBSSxLQUFLLENBQUMsOENBQThDLENBQUMsQ0FBQztJQUNsRSxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBXcHNNYXJzaGFsbGVyLCBXcHNJbnB1dCwgV3BzT3V0cHV0RGVzY3JpcHRpb24sIFdwc1Jlc3VsdCwgV3BzQ2FwYWJpbGl0eSwgV3BzQmJveFZhbHVlLCBXcHNEYXRhLCBcbiAgV3BzRGF0YURlc2NyaXB0aW9uLCBXcHNTdGF0ZSwgV3BzRGF0YUZvcm1hdCwgV3BzUHJvY2Vzc0Rlc2NyaXB0aW9uIH0gZnJvbSAnLi4vd3BzX2RhdGF0eXBlcyc7XG5pbXBvcnQge1xuICBXUFNDYXBhYmlsaXRpZXNUeXBlLCBJV3BzRXhlY3V0ZVByb2Nlc3NCb2R5LCBFeGVjdXRlLCBEYXRhSW5wdXRzVHlwZSxcbiAgSW5wdXRUeXBlLCBSZXNwb25zZUZvcm1UeXBlLCBEYXRhVHlwZSwgSVdwc0V4ZWN1dGVSZXNwb25zZSwgRG9jdW1lbnRPdXRwdXREZWZpbml0aW9uVHlwZSxcbiAgUmVzcG9uc2VEb2N1bWVudFR5cGUsIElucHV0UmVmZXJlbmNlVHlwZSwgRXhlY3V0ZVJlc3BvbnNlLCBJV3BzRGVzY3JpYmVQcm9jZXNzUmVzcG9uc2UsXG4gIElucHV0RGVzY3JpcHRpb25UeXBlLCBPdXRwdXREZXNjcmlwdGlvblR5cGUgfSBmcm9tICcuL3dwc18xLjAuMCc7XG5pbXBvcnQgKiBhcyB4bWxzZXJpYWxpemVyIGZyb20gJ3htbHNlcmlhbGl6ZXInO1xuXG5cblxuZXhwb3J0IGNsYXNzIFdwc01hcnNoYWxsZXIxMDAgaW1wbGVtZW50cyBXcHNNYXJzaGFsbGVyIHtcblxuICBjb25zdHJ1Y3RvcigpIHsgfVxuXG4gIGdldENhcGFiaWxpdGllc1VybChiYXNldXJsOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHtiYXNldXJsfT9zZXJ2aWNlPVdQUyZyZXF1ZXN0PUdldENhcGFiaWxpdGllcyZ2ZXJzaW9uPTEuMC4wYDtcbiAgfVxuXG4gIGdldERlc2NyaWJlUHJvY2Vzc1VybChiYXNldXJsOiBzdHJpbmcsIHByb2Nlc3NJZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7YmFzZXVybH0/c2VydmljZT1XUFMmcmVxdWVzdD1EZXNjcmliZVByb2Nlc3MmdmVyc2lvbj0xLjAuMCZJZGVudGlmaWVyPSR7cHJvY2Vzc0lkfWA7XG4gIH1cblxuICBleGVjdXRlVXJsKGJhc2V1cmw6IHN0cmluZywgcHJvY2Vzc0lkOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHtiYXNldXJsfT9zZXJ2aWNlPVdQUyZyZXF1ZXN0PUV4ZWN1dGUmdmVyc2lvbj0xLjAuMCZpZGVudGlmaWVyPSR7cHJvY2Vzc0lkfWA7XG4gIH1cblxuICB1bm1hcnNoYWxDYXBhYmlsaXRpZXMoY2FwYWJpbGl0aWVzOiBXUFNDYXBhYmlsaXRpZXNUeXBlKTogV3BzQ2FwYWJpbGl0eVtdIHtcbiAgICBjb25zdCBvdXQ6IFdwc0NhcGFiaWxpdHlbXSA9IFtdO1xuICAgIGNhcGFiaWxpdGllcy5wcm9jZXNzT2ZmZXJpbmdzLnByb2Nlc3MuZm9yRWFjaChwcm9jZXNzID0+IHtcbiAgICAgIG91dC5wdXNoKHtcbiAgICAgICAgaWQ6IHByb2Nlc3MuaWRlbnRpZmllci52YWx1ZVxuICAgICAgfSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIG91dDtcbiAgfVxuXG4gIHVubWFyc2hhbFByb2Nlc3NEZXNjcmlwdGlvbihwcm9jZXNzRGVzY3JpcHRpb25Kc29uOiBJV3BzRGVzY3JpYmVQcm9jZXNzUmVzcG9uc2UpOiBXcHNQcm9jZXNzRGVzY3JpcHRpb24ge1xuICAgIGNvbnN0IGRlc2NyaXB0aW9uID0gcHJvY2Vzc0Rlc2NyaXB0aW9uSnNvbi5wcm9jZXNzRGVzY3JpcHRpb25bMF07XG5cbiAgICBjb25zdCBpbnB1dHM6IFdwc0lucHV0W10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IGRhdGFJbnB1dCBvZiBkZXNjcmlwdGlvbi5kYXRhSW5wdXRzLmlucHV0KSB7XG4gICAgICBpbnB1dHMucHVzaCh7XG4gICAgICAgIGRlc2NyaXB0aW9uOiB0aGlzLnVubWFyc2hhbElucHV0RGVzY3JpcHRpb24oZGF0YUlucHV0KSxcbiAgICAgICAgdmFsdWU6IG51bGxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGNvbnN0IG91dHB1dHM6IFdwc1Jlc3VsdFtdID0gW107XG4gICAgZm9yIChjb25zdCBwcm9jZXNzT3V0cHV0IG9mIGRlc2NyaXB0aW9uLnByb2Nlc3NPdXRwdXRzLm91dHB1dCkge1xuICAgICAgb3V0cHV0cy5wdXNoKHtcbiAgICAgICAgZGVzY3JpcHRpb246IHRoaXMudW5tYXJzaGFsT3V0cHV0RGVzY3JpcHRpb24ocHJvY2Vzc091dHB1dCksXG4gICAgICAgIHZhbHVlOiBudWxsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgaWQ6IGRlc2NyaXB0aW9uLmlkZW50aWZpZXIudmFsdWUsXG4gICAgICBwcm9jZXNzVmVyc2lvbjogZGVzY3JpcHRpb24ucHJvY2Vzc1ZlcnNpb24sXG4gICAgICBkZXNjcmlwdGlvbjogZGVzY3JpcHRpb24uX2Fic3RyYWN0Py52YWx1ZSxcbiAgICAgIHRpdGxlOiBkZXNjcmlwdGlvbi50aXRsZS52YWx1ZSxcbiAgICAgIGlucHV0czogaW5wdXRzLFxuICAgICAgb3V0cHV0czogb3V0cHV0cyxcbiAgICB9O1xuICB9XG5cbiAgdW5tYXJzaGFsU3luY0V4ZWN1dGVSZXNwb25zZShyZXNwb25zZUpzb246IElXcHNFeGVjdXRlUmVzcG9uc2UsIHVybDogc3RyaW5nLCBwcm9jZXNzSWQ6IHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dHM6IFdwc0lucHV0W10sIG91dHB1dERlc2NyaXB0aW9uczogV3BzT3V0cHV0RGVzY3JpcHRpb25bXSk6IFdwc1Jlc3VsdFtdIHtcblxuICAgIGNvbnN0IG91dDogV3BzUmVzdWx0W10gPSBbXTtcblxuICAgIGlmIChyZXNwb25zZUpzb24udmFsdWUuc3RhdHVzLnByb2Nlc3NGYWlsZWQpIHsgLy8gRmFpbHVyZT9cbiAgICAgIG91dC5wdXNoKHtcbiAgICAgICAgZGVzY3JpcHRpb246IHtcbiAgICAgICAgICBpZDogcmVzcG9uc2VKc29uLnZhbHVlLnByb2Nlc3MuaWRlbnRpZmllci52YWx1ZSxcbiAgICAgICAgICB0aXRsZTogcmVzcG9uc2VKc29uLnZhbHVlLnByb2Nlc3MudGl0bGUudmFsdWUsXG4gICAgICAgICAgcmVmZXJlbmNlOiB0cnVlLFxuICAgICAgICAgIHR5cGU6ICdlcnJvcidcbiAgICAgICAgfSxcbiAgICAgICAgdmFsdWU6IHJlc3BvbnNlSnNvbi52YWx1ZS5zdGF0dXNMb2NhdGlvblxuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmIChyZXNwb25zZUpzb24udmFsdWUucHJvY2Vzc091dHB1dHMpIHsgLy8gc3luY2hyb25vdXMgcmVxdWVzdD9cbiAgICAgIGZvciAoY29uc3Qgb3V0cHV0IG9mIHJlc3BvbnNlSnNvbi52YWx1ZS5wcm9jZXNzT3V0cHV0cy5vdXRwdXQpIHtcbiAgICAgICAgY29uc3QgaXNSZWZlcmVuY2UgPSBvdXRwdXQucmVmZXJlbmNlID8gdHJ1ZSA6IGZhbHNlO1xuXG4gICAgICAgIGxldCBkYXRhdHlwZTogJ2xpdGVyYWwnIHwgJ2NvbXBsZXgnIHwgJ2Jib3gnIHwgJ3N0YXR1cycgfCAnZXJyb3InO1xuICAgICAgICBsZXQgZGF0YTtcbiAgICAgICAgbGV0IGZvcm1hdDogV3BzRGF0YUZvcm1hdCB8IHVuZGVmaW5lZDtcbiAgICAgICAgaWYgKG91dHB1dC5yZWZlcmVuY2UpIHtcbiAgICAgICAgICBkYXRhdHlwZSA9ICdjb21wbGV4JztcbiAgICAgICAgICBkYXRhID0gb3V0cHV0LnJlZmVyZW5jZS5ocmVmIHx8IG51bGw7XG4gICAgICAgICAgZm9ybWF0ID0gb3V0cHV0LnJlZmVyZW5jZS5taW1lVHlwZSBhcyBXcHNEYXRhRm9ybWF0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmIChvdXRwdXQuZGF0YSAmJiBvdXRwdXQuZGF0YS5saXRlcmFsRGF0YSkge1xuICAgICAgICAgICAgZGF0YXR5cGUgPSAnbGl0ZXJhbCc7XG4gICAgICAgICAgICBmb3JtYXQgPSBvdXRwdXQuZGF0YS5saXRlcmFsRGF0YS5kYXRhVHlwZSBhcyBXcHNEYXRhRm9ybWF0O1xuICAgICAgICAgIH0gZWxzZSBpZiAob3V0cHV0LmRhdGEgJiYgb3V0cHV0LmRhdGEuY29tcGxleERhdGEpIHtcbiAgICAgICAgICAgIGRhdGF0eXBlID0gJ2NvbXBsZXgnO1xuICAgICAgICAgICAgZm9ybWF0ID0gb3V0cHV0LmRhdGEuY29tcGxleERhdGEubWltZVR5cGUgYXMgV3BzRGF0YUZvcm1hdDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZGF0YXR5cGUgPSAnYmJveCc7XG4gICAgICAgICAgICBmb3JtYXQgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICBkYXRhID0gdGhpcy51bm1hcnNoYWxPdXRwdXREYXRhKG91dHB1dC5kYXRhKTtcbiAgICAgICAgfVxuXG4gICAgICAgIG91dC5wdXNoKHtcbiAgICAgICAgICBkZXNjcmlwdGlvbjoge1xuICAgICAgICAgICAgaWQ6IG91dHB1dC5pZGVudGlmaWVyLnZhbHVlLFxuICAgICAgICAgICAgdGl0bGU6IG91dHB1dC50aXRsZS52YWx1ZSxcbiAgICAgICAgICAgIGZvcm1hdCxcbiAgICAgICAgICAgIHJlZmVyZW5jZTogaXNSZWZlcmVuY2UsXG4gICAgICAgICAgICB0eXBlOiBkYXRhdHlwZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgdmFsdWU6IGRhdGEsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAocmVzcG9uc2VKc29uLnZhbHVlLnN0YXR1c0xvY2F0aW9uKSB7IC8vIGFzeW5jaHJvbm91cyByZXF1ZXN0P1xuICAgICAgb3V0LnB1c2goe1xuICAgICAgICBkZXNjcmlwdGlvbjoge1xuICAgICAgICAgIGlkOiByZXNwb25zZUpzb24udmFsdWUucHJvY2Vzcy5pZGVudGlmaWVyLnZhbHVlLFxuICAgICAgICAgIHRpdGxlOiByZXNwb25zZUpzb24udmFsdWUucHJvY2Vzcy50aXRsZS52YWx1ZSxcbiAgICAgICAgICByZWZlcmVuY2U6IHRydWUsXG4gICAgICAgICAgdHlwZTogJ3N0YXR1cydcbiAgICAgICAgfSxcbiAgICAgICAgdmFsdWU6IHRoaXMudW5tYXJzaGFsR2V0U3RhdGVSZXNwb25zZShyZXNwb25zZUpzb24sIHVybCwgcHJvY2Vzc0lkLCBpbnB1dHMsIG91dHB1dERlc2NyaXB0aW9ucylcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBvdXQ7XG4gIH1cblxuICBwcm90ZWN0ZWQgdW5tYXJzaGFsT3V0cHV0RGF0YShkYXRhOiBEYXRhVHlwZSk6IGFueSB7XG4gICAgaWYgKGRhdGEuY29tcGxleERhdGEpIHtcblxuICAgICAgaWYgKGRhdGEuY29tcGxleERhdGEuZW5jb2RpbmcgPT09ICdiYXNlNjQnKSB7XG4gICAgICAgIGlmICh0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJyAmJiBtb2R1bGUuZXhwb3J0cykgeyAvLyBub2RlXG4gICAgICAgICAgZGF0YS5jb21wbGV4RGF0YS5jb250ZW50Lm1hcChjID0+IG5ldyBCdWZmZXIoYywgJ2Jhc2U2NCcpLnRvU3RyaW5nKCdhc2NpaScpKTtcbiAgICAgICAgfSBlbHNlIHsgLy8gYnJvd3NlclxuICAgICAgICAgIGRhdGEuY29tcGxleERhdGEuY29udGVudC5tYXAoYyA9PiBhdG9iKGMpKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBzd2l0Y2ggKGRhdGEuY29tcGxleERhdGEubWltZVR5cGUpIHtcbiAgICAgICAgY2FzZSAnYXBwbGljYXRpb24vdm5kLmdlbytqc29uJzpcbiAgICAgICAgY2FzZSAnYXBwbGljYXRpb24vanNvbic6XG4gICAgICAgICAgcmV0dXJuIGRhdGEuY29tcGxleERhdGEuY29udGVudC5tYXAoY29udCA9PiBKU09OLnBhcnNlKGNvbnQpKTtcbiAgICAgICAgY2FzZSAnYXBwbGljYXRpb24vV01TJzpcbiAgICAgICAgICByZXR1cm4gZGF0YS5jb21wbGV4RGF0YS5jb250ZW50O1xuICAgICAgICBjYXNlICd0ZXh0L3htbCc6XG4gICAgICAgIGNhc2UgJ2FwcGxpY2F0aW9uL3htbCc6XG4gICAgICAgICAgcmV0dXJuIHhtbHNlcmlhbGl6ZXIuc2VyaWFsaXplVG9TdHJpbmcoZGF0YS5jb21wbGV4RGF0YS5jb250ZW50WzBdKTsgLy8gQFRPRE86IGJldHRlcjogaGFuZGxlIGFjdHVhbCB4bWwtZGF0YVxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IHVubWFyc2hhbCBkYXRhIG9mIGZvcm1hdCAke2RhdGEuY29tcGxleERhdGEubWltZVR5cGV9YCk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChkYXRhLmxpdGVyYWxEYXRhKSB7XG4gICAgICBzd2l0Y2ggKGRhdGEubGl0ZXJhbERhdGEuZGF0YVR5cGUpIHtcbiAgICAgICAgY2FzZSAnc3RyaW5nJzpcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm4gZGF0YS5saXRlcmFsRGF0YS52YWx1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aHJvdyBuZXcgRXJyb3IoYE5vdCB5ZXQgaW1wbGVtZW50ZWQ6ICR7ZGF0YX1gKTtcbiAgfVxuXG4gIHByb3RlY3RlZCB1bm1hcnNoYWxJbnB1dERlc2NyaXB0aW9uKGRhdGE6IElucHV0RGVzY3JpcHRpb25UeXBlKTogV3BzRGF0YURlc2NyaXB0aW9uIHtcbiAgICBpZiAoZGF0YS5ib3VuZGluZ0JveERhdGEpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGlkOiBkYXRhLmlkZW50aWZpZXIudmFsdWUsXG4gICAgICAgIHRpdGxlOiBkYXRhLnRpdGxlLnZhbHVlLFxuICAgICAgICByZWZlcmVuY2U6IGZhbHNlLFxuICAgICAgICB0eXBlOiAnYmJveCcsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBkYXRhLl9hYnN0cmFjdD8udmFsdWUsXG4gICAgICAgIGZvcm1hdDogJ3RleHQvcGxhaW4nLFxuICAgICAgfTtcbiAgICB9XG4gICAgZWxzZSBpZiAoZGF0YS5jb21wbGV4RGF0YSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaWQ6IGRhdGEuaWRlbnRpZmllci52YWx1ZSxcbiAgICAgICAgdGl0bGU6IGRhdGEudGl0bGUudmFsdWUsXG4gICAgICAgIHJlZmVyZW5jZTogZGF0YS5zdG9yZVN1cHBvcnRlZCxcbiAgICAgICAgdHlwZTogJ2NvbXBsZXgnLFxuICAgICAgICBkZXNjcmlwdGlvbjogZGF0YS5fYWJzdHJhY3Q/LnZhbHVlLFxuICAgICAgICBmb3JtYXQ6IGRhdGEuY29tcGxleERhdGEuX2RlZmF1bHQuZm9ybWF0Lm1pbWVUeXBlIGFzIFdwc0RhdGFGb3JtYXRcbiAgICAgIH07XG4gICAgfVxuICAgIGVsc2UgaWYgKGRhdGEubGl0ZXJhbERhdGEpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGlkOiBkYXRhLmlkZW50aWZpZXIudmFsdWUsXG4gICAgICAgIHRpdGxlOiBkYXRhLnRpdGxlLnZhbHVlLFxuICAgICAgICByZWZlcmVuY2U6IGZhbHNlLFxuICAgICAgICB0eXBlOiAnbGl0ZXJhbCcsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBkYXRhLl9hYnN0cmFjdD8udmFsdWUsXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogZGF0YS5saXRlcmFsRGF0YS5kZWZhdWx0VmFsdWUsXG4gICAgICAgIG9wdGlvbnM6IGRhdGEubGl0ZXJhbERhdGEuYWxsb3dlZFZhbHVlcz8udmFsdWVPclJhbmdlLm1hcCh2ID0+IHYudmFsdWUpLFxuICAgICAgICBmb3JtYXQ6ICd0ZXh0L3BsYWluJ1xuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgdW5tYXJzaGFsIHRoZSBpbnB1dC1kZXNjcmlwdGlvbiBmb3IgJHtkYXRhLmlkZW50aWZpZXIudmFsdWV9YCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIHVubWFyc2hhbE91dHB1dERlc2NyaXB0aW9uKGRhdGE6IE91dHB1dERlc2NyaXB0aW9uVHlwZSk6IFdwc0RhdGFEZXNjcmlwdGlvbiB7XG4gICAgaWYgKGRhdGEuY29tcGxleE91dHB1dCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaWQ6IGRhdGEuaWRlbnRpZmllci52YWx1ZSxcbiAgICAgICAgdGl0bGU6IGRhdGEudGl0bGUudmFsdWUsXG4gICAgICAgIHJlZmVyZW5jZTogdHJ1ZSxcbiAgICAgICAgdHlwZTogJ2NvbXBsZXgnLFxuICAgICAgICBmb3JtYXQ6IGRhdGEuY29tcGxleE91dHB1dC5fZGVmYXVsdC5mb3JtYXQubWltZVR5cGUgYXMgV3BzRGF0YUZvcm1hdFxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKGRhdGEuYm91bmRpbmdCb3hPdXRwdXQpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGlkOiBkYXRhLmlkZW50aWZpZXIudmFsdWUsXG4gICAgICAgIHRpdGxlOiBkYXRhLnRpdGxlLnZhbHVlLFxuICAgICAgICByZWZlcmVuY2U6IGZhbHNlLFxuICAgICAgICB0eXBlOiAnYmJveCcsXG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAoZGF0YS5saXRlcmFsT3V0cHV0KSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBpZDogZGF0YS5pZGVudGlmaWVyLnZhbHVlLFxuICAgICAgICB0aXRsZTogZGF0YS50aXRsZS52YWx1ZSxcbiAgICAgICAgcmVmZXJlbmNlOiBmYWxzZSxcbiAgICAgICAgdHlwZTogJ2xpdGVyYWwnLFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgdW5tYXJzaGFsIHRoZSBpbnB1dC1kZXNjcmlwdGlvbiBmb3IgJHtkYXRhLmlkZW50aWZpZXIudmFsdWV9YCk7XG4gICAgfVxuICB9XG5cbiAgdW5tYXJzaGFsQXN5bmNFeGVjdXRlUmVzcG9uc2UocmVzcG9uc2VKc29uOiBhbnksIHVybDogc3RyaW5nLCBwcm9jZXNzSWQ6IHN0cmluZywgaW5wdXRzOiBXcHNJbnB1dFtdLCBvdXRwdXREZXNjcmlwdGlvbnM6IFdwc0RhdGFEZXNjcmlwdGlvbltdKTogV3BzU3RhdGUge1xuICAgIHJldHVybiB0aGlzLnVubWFyc2hhbEdldFN0YXRlUmVzcG9uc2UocmVzcG9uc2VKc29uLCB1cmwsIHByb2Nlc3NJZCwgaW5wdXRzLCBvdXRwdXREZXNjcmlwdGlvbnMpO1xuICB9XG5cbiAgdW5tYXJzaGFsR2V0U3RhdGVSZXNwb25zZShyZXNwb25zZUpzb246IGFueSwgc2VydmVyVXJsOiBzdHJpbmcsIHByb2Nlc3NJZDogc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0czogV3BzRGF0YVtdLCBvdXRwdXREZXNjcmlwdGlvbnM6IFdwc0RhdGFEZXNjcmlwdGlvbltdKTogV3BzU3RhdGUge1xuXG4gICAgY29uc3QgcmVzcG9uc2U6IEV4ZWN1dGVSZXNwb25zZSA9IHJlc3BvbnNlSnNvbi52YWx1ZTtcblxuICAgIGNvbnN0IHN0YXR1cyA9IHJlc3BvbnNlLnN0YXR1cy5wcm9jZXNzU3VjY2VlZGVkID8gJ1N1Y2NlZWRlZCcgOlxuICAgICAgcmVzcG9uc2Uuc3RhdHVzLnByb2Nlc3NBY2NlcHRlZCA/ICdBY2NlcHRlZCcgOlxuICAgICAgICByZXNwb25zZS5zdGF0dXMucHJvY2Vzc1N0YXJ0ZWQgPyAnUnVubmluZycgOlxuICAgICAgICAgIHJlc3BvbnNlLnN0YXR1cy5wcm9jZXNzRmFpbGVkID8gJ0ZhaWxlZCcgOlxuICAgICAgICAgICAgJ0ZhaWxlZCc7XG5cbiAgICBjb25zdCBzdGF0ZTogV3BzU3RhdGUgPSB7XG4gICAgICBzdGF0dXMsXG4gICAgICBzdGF0dXNMb2NhdGlvbjogcmVzcG9uc2Uuc3RhdHVzTG9jYXRpb24sXG4gICAgfTtcblxuICAgIGlmIChyZXNwb25zZS5wcm9jZXNzT3V0cHV0cyAmJiByZXNwb25zZS5wcm9jZXNzT3V0cHV0cy5vdXRwdXQpIHtcbiAgICAgIHN0YXRlLnJlc3VsdHMgPSByZXNwb25zZUpzb247IC8vIHRoaXMudW5tYXJzaGFsU3luY0V4ZWN1dGVSZXNwb25zZShyZXNwb25zZUpzb24sIHNlcnZlclVybCwgcHJvY2Vzc0lkLCBpbnB1dHMsIG91dHB1dERlc2NyaXB0aW9ucyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG5cbiAgbWFyc2hhbEV4ZWNCb2R5KHByb2Nlc3NJZDogc3RyaW5nLCBpbnB1dHM6IFdwc0lucHV0W10sIG91dHB1dHM6IFdwc091dHB1dERlc2NyaXB0aW9uW10sIGFzeW5jOiBib29sZWFuKTogSVdwc0V4ZWN1dGVQcm9jZXNzQm9keSB7XG5cbiAgICBjb25zdCB3cHMxSW5wdXRzID0gdGhpcy5tYXJzaGFsSW5wdXRzKGlucHV0cyk7XG4gICAgY29uc3Qgd3BzMVJlc3BvbnNlRm9ybSA9IHRoaXMubWFyc2hhbFJlc3BvbnNlRm9ybShvdXRwdXRzLCBhc3luYyk7XG5cbiAgICBjb25zdCBib2R5VmFsdWU6IEV4ZWN1dGUgPSB7XG4gICAgICBkYXRhSW5wdXRzOiB3cHMxSW5wdXRzLFxuICAgICAgaWRlbnRpZmllcjogcHJvY2Vzc0lkLFxuICAgICAgcmVzcG9uc2VGb3JtOiB3cHMxUmVzcG9uc2VGb3JtLFxuICAgICAgc2VydmljZTogJ1dQUycsXG4gICAgICB2ZXJzaW9uOiAnMS4wLjAnXG4gICAgfTtcblxuICAgIGNvbnN0IGJvZHk6IElXcHNFeGVjdXRlUHJvY2Vzc0JvZHkgPSB7XG4gICAgICBuYW1lOiB7XG4gICAgICAgIGtleTogJ3todHRwOi8vd3d3Lm9wZW5naXMubmV0L3dwcy8xLjAuMH1FeGVjdXRlJyxcbiAgICAgICAgbG9jYWxQYXJ0OiAnRXhlY3V0ZScsXG4gICAgICAgIG5hbWVzcGFjZVVSSTogJ2h0dHA6Ly93d3cub3Blbmdpcy5uZXQvd3BzLzEuMC4wJyxcbiAgICAgICAgcHJlZml4OiAnd3BzJyxcbiAgICAgICAgc3RyaW5nOiAne2h0dHA6Ly93d3cub3Blbmdpcy5uZXQvd3BzLzEuMC4wfXdwczpFeGVjdXRlJ1xuICAgICAgfSxcbiAgICAgIHZhbHVlOiBib2R5VmFsdWVcbiAgICB9O1xuXG4gICAgcmV0dXJuIGJvZHk7XG5cbiAgfVxuXG5cbiAgcHJvdGVjdGVkIG1hcnNoYWxSZXNwb25zZUZvcm0ob3V0cHV0czogV3BzT3V0cHV0RGVzY3JpcHRpb25bXSwgYXN5bmMgPSBmYWxzZSk6IFJlc3BvbnNlRm9ybVR5cGUge1xuXG4gICAgY29uc3Qgb3V0cHV0RGVmaW5pdGlvbnM6IERvY3VtZW50T3V0cHV0RGVmaW5pdGlvblR5cGVbXSA9IFtdO1xuICAgIGZvciAoY29uc3Qgb3V0cHV0IG9mIG91dHB1dHMpIHtcbiAgICAgIGxldCBkZWZUeXBlOiBEb2N1bWVudE91dHB1dERlZmluaXRpb25UeXBlO1xuICAgICAgc3dpdGNoIChvdXRwdXQudHlwZSkge1xuICAgICAgICBjYXNlICdsaXRlcmFsJzpcbiAgICAgICAgICBkZWZUeXBlID0ge1xuICAgICAgICAgICAgaWRlbnRpZmllcjogeyB2YWx1ZTogb3V0cHV0LmlkIH0sXG4gICAgICAgICAgICBhc1JlZmVyZW5jZTogb3V0cHV0LnJlZmVyZW5jZSxcbiAgICAgICAgICAgIG1pbWVUeXBlOiBvdXRwdXQuZm9ybWF0XG4gICAgICAgICAgfTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnY29tcGxleCc6XG4gICAgICAgICAgZGVmVHlwZSA9IHtcbiAgICAgICAgICAgIGlkZW50aWZpZXI6IHsgdmFsdWU6IG91dHB1dC5pZCB9LFxuICAgICAgICAgICAgYXNSZWZlcmVuY2U6IG91dHB1dC5yZWZlcmVuY2UsXG4gICAgICAgICAgICBtaW1lVHlwZTogb3V0cHV0LmZvcm1hdFxuICAgICAgICAgIH07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaGlzIFdwcy1vdXRwdXR0eXBlIGhhcyBub3QgYmVlbiBpbXBsZW1lbnRlZCB5ZXQhICR7b3V0cHV0fSBgKTtcbiAgICAgIH1cbiAgICAgIG91dHB1dERlZmluaXRpb25zLnB1c2goZGVmVHlwZSk7XG4gICAgfVxuXG4gICAgY29uc3QgcmVzcG9uc2VEb2N1bWVudDogUmVzcG9uc2VEb2N1bWVudFR5cGUgPSB7XG4gICAgICBvdXRwdXQ6IG91dHB1dERlZmluaXRpb25zLFxuICAgICAgc3RhdHVzOiBhc3luYyA/IHRydWUgOiBmYWxzZSxcbiAgICAgIHN0b3JlRXhlY3V0ZVJlc3BvbnNlOiBhc3luYyA/IHRydWUgOiBmYWxzZVxuICAgIH07XG5cbiAgICBjb25zdCBmb3JtOiBSZXNwb25zZUZvcm1UeXBlID0ge1xuICAgICAgcmVzcG9uc2VEb2N1bWVudFxuICAgIH07XG4gICAgcmV0dXJuIGZvcm07XG4gIH1cblxuXG4gIHByb3RlY3RlZCBtYXJzaGFsSW5wdXRzKGlucHV0QXJyOiBXcHNJbnB1dFtdKTogRGF0YUlucHV0c1R5cGUge1xuICAgIGNvbnN0IHRoZUlucHV0czogSW5wdXRUeXBlW10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IGlucCBvZiBpbnB1dEFycikge1xuICAgICAgaWYgKGlucC52YWx1ZSA9PT0gbnVsbCB8fCBpbnAudmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFZhbHVlIGZvciBpbnB1dCAke2lucC5kZXNjcmlwdGlvbi5pZH0gaXMgbm90IHNldGApO1xuICAgICAgfVxuICAgICAgY29uc3QgbWFyc2hhbGxlZElucHV0ID0gdGhpcy5tYXJzaGFsSW5wdXQoaW5wKTtcbiAgICAgIHRoZUlucHV0cy5wdXNoKG1hcnNoYWxsZWRJbnB1dCk7XG4gICAgfVxuICAgIGNvbnN0IGlucHV0czogRGF0YUlucHV0c1R5cGUgPSB7XG4gICAgICBpbnB1dDogdGhlSW5wdXRzXG4gICAgfTtcbiAgICByZXR1cm4gaW5wdXRzO1xuICB9XG5cbiAgcHJvdGVjdGVkIG1hcnNoYWxJbnB1dChpbnB1dDogV3BzSW5wdXQpOiBJbnB1dFR5cGUge1xuICAgIGNvbnN0IGlkID0gaW5wdXQuZGVzY3JpcHRpb24uaWQ7XG4gICAgY29uc3QgdGl0bGUgPSBpbnB1dC5kZXNjcmlwdGlvbi5pZDtcbiAgICBjb25zdCBhYnN0cmFjdCA9ICcnO1xuXG4gICAgY29uc3QgaW5wdXRUeXBlOiBJbnB1dFR5cGUgPSB7XG4gICAgICBpZGVudGlmaWVyOiB7IHZhbHVlOiBpZCB9LFxuICAgICAgdGl0bGU6IHsgdmFsdWU6IHRpdGxlIH0sXG4gICAgICBfYWJzdHJhY3Q6IHsgdmFsdWU6IGFic3RyYWN0IH1cbiAgICB9O1xuXG4gICAgaWYgKGlucHV0LmRlc2NyaXB0aW9uLnJlZmVyZW5jZSkge1xuICAgICAgaW5wdXRUeXBlLnJlZmVyZW5jZSA9IHRoaXMubWFyc2hhbFJlZmVyZW5jZUlucHV0KGlucHV0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgaW5wdXRUeXBlLmRhdGEgPSB0aGlzLm1hcnNoYWxEYXRhSW5wdXQoaW5wdXQpO1xuICAgIH1cblxuICAgIHJldHVybiBpbnB1dFR5cGU7XG4gIH1cblxuICBwcm90ZWN0ZWQgbWFyc2hhbERhdGFJbnB1dChpbnB1dDogV3BzSW5wdXQpOiBEYXRhVHlwZSB7XG4gICAgbGV0IGRhdGE6IERhdGFUeXBlO1xuICAgIHN3aXRjaCAoaW5wdXQuZGVzY3JpcHRpb24udHlwZSkge1xuICAgICAgY2FzZSAnbGl0ZXJhbCc6XG4gICAgICAgIGRhdGEgPSB7XG4gICAgICAgICAgbGl0ZXJhbERhdGE6IHsgdmFsdWU6IFN0cmluZyhpbnB1dC52YWx1ZSkgfVxuICAgICAgICB9O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2Jib3gnOlxuICAgICAgICBjb25zdCB2YWx1ZXM6IFdwc0Jib3hWYWx1ZSA9IGlucHV0LnZhbHVlO1xuICAgICAgICBkYXRhID0ge1xuICAgICAgICAgIGJvdW5kaW5nQm94RGF0YToge1xuICAgICAgICAgICAgbG93ZXJDb3JuZXI6IFt2YWx1ZXMubGxsYXQsIHZhbHVlcy5sbGxvbl0sXG4gICAgICAgICAgICB1cHBlckNvcm5lcjogW3ZhbHVlcy51cmxhdCwgdmFsdWVzLnVybG9uXVxuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdjb21wbGV4JzpcbiAgICAgICAgc3dpdGNoIChpbnB1dC5kZXNjcmlwdGlvbi5mb3JtYXQpIHtcbiAgICAgICAgICBjYXNlICd0ZXh0L3htbCc6XG4gICAgICAgICAgICBkYXRhID0ge1xuICAgICAgICAgICAgICBjb21wbGV4RGF0YToge1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IFtpbnB1dC52YWx1ZV0sICAvLyBAVE9ETzogd2UgYXNzdW1lIGhlcmUgdGhhdCB0ZXh0L3htbC1kYXRhIGlzIGFscmVhZHkgc3RyaW5naWZpZWRcbiAgICAgICAgICAgICAgICBtaW1lVHlwZTogaW5wdXQuZGVzY3JpcHRpb24uZm9ybWF0XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgZGF0YSA9IHtcbiAgICAgICAgICAgICAgY29tcGxleERhdGE6IHtcbiAgICAgICAgICAgICAgICBjb250ZW50OiBbSlNPTi5zdHJpbmdpZnkoaW5wdXQudmFsdWUpXSxcbiAgICAgICAgICAgICAgICBtaW1lVHlwZTogaW5wdXQuZGVzY3JpcHRpb24uZm9ybWF0XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBFcnJvcihgVGhpcyBpbnB1dCBpcyBvZiB0eXBlICR7aW5wdXQuZGVzY3JpcHRpb24udHlwZX0uIFdlIGNhbiBvbmx5IG1hcnNoYWwgaW5wdXQgb2YgdHlwZSBsaXRlcmFsLCBiYm94IG9yIGNvbXBsZXguYCk7XG4gICAgfVxuICAgIHJldHVybiBkYXRhO1xuICB9XG5cbiAgcHJvdGVjdGVkIG1hcnNoYWxSZWZlcmVuY2VJbnB1dChpbnB1dDogV3BzSW5wdXQpOiBJbnB1dFJlZmVyZW5jZVR5cGUge1xuICAgIGNvbnN0IHJlZjogSW5wdXRSZWZlcmVuY2VUeXBlID0ge1xuICAgICAgaHJlZjogaW5wdXQudmFsdWUsXG4gICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgbWltZVR5cGU6IGlucHV0LmRlc2NyaXB0aW9uLmZvcm1hdFxuICAgIH07XG4gICAgcmV0dXJuIHJlZjtcbiAgfVxuXG4gIG1hcnNoYWxsR2V0U3RhdHVzQm9keShzZXJ2ZXJVcmw6IHN0cmluZywgcHJvY2Vzc0lkOiBzdHJpbmcsIHN0YXR1c0lkOiBzdHJpbmcpIHtcbiAgICAvLyBXUFMtMS4wIGRvZXMgbm90IHNlbmQgYSBib2R5IHdpdGggYSBHZXRTdGF0dXMgcmVxdWVzdC5cbiAgICByZXR1cm4ge307XG4gIH1cblxuICBtYXJzaGFsbEdldFJlc3VsdEJvZHkoc2VydmVyVXJsOiBzdHJpbmcsIHByb2Nlc3NJZDogc3RyaW5nLCBqb2JJRDogc3RyaW5nKSB7XG4gICAgLy8gV1BTLTEuMCBkb2VzIG5vdCBzZW5kIGEgYm9keSB3aXRoIGEgR2V0U3RhdHVzIHJlcXVlc3QuXG4gICAgcmV0dXJuIHt9O1xuICB9XG5cbiAgZGlzbWlzc1VybChzZXJ2ZXJVcmw6IHN0cmluZywgcHJvY2Vzc0lkOiBzdHJpbmcsIGpvYklkOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIC8qKiB0aGlzIGRvZXMgb25seSB3b3JrIGluIGdlb3NlcnZlcjpcbiAgICAgKiByZXR1cm4gYCR7c2VydmVyVXJsfT9zZXJ2aWNlPVdQUyZ2ZXJzaW9uPTEuMC4wJnJlcXVlc3Q9RGlzbWlzcyZleGVjdXRpb25JZD0ke2pvYklkfWA7XG4gICAgICovXG4gICAgdGhyb3cgbmV3IEVycm9yKCdXcHMgMS4wIGRvZXMgbm90IHN1cHBvcnQgRGlzbWlzcy1vcGVyYXRpb25zLicpO1xuICB9XG5cbiAgbWFyc2hhbERpc21pc3NCb2R5KHByb2Nlc3NJZDogc3RyaW5nKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdXcHMgMS4wIGRvZXMgbm90IHN1cHBvcnQgRGlzbWlzcy1vcGVyYXRpb25zLicpO1xuICB9XG5cbiAgdW5tYXJzaGFsRGlzbWlzc1Jlc3BvbnNlKGpzb25SZXNwb25zZTogYW55LCBzZXJ2ZXJVcmw6IHN0cmluZywgcHJvY2Vzc0lkOiBzdHJpbmcpOiBXcHNTdGF0ZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdXcHMgMS4wIGRvZXMgbm90IHN1cHBvcnQgRGlzbWlzcy1vcGVyYXRpb25zLicpO1xuICB9XG59XG4iXX0=

@@ -12,2 +12,2 @@ export const isStatusInfo = (obj) => {

};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3V0aWxzLW9nYy9zcmMvbGliL3dwcy93cHMyMDAvaGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsQ0FBQyxHQUFXLEVBQXFCLEVBQUU7SUFDN0QsT0FBTyxHQUFHLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQztXQUM3QixHQUFHLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ3BDLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLENBQUMsR0FBVyxFQUF5QixFQUFFO0lBQ3JFLE9BQU8sR0FBRyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUM7UUFDN0IsQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEdBQUcsQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLElBQUksR0FBRyxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0FBQ3BHLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyxDQUFDLEdBQVcsRUFBaUIsRUFBRTtJQUNyRCxPQUFPLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0FBQ3hDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN0YXR1c0luZm8sIERhdGFPdXRwdXRUeXBlLCBSZXN1bHQgfSBmcm9tICcuL3dwc18yLjAnO1xuXG5cbmV4cG9ydCBjb25zdCBpc1N0YXR1c0luZm8gPSAob2JqOiBvYmplY3QpOiBvYmogaXMgU3RhdHVzSW5mbyA9PiB7XG4gIHJldHVybiBvYmouaGFzT3duUHJvcGVydHkoJ2pvYklEJylcbiAgICAmJiBvYmouaGFzT3duUHJvcGVydHkoJ3N0YXR1cycpO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzRGF0YU91dHB1dFR5cGUgPSAob2JqOiBvYmplY3QpOiBvYmogaXMgRGF0YU91dHB1dFR5cGUgPT4ge1xuICByZXR1cm4gb2JqLmhhc093blByb3BlcnR5KCdpZCcpICYmXG4gICAgKG9iai5oYXNPd25Qcm9wZXJ0eSgnZGF0YScpIHx8IG9iai5oYXNPd25Qcm9wZXJ0eSgncmVmZXJlbmNlJykgfHwgb2JqLmhhc093blByb3BlcnR5KCdvdXRwdXQnKSk7XG59O1xuXG5leHBvcnQgY29uc3QgaXNSZXN1bHQgPSAob2JqOiBvYmplY3QpOiBvYmogaXMgUmVzdWx0ID0+IHtcbiAgcmV0dXJuIChvYmouaGFzT3duUHJvcGVydHkoJ291dHB1dCcpKTtcbn07XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIvaG9tZS9ydW5uZXIvd29yay91a2lzLWZyb250ZW5kLWxpYnJhcmllcy91a2lzLWZyb250ZW5kLWxpYnJhcmllcy9wcm9qZWN0cy91dGlscy1vZ2Mvc3JjLyIsInNvdXJjZXMiOlsibGliL3dwcy93cHMyMDAvaGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsQ0FBQyxHQUFXLEVBQXFCLEVBQUU7SUFDN0QsT0FBTyxHQUFHLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQztXQUM3QixHQUFHLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ3BDLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLENBQUMsR0FBVyxFQUF5QixFQUFFO0lBQ3JFLE9BQU8sR0FBRyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUM7UUFDN0IsQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEdBQUcsQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLElBQUksR0FBRyxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0FBQ3BHLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyxDQUFDLEdBQVcsRUFBaUIsRUFBRTtJQUNyRCxPQUFPLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0FBQ3hDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN0YXR1c0luZm8sIERhdGFPdXRwdXRUeXBlLCBSZXN1bHQgfSBmcm9tICcuL3dwc18yLjAnO1xuXG5cbmV4cG9ydCBjb25zdCBpc1N0YXR1c0luZm8gPSAob2JqOiBvYmplY3QpOiBvYmogaXMgU3RhdHVzSW5mbyA9PiB7XG4gIHJldHVybiBvYmouaGFzT3duUHJvcGVydHkoJ2pvYklEJylcbiAgICAmJiBvYmouaGFzT3duUHJvcGVydHkoJ3N0YXR1cycpO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzRGF0YU91dHB1dFR5cGUgPSAob2JqOiBvYmplY3QpOiBvYmogaXMgRGF0YU91dHB1dFR5cGUgPT4ge1xuICByZXR1cm4gb2JqLmhhc093blByb3BlcnR5KCdpZCcpICYmXG4gICAgKG9iai5oYXNPd25Qcm9wZXJ0eSgnZGF0YScpIHx8IG9iai5oYXNPd25Qcm9wZXJ0eSgncmVmZXJlbmNlJykgfHwgb2JqLmhhc093blByb3BlcnR5KCdvdXRwdXQnKSk7XG59O1xuXG5leHBvcnQgY29uc3QgaXNSZXN1bHQgPSAob2JqOiBvYmplY3QpOiBvYmogaXMgUmVzdWx0ID0+IHtcbiAgcmV0dXJuIChvYmouaGFzT3duUHJvcGVydHkoJ291dHB1dCcpKTtcbn07XG4iXX0=

@@ -332,2 +332,2 @@ import { isStatusInfo, isResult } from './helpers';

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3BzX21hcnNoYWxsZXJfMi4wLjAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91dGlscy1vZ2Mvc3JjL2xpYi93cHMvd3BzMjAwL3dwc19tYXJzaGFsbGVyXzIuMC4wLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUtBLE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ25ELE9BQU8sS0FBSyxhQUFhLE1BQU0sZUFBZSxDQUFDO0FBRy9DLE1BQU0sT0FBTyxnQkFBZ0I7SUFFM0IsZ0JBQWdCLENBQUM7SUFFakIsa0JBQWtCLENBQUMsT0FBZTtRQUNoQyxPQUFPLEdBQUcsT0FBTyxvREFBb0QsQ0FBQztJQUN4RSxDQUFDO0lBRUQscUJBQXFCLENBQUMsT0FBZSxFQUFFLFNBQWlCO1FBQ3RELE9BQU8sR0FBRyxPQUFPLGlFQUFpRSxTQUFTLEVBQUUsQ0FBQztJQUNoRyxDQUFDO0lBRUQsMkJBQTJCLENBQUMsc0JBQXdDOztRQUNsRSxNQUFNLFdBQVcsR0FBRyxzQkFBc0IsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFOUQsTUFBTSxNQUFNLEdBQWUsRUFBRSxDQUFDO1FBQzlCLEtBQUssTUFBTSxTQUFTLElBQUksV0FBVyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUU7WUFDakQsTUFBTSxDQUFDLElBQUksQ0FBQztnQkFDVixXQUFXLEVBQUUsSUFBSSxDQUFDLHlCQUF5QixDQUFDLFNBQVMsQ0FBQztnQkFDdEQsS0FBSyxFQUFFLElBQUk7YUFDWixDQUFDLENBQUM7U0FDSjtRQUVELE1BQU0sT0FBTyxHQUFnQixFQUFFLENBQUM7UUFDaEMsS0FBSyxNQUFNLGFBQWEsSUFBSSxXQUFXLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRTtZQUN0RCxPQUFPLENBQUMsSUFBSSxDQUFDO2dCQUNYLFdBQVcsRUFBRSxJQUFJLENBQUMsMEJBQTBCLENBQUMsYUFB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TSxFQUFFLEtBQUs7Z0JBQ2IsTUFBTSxFQUFFLDZDQUE2QzthQUN0RDtZQUNELEtBQUssRUFBRTtnQkFDTCxLQUFLLEVBQUUsS0FBSztnQkFDWixPQUFPLEVBQUUsS0FBSztnQkFDZCxPQUFPLEVBQUUsT0FBTzthQUNqQjtTQUNGLENBQUM7UUFDRixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCx3QkFBd0IsQ0FBQyxZQUE4QixFQUFFLFNBQWlCLEVBQUUsU0FBaUI7UUFDM0YsTUFBTSxLQUFLLEdBQWE7WUFDdEIsTUFBTSxFQUFFLFlBQVksQ0FBQyxLQUFLLENBQUMsTUFBTTtZQUNqQyxLQUFLLEVBQUUsWUFBWSxDQUFDLEtBQUssQ0FBQyxLQUFLO1NBQ2hDLENBQUM7UUFDRixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFdwc01hcnNoYWxsZXIsIFdwc0lucHV0LCBXcHNPdXRwdXREZXNjcmlwdGlvbiwgV3BzUmVzdWx0LCBXcHNDYXBhYmlsaXR5LCBXcHNEYXRhRGVzY3JpcHRpb24sXG4gIFdwc0RhdGEsIFdwc1N0YXRlLCBXcHNQcm9jZXNzRGVzY3JpcHRpb24sIFdwc0RhdGFGb3JtYXQgfSBmcm9tICcuLi93cHNfZGF0YXR5cGVzJztcbmltcG9ydCB7IFdQU0NhcGFiaWxpdGllc1R5cGUsIEV4ZWN1dGVSZXF1ZXN0VHlwZSwgRGF0YUlucHV0VHlwZSwgT3V0cHV0RGVmaW5pdGlvblR5cGUsIElXcHNFeGVjdXRlUHJvY2Vzc0JvZHksXG4gIElXcHNFeGVjdXRlUmVzcG9uc2UsIElHZXRTdGF0dXNSZXF1ZXN0LCBEYXRhLCBJR2V0UmVzdWx0UmVxdWVzdCwgSURpc21pc3NSZXF1ZXN0LCBJRGlzbWlzc1Jlc3BvbnNlLCBQcm9jZXNzT2ZmZXJpbmdzLFxuICBJbnB1dERlc2NyaXB0aW9uVHlwZSwgT3V0cHV0RGVzY3JpcHRpb25UeXBlLCBMaXRlcmFsRGF0YVR5cGUgfSBmcm9tICcuL3dwc18yLjAnO1xuaW1wb3J0IHsgaXNTdGF0dXNJbmZvLCBpc1Jlc3VsdCB9IGZyb20gJy4vaGVscGVycyc7XG5pbXBvcnQgKiBhcyB4bWxzZXJpYWxpemVyIGZyb20gJ3htbHNlcmlhbGl6ZXInO1xuXG5cbmV4cG9ydCBjbGFzcyBXcHNNYXJzaGFsbGVyMjAwIGltcGxlbWVudHMgV3BzTWFyc2hhbGxlciB7XG5cbiAgY29uc3RydWN0b3IoKSB7IH1cblxuICBnZXRDYXBhYmlsaXRpZXNVcmwoYmFzZXVybDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7YmFzZXVybH0/c2VydmljZT1XUFMmcmVxdWVzdD1HZXRDYXBhYmlsaXRpZXMmdmVyc2lvbj0yLjAuMGA7XG4gIH1cblxuICBnZXREZXNjcmliZVByb2Nlc3NVcmwoYmFzZXVybDogc3RyaW5nLCBwcm9jZXNzSWQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke2Jhc2V1cmx9P3NlcnZpY2U9V1BTJnJlcXVlc3Q9RGVzY3JpYmVQcm9jZXNzJnZlcnNpb249Mi4wLjAmSWRlbnRpZmllcj0ke3Byb2Nlc3NJZH1gO1xuICB9XG5cbiAgdW5tYXJzaGFsUHJvY2Vzc0Rlc2NyaXB0aW9uKHByb2Nlc3NEZXNjcmlwdGlvbkpzb246IFByb2Nlc3NPZmZlcmluZ3MpOiBXcHNQcm9jZXNzRGVzY3JpcHRpb24ge1xuICAgIGNvbnN0IGRlc2NyaXB0aW9uID0gcHJvY2Vzc0Rlc2NyaXB0aW9uSnNvbi5wcm9jZXNzT2ZmZXJpbmdbMF07XG4gIFxuICAgIGNvbnN0IGlucHV0czogV3BzSW5wdXRbXSA9IFtdO1xuICAgIGZvciAoY29uc3QgZGF0YUlucHV0IG9mIGRlc2NyaXB0aW9uLnByb2Nlc3MuaW5wdXQpIHtcbiAgICAgIGlucHV0cy5wdXNoKHtcbiAgICAgICAgZGVzY3JpcHRpb246IHRoaXMudW5tYXJzaGFsSW5wdXREZXNjcmlwdGlvbihkYXRhSW5wdXQpLFxuICAgICAgICB2YWx1ZTogbnVsbFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgY29uc3Qgb3V0cHV0czogV3BzUmVzdWx0W10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IHByb2Nlc3NPdXRwdXQgb2YgZGVzY3JpcHRpb24ucHJvY2Vzcy5vdXRwdXQpIHtcbiAgICAgIG91dHB1dHMucHVzaCh7XG4gICAgICAgIGRlc2NyaXB0aW9uOiB0aGlzLnVubWFyc2hhbE91dHB1dERlc2NyaXB0aW9uKHByb2Nlc3NPdXRwdXQpLFxuICAgICAgICB2YWx1ZTogbnVsbFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGlkOiBkZXNjcmlwdGlvbi5wcm9jZXNzLmlkZW50aWZpZXIudmFsdWUsXG4gICAgICBwcm9jZXNzVmVyc2lvbjogZGVzY3JpcHRpb24ucHJvY2Vzc1ZlcnNpb24gfHwgJycsXG4gICAgICBkZXNjcmlwdGlvbjogZGVzY3JpcHRpb24ucHJvY2Vzcy5fYWJzdHJhY3Q/LnZhbHVlLFxuICAgICAgdGl0bGU6IGRlc2NyaXB0aW9uLnByb2Nlc3MudGl0bGU/LnZhbHVlIHx8ICcnLFxuICAgICAgaW5wdXRzOiBpbnB1dHMsXG4gICAgICBvdXRwdXRzOiBvdXRwdXRzLFxuICAgIH07XG4gIH1cblxuICBwcm90ZWN0ZWQgdW5tYXJzaGFsSW5wdXREZXNjcmlwdGlvbihkYXRhSW5wdXQ6IElucHV0RGVzY3JpcHRpb25UeXBlKTogV3BzRGF0YURlc2NyaXB0aW9uIHtcbiAgICBpZiAoZGF0YUlucHV0LmRhdGFEZXNjcmlwdGlvbi5uYW1lLmxvY2FsUGFydCA9PT0gJ0JvdW5kaW5nQm94RGF0YScpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGlkOiBkYXRhSW5wdXQuaWRlbnRpZmllci52YWx1ZSxcbiAgICAgICAgdGl0bGU6IGRhdGFJbnB1dC50aXRsZS52YWx1ZSxcbiAgICAgICAgcmVmZXJlbmNlOiBmYWxzZSxcbiAgICAgICAgdHlwZTogJ2Jib3gnLFxuICAgICAgICBkZXNjcmlwdGlvbjogZGF0YUlucHV0LmFic3RyYWN0Py52YWx1ZVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKGRhdGFJbnB1dC5kYXRhRGVzY3JpcHRpb24ubmFtZS5sb2NhbFBhcnQgPT09ICdMaXRlcmFsRGF0YScpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGlkOiBkYXRhSW5wdXQuaWRlbnRpZmllci52YWx1ZSxcbiAgICAgICAgdGl0bGU6IGRhdGFJbnB1dC50aXRsZS52YWx1ZSxcbiAgICAgICAgcmVmZXJlbmNlOiBmYWxzZSxcbiAgICAgICAgdHlwZTogJ2xpdGVyYWwnLFxuICAgICAgICBkZWZhdWx0VmFsdWU6IChkYXRhSW5wdXQuZGF0YURlc2NyaXB0aW9uLnZhbHVlIGFzIExpdGVyYWxEYXRhVHlwZSkubGl0ZXJhbERhdGFEb21haW4/LmRlZmF1bHRWYWx1ZT8udmFsdWUsXG4gICAgICAgIG9wdGlvbnM6IChkYXRhSW5wdXQuZGF0YURlc2NyaXB0aW9uLnZhbHVlIGFzIExpdGVyYWxEYXRhVHlwZSkubGl0ZXJhbERhdGFEb21haW4/LmFsbG93ZWRWYWx1ZXMudmFsdWVPclJhbmdlLm1hcCh2ID0+IHYudmFsdWUpLFxuICAgICAgICBkZXNjcmlwdGlvbjogZGF0YUlucHV0LmFic3RyYWN0Py52YWx1ZVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKGRhdGFJbnB1dC5kYXRhRGVzY3JpcHRpb24ubmFtZS5sb2NhbFBhcnQgPT09ICdDb21wbGV4RGF0YScpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGlkOiBkYXRhSW5wdXQuaWRlbnRpZmllci52YWx1ZSxcbiAgICAgICAgdGl0bGU6IGRhdGFJbnB1dC50aXRsZS52YWx1ZSxcbiAgICAgICAgcmVmZXJlbmNlOiB0cnVlLFxuICAgICAgICB0eXBlOiAnY29tcGxleCcsXG4gICAgICAgIGZvcm1hdDogZGF0YUlucHV0LmRhdGFEZXNjcmlwdGlvbi52YWx1ZS5mb3JtYXRbMF0ubWltZVR5cGUgYXMgV3BzRGF0YUZvcm1hdCxcbiAgICAgICAgZGVzY3JpcHRpb246IGRhdGFJbnB1dC5hYnN0cmFjdD8udmFsdWVcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IHVubWFyc2hhbCBpbnB1dC1kZXNjcmlwdGlvbiAke2RhdGFJbnB1dC5pZGVudGlmaWVyLnZhbHVlfWApO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCB1bm1hcnNoYWxPdXRwdXREZXNjcmlwdGlvbihwcm9jZXNzT3V0cHV0OiBPdXRwdXREZXNjcmlwdGlvblR5cGUpOiBXcHNEYXRhRGVzY3JpcHRpb24ge1xuICAgIGlmIChwcm9jZXNzT3V0cHV0LmRhdGFEZXNjcmlwdGlvbi5uYW1lLmxvY2FsUGFydCA9PT0gJ0JvdW5kaW5nQm94RGF0YScpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGlkOiBwcm9jZXNzT3V0cHV0LmlkZW50aWZpZXIudmFsdWUsXG4gICAgICAgIHRpdGxlOiBwcm9jZXNzT3V0cHV0LnRpdGxlLnZhbHVlLFxuICAgICAgICByZWZlcmVuY2U6IGZhbHNlLFxuICAgICAgICB0eXBlOiAnYmJveCcsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBwcm9jZXNzT3V0cHV0LmFic3RyYWN0Py52YWx1ZVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHByb2Nlc3NPdXRwdXQuZGF0YURlc2NyaXB0aW9uLm5hbWUubG9jYWxQYXJ0ID09PSAnTGl0ZXJhbERhdGEnKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBpZDogcHJvY2Vzc091dHB1dC5pZGVudGlmaWVyLnZhbHVlLFxuICAgICAgICB0aXRsZTogcHJvY2Vzc091dHB1dC50aXRsZS52YWx1ZSxcbiAgICAgICAgcmVmZXJlbmNlOiBmYWxzZSxcbiAgICAgICAgdHlwZTogJ2xpdGVyYWwnLFxuICAgICAgICBkZXNjcmlwdGlvbjogcHJvY2Vzc091dHB1dC5hYnN0cmFjdD8udmFsdWVcbiAgICAgIH07XG4gICAgfSBlbHNlIGlmIChwcm9jZXNzT3V0cHV0LmRhdGFEZXNjcmlwdGlvbi5uYW1lLmxvY2FsUGFydCA9PT0gJ0NvbXBsZXhEYXRhJykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaWQ6IHByb2Nlc3NPdXRwdXQuaWRlbnRpZmllci52YWx1ZSxcbiAgICAgICAgdGl0bGU6IHByb2Nlc3NPdXRwdXQudGl0bGUudmFsdWUsXG4gICAgICAgIHJlZmVyZW5jZTogdHJ1ZSxcbiAgICAgICAgdHlwZTogJ2NvbXBsZXgnLFxuICAgICAgICBmb3JtYXQ6IHByb2Nlc3NPdXRwdXQuZGF0YURlc2NyaXB0aW9uLnZhbHVlLmZvcm1hdFswXS5taW1lVHlwZSBhcyBXcHNEYXRhRm9ybWF0LFxuICAgICAgICBkZXNjcmlwdGlvbjogcHJvY2Vzc091dHB1dC5hYnN0cmFjdD8udmFsdWVcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IHVubWFyc2hhbCBpbnB1dC1kZXNjcmlwdGlvbiAke3Byb2Nlc3NPdXRwdXQuaWRlbnRpZmllci52YWx1ZX1gKTtcbiAgICB9XG4gIH1cblxuICBleGVjdXRlVXJsKGJhc2V1cmw6IHN0cmluZywgcHJvY2Vzc0lkOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHtiYXNldXJsfT9zZXJ2aWNlPVdQUyZyZXF1ZXN0PUV4ZWN1dGUmdmVyc2lvbj0yLjAuMCZpZGVudGlmaWVyPSR7cHJvY2Vzc0lkfWA7XG4gIH1cblxuICB1bm1hcnNoYWxDYXBhYmlsaXRpZXMoY2FwYWJpbGl0aWVzOiBXUFNDYXBhYmlsaXRpZXNUeXBlKTogV3BzQ2FwYWJpbGl0eVtdIHtcbiAgICBjb25zdCBvdXQ6IFdwc0NhcGFiaWxpdHlbXSA9IFtdO1xuICAgIGNhcGFiaWxpdGllcy5jb250ZW50cy5wcm9jZXNzU3VtbWFyeS5mb3JFYWNoKHN1bW1hcnkgPT4ge1xuICAgICAgb3V0LnB1c2goe1xuICAgICAgICBpZDogc3VtbWFyeS5pZGVudGlmaWVyLnZhbHVlXG4gICAgICB9KTtcbiAgICB9KTtcbiAgICByZXR1cm4gb3V0O1xuICB9XG5cbiAgdW5tYXJzaGFsU3luY0V4ZWN1dGVSZXNwb25zZShyZXNwb25zZUpzb246IElXcHNFeGVjdXRlUmVzcG9uc2UsIHVybDogc3RyaW5nLCBwcm9jZXNzSWQ6IHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dHM6IFdwc0lucHV0W10sIG91dHB1dERlc2NyaXB0aW9uczogV3BzT3V0cHV0RGVzY3JpcHRpb25bXSk6IFdwc1Jlc3VsdFtdIHtcbiAgICBjb25zdCBvdXQ6IFdwc1Jlc3VsdFtdID0gW107XG5cbiAgICBpZiAoaXNSZXN1bHQocmVzcG9uc2VKc29uLnZhbHVlKSkge1xuICAgICAgZm9yIChjb25zdCBvdXRwdXQgb2YgcmVzcG9uc2VKc29uLnZhbHVlLm91dHB1dCkge1xuICAgICAgICBjb25zdCBvdXRwdXREZXNjcmlwdGlvbiA9IG91dHB1dERlc2NyaXB0aW9ucy5maW5kKG9kID0+IG9kLmlkID09PSBvdXRwdXQuaWQpO1xuICAgICAgICBpZiAoIW91dHB1dERlc2NyaXB0aW9uKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb3VsZCBub3QgZmluZCBhbiBvdXRwdXQtZGVzY3JpcHRpb24gZm9yIHRoZSBwYXJhbWV0ZXIgJHtvdXRwdXQuaWR9LmApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgaXNSZWZlcmVuY2UgPSBvdXRwdXREZXNjcmlwdGlvbi5yZWZlcmVuY2U7XG4gICAgICAgIGNvbnN0IGRhdGF0eXBlID0gb3V0cHV0RGVzY3JpcHRpb24udHlwZTtcbiAgICAgICAgY29uc3QgZm9ybWF0ID0gb3V0cHV0RGVzY3JpcHRpb24uZm9ybWF0O1xuICAgICAgICBsZXQgZGF0YTtcbiAgICAgICAgaWYgKG91dHB1dC5yZWZlcmVuY2UpIHtcbiAgICAgICAgICBkYXRhID0gb3V0cHV0LnJlZmVyZW5jZS5ocmVmIHx8IG51bGw7XG4gICAgICAgIH0gZWxzZSBpZiAob3V0cHV0LmRhdGEpIHtcbiAgICAgICAgICBkYXRhID0gdGhpcy51bm1hcnNoYWxPdXRwdXREYXRhKG91dHB1dC5kYXRhLCBvdXRwdXREZXNjcmlwdGlvbik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBPdXRwdXQgaGFzIG5laXRoZXIgcmVmZXJlbmNlIG5vciBkYXRhIGZpZWxkLmApO1xuICAgICAgICB9XG5cbiAgICAgICAgb3V0LnB1c2goe1xuICAgICAgICAgIGRlc2NyaXB0aW9uOiB7XG4gICAgICAgICAgICBpZDogb3V0cHV0LmlkLFxuICAgICAgICAgICAgdGl0bGU6IG91dHB1dERlc2NyaXB0aW9uLnRpdGxlLFxuICAgICAgICAgICAgZm9ybWF0LFxuICAgICAgICAgICAgcmVmZXJlbmNlOiBpc1JlZmVyZW5jZSxcbiAgICAgICAgICAgIHR5cGU6IGRhdGF0eXBlXG4gICAgICAgICAgfSxcbiAgICAgICAgICB2YWx1ZTogZGF0YSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChpc1N0YXR1c0luZm8ocmVzcG9uc2VKc29uLnZhbHVlKSkge1xuICAgICAgY29uc3Qgc3RhdGU6IFdwc1N0YXRlID0ge1xuICAgICAgICBzdGF0dXM6IHJlc3BvbnNlSnNvbi52YWx1ZS5zdGF0dXMsXG4gICAgICAgIGpvYklEOiByZXNwb25zZUpzb24udmFsdWUuam9iSUQsXG4gICAgICAgIHBlcmNlbnRDb21wbGV0ZWQ6IHJlc3BvbnNlSnNvbi52YWx1ZS5wZXJjZW50Q29tcGxldGVkXG4gICAgICB9O1xuXG4gICAgICBvdXQucHVzaCh7XG4gICAgICAgIGRlc2NyaXB0aW9uOiB7XG4gICAgICAgICAgaWQ6IHByb2Nlc3NJZCxcbiAgICAgICAgICB0aXRsZTogJycsXG4gICAgICAgICAgcmVmZXJlbmNlOiB0cnVlLFxuICAgICAgICAgIHR5cGU6ICdzdGF0dXMnXG4gICAgICAgIH0sXG4gICAgICAgIHZhbHVlOiBzdGF0ZVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG91dDtcbiAgfVxuXG4gIHByb3RlY3RlZCB1bm1hcnNoYWxPdXRwdXREYXRhKGRhdGE6IERhdGEsIGRlc2NyaXB0aW9uOiBXcHNPdXRwdXREZXNjcmlwdGlvbik6IGFueSB7XG4gICAgaWYgKGRlc2NyaXB0aW9uLnR5cGUgPT09ICdjb21wbGV4Jykge1xuXG4gICAgICBpZiAoZGF0YS5lbmNvZGluZyA9PT0gJ2Jhc2U2NCcpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnICYmIG1vZHVsZS5leHBvcnRzKSB7IC8vIG5vZGVcbiAgICAgICAgICBkYXRhLmNvbnRlbnQubWFwKGMgPT4gbmV3IEJ1ZmZlcihjLCAnYmFzZTY0JykudG9TdHJpbmcoJ2FzY2lpJykpO1xuICAgICAgICB9IGVsc2UgeyAvLyBicm93c2VyXG4gICAgICAgICAgZGF0YS5jb250ZW50Lm1hcCgoYzogYW55KSA9PiBhdG9iKGMpKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBzd2l0Y2ggKGRhdGEubWltZVR5cGUpIHtcbiAgICAgICAgY2FzZSAnYXBwbGljYXRpb24vdm5kLmdlbytqc29uJzpcbiAgICAgICAgY2FzZSAnYXBwbGljYXRpb24vanNvbic6XG4gICAgICAgICAgcmV0dXJuIGRhdGEuY29udGVudC5tYXAoKGNvbnQ6IGFueSkgPT4gSlNPTi5wYXJzZShjb250KSk7XG4gICAgICAgIGNhc2UgJ2FwcGxpY2F0aW9uL1dNUyc6XG4gICAgICAgICAgcmV0dXJuIGRhdGEuY29udGVudDtcbiAgICAgICAgY2FzZSAndGV4dC94bWwnOlxuICAgICAgICBjYXNlICdhcHBsaWNhdGlvbi94bWwnOlxuICAgICAgICAgIHJldHVybiB4bWxzZXJpYWxpemVyLnNlcmlhbGl6ZVRvU3RyaW5nKGRhdGEuY29udGVudFswXSk7IC8vIEBUT0RPOiBiZXR0ZXI6IGhhbmRsZSBhY3R1YWwgeG1sLWRhdGFcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCB1bm1hcnNoYWwgY29tcGxleCBkYXRhIG9mIGZvcm1hdCAke2RhdGEubWltZVR5cGV9YCk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChkZXNjcmlwdGlvbi50eXBlID09PSAnbGl0ZXJhbCcpIHtcbiAgICAgIHJldHVybiBkYXRhLmNvbnRlbnQ7XG4gICAgfVxuXG4gICAgdGhyb3cgbmV3IEVycm9yKGBOb3QgeWV0IGltcGxlbWVudGVkOiAke2RhdGF9YCk7XG4gIH1cblxuICB1bm1hcnNoYWxBc3luY0V4ZWN1dGVSZXNwb25zZShyZXNwb25zZUpzb246IGFueSwgdXJsOiBzdHJpbmcsIHByb2Nlc3NJZDogc3RyaW5nLCBpbnB1dHM6IFdwc0RhdGFbXSwgb3V0cHV0RGVzY3JpcHRpb25zOiBXcHNEYXRhRGVzY3JpcHRpb25bXSk6IFdwc1N0YXRlIHtcbiAgICByZXR1cm4gdGhpcy51bm1hcnNoYWxHZXRTdGF0ZVJlc3BvbnNlKHJlc3BvbnNlSnNvbiwgdXJsLCBwcm9jZXNzSWQsIGlucHV0cywgb3V0cHV0RGVzY3JpcHRpb25zKTtcbiAgfVxuXG4gIHVubWFyc2hhbEdldFN0YXRlUmVzcG9uc2UocmVzcG9uc2VKc29uOiBhbnksIHNlcnZlclVybDogc3RyaW5nLCBwcm9jZXNzSWQ6IHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dHM6IFdwc0RhdGFbXSwgb3V0cHV0RGVzY3JpcHRpb25zOiBXcHNEYXRhRGVzY3JpcHRpb25bXSk6IFdwc1N0YXRlIHtcbiAgICBpZiAoaXNTdGF0dXNJbmZvKHJlc3BvbnNlSnNvbi52YWx1ZSkpIHtcbiAgICAgIGNvbnN0IHN0YXRlOiBXcHNTdGF0ZSA9IHtcbiAgICAgICAgc3RhdHVzOiByZXNwb25zZUpzb24udmFsdWUuc3RhdHVzLFxuICAgICAgICBqb2JJRDogcmVzcG9uc2VKc29uLnZhbHVlLmpvYklELFxuICAgICAgICBwZXJjZW50Q29tcGxldGVkOiByZXNwb25zZUpzb24udmFsdWUucGVyY2VudENvbXBsZXRlZFxuICAgICAgfTtcbiAgICAgIHJldHVybiBzdGF0ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBOb3QgYSBzdGF0dXMtaW5mbzogJHtyZXNwb25zZUpzb259YCk7XG4gICAgfVxuICB9XG5cbiAgbWFyc2hhbEV4ZWNCb2R5KHByb2Nlc3NJZDogc3RyaW5nLCBpbnB1dHM6IFdwc0lucHV0W10sIG91dHB1dHM6IFdwc091dHB1dERlc2NyaXB0aW9uW10sIGFzeW5jOiBib29sZWFuKSB7XG4gICAgY29uc3QgaW5wdXRzTWFyc2hhbGxlZCA9IHRoaXMubWFyc2hhbElucHV0cyhpbnB1dHMpO1xuICAgIGNvbnN0IG91dHB1dHNNYXJzaGFsbGVkID0gdGhpcy5tYXJzaGFsT3V0cHV0cyhvdXRwdXRzKTtcblxuICAgIGNvbnN0IGJvZHlWYWx1ZTogRXhlY3V0ZVJlcXVlc3RUeXBlID0ge1xuICAgICAgVFlQRV9OQU1FOiAnV1BTXzJfMC5FeGVjdXRlUmVxdWVzdFR5cGUnLFxuICAgICAgc2VydmljZTogJ1dQUycsXG4gICAgICB2ZXJzaW9uOiAnMi4wLjAnLFxuICAgICAgaWRlbnRpZmllcjogeyB2YWx1ZTogcHJvY2Vzc0lkIH0sXG4gICAgICBpbnB1dDogaW5wdXRzTWFyc2hhbGxlZCxcbiAgICAgIG91dHB1dDogb3V0cHV0c01hcnNoYWxsZWQsXG4gICAgICBtb2RlOiBhc3luYyA/ICdhc3luYycgOiAnc3luYycsXG4gICAgICByZXNwb25zZTogJ2RvY3VtZW50J1xuICAgIH07XG5cbiAgICBjb25zdCBib2R5OiBJV3BzRXhlY3V0ZVByb2Nlc3NCb2R5ID0ge1xuICAgICAgbmFtZToge1xuICAgICAgICBrZXk6ICd7aHR0cDovL3d3dy5vcGVuZ2lzLm5ldC93cHMvMi4wfUV4ZWN1dGUnLFxuICAgICAgICBsb2NhbFBhcnQ6ICdFeGVjdXRlJyxcbiAgICAgICAgbmFtZXNwYWNlVVJJOiAnaHR0cDovL3d3dy5vcGVuZ2lzLm5ldC93cHMvMi4wJyxcbiAgICAgICAgcHJlZml4OiAnd3BzJyxcbiAgICAgICAgc3RyaW5nOiAne2h0dHA6Ly93d3cub3Blbmdpcy5uZXQvd3BzLzIuMH13cHM6RXhlY3V0ZSdcbiAgICAgIH0sXG4gICAgICB2YWx1ZTogYm9keVZhbHVlXG4gICAgfTtcblxuICAgIHJldHVybiBib2R5O1xuICB9XG5cbiAgcHJpdmF0ZSBtYXJzaGFsSW5wdXRzKGlucHV0czogV3BzRGF0YVtdKTogRGF0YUlucHV0VHlwZVtdIHtcbiAgICByZXR1cm4gaW5wdXRzLm1hcChpID0+IHtcbiAgICAgIGlmIChpLmRlc2NyaXB0aW9uLnJlZmVyZW5jZSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGlkOiBpLmRlc2NyaXB0aW9uLmlkLFxuICAgICAgICAgIHJlZmVyZW5jZToge1xuICAgICAgICAgICAgaHJlZjogaS52YWx1ZSxcbiAgICAgICAgICAgIG1pbWVUeXBlOiBpLmRlc2NyaXB0aW9uLmZvcm1hdCxcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGlkOiBpLmRlc2NyaXB0aW9uLmlkLFxuICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIGNvbnRlbnQ6IFtKU09OLnN0cmluZ2lmeShpLnZhbHVlKV0sXG4gICAgICAgICAgICBtaW1lVHlwZTogaS5kZXNjcmlwdGlvbi5mb3JtYXRcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIG1hcnNoYWxPdXRwdXRzKG91dHB1dHM6IFdwc0RhdGFEZXNjcmlwdGlvbltdKTogT3V0cHV0RGVmaW5pdGlvblR5cGVbXSB7XG4gICAgcmV0dXJuIG91dHB1dHMubWFwKG8gPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaWQ6IG8uaWQsXG4gICAgICAgIG1pbWVUeXBlOiBvLmZvcm1hdCxcbiAgICAgICAgdHJhbnNtaXNzaW9uOiBvLnJlZmVyZW5jZSA/ICdyZWZlcmVuY2UnIDogJ3ZhbHVlJyAgLy8gQFRPRE86IG1heWJlIGp1c3QgY29tbWVudCBvdXQgdGhpcyBsaW5lP1xuICAgICAgfTtcbiAgICB9KTtcbiAgfVxuXG4gIG1hcnNoYWxsR2V0U3RhdHVzQm9keShzZXJ2ZXJVcmw6IHN0cmluZywgcHJvY2Vzc0lkOiBzdHJpbmcsIHN0YXR1c0lkOiBzdHJpbmcpIHtcbiAgICBjb25zdCByZXF1ZXN0OiBJR2V0U3RhdHVzUmVxdWVzdCA9IHtcbiAgICAgIG5hbWU6IHtcbiAgICAgICAga2V5OiAne2h0dHA6Ly93d3cub3Blbmdpcy5uZXQvd3BzLzIuMH1HZXRTdGF0dXMnLFxuICAgICAgICBsb2NhbFBhcnQ6ICdHZXRTdGF0dXMnLFxuICAgICAgICBuYW1lc3BhY2VVUkk6ICdodHRwOi8vd3d3Lm9wZW5naXMubmV0L3dwcy8yLjAnLFxuICAgICAgICBwcmVmaXg6ICd3cHMnLFxuICAgICAgICBzdHJpbmc6ICd7aHR0cDovL3d3dy5vcGVuZ2lzLm5ldC93cHMvMi4wfXdwczpHZXRTdGF0dXMnXG4gICAgICB9LFxuICAgICAgdmFsdWU6IHtcbiAgICAgICAgam9iSUQ6IHN0YXR1c0lkLFxuICAgICAgICBzZXJ2aWNlOiAnV1BTJyxcbiAgICAgICAgdmVyc2lvbjogJzIuMC4wJ1xuICAgICAgfVxuICAgIH07XG4gICAgcmV0dXJuIHJlcXVlc3Q7XG4gIH1cblxuICBtYXJzaGFsbEdldFJlc3VsdEJvZHkoc2VydmVyVXJsOiBzdHJpbmcsIHByb2Nlc3NJZDogc3RyaW5nLCBqb2JJRDogc3RyaW5nKSB7XG4gICAgY29uc3QgcmVxdWVzdDogSUdldFJlc3VsdFJlcXVlc3QgPSB7XG4gICAgICBuYW1lOiB7XG4gICAgICAgIGtleTogJ3todHRwOi8vd3d3Lm9wZW5naXMubmV0L3dwcy8yLjB9R2V0UmVzdWx0JyxcbiAgICAgICAgbG9jYWxQYXJ0OiAnR2V0UmVzdWx0JyxcbiAgICAgICAgbmFtZXNwYWNlVVJJOiAnaHR0cDovL3d3dy5vcGVuZ2lzLm5ldC93cHMvMi4wJyxcbiAgICAgICAgcHJlZml4OiAnd3BzJyxcbiAgICAgICAgc3RyaW5nOiAne2h0dHA6Ly93d3cub3Blbmdpcy5uZXQvd3BzLzIuMH13cHM6R2V0UmVzdWx0J1xuICAgICAgfSxcbiAgICAgIHZhbHVlOiB7XG4gICAgICAgIHNlcnZpY2U6ICdXUFMnLFxuICAgICAgICB2ZXJzaW9uOiAnMi4wLjAnLFxuICAgICAgICBqb2JJRFxuICAgICAgfVxuICAgIH07XG4gICAgcmV0dXJuIHJlcXVlc3Q7XG4gIH1cblxuICBkaXNtaXNzVXJsKHNlcnZlclVybDogc3RyaW5nLCBwcm9jZXNzSWQ6IHN0cmluZywgam9iSWQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHNlcnZlclVybDtcbiAgfVxuXG4gIG1hcnNoYWxEaXNtaXNzQm9keShqb2JJZDogc3RyaW5nKSB7XG4gICAgY29uc3QgYm9keTogSURpc21pc3NSZXF1ZXN0ID0ge1xuICAgICAgbmFtZToge1xuICAgICAgICBrZXk6ICd7aHR0cDovL3d3dy5vcGVuZ2lzLm5ldC93cHMvMi4wfURpc21pc3MnLFxuICAgICAgICBsb2NhbFBhcnQ6ICdEaXNtaXNzJyxcbiAgICAgICAgbmFtZXNwYWNlVVJJOiAnaHR0cDovL3d3dy5vcGVuZ2lzLm5ldC93cHMvMi4wJyxcbiAgICAgICAgcHJlZml4OiAnd3BzJyxcbiAgICAgICAgc3RyaW5nOiAne2h0dHA6Ly93d3cub3Blbmdpcy5uZXQvd3BzLzIuMH13cHM6RGlzbWlzcydcbiAgICAgIH0sXG4gICAgICB2YWx1ZToge1xuICAgICAgICBqb2JJRDogam9iSWQsXG4gICAgICAgIHNlcnZpY2U6ICdXUFMnLFxuICAgICAgICB2ZXJzaW9uOiAnMi4wLjAnXG4gICAgICB9XG4gICAgfTtcbiAgICByZXR1cm4gYm9keTtcbiAgfVxuXG4gIHVubWFyc2hhbERpc21pc3NSZXNwb25zZShqc29uUmVzcG9uc2U6IElEaXNtaXNzUmVzcG9uc2UsIHNlcnZlclVybDogc3RyaW5nLCBwcm9jZXNzSWQ6IHN0cmluZyk6IFdwc1N0YXRlIHtcbiAgICBjb25zdCBzdGF0ZTogV3BzU3RhdGUgPSB7XG4gICAgICBzdGF0dXM6IGpzb25SZXNwb25zZS52YWx1ZS5zdGF0dXMsXG4gICAgICBqb2JJRDoganNvblJlc3BvbnNlLnZhbHVlLmpvYklEXG4gICAgfTtcbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3BzX21hcnNoYWxsZXJfMi4wLjAuanMiLCJzb3VyY2VSb290IjoiL2hvbWUvcnVubmVyL3dvcmsvdWtpcy1mcm9udGVuZC1saWJyYXJpZXMvdWtpcy1mcm9udGVuZC1saWJyYXJpZXMvcHJvamVjdHMvdXRpbHMtb2djL3NyYy8iLCJzb3VyY2VzIjpbImxpYi93cHMvd3BzMjAwL3dwc19tYXJzaGFsbGVyXzIuMC4wLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUtBLE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ25ELE9BQU8sS0FBSyxhQUFhLE1BQU0sZUFBZSxDQUFDO0FBRy9DLE1BQU0sT0FBTyxnQkFBZ0I7SUFFM0IsZ0JBQWdCLENBQUM7SUFFakIsa0JBQWtCLENBQUMsT0FBZTtRQUNoQyxPQUFPLEdBQUcsT0FBTyxvREFBb0QsQ0FBQztJQUN4RSxDQUFDO0lBRUQscUJBQXFCLENBQUMsT0FBZSxFQUFFLFNBQWlCO1FBQ3RELE9BQU8sR0FBRyxPQUFPLGlFQUFpRSxTQUFTLEVBQUUsQ0FBQztJQUNoRyxDQUFDO0lBRUQsMkJBQTJCLENBQUMsc0JBQXdDOztRQUNsRSxNQUFNLFdBQVcsR0FBRyxzQkFBc0IsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFOUQsTUFBTSxNQUFNLEdBQWUsRUFBRSxDQUFDO1FBQzlCLEtBQUssTUFBTSxTQUFTLElBQUksV0FBVyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUU7WUFDakQsTUFBTSxDQUFDLElBQUksQ0FBQztnQkFDVixXQUFXLEVBQUUsSUFBSSxDQUFDLHlCQUF5QixDQUFDLFNBQVMsQ0FBQztnQkFDdEQsS0FBSyxFQUFFLElBQUk7YUFDWixDQUFDLENBQUM7U0FDSjtRQUVELE1BQU0sT0FBTyxHQUFnQixFQUFFLENBQUM7UUFDaEMsS0FBSyxNQUFNLGFBQWEsSUFBSSxXQUFXLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRTtZQUN0RCxPQUFPLENBQUMsSUFB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QUFTLEVBQUUsU0FBUztnQkFDcEIsWUFBWSxFQUFFLGdDQUFnQztnQkFDOUMsTUFBTSxFQUFFLEtBQUs7Z0JBQ2IsTUFBTSxFQUFFLDZDQUE2QzthQUN0RDtZQUNELEtBQUssRUFBRTtnQkFDTCxLQUFLLEVBQUUsS0FBSztnQkFDWixPQUFPLEVBQUUsS0FBSztnQkFDZCxPQUFPLEVBQUUsT0FBTzthQUNqQjtTQUNGLENBQUM7UUFDRixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCx3QkFBd0IsQ0FBQyxZQUE4QixFQUFFLFNBQWlCLEVBQUUsU0FBaUI7UUFDM0YsTUFBTSxLQUFLLEdBQWE7WUFDdEIsTUFBTSxFQUFFLFlBQVksQ0FBQyxLQUFLLENBQUMsTUFBTTtZQUNqQyxLQUFLLEVBQUUsWUFBWSxDQUFDLEtBQUssQ0FBQyxLQUFLO1NBQ2hDLENBQUM7UUFDRixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFdwc01hcnNoYWxsZXIsIFdwc0lucHV0LCBXcHNPdXRwdXREZXNjcmlwdGlvbiwgV3BzUmVzdWx0LCBXcHNDYXBhYmlsaXR5LCBXcHNEYXRhRGVzY3JpcHRpb24sXG4gIFdwc0RhdGEsIFdwc1N0YXRlLCBXcHNQcm9jZXNzRGVzY3JpcHRpb24sIFdwc0RhdGFGb3JtYXQgfSBmcm9tICcuLi93cHNfZGF0YXR5cGVzJztcbmltcG9ydCB7IFdQU0NhcGFiaWxpdGllc1R5cGUsIEV4ZWN1dGVSZXF1ZXN0VHlwZSwgRGF0YUlucHV0VHlwZSwgT3V0cHV0RGVmaW5pdGlvblR5cGUsIElXcHNFeGVjdXRlUHJvY2Vzc0JvZHksXG4gIElXcHNFeGVjdXRlUmVzcG9uc2UsIElHZXRTdGF0dXNSZXF1ZXN0LCBEYXRhLCBJR2V0UmVzdWx0UmVxdWVzdCwgSURpc21pc3NSZXF1ZXN0LCBJRGlzbWlzc1Jlc3BvbnNlLCBQcm9jZXNzT2ZmZXJpbmdzLFxuICBJbnB1dERlc2NyaXB0aW9uVHlwZSwgT3V0cHV0RGVzY3JpcHRpb25UeXBlLCBMaXRlcmFsRGF0YVR5cGUgfSBmcm9tICcuL3dwc18yLjAnO1xuaW1wb3J0IHsgaXNTdGF0dXNJbmZvLCBpc1Jlc3VsdCB9IGZyb20gJy4vaGVscGVycyc7XG5pbXBvcnQgKiBhcyB4bWxzZXJpYWxpemVyIGZyb20gJ3htbHNlcmlhbGl6ZXInO1xuXG5cbmV4cG9ydCBjbGFzcyBXcHNNYXJzaGFsbGVyMjAwIGltcGxlbWVudHMgV3BzTWFyc2hhbGxlciB7XG5cbiAgY29uc3RydWN0b3IoKSB7IH1cblxuICBnZXRDYXBhYmlsaXRpZXNVcmwoYmFzZXVybDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7YmFzZXVybH0/c2VydmljZT1XUFMmcmVxdWVzdD1HZXRDYXBhYmlsaXRpZXMmdmVyc2lvbj0yLjAuMGA7XG4gIH1cblxuICBnZXREZXNjcmliZVByb2Nlc3NVcmwoYmFzZXVybDogc3RyaW5nLCBwcm9jZXNzSWQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke2Jhc2V1cmx9P3NlcnZpY2U9V1BTJnJlcXVlc3Q9RGVzY3JpYmVQcm9jZXNzJnZlcnNpb249Mi4wLjAmSWRlbnRpZmllcj0ke3Byb2Nlc3NJZH1gO1xuICB9XG5cbiAgdW5tYXJzaGFsUHJvY2Vzc0Rlc2NyaXB0aW9uKHByb2Nlc3NEZXNjcmlwdGlvbkpzb246IFByb2Nlc3NPZmZlcmluZ3MpOiBXcHNQcm9jZXNzRGVzY3JpcHRpb24ge1xuICAgIGNvbnN0IGRlc2NyaXB0aW9uID0gcHJvY2Vzc0Rlc2NyaXB0aW9uSnNvbi5wcm9jZXNzT2ZmZXJpbmdbMF07XG4gIFxuICAgIGNvbnN0IGlucHV0czogV3BzSW5wdXRbXSA9IFtdO1xuICAgIGZvciAoY29uc3QgZGF0YUlucHV0IG9mIGRlc2NyaXB0aW9uLnByb2Nlc3MuaW5wdXQpIHtcbiAgICAgIGlucHV0cy5wdXNoKHtcbiAgICAgICAgZGVzY3JpcHRpb246IHRoaXMudW5tYXJzaGFsSW5wdXREZXNjcmlwdGlvbihkYXRhSW5wdXQpLFxuICAgICAgICB2YWx1ZTogbnVsbFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgY29uc3Qgb3V0cHV0czogV3BzUmVzdWx0W10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IHByb2Nlc3NPdXRwdXQgb2YgZGVzY3JpcHRpb24ucHJvY2Vzcy5vdXRwdXQpIHtcbiAgICAgIG91dHB1dHMucHVzaCh7XG4gICAgICAgIGRlc2NyaXB0aW9uOiB0aGlzLnVubWFyc2hhbE91dHB1dERlc2NyaXB0aW9uKHByb2Nlc3NPdXRwdXQpLFxuICAgICAgICB2YWx1ZTogbnVsbFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGlkOiBkZXNjcmlwdGlvbi5wcm9jZXNzLmlkZW50aWZpZXIudmFsdWUsXG4gICAgICBwcm9jZXNzVmVyc2lvbjogZGVzY3JpcHRpb24ucHJvY2Vzc1ZlcnNpb24gfHwgJycsXG4gICAgICBkZXNjcmlwdGlvbjogZGVzY3JpcHRpb24ucHJvY2Vzcy5fYWJzdHJhY3Q/LnZhbHVlLFxuICAgICAgdGl0bGU6IGRlc2NyaXB0aW9uLnByb2Nlc3MudGl0bGU/LnZhbHVlIHx8ICcnLFxuICAgICAgaW5wdXRzOiBpbnB1dHMsXG4gICAgICBvdXRwdXRzOiBvdXRwdXRzLFxuICAgIH07XG4gIH1cblxuICBwcm90ZWN0ZWQgdW5tYXJzaGFsSW5wdXREZXNjcmlwdGlvbihkYXRhSW5wdXQ6IElucHV0RGVzY3JpcHRpb25UeXBlKTogV3BzRGF0YURlc2NyaXB0aW9uIHtcbiAgICBpZiAoZGF0YUlucHV0LmRhdGFEZXNjcmlwdGlvbi5uYW1lLmxvY2FsUGFydCA9PT0gJ0JvdW5kaW5nQm94RGF0YScpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGlkOiBkYXRhSW5wdXQuaWRlbnRpZmllci52YWx1ZSxcbiAgICAgICAgdGl0bGU6IGRhdGFJbnB1dC50aXRsZS52YWx1ZSxcbiAgICAgICAgcmVmZXJlbmNlOiBmYWxzZSxcbiAgICAgICAgdHlwZTogJ2Jib3gnLFxuICAgICAgICBkZXNjcmlwdGlvbjogZGF0YUlucHV0LmFic3RyYWN0Py52YWx1ZVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKGRhdGFJbnB1dC5kYXRhRGVzY3JpcHRpb24ubmFtZS5sb2NhbFBhcnQgPT09ICdMaXRlcmFsRGF0YScpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGlkOiBkYXRhSW5wdXQuaWRlbnRpZmllci52YWx1ZSxcbiAgICAgICAgdGl0bGU6IGRhdGFJbnB1dC50aXRsZS52YWx1ZSxcbiAgICAgICAgcmVmZXJlbmNlOiBmYWxzZSxcbiAgICAgICAgdHlwZTogJ2xpdGVyYWwnLFxuICAgICAgICBkZWZhdWx0VmFsdWU6IChkYXRhSW5wdXQuZGF0YURlc2NyaXB0aW9uLnZhbHVlIGFzIExpdGVyYWxEYXRhVHlwZSkubGl0ZXJhbERhdGFEb21haW4/LmRlZmF1bHRWYWx1ZT8udmFsdWUsXG4gICAgICAgIG9wdGlvbnM6IChkYXRhSW5wdXQuZGF0YURlc2NyaXB0aW9uLnZhbHVlIGFzIExpdGVyYWxEYXRhVHlwZSkubGl0ZXJhbERhdGFEb21haW4/LmFsbG93ZWRWYWx1ZXMudmFsdWVPclJhbmdlLm1hcCh2ID0+IHYudmFsdWUpLFxuICAgICAgICBkZXNjcmlwdGlvbjogZGF0YUlucHV0LmFic3RyYWN0Py52YWx1ZVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKGRhdGFJbnB1dC5kYXRhRGVzY3JpcHRpb24ubmFtZS5sb2NhbFBhcnQgPT09ICdDb21wbGV4RGF0YScpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGlkOiBkYXRhSW5wdXQuaWRlbnRpZmllci52YWx1ZSxcbiAgICAgICAgdGl0bGU6IGRhdGFJbnB1dC50aXRsZS52YWx1ZSxcbiAgICAgICAgcmVmZXJlbmNlOiB0cnVlLFxuICAgICAgICB0eXBlOiAnY29tcGxleCcsXG4gICAgICAgIGZvcm1hdDogZGF0YUlucHV0LmRhdGFEZXNjcmlwdGlvbi52YWx1ZS5mb3JtYXRbMF0ubWltZVR5cGUgYXMgV3BzRGF0YUZvcm1hdCxcbiAgICAgICAgZGVzY3JpcHRpb246IGRhdGFJbnB1dC5hYnN0cmFjdD8udmFsdWVcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IHVubWFyc2hhbCBpbnB1dC1kZXNjcmlwdGlvbiAke2RhdGFJbnB1dC5pZGVudGlmaWVyLnZhbHVlfWApO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCB1bm1hcnNoYWxPdXRwdXREZXNjcmlwdGlvbihwcm9jZXNzT3V0cHV0OiBPdXRwdXREZXNjcmlwdGlvblR5cGUpOiBXcHNEYXRhRGVzY3JpcHRpb24ge1xuICAgIGlmIChwcm9jZXNzT3V0cHV0LmRhdGFEZXNjcmlwdGlvbi5uYW1lLmxvY2FsUGFydCA9PT0gJ0JvdW5kaW5nQm94RGF0YScpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGlkOiBwcm9jZXNzT3V0cHV0LmlkZW50aWZpZXIudmFsdWUsXG4gICAgICAgIHRpdGxlOiBwcm9jZXNzT3V0cHV0LnRpdGxlLnZhbHVlLFxuICAgICAgICByZWZlcmVuY2U6IGZhbHNlLFxuICAgICAgICB0eXBlOiAnYmJveCcsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBwcm9jZXNzT3V0cHV0LmFic3RyYWN0Py52YWx1ZVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHByb2Nlc3NPdXRwdXQuZGF0YURlc2NyaXB0aW9uLm5hbWUubG9jYWxQYXJ0ID09PSAnTGl0ZXJhbERhdGEnKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBpZDogcHJvY2Vzc091dHB1dC5pZGVudGlmaWVyLnZhbHVlLFxuICAgICAgICB0aXRsZTogcHJvY2Vzc091dHB1dC50aXRsZS52YWx1ZSxcbiAgICAgICAgcmVmZXJlbmNlOiBmYWxzZSxcbiAgICAgICAgdHlwZTogJ2xpdGVyYWwnLFxuICAgICAgICBkZXNjcmlwdGlvbjogcHJvY2Vzc091dHB1dC5hYnN0cmFjdD8udmFsdWVcbiAgICAgIH07XG4gICAgfSBlbHNlIGlmIChwcm9jZXNzT3V0cHV0LmRhdGFEZXNjcmlwdGlvbi5uYW1lLmxvY2FsUGFydCA9PT0gJ0NvbXBsZXhEYXRhJykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaWQ6IHByb2Nlc3NPdXRwdXQuaWRlbnRpZmllci52YWx1ZSxcbiAgICAgICAgdGl0bGU6IHByb2Nlc3NPdXRwdXQudGl0bGUudmFsdWUsXG4gICAgICAgIHJlZmVyZW5jZTogdHJ1ZSxcbiAgICAgICAgdHlwZTogJ2NvbXBsZXgnLFxuICAgICAgICBmb3JtYXQ6IHByb2Nlc3NPdXRwdXQuZGF0YURlc2NyaXB0aW9uLnZhbHVlLmZvcm1hdFswXS5taW1lVHlwZSBhcyBXcHNEYXRhRm9ybWF0LFxuICAgICAgICBkZXNjcmlwdGlvbjogcHJvY2Vzc091dHB1dC5hYnN0cmFjdD8udmFsdWVcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IHVubWFyc2hhbCBpbnB1dC1kZXNjcmlwdGlvbiAke3Byb2Nlc3NPdXRwdXQuaWRlbnRpZmllci52YWx1ZX1gKTtcbiAgICB9XG4gIH1cblxuICBleGVjdXRlVXJsKGJhc2V1cmw6IHN0cmluZywgcHJvY2Vzc0lkOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHtiYXNldXJsfT9zZXJ2aWNlPVdQUyZyZXF1ZXN0PUV4ZWN1dGUmdmVyc2lvbj0yLjAuMCZpZGVudGlmaWVyPSR7cHJvY2Vzc0lkfWA7XG4gIH1cblxuICB1bm1hcnNoYWxDYXBhYmlsaXRpZXMoY2FwYWJpbGl0aWVzOiBXUFNDYXBhYmlsaXRpZXNUeXBlKTogV3BzQ2FwYWJpbGl0eVtdIHtcbiAgICBjb25zdCBvdXQ6IFdwc0NhcGFiaWxpdHlbXSA9IFtdO1xuICAgIGNhcGFiaWxpdGllcy5jb250ZW50cy5wcm9jZXNzU3VtbWFyeS5mb3JFYWNoKHN1bW1hcnkgPT4ge1xuICAgICAgb3V0LnB1c2goe1xuICAgICAgICBpZDogc3VtbWFyeS5pZGVudGlmaWVyLnZhbHVlXG4gICAgICB9KTtcbiAgICB9KTtcbiAgICByZXR1cm4gb3V0O1xuICB9XG5cbiAgdW5tYXJzaGFsU3luY0V4ZWN1dGVSZXNwb25zZShyZXNwb25zZUpzb246IElXcHNFeGVjdXRlUmVzcG9uc2UsIHVybDogc3RyaW5nLCBwcm9jZXNzSWQ6IHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dHM6IFdwc0lucHV0W10sIG91dHB1dERlc2NyaXB0aW9uczogV3BzT3V0cHV0RGVzY3JpcHRpb25bXSk6IFdwc1Jlc3VsdFtdIHtcbiAgICBjb25zdCBvdXQ6IFdwc1Jlc3VsdFtdID0gW107XG5cbiAgICBpZiAoaXNSZXN1bHQocmVzcG9uc2VKc29uLnZhbHVlKSkge1xuICAgICAgZm9yIChjb25zdCBvdXRwdXQgb2YgcmVzcG9uc2VKc29uLnZhbHVlLm91dHB1dCkge1xuICAgICAgICBjb25zdCBvdXRwdXREZXNjcmlwdGlvbiA9IG91dHB1dERlc2NyaXB0aW9ucy5maW5kKG9kID0+IG9kLmlkID09PSBvdXRwdXQuaWQpO1xuICAgICAgICBpZiAoIW91dHB1dERlc2NyaXB0aW9uKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb3VsZCBub3QgZmluZCBhbiBvdXRwdXQtZGVzY3JpcHRpb24gZm9yIHRoZSBwYXJhbWV0ZXIgJHtvdXRwdXQuaWR9LmApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgaXNSZWZlcmVuY2UgPSBvdXRwdXREZXNjcmlwdGlvbi5yZWZlcmVuY2U7XG4gICAgICAgIGNvbnN0IGRhdGF0eXBlID0gb3V0cHV0RGVzY3JpcHRpb24udHlwZTtcbiAgICAgICAgY29uc3QgZm9ybWF0ID0gb3V0cHV0RGVzY3JpcHRpb24uZm9ybWF0O1xuICAgICAgICBsZXQgZGF0YTtcbiAgICAgICAgaWYgKG91dHB1dC5yZWZlcmVuY2UpIHtcbiAgICAgICAgICBkYXRhID0gb3V0cHV0LnJlZmVyZW5jZS5ocmVmIHx8IG51bGw7XG4gICAgICAgIH0gZWxzZSBpZiAob3V0cHV0LmRhdGEpIHtcbiAgICAgICAgICBkYXRhID0gdGhpcy51bm1hcnNoYWxPdXRwdXREYXRhKG91dHB1dC5kYXRhLCBvdXRwdXREZXNjcmlwdGlvbik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBPdXRwdXQgaGFzIG5laXRoZXIgcmVmZXJlbmNlIG5vciBkYXRhIGZpZWxkLmApO1xuICAgICAgICB9XG5cbiAgICAgICAgb3V0LnB1c2goe1xuICAgICAgICAgIGRlc2NyaXB0aW9uOiB7XG4gICAgICAgICAgICBpZDogb3V0cHV0LmlkLFxuICAgICAgICAgICAgdGl0bGU6IG91dHB1dERlc2NyaXB0aW9uLnRpdGxlLFxuICAgICAgICAgICAgZm9ybWF0LFxuICAgICAgICAgICAgcmVmZXJlbmNlOiBpc1JlZmVyZW5jZSxcbiAgICAgICAgICAgIHR5cGU6IGRhdGF0eXBlXG4gICAgICAgICAgfSxcbiAgICAgICAgICB2YWx1ZTogZGF0YSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChpc1N0YXR1c0luZm8ocmVzcG9uc2VKc29uLnZhbHVlKSkge1xuICAgICAgY29uc3Qgc3RhdGU6IFdwc1N0YXRlID0ge1xuICAgICAgICBzdGF0dXM6IHJlc3BvbnNlSnNvbi52YWx1ZS5zdGF0dXMsXG4gICAgICAgIGpvYklEOiByZXNwb25zZUpzb24udmFsdWUuam9iSUQsXG4gICAgICAgIHBlcmNlbnRDb21wbGV0ZWQ6IHJlc3BvbnNlSnNvbi52YWx1ZS5wZXJjZW50Q29tcGxldGVkXG4gICAgICB9O1xuXG4gICAgICBvdXQucHVzaCh7XG4gICAgICAgIGRlc2NyaXB0aW9uOiB7XG4gICAgICAgICAgaWQ6IHByb2Nlc3NJZCxcbiAgICAgICAgICB0aXRsZTogJycsXG4gICAgICAgICAgcmVmZXJlbmNlOiB0cnVlLFxuICAgICAgICAgIHR5cGU6ICdzdGF0dXMnXG4gICAgICAgIH0sXG4gICAgICAgIHZhbHVlOiBzdGF0ZVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG91dDtcbiAgfVxuXG4gIHByb3RlY3RlZCB1bm1hcnNoYWxPdXRwdXREYXRhKGRhdGE6IERhdGEsIGRlc2NyaXB0aW9uOiBXcHNPdXRwdXREZXNjcmlwdGlvbik6IGFueSB7XG4gICAgaWYgKGRlc2NyaXB0aW9uLnR5cGUgPT09ICdjb21wbGV4Jykge1xuXG4gICAgICBpZiAoZGF0YS5lbmNvZGluZyA9PT0gJ2Jhc2U2NCcpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnICYmIG1vZHVsZS5leHBvcnRzKSB7IC8vIG5vZGVcbiAgICAgICAgICBkYXRhLmNvbnRlbnQubWFwKGMgPT4gbmV3IEJ1ZmZlcihjLCAnYmFzZTY0JykudG9TdHJpbmcoJ2FzY2lpJykpO1xuICAgICAgICB9IGVsc2UgeyAvLyBicm93c2VyXG4gICAgICAgICAgZGF0YS5jb250ZW50Lm1hcCgoYzogYW55KSA9PiBhdG9iKGMpKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBzd2l0Y2ggKGRhdGEubWltZVR5cGUpIHtcbiAgICAgICAgY2FzZSAnYXBwbGljYXRpb24vdm5kLmdlbytqc29uJzpcbiAgICAgICAgY2FzZSAnYXBwbGljYXRpb24vanNvbic6XG4gICAgICAgICAgcmV0dXJuIGRhdGEuY29udGVudC5tYXAoKGNvbnQ6IGFueSkgPT4gSlNPTi5wYXJzZShjb250KSk7XG4gICAgICAgIGNhc2UgJ2FwcGxpY2F0aW9uL1dNUyc6XG4gICAgICAgICAgcmV0dXJuIGRhdGEuY29udGVudDtcbiAgICAgICAgY2FzZSAndGV4dC94bWwnOlxuICAgICAgICBjYXNlICdhcHBsaWNhdGlvbi94bWwnOlxuICAgICAgICAgIHJldHVybiB4bWxzZXJpYWxpemVyLnNlcmlhbGl6ZVRvU3RyaW5nKGRhdGEuY29udGVudFswXSk7IC8vIEBUT0RPOiBiZXR0ZXI6IGhhbmRsZSBhY3R1YWwgeG1sLWRhdGFcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCB1bm1hcnNoYWwgY29tcGxleCBkYXRhIG9mIGZvcm1hdCAke2RhdGEubWltZVR5cGV9YCk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChkZXNjcmlwdGlvbi50eXBlID09PSAnbGl0ZXJhbCcpIHtcbiAgICAgIHJldHVybiBkYXRhLmNvbnRlbnQ7XG4gICAgfVxuXG4gICAgdGhyb3cgbmV3IEVycm9yKGBOb3QgeWV0IGltcGxlbWVudGVkOiAke2RhdGF9YCk7XG4gIH1cblxuICB1bm1hcnNoYWxBc3luY0V4ZWN1dGVSZXNwb25zZShyZXNwb25zZUpzb246IGFueSwgdXJsOiBzdHJpbmcsIHByb2Nlc3NJZDogc3RyaW5nLCBpbnB1dHM6IFdwc0RhdGFbXSwgb3V0cHV0RGVzY3JpcHRpb25zOiBXcHNEYXRhRGVzY3JpcHRpb25bXSk6IFdwc1N0YXRlIHtcbiAgICByZXR1cm4gdGhpcy51bm1hcnNoYWxHZXRTdGF0ZVJlc3BvbnNlKHJlc3BvbnNlSnNvbiwgdXJsLCBwcm9jZXNzSWQsIGlucHV0cywgb3V0cHV0RGVzY3JpcHRpb25zKTtcbiAgfVxuXG4gIHVubWFyc2hhbEdldFN0YXRlUmVzcG9uc2UocmVzcG9uc2VKc29uOiBhbnksIHNlcnZlclVybDogc3RyaW5nLCBwcm9jZXNzSWQ6IHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dHM6IFdwc0RhdGFbXSwgb3V0cHV0RGVzY3JpcHRpb25zOiBXcHNEYXRhRGVzY3JpcHRpb25bXSk6IFdwc1N0YXRlIHtcbiAgICBpZiAoaXNTdGF0dXNJbmZvKHJlc3BvbnNlSnNvbi52YWx1ZSkpIHtcbiAgICAgIGNvbnN0IHN0YXRlOiBXcHNTdGF0ZSA9IHtcbiAgICAgICAgc3RhdHVzOiByZXNwb25zZUpzb24udmFsdWUuc3RhdHVzLFxuICAgICAgICBqb2JJRDogcmVzcG9uc2VKc29uLnZhbHVlLmpvYklELFxuICAgICAgICBwZXJjZW50Q29tcGxldGVkOiByZXNwb25zZUpzb24udmFsdWUucGVyY2VudENvbXBsZXRlZFxuICAgICAgfTtcbiAgICAgIHJldHVybiBzdGF0ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBOb3QgYSBzdGF0dXMtaW5mbzogJHtyZXNwb25zZUpzb259YCk7XG4gICAgfVxuICB9XG5cbiAgbWFyc2hhbEV4ZWNCb2R5KHByb2Nlc3NJZDogc3RyaW5nLCBpbnB1dHM6IFdwc0lucHV0W10sIG91dHB1dHM6IFdwc091dHB1dERlc2NyaXB0aW9uW10sIGFzeW5jOiBib29sZWFuKSB7XG4gICAgY29uc3QgaW5wdXRzTWFyc2hhbGxlZCA9IHRoaXMubWFyc2hhbElucHV0cyhpbnB1dHMpO1xuICAgIGNvbnN0IG91dHB1dHNNYXJzaGFsbGVkID0gdGhpcy5tYXJzaGFsT3V0cHV0cyhvdXRwdXRzKTtcblxuICAgIGNvbnN0IGJvZHlWYWx1ZTogRXhlY3V0ZVJlcXVlc3RUeXBlID0ge1xuICAgICAgVFlQRV9OQU1FOiAnV1BTXzJfMC5FeGVjdXRlUmVxdWVzdFR5cGUnLFxuICAgICAgc2VydmljZTogJ1dQUycsXG4gICAgICB2ZXJzaW9uOiAnMi4wLjAnLFxuICAgICAgaWRlbnRpZmllcjogeyB2YWx1ZTogcHJvY2Vzc0lkIH0sXG4gICAgICBpbnB1dDogaW5wdXRzTWFyc2hhbGxlZCxcbiAgICAgIG91dHB1dDogb3V0cHV0c01hcnNoYWxsZWQsXG4gICAgICBtb2RlOiBhc3luYyA/ICdhc3luYycgOiAnc3luYycsXG4gICAgICByZXNwb25zZTogJ2RvY3VtZW50J1xuICAgIH07XG5cbiAgICBjb25zdCBib2R5OiBJV3BzRXhlY3V0ZVByb2Nlc3NCb2R5ID0ge1xuICAgICAgbmFtZToge1xuICAgICAgICBrZXk6ICd7aHR0cDovL3d3dy5vcGVuZ2lzLm5ldC93cHMvMi4wfUV4ZWN1dGUnLFxuICAgICAgICBsb2NhbFBhcnQ6ICdFeGVjdXRlJyxcbiAgICAgICAgbmFtZXNwYWNlVVJJOiAnaHR0cDovL3d3dy5vcGVuZ2lzLm5ldC93cHMvMi4wJyxcbiAgICAgICAgcHJlZml4OiAnd3BzJyxcbiAgICAgICAgc3RyaW5nOiAne2h0dHA6Ly93d3cub3Blbmdpcy5uZXQvd3BzLzIuMH13cHM6RXhlY3V0ZSdcbiAgICAgIH0sXG4gICAgICB2YWx1ZTogYm9keVZhbHVlXG4gICAgfTtcblxuICAgIHJldHVybiBib2R5O1xuICB9XG5cbiAgcHJpdmF0ZSBtYXJzaGFsSW5wdXRzKGlucHV0czogV3BzRGF0YVtdKTogRGF0YUlucHV0VHlwZVtdIHtcbiAgICByZXR1cm4gaW5wdXRzLm1hcChpID0+IHtcbiAgICAgIGlmIChpLmRlc2NyaXB0aW9uLnJlZmVyZW5jZSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGlkOiBpLmRlc2NyaXB0aW9uLmlkLFxuICAgICAgICAgIHJlZmVyZW5jZToge1xuICAgICAgICAgICAgaHJlZjogaS52YWx1ZSxcbiAgICAgICAgICAgIG1pbWVUeXBlOiBpLmRlc2NyaXB0aW9uLmZvcm1hdCxcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGlkOiBpLmRlc2NyaXB0aW9uLmlkLFxuICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIGNvbnRlbnQ6IFtKU09OLnN0cmluZ2lmeShpLnZhbHVlKV0sXG4gICAgICAgICAgICBtaW1lVHlwZTogaS5kZXNjcmlwdGlvbi5mb3JtYXRcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIG1hcnNoYWxPdXRwdXRzKG91dHB1dHM6IFdwc0RhdGFEZXNjcmlwdGlvbltdKTogT3V0cHV0RGVmaW5pdGlvblR5cGVbXSB7XG4gICAgcmV0dXJuIG91dHB1dHMubWFwKG8gPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaWQ6IG8uaWQsXG4gICAgICAgIG1pbWVUeXBlOiBvLmZvcm1hdCxcbiAgICAgICAgdHJhbnNtaXNzaW9uOiBvLnJlZmVyZW5jZSA/ICdyZWZlcmVuY2UnIDogJ3ZhbHVlJyAgLy8gQFRPRE86IG1heWJlIGp1c3QgY29tbWVudCBvdXQgdGhpcyBsaW5lP1xuICAgICAgfTtcbiAgICB9KTtcbiAgfVxuXG4gIG1hcnNoYWxsR2V0U3RhdHVzQm9keShzZXJ2ZXJVcmw6IHN0cmluZywgcHJvY2Vzc0lkOiBzdHJpbmcsIHN0YXR1c0lkOiBzdHJpbmcpIHtcbiAgICBjb25zdCByZXF1ZXN0OiBJR2V0U3RhdHVzUmVxdWVzdCA9IHtcbiAgICAgIG5hbWU6IHtcbiAgICAgICAga2V5OiAne2h0dHA6Ly93d3cub3Blbmdpcy5uZXQvd3BzLzIuMH1HZXRTdGF0dXMnLFxuICAgICAgICBsb2NhbFBhcnQ6ICdHZXRTdGF0dXMnLFxuICAgICAgICBuYW1lc3BhY2VVUkk6ICdodHRwOi8vd3d3Lm9wZW5naXMubmV0L3dwcy8yLjAnLFxuICAgICAgICBwcmVmaXg6ICd3cHMnLFxuICAgICAgICBzdHJpbmc6ICd7aHR0cDovL3d3dy5vcGVuZ2lzLm5ldC93cHMvMi4wfXdwczpHZXRTdGF0dXMnXG4gICAgICB9LFxuICAgICAgdmFsdWU6IHtcbiAgICAgICAgam9iSUQ6IHN0YXR1c0lkLFxuICAgICAgICBzZXJ2aWNlOiAnV1BTJyxcbiAgICAgICAgdmVyc2lvbjogJzIuMC4wJ1xuICAgICAgfVxuICAgIH07XG4gICAgcmV0dXJuIHJlcXVlc3Q7XG4gIH1cblxuICBtYXJzaGFsbEdldFJlc3VsdEJvZHkoc2VydmVyVXJsOiBzdHJpbmcsIHByb2Nlc3NJZDogc3RyaW5nLCBqb2JJRDogc3RyaW5nKSB7XG4gICAgY29uc3QgcmVxdWVzdDogSUdldFJlc3VsdFJlcXVlc3QgPSB7XG4gICAgICBuYW1lOiB7XG4gICAgICAgIGtleTogJ3todHRwOi8vd3d3Lm9wZW5naXMubmV0L3dwcy8yLjB9R2V0UmVzdWx0JyxcbiAgICAgICAgbG9jYWxQYXJ0OiAnR2V0UmVzdWx0JyxcbiAgICAgICAgbmFtZXNwYWNlVVJJOiAnaHR0cDovL3d3dy5vcGVuZ2lzLm5ldC93cHMvMi4wJyxcbiAgICAgICAgcHJlZml4OiAnd3BzJyxcbiAgICAgICAgc3RyaW5nOiAne2h0dHA6Ly93d3cub3Blbmdpcy5uZXQvd3BzLzIuMH13cHM6R2V0UmVzdWx0J1xuICAgICAgfSxcbiAgICAgIHZhbHVlOiB7XG4gICAgICAgIHNlcnZpY2U6ICdXUFMnLFxuICAgICAgICB2ZXJzaW9uOiAnMi4wLjAnLFxuICAgICAgICBqb2JJRFxuICAgICAgfVxuICAgIH07XG4gICAgcmV0dXJuIHJlcXVlc3Q7XG4gIH1cblxuICBkaXNtaXNzVXJsKHNlcnZlclVybDogc3RyaW5nLCBwcm9jZXNzSWQ6IHN0cmluZywgam9iSWQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHNlcnZlclVybDtcbiAgfVxuXG4gIG1hcnNoYWxEaXNtaXNzQm9keShqb2JJZDogc3RyaW5nKSB7XG4gICAgY29uc3QgYm9keTogSURpc21pc3NSZXF1ZXN0ID0ge1xuICAgICAgbmFtZToge1xuICAgICAgICBrZXk6ICd7aHR0cDovL3d3dy5vcGVuZ2lzLm5ldC93cHMvMi4wfURpc21pc3MnLFxuICAgICAgICBsb2NhbFBhcnQ6ICdEaXNtaXNzJyxcbiAgICAgICAgbmFtZXNwYWNlVVJJOiAnaHR0cDovL3d3dy5vcGVuZ2lzLm5ldC93cHMvMi4wJyxcbiAgICAgICAgcHJlZml4OiAnd3BzJyxcbiAgICAgICAgc3RyaW5nOiAne2h0dHA6Ly93d3cub3Blbmdpcy5uZXQvd3BzLzIuMH13cHM6RGlzbWlzcydcbiAgICAgIH0sXG4gICAgICB2YWx1ZToge1xuICAgICAgICBqb2JJRDogam9iSWQsXG4gICAgICAgIHNlcnZpY2U6ICdXUFMnLFxuICAgICAgICB2ZXJzaW9uOiAnMi4wLjAnXG4gICAgICB9XG4gICAgfTtcbiAgICByZXR1cm4gYm9keTtcbiAgfVxuXG4gIHVubWFyc2hhbERpc21pc3NSZXNwb25zZShqc29uUmVzcG9uc2U6IElEaXNtaXNzUmVzcG9uc2UsIHNlcnZlclVybDogc3RyaW5nLCBwcm9jZXNzSWQ6IHN0cmluZyk6IFdwc1N0YXRlIHtcbiAgICBjb25zdCBzdGF0ZTogV3BzU3RhdGUgPSB7XG4gICAgICBzdGF0dXM6IGpzb25SZXNwb25zZS52YWx1ZS5zdGF0dXMsXG4gICAgICBqb2JJRDoganNvblJlc3BvbnNlLnZhbHVlLmpvYklEXG4gICAgfTtcbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cbn1cbiJdfQ==

@@ -231,2 +231,2 @@ import { WpsMarshaller100 } from './wps100/wps_marshaller_1.0.0';

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3BzY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdXRpbHMtb2djL3NyYy9saWIvd3BzL3dwc2NsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNqRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNqRSxPQUFPLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEUsT0FBTyxLQUFLLGlCQUFpQixNQUFNLDJCQUEyQixDQUFDO0FBQUMsTUFBTSxTQUFTLEdBQUcsaUJBQWlCLENBQUMsU0FBUyxDQUFDO0FBQzlHLE9BQU8sS0FBSyxpQkFBaUIsTUFBTSwyQkFBMkIsQ0FBQztBQUFDLE1BQU0sU0FBUyxHQUFHLGlCQUFpQixDQUFDLFNBQVMsQ0FBQztBQUM5RyxPQUFPLEtBQUssZUFBZSxNQUFNLHlCQUF5QixDQUFDO0FBQUMsTUFBTSxPQUFPLEdBQUcsZUFBZSxDQUFDLE9BQU8sQ0FBQztBQUNwRyxPQUFPLEtBQUssaUJBQWlCLE1BQU0sMkJBQTJCLENBQUM7QUFBQyxNQUFNLFNBQVMsR0FBRyxpQkFBaUIsQ0FBQyxTQUFTLENBQUM7QUFDOUcsT0FBTyxLQUFLLGVBQWUsTUFBTSx5QkFBeUIsQ0FBQztBQUFDLE1BQU0sT0FBTyxHQUFHLGVBQWUsQ0FBQyxPQUFPLENBQUM7QUFDcEcsT0FBTyxLQUFLLGFBQWEsTUFBTSx5QkFBeUIsQ0FBQztBQUFDLE1BQU0sTUFBTSxHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUM7QUFDOUYsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMxRCxP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R0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUUsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUMsQ0FBQyxDQUNsRCxDQUFDO0lBQ04sQ0FBQztJQUVPLHNCQUFzQixDQUFDLEdBQVcsRUFBRSxRQUFnQjtRQUN4RCxJQUFJLFFBQVEsQ0FBQyxLQUFLLENBQUMsOEJBQThCLENBQUMsSUFBSSxRQUFRLENBQUMsS0FBSyxDQUFDLHFCQUFxQixDQUFDLEVBQUU7WUFDekYsTUFBTSxJQUFJLEtBQUssQ0FBQyxRQUFRLEdBQUcsS0FBSyxHQUFHLFFBQVEsQ0FBQyxDQUFDO1NBQ2hEO0lBQ0wsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxRQUFRLENBQUMsS0FBWTtRQUNqQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUN2QixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBXcHNNYXJzaGFsbGVyLCBXcHNJbnB1dCwgV3BzVmVyc2lvbiwgV3BzUmVzdWx0LCBXcHNPdXRwdXREZXNjcmlwdGlvbiwgV3BzRGF0YSwgV3BzU3RhdGUsXG4gICAgV3BzQ2FwYWJpbGl0eSwgV3BzUHJvY2Vzc0Rlc2NyaXB0aW9uIH0gZnJvbSAnLi93cHNfZGF0YXR5cGVzJztcbmltcG9ydCB7IFdwc01hcnNoYWxsZXIxMDAgfSBmcm9tICcuL3dwczEwMC93cHNfbWFyc2hhbGxlcl8xLjAuMCc7XG5pbXBvcnQgeyBXcHNNYXJzaGFsbGVyMjAwIH0gZnJvbSAnLi93cHMyMDAvd3BzX21hcnNoYWxsZXJfMi4wLjAnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCwgc3dpdGNoTWFwLCB0YXAsIHNoYXJlLCBtZXJnZU1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCAqIGFzIFhMaW5rXzFfMF9GYWN0b3J5IGZyb20gJ3czYy1zY2hlbWFzL2xpYi9YTGlua18xXzAnOyBjb25zdCBYTGlua18xXzAgPSBYTGlua18xXzBfRmFjdG9yeS5YTGlua18xXzA7XG5pbXBvcnQgKiBhcyBPV1NfMV8xXzBfRmFjdG9yeSBmcm9tICdvZ2Mtc2NoZW1hcy9saWIvT1dTXzFfMV8wJzsgY29uc3QgT1dTXzFfMV8wID0gT1dTXzFfMV8wX0ZhY3RvcnkuT1dTXzFfMV8wO1xuaW1wb3J0ICogYXMgT1dTXzJfMF9GYWN0b3J5IGZyb20gJ29nYy1zY2hlbWFzL2xpYi9PV1NfMl8wJzsgY29uc3QgT1dTXzJfMCA9IE9XU18yXzBfRmFjdG9yeS5PV1NfMl8wO1xuaW1wb3J0ICogYXMgV1BTXzFfMF8wX0ZhY3RvcnkgZnJvbSAnb2djLXNjaGVtYXMvbGliL1dQU18xXzBfMCc7IGNvbnN0IFdQU18xXzBfMCA9IFdQU18xXzBfMF9GYWN0b3J5LldQU18xXzBfMDtcbmltcG9ydCAqIGFzIFdQU18yXzBfRmFjdG9yeSBmcm9tICdvZ2Mtc2NoZW1hcy9saWIvV1BTXzJfMCc7IGNvbnN0IFdQU18yXzAgPSBXUFNfMl8wX0ZhY3RvcnkuV1BTXzJfMDtcbmltcG9ydCAqIGFzIEpzb25peEZhY3RvcnkgZnJvbSAnQG1pY2hhZWxsYW5nYmVpbi9qc29uaXgnOyBjb25zdCBKc29uaXggPSBKc29uaXhGYWN0b3J5Lkpzb25peDtcbmltcG9ydCB7IHBvbGxVbnRpbCwgZGVsYXllZFJldHJ5IH0gZnJvbSAnLi91dGlscy9wb2xsaW5nJztcbmltcG9ydCB7IENhY2hlLCBGYWtlQ2FjaGUgfSBmcm9tICcuL2NhY2hlJztcblxuXG5leHBvcnQgaW50ZXJmYWNlIFdwc0h0dHBDbGllbnRSZXF1ZXN0UGFyYW1ldGVycyB7XG4gICAgaGVhZGVycz86IG9iamVjdDtcbiAgICBba2V5OiBzdHJpbmddOiBhbnk7XG59XG5cbi8qKlxuICogVGhpcyBsaWJyYXJ5IGF0dGVtcHRzIHRvIGJlIGxhcmdlbHkgaW5kZXBlbmRlbnQgb2YgYW5ndWxhci4gXG4gKiBBcyBzdWNoLCB3ZSBhbGxvdyBvdGhlciBodHRwLWNsaWVudHMgdGhhbiBAYW5ndWxhci9odHRwLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFdwc0h0dHBDbGllbnQge1xuICAgIGdldCh1cmw6IHN0cmluZywgcGFyYXM/OiBXcHNIdHRwQ2xpZW50UmVxdWVzdFBhcmFtZXRlcnMpOiBPYnNlcnZhYmxlPHN0cmluZz47XG4gICAgcG9zdCh1cmw6IHN0cmluZywgYm9keTogc3RyaW5nLCBwYXJhcz86IFdwc0h0dHBDbGllbnRSZXF1ZXN0UGFyYW1ldGVycyk6IE9ic2VydmFibGU8c3RyaW5nPjtcbn1cblxuXG4vKipcbiAqIFRoZSBXcHMtY2xpZW50IGFic3RyYWN0cyBhd2F5IHRoZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIFdwczEuMC4wIGFuZCBXcHMyLjAuMFxuICogVGhlcmUgYXJlIHR3byBsYXllcnMgb2YgbWFyc2hhbGxpbmc6XG4gKiAgLSB0aGUgV3BzLW1hcnNoYWxsZXIgbWFyc2hhbHMgdXNlci1mYWNpbmcgZGF0YSB0byB3cHMtc3BlY2lmaWMgdHlwZXNcbiAqICAtIEpzb25peCBtYXJzaGFscyB3cHMtc3BlY2lmaWMgZGF0YSB0byB4bWwuXG4gKiB1c2VyLWZhY2luZyBkYXRhIC0+IHdwc21hcnNoYWxsZXIgLT4gV3BzLXR5cGUtc3BlY2lmaWMgZGF0YSAtPiBKc29uaXgtbWFyaHNhbGxlciAtPiBYTUwgLT5cbiAqIC0+IHdlYmNsaWVudCAtPiBXUFMgLT4gWE1MIC0+IEpzb25peC11bm1hcnNoYWxsZXIgLT4gV3BzLXR5cGUtc3BlY2lmaWMgZGF0YSAtPiB3cHNtYXJzaGFsbGVyIC0+IHVzZXItZmFjaW5nIGRhdGFcbiAqL1xuZXhwb3J0IGNsYXNzIFdwc0NsaWVudCB7XG5cbiAgICBwcml2YXRlIHZlcnNpb246IFdwc1ZlcnNpb247XG4gICAgcHJpdmF0ZSB4bWxtYXJzaGFsbGVyOiBhbnk7XG4gICAgcHJpdmF0ZSB4bWx1bm1hcnNoYWxsZXI6IGFueTtcbiAgICBwcml2YXRlIHdwc21hcnNoYWxsZXI6IFdwc01hcnNoYWxsZXI7XG4gICAgcHJpdmF0ZSBjYWNoZTogQ2FjaGUgPSBuZXcgRmFrZUNhY2hlKCk7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgdmVyc2lvbjogV3BzVmVyc2lvbiA9ICcxLjAuMCcsXG4gICAgICAgIHByaXZhdGUgd2ViY2xpZW50OiBXcHNIdHRwQ2xpZW50LFxuICAgICAgICBjYWNoZT86IENhY2hlXG4gICAgKSB7XG4gICAgICAgIHRoaXMudmVyc2lvbiA9IHZlcnNpb247XG4gICAgICAgIGlmIChjYWNoZSkgdGhpcy5jYWNoZSA9IGNhY2hlO1xuICAgICAgICBsZXQgY29udGV4dDtcbiAgICAgICAgaWYgKHRoaXMudmVyc2lvbiA9PT0gJzEuMC4wJykge1xuICAgICAgICAgICAgdGhpcy53cHNtYXJzaGFsbGVyID0gbmV3IFdwc01hcnNoYWxsZXIxMDAoKTtcbiAgICAgICAgICAgIGNvbnRleHQgPSBuZXcgSnNvbml4LkNvbnRleHQoW1hMaW5rXzFfMCwgT1dTXzFfMV8wLCBXUFNfMV8wXzBdKTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnZlcnNpb24gPT09ICcyLjAuMCcpIHtcbiAgICAgICAgICAgIHRoaXMud3BzbWFyc2hhbGxlciA9IG5ldyBXcHNNYXJzaGFsbGVyMjAwKCk7XG4gICAgICAgICAgICBjb250ZXh0ID0gbmV3IEpzb25peC5Db250ZXh0KFtYTGlua18xXzAsIE9XU18yXzAsIFdQU18yXzBdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignWW91IGVudGVyZWQgYSBXUFMgdmVyc2lvbiBvdGhlciB0aGFuIDEuMC4wIG9yIDIuMC4wLicpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMueG1sdW5tYXJzaGFsbGVyID0gY29udGV4dC5jcmVhdGVVbm1hcnNoYWxsZXIoKTtcbiAgICAgICAgdGhpcy54bWxtYXJzaGFsbGVyID0gY29udGV4dC5jcmVhdGVNYXJzaGFsbGVyKCk7XG4gICAgfVxuXG5cbiAgICBnZXRDYXBhYmlsaXRpZXModXJsOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFdwc0NhcGFiaWxpdHlbXT4ge1xuICAgICAgICBjb25zdCBnZXRDYXBhYmlsaXRpZXNVcmwgPSB0aGlzLndwc21hcnNoYWxsZXIuZ2V0Q2FwYWJpbGl0aWVzVXJsKHVybCk7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFJhdyhnZXRDYXBhYmlsaXRpZXNVcmwpLnBpcGUoXG4gICAgICAgICAgICBtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCByZXNwb25zZUpzb24gPSB0aGlzLnhtbHVubWFyc2hhbGxlci51bm1hcnNoYWxTdHJpbmcocmVzcG9uc2UpO1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLndwc21hcnNoYWxsZXIudW5tYXJzaGFsQ2FwYWJpbGl0aWVzKHJlc3BvbnNlSnNvbi52YWx1ZSk7XG4gICAgICAgICAgICB9KSAvLyBAVE9ETzogaGFuZGxlIGNhc2Ugd2hlbiBpbnN0ZWFkIG9mIFdwc0NhcGFiaWxpdGVzIGFuIEV4Y2VwdGlvblJlcG9ydCBpcyByZXR1cm5lZFxuICAgICAgICApO1xuICAgIH1cblxuXG4gICAgZGVzY3JpYmVQcm9jZXNzKHVybDogc3RyaW5nLCBwcm9jZXNzSWQ6IHN0cmluZyk6IE9ic2VydmFibGU8V3BzUHJvY2Vzc0Rlc2NyaXB0aW9uPiB7XG4gICAgICAgIGNvbnN0IGRlc2NyaWJlUHJvY2Vzc1VybCA9IHRoaXMud3BzbWFyc2hhbGxlci5nZXREZXNjcmliZVByb2Nlc3NVcmwodXJsLCBwcm9jZXNzSWQpO1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRSYXcoZGVzY3JpYmVQcm9jZXNzVXJsKS5waXBlKFxuICAgICAgICAgICAgbWFwKChyZXNwb25zZTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzcG9uc2VKc29uID0gdGhpcy54bWx1bm1hcnNoYWxsZXIudW5tYXJzaGFsU3RyaW5nKHJlc3BvbnNlKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy53cHNtYXJzaGFsbGVyLnVubWFyc2hhbFByb2Nlc3NEZXNjcmlwdGlvbihyZXNwb25zZUpzb24udmFsdWUpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cblxuICAgIGV4ZWN1dGVBc3luYyh1cmw6IHN0cmluZywgcHJvY2Vzc0lkOiBzdHJpbmcsIGlucHV0czogV3BzSW5wdXRbXSwgb3V0cHV0czogV3BzT3V0cHV0RGVzY3JpcHRpb25bXSxcbiAgICAgICAgcG9sbGluZ1JhdGU6IG51bWJlciA9IDEwMDAsXG4gICAgICAgIHRhcEZ1bmN0aW9uPzogKHJlc3BvbnNlOiBXcHNTdGF0ZSB8IG51bGwpID0+IGFueSwgdW5tYXJzaGFsRnVuY3Rpb24/OiAoanNvblJlc3BvbnNlOiBhbnkpID0+IFdwc0RhdGFbXSk6IE9ic2VydmFibGU8V3BzUmVzdWx0W10+IHtcblxuICAgICAgICBjb25zdCBleGVjdXRlUmVxdWVzdCQ6IE9ic2VydmFibGU8V3BzU3RhdGU+ID0gdGhpcy5leGVjdXRlQXN5bmNCYXNpYyh1cmwsIHByb2Nlc3NJZCwgaW5wdXRzLCBvdXRwdXRzKTtcblxuICAgICAgICBjb25zdCBxdWVyeSQgPSBleGVjdXRlUmVxdWVzdCQucGlwZShcblxuICAgICAgICAgICAgLy8gcG9sbCB1bnRpbCBzdWNjZWVkZWRcbiAgICAgICAgICAgIG1lcmdlTWFwKChjdXJyZW50U3RhdGU6IFdwc1N0YXRlKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgbmV4dFN0YXRlJDogT2JzZXJ2YWJsZTxXcHNTdGF0ZT4gPSB0aGlzLmdldE5leHRTdGF0ZShjdXJyZW50U3RhdGUsIHVybCwgcHJvY2Vzc0lkLCBpbnB1dHMsIG91dHB1dHMpO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgcG9sbCQ6IE9ic2VydmFibGU8V3BzU3RhdGU+ID0gcG9sbFVudGlsPFdwc1N0YXRlPihcbiAgICAgICAgICAgICAgICAgICAgbmV4dFN0YXRlJCxcbiAgICAgICAgICAgICAgICAgICAgKHJlc3BvbnNlOiBXcHNTdGF0ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gJ0ZhaWxlZCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEVycm9yIGR1cmluZyBleGVjdXRpb24gb2YgcHJvY2VzcyAke3Byb2Nlc3NJZH06IGAgKyByZXNwb25zZS5zdGF0dXNMb2NhdGlvbik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzcG9uc2Uuc3RhdHVzID09PSAnU3VjY2VlZGVkJztcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgdGFwRnVuY3Rpb24sXG4gICAgICAgICAgICAgICAgICAgIHBvbGxpbmdSYXRlXG4gICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgIHJldHVybiBwb2xsJDtcbiAgICAgICAgICAgIH0pLFxuXG4gICAgICAgICAgICAvLyBmZXRjaCByZXN1bHRzXG4gICAgICAgICAgICBtZXJnZU1hcCgobGFzdFN0YXRlOiBXcHNTdGF0ZSkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmZldGNoUmVzdWx0cyhsYXN0U3RhdGUsIHVybCwgcHJvY2Vzc0lkLCBpbnB1dHMsIG91dHB1dHMsIHVubWFyc2hhbEZ1bmN0aW9uKTtcbiAgICAgICAgICAgIH0pLFxuXG4gICAgICAgICAgICAvLyBJbiBjYXNlIG9mIGVycm9yczpcbiAgICAgICAgICAgIHRhcCgocmVzcG9uc2U6IFdwc0RhdGFbXSkgPT4ge1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgcmVzdWx0IG9mIHJlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQuZGVzY3JpcHRpb24udHlwZSA9PT0gJ2Vycm9yJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ3NlcnZlciByZXNwb25kZWQgd2l0aCAyMDAsIGJ1dCBib2R5IGNvbnRhaW5lZCBhbiBlcnJvci1yZXN1bHQ6ICcsIHJlc3VsdCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IocmVzdWx0LnZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuY2FjaGVkUXVlcnkodXJsLCBwcm9jZXNzSWQsIGlucHV0cywgb3V0cHV0cywgcXVlcnkkKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNhY2hlZFF1ZXJ5KHVybDogc3RyaW5nLCBwcm9jZXNzSWQ6IHN0cmluZywgaW5wdXRzOiBXcHNJbnB1dFtdLFxuICAgICAgICBvdXRwdXRzOiBXcHNPdXRwdXREZXNjcmlwdGlvbltdLCBxdWVyeSQ6IE9ic2VydmFibGU8V3BzRGF0YVtdPik6IE9ic2VydmFibGU8V3BzRGF0YVtdPiB7XG5cbiAgICAgICAgY29uc3QgY2FjaGVkUmVzcG9uc2UkOiBPYnNlcnZhYmxlPFdwc1Jlc3VsdFtdIHwgbnVsbD4gPSB0aGlzLmNhY2hlLmdldCh7dXJsLCBwcm9jZXNzSWQsIGlucHV0cywgb3V0cHV0c30pO1xuICAgICAgICByZXR1cm4gY2FjaGVkUmVzcG9uc2UkLnBpcGUoXG4gICAgICAgICAgICBzd2l0Y2hNYXAoKHJlc3VsdHMpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAocmVzdWx0cykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2YocmVzdWx0cyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHF1ZXJ5JC5waXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgdGFwKChyZXNwb25zZTogV3BzRGF0YVtdKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jYWNoZS5zZXQoe3VybCwgcHJvY2Vzc0lkLCBpbnB1dHMsIG91dHB1dHN9LCByZXNwb25zZSkuc3Vic2NyaWJlKHN1Y2Nlc3MgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnc2V0IGRhdGEgaW4gY2FjaGUnLCBzdWNjZXNzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldE5leHRTdGF0ZShjdXJyZW50U3RhdGU6IFdwc1N0YXRlLCBzZXJ2ZXJVcmw6IHN0cmluZywgcHJvY2Vzc0lkOiBzdHJpbmcsIGlucHV0czogV3BzSW5wdXRbXSxcbiAgICAgICAgb3V0cHV0RGVzY3JpcHRpb25zOiBXcHNPdXRwdXREZXNjcmlwdGlvbltdKTogT2JzZXJ2YWJsZTxXcHNTdGF0ZT4ge1xuXG4gICAgICAgIGxldCByZXF1ZXN0JDogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuICAgICAgICBpZiAodGhpcy52ZXJzaW9uID09PSAnMS4wLjAnKSB7XG5cbiAgICAgICAgICAgIGlmICghY3VycmVudFN0YXRlLnN0YXR1c0xvY2F0aW9uKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoJ05vIHN0YXR1cyBsb2NhdGlvbicpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVxdWVzdCQgPSB0aGlzLmdldFJhdyhjdXJyZW50U3RhdGUuc3RhdHVzTG9jYXRpb24pO1xuXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy52ZXJzaW9uID09PSAnMi4wLjAnKSB7XG5cbiAgICAgICAgICAgIGlmICghY3VycmVudFN0YXRlLmpvYklEKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoJ05vIGpvYi1JZCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgZXhlY2JvZHkgPSB0aGlzLndwc21hcnNoYWxsZXIubWFyc2hhbGxHZXRTdGF0dXNCb2R5KHNlcnZlclVybCwgcHJvY2Vzc0lkLCBjdXJyZW50U3RhdGUuam9iSUQpO1xuICAgICAgICAgICAgY29uc3QgeG1sRXhlY2JvZHkgPSB0aGlzLnhtbG1hcnNoYWxsZXIubWFyc2hhbFN0cmluZyhleGVjYm9keSk7XG5cbiAgICAgICAgICAgIHJlcXVlc3QkID0gdGhpcy5wb3N0UmF3KHNlcnZlclVybCwgeG1sRXhlY2JvZHkpO1xuXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCdHZXRTdGF0dXMnIGhhcyBub3QgeWV0IGJlZW4gaW1wbGVtZW50ZWQgZm9yIHRoaXMgV1BTLVZlcnNpb24gKCR7dGhpcy52ZXJzaW9ufSkuYCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByZXF1ZXN0MSQ6IE9ic2VydmFibGU8V3BzU3RhdGU+ID0gcmVxdWVzdCQucGlwZShcbiAgICAgICAgICAgIGRlbGF5ZWRSZXRyeSgyMDAwLCAyKSxcbiAgICAgICAgICAgIG1hcCgoeG1sUmVzcG9uc2U6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGpzb25SZXNwb25zZSA9IHRoaXMueG1sdW5tYXJzaGFsbGVyLnVubWFyc2hhbFN0cmluZyh4bWxSZXNwb25zZSk7XG4gICAgICAgICAgICAgICAgY29uc3Qgb3V0cHV0OiBXcHNTdGF0ZSA9XG4gICAgICAgICAgICAgICAgICAgIHRoaXMud3BzbWFyc2hhbGxlci51bm1hcnNoYWxHZXRTdGF0ZVJlc3BvbnNlKGpzb25SZXNwb25zZSwgc2VydmVyVXJsLCBwcm9jZXNzSWQsIGlucHV0cywgb3V0cHV0RGVzY3JpcHRpb25zKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gb3V0cHV0O1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcblxuICAgICAgICByZXR1cm4gcmVxdWVzdDEkO1xuICAgIH1cblxuICAgIHByaXZhdGUgZmV0Y2hSZXN1bHRzKGxhc3RTdGF0ZTogV3BzU3RhdGUsIHNlcnZlclVybDogc3RyaW5nLCBwcm9jZXNzSWQ6IHN0cmluZywgaW5wdXRzOiBXcHNJbnB1dFtdLFxuICAgICAgICBvdXRwdXREZXNjcmlwdGlvbnM6IFdwc091dHB1dERlc2NyaXB0aW9uW10sIHVubWFyc2hhbEZ1bmN0aW9uPzogKGpzb25SZXNwb25zZTogYW55KSA9PiBXcHNEYXRhW10pOiBPYnNlcnZhYmxlPFdwc0RhdGFbXT4ge1xuXG4gICAgICAgIGlmIChsYXN0U3RhdGUucmVzdWx0cykgeyAvLyBXUFMgMS4wOiByZXN1bHRzIHNob3VsZCBhbHJlYWR5IGJlIGluIGxhc3Qgc3RhdGVcbiAgICAgICAgICAgIGxldCBvdXRwdXQ6IFdwc0RhdGFbXTtcbiAgICAgICAgICAgIGlmICh1bm1hcnNoYWxGdW5jdGlvbikge1xuICAgICAgICAgICAgICAgIG91dHB1dCA9IHVubWFyc2hhbEZ1bmN0aW9uKGxhc3RTdGF0ZS5yZXN1bHRzKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgb3V0cHV0ID0gdGhpcy53cHNtYXJzaGFsbGVyLnVubWFyc2hhbFN5bmNFeGVjdXRlUmVzcG9uc2UobGFzdFN0YXRlLnJlc3VsdHMsIHNlcnZlclVybCwgcHJvY2Vzc0lkLCBpbnB1dHMsIG91dHB1dERlc2NyaXB0aW9ucyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gb2Yob3V0cHV0KTtcblxuXG4gICAgICAgIH0gZWxzZSB7IC8vIFdQUyAyLjA6IGdldCByZXN1bHRzIHdpdGggcG9zdCByZXF1ZXN0XG4gICAgICAgICAgICBpZiAoIWxhc3RTdGF0ZS5qb2JJRCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgWW91IHdhbnQgbWUgdG8gZ2V0IGEgcmVzdWx0LCBidXQgSSBjYW4ndCBmaW5kIGEgam9iSWQuIEkgZG9uJ3Qga25vdyB3aGF0IHRvIGRvIG5vdyFgKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgZXhlY0JvZHkgPSB0aGlzLndwc21hcnNoYWxsZXIubWFyc2hhbGxHZXRSZXN1bHRCb2R5KHNlcnZlclVybCwgcHJvY2Vzc0lkLCBsYXN0U3RhdGUuam9iSUQpO1xuICAgICAgICAgICAgY29uc3QgeG1sRXhlY0JvZHkgPSB0aGlzLnhtbG1hcnNoYWxsZXIubWFyc2hhbFN0cmluZyhleGVjQm9keSk7XG5cbiAgICAgICAgICAgIHJldHVybiB0aGlzLnBvc3RSYXcoc2VydmVyVXJsLCB4bWxFeGVjQm9keSkucGlwZShcbiAgICAgICAgICAgICAgICBtYXAoKHhtbFJlc3BvbnNlOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QganNvblJlc3BvbnNlID0gdGhpcy54bWx1bm1hcnNoYWxsZXIudW5tYXJzaGFsU3RyaW5nKHhtbFJlc3BvbnNlKTtcbiAgICAgICAgICAgICAgICAgICAgbGV0IG91dHB1dDogV3BzRGF0YVtdO1xuICAgICAgICAgICAgICAgICAgICBpZiAodW5tYXJzaGFsRnVuY3Rpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dCA9IHVubWFyc2hhbEZ1bmN0aW9uKGpzb25SZXNwb25zZSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXQgPSB0aGlzLndwc21hcnNoYWxsZXIudW5tYXJzaGFsU3luY0V4ZWN1dGVSZXNwb25zZShqc29uUmVzcG9uc2UsIHNlcnZlclVybCwgcHJvY2Vzc0lkLCBpbnB1dHMsIG91dHB1dERlc2NyaXB0aW9ucyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG91dHB1dDtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9XG5cblxuICAgIHByaXZhdGUgZXhlY3V0ZUFzeW5jQmFzaWModXJsOiBzdHJpbmcsIHByb2Nlc3NJZDogc3RyaW5nLCBpbnB1dHM6IFdwc0lucHV0W10sXG4gICAgICAgIG91dHB1dERlc2NyaXB0aW9uczogV3BzT3V0cHV0RGVzY3JpcHRpb25bXSk6IE9ic2VydmFibGU8V3BzU3RhdGU+IHtcblxuICAgICAgICBjb25zdCBleGVjdXRlVXJsID0gdGhpcy53cHNtYXJzaGFsbGVyLmV4ZWN1dGVVcmwodXJsLCBwcm9jZXNzSWQpO1xuICAgICAgICBjb25zdCBleGVjYm9keSA9IHRoaXMud3BzbWFyc2hhbGxlci5tYXJzaGFsRXhlY0JvZHkocHJvY2Vzc0lkLCBpbnB1dHMsIG91dHB1dERlc2NyaXB0aW9ucywgdHJ1ZSk7XG4gICAgICAgIGNvbnN0IHhtbEV4ZWNib2R5ID0gdGhpcy54bWxtYXJzaGFsbGVyLm1hcnNoYWxTdHJpbmcoZXhlY2JvZHkpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLnBvc3RSYXcoZXhlY3V0ZVVybCwgeG1sRXhlY2JvZHkpLnBpcGUoXG4gICAgICAgICAgICBtYXAoKHhtbFJlc3BvbnNlOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBqc29uUmVzcG9uc2UgPSB0aGlzLnhtbHVubWFyc2hhbGxlci51bm1hcnNoYWxTdHJpbmcoeG1sUmVzcG9uc2UpO1xuICAgICAgICAgICAgICAgIGNvbnN0IG91dHB1dDogV3BzU3RhdGUgPVxuICAgICAgICAgICAgICAgICAgICB0aGlzLndwc21hcnNoYWxsZXIudW5tYXJzaGFsQXN5bmNFeGVjdXRlUmVzcG9uc2UoanNvblJlc3BvbnNlLCB1cmwsIHByb2Nlc3NJZCwgaW5wdXRzLCBvdXRwdXREZXNjcmlwdGlvbnMpO1xuICAgICAgICAgICAgICAgIHJldHVybiBvdXRwdXQ7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGV4ZWN1dGUodXJsOiBzdHJpbmcsIHByb2Nlc3NJZDogc3RyaW5nLCBpbnB1dHM6IFdwc0lucHV0W10sXG4gICAgICAgIG91dHB1dERlc2NyaXB0aW9uczogV3BzT3V0cHV0RGVzY3JpcHRpb25bXSwgdW5tYXJzaGFsRnVuY3Rpb24/OiAoanNvblJlc3BvbnNlOiBhbnkpID0+IFdwc0RhdGFbXSk6IE9ic2VydmFibGU8V3BzUmVzdWx0W10+IHtcblxuICAgICAgICBjb25zdCBleGVjdXRlVXJsID0gdGhpcy53cHNtYXJzaGFsbGVyLmV4ZWN1dGVVcmwodXJsLCBwcm9jZXNzSWQpO1xuICAgICAgICBjb25zdCBleGVjYm9keSA9IHRoaXMud3BzbWFyc2hhbGxlci5tYXJzaGFsRXhlY0JvZHkocHJvY2Vzc0lkLCBpbnB1dHMsIG91dHB1dERlc2NyaXB0aW9ucywgZmFsc2UpO1xuICAgICAgICBjb25zdCB4bWxFeGVjYm9keSA9IHRoaXMueG1sbWFyc2hhbGxlci5tYXJzaGFsU3RyaW5nKGV4ZWNib2R5KTtcblxuICAgICAgICByZXR1cm4gdGhpcy5wb3N0UmF3KGV4ZWN1dGVVcmwsIHhtbEV4ZWNib2R5KS5waXBlKFxuICAgICAgICAgICAgbWFwKCh4bWxSZXNwb25zZTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QganNvblJlc3BvbnNlID0gdGhpcy54bWx1bm1hcnNoYWxsZXIudW5tYXJzaGFsU3RyaW5nKHhtbFJlc3BvbnNlKTtcbiAgICAgICAgICAgICAgICBpZiAodW5tYXJzaGFsRnVuY3Rpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVubWFyc2hhbEZ1bmN0aW9uKGpzb25SZXNwb25zZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IG91dHB1dDogV3BzRGF0YVtdID1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy53cHNtYXJzaGFsbGVyLnVubWFyc2hhbFN5bmNFeGVjdXRlUmVzcG9uc2UoanNvblJlc3BvbnNlLCB1cmwsIHByb2Nlc3NJZCwgaW5wdXRzLCBvdXRwdXREZXNjcmlwdGlvbnMpO1xuICAgICAgICAgICAgICAgIHJldHVybiBvdXRwdXQ7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGRpc21pc3Moc2VydmVyVXJsOiBzdHJpbmcsIHByb2Nlc3NJZDogc3RyaW5nLCBqb2JJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcblxuICAgICAgICBjb25zdCBkaXNtaXNzVXJsID0gdGhpcy53cHNtYXJzaGFsbGVyLmRpc21pc3NVcmwoc2VydmVyVXJsLCBwcm9jZXNzSWQsIGpvYklkKTtcbiAgICAgICAgY29uc3QgZGlzbWlzc0JvZHkgPSB0aGlzLndwc21hcnNoYWxsZXIubWFyc2hhbERpc21pc3NCb2R5KGpvYklkKTtcbiAgICAgICAgY29uc3QgeG1sRGlzbWlzc0JvZHkgPSB0aGlzLnhtbG1hcnNoYWxsZXIubWFyc2hhbFN0cmluZyhkaXNtaXNzQm9keSk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMucG9zdFJhdyhkaXNtaXNzVXJsLCB4bWxEaXNtaXNzQm9keSkucGlwZShcbiAgICAgICAgICAgIG1hcCgoeG1sUmVzcG9uc2U6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGpzb25SZXNwb25zZSA9IHRoaXMueG1sdW5tYXJzaGFsbGVyLnVubWFyc2hhbFN0cmluZyh4bWxSZXNwb25zZSk7XG4gICAgICAgICAgICAgICAgY29uc3Qgb3V0cHV0ID0gdGhpcy53cHNtYXJzaGFsbGVyLnVubWFyc2hhbERpc21pc3NSZXNwb25zZShqc29uUmVzcG9uc2UsIHNlcnZlclVybCwgcHJvY2Vzc0lkKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gb3V0cHV0O1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwb3N0UmF3KHVybDogc3RyaW5nLCB4bWxCb2R5OiBzdHJpbmcpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgICAgICBjb25zdCBwYXJhcyA9IHtcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ3RleHQveG1sJyxcbiAgICAgICAgICAgICAgICAnQWNjZXB0JzogJ3RleHQveG1sLCBhcHBsaWNhdGlvbi94bWwnXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcmVzcG9uc2VUeXBlOiAndGV4dCdcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIHRoaXMud2ViY2xpZW50LnBvc3QodXJsLCB4bWxCb2R5LCBwYXJhcykucGlwZShcbiAgICAgICAgICAgIGRlbGF5ZWRSZXRyeSgyMDAwLCAyKSxcbiAgICAgICAgICAgIHRhcChyID0+IHt0aGlzLnBhcnNlUmVzcG9uc2VGb3JFcnJvcnModXJsLCByKX0pLFxuICAgICAgICAgICAgc2hhcmUoKSAgLy8gdHVybmluZyBob3Q6IHRvIG1ha2Ugc3VyZSB0aGF0IG11bHRpcGxlIHN1YnNjcmliZXJzIGRvbnQgY2F1c2UgbXVsdGlwbGUgcmVxdWVzdHNcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBnZXRSYXcodXJsOiBzdHJpbmcpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgICAgICBjb25zdCBwYXJhcyA9IHtcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgICAnQWNjZXB0JzogJ3RleHQveG1sLCBhcHBsaWNhdGlvbi94bWwnXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcmVzcG9uc2VUeXBlOiAndGV4dCdcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIHRoaXMud2ViY2xpZW50LmdldCh1cmwsIHBhcmFzKS5waXBlKFxuICAgICAgICAgICAgZGVsYXllZFJldHJ5KDIwMDAsIDIpLFxuICAgICAgICAgICAgdGFwKHIgPT4ge3RoaXMucGFyc2VSZXNwb25zZUZvckVycm9ycyh1cmwsIHIpfSksXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBwYXJzZVJlc3BvbnNlRm9yRXJyb3JzKHVybDogc3RyaW5nLCByZXNwb25zZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGlmIChyZXNwb25zZS5tYXRjaCgnPHRpdGxlPjQwNCBOb3QgRm91bmQ8L3RpdGxlPicpIHx8IHJlc3BvbnNlLm1hdGNoKCdvd3M6RXhjZXB0aW9uUmVwb3J0JykpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRnJvbSAke3VybH06ICBgICsgcmVzcG9uc2UpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVXNlIHRoaXMgbWV0aG9kIGlmIHlvdSB3YW50IHRvIHNldCB0aGUgY2FjaGluZyBtZWNoYW5pc20gb24gYSBjbGllbnQtbGV2ZWxcbiAgICAgKiAoYXMgb3Bwb3NlZCB0byBvbiBhIGFwcC13aWRlIGxldmVsKVxuICAgICAqIEBwYXJhbSBjYWNoZSA6IENhY2hlIChAZGxyLWVvYy9zZXJ2aWNlcy1vZ2MpXG4gICAgICovXG4gICAgc2V0Q2FjaGUoY2FjaGU6IENhY2hlKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2FjaGUgPSBjYWNoZTtcbiAgICB9XG59XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3BzY2xpZW50LmpzIiwic291cmNlUm9vdCI6Ii9ob21lL3J1bm5lci93b3JrL3VraXMtZnJvbnRlbmQtbGlicmFyaWVzL3VraXMtZnJvbnRlbmQtbGlicmFyaWVzL3Byb2plY3RzL3V0aWxzLW9nYy9zcmMvIiwic291cmNlcyI6WyJsaWIvd3BzL3dwc2NsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNqRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNqRSxPQUFPLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEUsT0FBTyxLQUFLLGlCQUFpQixNQUFNLDJCQUEyQixDQUFDO0FBQUMsTUFBTSxTQUFTLEdBQUcsaUJBQWlCLENBQUMsU0FBUyxDQUFDO0FBQzlHLE9BQU8sS0FBSyxpQkFBaUIsTUFBTSwyQkFBMkIsQ0FBQztBQUFDLE1BQU0sU0FBUyxHQUFHLGlCQUFpQixDQUFDLFNBQVMsQ0FBQztBQUM5RyxPQUFPLEtBQUssZUFBZSxNQUFNLHlCQUF5QixDQUFDO0FBQUMsTUFBTSxPQUFPLEdBQUcsZUFBZSxDQUFDLE9BQU8sQ0FBQztBQUNwRyxPQUFPLEtBQUssaUJBQWlCLE1BQU0sMkJBQTJCLENBQUM7QUFBQyxNQUFNLFNBQVMsR0FBRyxpQkFBaUIsQ0FBQyxTQUFTLENBQUM7QUFDOUcsT0FBTyxLQUFLLGVBQWUsTUFBTSx5QkFBeUIsQ0FBQztBQUFDLE1BQU0sT0FBTyxHQUFHLGVBQWUsQ0FBQyxPQUFPLENBQUM7QUFDcEcsT0FBTyxLQUFLLGFBQWEsTUFBTSx5QkFBeUIsQ0FBQztBQUFDLE1BQU0sTUFBTSxHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUM7QUFDOUYsT0FB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QUMsSUFBSSxDQUN0QyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUNyQixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRSxJQUFJLENBQUMsc0JBQXNCLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFBLENBQUEsQ0FBQyxDQUFDLENBQ2xELENBQUM7SUFDTixDQUFDO0lBRU8sc0JBQXNCLENBQUMsR0FBVyxFQUFFLFFBQWdCO1FBQ3hELElBQUksUUFBUSxDQUFDLEtBQUssQ0FBQyw4QkFBOEIsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxLQUFLLENBQUMscUJBQXFCLENBQUMsRUFBRTtZQUN6RixNQUFNLElBQUksS0FBSyxDQUFDLFFBQVEsR0FBRyxLQUFLLEdBQUcsUUFBUSxDQUFDLENBQUM7U0FDaEQ7SUFDTCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFFBQVEsQ0FBQyxLQUFZO1FBQ2pCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQ3ZCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFdwc01hcnNoYWxsZXIsIFdwc0lucHV0LCBXcHNWZXJzaW9uLCBXcHNSZXN1bHQsIFdwc091dHB1dERlc2NyaXB0aW9uLCBXcHNEYXRhLCBXcHNTdGF0ZSxcbiAgICBXcHNDYXBhYmlsaXR5LCBXcHNQcm9jZXNzRGVzY3JpcHRpb24gfSBmcm9tICcuL3dwc19kYXRhdHlwZXMnO1xuaW1wb3J0IHsgV3BzTWFyc2hhbGxlcjEwMCB9IGZyb20gJy4vd3BzMTAwL3dwc19tYXJzaGFsbGVyXzEuMC4wJztcbmltcG9ydCB7IFdwc01hcnNoYWxsZXIyMDAgfSBmcm9tICcuL3dwczIwMC93cHNfbWFyc2hhbGxlcl8yLjAuMCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwLCBzd2l0Y2hNYXAsIHRhcCwgc2hhcmUsIG1lcmdlTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0ICogYXMgWExpbmtfMV8wX0ZhY3RvcnkgZnJvbSAndzNjLXNjaGVtYXMvbGliL1hMaW5rXzFfMCc7IGNvbnN0IFhMaW5rXzFfMCA9IFhMaW5rXzFfMF9GYWN0b3J5LlhMaW5rXzFfMDtcbmltcG9ydCAqIGFzIE9XU18xXzFfMF9GYWN0b3J5IGZyb20gJ29nYy1zY2hlbWFzL2xpYi9PV1NfMV8xXzAnOyBjb25zdCBPV1NfMV8xXzAgPSBPV1NfMV8xXzBfRmFjdG9yeS5PV1NfMV8xXzA7XG5pbXBvcnQgKiBhcyBPV1NfMl8wX0ZhY3RvcnkgZnJvbSAnb2djLXNjaGVtYXMvbGliL09XU18yXzAnOyBjb25zdCBPV1NfMl8wID0gT1dTXzJfMF9GYWN0b3J5Lk9XU18yXzA7XG5pbXBvcnQgKiBhcyBXUFNfMV8wXzBfRmFjdG9yeSBmcm9tICdvZ2Mtc2NoZW1hcy9saWIvV1BTXzFfMF8wJzsgY29uc3QgV1BTXzFfMF8wID0gV1BTXzFfMF8wX0ZhY3RvcnkuV1BTXzFfMF8wO1xuaW1wb3J0ICogYXMgV1BTXzJfMF9GYWN0b3J5IGZyb20gJ29nYy1zY2hlbWFzL2xpYi9XUFNfMl8wJzsgY29uc3QgV1BTXzJfMCA9IFdQU18yXzBfRmFjdG9yeS5XUFNfMl8wO1xuaW1wb3J0ICogYXMgSnNvbml4RmFjdG9yeSBmcm9tICdAbWljaGFlbGxhbmdiZWluL2pzb25peCc7IGNvbnN0IEpzb25peCA9IEpzb25peEZhY3RvcnkuSnNvbml4O1xuaW1wb3J0IHsgcG9sbFVudGlsLCBkZWxheWVkUmV0cnkgfSBmcm9tICcuL3V0aWxzL3BvbGxpbmcnO1xuaW1wb3J0IHsgQ2FjaGUsIEZha2VDYWNoZSB9IGZyb20gJy4vY2FjaGUnO1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJy4uL2h0dHBDbGllbnQvaHR0cGNsaWVudCc7XG5cblxuXG4vKipcbiAqIFRoZSBXcHMtY2xpZW50IGFic3RyYWN0cyBhd2F5IHRoZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIFdwczEuMC4wIGFuZCBXcHMyLjAuMFxuICogVGhlcmUgYXJlIHR3byBsYXllcnMgb2YgbWFyc2hhbGxpbmc6XG4gKiAgLSB0aGUgV3BzLW1hcnNoYWxsZXIgbWFyc2hhbHMgdXNlci1mYWNpbmcgZGF0YSB0byB3cHMtc3BlY2lmaWMgdHlwZXNcbiAqICAtIEpzb25peCBtYXJzaGFscyB3cHMtc3BlY2lmaWMgZGF0YSB0byB4bWwuXG4gKiB1c2VyLWZhY2luZyBkYXRhIC0+IHdwc21hcnNoYWxsZXIgLT4gV3BzLXR5cGUtc3BlY2lmaWMgZGF0YSAtPiBKc29uaXgtbWFyaHNhbGxlciAtPiBYTUwgLT5cbiAqIC0+IHdlYmNsaWVudCAtPiBXUFMgLT4gWE1MIC0+IEpzb25peC11bm1hcnNoYWxsZXIgLT4gV3BzLXR5cGUtc3BlY2lmaWMgZGF0YSAtPiB3cHNtYXJzaGFsbGVyIC0+IHVzZXItZmFjaW5nIGRhdGFcbiAqL1xuZXhwb3J0IGNsYXNzIFdwc0NsaWVudCB7XG5cbiAgICBwcml2YXRlIHZlcnNpb246IFdwc1ZlcnNpb247XG4gICAgcHJpdmF0ZSB4bWxtYXJzaGFsbGVyOiBhbnk7XG4gICAgcHJpdmF0ZSB4bWx1bm1hcnNoYWxsZXI6IGFueTtcbiAgICBwcml2YXRlIHdwc21hcnNoYWxsZXI6IFdwc01hcnNoYWxsZXI7XG4gICAgcHJpdmF0ZSBjYWNoZTogQ2FjaGUgPSBuZXcgRmFrZUNhY2hlKCk7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgdmVyc2lvbjogV3BzVmVyc2lvbiA9ICcxLjAuMCcsXG4gICAgICAgIHByaXZhdGUgd2ViY2xpZW50OiBIdHRwQ2xpZW50LFxuICAgICAgICBjYWNoZT86IENhY2hlXG4gICAgKSB7XG4gICAgICAgIHRoaXMudmVyc2lvbiA9IHZlcnNpb247XG4gICAgICAgIGlmIChjYWNoZSkgdGhpcy5jYWNoZSA9IGNhY2hlO1xuICAgICAgICBsZXQgY29udGV4dDtcbiAgICAgICAgaWYgKHRoaXMudmVyc2lvbiA9PT0gJzEuMC4wJykge1xuICAgICAgICAgICAgdGhpcy53cHNtYXJzaGFsbGVyID0gbmV3IFdwc01hcnNoYWxsZXIxMDAoKTtcbiAgICAgICAgICAgIGNvbnRleHQgPSBuZXcgSnNvbml4LkNvbnRleHQoW1hMaW5rXzFfMCwgT1dTXzFfMV8wLCBXUFNfMV8wXzBdKTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnZlcnNpb24gPT09ICcyLjAuMCcpIHtcbiAgICAgICAgICAgIHRoaXMud3BzbWFyc2hhbGxlciA9IG5ldyBXcHNNYXJzaGFsbGVyMjAwKCk7XG4gICAgICAgICAgICBjb250ZXh0ID0gbmV3IEpzb25peC5Db250ZXh0KFtYTGlua18xXzAsIE9XU18yXzAsIFdQU18yXzBdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignWW91IGVudGVyZWQgYSBXUFMgdmVyc2lvbiBvdGhlciB0aGFuIDEuMC4wIG9yIDIuMC4wLicpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMueG1sdW5tYXJzaGFsbGVyID0gY29udGV4dC5jcmVhdGVVbm1hcnNoYWxsZXIoKTtcbiAgICAgICAgdGhpcy54bWxtYXJzaGFsbGVyID0gY29udGV4dC5jcmVhdGVNYXJzaGFsbGVyKCk7XG4gICAgfVxuXG5cbiAgICBnZXRDYXBhYmlsaXRpZXModXJsOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFdwc0NhcGFiaWxpdHlbXT4ge1xuICAgICAgICBjb25zdCBnZXRDYXBhYmlsaXRpZXNVcmwgPSB0aGlzLndwc21hcnNoYWxsZXIuZ2V0Q2FwYWJpbGl0aWVzVXJsKHVybCk7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFJhdyhnZXRDYXBhYmlsaXRpZXNVcmwpLnBpcGUoXG4gICAgICAgICAgICBtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCByZXNwb25zZUpzb24gPSB0aGlzLnhtbHVubWFyc2hhbGxlci51bm1hcnNoYWxTdHJpbmcocmVzcG9uc2UpO1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLndwc21hcnNoYWxsZXIudW5tYXJzaGFsQ2FwYWJpbGl0aWVzKHJlc3BvbnNlSnNvbi52YWx1ZSk7XG4gICAgICAgICAgICB9KSAvLyBAVE9ETzogaGFuZGxlIGNhc2Ugd2hlbiBpbnN0ZWFkIG9mIFdwc0NhcGFiaWxpdGVzIGFuIEV4Y2VwdGlvblJlcG9ydCBpcyByZXR1cm5lZFxuICAgICAgICApO1xuICAgIH1cblxuXG4gICAgZGVzY3JpYmVQcm9jZXNzKHVybDogc3RyaW5nLCBwcm9jZXNzSWQ6IHN0cmluZyk6IE9ic2VydmFibGU8V3BzUHJvY2Vzc0Rlc2NyaXB0aW9uPiB7XG4gICAgICAgIGNvbnN0IGRlc2NyaWJlUHJvY2Vzc1VybCA9IHRoaXMud3BzbWFyc2hhbGxlci5nZXREZXNjcmliZVByb2Nlc3NVcmwodXJsLCBwcm9jZXNzSWQpO1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRSYXcoZGVzY3JpYmVQcm9jZXNzVXJsKS5waXBlKFxuICAgICAgICAgICAgbWFwKChyZXNwb25zZTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzcG9uc2VKc29uID0gdGhpcy54bWx1bm1hcnNoYWxsZXIudW5tYXJzaGFsU3RyaW5nKHJlc3BvbnNlKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy53cHNtYXJzaGFsbGVyLnVubWFyc2hhbFByb2Nlc3NEZXNjcmlwdGlvbihyZXNwb25zZUpzb24udmFsdWUpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cblxuICAgIGV4ZWN1dGVBc3luYyh1cmw6IHN0cmluZywgcHJvY2Vzc0lkOiBzdHJpbmcsIGlucHV0czogV3BzSW5wdXRbXSwgb3V0cHV0czogV3BzT3V0cHV0RGVzY3JpcHRpb25bXSxcbiAgICAgICAgcG9sbGluZ1JhdGU6IG51bWJlciA9IDEwMDAsXG4gICAgICAgIHRhcEZ1bmN0aW9uPzogKHJlc3BvbnNlOiBXcHNTdGF0ZSB8IG51bGwpID0+IGFueSwgdW5tYXJzaGFsRnVuY3Rpb24/OiAoanNvblJlc3BvbnNlOiBhbnkpID0+IFdwc0RhdGFbXSk6IE9ic2VydmFibGU8V3BzUmVzdWx0W10+IHtcblxuICAgICAgICBjb25zdCBleGVjdXRlUmVxdWVzdCQ6IE9ic2VydmFibGU8V3BzU3RhdGU+ID0gdGhpcy5leGVjdXRlQXN5bmNCYXNpYyh1cmwsIHByb2Nlc3NJZCwgaW5wdXRzLCBvdXRwdXRzKTtcblxuICAgICAgICBjb25zdCBxdWVyeSQgPSBleGVjdXRlUmVxdWVzdCQucGlwZShcblxuICAgICAgICAgICAgLy8gcG9sbCB1bnRpbCBzdWNjZWVkZWRcbiAgICAgICAgICAgIG1lcmdlTWFwKChjdXJyZW50U3RhdGU6IFdwc1N0YXRlKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgbmV4dFN0YXRlJDogT2JzZXJ2YWJsZTxXcHNTdGF0ZT4gPSB0aGlzLmdldE5leHRTdGF0ZShjdXJyZW50U3RhdGUsIHVybCwgcHJvY2Vzc0lkLCBpbnB1dHMsIG91dHB1dHMpO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgcG9sbCQ6IE9ic2VydmFibGU8V3BzU3RhdGU+ID0gcG9sbFVudGlsPFdwc1N0YXRlPihcbiAgICAgICAgICAgICAgICAgICAgbmV4dFN0YXRlJCxcbiAgICAgICAgICAgICAgICAgICAgKHJlc3BvbnNlOiBXcHNTdGF0ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gJ0ZhaWxlZCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEVycm9yIGR1cmluZyBleGVjdXRpb24gb2YgcHJvY2VzcyAke3Byb2Nlc3NJZH06IGAgKyByZXNwb25zZS5zdGF0dXNMb2NhdGlvbik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzcG9uc2Uuc3RhdHVzID09PSAnU3VjY2VlZGVkJztcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgdGFwRnVuY3Rpb24sXG4gICAgICAgICAgICAgICAgICAgIHBvbGxpbmdSYXRlXG4gICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgIHJldHVybiBwb2xsJDtcbiAgICAgICAgICAgIH0pLFxuXG4gICAgICAgICAgICAvLyBmZXRjaCByZXN1bHRzXG4gICAgICAgICAgICBtZXJnZU1hcCgobGFzdFN0YXRlOiBXcHNTdGF0ZSkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmZldGNoUmVzdWx0cyhsYXN0U3RhdGUsIHVybCwgcHJvY2Vzc0lkLCBpbnB1dHMsIG91dHB1dHMsIHVubWFyc2hhbEZ1bmN0aW9uKTtcbiAgICAgICAgICAgIH0pLFxuXG4gICAgICAgICAgICAvLyBJbiBjYXNlIG9mIGVycm9yczpcbiAgICAgICAgICAgIHRhcCgocmVzcG9uc2U6IFdwc0RhdGFbXSkgPT4ge1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgcmVzdWx0IG9mIHJlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQuZGVzY3JpcHRpb24udHlwZSA9PT0gJ2Vycm9yJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ3NlcnZlciByZXNwb25kZWQgd2l0aCAyMDAsIGJ1dCBib2R5IGNvbnRhaW5lZCBhbiBlcnJvci1yZXN1bHQ6ICcsIHJlc3VsdCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IocmVzdWx0LnZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuY2FjaGVkUXVlcnkodXJsLCBwcm9jZXNzSWQsIGlucHV0cywgb3V0cHV0cywgcXVlcnkkKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNhY2hlZFF1ZXJ5KHVybDogc3RyaW5nLCBwcm9jZXNzSWQ6IHN0cmluZywgaW5wdXRzOiBXcHNJbnB1dFtdLFxuICAgICAgICBvdXRwdXRzOiBXcHNPdXRwdXREZXNjcmlwdGlvbltdLCBxdWVyeSQ6IE9ic2VydmFibGU8V3BzRGF0YVtdPik6IE9ic2VydmFibGU8V3BzRGF0YVtdPiB7XG5cbiAgICAgICAgY29uc3QgY2FjaGVkUmVzcG9uc2UkOiBPYnNlcnZhYmxlPFdwc1Jlc3VsdFtdIHwgbnVsbD4gPSB0aGlzLmNhY2hlLmdldCh7dXJsLCBwcm9jZXNzSWQsIGlucHV0cywgb3V0cHV0c30pO1xuICAgICAgICByZXR1cm4gY2FjaGVkUmVzcG9uc2UkLnBpcGUoXG4gICAgICAgICAgICBzd2l0Y2hNYXAoKHJlc3VsdHMpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAocmVzdWx0cykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2YocmVzdWx0cyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHF1ZXJ5JC5waXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgdGFwKChyZXNwb25zZTogV3BzRGF0YVtdKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jYWNoZS5zZXQoe3VybCwgcHJvY2Vzc0lkLCBpbnB1dHMsIG91dHB1dHN9LCByZXNwb25zZSkuc3Vic2NyaWJlKHN1Y2Nlc3MgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnc2V0IGRhdGEgaW4gY2FjaGUnLCBzdWNjZXNzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldE5leHRTdGF0ZShjdXJyZW50U3RhdGU6IFdwc1N0YXRlLCBzZXJ2ZXJVcmw6IHN0cmluZywgcHJvY2Vzc0lkOiBzdHJpbmcsIGlucHV0czogV3BzSW5wdXRbXSxcbiAgICAgICAgb3V0cHV0RGVzY3JpcHRpb25zOiBXcHNPdXRwdXREZXNjcmlwdGlvbltdKTogT2JzZXJ2YWJsZTxXcHNTdGF0ZT4ge1xuXG4gICAgICAgIGxldCByZXF1ZXN0JDogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuICAgICAgICBpZiAodGhpcy52ZXJzaW9uID09PSAnMS4wLjAnKSB7XG5cbiAgICAgICAgICAgIGlmICghY3VycmVudFN0YXRlLnN0YXR1c0xvY2F0aW9uKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoJ05vIHN0YXR1cyBsb2NhdGlvbicpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVxdWVzdCQgPSB0aGlzLmdldFJhdyhjdXJyZW50U3RhdGUuc3RhdHVzTG9jYXRpb24pO1xuXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy52ZXJzaW9uID09PSAnMi4wLjAnKSB7XG5cbiAgICAgICAgICAgIGlmICghY3VycmVudFN0YXRlLmpvYklEKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoJ05vIGpvYi1JZCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgZXhlY2JvZHkgPSB0aGlzLndwc21hcnNoYWxsZXIubWFyc2hhbGxHZXRTdGF0dXNCb2R5KHNlcnZlclVybCwgcHJvY2Vzc0lkLCBjdXJyZW50U3RhdGUuam9iSUQpO1xuICAgICAgICAgICAgY29uc3QgeG1sRXhlY2JvZHkgPSB0aGlzLnhtbG1hcnNoYWxsZXIubWFyc2hhbFN0cmluZyhleGVjYm9keSk7XG5cbiAgICAgICAgICAgIHJlcXVlc3QkID0gdGhpcy5wb3N0UmF3KHNlcnZlclVybCwgeG1sRXhlY2JvZHkpO1xuXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCdHZXRTdGF0dXMnIGhhcyBub3QgeWV0IGJlZW4gaW1wbGVtZW50ZWQgZm9yIHRoaXMgV1BTLVZlcnNpb24gKCR7dGhpcy52ZXJzaW9ufSkuYCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByZXF1ZXN0MSQ6IE9ic2VydmFibGU8V3BzU3RhdGU+ID0gcmVxdWVzdCQucGlwZShcbiAgICAgICAgICAgIGRlbGF5ZWRSZXRyeSgyMDAwLCAyKSxcbiAgICAgICAgICAgIG1hcCgoeG1sUmVzcG9uc2U6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGpzb25SZXNwb25zZSA9IHRoaXMueG1sdW5tYXJzaGFsbGVyLnVubWFyc2hhbFN0cmluZyh4bWxSZXNwb25zZSk7XG4gICAgICAgICAgICAgICAgY29uc3Qgb3V0cHV0OiBXcHNTdGF0ZSA9XG4gICAgICAgICAgICAgICAgICAgIHRoaXMud3BzbWFyc2hhbGxlci51bm1hcnNoYWxHZXRTdGF0ZVJlc3BvbnNlKGpzb25SZXNwb25zZSwgc2VydmVyVXJsLCBwcm9jZXNzSWQsIGlucHV0cywgb3V0cHV0RGVzY3JpcHRpb25zKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gb3V0cHV0O1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcblxuICAgICAgICByZXR1cm4gcmVxdWVzdDEkO1xuICAgIH1cblxuICAgIHByaXZhdGUgZmV0Y2hSZXN1bHRzKGxhc3RTdGF0ZTogV3BzU3RhdGUsIHNlcnZlclVybDogc3RyaW5nLCBwcm9jZXNzSWQ6IHN0cmluZywgaW5wdXRzOiBXcHNJbnB1dFtdLFxuICAgICAgICBvdXRwdXREZXNjcmlwdGlvbnM6IFdwc091dHB1dERlc2NyaXB0aW9uW10sIHVubWFyc2hhbEZ1bmN0aW9uPzogKGpzb25SZXNwb25zZTogYW55KSA9PiBXcHNEYXRhW10pOiBPYnNlcnZhYmxlPFdwc0RhdGFbXT4ge1xuXG4gICAgICAgIGlmIChsYXN0U3RhdGUucmVzdWx0cykgeyAvLyBXUFMgMS4wOiByZXN1bHRzIHNob3VsZCBhbHJlYWR5IGJlIGluIGxhc3Qgc3RhdGVcbiAgICAgICAgICAgIGxldCBvdXRwdXQ6IFdwc0RhdGFbXTtcbiAgICAgICAgICAgIGlmICh1bm1hcnNoYWxGdW5jdGlvbikge1xuICAgICAgICAgICAgICAgIG91dHB1dCA9IHVubWFyc2hhbEZ1bmN0aW9uKGxhc3RTdGF0ZS5yZXN1bHRzKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgb3V0cHV0ID0gdGhpcy53cHNtYXJzaGFsbGVyLnVubWFyc2hhbFN5bmNFeGVjdXRlUmVzcG9uc2UobGFzdFN0YXRlLnJlc3VsdHMsIHNlcnZlclVybCwgcHJvY2Vzc0lkLCBpbnB1dHMsIG91dHB1dERlc2NyaXB0aW9ucyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gb2Yob3V0cHV0KTtcblxuXG4gICAgICAgIH0gZWxzZSB7IC8vIFdQUyAyLjA6IGdldCByZXN1bHRzIHdpdGggcG9zdCByZXF1ZXN0XG4gICAgICAgICAgICBpZiAoIWxhc3RTdGF0ZS5qb2JJRCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgWW91IHdhbnQgbWUgdG8gZ2V0IGEgcmVzdWx0LCBidXQgSSBjYW4ndCBmaW5kIGEgam9iSWQuIEkgZG9uJ3Qga25vdyB3aGF0IHRvIGRvIG5vdyFgKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgZXhlY0JvZHkgPSB0aGlzLndwc21hcnNoYWxsZXIubWFyc2hhbGxHZXRSZXN1bHRCb2R5KHNlcnZlclVybCwgcHJvY2Vzc0lkLCBsYXN0U3RhdGUuam9iSUQpO1xuICAgICAgICAgICAgY29uc3QgeG1sRXhlY0JvZHkgPSB0aGlzLnhtbG1hcnNoYWxsZXIubWFyc2hhbFN0cmluZyhleGVjQm9keSk7XG5cbiAgICAgICAgICAgIHJldHVybiB0aGlzLnBvc3RSYXcoc2VydmVyVXJsLCB4bWxFeGVjQm9keSkucGlwZShcbiAgICAgICAgICAgICAgICBtYXAoKHhtbFJlc3BvbnNlOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QganNvblJlc3BvbnNlID0gdGhpcy54bWx1bm1hcnNoYWxsZXIudW5tYXJzaGFsU3RyaW5nKHhtbFJlc3BvbnNlKTtcbiAgICAgICAgICAgICAgICAgICAgbGV0IG91dHB1dDogV3BzRGF0YVtdO1xuICAgICAgICAgICAgICAgICAgICBpZiAodW5tYXJzaGFsRnVuY3Rpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dCA9IHVubWFyc2hhbEZ1bmN0aW9uKGpzb25SZXNwb25zZSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXQgPSB0aGlzLndwc21hcnNoYWxsZXIudW5tYXJzaGFsU3luY0V4ZWN1dGVSZXNwb25zZShqc29uUmVzcG9uc2UsIHNlcnZlclVybCwgcHJvY2Vzc0lkLCBpbnB1dHMsIG91dHB1dERlc2NyaXB0aW9ucyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG91dHB1dDtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9XG5cblxuICAgIHByaXZhdGUgZXhlY3V0ZUFzeW5jQmFzaWModXJsOiBzdHJpbmcsIHByb2Nlc3NJZDogc3RyaW5nLCBpbnB1dHM6IFdwc0lucHV0W10sXG4gICAgICAgIG91dHB1dERlc2NyaXB0aW9uczogV3BzT3V0cHV0RGVzY3JpcHRpb25bXSk6IE9ic2VydmFibGU8V3BzU3RhdGU+IHtcblxuICAgICAgICBjb25zdCBleGVjdXRlVXJsID0gdGhpcy53cHNtYXJzaGFsbGVyLmV4ZWN1dGVVcmwodXJsLCBwcm9jZXNzSWQpO1xuICAgICAgICBjb25zdCBleGVjYm9keSA9IHRoaXMud3BzbWFyc2hhbGxlci5tYXJzaGFsRXhlY0JvZHkocHJvY2Vzc0lkLCBpbnB1dHMsIG91dHB1dERlc2NyaXB0aW9ucywgdHJ1ZSk7XG4gICAgICAgIGNvbnN0IHhtbEV4ZWNib2R5ID0gdGhpcy54bWxtYXJzaGFsbGVyLm1hcnNoYWxTdHJpbmcoZXhlY2JvZHkpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLnBvc3RSYXcoZXhlY3V0ZVVybCwgeG1sRXhlY2JvZHkpLnBpcGUoXG4gICAgICAgICAgICBtYXAoKHhtbFJlc3BvbnNlOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBqc29uUmVzcG9uc2UgPSB0aGlzLnhtbHVubWFyc2hhbGxlci51bm1hcnNoYWxTdHJpbmcoeG1sUmVzcG9uc2UpO1xuICAgICAgICAgICAgICAgIGNvbnN0IG91dHB1dDogV3BzU3RhdGUgPVxuICAgICAgICAgICAgICAgICAgICB0aGlzLndwc21hcnNoYWxsZXIudW5tYXJzaGFsQXN5bmNFeGVjdXRlUmVzcG9uc2UoanNvblJlc3BvbnNlLCB1cmwsIHByb2Nlc3NJZCwgaW5wdXRzLCBvdXRwdXREZXNjcmlwdGlvbnMpO1xuICAgICAgICAgICAgICAgIHJldHVybiBvdXRwdXQ7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGV4ZWN1dGUodXJsOiBzdHJpbmcsIHByb2Nlc3NJZDogc3RyaW5nLCBpbnB1dHM6IFdwc0lucHV0W10sXG4gICAgICAgIG91dHB1dERlc2NyaXB0aW9uczogV3BzT3V0cHV0RGVzY3JpcHRpb25bXSwgdW5tYXJzaGFsRnVuY3Rpb24/OiAoanNvblJlc3BvbnNlOiBhbnkpID0+IFdwc0RhdGFbXSk6IE9ic2VydmFibGU8V3BzUmVzdWx0W10+IHtcblxuICAgICAgICBjb25zdCBleGVjdXRlVXJsID0gdGhpcy53cHNtYXJzaGFsbGVyLmV4ZWN1dGVVcmwodXJsLCBwcm9jZXNzSWQpO1xuICAgICAgICBjb25zdCBleGVjYm9keSA9IHRoaXMud3BzbWFyc2hhbGxlci5tYXJzaGFsRXhlY0JvZHkocHJvY2Vzc0lkLCBpbnB1dHMsIG91dHB1dERlc2NyaXB0aW9ucywgZmFsc2UpO1xuICAgICAgICBjb25zdCB4bWxFeGVjYm9keSA9IHRoaXMueG1sbWFyc2hhbGxlci5tYXJzaGFsU3RyaW5nKGV4ZWNib2R5KTtcblxuICAgICAgICByZXR1cm4gdGhpcy5wb3N0UmF3KGV4ZWN1dGVVcmwsIHhtbEV4ZWNib2R5KS5waXBlKFxuICAgICAgICAgICAgbWFwKCh4bWxSZXNwb25zZTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QganNvblJlc3BvbnNlID0gdGhpcy54bWx1bm1hcnNoYWxsZXIudW5tYXJzaGFsU3RyaW5nKHhtbFJlc3BvbnNlKTtcbiAgICAgICAgICAgICAgICBpZiAodW5tYXJzaGFsRnVuY3Rpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVubWFyc2hhbEZ1bmN0aW9uKGpzb25SZXNwb25zZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IG91dHB1dDogV3BzRGF0YVtdID1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy53cHNtYXJzaGFsbGVyLnVubWFyc2hhbFN5bmNFeGVjdXRlUmVzcG9uc2UoanNvblJlc3BvbnNlLCB1cmwsIHByb2Nlc3NJZCwgaW5wdXRzLCBvdXRwdXREZXNjcmlwdGlvbnMpO1xuICAgICAgICAgICAgICAgIHJldHVybiBvdXRwdXQ7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGRpc21pc3Moc2VydmVyVXJsOiBzdHJpbmcsIHByb2Nlc3NJZDogc3RyaW5nLCBqb2JJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcblxuICAgICAgICBjb25zdCBkaXNtaXNzVXJsID0gdGhpcy53cHNtYXJzaGFsbGVyLmRpc21pc3NVcmwoc2VydmVyVXJsLCBwcm9jZXNzSWQsIGpvYklkKTtcbiAgICAgICAgY29uc3QgZGlzbWlzc0JvZHkgPSB0aGlzLndwc21hcnNoYWxsZXIubWFyc2hhbERpc21pc3NCb2R5KGpvYklkKTtcbiAgICAgICAgY29uc3QgeG1sRGlzbWlzc0JvZHkgPSB0aGlzLnhtbG1hcnNoYWxsZXIubWFyc2hhbFN0cmluZyhkaXNtaXNzQm9keSk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMucG9zdFJhdyhkaXNtaXNzVXJsLCB4bWxEaXNtaXNzQm9keSkucGlwZShcbiAgICAgICAgICAgIG1hcCgoeG1sUmVzcG9uc2U6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGpzb25SZXNwb25zZSA9IHRoaXMueG1sdW5tYXJzaGFsbGVyLnVubWFyc2hhbFN0cmluZyh4bWxSZXNwb25zZSk7XG4gICAgICAgICAgICAgICAgY29uc3Qgb3V0cHV0ID0gdGhpcy53cHNtYXJzaGFsbGVyLnVubWFyc2hhbERpc21pc3NSZXNwb25zZShqc29uUmVzcG9uc2UsIHNlcnZlclVybCwgcHJvY2Vzc0lkKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gb3V0cHV0O1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwb3N0UmF3KHVybDogc3RyaW5nLCB4bWxCb2R5OiBzdHJpbmcpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgICAgICBjb25zdCBwYXJhcyA9IHtcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ3RleHQveG1sJyxcbiAgICAgICAgICAgICAgICAnQWNjZXB0JzogJ3RleHQveG1sLCBhcHBsaWNhdGlvbi94bWwnXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcmVzcG9uc2VUeXBlOiAndGV4dCdcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIHRoaXMud2ViY2xpZW50LnBvc3QodXJsLCB4bWxCb2R5LCBwYXJhcykucGlwZShcbiAgICAgICAgICAgIGRlbGF5ZWRSZXRyeSgyMDAwLCAyKSxcbiAgICAgICAgICAgIHRhcChyID0+IHt0aGlzLnBhcnNlUmVzcG9uc2VGb3JFcnJvcnModXJsLCByKX0pLFxuICAgICAgICAgICAgc2hhcmUoKSAgLy8gdHVybmluZyBob3Q6IHRvIG1ha2Ugc3VyZSB0aGF0IG11bHRpcGxlIHN1YnNjcmliZXJzIGRvbnQgY2F1c2UgbXVsdGlwbGUgcmVxdWVzdHNcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBnZXRSYXcodXJsOiBzdHJpbmcpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgICAgICBjb25zdCBwYXJhcyA9IHtcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgICAnQWNjZXB0JzogJ3RleHQveG1sLCBhcHBsaWNhdGlvbi94bWwnXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcmVzcG9uc2VUeXBlOiAndGV4dCdcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIHRoaXMud2ViY2xpZW50LmdldCh1cmwsIHBhcmFzKS5waXBlKFxuICAgICAgICAgICAgZGVsYXllZFJldHJ5KDIwMDAsIDIpLFxuICAgICAgICAgICAgdGFwKHIgPT4ge3RoaXMucGFyc2VSZXNwb25zZUZvckVycm9ycyh1cmwsIHIpfSksXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBwYXJzZVJlc3BvbnNlRm9yRXJyb3JzKHVybDogc3RyaW5nLCByZXNwb25zZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGlmIChyZXNwb25zZS5tYXRjaCgnPHRpdGxlPjQwNCBOb3QgRm91bmQ8L3RpdGxlPicpIHx8IHJlc3BvbnNlLm1hdGNoKCdvd3M6RXhjZXB0aW9uUmVwb3J0JykpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRnJvbSAke3VybH06ICBgICsgcmVzcG9uc2UpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVXNlIHRoaXMgbWV0aG9kIGlmIHlvdSB3YW50IHRvIHNldCB0aGUgY2FjaGluZyBtZWNoYW5pc20gb24gYSBjbGllbnQtbGV2ZWxcbiAgICAgKiAoYXMgb3Bwb3NlZCB0byBvbiBhIGFwcC13aWRlIGxldmVsKVxuICAgICAqIEBwYXJhbSBjYWNoZSA6IENhY2hlIChAZGxyLWVvYy9zZXJ2aWNlcy1vZ2MpXG4gICAgICovXG4gICAgc2V0Q2FjaGUoY2FjaGU6IENhY2hlKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2FjaGUgPSBjYWNoZTtcbiAgICB9XG59XG4iXX0=

@@ -8,2 +8,3 @@ /*

export * from './lib/wps/utils/polling';
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL3V0aWxzLW9nYy9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMseUJBQXlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIHV0aWxzLW9nY1xuICovXG5leHBvcnQgKiBmcm9tICcuL2xpYi93cHMvd3BzY2xpZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3dwcy93cHNfZGF0YXR5cGVzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3dwcy9jYWNoZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi93cHMvdXRpbHMvcG9sbGluZyc7Il19
export * from './lib/wms/wms.service';
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIvaG9tZS9ydW5uZXIvd29yay91a2lzLWZyb250ZW5kLWxpYnJhcmllcy91a2lzLWZyb250ZW5kLWxpYnJhcmllcy9wcm9qZWN0cy91dGlscy1vZ2Mvc3JjLyIsInNvdXJjZXMiOlsicHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyx1QkFBdUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2YgdXRpbHMtb2djXG4gKi9cbmV4cG9ydCAqIGZyb20gJy4vbGliL3dwcy93cHNjbGllbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvd3BzL3dwc19kYXRhdHlwZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvd3BzL2NhY2hlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3dwcy91dGlscy9wb2xsaW5nJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3dtcy93bXMuc2VydmljZSc7Il19

@@ -1,10 +0,11 @@

import { serializeToString } from 'xmlserializer';
import * as xmlserializer from 'xmlserializer';
import { forkJoin, timer, of } from 'rxjs';
import { tap, map, mergeMap, retryWhen, delay, switchMap, share } from 'rxjs/operators';
import { XLink_1_0 as XLink_1_0$1 } from 'w3c-schemas/lib/XLink_1_0';
import { OWS_1_1_0 as OWS_1_1_0$1 } from 'ogc-schemas/lib/OWS_1_1_0';
import { OWS_2_0 as OWS_2_0$1 } from 'ogc-schemas/lib/OWS_2_0';
import { WPS_1_0_0 as WPS_1_0_0$1 } from 'ogc-schemas/lib/WPS_1_0_0';
import { WPS_2_0 as WPS_2_0$1 } from 'ogc-schemas/lib/WPS_2_0';
import { Jsonix as Jsonix$1 } from '@michaellangbein/jsonix';
import * as XLink_1_0_Factory from 'w3c-schemas/lib/XLink_1_0';
import * as OWS_1_1_0_Factory from 'ogc-schemas/lib/OWS_1_1_0';
import * as OWS_2_0_Factory from 'ogc-schemas/lib/OWS_2_0';
import * as WPS_1_0_0_Factory from 'ogc-schemas/lib/WPS_1_0_0';
import * as WPS_2_0_Factory from 'ogc-schemas/lib/WPS_2_0';
import * as JsonixFactory from '@michaellangbein/jsonix';
import { WMSCapabilities } from 'ol/format';

@@ -140,3 +141,3 @@ class WpsMarshaller100 {

case 'application/xml':
return serializeToString(data.complexData.content[0]); // @TODO: better: handle actual xml-data
return xmlserializer.serializeToString(data.complexData.content[0]); // @TODO: better: handle actual xml-data
default:

@@ -597,3 +598,3 @@ throw new Error(`Cannot unmarshal data of format ${data.complexData.mimeType}`);

case 'application/xml':
return serializeToString(data.content[0]); // @TODO: better: handle actual xml-data
return xmlserializer.serializeToString(data.content[0]); // @TODO: better: handle actual xml-data
default:

@@ -800,8 +801,8 @@ throw new Error(`Cannot unmarshal complex data of format ${data.mimeType}`);

const XLink_1_0 = XLink_1_0$1;
const OWS_1_1_0 = OWS_1_1_0$1;
const OWS_2_0 = OWS_2_0$1;
const WPS_1_0_0 = WPS_1_0_0$1;
const WPS_2_0 = WPS_2_0$1;
const Jsonix = Jsonix$1;
const XLink_1_0 = XLink_1_0_Factory.XLink_1_0;
const OWS_1_1_0 = OWS_1_1_0_Factory.OWS_1_1_0;
const OWS_2_0 = OWS_2_0_Factory.OWS_2_0;
const WPS_1_0_0 = WPS_1_0_0_Factory.WPS_1_0_0;
const WPS_2_0 = WPS_2_0_Factory.WPS_2_0;
const Jsonix = JsonixFactory.Jsonix;
/**

@@ -1031,2 +1032,65 @@ * The Wps-client abstracts away the differences between Wps1.0.0 and Wps2.0.0

class WmsClient {
constructor(http) {
this.http = http;
this.parser = new WMSCapabilities();
}
getCapabilities(url, version = '1.1.0') {
const getCapabilitiesUrl = `${url}?SERVICE=WMS&REQUEST=GetCapabilities&VERSION=${version}`;
return this.http.get(getCapabilitiesUrl, { headers: {
'Content-Type': 'text/xml',
'Accept': 'text/xml, application/xml'
}, responseType: 'text' }).pipe(map(response => {
return this.parser.read(response);
}));
}
/**
* Searches capabilities-document for a layer with given name
* @param name
* @param capabilities
*/
getLayerFromCapabilities(name, capabilities) {
/** http://schemas.opengis.net/wms/1.3.0/capabilities_1_3_0.xsd - The Layer Element */
const rootLayer = capabilities.Capability.Layer;
return this.getLayerFromCapabilitiesLayer(name, rootLayer);
}
/**
* @param name
* @param layer http://schemas.opengis.net/wms/1.3.0/capabilities_1_3_0.xsd - The Layer Element
* @returns any
*/
getLayerFromCapabilitiesLayer(name, layer) {
const rootLayer = layer;
if (rootLayer) {
if (rootLayer.Name && rootLayer.Name === name) {
return rootLayer;
}
else {
if (rootLayer.Layer && Array.isArray(rootLayer.Layer)) {
// find layer from array... recursive
return rootLayer.Layer.find(item => {
return this.getLayerFromCapabilitiesLayer(name, item);
});
}
else if (rootLayer.Layer && rootLayer.Layer.Name && rootLayer.Layer.Name === name) {
return rootLayer.Layer;
}
}
}
else {
return null;
}
}
/**
*
* @param layer
* @param wmsVersion
* @returns
*/
getTimeDimensionFromLayer(layer) {
var _a;
return (_a = layer.Dimension) === null || _a === void 0 ? void 0 : _a.find(d => d.name === 'time');
}
}
/*

@@ -1040,3 +1104,3 @@ * Public API Surface of utils-ogc

export { FakeCache, WpsClient, delayedRetry, isBbox, isWpsState, pollUntil };
export { FakeCache, WmsClient, WpsClient, delayedRetry, isBbox, isWpsState, pollUntil };
//# sourceMappingURL=dlr-eoc-utils-ogc.js.map
import { WpsInput, WpsVersion, WpsResult, WpsOutputDescription, WpsData, WpsState, WpsCapability, WpsProcessDescription } from './wps_datatypes';
import { Observable } from 'rxjs';
import { Cache } from './cache';
export interface WpsHttpClientRequestParameters {
headers?: object;
[key: string]: any;
}
import { HttpClient } from '../httpClient/httpclient';
/**
* This library attempts to be largely independent of angular.
* As such, we allow other http-clients than @angular/http.
*/
export interface WpsHttpClient {
get(url: string, paras?: WpsHttpClientRequestParameters): Observable<string>;
post(url: string, body: string, paras?: WpsHttpClientRequestParameters): Observable<string>;
}
/**
* The Wps-client abstracts away the differences between Wps1.0.0 and Wps2.0.0

@@ -31,3 +20,3 @@ * There are two layers of marshalling:

private cache;
constructor(version: WpsVersion, webclient: WpsHttpClient, cache?: Cache);
constructor(version: WpsVersion, webclient: HttpClient, cache?: Cache);
getCapabilities(url: string): Observable<WpsCapability[]>;

@@ -34,0 +23,0 @@ describeProcess(url: string, processId: string): Observable<WpsProcessDescription>;

@@ -1,1 +0,1 @@

{"name":"@dlr-eoc/utils-ogc","main":"bundles/dlr-eoc-utils-ogc.umd.js","version":"7.3.0-next.2","license":"Apache-2.0","peerDependencies":{},"dependencies":{"w3c-schemas":"^1.4.0","ogc-schemas":"^2.6.1","@michaellangbein/jsonix":"3.0.1-SNAPSHOT-3","xmlserializer":"^0.6.1","tslib":"^2.0.0"},"module":"fesm2015/dlr-eoc-utils-ogc.js","es2015":"fesm2015/dlr-eoc-utils-ogc.js","esm2015":"esm2015/dlr-eoc-utils-ogc.js","fesm2015":"fesm2015/dlr-eoc-utils-ogc.js","typings":"dlr-eoc-utils-ogc.d.ts","metadata":"dlr-eoc-utils-ogc.metadata.json","sideEffects":false,"repository":{"url":"git+https://github.com/dlr-eoc/ukis-frontend-libraries.git","type":"git"}}
{"name":"@dlr-eoc/utils-ogc","main":"bundles/dlr-eoc-utils-ogc.umd.js","version":"7.3.0-next.3","license":"Apache-2.0","peerDependencies":{},"dependencies":{"w3c-schemas":"^1.4.0","ogc-schemas":"^2.6.1","@michaellangbein/jsonix":"3.0.1-SNAPSHOT-3","xmlserializer":"^0.6.1","tslib":"^2.0.0"},"module":"fesm2015/dlr-eoc-utils-ogc.js","es2015":"fesm2015/dlr-eoc-utils-ogc.js","esm2015":"esm2015/dlr-eoc-utils-ogc.js","fesm2015":"fesm2015/dlr-eoc-utils-ogc.js","typings":"dlr-eoc-utils-ogc.d.ts","metadata":"dlr-eoc-utils-ogc.metadata.json","sideEffects":false,"repository":{"url":"git+https://github.com/dlr-eoc/ukis-frontend-libraries.git","type":"git"}}

@@ -5,1 +5,2 @@ export * from './lib/wps/wpsclient';

export * from './lib/wps/utils/polling';
export * from './lib/wms/wms.service';

@@ -18,1 +18,6 @@ # @dlr-eoc/utils-ogc

Parts of this library depend on [jsonix](https://github.com/highsource/jsonix). The current version of jsonix ([3.0.0](https://github.com/highsource/jsonix/releases/tag/3.0.0)) does not build to ES2015. To still be able to use this library, we created a [fork with some minor modifications](https://github.com/MichaelLangbein/jsonix). As soon as the main repository of jsonix has fixed its build problems (we're working on a pull-request) we can move from our fork back to the main repo.
## WMS
A simple client to parse WMS-GetCapabilities documents into json.
That json-information might be used to create an ol- or ukis-layer, but that step is to be done by another library.

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 not supported yet

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